
from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tf_available, is_torch_available


_UpperCAmelCase :			List[str]              =	{
    "configuration_tapas": ["TAPAS_PRETRAINED_CONFIG_ARCHIVE_MAP", "TapasConfig"],
    "tokenization_tapas": ["TapasTokenizer"],
}

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					_UpperCAmelCase :			Tuple              =	[
					    "TAPAS_PRETRAINED_MODEL_ARCHIVE_LIST",
					    "TapasForMaskedLM",
					    "TapasForQuestionAnswering",
					    "TapasForSequenceClassification",
					    "TapasModel",
					    "TapasPreTrainedModel",
					    "load_tf_weights_in_tapas",
					]
try:
					if not is_tf_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					_UpperCAmelCase :			Union[str, Any]              =	[
					    "TF_TAPAS_PRETRAINED_MODEL_ARCHIVE_LIST",
					    "TFTapasForMaskedLM",
					    "TFTapasForQuestionAnswering",
					    "TFTapasForSequenceClassification",
					    "TFTapasModel",
					    "TFTapasPreTrainedModel",
					]


if TYPE_CHECKING:
					from .configuration_tapas import TAPAS_PRETRAINED_CONFIG_ARCHIVE_MAP, TapasConfig
					from .tokenization_tapas import TapasTokenizer

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_tapas import (
										    TAPAS_PRETRAINED_MODEL_ARCHIVE_LIST,
										    TapasForMaskedLM,
										    TapasForQuestionAnswering,
										    TapasForSequenceClassification,
										    TapasModel,
										    TapasPreTrainedModel,
										    load_tf_weights_in_tapas,
										)

					try:
										if not is_tf_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_tf_tapas import (
										    TF_TAPAS_PRETRAINED_MODEL_ARCHIVE_LIST,
										    TFTapasForMaskedLM,
										    TFTapasForQuestionAnswering,
										    TFTapasForSequenceClassification,
										    TFTapasModel,
										    TFTapasPreTrainedModel,
										)


else:
					import sys

					_UpperCAmelCase :			List[Any]              =	_LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)


from __future__ import annotations


def 				A	( lowercase   ,	lowercase			)       ->  tuple[int, int]:
		'''simple docstring'''

		if b == 0:
				return (1, 0)
		((UpperCamelCase)     ,  (UpperCamelCase))          =					extended_euclid(lowercase   ,	a % b			)
		UpperCamelCase          =					a // b
		return (y, x - k * y)


def 				A	( lowercase   ,	lowercase   ,	lowercase   ,	lowercase			)       ->  int:
		'''simple docstring'''

		((UpperCamelCase)     ,  (UpperCamelCase))          =					extended_euclid(lowercase   ,	lowercase			)
		UpperCamelCase          =					na * na
		UpperCamelCase          =					ra * x * na + ra * y * na
		return (n % m + m) % m


def 				A	( lowercase   ,	lowercase			)       ->  int:
		'''simple docstring'''

		((UpperCamelCase)     ,  (UpperCamelCase))          =					extended_euclid(lowercase   ,	lowercase			)
		if b < 0:
				UpperCamelCase          =					(b % n + n) % n
		return b


def 				A	( lowercase   ,	lowercase   ,	lowercase   ,	lowercase			)       ->  int:
		'''simple docstring'''

		UpperCamelCase     ,  UpperCamelCase          =					invert_modulo(lowercase   ,	lowercase			), invert_modulo(lowercase   ,	lowercase			)
		UpperCamelCase          =					na * na
		UpperCamelCase          =					ra * x * na + ra * y * na
		return (n % m + m) % m


if __name__ == "__main__":
					from doctest import testmod

					testmod(name="chinese_remainder_theorem", verbose=True)
					testmod(name="chinese_remainder_theorem2", verbose=True)
					testmod(name="invert_modulo", verbose=True)
					testmod(name="extended_euclid", verbose=True)
