
    di                      !   d 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	m
Z
mZmZ ddlmZmZmZ ddlmZmZmZmZ ddlmZmZmZmZmZmZmZ dd	lmZmZ dd
l m!Z!  G d ded          Z" G d ded          Z# G d ded          Z$ G d ded          Z% G d ded          Z& e
efi dddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrZ' G ds dtedu          Z( G dv dwedx          Z) G dy dzed{          Z* G d| d}ed~          Z+ G d ded          Z, G d ded          Z- G d ded          Z. G d ded          Z/ G d ded          Z0 G d ded          Z1 G d ded          Z2 G d ded          Z3 G d ded          Z4 G d ded          Z5 G d ded          Z6 G d ded          Z7 G d ded          Z8 G d ded          Z9 G d ded          Z: G d ded          Z; G d ded          Z< G d ded          Z= G d ded          Z> G d ded          Z? G d ded          Z@ G d ded          ZA G d dedì          ZB G dĄ dedƬ          ZC G dǄ dedɬ          ZD G dʄ ded̬          ZE G d̈́ dedϬ          ZF G dЄ dedҬ          ZG G dӄ dedլ          ZH G dք dedج          ZI G dل ded۬          ZJ G d܄ dedެ          ZK G d߄ ded          ZL G d ded          ZM G d ded          ZN G d ded          ZO G d ded          ZP G d ded          ZQ G d ded          ZR G d ded          ZS G d ded          ZT G d ded          ZU G d ded          ZV G d  ded          ZW G d ded          ZX G d ded          ZY G d	 d
ed          ZZ G d ded          Z[ G d ded          Z\ G d ded          Z] G d ded          Z^ G d ded          Z_ G d ded          Z` G d ded           Za G d! d"ed#          Zb G d$ d%ed&          Zc G d' d(ed)          Zd G d* d+ed,          Ze G d- d.ed/          Zf G d0 d1ed2          Zg G d3 d4ed5          Zh G d6 d7ed8          Zi G d9 d:ed;          Zj G d< d=ed>          Zk G d? d@edA          Zl G dB dCedD          Zm G dE dFedG          Zn G dH dIedJ          Zo G dK dLed          Zp G dM dNedO          Zq G dP dQedR          Zr G dS dTedU          Zs G dV dWedX          Zt G dY dZed          Zu G d[ d\ed]          Zv G d^ d_edج          Zw G d` daedb          Zx G dc ddede          Zy G df dgedh          Zz G di djedk          Z{ G dl dmed#e)e"e/gn          Z| G do dpede)e&gn          Z} G dq dredse)e,e7gn          Z~ G dt duedv          Z G dw dxed8e)e"e%e$e5egn          Z G dy dzed{          Z G d| d}ed~          Z G d dedH          Z G d dedr          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d ded@          Z G d ded          Z G d ded          Z G d ded          Z G d ded          Z G d dedg e;e)eee"e$eexee5ejeeUekeleeeeeeeQeOeeeeyeze{ee=e[en          Z G d ded          Z G d dede)e3gn          Z G d ded          Z G d ded          Z G d ded          Z G d dede)eegn          Z G d ded¬          Z G dÄ dedŬ          Z G dƄ de          Z G dȄ dee|e}eeeeeegʦ          Z G d˄ dede(e)e4eTe#e>e\ecesevehengn          Z G d̈́ dede(e)gn          Z G dτ ded e(e)e*gn          Z G dф ded"e(e)gn          Z G dӄ ded$e(e)e;gn          Z G dՄ ded&e(e)e#e"ewe%e$e*e>e#e\ecexgn          Z G dׄ ded(e(e)e#e0e>e\ecgn          Z G dل ded*e(e)e#e3e>e\ecgn          Z G dۄ ded,e(e)e#e"e/e>e\ecgn          Z G d݄ ded.e(e)e#eEe>e\ecgn          Z G d߄ ded0e(e)eHeIeJeKe1e#e>e\ece[gn          Z G d ded2e(gn          Z G d ded4e(e)e#e2e*e>e\ecgn          Z G d ded6e(e)e1e>eDe*e\ecgn          Z G d ded8e(e)e1e>e*e\ecgn          Z G d ded:e(e)e1e-e9e>e\ece*g	n          Z G d ded<e(e)e#e:e,e>e?e\ebecg
n          Z G d ded>e(e)e#e:e>e?e\ebgn          Z G d ded@e(e)gn          Z G d dedBe(e)eAeBgn          Z G d dedDe(e)e1e>e\ecgn          Z G d dedFe(e)e@gn          Z G d dedHe(e)gn          Z G d dedJe(e)gn          Z G d dedLe(e)gn          Z G d dedNe(e)e#eCe>e\ecgn          Z G d d edPe(e)eFgn          Z G d dedRe(e)e#e>e"e$e*eMePe[eRe1eSeZe\ecgn          Z G d dedTe(e)e#e>e\ecgn          Z G d dedVe(e)e#e>eOe\ecgn          Z G d dedXe(e)e#e>eNe\ecgn          Z G d	 d
edZe(e)gn          Z G d ded\e(e)e#e>eXeWe\ecgn          Z G d ded^e(e)e#e>eYe\ecgn          Z G d ded`e(e)eVeSgn          Z G d dedbe(e)eceagn          Z G d dedde(e)gn          Z G d dedfe(e)e#ede4efeee\ecg	n          Z G d dedhe(e)e#e>e4eee\ecgn          Z G d dedje(e)e4eeeDecgn          Z G d dedle(e)eggn          Z G d dedne(e)eign          Z G d d edpe(e)eoeqepgn          Z G d! d"edre(e)ergn          Z G d# d$ede(gn          Z G d% d&eg eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeÑeđeőeƑeǑeȑeɑeʑʦ          Z G d' d(ee(e)e.e*e1e,eNeOeQePeMgʦ          Zi dd)dd*d d+d"d,d$d*d-d.d/d0d1d2dd3d4d2dd2d5d6d7d2d8d9d:d;d&d<d(d=i d*d>d,d?d.d@d0dAd2dBdCdDdEdFdGdHdIdJdKdLd~dMdNdOdPdQdRdSd4dTd6dUd8dVi d:dWd<dXd>dYd@dZdBd[dDd\d]d^dvd_d`dadbdcdddedfdgdhdidFdjdHdkdJdldLdmi dNdndPdodpdqdrdsdtdudvdwdxdydzd{d|d}dRd2dTd~dVddXdTdZdd\dd^dd`di dddddddddddddddddddddfddhddjddddddddudddddddZΐdS (  zCode related to the Card Application Toolkit (CAT) as described in
mainly) ETSI TS 102 223, ETSI TS 101 220 and USIM Application Toolkit (SAT)
as described in 3GPP TS 31.111.    )List)bidict)Int8ubInt16ubByteBitsInteger)StructEnum	BitStructthis)SwitchGreedyRange	FlagsEnum)TLV_IECOMPR_TLV_IE
BER_TLV_IETLV_IE_Collection)PlmnAdapter
BcdAdapterGsmStringAdapterTonNpi	GsmStringBytesGreedyBytes)b2hh2b)dec_xplmn_w_actc                   D    e Zd Z edez  d ee          z            ZdS )Addresston_npicall_numberN)__name__
__module____qualname__r	   r   r   r   
_construct     7/home/jenkins/workspace/simtester-sanitize/pySim/cat.pyr   r   "   s8        	&(%jj&=&==? ?JJJr'   r      )tagc                       e Zd ZdS )AlphaIdentifierNr"   r#   r$   r&   r'   r(   r,   r,   '           Dr'   r,      c                       e Zd ZdS )
SubaddressNr-   r&   r'   r(   r1   r1   ,           Dr'   r1      c                       e Zd ZdS )CapabilityConfigParamsNr-   r&   r'   r(   r5   r5   0   r2   r'   r5      c                       e Zd ZdS )CBSPageNr-   r&   r'   r(   r8   r8   4   r2   r'   r8      refresh   	more_time   poll_interval   polling_off   set_up_event_list   set_up_call   send_ss   	send_ussd   send_short_message   	send_dtmf   launch_browser   geo_location_req   	play_tone    display_text!   	get_inkey"   	get_input#   select_item$   set_up_menu%   provide_local_info&   timer_management'   set_up_idle_mode_text(   perform_card_apdu0   power_on_card1   power_off_card2   get_reader_status3   run_at_command4   language_notification5   open_channel@   close_channelA   receive_dataB   	send_dataC   get_channel_statusD   service_searchE   get_service_infoF   declare_serviceG   
set_framesP   get_frames_statusQ   retrieve_mms`   
submit_mmsa   display_mmsb   activatep   contactless_state_changedq   command_containerr   encapsulated_session_controls   c                   :    e Zd Z edez  dez  dez            ZdS )CommandDetailscommand_numbertype_of_commandcommand_qualifierN)r"   r#   r$   r	   r   TypeOfCommandr%   r&   r'   r(   r   r   F   s7        (/)-7+F24 4JJJr'   r      c                      e Zd Z ei ddddddddd	d
dddddddddddddddddddddd d!d"i d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdG          ZdHefdIZdJ ZdKS )LDeviceIdentitiesr;   keypadr=   displayr?   earpiecerE   addl_card_reader_0rG   addl_card_reader_1rI   addl_card_reader_2rK   addl_card_reader_3rM   addl_card_reader_4rO   addl_card_reader_5rQ   addl_card_reader_6   addl_card_reader_7rU   	channel_1rW   	channel_2rY   	channel_3r[   	channel_4r]   	channel_5r_   	channel_6ra   	channel_7rg   ecat_client_1ri   ecat_client_2rk   ecat_client_3rm   ecat_client_4ro   ecat_client_56   ecat_client_67   ecat_client_78   ecat_client_89   ecat_client_9:   ecat_client_a;   ecat_client_b<   ecat_client_c=   ecat_client_d>   ecat_client_e?   ecat_client_fr   uiccterminalnetwork)      doc                 P    | j         |d                  | j         |d                  dS )Nr   r;   )source_dev_iddest_dev_id)DEV_IDS)selfr   s     r(   _from_byteszDeviceIdentities._from_bytest   s)    !%be!4T\RTUVRWEXYYYr'   c                     | j         j        | j        d                  }| j         j        | j        d                  }t          ||g          S )Nr   r   )r   inversedecodedbytes)r   srcdsts      r(   	_to_byteszDeviceIdentities._to_bytesw   s@    l"4<#@Al"4<#>?c3Z   r'   N)r"   r#   r$   r   r   r   r   r   r&   r'   r(   r   r   L   s       f %h%i% 	j% 	"	%
 	"% 	"% 	"% 	"% 	"% 	"% 	"% 	k% 	k% 	k% 	k%  	k!%" 	k#% %$ 	k%%& 	o'%( 	o)%* 	o+%, 	o-%. 	o/%0 	o1%2 	o3%4 	o5%6 	o7%8 	o9%: 	o;%< 	o=%> 	o?%@ 	oA%B 	oC%D 	fE% %F I% % % % %GNZe Z Z Z Z! ! ! ! !r'   r   r   c            	       L    e Zd Z ed eeddd          z  dez            ZdS )Duration	time_unitr   r;   r=   )minutessecondstenths_of_secondstime_intervalNr"   r#   r$   r	   r
   r   r%   r&   r'   r(   r   r   }   sB        DDAYZ$[$[$[['.0 0JJJr'   r      c                   D    e Zd Z edez  d ee          z            ZdS )Item
identifiertext_stringN)r"   r#   r$   r	   r   r   r   r%   r&   r'   r(   r   r      s<        V+%&6&6{&C&CCE EJJJr'   r      c                   *    e Zd Z edez            ZdS )ItemIdentifierr   Nr"   r#   r$   r	   r   r%   r&   r'   r(   r   r      "        V+,,JJJr'   r      c                   2    e Zd Z edez  dez            ZdS )ResponseLengthminimum_lengthmaximum_lengthNr   r&   r'   r(   r   r      s/        (/(/1 1JJJr'   r      c                   >   e Zd Z eefi ddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJZ eedddd
dddddddK          Z eedddL          Z eeddddd
dddddM          Z eeddddd
N          Z	 eeddddd
ddddddddO          Z
 eeddddd
dP          Z edQez  dR eej        eeee	e
edSeT          z            ZdUS )VResultperformed_successfullyr   $performed_with_partial_comprehensionr;   "performed_with_missing_informationr=   $refresh_performed_with_addl_efs_readr?   2porformed_successfully_but_reqd_item_not_displayedrA   -performed_but_modified_by_call_control_by_naarC   &performed_successfully_limited_service   performed_with_modification   2refresh_performed_but_indicated_naa_was_not_active   &performed_successfully_tone_not_played	   )proactive_uicc_session_terminated_by_userrE   9backward_move_in_proactive_uicc_session_requested_by_userrG   no_response_from_userrI   !help_information_required_by_userrK   $terminal_currently_unable_to_processrS   #network_currently_unable_to_processrU   !user_did_not_accept_proactive_cmdrW   %user_cleared_down_call_before_releaserY   0action_in_contradiction_with_current_timer_stater[   .interaction_with_call_control_by_naa_temporaryr]   launch_browser_generic_errorr_   mms_temporary_problemra   "command_beyond_terminal_capabilityre   'command_type_not_understood_by_terminalrg   'command_data_not_understood_by_terminalri   $command_number_not_known_by_terminalrk   error_required_values_missingr   multiple_card_commands_errorr   !bearer_independent_protocol_errorr   +access_technology_unable_to_process_commandr   frames_errorr   	mms_errorr   )ussd_or_ss_transaction_terminated_by_userrM   ss_return_errorrm   sms_rp_errorro   ussd_return_errorr   6interaction_with_cc_by_usim_or_mo_sm_by_usim_permanentr   )no_specific_causescreen_is_busyterminal_currently_busy_on_call
no_serviceaccess_control_class_barradio_resource_not_grantednot_in_speech_call$terminal_currently_busy_on_send_dtmfno_naa_active#me_currently_busy_on_ss_transaction%me_currently_busy_on_ussd_transaction)r  action_not_allowedthe_type_of_request_has_changed)
r  "card_reader_removed_or_not_presentcard_removed_or_not_presentcard_reader_busycard_powered_offcapdu_format_error	mute_cardtransmission_errorprotocol_not_supportedspecified_reader_not_valid)r  bearer_unavailablebrowser_unavailable)terminal_unable_to_read_provisioning_datadefault_url_unavailable)r  no_channel_availabilechannel_closedchannel_id_not_valid#requested_buffer_size_not_availablesecurity_error,requested_uicc_if_transp_level_not_availableremote_device_not_reachableservice_errorservice_identifer_unknownport_not_available&launch_parameters_missing_or_incorrectapplication_launch_failed)r  frame_identifier_not_valid*num_of_frames_beyond_terminal_capabilitiesno_frame_definedrequested_size_not_supporteddefault_active_frame_not_validgeneral_resultadditional_information)r  r  r  r  r  r  defaultN)r"   r#   r$   r
   r   GeneralResultAddlInfoTermProblemAddlInfoCallControlAddlInfoMultipleCardAddlInfoLaunchBrowserAddlInfoBipAddlInfoFramesr	   r   r   rH  r   r%   r&   r'   r(   r   r      s       D *V *V *V01*V ?@a*V =>A	*V
 ?@a*V MNA*V HIq*V AB*V 67Q*V MNA*V AB*V DH4*V TXSW*V 04t*V <@4*V" ?Cd#*V$ >BT%*V& <@4'*V( @Dt)*V* KO$+*V, IM-*V. 7;d/*V0 04t1*V4 =AD5*V6 BF7*V8 BF9*V: ?Cd;*V< 8<t=*V> 7;d?*VB <@4C*VD FJTE*VF '+dG*VH $(4I*VL DH4M*VN *.O*VP '+dQ*VR ,04S*VT QUPTU*VMX $v26/3@D+/9=;?37EI.2DHFJL L L f2637@DF F F
  426CG<@151537*.377;;?
A 
A 
A !D263748JN8<> > > $v$6:/359DH/3MQ<@.2:>37GK:>@ @ @K T&26;?KO15=A?CE E EN (608KDWVi<P<QAL,:  $/20 20 20 0	1 	1JJJr'   r   r   c                   *    e Zd Z edez            ZdS )SMS_TPDUtpduNr"   r#   r$   r	   r   r%   r&   r'   r(   rT  rT    s"        {*++JJJr'   rT     c                   2    e Zd Z edez  dez            ZdS )SsStringr    	ss_stringN)r"   r#   r$   r	   r   r   r%   r&   r'   r(   rY  rY  	  s)        	&(+k*ABBJJJr'   rY     c                   B    e Zd ZddddfgZ edez  dez            ZdS )
TextString8d090470617373776f7264rA   s   password)dcsr   r_  r   N)r"   r#   r$   _test_de_encoder	   r   r   r%   r&   r'   r(   r]  r]    sF        
"Ak$J$JLO f%k13 3JJJr'   r]     c            	           e Zd Z ed eefi dddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9z            Zd:S );Tonetone	dial_toner;   called_subscriber_busyr=   
congestionr?   radio_path_acknowledgerA   radio_path_not_availablerC   error_special_infor   call_waiting_toner   ringing_toner   general_beeprE   positive_ack_tonerG   negative_ack_or_error_tonerI   ringing_tone_speechrK   alert_tone_smsrM   critical_alertrO   vibrate_onlyrS   
happy_tonere   sad_tonerg   urgent_action_toneri   question_tonerk   message_received_tonerm   melody_1rq   melody_2rs   melody_3ru   melody_4rw   melody_5ry   melody_6r{   melody_7r}   melody_8r   Nr   r&   r'   r(   rc  rc    s       ttF  ;  ;  ;dd  ;CG4 ;7;t ; DH4 ; FJT	 ;
 @Dt ; ?Cd ; :> ; :> ; ?Cd ; HLt ; AE ; <@4 ; <@4 ; :> ; 8<t ;  6:T! ;" @Dt# ;$ ;?$% ;& CG$' ;( 6:T) ;* 6:T+ ;, 6:T- ;. 6:T/ ;0 6:T1 ;2 6:T3 ;4 6:T5 ;6 6:T7 ; ; < <JJJr'   rc     c                   2    e Zd Z edez  dez            ZdS )
USSDStringr_  ussd_stringNr"   r#   r$   r	   r   r   r%   r&   r'   r(   r  r  5  -        f%k13 3JJJr'   r     c                   Z    e Zd Z ed          Z edez  d ee          z            ZdS )FileListr=   number_of_filesfilesN)	r"   r#   r$   r   FileIdr	   r   r   r%   r&   r'   r(   r  r  :  sF        588F)&0F 3 335 5JJJr'   r     c                       e Zd ZdS )LocationInformationNr-   r&   r'   r(   r  r  @  r2   r'   r     c                   $    e Zd Z ee          ZdS )IMEINr"   r#   r$   r   r   r%   r&   r'   r(   r  r  D          K((JJJr'   r     c                       e Zd ZdS )HelpRequestNr-   r&   r'   r(   r  r  H  r2   r'   r     c                   $    e Zd Z ee          ZdS )NetworkMeasurementResultsNr  r&   r'   r(   r  r  L  r  r'   r     c                   2    e Zd Z edez  dez            ZdS )DefaultTextr_  r   Nr  r&   r'   r(   r  r  P  r  r'   r     c                   $    e Zd Z ee          ZdS )ItemsNextActionIndicatorNr"   r#   r$   r   r   r%   r&   r'   r(   r  r  U          V$$JJJr'   r     c                       e Zd Z eefi ddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:Z ee          Zd;S )<	EventListmt_callr   call_connectedr;   call_disconnectedr=   location_statusr?   user_activityrA   idle_screen_availablerC   card_reader_statusr   language_selectionr   browser_terminationr   data_availabler  channel_status
   access_technology_change   display_parameters_changed   local_connection   network_search_mode_change   browsing_status   frames_informtion_changerE   hci_connectivity_eventrK   !access_technology_change_multiplerM   contactless_state_requestrQ   profile_container   secured_profile_container   poll_interval_negotation   wlan_access_statusrG   network_rejectionrI   csg_cell_selectionrO   ims_registrationr   incoming_ims_data   data_connection_status_change   N)r"   r#   r$   r
   r   Eventr   r%   r&   r'   r(   r  r  X  s       D @ @ @DD @+/4@.2d@ -1D@ +/$	@
 37$@ 04t@ 04t@ 15@ ,04@ ,04@ 6:T@ 8<t@ .2T@ 8<t@ -1D@  6:T!@" 484#@$ ?Cd%@& 7;d'@( /3d)@* 7;d+@, 6:T-@0 04t1@2 /3d3@4 04t5@6 .2T7@8 /3d9@: ;?$;@E< U##JJJr'   r     c                       e Zd ZdS )CauseNr-   r&   r'   r(   r  r  z  r2   r'   r     c                   ,    e Zd Z eeddd          ZdS )LocationStatusr   r;   r=   )normal_servicelimited_servicer   Nr"   r#   r$   r
   r   r%   r&   r'   r(   r  r  ~  s&        fQaPPPJJJr'   r     c                   H    e Zd Z ed eed          z  dez            ZdS )IconIdentifiericon_qualifierr;   not_self_explanatoryicon_identifierN)r"   r#   r$   r	   r   r   r%   r&   r'   r(   r  r    s?        (6PQ)R)R)RR)&02 2JJJr'   r     c                   Z    e Zd Z ed eed          z  d ee          z            ZdS )ItemIconIdentifierListicon_list_qualifierr;   r  icon_identifiersN)r"   r#   r$   r	   r   r   r   r%   r&   r'   r(   r  r    sK        -iiUV.W.W.WW*;;v+>+>>@ @JJJr'   r     c                       e Zd ZeZdS )CApduNr"   r#   r$   r   r%   r&   r'   r(   r  r            JJJr'   r     c                       e Zd ZeZdS )TimerIdentifierNr"   r#   r$   r   r%   r&   r'   r(   r  r            JJJr'   r     c                   :    e Zd Z edez  dez  dez            ZdS )
TimerValuehourminutesecondNr   r&   r'   r(   r  r    s-        vxHHJJJr'   r     c                       e Zd ZeZdS )	AtCommandNr  r&   r'   r(   r  r    r  r'   r     c                       e Zd ZdS )ImmediateResponseNr-   r&   r'   r(   r  r    r2   r'   r     c                   $    e Zd Z ee          ZdS )
DtmfStringNr  r&   r'   r(   r  r    r  r'   r     c                       e Zd ZeZdS )LanguageNr  r&   r'   r(   r  r    r  r'   r     c                   J    e Zd Z ed eedd          z  dez            ZdS )TimingAdvance	me_statusr   r;   )in_idle_statenot_in_idle_statetiming_advanceNr   r&   r'   r(   r  r    s@        DDqTU$V$V$VV(/1 1JJJr'   r     c                   0    e Zd Z eeddddd          ZdS )BrowserIdentityr   r;   r=   r?   rA   )rK  wmlhtmlxhtmlchtmlNr  r&   r'   r(   r	  r	    s*        faQQaqIIIJJJr'   r	     c                   $    e Zd Z ee          ZdS )UrlN)r"   r#   r$   r   r   r%   r&   r'   r(   r  r    s        ;''JJJr'   r     c                   D    e Zd Z eedddd          Z ee          ZdS )Bearerr   r;   r=   r?   )smscsdussdpacket_ServiceN)r"   r#   r$   r
   r   SingleBearerr   r%   r&   r'   r(   r  r    s7        4A11QGGGL\**JJJr'   r     c                       e Zd ZeZdS )ProvisioningFileReferenceNr  r&   r'   r(   r  r    r  r'   r     c                   *    e Zd Z eedd          ZdS )BrowserTerminationCauser   r;   )user_terminationerror_terminationNr  r&   r'   r(   r  r    s$        fqAFFFJJJr'   r     c                      e Zd ZddddfgZ edez  dez  dez            Z edez  d	ez  d
ez  dez  dez  d eedd          z            Z edez  de	z  de	z  de	z  de	z  dez  dez  dez  dez  dez  dez  dez  d eedd          z            Z
 edez            Z ed eeddd d!d"d#d$d%d&d'dd(d!)          z  d* eej        eee
ed+e,          z            Zd-S ).BearerDescriptionb50103r'   rK  )bearer_parametersbearer_type	data_ratebearer_serviceconnection_elementprecendence_classdelayreliabilitypeak_throughputmean_throughputpdp_typer=   r   )ipnon_iptraffic_classmax_bitrate_ulmax_bitrate_dlguaranteed_bitrate_ulguaranteed_bitrate_dldelivery_ordermax_sdu_sizesdu_err_ratioresidual_berdelivery_of_erroneous_sdutransfer_delaytraffic_handling_prioritypdu_session_typer&  r;   r  r  r  r  r?   rA   rC   r   r   )r  packet_grps_utran_eutranpacket_with_extd_paramswlanpacket_eutran_mapped_utranng_ranrK  
local_link	bluetoothirdars232cdma2000usbr%  )r  r?  r@  rC  rJ  N)r"   r#   r$   r`  r	   r   BearerParsCsr
   BearerParsPacketr   BearerParsPacketExtBearerParsNgRanr   r   r&  r   r%   r&   r'   r(   r#  r#    s       
