U
    6d<                  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_dRk	re^j_j`jXZXeXdRk	reXe\k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   </tmp/pip-unpacked-wheel-8_i3bgru/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 kr&| jj||dS |tkr2|S ||S d S )NZnativer   )getr&   clonenoValuer   r   r   valuer   r   r   r    _createComponent/   s    
z&AbstractSimpleDecoder._createComponentN)r#   r$   r%   staticmethodr*   r1   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   st   |r|| j ||df|||S |d | ||d   }	}
||	|||f|\}}trltdt|t|f  ||
fS )Nr4   zPexplicit tag container carries %d octets of trailing payload (will be lost!): %s)r1   LOGlenr   hexdump)r   r   r   r   r   r   r   r   r   headtailr0   _r   r   r    r!   =   s     zExplicitTagDecoder.valueDecoderc                 K   sl   |r|| j ||df|||S |||||f|\}	}||fddi|\}
}|
tjkr^|	|fS tdd S )Nr4   allowEooTz Missing end-of-octets terminator)r1   r   endOfOctetsr   r   )r   r   r   r   r   r   r   r   r   r0   	eooMarkerr   r   r    r"   Q   s     
z'ExplicitTagDecoder.indefLenValueDecoder)NNNNN)NNNNNr#   r$   r%   r   Anyr&   r!   r"   r   r   r   r    r3   :   s   
        
        r3   c                   @   s    e Zd ZedZdddZdS )IntegerDecoderr   Nc                 K   sp   |d j tjkrtd|d | ||d   }	}
|	sN| j||df||
fS t|	dd}| j|||f||
fS )Nr   Simple tag format expectedT)signed)	tagFormatr   tagFormatSimpler   r   r1   r   )r   r   r   r   r   r   r   r   r   r8   r9   r0   r   r   r    r!   k   s    
zIntegerDecoder.valueDecoder)NNNNN)r#   r$   r%   r   Integerr&   r!   r   r   r   r    r@   h   s   
        r@   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|S )N   r   )r@   r1   r/   r   r   r    r1      s       
zBooleanDecoder._createComponentN)r#   r$   r%   r   Booleanr&   r1   r   r   r   r    rF   }   s   
rF   c                   @   s.   e Zd ZedZdZdddZd	ddZdS )
BitStringDecoderr   TNc                 K   s\  |d | ||d   }	}
|r8|| j ||tf|||S |	sFtd|d jtjkrt|	d }|dkrxtd| | jj	|	dd  d|d}| j |||f||
fS | j
std| jj trtd	 | j}| jj	tdd
}|	rF||	| jfd|i|\}}	t|d }|dkr(td| | jj	|dd  d||d}q| j |||f||
fS )NzEmpty BIT STRING substrater      Trailing bits overflow %srG   T)internalFormatpadding*Constructed encoding form prohibited at %s$assembling constructed serializationrL   r   rL   prependrM   )r1   r.   r   r   rC   r   rD   r   r&   fromOctetStringsupportConstructedForm	__class__r#   r5   r*   r	   )r   r   r   r   r   r   r   r   r   r8   r9   trailingBitsr0   	bitString	componentr   r   r    r!      sh       

  


  zBitStringDecoder.valueDecoderc                 K   s   |r|| j ||tf|||S | j}| jjtdd}	|r||| jf|dd|\}
}|
tjkrbqt|
d }|dkrt	
d| | jj|
dd  d|	|d}	q4t	d	| j |||	f||fS )
NTrP   r   r;   r   rJ   rK   rG   rQ   !No EOO seen before substrate ends)r1   r.   r*   r&   rS   r	   r   r<   r   r   r   SubstrateUnderrunError)r   r   r   r   r   r   r   r   r   rW   rX   rV   r   r   r    r"      s4    



  
z%BitStringDecoder.indefLenValueDecoder)NNNNN)NNNNN)	r#   r$   r%   r   	BitStringr&   rT   r!   r"   r   r   r   r    rI      s   
        
8        rI   c                   @   s.   e Zd ZedZdZdddZd	ddZdS )
OctetStringDecoderr4   TNc                 K   s   |d | ||d   }	}
|r8|| j ||tf|||S |d jtjkr^| j |||	f||
fS | jsvtd| jj	 t
rt
d | j}t}|	r||	| jfd|i|\}}	||7 }q| j |||f||
fS )Nr   rN   rO   r   )r1   r.   rC   r   rD   rT   r   r   rU   r#   r5   r*   r	   r&   )r   r   r   r   r   r   r   r   r   r8   r9   headerrX   r   r   r    r!      s,     

zOctetStringDecoder.valueDecoderc                 K   s   |r,|| j k	r,| j||tf|}	||	||S | j }t}
|rn||| jf|dd|\}}|tjkrdqx|
|7 }
q6td| j|||
f||fS )NTrY   rZ   )	r*   r1   r.   r	   r&   r   r<   r   r[   )r   r   r   r   r   r   r   r   r   r)   r^   rX   r   r   r    r"   	  s*    


z'OctetStringDecoder.indefLenValueDecoder)NNNNN)NNNNN)	r#   r$   r%   r   OctetStringr&   rT   r!   r"   r   r   r   r    r]      s   
        
!        r]   c                   @   s    e Zd ZedZdddZdS )NullDecoderr4   Nc                 K   s`   |d j tjkrtd|d | ||d   }	}
| j||df|}|	rXtd| ||
fS )Nr   rA   r4   z&Unexpected %d-octet substrate for Null)rC   r   rD   r   r   r1   )r   r   r   r   r   r   r   r   r   r8   r9   rX   r   r   r    r!   +  s    
zNullDecoder.valueDecoder)NNNNN)r#   r$   r%   r   Nullr&   r!   r   r   r   r    r`   (  s   
        r`   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||
fS )Nr   rA   zEmpty substrater   rG      rJ      z#Short substrate for sub-OID past %sz"Invalid octet 0x80 in OID encoding'   )r   (   O   P      zMalformed first OID octet: %s)	rC   r   rD   r   r   r   r6   r[   r1   )r   r   r   r   r   r   r   r   r   r8   r9   oidindexZsubstrateLenZsubIdZ	nextSubIdr   r   r    r!   @  sH    



 
 z$ObjectIdentifierDecoder.valueDecoder)NNNNN)r#   r$   r%   r   ObjectIdentifierr&   r!   r   r   r   r    rb   =  s   
        rb   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   }	}
|	sN| j||df||
fS t|	d }|	dd  }	|d@ r|	s~tdtrtd |d@ d }|d	krt|	d }|	dd  }	|	d | |	|d   }}	|r|	std
t|d d@ rdpd}|r&|dK }|t|d O }|dd  }q|d	? d@ }|dkrFtd|dkrZ|d9 }n|dkrl|d	9 }d}|	r|dK }|t|	d O }|	dd  }	qp|d@ r| }|d? d@ }|d| 9 }|d|f}n|d@ r trtd |d@ rdpd}n|d@ dkr|	stdtr,td z`|d@ dkrLt|	ddf}n>|d@ dkrdt	|	}n&|d@ dkr|t	|	}nt
d| W n  tk
r   t
dY nX nt
d| | j|||f||
fS )Nr   rA   g        rG   rc   zIncomplete floating-point valuezdecoding binary encoded REAL      zReal exponent screwed   ri   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))rC   r   rD   r   r   r1   r   r5   intfloatr[   
ValueError)r   r   r   r   r   r   r   r   r   r8   r9   foneoebpZsfr0   r   r   r    r!   y  s    













