






'''simple docstring'''



import unittest

import numpy as np
import torch
from transformers import CLIPTextConfig, CLIPTextModel

from diffusers import DDIMScheduler, LDMPipeline, UNetaDModel, VQModel
from diffusers.utils.testing_utils import enable_full_determinism, require_torch, slow, torch_device


enable_full_determinism()



class      a    (		unittest.TestCase	):


     """simple docstring"""






     @property
     def 			lowerCamelCase__			(    self					:		Any      )						->							Union[str, Any]:
          torch.manual_seed(0      )
          __UpperCAmelCase     :			Any  							=      UNetaDModel(
              block_out_channels=(32, 64)							,			layers_per_block=2							,			sample_size=32							,			in_channels=3							,			out_channels=3							,			down_block_types=('''DownBlock2D''', '''AttnDownBlock2D''')							,			up_block_types=('''AttnUpBlock2D''', '''UpBlock2D''')							,			)
          return model

     @property
     def 			lowerCamelCase__			(    self					:		Tuple      )						->							Optional[Any]:
          torch.manual_seed(0      )
          __UpperCAmelCase     :			List[Any]  							=      VQModel(
              block_out_channels=[32, 64]							,			in_channels=3							,			out_channels=3							,			down_block_types=['''DownEncoderBlock2D''', '''DownEncoderBlock2D''']							,			up_block_types=['''UpDecoderBlock2D''', '''UpDecoderBlock2D''']							,			latent_channels=3							,			)
          return model

     @property
     def 			lowerCamelCase__			(    self					:		str      )						->							List[Any]:
          torch.manual_seed(0      )
          __UpperCAmelCase     :			Tuple  							=      CLIPTextConfig(
              bos_token_id=0							,			eos_token_id=2							,			hidden_size=32							,			intermediate_size=37							,			layer_norm_eps=1E-05							,			num_attention_heads=4							,			num_hidden_layers=5							,			pad_token_id=1							,			vocab_size=1000							,			)
          return CLIPTextModel(__lowerCAmelCase      )






     def 			lowerCamelCase__			(    self					:		Optional[int]      )						->							str:
          __UpperCAmelCase     :			Optional[Any]  							=      self.dummy_uncond_unet
          __UpperCAmelCase     :			Tuple  							=      DDIMScheduler()
          __UpperCAmelCase     :			Any  							=      self.dummy_vq_model

          __UpperCAmelCase     :			Optional[Any]  							=      LDMPipeline(unet=__lowerCAmelCase							,			vqvae=__lowerCAmelCase							,			scheduler=__lowerCAmelCase      )
          ldm.to(__lowerCAmelCase      )
          ldm.set_progress_bar_config(disable=__lowerCAmelCase      )

          __UpperCAmelCase     :			Any  							=      torch.manual_seed(0      )
          __UpperCAmelCase     :			List[Any]  							=      ldm(generator=__lowerCAmelCase							,			num_inference_steps=2							,			output_type='''numpy'''      ).images

          __UpperCAmelCase     :			Optional[Any]  							=      torch.manual_seed(0      )
          __UpperCAmelCase     :			Optional[int]  							=      ldm(generator=__lowerCAmelCase							,			num_inference_steps=2							,			output_type='''numpy'''							,			return_dict=__lowerCAmelCase      )[0]

          __UpperCAmelCase     :			Optional[Any]  							=      image[0, -3:, -3:, -1]
          __UpperCAmelCase     :			Union[str, Any]  							=      image_from_tuple[0, -3:, -3:, -1]

          assert image.shape == (1, 64, 64, 3)
          __UpperCAmelCase     :			Dict  							=      np.array([0.8_512, 0.818, 0.6_411, 0.6_808, 0.4_465, 0.5_618, 0.46, 0.6_231, 0.5_172]      )
          __UpperCAmelCase     :			Union[str, Any]  							=      1E-2 if torch_device != '''mps''' else 3E-2

          assert np.abs(image_slice.flatten() - expected_slice      ).max() < tolerance
          assert np.abs(image_from_tuple_slice.flatten() - expected_slice      ).max() < tolerance



@slow
@require_torch
class      a    (		unittest.TestCase	):


     """simple docstring"""






     def 			lowerCamelCase__			(    self					:		List[Any]      )						->							Optional[Any]:
          __UpperCAmelCase     :			str  							=      LDMPipeline.from_pretrained('''CompVis/ldm-celebahq-256'''      )
          ldm.to(__lowerCAmelCase      )
          ldm.set_progress_bar_config(disable=__lowerCAmelCase      )

          __UpperCAmelCase     :			Tuple  							=      torch.manual_seed(0      )
          __UpperCAmelCase     :			int  							=      ldm(generator=__lowerCAmelCase							,			num_inference_steps=5							,			output_type='''numpy'''      ).images

          __UpperCAmelCase     :			List[str]  							=      image[0, -3:, -3:, -1]

          assert image.shape == (1, 256, 256, 3)
          __UpperCAmelCase     :			List[Any]  							=      np.array([0.4_399, 0.44_975, 0.46_825, 0.474, 0.4_359, 0.4_581, 0.45_095, 0.4_341, 0.4_447]      )
          __UpperCAmelCase     :			int  							=      1E-2 if torch_device != '''mps''' else 3E-2

          assert np.abs(image_slice.flatten() - expected_slice      ).max() < tolerance



'''simple docstring'''



def      _a     (						_lowercase :     List[str]  ):





     '''simple docstring'''






     __UpperCAmelCase     :			str  							=      1
     __UpperCAmelCase     :			List[str]  							=      2
     while i * i <= n:
          __UpperCAmelCase     :			Optional[Any]  							=      0
          while n % i == 0:
               n //= i
               multiplicity += 1
          n_divisors *= multiplicity + 1
          i += 1
     if n > 1:
          n_divisors *= 2
     return n_divisors




def      _a     (						):





     '''simple docstring'''






     __UpperCAmelCase     :			Optional[Any]  							=      1
     __UpperCAmelCase     :			List[Any]  							=      1

     while True:
          i += 1
          t_num += i

          if count_divisors(_lowercase  ) > 500:
               break

     return t_num


if __name__ == "__main__":
      print(solution())