
    hn_                       S SK Jr  S SKJrJrJr  S SKJr  S SKrS SK	J
r
  S SKJrJrJrJrJr  S SKJrJrJrJrJr  S SKJr  S S	KJr  S S
KJrJr  SSKJrJ r J!r!  SSK"J#r#  SSK$J%r%J&r&  \(       a   S SKJ'r'J(r(  S SK)J*r*  S SK+J,r,  S SKJ-r-  S SK.J/r/  / SQr0\Rb                  " S5      r2\" S\" SSS\
Rf                  \S9\" SS\
Rh                  " S S5      \S9S.5      r5\" \55      r6Sr7Sr8\8S 4r9\Rt                   " S! S"\#5      5       r;\" S#S$\" S%5      05      r<\" \<5      r=\Rt                   " S& S'\;5      5       r>\" S(\" SS S)9\" SS*S)9S+.5      r?\" \?5      r@\Rt                   " S, S-\#5      5       rAg).    )annotations)TYPE_CHECKINGUnionOptional)SelfN)	validator)SUBCLASS_MARKERDXFKeyErrorDXFValueErrorDXFTypeErrorDXFStructureError)DXFAttrDXFAttributesDefSubclassRETURN_DEFAULTgroup_code_mapping)is_valid_handle)
AuditError)factory
DXFGraphic   )
base_classSubclassProcessor	DXFEntity)	DXFObject)default_copyCopyNotSupported)DXFNamespaceXRecord)AbstractTagWriter)Drawing)Auditor)xref)
DictionaryDictionaryWithDefaultDictionaryVarezdxfAcDbDictionaryi  T)defaultoptionalr   fixeri     )r)   r   r+   )
hard_ownedcloning   i^  ih  c                    ^  \ rS rSrSrSr\" \\5      r	S)U 4S jjr
\4S*S jjrS+S jrS,U 4S jjrS)U 4S jjrS)S	 jr S-   S.U 4S
 jjjrS rS/U 4S jjrS0U 4S jjrS1S jr\S2S j5       rS rS rS3S jrS4S jrS5S jrS6S jrS7S jr\rS-S8S jjr S9S jr!S4S jr"S:S jr#S5S jr$S5S jr%S)S jr&S)S jr'S;S<S jjr(S=S  jr)S>S! jr*S=S" jr+S?S# jr,S;S@S$ jjr-SAU 4S% jjr.SBS& jr/S)U 4S' jjr0S(r1U =r2$ )Cr$   V   a  AutoCAD maintains items such as mline styles and group definitions as
objects in dictionaries. Other applications are free to create and use
their own dictionaries as they see fit. The prefix "ACAD_" is reserved
for use by AutoCAD applications.

Dictionary entries are (key, DXFEntity) pairs. DXFEntity could be a string,
because at loading time not all objects are already stored in the EntityDB,
and have to be acquired later.


