package clipper

import 

type Multi struct {
	Clip Clipboard

	data map[string][][]byte
}

func ( *Multi) () {
	.data = map[string][][]byte{
		"clipboard": [][]byte{},
		"primary":   [][]byte{},
	}
}

func ( *Multi) ( string) []byte {
	 := .data[]
	 := &bytes.Buffer{}
	for ,  := range  {
		.Write()
	}
	return .Bytes()
}

func ( *Multi) ( string,  int) []byte {
	 := .data[]
	if len() <=  {
		return nil
	}
	return []
}

func ( *Multi) ( string, ,  int) ([]byte, error) {
	,  := .Clip.ReadAll()
	if  != nil {
		return nil, 
	}
	if .IsValid(, , ) {
		return .text(, ), nil
	}
	return , nil
}

func ( *Multi) ( string,  []byte, ,  int) error {
	if len(.data[]) !=  {
		.data[] = make([][]byte, )
	}
	if  >=  {
		return nil
	}
	.data[][] = 
	return .Clip.WriteAll(, .full())
}

func ( *Multi) ( string,  []byte,  int) bool {
	if len(.data[]) !=  {
		return false
	}
	return bytes.Equal(, .full())
}