o
    vMfs                     @   sB  d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZmZmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZ ddgZejeejdZG dd deZG dd deZG dd deZG dd deZG dd deZ G dd deZ!G dd deZ"G dd deZ#G dd  d eZ$G d!d" d"eZ%G d#d$ d$eZ&G d%d& d&eZ'G d'd( d(eZ(G d)d* d*e!Z)i ej*j+e ej,j+e ej-j+e ej.j+e  ej/j+e! ej0j+e" ej1j+e# ej2j+e$ ej3j+e ej4j+e% ej5j+e' ej6j+e' ej7j+e( ej8j+e! ej9j+e! ej:j+e! ej;j+e! ej<j+e! ej=j+e! ej>j+e! ej?j+e! ej@j+e! ejAj+e! ejBj+e! ejCj+e! ejDj+e! ejEj+e! i
ZFi ej,jGe ej-jGe ej.jGe  ej/jGe! ej0jGe" ej1jGe# ej2jGe$ ej3jGe ej4jGe% ejHjGe& ej6jGe' ejIjGe& ej5jGe' ej7jGe( ejJjGe) ej8jGe! ej9jGe! ej:jGe! ej;jGe! ej<jGe! ej=jGe! ej>jGe! ej?jGe! ej@jGe! ejAjGe! ejBjGe! ejCjGe! ejDjGe! ejEjGe! iZKeFZLeKZMG d+d, d,eZNG d-d deZOeO ZPdS ).    N)debug)error)eoo)_MISSING)to_bytes)int2octoct2int	ints2octsnullstr2octsisOctetsType)char)tag)univ)usefulEncoderencode)flagsc                   @   s>   e Zd ZdZdZeeZdd Zdd Zdd Z	dd
dZ
d	S )AbstractItemEncoderT)r   r   c                 C   st   |\}}}||B }|r|t jO }|dk r||B fS |d@ f}|dL }|r3d|d@ B f| }|dL }|s$|dB f| S )N            )r   tagFormatConstructed)self	singleTagisConstructedtagClass	tagFormattagId
encodedTag	substrate r"   Z/var/www/html/analyze/labelStudio/lib/python3.10/site-packages/pyasn1/codec/ber/encoder.py	encodeTag"   s   



zAbstractItemEncoder.encodeTagc                 C   sj   |s| j rdS |dk r|fS d}|r|d@ f| }|dL }|st|}|dkr.td| d|B f| S )N)r   r   r"         ~   zLength octets overflow (%d))supportIndefLenModelenr   PyAsn1Error)r   lengthdefModer!   substrateLenr"   r"   r#   encodeLength6   s   
z AbstractItemEncoder.encodeLengthc                 K   s
   t d)NzNot implemented)r   r*   r   valueasn1Spec	encodeFunoptionsr"   r"   r#   encodeValueJ      
zAbstractItemEncoder.encodeValueNc              
   K   s  |d u r|j }n|j }|s| j|||fi |\}}}|S |dd}	t}t|jD ]\}
}|	}|
sz| j|||fi |\}}}W n tjyY   t	 }td||d f w t
rit
d|rbdpcd||f  |sw|rw|dd	rw|  S |sd}t
rt
d
 | ||}t
rt
d|rdpd|tt|f  || t||7 }t
rt
dt|tt|f  |rt|| }|s|| j7 }q*|| }|s|| j7 }q*|st|}|S )Nr,   TzError encoding %r: %s   zencoded %svalue %s into %szconstructed  
ifNotEmptyFz;overridden encoding mode into definitive for primitive typezencoded %stag %s into %sz)encoded %s octets (tag + payload) into %s)tagSetr4   getr
   	enumerate	superTagsr   r*   sysexc_infoLOGr$   r   hexdumpr	   r.   r)   eooOctetsSubstrateeooIntegerSubstrate)r   r0   r1   r2   r3   r9   r!   r   isOctetsr,   idxr   defModeOverrideexcheaderr"   r"   r#   r   M   sx   


