
    h,             
          S SK r S SKrS SKrS SKrS SKrS SKJrJrJr  S SK	J
r
  \
R                  " \R                  5      \
R                  " S5      :  d   e\R                  " \5      rSS jrS rS rS rS	 rS
 rS rS rS rS rSS jrS rS rS r " S S5      rS r\S:X  GaU  \" 5       r \RC                  S\ RD                  -   5        \ RF                  (       a  \RC                  S\ RF                  -   5        \RC                  S5        \RI                  \RJ                  " \ RD                  5      \ RL                  \ RN                  \ RP                  \ RR                  5      r*\ RF                  (       a  \*(       a  \ RV                  (       a?  \RX                  " \*\ RF                  S\ RZ                  \ R\                  \ R^                  SS9  O\R`                  " \*\ RF                  5        \RC                  S5        gggg)    N)helpernumpy_helpershape_inference)versionz1.8.0c                     U R                    Vs/ s H  o3R                  U:X  d  M  UPM     nnU(       a  [        R                  " US   5      $ U$ s  snf Nr   )	attributenamer   get_attribute_value)node	attr_namedefault_valueattrfounds        `/var/www/fran/franai/venv/lib/python3.13/site-packages/onnxruntime/tools/symbolic_shape_infer.pyget_attributer      sG    "nnGnd		Y0FTnEG))%(33 Hs
   AAc                 |    [        U R                  S5      5      [        L a  [        X R                  S5      5      $ S $ )Nvalue)type
WhichOneofstrgetattrdims    r   get_dim_from_protor      s2    489P4QUX4X73w/0b^bb    c                 >    U R                  S5      nUS;   d   eUS:H  $ )Nr   )tensor_typesequence_typer   )r   )
type_protocls_types     r   is_sequencer"      s,    $$W-H7777&&r   c                     [        U 5      (       a   eU R                  R                  S5      (       a:  U R                  R                  R                   Vs/ s H  n[        U5      PM     sn$ g s  snf )Nshape)r"   r   HasFieldr$   r   r   )r    ds     r   get_shape_from_type_protor'   $   sb    :&&&&&&w///9/E/E/K/K/O/OP/O!"1%/OPP Qs   A.c                     [        U 5      (       a*  U R                  R                  R                  R                  $ U R                  R                  $ N)r"   r   	elem_typer   )r    s    r   get_elem_type_from_type_protor+   ,   s=    :''11==GGG%%///r   c                 X   U R                   R                  S5      nUc  g [        U R                   5      (       a]  U R                   R                  R                  R                  S5      S:X  a)  [        U R                   R                  R                  5      $ g [        U R                   5      $ )Nr   r   )r   r   r"   r   r*   r'   )vir!   s     r   get_shape_from_value_infor.   3   s~    ww!!'*H27777  **55g>-O,RWW-B-B-L-LMM(11r   c                 <    [         R                  " 5       nXl        U$ r)   )onnxValueInfoProtor
   )r
   r-   s     r   make_named_value_infor2   @   s    				BGIr   c                     U  Vs/ s H-  oc  S O%[        U5      (       a  [        U5      O
[        U5      PM/     sn$ s  snf r)   )
is_literalintr   )sympy_shapeis     r   get_shape_from_sympy_shaper8   F   s5    R]^R]QIDjmmCFQHR]^^^s   4<c                     [        U 5      [        [        R                  [        R                  [
        R                  4;   =(       d    [        U S5      =(       a    U R                  $ )N	is_number)	r   r5   npint64int32sympyIntegerhasattrr:   r   s    r   r4   r4   J   s?    9bhh%--@@qWSR]E^Epcfcpcpqr   c                 4    X:  a  X* :  d   eU S:  a  U $ X-   $ r    )axisranks     r   handle_negative_axisrE   N   s&    ;45=((194-$+-r   c                     U=(       d    / SQn[        U5      [        :w  a  U/nU R                   H!  nUR                  U;   d  M  UR                  s  $    g )N) r0   zai.onnx)r   listopset_importdomainr   )mprJ   opsets      r   	get_opsetrM   S   sI    ..FF|t<<6!==  ! r   c                     [        U 5      [        L a  [        U 5      S:X  d   eU S   $ [        U 5      [        R                  L a  U R                  5       $ U $ N   r   )r   rH   lenr;   ndarrayitemxs    r   	as_scalarrV   ^   sF    Aw$1v{{t	aBJJ	vvxr   c                     [        U 5      [        L a  U $ [        U 5      [        R                  L a  [        U 5      $ U(       a  U c  g U /$ r)   )r   rH   r;   rR   )rU   	keep_nones     r   as_listrY   h   s<    Aw$	aBJJ	Aw	qys
r   c                 x    [        U 5      [        L a%  [        R                  " S5      nU  H  nX-  nM	     U$ U nU$ NrP   )r   rH   r>   r?   )rU   r   vs      r   sympy_reduce_productr]   s   s?    Aw$a AIE  L Lr   c                   :   \ rS rSrSS jrSS jrSS jrS rS rS r	S r
S	 rS
 rS rS rS rS rS rSS jrSS jrS rS rS rS rSS jrSS jrSS jrSS jrSS jrS rS rS rS r S  r!S! r"S" r#S# r$S$ r%S% r&S& r'S' r(S( r)S) r*S* r+S+ r,S, r-S- r.S. r/S/ r0S0 r1S1 r2S2 r3S3 r4S4 r5S5 r6S6 r7S7 r8S8 r9S9 r:S: r;S; r<S< r=S= r>S> r?S? r@S@ rASA rBSB rCSC rDSD rESE rFSF rGSG rHSH rISI rJSJ rKSK rLSL rMSM rNSN rOSO rPSP rQSQ rRSR rSSS rTST rUSU rVSV rWSW rXSX rYSY rZSZ r[S[ r\S\ r]S] r^S^ r_S_ r`S` raSa rbSb rcSc rdSd reSe rfSf rgSg rhSh riSi rjSj rkSk rlSl rmSm rnSn roSo rpSp rqSq rrSr rsSs rtSt ruSu rvSv rwSw rxSx rySSy jrzSz r{S{ r|SS| jr}S} r~\SS~ j5       rSrg)SymbolicShapeInference}   c                 @   0 SU R                   _SU R                  _SU R                  _SU R                  _SU R                  _SU R
                  _SU R                  _SU R                  _S	U R                  _S
U R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                   _SU R                  _SU R                  _0 SU R                   _SU R                   _SU R                  _SU R                   _SU R"                  _SU R                  _SU R$                  _SU R&                  _SU R(                  _SU R*                  _SU R                  _SU R                   _SU R                  _SU R                  _S U R                   _S!U R                  _S"U R                   _E0 S#U R,                  _S$U R.                  _S%U R0                  _S&U R2                  _S'U R4                  _S(U R                  _S)U R6                  _S*U R8                  _S+U R:                  _S,U R<                  _S-U R>                  _S.U R                  _S/U R@                  _S0U RB                  _S1U RD                  _S2U RF                  _S3U RH                  _E0 S4U RJ                  _S5U RL                  _S6U RN                  _S7U RN                  _S8U RN                  _S9U RP                  _S:U RR                  _S;U RT                  _S<U R                   _S=U RV                  _S>U RX                  _S?U RZ                  _S@U R\                  _SAU R                   _SBU R^                  _SCU R                   _SDU R`                  _E0 SEU Rb                  _SFU Rd                  _SGU Rf                  _SHU Rh                  _SIU Rj                  _SJU Rl                  _SKU Rn                  _SLU Rp                  _SMU Rr                  _SNU R                  _SOU Rt                  _SPU Rv                  _SQU Rx                  _SRU Rz                  _SSU Rz                  _STU R|                  _SUU R~                  _E0 SVU R                  _SWU R                  _SXU R                  _SYU R                  _SZU R                  _S[U R                  _S\U R                  _S]U R                  _S^U R                  _S_U R                  _S`U R                  _SaU Rp                  _SbU R                  _ScU R                  _SdU R                  _SeU R                  _SfU R~                  _EU R                  U R                  U R                  U R                  U R                  Sg.EU lR        0 ShU R                  _SiU R                  _SjU R                  _SkU R                  _SlU R                  _SmU R                  _SnU R                  _SoU R                  _SpU R                  _SqU R                  _SrU R                  _SsU RZ                  _StU R                  _SuU R                  _SvU R                  _SwU R                  _SxU R                  _U l\        SyU l]        0 U l^        0 U l_        0 U l`        X la        X0lb        X@lc        Xld        SzU le        XPlf        g ){NAdd	AllReduceArrayFeatureExtractorAveragePoolBatchNormalizationCastCategoryMapperCompressConcatConcatFromSequenceConstantConstantOfShapeConvCumSumDivEinsumExpandEqualFloorGatherGatherElementsGatherNDIdentityIfLoopMatMulMatMulInteger16MaxPoolMaxMemcpyFromHostMemcpyToHostMinMoEMulNonMaxSuppressionNonZeroOneHotPadRange
Reciprocal	ReduceSum
ReduceMean
ReduceProdReshapeResizeRoundScanScatterElements
SequenceAtSequenceInsertShapeSizeSliceSoftmaxCrossEntropyLossSoftmaxCrossEntropyLossInternal!NegativeLogLikelihoodLossInternalSplitSplitToSequenceSqueezeSubTileTopK	Transpose	UnsqueezeWhereZipMapNeg	AttentionBiasAddBiasGeluBiasSplitGeluDecoderMaskedMultiHeadAttentionDequantizeLinearDynamicTimeWarpingEmbedLayerNormalizationFastGeluGatedRelativePositionBiasGatherBlockQuantizedGeluGemmFastGelu
GemmFloat8	GroupNormGroupNormalizationGroupQueryAttentionLayerNormalizationLongformerAttentionMatMulNBitsMultiHeadAttentionNhwcConvPackedAttentionPackedMultiHeadAttentionPagedAttentionPythonOp
QLinearAdd
QLinearMulQuantizeLinear	QuickGeluRelativePositionBiasRemovePaddingRestorePaddingRotaryEmbeddingSimplifiedLayerNormalization)SkipGroupNormSkipLayerNormalization SkipSimplifiedLayerNormalizationSparseAttentionUnfoldTensor	embedding
bitwise_ordiagonalmax_pool2d_with_indicesmaxminmultinomialunfoldargmax
avg_pool2d_adaptive_avg_pool2dnumpy_Tnative_group_normupsample_nearest1dupsample_nearest2dupsample_nearest3dupsample_bicubic2dTr   )g_infer_symbolic_compute_ops_pass_on_shape_and_type_infer_ArrayFeatureExtractor_infer_Pool_infer_BatchNormalization_infer_Cast_infer_CategoryMapper_infer_Compress_infer_Concat_infer_ConcatFromSequence_infer_Constant_infer_ConstantOfShape_infer_Conv_infer_Einsum_infer_Expand_infer_Gather_infer_GatherElements_infer_GatherND	_infer_If_infer_Loop_infer_MatMul_infer_MatMulInteger_infer_NonMaxSuppression_infer_NonZero_infer_OneHot
_infer_Pad_infer_Range_infer_ReduceSum_infer_ReduceMean_infer_ReduceProd_infer_Reshape_infer_Resize_infer_Scan_infer_ScatterElements_infer_SequenceAt_infer_SequenceInsert_infer_Shape_infer_Size_infer_Slice_infer_SoftmaxCrossEntropyLoss_infer_Split_infer_SplitToSequence_infer_Squeeze_infer_Tile_infer_TopK_infer_Transpose_infer_Unsqueeze_infer_ZipMap_infer_Attention_infer_BiasAdd_infer_BiasGelu_infer_BiasSplitGelu&_infer_DecoderMaskedMultiHeadAttention_infer_DequantizeLinear_infer_DynamicTimeWarping_infer_EmbedLayerNormalization_infer_FastGelu _infer_GatedRelativePositionBias_infer_Gelu_infer_GemmFastGelu_infer_GemmFloat8_infer_GroupNorm_infer_GroupQueryAttention_infer_LayerNormalization_infer_LongformerAttention_infer_MatMulNBits_infer_MultiHeadAttention_infer_NhwcConv_infer_PackedAttention_infer_PackedMultiHeadAttention_infer_PagedAttention_infer_PythonOp_infer_QLinearBinary_infer_QuantizeLinear_infer_RelativePositionBias_infer_RemovePadding_infer_RestorePadding_infer_RotaryEmbedding_infer_SkipGroupNorm_infer_SkipLayerNormalization_infer_SparseAttention_infer_UnfoldTensordispatcher__infer_aten_bitwise_or_infer_aten_diagonal_infer_aten_pool2d_infer_aten_minmax_infer_aten_multinomial_infer_aten_unfold_infer_aten_argmax_infer_aten_group_norm_infer_aten_upsampleaten_op_dispatcher_run_suggested_merge_symbolic_dims_input_symbols_auto_merge_guess_output_rank_verbose_int_max_subgraph_id_prefix_)selfint_max
auto_mergeguess_output_rankverboseprefixs         r   __init__SymbolicShapeInference.__init__~   s	   m
433m
55m
 $T%F%Fm
 4++	m

 !$"@"@m
 D$$m
 d88m
 ,,m
 d((m
 !$"@"@m
 ,,m
 t::m
 D$$m
 d22m
 433m
  d((!m
" d((#m
$ T55%m
& T55'm
( d(()m
* d88+m
, ,,-m
. 44/m
0 $..1m
2 D$$3m
4 d((5m
6 t887m
8 t''9m
: 433;m
< d::=m
> D88?m
@ 433Am
B 4//Cm
D 433Em
F  !>!>Gm
H t**Im
J d((Km
L 4??Mm
N T&&Om
P $66Qm
R ..Sm
T $00Um
V $00Wm
X t**Ym
Z d(([m
\ T11]m
^ D$$_m
` t::am
b $00cm
d d88em
f T&&gm
h D$$im
j T&&km
l &t'J'Jmm
n .t/R/Rom
p 01T1Tqm
r T&&sm
t t::um
v t**wm
x 433ym
z D$${m
| D$$}m
~ ..m
@ ..Am
B T55Cm
D d((Em
F 433Gm
J ..Km
L t**Mm
N ,,Om
P T66Qm
R .t/Z/ZSm
T  < <Um
V !$"@"@Wm
X &t'J'JYm
Z ,,[m
\ ()N)N]m
^ #D$6$6_m
` D$$am
b D44cm
d $00em
f ..gm
h !$"7"7im
j "4#B#Bkm
l !$"@"@mm
n "4#B#Bom
p 422qm
r !$"@"@sm
t ,,um
v t::wm
x '(L(Lym
z d88{m
| ,,}m
~ $33m
@ $33Am
B d88Cm
D --Em
F #D$D$DGm
H T66Im
J d88Km
L t::Mm
N +D,J,JOm
P "66&*&H&H040R0R#:: 44Ym
\$
++$
$55$
 11$
 &t'>'>	$

 4**$
 4**$
 477$
 d--$
 d--$
 $11$
 #D$;$;$
 t,,$
  !<!<$
 !$";";$
 !$";";$
  !$";";!$
" !$";";#$
 & 	 "  %"3r   c                   ^  [        U 4S jU 5       5      (       d   e[        U5      nT R                  R                  5        H.  u  p4X1;   d  M  UR	                  U5        UR                  U5        M0     S nU H  n[        U5      (       d  M  Un  O   Uc  U H  nUT R                  ;   d  M  Un  O   Uc6  U H0  n[        T R                  U   5      [        R                  L d  M.  Un  O   Uc  T R                  S:  a%  [        R                  SSR                  U5      5        [!        U5      nU Vs/ s H  n[#        U5      PM     nnXxR%                  ['        U5      5         nUR	                  U5        U H  nXe:X  a  M
  [        U5      (       a*  [        U5      (       a  [)        U5      [)        U5      :X  d   e[        U5      (       a  [)        U5      OUT R                  U'   T R                  R                  5        H  u  p4XF:X  d  M  UT R                  U'   M     M     U(       a#  T R*                  (       a  T R-                  5         g g g s  snf )Nc              3      >#    U  H>  n[        U5      [        L =(       a    UTR                  ;   =(       d    [        U5      v   M@     g 7fr)   )r   r   r=  r4   ).0srE  s     r   	<genexpr>>SymbolicShapeInference._add_suggested_merge.<locals>.<genexpr>  s8     c[bVWDGsN?qD,?,?'?QJqMQ[bs   AA	r   z9Potential unsafe merge between symbolic expressions: (%s),)allsetr<  itemsremoveaddr4   r>  r   r=  r>   SymbolrA  loggerwarningjoinrH   rQ   indexr   r5   r?  _apply_suggested_merge)	rE  symbolsapplykr\   map_torP  symbols_listlenss	   `        r   _add_suggested_merge+SymbolicShapeInference._add_suggested_merge  s   c[bcccccg,))//1DA|q!A 2 A!}} 
 >+++F  >++A./5<<?F 
 >}}q Z\_\d\del\mn=L$01LqCFLD1!**SY"78FNN6"A{&!!jmm6{c!f,,,6@6H6Hs6{fD!!!$--3356/5D))!, 6  T%%'') &5 2s   4Ic                 
   U R                   (       d  g [        U R                  R                  R                  5      U(       a  / O([        U R                  R                  R
                  5      -    H  nUR                  R                  R                  R                   H`  nUR                  U R                   ;   d  M  U R                   UR                     n[        U5      (       a  [        U5      Ul        MZ  XCl
        Mb     M     g r)   )r<  rH   out_mp_graphinput
value_infor   r   r$   r   	dim_paramr4   r5   	dim_value)rE  graph_input_onlyr7   r&   r\   s        r   r^  -SymbolicShapeInference._apply_suggested_merge8  s    $$dll((../9I2tTXT`T`TfTfTqTqOrsAVV''--11;;$"7"77--akk:A!!}}&)!f&' 2 tr   c                 ^   [         R                  " 5       U l        U R                  R                  U5        [	        U R                  R
                  R                  5       Vs0 s H  o"R                  U_M     snU l        U R                  R
                  R                   Vs0 s H  o"R                  U_M     snU l
        [	        U R                  R
                  R                  5       Vs0 s H  o"R                  U_M     snU l        U R                  R                  U R                  R
                  R                   Vs0 s HM  nUR                  [        R                  " UR                  UR                  [	        UR                   5      5      _MO     sn5        g s  snf s  snf s  snf s  snf r)   )r0   
ModelProtorh  CopyFromrH   ri  rj  r
   graph_inputs_initializerinitializers_	known_vi_updater   make_tensor_value_info	data_typedims)rE  in_mpr7   s      r   _preprocess"SymbolicShapeInference._preprocessD  s3   (e$15dll6H6H6N6N1OP1OAffai1OP151C1C1O1OP1OAffai1OP-1$,,2D2D2J2J-KL-K&&!)-KL ++777A 55affakk4PQPVPV<XX7	
 QPLs   !F!F *F%?AF*c                 .  ^^ [        S T 5       5      (       d  U R                  (       a  [        [        T5      5      nU Vs/ s H  n[	        U5      PM     nn[        U5      S::  d   e[        U5      S:X  a]  UR                  S5      nU R                  S:  a(  [        R                  SUS U X%S-   S  -    SX%    35        U R                  USS9  X%   $ U R                  S:  a!  [        R                  SUSS   SUS    35        TS   $ g [        U4S	 jT 5       5      (       a  TS   $ T Vs/ s H  o0R                  R                  X35      PM     snm[        U4S
 jT 5       5      (       a  TS   U R                  ;   d   eTS   $ g s  snf s  snf )Nc              3   D   #    U  H  n[        U5      [        L v   M     g 7fr)   )r   r   rO  r&   s     r   rQ  8SymbolicShapeInference._merge_symbols.<locals>.<genexpr>R  s     04a47c>4s    rP   r   zdim z has been merged with value Fallow_broadcastz has been merged with dim c              3   2   >#    U  H  oTS    :H  v   M     g7fr   NrB   rO  r&   rz  s     r   rQ  r  e  s     *TDG|T   c              3   2   >#    U  H  oTS    :H  v   M     g7fr  rB   )rO  r&   mergeds     r   rQ  r  h  s     .v!F1I~vr  )rT  r?  rH   rU  r4   sumr]  rA  rZ  debug_check_merged_dimsr<  getr=  )rE  rz  unique_dimsr&   is_intint_dimr  s    `    @r   _merge_symbols%SymbolicShapeInference._merge_symbolsQ  s   04000"3t9o1<=A*Q-=6{a'''v;!#$ll1oG}}q(";x#8;QR{};U#U"VVrs~  tH  sI  J ++K+O&//}}q(tKO+<<VWbcdWeVf%gh7N*T***7N;?@4a''++A14@.v...!9 3 3333!9/ >$ As   F1$Fc                    / n[        U5      n[        U5      n[        XE5      n[        U5       H  nXt:  a
  XS-
  U-
     OSnXu:  a
  X%S-
  U-
     OSn	US:X  d  X:X  a  U	n
OuU	S:X  a  Un
OlU R                  X/5      n
U
(       dS  U R                  (       a  U R                  X/SS9  O0[        R                  S[        U5      -   S-   [        U	5      -   5        U
/UQnM     U$ )NrP   Tr`  zunsupported broadcast between  )	rQ   r   ranger  r?  re  rZ  r[  r   )rE  shape1shape2	new_shaperank1rank2new_rankr7   dim1dim2new_dims              r   _broadcast_shapes(SymbolicShapeInference._broadcast_shapeso  s    	FFu$xA,-I6!)a-(1D,-I6!)a-(1DqyDL--tl; ''114,d1K'G#d)'SVY'Y\_`d\e'ef -9-I# !$ r   c                     UR                   U   nX0R                  ;   a  U R                  U   n[        U5      $ X0R                  ;   d   e[	        U R                  U   R
                  5      $ r)   )rj  rv  r.   ru  rH   rz  rE  r   idxr
   r-   s        r   
_get_shape!SymbolicShapeInference._get_shape  s`    zz#>>!%B,R00-----**405566r   c                    U[        UR                  5      S-
  :  a  g UR                  U   nX0R                  ;   a  U R                  U   n[        U5      $ X0R                  ;   a"  [        U R                  U   R                  5      $ g r[   )rQ   rj  rv  r.   ru  rH   rz  r  s        r   _try_get_shape%SymbolicShapeInference._try_get_shape  su    TZZ1$$zz#>>!%B,R00%%%**405566r   c                 6    [        U R                  X5      5      $ r)   )rQ   r  )rE  r   r  s      r   _get_shape_rank&SymbolicShapeInference._get_shape_rank  s    4??4-..r   c           	         / nU R                  X5       Hr  n[        U5      [        L aE  UR                  X@R                  ;   a  U R                  U   O[
        R                  " USSS95        MZ  S ULd   eUR                  U5        Mt     U$ )NTintegernonnegative)r  r   r   appendr=  r>   rY  )rE  r   r  r6   r&   s        r   _get_sympy_shape'SymbolicShapeInference._get_sympy_shape  s    +AAw#~""/// ''*a4H 1}$}""1% , r   c                     UR                   U   nX0R                  ;   d  X0R                  ;   d   eX0R                  ;   a  U R                  U   $ [        R                  " U R                  U   5      $ r)   )rj  sympy_data_ru  r   to_arrayrE  r   r  r
   s       r   
_get_value!SymbolicShapeInference._get_value  se    zz#'''43E3E+EEE)-1A1A)At%v|G\G\]a]o]opt]uGvvr   c                     U[        UR                  5      :  a  g UR                  U   nX0R                  ;   d  X0R                  ;   a  U R	                  X5      $ g r)   )rQ   rj  r  ru  r  r  s       r   _try_get_value%SymbolicShapeInference._try_get_value  sK    #djj/!zz####t/A/A'A??4--r   c                    [        U5       H  u  p#[        U5      (       a  M  [        U5      [        :w  d  M,  [        U5      nX@R                  ;   a?  [        U R                  U   5      (       a  Me  U R
                  U R                  U      X'   M  [        U5      U R
                  ;  d  M  X0R
                  [        U5      '   M     g r)   )	enumerater4   r   r   r<  r=  )rE  new_sympy_shaper7   r  str_dims        r   _update_computed_dims,SymbolicShapeInference._update_computed_dims  s    #O4JAg&&4=C+?g,333!$"7"7"@AA )-)<)<T=R=RSZ=[)\O& 7|4+>+>><C++CL9 5r   c                 z   UR                   S;   nU(       GdR  / n[        U R                  5      S:  a[  UR                   S;   aK  UR                   Vs/ s H4  nX@R                  ;   d  M  X@R
                  ;  d  M%  U R                  U   PM6     nnUR                   S;   Ga  UR                  S   U R                  ;   a  U R                  UR                  S      n[        [        UR                  5      5      n[        [        UR                  5      5       Vs/ s H  opR                  X5      PM     nn[        XaR                   S;   a  SOS-
  5       H\  n	U V
s/ s H+  n
[        U
5      U	-   U:  d  M  U
[        U
5      U-
  U	-      PM-     nn
[        U5      S:  d  ML  U R                  US	S
9  M^     [        R                  " U/SUR                   Vs/ s H  ow(       d  M  U R                  U   PM     snUR                   Vs/ s H  n[!        U5      PM     snU5      nU R"                  R$                  R'                  U5        [(        R*                  " U R"                  5      U l        [        [        UR                  5      5       H  nUR                  U   nU(       d  M  U R                  R$                  R,                  R/                  5       nU(       d3  UR'                  U R"                  R$                  R                  U   5        OXl        XPR                  U'   M     g s  snf s  snf s  sn
f s  snf s  snf )N)'ry   rz   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   r   r   r   r   r   r   r   r   r   r   	   )r   	rb   r   r   rp   r{   MatMulIntegerr|   r   Sumr   r{   r  r|      rP   Tr  tmp)op_typerM   rh  rj  ru  rs  outputrv  rQ   r'   r   r  r  r  r   
make_graphr2   tmp_mp_ri  rr  r   infer_shapesrk  rX  r
   )rE  r   
skip_inferinitializersr
   r-   out_rankr7   	in_shapesr&   rP  in_dims	tmp_graphi_oos                  r   _onnx_infer_single_node.SymbolicShapeInference._onnx_infer_single_node  s   \\ (&
 (

T  L$,,'1,$,,-2O !%

  * 2 22 -7;CUCU7U -D&&t, *    || 
  
 ;;q>T^^3A7B"#<RWW#EFHCHTZZCY ZCYa!9CYI Z" 9g)gAmno FO"iYRUVWRX[\R\`hRh#;1SVh%6%:#;Y"iw<!+ 33GT3R )),0JJ<Jq!""J<37;;?;a&q);?I LL''	2*77EDLT[[)*CC Aq\\''22668!KK 2 2 9 9# >?G$&q! +S ( ![ #j =?s6   L$(L$9L$L)L.2L.
L3 L3L8c                 X
   U R                   S:  a?  [        R                  SUR                   SUR                  S    SUR
                   35        [        UR                  5      [        UR                  5      -    Vs1 s H  oUR                  iM     nnU R                   Vs1 s H  owU;  d  M
  UiM     nn[        R                  " [        UR                  5      S[        UR                  5      U Vs/ s H  oPR                  U   PM     sn-   UR                   Vs/ s H  n[        UR                  5      PM     sn5      n	U	R                  R                  U R                  R                   R                   Vs/ s H  oUR                  U;   d  M  UPM     sn5        U	R                  R                  UR                  5        U R"                  R                   R%                  U	5        ['        U R(                  U R*                  U R,                  U R                   U R.                  S-   [1        U R2                  5      -   S9n
U(       a  U =R2                  S	-  sl        U
R5                  U R"                  5        U R6                  R9                  5       U
l        U
R:                  (       a<  U
R=                  U R>                  R9                  5       5        U
R:                  (       a  M<  U
RA                  5         U(       a`  URC                  S
5        UR                  R                  U
R                  R                   R                  S [E        UR                  5       5        URC                  S5        UR                  R                  U
R                  R                   R                  5        URC                  S5        URF                  R                  U
R                  R                   RF                  5        URC                  S5        UR                  R                  U
R                  R                   R                  5        U
R                  R                   R                   Vs/ s H  n[I        U5      PM     nnU VVs1 s H<  o(       d  M  U  H*  n[K        U5      [0        L d  M  XRL                  ;  d  M(  UiM,     M>     nnn0 nU H&  nXRL                  ;   d   eU
RL                  U   UU'   M(     U RL                  RO                  U5        U
$ s  snf s  snf s  snf s  snf s  snf s  snf s  snnf )Nr  zInferencing subgraph of node z with output(r   z...): r  _)rJ  rP   rj  r  rk  r   )(rA  rZ  r  r
   r  r  rH   rt  rj  rv  r   r  r   r2   extendrh  ri  r  rr  r_   rB  r?  r@  rD  r   rC  r|  r<  copyr;  _infer_implr  _update_output_from_vi
ClearFieldrQ   rk  r.   r   r=  rw  )rE  r   subgraphuse_node_inputinc_subgraph_idr7   subgraph_inputsr
   subgraph_implicit_inputr  symbolic_shape_inferencer  subgraph_shapesrP  r&   subgraph_new_symbolic_dimsnew_dimss                    r   _onnx_infer_subgraph+SymbolicShapeInference._onnx_infer_subgraph.  s   ==1LL8=QUQ\Q\]^Q_P``fgkgsgsftuv
 ,00D0D+EX^^H\+\]+\a66+\]48NN"bNDRaFa4N"b%% ?V#W?V!NN1$5?V#WW4<OODOq"166*OD	
	 	$$1C1C1O1O%u1OASYSY]tSta1O%uv$$X%9%9:##I.#9MM##MM<<#%D,=,=(>>$
  " ,,T\\:484I4I4N4N4P 1&++$001A1A1F1F1HI '+++ 779(NN!!":"B"B"H"H"N"NO`QTUYU_U_Q`"abH%7??EELLML)""#;#C#C#I#I#T#TUF#5==CCHHIAYAaAaAgAgAnAnoAnA4Q7Ano&&
&!!AQ$q'S.AQViViMiAQA 	# &
 +A?????2AA!DHQK , 	""8,''_ ^"b $XD%u< p&
sH   =T"	T/T4TT;TTT!7
T&T&T&0
T&c                    S n[        [        UR                  5      5       Vs/ s H  oPR                  X5      PM     nn[	        S U 5       5      (       a  [        U5       H  u  pW[        U5      [        R                  La  M#  [        UR                  5      S:  a  S nOc[        UR                  5      S:X  a  U" UR                  5       U5      nO2[        UR                  5      S:X  d   eU V	s/ s H
  o" X5      PM     nn	XU'   M     U Vs/ s H%  n[        U[        5      (       a  [        U5      OSPM'     n
n[        U
5      nUS:  ag  U(       a`  [        U5       HQ  u  pWUc  M
  [        U[        5      (       a*  [        U5      U:  a  X{-  Xe'   M6  [        U5      U:X  d   eMI  U/U-  Xe'   MS     U$ s  snf s  sn	f s  snf )Nc                 <    U(       a  U S-  S:w  a  U $ [        U 5      $ rO   )r5   )r   allow_float_valuess     r   int_or_floatESymbolicShapeInference._get_int_or_float_values.<locals>.int_or_floatg  s    !eai1nu:r   c              3   (   #    U  H  oS Lv   M
     g 7fr)   rB   rO  r\   s     r   rQ  BSymbolicShapeInference._get_int_or_float_values.<locals>.<genexpr>n       -f}f   rP   r   )r  rQ   rj  r  rT  r  r   r;   rR   r$   rS   
isinstancerH   r   )rE  r   	broadcastr  r  r7   valuesr\   new_vvv
values_lenmax_lens               r   _get_int_or_float_values/SymbolicShapeInference._get_int_or_float_valuesf  s   	 9>c$**o8NO8N1%%d.8NO-f---!&)7"**,qww<!# E\Q&(3EFEqww<1,,,LMNAb\"AAEN!q	 * EKKFq
1d 3 3c!f:F
Kj/a<I!&)9a&&1v'$%K	"1v000!"gFI * 9 P OKs   F81F=,Gc                    [        UR                  5      S:X  d   eUR                  S;   a  U R                  USSS9nOU R                  USS9n[	        S U 5       5      (       a  U Vs/ s H  n[        U[        5      PM     nn[        U5      nU(       a<  [        USS06 Vs/ s H
  or" U5      PM     snU R                  UR                  S	   '   g U" U5      U R                  UR                  S	   '   g g s  snf s  snf )
NrP   )r   rp   T)r  r  )r  c              3   (   #    U  H  oS Lv   M
     g 7fr)   rB   r  s     r   rQ  @SymbolicShapeInference._compute_on_sympy_data.<locals>.<genexpr>  r  r  strictFr   )
rQ   r  r  r  rT  r  rH   anyzipr  )rE  r   op_funcr  r\   is_listrY   vss           r   _compute_on_sympy_data-SymbolicShapeInference._compute_on_sympy_data  s    4;;1$$$
 <<>)2244\`2aF22442HF-f---4:;Fqz!T*FG;'lGJMvJd^cJd3eJdBGBKJd3e  Q03:6?  Q0 .; 4fs   )C7$C<c                     [        UR                  5      S:X  d  UR                  S;   d   eU R                  US 5        g )NrP   )r   r   r   c                     U S   $ r   rB   rT   s    r   <lambda><SymbolicShapeInference._pass_on_sympy_data.<locals>.<lambda>  s    AaDr   )rQ   rj  r  r  rE  r   s     r   _pass_on_sympy_data*SymbolicShapeInference._pass_on_sympy_data  s>    4::!#t|| 8
 (
 	
 

 	##D.9r   c           
         U R                   UR                  S      nUR                  [        R                  " UR                  S   [        U R                   UR                  S      R                  5      U R                  US5      5      5        g r   )	rv  r  rr  r   rx  r+   rj  r   r  )rE  r   r-   s      r   r   .SymbolicShapeInference._pass_on_shape_and_type  sj    ^^DKKN+
))A-dnnTZZ].K.P.PQa(	
r   c                    U SU 3nX0R                   ;   aD  U R                   U   n[        U5      (       a!  [        R                  " [	        U5      5      nU$ UnU$ [        R
                  " USSS9nXPR                  U'   U$ )N_dTr  )r<  r4   r>   r?   r5   rY  r=  )rE  rJ  r   r  r\   new_symbolic_dims         r   _new_symbolic_dim(SymbolicShapeInference._new_symbolic_dim  s    HBse$+++%%g.A8B1u}}SV4  	 LM    %||GTtT+;(r   c           	          U R                  UR                   U R                   S[        U R                  R
                  R                  5      R                  U5       SU S3U5      $ )Nr  _o)r  r  rD  rH   rh  ri  r   r]  )rE  r   out_idxr   s       r   _new_symbolic_dim_from_output4SymbolicShapeInference._new_symbolic_dim_from_output  s`    %%||nT\\N!D1C1C1H1H,I,O,OPT,U+VVXY`Xaabc
 	
r   c                 b    [        U5       Vs/ s H  o@R                  X#U5      PM     sn$ s  snf r)   )r  r  )rE  rD   r   r  r7   s        r   _new_symbolic_shape*SymbolicShapeInference._new_symbolic_shape  s*    NSTXkZk224!DkZZZs   ,c           
         U R                  US5      n[        UR                  5      S:  aE  U R                  US5      n[        U5      S-
  nU(       a  XE* S-
  S OXE* S  nUS   X2(       a  SOS'   OS n[        US5      n[        U5      n[        U5      US-   :X  d   eU(       a  X5* S-
  S OX5* S  nU Vs/ s H  n[	        U5      (       + PM     n	n[        U	5      (       d  [        U R                  UR                  S      5      n
[        U
5      S:  a  [        U5      [        U
5      :X  d   eU(       a5  X* S-
  S  Vs/ s H  n[        R                  " U5      PM     snX5* S-
  S& U$ X* S   Vs/ s H  n[        R                  " U5      PM     snX5* S & U$ [        USS/U-  5      n[        USS/U-  5      n[        XlS	S
9 VVs/ s H  u  pUS-
  U-  S-   PM     nnn[        US5      nUc  S/SU-  -  n[        USS5      R                  S5      nUS:w  a{  US:w  au   [        X5* S  US	S
9 VVs/ s H  u  nn[        R                  " UU5      PM     nnn[        XUS	S
9 VVVs/ s H!  u  nnn[        SUS:X  a  UU-
  OUU-
  5      PM#     nnnnOMUS:X  a  / nODS/U-  nO=[        U5      SU-  :X  d   e[        US U UUS  S	S
9 VVs/ s H  u  nnUU-   PM     nnn[        USS5      n[!        U5       Hy  nX5* U-   U(       a  SOS-      n[        U5      S:  a  UUU   -   nU(       a!  [        R"                  " UX   -
  X   -  5      nOUX   -
  X   -  nUS-   X5* U-   U(       a  SOS-   '   M{     U$ s  snf s  snf s  snf s  snnf s  snnf s  snnnf ! [         a6    [        XS	S
9 VVs/ s H  u  nn[        SUU-
  5      PM     Os  snnf nnn Nf = fs  snnf )Nr   rP   r     kernel_shape	dilationsstridesFr  padsauto_pads   NOTSETutf-8VALIDNOTSET	ceil_mode)r  rQ   rj  r   r4   r  r.   rv  r  r>   r?   r  decodeModr   	TypeErrorr  ceiling)rE  r   channels_lastr6   W_shaperD   r#  spatial_shaper7   is_symbolic_dimsr$   r&   r$  r%  ra  effective_kernel_shaper'  r(  rP  residualr
total_padsp1p2r,  effective_input_sizestrided_kernel_positionss                              r   _compute_conv_pool_shape/SymbolicShapeInference._compute_conv_pool_shape  sN   ++D!4tzz?Q++D!4Gw<!#D6C7519r2QVQWL5<QZK]2G(~>L|$D;4!8+++ 8EEAI3+V[V\J]7DE}!
1-}E#$$-dnnT[[^.LME5zA~;'3u:555 MRSX[\S\_aMb2cMb5==3CMb2cK	B/ #" FK56]*S]5==+;]*SK'""!$aS4Z@	i!t<>A,bg>h!i>hda1q5A+/>h!iT6*<3!d(#D$T:yAHHQH7"x8';	<?EF@SU\ej<kl<kDAq		!Q<kHl (++AH]b'c"'cGAq! A!q&Aq1u>'c  "J W$
S4Z
t9D(((03D$KdeUZ0[\0[fb""r'0[J\!$Q7	tA#.uqy-BUV/W#X :"';jm'K$+0==),B,EES,( -ACYC\,\ahak+k(D\_`D`K	=Ra@A  e F 3d*S
 "j  m" ! 478N`e4f"4fDAqAA4f"J "J ]sZ   6M= N3 N
N%N 6$NN ,(NN O"N O6O
OOc                    ^ U(       a4  T Vs/ s H&  n[        U5      (       a  [        U5      S::  a  M$  UPM(     snm[        U4S jT 5       5      (       d  U R                  TSS9  g g s  snf )NrP   c              3   2   >#    U  H  oTS    :H  v   M     g7fr  rB   r  s     r   rQ  <SymbolicShapeInference._check_merged_dims.<locals>.<genexpr>
       .AQ<r  Tr  )r4   r5   rT  re  )rE  rz  r  r&   s    `  r   r  )SymbolicShapeInference._check_merged_dims  s[    #Kt!JqMMc!fkAtKD....%%d$%7 / Ls
   #A)A)Nc                    U R                  US5      nU R                  US5      n[        U5      n[        U5      nSnSnUS:  a  US:  d   eUS:X  a	  US:X  a  / n	OKUS:X  a  Sn/ US U QUS   Pn	O6US:X  a  SnUS U n	O(SnSn/ U R                  US S US S 5      QUS   PUS   Pn	U R                  X7   XH   /SS9  Uc:  U R                  UR
                  S      R                  R                  R                  nU R                  UR                  S      n
U
R                  [        R                  " UR                  S   X)5      5        g )Nr   rP   r!  Fr  )r  rQ   r  r  rv  rj  r   r   r*   r  rr  r   rx  )rE  r   output_dtype	lhs_shape	rhs_shapelhs_rankrhs_ranklhs_reduce_dimrhs_reduce_dimr  r-   s              r   _compute_matmul_shape,SymbolicShapeInference._compute_matmul_shape  sq   OOD!,	OOD!,	y>y>!|1,,q=X]I]ND)O^4DimDI]N!/>2INNo$003B3BPoR[\^R_oajkmanoI&	(AB! 	  	
 >>$**Q-8==IISSL^^DKKN+
F11$++a.,Z[r   c           
      p   [        U5      (       a   UR                  R                  R                  OUR                  n[        U5      (       a   UR                  R                  R                  OUR                  nUR                  UR                  :w  a  UR                  (       a  UR                  OUR
                  n[        SU S[        R                  R                  R                  R                  UR                  5       S[        R                  R                  R                  R                  UR                  5       35      eUR                  S5      (       a  [        [        UR                  R                   UR                  R                   SS95       H  u  pU	S   U	S   :w  d  M  [        R"                  R%                  5       n
[        U5      (       d   ['        U R)                  XU5      5      U
l        UR                  R                   U   R-                  U
5        M     g	UR-                  U5        g	)
zX
update dst_tensor_type to be compatible with src_tensor_type when dimension mismatches
z	For node z:, dst_tensor_type.elem_type != src_tensor_type.elem_type: z vs r$   Fr&  r   rP   N)r"   r   r*   r   r
   r  
ValueErrorr0   onnx_pbTensorProtoDataTypeNamer%   r  r  r$   r   TensorShapeProto	Dimensionr   r  rl  rr  )rE  r   r  dst_typesrc_typedst_tensor_typesrc_tensor_typenode_iddidsr  s              r   _fuse_tensor_type(SymbolicShapeInference._fuse_tensor_type,  s   
 =H<Q<QH"",,88W_WkWk 	 =H<Q<QH"",,88W_WkWk 	 $$(A(AA#'99dii$,,GG9$^<<++4499/:S:STUUY<<++4499/:S:STUW 
 ##G,,#C(=(=(A(A?CXCXC\C\ej$kla5BqE> #33==?G&x00,/0R0RSWbd0e,f)#))--b1::7C m $$_5r   c           	      h   U R                  US5      nU R                  US5      nU R                  UR                  S      nUR                  [        R
                  " UR                  S   U R                  UR                  S      R                  R                  R                  US S U-   5      5        g Nr   rP   r!  
r  rv  r  rr  r   rx  rj  r   r   r*   )rE  r   
data_shapeindices_shaper-   s        r   r   3SymbolicShapeInference._infer_ArrayFeatureExtractorI  s    __T1-
a0^^DKKN+
))Atzz!}-22>>HH3B-/	
r   c                    ^  S S S S U 4S jU 4S jS S S	 S
 S.
nUR                   U;   d   eT R                  XUR                      5        g )Nc                     U S   U S   -   $ Nr   rP   rB   ls    r   r  DSymbolicShapeInference._infer_symbolic_compute_ops.<locals>.<lambda>W      QqTAaD[r   c                 |    [        U S   U S   -  [        5      (       a  [        U S   U S   -  5      $ U S   U S   -  $ rh  r  floatr5   ri  s    r   r  rk  X  sE    %/!!e%D%DAaDAaDL!V!A$RSTURV,Vr   c                     U S   U S   :H  $ rh  rB   ri  s    r   r  rk  [  s    qtqt|r   c                 4    [         R                  " U S   5      $ r   )r>   floorri  s    r   r  rk  \  s    u{{1Q40r   c                   > [        U S   5      (       a"  [        U S   5      TR                  * :  a  U S   $ [        U S   5      (       a"  [        U S   5      TR                  * :  a  U S   $ [        R                  " U S   U S   5      $ rh  )r4   r5   rB  r>   r~   rj  rE  s    r   r  rk  ]  s    ad##AaD	T]]N(B ! j(1..3qt9~3MadjSXS\S\]^_`]acdefcgShjr   c                   > [        U S   5      (       a!  [        U S   5      TR                  :  a  U S   $ [        U S   5      (       a!  [        U S   5      TR                  :  a  U S   $ [        R                  " U S   U S   5      $ rh  )r4   r5   rB  r>   r   rt  s    r   r  rk  b  s    ad##AaD	DMM(A ! i(1..3qt9t}}3LadiRWR[R[\]^_\`bcdebfRgir   c                 |    [        U S   U S   -  [        5      (       a  [        U S   U S   -  5      $ U S   U S   -  $ rh  rn  ri  s    r   r  rk  g  sH    AaD1Q4K1O1OS1!-`UVWXUY\]^_\`U``r   c                     U S   U S   -
  $ rh  rB   ri  s    r   r  rk  h  rl  r   c                 *    U S   (       a  U S   $ U S   $ Nr   rP   r  rB   ri  s    r   r  rk  i  s    qtqt515r   c                     U S   * $ r   rB   ri  s    r   r  rk  j  s
    adUr   )
rb   rp   rs   rt   r~   r   r   r   r   r   )r  r  )rE  r   funcss   `  r   r   2SymbolicShapeInference._infer_symbolic_compute_opsU  s^    ( ,0

 a(5")
, ||u$$$##D*=>r   c                 &    U R                  U5        g r)   )r  r  s     r   r   "SymbolicShapeInference._infer_Casto  s      &r   c           
         U R                   UR                  S      R                  R                  R                  nU[
        R                  R                  :X  a  [
        R                  R                  nO[
        R                  R                  nU R                   UR                  S      nUR                  [        R                  " UR                  S   X0R                  US5      5      5        g r   )rv  rj  r   r   r*   r0   rR  STRINGINT64r  rr  r   rx  r  )rE  r   
input_typeoutput_typer-   s        r   r   ,SymbolicShapeInference._infer_CategoryMapperr  s    ^^DJJqM277CCMM
))000**00K**11K^^DKKN+
F11$++a.+_cefOghir   c                    U R                  US5      n[        U R                  U5      5      n[        US5      nUc  U/nOUnX5[	        U[        U5      5      '   U R                  UR                  S      nUR                  [        R                  " UR                  S   U R                  UR                  S      R                  R                  R                  U5      5        g )Nr   rC   )r  r   r  r   rE   rQ   rv  r  rr  r   rx  rj  r   r   r*   )rE  r   input_shapecompress_lenrC   output_shaper-   s          r   r   &SymbolicShapeInference._infer_Compress{  s    oodA.4==dCDT6*<(>L&LIU-dC4DEF^^DKKN+
))Atzz!}-22>>HH	
r   c           	      "  ^ ^ [        U 4S jUR                   5       5      (       a  T R                  U5      n[        S U 5       5      (       a  [	        US5      S:X  d   e/ T R
                  UR                  S   '   [        [        UR                  5      5       Ht  nX#   n[        U[        5      (       a-  T R
                  UR                  S      R                  U5        MI  T R
                  UR                  S      R                  U5        Mv     T R                  US5      n[        [	        US5      [        U5      5      n[        S[        UR                  5      5       H(  nT R                  X5      nU(       d  M  XV   X   -   XV'   M*     T R                  U5        [        [        U5      5       H  n	X:X  a  M
  [        [        UR                  5      5       Vs/ s H/  nT R!                  X5      (       d  M  T R!                  X5      U	   PM1     snm[        U4S jT 5       5      (       a  M  T R#                  T5      n
[%        U
5      [&        L a  U
(       a  T R(                  U
   OS XY'   M  XU	'   M     T R*                  UR                  S      nUR-                  [.        R0                  " UR                  S   T R*                  UR                  S      R$                  R2                  R4                  [7        U5      5      5        g s  snf )Nc              3   l   >#    U  H)  oTR                   ;   =(       d    UTR                  ;   v   M+     g 7fr)   )r  ru  rO  r7   rE  s     r   rQ  7SymbolicShapeInference._infer_Concat.<locals>.<genexpr>  s-     TAD$$$?T-?-?(??s   14c              3   (   #    U  H  oS Lv   M
     g 7fr)   rB   r  s     r   rQ  r    s     1&QD=&r  rC   r   rP   c              3   2   >#    U  H  oTS    :H  v   M     g7fr  rB   r  s     r   rQ  r    rB  r  )r  rj  r  rT  r   r  r  r  rQ   r  rH   r  r  r  rE   r  r  r  r   r   r=  rv  rr  r   rx  r   r*   r8   )rE  r   r  r7   r   r6   rC   i_idxr  r&   r  r-   rz  s   `           @r   r   $SymbolicShapeInference._infer_Concat  sm   TTTT2248F1&111$T62a77735  Q0s4::/A"IE!%..((Q8??F((Q8??F 0 ++D!4#M$$?[AQR1c$**o.E//<K{$/$58I$I! / 	"";/s;'(AyAFs4::AWxAW[_[j[jko[w3DOOD03AWxD....((.FF|s"@F!4!4V!<D!'A ) ^^DKKN+
))Atzz!}-22>>HH*;7	
 ys   L<Lc                 <   U R                  US5      n[        US5      (       a  SOSn[        [        US5      [        U5      U-   5      n[	        U R                  USU5      5      nUnU(       a  / US U QUPX$S  QnOXVU'   U R                  UR                  S      nUR                  [        R                  " UR                  S   U R                  UR                  S      R                  R                  R                  R                  R                  U5      5        g )Nr   new_axisrP   rC   )r  r   rE   rQ   r   r  rv  r  rr  r   rx  rj  r   r   r*   r   )rE  r   	seq_shaper  rC   
concat_dimr  r-   s           r   r   0SymbolicShapeInference._infer_ConcatFromSequence  s    OOD!,	%dJ771Q#M$$?YRZAZ[;;D!TJK
	J)ET*JJJ59IJI(dO^^DKKN+
))Atzz!}-22@@JJVV``	
r   c                 |    [        US5      n[        R                  " U5      U R                  UR                  S   '   g )Nr   r   )r   r   r  r  r  )rE  r   ts      r   r   &SymbolicShapeInference._infer_Constant  s1    $(+7+@+@+CQ(r   c           	      \   U R                  U5      S   nU R                  UR                  S      nUb  [        U5      [        :w  a  U/nU R                  U5        UR                  R                  R                  [        R                  R                  :X  a  [        S U 5       5      (       ay  [        R                  " U Vs/ s H  n[        U5      PM     sn[        R                  S9[         R"                  " [%        USS5      5      -  U R&                  UR                  S   '   O%U R)                  U R+                  US5      S   U5      nUR-                  [.        R0                  " UR                  S   UR                  R                  R                  [3        U5      5      5        g s  snf )Nr   c              3   8   #    U  H  n[        U5      v   M     g 7fr)   )r4   )rO  rU   s     r   rQ  @SymbolicShapeInference._infer_ConstantOfShape.<locals>.<genexpr>  s     NrfqabzZ[}}fqs   )dtyper   )r  rv  r  r   rH   r  r   r*   r0   rR  r  rT  r;   onesr5   r<   r   r  r   r  r  r  rr  r   rx  r8   )rE  r   r6   r-   rU   s        r   r   -SymbolicShapeInference._infer_ConstantOfShape  sO   33D9!<^^DKKN+"K D(*m&&{3ww"",,0@0@0F0FF3NrfqNrKrKr3577%01[SV[14 ))-gq*IJ4K  Q0 224??43KA3NPTUK
))A##--*;7	
 2s   F)c           	      6   U R                  U5      nU R                  U5        U R                  UR                  S      nUR	                  [
        R                  " UR                  S   UR                  R                  R                  [        U5      5      5        g r   )r=  r  rv  r  rr  r   rx  r   r   r*   r8   rE  r   r6   r-   s       r   r   "SymbolicShapeInference._infer_Conv  sv    33D9"";/^^DKKN+
))A##--*;7	
r   c           	      h   U R                  USS9nU R                  U5        U R                  UR                  S      nUR	                  [
        R                  " UR                  S   U R                  UR                  S      R                  R                  R                  [        U5      5      5        g )NT)r1  r   )r=  r  rv  r  rr  r   rx  rj  r   r   r*   r8   r  s       r   r!  &SymbolicShapeInference._infer_NhwcConv  s    33D3M"";/^^DKKN+
))Atzz!}-22>>HH*;7	
r   c                 :   U R                   UR                  S      R                  R                  R                  nU R                  US5      nU R                   UR                  S      nUR                  [        R                  " UR                  S   X#5      5        g rO   )
rv  rj  r   r   r*   r  r  rr  r   rx  rE  r   rF  r  r-   s        r   r  .SymbolicShapeInference._infer_DequantizeLinear   ss    ~~djjm499EEOO tQ/^^DKKN+
F11$++a.,]^r   c                    [         R                  R                  n[        UR                  5      S:  aN  UR                  S   (       a:  U R
                  UR                  S      R                  R                  R                  nU R                  US5      nU R
                  UR                  S      nUR                  [        R                  " UR                  S   X#5      5        g )Nr  r   )r0   rR  UINT8rQ   rj  rv  r   r   r*   r  r  rr  r   rx  r  s        r   r'  ,SymbolicShapeInference._infer_QuantizeLinear
  s     ''--tzz?Q4::a=>>$**Q-8==IISSL tQ/^^DKKN+
F11$++a.,]^r   c                    U R                   UR                  S      R                  R                  R                  nU R                  US5      nU R                  US5      nU R                  X45      nU R                   UR                  S      nUR                  [        R                  " UR                  S   X%5      5        g Nr   r"  )rv  rj  r   r   r*   r  r  r  rr  r   rx  )rE  r   rF  input_1_shapeinput_2_shaper  r-   s          r   r&  +SymbolicShapeInference._infer_QLinearBinary  s    ~~djjm499EEOO a0a0 **=H	^^DKKN+
F11$++a.,Z[r   c                 >   [        US5      nUR                  SS5      nUR                  S5      nUS:w  a  US U OUnSnSnSn0 nUR                  S5      n	U	 H  n
U
R                  S5      nU R	                  X5      n[        U5      nUS:w  a  US:X  a  U[        U
5      -
  S	-   nUS
-   n[        S
US
-   5       HB  nX*    nUS:w  d  M  X*    nX;  a  UX'   M   [        U5      [        R                  Ld  M>  UX'   MD     US
-   nM     / nSSK
Jn  U" 5       nUS:w  aj  X#S-   S  nUR                  S5      nUS:w  a&  [        U5       H  nUR                  WU   5        M     U H  nUS:w  d  M  UR                  UU   5        M!     O[        U5       H  nUR                  WU   5        M     U H+  nUS:w  d  M  US:w  d  M  UU;   a  UU   S
-   UU'   M&  S
UU'   M-     UR                  5        H"  u  nnUS
:X  d  M  UR                  UU   5        M$     U R                  UR                  S      R                  R                   R"                  nU R                  UR$                  S      nUR'                  [(        R*                  " UR$                  S   UU5      5        g )Nequation    r   s   ->r!  r      ,s   ...r"  rP   .   )OrderedDictr  ,   )r   replacefindsplitr  rQ   r  r   r>   rY  collectionsr  r  rV  rv  rj  r   r*   r  rr  r   rx  )rE  r   r  	mid_indexleft_equationnum_operandsnum_ellipsisnum_ellipsis_indicesletter_to_dimtermstermellipsis_indexr$   rD   r7   letterr   r  r  num_letter_occurrencesright_equationright_ellipsis_indexckeyr   rF  r-   s                              r   r   $SymbolicShapeInference._infer_Einsum%  s    z2##D#.MM%(	09R),X ##D)D!YYv.NOOD7Eu:D#1$+/#d)+;a+?(+a/1dQh'bR<)C203-c%,,603- ( (!+L! $ +!,?%!mo6N#1#6#6v#> #r)34A#**584 5#7#**=+;< $ /0&&uQx0 1"7qBw224J14MPQ4Q.q145.q1 # 5::<
UA:#**=+=> = ~~djjm499EEOO^^DKKN+
F11$++a.,P_`ar   c                    [        U R                  US5      SS9nUb  U R                  U5        U R                  US5      nU R	                  U[        U5      5      nU R                  UR                  S      nUR                  [        R                  " UR                  S   U R                  UR                  S      R                  R                  R                  U5      5        g g )NrP   TrX   r   )rY   r  r  r  r  r8   rv  r  rr  r   rx  rj  r   r   r*   )rE  r   expand_to_shaper$   r  r-   s         r   r   $SymbolicShapeInference._infer_Expandc  s    !$"5"5dA">$O&&&7OOD!,E..u6PQ`6abIA/BKK--KKNNN4::a=166BBLL 'r   c           
      <   U R                  US5      n[        [        USS5      [        U5      5      nU R                  US5      nU R                  UR
                  S      nUR                  S:X  a;  U R                  UR                  S      R                  R                  R                  nOcUR                  S:X  a;  U R                  UR                  S      R                  R                  R                  nO[        SUR                   35      eUR                  [        R                  " UR
                  S   UUS U U-   X#S-   S  -   5      5        UR                  S   U R                  ;   Ga)  [        U5      S:X  Ga  [        USS5      S:X  Ga  U R!                  US5      nUb  U R                  UR                  S      n[        U5      ["        L a  [        U5      [$        R&                  L aR  [        UR(                  5      S:X  a9  U V	s/ s H  o[+        U	5         PM     sn	U R                  UR
                  S   '   g U[+        U5         U R                  UR
                  S   '   g US:X  d  US:X  d   eXR                  UR
                  S   '   g g g g g s  sn	f )	Nr   rC   rP   ru   r   r  zUnsupported Gather op_type: r!  )r  rE   r   rQ   rv  r  r  rj  r   r   r*   rP  rr  r   rx  r  r  rH   r;   rR   r$   r5   )
rE  r   rc  rC   rd  r-   r*   r  datar7   s
             r   r   $SymbolicShapeInference._infer_Gathers  s7   __T1-
#M$$BC
OTa0^^DKKN+<<8#tzz!}5::FFPPI\\33tzz!}5::FFPPI;DLL>JKK
))A5D!M1Jaxz4JJ	
 ::a=D,,,ZA1E-X\^dfgJhlmJm%%dA.C''

16:%CyBJJ.3syy>Q3FRU;VRUQQLRU;V((Q8;?C>((Q8!8sby007;$$T[[^4  Kn1E, <Ws   Jc                 8   U R                  US5      nU R                  UR                  S      nUR                  [        R
                  " UR                  S   U R                  UR                  S      R                  R                  R                  U5      5        g rO   rb  )rE  r   rd  r-   s       r   r   ,SymbolicShapeInference._infer_GatherElements  sv    a0^^DKKN+
))Atzz!}-22>>HH	
r   c                    U R                  US5      n[        U5      nU R                  US5      n[        U5        US   n[        U5      (       a  XS::  d   eUS S X%S  -   nU R                  UR                  S      nUR                  [        R                  " UR                  S   U R                  UR                  S      R                  R                  R                  U5      5        g ra  )r  rQ   r4   rv  r  rr  r   rx  rj  r   r   r*   )rE  r   rc  	data_rankrd  last_index_dimensionr  r-   s           r   r   &SymbolicShapeInference._infer_GatherND  s    __T1-

O	a0M,R0.//4H4UUU!#2&4I)JJ	^^DKKN+
))Atzz!}-22>>HH	
r   c           	         [        US5      [        US5      /nU R                  US5      nUb>  [        U5      S:  a  US   R                  US   5        OUS   R                  US   5        [	        U5       GHJ  u  pEU R                  XSS9n[        [        UR                  5      5       GH  nU R                  UR                  U      nUS:X  a3  UR                  UR                  U   5        UR                  U   Ul
        O4U R                  XUR                  UR                  U   R                  5        Uc  M  U[        U5      S:  a  SOS:X  d  M  UR                  U   R                  UR                  ;   d  M  UR                  UR                  U   R                     U R                  UR                  '   GM     GMM     g )Nthen_branchelse_branchr   rP   F)r  )r   r  rV   rr  r  r  r  rQ   r  rv  r
   r^  r   r  )	rE  r   	subgraphscondi_subr  subgraph_inferi_outr-   s	            r   r    SymbolicShapeInference._infer_If  s    $.$.
	 ""4+"!%%il3!%%il3(3OE!66tV[6\Ns4;;/0^^DKK$67A:KK 67"kk%0BG**4QVAWA\A\] #y7J!PQ(Ru-22n6P6PP4B4N4Nx_dOeOjOj4k((1 1  4r   c           	         [        US5      n[        UR                  5      [        UR                  5      :X  d   e[        UR                  5      S-
  n[        UR                  5       HB  u  pEUR                  nUR                  U R                  UR                  U      5        Xel        MD     U R                  X5        Sn[        SUS-   5       GH  nUR                  U   n	[        U	5      n
[        U	R                  5      (       ar  U
(       ai  S U
;   aa  UR                  US-      R                  R                  R                  R                  U	R                  R                  R                  5        SnM  M  M  UR                  US-      n[        U5      n[        [        XSS95       H  u  pUS   US   :w  d  M  [         R"                  R%                  5       n['        U R)                  XU5      5      Ul        UR                  R,                  R.                  R0                  U   R                  U5        U	R                  R,                  R.                  R0                  U   R                  U5        SnM     GM     U(       aS  U R2                  S:  a3  [4        R7                  SUR                   S	UR                  S    S
35        U R                  XSS9  ['        U R)                  U5      5      n[        [        UR                  5      5       GH8  nU R                  UR                  U      nUR                  UR                  US-      5        XC:  a  [        UR                  5      (       a   eUR                  US-      R                  R,                  R.                  R0                  nUR                  R,                  R.                  R9                  S5        UR                  R,                  R.                  R0                  nUUR;                  5       l        UR=                  [?        U5      5        UR                  U   Ul        GM;     g )Nbodyr  FrP   Tr&  r   zRerun Loop: (z3...), because of sequence in loop carried variables)r  r   ) r   rQ   rj  r  r
   rr  rv  r  r  r  r.   r"   r   r   r*   r  r0   rU  rV  r   r  rl  r   r$   r   rA  rZ  r  r  rX  r  rH   )rE  r   r  num_loop_carriedr7   sisi_nameneed_second_inferr  soso_shapesi_shaper\  rz  r  loop_iter_dimr-   subgraph_vi_dimvi_dims                      r   r   "SymbolicShapeInference._infer_Loop  s\    v.8>>"c$**o555tzz?Q. x~~.EAggGKKtzz!}56G /
 	!!$1
 "1.23E'B04H277## 0 NN519-22@@JJSSTVT[T[TiTiTsTst(,% !18 ^^EAI.4R8 )#h*O PHBAw$q')"&"7"7"A"A"C,/0R0RSW`b0c,d)++1155b9BB7K++1155b9BB7K,0) !Q 4* }}q "499+Qt{{1~.>>qr %%de%L D>>tDEs4;;'(AA/BKKA./$&rww////"*//!a%"8"="="I"I"O"O"S"S##))44U;,,2266)6

&d?34kk!nBG )r   c                 &    U R                  U5        g r)   rM  r  s     r   r   $SymbolicShapeInference._infer_MatMul      ""4(r   c                 X    U R                  U[        R                  R                  5        g r)   )rM  r0   rR  INT32r  s     r   r   +SymbolicShapeInference._infer_MatMulInteger
  s    ""4)9)9)?)?@r   c                    U R                  US5      n[        US5      [        US5      /n[        U5      nUS:  d   eUS:X  a  USS  nOUS S USS  -   nU R                  US   US   /SS9  U R                  UR
                  S      R                  R                  R                  nU R                  UR                  S      nUR                  [        R                  " UR                  S   Xe5      5        g )Nr   KNrP   r!  Fr  )r  r   rQ   r  rv  rj  r   r   r*   r  rr  r   rx  )rE  r   rG  rH  rI  r  rF  r-   s           r   r  )SymbolicShapeInference._infer_MatMulNBits  s    OOD!,	"4-}T3/GH	y>!||q=!!"I!#2126Ir]IaL)! 	  	

 ~~djjm499EEOO^^DKKN+
F11$++a.,Z[r   c                    [        U R                  U5      5      nU R                  UR                  S      nUR	                  [
        R                  " UR                  S   [        R                  R                  US/5      5        g r  )
r   r  rv  r  rr  r   rx  r0   rR  r  )rE  r   selectedr-   s       r   r   /SymbolicShapeInference._infer_NonMaxSuppression   sc    t99$?@^^DKKN+
F11$++a.$BRBRBXBX[cefZghir   c                 >   U R                  US5      n[        U R                  USS5      5      nU R                  UR                  S      nUR                  [        R                  " UR                  S   UR                  R                  R                  X#/5      5        g rh  )r  r   r  rv  r  rr  r   rx  r   r   r*   )rE  r   
input_ranknz_lenr-   s        r   r   %SymbolicShapeInference._infer_NonZero%  sz    ))$2
T77aCD^^DKKN+
F11$++a."''BUBUB_B_blauvwr   c                    U R                  US5      nU R                  US5      n[        USS5      n[        U[	        U5      S-   5      n[        / US U Q[        U5      (       d  U R                  U5      OUPX$S  Q5      nU R                  UR                  S      nUR                  [        R                  " UR                  S   U R                  UR                  S      R                  R                  R                   U5      5        g )Nr   rP   rC   r!  r  )r  r  r   rE   rQ   r8   r4   r  rv  r  rr  r   rx  rj  r   r   r*   )rE  r   r6   depthrC   r  r-   s          r   r   $SymbolicShapeInference._infer_OneHot,  s    ++D!4##D!,T62.#D#k*:Q*>?.Ud#@J5@Q@Q2248W\ U#
	 ^^DKKN+
))Atzz!}-22>>HH	
r   c           	         [        U R                  5      S::  a  [        US5      nOU R                  US5      nU R	                  US5      n[        U5      nUbR  [        U5      SU-  :X  d   e[        X2S U X$S  SS9 VVVs/ s H  u  pVnXV-   U-   PM     nnnnU R                  U5        OU R                  XA5      nU R                  UR                  S      R                  R                  R                  n	U R                  UR                  S      n
U
R                  [         R"                  " UR                  S   U	[%        U5      5      5        g s  snnnf )N
   r'  rP   r   r  Fr&  )rM   rh  r   r  r  rQ   r  r  r  rv  rj  r   r   r*   r  rr  r   rx  r8   )rE  r   r'  r6   rD   r&   pad_uppad_downr  	output_tpr-   s              r   r   !SymbolicShapeInference._infer_PadA  s=   T\\"b( v.D&&tQ/D++D!4;t9D((( ,/{$Ke]b+c+c'Ax 
X%+c   &&7 #66tBONN4::a=166BBLL	^^DKKN+
))$++a.)E_`oEpq	
s   Ec           
      :   U R                  U5      nU R                  U5        UR                   Hi  nU(       d  M  U R                  U   nUR	                  [
        R                  " UUR                  R                  R                  [        U5      5      5        Mk     g r)   )r=  r  r  rv  rr  r   rx  r   r   r*   r8   )rE  r   r6   r  r-   s        r   r   "SymbolicShapeInference._infer_Pool[  sz    33D9"";/A"BKK--GG''11.{;	 r   c                    U R                  US5      nU R                  US5      nU R                  X#5      nU R                  UR                  S      nU R                  UR                  S      nUR                  [        R                  " UR                  S   UR                  R                  R                  U5      5        g rh  )r  r  rv  rj  r  rr  r   rx  r   r   r*   )rE  r   shape0r  r  t0r-   s          r   r1  -SymbolicShapeInference._infer_aten_bitwise_orj  s    q)q)**6:	^^DJJqM*^^DKKN+
F11$++a."''BUBUB_B_ajklr   c           	         U R                  US5      n[        U5      nU R                  US5      nU R                  US5      nU R                  US5      nUb  Ub  Uc   e[        XS5      n[        Xc5      n/ n[	        U5       H  u  pXU4;  d  M  UR                  U	5        M!     X%   n
X&   nUS:  a/  [        R                  " S[        R                  " XU-
  5      5      nO.[        R                  " S[        R                  " X-   U5      5      nUR                  U5        UR                  S   (       a  U R                  UR                  S      nUR                  [        R                  " UR                  S   U R                  UR                  S      R                  R                   R"                  [%        U5      5      5        g g Nr   rP   r  r"  )r  rQ   r  rE   r  r  r>   r~   r   r  rv  rr  r   rx  rj  r   r   r*   r8   )rE  r   r6   rD   offsetr  r  r  r   valr  r  
diag_shaper-   s                 r   r2  +SymbolicShapeInference._infer_aten_diagonalr  s   ++D!4;$$T1-""4+""4+!d&64;KKK#D/#D/	!+.HC,&  % / ""Q;1eii&HIJ1eii&HIJ$;;q>A/BKK--KKNNN4::a=166BBLL.y9 r   c           	         U R                  US5      n[        U5      nUS;   d   eU R                  US5      nUS-
  nU(       a  UO[        U R	                  USU5      5      n/ US S QUPnU R
                  UR                  S      nUR                  [        R                  " UR                  S   [        R                  R                  [        U5      5      5        g )Nr   rP   r  rP   r!  )r  rQ   r  r   r  rv  r  rr  r   rx  r0   rR  r  r8   )	rE  r   r6   rD   num_samplesr\  last_dimr  r-   s	            r   r5  .SymbolicShapeInference._infer_aten_multinomial  s    ++D!4;v~~))$2AX"-;3t7Y7YZ^`ace7f3g4Sb)484^^DKKN+
))A  &&*<8	
r   c           
      @   U R                  US5      n[        U5      S:X  d   eS Vs/ s H  o0R                  USU5      PM     snUSS & U R                  U5        [	        UR
                  5       H  u  p4U(       d  M  U R                  U   nUS:X  a  [        R                  R                  O9U R                  UR                  S      R                  R                  R                  nUR                  [        R                   " XF[#        U5      5      5        M     g s  snf )Nr      r  r"  rE  rP   )r  rQ   r  r  r  r  rv  r0   rR  r  rj  r   r   r*   rr  r   rx  r8   )rE  r   r6   r7   r  r-   r*   s          r   r3  )SymbolicShapeInference._infer_aten_pool2d  s    ++D!4;1$$$TZ[TZq>>tQJTZ[BC"";/dkk*DA"B23q&((..dnnTZZXY]>[>`>`>l>l>v>vIKK55aD^_jDklm + \s   Dc                 |   U R                   UR                  S      n[        UR                  5      S:X  am  UR	                  [
        R                  " UR                  S   U R                   UR                  S      R                  R                  R                  / 5      5        g [        UR                  5      S:X  d   eU R                  US5      nUc   eU R                  US5      nUc1  U R                  US5      nU R                  U(       a  UOUS-
  U5      nOCU R                  US5      n[        U[        U5      5      nUS U nU(       a  US/-  nXgUS-   S  -  n[        U5      nUR	                  [
        R                  " UR                  S   U R                   UR                  S      R                  R                  R                  U5      5        U R                   UR                  S      nUR	                  [
        R                  " UR                  S   [         R"                  R$                  U5      5        g )Nr   rP   r"  r  )rv  r  rQ   rj  rr  r   rx  r   r   r*   r  r  r  r  rE   r8   r0   rR  r  )	rE  r   r-   keepdimr   rD   r  r$   vi1s	            r   r4  )SymbolicShapeInference._infer_aten_minmax  s   ^^DKKN+tzz?aKK--KKNDNN4::a=$A$F$F$R$R$\$\^` tzz?a'''))$2G&&&%%dA.C{++D!4#77TTUXW[\--dA6*3E
;$Tc{ QC'LcAgi 005lCLKK--KKNDNN4::a=$A$F$F$R$R$\$\^j
 ..Q0CLL66t{{1~tGWGWG]G]_klmr   c           	         U R                  US5      nU R                  US5      nU R                  US5      nU R                  US5      nUb8  Ub5  Ub2  U[        U5      :  d   eX#   U-
  U-  S-   X#'   UR                  U5        O [        U5      nU R	                  US-   U5      nU R                  U5        UR                  S   (       a  U R                  UR                  S      nUR                  [        R                  " UR                  S   U R                  UR                  S      R                  R                  R                  [        U5      5      5        g g r  )r  r  rQ   r  r  r  r  rv  rr  r   rx  rj  r   r   r*   r8   )rE  r   r6   	dimensionsizesteprD   r-   s           r   r6  )SymbolicShapeInference._infer_aten_unfold  s<   ++D!4''a0	""4+""4+ T%5$:Js;////&1&<t&C%Lq%PK"t${#D224!8TBK"";/;;q>A/BKK--KKNNN4::a=166BBLL.{; r   c                    S nUR                   S   (       d  / nOU R                  US5      nU R                  US5      nUb~  U R                  US5      nUb$  [        U[	        U5      5      nU(       a  SXS'   O,XS	 O)[	        U5      nU R                  U(       a  UOUS-
  U5      nU R                  U5        [        U5      nUR                  S   (       am  Ubi  U R                  UR                  S      nUR                  [        R                  " UR                  S   [        R                  R                  U5      5        g g g NrP   r  r   )rj  r  r  rE   rQ   r  r  r8   r  rv  rr  r   rx  r0   rR  r  )rE  r   r  r   r   r6   rD   r-   s           r   r7  )SymbolicShapeInference._infer_aten_argmax  s   	zz!}I%%dA.C))$2G""33D!<?.sC4DEC+,(',{+D"&":":74PTWXPXZ^"_K**;76{C	;;q>i3A/BKK55dkk!ndFVFVF\F\^ghi 4>r   c                    U R                  U5        U R                  US5      nUb  [        U5      S:w  a  US   OS nU R                  US5      nU R                  UR
                  S      R                  R                  R                  nS H  nUR                  U   (       d  M  U R                  UR                  U      nUR                  [        R                  " UR                  U   UUb  UO[        U R                  XS5      5      Ub  [        U5      O[        U R                  XS5      5      /5      5        M     g )Nr      r  rP   )_propagate_shape_and_typer  rQ   r  rv  rj  r   r   r*   r  rr  r   rx  r   r  rV   )rE  r   r  r  grouprF  r7   r-   s           r   r8  -SymbolicShapeInference._infer_aten_group_norm  s   &&t,oodA.)5#k:Ja:OKNUY##D!,~~djjm499EEOOA{{1~~^^DKKN311A$!"AC8Z8Z[_de8f4g $)#4 !*% 0%()K)KDUV)W%X r   c                    S nU R                  US5      nUb  US S nU R                  US5      nUbB  X$ Vs/ s H1  n[        U5      [        R                  L a  UR                  5       OUPM3     sn-  nOE[        U5      nU[        SU5       Vs/ s H  n[        U R                  USU5      5      PM!     sn-  nUR                  S   (       a  Ub  U R                  UR                  S      R                  R                  R                  nU R                  UR                  S      n	U	R                  [         R"                  " UR                  S   X5      5        g g g s  snf s  snf Nr   r  rP   )r  r  r   r;   r<   rS   rQ   r  r   r  r  rv  rj  r   r*   rr  r   rx  )
rE  r   r  r  output_sizedim_sizerD   r7   rF  r-   s
             r   r9  +SymbolicShapeInference._infer_aten_upsample  s>   	oodA."#BQI--dA6K&juvju^fh2881KhmmoQYYjuvv	;'[`abdh[ij[iVWc$"D"DT1a"PQ[ijj	;;q>i3>>$**Q-8==IISSLA/BKK55dkk!nl^_ 4>	 w ks   8E&E!c                     U R                  U5        S HE  nU[        UR                  5      :  d  M  UR                  U   (       d  M4  U R                  USUS9  MG     g )N)rP   r  r"  r  rP   input_indexoutput_indexr-  rQ   r  )rE  r   r7   s      r   r   0SymbolicShapeInference._infer_BatchNormalization*  sO    &&t, A3t{{##A..tQR.S r   c           	      t   U R                   UR                  S      nU R                  U5      n[        S U 5       5      (       a\  [	        US   5      n[	        US   5      n[	        US   5      n[
        R                  " [
        R                  " XT-
  U-  5      S5      /nOU R                  U5      /nU R                  U5        UR                  [        R                  " UR                  S   U R                   UR                  S      R                  R                  R                   [#        U5      5      5        g )Nr   c              3   (   #    U  H  oS Lv   M
     g 7fr)   rB   )rO  r7   s     r   rQ  6SymbolicShapeInference._infer_Range.<locals>.<genexpr>6  s     1j}jr  rP   r  )rv  r  r  rT  rV   r>   r~   r0  r  r  rr  r   rx  rj  r   r   r*   r8   )rE  r   r-   
input_datastartlimitdeltar  s           r   r   #SymbolicShapeInference._infer_Range3  s    ^^DKKN+2248
1j111jm,Ejm,Ejm,E$yy7N)OQRSTO#AA$GHO""?3
))Atzz!}-22>>HH*?;	
r   c                 
   [        USS5      n[        U R                  5      S:  Ga  [        UR                  5      S:  Ga  U R                  US5      nU R                  UR                  S      nUc  U(       d   eUR                  [        R                  " UR                  S   U R                  UR                  S      R                  R                  R                  [        U R                  U R!                  US5      U5      5      5      5        g U R#                  US5      n/ nU Vs/ s H  n[%        U[        U5      5      PM     nn['        U5       H7  u  pX;   a  U(       a  UR)                  S5        M$  M&  UR)                  U	5        M9     UR                  [        R                  " UR                  S   U R                  UR                  S      R                  R                  R                  U5      5        g g g s  snf )NkeepdimsrP      r   )r   rM   rh  rQ   rj  r  rv  r  rr  r   rx  r   r   r*   r8   r  r  r  rE   r  r  )
rE  r   	keep_dimsaxesr-   r$   r  ar7   r&   s
             r   r   'SymbolicShapeInference._infer_ReduceSumF  s   !$
A6	T\\"b(S_q-@&&tQ/DA/B|  y11Atzz!}5::FFPP243K3KDL`L`aeghLiko3pq a0!EIJT,QE
;TJ%e,DAy$(//2 % %++A. - 11Atzz!}5::FFPP$/ .A(  Ks   *H c                 Z    [        U R                  5      S:  a  U R                  U5        g g )N   )rM   rh  r   r  s     r   r   (SymbolicShapeInference._infer_ReduceMeang  s&    T\\"b(!!$' )r   c                     [        US5      n[        USS5      nUS:X  aF  US/:X  a>  U R                  U5      S   nUb&  [        U5      U R                  UR                  S   '   g g g g )NrG  rD  rP   r   )r   r  r]   r  r  )rE  r   rG  rF  r  s        r   r   (SymbolicShapeInference._infer_ReduceProdl  so    T6*!$
A6	>dqck006q9D3G3M  Q0   *>r   c                    U R                  US5      nU R                  US5      nUb  Uc  g U R                  US5      S   nSU[        U5      [        U5      /nU R                  UR                  S      R
                  R                  R                  nU R                  UR                  S      nUR                  [        R                  " UR                  S   Xe5      5        g r)  )r  r  r   rv  rj  r   r   r*   r  rr  r   rx  )rE  r   seq_lenreal_seq_len	num_headsr  rF  r-   s           r   r(  2SymbolicShapeInference._infer_RelativePositionBiast  s    %%dA.**43?l2))$215		3w<\1BC	~~djjm499EEOO^^DKKN+
F11$++a.,Z[r   c                 X   U R                  US5      nU R                  UR                  S      nUc  U R                  US5      n[	        U5      S:X  d   eUS   n[        U5      (       d   eUR                  [        R                  " UR                  S   UR                  R                  R                  [        U R                  XQ5      5      5      5        GOBU R                  US5      nSnU H  nXx-  nM	     / n	Sn
Sn[        U5       H{  u  p[        U5      [         R"                  L a  U	R%                  U5        O2US:X  a  U	R%                  Xl   5        XU   -  nOU	R%                  U5        US:X  a  Un
Mo  US:w  d  Mw  X-  nM}     U	R'                  S5      S:  d   eSU	;   a  X{-  nXU
'   U R)                  U	5        UR                  [        R                  " UR                  S   UR                  R                  R                  [        U	5      5      5        U R+                  U5        g )NrP   r   r!  r  )r  rv  r  r  rQ   r4   rr  r   rx  r   r   r*   r8   r  r  r  r>   rY  r  countr  r  )rE  r   shape_valuer-   shape_shape
shape_rankinput_sympy_shapetotalr&   r  deferred_dim_idxnon_deferred_sizer7   r  s                 r   r   %SymbolicShapeInference._infer_Reshape  s   ))$2^^DKKN+//$2K{#q((($QJj))))KK--KKNGG''11.t/G/G
/YZ !% 5 5dA >E&	 ' O! !!+.7ell*#**1-!V#**+<+?@(9a<P(P%#**1-7'($!V(9(=% / #((,q000_$44; 01&&7KK--KKNGG''11.? 	  &r   c                 R   U R                   UR                  S      nU R                  US5      n[        U R                  5      S::  a  U R                  US5      nUb  [        X4SS9 VVs/ s H1  u  pV[        R                  " [        R                  " XV-  5      5      PM3     nnnU R                  U5        UR                  [        R                  " UR                  S   U R                   UR                  S      R                  R                   R"                  [%        U5      5      5        g g U R                  US5      nU R                  US5      nU R                  US5      n	U	bL  U	 Vs/ s H-  n[        R                  " [        R                  " U5      5      PM/     nnU R                  U5        OUb  ['        U5      n
[)        US5      S	:X  a1  ['        U5      SU
-  :X  d   e[+        U5      S U
 n[+        U5      U
S  nOS/U
-  nS/U
-  n[+        U5      n[        X;XSS9 VVVVs/ s H8  u  p]p[        R                  " [        R                  " X^U-
  -  U-  5      5      PM:     nnnnnU R                  U5        O"U R-                  U R/                  US5      U5      nUR                  [        R                  " UR                  S   U R                   UR                  S      R                  R                   R"                  [%        U5      5      5        g s  snnf s  snf s  snnnnf )
Nr   r  rP   Fr&  r  r"  coordinate_transformation_modetf_crop_and_resize)rv  r  r  rM   rh  r  r  r>   simplifyrr  r  rr  r   rx  rj  r   r   r*   r8   rQ   r   rH   r  r  )rE  r   r-   rY  scalesr&   rP  r  roisizesrD   	roi_startroi_endr?  endscales                   r   r   $SymbolicShapeInference._infer_Resize  s   ^^DKKN+ 11$:T\\"b(((q1F!CFGXinCo#Co41ENN5;;qu#56Co   # **?;11Atzz!}5::FFPP2?C " %%dA.C((q1F''a0E KP"Q5a5>>%++a.#A5"Q**?;#6{ 'GHL``s8q4x/// $S	%4 0I"3i.G!"d
I cDjGf 144ERYjo0p#0p,# NN5;;q%K/@5/H#IJ0p   # **?;"&":":4;O;OPTVW;XZ^"_KK--KKNNN4::a=166BBLL.?I#  #R#s   *8L*4L(?L!
c                    [        US5      n[        US5      n[        USS/U-  5      n[        UR                  5      U-
  n[        U5       VVs/ s H"  u  pg[	        XpR                  XU-   5      5      PM$     nnn[        UR                  5      [        UR                  5      :  d   eUR                  S [        UR                  5       n[        U5       H  u  piU	R                  n
U	R                  U R                  UR                  U      5        Xe:  aB  U	R                  R                  R                  R                  nUR                  XXe-
        5        Xl        M     U R                  X5        [        UR                  5      U-
  n[        USS/U-  5      n[!        U R                  UR                  S      R                  5      US      n[        UR                  5       H  u  pnU R                  U   nXe:  a  [!        UR                  U   R                  5      n[	        XU-
     [        U5      S-   5      n/ US U QUPUUS  QnUR                  ["        R$                  " XR                  U   R                  R                  R&                  U5      5        OUR                  UR                  U   5        Xl        M     g s  snnf )Nr  num_scan_inputsscan_input_axesr   scan_output_axesr!  rP   )r   rQ   rj  r  rE   r  r
   rr  rv  r   r   r$   r   rW  r  r  r'   r   rx  r*   )rE  r   r  rk  rl  num_scan_statesr7   axr  r  subgraph_namescan_input_dimnum_scan_outputsrm  r  r-   r$   r  s                     r   r   "SymbolicShapeInference._infer_Scan  sr    v.'.?@'.?!AVWdjj/O; #?3
3 !%9%9$O@S%TU3 	 
 8>>"c$**o555"..):3tzz?;/EAGGMKKtzz!}56#!#!4!4!:!:!>!>%%nQEX5Y&Z[#G 0 	!!$1t{{+o=(/AA3IYCYZ24>>$**R.3Q3V3VWXghjXkldkk*DA"B#1(//!2D2I2IJ./?O@S/TVYZ_V`cdVdeL%/L>LE'(OLF99!__Q=O=T=T=`=`=j=jlqrsHOOA./G +'
s   )K	c                 8   U R                  US5      nU R                  UR                  S      nUR                  [        R
                  " UR                  S   U R                  UR                  S      R                  R                  R                  U5      5        g r   rb  )rE  r   rc  r-   s       r   r   -SymbolicShapeInference._infer_ScatterElements
  sv    __T1-
^^DKKN+
))Atzz!}-22>>HH	
r   c                    U R                  US5      nU R                  UR                  S      nUb  [        U5       H  u  pEUb  M
  [        R
                  R                  5       n[        U R                  USU5      5      Ul	        UR                  R                  R                  R                  U   R                  U5        M     g g r   )r  rv  r  r  r0   rU  rV  r   r  rl  r   r   r$   r   rr  )rE  r   r  r-   r\  r&   r  s          r   r   (SymbolicShapeInference._infer_SequenceAt  s    OOD!,	^^DKKN+ "9-=//99;$'(J(J4QRTV(W$X!##))--b1::7C . !r   c                 F   U R                   UR                  S      nU R                   UR                  S      nU R                   UR                  S      nUR                  U5        UR                  S   Ul        U R                  USUR                  UR                  5        g rh  )rv  rj  r  rr  r
   r^  r   )rE  r   vi_seq	vi_tensor
vi_out_seqs        r   r  ,SymbolicShapeInference._infer_SequenceInsert!  s}    

1.NN4::a=1	^^DKKN3
F#++a.
tQ
Hr   c                 \    U R                  US5      U R                  UR                  S   '   g r   )r  r  r  r  s     r   r  #SymbolicShapeInference._infer_Shape*  s'    +/+@+@q+IQ(r   c                 >   U R                  US5      n[        U5      U R                  UR                  S   '   U R                  UR                  S      R                  [        R                  " UR                  S   [        R                  R                  / 5      5        g r   )r  r]   r  r  rv  rr  r   rx  r0   rR  r  )rE  r   r6   s      r   r  "SymbolicShapeInference._infer_Size-  sw    ++D!4+?+LQ(t{{1~&//))$++a.$:J:J:P:PRTU	
r   c           	      	  ^ ^^ S mU4S jmUU 4S jn[        T R                  5      S::  aX  [        US5      n[        US5      n[        US5      nU(       d  [        [	        [        U5      5      5      nS/[        U5      -  nO[        T R                  US5      S	S
9n[        T R                  US5      S	S
9nT R                  US5      nT R                  US5      nUc(  Uc  Ub"  [        [	        [        Ub  UOU5      5      5      nUc  Uc  Ub  S/[        Ub  UOU5      -  n[        US	S
9n[        US	S
9nT R                  US5      nUb  Uc`  Uc2  [	        [        U5      5       H  nT R                  USU5      Xx'   M     GO[        U5      nU H  nT R                  USU5      Xx'   M     GO[        X4XVSS9 GHd  u  ppU" XU   5      n
[        U
5      (       a  U
T R                  :  a  Xx   n
OU
T R                  * ::  a  U	S:  a  SOSn
O[        Xx   5      (       a&  U
S:  a  [        SXU   -   5      n
[        XU   5      n
OiU
S:  a!  U
S:  a  [         R"                  " XU   5      OU
n
OA[        Xx   5      (       a  [         R"                  " XU   5      n
O T" XU   5      (       d  Xx   n
U" XU   5      n	[        Xx   5      (       a(  [        U	5      (       a  [        S[        XU   5      5      n	[         R*                  " X-
  U-   US:  a  SOS-   U-  5      Xx'   GMg     T R-                  U5        T R.                  UR0                  S      nUR3                  [4        R6                  " UR0                  S   UR8                  R:                  R<                  [        U5      5      5        UR>                  S   T R@                  ;   a  US/:X  a  Ub  [        U5      S:X  a  Ub  [        U5      S:X  a  Ub  [        U5      S:X  a  T R@                  UR>                  S      n[9        U5      [        L d5  [9        U5      [B        RD                  L aE  [        URF                  5      S:X  a+  XS   US   US   2   T R@                  UR0                  S   '   g g g g g g g g g g g ! [$         a&    [&        R)                  SU
 SXx    S35        Xx   n
 GNf = f)Nc                 v  ^ ^ [        T [        R                  5      (       d
   ST  35       e[        [	        T R
                  5      5       Vs/ s H3  n[        T R
                  U   [        R                  5      (       d  M1  UPM5     nn[	        U5      S:X  a  US   mU U4S jnU" S5      U" S5      /$ T /$ s  snf )Nz%Expected a sum of two arguments, got rP   r   c                 4  > [        TR                  5      n[        UT   [        R                  5      (       d   ST SUT    35       e[        UT   R                  5      S:X  d   SUT    35       eUT   R                  U    UT'   [        R                  " U6 $ )Nz#Expected a sympy.Min() at position z, got r  z5Expected a sympy.Min() with exactly 2 arguments, got )rH   argsr  r>   r   rQ   rb   )arg_idxreplacedexprmin_poss     r   replace_min_with_argVSymbolicShapeInference._infer_Slice.<locals>.flatten_min.<locals>.replace_min_with_argB  s    #DIIH%hw&7CC =gYfXV]M^L_`C x0556!; OPXY`PaObc; )1(9(>(>w(GHW% 99h//r   )r  r>   rb   r  rQ   r  r   )r  r  min_positionsr  r  s   `   @r   flatten_min8SymbolicShapeInference._infer_Slice.<locals>.flatten_min<  s    dEII..^2WX\W]0^^.,1#dii.,Ak,ASZPTPYPYZ]P^`e`i`iEjS,AMk=!Q&'*	0 )+(+  6M' ls   0B6 B6c                 v  >  [        X:*  5      $ ! [         a     Of = f [        X:  5      $ ! [         a     Of = f [        U * U* :  5      $ ! [         a     Of = f [        U* U * :*  5      $ ! [         a     Of = f [        X-
  S:  5      $ ! [         a    [        S T" X-
  5       5       5      s $ f = f)Nr   c              3   >   #    U  H  n[        US :  5      v   M     g7fr  )boolr  s     r   rQ  JSymbolicShapeInference._infer_Slice.<locals>.less_equal.<locals>.<genexpr>h  s     D1CA4Q<<1Cs   )r  r/  rT  )rU   yr  s     r   
less_equal7SymbolicShapeInference._infer_Slice.<locals>.less_equalS  s    AF|# AF|# QB1"H~% QB1"H~% EAEQJ'' EDQU1CDDDEsM    
. 
;;A 
AA A0 0
A=<A=B $B87B8c                    >  T" SU 5      (       d'  [        U 5      (       a  U TR                  * ::  a  U $ X-   $  U $ ! [         a    [        R	                  SU  S35         U $ f = f)z/normalizes a negative index to be in [0, bound)r   zCannot determine if z < 0)r4   rB  r/  rZ  r[  )r]  boundr  rE  s     r   handle_negative_indexBSymbolicShapeInference._infer_Slice.<locals>.handle_negative_indexj  su    C!!U++!%((Ut}}n-D$ =(	 , L  C!5eWDABLCs   0; ; #A"!A"r  rG  startsendsrP   Tr  r  r"  r  r   Fr&  r!  zUnable to determine if z <= z, treat as equal)$rM   rh  r   rH   r  rQ   rY   r  r  r  r8   r  r4   rB  r   r   r>   r   	ExceptionrZ  r[  ra  r  rv  r  rr  r   rx  r   r   r*   rj  r  r;   arrayr$   )rE  r   r  rG  r  r  stepsr  r7   rP  er  r-   input_sympy_datar  r  s   `             @@r   r  #SymbolicShapeInference._infer_Slice4  s   	.	E.
	 T\\"a' v.D"42F v.DE#f+./C#d)OET00q9TJF4..tQ74HD&&tQ/D''a0E|V^E#0Bf"MNO}fncF,>&DII440DET2E//a8>T\|s?34A)-)K)KDRSUV)WO& 5 #=_"MA)-)K)KDRSUV)WO&  "$EJ
a)!Q-?@a==DMM)+.t}}n,!"QAB#O$677q5 #Aq1+='= >A1#56q5DEE		!Q-? @q  "/"455!IIa);<3#-a1C#D#D$3$6
 *!Q-?@o011jmmAs1a&89:A%*^^QUQYA"ST5UZ[4[%\"? KB &&7^^DKKN+
))A##--*?;	
 JJqMT---"Fq  D	Q!E
a#//

1>$%-%&"((2s;K;Q;Q7RVW7W3C1IPTUVPWZ_`aZbDb3c  Q0 8X2	   "  ! ! #  ./  ) 3"NN-DQCtOL^K__o+pq / 2A3s   R,SSc                 |   U R                   UR                  S      nU R                   UR                  S      R                  R                  R
                  n[        USS 5      nUb  UnX2R                  R                  l        UR                  R                  R                  R                  [        R                  " 5       5        [        UR                  5      S:  a_  U R                  US5      nU R                   UR                  S      nUR                  [        R                  " UR                  X55      5        g g )Nr   r  rP   )rv  r  rj  r   r   r*   r   r$   rr  r0   rU  rQ   r  r   rx  r
   )rE  r   r-   r*   specified_output_typerc  s         r   r  5SymbolicShapeInference._infer_SoftmaxCrossEntropyLoss  s    ^^DKKN+NN4::a=166BBLL	 !.dM4 H ,-I(1%
!!**4+@+@+BCt{{aq1JA/BKK55bggyUV  r   c                    U R                  US5      n[        [        USS5      [        U5      5      n[	        U R
                  5      nUS:  a"  [        US5      nU R                  US5      b   eO!U R                  US5      n[        US5      b   eUcF  [        UR                  5      nX4   [        R                  " U5      -  /U-  nU R                  U5        O&U Vs/ s H  n[        R                  " U5      PM     nn[        [        U5      5       H  n	U R                  UR                  U	      n
U
R                  U" UR                  U	   U R                  UR                  S      R                  R                   R"                  [%        / US U QXi   PX4S-   S  Q5      5      5        XR                  U
R&                  '   M     g s  snf )Nr   rC   rE  r  rP   )r  rE   r   rQ   rM   rh  r  r  r>   r?   r  r  rv  rr  rj  r   r   r*   r8   r
   )rE  r   make_value_info_funcrY  rC   op_setr  num_outputsrP  r  r-   s              r   _infer_Split_Common*SymbolicShapeInference._infer_Split_Common  s    11$:#M$$BCHYDZ[4<<( B;!$0E&&tQ/777''a0E w/777=dkk*K&,u}}[/IIJ[XE&&u-/45u!U]]1%uE5U$CC 01BKK$KK$NN4::a=166BBLL./v1B5D1I/v5:/vXiqrjrjtXu/vw ')NN277# % 6s    Gc                 D    U R                  U[        R                  5        g r)   )r  r   rx  r  s     r   r  #SymbolicShapeInference._infer_Split   s      v'D'DEr   c                 D    U R                  U[        R                  5        g r)   )r  r   make_sequence_value_infor  s     r   r  -SymbolicShapeInference._infer_SplitToSequence  s      v'F'FGr   c                    U R                  US5      n[        U R                  5      nUS:  a"  [        US5      nU R	                  US5      b   eO!U R	                  US5      n[        US5      b   eUc  U Vs/ s H  oUS:w  d  M
  UPM     nnU R
                  S:  ah  U Vs/ s H  n[        U5      [        :w  d  M  UPM     nn[        U5      S:  a2  [        R                  SUR                   SUR                   SU 35        OU Vs/ s H  n[        U[        U5      5      PM     nn/ n[        [        U5      5       H  n	X;  a  UR                  X)   5        M  X)   S:X  d  [        X)   5      [        :w  d   eU R
                  S:  d  MN  [        X)   5      [        :w  d  Me  [        R                  SUR                   SUR                   SX)    S	U	 S
3	5        M     U R                   UR"                  S      n
U
R%                  [&        R(                  " UR"                  S   U R                   UR*                  S      R                  R,                  R.                  U5      5        U R1                  U5        g s  snf s  snf s  snf )Nr   rE  rG  rP   z+Symbolic dimensions in input shape of op: 'z	' node: 'z;'. Assuming the following dimensions are never equal to 1: z'. Assuming the dimension 'z' at index z of the input to be equal to 1.)r  rM   rh  r   r  rA  r   r5   rQ   rZ  r  r  r
   rE   r  r  rv  r  rr  r   rx  rj  r   r*   r  )rE  r   r  r  rG  rP  r  symbolic_dimensionsrH  r7   r-   s              r   r  %SymbolicShapeInference._infer_Squeeze  sY   oodA.4<<( B; v.D&&tQ/777&&tQ/D v.666< (3={!1fA{L=}}q 2=&P+QaCq+#&P*+a/LLEdll^S\]a]f]f\g hSSfRgi
 HLLt!(C,<=tDLL3{+,= ''7&>Q.${~2F#2MMM}}q(T+.-AS-HI$,,W`aeajaj`k l77B~6FkRSQTTsu - ^^DKKN+
))Atzz!}-22>>HH	
 	  &= >&P Ms   8	I<I<!J<J
Jc           	         U R                  US5      n/ nUbP  U R                  US5      n[        U5       H  u  pVXbU   -  nUR                  U5        M     U R	                  U5        O"U R                  U R                  US5      U5      nU R                  UR                  S      nUR                  [        R                  " UR                  S   UR                  R                  R                  [        U5      5      5        g rO   )r  r  r  r  r  r  r  rv  r  rr  r   rx  r   r   r*   r8   )	rE  r   repeats_valuer  rY  r7   r&   r  r-   s	            r   r	  "SymbolicShapeInference._infer_Tile6  s    ++D!4$ $ 5 5dA >!"34A..&&w/ 5 &&7"66t7K7KDRS7TVZ[O^^DKKN+
))A##--*?;	
r   c                    U R                  US5      n[        [        USS5      U5      nU R                  US5      n[	        U R
                  5      S::  a  [        US5      nOU R                  U5      S   nUc  U R                  U5      nO[        U5      n[        U5      [        [        4;   a  XTU'   O2U R                  US5      nXVU'   U R                  U5        [        U5      n[        [!        UR"                  5      5       Hq  nU R$                  UR"                  U      nUR'                  [(        R*                  " UR"                  U   UR                  R,                  R.                  U5      5        Ms     g )Nr   rC   r!  r  ra  rP   )r  rE   r   r  rM   rh  r  r  rV   r   r5   r   r  r  r8   r  rQ   r  rv  rr  r   rx  r   r*   )	rE  r   rD   rC   r  ra  r  r  r-   s	            r   r
  "SymbolicShapeInference._infer_TopKJ  s;   ##D!,#M$$CTJOOD!,	T\\"a'dC(A--d3A6A92248A!A7sCj dO"33D!<O$%D!&& 3?CIT[[)*CC 01BKK55dkk#6FH[H[HeHegpqr +r   c                    UR                   S   U R                  ;   a  U R                  US5      n[        US[	        [        [        [        U5      5      5      5      5      nU R                  UR                   S      n[        R                  " [        R                  " U5      R                  " U6 [        U5      S9R                  5       R                  5       U R                  UR                  S   '   g g )Nr   perm)rG  )rj  r  r  r   reversedrH   r  rQ   r;   	transposer  reshapetupleflattentolistr  )rE  r   rc  r  r>  s        r   r  'SymbolicShapeInference._infer_Transposeg  s    ::a=D,,,q1J vxU3z?=S8T/UVD))$**Q-8JRXXj199:FUSW[Yaacjjl T[[^,	 -r   c                    U R                  US5      n[        U R                  5      nUS:  a"  [        US5      nU R	                  US5      b   eO!U R	                  US5      n[        US5      b   e[        U5      [        U5      -   nU Vs/ s H  n[        Xe5      PM     nnSn/ n[        U5       H3  n	X;   a  UR                  S5        M  UR                  X'   5        US-  nM5     U R                  UR                  S      n
U
R                  [        R                  " UR                  S   U R                  UR                  S      R                  R                   R"                  U5      5        U R%                  U5        g s  snf )Nr   rE  rG  rP   )r  rM   rh  r   r  rQ   rE   r  r  rv  r  rr  r   rx  rj  r   r   r*   r  )rE  r   r  r  rG  output_rankrH  
input_axisr  r7   r-   s              r   r  'SymbolicShapeInference._infer_Unsqueezep  sb   oodA.4<<( B; v.D&&tQ/777&&tQ/D v.666+&T2>BCd$Q4dC
{#Ay##A&##K$;<a
 $ ^^DKKN+
))Atzz!}-22>>HH	
 	  &) Ds   Fc                 n   S n[        US5      b  [        R                  R                  nO'[        US5      b  [        R                  R                  nUc   e[        R
                  " 5       nUR                  S   Ul        [        R                  R                  UR                  R                  R                  R                  R                  R                  l        X#R                  R                  R                  R                  l        U R                   UR                  S      nUR#                  U5        g )Nclasslabels_int64sclasslabels_stringsr   )r   r0   rR  r  r  r1   r  r
   FLOATr   r   r*   map_type
value_typer   key_typerv  rr  )rE  r   map_key_typenew_vir-   s        r   r  $SymbolicShapeInference._infer_ZipMap  s    34@++11L4!67C++22L'''$$&kk!nX\XhXhXnXn!!++44??KKU@L!!++44=^^DKKN+
Fr   c                    U R                  US5      nU R                  US5      nU R                  US5      nUb  [        U5      S:X  d   eUb  US   OUS   nU(       Ga  [        U5      S:X  Ga  [        US5      nUb#  [        U5      S:X  d   e[	        US   5      US'   O&[        U[        5      (       a  [	        US-  5      US'   U R                  UR                  S      R                  R                  R                  nU R                  UR                  S      nUR                  [        R                  " UR                  S   Xr5      5        [        UR                  5      S:  Ga  U R                  US5      n	[        UR                  5      S:  a&  UR                  S   (       a  U R                  US5      O/ n
[        UR                  5      S:  a&  UR                  S   (       a  U R                  US5      O/ nU
(       a  [        U
5      S:X  a  U(       a  [        U5      S;   a	  US	   U
S'   OeU	(       a^  [        U	5      S:X  aO  [        U	S   [        5      (       a'  [        U
S   [        5      (       a  U	S   U
S   -   U
S'   OU
S    S
U	S    3U
S'   U R                  UR                  S      nUR                  [        R                  " UR                  Xz5      5        g [        US5      nU	S   U-  nSU	S   XS   U/nU R                  UR                  S      nUR                  [        R                  " UR                  X~5      5        g g g g )Nr   rP   r  r"  qkv_hidden_sizesr     r  r!  +rR  )r  r  rQ   r   r5   r  rv  rj  r   r   r*   r  rr  r   rx  r
   )rE  r   r$   shape_weights
shape_biastripled_hidden_sizeqkv_hidden_sizes_attrrF  r-   r  
past_shape
mask_shaperR  	head_sizepresent_shapes                  r   r  'SymbolicShapeInference._infer_Attention  s   a(a0((q1
!z?a'''/9/Ejm=YZK[SZ1_$1$8J$K!$001Q6664Q78a/552Q67a>>$**Q-8==IISSLA/BKK55dkk!nlZ[4;;!#
 #oodA69<TZZ19LQUQ[Q[\]Q^T__T15df
9<TZZ19LQUQ[Q[\]Q^T__T15df
#j/Q"6!c*o&?(22
1$[)9Q)>%k!nc::z*UV-Y\?]?],7NZ],JJqM/9!}oQ{1~>N,OJqMA7BKK = =bgg| `a !.dK @I +A) ;I%&A	q>S\$]MA7BKK = =bgg| cd3 $ %5r   c                    [        US5      nU R                  US5      nUb  US   X#S   US   /nO4U R                  US5      nUb  [        U5      S:X  d   eUS   X%S   US   /nU R                  UR
                  S      R                  R                  R                  nU R                  UR                  S      nUR                  [        R                  " UR                  S   Xd5      5        g )NrR  r,  r   rP   r"  )r   r  r  rQ   rv  rj  r   r   r*   r  rr  r   rx  )rE  r   rR  token_offset_shaper  query_layer_shaperF  r-   s           r   r  7SymbolicShapeInference._infer_GatedRelativePositionBias  s     "$4	!00q9).q19QR>SUghiUjkL $a 8$0S9J5Kq5PPP-a0)q=QSdefSghL~~djjm499EEOO^^DKKN+
F11$++a.,]^r   c                    U R                  US5      nU R                  US5      nU R                  US5      nUb  [        U5      S:X  d   eUb  US   OUS   nU(       a  [        U5      S:X  a  [        US5      nUb#  [        U5      S:X  d   e[	        US   5      US'   O&[        U[        5      (       a  [	        US-  5      US'   U R                  UR                  S      R                  R                  R                  nU R                  UR                  S      nUR                  [        R                  " UR                  S   Xr5      5        g g g )Nr   rP   r  r  r"  )r  r  rQ   r   r5   r  rv  rj  r   r   r*   r  rr  r   rx  )	rE  r   r$   r  r  r  r  rF  r-   s	            r   r"  -SymbolicShapeInference._infer_PackedAttention  s4   a(a0((q1
!z?a'''/9/Ejm=YZK[SZ1_$1$8J$K!$001Q6664Q78a/552Q67a>>$**Q-8==IISSLA/BKK55dkk!nlZ[ %5r   c                    U R                  US5      nUb  [        U5      S:X  a  UnO6U R                  US5      nUb  [        U5      S:X  d   eUS   US   US   -  /nU R                  UR                  S      R
                  R                  R                  nU R                  UR                  S      nUR                  [        R                  " UR                  S   XS5      5        g )Nr  r   r  rP   r"  )r  rQ   r  rv  rj  r   r   r*   r  rr  r   rx  )rE  r   rV  r  shape_queryrF  r-   s          r   r#  6SymbolicShapeInference._infer_PackedMultiHeadAttention  s    ))$2"s;'71'<&L//$2K*s;/?1/DDD'NKN[^,KLL~~djjm499EEOO^^DKKN+
F11$++a.,]^r   c           	         U R                  US5      nU(       Ga  [        U5      S:X  Ga  U R                  UR                  S      R                  R
                  R                  nU R                  UR                  S      nUR                  [        R                  " UR                  S   USUS   /5      5        U R                  UR                  S      nUR                  [        R                  " UR                  S   [        R                  R                  US   US   /5      5        U R                  UR                  S      nUR                  [        R                  " UR                  S   [        R                  R                  S/5      5        U R                  UR                  S      nUR                  [        R                  " UR                  S   [        R                  R                  S/5      5        g g g )Nr   r"  token_countr  rP   zbatch_size + 1r  rQ   rv  rj  r   r   r*   r  rr  r   rx  r0   rR  r  )rE  r   r$   rF  r-   vi_token_offsetvi_cumulated_seq_lenvi_max_seq_lens           r   r)  +SymbolicShapeInference._infer_RemovePadding	  s   a(SZ1_>>$**Q-8==IISSLA/BKK55dkk!nlUbdijkdlTmno"nnT[[^<O$$--dkk!nd>N>N>T>TW\]^W_afghaiVjk $(>>$++a.#A  ))--dkk!nd>N>N>T>TWgVhi "^^DKKN;N##F$A$A$++a.RVRbRbRhRhkljm$no! %5r   c                    U R                  US5      nU R                  US5      nU(       a  [        U5      S:X  a  U(       a  [        U5      S:X  a  U R                  UR                  S      R                  R
                  R                  nU R                  UR                  S      nUS   US   US   /nUR                  [        R                  " UR                  S   XF5      5        g g g g g ry  )r  rQ   rv  rj  r   r   r*   r  rr  r   rx  )rE  r   shape_inputshape_token_offsetrF  r-   r  s          r   r*  ,SymbolicShapeInference._infer_RestorePadding	  s    oodA.!__T153{+q05GCPbLcghLh>>$**Q-8==IISSLA/B.q13Ea3H+VW.YLKK55dkk!nlab Mi5G0;r   c                 &    U R                  U5        g r)   r-  r  s     r   r  &SymbolicShapeInference._infer_BiasGelu"	      &&t,r   c                 j   U R                  US5      nS nS nUGb  [        U5      S:X  a  U R                  US5      nUnUb@  [        U5      S:X  a1  U R                  US5      nUb  [        U5      S:X  a  US   US'   US   nU R                  UR                  S      R
                  R                  R                  nU R                  UR                  S      nUR                  [        R                  " UR                  S   XF5      5        O[        U5      S:X  a  [        US   [        5      (       a-  [        US   [        5      (       a  US   US   US   US   -  /nOUS   US   US    SUS    3/nUS   nU R                  UR                  S      R
                  R                  R                  nU R                  UR                  S      nUR                  [        R                  " UR                  S   XF5      5        [        UR                  5      S:  Ga  US   n	[        US5      n
S n[        U5      S:X  a4  [        US   [        5      (       a  [        US   U
-  5      O	US    S	U
 3nOUS   nU R                  US
5      nUb@  [        US   [        5      (       a  [        U[        5      (       a	  US   U-   nO
US    SU 3nXX;/nUc   e[        UR                  5      S:  a  UR                  S   (       a  UR                  S   (       a  U R                  UR                  S      nUR                  [        R                  " UR                  XM5      5        U R                  UR                  S      nUR                  [        R                  " UR                  XM5      5        g g g g g g )Nr   r"  rP   r  r  r  *rR  /r,  r  )r  rQ   r  rv  rj  r   r   r*   r  rr  r   rx  r  r5   r   r
   )rE  r   query_shapetotal_sequence_lengthrF  	key_shaper  value_shaper-   
batch_sizerR  r  r  r  s                 r   r   0SymbolicShapeInference._infer_MultiHeadAttention%	  sv    oodA. $";1$ //a8	*(S^q-@"&"5"5dA">K".3{3Cq3H*5a.Q,5aL)#~~djjm<AAMMWW^^DKKN3F99$++a.,ef[!Q&k!nc22z+a.RU7V7V$/NKNKPQNU`abUcDc#dL$/NKN{ST~FVVWXcdeXfWgDh#iL(3A%#~~djjm<AAMMWW^^DKKN3F99$++a.,ef4;;!#(^
)$<	 	{#q( &k!nc:: KNY67 +A/q<  !,AI!00q9
)!*Q-55*EZ\_:`:`0:1@U0U-3=a=/CXBY0Z-!+8M Y#///t{{#a'DKKNt{{1~A7BKK = =bgg| cdA7BKK = =bgg| cd	 @NN'3 $7 #r   c                 6   U R                  US5      nUGb  UnU R                  UR                  S      R                  R                  R
                  nUc   eU R                  UR                  S      nUR                  [        R                  " UR                  S   XC5      5        [        UR                  5      S:  a  UR                  S   (       a  UR                  S   (       a  U R                  US5      nUb  U R                  UR                  S      nUR                  [        R                  " UR                  XF5      5        U R                  UR                  S      nUR                  [        R                  " UR                  XF5      5        g g g g g g )Nr   r  rP   r  )r  rv  rj  r   r   r*   r  rr  r   rx  rQ   r  r
   )rE  r   r  r  rF  r-   r  s          r   r  =SymbolicShapeInference._infer_DecoderMaskedMultiHeadAttentionq	  sB    oodA."&L>>$**Q-8==IISSL+++A/BKK55dkk!nlab4;;!#A4;;q>!00q9
)A7BKK = =bgg| `aA7BKK = =bgg| `a	 * <J# #r   c                    U R                  US5      nUGbJ  UR                  5       nU R                  UR                  S      R                  R
                  R                  nUc   e[        U5      S S S 4u  pVpxUR                   Hi  n	U	R                  S:X  a  U	R                  nUS:X  a  XV-   OUnM-  U	R                  S:X  a  U	R                  nMK  U	R                  S:X  d  M]  U	R                  nMk     UR                  U5        X&   U-
  U-  S-   X6'   U R                  UR                  S      n
U
R                  [        R                  " UR                  S   XC5      5        g g )Nr   r   r!  r%  r&  rP   )r  r  rv  rj  r   r   r*   rQ   r	   r
   r7   r  r  rr  r   rx  )rE  r   r  r  rF  rD   r   r%  r&  r   r-   s              r   r/  *SymbolicShapeInference._infer_UnfoldTensor	  s4   oodA."&++-L>>$**Q-8==IISSL+++$'$4dD$$F!Dt99%&&C(+r	$*sCYY&(66DYY&(66D ' %!,!1D!8T AA ELA/BKK55dkk!nlab' #r   c           	      n   U R                  US5      nUb  [        U5      nUS:X  d  US:X  d   eX#S-
     X#S-
     pTSSU SU SU SU 3/n[        R                  R                  nU R
                  UR                  S      nUR                  [        R                  " UR                  S   Xv5      5        g g )	Nr   r  r"  rP   zmax(z, z	) <= O < z + )
r  rQ   r0   rR  r  rv  r  rr  r   rx  )	rE  r   r  	shape_lenMr  r  rF  r-   s	            r   r  0SymbolicShapeInference._infer_DynamicTimeWarping	  s     oodA."K(I>Y!^331}-{q=/IqaS1#YqcQC@AL++11LA/BKK55dkk!nlab #r   c                 &    U R                  U5        g r)   r  r  s     r   r  &SymbolicShapeInference._infer_FastGelu	  r  r   c                 &    U R                  U5        g r)   r  r  s     r   r  "SymbolicShapeInference._infer_Gelu	  r  r   c                 &    U R                  U5        g r)   r  r  s     r   _infer_QuickGelu'SymbolicShapeInference._infer_QuickGelu	  r  r   c                 &    U R                  U5        g r)   r  r  s     r   r  *SymbolicShapeInference._infer_GemmFastGelu	  r  r   c                 &    U R                  U5        g r)   r  r  s     r   r  (SymbolicShapeInference._infer_GemmFloat8	  r  r   c                    U R                  U5        [        UR                  5      S:  Ga  [        US5      nUc  SnU R	                  US5      nUGb  [        U5      n[        X$5      nUS U [        XB-
  5       Vs/ s H  nSPM     sn-   nU R                  UR                  S      R                  R                  R                  nU[        R                  R                  :X  d  U[        R                  R                  :X  a  [        R                  R                   nU R                  UR                  S      nUR#                  [$        R&                  " UR                  S   Xv5      5        [        UR                  5      S:  aP  U R                  UR                  S      nUR#                  [$        R&                  " UR                  S   Xv5      5        g g g g s  snf )NrP   rC   r!  r   r  )r-  rQ   r  r   r  rE   r  rv  rj  r   r   r*   r0   rR  FLOAT16BFLOAT16r  rr  r   rx  )	rE  r   rC   x_shaperD   r  
mean_shape
mean_dtyper-   s	            r   r  0SymbolicShapeInference._infer_LayerNormalization	  s|   &&t,t{{a v.D|oodA.G"7|+D7$Ud^%:L.M:LQq:L.MM
!^^DJJqM:??KKUU
!1!1!9!99Z4K[K[KdKd=d!%!1!1!7!7J^^DKKN3F99$++a.*abt{{#a'A7BKK = =dkk!nj ef ( #   /Ns   <Gc                 &    U R                  U5        g r)   r  r  s     r   r  1SymbolicShapeInference._infer_LongformerAttention	  r  r   c                    U R                  US5      nU R                  US5      n[        U5      S:X  a  [        U5      S:X  d   e/ UQUS   PnU R                  UR                  S      R                  R
                  R                  nU R                  UR                  S      nUR                  [        R                  " UR                  S   XT5      5        [        UR                  5      S:  a  UR                  S   (       an  US   /nU R                  UR                  S      nUR                  [        R                  " UR                  S   [        R                  R                  U5      5        [        UR                  5      S:  aP  U R                  UR                  S      nUR                  [        R                  " UR                  S   XT5      5        g g r1  r  )rE  r   input_ids_shapeword_embedding_shaper  word_embedding_dtyper-   mask_index_shapes           r   r  5SymbolicShapeInference._infer_EmbedLayerNormalization	  sx   //$2#tQ7?#q(S1E-F!-KKKBB*>q*AB#~~djjm<AAMMWW^^DKKN+
F11$++a.BVeft{{aDKKN / 23A/BKK55dkk!ndFVFVF\F\^nopt{{a A/BKK55dkk!nFZij	  r   c                     U R                  U5        [        UR                  5      S:  a  U R                  USS5        g g )Nr"  r   r9  r  s     r   r-  4SymbolicShapeInference._infer_SkipLayerNormalization	  s:    &&t, t{{a**4A6  r   c                 &    U R                  U5        g r)   r  r  s     r   r  'SymbolicShapeInference._infer_GroupNorm	  r  r   c                 &    U R                  U5        g r)   r  r  s     r   r$  ,SymbolicShapeInference._infer_PagedAttention	  r  r   c                    U R                   UR                  S      R                  R                  R                  nU R                  US5      nUb  U R                   UR                  S      nUR                  [        R                  " UR                  X#5      5        U R                   UR                  S      nUR                  [        R                  " UR                  X#5      5        UR                  S   S:w  a'  UR                  S   S:w  a  U R                  USS5        g UR                  S   S:X  a  UR                  S   S:X  d   e[        US5      n[        US5      nU R                  US5      nUb  US   n[        U[        5      (       aj  [        XSU-  -   -  5      n	XY-  US'   U R                   UR                  S      nUR                  [        R                  " UR                  S   X'5      5        g g g )Nr   r"  rP   r  rG   rR  kv_num_heads)rv  rj  r   r   r*   r  r  rr  r   rx  r
   r-  r   r  r  r5   )
rE  r   rF  r  r-   rR  r%  r  hidden_sizer  s
             r   r  1SymbolicShapeInference._infer_GroupQueryAttention	  s   ~~djjm499EEOO((q1
! A/BKK55bgg|XYA/BKK55bgg|XY::a=B4::a=B#6**4A6 ::a=B&4::a=B+>>>%dK8I(~>L//$2K&)!nk3// #Kq<?O3O$P QI%.%:KNA7BKK = =dkk!nl hi	 0 'r   c                 &    U R                  U5        g r)   )r  r  s     r   r.  -SymbolicShapeInference._infer_SparseAttention
  s    ''-r   c                     U R                  USS5        [        UR                  5      S:  a  U R                  USS5        g g rh  r9  r  s     r   r,  +SymbolicShapeInference._infer_SkipGroupNorm
  s<    &&tQ2t{{a**4A6  r   c                    U R                  US5      nU R                  US5      nU(       a  U(       a  [        US   [        5      (       a  Un[        US   S-  5      US'   U R                  UR                  S      nU R                  UR
                  S      R                  R                  R                  nUR                  [        R                  " UR                  Xd5      5        g g g g ry  )r  r  r5   rv  r  rj  r   r   r*   rr  r   rx  r
   )rE  r   r  
bias_shaper  r-   rF  s          r   r  +SymbolicShapeInference._infer_BiasSplitGelu
  s    oodA.__T1-
:*Z]C*H*H&L!*Q-!"34LOA/B>>$**Q-8==IISSLKK55bgg|Z[ +I:;r   c                 &    U R                  U5        g r)   r  r  s     r   r  %SymbolicShapeInference._infer_BiasAdd"
  r  r   c                 l   [        UR                  5      S:X  a  U R                  U5        g [        UR                  5      S:X  a#  U R                  USSS9  U R                  USSS9  g [        UR                  5      S:X  a4  U R                  USSS9  U R                  USSS9  U R                  USSS9  g g )NrP   r  r   r6  r"  )rQ   r  r-  r  s     r   r+  -SymbolicShapeInference._infer_RotaryEmbedding%
  s    t{{q **40"**4QQ*O**4QQ*O"**4QQ*O**4QQ*O**4QQ*O	 #r   c                 :   [        US5      nU(       d   SUR                   S35       e[        US5      nU(       d   SUR                   S35       eSSKJn  [        US5      R	                  5       nU" U5      nU R
                  UR                  S      nUR                  [        R                  " UR                  S   [        R                  R                  / 5      5        UGb  / n/ n	[        [        UR                  5      5       Hp  n
U R!                  X5      nUR#                  U5        U R
                  UR                  U
      R$                  R&                  R(                  nU	R#                  U5        Mr     U" XU	5      u  p[        U5      [        U5      s=:X  a  [        UR                  5      S	-
  :X  d>  O   SU S
[        U5       S[        U5       S[        UR                  5      S	-
   S3	5       e[        [        UR                  5      S	-
  5       H\  nUS	-   nU R
                  UR                  U      nUR                  [        R                  " UR                  U   X   X   5      5        M^     g [        [        UR                  5      S	-
  5       H|  nU R
                  UR                  US	-         nU R+                  X?   U5      n[-        U5      n[        R                  " UR                  US	-      X/   U5      nUR                  U5        M~     g )Noutput_tensor_typesz
PythonOp 'z'' has no output_tensor_types attribute.output_tensor_ranksz'' has no output_tensor_ranks attribute.r   )get_shape_inference_function	func_namerP   z' returned z shapes and z dtypes, but expected z	 outputs.)r   r
   onnxruntime.capi._pybind_stater6  r-  rv  r  rr  r   rx  r0   rR  r  r  rQ   rj  r  r  r   r   r*   r  r8   )rE  r   r4  r5  r6  r7  shape_infererr-   input_shapesinput_dtypesr7  r$   input_dtypeoutput_shapesoutput_dtypesr7   r8  r6   rk  s                      r   r%  &SymbolicShapeInference._infer_PythonOp2
  s   +D2GH"cj;b$cc"+D2GH"cj;b$cc"O!$4;;=	4Y? ^^DKKN+
F11$++a.$BRBRBXBXZ\]^$LL$S_5:##E*"nnTZZ-DEJJVV``##K0	  6
 ,9\+Z(M}%]);UDKK@PST@TU YK{3}3E2FlSVWdSeRf g  #DKK 01 45Y@U 3t{{+a/0 1u^^DKK$=>11$++l2K]M]_l_op 1 3t{{+a/0^^DKKA$67"667J7MtT2;?#::4;;q1u;MObOeglm
J' 1r   c                 8   U R                  X5      nU R                  UR                  U      R                  R                  R
                  nU R                  UR                  U      nUR                  [        R                  " UR                  U   XT5      5        g r)   )
r  rv  rj  r   r   r*   r  rr  r   rx  )rE  r   r7  r8  r$   rF  r-   s          r   r-  0SymbolicShapeInference._propagate_shape_and_typea
  sr    2~~djj&=>CCOOYY^^DKK56
F11$++l2K\abr   c                 Z    [        U5      [        :w  a  gSU;  a  gXR                  ;   a  gg)NFunk__T)r   r   r=  )rE  rm  s     r   _is_none_dim#SymbolicShapeInference._is_none_dimg
  s.    	?c!)#+++r   c                 J    U H  nU R                  U5      (       d  M  Us  $    g r)   )rD  )rE  	out_shapeouts      r   _is_shape_contains_none_dim2SymbolicShapeInference._is_shape_contains_none_dimp
  s'    C  %%
  r   c                 #  ^ ^$^% U=(       d    0 T l         T R                  R                  R                  S5        T R	                  SS9  [        5       T l        T R                  R                  R                   GH  n[        U5      nUc  M  [        UR                  5      (       a?  UR                  R                  R                  R                  R                  R                  nO*UR                  R                  R                  R                  n[!        U5       H6  u  pVUb  M
  [#        T R%                  UR&                  U5      5      XE   l        M8     T R                  R+                  U Vs/ s H  n[        U5      ["        L d  M  UPM     sn5        GM     T R                   Hu  nUT R,                  ;   a?  T R,                  U   n	U	T R.                  ;   d   eT R.                  U	   T R.                  U'   MR  [0        R2                  " USSS9T R.                  U'   Mw     [4        R6                  " 5       T l        T R8                  R;                  T R                  5        T R8                  R                  R                  S5        0 n
U$4S jm$T R8                  R                  R<                   H  nT$" U5      XR>                  S   '   M     / n[A        T R                  R                  R                  5      [A        T R                  R                  RB                  5      -    Vs1 s H  o"R&                  iM     snm%[E        U%4S jT R                  R                  R>                   5       5      (       a"  T R                  R                  R<                  nGOd[G        U%4S	 jT R                  R                  R>                   5       5      (       Gd+  [I        U5      nT R                  R                  R<                   Ho  nUR>                  S   T%;  d  M  [G        U%4S
 jXR>                  S       5       5      (       d  MC  T%R+                  UR>                  5        URK                  U5        Mq     U[I        U5      :X  aC  [G        U%4S jT R                  R                  R>                   5       5      (       d  [M        S5      e[G        U%4S	 jT R                  R                  R>                   5       5      (       d  GM+  U GHb  n[G        U 4S jUR                   5       5      (       d   eT RO                  U5        SnURP                  T RR                  ;   a!  T RR                  URP                     " U5        GOIURP                  S;   a  T RT                  UR>                  S      n[I        UR                  R                  R                  R                  5      S:X  a3  [4        RV                  RX                  UR                  R                  l        OURP                  S:X  a  URZ                  S:X  a  UR\                   H  nUR&                  S:X  d  M  [_        UR`                  [b        5      (       a  UR`                  Re                  S5      OUR`                  nUT Rf                  ;   a  SnT Rf                  U   " U5          O   T Rh                  S:  ax  [j        Rm                  URP                  S-   UR&                  -   5        [!        UR                  5       H0  u  nn[j        Rm                  SUUUT Rn                  ;   a  SOS5        M2     URP                  S;   a  T RT                  UR>                  S      n[I        [q        UR                  5      5      n[s        [I        UR                  5      5       Vs/ s H  nT Ru                  X5      PM     nn[s        UURP                  S;   a  SOS-
  5       H\  nU Vs/ s H+  n[I        U5      U-   U:  d  M  U[I        U5      U-
  U-      PM-     nn[I        U5      S:  d  ML  T Rw                  USS9  M^     [s        [I        UR>                  5      5       GH  nURP                  S:X  d  URP                  S:X  a  US;   a  M,  URP                  S:X  a  [I        UR>                  5      S:  a  MW  T RT                  UR>                  U      nUR                  nURy                  S 5      nUS!;  Ga5  T Rh                  S:  Ga!  US":X  a  UR                  R                  Ry                  S 5      nUS#:X  a  [j        Rm                  S$R{                  UR>                  U   [#        [        U5      5      [4        RV                  R|                  R                  UR                  R                  R                  R                  R                  5      5      5        OQ[j        Rm                  S%UR>                  U    S&U 35        O([j        Rm                  S%UR>                  U    SU 35        GM  [        U5      nUR                  R                  [4        RV                  RX                  :H  nT Rh                  S:  a  [j        Rm                  S%UR>                  U    SU< S'[4        RV                  R|                  R                  UR                  R                  R                  5       35        UR>                  U   T R                   ;   a;  [j        Rm                  S([#        T R                   UR>                  U      5      -   5        Ub  S U;   d   T R                  U5      (       d
  U(       d  GM
  T R                  (       GaR  URP                  S);   Ga$  [s        [I        UR                  5      5       Vs/ s H  nT Ru                  X5      PM     nnURP                  S;   a  S U;   d  T R                  U5      (       a  S U;   a  UR                  S 5      nO UR                  T R                  U5      5      nU Vs/ s H  n[I        U5      [I        U5      -
  U-   PM     nn[I        US   5      S:  a  US   [I        US   5      S-
  :  d   e[I        US   5      S:  a  US   [I        US   5      S-
  :  d   eO7URP                  S*:X  a%  T Ru                  US5      T R                  US5      /nO/ nU(       a  [s        [I        U5      5       H  nUU   b  T R                  UU   5      (       d  M$  U Vs/ s H  n[I        U5      [I        U5      -
  U-   PM     nn[I        U5      S:  d  M_  T R                  [        UUSS+9 VVs/ s H0  u  pUS:  d  M  [        X   5      (       a  X   O[#        X   5      PM2     snn5        M     ST lH        OST lH        OST lH        T R                  SL Ga  URP                  T RR                  ;  Ga  U(       Gd  U=(       a    US L =(       d    [I        U5      S:H  n U (       a&  T R                  (       a  T R                  US5      OS,nO[I        U5      nUS:  Gag  T R                  UUU5      n!U(       a;  T RT                  UR                  S      R                  R                  R                  n"O UR                  R                  R                  n"UR;                  [        R                  " UR&                  U"[        U!5      5      5        T Rh                  S:  a  U (       a=  [j        Rm                  S-URP                   S.UR&                   S/UR&                   S035        T Rh                  S:  aJ  [j        Rm                  S%UR>                  U    SU!< S'UR                  R                  R                   35        ST lH        GMp  T Rh                  S:  d  T R                  (       a  U(       GaV  [j        Rm                  S1URP                  UR&                  5        [j        Rm                  S25        UR                   HO  nUT RT                  ;   a$  [j        Rm                  T RT                  U   5        M7  [j        Rm                  S3U 35        MQ     [j        Rm                  S45        UR>                   HO  n#U#T RT                  ;   a$  [j        Rm                  T RT                  U#   5        M7  [j        Rm                  S3U# 35        MQ     T R                  (       a2  U(       d+  [j        Rm                  S5[#        T R,                  5      -   5            g   GMe     ST lH        gs  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snnf )6Nrk  T)rn  )r  positivert  c           	        > U R                    Vs1 s H  o(       d  M  UiM     nn/ nU R                  S:X  a  [        U S5      [        U S5      /nOU R                  S;   a  [        U S5      /nU H  nUR                   Vs1 s H  oR                  iM     nn[        5       nUR                   H  nUR                  UR                  5        M      UR                   H2  nUR                  T" U5       Vs/ s H  oU;  d  M
  UPM     sn5        M4     UR                  U5        UR                    H  nUR                  UR                  5        M      M     U$ s  snf s  snf s  snf )Nry   r  r  )rz   r   r  )
rj  r  r   rt  r
   rU  r   rw  r  discard)	r   r7   namesr  gg_outputs_and_initializersg_prereqn
get_prereqs	           r   rT  6SymbolicShapeInference._infer_impl.<locals>.get_prereq
  s(    $

0
1aQ
E0I||t#!$6!$6	 !11*489	>?mm-Lmffm*-L5A.55ahh?  AOO
1$e1JdAdQ$ef  X&AMM!&&) !  L) 1 .M
 %fs   
EEE4	E!E!r   c              3   @   >#    U  H  oR                   T;   v   M     g 7fr)   r
   rO  r  sorted_known_vis     r   rQ  5SymbolicShapeInference._infer_impl.<locals>.<genexpr>
  s     L2KQvv(2K   c              3   @   >#    U  H  oR                   T;   v   M     g 7fr)   rW  rX  s     r   rQ  rZ  
  s     W=V&&O3=Vr[  c              3   >   >#    U  H  o(       d  M  UT;   v   M     g 7fr)   rB   )rO  r7   rY  s     r   rQ  rZ  
  s!      G6UYZ,_,6Us   
c              3   @   >#    U  H  oR                   T;   v   M     g 7fr)   rW  rX  s     r   rQ  rZ  
  s      I7P!FFo-7Pr[  zInvalid model with cyclic graphc              3   R   >#    U  H  o(       d  M  UTR                   ;   v   M     g 7fr)   )rv  r  s     r   rQ  rZ  
  s     DJq!*qDNN*Js   
''F)ConvTransposeATenzorg.pytorch.atenoperatorr)  r  z: z  Input %s: %s %srG   r  r  rP   r  r   r   r  r   r   )r   sparse_tensor_typeNr   r   z  {}: sequence of {} {}z  z: sequence of r  z  Sympy Data: )rb   r   r   rp   r{   r  r|   rj   r   r  rs   LessGreaterLessOrEqualGreaterOrEqualr   r~   rr   r&  r!  zPossible unknown op: z node: z, guessing z shapez0Stopping at incomplete shape inference at %s: %sznode inputs:znot in known_vi_ for znode outputs:z	Merging: )Or  rh  ri  r  r^  rU  r>  rj  r.   r"   r   r   r*   r   r$   r   r  r   r  r
   rl  rw  r<  r=  r>   rY  r0   rq  r  rr  r   r  rH   rt  r  rT  rQ   r  r  r  r  r0  rv  rR  	UNDEFINEDrJ   r	   r  rP  bytesr-  r:  rA  rZ  r  ru  r'   r  r  r  r   formatrS  rT  rI  r?  r]  r  rD  re  r  r4   r;  r@  r  r  r   rx  r8   )&rE  start_sympy_datar7   r  
input_dimsi_dimr   r&   rP  s_mergeprereq_for_noderS  sorted_nodesold_sorted_nodes_lenr   known_aten_opr-   r   aten_op_namer
   r  r  r  r  out_typeout_type_kindseq_cls_typerG  out_type_undefinedshapesr  dim_idxis_unknown_opr  	out_dtyper  rT  rY  s&   `                                   @@r   r  "SymbolicShapeInference._infer_implv
  s   +1r%%l3##T#:!e##))A3A6K"166""VV11;;GGMMQQ
VV//5599
'4
;25d6L6LQVVUZ6[2\J%/ 5
 &&;'Q;a$q'S.;'QR *" $$AD)))//2$"5"5555)-)<)<W)E##A& */aPT)U##A& % (dll+%%m4 	. ##((A+5a=OHHQK( ) +/0B0B0H0H+IDQUQ]Q]QcQcQoQoLp+pq+pa66+pqL$,,2D2D2K2KLLL<<--22LWT\\=O=O=V=VWWW'*<'8$ LL..33DAo=3 G6EkkRSn6UG D D (..t{{;$++D1 4 (3|+<<S I7;||7I7I7P7PI F F $$EFF WT\\=O=O=V=VWWW !DDDJJDDDDD((.!M||t///  .t4!22 ^^DKKN3rww**00445:484D4D4N4NBGG''1'DKK;M,M NNDyyJ.AKDFFTYAZAZtvv}}W'=`d`f`f'4+C+CC,0M 44\B4H + }}q T\\D0499<=(4GAtLL!4aPTX\XjXjPj}prs  5
 || 
  
 ^^DKKN38AB?DS_?UV?U!T__T5?U	Vx@n0n1tuvwAAJeAcRSfWXj\dNd7qQ(!2Q!67Ge7|a'///N x
 S-. LL$<<Pr@rVm<<#44T[[9IA9M ^^DKK$4577 ( 3 3G < !(SS}}q((O;+3+A+A+K+K+V+VW^+_L+}< &$=$D$D(,C(8(+,Eb,I(J(,(8(8(A(A(F(F,.GG,A,A,K,K,W,W,a,a)*%&!" !'r$++c2B1C>R^Q_-` a"LL2dkk#.>-?r-)QR5b9	%-%9%9%C%CtGWGWGaGa%a"==1$LLT[[-.bQt?O?O?X?X?]?]^`^e^e^q^q^{^{?|>}~ {{3'4+;+;;%5D<L<LT[[Y\M]<^8_%_` )ty/@DDdDdenDoDo'''''<< , & INcRVR\R\oH^%_H^1dood&>H^F%_#|| 0  
 $(9#48X8XYb8c8c'+y'8.7ood.C.7ood>^>^_h>i.jV\.]V\QRs1vI/F/LV\G.]+.vay>A+='!*sSYZ[S\~`aOaBa$a+a+.vay>A+='!*sSYZ[S\~`aOaBa$a+a!\\X5 !%a 8 $a 8&F
 &(F!',S^'<#,S>#=dFWFWXabeXfFgFg$, SY*YRXQ3q6C	N+BS+HRX*Y#&w<!#3$($=$= 9<FGTY8Z)*8Z/0Av -TJqt4D4DAD#ad),S8Z)*%& (= )-DI(-DI$)	 yyE)dll$BRBR.R[h(:(i	T@Q@hUXYbUcghUh( IMH_H_t';';D!'DegH (+9~H#q=(,(@(@4QT(UI1,0NN4::a=,I,N,N,Z,Z,d,d	 -/GG,?,?,I,I	KK & = =$&GG$-$>y$I!"  $}}q0#0$*LL*?~WUYU^U^T__jkmkrkrjssy(z%& $(==1#4$*LL2dkk#6F5Gr)VWXZX_X_XkXkXuXuWv1w$x(,DI$}}q(0@0@DV%WY]YeYegkgpgpq^4!%A DNN2 &T^^A-> ? &/DQC-H I	 ",
 _5!%A DNN2 &T^^A-> ? &/DQC-H I	 "-
  ++4F"LLs4;P;P7Q)QR Y /c !~ 	G	 (Rb rz WeZ &` /^& +Z)*sM   ,AE%
AE%
AE*)AE/-AE4AE41AE96$AE>/$AF
?AF'AFc                     U R                   R                  R                   HG  nUR                  U R                  ;   d  M  UR                  U R                  UR                     5        MI     g r)   )rh  ri  r  r
   rv  rr  )rE  r  s     r   r  -SymbolicShapeInference._update_output_from_vi  sE    ll((//F{{dnn,v{{ ;< 0r   c                    [        U 5      nU(       a  US:  a  [        R                  S5        g [        XX45      nSnUR	                  U 5        UR
                  (       a#  UR                  5       nUR
                  (       a  M#  UR                  5         U(       d+  [        R                  " UR                  SSS9  [        S5      eUR                  $ )N   z.Only support models of onnx opset 7 and above.Fzsym_shape_infer_temp.onnxT)save_as_external_dataz#Incomplete symbolic shape inference)rM   rZ  r[  r_   r|  r;  r  r  r0   
save_modelrh  r  )r{  rF  rG  rH  rI  
onnx_opsetr  all_shapes_inferreds           r   r  #SymbolicShapeInference.infer_shapes  s    u%
zA~NNKL#9'O`#j # ,,U3&++":"F"F"H '+++ 779"OO4<<>YquvABB'///r   )r:  r?  r0  rs  r@  ru  r>  rB  rv  rh  rD  r;  rC  r<  r=  r  r  rA  )rG   )F)TT)FF)r   r   )r   )Tr)   )FFr   )__name__
__module____qualname____firstlineno__rK  re  r^  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r=  r  rM  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   r   r   r   r1  r2  r5  r3  r4  r6  r7  r8  r9  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  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%  r-  rD  rI  r  r  staticmethodr  __static_attributes__rB   r   r   r_   r_   }   s   KZ+*Z
(
<27	/w
De'N6(p#JC&:
 
[BH8\>6:

?4'j
('
R
&D
2



__\<b| <B	

"l89%v)A\&j
x
*
4m D
"
nnB.j20` T
&B(
N\2'h0d!F	

DIJ
ZdxW")>FH.'`
(s:!'F+eZ_,\$_p(c-JeXb,c.c---))g(-k*7--j8.7
\-P-(^cwr	=
 0 0r   r_   c                     [         R                  " 5       n U R                  SSSS9  U R                  SSS9  U R                  SS	S
SS9  U R                  SS[        SS9  U R                  SSS
SS9  U R                  SS[        SS9  U R                  SSS
SS9  U R                  SSS
SS9  U R                  SSSS9  U R                  SS[        S S9  U R	                  5       $ )!Nz--inputTzThe input model file)requiredhelpz--outputzThe output model file)r  z--auto_mergez:Automatically merge symbolic dims when confliction happens
store_trueF)r  actiondefaultz	--int_maxzGmaximum value for integer to be treated as boundless for ops like slicer  )r  r   r  z--guess_output_rankz;guess output rank to be the same as input 0 for unknown opsz	--verbosezHPrints detailed logs of inference, 0: turn off, 1: warnings, 3: detailedr   z--save_as_external_dataz%Saving an ONNX model to external dataz--all_tensors_to_one_filez(Saving all the external data to one filez--external_data_locationz+The file location to save the external filez./)r  r  z--external_data_size_thresholdz$The size threshold for external datai   )argparseArgumentParseradd_argumentr5   
parse_args)parsers    r   parse_argumentsr    sN   $$&F
	D7MN

)@A
I	   V	   J	   W	   !4	   #7	   ":  
 (3	   r   __main__zinput model: zoutput model z!Doing symbolic shape inference...TF)r  all_tensors_to_one_filelocationsize_thresholdconvert_attributezDone!r)   )1r  loggingnumpyr;   r0   r>   r   r   r   	packagingr   parse__version__	getLoggerr  rZ  r   r   r"   r'   r+   r.   r2   r8   r4   rE   rM   rV   rY   r]   r_   r  r  inforj  r  r  loadrF  rG  rH  rI  out_mpr  r  r  external_data_locationexternal_data_size_thresholdsaverB   r   r   <module>r     s  
      6 6 }}T%%&'--*@@ @@			8	$c'0
2_r.
F-0 F-0RZ3l zD
KK$**,-{{Odkk12
KK34#00		$**F {{v%%OO&*(,(D(D44#@@"' IIfdkk*G { r   