<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def search(self, query, *, max_results=100, **kwargs):
 		"""Search Google Music and library for content. 		Parameters: 			query (str):
 Search text. 			max_results (int, Optional):
 Maximum number of results per type per 				location to retrieve. I.e up to 100 Google and 100 library 				for a total of 200 for the default value. 				Google only accepts values up to 100. 				Default: ``100`` 			kwargs (bool, Optional):
 Any of ``albums``, ``artists``, ``genres``, 				``playlists``, ``podcasts``, ``situations``, ``songs``, ``stations``, 				``videos`` set to ``True`` will include that result type in the 				returned dict. 				Setting none of them will include all result types in the returned dict. 		Returns: 			dict: A dict of results separated into keys: ``'albums'``, ``'artists'``, 				``'genres'``, ``'playlists'``, ```'podcasts'``, ``'situations'``, 				``'songs'``, ``'stations'``, ``'videos'``. 		Note: 			Free account search is restricted so may not contain hits for all result types. 		"""


		results = defaultdict(list)

		for type_, results_ in self.search_library(
			query,
			max_results=max_results,
			**kwargs
		).items():
			results[type_].extend(results_)

		for type_, results_ in self.search_google(
			query,
			max_results=max_results,
			**kwargs
		).items():
			results[type_].extend(results_)

		return dict(results)