#iHHJO 6+f,*61.v57 7L v1&8%fn+F2/6/6(fd)K)K)KKM M !&!7!1'!9!1'!9!8!@!8!@!1&!8!/!6!0!7!/!6!<V!C!1&!8!<V!C!+DDD,N,N,N!NP P  f/677Odd6 !AWX_c7;D$%!qqPQ\] "'$ '$ '$ $ ,FF43C?KTdSfBQ	E6 E6
 @K-L -L -L LM MJJJr'   r#     c                       e Zd ZeZdS )ChannelDataNr  r&   r'   r(   rP  rP    r  r'   rP     c                       e Zd ZeZdS )ChannelDataLengthNr  r&   r'   r(   rS  rS    r  r'   rS     c                       e Zd ZeZdS )
BufferSizeN)r"   r#   r$   r   r%   r&   r'   r(   rV  rV    s        JJJr'   rV     c                       e Zd ZeZdS )ChannelStatusNr  r&   r'   r(   rY  rY    s         JJJr'   rY     c                   l    e Zd Zd ed          ddfgZ ed eedd          z  d	ez            Z	d
S )OtherAddressbe05210102030401020304ipv4)addresstype_of_addressra  rU   W   )r_  ipv6r`  N)
r"   r#   r$   r   r`  r	   r
   r   r   r%   r&   r'   r(   r\  r\    sa        
