|  | @@ -37,6 +37,12 @@ func TestVMessDynamicPort(t *testing.T) {
 | 
	
		
			
				|  |  |  	userID := protocol.NewID(uuid.New())
 | 
	
		
			
				|  |  |  	serverPort := pickPort()
 | 
	
		
			
				|  |  |  	serverConfig := &core.Config{
 | 
	
		
			
				|  |  | +		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | +			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | +				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | +				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | +			}),
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -82,16 +88,16 @@ func TestVMessDynamicPort(t *testing.T) {
 | 
	
		
			
				|  |  |  				ProxySettings: serial.ToTypedMessage(&freedom.Config{}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	clientPort := pickPort()
 | 
	
		
			
				|  |  | +	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  |  			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  |  				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  |  				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  |  			}),
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	clientPort := pickPort()
 | 
	
		
			
				|  |  | -	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -126,12 +132,6 @@ func TestVMessDynamicPort(t *testing.T) {
 | 
	
		
			
				|  |  |  				}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | -			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | -				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | -				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | -			}),
 | 
	
		
			
				|  |  | -		},
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	servers, err := InitializeServerConfigs(serverConfig, clientConfig)
 | 
	
	
		
			
				|  | @@ -172,6 +172,12 @@ func TestVMessGCM(t *testing.T) {
 | 
	
		
			
				|  |  |  	userID := protocol.NewID(uuid.New())
 | 
	
		
			
				|  |  |  	serverPort := pickPort()
 | 
	
		
			
				|  |  |  	serverConfig := &core.Config{
 | 
	
		
			
				|  |  | +		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | +			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | +				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | +				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | +			}),
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -195,16 +201,16 @@ func TestVMessGCM(t *testing.T) {
 | 
	
		
			
				|  |  |  				ProxySettings: serial.ToTypedMessage(&freedom.Config{}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	clientPort := pickPort()
 | 
	
		
			
				|  |  | +	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  |  			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  |  				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  |  				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  |  			}),
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	clientPort := pickPort()
 | 
	
		
			
				|  |  | -	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -243,12 +249,6 @@ func TestVMessGCM(t *testing.T) {
 | 
	
		
			
				|  |  |  				}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | -			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | -				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | -				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | -			}),
 | 
	
		
			
				|  |  | -		},
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	servers, err := InitializeServerConfigs(serverConfig, clientConfig)
 | 
	
	
		
			
				|  | @@ -295,6 +295,12 @@ func TestVMessGCMUDP(t *testing.T) {
 | 
	
		
			
				|  |  |  	userID := protocol.NewID(uuid.New())
 | 
	
		
			
				|  |  |  	serverPort := pickPort()
 | 
	
		
			
				|  |  |  	serverConfig := &core.Config{
 | 
	
		
			
				|  |  | +		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | +			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | +				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | +				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | +			}),
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -318,16 +324,16 @@ func TestVMessGCMUDP(t *testing.T) {
 | 
	
		
			
				|  |  |  				ProxySettings: serial.ToTypedMessage(&freedom.Config{}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	clientPort := pickPort()
 | 
	
		
			
				|  |  | +	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  |  			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  |  				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  |  				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  |  			}),
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	clientPort := pickPort()
 | 
	
		
			
				|  |  | -	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -366,12 +372,6 @@ func TestVMessGCMUDP(t *testing.T) {
 | 
	
		
			
				|  |  |  				}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | -			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | -				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | -				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | -			}),
 | 
	
		
			
				|  |  | -		},
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	servers, err := InitializeServerConfigs(serverConfig, clientConfig)
 | 
	
	
		
			
				|  | @@ -428,6 +428,12 @@ func TestVMessChacha20(t *testing.T) {
 | 
	
		
			
				|  |  |  	userID := protocol.NewID(uuid.New())
 | 
	
		
			
				|  |  |  	serverPort := pickPort()
 | 
	
		
			
				|  |  |  	serverConfig := &core.Config{
 | 
	
		
			
				|  |  | +		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | +			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | +				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | +				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | +			}),
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -451,16 +457,16 @@ func TestVMessChacha20(t *testing.T) {
 | 
	
		
			
				|  |  |  				ProxySettings: serial.ToTypedMessage(&freedom.Config{}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	clientPort := pickPort()
 | 
	
		
			
				|  |  | +	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  |  			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  |  				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  |  				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  |  			}),
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	clientPort := pickPort()
 | 
	
		
			
				|  |  | -	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -499,12 +505,6 @@ func TestVMessChacha20(t *testing.T) {
 | 
	
		
			
				|  |  |  				}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | -			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | -				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | -				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | -			}),
 | 
	
		
			
				|  |  | -		},
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	servers, err := InitializeServerConfigs(serverConfig, clientConfig)
 | 
	
	
		
			
				|  | @@ -551,6 +551,12 @@ func TestVMessNone(t *testing.T) {
 | 
	
		
			
				|  |  |  	userID := protocol.NewID(uuid.New())
 | 
	
		
			
				|  |  |  	serverPort := pickPort()
 | 
	
		
			
				|  |  |  	serverConfig := &core.Config{
 | 
	
		
			
				|  |  | +		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | +			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | +				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | +				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | +			}),
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -574,16 +580,16 @@ func TestVMessNone(t *testing.T) {
 | 
	
		
			
				|  |  |  				ProxySettings: serial.ToTypedMessage(&freedom.Config{}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	clientPort := pickPort()
 | 
	
		
			
				|  |  | +	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  |  			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  |  				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  |  				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  |  			}),
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	clientPort := pickPort()
 | 
	
		
			
				|  |  | -	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -622,12 +628,6 @@ func TestVMessNone(t *testing.T) {
 | 
	
		
			
				|  |  |  				}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | -			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | -				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | -				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | -			}),
 | 
	
		
			
				|  |  | -		},
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	servers, err := InitializeServerConfigs(serverConfig, clientConfig)
 | 
	
	
		
			
				|  | @@ -674,6 +674,12 @@ func TestVMessKCP(t *testing.T) {
 | 
	
		
			
				|  |  |  	userID := protocol.NewID(uuid.New())
 | 
	
		
			
				|  |  |  	serverPort := pickUDPPort()
 | 
	
		
			
				|  |  |  	serverConfig := &core.Config{
 | 
	
		
			
				|  |  | +		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | +			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | +				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | +				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | +			}),
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -700,16 +706,16 @@ func TestVMessKCP(t *testing.T) {
 | 
	
		
			
				|  |  |  				ProxySettings: serial.ToTypedMessage(&freedom.Config{}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	clientPort := pickPort()
 | 
	
		
			
				|  |  | +	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  |  			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  |  				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  |  				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  |  			}),
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	clientPort := pickPort()
 | 
	
		
			
				|  |  | -	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -753,12 +759,6 @@ func TestVMessKCP(t *testing.T) {
 | 
	
		
			
				|  |  |  				}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | -			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | -				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | -				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | -			}),
 | 
	
		
			
				|  |  | -		},
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	servers, err := InitializeServerConfigs(serverConfig, clientConfig)
 | 
	
	
		
			
				|  | @@ -807,6 +807,12 @@ func TestVMessIPv6(t *testing.T) {
 | 
	
		
			
				|  |  |  	userID := protocol.NewID(uuid.New())
 | 
	
		
			
				|  |  |  	serverPort := pickPort()
 | 
	
		
			
				|  |  |  	serverConfig := &core.Config{
 | 
	
		
			
				|  |  | +		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | +			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | +				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | +				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | +			}),
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -830,16 +836,16 @@ func TestVMessIPv6(t *testing.T) {
 | 
	
		
			
				|  |  |  				ProxySettings: serial.ToTypedMessage(&freedom.Config{}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	clientPort := pickPort()
 | 
	
		
			
				|  |  | +	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  |  			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  |  				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  |  				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  |  			}),
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	clientPort := pickPort()
 | 
	
		
			
				|  |  | -	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -878,12 +884,6 @@ func TestVMessIPv6(t *testing.T) {
 | 
	
		
			
				|  |  |  				}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | -			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | -				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | -				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | -			}),
 | 
	
		
			
				|  |  | -		},
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	servers, err := InitializeServerConfigs(serverConfig, clientConfig)
 | 
	
	
		
			
				|  | @@ -922,6 +922,12 @@ func TestVMessGCMMux(t *testing.T) {
 | 
	
		
			
				|  |  |  	userID := protocol.NewID(uuid.New())
 | 
	
		
			
				|  |  |  	serverPort := pickPort()
 | 
	
		
			
				|  |  |  	serverConfig := &core.Config{
 | 
	
		
			
				|  |  | +		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | +			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | +				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | +				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | +			}),
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -945,16 +951,16 @@ func TestVMessGCMMux(t *testing.T) {
 | 
	
		
			
				|  |  |  				ProxySettings: serial.ToTypedMessage(&freedom.Config{}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	clientPort := pickPort()
 | 
	
		
			
				|  |  | +	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  |  			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  |  				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  |  				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  |  			}),
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	clientPort := pickPort()
 | 
	
		
			
				|  |  | -	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -999,12 +1005,6 @@ func TestVMessGCMMux(t *testing.T) {
 | 
	
		
			
				|  |  |  				}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | -			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | -				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | -				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | -			}),
 | 
	
		
			
				|  |  | -		},
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	servers, err := InitializeServerConfigs(serverConfig, clientConfig)
 | 
	
	
		
			
				|  | @@ -1064,6 +1064,12 @@ func TestVMessGCMMuxUDP(t *testing.T) {
 | 
	
		
			
				|  |  |  	userID := protocol.NewID(uuid.New())
 | 
	
		
			
				|  |  |  	serverPort := pickPort()
 | 
	
		
			
				|  |  |  	serverConfig := &core.Config{
 | 
	
		
			
				|  |  | +		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | +			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | +				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | +				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | +			}),
 | 
	
		
			
				|  |  | +		},
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -1087,17 +1093,17 @@ func TestVMessGCMMuxUDP(t *testing.T) {
 | 
	
		
			
				|  |  |  				ProxySettings: serial.ToTypedMessage(&freedom.Config{}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	clientPort := pickPort()
 | 
	
		
			
				|  |  | +	clientUDPPort := pickUDPPort()
 | 
	
		
			
				|  |  | +	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  |  			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  |  				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  |  				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  |  			}),
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	clientPort := pickPort()
 | 
	
		
			
				|  |  | -	clientUDPPort := pickUDPPort()
 | 
	
		
			
				|  |  | -	clientConfig := &core.Config{
 | 
	
		
			
				|  |  |  		Inbound: []*proxyman.InboundHandlerConfig{
 | 
	
		
			
				|  |  |  			{
 | 
	
		
			
				|  |  |  				ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
 | 
	
	
		
			
				|  | @@ -1155,12 +1161,6 @@ func TestVMessGCMMuxUDP(t *testing.T) {
 | 
	
		
			
				|  |  |  				}),
 | 
	
		
			
				|  |  |  			},
 | 
	
		
			
				|  |  |  		},
 | 
	
		
			
				|  |  | -		App: []*serial.TypedMessage{
 | 
	
		
			
				|  |  | -			serial.ToTypedMessage(&log.Config{
 | 
	
		
			
				|  |  | -				ErrorLogLevel: log.LogLevel_Debug,
 | 
	
		
			
				|  |  | -				ErrorLogType:  log.LogType_Console,
 | 
	
		
			
				|  |  | -			}),
 | 
	
		
			
				|  |  | -		},
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	servers, err := InitializeServerConfigs(serverConfig, clientConfig)
 |