          then an the attribute will return ``None``. """
          return self._face
  
      @property
      def original_roi(self):
          """ :class:`numpy.ndarray`: The location of the extracted face box within the original
          frame. """
          with self._cache["original_roi"][1]:
              if self._cache["original_roi"][0] is None:
                  roi = np.array([[0, 0],
 
</s> remove         with self._cache["original_roi"][1]:
            if self._cache["original_roi"][0] is None:
 </s> add         with self._cache.lock("original_roi"):
            if self._cache.original_roi is None: </s> remove     def face(self):
 </s> add     def face(self) -> Optional[np.ndarray]: </s> remove     def landmarks(self):
 </s> add     def landmarks(self) -> np.ndarray: </s> remove                 logger.trace("original roi: %s", roi)
                self._cache["original_roi"][0] = roi
        return self._cache["original_roi"][0]
 </s> add                 logger.trace("original roi: %s", roi)  # type: ignore
                self._cache.original_roi = roi
        return self._cache.original_roi[0] </s> remove     def matrix(self):
 </s> add     def matrix(self) -> np.ndarray:
    def original_roi(self) -> np.ndarray:
          then an the attribute will return ``None``. """
          return self._face
  
      @property
    def original_roi(self) -> np.ndarray:
          """ :class:`numpy.ndarray`: The location of the extracted face box within the original
          frame. """
          with self._cache["original_roi"][1]:
              if self._cache["original_roi"][0] is None:
                  roi = np.array([[0, 0],
keep keep keep keep replace keep keep keep keep keep
 lib.align.aligned_face updates
  - Typing
  - Legacy support for pre-aligned faces
  - Coverage support for pre-aligned faces
  - Standardized retrieval of sub-crops 
lib/align/aligned_face.py