o
    ,׾gO                     @   sL   d dgZ ddlmZ ddlT G dd deZG dd dZG dd  d Zd	S )
ScannerScannerError   )MarkedYAMLError)*c                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r	   r	   V/var/www/html/backend_erp/backend_erp_env/lib/python3.10/site-packages/yaml/scanner.pyr       s    c                   @   s   e Zd Zdd ZdS )	SimpleKeyc                 C   s(   || _ || _|| _|| _|| _|| _d S N)token_numberrequiredindexlinecolumnmark)selfr   r   r   r   r   r   r	   r	   r
   __init__&   s   
zSimpleKey.__init__N)r   r   r   r   r	   r	   r	   r
   r   #   s    r   c                   @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#dCdD Z$dEdF Z%dGdH Z&dIdJ Z'dKdL Z(dMdN Z)dOdP Z*dQdR Z+dSdT Z,dUdV Z-dWdX Z.dYdZ Z/d[d\ Z0d]d^ Z1d_d` Z2dadb Z3dcdd Z4dedf Z5dgdh Z6didj Z7dkdl Z8dmdn Z9dodp Z:dqdr Z;dsdt Z<dudv Z=dwdx Z>dydz Z?d{d| Z@i d}d~ddddddddddddddddddddddddddddddddddiZAddddZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdS )r   c                 C   s<   d| _ d| _g | _|   d| _d| _g | _d| _i | _dS )zInitialize the scanner.F    TN)	done
flow_leveltokensfetch_stream_starttokens_takenindentindentsallow_simple_keypossible_simple_keysr   r	   r	   r
   r   0   s   
zScanner.__init__c                 G   sJ   |   r|   |   s| jr#|sdS |D ]}t| jd |r" dS qdS )NTr   F)need_more_tokensfetch_more_tokensr   
isinstance)r   choiceschoicer	   r	   r
   check_tokenq   s   zScanner.check_tokenc                 C   s,   |   r|   |   s| jr| jd S d S )Nr   )r!   r"   r   r    r	   r	   r
   
peek_token}   s   
zScanner.peek_tokenc                 C   s<   |   r|   |   s| jr|  jd7  _| jdS d S )Nr   r   )r!   r"   r   r   popr    r	   r	   r
   	get_token   s   zScanner.get_tokenc                 C   s2   | j rdS | js
dS |   |  | jkrdS d S )NFT)r   r   stale_possible_simple_keysnext_possible_simple_keyr   r    r	   r	   r
   r!      s   zScanner.need_more_tokensc                 C   s  |    |   | | j |  }|dkr|  S |dkr&|  r&|  S |dkr2|  r2| 	 S |dkr>| 
 r>|  S |dkrF|  S |dkrN|  S |dkrV|  S |dkr^|  S |d	krf|  S |dkrr|  rr|  S |d
kr~|  r~|  S |dkr|  r|  S |dkr|  S |dkr|  S |dkr|  S |dkr| js|  S |dkr| js|  S |dkr|  S |dkr|  S |  r|   S t!dd d| | " )N %-.[{]},?:r   &!|>'"z!while scanning for the next tokenz.found character %r that cannot start any token)#scan_to_next_tokenr*   unwind_indentr   peekfetch_stream_endcheck_directivefetch_directivecheck_document_startfetch_document_startcheck_document_endfetch_document_endfetch_flow_sequence_startfetch_flow_mapping_startfetch_flow_sequence_endfetch_flow_mapping_endfetch_flow_entrycheck_block_entryfetch_block_entry	check_key	fetch_keycheck_valuefetch_valuefetch_aliasfetch_anchor	fetch_tagr   fetch_literalfetch_foldedfetch_singlefetch_doublecheck_plainfetch_plainr   get_markr   chr	   r	   r
   r"      s`   	zScanner.fetch_more_tokensc                 C   s6   d }| j D ]}| j | }|d u s|j|k r|j}q|S r   )r   r   )r   min_token_numberlevelkeyr	   r	   r
   r+     s   

z Scanner.next_possible_simple_keyc                 C   s\   t | jD ]&}| j| }|j| jks| j|j dkr+|jr'td|jd|  | j|= qd S )Ni   while scanning a simple keycould not find expected ':')listr   r   r   r   r   r   r[   )r   r_   r`   r	   r	   r
   r*     s   