DICTIONARYc                V   > [         TU ]  5         [        5       U l        [        U l        g N)super__init__dict_data
VALUE_CODE_value_codeself	__class__s    K/var/www/html/env/lib/python3.13/site-packages/ezdxf/entities/dictionary.pyr6   Dictionary.__init__f   s    7;v
%    c                   [        U[        5      (       d   eU R                  Ul        U R                  R                  (       aS  [        5       nU R                  5        H.  u  pE[        U[        5      (       d  M   UR                  US9X4'   M0     X1l        g[        U R                  5      Ul        g! [         aB    UR                  R                  (       a%  [        R                  S[        U5       S35         M  e f = f)zCopy hard owned entities but do not store the copies in the entity
database, this is a second step (factory.bind), this is just real copying.
copy_strategyzcopy process ignored z% - this may cause problems in AutoCADN)
isinstancer$   r:   dxfr-   r7   itemsr   copyr   settings%ignore_copy_errors_in_linked_entitiesloggerwarningstrr8   )r<   entityrC   datakeyents         r>   	copy_dataDictionary.copy_datak   s     &*----!--88)-D JJL c9--"$'HH=H$I	 )  L

+FL , "(11WW"NN"7CzAf g ""s   ;B22AC><C>c                ,   [        5       nU R                  (       d  U$ U R                  5        Hb  u  p4[        U[        5      (       d  M  UR                  U5      nU(       d  M6  UR                  R                  X$R                  R                  '   Md     U$ )z,Returns handle mapping for in-object copies.)r7   is_hard_ownerrF   rD   r   getrE   handle)r<   clonehandle_mappingrO   rM   copied_entrys         r>   get_handle_mappingDictionary.get_handle_mapping   sr    )-!!!!::<KCfi00 99S>L|4@4D4D4K4Kzz001 ( r@   c                Z  > [        U[        5      (       d   e[        TU ]  X5        U R                  (       a  g[        5       nU R                  5        HN  u  pE[        U[        5      (       d  M  UR                  UR                  R                  5      nU(       d  MJ  XSU'   MP     X1l        g)z3Translate resources from self to the copied entity.N)rD   r$   r5   map_resourcesrT   r7   rF   r   get_reference_of_copyrE   rV   r8   )r<   rW   mappingrN   rO   rM   entity_copyr=   s          r>   r]   Dictionary.map_resources   s    %,,,,e-v::<KCfi00!77

8I8IJK{"S	 ( r@   c                   > [         TU ]  5         U R                  5        H?  u  p[        U[        5      (       d  M  UR
                  (       d  M/  UR                  5         MA     g r4   )r5   del_source_of_copyrF   rD   r   is_alive)r<   _rM   r=   s      r>   rc   Dictionary.del_source_of_copy   sA    "$IA&),,))+ &r@   c                B   U R                   R                  (       d  gU R                  nUc   eUR                  nU R                   R                  nU R                  5        H<  u  pEX5R                   l        [        R                  " XQ5        UR                  U5        M>     g)zCalled by binding a new or copied dictionary to the document,
bind hard owned sub-entities to the same document and add them to the
objects section.
N)
rE   r-   docobjectsrV   rF   ownerr   bind
add_object)r<   rh   object_sectionowner_handlere   rM   s         r>   post_bind_hookDictionary.post_bind_hook   su    
 xx"" hhxxIA+JJLL%%%f-	 &r@   c                   > [         TU ]  U5      nU(       a'  UR                  U[        SSS9nU R	                  U5        U$ )Nr   F)log)r5   load_dxf_attribsfast_load_dxfattribsacdb_dictionary_group_codes	load_dict)r<   	processorrE   tagsr=   s       r>   rs   Dictionary.load_dxf_attribs   sI     g&y1110! 2 D NN4 
r@   c                    S nS n[         nU HD  u  pVU[        ;   a  UnUnOU[        :X  a  UnU(       d  M)  U(       d  M2  X R                  U'   S nS nMF     X@l        g r4   )r9   SEARCH_CODESKEY_CODEr8   r:   )r<   rx   entry_handledict_key
value_codecodevalues          r>   rv   Dictionary.load_dict   se    
KD|# "
$! xLL'3

8$#   &r@   c                   >^ ^ [         TT ]  U5        UR                  mUU 4S jn[        T 5      (       a+  [	        U" 5       5       H  u  p4T R                  X45        M     g g )Nc               3     >#    TR                  5        H3  u  pTR                  U5      nUc  M  UR                  (       d  M.  X4v   M5     g 7fr4   )rF   rU   rd   )rO   rV   rM   dbr<   s      r>   rF   (Dictionary.post_load_hook.<locals>.items   s;     #zz|%&///+%  ,s   (AA
A)r5   post_load_hookentitydblenlist__setitem__)r<   rh   rF   kvr   r=   s   `    @r>   r   Dictionary.post_load_hook   sN    s#\\	& t99UW  & & r@   c                   > [         TU ]  U5        UR                  [        [        R
                  5        U R                  R                  USS/5        U R                  U5        g)(Export entity specific data as DXF tags.r-   r.   N)	r5   export_entity
write_tag2r	   acdb_dictionarynamerE   export_dxf_attribsexport_dictr<   	tagwriterr=   s     r>   r   Dictionary.export_entity   sM    i(_o.B.BC##Ii/HI#r@   c           	     v   U R                   R                  5        H  u  p#UR                  [        U5        [	        U[
        5      (       aO  UR                  (       a  UR                  R                  nO'[        R                  SU S[        U 5       S35        SnUR                  U R                  U5        M     g )NzKey "z"" points to a destroyed entity in z , target replaced by "0" handle.0)r8   rF   r   r|   rD   r   rd   rE   rV   rJ   debugrL   r:   )r<   r   rO   r   s       r>   r   Dictionary.export_dict   s     ****,JC  3/%++>>!II,,ELLu %!$i[(HJ  E  !1!159 -r@   c                @    [        U R                  R                  5      $ )zReturns ``True`` if the dictionary is hard owner of entities.
Hard owned entities will be destroyed by deleting the dictionary.
)boolrE   r-   r<   s    r>   rT   Dictionary.is_hard_owner  s    
 DHH''((r@   c                6    U R                   R                  5       $ )z3Returns a :class:`KeysView` of all dictionary keys.)r8   keysr   s    r>   r   Dictionary.keys  s    zz  r@   c              #  b   #    U R                  5        H  nXR                  U5      4v   M     g7f)zReturns an :class:`ItemsView` for all dictionary entries as
(key, entity) pairs. An entity can be a handle string if the entity
does not exist.
N)r   rU   r<   rO   s     r>   rF   Dictionary.items  s(     
 99;Cxx}$$ s   -/c                T    XR                   ;   a  U R                   U   $ [        U5      e)zReturn self[`key`].

The returned value can be a handle string if the entity does not exist.

Raises:
    DXFKeyError: `key` does not exist

)r8   r
   r   s     r>   __getitem__Dictionary.__getitem__  s'     **::c?"c""r@   c                $    U R                  X5      $ )zSet self[`key`] = `entity`.

Only DXF objects stored in the OBJECTS section are allowed as content
of :class:`Dictionary` objects. DXF entities stored in layouts are not
allowed.

Raises:
    DXFTypeError: invalid DXF type

)addr<   rO   rM   s      r>   r   Dictionary.__setitem__&  s     xx$$r@   c                $    U R                  U5      $ )zDDelete self[`key`].

Raises:
    DXFKeyError: `key` does not exist

)remover   s     r>   __delitem__Dictionary.__delitem__3  s     {{3r@   c                    XR                   ;   $ )zReturns `key` ``in`` self.)r8   r   s     r>   __contains__Dictionary.__contains__<  s    jj  r@   c                ,    [        U R                  5      $ )z$Returns count of dictionary entries.)r   r8   r   s    r>   __len__Dictionary.__len__@  s    4::r@   c                8    U R                   R                  X5      $ )zReturns the :class:`DXFEntity` for `key`, if `key` exist else
`default`. An entity can be a handle string if the entity
does not exist.

)r8   rU   )r<   rO   r)   s      r>   rU   Dictionary.getF  s     zz~~c++r@   c                Z    U R                   R                  5        H  u  p#X1L d  M  Us  $    g)zPReturns the DICTIONARY key string for `entity` or an empty string if not
found.
 )r8   rF   )r<   rM   rO   entrys       r>   find_keyDictionary.find_keyN  s,     ****,JC
 - r@   c                   [        U[        5      (       a"  [        U5      (       d  [        SU SU 35      eO[        U[        5      (       ar  U R
                  bI  U R
                  R                  (       a.  [        R                  S[        U5       S[        U 5       35        O[        SUR                  5        35      eX R                  U'   g)zAdd entry (key, value).

If the DICTIONARY is hard owner of its entries, the :meth:`add` does NOT take
ownership of the entity automatically.

Raises:
    DXFValueError: invalid entity handle
    DXFTypeError: invalid DXF type

zInvalid entity handle #z	 for key NzInvalid entity z in zGraphic entities not allowed: )rD   rL   r   r   r   rh   
is_loadingrJ   rK   r   dxftyper8   r   s      r>   r   Dictionary.addW  s     fc"""6**#&=fXYse$TUU +
++xx#(;(;
 VT#d)MN #%CFNNDTCU#VWW 

3r@   c                p    U R                  X5        U R                  R                  UR                  l        g)z*Add entry (key, value) and take ownership.N)r   rE   rV   rj   r   s      r>   take_ownershipDictionary.take_ownershipr  s"    88??

r@   c                    U R                   nX;  a  [        U5      eU R                  (       aE  U R                  c   eU R	                  U5      nU R                  R
                  R                  U5        X!	 g)zmDelete entry `key`. Raises :class:`DXFKeyError`, if `key` does not
exist. Destroys hard owned DXF entities.

N)r8   r
   rT   rh   r   ri   delete_entity)r<   rO   rN   rM   s       r>   r   Dictionary.removew  se    
 zz?c""88'''%%c*F HH**62Ir@   c                @     U R                   U	 g! [         a     gf = f)zDelete entry `key` if exists. Does not raise an exception if `key`
doesn't exist and does not destroy hard owned DXF entities.

N)r8   KeyErrorr   s     r>   discardDictionary.discard  s$    
	

3 		s    
c                z    U R                   (       a  U R                  5         U R                  R                  5         g)zMDelete all entries from the dictionary and destroys hard owned
DXF entities.
N)rT   _delete_hard_owned_entriesr8   clearr   s    r>   r   Dictionary.clear  s)     ++-

r@   c                    U R                   R                  nU R                  5        H-  u  p#[        U[        5      (       d  M  UR                  U5        M/     g r4   )rh   ri   rF   rD   r   r   )r<   ri   rO   rM   s       r>   r   %Dictionary._delete_hard_owned_entries  s>    ((""::<KC&),,%%f- (r@   c                    U R                   R                  R                  U R                  R                  US9nU R                  X5        U$ )zCreate a new sub-dictionary of type :class:`Dictionary`.

Args:
    key: name of the sub-dictionary
    hard_owned: entries of the new dictionary are hard owned

)rj   r-   )rh   ri   add_dictionaryrE   rV   r   r<   rO   r-   dxf_dicts       r>   add_new_dictDictionary.add_new_dict  sC     88##22((//j 3 
 	r@   c                    U R                   R                  R                  U R                  R                  US9nU R                  X5        U$ )zkAdd a new :class:`DictionaryVar`.

Args:
     key: entry name as string
     value: entry value as string

rj   r   )rh   ri   add_dictionary_varrE   rV   r   )r<   rO   r   new_vars       r>   add_dict_varDictionary.add_dict_var  sC     ((""55((// 6 
 	r@   c                    U R                   R                  R                  U R                  R                  S9nU R                  X5        U$ )zCAdd a new :class:`XRecord`.

Args:
     key: entry name as string

rj   )rh   ri   add_xrecordrE   rV   r   )r<   rO   new_xrecords      r>   r   Dictionary.add_xrecord  sB     hh&&22((// 3 
 	"r@   c                    X;  aK  U R                   R                  R                  U R                  R                  US9nU R                  X5        U$ U R                  U5      n[        U5      UR                  l        U$ )zpSet or add new :class:`DictionaryVar`.

Args:
     key: entry name as string
     value: entry value as string

r   )	rh   ri   r   rE   rV   r   rU   rL   r   )r<   rO   r   dict_vars       r>   set_or_add_dict_varDictionary.set_or_add_dict_var  sn     ?xx''::hhooU ; H HHS#  xx}H!$UHLLr@   c                    [        U[        5      (       d  [        SUR                  5        35      eU R	                  X5        U R
                  R                  UR
                  l        g)zAdd `obj` and set owner of `obj` to this dictionary.

Graphical DXF entities have to reside in a layout and therefore can not
be owned by a :class:`Dictionary`.

Raises:
    DXFTypeError: `obj` has invalid DXF type

zinvalid DXF type: N)rD   r   r   r   r   rE   rV   rj   )r<   r   objs      r>   link_dxf_objectDictionary.link_dxf_object  sI     #y))!3CKKM?CDDr@   c                    U R                  U5      nUc  U R                  XS9nU$ [        U[        5      (       d  [	        S[        U5       SU 35      eU$ )zIGet entry `key` or create a new :class:`Dictionary`,
if `Key` not exist.
)r-   z"expected a DICTIONARY entity, got z
 for key: )rU   r   rD   r$   r   rL   r   s       r>   get_required_dictDictionary.get_required_dict  sh     88C=(((DH
 	 Hj11#4S]O:cUS  r@   c                j   > U R                   (       d  g [        TU ]	  U5        U R                  U5        g r4   )rd   r5   audit _remove_keys_to_missing_entities)r<   auditorr=   s     r>   r   Dictionary.audit  s'    }}g--g6r@   c           
        / nUR                   nUR                  nU R                  R                  5        Hj  u  pV[	        U[
        5      (       a  Xd;  a
  U" U5        M)  M+  UR                  (       a&  UR                  R                  U;  a
  U" U5        M`  Mb  U" U5        Ml     U H?  nU R                  U	 UR                  [        R                  SU S[        U 5       3U US9  MA     g )NzRemoved entry "z" with invalid handle in )r   message
dxf_entityrN   )appendr   r8   rF   rD   rL   rd   rE   rV   fixed_errorr   INVALID_DICTIONARY_ENTRY)r<   r   trashr   r   rO   r   s          r>   r   +Dictionary._remove_keys_to_missing_entities  s    ****,JC%%%?3K #99##2-3K . s - C

388)#.GD	{S	    r@   c                   > U R                   (       d  g U R                  (       a  U R                  5         [        TU ]  5         g r4   )rd   rT   r   r5   destroyr;   s    r>   r   Dictionary.destroy  s,    }}++-r@   )r8   r:   returnNonerM   r   r  r  )rW   r$   r  zdict[str, str])rW   r   r_   zxref.ResourceMapperr  r  r4   rw   zOptional[SubclassProcessor]r  r   rh   r!   r  r  r   r    r  r  )r   r    )r  r   )rO   rL   r  r   )rO   rL   rM   r   r  r  )rO   rL   r  r  )rO   rL   r  r   )r  intrO   rL   r)   Optional[DXFObject]r  r	  )rM   r   r  rL   )rO   rL   rM   r   )F)rO   rL   r-   r   r  r$   )rO   rL   r   rL   r  r&   )rO   rL   r  r   )r   rL   r   r   r  r  )rO   rL   r  r$   r   r"   r  r  )r   r"   )3__name__
__module____qualname____firstlineno____doc__DXFTYPEr   r   r   
DXFATTRIBSr6   r   rQ   rZ   r]   rc   ro   rs   rv   r   r   r   propertyrT   r   rF   r   r   r   r   r   countrU   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes____classcell__r=   s   @r>   r$   r$   V   s
   	 Gz?;J&
 5A ,4,.( 8<	4			 	&*'$:* ) )!%#% ! E,!6+
".$(7. r@   r$   AcDbDictionaryWithDefaultr)   iT  c                     ^  \ rS rSrSr\" \\\5      r	SU 4S jjr
\4SU 4S jjjrSU 4S jjr S   SU 4S jjjrSU 4S jjrSS jrSSU 4S	 jjjrSS
 jrSU 4S jjrSrU =r$ )r%   i'  ACDBDICTIONARYWDFLTc                0   > [         TU ]  5         S U l        g r4   )r5   r6   _defaultr;   s    r>   r6   DictionaryWithDefault.__init__,  s    -1r@   c                p   > [         TU ]  XS9  [        U[        5      (       d   eU R                  Ul        g )NrB   )r5   rQ   rD   r%   r  )r<   rM   rC   r=   s      r>   rQ   DictionaryWithDefault.copy_data0  s2    &>&"78888--r@   c                   > UR                   R                  U R                  R                  5      U l        [
        TU ]  U5        g r4   )r   rU   rE   r)   r  r5   r   )r<   rh   r=   s     r>   r   $DictionaryWithDefault.post_load_hook5  s2     (()9)9:s#r@   c                b   > [         TU ]  U5      nU(       a  UR                  U[        S5        U$ )N   )r5   rs   rt   "acdb_dict_with_default_group_codesr<   rw   rE   r=   s      r>   rs   &DictionaryWithDefault.load_dxf_attribs<  s0     g&y1**30RTUV
