U
    •Ê¹jG¡  ã                	   @   sº  d dl Z d dlZd dlm  mZ d dlmZmZm	Z	m
Z
mZmZmZ d dlmZmZmZ e jejdd�Zdd„ Zedƒe
 d	d
d¡ejdkejdœdd„ƒƒƒZedƒe
 d	d
d¡ejdlejdœdd„ƒƒƒZedƒe
 d	d	d
¡ejdmejdœdd„ƒƒƒZedƒe
 d	d	d
d
¡ejdnejdœdd„ƒƒƒZedƒejdoejdœdd„ƒƒZedƒejdpejdœdd„ƒƒZ edƒejdqejdœd d!„ƒƒZ!ed"ƒe
 d	d	d
d
¡ejdrejdœd#d$„ƒƒƒZ"ed%ƒe
 d	d
d
¡ejdsejdœd&d'„ƒƒƒZ#ed(ƒejdtejdœd)d*„ƒƒZ$ed+ƒe
 d	d	d	d
¡ejduejdœd,d-„ƒƒƒZ%ed.ƒe
 d	d	d	d
d
d
¡ejdvejdœd1d2„ƒƒƒZ&ed3ƒe
 d	d	d	d
d
¡ejdwejdœd4d5„ƒƒƒZ'ejd6d7„ ƒZ(ed8ed9d:ƒgd;�ejd<d=„ ƒƒZ)ed>ƒejejdœd?d@„ƒƒZ*edAƒe
 d	d
d
d
¡ejdxejdœdBdC„ƒƒƒZ+edDƒejejdœdEdF„ƒƒZ,edGƒejdyejdœdHdI„ƒƒZ-edJƒe
 d	d
