a
    *=ic<                  2   @   s  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 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 dgZejeejdZejZG dd deZG dd deZG dd deZ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*G d.d/ d/e*Z+G d0d1 d1e*Z,G d2d3 d3e%Z-G d4d5 d5eZ.G d6d7 d7e!Z/G d8d9 d9e!Z0G d:d; d;e!Z1G d<d= d=e!Z2G d>d? d?e!Z3G d@dA dAe!Z4G dBdC dCe!Z5G dDdE dEe!Z6G dFdG dGe!Z7G dHdI dIe!Z8G dJdK dKe!Z9G dLdM dMe!Z:G dNdO dOe!Z;G dPdQ dQe!Z<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$ ejFj>e' ejGj>e* ejHj>e- ejIj>e/ ejJj>e0 ejKj>e1 ejLj>e2 ejMj>e3 ejNj>e4 ejOj>e5 ejPj>e6 ejQj>e7 ejRj>e8 ejSj>e9 ejTj>e: ejUj>e; ejVj>e< iZWejGjXe+ ejYjXe, ejFjXe( ejZjXe) ejHjXe- ej[jXe. iZ\eW] D ]8Z^e^j_dRure^j_j`jXZXeXdRureXe\vre^e\eX< qdSdT eadUD \
ZbZcZdZeZfZgZhZiZjZkG dVdW dWeZleleWe\ZmdRS )X    )debug)error)eoo)
from_bytes)oct2int	octs2ints	ints2octsnull)base)char)tag)tagmap)univ)usefuldecode)flagsc                   @   s$   e Zd ZdZdddZdddZdS )AbstractDecoderNc           	      K   s   t d|f d S )NzDecoder not implemented for %sr   PyAsn1Error	self	substrateasn1SpectagSetlengthstate	decodeFunsubstrateFunoptions r   i/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pyasn1/codec/ber/decoder.pyvalueDecoder   s    zAbstractDecoder.valueDecoderc           	      K   s   t d|f d S )Nz5Indefinite length mode decoder not implemented for %sr   r   r   r   r    indefLenValueDecoder#   s    z$AbstractDecoder.indefLenValueDecoder)NNNNN)NNNNN)__name__
__module____qualname__protoComponentr!   r"   r   r   r   r    r      s     
  r   c                   @   s    e Zd Zedd Zdd ZdS )AbstractSimpleDecoderc                 C   s   |d | ||d  fS Nr   )
asn1Objectr   r   r   r   r    substrateCollector+   s    z(AbstractSimpleDecoder.substrateCollectorc                 K   s@   | dr|S |d u r&| jj||dS |tu r2|S ||S d S )Nnativer   )getr&   clonenoValuer   r   r   valuer   r   r   r    _createComponent/   s    
z&AbstractSimpleDecoder._createComponentN)r#   r$   r%   staticmethodr*   r2   r   r   r   r    r'   *   s   
r'   c                   @   s*   e Zd ZedZdddZdddZdS )	ExplicitTagDecoder Nc                 K   s|   |r"|| j ||dfi |||S |d | ||d   }	}
||	|||fi |\}}trttdt|t|f  ||
fS )Nr5   zPexplicit tag container carries %d octets of trailing payload (will be lost!): %s)r2   LOGlenr   hexdump)r   r   r   r   r   r   r   r   r   headtailr1   _r   r   r    r!   =   s    zExplicitTagDecoder.valueDecoderc                 K   st   |r"|| j ||dfi |||S |||||fi |\}	}||fddi|\}
}|
tju rf|	|fS tdd S )Nr5   allowEooTz Missing end-of-octets terminator)r2   r   endOfOctetsr   r   )r   r   r   r   r   r   r   r   r   r1   	eooMarkerr   r   r    r"   Q   s    
z'ExplicitTagDecoder.indefLenValueDecoder)NNNNN)NNNNNr#   r$   r%   r   Anyr&   r!   r"   r   r   r   r    r4   :   s   
  
  r4   c                   @   s    e Zd ZedZdddZdS )IntegerDecoderr   Nc                 K   sx   |d j tjkrtd|d | ||d   }	}
