                      "\n\tappear within the frames folder/video." + output_opts + frames_dir +
                      "\n'legacy': This updates legacy alignments to the latest format by rotating"
                      "\n\tthe landmarks and bounding boxes and adding face_hashes." +
                      frames_and_faces_dir +
                      "\n'leftover-faces': Identify faces in the faces folder that do not exist in"
                      "\n\tthe alignments file." + output_opts + faces_dir +
                      "\n'multi-faces': Identify where multiple faces exist within the alignments"
                      "\n\tfile." + output_opts + frames_or_faces_dir +
                      "\n'no-faces': Identify frames that exist within the alignment file but no"
                      "\n\tfaces were detected." + output_opts + frames_dir +
                      "\n'reformat': Save a copy of alignments file in a different format. Specify"
                      "\n\ta format with the -fmt option."
                      "\n\tAlignments can be converted from DeepFaceLab by specifing:"
                      "\n\t    -a dfl"
                      "\n\t    -fc <source faces folder>"
                      "\n'remove-faces': Remove deleted faces from an alignments file. The original"
                      "\n\talignments file will be backed up. A different file format for the"
                      "\n\talignments file can optionally be specified (-fmt)." + faces_dir +
                      "\n'remove-frames': Remove deleted frames from an alignments file. The"
                      "\n\toriginal alignments file will be backed up. A different file format for"
                      "\n\tthe alignments file can optionally be specified (-fmt)." + frames_dir +
                      "\n'rename' - Rename faces to correspond with their parent frame and position"
                      "\n\tindex in the alignments file (i.e. how they are named after running"
                      "\n\textract)." + faces_dir +
                      "\n'sort-x': Re-index the alignments from left to right. For alignments with"
                      "\n\tmultiple faces this will ensure that the left-most face is at index 0"
                      "\n\tOptionally pass in a faces folder (-fc) to also rename extracted faces."
                      "\n'sort-y': Re-index the alignments from top to bottom. For alignments with"
                      "\n\tmultiple faces this will ensure that the top-most face is at index 0"
                      "\n\tOptionally pass in a faces folder (-fc) to also  rename extracted faces."
                      "\n'spatial': Perform spatial and temporal filtering to smooth alignments"
                      "\n\t(EXPERIMENTAL!)"
                      "\n'update-hashes': Recalculate the face hashes. Only use this if you have "
                      "\n\taltered the extracted faces (e.g. colour adjust). The files MUST be "
                      "\n\tnamed '<frame_name>_face index' (i.e. how they are named after running"
                      "\n\textract)." + faces_dir})
          argument_list.append({"opts": ("-a", "--alignments_file"),
                                "action": FilesFullPaths,
                                "dest": "alignments_file",
                                "nargs": "+",
                                "required": True,
 
</s> remove                     "\n'manual': Manually view and edit landmarks." + frames_dir + align_eyes +
                    "\n'merge': Merge multiple alignment files into one. Specify a space "
                    "\n\tseparated list of alignments files with the -a flag."
                    "\n'missing-alignments': Identify frames that do not exist in the alignments"
                    "\n\tfile." + output_opts + frames_dir +
                    "\n'missing-frames': Identify frames in the alignments file that do no "
                    "\n\tappear within the frames folder/video." + output_opts + frames_dir +
                    "\n'legacy': This updates legacy alignments to the latest format by rotating"
                    "\n\tthe landmarks and bounding boxes and adding face_hashes." +
 </s> add                     "\nL|'manual': Manually view and edit landmarks." + frames_dir + align_eyes +
                    "\nL|'merge': Merge multiple alignment files into one. Specify a space "
                    "separated list of alignments files with the -a flag."
                    "\nL|'missing-alignments': Identify frames that do not exist in the "
                    "alignments file." + output_opts + frames_dir +
                    "\nL|'missing-frames': Identify frames in the alignments file that do not "
                    "appear within the frames folder/video." + output_opts + frames_dir +
                    "\nL|'legacy': This updates legacy alignments to the latest format by "
                    "rotating the landmarks and bounding boxes and adding face_hashes." + </s> remove                     "\n'draw': Draw landmarks on frames in the selected folder/video. A subfolder"
                    "\n\twill be created within the frames folder to hold the output." +
 </s> add                     "\nL|'draw': Draw landmarks on frames in the selected folder/video. A "
                    "subfolder will be created within the frames folder to hold the output." + </s> remove                     "\n'extract': Re-extract faces from the source frames/video based on "
                    "\n\talignment data. This is a lot quicker than re-detecting faces." +
 </s> add                     "\nL|'extract': Re-extract faces from the source frames/video based on "
                    "alignment data. This is a lot quicker than re-detecting faces." + </s> remove                     "\n'extract-large' - Extract all faces that have not been upscaled. Useful"
                    "\n\tfor excluding low-res images from a training set." +
 </s> add                     "\nL|'extract-large' - Extract all faces that have not been upscaled. Useful "
                    "for excluding low-res images from a training set." + </s> remove             "help": "R|Choose which action you want to perform.\n"
 </s> add             "help": "R|Choose which action you want to perform. "
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                      "\n\tappear within the frames folder/video." + output_opts + frames_dir +
                      "\n'legacy': This updates legacy alignments to the latest format by rotating"
                      "\n\tthe landmarks and bounding boxes and adding face_hashes." +
                      frames_and_faces_dir +
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
                    "\nL|'leftover-faces': Identify faces in the faces folder that do not exist "
                    "in the alignments file." + output_opts + faces_dir +
                    "\nL|'multi-faces': Identify where multiple faces exist within the alignments "
                    "file." + output_opts + frames_or_faces_dir +
                    "\nL|'no-faces': Identify frames that exist within the alignment file but no "
                    "faces were detected." + output_opts + frames_dir +
                    "\nL|'reformat': Save a copy of alignments file in a different format. "
                    "Specify a format with the -fmt option. Alignments can be converted from "
                    "DeepFaceLab by specifing: '-a dfl -fc <source faces folder>'"
                    "\nL|'remove-faces': Remove deleted faces from an alignments file. The "
                    "original alignments file will be backed up. A different file format for the "
                    "alignments file can optionally be specified (-fmt)." + faces_dir +
                    "\nL|'remove-frames': Remove deleted frames from an alignments file. The "
                    "original alignments file will be backed up. A different file format for "
                    "the alignments file can optionally be specified (-fmt)." + frames_dir +
                    "\nL|'rename' - Rename faces to correspond with their parent frame and "
                    "position index in the alignments file (i.e. how they are named after running "
                    "extract)." + faces_dir +
                    "\nL|'sort-x': Re-index the alignments from left to right. For alignments "
                    "with multiple faces this will ensure that the left-most face is at index 0 "
                    "Optionally pass in a faces folder (-fc) to also rename extracted faces."
                    "\nL|'sort-y': Re-index the alignments from top to bottom. For alignments "
                    "with multiple faces this will ensure that the top-most face is at index 0. "
                    "Optionally pass in a faces folder (-fc) to also  rename extracted faces."
                    "\nL|'spatial': Perform spatial and temporal filtering to smooth alignments "
                    "(EXPERIMENTAL!)"
                    "\nL|'update-hashes': Recalculate the face hashes. Only use this if you have "
                    "altered the extracted faces (e.g. colour adjust). The files MUST be "
                    "named '<frame_name>_face index' (i.e. how they are named after running "
                    "extract)." + faces_dir})
          argument_list.append({"opts": ("-a", "--alignments_file"),
                                "action": FilesFullPaths,
                                "dest": "alignments_file",
                                "nargs": "+",
                                "required": True,
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 Convert refactor (#703)

* Separate predict and implement pool

* Add check and raise error to multithreading

Box functions to config. Add crop box option.

* All masks to mask module. Refactor convert masks

Predicted mask passed from model. Cli update

* Intesect box with mask and fixes

* Use raw NN output for convert

Use raw mask for face adjustments. Split adjustments to pre and post warp

* Separate out adjustments. Add unmask sharpen

* Set sensible defaults. Pre PR Testing

* Fix queue sizes. Move masked.py to lib

* Fix Skip Frames. Fix GUI Config popup

* Sensible queue limits. Add a less resource intensive single processing mode

* Fix predicted mask. Amend smooth box defaults

* Deterministic ordering for video output

* Video to Video convert implemented

* Fixups

- Remove defaults from folders across all stages
- Move match-hist and aca into color adjustments selectable
- Handle crashes properly for pooled processes
- Fix output directory does not exist error when creating a new output folder
- Force output to frames if input is not a video

* Add Color Transfer adjustment method

Wrap info text in GUI plugin configure popup

* Refactor image adjustments. Easier to create plugins

Start implementing config options for video encoding

* Add video encoding config options

Allow video encoding for frames input (must pass in a reference video)
Move video and image output writers to plugins

* Image writers config options

Move scaling to cli
Move draw_transparent to images config
Add config options for cv2 writer
Add Pillow image writer

* Add gif filetype to Pillow. Fix draw transparent for Pillow

* Add Animated GIF writer

standardize opencv/pillow defaults

* [speedup] Pre-encode supported writers in the convert pool (opencv, pillow)

Move scaling to convert pool
Remove dfaker mask

* Fix default writer

* Bugfixes

* Better custom argparse formatting 
tools/cli.py