| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | package netimport (	"strings"	"v2ray.com/core/common/collect")func ParseNetwork(nwStr string) Network {	if network, found := Network_value[nwStr]; found {		return Network(network)	}	switch strings.ToLower(nwStr) {	case "tcp":		return Network_TCP	case "udp":		return Network_UDP	case "kcp":		return Network_KCP	case "ws":		return Network_WebSocket	default:		return Network_Unknown	}}func (this Network) AsList() *NetworkList {	return &NetworkList{		Network: []Network{this},	}}func (this Network) SystemString() string {	switch this {	case Network_TCP, Network_RawTCP:		return "tcp"	case Network_UDP, Network_KCP:		return "udp"	default:		return "unknown"	}}func (this Network) UrlPrefix() string {	switch this {	case Network_TCP, Network_RawTCP:		return "tcp"	case Network_UDP:		return "udp"	case Network_KCP:		return "kcp"	case Network_WebSocket:		return "ws"	default:		return "unknown"	}}// NewNetworkList construsts a NetWorklist from the given StringListeralList.func NewNetworkList(networks collect.StringList) *NetworkList {	list := &NetworkList{		Network: make([]Network, networks.Len()),	}	for idx, network := range networks {		list.Network[idx] = ParseNetwork(network)	}	return list}// HashNetwork returns true if the given network is in this NetworkList.func (this *NetworkList) HasNetwork(network Network) bool {	for _, value := range this.Network {		if string(value) == string(network) {			return true		}	}	return false}
 |