__lowerCAmelCase    :  Union[str, Any]										= {
    'A': ('ABCDEFGHIJKLM', 'NOPQRSTUVWXYZ'),
    'B': ('ABCDEFGHIJKLM', 'NOPQRSTUVWXYZ'),
    'C': ('ABCDEFGHIJKLM', 'ZNOPQRSTUVWXY'),
    'D': ('ABCDEFGHIJKLM', 'ZNOPQRSTUVWXY'),
    'E': ('ABCDEFGHIJKLM', 'YZNOPQRSTUVWX'),
    'F': ('ABCDEFGHIJKLM', 'YZNOPQRSTUVWX'),
    'G': ('ABCDEFGHIJKLM', 'XYZNOPQRSTUVW'),
    'H': ('ABCDEFGHIJKLM', 'XYZNOPQRSTUVW'),
    'I': ('ABCDEFGHIJKLM', 'WXYZNOPQRSTUV'),
    'J': ('ABCDEFGHIJKLM', 'WXYZNOPQRSTUV'),
    'K': ('ABCDEFGHIJKLM', 'VWXYZNOPQRSTU'),
    'L': ('ABCDEFGHIJKLM', 'VWXYZNOPQRSTU'),
    'M': ('ABCDEFGHIJKLM', 'UVWXYZNOPQRST'),
    'N': ('ABCDEFGHIJKLM', 'UVWXYZNOPQRST'),
    'O': ('ABCDEFGHIJKLM', 'TUVWXYZNOPQRS'),
    'P': ('ABCDEFGHIJKLM', 'TUVWXYZNOPQRS'),
    'Q': ('ABCDEFGHIJKLM', 'STUVWXYZNOPQR'),
    'R': ('ABCDEFGHIJKLM', 'STUVWXYZNOPQR'),
    'S': ('ABCDEFGHIJKLM', 'RSTUVWXYZNOPQ'),
    'T': ('ABCDEFGHIJKLM', 'RSTUVWXYZNOPQ'),
    'U': ('ABCDEFGHIJKLM', 'QRSTUVWXYZNOP'),
    'V': ('ABCDEFGHIJKLM', 'QRSTUVWXYZNOP'),
    'W': ('ABCDEFGHIJKLM', 'PQRSTUVWXYZNO'),
    'X': ('ABCDEFGHIJKLM', 'PQRSTUVWXYZNO'),
    'Y': ('ABCDEFGHIJKLM', 'OPQRSTUVWXYZN'),
    'Z': ('ABCDEFGHIJKLM', 'OPQRSTUVWXYZN'),
}

def   a_					(_lowerCAmelCase  :   int       )->				list[tuple[str, str]]:
    return [alphabet[char] for char in key.upper()]

def   a_					(_lowerCAmelCase  :   List[Any]			,	_lowerCAmelCase  :   Tuple       )->				str:
    snake_case:						str         =   """"""
    snake_case:						Optional[int]         =   0
    snake_case:						Union[str, Any]         =   generate_table(__snake_case       )
    for char in words.upper():
        cipher += get_opponent(table[count]			,	__snake_case       )
        snake_case:						Union[str, Any]         =   (count + 1) % len(__snake_case       )
    return cipher

def   a_					(_lowerCAmelCase  :   Dict			,	_lowerCAmelCase  :   int       )->				str:
    return encrypt(__snake_case			,	__snake_case       )

def   a_					(_lowerCAmelCase  :   Optional[Any]			,	_lowerCAmelCase  :   str       )->				tuple[int, int]:
    snake_case:						Dict         =   0 if char in table[0] else 1
    snake_case:						Dict         =   table[row].index(__snake_case       )
    return row, col

def   a_					(_lowerCAmelCase  :   List[Any]			,	_lowerCAmelCase  :   Optional[int]       )->				str:
    snake_case    , snake_case:						Any         =   get_position(__snake_case			,	char.upper()       )
    if row == 1:
        return table[0][col]
    else:
        return table[1][col] if row == 0 else char


if __name__ == "__main__":
    import doctest

    doctest.testmod()  # Fist ensure that all our tests are passing...
    __lowerCAmelCase    :  Union[str, Any]										= input('Enter key: ').strip()
    __lowerCAmelCase    :  Any										= input('Enter text to encrypt: ').strip()
    __lowerCAmelCase    :  int										= encrypt(key, text)

    print(F"""Encrypted: {cipher_text}""")
    print(F"""Decrypted with key: {decrypt(key, cipher_text)}""")






from typing import TYPE_CHECKING

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


UpperCAmelCase__        =				{
    '''configuration_flaubert''': ['''FLAUBERT_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''FlaubertConfig''', '''FlaubertOnnxConfig'''],
    '''tokenization_flaubert''': ['''FlaubertTokenizer'''],
}

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  UpperCAmelCase__        =				[
      '''FLAUBERT_PRETRAINED_MODEL_ARCHIVE_LIST''',
      '''FlaubertForMultipleChoice''',
      '''FlaubertForQuestionAnswering''',
      '''FlaubertForQuestionAnsweringSimple''',
      '''FlaubertForSequenceClassification''',
      '''FlaubertForTokenClassification''',
      '''FlaubertModel''',
      '''FlaubertWithLMHeadModel''',
      '''FlaubertPreTrainedModel''',
  ]

try:
  if not is_tf_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  UpperCAmelCase__        =				[
      '''TF_FLAUBERT_PRETRAINED_MODEL_ARCHIVE_LIST''',
      '''TFFlaubertForMultipleChoice''',
      '''TFFlaubertForQuestionAnsweringSimple''',
      '''TFFlaubertForSequenceClassification''',
      '''TFFlaubertForTokenClassification''',
      '''TFFlaubertModel''',
      '''TFFlaubertPreTrainedModel''',
      '''TFFlaubertWithLMHeadModel''',
  ]


if TYPE_CHECKING:
  from .configuration_flaubert import FLAUBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, FlaubertConfig, FlaubertOnnxConfig
  from .tokenization_flaubert import FlaubertTokenizer

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_flaubert import (
        FLAUBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
        FlaubertForMultipleChoice,
        FlaubertForQuestionAnswering,
        FlaubertForQuestionAnsweringSimple,
        FlaubertForSequenceClassification,
        FlaubertForTokenClassification,
        FlaubertModel,
        FlaubertPreTrainedModel,
        FlaubertWithLMHeadModel,
    )

  try:
    if not is_tf_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_tf_flaubert import (
        TF_FLAUBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
        TFFlaubertForMultipleChoice,
        TFFlaubertForQuestionAnsweringSimple,
        TFFlaubertForSequenceClassification,
        TFFlaubertForTokenClassification,
        TFFlaubertModel,
        TFFlaubertPreTrainedModel,
        TFFlaubertWithLMHeadModel,
    )

else:
  import sys

  UpperCAmelCase__        =				_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)

