Ë
    [^(hg  ã                   ó¬  — d Z ddlZddlmZ ddlmZ ddlZddlmZ ddlm	Z	m
Z
mZ ddlmZmZ g d¢Z ej                   ej"                  d	¬
«      Z ed«       ej&                  dddddd«      dej(                  dej*                  dee   dej*                  dej*                  dedefd„«       «       Z ed«      dej(                  fd„«       Zd„ Z ed«       ej&                  ddddddddd«	      	 	 	 	 	 	 	 d(dej(                  dej*                  dedee   d ee   d!eej*                     d"ed#ee   d$ee   d%ee   d&ej*                  fd'„«       «       Zy))a‘  This file exports ONNX ops for opset 17.

Note [ONNX Operators that are added/updated in opset 17]

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
https://github.com/onnx/onnx/blob/main/docs/Changelog.md#version-17-of-the-default-onnx-operator-set
New operators:
    BlackmanWindow
    DFT
    HammingWindow
    HannWindow
    LayerNormalization
    MelWeightMatrix
    STFT
    SequenceMap
é    N)ÚSequence)ÚOptional)Ú_C)Ú_type_utilsÚerrorsÚsymbolic_helper)Ú	jit_utilsÚregistration)Ú
layer_normÚstftÚquantized_layer_normé   )Úopsetzaten::layer_normÚvÚisÚfÚnoneÚgÚinputÚnormalized_shapeÚweightÚbiasÚepsÚcudnn_enablec                 óÔ  — t        |«       }t        j                  j                  |t        j                  j                  «      }|j                  «       }	t        j                  |«      r*t        j                  ||	¬«      }
| j                  d|
¬«      }t        j                  |«      r*t        j                  ||	¬«      }| j                  d|¬«      }| j                  d|||||¬«      S )N©ÚdtypeÚConstant©Úvalue_tÚLayerNormalization)Ú	epsilon_fÚaxis_i)Úlenr   ÚJitScalarTypeÚ
from_valueÚFLOATr   r   Ú_is_noneÚtorchÚonesÚopÚzeros)r   r   r   r   r   r   r   ÚaxisÚscalar_typer   Úweight_valueÚ
bias_values               úY/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/onnx/symbolic_opset17.pyr   r   &   sÓ   € ô Ð Ó!Ð!€DÜ×+Ñ+×6Ñ6ØŒ{×(Ñ(×.Ñ.ó€Kð ×ÑÓ€EÜ×Ñ Ô'Ü—z‘zÐ"2¸%Ô@ˆØ—‘�j¨,�Ó7ˆÜ×Ñ Ô%Ü—[‘[Ð!1¸Ô?ˆ
Ø�t‰t�J¨
ˆtÓ3ˆØ�4‰4ØØØØØØð ó ð ó    zquantized::layer_normc           	      óŠ   — t        j                  | |«      \  }}}}t        | |||||d«      }	t        j                  | |	||«      S )NF)r   Údequantize_helperr   Úquantize_helper)
r   Úxr   r   r   r   Úop_scaleÚop_zero_pointÚ_Úoutputs
             r1   r   r   J   sL   € ô !×2Ñ2°1°aÓ8�J€A€qˆ!ˆQä˜˜1Ð.°¸¸cÀ5ÓI€Fä×*Ñ*¨1¨f°hÀÓNÐNr2   c                 ó*   — | |z
  dz  }| |z
  |z
  }||fS )zuHelper function to compute the sizes of the edges (left and right)
    of a given window centered within an FFT size.é   © )Ún_fftÚwindow_sizeÚleftÚrights       r1   Ú_compute_edge_sizesrB   \   s+   € ð �KÑ AÑ%€DØ�D‰L˜;Ñ&€EØ�ˆ;Ðr2   z
aten::stftÚiÚbr>   Ú
hop_lengthÚ
win_lengthÚwindowÚ
normalizedÚonesidedÚreturn_complexÚalign_to_windowÚreturnc
                 ó²  — |rt        j                  d|¬«      ‚|	�t        j                  d|¬«      ‚|�|n|dz  }
| j                  dt        j                  |
t        j
                  ¬«      ¬«      }| j                  dt        j                  |t        j
                  ¬«      ¬«      }|}t        j                  |«      }|dk(  rI| j                  d	|| j                  dt        j                  d
gt        j
                  ¬«      ¬«      «      }n"|�|dkD  rt        j                  d|› d�|¬«      ‚t        j                  |d
¬«      }|��|r|n|}||k(  sJ d|› d�f«       ‚||k  rqt        ||«      \  }}| j                  dt        j                  |«      ¬«      }| j                  dt        j                  |«      ¬«      }| j                  d|||d
¬«      }t        j                  |«      rÂ|r„||kD  rt        j                  d|› d|› d�|¬«      ‚t        ||«      \  }}t        j                  t        j                  |«      t        j                  |«      t        j                  |«      f«      }nt        j                  |«      }|j                  d
   |k(  sJ ‚| j                  d|¬«      }| j                  d|t        j                   j#                  |«      j%                  «       ¬«      }| j                  d|||||�|rdnd
