func MergeInt64Uint32(map1, map2 map[int64]uint32) map[int64]uint32 {
	if map1 == nil && map2 == nil {
		return map[int64]uint32{}
	}
	newMap := make(map[int64]uint32)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
MergeInt64Uint32 takes two inputs: map[int64]uint32 and map[int64]uint32 and merge two maps and returns a new map[int64]uint32.
package fp
func MergeInt(map1, map2 map[int]int) map[int]int {
	if map1 == nil && map2 == nil {
		return map[int]int{}
	}
	newMap := make(map[int]int)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntInt64(map1, map2 map[int]int64) map[int]int64 {
	if map1 == nil && map2 == nil {
		return map[int]int64{}
	}
	newMap := make(map[int]int64)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntInt32(map1, map2 map[int]int32) map[int]int32 {
	if map1 == nil && map2 == nil {
		return map[int]int32{}
	}
	newMap := make(map[int]int32)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntInt16(map1, map2 map[int]int16) map[int]int16 {
	if map1 == nil && map2 == nil {
		return map[int]int16{}
	}
	newMap := make(map[int]int16)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntInt8(map1, map2 map[int]int8) map[int]int8 {
	if map1 == nil && map2 == nil {
		return map[int]int8{}
	}
	newMap := make(map[int]int8)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntUint(map1, map2 map[int]uint) map[int]uint {
	if map1 == nil && map2 == nil {
		return map[int]uint{}
	}
	newMap := make(map[int]uint)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntUint64(map1, map2 map[int]uint64) map[int]uint64 {
	if map1 == nil && map2 == nil {
		return map[int]uint64{}
	}
	newMap := make(map[int]uint64)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntUint32(map1, map2 map[int]uint32) map[int]uint32 {
	if map1 == nil && map2 == nil {
		return map[int]uint32{}
	}
	newMap := make(map[int]uint32)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntUint16(map1, map2 map[int]uint16) map[int]uint16 {
	if map1 == nil && map2 == nil {
		return map[int]uint16{}
	}
	newMap := make(map[int]uint16)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntUint8(map1, map2 map[int]uint8) map[int]uint8 {
	if map1 == nil && map2 == nil {
		return map[int]uint8{}
	}
	newMap := make(map[int]uint8)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntStr(map1, map2 map[int]string) map[int]string {
	if map1 == nil && map2 == nil {
		return map[int]string{}
	}
	newMap := make(map[int]string)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntBool(map1, map2 map[int]bool) map[int]bool {
	if map1 == nil && map2 == nil {
		return map[int]bool{}
	}
	newMap := make(map[int]bool)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntFloat32(map1, map2 map[int]float32) map[int]float32 {
	if map1 == nil && map2 == nil {
		return map[int]float32{}
	}
	newMap := make(map[int]float32)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeIntFloat64(map1, map2 map[int]float64) map[int]float64 {
	if map1 == nil && map2 == nil {
		return map[int]float64{}
	}
	newMap := make(map[int]float64)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeInt64Int(map1, map2 map[int64]int) map[int64]int {
	if map1 == nil && map2 == nil {
		return map[int64]int{}
	}
	newMap := make(map[int64]int)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeInt64(map1, map2 map[int64]int64) map[int64]int64 {
	if map1 == nil && map2 == nil {
		return map[int64]int64{}
	}
	newMap := make(map[int64]int64)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeInt64Int32(map1, map2 map[int64]int32) map[int64]int32 {
	if map1 == nil && map2 == nil {
		return map[int64]int32{}
	}
	newMap := make(map[int64]int32)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeInt64Int16(map1, map2 map[int64]int16) map[int64]int16 {
	if map1 == nil && map2 == nil {
		return map[int64]int16{}
	}
	newMap := make(map[int64]int16)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeInt64Int8(map1, map2 map[int64]int8) map[int64]int8 {
	if map1 == nil && map2 == nil {
		return map[int64]int8{}
	}
	newMap := make(map[int64]int8)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeInt64Uint(map1, map2 map[int64]uint) map[int64]uint {
	if map1 == nil && map2 == nil {
		return map[int64]uint{}
	}
	newMap := make(map[int64]uint)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}
func MergeInt64Uint64(map1, map2 map[int64]uint64) map[int64]uint64 {
	if map1 == nil && map2 == nil {
		return map[int64]uint64{}
	}
	newMap := make(map[int64]uint64)
	if map1 == nil {
		for k, v := range map2 {
			newMap[k] = v
		}
		return newMap
	}
	if map2 == nil {
		for k, v := range map1 {
			newMap[k] = v
		}
		return newMap
	}
	for k, v := range map1 {
		newMap[k] = v
	}
	for k, v := range map2 {
		newMap[k] = v
	}
	return newMap
}