
    8f[                        d dl mZ d dlmZ d dlmZ d dlmZ dZ G d de	      Z
de
d	efd
Zdg dg fdZ G d de	      Z G d de
      Z G d de      Z e       e
_         G d de
      Zd)dedefdZde
de
dedefdZdedededefdZdededefd Zdedededefd!Zdefd"Zd#e
d$ed%efd&Zd*d#e
d'ed%efd(Zy)+    )RuleContext)ATNIllegalStateException)StringIOFc                   L    e Zd ZdZdZdZeZdefdZd Z	d Z
d Zd	efd
Zd Zy)PredictionContextNi   cachedHashCodec                     || _         y Nr   )selfr   s     C:\Program Files (x86)\Steam\steamapps\common\Skyrim Special Edition\MO2\plugins\installer_wizard\lib\antlr4\PredictionContext.py__init__zPredictionContext.__init__3   s
    ,    c                      yNr    r   s    r   __len__zPredictionContext.__len__6       r   c                     | | j                   u S r   )EMPTYr   s    r   isEmptyzPredictionContext.isEmpty:   s    tzz!!r   c                 V    | j                  t        |       dz
        | j                  k(  S Nr
   )getReturnStatelenEMPTY_RETURN_STATEr   s    r   hasEmptyPathzPredictionContext.hasEmptyPath=   s&    ""3t9q=1T5L5LLLr   indexc                     t        d      )Nzillegal!r   r   r"   s     r   r   z PredictionContext.getReturnState@   s    #J//r   c                     | j                   S r   r   r   s    r   __hash__zPredictionContext.__hash__C       """r   )__name__
__module____qualname__r   r    globalNodeCountidintr   r   r   r!   r   r&   r   r   r   r	   r	      sH    
 E $O	B.-c -"M03 0#r   r	   parentreturnStatec                 H    | t        d      S t        t        |       |f      S )N )hashr.   r/   s     r   calculateHashCoder4   F   s#    ~48L4f{0K+LLr   parentsreturnStatesc                 `    d}t        | |      D ]  \  }}t        |t        ||      f      } |S r   )zipr2   r4   )r5   r6   hr.   r/   s        r   calculateListsHashCoder:   I   s>    	A"7L9 >!&v{;<=>Hr   c                   0    e Zd Zd ZdefdZdefdZd Zy)PredictionContextCachec                 "    t               | _        y r   )dictcacher   s    r   r   zPredictionContextCache.__init__U   s    V