zAbstractItemEncoder.encode)NN)__name__
__module____qualname__r(   rB   r	   rA   r$   r.   r4   r   r"   r"   r"   r#   r      s    r   c                   @      e Zd Zdd ZdS )EndOfOctetsEncoderc                 K   
   t ddfS NFTr
   r/   r"   r"   r#   r4      r5   zEndOfOctetsEncoder.encodeValueNrH   rI   rJ   r4   r"   r"   r"   r#   rL          rL   c                   @      e Zd ZdZdd ZdS )BooleanEncoderFc                 K   s   |rdpdddfS )N)r6   r   Fr"   r/   r"   r"   r#   r4      s   zBooleanEncoder.encodeValueNrH   rI   rJ   r(   r4   r"   r"   r"   r#   rS          rS   c                   @   s   e Zd ZdZdZdd ZdS )IntegerEncoderFc                 K   sF   |dkrt rt d| jrdpd  | jrdS dS tt|ddd	dfS )
Nr   z#encoding %spayload for zero INTEGERzno r7   )r"   FF)rT   FFT)signedF)r?   supportCompactZeror   intr/   r"   r"   r#   r4      s   zIntegerEncoder.encodeValueN)rH   rI   rJ   r(   rY   r4   r"   r"   r"   r#   rW      s    rW   c                   @   rK   )BitStringEncoderc                 K   s  |d ur	| |}t|}|d r|d|d  > }n|}|dd}|r,t||d kr?| }tt|d | | ddfS trGtd|  |jj}	|	rTt	|	|	}
nt	 }
|j |
d}d}t
}||k r|}t||d  |}||||| |fi |7 }||k sf|ddfS )Nr&   maxChunkSizer   FT#encoding into up to %s-octet chunksr9   )cloner)   r:   asOctetsr   r?   r9   baseTagr   TagSetr
   min)r   r0   r1   r2   r3   valueLengthalignedValuer\   r!   ra   r9   stopstartr"   r"   r#   r4      s2   

