

'''simple docstring'''






import webbrowser
from sys import argv
from urllib.parse import parse_qs, quote

import requests
from bsa import BeautifulSoup
from fake_useragent import UserAgent

if __name__ == "__main__":
 lowerCAmelCase__											=	'''%20'''.join(argv[1:]) if len(argv) > 1 else quote(str(input('''Search: ''')))

 print('''Googling.....''')

 lowerCAmelCase__											=	f'https://www.google.com/search?q={query}&num=100'

 lowerCAmelCase__											=	requests.get(
     url,
     headers={'''User-Agent''': str(UserAgent().random)},
 )

 try:
  lowerCAmelCase__											=	(
      BeautifulSoup(res.text, '''html.parser''')
      .find('''div''', attrs={'''class''': '''yuRUbf'''})
      .find('''a''')
      .get('''href''')
  )

 except AttributeError:
  lowerCAmelCase__											=	parse_qs(
      BeautifulSoup(res.text, '''html.parser''')
      .find('''div''', attrs={'''class''': '''kCrYT'''})
      .find('''a''')
      .get('''href''')
  )['''url'''][0]

 webbrowser.open(link)



'''simple docstring'''







from __future__ import annotations

from collections import Counter
from random import random






class  lowerCAmelCase__   :






					def __init__(   self		):


											"""simple docstring"""





											lowercase_	:     int													=       {}






					def 	_snake_case    (   self				,							__SCREAMING_SNAKE_CASE		):


											"""simple docstring"""





											lowercase_	:     Dict													=       {}






					def 	_snake_case    (   self				,							__SCREAMING_SNAKE_CASE				,							__SCREAMING_SNAKE_CASE				,							__SCREAMING_SNAKE_CASE		):


											"""simple docstring"""





											if nodea not in self.connections:
																	self.add_node(__SCREAMING_SNAKE_CASE		)
											if nodea not in self.connections:
																	self.add_node(__SCREAMING_SNAKE_CASE		)
											lowercase_	:     Optional[Any]													=       probability






					def 	_snake_case    (   self		):


											"""simple docstring"""





											return list(self.connections		)






					def 	_snake_case    (   self				,							__SCREAMING_SNAKE_CASE		):


											"""simple docstring"""





											lowercase_	:     Any													=       0
											lowercase_	:     Tuple													=       random()

											for dest in self.connections[node]:
																	current_probability += self.connections[node][dest]
																	if current_probability > random_value:
																							return dest
											return ""







def 					snake_case_		(				__SCREAMING_SNAKE_CASE					: str      ,      __SCREAMING_SNAKE_CASE					: list[tuple[str, str, float]]      ,      __SCREAMING_SNAKE_CASE					: int							):



						"""simple docstring"""





						lowercase_	:     List[Any]													=       MarkovChainGraphUndirectedUnweighted()

						for nodea, nodea, probability in transitions:
												graph.add_transition_probability(__SCREAMING_SNAKE_CASE      ,      __SCREAMING_SNAKE_CASE      ,      __SCREAMING_SNAKE_CASE							)

						lowercase_	:     str													=       Counter(graph.get_nodes()							)
						lowercase_	:     Any													=       start

						for _ in range(__SCREAMING_SNAKE_CASE							):
												lowercase_	:     int													=       graph.transition(__SCREAMING_SNAKE_CASE							)
												visited[node] += 1

						return visited


if __name__ == "__main__":
							import doctest

							doctest.testmod()