z"Scanner.stale_possible_simple_keysc                 C   sb   | j  o	| j| jk}| jr/|   | jt| j }t||| j	| j
| j|  }|| j| j < d S d S r   )r   r   r   r   remove_possible_simple_keyr   lenr   r   r   r   r[   r   )r   r   r   r`   r	   r	   r
   save_possible_simple_key'  s   z Scanner.save_possible_simple_keyc                 C   sD   | j | jv r | j| j  }|jrtd|jd|  | j| j = d S d S )Nra   rb   )r   r   r   r   r   r[   )r   r`   r	   r	   r
   rd   8  s   z"Scanner.remove_possible_simple_keyc                 C   sL   | j rd S | j|kr$|  }| j | _| jt|| | j|ks
d S d S r   )r   r   r[   r   r(   r   appendBlockEndToken)r   r   r   r	   r	   r
   r>   E  s   
zScanner.unwind_indentc                 C   s&   | j |k r| j| j  || _ dS dS )NTF)r   r   rg   )r   r   r	   r	   r
   
add_indent]  s
   
zScanner.add_indentc                 C   s$   |   }| jt||| jd d S )N)encoding)r[   r   rg   StreamStartTokenrj   r   r   r	   r	   r
   r   g  s   zScanner.fetch_stream_startc                 C   sB   |  d |   d| _i | _|  }| jt|| d| _d S )Nr   FT)	r>   rd   r   r   r[   r   rg   StreamEndTokenr   rl   r	   r	   r
   r@   s  s   

zScanner.fetch_stream_endc                 C   s,   |  d |   d| _| j|   d S )Nr   F)r>   rd   r   r   rg   scan_directiver    r	   r	   r
   rB     s   
