code: def _filter_properties(
      feature: dict[str, Any],
      source_id: str | None = None,
      area_of_use: str | None = None,
      filename: str | None = None,
  ) -> bool:
      """
      Filter by the properties. Designed to use with 'filter'
      """
      properties = feature.get("properties")
      if not properties:
          return False
      p_filename = properties.get("name")
      p_source_id = properties.get("source_id")
      if not p_filename or not p_source_id:
          return False
      source_id__matched = source_id is None or source_id in p_source_id
      area_of_use__matched = (
          area_of_use is None
          or area_of_use in properties.get("area_of_use", "")
      )
      filename__matched = filename is None or filename in p_filename
      if (
          source_id__matched
          and area_of_use__matched
          and filename__matched
      ):
          return True
      return False
  
imports: import hashlib
  import json
  import os
  from datetime import datetime
  from functools import partial
  from pathlib import Path
  from typing import Any
  from urllib.request import urlretrieve
  from pyproj._sync import get_proj_endpoint
  from pyproj.aoi import BBox
  from pyproj.datadir import get_data_dir, get_user_data_dir
label_desc: Use image node_id 4 for calling a global function with example usage: _filter_properties(feature, source_id, area_of_use, filename) and returns: False, False, False, True