Ë
    £èh©C  ã                  óL  — d dl mZ d dlmZmZmZmZmZmZ d dl	Z	d dl
Z
d dlZd dlZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ ddl m!Z!m"Z"m#Z# d dl$m%Z% d d	l&m'Z'm(Z(  e	jR                  d
«      Z* G d„ d«      Z+d4d„Z,d5d„Z-d6d„Z.d7d„Z/d8d„Z0d9d„Z1d9d„Z2d9d„Z3d:d„Z4d;d„Z5d<d„Z6d=d„Z7d<d„Z8d<d„Z9d<d„Z:d<d„Z;d>d„Z<d?d„Z=d@d„Z>dAd „Z?dBd!„Z@dBd"„ZAdCd#„ZBdCd$„ZCdAd%„ZDdDd&„ZEdAd'„ZFeFZGdAd(„ZHeHZIdEd)„ZJdEd*„ZKdAd+„ZLdFd,„ZMdGd-„ZNdHd.„ZOdId/„ZPdJd0„ZQdKd1„ZRdAd2„ZSdAd3„ZTy)Lé    )Úannotations)ÚTextIOÚIterableÚOptionalÚcastÚSequenceÚIteratorNé   )ÚDXFStructureErrorÚDXFErrorÚDXFValueErrorÚDXFTypeErrorÚDXFAppDataErrorÚDXFXDataErrorÚAPP_DATA_MARKERÚHEADER_VAR_MARKERÚXDATA_MARKERÚINVALID_LAYER_NAME_CHARACTERSÚacad_releaseÚVALID_DXF_LINEWEIGHT_VALUESÚVALID_DXF_LINEWEIGHTSÚLINEWEIGHT_BYLAYERÚTRANSPARENCY_BYBLOCK)Úascii_tags_loaderÚbinary_tags_loader)Úis_embedded_object_markerÚDXFTagÚNONE_TAG)Ú
toencoding)ÚNULLVECÚVec3Úezdxfc                  ó4   — e Zd ZdZdZdd„Zd	d„Zd
d„Zdd„Zy)ÚDXFInfozÈDXF Info Record

    .. attribute:: release

    .. attribute:: version

    .. attribute:: encoding

    .. attribute:: handseed

    .. attribute:: insert_units

    .. attribute:: insert_base

    é   c                ó`   — d| _         d| _        d| _        d| _        d| _        t
        | _        y )NÚR12ÚAC1009Úcp1252Ú0r   )ÚreleaseÚversionÚencodingÚhandseedÚinsert_unitsr    Úinsert_base©Úselfs    ú5lib/python3.12/site-packages/ezdxf/lldxf/validator.pyÚ__init__zDXFInfo.__init__7   s.   € Ø!ˆŒØ$ˆŒØ%ˆŒØ ˆŒØ!"ˆÔÜ!(ˆÕó    c                ó@   — dj                  | j                  «       «      S )NÚ
)ÚjoinÚdata_stringsr1   s    r3   Ú__str__zDXFInfo.__str__?   s   € Ø�y‰y˜×*Ñ*Ó,Ó-Ð-r5   c           
     óô   — ddl m} d| j                  › �d| j                  › �d| j                  › �d| j
                  › �d| j                  › d|j                  | j                  «      › d	�d
| j                  › �gS )Nr   )Úunitsz	release: z	version: z
encoding: znext handle: 0xzinsert units: z <Ú>zinsert base point: )	r"   r<   r+   r,   r-   r.   r/   Údecoder0   )r2   r<   s     r3   r9   zDXFInfo.data_stringsB   s„   € Ýð ˜Ÿ™�~Ð&Ø˜Ÿ™�~Ð&Ø˜Ÿ™˜Ð(Ø˜dŸm™m˜_Ð-Ø˜T×.Ñ.Ð/¨r°%·,±,¸t×?PÑ?PÓ2QÐ1RÐRSÐTØ! $×"2Ñ"2Ð!3Ð4ð
ð 	
r5   c                ób  — |dk(  r,t        |«      | _        t        j                  |d«      | _        y|dk(  rt        |«      | _        y|dk(  rt        |«      | _        y|dk(  r	 t        |«      | _	        y|dk(  r	 t        |«      | _        yy# t        $ r Y yw xY w# t        t        f$ r Y yw xY w)	Nz$ACADVERr'   z$DWGCODEPAGEz	$HANDSEEDz	$INSUNITSz$INSBASEr   r
   )Ústrr,   r   Úgetr+   r   r-   r.   Úintr/   Ú
ValueErrorr!   r0   Ú	TypeError)r2   ÚnameÚvalues      r3   Úset_header_varzDXFInfo.set_header_varN   sÞ   € Ø�:ÒÜ˜u›:ˆDŒLÜ'×+Ñ+¨E°5Ó9ˆDŒLð" ð! �^Ò#Ü& uÓ-ˆDŒMð ð �[Ò Ü ›JˆDŒMð ð �[Ò ðÜ$'¨£J�Ô!ð ð �ZÒðÜ#'¨£;�Ô ð
 ð øô ò Øð ðûô
 ¤	Ð*ò Øð ð	ús$   Á$B Á;B Â	BÂBÂB.Â-B.N)ÚreturnÚNone)rH   r@   )rH   z	list[str])rE   r@   rH   rB   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚEXPECTED_COUNTr4   r:   r9   rG   © r5   r3   r$   r$   $   s"   „ ñð  €Nó)ó.ó

ôr5   r$   c                ó*   — t        t        | «      «      S )zÎScans the HEADER section of an ASCII DXF document and returns a :class:`DXFInfo`
    object, which contains information about the DXF version, text encoding, drawing
    units and insertion base point.
    )Ú_detect_dxf_infor   )Ústreams    r3   Údxf_inforS   e   s   € ô
 Ô-¨fÓ5Ó6Ð6r5   c                ó*   — t        t        | «      «      S )zÎScans the HEADER section of a binary DXF document and returns a :class:`DXFInfo`
    object, which contains information about the DXF version, text encoding, drawing
    units and insertion base point.
    )rQ   r   )Údatas    r3   Úbinary_dxf_inforV   m   s   € ô
 Ô.¨tÓ4Ó5Ð5r5   c                óf  — t        «       }t        | «      dk7  r|S t        | «      dk7  r|S t        }t        }d}|dk7  ró|t        u rt        | «      }n|}t        }|j                  t        k7  rŒ5t        |j                  «      }t        | «      \  }}|dk(  rjt        |«      }t        t        | «      j                  «      }	d}
t        | «      }|j                  dk(  rt        |j                  «      }
n|}t        ||	|
«      }||j                  ||«      z  }|t         j                  k\  r	 |S |dk7  rŒó|S )N©r   ÚSECTION)é   ÚHEADERr   )r   ÚENDSECé
   ç        é   )r$   Únextr   Úcoder   r@   rF   Úfloatr!   rG   rN   )ÚtaggerÚinfoÚtagÚundo_tagÚfoundÚvar_namera   rF   ÚxÚyÚzs              r3   rQ   rQ   u   s$  € Ü‹9€DäˆFƒ|�~Ò%àˆÜˆFƒ|�}Ò$ð ˆÜ
€CÜ€HØ€EØ
�Ò
Ø”xÑÜ�v“,‰CàˆCÜˆHØ�8‰8Ô(Ò(ØÜ�s—y‘y“>ˆÜ˜6“l‰ˆˆeØ�2Š:Ü�e“ˆAÜ”d˜6“l×(Ñ(Ó)ˆAØˆAÜ�v“,ˆCØ�x‰x˜2Š~Ü˜#Ÿ)™)Ó$‘à�Ü˜˜A˜q“MˆEØ�×$Ñ$ X¨uÓ5Ñ5ˆØ”G×*Ñ*Ò*ØØ€Kð/ �Ó
ð. €Kr5   c              #  ó´   K  — d}| D ]M  }|\  }}|r>|t         k7  rt        d|› d|› d�«      ‚|j                  d«      st        d|› d�«      ‚d}nd}|–— ŒO y	­w)
aS  Checks the tag structure of the content of the header section.

    Do not feed (0, 'SECTION') (2, 'HEADER') and (0, 'ENDSEC') tags!

    Args:
        tagger: generator/iterator of low level tags or compiled tags

    Raises:
        DXFStructureError() -> invalid group codes
        DXFValueError() -> invalid header variable name

    TzInvalid header variable tag z, ú).Ú$zInvalid header variable name "z", missing leading "$".FN)r   r   Ú
startswithr   )rc   Úvariable_name_tagre   ra   rF   s        r3   Úheader_validatorrq   œ   s‰   è ø€ ð ÐÛˆØ‰ˆˆeÙØÔ(Ò(Ü'Ø2°4°&¸¸5¸'ÀÐDóð ð ×#Ñ# CÔ(Ü#Ø4°U°GÐ;RÐSóð ð !&Ñà $ÐØ‹	ñ ùs   ‚AAc           
   #  ó–  K  — t        | t        «      sJ ‚t        t        | d   j                  «      }|dk(  }d}d}d}d}d}d}| D �]º  }	|	j
                  dk(  r|dk(  rt        t        |	j                  «      }t        |	«      rd}|r|	–— ŒF|r«|s©|	j
                  dk  r/t        t        | d   j                  «      }t        d	|› d
|› d�«      ‚|	j
                  dk(  r\t        t        |	j                  «      }
|
dk(  r|dz  }n |
dk(  r|dz  }nt        d|
› d|› d
|› d�«      ‚|dk  rt        d	|› d
|› d�«      ‚|	j
                  t        k(  r„|s‚t        t        |	j                  «      }
|
j                  d«      r|rt        d|› d
|› d�«      ‚d}|
dd dz   }n8|
dk(  s|
|k(  r|st        d|› d
|› d�«      ‚d}d}nt        d|
› d|› d
|› d�«      ‚|	j
                  t        k(  r|du rd}|rt        d|› d
|› d�«      ‚|	–— �Œ½ |rt        d|› d
|› d�«      ‚|r/|dk  rt        d	|› d
|› d�«      ‚|dkD  rt        d	|› d
|› d�«      ‚yy­w)a›  Checks for valid DXF entity tag structure.

    - APP DATA can not be nested and every opening tag (102, '{...') needs a
      closing tag (102, '}')
    - extended group codes (>=1000) allowed before XDATA section
    - XDATA section starts with (1001, APPID) and is always at the end of an
      entity
    - XDATA section: only group code >= 1000 is allowed
    - XDATA control strings (1002, '{') and (1002, '}') have to be balanced
    - embedded objects may follow XDATA

    XRECORD entities will not be checked.

    Args:
        tags: list of DXFTag()

    Raises:
        DXFAppDataError: for invalid APP DATA
        DXFXDataError: for invalid XDATA

    r   ÚXRECORDz???FÚ}r%   Tiè  z"Invalid XDATA structure in entity z(#z2), only group code >=1000 allowed in XDATA sectioniê  Ú{r
   z%Invalid XDATA control string (1002, "z
") entity rm   z1), unbalanced list markers, missing  (1002, "{").z%Invalid APP DATA structure in entity z), APP DATA can not be nested.Nz,), found (102, "}") tag without opening tag.z&Invalid APP DATA structure tag (102, "z") in entity z"), missing closing tag (102, "}").z1), unbalanced list markers, missing  (1002, "}").)Ú
isinstanceÚlistr   r@   rF   ra   r   r   r   ro   r   r   )ÚtagsÚdxftypeÚ
is_xrecordÚhandleÚapp_dataÚxdataÚxdata_list_levelÚapp_data_closing_tagÚembedded_objectre   rF   s              r3   Úentity_structure_validatorr�   »   s@  è ø€ ô, �dœDÔ!Ð!Ð!Ü”3˜˜Q™Ÿ™Ó&€GØ˜IÑ%€JØ€FØ€HØ€EØÐØ #ÐØ!€OÜˆØ�8‰8�qŠ=˜V uš_Üœ#˜sŸy™yÓ)ˆFä$ SÔ)Ø"ˆOáØŠIØá™Ø�x‰x˜$ŠÜœs D¨¡G§M¡MÓ2�Ü#Ø8¸¸	ÀÀFÀ8ð LFð Góð ð �x‰x˜4ÒÜœS #§)¡)Ó,�Ø˜C’<Ø$¨Ñ)Ñ$Ø˜c’\Ø$¨Ñ)Ñ$ä'Ø?À¸wð GØ#˜9 B v h¨bð2óð ð $ aÒ'Ü'Ø<¸W¸IÀRÈÀxð PJð Kóð ð
 �8‰8”Ò&©zäœ˜cŸi™iÓ(ˆEØ×Ñ Ô$ÙÜ)Ø?À¸yØ˜V˜HÐ$BðDóð ð  �à',¨Q¨R y°3¡Ñ$Ø˜#’ Ð*>Ò!>ÙÜ)Ø?À¸yØ˜V˜HÐ$QðSóð ð !�Ø'*Ñ$ä%Ø<¸U¸Gð DØ%˜Y b¨¨°ð4óð ð �8‰8”|Ò#¨°©ØˆEÙÜ%Ø;¸G¸9Ø˜˜Ð CðEóð ð Œ	ðM ñP ÜØ3°G°9¸B¸v¸hð G/ð 0ó
ð 	
ñ Ø˜aÒÜØ4°W°I¸RÀ¸xð HBð Cóð ð  Ò!ÜØ4°W°I¸RÀ¸xð HBð Cóð ð "ð ùs   ‚II	c                ór   — t        j                  | d¬«      5 }t        |«      cddd«       S # 1 sw Y   yxY w)z4Returns ``True`` if `filename` is an ASCII DXF file.Úignore©ÚerrorsN)ÚioÚopenÚis_dxf_stream)ÚfilenameÚfps     r3   Úis_dxf_filer‹   4  s&   € ä	�‰� (Õ	+¨rÜ˜RÓ ÷ 
,×	+Ò	+ús   ˜-­6c                óx   — t        | d«      5 }|j                  d«      }ddd«       |dk(  S # 1 sw Y   dk(  S xY w)z4Returns ``True`` if `filename` is a binary DXF file.Úrbé   Ns   AutoCAD Binary DXF
 )r‡   Úread)r‰   rŠ   Úsentinels      r3   Úis_binary_dxf_filer‘   :  s>   € ä	ˆh˜Ô	 Ø—7‘7˜2“;ˆ÷ 
àÐ8Ñ8Ð8÷ 
àÐ8Ñ8Ð8ús   �,¬9c                ó   — t        | «      duS )z-Returns ``True`` if `filename` is a DWG file.N)Údwg_version)r‰   s    r3   Úis_dwg_filer”   A  s   € ä�xÓ ¨Ð,Ð,r5   c                óò   — t        t        | «      d«      5 }	 |j                  d«      j                  d¬«      }|t
        vr
	 ddd«       y|cddd«       S # t        $ r Y ddd«       yw xY w# 1 sw Y   yxY w)z8Returns DWG version of `filename` as string or ``None``.r�   é   rƒ   r„   N)r‡   r@   r�   r>   ÚIOErrorr   )r‰   rŠ   r,   s      r3   r“   r“   F  sy   € ä	Œc�(‹m˜TÔ	" bð	Ø—g‘g˜a“j×'Ñ'¨xÐ'Ó8ˆGð œ,Ñ&Ø÷ 
#Ð	"ð ÷ 
#Ñ	"øô ò 	Ø÷	 
#Ð	"ð	ú÷ 
#Ð	"ús3   –A-˜!A¹	A-ÁA-Á	A*ÁA-Á)A*Á*A-Á-A6c                óš   — 	 t        | «      }	 |D ]  }|dk(  r y|j                  dkD  sŒ y 	 y# t        $ r Y yw xY w# t        $ r Y yw xY w)NFrX   Tiç  )r   r   ra   r   )rR   Úreaderre   s      r3   rˆ   rˆ   R  sj   € ðÜ" 6Ó*ˆðÛˆCà�nÒ$Ùð �x‰x˜#‹~Ùñ ð øô ò Ùðûô ò ØØðús'   ‚/ Ž> š> ª> ¬> ¯	;º;¾	A
Á	A
c                ó¦   — d| v r$| j                  dd«      } | j                  dd«      } t        | «      }t        t        j                  |«      «       S )NÚ\z\U+Ú z\M+)ÚreplaceÚsetÚboolr   Úintersection)rE   Úcharss     r3   Úis_valid_table_namer¢   s  sN   € àˆt�|à�|‰|˜F BÓ'ˆð �|‰|˜F BÓ'ˆÜ�‹I€EÜÔ1×>Ñ>¸uÓEÓFÐFÐFr5   c                óp   — t        | t        «      st        dt        | «      › �«      ‚| j	                  «       S )zMake unified table entry key.zname has to be a string, got )rv   r@   r   ÚtypeÚlower©rE   s    r3   Úmake_table_keyr§     s/   € ä�dœCÔ ÜÐ:¼4À»:¸,ÐGÓHÐHØ�:‰:‹<Ðr5   c                ó0   — t        | «      ryt        | «      S )NT)Úis_adsk_special_layerr¢   r¦   s    r3   Úis_valid_layer_namerª   †  s   € Ü˜TÔ"ØÜ˜tÓ$Ð$r5   c                ó^   — | j                  d«      rt        | «      dkD  rt        | dd  «      S y)NÚ*r
   F)ro   Úlenr¢   r¦   s    r3   r©   r©   Œ  s.   € Ø‡��sÔ¤ D£	¨A¢ô # 4¨¨ 8Ó,Ð,Ør5   c                óV   — | j                  d«      rt        | dd  «      S t        | «      S )Nr¬   r
   )ro   r¢   r¦   s    r3   Úis_valid_block_namer¯   •  s*   € Ø‡��sÔÜ" 4¨¨ 8Ó,Ð,ä" 4Ó(Ð(r5   c                ó`   — | j                  d«      r| j                  «       dk(  S t        | «      S )Nr¬   z*ACTIVE)ro   Úupperr¢   r¦   s    r3   Úis_valid_vport_namer²   œ  s*   € Ø‡��sÔØ�z‰z‹|˜yÑ(Ð(ä" 4Ó(Ð(r5   c                ó   — | t         v S ©N)r   )Ú
lineweights    r3   Úis_valid_lineweightr¶   £  s   € ØÔ4Ð4Ð4r5   c                ó~   — | t         v r| S | dk  rt        S | dkD  ryt        j                  t        | «      }t        |   S )NéýÿÿÿéÓ   )r   r   Úbisectr   )rµ   Úindexs     r3   Úfix_lineweightr¼   §  sE   € ØÔ0Ñ0ØÐØ�B‚Ü!Ð!Ø�CÒØÜ�M‰MÔ/°Ó<€EÜ  Ñ'Ð'r5   c                ó"   — d| cxk  xr dk  S c S )Nr   i  rO   )Úacis    r3   Úis_valid_aci_colorr¿   ²  s   € Ø�Ž?�s‰?Ð‰?Ðr5   c                óŠ   — t        | t        «      syt        | «      dk7  ry| D ]  }t        |t        «      r|dk  s|dkD  sŒ y y)NFé   r   éÿ   T)rv   r   r­   rB   )ÚrgbrF   s     r3   Úis_valid_rgbrÄ   ¶  sE   € Ü�cœ8Ô$ØÜ
ˆ3ƒx�1‚}ØÛˆÜ˜%¤Ô%¨°ª°e¸c³kÙð ð r5   c                ó   ‡ ‡— dˆˆ fd„}|S )z3Range of integer values, excluding the `end` value.c                ó$   •— ‰| cxk  xr ‰k  S c S r´   rO   ©rF   ÚendÚstarts    €€r3   Ú
_validatorz'is_in_integer_range.<locals>._validatorÄ  s   ø€ Ø˜Ö# Ñ#Ð#Ñ#Ð#r5   ©rF   rB   rH   rŸ   rO   ©rÉ   rÈ   rÊ   s   `` r3   Úis_in_integer_rangerÍ   Á  s   ù€ ö$ð Ðr5   c                ó   ‡ ‡— dˆˆ fd„}|S )Nc                ó6   •— t        t        | ‰«      ‰dz
  «      S )Nr
   ©ÚminÚmaxrÇ   s    €€r3   Ú_fixerz&fit_into_integer_range.<locals>._fixerË  s   ø€ Ü”3�u˜eÓ$ c¨A¡gÓ.Ð.r5   ©rF   rB   rH   rB   rO   ©rÉ   rÈ   rÓ   s   `` r3   Úfit_into_integer_rangerÖ   Ê  s   ù€ ö/ð €Mr5   c                ó   ‡ ‡— dˆˆ fd„}|S )Nc                ó0   •— t        t        | ‰«      ‰«      S r´   rÐ   rÇ   s    €€r3   rÓ   z$fit_into_float_range.<locals>._fixerÒ  s   ø€ Ü”3�u˜eÓ$ cÓ*Ð*r5   )rF   rb   rH   rb   rO   rÕ   s   `` r3   Úfit_into_float_rangerÙ   Ñ  s   ù€ ö+ð €Mr5   c                ó   ‡ ‡— dˆˆ fd„}|S )z1Range of float values, including the `end` value.c                ó$   •— ‰| cxk  xr ‰k  S c S r´   rO   rÇ   s    €€r3   rÊ   z%is_in_float_range.<locals>._validatorÛ  s   ø€ Ø˜Ö$ Ñ$Ð$Ñ$Ð$r5   )rF   rb   rH   rŸ   rO   rÌ   s   `` r3   Úis_in_float_rangerÜ   Ø  s   ù€ ö%ð Ðr5   c                ó.   — t        j                  | «       S r´   )r    Úisclose©Úvs    r3   Úis_not_null_vectorrá   á  s   € Ü�‰˜qÓ!Ð!Ð!r5   c                ó4   — t        j                  | dd¬«       S )Nr^   gê-�™—q=)Úabs_tol)ÚmathrÞ   rß   s    r3   Úis_not_zerorå   å  s   € Ü�|‰|˜A˜s¨EÔ2Ð2Ð2r5   c                ó   — | dk\  S ©Nr   rO   rß   s    r3   Úis_not_negativerè   é  s   € Ø�‰6€Mr5   c                ó   — | dkD  S rç   rO   rß   s    r3   Úis_positiverê   ð  s   € Øˆq‰5€Lr5   c                ó   ‡ — dˆ fd„}|S )Nc                ó$   •— t        ‰ | z  «       S r´   )rŸ   ©rF   Úmasks    €r3   rÊ   z$is_valid_bitmask.<locals>._validatorø  s   ø€ Ü˜˜ ™Ó&Ð&Ð&r5   rË   rO   )rî   rÊ   s   ` r3   Úis_valid_bitmaskrï   ÷  s   ø€ õ'ð Ðr5   c                ó   ‡ — dˆ fd„}|S )Nc                ó   •— ‰| z  S r´   rO   rí   s    €r3   rÓ   zfix_bitmask.<locals>._fixerÿ  s   ø€ Ø�e‰|Ðr5   rÔ   rO   )rî   rÓ   s   ` r3   Úfix_bitmaskrò   þ  s   ø€ õð €Mr5   c                ó
   — | dv S )N)r   r
   rO   rß   s    r3   Úis_integer_boolrô     s   € Ø�ˆ;Ðr5   c                ó   — | rdS dS )Nr
   r   rO   rß   s    r3   Úfix_integer_boolrö   	  s   € Ùˆ1Ð�qÐr5   c                ó   ‡ — dˆ fd„}|S )Nc                ó   •— | ‰v S r´   rO   )rà   Úvaluess    €r3   rÊ   zis_one_of.<locals>._validator  s   ø€ Ø�Fˆ{Ðr5   ©rH   rŸ   rO   )rù   rÊ   s   ` r3   Ú	is_one_ofrû     s   ø€ õð Ðr5   c                óz   — t        t        | «      j                  ddh«      «      }| xr | j                  d«       S )Nr7   ÚÚ^)rŸ   rž   r    Úendswith)ÚtextÚhas_line_breakss     r3   Úis_valid_one_line_textr    s9   € Üœ3˜t›9×1Ñ1°4¸°,Ó?Ó@€OØÐÒ9 t§}¡}°SÓ'9Ð#9Ð9r5   c                ód   — | j                  dd«      j                  dd«      j                  d«      S )Nr7   rœ   rý   rþ   )r�   Úrstrip)r   s    r3   Úfix_one_line_textr    s+   € Ø�<‰<˜˜bÓ!×)Ñ)¨$°Ó3×:Ñ:¸3Ó?Ð?r5   c                ó   — t        | «      S r´   )r  ©re   s    r3   Úis_valid_attrib_tagr    s   € Ü! #Ó&Ð&r5   c                ó   — t        | «      S r´   )r  r  s    r3   Úfix_attrib_tagr
  !  s   € Ü˜SÓ!Ð!r5   c                óH   — 	 t        | d«       y# t        t        f$ r Y yw xY w)Né   FT)rB   rC   rD   )r{   s    r3   Ú	is_handler  %  s.   € ðÜˆF�BŒð øô œ	Ð"ò Ùðús   ‚ �! !c                óV   — t        | t        «      r| t        k(  xs t        | dz  «      S y)Ni   F)rv   rB   r   rŸ   )rF   s    r3   Úis_transparencyr  -  s*   € Ü�%œÔØÔ,Ñ,ÒH´°U¸ZÑ5GÓ0HÐHØr5   )rR   r   rH   r$   )rU   ÚbytesrH   r$   )rc   zIterator[DXFTag]rH   r$   )rc   úIterable[DXFTag]rH   r  )rx   zlist[DXFTag]rH   r  )r‰   r@   rH   rŸ   )r‰   r@   rH   zOptional[str])rR   r   rH   rŸ   )rE   r@   rH   rŸ   )rE   r@   rH   r@   )rµ   rB   rH   rŸ   )rµ   rB   rH   rB   )r¾   rB   rH   rŸ   rú   )rÉ   rB   rÈ   rB   )rÉ   rb   rÈ   rb   )rà   rb   rH   rŸ   )rî   rB   )rH   rB   )rù   rž   )r   r@   rH   rŸ   )r   r@   rH   r@   )re   r@   rH   rŸ   )re   r@   rH   r@   )UÚ
__future__r   Útypingr   r   r   r   r   r	   Úloggingr†   rº   rä   Úconstr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rc   r   r   Útypesr   r   r   Úezdxf.tools.codepager   Ú
ezdxf.mathr    r!   Ú	getLoggerÚloggerr$   rS   rV   rQ   rq   r�   r‹   r‘   r”   r“   rˆ   r¢   r§   rª   r©   r¯   r²   r¶   r¼   r¿   rÄ   rÍ   rÖ   rÙ   rÜ   rá   rå   rè   Úis_greater_or_equal_zerorê   Úis_greater_zerorï   rò   rô   rö   rû   r  r  r  r
  r  r  rO   r5   r3   Ú<module>r     s;  ðõ #ß G× GÛ Û 	Û Û ÷÷ ÷ ÷ ñ ÷$ :ß >Ñ >Ý +ß $à	ˆ×	Ñ	˜7Ó	#€÷>ñ >óB7ó6ó$óNó>vór!ó9ó-ó
	óóB	Góó%óó)ó)ó5ó(óóóóóóó"ó3óð +Ð óð €óóóóóó:ó
@ó'ó"óôr5   