|	sR| j||dfi ||
fS t|	dd}| j|||fi ||
fS )Nr   Simple tag format expectedT)signed)	tagFormatr   tagFormatSimpler   r   r2   r   )r   r   r   r   r   r   r   r   r   r9   r:   r1   r   r   r    r!   k   s    
zIntegerDecoder.valueDecoder)NNNNN)r#   r$   r%   r   Integerr&   r!   r   r   r   r    rA   h   s   
  rA   c                   @   s   e Zd ZedZdd ZdS )BooleanDecoderr   c                 K   s    t j| |||rdpdfi |S )N   r   )rA   r2   r0   r   r   r    r2      s
    zBooleanDecoder._createComponentN)r#   r$   r%   r   Booleanr&   r2   r   r   r   r    rG   }   s   
rG   c                   @   s.   e Zd ZedZdZdddZd	ddZdS )
BitStringDecoderr   TNc                 K   sh  |d | ||d   }	}
|r<|| j ||tfi |||S |	sJtd|d jtjkrt|	d }|dkr|td| | jj	|	dd  d|d}| j |||fi ||
fS | j
std| jj trtd	 | j}| jj	tdd
}|	rN||	| jfd|i|\}}	t|d }|dkr0td| | jj	|dd  d||d}q| j |||fi ||
fS )NzEmpty BIT STRING substrater      Trailing bits overflow %srH   T)internalFormatpadding*Constructed encoding form prohibited at %s$assembling constructed serializationrM   r   rM   prependrN   )r2   r/   r   r   rD   r   rE   r   r&   fromOctetStringsupportConstructedForm	__class__r#   r6   r*   r	   )r   r   r   r   r   r   r   r   r   r9   r:   trailingBitsr1   	bitString	componentr   r   r    r!      sZ    


zBitStringDecoder.valueDecoderc                 K   s   |r"|| j ||tfi |||S | j}| jjtdd}	|r||| jf|dd|\}
}|
tju rfqt|
d }|dkrt	
d| | jj|
dd  d|	|d}	q8t	d	| j |||	fi ||fS )
NTrQ   r   r<   r   rK   rL   rH   rR   !No EOO seen before substrate ends)r2   r/   r*   r&   rT   r	   r   r=   r   r   r   SubstrateUnderrunError)r   r   r   r   r   r   r   r   r   rX   rY   rW   r   r   r    r"      s0    



z%BitStringDecoder.indefLenValueDecoder)NNNNN)NNNNN)	r#   r$   r%   r   	BitStringr&   rU   r!   r"   r   r   r   r    rJ      s   
  
8  rJ   c                   @   s.   e Zd ZedZdZdddZd	ddZdS )
OctetStringDecoderr5   TNc                 K   s   |d | ||d   }	}
|r<|| j ||tfi |||S |d jtjkrf| j |||	fi ||
fS | js~td| jj	 t
rt
d | j}t}|	r||	| jfd|i|\}}	||7 }q| j |||fi ||
fS )Nr   rO   rP   r   )r2   r/   rD   r   rE   rU   r   r   rV   r#   r6   r*   r	   r&   )r   r   r   r   r   r   r   r   r   r9   r:   headerrY   r   r   r    r!      s*    

zOctetStringDecoder.valueDecoderc                 K   s   |r0|| j ur0| j||tfi |}	||	||S | j }t}
|rr||| jf|dd|\}}|tju rhq||
|7 }
q:td| j|||
fi ||fS )NTrZ   r[   )	r*   r2   r/   r	   r&   r   r=   r   r\   )r   r   r   r   r   r   r   r   r   r)   r_   rY   r   r   r    r"   	  s*    


z'OctetStringDecoder.indefLenValueDecoder)NNNNN)NNNNN)	r#   r$   r%   r   OctetStringr&   rU   r!   r"   r   r   r   r    r^      s   
  