zBitStringEncoder.encodeValueNrP   r"   r"   r"   r#   r[      rQ   r[   c                   @   rK   )OctetStringEncoderc                 K   s  |d u r	|  }nt|s||  }n|}|dd}|r%t||kr*|ddfS tr2td|  |d u rN|jj}|rCt	||}nt	 }|j|d}nt|si|jj}|r_t	||}nt	 }|j|d}d}	t
}	 ||	|	|  }
|
syn|||
|fi |7 }|	|7 }	qn|ddfS )Nr\   r   FTr]   r^   )r`   r   r_   r:   r)   r?   r9   ra   r   rb   r
   )r   r0   r1   r2   r3   r!   r\   ra   r9   poschunkr"   r"   r#   r4      s@   


zOctetStringEncoder.encodeValueNrP   r"   r"   r"   r#   rh      s    rh   c                   @   rR   )NullEncoderFc                 K   rM   rN   rO   r/   r"   r"   r#   r4   %  r5   zNullEncoder.encodeValueNrU   r"   r"   r"   r#   rk   "  rV   rk   c                   @   rR   )ObjectIdentifierEncoderFc                 K   s  |d ur	| |}| }z
|d }|d }W n ty&   td|f w d|  kr1dkrin n6|dkrC|d f|dd   }n>|dkrQ|f|dd   }n0|dkra|d f|dd   }n td|f |dkry|d f|dd   }ntd|f d	}|D ]?}	d|	  krd
krn n||	f7 }q|	d
kr|	d
@ f}
|	dL }	|	rd|	d
@ B f|
 }
|	dL }	|	s||
7 }qtd|	|f |ddfS )Nr   r6   zShort OID %s'   (      P   z"Impossible first/second arcs at %sr"   r   r   r   zNegative OID arc %s at %sF)r_   asTuple
IndexErrorr   r*   )r   r0   r1   r2   r3   oidfirstsecondoctetssubOidresr"   r"   r#   r4   ,  sD   



z#ObjectIdentifierEncoder.encodeValueNrU   r"   r"   r"   r#   rl   )  rV   rl   c                   @   rR   )RelativeOIDEncoderFc                 K   s   |d ur	| |}d}| D ]?}d|  krdkr#n n||f7 }q|dkrF|d@ f}|dL }|rAd|d@ B f| }|dL }|s2||7 }qtd||f |ddfS )Nr"   r   r   r   r   z"Negative RELATIVE-OID arc %s at %sF)r_   rq   r   r*   )r   r0   r1   r2   r3   rv   rw   rx   r"   r"   r#   r4   g  s    



zRelativeOIDEncoder.encodeValueNrU   r"   r"   r"   r#   ry   d  rV   ry   c                   @   s0   e Zd ZdZdZedd Zdd Zdd Zd	S )
RealEncoderFro   c                 C   s   d\}}| dk r
d}|dk rd}| |9 } |dkr-| dt |d |  9 } t |d | }n|dkrE| dt |d |  9 } t |d | }	 t| | krU| |9 } |d
8 }qE	 |t| ||fS )N)r6   r6   r   r&   ro            Tr6   )absrZ   )mencbaseemsesr"   r"   r#   _dropFloatingPoint  s&   zRealEncoder._dropFloatingPointc                 C   s  |\}}}g d}|j |v r| ||j |S | j |v r#| || j |S |||g}|||g}d}d}	td}tdD ]A}
| ||
 ||
 ||
 \}||
< ||
< ||
< t||
 t|k slt||
 t|krz||
 |k rz||
 }t||
 }||
 }	q9trtd|	|||f  |||	|fS )N)ro   r&   r}   r6   ro   infr|   zMautomatically chosen REAL encoding base %s, sign %s, mantissa %s, exponent %s)
binEncBaser   floatranger   rZ   r?   )r   r0   r   br   encBasemantissaexponentsignr   ir"   r"   r#   _chooseEncBase  s6   




4
zRealEncoder._chooseEncBasec                 K   s  |d ur	| |}|jrdS |jrdS |\}}}|stddfS |dkr;tr)td td||dkr2d	p3d
|f ddfS |dkrkd}| |\}	}}
}|	dk rS|dO }|
dkrl|d@ dkrk|dL }|d7 }|d@ dks]n5|
dkr|d@ dkr|dL }|d7 }|d@ dksv|dO }n|d@ dkr|dL }|d7 }|d@ dks|dO }d}|d@ dkr|dL }|d7 }|d@ dks|dkrtd||d> O }t}|dks|dkrt	|d@ }n?|dvrt	|d@ | }|dL }|dvs|dkr|rt
|d d@ rt	d| }|dkr|rt
|d d@ st	d| }t|}|dkr$td|dkr*n |dkr4|dO }n|dkr>|dO }n|dO }t	|d@ | }t}|r^t	|d@ | }|dL }|sOt	|| | }|ddfS td| )N))@   FF))A   FFFT
   z!encoding REAL into character formz%dE%s%dr   +r7   ro   r   r   r6   r&   r   r|   r}      r~       zScale factor overflowr{   r%   )r   r{   zReal exponent overflowzProhibited Real base %s)r_   	isPlusInf
isMinusInfr
   r?   r   r   r   r*   r   r   r)   )r   r0   r1   r2   r3   r   r   r   for   r   sfeonpor!   r"   r"   r#   r4     s   


$


"







zRealEncoder.encodeValueN)	rH   rI   rJ   r(   r   staticmethodr   r   r4   r"   r"   r"   r#   rz     s    
!rz   c                   @   rR   )SequenceEncoderFc              	   K   s  t }|d| j}trtd|rdpd  |d u r|j}|r ||j}t| D ]\}	}
|r^||	 }|jrC|
j	sCtrBtd|f  q)|j
rU|
|jkrUtrTtd|f  q)|r^|j|jd |r|jr|j}|jtjjtjjfv r|||
|fi t||jd7 }q)||
|fi |}||
r||7 }q)||||fi |7 }trtd	|f  q)|||
|fi |7 }q)nt|jjD ]\}	}z||j }
W n ty   td
|j|f w |jr|j|vrtrtd|f  q|j
r|
|jkrtrtd|f  q|r|j|jd |j}|jrV|jtjjtjjfv r,|||
|fi t||jd7 }q||
|fi |}||
r@||7 }q||||fi |7 }trUtd	|f  q|||
|fi |7 }q|ddfS )NomitEmptyOptionalsz$%sencoding empty OPTIONAL componentsznot r7   z"not encoding OPTIONAL component %rz!not encoding DEFAULT component %r)r8   )wrapTypewrapped with wrap type %rz#Component name "%s" not found in %rT)r
   r:   r   r?   isInconsistentcomponentTyper;   values
isOptionalisValueisDefaulted
asn1ObjectupdateopenTypetypeIdr   SetOf
SequenceOfdictisSameTypeWith
namedTypesnameKeyErrorr   r*   )r   r0   r1   r2   r3   r!   r   inconsistencyr   rD   	component	namedTyper   rj   componentSpecr"   r"   r#   r4   1  s   




.


zSequenceEncoder.encodeValueN)rH   rI   rJ   r   r4   r"   r"   r"   r#   r   ,  s    r   c                   @   s   e Zd Zdd Zdd ZdS )SequenceOfEncoderc                 K   s   |d u r|j }|r|n|j}g }|dd }t|D ]-\}}	||	|fi |}
|d urC||	sC||
|fi |}
trCtd|f  ||
 q|S )Nr   r   )r   r   popr;   r   r?   append)r   r0   r1   r2   r3   r   chunksr   rD   r   rj   r"   r"   r#   _encodeComponents  s$   z#SequenceOfEncoder._encodeComponentsc                 K   s&   | j |||fi |}t|ddfS )NT)r   r
   join)r   r0   r1   r2   r3   r   r"   r"   r#   r4     s   zSequenceOfEncoder.encodeValueN)rH   rI   rJ   r   r4   r"   r"   r"   r#   r     s    r   c                   @   rK   )ChoiceEncoderc                    s   |d u r	   }n, fdd|jjD }t|dkr)tdt|r#dp$d f |d } | }|| }|||fi |ddfS )	Nc                    s   g | ]
}|j  v r|j qS r"   )r   ).0r   r0   r"   r#   
<listcomp>  s    
z-ChoiceEncoder.encodeValue.<locals>.<listcomp>r6   z%s components for Choice at %rz	Multiple zNone r   T)getComponentr   r   r)   r   r*   )r   r0   r1   r2   r3   r   namesr   r"   r   r#   r4     s   
zChoiceEncoder.encodeValueNrP   r"   r"   r"   r#   r     rQ   r   c                   @   rK   )
AnyEncoderc                 K   s<   |d u r	|  }nt|s||  }||dd dfS )Nr,   T)r`   r   r_   r:   r/   r"   r"   r#   r4     s
   
