
    ^#a<                     
   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j        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j=        j>         e            ej?        j>         e            ej@        j>         e             ejA        j>         e!            ejB        j>         e"            ejC        j>         e#            ejD        j>         e            ejE        j>         e$            ejF        j>         e'            ejG        j>         e*            ejH        j>         e-            ejI        j>         e/            ejJ        j>         e0            ejK        j>         e1            ejL        j>         e2            ejM        j>         e3            ejN        j>         e4            ejO        j>         e5            ejP        j>         e6            ejQ        j>         e7            ejR        j>         e8            ejS        j>         e9            ejT        j>         e:            ejU        j>         e;            ejV        j>         e<            iZWejG        jX         e+            ejY        jX         e,            ejF        jX         e(            ejZ        jX         e)            ejH        jX         e-            ej[        jX         e.            iZ\eW]                                D ]%Z^e^j_        e^j_        j`        jX        ZXeX	eXe\vre^e\eX<   &dS  eadT          D             \
  ZbZcZdZeZfZgZhZiZjZk G dU dVe          Zl eleWe\          ZmdRS )W    )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dS )AbstractDecoderNc                 0    t          j        d|          )NzDecoder not implemented for r   PyAsn1Error	self	substrateasn1SpectagSetlengthstate	decodeFunsubstrateFunoptionss	            8lib/python3.11/site-packages/pyasn1/codec/ber/decoder.pyvalueDecoderzAbstractDecoder.valueDecoder   s     FF LMMM    c                 0    t          j        d|          )Nz3Indefinite length mode decoder not implemented for r   r   s	            r"   indefLenValueDecoderz$AbstractDecoder.indefLenValueDecoder#   s     [a[a cdddr$   NNNNN)__name__
__module____qualname__protoComponentr#   r&    r$   r"   r   r      s\        N 6:26N N N N >B:>e e e e e er$   r   c                   *    e Zd Zed             Zd ZdS )AbstractSimpleDecoderc                 *    |d |         ||d          fS Nr,   )
asn1Objectr   r   s      r"   substrateCollectorz(AbstractSimpleDecoder.substrateCollector+   s    &!9VWW#555r$   c                     |                     d          r|S || j                            ||          S |t          u r|S |                    |          S )Nnativer   )getr+   clonenoValuer   r   r   valuer!   s        r"   _createComponentz&AbstractSimpleDecoder._createComponent/   s_    ;;x   	)L&,,U6,BBBgO>>%(((r$   N)r(   r)   r*   staticmethodr2   r;   r,   r$   r"   r.   r.   *   s<        6 6 \6) ) ) ) )r$   r.   c                   F    e Zd Z ej        d          Z	 	 ddZ	 	 ddZdS )ExplicitTagDecoder Nc                     |r | | j         ||dfi |||          S |d |         ||d          }
}	 ||	|||fi |\  }}t          r3t          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FFgFF6  
 ww'677);d9T8VVGGwGGq 	D &),Qq1A1A(BC D D 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FFgFF6  
 %9Y&&TTGTTy(yMMTMWMM	9'')###$FGGGr$   r'   r(   r)   r*   r   Anyr+   r#   r&   r,   r$   r"   r>   r>   :   sb        TXb\\N 6:26   * >B:>H H H H H Hr$   r>   c                   :    e Zd Z ej        d          Z	 	 ddZdS )IntegerDecoderr   Nc                     |d         j         t          j        k    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Aww'677);d 	O(4(61HHHH$NN4---$t$XvuHHHH$NNr$   r'   )r(   r)   r*   r   Integerr+   r#   r,   r$   r"   rN   rN   h   sE        !T\!__N 6:26O O O O O Or$   rN   c                   4    e Zd Z ej        d          Zd ZdS )BooleanDecoderr   c                 4    t          j        | |||rdpdfi |S )N   r   )rN   r;   r9   s        r"   r;   zBooleanDecoder._createComponent   s;    .(FEKa$41A A8?A A 	Ar$   N)r(   r)   r*   r   Booleanr+   r;   r,   r$   r"   rV   rV   }   s7        !T\!__NA A A A Ar$   rV   c                   J    e Zd Z ej        d          ZdZ	 	 ddZ	 	 ddZdS )BitStringDecoderr,   TNc                 r   |d |         ||d          }
}	|r  | | j         ||t          fi |||          S |	st          j        d          |d         j        t
          j        k    rit          |	d                   }|dk    rt          j        d|z            | j        	                    |	dd          d|          } | j         |||fi ||
