Make a program that produces output similar to what is shown below. My version is 58 lines of code. Stat Time Changed URL ------------------------------------------ Up 0.471s Diff https://www.google.com Up 0.728s Diff https://www.random.org/sequences/?min=1&max=100&col=1&format=html&rnd=new Up 0.176s Same https://www.geeksforgeeks.org/reading-binary-files-in-python/ Up 0.515s Same https://timesofindia.com 404 https://www.google.com/sjdfhksjfh DOWN https://www.google.commmmmm 10 points for Formatting. Everything should line up just as shown. If the time has a trailing zero, it still has to line up. Hint 1: You can print but not go to the next line like this print("This is line 1", end="") print("This is still line 1") print("Now on line 2") Hint 2: You can round a number to three digit, keeping any trailing zeros, like this print(f" Up {format(variable, '.3f')}s ") 10 points for colors, as shown in the previous assignment 10 Points for getting the time it takes to download the web page: Hint: import time start = time.time() ... duration = time.time() - start 70 points for printing if the web page has changed. Hint 1: You can make a URL into a unique filename like this fileName = "data" + str(int(hashlib.sha1(url.encode("utf-8")).hexdigest(), 16) % (10 ** 8))+".data" Hint 2: Here is one way to know if a web page has changed since you last checked. Download the text. Don't decode it, just keep it as bytes. Read the file you saved last time. If the file you saved last time does not exist, you have no data to compare because it's your first time If it has the same content, the web page is the same If it has different content, the web page has changed. Hint 3: You can open a file in binary mode like this inFile = open(filename, "rb") -or- outFile = open(filename, "wb") You can read a binary file like this inData = infile.read() # Data is a big long list of bytes You can write a binary file like this outFile.write(the_data_you_want_to_write)