// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: combos/marshaler/map.proto

package mapdefaults

import proto "github.com/gogo/protobuf/proto"
import fmt "fmt"
import math "math"
import _ "github.com/gogo/protobuf/gogoproto"

import github_com_gogo_protobuf_protoc_gen_gogo_descriptor "github.com/gogo/protobuf/protoc-gen-gogo/descriptor"
import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto"
import compress_gzip "compress/gzip"
import bytes "bytes"
import io_ioutil "io/ioutil"

import strings "strings"
import reflect "reflect"
import github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package

type MapTest struct {
	StrStr               map[string]string `protobuf:"bytes,1,rep,name=str_str,json=strStr" json:"str_str,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
	XXX_unrecognized     []byte            `json:"-"`
	XXX_sizecache        int32             `json:"-"`
}

func (m *MapTest) Reset()      { *m = MapTest{} }
func (*MapTest) ProtoMessage() {}
func (*MapTest) Descriptor() ([]byte, []int) {
	return fileDescriptor_map_65406068076b05e6, []int{0}
}
func (m *MapTest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_MapTest.Unmarshal(m, b)
}
func (m *MapTest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	if deterministic {
		return xxx_messageInfo_MapTest.Marshal(b, m, deterministic)
	} else {
		b = b[:cap(b)]
		n, err := m.MarshalTo(b)
		if err != nil {
			return nil, err
		}
		return b[:n], nil
	}
}
func (dst *MapTest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_MapTest.Merge(dst, src)
}
func (m *MapTest) XXX_Size() int {
	return m.Size()
}
func (m *MapTest) XXX_DiscardUnknown() {
	xxx_messageInfo_MapTest.DiscardUnknown(m)
}

var xxx_messageInfo_MapTest proto.InternalMessageInfo

type FakeMap struct {
	Entries              []*FakeMapEntry `protobuf:"bytes,1,rep,name=entries" json:"entries,omitempty"`
	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
	XXX_unrecognized     []byte          `json:"-"`
	XXX_sizecache        int32           `json:"-"`
}

func (m *FakeMap) Reset()      { *m = FakeMap{} }
func (*FakeMap) ProtoMessage() {}
func (*FakeMap) Descriptor() ([]byte, []int) {
	return fileDescriptor_map_65406068076b05e6, []int{1}
}
func (m *FakeMap) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FakeMap.Unmarshal(m, b)
}
func (m *FakeMap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	if deterministic {
		return xxx_messageInfo_FakeMap.Marshal(b, m, deterministic)
	} else {
		b = b[:cap(b)]
		n, err := m.MarshalTo(b)
		if err != nil {
			return nil, err
		}
		return b[:n], nil
	}
}
func (dst *FakeMap) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FakeMap.Merge(dst, src)
}
func (m *FakeMap) XXX_Size() int {
	return m.Size()
}
func (m *FakeMap) XXX_DiscardUnknown() {
	xxx_messageInfo_FakeMap.DiscardUnknown(m)
}

var xxx_messageInfo_FakeMap proto.InternalMessageInfo

type FakeMapEntry struct {
	Key                  string   `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Value                string   `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	Other                string   `protobuf:"bytes,3,opt,name=other,proto3" json:"other,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *FakeMapEntry) Reset()      { *m = FakeMapEntry{} }
func (*FakeMapEntry) ProtoMessage() {}
func (*FakeMapEntry) Descriptor() ([]byte, []int) {
	return fileDescriptor_map_65406068076b05e6, []int{2}
}
func (m *FakeMapEntry) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FakeMapEntry.Unmarshal(m, b)
}
func (m *FakeMapEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	if deterministic {
		return xxx_messageInfo_FakeMapEntry.Marshal(b, m, deterministic)
	} else {
		b = b[:cap(b)]
		n, err := m.MarshalTo(b)
		if err != nil {
			return nil, err
		}
		return b[:n], nil
	}
}
func (dst *FakeMapEntry) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FakeMapEntry.Merge(dst, src)
}
func (m *FakeMapEntry) XXX_Size() int {
	return m.Size()
}
func (m *FakeMapEntry) XXX_DiscardUnknown() {
	xxx_messageInfo_FakeMapEntry.DiscardUnknown(m)
}

var xxx_messageInfo_FakeMapEntry proto.InternalMessageInfo