fS | j
        s!t          j        d| j        j        z            t          rt          d	           | j        }| j        	                    t          d
          }|	rn ||	| j        fd|i|\  }}	t          |d                   }|dk    rt          j        d|z            | j        	                    |dd          d||          }|	n | 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   sz    ww'677);d 	J< 5 5&'!6 !6-4!6 !67@&J J J  	B#$@AAA!9#"555"47++La'/,>   '77QRR| 8 E EE )4(65LLGLLdRR* 	G# %,.2n.E%F G G G  	86777 .'77T7RR	 	'id.A N N5ANELN NOIt #9Q<00La'/,>   +;;!""d!< <  I  	 %t$XvyLLGLLdRRr$   c                    |r  | | j         ||t          fi |||          S | j        }| j                            t
          d          }	|r~ ||| j        f|dd|\  }
}|
t          j        u rnnt          |
d                   }|dk    rt          j
        d|z            | j                            |
dd          d|	|          }	|~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   se   
  	p< 5 5h [ [SZ [ []fhnooo .'77T7RR	 	T#,9Y8K $G:F6:$G $G>E$G $G Iy CO++"9Q<00La'/,>   +;;!""d!< <  I  	T& ./RSSS$t$XvyLLGLLiWWr$   r'   )	r(   r)   r*   r   	BitStringr+   rg   r#   r&   r,   r$   r"   r[   r[      so        #T^B''N! 6:265S 5S 5S 5Sp >B:>"X "X "X "X "X "Xr$   r[   c                   J    e Zd Z ej        d          ZdZ	 	 ddZ	 	 ddZdS )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  }|	 | 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w'677);d 	3< 5 5h [ [SZ [ [ )63 3 3 !9#"555(4(64KK7KKTQQ* 	l#$PSWSaSj$jkkk 	86777 . 	 'id.A 3 35A3*13 3OIt iF	  	  %t$XvvIIII4OOr$   c                    |r+|| j         ur" | j        ||t          fi |}	 ||	||          S | j         }t          }
|r+ ||| j        f|dd|\  }}|t
          j        u rn|
|z  }
|+t          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0GGG..xTTGTTJ<
Iv>>> . 	#,9Y-1-@$G:F6:$G $G ?F$G $G Iy CO++iF  	 .3   %t$XvvIIII9TTr$   r'   )	r(   r)   r*   r   OctetStringr+   rg   r#   r&   r,   r$   r"   rr   rr      sp        %T%b))N! 6:26P P P PB >B:>U U U U U Ur$   rr   c                   :    e Zd Z ej        d          Z	 	 ddZdS )NullDecoderr?   Nc                     |d         j         t          j        k    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Aww'677);d)D)(FBJJ'JJ	 	W#$Lv$UVVV$r$   r'   )r(   r)   r*   r   Nullr+   r#   r,   r$   r"   rx   rx   (  s?        TYr]]N 6:26     r$   rx   c                   :    e Zd Z ej        d          Z	 	 ddZdS )ObjectIdentifierDecoderr,   Nc                 f   |d         j         t          j        k    rt          j        d          |d |         ||d          }
}	|	st          j        d          t          |	          }	d}d}t          |	          }||k     r|	|         }|dz  }|dk     r||fz  }nr|dk    rR|}d}|dk    r;|dz  |dz  z   }||k    rt          j        d	|          |	|         }|dz  }|dk    ;||dz  |z   fz  }n|dk    rt          j        d
          ||k     d|d         cxk    rdk    r	n nd|z   }nqd|d         cxk    rdk    rn nd|d         dz
  f|dd          z   }nB|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Aww'677);d 	7#$56664yyl""KEQJEs{{x!	3&&"aZI,<=E,,#::EHSJ   !%UIQJE  3&& !y022#
 '(LMMM/ l""4 A"*CC3q6Rc!frk"SW,CCVr\\c!frk"SW,CC#$Cd1g$MNNN$t$XvsFFgFFLLr$   r'   )r(   r)   r*   r   ObjectIdentifierr+   r#   r,   r$   r"   r|   r|   =  sH        *T*2..N 6:263M 3M 3M 3M 3M 3Mr$   r|   c                   8    e Zd Z ej                    Z	 	 ddZdS )RealDecoderNc                    |d         j         t          j        k    rt          j        d          |d |         ||d          }
}	|	s | j        ||dfi ||
fS t          |	d                   }|	dd          }	|dz  rP|	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  rdpd}|r)|dz  }|t          |d                   z  }|dd          }|)|d	z	  dz  }|dk    rt          j        d          |dk    r|dz  }n|dk    r|d	z  }d}|	r)|dz  }|t          |	d                   z  }|	dd          }	|	)|dz  r| }|dz	  dz  }|d|z  z  }|d|f}n|dz  r t          rt          d           |dz  rdpd}n|dz  dk    r|	st          j        d          t          rt          d           	 |dz  dk    rt          |	          ddf}nI|dz  dk    rt          |	          }n0|dz  dk    rt          |	          }nt          j
        d|z            n9# t          $ r t          j
        d          w xY wt          j
        d|z             | j        |||fi ||