!  r^   c                   @   s    e Zd ZedZdddZdS )NullDecoderr5   Nc                 K   sd   |d j tjkrtd|d | ||d   }	}
| j||dfi |}|	r\td| ||
fS )Nr   rB   r5   z&Unexpected %d-octet substrate for Null)rD   r   rE   r   r   r2   )r   r   r   r   r   r   r   r   r   r9   r:   rY   r   r   r    r!   +  s    
zNullDecoder.valueDecoder)NNNNN)r#   r$   r%   r   Nullr&   r!   r   r   r   r    ra   (  s   
  ra   c                   @   s    e Zd ZedZdddZdS )ObjectIdentifierDecoderr   Nc                 K   s  |d j tjkrtd|d | ||d   }	}
|	sBtdt|	}	d}d}t|	}||k r|	| }|d7 }|dk r||f7 }qZ|dkr|}d}|dkr|d> |d@  }||krtd	|f |	| }|d7 }q||d> | f7 }qZ|dkrZtd
qZd|d   krdkr,n n
d| }n|d|d   krHdkrjn nd|d d f|dd   }n>|d dkrd|d d f|dd   }ntd|	d  | j|||fi ||
fS )Nr   rB   zEmpty substrater   rH      rK      z#Short substrate for sub-OID past %sz"Invalid octet 0x80 in OID encoding'   )r   (   O   P      zMalformed first OID octet: %s)	rD   r   rE   r   r   r   r7   r\   r2   )r   r   r   r   r   r   r   r   r   r9   r:   oidindexZsubstrateLenZsubIdZ	nextSubIdr   r   r    r!   @  sH    



 
 z$ObjectIdentifierDecoder.valueDecoder)NNNNN)r#   r$   r%   r   ObjectIdentifierr&   r!   r   r   r   r    rc   =  s   
  rc   c                   @   s   e Zd Ze ZdddZdS )RealDecoderNc                 K   s  |d j tjkrtd|d | ||d   }	}
