
    g&w                         d dl T d dlmZ d dlZej        d         dk    rd dlmZ nd dlmZ d Z G d d	e	          Z
dS )
    )*)StringION      )TextIOc                  
    g dS )N(k     r   [   i        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   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*   r   #   r   r+   r   $   r   r,   r   %   r   r-   r   &   r   r.   r   '   r   r/   r   (   r   r0   r   )   r   r1   r   *   r   r2   r   +   r   r3   r   ,   r   r4   r   -   r   r5   r   .   r   r6   r   /   r   r7   r   0   r   r8   r   1   r   r9   r   2   r   r:   r   3   r   r;   r   4   r   r<   r   5   r   r=   r   6   r   r>   r   7   r   r?   r   8   r   r@   r   9   r   rA   r   :   r   rB   r   ;   r   rC   r   <   r   rD   r   =   r   rE   r   >   r   rF   r   ?   r   rG   r   @   r   rH   r   A   r   rI   r   B   r   rJ   r   C   r   rK   r   D   r   rL   r   E   r   rM   r   F   r   rN   r   G   r   rO   r   H   r   rP   r   I   r   rQ   r   J   r   rR   r   K   r   rS   r   L   r   rT   r   M   r   rU   r   N   r   rV   r   O   r   rW   r   P   r   rX   r   Q   r   rY   r   R   r   rZ   r   S   r   r[   r   T   r   r\   r   U   r   r]   r   V   r   r^   r   W   r   r_   r   X   r   r`   r   Y   r   ra   r   Z   r   rb   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   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   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   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   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   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   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   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   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   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(   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   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)   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   r-   r   r-   r   r-   r   r.   r   r.   r   r.   r   r.   r   r/   r   r/   r   r/   r   r/   r   r0   r   r0   r   r0   r   r0   r   r0   r   r1   r   r1   r   r1   r   r1   r   r1   r   r2   r   r2   r   r2   r   r2   r   r2   r   r3   r   r3   r   r3   r   r3   r   r3   r   r4   r   r4   r   r4   r   r4   r   r4   r   r5   r   r5   r   r5   r   r5   r   r5   r   r6   r   r6   r   r6   r   r6   r   r6   r   r6   r   r6   r   r6   r   r7   r   r7   r   r7   r   r7   r   r7   r   r7   r   r7   r   r7   r   r8   r   r8   r   r8   r   r8   r   r8   r   r8   r   r8   r   r8   r   r9   r   r9   r   r9   r   r9   r   r9   r   r9   r   r9   r   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   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   rA   r   rA   r   rA   r   rA   r   rA   r   rA   r   rA   r   rA   r   rB   r   rB   r   rB   r   rB   r   rB   r   rB   r   rB   r   rB   r   rC   r   rC   r   rC   r   rC   r   rC   r   rC   r   rC   r   rC   r   rD   r   rD   r   rD   r   rD   r   rD   r   rD   r   rD   r   rE   r   rE   r   rE   r   rE   r   rE   r   rE   r   rE   r   rF   r   rF   r   rF   r   rF   r   rF   r   rF   r   rG   r   rG   r   rG   r   rG   r   rG   r   rG   r   rG   r   rG   r   rG   r   rG   r   rH   r   rH   r   rH   r   rH   r   rH   r   rH   r   rH   r   rI   r   rI   r   rI   r   rI   r   rI   r   rI   r   rJ   r   rJ   r   rJ   r   rJ   r   rJ   r   rK   r   rK   r   rK   r   rK   r   rK   r   rK   r   rK   r   rK   r   rK   r   rK   r   rK   r   rK   r   rK   r   rK   r   rK   r   rK   r   rK   r   rK     r   rK   r   rL   r   rL   r   rL   r   rL   r   rL   r   rL   r   rL   r   rM   r   rM   r   rM   r   rM   r   rM   r   rM   r   rM   r   rM   r   rN   r   rN   r   rN   r   rN   r   rN   r   rN   r   rN   r   rN   r   rO   r   rO   r   rO   r   rO   r   rO   r   rO   r   rO   r   rO   r   rP   r   rP   r   rQ   r   rQ   r   rR   r   rR   r   rS   r   rS   r   rT   r   rT   r   rT     r   rT   r   rT   r   rT     r   rT   r   rT   r   rT   r   rT   r	   rT   $  r   rT   r   rT   r   rT   %  r   rT   (  r   rT   r   rU   r   rU   r   rV   r   rV   r   rW   r   rW   r   rW   0  r   rW   r   rW   r   rW   3  r   rW   r   rW   5  r   rW   r   rW   r   rW   r   rW   r   rW   :  r   rW   r   rW   r   rW   =  r   rW   r   rW   r   rW   @  r   rW   r   rW   B  r   rW   r   rX   r   rX   r   rX   r   rX   r   rX   r   rY   r   rY   r   rZ   r   rZ   r   rZ   r   rZ   r   rZ   r   rZ   r   rZ   r   rZ   r   rZ   r   rZ   T  r   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^   r   r^   r   r^   r   r^   r   r^   r   r^   r   r^   r   r^   r   r^   r   r^   q  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   ra   r   ra   r   rb   r	   rb     r   rb   r   rb   r   rb     r   r
   r   r
   r	   r
     r   r
   r   r
   r   r
     r     1  ;  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   r1   r   r3   r   r5   r   r7   r    r9   r!   r;   r"   r=   r#   r?   r$   rA   r%   rC   r&   rE   r'   rG   r(   rI   r)   rK   r*   rM   r+   rO   r,   rQ   r-   rS   r.   rU   r/   rW   r0   rY   r1   r[   r2   r]   r3   r_   r4   ra   r5   r
   r6   ]   r7   _   r8   a   r9   c   r:   e   r;   g   r<   i   r=   k   r>   m   r?   o   r@   q   rA   s   rB   u   rC   w   rD   y   rE   {   rF   }   rG      rH      rI      rJ      rK      rL      rM      rN      rO      rP      rQ      rR      rS      r      rT      rU      rV      rW      rX      rY      rZ      r[      r\      r]      r^      r_      r`      ra      rb      r
   r   r   r   r   r   r   r   r   r   r(   r(   r   r   rI   rb   r   z   r   r   r8   rA   i  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   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-   r   r   r   r   r   r/   r   r   r   r   r   r1   r   r   r   r   r   r3   r   r   r   r   r   r5   r   r   r   r   r   r7   r   r   r   r   r   r9   r   r   r   r   r   r;   r   r   r   r   r   r=   r   r   r   r   r   r?   r   r   r   r   r   rA   r   r   r   r   r   rC   r   r   r   r   r   rE   r   r   r   r   r   rG   r   r   r   r   r   rI   r   r   r   r   r   rK   r   r   r   r   r   rM   r   r   r   r   r   rO   r   r   r   r   r   rQ   r   r   r   r   r   rS   r   r   r   r   r   rU   r   r   r   r   r   rW   r   r   r   r   r   rY   r   r   r   r   r   r[   r   r   r   r   r   r]   r   r   r   r   r   r_   r   r   r   r   r   ra   r   r   r   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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   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   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   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   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   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   8  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   r1     r   r   r   r   r3     r   r   r   r   r5     r   r   r   r   r7     r   r   r   r   r9     r   r   r   r   r;     r   r   r   r   r=     r   r   r   r   r?     r   r   r   r   rA     r   r   r   r   rC     r   r   r   r   rE     r   r   r   r   rG     r   r   r   r   rI     r   r   r   r   rK     r   r   r   r   rM   
  r   r   r   r   rO     r   r   r   r   rQ     r   r   r   r   rS     r   r   r   r   rU     r   r   r   r   rW   #  r   r   r   r   rY   '  r   r   r   r   r[   ,  r   r   r   r   r]   1  r   r   r   r   r_   6  r   r   r   r   ra   ;  r   r   r   r   r
   @  r   r   r   r   r   E  r   r   r   r   r   M  r   r   r   r   r   U  r   r   r   r   r   ]  r   r   r   r   r   e  r   r   r   r   r   m  r   r   r   r   r   u  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     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     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   A  r   r   r   r   r   C  r   r   r   r   r   H  r   r   r   r   r   S  r   r   r   r   r   U  r   r   r   r   r   [  r   r   r   r   r   e  r   r   r   r   r   p  r   r   r   r   r   r  r   r   r   r   r   x  r   r   r   r   r     r   r   r   r   r     r   r   r   r   r     r   r   r   r   r      r   r4   r   r   r  r   r   r   r   r   r      r   r6   r   r   r  r	   r   r   r   r      rc   r   r   r   r   r   r  r   r   r   r   rc   rd   r   r   r   r   rd   r   r   r   r   r   rd      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  re   r   r4   r   r         r   r   r   r   r     r   t   r   r   r     r   h   r   r   r     r   r   r   r   r     r   n   r   r   r     r   r   r   r   r     r   p   r   r   r      r   r   r   r   r"     r   r   r   r   r#  re   r   r   r   r   r   r  r   r   r   r   r   r  r   r   r   r   re      r   r   r   r   r$     r   r   r   r   r%  r   r   r   r   r         r   r   r   r   r'  rf   r   rB   r   r         r   r   r   r   r)     r   r   r   r   r*     r   r   r   r   r+     r   d   r   r   r,     r   r   r   r   r.     r   r!  r   r   r/     r   r   r   r   r0     r   r   r   r   r1  rf   r   r   r   r   r   r&  r   r   r   r   r   r(  r   r   r   r   rf      r   r   r   r   r2     r   r	   r   r   r3  r   r   r   r   r         r   r   r   r   r5  rg   r   rC   r   r         r   r   r   r   r7     r   r  r   r   r8     r   r  r   r   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@  rg   r   r   r   r   r   r4  r   r   r   r   r   r6  r   r   r   r   rg      r   r   r   r   rA     r   r   r   r   rB  r   r   r   r   r   r      r   r   r   r   rC     r   r   r   r   rD     r   r   r   r   rE     r   r   r   r   rF     r   r-  r   r   rG     r   r   r   r   rH     r   r   r   r   rI  r   r   r   r   r   r      r   r   r   r   rJ     r   r   r   r   rK     r   r   r   r   rL     r   r   r   r   rM    r   r   r   r   rN    r   r-  r   r   rO    r   r   r   r   rP    r   r   r   r   rQ  r   r   r   r   r       r   r   r   r   rS  rh   r   r)   r   r       r   r   r   r   rU  	  r   r  r   r   rV  
  r   r   r   r   rW    r   r   r   r   rX    r   r  r   r   rY    r   r  r   r   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`  rh   r   r   r   r   r   rR  r   r   r   r   r   rT  r   r   r   r   rh     r   r   r   r   ra    r   r   r   r   rb  r   r   r   r   r   r     r   r   r   r   rc    r   r  r   r   rd    r   r   r   r   re    r   r   r   r   rf    r   r   r   r   rg    r   r   r   r   rh    r   r-  r   r   ri     r   r   r   r   rj  !  r   r!  r   r   rk  "  r   r   r   r   rl  #  r   r   r   r   rm  $  r   r   r   r   rn  %  r   r   r   r   ro  &  r   r   r   r   rp  r   r   r   r   r   r   (  r   r   r   r   rq  )  r   r  r   r   rr  *  r   r   r   r   rs  +  r   r   r   r   rt  ,  r   r  r   r   ru  -  r   r  r   r   rv  .  r   r   r   r   rw  /  r   r   r   r   rx  0  r   r   r   r   ry  1  r   r   r   r   rz  2  r   r!  r   r   r{  3  r   r   r   r   r|  4  r   r   r   r   r}  5  r   r   r   r   r~  6  r   r   r   r   r  7  r   r   r   r   r  r   r   r   r   r   r   9  r   r   r   r   r  :  r   l   r   r   r  ;  r   r   r   r   r  <  r   f   r   r   r  =  r   r  r   r   r  >  r   r   r   r   r  ?  r   r   r   r   r  r    r   r   r   r   r   A  r   r   r   r   r  B  r   r   r   r   r  C  r   r   r   r   r  D  r   r   r   r   r  E  r   r  r   r   r  F  r   r  r   r   r  G  r   r   r   r   r  H  r   r   r   r   r  r"   r   r   r   r   I  J  r   r   r   r   r  K  r   v   r   r   r  L  r   r  r   r   r  M  r   r   r   r   r  N  r   r  r   r   r  ri   r   r   r   r   O  P  r   r   r   r   r  Q  r   r  r   r   r  R  r   r   r   r   r  S  r   r   r   r   r  T  r   r  r   r   r  U  r   r  r   r   r  V  r   r   r   r   r  ri   r   r  r   r   W  X  r   r   r   r   r  Y  r   r  r   r   r  Z  r   b   r   r   r  [  r   r   r   r   r  ri   r   x   r   r   \  ]  r   r   r   r   r  ^  r   r  r   r   r  _  r   r   r   r   r  `  r   r   r   r   r  a  r   r   r   r   r  ri   r   r!  r   r   b  c  r   r   r   r   r  d  r   r  r   r   r  e  r   r   r   r   r  f  r   r!  r   r   r  g  r   r   r   r   r  h  r   r   r   r   r  ri   r   r   r   r   i  j  r   r   r   r   r  k  r   r  r   r   r  l  r   r  r   r   r  m  r   r   r   r   r  ri   r   r  r   r   n  o  r   r   r   r   r  ri   r   r2   r   r   p  q  r   r   r   r   r  ri   r   r5   r   r   r  s  r   r   r   r   r  ri   r   r6   r   r   t  u  r   r   r   r   r  ri   r   r7   r   r   v  w  r   r   r   r   r  ri   r   r*   r   r   x  y  r   r   r   r   r  ri   r   r0   r   r   z  {  r   r   r   r   r  ri   r   rE   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   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   ri   ~  r   r   r   r   r    r   r   r   r   r  r$   r   r   r   r   r     r   r3   r   r   r  r&   r   r   r   r   r     r   r5   r   r   r  r(   r   r   r   r   r     r   r2   r   r   r  r*   r   r   r   r   r     r   r7   r   r   r  r,   r   r   r   r   r     r   r0   r   r   r  r.   r   r   r   r   r     r   r1   r   r   r  r0   r   r   r   r   r     r   r   r   r   r  r2   r   r   r   r   r     r   r   r   r   r  r4   r   r   r   r   r     r   r   r   r   r    r   r   r   r   r  r6   r   r   r   r   r     r   r   r   r   r    r   r   r   r   r  r8   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   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  rB   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   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  rF   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  rH   r   r   r   r       r   r   r   r   r    r   r  r   r   r  rj   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  rj   r   r   r   r       r   r   r   r   r	    r   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    r   r   r   r   r  rj   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   r   r   r   r    r   r  r   r   r    r   r  r   r   r     r   r   r   r   r!  rj   r   r   r   r       r   r   r   r   r#    r   rT   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  r   r   r/    r   r   r   r   r0  rj   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   rj   rJ   r   r   r   r       r   r   r   r   r2    r   r   r   r   r3    r   r  r   r   r4  rk   r   r  r   r       r   r   r   r   r6    r   r   r   r   r7     r   r  r   r   r8    r   r  r   r   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?  rk   r   r   r   r   r   r1  r   r   r   r   r   r5  r   r   r   r   rk   rL   r   r   r   r   r     r   r   r   r   r@    r   r   r   r   rA    r   r   r   r   rB    r   r   r   r   rC  rN   r   r   r   r   r     r   r   r   r   rD    r   r!  r   r   rE    r   r  r   r   rF    r   r   r   r   rG    r   r-  r   r   rH  rP   r   r   r   r   r     r   r   r   r   rI    r   r   r   r   rJ    r   r  r   r   rK    r   r!  r   r   rL  rR   r   r   r   r   r     r   r   r   r   rM    r   r  r   r   rN    r   r   r   r   rO    r   r   r   r   rP  rT   r   r   r   r   r      r   r   r   r   rQ  !  r   r  r   r   rR  "  r   r   r   r   rS  rV   r   r   r   r   r   $  r   r   r   r   rT  %  r   r  r   r   rU  &  r   r  r   r   rV  rX   r   r   r   r   r   (  r   r   r   r   rW  )  r   r   r   r   rX  *  r   r   r   r   rY  +  r   r  r   r   rZ  rZ   r   r   r   r   r   -  r   r   r   r   r[  .  r   r   r   r   r\  /  r   r   r   r   r]  0  r   r   r   r   r^  r\   r   r   r   r   r   2  r   r   r   r   r_  3  r   r  r   r   r`  4  r   r   r   r   ra  5  r   r  r   r   rb  r^   r   r   r   r   r   7  r   r   r   r   rc  8  r   r   r   r   rd  9  r   r   r   r   re  :  r   r   r   r   rf  r`   r   r   r   r   r   <  r   r   r   r   rg  =  r   r   r   r   rh  >  r   r   r   r   ri  ?  r   r   r   r   rj  rb   r   r   r   r   r   A  r   r   r   r   rk  B  r   r   r   r   rl  C  r   r   r   r   rm  D  r   r  r   r   rn  r   r   r   r   r   r   F  r   r   r   r   ro  G  r   r   r   r   rp  H  r   r  r   r   rq  I  r   r   r   r   rr  J  r   r   r   r   rs  K  r   r   r   r   rt  L  r   r  r   r   ru  ^   r   r   r   r   r   N  r   r   r   r   rw  O  r   r   r   r   rx  P  r   r  r   r   ry  Q  r   r   r   r   rz  R  r   r   r   r   r{  S  r   r   r   r   r|  T  r   r   r   r   r}  `   r   r   r   r   r   V  r   r   r   r   r  W  r   r   r   r   r  X  r   r  r   r   r  Y  r   r   r   r   r  Z  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  a  r   r   r   r   r  b  r   r   r   r   r  c  r   r   r   r   r  d  r   r   r   r   r  r-  r   r   r   r   r   f  r   r   r   r   r  g  r   r   r   r   r  h  r   r  r   r   r  i  r   r   r   r   r  j  r   r   r   r   r  k  r   r   r   r   r  l  r   r   r   r   r  r  r   r   r   r   r   n  r   r   r   r   r  o  r   r   r   r   r  p  r   r  r   r   r  q  r   r   r   r   r  r  r   r   r   r   r  s  r   r   r   r   r  t  r   r  r   r   r  r  r   r   r   r   r   v  r   r   r   r   r  w  r   r   r   r   r  x  r   r   r   r   r  y  r   r  r   r   r  z  r   r  r   r   r  j   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   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   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   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    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   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   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   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   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   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   rl   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  rl   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  rl   r   r   r   r   r   r  r   r   r   r   r   r  r   r   r   r   r   r  r   r   r   r   rl      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    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"    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-     r   r   r   r   r     r   rv  r   r   r/     r   r   r   r   r     r   rB   r   r   r1     r   r   r   r   r     r   r   r   r   r3     r   r   r   r   r   r   r   r-  r   r     rm   r   r   rS   r     r5  r   r   r   r   rm   rn   r   r   r   r   r     r   r   r   r   r   r6  r   r   r   r   r7  '  r   r   r   r   rn   r   r   r   r   r      rq   r   r   r   r   !  #  r   r   r   r   "  ro   r   r   r   r   r;  r<  r   r   r   r   ro   rp   r   r   r   r   rp   r;  r   r   r   r   rp   &  r   r   r   r   r=  rq   r   r   r   r   r8  r9  r   r   r   r   r8  r:  r   r   r   r   rq      r   r   r   r   r   *  r   r   r   r   r?     r   r   r   r   r   ,  r   r   r   r   rA     r   r   r   r   -  r   r   r.   r   r   .  rr   r   r   rS   r   /  rD  r   r   r   r   rr   rs   r   r   r   r   r   2  r   r   r   r   r   rE  r   r   r   r   rF  rt   r   r   r   r   rs   r   r   r   r   r   4  rC  r   r   r   r   rG  rt   r   r   r   r   rt   6  r   r   r   r   rH  rx   r   rE   r   r   7  ?  r   rE   r   r   8  ru   r   r   rS   r   9  rK  r   r   r   r   ru   rv   r   r   r   r   r   <  r   r   r   r   r   rL  r   r   r   r   rM  >  r   r   r   r   rv   r   r   r   r   r   rN  rw   r   r.   r   r   rJ  r   r   r   r   r   rJ  rw   r   r   r   r   rw   rx   r   r   r   r   r  rG  r   r   r   r   r  rI  r   r   r   r   rx      r   r   r   r   r  D  r   r   r   r   rP  E  r   r  r   r   rQ  F  r   r   r   r   rR  G  r   r   r   r   rS     r   r   r   r   r  I  r   rD   r   r   rU     r   r   r   r   J  K  r   r   r   r   rX  L  r   r  r   r   rY  M  r   r   r   r   rZ  ry   r   r   r   r   N  O  r   r   r   r   r\  P  r   r  r   r   r]  ry   r   r   r   r   Q  ry   r   r   r[   r   R  ry   r   r   r\   r   r  rW  r   r   r   r   r  r[  r   r   r   r   r  r^  r   r   r   r   r  r_  r   r   r   r   ry      r   r   r   r   r  V  r   r   r   r   ra  W  r   r  r   r   rb  X  r   r   r   r   rc  Y  r   r   r   r   rd  Z  r   r   r   r   re     r   r   r   r   r  \  r   r   r   r   rg  ]  r   r  r   r   rh  ^  r   r   r   r   ri  _  r   r   r   r   rj  `  r   r   r   r   rk  a  r   r  r   r   rl  b  r   r   r   r   rm  c  r   r  r   r   rn  d  r   r  r   r   ro     r   r   r   r   r  f  r   rF   r   r   rq     r   r   r   r   g  h  r   r   r   r   rt  i  r   r   r   r   ru  j  r   r   r   r   rv  rz   r   r   r   r   k  l  r   r   r   r   rx  m  r   r   r   r   ry  rz   r   r   r   r   n  rz   r   r   r_   r   o  rz   r   r   r`   r   r  rs  r   r   r   r   r  rw  r   r   r   r   r  rz  r   r   r   r   r  r{  r   r   r   r   rz      r   r   r   r   r	  s  r   r   r   r   r}  t  r   r   r   r   r~  u  r   r   r   r   r  v  r   r   r   r   r  w  r   r   r   r   r     r   r   r   r   r
  y  r   r   r   r   r  z  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{   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~   r  r   r   r   r   r~     r   r   r   r   r     r   r   r   r   r   r   rd   r   r   r   r   r   r   r   r   r   rp   r8  r   rG  r   rJ  r  r  r  r|   r~   r   r   r   r    r      a/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/parsing/latex/_antlr/latexlexer.pyserializedATNr     s    F F F Fr  c                   H    e Zd Z e                                 e                      Zd  eej                  D             Z	dZ
dZdZdZdZdZdZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'd Z(d!Z)d"Z*d#Z+d$Z,d%Z-d&Z.d'Z/d(Z0d)Z1d*Z2d+Z3d,Z4d-Z5d.Z6d/Z7d0Z8d1Z9d2Z:d3Z;d4Z<d5Z=d6Z>d7Z?d8Z@d9ZAd:ZBd;ZCd<ZDd=ZEd>ZFd?ZGd@ZHdAZIdBZJdCZKdDZLdEZMdFZNdGZOdHZPdIZQdJZRdKZSdLZTdMZUdNZVdOZWdPZXdQZYdRZZdSZ[dTZ\dUZ]dVZ^dWZ_dXZ`dYZadZZbd[Zcd\Zdd]d^gZed_gZfg d`Zgg daZhg dbZidcZjddekjl        fdeemf fdfZn xZoS )g
LaTeXLexerc                 4    g | ]\  }}t          ||          S r  )DFA).0idss      r  
<listcomp>zLaTeXLexer.<listcomp>`  s$    OOOeas2qzzOOOr  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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   r
   DEFAULT_TOKEN_CHANNELHIDDENDEFAULT_MODE)K	<INVALID>z','z'.'z'\quad'z'\qquad'z'\negmedspace'z'\negthickspace'z'\left'z'\right'z'+'z'-'z'*'z'/'z'('z')'z'{'z'}'z'\{'z'\}'z'['z']'z'|'z	'\right|'z'\left|'z	'\langle'z	'\rangle'z'\lim'z'\sum'z'\prod'z'\exp'z'\log'z'\lg'z'\ln'z'\sin'z'\cos'z'\tan'z'\csc'z'\sec'z'\cot'z	'\arcsin'z	'\arccos'z	'\arctan'z	'\arccsc'z	'\arcsec'z	'\arccot'z'\sinh'z'\cosh'z'\tanh'z	'\arsinh'z	'\arcosh'z	'\artanh'z	'\lfloor'z	'\rfloor'z'\lceil'z'\rceil'z'\sqrt'z'\overline'z'\times'z'\cdot'z'\div'z'\binom'z	'\dbinom'z	'\tbinom'z	'\mathit'z'_'z'^'z':'z'\neq'z'<'z'\leqq'z'\leqslant'z'>'z'\geqq'z'\geqslant'z'!')Zr  WS	THINSPACEMEDSPACE
THICKSPACEQUADQQUADNEGTHINSPACENEGMEDSPACENEGTHICKSPACECMD_LEFT	CMD_RIGHTIGNOREADDSUBMULDIVL_PARENR_PARENL_BRACER_BRACEL_BRACE_LITERALR_BRACE_LITERAL	L_BRACKET	R_BRACKETBARR_BARL_BARL_ANGLER_ANGLEFUNC_LIMLIM_APPROACH_SYMFUNC_INTFUNC_SUM	FUNC_PRODFUNC_EXPFUNC_LOGFUNC_LGFUNC_LNFUNC_SINFUNC_COSFUNC_TANFUNC_CSCFUNC_SECFUNC_COTFUNC_ARCSINFUNC_ARCCOSFUNC_ARCTANFUNC_ARCCSCFUNC_ARCSECFUNC_ARCCOT	FUNC_SINH	FUNC_COSH	FUNC_TANHFUNC_ARSINHFUNC_ARCOSHFUNC_ARTANHL_FLOORR_FLOORL_CEILR_CEIL	FUNC_SQRTFUNC_OVERLINE	CMD_TIMESCMD_CDOTCMD_DIVCMD_FRAC	CMD_BINOM
CMD_DBINOM
CMD_TBINOM
CMD_MATHIT
UNDERSCORECARETCOLONDIFFERENTIALLETTERDIGITEQUALNEQLTLTELTE_QLTE_SGTGTEGTE_QGTE_SBANGSINGLE_QUOTESSYMBOL)\T__0T__1r  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  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  WS_CHARr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  zLaTeX.g4Noutputc                     t                                          ||           |                     d           t          | | j        | j        t                                | _        d | _        d | _	        d S )Nz4.11.1)
super__init__checkVersionLexerATNSimulatoratndecisionsToDFAPredictionContextCache_interp_actions_predicates)selfinputr  	__class__s      r  r  zLaTeXLexer.__init__  sg    '''(###(tx9LNdNfNfggr  )p__name__
__module____qualname__ATNDeserializerdeserializer  r  	enumeratedecisionToStater	  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  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  channelNames	modeNamesliteralNamessymbolicNames	ruleNamesgrammarFileNamesysstdoutr   r  __classcell__)r  s   @r  r  r  \  s       
/


'
'
8
8COOyy9L/M/MOOONDD	
BIHJDELKMHIF
C
C
C
CGGGGOOII
CEEGGHHHIHHGGHHHHHHKKKKKKIIIKKKGGFFIMIHGHIJJJJEELFEE
C	B
CEE	B
CEEDMF-y:L "I7 7 7L  M&6 6 6I& !O!3:    &                    r  r  )antlr4ior   r  version_infotypingr   	typing.ior  Lexerr  r  r  r  <module>r'     s              



A      G G GR
b  b  b  b  b  b  b  b  b  b r  