func (i *KSUID) Set(s string) error {
	return i.UnmarshalText([]byte(s))
}
Set satisfies the flag.Value interface, making it possible to use KSUIDs as
part of of the command line options of a program.
package ksuid
import (
	"bytes"
	"crypto/rand"
	"database/sql/driver"
	"encoding/binary"
	"fmt"
	"io"
	"math"
	"sync"
	"time"
)
const (
	epochStamp int64 = 1400000000
	timestampLengthInBytes = 4
	payloadLengthInBytes = 16
	byteLength = timestampLengthInBytes + payloadLengthInBytes
	stringEncodedLength = 27
	minStringEncoded = "000000000000000000000000000"
	maxStringEncoded = "aWgEPTl1tmebfsQzFP4bxwgy80V"
)
type KSUID [byteLength]byte
var (
	rander     = rand.Reader
	randMutex  = sync.Mutex{}
	randBuffer = [payloadLengthInBytes]byte{}
	errSize        = fmt.Errorf("Valid KSUIDs are %v bytes", byteLength)
	errStrSize     = fmt.Errorf("Valid encoded KSUIDs are %v characters", stringEncodedLength)
	errStrValue    = fmt.Errorf("Valid encoded KSUIDs are bounded by %s and %s", minStringEncoded, maxStringEncoded)
	errPayloadSize = fmt.Errorf("Valid KSUID payloads are %v bytes", payloadLengthInBytes)
	Nil KSUID
	Max = KSUID{255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255}
)
func (i KSUID) Append(b []byte) []byte {
	return fastAppendEncodeBase62(b, i[:])
}
func (i KSUID) Time() time.Time {
	return correctedUTCTimestampToTime(i.Timestamp())
}
func (i KSUID) Timestamp() uint32 {
	return binary.BigEndian.Uint32(i[:timestampLengthInBytes])
}
func (i KSUID) Payload() []byte {
	return i[timestampLengthInBytes:]
}
func (i KSUID) String() string {
	return string(i.Append(make([]byte, 0, stringEncodedLength)))
}
func (i KSUID) Bytes() []byte {
	return i[:]
}
func (i KSUID) IsNil() bool {
	return i == Nil
}
func (i KSUID) Get() interface{} {
	return i
}