Ë
    £èhN  ã                  ó
  — d dl mZ d dlmZmZ  G d„ de«      ZdZ ed«      Z ed«      Z	 ed«      Z
 ed	«      Z ed
«      Z ed«      Z ed«      ZdZdd„Zg d¢Zdd„Zdd„Zdd„Zdd„Zdd„Zddd„Z	 d 	 	 	 	 	 	 	 d!d„Zy)"é    )Úannotations)Ú
NamedTupleÚSequencec                  ó"   — e Zd ZU ded<   ded<   y)ÚCommandÚstrÚnamezSequence[bytes]ÚargsN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© ó    ú<lib/python3.12/site-packages/ezdxf/addons/hpgl2/tokenizer.pyr   r      s   … Ø
ƒIØ
Ôr   r   é   Ú;Ú%Ú-Ú"ÚAÚBÚZé   c                óØ   — 	 | |   t         k7  ry| |dz      t        k7  ryd}| |dz      t        k(  r|dz  }d}d| |dz      cxk  rdk  rn y| |dz      t        k(  r|S y# t        $ r Y yw xY w)	Nr   é   é   é   é   é/   é4   r   )ÚESCAPEÚPERCENTÚMINUSÚCHAR_BÚ
IndexError)ÚsÚiÚlengths      r   Ú#get_enter_hpgl2_mode_command_lengthr*   !   s˜   € ðØˆQ‰4”6Š>ØØˆQ�‰U‰8”wÒØØˆØˆQ�‰U‰8”uÒØ�‰FˆAØˆFà��!�a‘%‘Ô˜2Ôð ð	 #$ A¨¡E¡(¬fÒ"4ØˆMð øô ò ØØðús!   ‚A �A Ÿ+A ÁA Á	A)Á(A))s   BPINs   BP;INs   INPSs   IN;PSs   INDFs   IN;DFc                ó@   — t         D ]  }| j                  |«      sŒ y y)NTF)ÚKNOWN_START_SEQUENCESÚ
startswith)ÚbÚstart_sequences     r   Úhas_known_start_sequencer0   6   s    € ß/ˆØ�<‰<˜Õ'Ùð 0ð r   c                ó�   — 	 	 | j                  d|«      }t        | |«      }|r||z   S |dz  }Œ,# t        $ r t        | «      cY S w xY w)Ns   %r   )ÚindexÚ
ValueErrorÚlenr*   )r'   Ústartr2   r)   s       r   Úfind_hpgl2_entry_pointr6   =   s]   € Ø
ð	Ø—G‘G˜E 5Ó)ˆEô 5°Q¸Ó>ˆÙØ˜6‘>Ð!Ø�‰
ˆð øô ò 	Ü�q“6ŠMð	ús   ƒ. ®AÁAc                óÖ  ‡ ‡‡	‡
‡— t         Šdˆ	ˆ
ˆ fd„}dˆ
ˆ fd„Š	dˆˆfd„}g Št        ‰ «      Š
t        ‰ «      rd}nt        ‰ d«      }|‰
k  r›‰ |   }|}|t        k(  rt        ‰ |«      }Œ"|dk  r|dz  }Œ-|dz   }|‰
k\  r |‰ |d «       	 ‰S ‰ || }|d	k(  r ‰	|t
        «      }|dz  }n|d
k(  r
 ‰	|‰«      }n ||«      } |‰ || «       |‰
k  r‰ |   t
        k(  r|dz  }|‰
k  rŒ›‰S )a4  Low level plot file parser, extracts the HPGL/2 from the byte stream `b`.

    .. Important::

        This parser expects the "Enter HPGL/2 mode" escape sequence to recognize
        HPGL/2 commands. The sequence looks like this: ``[ESC]%1B``, multiple variants
        of this sequence are supported.

    c                óº   •— | ‰k  rT‰|    }|t         k(  r ‰| dz   t         «      } n*t        |cxk  r	t        k  sn |t        k(  s	|t        k(  r	 | S | dz  } | ‰k  rŒT| S ©Nr   )Ú