|	sR| j||dfi ||
fS t|	d }|	dd  }	|d@ r|	stdtrtd |d@ d }|d	krt|	d }|	dd  }	|	d | |	|d   }}	|r|	std
t|d d@ od pd}|r.|dK }|t|d O }|dd  }q |d	? d@ }|dkrNtd|dkrb|d9 }n|dkrt|d	9 }d}|	r|dK }|t|	d O }|	dd  }	qx|d@ r| }|d? d@ }|d| 9 }|d|f}n|d@ rtrtd |d@ rdpd}n|d@ dkr|	s&tdtr4td z`|d@ dkrTt|	ddf}n>|d@ dkrlt	|	}n&|d@ dkrt	|	}nt
d| W n ty   t
dY n0 nt
d| | j|||fi ||
fS )Nr   rB   g        rH   rd   zIncomplete floating-point valuezdecoding binary encoded REAL      zReal exponent screwed   rj   zIllegal Real base@   zdecoding infinite REALz-infinf   zdecoding character encoded REAL
   zUnknown NR (tag %s)zBad character Real syntaxzUnknown encoding (tag %s))rD   r   rE   r   r   r2   r   r6   intfloatr\   
ValueError)r   r   r   r   r   r   r   r   r   r9   r:   foneoebpZsfr1   r   r   r    r!   y  s    













zRealDecoder.valueDecoder)NNNNN)r#   r$   r%   r   Realr&   r!   r   r   r   r    rn   v  s     rn   c                   @   s   e Zd ZdZdS )AbstractConstructedDecoderN)r#   r$   r%   r&   r   r   r   r    r     s   r   c                   @   sB   e Zd ZdZdZdd Zdd ZdddZddd	Zdd
dZ	dS )UniversalConstructedTypeDecoderNc                 C   s
   t  d S r(   NotImplementedError)r   r)   idxr   r   r    _getComponentTagMap  s    z3UniversalConstructedTypeDecoder._getComponentTagMapc                 C   s
   t  d S r(   r   )r   r)   r   r   r   r   r    _getComponentPositionByType  s    z;UniversalConstructedTypeDecoder._getComponentPositionByTypec                 K   s   g }t  }|rF||fi |\}}|tju r.qF|| ||j q
t|dkrZ| j}n| j}|j	t
j|jjg|jR  d}	trtd|	  t|D ]\}
}|	j|
|dddd q|	|fS )NrH   r,   z@guessed %r container type (pass `asn1Spec` to guide the decoder)FverifyConstraints	matchTagsmatchConstraints)setr   r=   appendaddr   r7   protoRecordComponentprotoSequenceComponentr.   r   TagSetbaseTagZ	superTagsr6   	enumeratesetComponentByPosition)r   r   r   r   r   
componentsZcomponentTypesrY   r&   r)   r   r   r   r    _decodeComponents  s2    

z1UniversalConstructedTypeDecoder._decodeComponentsc                 K   s  |d j tjkrtd|d | ||d   }	}
|d ur|d urN| }n&| jd urh| jj|d}n| j| jf}||||S |d u r| j	|	f||d|\}}|rt
rt
dt|t|f  ||
fS | }|  |jtjjtjjfv r|j}|jtjjk}| o|j }t
rLt
d| r2dp4d|r@d	pBd|f  t }d}|	rf|shd }nx|rv|j}njzD|r|| j}n.|| js|| jr||}n
|| j}W n$ ty   td
|f Y n0 ||	|fi |\}}	|s<|r<|r||j}n&|| js.|| jr<||j|}|j||dddd | | |d7 }qVt
rxt
d|  |r|j!"|std|j#j$ |j%r|&di }t
rt
d |' D ]\}}t
d||f  q|s|&ddrt(|j)D ]\}}|j*sq|jr2|+|j,s2q|-|j*j.}z|| }W n t/y   t
rt
d|j#j$|j.|j#j$|j*j.f  |j*' D ]\}}t
d||f  qz|j*| }W n0 t/y   t
rt
d|f  Y Y qY n0 Y n0 t
rt
d||f  |+|}|jtj0jtj1jfv rft(|D ]2\}}||| 2 fd|i|\}}|||< q0n.||+|2 fd|i|\}}||| qn|j3}|r|nh| }|  |j}t
rt
d|  d}|	r||	|fi |\}}	|j||dddd |d7 }q||
fS )Nr   Constructed tag format expectedr,   r   r   z)Unused trailing %d octets encountered: %s5decoding %sdeterministic %s type %r chosen by type IDnon-r5   SET"Excessive components decoded at %rFr   rH   seen component indices %s,ASN.1 object %s has uninitialized components	openTypesuser-specified open types map:%s -> %rdecodeOpenTypesJdefault open types map of component "%s.%s" governed by component "%s.%s":1failed to resolve open type by governing value %r+resolved open type %r by governing value %rr   +decoding type %r chosen by given `asn1Spec`)4rD   r   tagFormatConstructedr   r   r.   r&   r   r   r   r6   r7   r   r8   cleartypeIdr   SequenceSetcomponentTypehasOptionalOrDefaultr   tagMapUniquer)   
isOptionalisDefaultedgetTagMapNearPosition
IndexErrorgetPositionByTypeeffectiveTagSetgetPositionNearTyper   r   requiredComponentsissubsetrV   r#   hasOpenTypesr-   itemsr   
namedTypesopenTypegetComponentByPositionisValuegetComponentByNamenameKeyErrorSetOf
SequenceOfasOctetsisInconsistent)r   r   r   r   r   r   r   r   r   r9   r:   r)   Ztrailingr   	isSetTypeisDeterministicseenIndicesr   r   rY   r   kv	namedTypegoverningValuer   containerValueposcontainerElementrestinconsistencyr   r   r    r!     s6   









z,UniversalConstructedTypeDecoder.valueDecoderc                 K   s2  |d j tjkrtd|d urf|d ur4| }	n&| jd urN| jj|d}	n| j| jf}	||	||S |d u r| j	|f||dt
|ddS | }	|	  |jtjjtjjfv r|	j}
|	jtjjk}| o|
j }trtd| rdpd	|rd
pd	|f  t }d}|r8t|
|kr&d }nx|r4|
j}njzD|rH|
| j}n.|
| js`|
| jrl|
|}n
|
| j}W n$ ty   td|	f Y n0 |||fddi|\}}|tju rȐqB|s|
r|r|
|j}n&|
| js |
| jr|
|j|}|	j ||dddd |!| |d7 }qt"dtrTtd|  |
r*|
j#$|sztd|	j%j& |
j'r|(di }trtd |) D ]\}}td||f  q|s|(ddrt*|
j+D ]\}}|j,sq|jr|	-|j.sq|	/|j,j0}z|| }W n t1y   trtd|	j%j&|j0|	j%j&|j,j0f  |j,) D ]\}}td||f  qjz|j,| }W n0 t1y   trtd|f  Y Y qY n0 Y n0 trtd||f  |	-|}|jtj2jtj3jfv rJt*|D ]:\}}||| 4 fd|it
|dd\}}|||< qnB||	-|4 fd|it
|dd\}}|tjur|	 || qn|	j5}|r*|n| }	|	  |j}trtd|  d}|r |||fddi|\}}|tju r q*|	j ||dddd |d7 }qt"d|	|fS )Nr   r   r,   r   T)r<   r   r   r5   r   r   r<   Fr   rH   r[   r   r   r   r   r   r   r   r   r   r   r   )6rD   r   r   r   r   r.   r&   r   r   r   dictr   r   r   r   r   r   r   r6   r   r7   r   r)   r   r   r   r   r   r=   r   r   r   r   r   r\   r   r   rV   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   rY   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r"     s6   