r   ctxc                     |t         j                  k(  rt         j                  S | j                  j                  |d       }||S || j                  |<   |S r   )r	   r   r?   get)r   r@   existings      r   addzPredictionContextCache.add\   sN    !'''$***::>>#t,O

3
r   c                 :    | j                   j                  |d       S r   )r?   rB   )r   r@   s     r   rB   zPredictionContextCache.gete   s    zz~~c4((r   c                 ,    t        | j                        S r   )r   r?   r   s    r   r   zPredictionContextCache.__len__h   s    4::r   N)r(   r)   r*   r   r	   rD   rB   r   r   r   r   r<   r<   S   s&    ' )' )r   r<   c                   r     e Zd Zededefd       Zdedef fdZd ZdefdZ	defdZ
d	 Zd
 Zd Z xZS )SingletonPredictionContextr.   r/   c                 d    |t         j                  k(  r| t        j                  S t        | |      S r   )r	   r    rH   r   r3   s     r   createz!SingletonPredictionContext.createn   s.    +>>>6>-333-fkBBr   c                 X    t        ||      }t        | 	  |       || _        || _        y r   )r4   superr   	parentCtxr/   )r   r.   r/   hashCode	__class__s       r   r   z#SingletonPredictionContext.__init__v   s+    $V[9"&r   c                      yr   r   r   s    r   r   z"SingletonPredictionContext.__len__|   r   r   r"   c                     | j                   S r   )rM   r$   s     r   	getParentz$SingletonPredictionContext.getParent   s    ~~r   c                     | j                   S r   )r/   r$   s     r   r   z)SingletonPredictionContext.getReturnState   s    r   c                     | |u ry|yt        |t              sy| j                  |j                  k(  xr | j                  |j                  k(  S NTF)
isinstancerH   r/   rM   r   others     r   __eq__z!SingletonPredictionContext.__eq__   sK    5=]E#=>##u'8'88^T^^u=^^r   c                     | j                   S r   r   r   s    r   r&   z#SingletonPredictionContext.__hash__   r'   r   c                     | j                   dnt        | j                         }t        |      dk(  r/| j                  | j                  k(  ryt        | j                        S t        | j                        dz   |z   S )Nr1   r   $ )rM   strr   r/   r    )r   ups     r   __str__z"SingletonPredictionContext.__str__   si    >>)Rs4>>/Br7A:4#:#::4++,,t''(3.33r   )r(   r)   r*   staticmethodr	   r-   rJ   r   r   rR   r   rY   r&   r`   __classcell__rO   s   @r   rH   rH   l   si    C' Cc C C'/ 'S 'c  3  _#4r   rH   c                   6     e Zd Z fdZd Zd Zd Zd Z xZS )EmptyPredictionContextc                 B    t         |   d t        j                         y r   )rL   r   r	   r    )r   rO   s    r   r   zEmptyPredictionContext.__init__   s    0CCDr   c                      y)NTr   r   s    r   r   zEmptyPredictionContext.isEmpty   s    r   c                 
    | |u S r   r   rW   s     r   rY   zEmptyPredictionContext.__eq__   s    u}r   c                     | j                   S r   r   r   s    r   r&   zEmptyPredictionContext.__hash__   r'   r   c                      y)Nr\   r   r   s    r   r`   zEmptyPredictionContext.__str__   s    r   )	r(   r)   r*   r   r   rY   r&   r`   rb   rc   s   @r   re   re      s    E#r   re   c                   ^     e Zd Zdedef fdZd Zd ZdefdZdefdZ	d	 Z
d
 Zd Z xZS )ArrayPredictionContextr5   r6   c                 T    t         |   t        ||             || _        || _        y r   )rL   r   r:   r5   r6   )r   r5   r6   rO   s      r   r   zArrayPredictionContext.__init__   s'    /FG(r   c                 B    | j                   d   t        j                  k(  S r   )r6   r	   r    r   s    r   r   zArrayPredictionContext.isEmpty   s!       #%6%I%IIIr   c                 ,    t        | j                        S r   )r   r6   r   s    r   r   zArrayPredictionContext.__len__   s    4$$%%r   r"   c                      | j                   |   S r   )r5   r$   s     r   rR   z ArrayPredictionContext.getParent   s    ||E""r   c                      | j                   |   S r   )r6   r$   s     r   r   z%ArrayPredictionContext.getReturnState   s      ''r   c                     | |u ryt        |t              syt        |       t        |      k7  ry| j                  |j                  k(  xr | j                  |j                  k(  S rU   )rV   rl   r2   r6   r5   rW   s     r   rY   zArrayPredictionContext.__eq__   sV    5=E#9:$Z4;&$$e&8&88XT\\5===XXr   c                    | j                         ryt               5 }|j                  d       t        dt	        | j
                              D ]  }|dkD  r|j                  d       | j
                  |   t        j                  k(  r|j                  d       K|j                  t        | j
                  |                | j                  |   9|j                  d       |j                  t        | j                  |                |j                  d        |j                  d       |j                         cd d d        S # 1 sw Y   y xY w)	Nz[][r   z, r\   r]   null])r   r   writeranger   r6   r	   r    r^   r5   getvalue)r   bufis      r   r`   zArrayPredictionContext.__str__   s    <<>Z 	"3IIcN1S!2!234 &Q3IIdO$$Q'):)M)MMIIcN		#d//234<<?.IIcNIIc$,,q/23IIf%& IIcN<<>	" 	" 	"s   DEEc                     | j                   S r   r   r   s    r   r&   zArrayPredictionContext.__hash__   r'   r   )r(   r)   r*   listr   r   r   r-   rR   r   rY   r`   r&   rb   rc   s   @r   rl   rl      sI    
)t )$ )
J
&#c #(3 (Y"(#r   rl   NatnouterContextc                 R   |t         j                  }|j                  |t         j                  u rt        j                  S t	        | |j                        }| j
                  |j                     }|j                  d   }t        j                  ||j                  j                        S r   )r   r   rM   r	    PredictionContextFromRuleContextstatesinvokingStatetransitionsrH   rJ   followStatestateNumber)r~   r   r.   state
transitions        r   r   r      s    "(( %9J9J)J &&& .c<3I3IJFJJ|112E""1%J%,,VZ5K5K5W5WXXr   abrootIsWildcard
mergeCachec                    | |k(  r| S t        | t              rt        |t              rt        | |||      S |r$t        | t              r| S t        |t              r|S t        | t              r"t	        | j
                  g| j                  g      } t        |t              r"t	        |j
                  g|j                  g      }t        | |||      S r   )rV   rH   mergeSingletonsre   rl   rM   r/   mergeArrays)r   r   r   r   s       r   merger      s     	!t!/0ZC]5^q!^Z@@ q02Hq02H 102"AKK=1==/B101"AKK=1==/Bq!^Z88r   c                    |0|j                  | |fd       }||S |j                  || fd       }||S t        | ||      }||||| |f<   |S | j                  |j                  k(  rot        | j                  |j                  ||      }|| j                  k(  r| S ||j                  k(  r|S t
        j                  || j                        }|||| |f<   |S d }| |u s%| j                  %| j                  |j                  k(  r| j                  }|d| j                  |j                  g}| j                  |j                  kD  r|j                  | j                  g}||g}	t        |	|      }|||| |f<   |S | j                  |j                  g}| j                  |j                  g}	| j                  |j                  kD  r0|j                  | j                  g}|j                  | j                  g}	t        |	|      }|||| |f<   |S r   )rB   	mergeRootr/   r   rM   rH   rJ   rl   )
r   r   r   r   previousmergedr.   singleParentpayloadsr5   s
             r   r   r   3  s   >>1Q%.O>>1Q%.Oq!^,F!!'J1v}}amm#q{{AKKLQ[[ HQ[[ H
 ,2261==I!!'J1v 6akk-!++q{{2J;;L#7H}}q}},]]AMM;#\2G+GX>F%%+
Aq6"M ]]AMM3KK.==1==(7HQ[[2G':!!'J1vr   c                 &   |rG| t         j                  k(  rt         j                  S |t         j                  k(  rt         j                  S y | t         j                  k(  r#|t         j                  k(  rt         j                  S | t         j                  k(  r6|j                  t         j                  g}|j                  d g}t        ||      S |t         j                  k(  r6| j                  t         j                  g}| j                  d g}t        ||      S y r   )r	   r   r/   r    rM   rl   )r   r   r   r   r5   s        r   r   r     s    !'''$***!'''$***  !'''A1B1H1H,H$***#)))(9(L(LNHT+G)'8<<#)))(9(L(LNHT+G)'8<<r   c                 4   ||j                  | |fd       }|1t        r)t        dt        |       z   dz   t        |      z   dz          |S |j                  || fd       }|1t        r)t        dt        |       z   dz   t        |      z   dz          |S d}d}d}d gt	        | j
                        t	        |j
                        z   z  }d gt	        |      z  }	|t	        | j
                        k  rV|t	        |j
                        k  r=| j                  |   }
