{
	"PrimitiveTool": {
		"State": [
			{
				"Name": "StartToolState",
				"EntryMethodName": "EnterStartTool",
				
				"Event": {
					"Name": "CompleteEvent",
					"ActionType": "ChangeState",
					"ActionParam": "WaitForAccept"
				}
			},
			{
				"Name": "WaitForAccept",
				"EntryMethodName": "EnterWaitForAcceptState",
				
				"Event": [
					{
						"Name": "MotionEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "MoveToolPoints"
					},
					{
						"Name": "AcceptEvent",
						"ActionType": "ChangeState",
						"ActionParam": "AcceptedState"
					},
					{
						"Name": "ClickEvent",
						"ActionType": "ChangeState",
						"ActionParam": "AcceptedState"
					},
					{
						"Name": "CompleteEvent",
						"ActionType": "ChangeState",
						"ActionParam": "AcceptedState"
					}
				]
			},
			{
				"Name": "StartManualEPrimeToolState",
				"EntryMethodName": "EnterStartManualEPrimeTool"
			},
			{
				"Name": "ManualSVelPointState",
				"EntryMethodName": "EnterManualSVelPoint",
				
				"Event": [
					{
						"Name": "MotionEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "MoveSVelPoint"
					},
					{
						"Name": "ClickEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "EnterCompleteManualSVelPoint"
					},
					{
						"Name": "CompleteEvent",
						"ActionType": "ChangeState",
						"ActionParam": "AcceptedState"
					}
				]

			},
			{
				"Name": "ManualEVelPointState",
				"EntryMethodName": "EnterManualEVelPoint",
				
				"Event": [
					{
						"Name": "MotionEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "MoveEVelPoint"
					},
					{
						"Name": "ClickEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "EnterCompleteManualEVelPoint"
					},
					{
						"Name": "CompleteEvent",
						"ActionType": "ChangeState",
						"ActionParam": "AcceptedState"
					}
				]
			},
			{
				"Name": "ManualAVelPointState",
				"EntryMethodName": "EnterManualAVelPoint",
				
				"Event": [
					{
						"Name": "MotionEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "MoveAVelPoint"
					},
					{
						"Name": "ClickEvent",
						"ActionType": "ChangeState",
						"ActionParam": "AcceptedState"
					},
					{
						"Name": "CompleteEvent",
						"ActionType": "ChangeState",
						"ActionParam": "AcceptedState"
					}
				]
			},
			{
				"Name": "EditEVelPoint",
				"EntryMethodName": "EnterEditEVelPoint",
				
				"Event": [
					{
						"Name": "MotionEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "MoveEVelPoint"
					},
					{
						"Name": "ClickEvent",
						"ActionType": "ChangeState",
						"ActionParam": "CompleteEVelPointState"
					},
					{
						"Name": "CompleteEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "AcceptedState"
					}
				]
			},
			{
				"Name": "EditSVelPoint",
				"EntryMethodName": "EnterEditSVelPoint",
				
				"Event": [
					{
						"Name": "MotionEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "MoveSVelPoint"
					},
					{
						"Name": "ClickEvent",
						"ActionType": "ChangeState",
						"ActionParam": "CompleteSVelPointState"
					},
					{
						"Name": "CompleteEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "AcceptedState"
					}
				]
			},
			{
				"Name": "EditAVelPoint",
				"EntryMethodName": "EnterEditAVelPoint",
				
				"Event": [
					{
						"Name": "MotionEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "MoveAVelPoint"
					},
					{
						"Name": "ClickEvent",
						"ActionType": "ChangeState",
						"ActionParam": "CompleteAVelPointState"
					},
					{
						"Name": "CompleteEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "AcceptedState"
					}
				]
			},
			{
				"Name": "EditManualEVelPoint",
				"EntryMethodName": "EnterEditManualEVelPoint",
				
				"Event": [
					{
						"Name": "MotionEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "MoveEVelPoint"
					},
					{
						"Name": "ClickEvent",
						"ActionType": "ChangeState",
						"ActionParam": "CompleteEVelPointState"
					},
					{
						"Name": "CompleteEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "AcceptedState"
					}
				]
			},
			{
				"Name": "EditManualSVelPoint",
				"EntryMethodName": "EnterEditManualSVelPoint",
				
				"Event": [
					{
						"Name": "MotionEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "MoveSVelPoint"
					},
					{
						"Name": "ClickEvent",
						"ActionType": "ChangeState",
						"ActionParam": "CompleteSVelPointState"
					},
					{
						"Name": "CompleteEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "AcceptedState"
					}
				]
			},
			{
				"Name": "EditManualAVelPoint",
				"EntryMethodName": "EnterEditManualAVelPoint",
				
				"Event": [
					{
						"Name": "MotionEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "MoveAVelPoint"
					},
					{
						"Name": "ClickEvent",
						"ActionType": "ChangeState",
						"ActionParam": "CompleteAVelPointState"
					},
					{
						"Name": "CompleteEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "AcceptedState"
					}
				]
			},
			{
				"Name": "CompleteEVelPointState",
				"EntryMethodName": "EnterCompleteEVelPoint",
				
				"Event": [
					{
						"Name": "MotionEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "CheckNextMeas"
					},
					{
						"Name": "ClickEvent",
						"ActionType": "ChangeState",
						"ActionParam": "EditEVelPoint"
					},
					{
						"Name": "RotaryEncoderInc",
						"ActionType": "InvokeMethod",
						"ActionParam": "EncoderInc"
					},
					{
						"Name": "RotaryEncoderDec",
						"ActionType": "InvokeMethod",
						"ActionParam": "EncoderDec"
					},
					{
						"Name": "CompleteEvent",
						"ActionType": "ChangeState",
						"ActionParam": "AcceptedState"
					}
				]
			},
			{
				"Name": "CompleteSVelPointState",
				"EntryMethodName": "EnterCompleteSVelPoint",
				
				"Event": [
					{
						"Name": "MotionEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "CheckNextMeas"
					},
					{
						"Name": "ClickEvent",
						"ActionType": "ChangeState",
						"ActionParam": "EditSVelPoint"
					},
					{
						"Name": "RotaryEncoderInc",
						"ActionType": "InvokeMethod",
						"ActionParam": "EncoderInc"
					},
					{
						"Name": "RotaryEncoderDec",
						"ActionType": "InvokeMethod",
						"ActionParam": "EncoderDec"
					},
					{
						"Name": "CompleteEvent",
						"ActionType": "ChangeState",
						"ActionParam": "AcceptedState"
					}
				]
			},
			{
				"Name": "CompleteAVelPointState",
				"EntryMethodName": "EnterCompleteAVelPoint",
				
				"Event": [
					{
						"Name": "MotionEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "CheckNextMeas"
					},
					{
						"Name": "ClickEvent",
						"ActionType": "ChangeState",
						"ActionParam": "EditAVelPoint"
					},
					{
						"Name": "RotaryEncoderInc",
						"ActionType": "InvokeMethod",
						"ActionParam": "EncoderInc"
					},
					{
						"Name": "RotaryEncoderDec",
						"ActionType": "InvokeMethod",
						"ActionParam": "EncoderDec"
					},
					{
						"Name": "CompleteEvent",
						"ActionType": "ChangeState",
						"ActionParam": "AcceptedState"
					}
				]
			},
			{
				"Name": "AcceptedState",
				"EntryMethodName": "EnterCompleteToolPoints",
				
				"Event": [
					{
						"Name": "ClickStartPoint",
						"ActionType": "InvokeMethod",
						"ActionParam": "EnterSVelPointEdit"
					},
					{
						"Name": "ClickEndPoint",
						"ActionType": "InvokeMethod",
						"ActionParam": "EnterEVelPointEdit"
					},
					{
						"Name": "ClickAVelPoint",
						"ActionType": "InvokeMethod",
						"ActionParam": "EnterAVelPointEdit"
					},
					{
						"Name": "ClickEvent",
						"ActionType": "InvokeMethod",
						"ActionParam": "SelectManualToolStart"
					}
				]
			}
		]
	}
}

explain the use and working of above json file used of FSM parsing