fS )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Aww'677);d 	Q(4(63JJ'JJDPPT!WABBx9 U	 K'(IJJJ 42333daAAvvDG$$ABBxBQBxabbB AT A'(?@@@1%,"1A aWRU^^#V  
 a$A1uu'(;<<<AvvQaQA  aWT!W%%%ABBx   
 Dy Bq4BbLA1IEE$Y $	 .,---I(&1EEE$Y!^^ K'(IJJJ 756668s?? YYA.EE#X__!$KKEE#X__!$KKEE  6-2      2/   .+b0   %t$XvuHHHH$NNs   (A%J J-r'   )r(   r)   r*   r   Realr+   r#   r,   r$   r"   r   r   v  sI        TY[[N 6:26eO eO eO eO eO eOr$   r   c                       e Zd ZdZdS )AbstractConstructedDecoderN)r(   r)   r*   r+   r,   r$   r"   r   r     s        NNNr$   r   c                   B    e Zd ZdZdZd Zd ZddZ	 	 ddZ	 	 ddZ	dS )	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                      }|rL ||fi |\  }}|t          j        u rn1|                    |           |                    |j                   |Lt          |          dk    r| j        }n| j        }|	                    t          j        |j        j        g|j        R            }	t          rt          d|	z             t          |          D ]\  }
}|	                    |
|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^   
 	1#,9Y#B#B'#B#B IyCO++i(((y/000  	1 ~""!6NN "8N#)) :n3;Of>NOOO * 
 

  	) '( ) ) ) (
33 	 	NC--Y"'% .     9$$r$   c                 x   |d         j         t          j        k    rt          j        d          |d |         ||d          }
}	|U||                                }n1| j        | j                            |          }n| j        | j        f} ||||          S |T | j	        |	f||d|\  }}|r:t          r3t          dt          |          t          j        |          fz             ||
fS |                                }|                                 |j        t           j        j        t           j        j        fv r{|j        }|j        t           j        j        k    }| o|j         }t          r"t          d| rdpdd	|rd
pdd|d           t+                      }d}|	r|sd }n~|r|j        }nt	 |r||         j        }n=||         j        s||         j        r|                    |          }n||         j        }n%# t6          $ r t          j        d|          w xY w ||	|fi |\  }}	|sT|rR|r|                    |j                  }n5||         j        s||         j        r|                    |j        |          }|                    ||ddd           |                     |           |dz  }|	t          rt          d|z             |r|j!        "                    |          s!t          j        d|j#        j$        z            |j%        r|&                    di           }t          r=t          d           |'                                D ]\  }}t          |d|           |s|&                    dd          rtQ          |j)                  D ]\  }}|j*        s|j        r|+                    |          j,        s0|-                    |j*        j.                  }	 ||         }n# t^          $ r t          rrt          d|j#        j$        d|j.        d|j#        j$        d|j*        j.        d	           |j*        '                                D ]\  }}t          |d|           	 |j*        |         }n+# t^          $ r t          rt          d|           Y Y w xY wY nw xY wt          rt          d|d|           |+                    |          }|j        t           j0        j        t           j1        j        fv rBtQ          |          D ]0\  }} |||         2                                fd|i|\  }}|||<   1 ||+                    |          2                                fd|i|\  }}|                    ||           n|j3        }|r|nz|                                }|                                 |j        }t          rt          d|z             d}|	r. ||	|fi |\  }}	|                    ||ddd           |dz  }|	.||
fS ) 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  sx    !9#":::#$EFFFww'677);d##%^^--

$0!066f6EE

 "68SS