JFSSUO )$$vDt*L*L*LL!+-/ /JJJr'   r\     c                   b    e Zd ZddddfgZ ed eedddd	d
d          z  dez            ZdS )UiccTransportLevel
bc03028000i   tcp_uicc_client_remote)port_numberprotocol_typerj  r;   r=   r?   rA   rC   r   )udp_uicc_client_remoterh  tcp_uicc_serverudp_uicc_client_localtcp_uicc_client_localdirect_channelri  N)	r"   r#   r$   r`  r	   r
   r   r   r%   r&   r'   r(   rf  rf    st        
@XYY[O VAfg=>VWCDUV)X )X )X X &g-/ /JJJr'   rf     c                   *    e Zd Z edez            ZdS )AidaidNrV  r&   r'   r(   rr  rr    s"        k)**JJJr'   rr     c                   R    e Zd Z eeddddddddd	d
d          Z ee          ZdS )AccessTechnologyr   r;   r=   r?   rA   rC   r   r   r   r  r  )gsmtia_eia_533tia_eia_136_270utrantetratia_eia_95_bcdma1000_1xcdma2000_hrpdeutranehrpdnrN)r"   r#   r$   r
   r   SingleAccessTechr   r%   r&   r'   r(   rv  rv    sU        tFq!ST\]12QR[\*+6 6 6 -..JJJr'   rv     c                   \    e Zd Z eeddddd          Z edez  dez  d	ez            Zd