|j                  |   }| j
                  |   |j
                  |   k(  rq| j
                  |   }|t        j                  k(  xr
 |
d u xr |d u }|
d uxr |d uxr |
|k(  }|s|r|
|	|<   |||<   nt        |
|||      }||	|<   |||<   |dz  }|dz  }nX| j
                  |   |j
                  |   k  r|
|	|<   | j
                  |   ||<   |dz  }n||	|<   |j
                  |   ||<   |dz  }|dz  }|t	        | j
                        k  r|t	        |j
                        k  r=|t	        | j
                        k  rNt        |t	        | j
                              D ]+  }| j                  |   |	|<   | j
                  |   ||<   |dz  }- nMt        |t	        |j
                              D ]+  }|j                  |   |	|<   |j
                  |   ||<   |dz  }- |t	        |	      k  r6|dk(  r't        j                  |	d   |d         }|||| |f<   |S |	d| }	|d| }t        |	|      }|| k(  r:|| || |f<   t        r)t        dt        |       z   dz   t        |      z   dz          | S ||k(  r:|||| |f<   t        r)t        dt        |       z   dz   t        |      z   dz          |S t        |	       |||| |f<   t        r9t        dt        |       z   dz   t        |      z   dz   t        t              z          |S )	NzmergeArrays a=z,b=z -> previousr   r
   z -> az -> bz -> )rB   _trace_atn_simprintr^   r   r6   r5   r	   r    r   rx   rH   rJ   rl   combineCommonParentsM)r   r   r   r   r   r{   jkmergedReturnStatesmergedParentsa_parentb_parentpayloadbothDollarsax_axmergedParentpr   s                     r   r   r     sw   >>1Q%.u%5c!f%<U%B3q6%I.%XYO>>1Q%.u%5c!f%<U%B3q6%I.%XYO 	
A	A	A3q~~#6ann9M#MNFS!344M
C
Ac!..&9$999Q<99Q<>>!annQ//nnQ'G!%6%I%II B$,B19T1A T)Bhd.BZRZHZEe#+a (/"1%$XxT#/a (/"1%FAFA^^Aq~~a00'M!$%NN1$5q!FA'M!$%NN1$5q!FA	Q7 C
Ac!..&9$9< 	3q~~q#ann-. 	A yy|M!$%NN1$5q!FA	
 q#ann-. 	A yy|M!$%NN1$5q!FA	 	3}6/66}Q7GI[\]I^_F%$*
Aa5!M%a*/!4#M3EFF qy! !J!u5!1#a&!8!>s1v!Eg!MNqy! !J!u5!1#a&!8!>s1v!Eg!MN'"
Aa5u-c!f4U:3q6A&HQOPMr   c                     t               }t        dt        |             D ]  }| |   }|j                  |d       |||<   ! t        dt        |             D ]  }|| |      | |<    y r   )r>   rx   r   rB   )r5   uniqueParentsr   r.   s       r   r   r     sw    FM1c'l# +VT*2$*M&!+
 1c'l# /"71:.