zScanner.fetch_directivec                 C      |  t d S r   )fetch_document_indicatorDocumentStartTokenr    r	   r	   r
   rD        zScanner.fetch_document_startc                 C   ro   r   )rp   DocumentEndTokenr    r	   r	   r
   rF     rr   zScanner.fetch_document_endc                 C   sH   |  d |   d| _|  }| d |  }| j||| d S )Nr   F   )r>   rd   r   r[   forwardr   rg   r   
TokenClass
start_markend_markr	   r	   r
   rp     s   

z Scanner.fetch_document_indicatorc                 C   ro   r   )fetch_flow_collection_startFlowSequenceStartTokenr    r	   r	   r
   rG     rr   z!Scanner.fetch_flow_sequence_startc                 C   ro   r   )rz   FlowMappingStartTokenr    r	   r	   r
   rH     rr   z Scanner.fetch_flow_mapping_startc                 C   sJ   |    |  jd7  _d| _|  }|   |  }| j||| d S )Nr   T)rf   r   r   r[   ru   r   rg   rv   r	   r	   r
   rz        z#Scanner.fetch_flow_collection_startc                 C   ro   r   )fetch_flow_collection_endFlowSequenceEndTokenr    r	   r	   r
   rI     rr   zScanner.fetch_flow_sequence_endc                 C   ro   r   )r~   FlowMappingEndTokenr    r	   r	   r
   rJ     rr   zScanner.fetch_flow_mapping_endc                 C   sJ   |    |  jd8  _d| _|  }|   |  }| j||| d S )Nr   F)rd   r   r   r[   ru   r   rg   rv   r	   r	   r
   r~     r}   z!Scanner.fetch_flow_collection_endc                 C   s<   d| _ |   |  }|   |  }| jt|| d S NT)r   rd   r[   ru   r   rg   FlowEntryToken)r   rx   ry   r	   r	   r
   rK     s   zScanner.fetch_flow_entryc                 C   s   | j s#| jstd d d|  | | jr"|  }| jt|| n	 d| _| 	  |  }| 
  |  }| jt|| d S )Nz%sequence entries are not allowed hereT)r   r   r   r[   ri   r   r   rg   BlockSequenceStartTokenrd   ru   BlockEntryTokenr   r   rx   ry   r	   r	   r
   rM     s"   zScanner.fetch_block_entryc                 C   s   | j s"| jstd d d|  | | jr"|  }| jt|| | j  | _| 	  |  }| 
  |  }| jt|| d S )Nz!mapping keys are not allowed here)r   r   r   r[   ri   r   r   rg   BlockMappingStartTokenrd   ru   KeyTokenr   r	   r	   r
   rO     s   
zScanner.fetch_keyc                 C   s  | j | jv r>| j| j  }| j| j = | j|j| j t|j|j | j s:| |j	r:| j|j| j t
|j|j d| _n.| j sM| jsMtd d d|  | j sc| | j	rc|  }| jt
|| | j  | _|   |  }|   |  }| jt|| d S )NFz#mapping values are not allowed here)r   r   r   insertr   r   r   r   ri   r   r   r   r   r[   rg   rd   ru   
ValueToken)r   r`   r   rx   ry   r	   r	   r
   rQ   !  s8   

zScanner.fetch_valuec                 C   $   |    d| _| j| t d S NF)rf   r   r   rg   scan_anchor
AliasTokenr    r	   r	   r
   rR   Y     zScanner.fetch_aliasc                 C   r   r   )rf   r   r   rg   r   AnchorTokenr    r	   r	   r
   rS   d  r   zScanner.fetch_anchorc                 C   "   |    d| _| j|   d S r   )rf   r   r   rg   scan_tagr    r	   r	   r
   rT   o  s   zScanner.fetch_tagc                 C      | j dd d S )Nr9   stylefetch_block_scalarr    r	   r	   r
   rU   z     zScanner.fetch_literalc                 C   r   )Nr:   r   r   r    r	   r	   r
   rV   }  r   zScanner.fetch_foldedc                 C   s$   d| _ |   | j| | d S r   )r   rd   r   rg   scan_block_scalarr   r   r	   r	   r
   r     s   zScanner.fetch_block_scalarc                 C   r   )Nr;   r   fetch_flow_scalarr    r	   r	   r
   rW     r   zScanner.fetch_singlec                 C   r   )Nr<   r   r   r    r	   r	   r
   rX     r   zScanner.fetch_doublec                 C   s$   |    d| _| j| | d S r   )rf   r   r   rg   scan_flow_scalarr   r	   r	   r
   r     r   zScanner.fetch_flow_scalarc                 C   r   r   )rf   r   r   rg   
scan_plainr    r	   r	   r
   rZ     s   zScanner.fetch_plainc                 C   s   | j dkrdS d S )Nr   T)r   r    r	   r	   r
   rA     s   
zScanner.check_directivec                 C   6   | j dkr| ddkr| ddv rdS d S d S d S )Nr   rt   ---     	
  Tr   prefixr?   r    r	   r	   r
   rC        
zScanner.check_document_startc                 C   r   )Nr   rt   ...r   Tr   r    r	   r	   r
   rE     r   zScanner.check_document_endc                 C   s   |  ddv S )Nr   r   )r?   r    r	   r	   r
   rL     s   zScanner.check_block_entryc                 C      | j rdS | ddv S NTr   r   r   r?   r    r	   r	   r
   rN        zScanner.check_keyc                 C   r   r   r   r    r	   r	   r
   rP     r   zScanner.check_valuec                 C   s6   |   }|dvp|  ddvo|dkp| j o|dv S )Nu      	
  -?:,[]{}#&*!|>'"%@`r   r   r.   z?:)r?   r   r\   r	   r	   r
   rY     s
   zScanner.check_plainc                 C   s   | j dkr|  dkr|   d}|sJ|  dkr#|   |  dks|  dkr9|  dvr9|   |  dvs/|  rD| jsCd| _nd}|rd S d S )Nr   u   ﻿F #    
  T)r   r?   ru   scan_line_breakr   r   )r   foundr	   r	   r
   r=     s"   zScanner.scan_to_next_tokenc                 C   s   |   }|   | |}d }|dkr| |}|   }n"|dkr+| |}|   }n|   }|  dvr?|   |  dvs5| | t||||S )NYAMLTAGr   )r[   ru   scan_directive_namescan_yaml_directive_valuescan_tag_directive_valuer?   scan_directive_ignored_lineDirectiveToken)r   rx   namevaluery   r	   r	   r
   rn     s    