S )ServiceRecordr   r;   r=   r?   rA   )technology_independentrE  rF  rG  rI  local_bearer_technologyservice_identifierservice_recordN)	r"   r#   r$   r
   r   BearerTechIdr	   r   r%   r&   r'   r(   r  r  !  sU        4qAAUV\]^^^L1,>,V3(46 6JJJr'   r     c                   <    e Zd Z edej        z  dez            ZdS )DeviceFilterr  device_filterNr"   r#   r$   r	   r  r  r   r%   r&   r'   r(   r  r  (  s2        1-2LL'35 5JJJr'   r     c                   <    e Zd Z edej        z  dez            ZdS )ServiceSearchIEr  rz   Nr  r&   r'   r(   r  r  -  s2        1-2LL(46 6JJJr'   r     c                   <    e Zd Z edej        z  dez            ZdS )AttributeInformationr  attribute_informationNr  r&   r'   r(   r  r  2  s2        1-2LL/;= =JJJr'   r     c                   J    e Zd Z ed eedd          z  dez            ZdS )RemoteEntityAddresscoding_typer   r;   )
ieee802_16rF  r`  N)r"   r#   r$   r	   r
   r   r   r%   r&   r'   r(   r  r  8  s?        dd6aa&H&H&HH!+-/ /JJJr'   r     c                   .    e Zd Zd ed          fgZeZdS )NetworkAccessNamec704036e6161036e6161N)r"   r#   r$   r   r`  r   r%   r&   r'   r(   r  r  =  s,        
##j//+O JJJr'   r     c                       e Zd ZdS )TextAttributeNr-   r&   r'   r(   r  r  D  r2   r'   r     c                       e Zd ZdS )PdpContextActivationParamsNr-   r&   r'   r(   r  r  H  r2   r'   r     c                   8    e Zd Z eeddddddddd	

  
        ZdS )UtranEutranMeasurementQualifierr;   r=   r?   rA   rC   r   r   r   r  )	utran_intra_frequtran_inter_frequtran_inter_rat_geranutran_inter_rat_eutraneutran_intra_freqeutran_inter_freqeutran_inter_rat_geraneutran_inter_rat_utraneutran_inter_rat_nrNr  r&   r'   r(   r  r  L  s@        f156:7;26267;7;48: : :JJJr'   r     c                   *    e Zd Z eedd          ZdS )NetworkSearchModer   r;   )manual	automaticNr  r&   r'   r(   r  r  X  s$        fQ!444JJJr'   r     c                   0    e Zd Z eeddddd          ZdS )BatteryStater   r;   r=   r?   rC   )very_lowlowaveragegoodfullNr  r&   r'   r(   r  r  \  s*        fqaKKKJJJr'   r     c                   \    e Zd Z ed eedd          z  d ee          z            ZdS )FrameLayoutlayoutr;   r=   )