QUOTE_CHARÚCHAR_AÚCHAR_ZÚ	SEMICOLONr"   )r(   ÚcÚ	find_markr)   r'   s     €€€r   Úfind_terminatorz'hpgl2_commands.<locals>.find_terminatorU   sf   ø€ Ø�&ŠjØ�!‘ˆAØ”JŠÙ˜a !™e¤ZÓ0‘Ü˜AÔ'¤Ô'¨A´ªN¸aÄ6ºkØàˆð �‰FˆAð �&‹jð ˆr   c                óN   •— | ‰k  r‰|    |k7  r| dz  } | ‰k  r	‰|    |k7  rŒ| dz   S r9   r   )r(   Úmarkr)   r'   s     €€r   r?   z!hpgl2_commands.<locals>.find_mark_   s9   ø€ Ø�&Šj˜Q˜q™T Tš\Ø�‰FˆAð �&Šj˜Q˜q™T T›\à�1‰uˆr   c                ó€   •— | d d dk(  rt        | «      dkD  r| d   Šy t        Šy ‰j                  t        | «      «       y )Nr   s   DT)r4   ÚDEFAULT_TEXT_TERMINATORÚappendÚmake_command)r.   ÚcommandsÚtext_terminators    €€r   Úappend_commandz&hpgl2_commands.<locals>.append_commandd   s9   ø€ ØˆRˆaˆ5�EŠ>ä�1‹v˜ŠzØ"# A¡$‘ä"9‘à�O‰OœL¨›OÕ,r   r   é    r   r   Ns   PEs   LB)r(   ÚintÚreturnrK   )r(   rK   rB   rK   rL   rK   )r.   ÚbytesrL   ÚNone)rD   r4   r0   r6   r"   r=   )r'   r@   rI   r2   Úcharr5   Úindex_plus_2ÚcommandrG   r?   r)   rH   s   `       @@@@r   Úhpgl2_commandsrR   I   s1  ü€ ô .€O÷öö
-ð !€HÜ�‹V€FÜ Ô"Ø‰ä& q¨!Ó,ˆØ
�&Š.Ø�‰xˆØˆà”6Š>ô +¨1¨eÓ4ˆEØà�2Š:Ø�Q‰JˆEØà˜q‘yˆØ˜6Ò!Ù˜1˜U˜V˜9Ô%Øð" €Oð �E˜,Ð'ˆà�eÒÙ˜l¬IÓ6ˆEØ�Q‰J‰EØ˜ÒÙ˜l¨OÓ<‰Eñ $ LÓ1ˆEá�q˜˜u�~Ô&Ø�6Š>˜a ™h¬)Ò3Ø�Q‰JˆEðC �&‹.ðD €Or   c                ó  — | st        dt        «       «      S | d d j                  «       }|dk(  r$t        | dd  D �cg c]
  }|dkD  sŒ	|‘Œ c}«      f}n$t        d„ | dd  j	                  d«      D «       «      }t        ||«      S c c}w )NÚNOOPr   ÚPErJ   c              3  ó    K  — | ]  }|–— Œ y ­w)Nr   )Ú.0r'   s     r   Ú	<genexpr>zmake_command.<locals>.<genexpr>    s   è ø€ Ð4Ñ 3˜1”QÑ 3ùs   ‚ó   ,)r   ÚtupleÚdecoderM   Úsplit)Úcmdr	   r>   r
   s       r   rF   rF   ™   s†   € ÙÜ�vœu›wÓ'Ð'Øˆr�ˆ7�>‰>Ó€DØˆt‚|Ü # a b¡'Ó4¡'˜Q¨Q°«V’q 'Ñ4Ó5Ð7‰äÑ4  A B §¡¨dÔ 3Ó4Ó4ˆÜ�4˜ÓÐùò 5s   »