zAnyEncoder.encodeValueNrP   r"   r"   r"   r#   r     rQ   r   c                   @   s4   e Zd ZdZdZeZeZeefddZdddZ	dS )SingleItemEncoderNc                 K   s2   |t ur|n| j| _|t ur|| _d S | j| _d S N)r   TAG_MAP_tagMapTYPE_MAP_typeMap)r   tagMaptypeMapignoredr"   r"   r#   __init__8  s   zSingleItemEncoder.__init__c           	      K   s  z|d u r	|j }n|j }W n ty   td|f w tr@td|dd r*dp+d|dd|d u r8| p;| |f  | jd urL|j| jd	 | j	d urX|j| j	d
 z| j
| }trjtd|jj|f  W n@ ty   |d u rz|j}n|j}t|j|j}z| j| }W n ty   td||f w trtd|jj|f  Y nw |j||| fi |}trtd|t|t|f  |S )Nz<Value %r is not ASN.1 type instance and "asn1Spec" not givenzBencoder called in %sdef mode, chunk size %s for type %s, value:
%sr,   Tinr7   r\   r   )r,   )r\   z)using value codec %s chosen by type ID %szNo encoder for %r (%s)z(using value codec %s chosen by tagSet %sz;codec %s built %s octets of substrate: %s
encoder completed)r   AttributeErrorr   r*   r?   r:   prettyPrintTypefixedDefLengthModer   fixedChunkSizer   	__class__rH   r   r9   r   rb   ra   r   r   r)   r   r@   )	r   r0   r1   r3   r   concreteEncoderr9   
baseTagSetr!   r"   r"   r#   __call__<  sj   





zSingleItemEncoder.__call__r   )
rH   rI   rJ   r   r   r   r   r   r   r   r"   r"   r"   r#   r   1  s    r   c                   @   s(   e Zd ZeZeefddZdddZdS )r   c                 K   s   | j d||d|| _d S )N)r   r   r"   )SINGLE_ITEM_ENCODER_singleItemEncoder)r   r   r   r3   r"   r"   r#   r   {  s
   zEncoder.__init__Nc                 K   s   | j |fd|i|S )Nr1   )r   )r   pyObjectr1   r3   r"   r"   r#   r     s   zEncoder.__call__r   )rH   rI   rJ   r   r   r   r   r   r"   r"   r"   r#   r   x  s    )Qr=   pyasn1r   r   pyasn1.codec.berr   pyasn1.compatr   pyasn1.compat.integerr   pyasn1.compat.octetsr   r   r	   r
   r   r   pyasn1.typer   r   r   r   __all__registerLoggeerH   DEBUG_ENCODERr?   objectr   rL   rS   rW   r[   rh   rk   rl   ry   rz   r   r   r   r   endOfOctetsr9   BooleanInteger	BitStringOctetStringNullObjectIdentifierRelativeOID
EnumeratedRealr   r   Choice
UTF8StringNumericStringPrintableStringTeletexStringVideotexString	IA5StringGraphicStringVisibleStringGeneralStringUniversalString	BMPStringObjectDescriptorGeneralizedTimeUTCTimer   r   SetSequenceAnyr   r   r   r   r   r   r"   r"   r"   r#   <module>   s     )=;! (z%









	


















"








	



















$G
@