<
Iv>>>#94#9$#y$ $<C$ $ J  A ACHu}X'>'>G@ @ A A A t##^^%%
?t}3TX_EEE!/J 48?:I"+mSJ4S0SO ''2F8b88):M:SQS:S:SHH    %%KC '! $(MM $.$;MM* G,6sO,FMM'_7 G:c?;V G,6,L,LS,Q,QMM -7sO,FM%   #//DLHN  
 #,)D-"K"K7"K"K	4& ]: ]  ](::9;TUU#C3 ]z#7R ](<<Y=VX[\\11&+#e 2    $$$qO  'R  ?/+=>>> T(!4==kJJ F+%'1';'DEF F F + IR 'K < <I 5<===$-OO$5$5 5 5DAqaaa 34444  ?RGKK0A5$I$I ?R.7
8M.N.N =R =RNC#,#5 ) ((3 )J<]<]^a<b<b<j ) (-7-J-J ) 2 7. .N-+4^+D#+ - - -#& 	!A$'C/9/C/L/L/L/8~~~/9/C/L/L/L/8/A/F/F/F)H %I %I %I 1:0B0H0H0J0J %A %A1(+!!!QQ,?(@(@(@(@!-/8/A./QHH'/ !- !- !-'* %L(+:H.-K )L )L )L$,HH	!- %-H-,  # M #2:((NN%L !M !M !M .8-N-Ns-S-SN-4$(J$5t7M9O  O  O >G(6>8 >8 !D !D$9C)9 7@i(6s(;(D(D(F(F7& 7&197&=D7& 7&OIt
 ;DN3$7$7!D 3<)$.$E$Ec$J$J$S$S$U$U3" 3"-53"9@3" 3"	4
 !+ A A#y Q Q Q Q !+ 9  (''( "))J$2M SAMQRRRC "+)D-"K"K7"K"K	411&+#e 2    q   4sD   ;AH	 	"H+>PBSRS#S<S SSSc                    |d         j         t          j        k    rt          j        d          |U||                                }	n1| j        | j                            |          }	n| j        | j        f}	 ||	||          S |  | j	        |f||dt          |d          S |                                }	|	                                 |j        t          j        j        t          j        j        fv r|	j        }
|	j        t          j        j        k    }| o|
j         }t$          r"t%          d| rdpd	d
|rdpd	d|d           t'                      }d}|r?t)          |
          |k    rd }n~|r|
j        }nt	 |r|
|         j        }n=|
|         j        s|
|         j        r|
                    |          }n|
|         j        }n%# t4          $ r t          j        d|	          w xY w |||fddi|\  }}|t6          j        u rn|sT|
rR|r|
                    |j                  }n5|
|         j        s|
|         j        r|
                    |j        |          }|	                     ||ddd           |!                    |           |dz  }|?t          j"        d          t$          rt%          d|z             |
r|
j#        $                    |          s!t          j        d|	j%        j&        z            |
j'        r|(                    di           }t$          r=t%          d           |)                                D ]\  }}t%          |d|           |s|(                    dd          rCtU          |
j+                  D ]-\  }}|j,        s|j        r|	-                    |          j.        s0|	/                    |j,        j0                  }	 ||         }n# tb          $ r t$          rrt%          d|	j%        j&        d|j0        d|	j%        j&        d|j,        j0        d	           |j,        )                                D ]\  }}t%          |d|           	 |j,        |         }n+# tb          $ r t$          rt%          d|           Y Y w xY wY nw xY wt$          rt%          d|d |           |	-                    |          }|j        t          j2        j        t          j3        j        fv rQtU          |          D ]?\  }} |||         4                                fd!|it          |d          \  }}|||<   @ ||	-                    |          4                                fd!|it          |d          \  }}|t6          j        ur|	                     ||           /n|	j5        }|r|n|                                }	|	                                 |j        }t$          rt%          d"|z             d}|r? |||fddi|\  }}|t6          j        u rn5|	                     ||ddd           |dz  }|?t          j"        d          |	|fS )#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F##%^^--

$0!066f6EE

 "68SS
<
Iv>>>)4)"(I w...  
 ^^%%
