
    +j~                     f   S SK Jr  S SKJr  S SKJrJr  S SKJr  S SK	r
S SKrS SKJrJrJrJrJrJr  S SKJrJrJrJrJrJr  0 SS	_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S!_S"S#_S$S%_S&S'_S(S)_0 S*S+_S,S-_S.S/_S0S1_S2S3_S4S5_S6S7_S8S9_S:S;_S<S=_S>S?_S@SA_SBSC_SDSE_SFSG_SHSI_SJSK_E0 SLSM_SNSO_SPSQ_SRSS_STSU_SVSW_SXSY_SZS[_S\S]_S^S__S`Sa_SbSc_SdSe_SfSg_ShSi_SjSk_SlSm_E0 SnSo_SpSq_SrSs_StSu_SvSw_SxSy_SzS{_S|S}_S~S_SS_SS_SS_SS_SS_SS_SS_SS_ESSSSSSSSSSSS.ErSSSSSSSSSSSS.rSSSSSSSSSSSSSSSS.r/ SQrS r " S S\R>                  5      r  " S S\R>                  5      r! " S S\R>                  5      r" " S S\R>                  5      r# " S S\5      r$S\$4S jr%g)    )BytesIO)override)IOComfyExtension)ImageN)IdeogramGenerateRequestIdeogramGenerateResponseImageRequestIdeogramV3RequestIdeogramV3EditRequestIdeogramV4Request)ApiEndpointbytesio_to_image_tensordownload_url_as_bytesioresize_mask_to_imagesync_opvalidate_stringAutoAUTOz
512 x 1536RESOLUTION_512_1536z
576 x 1408RESOLUTION_576_1408z
576 x 1472RESOLUTION_576_1472z
576 x 1536RESOLUTION_576_1536z
640 x 1024RESOLUTION_640_1024z
640 x 1344RESOLUTION_640_1344z
640 x 1408RESOLUTION_640_1408z
640 x 1472RESOLUTION_640_1472z
640 x 1536RESOLUTION_640_1536z
704 x 1152RESOLUTION_704_1152z
704 x 1216RESOLUTION_704_1216z
704 x 1280RESOLUTION_704_1280z
704 x 1344RESOLUTION_704_1344z
704 x 1408RESOLUTION_704_1408z
704 x 1472RESOLUTION_704_1472z
720 x 1280RESOLUTION_720_1280z
736 x 1312RESOLUTION_736_1312z
768 x 1024RESOLUTION_768_1024z
768 x 1088RESOLUTION_768_1088z
768 x 1152RESOLUTION_768_1152z
768 x 1216RESOLUTION_768_1216z
768 x 1232RESOLUTION_768_1232z
768 x 1280RESOLUTION_768_1280z
768 x 1344RESOLUTION_768_1344z	832 x 960RESOLUTION_832_960z
832 x 1024RESOLUTION_832_1024z
832 x 1088RESOLUTION_832_1088z
832 x 1152RESOLUTION_832_1152z
832 x 1216RESOLUTION_832_1216z
832 x 1248RESOLUTION_832_1248z
864 x 1152RESOLUTION_864_1152z	896 x 960RESOLUTION_896_960z
896 x 1024RESOLUTION_896_1024z
896 x 1088RESOLUTION_896_1088z
896 x 1120RESOLUTION_896_1120z
896 x 1152RESOLUTION_896_1152z	960 x 832RESOLUTION_960_832z	960 x 896RESOLUTION_960_896z
960 x 1024RESOLUTION_960_1024z
960 x 1088RESOLUTION_960_1088z
1024 x 640RESOLUTION_1024_640z
1024 x 768RESOLUTION_1024_768z
1024 x 832RESOLUTION_1024_832z
1024 x 896RESOLUTION_1024_896z
1024 x 960RESOLUTION_1024_960z1024 x 1024RESOLUTION_1024_1024z
1088 x 768RESOLUTION_1088_768z
1088 x 832RESOLUTION_1088_832z
1088 x 896RESOLUTION_1088_896z
1088 x 960RESOLUTION_1088_960z
1120 x 896RESOLUTION_1120_896z
1152 x 704RESOLUTION_1152_704z
1152 x 768RESOLUTION_1152_768z
1152 x 832RESOLUTION_1152_832z
1152 x 864RESOLUTION_1152_864z
1152 x 896RESOLUTION_1152_896z
1216 x 704RESOLUTION_1216_704z
1216 x 768RESOLUTION_1216_768z
1216 x 832RESOLUTION_1216_832z
1232 x 768RESOLUTION_1232_768z
1248 x 832RESOLUTION_1248_832z
1280 x 704RESOLUTION_1280_704z
1280 x 720RESOLUTION_1280_720z
1280 x 768RESOLUTION_1280_768z
1280 x 800RESOLUTION_1280_800z
1312 x 736RESOLUTION_1312_736z
1344 x 640RESOLUTION_1344_640RESOLUTION_1344_704RESOLUTION_1344_768RESOLUTION_1408_576RESOLUTION_1408_640RESOLUTION_1408_704RESOLUTION_1472_576RESOLUTION_1472_640RESOLUTION_1472_704RESOLUTION_1536_512RESOLUTION_1536_576RESOLUTION_1536_640)z
1344 x 704z
1344 x 768z
1408 x 576z
1408 x 640z
1408 x 704z
1472 x 576z
1472 x 640z
1472 x 704z
1536 x 512z
1536 x 576z
1536 x 640
ASPECT_1_1
ASPECT_4_3
ASPECT_3_4ASPECT_16_9ASPECT_9_16
ASPECT_2_1
ASPECT_1_2
ASPECT_3_2
ASPECT_2_3
ASPECT_4_5
ASPECT_5_4)1:14:33:416:99:162:11:23:22:34:55:41x33x11x22x19x1616x910x1616x102x33x23x44x34x55x41x1)z1:3z3:1ru   rt   rs   rr   z10:16z16:10rw   rv   rq   rp   rx   ry   ro   )Fr   512x1536576x1408576x1472576x1536640x1344640x1408640x1472640x1536704x1152704x1216704x1280704x1344704x1408704x1472736x1312768x1088768x1216768x1280768x1344800x1280832x960832x1024832x1088832x1152832x1216832x1248864x1152896x960896x1024896x1088896x1120896x1152960x832960x896960x1024960x10881024x8321024x8961024x960	1024x10241088x7681088x8321088x8961088x9601120x8961152x7041152x8321152x8641152x8961216x7041216x7681216x8321248x8321280x7041280x7681280x8001312x7361344x6401344x7041344x7681408x5761408x6401408x7041472x5761472x6401472x7041536x5121536x5761536x640c                    #    / nU  H1  n[        U5      I Sh  vN n[        USS9nUR                  U5        M3     U(       a  [        R                  " USS9nU$ [        S5      e NL7f)zAHelper function to download and process multiple images from URLsNRGB)moder   )dimzNo valid images were processed)r   r   appendtorchcat	Exception)
image_urlsimage_tensors	image_urlimage_bytesio
img_tensorstacked_tensorss         >/home/wildlama/comfy/ComfyUI/comfy_api_nodes/nodes_ideogram.pydownload_and_process_imagesr      sn      M	5i@@,]G
Z(	   ))Mq9  899 As   A'A%AA'c                   D    \ rS rSr\S 5       r\      SS j5       rSrg)
IdeogramV1   c                    [         R                  " SSSS[         R                  R                  SSSSS	9[         R                  R                  S
SSS9[         R
                  R                  S[        [        R                  5       5      SSSS9[         R
                  R                  S/ SQSSSSS9[         R                  R                  SSSSSS[         R                  R                  SS9[         R                  R                  SSSSSS9[         R                  R                  SSSS S[         R                  R                  SS!9/[         R                  R                  5       /[         R                  R                  [         R                  R                   [         R                  R"                  /S[         R$                  " [         R&                  " SS
/S"9S#S$9S%9	$ )&Nr   zIdeogram V1partner/image/Ideogramz-Generates images using the Ideogram V1 model.promptT Prompt for the image generation	multilinedefaulttooltipturboFHWhether to use turbo mode (faster generation, potentially lower quality)r   r   aspect_ratioro   z&The aspect ratio for image generation.optionsr   r   optionalmagic_prompt_optionr   ONOFFr   5Determine if MagicPrompt should be used in generationr   r   r   r   advancedseedr      r   minmaxstepcontrol_after_generatedisplay_moder   negative_prompt-Description of what to exclude from the imager   r   r   r   
num_images   r   r   r   r   r   r   widgetsz
                (
                  $n := widgets.num_images;
                  $base := (widgets.turbo = true) ? 0.0286 : 0.0858;
                  {"type":"usd","usd": $round($base * $n, 2)}
                )
                
depends_onexpr	node_iddisplay_namecategorydescriptioninputsoutputshiddenis_api_nodeprice_badge)r   SchemaStringInputBooleanCombolistV1_V2_RATIO_MAPkeysIntNumberDisplaynumberr   OutputHiddenauth_token_comfy_orgapi_key_comfy_org	unique_id
PriceBadgePriceBadgeDependsclss    r   define_schemaIdeogramV1.define_schema   s   yy &-G		"=	    

  !f ! 
 " !5!5!78!D!   )1"S!!   "+/!#!1!1!8!8!  	 		%"K!     !#!1!1!8!8!  Y5n ! 		..		++		##
 //w8OP	IN
 N	
    c                 F  #    [         R                  US 5      nU(       a  SOSn[        U [        SSS9[        [        [        UUUUUS:w  a  UOS US:w  a  UOS U(       a  UOS S9S	9S
S9I S h  vN n	U	R                  (       a  [        U	R                  5      S:X  a  [        S5      eU	R                   V
s/ s H!  oR                  (       d  M  U
R                  PM#     nn
U(       d  [        S5      e[        R                  " [        U5      I S h  vN 5      $  Ns  sn
f  N7f)N	V_1_TURBOV_1/proxy/ideogram/generatePOSTpathmethodrd   r   )r   modelr  r   r   r   r  image_requestr   response_modeldatamax_retriesr   (No images were generated in the response,No image URLs were generated in the response)r  getr   r   r	   r   r
   r:  lenr   urlr   
NodeOutputr   )r)  r   r   r   r   r   r  r  r5  response
image_datar   s               r   executeIdeogramV1.execute<  s     '**<>$% 7G3(*!)1=1MSW@SW]@])<cg7FOD
 
 
$ }}HMM 2a 7FGG7?}}W}njnn}
WJKK}}#>z#JJKK1
* X Ks7   A+D!-D.AD!5DD2D!D	D!D! N)Fro   r   r   r   r   __name__
__module____qualname____firstlineno__classmethodr*  rD  __static_attributes__rF  r,  r   r   r      sA    O
 O
b  "&L &Lr,  r   c                   J    \ rS rSr\S 5       r\         SS j5       rSrg)
IdeogramV2if  c                 t   [         R                  " SSSS[         R                  R                  SSSSS	9[         R                  R                  S
SSS9[         R
                  R                  S[        [        R                  5       5      SSSS9[         R
                  R                  S[        [        R                  5       5      SSSS9[         R
                  R                  S/ SQSSSSS9[         R                  R                  SSSSSS[         R                  R                  SS9[         R
                  R                  S/ S QS!S"SSS9[         R                  R                  S#SSS$SS%9[         R                  R                  S&SSS'S[         R                  R                  SS(9/	[         R                  R                  5       /[         R                  R                   [         R                  R"                  [         R                  R$                  /S[         R&                  " [         R(                  " S&S
/S)9S*S+9S,9	$ )-NrO  zIdeogram V2r   z-Generates images using the Ideogram V2 model.r   Tr   r   r   r   Fr   r   r   ro   zPThe aspect ratio for image generation. Ignored if resolution is not set to AUTO.r   
resolutionr   zaThe resolution for image generation. If not set to AUTO, this overrides the aspect_ratio setting.r   r   r   r   r   r   r   r   r   r   
style_type)r   GENERAL	REALISTICDESIGN	RENDER_3DANIMENONEz#Style type for generation (V2 only)r  r  r  r  r  r  r  z
                (
                  $n := widgets.num_images;
                  $base := (widgets.turbo = true) ? 0.0715 : 0.1144;
                  {"type":"usd","usd": $round($base * $n, 2)}
                )
                r	  r  )r   r  r  r  r  r  r  r  r  V1_V1_RES_MAPr  r  r   r   r!  r"  r#  r$  r%  r&  r'  r(  s    r   r*  IdeogramV2.define_schemah  s/   yy &-G		"=	    

  !f ! 
 " !5!5!78!n!     !3!3!56"[!   )1"S!!   "+/!#!1!1!8!8!  	  \"A!!   		%"K!     !#!1!1!8!8!  yM^ ! 		..		++		##
 //w8OP	yf
 f	
r,  c                   #    [         R                  US 5      n[        R                  US 5      nU(       a  SOSnS nS nUS:w  a  UnO
US:w  a  UOS n[        U [	        SSS9[
        [        [        UUU	UUUUS:w  a  UOS US:w  a  UOS U(       a  UOS U
(       a  U
OS S	9
S
9SS9I S h  vN nUR                  (       a  [        UR                  5      S:X  a  [        S5      eUR                   Vs/ s H!  oR                  (       d  M  UR                  PM#     nnU(       d  [        S5      e[        R                  " [        U5      I S h  vN 5      $  Ns  snf  N7f)N	V_2_TURBOV_2r   rd   r0  r1  r2  rX  )
r   r5  r  r   r   rQ  r   rR  r  color_paletter6  r   )endpointr9  r:  r;  r   r<  r=  )r  r>  rY  r   r   r	   r   r
   r:  r?  r   r@  r   rA  r   )r)  r   r   r   rQ  r   r   rR  r  r  r^  r5  final_resolutionfinal_aspect_ratiorB  rC  r   s                    r   rD  IdeogramV2.execute  sO     '**<>"&&z48
$%  !)1=1MSW  &@P3(*!)!3/@SW]@])<cg-76-Azt7FOD3@-d %
 
( }}HMM 2a 7FGG7?}}W}njnn}
WJKK}}#>z#JJKK5
. X Ks7   B$E&E'AE.EE2EE		EErF  N)	Fro   r   r   r   rX  r   r   r   rG  rF  r,  r   rO  rO  f  sJ    g
 g
R  "6L 6Lr,  rO  c                   L    \ rS rSr\S 5       r\          SS j5       rSrg)
IdeogramV3i  c                    [         R                  " SSSS[         R                  R                  SSSSS	9[         R                  R                  S
SSS9[         R
                  R                  SSSS9[         R                  R                  S[        [        R                  5       5      SSSS9[         R                  R                  S[        SSSS9[         R                  R                  S/ SQSSSSS9[         R                  R                  SSSSSS[         R                  R                  SS9[         R                  R                  S SSS!S[         R                  R                  SS"9[         R                  R                  S#/ S$QS%S&SSS9[         R                  R                  S'S(SS9[         R
                  R                  S)S*SS9/[         R                  R                  5       /[         R                  R                   [         R                  R"                  [         R                  R$                  /S[         R&                  " [         R(                  " S#S /S'/S+9S,S-9S.9	$ )/Nrd  zIdeogram V3r   zGenerates images using the Ideogram V3 model. Supports both regular image generation from text prompts and image editing with mask.r   Tr   z*Prompt for the image generation or editingr   imagez+Optional reference image for image editing.)r   r   maskz;Optional mask for inpainting (white areas will be replaced)r   ro   zPThe aspect ratio for image generation. Ignored if resolution is not set to Auto.r   rQ  r   zaThe resolution for image generation. If not set to Auto, this overrides the aspect_ratio setting.r   r   r   r   r   r   r   r   r   r   r  r  r  rendering_speedDEFAULTTURBOQUALITYrj  z;Controls the trade-off between generation speed and qualitycharacter_imagez$Image to use as character reference.character_maskz,Optional mask for character reference image.)r  r  a:  
                (
                  $n := widgets.num_images;
                  $speed := widgets.rendering_speed;
                  $hasChar := inputs.character_image.connected;
                  $base :=
                    $contains($speed,"quality") ? ($hasChar ? 0.286 : 0.1287) :
                    $contains($speed,"default") ? ($hasChar ? 0.2145 : 0.0858) :
                    $contains($speed,"turbo") ? ($hasChar ? 0.143 : 0.0429) :
                    0.0858;
                  {"type":"usd","usd": $round($base * $n, 2)}
                )
                r	  r  )r   r  r  r  r   Maskr  r  V3_RATIO_MAPr  V3_RESOLUTIONSr  r  r   r!  r"  r#  r$  r%  r&  r'  r(  s    r   r*  IdeogramV3.define_schema  se   yy &-p 		"H	    I!  
 Y!  
 " !2!2!45!n!    *"[!   )1"S!!   "+/!#!1!1!8!8!  	  !#!1!1!8!8!   %;%Y!!   %B!  
 $J!  QM^ ! 		..		++		##
 //9JL8Yctbuv{m
 m	
r,  Nc           
      	  #    U	S:X  a  Sn	S nS nU
Gbl  U
R                  5       R                  5       nUb  [        XSS9nSU-
  nUR                  SS  U
R                  SS :w  a  [	        S5      eUR                  5       R                  5       R                  5       S	-  R                  [        R                  5      n[        R                  " U5      n[        5       nUR                  US
S9  UR                  S5        UnSUl        UR                  5       S	-  R                  [        R                  5      n[        R                  " U5      n[        5       nUR                  US
S9  UR                  S5        UnSUl        OUb  [	        S5      eUGb  UGb  UR                  5       R                  5       n[        X2SS9nSU-
  nUR                  SS  UR                  SS :w  a  [	        S5      eUR                  5       S	-  R                  [        R                  5      n[        R                  " U5      n[        5       nUR                  US
S9  UR                  S5        UnSUl        UR                  5       R                  5       R                  5       S	-  R                  [        R                  5      n[        R                  " U5      n[        5       nUR                  US
S9  UR                  S5        UnSUl        [        UU	S9nUS:w  a  UUl        US:w  a  UUl        US:  a  UUl        UUS.nU(       a  UUS'   U(       a  UUS'   ['        U [)        SSS9[*        UUSSS9I S h  vN nOUc  Ub  [	        S5      e[-        UU	S9nUS:w  a  UUl        O)US:w  a#  [0        R3                  U5      nU(       a  UUl        US:w  a  UUl        US:w  a  UUl        US:  a  UUl        0 nU(       a  UUS'   U(       a  UUS'   U(       a  SUl        ['        U [)        SSS9[*        UU(       a  UOS SSS9I S h  vN nUR8                  (       a  [;        UR8                  5      S:X  a  [	        S 5      eUR8                   Vs/ s H"  nUR<                  (       d  M  UR<                  PM$     nnU(       d  [	        S!5      e[>        R@                  " [C        U5      I S h  vN 5      $  GNz Ns  snf  N7f)"NBALANCEDrj  F)allow_gradientg      ?r   z.Character mask and image must be the same size   PNG)formatr   zmask.pngz	image.pngz5Character mask requires character image to be presentz$Mask and Image must be the same size)r   rh  r   )rf  rg  character_reference_imagescharacter_mask_binaryz /proxy/ideogram/ideogram-v3/editr1  r2  zmultipart/form-data)r9  r:  filescontent_typer;  z;Ideogram V3 image editing requires both an image AND a maskr   ro   z$/proxy/ideogram/ideogram-v3/generate)r_  r9  r:  r|  r}  r;  r<  r=  )"squeezecpur   shaper   numpyastypenpuint8r   	fromarrayr   saveseeknamer   magic_promptr   r  r   r   r	   r   rQ  rp  r>  r   rR  r:  r?  r@  r   rA  r   )r)  r   rf  rg  rQ  r   r   r   r  rh  rm  rn  character_img_binaryr{  input_tensormask_npmask_imgmask_byte_arrimg_npimgimg_byte_arr
img_binarymask_binaryedit_requestr|  rB  gen_request	v3_aspectrC  r   s                                 r   rD  IdeogramV3.execute  s     j('O# $&*22488:L)!5nfk!l!$~!5!''+/D/DQr/JJ#$TUU)113779??ACGOOPRPXPXY ??73 '	mE:""1%(5%-7%*"((*S088BF//&)C"9LHH\%H0a #/ (3 %'STT !1 ==?..0L'EJD:D zz!"~Qr!22 FGG #((*S088BF//&)C"9LHH\%H0a %J)JO ||~))+113c9AA"((KGw/H#IMMM-M6q!'K)K 1 /L #f,,?)qy$(!A~*4' $#E $6J23$1F-.$!CFS7!2 H $"2YZZ , /K V#)3&&(,,\:	/8K, #f,+>(qy#' A~)3&E#6J23$1F-.)/&$$*PY_`7 $e$2 H }}HMM 2a 7FGG7?}}W}
njnn}
WJKK}}#>z#JJKKyX X KsJ   M'S/)S#*CS/7S&8AS/?S(S((2S/S-	S/&S/(S/rF  )
NNr   ro   r   r   r   rj  NNrG  rF  r,  r   rd  rd    sO    n
 n
`  "!`L `Lr,  rd  c            	       H    \ rS rSr\S 5       r\S\S\S\S\4S j5       rSr	g	)

IdeogramV4i#  c                    [         R                  " SSSS[         R                  R                  SSSSS	9[         R                  R                  S
/ SQSS9[         R                  R                  S/ SQSSS9[         R
                  R                  SSSSSS[         R                  R                  S9/[         R                  R                  5       /[         R                  R                  [         R                  R                  [         R                  R                  /S[         R                  " [         R                  " S/S9SS9S9	$ )Nr  zIdeogram V4r   zAGenerates images using the Ideogram 4.0 model from a text prompt.r   Tr   z%Text prompt for the image generation.r   rQ  )r   z2048x2048 (1:1)z1440x2880 (1:2)z2880x1440 (2:1)z1664x2496 (2:3)z2496x1664 (3:2)z1792x2240 (4:5)z2240x1792 (5:4)z1440x2560 (9:16)z2560x1440 (16:9)z1600x2560 (5:8)z2560x1600 (8:5)z1728x2304 (3:4)z2304x1728 (4:3)z1296x3168 (9:22)z3168x1296 (22:9)z1152x2944 (9:23)z2944x1152 (23:9)z1248x3328 (3:8)z3328x1248 (8:3)z1280x3072 (5:12)z3072x1280 (12:5)r   )r   r   rh  ri  rj  z<Controls the trade-off between generation speed and quality.)r   r   r   r   r   r   r   )r   r   r   r   r   r   r  aD  
                (
                  $speed := widgets.rendering_speed;
                  $price :=
                    $contains($speed,"turbo") ? 0.0429 :
                    $contains($speed,"quality") ? 0.143 :
                    0.0858;
                  {"type":"usd","usd": $price}
                )
                r	  r  )r   r  r  r  r  r  r  r   r   r!  r"  r#  r$  r%  r&  r'  r(  s    r   r*  IdeogramV4.define_schema%  s4   yy &-[		"C	     0 #5  8 %;%Z	   "+/!#!1!1!8!8  S2h ! 		..		++		##
 //9J8KL	CN
 N	
r,  r   rQ  rh  r   c                   #    [        USSS9  [        U [        SSS9[        [	        UUS:w  a  UR                  S5      S	   OS US
9SS9I S h  vN nUR                  (       a  [        UR                  5      S	:X  a  [        S5      eUR                   Vs/ s H!  ofR                  (       d  M  UR                  PM#     nnU(       d  [        S5      e[        R                  " [        U5      I S h  vN 5      $  Ns  snf  N7f)NTr   )strip_whitespace
min_lengthz$/proxy/ideogram/ideogram-v4/generater1  r2  r    r   )text_promptrQ  rh  r8  r<  r=  )r   r   r   r	   r   splitr:  r?  r   r@  r   rA  r   )r)  r   rQ  rh  r   rB  rC  r   s           r   rD  IdeogramV4.executew  s      	!D CFS3""7AV7K:++C03QU /
 

 

 }}HMM 2a 7FGG7?}}W}njnn}
WJKK}}#>z#JJKK#

 X Ks7   ADC8ADC:-C:=2D/C?0	D:DrF  N)
rH  rI  rJ  rK  rL  r*  strintrD  rM  rF  r,  r   r  r  #  sW    O
 O
b LL L 	L
 L Lr,  r  c                   L    \ rS rSr\S\\\R                        4S j5       r	Sr
g)IdeogramExtensioni  returnc                 6   #    [         [        [        [        /$ 7fN)r   rO  rd  r  )selfs    r   get_node_listIdeogramExtension.get_node_list  s      	
 	
s   rF  N)rH  rI  rJ  rK  r   r  typer   	ComfyNoder  rM  rF  r,  r   r  r    s)    
T$r||*<%= 
 
r,  r  r  c                     #    [        5       $ 7fr  )r  rF  r,  r   comfy_entrypointr    s     s   )&ior   typing_extensionsr   comfy_api.latestr   r   PILr   r  r  r   comfy_api_nodes.apis.ideogramr   r	   r
   r   r   r   comfy_api_nodes.utilr   r   r   r   r   r   rY  r  rp  rq  r   r  r   rO  rd  r  r  r  rF  r,  r   <module>r     s7    & /     PP$P $P $	P
 $P $P $P $P $P $P $P $P $P $P $P  $!P" $#P$ $%P& $'P( $)P* $+P, $-P. $/P0 $1P2 $3P4 "5P6 $7P8 $9P: $;P< $=P> $?P@ $APB "CPD $EPF $GPH $IPJ $KPL "MPN "OPP $QPR $SPT $UPV $WPX $YPZ $[P\ $]P^ &_P` $aPb $cPd $ePf $gPh $iPj $kPl $mPn $oPp $qPr $sPt $uPv $wPx $yPz ${P| $}P~ $P@ $APB $CPD $EPF $GPH $IPJ %$$$$$$$$$$_Pf 			 









$GR*{L {L|cL cLLTL TLnnL nLb
 
 1 r,  