horizontalverticalrelative_sized_frameN)r"   r#   r$   r	   r
   r   r   r%   r&   r'   r(   r  r  `  sK        fQ!G!G!GG.{{6/B/BBD DJJJr'   r     c                   $    e Zd Z ee          ZdS )ItemTextAttributeListNr  r&   r'   r(   r  r  d  r  r'   r     c                   *    e Zd Z edez            ZdS )FrameIdentifierr   Nr   r&   r'   r(   r  r  h  r   r'   r     c                       e Zd ZeZdS )MultimediaMessageReferenceNr  r&   r'   r(   r  r  l  r  r'   r     c                       e Zd ZeZdS )MultimediaMessageIdentifierNr  r&   r'   r(   r  r  p  r  r'   r     c                       e Zd ZeZdS )MmContentIdentifierNr  r&   r'   r(   r  r  t  r  r'   r     c                   *    e Zd Z edez            ZdS )ActivateDescriptortargetNr   r&   r'   r(   r  r  x  s!        ((JJJr'   r     c                       e Zd ZdefdZdS )PlmnWactListr   c           
          g }d}|t          |          k     rR|                    t          t          |||dz                                           |dz  }|t          |          k     R|S )Nr   rC   )lenappendr   r   )r   r   ris       r(   r   zPlmnWactList._from_bytes}  sh    #b''kkHH_SAacE^^44555FA #b''kk r'   N)r"   r#   r$   r   r   r&   r'   r(   r  r  |  s/        e      r'   r     c                   *    e Zd Z eedd          ZdS )ContactlessFunctionalityStater   r;   )enableddisabledNr  r&   r'   r(   r  r    s$        fa!444JJJr'   r     c                   p    e Zd Z ed e ed                    z  d ed          z  dez            ZdS )RoutingAreaIdentificationmcc_mncr?   lacr=   racN)r"   r#   r$   r	   r   r   r   r%   r&   r'   r(   r  r    sN        	++eeAhh"7"77eeAhhf& &JJJr'   r     c                       e Zd Z eefi ddddddddd	d
dddddddddddddddddddddd d!d"d#d$Zd%S )&UpdateAttachRegistrationTypenormal_location_updating_lur   periodic_updating_lur;   imsi_attach_lur=   gprs_attachr?   combined_gprs_imsi_attachrA   ra_updating_raurC   combined_ra_la_updting_raur   +combined_ra_la_updting_with_imsi_attach_raur   periodic_updating_raur   eps_attach_emmr  combined_eps_imsi_attach_emmr  ta_updating_taur  combined_ta_la_updating_taur  ,combined_ta_la_updating_with_imsi_attach_taur  periodic_updating_taur  initial_registration_5grrr  #mobility_registration_updating_5grrrE   #periodic_registration_updating_5grrrG   Nr  r&   r'   r(   r  r    s       f J J JDD J59TJ/3tJ -1DJ ;?$	J
 15J <@4J MQDJ 7;dJ 04tJ >BTJ 15J =ADJ NRTJ 7;dJ ;?$J  EID!J" EID#JJJJr'   r     c                       e Zd ZeZdS )RejectionCauseCodeNr  r&   r'   r(   r  r    r  r'   r     c                       e Zd Z edez  dez  d eedddd          z  d	 eedddd
ddd          z  d eedddd
          z  dez            ZdS )GeographicalLocationParametershorizontal_accuracyvertical_coordinatevelocityr   r;   r=   rA   )horizontal_requestedvertical_requested horizontal_uncertainty_requestedvertical_uncertainty_requestedpreferred_gad_shapesr?   rC   r   )ellipsoid_point'ellipsoid_point_with_uncertainty_circle(ellipsoid_point_with_uncertainty_ellipseellipsoid_point_with_altitudepolygon7ellipsoid_point_with_altitude_and_uncertainty_ellipsoidellipsoid_arcpreferred_nmea_sentences)rmcggagllgnspreferred_maximum_response_timeN)r"   r#   r$   r	   r   r   r%   r&   r'   r(   r  r    s        -f4-f4"99V!`aNOLM$O $O $O O /yyQRabbcWXABqrGH0J 0J 0J J 399VPQWX^_3`3`3``9&@B BJJJr'   r     c                   N    e Zd Z ed e ed                    z            ZdS )PlmnListr  r?   N)r"   r#   r$   r   r   r   r%   r&   r'   r(   r  r    s4        Y{{5588'<'<<==JJJr'   r     c                   v    e Zd Z e ed          dddd          Z edez  d ed          z            Zd	S )
EcatSequenceNumberr=   r   r;   r?   )r   terminal_response envelope_profile_container_event#envelope_profile_container_responsecommand_type_indicatorcounterrQ   N)r"   r#   r$   r
   r   CmdTypeIndicatorr   r%   r&   r'   r(   r"  r"    si        tKKNNa>?MNPQS S S 34DD$[[__46 6JJJr'   r"     c                       e Zd ZeZdS )EncryptedTlvListNr  r&   r'   r(   r+  r+    r  r'   r+  c                       e Zd ZeZdS )MacNr  r&   r'   r(   r-  r-    r  r'   r-     c                       e Zd ZeZdS )