BÁBc                ó   — t        | dz  «      S )Ng¤p=
×£
@)Úround)Údecimal_placess    r   Úfractional_bitsra   ¤   s   € Ü� $Ñ&Ó'Ð'r   c                ór  — |r| d|z  z  } t        | «      }nt        | «      }|dk\  r|dz  }nt        |«      dz  dz   }t        «       }||k\  r)t        ||«      \  }}|j	                  d|z   «       ||k\  rŒ)|dk(  r|j	                  d|z   «       t        |«      S |j	                  d|z   «       t        |«      S )Nr   r   r   é?   é@   é¿   é_   )r_   ÚabsÚ	bytearrayÚdivmodrE   rM   )ÚvalueÚ	frac_bitsÚbaseÚxÚcharsÚrs         r   Ú	pe_encoderp   ¨   s½   € ÙØ��i‘ÑˆÜ�%‹L‰ä�%‹LˆØˆA‚vØ	ˆQ‰‰ä�‹F�Q‰J˜‰Nˆä‹K€EØ
ˆtŠ)Ü�a˜‹‰ˆˆ1Ø�‰�R˜!‘VÔð ˆt‹)ð ˆr‚zØ�‰�S˜1‘WÔô �‹<Ðð 	�‰�R˜!‘VÔÜ�‹<Ðr   c                ór  ‡‡— ˆˆfd„}d|z  }‰dk(  rd}nd}g }g Št        |t        | «      «      D ]x  }| |   }	|	dk  r||fc S |	|k\  rM‰j                  |	|z
  «        |«       }
|r|j                  |
|z  «       ŒJ|j                  t        |
«      «       Œe‰j                  |	dz
  «       Œz |t        | «      fS )Nc                 óŠ   •— ‰j                  «        d} ‰D ]
  }| ‰z  |z   } Œ ‰j                  «        | dz  r| dz
   } | dz	  } | S )Nr   r   )ÚreverseÚclear)rm   Úfrl   Úfactorss     €€r   Ú_decodezpe_decode.<locals>._decodeÁ   sR   ø€ Ø�‰ÔØˆÛˆAØ�D‘˜1‘‰Að à�‰ŒØˆqŠ5Ø�a‘%�ˆAØ�‰FˆØˆr   r   rd   re   rf   rc   )Úranger4   rE   Úfloat)r'   rk   rl   r5   rw   ÚnÚ
terminatorÚvaluesr2   rj   rm   rv   s     `        @r   Ú	pe_decoder}   ¾   sÀ   ù€ õ	ð 	
ˆY‰€AØˆr‚zØ‰
àˆ
Ø€FØ€GÜ�uœc !›fÖ%ˆØ�%‘ˆØ�2Š:Ø˜5�=Ò Ø�JÒØ�N‰N˜5 :Ñ-Ô.Ù“	ˆAÙØ—‘˜a !™eÕ$à—‘œe A›hÕ'à�N‰N˜5 2™:Õ&ð &ð ”3�q“6ˆ>Ðr   N)r'   rM   r(   rK   rL   rK   )r.   rM   rL   Úbool)r'   rM   r5   rK   rL   rK   )r'   rM   rL   zlist[Command])r]   rM   rL   r   )r`   rK   rL   rK   )r   rd   )rj   ry   rk   rK   rl   rK   rL   rM   )r   rd   r   )r'   rM   rk   rK   r5   rK   rL   ztuple[list[float], int])Ú
__future__r   Útypingr   r   r   r"   Úordr=   r#   r$   r:   r;   r%   r<   rD   r*   r,   r0   r6   rR   rF   ra   rp   r}   r   r   r   Ú<module>r‚      s½   ðõ #ß 'ôˆjô ð
 
€Ù�‹H€	Ù
ˆc‹(€ÙˆC‹€Ù�‹X€
Ù	ˆS‹€Ù	ˆS‹€Ù	ˆS‹€ØÐ óò$ RÐ óó	óMó`ó(ôð. 9:ð"Øð"Øð"Ø25ð"àô"r   