
    c]<                        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,                        Zej0                  Z G d de      Z G d de      Z G d de      Z e       Z G d de      Z G d de      Z G d de      Z  G d de      Z! G d de      Z" G d de      Z# G d  d!e      Z$ G d" d#e      Z% G d$ d%e%      Z& G d& d'e&      Z' G d( d)e'      Z( G d* d+e'      Z) G d, d-e&      Z* G d. d/e*      Z+ G d0 d1e*      Z, G d2 d3e%      Z- G d4 d5e      Z. G d6 d7e!      Z/ G d8 d9e!      Z0 G d: d;e!      Z1 G d< d=e!      Z2 G d> d?e!      Z3 G d@ dAe!      Z4 G dB dCe!      Z5 G dD dEe!      Z6 G dF dGe!      Z7 G dH dIe!      Z8 G dJ dKe!      Z9 G dL dMe!      Z: G dN dOe!      Z; G dP dQe!      Z<i ejz                  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j                  j|                   e$       ej                  j|                   e'       ej                  j|                   e*       ej                  j|                   e-       ej                  j|                   e/       ej                  j|                   e0       ej                  j|                   e1       ej                  j|                   e2       ej                  j|                   e3       ej                  j|                   e4       ej                  j|                   e5       ej                  j|                   e6       ej                  j|                   e7       ej                  j|                   e8       ej                  j|                   e9       ej                  j|                   e:       ej                  j|                   e;       ej                  j|                   e<       iZWej                  j                   e+       ej                  j                   e,       ej                  j                   e(       ej                  j                   e)       ej                  j                   e-       ej                  j                   e.       iZ\eWj                         D ]<  Z^e^j                  e^j                  j                  j                  ZXeX3eXe\vs8e^e\eX<   >  eadS      D  cg c]  } |  c} \
  ZbZcZdZeZfZgZhZiZjZk G dT dUe      Zl eleWe\      ZmyRc c} w )V    )debug)error)eoo)
from_bytes)oct2int	octs2ints	ints2octsnull)base)char)tag)tagmap)univ)usefuldecode)flagsc                   (    e Zd ZdZ	 	 ddZ	 	 ddZy)AbstractDecoderNc                 2    t        j                  d|      )NzDecoder not implemented for r   PyAsn1Error	self	substrateasn1SpectagSetlengthstate	decodeFunsubstrateFunoptionss	            :/usr/lib/python3/dist-packages/pyasn1/codec/ber/decoder.pyvalueDecoderzAbstractDecoder.valueDecoder   s     F LMM    c                 2    t        j                  d|      )Nz3Indefinite length mode decoder not implemented for r   r   s	            r"   indefLenValueDecoderz$AbstractDecoder.indefLenValueDecoder#   s     [a cddr$   NNNNN)__name__
__module____qualname__protoComponentr#   r&    r$   r"   r   r      s$    N 6:26N >B:>er$   r   c                   "    e Zd Zed        Zd Zy)AbstractSimpleDecoderc                     |d | ||d  fS Nr,   )
asn1Objectr   r   s      r"   substrateCollectorz(AbstractSimpleDecoder.substrateCollector+   s    &!9VW#555r$   c                     |j                  d      r|S || j                  j                  ||      S |t        u r|S |j                  |      S )Nnativer   )getr+   clonenoValuer   r   r   valuer!   s        r"   _createComponentz&AbstractSimpleDecoder._createComponent/   sQ    ;;x L&&,,U6,BBgO>>%((r$   N)r(   r)   r*   staticmethodr2   r;   r,   r$   r"   r.   r.   *   s    6 6)r$   r.   c                   H    e Zd Z ej                  d      Z	 	 ddZ	 	 ddZy)ExplicitTagDecoder Nc                     |r | | j                   ||dfi |||      S |d | ||d  }
}	 ||	|||fi |\  }}t        r,t        dt        |      t        j                  |      fz         ||
fS )Nr?   zPexplicit tag container carries %d octets of trailing payload (will be lost!): %s)r;   LOGlenr   hexdump)r   r   r   r   r   r   r   r    r!   headtailr:   _s                r"   r#   zExplicitTagDecoder.valueDecoder=   s     %%%hFgF6 
 w'67);dT8VVGwGq &),Qq1A(BC D d{r$   c                     |r | | j                   ||dfi |||      S  |||||fi |\  }	} ||fddi|\  }
}|
t        j                  u r|	|fS t        j                  d      )Nr?   allowEooTz Missing end-of-octets terminator)r;   r   endOfOctetsr   r   )r   r   r   r   r   r   r   r    r!   r:   	eooMarkers              r"   r&   z'ExplicitTagDecoder.indefLenValueDecoderQ   s     %%%hFgF6 
 %Y&&TGTy(MTMWM	9')####$FGGr$   r'   r(   r)   r*   r   Anyr+   r#   r&   r,   r$   r"   r>   r>   :   s-    TXXb\N 6:26* >B:>Hr$   r>   c                   <    e Zd Z ej                  d      Z	 	 ddZy)IntegerDecoderr   Nc                     |d   j                   t        j                  k7  rt        j                  d      |d | ||d  }
}	|	s | j
                  ||dfi ||
fS t        |	d      } | j
                  |||fi ||