/r   contextcontextCachevisitedc                    | j                         r| S |j                  |       }||S |j                  |       }|||| <   |S d}d gt        |       z  }t        dt        |            D ]m  }t	        | j                  |      ||      }|s|| j                  |      us5|s2t        t        |             D cg c]  }| j                  |       }}d}|||<   o |s|j                  |        | || <   | S d }	t        |      dk(  rt        j                  }	nMt        |      dk(  r)t        j                  |d   | j                  d            }	nt        || j                        }	|j                  |	       |	||	<   |	|| <   |	S c c}w )NFr   Tr
   )r   rB   r   rx   getCachedPredictionContextrR   rD   r	   r   rH   rJ   r   rl   r6   )
r   r   r   rC   changedr5   r{   r.   r   updateds
             r   r   r   (  s   {{7#H(H#Gfs7|#G1c'l#  +G,=,=a,@,PWXfG$5$5a$889>s7|9LMA7,,Q/MMGAJ  !"G
7|q#))	W	,33GAJ@V@VWX@YZ('2F2FGWGGGGN) Ns   5E=nodesc                 H   |t               }t        | ||      S |t               }t        | ||      S | |j                  | d       |S |j	                  | |        |j                  |        t        dt        |             D ]  }t        | j                  |      ||         |S r   )	r}   getAllContextNodesr>   rB   putrD   rx   r   rR   )r   r   r   r{   s       r   r   r   f  s    }!'5'::	&!'5'::?gkk'48DLGW%		'q#g,' 	EAw003UGD	Er   r   )NN)antlr4.RuleContextr   antlr4.atn.ATNr   antlr4.error.Errorsr   ior   r   objectr	   r-   r4   r:   r<   rH   re   r   rl   r   boolr>   r   r   r   r   r}   r   r   r   r   r   r   <module>r      s   +  5  6# 6#pM. MC M2 B V 2.4!2 .4b7 $ 12  7#. 7#|Y Y; Y 9 9!2 94 9TX 9h80 84N 8_c 8pt 8B* .H Y] N[( [,B [SW [dh [D	/ 	/$'8 $G] $gk $|0  4 r   