zScanner.scan_directivec                 C   s  d}|  |}d|  krdks,n d|  krdks,n d|  kr'dks,n |dv rZ|d	7 }|  |}d|  kr?dks,n d|  krJdks,n d|  krUdks,n |dv s,|sgtd
|d| |  | |}| | |   }|dvrtd
|d| |  |S )Nr   09AZaz-_r   while scanning a directive6expected alphabetic or numeric character, but found %r     
  )r?   r   r[   r   ru   )r   rx   lengthr]   r   r	   r	   r
   r   &  s4   
B
B

zScanner.scan_directive_namec                 C   s   |   dkr|   |   dks| |}|   dkr(td|d|    |  |   | |}|   dvrDtd|d|    |  ||fS )Nr   r/   r   z%expected a digit or '.', but found %rr   z%expected a digit or ' ', but found %r)r?   ru   scan_yaml_directive_numberr   r[   )r   rx   majorminorr	   r	   r
   r   ;  s"   



z!Scanner.scan_yaml_directive_valuec                 C   s   |   }d|  krdksn td|d| |  d}d|  |  kr)dkr=n n|d7 }d|  |  kr<dks+n t| |}| | |S )Nr   r   r   zexpected a digit, but found %rr   r   )r?   r   r[   intr   ru   )r   rx   r]   r   r   r	   r	   r
   r   L  s   
z"Scanner.scan_yaml_directive_numberc                 C   s\   |   dkr|   |   dks| |}|   dkr%|   |   dks| |}||fS )Nr   )r?   ru   scan_tag_directive_handlescan_tag_directive_prefix)r   rx   handler   r	   r	   r
   r   Y  s   

z Scanner.scan_tag_directive_valuec                 C   s6   |  d|}|  }|dkrtd|d| |  |S )N	directiver   r   expected ' ', but found %r)scan_tag_handler?   r   r[   r   rx   r   r]   r	   r	   r
   r   c     z!Scanner.scan_tag_directive_handlec                 C   s6   |  d|}|  }|dvrtd|d| |  |S )Nr   r   r   r   )scan_tag_urir?   r   r[   r   r	   r	   r
   r   l  r   z!Scanner.scan_tag_directive_prefixc                 C   ~   |   dkr|   |   dks|   dkr&|   dvr&|   |   dvs|   }|dvr9td|d| |  |   d S )Nr   r   r   r   0expected a comment or a line break, but found %rr?   ru   r   r[   r   r   rx   r]   r	   r	   r
   r   u  s    z#Scanner.scan_directive_ignored_linec           	      C   sN  |   }|  }|dkrd}nd}|   d}| |}d|  kr&dksAn d|  kr1dksAn d	|  kr<d
