code: func decodeEIP1577ContentHash(buf []byte) (storageNs, contentType, hashType, hashLength uint64, hash []byte, err error) {
  	if len(buf) < 10 {
  		return 0, 0, 0, 0, nil, errors.New("buffer too short")
  	}
  
  	storageNs, n := binary.Uvarint(buf)
  
  	buf = buf[n:]
  	vers, n := binary.Uvarint(buf)
  
  	if vers != 1 {
  		return 0, 0, 0, 0, nil, fmt.Errorf("expected cid v1, got: %d", vers)
  	}
  	buf = buf[n:]
  	contentType, n = binary.Uvarint(buf)
  
  	buf = buf[n:]
  	hashType, n = binary.Uvarint(buf)
  
  	buf = buf[n:]
  	hashLength, n = binary.Uvarint(buf)
  
  	hash = buf[n:]
  
  	if len(hash) != int(hashLength) {
  		return 0, 0, 0, 0, nil, errors.New("hash length mismatch")
  	}
  	return storageNs, contentType, hashType, hashLength, hash, nil
  }
docs: // deocodeEIP1577ContentHash decodes a chain-stored content hash from an ENS record according to EIP-1577
  // a successful decode will result the different parts of the content hash in accordance to the CID spec
  // Note: only CIDv1 is supported