code: def getParams() -> Optional[Dict[str, ParamSpec]]:
      return {
          "enable_nested": ParamSpec(
              req=False,
              desc="Enables nested ciphers. "
              "Incredibly slow, and not guaranteed to terminate",
              default="False",
          ),
          "invert_priority": ParamSpec(
              req=False,
              desc="Causes more complex encodings to be looked at first. "
              "Good for deeply buried encodings.",
              default="False",
          ),
          "max_cipher_depth": ParamSpec(
              req=False,
              desc="The depth at which we stop trying to crack ciphers. "
              "Set to 0 to disable",
              default="0",
          ),
          "max_depth": ParamSpec(
              req=False,
              desc="The depth at which we give up. "
              "Set to 0 to disable",
              default="0",
          ),
          "priority_cap": ParamSpec(
              req=False,
              desc="Sets the maximum depth before we give up ordering items.",
              default="2",
          ),
          "p_threshold": ParamSpec(
              req=False,
              desc="Will skip any crackers which have less than this likelihood of succeeding. "
              "Set to 0 to disable",
              default="0.01",
          ),
      }
  
imports: import bisect
  import distutils
  import math
  from copy import copy
  from dataclasses import dataclass
  from functools import lru_cache
  from typing import Any, Dict, Generic, List, Optional, TypeVar, Union
  import logging
  from rich.logging import RichHandler
  from ciphey.iface import Checker, Config, Cracker, CrackInfo, CrackResult, Decoder, ParamSpec, Searcher, SearchLevel, SearchResult, T, registry
label_desc: Use image node_id 8 for calling the AuSearch obj's underlying member method code with example usage: obj.getParams() and returns: dict