fS )Nr   Simple tag format expectedT)signed)	tagFormatr   tagFormatSimpler   r   r;   r   )r   r   r   r   r   r   r   r    r!   rD   rE   r:   s               r"   r#   zIntegerDecoder.valueDecoderk   s    
 !9#"5"55##$@AAw'67);d(4((61HH$NN4-$t$$XvuHH$NNr$   r'   )r(   r)   r*   r   Integerr+   r#   r,   r$   r"   rN   rN   h   s    !T\\!_N 6:26Or$   rN   c                   6    e Zd Z ej                  d      Zd Zy)BooleanDecoderr   c                 D    t        j                  | |||xr dxs dfi |S )N   r   )rN   r;   r9   s        r"   r;   zBooleanDecoder._createComponent   s2    ..(FEKa$41A8?A 	Ar$   N)r(   r)   r*   r   Booleanr+   r;   r,   r$   r"   rV   rV   }   s    !T\\!_NAr$   rV   c                   L    e Zd Z ej                  d      ZdZ	 	 ddZ	 	 ddZy)BitStringDecoderr,   TNc                    |d | ||d  }
}	|r! | | j                   ||t        fi |||      S |	st        j                  d      |d   j                  t
        j                  k(  rct        |	d         }|dkD  rt        j                  d|z        | j                  j                  |	dd  d|      } | j                   |||fi ||
fS | j                  s,t        j                  d| j                  j                  z        t        rt        d	       | j                  }| j                  j                  t        d
      }|	ri ||	| j                  fd|i|\  }}	t        |d         }|dkD  rt        j                  d|z        | j                  j                  |dd  d||      }|	ri | j                   |||fi ||