SaTemplateNr  r&   r'   r(   r0  r0    r  r'   r0     c                   ,    e Zd Z eeddd          ZdS )RefreshEnforcementPolicyr   r;   r=   )even_if_navigating_menuseven_if_data_calleven_if_voice_callN)r"   r#   r$   r   r   r%   r&   r'   r(   r3  r3    s'        4!qefgggJJJr'   r3     c                       e Zd ZeZdS )DnsServerAddressNr  r&   r'   r(   r9  r9    r  r'   r9     c                   h    e Zd Z edej        z  d eed          z            Z e	e          Z
dS ) SupportedRadioAccessTechnologies
technologystater   )r  N)r"   r#   r$   r	   rv  r  r   r   AccessTechTupler   r%   r&   r'   r(   r<  r<    sR        f\*:*KK$YYvq%A%A%AAC CO_--JJJr'   r<  c                       e Zd ZdS )ApplicationSpecificRefreshDataNr-   r&   r'   r(   rA  rA    r2   r'   rA     c                       e Zd ZdS )ImsUriNr-   r&   r'   r(   rD  rD    r2   r'   rD  c                   *    e Zd Z eedd          ZdS )	MediaTyper   r;   )voicevideoN)r"   r#   r$   r   r   r%   r&   r'   r(   rF  rF    s$        6!444JJJr'   rF     c                   ,    e Zd Z eeddd          ZdS )DataConnectionStatusr   r;   r=   )
successfulrejecteddropped_or_deactivatedNr  r&   r'   r(   rK  rK    s&        fQqQQQJJJr'   rK     c                   ,    e Zd Z eeddd          ZdS )DataConnectionTyper   r;   r=   )pdppdnpduNr  r&   r'   r(   rQ  rQ    s&        f!222JJJr'   rQ     c                       e Zd ZeZdS )SmCauseNr  r&   r'   r(   rW  rW    r  r'   rW     c                       e Zd ZdS )SMSPPDownloadNr-   r&   r'   r(   rZ  rZ    r.   r'   rZ  )r*   nestedc                       e Zd ZdS )SMSCBDownloadNr-   r&   r'   r(   r]  r]    r.   r'   r]  c                       e Zd ZdS )MenuSelectionNr-   r&   r'   r(   r_  r_    r.   r'   r_     c                       e Zd ZdS )BcRepeatIndicatorNr-   r&   r'   r(   rb  rb    r2   r'   rb  *   c                       e Zd ZdS )CallControlNr-   r&   r'   r(   re  re             	Dr'   re  c                       e Zd ZdS )MoShortMessageControlNr-   r&   r'   r(   rh  rh    r2   r'   rh     c                       e Zd ZdS )TransactionIdentifierNr-   r&   r'   r(   rk  rk    r2   r'   rk  r  c                       e Zd ZdS )ImsURINr-   r&   r'   r(   rm  rm    r2   r'   rm  c                       e Zd ZdS )UriTruncatedNr-   r&   r'   r(   ro  ro    r2   r'   ro  c                       e Zd ZdS )TrackingAreaIdentificationNr-   r&   r'   r(   rq  rq  #  r2   r'   rq  }   c                       e Zd ZdS )ExtendedRejectionCauseCodeNr-   r&   r'   r(   rt  rt  '  r2   r'   rt  rb  c                       e Zd ZdS )CsgCellSelectionStatusNr-   r&   r'   r(   rv  rv  +  r2   r'   rv  U   c                       e Zd ZdS )CsgIdNr-   r&   r'   r(   ry  ry  /  r2   r'   ry  V   c                       e Zd ZdS )HnbNameNr-   r&   r'   r(   r|  r|  3  r2   r'   r|  c                       e Zd ZdS )PlmnIdNr-   r&   r'   r(   r~  r~  7  r2   r'   r~  r  c                       e Zd ZdS )ImsCallDisconnectionStatusNr-   r&   r'   r(   r  r  ;  r2   r'   r  c                       e Zd ZdS )IariNr-   r&   r'   r(   r  r  ?  r2   r'   r  v   c                       e Zd ZdS )ImpuListNr-   r&   r'   r(   r  r  C  r2   r'   r  w   c                       e Zd ZdS )ImsStatusCodeNr-   r&   r'   r(   r  r  G  r2   r'   r  c                       e Zd ZdS )DateTimeAndTimezoneNr-   r&   r'   r(   r  r  K  r2   r'   r  c                       e Zd ZdS )PdpPdnPduTypeNr-   r&   r'   r(   r  r  O  r2   r'   r  r  c                       e Zd ZdS )GadShapeNr-   r&   r'   r(   r  r  S  r2   r'   r  c                       e Zd ZdS )NmeaSentenceNr-   r&   r'   r(   r  r  W  r2   r'   r  x   c                       e Zd ZdS )WlanAccessStatusNr-   r&   r'   r(   r  r  [  r2   r'   r  K   c                       e Zd ZdS )EventDownloadNr-   r&   r'   r(   r  r  _  s        ^ 	Dr'   r     c                       e Zd ZdS )TimerExpirationNr-   r&   r'   r(   r  r    r2   r'   r     c                       e Zd ZdS )USSDDownloadNr-   r&   r'   r(   r  r    r.   r'   r     c                       e Zd ZdS )MmsTransferStatusNr-   r&   r'   r(   r  r    r2   r'   r     c                       e Zd ZdS )MmsNotificationDownloadNr-   r&   r'   r(   r  r    r2   r'   r     c                       e Zd ZdS )TerminalApplicationNr-   r&   r'   r(   r  r    r2   r'   r     c                       e Zd ZdS )GeographicalLocationNr-   r&   r'   r(   r  r    r.   r'   r     c                       e Zd ZdS )EnvelopeContainerNr-   r&   r'   r(   r  r    r2   r'   r     c                       e Zd ZdS )ProSeReportNr-   r&   r'   r(   r  r    r2   r'   r     c                       e Zd ZdefdZdS )ProactiveCmdreturnc                     dS )Nr  r&   r   s    r(   _compute_tagzProactiveCmd._compute_tag  s    tr'   N)r"   r#   r$   intr  r&   r'   r(   r  r    s/        c      r'   r  c                       e Zd ZdS )EventCollectionNr-   r&   r'   r(   r  r             	Dr'   r  )r[  c                       e Zd ZdS )RefreshNr-   r&   r'   r(   r  r    r  r'   r  c                       e Zd ZdS )MoreTimeNr-   r&   r'   r(   r  r    r.   r'   r  c                       e Zd ZdS )PollIntervalNr-   r&   r'   r(   r  r    r.   r'   r  c                       e Zd ZdS )
PollingOffNr-   r&   r'   r(   r  r    r.   r'   r  c                       e Zd ZdS )SetUpEventListNr-   r&   r'   r(   r  r    r.   r'   r  c                       e Zd ZdS )	SetUpCallNr-   r&   r'   r(   r  r    r  r'   r  c                       e Zd ZdS )SendSSNr-   r&   r'   r(   r  r    rf  r'   r  c                       e Zd ZdS )SendUSSDNr-   r&   r'   r(   r  r    rf  r'   r  c                       e Zd ZdS )SendShortMessageNr-   r&   r'   r(   r  r    rf  r'   r  c                       e Zd ZdS )SendDTMFNr-   r&   r'   r(   r  r    rf  r'   r  c                       e Zd ZdS )LaunchBrowserNr-   r&   r'   r(   r  r    r  r'   r  c                       e Zd ZdS )GeographicalLocationRequestNr-   r&   r'   r(   r  r     r.   r'   r  c                       e Zd ZdS )PlayToneNr-   r&   r'   r(   r  r    rf  r'   r  c                       e Zd ZdS )DisplayTextNr-   r&   r'   r(   r  r    rf  r'   r  c                       e Zd ZdS )GetInkeyNr-   r&   r'   r(   r  r    rf  r'   r  c                       e Zd ZdS )GetInputNr-   r&   r'   r(   r  r    rf  r'   r  c                       e Zd ZdS )
SelectItemNr-   r&   r'   r(   r  r    r  r'   r  c                       e Zd ZdS )	SetUpMenuNr-   r&   r'   r(   r  r  $  r  r'   r  c                       e Zd ZdS )ProvideLocalInformationNr-   r&   r'   r(   r  r  +  r.   r'   r  c                       e Zd ZdS )TimerManagementNr-   r&   r'   r(   r  r  0  r.   r'   r  c                       e Zd ZdS )SetUpIdleModeTextNr-   r&   r'   r(   r  r  5  rf  r'   r  c                       e Zd ZdS )PerformCardApduNr-   r&   r'   r(   r  r  ;  r.   r'   r  c                       e Zd ZdS )PowerOnCardNr-   r&   r'   r(   r  r  @  r.   r'   r  c                       e Zd ZdS )PowerOffCardNr-   r&   r'   r(   r  r  E  r.   r'   r  c                       e Zd ZdS )GetReaderStatusNr-   r&   r'   r(   r  r  J  r.   r'   r  c                       e Zd ZdS )RunAtCommandNr-   r&   r'   r(   r  r  O  rf  r'   r  c                       e Zd ZdS )LanguageNotificationNr-   r&   r'   r(   r  r  U  r.   r'   r  c                       e Zd ZdS )OpenChannelNr-   r&   r'   r(   r  r  Z  s        
 	Dr'   r  c                       e Zd ZdS )CloseChannelNr-   r&   r'   r(   r  r  b  rf  r'   r  c                       e Zd ZdS )ReceiveDataNr-   r&   r'   r(   r  r  h  rf  r'   r  c                       e Zd ZdS )SendDataNr-   r&   r'   r(   r  r  n  rf  r'   r  c                       e Zd ZdS )GetChannelStatusNr-   r&   r'   r(   r  r  t  r.   r'   r  c                       e Zd ZdS )ServiceSearchNr-   r&   r'   r(   r  r  y  rf  r'   r  c                       e Zd ZdS )GetServiceInformationNr-   r&   r'   r(   r  r    rf  r'   r  c                       e Zd ZdS )DeclareServiceNr-   r&   r'   r(   r  r    r.   r'   r  c                       e Zd ZdS )	SetFramesNr-   r&   r'   r(   r  r    r.   r'   r  c                       e Zd ZdS )GetFramesStatusNr-   r&   r'   r(   r  r    r.   r'   r  c                       e Zd ZdS )RetrieveMultimediaMessageNr-   r&   r'   r(   r  r    r  r'   r  c                       e Zd ZdS )SubmitMultimediaMessageNr-   r&   r'   r(   r  r    rf  r'   r  c                       e Zd ZdS )DisplayMultimediaMessageNr-   r&   r'   r(   r	  r	    rf  r'   r	  c                       e Zd ZdS )ActivateNr-   r&   r'   r(   r  r    r.   r'   r  c                       e Zd ZdS )ContactlessStateChangedNr-   r&   r'   r(   r  r    r.   r'   r  c                       e Zd ZdS )CommandContainerNr-   r&   r'   r(   r  r    r.   r'   r  c                       e Zd ZdS )EncapsulatedSessionControlNr-   r&   r'   r(   r  r    r.   r'   r  c                       e Zd Zd ZdS )ProactiveCommandBasec                 V    | j         D ] }t          |          j        dk    r|c S  d S d S )Nr   )childrentyper"   )r   cs     r(   find_cmd_detailsz%ProactiveCommandBase.find_cmd_details  sB     	 	AAww#333tt		 	r'   N)r"   r#   r$   r  r&   r'   r(   r  r    s#            r'   r  c                   L    e Zd ZdZi fdededee         fdZd Z	i fdefdZ
dS )	ProactiveCommandao  Class representing a CAT proactive command, as (for example) sent via a FETCH response. Parsing this is
    more difficult than any normal TLV IE Collection, because the content of one of the IEs defines the
    definitions of all the other IEs.  So we first need to find the CommandDetails, and then parse according
    to the command type indicated in that IE data.binarycontextr  c                 F   t                      }|                    |           |                                }t          j        |j        d                  }|| j        v r7| j        |         } |            }|                    |          \  }}	|| _        n|| _        | j        S )Nr   )r  from_tlvr  r   
encmappingr   members_by_tag)
r   r  r  pcmdcmd_detailscmd_typeclsinst_dec	remainders
             r(   
from_byteszProactiveCommand.from_bytes  s    #%%f++-- +K,?@Q,RSt***%h/C355D"mmF33OD)DLLDL|r'   c                 4    | j                                         S N)r   to_dictr  s    r(   r+  zProactiveCommand.to_dict  s    |##%%%r'   c                 4    | j                                         S r*  )r   to_tlv)r   r  s     r(   to_byteszProactiveCommand.to_bytes  s    |""$$$r'   N)r"   r#   r$   __doc__r   dictr   r   r(  r+  r.  r&   r'   r(   r  r    s        6 6 9;    tF|    && & & (* % % % % % % % %r'   r  c                       e Zd ZdS )TerminalResponseNr-   r&   r'   r(   r2  r2    s         	Dr'   r2  zProfile downloadzSMS-PP data downloadzCell Broadcast data downloadzMenu selectionr   zTimer expirationr   z$USSD string DO support in CC by USIMr   zCall Control by NAAzCommand resultr  r  z MO short message control supportr  r  zUCS2 Entry supportedr  zUCS2 Display supportedzDisplay TextzProactive UICC: DISPLAY TEXTzProactive UICC: GET INKEYzProactive UICC: GET INPUTzProactive UICC: MORE TIMEzProactive UICC: PLAY TONEzProactive UICC: POLL INTERVALr   zProactive UICC: POLLING OFFr  zProactive UICC: REFRESHr  zProactive UICC: SELECT ITEM   z5Proactive UICC: SEND SHORT MESSAGE with 3GPP-SMS-TPDUr  zProactive UICC: SEND SSzProactive UICC: SEND USSDr  zProactive UICC: SET UP CALL   zProactive UICC: SET UP MENU   zIProactive UICC: PROVIDE LOCAL INFORMATION (MCC, MNC, LAC, Cell ID & IMEI)z/Proactive UICC: PROVIDE LOCAL INFORMATION (NMR)z!Proactive UICC: SET UP EVENT LISTzEvent: MT callzEvent: Call connectedzEvent: Call disconnectedzEvent: Location statuszEvent: User activityzEvent: Idle screen availablezEvent: Card reader status)   zEvent: Language selectionzEvent: Browser Termination+   zEvent: Data aailable,   zEvent: Channel status-   zEvent: Access Technology Change.   z!Event: Display parameters changed/   zEvent: Local Connectionz!Event: Network Search Mode ChangezProactive UICC: POWER ON CARDzProactive UICC: POWER OFF CARDz"Proactive UICC: PERFORM CARD RESETz6Proactive UICC: GET READER STATUS (Card reader status)z:Proactive UICC: GET READER STATUS (Card reader identifier)r   z.Proactive UICC: TIMER MANAGEMENT (start, stop)r   z4Proactive UICC: TIMER MANAGEMENT (get current value)r   zDProactive UICC: PROVIDE LOCAL INFORMATION (date, time and time zone)r   z	GET INKEYr   zSET UP IDLE MODE TEXTr   zRUN AT COMMANDr   z
SETUP CALLzDISPLAY TEXTzSEND DTMF commandz4Proactive UICC: PROVIDE LOCAL INFORMATION (language)z:Proactive UICC: PROVIDE LOCAL INFORMATION (Timing Advance)z%Proactive UICC: LANGUAGE NOTIFICATIONzProactive UICC: LAUNCH BROWSERH   z=Proactive UICC: PROVIDE LOCAL INFORMATION (Access Technology)I   z!Soft keys support for SELECT ITEMJ   z&Soft keys support for SET UP MENU ITEMY   zProactive UICC: OPEN CHANNELZ   zProactive UICC: CLOSE CHANNEL[   zProactive UICC: RECEIVE DATA\   zProactive UICC: SEND DATA]   z"Proactive UICC: GET CHANNEL STATUS^   zProactive UICC: SERVICE SEARCH_   z'Proactive UICC: GET SERVICE INFORMATIONzProactive UICC: DECLARE SERVICEzBIP supported Bearer: CSDzBIP supported Bearer: GPRSc   zBIP supported Bearer: Bluetoothd   zBIP supported Bearer: IrDAe   zBIP supported Bearer: RS232z0BIP: TCP, UICC in client mode, remote connectionz0BIP: UDP, UICC in client mode, remote connectionzBIP: TCP, UICC in server modez/BIP: TCP, UICC in client mode, local connectionz/BIP: UDP, UICC in client mode, local connectionz!BIP: direct communication channel)r   r   r   r/   r)   N)r/  typingr   r   	constructr   r   r   r   r	   r
   r   r   r   r   r   osmocom.tlvr   r   r   r   osmocom.constructr   r   r   r   r   r   r   osmocom.utilsr   r   pySim.utilsr   r   r,   r1   r5   r8   r   r   r   r   r   r   r   r   rT  rY  r]  rc  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r#  rP  rS  rV  rY  r\  rf  rr  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r+  r-  r0  r3  r9  r<  rA  rD  rF  rK  rQ  rW  rZ  r]  r_  rb  re  rh  rk  rm  ro  rq  rt  rv  ry  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r2  term_prof_bitsr&   r'   r(   <module>rP     s?1  # #(             8 8 8 8 8 8 8 8 8 8 8 8 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 K K K K K K K K K K K K n n n n n n n n n n n n n n n n n n " " " " " " " " ' ' ' ' ' '
? ? ? ? ?l ? ? ? ?
	 	 	 	 	l 	 	 	 	
	 	 	 	 	4 	 	 	 		 	 	 	 	\t 	 	 	 		 	 	 	 	l 	 	 	 	 V P P PTT PTT P P[_[_ P'+tP9=PGKtPW[W[P(,P8<PMQTPdhdhP  $tP 37$P CG$P SWRVP eidhP "&	P ;?$	P RVQU	P
 ,04P
 DH4P
 X\W[P %)DP =ADP RVQUP ,04P ?CdP SWRVP fjeiP  $tP 9=P NRTP eidhP &*TP 7;dP OSdP bfaeP !%P 37$P BFP bfaeP (,tP KO$P4 4 4 4 4\t 4 4 4 4.! .! .! .! .!| .! .! .! .!b0 0 0 0 0| 0 0 0 0
E E E E E<T E E E E
- - - - -\t - - - -1 1 1 1 1\t 1 1 1 1
r1 r1 r1 r1 r1\t r1 r1 r1 r1j, , , , ,| , , , ,C C C C C| C C C C
3 3 3 3 34 3 3 3 3< < < < <<T < < < <>3 3 3 3 34 3 3 3 3
5 5 5 5 5| 5 5 5 5	 	 	 	 	,D 	 	 	 	) ) ) ) )<T ) ) ) )	 	 	 	 	,D 	 	 	 	) ) ) ) )$ ) ) ) )3 3 3 3 3,D 3 3 3 3
% % % % %| % % % %$ $ $ $ $$ $ $ $ $D	 	 	 	 	Ld 	 	 	 	Q Q Q Q Q\t Q Q Q Q2 2 2 2 2\t 2 2 2 2
@ @ @ @ @\t @ @ @ @
    Ld        l    I I I I I4 I I I I    $    	 	 	 	 	$ 	 	 	 	) ) ) ) )4 ) ) ) )    |    1 1 1 1 1Ld 1 1 1 1
