mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 10:03:42 +08:00 
			
		
		
		
	vendor: bump buildkit to master
Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
		
							
								
								
									
										15
									
								
								vendor/github.com/moby/buildkit/client/llb/resolver.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/moby/buildkit/client/llb/resolver.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -34,8 +34,17 @@ type ImageMetaResolver interface {
 | 
			
		||||
	ResolveImageConfig(ctx context.Context, ref string, opt ResolveImageConfigOpt) (digest.Digest, []byte, error)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type ResolverType int
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	ResolverTypeRegistry ResolverType = iota
 | 
			
		||||
	ResolverTypeOCILayout
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type ResolveImageConfigOpt struct {
 | 
			
		||||
	Platform    *ocispecs.Platform
 | 
			
		||||
	ResolveMode string
 | 
			
		||||
	LogName     string
 | 
			
		||||
	Platform     *ocispecs.Platform
 | 
			
		||||
	ResolveMode  string
 | 
			
		||||
	LogName      string
 | 
			
		||||
	ResolverType // default is ResolverTypeRegistry
 | 
			
		||||
	SessionID    string
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										62
									
								
								vendor/github.com/moby/buildkit/client/llb/source.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										62
									
								
								vendor/github.com/moby/buildkit/client/llb/source.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -4,6 +4,7 @@ import (
 | 
			
		||||
	"context"
 | 
			
		||||
	_ "crypto/sha256" // for opencontainers/go-digest
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
@@ -132,8 +133,9 @@ func Image(ref string, opts ...ImageOption) State {
 | 
			
		||||
					p = c.Platform
 | 
			
		||||
				}
 | 
			
		||||
				_, dt, err := info.metaResolver.ResolveImageConfig(ctx, ref, ResolveImageConfigOpt{
 | 
			
		||||
					Platform:    p,
 | 
			
		||||
					ResolveMode: info.resolveMode.String(),
 | 
			
		||||
					Platform:     p,
 | 
			
		||||
					ResolveMode:  info.resolveMode.String(),
 | 
			
		||||
					ResolverType: ResolverTypeRegistry,
 | 
			
		||||
				})
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return State{}, err
 | 
			
		||||
@@ -147,8 +149,9 @@ func Image(ref string, opts ...ImageOption) State {
 | 
			
		||||
				p = c.Platform
 | 
			
		||||
			}
 | 
			
		||||
			dgst, dt, err := info.metaResolver.ResolveImageConfig(context.TODO(), ref, ResolveImageConfigOpt{
 | 
			
		||||
				Platform:    p,
 | 
			
		||||
				ResolveMode: info.resolveMode.String(),
 | 
			
		||||
				Platform:     p,
 | 
			
		||||
				ResolveMode:  info.resolveMode.String(),
 | 
			
		||||
				ResolverType: ResolverTypeRegistry,
 | 
			
		||||
			})
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return State{}, err
 | 
			
		||||
@@ -452,6 +455,57 @@ func Differ(t DiffType, required bool) LocalOption {
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func OCILayout(contentStoreID string, dig digest.Digest, opts ...OCILayoutOption) State {
 | 
			
		||||
	gi := &OCILayoutInfo{}
 | 
			
		||||
 | 
			
		||||
	for _, o := range opts {
 | 
			
		||||
		o.SetOCILayoutOption(gi)
 | 
			
		||||
	}
 | 
			
		||||
	attrs := map[string]string{}
 | 
			
		||||
	if gi.sessionID != "" {
 | 
			
		||||
		attrs[pb.AttrOCILayoutSessionID] = gi.sessionID
 | 
			
		||||
		addCap(&gi.Constraints, pb.CapSourceOCILayoutSessionID)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ll := gi.layerLimit; ll != nil {
 | 
			
		||||
		attrs[pb.AttrOCILayoutLayerLimit] = strconv.FormatInt(int64(*ll), 10)
 | 
			
		||||
		addCap(&gi.Constraints, pb.CapSourceOCILayoutLayerLimit)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	addCap(&gi.Constraints, pb.CapSourceOCILayout)
 | 
			
		||||
 | 
			
		||||
	source := NewSource(fmt.Sprintf("oci-layout://%s@%s", contentStoreID, dig), attrs, gi.Constraints)
 | 
			
		||||
	return NewState(source.Output())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type OCILayoutOption interface {
 | 
			
		||||
	SetOCILayoutOption(*OCILayoutInfo)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type ociLayoutOptionFunc func(*OCILayoutInfo)
 | 
			
		||||
 | 
			
		||||
func (fn ociLayoutOptionFunc) SetOCILayoutOption(li *OCILayoutInfo) {
 | 
			
		||||
	fn(li)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func OCISessionID(id string) OCILayoutOption {
 | 
			
		||||
	return ociLayoutOptionFunc(func(oi *OCILayoutInfo) {
 | 
			
		||||
		oi.sessionID = id
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func OCILayerLimit(limit int) OCILayoutOption {
 | 
			
		||||
	return ociLayoutOptionFunc(func(oi *OCILayoutInfo) {
 | 
			
		||||
		oi.layerLimit = &limit
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type OCILayoutInfo struct {
 | 
			
		||||
	constraintsWrapper
 | 
			
		||||
	sessionID  string
 | 
			
		||||
	layerLimit *int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type DiffType string
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										5
									
								
								vendor/github.com/moby/buildkit/client/llb/state.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/moby/buildkit/client/llb/state.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -455,6 +455,7 @@ type ConstraintsOpt interface {
 | 
			
		||||
	HTTPOption
 | 
			
		||||
	ImageOption
 | 
			
		||||
	GitOption
 | 
			
		||||
	OCILayoutOption
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type constraintsOptFunc func(m *Constraints)
 | 
			
		||||
@@ -471,6 +472,10 @@ func (fn constraintsOptFunc) SetLocalOption(li *LocalInfo) {
 | 
			
		||||
	li.applyConstraints(fn)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fn constraintsOptFunc) SetOCILayoutOption(oi *OCILayoutInfo) {
 | 
			
		||||
	oi.applyConstraints(fn)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fn constraintsOptFunc) SetHTTPOption(hi *HTTPInfo) {
 | 
			
		||||
	hi.applyConstraints(fn)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										24
									
								
								vendor/github.com/moby/buildkit/client/solve.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								vendor/github.com/moby/buildkit/client/solve.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -33,6 +33,7 @@ import (
 | 
			
		||||
type SolveOpt struct {
 | 
			
		||||
	Exports               []ExportEntry
 | 
			
		||||
	LocalDirs             map[string]string
 | 
			
		||||
	OCIStores             map[string]content.Store
 | 
			
		||||
	SharedKey             string
 | 
			
		||||
	Frontend              string
 | 
			
		||||
	FrontendAttrs         map[string]string
 | 
			
		||||
@@ -158,8 +159,27 @@ func (c *Client) solve(ctx context.Context, def *llb.Definition, runGateway runG
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if len(cacheOpt.contentStores) > 0 {
 | 
			
		||||
			s.Allow(sessioncontent.NewAttachable(cacheOpt.contentStores))
 | 
			
		||||
		// this is a new map that contains both cacheOpt stores and OCILayout stores
 | 
			
		||||
		contentStores := make(map[string]content.Store, len(cacheOpt.contentStores)+len(opt.OCIStores))
 | 
			
		||||
		// copy over the stores references from cacheOpt
 | 
			
		||||
		for key, store := range cacheOpt.contentStores {
 | 
			
		||||
			contentStores[key] = store
 | 
			
		||||
		}
 | 
			
		||||
		// copy over the stores references from ociLayout opts
 | 
			
		||||
		for key, store := range opt.OCIStores {
 | 
			
		||||
			// conflicts are not allowed
 | 
			
		||||
			if _, ok := contentStores[key]; ok {
 | 
			
		||||
				// we probably should check if the store is identical, but given that
 | 
			
		||||
				// https://pkg.go.dev/github.com/containerd/containerd/content#Store
 | 
			
		||||
				// is just an interface, composing 4 others, that is rather hard to do.
 | 
			
		||||
				// For a future iteration.
 | 
			
		||||
				return nil, errors.Errorf("contentStore key %s exists in both cache and OCI layouts", key)
 | 
			
		||||
			}
 | 
			
		||||
			contentStores[key] = store
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if len(contentStores) > 0 {
 | 
			
		||||
			s.Allow(sessioncontent.NewAttachable(contentStores))
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		eg.Go(func() error {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										115
									
								
								vendor/github.com/moby/buildkit/exporter/containerimage/exptypes/annotations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								vendor/github.com/moby/buildkit/exporter/containerimage/exptypes/annotations.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,115 @@
 | 
			
		||||
package exptypes
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"regexp"
 | 
			
		||||
 | 
			
		||||
	"github.com/containerd/containerd/platforms"
 | 
			
		||||
	ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
 | 
			
		||||
	"github.com/pkg/errors"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	AnnotationIndex              = "index"
 | 
			
		||||
	AnnotationIndexDescriptor    = "index-descriptor"
 | 
			
		||||
	AnnotationManifest           = "manifest"
 | 
			
		||||
	AnnotationManifestDescriptor = "manifest-descriptor"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	keyAnnotationRegexp = regexp.MustCompile(`^annotation(?:-([a-z-]+))?(?:\[([A-Za-z0-9_/-]+)\])?\.(\S+)$`)
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type AnnotationKey struct {
 | 
			
		||||
	Type     string
 | 
			
		||||
	Platform *ocispecs.Platform
 | 
			
		||||
	Key      string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (k AnnotationKey) String() string {
 | 
			
		||||
	prefix := "annotation"
 | 
			
		||||
 | 
			
		||||
	switch k.Type {
 | 
			
		||||
	case "":
 | 
			
		||||
	case AnnotationManifest, AnnotationManifestDescriptor:
 | 
			
		||||
		prefix += fmt.Sprintf("-%s", k.Type)
 | 
			
		||||
		if p := k.PlatformString(); p != "" {
 | 
			
		||||
			prefix += fmt.Sprintf("[%s]", p)
 | 
			
		||||
		}
 | 
			
		||||
	case AnnotationIndex, AnnotationIndexDescriptor:
 | 
			
		||||
		prefix += "-" + k.Type
 | 
			
		||||
	default:
 | 
			
		||||
		panic("unknown annotation type")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return fmt.Sprintf("%s.%s", prefix, k.Key)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (k AnnotationKey) PlatformString() string {
 | 
			
		||||
	if k.Platform == nil {
 | 
			
		||||
		return ""
 | 
			
		||||
	}
 | 
			
		||||
	return platforms.Format(*k.Platform)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func AnnotationIndexKey(key string) string {
 | 
			
		||||
	return AnnotationKey{
 | 
			
		||||
		Type: AnnotationIndex,
 | 
			
		||||
		Key:  key,
 | 
			
		||||
	}.String()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func AnnotationIndexDescriptorKey(key string) string {
 | 
			
		||||
	return AnnotationKey{
 | 
			
		||||
		Type: AnnotationIndexDescriptor,
 | 
			
		||||
		Key:  key,
 | 
			
		||||
	}.String()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func AnnotationManifestKey(p *ocispecs.Platform, key string) string {
 | 
			
		||||
	return AnnotationKey{
 | 
			
		||||
		Type:     AnnotationManifest,
 | 
			
		||||
		Platform: p,
 | 
			
		||||
		Key:      key,
 | 
			
		||||
	}.String()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func AnnotationManifestDescriptorKey(p *ocispecs.Platform, key string) string {
 | 
			
		||||
	return AnnotationKey{
 | 
			
		||||
		Type:     AnnotationManifestDescriptor,
 | 
			
		||||
		Platform: p,
 | 
			
		||||
		Key:      key,
 | 
			
		||||
	}.String()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func ParseAnnotationKey(result string) (AnnotationKey, bool, error) {
 | 
			
		||||
	groups := keyAnnotationRegexp.FindStringSubmatch(result)
 | 
			
		||||
	if groups == nil {
 | 
			
		||||
		return AnnotationKey{}, false, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	tp, platform, key := groups[1], groups[2], groups[3]
 | 
			
		||||
	switch tp {
 | 
			
		||||
	case AnnotationIndex, AnnotationIndexDescriptor, AnnotationManifest, AnnotationManifestDescriptor:
 | 
			
		||||
	case "":
 | 
			
		||||
		tp = AnnotationManifest
 | 
			
		||||
	default:
 | 
			
		||||
		return AnnotationKey{}, true, errors.Errorf("unrecognized annotation type %s", tp)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var ociPlatform *ocispecs.Platform
 | 
			
		||||
	if platform != "" {
 | 
			
		||||
		p, err := platforms.Parse(platform)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return AnnotationKey{}, true, err
 | 
			
		||||
		}
 | 
			
		||||
		ociPlatform = &p
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	annotation := AnnotationKey{
 | 
			
		||||
		Type:     tp,
 | 
			
		||||
		Platform: ociPlatform,
 | 
			
		||||
		Key:      key,
 | 
			
		||||
	}
 | 
			
		||||
	return annotation, true, nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/moby/buildkit/frontend/gateway/grpcclient/client.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/moby/buildkit/frontend/gateway/grpcclient/client.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -459,7 +459,7 @@ func (c *grpcClient) ResolveImageConfig(ctx context.Context, ref string, opt llb
 | 
			
		||||
			OSFeatures:   platform.OSFeatures,
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	resp, err := c.client.ResolveImageConfig(ctx, &pb.ResolveImageConfigRequest{Ref: ref, Platform: p, ResolveMode: opt.ResolveMode, LogName: opt.LogName})
 | 
			
		||||
	resp, err := c.client.ResolveImageConfig(ctx, &pb.ResolveImageConfigRequest{Ref: ref, Platform: p, ResolveMode: opt.ResolveMode, LogName: opt.LogName, ResolverType: int32(opt.ResolverType), SessionID: opt.SessionID})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", nil, err
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										346
									
								
								vendor/github.com/moby/buildkit/frontend/gateway/pb/gateway.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										346
									
								
								vendor/github.com/moby/buildkit/frontend/gateway/pb/gateway.pb.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -489,6 +489,8 @@ type ResolveImageConfigRequest struct {
 | 
			
		||||
	Platform             *pb.Platform `protobuf:"bytes,2,opt,name=Platform,proto3" json:"Platform,omitempty"`
 | 
			
		||||
	ResolveMode          string       `protobuf:"bytes,3,opt,name=ResolveMode,proto3" json:"ResolveMode,omitempty"`
 | 
			
		||||
	LogName              string       `protobuf:"bytes,4,opt,name=LogName,proto3" json:"LogName,omitempty"`
 | 
			
		||||
	ResolverType         int32        `protobuf:"varint,5,opt,name=ResolverType,proto3" json:"ResolverType,omitempty"`
 | 
			
		||||
	SessionID            string       `protobuf:"bytes,6,opt,name=SessionID,proto3" json:"SessionID,omitempty"`
 | 
			
		||||
	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
 | 
			
		||||
	XXX_unrecognized     []byte       `json:"-"`
 | 
			
		||||
	XXX_sizecache        int32        `json:"-"`
 | 
			
		||||
@@ -555,6 +557,20 @@ func (m *ResolveImageConfigRequest) GetLogName() string {
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *ResolveImageConfigRequest) GetResolverType() int32 {
 | 
			
		||||
	if m != nil {
 | 
			
		||||
		return m.ResolverType
 | 
			
		||||
	}
 | 
			
		||||
	return 0
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *ResolveImageConfigRequest) GetSessionID() string {
 | 
			
		||||
	if m != nil {
 | 
			
		||||
		return m.SessionID
 | 
			
		||||
	}
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type ResolveImageConfigResponse struct {
 | 
			
		||||
	Digest               github_com_opencontainers_go_digest.Digest `protobuf:"bytes,1,opt,name=Digest,proto3,customtype=github.com/opencontainers/go-digest.Digest" json:"Digest"`
 | 
			
		||||
	Config               []byte                                     `protobuf:"bytes,2,opt,name=Config,proto3" json:"Config,omitempty"`
 | 
			
		||||
@@ -2248,136 +2264,138 @@ func init() {
 | 
			
		||||
func init() { proto.RegisterFile("gateway.proto", fileDescriptor_f1a937782ebbded5) }
 | 
			
		||||
 | 
			
		||||
var fileDescriptor_f1a937782ebbded5 = []byte{
 | 
			
		||||
	// 2060 bytes of a gzipped FileDescriptorProto
 | 
			
		||||
	// 2086 bytes of a gzipped FileDescriptorProto
 | 
			
		||||
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xcd, 0x6f, 0xe3, 0xc6,
 | 
			
		||||
	0x15, 0x37, 0x2d, 0xd9, 0x92, 0x9e, 0x3e, 0xd6, 0x99, 0xa4, 0x29, 0x43, 0x04, 0x1b, 0x87, 0x4d,
 | 
			
		||||
	0x5d, 0xed, 0xc6, 0xa1, 0x52, 0x6f, 0x02, 0x6f, 0xbd, 0x45, 0xd2, 0xf5, 0x17, 0xec, 0xc4, 0xf6,
 | 
			
		||||
	0xba, 0xe3, 0x14, 0x0b, 0x04, 0x29, 0x50, 0x5a, 0x1c, 0x69, 0x89, 0xa5, 0x39, 0xec, 0x70, 0xb4,
 | 
			
		||||
	0x5e, 0x27, 0x97, 0xf6, 0xd6, 0x63, 0x81, 0x02, 0xbd, 0x16, 0xe8, 0x5f, 0xd0, 0x53, 0x8f, 0x3d,
 | 
			
		||||
	0xe7, 0xd8, 0x63, 0xd1, 0x43, 0x50, 0xec, 0x1f, 0x51, 0xa0, 0xb7, 0xe2, 0xcd, 0x0c, 0x25, 0x4a,
 | 
			
		||||
	0x96, 0x29, 0x0b, 0x39, 0x69, 0xe6, 0xf1, 0xfd, 0xde, 0xbc, 0xaf, 0x79, 0xef, 0x8d, 0xa0, 0xd9,
 | 
			
		||||
	0xf7, 0x25, 0xbb, 0xf4, 0xaf, 0xbc, 0x44, 0x70, 0xc9, 0xc9, 0x5b, 0x17, 0xfc, 0xfc, 0xca, 0x3b,
 | 
			
		||||
	0x1f, 0x84, 0x51, 0xf0, 0x3c, 0x94, 0xde, 0x8b, 0x9f, 0x7a, 0x3d, 0xc1, 0x63, 0xc9, 0xe2, 0xc0,
 | 
			
		||||
	0xf9, 0xa0, 0x1f, 0xca, 0x67, 0x83, 0x73, 0xaf, 0xcb, 0x2f, 0x3a, 0x7d, 0xde, 0xe7, 0x1d, 0x85,
 | 
			
		||||
	0x38, 0x1f, 0xf4, 0xd4, 0x4e, 0x6d, 0xd4, 0x4a, 0x4b, 0x72, 0x36, 0x26, 0xd9, 0xfb, 0x9c, 0xf7,
 | 
			
		||||
	0x23, 0xe6, 0x27, 0x61, 0x6a, 0x96, 0x1d, 0x91, 0x74, 0x3b, 0xa9, 0xf4, 0xe5, 0x20, 0x35, 0x98,
 | 
			
		||||
	0xf5, 0x1c, 0x06, 0x15, 0xe9, 0x64, 0x8a, 0x74, 0x52, 0x1e, 0xbd, 0x60, 0xa2, 0x93, 0x9c, 0x77,
 | 
			
		||||
	0x78, 0x92, 0x71, 0x77, 0x6e, 0xe4, 0xf6, 0x93, 0xb0, 0x23, 0xaf, 0x12, 0x96, 0x76, 0x2e, 0xb9,
 | 
			
		||||
	0x78, 0xce, 0x84, 0x01, 0x3c, 0xb8, 0x11, 0x30, 0x90, 0x61, 0x84, 0xa8, 0xae, 0x9f, 0xa4, 0x78,
 | 
			
		||||
	0x08, 0xfe, 0x1a, 0x50, 0xde, 0x6c, 0xc9, 0xe3, 0x30, 0x95, 0x61, 0xd8, 0x0f, 0x3b, 0xbd, 0x54,
 | 
			
		||||
	0x61, 0xf4, 0x29, 0x68, 0x84, 0x66, 0x77, 0xff, 0x50, 0x82, 0x65, 0xca, 0xd2, 0x41, 0x24, 0xc9,
 | 
			
		||||
	0x1a, 0x34, 0x05, 0xeb, 0xed, 0xb2, 0x44, 0xb0, 0xae, 0x2f, 0x59, 0x60, 0x5b, 0xab, 0x56, 0xbb,
 | 
			
		||||
	0x76, 0xb0, 0x40, 0xc7, 0xc9, 0xe4, 0x57, 0xd0, 0x12, 0xac, 0x97, 0xe6, 0x18, 0x17, 0x57, 0xad,
 | 
			
		||||
	0x76, 0x7d, 0xe3, 0x7d, 0xef, 0xc6, 0x60, 0x78, 0x94, 0xf5, 0x8e, 0xfd, 0x64, 0x04, 0x39, 0x58,
 | 
			
		||||
	0xa0, 0x13, 0x42, 0xc8, 0x06, 0x94, 0x04, 0xeb, 0xd9, 0x25, 0x25, 0xeb, 0x6e, 0xb1, 0xac, 0x83,
 | 
			
		||||
	0x05, 0x8a, 0xcc, 0x64, 0x13, 0xca, 0x28, 0xc5, 0x2e, 0x2b, 0xd0, 0xbb, 0x33, 0x15, 0x38, 0x58,
 | 
			
		||||
	0xa0, 0x0a, 0x40, 0x3e, 0x87, 0xea, 0x05, 0x93, 0x7e, 0xe0, 0x4b, 0xdf, 0x86, 0xd5, 0x52, 0xbb,
 | 
			
		||||
	0xbe, 0xd1, 0x29, 0x04, 0xa3, 0x83, 0xbc, 0x63, 0x83, 0xd8, 0x8b, 0xa5, 0xb8, 0xa2, 0x43, 0x01,
 | 
			
		||||
	0xce, 0x23, 0x68, 0x8e, 0x7d, 0x22, 0x2b, 0x50, 0x7a, 0xce, 0xae, 0xb4, 0xff, 0x28, 0x2e, 0xc9,
 | 
			
		||||
	0x1b, 0xb0, 0xf4, 0xc2, 0x8f, 0x06, 0x4c, 0xb9, 0xaa, 0x41, 0xf5, 0x66, 0x6b, 0xf1, 0xa1, 0xb5,
 | 
			
		||||
	0x5d, 0x85, 0x65, 0xa1, 0xc4, 0xbb, 0x7f, 0xb6, 0x60, 0x65, 0xd2, 0x4f, 0xe4, 0xd0, 0x58, 0x68,
 | 
			
		||||
	0x29, 0x25, 0x3f, 0x9e, 0xc3, 0xc5, 0x48, 0x48, 0xb5, 0xaa, 0x4a, 0x84, 0xb3, 0x09, 0xb5, 0x21,
 | 
			
		||||
	0x69, 0x96, 0x8a, 0xb5, 0x9c, 0x8a, 0xee, 0x26, 0x94, 0x28, 0xeb, 0x91, 0x16, 0x2c, 0x86, 0x26,
 | 
			
		||||
	0x29, 0xe8, 0x62, 0x18, 0x90, 0x55, 0x28, 0x05, 0xac, 0x67, 0x82, 0xdf, 0xf2, 0x92, 0x73, 0x6f,
 | 
			
		||||
	0x97, 0xf5, 0xc2, 0x38, 0x94, 0x21, 0x8f, 0x29, 0x7e, 0x72, 0xff, 0x6a, 0x61, 0x72, 0xa1, 0x5a,
 | 
			
		||||
	0xe4, 0xd3, 0x31, 0x3b, 0x66, 0xa7, 0xca, 0x35, 0xed, 0x9f, 0x16, 0x6b, 0xff, 0x51, 0x5e, 0xfb,
 | 
			
		||||
	0x99, 0xf9, 0x93, 0xb7, 0x4e, 0x42, 0x93, 0x32, 0x39, 0x10, 0x31, 0x65, 0xbf, 0x1d, 0xb0, 0x54,
 | 
			
		||||
	0x92, 0x9f, 0x65, 0x11, 0x51, 0xf2, 0x67, 0xa5, 0x15, 0x32, 0x52, 0x03, 0x20, 0x6d, 0x58, 0x62,
 | 
			
		||||
	0x42, 0x70, 0x61, 0xb4, 0x20, 0x9e, 0xae, 0x1c, 0x9e, 0x48, 0xba, 0xde, 0x99, 0xaa, 0x1c, 0x54,
 | 
			
		||||
	0x33, 0xb8, 0x2b, 0xd0, 0xca, 0x4e, 0x4d, 0x13, 0x1e, 0xa7, 0xcc, 0xbd, 0x03, 0xcd, 0xc3, 0x38,
 | 
			
		||||
	0x19, 0xc8, 0xd4, 0xe8, 0xe1, 0xfe, 0xc3, 0x82, 0x56, 0x46, 0xd1, 0x3c, 0xe4, 0x2b, 0xa8, 0x8f,
 | 
			
		||||
	0x7c, 0x9c, 0x39, 0x73, 0xab, 0x40, 0xbf, 0x71, 0x7c, 0x2e, 0x40, 0xc6, 0xb7, 0x79, 0x71, 0xce,
 | 
			
		||||
	0x09, 0xac, 0x4c, 0x32, 0x4c, 0xf1, 0xf4, 0x7b, 0xe3, 0x9e, 0x9e, 0x0c, 0x7c, 0xce, 0xb3, 0x7f,
 | 
			
		||||
	0xb2, 0xe0, 0x2d, 0xca, 0x54, 0x29, 0x3c, 0xbc, 0xf0, 0xfb, 0x6c, 0x87, 0xc7, 0xbd, 0xb0, 0x9f,
 | 
			
		||||
	0xb9, 0x79, 0x45, 0x65, 0x55, 0x26, 0x19, 0x13, 0xac, 0x0d, 0xd5, 0xd3, 0xc8, 0x97, 0x3d, 0x2e,
 | 
			
		||||
	0x2e, 0x8c, 0xf0, 0x06, 0x0a, 0xcf, 0x68, 0x74, 0xf8, 0x95, 0xac, 0x42, 0xdd, 0x08, 0x3e, 0xe6,
 | 
			
		||||
	0x01, 0x53, 0x35, 0xa3, 0x46, 0xf3, 0x24, 0x62, 0x43, 0xe5, 0x88, 0xf7, 0x4f, 0xfc, 0x0b, 0xa6,
 | 
			
		||||
	0x8a, 0x43, 0x8d, 0x66, 0x5b, 0xf7, 0x77, 0x16, 0x38, 0xd3, 0xb4, 0x32, 0x2e, 0xfe, 0x0c, 0x96,
 | 
			
		||||
	0x77, 0xc3, 0x3e, 0x4b, 0x75, 0xf4, 0x6b, 0xdb, 0x1b, 0xdf, 0x7e, 0xf7, 0xce, 0xc2, 0xbf, 0xbf,
 | 
			
		||||
	0x7b, 0xe7, 0x7e, 0xae, 0xae, 0xf2, 0x84, 0xc5, 0x5d, 0x1e, 0x4b, 0x3f, 0x8c, 0x99, 0xc0, 0xf6,
 | 
			
		||||
	0xf0, 0x41, 0xa0, 0x20, 0x9e, 0x46, 0x52, 0x23, 0x81, 0xbc, 0x09, 0xcb, 0x5a, 0xba, 0xb9, 0xf6,
 | 
			
		||||
	0x66, 0xe7, 0xfe, 0x7d, 0x09, 0x1a, 0x67, 0xa8, 0x40, 0xe6, 0x0b, 0x0f, 0x60, 0xe4, 0x42, 0x93,
 | 
			
		||||
	0x76, 0x93, 0x8e, 0xcd, 0x71, 0x10, 0x07, 0xaa, 0xfb, 0x26, 0xc4, 0xe6, 0xba, 0x0e, 0xf7, 0xe4,
 | 
			
		||||
	0x4b, 0xa8, 0x67, 0xeb, 0x27, 0x89, 0xb4, 0x4b, 0x2a, 0x47, 0x1e, 0x16, 0xe4, 0x48, 0x5e, 0x13,
 | 
			
		||||
	0x2f, 0x07, 0x35, 0x19, 0x92, 0xa3, 0x90, 0x75, 0x78, 0xcd, 0x8f, 0x22, 0x7e, 0x69, 0xd2, 0x5e,
 | 
			
		||||
	0x25, 0xb0, 0xbd, 0xb4, 0x6a, 0xb5, 0xab, 0xf4, 0xfa, 0x07, 0xf2, 0x21, 0xbc, 0x9e, 0x23, 0x3e,
 | 
			
		||||
	0x16, 0xc2, 0xbf, 0xc2, 0x88, 0x2f, 0x2b, 0xfe, 0x69, 0x9f, 0xb0, 0x06, 0xed, 0x87, 0xb1, 0x1f,
 | 
			
		||||
	0xd9, 0xa0, 0x78, 0xf4, 0x86, 0xb8, 0xd0, 0xd8, 0x7b, 0x99, 0x70, 0x21, 0x99, 0x78, 0x2c, 0xa5,
 | 
			
		||||
	0xb0, 0xeb, 0xca, 0x99, 0x63, 0x34, 0x72, 0x0a, 0x8d, 0x1d, 0xbf, 0xfb, 0x8c, 0x1d, 0x5e, 0x20,
 | 
			
		||||
	0x31, 0xb5, 0x1b, 0xca, 0xec, 0xf5, 0x02, 0xb3, 0x15, 0xfb, 0x93, 0x24, 0x77, 0x19, 0xc6, 0x24,
 | 
			
		||||
	0x90, 0x2e, 0xb4, 0x32, 0xd3, 0xf5, 0x2d, 0xb2, 0x9b, 0x4a, 0xe6, 0xa3, 0x79, 0x5d, 0xa9, 0xd1,
 | 
			
		||||
	0xfa, 0x88, 0x09, 0x91, 0x18, 0xc8, 0x3d, 0xbc, 0x30, 0xbe, 0x64, 0x76, 0x4b, 0xd9, 0x3c, 0xdc,
 | 
			
		||||
	0x3b, 0x9f, 0xc0, 0xca, 0x64, 0x34, 0xe6, 0x29, 0xdb, 0xce, 0x2f, 0xe1, 0xf5, 0x29, 0x2a, 0x7c,
 | 
			
		||||
	0xaf, 0x1b, 0xfd, 0x37, 0x0b, 0x5e, 0xbb, 0xe6, 0x37, 0x42, 0xa0, 0xfc, 0xc5, 0x55, 0xc2, 0x8c,
 | 
			
		||||
	0x48, 0xb5, 0x26, 0xc7, 0xb0, 0x84, 0x71, 0x49, 0xed, 0x45, 0xe5, 0xb4, 0xcd, 0x79, 0x02, 0xe1,
 | 
			
		||||
	0x29, 0xa4, 0x76, 0x98, 0x96, 0xe2, 0x3c, 0x04, 0x18, 0x11, 0xe7, 0x6a, 0x5e, 0x5f, 0x41, 0xd3,
 | 
			
		||||
	0x44, 0xc5, 0x5c, 0xf0, 0x15, 0x3d, 0x67, 0x18, 0x30, 0x4e, 0x11, 0xa3, 0x82, 0x5f, 0x9a, 0xb3,
 | 
			
		||||
	0xe0, 0xbb, 0xdf, 0xc0, 0x1d, 0xca, 0xfc, 0x60, 0x3f, 0x8c, 0xd8, 0xcd, 0x75, 0x0d, 0x6f, 0x6b,
 | 
			
		||||
	0x18, 0xb1, 0x53, 0x5f, 0x3e, 0x1b, 0xde, 0x56, 0xb3, 0x27, 0x5b, 0xb0, 0x44, 0xfd, 0xb8, 0xcf,
 | 
			
		||||
	0xcc, 0xd1, 0xef, 0x15, 0x1c, 0xad, 0x0e, 0x41, 0x5e, 0xaa, 0x21, 0xee, 0x23, 0xa8, 0x0d, 0x69,
 | 
			
		||||
	0x58, 0x6b, 0x9e, 0xf4, 0x7a, 0x29, 0xd3, 0x75, 0xab, 0x44, 0xcd, 0x0e, 0xe9, 0x47, 0x2c, 0xee,
 | 
			
		||||
	0x9b, 0xa3, 0x4b, 0xd4, 0xec, 0xdc, 0x35, 0x1c, 0x36, 0x32, 0xcd, 0x8d, 0x6b, 0x08, 0x94, 0x77,
 | 
			
		||||
	0x71, 0x22, 0xb2, 0xd4, 0x05, 0x53, 0x6b, 0x37, 0xc0, 0x46, 0xe5, 0x07, 0xbb, 0xa1, 0xb8, 0xd9,
 | 
			
		||||
	0x40, 0x1b, 0x2a, 0xbb, 0xa1, 0xc8, 0xd9, 0x97, 0x6d, 0xc9, 0x1a, 0xb6, 0xb0, 0x6e, 0x34, 0x08,
 | 
			
		||||
	0xd0, 0x5a, 0xc9, 0x44, 0x6c, 0x6a, 0xf5, 0x04, 0xd5, 0xfd, 0x54, 0xfb, 0x51, 0x9d, 0x62, 0x94,
 | 
			
		||||
	0x59, 0x87, 0x0a, 0x8b, 0xa5, 0x08, 0x59, 0xd6, 0xe7, 0x88, 0xa7, 0x87, 0x58, 0x4f, 0x0d, 0xb1,
 | 
			
		||||
	0xaa, 0x9f, 0xd2, 0x8c, 0xc5, 0xdd, 0x84, 0x3b, 0x48, 0x28, 0x0e, 0x04, 0x81, 0x72, 0x4e, 0x49,
 | 
			
		||||
	0xb5, 0x76, 0xb7, 0x60, 0x65, 0x04, 0x34, 0x47, 0xaf, 0x41, 0x19, 0x47, 0x64, 0x53, 0x88, 0xa7,
 | 
			
		||||
	0x9d, 0xab, 0xbe, 0xbb, 0x4d, 0xa8, 0x9f, 0x86, 0x71, 0xd6, 0xd1, 0xdc, 0x57, 0x16, 0x34, 0x4e,
 | 
			
		||||
	0x79, 0x3c, 0xea, 0x25, 0xa7, 0x70, 0x27, 0xbb, 0x81, 0x8f, 0x4f, 0x0f, 0x77, 0xfc, 0x24, 0x33,
 | 
			
		||||
	0x65, 0xf5, 0x7a, 0x98, 0xcd, 0x34, 0xef, 0x69, 0xc6, 0xed, 0x32, 0xb6, 0x1d, 0x3a, 0x09, 0x27,
 | 
			
		||||
	0xbf, 0x80, 0xca, 0xd1, 0xd1, 0xb6, 0x92, 0xb4, 0x38, 0x97, 0xa4, 0x0c, 0x46, 0x3e, 0x81, 0xca,
 | 
			
		||||
	0x53, 0xf5, 0xc8, 0x48, 0x4d, 0x6b, 0x98, 0x92, 0x72, 0xda, 0x50, 0xcd, 0x46, 0x59, 0x97, 0x8b,
 | 
			
		||||
	0x80, 0x66, 0x20, 0xf7, 0xbf, 0x16, 0xd4, 0x9f, 0xfa, 0xa3, 0x69, 0xe9, 0x33, 0x58, 0x0e, 0xbe,
 | 
			
		||||
	0x77, 0xbf, 0xd4, 0x5b, 0xbc, 0xc5, 0x11, 0x7b, 0xc1, 0x22, 0x93, 0xaa, 0x7a, 0x83, 0xd4, 0xf4,
 | 
			
		||||
	0x19, 0x17, 0xfa, 0x76, 0x36, 0xa8, 0xde, 0x60, 0x5e, 0x07, 0x4c, 0xfa, 0x61, 0x64, 0x97, 0x57,
 | 
			
		||||
	0x4b, 0xd8, 0x5b, 0xf5, 0x0e, 0xa3, 0x3e, 0x10, 0x91, 0x6a, 0x4a, 0x35, 0x8a, 0x4b, 0xe2, 0x42,
 | 
			
		||||
	0x39, 0x8c, 0x7b, 0x5c, 0xf5, 0x1d, 0x53, 0xdd, 0xce, 0xf8, 0x40, 0x74, 0xd9, 0x61, 0xdc, 0xe3,
 | 
			
		||||
	0x54, 0x7d, 0x23, 0xef, 0xc2, 0xb2, 0xc0, 0x6b, 0x94, 0xda, 0x15, 0xe5, 0x94, 0x1a, 0x72, 0xe9,
 | 
			
		||||
	0xcb, 0x66, 0x3e, 0xb8, 0x2d, 0x68, 0x68, 0xbb, 0xcd, 0xbc, 0xf6, 0xc7, 0x45, 0x78, 0xfd, 0x84,
 | 
			
		||||
	0x5d, 0xee, 0x64, 0x76, 0x65, 0x0e, 0x59, 0x85, 0xfa, 0x90, 0x76, 0xb8, 0x6b, 0xd2, 0x2f, 0x4f,
 | 
			
		||||
	0xc2, 0xc3, 0x8e, 0xf9, 0x20, 0x96, 0x59, 0x0c, 0xd5, 0x61, 0x8a, 0x42, 0xcd, 0x07, 0xf2, 0x63,
 | 
			
		||||
	0xa8, 0x9c, 0x30, 0x89, 0xaf, 0x41, 0x65, 0x75, 0x6b, 0xa3, 0x8e, 0x3c, 0x27, 0x4c, 0xe2, 0x70,
 | 
			
		||||
	0x43, 0xb3, 0x6f, 0x38, 0x31, 0x25, 0xd9, 0xc4, 0x54, 0x9e, 0x36, 0x31, 0x65, 0x5f, 0xc9, 0x26,
 | 
			
		||||
	0xd4, 0xbb, 0x3c, 0x4e, 0xa5, 0xf0, 0x43, 0x3c, 0x78, 0x49, 0x31, 0xff, 0x00, 0x99, 0x75, 0x60,
 | 
			
		||||
	0x77, 0x46, 0x1f, 0x69, 0x9e, 0x93, 0xdc, 0x07, 0x60, 0x2f, 0xa5, 0xf0, 0x0f, 0x78, 0x2a, 0x53,
 | 
			
		||||
	0x7b, 0x59, 0x29, 0x0c, 0x88, 0x43, 0xc2, 0xe1, 0x29, 0xcd, 0x7d, 0x75, 0xdf, 0x84, 0x37, 0xc6,
 | 
			
		||||
	0x3d, 0x62, 0x5c, 0xf5, 0x08, 0x7e, 0x48, 0x59, 0xc4, 0xfc, 0x94, 0xcd, 0xef, 0x2d, 0xd7, 0x01,
 | 
			
		||||
	0xfb, 0x3a, 0xd8, 0x08, 0xfe, 0x5f, 0x09, 0xea, 0x7b, 0x2f, 0x59, 0xf7, 0x98, 0xa5, 0xa9, 0xdf,
 | 
			
		||||
	0x67, 0xe4, 0x6d, 0xa8, 0x9d, 0x0a, 0xde, 0x65, 0x69, 0x3a, 0x94, 0x35, 0x22, 0x90, 0x9f, 0x43,
 | 
			
		||||
	0xf9, 0x30, 0x0e, 0xa5, 0x69, 0x73, 0x6b, 0x85, 0x63, 0x73, 0x28, 0x8d, 0x4c, 0x7c, 0x32, 0xe2,
 | 
			
		||||
	0x96, 0x6c, 0x41, 0x19, 0x8b, 0xc4, 0x6d, 0x0a, 0x75, 0x90, 0xc3, 0x22, 0x86, 0x6c, 0xab, 0x47,
 | 
			
		||||
	0x76, 0xf8, 0x35, 0x33, 0x51, 0x6a, 0x17, 0x77, 0x98, 0xf0, 0x6b, 0x36, 0x92, 0x60, 0x90, 0x64,
 | 
			
		||||
	0x0f, 0x2a, 0x67, 0xd2, 0x17, 0xf8, 0xde, 0xd6, 0xd1, 0xbb, 0x57, 0x34, 0x88, 0x68, 0xce, 0x91,
 | 
			
		||||
	0x94, 0x0c, 0x8b, 0x4e, 0xd8, 0x7b, 0x19, 0x4a, 0x73, 0x1b, 0x8a, 0x9c, 0x80, 0x6c, 0x39, 0x43,
 | 
			
		||||
	0x70, 0x8b, 0xe8, 0x5d, 0x1e, 0x33, 0xbb, 0x32, 0x13, 0x8d, 0x6c, 0x39, 0x34, 0x6e, 0xd1, 0x0d,
 | 
			
		||||
	0x67, 0x61, 0x1f, 0xe7, 0xbb, 0xea, 0x4c, 0x37, 0x68, 0xc6, 0x9c, 0x1b, 0x34, 0x61, 0xbb, 0x02,
 | 
			
		||||
	0x4b, 0x6a, 0x9a, 0x71, 0xff, 0x62, 0x41, 0x3d, 0x17, 0xa7, 0x5b, 0xdc, 0xbb, 0xb7, 0xa1, 0x8c,
 | 
			
		||||
	0xef, 0x74, 0x13, 0xff, 0xaa, 0xba, 0x75, 0x4c, 0xfa, 0x54, 0x51, 0xb1, 0x70, 0xec, 0x07, 0xba,
 | 
			
		||||
	0x28, 0x36, 0x29, 0x2e, 0x91, 0xf2, 0x85, 0xbc, 0x52, 0x21, 0xab, 0x52, 0x5c, 0x92, 0x75, 0xa8,
 | 
			
		||||
	0x9e, 0xb1, 0xee, 0x40, 0x84, 0xf2, 0x4a, 0x05, 0xa1, 0xb5, 0xb1, 0xa2, 0xca, 0x89, 0xa1, 0xa9,
 | 
			
		||||
	0xcb, 0x39, 0xe4, 0x70, 0x3f, 0xc7, 0xe4, 0x1c, 0x29, 0x48, 0xa0, 0xbc, 0x83, 0xaf, 0x15, 0xd4,
 | 
			
		||||
	0xac, 0x49, 0xd5, 0x1a, 0x1f, 0x8c, 0x7b, 0xb3, 0x1e, 0x8c, 0x7b, 0xd9, 0x83, 0x71, 0x3c, 0xa8,
 | 
			
		||||
	0xd8, 0x7d, 0x72, 0x4e, 0x76, 0x1f, 0x43, 0x6d, 0x98, 0x78, 0xf8, 0x56, 0xdf, 0x0f, 0xcc, 0x49,
 | 
			
		||||
	0x8b, 0xfb, 0x01, 0x9a, 0xb2, 0xf7, 0x64, 0x5f, 0x9d, 0x52, 0xa5, 0xb8, 0x1c, 0xf6, 0xfa, 0x52,
 | 
			
		||||
	0xae, 0xd7, 0x6f, 0xe2, 0x53, 0x38, 0x97, 0x7d, 0xc8, 0x44, 0xf9, 0x65, 0x9a, 0xa9, 0x8c, 0x6b,
 | 
			
		||||
	0x6d, 0x46, 0x94, 0x2a, 0x59, 0xca, 0x8c, 0x28, 0x75, 0x7f, 0x04, 0xcd, 0xb1, 0x78, 0x21, 0x93,
 | 
			
		||||
	0x7a, 0x7b, 0x99, 0x91, 0x10, 0xd7, 0x1b, 0xff, 0xaa, 0x41, 0xed, 0xe8, 0x68, 0x7b, 0x5b, 0x84,
 | 
			
		||||
	0x41, 0x9f, 0x91, 0xdf, 0x5b, 0x40, 0xae, 0x3f, 0xc3, 0xc8, 0x47, 0xc5, 0x37, 0x63, 0xfa, 0x5b,
 | 
			
		||||
	0xd2, 0xf9, 0x78, 0x4e, 0x94, 0xe9, 0xcf, 0x5f, 0xc2, 0x92, 0x9a, 0x0d, 0xc9, 0x4f, 0x6e, 0x39,
 | 
			
		||||
	0xd3, 0x3b, 0xed, 0xd9, 0x8c, 0x46, 0x76, 0x17, 0xaa, 0xd9, 0x7c, 0x45, 0xee, 0x17, 0xaa, 0x37,
 | 
			
		||||
	0x36, 0x3e, 0x3a, 0xef, 0xdf, 0x8a, 0xd7, 0x1c, 0xf2, 0x1b, 0xa8, 0x98, 0xb1, 0x89, 0xdc, 0x9b,
 | 
			
		||||
	0x81, 0x1b, 0x0d, 0x70, 0xce, 0xfd, 0xdb, 0xb0, 0x8e, 0xcc, 0xc8, 0xc6, 0xa3, 0x42, 0x33, 0x26,
 | 
			
		||||
	0x86, 0xaf, 0x42, 0x33, 0xae, 0xcd, 0x5b, 0x4f, 0xa1, 0x8c, 0x73, 0x14, 0x29, 0xaa, 0x27, 0xb9,
 | 
			
		||||
	0x41, 0xcb, 0x29, 0x0a, 0xd7, 0xd8, 0x00, 0xf6, 0x6b, 0xac, 0xbb, 0xea, 0x2d, 0x5a, 0x5c, 0x71,
 | 
			
		||||
	0x73, 0x7f, 0xff, 0x38, 0xf7, 0x6e, 0xc1, 0x39, 0x12, 0x6f, 0xde, 0x71, 0xed, 0x5b, 0xfc, 0x07,
 | 
			
		||||
	0x33, 0x5b, 0xfc, 0xc4, 0xbf, 0x3d, 0x1c, 0x1a, 0xf9, 0x76, 0x4a, 0xbc, 0x02, 0xe8, 0x94, 0x49,
 | 
			
		||||
	0xc4, 0xe9, 0xdc, 0x9a, 0xdf, 0x1c, 0xf8, 0x0d, 0xbe, 0x09, 0xc6, 0x5b, 0x2d, 0xd9, 0x28, 0x74,
 | 
			
		||||
	0xc7, 0xd4, 0xa6, 0xee, 0x3c, 0x98, 0x0b, 0x63, 0x0e, 0xf7, 0x75, 0x2b, 0x37, 0xed, 0x9a, 0x14,
 | 
			
		||||
	0x77, 0xa6, 0x61, 0xcb, 0x77, 0x6e, 0xc9, 0xd7, 0xb6, 0x3e, 0xb4, 0x30, 0xcf, 0x70, 0x84, 0x2b,
 | 
			
		||||
	0x94, 0x9d, 0x9b, 0x6d, 0x0b, 0xf3, 0x2c, 0x3f, 0x0b, 0x6e, 0x37, 0xbe, 0x7d, 0x75, 0xd7, 0xfa,
 | 
			
		||||
	0xe7, 0xab, 0xbb, 0xd6, 0x7f, 0x5e, 0xdd, 0xb5, 0xce, 0x97, 0xd5, 0x5f, 0xeb, 0x0f, 0xfe, 0x1f,
 | 
			
		||||
	0x00, 0x00, 0xff, 0xff, 0xce, 0x5a, 0x92, 0x41, 0xac, 0x18, 0x00, 0x00,
 | 
			
		||||
	0x15, 0x37, 0xad, 0xef, 0xa7, 0x8f, 0x75, 0x26, 0x69, 0xca, 0x10, 0xc1, 0xc6, 0x61, 0x53, 0x57,
 | 
			
		||||
	0xbb, 0x71, 0xa8, 0xd4, 0x9b, 0xc0, 0x5b, 0x6f, 0x91, 0x74, 0xfd, 0x05, 0x2b, 0xb1, 0xbd, 0xee,
 | 
			
		||||
	0x38, 0xc5, 0x02, 0x41, 0x0a, 0x94, 0x16, 0x47, 0x5a, 0x62, 0x69, 0x92, 0x1d, 0x8e, 0xd6, 0xeb,
 | 
			
		||||
	0xe4, 0xd2, 0xde, 0x7a, 0xec, 0xa9, 0xd7, 0x02, 0xfd, 0x0b, 0x7a, 0xea, 0xb1, 0xe7, 0x1c, 0x7b,
 | 
			
		||||
	0x29, 0x50, 0xf4, 0x10, 0x14, 0xfb, 0x47, 0x14, 0xe8, 0xad, 0x78, 0x33, 0x43, 0x89, 0x92, 0x65,
 | 
			
		||||
	0x4a, 0x42, 0x4e, 0x9a, 0x79, 0x7c, 0xbf, 0x37, 0xef, 0x6b, 0xde, 0x7b, 0x23, 0x68, 0x0e, 0x5c,
 | 
			
		||||
	0xc1, 0xae, 0xdc, 0x6b, 0x27, 0xe6, 0x91, 0x88, 0xc8, 0x5b, 0x97, 0xd1, 0xc5, 0xb5, 0x73, 0x31,
 | 
			
		||||
	0xf4, 0x03, 0xef, 0xb9, 0x2f, 0x9c, 0x17, 0x3f, 0x75, 0xfa, 0x3c, 0x0a, 0x05, 0x0b, 0x3d, 0xeb,
 | 
			
		||||
	0x83, 0x81, 0x2f, 0x9e, 0x0d, 0x2f, 0x9c, 0x5e, 0x74, 0xd9, 0x19, 0x44, 0x83, 0xa8, 0x23, 0x11,
 | 
			
		||||
	0x17, 0xc3, 0xbe, 0xdc, 0xc9, 0x8d, 0x5c, 0x29, 0x49, 0xd6, 0xd6, 0x34, 0xfb, 0x20, 0x8a, 0x06,
 | 
			
		||||
	0x01, 0x73, 0x63, 0x3f, 0xd1, 0xcb, 0x0e, 0x8f, 0x7b, 0x9d, 0x44, 0xb8, 0x62, 0x98, 0x68, 0xcc,
 | 
			
		||||
	0x66, 0x06, 0x83, 0x8a, 0x74, 0x52, 0x45, 0x3a, 0x49, 0x14, 0xbc, 0x60, 0xbc, 0x13, 0x5f, 0x74,
 | 
			
		||||
	0xa2, 0x38, 0xe5, 0xee, 0xdc, 0xca, 0xed, 0xc6, 0x7e, 0x47, 0x5c, 0xc7, 0x2c, 0xe9, 0x5c, 0x45,
 | 
			
		||||
	0xfc, 0x39, 0xe3, 0x1a, 0xf0, 0xe0, 0x56, 0xc0, 0x50, 0xf8, 0x01, 0xa2, 0x7a, 0x6e, 0x9c, 0xe0,
 | 
			
		||||
	0x21, 0xf8, 0xab, 0x41, 0x59, 0xb3, 0x45, 0x14, 0xfa, 0x89, 0xf0, 0xfd, 0x81, 0xdf, 0xe9, 0x27,
 | 
			
		||||
	0x12, 0xa3, 0x4e, 0x41, 0x23, 0x14, 0xbb, 0xfd, 0x87, 0x02, 0x94, 0x29, 0x4b, 0x86, 0x81, 0x20,
 | 
			
		||||
	0x1b, 0xd0, 0xe4, 0xac, 0xbf, 0xcf, 0x62, 0xce, 0x7a, 0xae, 0x60, 0x9e, 0x69, 0xac, 0x1b, 0xed,
 | 
			
		||||
	0xda, 0xd1, 0x0a, 0x9d, 0x24, 0x93, 0x5f, 0x41, 0x8b, 0xb3, 0x7e, 0x92, 0x61, 0x5c, 0x5d, 0x37,
 | 
			
		||||
	0xda, 0xf5, 0xad, 0xf7, 0x9d, 0x5b, 0x83, 0xe1, 0x50, 0xd6, 0x3f, 0x71, 0xe3, 0x31, 0xe4, 0x68,
 | 
			
		||||
	0x85, 0x4e, 0x09, 0x21, 0x5b, 0x50, 0xe0, 0xac, 0x6f, 0x16, 0xa4, 0xac, 0xbb, 0xf9, 0xb2, 0x8e,
 | 
			
		||||
	0x56, 0x28, 0x32, 0x93, 0x6d, 0x28, 0xa2, 0x14, 0xb3, 0x28, 0x41, 0xef, 0xce, 0x55, 0xe0, 0x68,
 | 
			
		||||
	0x85, 0x4a, 0x00, 0xf9, 0x1c, 0xaa, 0x97, 0x4c, 0xb8, 0x9e, 0x2b, 0x5c, 0x13, 0xd6, 0x0b, 0xed,
 | 
			
		||||
	0xfa, 0x56, 0x27, 0x17, 0x8c, 0x0e, 0x72, 0x4e, 0x34, 0xe2, 0x20, 0x14, 0xfc, 0x9a, 0x8e, 0x04,
 | 
			
		||||
	0x58, 0x8f, 0xa0, 0x39, 0xf1, 0x89, 0xac, 0x41, 0xe1, 0x39, 0xbb, 0x56, 0xfe, 0xa3, 0xb8, 0x24,
 | 
			
		||||
	0x6f, 0x40, 0xe9, 0x85, 0x1b, 0x0c, 0x99, 0x74, 0x55, 0x83, 0xaa, 0xcd, 0xce, 0xea, 0x43, 0x63,
 | 
			
		||||
	0xb7, 0x0a, 0x65, 0x2e, 0xc5, 0xdb, 0x7f, 0x32, 0x60, 0x6d, 0xda, 0x4f, 0xa4, 0xab, 0x2d, 0x34,
 | 
			
		||||
	0xa4, 0x92, 0x1f, 0x2f, 0xe1, 0x62, 0x24, 0x24, 0x4a, 0x55, 0x29, 0xc2, 0xda, 0x86, 0xda, 0x88,
 | 
			
		||||
	0x34, 0x4f, 0xc5, 0x5a, 0x46, 0x45, 0x7b, 0x1b, 0x0a, 0x94, 0xf5, 0x49, 0x0b, 0x56, 0x7d, 0x9d,
 | 
			
		||||
	0x14, 0x74, 0xd5, 0xf7, 0xc8, 0x3a, 0x14, 0x3c, 0xd6, 0xd7, 0xc1, 0x6f, 0x39, 0xf1, 0x85, 0xb3,
 | 
			
		||||
	0xcf, 0xfa, 0x7e, 0xe8, 0x0b, 0x3f, 0x0a, 0x29, 0x7e, 0xb2, 0xff, 0x62, 0x60, 0x72, 0xa1, 0x5a,
 | 
			
		||||
	0xe4, 0xd3, 0x09, 0x3b, 0xe6, 0xa7, 0xca, 0x0d, 0xed, 0x9f, 0xe6, 0x6b, 0xff, 0x51, 0x56, 0xfb,
 | 
			
		||||
	0xb9, 0xf9, 0x93, 0xb5, 0x4e, 0x40, 0x93, 0x32, 0x31, 0xe4, 0x21, 0x65, 0xbf, 0x1d, 0xb2, 0x44,
 | 
			
		||||
	0x90, 0x9f, 0xa5, 0x11, 0x91, 0xf2, 0xe7, 0xa5, 0x15, 0x32, 0x52, 0x0d, 0x20, 0x6d, 0x28, 0x31,
 | 
			
		||||
	0xce, 0x23, 0xae, 0xb5, 0x20, 0x8e, 0xaa, 0x1c, 0x0e, 0x8f, 0x7b, 0xce, 0xb9, 0xac, 0x1c, 0x54,
 | 
			
		||||
	0x31, 0xd8, 0x6b, 0xd0, 0x4a, 0x4f, 0x4d, 0xe2, 0x28, 0x4c, 0x98, 0x7d, 0x07, 0x9a, 0xdd, 0x30,
 | 
			
		||||
	0x1e, 0x8a, 0x44, 0xeb, 0x61, 0xff, 0xdd, 0x80, 0x56, 0x4a, 0x51, 0x3c, 0xe4, 0x2b, 0xa8, 0x8f,
 | 
			
		||||
	0x7d, 0x9c, 0x3a, 0x73, 0x27, 0x47, 0xbf, 0x49, 0x7c, 0x26, 0x40, 0xda, 0xb7, 0x59, 0x71, 0xd6,
 | 
			
		||||
	0x29, 0xac, 0x4d, 0x33, 0xcc, 0xf0, 0xf4, 0x7b, 0x93, 0x9e, 0x9e, 0x0e, 0x7c, 0xc6, 0xb3, 0xff,
 | 
			
		||||
	0x34, 0xe0, 0x2d, 0xca, 0x64, 0x29, 0xec, 0x5e, 0xba, 0x03, 0xb6, 0x17, 0x85, 0x7d, 0x7f, 0x90,
 | 
			
		||||
	0xba, 0x79, 0x4d, 0x66, 0x55, 0x2a, 0x19, 0x13, 0xac, 0x0d, 0xd5, 0xb3, 0xc0, 0x15, 0xfd, 0x88,
 | 
			
		||||
	0x5f, 0x6a, 0xe1, 0x0d, 0x14, 0x9e, 0xd2, 0xe8, 0xe8, 0x2b, 0x59, 0x87, 0xba, 0x16, 0x7c, 0x12,
 | 
			
		||||
	0x79, 0x4c, 0xd6, 0x8c, 0x1a, 0xcd, 0x92, 0x88, 0x09, 0x95, 0xe3, 0x68, 0x70, 0xea, 0x5e, 0x32,
 | 
			
		||||
	0x59, 0x1c, 0x6a, 0x34, 0xdd, 0x12, 0x1b, 0x1a, 0x9a, 0x91, 0x7f, 0x71, 0x1d, 0x33, 0xb3, 0xb4,
 | 
			
		||||
	0x6e, 0xb4, 0x4b, 0x74, 0x82, 0x46, 0xde, 0x86, 0xda, 0x39, 0x4b, 0x12, 0x3f, 0x0a, 0xbb, 0xfb,
 | 
			
		||||
	0x66, 0x59, 0xe2, 0xc7, 0x04, 0xfb, 0x77, 0x06, 0x58, 0xb3, 0xec, 0xd2, 0x41, 0xfa, 0x0c, 0xca,
 | 
			
		||||
	0xfb, 0xfe, 0x80, 0x25, 0x2a, 0x7f, 0x6a, 0xbb, 0x5b, 0xdf, 0x7e, 0xf7, 0xce, 0xca, 0xbf, 0xbf,
 | 
			
		||||
	0x7b, 0xe7, 0x7e, 0xa6, 0x32, 0x47, 0x31, 0x0b, 0x7b, 0x51, 0x28, 0x5c, 0x3f, 0x64, 0x1c, 0x1b,
 | 
			
		||||
	0xcc, 0x07, 0x9e, 0x84, 0x38, 0x0a, 0x49, 0xb5, 0x04, 0xf2, 0x26, 0x94, 0x95, 0x74, 0x5d, 0x38,
 | 
			
		||||
	0xf4, 0xce, 0xfe, 0x5b, 0x09, 0x1a, 0xe7, 0xa8, 0x40, 0xea, 0x4d, 0x07, 0x60, 0x1c, 0x04, 0x9d,
 | 
			
		||||
	0xb8, 0xd3, 0xa1, 0xc9, 0x70, 0x10, 0x0b, 0xaa, 0x87, 0x3a, 0x49, 0xf4, 0x85, 0x1f, 0xed, 0xc9,
 | 
			
		||||
	0x97, 0x50, 0x4f, 0xd7, 0x4f, 0x62, 0x61, 0x16, 0x64, 0x96, 0x3d, 0xcc, 0xc9, 0xb2, 0xac, 0x26,
 | 
			
		||||
	0x4e, 0x06, 0xaa, 0x73, 0x2c, 0x43, 0x21, 0x9b, 0xf0, 0x9a, 0x1b, 0x04, 0xd1, 0x95, 0xbe, 0x38,
 | 
			
		||||
	0xf2, 0x0a, 0xc8, 0x10, 0x54, 0xe9, 0xcd, 0x0f, 0xe4, 0x43, 0x78, 0x3d, 0x43, 0x7c, 0xcc, 0xb9,
 | 
			
		||||
	0x7b, 0x8d, 0x39, 0x53, 0x96, 0xfc, 0xb3, 0x3e, 0x61, 0x15, 0x3b, 0xf4, 0x43, 0x37, 0x30, 0x41,
 | 
			
		||||
	0xf2, 0xa8, 0x0d, 0xc6, 0xfc, 0xe0, 0x65, 0x1c, 0x71, 0xc1, 0xf8, 0x63, 0x21, 0xb8, 0x59, 0x97,
 | 
			
		||||
	0xce, 0x9c, 0xa0, 0x91, 0x33, 0x68, 0xec, 0xb9, 0xbd, 0x67, 0xac, 0x7b, 0x89, 0xc4, 0xc4, 0x6c,
 | 
			
		||||
	0x48, 0xb3, 0x37, 0x73, 0xcc, 0x96, 0xec, 0x4f, 0xe2, 0xcc, 0x75, 0x9a, 0x90, 0x40, 0x7a, 0xd0,
 | 
			
		||||
	0x4a, 0x4d, 0x57, 0xf7, 0xd0, 0x6c, 0x4a, 0x99, 0x8f, 0x96, 0x75, 0xa5, 0x42, 0xab, 0x23, 0xa6,
 | 
			
		||||
	0x44, 0x62, 0x20, 0x0f, 0xf0, 0xca, 0xb9, 0x82, 0x99, 0x2d, 0x69, 0xf3, 0x68, 0x6f, 0x7d, 0x02,
 | 
			
		||||
	0x6b, 0xd3, 0xd1, 0x58, 0xa6, 0xf0, 0x5b, 0xbf, 0x84, 0xd7, 0x67, 0xa8, 0xf0, 0xbd, 0x6a, 0xc2,
 | 
			
		||||
	0x5f, 0x0d, 0x78, 0xed, 0x86, 0xdf, 0x08, 0x81, 0xa2, 0xbc, 0x8b, 0x4a, 0xa4, 0x5c, 0x93, 0x13,
 | 
			
		||||
	0x28, 0x61, 0x5c, 0x12, 0x73, 0x55, 0x3a, 0x6d, 0x7b, 0x99, 0x40, 0x38, 0x12, 0xa9, 0x1c, 0xa6,
 | 
			
		||||
	0xa4, 0x58, 0x0f, 0x01, 0xc6, 0xc4, 0xa5, 0xda, 0xdf, 0x57, 0xd0, 0xd4, 0x51, 0xd1, 0x17, 0x7c,
 | 
			
		||||
	0x4d, 0x4d, 0x2a, 0x1a, 0x8c, 0x73, 0xc8, 0xb8, 0x65, 0x14, 0x96, 0x6c, 0x19, 0xf6, 0x37, 0x70,
 | 
			
		||||
	0x87, 0x32, 0xd7, 0x3b, 0xf4, 0x03, 0x76, 0x7b, 0x65, 0xc4, 0xdb, 0xea, 0x07, 0xec, 0xcc, 0x15,
 | 
			
		||||
	0xcf, 0x46, 0xb7, 0x55, 0xef, 0xc9, 0x0e, 0x94, 0xa8, 0x1b, 0x0e, 0x98, 0x3e, 0xfa, 0xbd, 0x9c,
 | 
			
		||||
	0xa3, 0xe5, 0x21, 0xc8, 0x4b, 0x15, 0xc4, 0x7e, 0x04, 0xb5, 0x11, 0x0d, 0x6b, 0xcd, 0x93, 0x7e,
 | 
			
		||||
	0x3f, 0x61, 0xaa, 0x6e, 0x15, 0xa8, 0xde, 0x21, 0xfd, 0x98, 0x85, 0x03, 0x7d, 0x74, 0x81, 0xea,
 | 
			
		||||
	0x9d, 0xbd, 0x81, 0xe3, 0x4a, 0xaa, 0xb9, 0x76, 0x0d, 0x81, 0xe2, 0x3e, 0xce, 0x54, 0x86, 0xbc,
 | 
			
		||||
	0x60, 0x72, 0x6d, 0x7b, 0xd8, 0xea, 0x5c, 0x6f, 0xdf, 0xe7, 0xb7, 0x1b, 0x68, 0x42, 0x65, 0xdf,
 | 
			
		||||
	0xe7, 0x19, 0xfb, 0xd2, 0x2d, 0xd9, 0xc0, 0x26, 0xd8, 0x0b, 0x86, 0x1e, 0x5a, 0x2b, 0x18, 0x0f,
 | 
			
		||||
	0x75, 0xb5, 0x9f, 0xa2, 0xda, 0x9f, 0x2a, 0x3f, 0xca, 0x53, 0xb4, 0x32, 0x9b, 0x50, 0x61, 0xa1,
 | 
			
		||||
	0xe0, 0x3e, 0x4b, 0x3b, 0x25, 0x71, 0xd4, 0x18, 0xec, 0xc8, 0x31, 0x58, 0x76, 0x64, 0x9a, 0xb2,
 | 
			
		||||
	0xd8, 0xdb, 0x70, 0x07, 0x09, 0xf9, 0x81, 0x20, 0x50, 0xcc, 0x28, 0x29, 0xd7, 0xf6, 0x0e, 0xac,
 | 
			
		||||
	0x8d, 0x81, 0xfa, 0xe8, 0x0d, 0x28, 0xe2, 0x90, 0xad, 0x0b, 0xf1, 0xac, 0x73, 0xe5, 0x77, 0xbb,
 | 
			
		||||
	0x09, 0xf5, 0x33, 0x3f, 0x4c, 0x7b, 0xa2, 0xfd, 0xca, 0x80, 0xc6, 0x59, 0x14, 0x8e, 0x7b, 0xc9,
 | 
			
		||||
	0x19, 0xdc, 0x49, 0x6f, 0xe0, 0xe3, 0xb3, 0xee, 0x9e, 0x1b, 0xa7, 0xa6, 0xac, 0xdf, 0x0c, 0xb3,
 | 
			
		||||
	0x7e, 0x0f, 0x38, 0x8a, 0x71, 0xb7, 0x88, 0x6d, 0x87, 0x4e, 0xc3, 0xc9, 0x2f, 0xa0, 0x72, 0x7c,
 | 
			
		||||
	0xbc, 0x2b, 0x25, 0xad, 0x2e, 0x25, 0x29, 0x85, 0x91, 0x4f, 0xa0, 0xf2, 0x54, 0x3e, 0x53, 0x12,
 | 
			
		||||
	0xdd, 0x1a, 0x66, 0xa4, 0x9c, 0x32, 0x54, 0xb1, 0x51, 0xd6, 0x8b, 0xb8, 0x47, 0x53, 0x90, 0xfd,
 | 
			
		||||
	0x5f, 0x03, 0xea, 0x4f, 0xdd, 0xf1, 0xbc, 0xf5, 0x19, 0x94, 0xbd, 0xef, 0xdd, 0x2f, 0xd5, 0x16,
 | 
			
		||||
	0x6f, 0x71, 0xc0, 0x5e, 0xb0, 0x40, 0xa7, 0xaa, 0xda, 0x20, 0x35, 0x79, 0x16, 0x71, 0x75, 0x3b,
 | 
			
		||||
	0x1b, 0x54, 0x6d, 0x30, 0xaf, 0x3d, 0x26, 0x5c, 0x3f, 0x30, 0x8b, 0xeb, 0x05, 0xec, 0xad, 0x6a,
 | 
			
		||||
	0x87, 0x51, 0x1f, 0xf2, 0x40, 0x36, 0xa5, 0x1a, 0xc5, 0x25, 0xb1, 0xa1, 0xe8, 0x87, 0xfd, 0x48,
 | 
			
		||||
	0xf6, 0x1d, 0x5d, 0xdd, 0xce, 0xa3, 0x21, 0xef, 0xb1, 0x6e, 0xd8, 0x8f, 0xa8, 0xfc, 0x46, 0xde,
 | 
			
		||||
	0x85, 0x32, 0xc7, 0x6b, 0x94, 0x98, 0x15, 0xe9, 0x94, 0x1a, 0x72, 0xa9, 0xcb, 0xa6, 0x3f, 0xd8,
 | 
			
		||||
	0x2d, 0x68, 0x28, 0xbb, 0xf5, 0xc4, 0xf7, 0xc7, 0x55, 0x78, 0xfd, 0x94, 0x5d, 0xed, 0xa5, 0x76,
 | 
			
		||||
	0xa5, 0x0e, 0x59, 0x87, 0xfa, 0x88, 0xd6, 0xdd, 0xd7, 0xe9, 0x97, 0x25, 0xe1, 0x61, 0x27, 0xd1,
 | 
			
		||||
	0x30, 0x14, 0x69, 0x0c, 0xe5, 0x61, 0x92, 0x42, 0xf5, 0x07, 0xf2, 0x63, 0xa8, 0x9c, 0x32, 0x81,
 | 
			
		||||
	0xef, 0x49, 0x69, 0x75, 0x6b, 0xab, 0x8e, 0x3c, 0xa7, 0x4c, 0xe0, 0x78, 0x44, 0xd3, 0x6f, 0x38,
 | 
			
		||||
	0x73, 0xc5, 0xe9, 0xcc, 0x55, 0x9c, 0x35, 0x73, 0xa5, 0x5f, 0xc9, 0x36, 0xd4, 0x7b, 0x51, 0x98,
 | 
			
		||||
	0x08, 0xee, 0xfa, 0x78, 0x70, 0x49, 0x32, 0xff, 0x00, 0x99, 0x55, 0x60, 0xf7, 0xc6, 0x1f, 0x69,
 | 
			
		||||
	0x96, 0x93, 0xdc, 0x07, 0x60, 0x2f, 0x05, 0x77, 0x8f, 0xa2, 0x44, 0x24, 0x66, 0x59, 0x2a, 0x0c,
 | 
			
		||||
	0x88, 0x43, 0x42, 0xf7, 0x8c, 0x66, 0xbe, 0xda, 0x6f, 0xc2, 0x1b, 0x93, 0x1e, 0xd1, 0xae, 0x7a,
 | 
			
		||||
	0x04, 0x3f, 0xa4, 0x2c, 0x60, 0x6e, 0xc2, 0x96, 0xf7, 0x96, 0x6d, 0x81, 0x79, 0x13, 0xac, 0x05,
 | 
			
		||||
	0xff, 0xaf, 0x00, 0xf5, 0x83, 0x97, 0xac, 0x77, 0xc2, 0x92, 0xc4, 0x1d, 0xc8, 0xc9, 0xef, 0x8c,
 | 
			
		||||
	0x47, 0x3d, 0x96, 0x24, 0x23, 0x59, 0x63, 0x02, 0xf9, 0x39, 0x14, 0xbb, 0xa1, 0x2f, 0x74, 0x9b,
 | 
			
		||||
	0xdb, 0xc8, 0x1d, 0xbc, 0x7d, 0xa1, 0x65, 0xe2, 0xa3, 0x13, 0xb7, 0x64, 0x07, 0x8a, 0x58, 0x24,
 | 
			
		||||
	0x16, 0x29, 0xd4, 0x5e, 0x06, 0x8b, 0x18, 0xb2, 0x2b, 0x9f, 0xe9, 0xfe, 0xd7, 0x4c, 0x47, 0xa9,
 | 
			
		||||
	0x9d, 0xdf, 0x61, 0xfc, 0xaf, 0xd9, 0x58, 0x82, 0x46, 0x92, 0x03, 0xa8, 0x9c, 0x0b, 0x97, 0xe3,
 | 
			
		||||
	0x8b, 0x5d, 0x45, 0xef, 0x5e, 0xde, 0x20, 0xa2, 0x38, 0xc7, 0x52, 0x52, 0x2c, 0x3a, 0xe1, 0xe0,
 | 
			
		||||
	0xa5, 0x2f, 0xf4, 0x6d, 0xc8, 0x73, 0x02, 0xb2, 0x65, 0x0c, 0xc1, 0x2d, 0xa2, 0xf7, 0xa3, 0x90,
 | 
			
		||||
	0x99, 0x95, 0xb9, 0x68, 0x64, 0xcb, 0xa0, 0x71, 0x8b, 0x6e, 0x38, 0xf7, 0x07, 0x38, 0xdf, 0x55,
 | 
			
		||||
	0xe7, 0xba, 0x41, 0x31, 0x66, 0xdc, 0xa0, 0x08, 0xbb, 0x15, 0x28, 0xc9, 0x69, 0xc6, 0xfe, 0xb3,
 | 
			
		||||
	0x01, 0xf5, 0x4c, 0x9c, 0x16, 0xb8, 0x77, 0x6f, 0x43, 0x11, 0x5f, 0xfa, 0x3a, 0xfe, 0x55, 0x79,
 | 
			
		||||
	0xeb, 0x98, 0x70, 0xa9, 0xa4, 0x62, 0xe1, 0x38, 0xf4, 0x54, 0x51, 0x6c, 0x52, 0x5c, 0x22, 0xe5,
 | 
			
		||||
	0x0b, 0x71, 0x2d, 0x43, 0x56, 0xa5, 0xb8, 0x24, 0x9b, 0x50, 0x3d, 0x67, 0xbd, 0x21, 0xf7, 0xc5,
 | 
			
		||||
	0xb5, 0x0c, 0x42, 0x6b, 0x6b, 0x4d, 0x96, 0x13, 0x4d, 0x93, 0x97, 0x73, 0xc4, 0x61, 0x7f, 0x8e,
 | 
			
		||||
	0xc9, 0x39, 0x56, 0x90, 0x40, 0x71, 0x0f, 0xdf, 0x3b, 0xa8, 0x59, 0x93, 0xca, 0x35, 0x3e, 0x39,
 | 
			
		||||
	0x0f, 0xe6, 0x3d, 0x39, 0x0f, 0xd2, 0x27, 0xe7, 0x64, 0x50, 0xb1, 0xfb, 0x64, 0x9c, 0x6c, 0x3f,
 | 
			
		||||
	0x86, 0xda, 0x28, 0xf1, 0xf0, 0xb5, 0x7f, 0xe8, 0xe9, 0x93, 0x56, 0x0f, 0x3d, 0x34, 0xe5, 0xe0,
 | 
			
		||||
	0xc9, 0xa1, 0x3c, 0xa5, 0x4a, 0x71, 0x39, 0xea, 0xf5, 0x85, 0x4c, 0xaf, 0xdf, 0xc6, 0xc7, 0x74,
 | 
			
		||||
	0x26, 0xfb, 0x90, 0x89, 0x46, 0x57, 0x49, 0xaa, 0x32, 0xae, 0x95, 0x19, 0x41, 0x22, 0x65, 0x49,
 | 
			
		||||
	0x33, 0x82, 0xc4, 0xfe, 0x11, 0x34, 0x27, 0xe2, 0x85, 0x4c, 0xf2, 0xf5, 0xa6, 0x47, 0x42, 0x5c,
 | 
			
		||||
	0x6f, 0xfd, 0xab, 0x06, 0xb5, 0xe3, 0xe3, 0xdd, 0x5d, 0xee, 0x7b, 0x03, 0x46, 0x7e, 0x6f, 0x00,
 | 
			
		||||
	0xb9, 0xf9, 0x0c, 0x23, 0x1f, 0xe5, 0xdf, 0x8c, 0xd9, 0xaf, 0x51, 0xeb, 0xe3, 0x25, 0x51, 0xba,
 | 
			
		||||
	0x3f, 0x7f, 0x09, 0x25, 0x39, 0x1b, 0x92, 0x9f, 0x2c, 0x38, 0xd3, 0x5b, 0xed, 0xf9, 0x8c, 0x5a,
 | 
			
		||||
	0x76, 0x0f, 0xaa, 0xe9, 0x7c, 0x45, 0xee, 0xe7, 0xaa, 0x37, 0x31, 0x3e, 0x5a, 0xef, 0x2f, 0xc4,
 | 
			
		||||
	0xab, 0x0f, 0xf9, 0x0d, 0x54, 0xf4, 0xd8, 0x44, 0xee, 0xcd, 0xc1, 0x8d, 0x07, 0x38, 0xeb, 0xfe,
 | 
			
		||||
	0x22, 0xac, 0x63, 0x33, 0xd2, 0xf1, 0x28, 0xd7, 0x8c, 0xa9, 0xe1, 0x2b, 0xd7, 0x8c, 0x1b, 0xf3,
 | 
			
		||||
	0xd6, 0x53, 0x28, 0xe2, 0x1c, 0x45, 0xf2, 0xea, 0x49, 0x66, 0xd0, 0xb2, 0xf2, 0xc2, 0x35, 0x31,
 | 
			
		||||
	0x80, 0xfd, 0x1a, 0xeb, 0xae, 0x7c, 0x8b, 0xe6, 0x57, 0xdc, 0xcc, 0x1f, 0x48, 0xd6, 0xbd, 0x05,
 | 
			
		||||
	0x38, 0xc7, 0xe2, 0xf5, 0x3b, 0xae, 0xbd, 0xc0, 0xbf, 0x38, 0xf3, 0xc5, 0x4f, 0xfd, 0x5f, 0x14,
 | 
			
		||||
	0x41, 0x23, 0xdb, 0x4e, 0x89, 0x93, 0x03, 0x9d, 0x31, 0x89, 0x58, 0x9d, 0x85, 0xf9, 0xf5, 0x81,
 | 
			
		||||
	0xdf, 0xe0, 0x9b, 0x60, 0xb2, 0xd5, 0x92, 0xad, 0x5c, 0x77, 0xcc, 0x6c, 0xea, 0xd6, 0x83, 0xa5,
 | 
			
		||||
	0x30, 0xfa, 0x70, 0x57, 0xb5, 0x72, 0xdd, 0xae, 0x49, 0x7e, 0x67, 0x1a, 0xb5, 0x7c, 0x6b, 0x41,
 | 
			
		||||
	0xbe, 0xb6, 0xf1, 0xa1, 0x81, 0x79, 0x86, 0x23, 0x5c, 0xae, 0xec, 0xcc, 0x6c, 0x9b, 0x9b, 0x67,
 | 
			
		||||
	0xd9, 0x59, 0x70, 0xb7, 0xf1, 0xed, 0xab, 0xbb, 0xc6, 0x3f, 0x5e, 0xdd, 0x35, 0xfe, 0xf3, 0xea,
 | 
			
		||||
	0xae, 0x71, 0x51, 0x96, 0x7f, 0xce, 0x3f, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x29, 0xd9,
 | 
			
		||||
	0x1c, 0x06, 0xee, 0x18, 0x00, 0x00,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Reference imports to suppress errors if they are not otherwise used.
 | 
			
		||||
@@ -3364,6 +3382,18 @@ func (m *ResolveImageConfigRequest) MarshalToSizedBuffer(dAtA []byte) (int, erro
 | 
			
		||||
		i -= len(m.XXX_unrecognized)
 | 
			
		||||
		copy(dAtA[i:], m.XXX_unrecognized)
 | 
			
		||||
	}
 | 
			
		||||
	if len(m.SessionID) > 0 {
 | 
			
		||||
		i -= len(m.SessionID)
 | 
			
		||||
		copy(dAtA[i:], m.SessionID)
 | 
			
		||||
		i = encodeVarintGateway(dAtA, i, uint64(len(m.SessionID)))
 | 
			
		||||
		i--
 | 
			
		||||
		dAtA[i] = 0x32
 | 
			
		||||
	}
 | 
			
		||||
	if m.ResolverType != 0 {
 | 
			
		||||
		i = encodeVarintGateway(dAtA, i, uint64(m.ResolverType))
 | 
			
		||||
		i--
 | 
			
		||||
		dAtA[i] = 0x28
 | 
			
		||||
	}
 | 
			
		||||
	if len(m.LogName) > 0 {
 | 
			
		||||
		i -= len(m.LogName)
 | 
			
		||||
		copy(dAtA[i:], m.LogName)
 | 
			
		||||
@@ -5102,6 +5132,13 @@ func (m *ResolveImageConfigRequest) Size() (n int) {
 | 
			
		||||
	if l > 0 {
 | 
			
		||||
		n += 1 + l + sovGateway(uint64(l))
 | 
			
		||||
	}
 | 
			
		||||
	if m.ResolverType != 0 {
 | 
			
		||||
		n += 1 + sovGateway(uint64(m.ResolverType))
 | 
			
		||||
	}
 | 
			
		||||
	l = len(m.SessionID)
 | 
			
		||||
	if l > 0 {
 | 
			
		||||
		n += 1 + l + sovGateway(uint64(l))
 | 
			
		||||
	}
 | 
			
		||||
	if m.XXX_unrecognized != nil {
 | 
			
		||||
		n += len(m.XXX_unrecognized)
 | 
			
		||||
	}
 | 
			
		||||
@@ -7147,6 +7184,57 @@ func (m *ResolveImageConfigRequest) Unmarshal(dAtA []byte) error {
 | 
			
		||||
			}
 | 
			
		||||
			m.LogName = string(dAtA[iNdEx:postIndex])
 | 
			
		||||
			iNdEx = postIndex
 | 
			
		||||
		case 5:
 | 
			
		||||
			if wireType != 0 {
 | 
			
		||||
				return fmt.Errorf("proto: wrong wireType = %d for field ResolverType", wireType)
 | 
			
		||||
			}
 | 
			
		||||
			m.ResolverType = 0
 | 
			
		||||
			for shift := uint(0); ; shift += 7 {
 | 
			
		||||
				if shift >= 64 {
 | 
			
		||||
					return ErrIntOverflowGateway
 | 
			
		||||
				}
 | 
			
		||||
				if iNdEx >= l {
 | 
			
		||||
					return io.ErrUnexpectedEOF
 | 
			
		||||
				}
 | 
			
		||||
				b := dAtA[iNdEx]
 | 
			
		||||
				iNdEx++
 | 
			
		||||
				m.ResolverType |= int32(b&0x7F) << shift
 | 
			
		||||
				if b < 0x80 {
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		case 6:
 | 
			
		||||
			if wireType != 2 {
 | 
			
		||||
				return fmt.Errorf("proto: wrong wireType = %d for field SessionID", wireType)
 | 
			
		||||
			}
 | 
			
		||||
			var stringLen uint64
 | 
			
		||||
			for shift := uint(0); ; shift += 7 {
 | 
			
		||||
				if shift >= 64 {
 | 
			
		||||
					return ErrIntOverflowGateway
 | 
			
		||||
				}
 | 
			
		||||
				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 ErrInvalidLengthGateway
 | 
			
		||||
			}
 | 
			
		||||
			postIndex := iNdEx + intStringLen
 | 
			
		||||
			if postIndex < 0 {
 | 
			
		||||
				return ErrInvalidLengthGateway
 | 
			
		||||
			}
 | 
			
		||||
			if postIndex > l {
 | 
			
		||||
				return io.ErrUnexpectedEOF
 | 
			
		||||
			}
 | 
			
		||||
			m.SessionID = string(dAtA[iNdEx:postIndex])
 | 
			
		||||
			iNdEx = postIndex
 | 
			
		||||
		default:
 | 
			
		||||
			iNdEx = preIndex
 | 
			
		||||
			skippy, err := skipGateway(dAtA[iNdEx:])
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/moby/buildkit/frontend/gateway/pb/gateway.proto
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/moby/buildkit/frontend/gateway/pb/gateway.proto
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -83,6 +83,8 @@ message ResolveImageConfigRequest {
 | 
			
		||||
	pb.Platform Platform = 2;
 | 
			
		||||
	string ResolveMode = 3;
 | 
			
		||||
	string LogName = 4;
 | 
			
		||||
	int32 ResolverType = 5;
 | 
			
		||||
	string SessionID = 6;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
message ResolveImageConfigResponse {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								vendor/github.com/moby/buildkit/session/auth/authprovider/authprovider.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										54
									
								
								vendor/github.com/moby/buildkit/session/auth/authprovider/authprovider.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -6,7 +6,6 @@ import (
 | 
			
		||||
	"crypto/hmac"
 | 
			
		||||
	"crypto/sha256"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"os"
 | 
			
		||||
	"strconv"
 | 
			
		||||
@@ -18,6 +17,7 @@ import (
 | 
			
		||||
	remoteserrors "github.com/containerd/containerd/remotes/errors"
 | 
			
		||||
	"github.com/docker/cli/cli/config"
 | 
			
		||||
	"github.com/docker/cli/cli/config/configfile"
 | 
			
		||||
	"github.com/docker/cli/cli/config/types"
 | 
			
		||||
	"github.com/moby/buildkit/session"
 | 
			
		||||
	"github.com/moby/buildkit/session/auth"
 | 
			
		||||
	"github.com/moby/buildkit/util/progress/progresswriter"
 | 
			
		||||
@@ -30,19 +30,21 @@ import (
 | 
			
		||||
 | 
			
		||||
const defaultExpiration = 60
 | 
			
		||||
 | 
			
		||||
func NewDockerAuthProvider(stderr io.Writer) session.Attachable {
 | 
			
		||||
func NewDockerAuthProvider(cfg *configfile.ConfigFile) session.Attachable {
 | 
			
		||||
	return &authProvider{
 | 
			
		||||
		config:      config.LoadDefaultConfigFile(stderr),
 | 
			
		||||
		seeds:       &tokenSeeds{dir: config.Dir()},
 | 
			
		||||
		loggerCache: map[string]struct{}{},
 | 
			
		||||
		authConfigCache: map[string]*types.AuthConfig{},
 | 
			
		||||
		config:          cfg,
 | 
			
		||||
		seeds:           &tokenSeeds{dir: config.Dir()},
 | 
			
		||||
		loggerCache:     map[string]struct{}{},
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type authProvider struct {
 | 
			
		||||
	config      *configfile.ConfigFile
 | 
			
		||||
	seeds       *tokenSeeds
 | 
			
		||||
	logger      progresswriter.Logger
 | 
			
		||||
	loggerCache map[string]struct{}
 | 
			
		||||
	authConfigCache map[string]*types.AuthConfig
 | 
			
		||||
	config          *configfile.ConfigFile
 | 
			
		||||
	seeds           *tokenSeeds
 | 
			
		||||
	logger          progresswriter.Logger
 | 
			
		||||
	loggerCache     map[string]struct{}
 | 
			
		||||
 | 
			
		||||
	// The need for this mutex is not well understood.
 | 
			
		||||
	// Without it, the docker cli on OS X hangs when
 | 
			
		||||
@@ -62,6 +64,16 @@ func (ap *authProvider) Register(server *grpc.Server) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ap *authProvider) FetchToken(ctx context.Context, req *auth.FetchTokenRequest) (rr *auth.FetchTokenResponse, err error) {
 | 
			
		||||
	ac, err := ap.getAuthConfig(req.Host)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// check for statically configured bearer token
 | 
			
		||||
	if ac.RegistryToken != "" {
 | 
			
		||||
		return toTokenResponse(ac.RegistryToken, time.Time{}, 0), nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	creds, err := ap.credentials(req.Host)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@@ -117,12 +129,7 @@ func (ap *authProvider) FetchToken(ctx context.Context, req *auth.FetchTokenRequ
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ap *authProvider) credentials(host string) (*auth.CredentialsResponse, error) {
 | 
			
		||||
	ap.mu.Lock()
 | 
			
		||||
	defer ap.mu.Unlock()
 | 
			
		||||
	if host == "registry-1.docker.io" {
 | 
			
		||||
		host = "https://index.docker.io/v1/"
 | 
			
		||||
	}
 | 
			
		||||
	ac, err := ap.config.GetAuthConfig(host)
 | 
			
		||||
	ac, err := ap.getAuthConfig(host)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
@@ -173,6 +180,23 @@ func (ap *authProvider) VerifyTokenAuthority(ctx context.Context, req *auth.Veri
 | 
			
		||||
	return &auth.VerifyTokenAuthorityResponse{Signed: sign.Sign(nil, req.Payload, priv)}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ap *authProvider) getAuthConfig(host string) (*types.AuthConfig, error) {
 | 
			
		||||
	ap.mu.Lock()
 | 
			
		||||
	defer ap.mu.Unlock()
 | 
			
		||||
	if _, exists := ap.authConfigCache[host]; !exists {
 | 
			
		||||
		if host == "registry-1.docker.io" {
 | 
			
		||||
			host = "https://index.docker.io/v1/"
 | 
			
		||||
		}
 | 
			
		||||
		ac, err := ap.config.GetAuthConfig(host)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		ap.authConfigCache[host] = &ac
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return ap.authConfigCache[host], nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ap *authProvider) getAuthorityKey(host string, salt []byte) (ed25519.PrivateKey, error) {
 | 
			
		||||
	if v, err := strconv.ParseBool(os.Getenv("BUILDKIT_NO_CLIENT_TOKEN")); err == nil && v {
 | 
			
		||||
		return nil, status.Errorf(codes.Unavailable, "client side tokens disabled")
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/github.com/moby/buildkit/solver/pb/attr.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/moby/buildkit/solver/pb/attr.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -28,6 +28,9 @@ const AttrImageResolveModePreferLocal = "local"
 | 
			
		||||
const AttrImageRecordType = "image.recordtype"
 | 
			
		||||
const AttrImageLayerLimit = "image.layerlimit"
 | 
			
		||||
 | 
			
		||||
const AttrOCILayoutSessionID = "oci.session"
 | 
			
		||||
const AttrOCILayoutLayerLimit = "oci.layerlimit"
 | 
			
		||||
 | 
			
		||||
const AttrLocalDiffer = "local.differ"
 | 
			
		||||
const AttrLocalDifferNone = "none"
 | 
			
		||||
const AttrLocalDifferMetadata = "metadata"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										39
									
								
								vendor/github.com/moby/buildkit/solver/pb/caps.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										39
									
								
								vendor/github.com/moby/buildkit/solver/pb/caps.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -35,6 +35,10 @@ const (
 | 
			
		||||
	CapSourceHTTPPerm     apicaps.CapID = "source.http.perm"
 | 
			
		||||
	CapSourceHTTPUIDGID   apicaps.CapID = "soruce.http.uidgid"
 | 
			
		||||
 | 
			
		||||
	CapSourceOCILayout           apicaps.CapID = "source.ocilayout"
 | 
			
		||||
	CapSourceOCILayoutSessionID  apicaps.CapID = "source.ocilayout.sessionid"
 | 
			
		||||
	CapSourceOCILayoutLayerLimit apicaps.CapID = "source.ocilayout.layerlimit"
 | 
			
		||||
 | 
			
		||||
	CapBuildOpLLBFileName apicaps.CapID = "source.buildop.llbfilename"
 | 
			
		||||
 | 
			
		||||
	CapExecMetaBase                      apicaps.CapID = "exec.meta.base"
 | 
			
		||||
@@ -70,9 +74,12 @@ const (
 | 
			
		||||
	CapMetaExportCache apicaps.CapID = "meta.exportcache"
 | 
			
		||||
 | 
			
		||||
	CapRemoteCacheGHA apicaps.CapID = "cache.gha"
 | 
			
		||||
	CapRemoteCacheS3  apicaps.CapID = "cache.s3"
 | 
			
		||||
 | 
			
		||||
	CapMergeOp apicaps.CapID = "mergeop"
 | 
			
		||||
	CapDiffOp  apicaps.CapID = "diffop"
 | 
			
		||||
 | 
			
		||||
	CapAnnotations apicaps.CapID = "exporter.image.annotations"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
@@ -202,6 +209,24 @@ func init() {
 | 
			
		||||
		Status:  apicaps.CapStatusExperimental,
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	Caps.Init(apicaps.Cap{
 | 
			
		||||
		ID:      CapSourceOCILayout,
 | 
			
		||||
		Enabled: true,
 | 
			
		||||
		Status:  apicaps.CapStatusExperimental,
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	Caps.Init(apicaps.Cap{
 | 
			
		||||
		ID:      CapSourceOCILayoutSessionID,
 | 
			
		||||
		Enabled: true,
 | 
			
		||||
		Status:  apicaps.CapStatusExperimental,
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	Caps.Init(apicaps.Cap{
 | 
			
		||||
		ID:      CapSourceOCILayoutLayerLimit,
 | 
			
		||||
		Enabled: true,
 | 
			
		||||
		Status:  apicaps.CapStatusExperimental,
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	Caps.Init(apicaps.Cap{
 | 
			
		||||
		ID:      CapSourceHTTPUIDGID,
 | 
			
		||||
		Enabled: true,
 | 
			
		||||
@@ -391,14 +416,28 @@ func init() {
 | 
			
		||||
		Enabled: true,
 | 
			
		||||
		Status:  apicaps.CapStatusExperimental,
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	Caps.Init(apicaps.Cap{
 | 
			
		||||
		ID:      CapRemoteCacheS3,
 | 
			
		||||
		Enabled: true,
 | 
			
		||||
		Status:  apicaps.CapStatusExperimental,
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	Caps.Init(apicaps.Cap{
 | 
			
		||||
		ID:      CapMergeOp,
 | 
			
		||||
		Enabled: true,
 | 
			
		||||
		Status:  apicaps.CapStatusExperimental,
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	Caps.Init(apicaps.Cap{
 | 
			
		||||
		ID:      CapDiffOp,
 | 
			
		||||
		Enabled: true,
 | 
			
		||||
		Status:  apicaps.CapStatusExperimental,
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	Caps.Init(apicaps.Cap{
 | 
			
		||||
		ID:      CapAnnotations,
 | 
			
		||||
		Enabled: true,
 | 
			
		||||
		Status:  apicaps.CapStatusExperimental,
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								vendor/github.com/moby/buildkit/source/types/types.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/moby/buildkit/source/types/types.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -6,4 +6,5 @@ const (
 | 
			
		||||
	LocalScheme       = "local"
 | 
			
		||||
	HTTPScheme        = "http"
 | 
			
		||||
	HTTPSScheme       = "https"
 | 
			
		||||
	OCIScheme         = "oci-layout"
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										45
									
								
								vendor/github.com/moby/buildkit/util/contentutil/copy.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										45
									
								
								vendor/github.com/moby/buildkit/util/contentutil/copy.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -3,6 +3,7 @@ package contentutil
 | 
			
		||||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"io"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"sync"
 | 
			
		||||
 | 
			
		||||
	"github.com/containerd/containerd/content"
 | 
			
		||||
@@ -75,7 +76,7 @@ func CopyChain(ctx context.Context, ingester content.Ingester, provider content.
 | 
			
		||||
		}
 | 
			
		||||
	})
 | 
			
		||||
	handlers := []images.Handler{
 | 
			
		||||
		images.ChildrenHandler(provider),
 | 
			
		||||
		annotateDistributionSourceHandler(images.ChildrenHandler(provider), desc.Annotations),
 | 
			
		||||
		filterHandler,
 | 
			
		||||
		retryhandler.New(limited.FetchHandler(ingester, &localFetcher{provider}, ""), func(_ []byte) {}),
 | 
			
		||||
	}
 | 
			
		||||
@@ -92,3 +93,45 @@ func CopyChain(ctx context.Context, ingester content.Ingester, provider content.
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func annotateDistributionSourceHandler(f images.HandlerFunc, basis map[string]string) images.HandlerFunc {
 | 
			
		||||
	return func(ctx context.Context, desc ocispecs.Descriptor) ([]ocispecs.Descriptor, error) {
 | 
			
		||||
		children, err := f(ctx, desc)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// only add distribution source for the config or blob data descriptor
 | 
			
		||||
		switch desc.MediaType {
 | 
			
		||||
		case images.MediaTypeDockerSchema2Manifest, ocispecs.MediaTypeImageManifest,
 | 
			
		||||
			images.MediaTypeDockerSchema2ManifestList, ocispecs.MediaTypeImageIndex:
 | 
			
		||||
		default:
 | 
			
		||||
			return children, nil
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		for i := range children {
 | 
			
		||||
			child := children[i]
 | 
			
		||||
 | 
			
		||||
			for k, v := range basis {
 | 
			
		||||
				if !strings.HasPrefix(k, "containerd.io/distribution.source.") {
 | 
			
		||||
					continue
 | 
			
		||||
				}
 | 
			
		||||
				if child.Annotations != nil {
 | 
			
		||||
					if _, ok := child.Annotations[k]; ok {
 | 
			
		||||
						// don't override if already present
 | 
			
		||||
						continue
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if child.Annotations == nil {
 | 
			
		||||
					child.Annotations = map[string]string{}
 | 
			
		||||
				}
 | 
			
		||||
				child.Annotations[k] = v
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			children[i] = child
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return children, nil
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user