¬«      }| j                  d|g d¢¬«      }|dk(  rH| j                  d|| j                  dt        j                  d
gt        j
                  ¬«      ¬«      «      }|rjt        j&                  t        j                  ||j)                  «       j+                  «       ¬«      «      }| j                  d|| j                  d|¬«      «      }|S )a®  Associates `torch.stft` with the `STFT` ONNX operator.
    Note that torch.stft calls _VF.stft, without centering or padding options.
    Hence, this function does not contain these two arguments.
    See torch.stft source code for more info.

    Args:
        g: Graph to write the ONNX representation into
        input: Input tensor for the transformation
        n_fft: FFT size
        hop_length: Size of the hop. Defaults to `floot(n_fft // 4)`
        win_length: Size of the analysis window. Defaults to `n_fft`
        window: Analysis window. Defaults to a window of all ones
        normalized: Whether to return a normalized STFT
        onesided: Whether to return only half (+1) of the results, given the
            symmetry of the STFT
        return_complex: Whether to return the complex value (Note: Must be
            `False` or `None`)

    Returns:
        op: Operator for torch.stft associated with STFT (ONNX)
    z-STFT does not currently support complex types)ÚmsgÚvaluez:STFT does not currently support the align_to_window optioné   r   r   r   é   Ú	Unsqueezer   r<   zcSTFT can only take inputs of 1 [signal] or 2 [batch, signal] dimensions. Current rank of signal is z, please reduce it.)ÚdimzuAnalysis window size must equal `win_length` or `n_fft`. Please, set `win_length` or `n_fft` to match `window` size (ú)ÚConcat)r#   zWThe analysis window can't be longer than the size of the FFT. Please set `win_length` (z) to `n_fft` (z
) or less.ÚCast)Úto_iÚSTFT)Ú
onesided_iÚ	Transpose)r   r<   rQ   é   )Úperm_iÚSqueezeÚDiv)r   ÚSymbolicValueErrorr+   r)   ÚtensorÚint64r   Ú_get_tensor_rankÚ_get_tensor_dim_sizerB   r,   r(   Úhstackr*   Úshaper   r%   r&   Ú	onnx_typeÚsqrtÚtyper   )r   r   r>   rE   rF   rG   rH   rI   rJ   rK   Úframe_step_valueÚframe_step_constÚframe_length_constÚsignalÚsignal_rankÚn_winÚwin_length_defaultr@   rA   Úleft_winÚ	right_winÚtorch_windowÚresultÚ	sqrt_nffts                           r1   r   r   d   sÀ  € ñH Ü×'Ñ'Ø?Àuô
ð 	
ð Ð"Ü×'Ñ'ØLØô
ð 	
ð &0Ð%;‘zÀÈ!ÁÐØ—t‘tØœEŸL™LÐ)9ÄÇÁÔMð ó Ðð Ÿ™ØœEŸL™L¨´e·k±kÔBð ó Ðð
 €FÜ!×2Ñ2°6Ó:€KØ�aÒà—‘ØØØ�D‰D�¤U§\¡\°1°#¼U¿[¹[Ô%IˆDÓJó
‰ð
 
Ð	 ¨a¢Ü×'Ñ'ð)Ø)4¨Ð5HðJàô
ð 	
ô ×0Ñ0°¸QÔ?€EØÐÙ+5™Z¸5ÐØÐ*Ò*ð 	
ðKØKPÈ'ÐQRðTð-
ó 	
Ð*ð �5Š=Ü-¨e°UÓ;‰KˆD�%Ø—t‘t˜J´·±¸DÓ0A�tÓBˆHØŸ™˜Z´·±¸UÓ1C˜ÓDˆIØ—T‘T˜( H¨f°iÈ�TÓJˆFô ×Ñ Ô'ÙØ˜EÒ!Ü×/Ñ/ð0Ø0:¨|¸>È%ÈÐPZð\àôð ô .¨e°ZÓ@‰KˆD�%Ü Ÿ<™<Ü—‘˜TÓ"¤E§J¡J¨zÓ$:¼E¿K¹KÈÓ<NÐOó‰Lô
 !Ÿ:™: eÓ,ˆLØ×!Ñ! !Ñ$¨Ò-Ð-Ð-Ø—‘�j¨,�Ó7ˆØ�T‰TØ�œ[×6Ñ6×AÑAÀ&ÓI×SÑSÓUð ó €Fð
 �T‰TØØØØØØ Ð(©H‘1¸!ð ó €Fð �T‰T�+˜vªlˆTÓ;€Fð �aÒØ—‘ØØØ�D‰D�¤U§\¡\°1°#¼U¿[¹[Ô%IˆDÓJó
ˆñ Ü—J‘JœuŸ|™|¨E¸¿¹»×9LÑ9LÓ9NÔOÓPˆ	Ø—‘�e˜V Q§T¡T¨*¸i TÓ%HÓIˆà€Mr2   )NNNFTFN)Ú__doc__Ú	functoolsÚcollections.abcr   Útypingr   r)   r   Ú
torch.onnxr   r   r   Útorch.onnx._internalr	   r
   Ú__all__ÚpartialÚonnx_symbolicÚ_onnx_symbolicÚ
parse_argsÚGraphContextÚValueÚintÚfloatÚboolr   r   rB   r   r=   r2   r1   ú<module>r…      sÿ  ðñó" Ý $Ý ã Ý ß ;Ñ ;ß 8ò 9€à"�×"Ñ" <×#=Ñ#=ÀRÔH€ñ Ð"Ó#Ø€×Ñ˜C  s¨C°°fÓ=ðØ×Ñðà�8‰8ðð ˜s‘mðð �H‰Hð	ð
 �(‰(ðð 
ðð òó >ó $ðñD Ð'Ó(ðOØ×ÑòOó )ðOò"ñ �ÓØ€×Ñ˜C  c¨3°°S¸#¸sÀCÓHð
 !%Ø $Ø!%ØØ#Ø%*Ø&*ñIØ×ÑðIà�8‰8ðIð ðIð ˜‘ð	Ið
 ˜‘ðIð �R—X‘XÑðIð ðIð �t‰nðIð ˜T‘NðIð ˜d‘^ðIð ‡X�XòIó Ió ñIr2   