<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def diff_to_new_interesting_lines(unified_diff_lines: List[str] ) -> Dict[int, str]: """ Extracts a set of 'interesting' lines out of a GNU unified diff format. Format: gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html @@ from-line-numbers to-line-numbers @@ line-from-either-file @@ start,count start,count @@ line-from-either-file @@ single start,count @@ line-from-either-file Examples: Deleted line (5 is the deleted LOC, 7 is the guessed would-have-been loc in the updated file given other changes pushing the line around):
 @@ 5 7,0 @@ - content-of-line Added line: @@ 5,0 7 @@ + content-of-line Modified chunk: @@ 10,15 11,5 @@ - removed-line + added-line Args: unified_diff_lines: Lines of output from git diff. Returns: A dictionary of "touched lines", with key equal to the line number and value equal to the reason the line was touched. Includes added lines and lines near changes (including removals). """

    interesting_lines = dict()
    for diff_line in unified_diff_lines:
        # Parse the 'new file' range parts of the unified diff.
        if not diff_line.startswith('@@ '):
            continue
        change = diff_line[3:diff_line.index(' @@', 3)]
        new = change.split(' ')[1]
        start = int(new.split(',')[0])
        count = 1 if ',' not in new else int(new.split(',')[1])

        # The lines before and after a deletion should still be covered.
        if count == 0:
            for i in range(start, start + 2):
                interesting_lines[i] = 'is near a removal'
        else:
            for i in range(start, start + count):
                interesting_lines[i] = 'is new or changed'
    return interesting_lines