






def 		__UpperCAmelCase     (	a_				,	a_):
							while b:
														snake_case_     ,						snake_case_           =				b, a % b
							return a





def 		__UpperCAmelCase     (	a_				,	a_):
							return a if b == 0 else euclidean_gcd_recursive(a_				,	a % b)





def 		__UpperCAmelCase     (	):
							print(f'''euclidean_gcd(3, 5) = {euclidean_gcd(3				,	5)}''')
							print(f'''euclidean_gcd(5, 3) = {euclidean_gcd(5				,	3)}''')
							print(f'''euclidean_gcd(1, 3) = {euclidean_gcd(1				,	3)}''')
							print(f'''euclidean_gcd(3, 6) = {euclidean_gcd(3				,	6)}''')
							print(f'''euclidean_gcd(6, 3) = {euclidean_gcd(6				,	3)}''')

							print(f'''euclidean_gcd_recursive(3, 5) = {euclidean_gcd_recursive(3				,	5)}''')
							print(f'''euclidean_gcd_recursive(5, 3) = {euclidean_gcd_recursive(5				,	3)}''')
							print(f'''euclidean_gcd_recursive(1, 3) = {euclidean_gcd_recursive(1				,	3)}''')
							print(f'''euclidean_gcd_recursive(3, 6) = {euclidean_gcd_recursive(3				,	6)}''')
							print(f'''euclidean_gcd_recursive(6, 3) = {euclidean_gcd_recursive(6				,	3)}''')


if __name__ == "__main__":
	main()













import copy
from dataclasses import dataclass
from pathlib import Path
from typing import Dict, Optional, Union




@dataclass
class 					UpperCamelCase_ :



	'''simple docstring'''




	lowerCAmelCase						=					None
	lowerCAmelCase						=					False
	lowerCAmelCase						=					False
	lowerCAmelCase						=					False
	lowerCAmelCase						=					None
	lowerCAmelCase						=					None
	lowerCAmelCase						=					False
	lowerCAmelCase						=					False
	lowerCAmelCase						=					False
	lowerCAmelCase						=					True
	lowerCAmelCase						=					None
	lowerCAmelCase						=					1
	lowerCAmelCase						=					None
	lowerCAmelCase						=					False
	lowerCAmelCase						=					None
	lowerCAmelCase						=					None




	def 				_UpperCamelCase     (			self   )			->       "DownloadConfig":
								return self.__class__(**{k: copy.deepcopy(a   ) for k, v in self.__dict__.items()}   )





