





from typing import TYPE_CHECKING

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


UpperCAmelCase_      							=     {
    """configuration_data2vec_audio""": ["""DATA2VEC_AUDIO_PRETRAINED_CONFIG_ARCHIVE_MAP""", """Data2VecAudioConfig"""],
    """configuration_data2vec_text""": [
        """DATA2VEC_TEXT_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """Data2VecTextConfig""",
        """Data2VecTextOnnxConfig""",
    ],
    """configuration_data2vec_vision""": [
        """DATA2VEC_VISION_PRETRAINED_CONFIG_ARCHIVE_MAP""",
        """Data2VecVisionConfig""",
        """Data2VecVisionOnnxConfig""",
    ],
}

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					UpperCAmelCase_      							=     [
					    """DATA2VEC_AUDIO_PRETRAINED_MODEL_ARCHIVE_LIST""",
					    """Data2VecAudioForAudioFrameClassification""",
					    """Data2VecAudioForCTC""",
					    """Data2VecAudioForSequenceClassification""",
					    """Data2VecAudioForXVector""",
					    """Data2VecAudioModel""",
					    """Data2VecAudioPreTrainedModel""",
					]
					UpperCAmelCase_      							=     [
					    """DATA2VEC_TEXT_PRETRAINED_MODEL_ARCHIVE_LIST""",
					    """Data2VecTextForCausalLM""",
					    """Data2VecTextForMaskedLM""",
					    """Data2VecTextForMultipleChoice""",
					    """Data2VecTextForQuestionAnswering""",
					    """Data2VecTextForSequenceClassification""",
					    """Data2VecTextForTokenClassification""",
					    """Data2VecTextModel""",
					    """Data2VecTextPreTrainedModel""",
					]
					UpperCAmelCase_      							=     [
					    """DATA2VEC_VISION_PRETRAINED_MODEL_ARCHIVE_LIST""",
					    """Data2VecVisionForImageClassification""",
					    """Data2VecVisionForMaskedImageModeling""",
					    """Data2VecVisionForSemanticSegmentation""",
					    """Data2VecVisionModel""",
					    """Data2VecVisionPreTrainedModel""",
					]

if is_tf_available():
					UpperCAmelCase_      							=     [
					    """TFData2VecVisionForImageClassification""",
					    """TFData2VecVisionForSemanticSegmentation""",
					    """TFData2VecVisionModel""",
					    """TFData2VecVisionPreTrainedModel""",
					]

if TYPE_CHECKING:
					from .configuration_dataavec_audio import DATA2VEC_AUDIO_PRETRAINED_CONFIG_ARCHIVE_MAP, DataaVecAudioConfig
					from .configuration_dataavec_text import (
					    DATA2VEC_TEXT_PRETRAINED_CONFIG_ARCHIVE_MAP,
					    DataaVecTextConfig,
					    DataaVecTextOnnxConfig,
					)
					from .configuration_dataavec_vision import (
					    DATA2VEC_VISION_PRETRAINED_CONFIG_ARCHIVE_MAP,
					    DataaVecVisionConfig,
					    DataaVecVisionOnnxConfig,
					)

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_dataavec_audio import (
										    DATA2VEC_AUDIO_PRETRAINED_MODEL_ARCHIVE_LIST,
										    DataaVecAudioForAudioFrameClassification,
										    DataaVecAudioForCTC,
										    DataaVecAudioForSequenceClassification,
										    DataaVecAudioForXVector,
										    DataaVecAudioModel,
										    DataaVecAudioPreTrainedModel,
										)
										from .modeling_dataavec_text import (
										    DATA2VEC_TEXT_PRETRAINED_MODEL_ARCHIVE_LIST,
										    DataaVecTextForCausalLM,
										    DataaVecTextForMaskedLM,
										    DataaVecTextForMultipleChoice,
										    DataaVecTextForQuestionAnswering,
										    DataaVecTextForSequenceClassification,
										    DataaVecTextForTokenClassification,
										    DataaVecTextModel,
										    DataaVecTextPreTrainedModel,
										)
										from .modeling_dataavec_vision import (
										    DATA2VEC_VISION_PRETRAINED_MODEL_ARCHIVE_LIST,
										    DataaVecVisionForImageClassification,
										    DataaVecVisionForMaskedImageModeling,
										    DataaVecVisionForSemanticSegmentation,
										    DataaVecVisionModel,
										    DataaVecVisionPreTrainedModel,
										)
					if is_tf_available():
										from .modeling_tf_dataavec_vision import (
										    TFDataaVecVisionForImageClassification,
										    TFDataaVecVisionForSemanticSegmentation,
										    TFDataaVecVisionModel,
										    TFDataaVecVisionPreTrainedModel,
										)

else:
					import sys

					UpperCAmelCase_      							=     _LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)










def 						lowerCamelCase__     (     UpperCamelCase__			:       List[Any]       ,    UpperCamelCase__			:       Dict       ,    UpperCamelCase__			:       str       ,    UpperCamelCase__			:       int       ,    UpperCamelCase__			:       List[str]       ,    UpperCamelCase__			:       str						)			-> List[Any]:



					'''simple docstring'''




					if index == r:
										for j in range(UpperCamelCase__						):
															print(data[j]       ,    end=' '						)
										print(' '						)
										return
					#  When no more elements are there to put in data[]
					if i >= n:
										return
					# current is included, put next at next location
					_snake_case									=				arr[i]
					combination_util(UpperCamelCase__       ,    UpperCamelCase__       ,    UpperCamelCase__       ,    index + 1       ,    UpperCamelCase__       ,    i + 1						)
					# current is excluded, replace it with
					# next (Note that i+1 is passed, but
					# index is not changed)
					combination_util(UpperCamelCase__       ,    UpperCamelCase__       ,    UpperCamelCase__       ,    UpperCamelCase__       ,    UpperCamelCase__       ,    i + 1						)
					# The main function that prints all combinations
					# of size r in arr[] of size n. This function
					# mainly uses combinationUtil()





def 						lowerCamelCase__     (     UpperCamelCase__			:       Optional[int]       ,    UpperCamelCase__			:       Tuple       ,    UpperCamelCase__			:       List[str]						)			-> Tuple:



					'''simple docstring'''




					_snake_case									=				[0] * r
					# Print all combination using temporary array 'data[]'
					combination_util(UpperCamelCase__       ,    UpperCamelCase__       ,    UpperCamelCase__       ,    0       ,    UpperCamelCase__       ,    0						)


if __name__ == "__main__":
					# Driver code to check the function above
					UpperCAmelCase_      							=     [10, 20, 30, 40, 50]
					print_combination(arr, len(arr), 3)
					# This code is contributed by Ambuj sahu