z4UniversalConstructedTypeDecoder.indefLenValueDecoder)NN)NNNNN)NNNNN)
r#   r$   r%   r   r   r   r   r   r!   r"   r   r   r   r    r     s   
*  
 M  r   c                   @   s   e Zd Ze Ze ZdS )SequenceOrSequenceOfDecoderN)r#   r$   r%   r   r   r   r   r   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )SequenceDecoderN)r#   r$   r%   r   r   r&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )SequenceOfDecoderN)r#   r$   r%   r   r   r&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze Ze ZdS )SetOrSetOfDecoderN)r#   r$   r%   r   r   r   r   r   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )
SetDecoderN)r#   r$   r%   r   r   r&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )SetOfDecoderN)r#   r$   r%   r   r   r&   r   r   r   r    r     s   r   c                   @   s(   e Zd Ze ZdddZdddZdS )ChoiceDecoderNc                 K   s   |d | ||d   }	}
|d u r2| j j|d}n| }|rJ||||S |j|krtrftd|f  ||	|jfi |\}}	n0trtd|f  ||	|j|||fi |\}}	|j}trtd||f  |j||ddddd ||
fS )Nr,   'decoding %s as explicitly tagged CHOICEdecoding %s as untagged CHOICE*decoded component %s, effective tag set %sFr   r   r   Z	innerFlag)r&   r.   r   r6   ZcomponentTagMapr   setComponentByType)r   r   r   r   r   r   r   r   r   r9   r:   r)   rY   r   r   r   r    r!     s@    

zChoiceDecoder.valueDecoderc                 K   s   |d u r| j j|d}	n| }	|r0||	||S |	j|krtrLtd|f  |||	jjfi |\}
}||fddi|\}}|tjurt	dn2trtd|f  |||	jj|||fi |\}
}|
j
}trtd|
|f  |	j||
ddddd	 |	|fS )
Nr,   r   r<   Tr[   r   r   Fr   )r&   r.   r   r6   r   r   r   r=   r   r   r   r   )r   r   r   r   r   r   r   r   r   r)   rY   r>   r   r   r   r    r"     sP    




z"ChoiceDecoder.indefLenValueDecoder)NNNNN)NNNNN)r#   r$   r%   r   Choicer&   r!   r"   r   r   r   r    r     s     
/  r   c                   @   s(   e Zd Ze ZdddZdddZdS )
AnyDecoderNc                 K   s   |d u rd}	n"|j tju r&||jv}	n
||jk}	|	rj|d }
|t|
t| 7 }|
}trjtdt|  |r|| j	||t
fi |||S |d | ||d   }}| j	|||fi ||fS )NTfullSubstratez&decoding as untagged ANY, substrate %s)rV   r   TagMaptagMapr   r7   r6   r   r8   r2   r/   )r   r   r   r   r   r   r   r   r   Z
isUntaggedr   r9   r:   r   r   r    r!   8  s"    
zAnyDecoder.valueDecoderc                 K   s:  |d u rd}	n"|j tju r&||jv }	n
||jk}	|	rFt}
trvtd n0|d }|d t|  }
trvtdt	|
  | j
}|r|| jur| j||tfi |}|||
| |t|
 S trtd | j}|r|||f|dd|\}}|tju rq|