func init() {
	proto.RegisterType((*MapTest)(nil), "mapdefaults.MapTest")
	proto.RegisterMapType((map[string]string)(nil), "mapdefaults.MapTest.StrStrEntry")
	proto.RegisterType((*FakeMap)(nil), "mapdefaults.FakeMap")
	proto.RegisterType((*FakeMapEntry)(nil), "mapdefaults.FakeMapEntry")
}
func (this *MapTest) Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) {
	return MapDescription()
}
func (this *FakeMap) Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) {
	return MapDescription()
}
func (this *FakeMapEntry) Description() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) {
	return MapDescription()
}
func MapDescription() (desc *github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet) {
	d := &github_com_gogo_protobuf_protoc_gen_gogo_descriptor.FileDescriptorSet{}
	var gzipped = []byte{
		// 3894 bytes of a gzipped FileDescriptorSet
		0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5d, 0x6c, 0x23, 0xd7,
		0x75, 0xd6, 0xf0, 0x4f, 0xe4, 0x21, 0x45, 0x8d, 0x46, 0xf2, 0x2e, 0x57, 0x8e, 0xb9, 0x5a, 0xda,
		0x8e, 0x65, 0xbb, 0xa1, 0x82, 0x5d, 0xef, 0x7a, 0x97, 0xdb, 0xd8, 0xa5, 0x28, 0xae, 0x42, 0x57,
		0x12, 0x99, 0xa1, 0x14, 0xff, 0x04, 0xc5, 0x60, 0x34, 0xbc, 0xa4, 0x66, 0x77, 0x38, 0x33, 0x99,
		0x19, 0xee, 0x5a, 0x8b, 0x02, 0xdd, 0xc2, 0xfd, 0x41, 0x50, 0xf4, 0xbf, 0x40, 0x13, 0xd7, 0x71,
		0x9b, 0x02, 0xa9, 0xd3, 0xf4, 0x2f, 0x69, 0x9a, 0x34, 0xe9, 0x53, 0x5f, 0xd2, 0xfa, 0xa9, 0x48,
		0xde, 0xfa, 0xd0, 0x07, 0xaf, 0x62, 0xa0, 0x69, 0xeb, 0x36, 0x6e, 0xeb, 0x07, 0x03, 0xfb, 0x12,
		0xdc, 0xbf, 0xe1, 0x0c, 0x49, 0xed, 0x50, 0x01, 0xec, 0x3c, 0x49, 0x73, 0xee, 0xf9, 0xbe, 0x39,
		0xf7, 0xdc, 0x73, 0xcf, 0x39, 0xf7, 0x0e, 0xe1, 0x47, 0x57, 0x60, 0xa5, 0x67, 0x59, 0x3d, 0x03,
		0xad, 0xd9, 0x8e, 0xe5, 0x59, 0xfb, 0x83, 0xee, 0x5a, 0x07, 0xb9, 0x9a, 0xa3, 0xdb, 0x9e, 0xe5,
		0x94, 0x89, 0x4c, 0x9a, 0xa7, 0x1a, 0x65, 0xae, 0x51, 0xda, 0x86, 0x85, 0x6b, 0xba, 0x81, 0x36,
		0x7c, 0xc5, 0x36, 0xf2, 0xa4, 0xcb, 0x90, 0xe8, 0xea, 0x06, 0x2a, 0x08, 0x2b, 0xf1, 0xd5, 0xec,
		0xf9, 0x47, 0xca, 0x23, 0xa0, 0x72, 0x18, 0xd1, 0xc2, 0x62, 0x99, 0x20, 0x4a, 0x6f, 0x27, 0x60,
		0x71, 0xc2, 0xa8, 0x24, 0x41, 0xc2, 0x54, 0xfb, 0x98, 0x51, 0x58, 0xcd, 0xc8, 0xe4, 0x7f, 0xa9,
		0x00, 0xb3, 0xb6, 0xaa, 0xdd, 0x50, 0x7b, 0xa8, 0x10, 0x23, 0x62, 0xfe, 0x28, 0x15, 0x01, 0x3a,
		0xc8, 0x46, 0x66, 0x07, 0x99, 0xda, 0x61, 0x21, 0xbe, 0x12, 0x5f, 0xcd, 0xc8, 0x01, 0x89, 0xf4,
		0x24, 0x2c, 0xd8, 0x83, 0x7d, 0x43, 0xd7, 0x94, 0x80, 0x1a, 0xac, 0xc4, 0x57, 0x93, 0xb2, 0x48,
		0x07, 0x36, 0x86, 0xca, 0x8f, 0xc1, 0xfc, 0x2d, 0xa4, 0xde, 0x08, 0xaa, 0x66, 0x89, 0x6a, 0x1e,
		0x8b, 0x03, 0x8a, 0x35, 0xc8, 0xf5, 0x91, 0xeb, 0xaa, 0x3d, 0xa4, 0x78, 0x87, 0x36, 0x2a, 0x24,
		0xc8, 0xec, 0x57, 0xc6, 0x66, 0x3f, 0x3a, 0xf3, 0x2c, 0x43, 0xed, 0x1e, 0xda, 0x48, 0xaa, 0x42,
		0x06, 0x99, 0x83, 0x3e, 0x65, 0x48, 0x1e, 0xe3, 0xbf, 0xba, 0x39, 0xe8, 0x8f, 0xb2, 0xa4, 0x31,
		0x8c, 0x51, 0xcc, 0xba, 0xc8, 0xb9, 0xa9, 0x6b, 0xa8, 0x90, 0x22, 0x04, 0x8f, 0x8d, 0x11, 0xb4,
		0xe9, 0xf8, 0x28, 0x07, 0xc7, 0x49, 0x35, 0xc8, 0xa0, 0x97, 0x3d, 0x64, 0xba, 0xba, 0x65, 0x16,
		0x66, 0x09, 0xc9, 0xa3, 0x13, 0x56, 0x11, 0x19, 0x9d, 0x51, 0x8a, 0x21, 0x4e, 0xba, 0x04, 0xb3,
		0x96, 0xed, 0xe9, 0x96, 0xe9, 0x16, 0xd2, 0x2b, 0xc2, 0x6a, 0xf6, 0xfc, 0x47, 0x26, 0x06, 0x42,
		0x93, 0xea, 0xc8, 0x5c, 0x59, 0x6a, 0x80, 0xe8, 0x5a, 0x03, 0x47, 0x43, 0x8a, 0x66, 0x75, 0x90,
		0xa2, 0x9b, 0x5d, 0xab, 0x90, 0x21, 0x04, 0x67, 0xc7, 0x27, 0x42, 0x14, 0x6b, 0x56, 0x07, 0x35,
		0xcc, 0xae, 0x25, 0xe7, 0xdd, 0xd0, 0xb3, 0x74, 0x0a, 0x52, 0xee, 0xa1, 0xe9, 0xa9, 0x2f, 0x17,
		0x72, 0x24, 0x42, 0xd8, 0x53, 0xe9, 0x3b, 0x29, 0x98, 0x9f, 0x26, 0xc4, 0xae, 0x42, 0xb2, 0x8b,
		0x67, 0x59, 0x88, 0x9d, 0xc4, 0x07, 0x14, 0x13, 0x76, 0x62, 0xea, 0x27, 0x74, 0x62, 0x15, 0xb2,
		0x26, 0x72, 0x3d, 0xd4, 0xa1, 0x11, 0x11, 0x9f, 0x32, 0xa6, 0x80, 0x82, 0xc6, 0x43, 0x2a, 0xf1,
		0x13, 0x85, 0xd4, 0x0b, 0x30, 0xef, 0x9b, 0xa4, 0x38, 0xaa, 0xd9, 0xe3, 0xb1, 0xb9, 0x16, 0x65,
		0x49, 0xb9, 0xce, 0x71, 0x32, 0x86, 0xc9, 0x79, 0x14, 0x7a, 0x96, 0x36, 0x00, 0x2c, 0x13, 0x59,
		0x5d, 0xa5, 0x83, 0x34, 0xa3, 0x90, 0x3e, 0xc6, 0x4b, 0x4d, 0xac, 0x32, 0xe6, 0x25, 0x8b, 0x4a,
		0x35, 0x43, 0xba, 0x32, 0x0c, 0xb5, 0xd9, 0x63, 0x22, 0x65, 0x9b, 0x6e, 0xb2, 0xb1, 0x68, 0xdb,
		0x83, 0xbc, 0x83, 0x70, 0xdc, 0xa3, 0x0e, 0x9b, 0x59, 0x86, 0x18, 0x51, 0x8e, 0x9c, 0x99, 0xcc,
		0x60, 0x74, 0x62, 0x73, 0x4e, 0xf0, 0x51, 0x7a, 0x18, 0x7c, 0x81, 0x42, 0xc2, 0x0a, 0x48, 0x16,
		0xca, 0x71, 0xe1, 0x8e, 0xda, 0x47, 0xcb, 0xb7, 0x21, 0x1f, 0x76, 0x8f, 0xb4, 0x04, 0x49, 0xd7,
		0x53, 0x1d, 0x8f, 0x44, 0x61, 0x52, 0xa6, 0x0f, 0x92, 0x08, 0x71, 0x64, 0x76, 0x48, 0x96, 0x4b,
		0xca, 0xf8, 0x5f, 0xe9, 0xe7, 0x86, 0x13, 0x8e, 0x93, 0x09, 0x7f, 0x74, 0x7c, 0x45, 0x43, 0xcc,
		0xa3, 0xf3, 0x5e, 0x7e, 0x1a, 0xe6, 0x42, 0x13, 0x98, 0xf6, 0xd5, 0xa5, 0x5f, 0x84, 0x07, 0x26,
		0x52, 0x4b, 0x2f, 0xc0, 0xd2, 0xc0, 0xd4, 0x4d, 0x0f, 0x39, 0xb6, 0x83, 0x70, 0xc4, 0xd2, 0x57,
		0x15, 0xfe, 0x7d, 0xf6, 0x98, 0x98, 0xdb, 0x0b, 0x6a, 0x53, 0x16, 0x79, 0x71, 0x30, 0x2e, 0x7c,
		0x22, 0x93, 0xfe, 0xe1, 0xac, 0x78, 0xe7, 0xce, 0x9d, 0x3b, 0xb1, 0xd2, 0xe7, 0x53, 0xb0, 0x34,
		0x69, 0xcf, 0x4c, 0xdc, 0xbe, 0xa7, 0x20, 0x65, 0x0e, 0xfa, 0xfb, 0xc8, 0x21, 0x4e, 0x4a, 0xca,
		0xec, 0x49, 0xaa, 0x42, 0xd2, 0x50, 0xf7, 0x91, 0x51, 0x48, 0xac, 0x08, 0xab, 0xf9, 0xf3, 0x4f,
		0x4e, 0xb5, 0x2b, 0xcb, 0x5b, 0x18, 0x22, 0x53, 0xa4, 0xf4, 0x0c, 0x24, 0x58, 0x8a, 0xc6, 0x0c,
		0x4f, 0x4c, 0xc7, 0x80, 0xf7, 0x92, 0x4c, 0x70, 0xd2, 0x83, 0x90, 0xc1, 0x7f, 0x69, 0x6c, 0xa4,
		0x88, 0xcd, 0x69, 0x2c, 0xc0, 0x71, 0x21, 0x2d, 0x43, 0x9a, 0x6c, 0x93, 0x0e, 0xe2, 0xa5, 0xcd,
		0x7f, 0xc6, 0x81, 0xd5, 0x41, 0x5d, 0x75, 0x60, 0x78, 0xca, 0x4d, 0xd5, 0x18, 0x20, 0x12, 0xf0,
		0x19, 0x39, 0xc7, 0x84, 0x9f, 0xc6, 0x32, 0xe9, 0x2c, 0x64, 0xe9, 0xae, 0xd2, 0xcd, 0x0e, 0x7a,
		0x99, 0x64, 0xcf, 0xa4, 0x4c, 0x37, 0x5a, 0x03, 0x4b, 0xf0, 0xeb, 0xaf, 0xbb, 0x96, 0xc9, 0x43,
		0x93, 0xbc, 0x02, 0x0b, 0xc8, 0xeb, 0x9f, 0x1e, 0x4d, 0xdc, 0x0f, 0x4d, 0x9e, 0xde, 0x68, 0x4c,
		0x95, 0xbe, 0x15, 0x83, 0x04, 0xc9, 0x17, 0xf3, 0x90, 0xdd, 0x7d, 0xb1, 0x55, 0x57, 0x36, 0x9a,
		0x7b, 0xeb, 0x5b, 0x75, 0x51, 0x90, 0xf2, 0x00, 0x44, 0x70, 0x6d, 0xab, 0x59, 0xdd, 0x15, 0x63,
		0xfe, 0x73, 0x63, 0x67, 0xf7, 0xd2, 0x53, 0x62, 0xdc, 0x07, 0xec, 0x51, 0x41, 0x22, 0xa8, 0x70,
		0xe1, 0xbc, 0x98, 0x94, 0x44, 0xc8, 0x51, 0x82, 0xc6, 0x0b, 0xf5, 0x8d, 0x4b, 0x4f, 0x89, 0xa9,
		0xb0, 0xe4, 0xc2, 0x79, 0x71, 0x56, 0x9a, 0x83, 0x0c, 0x91, 0xac, 0x37, 0x9b, 0x5b, 0x62, 0xda,
		0xe7, 0x6c, 0xef, 0xca, 0x8d, 0x9d, 0x4d, 0x31, 0xe3, 0x73, 0x6e, 0xca, 0xcd, 0xbd, 0x96, 0x08,
		0x3e, 0xc3, 0x76, 0xbd, 0xdd, 0xae, 0x6e, 0xd6, 0xc5, 0xac, 0xaf, 0xb1, 0xfe, 0xe2, 0x6e, 0xbd,
		0x2d, 0xe6, 0x42, 0x66, 0x5d, 0x38, 0x2f, 0xce, 0xf9, 0xaf, 0xa8, 0xef, 0xec, 0x6d, 0x8b, 0x79,
		0x69, 0x01, 0xe6, 0xe8, 0x2b, 0xb8, 0x11, 0xf3, 0x23, 0xa2, 0x4b, 0x4f, 0x89, 0xe2, 0xd0, 0x10,
		0xca, 0xb2, 0x10, 0x12, 0x5c, 0x7a, 0x4a, 0x94, 0x4a, 0x35, 0x48, 0x92, 0xe8, 0x92, 0x24, 0xc8,
		0x6f, 0x55, 0xd7, 0xeb, 0x5b, 0x4a, 0xb3, 0xb5, 0xdb, 0x68, 0xee, 0x54, 0xb7, 0x44, 0x61, 0x28,
		0x93, 0xeb, 0x9f, 0xda, 0x6b, 0xc8, 0xf5, 0x0d, 0x31, 0x16, 0x94, 0xb5, 0xea, 0xd5, 0xdd, 0xfa,
		0x86, 0x18, 0x2f, 0x69, 0xb0, 0x34, 0x29, 0x4f, 0x4e, 0xdc, 0x19, 0x81, 0x25, 0x8e, 0x1d, 0xb3,
		0xc4, 0x84, 0x6b, 0x6c, 0x89, 0x7f, 0x10, 0x83, 0xc5, 0x09, 0xb5, 0x62, 0xe2, 0x4b, 0x9e, 0x85,
		0x24, 0x0d, 0x51, 0x5a, 0x3d, 0x1f, 0x9f, 0x58, 0x74, 0x48, 0xc0, 0x8e, 0x55, 0x50, 0x82, 0x0b,
		0x76, 0x10, 0xf1, 0x63, 0x3a, 0x08, 0x4c, 0x31, 0x96, 0xd3, 0x7f, 0x61, 0x2c, 0xa7, 0xd3, 0xb2,
		0x77, 0x69, 0x9a, 0xb2, 0x47, 0x64, 0x27, 0xcb, 0xed, 0xc9, 0x09, 0xb9, 0xfd, 0x2a, 0x2c, 0x8c,
		0x11, 0x4d, 0x9d, 0x63, 0x5f, 0x11, 0xa0, 0x70, 0x9c, 0x73, 0x22, 0x32, 0x5d, 0x2c, 0x94, 0xe9,
		0xae, 0x8e, 0x7a, 0xf0, 0xdc, 0xf1, 0x8b, 0x30, 0xb6, 0xd6, 0x6f, 0x08, 0x70, 0x6a, 0x72, 0xa7,
		0x38, 0xd1, 0x86, 0x67, 0x20, 0xd5, 0x47, 0xde, 0x81, 0xc5, 0xbb, 0xa5, 0x8f, 0x4e, 0xa8, 0xc1,
		0x78, 0x78, 0x74, 0xb1, 0x19, 0x2a, 0x58, 0xc4, 0xe3, 0xc7, 0xb5, 0x7b, 0xd4, 0x9a, 0x31, 0x4b,
		0x3f, 0x17, 0x83, 0x07, 0x26, 0x92, 0x4f, 0x34, 0xf4, 0x21, 0x00, 0xdd, 0xb4, 0x07, 0x1e, 0xed,
		0x88, 0x68, 0x82, 0xcd, 0x10, 0x09, 0x49, 0x5e, 0x38, 0x79, 0x0e, 0x3c, 0x7f, 0x3c, 0x4e, 0xc6,
		0x81, 0x8a, 0x88, 0xc2, 0xe5, 0xa1, 0xa1, 0x09, 0x62, 0x68, 0xf1, 0x98, 0x99, 0x8e, 0x05, 0xe6,
		0xc7, 0x41, 0xd4, 0x0c, 0x1d, 0x99, 0x9e, 0xe2, 0x7a, 0x0e, 0x52, 0xfb, 0xba, 0xd9, 0x23, 0x15,
		0x24, 0x5d, 0x49, 0x76, 0x55, 0xc3, 0x45, 0xf2, 0x3c, 0x1d, 0x6e, 0xf3, 0x51, 0x8c, 0x20, 0x01,
		0xe4, 0x04, 0x10, 0xa9, 0x10, 0x82, 0x0e, 0xfb, 0x88, 0xd2, 0x37, 0xd2, 0x90, 0x0d, 0xf4, 0xd5,
		0xd2, 0x39, 0xc8, 0x5d, 0x57, 0x6f, 0xaa, 0x0a, 0x3f, 0x2b, 0x51, 0x4f, 0x64, 0xb1, 0xac, 0xc5,
		0xce, 0x4b, 0x1f, 0x87, 0x25, 0xa2, 0x62, 0x0d, 0x3c, 0xe4, 0x28, 0x9a, 0xa1, 0xba, 0x2e, 0x71,
		0x5a, 0x9a, 0xa8, 0x4a, 0x78, 0xac, 0x89, 0x87, 0x6a, 0x7c, 0x44, 0xba, 0x08, 0x8b, 0x04, 0xd1,
		0x1f, 0x18, 0x9e, 0x6e, 0x1b, 0x48, 0xc1, 0xa7, 0x37, 0x97, 0x54, 0x12, 0xdf, 0xb2, 0x05, 0xac,
		0xb1, 0xcd, 0x14, 0xb0, 0x45, 0xae, 0xb4, 0x01, 0x0f, 0x11, 0x58, 0x0f, 0x99, 0xc8, 0x51, 0x3d,
		0xa4, 0xa0, 0xcf, 0x0e, 0x54, 0xc3, 0x55, 0x54, 0xb3, 0xa3, 0x1c, 0xa8, 0xee, 0x41, 0x61, 0x09,
		0x13, 0xac, 0xc7, 0x0a, 0x82, 0x7c, 0x06, 0x2b, 0x6e, 0x32, 0xbd, 0x3a, 0x51, 0xab, 0x9a, 0x9d,
		0x4f, 0xaa, 0xee, 0x81, 0x54, 0x81, 0x53, 0x84, 0xc5, 0xf5, 0x1c, 0xdd, 0xec, 0x29, 0xda, 0x01,
		0xd2, 0x6e, 0x28, 0x03, 0xaf, 0x7b, 0xb9, 0xf0, 0x60, 0xf0, 0xfd, 0xc4, 0xc2, 0x36, 0xd1, 0xa9,
		0x61, 0x95, 0x3d, 0xaf, 0x7b, 0x59, 0x6a, 0x43, 0x0e, 0x2f, 0x46, 0x5f, 0xbf, 0x8d, 0x94, 0xae,
		0xe5, 0x90, 0xd2, 0x98, 0x9f, 0x90, 0x9a, 0x02, 0x1e, 0x2c, 0x37, 0x19, 0x60, 0xdb, 0xea, 0xa0,
		0x4a, 0xb2, 0xdd, 0xaa, 0xd7, 0x37, 0xe4, 0x2c, 0x67, 0xb9, 0x66, 0x39, 0x38, 0xa0, 0x7a, 0x96,
		0xef, 0xe0, 0x2c, 0x0d, 0xa8, 0x9e, 0xc5, 0xdd, 0x7b, 0x11, 0x16, 0x35, 0x8d, 0xce, 0x59, 0xd7,
		0x14, 0x76, 0xc6, 0x72, 0x0b, 0x62, 0xc8, 0x59, 0x9a, 0xb6, 0x49, 0x15, 0x58, 0x8c, 0xbb, 0xd2,
		0x15, 0x78, 0x60, 0xe8, 0xac, 0x20, 0x70, 0x61, 0x6c, 0x96, 0xa3, 0xd0, 0x8b, 0xb0, 0x68, 0x1f,
		0x8e, 0x03, 0xa5, 0xd0, 0x1b, 0xed, 0xc3, 0x51, 0xd8, 0xd3, 0xb0, 0x64, 0x1f, 0xd8, 0xe3, 0xb8,
		0x27, 0x82, 0x38, 0xc9, 0x3e, 0xb0, 0x47, 0x81, 0x8f, 0x92, 0x03, 0xb7, 0x83, 0x34, 0xd5, 0x43,
		0x9d, 0xc2, 0xe9, 0xa0, 0x7a, 0x60, 0x40, 0x5a, 0x03, 0x51, 0xd3, 0x14, 0x64, 0xaa, 0xfb, 0x06,
		0x52, 0x54, 0x07, 0x99, 0xaa, 0x5b, 0x38, 0x1b, 0x54, 0xce, 0x6b, 0x5a, 0x9d, 0x8c, 0x56, 0xc9,
		0xa0, 0xf4, 0x04, 0x2c, 0x58, 0xfb, 0xd7, 0x35, 0x1a, 0x92, 0x8a, 0xed, 0xa0, 0xae, 0xfe, 0x72,
		0xe1, 0x11, 0xe2, 0xdf, 0x79, 0x3c, 0x40, 0x02, 0xb2, 0x45, 0xc4, 0xd2, 0xe3, 0x20, 0x6a, 0xee,
		0x81, 0xea, 0xd8, 0x24, 0x27, 0xbb, 0xb6, 0xaa, 0xa1, 0xc2, 0xa3, 0x54, 0x95, 0xca, 0x77, 0xb8,
		0x18, 0x6f, 0x09, 0xf7, 0x96, 0xde, 0xf5, 0x38, 0xe3, 0x63, 0x74, 0x4b, 0x10, 0x19, 0x63, 0x5b,
		0x05, 0x11, 0xbb, 0x22, 0xf4, 0xe2, 0x55, 0xa2, 0x96, 0xb7, 0x0f, 0xec, 0xe0, 0x7b, 0x1f, 0x86,
		0x39, 0xac, 0x39, 0x7c, 0xe9, 0xe3, 0xb4, 0x21, 0xb3, 0x0f, 0x02, 0x6f, 0xfc, 0xc0, 0x7a, 0xe3,
		0x52, 0x05, 0x72, 0xc1, 0xf8, 0x94, 0x32, 0x40, 0x23, 0x54, 0x14, 0x70, 0xb3, 0x52, 0x6b, 0x6e,
		0xe0, 0x36, 0xe3, 0xa5, 0xba, 0x18, 0xc3, 0xed, 0xce, 0x56, 0x63, 0xb7, 0xae, 0xc8, 0x7b, 0x3b,
		0xbb, 0x8d, 0xed, 0xba, 0x18, 0x0f, 0xf6, 0xd5, 0xdf, 0x8d, 0x41, 0x3e, 0x7c, 0x44, 0x92, 0x7e,
		0x16, 0x4e, 0xf3, 0xfb, 0x0c, 0x17, 0x79, 0xca, 0x2d, 0xdd, 0x21, 0x5b, 0xa6, 0xaf, 0xd2, 0xf2,
		0xe5, 0x2f, 0xda, 0x12, 0xd3, 0x6a, 0x23, 0xef, 0x79, 0xdd, 0xc1, 0x1b, 0xa2, 0xaf, 0x7a, 0xd2,
		0x16, 0x9c, 0x35, 0x2d, 0xc5, 0xf5, 0x54, 0xb3, 0xa3, 0x3a, 0x1d, 0x65, 0x78, 0x93, 0xa4, 0xa8,
		0x9a, 0x86, 0x5c, 0xd7, 0xa2, 0xa5, 0xca, 0x67, 0xf9, 0x88, 0x69, 0xb5, 0x99, 0xf2, 0x30, 0x87,
		0x57, 0x99, 0xea, 0x48, 0x80, 0xc5, 0x8f, 0x0b, 0xb0, 0x07, 0x21, 0xd3, 0x57, 0x6d, 0x05, 0x99,
		0x9e, 0x73, 0x48, 0x1a, 0xe3, 0xb4, 0x9c, 0xee, 0xab, 0x76, 0x1d, 0x3f, 0x7f, 0x38, 0xe7, 0x93,
		0x7f, 0x8b, 0x43, 0x2e, 0xd8, 0x1c, 0xe3, 0xb3, 0x86, 0x46, 0xea, 0x88, 0x40, 0x32, 0xcd, 0xc3,
		0xf7, 0x6d, 0xa5, 0xcb, 0x35, 0x5c, 0x60, 0x2a, 0x29, 0xda, 0xb2, 0xca, 0x14, 0x89, 0x8b, 0x3b,
		0xce, 0x2d, 0x88, 0xb6, 0x08, 0x69, 0x99, 0x3d, 0x49, 0x9b, 0x90, 0xba, 0xee, 0x12, 0xee, 0x14,
		0xe1, 0x7e, 0xe4, 0xfe, 0xdc, 0xcf, 0xb5, 0x09, 0x79, 0xe6, 0xb9, 0xb6, 0xb2, 0xd3, 0x94, 0xb7,
		0xab, 0x5b, 0x32, 0x83, 0x4b, 0x67, 0x20, 0x61, 0xa8, 0xb7, 0x0f, 0xc3, 0xa5, 0x88, 0x88, 0xa6,
		0x75, 0xfc, 0x19, 0x48, 0xdc, 0x42, 0xea, 0x8d, 0x70, 0x01, 0x20, 0xa2, 0x0f, 0x30, 0xf4, 0xd7,
		0x20, 0x49, 0xfc, 0x25, 0x01, 0x30, 0x8f, 0x89, 0x33, 0x52, 0x1a, 0x12, 0xb5, 0xa6, 0x8c, 0xc3,
		0x5f, 0x84, 0x1c, 0x95, 0x2a, 0xad, 0x46, 0xbd, 0x56, 0x17, 0x63, 0xa5, 0x8b, 0x90, 0xa2, 0x4e,
		0xc0, 0x5b, 0xc3, 0x77, 0x83, 0x38, 0xc3, 0x1e, 0x19, 0x87, 0xc0, 0x47, 0xf7, 0xb6, 0xd7, 0xeb,
		0xb2, 0x18, 0x0b, 0x2e, 0xaf, 0x0b, 0xb9, 0x60, 0x5f, 0xfc, 0xe1, 0xc4, 0xd4, 0x3f, 0x08, 0x90,
		0x0d, 0xf4, 0xb9, 0xb8, 0x41, 0x51, 0x0d, 0xc3, 0xba, 0xa5, 0xa8, 0x86, 0xae, 0xba, 0x2c, 0x28,
		0x80, 0x88, 0xaa, 0x58, 0x32, 0xed, 0xa2, 0x7d, 0x28, 0xc6, 0xbf, 0x2e, 0x80, 0x38, 0xda, 0x62,
		0x8e, 0x18, 0x28, 0xfc, 0x54, 0x0d, 0x7c, 0x4d, 0x80, 0x7c, 0xb8, 0xaf, 0x1c, 0x31, 0xef, 0xdc,
		0x4f, 0xd5, 0xbc, 0xb7, 0x62, 0x30, 0x17, 0xea, 0x26, 0xa7, 0xb5, 0xee, 0xb3, 0xb0, 0xa0, 0x77,
		0x50, 0xdf, 0xb6, 0x3c, 0x64, 0x6a, 0x87, 0x8a, 0x81, 0x6e, 0x22, 0xa3, 0x50, 0x22, 0x89, 0x62,
		0xed, 0xfe, 0xfd, 0x6a, 0xb9, 0x31, 0xc4, 0x6d, 0x61, 0x58, 0x65, 0xb1, 0xb1, 0x51, 0xdf, 0x6e,
		0x35, 0x77, 0xeb, 0x3b, 0xb5, 0x17, 0x95, 0xbd, 0x9d, 0x9f, 0xdf, 0x69, 0x3e, 0xbf, 0x23, 0x8b,
		0xfa, 0x88, 0xda, 0x07, 0xb8, 0xd5, 0x5b, 0x20, 0x8e, 0x1a, 0x25, 0x9d, 0x86, 0x49, 0x66, 0x89,
		0x33, 0xd2, 0x22, 0xcc, 0xef, 0x34, 0x95, 0x76, 0x63, 0xa3, 0xae, 0xd4, 0xaf, 0x5d, 0xab, 0xd7,
		0x76, 0xdb, 0xf4, 0x06, 0xc2, 0xd7, 0xde, 0x0d, 0x6f, 0xea, 0x57, 0xe3, 0xb0, 0x38, 0xc1, 0x12,
		0xa9, 0xca, 0xce, 0x0e, 0xf4, 0x38, 0xf3, 0xb1, 0x69, 0xac, 0x2f, 0xe3, 0x92, 0xdf, 0x52, 0x1d,
		0x8f, 0x1d, 0x35, 0x1e, 0x07, 0xec, 0x25, 0xd3, 0xd3, 0xbb, 0x3a, 0x72, 0xd8, 0x85, 0x0d, 0x3d,
		0x50, 0xcc, 0x0f, 0xe5, 0xf4, 0xce, 0xe6, 0x67, 0x40, 0xb2, 0x2d, 0x57, 0xf7, 0xf4, 0x9b, 0x48,
		0xd1, 0x4d, 0x7e, 0xbb, 0x83, 0x0f, 0x18, 0x09, 0x59, 0xe4, 0x23, 0x0d, 0xd3, 0xf3, 0xb5, 0x4d,
		0xd4, 0x53, 0x47, 0xb4, 0x71, 0x02, 0x8f, 0xcb, 0x22, 0x1f, 0xf1, 0xb5, 0xcf, 0x41, 0xae, 0x63,
		0x0d, 0x70, 0xd7, 0x45, 0xf5, 0x70, 0xbd, 0x10, 0xe4, 0x2c, 0x95, 0xf9, 0x2a, 0xac, 0x9f, 0x1e,
		0x5e, 0x2b, 0xe5, 0xe4, 0x2c, 0x95, 0x51, 0x95, 0xc7, 0x60, 0x5e, 0xed, 0xf5, 0x1c, 0x4c, 0xce,
		0x89, 0xe8, 0x09, 0x21, 0xef, 0x8b, 0x89, 0xe2, 0xf2, 0x73, 0x90, 0xe6, 0x7e, 0xc0, 0x25, 0x19,
		0x7b, 0x42, 0xb1, 0xe9, 0xb1, 0x37, 0xb6, 0x9a, 0x91, 0xd3, 0x26, 0x1f, 0x3c, 0x07, 0x39, 0xdd,
		0x55, 0x86, 0xb7, 0xe4, 0xb1, 0x95, 0xd8, 0x6a, 0x5a, 0xce, 0xea, 0xae, 0x7f, 0xc3, 0x58, 0x7a,
		0x23, 0x06, 0xf9, 0xf0, 0x2d, 0xbf, 0xb4, 0x01, 0x69, 0xc3, 0xd2, 0x54, 0x12, 0x5a, 0xf4, 0x13,
		0xd3, 0x6a, 0xc4, 0x87, 0x81, 0xf2, 0x16, 0xd3, 0x97, 0x7d, 0xe4, 0xf2, 0xbf, 0x08, 0x90, 0xe6,
		0x62, 0xe9, 0x14, 0x24, 0x6c, 0xd5, 0x3b, 0x20, 0x74, 0xc9, 0xf5, 0x98, 0x28, 0xc8, 0xe4, 0x19,
		0xcb, 0x5d, 0x5b, 0x35, 0x49, 0x08, 0x30, 0x39, 0x7e, 0xc6, 0xeb, 0x6a, 0x20, 0xb5, 0x43, 0x8e,
		0x1f, 0x56, 0xbf, 0x8f, 0x4c, 0xcf, 0xe5, 0xeb, 0xca, 0xe4, 0x35, 0x26, 0x96, 0x9e, 0x84, 0x05,
		0xcf, 0x51, 0x75, 0x23, 0xa4, 0x9b, 0x20, 0xba, 0x22, 0x1f, 0xf0, 0x95, 0x2b, 0x70, 0x86, 0xf3,
		0x76, 0x90, 0xa7, 0x6a, 0x07, 0xa8, 0x33, 0x04, 0xa5, 0xc8, 0x35, 0xc3, 0x69, 0xa6, 0xb0, 0xc1,
		0xc6, 0x39, 0xb6, 0xf4, 0x7d, 0x01, 0x16, 0xf8, 0x81, 0xa9, 0xe3, 0x3b, 0x6b, 0x1b, 0x40, 0x35,
		0x4d, 0xcb, 0x0b, 0xba, 0x6b, 0x3c, 0x94, 0xc7, 0x70, 0xe5, 0xaa, 0x0f, 0x92, 0x03, 0x04, 0xcb,
		0x7d, 0x80, 0xe1, 0xc8, 0xb1, 0x6e, 0x3b, 0x0b, 0x59, 0xf6, 0x09, 0x87, 0x7c, 0x07, 0xa4, 0x47,
		0x6c, 0xa0, 0x22, 0x7c, 0xb2, 0x92, 0x96, 0x20, 0xb9, 0x8f, 0x7a, 0xba, 0xc9, 0x2e, 0x66, 0xe9,
		0x03, 0xbf, 0x08, 0x49, 0xf8, 0x17, 0x21, 0xeb, 0x9f, 0x81, 0x45, 0xcd, 0xea, 0x8f, 0x9a, 0xbb,
		0x2e, 0x8e, 0x1c, 0xf3, 0xdd, 0x4f, 0x0a, 0x2f, 0xc1, 0xb0, 0xc5, 0x7c, 0x5f, 0x10, 0xfe, 0x34,
		0x16, 0xdf, 0x6c, 0xad, 0x7f, 0x35, 0xb6, 0xbc, 0x49, 0xa1, 0x2d, 0x3e, 0x53, 0x19, 0x75, 0x0d,
		0xa4, 0x61, 0xeb, 0xe1, 0xcb, 0xab, 0xf0, 0xb1, 0x9e, 0xee, 0x1d, 0x0c, 0xf6, 0xcb, 0x9a, 0xd5,
		0x5f, 0xeb, 0x59, 0x3d, 0x6b, 0xf8, 0xe9, 0x13, 0x3f, 0x91, 0x07, 0xf2, 0x1f, 0xfb, 0xfc, 0x99,
		0xf1, 0xa5, 0xcb, 0x91, 0xdf, 0x4a, 0x2b, 0x3b, 0xb0, 0xc8, 0x94, 0x15, 0xf2, 0xfd, 0x85, 0x9e,
		0x22, 0xa4, 0xfb, 0xde, 0x61, 0x15, 0xbe, 0xfe, 0x36, 0x29, 0xd7, 0xf2, 0x02, 0x83, 0xe2, 0x31,
		0x7a, 0xd0, 0xa8, 0xc8, 0xf0, 0x40, 0x88, 0x8f, 0x6e, 0x4d, 0xe4, 0x44, 0x30, 0x7e, 0x97, 0x31,
		0x2e, 0x06, 0x18, 0xdb, 0x0c, 0x5a, 0xa9, 0xc1, 0xdc, 0x49, 0xb8, 0xfe, 0x89, 0x71, 0xe5, 0x50,
		0x90, 0x64, 0x13, 0xe6, 0x09, 0x89, 0x36, 0x70, 0x3d, 0xab, 0x4f, 0xf2, 0xde, 0xfd, 0x69, 0xfe,
		0xf9, 0x6d, 0xba, 0x57, 0xf2, 0x18, 0x56, 0xf3, 0x51, 0x95, 0x0a, 0x90, 0x4f, 0x4e, 0x1d, 0xa4,
		0x19, 0x11, 0x0c, 0x6f, 0x32, 0x43, 0x7c, 0xfd, 0xca, 0xa7, 0x61, 0x09, 0xff, 0x4f, 0xd2, 0x52,
		0xd0, 0x92, 0xe8, 0x0b, 0xaf, 0xc2, 0xf7, 0x5f, 0xa1, 0xdb, 0x71, 0xd1, 0x27, 0x08, 0xd8, 0x14,
		0x58, 0xc5, 0x1e, 0xf2, 0x3c, 0xe4, 0xb8, 0x8a, 0x6a, 0x4c, 0x32, 0x2f, 0x70, 0x63, 0x50, 0xf8,
		0xc2, 0x3b, 0xe1, 0x55, 0xdc, 0xa4, 0xc8, 0xaa, 0x61, 0x54, 0xf6, 0xe0, 0xf4, 0x84, 0xa8, 0x98,
		0x82, 0xf3, 0x55, 0xc6, 0xb9, 0x34, 0x16, 0x19, 0x98, 0xb6, 0x05, 0x5c, 0xee, 0xaf, 0xe5, 0x14,
		0x9c, 0x7f, 0xc4, 0x38, 0x25, 0x86, 0xe5, 0x4b, 0x8a, 0x19, 0x9f, 0x83, 0x85, 0x9b, 0xc8, 0xd9,
		0xb7, 0x5c, 0x76, 0x4b, 0x33, 0x05, 0xdd, 0x6b, 0x8c, 0x6e, 0x9e, 0x01, 0xc9, 0xb5, 0x0d, 0xe6,
		0xba, 0x02, 0xe9, 0xae, 0xaa, 0xa1, 0x29, 0x28, 0xbe, 0xc8, 0x28, 0x66, 0xb1, 0x3e, 0x86, 0x56,
		0x21, 0xd7, 0xb3, 0x58, 0x65, 0x8a, 0x86, 0xbf, 0xce, 0xe0, 0x59, 0x8e, 0x61, 0x14, 0xb6, 0x65,
		0x0f, 0x0c, 0x5c, 0xb6, 0xa2, 0x29, 0xfe, 0x98, 0x53, 0x70, 0x0c, 0xa3, 0x38, 0x81, 0x5b, 0xff,
		0x84, 0x53, 0xb8, 0x01, 0x7f, 0x3e, 0x0b, 0x59, 0xcb, 0x34, 0x0e, 0x2d, 0x73, 0x1a, 0x23, 0xbe,
		0xc4, 0x18, 0x80, 0x41, 0x30, 0xc1, 0x55, 0xc8, 0x4c, 0xbb, 0x10, 0x5f, 0x7e, 0x87, 0x6f, 0x0f,
		0xbe, 0x02, 0x9b, 0x30, 0xcf, 0x13, 0x94, 0x6e, 0x99, 0x53, 0x50, 0xfc, 0x19, 0xa3, 0xc8, 0x07,
		0x60, 0x6c, 0x1a, 0x1e, 0x72, 0xbd, 0x1e, 0x9a, 0x86, 0xe4, 0x0d, 0x3e, 0x0d, 0x06, 0x61, 0xae,
		0xdc, 0x47, 0xa6, 0x76, 0x30, 0x1d, 0xc3, 0x57, 0xb8, 0x2b, 0x39, 0x06, 0x53, 0xd4, 0x60, 0xae,
		0xaf, 0x3a, 0xee, 0x81, 0x6a, 0x4c, 0xb5, 0x1c, 0x7f, 0xce, 0x38, 0x72, 0x3e, 0x88, 0x79, 0x64,
		0x60, 0x9e, 0x84, 0xe6, 0xab, 0xdc, 0x23, 0x01, 0x18, 0xdb, 0x7a, 0xae, 0x47, 0xae, 0xb4, 0x4e,
		0xc2, 0xf6, 0x17, 0x7c, 0xeb, 0x51, 0xec, 0x76, 0x90, 0xf1, 0x2a, 0x64, 0x5c, 0xfd, 0xf6, 0x54,
		0x34, 0x7f, 0xc9, 0x57, 0x9a, 0x00, 0x30, 0xf8, 0x45, 0x38, 0x33, 0xb1, 0x4c, 0x4c, 0x41, 0xf6,
		0x57, 0x8c, 0xec, 0xd4, 0x84, 0x52, 0xc1, 0x52, 0xc2, 0x49, 0x29, 0xff, 0x9a, 0xa7, 0x04, 0x34,
		0xc2, 0xd5, 0xc2, 0x67, 0x05, 0x57, 0xed, 0x9e, 0xcc, 0x6b, 0x7f, 0xc3, 0xbd, 0x46, 0xb1, 0x21,
		0xaf, 0xed, 0xc2, 0x29, 0xc6, 0x78, 0xb2, 0x75, 0xfd, 0x1a, 0x4f, 0xac, 0x14, 0xbd, 0x17, 0x5e,
		0xdd, 0xcf, 0xc0, 0xb2, 0xef, 0x4e, 0xde, 0x94, 0xba, 0x4a, 0x5f, 0xb5, 0xa7, 0x60, 0xfe, 0x3a,
		0x63, 0xe6, 0x19, 0xdf, 0xef, 0x6a, 0xdd, 0x6d, 0xd5, 0xc6, 0xe4, 0x2f, 0x40, 0x81, 0x93, 0x0f,
		0x4c, 0x07, 0x69, 0x56, 0xcf, 0xd4, 0x6f, 0xa3, 0xce, 0x14, 0xd4, 0x7f, 0x3b, 0xb2, 0x54, 0x7b,
		0x01, 0x38, 0x66, 0x6e, 0x80, 0xe8, 0xf7, 0x2a, 0x8a, 0xde, 0xb7, 0x2d, 0xc7, 0x8b, 0x60, 0xfc,
		0x06, 0x5f, 0x29, 0x1f, 0xd7, 0x20, 0xb0, 0x4a, 0x1d, 0xf2, 0xe4, 0x71, 0xda, 0x90, 0xfc, 0x3b,
		0x46, 0x34, 0x37, 0x44, 0xb1, 0xc4, 0xa1, 0x59, 0x7d, 0x5b, 0x75, 0xa6, 0xc9, 0x7f, 0xdf, 0xe4,
		0x89, 0x83, 0x41, 0x58, 0xe2, 0xf0, 0x0e, 0x6d, 0x84, 0xab, 0xfd, 0x14, 0x0c, 0xdf, 0xe2, 0x89,
		0x83, 0x63, 0x18, 0x05, 0x6f, 0x18, 0xa6, 0xa0, 0xf8, 0x7b, 0x4e, 0xc1, 0x31, 0x98, 0xe2, 0x53,
		0xc3, 0x42, 0xeb, 0xa0, 0x9e, 0xee, 0x7a, 0x0e, 0x6d, 0x85, 0xef, 0x4f, 0xf5, 0xed, 0x77, 0xc2,
		0x4d, 0x98, 0x1c, 0x80, 0xe2, 0x4c, 0xc4, 0xae, 0x50, 0xc9, 0x49, 0x29, 0xda, 0xb0, 0xef, 0xf0,
		0x4c, 0x14, 0x80, 0xd1, 0xfd, 0x39, 0x3f, 0xd2, 0xab, 0x48, 0x51, 0x3f, 0x84, 0x29, 0xfc, 0xf2,
		0x7b, 0x8c, 0x2b, 0xdc, 0xaa, 0x54, 0xb6, 0x70, 0x00, 0x85, 0x1b, 0x8a, 0x68, 0xb2, 0x57, 0xde,
		0xf3, 0x63, 0x28, 0xd4, 0x4f, 0x54, 0xae, 0xc1, 0x5c, 0xa8, 0x99, 0x88, 0xa6, 0xfa, 0x15, 0x46,
		0x95, 0x0b, 0xf6, 0x12, 0x95, 0x8b, 0x90, 0xc0, 0x8d, 0x41, 0x34, 0xfc, 0x57, 0x19, 0x9c, 0xa8,
		0x57, 0x3e, 0x01, 0x69, 0xde, 0x10, 0x44, 0x43, 0x7f, 0x8d, 0x41, 0x7d, 0x08, 0x86, 0xf3, 0x66,
		0x20, 0x1a, 0xfe, 0xeb, 0x1c, 0xce, 0x21, 0x18, 0x3e, 0xbd, 0x0b, 0xff, 0xf1, 0x37, 0x12, 0x2c,
		0xa1, 0x73, 0xdf, 0x5d, 0x85, 0x59, 0xd6, 0x05, 0x44, 0xa3, 0x3f, 0xc7, 0x5e, 0xce, 0x11, 0x95,
		0xa7, 0x21, 0x39, 0xa5, 0xc3, 0x7f, 0x93, 0x41, 0xa9, 0x7e, 0xa5, 0x06, 0xd9, 0x40, 0xe5, 0x8f,
		0x86, 0xff, 0x16, 0x83, 0x07, 0x51, 0xd8, 0x74, 0x56, 0xf9, 0xa3, 0x09, 0x7e, 0x9b, 0x9b, 0xce,
		0x10, 0xd8, 0x6d, 0xbc, 0xe8, 0x47, 0xa3, 0x7f, 0x87, 0x7b, 0x9d, 0x43, 0x2a, 0xcf, 0x42, 0xc6,
		0x4f, 0xe4, 0xd1, 0xf8, 0xdf, 0x65, 0xf8, 0x21, 0x06, 0x7b, 0x20, 0x50, 0x48, 0xa2, 0x29, 0x7e,
		0x8f, 0x7b, 0x20, 0x80, 0xc2, 0xdb, 0x68, 0xb4, 0x39, 0x88, 0x66, 0xfa, 0x7d, 0xbe, 0x8d, 0x46,
		0x7a, 0x03, 0xbc, 0x9a, 0x24, 0x9f, 0x46, 0x53, 0xfc, 0x01, 0x5f, 0x4d, 0xa2, 0x8f, 0xcd, 0x18,
		0xad, 0xb6, 0xd1, 0x1c, 0x7f, 0xc8, 0xcd, 0x18, 0x29, 0xb6, 0x95, 0x16, 0x48, 0xe3, 0x95, 0x36,
		0x9a, 0xef, 0xf3, 0x8c, 0x6f, 0x61, 0xac, 0xd0, 0x56, 0x9e, 0x87, 0x53, 0x93, 0xab, 0x6c, 0x34,
		0xeb, 0x17, 0xde, 0x1b, 0x39, 0x17, 0x05, 0x8b, 0x6c, 0x65, 0x77, 0x98, 0xae, 0x83, 0x15, 0x36,
		0x9a, 0xf6, 0xd5, 0xf7, 0xc2, 0x19, 0x3b, 0x58, 0x60, 0x2b, 0x55, 0x80, 0x61, 0x71, 0x8b, 0xe6,
		0x7a, 0x8d, 0x71, 0x05, 0x40, 0x78, 0x6b, 0xb0, 0xda, 0x16, 0x8d, 0xff, 0x22, 0xdf, 0x1a, 0x0c,
		0x81, 0xb7, 0x06, 0x2f, 0x6b, 0xd1, 0xe8, 0xd7, 0xf9, 0xd6, 0xe0, 0x10, 0x1c, 0xd9, 0x81, 0xca,
		0x11, 0xcd, 0xf0, 0x25, 0x1e, 0xd9, 0x01, 0x54, 0xe5, 0x2a, 0xa4, 0xcd, 0x81, 0x61, 0xe0, 0x00,
		0x95, 0xee, 0xff, 0x03, 0xb1, 0xc2, 0x7f, 0xdc, 0x63, 0x16, 0x70, 0x40, 0xe5, 0x22, 0x24, 0x51,
		0x7f, 0x1f, 0x75, 0xa2, 0x90, 0xff, 0x79, 0x8f, 0x27, 0x25, 0xac, 0x5d, 0x79, 0x16, 0x80, 0x1e,
		0xed, 0xc9, 0x67, 0xab, 0x08, 0xec, 0x7f, 0xdd, 0x63, 0x3f, 0xdd, 0x18, 0x42, 0x86, 0x04, 0xf4,
		0x87, 0x20, 0xf7, 0x27, 0x78, 0x27, 0x4c, 0x40, 0x66, 0x7d, 0x05, 0x66, 0xaf, 0xbb, 0x96, 0xe9,
		0xa9, 0xbd, 0x28, 0xf4, 0x7f, 0x33, 0x34, 0xd7, 0xc7, 0x0e, 0xeb, 0x5b, 0x0e, 0xf2, 0xd4, 0x9e,
		0x1b, 0x85, 0xfd, 0x1f, 0x86, 0xf5, 0x01, 0x18, 0xac, 0xa9, 0xae, 0x37, 0xcd, 0xbc, 0x7f, 0xc4,
		0xc1, 0x1c, 0x80, 0x8d, 0xc6, 0xff, 0xdf, 0x40, 0x87, 0x51, 0xd8, 0x77, 0xb9, 0xd1, 0x4c, 0xbf,
		0xf2, 0x09, 0xc8, 0xe0, 0x7f, 0xe9, 0xef, 0xb1, 0x22, 0xc0, 0xff, 0xcb, 0xc0, 0x43, 0x04, 0x7e,
		0xb3, 0xeb, 0x75, 0x3c, 0x3d, 0xda, 0xd9, 0xff, 0xc7, 0x56, 0x9a, 0xeb, 0x57, 0xaa, 0x90, 0x75,
		0xbd, 0x4e, 0x67, 0xc0, 0xfa, 0xab, 0x08, 0xf8, 0xff, 0xdf, 0xf3, 0x8f, 0xdc, 0x3e, 0x66, 0xbd,
		0x3e, 0xf9, 0xf6, 0x10, 0x36, 0xad, 0x4d, 0x8b, 0xde, 0x1b, 0xbe, 0x54, 0x8a, 0xbe, 0x00, 0x84,
		0x6f, 0xc6, 0x61, 0x59, 0xb3, 0xfa, 0xfb, 0x96, 0xbb, 0xe6, 0x67, 0xac, 0xb5, 0xbe, 0x6a, 0xb3,
		0x4b, 0xc1, 0x6c, 0x5f, 0xb5, 0xd9, 0xaf, 0x2f, 0xdd, 0xe5, 0x93, 0x5d, 0x28, 0x96, 0x7e, 0x09,
		0x66, 0xb7, 0x55, 0x7b, 0x17, 0xb9, 0x9e, 0x44, 0x5c, 0x45, 0x7e, 0xe6, 0xc3, 0x6e, 0x69, 0x57,
		0xca, 0x01, 0xe2, 0x32, 0x53, 0x2b, 0xb7, 0x3d, 0xa7, 0xed, 0x39, 0xe4, 0x8b, 0xb6, 0x9c, 0x72,
		0xc9, 0xc3, 0xf2, 0x15, 0xc8, 0x06, 0xc4, 0x92, 0x08, 0xf1, 0x1b, 0xe8, 0x90, 0xfd, 0xd0, 0x07,
		0xff, 0x2b, 0x2d, 0x0d, 0x7f, 0x89, 0x87, 0x65, 0xf4, 0xa1, 0x12, 0xbb, 0x2c, 0x94, 0x9e, 0x81,
		0xd9, 0x6b, 0xea, 0x0d, 0xb4, 0xad, 0xda, 0xd2, 0x05, 0x98, 0x45, 0xa6, 0xe7, 0xe8, 0xc8, 0x65,
		0x06, 0x9c, 0x09, 0x19, 0xc0, 0xd4, 0xe8, 0x9b, 0xb9, 0x66, 0x69, 0x0b, 0x72, 0xc1, 0x81, 0x69,
		0xdf, 0x8d, 0xa5, 0x96, 0x77, 0xc0, 0x7e, 0x99, 0x9b, 0x91, 0xe9, 0xc3, 0xfa, 0xc6, 0x9b, 0x77,
		0x8b, 0x33, 0xdf, 0xbb, 0x5b, 0x9c, 0xf9, 0xd7, 0xbb, 0xc5, 0x99, 0xb7, 0xee, 0x16, 0x85, 0x77,
		0xef, 0x16, 0x85, 0xf7, 0xef, 0x16, 0x85, 0x3b, 0x47, 0x45, 0xe1, 0x2b, 0x47, 0x45, 0xe1, 0x6b,
		0x47, 0x45, 0xe1, 0xdb, 0x47, 0x45, 0xe1, 0xcd, 0xa3, 0xa2, 0xf0, 0xbd, 0xa3, 0xe2, 0xcc, 0x5b,
		0x47, 0x45, 0xe1, 0x87, 0x47, 0xc5, 0x99, 0x77, 0x8f, 0x8a, 0xc2, 0xfb, 0x47, 0xc5, 0x99, 0x3b,
		0x3f, 0x28, 0xce, 0xec, 0xa7, 0x88, 0x6f, 0x2f, 0xfc, 0x38, 0x00, 0x00, 0xff, 0xff, 0x3c, 0xbf,
		0xee, 0x10, 0xd2, 0x32, 0x00, 0x00,
	}
	r := bytes.NewReader(gzipped)
	gzipr, err := compress_gzip.NewReader(r)
	if err != nil {
		panic(err)
	}
	ungzipped, err := io_ioutil.ReadAll(gzipr)
	if err != nil {
		panic(err)
	}
	if err := github_com_gogo_protobuf_proto.Unmarshal(ungzipped, d); err != nil {
		panic(err)
	}
	return d
}
func (this *MapTest) VerboseEqual(that interface{}) error {
	if that == nil {
		if this == nil {
			return nil
		}
		return fmt.Errorf("that == nil && this != nil")
	}

	that1, ok := that.(*MapTest)
	if !ok {
		that2, ok := that.(MapTest)
		if ok {
			that1 = &that2
		} else {
			return fmt.Errorf("that is not of type *MapTest")
		}
	}
	if that1 == nil {
		if this == nil {
			return nil
		}
		return fmt.Errorf("that is type *MapTest but is nil && this != nil")
	} else if this == nil {
		return fmt.Errorf("that is type *MapTest but is not nil && this == nil")
	}
	if len(this.StrStr) != len(that1.StrStr) {
		return fmt.Errorf("StrStr this(%v) Not Equal that(%v)", len(this.StrStr), len(that1.StrStr))
	}
	for i := range this.StrStr {
		if this.StrStr[i] != that1.StrStr[i] {
			return fmt.Errorf("StrStr this[%v](%v) Not Equal that[%v](%v)", i, this.StrStr[i], i, that1.StrStr[i])
		}
	}
	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
		return fmt.Errorf("XXX_unrecognized this(%v) Not Equal that(%v)", this.XXX_unrecognized, that1.XXX_unrecognized)
	}
	return nil
}
func (this *MapTest) Equal(that interface{}) bool {
	if that == nil {
		return this == nil
	}

	that1, ok := that.(*MapTest)
	if !ok {
		that2, ok := that.(MapTest)
		if ok {
			that1 = &that2
		} else {
			return false
		}
	}
	if that1 == nil {
		return this == nil
	} else if this == nil {
		return false
	}
	if len(this.StrStr) != len(that1.StrStr) {
		return false
	}
	for i := range this.StrStr {
		if this.StrStr[i] != that1.StrStr[i] {
			return false
		}
	}
	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
		return false
	}
	return true
}
func (this *FakeMap) VerboseEqual(that interface{}) error {
	if that == nil {
		if this == nil {
			return nil
		}
		return fmt.Errorf("that == nil && this != nil")
	}

	that1, ok := that.(*FakeMap)
	if !ok {
		that2, ok := that.(FakeMap)
		if ok {
			that1 = &that2
		} else {
			return fmt.Errorf("that is not of type *FakeMap")
		}
	}
	if that1 == nil {
		if this == nil {
			return nil
		}
		return fmt.Errorf("that is type *FakeMap but is nil && this != nil")
	} else if this == nil {
		return fmt.Errorf("that is type *FakeMap but is not nil && this == nil")
	}
	if len(this.Entries) != len(that1.Entries) {
		return fmt.Errorf("Entries this(%v) Not Equal that(%v)", len(this.Entries), len(that1.Entries))
	}
	for i := range this.Entries {
		if !this.Entries[i].Equal(that1.Entries[i]) {
			return fmt.Errorf("Entries this[%v](%v) Not Equal that[%v](%v)", i, this.Entries[i], i, that1.Entries[i])
		}
	}
	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
		return fmt.Errorf("XXX_unrecognized this(%v) Not Equal that(%v)", this.XXX_unrecognized, that1.XXX_unrecognized)
	}
	return nil
}
func (this *FakeMap) Equal(that interface{}) bool {
	if that == nil {
		return this == nil
	}

	that1, ok := that.(*FakeMap)
	if !ok {
		that2, ok := that.(FakeMap)
		if ok {
			that1 = &that2
		} else {
			return false
		}
	}
	if that1 == nil {
		return this == nil
	} else if this == nil {
		return false
	}
	if len(this.Entries) != len(that1.Entries) {
		return false
	}
	for i := range this.Entries {
		if !this.Entries[i].Equal(that1.Entries[i]) {
			return false
		}
	}
	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
		return false
	}
	return true
}
func (this *FakeMapEntry) VerboseEqual(that interface{}) error {
	if that == nil {
		if this == nil {
			return nil
		}
		return fmt.Errorf("that == nil && this != nil")
	}

	that1, ok := that.(*FakeMapEntry)
	if !ok {
		that2, ok := that.(FakeMapEntry)
		if ok {
			that1 = &that2
		} else {
			return fmt.Errorf("that is not of type *FakeMapEntry")
		}
	}
	if that1 == nil {
		if this == nil {
			return nil
		}
		return fmt.Errorf("that is type *FakeMapEntry but is nil && this != nil")
	} else if this == nil {
		return fmt.Errorf("that is type *FakeMapEntry but is not nil && this == nil")
	}
	if this.Key != that1.Key {
		return fmt.Errorf("Key this(%v) Not Equal that(%v)", this.Key, that1.Key)
	}
	if this.Value != that1.Value {
		return fmt.Errorf("Value this(%v) Not Equal that(%v)", this.Value, that1.Value)
	}
	if this.Other != that1.Other {
		return fmt.Errorf("Other this(%v) Not Equal that(%v)", this.Other, that1.Other)
	}
	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
		return fmt.Errorf("XXX_unrecognized this(%v) Not Equal that(%v)", this.XXX_unrecognized, that1.XXX_unrecognized)
	}
	return nil
}
func (this *FakeMapEntry) Equal(that interface{}) bool {
	if that == nil {
		return this == nil
	}

	that1, ok := that.(*FakeMapEntry)
	if !ok {
		that2, ok := that.(FakeMapEntry)
		if ok {
			that1 = &that2
		} else {
			return false
		}
	}
	if that1 == nil {
		return this == nil
	} else if this == nil {
		return false
	}
	if this.Key != that1.Key {
		return false
	}
	if this.Value != that1.Value {
		return false
	}
	if this.Other != that1.Other {
		return false
	}
	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
		return false
	}
	return true
}
func (this *MapTest) GoString() string {
	if this == nil {
		return "nil"
	}
	s := make([]string, 0, 5)
	s = append(s, "&mapdefaults.MapTest{")
	keysForStrStr := make([]string, 0, len(this.StrStr))
	for k := range this.StrStr {
		keysForStrStr = append(keysForStrStr, k)
	}
	github_com_gogo_protobuf_sortkeys.Strings(keysForStrStr)
	mapStringForStrStr := "map[string]string{"
	for _, k := range keysForStrStr {
		mapStringForStrStr += fmt.Sprintf("%#v: %#v,", k, this.StrStr[k])
	}
	mapStringForStrStr += "}"
	if this.StrStr != nil {
		s = append(s, "StrStr: "+mapStringForStrStr+",\n")
	}
	if this.XXX_unrecognized != nil {
		s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n")
	}
	s = append(s, "}")
	return strings.Join(s, "")
}
func (this *FakeMap) GoString() string {
	if this == nil {
		return "nil"
	}
	s := make([]string, 0, 5)
	s = append(s, "&mapdefaults.FakeMap{")
	if this.Entries != nil {
		s = append(s, "Entries: "+fmt.Sprintf("%#v", this.Entries)+",\n")
	}
	if this.XXX_unrecognized != nil {
		s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n")
	}
	s = append(s, "}")
	return strings.Join(s, "")
}
func (this *FakeMapEntry) GoString() string {
	if this == nil {
		return "nil"
	}
	s := make([]string, 0, 7)
	s = append(s, "&mapdefaults.FakeMapEntry{")
	s = append(s, "Key: "+fmt.Sprintf("%#v", this.Key)+",\n")
	s = append(s, "Value: "+fmt.Sprintf("%#v", this.Value)+",\n")
	s = append(s, "Other: "+fmt.Sprintf("%#v", this.Other)+",\n")
	if this.XXX_unrecognized != nil {
		s = append(s, "XXX_unrecognized:"+fmt.Sprintf("%#v", this.XXX_unrecognized)+",\n")
	}
	s = append(s, "}")
	return strings.Join(s, "")
}
func valueToGoStringMap(v interface{}, typ string) string {
	rv := reflect.ValueOf(v)
	if rv.IsNil() {
		return "nil"
	}
	pv := reflect.Indirect(rv).Interface()
	return fmt.Sprintf("func(v %v) *%v { return &v } ( %#v )", typ, typ, pv)
}
func (m *MapTest) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalTo(dAtA)
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *MapTest) MarshalTo(dAtA []byte) (int, error) {
	var i int
	_ = i
	var l int
	_ = l
	if len(m.StrStr) > 0 {
		for k := range m.StrStr {
			dAtA[i] = 0xa
			i++
			v := m.StrStr[k]
			mapSize := 1 + len(k) + sovMap(uint64(len(k))) + 1 + len(v) + sovMap(uint64(len(v)))
			i = encodeVarintMap(dAtA, i, uint64(mapSize))
			dAtA[i] = 0xa
			i++
			i = encodeVarintMap(dAtA, i, uint64(len(k)))
			i += copy(dAtA[i:], k)
			dAtA[i] = 0x12
			i++
			i = encodeVarintMap(dAtA, i, uint64(len(v)))
			i += copy(dAtA[i:], v)
		}
	}
	if m.XXX_unrecognized != nil {
		i += copy(dAtA[i:], m.XXX_unrecognized)
	}
	return i, nil
}