d
d
¡ejejdœdKdL„ƒƒƒZ.edMƒejejdœdNdO„ƒƒZ/edPƒejejdœdQdR„ƒƒZ0edSƒejejdœdTdU„ƒƒZ1edVƒejejdœdWdX„ƒƒZ2edYƒejejdœdZd[„ƒƒZ3ed\ƒejejdœd]d^„ƒƒZ4ed_ƒejejdœd`da„ƒƒZ5edbƒejejdœdcdd„ƒƒZ6edeƒejejdœdfdg„ƒƒZ7edhƒejejdœdidj„ƒƒZ8dS )zé    N)Ú
_constantsÚ_type_utilsÚerrorsÚsymbolic_helperÚsymbolic_opset11Úsymbolic_opset9Úutils)Ú	_beartypeÚ	jit_utilsÚregistrationé   )Zopsetc                     s   ‡ ‡fdd„}|S )z_Returns a decorator that calls the decorated (higher-order) function with the given parameters.c                    s
   | ˆ ˆŽS ©N© )Úfn©ÚargsÚkwargsr   úZ/var/www/html/bwave/python/venv/lib/python3.8/site-packages/torch/onnx/symbolic_opset13.pyÚ_apply   s    z_apply_params.<locals>._applyr   )r   r   r   r   r   r   Ú_apply_params   s    r   zaten::softmaxÚvÚiÚnone©Úgc                 C   sP   | j d||d�}|rL| ¡  ¡ dkrLt |dd¡}| j d|t |¡ ¡ d�}|S )NZSoftmax©Úaxis_iúprim::Constantr   ÚdtypeÚCast©Zto_i©ÚopÚnodeÚkindr   Ú
_get_constr   ÚJitScalarTypeÚ	onnx_type)r   ÚinputÚdimr   ÚsoftmaxÚparsed_dtyper   r   r   r*   !   s      ÿr*   zaten::log_softmaxc                 C   sP   | j d||d�}|rL| ¡  ¡ dkrLt |dd¡}| j d|t |¡ ¡ d�}|S )NZ
LogSoftmaxr   r   r   r   r   r    r!   )r   r(   r)   r   Z	return_opr+   r   r   r   Úlog_softmax/   s      ÿr,   zaten::frobenius_normFc                 C   s^   t  |d¡}t  |¡s2t|ƒdkr2| jd|dd�S |  d||¡}t j| |||d�}|  d|¡S )NÚisr   ZReduceL2©Ú
keepdims_iÚMulZSqrt)r   Z_maybe_get_constZ	_is_valueÚlenr"   Ú_reducesum_helper)r   Úselfr)   ÚkeepdimZdim_valZsqrZsumsqrr   r   r   Úfrobenius_norm<   s    r5   zaten::splitc              
      s¶  t  ||¡sòˆ jd|||d�‰|d kr*ˆS t  |¡rÚtt  |¡ƒ|krÚ‡ fdd„t  |¡D ƒ}ˆ jdtjdgtjd�d�}ˆ jdtj|gtjd�d�}g }t	|ƒD ]2}	ˆ  d	|||	 ¡}
| 
ˆ  d
|||
|¡¡ |
}q¢|S ‡ ‡fdd„t	|ƒD ƒS t  | ¡ d¡}| ¡ dk�r$ˆ jd||||d�S t  |dd¡}t  ||¡}|d k�rh|d k	�r\|| }nt d|¡‚|g||  }|| }|�rŽ| 
|¡ ˆ jdt |¡d�}ˆ jd||||d�S )NÚSplitToSequencer   c                    s   g | ]}t  ˆ |d g¡‘qS )r   )r   Ú_unsqueeze_helper)Ú.0r   r   r   r   Ú
<listcomp>U   s   ÿzsplit.<locals>.<listcomp>ÚConstantr   ©r   ©Zvalue_tÚAddÚSlicec                    s2   g | ]*}ˆ   d ˆˆ j dtj|gtjd�d�¡‘qS )Ú
SequenceAtr:   r;   r<   ©r"   ÚtorchÚtensorÚlong)r8   r   ©r   Z	split_outr   r   r9   d   s   ûýÚvalueÚSplit©r   Úoutputsr   Ú
split_sizeú$Unknown dimension size not supported)r   Ú_is_split_staticr"   Z_is_packed_listr1   Z_unpack_listrA   rB   rC   ÚrangeÚappendÚ	_node_getr#   r)   r%   Ú_get_tensor_dim_sizer   ÚSymbolicValueError)r   r3   Úsplit_size_or_sizesr)   Ú_outputsÚsplit_sizesÚstartÚaxisÚresr   ÚendÚ	split_valrI   ÚsizeÚsplitsÚleftoverr   rD   r   ÚsplitH   sX    ÿþ
þ  ÿú	


 ÿ
r\   zaten::split_with_sizesc                 C   s   t | ||||ƒS r   ©r\   ©r   r3   rS   r)   rR   r   r   r   Úsplit_with_sizes‚   s    r_   zaten::unsafe_splitc                 C   s   t | ||||ƒS r   r]   )r   r3   rQ   r)   rR   r   r   r   Úunsafe_splitˆ   s    r`   zaten::unsafe_split_with_sizesc                 C   s   t | ||||ƒS r   )r_   r^   r   r   r   Úunsafe_split_with_sizes�   s    ra   zaten::tensor_splitc           "      C   s&  | j dtj|tjd�d�}t | |d¡}| j dtjdtjd�d�}t ||¡�r¾t | 	¡ d¡}| 
¡ dk�r| j dtjdgtjd�d�}g }	|d k	sšt‚t|d ƒD ]J}
| j d|| j dtj|
gtjd�d�dd�}|	 |   d	||||¡¡ |}q¦t | ||¡}|	 |   d	||||¡¡ |	S t |d
d¡}t ||¡}|d k�r`|d k	�rT|| }nt d|¡‚|| }|| }||d g }|| |g }| j dtj|| tjd�d�}| j d||||d�S t |¡�rxt |¡dk�rxt | || j dt d¡d�¡}t | |d¡}| j d|tjjd�}| j dtjdgtjd�d�}| j d||dd�}|   d¡}tj| d|||ddd�\}\}}|j}t |¡}t |¡}t |¡}|j d||dd�}|j d||  d||¡dd�}|  d	||||¡}|  d||¡}|  d|¡}t ||¡ t ||¡ | 	¡  ¡ }| j d|| j dtjdtjd�d�dd�}t | |d¡}t | ||¡}|   d	||||¡}|   d||¡S t | ||¡} |   d| |¡}|   d||¡}!|   d| |¡}|   d|!|¡}|   d||   dt | |d¡|¡¡}| j d||dd�}|d k�r| j d|||d�S | j d||||d�S d S )Nr:   r;   r<   r   é   rE   ZGatherr   r>   r   Úindices_or_sectionsrJ   rF   rG   r   r    ÚConcatÚSequenceEmptyÚLoop)rH   Ún_blocksr=   ÚSequenceInsertÚIdentityéÿÿÿÿÚDivÚModÚTileÚSubr6   )r"   rA   rB   rC   Úopset11Ú	unsqueezer   rK   rN   r#   r)   ÚAssertionErrorrL   rM   Ú_size_helperr%   rO   r   rP   Z
_is_tensorÚ_get_tensor_rankÚ_C_onnxÚTensorProtoDataTypeÚBOOLr
   Úadd_op_with_blocksÚblockr   Ú_add_input_to_blockÚ_add_output_to_blockÚoutput)"r   r3   rc   r)   rR   rU   Zconst_1rX   rT   rV   r   rW   rI   rY   Zmin_split_sizeZnum_splits_one_extrarZ   r[   Úloop_lenÚloop_conditionZ	padding_0Úfinal_splitsÚloopÚloop_contextÚ_Ú
loop_blockÚblock_input_iterÚcondÚsliceÚcond_outÚloop_outZ
last_sliceZdim_sizeZmin_split_size_plus_1r   r   r   Útensor_split˜   sð    ü  ÿ


 ÿ ÿÿþ  ÿ
      ÿ


   ÿüüýýý

rˆ   zaten::unbindc              	      sŠ   |d kr2ˆj d|ˆj dtjdtjd�d�ˆ dd�S ˆj dt dg| ¡d�}ˆj d||ˆ |d	�}|dkrn|gn|}‡ ‡fd
d„|D ƒ}|S )Nr6   r:   rb   r;   r<   r   ©r   r/   rF   rG   c                    s,   g | ]$}ˆ  d |ˆj dt ˆ g¡d�¡‘qS )ZSqueezer:   r<   )r"   rA   rB   )r8   Úout©r)   r   r   r   r9   3  s   ÿzunbind.<locals>.<listcomp>r@   )r   r3   r)   rR   rZ   rH   Zsqueezed_outputsr   r‹   r   Úunbind#  s    ûþrŒ   zaten::nonzero_numpyc                 C   s   t | t | |¡d|d�S )Nrb   )rR   )rŒ   Úopset9Únonzero)r   r(   rR   r   r   r   Únonzero_numpy:  s    r�   zaten::wherec              	   C   sb   t  |¡s| jd|tjjd�}|d krRt | |¡}t  | || jdt	 
d¡d�|¡S |  d|||¡S )Nr   r    r:   rb   r<   ZWhere)r   Z_is_boolr"   rt   ru   rv   r�   rŽ   Z_unbind_helperrA   rB   )r   Ú	conditionr3   ÚotherrR   r   r   r   ÚwhereA  s    
   ÿr’   z&aten::fake_quantize_per_channel_affineé€ÿÿÿé   c                 C   s¸   ||fdkr&t  d|› d|› d�|¡‚|dkrD| jd|tjjd�}n| jd|tjjd�}| jd||||d	�}||fd
kr¤|  d|t | ¡| jdt	j
dt	jd�d�¡}| jd||||d	�S )N©)r   éÿ   )r“   r”   ©r   r”   úVFor (quant_min, quant_max), ONNX allows only (0, 127), (0, 255) and (-128, 127). Got (ú, ú)r   r   r    ÚQuantizeLinearr   r—   ÚClipr:   r”   r;   r<   ÚDequantizeLinear)r   rP   r"   rt   ru   ÚUINT8ÚINT8r�   ÚunusedrA   rB   Úuint8)r   ÚinputsÚscaleÚ
zero_pointrU   Ú	quant_minÚ	quant_maxÚ	quantizedr   r   r   Ú fake_quantize_per_channel_affineP  s"    ýür¨   z%aten::fake_quantize_per_tensor_affinec                 C   sÞ   ||fdkr&t  d|› d|› d�|¡‚|dkrD| jd|tjjd�}n| jd|tjjd�}tj 	|tjj
¡tjjkr†| jd|tjjd�}|  d|||¡}||fd	krÎ|  d
|t | ¡| jdtjdtjd�d�¡}|  d|||¡S )Nr•   r˜   r™   rš   r   r   r    r›   r—   rœ   r:   r”   r;   r<   r�   )r   rP   r"   rt   ru   rž   rŸ   r   r&   Ú
from_valueZ	UNDEFINEDÚFLOATr�   r    rA   rB   r¡   )r   r¢   r£   r¤   r¥   r¦   r§   r   r   r   Úfake_quantize_per_tensor_affinet  s,    ýÿÿür«   c                    s   t jd‡ fdd„	ƒ}|S )Nc                    sF   t  | |¡}|d kr"t | |ˆ ¡S t |dd¡}| jˆ |||d�S d S )Nr   r4   r.   )r�   Z_maybe_cast_reduce_op_inputr   Z_handle_reduce_dim_noner%   r"   )r   r3   r)   r4   ©Úonnx_op_namer   r   Úsymbolic�  s
    z%_reduce_op_symbolic.<locals>.symbolic)NN)r	   Úbeartype)r­   r®   r   r¬   r   Ú_reduce_op_symbolic›  s    	r°   z	aten::sumZ	ReduceSumÚsum)Zdecoratec                    s&   t | ƒ‰tjtj‡ ‡fdd„ƒƒ}|S )Nc                    sL   t  dd¡tj‡ ‡fdd„ƒƒ}t  dddd¡tj‡ ‡fdd„ƒƒ}||fS )Nr   r   c                    sž   d }|  ¡  ¡ dkrBt |dd¡}t |¡ ¡ }| jd||d�}n|  ¡  ¡ dkr`t ˆ d|¡S ˆ| |ƒ}|d k	rštj 	|¡ ¡ }||krš| jd||d�}|S ©Nzonnx::Constantr   r   r   r    r   ©