r@   c                   > [         TU ]  U5        UR                  [        [        R
                  5        U R                  R                  US5        g )Nr)   )r5   r   r   r	   acdb_dict_with_defaultr   rE   r   r   s     r>   r   #DictionaryWithDefault.export_entityD  s;    i(_.D.I.IJ##Iy9r@   c                $    U R                  U5      $ r4   )rU   r   s     r>   r   !DictionaryWithDefault.__getitem__I  s    xx}r@   c                2   > [         TU ]  XR                  S9$ )zReturns :class:`DXFEntity` for `key` or the predefined dictionary
wide :attr:`dxf.default` entity if `key` does not exist or ``None``
if default value also not exist.

r)   )r5   rU   r  )r<   rO   r)   r=   s      r>   rU   DictionaryWithDefault.getL  s     w{3{66r@   c                n    Xl         U R                   R                  R                  U R                  l        g)z\Set dictionary wide default entry.

Args:
    default: default entry as :class:`DXFEntity`

N)r  rE   rV   r)   )r<   r)   s     r>   set_default!DictionaryWithDefault.set_defaultU  s%      ==,,33r@   c                   >^ ^ UU 4S jnT R                   b  T R                   R                  (       d4  TR                  R                  (       a  TR	                  U5        OU" 5         [
        TT ]  T5        g )Nc                    > TR                   R                  R                  TR                  R                  S9n TR                  U 5        TR                  [        R                  S[        T5       S3S9  g )Nr   z"Created missing default object in .)r   r   )
rh   ri   add_placeholderrE   rV   r/  r   r   CREATED_MISSING_OBJECTrL   )placeholderr   r<   s    r>   create_missing_default_objectBDictionaryWithDefault.audit.<locals>.create_missing_default_object`  sb    ((**:::QK[)66<SYKqI   r@   )r  rd   r   lockedadd_post_audit_jobr5   r   )r<   r   r7  r=   s   `` r>   r   DictionaryWithDefault.audit_  sP    	 == (>(>&&**+HI-/gr@   )r  r   r  r  r4   r  r  )rO   rL   r  )r)   r   r  r  r
  )r  r  r  r  r  r   r   r   r'  r  r6   r   rQ   r   rs   r   r   rU   r/  r   r  r  r  s   @r>   r%   r%   '  ss    #Gz?<RSJ2 5A ( (
$ 8<4	 :
7 74 r@   r%   DictionaryVariablesr,  r   )schemar   c                     ^  \ rS rSrSrSr\" \\5      r	\
S	S j5       r\R                  S
S j5       r S   SU 4S jjjrSU 4S jjrSrU =r$ )r&   i{  ao  
DICTIONARYVAR objects are used by AutoCAD as a means to store named values
in the database for setvar / getvar purposes without the need to add entries
to the DXF HEADER section. System variables that are stored as
DICTIONARYVAR objects are the following:

    - DEFAULTVIEWCATEGORY
    - DIMADEC
    - DIMASSOC
    - DIMDSEP
    - DRAWORDERCTL
    - FIELDEVAL
    - HALOGAP
    - HIDETEXT
    - INDEXCTL
    - INDEXCTL
    - INTERSECTIONCOLOR
    - INTERSECTIONDISPLAY
    - MSOLESCALE
    - OBSCOLOR
    - OBSLTYPE
    - OLEFRAME
    - PROJECTNAME
    - SORTENTS
    - UPDATETHUMBNAIL
    - XCLIPFRAME
    - XCLIPFRAME

DICTIONARYVARc                :    U R                   R                  SS5      $ )z:Get/set the value of the :class:`DictionaryVar` as string.r   r   )rE   rU   r   s    r>   r   DictionaryVar.value  s     xx||GR((r@   c                N    U R                   R                  S[        U5      5        g )Nr   )rE   setrL   )r<   rN   s     r>   r   rA    s    Wc$i(r@   c                b   > [         TU ]  U5      nU(       a  UR                  U[        S5        U$ )Nr   )r5   rs   rt   acdb_dict_var_group_codesr$  s      r>   rs   DictionaryVar.load_dxf_attribs  s/     g&y1**30I1M
r@   c                   > [         TU ]  U5        UR                  [        [        R
                  5        U R                  R                  USS/5        g)r   r=  r   N)r5   r   r   r	   acdb_dict_varr   rE   r   r   s     r>   r   DictionaryVar.export_entity  s?    i(_m.@.@A##I'/BCr@    )r  rL   )rN   rL   r  r  r4   r  r  )r  r  r  r  r  r  r   r   rH  r  r  r   setterrs   r   r  r  r  s   @r>   r&   r&   {  sp    < Gz=9J) ) \\) ) 8<4	 D Dr@   r&   )B
__future__r   typingr   r   r   typing_extensionsr   loggingezdxf.lldxfr   ezdxf.lldxf.constr	   r
   r   r   r   ezdxf.lldxf.attributesr   r   r   r   r   ezdxf.lldxf.typesr   ezdxf.auditr   ezdxf.entitiesr   r   	dxfentityr   r   r   dxfobjr   rG   r   r   r   r   ezdxf.lldxf.tagwriterr    ezdxf.documentr!   r"   r'   r#   __all__	getLoggerrJ   is_integer_boolis_in_integer_ranger   ru   r|   r9   r{   register_entityr$   r'  r#  r%   rH  rE  r&   rJ  r@   r>   <module>r_     s   # 1 1 "  !   . " . ? ?  047&#
B			7	#  // 	
" 33Aq9 	
1$'P 1A 
C  	D D DN %73<  &88N%O " 	EJ E EP #q)B' /}=  	7DI 7D 7Dr@   