fS )NzEmpty BIT STRING substrater      Trailing bits overflow %srX   T)internalFormatpadding*Constructed encoding form prohibited at %s$assembling constructed serializationr_   r    r_   prependr`   )r;   r8   r   r   rR   r   rS   r   r+   fromOctetStringsupportConstructedForm	__class__r(   rA   r2   r
   )r   r   r   r   r   r   r   r    r!   rD   rE   trailingBitsr:   	bitString	components                  r"   r#   zBitStringDecoder.valueDecoder   s!    w'67);d 5 5 5&'!6-4!67@&J J ##$@AA!9#"5"55"47+La''/,>  ''77QR| 8 EE )4((65LGLdRR**## %,.2nn.E.E%F G G 67 ..''77T7R	'd.A.A N5ANELNOIt #9Q<0La''/,>  ++;;!"d!< < I  %t$$XvyLGLdRRr$   c                    |r! | | j                   ||t        fi |||      S | j                  }| j                  j	                  t
        d      }	|r} ||| j                  f|dd|\  }
}|
t        j                  u rnet        |
d         }|dkD  rt        j                  d|z        | j                  j	                  |
dd  d|	|      }	|r}t        j                  d	       | j                   |||	fi ||fS )
NTrc   r    rH   r   r]   r^   rX   rd   !No EOO seen before substrate ends)r;   r8   r2   r+   rf   r
   r   rI   r   r   r   SubstrateUnderrunError)r   r   r   r   r   r   r   r    r!   rj   rk   ri   s               r"   r&   z%BitStringDecoder.indefLenValueDecoder   s3   
  5 5 5h [SZ []fhnoo ..''77T7R	#,Y8K8K $G:F6:$G>E$G Iy COO+"9Q<0La''/,>  ++;;!"d!< < I & ../RSS$t$$XvyLGLiWWr$   r'   )	r(   r)   r*   r   	BitStringr+   rg   r#   r&   r,   r$   r"   r[   r[      s6    #T^^B'N! 6:265Sp >B:>"Xr$   r[   c                   L    e Zd Z ej                  d      ZdZ	 	 ddZ	 	 ddZy)OctetStringDecoderr?   TNc                    |d | ||d  }
}	|r! | | j                   ||t        fi |||      S |d   j                  t        j                  k(  r | j                   |||	fi ||
fS | j
                  s,t        j                  d| j                  j                  z        t        rt        d       | j                  }t        }|	r! ||	| j                  fd|i|\  }}	||z  }|	r! | j                   |||fi ||
fS )Nr   ra   rb   r    )r;   r8   rR   r   rS   rg   r   r   rh   r(   rA   r2   r
   r+   )r   r   r   r   r   r   r   r    r!   rD   rE   headerrk   s                r"   r#   zOctetStringDecoder.valueDecoder   s/    w'67);d 5 5 5h [SZ [ )63 3 !9#"5"55(4((64K7KTQQ**##$PSWSaSaSjSj$jkk67 ..'d.A.A 35A3*13OIt iF	  %t$$XvvII4OOr$   c                 R   |r1|| j                   ur# | j                  ||t        fi |}	 ||	||      S | j                   }t        }
|r5 ||| j                  f|dd|\  }}|t
        j                  u rn|
|z  }
|r5t        j                  d       | j                  |||
fi ||fS )NTrm   rn   )	r2   r;   r8   r
   r+   r   rI   r   ro   )r   r   r   r   r   r   r   r    r!   r1   rt   rk   s               r"   r&   z'OctetStringDecoder.indefLenValueDecoder	  s     L0G0GG...xTGTJ
Iv>> ..#,Y-1-@-@$G:F6:$G ?F$G Iy COO+iF  ..3  %t$$XvvII9TTr$   r'   )	r(   r)   r*   r   OctetStringr+   rg   r#   r&   r,   r$   r"   rr   rr      s8    %T%%b)N! 6:26PB >B:>Ur$   rr   c                   <    e Zd Z ej                  d      Z	 	 ddZy)NullDecoderr?   Nc                     |d   j                   t        j                  k7  rt        j                  d      |d | ||d  }
}	 | j
                  ||dfi |}|	rt        j                  d|z        ||
fS )Nr   rP   r?   z&Unexpected %d-octet substrate for Null)rR   r   rS   r   r   r;   )r   r   r   r   r   r   r   r    r!   rD   rE   rk   s               r"   r#   zNullDecoder.valueDecoder+  s    
 !9#"5"55##$@AAw'67);d)D))(FBJ'J	##$Lv$UVV$r$   r'   )r(   r)   r*   r   Nullr+   r#   r,   r$   r"   rx   rx   (  s    TYYr]N 6:26r$   rx   c                   <    e Zd Z ej                  d      Z	 	 ddZy)ObjectIdentifierDecoderr,   Nc                    |d   j                   t        j                  k7  rt        j                  d      |d | ||d  }
}	|	st        j                  d      t        |	      }	d}d}t        |	      }||k  r|	|   }|dz  }|dk  r||fz  }nm|dkD  rN|}d}|dk\  r8|dz  |dz  z   }||k\  rt        j                  d	|      |	|   }|dz  }|dk\  r8||dz  |z   fz  }n|dk(  rt        j                  d
      ||k  rd|d   cxk  rdk  r	n nd|z   }nVd|d   cxk  rdk  rn nd|d   dz
  f|dd  z   }n4|d   dk\  rd|d   dz
  f|dd  z   }nt        j                  d|	d   z         | j                  |||fi ||
fS )Nr   rP   zEmpty substrater,   rX      r]      z!Short substrate for sub-OID past z"Invalid octet 0x80 in OID encoding'   )r   (   O   P      zMalformed first OID octet: %s)	rR   r   rS   r   r   r   rB   ro   r;   )r   r   r   r   r   r   r   r    r!   rD   rE   oidindexsubstrateLensubId	nextSubIds                   r"   r#   z$ObjectIdentifierDecoder.valueDecoder@  s    !9#"5"55##$@AAw'67);d##$5664yl"KEQJEs{x!	3&"aZI,<=E,#::EHJ  !%UIQJE  3& !y022#
 ''(LMM/ l"4 A"*C3q6Rc!frk"SW,CVr\c!frk"SW,C##$Cd1g$MNN$t$$XvsFgFLLr$   r'   )r(   r)   r*   r   ObjectIdentifierr+   r#   r,   r$   r"   r|   r|   =  s"    *T**2.N 6:263Mr$   r|   c                   :    e Zd Z ej                         Z	 	 ddZy)RealDecoderNc                    |d   j                   t        j                  k7  rt        j                  d      |d | ||d  }
}	|	s | j
                  ||dfi ||
fS t        |	d         }|	dd  }	|dz  r|	st        j                  d      t        rt        d       |dz  dz   }|d	k(  rt        |	d         }|	dd  }	|	d | |	|d  }	}|r|	st        j                  d
      t        |d         dz  xr dxs d}|r|dz  }|t        |d         z  }|dd  }|r|d	z	  dz  }|dkD  rt        j                  d      |dk(  r|dz  }n
|dk(  r|d	z  }d}|	r|dz  }|t        |	d         z  }|	dd  }	|	r|dz  r| }|dz	  dz  }|d|z  z  }|d|f}n|dz  rt        rt        d       |dz  xr dxs d}n|dz  dk(  r|	st        j                  d      t        rt        d       	 |dz  dk(  rt        |	      ddf}n@|dz  dk(  rt        |	      }n,|dz  dk(  rt        |	      }nt        j                  d|z        nt        j                  d|z         | j
                  |||fi ||
fS # t        $ r t        j                  d      w xY w)Nr   rP   g        rX   r~   zIncomplete floating-point valuezdecoding binary encoded REAL      zReal exponent screwed   r   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))rR   r   rS   r   r   r;   r   rA   intfloatro   
ValueError)r   r   r   r   r   r   r   r    r!   rD   rE   foneoebpsfr:   s                      r"   r#   zRealDecoder.valueDecodery  s    !9#"5"55##$@AAw'67);d(4((63J'JDPPT!WABx9''(IJJ23daAAvDG$ABxBQxabBT''(?@@1%,"1AaWRU^#V 
 a$A1u''(;<<AvQaQAaWT!W%%ABx 
 DyBq4BbLA1IE$Y,-I(&1EE$Y!^''(IJJ568s? YA.E#X_!$KE#X_!$KE  66-2  ..+b0  %t$$XvuHH$NN  22/ s   "AI) )Jr'   )r(   r)   r*   r   Realr+   r#   r,   r$   r"   r   r   v  s    TYY[N 6:26eOr$   r   c                       e Zd ZdZy)AbstractConstructedDecoderN)r(   r)   r*   r+   r,   r$   r"   r   r     s    Nr$   r   c                   @    e Zd ZdZdZd Zd ZddZ	 	 ddZ	 	 ddZ	y)	UniversalConstructedTypeDecoderNc                     t               r0   NotImplementedError)r   r1   idxs      r"   _getComponentTagMapz3UniversalConstructedTypeDecoder._getComponentTagMap      !##r$   c                     t               r0   r   )r   r1   r   r   s       r"   _getComponentPositionByTypez;UniversalConstructedTypeDecoder._getComponentPositionByType  r   r$   c                    g }t               }|rN ||fi |\  }}|t        j                  u rn/|j                  |       |j	                  |j
                         |rNt        |      dkD  r| j                  }n| j                  }|j                  t        j                  |j
                  j                  g|j                         }	t        rt        d|	z         t        |      D ]  \  }
}|	j!                  |
|ddd        |	|fS )NrX   r5   z@guessed %r container type (pass `asn1Spec` to guide the decoder)FverifyConstraints	matchTagsmatchConstraints)setr   rI   appendaddr   rB   protoRecordComponentprotoSequenceComponentr7   r   TagSetbaseTag	superTagsrA   	enumeratesetComponentByPosition)r   r   r   r   r!   
componentscomponentTypesrk   r+   r1   r   s              r"   _decodeComponentsz1UniversalConstructedTypeDecoder._decodeComponents  s   
#,Y#B'#B IyCOO+i(y//0  ~"!66N "88N#)) ::n33;;Of>N>NO * 

  '( ) (
3 	NC--Y"'% . 	 9$$r$   c                 
   |d   j                   t        j                  k7  rt        j                  d      |d | ||d  }
}	|^||j                         }nA| j                  | j                  j                  |      }n| j                  | j                  f} ||||      S |Q | j                  |	f||d|\  }}|r2t        r,t        dt        |      t        j                  |      fz         ||
fS |j                         }|j                          |j                  t         j"                  j                  t         j$                  j                  fv r|j&                  }|j                  t         j$                  j                  k(  }| xr |j(                   }t        r&t        d| xr dxs dd	|xr d
xs dd|d       t+               }d}|	r|sd }na|r|j,                  }nR	 |r||   j.                  }n?||   j0                  s||   j2                  r|j5                  |      }n||   j.                  } ||	|fi |\  }}	|sZ|rX|r|j9                  |j:                        }n:||   j0                  s||   j2                  r|j=                  |j:                  |      }|j?                  ||ddd       |jA                  |       |dz  }|	rt        rt        d|z         |r|jB                  jE                  |      s,t        j                  d|jF                  jH                  z        |jJ                  r|jM                  di       }t        r3t        d       |jO                         D ]  \  }}t        |d|        |s|jM                  dd      rqtQ        |jR                        D ]D  \  }}|jT                  s|j0                  r|jW                  |      jX                  s<|j[                  |jT                  j\                        }	 ||   }t        rt        d|d|       |jW                  |      }|j                  t         j`                  j                  t         jb                  j                  fv r9tQ        |      D ])  \  }} |||   je                         fd|i|\  }}|||<   +  ||jW                  |      je                         fd|i|\  }}|j?                  ||       G ||
fS |jf                  }|r|||
fS |j                         }|j                          |j&                  }t        rt        d|z         d}|	r+ ||	|fi |\  }}	|j?                  ||ddd       |dz  }|	r+||
fS # t6        $ r t        j                  d|      w xY w# t^        $ r t        rt        d|jF                  jH                  d|j\                  d|jF                  jH                  d|jT                  j\                  d	       |jT                  jO                         D ]  \  }}t        |d|        	 |jT                  |   }n%# t^        $ r t        rt        d|       Y Y w xY wY iw xY w) Nr   Constructed tag format expectedr5   r   r   z)Unused trailing %d octets encountered: %s	decoding non-r?   deterministic SET type  chosen by type ID Excessive components decoded at Fr   rX   seen component indices %s,ASN.1 object %s has uninitialized components	openTypesuser-specified open types map: -> decodeOpenTypes%default open types map of component "." governed by component "":/failed to resolve open type by governing value resolved open type  by governing value r   +decoding type %r chosen by given `asn1Spec`)4rR   r   tagFormatConstructedr   r   r7   r+   r   r   r   rA   rB   r   rC   cleartypeIdr   SequenceSetcomponentTypehasOptionalOrDefaultr   tagMapUniquer1   
isOptionalisDefaultedgetTagMapNearPosition
IndexErrorgetPositionByTypeeffectiveTagSetgetPositionNearTyper   r   requiredComponentsissubsetrh   r(   hasOpenTypesr6   itemsr   
namedTypesopenTypegetComponentByPositionisValuegetComponentByNamenameKeyErrorSetOf
SequenceOfasOctetsisInconsistent)r   r   r   r   r   r   r   r    r!   rD   rE   r1   trailingr   	isSetTypeisDeterministicseenIndicesr   r   rk   r   kv	namedTypegoverningValuer   containerValueposcontainerElementrestinconsistencys                                  r"   r#   z,UniversalConstructedTypeDecoder.valueDecoder  s    !9#":"::##$EFFw'67);d##%^^-
$$0!0066f6E
 "668S8SS