?t}3TX_EEE#1J")TX_<I"+mSJ4S0SO ''2F8b88):M:SQS:S:SHH    %%KC -z??c))#HH )6HH* B'1#'AHH'_7 B:c?;V B'1'G'G'L'LHH (2#'AH%   #//DNJP  
 (1yH'_'_t'_W^'_'_$	9//& ]: ]  ](::9;TUU#C3 ]z#7R ](<<Y=VX[\\11&+#e 2    $$$qQ  -V 27    ?/+=>>> S,!4==kJJ |+,Z]g]q]z,z{{{* O, 'K < <I 5<===$-OO$5$5 5 5DAqaaa 34444  @VGKK0A5$I$I @V.7
8M.N.N >V >VNC#,#5 ) ((3 )J<]<]^a<b<b<j ) (-7-J-J ) 2 7. .N-+4^+D#+ - - -#& 	!A$'C/9/C/L/L/L/8~~~/9/C/L/L/L/8/A/F/F/F)H %I %I %I 1:0B0H0H0J0J %A %A1(+!!!QQ,?(@(@(@(@!-/8/A./QHH'/ !- !- !-'* %L(+:H.-K )L )L )L$,HH	!- %-H-,  # M #2:((NN%L !M !M !M .8-N-Ns-S-SN-4$(J$5t7M9O  O  O >G(6>8 >8 !D !D$9C)9 7@i(6s(;(D(D(F(F7& 7&197&=A'TX=Y=Y=Y7& 7&OIt
 ;DN3$7$7!D 3<)$.$E$Ec$J$J$S$S$U$U3" 3"-53"9=gPT9U9U9U3" 3"	4
 $-CO#C#C$.$E$Ec9$U$U$U %/$=M$ ,++ "))J$2M SAMQRRRC '0yM'd'dTX'd\c'd'd$	9//11&+#e 2    q   27   9$$sD   AG "G4,O55BR59RR5#R/*R5.R//R54R5)NNr'   )
r(   r)   r*   r   r   r   r   r   r#   r&   r,   r$   r"   r   r     s        !$ $ $$ $ $'% '% '% '%T 6:26I  I  I  I X >B:>O% O% O% O% O% O%r$   r   c                   J    e Zd Z ej                    Z ej                    ZdS )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dS )SequenceDecoderN)r(   r)   r*   r   r   r+   r,   r$   r"   r  r    s        "T]__NNNr$   r  c                   ,    e Zd Z ej                    ZdS )SequenceOfDecoderN)r(   r)   r*   r   r   r+   r,   r$   r"   r	  r	            $T_&&NNNr$   r	  c                   J    e Zd Z ej                    Z ej                    ZdS )SetOrSetOfDecoderN)r(   r)   r*   r   r   r   r   r   r,   r$   r"   r  r    s,        #48::'TZ\\r$   r  c                   ,    e Zd Z ej                    ZdS )
SetDecoderN)r(   r)   r*   r   r   r+   r,   r$   r"   r  r    s        TXZZNNNr$   r  c                   ,    e Zd Z ej                    ZdS )SetOfDecoderN)r(   r)   r*   r   r   r+   r,   r$   r"   r  r    s        TZ\\NNNr$   r  c                   D    e Zd Z ej                    Z	 	 ddZ	 	 ddZdS )ChoiceDecoderNc                    |d |         ||d          }
}	|| j                             |          }n|                                }|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|           |                    ||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w'677);d,22&2AAJJ "))J 	?<
Iv>>>&& KIJJJ'ij0 4; OItt
  B@AAA'ij0 )0 OIt
 $3 	]C			??[\\\%%Y#e	 	& 	
 	
 	
 4r$   c                 J   || j                             |          }	n|                                }	|r ||	||          S |	j        |k    rbt          rt          d|d            |||	j        j        fi |\  }
} ||fddi|\  }}|t          j        urt          j	        d          n4t          rt          d|d            |||	j        j        |||fi |\  }
}|
j
        }t          rt          d|
d	|           |	                    ||
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  s    ,22&2AAJJ!))J 	?<
Iv>>>&& KIJJJ#,9:3@$ $DK$ $ Iy
 $-9$ $$($,3$ $ Iy //'(KLLL 0  B@AAA#,9:3@$ $)0$ $ Iy
 $3 	]C			??[\\\%%Y#e	 	& 	
 	
 	
 9$$r$   r'   )r(   r)   r*   r   Choicer+   r#   r&   r,   r$   r"   r  r    s[         T[]]N 6:26,  ,  ,  , ^ >B:>1% 1% 1% 1% 1% 1%r$   r  c                   D    e Zd Z ej                    Z	 	 ddZ	 	 ddZdS )
AnyDecoderNc                    |d}	n(|j         t          j        u r
||j        v}	n||j        k    }	|	rW|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    JJ6=00x6JJ  8?2J 	Y#O4M c-((3y>>99F%I Y<u}Y?W?WWXXX 	3< 5 5h [ [SZ [ [ )63 3 3 ww'677);d$t$XvtGGwGGMMr$   c                    |d}	n(|j         t          j        u r
||j        v }	n||j        k    }	|	rt
          }