r#   r$   r   r%   r   r&   r'   r"   Ú_unimplementedr©   )r   r3   r   Ú
dtype_onnxÚresultÚresult_dtype_onnx©Únamer®   r   r   Úreduce_nodimµ  s    
ÿz8_reduce_with_dtype.<locals>.reduce.<locals>.reduce_nodimr   c                    s¢   d }|  ¡  ¡ dkrBt |dd¡}t |¡ ¡ }| jd||d�}n|  ¡  ¡ dkr`t ˆ d|¡S ˆ| |||ƒ}|d k	ržtj 	|¡ ¡ }||krž| jd||d�}|S r²   r³   )r   r3   r)   r4   r   rµ   r¶   r·   r¸   r   r   Ú
reduce_dimÈ  s    ÿz6_reduce_with_dtype.<locals>.reduce.<locals>.reduce_dim)r   Ú
parse_argsr	   r¯   )r   r   r   rº   r»   r¸   r   r   Úreduce²  s    
z"_reduce_with_dtype.<locals>.reduce)r°   r�   Zoverload_by_arg_countr	   r¯   )Zonnx_opr¹   r½   r   r¸   r   Ú_reduce_with_dtypeª  s
    )r¾   zaten::unflattenc              
   C   sP  t  |¡}|d krt  dd¡S | jdtj|gtjd�d�}|  d||¡}|  d||¡}|  d|¡}| jdtjd	gtjd�d�}|  d
|| jdtjdgtjd�d�¡}|  d|||¡}|  d|| jdtjdgtjd�d�¡}	|  d
|	| jdtjdgtjd�d�¡}
| jdtjtjgtjd�d�}|  d||
|¡}| jd|||d	d�}t  	| ||¡S )Nr)   zfONNX and PyTorch use different strategies to split the input. Input rank must be known at export time.r:   r;   r<   r=   rl   ÚShaper   ÚReshaperb   r>   rd   r   )
r   rs   r´   r"   rA   rB   Úint64r   Z	INT64_MAXÚ_reshape_helper)r   r(   r)   Zunflattened_sizeZ	input_dimÚ
input_sizeZhead_start_idxZhead_end_idxZhead_part_rankZdim_plus_oneZtail_start_idxZtail_end_idxZtail_part_rankZfinal_shaper   r   r   Ú	unflattenã  sP    
þ  ÿ  ÿý ÿ    ÿrÄ   zaten::unsafe_chunkc           	   	   C   s´   |d kr2| j d|| j dtjdtjd�d�|dd�S t ||¡}|d krRt dd	¡S || d | }|g||  }|| }|r†| |¡ | j dtj|tjd�d�}| j d
||||d�S )Nr6   r:   rb   r;   r<   r   r‰   Úunsafe_chunkzunknown dimension sizerF   rG   )r"   rA   rB   rC   r   rO   r´   rM   )	r   r3   Úchunksr)   rR   rY   rI   rZ   r[   r   r   r   rÅ     s$    û
rÅ   z
aten::tilec                 C   sÈ  |   d|¡}|   d|¡}|   d|¡}|   d||¡}| j dt dg¡d�}|   d||¡}tj| d|d	d
d�\}	\}
}}|
j dt d
g¡d�}|
  d||¡}|
  d||¡}|
j d||dd�}t |
j|¡ |  d|¡}t |j|¡ |	 	¡  
¡ }|   d||¡}tj| d|d	d
d�\}\}}}|j dt d
g¡d�}|  d|  d|¡|¡}|  d||¡}|j d||dd�}|  d||¡}t |j|¡ |  d|¡}t |j|¡ | 	¡  
¡ }| j d|tjjd�}|   d||¡S )Nr¿   ÚSizern   r:   r   r<   ZGreaterÚIfé   rb   )rg   rH   rÀ   ÚExpandrd   r   ri   ZLessZAbsr   r    rm   )r"   rA   rB   r
   rw   Ú
LongTensorr   rz   rx   r#   r{   rt   ru   ZINT64)r   r3   ZdimsZ
self_shapeZ	self_rankZ	dims_rankÚdiffZ
const_zeroZdims_shorter_than_self_shapeZif_op_greaterZif_context_greaterZelse_context_greaterr�   Z	const_oneZdiff_1d_greaterZexapnd_ones_greaterZdims_Zidentity_dimZ
dims_finalZdims_longer_than_self_shapeZ
if_op_lessZif_context_lessZelse_context_lessZdiff_1d_lessZexapnd_ones_lessZself_final_shapeZself_Zidentity_selfZ
self_finalr   r   r   Útile,  sr        ÿü    ÿü
ý   ÿrÍ   zaten::repeat_interleavec           "   	   C   s¬  |}|}t  |¡rDt  | || jdt dg¡d�¡}tjdtjd�}n
t  |¡}t  |¡}t  	|¡}t  	|¡}	|d kr€t
 d|¡‚|d kr”t
 d|¡‚|	d kr¨t
 d|¡‚|dk r¼|t|	ƒ7 }|	 ¡ }
t|	ƒD ] \}}|d krÌd	\|
|< |	|< qÌ|dk�s|d
k�r |d d
k�r t  | |||¡S |d
k�o4|d d k}|
| dk�sJ|�rÆt  | ||¡}t | |d¡}|�rÖt  | || jdt dg¡d�¡}|  d|| jdt d
g¡d�¡}t| ||  d||¡|ƒ}nt | |||¡S | jd|  d|¡tjd
gtjd�d�}t| ||dƒ}t| |||ƒ}d\|
|< |	|< | jdt d
¡d�}| jd|tjjd�}|}|  d¡}tj| d|||d
d�\}\}}|j}t  |¡}t  |¡}t  |¡}| d||¡}| d||¡}t |||d
 ¡}|jdt |	d |d
 … ¡d�||jdt |	|d
 d … ¡d�g}|jd|žddiŽ}t !|||d ¡}t  ||| jdt |
¡d�¡}| d||¡}|jd|tjjd�} t "|| ¡ t "||¡ | #¡  $¡ }!| jd|!|d�}!|!S )Nr:   rj   r<   r   r;   zGUnsupported: ONNX export of repeat_interleave for unknown repeats rank.zGUnsupported: ONNX export of repeat_interleave for unknown repeats size.zEUnsupported: ONNX export of repeat_interleave for unknown input size.)r   rj   rb   ÚEqualrÊ   ZConstantOfShaper¿   )rj   rb   r   r    re   rf   ©rg   r?   rd   r   rh   ZConcatFromSequencer   )rd   )%r   Z_is_nonerÂ   r"   rA   rB   rÁ   Z_maybe_get_scalarrs   Z_get_tensor_sizesr   rP   r1   ÚcopyÚ	enumerateZ-_repeat_interleave_single_value_repeat_helperrr   ro   rp   rË   r’   r�   Úrepeat_interleaverC   r\   rt   ru   rv   r
   rw   rx   r   ry   Úexpandrz   r#   r{   )"r   r3   Zrepeatsr)   Zoutput_sizer(   Z	final_dimZrepeats_dimZrepeats_sizesZinput_sizesZoutput_sizesÚidxrÃ   Zcond_dynamic_repeatsZrepsZ
repeat_dimZrepeat_condZ	reps_likeZr_splitsZi_splitsr}   r|   r~   r   r€   r�   r‚   rƒ   r„   Zr_splitZi_splitZr_concatr†   r‡   r   r   r   rÒ   d  sÖ    
  ÿ



þþþ"   ÿ  ÿ  ÿ
ý
     ÿ


ý  ÿ  ÿrÒ   zaten::diagonalc                    sð  t jˆ |ˆ jdt |g¡d�d�}t jˆ |ˆ jdt |g¡d�d�}ˆ jd||dd�}t  ˆ |d d d ¡}ˆ jd||d�}t |¡}	|	d k	rÄtt	|	ƒƒ}
|
 
|¡ |
 
|¡ ˆ jd	||
||g d
�}nt dd¡S ˆ  d||¡‰tjˆ ˆdgdd�‰ˆ jdt |g¡d�}|dk�rLˆ  dˆ  d|ˆ  d||¡¡ˆ jdt dg¡d�¡}d}n4ˆ  dˆ  dˆ  d||¡|¡ˆ jdt dg¡d�¡}ˆ jd|dd�}t  ˆ |dd d ¡}ˆ  d|ˆ jdt dg¡d�¡}ˆ  d|ˆ jdt t|ƒd g¡d�¡}‡ ‡fdd„tt	|	ƒƒd d… D ƒ}| |¡ ˆ jd$|žddiŽ}t  ˆ |dd d ¡}ˆ  dˆ  d|ˆ jdtjdtjd�d�¡¡}tjˆ d|dd �\}\}}}| d||¡}t |||	d g¡}|jd!ˆ||	d d"�}t  ||d#d d ¡}t |j|¡ t |j|¡ |S )%Nr:   r<   ©r)   rd   r   r   ZEyeLike)Zk_iZ	Transpose)Zperm_iÚdiagonalzunknown input rankr0   rj   )Zaxes_ir/   ZMaxZMinrn   r=   é   ZCumSumrb   c              
      s.   g | ]&}t jˆ ˆˆ jd t |g¡d�d�‘qS )r:   r<   rÕ   )r�   rY   r"   rA   rË   )r8   rU   ©r   r¶   r   r   r9   ;  s   ÿzdiagonal.<locals>.<listcomp>éþÿÿÿr   ÚNotrÎ   r;   rÈ   rÉ   rÏ   ZGatherND)Zbatch_dims_ié   )rd   )r�   rY   r"   rA   rË   Zzerosr   rs   ÚlistrL   Úremover´   r2   ZonesÚabsrM   rB   rÁ   r
   rw   r7   r   rz   rx   )r   r3   ÚoffsetZdim1Zdim2Z	dim1_sizeZ	dim2_sizeZ
mask_shapeÚmaskZrankZaxesZ	offset_opZ	diag_sizeZselect_window_ones_fillZselect_windowZgather_shapeZgather_indicesZoverrun_condZif_opZ
if_contextZelse_contextr�   Zgather_indices_if_blockZfinal_non_overrunZfinal_overrunr   rØ   r   rÖ   ò  s¦      ÿ  ÿ



ýý	ýýþ
ýþ	   ÿ  ÿ   ÿrÖ   zquantized::linearc                 C   sn   t  | |¡\}}}}t  | |¡\}	}
}}t  | |||
|¡}t  | |¡\}}}}t | ||	|¡}t  | |||¡S r   )r   Údequantize_helperÚrequantize_bias_helperr�   ZlinearÚquantize_helper)r   Úq_inputÚq_weightÚbiasÚop_scaleÚop_zero_pointr(   Úinput_scaler�   ÚweightÚweight_scalerU   Úq_biasr{   r   r   r   Úquantized_linearj  s        ÿrí   zquantized::conv1d_reluc
              
   C   s‚   t  | |¡\}
}}}t  | |¡\}}}}t  | ||||¡}t  | |¡\}}}}t | |
||||||¡}t | |¡}t  | |||	¡S r   )r   rá   râ   r�   Úconv1dÚrelurã   ©r   rä   rå   ræ   ÚstrideÚpaddingÚdilationÚgroupsrç   rè   r(   ré   r�   rê   rë   rU   rì   r{   r   r   r   Úquantized_conv1d_relu{  s        ÿrõ   zquantized::conv2d_reluc
              
   C   s‚   t  | |¡\}
}}}t  | |¡\}}}}t  | ||||¡}t  | |¡\}}}}t | |
||||||¡}t | |¡}t  | |||	¡S r   )r   rá   râ   r�   Úconv2drï   rã   rð   r   r   r   Úquantized_conv2d_relu–  s        ÿr÷   zquantized::conv3d_reluc
              
   C   s‚   t  | |¡\}
}}}t  | |¡\}}}}t  | ||||¡}t  | |¡\}}}}t | |
||||||¡}t | |¡}t  | |||	¡S r   )r   rá   râ   r�   Úconv3drï   rã   rð   r   r   r   Úquantized_conv3d_relu±  s        ÿrù   zquantized::conv1dc
              
   C   sv   t  | |¡\}
}}}t  | |¡\}}}}t  | ||||¡}t  | |¡\}}}}t | |
||||||¡}t  | |||	¡S r   )r   rá   râ   r�   rî   rã   rð   r   r   r   Úquantized_conv1dÌ  s        ÿrú   zquantized::conv2dc
              
   C   sv   t  | |¡\}
}}}t  | |¡\}}}}t  | ||||¡}t  | |¡\}}}}t | |
||||||¡}t  | |||	¡S r   )r   rá   râ   r�   rö   rã   rð   r   r   r   Úquantized_conv2dæ  s        ÿrû   zquantized::conv3dc
              
   C   sv   t  | |¡\}
}}}t  | |¡\}}}}t  | ||||¡}t  | |¡\}}}}t | |
||||||¡}t  | |||	¡S r   )r   rá   râ   r�   rø   rã   rð   r   r   r   Úquantized_conv3d   s        ÿrü   zquantized::conv_transpose1dc                 C   sx   t  | |¡\}}}}t  | |¡\}}}}t  | ||||¡}t  | |¡\}}}}t | ||||||||¡	}t  | ||	|
¡S r   ©r   rá   râ   r�   Zconv_transpose2drã   ©r   rä   rå   ræ   rñ   rò   Zoutput_paddingró   rô   rç   rè   r(   ré   r�   rê   rë   rU   rì   r{   r   r   r   Úquantized_conv_transpose1d  s,        ÿ        ÿrÿ   zquantized::conv_transpose2dc                 C   sx   t  | |¡\}}}}t  | |¡\}}}}t  | ||||¡}t  | |¡\}}}}t | ||||||||¡	}t  | ||	|
¡S r   rý   rþ   r   r   r   Úquantized_conv_transpose2d7  s,        ÿ        ÿr   zquantized::conv_transpose3dc                 C   sx   t  | |¡\}}}}t  | |¡\}}}}t  | ||||¡}t  | |¡\}}}}t | ||||||||¡	}t  | ||	|
¡S r   )r   rá   râ   r�   Zconv_transpose3drã   rþ   r   r   r   Úquantized_conv_transpose3dT  s,        ÿ        ÿr  )N)N)NF)N)N)N)N)N)r   N)N)NNN)r“   r”   )r“   r”   )N)NN)9Ú	functoolsrA   Ztorch._C._onnxZ_CZ_onnxrt   Z
torch.onnxr   r   r   r   r   ro   r   r�   r   Ztorch.onnx._internalr	   r
   r   ÚpartialZonnx_symbolicZ_onnx_symbolicr   r¼   r¯   ZGraphContextr*   r,   r5   r\   r_   r`   ra   rˆ   rŒ   r�   r’   r¨   r«   r°   r¾   rÄ   rÅ   rÍ   rÒ   rÖ   rí   rõ   r÷   rù   rú   rû   rü   rÿ   r   r  r   r   r   r   Ú<module>   s  $		
	7 ÿÿ ÿÿ ÿÿ 	  ùÿ!  úÿ$

þ4*6   ÿÿ uÿÿÿÿÿÿÿÿÿÿ