func (m *FakeMap) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalTo(dAtA)
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *FakeMap) MarshalTo(dAtA []byte) (int, error) {
	var i int
	_ = i
	var l int
	_ = l
	if len(m.Entries) > 0 {
		for _, msg := range m.Entries {
			dAtA[i] = 0xa
			i++
			i = encodeVarintMap(dAtA, i, uint64(msg.Size()))
			n, err := msg.MarshalTo(dAtA[i:])
			if err != nil {
				return 0, err
			}
			i += n
		}
	}
	if m.XXX_unrecognized != nil {
		i += copy(dAtA[i:], m.XXX_unrecognized)
	}
	return i, nil
}

func (m *FakeMapEntry) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalTo(dAtA)
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *FakeMapEntry) MarshalTo(dAtA []byte) (int, error) {
	var i int
	_ = i
	var l int
	_ = l
	if len(m.Key) > 0 {
		dAtA[i] = 0xa
		i++
		i = encodeVarintMap(dAtA, i, uint64(len(m.Key)))
		i += copy(dAtA[i:], m.Key)
	}
	if len(m.Value) > 0 {
		dAtA[i] = 0x12
		i++
		i = encodeVarintMap(dAtA, i, uint64(len(m.Value)))
		i += copy(dAtA[i:], m.Value)
	}
	if len(m.Other) > 0 {
		dAtA[i] = 0x1a
		i++
		i = encodeVarintMap(dAtA, i, uint64(len(m.Other)))
		i += copy(dAtA[i:], m.Other)
	}
	if m.XXX_unrecognized != nil {
		i += copy(dAtA[i:], m.XXX_unrecognized)
	}
	return i, nil
}

