You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: wot.go
    path of file: ./repos/client/go/libkb
    
    the code of the file until where you have to start completion: package libkb

import (
	"encoding/json"
	"fmt"
	"strings"

	"github.com/keybase/client/go/kbun"
	"github.com/keybase/client/go/protocol/gregor1"
	"github.com/keybase/client/go/protocol/keybase1"
)

func getWotVouchChainLink(mctx MetaContext, uid keybase1.UID, sigID keybase1.SigID) (cl *WotVouchChainLink, voucher *User, err error) {
	// requires a full chain load
	user, err := LoadUser(NewLoadUserArgWithMetaContext(mctx).WithUID(uid).WithStubMode(StubModeUnstubbed))
	if err != nil {
		return nil, nil, fmt.Errorf("Error loading user: %v", err)
	}
	link := user.LinkFromS
    
func FetchWotVouches(mctx MetaContext, arg FetchWotVouchesArg) (res []keybase1.WotVouch, err error) {
	vouches, err := fetchWot(mctx, arg.Vouchee, arg.Voucher)
	if err != nil {
		mctx.Debug("error fetching web-of-trust vouches for vouchee=%s by voucher=%s: %s", arg.Vouchee, arg.Voucher, err.Error())
		return nil, err
	}
	var voucheeUser *User
	if len(arg.Vouchee) > 0 {
		voucheeUser, err = LoadUser(NewLoadUserArgWithMetaContext(mctx).WithName(arg.Vouchee).WithPublicKeyOptional())
		if err != nil {
			return nil, fmt.Errorf("error loading vouchee: %s", err.Error())
		}
	}
	for _, serverVouch := range vouches {
		vouch, err := transformUserVouch(mctx, serverVouch, voucheeUser)
		if err != nil {
			mctx.Debug("error validating server-reported web-of-trust vouches for vouchee=%s by voucher=%s: %s", arg.Vouchee, arg.Voucher, err.Error())
			return nil, err
		}
		res = append(res, vouch)
	}
	mctx.Debug("found %d web-of-trust vouches for vouchee=%s by voucher=%s", len(res), arg.Vouchee, arg.Voucher)
	return res, nil
}