Iv>>#94#9#9$#y$<C$ J CHu}}X'>G@ @ A t##^^%
??t}}33TXX__EE!//J 488??:I"+mSJ4S4S0SO''2F8b8):M:SQS:S  %KC!$(M$.$;$;M*,6sO,F,FM'_77:c?;V;V,6,L,LS,QM -7sO,F,FM #,D-"K7"K	4&: (::9;T;TU#C33z#7R7R(<<Y=V=VX[\11&+#e 2  $qO R /+=>!44==kJ++%'1';';'D'DEF F ++ 'K <I<=$-OO$5 5DAqa 345 !GKK0A5$I.7
8M8M.N =RNC#,#5#5 ((33J<]<]^a<b<j<j (-7-J-J ) 2 2 7 7.N-+4^+D0  # #2:N%L !M .8-N-Ns-SN-44$(JJ$5$5t7M7M9O  O >G(6>8 !D$9C)9 7@(6s(;(D(D(F7&197&=D7&OIt
 ;DN3$7!D 3<$.$E$Ec$J$S$S$U3"-53"9@3"	4
 !+ A A#y Q{=Rr 43 !+ 9 9 ''. 4) ")J$22MAMQRC"+D-"K7"K	411&+#e 2  q  4K & #//DLN t $, -#&$'/9/C/C/L/L/8~~/9/C/C/L/L/8/A/A/F/F)H %I 1:0B0B0H0H0J %A1(+!Q,?(@%A!-/8/A/A./QH'/ !-'*(+:H-K )L$,	!- %--sD   (AV V)"V&)BZ	YZY;6Z:Y;;ZZc                    |d   j                   t        j                  k7  rt        j                  d      |^||j                         }	nA| j                  | j                  j                  |      }	n| j                  | j                  f}	 ||	||      S |! | j                  |f||dt        |d      S |j                         }	|	j                          |j                  t        j                  j                  t        j                  j                  fv r|	j                   }
|	j                  t        j                  j                  k(  }| xr |
j"                   }t$        r&t%        d| xr dxs d	d
|xr dxs d	d|d       t'               }d}|r t)        |
      |k  rd }na|r|
