





from __future__ import annotations

import json

import requests
from bsa import BeautifulSoup
from fake_useragent import UserAgent

_a 						=      {"UserAgent": UserAgent().random}





def lowerCAmelCase__(__snake_case							)				->      dict:







	'''simple docstring'''







	lowerCamelCase__								=		script.contents[0]
	lowerCamelCase__								=		json.loads(data[data.find('''{"config"'''							) : -1]							)
	return info["entry_data"]["ProfilePage"][0]["graphql"]["user"]






class 					__A    :

			'''simple docstring'''







			def __init__(    self       ,  __lowerCAmelCase							):



				'''simple docstring'''







				lowerCamelCase__								=		F'https://www.instagram.com/{username}/'
				lowerCamelCase__								=		self.get_json()





			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				lowerCamelCase__								=		requests.get(self.url       ,  headers=__lowerCAmelCase							).text
				lowerCamelCase__								=		BeautifulSoup(__lowerCAmelCase       ,  '''html.parser'''							).find_all('''script'''							)
				try:
					return extract_user_profile(scripts[4]							)
				except (json.decoder.JSONDecodeError, KeyError):
					return extract_user_profile(scripts[3]							)





			def __repr__(    self							):



				'''simple docstring'''







				return F'{self.__class__.__name__}(\'{self.username}\')'





			def __str__(    self							):



				'''simple docstring'''







				return F'{self.fullname} ({self.username}) is {self.biography}'





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return self.user_data["username"]





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return self.user_data["full_name"]





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return self.user_data["biography"]





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return self.user_data["business_email"]





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return self.user_data["external_url"]





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return self.user_data["edge_followed_by"]["count"]





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return self.user_data["edge_follow"]["count"]





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return self.user_data["edge_owner_to_timeline_media"]["count"]





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return self.user_data["profile_pic_url_hd"]





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return self.user_data["is_verified"]





			@property
			def 		__lowerCamelCase				(    self							):



				'''simple docstring'''







				return self.user_data["is_private"]





def lowerCAmelCase__(__snake_case = "github"							)				->      None:







	'''simple docstring'''







	import os

	if os.environ.get('''CI'''							):
		return  # test failing on GitHub Actions
	lowerCamelCase__								=		InstagramUser(__snake_case							)
	assert instagram_user.user_data
	assert isinstance(instagram_user.user_data       ,__snake_case							)
	assert instagram_user.username == username
	if username != "github":
		return
	assert instagram_user.fullname == "GitHub"
	assert instagram_user.biography == "Built for developers."
	assert instagram_user.number_of_posts > 150
	assert instagram_user.number_of_followers > 120000
	assert instagram_user.number_of_followings > 15
	assert instagram_user.email == "support@github.com"
	assert instagram_user.website == "https://github.com/readme"
	assert instagram_user.profile_picture_url.startswith('''https://instagram.'''							)
	assert instagram_user.is_verified is True
	assert instagram_user.is_private is False


if __name__ == "__main__":
			import doctest

			doctest.testmod()
			_a 						=      InstagramUser("github")
			print(instagram_user)
			print(f"""{instagram_user.number_of_posts = }""")
			print(f"""{instagram_user.number_of_followers = }""")
			print(f"""{instagram_user.number_of_followings = }""")
			print(f"""{instagram_user.email = }""")
			print(f"""{instagram_user.website = }""")
			print(f"""{instagram_user.profile_picture_url = }""")
			print(f"""{instagram_user.is_verified = }""")
			print(f"""{instagram_user.is_private = }""")










_a 						=      65_521





def lowerCAmelCase__(__snake_case							)				->      int:







	'''simple docstring'''







	lowerCamelCase__								=		1
	lowerCamelCase__								=		0
	for plain_chr in plain_text:
		lowerCamelCase__								=		(a + ord(__snake_case							)) % MOD_ADLER
		lowerCamelCase__								=		(b + a) % MOD_ADLER
	return (b << 16) | a



