
'''simple docstring'''
from typing import TYPE_CHECKING

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


A__ :		List[str]					={"configuration_levit": ["LEVIT_PRETRAINED_CONFIG_ARCHIVE_MAP", "LevitConfig", "LevitOnnxConfig"]}

try:
     if not is_vision_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     A__ :		Any					=["LevitFeatureExtractor"]
     A__ :		Tuple					=["LevitImageProcessor"]

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     A__ :		str					=[
         "LEVIT_PRETRAINED_MODEL_ARCHIVE_LIST",
         "LevitForImageClassification",
         "LevitForImageClassificationWithTeacher",
         "LevitModel",
         "LevitPreTrainedModel",
     ]


if TYPE_CHECKING:
     from .configuration_levit import LEVIT_PRETRAINED_CONFIG_ARCHIVE_MAP, LevitConfig, LevitOnnxConfig

     try:
          if not is_vision_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .feature_extraction_levit import LevitFeatureExtractor
          from .image_processing_levit import LevitImageProcessor

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_levit import (
              LEVIT_PRETRAINED_MODEL_ARCHIVE_LIST,
              LevitForImageClassification,
              LevitForImageClassificationWithTeacher,
              LevitModel,
              LevitPreTrainedModel,
          )
else:
     import sys

     A__ :		Union[str, Any]					=_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)










from functools import lru_cache







@lru_cache
def      A__				(       SCREAMING_SNAKE_CASE__)  ->       int:
  if not isinstance(SCREAMING_SNAKE_CASE__   ,   SCREAMING_SNAKE_CASE__):
    raise TypeError("""k must be an integer.""")
  if k < 0:
    raise ValueError("""k integer must be greater or equal to zero.""")
  if k == 0:
    return 0
  elif k == 1:
    return 1
  else:
    return fibonacci(k - 1) + fibonacci(k - 2)







def      A__				(       SCREAMING_SNAKE_CASE__   ,   SCREAMING_SNAKE_CASE__)  ->       int:
  __snake_case:		str					    =		len(SCREAMING_SNAKE_CASE__)
  # Find m such that F_m >= n where F_i is the i_th fibonacci number.
  __snake_case:		Optional[int]					    =		0
  while True:
    if fibonacci(SCREAMING_SNAKE_CASE__) >= len_list:
      __snake_case:		str					    =		i
      break
    i += 1
  __snake_case:		Tuple					    =		0
  while fibb_k > 0:
    __snake_case:		str					    =		min(
        offset + fibonacci(fibb_k - 1)   ,   len_list - 1)  # Prevent out of range
    __snake_case:		List[Any]					    =		arr[index_k]
    if item_k_1 == val:
      return index_k
    elif val < item_k_1:
      fibb_k -= 1
    elif val > item_k_1:
      offset += fibonacci(fibb_k - 1)
      fibb_k -= 2
  else:
    return -1


if __name__ == "__main__":
      import doctest

      doctest.testmod()