t          rt          d           nK|d         }|d t          |                    }
t          r$t          dt          j	        |
          z             | j
        }|r>|| j        ur5 | j        ||t          fi |} |||
|z   |t          |
          z             S t          rt          d           | j        }|r& |||f|dd|\  }}|t          j        u rn|
|z  }
|&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    HH6=000HH 0H 	]F .,--- $O4M ##3S^^O#34F ]CemTZF[F[[\\\ & 	VL0GGG..xTTGTTJ<
FY,>V@TUUU 	86777 . 	#,9Y $G:F6:$G $G>E$G $G Iy CO++iF  	 .3    	Y9$$ )4(66MMWMMyXXr$   r'   rK   r,   r$   r"   r  r  5  se        TXZZN 6:26N N N N@ >B:><Y <Y <Y <Y <Y <Yr$   r  c                   ,    e Zd Z ej                    ZdS )UTF8StringDecoderN)r(   r)   r*   r   
UTF8Stringr+   r,   r$   r"   r(  r(    r
  r$   r(  c                   ,    e Zd Z ej                    ZdS )NumericStringDecoderN)r(   r)   r*   r   NumericStringr+   r,   r$   r"   r+  r+            'T'))NNNr$   r+  c                   ,    e Zd Z ej                    ZdS )PrintableStringDecoderN)r(   r)   r*   r   PrintableStringr+   r,   r$   r"   r/  r/            )T)++NNNr$   r/  c                   ,    e Zd Z ej                    ZdS )TeletexStringDecoderN)r(   r)   r*   r   TeletexStringr+   r,   r$   r"   r3  r3    r-  r$   r3  c                   ,    e Zd Z ej                    ZdS )VideotexStringDecoderN)r(   r)   r*   r   VideotexStringr+   r,   r$   r"   r6  r6    s        (T(**NNNr$   r6  c                   ,    e Zd Z ej                    ZdS )IA5StringDecoderN)r(   r)   r*   r   	IA5Stringr+   r,   r$   r"   r9  r9            #T^%%NNNr$   r9  c                   ,    e Zd Z ej                    ZdS )GraphicStringDecoderN)r(   r)   r*   r   GraphicStringr+   r,   r$   r"   r=  r=    r-  r$   r=  c                   ,    e Zd Z ej                    ZdS )VisibleStringDecoderN)r(   r)   r*   r   VisibleStringr+   r,   r$   r"   r@  r@    r-  r$   r@  c                   ,    e Zd Z ej                    ZdS )GeneralStringDecoderN)r(   r)   r*   r   GeneralStringr+   r,   r$   r"   rC  rC    r-  r$   rC  c                   ,    e Zd Z ej                    ZdS )UniversalStringDecoderN)r(   r)   r*   r   UniversalStringr+   r,   r$   r"   rF  rF    r1  r$   rF  c                   ,    e Zd Z ej                    ZdS )BMPStringDecoderN)r(   r)   r*   r   	BMPStringr+   r,   r$   r"   rI  rI    r;  r$   rI  c                   ,    e Zd Z ej                    ZdS )ObjectDescriptorDecoderN)r(   r)   r*   r   ObjectDescriptorr+   r,   r$   r"   rL  rL    s        ,V,..NNNr$   rL  c                   ,    e Zd Z ej                    ZdS )GeneralizedTimeDecoderN)r(   r)   r*   r   GeneralizedTimer+   r,   r$   r"   rO  rO    s        +V+--NNNr$   rO  c                   ,    e Zd Z ej                    ZdS )UTCTimeDecoderN)r(   r)   r*   r   UTCTimer+   r,   r$   r"   rR  rR    s        #V^%%NNNr$   rR  Nc                     g | ]}|S r,   r,   ).0xs     r"   