j*                  }nR	 |r|
|   j,                  }n?|
|   j.                  s|
|   j0                  r|
j3                  |      }n|
|   j,                  } |||fddi|\  }}|t6        j8                  u rn|sZ|
rX|r|
j;                  |j<                        }n:|
|   j.                  s|
|   j0                  r|
j?                  |j<                  |      }|	jA                  ||ddd       |jC                  |       |dz  }|r t        jD                  d      t$        rt%        d|z         |
rO|
jF                  jI                  |      s,t        j                  d|	jJ                  jL                  z        |
jN                  r|jQ                  di       }t$        r3t%        d       |jS                         D ]  \  }}t%        |d|        |s|jQ                  dd      rtU        |
jV                        D ]n  \  }}|jX                  s|j.                  r|	j[                  |      j\                  s<|	j_                  |jX                  j`                        }	 ||   }t$        rt%        d|d |       |	j[                  |      }|j                  t        jd                  j                  t        jf                  j                  fv rDtU        |      D ]4  \  }} |||   ji                         fd!|it        |d      \  }}|||<   6  ||	j[                  |      ji                         fd!|it        |d      \  }}|t6        j8                  us]|	jA                  ||       q |	|fS |	jj                  }|r||	|fS |j                         }	|	j                          |j                   }t$        rt%        d"|z         d}|rD |||fddi|\  }}|t6        j8                  u r	 |	|fS |	jA                  ||ddd       |dz  }|rDt        jD                  d      # t4        $ r t        j                  d|	      w xY w# tb        $ r t$        rt%        d|	jJ                  jL                  d|j`                  d|	jJ                  jL                  d|jX                  j`                  d	       |jX                  jS                         D ]  \  }}t%        |d|        	 |jX                  |   }n%# tb        $ r t$        rt%        d|       Y Y w xY wY w xY w)#Nr   r   r5   r   T)rH   r   r   r?   r   r   r   r   r   rH   Fr   rX   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )6rR   r   r   r   r   r7   r+   r   r   r   dictr   r   r   r   r   r   r   rA   r   rB   r   r1   r   r   r   r   r   rI   r   r   r   r   r   ro   r   r   rh   r(   r   r6   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r    r!   r1   r   r   r   r   r   rk   r   r   r   r   r   r   r   r   r   r   r  r   s                               r"   r&   z4UniversalConstructedTypeDecoder.indefLenValueDecoder  s    !9#":"::##$EFF##%^^-
$$0!0066f6E
 "668S8SS

Iv>>)4))"(Iw. 
 ^^%
??t}}33TXX__EE#11J"))TXX__<I"+mSJ4S4S0SO''2F8b8):M:SQS:S  %KCz?c)#H)66H*'1#'A'AH'_77:c?;V;V'1'G'G'LH (2#'A'AH (1H'_t'_W^'_$	9/&: (::9;T;TU#C33z#7R7R(<<Y=V=VX[\11&+#e 2  $qQ V 227  /+=>!44==kJ++,Z]g]q]q]z]z,z{{** 'K <I<=$-OO$5 5DAqa 345 !GKK0A5$I.7
8M8M.N >VNC#,#5#5 ((33J<]<]^a<b<j<j (-7-J-J ) 2 2 7 7.N-+4^+D0  # #2:N%L !M .8-N-Ns-SN-44$(JJ$5$5t7M7M9O  O >G(6>8 !D$9C)9 7@(6s(;(D(D(F7&197&=A'TX=Y7&OIt
 ;DN3$7!D 3<$.$E$Ec$J$S$S$U3"-53"9=gPT9U3"	4
 $-COO#C$.$E$Ec9$U}>VF 9$$E %/$=$=M$++@ 9$$; ")J$22MAMQRC'0M'dTX'd\c'd$	9/ 9$$ 11&+#e 2  q  227 _ & #//DNP | $, -#&$'/9/C/C/L/L/8~~/9/C/C/L/L/8/A/A/F/F)H %I 1:0B0B0H0H0J %A1(+!Q,?(@%A!-/8/A/A./QH'/ !-'*(+:H-K )L$,	!- %--sD   ;AW W;"W8;B[Z+*[+[[[[[)NNr'   )
r(   r)   r*   r   r   r   r   r   r#   r&   r,   r$   r"   r   r     s<    !$$'%T 6:26I X >B:>O%r$   r   c                   P    e Zd Z ej                         Z ej                         Zy)SequenceOrSequenceOfDecoderN)r(   r)   r*   r   r   r   r   r   r,   r$   r"   r  r    s    (4==?,T__.r$   r  c                   .    e Zd Z ej                         Zy)SequenceDecoderN)r(   r)   r*   r   r   r+   r,   r$   r"   r  r    s    "T]]_Nr$   r  c                   .    e Zd Z ej                         Zy)SequenceOfDecoderN)r(   r)   r*   r   r   r+   r,   r$   r"   r	  r	        $T__&Nr$   r	  c                   P    e Zd Z ej                         Z ej                         Zy)SetOrSetOfDecoderN)r(   r)   r*   r   r   r   r   r   r,   r$   r"   r  r    s    #488:'TZZ\r$   r  c                   .    e Zd Z ej                         Zy)
SetDecoderN)r(   r)   r*   r   r   r+   r,   r$   r"   r  r    s    TXXZNr$   r  c                   .    e Zd Z ej                         Zy)SetOfDecoderN)r(   r)   r*   r   r   r+   r,   r$   r"   r  r    s    TZZ\Nr$   r  c                   F    e Zd Z ej                         Z	 	 ddZ	 	 ddZy)ChoiceDecoderNc                    |d | ||d  }
}	|| j                   j                  |      }n|j                         }|r
 ||||      S |j                  |k(  r-t        rt        d|d        ||	|j                  fi |\  }}	n/t        rt        d|d        ||	|j                  |||fi |\  }}	|j
                  }t        rt        d|d|       |j                  ||dddd       ||
fS )	Nr5   r    as explicitly tagged CHOICE as untagged CHOICEdecoded component , effective tag set Fr   r   r   	innerFlag)r+   r7   r   rA   componentTagMapr   setComponentByType)r   r   r   r   r   r   r   r    r!   rD   rE   r1   rk   r   s                 r"   r#   zChoiceDecoder.valueDecoder  s    w'67);d,,22&2AJ ")J
Iv>>&IJ'j004;OIt
 @A'j00)0OIt
 $33	?[\%%Y#e	 	& 	
 4r$   c                 Z   || j                   j                  |      }	n|j                         }	|r
 ||	||      S |	j                  |k(  rkt        rt        d|d        |||	j                  j
                  fi |\  }
} ||fddi|\  }}|t        j                  urNt        j                  d      t        rt        d|d        |||	j                  j
                  |||fi |\  }
}|
j                  }t        rt        d|
d	|       |	j                  ||
d
d
d
d
       |	|fS )Nr5   r   r  rH   Trn   r  r  r  Fr  )r+   r7   r   rA   r   r   r   rI   r   r   r   r  )r   r   r   r   r   r   r   r    r!   r1   rk   rJ   r   s                r"   r&   z"ChoiceDecoder.indefLenValueDecoder  sU    ,,22&2AJ!)J
Iv>>&IJ#,:33@@$DK$ Iy
 $-$$($,3$ Iy /''(KLL @A#,:33@@$)0$ Iy
 $33	?[\%%Y#e	 	& 	
 9$$r$   r'   )r(   r)   r*   r   Choicer+   r#   r&   r,   r$   r"   r  r    s+     T[[]N 6:26, ^ >B:>1%r$   r  c                   F    e Zd Z ej                         Z	 	 ddZ	 	 ddZy)
AnyDecoderNc                    |d}	n:|j                   t        j                  u r||j                  v}	n||j                  k7  }	|	rH|d   }
|t        |
      t        |      z
  z  }|
}t        r!t        dt        j                  |      z         |r! | | j                  ||t        fi |||      S |d | ||d  }} | j                  |||fi ||fS )NTfullSubstratez&decoding as untagged ANY, substrate %s)rh   r   TagMaptagMapr   rB   rA   r   rC   r;   r8   )r   r   r   r   r   r   r   r    r!   
isUntaggedr!  rD   rE   s                r"   r#   zAnyDecoder.valueDecoder8  s     J6==0x6J  8??2J#O4M c-(3y>99F%I<u}}Y?WWX 5 5 5h [SZ [ )63 3 w'67);d$t$$XvtGwGMMr$   c                    |d}	n:|j                   t        j                  u r||j                  v }	n||j                  k(  }	|	rt
        }
t        rGt        d       n;|d   }|d t        |        }
t        r!t        dt        j                  |
      z         | j                  }|r@|| j                  ur2 | j                  ||t        fi |} |||
|z   |t        |
      z         S t        rt        d       | j                  }|r+ |||f|dd|\  }}|t        j                  u rn|
|z  }
|r+t!        j"                  d      |r|
|fS  | j                  |||
fi ||fS )	NFzdecoding as tagged ANYr!  z-decoding as untagged ANY, header substrate %srb   Trm   rn   )rh   r   r"  r#  r   r
   rA   rB   r   rC   r+   r2   r;   r8   r   rI   r   ro   )r   r   r   r   r   r   r   r    r!   isTaggedrt   r!  r1   rk   s                 r"   r&   zAnyDecoder.indefLenValueDecoderW  s    H6==00H 0HF,- $O4M ##3S^O4FCemmTZF[[\ &&L0G0GG...xTGTJ
FY,>V@TUU67 ..#,Y $G:F6:$G>E$G Iy COO+iF  ..3  9$$ )4((66MWMyXXr$   r'   rK   r,   r$   r"   r  r  5  s-    TXXZN 6:26N@ >B:><Yr$   r  c                   .    e Zd Z ej                         Zy)UTF8StringDecoderN)r(   r)   r*   r   
UTF8Stringr+   r,   r$   r"   r(  r(    r
  r$   r(  c                   .    e Zd Z ej                         Zy)NumericStringDecoderN)r(   r)   r*   r   NumericStringr+   r,   r$   r"   r+  r+        'T'')Nr$   r+  c                   .    e Zd Z ej                         Zy)PrintableStringDecoderN)r(   r)   r*   r   PrintableStringr+   r,   r$   r"   r/  r/        )T))+Nr$   r/  c                   .    e Zd Z ej                         Zy)TeletexStringDecoderN)r(   r)   r*   r   TeletexStringr+   r,   r$   r"   r3  r3    r-  r$   r3  c                   .    e Zd Z ej                         Zy)VideotexStringDecoderN)r(   r)   r*   r   VideotexStringr+   r,   r$   r"   r6  r6    s    (T((*Nr$   r6  c                   .    e Zd Z ej                         Zy)IA5StringDecoderN)r(   r)   r*   r   	IA5Stringr+   r,   r$   r"   r9  r9        #T^^%Nr$   r9  c                   .    e Zd Z ej                         Zy)GraphicStringDecoderN)r(   r)   r*   r   GraphicStringr+   r,   r$   r"   r=  r=    r-  r$   r=  c                   .    e Zd Z ej                         Zy)VisibleStringDecoderN)r(   r)   r*   r   VisibleStringr+   r,   r$   r"   r@  r@    r-  r$   r@  c                   .    e Zd Z ej                         Zy)GeneralStringDecoderN)r(   r)   r*   r   GeneralStringr+   r,   r$   r"   rC  rC    r-  r$   rC  c                   .    e Zd Z ej                         Zy)UniversalStringDecoderN)r(   r)   r*   r   UniversalStringr+   r,   r$   r"   rF  rF    r1  r$   rF  c                   .    e Zd Z ej                         Zy)BMPStringDecoderN)r(   r)   r*   r   	BMPStringr+   r,   r$   r"   rI  rI    r;  r$   rI  c                   .    e Zd Z ej                         Zy)ObjectDescriptorDecoderN)r(   r)   r*   r   ObjectDescriptorr+   r,   r$   r"   rL  rL    s    ,V,,.Nr$   rL  c                   .    e Zd Z ej                         Zy)GeneralizedTimeDecoderN)r(   r)   r*   r   GeneralizedTimer+   r,   r$   r"   rO  rO    s    +V++-Nr$   rO  c                   .    e Zd Z ej                         Zy)UTCTimeDecoderN)r(   r)   r*   r   UTCTimer+   r,   r$   r"   rR  rR    s    #V^^%Nr$   rR  Nr   c                   @    e Zd ZeZ e       ZdZi fdZddde	ddfdZ
y)DecoderTc                 \    || _         || _        i | _        i | _        t	        d      | _        y )N)r   r   )_Decoder__tagMap_Decoder__typeMap_Decoder__tagCache_Decoder__tagSetCacher	   _Decoder__eooSentinel)r   r#  typeMaps      r"   __init__zDecoder.__init__  s,     &v.r$   Nc                    t         r<t        dt        j                  |t        |      t        j                  |      fz         |j                  dd      }	|	rD| j                  r8|d d | j                  k(  r&t         rt        d       t        j                  |dd  fS t        }
| j                  }| j                  }| j                  }| j                  }|}|t        ur|t         u rj|st#        j$                  d      d}|d   }|d	d  }	 ||   }| |r	 ||   }nt-        j0                  d|      }n||z   }t2        }t         rt        d|z         |t2        u r5|st#        j$                  d      t)        |d         }|dk  rd	}|}nl|dkD  rc|dz  }t5        |d	|d	z          }t        |      |k7  r&t#        j$                  |dt        |      d|      d}|D ]  }|dz  }||z  } |d	z  }nd	}d}||d  }|dk(  r!| j                  sGt#        j6                  d      t        |      |k  r$t#        j$                  d|t        |      z
  z        t8        }t         r1t        d|t        j                  |dk(  xr |xs |d |       fz         |t8        u r|t:        }nt<        }|t:        u r	 ||   }|rt>        }n	 ||d d	    }|rt>        }nt@        }t         rt        d|xr |jB                  jD                  xs dd|t>        u xr dxs d        t        j                  jG                  |d u xr d!xs  |jH                  jB                  jD                         |t<        u r|jB                  tJ        jL                  u r	 ||   }t         r$t        d"       |jN                  jQ                         D ]*  \  }}t        d#|d$|jB                  jD                         , |jR                  rRt        d%       |jR                  jQ                         D ]*  \  }}t        d#|d$|jB                  jD                         , t        d&|d u xr dxs |jU                         d'|       nJ||jV                  k(  s||jX                  v r+|}t         r%t        d(|jB                  jD                  z         nd }|@	 ||jZ                     }t         rt        d)|jZ                         |r	|}t>        }nt@        }nd }t@        }t         r~t        d|t>        u xr |jB                  jD                  xs dd+|t>        u xr dxs d        t        j                  jG                  |d u xr d!xs |jB                  jD                         |t>        u r|j_                  d,d      s|sd- }|ja                  |.       |dk(  r! jb                  ||||t8        | |fi |\  }
}n  jd                  ||||t8        | |fi |\  }
}t         rt        d|jB                  jD                  d/|
jB                  jD                  d0tg        |
th        jj                        xr |
jm                         xs |
d1|xr t        j                  |      xs d       t        }n|t@        u r|rM|d   jn                  t,        jp                  k(  r-|d   jr                  t,        jt                  k7  rtv        }t>        }nd }| jx                  }t         r;t        d|xr |jB                  jD                  xs dd2|t>        u xr dxs d3       |tz        u r:| j|                  }t         r"t        d4|jB                  jD                  z         t>        }|t~        u rt#        j6                  |d5|      |t        urt         r:t        j                  j                          t        d6t        j                  z         |
|fS # t&        $ r t)        |      }|d
z  }|dz  }|dz  }|dk(  rWd}d}d}	 	 t)        ||         }|d	z  }|dz  }||dz  z  }|dz  sn'||d  }n"# t*        $ r t#        j$                  d      w xY wt-        j.                  |||      }|r|||<   Y xw xY w# t&        $ r t-        j0                  d|      }|||<   Y |w xY w# t&        $ r d }Y w xY w# t&        $ r d }Y w xY w# t&        $ r d }Y aw xY w# t&        $ rn t-        j0                  |jV                  j\                  |jV                  j\                        }	 ||   }t         rt        d*|       n# t&        $ r d }Y nw xY wY w xY w)7NzWdecoder called at scope %s with state %d, working with up to %d octets of substrate: %srH   Fr   zend-of-octets sentinel foundz"Short octet stream on tag decodingTr   rX   r          r]   r   r~   z'Short octet stream on long tag decoding)tagClassrR   tagIdr,   z$tag decoded into %s, decoding lengthz%Short octet stream on length decoding<z at r   r   z6Indefinite length encoding not supported by this codecz%d-octet shortz6value length decoded into %d, payload substrate is: %szcodec z<none>z% chosen by a built-in type, decoding r:   zas explicit tag?z!candidate ASN.1 spec is a map of:z  r   zbut neither of: znew candidate ASN.1 spec is z, chosen by zcandidate ASN.1 spec is %sz6value decoder chosen for an ambiguous type by type ID zvalue decoder chosen by base z  chosen by ASN.1 spec, decoding recursiveFlagc                     | |d | fS r0   r,   )ar   cs      r"   <lambda>z"Decoder.__call__.<locals>.<lambda>   s    Aq!u: r$   )r!  z yields type z	, value:
z
...remaining substrate is: z chosen, decoding z
as failurezcodec %s chosen, decoding valuez not in asn1Spec: z%decoder left scope %s, call completed)@rA   r   scoperB   rC   popsupportIndefLengthr[  r   rI   r8   rW  rX  rY  rZ  stStopstDecodeTagr   ro   r   r   r   r   Tagr   stDecodeLengthr   r   stGetValueDecoderstGetValueDecoderByTagstGetValueDecoderByAsn1SpecstDecodeValuestTryAsExplicitTagrh   r(   pushr+   r   r"  presentTypesr   	skipTypesprettyPrintTyper   r#  r   r   r6   updater&   r#   
isinstancer   Asn1ItemprettyPrintrR   r   ra  tagClassUniversalexplicitTagDecoderdefaultErrorStatestDumpRawValuedefaultRawDecoderstErrorCondition)r   r   r   r   r   r   r   r    r!   rH   r:   r#  r\  tagCachetagSetCacher!  
isShortTag
firstOctetlastTag
integerTagra  rR   rb  lengthOctetIdxsizeencodedLengthlengthOctetconcreteDecoder
chosenSpecr   
baseTagSets                                  r"   __call__zDecoder.__call__  sG   
 imrmxmxz  BE  FO  BP  RW  R_  R_  `i  Rj  mk  k  l;;z51 //!} 2 2267	!"55..??((!6!# 66< 
 "
&q\
%abM	$7&z2GJ >!=%0%<F "%B!8 %v-F&>GH& 66?  %Yq\2
#D'F#%%,D$-i$(.C$DM =)T1#::-13}3EvN  F'4 .1+-. AID DF%de,	R<22#//0hii 9~.#::;KvX[\eXfOf;ghh)PTZ\a\i\ijptvjv  kE  |E  k[  IR  SZ  TZ  I[  ]\  T]  ]  ^))#2E 8E" ..+&,VnO
 #)E/*0*<
 ' - 2_  NDapazaz  bD  bD  NP  HP  NP  RW  [h  Rh  Rt  mt  RI  xI  RI  J  KKK$$_%<%D%yHfHfHpHpHyHyz33%%6*%-f%5

 ?@-5-B-B-H-H-J SMJ
AKK<P<P QRS $-- 23191C1C1I1I1K W
A #J@T@T$U VWj\`N`Nmem  ONq{  rL  rL  rN  ON  PV  W  Xx.&HOO2K!)J88;M;M;V;VVW "&J)3*1*2C2C*D^h^o^o qr '#- - !3 '+O.EQ^H^  IFcrc|c|  dF  dF  IR  JR  IR  TY  ]j  Tj  Tv  ov  TK  zK  TK  L  MKK$$Z4%7%?C%`:CWCWC`C`a%{{?D9,#=L];R<'K'K'K!8(9l( "	($E9 (D'C'C!8(9l( "	($E9 `o`y`y  aC  aC  EJ  ET  ET  E]  E]  _i  jo  qu  q~  q~  _  _W  DI  DU  DU  DW  _`  [`  _`  bk  bH  pu  p}  p}  ~G  pH  bT  LT  bT  U  V**q	++s/G/GGq	**c.C.CC&8O)E '+O 22E/:poNgNgNpNp:|t|:|  D  HU  U  a  Za  q  eq  q  r  s&"&"8"89O<U<U<^<^^_%((''06A { 6!B	 KKOO7%++EFik   !7!(!4J)D0H *T 1I&-E}%*
)* !"&-4Y~5N-O
 .! 3 %! %*t*; <'1D'8$) #' )2./(BI) "'">"> I# 
 "gg!)YeG "/6,C!7P  ( =%(ZZG%<F6<K
3=t   +&*O+ $ /*./$ $ *%)
*> $ 3%(ZZ
0A0A0I0IJL]L]LeLe%f
3.4Z.@O" #$U V' 3.2O33s   _$ b	 ,b4 ;c  c 3-c* $.b-a ba  "bb	$b10b14ccccc'&c'*Ae!2ee!ee!ee! e!)r(   r)   r*   r  r  r  r  rl  r]  rn  r  r,   r$   r"   rU  rU    s7    (" (* / ,0Td r$   rU  )npyasn1r   r   pyasn1.codec.berr   pyasn1.compat.integerr   pyasn1.compat.octetsr   r   r	   r
   pyasn1.typer   r   r   r   r   r   __all__registerLoggeer(   DEBUG_DECODERrA   r8   objectr   r.   r>   r  rN   rV   r[   rr   rx   r|   r   r   r   r  r  r	  r  r  r  r  r  r(  r+  r/  r3  r6  r9  r=  r@  rC  rF  rI  rL  rO  rR  rT   r   rY   rp   rv   rz   r   
Enumeratedr   r   r   r  r)  r,  r0  r4  r7  r:  r>  rA  rD  rG  rJ  rM  rP  rS  r#  r   r   r   rL   r\  valuestypeDecoderr+   rh   rangern  rp  rq  rs  rr  ru  rt  r  r  rm  rU  r   )xs   0r"   <module>r     s       , D D      *e85+>+>?
,,ef e )O ) (H. (HV () O* O*A^ A]X, ]X@@U. @UF' *6M3 6MrhO' hOV M%&@ M%`/"A /
%1 %'3 '*7 *
 "  
"$ "b%. b%J^Y& ^YD'* '*- *,/ ,*- *+. +&) &*- **- **- *,/ ,&) &
/0 /./ .&' &
LL)
LL)
 	NN+-
 	/1	

 	IIkm
 	  "9";
 	OON,
 	IIkm
 	MM57
 	HHOO&(
 	KK
 	OO-/
 	35
 	!7!9
  	35!
" 	 5 7#
$ 	NN+-%
& 	353535!7!9NN+-
""$;$=
!!#9#;
NN>+7
@ 	HHOOZ\JJ|~MM/+OO-/KKHHOOZ\ ==? *K!!-++55<<&"7)GFO	*  Ry!!A!		N f N F 
	!M "s   (	W