public static int requestDecision(Team team, String msg)
	{
		if(!team.isOnline())
		{
			return team.getIndexOfStrength(Team.WEAKEST);
		}
		team.setLastInput(null);
		sendMsg(team, msg);
		long start = System.currentTimeMillis();
		boolean maxTimeout = false;
		boolean avgTimeout = false;
		while((maxTimeout = (System.currentTimeMillis() - start < MILLISTOTIMEOUT)) && team.getLastInput() == null)
		{
			team.setLastInput(team.read().substring(0, 1));
		}
		team.registerReactionTime(System.currentTimeMillis() - start);
		if((avgTimeout = (team.getAvgReactionTime() > ALLOWEDAVGREACTION)))
		{
			team.setOnline(false);
		}
		String s = team.getLastInput().toLowerCase();
		switch (s)
		{
			case "l":
				return 0;
			case "m":
				return 1;
			case "r":
				return 2;
			default:
				if(maxTimeout || avgTimeout)
				{
					Logger.log(team.getName() + ": Maximum timeout: " + maxTimeout + "\tAverage timeout: " + 
							avgTimeout, team, Logger.SERVER);
				}
				else
				{
					Logger.log(team.getName() + ": no valid decision. Sent 'l', 'm' or 'r' after receiving '" +
							SHOOT + "' or '" + KEEP + "'.", team, Logger.COMMUNICATION);
				}
				//Logger.log(team.getName() + ": Timeout", team, Logger.SERVER);
				team.setOnline(false);
				return requestDecision(team, msg);
		}		
	}