<listcomp>rW  	  s    !!!!A!!!r$   r   c                   H    e Zd ZeZ e            ZdZi fdZddde	ddfdZ
dS )DecoderTc                 f    || _         || _        i | _        i | _        t	          d          | _        d S )N)r   r   )_Decoder__tagMap_Decoder__typeMap_Decoder__tagCache_Decoder__tagSetCacher	   _Decoder__eooSentinel)r   r#  typeMaps      r"   __init__zDecoder.__init__  s5     &v..r$   Nc                 V   t           r?t          dt          j        |t          |          t          j        |          fz             |                    dd          }	|	rF| j        r?|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 r\|st#          j        d          d}|d         }|d	d          }	 ||         }n# t&          $ r t)          |          }|d
z  }|dz  }|dz  }|dk    rcd}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 nw xY w|L|r4	 ||         }nE# t&          $ r t-          j        d|          }|||<   Y nw xY wt-          j        d|          }n||z   }t2          }t           rt          d|z             |t2          u r\|st#          j        d          t)          |d                   }|dk     rd	}|}n||dk    rr|dz  }t5          |d	|d	z                      }t          |          |k    r)t#          j        |dt          |          d|          d}|D ]}|dz  }||z  }|d	z  }nd	}d}||d          }|dk    r| j        st#          j        d          n:t          |          |k     r't#          j        d|t          |          z
  z            t8          }t           r6t          d|t          j        |dk    r|p	|d |                   fz             |t8          u r|t:          }nt<          }|t:          u r	 ||         }n# t&          $ r d }Y nw xY w|rt>          }n5	 ||d d	                  }n# t&          $ r d }Y nw xY w|rt>          }nt@          }t           rbt          d|r|j!        j"        pdd|t>          u rdpd            t          j        #                    |d u rd!p|j$        j!        j"                   |t<          u rf|j!        tJ          j&        u r	 ||         }n# t&          $ r d }Y nw xY wt           rt          d"           |j'        (                                D ]$\  }}t          d#|d$|j!        j"                   %|j)        rMt          d%           |j)        (                                D ]$\  }}t          d#|d$|j!        j"                   %t          d&|d u rdp|*                                d'|           n<||j+        k    s	||j,        v r&|}t           rt          d(|j!        j"        z             nd }|	 ||j-                 }t           rt          d)|j-                   nn# t&          $ ra t-          j        |j+        j.        |j+        j.                  }	 ||         }t           rt          d*|           n# t&          $ r d }Y nw xY wY nw xY w|r