zRealDecoder.valueDecoder)NNNNN)r#   r$   r%   r   Realr&   r!   r   r   r   r    rm   v  s           rm   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  }|rB||f|\}}|tjkr*qB|| ||j q
t|dkrV| j}n| j}|j	t
j|jjf|j d}	trtd|	  t|D ]\}
}|	j|
|dddd q|	|fS )NrG   r+   z@guessed %r container type (pass `asn1Spec` to guide the decoder)FverifyConstraints	matchTagsmatchConstraints)setr   r<   appendaddr   r6   protoRecordComponentprotoSequenceComponentr-   r   TagSetbaseTagZ	superTagsr5   	enumeratesetComponentByPosition)r   r   r   r   r   
componentsZcomponentTypesrX   r&   r)   r   r   r   r    _decodeComponents  s6    

  z1UniversalConstructedTypeDecoder._decodeComponentsc                 K   s  |d j tjkrtd|d | ||d   }	}
|d k	r|d k	rN| }n&| jd k	rh| jj|d}n| j| jf}||||S |d kr| j	|	f||d|\}}|rt
rt
dt|t|f  ||
fS | }|  |jtjjtjjfkr|j}|jtjjk}| o|j }t
rLt
d| r2dp4d|r@d	pBd|f  t }d}|	rd|shd }nz|rv|j}nlzD|r|| j}n.|| js|| jr||}n
|| j}W n& tk
r   td
|f Y nX ||	|f|\}}	|s:|r:|r||j}n&|| js,|| jr:||j|}|j||dddd | | |d7 }qVt
rvt
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r0|+|j,s0q |-|j*j.}z|| }W n t/k
r   t
rt
d|j#j$|j.|j#j$|j*j.f  |j*' D ]\}}t
d||f  qz|j*| }W n2 t/k
r   t
rt
d|f  Y Y q Y nX Y nX t
rt
d||f  |+|}|jtj0jtj1jfkrht(|D ]2\}}||| 2 fd|i|\}}|||< q2n.||+|2 fd|i|\}}||| q n|j3}|r|nd| }|  |j}t
rt
d|  d}|	r||	|f|\}}	|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-r4   SET"Excessive components decoded at %rFr   rG   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`)4rC   r   tagFormatConstructedr   r   r-   r&   r   r   r   r5   r6   r   r7   cleartypeIdr   SequenceSetcomponentTypehasOptionalOrDefaultr   tagMapUniquer)   
isOptionalisDefaultedgetTagMapNearPosition
IndexErrorgetPositionByTypeeffectiveTagSetgetPositionNearTyper   r   requiredComponentsissubsetrU   r#   hasOpenTypesr,   itemsr   
namedTypesopenTypegetComponentByPositionisValuegetComponentByNamenameKeyErrorSetOf
SequenceOfasOctetsisInconsistent)r   r   r   r   r   r   r   r   r   r8   r9   r)   Ztrailingr   	isSetTypeisDeterministicseenIndicesr   r   rX   r   kv	namedTypegoverningValuer   containerValueposcontainerElementrestinconsistencyr   r   r    r!     sF   


 
  
  

 


  z,UniversalConstructedTypeDecoder.valueDecoderc                 K   s8  |d j tjkrtd|d k	rf|d k	r4| }	n&| jd k	rN| jj|d}	n| j| jf}	||	||S |d kr| j	|f||dt
