





import os
import re
import shutil
import sys
import tempfile
import unittest

import black


__A							   =							os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
sys.path.append(os.path.join(git_repo_path, "utils"))

import check_copies  # noqa: E402


# This is the reference code that will be used in the tests.
# If BertLMPredictionHead is changed in modeling_bert.py, this code needs to be manually updated.
__A							   =							"    def __init__(self, config):\n        super().__init__()\n        self.transform = BertPredictionHeadTransform(config)\n\n        # The output weights are the same as the input embeddings, but there is\n        # an output-only bias for each token.\n        self.decoder = nn.Linear(config.hidden_size, config.vocab_size, bias=False)\n\n        self.bias = nn.Parameter(torch.zeros(config.vocab_size))\n\n        # Need a link between the two variables so that the bias is correctly resized with `resize_token_embeddings`\n        self.decoder.bias = self.bias\n\n    def forward(self, hidden_states):\n        hidden_states = self.transform(hidden_states)\n        hidden_states = self.decoder(hidden_states)\n        return hidden_states\n"



class   _SCREAMING_SNAKE_CASE		(      unittest.TestCase       ):







 '''simple docstring'''

 def 				SCREAMING_SNAKE_CASE_   (self							:  List[str])			->int:



   '''simple docstring'''



   lowerCamelCase__: Dict         =tempfile.mkdtemp()
   os.makedirs(os.path.join(self.transformer_dir			,					"models/bert/"))
   lowerCamelCase__: Optional[Any]         =self.transformer_dir
   shutil.copy(
       os.path.join(a_			,					"src/transformers/models/bert/modeling_bert.py")			,					os.path.join(self.transformer_dir			,					"models/bert/modeling_bert.py")			,					)

 def 				SCREAMING_SNAKE_CASE_   (self							:  List[str])			->Any:



   '''simple docstring'''



   lowerCamelCase__: List[str]         ='src/transformers'
   shutil.rmtree(self.transformer_dir)

 def 				SCREAMING_SNAKE_CASE_   (self							:  Union[str, Any]			,					UpperCAmelCase_							:  Union[str, Any]			,					UpperCAmelCase_							:  Optional[int]			,					UpperCAmelCase_							:  Optional[int]			,					UpperCAmelCase_							:  str=None)			->str:



   '''simple docstring'''



   lowerCamelCase__: List[Any]         =comment + F"""\nclass {class_name}(nn.Module):\n""" + class_code
   if overwrite_result is not None:
     lowerCamelCase__: Tuple         =comment + F"""\nclass {class_name}(nn.Module):\n""" + overwrite_result
   lowerCamelCase__: int         =black.Mode(target_versions={black.TargetVersion.PYaa}			,					line_length=119)
   lowerCamelCase__: Dict         =black.format_str(a_			,					mode=a_)
   lowerCamelCase__: Optional[int]         =os.path.join(self.transformer_dir			,					"new_code.py")
   with open(a_			,					"w"			,					newline="\n") as f:
     f.write(a_)
   if overwrite_result is None:
     self.assertTrue(len(check_copies.is_copy_consistent(a_)) == 0)
   else:
     check_copies.is_copy_consistent(f.name			,					overwrite=a_)
     with open(a_			,					"r") as f:
       self.assertTrue(f.read()			,					a_)

 def 				SCREAMING_SNAKE_CASE_   (self							:  int)			->int:



   '''simple docstring'''



   lowerCamelCase__: Optional[Any]         =check_copies.find_code_in_transformers("models.bert.modeling_bert.BertLMPredictionHead")
   self.assertEqual(a_			,					a_)

 def 				SCREAMING_SNAKE_CASE_   (self							:  str)			->List[str]:



   '''simple docstring'''



   self.check_copy_consistency(
       "# Copied from transformers.models.bert.modeling_bert.BertLMPredictionHead"			,					"BertLMPredictionHead"			,					REFERENCE_CODE + "\n"			,					)

   # With no empty line at the end
   self.check_copy_consistency(
       "# Copied from transformers.models.bert.modeling_bert.BertLMPredictionHead"			,					"BertLMPredictionHead"			,					a_			,					)

   # Copy consistency with rename
   self.check_copy_consistency(
       "# Copied from transformers.models.bert.modeling_bert.BertLMPredictionHead with Bert->TestModel"			,					"TestModelLMPredictionHead"			,					re.sub("Bert"			,					"TestModel"			,					a_)			,					)

   # Copy consistency with a really long name
   lowerCamelCase__: Tuple         ='TestModelWithAReallyLongNameBecauseSomePeopleLikeThatForSomeReason'
   self.check_copy_consistency(
       F"""# Copied from transformers.models.bert.modeling_bert.BertLMPredictionHead with Bert->{long_class_name}"""			,					F"""{long_class_name}LMPredictionHead"""			,					re.sub("Bert"			,					a_			,					a_)			,					)

   # Copy consistency with overwrite
   self.check_copy_consistency(
       "# Copied from transformers.models.bert.modeling_bert.BertLMPredictionHead with Bert->TestModel"			,					"TestModelLMPredictionHead"			,					a_			,					overwrite_result=re.sub("Bert"			,					"TestModel"			,					a_)			,					)







 def 				SCREAMING_SNAKE_CASE_   (self							:  Any)			->Tuple:



   '''simple docstring'''



   lowerCamelCase__: Tuple         =check_copies.LOCALIZED_READMES['README_zh-hans.md']

   lowerCamelCase__: Optional[int]         =(
       '1. **[ALBERT](https://huggingface.co/transformers/model_doc/albert.html)** (from Google Research and the'
       ' Toyota Technological Institute at Chicago) released with the paper [ALBERT: A Lite BERT for'
       ' Self-supervised Learning of Language Representations](https://arxiv.org/abs/1909.11942), by Zhenzhong'
       ' Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut.\n1.'
       ' **[DistilBERT](https://huggingface.co/transformers/model_doc/distilbert.html)** (from HuggingFace),'
       ' released together with the paper [DistilBERT, a distilled version of BERT: smaller, faster, cheaper and'
       ' lighter](https://arxiv.org/abs/1910.01108) by Victor Sanh, Lysandre Debut and Thomas Wolf. The same'
       ' method has been applied to compress GPT2 into'
       ' [DistilGPT2](https://github.com/huggingface/transformers/tree/main/examples/distillation), RoBERTa into'
       ' [DistilRoBERTa](https://github.com/huggingface/transformers/tree/main/examples/distillation),'
       ' Multilingual BERT into'
       ' [DistilmBERT](https://github.com/huggingface/transformers/tree/main/examples/distillation) and a German'
       ' version of DistilBERT.\n1. **[ELECTRA](https://huggingface.co/transformers/model_doc/electra.html)**'
       ' (from Google Research/Stanford University) released with the paper [ELECTRA: Pre-training text encoders'
       ' as discriminators rather than generators](https://arxiv.org/abs/2003.10555) by Kevin Clark, Minh-Thang'
       ' Luong, Quoc V. Le, Christopher D. Manning.'
   )
   lowerCamelCase__: Optional[Any]         =(
       '1. **[ALBERT](https://huggingface.co/transformers/model_doc/albert.html)** (来自 Google Research and the'
       ' Toyota Technological Institute at Chicago) 伴随论文 [ALBERT: A Lite BERT for Self-supervised Learning of'
       ' Language Representations](https://arxiv.org/abs/1909.11942), 由 Zhenzhong Lan, Mingda Chen, Sebastian'
       ' Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut 发布。\n'
   )
   lowerCamelCase__: List[str]         =(
       '1. **[ALBERT](https://huggingface.co/transformers/model_doc/albert.html)** (来自 Google Research and the'
       ' Toyota Technological Institute at Chicago) 伴随论文 [ALBERT: A Lite BERT for Self-supervised Learning of'
       ' Language Representations](https://arxiv.org/abs/1909.11942), 由 Zhenzhong Lan, Mingda Chen, Sebastian'
       ' Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut 发布。\n1.'
       ' **[DistilBERT](https://huggingface.co/transformers/model_doc/distilbert.html)** (来自 HuggingFace) 伴随论文'
       ' [DistilBERT, a distilled version of BERT: smaller, faster, cheaper and'
       ' lighter](https://arxiv.org/abs/1910.01108) 由 Victor Sanh, Lysandre Debut and Thomas Wolf 发布。 The same'
       ' method has been applied to compress GPT2 into'
       ' [DistilGPT2](https://github.com/huggingface/transformers/tree/main/examples/distillation), RoBERTa into'
       ' [DistilRoBERTa](https://github.com/huggingface/transformers/tree/main/examples/distillation),'
       ' Multilingual BERT into'
       ' [DistilmBERT](https://github.com/huggingface/transformers/tree/main/examples/distillation) and a German'
       ' version of DistilBERT.\n1. **[ELECTRA](https://huggingface.co/transformers/model_doc/electra.html)** (来自'
       ' Google Research/Stanford University) 伴随论文 [ELECTRA: Pre-training text encoders as discriminators rather'
       ' than generators](https://arxiv.org/abs/2003.10555) 由 Kevin Clark, Minh-Thang Luong, Quoc V. Le,'
       ' Christopher D. Manning 发布。\n'
   )

   lowerCamelCase__: Optional[Any]         =check_copies.convert_to_localized_md(
       a_			,					a_			,					localized_readme["format_model_list"])

   self.assertFalse(a_)
   self.assertEqual(a_			,					a_)

   lowerCamelCase__: Union[str, Any]         =check_copies.convert_to_localized_md(
       a_			,					a_			,					localized_readme["format_model_list"])

   # Check whether the number of models is equal to README.md after conversion.
   self.assertTrue(a_)

   lowerCamelCase__: Dict         =(
       '1. **[ALBERT](https://huggingface.co/transformers/model_doc/albert.html)** (from Google Research and the'
       ' Toyota Technological Institute at Chicago) released with the paper [ALBERT: A Lite BERT for'
       ' Self-supervised Learning of Language Representations](https://arxiv.org/abs/1909.11942), by Zhenzhong'
       ' Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut.'
   )
   lowerCamelCase__: Union[str, Any]         =(
       '1. **[ALBERT](https://huggingface.co/transformers/main/model_doc/albert.html)** (来自 Google Research and'
       ' the Toyota Technological Institute at Chicago) 伴随论文 [ALBERT: A Lite BERT for Self-supervised Learning of'
       ' Language Representations](https://arxiv.org/abs/1909.11942), 由 Zhenzhong Lan, Mingda Chen, Sebastian'
       ' Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut 发布。\n'
   )
   lowerCamelCase__: Any         =(
       '1. **[ALBERT](https://huggingface.co/transformers/model_doc/albert.html)** (来自 Google Research and the'
       ' Toyota Technological Institute at Chicago) 伴随论文 [ALBERT: A Lite BERT for Self-supervised Learning of'
       ' Language Representations](https://arxiv.org/abs/1909.11942), 由 Zhenzhong Lan, Mingda Chen, Sebastian'
       ' Goodman, Kevin Gimpel, Piyush Sharma, Radu Soricut 发布。\n'
   )

   lowerCamelCase__: Any         =check_copies.convert_to_localized_md(
       a_			,					a_			,					localized_readme["format_model_list"])

   # Check if the model link is synchronized.
   self.assertEqual(a_			,					a_)