|}t>          }nt@          }n	d }t@          }t           rdt          d|t>          u r|j!        j"        pdd+|t>          u rdpd            t          j        #                    |d u rd!p|j!        j"                   |t>          u r|/                    d,d          s|sd- }|0                    |.           |dk    r |j1        ||||t8          | |fi |\  }
}n |j2        ||||t8          | |fi |\  }
}t           rst          d|j!        j"        d/|
j!        j"        d0tg          |
th          j5                  r|
6                                p|
d1|rt          j        |          pd           t          }n|t@          u r|rE|d         j7        t,          j8        k    r*|d         j9        t,          j:        k    rtv          }t>          }n	d }| j<        }t           r.t          d|r|j!        j"        pdd2|t>          u rdpd3           |tz          u r1| j>        }t           rt          d4|j!        j"        z             t>          }|t~          u rt#          j        |d5|          |t          ut           r:t          j                                         t          d6t          j        z             |
|fS )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   r[  r\  r]  r^  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   re  tagClassUniversalexplicitTagDecoderdefaultErrorStatestDumpRawValuedefaultRawDecoderstErrorCondition)r   r   r   r   r   r   r   r    r!   rH   r:   r#  r`  tagCachetagSetCacher!  
isShortTag
firstOctetlastTag
integerTagre  rR   rf  lengthOctetIdxsizeencodedLengthlengthOctetconcreteDecoder
chosenSpecr   
baseTagSets                                  r"   __call__zDecoder.__call__  s   
  	limrmxz  BE  FO  BP  BP  RW  R_  `i  Rj  Rj  mk  k  l  l  l;;z511  	6/ 	6!} 222 86777	!""55.?(!6!!##  6<  
 "
&q\
%abbM	$7&z2GG !7 !7 !7!(!4!4J)D0H *T 1I&-E}}%*
)* !*-4Y~5N-O-O
 .! 3 %! %*t*; <'1D'8 !*$)* )2.//(BII)   "'"> I# # 
 "g!)Ye  G " 7/6,C!7F >! 	9=%0%<FF' = = =%(ZG%<%<F6<K
333=
 "%B!8!8 %v-F& I>GHHH&&  6?   %Yq\22
##D'FF#%%%,D$-i$(
.C$D$DM =))T11#:-1TT3}3E3E3E3EvvN   F'4 . .1+-AIDD DF%dee,	R<<2 j#/0hiiij 9~~..#:;KvX[\eXfXfOf;ghhh) ^PTZ\a\ijptvjv  kE  |E  k[  IR  SZ  TZ  SZ  I[  ]\  ]\  T]  ]  ^  ^  ^)))#2EE 8E" ...+&,VnOO + + +&*OOO+ # 3)EE/*0*<# / / /*./ ' 3 - 2 {C_  NDapaz  bD  NP  HP  NP  NP  RW  [h  Rh  Rt  mt  RI  xI  RI  J  K  K  KK$$_%<%D%yHfHpHyzzz333%66*%-f%5

# * * *%)


*  
X?@@@-5-B-H-H-J-J S SMJC


AK<P<P QRRRR#- W 2333191C1I1I1K1K W W
A #JJJ@T@T$U V V V Vj\`N`Nmem  ONq{  rL  rL  rN  rN  ON  ON  PV  PV  W  X  X  Xx..&HO2K2K!)J X88;M;VVWWW "&J)3*1*2C*D sC^h^o^o qrrr# 3 3 3%(Z
0A0IJL]Le%f%f
3.4Z.@O" W #$U V V V' 3 3 3.2OOO33 ' 3#- - !3 '+O.E bCQ^H^  IFcrc|  dF  IR  JR  IR  IR  TY  ]j  Tj  Tv  ov  TK  zK  TK  L  M  M  MK$$Z4%7%?C%`:CWC`aaa%%{{?D99 >, >#=#=L];;;R<<'K'K!8(9l( ( "	( ($E99 (D'C!8(9l( ( "	( ($E9  VC`o`y  aC  aC  aC  EJ  ET  E]  E]  E]  _i  jo  qu  q~  _  _  _W  DI  DU  DU  DW  DW  _`  [`  _`  _`  bk  bH  pu  p}  ~G  pH  pH  bT  LT  bT  U  V  V  V*** 	3q	+s/GGGq	*c.CCC&8O)EE '+O 2E sC/:poNgNp:|t|:|:|  D  HU  U  a  Za  q  eq  q  r  s  s  s&&"&"8 `9O<U<^^___%((('06A  { 6!!B	  	GKOO7%+EFFFis   	D 4G9F GF  !GGG $G<;G<O OO*O; ;P
	P
%R. .R=<R=+X 3Y,5!YY,Y&#Y,%Y&&Y,+Y,)r(   r)   r*   r  r  r  r  rp  ra  rr  r  r,   r$   r"   rY  rY    sp        ("
 (* / / / / ,0Td           r$   rY  )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   rangerr  rt  ru  rw  rv  ry  rx  r  r  rq  rY  r   r,   r$   r"   <module>r     s
                           , , , , , , D D D D D D D D D D D D                                    *e85+>???
,e e e e ef e e e ) ) ) ) )O ) ) ) (H (H (H (H (H. (H (H (HV (')) O O O O O* O O O*A A A A A^ A A A]X ]X ]X ]X ]X, ]X ]X ]X@@U @U @U @U @U. @U @U @UF    '   *6M 6M 6M 6M 6M3 6M 6M 6MrhO hO hO hO hO' hO hO hOV       M% M% M% M% M%&@ M% M% M%`/ / / / /"A / / /
% % % % %1 % % %' ' ' ' '3 ' ' '* * * * *7 * * *
         "      
" " " " "$ " " "b% b% b% b% b%. b% b% b%J^Y ^Y ^Y ^Y ^Y& ^Y ^Y ^YD' ' ' ' '* ' ' '* * * * *- * * *, , , , ,/ , , ,* * * * *- * * *+ + + + +. + + +& & & & &) & & &* * * * *- * * ** * * * *- * * ** * * * *- * * *, , , , ,/ , , ,& & & & &) & & &
/ / / / /0 / / /. . . . ./ . . .& & & & &' & & &
L))
L))
 	N++--
 	//11	

 	Ikkmm
 	 "9"9";";
 	ONN,,
 	Ikkmm
 	M5577
 	HO&&((
 	K
 	O--//
 	3355
 	!7!7!9!9
  	3355!
" 	 5 5 7 7#
$ 	N++--%
& 	335533553355!7!7!9!9N++--
"$;$;$=$=
!#9#9#;#;
N>>++7
 
@ 	HOZZ\\J||~~M//++O--//KHOZZ\\ ==?? * *K!-+5<&"7"7)GFO "!uuRyy!!!		N  N  N  N  N f N  N  N F 
	!	!r$   