diff --git a/components/engine/api/server/router/network/network_routes.go b/components/engine/api/server/router/network/network_routes.go index 876a420baf..05faffddb1 100644 --- a/components/engine/api/server/router/network/network_routes.go +++ b/components/engine/api/server/router/network/network_routes.go @@ -283,13 +283,6 @@ func (n *networkRouter) buildNetworkResource(nw libnetwork.Network) *types.Netwo r.ID = nw.ID() r.Created = info.Created() r.Scope = info.Scope() - if n.cluster.IsManager() { - if _, err := n.cluster.GetNetwork(nw.ID()); err == nil { - r.Scope = "swarm" - } - } else if info.Dynamic() { - r.Scope = "swarm" - } r.Driver = nw.Type() r.EnableIPv6 = info.IPv6Enabled() r.Internal = info.Internal() @@ -299,6 +292,11 @@ func (n *networkRouter) buildNetworkResource(nw libnetwork.Network) *types.Netwo r.Containers = make(map[string]types.EndpointResource) buildIpamResources(r, info) r.Labels = info.Labels() + r.ConfigOnly = info.ConfigOnly() + + if cn := info.ConfigFrom(); cn != "" { + r.ConfigFrom = network.ConfigReference{Network: cn} + } peers := info.Peers() if len(peers) != 0 { diff --git a/components/engine/api/types/network/network.go b/components/engine/api/types/network/network.go index 8d15ed21b5..c021ce15a1 100644 --- a/components/engine/api/types/network/network.go +++ b/components/engine/api/types/network/network.go @@ -100,3 +100,8 @@ func (es *EndpointSettings) Copy() *EndpointSettings { type NetworkingConfig struct { EndpointsConfig map[string]*EndpointSettings // Endpoint configs for each connecting network } + +// ConfigReference specifies the source which provides a network's configuration +type ConfigReference struct { + Network string +} diff --git a/components/engine/api/types/swarm/network.go b/components/engine/api/types/swarm/network.go index 693f85cce1..2bac19b7a1 100644 --- a/components/engine/api/types/swarm/network.go +++ b/components/engine/api/types/swarm/network.go @@ -1,5 +1,9 @@ package swarm +import ( + "github.com/docker/docker/api/types/network" +) + // Endpoint represents an endpoint. type Endpoint struct { Spec EndpointSpec `json:",omitempty"` @@ -78,12 +82,14 @@ type Network struct { // NetworkSpec represents the spec of a network. type NetworkSpec struct { Annotations - DriverConfiguration *Driver `json:",omitempty"` - IPv6Enabled bool `json:",omitempty"` - Internal bool `json:",omitempty"` - Attachable bool `json:",omitempty"` - Ingress bool `json:",omitempty"` - IPAMOptions *IPAMOptions `json:",omitempty"` + DriverConfiguration *Driver `json:",omitempty"` + IPv6Enabled bool `json:",omitempty"` + Internal bool `json:",omitempty"` + Attachable bool `json:",omitempty"` + Ingress bool `json:",omitempty"` + IPAMOptions *IPAMOptions `json:",omitempty"` + ConfigFrom *network.ConfigReference `json:",omitempty"` + Scope string `json:",omitempty"` } // NetworkAttachmentConfig represents the configuration of a network attachment. diff --git a/components/engine/api/types/types.go b/components/engine/api/types/types.go index efba16bc97..fa9f1b0de1 100644 --- a/components/engine/api/types/types.go +++ b/components/engine/api/types/types.go @@ -396,13 +396,15 @@ type NetworkResource struct { Name string // Name is the requested name of the network ID string `json:"Id"` // ID uniquely identifies a network on a single machine Created time.Time // Created is the time the network created - Scope string // Scope describes the level at which the network exists (e.g. `global` for cluster-wide or `local` for machine level) + Scope string // Scope describes the level at which the network exists (e.g. `swarm` for cluster-wide or `local` for machine level) Driver string // Driver is the Driver name used to create the network (e.g. `bridge`, `overlay`) EnableIPv6 bool // EnableIPv6 represents whether to enable IPv6 IPAM network.IPAM // IPAM is the network's IP Address Management Internal bool // Internal represents if the network is used internal only Attachable bool // Attachable represents if the global scope is manually attachable by regular containers from workers in swarm mode. Ingress bool // Ingress indicates the network is providing the routing-mesh for the swarm cluster. + ConfigFrom network.ConfigReference // ConfigFrom specifies the source which will provide the configuration for this network. + ConfigOnly bool // ConfigOnly networks are place-holder networks for network configurations to be used by other networks. ConfigOnly networks cannot be used directly to run containers or services. Containers map[string]EndpointResource // Containers contains endpoints belonging to the network Options map[string]string // Options holds the network specific options to use for when creating the network Labels map[string]string // Labels holds metadata specific to the network being created @@ -430,11 +432,14 @@ type NetworkCreate struct { // which has the same name but it is not guaranteed to catch all name collisions. CheckDuplicate bool Driver string + Scope string EnableIPv6 bool IPAM *network.IPAM Internal bool Attachable bool Ingress bool + ConfigOnly bool + ConfigFrom *network.ConfigReference Options map[string]string Labels map[string]string } diff --git a/components/engine/daemon/cluster/convert/network.go b/components/engine/daemon/cluster/convert/network.go index 6e28b172f3..0ce450b749 100644 --- a/components/engine/daemon/cluster/convert/network.go +++ b/components/engine/daemon/cluster/convert/network.go @@ -6,6 +6,7 @@ import ( basictypes "github.com/docker/docker/api/types" networktypes "github.com/docker/docker/api/types/network" types "github.com/docker/docker/api/types/swarm" + netconst "github.com/docker/libnetwork/datastore" swarmapi "github.com/docker/swarmkit/api" gogotypes "github.com/gogo/protobuf/types" ) @@ -30,10 +31,17 @@ func networkFromGRPC(n *swarmapi.Network) types.Network { Attachable: n.Spec.Attachable, Ingress: n.Spec.Ingress, IPAMOptions: ipamFromGRPC(n.Spec.IPAM), + Scope: netconst.SwarmScope, }, IPAMOptions: ipamFromGRPC(n.IPAM), } + if n.Spec.ConfigFrom != "" { + network.Spec.ConfigFrom = &networktypes.ConfigReference{ + Network: n.Spec.ConfigFrom, + } + } + // Meta network.Version.Index = n.Meta.Version.Index network.CreatedAt, _ = gogotypes.TimestampFromProto(n.Meta.CreatedAt) @@ -152,7 +160,7 @@ func BasicNetworkFromGRPC(n swarmapi.Network) basictypes.NetworkResource { nr := basictypes.NetworkResource{ ID: n.ID, Name: n.Spec.Annotations.Name, - Scope: "swarm", + Scope: netconst.SwarmScope, EnableIPv6: spec.Ipv6Enabled, IPAM: ipam, Internal: spec.Internal, @@ -161,6 +169,12 @@ func BasicNetworkFromGRPC(n swarmapi.Network) basictypes.NetworkResource { Labels: n.Spec.Annotations.Labels, } + if n.Spec.ConfigFrom != "" { + nr.ConfigFrom = networktypes.ConfigReference{ + Network: n.Spec.ConfigFrom, + } + } + if n.DriverState != nil { nr.Driver = n.DriverState.Name nr.Options = n.DriverState.Options @@ -206,5 +220,8 @@ func BasicNetworkCreateToGRPC(create basictypes.NetworkCreateRequest) swarmapi.N } ns.IPAM.Configs = ipamSpec } + if create.ConfigFrom != nil { + ns.ConfigFrom = create.ConfigFrom.Network + } return ns } diff --git a/components/engine/daemon/cluster/executor/container/adapter.go b/components/engine/daemon/cluster/executor/container/adapter.go index fd2ef354a6..67d42c706e 100644 --- a/components/engine/daemon/cluster/executor/container/adapter.go +++ b/components/engine/daemon/cluster/executor/container/adapter.go @@ -176,7 +176,7 @@ func (c *containerAdapter) removeNetworks(ctx context.Context) error { } func (c *containerAdapter) networkAttach(ctx context.Context) error { - config := c.container.createNetworkingConfig() + config := c.container.createNetworkingConfig(c.backend) var ( networkName string @@ -195,7 +195,7 @@ func (c *containerAdapter) networkAttach(ctx context.Context) error { } func (c *containerAdapter) waitForDetach(ctx context.Context) error { - config := c.container.createNetworkingConfig() + config := c.container.createNetworkingConfig(c.backend) var ( networkName string @@ -216,20 +216,19 @@ func (c *containerAdapter) waitForDetach(ctx context.Context) error { func (c *containerAdapter) create(ctx context.Context) error { var cr containertypes.ContainerCreateCreatedBody var err error - if cr, err = c.backend.CreateManagedContainer(types.ContainerCreateConfig{ Name: c.container.name(), Config: c.container.config(), HostConfig: c.container.hostConfig(), // Use the first network in container create - NetworkingConfig: c.container.createNetworkingConfig(), + NetworkingConfig: c.container.createNetworkingConfig(c.backend), }); err != nil { return err } // Docker daemon currently doesn't support multiple networks in container create // Connect to all other networks - nc := c.container.connectNetworkingConfig() + nc := c.container.connectNetworkingConfig(c.backend) if nc != nil { for n, ep := range nc.EndpointsConfig { diff --git a/components/engine/daemon/cluster/executor/container/container.go b/components/engine/daemon/cluster/executor/container/container.go index dcac7281b2..ca3ed06596 100644 --- a/components/engine/daemon/cluster/executor/container/container.go +++ b/components/engine/daemon/cluster/executor/container/container.go @@ -18,8 +18,10 @@ import ( enginemount "github.com/docker/docker/api/types/mount" "github.com/docker/docker/api/types/network" volumetypes "github.com/docker/docker/api/types/volume" + executorpkg "github.com/docker/docker/daemon/cluster/executor" clustertypes "github.com/docker/docker/daemon/cluster/provider" "github.com/docker/go-connections/nat" + netconst "github.com/docker/libnetwork/datastore" "github.com/docker/swarmkit/agent/exec" "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/template" @@ -374,6 +376,14 @@ func (c *containerConfig) hostConfig() *enginecontainer.HostConfig { } } + if len(c.task.Networks) > 0 { + labels := c.task.Networks[0].Network.Spec.Annotations.Labels + name := c.task.Networks[0].Network.Spec.Annotations.Name + if v, ok := labels["com.docker.swarm.predefined"]; ok && v == "true" { + hc.NetworkMode = enginecontainer.NetworkMode(name) + } + } + return hc } @@ -428,7 +438,7 @@ func (c *containerConfig) resources() enginecontainer.Resources { } // Docker daemon supports just 1 network during container create. -func (c *containerConfig) createNetworkingConfig() *network.NetworkingConfig { +func (c *containerConfig) createNetworkingConfig(b executorpkg.Backend) *network.NetworkingConfig { var networks []*api.NetworkAttachment if c.task.Spec.GetContainer() != nil || c.task.Spec.GetAttachment() != nil { networks = c.task.Networks @@ -436,19 +446,18 @@ func (c *containerConfig) createNetworkingConfig() *network.NetworkingConfig { epConfig := make(map[string]*network.EndpointSettings) if len(networks) > 0 { - epConfig[networks[0].Network.Spec.Annotations.Name] = getEndpointConfig(networks[0]) + epConfig[networks[0].Network.Spec.Annotations.Name] = getEndpointConfig(networks[0], b) } return &network.NetworkingConfig{EndpointsConfig: epConfig} } // TODO: Merge this function with createNetworkingConfig after daemon supports multiple networks in container create -func (c *containerConfig) connectNetworkingConfig() *network.NetworkingConfig { +func (c *containerConfig) connectNetworkingConfig(b executorpkg.Backend) *network.NetworkingConfig { var networks []*api.NetworkAttachment if c.task.Spec.GetContainer() != nil { networks = c.task.Networks } - // First network is used during container create. Other networks are used in "docker network connect" if len(networks) < 2 { return nil @@ -456,12 +465,12 @@ func (c *containerConfig) connectNetworkingConfig() *network.NetworkingConfig { epConfig := make(map[string]*network.EndpointSettings) for _, na := range networks[1:] { - epConfig[na.Network.Spec.Annotations.Name] = getEndpointConfig(na) + epConfig[na.Network.Spec.Annotations.Name] = getEndpointConfig(na, b) } return &network.NetworkingConfig{EndpointsConfig: epConfig} } -func getEndpointConfig(na *api.NetworkAttachment) *network.EndpointSettings { +func getEndpointConfig(na *api.NetworkAttachment, b executorpkg.Backend) *network.EndpointSettings { var ipv4, ipv6 string for _, addr := range na.Addresses { ip, _, err := net.ParseCIDR(addr) @@ -479,13 +488,19 @@ func getEndpointConfig(na *api.NetworkAttachment) *network.EndpointSettings { } } - return &network.EndpointSettings{ + n := &network.EndpointSettings{ NetworkID: na.Network.ID, IPAMConfig: &network.EndpointIPAMConfig{ IPv4Address: ipv4, IPv6Address: ipv6, }, } + if v, ok := na.Network.Spec.Annotations.Labels["com.docker.swarm.predefined"]; ok && v == "true" { + if ln, err := b.FindNetwork(na.Network.Spec.Annotations.Name); err == nil { + n.NetworkID = ln.ID() + } + } + return n } func (c *containerConfig) virtualIP(networkID string) string { @@ -570,27 +585,38 @@ func (c *containerConfig) networkCreateRequest(name string) (clustertypes.Networ options := types.NetworkCreate{ // ID: na.Network.ID, - Driver: na.Network.DriverState.Name, - IPAM: &network.IPAM{ - Driver: na.Network.IPAM.Driver.Name, - Options: na.Network.IPAM.Driver.Options, - }, - Options: na.Network.DriverState.Options, Labels: na.Network.Spec.Annotations.Labels, Internal: na.Network.Spec.Internal, Attachable: na.Network.Spec.Attachable, Ingress: na.Network.Spec.Ingress, EnableIPv6: na.Network.Spec.Ipv6Enabled, CheckDuplicate: true, + Scope: netconst.SwarmScope, } - for _, ic := range na.Network.IPAM.Configs { - c := network.IPAMConfig{ - Subnet: ic.Subnet, - IPRange: ic.Range, - Gateway: ic.Gateway, + if na.Network.Spec.ConfigFrom != "" { + options.ConfigFrom = &network.ConfigReference{ + Network: na.Network.Spec.ConfigFrom, + } + } + + if na.Network.DriverState != nil { + options.Driver = na.Network.DriverState.Name + options.Options = na.Network.DriverState.Options + } + if na.Network.IPAM != nil { + options.IPAM = &network.IPAM{ + Driver: na.Network.IPAM.Driver.Name, + Options: na.Network.IPAM.Driver.Options, + } + for _, ic := range na.Network.IPAM.Configs { + c := network.IPAMConfig{ + Subnet: ic.Subnet, + IPRange: ic.Range, + Gateway: ic.Gateway, + } + options.IPAM.Config = append(options.IPAM.Config, c) } - options.IPAM.Config = append(options.IPAM.Config, c) } return clustertypes.NetworkCreateRequest{ diff --git a/components/engine/daemon/cluster/networks.go b/components/engine/daemon/cluster/networks.go index f478e650cf..1906c37bd2 100644 --- a/components/engine/daemon/cluster/networks.go +++ b/components/engine/daemon/cluster/networks.go @@ -17,7 +17,28 @@ import ( // GetNetworks returns all current cluster managed networks. func (c *Cluster) GetNetworks() ([]apitypes.NetworkResource, error) { - return c.getNetworks(nil) + list, err := c.getNetworks(nil) + if err != nil { + return nil, err + } + removePredefinedNetworks(&list) + return list, nil +} + +func removePredefinedNetworks(networks *[]apitypes.NetworkResource) { + if networks == nil { + return + } + var idxs []int + for i, n := range *networks { + if v, ok := n.Labels["com.docker.swarm.predefined"]; ok && v == "true" { + idxs = append(idxs, i) + } + } + for i, idx := range idxs { + idx -= i + *networks = append((*networks)[:idx], (*networks)[idx+1:]...) + } } func (c *Cluster) getNetworks(filters *swarmapi.ListNetworksRequest_Filters) ([]apitypes.NetworkResource, error) { @@ -269,16 +290,27 @@ func (c *Cluster) populateNetworkID(ctx context.Context, client swarmapi.Control if len(networks) == 0 { networks = s.Networks } - for i, n := range networks { apiNetwork, err := getNetwork(ctx, client, n.Target) if err != nil { - if ln, _ := c.config.Backend.FindNetwork(n.Target); ln != nil && !ln.Info().Dynamic() { + ln, _ := c.config.Backend.FindNetwork(n.Target) + if ln != nil && runconfig.IsPreDefinedNetwork(ln.Name()) { + // Need to retrieve the corresponding predefined swarm network + // and use its id for the request. + apiNetwork, err = getNetwork(ctx, client, ln.Name()) + if err != nil { + err = fmt.Errorf("could not find the corresponding predefined swarm network: %v", err) + return apierrors.NewRequestNotFoundError(err) + } + goto setid + } + if ln != nil && !ln.Info().Dynamic() { err = fmt.Errorf("The network %s cannot be used with services. Only networks scoped to the swarm can be used, such as those created with the overlay driver.", ln.Name()) return apierrors.NewRequestForbiddenError(err) } return err } + setid: networks[i].Target = apiNetwork.ID } return nil diff --git a/components/engine/daemon/network.go b/components/engine/daemon/network.go index 781953686a..366c2a59e4 100644 --- a/components/engine/daemon/network.go +++ b/components/engine/daemon/network.go @@ -318,6 +318,11 @@ func (daemon *Daemon) createNetwork(create types.NetworkCreateRequest, id string libnetwork.NetworkOptionLabels(create.Labels), libnetwork.NetworkOptionAttachable(create.Attachable), libnetwork.NetworkOptionIngress(create.Ingress), + libnetwork.NetworkOptionScope(create.Scope), + } + + if create.ConfigOnly { + nwOptions = append(nwOptions, libnetwork.NetworkOptionConfigOnly()) } if create.IPAM != nil { @@ -337,6 +342,10 @@ func (daemon *Daemon) createNetwork(create types.NetworkCreateRequest, id string nwOptions = append(nwOptions, libnetwork.NetworkOptionPersist(false)) } + if create.ConfigFrom != nil { + nwOptions = append(nwOptions, libnetwork.NetworkOptionConfigFrom(create.ConfigFrom.Network)) + } + n, err := c.NewNetwork(driver, create.Name, id, nwOptions...) if err != nil { if _, ok := err.(libnetwork.ErrDataStoreNotInitialized); ok { @@ -498,13 +507,29 @@ func (daemon *Daemon) deleteNetwork(networkID string, dynamic bool) error { return apierrors.NewRequestForbiddenError(err) } + if dynamic && !nw.Info().Dynamic() { + if runconfig.IsPreDefinedNetwork(nw.Name()) { + // Predefined networks now support swarm services. Make this + // a no-op when cluster requests to remove the predefined network. + return nil + } + err := fmt.Errorf("%s is not a dynamic network", nw.Name()) + return apierrors.NewRequestForbiddenError(err) + } + if err := nw.Delete(); err != nil { return err } - daemon.pluginRefCount(nw.Type(), driverapi.NetworkPluginEndpointType, plugingetter.Release) - ipamType, _, _, _ := nw.Info().IpamConfig() - daemon.pluginRefCount(ipamType, ipamapi.PluginEndpointType, plugingetter.Release) - daemon.LogNetworkEvent(nw, "destroy") + + // If this is not a configuration only network, we need to + // update the corresponding remote drivers' reference counts + if !nw.Info().ConfigOnly() { + daemon.pluginRefCount(nw.Type(), driverapi.NetworkPluginEndpointType, plugingetter.Release) + ipamType, _, _, _ := nw.Info().IpamConfig() + daemon.pluginRefCount(ipamType, ipamapi.PluginEndpointType, plugingetter.Release) + daemon.LogNetworkEvent(nw, "destroy") + } + return nil } diff --git a/components/engine/daemon/prune.go b/components/engine/daemon/prune.go index f757aba71e..c614de2fe1 100644 --- a/components/engine/daemon/prune.go +++ b/components/engine/daemon/prune.go @@ -315,6 +315,9 @@ func (daemon *Daemon) localNetworksPrune(ctx context.Context, pruneFilters filte return true default: } + if nw.Info().ConfigOnly() { + return false + } if !until.IsZero() && nw.Info().Created().After(until) { return false } diff --git a/components/engine/docs/reference/commandline/network_create.md b/components/engine/docs/reference/commandline/network_create.md index 4b95c5e50b..099cc1439a 100644 --- a/components/engine/docs/reference/commandline/network_create.md +++ b/components/engine/docs/reference/commandline/network_create.md @@ -37,6 +37,9 @@ Options: -o, --opt value Set driver specific options (default map[]) --subnet value Subnet in CIDR format that represents a network segment (default []) + --scope value Promote a network to swarm scope (value = [ local | swarm ]) + --config-only Creates a configuration only network + --config-from The name of the network from which copying the configuration ``` ## Description diff --git a/components/engine/man/src/network/create.md b/components/engine/man/src/network/create.md index efbf0d5d46..6915cdd354 100644 --- a/components/engine/man/src/network/create.md +++ b/components/engine/man/src/network/create.md @@ -134,3 +134,44 @@ $ docker network create -d overlay \ --opt encrypted=true \ my-ingress-network ``` + +### Run services on predefined networks + +You can create services on the predefined docker networks `bridge` and `host`. + +```bash +$ docker service create --name my-service \ + --network host \ + --replicas 2 \ + busybox top +``` + +### Swarm networks with local scope drivers + +You can create a swarm network with local scope network drivers. You do so +by promoting the network scope to `swarm` during the creation of the network. +You will then be able to use this network when creating services. + +```bash +$ docker network create -d bridge \ + --scope swarm \ + --attachable \ + swarm-network +``` + +For network drivers which provide connectivity across hosts (ex. macvlan), if +node specific configurations are needed in order to plumb the network on each +host, you will supply that configuration via a configuration only network. +When you create the swarm scoped network, you will then specify the name of the +network which contains the configuration. + + +```bash +node1$ docker network create --config-only --subnet 192.168.100.0/24 --gateway 192.168.100.115 mv-config +node2$ docker network create --config-only --subnet 192.168.200.0/24 --gateway 192.168.200.202 mv-config +node1$ docker network create -d macvlan --scope swarm --config-from mv-config --attachable swarm-network +``` + + + + diff --git a/components/engine/vendor.conf b/components/engine/vendor.conf index a33afddce4..e48ef64d91 100644 --- a/components/engine/vendor.conf +++ b/components/engine/vendor.conf @@ -26,7 +26,7 @@ github.com/imdario/mergo 0.2.1 golang.org/x/sync de49d9dcd27d4f764488181bea099dfe6179bcf0 #get libnetwork packages -github.com/docker/libnetwork 6786135bf7de08ec26a72a6f7e4291d27d113a3f +github.com/docker/libnetwork b2bc1a68486ccf8ada503162d9f0df7d31bdd8fb github.com/docker/go-events 18b43f1bc85d9cdd42c05a6cd2d444c7a200a894 github.com/armon/go-radix e39d623f12e8e41c7b5529e9a9dd67a1e2261f80 github.com/armon/go-metrics eb0af217e5e9747e41dd5303755356b62d28e3ec @@ -107,8 +107,8 @@ github.com/containerd/containerd 3addd840653146c90a254301d6c3a663c7fd6429 github.com/tonistiigi/fifo 1405643975692217d6720f8b54aeee1bf2cd5cf4 # cluster -github.com/docker/swarmkit ae29cf24355ef2106b63884d2f9b0a6406e5a144 -github.com/gogo/protobuf 8d70fb3182befc465c4a1eac8ad4d38ff49778e2 +github.com/docker/swarmkit 998a47fb9c2b727c8a48d372309af0b3032051e2 +github.com/gogo/protobuf v0.4 github.com/cloudflare/cfssl 7fb22c8cba7ecaf98e4082d22d65800cf45e042a github.com/google/certificate-transparency d90e65c3a07988180c5b1ece71791c0b6506826e golang.org/x/crypto 3fbbcd23f1cb824e69491a5930cfeff09b12f4d2 diff --git a/components/engine/vendor/github.com/docker/libnetwork/agent.go b/components/engine/vendor/github.com/docker/libnetwork/agent.go index b4b7bdf693..d67d446fe8 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/agent.go +++ b/components/engine/vendor/github.com/docker/libnetwork/agent.go @@ -222,7 +222,7 @@ func (c *controller) agentSetup(clusterProvider cluster.Provider) error { return err } c.drvRegistry.WalkDrivers(func(name string, driver driverapi.Driver, capability driverapi.Capability) bool { - if capability.DataScope == datastore.GlobalScope { + if capability.ConnectivityScope == datastore.GlobalScope { c.agentDriverNotify(driver) } return false @@ -507,7 +507,7 @@ func (n *network) Services() map[string]ServiceInfo { } func (n *network) isClusterEligible() bool { - if n.driverScope() != datastore.GlobalScope { + if n.scope != datastore.SwarmScope || !n.driverIsMultihost() { return false } return n.getController().getAgent() != nil diff --git a/components/engine/vendor/github.com/docker/libnetwork/controller.go b/components/engine/vendor/github.com/docker/libnetwork/controller.go index 8b2a983d51..eb0d9e4b20 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/controller.go +++ b/components/engine/vendor/github.com/docker/libnetwork/controller.go @@ -621,7 +621,7 @@ func (c *controller) pushNodeDiscovery(d driverapi.Driver, cap driverapi.Capabil } } - if d == nil || cap.DataScope != datastore.GlobalScope || nodes == nil { + if d == nil || cap.ConnectivityScope != datastore.GlobalScope || nodes == nil { return } @@ -722,22 +722,46 @@ func (c *controller) NewNetwork(networkType, name string, id string, options ... } network.processOptions(options...) + if err := network.validateConfiguration(); err != nil { + return nil, err + } - _, cap, err := network.resolveDriver(networkType, true) + var ( + cap *driverapi.Capability + err error + ) + + // Reset network types, force local scope and skip allocation and + // plumbing for configuration networks. Reset of the config-only + // network drivers is needed so that this special network is not + // usable by old engine versions. + if network.configOnly { + network.scope = datastore.LocalScope + network.networkType = "null" + network.ipamType = "" + goto addToStore + } + + _, cap, err = network.resolveDriver(network.networkType, true) if err != nil { return nil, err } + if network.scope == datastore.LocalScope && cap.DataScope == datastore.GlobalScope { + return nil, types.ForbiddenErrorf("cannot downgrade network scope for %s networks", networkType) + + } if network.ingress && cap.DataScope != datastore.GlobalScope { return nil, types.ForbiddenErrorf("Ingress network can only be global scope network") } - if cap.DataScope == datastore.GlobalScope && !c.isDistributedControl() && !network.dynamic { + // At this point the network scope is still unknown if not set by user + if (cap.DataScope == datastore.GlobalScope || network.scope == datastore.SwarmScope) && + !c.isDistributedControl() && !network.dynamic { if c.isManager() { // For non-distributed controlled environment, globalscoped non-dynamic networks are redirected to Manager return nil, ManagerRedirectError(name) } - return nil, types.ForbiddenErrorf("Cannot create a multi-host network from a worker node. Please create the network from a manager node.") } @@ -747,6 +771,26 @@ func (c *controller) NewNetwork(networkType, name string, id string, options ... return nil, err } + // From this point on, we need the network specific configuration, + // which may come from a configuration-only network + if network.configFrom != "" { + t, err := c.getConfigNetwork(network.configFrom) + if err != nil { + return nil, types.NotFoundErrorf("configuration network %q does not exist", network.configFrom) + } + if err := t.applyConfigurationTo(network); err != nil { + return nil, types.InternalErrorf("Failed to apply configuration: %v", err) + } + defer func() { + if err == nil { + if err := t.getEpCnt().IncEndpointCnt(); err != nil { + logrus.Warnf("Failed to update reference count for configuration network %q on creation of network %q: %v", + t.Name(), network.Name(), err) + } + } + }() + } + err = network.ipamAllocate() if err != nil { return nil, err @@ -769,6 +813,7 @@ func (c *controller) NewNetwork(networkType, name string, id string, options ... } }() +addToStore: // First store the endpoint count, then the network. To avoid to // end up with a datastore containing a network and not an epCnt, // in case of an ungraceful shutdown during this function call. @@ -788,6 +833,9 @@ func (c *controller) NewNetwork(networkType, name string, id string, options ... if err = c.updateToStore(network); err != nil { return nil, err } + if network.configOnly { + return network, nil + } joinCluster(network) if !c.isDistributedControl() { @@ -796,11 +844,18 @@ func (c *controller) NewNetwork(networkType, name string, id string, options ... c.Unlock() } + c.Lock() + arrangeUserFilterRule() + c.Unlock() + return network, nil } var joinCluster NetworkWalker = func(nw Network) bool { n := nw.(*network) + if n.configOnly { + return false + } if err := n.joinCluster(); err != nil { logrus.Errorf("Failed to join network %s (%s) into agent cluster: %v", n.Name(), n.ID(), err) } @@ -816,6 +871,9 @@ func (c *controller) reservePools() { } for _, n := range networks { + if n.configOnly { + continue + } if !doReplayPoolReserve(n) { continue } diff --git a/components/engine/vendor/github.com/docker/libnetwork/datastore/datastore.go b/components/engine/vendor/github.com/docker/libnetwork/datastore/datastore.go index 19bf0b026b..82feef1c84 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/datastore/datastore.go +++ b/components/engine/vendor/github.com/docker/libnetwork/datastore/datastore.go @@ -115,7 +115,10 @@ const ( // LocalScope indicates to store the KV object in local datastore such as boltdb LocalScope = "local" // GlobalScope indicates to store the KV object in global datastore such as consul/etcd/zookeeper - GlobalScope = "global" + GlobalScope = "global" + // SwarmScope is not indicating a datastore location. It is defined here + // along with the other two scopes just for consistency. + SwarmScope = "swarm" defaultPrefix = "/var/lib/docker/network/files" ) diff --git a/components/engine/vendor/github.com/docker/libnetwork/driverapi/driverapi.go b/components/engine/vendor/github.com/docker/libnetwork/driverapi/driverapi.go index 074438ef88..48a14ae57a 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/driverapi/driverapi.go +++ b/components/engine/vendor/github.com/docker/libnetwork/driverapi/driverapi.go @@ -161,7 +161,8 @@ type DriverCallback interface { // Capability represents the high level capabilities of the drivers which libnetwork can make use of type Capability struct { - DataScope string + DataScope string + ConnectivityScope string } // IPAMData represents the per-network ip related diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/bridge/bridge.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/bridge/bridge.go index e681b8f7c4..dd79f04d91 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/drivers/bridge/bridge.go +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/bridge/bridge.go @@ -153,7 +153,8 @@ func Init(dc driverapi.DriverCallback, config map[string]interface{}) error { } c := driverapi.Capability{ - DataScope: datastore.LocalScope, + DataScope: datastore.LocalScope, + ConnectivityScope: datastore.LocalScope, } return dc.RegisterDriver(networkType, d, c) } diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/bridge/brmanager/brmanager.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/bridge/brmanager/brmanager.go new file mode 100644 index 0000000000..74bb95c001 --- /dev/null +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/bridge/brmanager/brmanager.go @@ -0,0 +1,88 @@ +package brmanager + +import ( + "github.com/docker/libnetwork/datastore" + "github.com/docker/libnetwork/discoverapi" + "github.com/docker/libnetwork/driverapi" + "github.com/docker/libnetwork/types" +) + +const networkType = "bridge" + +type driver struct{} + +// Init registers a new instance of bridge manager driver +func Init(dc driverapi.DriverCallback, config map[string]interface{}) error { + c := driverapi.Capability{ + DataScope: datastore.LocalScope, + ConnectivityScope: datastore.LocalScope, + } + return dc.RegisterDriver(networkType, &driver{}, c) +} + +func (d *driver) NetworkAllocate(id string, option map[string]string, ipV4Data, ipV6Data []driverapi.IPAMData) (map[string]string, error) { + return nil, types.NotImplementedErrorf("not implemented") +} + +func (d *driver) NetworkFree(id string) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) CreateNetwork(id string, option map[string]interface{}, nInfo driverapi.NetworkInfo, ipV4Data, ipV6Data []driverapi.IPAMData) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) EventNotify(etype driverapi.EventType, nid, tableName, key string, value []byte) { +} + +func (d *driver) DecodeTableEntry(tablename string, key string, value []byte) (string, map[string]string) { + return "", nil +} + +func (d *driver) DeleteNetwork(nid string) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo, epOptions map[string]interface{}) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) DeleteEndpoint(nid, eid string) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) EndpointOperInfo(nid, eid string) (map[string]interface{}, error) { + return nil, types.NotImplementedErrorf("not implemented") +} + +func (d *driver) Join(nid, eid string, sboxKey string, jinfo driverapi.JoinInfo, options map[string]interface{}) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) Leave(nid, eid string) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) Type() string { + return networkType +} + +func (d *driver) IsBuiltIn() bool { + return true +} + +func (d *driver) DiscoverNew(dType discoverapi.DiscoveryType, data interface{}) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) DiscoverDelete(dType discoverapi.DiscoveryType, data interface{}) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) ProgramExternalConnectivity(nid, eid string, options map[string]interface{}) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) RevokeExternalConnectivity(nid, eid string) error { + return types.NotImplementedErrorf("not implemented") +} diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/bridge/setup_ip_tables.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/bridge/setup_ip_tables.go index 839e16f8ff..769debcb80 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/drivers/bridge/setup_ip_tables.go +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/bridge/setup_ip_tables.go @@ -53,7 +53,7 @@ func setupIPChains(config *configuration) (*iptables.ChainInfo, *iptables.ChainI return nil, nil, nil, fmt.Errorf("failed to create FILTER isolation chain: %v", err) } - if err := addReturnRule(IsolationChain); err != nil { + if err := iptables.AddReturnRule(IsolationChain); err != nil { return nil, nil, nil, err } @@ -117,7 +117,7 @@ func (n *bridgeNetwork) setupIPTables(config *networkConfiguration, i *bridgeInt } d.Lock() - err = ensureJumpRule("FORWARD", IsolationChain) + err = iptables.EnsureJumpRule("FORWARD", IsolationChain) d.Unlock() if err != nil { return err @@ -280,46 +280,6 @@ func setINC(iface1, iface2 string, enable bool) error { return nil } -func addReturnRule(chain string) error { - var ( - table = iptables.Filter - args = []string{"-j", "RETURN"} - ) - - if iptables.Exists(table, chain, args...) { - return nil - } - - err := iptables.RawCombinedOutput(append([]string{"-I", chain}, args...)...) - if err != nil { - return fmt.Errorf("unable to add return rule in %s chain: %s", chain, err.Error()) - } - - return nil -} - -// Ensure the jump rule is on top -func ensureJumpRule(fromChain, toChain string) error { - var ( - table = iptables.Filter - args = []string{"-j", toChain} - ) - - if iptables.Exists(table, fromChain, args...) { - err := iptables.RawCombinedOutput(append([]string{"-D", fromChain}, args...)...) - if err != nil { - return fmt.Errorf("unable to remove jump to %s rule in %s chain: %s", toChain, fromChain, err.Error()) - } - } - - err := iptables.RawCombinedOutput(append([]string{"-I", fromChain}, args...)...) - if err != nil { - return fmt.Errorf("unable to insert jump to %s rule in %s chain: %s", toChain, fromChain, err.Error()) - } - - return nil -} - func removeIPChains() { for _, chainInfo := range []iptables.ChainInfo{ {Name: DockerChain, Table: iptables.Nat}, diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/host/host.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/host/host.go index 7b4a986e6c..a71d461380 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/drivers/host/host.go +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/host/host.go @@ -19,7 +19,8 @@ type driver struct { // Init registers a new instance of host driver func Init(dc driverapi.DriverCallback, config map[string]interface{}) error { c := driverapi.Capability{ - DataScope: datastore.LocalScope, + DataScope: datastore.LocalScope, + ConnectivityScope: datastore.LocalScope, } return dc.RegisterDriver(networkType, &driver{}, c) } diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/ipvlan/ipvlan.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/ipvlan/ipvlan.go index 296804dc1a..c64ad555a3 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/drivers/ipvlan/ipvlan.go +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/ipvlan/ipvlan.go @@ -58,7 +58,8 @@ type network struct { // Init initializes and registers the libnetwork ipvlan driver func Init(dc driverapi.DriverCallback, config map[string]interface{}) error { c := driverapi.Capability{ - DataScope: datastore.LocalScope, + DataScope: datastore.LocalScope, + ConnectivityScope: datastore.GlobalScope, } d := &driver{ networks: networkTable{}, diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/ipvlan/ivmanager/ivmanager.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/ipvlan/ivmanager/ivmanager.go new file mode 100644 index 0000000000..519f1e8795 --- /dev/null +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/ipvlan/ivmanager/ivmanager.go @@ -0,0 +1,88 @@ +package ivmanager + +import ( + "github.com/docker/libnetwork/datastore" + "github.com/docker/libnetwork/discoverapi" + "github.com/docker/libnetwork/driverapi" + "github.com/docker/libnetwork/types" +) + +const networkType = "ipvlan" + +type driver struct{} + +// Init registers a new instance of ipvlan manager driver +func Init(dc driverapi.DriverCallback, config map[string]interface{}) error { + c := driverapi.Capability{ + DataScope: datastore.LocalScope, + ConnectivityScope: datastore.GlobalScope, + } + return dc.RegisterDriver(networkType, &driver{}, c) +} + +func (d *driver) NetworkAllocate(id string, option map[string]string, ipV4Data, ipV6Data []driverapi.IPAMData) (map[string]string, error) { + return nil, types.NotImplementedErrorf("not implemented") +} + +func (d *driver) NetworkFree(id string) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) CreateNetwork(id string, option map[string]interface{}, nInfo driverapi.NetworkInfo, ipV4Data, ipV6Data []driverapi.IPAMData) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) EventNotify(etype driverapi.EventType, nid, tableName, key string, value []byte) { +} + +func (d *driver) DecodeTableEntry(tablename string, key string, value []byte) (string, map[string]string) { + return "", nil +} + +func (d *driver) DeleteNetwork(nid string) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo, epOptions map[string]interface{}) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) DeleteEndpoint(nid, eid string) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) EndpointOperInfo(nid, eid string) (map[string]interface{}, error) { + return nil, types.NotImplementedErrorf("not implemented") +} + +func (d *driver) Join(nid, eid string, sboxKey string, jinfo driverapi.JoinInfo, options map[string]interface{}) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) Leave(nid, eid string) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) Type() string { + return networkType +} + +func (d *driver) IsBuiltIn() bool { + return true +} + +func (d *driver) DiscoverNew(dType discoverapi.DiscoveryType, data interface{}) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) DiscoverDelete(dType discoverapi.DiscoveryType, data interface{}) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) ProgramExternalConnectivity(nid, eid string, options map[string]interface{}) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) RevokeExternalConnectivity(nid, eid string) error { + return types.NotImplementedErrorf("not implemented") +} diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/macvlan/macvlan.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/macvlan/macvlan.go index 49b9fbae00..872e6f3ec1 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/drivers/macvlan/macvlan.go +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/macvlan/macvlan.go @@ -60,7 +60,8 @@ type network struct { // Init initializes and registers the libnetwork macvlan driver func Init(dc driverapi.DriverCallback, config map[string]interface{}) error { c := driverapi.Capability{ - DataScope: datastore.LocalScope, + DataScope: datastore.LocalScope, + ConnectivityScope: datastore.GlobalScope, } d := &driver{ networks: networkTable{}, diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/macvlan/mvmanager/mvmanager.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/macvlan/mvmanager/mvmanager.go new file mode 100644 index 0000000000..0f811ac36f --- /dev/null +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/macvlan/mvmanager/mvmanager.go @@ -0,0 +1,88 @@ +package mvmanager + +import ( + "github.com/docker/libnetwork/datastore" + "github.com/docker/libnetwork/discoverapi" + "github.com/docker/libnetwork/driverapi" + "github.com/docker/libnetwork/types" +) + +const networkType = "macvlan" + +type driver struct{} + +// Init registers a new instance of macvlan manager driver +func Init(dc driverapi.DriverCallback, config map[string]interface{}) error { + c := driverapi.Capability{ + DataScope: datastore.LocalScope, + ConnectivityScope: datastore.GlobalScope, + } + return dc.RegisterDriver(networkType, &driver{}, c) +} + +func (d *driver) NetworkAllocate(id string, option map[string]string, ipV4Data, ipV6Data []driverapi.IPAMData) (map[string]string, error) { + return nil, types.NotImplementedErrorf("not implemented") +} + +func (d *driver) NetworkFree(id string) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) CreateNetwork(id string, option map[string]interface{}, nInfo driverapi.NetworkInfo, ipV4Data, ipV6Data []driverapi.IPAMData) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) EventNotify(etype driverapi.EventType, nid, tableName, key string, value []byte) { +} + +func (d *driver) DecodeTableEntry(tablename string, key string, value []byte) (string, map[string]string) { + return "", nil +} + +func (d *driver) DeleteNetwork(nid string) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo, epOptions map[string]interface{}) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) DeleteEndpoint(nid, eid string) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) EndpointOperInfo(nid, eid string) (map[string]interface{}, error) { + return nil, types.NotImplementedErrorf("not implemented") +} + +func (d *driver) Join(nid, eid string, sboxKey string, jinfo driverapi.JoinInfo, options map[string]interface{}) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) Leave(nid, eid string) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) Type() string { + return networkType +} + +func (d *driver) IsBuiltIn() bool { + return true +} + +func (d *driver) DiscoverNew(dType discoverapi.DiscoveryType, data interface{}) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) DiscoverDelete(dType discoverapi.DiscoveryType, data interface{}) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) ProgramExternalConnectivity(nid, eid string, options map[string]interface{}) error { + return types.NotImplementedErrorf("not implemented") +} + +func (d *driver) RevokeExternalConnectivity(nid, eid string) error { + return types.NotImplementedErrorf("not implemented") +} diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/overlay/overlay.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/overlay/overlay.go index 88e1010c43..8a932cf370 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/drivers/overlay/overlay.go +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/overlay/overlay.go @@ -56,7 +56,8 @@ type driver struct { // Init registers a new instance of overlay driver func Init(dc driverapi.DriverCallback, config map[string]interface{}) error { c := driverapi.Capability{ - DataScope: datastore.GlobalScope, + DataScope: datastore.GlobalScope, + ConnectivityScope: datastore.GlobalScope, } d := &driver{ networks: networkTable{}, diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/overlay/ovmanager/ovmanager.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/overlay/ovmanager/ovmanager.go index dce8f98b8e..3c3c0bb257 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/drivers/overlay/ovmanager/ovmanager.go +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/overlay/ovmanager/ovmanager.go @@ -49,7 +49,8 @@ type network struct { func Init(dc driverapi.DriverCallback, config map[string]interface{}) error { var err error c := driverapi.Capability{ - DataScope: datastore.GlobalScope, + DataScope: datastore.GlobalScope, + ConnectivityScope: datastore.GlobalScope, } d := &driver{ diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/remote/api/api.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/remote/api/api.go index f9a341c540..d24f190162 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/drivers/remote/api/api.go +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/remote/api/api.go @@ -24,7 +24,8 @@ func (r *Response) GetError() string { // GetCapabilityResponse is the response of GetCapability request type GetCapabilityResponse struct { Response - Scope string + Scope string + ConnectivityScope string } // AllocateNetworkRequest requests allocation of new network by manager diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/remote/driver.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/remote/driver.go index 49a7fb4951..ffe0730c95 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/drivers/remote/driver.go +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/remote/driver.go @@ -74,6 +74,17 @@ func (d *driver) getCapabilities() (*driverapi.Capability, error) { return nil, fmt.Errorf("invalid capability: expecting 'local' or 'global', got %s", capResp.Scope) } + switch capResp.ConnectivityScope { + case "global": + c.ConnectivityScope = datastore.GlobalScope + case "local": + c.ConnectivityScope = datastore.LocalScope + case "": + c.ConnectivityScope = c.DataScope + default: + return nil, fmt.Errorf("invalid capability: expecting 'local' or 'global', got %s", capResp.Scope) + } + return c, nil } diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/solaris/bridge/bridge.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/solaris/bridge/bridge.go index 13dd5f14bc..2547016a4b 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/drivers/solaris/bridge/bridge.go +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/solaris/bridge/bridge.go @@ -159,7 +159,8 @@ func Init(dc driverapi.DriverCallback, config map[string]interface{}) error { } c := driverapi.Capability{ - DataScope: datastore.LocalScope, + DataScope: datastore.LocalScope, + ConnectivityScope: datastore.LocalScope, } return dc.RegisterDriver(networkType, d, c) } diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/solaris/overlay/overlay.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/solaris/overlay/overlay.go index b001f58af7..0a5a1bfdce 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/drivers/solaris/overlay/overlay.go +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/solaris/overlay/overlay.go @@ -57,7 +57,8 @@ type driver struct { // Init registers a new instance of overlay driver func Init(dc driverapi.DriverCallback, config map[string]interface{}) error { c := driverapi.Capability{ - DataScope: datastore.GlobalScope, + DataScope: datastore.GlobalScope, + ConnectivityScope: datastore.GlobalScope, } d := &driver{ networks: networkTable{}, diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/windows/overlay/overlay_windows.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/windows/overlay/overlay_windows.go index 2ae2cec77e..111e517dbd 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/drivers/windows/overlay/overlay_windows.go +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/windows/overlay/overlay_windows.go @@ -36,7 +36,8 @@ type driver struct { // Init registers a new instance of overlay driver func Init(dc driverapi.DriverCallback, config map[string]interface{}) error { c := driverapi.Capability{ - DataScope: datastore.GlobalScope, + DataScope: datastore.GlobalScope, + ConnectivityScope: datastore.GlobalScope, } d := &driver{ diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/windows/windows.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/windows/windows.go index b6591a1d6d..c1c69f2991 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/drivers/windows/windows.go +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/windows/windows.go @@ -41,6 +41,8 @@ type networkConfiguration struct { DNSSuffix string SourceMac string NetworkAdapterName string + dbIndex uint64 + dbExists bool } // endpointConfiguration represents the user specified configuration for the sandbox endpoint @@ -59,17 +61,22 @@ type endpointConnectivity struct { type hnsEndpoint struct { id string + nid string profileID string + Type string macAddress net.HardwareAddr epOption *endpointOption // User specified parameters epConnectivity *endpointConnectivity // User specified parameters portMapping []types.PortBinding // Operation port bindings addr *net.IPNet gateway net.IP + dbIndex uint64 + dbExists bool } type hnsNetwork struct { id string + created bool config *networkConfiguration endpoints map[string]*hnsEndpoint // key: endpoint id driver *driver // The network's driver @@ -79,9 +86,14 @@ type hnsNetwork struct { type driver struct { name string networks map[string]*hnsNetwork + store datastore.DataStore sync.Mutex } +const ( + errNotFound = "HNS failed with error : The object identifier does not represent a valid object. " +) + // IsBuiltinWindowsDriver vaidates if network-type is a builtin local-scoped driver func IsBuiltinLocalDriver(networkType string) bool { if "l2bridge" == networkType || "l2tunnel" == networkType || "nat" == networkType || "ics" == networkType || "transparent" == networkType { @@ -103,8 +115,16 @@ func GetInit(networkType string) func(dc driverapi.DriverCallback, config map[st return types.BadRequestErrorf("Network type not supported: %s", networkType) } - return dc.RegisterDriver(networkType, newDriver(networkType), driverapi.Capability{ - DataScope: datastore.LocalScope, + d := newDriver(networkType) + + err := d.initStore(config) + if err != nil { + return err + } + + return dc.RegisterDriver(networkType, d, driverapi.Capability{ + DataScope: datastore.LocalScope, + ConnectivityScope: datastore.LocalScope, }) } } @@ -132,7 +152,7 @@ func (n *hnsNetwork) getEndpoint(eid string) (*hnsEndpoint, error) { } func (d *driver) parseNetworkOptions(id string, genericOptions map[string]string) (*networkConfiguration, error) { - config := &networkConfiguration{} + config := &networkConfiguration{Type: d.name} for label, value := range genericOptions { switch label { @@ -187,6 +207,21 @@ func (d *driver) DecodeTableEntry(tablename string, key string, value []byte) (s return "", nil } +func (d *driver) createNetwork(config *networkConfiguration) error { + network := &hnsNetwork{ + id: config.ID, + endpoints: make(map[string]*hnsEndpoint), + config: config, + driver: d, + } + + d.Lock() + d.networks[config.ID] = network + d.Unlock() + + return nil +} + // Create a new network func (d *driver) CreateNetwork(id string, option map[string]interface{}, nInfo driverapi.NetworkInfo, ipV4Data, ipV6Data []driverapi.IPAMData) error { if _, err := d.getNetwork(id); err == nil { @@ -209,16 +244,11 @@ func (d *driver) CreateNetwork(id string, option map[string]interface{}, nInfo d return err } - network := &hnsNetwork{ - id: config.ID, - endpoints: make(map[string]*hnsEndpoint), - config: config, - driver: d, - } + err = d.createNetwork(config) - d.Lock() - d.networks[config.ID] = network - d.Unlock() + if err != nil { + return err + } // A non blank hnsid indicates that the network was discovered // from HNS. No need to call HNS if this network was discovered @@ -293,7 +323,9 @@ func (d *driver) CreateNetwork(id string, option map[string]interface{}, nInfo d genData[HNSID] = config.HnsID } - return nil + n, err := d.getNetwork(id) + n.created = true + return d.storeUpdate(config) } func (d *driver) DeleteNetwork(nid string) error { @@ -306,21 +338,25 @@ func (d *driver) DeleteNetwork(nid string) error { config := n.config n.Unlock() - // Cannot remove network if endpoints are still present - if len(n.endpoints) != 0 { - return fmt.Errorf("network %s has active endpoint", n.id) - } - - _, err = hcsshim.HNSNetworkRequest("DELETE", config.HnsID, "") - if err != nil { - return types.ForbiddenErrorf(err.Error()) + if n.created { + _, err = hcsshim.HNSNetworkRequest("DELETE", config.HnsID, "") + if err != nil && err.Error() != errNotFound { + return types.ForbiddenErrorf(err.Error()) + } } d.Lock() delete(d.networks, nid) d.Unlock() - return nil + // delele endpoints belong to this network + for _, ep := range n.endpoints { + if err := d.storeDelete(ep); err != nil { + logrus.Warnf("Failed to remove bridge endpoint %s from store: %v", ep.id[0:7], err) + } + } + + return d.storeDelete(config) } func convertQosPolicies(qosPolicies []types.QosPolicy) ([]json.RawMessage, error) { @@ -543,6 +579,8 @@ func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo, // TODO For now the ip mask is not in the info generated by HNS endpoint := &hnsEndpoint{ id: eid, + nid: n.id, + Type: d.name, addr: &net.IPNet{IP: hnsresponse.IPAddress, Mask: hnsresponse.IPAddress.DefaultMask()}, macAddress: mac, } @@ -573,6 +611,10 @@ func (d *driver) CreateEndpoint(nid, eid string, ifInfo driverapi.InterfaceInfo, ifInfo.SetMacAddress(endpoint.macAddress) } + if err = d.storeUpdate(endpoint); err != nil { + return fmt.Errorf("failed to save endpoint %s to store: %v", endpoint.id[0:7], err) + } + return nil } @@ -592,10 +634,13 @@ func (d *driver) DeleteEndpoint(nid, eid string) error { n.Unlock() _, err = hcsshim.HNSEndpointRequest("DELETE", ep.profileID, "") - if err != nil { + if err != nil && err.Error() != errNotFound { return err } + if err := d.storeDelete(ep); err != nil { + logrus.Warnf("Failed to remove bridge endpoint %s from store: %v", ep.id[0:7], err) + } return nil } diff --git a/components/engine/vendor/github.com/docker/libnetwork/drivers/windows/windows_store.go b/components/engine/vendor/github.com/docker/libnetwork/drivers/windows/windows_store.go new file mode 100644 index 0000000000..3c5cb04e21 --- /dev/null +++ b/components/engine/vendor/github.com/docker/libnetwork/drivers/windows/windows_store.go @@ -0,0 +1,335 @@ +// +build windows + +package windows + +import ( + "encoding/json" + "fmt" + "net" + + "github.com/Sirupsen/logrus" + "github.com/docker/libnetwork/datastore" + "github.com/docker/libnetwork/discoverapi" + "github.com/docker/libnetwork/netlabel" + "github.com/docker/libnetwork/types" +) + +const ( + windowsPrefix = "windows" + windowsEndpointPrefix = "windows-endpoint" +) + +func (d *driver) initStore(option map[string]interface{}) error { + if data, ok := option[netlabel.LocalKVClient]; ok { + var err error + dsc, ok := data.(discoverapi.DatastoreConfigData) + if !ok { + return types.InternalErrorf("incorrect data in datastore configuration: %v", data) + } + d.store, err = datastore.NewDataStoreFromConfig(dsc) + if err != nil { + return types.InternalErrorf("windows driver failed to initialize data store: %v", err) + } + + err = d.populateNetworks() + if err != nil { + return err + } + + err = d.populateEndpoints() + if err != nil { + return err + } + } + + return nil +} + +func (d *driver) populateNetworks() error { + kvol, err := d.store.List(datastore.Key(windowsPrefix), &networkConfiguration{Type: d.name}) + if err != nil && err != datastore.ErrKeyNotFound { + return fmt.Errorf("failed to get windows network configurations from store: %v", err) + } + + // It's normal for network configuration state to be empty. Just return. + if err == datastore.ErrKeyNotFound { + return nil + } + + for _, kvo := range kvol { + ncfg := kvo.(*networkConfiguration) + if ncfg.Type != d.name { + continue + } + if err = d.createNetwork(ncfg); err != nil { + logrus.Warnf("could not create windows network for id %s hnsid %s while booting up from persistent state: %v", ncfg.ID, ncfg.HnsID, err) + } + logrus.Debugf("Network (%s) restored", ncfg.ID[0:7]) + } + + return nil +} + +func (d *driver) populateEndpoints() error { + kvol, err := d.store.List(datastore.Key(windowsEndpointPrefix), &hnsEndpoint{Type: d.name}) + if err != nil && err != datastore.ErrKeyNotFound { + return fmt.Errorf("failed to get endpoints from store: %v", err) + } + + if err == datastore.ErrKeyNotFound { + return nil + } + + for _, kvo := range kvol { + ep := kvo.(*hnsEndpoint) + if ep.Type != d.name { + continue + } + n, ok := d.networks[ep.nid] + if !ok { + logrus.Debugf("Network (%s) not found for restored endpoint (%s)", ep.nid[0:7], ep.id[0:7]) + logrus.Debugf("Deleting stale endpoint (%s) from store", ep.id[0:7]) + if err := d.storeDelete(ep); err != nil { + logrus.Debugf("Failed to delete stale endpoint (%s) from store", ep.id[0:7]) + } + continue + } + n.endpoints[ep.id] = ep + logrus.Debugf("Endpoint (%s) restored to network (%s)", ep.id[0:7], ep.nid[0:7]) + } + + return nil +} + +func (d *driver) storeUpdate(kvObject datastore.KVObject) error { + if d.store == nil { + logrus.Warnf("store not initialized. kv object %s is not added to the store", datastore.Key(kvObject.Key()...)) + return nil + } + + if err := d.store.PutObjectAtomic(kvObject); err != nil { + return fmt.Errorf("failed to update store for object type %T: %v", kvObject, err) + } + + return nil +} + +func (d *driver) storeDelete(kvObject datastore.KVObject) error { + if d.store == nil { + logrus.Debugf("store not initialized. kv object %s is not deleted from store", datastore.Key(kvObject.Key()...)) + return nil + } + +retry: + if err := d.store.DeleteObjectAtomic(kvObject); err != nil { + if err == datastore.ErrKeyModified { + if err := d.store.GetObject(datastore.Key(kvObject.Key()...), kvObject); err != nil { + return fmt.Errorf("could not update the kvobject to latest when trying to delete: %v", err) + } + goto retry + } + return err + } + + return nil +} + +func (ncfg *networkConfiguration) MarshalJSON() ([]byte, error) { + nMap := make(map[string]interface{}) + + nMap["ID"] = ncfg.ID + nMap["Type"] = ncfg.Type + nMap["Name"] = ncfg.Name + nMap["HnsID"] = ncfg.HnsID + nMap["VLAN"] = ncfg.VLAN + nMap["VSID"] = ncfg.VSID + nMap["DNSServers"] = ncfg.DNSServers + nMap["DNSSuffix"] = ncfg.DNSSuffix + nMap["SourceMac"] = ncfg.SourceMac + nMap["NetworkAdapterName"] = ncfg.NetworkAdapterName + + return json.Marshal(nMap) +} + +func (ncfg *networkConfiguration) UnmarshalJSON(b []byte) error { + var ( + err error + nMap map[string]interface{} + ) + + if err = json.Unmarshal(b, &nMap); err != nil { + return err + } + + ncfg.ID = nMap["ID"].(string) + ncfg.Type = nMap["Type"].(string) + ncfg.Name = nMap["Name"].(string) + ncfg.HnsID = nMap["HnsID"].(string) + ncfg.VLAN = uint(nMap["VLAN"].(float64)) + ncfg.VSID = uint(nMap["VSID"].(float64)) + ncfg.DNSServers = nMap["DNSServers"].(string) + ncfg.DNSSuffix = nMap["DNSSuffix"].(string) + ncfg.SourceMac = nMap["SourceMac"].(string) + ncfg.NetworkAdapterName = nMap["NetworkAdapterName"].(string) + return nil +} + +func (ncfg *networkConfiguration) Key() []string { + return []string{windowsPrefix + ncfg.Type, ncfg.ID} +} + +func (ncfg *networkConfiguration) KeyPrefix() []string { + return []string{windowsPrefix + ncfg.Type} +} + +func (ncfg *networkConfiguration) Value() []byte { + b, err := json.Marshal(ncfg) + if err != nil { + return nil + } + return b +} + +func (ncfg *networkConfiguration) SetValue(value []byte) error { + return json.Unmarshal(value, ncfg) +} + +func (ncfg *networkConfiguration) Index() uint64 { + return ncfg.dbIndex +} + +func (ncfg *networkConfiguration) SetIndex(index uint64) { + ncfg.dbIndex = index + ncfg.dbExists = true +} + +func (ncfg *networkConfiguration) Exists() bool { + return ncfg.dbExists +} + +func (ncfg *networkConfiguration) Skip() bool { + return false +} + +func (ncfg *networkConfiguration) New() datastore.KVObject { + return &networkConfiguration{Type: ncfg.Type} +} + +func (ncfg *networkConfiguration) CopyTo(o datastore.KVObject) error { + dstNcfg := o.(*networkConfiguration) + *dstNcfg = *ncfg + return nil +} + +func (ncfg *networkConfiguration) DataScope() string { + return datastore.LocalScope +} + +func (ep *hnsEndpoint) MarshalJSON() ([]byte, error) { + epMap := make(map[string]interface{}) + epMap["id"] = ep.id + epMap["nid"] = ep.nid + epMap["Type"] = ep.Type + epMap["profileID"] = ep.profileID + epMap["MacAddress"] = ep.macAddress.String() + epMap["Addr"] = ep.addr.String() + epMap["gateway"] = ep.gateway.String() + + epMap["epOption"] = ep.epOption + epMap["epConnectivity"] = ep.epConnectivity + epMap["PortMapping"] = ep.portMapping + + return json.Marshal(epMap) +} + +func (ep *hnsEndpoint) UnmarshalJSON(b []byte) error { + var ( + err error + epMap map[string]interface{} + ) + + if err = json.Unmarshal(b, &epMap); err != nil { + return fmt.Errorf("Failed to unmarshal to endpoint: %v", err) + } + + if v, ok := epMap["MacAddress"]; ok { + if ep.macAddress, err = net.ParseMAC(v.(string)); err != nil { + return types.InternalErrorf("failed to decode endpoint MAC address (%s) after json unmarshal: %v", v.(string), err) + } + } + if v, ok := epMap["Addr"]; ok { + if ep.addr, err = types.ParseCIDR(v.(string)); err != nil { + return types.InternalErrorf("failed to decode endpoint IPv4 address (%s) after json unmarshal: %v", v.(string), err) + } + } + + ep.id = epMap["id"].(string) + ep.Type = epMap["Type"].(string) + ep.nid = epMap["nid"].(string) + ep.profileID = epMap["profileID"].(string) + d, _ := json.Marshal(epMap["epOption"]) + if err := json.Unmarshal(d, &ep.epOption); err != nil { + logrus.Warnf("Failed to decode endpoint container config %v", err) + } + d, _ = json.Marshal(epMap["epConnectivity"]) + if err := json.Unmarshal(d, &ep.epConnectivity); err != nil { + logrus.Warnf("Failed to decode endpoint external connectivity configuration %v", err) + } + d, _ = json.Marshal(epMap["PortMapping"]) + if err := json.Unmarshal(d, &ep.portMapping); err != nil { + logrus.Warnf("Failed to decode endpoint port mapping %v", err) + } + + return nil +} + +func (ep *hnsEndpoint) Key() []string { + return []string{windowsEndpointPrefix + ep.Type, ep.id} +} + +func (ep *hnsEndpoint) KeyPrefix() []string { + return []string{windowsEndpointPrefix + ep.Type} +} + +func (ep *hnsEndpoint) Value() []byte { + b, err := json.Marshal(ep) + if err != nil { + return nil + } + return b +} + +func (ep *hnsEndpoint) SetValue(value []byte) error { + return json.Unmarshal(value, ep) +} + +func (ep *hnsEndpoint) Index() uint64 { + return ep.dbIndex +} + +func (ep *hnsEndpoint) SetIndex(index uint64) { + ep.dbIndex = index + ep.dbExists = true +} + +func (ep *hnsEndpoint) Exists() bool { + return ep.dbExists +} + +func (ep *hnsEndpoint) Skip() bool { + return false +} + +func (ep *hnsEndpoint) New() datastore.KVObject { + return &hnsEndpoint{Type: ep.Type} +} + +func (ep *hnsEndpoint) CopyTo(o datastore.KVObject) error { + dstEp := o.(*hnsEndpoint) + *dstEp = *ep + return nil +} + +func (ep *hnsEndpoint) DataScope() string { + return datastore.LocalScope +} diff --git a/components/engine/vendor/github.com/docker/libnetwork/endpoint.go b/components/engine/vendor/github.com/docker/libnetwork/endpoint.go index 8e70c38d76..e607eddaf2 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/endpoint.go +++ b/components/engine/vendor/github.com/docker/libnetwork/endpoint.go @@ -1152,6 +1152,9 @@ func (c *controller) cleanupLocalEndpoints() { } for _, n := range nl { + if n.ConfigOnly() { + continue + } epl, err := n.getEndpointsFromStore() if err != nil { logrus.Warnf("Could not get list of endpoints in network %s during endpoint cleanup: %v", n.name, err) diff --git a/components/engine/vendor/github.com/docker/libnetwork/firewall_linux.go b/components/engine/vendor/github.com/docker/libnetwork/firewall_linux.go new file mode 100644 index 0000000000..8c27c1dd25 --- /dev/null +++ b/components/engine/vendor/github.com/docker/libnetwork/firewall_linux.go @@ -0,0 +1,29 @@ +package libnetwork + +import ( + "github.com/Sirupsen/logrus" + "github.com/docker/libnetwork/iptables" +) + +const userChain = "DOCKER-USER" + +// This chain allow users to configure firewall policies in a way that persists +// docker operations/restarts. Docker will not delete or modify any pre-existing +// rules from the DOCKER-USER filter chain. +func arrangeUserFilterRule() { + _, err := iptables.NewChain(userChain, iptables.Filter, false) + if err != nil { + logrus.Warnf("Failed to create %s chain: %v", userChain, err) + return + } + + if err = iptables.AddReturnRule(userChain); err != nil { + logrus.Warnf("Failed to add the RETURN rule for %s: %v", userChain, err) + return + } + + err = iptables.EnsureJumpRule("FORWARD", userChain) + if err != nil { + logrus.Warnf("Failed to ensure the jump rule for %s: %v", userChain, err) + } +} diff --git a/components/engine/vendor/github.com/docker/libnetwork/firewall_others.go b/components/engine/vendor/github.com/docker/libnetwork/firewall_others.go new file mode 100644 index 0000000000..c41b3e049f --- /dev/null +++ b/components/engine/vendor/github.com/docker/libnetwork/firewall_others.go @@ -0,0 +1,6 @@ +// +build !linux + +package libnetwork + +func arrangeUserFilterRule() { +} diff --git a/components/engine/vendor/github.com/docker/libnetwork/iptables/iptables.go b/components/engine/vendor/github.com/docker/libnetwork/iptables/iptables.go index 818bcb5598..20edb9b5d6 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/iptables/iptables.go +++ b/components/engine/vendor/github.com/docker/libnetwork/iptables/iptables.go @@ -498,3 +498,44 @@ func parseVersionNumbers(input string) (major, minor, micro int) { func supportsCOption(mj, mn, mc int) bool { return mj > 1 || (mj == 1 && (mn > 4 || (mn == 4 && mc >= 11))) } + +// AddReturnRule adds a return rule for the chain in the filter table +func AddReturnRule(chain string) error { + var ( + table = Filter + args = []string{"-j", "RETURN"} + ) + + if Exists(table, chain, args...) { + return nil + } + + err := RawCombinedOutput(append([]string{"-A", chain}, args...)...) + if err != nil { + return fmt.Errorf("unable to add return rule in %s chain: %s", chain, err.Error()) + } + + return nil +} + +// EnsureJumpRule ensures the jump rule is on top +func EnsureJumpRule(fromChain, toChain string) error { + var ( + table = Filter + args = []string{"-j", toChain} + ) + + if Exists(table, fromChain, args...) { + err := RawCombinedOutput(append([]string{"-D", fromChain}, args...)...) + if err != nil { + return fmt.Errorf("unable to remove jump to %s rule in %s chain: %s", toChain, fromChain, err.Error()) + } + } + + err := RawCombinedOutput(append([]string{"-I", fromChain}, args...)...) + if err != nil { + return fmt.Errorf("unable to insert jump to %s rule in %s chain: %s", toChain, fromChain, err.Error()) + } + + return nil +} diff --git a/components/engine/vendor/github.com/docker/libnetwork/network.go b/components/engine/vendor/github.com/docker/libnetwork/network.go index 8077770018..5fcca95fc4 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/network.go +++ b/components/engine/vendor/github.com/docker/libnetwork/network.go @@ -67,6 +67,8 @@ type NetworkInfo interface { Internal() bool Attachable() bool Ingress() bool + ConfigFrom() string + ConfigOnly() bool Labels() map[string]string Dynamic() bool Created() time.Time @@ -193,7 +195,7 @@ type network struct { networkType string id string created time.Time - scope string + scope string // network data scope labels map[string]string ipamType string ipamOptions map[string]string @@ -219,6 +221,8 @@ type network struct { ingress bool driverTables []networkDBTable dynamic bool + configOnly bool + configFrom string sync.Mutex } @@ -348,6 +352,95 @@ func (i *IpamInfo) CopyTo(dstI *IpamInfo) error { return nil } +func (n *network) validateConfiguration() error { + if n.configOnly { + // Only supports network specific configurations. + // Network operator configurations are not supported. + if n.ingress || n.internal || n.attachable { + return types.ForbiddenErrorf("configuration network can only contain network " + + "specific fields. Network operator fields like " + + "[ ingress | internal | attachable ] are not supported.") + } + } + if n.configFrom != "" { + if n.configOnly { + return types.ForbiddenErrorf("a configuration network cannot depend on another configuration network") + } + if n.ipamType != "" && + n.ipamType != defaultIpamForNetworkType(n.networkType) || + n.enableIPv6 || + len(n.labels) > 0 || len(n.ipamOptions) > 0 || + len(n.ipamV4Config) > 0 || len(n.ipamV6Config) > 0 { + return types.ForbiddenErrorf("user specified configurations are not supported if the network depends on a configuration network") + } + if len(n.generic) > 0 { + if data, ok := n.generic[netlabel.GenericData]; ok { + var ( + driverOptions map[string]string + opts interface{} + ) + switch data.(type) { + case map[string]interface{}: + opts = data.(map[string]interface{}) + case map[string]string: + opts = data.(map[string]string) + } + ba, err := json.Marshal(opts) + if err != nil { + return fmt.Errorf("failed to validate network configuration: %v", err) + } + if err := json.Unmarshal(ba, &driverOptions); err != nil { + return fmt.Errorf("failed to validate network configuration: %v", err) + } + if len(driverOptions) > 0 { + return types.ForbiddenErrorf("network driver options are not supported if the network depends on a configuration network") + } + } + } + } + return nil +} + +// Applies network specific configurations +func (n *network) applyConfigurationTo(to *network) error { + to.enableIPv6 = n.enableIPv6 + if len(n.labels) > 0 { + to.labels = make(map[string]string, len(n.labels)) + for k, v := range n.labels { + if _, ok := to.labels[k]; !ok { + to.labels[k] = v + } + } + } + if len(n.ipamOptions) > 0 { + to.ipamOptions = make(map[string]string, len(n.ipamOptions)) + for k, v := range n.ipamOptions { + if _, ok := to.ipamOptions[k]; !ok { + to.ipamOptions[k] = v + } + } + } + if len(n.ipamV4Config) > 0 { + to.ipamV4Config = make([]*IpamConf, 0, len(n.ipamV4Config)) + for _, v4conf := range n.ipamV4Config { + to.ipamV4Config = append(to.ipamV4Config, v4conf) + } + } + if len(n.ipamV6Config) > 0 { + to.ipamV6Config = make([]*IpamConf, 0, len(n.ipamV6Config)) + for _, v6conf := range n.ipamV6Config { + to.ipamV6Config = append(to.ipamV6Config, v6conf) + } + } + if len(n.generic) > 0 { + to.generic = options.Generic{} + for k, v := range n.generic { + to.generic[k] = v + } + } + return nil +} + func (n *network) CopyTo(o datastore.KVObject) error { n.Lock() defer n.Unlock() @@ -370,6 +463,8 @@ func (n *network) CopyTo(o datastore.KVObject) error { dstN.attachable = n.attachable dstN.inDelete = n.inDelete dstN.ingress = n.ingress + dstN.configOnly = n.configOnly + dstN.configFrom = n.configFrom // copy labels if dstN.labels == nil { @@ -419,7 +514,12 @@ func (n *network) CopyTo(o datastore.KVObject) error { } func (n *network) DataScope() string { - return n.Scope() + s := n.Scope() + // All swarm scope networks have local datascope + if s == datastore.SwarmScope { + s = datastore.LocalScope + } + return s } func (n *network) getEpCnt() *endpointCnt { @@ -479,6 +579,8 @@ func (n *network) MarshalJSON() ([]byte, error) { netMap["attachable"] = n.attachable netMap["inDelete"] = n.inDelete netMap["ingress"] = n.ingress + netMap["configOnly"] = n.configOnly + netMap["configFrom"] = n.configFrom return json.Marshal(netMap) } @@ -583,6 +685,12 @@ func (n *network) UnmarshalJSON(b []byte) (err error) { if v, ok := netMap["ingress"]; ok { n.ingress = v.(bool) } + if v, ok := netMap["configOnly"]; ok { + n.configOnly = v.(bool) + } + if v, ok := netMap["configFrom"]; ok { + n.configFrom = v.(string) + } // Reconcile old networks with the recently added `--ipv6` flag if !n.enableIPv6 { n.enableIPv6 = len(n.ipamV6Info) > 0 @@ -659,6 +767,14 @@ func NetworkOptionAttachable(attachable bool) NetworkOption { } } +// NetworkOptionScope returns an option setter to overwrite the network's scope. +// By default the network's scope is set to the network driver's datascope. +func NetworkOptionScope(scope string) NetworkOption { + return func(n *network) { + n.scope = scope + } +} + // NetworkOptionIpam function returns an option setter for the ipam configuration for this network func NetworkOptionIpam(ipamDriver string, addrSpace string, ipV4 []*IpamConf, ipV6 []*IpamConf, opts map[string]string) NetworkOption { return func(n *network) { @@ -713,6 +829,23 @@ func NetworkOptionDeferIPv6Alloc(enable bool) NetworkOption { } } +// NetworkOptionConfigOnly tells controller this network is +// a configuration only network. It serves as a configuration +// for other networks. +func NetworkOptionConfigOnly() NetworkOption { + return func(n *network) { + n.configOnly = true + } +} + +// NetworkOptionConfigFrom tells controller to pick the +// network configuration from a configuration only network +func NetworkOptionConfigFrom(name string) NetworkOption { + return func(n *network) { + n.configFrom = name + } +} + func (n *network) processOptions(options ...NetworkOption) { for _, opt := range options { if opt != nil { @@ -757,6 +890,14 @@ func (n *network) driverScope() string { return cap.DataScope } +func (n *network) driverIsMultihost() bool { + _, cap, err := n.resolveDriver(n.networkType, true) + if err != nil { + return false + } + return cap.ConnectivityScope == datastore.GlobalScope +} + func (n *network) driver(load bool) (driverapi.Driver, error) { d, cap, err := n.resolveDriver(n.networkType, load) if err != nil { @@ -767,14 +908,14 @@ func (n *network) driver(load bool) (driverapi.Driver, error) { isAgent := c.isAgent() n.Lock() // If load is not required, driver, cap and err may all be nil - if cap != nil { + if n.scope == "" && cap != nil { n.scope = cap.DataScope } - if isAgent || n.dynamic { - // If we are running in agent mode then all networks - // in libnetwork are local scope regardless of the - // backing driver. - n.scope = datastore.LocalScope + if isAgent && n.dynamic { + // If we are running in agent mode and the network + // is dynamic, then the networks are swarm scoped + // regardless of the backing driver. + n.scope = datastore.SwarmScope } n.Unlock() return d, nil @@ -797,6 +938,9 @@ func (n *network) delete(force bool) error { } if !force && n.getEpCnt().EndpointCnt() != 0 { + if n.configOnly { + return types.ForbiddenErrorf("configuration network %q is in use", n.Name()) + } return &ActiveEndpointsError{name: n.name, id: n.id} } @@ -806,6 +950,21 @@ func (n *network) delete(force bool) error { return fmt.Errorf("error marking network %s (%s) for deletion: %v", n.Name(), n.ID(), err) } + if n.ConfigFrom() != "" { + if t, err := c.getConfigNetwork(n.ConfigFrom()); err == nil { + if err := t.getEpCnt().DecEndpointCnt(); err != nil { + logrus.Warnf("Failed to update reference count for configuration network %q on removal of network %q: %v", + t.Name(), n.Name(), err) + } + } else { + logrus.Warnf("Could not find configuration network %q during removal of network %q", n.configOnly, n.Name()) + } + } + + if n.configOnly { + goto removeFromStore + } + if err = n.deleteNetwork(); err != nil { if !force { return err @@ -831,6 +990,7 @@ func (n *network) delete(force bool) error { c.cleanupServiceBindings(n.ID()) +removeFromStore: // deleteFromStore performs an atomic delete operation and the // network.epCnt will help prevent any possible // race between endpoint join and network delete @@ -892,6 +1052,10 @@ func (n *network) CreateEndpoint(name string, options ...EndpointOption) (Endpoi return nil, ErrInvalidName(name) } + if n.ConfigOnly() { + return nil, types.ForbiddenErrorf("cannot create endpoint on configuration-only network") + } + if _, err = n.EndpointByName(name); err == nil { return nil, types.ForbiddenErrorf("endpoint with name %s already exists in network %s", name, n.Name()) } @@ -1611,6 +1775,20 @@ func (n *network) IPv6Enabled() bool { return n.enableIPv6 } +func (n *network) ConfigFrom() string { + n.Lock() + defer n.Unlock() + + return n.configFrom +} + +func (n *network) ConfigOnly() bool { + n.Lock() + defer n.Unlock() + + return n.configOnly +} + func (n *network) Labels() map[string]string { n.Lock() defer n.Unlock() @@ -1778,3 +1956,24 @@ func (n *network) ExecFunc(f func()) error { func (n *network) NdotsSet() bool { return false } + +// config-only network is looked up by name +func (c *controller) getConfigNetwork(name string) (*network, error) { + var n Network + + s := func(current Network) bool { + if current.Info().ConfigOnly() && current.Name() == name { + n = current + return true + } + return false + } + + c.WalkNetworks(s) + + if n == nil { + return nil, types.NotFoundErrorf("configuration network %q not found", name) + } + + return n.(*network), nil +} diff --git a/components/engine/vendor/github.com/docker/libnetwork/networkdb/cluster.go b/components/engine/vendor/github.com/docker/libnetwork/networkdb/cluster.go index 35977fcae9..d448c8caef 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/networkdb/cluster.go +++ b/components/engine/vendor/github.com/docker/libnetwork/networkdb/cluster.go @@ -480,26 +480,31 @@ func (nDB *NetworkDB) bulkSyncTables() { func (nDB *NetworkDB) bulkSync(nodes []string, all bool) ([]string, error) { if !all { - // If not all, then just pick one. - nodes = nDB.mRandomNodes(1, nodes) + // Get 2 random nodes. 2nd node will be tried if the bulk sync to + // 1st node fails. + nodes = nDB.mRandomNodes(2, nodes) } if len(nodes) == 0 { return nil, nil } - logrus.Debugf("%s: Initiating bulk sync with nodes %v", nDB.config.NodeName, nodes) var err error var networks []string for _, node := range nodes { if node == nDB.config.NodeName { continue } - + logrus.Debugf("%s: Initiating bulk sync with node %v", nDB.config.NodeName, node) networks = nDB.findCommonNetworks(node) err = nDB.bulkSyncNode(networks, node, true) + // if its periodic bulksync stop after the first successful sync + if !all && err == nil { + break + } if err != nil { - err = fmt.Errorf("bulk sync failed on node %s: %v", node, err) + err = fmt.Errorf("bulk sync to node %s failed: %v", node, err) + logrus.Warn(err.Error()) } } diff --git a/components/engine/vendor/github.com/docker/libnetwork/store.go b/components/engine/vendor/github.com/docker/libnetwork/store.go index 58e1d852f1..398794bfef 100644 --- a/components/engine/vendor/github.com/docker/libnetwork/store.go +++ b/components/engine/vendor/github.com/docker/libnetwork/store.go @@ -98,7 +98,9 @@ func (c *controller) getNetworkFromStore(nid string) (*network, error) { } n.epCnt = ec - n.scope = store.Scope() + if n.scope == "" { + n.scope = store.Scope() + } return n, nil } @@ -132,7 +134,9 @@ func (c *controller) getNetworksForScope(scope string) ([]*network, error) { } n.epCnt = ec - n.scope = scope + if n.scope == "" { + n.scope = scope + } nl = append(nl, n) } @@ -171,7 +175,9 @@ func (c *controller) getNetworksFromStore() ([]*network, error) { ec.n = n n.epCnt = ec } - n.scope = store.Scope() + if n.scope == "" { + n.scope = store.Scope() + } n.Unlock() nl = append(nl, n) } @@ -350,17 +356,18 @@ func (c *controller) networkWatchLoop(nw *netWatch, ep *endpoint, ecCh <-chan da } func (c *controller) processEndpointCreate(nmap map[string]*netWatch, ep *endpoint) { - if !c.isDistributedControl() && ep.getNetwork().driverScope() == datastore.GlobalScope { + n := ep.getNetwork() + if !c.isDistributedControl() && n.Scope() == datastore.SwarmScope && n.driverIsMultihost() { return } c.Lock() - nw, ok := nmap[ep.getNetwork().ID()] + nw, ok := nmap[n.ID()] c.Unlock() if ok { // Update the svc db for the local endpoint join right away - ep.getNetwork().updateSvcRecord(ep, c.getLocalEps(nw), true) + n.updateSvcRecord(ep, c.getLocalEps(nw), true) c.Lock() nw.localEps[ep.ID()] = ep @@ -381,15 +388,15 @@ func (c *controller) processEndpointCreate(nmap map[string]*netWatch, ep *endpoi // Update the svc db for the local endpoint join right away // Do this before adding this ep to localEps so that we don't // try to update this ep's container's svc records - ep.getNetwork().updateSvcRecord(ep, c.getLocalEps(nw), true) + n.updateSvcRecord(ep, c.getLocalEps(nw), true) c.Lock() nw.localEps[ep.ID()] = ep - nmap[ep.getNetwork().ID()] = nw + nmap[n.ID()] = nw nw.stopCh = make(chan struct{}) c.Unlock() - store := c.getStore(ep.getNetwork().DataScope()) + store := c.getStore(n.DataScope()) if store == nil { return } @@ -398,7 +405,7 @@ func (c *controller) processEndpointCreate(nmap map[string]*netWatch, ep *endpoi return } - ch, err := store.Watch(ep.getNetwork().getEpCnt(), nw.stopCh) + ch, err := store.Watch(n.getEpCnt(), nw.stopCh) if err != nil { logrus.Warnf("Error creating watch for network: %v", err) return @@ -408,12 +415,13 @@ func (c *controller) processEndpointCreate(nmap map[string]*netWatch, ep *endpoi } func (c *controller) processEndpointDelete(nmap map[string]*netWatch, ep *endpoint) { - if !c.isDistributedControl() && ep.getNetwork().driverScope() == datastore.GlobalScope { + n := ep.getNetwork() + if !c.isDistributedControl() && n.Scope() == datastore.SwarmScope && n.driverIsMultihost() { return } c.Lock() - nw, ok := nmap[ep.getNetwork().ID()] + nw, ok := nmap[n.ID()] if ok { delete(nw.localEps, ep.ID()) @@ -422,7 +430,7 @@ func (c *controller) processEndpointDelete(nmap map[string]*netWatch, ep *endpoi // Update the svc db about local endpoint leave right away // Do this after we remove this ep from localEps so that we // don't try to remove this svc record from this ep's container. - ep.getNetwork().updateSvcRecord(ep, c.getLocalEps(nw), false) + n.updateSvcRecord(ep, c.getLocalEps(nw), false) c.Lock() if len(nw.localEps) == 0 { @@ -430,9 +438,9 @@ func (c *controller) processEndpointDelete(nmap map[string]*netWatch, ep *endpoi // This is the last container going away for the network. Destroy // this network's svc db entry - delete(c.svcRecords, ep.getNetwork().ID()) + delete(c.svcRecords, n.ID()) - delete(nmap, ep.getNetwork().ID()) + delete(nmap, n.ID()) } } c.Unlock() @@ -478,7 +486,7 @@ func (c *controller) networkCleanup() { } var populateSpecial NetworkWalker = func(nw Network) bool { - if n := nw.(*network); n.hasSpecialDriver() { + if n := nw.(*network); n.hasSpecialDriver() && !n.ConfigOnly() { if err := n.getController().addNetwork(n); err != nil { logrus.Warnf("Failed to populate network %q with driver %q", nw.Name(), nw.Type()) } diff --git a/components/engine/vendor/github.com/docker/swarmkit/api/control.pb.go b/components/engine/vendor/github.com/docker/swarmkit/api/control.pb.go index 60b7e1f582..096228e618 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/api/control.pb.go +++ b/components/engine/vendor/github.com/docker/swarmkit/api/control.pb.go @@ -89,8 +89,8 @@ type ListNodesRequest_Filters struct { Names []string `protobuf:"bytes,1,rep,name=names" json:"names,omitempty"` IDPrefixes []string `protobuf:"bytes,2,rep,name=id_prefixes,json=idPrefixes" json:"id_prefixes,omitempty"` Labels map[string]string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Memberships []NodeSpec_Membership `protobuf:"varint,4,rep,packed,name=memberships,enum=docker.swarmkit.v1.NodeSpec_Membership" json:"memberships,omitempty"` - Roles []NodeRole `protobuf:"varint,5,rep,packed,name=roles,enum=docker.swarmkit.v1.NodeRole" json:"roles,omitempty"` + Memberships []NodeSpec_Membership `protobuf:"varint,4,rep,name=memberships,enum=docker.swarmkit.v1.NodeSpec_Membership" json:"memberships,omitempty"` + Roles []NodeRole `protobuf:"varint,5,rep,name=roles,enum=docker.swarmkit.v1.NodeRole" json:"roles,omitempty"` // NamePrefixes matches all objects with the given prefixes NamePrefixes []string `protobuf:"bytes,6,rep,name=name_prefixes,json=namePrefixes" json:"name_prefixes,omitempty"` } @@ -192,7 +192,7 @@ type ListTasksRequest_Filters struct { Labels map[string]string `protobuf:"bytes,3,rep,name=labels" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` ServiceIDs []string `protobuf:"bytes,4,rep,name=service_ids,json=serviceIds" json:"service_ids,omitempty"` NodeIDs []string `protobuf:"bytes,5,rep,name=node_ids,json=nodeIds" json:"node_ids,omitempty"` - DesiredStates []TaskState `protobuf:"varint,6,rep,packed,name=desired_states,json=desiredStates,enum=docker.swarmkit.v1.TaskState" json:"desired_states,omitempty"` + DesiredStates []TaskState `protobuf:"varint,6,rep,name=desired_states,json=desiredStates,enum=docker.swarmkit.v1.TaskState" json:"desired_states,omitempty"` // NamePrefixes matches all objects with the given prefixes NamePrefixes []string `protobuf:"bytes,7,rep,name=name_prefixes,json=namePrefixes" json:"name_prefixes,omitempty"` Runtimes []string `protobuf:"bytes,9,rep,name=runtimes" json:"runtimes,omitempty"` @@ -3614,38 +3614,18 @@ func (m *ListNodesRequest_Filters) MarshalTo(dAtA []byte) (int, error) { } } if len(m.Memberships) > 0 { - dAtA4 := make([]byte, len(m.Memberships)*10) - var j3 int for _, num := range m.Memberships { - for num >= 1<<7 { - dAtA4[j3] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j3++ - } - dAtA4[j3] = uint8(num) - j3++ + dAtA[i] = 0x20 + i++ + i = encodeVarintControl(dAtA, i, uint64(num)) } - dAtA[i] = 0x22 - i++ - i = encodeVarintControl(dAtA, i, uint64(j3)) - i += copy(dAtA[i:], dAtA4[:j3]) } if len(m.Roles) > 0 { - dAtA6 := make([]byte, len(m.Roles)*10) - var j5 int for _, num := range m.Roles { - for num >= 1<<7 { - dAtA6[j5] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j5++ - } - dAtA6[j5] = uint8(num) - j5++ + dAtA[i] = 0x28 + i++ + i = encodeVarintControl(dAtA, i, uint64(num)) } - dAtA[i] = 0x2a - i++ - i = encodeVarintControl(dAtA, i, uint64(j5)) - i += copy(dAtA[i:], dAtA6[:j5]) } if len(m.NamePrefixes) > 0 { for _, s := range m.NamePrefixes { @@ -3720,21 +3700,21 @@ func (m *UpdateNodeRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintControl(dAtA, i, uint64(m.NodeVersion.Size())) - n7, err := m.NodeVersion.MarshalTo(dAtA[i:]) + n3, err := m.NodeVersion.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n7 + i += n3 } if m.Spec != nil { dAtA[i] = 0x1a i++ i = encodeVarintControl(dAtA, i, uint64(m.Spec.Size())) - n8, err := m.Spec.MarshalTo(dAtA[i:]) + n4, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n8 + i += n4 } return i, nil } @@ -3758,11 +3738,11 @@ func (m *UpdateNodeResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Node.Size())) - n9, err := m.Node.MarshalTo(dAtA[i:]) + n5, err := m.Node.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n9 + i += n5 } return i, nil } @@ -3862,11 +3842,11 @@ func (m *GetTaskResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Task.Size())) - n10, err := m.Task.MarshalTo(dAtA[i:]) + n6, err := m.Task.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n10 + i += n6 } return i, nil } @@ -3932,11 +3912,11 @@ func (m *ListTasksRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Filters.Size())) - n11, err := m.Filters.MarshalTo(dAtA[i:]) + n7, err := m.Filters.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n11 + i += n7 } return i, nil } @@ -4034,21 +4014,11 @@ func (m *ListTasksRequest_Filters) MarshalTo(dAtA []byte) (int, error) { } } if len(m.DesiredStates) > 0 { - dAtA13 := make([]byte, len(m.DesiredStates)*10) - var j12 int for _, num := range m.DesiredStates { - for num >= 1<<7 { - dAtA13[j12] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j12++ - } - dAtA13[j12] = uint8(num) - j12++ + dAtA[i] = 0x30 + i++ + i = encodeVarintControl(dAtA, i, uint64(num)) } - dAtA[i] = 0x32 - i++ - i = encodeVarintControl(dAtA, i, uint64(j12)) - i += copy(dAtA[i:], dAtA13[:j12]) } if len(m.NamePrefixes) > 0 { for _, s := range m.NamePrefixes { @@ -4142,11 +4112,11 @@ func (m *CreateServiceRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Spec.Size())) - n14, err := m.Spec.MarshalTo(dAtA[i:]) + n8, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n14 + i += n8 } return i, nil } @@ -4170,11 +4140,11 @@ func (m *CreateServiceResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Service.Size())) - n15, err := m.Service.MarshalTo(dAtA[i:]) + n9, err := m.Service.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n15 + i += n9 } return i, nil } @@ -4232,11 +4202,11 @@ func (m *GetServiceResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Service.Size())) - n16, err := m.Service.MarshalTo(dAtA[i:]) + n10, err := m.Service.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n16 + i += n10 } return i, nil } @@ -4266,21 +4236,21 @@ func (m *UpdateServiceRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintControl(dAtA, i, uint64(m.ServiceVersion.Size())) - n17, err := m.ServiceVersion.MarshalTo(dAtA[i:]) + n11, err := m.ServiceVersion.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n17 + i += n11 } if m.Spec != nil { dAtA[i] = 0x1a i++ i = encodeVarintControl(dAtA, i, uint64(m.Spec.Size())) - n18, err := m.Spec.MarshalTo(dAtA[i:]) + n12, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n18 + i += n12 } if m.Rollback != 0 { dAtA[i] = 0x20 @@ -4309,11 +4279,11 @@ func (m *UpdateServiceResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Service.Size())) - n19, err := m.Service.MarshalTo(dAtA[i:]) + n13, err := m.Service.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n19 + i += n13 } return i, nil } @@ -4379,11 +4349,11 @@ func (m *ListServicesRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Filters.Size())) - n20, err := m.Filters.MarshalTo(dAtA[i:]) + n14, err := m.Filters.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n20 + i += n14 } return i, nil } @@ -4532,11 +4502,11 @@ func (m *CreateNetworkRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Spec.Size())) - n21, err := m.Spec.MarshalTo(dAtA[i:]) + n15, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n21 + i += n15 } return i, nil } @@ -4560,11 +4530,11 @@ func (m *CreateNetworkResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Network.Size())) - n22, err := m.Network.MarshalTo(dAtA[i:]) + n16, err := m.Network.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n22 + i += n16 } return i, nil } @@ -4618,11 +4588,11 @@ func (m *GetNetworkResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Network.Size())) - n23, err := m.Network.MarshalTo(dAtA[i:]) + n17, err := m.Network.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n23 + i += n17 } return i, nil } @@ -4694,11 +4664,11 @@ func (m *ListNetworksRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Filters.Size())) - n24, err := m.Filters.MarshalTo(dAtA[i:]) + n18, err := m.Filters.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n24 + i += n18 } return i, nil } @@ -4856,11 +4826,11 @@ func (m *GetClusterResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Cluster.Size())) - n25, err := m.Cluster.MarshalTo(dAtA[i:]) + n19, err := m.Cluster.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n25 + i += n19 } return i, nil } @@ -4884,11 +4854,11 @@ func (m *ListClustersRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Filters.Size())) - n26, err := m.Filters.MarshalTo(dAtA[i:]) + n20, err := m.Filters.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n26 + i += n20 } return i, nil } @@ -5076,30 +5046,30 @@ func (m *UpdateClusterRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintControl(dAtA, i, uint64(m.ClusterVersion.Size())) - n27, err := m.ClusterVersion.MarshalTo(dAtA[i:]) + n21, err := m.ClusterVersion.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n27 + i += n21 } if m.Spec != nil { dAtA[i] = 0x1a i++ i = encodeVarintControl(dAtA, i, uint64(m.Spec.Size())) - n28, err := m.Spec.MarshalTo(dAtA[i:]) + n22, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n28 + i += n22 } dAtA[i] = 0x22 i++ i = encodeVarintControl(dAtA, i, uint64(m.Rotation.Size())) - n29, err := m.Rotation.MarshalTo(dAtA[i:]) + n23, err := m.Rotation.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n29 + i += n23 return i, nil } @@ -5122,11 +5092,11 @@ func (m *UpdateClusterResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Cluster.Size())) - n30, err := m.Cluster.MarshalTo(dAtA[i:]) + n24, err := m.Cluster.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n30 + i += n24 } return i, nil } @@ -5174,11 +5144,11 @@ func (m *GetSecretResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Secret.Size())) - n31, err := m.Secret.MarshalTo(dAtA[i:]) + n25, err := m.Secret.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n31 + i += n25 } return i, nil } @@ -5208,21 +5178,21 @@ func (m *UpdateSecretRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintControl(dAtA, i, uint64(m.SecretVersion.Size())) - n32, err := m.SecretVersion.MarshalTo(dAtA[i:]) + n26, err := m.SecretVersion.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n32 + i += n26 } if m.Spec != nil { dAtA[i] = 0x1a i++ i = encodeVarintControl(dAtA, i, uint64(m.Spec.Size())) - n33, err := m.Spec.MarshalTo(dAtA[i:]) + n27, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n33 + i += n27 } return i, nil } @@ -5246,11 +5216,11 @@ func (m *UpdateSecretResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Secret.Size())) - n34, err := m.Secret.MarshalTo(dAtA[i:]) + n28, err := m.Secret.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n34 + i += n28 } return i, nil } @@ -5274,11 +5244,11 @@ func (m *ListSecretsRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Filters.Size())) - n35, err := m.Filters.MarshalTo(dAtA[i:]) + n29, err := m.Filters.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n35 + i += n29 } return i, nil } @@ -5412,11 +5382,11 @@ func (m *CreateSecretRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Spec.Size())) - n36, err := m.Spec.MarshalTo(dAtA[i:]) + n30, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n36 + i += n30 } return i, nil } @@ -5440,11 +5410,11 @@ func (m *CreateSecretResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Secret.Size())) - n37, err := m.Secret.MarshalTo(dAtA[i:]) + n31, err := m.Secret.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n37 + i += n31 } return i, nil } @@ -5534,11 +5504,11 @@ func (m *GetConfigResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Config.Size())) - n38, err := m.Config.MarshalTo(dAtA[i:]) + n32, err := m.Config.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n38 + i += n32 } return i, nil } @@ -5568,21 +5538,21 @@ func (m *UpdateConfigRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintControl(dAtA, i, uint64(m.ConfigVersion.Size())) - n39, err := m.ConfigVersion.MarshalTo(dAtA[i:]) + n33, err := m.ConfigVersion.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n39 + i += n33 } if m.Spec != nil { dAtA[i] = 0x1a i++ i = encodeVarintControl(dAtA, i, uint64(m.Spec.Size())) - n40, err := m.Spec.MarshalTo(dAtA[i:]) + n34, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n40 + i += n34 } return i, nil } @@ -5606,11 +5576,11 @@ func (m *UpdateConfigResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Config.Size())) - n41, err := m.Config.MarshalTo(dAtA[i:]) + n35, err := m.Config.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n41 + i += n35 } return i, nil } @@ -5634,11 +5604,11 @@ func (m *ListConfigsRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Filters.Size())) - n42, err := m.Filters.MarshalTo(dAtA[i:]) + n36, err := m.Filters.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n42 + i += n36 } return i, nil } @@ -5772,11 +5742,11 @@ func (m *CreateConfigRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Spec.Size())) - n43, err := m.Spec.MarshalTo(dAtA[i:]) + n37, err := m.Spec.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n43 + i += n37 } return i, nil } @@ -5800,11 +5770,11 @@ func (m *CreateConfigResponse) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintControl(dAtA, i, uint64(m.Config.Size())) - n44, err := m.Config.MarshalTo(dAtA[i:]) + n38, err := m.Config.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n44 + i += n38 } return i, nil } @@ -7020,18 +6990,14 @@ func (m *ListNodesRequest_Filters) Size() (n int) { } } if len(m.Memberships) > 0 { - l = 0 for _, e := range m.Memberships { - l += sovControl(uint64(e)) + n += 1 + sovControl(uint64(e)) } - n += 1 + sovControl(uint64(l)) + l } if len(m.Roles) > 0 { - l = 0 for _, e := range m.Roles { - l += sovControl(uint64(e)) + n += 1 + sovControl(uint64(e)) } - n += 1 + sovControl(uint64(l)) + l } if len(m.NamePrefixes) > 0 { for _, s := range m.NamePrefixes { @@ -7183,11 +7149,9 @@ func (m *ListTasksRequest_Filters) Size() (n int) { } } if len(m.DesiredStates) > 0 { - l = 0 for _, e := range m.DesiredStates { - l += sovControl(uint64(e)) + n += 1 + sovControl(uint64(e)) } - n += 1 + sovControl(uint64(l)) + l } if len(m.NamePrefixes) > 0 { for _, s := range m.NamePrefixes { @@ -9123,7 +9087,24 @@ func (m *ListNodesRequest_Filters) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 4: - if wireType == 2 { + if wireType == 0 { + var v NodeSpec_Membership + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (NodeSpec_Membership(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Memberships = append(m.Memberships, v) + } else if wireType == 2 { var packedLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { @@ -9164,8 +9145,12 @@ func (m *ListNodesRequest_Filters) Unmarshal(dAtA []byte) error { } m.Memberships = append(m.Memberships, v) } - } else if wireType == 0 { - var v NodeSpec_Membership + } else { + return fmt.Errorf("proto: wrong wireType = %d for field Memberships", wireType) + } + case 5: + if wireType == 0 { + var v NodeRole for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowControl @@ -9175,17 +9160,13 @@ func (m *ListNodesRequest_Filters) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - v |= (NodeSpec_Membership(b) & 0x7F) << shift + v |= (NodeRole(b) & 0x7F) << shift if b < 0x80 { break } } - m.Memberships = append(m.Memberships, v) - } else { - return fmt.Errorf("proto: wrong wireType = %d for field Memberships", wireType) - } - case 5: - if wireType == 2 { + m.Roles = append(m.Roles, v) + } else if wireType == 2 { var packedLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { @@ -9226,23 +9207,6 @@ func (m *ListNodesRequest_Filters) Unmarshal(dAtA []byte) error { } m.Roles = append(m.Roles, v) } - } else if wireType == 0 { - var v NodeRole - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= (NodeRole(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.Roles = append(m.Roles, v) } else { return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) } @@ -10390,7 +10354,24 @@ func (m *ListTasksRequest_Filters) Unmarshal(dAtA []byte) error { m.NodeIDs = append(m.NodeIDs, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 6: - if wireType == 2 { + if wireType == 0 { + var v TaskState + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowControl + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (TaskState(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.DesiredStates = append(m.DesiredStates, v) + } else if wireType == 2 { var packedLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { @@ -10431,23 +10412,6 @@ func (m *ListTasksRequest_Filters) Unmarshal(dAtA []byte) error { } m.DesiredStates = append(m.DesiredStates, v) } - } else if wireType == 0 { - var v TaskState - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowControl - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= (TaskState(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.DesiredStates = append(m.DesiredStates, v) } else { return fmt.Errorf("proto: wrong wireType = %d for field DesiredStates", wireType) } @@ -15992,136 +15956,137 @@ var ( func init() { proto.RegisterFile("control.proto", fileDescriptorControl) } var fileDescriptorControl = []byte{ - // 2096 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4b, 0x6f, 0x1b, 0xc9, - 0x11, 0x36, 0x1f, 0x12, 0xa9, 0xa2, 0x44, 0x49, 0x2d, 0x39, 0x21, 0x68, 0x47, 0x32, 0xc6, 0xb1, - 0x4d, 0x07, 0x0e, 0x95, 0xa5, 0xb3, 0x88, 0xb3, 0x41, 0x1e, 0x2b, 0xd1, 0xeb, 0x70, 0xb5, 0x2b, - 0x1b, 0x23, 0x6b, 0x91, 0x1b, 0x41, 0x91, 0x2d, 0x65, 0x4c, 0x8a, 0xc3, 0xcc, 0x0c, 0xb5, 0x2b, - 0xe4, 0x92, 0x0d, 0x36, 0x3f, 0x21, 0x40, 0xae, 0xb9, 0xe6, 0x90, 0x43, 0x4e, 0xfb, 0x13, 0x8c, - 0x9c, 0x72, 0x0c, 0x10, 0x40, 0xc8, 0x12, 0x08, 0x90, 0x53, 0x7e, 0x43, 0xd0, 0xdd, 0xd5, 0xf3, - 0x62, 0xcf, 0x0c, 0x5f, 0x80, 0x7c, 0x12, 0xa7, 0xe7, 0xab, 0xae, 0xea, 0xae, 0xaf, 0xbf, 0xe9, - 0xae, 0x16, 0xac, 0xb5, 0xcd, 0xbe, 0x63, 0x99, 0xbd, 0xea, 0xc0, 0x32, 0x1d, 0x93, 0x90, 0x8e, - 0xd9, 0xee, 0x52, 0xab, 0x6a, 0x7f, 0xde, 0xb2, 0x2e, 0xba, 0x86, 0x53, 0xbd, 0x7c, 0xaf, 0x5c, - 0xb0, 0x07, 0xb4, 0x6d, 0x0b, 0x40, 0x79, 0xcd, 0x3c, 0x7d, 0x43, 0xdb, 0x8e, 0x7c, 0x2c, 0x38, - 0x57, 0x03, 0x2a, 0x1f, 0xb6, 0xcf, 0xcd, 0x73, 0x93, 0xff, 0xdc, 0x63, 0xbf, 0xb0, 0x75, 0x6b, - 0xd0, 0x1b, 0x9e, 0x1b, 0xfd, 0x3d, 0xf1, 0x47, 0x34, 0x6a, 0xef, 0x43, 0xf1, 0x05, 0x75, 0x8e, - 0xcc, 0x0e, 0xd5, 0xe9, 0x6f, 0x86, 0xd4, 0x76, 0xc8, 0x7d, 0xc8, 0xf5, 0xcd, 0x0e, 0x6d, 0x1a, - 0x9d, 0x52, 0xea, 0x5e, 0xaa, 0xb2, 0xb2, 0x0f, 0xa3, 0xeb, 0xdd, 0x65, 0x86, 0x68, 0xd4, 0xf5, - 0x65, 0xf6, 0xaa, 0xd1, 0xd1, 0x7e, 0x0e, 0xeb, 0xae, 0x99, 0x3d, 0x30, 0xfb, 0x36, 0x25, 0x4f, - 0x20, 0xcb, 0x5e, 0x72, 0xa3, 0x42, 0xad, 0x54, 0x1d, 0x1f, 0x40, 0x95, 0xe3, 0x39, 0x4a, 0xbb, - 0xce, 0xc0, 0xc6, 0x27, 0x86, 0xcd, 0xbb, 0xb0, 0xa5, 0xeb, 0x8f, 0x20, 0x77, 0x66, 0xf4, 0x1c, - 0x6a, 0xd9, 0xd8, 0xcb, 0x13, 0x55, 0x2f, 0x61, 0xb3, 0xea, 0x47, 0xc2, 0x46, 0x97, 0xc6, 0xe5, - 0x2f, 0x33, 0x90, 0xc3, 0x46, 0xb2, 0x0d, 0x4b, 0xfd, 0xd6, 0x05, 0x65, 0x3d, 0x66, 0x2a, 0x2b, - 0xba, 0x78, 0x20, 0x7b, 0x50, 0x30, 0x3a, 0xcd, 0x81, 0x45, 0xcf, 0x8c, 0x2f, 0xa8, 0x5d, 0x4a, - 0xb3, 0x77, 0xfb, 0xc5, 0xd1, 0xf5, 0x2e, 0x34, 0xea, 0xaf, 0xb0, 0x55, 0x07, 0xa3, 0x23, 0x7f, - 0x93, 0x57, 0xb0, 0xdc, 0x6b, 0x9d, 0xd2, 0x9e, 0x5d, 0xca, 0xdc, 0xcb, 0x54, 0x0a, 0xb5, 0x67, - 0xd3, 0x44, 0x56, 0xfd, 0x84, 0x9b, 0x3e, 0xef, 0x3b, 0xd6, 0x95, 0x8e, 0xfd, 0x90, 0x06, 0x14, - 0x2e, 0xe8, 0xc5, 0x29, 0xb5, 0xec, 0x5f, 0x1b, 0x03, 0xbb, 0x94, 0xbd, 0x97, 0xa9, 0x14, 0x6b, - 0x8f, 0xa2, 0xa6, 0xed, 0x78, 0x40, 0xdb, 0xd5, 0x4f, 0x5d, 0xbc, 0xee, 0xb7, 0x25, 0x35, 0x58, - 0xb2, 0xcc, 0x1e, 0xb5, 0x4b, 0x4b, 0xbc, 0x93, 0xbb, 0x91, 0x73, 0x6f, 0xf6, 0xa8, 0x2e, 0xa0, - 0xe4, 0x3e, 0xac, 0xb1, 0xa9, 0xf0, 0xe6, 0x60, 0x99, 0xcf, 0xcf, 0x2a, 0x6b, 0x94, 0xa3, 0x2e, - 0xff, 0x18, 0x0a, 0xbe, 0xd0, 0xc9, 0x06, 0x64, 0xba, 0xf4, 0x4a, 0xd0, 0x42, 0x67, 0x3f, 0xd9, - 0xec, 0x5e, 0xb6, 0x7a, 0x43, 0x5a, 0x4a, 0xf3, 0x36, 0xf1, 0xf0, 0x41, 0xfa, 0x59, 0x4a, 0x3b, - 0x80, 0x4d, 0xdf, 0x74, 0x20, 0x47, 0xaa, 0xb0, 0xc4, 0xb2, 0x2f, 0x92, 0x11, 0x47, 0x12, 0x01, - 0xd3, 0xfe, 0x92, 0x82, 0xcd, 0x93, 0x41, 0xa7, 0xe5, 0xd0, 0x69, 0x19, 0x4a, 0x7e, 0x06, 0xab, - 0x1c, 0x74, 0x49, 0x2d, 0xdb, 0x30, 0xfb, 0x3c, 0xc0, 0x42, 0xed, 0x8e, 0xca, 0xe3, 0x67, 0x02, - 0xa2, 0x17, 0x98, 0x01, 0x3e, 0x90, 0x1f, 0x40, 0x96, 0x2d, 0xb7, 0x52, 0x86, 0xdb, 0xdd, 0x8d, - 0xcb, 0x8b, 0xce, 0x91, 0xda, 0x3e, 0x10, 0x7f, 0xac, 0x33, 0x2d, 0x8b, 0x23, 0xd8, 0xd4, 0xe9, - 0x85, 0x79, 0x39, 0xfd, 0x78, 0xb7, 0x61, 0xe9, 0xcc, 0xb4, 0xda, 0x22, 0x13, 0x79, 0x5d, 0x3c, - 0x68, 0xdb, 0x40, 0xfc, 0xfd, 0x89, 0x98, 0x70, 0xd1, 0xbf, 0x6e, 0xd9, 0x5d, 0x9f, 0x0b, 0xa7, - 0x65, 0x77, 0x43, 0x2e, 0x18, 0x82, 0xb9, 0x60, 0xaf, 0xdc, 0x45, 0x2f, 0xcc, 0xbc, 0xd1, 0xb1, - 0x97, 0x71, 0xa3, 0xe3, 0x78, 0x8e, 0xd2, 0x9e, 0xc9, 0xd1, 0x4d, 0xed, 0xda, 0x1d, 0x87, 0xdf, - 0xbb, 0xf6, 0x75, 0x56, 0x88, 0x08, 0x6b, 0x9c, 0x41, 0x44, 0xfc, 0x66, 0xe3, 0x22, 0xf2, 0xaf, - 0x1b, 0x14, 0x11, 0x55, 0x64, 0x4a, 0x11, 0xd9, 0x83, 0x82, 0x4d, 0xad, 0x4b, 0xa3, 0xcd, 0xd8, - 0x21, 0x44, 0x04, 0x43, 0x38, 0x16, 0xcd, 0x8d, 0xba, 0xad, 0x03, 0x42, 0x1a, 0x1d, 0x9b, 0x3c, - 0x84, 0x3c, 0x72, 0x49, 0xa8, 0xc5, 0xca, 0x7e, 0x61, 0x74, 0xbd, 0x9b, 0x13, 0x64, 0xb2, 0xf5, - 0x9c, 0x60, 0x93, 0x4d, 0xea, 0x50, 0xec, 0x50, 0xdb, 0xb0, 0x68, 0xa7, 0x69, 0x3b, 0x2d, 0x07, - 0xf5, 0xa1, 0x58, 0xfb, 0x4e, 0x54, 0x8a, 0x8f, 0x19, 0x4a, 0x5f, 0x43, 0x23, 0xfe, 0xa4, 0x10, - 0x99, 0xdc, 0xb8, 0xc8, 0x90, 0xbb, 0x00, 0xc3, 0x41, 0xd3, 0x31, 0x9b, 0x6c, 0xed, 0x94, 0xf2, - 0x9c, 0xbe, 0xf9, 0xe1, 0xe0, 0xb5, 0x59, 0x6f, 0x39, 0x94, 0x94, 0x21, 0x6f, 0x0d, 0xfb, 0x8e, - 0xc1, 0x66, 0x7f, 0x85, 0x5b, 0xbb, 0xcf, 0x0b, 0x90, 0x27, 0x9c, 0x68, 0x4f, 0x9e, 0x18, 0xdf, - 0x62, 0xe5, 0x89, 0x13, 0x50, 0xc0, 0xb4, 0x43, 0xd8, 0x3e, 0xb0, 0x68, 0xcb, 0xa1, 0x38, 0xd9, - 0x92, 0x82, 0x4f, 0x51, 0x3b, 0x04, 0xff, 0x76, 0x55, 0xdd, 0xa0, 0x85, 0x4f, 0x3e, 0x8e, 0xe0, - 0x76, 0xa8, 0x33, 0x8c, 0xea, 0x7d, 0xc8, 0x61, 0x02, 0xb1, 0xc3, 0x3b, 0x31, 0x1d, 0xea, 0x12, - 0xab, 0xbd, 0x81, 0xcd, 0x17, 0xd4, 0x09, 0x45, 0xf6, 0x04, 0xc0, 0xe3, 0x0b, 0xae, 0xb7, 0xb5, - 0xd1, 0xf5, 0xee, 0x8a, 0x4b, 0x17, 0x7d, 0xc5, 0x65, 0x0b, 0x79, 0x04, 0xeb, 0x46, 0xdf, 0xa6, - 0x96, 0xd3, 0xec, 0xd0, 0xb3, 0xd6, 0xb0, 0xe7, 0xd8, 0xa8, 0x2e, 0x45, 0xd1, 0x5c, 0xc7, 0x56, - 0xed, 0x10, 0x88, 0xdf, 0xd7, 0x7c, 0x81, 0xff, 0x2d, 0x0d, 0xdb, 0x42, 0x48, 0xe7, 0x0a, 0xbe, - 0x0e, 0xeb, 0x12, 0x3d, 0xc5, 0x37, 0xa0, 0x88, 0x36, 0xf2, 0x33, 0xf0, 0x34, 0xf0, 0x19, 0x98, - 0x2c, 0x95, 0xe4, 0x53, 0xc8, 0x5b, 0x66, 0xaf, 0x77, 0xda, 0x6a, 0x77, 0x4b, 0xd9, 0x7b, 0xa9, - 0x4a, 0xb1, 0xf6, 0x9e, 0xca, 0x50, 0x35, 0xc8, 0xaa, 0x8e, 0x86, 0xba, 0xdb, 0x85, 0xa6, 0x41, - 0x5e, 0xb6, 0x92, 0x3c, 0x64, 0x8f, 0x5e, 0x1e, 0x3d, 0xdf, 0xb8, 0x45, 0x56, 0x21, 0xff, 0x4a, - 0x7f, 0xfe, 0x59, 0xe3, 0xe5, 0xc9, 0xf1, 0x46, 0x8a, 0xb1, 0x27, 0xd4, 0xdd, 0x7c, 0x49, 0xa8, - 0xc3, 0xb6, 0x10, 0xdc, 0x79, 0x72, 0xa0, 0x7d, 0x1b, 0x6e, 0x87, 0x7a, 0x41, 0xe5, 0xfe, 0x2a, - 0x03, 0x5b, 0x6c, 0xfd, 0x61, 0xbb, 0x2b, 0xde, 0x8d, 0xb0, 0x78, 0xef, 0x45, 0x49, 0x64, 0xc8, - 0x72, 0x5c, 0xbf, 0xff, 0x9c, 0x5e, 0xb8, 0x7e, 0x1f, 0x87, 0xf4, 0xfb, 0x27, 0x53, 0x06, 0xa7, - 0x94, 0xf0, 0x31, 0x8d, 0xcc, 0x2a, 0x34, 0xd2, 0xaf, 0x82, 0x4b, 0x8b, 0x53, 0xc1, 0x97, 0xb0, - 0x1d, 0x0c, 0x17, 0x49, 0xf3, 0x23, 0xc8, 0x63, 0x12, 0xa5, 0x16, 0xc6, 0xb2, 0xc6, 0x05, 0x7b, - 0x8a, 0x78, 0x44, 0x9d, 0xcf, 0x4d, 0xab, 0x3b, 0x85, 0x22, 0xa2, 0x85, 0x4a, 0x11, 0xdd, 0xce, - 0x3c, 0x4e, 0xf7, 0x45, 0x53, 0x1c, 0xa7, 0xa5, 0x95, 0xc4, 0x6a, 0x27, 0x5c, 0x11, 0x43, 0x91, - 0x11, 0xc8, 0xb2, 0x99, 0xc6, 0xf9, 0xe2, 0xbf, 0x19, 0xc9, 0xd1, 0x86, 0x91, 0x3c, 0xed, 0x91, - 0x1c, 0x6d, 0x19, 0xc9, 0x11, 0xd0, 0xe8, 0xa0, 0xf8, 0x2d, 0x28, 0xc6, 0x5f, 0xc9, 0x75, 0xb7, - 0xf0, 0x30, 0xdd, 0xb5, 0x18, 0x8a, 0x54, 0xfb, 0x6f, 0x5a, 0xac, 0x45, 0x6c, 0x9f, 0x61, 0x2d, - 0x86, 0x2c, 0xc7, 0xd7, 0xe2, 0x1f, 0x6e, 0x70, 0x2d, 0x46, 0x04, 0x37, 0xf3, 0x5a, 0x5c, 0xc0, - 0x7a, 0xf3, 0x42, 0xf2, 0xd6, 0x1b, 0x26, 0x2a, 0x76, 0xbd, 0xc9, 0xcc, 0xb9, 0x60, 0xed, 0x43, - 0x4e, 0xe9, 0x83, 0xde, 0xd0, 0x76, 0xa8, 0xe5, 0xd3, 0xe8, 0xb6, 0x68, 0x09, 0x69, 0x34, 0xe2, - 0x18, 0x2f, 0x10, 0xe0, 0xd2, 0xd7, 0xed, 0xc2, 0xa3, 0x2f, 0x42, 0xe2, 0xe8, 0x2b, 0xad, 0x24, - 0xd6, 0xe5, 0x12, 0xbe, 0x98, 0x81, 0x4b, 0x21, 0xcb, 0x77, 0x8b, 0x4b, 0x11, 0xc1, 0xdd, 0x24, - 0x97, 0xbc, 0x90, 0x3c, 0x2e, 0x61, 0x36, 0x62, 0xb9, 0x24, 0x53, 0xe7, 0x82, 0xb5, 0x3f, 0xa6, - 0xa0, 0x70, 0x48, 0xaf, 0x74, 0xd3, 0x69, 0x39, 0x6c, 0xeb, 0xf3, 0x3d, 0xd8, 0x64, 0x24, 0xa3, - 0x56, 0xf3, 0x8d, 0x69, 0xf4, 0x9b, 0x8e, 0xd9, 0xa5, 0x7d, 0x1e, 0x5a, 0x5e, 0x5f, 0x17, 0x2f, - 0x3e, 0x36, 0x8d, 0xfe, 0x6b, 0xd6, 0x4c, 0x9e, 0x00, 0xb9, 0x68, 0xf5, 0x5b, 0xe7, 0x41, 0xb0, - 0xd8, 0x2c, 0x6e, 0xe0, 0x1b, 0x25, 0x7a, 0xd8, 0xef, 0x99, 0xed, 0x6e, 0x93, 0x8d, 0x3a, 0x13, - 0x40, 0x9f, 0xf0, 0x17, 0x87, 0xf4, 0x4a, 0xfb, 0xbd, 0xbb, 0x1f, 0x9c, 0x87, 0xe7, 0x6c, 0x3f, - 0x28, 0xd1, 0xd3, 0xec, 0x07, 0xd1, 0x66, 0x8a, 0xfd, 0x20, 0x7a, 0xf7, 0xed, 0x07, 0x3f, 0x64, - 0xfb, 0x41, 0x31, 0xab, 0x7c, 0x3f, 0x18, 0x61, 0xe8, 0x9b, 0xfc, 0xfd, 0xec, 0xdb, 0xeb, 0xdd, - 0x5b, 0xba, 0x6b, 0xe6, 0xed, 0xef, 0x16, 0xb4, 0x50, 0x7f, 0x0a, 0x1b, 0x7c, 0xc7, 0xde, 0xb6, - 0xa8, 0x23, 0xe7, 0xf3, 0x31, 0xac, 0xd8, 0xbc, 0xc1, 0x9b, 0xce, 0xd5, 0xd1, 0xf5, 0x6e, 0x5e, - 0xa0, 0x1a, 0x75, 0xf6, 0x9d, 0xe7, 0xbf, 0x3a, 0xda, 0x0b, 0x3c, 0x5c, 0x08, 0x73, 0x0c, 0xa5, - 0x06, 0xcb, 0x02, 0x80, 0x91, 0x94, 0xd5, 0x7b, 0x06, 0x6e, 0x83, 0x48, 0xed, 0xeb, 0x14, 0x6c, - 0xc9, 0x8d, 0xeb, 0x6c, 0xb1, 0x90, 0x7d, 0x28, 0x22, 0x74, 0x8a, 0xbc, 0xae, 0x09, 0x13, 0x99, - 0xd6, 0x5a, 0x20, 0xad, 0x3b, 0xd1, 0x81, 0xfb, 0xb6, 0x27, 0x1f, 0x7b, 0xc7, 0x94, 0xb9, 0xa7, - 0xe1, 0x3f, 0x69, 0x20, 0x62, 0x27, 0xc6, 0x1e, 0x5d, 0xd9, 0xfc, 0x65, 0x58, 0x36, 0xab, 0xd1, - 0x3b, 0x4e, 0xbf, 0xe1, 0xb8, 0x6a, 0x7e, 0xb5, 0x78, 0xd5, 0xd4, 0x43, 0xaa, 0xf9, 0xc1, 0x74, - 0xb1, 0xdd, 0x88, 0x68, 0x1e, 0xca, 0x63, 0x07, 0x46, 0x84, 0x29, 0xfb, 0x21, 0x3b, 0x24, 0xf1, - 0x26, 0x94, 0xcc, 0xb8, 0x9c, 0x49, 0xa8, 0xd6, 0x80, 0x2d, 0x79, 0x62, 0xf7, 0x53, 0xb7, 0x16, - 0xd8, 0xeb, 0x4e, 0xcc, 0xa5, 0x60, 0x57, 0x73, 0x70, 0xe9, 0x17, 0xb0, 0x25, 0x0f, 0x5d, 0x33, - 0xae, 0xee, 0x6f, 0x79, 0x87, 0x3f, 0x7f, 0x34, 0x28, 0x1a, 0x07, 0x66, 0xff, 0xcc, 0x38, 0xf7, - 0x75, 0xdb, 0xe6, 0x0d, 0xa1, 0x6e, 0x05, 0x8a, 0x75, 0x2b, 0x5e, 0xbb, 0xa2, 0x21, 0xcd, 0xbd, - 0x11, 0x0a, 0x40, 0xdc, 0x08, 0xd1, 0x06, 0x91, 0x3e, 0xd1, 0x98, 0x35, 0x16, 0x26, 0x1a, 0x08, - 0x9d, 0x46, 0x34, 0x84, 0xc9, 0x14, 0xa2, 0x21, 0x3c, 0xab, 0x44, 0x63, 0x01, 0xd3, 0x20, 0x45, - 0x43, 0x34, 0xcf, 0x20, 0x1a, 0x41, 0xc3, 0x77, 0x4b, 0x34, 0xd4, 0xb1, 0xdd, 0xa4, 0x68, 0xb8, - 0x11, 0x79, 0xa2, 0x21, 0x12, 0x11, 0x2b, 0x1a, 0x98, 0x33, 0x09, 0xf5, 0x44, 0x23, 0x48, 0xdd, - 0x09, 0x44, 0x43, 0xc5, 0xa5, 0x60, 0x57, 0x73, 0x70, 0xc9, 0x15, 0x8d, 0x99, 0x57, 0xb7, 0x2b, - 0x1a, 0xc1, 0x68, 0x6a, 0x5f, 0xde, 0x81, 0xdc, 0x81, 0xb8, 0xdb, 0x24, 0x06, 0xe4, 0xf0, 0xda, - 0x90, 0x68, 0xaa, 0xa0, 0x82, 0x57, 0x91, 0xe5, 0xfb, 0xb1, 0x18, 0x14, 0xa5, 0xdb, 0x7f, 0xff, - 0xeb, 0xff, 0xfe, 0x94, 0x5e, 0x87, 0x35, 0x0e, 0xfa, 0x3e, 0x6e, 0x1f, 0x89, 0x09, 0x2b, 0xee, - 0xfd, 0x13, 0xf9, 0xee, 0x24, 0xb7, 0x75, 0xe5, 0x07, 0x09, 0xa8, 0x78, 0x87, 0x16, 0x80, 0x77, - 0xfd, 0x43, 0x1e, 0x44, 0x17, 0xfc, 0xfc, 0x23, 0x7c, 0x98, 0x04, 0x4b, 0xf4, 0xe9, 0x5d, 0xef, - 0xa8, 0x7d, 0x8e, 0x5d, 0x27, 0xa9, 0x7d, 0x2a, 0x6e, 0x89, 0x22, 0x7c, 0x8a, 0x1c, 0xbe, 0x6e, - 0xd9, 0xdd, 0xc8, 0x1c, 0xfa, 0xae, 0x77, 0x22, 0x73, 0x18, 0xb8, 0xc8, 0x89, 0xcf, 0x21, 0x2f, - 0xd2, 0x47, 0xe7, 0xd0, 0x7f, 0x59, 0x12, 0x9d, 0xc3, 0x40, 0xa5, 0x3f, 0x71, 0x3e, 0xf9, 0xf0, - 0x62, 0xe6, 0xd3, 0x3f, 0xc2, 0x87, 0x49, 0xb0, 0x44, 0x9f, 0x5e, 0xed, 0x5c, 0xed, 0x73, 0xac, - 0x8e, 0xaf, 0xf6, 0x39, 0x5e, 0x82, 0x8f, 0xf2, 0xf9, 0x05, 0xac, 0xfa, 0xeb, 0x7e, 0xe4, 0xd1, - 0x84, 0x85, 0xcc, 0x72, 0x25, 0x19, 0x18, 0xef, 0xf9, 0xb7, 0xb0, 0x16, 0xb8, 0xe5, 0x20, 0xca, - 0x1e, 0x55, 0xb7, 0x2a, 0xe5, 0xc7, 0x13, 0x20, 0x13, 0x9d, 0x07, 0x8a, 0xe4, 0x6a, 0xe7, 0xaa, - 0xb2, 0xbc, 0xda, 0xb9, 0xb2, 0xe2, 0x1e, 0xe3, 0x3c, 0x50, 0x0b, 0x57, 0x3b, 0x57, 0x15, 0xdd, - 0xd5, 0xce, 0xd5, 0x85, 0xf5, 0x58, 0x92, 0x61, 0xfd, 0x28, 0x92, 0x64, 0xc1, 0x9a, 0x63, 0x24, - 0xc9, 0xc2, 0x05, 0xc4, 0x78, 0x92, 0xc9, 0x62, 0x57, 0x34, 0xc9, 0x42, 0x15, 0xba, 0x68, 0x92, - 0x85, 0xeb, 0x66, 0x89, 0x24, 0x93, 0x03, 0x8e, 0x21, 0x59, 0x68, 0xcc, 0x8f, 0x27, 0x40, 0x4e, - 0x98, 0xe7, 0x58, 0xe7, 0xaa, 0x22, 0x6f, 0x5c, 0x9e, 0x27, 0x74, 0x2e, 0xf2, 0x8c, 0xa7, 0xfd, - 0xc8, 0x3c, 0x07, 0xeb, 0x28, 0x91, 0x79, 0x0e, 0x95, 0x1a, 0x12, 0xf2, 0x2c, 0x0b, 0x51, 0xd1, - 0x79, 0x0e, 0x55, 0xcf, 0xa2, 0xf3, 0x1c, 0xae, 0x69, 0x25, 0xae, 0x67, 0x39, 0xe0, 0x98, 0xf5, - 0x1c, 0x1a, 0xf3, 0xe3, 0x09, 0x90, 0x89, 0x1f, 0x27, 0xb7, 0x04, 0xa2, 0xfe, 0x38, 0x85, 0x0b, - 0x2c, 0xe5, 0x07, 0x09, 0xa8, 0xc4, 0x79, 0xf6, 0xd7, 0x1b, 0xd4, 0xf3, 0xac, 0xa8, 0xa5, 0x94, - 0x2b, 0xc9, 0xc0, 0x78, 0xcf, 0x43, 0x28, 0xf8, 0x4e, 0xcd, 0xe4, 0xe1, 0x64, 0x07, 0xfd, 0xf2, - 0xa3, 0x44, 0x5c, 0xe2, 0x80, 0xfd, 0x87, 0x62, 0xf5, 0x80, 0x15, 0x27, 0xf0, 0x72, 0x25, 0x19, - 0x98, 0xe8, 0xd9, 0x7f, 0x00, 0x56, 0x7b, 0x56, 0x1c, 0xb2, 0xcb, 0x95, 0x64, 0xe0, 0x24, 0xac, - 0x12, 0x5b, 0xe8, 0x48, 0x56, 0x05, 0xf6, 0xe8, 0x91, 0xac, 0x0a, 0xee, 0xc3, 0x13, 0x59, 0x85, - 0x3e, 0x63, 0x58, 0x15, 0x74, 0x5b, 0x49, 0x06, 0x4e, 0xc4, 0x2a, 0x3c, 0x56, 0x45, 0xb3, 0x2a, - 0x78, 0x12, 0x8c, 0x66, 0x55, 0xe8, 0x7c, 0x96, 0xc8, 0xaa, 0xb8, 0x01, 0x2b, 0x8e, 0x68, 0x71, - 0xac, 0x9a, 0x78, 0xaa, 0xfd, 0x27, 0xa4, 0x38, 0x56, 0x4d, 0xe0, 0x59, 0x75, 0xd8, 0x8a, 0xf0, - 0xbc, 0x5f, 0x7a, 0xfb, 0xcd, 0xce, 0xad, 0x7f, 0x7e, 0xb3, 0x73, 0xeb, 0x77, 0xa3, 0x9d, 0xd4, - 0xdb, 0xd1, 0x4e, 0xea, 0x1f, 0xa3, 0x9d, 0xd4, 0xbf, 0x47, 0x3b, 0xa9, 0xd3, 0x65, 0xfe, 0x6f, - 0xa0, 0x4f, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x16, 0x80, 0xb3, 0xa3, 0x7f, 0x2a, 0x00, 0x00, + // 2106 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcd, 0x73, 0x1b, 0x49, + 0x15, 0xb7, 0x3e, 0x6c, 0xc9, 0x4f, 0xb6, 0x6c, 0xb7, 0x1d, 0x50, 0x29, 0xc1, 0x4e, 0x4d, 0x48, + 0xa2, 0x50, 0x41, 0x66, 0x15, 0x16, 0xc2, 0x52, 0x7c, 0xac, 0xed, 0x6c, 0x56, 0xeb, 0x8d, 0x93, + 0x1a, 0xc7, 0x5b, 0xdc, 0x54, 0xb2, 0xd4, 0x36, 0x13, 0xc9, 0x1a, 0x31, 0x33, 0xf2, 0xae, 0x8b, + 0x0b, 0x50, 0xcb, 0x81, 0x3f, 0x80, 0x2a, 0xae, 0x5c, 0x39, 0x70, 0xe0, 0xc4, 0x81, 0x3f, 0x20, + 0xc5, 0x89, 0x23, 0x27, 0xc3, 0xaa, 0x0a, 0x8a, 0x13, 0x7f, 0xc3, 0x56, 0x77, 0xbf, 0x9e, 0x2f, + 0xf5, 0xcc, 0xe8, 0xab, 0xca, 0x7b, 0xb2, 0xa6, 0xe7, 0xf7, 0xfa, 0xbd, 0xee, 0xf7, 0xeb, 0xdf, + 0x74, 0xbf, 0x36, 0xac, 0xb6, 0xcc, 0x9e, 0x63, 0x99, 0xdd, 0x6a, 0xdf, 0x32, 0x1d, 0x93, 0x90, + 0xb6, 0xd9, 0xea, 0x50, 0xab, 0x6a, 0x7f, 0xda, 0xb4, 0x2e, 0x3a, 0x86, 0x53, 0xbd, 0x7c, 0xa7, + 0x5c, 0xb0, 0xfb, 0xb4, 0x65, 0x0b, 0x40, 0x79, 0xd5, 0x3c, 0x7d, 0x43, 0x5b, 0x8e, 0x7c, 0x2c, + 0x38, 0x57, 0x7d, 0x2a, 0x1f, 0xb6, 0xce, 0xcd, 0x73, 0x93, 0xff, 0xdc, 0x65, 0xbf, 0xb0, 0x75, + 0xb3, 0xdf, 0x1d, 0x9c, 0x1b, 0xbd, 0x5d, 0xf1, 0x47, 0x34, 0x6a, 0xef, 0x42, 0xf1, 0x39, 0x75, + 0x8e, 0xcc, 0x36, 0xd5, 0xe9, 0x2f, 0x06, 0xd4, 0x76, 0xc8, 0x3d, 0xc8, 0xf5, 0xcc, 0x36, 0x6d, + 0x18, 0xed, 0x52, 0xea, 0x6e, 0xaa, 0xb2, 0xbc, 0x07, 0xc3, 0xeb, 0x9d, 0x25, 0x86, 0xa8, 0x1f, + 0xe8, 0x4b, 0xec, 0x55, 0xbd, 0xad, 0xfd, 0x04, 0xd6, 0x5c, 0x33, 0xbb, 0x6f, 0xf6, 0x6c, 0x4a, + 0x1e, 0x43, 0x96, 0xbd, 0xe4, 0x46, 0x85, 0x5a, 0xa9, 0x3a, 0x3a, 0x80, 0x2a, 0xc7, 0x73, 0x94, + 0xf6, 0xdf, 0x0c, 0xac, 0x7f, 0x6c, 0xd8, 0xbc, 0x0b, 0x5b, 0xba, 0xfe, 0x00, 0x72, 0x67, 0x46, + 0xd7, 0xa1, 0x96, 0x8d, 0xbd, 0x3c, 0x56, 0xf5, 0x12, 0x36, 0xab, 0x7e, 0x20, 0x6c, 0x74, 0x69, + 0x5c, 0xfe, 0x5d, 0x06, 0x72, 0xd8, 0x48, 0xb6, 0x60, 0xb1, 0xd7, 0xbc, 0xa0, 0xac, 0xc7, 0x4c, + 0x65, 0x59, 0x17, 0x0f, 0x64, 0x17, 0x0a, 0x46, 0xbb, 0xd1, 0xb7, 0xe8, 0x99, 0xf1, 0x19, 0xb5, + 0x4b, 0x69, 0xf6, 0x6e, 0xaf, 0x38, 0xbc, 0xde, 0x81, 0xfa, 0xc1, 0x2b, 0x6c, 0xd5, 0xc1, 0x68, + 0xcb, 0xdf, 0xe4, 0x15, 0x2c, 0x75, 0x9b, 0xa7, 0xb4, 0x6b, 0x97, 0x32, 0x77, 0x33, 0x95, 0x42, + 0xed, 0xe9, 0x24, 0x91, 0x55, 0x3f, 0xe6, 0xa6, 0xcf, 0x7a, 0x8e, 0x75, 0xa5, 0x63, 0x3f, 0xe4, + 0x05, 0x14, 0x2e, 0xe8, 0xc5, 0x29, 0xb5, 0xec, 0x9f, 0x1b, 0x7d, 0xbb, 0x94, 0xbd, 0x9b, 0xa9, + 0x14, 0x6b, 0x0f, 0xa3, 0xa6, 0xed, 0xb8, 0x4f, 0x5b, 0xd5, 0x17, 0x2e, 0x7e, 0x2f, 0xbd, 0xbe, + 0xa0, 0xfb, 0xed, 0xc9, 0xf7, 0x60, 0xd1, 0x32, 0xbb, 0xd4, 0x2e, 0x2d, 0xf2, 0x8e, 0xee, 0x44, + 0xce, 0xbf, 0xd9, 0xa5, 0xdc, 0x5a, 0xc0, 0xc9, 0x3d, 0x58, 0x65, 0x53, 0xe2, 0xcd, 0xc5, 0x12, + 0x9f, 0xa7, 0x15, 0xd6, 0x28, 0x47, 0x5f, 0xfe, 0x01, 0x14, 0x7c, 0x43, 0x20, 0xeb, 0x90, 0xe9, + 0xd0, 0x2b, 0x41, 0x0f, 0x9d, 0xfd, 0x64, 0xb3, 0x7c, 0xd9, 0xec, 0x0e, 0x68, 0x29, 0xcd, 0xdb, + 0xc4, 0xc3, 0x7b, 0xe9, 0xa7, 0x29, 0x6d, 0x1f, 0x36, 0x7c, 0xd3, 0x82, 0x5c, 0xa9, 0xc2, 0x22, + 0x63, 0x81, 0x48, 0x4a, 0x1c, 0x59, 0x04, 0x4c, 0xfb, 0x53, 0x0a, 0x36, 0x4e, 0xfa, 0xed, 0xa6, + 0x43, 0x27, 0x65, 0x2a, 0xf9, 0x31, 0xac, 0x70, 0xd0, 0x25, 0xb5, 0x6c, 0xc3, 0xec, 0xf1, 0x00, + 0x0b, 0xb5, 0xdb, 0x2a, 0x8f, 0x9f, 0x08, 0x88, 0x5e, 0x60, 0x06, 0xf8, 0x40, 0xbe, 0x03, 0x59, + 0xb6, 0xec, 0x4a, 0x19, 0x6e, 0x77, 0x27, 0x2e, 0x3f, 0x3a, 0x47, 0x6a, 0x7b, 0x40, 0xfc, 0xb1, + 0x4e, 0xb5, 0x3c, 0x8e, 0x60, 0x43, 0xa7, 0x17, 0xe6, 0xe5, 0xe4, 0xe3, 0xdd, 0x82, 0xc5, 0x33, + 0xd3, 0x6a, 0x89, 0x4c, 0xe4, 0x75, 0xf1, 0xa0, 0x6d, 0x01, 0xf1, 0xf7, 0x27, 0x62, 0xc2, 0xc5, + 0xff, 0xba, 0x69, 0x77, 0x7c, 0x2e, 0x9c, 0xa6, 0xdd, 0x09, 0xb9, 0x60, 0x08, 0xe6, 0x82, 0xbd, + 0x72, 0x17, 0xbf, 0x30, 0xf3, 0x46, 0xc7, 0x5e, 0xc6, 0x8d, 0x8e, 0xe3, 0x39, 0x4a, 0x7b, 0x2a, + 0x47, 0x37, 0xb1, 0x6b, 0x77, 0x1c, 0x7e, 0xef, 0xda, 0xdf, 0xb2, 0x42, 0x4c, 0x58, 0xe3, 0x14, + 0x62, 0xe2, 0x37, 0x1b, 0x15, 0x93, 0x7f, 0xdd, 0xa0, 0x98, 0xa8, 0x22, 0x53, 0x8a, 0xc9, 0x2e, + 0x14, 0x6c, 0x6a, 0x5d, 0x1a, 0x2d, 0xc6, 0x0e, 0x21, 0x26, 0x18, 0xc2, 0xb1, 0x68, 0xae, 0x1f, + 0xd8, 0x3a, 0x20, 0xa4, 0xde, 0xb6, 0xc9, 0x03, 0xc8, 0x23, 0x97, 0x84, 0x62, 0x2c, 0xef, 0x15, + 0x86, 0xd7, 0x3b, 0x39, 0x41, 0x26, 0x5b, 0xcf, 0x09, 0x36, 0xd9, 0xe4, 0x43, 0x28, 0xb6, 0xa9, + 0x6d, 0x58, 0xb4, 0xdd, 0xb0, 0x9d, 0xa6, 0x83, 0xfa, 0x50, 0xac, 0x7d, 0x23, 0x2a, 0xc5, 0xc7, + 0x0c, 0xc5, 0x05, 0x66, 0x15, 0x0d, 0x79, 0x8b, 0x42, 0x68, 0x72, 0xa3, 0x42, 0x43, 0xee, 0x00, + 0x0c, 0xfa, 0x0d, 0xc7, 0x6c, 0xb0, 0xf5, 0x53, 0xca, 0x73, 0x0a, 0xe7, 0x07, 0xfd, 0xd7, 0xe6, + 0x41, 0xd3, 0xa1, 0xa4, 0x0c, 0x79, 0x6b, 0xd0, 0x73, 0x0c, 0x96, 0x81, 0x65, 0x6e, 0xed, 0x3e, + 0xcf, 0x41, 0xa2, 0x70, 0xb2, 0x3d, 0x89, 0x62, 0x9c, 0x8b, 0x95, 0x28, 0x4e, 0x42, 0x01, 0xd3, + 0x0e, 0x61, 0x6b, 0xdf, 0xa2, 0x4d, 0x87, 0xe2, 0x84, 0x4b, 0x1a, 0x3e, 0x41, 0xfd, 0x10, 0x1c, + 0xdc, 0x51, 0x75, 0x83, 0x16, 0x3e, 0x09, 0x39, 0x82, 0x5b, 0xa1, 0xce, 0x30, 0xaa, 0x77, 0x21, + 0x87, 0x49, 0xc4, 0x0e, 0x6f, 0xc7, 0x74, 0xa8, 0x4b, 0xac, 0xf6, 0x06, 0x36, 0x9e, 0x53, 0x27, + 0x14, 0xd9, 0x63, 0x00, 0x8f, 0x33, 0xb8, 0xe6, 0x56, 0x87, 0xd7, 0x3b, 0xcb, 0x2e, 0x65, 0xf4, + 0x65, 0x97, 0x31, 0xe4, 0x21, 0xac, 0x19, 0x3d, 0x9b, 0x5a, 0x4e, 0xa3, 0x4d, 0xcf, 0x9a, 0x83, + 0xae, 0x63, 0xa3, 0xc2, 0x14, 0x45, 0xf3, 0x01, 0xb6, 0x6a, 0x87, 0x40, 0xfc, 0xbe, 0x66, 0x0b, + 0xfc, 0x2f, 0x69, 0xd8, 0x12, 0x62, 0x3a, 0x53, 0xf0, 0x07, 0xb0, 0x26, 0xd1, 0x13, 0x7c, 0x07, + 0x8a, 0x68, 0x23, 0x3f, 0x05, 0x4f, 0x02, 0x9f, 0x82, 0xf1, 0x52, 0x49, 0x5e, 0x40, 0xde, 0x32, + 0xbb, 0xdd, 0xd3, 0x66, 0xab, 0x53, 0xca, 0xde, 0x4d, 0x55, 0x8a, 0xb5, 0x77, 0x54, 0x86, 0xaa, + 0x41, 0x56, 0x75, 0x34, 0xd4, 0xdd, 0x2e, 0x34, 0x0d, 0xf2, 0xb2, 0x95, 0xe4, 0x21, 0x7b, 0xf4, + 0xf2, 0xe8, 0xd9, 0xfa, 0x02, 0x59, 0x81, 0xfc, 0x2b, 0xfd, 0xd9, 0x27, 0xf5, 0x97, 0x27, 0xc7, + 0xeb, 0x29, 0xc6, 0x9e, 0x50, 0x77, 0xb3, 0x25, 0xe1, 0x00, 0xb6, 0x84, 0xe8, 0xce, 0x92, 0x03, + 0xed, 0xeb, 0x70, 0x2b, 0xd4, 0x0b, 0xaa, 0xf7, 0xe7, 0x19, 0xd8, 0x64, 0xeb, 0x0f, 0xdb, 0x5d, + 0x01, 0xaf, 0x87, 0x05, 0x7c, 0x37, 0x4a, 0x26, 0x43, 0x96, 0xa3, 0x1a, 0xfe, 0xc7, 0xf4, 0xdc, + 0x35, 0xfc, 0x38, 0xa4, 0xe1, 0x3f, 0x9c, 0x30, 0x38, 0xa5, 0x8c, 0x8f, 0x68, 0x64, 0x56, 0xa1, + 0x91, 0x7e, 0x15, 0x5c, 0x9c, 0x9f, 0x0a, 0xbe, 0x84, 0xad, 0x60, 0xb8, 0x48, 0x9a, 0xef, 0x43, + 0x1e, 0x93, 0x28, 0xb5, 0x30, 0x96, 0x35, 0x2e, 0xd8, 0x53, 0xc4, 0x23, 0xea, 0x7c, 0x6a, 0x5a, + 0x9d, 0x09, 0x14, 0x11, 0x2d, 0x54, 0x8a, 0xe8, 0x76, 0xe6, 0x71, 0xba, 0x27, 0x9a, 0xe2, 0x38, + 0x2d, 0xad, 0x24, 0x56, 0x3b, 0xe1, 0x8a, 0x18, 0x8a, 0x8c, 0x40, 0x96, 0xcd, 0x34, 0xce, 0x17, + 0xff, 0xcd, 0x48, 0x8e, 0x36, 0x8c, 0xe4, 0x69, 0x8f, 0xe4, 0x68, 0xcb, 0x48, 0x8e, 0x80, 0x7a, + 0x1b, 0xc5, 0x6f, 0x4e, 0x31, 0xfe, 0x4c, 0xae, 0xbb, 0xb9, 0x87, 0xe9, 0xae, 0xc5, 0x50, 0xa4, + 0xda, 0xff, 0xd2, 0x62, 0x2d, 0x62, 0xfb, 0x14, 0x6b, 0x31, 0x64, 0x39, 0xba, 0x16, 0x7f, 0x7b, + 0x83, 0x6b, 0x31, 0x22, 0xb8, 0xa9, 0xd7, 0xe2, 0x1c, 0xd6, 0x9b, 0x17, 0x92, 0xb7, 0xde, 0x30, + 0x51, 0xb1, 0xeb, 0x4d, 0x66, 0xce, 0x05, 0x6b, 0xef, 0x73, 0x4a, 0xef, 0x77, 0x07, 0xb6, 0x43, + 0x2d, 0x9f, 0x46, 0xb7, 0x44, 0x4b, 0x48, 0xa3, 0x11, 0xc7, 0x78, 0x81, 0x00, 0x97, 0xbe, 0x6e, + 0x17, 0x1e, 0x7d, 0x11, 0x12, 0x47, 0x5f, 0x69, 0x25, 0xb1, 0x2e, 0x97, 0xf0, 0xc5, 0x14, 0x5c, + 0x0a, 0x59, 0x7e, 0xb5, 0xb8, 0x14, 0x11, 0xdc, 0x4d, 0x72, 0xc9, 0x0b, 0xc9, 0xe3, 0x12, 0x66, + 0x23, 0x96, 0x4b, 0x32, 0x75, 0x2e, 0x58, 0xfb, 0x7d, 0x0a, 0x0a, 0x87, 0xf4, 0x4a, 0x37, 0x9d, + 0xa6, 0xc3, 0xb6, 0x3e, 0xdf, 0x82, 0x0d, 0x46, 0x32, 0x6a, 0x35, 0xde, 0x98, 0x46, 0xaf, 0xe1, + 0x98, 0x1d, 0xda, 0xe3, 0xa1, 0xe5, 0xf5, 0x35, 0xf1, 0xe2, 0x23, 0xd3, 0xe8, 0xbd, 0x66, 0xcd, + 0xe4, 0x31, 0x90, 0x8b, 0x66, 0xaf, 0x79, 0x1e, 0x04, 0x8b, 0xcd, 0xe2, 0x3a, 0xbe, 0x51, 0xa2, + 0x07, 0xbd, 0xae, 0xd9, 0xea, 0x34, 0xd8, 0xa8, 0x33, 0x01, 0xf4, 0x09, 0x7f, 0x71, 0x48, 0xaf, + 0xb4, 0xdf, 0xb8, 0xfb, 0xc1, 0x59, 0x78, 0xce, 0xf6, 0x83, 0x12, 0x3d, 0xc9, 0x7e, 0x10, 0x6d, + 0x26, 0xd8, 0x0f, 0xa2, 0x77, 0xdf, 0x7e, 0xf0, 0x7d, 0xb6, 0x1f, 0x14, 0xb3, 0xca, 0xf7, 0x83, + 0x11, 0x86, 0xbe, 0xc9, 0xdf, 0xcb, 0xbe, 0xbd, 0xde, 0x59, 0xd0, 0x5d, 0x33, 0x6f, 0x7f, 0x37, + 0xa7, 0x85, 0xfa, 0x23, 0x58, 0xe7, 0x3b, 0xf6, 0x96, 0x45, 0x1d, 0x39, 0x9f, 0x8f, 0x60, 0xd9, + 0xe6, 0x0d, 0xde, 0x74, 0xae, 0x0c, 0xaf, 0x77, 0xf2, 0x02, 0x55, 0x3f, 0x60, 0xdf, 0x79, 0xfe, + 0xab, 0xad, 0x3d, 0xc7, 0xc3, 0x85, 0x30, 0xc7, 0x50, 0x6a, 0xb0, 0x24, 0x00, 0x18, 0x49, 0x59, + 0xbd, 0x67, 0xe0, 0x36, 0x88, 0xd4, 0xfe, 0x9a, 0x82, 0x4d, 0xb9, 0x71, 0x9d, 0x2e, 0x16, 0xb2, + 0x07, 0x45, 0x84, 0x4e, 0x90, 0xd7, 0x55, 0x61, 0x22, 0xd3, 0x5a, 0x0b, 0xa4, 0x75, 0x3b, 0x3a, + 0x70, 0xdf, 0xf6, 0xe4, 0x23, 0xef, 0x98, 0x32, 0xf3, 0x34, 0xfc, 0x27, 0x0d, 0x44, 0xec, 0xc4, + 0xd8, 0xa3, 0x2b, 0x9b, 0x1f, 0x86, 0x65, 0xb3, 0x1a, 0xbd, 0xe3, 0xf4, 0x1b, 0x8e, 0xaa, 0xe6, + 0xe7, 0xf3, 0x57, 0x4d, 0x3d, 0xa4, 0x9a, 0xef, 0x4d, 0x16, 0xdb, 0x8d, 0x88, 0xe6, 0xa1, 0x3c, + 0x76, 0x60, 0x44, 0x98, 0xb2, 0xef, 0xb2, 0x43, 0x12, 0x6f, 0x42, 0xc9, 0x8c, 0xcb, 0x99, 0x84, + 0x6a, 0x75, 0xd8, 0x94, 0x27, 0x76, 0x3f, 0x75, 0x6b, 0x81, 0xbd, 0xee, 0xd8, 0x5c, 0x0a, 0x76, + 0x35, 0x03, 0x97, 0x7e, 0x0a, 0x9b, 0xf2, 0xd0, 0x35, 0xe5, 0xea, 0xfe, 0x9a, 0x77, 0xf8, 0xf3, + 0x47, 0x83, 0xa2, 0xb1, 0x6f, 0xf6, 0xce, 0x8c, 0x73, 0x5f, 0xb7, 0x2d, 0xde, 0x10, 0xea, 0x56, + 0xa0, 0x58, 0xb7, 0xe2, 0xb5, 0x2b, 0x1a, 0xd2, 0xdc, 0x1b, 0xa1, 0x00, 0xc4, 0x8d, 0x10, 0x6d, + 0x10, 0xe9, 0x13, 0x8d, 0x69, 0x63, 0x61, 0xa2, 0x81, 0xd0, 0x49, 0x44, 0x43, 0x98, 0x4c, 0x20, + 0x1a, 0xc2, 0xb3, 0x4a, 0x34, 0xe6, 0x30, 0x0d, 0x52, 0x34, 0x44, 0xf3, 0x14, 0xa2, 0x11, 0x34, + 0xfc, 0x6a, 0x89, 0x86, 0x3a, 0xb6, 0x9b, 0x14, 0x0d, 0x37, 0x22, 0x4f, 0x34, 0x44, 0x22, 0x62, + 0x45, 0x03, 0x73, 0x26, 0xa1, 0x9e, 0x68, 0x04, 0xa9, 0x3b, 0x86, 0x68, 0xa8, 0xb8, 0x14, 0xec, + 0x6a, 0x06, 0x2e, 0xb9, 0xa2, 0x31, 0xf5, 0xea, 0x76, 0x45, 0x23, 0x18, 0x4d, 0xed, 0xd7, 0xb7, + 0x21, 0xb7, 0x2f, 0xee, 0x39, 0x89, 0x01, 0x39, 0xbc, 0x42, 0x24, 0x9a, 0x2a, 0xa8, 0xe0, 0xb5, + 0x64, 0xf9, 0x5e, 0x2c, 0x06, 0x45, 0xe9, 0xd6, 0xdf, 0xff, 0xfc, 0xff, 0x3f, 0xa4, 0xd7, 0x60, + 0x95, 0x83, 0xbe, 0x8d, 0xdb, 0x47, 0x62, 0xc2, 0xb2, 0x7b, 0x07, 0x45, 0xbe, 0x39, 0xce, 0xcd, + 0x5d, 0xf9, 0x7e, 0x02, 0x2a, 0xde, 0xa1, 0x05, 0xe0, 0x5d, 0x01, 0x91, 0xfb, 0xd1, 0x05, 0x3f, + 0xff, 0x08, 0x1f, 0x24, 0xc1, 0x12, 0x7d, 0x7a, 0x57, 0x3c, 0x6a, 0x9f, 0x23, 0x57, 0x4a, 0x6a, + 0x9f, 0x8a, 0x9b, 0xa2, 0x08, 0x9f, 0x22, 0x87, 0xaf, 0x9b, 0x76, 0x27, 0x32, 0x87, 0xbe, 0x2b, + 0x9e, 0xc8, 0x1c, 0x06, 0x2e, 0x73, 0xe2, 0x73, 0xc8, 0x8b, 0xf4, 0xd1, 0x39, 0xf4, 0x5f, 0x98, + 0x44, 0xe7, 0x30, 0x50, 0xe9, 0x4f, 0x9c, 0x4f, 0x3e, 0xbc, 0x98, 0xf9, 0xf4, 0x8f, 0xf0, 0x41, + 0x12, 0x2c, 0xd1, 0xa7, 0x57, 0x3b, 0x57, 0xfb, 0x1c, 0xa9, 0xe3, 0xab, 0x7d, 0x8e, 0x96, 0xe0, + 0xa3, 0x7c, 0x7e, 0x06, 0x2b, 0xfe, 0xba, 0x1f, 0x79, 0x38, 0x66, 0x21, 0xb3, 0x5c, 0x49, 0x06, + 0xc6, 0x7b, 0xfe, 0x25, 0xac, 0x06, 0x6e, 0x39, 0x88, 0xb2, 0x47, 0xd5, 0xad, 0x4a, 0xf9, 0xd1, + 0x18, 0xc8, 0x44, 0xe7, 0x81, 0x22, 0xb9, 0xda, 0xb9, 0xaa, 0x2c, 0xaf, 0x76, 0xae, 0xac, 0xb8, + 0xc7, 0x38, 0x0f, 0xd4, 0xc2, 0xd5, 0xce, 0x55, 0x45, 0x77, 0xb5, 0x73, 0x75, 0x61, 0x3d, 0x96, + 0x64, 0x58, 0x3f, 0x8a, 0x24, 0x59, 0xb0, 0xe6, 0x18, 0x49, 0xb2, 0x70, 0x01, 0x31, 0x9e, 0x64, + 0xb2, 0xd8, 0x15, 0x4d, 0xb2, 0x50, 0x85, 0x2e, 0x9a, 0x64, 0xe1, 0xba, 0x59, 0x22, 0xc9, 0xe4, + 0x80, 0x63, 0x48, 0x16, 0x1a, 0xf3, 0xa3, 0x31, 0x90, 0x63, 0xe6, 0x39, 0xd6, 0xb9, 0xaa, 0xc8, + 0x1b, 0x97, 0xe7, 0x31, 0x9d, 0x8b, 0x3c, 0xe3, 0x69, 0x3f, 0x32, 0xcf, 0xc1, 0x3a, 0x4a, 0x64, + 0x9e, 0x43, 0xa5, 0x86, 0x84, 0x3c, 0xcb, 0x42, 0x54, 0x74, 0x9e, 0x43, 0xd5, 0xb3, 0xe8, 0x3c, + 0x87, 0x6b, 0x5a, 0x89, 0xeb, 0x59, 0x0e, 0x38, 0x66, 0x3d, 0x87, 0xc6, 0xfc, 0x68, 0x0c, 0x64, + 0xe2, 0xc7, 0xc9, 0x2d, 0x81, 0xa8, 0x3f, 0x4e, 0xe1, 0x02, 0x4b, 0xf9, 0x7e, 0x02, 0x2a, 0x71, + 0x9e, 0xfd, 0xf5, 0x06, 0xf5, 0x3c, 0x2b, 0x6a, 0x29, 0xe5, 0x4a, 0x32, 0x30, 0xde, 0xf3, 0x00, + 0x0a, 0xbe, 0x53, 0x33, 0x79, 0x30, 0xde, 0x41, 0xbf, 0xfc, 0x30, 0x11, 0x97, 0x38, 0x60, 0xff, + 0xa1, 0x58, 0x3d, 0x60, 0xc5, 0x09, 0xbc, 0x5c, 0x49, 0x06, 0x26, 0x7a, 0xf6, 0x1f, 0x80, 0xd5, + 0x9e, 0x15, 0x87, 0xec, 0x72, 0x25, 0x19, 0x38, 0x0e, 0xab, 0xc4, 0x16, 0x3a, 0x92, 0x55, 0x81, + 0x3d, 0x7a, 0x24, 0xab, 0x82, 0xfb, 0xf0, 0x44, 0x56, 0xa1, 0xcf, 0x18, 0x56, 0x05, 0xdd, 0x56, + 0x92, 0x81, 0x63, 0xb1, 0x0a, 0x8f, 0x55, 0xd1, 0xac, 0x0a, 0x9e, 0x04, 0xa3, 0x59, 0x15, 0x3a, + 0x9f, 0x25, 0xb2, 0x2a, 0x6e, 0xc0, 0x8a, 0x23, 0x5a, 0x1c, 0xab, 0xc6, 0x9e, 0x6a, 0xff, 0x09, + 0x29, 0x8e, 0x55, 0x63, 0x78, 0x56, 0x1d, 0xb6, 0x22, 0x3c, 0xef, 0x95, 0xde, 0x7e, 0xb1, 0xbd, + 0xf0, 0xcf, 0x2f, 0xb6, 0x17, 0x7e, 0x35, 0xdc, 0x4e, 0xbd, 0x1d, 0x6e, 0xa7, 0xfe, 0x31, 0xdc, + 0x4e, 0xfd, 0x7b, 0xb8, 0x9d, 0x3a, 0x5d, 0xe2, 0xff, 0x12, 0xfa, 0xe4, 0xcb, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x69, 0xfa, 0x48, 0xde, 0x8b, 0x2a, 0x00, 0x00, } diff --git a/components/engine/vendor/github.com/docker/swarmkit/api/control.proto b/components/engine/vendor/github.com/docker/swarmkit/api/control.proto index f7f06f4cf5..c8254cab9f 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/api/control.proto +++ b/components/engine/vendor/github.com/docker/swarmkit/api/control.proto @@ -176,8 +176,8 @@ message ListNodesRequest { repeated string names = 1; repeated string id_prefixes = 2; map labels = 3; - repeated NodeSpec.Membership memberships = 4; - repeated NodeRole roles = 5; + repeated NodeSpec.Membership memberships = 4 [packed=false]; + repeated NodeRole roles = 5 [packed=false]; // NamePrefixes matches all objects with the given prefixes repeated string name_prefixes = 6; } @@ -233,7 +233,7 @@ message ListTasksRequest { map labels = 3; repeated string service_ids = 4; repeated string node_ids = 5; - repeated docker.swarmkit.v1.TaskState desired_states = 6; + repeated docker.swarmkit.v1.TaskState desired_states = 6 [packed=false]; // NamePrefixes matches all objects with the given prefixes repeated string name_prefixes = 7; repeated string runtimes = 9; diff --git a/components/engine/vendor/github.com/docker/swarmkit/api/dispatcher.pb.go b/components/engine/vendor/github.com/docker/swarmkit/api/dispatcher.pb.go index 0d4d74e3e7..825a6077e0 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/api/dispatcher.pb.go +++ b/components/engine/vendor/github.com/docker/swarmkit/api/dispatcher.pb.go @@ -37,6 +37,7 @@ import io "io" var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +var _ = time.Kitchen type AssignmentChange_AssignmentAction int32 diff --git a/components/engine/vendor/github.com/docker/swarmkit/api/logbroker.pb.go b/components/engine/vendor/github.com/docker/swarmkit/api/logbroker.pb.go index 7a5985674e..6a22eca89e 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/api/logbroker.pb.go +++ b/components/engine/vendor/github.com/docker/swarmkit/api/logbroker.pb.go @@ -62,7 +62,7 @@ func (LogStream) EnumDescriptor() ([]byte, []int) { return fileDescriptorLogbrok type LogSubscriptionOptions struct { // Streams defines which log streams should be sent from the task source. // Empty means send all the messages. - Streams []LogStream `protobuf:"varint,1,rep,packed,name=streams,enum=docker.swarmkit.v1.LogStream" json:"streams,omitempty"` + Streams []LogStream `protobuf:"varint,1,rep,name=streams,enum=docker.swarmkit.v1.LogStream" json:"streams,omitempty"` // Follow instructs the publisher to continue sending log messages as they // are produced, after satisfying the initial query. Follow bool `protobuf:"varint,2,opt,name=follow,proto3" json:"follow,omitempty"` @@ -809,21 +809,11 @@ func (m *LogSubscriptionOptions) MarshalTo(dAtA []byte) (int, error) { var l int _ = l if len(m.Streams) > 0 { - dAtA2 := make([]byte, len(m.Streams)*10) - var j1 int for _, num := range m.Streams { - for num >= 1<<7 { - dAtA2[j1] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j1++ - } - dAtA2[j1] = uint8(num) - j1++ + dAtA[i] = 0x8 + i++ + i = encodeVarintLogbroker(dAtA, i, uint64(num)) } - dAtA[i] = 0xa - i++ - i = encodeVarintLogbroker(dAtA, i, uint64(j1)) - i += copy(dAtA[i:], dAtA2[:j1]) } if m.Follow { dAtA[i] = 0x10 @@ -844,11 +834,11 @@ func (m *LogSubscriptionOptions) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintLogbroker(dAtA, i, uint64(m.Since.Size())) - n3, err := m.Since.MarshalTo(dAtA[i:]) + n1, err := m.Since.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n3 + i += n1 } return i, nil } @@ -1000,20 +990,20 @@ func (m *LogMessage) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintLogbroker(dAtA, i, uint64(m.Context.Size())) - n4, err := m.Context.MarshalTo(dAtA[i:]) + n2, err := m.Context.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n4 + i += n2 if m.Timestamp != nil { dAtA[i] = 0x12 i++ i = encodeVarintLogbroker(dAtA, i, uint64(m.Timestamp.Size())) - n5, err := m.Timestamp.MarshalTo(dAtA[i:]) + n3, err := m.Timestamp.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n5 + i += n3 } if m.Stream != 0 { dAtA[i] = 0x18 @@ -1060,21 +1050,21 @@ func (m *SubscribeLogsRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintLogbroker(dAtA, i, uint64(m.Selector.Size())) - n6, err := m.Selector.MarshalTo(dAtA[i:]) + n4, err := m.Selector.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n6 + i += n4 } if m.Options != nil { dAtA[i] = 0x12 i++ i = encodeVarintLogbroker(dAtA, i, uint64(m.Options.Size())) - n7, err := m.Options.MarshalTo(dAtA[i:]) + n5, err := m.Options.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n7 + i += n5 } return i, nil } @@ -1152,21 +1142,21 @@ func (m *SubscriptionMessage) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintLogbroker(dAtA, i, uint64(m.Selector.Size())) - n8, err := m.Selector.MarshalTo(dAtA[i:]) + n6, err := m.Selector.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n8 + i += n6 } if m.Options != nil { dAtA[i] = 0x1a i++ i = encodeVarintLogbroker(dAtA, i, uint64(m.Options.Size())) - n9, err := m.Options.MarshalTo(dAtA[i:]) + n7, err := m.Options.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n9 + i += n7 } if m.Close { dAtA[i] = 0x20 @@ -1580,11 +1570,9 @@ func (m *LogSubscriptionOptions) Size() (n int) { var l int _ = l if len(m.Streams) > 0 { - l = 0 for _, e := range m.Streams { - l += sovLogbroker(uint64(e)) + n += 1 + sovLogbroker(uint64(e)) } - n += 1 + sovLogbroker(uint64(l)) + l } if m.Follow { n += 2 @@ -1935,7 +1923,24 @@ func (m *LogSubscriptionOptions) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: - if wireType == 2 { + if wireType == 0 { + var v LogStream + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLogbroker + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (LogStream(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Streams = append(m.Streams, v) + } else if wireType == 2 { var packedLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { @@ -1976,23 +1981,6 @@ func (m *LogSubscriptionOptions) Unmarshal(dAtA []byte) error { } m.Streams = append(m.Streams, v) } - } else if wireType == 0 { - var v LogStream - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLogbroker - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= (LogStream(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.Streams = append(m.Streams, v) } else { return fmt.Errorf("proto: wrong wireType = %d for field Streams", wireType) } @@ -3365,64 +3353,64 @@ var ( func init() { proto.RegisterFile("logbroker.proto", fileDescriptorLogbroker) } var fileDescriptorLogbroker = []byte{ - // 940 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x95, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xc7, 0x33, 0xeb, 0xc4, 0x3f, 0x9e, 0x9b, 0xc4, 0x1d, 0xa7, 0x91, 0x65, 0xa8, 0x6d, 0x6d, - 0xa5, 0x62, 0x45, 0xc5, 0x6e, 0x8d, 0x50, 0x91, 0x2a, 0x21, 0x6a, 0x5c, 0x21, 0x0b, 0x37, 0x41, - 0x63, 0x47, 0x70, 0x8b, 0xd6, 0xde, 0xe9, 0xb2, 0xf2, 0x7a, 0xc7, 0xec, 0x8c, 0x13, 0x90, 0x38, - 0x70, 0x28, 0x12, 0xca, 0x81, 0x1b, 0x12, 0x1c, 0x7a, 0xa2, 0x17, 0x84, 0x04, 0x77, 0xfe, 0x00, - 0x14, 0x71, 0xe2, 0xc8, 0xc9, 0xa2, 0xfb, 0x07, 0xf0, 0x37, 0xa0, 0x9d, 0x19, 0xdb, 0x1b, 0x6c, - 0xb7, 0xa8, 0xbd, 0x24, 0x33, 0x3b, 0x9f, 0xb7, 0xef, 0xfb, 0xbe, 0xf3, 0xde, 0x1a, 0x76, 0x3d, - 0xe6, 0xf4, 0x03, 0x36, 0xa4, 0x41, 0x6d, 0x1c, 0x30, 0xc1, 0x30, 0xb6, 0xd9, 0x20, 0xda, 0xf1, - 0x33, 0x2b, 0x18, 0x0d, 0x5d, 0x51, 0x3b, 0xbd, 0x53, 0xdc, 0x73, 0x98, 0xc3, 0xe4, 0x71, 0x3d, - 0x5a, 0x29, 0xb2, 0x58, 0x76, 0x18, 0x73, 0x3c, 0x5a, 0x97, 0xbb, 0xfe, 0xe4, 0x51, 0x5d, 0xb8, - 0x23, 0xca, 0x85, 0x35, 0x1a, 0x6b, 0x20, 0x3f, 0xf6, 0x26, 0x8e, 0xeb, 0xd7, 0xd5, 0x3f, 0xf5, - 0xd0, 0xfc, 0x15, 0xc1, 0x7e, 0x87, 0x39, 0xdd, 0x49, 0x9f, 0x0f, 0x02, 0x77, 0x2c, 0x5c, 0xe6, - 0x1f, 0xc9, 0xbf, 0x1c, 0xdf, 0x85, 0x14, 0x17, 0x01, 0xb5, 0x46, 0xbc, 0x80, 0x2a, 0x89, 0xea, - 0x4e, 0xe3, 0x7a, 0x6d, 0x59, 0x4c, 0x2d, 0x0a, 0x96, 0x14, 0x99, 0xd1, 0x78, 0x1f, 0x92, 0x8f, - 0x98, 0xe7, 0xb1, 0xb3, 0x82, 0x51, 0x41, 0xd5, 0x34, 0xd1, 0x3b, 0x8c, 0x61, 0x53, 0x58, 0xae, - 0x57, 0x48, 0x54, 0x50, 0x35, 0x41, 0xe4, 0x1a, 0xdf, 0x86, 0x2d, 0xee, 0xfa, 0x03, 0x5a, 0xd8, - 0xac, 0xa0, 0x6a, 0xb6, 0x51, 0xac, 0xa9, 0x2a, 0x6a, 0xb3, 0x2a, 0x6a, 0xbd, 0x59, 0x15, 0x44, - 0x81, 0xe6, 0xb7, 0x08, 0xb2, 0x51, 0x52, 0xea, 0xd1, 0x81, 0x60, 0x01, 0xae, 0x43, 0x96, 0xd3, - 0xe0, 0xd4, 0x1d, 0xd0, 0x13, 0xd7, 0x56, 0x52, 0x33, 0xcd, 0x9d, 0x70, 0x5a, 0x86, 0xae, 0x7a, - 0xdc, 0x6e, 0x71, 0x02, 0x1a, 0x69, 0xdb, 0x1c, 0xdf, 0x84, 0xb4, 0xcf, 0x6c, 0x45, 0x1b, 0x92, - 0xce, 0x86, 0xd3, 0x72, 0xea, 0x90, 0xd9, 0x12, 0x4d, 0x45, 0x87, 0x9a, 0x13, 0x16, 0x1f, 0x4a, - 0x2e, 0xb1, 0xe0, 0x7a, 0x16, 0x1f, 0x4a, 0x2e, 0x3a, 0x6c, 0xdb, 0xdc, 0x7c, 0x8c, 0x00, 0x3a, - 0xcc, 0x79, 0x9f, 0xf9, 0x82, 0x7e, 0x2e, 0xf0, 0x2d, 0x80, 0x85, 0x9e, 0x02, 0xaa, 0xa0, 0x6a, - 0xa6, 0xb9, 0x1d, 0x4e, 0xcb, 0x99, 0xb9, 0x1c, 0x92, 0x99, 0xab, 0xc1, 0x37, 0x20, 0xa5, 0xc5, - 0x48, 0xb3, 0x32, 0x4d, 0x08, 0xa7, 0xe5, 0xa4, 0xd2, 0x42, 0x92, 0x4a, 0x4a, 0x04, 0x69, 0x25, - 0xd2, 0x3b, 0x0d, 0x29, 0x21, 0x24, 0xa9, 0x74, 0x98, 0x77, 0x20, 0xd5, 0x61, 0xce, 0x7d, 0x21, - 0x02, 0x9c, 0x83, 0xc4, 0x90, 0x7e, 0xa1, 0x72, 0x93, 0x68, 0x89, 0xf7, 0x60, 0xeb, 0xd4, 0xf2, - 0x26, 0x54, 0x25, 0x21, 0x6a, 0x63, 0x9e, 0x1b, 0x52, 0xf9, 0x43, 0xca, 0xb9, 0xe5, 0x50, 0xfc, - 0x2e, 0xa4, 0x06, 0xaa, 0x08, 0x19, 0x9a, 0x6d, 0x94, 0xd6, 0x5c, 0xb8, 0x2e, 0xb5, 0xb9, 0x79, - 0x31, 0x2d, 0x6f, 0x90, 0x59, 0x10, 0x7e, 0x07, 0x32, 0xf3, 0x9e, 0x93, 0x89, 0x9e, 0x7f, 0x9f, - 0x0b, 0x18, 0xbf, 0x0d, 0x49, 0xd5, 0x3c, 0xb2, 0xbe, 0x17, 0x76, 0x9a, 0x86, 0xa3, 0x86, 0xb2, - 0x2d, 0x61, 0xc9, 0xde, 0xb9, 0x42, 0xe4, 0x1a, 0xdf, 0x85, 0x2d, 0x4b, 0x88, 0x80, 0x17, 0xb6, - 0x2a, 0x89, 0x6a, 0xb6, 0xf1, 0xda, 0x9a, 0x37, 0x45, 0x3e, 0x69, 0xfd, 0x8a, 0x37, 0x7f, 0x40, - 0xb0, 0xa7, 0xc7, 0xa0, 0x4f, 0x3b, 0xcc, 0xe1, 0x84, 0x7e, 0x36, 0xa1, 0x5c, 0xe0, 0x7b, 0x90, - 0xe6, 0xba, 0xd9, 0xb4, 0x2f, 0xe5, 0x75, 0xf2, 0x34, 0x46, 0xe6, 0x01, 0xb8, 0x05, 0x29, 0xa6, - 0xe6, 0x49, 0x3b, 0x72, 0xb0, 0x2e, 0x76, 0x79, 0x02, 0xc9, 0x2c, 0xd4, 0xfc, 0xe4, 0x3f, 0xd2, - 0x66, 0x37, 0xf6, 0x1e, 0xa4, 0x47, 0x6a, 0xa9, 0x1a, 0x7f, 0xfd, 0x95, 0xe9, 0x08, 0x5d, 0xf2, - 0x3c, 0xca, 0x7c, 0x1d, 0x8a, 0x1d, 0x97, 0x0b, 0xea, 0xc7, 0xf3, 0xcf, 0x4a, 0x37, 0x7f, 0x47, - 0x90, 0x8f, 0x1f, 0xcc, 0xf2, 0xee, 0x83, 0x31, 0xef, 0xed, 0x64, 0x38, 0x2d, 0x1b, 0xed, 0x16, - 0x31, 0x5c, 0xfb, 0x92, 0x55, 0xc6, 0x2b, 0x58, 0x95, 0x78, 0x69, 0xab, 0xa2, 0x4e, 0x1f, 0x78, - 0x8c, 0xab, 0x0f, 0x4a, 0x9a, 0xa8, 0x8d, 0xf9, 0x13, 0x02, 0xfc, 0xd1, 0xa4, 0xef, 0xb9, 0xfc, - 0xd3, 0xb8, 0x7f, 0xf7, 0x60, 0x97, 0xc7, 0x5e, 0xb6, 0x18, 0x58, 0x1c, 0x4e, 0xcb, 0x3b, 0xf1, - 0x3c, 0xed, 0x16, 0xd9, 0x89, 0xa3, 0x6d, 0xfb, 0x92, 0xf9, 0xc6, 0xcb, 0x98, 0xbf, 0xd0, 0x9a, - 0x88, 0x6b, 0xbd, 0x06, 0xf9, 0x98, 0x54, 0x42, 0xf9, 0x98, 0xf9, 0x9c, 0x1e, 0x3c, 0x45, 0x90, - 0x99, 0x8f, 0x00, 0xbe, 0x05, 0xb8, 0x73, 0xf4, 0xc1, 0x49, 0xb7, 0x47, 0x1e, 0xdc, 0x7f, 0x78, - 0x72, 0x7c, 0xf8, 0xe1, 0xe1, 0xd1, 0xc7, 0x87, 0xb9, 0x8d, 0xe2, 0xde, 0xf9, 0x93, 0x4a, 0x6e, - 0x8e, 0x1d, 0xfb, 0x43, 0x9f, 0x9d, 0xf9, 0xf8, 0x00, 0xae, 0xc6, 0xe8, 0x6e, 0xaf, 0x75, 0x74, - 0xdc, 0xcb, 0xa1, 0x62, 0xfe, 0xfc, 0x49, 0x65, 0x77, 0x0e, 0x77, 0x85, 0xcd, 0x26, 0x62, 0x99, - 0x7d, 0x40, 0x48, 0xce, 0x58, 0x66, 0x69, 0x10, 0x14, 0xaf, 0x7e, 0xf3, 0x63, 0x69, 0xe3, 0xb7, - 0xa7, 0xa5, 0x85, 0xb0, 0xc6, 0x63, 0x04, 0x9b, 0x91, 0x6e, 0xfc, 0x25, 0x6c, 0x5f, 0xea, 0x59, - 0x5c, 0x5d, 0xe5, 0xce, 0xaa, 0x89, 0x2b, 0xbe, 0x98, 0xd4, 0x8e, 0x9a, 0xd7, 0xfe, 0xf8, 0xe5, - 0x9f, 0xef, 0x8d, 0x5d, 0xd8, 0x96, 0xe4, 0x9b, 0x23, 0xcb, 0xb7, 0x1c, 0x1a, 0xdc, 0x46, 0x8d, - 0x9f, 0x0d, 0xe9, 0x56, 0x53, 0xfe, 0x96, 0xe2, 0xef, 0x10, 0xe4, 0x57, 0xb4, 0x39, 0xae, 0xad, - 0xbc, 0xb0, 0xb5, 0xf3, 0x50, 0x7c, 0xe3, 0x39, 0xc2, 0xe2, 0x03, 0x62, 0xde, 0x90, 0xba, 0xae, - 0xc3, 0x15, 0xa5, 0xeb, 0x8c, 0x05, 0x43, 0x1a, 0x2c, 0xa9, 0xc4, 0x5f, 0x23, 0xc8, 0xc6, 0xee, - 0x1a, 0xdf, 0x5c, 0xf5, 0xfe, 0xe5, 0xbe, 0x5d, 0xad, 0x63, 0x45, 0xd3, 0xfc, 0x2f, 0x1d, 0x55, - 0xd4, 0x2c, 0x5c, 0x3c, 0x2b, 0x6d, 0xfc, 0xf5, 0xac, 0xb4, 0xf1, 0x55, 0x58, 0x42, 0x17, 0x61, - 0x09, 0xfd, 0x19, 0x96, 0xd0, 0xdf, 0x61, 0x09, 0xf5, 0x93, 0xf2, 0xc3, 0xfd, 0xd6, 0xbf, 0x01, - 0x00, 0x00, 0xff, 0xff, 0xf8, 0x4f, 0xdd, 0x74, 0x99, 0x08, 0x00, 0x00, + // 944 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x95, 0x41, 0x6f, 0x1b, 0x45, + 0x14, 0xc7, 0x3d, 0xeb, 0xc4, 0x8e, 0x9f, 0x9b, 0xc4, 0x1d, 0xa7, 0x91, 0x65, 0xa8, 0x6d, 0x6d, + 0xa5, 0x62, 0x45, 0xc5, 0x6e, 0x8d, 0x10, 0x48, 0x91, 0x10, 0x35, 0xae, 0x90, 0x85, 0x9b, 0xa0, + 0xb1, 0x23, 0xb8, 0x45, 0x6b, 0xef, 0x74, 0x59, 0x79, 0xbd, 0x63, 0x76, 0xc6, 0x09, 0x48, 0x1c, + 0x38, 0x14, 0x09, 0xe5, 0xc0, 0x0d, 0x09, 0x0e, 0x3d, 0xd1, 0x0b, 0x42, 0xe2, 0xc2, 0x8d, 0x0f, + 0x80, 0x22, 0x4e, 0x1c, 0x39, 0x59, 0x74, 0x3f, 0x00, 0x9f, 0x01, 0xed, 0xcc, 0xd8, 0xde, 0x60, + 0xbb, 0x45, 0xe5, 0x92, 0xcc, 0xec, 0xfc, 0xdf, 0xbe, 0xdf, 0xfb, 0xcf, 0x7b, 0x6b, 0xd8, 0xf5, + 0x98, 0xd3, 0x0f, 0xd8, 0x90, 0x06, 0xb5, 0x71, 0xc0, 0x04, 0xc3, 0xd8, 0x66, 0x83, 0x68, 0xc7, + 0xcf, 0xad, 0x60, 0x34, 0x74, 0x45, 0xed, 0xec, 0x5e, 0x71, 0xcf, 0x61, 0x0e, 0x93, 0xc7, 0xf5, + 0x68, 0xa5, 0x94, 0xc5, 0xb2, 0xc3, 0x98, 0xe3, 0xd1, 0xba, 0xdc, 0xf5, 0x27, 0x8f, 0xea, 0xc2, + 0x1d, 0x51, 0x2e, 0xac, 0xd1, 0x58, 0x0b, 0xf2, 0x63, 0x6f, 0xe2, 0xb8, 0x7e, 0x5d, 0xfd, 0x53, + 0x0f, 0xcd, 0x5f, 0x10, 0xec, 0x77, 0x98, 0xd3, 0x9d, 0xf4, 0xf9, 0x20, 0x70, 0xc7, 0xc2, 0x65, + 0xfe, 0xb1, 0xfc, 0xcb, 0xf1, 0x21, 0xa4, 0xb9, 0x08, 0xa8, 0x35, 0xe2, 0x05, 0x54, 0x49, 0x56, + 0x77, 0x1a, 0x37, 0x6b, 0xcb, 0x30, 0xb5, 0x28, 0x58, 0xaa, 0x9a, 0x46, 0x2e, 0x41, 0x66, 0x11, + 0x78, 0x1f, 0x52, 0x8f, 0x98, 0xe7, 0xb1, 0xf3, 0x82, 0x51, 0x41, 0xd5, 0x2d, 0xa2, 0x77, 0x18, + 0xc3, 0x86, 0xb0, 0x5c, 0xaf, 0x90, 0xac, 0xa0, 0x6a, 0x92, 0xc8, 0x35, 0xbe, 0x0b, 0x9b, 0xdc, + 0xf5, 0x07, 0xb4, 0xb0, 0x51, 0x41, 0xd5, 0x6c, 0xa3, 0x58, 0x53, 0x95, 0xd4, 0x66, 0x95, 0xd4, + 0x7a, 0xb3, 0x4a, 0x88, 0x12, 0x9a, 0xdf, 0x20, 0xc8, 0x46, 0x89, 0xa9, 0x47, 0x07, 0x82, 0x05, + 0xb8, 0x0e, 0x59, 0x4e, 0x83, 0x33, 0x77, 0x40, 0x4f, 0x5d, 0x5b, 0xe1, 0x66, 0x9a, 0x3b, 0xe1, + 0xb4, 0x0c, 0x5d, 0xf5, 0xb8, 0xdd, 0xe2, 0x04, 0xb4, 0xa4, 0x6d, 0x73, 0x7c, 0x1b, 0xb6, 0x7c, + 0x66, 0x2b, 0xb5, 0x21, 0xd5, 0xd9, 0x70, 0x5a, 0x4e, 0x1f, 0x31, 0x5b, 0x4a, 0xd3, 0xd1, 0xa1, + 0xd6, 0x09, 0x8b, 0x0f, 0xa5, 0x2e, 0xb9, 0xd0, 0xf5, 0x2c, 0x3e, 0x94, 0xba, 0xe8, 0xb0, 0x6d, + 0x73, 0xf3, 0x31, 0x02, 0xe8, 0x30, 0xe7, 0x3d, 0xe6, 0x0b, 0xfa, 0x99, 0xc0, 0x77, 0x00, 0x16, + 0x3c, 0x05, 0x54, 0x41, 0xd5, 0x4c, 0x73, 0x3b, 0x9c, 0x96, 0x33, 0x73, 0x1c, 0x92, 0x99, 0xd3, + 0xe0, 0x5b, 0x90, 0xd6, 0x30, 0xd2, 0xac, 0x4c, 0x13, 0xc2, 0x69, 0x39, 0xa5, 0x58, 0x48, 0x4a, + 0xa1, 0x44, 0x22, 0x4d, 0x22, 0xbd, 0xd3, 0x22, 0x05, 0x42, 0x52, 0x8a, 0xc3, 0xbc, 0x07, 0xe9, + 0x0e, 0x73, 0xee, 0x0b, 0x11, 0xe0, 0x1c, 0x24, 0x87, 0xf4, 0x73, 0x95, 0x9b, 0x44, 0x4b, 0xbc, + 0x07, 0x9b, 0x67, 0x96, 0x37, 0xa1, 0x2a, 0x09, 0x51, 0x1b, 0xf3, 0xc2, 0x90, 0xe4, 0x0f, 0x29, + 0xe7, 0x96, 0x43, 0xf1, 0x3b, 0x90, 0x1e, 0xa8, 0x22, 0x64, 0x68, 0xb6, 0x51, 0x5a, 0x73, 0xe9, + 0xba, 0xd4, 0xe6, 0xc6, 0xe5, 0xb4, 0x9c, 0x20, 0xb3, 0x20, 0xfc, 0x36, 0x64, 0xe6, 0x7d, 0x27, + 0x13, 0x3d, 0xff, 0x3e, 0x17, 0x62, 0xfc, 0x26, 0xa4, 0x54, 0xf3, 0xc8, 0xfa, 0x5e, 0xd4, 0x6d, + 0x44, 0x8b, 0xa3, 0x86, 0xb2, 0x2d, 0x61, 0xc9, 0xde, 0xb9, 0x46, 0xe4, 0x1a, 0xbf, 0x05, 0x9b, + 0x96, 0x10, 0x01, 0x2f, 0x6c, 0x56, 0x92, 0xd5, 0x6c, 0xe3, 0x95, 0x35, 0x6f, 0x8a, 0x7c, 0xd2, + 0xfc, 0x4a, 0x6f, 0x7e, 0x8f, 0x60, 0x4f, 0x8f, 0x42, 0x9f, 0x76, 0x98, 0xc3, 0x09, 0xfd, 0x74, + 0x42, 0xb9, 0xc0, 0x87, 0xb0, 0xc5, 0x75, 0xb3, 0x69, 0x5f, 0xca, 0xeb, 0xf0, 0xb4, 0x8c, 0xcc, + 0x03, 0x70, 0x0b, 0xd2, 0x4c, 0xcd, 0x94, 0x76, 0xe4, 0x60, 0x5d, 0xec, 0xf2, 0x14, 0x92, 0x59, + 0xa8, 0xf9, 0xf1, 0xbf, 0xd0, 0x66, 0x37, 0xf6, 0x2e, 0x6c, 0x8d, 0xd4, 0x52, 0x35, 0xfe, 0xfa, + 0x2b, 0xd3, 0x11, 0xba, 0xe4, 0x79, 0x94, 0xf9, 0x2a, 0x14, 0x3b, 0x2e, 0x17, 0xd4, 0x8f, 0xe7, + 0x9f, 0x95, 0x6e, 0xfe, 0x86, 0x20, 0x1f, 0x3f, 0x98, 0xe5, 0xdd, 0x07, 0x63, 0xde, 0xdb, 0xa9, + 0x70, 0x5a, 0x36, 0xda, 0x2d, 0x62, 0xb8, 0xf6, 0x15, 0xab, 0x8c, 0xff, 0x61, 0x55, 0xf2, 0xa5, + 0xad, 0x8a, 0x3a, 0x7d, 0xe0, 0x31, 0xae, 0x3e, 0x28, 0x5b, 0x44, 0x6d, 0xcc, 0x1f, 0x11, 0xe0, + 0x0f, 0x27, 0x7d, 0xcf, 0xe5, 0x9f, 0xc4, 0xfd, 0x3b, 0x84, 0x5d, 0x1e, 0x7b, 0xd9, 0x62, 0x60, + 0x71, 0x38, 0x2d, 0xef, 0xc4, 0xf3, 0xb4, 0x5b, 0x64, 0x27, 0x2e, 0x6d, 0xdb, 0x57, 0xcc, 0x37, + 0x5e, 0xc6, 0xfc, 0x05, 0x6b, 0x32, 0xce, 0x7a, 0x03, 0xf2, 0x31, 0x54, 0x42, 0xf9, 0x98, 0xf9, + 0x9c, 0x1e, 0x3c, 0x45, 0x90, 0x99, 0x8f, 0x00, 0xbe, 0x03, 0xb8, 0x73, 0xfc, 0xfe, 0x69, 0xb7, + 0x47, 0x1e, 0xdc, 0x7f, 0x78, 0x7a, 0x72, 0xf4, 0xc1, 0xd1, 0xf1, 0x47, 0x47, 0xb9, 0x44, 0x71, + 0xef, 0xe2, 0x49, 0x25, 0x37, 0x97, 0x9d, 0xf8, 0x43, 0x9f, 0x9d, 0xfb, 0xf8, 0x00, 0xae, 0xc7, + 0xd4, 0xdd, 0x5e, 0xeb, 0xf8, 0xa4, 0x97, 0x43, 0xc5, 0xfc, 0xc5, 0x93, 0xca, 0xee, 0x5c, 0xdc, + 0x15, 0x36, 0x9b, 0x88, 0x65, 0xed, 0x03, 0x42, 0x72, 0xc6, 0xb2, 0x96, 0x06, 0x41, 0xf1, 0xfa, + 0xd7, 0x3f, 0x94, 0x12, 0xbf, 0x3e, 0x2d, 0x2d, 0xc0, 0x1a, 0x8f, 0x11, 0x6c, 0x44, 0xdc, 0xf8, + 0x0b, 0xd8, 0xbe, 0xd2, 0xb3, 0xb8, 0xba, 0xca, 0x9d, 0x55, 0x13, 0x57, 0x7c, 0xb1, 0x52, 0x3b, + 0x6a, 0xde, 0xf8, 0xfd, 0xe7, 0xbf, 0xbf, 0x33, 0x76, 0x61, 0x5b, 0x2a, 0x5f, 0x1f, 0x59, 0xbe, + 0xe5, 0xd0, 0xe0, 0x2e, 0x6a, 0xfc, 0x64, 0x48, 0xb7, 0x9a, 0xf2, 0xf7, 0x14, 0x7f, 0x8b, 0x20, + 0xbf, 0xa2, 0xcd, 0x71, 0x6d, 0xe5, 0x85, 0xad, 0x9d, 0x87, 0xe2, 0x6b, 0xcf, 0x01, 0x8b, 0x0f, + 0x88, 0x79, 0x4b, 0x72, 0xdd, 0x84, 0x6b, 0x8a, 0xeb, 0x9c, 0x05, 0x43, 0x1a, 0x2c, 0x51, 0xe2, + 0xaf, 0x10, 0x64, 0x63, 0x77, 0x8d, 0x6f, 0xaf, 0x7a, 0xff, 0x72, 0xdf, 0xae, 0xe6, 0x58, 0xd1, + 0x34, 0xff, 0x89, 0xa3, 0x8a, 0x9a, 0x85, 0xcb, 0x67, 0xa5, 0xc4, 0x9f, 0xcf, 0x4a, 0x89, 0x2f, + 0xc3, 0x12, 0xba, 0x0c, 0x4b, 0xe8, 0x8f, 0xb0, 0x84, 0xfe, 0x0a, 0x4b, 0xa8, 0x9f, 0x92, 0x1f, + 0xee, 0x37, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0x08, 0xa1, 0xea, 0xc7, 0x9d, 0x08, 0x00, 0x00, } diff --git a/components/engine/vendor/github.com/docker/swarmkit/api/logbroker.proto b/components/engine/vendor/github.com/docker/swarmkit/api/logbroker.proto index c820a96aba..b86b8e8863 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/api/logbroker.proto +++ b/components/engine/vendor/github.com/docker/swarmkit/api/logbroker.proto @@ -19,7 +19,7 @@ enum LogStream { message LogSubscriptionOptions { // Streams defines which log streams should be sent from the task source. // Empty means send all the messages. - repeated LogStream streams = 1; + repeated LogStream streams = 1 [packed=false]; // Follow instructs the publisher to continue sending log messages as they // are produced, after satisfying the initial query. diff --git a/components/engine/vendor/github.com/docker/swarmkit/api/objects.pb.go b/components/engine/vendor/github.com/docker/swarmkit/api/objects.pb.go index e285147735..a4b77904db 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/api/objects.pb.go +++ b/components/engine/vendor/github.com/docker/swarmkit/api/objects.pb.go @@ -217,6 +217,8 @@ type NetworkAttachment struct { Addresses []string `protobuf:"bytes,2,rep,name=addresses" json:"addresses,omitempty"` // List of aliases by which a task is resolved in a network Aliases []string `protobuf:"bytes,3,rep,name=aliases" json:"aliases,omitempty"` + // Map of all the driver 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"` } func (m *NetworkAttachment) Reset() { *m = NetworkAttachment{} } @@ -556,6 +558,13 @@ func (m *NetworkAttachment) CopyFrom(src interface{}) { copy(m.Aliases, o.Aliases) } + if o.DriverOpts != nil { + m.DriverOpts = make(map[string]string, len(o.DriverOpts)) + for k, v := range o.DriverOpts { + m.DriverOpts[k] = v + } + } + } func (m *Network) Copy() *Network { @@ -1189,6 +1198,23 @@ func (m *NetworkAttachment) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], s) } } + if len(m.DriverOpts) > 0 { + for k, _ := range m.DriverOpts { + dAtA[i] = 0x22 + i++ + v := m.DriverOpts[k] + mapSize := 1 + len(k) + sovObjects(uint64(len(k))) + 1 + len(v) + sovObjects(uint64(len(v))) + i = encodeVarintObjects(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintObjects(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintObjects(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } return i, nil } @@ -1767,6 +1793,14 @@ func (m *NetworkAttachment) Size() (n int) { n += 1 + l + sovObjects(uint64(l)) } } + if len(m.DriverOpts) > 0 { + for k, v := range m.DriverOpts { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovObjects(uint64(len(k))) + 1 + len(v) + sovObjects(uint64(len(v))) + n += mapEntrySize + 1 + sovObjects(uint64(mapEntrySize)) + } + } return n } @@ -4393,10 +4427,21 @@ func (this *NetworkAttachment) String() string { if this == nil { return "nil" } + keysForDriverOpts := make([]string, 0, len(this.DriverOpts)) + for k, _ := range this.DriverOpts { + keysForDriverOpts = append(keysForDriverOpts, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDriverOpts) + mapStringForDriverOpts := "map[string]string{" + for _, k := range keysForDriverOpts { + mapStringForDriverOpts += fmt.Sprintf("%v: %v,", k, this.DriverOpts[k]) + } + mapStringForDriverOpts += "}" s := strings.Join([]string{`&NetworkAttachment{`, `Network:` + strings.Replace(fmt.Sprintf("%v", this.Network), "Network", "Network", 1) + `,`, `Addresses:` + fmt.Sprintf("%v", this.Addresses) + `,`, `Aliases:` + fmt.Sprintf("%v", this.Aliases) + `,`, + `DriverOpts:` + mapStringForDriverOpts + `,`, `}`, }, "") return s @@ -6097,6 +6142,122 @@ func (m *NetworkAttachment) Unmarshal(dAtA []byte) error { } m.Aliases = append(m.Aliases, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DriverOpts", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthObjects + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthObjects + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.DriverOpts == nil { + m.DriverOpts = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowObjects + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthObjects + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.DriverOpts[mapkey] = mapvalue + } else { + var mapvalue string + m.DriverOpts[mapkey] = mapvalue + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipObjects(dAtA[iNdEx:]) @@ -7469,93 +7630,96 @@ var ( func init() { proto.RegisterFile("objects.proto", fileDescriptorObjects) } var fileDescriptorObjects = []byte{ - // 1405 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0xc1, 0x6f, 0x1b, 0x45, - 0x17, 0xef, 0xda, 0x1b, 0xdb, 0xfb, 0x9c, 0x58, 0xf9, 0xa6, 0xf9, 0xf2, 0x6d, 0xf3, 0x05, 0x3b, - 0xb8, 0x02, 0x55, 0xa8, 0x72, 0x4a, 0x29, 0x28, 0x0d, 0x14, 0x6a, 0x27, 0x11, 0xb5, 0x4a, 0x69, - 0x34, 0x2d, 0x2d, 0x37, 0x33, 0xd9, 0x9d, 0xba, 0x8b, 0xd7, 0x3b, 0xab, 0x9d, 0xb1, 0x8b, 0x6f, - 0x88, 0x63, 0xfe, 0x81, 0xdc, 0x38, 0xf4, 0xc4, 0x1d, 0x2e, 0x5c, 0x38, 0xf7, 0xc8, 0x09, 0x71, - 0x8a, 0xa8, 0xff, 0x0b, 0x24, 0x0e, 0x68, 0x66, 0x67, 0x9d, 0x4d, 0xbd, 0x4e, 0x5a, 0x54, 0x45, - 0x9c, 0x3c, 0xb3, 0xf3, 0xfb, 0xbd, 0x79, 0xef, 0xcd, 0x6f, 0xde, 0x3c, 0xc3, 0x02, 0xdb, 0xfb, - 0x9a, 0x3a, 0x82, 0x37, 0xc2, 0x88, 0x09, 0x86, 0x90, 0xcb, 0x9c, 0x1e, 0x8d, 0x1a, 0xfc, 0x09, - 0x89, 0xfa, 0x3d, 0x4f, 0x34, 0x86, 0xef, 0xae, 0x94, 0xc5, 0x28, 0xa4, 0x1a, 0xb0, 0x52, 0xe6, - 0x21, 0x75, 0x92, 0x49, 0xad, 0xcb, 0x58, 0xd7, 0xa7, 0xeb, 0x6a, 0xb6, 0x37, 0x78, 0xb4, 0x2e, - 0xbc, 0x3e, 0xe5, 0x82, 0xf4, 0x43, 0x0d, 0x58, 0xea, 0xb2, 0x2e, 0x53, 0xc3, 0x75, 0x39, 0xd2, - 0x5f, 0x2f, 0xbc, 0x48, 0x23, 0xc1, 0x48, 0x2f, 0x9d, 0x0f, 0xfd, 0x41, 0xd7, 0x0b, 0xd6, 0xe3, - 0x9f, 0xf8, 0x63, 0xfd, 0x67, 0x03, 0xcc, 0x3b, 0x54, 0x10, 0xf4, 0x21, 0x14, 0x87, 0x34, 0xe2, - 0x1e, 0x0b, 0x6c, 0x63, 0xcd, 0xb8, 0x54, 0xbe, 0xfa, 0xff, 0xc6, 0xb4, 0xbf, 0x8d, 0x07, 0x31, - 0xa4, 0x65, 0x3e, 0x3b, 0xac, 0x9d, 0xc3, 0x09, 0x03, 0x5d, 0x07, 0x70, 0x22, 0x4a, 0x04, 0x75, - 0x3b, 0x44, 0xd8, 0x39, 0xc5, 0x5f, 0x69, 0xc4, 0xae, 0x34, 0x12, 0x57, 0x1a, 0xf7, 0x93, 0x08, - 0xb0, 0xa5, 0xd1, 0x4d, 0x21, 0xa9, 0x83, 0xd0, 0x4d, 0xa8, 0xf9, 0xd3, 0xa9, 0x1a, 0xdd, 0x14, - 0xf5, 0x1f, 0x4d, 0x30, 0x3f, 0x67, 0x2e, 0x45, 0xcb, 0x90, 0xf3, 0x5c, 0xe5, 0xb6, 0xd5, 0x2a, - 0x8c, 0x0f, 0x6b, 0xb9, 0xf6, 0x36, 0xce, 0x79, 0x2e, 0xba, 0x0a, 0x66, 0x9f, 0x0a, 0xa2, 0x1d, - 0xb2, 0xb3, 0x02, 0x92, 0xb1, 0xeb, 0x68, 0x14, 0x16, 0x7d, 0x00, 0xa6, 0x3c, 0x06, 0xed, 0xc9, - 0x6a, 0x16, 0x47, 0xee, 0x79, 0x2f, 0xa4, 0x4e, 0xc2, 0x93, 0x78, 0xb4, 0x03, 0x65, 0x97, 0x72, - 0x27, 0xf2, 0x42, 0x21, 0x73, 0x68, 0x2a, 0xfa, 0xc5, 0x59, 0xf4, 0xed, 0x23, 0x28, 0x4e, 0xf3, - 0xd0, 0x47, 0x50, 0xe0, 0x82, 0x88, 0x01, 0xb7, 0xe7, 0x94, 0x85, 0xea, 0x4c, 0x07, 0x14, 0x4a, - 0xbb, 0xa0, 0x39, 0xe8, 0x16, 0x54, 0xfa, 0x24, 0x20, 0x5d, 0x1a, 0x75, 0xb4, 0x95, 0x82, 0xb2, - 0xf2, 0x66, 0x66, 0xe8, 0x31, 0x32, 0x36, 0x84, 0x17, 0xfa, 0xe9, 0x29, 0xda, 0x01, 0x20, 0x42, - 0x10, 0xe7, 0x71, 0x9f, 0x06, 0xc2, 0x2e, 0x2a, 0x2b, 0x6f, 0x65, 0xfa, 0x42, 0xc5, 0x13, 0x16, - 0xf5, 0x9a, 0x13, 0x30, 0x4e, 0x11, 0xd1, 0xa7, 0x50, 0x76, 0x68, 0x24, 0xbc, 0x47, 0x9e, 0x43, - 0x04, 0xb5, 0x4b, 0xca, 0x4e, 0x2d, 0xcb, 0xce, 0xd6, 0x11, 0x4c, 0x07, 0x95, 0x66, 0xa2, 0x2b, - 0x60, 0x46, 0xcc, 0xa7, 0xb6, 0xb5, 0x66, 0x5c, 0xaa, 0xcc, 0x3e, 0x16, 0xcc, 0x7c, 0x8a, 0x15, - 0x72, 0x73, 0x79, 0xff, 0xa0, 0x8e, 0x60, 0xb1, 0x64, 0x2c, 0x1a, 0x4a, 0x1a, 0xc6, 0x15, 0xe3, - 0x4b, 0xe3, 0x2b, 0xa3, 0xfe, 0x57, 0x1e, 0x8a, 0xf7, 0x68, 0x34, 0xf4, 0x9c, 0xd7, 0x2b, 0x9c, - 0xeb, 0xc7, 0x84, 0x93, 0x19, 0xa3, 0xde, 0x76, 0x4a, 0x3b, 0x1b, 0x50, 0xa2, 0x81, 0x1b, 0x32, - 0x2f, 0x10, 0x5a, 0x38, 0x99, 0x01, 0xee, 0x68, 0x0c, 0x9e, 0xa0, 0xd1, 0x0e, 0x2c, 0xc4, 0xf7, - 0xa1, 0x73, 0x4c, 0x35, 0x6b, 0x59, 0xf4, 0x2f, 0x14, 0x50, 0x1f, 0xf7, 0xfc, 0x20, 0x35, 0x43, - 0xdb, 0xb0, 0x10, 0x46, 0x74, 0xe8, 0xb1, 0x01, 0xef, 0xa8, 0x20, 0x0a, 0x2f, 0x15, 0x04, 0x9e, - 0x4f, 0x58, 0x72, 0x86, 0x3e, 0x86, 0x79, 0x49, 0xee, 0x24, 0x75, 0x04, 0x4e, 0xad, 0x23, 0x58, - 0x95, 0x3c, 0x3d, 0x41, 0x77, 0xe1, 0xbf, 0xc7, 0xbc, 0x98, 0x18, 0x2a, 0x9f, 0x6e, 0xe8, 0x7c, - 0xda, 0x13, 0xfd, 0x71, 0x13, 0xed, 0x1f, 0xd4, 0x2b, 0x30, 0x9f, 0x96, 0x40, 0xfd, 0xfb, 0x1c, - 0x94, 0x92, 0x44, 0xa2, 0x6b, 0xfa, 0xcc, 0x8c, 0xd9, 0x59, 0x4b, 0xb0, 0x2a, 0xde, 0xf8, 0xb8, - 0xae, 0xc1, 0x5c, 0xc8, 0x22, 0xc1, 0xed, 0xdc, 0x5a, 0x7e, 0xd6, 0x15, 0xdd, 0x65, 0x91, 0xd8, - 0x62, 0xc1, 0x23, 0xaf, 0x8b, 0x63, 0x30, 0x7a, 0x08, 0xe5, 0xa1, 0x17, 0x89, 0x01, 0xf1, 0x3b, - 0x5e, 0xc8, 0xed, 0xbc, 0xe2, 0xbe, 0x7d, 0xd2, 0x96, 0x8d, 0x07, 0x31, 0xbe, 0xbd, 0xdb, 0xaa, - 0x8c, 0x0f, 0x6b, 0x30, 0x99, 0x72, 0x0c, 0xda, 0x54, 0x3b, 0xe4, 0x2b, 0x77, 0xc0, 0x9a, 0xac, - 0xa0, 0xcb, 0x00, 0x41, 0x7c, 0x23, 0x3b, 0x13, 0x65, 0x2f, 0x8c, 0x0f, 0x6b, 0x96, 0xbe, 0xa7, - 0xed, 0x6d, 0x6c, 0x69, 0x40, 0xdb, 0x45, 0x08, 0x4c, 0xe2, 0xba, 0x91, 0xd2, 0xb9, 0x85, 0xd5, - 0xb8, 0xfe, 0x43, 0x01, 0xcc, 0xfb, 0x84, 0xf7, 0xce, 0xba, 0xaa, 0xca, 0x3d, 0xa7, 0x6e, 0xc6, - 0x65, 0x00, 0x1e, 0xeb, 0x4d, 0x86, 0x63, 0x1e, 0x85, 0xa3, 0x55, 0x28, 0xc3, 0xd1, 0x80, 0x38, - 0x1c, 0xee, 0x33, 0xa1, 0x2e, 0x81, 0x89, 0xd5, 0x18, 0x5d, 0x84, 0x62, 0xc0, 0x5c, 0x45, 0x2f, - 0x28, 0x3a, 0x8c, 0x0f, 0x6b, 0x05, 0x59, 0x2b, 0xda, 0xdb, 0xb8, 0x20, 0x97, 0xda, 0xae, 0x2c, - 0x53, 0x24, 0x08, 0x98, 0x20, 0xb2, 0x06, 0x73, 0x5d, 0xee, 0x32, 0xd5, 0xdf, 0x3c, 0x82, 0x25, - 0x65, 0x2a, 0xc5, 0x44, 0x0f, 0xe0, 0x7c, 0xe2, 0x6f, 0xda, 0x60, 0xe9, 0x55, 0x0c, 0x22, 0x6d, - 0x21, 0xb5, 0x92, 0x7a, 0x16, 0xac, 0xd9, 0xcf, 0x82, 0xca, 0x60, 0xd6, 0xb3, 0xd0, 0x82, 0x05, - 0x97, 0x72, 0x2f, 0xa2, 0xae, 0x2a, 0x13, 0x54, 0xdd, 0xcc, 0xca, 0xd5, 0x37, 0x4e, 0x32, 0x42, - 0xf1, 0xbc, 0xe6, 0xa8, 0x19, 0x6a, 0x42, 0x49, 0xeb, 0x86, 0xdb, 0x65, 0xa5, 0xdd, 0x97, 0x7c, - 0x0e, 0x26, 0xb4, 0x63, 0x65, 0x6e, 0xfe, 0x95, 0xca, 0xdc, 0x75, 0x00, 0x9f, 0x75, 0x3b, 0x6e, - 0xe4, 0x0d, 0x69, 0x64, 0x2f, 0xe8, 0x26, 0x21, 0x83, 0xbb, 0xad, 0x10, 0xd8, 0xf2, 0x59, 0x37, - 0x1e, 0x4e, 0x15, 0xa5, 0xca, 0xab, 0x15, 0xa5, 0xcd, 0x95, 0xfd, 0x83, 0xfa, 0x32, 0x2c, 0xa5, - 0x6b, 0xc8, 0x86, 0x71, 0xd3, 0xb8, 0x65, 0xec, 0x1a, 0xf5, 0xef, 0x0c, 0xf8, 0xcf, 0x54, 0xc0, - 0xe8, 0x7d, 0x28, 0xea, 0x90, 0x4f, 0xea, 0xa4, 0x34, 0x0f, 0x27, 0x58, 0xb4, 0x0a, 0x96, 0xbc, - 0x7f, 0x94, 0x73, 0x1a, 0x57, 0x16, 0x0b, 0x1f, 0x7d, 0x40, 0x36, 0x14, 0x89, 0xef, 0x11, 0xb9, - 0x96, 0x57, 0x6b, 0xc9, 0xb4, 0xfe, 0x34, 0x07, 0x45, 0x6d, 0xec, 0xac, 0xdf, 0x33, 0xbd, 0xed, - 0xd4, 0xad, 0xbd, 0x01, 0xf3, 0xf1, 0x51, 0x69, 0xb9, 0x99, 0xa7, 0x1e, 0x58, 0x39, 0xc6, 0xc7, - 0x52, 0xbb, 0x01, 0xa6, 0x17, 0x92, 0xbe, 0x7e, 0xcb, 0x32, 0x77, 0x6e, 0xef, 0x36, 0xef, 0xdc, - 0x0d, 0xe3, 0x5b, 0x53, 0x1a, 0x1f, 0xd6, 0x4c, 0xf9, 0x01, 0x2b, 0x5a, 0x66, 0xd5, 0xff, 0x69, - 0x0e, 0x8a, 0x5b, 0xfe, 0x80, 0x0b, 0x1a, 0x9d, 0x75, 0x92, 0xf4, 0xb6, 0x53, 0x49, 0xda, 0x82, - 0x62, 0xc4, 0x98, 0xe8, 0x38, 0xe4, 0xa4, 0xfc, 0x60, 0xc6, 0xc4, 0x56, 0xb3, 0x55, 0x91, 0x44, - 0x59, 0xb8, 0xe2, 0x39, 0x2e, 0x48, 0xea, 0x16, 0x41, 0x0f, 0x61, 0x39, 0x29, 0xf7, 0x7b, 0x8c, - 0x09, 0x2e, 0x22, 0x12, 0x76, 0x7a, 0x74, 0x24, 0x1b, 0x81, 0xfc, 0xac, 0xc6, 0x6f, 0x27, 0x70, - 0xa2, 0x91, 0x4a, 0xde, 0x6d, 0x3a, 0xc2, 0x4b, 0xda, 0x40, 0x2b, 0xe1, 0xdf, 0xa6, 0x23, 0x8e, - 0x3e, 0x81, 0x55, 0x3a, 0x81, 0x49, 0x8b, 0x1d, 0x9f, 0xf4, 0xe5, 0x43, 0xd6, 0x71, 0x7c, 0xe6, - 0xf4, 0x54, 0x2d, 0x35, 0xf1, 0x05, 0x9a, 0x36, 0xf5, 0x59, 0x8c, 0xd8, 0x92, 0x00, 0xc4, 0xc1, - 0xde, 0xf3, 0x89, 0xd3, 0xf3, 0x3d, 0x2e, 0x7b, 0xfb, 0x54, 0x2f, 0x27, 0xcb, 0xa1, 0xf4, 0x6d, - 0xe3, 0x84, 0x6c, 0x35, 0x5a, 0x47, 0xdc, 0x54, 0x67, 0xc8, 0x77, 0x02, 0x11, 0x8d, 0xf0, 0xff, - 0xf6, 0xb2, 0x57, 0x51, 0x0b, 0xca, 0x83, 0x40, 0x6e, 0x1f, 0xe7, 0xc0, 0x7a, 0xd9, 0x1c, 0x40, - 0xcc, 0x92, 0x91, 0xaf, 0x0c, 0x61, 0xf5, 0xa4, 0xcd, 0xd1, 0x22, 0xe4, 0x7b, 0x74, 0x14, 0xeb, - 0x07, 0xcb, 0x21, 0xba, 0x09, 0x73, 0x43, 0xe2, 0x0f, 0xa8, 0x56, 0xce, 0x3b, 0x59, 0xfb, 0x65, - 0x9b, 0xc4, 0x31, 0x71, 0x33, 0xb7, 0x61, 0x64, 0xca, 0xf6, 0x17, 0x03, 0x0a, 0xf7, 0xa8, 0x13, - 0x51, 0xf1, 0x5a, 0x55, 0xbb, 0x71, 0x4c, 0xb5, 0xd5, 0xec, 0x2e, 0x4f, 0xee, 0x3a, 0x25, 0xda, - 0x15, 0x28, 0x79, 0x81, 0xa0, 0x51, 0x40, 0x7c, 0xa5, 0xda, 0x12, 0x9e, 0xcc, 0x33, 0x03, 0x78, - 0x6a, 0x40, 0x21, 0x6e, 0x83, 0xce, 0x3a, 0x80, 0x78, 0xd7, 0x17, 0x03, 0xc8, 0x74, 0xf2, 0x4f, - 0x03, 0x4a, 0x98, 0x72, 0x36, 0x88, 0x5e, 0xf3, 0x5f, 0x82, 0x17, 0xda, 0x8a, 0xfc, 0x3f, 0x6e, - 0x2b, 0x10, 0x98, 0x3d, 0x2f, 0xd0, 0x0d, 0x10, 0x56, 0x63, 0xd4, 0x80, 0x62, 0x48, 0x46, 0x3e, - 0x23, 0xae, 0x2e, 0x94, 0x4b, 0x53, 0xff, 0x9a, 0x9b, 0xc1, 0x08, 0x27, 0xa0, 0xcd, 0xa5, 0xfd, - 0x83, 0xfa, 0x22, 0x54, 0xd2, 0x91, 0x3f, 0x36, 0xea, 0xbf, 0x19, 0x60, 0xed, 0x7c, 0x23, 0x68, - 0xa0, 0x3a, 0xf0, 0x7f, 0x65, 0xf0, 0x6b, 0xd3, 0xff, 0xac, 0xad, 0x63, 0x7f, 0x9a, 0xb3, 0x0e, - 0xb5, 0x65, 0x3f, 0x7b, 0x5e, 0x3d, 0xf7, 0xfb, 0xf3, 0xea, 0xb9, 0x6f, 0xc7, 0x55, 0xe3, 0xd9, - 0xb8, 0x6a, 0xfc, 0x3a, 0xae, 0x1a, 0x7f, 0x8c, 0xab, 0xc6, 0x5e, 0x41, 0xe5, 0xe7, 0xbd, 0xbf, - 0x03, 0x00, 0x00, 0xff, 0xff, 0xa3, 0x7d, 0xca, 0x6a, 0x9f, 0x11, 0x00, 0x00, + // 1448 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0xcd, 0x6f, 0x1b, 0x37, + 0x16, 0xcf, 0x48, 0x63, 0x7d, 0x3c, 0xd9, 0x5a, 0x2f, 0xe3, 0xf5, 0x4e, 0xb4, 0x5e, 0xc9, 0xab, + 0x60, 0x8b, 0xa0, 0x08, 0xe4, 0xd4, 0x4d, 0x0a, 0xc7, 0x6d, 0xda, 0x48, 0xb6, 0xd1, 0x08, 0x69, + 0x1a, 0x83, 0x49, 0x9d, 0xde, 0x54, 0x7a, 0x86, 0x51, 0xa6, 0x1a, 0x0d, 0x07, 0x43, 0x4a, 0xa9, + 0x6e, 0x3d, 0xfb, 0x1f, 0x30, 0x7a, 0xe9, 0x21, 0xa7, 0xde, 0xdb, 0x4b, 0x2f, 0x3d, 0xe7, 0xd8, + 0x53, 0xd1, 0x93, 0xd1, 0xe8, 0xbf, 0x28, 0xd0, 0x43, 0x41, 0x0e, 0x47, 0x1e, 0x5b, 0xe3, 0x8f, + 0x14, 0x81, 0xd1, 0xd3, 0x90, 0xc3, 0xdf, 0xef, 0x7d, 0xf1, 0xbd, 0x47, 0x12, 0xe6, 0xd8, 0xee, + 0x97, 0xd4, 0x16, 0xbc, 0x11, 0x84, 0x4c, 0x30, 0x84, 0x1c, 0x66, 0xf7, 0x68, 0xd8, 0xe0, 0xcf, + 0x49, 0xd8, 0xef, 0xb9, 0xa2, 0x31, 0x7c, 0xa7, 0x52, 0x12, 0xa3, 0x80, 0x6a, 0x40, 0xa5, 0xc4, + 0x03, 0x6a, 0xc7, 0x93, 0x5a, 0x97, 0xb1, 0xae, 0x47, 0x57, 0xd4, 0x6c, 0x77, 0xf0, 0x74, 0x45, + 0xb8, 0x7d, 0xca, 0x05, 0xe9, 0x07, 0x1a, 0xb0, 0xd0, 0x65, 0x5d, 0xa6, 0x86, 0x2b, 0x72, 0xa4, + 0xff, 0x5e, 0x39, 0x4e, 0x23, 0xfe, 0x48, 0x2f, 0x5d, 0x0e, 0xbc, 0x41, 0xd7, 0xf5, 0x57, 0xa2, + 0x4f, 0xf4, 0xb3, 0xfe, 0xa3, 0x01, 0xe6, 0x03, 0x2a, 0x08, 0x7a, 0x1f, 0xf2, 0x43, 0x1a, 0x72, + 0x97, 0xf9, 0x96, 0xb1, 0x6c, 0x5c, 0x2b, 0xad, 0xfe, 0xa7, 0x31, 0x6d, 0x6f, 0x63, 0x27, 0x82, + 0xb4, 0xcc, 0x97, 0x07, 0xb5, 0x4b, 0x38, 0x66, 0xa0, 0xdb, 0x00, 0x76, 0x48, 0x89, 0xa0, 0x4e, + 0x87, 0x08, 0x2b, 0xa3, 0xf8, 0x95, 0x46, 0x64, 0x4a, 0x23, 0x36, 0xa5, 0xf1, 0x38, 0xf6, 0x00, + 0x17, 0x35, 0xba, 0x29, 0x24, 0x75, 0x10, 0x38, 0x31, 0x35, 0x7b, 0x36, 0x55, 0xa3, 0x9b, 0xa2, + 0xfe, 0xbd, 0x09, 0xe6, 0xa7, 0xcc, 0xa1, 0x68, 0x11, 0x32, 0xae, 0xa3, 0xcc, 0x2e, 0xb6, 0x72, + 0xe3, 0x83, 0x5a, 0xa6, 0xbd, 0x89, 0x33, 0xae, 0x83, 0x56, 0xc1, 0xec, 0x53, 0x41, 0xb4, 0x41, + 0x56, 0x9a, 0x43, 0xd2, 0x77, 0xed, 0x8d, 0xc2, 0xa2, 0xf7, 0xc0, 0x94, 0xdb, 0xa0, 0x2d, 0x59, + 0x4a, 0xe3, 0x48, 0x9d, 0x8f, 0x02, 0x6a, 0xc7, 0x3c, 0x89, 0x47, 0x5b, 0x50, 0x72, 0x28, 0xb7, + 0x43, 0x37, 0x10, 0x32, 0x86, 0xa6, 0xa2, 0x5f, 0x3d, 0x89, 0xbe, 0x79, 0x08, 0xc5, 0x49, 0x1e, + 0xfa, 0x00, 0x72, 0x5c, 0x10, 0x31, 0xe0, 0xd6, 0x8c, 0x92, 0x50, 0x3d, 0xd1, 0x00, 0x85, 0xd2, + 0x26, 0x68, 0x0e, 0xba, 0x07, 0xe5, 0x3e, 0xf1, 0x49, 0x97, 0x86, 0x1d, 0x2d, 0x25, 0xa7, 0xa4, + 0xfc, 0x2f, 0xd5, 0xf5, 0x08, 0x19, 0x09, 0xc2, 0x73, 0xfd, 0xe4, 0x14, 0x6d, 0x01, 0x10, 0x21, + 0x88, 0xfd, 0xac, 0x4f, 0x7d, 0x61, 0xe5, 0x95, 0x94, 0xff, 0xa7, 0xda, 0x42, 0xc5, 0x73, 0x16, + 0xf6, 0x9a, 0x13, 0x30, 0x4e, 0x10, 0xd1, 0xc7, 0x50, 0xb2, 0x69, 0x28, 0xdc, 0xa7, 0xae, 0x4d, + 0x04, 0xb5, 0x0a, 0x4a, 0x4e, 0x2d, 0x4d, 0xce, 0xc6, 0x21, 0x4c, 0x3b, 0x95, 0x64, 0xa2, 0x1b, + 0x60, 0x86, 0xcc, 0xa3, 0x56, 0x71, 0xd9, 0xb8, 0x56, 0x3e, 0x79, 0x5b, 0x30, 0xf3, 0x28, 0x56, + 0xc8, 0xf5, 0xc5, 0xbd, 0xfd, 0x3a, 0x82, 0xf9, 0x82, 0x31, 0x6f, 0xa8, 0xd4, 0x30, 0x6e, 0x18, + 0x9f, 0x1b, 0x5f, 0x18, 0xf5, 0x3f, 0xb2, 0x90, 0x7f, 0x44, 0xc3, 0xa1, 0x6b, 0xbf, 0xd9, 0xc4, + 0xb9, 0x7d, 0x24, 0x71, 0x52, 0x7d, 0xd4, 0x6a, 0xa7, 0x72, 0x67, 0x0d, 0x0a, 0xd4, 0x77, 0x02, + 0xe6, 0xfa, 0x42, 0x27, 0x4e, 0xaa, 0x83, 0x5b, 0x1a, 0x83, 0x27, 0x68, 0xb4, 0x05, 0x73, 0x51, + 0x3d, 0x74, 0x8e, 0x64, 0xcd, 0x72, 0x1a, 0xfd, 0x33, 0x05, 0xd4, 0xdb, 0x3d, 0x3b, 0x48, 0xcc, + 0xd0, 0x26, 0xcc, 0x05, 0x21, 0x1d, 0xba, 0x6c, 0xc0, 0x3b, 0xca, 0x89, 0xdc, 0xb9, 0x9c, 0xc0, + 0xb3, 0x31, 0x4b, 0xce, 0xd0, 0x87, 0x30, 0x2b, 0xc9, 0x9d, 0xb8, 0x8f, 0xc0, 0x99, 0x7d, 0x04, + 0xab, 0x96, 0xa7, 0x27, 0xe8, 0x21, 0xfc, 0xeb, 0x88, 0x15, 0x13, 0x41, 0xa5, 0xb3, 0x05, 0x5d, + 0x4e, 0x5a, 0xa2, 0x7f, 0xae, 0xa3, 0xbd, 0xfd, 0x7a, 0x19, 0x66, 0x93, 0x29, 0x50, 0xff, 0x36, + 0x03, 0x85, 0x38, 0x90, 0xe8, 0xa6, 0xde, 0x33, 0xe3, 0xe4, 0xa8, 0xc5, 0x58, 0xe5, 0x6f, 0xb4, + 0x5d, 0x37, 0x61, 0x26, 0x60, 0xa1, 0xe0, 0x56, 0x66, 0x39, 0x7b, 0x52, 0x89, 0x6e, 0xb3, 0x50, + 0x6c, 0x30, 0xff, 0xa9, 0xdb, 0xc5, 0x11, 0x18, 0x3d, 0x81, 0xd2, 0xd0, 0x0d, 0xc5, 0x80, 0x78, + 0x1d, 0x37, 0xe0, 0x56, 0x56, 0x71, 0xdf, 0x3a, 0x4d, 0x65, 0x63, 0x27, 0xc2, 0xb7, 0xb7, 0x5b, + 0xe5, 0xf1, 0x41, 0x0d, 0x26, 0x53, 0x8e, 0x41, 0x8b, 0x6a, 0x07, 0xbc, 0xf2, 0x00, 0x8a, 0x93, + 0x15, 0x74, 0x1d, 0xc0, 0x8f, 0x2a, 0xb2, 0x33, 0xc9, 0xec, 0xb9, 0xf1, 0x41, 0xad, 0xa8, 0xeb, + 0xb4, 0xbd, 0x89, 0x8b, 0x1a, 0xd0, 0x76, 0x10, 0x02, 0x93, 0x38, 0x4e, 0xa8, 0xf2, 0xbc, 0x88, + 0xd5, 0xb8, 0xfe, 0x5d, 0x0e, 0xcc, 0xc7, 0x84, 0xf7, 0x2e, 0xba, 0xab, 0x4a, 0x9d, 0x53, 0x95, + 0x71, 0x1d, 0x80, 0x47, 0xf9, 0x26, 0xdd, 0x31, 0x0f, 0xdd, 0xd1, 0x59, 0x28, 0xdd, 0xd1, 0x80, + 0xc8, 0x1d, 0xee, 0x31, 0xa1, 0x8a, 0xc0, 0xc4, 0x6a, 0x8c, 0xae, 0x42, 0xde, 0x67, 0x8e, 0xa2, + 0xe7, 0x14, 0x1d, 0xc6, 0x07, 0xb5, 0x9c, 0xec, 0x15, 0xed, 0x4d, 0x9c, 0x93, 0x4b, 0x6d, 0x47, + 0xb6, 0x29, 0xe2, 0xfb, 0x4c, 0x10, 0xd9, 0x83, 0xb9, 0x6e, 0x77, 0xa9, 0xd9, 0xdf, 0x3c, 0x84, + 0xc5, 0x6d, 0x2a, 0xc1, 0x44, 0x3b, 0x70, 0x39, 0xb6, 0x37, 0x29, 0xb0, 0xf0, 0x3a, 0x02, 0x91, + 0x96, 0x90, 0x58, 0x49, 0x1c, 0x0b, 0xc5, 0x93, 0x8f, 0x05, 0x15, 0xc1, 0xb4, 0x63, 0xa1, 0x05, + 0x73, 0x0e, 0xe5, 0x6e, 0x48, 0x1d, 0xd5, 0x26, 0xa8, 0xaa, 0xcc, 0xf2, 0xea, 0x7f, 0x4f, 0x13, + 0x42, 0xf1, 0xac, 0xe6, 0xa8, 0x19, 0x6a, 0x42, 0x41, 0xe7, 0x0d, 0xb7, 0x4a, 0x2a, 0x77, 0xcf, + 0x79, 0x1c, 0x4c, 0x68, 0x47, 0xda, 0xdc, 0xec, 0x6b, 0xb5, 0xb9, 0xdb, 0x00, 0x1e, 0xeb, 0x76, + 0x9c, 0xd0, 0x1d, 0xd2, 0xd0, 0x9a, 0xd3, 0x97, 0x84, 0x14, 0xee, 0xa6, 0x42, 0xe0, 0xa2, 0xc7, + 0xba, 0xd1, 0x70, 0xaa, 0x29, 0x95, 0x5f, 0xaf, 0x29, 0xad, 0x57, 0xf6, 0xf6, 0xeb, 0x8b, 0xb0, + 0x90, 0xec, 0x21, 0x6b, 0xc6, 0x5d, 0xe3, 0x9e, 0xb1, 0x6d, 0xd4, 0xbf, 0xc9, 0xc0, 0x3f, 0xa7, + 0x1c, 0x46, 0xb7, 0x20, 0xaf, 0x5d, 0x3e, 0xed, 0x26, 0xa5, 0x79, 0x38, 0xc6, 0xa2, 0x25, 0x28, + 0xca, 0xfa, 0xa3, 0x9c, 0xd3, 0xa8, 0xb3, 0x14, 0xf1, 0xe1, 0x0f, 0x64, 0x41, 0x9e, 0x78, 0x2e, + 0x91, 0x6b, 0x59, 0xb5, 0x16, 0x4f, 0xd1, 0x0e, 0x94, 0xa2, 0xb8, 0x74, 0x58, 0x20, 0xb8, 0x65, + 0xaa, 0xbd, 0xb9, 0x75, 0xae, 0xbd, 0xd1, 0xe1, 0x7a, 0x18, 0x08, 0xbe, 0xe5, 0x8b, 0x70, 0x84, + 0xc1, 0x99, 0xfc, 0xa8, 0xdc, 0x81, 0x7f, 0x1c, 0x5b, 0x46, 0xf3, 0x90, 0xed, 0xd1, 0x51, 0xd4, + 0x12, 0xb0, 0x1c, 0xa2, 0x05, 0x98, 0x19, 0x12, 0x6f, 0x40, 0x75, 0x07, 0x89, 0x26, 0xeb, 0x99, + 0x35, 0xa3, 0xfe, 0x22, 0x03, 0x79, 0xad, 0xf0, 0xa2, 0x8f, 0x59, 0xad, 0x76, 0xaa, 0x99, 0xdc, + 0x81, 0x59, 0x1d, 0xa9, 0xa8, 0x0a, 0xcc, 0x33, 0xf3, 0x48, 0x47, 0x36, 0xaa, 0x80, 0x3b, 0x60, + 0xba, 0x01, 0xe9, 0xeb, 0x23, 0x36, 0x55, 0x73, 0x7b, 0xbb, 0xf9, 0xe0, 0x61, 0x10, 0x15, 0x73, + 0x61, 0x7c, 0x50, 0x33, 0xe5, 0x0f, 0xac, 0x68, 0xa9, 0x87, 0xd1, 0x0f, 0x33, 0x90, 0xdf, 0xf0, + 0x06, 0x5c, 0xd0, 0xf0, 0xa2, 0x83, 0xa4, 0xd5, 0x4e, 0x05, 0x69, 0x03, 0xf2, 0x21, 0x63, 0xa2, + 0x63, 0x93, 0xd3, 0xe2, 0x83, 0x19, 0x13, 0x1b, 0xcd, 0x56, 0x59, 0x12, 0x65, 0x3f, 0x8d, 0xe6, + 0x38, 0x27, 0xa9, 0x1b, 0x04, 0x3d, 0x81, 0xc5, 0xf8, 0x14, 0xda, 0x65, 0x4c, 0x70, 0x11, 0x92, + 0xa0, 0xd3, 0xa3, 0x23, 0x79, 0x3f, 0xc9, 0x9e, 0x74, 0x1f, 0xdd, 0xf2, 0xed, 0x70, 0xa4, 0x82, + 0x77, 0x9f, 0x8e, 0xf0, 0x82, 0x16, 0xd0, 0x8a, 0xf9, 0xf7, 0xe9, 0x88, 0xa3, 0x8f, 0x60, 0x89, + 0x4e, 0x60, 0x52, 0x62, 0xc7, 0x23, 0x7d, 0x79, 0xbe, 0x76, 0x6c, 0x8f, 0xd9, 0x3d, 0xd5, 0xe2, + 0x4d, 0x7c, 0x85, 0x26, 0x45, 0x7d, 0x12, 0x21, 0x36, 0x24, 0x00, 0x71, 0xb0, 0x76, 0x3d, 0x62, + 0xf7, 0x3c, 0x97, 0xcb, 0x27, 0x47, 0xe2, 0x8a, 0x29, 0xbb, 0xb4, 0xb4, 0x6d, 0xed, 0x94, 0x68, + 0x35, 0x5a, 0x87, 0xdc, 0xc4, 0x85, 0x55, 0x57, 0xcf, 0xbf, 0x77, 0xd3, 0x57, 0x51, 0x0b, 0x4a, + 0x03, 0x5f, 0xaa, 0x8f, 0x62, 0x50, 0x3c, 0x6f, 0x0c, 0x20, 0x62, 0x49, 0xcf, 0x2b, 0x43, 0x58, + 0x3a, 0x4d, 0x79, 0x4a, 0x6d, 0xde, 0x4d, 0xd6, 0x66, 0x69, 0xf5, 0xed, 0x34, 0x7d, 0xe9, 0x22, + 0x13, 0x75, 0x9c, 0x9a, 0xb6, 0x3f, 0x19, 0x90, 0x7b, 0x44, 0xed, 0x90, 0x8a, 0x37, 0x9a, 0xb5, + 0x6b, 0x47, 0xb2, 0xb6, 0x9a, 0x7e, 0xf9, 0x94, 0x5a, 0xa7, 0x92, 0xb6, 0x02, 0x05, 0xd7, 0x17, + 0x34, 0xf4, 0x89, 0xa7, 0xb2, 0xb6, 0x80, 0x27, 0xf3, 0x54, 0x07, 0x5e, 0x18, 0x90, 0x8b, 0x6e, + 0x67, 0x17, 0xed, 0x40, 0xa4, 0xf5, 0xb8, 0x03, 0xa9, 0x46, 0xfe, 0x6e, 0x40, 0x01, 0x53, 0xce, + 0x06, 0xe1, 0x1b, 0x7e, 0xa9, 0x1c, 0xbb, 0xed, 0x64, 0xff, 0xf2, 0x6d, 0x07, 0x81, 0xd9, 0x73, + 0x7d, 0x7d, 0x2f, 0xc3, 0x6a, 0x8c, 0x1a, 0x90, 0x0f, 0xc8, 0xc8, 0x63, 0xc4, 0xd1, 0x8d, 0x72, + 0x61, 0xea, 0x31, 0xdf, 0xf4, 0x47, 0x38, 0x06, 0xad, 0x2f, 0xec, 0xed, 0xd7, 0xe7, 0xa1, 0x9c, + 0xf4, 0xfc, 0x99, 0x51, 0xff, 0xc5, 0x80, 0xe2, 0xd6, 0x57, 0x82, 0xfa, 0xea, 0x61, 0xf0, 0xb7, + 0x74, 0x7e, 0x79, 0xfa, 0xc1, 0x5f, 0x3c, 0xf2, 0x96, 0x4f, 0xdb, 0xd4, 0x96, 0xf5, 0xf2, 0x55, + 0xf5, 0xd2, 0xaf, 0xaf, 0xaa, 0x97, 0xbe, 0x1e, 0x57, 0x8d, 0x97, 0xe3, 0xaa, 0xf1, 0xf3, 0xb8, + 0x6a, 0xfc, 0x36, 0xae, 0x1a, 0xbb, 0x39, 0x15, 0x9f, 0x77, 0xff, 0x0c, 0x00, 0x00, 0xff, 0xff, + 0x92, 0x44, 0x63, 0xd8, 0x36, 0x12, 0x00, 0x00, } diff --git a/components/engine/vendor/github.com/docker/swarmkit/api/objects.proto b/components/engine/vendor/github.com/docker/swarmkit/api/objects.proto index 7136a88840..c8f03ef2c1 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/api/objects.proto +++ b/components/engine/vendor/github.com/docker/swarmkit/api/objects.proto @@ -255,6 +255,9 @@ message NetworkAttachment { // List of aliases by which a task is resolved in a network repeated string aliases = 3; + + // Map of all the driver options for this network + map driver_opts = 4; } message Network { diff --git a/components/engine/vendor/github.com/docker/swarmkit/api/raft.pb.go b/components/engine/vendor/github.com/docker/swarmkit/api/raft.pb.go index 5d2157f8b3..6a1e8ef533 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/api/raft.pb.go +++ b/components/engine/vendor/github.com/docker/swarmkit/api/raft.pb.go @@ -96,7 +96,7 @@ type JoinResponse struct { Members []*RaftMember `protobuf:"bytes,2,rep,name=members" json:"members,omitempty"` // RemovedMembers is a list of members that have been removed from // the cluster, so the new node can avoid communicating with them. - RemovedMembers []uint64 `protobuf:"varint,3,rep,packed,name=removed_members,json=removedMembers" json:"removed_members,omitempty"` + RemovedMembers []uint64 `protobuf:"varint,3,rep,name=removed_members,json=removedMembers" json:"removed_members,omitempty"` } func (m *JoinResponse) Reset() { *m = JoinResponse{} } @@ -1111,21 +1111,11 @@ func (m *JoinResponse) MarshalTo(dAtA []byte) (int, error) { } } if len(m.RemovedMembers) > 0 { - dAtA3 := make([]byte, len(m.RemovedMembers)*10) - var j2 int for _, num := range m.RemovedMembers { - for num >= 1<<7 { - dAtA3[j2] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j2++ - } - dAtA3[j2] = uint8(num) - j2++ + dAtA[i] = 0x18 + i++ + i = encodeVarintRaft(dAtA, i, uint64(num)) } - dAtA[i] = 0x1a - i++ - i = encodeVarintRaft(dAtA, i, uint64(j2)) - i += copy(dAtA[i:], dAtA3[:j2]) } return i, nil } @@ -1149,11 +1139,11 @@ func (m *LeaveRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintRaft(dAtA, i, uint64(m.Node.Size())) - n4, err := m.Node.MarshalTo(dAtA[i:]) + n2, err := m.Node.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n4 + i += n2 } return i, nil } @@ -1195,11 +1185,11 @@ func (m *ProcessRaftMessageRequest) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0xa i++ i = encodeVarintRaft(dAtA, i, uint64(m.Message.Size())) - n5, err := m.Message.MarshalTo(dAtA[i:]) + n3, err := m.Message.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n5 + i += n3 } return i, nil } @@ -1325,11 +1315,11 @@ func (m *StoreAction) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintRaft(dAtA, i, uint64(m.Action)) } if m.Target != nil { - nn6, err := m.Target.MarshalTo(dAtA[i:]) + nn4, err := m.Target.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += nn6 + i += nn4 } return i, nil } @@ -1340,11 +1330,11 @@ func (m *StoreAction_Node) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintRaft(dAtA, i, uint64(m.Node.Size())) - n7, err := m.Node.MarshalTo(dAtA[i:]) + n5, err := m.Node.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n7 + i += n5 } return i, nil } @@ -1354,11 +1344,11 @@ func (m *StoreAction_Service) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x1a i++ i = encodeVarintRaft(dAtA, i, uint64(m.Service.Size())) - n8, err := m.Service.MarshalTo(dAtA[i:]) + n6, err := m.Service.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n8 + i += n6 } return i, nil } @@ -1368,11 +1358,11 @@ func (m *StoreAction_Task) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x22 i++ i = encodeVarintRaft(dAtA, i, uint64(m.Task.Size())) - n9, err := m.Task.MarshalTo(dAtA[i:]) + n7, err := m.Task.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n9 + i += n7 } return i, nil } @@ -1382,11 +1372,11 @@ func (m *StoreAction_Network) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x2a i++ i = encodeVarintRaft(dAtA, i, uint64(m.Network.Size())) - n10, err := m.Network.MarshalTo(dAtA[i:]) + n8, err := m.Network.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n10 + i += n8 } return i, nil } @@ -1396,11 +1386,11 @@ func (m *StoreAction_Cluster) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x32 i++ i = encodeVarintRaft(dAtA, i, uint64(m.Cluster.Size())) - n11, err := m.Cluster.MarshalTo(dAtA[i:]) + n9, err := m.Cluster.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n11 + i += n9 } return i, nil } @@ -1410,11 +1400,11 @@ func (m *StoreAction_Secret) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x3a i++ i = encodeVarintRaft(dAtA, i, uint64(m.Secret.Size())) - n12, err := m.Secret.MarshalTo(dAtA[i:]) + n10, err := m.Secret.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n12 + i += n10 } return i, nil } @@ -1424,11 +1414,11 @@ func (m *StoreAction_Resource) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x42 i++ i = encodeVarintRaft(dAtA, i, uint64(m.Resource.Size())) - n13, err := m.Resource.MarshalTo(dAtA[i:]) + n11, err := m.Resource.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n13 + i += n11 } return i, nil } @@ -1438,11 +1428,11 @@ func (m *StoreAction_Extension) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x4a i++ i = encodeVarintRaft(dAtA, i, uint64(m.Extension.Size())) - n14, err := m.Extension.MarshalTo(dAtA[i:]) + n12, err := m.Extension.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n14 + i += n12 } return i, nil } @@ -1452,11 +1442,11 @@ func (m *StoreAction_Config) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x52 i++ i = encodeVarintRaft(dAtA, i, uint64(m.Config.Size())) - n15, err := m.Config.MarshalTo(dAtA[i:]) + n13, err := m.Config.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n15 + i += n13 } return i, nil } @@ -1814,11 +1804,9 @@ func (m *JoinResponse) Size() (n int) { } } if len(m.RemovedMembers) > 0 { - l = 0 for _, e := range m.RemovedMembers { - l += sovRaft(uint64(e)) + n += 1 + sovRaft(uint64(e)) } - n += 1 + sovRaft(uint64(l)) + l } return n } @@ -2525,7 +2513,24 @@ func (m *JoinResponse) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 3: - if wireType == 2 { + if wireType == 0 { + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowRaft + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.RemovedMembers = append(m.RemovedMembers, v) + } else if wireType == 2 { var packedLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { @@ -2566,23 +2571,6 @@ func (m *JoinResponse) Unmarshal(dAtA []byte) error { } m.RemovedMembers = append(m.RemovedMembers, v) } - } else if wireType == 0 { - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowRaft - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.RemovedMembers = append(m.RemovedMembers, v) } else { return fmt.Errorf("proto: wrong wireType = %d for field RemovedMembers", wireType) } @@ -3586,65 +3574,65 @@ var ( func init() { proto.RegisterFile("raft.proto", fileDescriptorRaft) } var fileDescriptorRaft = []byte{ - // 949 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x96, 0x4f, 0x6f, 0x1b, 0x45, - 0x18, 0xc6, 0x77, 0xed, 0xad, 0x9d, 0xbc, 0x6e, 0xe2, 0x68, 0x42, 0xc2, 0x76, 0x29, 0x8e, 0xbb, - 0x45, 0xaa, 0x5b, 0x91, 0xb5, 0x30, 0x48, 0xa0, 0x42, 0x0f, 0xb1, 0x63, 0xc9, 0xa6, 0xad, 0x53, - 0x6d, 0x12, 0xe8, 0x2d, 0xac, 0x77, 0x27, 0xee, 0x62, 0x7b, 0xc7, 0xcc, 0x8c, 0x1d, 0xb8, 0xa0, - 0x1e, 0x51, 0xae, 0x48, 0xc0, 0xa5, 0x27, 0x38, 0xf7, 0x03, 0xf0, 0x01, 0x50, 0xc4, 0x89, 0x1b, - 0x9c, 0x22, 0xea, 0x0f, 0x00, 0x5f, 0x01, 0xcd, 0xec, 0xae, 0x1d, 0x9c, 0xb5, 0x9b, 0x8b, 0x3d, - 0x9e, 0xf9, 0x3d, 0xef, 0xf3, 0xce, 0xbf, 0x77, 0x0c, 0x40, 0x9d, 0x63, 0x6e, 0x0d, 0x28, 0xe1, - 0x04, 0x21, 0x8f, 0xb8, 0x5d, 0x4c, 0x2d, 0x76, 0xe2, 0xd0, 0x7e, 0xd7, 0xe7, 0xd6, 0xe8, 0x3d, - 0x63, 0x85, 0xb4, 0xbf, 0xc4, 0x2e, 0x67, 0x21, 0x62, 0xe4, 0xf8, 0x37, 0x03, 0x1c, 0xff, 0xd8, - 0xee, 0xf8, 0xfc, 0xd9, 0xb0, 0x6d, 0xb9, 0xa4, 0x5f, 0x76, 0x09, 0xc5, 0x84, 0x95, 0x31, 0x77, - 0xbd, 0xb2, 0x08, 0x29, 0x3f, 0x06, 0xed, 0xf2, 0x34, 0xbc, 0xf1, 0x46, 0x87, 0x74, 0x88, 0x6c, - 0x96, 0x45, 0x2b, 0xea, 0x5d, 0x1f, 0xf4, 0x86, 0x1d, 0x3f, 0x28, 0x87, 0x5f, 0x61, 0xa7, 0xf9, - 0x52, 0x05, 0xb0, 0x9d, 0x63, 0xfe, 0x18, 0xf7, 0xdb, 0x98, 0xa2, 0xdb, 0x90, 0x15, 0x71, 0x8e, - 0x7c, 0x4f, 0x57, 0x8b, 0x6a, 0x49, 0xab, 0xc2, 0xf8, 0x7c, 0x2b, 0x23, 0x80, 0xe6, 0xae, 0x9d, - 0x11, 0x43, 0x4d, 0x4f, 0x40, 0x01, 0xf1, 0xb0, 0x80, 0x52, 0x45, 0xb5, 0xb4, 0x1c, 0x42, 0x2d, - 0xe2, 0x61, 0x01, 0x89, 0xa1, 0xa6, 0x87, 0x10, 0x68, 0x8e, 0xe7, 0x51, 0x3d, 0x2d, 0x08, 0x5b, - 0xb6, 0x51, 0x15, 0x32, 0x8c, 0x3b, 0x7c, 0xc8, 0x74, 0xad, 0xa8, 0x96, 0x72, 0x95, 0x77, 0xac, - 0xcb, 0xeb, 0x60, 0x4d, 0xb3, 0xd9, 0x97, 0x6c, 0x55, 0x3b, 0x3b, 0xdf, 0x52, 0xec, 0x48, 0x69, - 0xde, 0x82, 0xdc, 0xa7, 0xc4, 0x0f, 0x6c, 0xfc, 0xd5, 0x10, 0x33, 0x3e, 0xb1, 0x51, 0xa7, 0x36, - 0xe6, 0x0f, 0x2a, 0x5c, 0x0f, 0x19, 0x36, 0x20, 0x01, 0xc3, 0x57, 0x9b, 0xd5, 0x47, 0x90, 0xed, - 0x4b, 0x5b, 0xa6, 0xa7, 0x8a, 0xe9, 0x52, 0xae, 0x52, 0x58, 0x9c, 0x9d, 0x1d, 0xe3, 0xe8, 0x0e, - 0xe4, 0x29, 0xee, 0x93, 0x11, 0xf6, 0x8e, 0xe2, 0x08, 0xe9, 0x62, 0xba, 0xa4, 0xd9, 0xab, 0x51, - 0x77, 0x28, 0x60, 0x66, 0x15, 0xae, 0x3f, 0xc2, 0xce, 0x08, 0xc7, 0xc9, 0x57, 0x40, 0x13, 0xab, - 0x25, 0x93, 0x7a, 0xbd, 0x9f, 0x64, 0xcd, 0x3c, 0xac, 0x44, 0x31, 0xc2, 0xc9, 0x99, 0x8f, 0xe0, - 0xc6, 0x13, 0x4a, 0x5c, 0xcc, 0x58, 0xc8, 0x32, 0xe6, 0x74, 0x26, 0x0e, 0x77, 0xc5, 0xa4, 0x64, - 0x4f, 0x64, 0x92, 0xb7, 0xc2, 0xe3, 0x62, 0xc5, 0x60, 0x3c, 0x7e, 0x5f, 0x7b, 0xfe, 0xa3, 0xa9, - 0x98, 0x37, 0xc1, 0x48, 0x8a, 0x16, 0x79, 0x7d, 0x02, 0x1b, 0x36, 0x66, 0xa4, 0x37, 0xc2, 0x3b, - 0x9e, 0x47, 0x05, 0x14, 0xf9, 0x5c, 0x65, 0x85, 0xcd, 0x77, 0x61, 0x73, 0x56, 0x1d, 0x6d, 0x50, - 0xd2, 0x2e, 0xf6, 0x60, 0xbd, 0x19, 0x70, 0x4c, 0x03, 0xa7, 0x27, 0xe2, 0xc4, 0x4e, 0x9b, 0x90, - 0x9a, 0x98, 0x64, 0xc6, 0xe7, 0x5b, 0xa9, 0xe6, 0xae, 0x9d, 0xf2, 0x3d, 0xf4, 0x00, 0x32, 0x8e, - 0xcb, 0x7d, 0x12, 0x44, 0xbb, 0xb7, 0x95, 0xb4, 0x9a, 0xfb, 0x9c, 0x50, 0xbc, 0x23, 0xb1, 0xf8, - 0x58, 0x85, 0x22, 0xf3, 0x37, 0x0d, 0x72, 0x17, 0x46, 0xd1, 0xc7, 0x93, 0x70, 0xc2, 0x6a, 0xb5, - 0x72, 0xfb, 0x35, 0xe1, 0x1e, 0xfa, 0x81, 0x17, 0x07, 0x43, 0x56, 0xb4, 0xaf, 0x29, 0xb9, 0xe4, - 0x7a, 0x92, 0x54, 0xdc, 0x96, 0x86, 0x12, 0xee, 0x29, 0xfa, 0x10, 0xb2, 0x0c, 0xd3, 0x91, 0xef, - 0x62, 0x79, 0x5d, 0x72, 0x95, 0xb7, 0x12, 0xdd, 0x42, 0xa4, 0xa1, 0xd8, 0x31, 0x2d, 0x8c, 0xb8, - 0xc3, 0xba, 0xd1, 0x75, 0x4a, 0x34, 0x3a, 0x70, 0x58, 0x57, 0x18, 0x09, 0x4e, 0x18, 0x05, 0x98, - 0x9f, 0x10, 0xda, 0xd5, 0xaf, 0xcd, 0x37, 0x6a, 0x85, 0x88, 0x30, 0x8a, 0x68, 0x21, 0x74, 0x7b, - 0x43, 0xc6, 0x31, 0xd5, 0x33, 0xf3, 0x85, 0xb5, 0x10, 0x11, 0xc2, 0x88, 0x46, 0x1f, 0x40, 0x86, - 0x61, 0x97, 0x62, 0xae, 0x67, 0xa5, 0xce, 0x48, 0x9e, 0x99, 0x20, 0x1a, 0xe2, 0x92, 0xcb, 0x16, - 0xba, 0x0f, 0x4b, 0x14, 0x33, 0x32, 0xa4, 0x2e, 0xd6, 0x97, 0xa4, 0xee, 0x66, 0xe2, 0xe5, 0x88, - 0x98, 0x86, 0x62, 0x4f, 0x78, 0xf4, 0x00, 0x96, 0xf1, 0xd7, 0x1c, 0x07, 0x4c, 0x6c, 0xde, 0xb2, - 0x14, 0xbf, 0x9d, 0x24, 0xae, 0xc7, 0x50, 0x43, 0xb1, 0xa7, 0x0a, 0x91, 0xb0, 0x4b, 0x82, 0x63, - 0xbf, 0xa3, 0xc3, 0xfc, 0x84, 0x6b, 0x92, 0x10, 0x09, 0x87, 0x6c, 0x75, 0x09, 0x32, 0xdc, 0xa1, - 0x1d, 0xcc, 0xef, 0xfd, 0xab, 0x42, 0x7e, 0xe6, 0x5c, 0xa0, 0x3b, 0x90, 0x3d, 0x6c, 0x3d, 0x6c, - 0xed, 0x7d, 0xde, 0x5a, 0x53, 0x0c, 0xe3, 0xf4, 0x45, 0x71, 0x73, 0x86, 0x38, 0x0c, 0xba, 0x01, - 0x39, 0x09, 0x50, 0x05, 0xd6, 0xf7, 0x0f, 0xf6, 0xec, 0xfa, 0xd1, 0x4e, 0xed, 0xa0, 0xb9, 0xd7, - 0x3a, 0xaa, 0xd9, 0xf5, 0x9d, 0x83, 0xfa, 0x9a, 0x6a, 0xdc, 0x38, 0x7d, 0x51, 0xdc, 0x98, 0x11, - 0xd5, 0x28, 0x76, 0x38, 0xbe, 0xa4, 0x39, 0x7c, 0xb2, 0x2b, 0x34, 0xa9, 0x44, 0xcd, 0xe1, 0xc0, - 0x4b, 0xd2, 0xd8, 0xf5, 0xc7, 0x7b, 0x9f, 0xd5, 0xd7, 0xd2, 0x89, 0x1a, 0x5b, 0x16, 0x31, 0xe3, - 0xcd, 0xef, 0x7e, 0x2e, 0x28, 0xbf, 0xfe, 0x52, 0x98, 0x9d, 0x5d, 0xe5, 0xfb, 0x14, 0x68, 0xe2, - 0x86, 0xa2, 0x53, 0x15, 0xd0, 0xe5, 0xe2, 0x81, 0xb6, 0x93, 0x56, 0x70, 0x6e, 0xc9, 0x32, 0xac, - 0xab, 0xe2, 0x51, 0x4d, 0xda, 0xf8, 0xfd, 0xe5, 0x3f, 0x3f, 0xa5, 0xf2, 0xb0, 0x22, 0xf9, 0xed, - 0xbe, 0x13, 0x38, 0x1d, 0x4c, 0xd1, 0xb7, 0xb0, 0xfa, 0xff, 0x62, 0x83, 0xee, 0xce, 0x3b, 0x42, - 0x97, 0xca, 0x99, 0x71, 0xef, 0x2a, 0xe8, 0x42, 0xff, 0xca, 0x9f, 0x2a, 0xac, 0x4e, 0x8b, 0x37, - 0x7b, 0xe6, 0x0f, 0xd0, 0x17, 0xa0, 0x89, 0x67, 0x09, 0x25, 0x96, 0xa6, 0x0b, 0x8f, 0x9a, 0x51, - 0x9c, 0x0f, 0x2c, 0x9e, 0xb4, 0x0b, 0xd7, 0xe4, 0xe3, 0x80, 0x12, 0x23, 0x5c, 0x7c, 0x7b, 0x8c, - 0x5b, 0x0b, 0x88, 0x85, 0x26, 0x55, 0xfd, 0xec, 0x55, 0x41, 0xf9, 0xeb, 0x55, 0x41, 0x79, 0x3e, - 0x2e, 0xa8, 0x67, 0xe3, 0x82, 0xfa, 0xc7, 0xb8, 0xa0, 0xfe, 0x3d, 0x2e, 0xa8, 0x4f, 0xd3, 0x4f, - 0xb5, 0x76, 0x46, 0xfe, 0xaf, 0x78, 0xff, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x70, 0x31, 0xfd, - 0xe7, 0xef, 0x08, 0x00, 0x00, + // 953 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x96, 0x4d, 0x6f, 0x1b, 0x45, + 0x18, 0xc7, 0x77, 0xd7, 0x5b, 0x27, 0x79, 0xdc, 0xbc, 0x68, 0x42, 0xc2, 0x76, 0x29, 0x8e, 0xbb, + 0x45, 0xc2, 0x2d, 0x64, 0x2d, 0x0c, 0x12, 0xa8, 0xd0, 0x43, 0xec, 0x58, 0xb2, 0x69, 0xeb, 0x54, + 0x9b, 0x04, 0x7a, 0x0b, 0xeb, 0xdd, 0x89, 0xbb, 0xd8, 0xde, 0x31, 0x33, 0x63, 0x07, 0x2e, 0xa8, + 0x47, 0x94, 0x2b, 0x07, 0x10, 0x52, 0x4f, 0x70, 0xee, 0x07, 0xe0, 0x03, 0xa0, 0x88, 0x13, 0x37, + 0x38, 0x45, 0xd4, 0x1f, 0x00, 0xbe, 0x02, 0x9a, 0xd9, 0x5d, 0x3b, 0x38, 0x6b, 0x37, 0x17, 0x7b, + 0x3c, 0xf3, 0xfb, 0x3f, 0xff, 0x79, 0xe6, 0xe5, 0x19, 0x03, 0x50, 0xf7, 0x98, 0xdb, 0x7d, 0x4a, + 0x38, 0x41, 0xc8, 0x27, 0x5e, 0x07, 0x53, 0x9b, 0x9d, 0xb8, 0xb4, 0xd7, 0x09, 0xb8, 0x3d, 0x7c, + 0xcf, 0x5c, 0x26, 0xad, 0x2f, 0xb1, 0xc7, 0x59, 0x84, 0x98, 0x39, 0xfe, 0x4d, 0x1f, 0x27, 0x3f, + 0xb6, 0xdb, 0x01, 0x7f, 0x3a, 0x68, 0xd9, 0x1e, 0xe9, 0x95, 0x3c, 0x42, 0x31, 0x61, 0x25, 0xcc, + 0x3d, 0xbf, 0x24, 0x42, 0xca, 0x8f, 0x7e, 0xab, 0x34, 0x09, 0x6f, 0xbe, 0xd6, 0x26, 0x6d, 0x22, + 0x9b, 0x25, 0xd1, 0x8a, 0x7b, 0xd7, 0xfb, 0xdd, 0x41, 0x3b, 0x08, 0x4b, 0xd1, 0x57, 0xd4, 0x69, + 0xbd, 0x50, 0x01, 0x1c, 0xf7, 0x98, 0x3f, 0xc2, 0xbd, 0x16, 0xa6, 0xe8, 0x36, 0x2c, 0x88, 0x38, + 0x47, 0x81, 0x6f, 0xa8, 0x05, 0xb5, 0xa8, 0x57, 0x60, 0x74, 0xbe, 0x95, 0x15, 0x40, 0x63, 0xd7, + 0xc9, 0x8a, 0xa1, 0x86, 0x2f, 0xa0, 0x90, 0xf8, 0x58, 0x40, 0x5a, 0x41, 0x2d, 0x2e, 0x45, 0x50, + 0x93, 0xf8, 0x58, 0x40, 0x62, 0xa8, 0xe1, 0x23, 0x04, 0xba, 0xeb, 0xfb, 0xd4, 0xc8, 0x08, 0xc2, + 0x91, 0x6d, 0x54, 0x81, 0x2c, 0xe3, 0x2e, 0x1f, 0x30, 0x43, 0x2f, 0xa8, 0xc5, 0x5c, 0xf9, 0x2d, + 0xfb, 0xf2, 0x3a, 0xd8, 0x93, 0xd9, 0xec, 0x4b, 0xb6, 0xa2, 0x9f, 0x9d, 0x6f, 0x29, 0x4e, 0xac, + 0xb4, 0x6e, 0x41, 0xee, 0x53, 0x12, 0x84, 0x0e, 0xfe, 0x6a, 0x80, 0x19, 0x1f, 0xdb, 0xa8, 0x13, + 0x1b, 0xeb, 0x27, 0x15, 0xae, 0x47, 0x0c, 0xeb, 0x93, 0x90, 0xe1, 0xab, 0x65, 0xf5, 0x11, 0x2c, + 0xf4, 0xa4, 0x2d, 0x33, 0xb4, 0x42, 0xa6, 0x98, 0x2b, 0xe7, 0xe7, 0xcf, 0xce, 0x49, 0x70, 0xf4, + 0x0e, 0xac, 0x52, 0xdc, 0x23, 0x43, 0xec, 0x1f, 0x25, 0x11, 0x32, 0x85, 0x4c, 0x51, 0xaf, 0x68, + 0x6b, 0x8a, 0xb3, 0x12, 0x0f, 0x45, 0x22, 0x66, 0x55, 0xe0, 0xfa, 0x43, 0xec, 0x0e, 0x71, 0x92, + 0x40, 0x19, 0x74, 0xb1, 0x62, 0x72, 0x62, 0xaf, 0xf6, 0x94, 0xac, 0xb5, 0x0a, 0xcb, 0x71, 0x8c, + 0x28, 0x41, 0xeb, 0x21, 0xdc, 0x78, 0x4c, 0x89, 0x87, 0x19, 0x8b, 0x58, 0xc6, 0xdc, 0xf6, 0xd8, + 0xe1, 0x8e, 0x48, 0x4c, 0xf6, 0xc4, 0x26, 0xab, 0x76, 0x74, 0x64, 0xec, 0x04, 0x4c, 0xc6, 0xef, + 0xe9, 0xcf, 0x7e, 0xb0, 0x14, 0xeb, 0x26, 0x98, 0x69, 0xd1, 0x62, 0xaf, 0x4f, 0x60, 0xc3, 0xc1, + 0x8c, 0x74, 0x87, 0x78, 0xc7, 0xf7, 0xa9, 0x80, 0x62, 0x9f, 0xab, 0xac, 0xb2, 0xf5, 0x2e, 0x6c, + 0x4e, 0xab, 0xe3, 0x4d, 0x4a, 0xdb, 0xc9, 0x2e, 0xac, 0x37, 0x42, 0x8e, 0x69, 0xe8, 0x76, 0x45, + 0x9c, 0xc4, 0x69, 0x13, 0xb4, 0xb1, 0x49, 0x76, 0x74, 0xbe, 0xa5, 0x35, 0x76, 0x1d, 0x2d, 0xf0, + 0xd1, 0x7d, 0xc8, 0xba, 0x1e, 0x0f, 0x48, 0x18, 0xef, 0xe0, 0x56, 0xda, 0x6a, 0xee, 0x73, 0x42, + 0xf1, 0x8e, 0xc4, 0x92, 0xa3, 0x15, 0x89, 0xac, 0xdf, 0x74, 0xc8, 0x5d, 0x18, 0x45, 0x1f, 0x8f, + 0xc3, 0x09, 0xab, 0x95, 0xf2, 0xed, 0x57, 0x84, 0x7b, 0x10, 0x84, 0x7e, 0x12, 0x0c, 0xd9, 0xf1, + 0xbe, 0x6a, 0x72, 0xc9, 0x8d, 0x34, 0xa9, 0xb8, 0x31, 0x75, 0x25, 0xda, 0x53, 0xf4, 0x21, 0x2c, + 0x30, 0x4c, 0x87, 0x81, 0x87, 0xe5, 0x95, 0xc9, 0x95, 0xdf, 0x48, 0x75, 0x8b, 0x90, 0xba, 0xe2, + 0x24, 0xb4, 0x30, 0xe2, 0x2e, 0xeb, 0xc4, 0x57, 0x2a, 0xd5, 0xe8, 0xc0, 0x65, 0x1d, 0x61, 0x24, + 0x38, 0x61, 0x14, 0x62, 0x7e, 0x42, 0x68, 0xc7, 0xb8, 0x36, 0xdb, 0xa8, 0x19, 0x21, 0xc2, 0x28, + 0xa6, 0x85, 0xd0, 0xeb, 0x0e, 0x18, 0xc7, 0xd4, 0xc8, 0xce, 0x16, 0x56, 0x23, 0x44, 0x08, 0x63, + 0x1a, 0x7d, 0x00, 0x59, 0x86, 0x3d, 0x8a, 0xb9, 0xb1, 0x20, 0x75, 0x66, 0x7a, 0x66, 0x82, 0xa8, + 0x8b, 0x8b, 0x2e, 0x5b, 0xe8, 0x1e, 0x2c, 0x52, 0xcc, 0xc8, 0x80, 0x7a, 0xd8, 0x58, 0x94, 0xba, + 0x9b, 0xa9, 0x97, 0x23, 0x66, 0xea, 0x8a, 0x33, 0xe6, 0xd1, 0x7d, 0x58, 0xc2, 0x5f, 0x73, 0x1c, + 0x32, 0xb1, 0x79, 0x4b, 0x52, 0xfc, 0x66, 0x9a, 0xb8, 0x96, 0x40, 0x75, 0xc5, 0x99, 0x28, 0xc4, + 0x84, 0x3d, 0x12, 0x1e, 0x07, 0x6d, 0x03, 0x66, 0x4f, 0xb8, 0x2a, 0x09, 0x31, 0xe1, 0x88, 0xad, + 0x2c, 0x42, 0x96, 0xbb, 0xb4, 0x8d, 0xf9, 0xdd, 0x7f, 0x55, 0x58, 0x9d, 0x3a, 0x17, 0xe8, 0x6d, + 0x58, 0x38, 0x6c, 0x3e, 0x68, 0xee, 0x7d, 0xde, 0x5c, 0x53, 0x4c, 0xf3, 0xf4, 0x79, 0x61, 0x73, + 0x8a, 0x38, 0x0c, 0x3b, 0x21, 0x39, 0x09, 0x51, 0x19, 0xd6, 0xf7, 0x0f, 0xf6, 0x9c, 0xda, 0xd1, + 0x4e, 0xf5, 0xa0, 0xb1, 0xd7, 0x3c, 0xaa, 0x3a, 0xb5, 0x9d, 0x83, 0xda, 0x9a, 0x6a, 0xde, 0x38, + 0x7d, 0x5e, 0xd8, 0x98, 0x12, 0x55, 0x29, 0x76, 0x39, 0xbe, 0xa4, 0x39, 0x7c, 0xbc, 0x2b, 0x34, + 0x5a, 0xaa, 0xe6, 0xb0, 0xef, 0xa7, 0x69, 0x9c, 0xda, 0xa3, 0xbd, 0xcf, 0x6a, 0x6b, 0x99, 0x54, + 0x8d, 0x23, 0x8b, 0x98, 0xf9, 0xfa, 0x77, 0x3f, 0xe7, 0x95, 0x5f, 0x7f, 0xc9, 0x4f, 0x67, 0x57, + 0xfe, 0x5e, 0x03, 0x5d, 0xdc, 0x50, 0x74, 0xaa, 0x02, 0xba, 0x5c, 0x3c, 0xd0, 0x76, 0xda, 0x0a, + 0xce, 0x2c, 0x59, 0xa6, 0x7d, 0x55, 0x3c, 0xae, 0x49, 0x1b, 0xbf, 0xbf, 0xf8, 0xe7, 0x47, 0x6d, + 0x15, 0x96, 0x25, 0xbf, 0xdd, 0x73, 0x43, 0xb7, 0x8d, 0x29, 0xfa, 0x16, 0x56, 0xfe, 0x5f, 0x6c, + 0xd0, 0x9d, 0x59, 0x47, 0xe8, 0x52, 0x39, 0x33, 0xef, 0x5e, 0x05, 0x9d, 0xeb, 0x5f, 0xfe, 0x53, + 0x85, 0x95, 0x49, 0xf1, 0x66, 0x4f, 0x83, 0x3e, 0xfa, 0x02, 0x74, 0xf1, 0x34, 0xa1, 0xd4, 0xd2, + 0x74, 0xe1, 0x61, 0x33, 0x0b, 0xb3, 0x81, 0xf9, 0x49, 0x7b, 0x70, 0x4d, 0x3e, 0x0e, 0x28, 0x35, + 0xc2, 0xc5, 0xb7, 0xc7, 0xbc, 0x35, 0x87, 0x98, 0x6b, 0x52, 0x31, 0xce, 0x5e, 0xe6, 0x95, 0xbf, + 0x5e, 0xe6, 0x95, 0x67, 0xa3, 0xbc, 0x7a, 0x36, 0xca, 0xab, 0x7f, 0x8c, 0xf2, 0xea, 0xdf, 0xa3, + 0xbc, 0xfa, 0x24, 0xf3, 0x44, 0x6f, 0x65, 0xe5, 0x7f, 0x8b, 0xf7, 0xff, 0x0b, 0x00, 0x00, 0xff, + 0xff, 0x9a, 0xef, 0x6e, 0xdb, 0xf3, 0x08, 0x00, 0x00, } diff --git a/components/engine/vendor/github.com/docker/swarmkit/api/raft.proto b/components/engine/vendor/github.com/docker/swarmkit/api/raft.proto index 6f49ea8d5c..e464f3a6b9 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/api/raft.proto +++ b/components/engine/vendor/github.com/docker/swarmkit/api/raft.proto @@ -66,7 +66,7 @@ message JoinResponse { // RemovedMembers is a list of members that have been removed from // the cluster, so the new node can avoid communicating with them. - repeated uint64 removed_members = 3; + repeated uint64 removed_members = 3 [packed=false]; } message LeaveRequest { diff --git a/components/engine/vendor/github.com/docker/swarmkit/api/snapshot.pb.go b/components/engine/vendor/github.com/docker/swarmkit/api/snapshot.pb.go index b5b0c91014..928d1c7de8 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/api/snapshot.pb.go +++ b/components/engine/vendor/github.com/docker/swarmkit/api/snapshot.pb.go @@ -61,7 +61,7 @@ func (*StoreSnapshot) Descriptor() ([]byte, []int) { return fileDescriptorSnapsh // ClusterSnapshot stores cluster membership information in snapshots. type ClusterSnapshot struct { Members []*RaftMember `protobuf:"bytes,1,rep,name=members" json:"members,omitempty"` - Removed []uint64 `protobuf:"varint,2,rep,packed,name=removed" json:"removed,omitempty"` + Removed []uint64 `protobuf:"varint,2,rep,name=removed" json:"removed,omitempty"` } func (m *ClusterSnapshot) Reset() { *m = ClusterSnapshot{} } @@ -371,21 +371,11 @@ func (m *ClusterSnapshot) MarshalTo(dAtA []byte) (int, error) { } } if len(m.Removed) > 0 { - dAtA2 := make([]byte, len(m.Removed)*10) - var j1 int for _, num := range m.Removed { - for num >= 1<<7 { - dAtA2[j1] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j1++ - } - dAtA2[j1] = uint8(num) - j1++ + dAtA[i] = 0x10 + i++ + i = encodeVarintSnapshot(dAtA, i, uint64(num)) } - dAtA[i] = 0x12 - i++ - i = encodeVarintSnapshot(dAtA, i, uint64(j1)) - i += copy(dAtA[i:], dAtA2[:j1]) } return i, nil } @@ -413,19 +403,19 @@ func (m *Snapshot) MarshalTo(dAtA []byte) (int, error) { dAtA[i] = 0x12 i++ i = encodeVarintSnapshot(dAtA, i, uint64(m.Membership.Size())) - n3, err := m.Membership.MarshalTo(dAtA[i:]) + n1, err := m.Membership.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n3 + i += n1 dAtA[i] = 0x1a i++ i = encodeVarintSnapshot(dAtA, i, uint64(m.Store.Size())) - n4, err := m.Store.MarshalTo(dAtA[i:]) + n2, err := m.Store.MarshalTo(dAtA[i:]) if err != nil { return 0, err } - i += n4 + i += n2 return i, nil } @@ -527,11 +517,9 @@ func (m *ClusterSnapshot) Size() (n int) { } } if len(m.Removed) > 0 { - l = 0 for _, e := range m.Removed { - l += sovSnapshot(uint64(e)) + n += 1 + sovSnapshot(uint64(e)) } - n += 1 + sovSnapshot(uint64(l)) + l } return n } @@ -1001,7 +989,24 @@ func (m *ClusterSnapshot) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 2: - if wireType == 2 { + if wireType == 0 { + var v uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSnapshot + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + m.Removed = append(m.Removed, v) + } else if wireType == 2 { var packedLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { @@ -1042,23 +1047,6 @@ func (m *ClusterSnapshot) Unmarshal(dAtA []byte) error { } m.Removed = append(m.Removed, v) } - } else if wireType == 0 { - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowSnapshot - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - m.Removed = append(m.Removed, v) } else { return fmt.Errorf("proto: wrong wireType = %d for field Removed", wireType) } @@ -1320,35 +1308,35 @@ var ( func init() { proto.RegisterFile("snapshot.proto", fileDescriptorSnapshot) } var fileDescriptorSnapshot = []byte{ - // 466 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0x3f, 0x6f, 0x13, 0x4d, - 0x10, 0x87, 0xbd, 0xfe, 0x77, 0xce, 0x44, 0xc9, 0xfb, 0xb2, 0xa2, 0x58, 0x19, 0x38, 0x8c, 0xa1, - 0x70, 0x75, 0x80, 0x41, 0x02, 0x21, 0x85, 0x22, 0x11, 0x05, 0x05, 0x29, 0xd6, 0x28, 0xa2, 0x3d, - 0x9f, 0xc7, 0xce, 0x71, 0xf8, 0xd6, 0xda, 0xd9, 0x38, 0x94, 0xf0, 0xed, 0x5c, 0x52, 0x52, 0x21, - 0xe2, 0x86, 0xaf, 0x81, 0x76, 0xf7, 0xee, 0xb0, 0xc4, 0x99, 0x6e, 0x6d, 0x3d, 0xcf, 0xcc, 0x6f, - 0xf7, 0x66, 0xe0, 0x98, 0xf2, 0x78, 0x45, 0x97, 0xca, 0x44, 0x2b, 0xad, 0x8c, 0xe2, 0x7c, 0xa6, - 0x92, 0x0c, 0x75, 0x44, 0xd7, 0xb1, 0x5e, 0x66, 0xa9, 0x89, 0xd6, 0x4f, 0xfb, 0x47, 0x6a, 0xfa, - 0x11, 0x13, 0x43, 0x1e, 0xe9, 0x83, 0x8e, 0xe7, 0x05, 0xde, 0xbf, 0xbd, 0x50, 0x0b, 0xe5, 0x8e, - 0x8f, 0xed, 0xc9, 0xff, 0x3b, 0xfc, 0xda, 0x86, 0xa3, 0x89, 0x51, 0x1a, 0x27, 0x45, 0x71, 0x1e, - 0x41, 0x27, 0x57, 0x33, 0x24, 0xc1, 0x06, 0xad, 0xd1, 0xe1, 0x58, 0x44, 0x7f, 0xb7, 0x89, 0xce, - 0xd5, 0x0c, 0xa5, 0xc7, 0xf8, 0x0b, 0xe8, 0x11, 0xea, 0x75, 0x9a, 0x20, 0x89, 0xa6, 0x53, 0xee, - 0xd4, 0x29, 0x13, 0xcf, 0xc8, 0x0a, 0xb6, 0x62, 0x8e, 0xe6, 0x5a, 0xe9, 0x8c, 0x44, 0x6b, 0xbf, - 0x78, 0xee, 0x19, 0x59, 0xc1, 0x36, 0xa1, 0x89, 0x29, 0x23, 0xd1, 0xde, 0x9f, 0xf0, 0x7d, 0x4c, - 0x99, 0xf4, 0x98, 0x6d, 0x94, 0x7c, 0xba, 0x22, 0x83, 0x9a, 0x44, 0x67, 0x7f, 0xa3, 0x33, 0xcf, - 0xc8, 0x0a, 0xe6, 0xcf, 0x21, 0x20, 0x4c, 0x34, 0x1a, 0x12, 0x5d, 0xe7, 0xf5, 0xeb, 0x6f, 0x66, - 0x11, 0x59, 0xa2, 0xfc, 0x15, 0x1c, 0x68, 0x24, 0x75, 0xa5, 0xed, 0x8b, 0x04, 0xce, 0xbb, 0x5b, - 0xe7, 0xc9, 0x02, 0x92, 0x7f, 0x70, 0x7e, 0x02, 0x80, 0x9f, 0x0d, 0xe6, 0x94, 0xaa, 0x9c, 0x44, - 0xcf, 0xc9, 0xf7, 0xea, 0xe4, 0x37, 0x25, 0x25, 0x77, 0x04, 0x1b, 0x38, 0x51, 0xf9, 0x3c, 0x5d, - 0x90, 0x38, 0xd8, 0x1f, 0xf8, 0xcc, 0x21, 0xb2, 0x44, 0x87, 0x08, 0xff, 0x15, 0x77, 0xaf, 0x86, - 0xe0, 0x25, 0x04, 0x4b, 0x5c, 0x4e, 0xed, 0x8b, 0xf9, 0x31, 0x08, 0x6b, 0x6f, 0x10, 0xcf, 0xcd, - 0x3b, 0x87, 0xc9, 0x12, 0xe7, 0x02, 0x02, 0x8d, 0x4b, 0xb5, 0xc6, 0x99, 0x9b, 0x86, 0xb6, 0x2c, - 0x7f, 0x0e, 0x7f, 0x31, 0xe8, 0x55, 0x0d, 0x5e, 0x43, 0xb0, 0x46, 0x6d, 0x53, 0x0b, 0x36, 0x60, - 0xa3, 0xe3, 0xf1, 0xa3, 0xda, 0xa7, 0x2d, 0x27, 0xfe, 0xc2, 0xb3, 0xb2, 0x94, 0xf8, 0x5b, 0x80, - 0xa2, 0xe3, 0x65, 0xba, 0x12, 0xcd, 0x01, 0x1b, 0x1d, 0x8e, 0x1f, 0xfe, 0xe3, 0xab, 0x96, 0x95, - 0x4e, 0xdb, 0x9b, 0x1f, 0xf7, 0x1b, 0x72, 0x47, 0xe6, 0x27, 0xd0, 0x21, 0xbb, 0x01, 0xa2, 0xe5, - 0xaa, 0x3c, 0xa8, 0x0d, 0xb2, 0xbb, 0x22, 0x45, 0x0d, 0x6f, 0x0d, 0x6f, 0x41, 0x50, 0xa4, 0xe3, - 0x5d, 0x68, 0x5e, 0x3c, 0xf9, 0xbf, 0x71, 0x2a, 0x36, 0x37, 0x61, 0xe3, 0xfb, 0x4d, 0xd8, 0xf8, - 0xb2, 0x0d, 0xd9, 0x66, 0x1b, 0xb2, 0x6f, 0xdb, 0x90, 0xfd, 0xdc, 0x86, 0xec, 0x43, 0x73, 0xda, - 0x75, 0x7b, 0xf7, 0xec, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8f, 0x41, 0x5b, 0x51, 0xce, 0x03, - 0x00, 0x00, + // 469 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0xbf, 0x6f, 0xd3, 0x40, + 0x14, 0xc7, 0x7d, 0xce, 0x0f, 0xa7, 0xaf, 0x6a, 0x29, 0x27, 0x86, 0x53, 0x28, 0x26, 0x04, 0x86, + 0x4c, 0x06, 0x02, 0x12, 0x08, 0xa9, 0x0c, 0xa9, 0x18, 0x18, 0xe8, 0x70, 0x41, 0x15, 0xab, 0xe3, + 0x5c, 0x52, 0x63, 0xe2, 0x8b, 0xee, 0x5d, 0x53, 0x46, 0xf8, 0xef, 0x32, 0x32, 0x32, 0x21, 0x92, + 0x85, 0x7f, 0x03, 0xdd, 0x9d, 0x6d, 0x22, 0xe1, 0x74, 0xb3, 0x4e, 0x9f, 0xcf, 0x7b, 0xdf, 0x3b, + 0xbf, 0x07, 0xc7, 0x98, 0xc7, 0x4b, 0xbc, 0x92, 0x3a, 0x5a, 0x2a, 0xa9, 0x25, 0xa5, 0x53, 0x99, + 0x64, 0x42, 0x45, 0x78, 0x13, 0xab, 0x45, 0x96, 0xea, 0x68, 0xf5, 0xbc, 0x7b, 0x24, 0x27, 0x9f, + 0x45, 0xa2, 0xd1, 0x21, 0x5d, 0x50, 0xf1, 0xac, 0xc0, 0xbb, 0xf7, 0xe6, 0x72, 0x2e, 0xed, 0xe7, + 0x53, 0xf3, 0xe5, 0x4e, 0xfb, 0xdf, 0x9b, 0x70, 0x34, 0xd6, 0x52, 0x89, 0x71, 0x51, 0x9c, 0x46, + 0xd0, 0xca, 0xe5, 0x54, 0x20, 0x23, 0xbd, 0xc6, 0xe0, 0x70, 0xc8, 0xa2, 0xff, 0xdb, 0x44, 0x17, + 0x72, 0x2a, 0xb8, 0xc3, 0xe8, 0x2b, 0xe8, 0xa0, 0x50, 0xab, 0x34, 0x11, 0xc8, 0x7c, 0xab, 0xdc, + 0xaf, 0x53, 0xc6, 0x8e, 0xe1, 0x15, 0x6c, 0xc4, 0x5c, 0xe8, 0x1b, 0xa9, 0x32, 0x64, 0x8d, 0xfd, + 0xe2, 0x85, 0x63, 0x78, 0x05, 0x9b, 0x84, 0x3a, 0xc6, 0x0c, 0x59, 0x73, 0x7f, 0xc2, 0x8f, 0x31, + 0x66, 0xdc, 0x61, 0xa6, 0x51, 0xf2, 0xe5, 0x1a, 0xb5, 0x50, 0xc8, 0x5a, 0xfb, 0x1b, 0x9d, 0x3b, + 0x86, 0x57, 0x30, 0x7d, 0x09, 0x01, 0x8a, 0x44, 0x09, 0x8d, 0xac, 0x6d, 0xbd, 0x6e, 0xfd, 0xcd, + 0x0c, 0xc2, 0x4b, 0x94, 0xbe, 0x81, 0x03, 0x25, 0x50, 0x5e, 0x2b, 0xf3, 0x22, 0x81, 0xf5, 0x4e, + 0xeb, 0x3c, 0x5e, 0x40, 0xfc, 0x1f, 0x4e, 0xcf, 0x00, 0xc4, 0x57, 0x2d, 0x72, 0x4c, 0x65, 0x8e, + 0xac, 0x63, 0xe5, 0x07, 0x75, 0xf2, 0xbb, 0x92, 0xe2, 0x3b, 0x82, 0x09, 0x9c, 0xc8, 0x7c, 0x96, + 0xce, 0x91, 0x1d, 0xec, 0x0f, 0x7c, 0x6e, 0x11, 0x5e, 0xa2, 0xfd, 0x14, 0xee, 0x14, 0x77, 0xaf, + 0x86, 0xe0, 0x35, 0x04, 0x0b, 0xb1, 0x98, 0x98, 0x17, 0x73, 0x63, 0x10, 0xd6, 0xde, 0x20, 0x9e, + 0xe9, 0x0f, 0x16, 0xe3, 0x25, 0x4e, 0x4f, 0x21, 0x50, 0x62, 0x21, 0x57, 0x62, 0x6a, 0xa7, 0xa1, + 0x39, 0xf2, 0x4f, 0x3c, 0x5e, 0x1e, 0xf5, 0xff, 0x10, 0xe8, 0x54, 0x4d, 0xde, 0x42, 0xb0, 0x12, + 0xca, 0x24, 0x67, 0xa4, 0x47, 0x06, 0xc7, 0xc3, 0x27, 0xb5, 0xcf, 0x5b, 0x4e, 0xfd, 0xa5, 0x63, + 0x79, 0x29, 0xd1, 0xf7, 0x00, 0x45, 0xd7, 0xab, 0x74, 0xc9, 0xfc, 0x1e, 0x19, 0x1c, 0x0e, 0x1f, + 0xdf, 0xf2, 0x67, 0xcb, 0x4a, 0xa3, 0xe6, 0xfa, 0xd7, 0x43, 0x8f, 0xef, 0xc8, 0xf4, 0x0c, 0x5a, + 0x68, 0xb6, 0x80, 0x35, 0x6c, 0x95, 0x47, 0xb5, 0x41, 0x76, 0xd7, 0xa4, 0xa8, 0xe1, 0xac, 0xfe, + 0x5d, 0x08, 0x8a, 0x74, 0xb4, 0x0d, 0xfe, 0xe5, 0xb3, 0x13, 0x6f, 0xc4, 0xd6, 0x9b, 0xd0, 0xfb, + 0xb9, 0x09, 0xbd, 0x6f, 0xdb, 0x90, 0xac, 0xb7, 0x21, 0xf9, 0xb1, 0x0d, 0xc9, 0xef, 0x6d, 0x48, + 0x3e, 0xf9, 0x93, 0xb6, 0xdd, 0xbd, 0x17, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x8d, 0x0f, 0xc4, + 0x6e, 0xd2, 0x03, 0x00, 0x00, } diff --git a/components/engine/vendor/github.com/docker/swarmkit/api/snapshot.proto b/components/engine/vendor/github.com/docker/swarmkit/api/snapshot.proto index 3d59acae43..713649c527 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/api/snapshot.proto +++ b/components/engine/vendor/github.com/docker/swarmkit/api/snapshot.proto @@ -28,7 +28,7 @@ message StoreSnapshot { // ClusterSnapshot stores cluster membership information in snapshots. message ClusterSnapshot { repeated RaftMember members = 1; - repeated uint64 removed = 2; + repeated uint64 removed = 2 [packed=false]; } message Snapshot { diff --git a/components/engine/vendor/github.com/docker/swarmkit/api/specs.pb.go b/components/engine/vendor/github.com/docker/swarmkit/api/specs.pb.go index 7bf3593c66..c9ea260466 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/api/specs.pb.go +++ b/components/engine/vendor/github.com/docker/swarmkit/api/specs.pb.go @@ -642,6 +642,10 @@ type NetworkSpec struct { // swarm internally created only and it was identified by the name // "ingress" and the label "com.docker.swarm.internal": "true". Ingress bool `protobuf:"varint,7,opt,name=ingress,proto3" json:"ingress,omitempty"` + // ConfigFrom indicates that the network specific configuration + // for this network will be provided via another network, locally + // on the node where this network is being plumbed. + ConfigFrom string `protobuf:"bytes,8,opt,name=config_from,json=configFrom,proto3" json:"config_from,omitempty"` } func (m *NetworkSpec) Reset() { *m = NetworkSpec{} } @@ -2006,6 +2010,12 @@ func (m *NetworkSpec) MarshalTo(dAtA []byte) (int, error) { } i++ } + if len(m.ConfigFrom) > 0 { + dAtA[i] = 0x42 + i++ + i = encodeVarintSpecs(dAtA, i, uint64(len(m.ConfigFrom))) + i += copy(dAtA[i:], m.ConfigFrom) + } return i, nil } @@ -2534,6 +2544,10 @@ func (m *NetworkSpec) Size() (n int) { if m.Ingress { n += 2 } + l = len(m.ConfigFrom) + if l > 0 { + n += 1 + l + sovSpecs(uint64(l)) + } return n } @@ -2817,6 +2831,7 @@ func (this *NetworkSpec) String() string { `IPAM:` + strings.Replace(fmt.Sprintf("%v", this.IPAM), "IPAMOptions", "IPAMOptions", 1) + `,`, `Attachable:` + fmt.Sprintf("%v", this.Attachable) + `,`, `Ingress:` + fmt.Sprintf("%v", this.Ingress) + `,`, + `ConfigFrom:` + fmt.Sprintf("%v", this.ConfigFrom) + `,`, `}`, }, "") return s @@ -5242,6 +5257,35 @@ func (m *NetworkSpec) Unmarshal(dAtA []byte) error { } } m.Ingress = bool(v != 0) + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConfigFrom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowSpecs + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthSpecs + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ConfigFrom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipSpecs(dAtA[iNdEx:]) @@ -5883,119 +5927,121 @@ var ( func init() { proto.RegisterFile("specs.proto", fileDescriptorSpecs) } var fileDescriptorSpecs = []byte{ - // 1824 bytes of a gzipped FileDescriptorProto + // 1844 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0x4f, 0x73, 0x1b, 0x49, - 0x15, 0xb7, 0x6c, 0x59, 0x7f, 0xde, 0xc8, 0x89, 0xd2, 0x24, 0x61, 0xac, 0xb0, 0xb2, 0xa2, 0x0d, - 0xc1, 0xcb, 0x16, 0x72, 0x61, 0xa8, 0x25, 0x4b, 0x58, 0x40, 0xb2, 0x84, 0x63, 0x8c, 0x1d, 0x55, - 0xdb, 0x1b, 0xc8, 0x49, 0xd5, 0x9e, 0x69, 0x4b, 0x53, 0x1e, 0x75, 0x0f, 0xdd, 0x3d, 0xda, 0xd2, - 0x8d, 0xe3, 0x56, 0xae, 0x9c, 0x5d, 0x1c, 0xf8, 0x32, 0xb9, 0x41, 0x71, 0xe2, 0xe4, 0x62, 0xfd, - 0x15, 0xf8, 0x00, 0x50, 0xdd, 0xd3, 0xa3, 0x3f, 0xc9, 0x78, 0x93, 0x2a, 0xc2, 0xad, 0xfb, 0xcd, - 0xef, 0xf7, 0xfa, 0xf5, 0xeb, 0x5f, 0xf7, 0x7b, 0x03, 0x8e, 0x8c, 0xa8, 0x27, 0x5b, 0x91, 0xe0, - 0x8a, 0x23, 0xe4, 0x73, 0xef, 0x82, 0x8a, 0x96, 0xfc, 0x8a, 0x88, 0xf1, 0x45, 0xa0, 0x5a, 0x93, - 0x1f, 0xd7, 0x1c, 0x35, 0x8d, 0xa8, 0x05, 0xd4, 0xee, 0x0e, 0xf9, 0x90, 0x9b, 0xe1, 0x8e, 0x1e, - 0x59, 0x6b, 0x7d, 0xc8, 0xf9, 0x30, 0xa4, 0x3b, 0x66, 0x76, 0x16, 0x9f, 0xef, 0xf8, 0xb1, 0x20, - 0x2a, 0xe0, 0xcc, 0x7e, 0xdf, 0x7c, 0xf3, 0x3b, 0x61, 0xd3, 0xe4, 0x53, 0xf3, 0x32, 0x0f, 0xa5, - 0x63, 0xee, 0xd3, 0x93, 0x88, 0x7a, 0x68, 0x1f, 0x1c, 0xc2, 0x18, 0x57, 0x86, 0x2b, 0xdd, 0x5c, - 0x23, 0xb7, 0xed, 0xec, 0x6e, 0xb5, 0xde, 0x0e, 0xaa, 0xd5, 0x9e, 0xc3, 0x3a, 0xf9, 0xd7, 0x57, - 0x5b, 0x2b, 0x78, 0x91, 0x89, 0x7e, 0x05, 0x15, 0x9f, 0xca, 0x40, 0x50, 0x7f, 0x20, 0x78, 0x48, - 0xdd, 0xd5, 0x46, 0x6e, 0xfb, 0xd6, 0xee, 0xf7, 0xb2, 0x3c, 0xe9, 0xc5, 0x31, 0x0f, 0x29, 0x76, - 0x2c, 0x43, 0x4f, 0xd0, 0x3e, 0xc0, 0x98, 0x8e, 0xcf, 0xa8, 0x90, 0xa3, 0x20, 0x72, 0xd7, 0x0c, - 0xfd, 0x07, 0x37, 0xd1, 0x75, 0xec, 0xad, 0xa3, 0x19, 0x1c, 0x2f, 0x50, 0xd1, 0x11, 0x54, 0xc8, - 0x84, 0x04, 0x21, 0x39, 0x0b, 0xc2, 0x40, 0x4d, 0xdd, 0xbc, 0x71, 0xf5, 0xc9, 0xb7, 0xba, 0x6a, - 0x2f, 0x10, 0xf0, 0x12, 0xbd, 0xe9, 0x03, 0xcc, 0x17, 0x42, 0x8f, 0xa1, 0xd8, 0xef, 0x1d, 0x77, - 0x0f, 0x8e, 0xf7, 0xab, 0x2b, 0xb5, 0xcd, 0x57, 0x97, 0x8d, 0x7b, 0xda, 0xc7, 0x1c, 0xd0, 0xa7, - 0xcc, 0x0f, 0xd8, 0x10, 0x6d, 0x43, 0xa9, 0xbd, 0xb7, 0xd7, 0xeb, 0x9f, 0xf6, 0xba, 0xd5, 0x5c, - 0xad, 0xf6, 0xea, 0xb2, 0x71, 0x7f, 0x19, 0xd8, 0xf6, 0x3c, 0x1a, 0x29, 0xea, 0xd7, 0xf2, 0x5f, - 0xff, 0xb5, 0xbe, 0xd2, 0xfc, 0x3a, 0x07, 0x95, 0xc5, 0x20, 0xd0, 0x63, 0x28, 0xb4, 0xf7, 0x4e, - 0x0f, 0x5e, 0xf4, 0xaa, 0x2b, 0x73, 0xfa, 0x22, 0xa2, 0xed, 0xa9, 0x60, 0x42, 0xd1, 0x23, 0x58, - 0xef, 0xb7, 0xbf, 0x3c, 0xe9, 0x55, 0x73, 0xf3, 0x70, 0x16, 0x61, 0x7d, 0x12, 0x4b, 0x83, 0xea, - 0xe2, 0xf6, 0xc1, 0x71, 0x75, 0x35, 0x1b, 0xd5, 0x15, 0x24, 0x60, 0x36, 0x94, 0xbf, 0xe4, 0xc1, - 0x39, 0xa1, 0x62, 0x12, 0x78, 0x1f, 0x58, 0x22, 0x9f, 0x41, 0x5e, 0x11, 0x79, 0x61, 0xa4, 0xe1, - 0x64, 0x4b, 0xe3, 0x94, 0xc8, 0x0b, 0xbd, 0xa8, 0xa5, 0x1b, 0xbc, 0x56, 0x86, 0xa0, 0x51, 0x18, - 0x78, 0x44, 0x51, 0xdf, 0x28, 0xc3, 0xd9, 0xfd, 0x7e, 0x16, 0x1b, 0xcf, 0x50, 0x36, 0xfe, 0x67, - 0x2b, 0x78, 0x81, 0x8a, 0x9e, 0x42, 0x61, 0x18, 0xf2, 0x33, 0x12, 0x1a, 0x4d, 0x38, 0xbb, 0x0f, - 0xb3, 0x9c, 0xec, 0x1b, 0xc4, 0xdc, 0x81, 0xa5, 0xa0, 0x27, 0x50, 0x88, 0x23, 0x9f, 0x28, 0xea, - 0x16, 0x0c, 0xb9, 0x91, 0x45, 0xfe, 0xd2, 0x20, 0xf6, 0x38, 0x3b, 0x0f, 0x86, 0xd8, 0xe2, 0xd1, - 0x21, 0x94, 0x18, 0x55, 0x5f, 0x71, 0x71, 0x21, 0xdd, 0x62, 0x63, 0x6d, 0xdb, 0xd9, 0xfd, 0x34, - 0x53, 0x8c, 0x09, 0xa6, 0xad, 0x14, 0xf1, 0x46, 0x63, 0xca, 0x54, 0xe2, 0xa6, 0xb3, 0xea, 0xe6, - 0xf0, 0xcc, 0x01, 0xfa, 0x05, 0x94, 0x28, 0xf3, 0x23, 0x1e, 0x30, 0xe5, 0x96, 0x6e, 0x0e, 0xa4, - 0x67, 0x31, 0x3a, 0x99, 0x78, 0xc6, 0xd0, 0x6c, 0xc1, 0xc3, 0xf0, 0x8c, 0x78, 0x17, 0x6e, 0xf9, - 0x3d, 0xb7, 0x31, 0x63, 0x74, 0x0a, 0x90, 0x1f, 0x73, 0x9f, 0x36, 0x77, 0xe0, 0xce, 0x5b, 0xa9, - 0x46, 0x35, 0x28, 0xd9, 0x54, 0x27, 0x1a, 0xc9, 0xe3, 0xd9, 0xbc, 0x79, 0x1b, 0x36, 0x96, 0xd2, - 0xda, 0xfc, 0x47, 0x1e, 0x4a, 0xe9, 0x59, 0xa3, 0x36, 0x94, 0x3d, 0xce, 0x14, 0x09, 0x18, 0x15, - 0x56, 0x5e, 0x99, 0x27, 0xb3, 0x97, 0x82, 0x34, 0xeb, 0xd9, 0x0a, 0x9e, 0xb3, 0xd0, 0x6f, 0xa0, - 0x2c, 0xa8, 0xe4, 0xb1, 0xf0, 0xa8, 0xb4, 0xfa, 0xda, 0xce, 0x56, 0x48, 0x02, 0xc2, 0xf4, 0x8f, - 0x71, 0x20, 0xa8, 0xce, 0xb2, 0xc4, 0x73, 0x2a, 0x7a, 0x0a, 0x45, 0x41, 0xa5, 0x22, 0x42, 0x7d, - 0x9b, 0x44, 0x70, 0x02, 0xe9, 0xf3, 0x30, 0xf0, 0xa6, 0x38, 0x65, 0xa0, 0xa7, 0x50, 0x8e, 0x42, - 0xe2, 0x19, 0xaf, 0xee, 0xba, 0xa1, 0x7f, 0x94, 0x45, 0xef, 0xa7, 0x20, 0x3c, 0xc7, 0xa3, 0xcf, - 0x01, 0x42, 0x3e, 0x1c, 0xf8, 0x22, 0x98, 0x50, 0x61, 0x25, 0x56, 0xcb, 0x62, 0x77, 0x0d, 0x02, - 0x97, 0x43, 0x3e, 0x4c, 0x86, 0x68, 0xff, 0x7f, 0xd2, 0xd7, 0x82, 0xb6, 0x0e, 0x01, 0xc8, 0xec, - 0xab, 0x55, 0xd7, 0x27, 0xef, 0xe5, 0xca, 0x9e, 0xc8, 0x02, 0x1d, 0x3d, 0x84, 0xca, 0x39, 0x17, - 0x1e, 0x1d, 0xd8, 0x5b, 0x53, 0x36, 0x9a, 0x70, 0x8c, 0x2d, 0xd1, 0x17, 0xea, 0x40, 0x71, 0x48, - 0x19, 0x15, 0x81, 0xe7, 0x82, 0x59, 0xec, 0x71, 0xe6, 0x85, 0x4c, 0x20, 0x38, 0x66, 0x2a, 0x18, - 0x53, 0xbb, 0x52, 0x4a, 0xec, 0x94, 0xa1, 0x28, 0x92, 0x2f, 0xcd, 0x3f, 0x00, 0x7a, 0x1b, 0x8b, - 0x10, 0xe4, 0x2f, 0x02, 0xe6, 0x1b, 0x61, 0x95, 0xb1, 0x19, 0xa3, 0x16, 0x14, 0x23, 0x32, 0x0d, - 0x39, 0xf1, 0xad, 0x58, 0xee, 0xb6, 0x92, 0x7a, 0xd9, 0x4a, 0xeb, 0x65, 0xab, 0xcd, 0xa6, 0x38, - 0x05, 0x35, 0x0f, 0xe1, 0x5e, 0xe6, 0x96, 0xd1, 0x2e, 0x54, 0x66, 0x22, 0x1c, 0x04, 0x76, 0x91, - 0xce, 0xed, 0xeb, 0xab, 0x2d, 0x67, 0xa6, 0xd6, 0x83, 0x2e, 0x76, 0x66, 0xa0, 0x03, 0xbf, 0xf9, - 0xe7, 0x32, 0x6c, 0x2c, 0x49, 0x19, 0xdd, 0x85, 0xf5, 0x60, 0x4c, 0x86, 0xd4, 0xc6, 0x98, 0x4c, - 0x50, 0x0f, 0x0a, 0x21, 0x39, 0xa3, 0xa1, 0x16, 0xb4, 0x3e, 0xd4, 0x1f, 0xbd, 0xf3, 0x4e, 0xb4, - 0x7e, 0x67, 0xf0, 0x3d, 0xa6, 0xc4, 0x14, 0x5b, 0x32, 0x72, 0xa1, 0xe8, 0xf1, 0xf1, 0x98, 0x30, - 0xfd, 0x74, 0xae, 0x6d, 0x97, 0x71, 0x3a, 0xd5, 0x99, 0x21, 0x62, 0x28, 0xdd, 0xbc, 0x31, 0x9b, - 0x31, 0xaa, 0xc2, 0x1a, 0x65, 0x13, 0x77, 0xdd, 0x98, 0xf4, 0x50, 0x5b, 0xfc, 0x20, 0x51, 0x64, - 0x19, 0xeb, 0xa1, 0xe6, 0xc5, 0x92, 0x0a, 0xb7, 0x98, 0x64, 0x54, 0x8f, 0xd1, 0xcf, 0xa0, 0x30, - 0xe6, 0x31, 0x53, 0xd2, 0x2d, 0x99, 0x60, 0x37, 0xb3, 0x82, 0x3d, 0xd2, 0x08, 0xfb, 0xb4, 0x5b, - 0x38, 0xea, 0xc1, 0x1d, 0xa9, 0x78, 0x34, 0x18, 0x0a, 0xe2, 0xd1, 0x41, 0x44, 0x45, 0xc0, 0x7d, - 0xfb, 0x34, 0x6d, 0xbe, 0x75, 0x28, 0x5d, 0xdb, 0xe4, 0xe0, 0xdb, 0x9a, 0xb3, 0xaf, 0x29, 0x7d, - 0xc3, 0x40, 0x7d, 0xa8, 0x44, 0x71, 0x18, 0x0e, 0x78, 0x94, 0x54, 0xa9, 0x44, 0x4f, 0xef, 0x91, - 0xb2, 0x7e, 0x1c, 0x86, 0xcf, 0x13, 0x12, 0x76, 0xa2, 0xf9, 0x04, 0xdd, 0x87, 0xc2, 0x50, 0xf0, - 0x38, 0x92, 0xae, 0x63, 0x92, 0x61, 0x67, 0xe8, 0x0b, 0x28, 0x4a, 0xea, 0x09, 0xaa, 0xa4, 0x5b, - 0x31, 0x5b, 0xfd, 0x38, 0x6b, 0x91, 0x13, 0x03, 0xc1, 0xf4, 0x9c, 0x0a, 0xca, 0x3c, 0x8a, 0x53, - 0x0e, 0xda, 0x84, 0x35, 0xa5, 0xa6, 0xee, 0x46, 0x23, 0xb7, 0x5d, 0xea, 0x14, 0xaf, 0xaf, 0xb6, - 0xd6, 0x4e, 0x4f, 0x5f, 0x62, 0x6d, 0xd3, 0x2f, 0xe8, 0x88, 0x4b, 0xc5, 0xc8, 0x98, 0xba, 0xb7, - 0x4c, 0x6e, 0x67, 0x73, 0xf4, 0x12, 0xc0, 0x67, 0x72, 0xe0, 0x99, 0x2b, 0xeb, 0xde, 0x36, 0xbb, - 0xfb, 0xf4, 0xdd, 0xbb, 0xeb, 0x1e, 0x9f, 0xd8, 0x2a, 0xb2, 0x71, 0x7d, 0xb5, 0x55, 0x9e, 0x4d, - 0x71, 0xd9, 0x67, 0x32, 0x19, 0xa2, 0x0e, 0x38, 0x23, 0x4a, 0x42, 0x35, 0xf2, 0x46, 0xd4, 0xbb, - 0x70, 0xab, 0x37, 0x97, 0x85, 0x67, 0x06, 0x66, 0x3d, 0x2c, 0x92, 0xb4, 0x82, 0x75, 0xa8, 0xd2, - 0xbd, 0x63, 0x72, 0x95, 0x4c, 0xd0, 0x47, 0x00, 0x3c, 0xa2, 0x6c, 0x20, 0x95, 0x1f, 0x30, 0x17, - 0xe9, 0x2d, 0xe3, 0xb2, 0xb6, 0x9c, 0x68, 0x03, 0x7a, 0xa0, 0x1f, 0x6d, 0xe2, 0x0f, 0x38, 0x0b, - 0xa7, 0xee, 0x77, 0xcc, 0xd7, 0x92, 0x36, 0x3c, 0x67, 0xe1, 0x14, 0x6d, 0x81, 0x63, 0x74, 0x21, - 0x83, 0x21, 0x23, 0xa1, 0x7b, 0xd7, 0xe4, 0x03, 0xb4, 0xe9, 0xc4, 0x58, 0xf4, 0x39, 0x24, 0xd9, - 0x90, 0xee, 0xbd, 0x9b, 0xcf, 0xc1, 0x06, 0x3b, 0x3f, 0x07, 0xcb, 0x41, 0xbf, 0x04, 0x88, 0x44, - 0x30, 0x09, 0x42, 0x3a, 0xa4, 0xd2, 0xbd, 0x6f, 0x36, 0x5d, 0xcf, 0x7c, 0xad, 0x67, 0x28, 0xbc, - 0xc0, 0xa8, 0x7d, 0x0e, 0xce, 0xc2, 0x6d, 0xd3, 0xb7, 0xe4, 0x82, 0x4e, 0xed, 0x05, 0xd6, 0x43, - 0x9d, 0x92, 0x09, 0x09, 0xe3, 0xa4, 0x13, 0x2e, 0xe3, 0x64, 0xf2, 0xf3, 0xd5, 0x27, 0xb9, 0xda, - 0x2e, 0x38, 0x0b, 0xaa, 0x43, 0x1f, 0xc3, 0x86, 0xa0, 0xc3, 0x40, 0x2a, 0x31, 0x1d, 0x90, 0x58, - 0x8d, 0xdc, 0x5f, 0x1b, 0x42, 0x25, 0x35, 0xb6, 0x63, 0x35, 0xaa, 0x0d, 0x60, 0x7e, 0x78, 0xa8, - 0x01, 0x8e, 0x16, 0x85, 0xa4, 0x62, 0x42, 0x85, 0xae, 0xb6, 0x3a, 0xe7, 0x8b, 0x26, 0x2d, 0x5e, - 0x49, 0x89, 0xf0, 0x46, 0xe6, 0xed, 0x28, 0x63, 0x3b, 0xd3, 0x8f, 0x41, 0x7a, 0x43, 0xec, 0x63, - 0x60, 0xa7, 0xcd, 0x7f, 0xe7, 0xa0, 0xb2, 0xd8, 0x34, 0xa0, 0xbd, 0xa4, 0xd8, 0x9b, 0x2d, 0xdd, - 0xda, 0xdd, 0x79, 0x57, 0x93, 0x61, 0x4a, 0x6b, 0x18, 0x6b, 0x67, 0x47, 0xba, 0xbf, 0x37, 0x64, - 0xf4, 0x53, 0x58, 0x8f, 0xb8, 0x50, 0xe9, 0x13, 0x96, 0x9d, 0x60, 0x2e, 0xd2, 0x52, 0x94, 0x80, - 0x9b, 0x23, 0xb8, 0xb5, 0xec, 0x0d, 0x3d, 0x82, 0xb5, 0x17, 0x07, 0xfd, 0xea, 0x4a, 0xed, 0xc1, - 0xab, 0xcb, 0xc6, 0x77, 0x97, 0x3f, 0xbe, 0x08, 0x84, 0x8a, 0x49, 0x78, 0xd0, 0x47, 0x3f, 0x84, - 0xf5, 0xee, 0xf1, 0x09, 0xc6, 0xd5, 0x5c, 0x6d, 0xeb, 0xd5, 0x65, 0xe3, 0xc1, 0x32, 0x4e, 0x7f, - 0xe2, 0x31, 0xf3, 0x31, 0x3f, 0x9b, 0xf5, 0xba, 0x7f, 0x5b, 0x05, 0xc7, 0xbe, 0xec, 0x1f, 0xfa, - 0x77, 0x68, 0x23, 0x29, 0xe5, 0xe9, 0x95, 0x5d, 0x7d, 0x67, 0x45, 0xaf, 0x24, 0x04, 0x7b, 0xc6, - 0x0f, 0xa1, 0x12, 0x44, 0x93, 0xcf, 0x06, 0x94, 0x91, 0xb3, 0xd0, 0xb6, 0xbd, 0x25, 0xec, 0x68, - 0x5b, 0x2f, 0x31, 0xe9, 0xf7, 0x22, 0x60, 0x8a, 0x0a, 0x66, 0x1b, 0xda, 0x12, 0x9e, 0xcd, 0xd1, - 0x17, 0x90, 0x0f, 0x22, 0x32, 0xb6, 0x6d, 0x48, 0xe6, 0x0e, 0x0e, 0xfa, 0xed, 0x23, 0xab, 0xc1, - 0x4e, 0xe9, 0xfa, 0x6a, 0x2b, 0xaf, 0x0d, 0xd8, 0xd0, 0x50, 0x3d, 0xed, 0x04, 0xf4, 0x4a, 0xe6, - 0xed, 0x2f, 0xe1, 0x05, 0x8b, 0xd6, 0x51, 0xc0, 0x86, 0x82, 0x4a, 0x69, 0xaa, 0x40, 0x09, 0xa7, - 0xd3, 0xe6, 0x7f, 0xf2, 0xe0, 0xec, 0x85, 0xb1, 0x54, 0xb6, 0xb6, 0x7d, 0xb0, 0x8c, 0xbe, 0x84, - 0x3b, 0xc4, 0xfc, 0x33, 0x11, 0xa6, 0x0b, 0x85, 0xe9, 0xbd, 0x6c, 0x56, 0x1f, 0x65, 0xba, 0x9b, - 0x81, 0x93, 0x3e, 0xad, 0x53, 0xd0, 0x3e, 0xdd, 0x1c, 0xae, 0x92, 0x37, 0xbe, 0xa0, 0x13, 0xd8, - 0xe0, 0xc2, 0x1b, 0x51, 0xa9, 0x92, 0xf2, 0x62, 0xff, 0x31, 0x32, 0xff, 0x3e, 0x9f, 0x2f, 0x02, - 0xed, 0xdb, 0x9a, 0x44, 0xbb, 0xec, 0x03, 0x3d, 0x81, 0xbc, 0x20, 0xe7, 0x69, 0x1f, 0x99, 0xa9, - 0x7c, 0x4c, 0xce, 0xd5, 0x92, 0x0b, 0xc3, 0x40, 0xbf, 0x05, 0xf0, 0x03, 0x19, 0x11, 0xe5, 0x8d, - 0xa8, 0xb0, 0x27, 0x98, 0xb9, 0xc5, 0xee, 0x0c, 0xb5, 0xe4, 0x65, 0x81, 0x8d, 0x0e, 0xa1, 0xec, - 0x91, 0x54, 0x83, 0x85, 0x9b, 0x7f, 0xbc, 0xf6, 0xda, 0xd6, 0x45, 0x55, 0xbb, 0xb8, 0xbe, 0xda, - 0x2a, 0xa5, 0x16, 0x5c, 0xf2, 0x88, 0xd5, 0xe4, 0x21, 0x6c, 0xe8, 0x1f, 0xb2, 0x81, 0x4f, 0xcf, - 0x49, 0x1c, 0xaa, 0xe4, 0xec, 0x6f, 0xa8, 0x15, 0xba, 0xbb, 0xef, 0x5a, 0x9c, 0x8d, 0xab, 0xa2, - 0x16, 0x6c, 0xe8, 0xf7, 0x70, 0x87, 0x32, 0x4f, 0x4c, 0x8d, 0x02, 0xd3, 0x08, 0x4b, 0x37, 0x6f, - 0xb6, 0x37, 0x03, 0x2f, 0x6d, 0xb6, 0x4a, 0xdf, 0xb0, 0x37, 0x03, 0x80, 0xa4, 0xfa, 0x7e, 0x58, - 0xfd, 0x21, 0xc8, 0xfb, 0x44, 0x11, 0x23, 0xb9, 0x0a, 0x36, 0x63, 0xbd, 0x54, 0xb2, 0xe8, 0xff, - 0x7d, 0xa9, 0x8e, 0xfb, 0xfa, 0x9b, 0xfa, 0xca, 0x3f, 0xbf, 0xa9, 0xaf, 0xfc, 0xe9, 0xba, 0x9e, - 0x7b, 0x7d, 0x5d, 0xcf, 0xfd, 0xfd, 0xba, 0x9e, 0xfb, 0xd7, 0x75, 0x3d, 0x77, 0x56, 0x30, 0xed, - 0xd1, 0x4f, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x90, 0x54, 0x3b, 0xfc, 0x57, 0x12, 0x00, 0x00, + 0x15, 0xb7, 0x6c, 0x59, 0x7f, 0xde, 0xc8, 0x89, 0xdc, 0x24, 0x61, 0xac, 0xb0, 0xb2, 0xa2, 0x0d, + 0xc1, 0xcb, 0x16, 0x72, 0x61, 0xa8, 0x25, 0x4b, 0x58, 0x40, 0xb2, 0xb4, 0x8e, 0x31, 0x76, 0x54, + 0x6d, 0x6f, 0x20, 0x27, 0x55, 0x7b, 0xa6, 0x2d, 0x4d, 0x79, 0xd4, 0x3d, 0xf4, 0xf4, 0x68, 0x4b, + 0x37, 0x8e, 0x5b, 0xb9, 0x72, 0x76, 0x71, 0xe0, 0xcb, 0xe4, 0x48, 0x71, 0xe2, 0xe4, 0x62, 0xf5, + 0x09, 0xa8, 0xe2, 0x03, 0x40, 0x75, 0x4f, 0x8f, 0x34, 0x4a, 0xc6, 0x49, 0xaa, 0xc8, 0xde, 0xba, + 0xdf, 0xfc, 0x7e, 0xaf, 0x5f, 0xbf, 0xfe, 0x75, 0xbf, 0x37, 0x60, 0x85, 0x01, 0x75, 0xc2, 0x56, + 0x20, 0xb8, 0xe4, 0x08, 0xb9, 0xdc, 0xb9, 0xa4, 0xa2, 0x15, 0x7e, 0x4d, 0xc4, 0xf8, 0xd2, 0x93, + 0xad, 0xc9, 0x4f, 0x6b, 0x96, 0x9c, 0x06, 0xd4, 0x00, 0x6a, 0x77, 0x86, 0x7c, 0xc8, 0xf5, 0x70, + 0x57, 0x8d, 0x8c, 0xb5, 0x3e, 0xe4, 0x7c, 0xe8, 0xd3, 0x5d, 0x3d, 0x3b, 0x8f, 0x2e, 0x76, 0xdd, + 0x48, 0x10, 0xe9, 0x71, 0x66, 0xbe, 0x6f, 0xbd, 0xfe, 0x9d, 0xb0, 0x69, 0xfc, 0xa9, 0x79, 0x95, + 0x87, 0xd2, 0x09, 0x77, 0xe9, 0x69, 0x40, 0x1d, 0x74, 0x00, 0x16, 0x61, 0x8c, 0x4b, 0xcd, 0x0d, + 0xed, 0x5c, 0x23, 0xb7, 0x63, 0xed, 0x6d, 0xb7, 0xde, 0x0c, 0xaa, 0xd5, 0x5e, 0xc0, 0x3a, 0xf9, + 0x57, 0xd7, 0xdb, 0x2b, 0x38, 0xcd, 0x44, 0xbf, 0x81, 0x8a, 0x4b, 0x43, 0x4f, 0x50, 0x77, 0x20, + 0xb8, 0x4f, 0xed, 0xd5, 0x46, 0x6e, 0xe7, 0xd6, 0xde, 0x0f, 0xb2, 0x3c, 0xa9, 0xc5, 0x31, 0xf7, + 0x29, 0xb6, 0x0c, 0x43, 0x4d, 0xd0, 0x01, 0xc0, 0x98, 0x8e, 0xcf, 0xa9, 0x08, 0x47, 0x5e, 0x60, + 0xaf, 0x69, 0xfa, 0x8f, 0x6e, 0xa2, 0xab, 0xd8, 0x5b, 0xc7, 0x73, 0x38, 0x4e, 0x51, 0xd1, 0x31, + 0x54, 0xc8, 0x84, 0x78, 0x3e, 0x39, 0xf7, 0x7c, 0x4f, 0x4e, 0xed, 0xbc, 0x76, 0xf5, 0xc9, 0x5b, + 0x5d, 0xb5, 0x53, 0x04, 0xbc, 0x44, 0x6f, 0xba, 0x00, 0x8b, 0x85, 0xd0, 0x23, 0x28, 0xf6, 0x7b, + 0x27, 0xdd, 0xc3, 0x93, 0x83, 0xea, 0x4a, 0x6d, 0xeb, 0xe5, 0x55, 0xe3, 0xae, 0xf2, 0xb1, 0x00, + 0xf4, 0x29, 0x73, 0x3d, 0x36, 0x44, 0x3b, 0x50, 0x6a, 0xef, 0xef, 0xf7, 0xfa, 0x67, 0xbd, 0x6e, + 0x35, 0x57, 0xab, 0xbd, 0xbc, 0x6a, 0xdc, 0x5b, 0x06, 0xb6, 0x1d, 0x87, 0x06, 0x92, 0xba, 0xb5, + 0xfc, 0x37, 0x7f, 0xab, 0xaf, 0x34, 0xbf, 0xc9, 0x41, 0x25, 0x1d, 0x04, 0x7a, 0x04, 0x85, 0xf6, + 0xfe, 0xd9, 0xe1, 0xf3, 0x5e, 0x75, 0x65, 0x41, 0x4f, 0x23, 0xda, 0x8e, 0xf4, 0x26, 0x14, 0x3d, + 0x84, 0xf5, 0x7e, 0xfb, 0xab, 0xd3, 0x5e, 0x35, 0xb7, 0x08, 0x27, 0x0d, 0xeb, 0x93, 0x28, 0xd4, + 0xa8, 0x2e, 0x6e, 0x1f, 0x9e, 0x54, 0x57, 0xb3, 0x51, 0x5d, 0x41, 0x3c, 0x66, 0x42, 0xf9, 0x6b, + 0x1e, 0xac, 0x53, 0x2a, 0x26, 0x9e, 0xf3, 0x81, 0x25, 0xf2, 0x19, 0xe4, 0x25, 0x09, 0x2f, 0xb5, + 0x34, 0xac, 0x6c, 0x69, 0x9c, 0x91, 0xf0, 0x52, 0x2d, 0x6a, 0xe8, 0x1a, 0xaf, 0x94, 0x21, 0x68, + 0xe0, 0x7b, 0x0e, 0x91, 0xd4, 0xd5, 0xca, 0xb0, 0xf6, 0x7e, 0x98, 0xc5, 0xc6, 0x73, 0x94, 0x89, + 0xff, 0xe9, 0x0a, 0x4e, 0x51, 0xd1, 0x13, 0x28, 0x0c, 0x7d, 0x7e, 0x4e, 0x7c, 0xad, 0x09, 0x6b, + 0xef, 0x41, 0x96, 0x93, 0x03, 0x8d, 0x58, 0x38, 0x30, 0x14, 0xf4, 0x18, 0x0a, 0x51, 0xe0, 0x12, + 0x49, 0xed, 0x82, 0x26, 0x37, 0xb2, 0xc8, 0x5f, 0x69, 0xc4, 0x3e, 0x67, 0x17, 0xde, 0x10, 0x1b, + 0x3c, 0x3a, 0x82, 0x12, 0xa3, 0xf2, 0x6b, 0x2e, 0x2e, 0x43, 0xbb, 0xd8, 0x58, 0xdb, 0xb1, 0xf6, + 0x3e, 0xcd, 0x14, 0x63, 0x8c, 0x69, 0x4b, 0x49, 0x9c, 0xd1, 0x98, 0x32, 0x19, 0xbb, 0xe9, 0xac, + 0xda, 0x39, 0x3c, 0x77, 0x80, 0x7e, 0x05, 0x25, 0xca, 0xdc, 0x80, 0x7b, 0x4c, 0xda, 0xa5, 0x9b, + 0x03, 0xe9, 0x19, 0x8c, 0x4a, 0x26, 0x9e, 0x33, 0x14, 0x5b, 0x70, 0xdf, 0x3f, 0x27, 0xce, 0xa5, + 0x5d, 0x7e, 0xcf, 0x6d, 0xcc, 0x19, 0x9d, 0x02, 0xe4, 0xc7, 0xdc, 0xa5, 0xcd, 0x5d, 0xd8, 0x7c, + 0x23, 0xd5, 0xa8, 0x06, 0x25, 0x93, 0xea, 0x58, 0x23, 0x79, 0x3c, 0x9f, 0x37, 0x6f, 0xc3, 0xc6, + 0x52, 0x5a, 0x9b, 0xff, 0xc8, 0x43, 0x29, 0x39, 0x6b, 0xd4, 0x86, 0xb2, 0xc3, 0x99, 0x24, 0x1e, + 0xa3, 0xc2, 0xc8, 0x2b, 0xf3, 0x64, 0xf6, 0x13, 0x90, 0x62, 0x3d, 0x5d, 0xc1, 0x0b, 0x16, 0xfa, + 0x12, 0xca, 0x82, 0x86, 0x3c, 0x12, 0x0e, 0x0d, 0x8d, 0xbe, 0x76, 0xb2, 0x15, 0x12, 0x83, 0x30, + 0xfd, 0x53, 0xe4, 0x09, 0xaa, 0xb2, 0x1c, 0xe2, 0x05, 0x15, 0x3d, 0x81, 0xa2, 0xa0, 0xa1, 0x24, + 0x42, 0xbe, 0x4d, 0x22, 0x38, 0x86, 0xf4, 0xb9, 0xef, 0x39, 0x53, 0x9c, 0x30, 0xd0, 0x13, 0x28, + 0x07, 0x3e, 0x71, 0xb4, 0x57, 0x7b, 0x5d, 0xd3, 0x3f, 0xca, 0xa2, 0xf7, 0x13, 0x10, 0x5e, 0xe0, + 0xd1, 0xe7, 0x00, 0x3e, 0x1f, 0x0e, 0x5c, 0xe1, 0x4d, 0xa8, 0x30, 0x12, 0xab, 0x65, 0xb1, 0xbb, + 0x1a, 0x81, 0xcb, 0x3e, 0x1f, 0xc6, 0x43, 0x74, 0xf0, 0x7f, 0xe9, 0x2b, 0xa5, 0xad, 0x23, 0x00, + 0x32, 0xff, 0x6a, 0xd4, 0xf5, 0xc9, 0x7b, 0xb9, 0x32, 0x27, 0x92, 0xa2, 0xa3, 0x07, 0x50, 0xb9, + 0xe0, 0xc2, 0xa1, 0x03, 0x73, 0x6b, 0xca, 0x5a, 0x13, 0x96, 0xb6, 0xc5, 0xfa, 0x42, 0x1d, 0x28, + 0x0e, 0x29, 0xa3, 0xc2, 0x73, 0x6c, 0xd0, 0x8b, 0x3d, 0xca, 0xbc, 0x90, 0x31, 0x04, 0x47, 0x4c, + 0x7a, 0x63, 0x6a, 0x56, 0x4a, 0x88, 0x9d, 0x32, 0x14, 0x45, 0xfc, 0xa5, 0xf9, 0x47, 0x40, 0x6f, + 0x62, 0x11, 0x82, 0xfc, 0xa5, 0xc7, 0x5c, 0x2d, 0xac, 0x32, 0xd6, 0x63, 0xd4, 0x82, 0x62, 0x40, + 0xa6, 0x3e, 0x27, 0xae, 0x11, 0xcb, 0x9d, 0x56, 0x5c, 0x2f, 0x5b, 0x49, 0xbd, 0x6c, 0xb5, 0xd9, + 0x14, 0x27, 0xa0, 0xe6, 0x11, 0xdc, 0xcd, 0xdc, 0x32, 0xda, 0x83, 0xca, 0x5c, 0x84, 0x03, 0xcf, + 0x2c, 0xd2, 0xb9, 0x3d, 0xbb, 0xde, 0xb6, 0xe6, 0x6a, 0x3d, 0xec, 0x62, 0x6b, 0x0e, 0x3a, 0x74, + 0x9b, 0x7f, 0x29, 0xc3, 0xc6, 0x92, 0x94, 0xd1, 0x1d, 0x58, 0xf7, 0xc6, 0x64, 0x48, 0x4d, 0x8c, + 0xf1, 0x04, 0xf5, 0xa0, 0xe0, 0x93, 0x73, 0xea, 0x2b, 0x41, 0xab, 0x43, 0xfd, 0xc9, 0x3b, 0xef, + 0x44, 0xeb, 0xf7, 0x1a, 0xdf, 0x63, 0x52, 0x4c, 0xb1, 0x21, 0x23, 0x1b, 0x8a, 0x0e, 0x1f, 0x8f, + 0x09, 0x53, 0x4f, 0xe7, 0xda, 0x4e, 0x19, 0x27, 0x53, 0x95, 0x19, 0x22, 0x86, 0xa1, 0x9d, 0xd7, + 0x66, 0x3d, 0x46, 0x55, 0x58, 0xa3, 0x6c, 0x62, 0xaf, 0x6b, 0x93, 0x1a, 0x2a, 0x8b, 0xeb, 0xc5, + 0x8a, 0x2c, 0x63, 0x35, 0x54, 0xbc, 0x28, 0xa4, 0xc2, 0x2e, 0xc6, 0x19, 0x55, 0x63, 0xf4, 0x0b, + 0x28, 0x8c, 0x79, 0xc4, 0x64, 0x68, 0x97, 0x74, 0xb0, 0x5b, 0x59, 0xc1, 0x1e, 0x2b, 0x84, 0x79, + 0xda, 0x0d, 0x1c, 0xf5, 0x60, 0x33, 0x94, 0x3c, 0x18, 0x0c, 0x05, 0x71, 0xe8, 0x20, 0xa0, 0xc2, + 0xe3, 0xae, 0x79, 0x9a, 0xb6, 0xde, 0x38, 0x94, 0xae, 0x69, 0x72, 0xf0, 0x6d, 0xc5, 0x39, 0x50, + 0x94, 0xbe, 0x66, 0xa0, 0x3e, 0x54, 0x82, 0xc8, 0xf7, 0x07, 0x3c, 0x88, 0xab, 0x54, 0xac, 0xa7, + 0xf7, 0x48, 0x59, 0x3f, 0xf2, 0xfd, 0x67, 0x31, 0x09, 0x5b, 0xc1, 0x62, 0x82, 0xee, 0x41, 0x61, + 0x28, 0x78, 0x14, 0x84, 0xb6, 0xa5, 0x93, 0x61, 0x66, 0xe8, 0x0b, 0x28, 0x86, 0xd4, 0x11, 0x54, + 0x86, 0x76, 0x45, 0x6f, 0xf5, 0xe3, 0xac, 0x45, 0x4e, 0x35, 0x04, 0xd3, 0x0b, 0x2a, 0x28, 0x73, + 0x28, 0x4e, 0x38, 0x68, 0x0b, 0xd6, 0xa4, 0x9c, 0xda, 0x1b, 0x8d, 0xdc, 0x4e, 0xa9, 0x53, 0x9c, + 0x5d, 0x6f, 0xaf, 0x9d, 0x9d, 0xbd, 0xc0, 0xca, 0xa6, 0x5e, 0xd0, 0x11, 0x0f, 0x25, 0x23, 0x63, + 0x6a, 0xdf, 0xd2, 0xb9, 0x9d, 0xcf, 0xd1, 0x0b, 0x00, 0x97, 0x85, 0x03, 0x47, 0x5f, 0x59, 0xfb, + 0xb6, 0xde, 0xdd, 0xa7, 0xef, 0xde, 0x5d, 0xf7, 0xe4, 0xd4, 0x54, 0x91, 0x8d, 0xd9, 0xf5, 0x76, + 0x79, 0x3e, 0xc5, 0x65, 0x97, 0x85, 0xf1, 0x10, 0x75, 0xc0, 0x1a, 0x51, 0xe2, 0xcb, 0x91, 0x33, + 0xa2, 0xce, 0xa5, 0x5d, 0xbd, 0xb9, 0x2c, 0x3c, 0xd5, 0x30, 0xe3, 0x21, 0x4d, 0x52, 0x0a, 0x56, + 0xa1, 0x86, 0xf6, 0xa6, 0xce, 0x55, 0x3c, 0x41, 0x1f, 0x01, 0xf0, 0x80, 0xb2, 0x41, 0x28, 0x5d, + 0x8f, 0xd9, 0x48, 0x6d, 0x19, 0x97, 0x95, 0xe5, 0x54, 0x19, 0xd0, 0x7d, 0xf5, 0x68, 0x13, 0x77, + 0xc0, 0x99, 0x3f, 0xb5, 0xbf, 0xa7, 0xbf, 0x96, 0x94, 0xe1, 0x19, 0xf3, 0xa7, 0x68, 0x1b, 0x2c, + 0xad, 0x8b, 0xd0, 0x1b, 0x32, 0xe2, 0xdb, 0x77, 0x74, 0x3e, 0x40, 0x99, 0x4e, 0xb5, 0x45, 0x9d, + 0x43, 0x9c, 0x8d, 0xd0, 0xbe, 0x7b, 0xf3, 0x39, 0x98, 0x60, 0x17, 0xe7, 0x60, 0x38, 0xe8, 0xd7, + 0x00, 0x81, 0xf0, 0x26, 0x9e, 0x4f, 0x87, 0x34, 0xb4, 0xef, 0xe9, 0x4d, 0xd7, 0x33, 0x5f, 0xeb, + 0x39, 0x0a, 0xa7, 0x18, 0xb5, 0xcf, 0xc1, 0x4a, 0xdd, 0x36, 0x75, 0x4b, 0x2e, 0xe9, 0xd4, 0x5c, + 0x60, 0x35, 0x54, 0x29, 0x99, 0x10, 0x3f, 0x8a, 0x3b, 0xe1, 0x32, 0x8e, 0x27, 0xbf, 0x5c, 0x7d, + 0x9c, 0xab, 0xed, 0x81, 0x95, 0x52, 0x1d, 0xfa, 0x18, 0x36, 0x04, 0x1d, 0x7a, 0xa1, 0x14, 0xd3, + 0x01, 0x89, 0xe4, 0xc8, 0xfe, 0xad, 0x26, 0x54, 0x12, 0x63, 0x3b, 0x92, 0xa3, 0xda, 0x00, 0x16, + 0x87, 0x87, 0x1a, 0x60, 0x29, 0x51, 0x84, 0x54, 0x4c, 0xa8, 0x50, 0xd5, 0x56, 0xe5, 0x3c, 0x6d, + 0x52, 0xe2, 0x0d, 0x29, 0x11, 0xce, 0x48, 0xbf, 0x1d, 0x65, 0x6c, 0x66, 0xea, 0x31, 0x48, 0x6e, + 0x88, 0x79, 0x0c, 0xcc, 0xb4, 0xf9, 0x9f, 0x1c, 0x54, 0xd2, 0x4d, 0x03, 0xda, 0x8f, 0x8b, 0xbd, + 0xde, 0xd2, 0xad, 0xbd, 0xdd, 0x77, 0x35, 0x19, 0xba, 0xb4, 0xfa, 0x91, 0x72, 0x76, 0xac, 0xfa, + 0x7b, 0x4d, 0x46, 0x3f, 0x87, 0xf5, 0x80, 0x0b, 0x99, 0x3c, 0x61, 0xd9, 0x09, 0xe6, 0x22, 0x29, + 0x45, 0x31, 0xb8, 0x39, 0x82, 0x5b, 0xcb, 0xde, 0xd0, 0x43, 0x58, 0x7b, 0x7e, 0xd8, 0xaf, 0xae, + 0xd4, 0xee, 0xbf, 0xbc, 0x6a, 0x7c, 0x7f, 0xf9, 0xe3, 0x73, 0x4f, 0xc8, 0x88, 0xf8, 0x87, 0x7d, + 0xf4, 0x63, 0x58, 0xef, 0x9e, 0x9c, 0x62, 0x5c, 0xcd, 0xd5, 0xb6, 0x5f, 0x5e, 0x35, 0xee, 0x2f, + 0xe3, 0xd4, 0x27, 0x1e, 0x31, 0x17, 0xf3, 0xf3, 0x79, 0xaf, 0xfb, 0xef, 0x55, 0xb0, 0xcc, 0xcb, + 0xfe, 0xa1, 0x7f, 0x87, 0x36, 0xe2, 0x52, 0x9e, 0x5c, 0xd9, 0xd5, 0x77, 0x56, 0xf4, 0x4a, 0x4c, + 0x30, 0x67, 0xfc, 0x00, 0x2a, 0x5e, 0x30, 0xf9, 0x6c, 0x40, 0x19, 0x39, 0xf7, 0x4d, 0xdb, 0x5b, + 0xc2, 0x96, 0xb2, 0xf5, 0x62, 0x93, 0x7a, 0x2f, 0x3c, 0x26, 0xa9, 0x60, 0xa6, 0xa1, 0x2d, 0xe1, + 0xf9, 0x1c, 0x7d, 0x01, 0x79, 0x2f, 0x20, 0x63, 0xd3, 0x86, 0x64, 0xee, 0xe0, 0xb0, 0xdf, 0x3e, + 0x36, 0x1a, 0xec, 0x94, 0x66, 0xd7, 0xdb, 0x79, 0x65, 0xc0, 0x9a, 0x86, 0xea, 0x49, 0x27, 0xa0, + 0x56, 0xd2, 0x6f, 0x7f, 0x09, 0xa7, 0x2c, 0x4a, 0x47, 0x1e, 0x1b, 0x0a, 0x1a, 0x86, 0xba, 0x0a, + 0x94, 0x70, 0x32, 0x55, 0xf7, 0x36, 0xde, 0xf1, 0xe0, 0x42, 0xf0, 0xb1, 0x6e, 0x22, 0xca, 0x18, + 0x62, 0xd3, 0x97, 0x82, 0x8f, 0x9b, 0xff, 0xcd, 0x83, 0xb5, 0xef, 0x47, 0xa1, 0x34, 0xc5, 0xef, + 0x83, 0xa5, 0xfc, 0x05, 0x6c, 0x12, 0xfd, 0x53, 0x45, 0x98, 0xaa, 0x24, 0xba, 0x39, 0x33, 0x69, + 0x7f, 0x98, 0xe9, 0x6e, 0x0e, 0x8e, 0x1b, 0xb9, 0x4e, 0x41, 0xf9, 0xb4, 0x73, 0xb8, 0x4a, 0x5e, + 0xfb, 0x82, 0x4e, 0x61, 0x83, 0x0b, 0x67, 0x44, 0x43, 0x19, 0xd7, 0x1f, 0xf3, 0x13, 0x92, 0xf9, + 0x7b, 0xfa, 0x2c, 0x0d, 0x34, 0x8f, 0x6f, 0x1c, 0xed, 0xb2, 0x0f, 0xf4, 0x18, 0xf2, 0x82, 0x5c, + 0x24, 0x8d, 0x66, 0xe6, 0xd5, 0xc0, 0xe4, 0x42, 0x2e, 0xb9, 0xd0, 0x0c, 0xf4, 0x3b, 0x00, 0xd7, + 0x0b, 0x03, 0x22, 0x9d, 0x11, 0x15, 0xe6, 0x88, 0x33, 0xb7, 0xd8, 0x9d, 0xa3, 0x96, 0xbc, 0xa4, + 0xd8, 0xe8, 0x08, 0xca, 0x0e, 0x49, 0x44, 0x5a, 0xb8, 0xf9, 0xcf, 0x6c, 0xbf, 0x6d, 0x5c, 0x54, + 0x95, 0x8b, 0xd9, 0xf5, 0x76, 0x29, 0xb1, 0xe0, 0x92, 0x43, 0x8c, 0x68, 0x8f, 0x60, 0x43, 0xfd, + 0xb1, 0x0d, 0x5c, 0x7a, 0x41, 0x22, 0x5f, 0xc6, 0xe2, 0xb8, 0xa1, 0x98, 0xa8, 0xf6, 0xbf, 0x6b, + 0x70, 0x26, 0xae, 0x8a, 0x4c, 0xd9, 0xd0, 0x1f, 0x60, 0x93, 0x32, 0x47, 0x4c, 0xb5, 0x44, 0x93, + 0x08, 0x4b, 0x37, 0x6f, 0xb6, 0x37, 0x07, 0x2f, 0x6d, 0xb6, 0x4a, 0x5f, 0xb3, 0x37, 0x3d, 0x80, + 0xb8, 0x3c, 0x7f, 0x58, 0xfd, 0x21, 0xc8, 0xbb, 0x44, 0x12, 0x2d, 0xb9, 0x0a, 0xd6, 0x63, 0xb5, + 0x54, 0xbc, 0xe8, 0x77, 0xbe, 0x54, 0xc7, 0x7e, 0xf5, 0x6d, 0x7d, 0xe5, 0x9f, 0xdf, 0xd6, 0x57, + 0xfe, 0x3c, 0xab, 0xe7, 0x5e, 0xcd, 0xea, 0xb9, 0xbf, 0xcf, 0xea, 0xb9, 0x7f, 0xcd, 0xea, 0xb9, + 0xf3, 0x82, 0xee, 0x9f, 0x7e, 0xf6, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa3, 0xb7, 0x5c, 0xc9, + 0x78, 0x12, 0x00, 0x00, } diff --git a/components/engine/vendor/github.com/docker/swarmkit/api/specs.proto b/components/engine/vendor/github.com/docker/swarmkit/api/specs.proto index 0b65afa929..ba842660f2 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/api/specs.proto +++ b/components/engine/vendor/github.com/docker/swarmkit/api/specs.proto @@ -341,6 +341,11 @@ message NetworkSpec { // swarm internally created only and it was identified by the name // "ingress" and the label "com.docker.swarm.internal": "true". bool ingress = 7; + + // ConfigFrom indicates that the network specific configuration + // for this network will be provided via another network, locally + // on the node where this network is being plumbed. + string config_from = 8; } // ClusterSpec specifies global cluster settings. diff --git a/components/engine/vendor/github.com/docker/swarmkit/api/types.pb.go b/components/engine/vendor/github.com/docker/swarmkit/api/types.pb.go index 3ede42eafb..93a84f19e5 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/api/types.pb.go +++ b/components/engine/vendor/github.com/docker/swarmkit/api/types.pb.go @@ -240,6 +240,7 @@ import io "io" var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf +var _ = time.Kitchen // This is a compile-time assertion to ensure that this generated file // is compatible with the proto package it is being compiled against. @@ -1213,6 +1214,8 @@ type NetworkAttachmentConfig struct { // preferred. If these addresses are not available then the // attachment might fail. Addresses []string `protobuf:"bytes,3,rep,name=addresses" json:"addresses,omitempty"` + // DriverOpts is a map of driver specific 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"` } func (m *NetworkAttachmentConfig) Reset() { *m = NetworkAttachmentConfig{} } @@ -2672,6 +2675,13 @@ func (m *NetworkAttachmentConfig) CopyFrom(src interface{}) { copy(m.Addresses, o.Addresses) } + if o.DriverOpts != nil { + m.DriverOpts = make(map[string]string, len(o.DriverOpts)) + for k, v := range o.DriverOpts { + m.DriverOpts[k] = v + } + } + } func (m *IPAMConfig) Copy() *IPAMConfig { @@ -4436,6 +4446,23 @@ func (m *NetworkAttachmentConfig) MarshalTo(dAtA []byte) (int, error) { i += copy(dAtA[i:], s) } } + if len(m.DriverOpts) > 0 { + for k, _ := range m.DriverOpts { + dAtA[i] = 0x22 + i++ + v := m.DriverOpts[k] + mapSize := 1 + len(k) + sovTypes(uint64(len(k))) + 1 + len(v) + sovTypes(uint64(len(v))) + i = encodeVarintTypes(dAtA, i, uint64(mapSize)) + dAtA[i] = 0xa + i++ + i = encodeVarintTypes(dAtA, i, uint64(len(k))) + i += copy(dAtA[i:], k) + dAtA[i] = 0x12 + i++ + i = encodeVarintTypes(dAtA, i, uint64(len(v))) + i += copy(dAtA[i:], v) + } + } return i, nil } @@ -6322,6 +6349,14 @@ func (m *NetworkAttachmentConfig) Size() (n int) { n += 1 + l + sovTypes(uint64(l)) } } + if len(m.DriverOpts) > 0 { + for k, v := range m.DriverOpts { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovTypes(uint64(len(k))) + 1 + len(v) + sovTypes(uint64(len(v))) + n += mapEntrySize + 1 + sovTypes(uint64(mapEntrySize)) + } + } return n } @@ -7298,10 +7333,21 @@ func (this *NetworkAttachmentConfig) String() string { if this == nil { return "nil" } + keysForDriverOpts := make([]string, 0, len(this.DriverOpts)) + for k, _ := range this.DriverOpts { + keysForDriverOpts = append(keysForDriverOpts, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForDriverOpts) + mapStringForDriverOpts := "map[string]string{" + for _, k := range keysForDriverOpts { + mapStringForDriverOpts += fmt.Sprintf("%v: %v,", k, this.DriverOpts[k]) + } + mapStringForDriverOpts += "}" s := strings.Join([]string{`&NetworkAttachmentConfig{`, `Target:` + fmt.Sprintf("%v", this.Target) + `,`, `Aliases:` + fmt.Sprintf("%v", this.Aliases) + `,`, `Addresses:` + fmt.Sprintf("%v", this.Addresses) + `,`, + `DriverOpts:` + mapStringForDriverOpts + `,`, `}`, }, "") return s @@ -11199,6 +11245,122 @@ func (m *NetworkAttachmentConfig) Unmarshal(dAtA []byte) error { } m.Addresses = append(m.Addresses, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DriverOpts", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthTypes + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + if m.DriverOpts == nil { + m.DriverOpts = make(map[string]string) + } + if iNdEx < postIndex { + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthTypes + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + m.DriverOpts[mapkey] = mapvalue + } else { + var mapvalue string + m.DriverOpts[mapkey] = mapvalue + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -16083,297 +16245,299 @@ var ( func init() { proto.RegisterFile("types.proto", fileDescriptorTypes) } var fileDescriptorTypes = []byte{ - // 4658 bytes of a gzipped FileDescriptorProto + // 4698 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x5a, 0x4d, 0x6c, 0x23, 0x47, - 0x76, 0x16, 0x7f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0x8d, 0x3c, 0xd6, 0xd0, 0x63, 0x49, 0x6e, 0x7b, - 0xd6, 0x3f, 0xeb, 0xd0, 0xf3, 0x63, 0x1b, 0x63, 0x3b, 0x6b, 0x9b, 0x7f, 0x1a, 0x71, 0x47, 0x22, - 0x89, 0x22, 0x35, 0xb3, 0x3e, 0x24, 0x8d, 0x56, 0x77, 0x89, 0x6a, 0xab, 0xd9, 0xc5, 0x74, 0x17, - 0xa5, 0x61, 0x7e, 0x90, 0x41, 0x0e, 0x49, 0xa0, 0x53, 0x72, 0x0b, 0x10, 0x28, 0x97, 0xe4, 0x14, - 0xe4, 0x96, 0x00, 0x41, 0x72, 0x89, 0x03, 0xe4, 0xe0, 0x5b, 0x36, 0x09, 0x10, 0x2c, 0x12, 0x40, - 0x89, 0x75, 0xc8, 0x2d, 0x48, 0x2e, 0x8b, 0x5c, 0x12, 0x20, 0xa8, 0x9f, 0x6e, 0x36, 0x35, 0x94, - 0x34, 0x5e, 0xef, 0x45, 0xea, 0x7a, 0xef, 0x7b, 0xaf, 0x5e, 0xbd, 0x7a, 0x55, 0xf5, 0x5e, 0x15, - 0xa1, 0xc0, 0xc6, 0x43, 0x12, 0x94, 0x87, 0x3e, 0x65, 0x14, 0x21, 0x9b, 0x5a, 0x07, 0xc4, 0x2f, - 0x07, 0x47, 0xa6, 0x3f, 0x38, 0x70, 0x58, 0xf9, 0xf0, 0x6e, 0x69, 0xad, 0x4f, 0x69, 0xdf, 0x25, - 0xef, 0x09, 0xc4, 0xee, 0x68, 0xef, 0x3d, 0xe6, 0x0c, 0x48, 0xc0, 0xcc, 0xc1, 0x50, 0x0a, 0x95, - 0x56, 0xcf, 0x03, 0xec, 0x91, 0x6f, 0x32, 0x87, 0x7a, 0x8a, 0xbf, 0xdc, 0xa7, 0x7d, 0x2a, 0x3e, - 0xdf, 0xe3, 0x5f, 0x92, 0xaa, 0xaf, 0xc1, 0xfc, 0x63, 0xe2, 0x07, 0x0e, 0xf5, 0xd0, 0x32, 0x64, - 0x1c, 0xcf, 0x26, 0x4f, 0x57, 0x12, 0xeb, 0x89, 0xb7, 0xd2, 0x58, 0x36, 0xf4, 0x3b, 0x00, 0x4d, - 0xfe, 0xd1, 0xf0, 0x98, 0x3f, 0x46, 0x1a, 0xa4, 0x0e, 0xc8, 0x58, 0x20, 0xf2, 0x98, 0x7f, 0x72, - 0xca, 0xa1, 0xe9, 0xae, 0x24, 0x25, 0xe5, 0xd0, 0x74, 0xf5, 0x6f, 0x12, 0x50, 0xa8, 0x78, 0x1e, - 0x65, 0xa2, 0xf7, 0x00, 0x21, 0x48, 0x7b, 0xe6, 0x80, 0x28, 0x21, 0xf1, 0x8d, 0x6a, 0x90, 0x75, - 0xcd, 0x5d, 0xe2, 0x06, 0x2b, 0xc9, 0xf5, 0xd4, 0x5b, 0x85, 0x7b, 0xdf, 0x2f, 0x3f, 0x3f, 0xe4, - 0x72, 0x4c, 0x49, 0x79, 0x4b, 0xa0, 0x85, 0x11, 0x58, 0x89, 0xa2, 0x4f, 0x61, 0xde, 0xf1, 0x6c, - 0xc7, 0x22, 0xc1, 0x4a, 0x5a, 0x68, 0x59, 0x9d, 0xa5, 0x65, 0x62, 0x7d, 0x35, 0xfd, 0xf5, 0xe9, - 0xda, 0x1c, 0x0e, 0x85, 0x4a, 0x1f, 0x41, 0x21, 0xa6, 0x76, 0xc6, 0xd8, 0x96, 0x21, 0x73, 0x68, - 0xba, 0x23, 0xa2, 0x46, 0x27, 0x1b, 0x1f, 0x27, 0x1f, 0x24, 0xf4, 0x2f, 0x20, 0x8f, 0x49, 0x40, - 0x47, 0xbe, 0x45, 0x02, 0xf4, 0x36, 0xe4, 0x3d, 0xd3, 0xa3, 0x86, 0x35, 0x1c, 0x05, 0x42, 0x3c, - 0x55, 0x2d, 0x9e, 0x9d, 0xae, 0xe5, 0x5a, 0xa6, 0x47, 0x6b, 0x9d, 0x9d, 0x00, 0xe7, 0x38, 0xbb, - 0x36, 0x1c, 0x05, 0xe8, 0x35, 0x28, 0x0e, 0xc8, 0x80, 0xfa, 0x63, 0x63, 0x77, 0xcc, 0x48, 0x20, - 0x14, 0xa7, 0x70, 0x41, 0xd2, 0xaa, 0x9c, 0xa4, 0xff, 0x5e, 0x02, 0x96, 0x43, 0xdd, 0x98, 0xfc, - 0xca, 0xc8, 0xf1, 0xc9, 0x80, 0x78, 0x2c, 0x40, 0x1f, 0x40, 0xd6, 0x75, 0x06, 0x0e, 0x93, 0x7d, - 0x14, 0xee, 0xbd, 0x3a, 0x6b, 0xb4, 0x91, 0x55, 0x58, 0x81, 0x51, 0x05, 0x8a, 0x3e, 0x09, 0x88, - 0x7f, 0x28, 0x3d, 0x29, 0xba, 0xbc, 0x52, 0x78, 0x4a, 0x44, 0xdf, 0x80, 0x5c, 0xc7, 0x35, 0xd9, - 0x1e, 0xf5, 0x07, 0x48, 0x87, 0xa2, 0xe9, 0x5b, 0xfb, 0x0e, 0x23, 0x16, 0x1b, 0xf9, 0xe1, 0xac, - 0x4e, 0xd1, 0xd0, 0x0d, 0x48, 0x52, 0xd9, 0x51, 0xbe, 0x9a, 0x3d, 0x3b, 0x5d, 0x4b, 0xb6, 0xbb, - 0x38, 0x49, 0x03, 0xfd, 0x13, 0xb8, 0xd6, 0x71, 0x47, 0x7d, 0xc7, 0xab, 0x93, 0xc0, 0xf2, 0x9d, - 0x21, 0xd7, 0xce, 0xc3, 0x83, 0xc7, 0x7e, 0x18, 0x1e, 0xfc, 0x3b, 0x0a, 0x99, 0xe4, 0x24, 0x64, - 0xf4, 0xdf, 0x49, 0xc2, 0xb5, 0x86, 0xd7, 0x77, 0x3c, 0x12, 0x97, 0xbe, 0x0d, 0x8b, 0x44, 0x10, - 0x8d, 0x43, 0x19, 0xc6, 0x4a, 0xcf, 0x82, 0xa4, 0x86, 0xb1, 0xdd, 0x3c, 0x17, 0x6f, 0x77, 0x67, - 0x0d, 0xff, 0x39, 0xed, 0x33, 0xa3, 0xae, 0x01, 0xf3, 0x43, 0x31, 0x88, 0x60, 0x25, 0x25, 0x74, - 0xdd, 0x9e, 0xa5, 0xeb, 0xb9, 0x71, 0x86, 0xc1, 0xa7, 0x64, 0xbf, 0x4b, 0xf0, 0xfd, 0x59, 0x12, - 0x96, 0x5a, 0xd4, 0x9e, 0xf2, 0x43, 0x09, 0x72, 0xfb, 0x34, 0x60, 0xb1, 0x85, 0x16, 0xb5, 0xd1, - 0x03, 0xc8, 0x0d, 0xd5, 0xf4, 0xa9, 0xd9, 0xbf, 0x35, 0xdb, 0x64, 0x89, 0xc1, 0x11, 0x1a, 0x7d, - 0x02, 0x79, 0x3f, 0x8c, 0x89, 0x95, 0xd4, 0x8b, 0x04, 0xce, 0x04, 0x8f, 0x7e, 0x00, 0x59, 0x39, - 0x09, 0x2b, 0x69, 0x21, 0x79, 0xfb, 0x85, 0x7c, 0x8e, 0x95, 0x10, 0x7a, 0x08, 0x39, 0xe6, 0x06, - 0x86, 0xe3, 0xed, 0xd1, 0x95, 0x8c, 0x50, 0xb0, 0x36, 0x4b, 0x01, 0x77, 0x44, 0x6f, 0xab, 0xdb, - 0xf4, 0xf6, 0x68, 0xb5, 0x70, 0x76, 0xba, 0x36, 0xaf, 0x1a, 0x78, 0x9e, 0xb9, 0x01, 0xff, 0xd0, - 0x7f, 0x3f, 0x01, 0x85, 0x18, 0x0a, 0xbd, 0x0a, 0xc0, 0xfc, 0x51, 0xc0, 0x0c, 0x9f, 0x52, 0x26, - 0x9c, 0x55, 0xc4, 0x79, 0x41, 0xc1, 0x94, 0x32, 0x54, 0x86, 0xeb, 0x16, 0xf1, 0x99, 0xe1, 0x04, - 0xc1, 0x88, 0xf8, 0x46, 0x30, 0xda, 0xfd, 0x92, 0x58, 0x4c, 0x38, 0xae, 0x88, 0xaf, 0x71, 0x56, - 0x53, 0x70, 0xba, 0x92, 0x81, 0xee, 0xc3, 0x8d, 0x38, 0x7e, 0x38, 0xda, 0x75, 0x1d, 0xcb, 0xe0, - 0x93, 0x99, 0x12, 0x22, 0xd7, 0x27, 0x22, 0x1d, 0xc1, 0x7b, 0x44, 0xc6, 0xfa, 0x4f, 0x12, 0xa0, - 0x61, 0x73, 0x8f, 0x6d, 0x93, 0xc1, 0x2e, 0xf1, 0xbb, 0xcc, 0x64, 0xa3, 0x00, 0xdd, 0x80, 0xac, - 0x4b, 0x4c, 0x9b, 0xf8, 0xc2, 0xa8, 0x1c, 0x56, 0x2d, 0xb4, 0xc3, 0x57, 0xb0, 0x69, 0xed, 0x9b, - 0xbb, 0x8e, 0xeb, 0xb0, 0xb1, 0x30, 0x65, 0x71, 0x76, 0x08, 0x9f, 0xd7, 0x59, 0xc6, 0x31, 0x41, - 0x3c, 0xa5, 0x06, 0xad, 0xc0, 0xfc, 0x80, 0x04, 0x81, 0xd9, 0x27, 0xc2, 0xd2, 0x3c, 0x0e, 0x9b, - 0xfa, 0x27, 0x50, 0x8c, 0xcb, 0xa1, 0x02, 0xcc, 0xef, 0xb4, 0x1e, 0xb5, 0xda, 0x4f, 0x5a, 0xda, - 0x1c, 0x5a, 0x82, 0xc2, 0x4e, 0x0b, 0x37, 0x2a, 0xb5, 0xcd, 0x4a, 0x75, 0xab, 0xa1, 0x25, 0xd0, - 0x02, 0xe4, 0x27, 0xcd, 0xa4, 0xfe, 0xe7, 0x09, 0x00, 0xee, 0x6e, 0x35, 0xa8, 0x8f, 0x21, 0x13, - 0x30, 0x93, 0xc9, 0xa8, 0x5c, 0xbc, 0xf7, 0xc6, 0x45, 0x73, 0xa8, 0xec, 0xe5, 0xff, 0x08, 0x96, - 0x22, 0x71, 0x0b, 0x93, 0x53, 0x16, 0xf2, 0x0d, 0xc2, 0xb4, 0x6d, 0x5f, 0x19, 0x2e, 0xbe, 0xf5, - 0x4f, 0x20, 0x23, 0xa4, 0xa7, 0xcd, 0xcd, 0x41, 0xba, 0xce, 0xbf, 0x12, 0x28, 0x0f, 0x19, 0xdc, - 0xa8, 0xd4, 0xbf, 0xd0, 0x92, 0x48, 0x83, 0x62, 0xbd, 0xd9, 0xad, 0xb5, 0x5b, 0xad, 0x46, 0xad, - 0xd7, 0xa8, 0x6b, 0x29, 0xfd, 0x36, 0x64, 0x9a, 0x03, 0xae, 0xf9, 0x16, 0x0f, 0xf9, 0x3d, 0xe2, - 0x13, 0xcf, 0x0a, 0x57, 0xd2, 0x84, 0xa0, 0xff, 0x38, 0x0f, 0x99, 0x6d, 0x3a, 0xf2, 0x18, 0xba, - 0x17, 0xdb, 0xb6, 0x16, 0x67, 0x9f, 0x3c, 0x02, 0x58, 0xee, 0x8d, 0x87, 0x44, 0x6d, 0x6b, 0x37, - 0x20, 0x2b, 0x17, 0x87, 0x1a, 0x8e, 0x6a, 0x71, 0x3a, 0x33, 0xfd, 0x3e, 0x61, 0x6a, 0x3c, 0xaa, - 0x85, 0xde, 0x82, 0x9c, 0x4f, 0x4c, 0x9b, 0x7a, 0xee, 0x58, 0xac, 0xa1, 0x9c, 0x3c, 0x57, 0x30, - 0x31, 0xed, 0xb6, 0xe7, 0x8e, 0x71, 0xc4, 0x45, 0x9b, 0x50, 0xdc, 0x75, 0x3c, 0xdb, 0xa0, 0x43, - 0xb9, 0xc9, 0x67, 0x2e, 0x5e, 0x71, 0xd2, 0xaa, 0xaa, 0xe3, 0xd9, 0x6d, 0x09, 0xc6, 0x85, 0xdd, - 0x49, 0x03, 0xb5, 0x60, 0xf1, 0x90, 0xba, 0xa3, 0x01, 0x89, 0x74, 0x65, 0x85, 0xae, 0x37, 0x2f, - 0xd6, 0xf5, 0x58, 0xe0, 0x43, 0x6d, 0x0b, 0x87, 0xf1, 0x26, 0x7a, 0x04, 0x0b, 0x6c, 0x30, 0xdc, - 0x0b, 0x22, 0x75, 0xf3, 0x42, 0xdd, 0xf7, 0x2e, 0x71, 0x18, 0x87, 0x87, 0xda, 0x8a, 0x2c, 0xd6, - 0x2a, 0xfd, 0x56, 0x0a, 0x0a, 0x31, 0xcb, 0x51, 0x17, 0x0a, 0x43, 0x9f, 0x0e, 0xcd, 0xbe, 0x38, - 0xa8, 0xd4, 0x5c, 0xdc, 0x7d, 0xa1, 0x51, 0x97, 0x3b, 0x13, 0x41, 0x1c, 0xd7, 0xa2, 0x9f, 0x24, - 0xa1, 0x10, 0x63, 0xa2, 0x77, 0x20, 0x87, 0x3b, 0xb8, 0xf9, 0xb8, 0xd2, 0x6b, 0x68, 0x73, 0xa5, - 0x5b, 0xc7, 0x27, 0xeb, 0x2b, 0x42, 0x5b, 0x5c, 0x41, 0xc7, 0x77, 0x0e, 0x79, 0xe8, 0xbd, 0x05, - 0xf3, 0x21, 0x34, 0x51, 0x7a, 0xe5, 0xf8, 0x64, 0xfd, 0xe5, 0xf3, 0xd0, 0x18, 0x12, 0x77, 0x37, - 0x2b, 0xb8, 0x51, 0xd7, 0x92, 0xb3, 0x91, 0xb8, 0xbb, 0x6f, 0xfa, 0xc4, 0x46, 0xdf, 0x83, 0xac, - 0x02, 0xa6, 0x4a, 0xa5, 0xe3, 0x93, 0xf5, 0x1b, 0xe7, 0x81, 0x13, 0x1c, 0xee, 0x6e, 0x55, 0x1e, - 0x37, 0xb4, 0xf4, 0x6c, 0x1c, 0xee, 0xba, 0xe6, 0x21, 0x41, 0x6f, 0x40, 0x46, 0xc2, 0x32, 0xa5, - 0x9b, 0xc7, 0x27, 0xeb, 0x2f, 0x3d, 0xa7, 0x8e, 0xa3, 0x4a, 0x2b, 0xbf, 0xfb, 0xc7, 0xab, 0x73, - 0x7f, 0xfd, 0x27, 0xab, 0xda, 0x79, 0x76, 0xe9, 0x7f, 0x13, 0xb0, 0x30, 0x35, 0xe5, 0x48, 0x87, - 0xac, 0x47, 0x2d, 0x3a, 0x94, 0xe7, 0x57, 0xae, 0x0a, 0x67, 0xa7, 0x6b, 0xd9, 0x16, 0xad, 0xd1, - 0xe1, 0x18, 0x2b, 0x0e, 0x7a, 0x74, 0xee, 0x04, 0xbe, 0xff, 0x82, 0xf1, 0x34, 0xf3, 0x0c, 0xfe, - 0x0c, 0x16, 0x6c, 0xdf, 0x39, 0x24, 0xbe, 0x61, 0x51, 0x6f, 0xcf, 0xe9, 0xab, 0xb3, 0xa9, 0x34, - 0x4b, 0x67, 0x5d, 0x00, 0x71, 0x51, 0x0a, 0xd4, 0x04, 0xfe, 0x3b, 0x9c, 0xbe, 0xa5, 0xc7, 0x50, - 0x8c, 0x47, 0x28, 0x3f, 0x4e, 0x02, 0xe7, 0x57, 0x89, 0x4a, 0xe8, 0x44, 0xfa, 0x87, 0xf3, 0x9c, - 0x22, 0xd2, 0x39, 0xf4, 0x26, 0xa4, 0x07, 0xd4, 0x96, 0x7a, 0x16, 0xaa, 0xd7, 0x79, 0x12, 0xf0, - 0x2f, 0xa7, 0x6b, 0x05, 0x1a, 0x94, 0x37, 0x1c, 0x97, 0x6c, 0x53, 0x9b, 0x60, 0x01, 0xd0, 0x0f, - 0x21, 0xcd, 0xb7, 0x0a, 0xf4, 0x0a, 0xa4, 0xab, 0xcd, 0x56, 0x5d, 0x9b, 0x2b, 0x5d, 0x3b, 0x3e, - 0x59, 0x5f, 0x10, 0x2e, 0xe1, 0x0c, 0x1e, 0xbb, 0x68, 0x0d, 0xb2, 0x8f, 0xdb, 0x5b, 0x3b, 0xdb, - 0x3c, 0xbc, 0xae, 0x1f, 0x9f, 0xac, 0x2f, 0x45, 0x6c, 0xe9, 0x34, 0xf4, 0x2a, 0x64, 0x7a, 0xdb, - 0x9d, 0x8d, 0xae, 0x96, 0x2c, 0xa1, 0xe3, 0x93, 0xf5, 0xc5, 0x88, 0x2f, 0x6c, 0x2e, 0x5d, 0x53, - 0xb3, 0x9a, 0x8f, 0xe8, 0xfa, 0x4f, 0x93, 0xb0, 0x80, 0x79, 0x25, 0xe1, 0xb3, 0x0e, 0x75, 0x1d, - 0x6b, 0x8c, 0x3a, 0x90, 0xb7, 0xa8, 0x67, 0x3b, 0xb1, 0x35, 0x75, 0xef, 0x82, 0x53, 0x7f, 0x22, - 0x15, 0xb6, 0x6a, 0xa1, 0x24, 0x9e, 0x28, 0x41, 0xef, 0x41, 0xc6, 0x26, 0xae, 0x39, 0x56, 0xe9, - 0xc7, 0xcd, 0xb2, 0xac, 0x55, 0xca, 0x61, 0xad, 0x52, 0xae, 0xab, 0x5a, 0x05, 0x4b, 0x9c, 0xc8, - 0x93, 0xcd, 0xa7, 0x86, 0xc9, 0x18, 0x19, 0x0c, 0x99, 0xcc, 0x3d, 0xd2, 0xb8, 0x30, 0x30, 0x9f, - 0x56, 0x14, 0x09, 0xdd, 0x85, 0xec, 0x91, 0xe3, 0xd9, 0xf4, 0x48, 0xa5, 0x17, 0x97, 0x28, 0x55, - 0x40, 0xfd, 0x98, 0x9f, 0xba, 0xe7, 0xcc, 0xe4, 0xfe, 0x6e, 0xb5, 0x5b, 0x8d, 0xd0, 0xdf, 0x8a, - 0xdf, 0xf6, 0x5a, 0xd4, 0xe3, 0x6b, 0x05, 0xda, 0x2d, 0x63, 0xa3, 0xd2, 0xdc, 0xda, 0xc1, 0xdc, - 0xe7, 0xcb, 0xc7, 0x27, 0xeb, 0x5a, 0x04, 0xd9, 0x30, 0x1d, 0x97, 0xe7, 0xbb, 0x37, 0x21, 0x55, - 0x69, 0x7d, 0xa1, 0x25, 0x4b, 0xda, 0xf1, 0xc9, 0x7a, 0x31, 0x62, 0x57, 0xbc, 0xf1, 0x64, 0x19, - 0x9d, 0xef, 0x57, 0xff, 0xfb, 0x14, 0x14, 0x77, 0x86, 0xb6, 0xc9, 0x88, 0x8c, 0x49, 0xb4, 0x0e, - 0x85, 0xa1, 0xe9, 0x9b, 0xae, 0x4b, 0x5c, 0x27, 0x18, 0xa8, 0x2a, 0x2c, 0x4e, 0x42, 0x1f, 0xbd, - 0xa8, 0x1b, 0xab, 0x39, 0x1e, 0x67, 0x7f, 0xf0, 0x6f, 0x6b, 0x89, 0xd0, 0xa1, 0x3b, 0xb0, 0xb8, - 0x27, 0xad, 0x35, 0x4c, 0x4b, 0x4c, 0x6c, 0x4a, 0x4c, 0x6c, 0x79, 0xd6, 0xc4, 0xc6, 0xcd, 0x2a, - 0xab, 0x41, 0x56, 0x84, 0x14, 0x5e, 0xd8, 0x8b, 0x37, 0xd1, 0x7d, 0x98, 0x1f, 0x50, 0xcf, 0x61, - 0xd4, 0xbf, 0x7a, 0x16, 0x42, 0x24, 0x7a, 0x07, 0xae, 0xf1, 0xc9, 0x0d, 0xed, 0x11, 0x6c, 0x71, - 0x62, 0x25, 0xf1, 0xd2, 0xc0, 0x7c, 0xaa, 0x3a, 0xc4, 0x9c, 0x8c, 0xaa, 0x90, 0xa1, 0x3e, 0x4f, - 0x89, 0xb2, 0xc2, 0xdc, 0x77, 0xaf, 0x34, 0x57, 0x36, 0xda, 0x5c, 0x06, 0x4b, 0x51, 0xfd, 0x43, - 0x58, 0x98, 0x1a, 0x04, 0xcf, 0x04, 0x3a, 0x95, 0x9d, 0x6e, 0x43, 0x9b, 0x43, 0x45, 0xc8, 0xd5, - 0xda, 0xad, 0x5e, 0xb3, 0xb5, 0xc3, 0x53, 0x99, 0x22, 0xe4, 0x70, 0x7b, 0x6b, 0xab, 0x5a, 0xa9, - 0x3d, 0xd2, 0x92, 0x7a, 0x19, 0x0a, 0x31, 0x6d, 0x68, 0x11, 0xa0, 0xdb, 0x6b, 0x77, 0x8c, 0x8d, - 0x26, 0xee, 0xf6, 0x64, 0x22, 0xd4, 0xed, 0x55, 0x70, 0x4f, 0x11, 0x12, 0xfa, 0x7f, 0x25, 0xc3, - 0x19, 0x55, 0xb9, 0x4f, 0x75, 0x3a, 0xf7, 0xb9, 0xc4, 0x78, 0x95, 0xfd, 0x4c, 0x1a, 0x51, 0x0e, - 0xf4, 0x11, 0x80, 0x08, 0x1c, 0x62, 0x1b, 0x26, 0x53, 0x13, 0x5f, 0x7a, 0xce, 0xc9, 0xbd, 0xf0, - 0x32, 0x00, 0xe7, 0x15, 0xba, 0xc2, 0xd0, 0x0f, 0xa0, 0x68, 0xd1, 0xc1, 0xd0, 0x25, 0x4a, 0x38, - 0x75, 0xa5, 0x70, 0x21, 0xc2, 0x57, 0x58, 0x3c, 0xfb, 0x4a, 0x4f, 0xe7, 0x87, 0xbf, 0x9d, 0x08, - 0x3d, 0x33, 0x23, 0xe1, 0x2a, 0x42, 0x6e, 0xa7, 0x53, 0xaf, 0xf4, 0x9a, 0xad, 0x87, 0x5a, 0x02, - 0x01, 0x64, 0x85, 0xab, 0xeb, 0x5a, 0x92, 0x27, 0x8a, 0xb5, 0xf6, 0x76, 0x67, 0xab, 0x21, 0x52, - 0x2e, 0xb4, 0x0c, 0x5a, 0xe8, 0x6c, 0x43, 0x38, 0xb2, 0x51, 0xd7, 0xd2, 0xe8, 0x3a, 0x2c, 0x45, - 0x54, 0x25, 0x99, 0x41, 0x37, 0x00, 0x45, 0xc4, 0x89, 0x8a, 0xac, 0xfe, 0x1b, 0xb0, 0x54, 0xa3, - 0x1e, 0x33, 0x1d, 0x2f, 0x4a, 0xa2, 0xef, 0xf1, 0x41, 0x2b, 0x92, 0xe1, 0xd8, 0x72, 0x4f, 0xaf, - 0x2e, 0x9d, 0x9d, 0xae, 0x15, 0x22, 0x68, 0xb3, 0xce, 0x47, 0x1a, 0x36, 0x6c, 0xbe, 0x7e, 0x87, - 0x8e, 0x2d, 0x9c, 0x9b, 0xa9, 0xce, 0x9f, 0x9d, 0xae, 0xa5, 0x3a, 0xcd, 0x3a, 0xe6, 0x34, 0xf4, - 0x0a, 0xe4, 0xc9, 0x53, 0x87, 0x19, 0x16, 0xdf, 0xc3, 0xb9, 0x03, 0x33, 0x38, 0xc7, 0x09, 0x35, - 0xbe, 0x65, 0x57, 0x01, 0x3a, 0xd4, 0x67, 0xaa, 0xe7, 0xf7, 0x21, 0x33, 0xa4, 0xbe, 0x28, 0xcf, - 0x2f, 0xbc, 0x8c, 0xe0, 0x70, 0x19, 0xa8, 0x58, 0x82, 0xf5, 0xbf, 0x49, 0x02, 0xf4, 0xcc, 0xe0, - 0x40, 0x29, 0x79, 0x00, 0xf9, 0xe8, 0x62, 0x47, 0xd5, 0xf9, 0x97, 0xce, 0x76, 0x04, 0x46, 0xf7, - 0xc3, 0x60, 0x93, 0xe5, 0xc1, 0xcc, 0x3a, 0x2d, 0xec, 0x68, 0x56, 0x86, 0x3d, 0x5d, 0x03, 0xf0, - 0x23, 0x91, 0xf8, 0xbe, 0x9a, 0x79, 0xfe, 0x89, 0x6a, 0xe2, 0x58, 0x90, 0x4e, 0x53, 0x09, 0xe6, - 0xeb, 0xb3, 0x3a, 0x39, 0x37, 0x23, 0x9b, 0x73, 0x78, 0x22, 0x87, 0x3e, 0x83, 0x02, 0x1f, 0xb7, - 0x11, 0x08, 0x9e, 0xca, 0x2d, 0x2f, 0x74, 0x95, 0xd4, 0x80, 0x61, 0x18, 0x7d, 0x57, 0x35, 0x58, - 0xf4, 0x47, 0x1e, 0x1f, 0xb6, 0xd2, 0xa1, 0x3b, 0xf0, 0x72, 0x8b, 0xb0, 0x23, 0xea, 0x1f, 0x54, - 0x18, 0x33, 0xad, 0xfd, 0x01, 0xf1, 0x94, 0x8f, 0x63, 0x89, 0x75, 0x62, 0x2a, 0xb1, 0x5e, 0x81, - 0x79, 0xd3, 0x75, 0xcc, 0x80, 0xc8, 0x6c, 0x24, 0x8f, 0xc3, 0x26, 0x4f, 0xff, 0x79, 0x31, 0x41, - 0x82, 0x80, 0xc8, 0xfa, 0x3e, 0x8f, 0x27, 0x04, 0xfd, 0x9f, 0x92, 0x00, 0xcd, 0x4e, 0x65, 0x5b, - 0xa9, 0xaf, 0x43, 0x76, 0xcf, 0x1c, 0x38, 0xee, 0xf8, 0xb2, 0x05, 0x3e, 0xc1, 0x97, 0x2b, 0x52, - 0xd1, 0x86, 0x90, 0xc1, 0x4a, 0x56, 0x54, 0x05, 0xa3, 0x5d, 0x8f, 0xb0, 0xa8, 0x2a, 0x10, 0x2d, - 0x9e, 0x82, 0xf8, 0xa6, 0x17, 0xcd, 0x8c, 0x6c, 0x70, 0xd3, 0xfb, 0x26, 0x23, 0x47, 0xe6, 0x38, - 0x5c, 0x95, 0xaa, 0x89, 0x36, 0x79, 0xb5, 0x10, 0x10, 0xff, 0x90, 0xd8, 0x2b, 0x19, 0x11, 0x82, - 0x57, 0xd9, 0x83, 0x15, 0x5c, 0x26, 0x57, 0x91, 0x74, 0xe9, 0x13, 0x91, 0x11, 0x4c, 0x58, 0xdf, - 0xea, 0x76, 0xe2, 0x0e, 0x2c, 0x4c, 0x8d, 0xf3, 0xb9, 0x72, 0xac, 0xd9, 0x79, 0xfc, 0xbe, 0x96, - 0x56, 0x5f, 0x1f, 0x6a, 0x59, 0xfd, 0x4f, 0x53, 0x72, 0x1d, 0x29, 0xaf, 0xce, 0xbe, 0x2f, 0xcc, - 0x89, 0xe8, 0xb7, 0xa8, 0xab, 0xe2, 0xfb, 0xcd, 0xcb, 0x97, 0x17, 0x4f, 0xef, 0x05, 0x1c, 0x47, - 0x82, 0x68, 0x0d, 0x0a, 0x72, 0xfe, 0x0d, 0x1e, 0x4f, 0xc2, 0xad, 0x0b, 0x18, 0x24, 0x89, 0x4b, - 0xa2, 0xdb, 0xb0, 0x28, 0xca, 0xf7, 0x60, 0x9f, 0xd8, 0x12, 0x93, 0x16, 0x98, 0x85, 0x88, 0x2a, - 0x60, 0xdb, 0x50, 0x54, 0x04, 0x43, 0xa4, 0x76, 0x19, 0x61, 0xd0, 0x3b, 0x57, 0x19, 0x24, 0x45, - 0x44, 0xc6, 0x57, 0x18, 0x4e, 0x1a, 0x7a, 0x1d, 0x72, 0xa1, 0xb1, 0x68, 0x05, 0x52, 0xbd, 0x5a, - 0x47, 0x9b, 0x2b, 0x2d, 0x1d, 0x9f, 0xac, 0x17, 0x42, 0x72, 0xaf, 0xd6, 0xe1, 0x9c, 0x9d, 0x7a, - 0x47, 0x4b, 0x4c, 0x73, 0x76, 0xea, 0x9d, 0x52, 0x9a, 0xa7, 0x18, 0xfa, 0x1e, 0x14, 0x62, 0x3d, - 0xa0, 0xd7, 0x61, 0xbe, 0xd9, 0x7a, 0x88, 0x1b, 0xdd, 0xae, 0x36, 0x57, 0xba, 0x71, 0x7c, 0xb2, - 0x8e, 0x62, 0xdc, 0xa6, 0xd7, 0xe7, 0xf3, 0x83, 0x5e, 0x85, 0xf4, 0x66, 0x9b, 0x1f, 0x5d, 0x32, - 0x97, 0x8c, 0x21, 0x36, 0x69, 0xc0, 0x4a, 0xd7, 0x55, 0xee, 0x12, 0x57, 0xac, 0xff, 0x61, 0x02, - 0xb2, 0x32, 0xa5, 0x9e, 0x39, 0x51, 0x15, 0x98, 0x0f, 0x0b, 0x3d, 0x99, 0xe7, 0xbf, 0x79, 0x71, - 0x4e, 0x5e, 0x56, 0x29, 0xb4, 0x0c, 0xbf, 0x50, 0xae, 0xf4, 0x31, 0x14, 0xe3, 0x8c, 0x6f, 0x15, - 0x7c, 0xbf, 0x06, 0x05, 0x1e, 0xdf, 0x61, 0x6e, 0x7e, 0x0f, 0xb2, 0x32, 0xed, 0x8f, 0xb6, 0xd2, - 0x8b, 0x0b, 0x04, 0x85, 0x44, 0x0f, 0x60, 0x5e, 0x16, 0x15, 0xe1, 0xfd, 0xde, 0xea, 0xe5, 0xab, - 0x08, 0x87, 0x70, 0xfd, 0x33, 0x48, 0x77, 0x08, 0xf1, 0xb9, 0xef, 0x3d, 0x6a, 0x93, 0xc9, 0xe9, - 0xa3, 0xea, 0x21, 0x9b, 0x34, 0xeb, 0xbc, 0x1e, 0xb2, 0x49, 0xd3, 0x8e, 0x6e, 0x30, 0x92, 0xb1, - 0x1b, 0x8c, 0x1e, 0x14, 0x9f, 0x10, 0xa7, 0xbf, 0xcf, 0x88, 0x2d, 0x14, 0xbd, 0x0b, 0xe9, 0x21, - 0x89, 0x8c, 0x5f, 0x99, 0x19, 0x60, 0x84, 0xf8, 0x58, 0xa0, 0xf8, 0x3e, 0x72, 0x24, 0xa4, 0xd5, - 0xad, 0xb2, 0x6a, 0xe9, 0xff, 0x98, 0x84, 0xc5, 0x66, 0x10, 0x8c, 0x4c, 0xcf, 0x0a, 0x13, 0x93, - 0x4f, 0xa7, 0x13, 0x93, 0xb7, 0x66, 0x8e, 0x70, 0x4a, 0x64, 0xfa, 0x62, 0x46, 0x1d, 0x0e, 0xc9, - 0xe8, 0x70, 0xd0, 0xff, 0x33, 0x11, 0xde, 0xbe, 0xdc, 0x8e, 0x2d, 0xf7, 0xd2, 0xca, 0xf1, 0xc9, - 0xfa, 0x72, 0x5c, 0x13, 0xd9, 0xf1, 0x0e, 0x3c, 0x7a, 0xe4, 0xa1, 0xd7, 0x20, 0x83, 0x1b, 0xad, - 0xc6, 0x13, 0x2d, 0x21, 0xc3, 0x73, 0x0a, 0x84, 0x89, 0x47, 0x8e, 0xb8, 0xa6, 0x4e, 0xa3, 0x55, - 0xe7, 0x89, 0x44, 0x72, 0x86, 0xa6, 0x0e, 0xf1, 0x6c, 0xc7, 0xeb, 0xa3, 0xd7, 0x21, 0xdb, 0xec, - 0x76, 0x77, 0x44, 0x7d, 0xfc, 0xf2, 0xf1, 0xc9, 0xfa, 0xf5, 0x29, 0x94, 0xb8, 0x79, 0xb3, 0x39, - 0x88, 0x67, 0xf1, 0x3c, 0xc5, 0x98, 0x01, 0xe2, 0xe9, 0xa1, 0x04, 0xe1, 0x76, 0x8f, 0x17, 0xef, - 0x99, 0x19, 0x20, 0x4c, 0xf9, 0x5f, 0xb5, 0xdc, 0xfe, 0x35, 0x09, 0x5a, 0xc5, 0xb2, 0xc8, 0x90, - 0x71, 0xbe, 0x2a, 0x9c, 0x7a, 0x90, 0x1b, 0xf2, 0x2f, 0x87, 0x84, 0x49, 0xc0, 0x83, 0x99, 0xef, - 0x1a, 0xe7, 0xe4, 0xca, 0x98, 0xba, 0xa4, 0x62, 0x0f, 0x9c, 0x20, 0x70, 0xa8, 0x27, 0x69, 0x38, - 0xd2, 0x54, 0xfa, 0xef, 0x04, 0x5c, 0x9f, 0x81, 0x40, 0x77, 0x20, 0xed, 0x53, 0x37, 0x9c, 0xc3, - 0x5b, 0x17, 0x5d, 0xac, 0x71, 0x51, 0x2c, 0x90, 0x68, 0x15, 0xc0, 0x1c, 0x31, 0x6a, 0x8a, 0xfe, - 0xc5, 0xec, 0xe5, 0x70, 0x8c, 0x82, 0x9e, 0x40, 0x36, 0x20, 0x96, 0x4f, 0xc2, 0x54, 0xf1, 0xb3, - 0x9f, 0xd5, 0xfa, 0x72, 0x57, 0xa8, 0xc1, 0x4a, 0x5d, 0xa9, 0x0c, 0x59, 0x49, 0xe1, 0x61, 0x6f, - 0x9b, 0xcc, 0x54, 0xd7, 0xae, 0xe2, 0x9b, 0x47, 0x93, 0xe9, 0xf6, 0xc3, 0x68, 0x32, 0xdd, 0xbe, - 0xfe, 0x77, 0x49, 0x80, 0xc6, 0x53, 0x46, 0x7c, 0xcf, 0x74, 0x6b, 0x15, 0xd4, 0x88, 0xed, 0xfe, - 0x72, 0xb4, 0x6f, 0xcf, 0xbc, 0x4b, 0x8e, 0x24, 0xca, 0xb5, 0xca, 0x8c, 0xfd, 0xff, 0x26, 0xa4, - 0x46, 0xbe, 0x7a, 0xaa, 0x92, 0x69, 0xde, 0x0e, 0xde, 0xc2, 0x9c, 0x86, 0x1a, 0x93, 0x6d, 0x2b, - 0x75, 0xf1, 0x83, 0x54, 0xac, 0x83, 0x99, 0x5b, 0x17, 0x5f, 0xf9, 0x96, 0x69, 0x58, 0x44, 0x9d, - 0x1c, 0x45, 0xb9, 0xf2, 0x6b, 0x95, 0x1a, 0xf1, 0x19, 0xce, 0x5a, 0x26, 0xff, 0xff, 0x9d, 0xf6, - 0xb7, 0x77, 0x01, 0x26, 0x43, 0x43, 0xab, 0x90, 0xa9, 0x6d, 0x74, 0xbb, 0x5b, 0xda, 0x9c, 0xdc, - 0xc0, 0x27, 0x2c, 0x41, 0xd6, 0xff, 0x2a, 0x09, 0xb9, 0x5a, 0x45, 0x1d, 0xab, 0x35, 0xd0, 0xc4, - 0xae, 0x24, 0x2e, 0xab, 0xc9, 0xd3, 0xa1, 0xe3, 0x8f, 0xd5, 0xc6, 0x72, 0x49, 0xcd, 0xb6, 0xc8, - 0x45, 0xb8, 0xd5, 0x0d, 0x21, 0x80, 0x30, 0x14, 0x89, 0x72, 0x82, 0x61, 0x99, 0xe1, 0x1e, 0xbf, - 0x7a, 0xb9, 0xb3, 0x64, 0xf6, 0x3d, 0x69, 0x07, 0xb8, 0x10, 0x2a, 0xa9, 0x99, 0x01, 0xfa, 0x08, - 0x96, 0x02, 0xa7, 0xef, 0x39, 0x5e, 0xdf, 0x08, 0x9d, 0x27, 0x6e, 0xce, 0xab, 0xd7, 0xce, 0x4e, - 0xd7, 0x16, 0xba, 0x92, 0xa5, 0x7c, 0xb8, 0xa0, 0x90, 0x35, 0xe1, 0x4a, 0xf4, 0x21, 0x2c, 0xc6, - 0x44, 0xb9, 0x17, 0xa5, 0xdb, 0xb5, 0xb3, 0xd3, 0xb5, 0x62, 0x24, 0xf9, 0x88, 0x8c, 0x71, 0x31, - 0x12, 0x7c, 0x44, 0xc4, 0xf5, 0xc2, 0x1e, 0xf5, 0x2d, 0x62, 0xf8, 0x62, 0x4d, 0x8b, 0x13, 0x3c, - 0x8d, 0x0b, 0x82, 0x26, 0x97, 0xb9, 0xfe, 0x18, 0xae, 0xb7, 0x7d, 0x6b, 0x9f, 0x04, 0x4c, 0xba, - 0x42, 0x79, 0xf1, 0x33, 0xb8, 0xc5, 0xcc, 0xe0, 0xc0, 0xd8, 0x77, 0x02, 0x46, 0xfd, 0xb1, 0xe1, - 0x13, 0x46, 0x3c, 0xce, 0x37, 0xc4, 0x73, 0x9b, 0xba, 0xff, 0xb9, 0xc9, 0x31, 0x9b, 0x12, 0x82, - 0x43, 0xc4, 0x16, 0x07, 0xe8, 0x4d, 0x28, 0xf2, 0x2c, 0xbc, 0x4e, 0xf6, 0xcc, 0x91, 0xcb, 0xf8, - 0xe8, 0xc1, 0xa5, 0x7d, 0xe3, 0x85, 0x8f, 0xa9, 0xbc, 0x4b, 0xfb, 0xf2, 0x53, 0xff, 0x11, 0x68, - 0x75, 0x27, 0x18, 0x9a, 0xcc, 0xda, 0x0f, 0x2f, 0xb6, 0x50, 0x1d, 0xb4, 0x7d, 0x62, 0xfa, 0x6c, - 0x97, 0x98, 0xcc, 0x18, 0x12, 0xdf, 0xa1, 0xf6, 0xd5, 0xb3, 0xbc, 0x14, 0x89, 0x74, 0x84, 0x84, - 0xfe, 0x3f, 0x09, 0x00, 0x6c, 0xee, 0x85, 0x19, 0xd9, 0xf7, 0xe1, 0x5a, 0xe0, 0x99, 0xc3, 0x60, - 0x9f, 0x32, 0xc3, 0xf1, 0x18, 0xf1, 0x0f, 0x4d, 0x57, 0xdd, 0x4f, 0x68, 0x21, 0xa3, 0xa9, 0xe8, - 0xe8, 0x5d, 0x40, 0x07, 0x84, 0x0c, 0x0d, 0xea, 0xda, 0x46, 0xc8, 0x94, 0x8f, 0x81, 0x69, 0xac, - 0x71, 0x4e, 0xdb, 0xb5, 0xbb, 0x21, 0x1d, 0x55, 0x61, 0x95, 0x0f, 0x9f, 0x78, 0xcc, 0x77, 0x48, - 0x60, 0xec, 0x51, 0xdf, 0x08, 0x5c, 0x7a, 0x64, 0xec, 0x51, 0xd7, 0xa5, 0x47, 0xc4, 0x0f, 0xaf, - 0x7e, 0x4a, 0x2e, 0xed, 0x37, 0x24, 0x68, 0x83, 0xfa, 0x5d, 0x97, 0x1e, 0x6d, 0x84, 0x08, 0x9e, - 0xb6, 0x4d, 0xc6, 0xcc, 0x1c, 0xeb, 0x20, 0x4c, 0xdb, 0x22, 0x6a, 0xcf, 0xb1, 0x0e, 0xd0, 0xeb, - 0xb0, 0x40, 0x5c, 0x22, 0x6e, 0x00, 0x24, 0x2a, 0x23, 0x50, 0xc5, 0x90, 0xc8, 0x41, 0xfa, 0xe7, - 0xa0, 0x35, 0x3c, 0xcb, 0x1f, 0x0f, 0x63, 0x73, 0xfe, 0x2e, 0x20, 0xbe, 0x49, 0x1a, 0x2e, 0xb5, - 0x0e, 0x8c, 0x81, 0xe9, 0x99, 0x7d, 0x6e, 0x97, 0x7c, 0xa3, 0xd1, 0x38, 0x67, 0x8b, 0x5a, 0x07, - 0xdb, 0x8a, 0xae, 0x7f, 0x04, 0xd0, 0x1d, 0xfa, 0xc4, 0xb4, 0xdb, 0x3c, 0x9b, 0xe0, 0xae, 0x13, - 0x2d, 0xc3, 0x56, 0x6f, 0x5c, 0xd4, 0x57, 0x4b, 0x5d, 0x93, 0x8c, 0x7a, 0x44, 0xd7, 0x7f, 0x09, - 0xae, 0x77, 0x5c, 0xd3, 0x12, 0xef, 0xbd, 0x9d, 0xe8, 0xd1, 0x01, 0x3d, 0x80, 0xac, 0x84, 0xaa, - 0x99, 0x9c, 0xb9, 0xdc, 0x26, 0x7d, 0x6e, 0xce, 0x61, 0x85, 0xaf, 0x16, 0x01, 0x26, 0x7a, 0xf4, - 0xbf, 0x48, 0x40, 0x3e, 0xd2, 0x8f, 0xd6, 0x81, 0xd7, 0xc0, 0x3c, 0xbc, 0x1d, 0x4f, 0x15, 0xad, - 0x79, 0x1c, 0x27, 0xa1, 0x26, 0x14, 0x86, 0x91, 0xf4, 0xa5, 0xf9, 0xdc, 0x0c, 0xab, 0x71, 0x5c, - 0x16, 0x7d, 0x0c, 0xf9, 0xf0, 0x51, 0x31, 0xdc, 0x61, 0x2f, 0x7f, 0x83, 0x9c, 0xc0, 0xf5, 0x4f, - 0x01, 0x7e, 0x48, 0x1d, 0xaf, 0x47, 0x0f, 0x88, 0x27, 0x1e, 0xc9, 0x78, 0xa9, 0x47, 0x42, 0x2f, - 0xaa, 0x96, 0xa8, 0x64, 0xe5, 0x14, 0x44, 0x6f, 0x45, 0xb2, 0xa9, 0xff, 0x6d, 0x12, 0xb2, 0x98, - 0x52, 0x56, 0xab, 0xa0, 0x75, 0xc8, 0xaa, 0x7d, 0x42, 0x9c, 0x3f, 0xd5, 0xfc, 0xd9, 0xe9, 0x5a, - 0x46, 0x6e, 0x10, 0x19, 0x4b, 0xec, 0x0c, 0xb1, 0x1d, 0x3c, 0x79, 0xd1, 0x0e, 0x8e, 0xee, 0x40, - 0x51, 0x81, 0x8c, 0x7d, 0x33, 0xd8, 0x97, 0x05, 0x5a, 0x75, 0xf1, 0xec, 0x74, 0x0d, 0x24, 0x72, - 0xd3, 0x0c, 0xf6, 0x31, 0x48, 0x34, 0xff, 0x46, 0x0d, 0x28, 0x7c, 0x49, 0x1d, 0xcf, 0x60, 0x62, - 0x10, 0xea, 0xae, 0x6c, 0xe6, 0x3c, 0x4e, 0x86, 0xaa, 0x5e, 0x8c, 0xe1, 0xcb, 0xc9, 0xe0, 0x1b, - 0xb0, 0xe0, 0x53, 0xca, 0xe4, 0xb6, 0xe5, 0x50, 0x4f, 0x95, 0xe1, 0xeb, 0x33, 0x6f, 0x67, 0x29, - 0x65, 0x58, 0xe1, 0x70, 0xd1, 0x8f, 0xb5, 0xd0, 0x1d, 0x58, 0x76, 0xcd, 0x80, 0x19, 0x62, 0xbf, - 0xb3, 0x27, 0xda, 0xb2, 0x62, 0xa9, 0x21, 0xce, 0xdb, 0x10, 0xac, 0x50, 0x42, 0xff, 0xe7, 0x04, - 0x14, 0xf8, 0x60, 0x9c, 0x3d, 0xc7, 0xe2, 0x49, 0xde, 0xb7, 0xcf, 0x3d, 0x6e, 0x42, 0xca, 0x0a, - 0x7c, 0xe5, 0x54, 0x71, 0xf8, 0xd6, 0xba, 0x18, 0x73, 0x1a, 0xfa, 0x1c, 0xb2, 0xea, 0x3a, 0x40, - 0xa6, 0x1d, 0xfa, 0xd5, 0xe9, 0xa8, 0xf2, 0x8d, 0x92, 0x13, 0xb1, 0x3c, 0xb1, 0x4e, 0x1e, 0x02, - 0x38, 0x4e, 0x42, 0x37, 0x20, 0x69, 0x49, 0x77, 0xa9, 0x9f, 0x24, 0xd4, 0x5a, 0x38, 0x69, 0x79, - 0xfa, 0x3f, 0x24, 0x60, 0x61, 0xb2, 0xe0, 0x79, 0x04, 0xdc, 0x82, 0x7c, 0x30, 0xda, 0x0d, 0xc6, - 0x01, 0x23, 0x83, 0xf0, 0x01, 0x30, 0x22, 0xa0, 0x26, 0xe4, 0x4d, 0xb7, 0x4f, 0x7d, 0x87, 0xed, - 0x0f, 0x54, 0x25, 0x3a, 0x3b, 0x55, 0x88, 0xeb, 0x2c, 0x57, 0x42, 0x11, 0x3c, 0x91, 0x0e, 0xcf, - 0x7d, 0xf9, 0x4a, 0x2c, 0xce, 0xfd, 0xd7, 0xa0, 0xe8, 0x9a, 0x03, 0x71, 0x3f, 0xc2, 0x9c, 0x81, - 0x1c, 0x47, 0x1a, 0x17, 0x14, 0xad, 0xe7, 0x0c, 0x88, 0xae, 0x43, 0x3e, 0x52, 0x86, 0x96, 0xa0, - 0x50, 0x69, 0x74, 0x8d, 0xbb, 0xf7, 0x1e, 0x18, 0x0f, 0x6b, 0xdb, 0xda, 0x9c, 0xca, 0x4d, 0xff, - 0x32, 0x01, 0x0b, 0x6a, 0x3b, 0x52, 0xf9, 0xfe, 0xeb, 0x30, 0xef, 0x9b, 0x7b, 0x2c, 0xac, 0x48, - 0xd2, 0x32, 0xaa, 0xf9, 0x0e, 0xcf, 0x2b, 0x12, 0xce, 0x9a, 0x5d, 0x91, 0xc4, 0x9e, 0xa4, 0x53, - 0x97, 0x3e, 0x49, 0xa7, 0x7f, 0x2e, 0x4f, 0xd2, 0xfa, 0x6f, 0x02, 0x6c, 0x38, 0x2e, 0xe9, 0xc9, - 0x5b, 0x9a, 0x59, 0xf5, 0x25, 0xcf, 0xe1, 0xd4, 0x55, 0x5d, 0x98, 0xc3, 0x35, 0xeb, 0x98, 0xd3, - 0x38, 0xab, 0xef, 0xd8, 0x6a, 0x31, 0x0a, 0xd6, 0x43, 0xce, 0xea, 0x3b, 0x76, 0xf4, 0x08, 0x93, - 0xbe, 0xea, 0x11, 0xe6, 0x24, 0x01, 0x4b, 0x2a, 0x77, 0x8d, 0xb6, 0xdf, 0xb7, 0x21, 0x2f, 0xd3, - 0xd8, 0x49, 0x41, 0x27, 0x9e, 0x61, 0x25, 0xae, 0x59, 0xc7, 0x39, 0xc9, 0x6e, 0xda, 0x68, 0x0d, - 0x0a, 0x0a, 0x1a, 0xfb, 0xf9, 0x0a, 0x48, 0x52, 0x8b, 0x9b, 0xff, 0x3e, 0xa4, 0xf7, 0x1c, 0x97, - 0xa8, 0x40, 0x9f, 0xb9, 0x01, 0x4c, 0x1c, 0xb0, 0x39, 0x87, 0x05, 0xba, 0x9a, 0x0b, 0xaf, 0xb1, - 0x84, 0x7d, 0xaa, 0xec, 0x8c, 0xdb, 0x27, 0x2b, 0xd0, 0x73, 0xf6, 0x49, 0x1c, 0xb7, 0x4f, 0xb2, - 0xa5, 0x7d, 0x0a, 0x1a, 0xb7, 0x4f, 0x92, 0x7e, 0x2e, 0xf6, 0x6d, 0xc1, 0x8d, 0xaa, 0x6b, 0x5a, - 0x07, 0xae, 0x13, 0x30, 0x62, 0xc7, 0x77, 0x8c, 0x7b, 0x90, 0x9d, 0x4a, 0x3a, 0x2f, 0xbb, 0xd5, - 0x54, 0x48, 0xfd, 0x3f, 0x12, 0x50, 0xdc, 0x24, 0xa6, 0xcb, 0xf6, 0x27, 0x57, 0x43, 0x8c, 0x04, - 0x4c, 0x1d, 0x56, 0xe2, 0x1b, 0x7d, 0x00, 0xb9, 0x28, 0x27, 0xb9, 0xf2, 0x79, 0x29, 0x82, 0xa2, - 0xfb, 0x30, 0xcf, 0xd7, 0x18, 0x1d, 0x85, 0xc5, 0xce, 0x65, 0x2f, 0x17, 0x0a, 0xc9, 0x0f, 0x19, - 0x9f, 0x88, 0x24, 0x44, 0x84, 0x52, 0x06, 0x87, 0x4d, 0xf4, 0x8b, 0x50, 0x14, 0x17, 0xef, 0x61, - 0xce, 0x95, 0xb9, 0x4a, 0x67, 0x41, 0xbe, 0x9d, 0xc9, 0x7c, 0xeb, 0xff, 0x12, 0xb0, 0xbc, 0x6d, - 0x8e, 0x77, 0x89, 0xda, 0x36, 0x88, 0x8d, 0x89, 0x45, 0x7d, 0x1b, 0x75, 0xe2, 0xdb, 0xcd, 0x25, - 0x4f, 0x71, 0xb3, 0x84, 0x67, 0xef, 0x3a, 0x61, 0x01, 0x96, 0x8c, 0x15, 0x60, 0xcb, 0x90, 0xf1, - 0xa8, 0x67, 0x11, 0xb5, 0x17, 0xc9, 0x86, 0xee, 0xc4, 0xb7, 0x9a, 0x52, 0xf4, 0x4a, 0x26, 0xde, - 0xb8, 0x5a, 0x94, 0x45, 0xbd, 0xa1, 0xcf, 0xa1, 0xd4, 0x6d, 0xd4, 0x70, 0xa3, 0x57, 0x6d, 0xff, - 0xc8, 0xe8, 0x56, 0xb6, 0xba, 0x95, 0x7b, 0x77, 0x8c, 0x4e, 0x7b, 0xeb, 0x8b, 0xbb, 0xf7, 0xef, - 0x7c, 0xa0, 0x25, 0x4a, 0xeb, 0xc7, 0x27, 0xeb, 0xb7, 0x5a, 0x95, 0xda, 0x96, 0x5c, 0x31, 0xbb, - 0xf4, 0x69, 0xd7, 0x74, 0x03, 0xf3, 0xde, 0x9d, 0x0e, 0x75, 0xc7, 0x1c, 0xc3, 0xc3, 0xba, 0x18, - 0x3f, 0xaf, 0xe2, 0xc7, 0x70, 0xe2, 0xc2, 0x63, 0x78, 0x72, 0x9a, 0x27, 0x2f, 0x38, 0xcd, 0x37, - 0x60, 0xd9, 0xf2, 0x69, 0x10, 0x18, 0x3c, 0xfb, 0x27, 0xf6, 0xb9, 0xfa, 0xe2, 0xa5, 0xb3, 0xd3, - 0xb5, 0x6b, 0x35, 0xce, 0xef, 0x0a, 0xb6, 0x52, 0x7f, 0xcd, 0x8a, 0x91, 0x44, 0x4f, 0xfa, 0x1f, - 0xa5, 0x78, 0x22, 0xe5, 0x1c, 0x3a, 0x2e, 0xe9, 0x93, 0x00, 0x3d, 0x86, 0x25, 0xcb, 0x27, 0x36, - 0x4f, 0xeb, 0x4d, 0xd7, 0x08, 0x86, 0xc4, 0x52, 0x41, 0xfd, 0x0b, 0x33, 0x73, 0x9a, 0x48, 0xb0, - 0x5c, 0x8b, 0xa4, 0xba, 0x43, 0x62, 0xe1, 0x45, 0x6b, 0xaa, 0x8d, 0xbe, 0x84, 0xa5, 0x80, 0xb8, - 0x8e, 0x37, 0x7a, 0x6a, 0x58, 0xd4, 0x63, 0xe4, 0x69, 0xf8, 0xe0, 0x73, 0x95, 0xde, 0x6e, 0x63, - 0x8b, 0x4b, 0xd5, 0xa4, 0x50, 0x15, 0x9d, 0x9d, 0xae, 0x2d, 0x4e, 0xd3, 0xf0, 0xa2, 0xd2, 0xac, - 0xda, 0xa5, 0x16, 0x2c, 0x4e, 0x5b, 0x83, 0x96, 0xd5, 0xda, 0x17, 0x5b, 0x48, 0xb8, 0xb6, 0xd1, - 0x2d, 0xc8, 0xf9, 0xa4, 0xef, 0x04, 0xcc, 0x97, 0x6e, 0xe6, 0x9c, 0x88, 0xc2, 0x57, 0xbe, 0xfc, - 0x0d, 0x4b, 0xe9, 0xd7, 0xe1, 0x5c, 0x8f, 0x7c, 0xb1, 0xd8, 0x4e, 0x60, 0xee, 0x2a, 0x95, 0x39, - 0x1c, 0x36, 0x79, 0x0c, 0x8e, 0x82, 0x28, 0x51, 0x13, 0xdf, 0x9c, 0x26, 0x32, 0x0a, 0xf5, 0x8b, - 0x1e, 0x91, 0x33, 0x84, 0x3f, 0x0d, 0x4c, 0xc7, 0x7e, 0x1a, 0xb8, 0x0c, 0x19, 0x97, 0x1c, 0x12, - 0x57, 0x9e, 0xe5, 0x58, 0x36, 0xde, 0xf9, 0x69, 0x0a, 0xf2, 0xd1, 0xe3, 0x06, 0x3f, 0x09, 0x5a, - 0x8d, 0x27, 0x61, 0xac, 0x46, 0xf4, 0x16, 0x39, 0x42, 0xaf, 0x4d, 0xee, 0x94, 0x3e, 0x97, 0xaf, - 0xb9, 0x11, 0x3b, 0xbc, 0x4f, 0x7a, 0x03, 0x72, 0x95, 0x6e, 0xb7, 0xf9, 0xb0, 0xd5, 0xa8, 0x6b, - 0x5f, 0x25, 0x4a, 0x2f, 0x1d, 0x9f, 0xac, 0x5f, 0x8b, 0x40, 0x95, 0x40, 0x86, 0x92, 0x40, 0xd5, - 0x6a, 0x8d, 0x4e, 0xaf, 0x51, 0xd7, 0x9e, 0x25, 0xcf, 0xa3, 0xc4, 0x1d, 0x89, 0xf8, 0x4d, 0x46, - 0xbe, 0x83, 0x1b, 0x9d, 0x0a, 0xe6, 0x1d, 0x7e, 0x95, 0x94, 0x57, 0x5d, 0x93, 0x1e, 0x7d, 0x32, - 0x34, 0x7d, 0xde, 0xe7, 0x6a, 0xf8, 0xdb, 0xa4, 0x67, 0x29, 0xf9, 0x6e, 0x3f, 0x79, 0xa9, 0x21, - 0xa6, 0x3d, 0xe6, 0xbd, 0x89, 0x27, 0x32, 0xa1, 0x26, 0x75, 0xae, 0xb7, 0x2e, 0xdf, 0x49, 0xb8, - 0x16, 0x1d, 0xe6, 0xf1, 0x4e, 0xab, 0xc5, 0x41, 0xcf, 0xd2, 0xe7, 0x46, 0x87, 0x47, 0x1e, 0xaf, - 0x7f, 0xd1, 0x6d, 0xc8, 0x85, 0x2f, 0x68, 0xda, 0x57, 0xe9, 0x73, 0x06, 0xd5, 0xc2, 0xe7, 0x3f, - 0xd1, 0xe1, 0xe6, 0x4e, 0x4f, 0xfc, 0x74, 0xea, 0x59, 0xe6, 0x7c, 0x87, 0xfb, 0x23, 0x66, 0xd3, - 0x23, 0x8f, 0xaf, 0x40, 0x75, 0xab, 0xf6, 0x55, 0x46, 0x5e, 0x41, 0x44, 0x18, 0x75, 0xa5, 0xf6, - 0x06, 0xe4, 0x70, 0xe3, 0x87, 0xf2, 0x57, 0x56, 0xcf, 0xb2, 0xe7, 0xf4, 0x60, 0xf2, 0x25, 0xb1, - 0x54, 0x6f, 0x6d, 0xdc, 0xd9, 0xac, 0x08, 0x97, 0x9f, 0x47, 0xb5, 0xfd, 0xe1, 0xbe, 0xe9, 0x11, - 0x7b, 0xf2, 0xe3, 0x85, 0x88, 0xf5, 0xce, 0x2f, 0x43, 0x2e, 0xcc, 0x33, 0xd1, 0x2a, 0x64, 0x9f, - 0xb4, 0xf1, 0xa3, 0x06, 0xd6, 0xe6, 0xa4, 0x0f, 0x43, 0xce, 0x13, 0x59, 0x21, 0xac, 0xc3, 0xfc, - 0x76, 0xa5, 0x55, 0x79, 0xd8, 0xc0, 0xe1, 0x85, 0x77, 0x08, 0x50, 0xc9, 0x52, 0x49, 0x53, 0x1d, - 0x44, 0x3a, 0xab, 0x2b, 0x5f, 0x7f, 0xb3, 0x3a, 0xf7, 0x93, 0x6f, 0x56, 0xe7, 0x9e, 0x9d, 0xad, - 0x26, 0xbe, 0x3e, 0x5b, 0x4d, 0xfc, 0xf8, 0x6c, 0x35, 0xf1, 0xef, 0x67, 0xab, 0x89, 0xdd, 0xac, - 0xd8, 0xd2, 0xef, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa9, 0x00, 0x24, 0x61, 0xb9, 0x2d, - 0x00, 0x00, + 0x76, 0x16, 0x7f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0x8d, 0x3c, 0xd6, 0xd0, 0x63, 0x89, 0x6e, 0x7b, + 0xd6, 0x3f, 0xeb, 0xd0, 0x33, 0x1a, 0xdb, 0x18, 0x7b, 0xe2, 0x1f, 0xfe, 0x69, 0xc4, 0x1d, 0x89, + 0x24, 0x8a, 0xd4, 0xcc, 0x1a, 0x48, 0xd2, 0x68, 0x75, 0x97, 0xa8, 0xb6, 0x9a, 0x5d, 0x4c, 0x77, + 0x53, 0x1a, 0xe6, 0x07, 0x19, 0xe4, 0xb0, 0x09, 0x74, 0x4a, 0x6e, 0x01, 0x02, 0xe5, 0x92, 0x9c, + 0x82, 0xdc, 0x12, 0x20, 0x48, 0x2e, 0x71, 0x80, 0x1c, 0x7c, 0xcb, 0x26, 0x01, 0x82, 0x45, 0x02, + 0x28, 0xb1, 0x0e, 0xb9, 0x05, 0xc9, 0x65, 0x91, 0x4b, 0x02, 0x04, 0xf5, 0xd3, 0xcd, 0xa6, 0xa6, + 0x25, 0x8d, 0xd7, 0x7b, 0x91, 0xba, 0xde, 0xfb, 0xde, 0xab, 0x57, 0xaf, 0x5e, 0x55, 0xbd, 0x57, + 0x45, 0x28, 0xf8, 0x93, 0x11, 0xf1, 0x2a, 0x23, 0x97, 0xfa, 0x14, 0x21, 0x93, 0x1a, 0x07, 0xc4, + 0xad, 0x78, 0x47, 0xba, 0x3b, 0x3c, 0xb0, 0xfc, 0xca, 0xe1, 0xdd, 0xd2, 0xda, 0x80, 0xd2, 0x81, + 0x4d, 0xde, 0xe3, 0x88, 0xdd, 0xf1, 0xde, 0x7b, 0xbe, 0x35, 0x24, 0x9e, 0xaf, 0x0f, 0x47, 0x42, + 0xa8, 0xb4, 0x7a, 0x1e, 0x60, 0x8e, 0x5d, 0xdd, 0xb7, 0xa8, 0x23, 0xf9, 0xcb, 0x03, 0x3a, 0xa0, + 0xfc, 0xf3, 0x3d, 0xf6, 0x25, 0xa8, 0xea, 0x1a, 0xcc, 0x3f, 0x26, 0xae, 0x67, 0x51, 0x07, 0x2d, + 0x43, 0xc6, 0x72, 0x4c, 0xf2, 0x74, 0x25, 0x51, 0x4e, 0xbc, 0x95, 0xc6, 0xa2, 0xa1, 0xde, 0x01, + 0x68, 0xb1, 0x8f, 0xa6, 0xe3, 0xbb, 0x13, 0xa4, 0x40, 0xea, 0x80, 0x4c, 0x38, 0x22, 0x8f, 0xd9, + 0x27, 0xa3, 0x1c, 0xea, 0xf6, 0x4a, 0x52, 0x50, 0x0e, 0x75, 0x5b, 0xfd, 0x26, 0x01, 0x85, 0xaa, + 0xe3, 0x50, 0x9f, 0xf7, 0xee, 0x21, 0x04, 0x69, 0x47, 0x1f, 0x12, 0x29, 0xc4, 0xbf, 0x51, 0x1d, + 0xb2, 0xb6, 0xbe, 0x4b, 0x6c, 0x6f, 0x25, 0x59, 0x4e, 0xbd, 0x55, 0x58, 0xff, 0x7e, 0xe5, 0xf9, + 0x21, 0x57, 0x22, 0x4a, 0x2a, 0x5b, 0x1c, 0xcd, 0x8d, 0xc0, 0x52, 0x14, 0x7d, 0x0a, 0xf3, 0x96, + 0x63, 0x5a, 0x06, 0xf1, 0x56, 0xd2, 0x5c, 0xcb, 0x6a, 0x9c, 0x96, 0xa9, 0xf5, 0xb5, 0xf4, 0xd7, + 0xa7, 0x6b, 0x73, 0x38, 0x10, 0x2a, 0x7d, 0x04, 0x85, 0x88, 0xda, 0x98, 0xb1, 0x2d, 0x43, 0xe6, + 0x50, 0xb7, 0xc7, 0x44, 0x8e, 0x4e, 0x34, 0x3e, 0x4e, 0xde, 0x4f, 0xa8, 0x5f, 0x40, 0x1e, 0x13, + 0x8f, 0x8e, 0x5d, 0x83, 0x78, 0xe8, 0x6d, 0xc8, 0x3b, 0xba, 0x43, 0x35, 0x63, 0x34, 0xf6, 0xb8, + 0x78, 0xaa, 0x56, 0x3c, 0x3b, 0x5d, 0xcb, 0xb5, 0x75, 0x87, 0xd6, 0xbb, 0x3b, 0x1e, 0xce, 0x31, + 0x76, 0x7d, 0x34, 0xf6, 0xd0, 0x6b, 0x50, 0x1c, 0x92, 0x21, 0x75, 0x27, 0xda, 0xee, 0xc4, 0x27, + 0x1e, 0x57, 0x9c, 0xc2, 0x05, 0x41, 0xab, 0x31, 0x92, 0xfa, 0x7b, 0x09, 0x58, 0x0e, 0x74, 0x63, + 0xf2, 0xab, 0x63, 0xcb, 0x25, 0x43, 0xe2, 0xf8, 0x1e, 0xfa, 0x00, 0xb2, 0xb6, 0x35, 0xb4, 0x7c, + 0xd1, 0x47, 0x61, 0xfd, 0xd5, 0xb8, 0xd1, 0x86, 0x56, 0x61, 0x09, 0x46, 0x55, 0x28, 0xba, 0xc4, + 0x23, 0xee, 0xa1, 0xf0, 0x24, 0xef, 0xf2, 0x4a, 0xe1, 0x19, 0x11, 0x75, 0x03, 0x72, 0x5d, 0x5b, + 0xf7, 0xf7, 0xa8, 0x3b, 0x44, 0x2a, 0x14, 0x75, 0xd7, 0xd8, 0xb7, 0x7c, 0x62, 0xf8, 0x63, 0x37, + 0x98, 0xd5, 0x19, 0x1a, 0xba, 0x01, 0x49, 0x2a, 0x3a, 0xca, 0xd7, 0xb2, 0x67, 0xa7, 0x6b, 0xc9, + 0x4e, 0x0f, 0x27, 0xa9, 0xa7, 0x3e, 0x80, 0x6b, 0x5d, 0x7b, 0x3c, 0xb0, 0x9c, 0x06, 0xf1, 0x0c, + 0xd7, 0x1a, 0x31, 0xed, 0x2c, 0x3c, 0x58, 0xec, 0x07, 0xe1, 0xc1, 0xbe, 0xc3, 0x90, 0x49, 0x4e, + 0x43, 0x46, 0xfd, 0x9d, 0x24, 0x5c, 0x6b, 0x3a, 0x03, 0xcb, 0x21, 0x51, 0xe9, 0xdb, 0xb0, 0x48, + 0x38, 0x51, 0x3b, 0x14, 0x61, 0x2c, 0xf5, 0x2c, 0x08, 0x6a, 0x10, 0xdb, 0xad, 0x73, 0xf1, 0x76, + 0x37, 0x6e, 0xf8, 0xcf, 0x69, 0x8f, 0x8d, 0xba, 0x26, 0xcc, 0x8f, 0xf8, 0x20, 0xbc, 0x95, 0x14, + 0xd7, 0x75, 0x3b, 0x4e, 0xd7, 0x73, 0xe3, 0x0c, 0x82, 0x4f, 0xca, 0x7e, 0x97, 0xe0, 0xfb, 0xb3, + 0x24, 0x2c, 0xb5, 0xa9, 0x39, 0xe3, 0x87, 0x12, 0xe4, 0xf6, 0xa9, 0xe7, 0x47, 0x16, 0x5a, 0xd8, + 0x46, 0xf7, 0x21, 0x37, 0x92, 0xd3, 0x27, 0x67, 0xff, 0x56, 0xbc, 0xc9, 0x02, 0x83, 0x43, 0x34, + 0x7a, 0x00, 0x79, 0x37, 0x88, 0x89, 0x95, 0xd4, 0x8b, 0x04, 0xce, 0x14, 0x8f, 0x3e, 0x81, 0xac, + 0x98, 0x84, 0x95, 0x34, 0x97, 0xbc, 0xfd, 0x42, 0x3e, 0xc7, 0x52, 0x08, 0x3d, 0x84, 0x9c, 0x6f, + 0x7b, 0x9a, 0xe5, 0xec, 0xd1, 0x95, 0x0c, 0x57, 0xb0, 0x16, 0xa7, 0x80, 0x39, 0xa2, 0xbf, 0xd5, + 0x6b, 0x39, 0x7b, 0xb4, 0x56, 0x38, 0x3b, 0x5d, 0x9b, 0x97, 0x0d, 0x3c, 0xef, 0xdb, 0x1e, 0xfb, + 0x50, 0x7f, 0x3f, 0x01, 0x85, 0x08, 0x0a, 0xbd, 0x0a, 0xe0, 0xbb, 0x63, 0xcf, 0xd7, 0x5c, 0x4a, + 0x7d, 0xee, 0xac, 0x22, 0xce, 0x73, 0x0a, 0xa6, 0xd4, 0x47, 0x15, 0xb8, 0x6e, 0x10, 0xd7, 0xd7, + 0x2c, 0xcf, 0x1b, 0x13, 0x57, 0xf3, 0xc6, 0xbb, 0x5f, 0x12, 0xc3, 0xe7, 0x8e, 0x2b, 0xe2, 0x6b, + 0x8c, 0xd5, 0xe2, 0x9c, 0x9e, 0x60, 0xa0, 0x7b, 0x70, 0x23, 0x8a, 0x1f, 0x8d, 0x77, 0x6d, 0xcb, + 0xd0, 0xd8, 0x64, 0xa6, 0xb8, 0xc8, 0xf5, 0xa9, 0x48, 0x97, 0xf3, 0x1e, 0x91, 0x89, 0xfa, 0x93, + 0x04, 0x28, 0x58, 0xdf, 0xf3, 0xb7, 0xc9, 0x70, 0x97, 0xb8, 0x3d, 0x5f, 0xf7, 0xc7, 0x1e, 0xba, + 0x01, 0x59, 0x9b, 0xe8, 0x26, 0x71, 0xb9, 0x51, 0x39, 0x2c, 0x5b, 0x68, 0x87, 0xad, 0x60, 0xdd, + 0xd8, 0xd7, 0x77, 0x2d, 0xdb, 0xf2, 0x27, 0xdc, 0x94, 0xc5, 0xf8, 0x10, 0x3e, 0xaf, 0xb3, 0x82, + 0x23, 0x82, 0x78, 0x46, 0x0d, 0x5a, 0x81, 0xf9, 0x21, 0xf1, 0x3c, 0x7d, 0x40, 0xb8, 0xa5, 0x79, + 0x1c, 0x34, 0xd5, 0x07, 0x50, 0x8c, 0xca, 0xa1, 0x02, 0xcc, 0xef, 0xb4, 0x1f, 0xb5, 0x3b, 0x4f, + 0xda, 0xca, 0x1c, 0x5a, 0x82, 0xc2, 0x4e, 0x1b, 0x37, 0xab, 0xf5, 0xcd, 0x6a, 0x6d, 0xab, 0xa9, + 0x24, 0xd0, 0x02, 0xe4, 0xa7, 0xcd, 0xa4, 0xfa, 0xe7, 0x09, 0x00, 0xe6, 0x6e, 0x39, 0xa8, 0x8f, + 0x21, 0xe3, 0xf9, 0xba, 0x2f, 0xa2, 0x72, 0x71, 0xfd, 0x8d, 0x8b, 0xe6, 0x50, 0xda, 0xcb, 0xfe, + 0x11, 0x2c, 0x44, 0xa2, 0x16, 0x26, 0x67, 0x2c, 0x64, 0x1b, 0x84, 0x6e, 0x9a, 0xae, 0x34, 0x9c, + 0x7f, 0xab, 0x0f, 0x20, 0xc3, 0xa5, 0x67, 0xcd, 0xcd, 0x41, 0xba, 0xc1, 0xbe, 0x12, 0x28, 0x0f, + 0x19, 0xdc, 0xac, 0x36, 0xbe, 0x50, 0x92, 0x48, 0x81, 0x62, 0xa3, 0xd5, 0xab, 0x77, 0xda, 0xed, + 0x66, 0xbd, 0xdf, 0x6c, 0x28, 0x29, 0xf5, 0x36, 0x64, 0x5a, 0x43, 0xa6, 0xf9, 0x16, 0x0b, 0xf9, + 0x3d, 0xe2, 0x12, 0xc7, 0x08, 0x56, 0xd2, 0x94, 0xa0, 0xfe, 0x38, 0x0f, 0x99, 0x6d, 0x3a, 0x76, + 0x7c, 0xb4, 0x1e, 0xd9, 0xb6, 0x16, 0xe3, 0x4f, 0x1e, 0x0e, 0xac, 0xf4, 0x27, 0x23, 0x22, 0xb7, + 0xb5, 0x1b, 0x90, 0x15, 0x8b, 0x43, 0x0e, 0x47, 0xb6, 0x18, 0xdd, 0xd7, 0xdd, 0x01, 0xf1, 0xe5, + 0x78, 0x64, 0x0b, 0xbd, 0x05, 0x39, 0x97, 0xe8, 0x26, 0x75, 0xec, 0x09, 0x5f, 0x43, 0x39, 0x71, + 0xae, 0x60, 0xa2, 0x9b, 0x1d, 0xc7, 0x9e, 0xe0, 0x90, 0x8b, 0x36, 0xa1, 0xb8, 0x6b, 0x39, 0xa6, + 0x46, 0x47, 0x62, 0x93, 0xcf, 0x5c, 0xbc, 0xe2, 0x84, 0x55, 0x35, 0xcb, 0x31, 0x3b, 0x02, 0x8c, + 0x0b, 0xbb, 0xd3, 0x06, 0x6a, 0xc3, 0xe2, 0x21, 0xb5, 0xc7, 0x43, 0x12, 0xea, 0xca, 0x72, 0x5d, + 0x6f, 0x5e, 0xac, 0xeb, 0x31, 0xc7, 0x07, 0xda, 0x16, 0x0e, 0xa3, 0x4d, 0xf4, 0x08, 0x16, 0xfc, + 0xe1, 0x68, 0xcf, 0x0b, 0xd5, 0xcd, 0x73, 0x75, 0xdf, 0xbb, 0xc4, 0x61, 0x0c, 0x1e, 0x68, 0x2b, + 0xfa, 0x91, 0x56, 0xe9, 0xb7, 0x53, 0x50, 0x88, 0x58, 0x8e, 0x7a, 0x50, 0x18, 0xb9, 0x74, 0xa4, + 0x0f, 0xf8, 0x41, 0x25, 0xe7, 0xe2, 0xee, 0x0b, 0x8d, 0xba, 0xd2, 0x9d, 0x0a, 0xe2, 0xa8, 0x16, + 0xf5, 0x24, 0x09, 0x85, 0x08, 0x13, 0xbd, 0x03, 0x39, 0xdc, 0xc5, 0xad, 0xc7, 0xd5, 0x7e, 0x53, + 0x99, 0x2b, 0xdd, 0x3a, 0x3e, 0x29, 0xaf, 0x70, 0x6d, 0x51, 0x05, 0x5d, 0xd7, 0x3a, 0x64, 0xa1, + 0xf7, 0x16, 0xcc, 0x07, 0xd0, 0x44, 0xe9, 0x95, 0xe3, 0x93, 0xf2, 0xcb, 0xe7, 0xa1, 0x11, 0x24, + 0xee, 0x6d, 0x56, 0x71, 0xb3, 0xa1, 0x24, 0xe3, 0x91, 0xb8, 0xb7, 0xaf, 0xbb, 0xc4, 0x44, 0xdf, + 0x83, 0xac, 0x04, 0xa6, 0x4a, 0xa5, 0xe3, 0x93, 0xf2, 0x8d, 0xf3, 0xc0, 0x29, 0x0e, 0xf7, 0xb6, + 0xaa, 0x8f, 0x9b, 0x4a, 0x3a, 0x1e, 0x87, 0x7b, 0xb6, 0x7e, 0x48, 0xd0, 0x1b, 0x90, 0x11, 0xb0, + 0x4c, 0xe9, 0xe6, 0xf1, 0x49, 0xf9, 0xa5, 0xe7, 0xd4, 0x31, 0x54, 0x69, 0xe5, 0x77, 0xff, 0x78, + 0x75, 0xee, 0xaf, 0xff, 0x64, 0x55, 0x39, 0xcf, 0x2e, 0xfd, 0x6f, 0x02, 0x16, 0x66, 0xa6, 0x1c, + 0xa9, 0x90, 0x75, 0xa8, 0x41, 0x47, 0xe2, 0xfc, 0xca, 0xd5, 0xe0, 0xec, 0x74, 0x2d, 0xdb, 0xa6, + 0x75, 0x3a, 0x9a, 0x60, 0xc9, 0x41, 0x8f, 0xce, 0x9d, 0xc0, 0xf7, 0x5e, 0x30, 0x9e, 0x62, 0xcf, + 0xe0, 0xcf, 0x60, 0xc1, 0x74, 0xad, 0x43, 0xe2, 0x6a, 0x06, 0x75, 0xf6, 0xac, 0x81, 0x3c, 0x9b, + 0x4a, 0x71, 0x3a, 0x1b, 0x1c, 0x88, 0x8b, 0x42, 0xa0, 0xce, 0xf1, 0xdf, 0xe1, 0xf4, 0x2d, 0x3d, + 0x86, 0x62, 0x34, 0x42, 0xd9, 0x71, 0xe2, 0x59, 0xbf, 0x46, 0x64, 0x42, 0xc7, 0xd3, 0x3f, 0x9c, + 0x67, 0x14, 0x9e, 0xce, 0xa1, 0x37, 0x21, 0x3d, 0xa4, 0xa6, 0xd0, 0xb3, 0x50, 0xbb, 0xce, 0x92, + 0x80, 0x7f, 0x39, 0x5d, 0x2b, 0x50, 0xaf, 0xb2, 0x61, 0xd9, 0x64, 0x9b, 0x9a, 0x04, 0x73, 0x80, + 0x7a, 0x08, 0x69, 0xb6, 0x55, 0xa0, 0x57, 0x20, 0x5d, 0x6b, 0xb5, 0x1b, 0xca, 0x5c, 0xe9, 0xda, + 0xf1, 0x49, 0x79, 0x81, 0xbb, 0x84, 0x31, 0x58, 0xec, 0xa2, 0x35, 0xc8, 0x3e, 0xee, 0x6c, 0xed, + 0x6c, 0xb3, 0xf0, 0xba, 0x7e, 0x7c, 0x52, 0x5e, 0x0a, 0xd9, 0xc2, 0x69, 0xe8, 0x55, 0xc8, 0xf4, + 0xb7, 0xbb, 0x1b, 0x3d, 0x25, 0x59, 0x42, 0xc7, 0x27, 0xe5, 0xc5, 0x90, 0xcf, 0x6d, 0x2e, 0x5d, + 0x93, 0xb3, 0x9a, 0x0f, 0xe9, 0xea, 0x4f, 0x93, 0xb0, 0x80, 0x59, 0x25, 0xe1, 0xfa, 0x5d, 0x6a, + 0x5b, 0xc6, 0x04, 0x75, 0x21, 0x6f, 0x50, 0xc7, 0xb4, 0x22, 0x6b, 0x6a, 0xfd, 0x82, 0x53, 0x7f, + 0x2a, 0x15, 0xb4, 0xea, 0x81, 0x24, 0x9e, 0x2a, 0x41, 0xef, 0x41, 0xc6, 0x24, 0xb6, 0x3e, 0x91, + 0xe9, 0xc7, 0xcd, 0x8a, 0xa8, 0x55, 0x2a, 0x41, 0xad, 0x52, 0x69, 0xc8, 0x5a, 0x05, 0x0b, 0x1c, + 0xcf, 0x93, 0xf5, 0xa7, 0x9a, 0xee, 0xfb, 0x64, 0x38, 0xf2, 0x45, 0xee, 0x91, 0xc6, 0x85, 0xa1, + 0xfe, 0xb4, 0x2a, 0x49, 0xe8, 0x2e, 0x64, 0x8f, 0x2c, 0xc7, 0xa4, 0x47, 0x32, 0xbd, 0xb8, 0x44, + 0xa9, 0x04, 0xaa, 0xc7, 0xec, 0xd4, 0x3d, 0x67, 0x26, 0xf3, 0x77, 0xbb, 0xd3, 0x6e, 0x06, 0xfe, + 0x96, 0xfc, 0x8e, 0xd3, 0xa6, 0x0e, 0x5b, 0x2b, 0xd0, 0x69, 0x6b, 0x1b, 0xd5, 0xd6, 0xd6, 0x0e, + 0x66, 0x3e, 0x5f, 0x3e, 0x3e, 0x29, 0x2b, 0x21, 0x64, 0x43, 0xb7, 0x6c, 0x96, 0xef, 0xde, 0x84, + 0x54, 0xb5, 0xfd, 0x85, 0x92, 0x2c, 0x29, 0xc7, 0x27, 0xe5, 0x62, 0xc8, 0xae, 0x3a, 0x93, 0xe9, + 0x32, 0x3a, 0xdf, 0xaf, 0xfa, 0xf7, 0x29, 0x28, 0xee, 0x8c, 0x4c, 0xdd, 0x27, 0x22, 0x26, 0x51, + 0x19, 0x0a, 0x23, 0xdd, 0xd5, 0x6d, 0x9b, 0xd8, 0x96, 0x37, 0x94, 0x55, 0x58, 0x94, 0x84, 0x3e, + 0x7a, 0x51, 0x37, 0xd6, 0x72, 0x2c, 0xce, 0xfe, 0xe0, 0xdf, 0xd6, 0x12, 0x81, 0x43, 0x77, 0x60, + 0x71, 0x4f, 0x58, 0xab, 0xe9, 0x06, 0x9f, 0xd8, 0x14, 0x9f, 0xd8, 0x4a, 0xdc, 0xc4, 0x46, 0xcd, + 0xaa, 0xc8, 0x41, 0x56, 0xb9, 0x14, 0x5e, 0xd8, 0x8b, 0x36, 0xd1, 0x3d, 0x98, 0x1f, 0x52, 0xc7, + 0xf2, 0xa9, 0x7b, 0xf5, 0x2c, 0x04, 0x48, 0xf4, 0x0e, 0x5c, 0x63, 0x93, 0x1b, 0xd8, 0xc3, 0xd9, + 0xfc, 0xc4, 0x4a, 0xe2, 0xa5, 0xa1, 0xfe, 0x54, 0x76, 0x88, 0x19, 0x19, 0xd5, 0x20, 0x43, 0x5d, + 0x96, 0x12, 0x65, 0xb9, 0xb9, 0xef, 0x5e, 0x69, 0xae, 0x68, 0x74, 0x98, 0x0c, 0x16, 0xa2, 0xea, + 0x87, 0xb0, 0x30, 0x33, 0x08, 0x96, 0x09, 0x74, 0xab, 0x3b, 0xbd, 0xa6, 0x32, 0x87, 0x8a, 0x90, + 0xab, 0x77, 0xda, 0xfd, 0x56, 0x7b, 0x87, 0xa5, 0x32, 0x45, 0xc8, 0xe1, 0xce, 0xd6, 0x56, 0xad, + 0x5a, 0x7f, 0xa4, 0x24, 0xd5, 0x0a, 0x14, 0x22, 0xda, 0xd0, 0x22, 0x40, 0xaf, 0xdf, 0xe9, 0x6a, + 0x1b, 0x2d, 0xdc, 0xeb, 0x8b, 0x44, 0xa8, 0xd7, 0xaf, 0xe2, 0xbe, 0x24, 0x24, 0xd4, 0xff, 0x4a, + 0x06, 0x33, 0x2a, 0x73, 0x9f, 0xda, 0x6c, 0xee, 0x73, 0x89, 0xf1, 0x32, 0xfb, 0x99, 0x36, 0xc2, + 0x1c, 0xe8, 0x23, 0x00, 0x1e, 0x38, 0xc4, 0xd4, 0x74, 0x5f, 0x4e, 0x7c, 0xe9, 0x39, 0x27, 0xf7, + 0x83, 0xcb, 0x00, 0x9c, 0x97, 0xe8, 0xaa, 0x8f, 0x3e, 0x81, 0xa2, 0x41, 0x87, 0x23, 0x9b, 0x48, + 0xe1, 0xd4, 0x95, 0xc2, 0x85, 0x10, 0x5f, 0xf5, 0xa3, 0xd9, 0x57, 0x7a, 0x36, 0x3f, 0xfc, 0x51, + 0x22, 0xf0, 0x4c, 0x4c, 0xc2, 0x55, 0x84, 0xdc, 0x4e, 0xb7, 0x51, 0xed, 0xb7, 0xda, 0x0f, 0x95, + 0x04, 0x02, 0xc8, 0x72, 0x57, 0x37, 0x94, 0x24, 0x4b, 0x14, 0xeb, 0x9d, 0xed, 0xee, 0x56, 0x93, + 0xa7, 0x5c, 0x68, 0x19, 0x94, 0xc0, 0xd9, 0x1a, 0x77, 0x64, 0xb3, 0xa1, 0xa4, 0xd1, 0x75, 0x58, + 0x0a, 0xa9, 0x52, 0x32, 0x83, 0x6e, 0x00, 0x0a, 0x89, 0x53, 0x15, 0x59, 0xf5, 0x37, 0x61, 0xa9, + 0x4e, 0x1d, 0x5f, 0xb7, 0x9c, 0x30, 0x89, 0x5e, 0x67, 0x83, 0x96, 0x24, 0xcd, 0x32, 0xc5, 0x9e, + 0x5e, 0x5b, 0x3a, 0x3b, 0x5d, 0x2b, 0x84, 0xd0, 0x56, 0x83, 0x8d, 0x34, 0x68, 0x98, 0x6c, 0xfd, + 0x8e, 0x2c, 0x93, 0x3b, 0x37, 0x53, 0x9b, 0x3f, 0x3b, 0x5d, 0x4b, 0x75, 0x5b, 0x0d, 0xcc, 0x68, + 0xe8, 0x15, 0xc8, 0x93, 0xa7, 0x96, 0xaf, 0x19, 0x6c, 0x0f, 0x67, 0x0e, 0xcc, 0xe0, 0x1c, 0x23, + 0xd4, 0xd9, 0x96, 0x5d, 0x03, 0xe8, 0x52, 0xd7, 0x97, 0x3d, 0xbf, 0x0f, 0x99, 0x11, 0x75, 0x79, + 0x79, 0x7e, 0xe1, 0x65, 0x04, 0x83, 0x8b, 0x40, 0xc5, 0x02, 0xac, 0xfe, 0x4d, 0x12, 0xa0, 0xaf, + 0x7b, 0x07, 0x52, 0xc9, 0x7d, 0xc8, 0x87, 0x17, 0x3b, 0xb2, 0xce, 0xbf, 0x74, 0xb6, 0x43, 0x30, + 0xba, 0x17, 0x04, 0x9b, 0x28, 0x0f, 0x62, 0xeb, 0xb4, 0xa0, 0xa3, 0xb8, 0x0c, 0x7b, 0xb6, 0x06, + 0x60, 0x47, 0x22, 0x71, 0x5d, 0x39, 0xf3, 0xec, 0x13, 0xd5, 0xf9, 0xb1, 0x20, 0x9c, 0x26, 0x13, + 0xcc, 0xd7, 0xe3, 0x3a, 0x39, 0x37, 0x23, 0x9b, 0x73, 0x78, 0x2a, 0x87, 0x3e, 0x83, 0x02, 0x1b, + 0xb7, 0xe6, 0x71, 0x9e, 0xcc, 0x2d, 0x2f, 0x74, 0x95, 0xd0, 0x80, 0x61, 0x14, 0x7e, 0xd7, 0x14, + 0x58, 0x74, 0xc7, 0x0e, 0x1b, 0xb6, 0xd4, 0xa1, 0xfe, 0x28, 0x09, 0x2f, 0xb7, 0x89, 0x7f, 0x44, + 0xdd, 0x83, 0xaa, 0xef, 0xeb, 0xc6, 0xfe, 0x90, 0x38, 0xd2, 0xc9, 0x91, 0xcc, 0x3a, 0x31, 0x93, + 0x59, 0xaf, 0xc0, 0xbc, 0x6e, 0x5b, 0xba, 0x47, 0x44, 0x3a, 0x92, 0xc7, 0x41, 0x93, 0xe5, 0xff, + 0xac, 0x9a, 0x20, 0x9e, 0x47, 0x44, 0x81, 0x9f, 0xc7, 0x53, 0x02, 0xfa, 0x25, 0x28, 0xc8, 0xc4, + 0x83, 0xb2, 0x63, 0x49, 0x5c, 0x3b, 0x3d, 0x88, 0xad, 0x69, 0xe2, 0x2d, 0x92, 0xe9, 0x48, 0x67, + 0xe4, 0xcb, 0x94, 0x06, 0xcc, 0x90, 0x50, 0xfa, 0x04, 0x96, 0xce, 0xb1, 0xbf, 0xd5, 0xbd, 0xc0, + 0x3f, 0x25, 0x01, 0x5a, 0xdd, 0xea, 0xb6, 0x1c, 0x7b, 0x03, 0xb2, 0x7b, 0xfa, 0xd0, 0xb2, 0x27, + 0x97, 0x6d, 0x3f, 0x53, 0x7c, 0xa5, 0x2a, 0x46, 0xb9, 0xc1, 0x65, 0xb0, 0x94, 0xe5, 0x35, 0xcb, + 0x78, 0xd7, 0x21, 0x7e, 0x58, 0xb3, 0xf0, 0x16, 0x33, 0xc3, 0xd5, 0x9d, 0x30, 0x6e, 0x44, 0x83, + 0xf9, 0x75, 0xa0, 0xfb, 0xe4, 0x48, 0x9f, 0x04, 0x7b, 0x86, 0x6c, 0xa2, 0x4d, 0x56, 0xcb, 0x78, + 0xc4, 0x3d, 0x24, 0xe6, 0x4a, 0x86, 0xbb, 0xed, 0x2a, 0x7b, 0xb0, 0x84, 0x0b, 0x3f, 0x85, 0xd2, + 0xa5, 0x07, 0x3c, 0x5f, 0x99, 0xb2, 0xbe, 0x95, 0x8f, 0xee, 0xc0, 0xc2, 0xcc, 0x38, 0x9f, 0x2b, + 0x16, 0x5b, 0xdd, 0xc7, 0xef, 0x2b, 0x69, 0xf9, 0xf5, 0xa1, 0x92, 0x55, 0xff, 0x34, 0x25, 0x56, + 0xb9, 0xf4, 0x6a, 0xfc, 0x6d, 0x66, 0x8e, 0xaf, 0x4d, 0x83, 0xda, 0x72, 0xf5, 0xbd, 0x79, 0xf9, + 0xe2, 0x67, 0xc5, 0x07, 0x87, 0xe3, 0x50, 0x10, 0xad, 0x41, 0x41, 0x04, 0xa7, 0xc6, 0xa2, 0x9d, + 0xbb, 0x75, 0x01, 0x83, 0x20, 0x31, 0x49, 0x74, 0x1b, 0x16, 0xf9, 0xe5, 0x82, 0xb7, 0x4f, 0x4c, + 0x81, 0x49, 0x73, 0xcc, 0x42, 0x48, 0xe5, 0xb0, 0x6d, 0x28, 0x4a, 0x82, 0xc6, 0x13, 0xcf, 0x0c, + 0x37, 0xe8, 0x9d, 0xab, 0x0c, 0x12, 0x22, 0x3c, 0x1f, 0x2d, 0x8c, 0xa6, 0x0d, 0xb5, 0x01, 0xb9, + 0xc0, 0x58, 0xb4, 0x02, 0xa9, 0x7e, 0xbd, 0xab, 0xcc, 0x95, 0x96, 0x8e, 0x4f, 0xca, 0x85, 0x80, + 0xdc, 0xaf, 0x77, 0x19, 0x67, 0xa7, 0xd1, 0x55, 0x12, 0xb3, 0x9c, 0x9d, 0x46, 0xb7, 0x94, 0x66, + 0x09, 0x90, 0xba, 0x07, 0x85, 0x48, 0x0f, 0xe8, 0x75, 0x98, 0x6f, 0xb5, 0x1f, 0xe2, 0x66, 0xaf, + 0xa7, 0xcc, 0x95, 0x6e, 0x1c, 0x9f, 0x94, 0x51, 0x84, 0xdb, 0x72, 0x06, 0x6c, 0x7e, 0xd0, 0xab, + 0x90, 0xde, 0xec, 0xb0, 0x83, 0x55, 0x64, 0xba, 0x11, 0xc4, 0x26, 0xf5, 0xfc, 0xd2, 0x75, 0x99, + 0x59, 0x45, 0x15, 0xab, 0x7f, 0x98, 0x80, 0xac, 0x58, 0x42, 0xb1, 0x13, 0x55, 0x85, 0xf9, 0xa0, + 0x0c, 0x15, 0x55, 0xc8, 0x9b, 0x17, 0x57, 0x0c, 0x15, 0x99, 0xe0, 0x8b, 0xf0, 0x0b, 0xe4, 0x4a, + 0x1f, 0x43, 0x31, 0xca, 0xf8, 0x56, 0xc1, 0xf7, 0xeb, 0x50, 0x60, 0xf1, 0x1d, 0x54, 0x0e, 0xeb, + 0x90, 0x15, 0x8b, 0x3f, 0xdc, 0xe8, 0x2f, 0x2e, 0x5f, 0x24, 0x12, 0xdd, 0x87, 0x79, 0x51, 0xf2, + 0x04, 0xb7, 0x8f, 0xab, 0x97, 0xaf, 0x22, 0x1c, 0xc0, 0xd5, 0xcf, 0x20, 0xdd, 0x25, 0xc4, 0x65, + 0xbe, 0x77, 0xa8, 0x49, 0xa6, 0x67, 0xa3, 0xac, 0xd6, 0x4c, 0xd2, 0x6a, 0xb0, 0x6a, 0xcd, 0x24, + 0x2d, 0x33, 0xbc, 0x5f, 0x49, 0x46, 0xee, 0x57, 0xfa, 0x50, 0x7c, 0x42, 0xac, 0xc1, 0xbe, 0x4f, + 0x4c, 0xae, 0xe8, 0x5d, 0x48, 0x8f, 0x48, 0x68, 0xfc, 0x4a, 0x6c, 0x80, 0x11, 0xe2, 0x62, 0x8e, + 0x62, 0xfb, 0xc8, 0x11, 0x97, 0x96, 0x77, 0xde, 0xb2, 0xa5, 0xfe, 0x63, 0x12, 0x16, 0x5b, 0x9e, + 0x37, 0xd6, 0x1d, 0x23, 0x48, 0x9b, 0x3e, 0x9d, 0x4d, 0x9b, 0xde, 0x8a, 0x1d, 0xe1, 0x8c, 0xc8, + 0xec, 0xb5, 0x91, 0x3c, 0xba, 0x92, 0xe1, 0xd1, 0xa5, 0xfe, 0x67, 0x22, 0xb8, 0x1b, 0xba, 0x1d, + 0x59, 0xee, 0xa5, 0x95, 0xe3, 0x93, 0xf2, 0x72, 0x54, 0x13, 0xd9, 0x71, 0x0e, 0x1c, 0x7a, 0xe4, + 0xa0, 0xd7, 0x20, 0x83, 0x9b, 0xed, 0xe6, 0x13, 0x25, 0x21, 0xc2, 0x73, 0x06, 0x84, 0x89, 0x43, + 0x8e, 0x98, 0xa6, 0x6e, 0xb3, 0xdd, 0x60, 0x69, 0x4e, 0x32, 0x46, 0x53, 0x97, 0x38, 0xa6, 0xe5, + 0x0c, 0xd0, 0xeb, 0x90, 0x6d, 0xf5, 0x7a, 0x3b, 0xbc, 0x7a, 0x7f, 0xf9, 0xf8, 0xa4, 0x7c, 0x7d, + 0x06, 0xc5, 0xef, 0x05, 0x4d, 0x06, 0x62, 0x35, 0x06, 0x4b, 0x80, 0x62, 0x40, 0x2c, 0x79, 0x15, + 0x20, 0xdc, 0xe9, 0x57, 0xfb, 0xac, 0x70, 0x7f, 0x1e, 0x84, 0x29, 0xfb, 0x2b, 0x97, 0xdb, 0xbf, + 0x26, 0x41, 0xa9, 0x1a, 0x06, 0x19, 0xf9, 0x8c, 0x2f, 0xcb, 0xba, 0x3e, 0xe4, 0x46, 0xec, 0xcb, + 0x22, 0x41, 0x8a, 0x72, 0x3f, 0xf6, 0xd5, 0xe5, 0x9c, 0x5c, 0x05, 0x53, 0x9b, 0x54, 0xcd, 0xa1, + 0xe5, 0x79, 0x16, 0x75, 0x04, 0x0d, 0x87, 0x9a, 0x4a, 0xff, 0x9d, 0x80, 0xeb, 0x31, 0x08, 0x74, + 0x07, 0xd2, 0x2e, 0xb5, 0x83, 0x39, 0xbc, 0x75, 0xd1, 0xb5, 0x1f, 0x13, 0xc5, 0x1c, 0x89, 0x56, + 0x01, 0xf4, 0xb1, 0x4f, 0x75, 0xde, 0x3f, 0x9f, 0xbd, 0x1c, 0x8e, 0x50, 0xd0, 0x13, 0xc8, 0x7a, + 0xc4, 0x70, 0x49, 0x90, 0xc8, 0x7e, 0xf6, 0xb3, 0x5a, 0x5f, 0xe9, 0x71, 0x35, 0x58, 0xaa, 0x2b, + 0x55, 0x20, 0x2b, 0x28, 0x2c, 0xec, 0x4d, 0xdd, 0xd7, 0xe5, 0xa5, 0x30, 0xff, 0x66, 0xd1, 0xa4, + 0xdb, 0x83, 0x20, 0x9a, 0x74, 0x7b, 0xa0, 0xfe, 0x5d, 0x12, 0xa0, 0xf9, 0xd4, 0x27, 0xae, 0xa3, + 0xdb, 0xf5, 0x2a, 0x6a, 0x46, 0x76, 0x7f, 0x31, 0xda, 0xb7, 0x63, 0x6f, 0xba, 0x43, 0x89, 0x4a, + 0xbd, 0x1a, 0xb3, 0xff, 0xdf, 0x84, 0xd4, 0xd8, 0x95, 0x0f, 0x69, 0x22, 0x09, 0xdd, 0xc1, 0x5b, + 0x98, 0xd1, 0x50, 0x73, 0xba, 0x6d, 0xa5, 0x2e, 0x7e, 0x2e, 0x8b, 0x74, 0x10, 0xbb, 0x75, 0xb1, + 0x95, 0x6f, 0xe8, 0x9a, 0x41, 0xe4, 0xc9, 0x51, 0x14, 0x2b, 0xbf, 0x5e, 0xad, 0x13, 0xd7, 0xc7, + 0x59, 0x43, 0x67, 0xff, 0xbf, 0xd3, 0xfe, 0xf6, 0x2e, 0xc0, 0x74, 0x68, 0x68, 0x15, 0x32, 0xf5, + 0x8d, 0x5e, 0x6f, 0x4b, 0x99, 0x13, 0x1b, 0xf8, 0x94, 0xc5, 0xc9, 0xea, 0x5f, 0x25, 0x21, 0x57, + 0xaf, 0xca, 0x63, 0xb5, 0x0e, 0x0a, 0xdf, 0x95, 0xf8, 0x55, 0x3a, 0x79, 0x3a, 0xb2, 0xdc, 0x89, + 0xdc, 0x58, 0x2e, 0xa9, 0x28, 0x17, 0x99, 0x08, 0xb3, 0xba, 0xc9, 0x05, 0x10, 0x86, 0x22, 0x91, + 0x4e, 0xd0, 0x0c, 0x3d, 0xd8, 0xe3, 0x57, 0x2f, 0x77, 0x96, 0xa8, 0x0d, 0xa6, 0x6d, 0x0f, 0x17, + 0x02, 0x25, 0x75, 0xdd, 0x43, 0x1f, 0xc1, 0x92, 0x67, 0x0d, 0x1c, 0xcb, 0x19, 0x68, 0x81, 0xf3, + 0xf8, 0xbd, 0x7e, 0xed, 0xda, 0xd9, 0xe9, 0xda, 0x42, 0x4f, 0xb0, 0xa4, 0x0f, 0x17, 0x24, 0xb2, + 0xce, 0x5d, 0x89, 0x3e, 0x84, 0xc5, 0x88, 0x28, 0xf3, 0xa2, 0x70, 0xbb, 0x72, 0x76, 0xba, 0x56, + 0x0c, 0x25, 0x1f, 0x91, 0x09, 0x2e, 0x86, 0x82, 0x8f, 0x08, 0xbf, 0xfc, 0xd8, 0xa3, 0xae, 0x41, + 0x34, 0x97, 0xaf, 0x69, 0x7e, 0x82, 0xa7, 0x71, 0x81, 0xd3, 0xc4, 0x32, 0x57, 0x1f, 0xc3, 0xf5, + 0x8e, 0x6b, 0xec, 0x13, 0xcf, 0x17, 0xae, 0x90, 0x5e, 0xfc, 0x0c, 0x6e, 0xf9, 0xba, 0x77, 0xa0, + 0xed, 0x5b, 0x9e, 0x4f, 0xdd, 0x89, 0xe6, 0x12, 0x9f, 0x38, 0x8c, 0xaf, 0xf1, 0xc7, 0x40, 0x79, + 0x3b, 0x75, 0x93, 0x61, 0x36, 0x05, 0x04, 0x07, 0x88, 0x2d, 0x06, 0x50, 0x5b, 0x50, 0x64, 0x35, + 0x42, 0x83, 0xec, 0xe9, 0x63, 0xdb, 0x67, 0xa3, 0x07, 0x9b, 0x0e, 0xb4, 0x17, 0x3e, 0xa6, 0xf2, + 0x36, 0x1d, 0x88, 0x4f, 0xf5, 0x87, 0xa0, 0x34, 0x2c, 0x6f, 0xa4, 0xfb, 0xc6, 0x7e, 0x70, 0xed, + 0x86, 0x1a, 0xa0, 0xec, 0x13, 0xdd, 0xf5, 0x77, 0x89, 0xee, 0x6b, 0x23, 0xe2, 0x5a, 0xd4, 0xbc, + 0x7a, 0x96, 0x97, 0x42, 0x91, 0x2e, 0x97, 0x50, 0xff, 0x27, 0x01, 0x80, 0xf5, 0xbd, 0x20, 0x23, + 0xfb, 0x3e, 0x5c, 0xf3, 0x1c, 0x7d, 0xe4, 0xed, 0x53, 0x5f, 0xb3, 0x1c, 0x9f, 0xb8, 0x87, 0xba, + 0x2d, 0x6f, 0x4f, 0x94, 0x80, 0xd1, 0x92, 0x74, 0xf4, 0x2e, 0xa0, 0x03, 0x42, 0x46, 0x1a, 0xb5, + 0x4d, 0x2d, 0x60, 0x8a, 0xa7, 0xca, 0x34, 0x56, 0x18, 0xa7, 0x63, 0x9b, 0xbd, 0x80, 0x8e, 0x6a, + 0xb0, 0xca, 0x86, 0x4f, 0x1c, 0xdf, 0xb5, 0x88, 0xa7, 0xed, 0x51, 0x57, 0xf3, 0x6c, 0x7a, 0xa4, + 0xed, 0x51, 0xdb, 0xa6, 0x47, 0xc4, 0x0d, 0x2e, 0xa6, 0x4a, 0x36, 0x1d, 0x34, 0x05, 0x68, 0x83, + 0xba, 0x3d, 0x9b, 0x1e, 0x6d, 0x04, 0x08, 0x96, 0xb6, 0x4d, 0xc7, 0xec, 0x5b, 0xc6, 0x41, 0x90, + 0xb6, 0x85, 0xd4, 0xbe, 0x65, 0x1c, 0xa0, 0xd7, 0x61, 0x81, 0xd8, 0x84, 0xdf, 0x4f, 0x08, 0x54, + 0x86, 0xa3, 0x8a, 0x01, 0x91, 0x81, 0xd4, 0xcf, 0x41, 0x69, 0x3a, 0x86, 0x3b, 0x19, 0x45, 0xe6, + 0xfc, 0x5d, 0x40, 0x6c, 0x93, 0xd4, 0x6c, 0x6a, 0x1c, 0x68, 0x43, 0xdd, 0xd1, 0x07, 0xcc, 0x2e, + 0xf1, 0x82, 0xa4, 0x30, 0xce, 0x16, 0x35, 0x0e, 0xb6, 0x25, 0x5d, 0xfd, 0x08, 0xa0, 0x37, 0x72, + 0x89, 0x6e, 0x76, 0x58, 0x36, 0xc1, 0x5c, 0xc7, 0x5b, 0x9a, 0x29, 0x5f, 0xe0, 0xa8, 0x2b, 0x97, + 0xba, 0x22, 0x18, 0x8d, 0x90, 0xae, 0xfe, 0x32, 0x5c, 0xef, 0xda, 0xba, 0xc1, 0x5f, 0xa3, 0xbb, + 0xe1, 0x93, 0x08, 0xba, 0x0f, 0x59, 0x01, 0x95, 0x33, 0x19, 0xbb, 0xdc, 0xa6, 0x7d, 0x6e, 0xce, + 0x61, 0x89, 0xaf, 0x15, 0x01, 0xa6, 0x7a, 0xd4, 0xbf, 0x48, 0x40, 0x3e, 0xd4, 0x8f, 0xca, 0xc0, + 0x2a, 0x74, 0x16, 0xde, 0x96, 0x23, 0x4b, 0xea, 0x3c, 0x8e, 0x92, 0x50, 0x0b, 0x0a, 0xa3, 0x50, + 0xfa, 0xd2, 0x7c, 0x2e, 0xc6, 0x6a, 0x1c, 0x95, 0x45, 0x1f, 0x43, 0x3e, 0x78, 0xf2, 0x0c, 0x76, + 0xd8, 0xcb, 0x5f, 0x48, 0xa7, 0x70, 0xf5, 0x53, 0x80, 0x1f, 0x50, 0xcb, 0xe9, 0xd3, 0x03, 0xe2, + 0xf0, 0x27, 0x3c, 0x56, 0xf5, 0x91, 0xc0, 0x8b, 0xb2, 0xc5, 0xeb, 0x6c, 0x31, 0x05, 0xe1, 0x4b, + 0x96, 0x68, 0xaa, 0x7f, 0x9b, 0x84, 0x2c, 0xa6, 0xd4, 0xaf, 0x57, 0x51, 0x19, 0xb2, 0x72, 0x9f, + 0xe0, 0xe7, 0x4f, 0x2d, 0x7f, 0x76, 0xba, 0x96, 0x11, 0x1b, 0x44, 0xc6, 0xe0, 0x3b, 0x43, 0x64, + 0x07, 0x4f, 0x5e, 0xb4, 0x83, 0xa3, 0x3b, 0x50, 0x94, 0x20, 0x6d, 0x5f, 0xf7, 0xf6, 0x45, 0x81, + 0x56, 0x5b, 0x3c, 0x3b, 0x5d, 0x03, 0x81, 0xdc, 0xd4, 0xbd, 0x7d, 0x0c, 0x02, 0xcd, 0xbe, 0x51, + 0x13, 0x0a, 0x5f, 0x52, 0xcb, 0xd1, 0x7c, 0x3e, 0x08, 0x79, 0x93, 0x17, 0x3b, 0x8f, 0xd3, 0xa1, + 0xca, 0xf7, 0x6c, 0xf8, 0x72, 0x3a, 0xf8, 0x26, 0x2c, 0xb8, 0x94, 0xfa, 0x62, 0xdb, 0xb2, 0xa8, + 0x23, 0x2f, 0x09, 0xca, 0xb1, 0x77, 0xc7, 0x94, 0xfa, 0x58, 0xe2, 0x70, 0xd1, 0x8d, 0xb4, 0xd0, + 0x1d, 0x58, 0xb6, 0x75, 0xcf, 0xd7, 0xf8, 0x7e, 0x67, 0x4e, 0xb5, 0x65, 0xf9, 0x52, 0x43, 0x8c, + 0xb7, 0xc1, 0x59, 0x81, 0x84, 0xfa, 0xcf, 0x09, 0x28, 0xb0, 0xc1, 0x58, 0x7b, 0x96, 0xc1, 0x92, + 0xbc, 0x6f, 0x9f, 0x7b, 0xdc, 0x84, 0x94, 0xe1, 0xb9, 0xd2, 0xa9, 0xfc, 0xf0, 0xad, 0xf7, 0x30, + 0x66, 0x34, 0xf4, 0x39, 0x64, 0xe5, 0x65, 0x85, 0x48, 0x3b, 0xd4, 0xab, 0xd3, 0x51, 0xe9, 0x1b, + 0x29, 0xc7, 0x63, 0x79, 0x6a, 0x9d, 0x38, 0x04, 0x70, 0x94, 0x84, 0x6e, 0x40, 0xd2, 0x10, 0xee, + 0x92, 0x3f, 0x98, 0xa8, 0xb7, 0x71, 0xd2, 0x70, 0xd4, 0x7f, 0x48, 0xc0, 0xc2, 0x74, 0xc1, 0xb3, + 0x08, 0xb8, 0x05, 0x79, 0x6f, 0xbc, 0xeb, 0x4d, 0x3c, 0x9f, 0x0c, 0x83, 0xe7, 0xc9, 0x90, 0x80, + 0x5a, 0x90, 0xd7, 0xed, 0x01, 0x75, 0x2d, 0x7f, 0x7f, 0x28, 0x2b, 0xd1, 0xf8, 0x54, 0x21, 0xaa, + 0xb3, 0x52, 0x0d, 0x44, 0xf0, 0x54, 0x3a, 0x38, 0xf7, 0xc5, 0x1b, 0x36, 0x3f, 0xf7, 0x5f, 0x83, + 0xa2, 0xad, 0x0f, 0xf9, 0xed, 0x8d, 0x6f, 0x0d, 0xc5, 0x38, 0xd2, 0xb8, 0x20, 0x69, 0x7d, 0x6b, + 0x48, 0x54, 0x15, 0xf2, 0xa1, 0x32, 0xb4, 0x04, 0x85, 0x6a, 0xb3, 0xa7, 0xdd, 0x5d, 0xbf, 0xaf, + 0x3d, 0xac, 0x6f, 0x2b, 0x73, 0x32, 0x37, 0xfd, 0xcb, 0x04, 0x2c, 0xc8, 0xed, 0x48, 0xe6, 0xfb, + 0xaf, 0xc3, 0xbc, 0xab, 0xef, 0xf9, 0x41, 0x45, 0x92, 0x16, 0x51, 0xcd, 0x76, 0x78, 0x56, 0x91, + 0x30, 0x56, 0x7c, 0x45, 0x12, 0x79, 0x30, 0x4f, 0x5d, 0xfa, 0x60, 0x9e, 0xfe, 0xb9, 0x3c, 0x98, + 0xab, 0xbf, 0x05, 0xb0, 0x61, 0xd9, 0xa4, 0x2f, 0xae, 0x90, 0xe2, 0xea, 0x4b, 0x96, 0xc3, 0xc9, + 0x8b, 0xc4, 0x20, 0x87, 0x6b, 0x35, 0x30, 0xa3, 0x31, 0xd6, 0xc0, 0x32, 0xe5, 0x62, 0xe4, 0xac, + 0x87, 0x8c, 0x35, 0xb0, 0xcc, 0xf0, 0x89, 0x28, 0x7d, 0xd5, 0x13, 0xd1, 0x49, 0x02, 0x96, 0x64, + 0xee, 0x1a, 0x6e, 0xbf, 0x6f, 0x43, 0x5e, 0xa4, 0xb1, 0xd3, 0x82, 0x8e, 0x3f, 0x12, 0x0b, 0x5c, + 0xab, 0x81, 0x73, 0x82, 0xdd, 0x32, 0xd1, 0x1a, 0x14, 0x24, 0x34, 0xf2, 0xe3, 0x1a, 0x10, 0xa4, + 0x36, 0x33, 0xff, 0x7d, 0x48, 0xef, 0x59, 0x36, 0x91, 0x81, 0x1e, 0xbb, 0x01, 0x4c, 0x1d, 0xb0, + 0x39, 0x87, 0x39, 0xba, 0x96, 0x0b, 0xee, 0xd8, 0xb8, 0x7d, 0xb2, 0xec, 0x8c, 0xda, 0x27, 0x2a, + 0xd0, 0x73, 0xf6, 0x09, 0x1c, 0xb3, 0x4f, 0xb0, 0x85, 0x7d, 0x12, 0x1a, 0xb5, 0x4f, 0x90, 0x7e, + 0x2e, 0xf6, 0x6d, 0xc1, 0x8d, 0x9a, 0xad, 0x1b, 0x07, 0xb6, 0xe5, 0xf9, 0xc4, 0x8c, 0xee, 0x18, + 0xeb, 0x90, 0x9d, 0x49, 0x3a, 0x2f, 0xbb, 0x73, 0x95, 0x48, 0xf5, 0x3f, 0x12, 0x50, 0xdc, 0x24, + 0xba, 0xed, 0xef, 0x4f, 0xaf, 0x86, 0x7c, 0xe2, 0xf9, 0xf2, 0xb0, 0xe2, 0xdf, 0xe8, 0x03, 0xc8, + 0x85, 0x39, 0xc9, 0x95, 0x8f, 0x5f, 0x21, 0x14, 0xdd, 0x83, 0x79, 0xb6, 0xc6, 0xe8, 0x38, 0x28, + 0x76, 0x2e, 0x7b, 0x57, 0x91, 0x48, 0x76, 0xc8, 0xb8, 0x84, 0x27, 0x21, 0x3c, 0x94, 0x32, 0x38, + 0x68, 0xa2, 0x5f, 0x84, 0x22, 0x7f, 0x16, 0x08, 0x72, 0xae, 0xcc, 0x55, 0x3a, 0x0b, 0xe2, 0x65, + 0x4f, 0xe4, 0x5b, 0xff, 0x97, 0x80, 0xe5, 0x6d, 0x7d, 0xb2, 0x4b, 0xe4, 0xb6, 0x41, 0x4c, 0x4c, + 0x0c, 0xea, 0x9a, 0xa8, 0x1b, 0xdd, 0x6e, 0x2e, 0x79, 0x28, 0x8c, 0x13, 0x8e, 0xdf, 0x75, 0x82, + 0x02, 0x2c, 0x19, 0x29, 0xc0, 0x96, 0x21, 0xe3, 0x50, 0xc7, 0x20, 0x72, 0x2f, 0x12, 0x0d, 0xd5, + 0x8a, 0x6e, 0x35, 0xa5, 0xf0, 0x0d, 0x8f, 0xbf, 0xc0, 0xb5, 0xa9, 0x1f, 0xf6, 0x86, 0x3e, 0x87, + 0x52, 0xaf, 0x59, 0xc7, 0xcd, 0x7e, 0xad, 0xf3, 0x43, 0xad, 0x57, 0xdd, 0xea, 0x55, 0xd7, 0xef, + 0x68, 0xdd, 0xce, 0xd6, 0x17, 0x77, 0xef, 0xdd, 0xf9, 0x40, 0x49, 0x94, 0xca, 0xc7, 0x27, 0xe5, + 0x5b, 0xed, 0x6a, 0x7d, 0x4b, 0xac, 0x98, 0x5d, 0xfa, 0xb4, 0xa7, 0xdb, 0x9e, 0xbe, 0x7e, 0xa7, + 0x4b, 0xed, 0x09, 0xc3, 0xb0, 0xb0, 0x2e, 0x46, 0xcf, 0xab, 0xe8, 0x31, 0x9c, 0xb8, 0xf0, 0x18, + 0x9e, 0x9e, 0xe6, 0xc9, 0x0b, 0x4e, 0xf3, 0x0d, 0x58, 0x36, 0x5c, 0xea, 0x79, 0x1a, 0xcb, 0xfe, + 0x89, 0x79, 0xae, 0xbe, 0x78, 0xe9, 0xec, 0x74, 0xed, 0x5a, 0x9d, 0xf1, 0x7b, 0x9c, 0x2d, 0xd5, + 0x5f, 0x33, 0x22, 0x24, 0xde, 0x93, 0xfa, 0x47, 0x29, 0x96, 0x48, 0x59, 0x87, 0x96, 0x4d, 0x06, + 0xc4, 0x43, 0x8f, 0x61, 0xc9, 0x70, 0x89, 0xc9, 0xd2, 0x7a, 0xdd, 0xd6, 0xbc, 0x11, 0x31, 0x64, + 0x50, 0xff, 0x42, 0x6c, 0x4e, 0x13, 0x0a, 0x56, 0xea, 0xa1, 0x54, 0x6f, 0x44, 0x0c, 0xbc, 0x68, + 0xcc, 0xb4, 0xd1, 0x97, 0xb0, 0xe4, 0x11, 0xdb, 0x72, 0xc6, 0x4f, 0x35, 0x83, 0x3a, 0x3e, 0x79, + 0x1a, 0x3c, 0x47, 0x5d, 0xa5, 0xb7, 0xd7, 0xdc, 0x62, 0x52, 0x75, 0x21, 0x54, 0x43, 0x67, 0xa7, + 0x6b, 0x8b, 0xb3, 0x34, 0xbc, 0x28, 0x35, 0xcb, 0x76, 0xa9, 0x0d, 0x8b, 0xb3, 0xd6, 0xa0, 0x65, + 0xb9, 0xf6, 0xf9, 0x16, 0x12, 0xac, 0x6d, 0x74, 0x0b, 0x72, 0x2e, 0x19, 0x58, 0x9e, 0xef, 0x0a, + 0x37, 0x33, 0x4e, 0x48, 0x61, 0x2b, 0x5f, 0xfc, 0xc2, 0xa6, 0xf4, 0x1b, 0x70, 0xae, 0x47, 0xb6, + 0x58, 0x4c, 0xcb, 0xd3, 0x77, 0xa5, 0xca, 0x1c, 0x0e, 0x9a, 0x2c, 0x06, 0xc7, 0x5e, 0x98, 0xa8, + 0xf1, 0x6f, 0x46, 0xe3, 0x19, 0x85, 0xfc, 0xbd, 0x11, 0xcf, 0x19, 0x82, 0x1f, 0x2e, 0xa6, 0x23, + 0x3f, 0x5c, 0x5c, 0x86, 0x8c, 0x4d, 0x0e, 0x89, 0x2d, 0xce, 0x72, 0x2c, 0x1a, 0xef, 0xfc, 0x34, + 0x05, 0xf9, 0xf0, 0xe9, 0x85, 0x9d, 0x04, 0xed, 0xe6, 0x93, 0x20, 0x56, 0x43, 0x7a, 0x9b, 0x1c, + 0xa1, 0xd7, 0xa6, 0x77, 0x4a, 0x9f, 0x8b, 0xb7, 0xe6, 0x90, 0x1d, 0xdc, 0x27, 0xbd, 0x01, 0xb9, + 0x6a, 0xaf, 0xd7, 0x7a, 0xd8, 0x6e, 0x36, 0x94, 0xaf, 0x12, 0xa5, 0x97, 0x8e, 0x4f, 0xca, 0xd7, + 0x42, 0x50, 0xd5, 0x13, 0xa1, 0xc4, 0x51, 0xf5, 0x7a, 0xb3, 0xdb, 0x6f, 0x36, 0x94, 0x67, 0xc9, + 0xf3, 0x28, 0x7e, 0x47, 0xc2, 0x7f, 0x31, 0x92, 0xef, 0xe2, 0x66, 0xb7, 0x8a, 0x59, 0x87, 0x5f, + 0x25, 0xc5, 0x55, 0xd7, 0xb4, 0x47, 0x97, 0x8c, 0x74, 0x97, 0xf5, 0xb9, 0x1a, 0xfc, 0x72, 0xea, + 0x59, 0x4a, 0xfc, 0xaa, 0x60, 0xfa, 0x8e, 0x44, 0x74, 0x73, 0xc2, 0x7a, 0xe3, 0x0f, 0x78, 0x5c, + 0x4d, 0xea, 0x5c, 0x6f, 0x3d, 0xb6, 0x93, 0x30, 0x2d, 0x2a, 0xcc, 0xe3, 0x9d, 0x76, 0x9b, 0x81, + 0x9e, 0xa5, 0xcf, 0x8d, 0x0e, 0x8f, 0x1d, 0x56, 0xff, 0xa2, 0xdb, 0x90, 0x0b, 0xde, 0xf7, 0x94, + 0xaf, 0xd2, 0xe7, 0x0c, 0xaa, 0x07, 0x8f, 0x93, 0xbc, 0xc3, 0xcd, 0x9d, 0x3e, 0xff, 0x61, 0xd7, + 0xb3, 0xcc, 0xf9, 0x0e, 0xf7, 0xc7, 0xbe, 0x49, 0x8f, 0x1c, 0xb6, 0x02, 0xe5, 0xad, 0xda, 0x57, + 0x19, 0x71, 0x05, 0x11, 0x62, 0xe4, 0x95, 0xda, 0x1b, 0x90, 0xc3, 0xcd, 0x1f, 0x88, 0xdf, 0x80, + 0x3d, 0xcb, 0x9e, 0xd3, 0x83, 0xc9, 0x97, 0xc4, 0x90, 0xbd, 0x75, 0x70, 0x77, 0xb3, 0xca, 0x5d, + 0x7e, 0x1e, 0xd5, 0x71, 0x47, 0xfb, 0xba, 0x43, 0xcc, 0xe9, 0x4f, 0x2b, 0x42, 0xd6, 0x3b, 0xbf, + 0x02, 0xb9, 0x20, 0xcf, 0x44, 0xab, 0x90, 0x7d, 0xd2, 0xc1, 0x8f, 0x9a, 0x58, 0x99, 0x13, 0x3e, + 0x0c, 0x38, 0x4f, 0x44, 0x85, 0x50, 0x86, 0xf9, 0xed, 0x6a, 0xbb, 0xfa, 0xb0, 0x89, 0x83, 0x0b, + 0xef, 0x00, 0x20, 0x93, 0xa5, 0x92, 0x22, 0x3b, 0x08, 0x75, 0xd6, 0x56, 0xbe, 0xfe, 0x66, 0x75, + 0xee, 0x27, 0xdf, 0xac, 0xce, 0x3d, 0x3b, 0x5b, 0x4d, 0x7c, 0x7d, 0xb6, 0x9a, 0xf8, 0xf1, 0xd9, + 0x6a, 0xe2, 0xdf, 0xcf, 0x56, 0x13, 0xbb, 0x59, 0xbe, 0xa5, 0xdf, 0xfb, 0xff, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x69, 0xd9, 0x83, 0x1d, 0x57, 0x2e, 0x00, 0x00, } diff --git a/components/engine/vendor/github.com/docker/swarmkit/api/types.proto b/components/engine/vendor/github.com/docker/swarmkit/api/types.proto index 6aeb28263f..0b3b30fef9 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/api/types.proto +++ b/components/engine/vendor/github.com/docker/swarmkit/api/types.proto @@ -495,6 +495,8 @@ message NetworkAttachmentConfig { // preferred. If these addresses are not available then the // attachment might fail. repeated string addresses = 3; + // DriverOpts is a map of driver specific options for the network target + map driver_opts = 4; } // IPAMConfig specifies parameters for IP Address Management. diff --git a/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/network.go b/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/network.go index 4638eb6f60..8fb64567df 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/network.go +++ b/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/network.go @@ -593,7 +593,7 @@ func (a *Allocator) taskCreateNetworkAttachments(t *api.Task, s *api.Service) { attachment := api.NetworkAttachment{Network: n} attachment.Aliases = append(attachment.Aliases, na.Aliases...) attachment.Addresses = append(attachment.Addresses, na.Addresses...) - + attachment.DriverOpts = na.DriverOpts networks = append(networks, &attachment) } }) diff --git a/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_darwin.go b/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_darwin.go index b8ad76b092..8cc2e11d79 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_darwin.go +++ b/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_darwin.go @@ -3,11 +3,15 @@ package networkallocator import ( "github.com/docker/libnetwork/drivers/overlay/ovmanager" "github.com/docker/libnetwork/drivers/remote" + "github.com/docker/libnetwork/drvregistry" ) -func getInitializers() []initializer { - return []initializer{ - {remote.Init, "remote"}, - {ovmanager.Init, "overlay"}, - } +const initializers = []initializer{ + {remote.Init, "remote"}, + {ovmanager.Init, "overlay"}, +} + +// PredefinedNetworks returns the list of predefined network structures +func PredefinedNetworks() []PredefinedNetworkData { + return nil } diff --git a/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_network.go b/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_network.go deleted file mode 100644 index 59bb0d7da1..0000000000 --- a/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_network.go +++ /dev/null @@ -1,15 +0,0 @@ -// +build linux windows - -package networkallocator - -import ( - "github.com/docker/libnetwork/drivers/overlay/ovmanager" - "github.com/docker/libnetwork/drivers/remote" -) - -func getInitializers() []initializer { - return []initializer{ - {remote.Init, "remote"}, - {ovmanager.Init, "overlay"}, - } -} diff --git a/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_network_linux.go b/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_network_linux.go new file mode 100644 index 0000000000..035a904b18 --- /dev/null +++ b/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_network_linux.go @@ -0,0 +1,27 @@ +package networkallocator + +import ( + "github.com/docker/libnetwork/drivers/bridge/brmanager" + "github.com/docker/libnetwork/drivers/host" + "github.com/docker/libnetwork/drivers/ipvlan/ivmanager" + "github.com/docker/libnetwork/drivers/macvlan/mvmanager" + "github.com/docker/libnetwork/drivers/overlay/ovmanager" + "github.com/docker/libnetwork/drivers/remote" +) + +var initializers = []initializer{ + {remote.Init, "remote"}, + {ovmanager.Init, "overlay"}, + {mvmanager.Init, "macvlan"}, + {brmanager.Init, "bridge"}, + {ivmanager.Init, "ipvlan"}, + {host.Init, "host"}, +} + +// PredefinedNetworks returns the list of predefined network structures +func PredefinedNetworks() []PredefinedNetworkData { + return []PredefinedNetworkData{ + {"bridge", "bridge"}, + {"host", "host"}, + } +} diff --git a/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_network_windows.go b/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_network_windows.go new file mode 100644 index 0000000000..9b56f7be36 --- /dev/null +++ b/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_network_windows.go @@ -0,0 +1,16 @@ +package networkallocator + +import ( + "github.com/docker/libnetwork/drivers/overlay/ovmanager" + "github.com/docker/libnetwork/drivers/remote" +) + +var initializers = []initializer{ + {remote.Init, "remote"}, + {ovmanager.Init, "overlay"}, +} + +// PredefinedNetworks returns the list of predefined network structures +func PredefinedNetworks() []PredefinedNetworkData { + return nil +} diff --git a/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_unsupported.go b/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_unsupported.go index 2e33410d08..5facfdc7f4 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_unsupported.go +++ b/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/drivers_unsupported.go @@ -2,6 +2,9 @@ package networkallocator -func getInitializers() []initializer { +const initializers = nil + +// PredefinedNetworks returns the list of predefined network structures +func PredefinedNetworks() []PredefinedNetworkData { return nil } diff --git a/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/networkallocator.go b/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/networkallocator.go index 0b47d3549f..a2fda20348 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/networkallocator.go +++ b/components/engine/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/networkallocator.go @@ -3,6 +3,7 @@ package networkallocator import ( "fmt" "net" + "strings" "github.com/docker/docker/pkg/plugingetter" "github.com/docker/libnetwork/datastore" @@ -21,6 +22,10 @@ const ( // default if a network without any driver name specified is // created. DefaultDriver = "overlay" + + // PredefinedLabel identifies internally allocated swarm networks + // corresponding to the node-local predefined networks on the host. + PredefinedLabel = "com.docker.swarm.predefined" ) // NetworkAllocator acts as the controller for all network related operations @@ -62,6 +67,18 @@ type network struct { // endpoints is a map of endpoint IP to the poolID from which it // was allocated. endpoints map[string]string + + // isNodeLocal indicates whether the scope of the network's resources + // is local to the node. If true, it means the resources can only be + // allocated locally by the node where the network will be deployed. + // In this the swarm manager will skip the allocations. + isNodeLocal bool +} + +type networkDriver struct { + driver driverapi.Driver + name string + capability *driverapi.Capability } type initializer struct { @@ -69,6 +86,13 @@ type initializer struct { ntype string } +// PredefinedNetworkData contains the minimum set of data needed +// to create the correspondent predefined network object in the store. +type PredefinedNetworkData struct { + Name string + Driver string +} + // New returns a new NetworkAllocator handle func New(pg plugingetter.PluginGetter) (*NetworkAllocator, error) { na := &NetworkAllocator{ @@ -110,22 +134,38 @@ func (na *NetworkAllocator) Allocate(n *api.Network) error { return fmt.Errorf("network %s already allocated", n.ID) } - pools, err := na.allocatePools(n) + d, err := na.resolveDriver(n) if err != nil { - return errors.Wrapf(err, "failed allocating pools and gateway IP for network %s", n.ID) + return err } - if err := na.allocateDriverState(n); err != nil { - na.freePools(n, pools) - return errors.Wrapf(err, "failed while allocating driver state for network %s", n.ID) + nw := &network{ + nw: n, + endpoints: make(map[string]string), + isNodeLocal: d.capability.DataScope == datastore.LocalScope, } - na.networks[n.ID] = &network{ - nw: n, - pools: pools, - endpoints: make(map[string]string), + // No swarm-level allocation can be provided by the network driver for + // node-local networks. Only thing needed is populating the driver's name + // in the driver's state. + if nw.isNodeLocal { + n.DriverState = &api.Driver{ + Name: d.name, + } + } else { + nw.pools, err = na.allocatePools(n) + if err != nil { + return errors.Wrapf(err, "failed allocating pools and gateway IP for network %s", n.ID) + } + + if err := na.allocateDriverState(n); err != nil { + na.freePools(n, nw.pools) + return errors.Wrapf(err, "failed while allocating driver state for network %s", n.ID) + } } + na.networks[n.ID] = nw + return nil } @@ -141,11 +181,18 @@ func (na *NetworkAllocator) Deallocate(n *api.Network) error { return fmt.Errorf("could not get networker state for network %s", n.ID) } + // No swarm-level resource deallocation needed for node-local networks + if localNet.isNodeLocal { + delete(na.networks, n.ID) + return nil + } + if err := na.freeDriverState(n); err != nil { return errors.Wrapf(err, "failed to free driver state for network %s", n.ID) } delete(na.networks, n.ID) + return na.freePools(n, localNet.pools) } @@ -282,24 +329,32 @@ func (na *NetworkAllocator) IsTaskAllocated(t *api.Task) bool { } // To determine whether the task has its resources allocated, - // we just need to look at one network(in case of + // we just need to look at one global scope network (in case of // multi-network attachment). This is because we make sure we // allocate for every network or we allocate for none. - // If the network is not allocated, the task cannot be allocated. - localNet, ok := na.networks[t.Networks[0].Network.ID] - if !ok { - return false - } + // Find the first global scope network + for _, nAttach := range t.Networks { + // If the network is not allocated, the task cannot be allocated. + localNet, ok := na.networks[nAttach.Network.ID] + if !ok { + return false + } - // Addresses empty. Task is not allocated. - if len(t.Networks[0].Addresses) == 0 { - return false - } + // Nothing else to check for local scope network + if localNet.isNodeLocal { + continue + } - // The allocated IP address not found in local endpoint state. Not allocated. - if _, ok := localNet.endpoints[t.Networks[0].Addresses[0]]; !ok { - return false + // Addresses empty. Task is not allocated. + if len(nAttach.Addresses) == 0 { + return false + } + + // The allocated IP address not found in local endpoint state. Not allocated. + if _, ok := localNet.endpoints[nAttach.Addresses[0]]; !ok { + return false + } } return true @@ -445,6 +500,9 @@ func (na *NetworkAllocator) DeallocateNode(node *api.Node) error { // networks that a task is attached to. func (na *NetworkAllocator) AllocateTask(t *api.Task) error { for i, nAttach := range t.Networks { + if localNet := na.getNetwork(nAttach.Network.ID); localNet != nil && localNet.isNodeLocal { + continue + } if err := na.allocateNetworkIPs(nAttach); err != nil { if err := na.releaseEndpoints(t.Networks[:i]); err != nil { log.G(context.TODO()).WithError(err).Errorf("Failed to release IP addresses while rolling back allocation for task %s network %s", t.ID, nAttach.Network.ID) @@ -467,16 +525,20 @@ func (na *NetworkAllocator) DeallocateTask(t *api.Task) error { func (na *NetworkAllocator) releaseEndpoints(networks []*api.NetworkAttachment) error { for _, nAttach := range networks { - ipam, _, _, err := na.resolveIPAM(nAttach.Network) - if err != nil { - return errors.Wrapf(err, "failed to resolve IPAM while allocating") - } - localNet := na.getNetwork(nAttach.Network.ID) if localNet == nil { return fmt.Errorf("could not find network allocator state for network %s", nAttach.Network.ID) } + if localNet.isNodeLocal { + continue + } + + ipam, _, _, err := na.resolveIPAM(nAttach.Network) + if err != nil { + return errors.Wrap(err, "failed to resolve IPAM while releasing") + } + // Do not fail and bail out if we fail to release IP // address here. Keep going and try releasing as many // addresses as possible. @@ -512,6 +574,10 @@ func (na *NetworkAllocator) allocateVIP(vip *api.Endpoint_VirtualIP) error { return errors.New("networkallocator: could not find local network state") } + if localNet.isNodeLocal { + return nil + } + // If this IP is already allocated in memory we don't need to // do anything. if _, ok := localNet.endpoints[vip.Addr]; ok { @@ -556,7 +622,9 @@ func (na *NetworkAllocator) deallocateVIP(vip *api.Endpoint_VirtualIP) error { if localNet == nil { return errors.New("networkallocator: could not find local network state") } - + if localNet.isNodeLocal { + return nil + } ipam, _, _, err := na.resolveIPAM(localNet.nw) if err != nil { return errors.Wrap(err, "failed to resolve IPAM while allocating") @@ -637,16 +705,16 @@ func (na *NetworkAllocator) allocateNetworkIPs(nAttach *api.NetworkAttachment) e } func (na *NetworkAllocator) freeDriverState(n *api.Network) error { - d, _, err := na.resolveDriver(n) + d, err := na.resolveDriver(n) if err != nil { return err } - return d.NetworkFree(n.ID) + return d.driver.NetworkFree(n.ID) } func (na *NetworkAllocator) allocateDriverState(n *api.Network) error { - d, dName, err := na.resolveDriver(n) + d, err := na.resolveDriver(n) if err != nil { return err } @@ -691,14 +759,14 @@ func (na *NetworkAllocator) allocateDriverState(n *api.Network) error { ipv4Data = append(ipv4Data, data) } - ds, err := d.NetworkAllocate(n.ID, options, ipv4Data, nil) + ds, err := d.driver.NetworkAllocate(n.ID, options, ipv4Data, nil) if err != nil { return err } // Update network object with the obtained driver state. n.DriverState = &api.Driver{ - Name: dName, + Name: d.name, Options: ds, } @@ -706,7 +774,7 @@ func (na *NetworkAllocator) allocateDriverState(n *api.Network) error { } // Resolve network driver -func (na *NetworkAllocator) resolveDriver(n *api.Network) (driverapi.Driver, string, error) { +func (na *NetworkAllocator) resolveDriver(n *api.Network) (*networkDriver, error) { dName := DefaultDriver if n.Spec.DriverConfig != nil && n.Spec.DriverConfig.Name != "" { dName = n.Spec.DriverConfig.Name @@ -717,21 +785,16 @@ func (na *NetworkAllocator) resolveDriver(n *api.Network) (driverapi.Driver, str var err error err = na.loadDriver(dName) if err != nil { - return nil, "", err + return nil, err } d, drvcap = na.drvRegistry.Driver(dName) if d == nil { - return nil, "", fmt.Errorf("could not resolve network driver %s", dName) + return nil, fmt.Errorf("could not resolve network driver %s", dName) } - } - if drvcap.DataScope != datastore.GlobalScope { - return nil, "", fmt.Errorf("swarm can allocate network resources only for global scoped networks. network driver (%s) is scoped %s", dName, drvcap.DataScope) - } - - return d, dName, nil + return &networkDriver{driver: d, capability: drvcap, name: dName}, nil } func (na *NetworkAllocator) loadDriver(name string) error { @@ -873,7 +936,7 @@ func (na *NetworkAllocator) allocatePools(n *api.Network) (map[string]string, er } func initializeDrivers(reg *drvregistry.DrvRegistry) error { - for _, i := range getInitializers() { + for _, i := range initializers { if err := reg.AddDriver(i.ntype, i.fn, nil); err != nil { return err } @@ -934,3 +997,14 @@ func IsIngressNetworkNeeded(s *api.Service) bool { return false } + +// IsBuiltInDriver returns whether the passed driver is an internal network driver +func IsBuiltInDriver(name string) bool { + n := strings.ToLower(name) + for _, d := range initializers { + if n == d.ntype { + return true + } + } + return false +} diff --git a/components/engine/vendor/github.com/docker/swarmkit/manager/controlapi/common.go b/components/engine/vendor/github.com/docker/swarmkit/manager/controlapi/common.go index 795fd936d1..56f0f8a00d 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/manager/controlapi/common.go +++ b/components/engine/vendor/github.com/docker/swarmkit/manager/controlapi/common.go @@ -104,8 +104,16 @@ func validateDriver(driver *api.Driver, pg plugingetter.PluginGetter, pluginType return grpc.Errorf(codes.InvalidArgument, "driver name: if driver is specified name is required") } - if strings.ToLower(driver.Name) == networkallocator.DefaultDriver || strings.ToLower(driver.Name) == ipamapi.DefaultIPAM { - return nil + // First check against the known drivers + switch pluginType { + case ipamapi.PluginEndpointType: + if strings.ToLower(driver.Name) == ipamapi.DefaultIPAM { + return nil + } + default: + if networkallocator.IsBuiltInDriver(driver.Name) { + return nil + } } if pg == nil { diff --git a/components/engine/vendor/github.com/docker/swarmkit/manager/controlapi/network.go b/components/engine/vendor/github.com/docker/swarmkit/manager/controlapi/network.go index a88fb64006..708f36b8f6 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/manager/controlapi/network.go +++ b/components/engine/vendor/github.com/docker/swarmkit/manager/controlapi/network.go @@ -9,6 +9,7 @@ import ( "github.com/docker/swarmkit/api" "github.com/docker/swarmkit/identity" "github.com/docker/swarmkit/manager/allocator" + "github.com/docker/swarmkit/manager/allocator/networkallocator" "github.com/docker/swarmkit/manager/state/store" "golang.org/x/net/context" "google.golang.org/grpc" @@ -87,6 +88,10 @@ func validateNetworkSpec(spec *api.NetworkSpec, pg plugingetter.PluginGetter) er return err } + if _, ok := spec.Annotations.Labels[networkallocator.PredefinedLabel]; ok { + return grpc.Errorf(codes.PermissionDenied, "label %s is for internally created predefined networks and cannot be applied by users", + networkallocator.PredefinedLabel) + } if err := validateDriver(spec.DriverConfig, pg, driverapi.NetworkPluginEndpointType); err != nil { return err } @@ -177,6 +182,11 @@ func (s *Server) RemoveNetwork(ctx context.Context, request *api.RemoveNetworkRe rm = s.removeIngressNetwork } + if v, ok := n.Spec.Annotations.Labels[networkallocator.PredefinedLabel]; ok && v == "true" { + return nil, grpc.Errorf(codes.FailedPrecondition, "network %s (%s) is a swarm predefined network and cannot be removed", + request.NetworkID, n.Spec.Annotations.Name) + } + if err := rm(n.ID); err != nil { if err == store.ErrNotExist { return nil, grpc.Errorf(codes.NotFound, "network %s not found", request.NetworkID) diff --git a/components/engine/vendor/github.com/docker/swarmkit/manager/dispatcher/dispatcher.go b/components/engine/vendor/github.com/docker/swarmkit/manager/dispatcher/dispatcher.go index 4889a2a80a..4eeb4ccb10 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/manager/dispatcher/dispatcher.go +++ b/components/engine/vendor/github.com/docker/swarmkit/manager/dispatcher/dispatcher.go @@ -427,13 +427,14 @@ func (d *Dispatcher) markNodeReady(ctx context.Context, nodeID string, descripti // Wait until the node update batch happens before unblocking register. d.processUpdatesLock.Lock() + defer d.processUpdatesLock.Unlock() + select { case <-ctx.Done(): return ctx.Err() default: } d.processUpdatesCond.Wait() - d.processUpdatesLock.Unlock() return nil } diff --git a/components/engine/vendor/github.com/docker/swarmkit/manager/manager.go b/components/engine/vendor/github.com/docker/swarmkit/manager/manager.go index 6486f72b21..005a56c33d 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/manager/manager.go +++ b/components/engine/vendor/github.com/docker/swarmkit/manager/manager.go @@ -23,6 +23,7 @@ import ( "github.com/docker/swarmkit/identity" "github.com/docker/swarmkit/log" "github.com/docker/swarmkit/manager/allocator" + "github.com/docker/swarmkit/manager/allocator/networkallocator" "github.com/docker/swarmkit/manager/controlapi" "github.com/docker/swarmkit/manager/dispatcher" "github.com/docker/swarmkit/manager/health" @@ -938,6 +939,16 @@ func (m *Manager) becomeLeader(ctx context.Context) { if err := store.CreateNetwork(tx, newIngressNetwork()); err != nil { log.G(ctx).WithError(err).Error("failed to create default ingress network") } + // Create now the static predefined node-local networks which + // are known to be present in each cluster node. This is needed + // in order to allow running services on the predefined docker + // networks like `bridge` and `host`. + log.G(ctx).Info("Creating node-local predefined networks") + for _, p := range networkallocator.PredefinedNetworks() { + if err := store.CreateNetwork(tx, newPredefinedNetwork(p.Name, p.Driver)); err != nil { + log.G(ctx).WithError(err).Error("failed to create predefined network " + p.Name) + } + } } return nil @@ -1156,3 +1167,24 @@ func newIngressNetwork() *api.Network { }, } } + +// Creates a network object representing one of the predefined networks +// known to be statically created on the cluster nodes. These objects +// are populated in the store at cluster creation solely in order to +// support running services on the nodes' predefined networks. +// External clients can filter these predefined networks by looking +// at the predefined label. +func newPredefinedNetwork(name, driver string) *api.Network { + return &api.Network{ + ID: identity.NewID(), + Spec: api.NetworkSpec{ + Annotations: api.Annotations{ + Name: name, + Labels: map[string]string{ + networkallocator.PredefinedLabel: "true", + }, + }, + DriverConfig: &api.Driver{Name: driver}, + }, + } +} diff --git a/components/engine/vendor/github.com/docker/swarmkit/manager/scheduler/filter.go b/components/engine/vendor/github.com/docker/swarmkit/manager/scheduler/filter.go index 5938a2bfec..2909a648d7 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/manager/scheduler/filter.go +++ b/components/engine/vendor/github.com/docker/swarmkit/manager/scheduler/filter.go @@ -244,15 +244,33 @@ func (f *PlatformFilter) Check(n *NodeInfo) bool { return true } // check if the platform for the node is supported - nodePlatform := n.Description.Platform - for _, p := range f.supportedPlatforms { - if (p.Architecture == "" || p.Architecture == nodePlatform.Architecture) && (p.OS == "" || p.OS == nodePlatform.OS) { - return true + if n.Description != nil { + if nodePlatform := n.Description.Platform; nodePlatform != nil { + for _, p := range f.supportedPlatforms { + if f.platformEqual(*p, *nodePlatform) { + return true + } + } } } return false } +func (f *PlatformFilter) platformEqual(imgPlatform, nodePlatform api.Platform) bool { + // normalize "x86_64" architectures to "amd64" + if imgPlatform.Architecture == "x86_64" { + imgPlatform.Architecture = "amd64" + } + if nodePlatform.Architecture == "x86_64" { + nodePlatform.Architecture = "amd64" + } + + if (imgPlatform.Architecture == "" || imgPlatform.Architecture == nodePlatform.Architecture) && (imgPlatform.OS == "" || imgPlatform.OS == nodePlatform.OS) { + return true + } + return false +} + // Explain returns an explanation of a failure. func (f *PlatformFilter) Explain(nodes int) string { if nodes == 1 { diff --git a/components/engine/vendor/github.com/docker/swarmkit/protobuf/plugin/plugin.pb.go b/components/engine/vendor/github.com/docker/swarmkit/protobuf/plugin/plugin.pb.go index 78ffa6b746..9cafe73432 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/protobuf/plugin/plugin.pb.go +++ b/components/engine/vendor/github.com/docker/swarmkit/protobuf/plugin/plugin.pb.go @@ -92,6 +92,7 @@ var E_Deepcopy = &proto.ExtensionDesc{ Field: 70000, Name: "docker.protobuf.plugin.deepcopy", Tag: "varint,70000,opt,name=deepcopy,def=1", + Filename: "plugin.proto", } var E_StoreObject = &proto.ExtensionDesc{ @@ -100,6 +101,7 @@ var E_StoreObject = &proto.ExtensionDesc{ Field: 70001, Name: "docker.protobuf.plugin.store_object", Tag: "bytes,70001,opt,name=store_object,json=storeObject", + Filename: "plugin.proto", } var E_TlsAuthorization = &proto.ExtensionDesc{ @@ -108,6 +110,7 @@ var E_TlsAuthorization = &proto.ExtensionDesc{ Field: 73626345, Name: "docker.protobuf.plugin.tls_authorization", Tag: "bytes,73626345,opt,name=tls_authorization,json=tlsAuthorization", + Filename: "plugin.proto", } func init() { diff --git a/components/engine/vendor/github.com/docker/swarmkit/vendor.conf b/components/engine/vendor/github.com/docker/swarmkit/vendor.conf index b0eb8cd15b..52fa7aafe5 100644 --- a/components/engine/vendor/github.com/docker/swarmkit/vendor.conf +++ b/components/engine/vendor/github.com/docker/swarmkit/vendor.conf @@ -1,6 +1,6 @@ # grpc and protobuf google.golang.org/grpc v1.0.4 -github.com/gogo/protobuf 8d70fb3182befc465c4a1eac8ad4d38ff49778e2 +github.com/gogo/protobuf v0.4 github.com/golang/protobuf 8ee79997227bf9b34611aee7946ae64735e6fd93 github.com/matttproud/golang_protobuf_extensions v1.0.0 @@ -23,7 +23,7 @@ github.com/docker/go-connections 34b5052da6b11e27f5f2e357b38b571ddddd3928 github.com/docker/go-events 37d35add5005832485c0225ec870121b78fcff1c github.com/docker/go-units 954fed01cc617c55d838fa2230073f2cb17386c8 github.com/docker/libkv 9fd56606e928ff1f309808f5d5a0b7a2ef73f9a8 -github.com/docker/libnetwork 4610dd67c7b9828bb4719d8aa2ac53a7f1f739d2 +github.com/docker/libnetwork 37e20af882e13dd01ade3658b7aabdae3412118b github.com/docker/libtrust 9cbd2a1374f46905c68a4eb3694a130610adc62a github.com/opencontainers/runc 8e8d01d38d7b4fb0a35bf89b72bc3e18c98882d7 github.com/opencontainers/go-digest a6d0ee40d4207ea02364bd3b9e8e77b9159ba1eb diff --git a/components/engine/vendor/github.com/gogo/protobuf/Readme.md b/components/engine/vendor/github.com/gogo/protobuf/Readme.md index 7f25aaef5c..d31c13f836 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/Readme.md +++ b/components/engine/vendor/github.com/gogo/protobuf/Readme.md @@ -5,7 +5,7 @@ gogoprotobuf is a fork of golang/protobuf with extra code generation features. This code generation is used to achieve: - + - fast marshalling and unmarshalling - more canonical Go structures - goprotobuf compatibility @@ -23,7 +23,7 @@ These projects use gogoprotobuf: - etcd - blog - sample proto file - spacemonkey - blog - badoo - sample proto file - - mesos-go - sample proto file + - mesos-go - sample proto file - heka - the switch from golang/protobuf to gogo/protobuf when it was still on code.google.com - cockroachdb - sample proto file - go-ipfs - sample proto file @@ -38,6 +38,7 @@ These projects use gogoprotobuf: - docker swarmkit - sample proto file - nats.io - go-nats-streaming - tidb - Communication between tidb and tikv + - protoactor-go - vanity command that also generates actors from service definitions Please lets us know if you are using gogoprotobuf by posting on our GoogleGroup. @@ -47,21 +48,21 @@ Please lets us know if you are using gogoprotobuf by posting on our gophercon - alecthomas' go serialization benchmarks -## Getting Started +## Getting Started There are several ways to use gogoprotobuf, but for all you need to install go and protoc. After that you can choose: - + - Speed - More Speed and more generated code - Most Speed and most customization ### Installation -To install it, you must first have Go (at least version 1.3.3) installed (see [http://golang.org/doc/install](http://golang.org/doc/install)). Go 1.5.4, 1.6.3 and 1.7.1 are continuously tested. +To install it, you must first have Go (at least version 1.6.3) installed (see [http://golang.org/doc/install](http://golang.org/doc/install)). Go 1.7.1 and 1.8 is continuously tested. Next, install the standard protocol buffer implementation from [https://github.com/google/protobuf](https://github.com/google/protobuf). -Most versions from 2.3.1 should not give any problems, but 2.5.0, 2.6.1 and 3.0.2 are continuously tested. +Most versions from 2.3.1 should not give any problems, but 2.6.1, 3.0.2 and 3.1.0 are continuously tested. ### Speed diff --git a/components/engine/vendor/github.com/gogo/protobuf/gogoproto/doc.go b/components/engine/vendor/github.com/gogo/protobuf/gogoproto/doc.go index 5ecfae1135..147b5ecc62 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/gogoproto/doc.go +++ b/components/engine/vendor/github.com/gogo/protobuf/gogoproto/doc.go @@ -148,6 +148,7 @@ The enumprefix, getters and stringer extensions can be used to remove some of th - goproto_stringer, if false, the message is generated without the default string method, this is useful for rather using stringer, or allowing you to write your own string method. - goproto_extensions_map (beta), if false, the extensions field is generated as type []byte instead of type map[int32]proto.Extension - goproto_unrecognized (beta), if false, XXX_unrecognized field is not generated. This is useful in conjunction with gogoproto.nullable=false, to generate structures completely devoid of pointers and reduce GC pressure at the cost of losing information about unrecognized fields. + - goproto_registration (beta), if true, the generated files will register all messages and types against both gogo/protobuf and golang/protobuf. This is necessary when using third-party packages which read registrations from golang/protobuf (such as the grpc-gateway). Less Typing and Peace of Mind is explained in their specific plugin folders godoc: diff --git a/components/engine/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.go b/components/engine/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.go index c5742ad4cb..9506b6fb20 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.go +++ b/components/engine/vendor/github.com/gogo/protobuf/gogoproto/gogo.pb.go @@ -34,6 +34,7 @@ var E_GoprotoEnumPrefix = &proto.ExtensionDesc{ Field: 62001, Name: "gogoproto.goproto_enum_prefix", Tag: "varint,62001,opt,name=goproto_enum_prefix,json=goprotoEnumPrefix", + Filename: "gogo.proto", } var E_GoprotoEnumStringer = &proto.ExtensionDesc{ @@ -42,6 +43,7 @@ var E_GoprotoEnumStringer = &proto.ExtensionDesc{ Field: 62021, Name: "gogoproto.goproto_enum_stringer", Tag: "varint,62021,opt,name=goproto_enum_stringer,json=goprotoEnumStringer", + Filename: "gogo.proto", } var E_EnumStringer = &proto.ExtensionDesc{ @@ -50,6 +52,7 @@ var E_EnumStringer = &proto.ExtensionDesc{ Field: 62022, Name: "gogoproto.enum_stringer", Tag: "varint,62022,opt,name=enum_stringer,json=enumStringer", + Filename: "gogo.proto", } var E_EnumCustomname = &proto.ExtensionDesc{ @@ -58,6 +61,16 @@ var E_EnumCustomname = &proto.ExtensionDesc{ Field: 62023, Name: "gogoproto.enum_customname", Tag: "bytes,62023,opt,name=enum_customname,json=enumCustomname", + Filename: "gogo.proto", +} + +var E_Enumdecl = &proto.ExtensionDesc{ + ExtendedType: (*google_protobuf.EnumOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 62024, + Name: "gogoproto.enumdecl", + Tag: "varint,62024,opt,name=enumdecl", + Filename: "gogo.proto", } var E_EnumvalueCustomname = &proto.ExtensionDesc{ @@ -66,6 +79,7 @@ var E_EnumvalueCustomname = &proto.ExtensionDesc{ Field: 66001, Name: "gogoproto.enumvalue_customname", Tag: "bytes,66001,opt,name=enumvalue_customname,json=enumvalueCustomname", + Filename: "gogo.proto", } var E_GoprotoGettersAll = &proto.ExtensionDesc{ @@ -74,6 +88,7 @@ var E_GoprotoGettersAll = &proto.ExtensionDesc{ Field: 63001, Name: "gogoproto.goproto_getters_all", Tag: "varint,63001,opt,name=goproto_getters_all,json=goprotoGettersAll", + Filename: "gogo.proto", } var E_GoprotoEnumPrefixAll = &proto.ExtensionDesc{ @@ -82,6 +97,7 @@ var E_GoprotoEnumPrefixAll = &proto.ExtensionDesc{ Field: 63002, Name: "gogoproto.goproto_enum_prefix_all", Tag: "varint,63002,opt,name=goproto_enum_prefix_all,json=goprotoEnumPrefixAll", + Filename: "gogo.proto", } var E_GoprotoStringerAll = &proto.ExtensionDesc{ @@ -90,6 +106,7 @@ var E_GoprotoStringerAll = &proto.ExtensionDesc{ Field: 63003, Name: "gogoproto.goproto_stringer_all", Tag: "varint,63003,opt,name=goproto_stringer_all,json=goprotoStringerAll", + Filename: "gogo.proto", } var E_VerboseEqualAll = &proto.ExtensionDesc{ @@ -98,6 +115,7 @@ var E_VerboseEqualAll = &proto.ExtensionDesc{ Field: 63004, Name: "gogoproto.verbose_equal_all", Tag: "varint,63004,opt,name=verbose_equal_all,json=verboseEqualAll", + Filename: "gogo.proto", } var E_FaceAll = &proto.ExtensionDesc{ @@ -106,6 +124,7 @@ var E_FaceAll = &proto.ExtensionDesc{ Field: 63005, Name: "gogoproto.face_all", Tag: "varint,63005,opt,name=face_all,json=faceAll", + Filename: "gogo.proto", } var E_GostringAll = &proto.ExtensionDesc{ @@ -114,6 +133,7 @@ var E_GostringAll = &proto.ExtensionDesc{ Field: 63006, Name: "gogoproto.gostring_all", Tag: "varint,63006,opt,name=gostring_all,json=gostringAll", + Filename: "gogo.proto", } var E_PopulateAll = &proto.ExtensionDesc{ @@ -122,6 +142,7 @@ var E_PopulateAll = &proto.ExtensionDesc{ Field: 63007, Name: "gogoproto.populate_all", Tag: "varint,63007,opt,name=populate_all,json=populateAll", + Filename: "gogo.proto", } var E_StringerAll = &proto.ExtensionDesc{ @@ -130,6 +151,7 @@ var E_StringerAll = &proto.ExtensionDesc{ Field: 63008, Name: "gogoproto.stringer_all", Tag: "varint,63008,opt,name=stringer_all,json=stringerAll", + Filename: "gogo.proto", } var E_OnlyoneAll = &proto.ExtensionDesc{ @@ -138,6 +160,7 @@ var E_OnlyoneAll = &proto.ExtensionDesc{ Field: 63009, Name: "gogoproto.onlyone_all", Tag: "varint,63009,opt,name=onlyone_all,json=onlyoneAll", + Filename: "gogo.proto", } var E_EqualAll = &proto.ExtensionDesc{ @@ -146,6 +169,7 @@ var E_EqualAll = &proto.ExtensionDesc{ Field: 63013, Name: "gogoproto.equal_all", Tag: "varint,63013,opt,name=equal_all,json=equalAll", + Filename: "gogo.proto", } var E_DescriptionAll = &proto.ExtensionDesc{ @@ -154,6 +178,7 @@ var E_DescriptionAll = &proto.ExtensionDesc{ Field: 63014, Name: "gogoproto.description_all", Tag: "varint,63014,opt,name=description_all,json=descriptionAll", + Filename: "gogo.proto", } var E_TestgenAll = &proto.ExtensionDesc{ @@ -162,6 +187,7 @@ var E_TestgenAll = &proto.ExtensionDesc{ Field: 63015, Name: "gogoproto.testgen_all", Tag: "varint,63015,opt,name=testgen_all,json=testgenAll", + Filename: "gogo.proto", } var E_BenchgenAll = &proto.ExtensionDesc{ @@ -170,6 +196,7 @@ var E_BenchgenAll = &proto.ExtensionDesc{ Field: 63016, Name: "gogoproto.benchgen_all", Tag: "varint,63016,opt,name=benchgen_all,json=benchgenAll", + Filename: "gogo.proto", } var E_MarshalerAll = &proto.ExtensionDesc{ @@ -178,6 +205,7 @@ var E_MarshalerAll = &proto.ExtensionDesc{ Field: 63017, Name: "gogoproto.marshaler_all", Tag: "varint,63017,opt,name=marshaler_all,json=marshalerAll", + Filename: "gogo.proto", } var E_UnmarshalerAll = &proto.ExtensionDesc{ @@ -186,6 +214,7 @@ var E_UnmarshalerAll = &proto.ExtensionDesc{ Field: 63018, Name: "gogoproto.unmarshaler_all", Tag: "varint,63018,opt,name=unmarshaler_all,json=unmarshalerAll", + Filename: "gogo.proto", } var E_StableMarshalerAll = &proto.ExtensionDesc{ @@ -194,6 +223,7 @@ var E_StableMarshalerAll = &proto.ExtensionDesc{ Field: 63019, Name: "gogoproto.stable_marshaler_all", Tag: "varint,63019,opt,name=stable_marshaler_all,json=stableMarshalerAll", + Filename: "gogo.proto", } var E_SizerAll = &proto.ExtensionDesc{ @@ -202,6 +232,7 @@ var E_SizerAll = &proto.ExtensionDesc{ Field: 63020, Name: "gogoproto.sizer_all", Tag: "varint,63020,opt,name=sizer_all,json=sizerAll", + Filename: "gogo.proto", } var E_GoprotoEnumStringerAll = &proto.ExtensionDesc{ @@ -210,6 +241,7 @@ var E_GoprotoEnumStringerAll = &proto.ExtensionDesc{ Field: 63021, Name: "gogoproto.goproto_enum_stringer_all", Tag: "varint,63021,opt,name=goproto_enum_stringer_all,json=goprotoEnumStringerAll", + Filename: "gogo.proto", } var E_EnumStringerAll = &proto.ExtensionDesc{ @@ -218,6 +250,7 @@ var E_EnumStringerAll = &proto.ExtensionDesc{ Field: 63022, Name: "gogoproto.enum_stringer_all", Tag: "varint,63022,opt,name=enum_stringer_all,json=enumStringerAll", + Filename: "gogo.proto", } var E_UnsafeMarshalerAll = &proto.ExtensionDesc{ @@ -226,6 +259,7 @@ var E_UnsafeMarshalerAll = &proto.ExtensionDesc{ Field: 63023, Name: "gogoproto.unsafe_marshaler_all", Tag: "varint,63023,opt,name=unsafe_marshaler_all,json=unsafeMarshalerAll", + Filename: "gogo.proto", } var E_UnsafeUnmarshalerAll = &proto.ExtensionDesc{ @@ -234,6 +268,7 @@ var E_UnsafeUnmarshalerAll = &proto.ExtensionDesc{ Field: 63024, Name: "gogoproto.unsafe_unmarshaler_all", Tag: "varint,63024,opt,name=unsafe_unmarshaler_all,json=unsafeUnmarshalerAll", + Filename: "gogo.proto", } var E_GoprotoExtensionsMapAll = &proto.ExtensionDesc{ @@ -242,6 +277,7 @@ var E_GoprotoExtensionsMapAll = &proto.ExtensionDesc{ Field: 63025, Name: "gogoproto.goproto_extensions_map_all", Tag: "varint,63025,opt,name=goproto_extensions_map_all,json=goprotoExtensionsMapAll", + Filename: "gogo.proto", } var E_GoprotoUnrecognizedAll = &proto.ExtensionDesc{ @@ -250,6 +286,7 @@ var E_GoprotoUnrecognizedAll = &proto.ExtensionDesc{ Field: 63026, Name: "gogoproto.goproto_unrecognized_all", Tag: "varint,63026,opt,name=goproto_unrecognized_all,json=goprotoUnrecognizedAll", + Filename: "gogo.proto", } var E_GogoprotoImport = &proto.ExtensionDesc{ @@ -258,6 +295,7 @@ var E_GogoprotoImport = &proto.ExtensionDesc{ Field: 63027, Name: "gogoproto.gogoproto_import", Tag: "varint,63027,opt,name=gogoproto_import,json=gogoprotoImport", + Filename: "gogo.proto", } var E_ProtosizerAll = &proto.ExtensionDesc{ @@ -266,6 +304,7 @@ var E_ProtosizerAll = &proto.ExtensionDesc{ Field: 63028, Name: "gogoproto.protosizer_all", Tag: "varint,63028,opt,name=protosizer_all,json=protosizerAll", + Filename: "gogo.proto", } var E_CompareAll = &proto.ExtensionDesc{ @@ -274,6 +313,34 @@ var E_CompareAll = &proto.ExtensionDesc{ Field: 63029, Name: "gogoproto.compare_all", Tag: "varint,63029,opt,name=compare_all,json=compareAll", + Filename: "gogo.proto", +} + +var E_TypedeclAll = &proto.ExtensionDesc{ + ExtendedType: (*google_protobuf.FileOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 63030, + Name: "gogoproto.typedecl_all", + Tag: "varint,63030,opt,name=typedecl_all,json=typedeclAll", + Filename: "gogo.proto", +} + +var E_EnumdeclAll = &proto.ExtensionDesc{ + ExtendedType: (*google_protobuf.FileOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 63031, + Name: "gogoproto.enumdecl_all", + Tag: "varint,63031,opt,name=enumdecl_all,json=enumdeclAll", + Filename: "gogo.proto", +} + +var E_GoprotoRegistration = &proto.ExtensionDesc{ + ExtendedType: (*google_protobuf.FileOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 63032, + Name: "gogoproto.goproto_registration", + Tag: "varint,63032,opt,name=goproto_registration,json=goprotoRegistration", + Filename: "gogo.proto", } var E_GoprotoGetters = &proto.ExtensionDesc{ @@ -282,6 +349,7 @@ var E_GoprotoGetters = &proto.ExtensionDesc{ Field: 64001, Name: "gogoproto.goproto_getters", Tag: "varint,64001,opt,name=goproto_getters,json=goprotoGetters", + Filename: "gogo.proto", } var E_GoprotoStringer = &proto.ExtensionDesc{ @@ -290,6 +358,7 @@ var E_GoprotoStringer = &proto.ExtensionDesc{ Field: 64003, Name: "gogoproto.goproto_stringer", Tag: "varint,64003,opt,name=goproto_stringer,json=goprotoStringer", + Filename: "gogo.proto", } var E_VerboseEqual = &proto.ExtensionDesc{ @@ -298,6 +367,7 @@ var E_VerboseEqual = &proto.ExtensionDesc{ Field: 64004, Name: "gogoproto.verbose_equal", Tag: "varint,64004,opt,name=verbose_equal,json=verboseEqual", + Filename: "gogo.proto", } var E_Face = &proto.ExtensionDesc{ @@ -306,6 +376,7 @@ var E_Face = &proto.ExtensionDesc{ Field: 64005, Name: "gogoproto.face", Tag: "varint,64005,opt,name=face", + Filename: "gogo.proto", } var E_Gostring = &proto.ExtensionDesc{ @@ -314,6 +385,7 @@ var E_Gostring = &proto.ExtensionDesc{ Field: 64006, Name: "gogoproto.gostring", Tag: "varint,64006,opt,name=gostring", + Filename: "gogo.proto", } var E_Populate = &proto.ExtensionDesc{ @@ -322,6 +394,7 @@ var E_Populate = &proto.ExtensionDesc{ Field: 64007, Name: "gogoproto.populate", Tag: "varint,64007,opt,name=populate", + Filename: "gogo.proto", } var E_Stringer = &proto.ExtensionDesc{ @@ -330,6 +403,7 @@ var E_Stringer = &proto.ExtensionDesc{ Field: 67008, Name: "gogoproto.stringer", Tag: "varint,67008,opt,name=stringer", + Filename: "gogo.proto", } var E_Onlyone = &proto.ExtensionDesc{ @@ -338,6 +412,7 @@ var E_Onlyone = &proto.ExtensionDesc{ Field: 64009, Name: "gogoproto.onlyone", Tag: "varint,64009,opt,name=onlyone", + Filename: "gogo.proto", } var E_Equal = &proto.ExtensionDesc{ @@ -346,6 +421,7 @@ var E_Equal = &proto.ExtensionDesc{ Field: 64013, Name: "gogoproto.equal", Tag: "varint,64013,opt,name=equal", + Filename: "gogo.proto", } var E_Description = &proto.ExtensionDesc{ @@ -354,6 +430,7 @@ var E_Description = &proto.ExtensionDesc{ Field: 64014, Name: "gogoproto.description", Tag: "varint,64014,opt,name=description", + Filename: "gogo.proto", } var E_Testgen = &proto.ExtensionDesc{ @@ -362,6 +439,7 @@ var E_Testgen = &proto.ExtensionDesc{ Field: 64015, Name: "gogoproto.testgen", Tag: "varint,64015,opt,name=testgen", + Filename: "gogo.proto", } var E_Benchgen = &proto.ExtensionDesc{ @@ -370,6 +448,7 @@ var E_Benchgen = &proto.ExtensionDesc{ Field: 64016, Name: "gogoproto.benchgen", Tag: "varint,64016,opt,name=benchgen", + Filename: "gogo.proto", } var E_Marshaler = &proto.ExtensionDesc{ @@ -378,6 +457,7 @@ var E_Marshaler = &proto.ExtensionDesc{ Field: 64017, Name: "gogoproto.marshaler", Tag: "varint,64017,opt,name=marshaler", + Filename: "gogo.proto", } var E_Unmarshaler = &proto.ExtensionDesc{ @@ -386,6 +466,7 @@ var E_Unmarshaler = &proto.ExtensionDesc{ Field: 64018, Name: "gogoproto.unmarshaler", Tag: "varint,64018,opt,name=unmarshaler", + Filename: "gogo.proto", } var E_StableMarshaler = &proto.ExtensionDesc{ @@ -394,6 +475,7 @@ var E_StableMarshaler = &proto.ExtensionDesc{ Field: 64019, Name: "gogoproto.stable_marshaler", Tag: "varint,64019,opt,name=stable_marshaler,json=stableMarshaler", + Filename: "gogo.proto", } var E_Sizer = &proto.ExtensionDesc{ @@ -402,6 +484,7 @@ var E_Sizer = &proto.ExtensionDesc{ Field: 64020, Name: "gogoproto.sizer", Tag: "varint,64020,opt,name=sizer", + Filename: "gogo.proto", } var E_UnsafeMarshaler = &proto.ExtensionDesc{ @@ -410,6 +493,7 @@ var E_UnsafeMarshaler = &proto.ExtensionDesc{ Field: 64023, Name: "gogoproto.unsafe_marshaler", Tag: "varint,64023,opt,name=unsafe_marshaler,json=unsafeMarshaler", + Filename: "gogo.proto", } var E_UnsafeUnmarshaler = &proto.ExtensionDesc{ @@ -418,6 +502,7 @@ var E_UnsafeUnmarshaler = &proto.ExtensionDesc{ Field: 64024, Name: "gogoproto.unsafe_unmarshaler", Tag: "varint,64024,opt,name=unsafe_unmarshaler,json=unsafeUnmarshaler", + Filename: "gogo.proto", } var E_GoprotoExtensionsMap = &proto.ExtensionDesc{ @@ -426,6 +511,7 @@ var E_GoprotoExtensionsMap = &proto.ExtensionDesc{ Field: 64025, Name: "gogoproto.goproto_extensions_map", Tag: "varint,64025,opt,name=goproto_extensions_map,json=goprotoExtensionsMap", + Filename: "gogo.proto", } var E_GoprotoUnrecognized = &proto.ExtensionDesc{ @@ -434,6 +520,7 @@ var E_GoprotoUnrecognized = &proto.ExtensionDesc{ Field: 64026, Name: "gogoproto.goproto_unrecognized", Tag: "varint,64026,opt,name=goproto_unrecognized,json=goprotoUnrecognized", + Filename: "gogo.proto", } var E_Protosizer = &proto.ExtensionDesc{ @@ -442,6 +529,7 @@ var E_Protosizer = &proto.ExtensionDesc{ Field: 64028, Name: "gogoproto.protosizer", Tag: "varint,64028,opt,name=protosizer", + Filename: "gogo.proto", } var E_Compare = &proto.ExtensionDesc{ @@ -450,6 +538,16 @@ var E_Compare = &proto.ExtensionDesc{ Field: 64029, Name: "gogoproto.compare", Tag: "varint,64029,opt,name=compare", + Filename: "gogo.proto", +} + +var E_Typedecl = &proto.ExtensionDesc{ + ExtendedType: (*google_protobuf.MessageOptions)(nil), + ExtensionType: (*bool)(nil), + Field: 64030, + Name: "gogoproto.typedecl", + Tag: "varint,64030,opt,name=typedecl", + Filename: "gogo.proto", } var E_Nullable = &proto.ExtensionDesc{ @@ -458,6 +556,7 @@ var E_Nullable = &proto.ExtensionDesc{ Field: 65001, Name: "gogoproto.nullable", Tag: "varint,65001,opt,name=nullable", + Filename: "gogo.proto", } var E_Embed = &proto.ExtensionDesc{ @@ -466,6 +565,7 @@ var E_Embed = &proto.ExtensionDesc{ Field: 65002, Name: "gogoproto.embed", Tag: "varint,65002,opt,name=embed", + Filename: "gogo.proto", } var E_Customtype = &proto.ExtensionDesc{ @@ -474,6 +574,7 @@ var E_Customtype = &proto.ExtensionDesc{ Field: 65003, Name: "gogoproto.customtype", Tag: "bytes,65003,opt,name=customtype", + Filename: "gogo.proto", } var E_Customname = &proto.ExtensionDesc{ @@ -482,6 +583,7 @@ var E_Customname = &proto.ExtensionDesc{ Field: 65004, Name: "gogoproto.customname", Tag: "bytes,65004,opt,name=customname", + Filename: "gogo.proto", } var E_Jsontag = &proto.ExtensionDesc{ @@ -490,6 +592,7 @@ var E_Jsontag = &proto.ExtensionDesc{ Field: 65005, Name: "gogoproto.jsontag", Tag: "bytes,65005,opt,name=jsontag", + Filename: "gogo.proto", } var E_Moretags = &proto.ExtensionDesc{ @@ -498,6 +601,7 @@ var E_Moretags = &proto.ExtensionDesc{ Field: 65006, Name: "gogoproto.moretags", Tag: "bytes,65006,opt,name=moretags", + Filename: "gogo.proto", } var E_Casttype = &proto.ExtensionDesc{ @@ -506,6 +610,7 @@ var E_Casttype = &proto.ExtensionDesc{ Field: 65007, Name: "gogoproto.casttype", Tag: "bytes,65007,opt,name=casttype", + Filename: "gogo.proto", } var E_Castkey = &proto.ExtensionDesc{ @@ -514,6 +619,7 @@ var E_Castkey = &proto.ExtensionDesc{ Field: 65008, Name: "gogoproto.castkey", Tag: "bytes,65008,opt,name=castkey", + Filename: "gogo.proto", } var E_Castvalue = &proto.ExtensionDesc{ @@ -522,6 +628,7 @@ var E_Castvalue = &proto.ExtensionDesc{ Field: 65009, Name: "gogoproto.castvalue", Tag: "bytes,65009,opt,name=castvalue", + Filename: "gogo.proto", } var E_Stdtime = &proto.ExtensionDesc{ @@ -530,6 +637,7 @@ var E_Stdtime = &proto.ExtensionDesc{ Field: 65010, Name: "gogoproto.stdtime", Tag: "varint,65010,opt,name=stdtime", + Filename: "gogo.proto", } var E_Stdduration = &proto.ExtensionDesc{ @@ -538,6 +646,7 @@ var E_Stdduration = &proto.ExtensionDesc{ Field: 65011, Name: "gogoproto.stdduration", Tag: "varint,65011,opt,name=stdduration", + Filename: "gogo.proto", } func init() { @@ -545,6 +654,7 @@ func init() { proto.RegisterExtension(E_GoprotoEnumStringer) proto.RegisterExtension(E_EnumStringer) proto.RegisterExtension(E_EnumCustomname) + proto.RegisterExtension(E_Enumdecl) proto.RegisterExtension(E_EnumvalueCustomname) proto.RegisterExtension(E_GoprotoGettersAll) proto.RegisterExtension(E_GoprotoEnumPrefixAll) @@ -572,6 +682,9 @@ func init() { proto.RegisterExtension(E_GogoprotoImport) proto.RegisterExtension(E_ProtosizerAll) proto.RegisterExtension(E_CompareAll) + proto.RegisterExtension(E_TypedeclAll) + proto.RegisterExtension(E_EnumdeclAll) + proto.RegisterExtension(E_GoprotoRegistration) proto.RegisterExtension(E_GoprotoGetters) proto.RegisterExtension(E_GoprotoStringer) proto.RegisterExtension(E_VerboseEqual) @@ -594,6 +707,7 @@ func init() { proto.RegisterExtension(E_GoprotoUnrecognized) proto.RegisterExtension(E_Protosizer) proto.RegisterExtension(E_Compare) + proto.RegisterExtension(E_Typedecl) proto.RegisterExtension(E_Nullable) proto.RegisterExtension(E_Embed) proto.RegisterExtension(E_Customtype) @@ -610,76 +724,81 @@ func init() { func init() { proto.RegisterFile("gogo.proto", fileDescriptorGogo) } var fileDescriptorGogo = []byte{ - // 1129 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x97, 0xc9, 0x6f, 0x1c, 0x45, - 0x14, 0x87, 0x85, 0x70, 0x64, 0xcf, 0xf3, 0x86, 0xc7, 0xc6, 0x84, 0x08, 0x44, 0x72, 0xe3, 0xe4, - 0x9c, 0x22, 0x94, 0xb2, 0x22, 0xcb, 0xb1, 0x9c, 0x51, 0x10, 0x86, 0x91, 0x89, 0x03, 0x88, 0xc3, - 0xa8, 0x67, 0xa6, 0xdc, 0x69, 0xe8, 0xee, 0x6a, 0xba, 0xaa, 0xa3, 0x38, 0x37, 0x14, 0x16, 0x21, - 0xc4, 0x8e, 0x04, 0x09, 0x09, 0xcb, 0x81, 0x7d, 0x0d, 0xcb, 0x9d, 0x0b, 0x70, 0xe6, 0x7f, 0xe0, - 0x02, 0x84, 0xdd, 0x37, 0x5f, 0x50, 0x75, 0xbf, 0xd7, 0x53, 0xdd, 0x1e, 0xa9, 0x6a, 0x6e, 0xe3, - 0x71, 0x7d, 0xdf, 0x54, 0xbf, 0x37, 0xf5, 0x7e, 0x53, 0x00, 0xbe, 0xf0, 0xc5, 0x52, 0x92, 0x0a, - 0x25, 0x9a, 0x0d, 0xfd, 0x3a, 0x7f, 0x79, 0xe8, 0xb0, 0x2f, 0x84, 0x1f, 0xf2, 0xa3, 0xf9, 0x5f, - 0xdd, 0x6c, 0xfb, 0x68, 0x9f, 0xcb, 0x5e, 0x1a, 0x24, 0x4a, 0xa4, 0xc5, 0x62, 0x76, 0x3f, 0xcc, - 0xe3, 0xe2, 0x0e, 0x8f, 0xb3, 0xa8, 0x93, 0xa4, 0x7c, 0x3b, 0xb8, 0xd0, 0xbc, 0x63, 0xa9, 0x20, - 0x97, 0x88, 0x5c, 0x5a, 0x8f, 0xb3, 0xe8, 0x81, 0x44, 0x05, 0x22, 0x96, 0x07, 0xaf, 0xff, 0x72, - 0xf3, 0xe1, 0x9b, 0xee, 0x9e, 0xd8, 0x9c, 0x43, 0x54, 0xff, 0xaf, 0x9d, 0x83, 0x6c, 0x13, 0x6e, - 0xad, 0xf8, 0xa4, 0x4a, 0x83, 0xd8, 0xe7, 0xa9, 0xc5, 0xf8, 0x03, 0x1a, 0xe7, 0x0d, 0xe3, 0x83, - 0x88, 0xb2, 0x35, 0x98, 0x1e, 0xc5, 0xf5, 0x23, 0xba, 0xa6, 0xb8, 0x29, 0x69, 0xc1, 0x6c, 0x2e, - 0xe9, 0x65, 0x52, 0x89, 0x28, 0xf6, 0x22, 0x6e, 0xd1, 0xfc, 0x94, 0x6b, 0x1a, 0x9b, 0x33, 0x1a, - 0x5b, 0x2b, 0x29, 0x76, 0x16, 0x16, 0xf4, 0x3b, 0xe7, 0xbd, 0x30, 0xe3, 0xa6, 0xed, 0xc8, 0x50, - 0xdb, 0x59, 0xbd, 0x8c, 0x94, 0x3f, 0x5f, 0x1a, 0xcb, 0x95, 0xf3, 0xa5, 0xc0, 0xf0, 0x1a, 0x9d, - 0xf0, 0xb9, 0x52, 0x3c, 0x95, 0x1d, 0x2f, 0x0c, 0x87, 0x6c, 0xf2, 0x54, 0x10, 0x96, 0xc6, 0xcb, - 0x37, 0xaa, 0x9d, 0x68, 0x15, 0xe4, 0x6a, 0x18, 0xb2, 0x2d, 0xb8, 0x6d, 0x48, 0x67, 0x1d, 0x9c, - 0x57, 0xd0, 0xb9, 0xb0, 0xaf, 0xbb, 0x5a, 0xdb, 0x06, 0x7a, 0xbf, 0xec, 0x87, 0x83, 0xf3, 0x2d, - 0x74, 0x36, 0x91, 0xa5, 0xb6, 0x68, 0xe3, 0xbd, 0x30, 0x77, 0x9e, 0xa7, 0x5d, 0x21, 0x79, 0x87, - 0x3f, 0x91, 0x79, 0xa1, 0x83, 0xee, 0x2a, 0xea, 0x66, 0x11, 0x5c, 0xd7, 0x9c, 0x76, 0x1d, 0x87, - 0x89, 0x6d, 0xaf, 0xc7, 0x1d, 0x14, 0xd7, 0x50, 0x31, 0xae, 0xd7, 0x6b, 0x74, 0x15, 0xa6, 0x7c, - 0x51, 0x3c, 0x92, 0x03, 0xfe, 0x36, 0xe2, 0x93, 0xc4, 0xa0, 0x22, 0x11, 0x49, 0x16, 0x7a, 0xca, - 0x65, 0x07, 0xef, 0x90, 0x82, 0x18, 0x54, 0x8c, 0x50, 0xd6, 0x77, 0x49, 0x21, 0x8d, 0x7a, 0xae, - 0xc0, 0xa4, 0x88, 0xc3, 0x1d, 0x11, 0xbb, 0x6c, 0xe2, 0x3d, 0x34, 0x00, 0x22, 0x5a, 0xb0, 0x0c, - 0x0d, 0xd7, 0x46, 0xbc, 0x8f, 0xf8, 0x04, 0xa7, 0x0e, 0xb4, 0x60, 0x96, 0x86, 0x4c, 0x20, 0x62, - 0x07, 0xc5, 0x07, 0xa8, 0x98, 0x31, 0x30, 0x7c, 0x0c, 0xc5, 0xa5, 0xf2, 0xb9, 0x8b, 0xe4, 0x43, - 0x7a, 0x0c, 0x44, 0xb0, 0x94, 0x5d, 0x1e, 0xf7, 0xce, 0xb9, 0x19, 0x3e, 0xa2, 0x52, 0x12, 0xa3, - 0x15, 0x6b, 0x30, 0x1d, 0x79, 0xa9, 0x3c, 0xe7, 0x85, 0x4e, 0xed, 0xf8, 0x18, 0x1d, 0x53, 0x25, - 0x84, 0x15, 0xc9, 0xe2, 0x51, 0x34, 0x9f, 0x50, 0x45, 0x0c, 0x0c, 0x8f, 0x9e, 0x54, 0x5e, 0x37, - 0xe4, 0x9d, 0x51, 0x6c, 0x9f, 0xd2, 0xd1, 0x2b, 0xd8, 0x0d, 0xd3, 0xb8, 0x0c, 0x0d, 0x19, 0x5c, - 0x74, 0xd2, 0x7c, 0x46, 0x9d, 0xce, 0x01, 0x0d, 0x3f, 0x02, 0xb7, 0x0f, 0x1d, 0xf5, 0x0e, 0xb2, - 0xcf, 0x51, 0xb6, 0x38, 0x64, 0xdc, 0xe3, 0x48, 0x18, 0x55, 0xf9, 0x05, 0x8d, 0x04, 0x5e, 0x73, - 0xb5, 0x61, 0x21, 0x8b, 0xa5, 0xb7, 0x3d, 0x5a, 0xd5, 0xbe, 0xa4, 0xaa, 0x15, 0x6c, 0xa5, 0x6a, - 0x67, 0x60, 0x11, 0x8d, 0xa3, 0xf5, 0xf5, 0x2b, 0x1a, 0xac, 0x05, 0xbd, 0x55, 0xed, 0xee, 0xa3, - 0x70, 0xa8, 0x2c, 0xe7, 0x05, 0xc5, 0x63, 0xa9, 0x99, 0x4e, 0xe4, 0x25, 0x0e, 0xe6, 0xeb, 0x68, - 0xa6, 0x89, 0xbf, 0x5e, 0x0a, 0x36, 0xbc, 0x44, 0xcb, 0x1f, 0x86, 0x83, 0x24, 0xcf, 0xe2, 0x94, - 0xf7, 0x84, 0x1f, 0x07, 0x17, 0x79, 0xdf, 0x41, 0xfd, 0x75, 0xad, 0x55, 0x5b, 0x06, 0xae, 0xcd, - 0xa7, 0xe1, 0x96, 0xf2, 0xf7, 0x46, 0x27, 0x88, 0x12, 0x91, 0x2a, 0x8b, 0xf1, 0x1b, 0xea, 0x54, - 0xc9, 0x9d, 0xce, 0x31, 0xb6, 0x0e, 0x33, 0xf9, 0x9f, 0xae, 0x5f, 0xc9, 0x6f, 0x51, 0x34, 0x3d, - 0xa0, 0x70, 0x70, 0xf4, 0x44, 0x94, 0x78, 0xa9, 0xcb, 0xfc, 0xfb, 0x8e, 0x06, 0x07, 0x22, 0xc5, - 0xb7, 0x6f, 0xb6, 0x96, 0xc4, 0xcd, 0xbb, 0xf6, 0x49, 0x36, 0xb8, 0x94, 0x9e, 0x5f, 0x7a, 0x9e, - 0xdc, 0xc5, 0x33, 0x5b, 0x0d, 0x62, 0x76, 0x9f, 0x2e, 0x4f, 0x35, 0x2e, 0xed, 0xb2, 0x4b, 0xbb, - 0x65, 0x85, 0x2a, 0x69, 0xc9, 0x4e, 0xc1, 0x74, 0x25, 0x2a, 0xed, 0xaa, 0xa7, 0x50, 0x35, 0x65, - 0x26, 0x25, 0x3b, 0x06, 0x63, 0x3a, 0xf6, 0xec, 0xf8, 0xd3, 0x88, 0xe7, 0xcb, 0xd9, 0x09, 0x98, - 0xa0, 0xb8, 0xb3, 0xa3, 0xcf, 0x20, 0x5a, 0x22, 0x1a, 0xa7, 0xa8, 0xb3, 0xe3, 0xcf, 0x12, 0x4e, - 0x88, 0xc6, 0xdd, 0x4b, 0xf8, 0xfd, 0xf3, 0x63, 0x38, 0xae, 0xa8, 0x76, 0xcb, 0x30, 0x8e, 0x19, - 0x67, 0xa7, 0x9f, 0xc3, 0x0f, 0x27, 0x82, 0xdd, 0x03, 0x07, 0x1c, 0x0b, 0xfe, 0x02, 0xa2, 0xc5, - 0x7a, 0xb6, 0x06, 0x93, 0x46, 0xae, 0xd9, 0xf1, 0x17, 0x11, 0x37, 0x29, 0xbd, 0x75, 0xcc, 0x35, - 0xbb, 0xe0, 0x25, 0xda, 0x3a, 0x12, 0xba, 0x6c, 0x14, 0x69, 0x76, 0xfa, 0x65, 0xaa, 0x3a, 0x21, - 0x6c, 0x05, 0x1a, 0xe5, 0x98, 0xb2, 0xf3, 0xaf, 0x20, 0x3f, 0x60, 0x74, 0x05, 0x8c, 0x31, 0x69, - 0x57, 0xbc, 0x4a, 0x15, 0x30, 0x28, 0x7d, 0x8c, 0xea, 0xd1, 0x67, 0x37, 0xbd, 0x46, 0xc7, 0xa8, - 0x96, 0x7c, 0xba, 0x9b, 0xf9, 0xb4, 0xb0, 0x2b, 0x5e, 0xa7, 0x6e, 0xe6, 0xeb, 0xf5, 0x36, 0xea, - 0x59, 0x62, 0x77, 0xbc, 0x41, 0xdb, 0xa8, 0x45, 0x09, 0x6b, 0x43, 0x73, 0x7f, 0x8e, 0xd8, 0x7d, - 0x6f, 0xa2, 0x6f, 0x6e, 0x5f, 0x8c, 0xb0, 0x87, 0x60, 0x71, 0x78, 0x86, 0xd8, 0xad, 0x97, 0x77, - 0x6b, 0xbf, 0xfa, 0xcd, 0x08, 0x61, 0x67, 0x06, 0xbf, 0xfa, 0xcd, 0xfc, 0xb0, 0x6b, 0xaf, 0xec, - 0x56, 0x2f, 0x76, 0x66, 0x7c, 0xb0, 0x55, 0x80, 0xc1, 0xe8, 0xb6, 0xbb, 0xae, 0xa2, 0xcb, 0x80, - 0xf4, 0xd1, 0xc0, 0xc9, 0x6d, 0xe7, 0xaf, 0xd1, 0xd1, 0x40, 0x82, 0x2d, 0xc3, 0x44, 0x9c, 0x85, - 0xa1, 0xfe, 0x72, 0x34, 0xef, 0x1c, 0x12, 0x13, 0x3c, 0xec, 0x13, 0xfb, 0xeb, 0x1e, 0x1e, 0x0c, - 0x02, 0xd8, 0x31, 0x38, 0xc0, 0xa3, 0x2e, 0xef, 0xdb, 0xc8, 0xdf, 0xf6, 0x68, 0x20, 0xe8, 0xd5, - 0x6c, 0x05, 0xa0, 0xb8, 0x34, 0xaa, 0x9d, 0xc4, 0xfa, 0xa9, 0xbf, 0xef, 0x15, 0x77, 0x50, 0x03, - 0x19, 0x08, 0xf2, 0x5b, 0xa7, 0x45, 0x70, 0xa3, 0x2a, 0xc8, 0x2f, 0x9a, 0xc7, 0x61, 0xfc, 0x31, - 0x29, 0x62, 0xe5, 0xf9, 0x36, 0xfa, 0x0f, 0xa4, 0x69, 0xbd, 0x2e, 0x58, 0x24, 0x52, 0xae, 0x3c, - 0x5f, 0xda, 0xd8, 0x3f, 0x91, 0x2d, 0x01, 0x0d, 0xf7, 0x3c, 0xa9, 0x5c, 0x9e, 0xfb, 0x2f, 0x82, - 0x09, 0xd0, 0x9b, 0xd6, 0xaf, 0x1f, 0xe7, 0x3b, 0x36, 0xf6, 0x6f, 0xda, 0x34, 0xae, 0x67, 0x27, - 0xa0, 0xa1, 0x5f, 0xe6, 0xf7, 0x6d, 0x1b, 0xfc, 0x0f, 0xc2, 0x03, 0x42, 0x7f, 0xb2, 0x54, 0x7d, - 0x15, 0xd8, 0x8b, 0xfd, 0x2f, 0x76, 0x9a, 0xd6, 0xb3, 0x55, 0x98, 0x94, 0xaa, 0xdf, 0xcf, 0x52, - 0x2f, 0x1f, 0xfe, 0x16, 0xfc, 0xbf, 0xbd, 0xf2, 0x32, 0x57, 0x32, 0x27, 0x8f, 0xc0, 0x7c, 0x4f, - 0x44, 0x75, 0xf0, 0x24, 0xb4, 0x44, 0x4b, 0xb4, 0xf3, 0x63, 0xf0, 0x7f, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x3f, 0x9b, 0x2b, 0x54, 0xfc, 0x11, 0x00, 0x00, + // 1201 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x98, 0xcb, 0x6f, 0x1c, 0x45, + 0x13, 0xc0, 0xf5, 0xe9, 0x73, 0x64, 0x6f, 0xf9, 0x85, 0xd7, 0xc6, 0x84, 0x08, 0x44, 0x72, 0xe3, + 0xe4, 0x9c, 0x22, 0x94, 0xb6, 0x22, 0xcb, 0xb1, 0x1c, 0x2b, 0x11, 0x06, 0x63, 0xe2, 0x00, 0xe2, + 0xb0, 0x9a, 0xdd, 0x6d, 0x4f, 0x06, 0x66, 0xa6, 0x87, 0x99, 0x9e, 0x28, 0xce, 0x0d, 0x85, 0x87, + 0x10, 0xe2, 0x8d, 0x04, 0x09, 0x49, 0x80, 0x03, 0xef, 0x67, 0x78, 0x1f, 0xb9, 0xf0, 0xb8, 0xf2, + 0x3f, 0x70, 0x01, 0xcc, 0xdb, 0x37, 0x5f, 0x50, 0xcd, 0x56, 0xcd, 0xf6, 0xac, 0x57, 0xea, 0xde, + 0xdb, 0xec, 0xba, 0x7f, 0xbf, 0xad, 0xa9, 0x9a, 0xae, 0xea, 0x31, 0x80, 0xaf, 0x7c, 0x35, 0x97, + 0xa4, 0x4a, 0xab, 0x7a, 0x0d, 0xaf, 0x8b, 0xcb, 0x03, 0x07, 0x7d, 0xa5, 0xfc, 0x50, 0x1e, 0x2e, + 0x3e, 0x35, 0xf3, 0xcd, 0xc3, 0x6d, 0x99, 0xb5, 0xd2, 0x20, 0xd1, 0x2a, 0xed, 0x2c, 0x16, 0x77, + 0xc1, 0x34, 0x2d, 0x6e, 0xc8, 0x38, 0x8f, 0x1a, 0x49, 0x2a, 0x37, 0x83, 0xf3, 0xf5, 0x5b, 0xe6, + 0x3a, 0xe4, 0x1c, 0x93, 0x73, 0xcb, 0x71, 0x1e, 0xdd, 0x9d, 0xe8, 0x40, 0xc5, 0xd9, 0xfe, 0xeb, + 0x3f, 0xff, 0xff, 0xe0, 0xff, 0x6e, 0x1f, 0x59, 0x9f, 0x22, 0x14, 0xff, 0xb6, 0x56, 0x80, 0x62, + 0x1d, 0x6e, 0xac, 0xf8, 0x32, 0x9d, 0x06, 0xb1, 0x2f, 0x53, 0x8b, 0xf1, 0x3b, 0x32, 0x4e, 0x1b, + 0xc6, 0x7b, 0x09, 0x15, 0x4b, 0x30, 0x3e, 0x88, 0xeb, 0x7b, 0x72, 0x8d, 0x49, 0x53, 0xb2, 0x02, + 0x93, 0x85, 0xa4, 0x95, 0x67, 0x5a, 0x45, 0xb1, 0x17, 0x49, 0x8b, 0xe6, 0x87, 0x42, 0x53, 0x5b, + 0x9f, 0x40, 0x6c, 0xa9, 0xa4, 0x84, 0x80, 0x11, 0xfc, 0xa6, 0x2d, 0x5b, 0xa1, 0xc5, 0xf0, 0x23, + 0x05, 0x52, 0xae, 0x17, 0x67, 0x60, 0x06, 0xaf, 0xcf, 0x79, 0x61, 0x2e, 0xcd, 0x48, 0x0e, 0xf5, + 0xf5, 0x9c, 0xc1, 0x65, 0x2c, 0xfb, 0xe9, 0xe2, 0x50, 0x11, 0xce, 0x74, 0x29, 0x30, 0x62, 0x32, + 0xaa, 0xe8, 0x4b, 0xad, 0x65, 0x9a, 0x35, 0xbc, 0xb0, 0x5f, 0x78, 0x27, 0x82, 0xb0, 0x34, 0x5e, + 0xda, 0xae, 0x56, 0x71, 0xa5, 0x43, 0x2e, 0x86, 0xa1, 0xd8, 0x80, 0x9b, 0xfa, 0x3c, 0x15, 0x0e, + 0xce, 0xcb, 0xe4, 0x9c, 0xd9, 0xf3, 0x64, 0xa0, 0x76, 0x0d, 0xf8, 0xfb, 0xb2, 0x96, 0x0e, 0xce, + 0xd7, 0xc8, 0x59, 0x27, 0x96, 0x4b, 0x8a, 0xc6, 0x53, 0x30, 0x75, 0x4e, 0xa6, 0x4d, 0x95, 0xc9, + 0x86, 0x7c, 0x24, 0xf7, 0x42, 0x07, 0xdd, 0x15, 0xd2, 0x4d, 0x12, 0xb8, 0x8c, 0x1c, 0xba, 0x8e, + 0xc2, 0xc8, 0xa6, 0xd7, 0x92, 0x0e, 0x8a, 0xab, 0xa4, 0x18, 0xc6, 0xf5, 0x88, 0x2e, 0xc2, 0x98, + 0xaf, 0x3a, 0xb7, 0xe4, 0x80, 0x5f, 0x23, 0x7c, 0x94, 0x19, 0x52, 0x24, 0x2a, 0xc9, 0x43, 0x4f, + 0xbb, 0x44, 0xf0, 0x3a, 0x2b, 0x98, 0x21, 0xc5, 0x00, 0x69, 0x7d, 0x83, 0x15, 0x99, 0x91, 0xcf, + 0x05, 0x18, 0x55, 0x71, 0xb8, 0xa5, 0x62, 0x97, 0x20, 0xde, 0x24, 0x03, 0x10, 0x82, 0x82, 0x79, + 0xa8, 0xb9, 0x16, 0xe2, 0xad, 0x6d, 0xde, 0x1e, 0x5c, 0x81, 0x15, 0x98, 0xe4, 0x06, 0x15, 0xa8, + 0xd8, 0x41, 0xf1, 0x36, 0x29, 0x26, 0x0c, 0x8c, 0x6e, 0x43, 0xcb, 0x4c, 0xfb, 0xd2, 0x45, 0xf2, + 0x0e, 0xdf, 0x06, 0x21, 0x94, 0xca, 0xa6, 0x8c, 0x5b, 0x67, 0xdd, 0x0c, 0xef, 0x72, 0x2a, 0x99, + 0x41, 0xc5, 0x12, 0x8c, 0x47, 0x5e, 0x9a, 0x9d, 0xf5, 0x42, 0xa7, 0x72, 0xbc, 0x47, 0x8e, 0xb1, + 0x12, 0xa2, 0x8c, 0xe4, 0xf1, 0x20, 0x9a, 0xf7, 0x39, 0x23, 0x06, 0x46, 0x5b, 0x2f, 0xd3, 0x5e, + 0x33, 0x94, 0x8d, 0x41, 0x6c, 0x1f, 0xf0, 0xd6, 0xeb, 0xb0, 0xab, 0xa6, 0x71, 0x1e, 0x6a, 0x59, + 0x70, 0xc1, 0x49, 0xf3, 0x21, 0x57, 0xba, 0x00, 0x10, 0x7e, 0x00, 0x6e, 0xee, 0x3b, 0x26, 0x1c, + 0x64, 0x1f, 0x91, 0x6c, 0xb6, 0xcf, 0xa8, 0xa0, 0x96, 0x30, 0xa8, 0xf2, 0x63, 0x6e, 0x09, 0xb2, + 0xc7, 0xb5, 0x06, 0x33, 0x79, 0x9c, 0x79, 0x9b, 0x83, 0x65, 0xed, 0x13, 0xce, 0x5a, 0x87, 0xad, + 0x64, 0xed, 0x34, 0xcc, 0x92, 0x71, 0xb0, 0xba, 0x7e, 0xca, 0x8d, 0xb5, 0x43, 0x6f, 0x54, 0xab, + 0xfb, 0x20, 0x1c, 0x28, 0xd3, 0x79, 0x5e, 0xcb, 0x38, 0x43, 0xa6, 0x11, 0x79, 0x89, 0x83, 0xf9, + 0x3a, 0x99, 0xb9, 0xe3, 0x2f, 0x97, 0x82, 0x55, 0x2f, 0x41, 0xf9, 0xfd, 0xb0, 0x9f, 0xe5, 0x79, + 0x9c, 0xca, 0x96, 0xf2, 0xe3, 0xe0, 0x82, 0x6c, 0x3b, 0xa8, 0x3f, 0xeb, 0x29, 0xd5, 0x86, 0x81, + 0xa3, 0xf9, 0x24, 0xdc, 0x50, 0x9e, 0x55, 0x1a, 0x41, 0x94, 0xa8, 0x54, 0x5b, 0x8c, 0x9f, 0x73, + 0xa5, 0x4a, 0xee, 0x64, 0x81, 0x89, 0x65, 0x98, 0x28, 0x3e, 0xba, 0x3e, 0x92, 0x5f, 0x90, 0x68, + 0xbc, 0x4b, 0x51, 0xe3, 0x68, 0xa9, 0x28, 0xf1, 0x52, 0x97, 0xfe, 0xf7, 0x25, 0x37, 0x0e, 0x42, + 0xa8, 0x71, 0xe8, 0xad, 0x44, 0xe2, 0xb4, 0x77, 0x30, 0x7c, 0xc5, 0x8d, 0x83, 0x19, 0x52, 0xf0, + 0x81, 0xc1, 0x41, 0xf1, 0x35, 0x2b, 0x98, 0x41, 0xc5, 0x3d, 0xdd, 0x41, 0x9b, 0x4a, 0x3f, 0xc8, + 0x74, 0xea, 0xe1, 0x6a, 0x8b, 0xea, 0x9b, 0xed, 0xea, 0x21, 0x6c, 0xdd, 0x40, 0xc5, 0x29, 0x98, + 0xec, 0x39, 0x62, 0xd4, 0x6f, 0xdb, 0x63, 0x5b, 0x95, 0x59, 0xe6, 0xf9, 0xa5, 0xf0, 0xd1, 0x1d, + 0x6a, 0x46, 0xd5, 0x13, 0x86, 0xb8, 0x13, 0xeb, 0x5e, 0x3d, 0x07, 0xd8, 0x65, 0x17, 0x77, 0xca, + 0xd2, 0x57, 0x8e, 0x01, 0xe2, 0x04, 0x8c, 0x57, 0xce, 0x00, 0x76, 0xd5, 0x63, 0xa4, 0x1a, 0x33, + 0x8f, 0x00, 0xe2, 0x08, 0x0c, 0xe1, 0x3c, 0xb7, 0xe3, 0x8f, 0x13, 0x5e, 0x2c, 0x17, 0xc7, 0x60, + 0x84, 0xe7, 0xb8, 0x1d, 0x7d, 0x82, 0xd0, 0x12, 0x41, 0x9c, 0x67, 0xb8, 0x1d, 0x7f, 0x92, 0x71, + 0x46, 0x10, 0x77, 0x4f, 0xe1, 0xb7, 0x4f, 0x0f, 0x51, 0x1f, 0xe6, 0xdc, 0xcd, 0xc3, 0x30, 0x0d, + 0x6f, 0x3b, 0xfd, 0x14, 0xfd, 0x38, 0x13, 0xe2, 0x0e, 0xd8, 0xe7, 0x98, 0xf0, 0x67, 0x08, 0xed, + 0xac, 0x17, 0x4b, 0x30, 0x6a, 0x0c, 0x6c, 0x3b, 0xfe, 0x2c, 0xe1, 0x26, 0x85, 0xa1, 0xd3, 0xc0, + 0xb6, 0x0b, 0x9e, 0xe3, 0xd0, 0x89, 0xc0, 0xb4, 0xf1, 0xac, 0xb6, 0xd3, 0xcf, 0x73, 0xd6, 0x19, + 0x11, 0x0b, 0x50, 0x2b, 0xfb, 0xaf, 0x9d, 0x7f, 0x81, 0xf8, 0x2e, 0x83, 0x19, 0x30, 0xfa, 0xbf, + 0x5d, 0xf1, 0x22, 0x67, 0xc0, 0xa0, 0x70, 0x1b, 0xf5, 0xce, 0x74, 0xbb, 0xe9, 0x25, 0xde, 0x46, + 0x3d, 0x23, 0x1d, 0xab, 0x59, 0xb4, 0x41, 0xbb, 0xe2, 0x65, 0xae, 0x66, 0xb1, 0x1e, 0xc3, 0xe8, + 0x1d, 0x92, 0x76, 0xc7, 0x2b, 0x1c, 0x46, 0xcf, 0x8c, 0x14, 0x6b, 0x50, 0xdf, 0x3b, 0x20, 0xed, + 0xbe, 0x57, 0xc9, 0x37, 0xb5, 0x67, 0x3e, 0x8a, 0xfb, 0x60, 0xb6, 0xff, 0x70, 0xb4, 0x5b, 0x2f, + 0xed, 0xf4, 0xbc, 0xce, 0x98, 0xb3, 0x51, 0x9c, 0xee, 0x76, 0x59, 0x73, 0x30, 0xda, 0xb5, 0x97, + 0x77, 0xaa, 0x8d, 0xd6, 0x9c, 0x8b, 0x62, 0x11, 0xa0, 0x3b, 0x93, 0xec, 0xae, 0x2b, 0xe4, 0x32, + 0x20, 0xdc, 0x1a, 0x34, 0x92, 0xec, 0xfc, 0x55, 0xde, 0x1a, 0x44, 0xe0, 0xd6, 0xe0, 0x69, 0x64, + 0xa7, 0xaf, 0xf1, 0xd6, 0x60, 0x44, 0xcc, 0xc3, 0x48, 0x9c, 0x87, 0x21, 0x3e, 0x5b, 0xf5, 0x5b, + 0xfb, 0x8c, 0x1b, 0x19, 0xb6, 0x19, 0xfe, 0x65, 0x97, 0x60, 0x06, 0xc4, 0x11, 0xd8, 0x27, 0xa3, + 0xa6, 0x6c, 0xdb, 0xc8, 0x5f, 0x77, 0xb9, 0x9f, 0xe0, 0x6a, 0xb1, 0x00, 0xd0, 0x79, 0x99, 0xc6, + 0x28, 0x6c, 0xec, 0x6f, 0xbb, 0x9d, 0xf7, 0x7a, 0x03, 0xe9, 0x0a, 0x8a, 0xb7, 0x71, 0x8b, 0x60, + 0xbb, 0x2a, 0x28, 0x5e, 0xc0, 0x8f, 0xc2, 0xf0, 0x43, 0x99, 0x8a, 0xb5, 0xe7, 0xdb, 0xe8, 0xdf, + 0x89, 0xe6, 0xf5, 0x98, 0xb0, 0x48, 0xa5, 0x52, 0x7b, 0x7e, 0x66, 0x63, 0xff, 0x20, 0xb6, 0x04, + 0x10, 0x6e, 0x79, 0x99, 0x76, 0xb9, 0xef, 0x3f, 0x19, 0x66, 0x00, 0x83, 0xc6, 0xeb, 0x87, 0xe5, + 0x96, 0x8d, 0xfd, 0x8b, 0x83, 0xa6, 0xf5, 0xe2, 0x18, 0xd4, 0xf0, 0xb2, 0xf8, 0x3f, 0x84, 0x0d, + 0xfe, 0x9b, 0xe0, 0x2e, 0x81, 0xbf, 0x9c, 0xe9, 0xb6, 0x0e, 0xec, 0xc9, 0xfe, 0x87, 0x2a, 0xcd, + 0xeb, 0xc5, 0x22, 0x8c, 0x66, 0xba, 0xdd, 0xce, 0xe9, 0x44, 0x63, 0xc1, 0xff, 0xdd, 0x2d, 0x5f, + 0x72, 0x4b, 0xe6, 0xf8, 0x21, 0x98, 0x6e, 0xa9, 0xa8, 0x17, 0x3c, 0x0e, 0x2b, 0x6a, 0x45, 0xad, + 0x15, 0xbb, 0xe8, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0a, 0x9c, 0xec, 0xd8, 0x50, 0x13, 0x00, + 0x00, } diff --git a/components/engine/vendor/github.com/gogo/protobuf/gogoproto/gogo.proto b/components/engine/vendor/github.com/gogo/protobuf/gogoproto/gogo.proto index 0da211a8e3..fbca44cd48 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/gogoproto/gogo.proto +++ b/components/engine/vendor/github.com/gogo/protobuf/gogoproto/gogo.proto @@ -39,6 +39,7 @@ extend google.protobuf.EnumOptions { optional bool goproto_enum_stringer = 62021; optional bool enum_stringer = 62022; optional string enum_customname = 62023; + optional bool enumdecl = 62024; } extend google.protobuf.EnumValueOptions { @@ -77,6 +78,10 @@ extend google.protobuf.FileOptions { optional bool gogoproto_import = 63027; optional bool protosizer_all = 63028; optional bool compare_all = 63029; + optional bool typedecl_all = 63030; + optional bool enumdecl_all = 63031; + + optional bool goproto_registration = 63032; } extend google.protobuf.MessageOptions { @@ -107,6 +112,8 @@ extend google.protobuf.MessageOptions { optional bool protosizer = 64028; optional bool compare = 64029; + + optional bool typedecl = 64030; } extend google.protobuf.FieldOptions { diff --git a/components/engine/vendor/github.com/gogo/protobuf/gogoproto/helper.go b/components/engine/vendor/github.com/gogo/protobuf/gogoproto/helper.go index bb5fff48b5..6b851c5623 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/gogoproto/helper.go +++ b/components/engine/vendor/github.com/gogo/protobuf/gogoproto/helper.go @@ -90,6 +90,14 @@ func IsCastValue(field *google_protobuf.FieldDescriptorProto) bool { return false } +func HasEnumDecl(file *google_protobuf.FileDescriptorProto, enum *google_protobuf.EnumDescriptorProto) bool { + return proto.GetBoolExtension(enum.Options, E_Enumdecl, proto.GetBoolExtension(file.Options, E_EnumdeclAll, true)) +} + +func HasTypeDecl(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { + return proto.GetBoolExtension(message.Options, E_Typedecl, proto.GetBoolExtension(file.Options, E_TypedeclAll, true)) +} + func GetCustomType(field *google_protobuf.FieldDescriptorProto) string { if field == nil { return "" @@ -343,3 +351,7 @@ func ImportsGoGoProto(file *google_protobuf.FileDescriptorProto) bool { func HasCompare(file *google_protobuf.FileDescriptorProto, message *google_protobuf.DescriptorProto) bool { return proto.GetBoolExtension(message.Options, E_Compare, proto.GetBoolExtension(file.Options, E_CompareAll, false)) } + +func RegistersGolangProto(file *google_protobuf.FileDescriptorProto) bool { + return proto.GetBoolExtension(file.Options, E_GoprotoRegistration, false) +} diff --git a/components/engine/vendor/github.com/gogo/protobuf/proto/decode_gogo.go b/components/engine/vendor/github.com/gogo/protobuf/proto/decode_gogo.go index ecc63873e4..6fb74de4cc 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/proto/decode_gogo.go +++ b/components/engine/vendor/github.com/gogo/protobuf/proto/decode_gogo.go @@ -98,7 +98,7 @@ func setPtrCustomType(base structPointer, f field, v interface{}) { if v == nil { return } - structPointer_SetStructPointer(base, f, structPointer(reflect.ValueOf(v).Pointer())) + structPointer_SetStructPointer(base, f, toStructPointer(reflect.ValueOf(v))) } func setCustomType(base structPointer, f field, value interface{}) { @@ -165,7 +165,8 @@ func (o *Buffer) dec_custom_slice_bytes(p *Properties, base structPointer) error } newBas := appendStructPointer(base, p.field, p.ctype) - setCustomType(newBas, 0, custom) + var zero field + setCustomType(newBas, zero, custom) return nil } diff --git a/components/engine/vendor/github.com/gogo/protobuf/proto/duration_gogo.go b/components/engine/vendor/github.com/gogo/protobuf/proto/duration_gogo.go index a93cb9d12d..18e2a5f776 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/proto/duration_gogo.go +++ b/components/engine/vendor/github.com/gogo/protobuf/proto/duration_gogo.go @@ -84,7 +84,8 @@ func (o *Buffer) dec_slice_duration(p *Properties, base structPointer) error { return err } newBas := appendStructPointer(base, p.field, reflect.SliceOf(reflect.PtrTo(durationType))) - setPtrCustomType(newBas, 0, &d) + var zero field + setPtrCustomType(newBas, zero, &d) return nil } diff --git a/components/engine/vendor/github.com/gogo/protobuf/proto/encode.go b/components/engine/vendor/github.com/gogo/protobuf/proto/encode.go index 68b9b30cfa..2b30f84626 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/proto/encode.go +++ b/components/engine/vendor/github.com/gogo/protobuf/proto/encode.go @@ -1075,10 +1075,17 @@ func (o *Buffer) enc_map(p *Properties, base structPointer) error { func (o *Buffer) enc_exts(p *Properties, base structPointer) error { exts := structPointer_Extensions(base, p.field) - if err := encodeExtensions(exts); err != nil { + + v, mu := exts.extensionsRead() + if v == nil { + return nil + } + + mu.Lock() + defer mu.Unlock() + if err := encodeExtensionsMap(v); err != nil { return err } - v, _ := exts.extensionsRead() return o.enc_map_body(v) } diff --git a/components/engine/vendor/github.com/gogo/protobuf/proto/encode_gogo.go b/components/engine/vendor/github.com/gogo/protobuf/proto/encode_gogo.go index 66e7e16303..32111b7f41 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/proto/encode_gogo.go +++ b/components/engine/vendor/github.com/gogo/protobuf/proto/encode_gogo.go @@ -196,12 +196,10 @@ func size_ref_struct_message(p *Properties, base structPointer) int { // Encode a slice of references to message struct pointers ([]struct). func (o *Buffer) enc_slice_ref_struct_message(p *Properties, base structPointer) error { var state errorState - ss := structPointer_GetStructPointer(base, p.field) - ss1 := structPointer_GetRefStructPointer(ss, field(0)) - size := p.stype.Size() - l := structPointer_Len(base, p.field) + ss := structPointer_StructRefSlice(base, p.field, p.stype.Size()) + l := ss.Len() for i := 0; i < l; i++ { - structp := structPointer_Add(ss1, field(uintptr(i)*size)) + structp := ss.Index(i) if structPointer_IsNil(structp) { return errRepeatedHasNil } @@ -233,13 +231,11 @@ func (o *Buffer) enc_slice_ref_struct_message(p *Properties, base structPointer) //TODO this is only copied, please fix this func size_slice_ref_struct_message(p *Properties, base structPointer) (n int) { - ss := structPointer_GetStructPointer(base, p.field) - ss1 := structPointer_GetRefStructPointer(ss, field(0)) - size := p.stype.Size() - l := structPointer_Len(base, p.field) + ss := structPointer_StructRefSlice(base, p.field, p.stype.Size()) + l := ss.Len() n += l * len(p.tagcode) for i := 0; i < l; i++ { - structp := structPointer_Add(ss1, field(uintptr(i)*size)) + structp := ss.Index(i) if structPointer_IsNil(structp) { return // return the size up to this point } diff --git a/components/engine/vendor/github.com/gogo/protobuf/proto/extensions.go b/components/engine/vendor/github.com/gogo/protobuf/proto/extensions.go index 5ab5e4c8de..0dfcb538e8 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/proto/extensions.go +++ b/components/engine/vendor/github.com/gogo/protobuf/proto/extensions.go @@ -167,6 +167,7 @@ type ExtensionDesc struct { Field int32 // field number Name string // fully-qualified name of extension, for text formatting Tag string // protobuf tag style + Filename string // name of the file in which the extension is defined } func (ed *ExtensionDesc) repeated() bool { diff --git a/components/engine/vendor/github.com/gogo/protobuf/proto/pointer_reflect_gogo.go b/components/engine/vendor/github.com/gogo/protobuf/proto/pointer_reflect_gogo.go new file mode 100644 index 0000000000..1763a5f227 --- /dev/null +++ b/components/engine/vendor/github.com/gogo/protobuf/proto/pointer_reflect_gogo.go @@ -0,0 +1,85 @@ +// Protocol Buffers for Go with Gadgets +// +// Copyright (c) 2016, The GoGo Authors. All rights reserved. +// http://github.com/gogo/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// +build appengine js + +package proto + +import ( + "reflect" +) + +func structPointer_FieldPointer(p structPointer, f field) structPointer { + panic("not implemented") +} + +func appendStructPointer(base structPointer, f field, typ reflect.Type) structPointer { + panic("not implemented") +} + +func structPointer_InterfaceAt(p structPointer, f field, t reflect.Type) interface{} { + panic("not implemented") +} + +func structPointer_InterfaceRef(p structPointer, f field, t reflect.Type) interface{} { + panic("not implemented") +} + +func structPointer_GetRefStructPointer(p structPointer, f field) structPointer { + panic("not implemented") +} + +func structPointer_Add(p structPointer, size field) structPointer { + panic("not implemented") +} + +func structPointer_Len(p structPointer, f field) int { + panic("not implemented") +} + +func structPointer_GetSliceHeader(p structPointer, f field) *reflect.SliceHeader { + panic("not implemented") +} + +func structPointer_Copy(oldptr structPointer, newptr structPointer, size int) { + panic("not implemented") +} + +func structPointer_StructRefSlice(p structPointer, f field, size uintptr) *structRefSlice { + panic("not implemented") +} + +type structRefSlice struct{} + +func (v *structRefSlice) Len() int { + panic("not implemented") +} + +func (v *structRefSlice) Index(i int) structPointer { + panic("not implemented") +} diff --git a/components/engine/vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go b/components/engine/vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go index ad7c851793..f156a29f0e 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go +++ b/components/engine/vendor/github.com/gogo/protobuf/proto/pointer_unsafe_gogo.go @@ -26,7 +26,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// +build !appengine +// +build !appengine,!js // This file contains the implementation of the proto field accesses using package unsafe. @@ -105,3 +105,24 @@ func structPointer_Add(p structPointer, size field) structPointer { func structPointer_Len(p structPointer, f field) int { return len(*(*[]interface{})(unsafe.Pointer(structPointer_GetRefStructPointer(p, f)))) } + +func structPointer_StructRefSlice(p structPointer, f field, size uintptr) *structRefSlice { + return &structRefSlice{p: p, f: f, size: size} +} + +// A structRefSlice represents a slice of structs (themselves submessages or groups). +type structRefSlice struct { + p structPointer + f field + size uintptr +} + +func (v *structRefSlice) Len() int { + return structPointer_Len(v.p, v.f) +} + +func (v *structRefSlice) Index(i int) structPointer { + ss := structPointer_GetStructPointer(v.p, v.f) + ss1 := structPointer_GetRefStructPointer(ss, 0) + return structPointer_Add(ss1, field(uintptr(i)*v.size)) +} diff --git a/components/engine/vendor/github.com/gogo/protobuf/proto/timestamp_gogo.go b/components/engine/vendor/github.com/gogo/protobuf/proto/timestamp_gogo.go index 526ccf3a29..d427647436 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/proto/timestamp_gogo.go +++ b/components/engine/vendor/github.com/gogo/protobuf/proto/timestamp_gogo.go @@ -84,7 +84,8 @@ func (o *Buffer) dec_slice_time(p *Properties, base structPointer) error { return err } newBas := appendStructPointer(base, p.field, reflect.SliceOf(reflect.PtrTo(timeType))) - setPtrCustomType(newBas, 0, &t) + var zero field + setPtrCustomType(newBas, zero, &t) return nil } @@ -94,7 +95,8 @@ func (o *Buffer) dec_slice_ref_time(p *Properties, base structPointer) error { return err } newBas := appendStructPointer(base, p.field, reflect.SliceOf(timeType)) - setCustomType(newBas, 0, &t) + var zero field + setCustomType(newBas, zero, &t) return nil } diff --git a/components/engine/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.go b/components/engine/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.go new file mode 100644 index 0000000000..a85bf1984c --- /dev/null +++ b/components/engine/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.go @@ -0,0 +1,118 @@ +// Go support for Protocol Buffers - Google's data interchange format +// +// Copyright 2016 The Go Authors. All rights reserved. +// https://github.com/golang/protobuf +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Package descriptor provides functions for obtaining protocol buffer +// descriptors for generated Go types. +// +// These functions cannot go in package proto because they depend on the +// generated protobuf descriptor messages, which themselves depend on proto. +package descriptor + +import ( + "bytes" + "compress/gzip" + "fmt" + "io/ioutil" + + "github.com/gogo/protobuf/proto" +) + +// extractFile extracts a FileDescriptorProto from a gzip'd buffer. +func extractFile(gz []byte) (*FileDescriptorProto, error) { + r, err := gzip.NewReader(bytes.NewReader(gz)) + if err != nil { + return nil, fmt.Errorf("failed to open gzip reader: %v", err) + } + defer r.Close() + + b, err := ioutil.ReadAll(r) + if err != nil { + return nil, fmt.Errorf("failed to uncompress descriptor: %v", err) + } + + fd := new(FileDescriptorProto) + if err := proto.Unmarshal(b, fd); err != nil { + return nil, fmt.Errorf("malformed FileDescriptorProto: %v", err) + } + + return fd, nil +} + +// Message is a proto.Message with a method to return its descriptor. +// +// Message types generated by the protocol compiler always satisfy +// the Message interface. +type Message interface { + proto.Message + Descriptor() ([]byte, []int) +} + +// ForMessage returns a FileDescriptorProto and a DescriptorProto from within it +// describing the given message. +func ForMessage(msg Message) (fd *FileDescriptorProto, md *DescriptorProto) { + gz, path := msg.Descriptor() + fd, err := extractFile(gz) + if err != nil { + panic(fmt.Sprintf("invalid FileDescriptorProto for %T: %v", msg, err)) + } + + md = fd.MessageType[path[0]] + for _, i := range path[1:] { + md = md.NestedType[i] + } + return fd, md +} + +// Is this field a scalar numeric type? +func (field *FieldDescriptorProto) IsScalar() bool { + if field.Type == nil { + return false + } + switch *field.Type { + case FieldDescriptorProto_TYPE_DOUBLE, + FieldDescriptorProto_TYPE_FLOAT, + FieldDescriptorProto_TYPE_INT64, + FieldDescriptorProto_TYPE_UINT64, + FieldDescriptorProto_TYPE_INT32, + FieldDescriptorProto_TYPE_FIXED64, + FieldDescriptorProto_TYPE_FIXED32, + FieldDescriptorProto_TYPE_BOOL, + FieldDescriptorProto_TYPE_UINT32, + FieldDescriptorProto_TYPE_ENUM, + FieldDescriptorProto_TYPE_SFIXED32, + FieldDescriptorProto_TYPE_SFIXED64, + FieldDescriptorProto_TYPE_SINT32, + FieldDescriptorProto_TYPE_SINT64: + return true + default: + return false + } +} diff --git a/components/engine/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go b/components/engine/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go index 6c4d80f5fd..1427b03588 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go +++ b/components/engine/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/descriptor.pb.go @@ -1942,7 +1942,7 @@ func init() { proto.RegisterFile("descriptor.proto", fileDescriptorDescriptor) } var fileDescriptorDescriptor = []byte{ // 2273 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x59, 0xcd, 0x6f, 0xdb, 0xc8, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0xcd, 0x6f, 0xdb, 0xc8, 0x15, 0x5f, 0xea, 0xcb, 0xd2, 0x93, 0x2c, 0x8f, 0xc7, 0xde, 0x84, 0x71, 0x36, 0x1b, 0x47, 0x9b, 0x34, 0x4e, 0xd2, 0x3a, 0x0b, 0xe7, 0x63, 0xb3, 0xde, 0x62, 0x0b, 0x59, 0x62, 0xbc, 0x0a, 0x64, 0x4b, 0xa5, 0xec, 0x36, 0xbb, 0x3d, 0x10, 0x63, 0x72, 0x24, 0x33, 0xa1, 0x86, 0x2c, 0x49, 0x25, diff --git a/components/engine/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/helper.go b/components/engine/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/helper.go index 861f4d028d..e0846a357d 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/helper.go +++ b/components/engine/vendor/github.com/gogo/protobuf/protoc-gen-gogo/descriptor/helper.go @@ -99,6 +99,17 @@ func (field *FieldDescriptorProto) GetKeyUint64() (x uint64) { return x } +func (field *FieldDescriptorProto) GetKey3Uint64() (x uint64) { + packed := field.IsPacked3() + wireType := field.WireType() + fieldNumber := field.GetNumber() + if packed { + wireType = 2 + } + x = uint64(uint32(fieldNumber)<<3 | uint32(wireType)) + return x +} + func (field *FieldDescriptorProto) GetKey() []byte { x := field.GetKeyUint64() i := 0 @@ -111,6 +122,18 @@ func (field *FieldDescriptorProto) GetKey() []byte { return keybuf } +func (field *FieldDescriptorProto) GetKey3() []byte { + x := field.GetKey3Uint64() + i := 0 + keybuf := make([]byte, 0) + for i = 0; x > 127; i++ { + keybuf = append(keybuf, 0x80|uint8(x&0x7F)) + x >>= 7 + } + keybuf = append(keybuf, uint8(x)) + return keybuf +} + func (desc *FileDescriptorSet) GetField(packageName, messageName, fieldName string) *FieldDescriptorProto { msg := desc.GetMessage(packageName, messageName) if msg == nil { @@ -352,6 +375,16 @@ func (f *FieldDescriptorProto) IsPacked() bool { return f.Options != nil && f.GetOptions().GetPacked() } +func (f *FieldDescriptorProto) IsPacked3() bool { + if f.IsRepeated() && f.IsScalar() { + if f.Options == nil || f.GetOptions().Packed == nil { + return true + } + return f.Options != nil && f.GetOptions().GetPacked() + } + return false +} + func (m *DescriptorProto) HasExtension() bool { return len(m.ExtensionRange) > 0 } diff --git a/components/engine/vendor/github.com/gogo/protobuf/types/any.pb.go b/components/engine/vendor/github.com/gogo/protobuf/types/any.pb.go index 366402f007..50e9b364a9 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/types/any.pb.go +++ b/components/engine/vendor/github.com/gogo/protobuf/types/any.pb.go @@ -20,9 +20,6 @@ import math "math" import bytes "bytes" import strings "strings" -import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" -import sort "sort" -import strconv "strconv" import reflect "reflect" import io "io" @@ -141,9 +138,59 @@ func (*Any) ProtoMessage() {} func (*Any) Descriptor() ([]byte, []int) { return fileDescriptorAny, []int{0} } func (*Any) XXX_WellKnownType() string { return "Any" } +func (m *Any) GetTypeUrl() string { + if m != nil { + return m.TypeUrl + } + return "" +} + +func (m *Any) GetValue() []byte { + if m != nil { + return m.Value + } + return nil +} + func init() { proto.RegisterType((*Any)(nil), "google.protobuf.Any") } +func (this *Any) Compare(that interface{}) int { + if that == nil { + if this == nil { + return 0 + } + return 1 + } + + that1, ok := that.(*Any) + if !ok { + that2, ok := that.(Any) + if ok { + that1 = &that2 + } else { + return 1 + } + } + if that1 == nil { + if this == nil { + return 0 + } + return 1 + } else if this == nil { + return -1 + } + if this.TypeUrl != that1.TypeUrl { + if this.TypeUrl < that1.TypeUrl { + return -1 + } + return 1 + } + if c := bytes.Compare(this.Value, that1.Value); c != 0 { + return c + } + return 0 +} func (this *Any) Equal(that interface{}) bool { if that == nil { if this == nil { @@ -196,24 +243,6 @@ func valueToGoStringAny(v interface{}, typ string) string { pv := reflect.Indirect(rv).Interface() return fmt.Sprintf("func(v %v) *%v { return &v } ( %#v )", typ, typ, pv) } -func extensionToGoStringAny(m github_com_gogo_protobuf_proto.Message) string { - e := github_com_gogo_protobuf_proto.GetUnsafeExtensionsMap(m) - if e == nil { - return "nil" - } - s := "proto.NewUnsafeXXX_InternalExtensions(map[int32]proto.Extension{" - keys := make([]int, 0, len(e)) - for k := range e { - keys = append(keys, int(k)) - } - sort.Ints(keys) - ss := []string{} - for _, k := range keys { - ss = append(ss, strconv.Itoa(k)+": "+e[int32(k)].GoString()) - } - s += strings.Join(ss, ",") + "})" - return s -} func (m *Any) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -620,18 +649,18 @@ var ( func init() { proto.RegisterFile("any.proto", fileDescriptorAny) } var fileDescriptorAny = []byte{ - // 206 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x4c, 0xcc, 0xab, 0xd4, + // 208 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x4c, 0xcc, 0xab, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x4f, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0x85, 0xf0, 0x92, 0x4a, 0xd3, 0x94, 0xcc, 0xb8, 0x98, 0x1d, 0xf3, 0x2a, 0x85, 0x24, 0xb9, 0x38, 0x4a, 0x2a, 0x0b, 0x52, 0xe3, 0x4b, 0x8b, 0x72, 0x24, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0xd8, 0x41, 0xfc, 0xd0, 0xa2, 0x1c, 0x21, 0x11, 0x2e, 0xd6, 0xb2, 0xc4, 0x9c, 0xd2, 0x54, 0x09, 0x26, 0x05, 0x46, 0x0d, - 0x9e, 0x20, 0x08, 0xc7, 0xa9, 0xee, 0xc2, 0x43, 0x39, 0x86, 0x1b, 0x0f, 0xe5, 0x18, 0x3e, 0x3c, - 0x94, 0x63, 0xfc, 0xf1, 0x50, 0x8e, 0xb1, 0xe1, 0x91, 0x1c, 0xe3, 0x8a, 0x47, 0x72, 0x8c, 0x27, - 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x8b, 0x47, 0x72, 0x0c, - 0x1f, 0x1e, 0xc9, 0x31, 0x72, 0x09, 0x27, 0xe7, 0xe7, 0xea, 0xa1, 0x59, 0xed, 0xc4, 0xe1, 0x98, - 0x57, 0x19, 0x00, 0xe2, 0x04, 0x30, 0x46, 0xb1, 0x82, 0x6c, 0x2b, 0x5e, 0xc0, 0xc8, 0xb8, 0x88, - 0x89, 0xd9, 0x3d, 0xc0, 0x69, 0x15, 0x93, 0x9c, 0x3b, 0x44, 0x75, 0x00, 0x54, 0xb5, 0x5e, 0x78, - 0x6a, 0x4e, 0x8e, 0x77, 0x5e, 0x7e, 0x79, 0x5e, 0x08, 0x48, 0x65, 0x12, 0x1b, 0xd8, 0x18, 0x63, - 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x90, 0x29, 0x9f, 0xdc, 0x00, 0x00, 0x00, + 0x9e, 0x20, 0x08, 0xc7, 0xa9, 0x89, 0xf1, 0xc2, 0x43, 0x39, 0x86, 0x1b, 0x0f, 0xe5, 0x18, 0x3e, + 0x3c, 0x94, 0x63, 0xfc, 0xf1, 0x50, 0x8e, 0xb1, 0xe1, 0x91, 0x1c, 0xe3, 0x8a, 0x47, 0x72, 0x8c, + 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x8b, 0x47, 0x72, + 0x0c, 0x1f, 0x40, 0xe2, 0x8f, 0xe5, 0x18, 0xb9, 0x84, 0x93, 0xf3, 0x73, 0xf5, 0xd0, 0xec, 0x77, + 0xe2, 0x70, 0xcc, 0xab, 0x0c, 0x00, 0x71, 0x02, 0x18, 0xa3, 0x58, 0x41, 0x56, 0x16, 0x2f, 0x60, + 0x64, 0x5c, 0xc4, 0xc4, 0xec, 0x1e, 0xe0, 0xb4, 0x8a, 0x49, 0xce, 0x1d, 0xa2, 0x3a, 0x00, 0xaa, + 0x5a, 0x2f, 0x3c, 0x35, 0x27, 0xc7, 0x3b, 0x2f, 0xbf, 0x3c, 0x2f, 0x04, 0xa4, 0x32, 0x89, 0x0d, + 0x6c, 0x8c, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x63, 0x5d, 0x2d, 0x27, 0xe1, 0x00, 0x00, 0x00, } diff --git a/components/engine/vendor/github.com/gogo/protobuf/types/duration.pb.go b/components/engine/vendor/github.com/gogo/protobuf/types/duration.pb.go index f56527858a..06b7aea1bc 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/types/duration.pb.go +++ b/components/engine/vendor/github.com/gogo/protobuf/types/duration.pb.go @@ -18,9 +18,6 @@ import fmt "fmt" import math "math" import strings "strings" -import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" -import sort "sort" -import strconv "strconv" import reflect "reflect" import io "io" @@ -96,9 +93,62 @@ func (*Duration) ProtoMessage() {} func (*Duration) Descriptor() ([]byte, []int) { return fileDescriptorDuration, []int{0} } func (*Duration) XXX_WellKnownType() string { return "Duration" } +func (m *Duration) GetSeconds() int64 { + if m != nil { + return m.Seconds + } + return 0 +} + +func (m *Duration) GetNanos() int32 { + if m != nil { + return m.Nanos + } + return 0 +} + func init() { proto.RegisterType((*Duration)(nil), "google.protobuf.Duration") } +func (this *Duration) Compare(that interface{}) int { + if that == nil { + if this == nil { + return 0 + } + return 1 + } + + that1, ok := that.(*Duration) + if !ok { + that2, ok := that.(Duration) + if ok { + that1 = &that2 + } else { + return 1 + } + } + if that1 == nil { + if this == nil { + return 0 + } + return 1 + } else if this == nil { + return -1 + } + if this.Seconds != that1.Seconds { + if this.Seconds < that1.Seconds { + return -1 + } + return 1 + } + if this.Nanos != that1.Nanos { + if this.Nanos < that1.Nanos { + return -1 + } + return 1 + } + return 0 +} func (this *Duration) Equal(that interface{}) bool { if that == nil { if this == nil { @@ -151,24 +201,6 @@ func valueToGoStringDuration(v interface{}, typ string) string { pv := reflect.Indirect(rv).Interface() return fmt.Sprintf("func(v %v) *%v { return &v } ( %#v )", typ, typ, pv) } -func extensionToGoStringDuration(m github_com_gogo_protobuf_proto.Message) string { - e := github_com_gogo_protobuf_proto.GetUnsafeExtensionsMap(m) - if e == nil { - return "nil" - } - s := "proto.NewUnsafeXXX_InternalExtensions(map[int32]proto.Extension{" - keys := make([]int, 0, len(e)) - for k := range e { - keys = append(keys, int(k)) - } - sort.Ints(keys) - ss := []string{} - for _, k := range keys { - ss = append(ss, strconv.Itoa(k)+": "+e[int32(k)].GoString()) - } - s += strings.Join(ss, ",") + "})" - return s -} func (m *Duration) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -445,18 +477,18 @@ var ( func init() { proto.RegisterFile("duration.proto", fileDescriptorDuration) } var fileDescriptorDuration = []byte{ - // 198 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x4b, 0x29, 0x2d, 0x4a, + // 203 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x4b, 0x29, 0x2d, 0x4a, 0x2c, 0xc9, 0xcc, 0xcf, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x4f, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0x85, 0xf0, 0x92, 0x4a, 0xd3, 0x94, 0xac, 0xb8, 0x38, 0x5c, 0xa0, 0x4a, 0x84, 0x24, 0xb8, 0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x98, 0x83, 0x60, 0x5c, 0x21, 0x11, 0x2e, 0xd6, 0xbc, 0xc4, 0xbc, 0xfc, 0x62, 0x09, 0x26, 0x05, 0x46, 0x0d, - 0xd6, 0x20, 0x08, 0xc7, 0xa9, 0xfa, 0xc2, 0x43, 0x39, 0x86, 0x1b, 0x0f, 0xe5, 0x18, 0x3e, 0x3c, + 0xd6, 0x20, 0x08, 0xc7, 0xa9, 0xfe, 0xc2, 0x43, 0x39, 0x86, 0x1b, 0x0f, 0xe5, 0x18, 0x3e, 0x3c, 0x94, 0x63, 0x5c, 0xf1, 0x48, 0x8e, 0xf1, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, - 0x3c, 0x92, 0x63, 0x7c, 0xf1, 0x48, 0x8e, 0xe1, 0xc3, 0x23, 0x39, 0x46, 0x2e, 0xe1, 0xe4, 0xfc, - 0x5c, 0x3d, 0x34, 0x6b, 0x9d, 0x78, 0x61, 0x96, 0x06, 0x80, 0x44, 0x02, 0x18, 0xa3, 0x58, 0x4b, - 0x2a, 0x0b, 0x52, 0x8b, 0x17, 0x30, 0x32, 0x2e, 0x62, 0x62, 0x76, 0x0f, 0x70, 0x5a, 0xc5, 0x24, - 0xe7, 0x0e, 0xd1, 0x12, 0x00, 0xd5, 0xa2, 0x17, 0x9e, 0x9a, 0x93, 0xe3, 0x9d, 0x97, 0x5f, 0x9e, - 0x17, 0x02, 0x52, 0x99, 0xc4, 0x06, 0x36, 0xcb, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x16, 0x32, - 0xda, 0x86, 0xe2, 0x00, 0x00, 0x00, + 0x3c, 0x92, 0x63, 0x7c, 0xf1, 0x48, 0x8e, 0xe1, 0xc3, 0x23, 0x39, 0xc6, 0x15, 0x8f, 0xe5, 0x18, + 0xb9, 0x84, 0x93, 0xf3, 0x73, 0xf5, 0xd0, 0xac, 0x76, 0xe2, 0x85, 0x59, 0x1c, 0x00, 0x12, 0x09, + 0x60, 0x8c, 0x62, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0x5e, 0xc0, 0xc8, 0xb8, 0x88, 0x89, 0xd9, 0x3d, + 0xc0, 0x69, 0x15, 0x93, 0x9c, 0x3b, 0x44, 0x4b, 0x00, 0x54, 0x8b, 0x5e, 0x78, 0x6a, 0x4e, 0x8e, + 0x77, 0x5e, 0x7e, 0x79, 0x5e, 0x08, 0x48, 0x65, 0x12, 0x1b, 0xd8, 0x2c, 0x63, 0x40, 0x00, 0x00, + 0x00, 0xff, 0xff, 0xba, 0xfb, 0x15, 0xc9, 0xe6, 0x00, 0x00, 0x00, } diff --git a/components/engine/vendor/github.com/gogo/protobuf/types/empty.pb.go b/components/engine/vendor/github.com/gogo/protobuf/types/empty.pb.go index 72d404ccf5..33f9bddd1d 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/types/empty.pb.go +++ b/components/engine/vendor/github.com/gogo/protobuf/types/empty.pb.go @@ -18,9 +18,6 @@ import fmt "fmt" import math "math" import strings "strings" -import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" -import sort "sort" -import strconv "strconv" import reflect "reflect" import io "io" @@ -56,6 +53,33 @@ func (*Empty) XXX_WellKnownType() string { return "Empty" } func init() { proto.RegisterType((*Empty)(nil), "google.protobuf.Empty") } +func (this *Empty) Compare(that interface{}) int { + if that == nil { + if this == nil { + return 0 + } + return 1 + } + + that1, ok := that.(*Empty) + if !ok { + that2, ok := that.(Empty) + if ok { + that1 = &that2 + } else { + return 1 + } + } + if that1 == nil { + if this == nil { + return 0 + } + return 1 + } else if this == nil { + return -1 + } + return 0 +} func (this *Empty) Equal(that interface{}) bool { if that == nil { if this == nil { @@ -100,24 +124,6 @@ func valueToGoStringEmpty(v interface{}, typ string) string { pv := reflect.Indirect(rv).Interface() return fmt.Sprintf("func(v %v) *%v { return &v } ( %#v )", typ, typ, pv) } -func extensionToGoStringEmpty(m github_com_gogo_protobuf_proto.Message) string { - e := github_com_gogo_protobuf_proto.GetUnsafeExtensionsMap(m) - if e == nil { - return "nil" - } - s := "proto.NewUnsafeXXX_InternalExtensions(map[int32]proto.Extension{" - keys := make([]int, 0, len(e)) - for k := range e { - keys = append(keys, int(k)) - } - sort.Ints(keys) - ss := []string{} - for _, k := range keys { - ss = append(ss, strconv.Itoa(k)+": "+e[int32(k)].GoString()) - } - s += strings.Join(ss, ",") + "})" - return s -} func (m *Empty) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -436,16 +442,16 @@ var ( func init() { proto.RegisterFile("empty.proto", fileDescriptorEmpty) } var fileDescriptorEmpty = []byte{ - // 170 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x4e, 0xcd, 0x2d, 0x28, + // 172 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x4e, 0xcd, 0x2d, 0x28, 0xa9, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x4f, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0x85, - 0xf0, 0x92, 0x4a, 0xd3, 0x94, 0xd8, 0xb9, 0x58, 0x5d, 0x41, 0xf2, 0x4e, 0xcd, 0x8c, 0x17, 0x1e, + 0xf0, 0x92, 0x4a, 0xd3, 0x94, 0xd8, 0xb9, 0x58, 0x5d, 0x41, 0xf2, 0x4e, 0xed, 0x8c, 0x17, 0x1e, 0xca, 0x31, 0xdc, 0x78, 0x28, 0xc7, 0xf0, 0xe1, 0xa1, 0x1c, 0xe3, 0x8f, 0x87, 0x72, 0x8c, 0x0d, 0x8f, 0xe4, 0x18, 0x57, 0x3c, 0x92, 0x63, 0x3c, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, - 0x07, 0x8f, 0xe4, 0x18, 0x5f, 0x3c, 0x92, 0x63, 0xf8, 0xf0, 0x48, 0x8e, 0x91, 0x4b, 0x38, 0x39, - 0x3f, 0x57, 0x0f, 0xcd, 0x30, 0x27, 0x2e, 0xb0, 0x51, 0x01, 0x20, 0x6e, 0x00, 0x63, 0x14, 0x6b, - 0x49, 0x65, 0x41, 0x6a, 0xf1, 0x02, 0x46, 0xc6, 0x1f, 0x8c, 0x8c, 0x8b, 0x98, 0x98, 0xdd, 0x03, - 0x9c, 0x56, 0x31, 0xc9, 0xb9, 0x43, 0xb4, 0x04, 0x40, 0xb5, 0xe8, 0x85, 0xa7, 0xe6, 0xe4, 0x78, - 0xe7, 0xe5, 0x97, 0xe7, 0x85, 0x80, 0x14, 0x27, 0xb1, 0x81, 0xcd, 0x32, 0x06, 0x04, 0x00, 0x00, - 0xff, 0xff, 0xb6, 0x8f, 0x29, 0x84, 0xb5, 0x00, 0x00, 0x00, + 0x07, 0x8f, 0xe4, 0x18, 0x5f, 0x3c, 0x92, 0x63, 0xf8, 0x00, 0x12, 0x7f, 0x2c, 0xc7, 0xc8, 0x25, + 0x9c, 0x9c, 0x9f, 0xab, 0x87, 0x66, 0xa0, 0x13, 0x17, 0xd8, 0xb8, 0x00, 0x10, 0x37, 0x80, 0x31, + 0x8a, 0xb5, 0xa4, 0xb2, 0x20, 0xb5, 0x78, 0x01, 0x23, 0xe3, 0x0f, 0x46, 0xc6, 0x45, 0x4c, 0xcc, + 0xee, 0x01, 0x4e, 0xab, 0x98, 0xe4, 0xdc, 0x21, 0x5a, 0x02, 0xa0, 0x5a, 0xf4, 0xc2, 0x53, 0x73, + 0x72, 0xbc, 0xf3, 0xf2, 0xcb, 0xf3, 0x42, 0x40, 0x8a, 0x93, 0xd8, 0xc0, 0x66, 0x19, 0x03, 0x02, + 0x00, 0x00, 0xff, 0xff, 0x97, 0x6c, 0x95, 0xdd, 0xb9, 0x00, 0x00, 0x00, } diff --git a/components/engine/vendor/github.com/gogo/protobuf/types/field_mask.pb.go b/components/engine/vendor/github.com/gogo/protobuf/types/field_mask.pb.go index 9b90c7f3f2..9ea5bd7ed1 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/types/field_mask.pb.go +++ b/components/engine/vendor/github.com/gogo/protobuf/types/field_mask.pb.go @@ -18,9 +18,6 @@ import fmt "fmt" import math "math" import strings "strings" -import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" -import sort "sort" -import strconv "strconv" import reflect "reflect" import io "io" @@ -246,9 +243,57 @@ func (m *FieldMask) Reset() { *m = FieldMask{} } func (*FieldMask) ProtoMessage() {} func (*FieldMask) Descriptor() ([]byte, []int) { return fileDescriptorFieldMask, []int{0} } +func (m *FieldMask) GetPaths() []string { + if m != nil { + return m.Paths + } + return nil +} + func init() { proto.RegisterType((*FieldMask)(nil), "google.protobuf.FieldMask") } +func (this *FieldMask) Compare(that interface{}) int { + if that == nil { + if this == nil { + return 0 + } + return 1 + } + + that1, ok := that.(*FieldMask) + if !ok { + that2, ok := that.(FieldMask) + if ok { + that1 = &that2 + } else { + return 1 + } + } + if that1 == nil { + if this == nil { + return 0 + } + return 1 + } else if this == nil { + return -1 + } + if len(this.Paths) != len(that1.Paths) { + if len(this.Paths) < len(that1.Paths) { + return -1 + } + return 1 + } + for i := range this.Paths { + if this.Paths[i] != that1.Paths[i] { + if this.Paths[i] < that1.Paths[i] { + return -1 + } + return 1 + } + } + return 0 +} func (this *FieldMask) Equal(that interface{}) bool { if that == nil { if this == nil { @@ -302,24 +347,6 @@ func valueToGoStringFieldMask(v interface{}, typ string) string { pv := reflect.Indirect(rv).Interface() return fmt.Sprintf("func(v %v) *%v { return &v } ( %#v )", typ, typ, pv) } -func extensionToGoStringFieldMask(m github_com_gogo_protobuf_proto.Message) string { - e := github_com_gogo_protobuf_proto.GetUnsafeExtensionsMap(m) - if e == nil { - return "nil" - } - s := "proto.NewUnsafeXXX_InternalExtensions(map[int32]proto.Extension{" - keys := make([]int, 0, len(e)) - for k := range e { - keys = append(keys, int(k)) - } - sort.Ints(keys) - ss := []string{} - for _, k := range keys { - ss = append(ss, strconv.Itoa(k)+": "+e[int32(k)].GoString()) - } - s += strings.Join(ss, ",") + "})" - return s -} func (m *FieldMask) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -694,18 +721,18 @@ var ( func init() { proto.RegisterFile("field_mask.proto", fileDescriptorFieldMask) } var fileDescriptorFieldMask = []byte{ - // 194 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x12, 0x48, 0xcb, 0x4c, 0xcd, + // 196 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x48, 0xcb, 0x4c, 0xcd, 0x49, 0x89, 0xcf, 0x4d, 0x2c, 0xce, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x4f, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0x85, 0xf0, 0x92, 0x4a, 0xd3, 0x94, 0x14, 0xb9, 0x38, 0xdd, 0x40, 0x8a, 0x7c, 0x13, 0x8b, 0xb3, 0x85, 0x44, 0xb8, 0x58, 0x0b, 0x12, 0x4b, 0x32, 0x8a, 0x25, 0x18, 0x15, - 0x98, 0x35, 0x38, 0x83, 0x20, 0x1c, 0xa7, 0x16, 0xc6, 0x0b, 0x0f, 0xe5, 0x18, 0x6e, 0x3c, 0x94, + 0x98, 0x35, 0x38, 0x83, 0x20, 0x1c, 0xa7, 0x0e, 0xc6, 0x0b, 0x0f, 0xe5, 0x18, 0x6e, 0x3c, 0x94, 0x63, 0xf8, 0xf0, 0x50, 0x8e, 0xf1, 0xc7, 0x43, 0x39, 0xc6, 0x86, 0x47, 0x72, 0x8c, 0x2b, 0x1e, 0xc9, 0x31, 0x9e, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x2f, - 0x1e, 0xc9, 0x31, 0x7c, 0x78, 0x24, 0xc7, 0xc8, 0x25, 0x9c, 0x9c, 0x9f, 0xab, 0x87, 0x66, 0x8d, - 0x13, 0x1f, 0xdc, 0x92, 0x00, 0x90, 0x50, 0x00, 0x63, 0x14, 0x6b, 0x49, 0x65, 0x41, 0x6a, 0xf1, - 0x02, 0x46, 0xc6, 0x45, 0x4c, 0xcc, 0xee, 0x01, 0x4e, 0xab, 0x98, 0xe4, 0xdc, 0x21, 0x7a, 0x02, - 0xa0, 0x7a, 0xf4, 0xc2, 0x53, 0x73, 0x72, 0xbc, 0xf3, 0xf2, 0xcb, 0xf3, 0x42, 0x40, 0x2a, 0x93, - 0xd8, 0xc0, 0x86, 0x19, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xad, 0xd3, 0x2d, 0xcf, 0xd5, 0x00, - 0x00, 0x00, + 0x1e, 0xc9, 0x31, 0x7c, 0x00, 0x89, 0x3f, 0x96, 0x63, 0xe4, 0x12, 0x4e, 0xce, 0xcf, 0xd5, 0x43, + 0xb3, 0xca, 0x89, 0x0f, 0x6e, 0x51, 0x00, 0x48, 0x28, 0x80, 0x31, 0x8a, 0xb5, 0xa4, 0xb2, 0x20, + 0xb5, 0x78, 0x01, 0x23, 0xe3, 0x22, 0x26, 0x66, 0xf7, 0x00, 0xa7, 0x55, 0x4c, 0x72, 0xee, 0x10, + 0x3d, 0x01, 0x50, 0x3d, 0x7a, 0xe1, 0xa9, 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, + 0x95, 0x49, 0x6c, 0x60, 0xc3, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xea, 0xb1, 0x3a, 0xd5, + 0xd9, 0x00, 0x00, 0x00, } diff --git a/components/engine/vendor/github.com/gogo/protobuf/types/struct.pb.go b/components/engine/vendor/github.com/gogo/protobuf/types/struct.pb.go index 61acd4a649..f81a433b92 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/types/struct.pb.go +++ b/components/engine/vendor/github.com/gogo/protobuf/types/struct.pb.go @@ -22,8 +22,6 @@ import math "math" import strconv "strconv" import strings "strings" -import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" -import sort "sort" import reflect "reflect" import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" @@ -748,24 +746,6 @@ func valueToGoStringStruct(v interface{}, typ string) string { pv := reflect.Indirect(rv).Interface() return fmt.Sprintf("func(v %v) *%v { return &v } ( %#v )", typ, typ, pv) } -func extensionToGoStringStruct(m github_com_gogo_protobuf_proto.Message) string { - e := github_com_gogo_protobuf_proto.GetUnsafeExtensionsMap(m) - if e == nil { - return "nil" - } - s := "proto.NewUnsafeXXX_InternalExtensions(map[int32]proto.Extension{" - keys := make([]int, 0, len(e)) - for k := range e { - keys = append(keys, int(k)) - } - sort.Ints(keys) - ss := []string{} - for _, k := range keys { - ss = append(ss, strconv.Itoa(k)+": "+e[int32(k)].GoString()) - } - s += strings.Join(ss, ",") + "})" - return s -} func (m *Struct) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1878,7 +1858,7 @@ func init() { proto.RegisterFile("struct.proto", fileDescriptorStruct) } var fileDescriptorStruct = []byte{ // 432 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x74, 0x91, 0xc1, 0x6b, 0xd4, 0x40, + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0xc1, 0x6b, 0xd4, 0x40, 0x14, 0xc6, 0xf3, 0xb2, 0xdd, 0xe0, 0xbe, 0x94, 0x5a, 0x46, 0xd0, 0xa5, 0xc2, 0xb8, 0x6c, 0x2f, 0x41, 0x24, 0x87, 0xf5, 0x22, 0xae, 0x17, 0x03, 0xb5, 0x05, 0x43, 0x89, 0xd1, 0x56, 0xf0, 0xb2, 0x98, 0x6d, 0xba, 0x84, 0x4e, 0x67, 0x4a, 0x32, 0x51, 0xf6, 0xa6, 0xff, 0x85, 0x47, 0xf1, 0x24, diff --git a/components/engine/vendor/github.com/gogo/protobuf/types/timestamp.pb.go b/components/engine/vendor/github.com/gogo/protobuf/types/timestamp.pb.go index 994d9b4bf0..5642421551 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/types/timestamp.pb.go +++ b/components/engine/vendor/github.com/gogo/protobuf/types/timestamp.pb.go @@ -18,9 +18,6 @@ import fmt "fmt" import math "math" import strings "strings" -import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" -import sort "sort" -import strconv "strconv" import reflect "reflect" import io "io" @@ -108,9 +105,62 @@ func (*Timestamp) ProtoMessage() {} func (*Timestamp) Descriptor() ([]byte, []int) { return fileDescriptorTimestamp, []int{0} } func (*Timestamp) XXX_WellKnownType() string { return "Timestamp" } +func (m *Timestamp) GetSeconds() int64 { + if m != nil { + return m.Seconds + } + return 0 +} + +func (m *Timestamp) GetNanos() int32 { + if m != nil { + return m.Nanos + } + return 0 +} + func init() { proto.RegisterType((*Timestamp)(nil), "google.protobuf.Timestamp") } +func (this *Timestamp) Compare(that interface{}) int { + if that == nil { + if this == nil { + return 0 + } + return 1 + } + + that1, ok := that.(*Timestamp) + if !ok { + that2, ok := that.(Timestamp) + if ok { + that1 = &that2 + } else { + return 1 + } + } + if that1 == nil { + if this == nil { + return 0 + } + return 1 + } else if this == nil { + return -1 + } + if this.Seconds != that1.Seconds { + if this.Seconds < that1.Seconds { + return -1 + } + return 1 + } + if this.Nanos != that1.Nanos { + if this.Nanos < that1.Nanos { + return -1 + } + return 1 + } + return 0 +} func (this *Timestamp) Equal(that interface{}) bool { if that == nil { if this == nil { @@ -163,24 +213,6 @@ func valueToGoStringTimestamp(v interface{}, typ string) string { pv := reflect.Indirect(rv).Interface() return fmt.Sprintf("func(v %v) *%v { return &v } ( %#v )", typ, typ, pv) } -func extensionToGoStringTimestamp(m github_com_gogo_protobuf_proto.Message) string { - e := github_com_gogo_protobuf_proto.GetUnsafeExtensionsMap(m) - if e == nil { - return "nil" - } - s := "proto.NewUnsafeXXX_InternalExtensions(map[int32]proto.Extension{" - keys := make([]int, 0, len(e)) - for k := range e { - keys = append(keys, int(k)) - } - sort.Ints(keys) - ss := []string{} - for _, k := range keys { - ss = append(ss, strconv.Itoa(k)+": "+e[int32(k)].GoString()) - } - s += strings.Join(ss, ",") + "})" - return s -} func (m *Timestamp) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -457,18 +489,18 @@ var ( func init() { proto.RegisterFile("timestamp.proto", fileDescriptorTimestamp) } var fileDescriptorTimestamp = []byte{ - // 202 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x2f, 0xc9, 0xcc, 0x4d, + // 208 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2f, 0xc9, 0xcc, 0x4d, 0x2d, 0x2e, 0x49, 0xcc, 0x2d, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x4f, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0x85, 0xf0, 0x92, 0x4a, 0xd3, 0x94, 0xac, 0xb9, 0x38, 0x43, 0x60, 0x6a, 0x84, 0x24, 0xb8, 0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x98, 0x83, 0x60, 0x5c, 0x21, 0x11, 0x2e, 0xd6, 0xbc, 0xc4, 0xbc, 0xfc, 0x62, 0x09, 0x26, 0x05, 0x46, - 0x0d, 0xd6, 0x20, 0x08, 0xc7, 0xa9, 0xfe, 0xc2, 0x43, 0x39, 0x86, 0x1b, 0x0f, 0xe5, 0x18, 0x3e, - 0x3c, 0x94, 0x63, 0x5c, 0xf1, 0x48, 0x8e, 0xf1, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, - 0x1f, 0x3c, 0x92, 0x63, 0x7c, 0xf1, 0x48, 0x8e, 0xe1, 0xc3, 0x23, 0x39, 0x46, 0x2e, 0xe1, 0xe4, - 0xfc, 0x5c, 0x3d, 0x34, 0x7b, 0x9d, 0xf8, 0xe0, 0xb6, 0x06, 0x80, 0x84, 0x02, 0x18, 0xa3, 0x58, - 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x17, 0x30, 0x32, 0xfe, 0x60, 0x64, 0x5c, 0xc4, 0xc4, 0xec, 0x1e, - 0xe0, 0xb4, 0x8a, 0x49, 0xce, 0x1d, 0xa2, 0x2d, 0x00, 0xaa, 0x4d, 0x2f, 0x3c, 0x35, 0x27, 0xc7, - 0x3b, 0x2f, 0xbf, 0x3c, 0x2f, 0x04, 0xa4, 0x38, 0x89, 0x0d, 0x6c, 0x9e, 0x31, 0x20, 0x00, 0x00, - 0xff, 0xff, 0xfd, 0x1c, 0xfa, 0x58, 0xe8, 0x00, 0x00, 0x00, + 0x0d, 0xd6, 0x20, 0x08, 0xc7, 0xa9, 0x99, 0xf1, 0xc2, 0x43, 0x39, 0x86, 0x1b, 0x0f, 0xe5, 0x18, + 0x3e, 0x3c, 0x94, 0x63, 0x5c, 0xf1, 0x48, 0x8e, 0xf1, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, + 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x7c, 0xf1, 0x48, 0x8e, 0xe1, 0xc3, 0x23, 0x39, 0xc6, 0x15, 0x8f, + 0xe5, 0x18, 0xb9, 0x84, 0x93, 0xf3, 0x73, 0xf5, 0xd0, 0x2c, 0x77, 0xe2, 0x83, 0x5b, 0x1d, 0x00, + 0x12, 0x0a, 0x60, 0x8c, 0x62, 0x2d, 0xa9, 0x2c, 0x48, 0x2d, 0x5e, 0xc0, 0xc8, 0xf8, 0x83, 0x91, + 0x71, 0x11, 0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, 0xb6, 0x00, 0xa8, 0x36, + 0xbd, 0xf0, 0xd4, 0x9c, 0x1c, 0xef, 0xbc, 0xfc, 0xf2, 0xbc, 0x10, 0x90, 0xe2, 0x24, 0x36, 0xb0, + 0x79, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7c, 0x4d, 0xbd, 0x9c, 0xed, 0x00, 0x00, 0x00, } diff --git a/components/engine/vendor/github.com/gogo/protobuf/types/wrappers.pb.go b/components/engine/vendor/github.com/gogo/protobuf/types/wrappers.pb.go index f5e62d321d..bdffe4edd8 100644 --- a/components/engine/vendor/github.com/gogo/protobuf/types/wrappers.pb.go +++ b/components/engine/vendor/github.com/gogo/protobuf/types/wrappers.pb.go @@ -28,9 +28,6 @@ import math "math" import bytes "bytes" import strings "strings" -import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" -import sort "sort" -import strconv "strconv" import reflect "reflect" import io "io" @@ -59,6 +56,13 @@ func (*DoubleValue) ProtoMessage() {} func (*DoubleValue) Descriptor() ([]byte, []int) { return fileDescriptorWrappers, []int{0} } func (*DoubleValue) XXX_WellKnownType() string { return "DoubleValue" } +func (m *DoubleValue) GetValue() float64 { + if m != nil { + return m.Value + } + return 0 +} + // Wrapper message for `float`. // // The JSON representation for `FloatValue` is JSON number. @@ -72,6 +76,13 @@ func (*FloatValue) ProtoMessage() {} func (*FloatValue) Descriptor() ([]byte, []int) { return fileDescriptorWrappers, []int{1} } func (*FloatValue) XXX_WellKnownType() string { return "FloatValue" } +func (m *FloatValue) GetValue() float32 { + if m != nil { + return m.Value + } + return 0 +} + // Wrapper message for `int64`. // // The JSON representation for `Int64Value` is JSON string. @@ -85,6 +96,13 @@ func (*Int64Value) ProtoMessage() {} func (*Int64Value) Descriptor() ([]byte, []int) { return fileDescriptorWrappers, []int{2} } func (*Int64Value) XXX_WellKnownType() string { return "Int64Value" } +func (m *Int64Value) GetValue() int64 { + if m != nil { + return m.Value + } + return 0 +} + // Wrapper message for `uint64`. // // The JSON representation for `UInt64Value` is JSON string. @@ -98,6 +116,13 @@ func (*UInt64Value) ProtoMessage() {} func (*UInt64Value) Descriptor() ([]byte, []int) { return fileDescriptorWrappers, []int{3} } func (*UInt64Value) XXX_WellKnownType() string { return "UInt64Value" } +func (m *UInt64Value) GetValue() uint64 { + if m != nil { + return m.Value + } + return 0 +} + // Wrapper message for `int32`. // // The JSON representation for `Int32Value` is JSON number. @@ -111,6 +136,13 @@ func (*Int32Value) ProtoMessage() {} func (*Int32Value) Descriptor() ([]byte, []int) { return fileDescriptorWrappers, []int{4} } func (*Int32Value) XXX_WellKnownType() string { return "Int32Value" } +func (m *Int32Value) GetValue() int32 { + if m != nil { + return m.Value + } + return 0 +} + // Wrapper message for `uint32`. // // The JSON representation for `UInt32Value` is JSON number. @@ -124,6 +156,13 @@ func (*UInt32Value) ProtoMessage() {} func (*UInt32Value) Descriptor() ([]byte, []int) { return fileDescriptorWrappers, []int{5} } func (*UInt32Value) XXX_WellKnownType() string { return "UInt32Value" } +func (m *UInt32Value) GetValue() uint32 { + if m != nil { + return m.Value + } + return 0 +} + // Wrapper message for `bool`. // // The JSON representation for `BoolValue` is JSON `true` and `false`. @@ -137,6 +176,13 @@ func (*BoolValue) ProtoMessage() {} func (*BoolValue) Descriptor() ([]byte, []int) { return fileDescriptorWrappers, []int{6} } func (*BoolValue) XXX_WellKnownType() string { return "BoolValue" } +func (m *BoolValue) GetValue() bool { + if m != nil { + return m.Value + } + return false +} + // Wrapper message for `string`. // // The JSON representation for `StringValue` is JSON string. @@ -150,6 +196,13 @@ func (*StringValue) ProtoMessage() {} func (*StringValue) Descriptor() ([]byte, []int) { return fileDescriptorWrappers, []int{7} } func (*StringValue) XXX_WellKnownType() string { return "StringValue" } +func (m *StringValue) GetValue() string { + if m != nil { + return m.Value + } + return "" +} + // Wrapper message for `bytes`. // // The JSON representation for `BytesValue` is JSON string. @@ -163,6 +216,13 @@ func (*BytesValue) ProtoMessage() {} func (*BytesValue) Descriptor() ([]byte, []int) { return fileDescriptorWrappers, []int{8} } func (*BytesValue) XXX_WellKnownType() string { return "BytesValue" } +func (m *BytesValue) GetValue() []byte { + if m != nil { + return m.Value + } + return nil +} + func init() { proto.RegisterType((*DoubleValue)(nil), "google.protobuf.DoubleValue") proto.RegisterType((*FloatValue)(nil), "google.protobuf.FloatValue") @@ -174,6 +234,300 @@ func init() { proto.RegisterType((*StringValue)(nil), "google.protobuf.StringValue") proto.RegisterType((*BytesValue)(nil), "google.protobuf.BytesValue") } +func (this *DoubleValue) Compare(that interface{}) int { + if that == nil { + if this == nil { + return 0 + } + return 1 + } + + that1, ok := that.(*DoubleValue) + if !ok { + that2, ok := that.(DoubleValue) + if ok { + that1 = &that2 + } else { + return 1 + } + } + if that1 == nil { + if this == nil { + return 0 + } + return 1 + } else if this == nil { + return -1 + } + if this.Value != that1.Value { + if this.Value < that1.Value { + return -1 + } + return 1 + } + return 0 +} +func (this *FloatValue) Compare(that interface{}) int { + if that == nil { + if this == nil { + return 0 + } + return 1 + } + + that1, ok := that.(*FloatValue) + if !ok { + that2, ok := that.(FloatValue) + if ok { + that1 = &that2 + } else { + return 1 + } + } + if that1 == nil { + if this == nil { + return 0 + } + return 1 + } else if this == nil { + return -1 + } + if this.Value != that1.Value { + if this.Value < that1.Value { + return -1 + } + return 1 + } + return 0 +} +func (this *Int64Value) Compare(that interface{}) int { + if that == nil { + if this == nil { + return 0 + } + return 1 + } + + that1, ok := that.(*Int64Value) + if !ok { + that2, ok := that.(Int64Value) + if ok { + that1 = &that2 + } else { + return 1 + } + } + if that1 == nil { + if this == nil { + return 0 + } + return 1 + } else if this == nil { + return -1 + } + if this.Value != that1.Value { + if this.Value < that1.Value { + return -1 + } + return 1 + } + return 0 +} +func (this *UInt64Value) Compare(that interface{}) int { + if that == nil { + if this == nil { + return 0 + } + return 1 + } + + that1, ok := that.(*UInt64Value) + if !ok { + that2, ok := that.(UInt64Value) + if ok { + that1 = &that2 + } else { + return 1 + } + } + if that1 == nil { + if this == nil { + return 0 + } + return 1 + } else if this == nil { + return -1 + } + if this.Value != that1.Value { + if this.Value < that1.Value { + return -1 + } + return 1 + } + return 0 +} +func (this *Int32Value) Compare(that interface{}) int { + if that == nil { + if this == nil { + return 0 + } + return 1 + } + + that1, ok := that.(*Int32Value) + if !ok { + that2, ok := that.(Int32Value) + if ok { + that1 = &that2 + } else { + return 1 + } + } + if that1 == nil { + if this == nil { + return 0 + } + return 1 + } else if this == nil { + return -1 + } + if this.Value != that1.Value { + if this.Value < that1.Value { + return -1 + } + return 1 + } + return 0 +} +func (this *UInt32Value) Compare(that interface{}) int { + if that == nil { + if this == nil { + return 0 + } + return 1 + } + + that1, ok := that.(*UInt32Value) + if !ok { + that2, ok := that.(UInt32Value) + if ok { + that1 = &that2 + } else { + return 1 + } + } + if that1 == nil { + if this == nil { + return 0 + } + return 1 + } else if this == nil { + return -1 + } + if this.Value != that1.Value { + if this.Value < that1.Value { + return -1 + } + return 1 + } + return 0 +} +func (this *BoolValue) Compare(that interface{}) int { + if that == nil { + if this == nil { + return 0 + } + return 1 + } + + that1, ok := that.(*BoolValue) + if !ok { + that2, ok := that.(BoolValue) + if ok { + that1 = &that2 + } else { + return 1 + } + } + if that1 == nil { + if this == nil { + return 0 + } + return 1 + } else if this == nil { + return -1 + } + if this.Value != that1.Value { + if !this.Value { + return -1 + } + return 1 + } + return 0 +} +func (this *StringValue) Compare(that interface{}) int { + if that == nil { + if this == nil { + return 0 + } + return 1 + } + + that1, ok := that.(*StringValue) + if !ok { + that2, ok := that.(StringValue) + if ok { + that1 = &that2 + } else { + return 1 + } + } + if that1 == nil { + if this == nil { + return 0 + } + return 1 + } else if this == nil { + return -1 + } + if this.Value != that1.Value { + if this.Value < that1.Value { + return -1 + } + return 1 + } + return 0 +} +func (this *BytesValue) Compare(that interface{}) int { + if that == nil { + if this == nil { + return 0 + } + return 1 + } + + that1, ok := that.(*BytesValue) + if !ok { + that2, ok := that.(BytesValue) + if ok { + that1 = &that2 + } else { + return 1 + } + } + if that1 == nil { + if this == nil { + return 0 + } + return 1 + } else if this == nil { + return -1 + } + if c := bytes.Compare(this.Value, that1.Value); c != 0 { + return c + } + return 0 +} func (this *DoubleValue) Equal(that interface{}) bool { if that == nil { if this == nil { @@ -542,24 +896,6 @@ func valueToGoStringWrappers(v interface{}, typ string) string { pv := reflect.Indirect(rv).Interface() return fmt.Sprintf("func(v %v) *%v { return &v } ( %#v )", typ, typ, pv) } -func extensionToGoStringWrappers(m github_com_gogo_protobuf_proto.Message) string { - e := github_com_gogo_protobuf_proto.GetUnsafeExtensionsMap(m) - if e == nil { - return "nil" - } - s := "proto.NewUnsafeXXX_InternalExtensions(map[int32]proto.Extension{" - keys := make([]int, 0, len(e)) - for k := range e { - keys = append(keys, int(k)) - } - sort.Ints(keys) - ss := []string{} - for _, k := range keys { - ss = append(ss, strconv.Itoa(k)+": "+e[int32(k)].GoString()) - } - s += strings.Join(ss, ",") + "})" - return s -} func (m *DoubleValue) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1901,8 +2237,8 @@ var ( func init() { proto.RegisterFile("wrappers.proto", fileDescriptorWrappers) } var fileDescriptorWrappers = []byte{ - // 280 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x2b, 0x2f, 0x4a, 0x2c, + // 281 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2b, 0x2f, 0x4a, 0x2c, 0x28, 0x48, 0x2d, 0x2a, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x4f, 0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0x85, 0xf0, 0x92, 0x4a, 0xd3, 0x94, 0x94, 0xb9, 0xb8, 0x5d, 0xf2, 0x4b, 0x93, 0x72, 0x52, 0xc3, 0x12, 0x73, 0x4a, 0x53, 0x85, 0x44, 0xb8, 0x58, 0xcb, 0x40, 0x0c, 0x09, 0x46, 0x05, @@ -1911,13 +2247,13 @@ var fileDescriptorWrappers = []byte{ 0x71, 0x87, 0xe2, 0x52, 0xc4, 0x82, 0x6a, 0x90, 0xb1, 0x11, 0x16, 0x35, 0xac, 0x68, 0x06, 0x61, 0x55, 0xc4, 0x0b, 0x53, 0xa4, 0xc8, 0xc5, 0xe9, 0x94, 0x9f, 0x9f, 0x83, 0x45, 0x09, 0x07, 0x92, 0x39, 0xc1, 0x25, 0x45, 0x99, 0x79, 0xe9, 0x58, 0x14, 0x71, 0x22, 0x39, 0xc8, 0xa9, 0xb2, 0x24, - 0xb5, 0x18, 0x8b, 0x1a, 0x1e, 0xa8, 0x1a, 0xa7, 0x36, 0xc6, 0x0b, 0x0f, 0xe5, 0x18, 0x6e, 0x3c, + 0xb5, 0x18, 0x8b, 0x1a, 0x1e, 0xa8, 0x1a, 0xa7, 0x2e, 0xc6, 0x0b, 0x0f, 0xe5, 0x18, 0x6e, 0x3c, 0x94, 0x63, 0xf8, 0xf0, 0x50, 0x8e, 0xf1, 0xc7, 0x43, 0x39, 0xc6, 0x86, 0x47, 0x72, 0x8c, 0x2b, 0x1e, 0xc9, 0x31, 0x9e, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, - 0x2f, 0x1e, 0xc9, 0x31, 0x7c, 0x78, 0x24, 0xc7, 0xc8, 0x25, 0x9c, 0x9c, 0x9f, 0xab, 0x87, 0x16, - 0x15, 0x4e, 0xbc, 0xe1, 0xd0, 0xb8, 0x0a, 0x00, 0x89, 0x04, 0x30, 0x46, 0xb1, 0x96, 0x54, 0x16, - 0xa4, 0x16, 0x2f, 0x60, 0x64, 0xfc, 0xc1, 0xc8, 0xb8, 0x88, 0x89, 0xd9, 0x3d, 0xc0, 0x69, 0x15, - 0x93, 0x9c, 0x3b, 0x44, 0x57, 0x00, 0x54, 0x97, 0x5e, 0x78, 0x6a, 0x4e, 0x8e, 0x77, 0x5e, 0x7e, - 0x79, 0x5e, 0x08, 0x48, 0x71, 0x12, 0x1b, 0xd8, 0x38, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x1b, 0x0c, 0xe0, 0x38, 0xf9, 0x01, 0x00, 0x00, + 0x2f, 0x1e, 0xc9, 0x31, 0x7c, 0x00, 0x89, 0x3f, 0x96, 0x63, 0xe4, 0x12, 0x4e, 0xce, 0xcf, 0xd5, + 0x43, 0x8b, 0x0e, 0x27, 0xde, 0x70, 0x68, 0x7c, 0x05, 0x80, 0x44, 0x02, 0x18, 0xa3, 0x58, 0x4b, + 0x2a, 0x0b, 0x52, 0x8b, 0x17, 0x30, 0x32, 0xfe, 0x60, 0x64, 0x5c, 0xc4, 0xc4, 0xec, 0x1e, 0xe0, + 0xb4, 0x8a, 0x49, 0xce, 0x1d, 0xa2, 0x2b, 0x00, 0xaa, 0x4b, 0x2f, 0x3c, 0x35, 0x27, 0xc7, 0x3b, + 0x2f, 0xbf, 0x3c, 0x2f, 0x04, 0xa4, 0x38, 0x89, 0x0d, 0x6c, 0x9c, 0x31, 0x20, 0x00, 0x00, 0xff, + 0xff, 0xac, 0x8b, 0x9f, 0x55, 0xfd, 0x01, 0x00, 0x00, }