anchor.diff:  %%		gen_fsm:send_event/2} in the <b>eap_start</b> state.
   %% @@see //stdlib/gen_fsm:StateName/2
   %% @private
  -eap_start(timeout, StateData) ->
  +eap_start(timeout, #statedata{start = Request} = StateData) ->
   	try crypto:strong_rand_bytes(4) of
   		Token ->
  -			eap_start1(Token, StateData)
  +			case Request of
  +				#diameter_eap_app_DER{} ->
  +					eap_start1(Token, StateData);
  +				_ ->
  +					eap_start2(Token, StateData)
  +			end
   	catch
   		Reason ->
   			{stop, Reason, StateData}
   	end.
   %% @hidden
  -eap_start1(Token, #statedata{eap_id = EapID,
  +eap_start1(Token, #statedata{eap_id = EapID, session_id = SessionId,
  +		server_id = ServerID, group_desc = GroupDesc, rand_func = RandFunc,
  +		prf = PRF, auth_app_id = AppId, auth_req_type = AuthType, start = Request,
  +		origin_host = OHost, origin_realm = ORealm, diameter_port_server = PortServer} =
  +		StateData) ->
  +	EapPwdId = #eap_pwd_id{group_desc = GroupDesc, random_fun = RandFunc,
  +			prf = PRF, token = Token, pwd_prep = none, identity = ServerID},
  +	EapPwdData = ocs_eap_codec:eap_pwd_id(EapPwdId),
  +	EapPwd = #eap_pwd{pwd_exch = id, data = EapPwdData},
  +	EapData = ocs_eap_codec:eap_pwd(EapPwd),
  +	case Request#diameter_eap_app_DER.'EAP-Payload' of
  +		[] ->
  +			EapPacket = #eap_packet{code = request,
  +					type = ?PWD, identifier = EapID, data = EapData},
  +			Answer = generate_diameter_response(SessionId, AuthType,
  +					?'DIAMETER_BASE_RESULT-CODE_MULTI_ROUND_AUTH', OHost, ORealm, EapPacket),
  +			gen_server:cast(PortServer, {self(), Answer}),
  +			{next_state, id, StateData, ?TIMEOUT};
  +		EapMessage ->
  +			case catch ocs_eap_codec:eap_packet(EapMessage) of
  +				#eap_packet{code = response, type = ?Identity, identifier = NewEapID} ->
  +					NextEapID = (NewEapID rem 255) + 1,
  +					EapPacket = #eap_packet{code = request, type = ?PWD,
  +							identifier = NextEapID, data = EapData},
  +					NewStateData = StateData#statedata{eap_id = NextEapID},
  +					Answer = generate_diameter_response(SessionId, AuthType,
  +							?'DIAMETER_BASE_RESULT-CODE_MULTI_ROUND_AUTH', OHost, ORealm,
  +							EapPacket),
  +					gen_server:cast(PortServer, {self(), Answer}),
  +					{next_state, id, NewStateData, ?TIMEOUT};
  +				#eap_packet{code = request, identifier = NewEapID} ->
  +					EapPacket = #eap_packet{code = response, type = ?LegacyNak,
  +							identifier = NewEapID, data = <<0>>},
  +					Answer = generate_diameter_response(SessionId, AuthType,
  +							?'DIAMETER_BASE_RESULT-CODE_UNABLE_TO_COMPLY', OHost, ORealm,
  +							EapPacket),
  +					gen_server:cast(PortServer, {self(), Answer}),
  +					{stop, {shutdown, SessionId}, StateData};
  +				#eap_packet{code = Code, type = EapType,
  +						identifier = NewEapID, data = Data} ->
  +					error_logger:warning_report(["Unknown EAP received",
  +							{pid, self()}, {session_id, SessionId}, {code, Code},
  +							{type, EapType}, {identifier, NewEapID}, {data, Data}]),
  +					EapPacket = #eap_packet{code = failure, identifier = NewEapID},
  +					Answer = generate_diameter_response(SessionId, AuthType,
  +							?'DIAMETER_BASE_RESULT-CODE_UNABLE_TO_COMPLY', OHost, ORealm,
  +							EapPacket),
  +					gen_server:cast(PortServer, {self(), Answer}),
  +					{stop, {shutdown, SessionId}, StateData};
  +				{'EXIT', _Reason} ->
  +					EapPacket = #eap_packet{code = failure, identifier = EapID},
  +					Answer = generate_diameter_response(SessionId, AuthType,
  +							?'DIAMETER_BASE_RESULT-CODE_UNABLE_TO_COMPLY', OHost, ORealm,
  +							EapPacket),
  +					gen_server:cast(PortServer, {self(), Answer}),
  +					{stop, {shutdown, SessionId}, StateData}
  +			end
  +	end.
  +%% @hidden
  +eap_start2(Token, #statedata{eap_id = EapID,
   		start = #radius{code = ?AccessRequest, id = RadiusID,
   		authenticator = RequestAuthenticator, attributes = RequestAttributes},
   		session_id = SessionID, server_id = ServerID, group_desc = GroupDesc,
  
positive.code: 					confirm_s = ConfirmS},
  			Answer1 = generate_diameter_response(SessionID, AuthType,
  					 ?'DIAMETER_BASE_RESULT-CODE_MULTI_ROUND_AUTH', OH, OR, EapPacket),
  			{reply, Answer1, confirm, NewStateData, ?TIMEOUT}
  	end.
  
  -spec confirm(Event, StateData) -> Result
  
negative.code: 					RequestAuthenticator, RequestAttributes, StateData),
  			{stop, {shutdown, SessionID}, StateData}
  	end.
  %% @hidden
  confirm4(#statedata{confirm_s = ConfirmS, eap_id = EapID, confirm_p = ConfirmP,
  		session_id = SessionID, auth_req_type = AuthType, origin_host = OH,
  		origin_realm = OR, diameter_port_server = PortServer} = StateData) ->
  	ExpectedSize = size(ConfirmS),
  	case size(ConfirmP) of 
  		ExpectedSize ->
  