func encodeVarintMap(dAtA []byte, offset int, v uint64) int {
	for v >= 1<<7 {
		dAtA[offset] = uint8(v&0x7f | 0x80)
		v >>= 7
		offset++
	}
	dAtA[offset] = uint8(v)
	return offset + 1
}
func NewPopulatedMapTest(r randyMap, easy bool) *MapTest {
	this := &MapTest{}
	if r.Intn(10) != 0 {
		v1 := r.Intn(10)
		this.StrStr = make(map[string]string)
		for i := 0; i < v1; i++ {
			this.StrStr[randStringMap(r)] = randStringMap(r)
		}
	}
	if !easy && r.Intn(10) != 0 {
		this.XXX_unrecognized = randUnrecognizedMap(r, 2)
	}
	return this
}

func NewPopulatedFakeMap(r randyMap, easy bool) *FakeMap {
	this := &FakeMap{}
	if r.Intn(10) != 0 {
		v2 := r.Intn(5)
		this.Entries = make([]*FakeMapEntry, v2)
		for i := 0; i < v2; i++ {
			this.Entries[i] = NewPopulatedFakeMapEntry(r, easy)
		}
	}
	if !easy && r.Intn(10) != 0 {
		this.XXX_unrecognized = randUnrecognizedMap(r, 2)
	}
	return this
}