J J J J Jl J J J J( ( ( ( (,D ( ( ( (+ + + + +\t + + + +
    $    G G G G Gl G G G G-M -M -M -M -M$ -M -M -M -M`    ,d        D        T        L    / / / / /<t / / / // / / / /T / / / /+ + + + +,D + + + +/ / / / /| / / / /6 6 6 6 6Ld 6 6 6 65 5 5 5 5<T 5 5 5 5
6 6 6 6 6l 6 6 6 6
= = = = =<T = = = =/ / / / /,D / / / /
    $    	 	 	 	 	Ld 	 	 	 		 	 	 	 	4 	 	 	 		: 	: 	: 	: 	:l 	: 	: 	: 	:5 5 5 5 5$ 5 5 5 5L L L L L<T L L L LD D D D D,D D D D D% % % % %Ld % % % %- - - - -l - - - -    4        ,D        ,D    ) ) ) ) )4 ) ) ) )    <T    5 5 5 5 5Ld 5 5 5 5& & & & &$ & & & &J J J J J<T J J J J*    4    B B B B B\t B B B B"> > > > >| > > > >6 6 6 6 64 6 6 6 6    |        ,D        4    h h h h h| h h h h    |    . . . . .| . . . .	 	 	 	 	\t 	 	 	 		 	 	 	 	\t 	 	 	 	5 5 5 5 5$ 5 5 5 5R R R R R<T R R R R3 3 3 3 34 3 3 3 3    l    
	 	 	 	 	JD,gx@	 	 	 	
	 	 	 	 	JD,g6	 	 	 	
	 	 	 	 	JD,nkJ	 	 	 		 	 	 	 	
 	 	 	 		 	 	 	 	*$*G5KZ-/@B	 	 	 		 	 	 	 	JD 	 	 	 	
	 	 	 	 	JD 	 	 	 		 	 	 	 	ZT 	 	 	 		 	 	 	 	:4 	 	 	 		 	 	 	 	 	 	 	 		 	 	 	 	 	 	 	 		 	 	 	 	ZT 	 	 	 		 	 	 	 	JD 	 	 	 		 	 	 	 	jd 	 	 	 		 	 	 	 	ZT 	 	 	 		 	 	 	 	 	 	 	 		 	 	 	 	:4 	 	 	 		 	 	 	 	zt 	 	 	 		 	 	 	 	JD 	 	 	 		 	 	 	 	*$ 	 	 	 		 	 	 	 	JD 	 	 	 		 	 	 	 	zt 	 	 	 		 	 	 	 	:4 	 	 	 		 	 	 	 	zt 	 	 	 	/	 /	 /	 /	 /	JD-I -'7 -,- 2	- 4;	-
 '-
 )/-
 1:-
 <H- 0- 2K- Mg- -- /K- M_- 7- 3- 5:- <C- EK-" 7#-2 *3-2 ,=3-D !E-H %I-H '4I-N 1O-N 3EO-N GNO-R 0S-R 2@S-R BSS-R UbS-/	 /	 /	 /	d	 	 	 	 	jd 	 	 	 		 	 	 	 	:4+Z8	 	 	 	
	 	 	 	 	
 	 	 	 		 	 	 	 	jd 	 	 	 		 	 	 	 	*$ 	 	 	 		 	 	 	 	:4#3X|"L	 	 	 	
	 	 	 	 	
 	 	 	 		 	 	 	 	*$ 	 	 	 	    :   
	 	 	 	 	'+]+[:O*,@+O	 	 	 		 	 	 	 	l$&6#$m_F^4lHN	 	 	 		 	 	 	 	| 01	 	 	 	
	 	 	 	 	<T 0(;	 	 	 	
	 	 	 	 	4 01	 	 	 	
	 	 	 	 	\t 0)<	 	 	 	
	 	 	 	 	$ 0/7F&
Hno	;	 	 	 		 	 	 	 	\t 0/8^0	 	 	 		 	 	 	 	| 0/:~0	 	 	 		 	 	 	 	|-/?RY'Y	 	 	 		 	 	 	 	| 0/NM?L	 	 	 		 	 	 	 	Ld 0/3PiO^]O!#	 	 	 		 	 	 	 	,D	 	 	 	
	 	 	 	 	| 0/hP	 	 	 		 	 	 	 	,D(*:J+X}oW	 	 	 		 	 	 	 	| 0*nh0	 	 	 		 	 	 	 	| 0*nkJ	 	 	 		 	 	 	 	4 0/(..J`4oG	 	 	 		 	 	 	 	$ 0/(.:P46	 	 	 		 	 	 	 	l 01	 	 	 	
	 	 	 	 	l 0/:N	 	 	 	
	 	 	 	 	$ 0*nm!	 	 	 		 	 	 	 	l 0%8	 	 	 	
	 	 	 	 	,D 01	 	 	 	
	 	 	 	 	<T 01	 	 	 	
	 	 	 	 	l 01	 	 	 	
	 	 	 	 	<T 0/9n0	 	 	 		 	 	 	 	<T 0(;	 	 	 	
	 	 	 	 	,D 0/>SZ\f+Z9JL.0C]!	 	 	 		 	 	 	 	<T 0/>S`!	 	 	 		 	 	 	 	,D 0/>Sd0	 	 	 		 	 	 	 	| 0/>S^0	 	 	 		 	 	 	 	| 01	 	 	 	
	 	 	 	 	Ld 0/>Sbm_>	 	 	 		 	 	 	 	Ld 0/>Sg0	 	 	 		 	 	 	 	\t 0-AST	 	 	 	
	 	 	 	 	$ 0/;O	 	 	 	
	 	 	 	 	l 01	 	 	 	
	 	 	 	 	$ 0/C]-/JM!	 	 	 		 	 	 	 	l 0/>S[+]OM	 	 	 		 	 	 	 	| 0(<W!?4	 	 	 		 	 	 	 	| 02DE	 	 	 	
	 	 	 	 	l 02OP	 	 	 	
	 	 	 	 	| 02DcK[\	 	 	 	
	 	 	 	 	4 0*=	 	 	 	    :48H    '% '% '% '% '%(
;w 
; 
;, 
;
 
;N 
;\e 
;%
;'/
;1A
;CK
;MZ
;:
;<D
;FQ
;S[
;]e
;  *
; ,5
; 7N
; P_
;  1	
; 3B	
; DO	
; Q]	
;
  /
;
 1=
;
 ?S
;
 U`
;  ,
; .9
; ;C
; EU
; Wd
;  5
; 7E
; GP
; Ra
;  9
; ;R
; Tl
;  (
; *A
; CS
;  :
;'% '% '% '%T	 	 	 	 	(-/?'^*,=,j:K	!	 	 	 	  %	
    -     *  !" #$  %& ', &- . #/0 #12 #34 #56 '78 %9: !;@ %AB ?CD !EF #GH %IJ %KL SMN 9OT +UV W  X YZ "[\  ]^ _` &ab #ch #ij $kl mn op )qr +st !uv +w| '}~ (@ ,A  B @CD DEL 8MN >OP NQR ST UV WX YZ [` ab cd 9ef >gh Dij /kl (m  n Got +uv 0wB &CD 'EF &GH #IJ ,KL (MN 1OP )QV #WX $YZ )[\ 	%]^ 	&_l 	;m n 
<	(	:	:	,w  r'   