L iѽBUddlmZddlZddlZddlZddlZddlZddlmZddl m Z m Z m Z ddl mZddlmcmZddlmZmZmZddlmZddlmZdd lmZmZdd lmZdd l m!Z!dd l"m#Z#m$Z$m%Z%m&Z&m'Z'dd l(m)Z)ddl*m+Z+ddl,m-Z-m.Z.ddl/m0Z0ddl1m2Z2ddl3m4Z4m5Z5m6Z6ddl7m8Z8ddl9m:Z:ddl;mZ>ddl?m@Z@e r,ddlAmBZBddlCmDZDddlEmFZFddlGmHZHddlImJZJddlKmLZLddlMmNZNmOZOeePZQdeRd <Gd!d"eZSd*d#ZTGd$d%ZUd+d&ZVd,d'ZWd-d.d(ZXd/d)ZYy)0) annotationsN)Enum) TYPE_CHECKINGAnyFinal) ParseDict)configenv_utilruntime) get_logger) ClientState)FileURLsFileURLsRequest) ForwardMsg)GitInfo)ConfigCustomThemeConfigFontFace NewSessionUserInfo)caching)ForwardMsgQueue)FragmentStorageMemoryFragmentStorage) Installation) PagesManager) RerunData ScriptRunnerScriptRunnerEvent)secrets_singleton)parse_fonts_with_source) to_snake_case)STREAMLIT_VERSION_STRING)LocalSourcesWatcher)Callable)BackMsg) ScriptData) ScriptCache SessionState)UploadedFileManager)PageHashPageInfor_LOGGERceZdZdZdZdZy)AppSessionStateAPP_NOT_RUNNINGAPP_IS_RUNNINGSHUTDOWN_REQUESTEDN)__name__ __module__ __qualname__r1r2r3c/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/streamlit/runtime/app_session.pyr0r0Bs'O%N-r8r0c<ttjS)z5Randomly generate a unique ID for a script execution.)struuiduuid4r7r8r9_generate_scriptrun_idr>Hs tzz| r8ceZdZdZ d$ d%dZd&dZd&dZd&dZd'dZd&dZ d(d Z d)d Z d*d Z d+d Z d&d Zd&dZd,dZed-dZd.dZd$d/dZd0dZd$d1dZ d2 d3dZ d2 d3dZd4dZd4dZ d5 d6dZ d7dZd8dZd&dZ d$ d+dZd&dZ d&dZ!d&d Z"d9d!Z#d:d"Z$ d;d#Z%y)< AppSessiona! Contains session data for a single "user" of an active app (that is, a connected browser tab). Each AppSession has its own ScriptData, root DeltaGenerator, ScriptRunner, and widget state. An AppSession is attached to each thread involved in running its script. Nc|xsttj|_t j |_||_||_||_ t|j|j|_ t|_||_t j"|_t'|_d|_d|_d|_t1j2ddk7r|j5t1j2d|_d|_ddlm}||_||_ d|_!tE|_#tHjKd|jy)aInitialize the AppSession. Parameters ---------- script_data Object storing parameters related to running a script uploaded_file_manager Used to manage files uploaded by users via the Streamlit web client. script_cache The app's ScriptCache instance. Stores cached user scripts. ScriptRunner uses the ScriptCache to avoid having to reload user scripts from disk on each rerun. message_enqueued_callback After enqueuing a message, this callable notification will be invoked. user_info A dict that contains information about the current user. For now, it only contains the user's email address. { "email": "example@example.com" } Information about the current user is optionally provided when a websocket connection is initialized via the "X-Streamlit-User" header. session_id_override The ID to assign to this session. Setting this can be useful when the service that a Streamlit Runtime is running in wants to tie the lifecycle of a Streamlit session to some other session-like object that it manages. Nzserver.fileWatcherTypenonezserver.runOnSaverr)zAppSession initialized (id=%s))&r;r<r=idasyncioget_running_loop _event_loop _script_data_uploaded_file_mgr _script_cachermain_script_path_pages_managerr_browser_queue_message_enqueued_callbackr0r1_stater _client_state_local_sources_watcher_stop_config_listener_stop_pages_listenerr get_optionregister_file_watchers _run_on_save _scriptrunnerstreamlit.runtime.stater*_session_state _user_info_debug_last_backmsg_idr_fragment_storager.debug)self script_datauploaded_file_manager script_cachemessage_enqueued_callback user_infosession_id_overrider*s r9__init__zAppSession.__init__Ys!Z&:TZZ\):"335'"7)*  ( ($*<*< ./*C'%55 )]BF#@D"?C!   5 6& @  ' ' )"--.@A26 9*n#26#2G2I 6@r8c$|jy)zGEnsure that we call shutdown() when an AppSession is garbage collected.N)shutdownr]s r9__del__zAppSession.__del__s  r8c8|jt|j|_|jj|jt j |jd|_tjj|jy)a4Register handlers to be called when various files are changed. Files that we watch include: - source files that already exist (for edits) - `.py` files in the main script's `pages/` directory (for file additions and deletions) - project and user-level config.toml files - the project-level secrets.toml files This method is called automatically on AppSession construction, but it may be called again in the case when a session is disconnected and is being reconnect to. NT) force_connect) rPr$rKregister_file_change_callback_on_source_file_changedr on_config_parsedrQr file_change_listenerconnect_on_secrets_file_changedrgs r9rTz!AppSession.register_file_watcherss|  & & .*=d>Q>Q*RD ' ##AA  ( ( &,%<%<  ( (& " ..66t7T7TUr8c<|j|jj|j|j|j|jtj j |jd|_d|_d|_y)zJDisconnect the file watcher handlers registered by register_file_watchers.N)rPcloserQrRr rn disconnectrprgs r9disconnect_file_watchersz#AppSession.disconnect_file_watcherss  & & 2  ' ' - - /  % % 1  & & (  $ $ 0  % % '..99$:W:WX&*#%)"$(!r8c6|jjS)aiClear the forward message queue and return the messages it contained. The Server calls this periodically to deliver new messages to the browser connected to this app. Returns ------- list[ForwardMsg] The messages that were removed from the queue and should be delivered to the browser. )rLflushrgs r9flush_browser_queuezAppSession.flush_browser_queues""((**r8c|jtjk7rtj d|j |j j|j tjrStj}|jj|j |jj|jtj|_|jyy)ziShut down the AppSession. It's an error to use a AppSession after it's been shut down. zShutting down (id=%s)N)rNr0r3r.r\rCrHremove_session_filesr exists get_instancemedia_file_mgrclear_session_refsremove_orphaned_filesrequest_script_stoprt)r]rts r9rfzAppSession.shutdowns ;;/<< < MM1477 ;  # # 8 8 A~~))+!!44TWW=!!779  $ $ &)<),,252K2KD/11#2B2BC_,446]*002_,224..44S5H5HI]*00200..s/D/DE 5x@ .   = >  ) )" - - .sBADD'D=D D4D D+D D; &D66D;cFjjtjjjtjdjjtjj j fdy)zGHandle an Exception raised while processing a BackMsg from the browser.)page_script_hashcDjjSN)r_create_exception_message)er]sr9z5AppSession.handle_backmsg_exception..TsD--d.L.LQ.OPr8N)_on_scriptrunner_eventrVrSCRIPT_STOPPED_WITH_SUCCESSSCRIPT_STARTEDrFcall_soon_threadsafe)r]rs``r9rz#AppSession.handle_backmsg_exception:s ##    1 M M  ##     , , $ ##    1 M M  -- P r8c ^|jtjk(rtj dy|r|j }|r2|j j|stjd|y|jdr/|jjj|jt|j|j|j |j"|r|nd|j$t'|j(|j}n t}|j*jt-t/j0dr.|j s"|j*j3d|_n|j*j5|}|ry|j7|y)aSignal that we're interested in running the script. If the script is not already running, it will be started immediately. Otherwise, a rerun will be requested. Parameters ---------- client_state : streamlit.proto.ClientState_pb2.ClientState | None The ClientState protobuf to run the script with, or None to use previous client state. z'Discarding rerun request after shutdownNznThe fragment with id %s does not exist anymore - it might have been removed during a preceding full-app rerun. context_info) query_string widget_statesr page_name fragment_id is_auto_reruncached_message_hashesrzrunner.fastReruns)rNr0r3r.rrr[containsinfoHasFieldrOrCopyFromrrrrrrsetrrVboolr rS request_stop request_rerun_create_scriptrunner)r] client_stater rerun_datasuccesss r9rzAppSession.request_rerunWse ;;/<< < OOE F  &22K"4#9#9#B#B;#O T $$^4""//889R9RS")66*88!-!>!>&00+6KD*88&),*L*L&M)66 J#J    )V&&':;<".. ""//1%)" ,,:::F !!*-r8cR|j|jjyy)zgRequest that the scriptrunner stop execution. Does nothing if no scriptrunner exists. N)rVrrgs r9rzAppSession.request_script_stops'    )    + + - *r8c8|jjy)z%Clear the user info for this session.N)rYclearrgs r9clear_user_infozAppSession.clear_user_infos r8c |t|j|jj|j|j |j ||j|j|j |_ |jjj|j|jjy)z;Create and run a new ScriptRunner with the given RerunData.) session_idrJ session_stateuploaded_file_mgrr`initial_rerun_datarbfragment_storage pages_managerN)rrCrGrJrXrHrIrYr[rKrVon_eventrorstart)r]rs r9rzAppSession._create_scriptrunners)ww!..??--"55++1oo!33--   ##++D,G,GH   "r8c|jSr)rXrgs r9rzAppSession.session_states"""r8c|jjttfdd}||jj }||k(Sy)Nc|dk(S)N script_pathr7)kfilepathpagess r9rz9AppSession._should_rerun_on_file_change..sU1Xm4@r8T)rK get_pagesnextfilterrOr)r]rchanged_page_script_hashcurrent_page_script_hashrs ` @r9_should_rerun_on_file_changez'AppSession._should_rerun_on_file_changesY##--/#' @% H $  $ /'+'9'9'J'J $+/GG Gr8c|jj||j|sy|jr|j |j y|j |jy)zfOne of our source files changed. Clear the cache and schedule a rerun if appropriate. N)rIrrrUrrOr_create_file_change_message)r]rs r9rlz"AppSession._on_source_file_changeds`   "  (I(I((S       t11 2  % %d&F&F&H Ir8c$|jy)z:Called when `secrets.file_change_listener` emits a Signal.N)rl)r]_s r9rpz#AppSession._on_secrets_file_changeds $$&r8c>|jjd|y)NT)retain_lifecycle_msgsfragment_ids_this_run)rLr)r]rs r9 _clear_queuezAppSession._clear_queues! !!"&>S " r8c bjjf dy)aCalled when our ScriptRunner emits an event. This is generally called from the sender ScriptRunner's script thread. We forward the event on to _handle_scriptrunner_event_on_event_loop, which will be called on the main thread. c 4 jSr)(_handle_scriptrunner_event_on_event_loop) reventr forward_msgrrrr]senders r9rz3AppSession._on_scriptrunner_event.. s*DAA % r8N)rFr) r]rrrrrrrrs `````````r9rz!AppSession._on_scriptrunner_events$" --   r8c h|jtjk7r td||jurt j d|y|j} |tjk(r|jtjk7rtj|_| td||jjk7r||j_|j||j!|||} |j#| n|tj$tj&tj(hvrj|jtjk7rtj*|_|tj$k(rt,j.} n4|tj(k(rt,j0} nt,j2} |j#|j5| d|_|tj$tj(hvrC|j8r|j8j;|j8j=n| tdt-} t?j@| jBjD||j#| n1|tjFk(rjtj*|_|j#|j5t,jH|j8r|j8j;n|tjJk(rp| td|jtjk(r7tMjNjPjS|jT||_ d|_n1|tjVk(r| td|j#|| tjk(} |jtjk(} | | k7r |j#|jYyy)a#Handle a ScriptRunner event. This function must only be called on our eventloop thread. Parameters ---------- sender : ScriptRunner | None The ScriptRunner that emitted the event. (This may be set to None when called from `handle_backmsg_exception`, if no ScriptRunner was active when the backmsg exception was raised.) event : ScriptRunnerEvent The event type. forward_msg : ForwardMsg | None The ForwardMsg to send to the frontend. Set only for the ENQUEUE_FORWARD_MSG event. exception : BaseException | None An exception thrown during compilation. Set only for the SCRIPT_STOPPED_WITH_COMPILE_ERROR event. client_state : streamlit.proto.ClientState_pb2.ClientState | None The ScriptRunner's final ClientState. Set only for the SHUTDOWN event. page_script_hash : str | None A hash of the script path corresponding to the page currently being run. Set only for the SCRIPT_STARTED event. fragment_ids_this_run : list[str] | None The fragment IDs of the fragments being executed in this script run. Only set for the SCRIPT_STARTED event. If this value is falsy, this script run must be for the full script. clear_forward_msg_queue : bool If set (the default), clears the queue of forward messages to be sent to the browser. Set only for the SCRIPT_STARTED event. zrThis function must only be called on the eventloop thread the AppSession was created on. This should never happen.z0Ignoring event from non-current ScriptRunner: %sNzTpage_script_hash must be set for the SCRIPT_STARTED event. This should never happen.z`exception must be set for the SCRIPT_STOPPED_WITH_COMPILE_ERROR event. This should never happen.zJclient_state must be set for the SHUTDOWN event. This should never happen.zHnull forward_msg in ENQUEUE_FORWARD_MSG event. This should never happen.)-rFrDrE RuntimeErrorrVr.r\rNrrr0r3r2rOrr_create_new_session_messagerr!SCRIPT_STOPPED_WITH_COMPILE_ERRORFRAGMENT_STOPPED_WITH_SUCCESSr1rFINISHED_SUCCESSFULLY"FINISHED_FRAGMENT_RUN_SUCCESSFULLYFINISHED_WITH_COMPILE_ERROR_create_script_finished_messagerZrPupdate_watched_modulesupdate_watched_pagesexception_utilsmarshall session_eventscript_compilation_exceptionSCRIPT_STOPPED_FOR_RERUNFINISHED_EARLY_FOR_RERUNSHUTDOWNr r{r|r}rCENQUEUE_FORWARD_MSG&_create_session_status_changed_message)r]rrrrrrrr prev_staterstatusapp_was_runningapp_is_runnings r9rz3AppSession._handle_scriptrunner_event_on_event_loopsf   w779 9,  ++ + MMLe T [[ %44 4{{o@@@-<< '"j 4#5#5#F#FF6F""3   3 422 "7C  % %c *   9 9  ? ?  ; ;  {{o@@@-== )EEE#99+III#FF#??  % %d&J&J6&R S*.D '!==!??..//FFH//DDF$&4!l((%%BBI))#. '@@ @)99DK  % %4477  **++BBD '00 0#"`{{o@@@$$&55HHQ!-D !%D  ';; ;""^  % %k 2%(F(FF(F(FF _ ,  % %d&Q&Q&S T -r8ct}|j|j_|jt j k(|j_|S)z6Create and return a session_status_changed ForwardMsg.)rrUsession_status_changed run_on_saverNr0r2script_is_runningrs r9rz1AppSession._create_session_status_changed_messagesDl151B1B"". KK?99 9 ""4 r8c<t}d|j_|S)z8Create and return a 'script_changed_on_disk' ForwardMsg.T)rrscript_changed_on_diskrs r9rz&AppSession._create_file_change_messagesl370 r8cJt}t|j_|jj |j_|j j|j_|j j|j_||j_ |r%|jjj||j|j|xs|j jt|jjt!|jj"t!|jj"j$dtj&j(j*t!|jj"j,dtj&j.j*t!|jj"j0dtj&j2j*t!|jj"j$j0dtj&j4j*t!|jj"j,j0dtj&j6j*|jj8}t;|j<t>|j@_!djEtGtHtJjL|j@_'tPjR|j@_*dtVjXvxsdtVjXv|j@_-|j\|j^_0|jbtdjfk(|j^_4|jjj|_5|jl|_7|S)z+Create and return a new_session ForwardMsg.ztheme..DISPLAYWAYLAND_DISPLAY)8rr> new_session script_run_idrGnamerKrJmain_script_hashrrextend_populate_app_pagesr_populate_config_msgr _populate_theme_msg custom_themelightCustomThemeCategoriesLIGHTvaluedarkDARKsidebarSIDEBAR LIGHT_SIDEBAR DARK_SIDEBAR initialize_populate_user_info_msgrbr#environment_infostreamlit_versionjoinmapr;sys version_infopython_versionr SYSTEM server_ososenviron has_displayrUsession_statusrrNr0r2ris_hellorCr)r]rrrrimsgs r9rz&AppSession._create_new_session_messagesl(>(@%#0055+/+>+>+O+O(+/+>+>+O+O(+;( OO 1 1 8 89N O   OOUEd&9&9&C&C&E  S__334 COO889 OO ( ( . .V1177==> ?  OO ( ( - -V1166<<= >  OO ( ( 0 0V1199??@ A  OO ( ( . . 6 6V11??EEF G  OO ( ( - - 5 5V11>>DDE F ))/2J//2xxCAQAQ8R/S,*2//'  # F'8BJJ'F )+/*;*;' KK?99 9 -))22 '' r8c(t}||_|S)z/Create and return a script_finished ForwardMsg.)rscript_finished)r]rrs r9rz*AppSession._create_script_finished_messagesl$ r8ct}tj|jjj ||S)z*Create and return an Exception ForwardMsg.)rrrdelta new_elementr)r]rrs r9rz$AppSession._create_exception_message$s.l  !6!6!@!@!D r8ct} ddlm}||jj}|j }|y|\}}}|j d}||j_||j_ ||j_ |jxsg|jjdd|jxsg|jjdd|jr*tjj |j_nw|j$rBt'|j$dkDr*tjj(|j_n)tjj*|j_t,j/d||||j1|y#t2$r!}t,j/d|Yd}~yd}~wwxYw)Nr)GitRepoz.gitz7Git information found. Name: %s, Branch: %s, Module: %sz+Obtaining Git information produced an errorexc_info)rstreamlit.git_utilr3rGrJ get_repo_info removesuffixgit_info_changed repositorybranchmoduleuntracked_filesuncommitted_filesis_head_detachedr GitStates HEAD_DETACHEDstate ahead_commitslenAHEAD_OF_REMOTEDEFAULTr.r\rr) r]rr3repo repo_inforepository_namer;r<rs r9rz*AppSession._handle_git_information_request*sl% V 24,,==>D**,I .7 +OVV-::6BO.=C +*0C '*0C '6:6J6J6PbC 0 0 38<8N8N8TRTC 2 21 5$$-4->->-L-L$$*##D,>,>(?!(C-4->->-N-N$$*-4->->-F-F$$* MMI    % %c * V MMGRTM U U Vs4F0E.F00 G9GGc&|j|y)aTell the ScriptRunner to re-run its script. Parameters ---------- client_state : streamlit.proto.ClientState_pb2.ClientState | None The ClientState protobuf to run the script with, or None to use previous client state. N)r)r]rs r9rz'AppSession._handle_rerun_script_requestTs <(r8c$|jy)z1Tell the ScriptRunner to stop running its script.N)rrgs r9rz&AppSession._handle_stop_script_requestbs   "r8ctjjtjj|jjy)zjClear this app's cache. Because this cache is global, it will be cleared for all users. N)r cache_datarcache_resourcerXrgs r9rz&AppSession._handle_clear_cache_requestfs:   "$$& !!#r8cy)zHandle an incoming app heartbeat. The heartbeat indicates the frontend is active and keeps the websocket from going idle and disconnecting. The actual handler here is a noop Nr7rgs r9rz(AppSession._handle_app_heartbeat_requestps r8cP||_|j|jy)zChange our run_on_save flag to the given value. The browser will be notified of the change. Parameters ---------- new_value : bool New run_on_save value N)rUrr)r] new_values r9rz*AppSession._handle_set_run_on_save_request{s#& !!$"M"M"OPr8c|t}|j|j_|jj |j |j}|D]Q}|jjjt|j|j|jS|j|y)z6Handle a file_urls_request BackMsg sent by the client.)file_id upload_url delete_urlN)r request_idfile_urls_response response_idrHget_upload_urlsrC file_names file_urlsappendrrSrTrUr)r]rrupload_url_infosupload_url_infos r9rz$AppSession._handle_file_urls_requestsl->-I-I*22BB GG&11  0 O  " " , , 3 3+33.99.99   !!#&r8c|jD]T\}}|jj}||_|dj dd|_|d|_|d|_Vy)Nrr icon)items app_pagesaddrreplacer url_pathnamera)r]rrr page_info page_protos r9rzAppSession._populate_app_pagessl,1;;= 0 ' i**,J*:J '#,[#9#A#A#s#KJ &/ & 0  0r8r@cd}tj|}ttj|j }|Hdj dtjjD}td|d|d||S)Nzclient.toolbarModez, c3<K|]}|jywr)lower).0rs r9 z$_get_toolbar_mode..s"P1779"PszConfig z. expects to have one of the following values: z. Current value: ) r rSgetattrr ToolbarModeupperr keys ValueError) config_key config_value enum_valueallowed_valuess r9_get_toolbar_moders%J$$Z0L6=L..07J"Pf6H6H6M6M6O"PPj^$%%3$45*^ -  r8c.tjd|_tjd|_tjd|_tjd|_tjddurd|_t|_y)Nzbrowser.gatherUsageStatszglobal.maxCachedMessageAgezserver.allowRunOnSavez ui.hideTopBarzclient.showSidebarNavigationFT) r rSgather_usage_statsmax_cached_message_ageallow_run_on_save hide_top_barhide_sidebar_navr toolbar_mode)rs r9rrsx#../IJC!'!2!23O!PC"--.EFC((9C 78EA#(*Cr8c ^ tj|}td|jDry|j D]#\}}|dvs |t |t ||%|jj|jjd}|jdd}|=||vr/tjd|t|jn |||_t!||jdd|jdd|jdd|}|jd d}t#|t$r t'j(|}|M|D]H} d | vrt%| d | d <| d =|j,j/t1| t3J|jdd} t#| t$rL| j5j7} | j9dr| gdz} n t'j(| } | J| rt;| dkDrt=dt;| | D]} |j>j/|  |jdd} t#| t$r t'j(| } t#| t@r-tCddD]} |jDj/| nrt#| trb| rt;| dkDrt=dt;| | dddgdt;| z zz}|D]} |jDj/| |jdd}t#|t$r t'j(|}|#|D]} |jHj/| |jdd}t#|t$r t'j(|}|Qt;|d k7rtjKd!t;||D]} |jLj/| yy#t*$r%}tjd || d}Yd}~d}~wwxYw#t*$r#}tjd| | Yd}~-d}~wwxYw#t*$r%}tjd| | d} Yd}~d}~wwxYw#t*$r#}tjd| | Yd}~d}~wwxYw#t*$r%}tjd| | d} Yd}~d}~wwxYw#t*$r#}tjd|| Yd}~"d}~wwxYw#t&jF$r%}tjd|| d}Yd}~d}~wwxYw#t*$r#}tjd|| Yd}~/d}~wwxYw#t&jF$r%}tjd|| d}Yd}~d}~wwxYw#t*$r#}tjd|| Yd}~d}~wwxYw)"Nc3$K|]}|du ywrr7)ruvals r9rvz&_populate_theme_msg..s 633$; 6s> basefontcodeFont fontFaces headingFontheadingFontSizesheadingFontWeightschartSequentialColorschartCategoricalColors)rrrzb"%s" is an invalid value for theme.base. Allowed values include %s. Setting theme.base to "light".rrrrzFFailed to parse the theme.fontFaces config option with json.loads: %s.r4weight weight_rangez6Failed to parse the theme.fontFaces config option: %s.r)pxremzMFailed to parse the theme.headingFontSizes config option with json.loads: %s.zUConfig theme.headingFontSizes should have 1-6 values corresponding to h1-h6, but got z=Failed to parse the theme.headingFontSizes config option: %s.rzOFailed to parse the theme.headingFontWeights config option with json.loads: %s.zWConfig theme.headingFontWeights should have 1-6 values corresponding to h1-h6, but got iXz?Failed to parse the theme.headingFontWeights config option: %s.rzCFailed to parse the theme.chartCategoricalColors config option: %s.rzBFailed to parse the theme.chartSequentialColors config option: %s. zuConfig theme.chartSequentialColors should have 10 color values, but got %s. Defaulting to Streamlit's default colors.)'r get_options_for_sectionallvaluesrbsetattrr" BaseThemerrgetr.rlistrzrr! isinstancer;jsonloadsr font_facesr\rrstriprtendswithrDr{heading_font_sizesintrangeheading_font_weightsJSONDecodeErrorchart_categorical_colorserrorchart_sequential_colors)rsection theme_opts option_name option_valbase_maprrr font_facersizerrheading_weightsrrcolorrs r9rrsu//8J 6*"3"3"5 66#-#3#3#5A Z   & C{3Z @%A2$$ ""H >>&$ 'D  x  OO1X]]_%   ~CH " vt$z4(}d+  C T2J*c" J/J# I y(03Ih4G0HIn-!(+%%i 8:&FG $(:DA $c*/557==?  & &} 5"4!5!9  *%)ZZ0B%C"%!S);%>*>E&, (#'::.B#C &,q! BA  $ $ + +,@ A B ($ /#s+?'@1'D3457  /r2cU () )6  & F ((//7  *~~.FM*C0 ,'+zz2J'K $ +- E ,,33E: )nn-DdK)3/ +&*jj1H&I #* & '2 - MMH+,  - E ++2259 +_  OOX   J   L  * *c&  &*"  *$ S   ( OOa$   $(  (6 U  ## , OOU(   (, $  , Y  ## + OOT'   '+ #  +& X  s P;*AQ, RS S;5T,5UVWX; Q)Q$$Q), R5RR S $SS  S8S33S8; T)T$$T), U5UUV.VV WV==WW=W88W= X, X''X,ctj}|j|_|j|_|j|_yr)rinstanceinstallation_idinstallation_id_v3installation_id_v4)rinsts r9rrs:  "D..C!44C!44Cr8)rjr;)rjzConfig.ToolbarMode.ValueType)rrrjrk)theme)rrrr;rjrk)rrrjrk)Z __future__rrDrr'r"r<enumrtypingrrrgoogle.protobuf.json_formatrstreamlit.elements.exceptionelementsrr streamlitr r r streamlit.loggerr streamlit.proto.ClientState_pb2r streamlit.proto.Common_pb2rrstreamlit.proto.ForwardMsg_pb2rstreamlit.proto.GitInfo_pb2rstreamlit.proto.NewSession_pb2rrrrrstreamlit.runtimer#streamlit.runtime.forward_msg_queuerstreamlit.runtime.fragmentrrstreamlit.runtime.metrics_utilrstreamlit.runtime.pages_managerrstreamlit.runtime.scriptrunnerrrrstreamlit.runtime.secretsr streamlit.runtime.theme_utilr!streamlit.string_utilr"streamlit.versionr#streamlit.watcherr$collections.abcr%streamlit.proto.BackMsg_pb2r&streamlit.runtime.script_datar'+streamlit.runtime.scriptrunner.script_cacher(rWr*'streamlit.runtime.uploaded_file_managerr+streamlit.source_utilr,r-r4r.__annotations__r0r>r@rrrrr7r8r9rs# ,,166//'7@5/&?M78UU7@/61(38G4K8H%%.d.  Y 0Y 0B  +]@5r8