func NewPopulatedFakeMapEntry(r randyMap, easy bool) *FakeMapEntry {
	this := &FakeMapEntry{}
	this.Key = string(randStringMap(r))
	this.Value = string(randStringMap(r))
	this.Other = string(randStringMap(r))
	if !easy && r.Intn(10) != 0 {
		this.XXX_unrecognized = randUnrecognizedMap(r, 4)
	}
	return this
}

type randyMap interface {
	Float32() float32
	Float64() float64
	Int63() int64
	Int31() int32
	Uint32() uint32
	Intn(n int) int
}

func randUTF8RuneMap(r randyMap) rune {
	ru := r.Intn(62)
	if ru < 10 {
		return rune(ru + 48)
	} else if ru < 36 {
		return rune(ru + 55)
	}
	return rune(ru + 61)
}
func randStringMap(r randyMap) string {
	v3 := r.Intn(100)
	tmps := make([]rune, v3)
	for i := 0; i < v3; i++ {
		tmps[i] = randUTF8RuneMap(r)
	}
	return string(tmps)
}
func randUnrecognizedMap(r randyMap, maxFieldNumber int) (dAtA []byte) {
	l := r.Intn(5)
	for i := 0; i < l; i++ {
		wire := r.Intn(4)
		if wire == 3 {
			wire = 5
		}
		fieldNumber := maxFieldNumber + r.Intn(100)
		dAtA = randFieldMap(dAtA, r, fieldNumber, wire)
	}
	return dAtA
}
func randFieldMap(dAtA []byte, r randyMap, fieldNumber int, wire int) []byte {
	key := uint32(fieldNumber)<<3 | uint32(wire)
	switch wire {
	case 0:
		dAtA = encodeVarintPopulateMap(dAtA, uint64(key))
		v4 := r.Int63()
		if r.Intn(2) == 0 {
			v4 *= -1
		}
		dAtA = encodeVarintPopulateMap(dAtA, uint64(v4))
	case 1:
		dAtA = encodeVarintPopulateMap(dAtA, uint64(key))
		dAtA = append(dAtA, byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)))
	case 2:
		dAtA = encodeVarintPopulateMap(dAtA, uint64(key))
		ll := r.Intn(100)
		dAtA = encodeVarintPopulateMap(dAtA, uint64(ll))
		for j := 0; j < ll; j++ {
			dAtA = append(dAtA, byte(r.Intn(256)))
		}
	default:
		dAtA = encodeVarintPopulateMap(dAtA, uint64(key))
		dAtA = append(dAtA, byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)), byte(r.Intn(256)))
	}
	return dAtA
}
func encodeVarintPopulateMap(dAtA []byte, v uint64) []byte {
	for v >= 1<<7 {
		dAtA = append(dAtA, uint8(uint64(v)&0x7f|0x80))
		v >>= 7
	}
	dAtA = append(dAtA, uint8(v))
	return dAtA
}
func (m *MapTest) Size() (n int) {
	var l int
	_ = l
	if len(m.StrStr) > 0 {
		for k, v := range m.StrStr {
			_ = k
			_ = v
			mapEntrySize := 1 + len(k) + sovMap(uint64(len(k))) + 1 + len(v) + sovMap(uint64(len(v)))
			n += mapEntrySize + 1 + sovMap(uint64(mapEntrySize))
		}
	}
	if m.XXX_unrecognized != nil {
		n += len(m.XXX_unrecognized)
	}
	return n
}