ksAn |dv ro|d7 }| |}d|  krTdksAn d|  kr_dksAn d	|  krjd
ksAn |dv sA|s~td| |d| |   | |}| | |  }|dvrtd| |d| |   |   }||||S )Nr   aliasanchorr   r   r   r   r   r   r   r   r   zwhile scanning an %sr   u     	
  ?:,]}%@`)r[   r?   ru   r   r   )	r   rw   rx   	indicatorr   r   r]   r   ry   r	   r	   r
   r     sB   	
B
B



zScanner.scan_anchorc           	      C   s&  |   }| d}|dkr2d }| d | d|}|  dkr-td|d|   |   |   n@|dv r?d }d	}|   n3d}d
}|dvr[|d	krNd}n|d7 }| |}|dvsGd	}|rf| d|}nd	}|   | d|}|  }|dvrtd|d| |   ||f}|   }t|||S )Nr   <   tagr:   zwhile parsing a tagzexpected '>', but found %rr   r8   Fr   Tzwhile scanning a tagr   )r[   r?   ru   r   r   r   TagToken)	r   rx   r]   r   suffixr   
use_handler   ry   r	   r	   r
   r     sN   





zScanner.scan_tagc                 C   s  |dkrd}nd}g }|   }|   | |\}}| | | jd }|dk r*d}|d u r;|  \}}	}
t||	}n|| d }| |\}}
d}| j|kr| 	 dkr|
| | 	 dv}d}| 	|d	vrt|d7 }| 	|d	vsi|| | | | |  }| |\}}
| j|kr| 	 dkr|r|d
kr|r| 	 dvr|s|d n|| nn| j|kr| 	 dksU|dur|| |du r|
| td|d||
|S )Nr:   TFr    r,    	r   r   
r   )r[   ru   scan_block_scalar_indicatorsscan_block_scalar_ignored_liner   scan_block_scalar_indentationmaxscan_block_scalar_breaksr   r?   extendrg   r   r   ScalarTokenjoin)r   r   foldedchunksrx   chomping	increment
min_indentbreaks
max_indentry   r   
line_breakleading_non_spacer   r	   r	   r
   r     s\   




&

zScanner.scan_block_scalarc                 C   s   d }d }|   }|dv r7|dkrd}nd}|   |   }|dv r6t|}|dkr2td|d|  |   n.|dv ret|}|dkrLtd|d|  |   |   }|dv re|dkr_d}nd}|   |   }|d	vrxtd|d
| |  ||fS )Nz+-+TF
0123456789r   while scanning a block scalarz<expected indentation indicator in the range 1-9, but found 0r   z9expected chomping or indentation indicators, but found %r)r?   ru   r   r   r[   )r   rx   r   r   r]   r	   r	   r
   r     sR   z$Scanner.scan_block_scalar_indicatorsc                 C   r   )Nr   r   r   r   r   r   r   r	   r	   r
   r   D  s   z&Scanner.scan_block_scalar_ignored_linec                 C   sn   g }d}|   }|  dv r2|  dkr ||   |   }n|   | j|kr,| j}|  dv s|||fS )Nr       
  r   )r[   r?   rg   r   ru   r   )r   r   r   ry   r	   r	   r
   r   R  s   


z%Scanner.scan_block_scalar_indentationc                 C   s   g }|   }| j|k r |  dkr |   | j|k r |  dks|  dv rQ||   |   }| j|k rK|  dkrK|   | j|k rK|  dks<|  dv s&||fS )Nr   
   
  )r[   r   r?   ru   rg   r   )r   r   r   ry   r	   r	   r
   r   a  s   z Scanner.scan_block_scalar_breaksc                 C   s   |dkrd}nd}g }|   }|  }|   || || |  |kr>|| || || || |  |ks&|   |   }td|d|||S )Nr<   TFr   )r[   r?   ru   r   scan_flow_scalar_non_spacesscan_flow_scalar_spacesr   r   )r   r   doubler   rx   quotery   r	   r	   r
   r   n  s"   zScanner.scan_flow_scalarr   r,   r   bt	nr   vfrer   r<   \/N   _    Lu    Pu    r         )xuUc              	   C   s  g }	 d}|  |dvr|d7 }|  |dvs|r&|| | | | |   }|sB|dkrB|  ddkrB|d | d n|rH|dksN|sX|dv rX|| |   n|r|dkr|   |   }|| jv rx|| j|  |   n`|| jv r| j| }|   t|D ]}|  |d	vrtd
|d||  |f |  qt	| |d}|t
| | | n|dv r|   || || ntd
|d| |  |S q)NTr   u   '"\  	
  r   r;   r   z"\r  0123456789ABCDEFabcdefz%while scanning a double-quoted scalarz@expected escape sequence of %d hexadecimal numbers, but found %r   r   z!found unknown escape character %r)r?   rg   r   ru   ESCAPE_REPLACEMENTSESCAPE_CODESranger   r[   r   chrr   r   scan_flow_scalar_breaks)r   r   rx   r   r   r]   kcoder	   r	   r
   r     sZ   







z#Scanner.scan_flow_scalar_non_spacesc           	      C   s   g }d}|  |dv r|d7 }|  |dv s| |}| | |   }|dkr1td|d|  |dv rW|  }| ||}|dkrI|| n|sP|d	 || |S || |S )
Nr   r   r   r,   while scanning a quoted scalarzfound unexpected end of streamr   r   r   )	r?   r   ru   r   r[   r   r  rg   r   )	r   r   rx   r   r   whitespacesr]   r   r   r	   r	   r
   r     s.   




