Background for Question 14-20: Below is a bubble sort program that sorts the elements in an array.static void bubbleSort(int[] arr) {int n = arr.length;int temp = 0;for (int i = 0; i < n; i++) {for (int j = 1; j < (n - i); j++) {if (arr[j - 1] > arr[j]) {temp = arr[j - 1];arr[j - 1] = arr[j];arr[j] = temp;}}}}14. Based on the program above, please draw a control flow graph for it. (5 pts.) Hint: Annotating some statements or conditions on nodes/edges will be very helpful.15. In your control flow graph, what are the test requirements for edge coverage? (4 pts.)16. List test path(s) that achieves the edge coverage. (4 pts.)17. Provide test cases for each test path you list in the previous question. If it is not possible to find the test input for certain test path, describe the reason. (4 pts.) Hint: Not providing expected outputs will get 2 points deduction. Not matching test paths with their corresponding input/output will get 3 points deduction.18. In your control flow graph, what are the test requirements for edge-pair coverage? (6 pts.)19. List test paths that achieve the edge-pair coverage. (5 pts.)20. Provide test cases for each test path you list in the previous question. If it is not possible to find the test input for certain test path, describe the reason. (6 pts.) Hint: Not providing expected outputs will get 2 points deduction. Not matching test paths with their corresponding input/output will get 3 points deduction.