code: def sanitize(vpc_config):
      
      if vpc_config is None:
          return vpc_config
      elif type(vpc_config) is not dict:
          raise ValueError('vpc_config is not a dict: {}'.format(vpc_config))
      elif not vpc_config:
          raise ValueError('vpc_config is empty')
  
      subnets = vpc_config.get(SUBNETS_KEY)
      if subnets is None:
          raise ValueError('vpc_config is missing key: {}'.format(SUBNETS_KEY))
      if type(subnets) is not list:
          raise ValueError('vpc_config value for {} is not a list: {}'.format(SUBNETS_KEY, subnets))
      elif not subnets:
          raise ValueError('vpc_config value for {} is empty'.format(SUBNETS_KEY))
  
      security_group_ids = vpc_config.get(SECURITY_GROUP_IDS_KEY)
      if security_group_ids is None:
          raise ValueError('vpc_config is missing key: {}'.format(SECURITY_GROUP_IDS_KEY))
      if type(security_group_ids) is not list:
          raise ValueError('vpc_config value for {} is not a list: {}'.format(SECURITY_GROUP_IDS_KEY, security_group_ids))
      elif not security_group_ids:
          raise ValueError('vpc_config value for {} is empty'.format(SECURITY_GROUP_IDS_KEY))
  
      return to_dict(subnets, security_group_ids)
docs: Checks that an instance of VpcConfig has the expected keys and values, removes unexpected keys,
      and raises ValueErrors if any expectations are violated
  
      Args:
          vpc_config (dict): a VpcConfig dict containing 'Subnets' and 'SecurityGroupIds'
  
      Returns:
          A valid VpcConfig dict containing only 'Subnets' and 'SecurityGroupIds' from the vpc_config parameter
          If vpc_config parameter is None, returns None
  
      Raises:
          ValueError if any expectations are violated:
              * vpc_config must be a non-empty dict
              * vpc_config must have key `Subnets` and the value must be a non-empty list
              * vpc_config must have key `SecurityGroupIds` and the value must be a non-empty list