'''simple docstring'''

from __future__ import annotations







def a_     (    __UpperCAmelCase					)				->					list[int]:





			"""simple docstring"""







			snake_case:    Tuple      							=[True] * limit
			snake_case:    Optional[int]      							=False
			snake_case:    Union[str, Any]      							=False
			snake_case:    List[Any]      							=True

			for i in range(3				,							int(limit**0.5 + 1					)				,							2					):
						snake_case:    str      							=i * 2
						while index < limit:
									snake_case:    List[Any]      							=False
									snake_case:    List[str]      							=index + i

			snake_case:    Union[str, Any]      							=[2]

			for i in range(3				,							__UpperCAmelCase				,							2					):
						if is_prime[i]:
									primes.append(__UpperCAmelCase					)

			return primes







def a_     (    __UpperCAmelCase = 1_00_00_00					)				->					int:





			"""simple docstring"""







			snake_case:    str      							=prime_sieve(__UpperCAmelCase					)
			snake_case:    str      							=0
			snake_case:    str      							=0

			for i in range(len(__UpperCAmelCase					)					):
						for j in range(i + length				,							len(__UpperCAmelCase					)					):
									snake_case:    Tuple      							=sum(primes[i:j]					)
									if sol >= ceiling:
												break

									if sol in primes:
												snake_case:    List[str]      							=j - i
												snake_case:    Optional[int]      							=sol

			return largest


if __name__ == "__main__":
	print(F"""{solution() = }""")




