                           alignments: Dict[str, Dict[str, List[Tuple[int,
                                                                      "AlignmentFileDict",
                                                                      str,
                                                                      dict]]]]
                           ) -> Dict[str, Dict[str, List["AlignmentFileDict"]]]:
          """ Sort the faces into face index order as they appeared in the original alignments file.
  
          If the face index stored in the png header does not match it's position in the alignments
          file (i.e. A face has been removed from a frame) then update the header of the
          corresponding png to the correct index as exists in the newly created alignments file.
 
</s> remove         alignment = metadata["itxt"]["alignments"]
 </s> add         alignment = metadata["alignments"] </s> remove     @classmethod
    def _update_mask_centering(cls, alignment: dict) -> None:
        """ Prior to alignment version 2.2 all masks were stored with face centering.

        Update the existing masks with correct centering parameter.

        Parameters
        ----------
        alignment: dict
            The alignment for the face to have the mask centering parameter updated
        """
        if "mask" not in alignment:
            alignment["mask"] = {}
        for mask in alignment["mask"].values():
            mask["stored_centering"] = "face"

 </s> add  </s> remove     def _get_filenames(self) -> List[str]:
        """ Obtain the full path to all filenames in the specified faces folder.

        Only png files will be returned, any other files will be ignored. An error is output if
        the returned filelist is not valid

        Returns
        -------
        list
            Full path list to face png files
        """
        err = None
        if not self._faces_dir:
            err = "A faces folder must be provided."
        elif not os.path.isdir(self._faces_dir):
            err = f"The Faces location '{self._faces_dir}' does not exit"
        else:
            filelist = [os.path.join(self._faces_dir, fname)
                        for fname in os.listdir(self._faces_dir)
                        if os.path.splitext(fname.lower())[1] == ".png"]
        if not err and not filelist:
            err = "Faces folder should contain Faceswap extracted PNG files"
        if err:
            logger.error(err)
            sys.exit(0)
        logger.debug("Collected %s png images from folder '%s'", len(filelist), self._faces_dir)
        return filelist

 </s> add 
                         ) -> Dict[str, Dict[str, "AlignmentDict"]]:
                           alignments: Dict[str, Dict[str, List[Tuple[int,
                                                                      "AlignmentFileDict",
                                                                      str,
                                                                      dict]]]]
                         ) -> Dict[str, Dict[str, "AlignmentDict"]]:
          """ Sort the faces into face index order as they appeared in the original alignments file.
  
          If the face index stored in the png header does not match it's position in the alignments
          file (i.e. A face has been removed from a frame) then update the header of the
          corresponding png to the correct index as exists in the newly created alignments file.
keep keep keep keep replace keep keep keep keep keep
 alignments tool - Remove-face - Minor update 
tools/alignments/jobs_faces.py