<commit_before>digraph ConnectionStates {
	overlap = false;
	node [shape=diamond]; "SASL Fail" "TLS Fail" "Bind Fail" "Other Error";
	node [shape=hexagon]; "SASL OK" "TLS OK" "Bind OK";
	node [shape=rectangle]; "Bad Data\nSent in Bind";
	node [shape=doublecircle]; "XML Stanza\nExchange OK";
	node [shape=ellipse];

	"Disconnected" -> "TCP Connected" [label="Open TCP\nConnection\nSuccessful"];
	"Disconnected" -> "Disconnected" [label="Open TCP\nConnection\nUnsuccessful"];
	"TCP Connected" -> "Wait Return Stream" [label="Open <stream/>"];
	"Wait Return Stream" -> "Wait Stream Features" [label="Receive Return\n<stream/>"];
	"Wait Stream Features" -> "TLS Available?" [label="Receive Stream\n<features/>"];

	"TLS Fail" -> "Disconnected" [label="Stream Closed\nTCP Disconnected"];
	"SASL Fail" -> "Disconnected" [label="Stream Closed\nTCP Disconnected"];
	"Bind Fail" -> "Disconnected" [label="Stream Closed\nTCP Disconnected"];
	"XML Stanza\nExchange OK" -> "Disconnected" [label="</stream>\nTCP Disconnected"];
	"Other Error" -> "Disconnected" [label="Unknown Error"];
	
	"TLS OK" -> "Wait Return Stream" [label="Open TLS\nProtected Stream"];
	"SASL OK" -> "Wait Return Stream" [label="Open Authenticated\n<stream/>"];
	
	"Bind OK" -> "XML Stanza\nExchange OK";
	"XML Stanza\nExchange OK" -> "XML Stanza\nExchange OK" [label="Send XML Stanza"];
	
	subgraph cluster_TLSStates {
		label = "TLS States";
		color = black;
		"TlS Requested" -> "Wait TLS Proceed" [label="Send\n<starttls/>"];
		"Wait TLS Proceed" -> "TLS Fail" [label="TLS Failure"];
		"Wait TLS Proceed" -> "Ready TLS" [label="Receive TLS\n<proceed/>"];
		
		"Ready TLS" -> "TLS Attempted" [label="Attempt TLS"];
		"TLS Attempted" -> "TLS Fail" [label="Unsuccessful"];
		"TLS Attempted" -> "TLS OK" [label="Successful"];
		fontsize = 20;
	}
	
	subgraph cluster_SASLStates {
		label = "SASL States";
		color = black;
		"Auth Mechanism\nSelected" -> "Challenge Received" [label="Server Sends\n<challenge/>"];
		"Auth Mechanism\nSelected" -> "Bad Encoding" [label="Receive <incorrect-encoding/>"];
		
		"Challenge Received" -> "Response Sent" [label="Send <response/>"];
		"Response Sent" -> "Second Challenge\nReceived" [label="Receive second\n<challenge/>"];
		"Second Challenge\nReceived" -> "Second Response Sent" [label="Send second\n<response/>"];
		
		"Second Response Sent" -> "SASL OK" [label="Receive <success/>"];
		"Second Response Sent" -> "Tmp Auth Fail" [label="Receive\n<temporary-auth-failure/>"];
		
		"Bad Encoding" -> "SASL Fail" [label="SASL Failure"];
		"Tmp Auth Fail" -> "SASL Fail" [label="SASL Failure"];
		fontsize = 20;
	}
	
	subgraph cluster_BindStates {
		label = "Bind States";
		color = black;
		"Ready to Bind" -> "Bind Client Resource" [label="Select Resource"];
		"Ready to Bind" -> "Bind Server Resource" [label="Let Server\nSelect Resource"];
		
		"Bind Client Resource" -> "Received <jid/>" [label="Server Confirms\nSelected Resource"];
		"Bind Server Resource" -> "Received <jid/>" [label="Receive Server\nGenerated Resource"];
		
		"Bind Client Resource" -> "Bad Data\nSent in Bind" [label="Receive <bad-request/>"];
		"Bad Data\nSent in Bind" -> "Ready to Bind" [label="Retry"];
		
		"Bind Server Resource" -> "Bind Not Allowed" [label="Receive <not-allowed/>"];
		"Bind Client Resource"-> "Bind Not Allowed" [label="Receive <not-allowed/>"];
		
		"Bind Client Resource" -> "Resource in Use" [label="Receive <conflict/>"];
		
		"Bind Not Allowed" -> "Bind Fail" [label="Bind Failure"];
		"Resource in Use" -> "Bind Fail" [label="Bind Failure"];
		
		"Received <jid/>" -> "Bind OK";
		fontsize = 20;
	}
	
	subgraph cluster_FeatureStates {
		label = "Feature Selection States";
		color = black;
		"TLS Available?" -> "Want TLS?" [label="Yes"];
		"TLS Available?" -> "SASL Available?" [label="No"];
		
		"Want TLS?" -> "TlS Requested" [label="Yes"];
		"Want TLS?" -> "SASL Available?" [label="No"];
		
		"SASL Available?" -> "Auth Mechanism\nSelected" [label="Yes"];
		"SASL Available?" -> "Bind Available?" [label="No"];
		
		"Bind Available?" -> "Ready to Bind" [label="Yes"];
		"Bind Available?" -> "Other Error" [label="No"];
		fontsize = 20;
	}
	
	label = "States Transitions during\n the XMPP Connection Process";
	fontsize = 30;
}
<commit_msg>Should be 'State' not 'States'<commit_after>digraph ConnectionStates {
	overlap = false;
	node [shape=diamond]; "SASL Fail" "TLS Fail" "Bind Fail" "Other Error";
	node [shape=hexagon]; "SASL OK" "TLS OK" "Bind OK";
	node [shape=rectangle]; "Bad Data\nSent in Bind";
	node [shape=doublecircle]; "XML Stanza\nExchange OK";
	node [shape=ellipse];

	"Disconnected" -> "TCP Connected" [label="Open TCP\nConnection\nSuccessful"];
	"Disconnected" -> "Disconnected" [label="Open TCP\nConnection\nUnsuccessful"];
	"TCP Connected" -> "Wait Return Stream" [label="Open <stream/>"];
	"Wait Return Stream" -> "Wait Stream Features" [label="Receive Return\n<stream/>"];
	"Wait Stream Features" -> "TLS Available?" [label="Receive Stream\n<features/>"];

	"TLS Fail" -> "Disconnected" [label="Stream Closed\nTCP Disconnected"];
	"SASL Fail" -> "Disconnected" [label="Stream Closed\nTCP Disconnected"];
	"Bind Fail" -> "Disconnected" [label="Stream Closed\nTCP Disconnected"];
	"XML Stanza\nExchange OK" -> "Disconnected" [label="</stream>\nTCP Disconnected"];
	"Other Error" -> "Disconnected" [label="Unknown Error"];
	
	"TLS OK" -> "Wait Return Stream" [label="Open TLS\nProtected Stream"];
	"SASL OK" -> "Wait Return Stream" [label="Open Authenticated\n<stream/>"];
	
	"Bind OK" -> "XML Stanza\nExchange OK";
	"XML Stanza\nExchange OK" -> "XML Stanza\nExchange OK" [label="Send XML Stanza"];
	
	subgraph cluster_TLSStates {
		label = "TLS States";
		color = black;
		"TlS Requested" -> "Wait TLS Proceed" [label="Send\n<starttls/>"];
		"Wait TLS Proceed" -> "TLS Fail" [label="TLS Failure"];
		"Wait TLS Proceed" -> "Ready TLS" [label="Receive TLS\n<proceed/>"];
		
		"Ready TLS" -> "TLS Attempted" [label="Attempt TLS"];
		"TLS Attempted" -> "TLS Fail" [label="Unsuccessful"];
		"TLS Attempted" -> "TLS OK" [label="Successful"];
		fontsize = 20;
	}
	
	subgraph cluster_SASLStates {
		label = "SASL States";
		color = black;
		"Auth Mechanism\nSelected" -> "Challenge Received" [label="Server Sends\n<challenge/>"];
		"Auth Mechanism\nSelected" -> "Bad Encoding" [label="Receive <incorrect-encoding/>"];
		
		"Challenge Received" -> "Response Sent" [label="Send <response/>"];
		"Response Sent" -> "Second Challenge\nReceived" [label="Receive second\n<challenge/>"];
		"Second Challenge\nReceived" -> "Second Response Sent" [label="Send second\n<response/>"];
		
		"Second Response Sent" -> "SASL OK" [label="Receive <success/>"];
		"Second Response Sent" -> "Tmp Auth Fail" [label="Receive\n<temporary-auth-failure/>"];
		
		"Bad Encoding" -> "SASL Fail" [label="SASL Failure"];
		"Tmp Auth Fail" -> "SASL Fail" [label="SASL Failure"];
		fontsize = 20;
	}
	
	subgraph cluster_BindStates {
		label = "Bind States";
		color = black;
		"Ready to Bind" -> "Bind Client Resource" [label="Select Resource"];
		"Ready to Bind" -> "Bind Server Resource" [label="Let Server\nSelect Resource"];
		
		"Bind Client Resource" -> "Received <jid/>" [label="Server Confirms\nSelected Resource"];
		"Bind Server Resource" -> "Received <jid/>" [label="Receive Server\nGenerated Resource"];
		
		"Bind Client Resource" -> "Bad Data\nSent in Bind" [label="Receive <bad-request/>"];
		"Bad Data\nSent in Bind" -> "Ready to Bind" [label="Retry"];
		
		"Bind Server Resource" -> "Bind Not Allowed" [label="Receive <not-allowed/>"];
		"Bind Client Resource"-> "Bind Not Allowed" [label="Receive <not-allowed/>"];
		
		"Bind Client Resource" -> "Resource in Use" [label="Receive <conflict/>"];
		
		"Bind Not Allowed" -> "Bind Fail" [label="Bind Failure"];
		"Resource in Use" -> "Bind Fail" [label="Bind Failure"];
		
		"Received <jid/>" -> "Bind OK";
		fontsize = 20;
	}
	
	subgraph cluster_FeatureStates {
		label = "Feature Selection States";
		color = black;
		"TLS Available?" -> "Want TLS?" [label="Yes"];
		"TLS Available?" -> "SASL Available?" [label="No"];
		
		"Want TLS?" -> "TlS Requested" [label="Yes"];
		"Want TLS?" -> "SASL Available?" [label="No"];
		
		"SASL Available?" -> "Auth Mechanism\nSelected" [label="Yes"];
		"SASL Available?" -> "Bind Available?" [label="No"];
		
		"Bind Available?" -> "Ready to Bind" [label="Yes"];
		"Bind Available?" -> "Other Error" [label="No"];
		fontsize = 20;
	}
	
	label = "State Transitions during\n the XMPP Connection Process";
	fontsize = 30;
}

{'fraction_non_alphanumeric': 0.18591549295774648, 'fraction_numerical': 0.002347417840375587, 'mean_word_length': 4.58022265880812, 'pattern_counts': {'":': 0, '<': 45, '<?xml version=': 0, '>': 143, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6560751', 'n_tokens_mistral': 3083, 'n_tokens_neox': 2788, 'n_words': 800}