func (m *FakeMap) Size() (n int) {
	var l int
	_ = l
	if len(m.Entries) > 0 {
		for _, e := range m.Entries {
			l = e.Size()
			n += 1 + l + sovMap(uint64(l))
		}
	}
	if m.XXX_unrecognized != nil {
		n += len(m.XXX_unrecognized)
	}
	return n
}

func (m *FakeMapEntry) Size() (n int) {
	var l int
	_ = l
	l = len(m.Key)
	if l > 0 {
		n += 1 + l + sovMap(uint64(l))
	}
	l = len(m.Value)
	if l > 0 {
		n += 1 + l + sovMap(uint64(l))
	}
	l = len(m.Other)
	if l > 0 {
		n += 1 + l + sovMap(uint64(l))
	}
	if m.XXX_unrecognized != nil {
		n += len(m.XXX_unrecognized)
	}
	return n
}

func sovMap(x uint64) (n int) {
	for {
		n++
		x >>= 7
		if x == 0 {
			break
		}
	}
	return n
}
func sozMap(x uint64) (n int) {
	return sovMap(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
func (this *MapTest) String() string {
	if this == nil {
		return "nil"
	}
	keysForStrStr := make([]string, 0, len(this.StrStr))
	for k := range this.StrStr {
		keysForStrStr = append(keysForStrStr, k)
	}
	github_com_gogo_protobuf_sortkeys.Strings(keysForStrStr)
	mapStringForStrStr := "map[string]string{"
	for _, k := range keysForStrStr {
		mapStringForStrStr += fmt.Sprintf("%v: %v,", k, this.StrStr[k])
	}
	mapStringForStrStr += "}"
	s := strings.Join([]string{`&MapTest{`,
		`StrStr:` + mapStringForStrStr + `,`,
		`XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
		`}`,
	}, "")
	return s
}
func (this *FakeMap) String() string {
	if this == nil {
		return "nil"
	}
	s := strings.Join([]string{`&FakeMap{`,
		`Entries:` + strings.Replace(fmt.Sprintf("%v", this.Entries), "FakeMapEntry", "FakeMapEntry", 1) + `,`,
		`XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
		`}`,
	}, "")
	return s
}
func (this *FakeMapEntry) String() string {
	if this == nil {
		return "nil"
	}
	s := strings.Join([]string{`&FakeMapEntry{`,
		`Key:` + fmt.Sprintf("%v", this.Key) + `,`,
		`Value:` + fmt.Sprintf("%v", this.Value) + `,`,
		`Other:` + fmt.Sprintf("%v", this.Other) + `,`,
		`XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
		`}`,
	}, "")
	return s
}
func valueToStringMap(v interface{}) string {
	rv := reflect.ValueOf(v)
	if rv.IsNil() {
		return "nil"
	}
	pv := reflect.Indirect(rv).Interface()
	return fmt.Sprintf("*%v", pv)
}

func init() { proto.RegisterFile("combos/marshaler/map.proto", fileDescriptor_map_65406068076b05e6) }

var fileDescriptor_map_65406068076b05e6 = []byte{
	// 315 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x90, 0x3f, 0x4f, 0x3a, 0x31,
	0x18, 0xc7, 0xfb, 0x40, 0x7e, 0x5c, 0x7e, 0xc5, 0xc1, 0x5c, 0x1c, 0x4e, 0x86, 0x27, 0x84, 0x89,
	0xc5, 0xbb, 0x44, 0x16, 0x71, 0x70, 0x30, 0xea, 0x24, 0x0b, 0xb8, 0x9b, 0x1e, 0x96, 0x3f, 0x81,
	0xa3, 0x97, 0xb6, 0x67, 0xc2, 0x24, 0x2f, 0xc7, 0xd1, 0xd1, 0x97, 0xc0, 0xc8, 0xe8, 0x48, 0xeb,
	0xe2, 0xc8, 0xc8, 0x68, 0xe8, 0x9d, 0xc9, 0xb9, 0xb9, 0x3d, 0x9f, 0x6f, 0x3f, 0xed, 0xf3, 0x4d,
	0x69, 0x63, 0x28, 0x92, 0x58, 0xa8, 0x28, 0x61, 0x52, 0x4d, 0xd8, 0x9c, 0xcb, 0x28, 0x61, 0x69,
	0x98, 0x4a, 0xa1, 0x85, 0x5f, 0x4f, 0x58, 0xfa, 0xc4, 0x47, 0x2c, 0x9b, 0x6b, 0xd5, 0x38, 0x1b,
	0x4f, 0xf5, 0x24, 0x8b, 0xc3, 0xa1, 0x48, 0xa2, 0xb1, 0x18, 0x8b, 0xc8, 0x39, 0x71, 0x36, 0x72,
	0xe4, 0xc0, 0x4d, 0xf9, 0xdd, 0xd6, 0x0b, 0xf5, 0x7a, 0x2c, 0x7d, 0xe0, 0x4a, 0xfb, 0x5d, 0xea,
	0x29, 0x2d, 0x1f, 0x95, 0x96, 0x01, 0x34, 0xab, 0xed, 0xfa, 0x79, 0x33, 0x2c, 0x3d, 0x1c, 0x16,
	0x5a, 0x38, 0xd0, 0x72, 0xa0, 0xe5, 0xed, 0x42, 0xcb, 0x65, 0xbf, 0xa6, 0x1c, 0x34, 0xba, 0xb4,
	0x5e, 0x8a, 0xfd, 0x63, 0x5a, 0x9d, 0xf1, 0x65, 0x00, 0x4d, 0x68, 0xff, 0xef, 0x1f, 0x46, 0xff,
	0x84, 0xfe, 0x7b, 0x66, 0xf3, 0x8c, 0x07, 0x15, 0x97, 0xe5, 0x70, 0x59, 0xb9, 0x80, 0xd6, 0x15,
	0xf5, 0xee, 0xd8, 0x8c, 0xf7, 0x58, 0xea, 0x77, 0xa8, 0xc7, 0x17, 0x5a, 0x4e, 0xb9, 0x2a, 0x0a,
	0x9c, 0xfe, 0x2a, 0x50, 0x68, 0xf9, 0xe6, 0x1f, 0xb3, 0x75, 0x4f, 0x8f, 0xca, 0x07, 0x7f, 0xdd,
	0x7d, 0x48, 0x85, 0x9e, 0x70, 0x19, 0x54, 0xf3, 0xd4, 0xc1, 0xf5, 0xcd, 0xda, 0x20, 0xd9, 0x18,
	0x24, 0x1f, 0x06, 0xc9, 0xd6, 0x20, 0xec, 0x0c, 0xc2, 0xde, 0x20, 0xac, 0x2c, 0xc2, 0xab, 0x45,
	0x78, 0xb3, 0x08, 0xef, 0x16, 0x61, 0x6d, 0x11, 0x36, 0x16, 0xc9, 0xd6, 0x22, 0x7c, 0x59, 0x24,
	0x3b, 0x8b, 0xb0, 0xb7, 0x48, 0x56, 0x9f, 0x48, 0xe2, 0x9a, 0xfb, 0xdb, 0xce, 0x77, 0x00, 0x00,
	0x00, 0xff, 0xff, 0xde, 0x50, 0x18, 0x62, 0xb5, 0x01, 0x00, 0x00,
}