|7 }
qtd|r|
|fS | j|||
fi ||fS d S )	NFzdecoding as tagged ANYr   z-decoding as untagged ANY, header substrate %srP   TrZ   r[   )rV   r   r   r   r   r	   r6   r7   r   r8   r&   r*   r2   r/   r   r=   r   r\   )r   r   r   r   r   r   r   r   r   ZisTaggedr_   r   r)   rY   r   r   r    r"   W  sH    




zAnyDecoder.indefLenValueDecoder)NNNNN)NNNNNr?   r   r   r   r    r   5  s     
   r   c                   @   s   e Zd Ze ZdS )UTF8StringDecoderN)r#   r$   r%   r   
UTF8Stringr&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )NumericStringDecoderN)r#   r$   r%   r   NumericStringr&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )PrintableStringDecoderN)r#   r$   r%   r   PrintableStringr&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )TeletexStringDecoderN)r#   r$   r%   r   TeletexStringr&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )VideotexStringDecoderN)r#   r$   r%   r   VideotexStringr&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )IA5StringDecoderN)r#   r$   r%   r   	IA5Stringr&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )GraphicStringDecoderN)r#   r$   r%   r   GraphicStringr&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )VisibleStringDecoderN)r#   r$   r%   r   VisibleStringr&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )GeneralStringDecoderN)r#   r$   r%   r   GeneralStringr&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )UniversalStringDecoderN)r#   r$   r%   r   UniversalStringr&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )BMPStringDecoderN)r#   r$   r%   r   	BMPStringr&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )ObjectDescriptorDecoderN)r#   r$   r%   r   ObjectDescriptorr&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )GeneralizedTimeDecoderN)r#   r$   r%   r   GeneralizedTimer&   r   r   r   r    r     s   r   c                   @   s   e Zd Ze ZdS )UTCTimeDecoderN)r#   r$   r%   r   UTCTimer&   r   r   r   r    r     s   r   Nc                 C   s   g | ]}|qS r   r   ).0xr   r   r    
<listcomp>	      r  rv   c                   @   s<   e Zd ZeZe ZdZi fddZddde	ddfddZ
dS )DecoderTc                 C   s&   || _ || _i | _i | _td| _d S )N)r   r   )_Decoder__tagMap_Decoder__typeMap_Decoder__tagCache_Decoder__tagSetCacher   _Decoder__eooSentinel)r   r   typeMapr   r   r    __init__  s
    zDecoder.__init__Nc                 K   s  t r$t dtj|t|t|f  |dd}	|	rj| jrj|d d | jkrjt rXt d tj	|dd  fS t
}
| j}| j}| j}| j}|}|tur|tu r|stdd}|d }|d	d  }z|| }W n ty   t|}|d
@ }|d@ }|d@ }|dkrd}d}d}zJt|| }|d	7 }|dK }||d@ O }|d@ sqRq||d  }W n ty~   tdY n0 tj|||d}|r|||< Y n0 |d u r|rz|| }W n( ty   td|}|||< Y n0 ntd|}n|| }t}t rt d|  |tu rV|s2tdt|d }|dk rRd	}|}n~|dkr|d@ }t|d	|d	  }t||krtd|t||f d}|D ]}|dK }||O }q|d	7 }nd	}d}||d  }|dkr| jstdn$t||k rtd|t|  t}t rVt d|t|dkrB|pL|d | f  |tu rt|d u rpt}nt}|tu rFz|| }W n ty   d }Y n0 |rt}n>z||d d	  }W n ty   d }Y n0 |rt}nt }t rFt d|r|j!j"p
d|tu rdpdf  tj#|d u r:dpB|j$j!j" |tu r^|j!t%j&u rz|| }W n ty   d }Y n0 t rTt d  |j'( D ]\}}t d!||j!j"f  q|j)rt d" |j)( D ]\}}t d!||j!j"f  qt d#|d u r
dp|* |f  n8||j+ks4||j,v rP|}t rTt d$|j!j"  nd }|d urz$||j- }t rt d%|j-f  W nb ty   t|j+j.|j+j.}z || }t rt d&|f  W n ty   d }Y n0 Y n0 |r|}t}nt }nd }t }t r^t d'|tu r"|j!j"p$d|tu r4dp6df  tj#|d u rTdpZ|j!j" |tu r4|/d(ds|sd)d* }|j0|d+ |dkr|j1||||t| |fi |\}
}n"|j2||||t| |fi |\}
}t r,t d,|j!j"|
j!j"t3|
t4j5r|
6 p|
|r"t|p$df  t}q|t u r|rr|d j7tj8krr|d j9tj:krrt;}t}n
d }| j<}t rt d-|r|j!j"pd|tu rdpd.f  |t=u r| j>}t rt d/|j!j"  t}|t?u rtd0||f qt rtj  t d1tj  |
|fS )2NzWdecoder called at scope %s with state %d, working with up to %d octets of substrate: %sr<   Frj   zend-of-octets sentinel foundz"Short octet stream on tag decodingTr   rH   ru          rK   re   rd   z'Short octet stream on long tag decoding)tagClassrD   tagIdr   z$tag decoded into %s, decoding lengthz%Short octet stream on length decodingz%s<%s at %srr   rq   z6Indefinite length encoding not supported by this codecz%d-octet shortz6value length decoded into %d, payload substrate is: %sz/codec %s chosen by a built-in type, decoding %sz<none>r1   zas explicit tag?z!candidate ASN.1 spec is a map of:z
  %s -> %szbut neither of: z,new candidate ASN.1 spec is %s, chosen by %szcandidate ASN.1 spec is %sz8value decoder chosen for an ambiguous type by type ID %szvalue decoder chosen by base %sz*codec %s chosen by ASN.1 spec, decoding %sZrecursiveFlagc                 S   s   | |d | fS r(   r   )ar~   cr   r   r    <lambda>   r  z"Decoder.__call__.<locals>.<lambda>)r   z@codec %s yields type %s, value:
%s
...remaining substrate is: %szcodec %s chosen, decoding %sz
as failurezcodec %s chosen, decoding valuez%s not in asn1Spec: %rz%decoder left scope %s, call completed)@r6   r   scoper7   r8   popsupportIndefLengthr  r   r=   r/   r  r  r  r  stStopstDecodeTagr   r\   r   r   r   r   Tagr   stDecodeLengthr   r   stGetValueDecoderstGetValueDecoderByTagstGetValueDecoderByAsn1SpecstDecodeValuestTryAsExplicitTagrV   r#   pushr&   r   r   ZpresentTypesr   Z	skipTypesZprettyPrintTyper   r   r   r   r-   updater"   r!   
isinstancer
   ZAsn1ItemZprettyPrintrD   r   r  ZtagClassUniversalexplicitTagDecoderdefaultErrorStatestDumpRawValuedefaultRawDecoderstErrorCondition)r   r   r   r   r   r   r   r   r   r<   r1   r   r	  ZtagCacheZtagSetCacher   Z
isShortTagZ
firstOctetZlastTagZ
integerTagr  rD   r  ZlengthOctetIdxsizeZencodedLengthZlengthOctetZconcreteDecoderZ
chosenSpecr   Z
baseTagSetr   r   r    __call__  s    











.




0"

&

4 


F
0


zDecoder.__call__)r#   r$   r%   r&  r#  r   r%  r  r
  r  r(  r   r   r   r    r    s   r  )nZpyasn1r   r   Zpyasn1.codec.berr   Zpyasn1.compat.integerr   Zpyasn1.compat.octetsr   r   r   r	   Zpyasn1.typer
   r   r   r   r   r   __all__ZregisterLoggeer#   ZDEBUG_DECODERr6   r/   objectr   r'   r4   r"  rA   rG   rJ   r^   ra   rc   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   rF   r   rI   r]   r`   rb   rm   Z
Enumeratedr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r@   r	  valuesZtypeDecoderr&   rV   ranger  r  r  r  r  r  r  r$  r&  r  r  r   r   r   r   r    <module>   s   +`C9k   Seb
























 







   