zScanner.scan_flow_scalar_spacesc                 C   s   g }	 |  d}|dks|dkr | ddv r td|d|  |  dv r0|   |  dv s&|  d	v r>||   n|S q)
NTrt   r   r   r   r  z#found unexpected document separatorr   r   )r   r?   r   r[   ru   rg   r   )r   r   rx   r   r   r	   r	   r
   r    s   
zScanner.scan_flow_scalar_breaksc                 C   s  g }|   }|}| jd }g }	 d}|  dkrna	 | |}|dv s>|dkr7| |d d| jr3dnd v s>| jr?|d	v r?n|d7 }q|dkrIn1d
| _|| || | | | |   }| 	||}|rx|  dksx| jsy| j
|k rynqtd|d||S )Nr   Tr   r   r   r6   z,[]{}r   z,?[]{}F)r[   r   r?   r   r   r   rg   r   ru   scan_plain_spacesr   r   r   )r   r   rx   ry   r   spacesr   r]   r	   r	   r
   r     sJ   

	


zScanner.scan_plainc           
      C   s8  g }d}|  |dv r|d7 }|  |dv s| |}| | |   }|dv r|  }d| _| d}|dks<|dkrE|  dd	v rEd S g }	|   d
v r{|   dkrX|   n|	|   | d}|dksl|dkru|  dd	v rud S |   d
v sM|dkr|| n|	s|d ||	 |S |r|| |S )Nr   r   r   r   Trt   r   r   r   r   r   )r?   r   ru   r   r   rg   r   )
r   r   rx   r   r   r  r]   r   r   r   r	   r	   r
   r    sD   




	


zScanner.scan_plain_spacesc                 C   s2  |   }|dkrtd| |d| |  d}|  |}|dkrd|  kr*dksEn d|  kr5d	ksEn d
|  kr@dksEn |dv rs|d7 }|  |}d|  krXdksEn d|  krcd	ksEn d
|  krndksEn |dv sE|dkr| | td| |d| |  |d7 }| |}| | |S )Nr8   while scanning a %szexpected '!', but found %rr   r   r   r   r   r   r   r   r   )r?   r   r[   ru   r   )r   r   rx   r]   r   r   r	   r	   r
   r   D  s.   

B
B



zScanner.scan_tag_handlec                 C   s<  g }d}|  |}d|  krdks.n d|  krdks.n d|  kr)dks.n |dv ry|d	krK|| | | | d}|| || n|d
7 }|  |}d|  kr^dks.n d|  kridks.n d|  krtdks.n |dv s.|r|| | | | d}|std| |d| |  d|S )Nr   r   r   r   r   r   r   z-;/?:@&=+$,_.!~*'()[]%r-   r   zwhile parsing a %szexpected URI, but found %rr   )r?   rg   r   ru   scan_uri_escapesr   r[   r   )r   r   rx   r   r   r]   r	   r	   r
   r   \  s.   
B

B	


zScanner.scan_tag_uric              
   C   s   g }|   }|  dkrD|   tdD ]}| |dvr-td| |d| | |   q|t| dd | d |  dksz
t|	d}W |S  t
ye } ztd| |t||d }~ww )Nr-   r   r  r!  zCexpected URI escape sequence of 2 hexadecimal numbers, but found %rr  zutf-8)r[   r?   ru   r  r   rg   r   r   bytesdecodeUnicodeDecodeErrorstr)r   r   rx   codesr   r  r   excr	   r	   r
   r"  u  s.   

	zScanner.scan_uri_escapesc                 C   sP   |   }|dv r| ddkr| d dS |   dS |dv r&|   |S dS )Nu   
r   z
r   u     r   )r?   r   ru   r\   r	   r	   r
   r     s   	
zScanner.scan_line_breakN)Lr   r   r   r   r&   r'   r)   r!   r"   r+   r*   rf   rd   r>   ri   r   r@   rB   rD   rF   rp   rG   rH   rz   rI   rJ   r~   rK   rM   rO   rQ   rR   rS   rT   rU   rV   r   rW   rX   r   rZ   rA   rC   rE   rL   rN   rP   rY   r=   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r  r   r  r   r   r"  r   r	   r	   r	   r
   r   .   s    A

l
!8

#
		$)L(	
+)%N)__all__errorr   r   r   r   r   r	   r	   r	   r
   <module>   s   