input: Write a function to find the maximum value within a nested dictionary. If the dictionary or any of its nested dictionaries are empty, return None.
  assert findMaxValue({
      "key1": {
          "value1": 10,
          "value2": 20
      },
      "key2": {
          "value3": 40
      },
  })==40
  assert findMaxValue({})==None
  assert findMaxValue({
      "key1": {
          "value1": 15,
          "value2": 25
      },
      "key2": {
          "value3": 5
      },
  })==25
  assert findMaxValue({
      "key1": 30,
      "key2": 50
  })==50
  assert findMaxValue({
      "key1": {},
      "key2": {
          "value1": 60
      }
  })==60
output: def findMaxValue(d):
      if not d:
          return None
      max_value = None
      stack = [d]
      while stack:
          current = stack.pop()
          for key, value in current.items():
              if isinstance(value, dict):
                  stack.append(value)
              else:
                  if max_value is None or value > max_value:
                      max_value = value
      return max_value