|ddS | }	|	  |jtjjtjjfkr|	j}
|	jtjjk}| o|
j }trtd| rdpd	|rd
pd	|f  t }d}|r:t|
|kr&d }nz|r4|
j}nlzD|rH|
| j}n.|
| js`|
| jrl|
|}n
|
| j}W n& tk
r   td|	f Y nX |||fddi|\}}|tjkrʐqD|s|
r|r|
|j}n&|
| js|
| jr|
|j|}|	j ||dddd |!| |d7 }qt"dtrVtd|  |
r0|
j#$|s|t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 t1k
r   trtd|	j%j&|j0|	j%j&|j,j0f  |j,) D ]\}}td||f  qnz|j,| }W n2 t1k
r   trtd|f  Y Y qY nX Y nX trtd||f  |	-|}|jtj2jtj3jfkrPt*|D ]:\}}||| 4 fd|it
|dd\}}|||< qnB||	-|4 fd|it
|dd\}}|tjk	r|	 || qn|	j5}|r0|n| }	|	  |j}trtd|  d}|r&|||fddi|\}}|tjkrq0|	j ||dddd |d7 }qt"d|	|fS )Nr   r   r+   r   T)r;   r   r   r4   r   r   r;   Fr   rG   rZ   r   r   r   r   r   r   r   r   r   r   r   )6rC   r   r   r   r   r-   r&   r   r   r   dictr   r   r   r   r   r   r   r5   r   r6   r   r)   r   r   r   r   r   r<   r   r   r   r   r   r[   r   r   rU   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   rX   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r"     sD   


 
 

  

 




  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 kr2| j j|d}n| }|rJ||||S |j|kr|trftd|f  ||	|jf|\}}	n,trtd|f  ||	|j|||f|\}}	|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   r5   ZcomponentTagMapr   setComponentByType)r   r   r   r   r   r   r   r   r   r8   r9   r)   rX   r   r   r   r    r!     sL    
 
     zChoiceDecoder.valueDecoderc                 K   s   |d kr| j j|d}	n| }	|r0||	||S |	j|krtrLtd|f  |||	jjf|\}
}||fddi|\}}|tjk	rt	dn.trtd|f  |||	jj|||f|\}
}|
j
}trtd|
|f  |	j||
ddddd	 |	|fS )
Nr+   r   r;   TrZ   r   r   Fr   )r&   r-   r   r5   r   r   r   r<   r   r   r   r   )r   r   r   r   r   r   r   r   r   r)   rX   r=   r   r   r   r    r"     s\    
 

     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 krd}	n"|j tjkr&||jk}	n
||jk}	|	rj|d }
|t|
t| 7 }|
}trjtdt|  |r|| j	||t
f|||S |d | ||d   }}| j	|||f||fS )NTfullSubstratez&decoding as untagged ANY, substrate %s)rU   r   TagMaptagMapr   r6   r5   r   r7   r1   r.   )r   r   r   r   r   r   r   r   r   Z
isUntaggedr   r8   r9   r   r   r    r!   8  s$    
 zAnyDecoder.valueDecoderc                 K   s0  |d krd}	n"|j tjkr&||jk}	n
||jk}	|	rFt}
trvtd n0|d }|d t|  }
trvtdt	|
  | j
}|r|| jk	r| j||tf|}|||
| |t|
 S trtd | j}|r|||f|dd|\}}|tjkrq|
|7 }
qtd|r|
|fS | j|||
f||fS d S )	NFzdecoding as tagged ANYr   z-decoding as untagged ANY, header substrate %srO   TrY   rZ   )rU   r   r   r   r   r	   r5   r6   r   r7   r&   r*   r1   r.   r   r<   r   r[   )r   r   r   r   r   r   r   r   r   ZisTaggedr^   r   r)   rX   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>	  s     r   ru   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k	r |tkr|stdd}|d }|d	d  }z|| }W n tk
r   t|}|d
@ }|d@ }|d@ }|dkrd}d}d}zJt|| }|d	7 }|dK }||d@ O }|d@ sqTq||d  }W n  tk
r   tdY nX tj|||d}|r|||< Y nX |d kr |rz|| }W n* tk
r   td|}|||< Y nX ntd|}n|| }t}t rt d|  |tkr\|s8tdt|d }|dk rXd	}|}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 r\t d|t|dkrH|pR|d | f  |tkrz|d krvt}nt}|tkrPz|| }W n tk
r   d }Y nX |rt}n@z||d d	  }W n tk
r   d }Y nX |rt}nt }t rPt d|r|j!j"pd|tkr$dp&df  tj#|d krDdpL|j$j!j" |tkrn|j!t%j&kr(z|| }W n tk
r   d }Y nX t r`t d  |j'( D ]\}}t d!||j!j"f  q|j)rt d" |j)( D ]\}}t d!||j!j"f  qt d#|d krdp|* |f  n8||j+ks@||j,kr\|}t r`t d$|j!j"  nd }|d k	rz$||j- }t rt d%|j-f  W nf tk
r   t|j+j.|j+j.}z || }t rt d&|f  W n tk
r   d }Y nX Y nX |r|}t}nt }nd }t }t rnt d'|tkr2|j!j"p4d|tkrDdpFdf  tj#|d krddpj|j!j" |tkr<|/d(ds|sd)d* }|j0|d+ |dkr|j1||||t| |f|\}
}n|j2||||t| |f|\}
}t r4t d,|j!j"|
j!j"t3|
t4j5r|
6 p|
|r*t|p,df  t}q |t kr|rz|d j7tj8krz|d j9tj:krzt;}t}n
d }| j<}t rt d-|r|j!j"pd|tkrdpd.f  |t=kr| j>}t rt d/|j!j"  t}|t?k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;   Fri   zend-of-octets sentinel foundz"Short octet stream on tag decodingTr   rG   rt          rJ   rd   rc   z'Short octet stream on long tag decoding)tagClassrC   tagIdr   z$tag decoded into %s, decoding lengthz%Short octet stream on length decodingz%s<%s at %srq   rp   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>r0   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>       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)@r5   r   Zscoper6   r7   popsupportIndefLengthr  r   r<   r.   r  r  r  r  stStopstDecodeTagr   r[   r   r   r   r   Tagr   stDecodeLengthr   r   stGetValueDecoderstGetValueDecoderByTagstGetValueDecoderByAsn1SpecstDecodeValuestTryAsExplicitTagrU   r#   pushr&   r   r   ZpresentTypesr   Z	skipTypesZprettyPrintTyper   r   r   r   r,   updater"   r!   
isinstancer
   ZAsn1ItemZprettyPrintrC   r   r  ZtagClassUniversalexplicitTagDecoderdefaultErrorStatestDumpRawValuedefaultRawDecoderstErrorCondition)r   r   r   r   r   r   r   r   r   r;   r0   r   r  ZtagCacheZtagSetCacher   Z
isShortTagZ
firstOctetZlastTagZ
integerTagr  rC   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_DECODERr5   r.   objectr   r'   r3   r   r@   rF   rI   r]   r`   rb   rm   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rE   r   rH   r\   r_   ra   rl   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&   rU   ranger  r  r  r  r  r  r  r"  r$  r  r  r   r   r   r   r    <module>   s  +`C9k   Seb                                

   