§
    xÅj> ã                   óB  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZmZmZ d dlmZ d dlmZmZmZmZmZ d d	l m!Z! 	 d d
l"m#Z# n# e$$ r dZ#Y nw xY wd dl%m&Z& d dl'Z'd dl(m)Z) d dl*m+Z+m,Z,m-Z- d dl.m/Z/m0Z0m1Z1 e&r`d dl2m3Z3m4Z4 d dl%m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE d dlFmGZG d dl*mHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP  e>d¦  «        ZQ eBd¦  «        ZR eddd¦  «        ZS ejT        d¦  «        ZUdaV eWd¦  «        ZX eWd¦  «        ZY eWd¦  «        ZZdZ[	 ddœ�dd$„Z\d%dd"e]fd&„Z^�dd(„Z_�dd)„Z`d*d+d"eafd,„Zb G d-„ d.¦  «        Zc ec¦   «         Zd�dd0„Ze�dd3„Zfdd4d"egfd5„Zhdd4d"eafd6„Zi eWd7¦  «        Zjdead"d4fd8„Zk	 �d	 	 	 �dd;„Zl G d<„ d=em¦  «        Zn G d>„ d?¦  «        Zo G d@„ dA¦  «        Zp�ddD„Zq�ddE„ZrdFdGd"esfdH„Zt�ddL„Zu	 	 	 �ddMeadNevdOdPdQdRdSd'd"dTfdU„Zw	 �d	 	 	 	 	 	 	 �ddX„Zxddd"eafdY„Zyddd"eafdZ„Zz	 	 	 	 	 	 �dd\„Z{	 	 	 	 	 �ddFdGdVdPd^esd_esdWdPd`dad"dbfdc„Z|	 	 	 �dd^esd_esdWdPd"dbfdd„Z}dee~d"dRfdf„Zdedgd"eafdh„Z€	 	 	 	 	 	 �d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �ddr„Z� e‚eƒds¦  «        Z„e„r�d du„Z…n�d dv„Z…	 	 	 	 	 	 	 	 �d!didCdedgdIdJdjdkdldkdmevdnevdod'dpdqdwdxdydzd"d{fd|„Z†	 	 	 �d	 	 	 	 	 	 	 	 	 �d"d~„Z‡dead"eafd„Zˆ�d#dƒ„Z‰�d$d…„ZŠ	 	 	 �d	 	 	 	 	 	 	 	 	 �d%dŠ„Z‹	 �d	 	 	 	 	 	 	 	 	 �d&dŒ„ZŒ�d'd�„Z�	 	 	 	 	 	 	 	 �d(d�„ZŽ	 	 �d)	 	 	 	 	 	 	 �d*d’„Z�d“d'd”d‡d"esfd•„Z�d[d'd"esfd–„Z‘d[d'd‰d'd"esfd—„Z’d˜ead™evd"eafdš„Z“dead"dPfd›„Z”	 �ddeadOdPd"dœfd�„Z•džead"dŸfd „Z–d"esfd¡„Z—d¢e˜d"e˜fd£„Z™�d+d¥„Zš eš¦   «         \  Z›Zœd¦Z� eœd§d¬¨¦  «        Zž eŸ¦   «         Z d©e¡dª<   d"esfd«„Z¢e�d,d­„¦   «         Z£�d-d°„Z¤�d-d±„Z¥ eœd²¦  «        Z¦ G d³„ d´eƒ¦  «        Z§ G dµ„ d¶e
j¨        ¦  «        Z© ed·g d¸¢¦  «        Zª	 	 	 �d.d¹eadºesd»esd¼esd"d½f
d¾„Z« ed¿g dÀ¢¦  «        Z¬�d/d¹eadÁesd"d¿fdÂ„Z­dÃead"dÄfdÅ„Z®d¹ead"dÄfdÆ„Z¯dÇddoead"esfdÈ„Z°	 	 �d0dÉeadÊd‡dËesd"esfdÌ„Z±dÍdÎd¹ead"esfdÏ„Z²�d1dÑ„Z³d“ead"eafdÒ„Z´d“ead"eafdÓ„Zµ�d2dÕ„Z¶dÖead"dŸfd×„Z·	 �d	 	 	 	 	 	 	 �d3dÛ„Z¸�d4dÞ„Z¹e&r$eE	 	 	 	 	 	 �d5dä„¦   «         ZºeE	 	 	 	 �d6dæ„¦   «         Zºe¹f	 	 	 	 	 �d7dè„Zºe)rd"evfdé„Z»nd"evfdê„Z»d"egfdë„Z¼	 d dìl½m¾Z¿ d dílÀmÁZÁ n# e$$ r �d8dï„Z¿dðead"esfdñ„ZÁY nw xY wd"esfdò„ZÂ	 �d	 	 	 �d9dö„ZÃ	 	 	 	 �d:dø„ZÄdùdddd"esfdú„ZÅe&r eBdû¦  «        ZÆ�d;dÿ„ZÇd%dd"eaf�d „ZÈ�d�dd"esf�d„ZÉ	 	 	 	 �d<�d„ZÊ	 	 	 	 �d=�d„ZË	 	 	 	 �d>�d	„ZÌ�d?�d„ZÍ�d@�d„ZÎe�dA�d„¦   «         ZÏdS (B  é    N)Ú
namedtuple)Úcontextmanager)ÚdatetimeÚtimezone)ÚDecimal)ÚpartialÚpartialmethodÚwraps)ÚReal)Úparse_qsÚunquoteÚ	urlencodeÚurlsplitÚ
urlunsplit)Ú%_apply_key_value_collection_filtering)ÚBaseExceptionGroup)ÚTYPE_CHECKING)ÚPY37)ÚSENSITIVE_DATA_SUBSTITUTEÚ	AnnotatedÚAnnotatedValue)ÚDEFAULT_ADD_FULL_STACKÚDEFAULT_MAX_STACK_FRAMESÚEndpointType)Ú	FrameTypeÚTracebackType)ÚAnyÚCallableÚContextManagerÚDictÚ	GeneratorÚIteratorÚListÚNoReturnÚOptionalÚ	ParamSpecÚSetÚTupleÚTypeÚTypeVarÚUnionÚcastÚoverload)ÚHub)	ÚAttributeValueÚDataCollectionÚEventÚExcInfoÚHintÚLogÚMetricÚSerializedAttributeValueÚSpanJSONÚPÚRi²  é   zsentry_sdk.errors)ÚfalseÚfÚnÚnoÚoffÚ0)ÚtrueÚtÚyÚyesÚonÚ1)zAWS4-HMAC-SHA256zAWS4-ECDSA-P256-SHA256iÐ  F)ÚstrictÚvaluer   rG   úOptional[bool]Úreturnúbool | Nonec                óž   — | �!t          | ¦  «                             ¦   «         nd}|t          v rdS |t          v rdS |rdnt	          | ¦  «        S )z®Casts an ENV variable value to boolean using the constants defined above.
    In strict mode, it may return None if the value doesn't match any of the predefined values.
    NFT)ÚstrÚlowerÚFALSY_ENV_VALUESÚTRUTHY_ENV_VALUESÚbool)rH   rG   Ú
normalizeds      úAC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/utils.pyÚenv_to_boolrT   h   s\   € ð (-Ð'8•�U‘”×!Ò!Ñ#Ô#Ð#¸d€JàÕ%Ð%Ð%ØˆuàÕ&Ð&Ð&ØˆtàÐ*ˆ4ˆ4�t E™{œ{Ð*ó    Údatac                 óV   — t          j        | dd¬¦  «                             d¦  «        S )zCSerialize data into a compact JSON representation encoded as UTF-8.F)ú,ú:)Ú	allow_nanÚ
separatorsúutf-8)ÚjsonÚdumpsÚencode)rV   s    rS   Ú
json_dumpsr`   w   s'   € åŒ:�d e¸
ÐCÑCÔC×JÒJÈ7ÑSÔSÐSrU   úOptional[str]c                  ó  — 	 t          t          j        j        d¦  «        5 } d }t          j        dk    st          j        dk    r-t          j        ¦   «         }|xj        t          j	        z  c_        t          j
        g d¢|t          j        | | ¬¦  «                             ¦   «         d                              ¦   «                              d¦  «        }d d d ¦  «         n# 1 swxY w Y   n# t          t           t"          f$ r Y d S w xY w|S )Nzw+Úwin32Úcygwin)Úgitz	rev-parseÚHEAD)ÚstartupinfoÚstdoutÚstderrÚstdinr   r\   )ÚopenÚosÚpathÚdevnullÚsysÚplatformÚ
subprocessÚSTARTUPINFOÚdwFlagsÚSTARTF_USESHOWWINDOWÚPopenÚPIPEÚcommunicateÚstripÚdecodeÚOSErrorÚIOErrorÚFileNotFoundError)Únullrg   Úrevisions      rS   Úget_git_revisionr   |   s?  € ðÝ•"”'”/ 4Ñ(Ô(ð 	¨DàˆKÝŒ|˜wÒ&Ð&­#¬,¸(Ò*BÐ*BÝ(Ô4Ñ6Ô6�ØÐ#Ô#¥zÔ'FÑFÐ#Ô#õ Ô Ø0Ð0Ð0Ø +Ý%œ?ØØðñ ô ÷ ’‘”˜qô"÷ ’‘”ß’˜‘”ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øøõ& •WÕ/Ð0ð ð ð Øˆtˆtðøøøð €Os5   ‚C+ ¡B2CÃC+ ÃC#Ã#C+ Ã&C#Ã'C+ Ã+DÄDc                  óÄ   — t           j                             d¦  «        } | r| S t          ¦   «         } | r| S dD ]'}t           j                             |¦  «        } | r| c S Œ(dS )zTry to guess a default release.ÚSENTRY_RELEASE)ÚHEROKU_BUILD_COMMITÚHEROKU_SLUG_COMMITÚSOURCE_VERSIONÚ!CODEBUILD_RESOLVED_SOURCE_VERSIONÚCIRCLE_SHA1ÚGAE_DEPLOYMENT_IDÚ
K_REVISIONN)rl   ÚenvironÚgetr   )ÚreleaseÚvars     rS   Úget_default_releaser�   —   s|   € åŒj�nŠnÐ-Ñ.Ô.€GØð ØˆåÑ Ô €GØð Øˆðð ð ˆõ ”*—.’. Ñ%Ô%ˆØð 	ØˆNˆNˆNð	àˆ4rU   Úinstalled_integrationsz	List[str]c                 óN   — g d¢}|D ]}|| v rd                      |¦  «        c S ŒdS )zAReturn the SDK name including the name of the used web framework.)ÚdjangoÚflaskÚfastapiÚbottleÚfalconÚquartÚsanicÚ	starletteÚlitestarÚstarliteÚchaliceÚ
serverlessÚpyramidÚtornadoÚaiohttpÚ
aws_lambdaÚgcpÚbeamÚasgiÚwsgizsentry.python.{}zsentry.python)Úformat)rŽ   Úframework_integrationsÚintegrations      rS   Úget_sdk_namer§   °   sW   € ð
ð ð Ðð. .ð :ð :ˆØÐ0Ð0Ð0Ø%×,Ò,¨[Ñ9Ô9Ð9Ð9Ð9ð 1ð ˆ?rU   c                   ó2   — e Zd ZdZdd„Zddddd	d
defd„ZdS )ÚCaptureInternalException© rJ   úContextManager[Any]c                 ó   — | S ©Nrª   ©Úselfs    rS   Ú	__enter__z"CaptureInternalException.__enter__Ö   s   € ØˆrU   ÚtyúOptional[Type[BaseException]]rH   úOptional[BaseException]ÚtbúOptional[TracebackType]c                 ó2   — |�|�t          |||f¦  «         dS )NT)Úcapture_internal_exception)r¯   r±   rH   r´   s       rS   Ú__exit__z!CaptureInternalException.__exit__Ù   s'   € ð ˆ>˜eÐ/Ý&¨¨E°2 Ñ7Ô7Ð7àˆtrU   N©rJ   r«   )Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r°   rQ   r¸   rª   rU   rS   r©   r©   Ó   sg   € € € € € Ø€Iðð ð ð ð	à+ð	ð )ð	ð &ð		ð
 
ð	ð 	ð 	ð 	ð 	ð 	rU   r©   r«   c                  ó   — t           S r­   )Ú_CAPTURE_INTERNAL_EXCEPTIONrª   rU   rS   Úcapture_internal_exceptionsrÀ   è   s   € Ý&Ð&rU   Úexc_infor2   c                 óŒ   — t          j        ¦   «                              ¦   «         rt                               d| ¬¦  «         dS dS )zŸ
    Capture an exception that is likely caused by a bug in the SDK
    itself.

    These exceptions do not end up in Sentry and are just logged instead.
    zInternal error in sentry_sdk©rÁ   N)Ú
sentry_sdkÚ
get_clientÚ	is_activeÚloggerÚerrorrÃ   s    rS   r·   r·   ì   sK   € õ ÔÑÔ×(Ò(Ñ*Ô*ð HÝ�ŠÐ3¸hˆÑGÔGÐGÐGÐGðHð HrU   r   c                 ó:   — | t           z
                       ¦   «         S r­   )ÚepochÚtotal_seconds©rH   s    rS   Úto_timestamprÍ   ÷   s   € Ø•E‰M×(Ò(Ñ*Ô*Ð*rU   c                 ój   — |                       t          j        ¦  «        }|                     d¦  «        S )z¡Formats a timestamp in RFC 3339 format.

    Any datetime objects with a non-UTC timezone are converted to UTC, so that all timestamps are formatted in UTC.
    z%Y-%m-%dT%H:%M:%S.%fZ)Ú
astimezoner   ÚutcÚstrftime)rH   Úutctimes     rS   Úformat_timestamprÓ   û   s0   € ð
 ×Ò�xœ|Ñ,Ô,€Gð ×ÒÐ3Ñ4Ô4Ð4rU   )ú+ú-c                 ó”  — 	 t          j        | ¦  «        }n”# t          t          f$ r€ d| v rdnd}|                      d¦  «        r| d d…         dz   } | d         t
          v r|dz  }| d d	…         | d
d …         z   } n| d         t
          v r|dz  }t          j        | |¦  «        }Y nw xY w|                     t          j	        ¦  «        S )Nú.z%Y-%m-%dT%H:%M:%S.%fz%Y-%m-%dT%H:%M:%SÚZéÿÿÿÿz+0000iúÿÿÿz%zéýÿÿÿéþÿÿÿéûÿÿÿ)
r   ÚfromisoformatÚAttributeErrorÚ
ValueErrorÚendswithÚISO_TZ_SEPARATORSÚstrptimerÏ   r   rÐ   )rH   ÚresultÚtimestamp_formats      rS   Údatetime_from_isoformatrå   
  sû   € ð<ÝÔ'¨Ñ.Ô.ˆˆøÝ�JÐ'ð <ð <ð <ð '*¨U l lÐ"Ð"Ð8Kð 	ð �>Š>˜#ÑÔð 	)Ø˜#˜2˜#”J Ñ(ˆEà�Œ9Õ)Ð)Ð)Ø Ñ$ÐØ˜#˜2˜#”J  r s s¤Ñ+ˆEˆEØ�2ŒYÕ+Ð+Ð+Ø Ñ$ÐåÔ" 5Ð*:Ñ;Ô;ˆˆˆð<øøøð ×Ò�Xœ\Ñ*Ô*Ð*s   ‚ —BB(Â'B(úOptional[ExcInfo]úDict[str, Optional[ExcInfo]]c                 óh   — | €t          j        ¦   «         } nt          | ¦  «        } | d         €d} d| iS )z+Creates a hint with the exc info filled in.Nr   rÁ   )ro   rÁ   Úexc_info_from_errorrÃ   s    rS   Úevent_hint_with_exc_inforê     s>   € ð ÐÝ”<‘>”>ˆˆå& xÑ0Ô0ˆØ�„{ÐØˆØ˜Ð!Ð!rU   c                   ó   — e Zd ZdZdS )ÚBadDsnzRaised on invalid DSNs.N©rº   r»   r¼   Ú__doc__rª   rU   rS   rì   rì   ,  s   € € € € € Ø!Ð!Ð!Ð!rU   rì   c                   óz   — e Zd ZdZ ej        d¦  «        Z	 d	 	 	 	 	 dd	„Zede	fd
„¦   «         Z
ddd„Zde	fd„ZdS )ÚDsnzRepresents a DSN.z	^o(\d+)\.NrH   úUnion[Dsn, str]Úorg_idra   rJ   c                 óÄ  — t          |t          ¦  «        rt          |j        ¦  «        | _        d S t	          t          |¦  «        ¦  «        }|j        dvrt          d|j        z  ¦  «        ‚|j        | _        |j        €t          d¦  «        ‚|j        | _	        |�|| _
        nBt          j                             | j	        ¦  «        }|r|                     d¦  «        nd | _
        |j        €| j        dk    rdpd| _        n|j        | _        |j        st          d¦  «        ‚|j        | _        |j        | _        |j                             d	d¦  «        }	 t          t+          |                     ¦   «         ¦  «        ¦  «        | _        n6# t0          t2          f$ r" t          d
|j        pddd …         z  ¦  «        ‚w xY wd	                     |¦  «        d	z   | _        d S )N)ÚhttpÚhttpszUnsupported scheme %rzMissing hostnamer:   rõ   é»  éP   zMissing public keyú/zInvalid project in DSN (%r)Ú )Ú
isinstancerð   ÚdictÚ__dict__r   rM   Úschemerì   ÚhostnameÚhostrò   ÚORG_ID_REGEXÚmatchÚgroupÚportÚusernameÚ
public_keyÚpasswordÚ
secret_keyrm   ÚrsplitÚintÚpopÚ
project_idrß   Ú	TypeErrorÚjoin)r¯   rH   rò   ÚpartsÚorg_id_matchrm   s         rS   Ú__init__zDsn.__init__5  sÈ  € õ �e�SÑ!Ô!ð 	Ý  ¤Ñ0Ô0ˆDŒMØˆFÝ�˜U™œÑ$Ô$ˆàŒ<Ð0Ð0Ð0ÝÐ0°5´<Ñ?Ñ@Ô@Ð@Ø”lˆŒàŒ>Ð!ÝÐ+Ñ,Ô,Ð,à”NˆŒ	àÐØ+1ˆDŒKˆKåÔ+×1Ò1°$´)Ñ<Ô<ˆLØ3?ÐI˜,×,Ò,¨QÑ/Ô/Ð/ÀTˆDŒKàŒ:ÐØ!œ[¨GÒ3Ð;¸ÐA¸rˆDŒIˆIàœ
ˆDŒIàŒ~ð 	/ÝÐ-Ñ.Ô.Ð.àœ.ˆŒØœ.ˆŒàŒz× Ò   aÑ(Ô(ˆð	QÝ!¥# d§h¢h¡j¤j¡/¤/Ñ2Ô2ˆDŒOˆOøÝ�IÐ&ð 	Qð 	Qð 	QÝÐ6¸%¼*Ð:JÈÈAÈBÈBÔ9OÑOÑPÔPÐPð	Qøøøð —H’H˜T‘N”N SÑ(ˆŒ	ˆ	ˆ	s   Å3F Æ3G c                 óL   — | j         }| j        | j        fdvr|›d| j        ›�}|S )zThe netloc part of a DSN.))rô   r÷   )rõ   rö   rY   )rÿ   rý   r  ©r¯   Úrvs     rS   Únetlocz
Dsn.netloc`  s7   € ð ŒYˆØŒK˜œÐ#Ð+IÐIÐIØ˜B˜B ¤	 	Ð*ˆBØˆ	rU   ÚclientúOptional[Any]ÚAuthc           	      ój   — t          | j        | j        | j        | j        | j        | j        |¬¦  «        S )z*Returns the auth info object for this dsn.)rý   rÿ   rm   r  r  r  r  )r  rý   r  rm   r  r  r  )r¯   r  s     rS   Úto_authzDsn.to_authh  s:   € åØ”;Ø”Ø”Ø”Ø”Ø”Øð
ñ 
ô 
ð 	
rU   c                 óv   — | j         ›d| j        ›| j        r
d| j        z   pd›d| j        ›| j        ›| j        ›�S )Nú://ú@rù   )rý   r  r  r  rm   r  r®   s    rS   Ú__str__zDsn.__str__t  sM   € àŒKˆKˆKØŒOˆOØŒOÐ5  d¤oÑ 5Ð;¸Ð;Ð;ØŒKˆKØŒIˆIØŒOˆOð
ð 	
rU   r­   )rH   rñ   rò   ra   rJ   N)r  r  rJ   r  )rº   r»   r¼   rî   ÚreÚcompiler   r  ÚpropertyrM   r  r  r  rª   rU   rS   rð   rð   0  sº   € € € € € ØÐà�2”:˜lÑ+Ô+€Lð CGð))Ø&ð))Ø0?ð))à	ð))ð ))ð ))ð ))ðV ð˜ð ð ð ñ „Xðð

ð 

ð 

ð 

ð 

ð
˜ð 
ð 
ð 
ð 
ð 
ð 
rU   rð   c                   ór   — e Zd ZdZ	 	 	 	 ddedededed	d
dedddeddfd„Zej        fdddefd„Z	defd„Z
dS )r  z,Helper object that represents the auth info.Né   rø   rý   rÿ   r  r  r  ra   Úversionr  r  rm   rJ   c	                 óv   — || _         || _        || _        || _        || _        || _        || _        || _        d S r­   )rý   rÿ   rm   r  r  r  r#  r  )	r¯   rý   rÿ   r  r  r  r#  r  rm   s	            rS   r  zAuth.__init__‚  s@   € ð ˆŒØˆŒ	ØˆŒ	Ø$ˆŒØ$ˆŒØ$ˆŒØˆŒØˆŒˆˆrU   Útyper   c           	      óT   — | j         ›d| j        ›| j        ›d| j        ›d|j        ›d�	S )z'Returns the API url for storing events.r  zapi/rø   )rý   rÿ   rm   r  rH   )r¯   r%  s     rS   Úget_api_urlzAuth.get_api_url–  s9   € ð ŒKˆKˆKØŒIˆIØŒIˆIˆIØŒOˆOˆOØŒJˆJˆJð
ð 	
rU   c                 óö   — d| j         fd| j        fg}| j        �|                     d| j        f¦  «         | j        �|                     d| j        f¦  «         dd                     d„ |D ¦   «         ¦  «        z   S )	z!Returns the auth header a string.Ú
sentry_keyÚsentry_versionNÚsentry_clientÚsentry_secretzSentry z, c              3   ó*   K  — | ]\  }}|›d |›�V — ŒdS )ú=Nrª   )Ú.0ÚkeyrH   s      rS   ú	<genexpr>z!Auth.to_header.<locals>.<genexpr>ª  s1   è è € Ð$QÐ$QÁ
ÀÀU°°°°U°UÐ%;Ð$QÐ$QÐ$QÐ$QÐ$QÐ$QrU   )r  r#  r  Úappendr  r  r  s     rS   Ú	to_headerzAuth.to_header£  sƒ   € à˜Tœ_Ð-Ð0@À$Ä,Ð/OÐPˆØŒ;Ð"Ø�IŠI�¨¬Ð4Ñ5Ô5Ð5ØŒ?Ð&Ø�IŠI�¨¬Ð8Ñ9Ô9Ð9Ø˜4Ÿ9š9Ð$QÐ$QÈbÐ$QÑ$QÔ$QÑQÔQÑQÐQrU   )Nr"  Nrø   )rº   r»   r¼   rî   rM   r	  r  r   ÚENVELOPEr'  r3  rª   rU   rS   r  r    sî   € € € € € Ø6Ð6ð '+ØØ"&Øðð àðð ðð ð	ð
 ðð $ðð ðð  ðð ðð 
ðð ð ð ð,  ,Ô4ð
ð 
àð
ð 
ð
ð 
ð 
ð 
ðR˜3ð Rð Rð Rð Rð Rð RrU   r  ÚclsúOptional[type]c                 óF   — t          | dd ¦  «        pt          | dd ¦  «        S )Nr¼   rº   ©Úgetattr)r5  s    rS   Úget_type_namer:  ­  s%   € Ý�3˜¨Ñ-Ô-ÐOµ¸¸jÈ$Ñ1OÔ1OÐOrU   c                 ó4   — t          | dd ¦  «        }|dvr|S d S )Nr»   )NÚbuiltinsÚ__builtins__r8  )r5  Úmods     rS   Úget_type_moduler?  ±  s)   € Ý
�#�| TÑ
*Ô
*€CØ
Ð4Ð4Ð4Øˆ
Øˆ4rU   Úframer   c                 óÌ   — 	 | j         d         }|                     d¦  «        rdS n# t          t          f$ r Y nw xY wdD ]#}	 | j        |         r dS Œ# t
          $ r Y Œ w xY wdS )Nrº   zsentry_sdk.T)Ú__traceback_hide__Ú__tracebackhide__F)Ú	f_globalsÚ
startswithrÞ   ÚKeyErrorÚf_localsÚ	Exception)r@  r>  Ú	flag_names      rS   Úshould_hide_framerJ  ¸  s®   € ðØŒo˜jÔ)ˆØ�>Š>˜-Ñ(Ô(ð 	Ø�4ð	øå�HÐ%ð ð ð Øˆðøøøð ?ð ð ˆ	ð	ØŒ~˜iÔ(ð Ø�t�tðøåð 	ð 	ð 	ØˆDð	øøøð ˆ5s   ‚"' §;º;ÁAÁ
A!Á A!r´   rµ   úIterator[TracebackType]c              #   óX   K  — | }|�#t          |j        ¦  «        s|V — |j        }|­!d S d S r­   )rJ  Útb_frameÚtb_next)r´   Útb_s     rS   Úiter_stacksrP  Ê  sA   è è € Ø%'€CØ
ˆ/Ý  ¤Ñ.Ô.ð 	ØˆIˆIˆIØŒkˆð ˆ/ˆ/ˆ/ˆ/ˆ/rU   ÚfilenameÚlinenoÚ
max_lengthúOptional[int]Úloaderr  ÚmoduleúKTuple[List[Annotated[str]], Optional[Annotated[str]], List[Annotated[str]]]c                 óð  ‡— t          j        ¦   «         j        }d}t          |¦  «        r|d         d         }d }|�Vt	          |d¦  «        rF	 |                     |¦  «        }n# t          t          f$ r d }Y nw xY w|�|                     ¦   «         }|€2	 t          j
        | ¦  «        }n# t          t          f$ r g d g fcY S w xY w|sg d g fS t          d||z
  ¦  «        }	t          |dz   |z   t          |¦  «        ¦  «        }
	 ˆfd„||	|…         D ¦   «         }t          ||                              d¦  «        ‰¬	¦  «        }ˆfd
„||dz   |
…         D ¦   «         }|||fS # t"          $ r g d g fcY S w xY w)Né   Údata_collectionÚframe_context_linesÚ
get_sourcer   r:   c                 óX   •— g | ]&}t          |                     d ¦  «        ‰¬¦  «        ‘Œ'S ©ú
©rS  ©Ústrip_stringrx   ©r/  ÚlinerS  s     €rS   ú
<listcomp>z'get_lines_from_file.<locals>.<listcomp>÷  sB   ø€ ð 
ð 
ð 
àõ ˜Ÿš FÑ+Ô+¸
ÐCÑCÔCð
ð 
ð 
rU   r_  r`  c                 óX   •— g | ]&}t          |                     d ¦  «        ‰¬¦  «        ‘Œ'S r^  ra  rc  s     €rS   re  z'get_lines_from_file.<locals>.<listcomp>ü  sB   ø€ ð 
ð 
ð 
àõ ˜Ÿš FÑ+Ô+¸
ÐCÑCÔCð
ð 
ð 
rU   )rÄ   rÅ   ÚoptionsÚhas_data_collection_enabledÚhasattrr\  ÚImportErrorr{   Ú
splitlinesÚ	linecacheÚgetlinesrz   ÚmaxÚminÚlenrb  rx   Ú
IndexError)rQ  rR  rS  rU  rV  Úclient_optionsÚcontext_linesÚsourceÚ
source_strÚlower_boundÚupper_boundÚpre_contextÚcontext_lineÚpost_contexts     `           rS   Úget_lines_from_filer{  Ò  s  ø€ õ  Ô*Ñ,Ô,Ô4€Nð €MÝ" >Ñ2Ô2ð QØ&Ð'8Ô9Ð:OÔPˆà€FØÐ�g f¨lÑ;Ô;Ðð	Ø*0×*;Ò*;¸FÑ*CÔ*CˆJˆJøÝ�WÐ%ð 	ð 	ð 	ØˆJˆJˆJð	øøøàÐ!Ø×*Ò*Ñ,Ô,ˆFà€~ð	 ÝÔ'¨Ñ1Ô1ˆFˆFøÝ�Ð!ð 	 ð 	 ð 	 Ø�t˜R�<ÐÐÐð	 øøøð ð Ø�4˜ˆ|Ðå�a˜ -Ñ/Ñ0Ô0€KÝ�f˜q‘j =Ñ0µ#°f±+´+Ñ>Ô>€Kðð
ð 
ð 
ð 
à˜{¨6Ð1Ô2ð
ñ 
ô 
ˆõ $ F¨6¤N×$8Ò$8¸Ñ$@Ô$@ÈZÐXÑXÔXˆð
ð 
ð 
ð 
à ¨¡
¨kÐ9Ô:ð
ñ 
ô 
ˆð ˜L¨,Ð6Ð6øÝð ð ð à�4˜ˆ|ÐÐÐðøøøs7   ÁA$ Á$A:Á9A:ÂB+ Â+CÃCÄAE# Å#E5Å4E5Ú	tb_linenoÚmax_value_lengthc                 ó  — 	 | j         j        }n# t          $ r d }Y nw xY w	 | j        d         }n# t          $ r g d g fcY S w xY w	 | j        d         }n# t          $ r d }Y nw xY w|�|r|dz
  }t	          |||||¬¦  «        S g d g fS )Nrº   Ú
__loader__r:   )rU  rV  )Úf_codeÚco_filenamerH  rD  r{  )r@  r|  r}  Úabs_pathrV  rU  rR  s          rS   Úget_source_contextrƒ    sõ   € ð
Ø$)¤LÔ$<ˆˆøÝð ð ð ØˆˆˆðøøøðØ” Ô,ˆˆøÝð ð ð Ø�4˜ˆ|ÐÐÐðøøøðØ” Ô.ˆˆøÝð ð ð Øˆˆˆðøøøð Ð ÐØ˜Q‘ˆÝ"Ø�fÐ.°vÀfð
ñ 
ô 
ð 	
ð ˆt�Rˆ<Ðs-   ‚ ��¢0 °AÁAÁA ÁA#Á"A#c                 ó`   — 	 t          | ¦  «        S # t          $ r t          | ¦  «        cY S w xY wr­   )rM   rH  Ú	safe_reprrÌ   s    rS   Úsafe_strr†  !  sB   € ð Ý�5‰zŒzÐøÝð  ð  ð  Ý˜ÑÔÐÐÐð øøøs   ‚ ‘-¬-c                 óD   — 	 t          | ¦  «        S # t          $ r Y dS w xY w)Nz<broken repr>)ÚreprrH  rÌ   s    rS   r…  r…  (  s5   € ðÝ�E‰{Œ{ÐøÝð ð ð Øˆˆðøøøs   ‚ ‘
žr‚  c                 óä  — |r| s|S 	 |                      d¦  «        r
|d d…         }|                      dd¦  «        d         }|| k    rt          j                             |¦  «        S t
          j        |         j        }|s|S |                     |                     t          j	        d¦  «        d         d¦  «        d          
                    t          j	        ¦  «        S # t          $ r |cY S w xY w)Nz.pycrÙ   r×   r:   r   é   )rà   Úsplitrl   rm   Úbasenamero   ÚmodulesÚ__file__r  ÚsepÚlstriprH  )rV  r‚  Úbase_moduleÚbase_module_paths       rS   Úfilename_for_moduler“  /  s  € ð ð ˜6ð ØˆðØ×Ò˜VÑ$Ô$ð 	%Ø   ”}ˆHà—l’l 3¨Ñ*Ô*¨1Ô-ˆØ˜&Ò Ð Ý”7×#Ò# HÑ-Ô-Ð-åœ; {Ô3Ô<ÐØð 	ØˆOà�~Š~Ð.×5Ò5µb´f¸aÑ@Ô@ÀÔCÀQÑGÔGÈÔK×RÒRÝŒFñ
ô 
ð 	
øõ ð ð ð Øˆˆˆðøøøs   ˆAC  Á(C  ÂAC  Ã C/Ã.C/TÚinclude_local_variablesÚinclude_source_contextÚcustom_reprz&Optional[Callable[..., Optional[str]]]úDict[str, Any]c                 ó˜  — ddl m} t          | dd ¦  «        }|sd }d }	n| j        j        }| j        j        }		 | j        d         }
n# t          $ r d }
Y nw xY w|€| j        }	 |rt          j
                             |¦  «        nd }n# t          $ r d }Y nw xY wt          |
|¦  «        pd ||	pd|
|dœ}t          j        ¦   «         j        }t!          |¦  «        rt#          |d         d         ¦  «        }|rt%          | ||¦  «        \  |d	<   |d
<   |d<   t!          |¦  «        r‚|d         d         }t'          |t"          ¦  «        r&|r# |t)          | j        ¦  «        d|¬¦  «        |d<   n^t-          t)          | j        ¦  «        |¬¦  «        }|r ||d|¬¦  «        }||d<   n%|r# |t)          | j        ¦  «        d|¬¦  «        |d<   |S )Nr   )Ú	serializer€  rº   z	<unknown>)rQ  r‚  ÚfunctionrV  rR  rZ  r[  rx  ry  rz  Ústack_frame_variablesT)Úis_varsr–  Úvars)ÚitemsÚ	behaviour)Úsentry_sdk.serializerr™  r9  r€  r�  Úco_namerD  rH  Úf_linenorl   rm   Úabspathr“  rÄ   rÅ   rg  rh  rQ   rƒ  rú   rû   rG  r   )r@  r|  r”  r•  r}  r–  r™  r€  r‚  rš  rV  Úos_abs_pathr  rr  Údc_stack_frame_vars_configÚlocal_variables_to_sendÚserialized_variabless                    rS   Úserialize_framer¨  H  sŽ  € ð 0Ð/Ð/Ð/Ð/Ð/å�U˜H dÑ+Ô+€FØð (ØˆØˆˆà”<Ô+ˆØ”<Ô'ˆðØ” Ô,ˆˆøÝð ð ð Øˆˆˆðøøøð ÐØ”Nˆ	ðØ3;ÐE•b”g—o’o hÑ/Ô/Ð/ÀˆˆøÝð ð ð Øˆˆˆðøøøõ (¨°Ñ9Ô9ÐA¸TØØÐ+ ØØðð €Bõ  Ô*Ñ,Ô,Ô4€NÝ" >Ñ2Ô2ð 
Ý!%ØÐ,Ô-Ð.CÔDñ"
ô "
Ðð ð 
ÝDVØ�9Ð.ñE
ô E
ÑAˆˆ=Ñ˜2˜nÑ-¨r°.Ñ/Aõ # >Ñ2Ô2ð 
Ø%3Ð4EÔ%FØ#ô&
Ð"õ Ð0µ$Ñ7Ô7ð 	2Ø)ð Ø&˜YÝ˜œÑ(Ô(°$ÀKðñ ô ��6‘
øõ 'LÝ˜5œ>Ñ*Ô*Ø4ð'ñ 'ô 'Ð#ð
 'ð 2Ø'0 yØ+°TÀ{ð(ñ (ô (Ð$ð 2��6‘
øà	 ð 
Ø�YÝ�”Ñ Ô ¨$¸Kð
ñ 
ô 
ˆˆ6‰
ð €Is#   ¸A ÁAÁAÁ"#B ÂBÂBc                 óà   — d}g }t          j        ¦   «         }|�>t          |¦  «        s&|                     t	          || ||¬¦  «        ¦  «         |j        }|­>|                     ¦   «          d|iS )NT)r”  r•  r}  Úframes)ro   Ú	_getframerJ  r2  r¨  Úf_backÚreverse)r”  r•  r}  rC  rª  r<   s         rS   Úcurrent_stacktracer®  ˜  s�   € ð
 ÐØ€Få"œ}™œ€AØ
ˆ-Ý  Ñ#Ô#ð 	Ø�MŠMÝØØ,CØ+AØ%5ð	ñ ô ñô ð ð ŒHˆð ˆ-ð ‡N‚NÑÔÐà�fÐÐrU   Ú	exc_valuec                 ó$   — t          | dd ¦  «        S )NÚerrnor8  )r¯  s    rS   Ú	get_errnor²  ²  s   € Ý�9˜g tÑ,Ô,Ð,rU   r³   c                 ó>  — t          t          | dd¦  «        pt          | dd¦  «        pt          | ¦  «        ¦  «        }t          | dd ¦  «        }t          |t          ¦  «        r8t	          |¦  «        dk    r%|dd                     d„ |D ¦   «         ¦  «        z   z  }|S )NÚmessagerù   ÚdetailÚ	__notes__r   ú
c              3   óD   K  — | ]}t          |t          ¦  «        ¯|V — Œd S r­   )rú   rM   )r/  Únotes     rS   r1  z$get_error_message.<locals>.<genexpr>Ã  s1   è è € Ð#TÐ#T¨T½jÈÍsÑ>SÔ>SÐ#T DÐ#TÐ#TÐ#TÐ#TÐ#TÐ#TrU   )r†  r9  rú   Úlistrp  r  )r¯  r´  Únotess      rS   Úget_error_messager¼  ¶  s§   € ÝÝ�	˜9 bÑ)Ô)ð 	Ý�9˜h¨Ñ+Ô+ð	å�IÑÔñô €Gõ ˜I {°DÑ9Ô9€EÝ�%�ÑÔð U¥3 u¡:¤:°¢> >Ø�4˜$Ÿ)š)Ð#TÐ#T°UÐ#TÑ#TÔ#TÑTÔTÑTÑTˆà€NrU   Úexc_typerr  úOptional[Dict[str, Any]]Ú	mechanismÚexception_idÚ	parent_idrt  Ú
full_stackúOptional[list[dict[str, Any]]]c	                 óø  ‡‡‡‡— i }	|r|                      ¦   «         ndddœ|	d<   |�||	d         d<   |�t          |¦  «        }
nd}
|
�D|	d                              di ¦  «                             di ¦  «                             d	|
¦  «         |�||	d         d
<   |dk    }|s|�||	d         d<   d|	d         d<   |rd|	d         vrd|	d         d<   t          duot	          |t          ¦  «        }|rd|	d         d<   t          | ¦  «        |	d<   t          | ¦  «        |	d<   t          |¦  «        |	d<   |€	dŠdŠdŠdŠn-|d         Š|d         Š|d         Š|                     d¦  «        Šˆˆˆˆfd„t          t          |¦  «        t          t          dz   ¦  «        ¦  «        D ¦   «         }t          |¦  «        t          k    rt          j        d¬¦  «        |	d<   n|r|s|}nt!          |||¦  «        }d|i|	d<   |	S )zå
    Creates a dict that goes into the events `exception.values` list and is ingestible by Sentry.

    See the Exception Interface documentation for more details:
    https://develop.sentry.dev/sdk/event-payloads/exception/
    ÚgenericT©r%  Úhandledr¿  NrÀ  Úmetar±  Únumberrt  r   rÁ  Úchainedr%  Úis_exception_grouprV  rH   r”  r•  r}  r–  c           
      óT   •— g | ]$\  }}t          |j        |j        ‰‰‰‰¬ ¦  «        ‘Œ%S ))r|  r”  r•  r}  r–  )r¨  rM  r|  )r/  r´   Ú_r–  r”  r•  r}  s      €€€€rS   re  z5single_exception_from_error_tuple.<locals>.<listcomp>
  sT   ø€ ð &ð &ð &ñ ˆB�õ 	ØŒKØ”lØ$;Ø#9Ø-Ø#ð	
ñ 	
ô 	
ð&ð &ð &rU   r:   rÌ   Ú
stacktracerª  )Úcopyr²  Ú
setdefaultr   rú   r?  r:  r¼  rŠ   ÚziprP  ÚrangeÚMAX_STACK_FRAMESrp  r   Úremoved_because_over_size_limitÚmerge_stack_frames)r½  r¯  r´   rr  r¿  rÀ  rÁ  rt  rÂ  Úexception_valuer±  Úis_root_exceptionrË  rª  Ú
new_framesr–  r”  r•  r}  s                  @@@@rS   Ú!single_exception_from_error_tuplerÙ  È  sµ  øøøø€ ð" )+€Oà%ÐOˆ	�ŠÑÔÐ°IÈ$Ð+OÐ+Oð �KÑ ð ÐØ7Cˆ˜Ô$ ^Ñ4àÐÝ˜)Ñ$Ô$ˆˆàˆàÐØ˜Ô$×/Ò/°¸Ñ;Ô;×FÒFØ�Rñ	
ô 	
ç
Š*�X˜uÑ
%Ô
%Ð
%àÐØ17ˆ˜Ô$ XÑ.à$¨Ò)ÐØð 9 Ð!6Ø4=ˆ˜Ô$ [Ñ1Ø/8ˆ˜Ô$ VÑ,àð 9˜V¨?¸;Ô+GÐGÐGØ/8ˆ˜Ô$ VÑ,å+°4Ð7ð ½JØÕ%ñ=ô =Ðð ð BØ=Aˆ˜Ô$Ð%9Ñ:å /°Ñ 9Ô 9€O�HÑÝ+¨HÑ5Ô5€O�FÑÝ0°Ñ;Ô;€O�GÑàÐØ"&ÐØ!%ÐØÐØˆˆà"0Ð1JÔ"KÐØ!/Ð0HÔ!IÐØ)Ð*<Ô=ÐØ$×(Ò(¨Ñ7Ô7ˆð&ð &ð &ð &ð &ð &ð &õ � R™œ­%Õ0@À1Ñ0DÑ*EÔ*EÑFÔFð&ñ &ô &€Fõ ˆ6�{„{Õ%Ò%Ð%õ )7Ô(VØð)
ñ )
ô )
ˆ˜Ñ%Ð%ð 
ð ?Øð 	PØˆJˆJå+¨F°JÀÑOÔOˆJà)1°:Ð(>ˆ˜Ñ%àÐrU   Ú__suppress_context__úIterator[ExcInfo]c              #   ó’  K  — | \  }}}g }t          ¦   «         }|�¤|�¤t          |¦  «        |vr•|||fV — |                     |¦  «         |                     t          |¦  «        ¦  «         |j        r|j        }n|j        }|€d S t          |¦  «        }|}t          |dd ¦  «        }|�|�t          |¦  «        |v°�d S d S d S d S d S d S )NÚ__traceback__)	ÚsetÚidr2  ÚaddrÚ  Ú	__cause__Ú__context__r%  r9  )rÁ   r½  r¯  r´   Úseen_exceptionsÚseen_exception_idsÚcauses          rS   Úwalk_exception_chainræ  2  s  è è € Ø"*Ñˆ�)˜RàˆÝ),©¬Ðð Ð ØÐ%Ý�9‘”Ð%7Ð7Ð7à˜I rÐ)Ð)Ð)Ð)ð
 ×"Ò" 9Ñ-Ô-Ð-Ø×"Ò"¥2 i¡=¤=Ñ1Ô1Ð1àÔ-ð .Ø!Ô+��à!Ô-�Øˆ}Ø�Ý˜E‘{”{ˆHØˆIÝ˜ °Ñ6Ô6ˆBð) Ð ØÐ%Ý�9‘”Ð%7Ð7Ð7Ð7Ð7ð !Ð Ø%Ð%Ø7Ð7ð !Ð Ø%Ð%rU   c              #   ó   K  — | V — d S r­   rª   rÃ   s    rS   ræ  ræ  Q  s   è è € ØˆˆˆˆˆrU   rã  zOptional[list[BaseException]]rä  zOptional[Set[int]]z Tuple[int, List[Dict[str, Any]]]c                 ó  — |
€t          ¦   «         }
|	€g }	|�t          |¦  «        |
v r|g fS |�7|	                     |¦  «         |
                     t          |¦  «        ¦  «         t	          | ||||||||¬¦	  «	        }|g}|}|dz  }t          |d¦  «        o|j        }|rr|ot          |d¦  «        o|j        du}|rT|j        }t          t          |¦  «        |t          |dd¦  «        |||d||	|
¬¦
  «
        \  }}|                     |¦  «         nq|ot          |d¦  «        o|j        du}|rT|j        }t          t          |¦  «        |t          |dd¦  «        |||d||	|
¬¦
  «
        \  }}|                     |¦  «         |ot          |d	¦  «        }|rkt          |j        ¦  «        D ]V\  }}t          t          |¦  «        |t          |dd¦  «        ||||d
|z  ||	|
¬¦  «        \  }}|                     |¦  «         ŒW||fS )a.  
    Creates the list of exceptions.
    This can include chained exceptions and exceptions from an ExceptionGroup.

    See the Exception Interface documentation for more details:
    https://develop.sentry.dev/sdk/event-payloads/exception/

    Args:
        exception_id (int):

            Sequential counter for assigning ``mechanism.exception_id``
            to each processed exception. Is NOT the result of calling `id()` on the exception itself.

        parent_id (int):

            The ``mechanism.exception_id`` of the parent exception.

            Written into ``mechanism.parent_id`` in the event payload so Sentry can
            reconstruct the exception tree.

            Not to be confused with ``seen_exception_ids``, which tracks Python ``id()``
            values for cycle detection.
    N)	r½  r¯  r´   rr  r¿  rÀ  rÁ  rt  rÂ  r:   rÚ  rá  rÝ  )
r½  r¯  r´   rr  r¿  rÀ  rt  rÂ  rã  rä  râ  Ú
exceptionszexceptions[%s])r½  r¯  r´   rr  r¿  rÀ  rÁ  rt  rÂ  rã  rä  )rÞ  rß  r2  rà  rÙ  ri  rÚ  rá  Úexceptions_from_errorr%  r9  Úextendrâ  Ú	enumerateré  )r½  r¯  r´   rr  r¿  rÀ  rÁ  rt  rÂ  rã  rä  Úparentré  Úshould_supress_contextÚexception_has_causerå  Úchild_exceptionsÚexception_has_contentÚcontextrË  ÚidxÚes                         rS   rê  rê  U  s×  € ðJ Ð!Ý ™UœUÐàÐØˆàÐ¥ I¡¤Ð2DÐ!DÐ!DØ˜bÐ!Ð!àÐØ×Ò˜yÑ)Ô)Ð)Ø×Ò�r )™}œ}Ñ-Ô-Ð-å.ØØØØ%ØØ!ØØØð
ñ 
ô 
€Fð �€Jà€IØ�AÑ€Lõ 	�	Ð1Ñ2Ô2ÐU°yÔ7Uð ð ð .0ð ð 0Ý˜	 ;Ñ/Ô/ð0àÔ#¨4Ð/ð 	ð
 ð 	0ØÔ'ˆEÝ/DÝ˜e™œØÝ˜5 /°4Ñ8Ô8Ø-Ø#Ø)Ø"Ø%Ø /Ø#5ð0ñ 0ô 0Ñ,ˆ\Ð+ð ×ÒÐ.Ñ/Ô/Ð/øð ð 2Ý˜	 =Ñ1Ô1ð2àÔ%¨TÐ1ð 	ð
 !ð 	0ØÔ+ˆGÝ/DÝ˜g™œØ!Ý˜7 O°TÑ:Ô:Ø-Ø#Ø)Ø$Ø%Ø /Ø#5ð0ñ 0ô 0Ñ,ˆ\Ð+ð ×ÒÐ.Ñ/Ô/Ð/ð #ÐG¥w¨y¸,Ñ'GÔ'GÐØð 0Ý 	Ô 4Ñ5Ô5ð 	0ð 	0‰FˆC�Ý/DÝ˜a™œØÝ˜1˜o¨tÑ4Ô4Ø-Ø#Ø)Ø#Ø'¨#Ñ-Ø%Ø /Ø#5ð0ñ 0ô 0Ñ,ˆ\Ð+ð ×ÒÐ.Ñ/Ô/Ð/Ð/à˜*Ð%Ð%rU   úList[Dict[str, Any]]c                 ó0  — | \  }}}t           d uot          |t           ¦  «        }|rt          |||||dd|¬¦  «        \  }}	n@g }	t          | ¦  «        D ].\  }}}|	                     t          ||||||¬¦  «        ¦  «         Œ/|	                     ¦   «          |	S )Nr   )r½  r¯  r´   rr  r¿  rÀ  rÁ  rÂ  )r½  r¯  r´   rr  r¿  rÂ  )r   rú   rê  ræ  r2  rÙ  r­  )
rÁ   rr  r¿  rÂ  r½  r¯  r´   rË  rÍ  ré  s
             rS   Úexceptions_from_error_tupler÷  à  sî   € ð 'Ñ€Hˆi˜å+°4Ð7ð ½JØÕ%ñ=ô =Ðð ð Ý/ØØØØ)ØØØØ!ð	
ñ 	
ô 	
‰ˆˆJˆJð ˆ
Ý';¸HÑ'EÔ'Eð 
	ð 
	Ñ#ˆH�i Ø×ÒÝ1Ø%Ø'ØØ#1Ø'Ø)ðñ ô ñ	ô 	ð 	ð 	ð ×ÒÑÔÐàÐrU   c                 óp   — 	 t          | ¦  «        S # t          $ r t          | ¦  «        dd…         cY S w xY w)Nr:   rÙ   )rM   ÚUnicodeDecodeErrorrˆ  rÌ   s    rS   Ú	to_stringrú    sI   € ð!Ý�5‰zŒzÐøÝð !ð !ð !Ý�E‰{Œ{˜1˜R˜4Ô Ð Ð Ð ð!øøøs   ‚ ‘!5´5Úeventr1   ú#Iterator[Annotated[Dict[str, Any]]]c              #   ó  K  — d| v r
| d         V — d| v r.| d                               d¦  «        pdD ]}d|v r
|d         V — Œd| v rC| d                               d¦  «        pdD ]'}t          |t          ¦  «        rd|v r
|d         V — Œ&d S d S )NrÎ  ÚthreadsÚvaluesrª   Ú	exception)rŠ   rú   rû   )rû  Úthreadr   s      rS   Úiter_event_stacktracesr    sã   è è € Ø�uÐÐØ�LÔ!Ð!Ð!Ð!Ø�EÐÐØ˜IÔ&×*Ò*¨8Ñ4Ô4Ð:¸ð 	+ð 	+ˆFØ˜vÐ%Ð%Ø˜\Ô*Ð*Ð*Ð*øØ�eÐÐØ˜{Ô+×/Ò/°Ñ9Ô9Ð?¸Rð 	.ð 	.ˆIÝ˜)¥TÑ*Ô*ð .¨|¸yÐ/HÐ/HØ Ô-Ð-Ð-Ð-øð Ðð	.ð 	.rU   úIterator[Dict[str, Any]]c              #   ó¦   K  — t          | ¦  «        D ]>}t          |t          ¦  «        r	|j        pi }|                     d¦  «        pdD ]}|V — ŒŒ?d S )Nrª  rª   )r  rú   r   rH   rŠ   )rû  rÎ  r@  s      rS   Úiter_event_framesr    sv   è è € Ý,¨UÑ3Ô3ð ð ˆ
Ý�j¥.Ñ1Ô1ð 	0Ø#Ô)Ð/¨RˆJà—^’^ HÑ-Ô-Ð3°ð 	ð 	ˆEØˆKˆKˆKˆKð	ð	ð rU   Úin_app_excludeúOptional[List[str]]Úin_app_includeÚproject_rootc                 ó²   — t          | ¦  «        D ]F}t          |t          ¦  «        r	|j        pi }t	          |                     d¦  «        |||¬¦  «         ŒG| S )Nrª  )r  r  r	  )r  rú   r   rH   Úset_in_app_in_framesrŠ   )rû  r  r  r	  rÎ  s        rS   Úhandle_in_appr  (  su   € õ -¨UÑ3Ô3ð 	
ð 	
ˆ
Ý�j¥.Ñ1Ô1ð 	0Ø#Ô)Ð/¨RˆJåØ�NŠN˜8Ñ$Ô$Ø)Ø)Ø%ð		
ñ 	
ô 	
ð 	
ð 	
ð €LrU   rª  c                 óP  — | sd S | D ]ž}|                      d¦  «        }|�Œ|                      d¦  «        }t          ||¦  «        rd|d<   ŒEt          ||¦  «        rd|d<   Œ[|                      d¦  «        }|€Œst          |¦  «        rd|d<   Œˆt          ||¦  «        rd|d<   ŒžŒŸ| S )NÚin_apprV  TFr‚  )rŠ   Ú_module_in_listÚ_is_external_sourceÚ_is_in_project_root)rª  r  r  r	  r@  Úcurrent_in_apprV  r‚  s           rS   r  r  <  sí   € ð ð Øˆtàð ð ˆàŸš 8Ñ,Ô,ˆØÐ%Øà—’˜8Ñ$Ô$ˆõ ˜6 >Ñ2Ô2ð 	Ø"ˆE�(‰OØõ ˜6 >Ñ2Ô2ð 	Ø#ˆE�(‰OØð —9’9˜ZÑ(Ô(ˆØÐØå˜xÑ(Ô(ð 	Ø#ˆE�(‰OØå˜x¨Ñ6Ô6ð 	Ø"ˆE�(‰OØð	ð €MrU   rÈ   úUnion[BaseException, ExcInfo]c                 ó¶  — t          | t          ¦  «        rt          | ¦  «        dk    r| \  }}}nˆt          | t          ¦  «        rTt	          | dd ¦  «        }|�t          | ¦  «        }| }nNt          j        ¦   «         \  }}}|| urd }| }t          | ¦  «        }nt          dt          | ¦  «        z  ¦  «        ‚|||f}t          rt          t          |¦  «        }|S )Né   rÝ  z,Expected Exception object to report, got %s!)rú   Útuplerp  ÚBaseExceptionr9  r%  ro   rÁ   rß   r   r,   r2   )rÈ   r½  r¯  r´   rÁ   s        rS   ré   ré   g  så   € Ý�%�ÑÔð W¥C¨¡J¤J°!¢O OØ"'Ñˆ�)˜R˜RÝ	�E�=Ñ	)Ô	)ð WÝ�U˜O¨TÑ2Ô2ˆØˆ>Ý˜E‘{”{ˆHØˆIˆIå&)¤l¡n¤nÑ#ˆH�i Ø Ð%Ð%Ø�Ø!�	Ý ™;œ;�øõ ÐGÍ$ÈuÉ+Ì+ÑUÑVÔVÐVà˜) RÐ(€Håð +õ � Ñ*Ô*ˆà€OrU   c                 óÜ   ‡— d„ | D ¦   «         Šˆfd„|D ¦   «         }|                      | ¦  «         |r|                     dt          ¦  «        nd}|�|t          |¦  «        |z
  d…         }|S )zV
    Add the missing frames from full_stack to frames and return the merged list.
    c                 óJ   — h | ] }|d          |d         |d         |d         f’Œ!S ©r‚  ry  rR  rš  rª   )r/  r@  s     rS   ú	<setcomp>z%merge_stack_frames.<locals>.<setcomp>‹  sK   € ð ð ð ð ð �*ÔØ�.Ô!Ø�(ŒOØ�*Ôð		
ðð ð rU   c                 óT   •— g | ]$}|d          |d         |d         |d         f‰v¯"|‘Œ%S r  rª   )r/  Ú
stackframeÚ	frame_idss     €rS   re  z&merge_stack_frames.<locals>.<listcomp>•  s]   ø€ ð 
ð 
ð 
àà�zÔ"Ø�~Ô&Ø�xÔ Ø�zÔ"ð	
ð ðð ð 	ðð ð rU   Úmax_stack_framesN)rë  rŠ   r   rp  )rª  rÂ  rr  rØ  r  r  s        @rS   rÕ  rÕ  ƒ  s´   ø€ ðð ð ðñ ô €Ið
ð 
ð 
ð 
à$ð
ñ 
ô 
€Jð ×Ò�fÑÔÐð
 ð	ˆ×ÒÐ-Õ/GÑHÔHÐHàð ð
 Ð#Ø¥ J¡¤Ð2BÑ BÐ DÐ DÔEˆ
àÐrU   úTuple[Event, Dict[str, Any]]c                 óö   — t          | ¦  «        } t          | ¦  «        }|r?|                     dt          ¦  «        r$t	          |d         |d         ¬¦  «        d         }nd }ddt          | |||¦  «        idœ|fS )	NÚadd_full_stackr”  r}  )r”  r}  rª  rÈ   rÿ  )Úlevelr   )ré   rê   rŠ   r   r®  r÷  )rÁ   rr  r¿  ÚhintrÂ  s        rS   Úevent_from_exceptionr%  ®  s´   € õ
 # 8Ñ,Ô,€HÝ# HÑ-Ô-€Dàð ˜.×,Ò,Ð-=Õ?UÑVÔVð Ý'Ø$2Ð3LÔ$MØ+Ð,>Ô?ð
ñ 
ô 
ð ôˆ
ˆ
ð
 ˆ
ð àÕ5Ø˜n¨i¸ñô ðð	
ð 	
ð 	ð
ð 
rU   Únamerž  c                 ób   — | €dS |sdS |D ]#}|| k    s|                       |dz   ¦  «        r dS Œ$dS )NFr×   T©rE  )r&  rž  Úitems      rS   r  r  Ë  sX   € Ø€|Øˆuàð Øˆuàð ð ˆØ�4Š<ˆ<˜4Ÿ?š?¨4°#©:Ñ6Ô6ˆ<Ø�4�4ð ð ˆ5rU   c                 ó<   — | €dS t          j        d| ¦  «        d u}|S )NFz [\\/](?:dist|site)-packages[\\/]©r  Úsearch)r‚  Úexternal_sources     rS   r  r  Ù  s1   € àÐØˆuõ 	Œ	Ð5°xÑ@Ô@ÈÐLð ð ÐrU   c                 ó@   — | �|€dS |                       |¦  «        rdS dS )NFTr(  )r‚  r	  s     rS   r  r  ä  s6   € ð Ð˜<Ð/Øˆuð ×Ò˜<Ñ(Ô(ð Øˆtàˆ5rU   ÚstringÚ	max_bytesc                 óv   — |                       d¦  «        d|dz
  …                              dd¬¦  «        }|dz   S )zd
    Truncate a UTF-8-encodable string to the last full codepoint so that it fits in max_bytes.
    r\   Nr  Úignore)Úerrorsú...)r_   ry   )r/  r0  Ú	truncateds      rS   Ú_truncate_by_bytesr6  ñ  s@   € ð —’˜gÑ&Ô& ¨°Q© Ô7×>Ò>¸wÈxÐ>ÑXÔX€Ià�uÑÐrU   c                 óx   — 	 t          |                      d¦  «        ¦  «        S # t          t          f$ r Y d S w xY w)Nr\   )rp  r_   ÚUnicodeEncodeErrorrù  rÌ   s    rS   Ú_get_size_in_bytesr9  ú  sI   € ðÝ�5—<’< Ñ(Ô(Ñ)Ô)Ð)øÝÕ 2Ð3ð ð ð Øˆtˆtðøøøs   ‚!$ ¤9¸9zUnion[AnnotatedValue, str]c                 óî   — | r|€| S t          | ¦  «        }t          | ¦  «        }|�||k    rt          | |¦  «        }n|�||k    r| d |dz
  …         dz   }n| S t          ||p|dd|dz
  |ggdœ¬¦  «        S )Nr  r4  z!limitÚx)rp  Úrem)rH   Úmetadata)r9  rp  r6  r   )rH   rS  Ú	byte_sizeÚ	text_sizeÚtruncated_values        rS   rb  rb    s¾   € ð ð �JÐ&Øˆå" 5Ñ)Ô)€IÝ�E‘
”
€IàÐ ¨ZÒ!7Ð!7å,¨U°JÑ?Ô?ˆˆØ	Ð	 9¨zÒ#9Ð#9àÐ 0 *¨q¡.Ð 0Ô1°EÑ9ˆˆàˆåØàÐ) 	Ø˜s J°¡N°JÐ?Ð@ð
ð 
ðñ ô ð rU   r#  zOptional[Tuple[int, ...]]c                 ó‚  — d}t          j        d|z   dz   t           j        t           j        z  ¦  «        }	 |                     | ¦  «                             ¦   «         d         }t          t          t          | 	                    d¦  «        dd…         ¦  «        ¦  «        }n# t          t          t          f$ r Y dS w xY w|S )zÌ
    Parses a version string into a tuple of integers.
    This uses the parsing loging from PEP 440:
    https://peps.python.org/pep-0440/#appendix-b-parsing-version-strings-with-regular-expressions
    a    # noqa: N806
        v?
        (?:
            (?:(?P<epoch>[0-9]+)!)?                           # epoch
            (?P<release>[0-9]+(?:\.[0-9]+)*)                  # release segment
            (?P<pre>                                          # pre-release
                [-_\.]?
                (?P<pre_l>(a|b|c|rc|alpha|beta|pre|preview))
                [-_\.]?
                (?P<pre_n>[0-9]+)?
            )?
            (?P<post>                                         # post release
                (?:-(?P<post_n1>[0-9]+))
                |
                (?:
                    [-_\.]?
                    (?P<post_l>post|rev|r)
                    [-_\.]?
                    (?P<post_n2>[0-9]+)?
                )
            )?
            (?P<dev>                                          # dev release
                [-_\.]?
                (?P<dev_l>dev)
                [-_\.]?
                (?P<dev_n>[0-9]+)?
            )?
        )
        (?:\+(?P<local>[a-z0-9]+(?:[-_\.][a-z0-9]+)*))?       # local version
    z^\s*z\s*$r‹   r×   Nr  )r  r  ÚVERBOSEÚ
IGNORECASEr  Ú	groupdictr  Úmapr	  r‹  r  rß   rÞ   )r#  ÚVERSION_PATTERNÚpatternr‹   Úrelease_tuples        rS   Úparse_versionrI    s»   € ð€Oõ> ŒjØ�/Ñ! GÑ+Ý
Œ
•R”]Ñ"ñô €Gð
Ø—-’- Ñ(Ô(×2Ò2Ñ4Ô4°YÔ?ˆÝ+0µµS¸'¿-º-ÈÑ:LÔ:LÈRÈaÈRÔ:PÑ1QÔ1QÑ+RÔ+RˆˆøÝ•z¥>Ð2ð ð ð Øˆtˆtðøøøð Ðs   ¶A*B! Â!B<Â;B<c                  óÖ  — 	 ddl } ddlm} t          d„ t	          j        d| j        ¦  «        dd…         D ¦   «         ¦  «        } |dd¦  «        r&t          j        d	k    r|d
k    s |dd¦  «        rdS dS n# t          $ r Y nw xY w	 ddl
}ddlm} t          |j        ¦  «        }|€t                               d¦  «         dS  |d¦  «        r|dk     rdS n# t          $ r Y nw xY wdS )z‡
    Returns whether gevent/eventlet have patched the stdlib in a way where thread locals are now more "correct" than contextvars.
    r   N)Úis_object_patchedc                 ó,   — g | ]}t          |¦  «        ‘ŒS rª   )r	  )r/  Úparts     rS   re  z*_is_contextvars_broken.<locals>.<listcomp>Y  s   € ÐRÐRÐR˜4�S�‰YŒYÐRÐRÐRrU   z	a|b|rc|\.rŠ  Ú	threadingÚlocal©r  r"  )é   é	   ÚcontextvarsÚ
ContextVarFT)Úis_monkey_patchedzYInternal error in Sentry SDK: Could not parse Greenlet version from greenlet.__version__.r  )r   rY  )ÚgeventÚgevent.monkeyrK  r  r  r‹  Ú__version__ro   Úversion_inforj  ÚgreenletÚeventlet.patcherrU  rI  rÇ   rÈ   )rV  rK  Úversion_tuplerZ  rU  Úgreenlet_versions         rS   Ú_is_contextvars_brokenr^  O  sx  € ðØˆˆˆØ3Ð3Ð3Ð3Ð3Ð3õ ØRÐR¥2¤8¨L¸&Ô:LÑ#MÔ#MÈbÈqÈbÔ#QÐRÑRÔRñ
ô 
ˆð Ð˜[¨'Ñ2Ô2ð 	õ Ô! VÒ+Ð+°ÀÒ0HÐ0Hà%Ð% m°\ÑBÔBð 1Ið �uà�4ð	øõ  ð ð ð ØˆðøøøðØˆˆˆØ6Ð6Ð6Ð6Ð6Ð6å(¨Ô)=Ñ>Ô>ÐàÐ#Ý�LŠLØkñô ð ð �5àÐ˜XÑ&Ô&ð 	Ð+;¸fÒ+DÐ+DØ�4øøÝð ð ð Øˆðøøøð ˆ5s*   ‚A1A8 Á8
BÂBÂ	:C ÃC Ã
C&Ã%C&rO  c                 ó&   ‡ —  G ˆ fd„d¦  «        }|S )Nc                   óD   •— e Zd Zddeddddfˆ fd„Zddd„Zdd	„Zdd„ZdS )ú1_make_threadlocal_contextvars.<locals>.ContextVarNr&  Údefaultr   rJ   c                 ó`   •— || _         || _         ‰¦   «         | _         ‰¦   «         | _        d S r­   )Ú_nameÚ_defaultÚ_localÚ_original_local)r¯   r&  rb  rO  s      €rS   r  z:_make_threadlocal_contextvars.<locals>.ContextVar.__init__†  s2   ø€ ØˆDŒJØ#ˆDŒMØ˜%™'œ'ˆDŒKØ#( 5¡7¤7ˆDÔ Ð Ð rU   c                 ó<   — t          | j        d|p| j        ¦  «        S )NrH   )r9  rf  re  )r¯   rb  s     rS   rŠ   z5_make_threadlocal_contextvars.<locals>.ContextVar.getŒ  s   € Ý˜4œ;¨°Ð1I¸D¼MÑJÔJÐJrU   rH   c                 ó´   — t          t          j        d¦  «        ¦  «        }|                      ¦   «         }t	          | j        ||¦  «         || j        _        |S )Né@   )rM   ÚrandomÚgetrandbitsrŠ   Úsetattrrg  rf  rH   )r¯   rH   ÚtokenÚoriginal_values       rS   rÞ  z5_make_threadlocal_contextvars.<locals>.ContextVar.set�  sK   € Ý�Ô*¨2Ñ.Ô.Ñ/Ô/ˆEØ!ŸXšX™ZœZˆNÝ�DÔ(¨%°Ñ@Ô@Ð@Ø %ˆDŒKÔØˆLrU   rn  c                 ó^   — t          | j        |¦  «        | j        _        | j        j        |= d S r­   )r9  rg  rf  rH   rü   )r¯   rn  s     rS   Úresetz7_make_threadlocal_contextvars.<locals>.ContextVar.reset–  s-   € Ý '¨Ô(<¸eÑ DÔ DˆDŒKÔàÔ$Ô-¨eÐ4Ð4Ð4rU   r­   )rb  r   rJ   r   )rH   r   rJ   r   )rn  r   rJ   N)rº   r»   r¼   rM   r  rŠ   rÞ  rq  ©rO  s   €rS   rT  ra  ƒ  s“   ø€ € € € € ð	+ð 	+ ð 	+¨uð 	+Àð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð	Kð 	Kð 	Kð 	Kð 	Kð	ð 	ð 	ð 	ð	5ð 	5ð 	5ð 	5ð 	5ð 	5rU   rT  rª   )rO  rT  s   ` rS   Ú_make_threadlocal_contextvarsrs  ‚  s=   ø€ ð5ð 5ð 5ð 5ð 5ð 5ð 5ñ 5ô 5ð 5ð0 ÐrU   úTuple[bool, type]c                  óØ   — t          ¦   «         sFt          j        dk     r	 ddlm}  d| fS # t
          $ r Y nw xY w	 ddlm}  d| fS # t
          $ r Y nw xY wddlm} dt          |¦  «        fS )zÛ
    Figure out the "right" contextvars installation to use. Returns a
    `contextvars.ContextVar`-like class with a limited API.

    See https://docs.sentry.io/platforms/python/contextvars/ for more information.
    rP  r   )rT  Trr  F)
r^  ro   rY  ÚaiocontextvarsrT  rj  rS  rN  rO  rs  )rT  rO  s     rS   Ú_get_contextvarsrw  ž  sÎ   € õ "Ñ#Ô#ð õ
 Ô˜fÒ$Ð$ðØ5Ð5Ð5Ð5Ð5Ð5à˜ZÐ'Ð'øÝð ð ð Ø�ðøøøðØ2Ð2Ð2Ð2Ð2Ð2à˜ZÐ'Ð'øÝð ð ð Ø�ðøøøð
  ÐÐÐÐÐàÕ/°Ñ6Ô6Ð6Ð6s    	* ª
7¶7»	A Á
AÁAzö

With asyncio/ASGI applications, the Sentry SDK requires a functional
installation of `contextvars` to avoid leaking scope/context data across
requests.

Please refer to https://docs.sentry.io/platforms/python/contextvars/ for more information.
Úis_sentry_internal_task©rb  z	set[type]Ú_control_flow_exception_classesc                  ó4   — t                                ¦   «         S r­   )Ú_is_sentry_internal_taskrŠ   rª   rU   rS   Úis_internal_taskr}  Õ  s   € Ý#×'Ò'Ñ)Ô)Ð)rU   úGenerator[None, None, None]c               #   óº   K  — t                                d¦  «        } 	 dV — t                                | ¦  «         dS # t                                | ¦  «         w xY w)z2Context manager to mark a task as Sentry internal.TN)r|  rÞ  rq  )rn  s    rS   Úmark_sentry_task_internalr€  Ù  s^   è è € õ %×(Ò(¨Ñ.Ô.€Eð.Øˆˆˆå ×&Ò& uÑ-Ô-Ð-Ð-Ð-øÕ ×&Ò& uÑ-Ô-Ð-Ð-øøøs	   ž> ¾AÚfuncúCallable[..., Any]c                 óè  — d}d\  }}t          | t          ¦  «        r"t          | j        d¦  «        rd\  }}| j        } nCt	          | dd¦  «        pt	          | dd¦  «        }t          |t
          ¦  «        rd\  }}|j        } t          | d¦  «        r| j        }nt          | d¦  «        r| j        }|�?t          | d	¦  «        r't          | j        t          ¦  «        r| j        d
z   |z   }||z   |z   }|S )zbReturn the qualified name of func. Works with regular function, lambda, partial and partialmethod.N)rù   rù   rº   )zpartial(<function ú>)Ú_partialmethodÚ__partialmethod__)zpartialmethod(<function r„  r¼   r»   r×   )
rú   r   ri  r�  r9  r	   r¼   rº   r»   rM   )r�  Úfunc_qualnameÚprefixÚsuffixÚpartial_methods        rS   Úqualname_from_functionr‹  ã  s#  € à%)€Mà�N€FˆFå�$�Ñ Ô ð '¥W¨T¬Y¸
Ñ%CÔ%Cð 'Ø3‰ˆ�ØŒyˆˆõ ! Ð'7¸Ñ>Ô>ð 
Å'ØÐ% tñC
ô C
ˆõ �n¥mÑ4Ô4ð 	'Ø=‰NˆF�FØ!Ô&ˆDåˆt�^Ñ$Ô$ð &ØÔ)ˆˆÝ	��zÑ	"Ô	"ð &ØœˆàÐ Ý�4˜Ñ&Ô&ð 	B­:°d´oÅsÑ+KÔ+Kð 	BØ œO¨cÑ1°MÑAˆMØ Ñ.°Ñ7ˆàÐrU   c                 ó    — t          | ¦  «        S r­   )r‹  )r�  s    rS   Útransaction_from_functionr�    s   € Ý! $Ñ'Ô'Ð'rU   Údisable_capture_eventc                   ó   — e Zd ZdZdS )ÚServerlessTimeoutWarningz>Raised when a serverless method is about to reach its timeout.Nrí   rª   rU   rS   r�  r�  
  s   € € € € € ØHÐHà€DrU   r�  c                   óL   — e Zd ZdZ	 	 ddededdddddf
d	„Zdd
„Zdd„Zdd„Z	dS )ÚTimeoutThreadzˆCreates a Thread which runs (sleeps) for a time duration equal to
    waiting_time and raises a custom ServerlessTimeout exception.
    NÚwaiting_timeÚconfigured_timeoutÚisolation_scopezOptional[sentry_sdk.Scope]Úcurrent_scoperJ   c                 ó¬   — t           j                             | ¦  «         || _        || _        || _        || _        t          j        ¦   «         | _        d S r­   )	rN  ÚThreadr  r“  r”  r•  r–  r1   Ú_stop_event)r¯   r“  r”  r•  r–  s        rS   r  zTimeoutThread.__init__  sQ   € õ 	Ô×!Ò! $Ñ'Ô'Ð'Ø(ˆÔØ"4ˆÔà.ˆÔØ*ˆÔå$œ?Ñ,Ô,ˆÔÐÐrU   c                 ó8   — | j                              ¦   «          d S r­   )r™  rÞ  r®   s    rS   ÚstopzTimeoutThread.stop%  s   € ØÔ×ÒÑÔÐÐÐrU   r2   c                 ó¸   — t          j        ¦   «         }t          j        ¦   «         }t	          ||j        dddœ¬¦  «        \  }}t          j        ||¬¦  «         |S )NrN  FrÆ  )rr  r¿  )r$  )ro   rÁ   rÄ   rÅ   r%  rg  Úcapture_event)r¯   rÁ   r  rû  r$  s        rS   Ú_capture_exceptionz TimeoutThread._capture_exception(  sc   € Ý”<‘>”>ˆåÔ&Ñ(Ô(ˆÝ*ØØ!œ>Ø*°uÐ=Ð=ð
ñ 
ô 
‰ˆˆtõ
 	Ô  ¨TÐ2Ñ2Ô2Ð2àˆrU   c                 ó¬  — | j                              | j        ¦  «         | j                              ¦   «         rd S t	          | j        ¦  «        }|| j        k     r|dz   }| j        �Î| j        �Çt          j	         
                    | j        ¦  «        5  t          j	                             | j        ¦  «        5  	 t          d                     |¦  «        ¦  «        ‚# t          $ r t          |                      ¦   «         Ž  Y nw xY w	 d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   t          d                     |¦  «        ¦  «        ‚)Nr:   zZWARNING : Function is expected to get timed out. Configured timeout duration = {} seconds.)r™  Úwaitr“  Úis_setr	  r”  r•  r–  rÄ   ÚscopeÚuse_isolation_scopeÚ	use_scoper�  r¤   rH  Úreraiserž  )r¯   Úinteger_configured_timeouts     rS   ÚrunzTimeoutThread.run5  sé  € ØÔ×Ò˜dÔ/Ñ0Ô0Ð0àÔ×"Ò"Ñ$Ô$ð 	ØˆFå%(¨Ô)@Ñ%AÔ%AÐ"ð &¨Ô(?Ò?Ð?Ø)CÀaÑ)GÐ&ð ÔÐ+°Ô0BÐ0NÝÔ!×5Ò5°dÔ6JÑKÔKð 	<ð 	<ÝÔ%×/Ò/°Ô0BÑCÔCð <ð <ð<Ý6Øx×ÒØ :ñô ñô ð øõ
 %ð <ð <ð <Ý ×!8Ò!8Ñ!:Ô!:Ð;Ð;Ð;Ð;ð<øøøØ;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<õ 'Øh×oÒoØ*ñô ñ
ô 
ð 	
sT   Â%D)Â6DÂ8"CÃ%DÃ?DÄDÄDÄD)ÄD	ÄD)ÄD	ÄD)Ä)D-Ä0D-©NN)rJ   N)rJ   r2   )
rº   r»   r¼   rî   Úfloatr	  r  r›  rž  r§  rª   rU   rS   r’  r’    s«   € € € € € ðð ð 9=Ø6:ð-ð -àð-ð  ð-ð 6ð	-ð
 4ð-ð 
ð-ð -ð -ð -ð ð ð ð ðð ð ð ð
ð 
ð 
ð 
ð 
ð 
rU   r’  Ú
Components)rý   r  rm   ÚqueryÚfragmentÚurlÚremove_authorityÚremove_query_valuesr‹  zUnion[str, Components]c                 óÊ  — t          | ¦  «        }t          |j        d¬¦  «        }|rP|j                             d¦  «        }t          |¦  «        dk    rt          ›dt          ›d|d         ›�}n|j        }n|j        }|r't          t          d„ |D ¦   «         ¦  «        ¦  «        }n|j        }t          |j
        |||j        |j        ¬¦  «        }	|r|	S t          |	¦  «        S )	zL
    Removes the authority and query parameter values from a given URL.
    T)Úkeep_blank_valuesr  r:   rY   rÙ   c                 ó   — i | ]
}|t           “ŒS rª   )r   )r/  r0  s     rS   ú
<dictcomp>z sanitize_url.<locals>.<dictcomp>u  s   € ÐNÐNÐN¸#�sÕ5ÐNÐNÐNrU   ©rý   r  r«  rm   r¬  )r   r   r«  r  r‹  rp  r   r   r   rª  rý   rm   r¬  r   )
r­  r®  r¯  r‹  Ú
parsed_urlÚquery_paramsÚnetloc_partsr  Úquery_stringÚ
componentss
             rS   Úsanitize_urlrº  X  s  € õ ˜#‘”€JÝ˜JÔ,ÀÐEÑEÔE€Lð ð #Ø!Ô(×.Ò.¨sÑ3Ô3ˆÝˆ|ÑÔ˜qÒ Ð å)Ð)Ð)Ý)Ð)Ð)Ø˜RÔ Ð ðˆFˆFð  Ô&ˆFˆFàÔ"ˆð ð (ÝÝÐNÐNÀÐNÑNÔNÑOÔOñ
ô 
ˆˆð "Ô'ˆåØÔ ØØØŒ_ØÔ$ðñ ô €Jð ð &ØÐå˜*Ñ%Ô%Ð%rU   Ú	ParsedUrl©r­  r«  r¬  Úsanitizec           	      óÀ   — t          | d|d¬¦  «        }t          t          |j        |j        d|j        d¬¦  «        ¦  «        }t          ||j        |j        ¬¦  «        S )zí
    Splits a URL into a url (including path), query and fragment. If sanitize is True, the query
    parameters will be sanitized to remove sensitive data. The autority (username and password)
    in the URL will always be removed.
    T)r®  r¯  r‹  rù   r´  r¼  )	rº  r   rª  rý   r  rm   r»  r«  r¬  )r­  r½  rµ  Úbase_urls       rS   Ú	parse_urlrÀ  ‹  sƒ   € õ Ø˜d¸Èðñ ô €Jõ ÝØÔ$ØÔ$ØØ”Øð	
ñ 	
ô 	
ñô €Hõ ØØÔØÔ$ðñ ô ð rU   ÚauthorizationzSet[str]c                 óœ  — |                       ¦   «         }|                     d¦  «        \  }}}|t          vrt          ¦   «         S |                     d¦  «        D ]e}|                     ¦   «         }|                     d¦  «        r:|                     d¦  «        \  }}}d„ |                     d¦  «        D ¦   «         c S Œft          ¦   «         S )Nú rX   zSignedHeaders=r.  c                 ó:   — h | ]}|¯|                      ¦   «         ’ŒS rª   ©rN   ©r/  Úheaders     rS   r  zJ_get_aws_sigv4_signed_headers_from_authorization_header.<locals>.<setcomp>³  s%   € ÐSÐSÐS vÈFÐS�F—L’L‘N”NÐSÐSÐSrU   ú;)r�  Ú	partitionÚ_AWS_SIGV4_SIGNING_ALGORITHMSrÞ  r‹  rx   rE  )rÁ  rH   Ú	algorithmrÍ  Ú
parametersrM  Úheader_namess          rS   Ú7_get_aws_sigv4_signed_headers_from_authorization_headerrÎ  ¦  sÕ   € ð × Ò Ñ"Ô"€EØ$Ÿš¨sÑ3Ô3Ñ€Iˆq�*ØÕ5Ð5Ð5Ý‰uŒuˆà× Ò  Ñ%Ô%ð Tð TˆØ�zŠz‰|Œ|ˆØ�?Š?Ð+Ñ,Ô,ð 	TØ!%§¢°Ñ!4Ô!4ÑˆAˆq�,ØSÐS°×1CÒ1CÀCÑ1HÔ1HÐSÑSÔSÐSÐSÐSð	Tõ ‰5Œ5€LrU   c                 óX  — d„ t          t          | ¦  «        j        ¦  «                             ¦   «         D ¦   «         }|                     ddg¦  «        d         }|t
          vrt          ¦   «         S d„ |                     ddg¦  «        d                              d¦  «        D ¦   «         S )Nc                 ó>   — i | ]\  }}|                      ¦   «         |“ŒS rª   rÅ  )r/  r0  rÿ  s      rS   r³  zG_get_aws_sigv4_signed_headers_from_url_query_string.<locals>.<dictcomp>¹  s3   € ð ð ð Ù +  Vˆ�	Š	‰Œ�Vðð ð rU   zx-amz-algorithmrù   r   c                 ó:   — h | ]}|¯|                      ¦   «         ’ŒS rª   rÅ  rÆ  s     rS   r  zF_get_aws_sigv4_signed_headers_from_url_query_string.<locals>.<setcomp>Á  s6   € ð ð ð àØðØ�Š‰Œðð ð rU   zx-amz-signedheadersrÈ  )r   r   r«  rž  rŠ   rÊ  rÞ  r‹  )r­  r«  rË  s      rS   Ú3_get_aws_sigv4_signed_headers_from_url_query_stringrÒ  ¸  s´   € ðð Ý/7½À¹¼Ô8KÑ/LÔ/L×/RÒ/RÑ/TÔ/Tðñ ô €Eð —	’	Ð+¨b¨TÑ2Ô2°1Ô5€IØÕ5Ð5Ð5Ý‰uŒuˆðð à—i’iÐ 5¸°tÑ<Ô<¸QÔ?×EÒEÀcÑJÔJðñ ô ð rU   Úratec           	      ó|  — t          | t          t          f¦  «        rt          j        | ¦  «        r?t
                               d                     || t          | ¦  «        ¬¦  «        ¦  «         dS t          | ¦  «        } | dk     s| dk    r1t
                               d                     || ¬¦  «        ¦  «         dS dS )	z†
    Checks the given sample rate to make sure it is valid type and value (a
    boolean or a number between 0 and 1, inclusive).
    z|{source} Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got {rate} of type {type}.)rt  rÓ  r%  Fr   r:   zW{source} Given sample rate is invalid. Sample rate must be between 0 and 1. Got {rate}.)rt  rÓ  T)
rú   r   r   ÚmathÚisnanrÇ   Úwarningr¤   r%  r©  )rÓ  rt  s     rS   Úis_valid_sample_raterØ  È  sÕ   € õ �d�T¥7˜OÑ,Ô,ð µ´
¸4Ñ0@Ô0@ð Ý�Šð K÷  Rò  RØ D­t°D©z¬zð Rñ ô ñ	
ô 	
ð 	
ð
 ˆuõ �‰;Œ;€DØˆa‚x€x�4˜!’8�8Ý�ŠØe×lÒlØ Dð mñ ô ñ	
ô 	
ð 	
ð
 ˆuàˆ4rU   r)  Ú
regex_listÚsubstring_matchingc                 ór   — |€dS |D ]/}|s|d         dk    r|dz  }t          j        || ¦  «        }|r dS Œ0dS )NFrÙ   ú$Tr+  )r)  rÙ  rÚ  Úitem_matcherÚmatcheds        rS   Úmatch_regex_listrß  æ  sk   € ð
 ÐØˆuà"ð ð ˆØ!ð 	  l°2Ô&6¸#Ò&=Ð&=Ø˜CÑˆLå”)˜L¨$Ñ/Ô/ˆØð 	Ø�4�4ð	ð ˆ5rU   r  zsentry_sdk.client.BaseClientc                 ó^   — | duo)| j         duo | j         j        duo| j         j        j        |v S )zB
    Determines whether the given URL matches the Sentry DSN.
    N)Ú	transportÚ
parsed_dsnr  )r  r­  s     rS   Úis_sentry_urlrã  ù  sL   € ð
 	�dÐð 	6ØÔ DÐ(ð	6àÔÔ'¨tÐ3ð	6ð ÔÔ'Ô.°#Ð5ð	rU   úIterator[Tuple[str, str]]c               #   ó°  K  — 	 ddl m}  t          ¦   «         }|                      ¦   «         D ]Y}|j                             dd ¦  «        }|�:t          |¦  «        }|j        �$||vr ||j        fV — |                     |¦  «         ŒZd S # t          $ rC 	 dd l	}n# t          $ r Y Y d S w xY w|j
        D ]}t          |j        ¦  «        |j        fV — Œ Y d S w xY w)Nr   )r=  ÚName)Ú	importlibr=  rÞ  ÚdistributionsrŠ   Ú_normalize_module_namer#  rà  rj  Úpkg_resourcesÚworking_setr0  )r=  ÚyieldedÚdistr&  Únormalized_namerê  Úinfos          rS   Ú_generate_installed_modulesrð    sQ  è è € ðAØ&Ð&Ð&Ð&Ð&Ð&å‘%”%ˆØ×*Ò*Ñ,Ô,ð 
	1ð 
	1ˆDØ”=×$Ò$ V¨TÑ2Ô2ˆDð
 ÐÝ"8¸Ñ">Ô">�Ø”<Ð+°ÀwÐ0NÐ0NØ)¨4¬<Ð7Ð7Ð7Ð7Ø—K’K Ñ0Ô0Ð0øð
	1ð 
	1øõ ð Að Að Að	Ø Ð Ð Ð Ð øÝð 	ð 	ð 	ØˆFˆFˆFð	øøøð "Ô-ð 	Að 	AˆDÝ(¨¬Ñ2Ô2°D´LÐ@Ð@Ð@Ð@Ð@ð	Að 	Að 	AðAøøøs6   „BB Â
CÂBÂCÂ
B'Â"CÂ&B'Â'*CÃCc                 ó*   — |                       ¦   «         S r­   rÅ  ©r&  s    rS   ré  ré  !  s   € Ø�:Š:‰<Œ<ÐrU   c                 ó.   — t          j        dd| ¦  «        S )Nz[-_.]+rÕ   )r  Úsubrò  s    rS   Ú1_replace_hyphens_dots_and_underscores_with_dashesrõ  %  s   € åŒ6�)˜S $Ñ'Ô'Ð'rU   úDict[str, str]c                  óT   — t           €t          t          ¦   «         ¦  «        a t           S r­   )Ú_installed_modulesrû   rð  rª   rU   rS   Ú_get_installed_modulesrù  *  s#   € åÐ!Ý!Õ"=Ñ"?Ô"?Ñ@Ô@ÐÝÐrU   Úpackagec                 óÞ   — t          t          | ¦  «        ¦  «        }d„ t          ¦   «                              ¦   «         D ¦   «         }|                     |¦  «        }|€d S t          |¦  «        S )Nc                 ó4   — i | ]\  }}t          |¦  «        |“ŒS rª   )rõ  )r/  rV  Úvs      rS   r³  z#package_version.<locals>.<dictcomp>6  s6   € ð ð ð áˆF�Aõ 	:¸&ÑAÔAÀ1ðð ð rU   )ré  rõ  rù  rž  rŠ   rI  )rú  Únormalized_packageÚinstalled_packagesr#  s       rS   Úpackage_versionr   1  s|   € Ý/Ý9¸'ÑBÔBñô Ððð å/Ñ1Ô1×7Ò7Ñ9Ô9ðñ ô Ðð !×$Ò$Ð%7Ñ8Ô8€GØ€Øˆtå˜Ñ!Ô!Ð!rU   Útpr²   r$   c                 óJ   — |€J ‚|j         |ur|                     |¦  «        ‚|‚r­   )rÝ  Úwith_traceback)r  rH   r´   s      rS   r¥  r¥  A  s7   € ð
 ÐÐÐØÔ "Ð$Ð$Ø×"Ò" 2Ñ&Ô&Ð&Ø
€KrU   Ú_aÚ_kc                  ó   — dS )z.No-op function for ensure_integration_enabled.Nrª   )r  r  s     rS   Ú_no_opr  L  s   € à€DrU   r¦   ú)type[sentry_sdk.integrations.Integration]Úoriginal_functionúCallable[P, R]ú*Callable[[Callable[P, R]], Callable[P, R]]c                 ó   — d S r­   rª   )r¦   r	  s     rS   Úensure_integration_enabledr  S  s	   € ð 8;°srU   ú0Callable[[Callable[P, None]], Callable[P, None]]c                 ó   — d S r­   rª   )r¦   s    rS   r  r  Y  s
   € ð >A¸SrU   ú(Union[Callable[P, R], Callable[P, None]]c                 ót   ‡ ‡— t           r't          t          t          t          f         ‰¦  «        Šdˆ ˆfd„}|S )a‡  
    Ensures a given integration is enabled prior to calling a Sentry-patched function.

    The function takes as its parameters the integration that must be enabled and the original
    function that the SDK is patching. The function returns a function that takes the
    decorated (Sentry-patched) function as its parameter, and returns a function that, when
    called, checks whether the given integration is enabled. If the integration is enabled, the
    function calls the decorated, Sentry-patched function. If the integration is not enabled,
    the original function is called.

    The function also takes care of preserving the original function's signature and docstring.

    Example usage:

    ```python
    @ensure_integration_enabled(MyIntegration, my_function)
    def patch_my_function():
        with sentry_sdk.start_transaction(...):
            return my_function()
    ```
    Úsentry_patched_functionr
  rJ   c                 óˆ   •‡ — dˆˆˆ fd„}‰t           u r t          ‰ ¦  «        |¦  «        S  t          ‰¦  «        |¦  «        S )	NÚargsúP.argsÚkwargsúP.kwargsrJ   r9   c                  óp   •— t          j        ¦   «                              ‰¦  «        € ‰| i |¤ŽS  ‰| i |¤ŽS r­   )rÄ   rÅ   Úget_integration)r  r  r¦   r	  r  s     €€€rS   Úrunnerz;ensure_integration_enabled.<locals>.patcher.<locals>.runner~  sL   ø€ ÝÔ$Ñ&Ô&×6Ò6°{ÑCÔCÐKØ(Ð(¨$Ð9°&Ð9Ð9Ð9à*Ð*¨DÐ;°FÐ;Ð;Ð;rU   )r  r  r  r  rJ   r9   )r  r
   )r  r  r¦   r	  s   ` €€rS   Úpatcherz+ensure_integration_enabled.<locals>.patcher}  sk   øø€ ð	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð ¥Ð&Ð&Ø1•5Ð0Ñ1Ô1°&Ñ9Ô9Ð9à'�uÐ&Ñ'Ô'¨Ñ/Ô/Ð/rU   )r  r
  rJ   r
  )r   r,   r   r8   r9   )r¦   r	  r  s   `` rS   r  r  _  sT   øø€ õ2 ð Dõ !¥­!­Q¨$¤Ð1BÑCÔCÐð
0ð 
0ð 
0ð 
0ð 
0ð 
0ð 
0ð €NrU   c                  ó(   — t          j        ¦   «         S r­   )ÚtimeÚperf_counter_nsrª   rU   rS   Únanosecond_timer  Ž  s   € ÝÔ#Ñ%Ô%Ð%rU   c                  óH   — t          t          j        ¦   «         dz  ¦  «        S )Ng    eÍÍA)r	  r  Úperf_counterrª   rU   rS   r  r  “  s   € Ý•4Ô$Ñ&Ô&¨Ñ,Ñ-Ô-Ð-rU   c                  ó(   — t          j        ¦   «         S r­   )r  r!  rª   rU   rS   Únowr#  —  s   € ÝÔÑÔÐrU   )Úget_hub©Úis_module_patchedúOptional[Hub]c                  ó   — d S r­   rª   rª   rU   rS   Úget_gevent_hubr)  ¡  s   € ØˆtrU   Úmod_namec                 ó   — dS ©NFrª   )r*  s    rS   r&  r&  ¤  s   € àˆurU   c                  ó>   — t          d¦  «        pt          d¦  «        S )NrN  Ú_threadr%  rª   rU   rS   Ú	is_geventr/  ©  s   € Ý˜[Ñ)Ô)ÐIÕ->¸yÑ-IÔ-IÐIrU   r  úOptional[threading.Thread]ú#Tuple[Optional[int], Optional[str]]c                 óª  — | �&	 | j         }| j        }|�||fS n# t          $ r Y nw xY wt          ¦   «         r*t	          ¦   «         }|�	 |j        dfS # t          $ r Y nw xY w	 t          j        ¦   «         } | j         }| j        }|�||fS n# t          $ r Y nw xY w	 t          j        ¦   «         } | j         }| j        }|�||fS n# t          $ r Y nw xY wdS )zK
    Try to get the id of the current thread, with various fall backs.
    Nr¨  )	Úidentr&  rÞ   r/  r)  Úthread_identrN  Úcurrent_threadÚmain_thread)r  Ú	thread_idÚthread_nameÚ
gevent_hubs       rS   Úget_current_thread_metar:  ­  sZ  € ð Ðð	ØœˆIØ œ+ˆKØÐ$Ø  +Ð-Ð-ð %øåð 	ð 	ð 	ØˆDð	øøøõ
 �{„{ð Ý#Ñ%Ô%ˆ
ØÐ!ðà!Ô.°Ð4Ð4øÝ!ð ð ð Ø�ðøøøðÝÔ)Ñ+Ô+ˆØ”Lˆ	Ø”kˆØÐ Ø˜kÐ)Ð)ð !øåð ð ð ØˆðøøøðÝÔ&Ñ(Ô(ˆØ”Lˆ	Ø”kˆØÐ Ø˜kÐ)Ð)ð !øåð ð ð Øˆðøøøð ˆ:sB   „ ™
&¥&ÁA Á
AÁAÁ"&B
 Â

BÂBÂ&C Ã
CÃCú/Union[type, list[type], tuple[type], set[type]]c                 ó¶   — t          | t          t          t          f¦  «        rt                               | ¦  «         d S t                               | ¦  «         d S r­   )rú   rº  r  rÞ  rz  Úupdaterà  )r½  s    rS   Ú _register_control_flow_exceptionr>  á  sQ   € õ �(�T¥5­#Ð.Ñ/Ô/ð 6Ý'×.Ò.¨xÑ8Ô8Ð8Ð8Ð8å'×+Ò+¨HÑ5Ô5Ð5Ð5Ð5rU   r±   c                 óš   — | t           k    rt          |d¦  «        r|j        dv rdS t          | t	          t
          ¦  «        ¦  «        rdS dS )NÚcode)r   NFT)Ú
SystemExitri  r@  Ú
issubclassr  rz  )r±   rH   s     rS   Úshould_be_treated_as_errorrC  ê  sR   € Ø	�ZÒÐ�G E¨6Ñ2Ô2Ð°u´zÀYÐ7NÐ7Nàˆuå�"•eÕ;Ñ<Ô<Ñ=Ô=ð Øˆuàˆ4rU   ÚTÚconvert_funcúCallable[[Any], T]úOptional[T]c                 ó„   — 	 t          || ¦  «        r|S n# t          $ r Y nw xY w	  | |¦  «        S # t          $ r Y dS w xY w)z¶
    Attempt to convert from an unknown type to a specific type, using the
    given function. Return None if the conversion fails, i.e. if the function
    raises an exception.
    N)rú   r  rH  )rE  rH   s     rS   Útry_convertrI  ù  sz   € ðÝ�e˜\Ñ*Ô*ð 	ØˆLð	øåð ð ð ØˆðøøøðØˆ|˜EÑ"Ô"Ð"øÝð ð ð Øˆtˆtðøøøs   ‚ •
"¡"¦
1 ±
?¾?c                 óÒ   ‡— 	 	 	 	 dˆfd„Š	  ‰| ¦  «        }t          |t          ¦  «        st          j        |t          ¬¦  «        n|S # t          $ r t          | ¦  «        cY S w xY w)	z&Safely serialize to a readable string.r)  r   rJ   ú6Union[str, dict[Any, Any], list[Any], tuple[Any, ...]]c                 óÌ  •— t          | ¦  «        r|	 t          | dd ¦  «        }t          | dd ¦  «        }t          | dd¦  «        }|r
|r|› d|› �}n|r
|r|› d|› �}n|}d|› d�S # t          $ r dt          | ¦  «        j        › d�cY S w xY wt          | t          ¦  «        r ˆfd	„|                      ¦   «         D ¦   «         S t          | t          t          f¦  «        rˆfd
„| D ¦   «         S t          | d¦  «        rh	 ˆfd„t          | ¦  «                             ¦   «         D ¦   «         }dt          | ¦  «        j        › d|› d�S # t          $ r t          | ¦  «        cY S w xY w| S )Nr»   r¼   rº   Ú	anonymousr×   z
<function ú>z
<callable c                 ó.   •— i | ]\  }}| ‰|¦  «        “ŒS rª   rª   ©r/  Úkrý  Úserialize_items      €rS   r³  z:safe_serialize.<locals>.serialize_item.<locals>.<dictcomp>"  s)   ø€ ÐBÐBÐB©T¨Q°�A�~�~ aÑ(Ô(ÐBÐBÐBrU   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rª   rª   )r/  r;  rR  s     €rS   re  z:safe_serialize.<locals>.serialize_item.<locals>.<listcomp>$  s#   ø€ Ð4Ð4Ð4¨!�N�N 1Ñ%Ô%Ð4Ð4Ð4rU   rü   c                 óX   •— i | ]&\  }}|                      d ¦  «        °| ‰|¦  «        “Œ'S )rÍ  r(  rP  s      €rS   r³  z:safe_serialize.<locals>.serialize_item.<locals>.<dictcomp>'  sK   ø€ ð ð ð á˜˜1ØŸ<š<¨Ñ,Ô,ðØ�~�~ aÑ(Ô(ðð ð rU   ú<rÃ  )Úcallabler9  rH  r%  rº   rú   rû   rž  rº  r  ri  r�  rˆ  )r)  rV  Úqualnamer&  Ú	full_pathÚattrsrR  s         €rS   rR  z&safe_serialize.<locals>.serialize_item  sñ  ø€ õ �D‰>Œ>ð 	ð;Ý   |°TÑ:Ô:�Ý" 4¨¸Ñ>Ô>�Ý˜t Z°Ñ=Ô=�àð %˜hð %Ø#)Ð 6Ð 6¨HÐ 6Ð 6�I�IØð % ð %Ø#)Ð 2Ð 2¨DÐ 2Ð 2�I�Ià $�Ià0 IÐ0Ð0Ð0Ð0øÝð ;ð ;ð ;Ø:¥D¨¡J¤JÔ$7Ð:Ð:Ð:Ð:Ð:Ð:ð;øøøå˜�dÑ#Ô#ð 	ØBÐBÐBÐB°T·Z²Z±\´\ÐBÑBÔBÐBÝ˜�t¥U˜mÑ,Ô,ð 	Ø4Ð4Ð4Ð4¨tÐ4Ñ4Ô4Ð4Ý�T˜:Ñ&Ô&ð 	ð"ðð ð ð å $ T¡
¤
× 0Ò 0Ñ 2Ô 2ðñ ô �ð
 :�4 ™:œ:Ô.Ð9Ð9°Ð9Ð9Ð9Ð9øÝð "ð "ð "Ý˜D‘z”zÐ!Ð!Ð!ð"øøøð ˆKs%   ’AA% Á%"B
Â	B
Ã=AE ÅE!Å E!ry  N)r)  r   rJ   rK  )rú   rM   r]   r^   rH  )rV   Ú
serializedrR  s     @rS   Úsafe_serializer[    s¥   ø€ ð"Øð"à	Að"ð "ð "ð "ð "ð "ðHØ#�^ DÑ)Ô)ˆ
õ ˜j­#Ñ.Ô.ð�DŒJ�z­3Ð/Ñ/Ô/Ð/àð	
øõ
 ð ð ð Ý�4‰yŒyÐÐÐðøøøs   �<A
 Á
A&Á%A&rg  úOptional[dict[str, Any]]c                 óh   — | €dS |                       d¦  «        }|d uo|                      dd¦  «        S )NFrZ  Úprovided_by_user©rŠ   )rg  rZ  s     rS   rh  rh  =  sI   € Ø€Øˆuà29·+²+Ð>OÑ2PÔ2P€Oð  $Ð&ð ¨?×+>Ò+>Ø˜Eñ,ô ,ð rU   ú.Optional[Callable[[Log, Hint], Optional[Log]]]c                 ój   — | €d S |                       d¦  «        p| d                               d¦  «        S )NÚbefore_send_logÚ_experimentsr_  ©rg  s    rS   Úget_before_send_logre  J  sB   € ð €Øˆtà�;Š;Ð(Ñ)Ô)ð ¨W°^Ô-D×-HÒ-HØñ.ô .ð rU   ú4Optional[Callable[[Metric, Hint], Optional[Metric]]]c                 ój   — | €d S |                       d¦  «        p| d                               d¦  «        S )NÚbefore_send_metricrc  r_  rd  s    rS   Úget_before_send_metricri  U  sB   € ð €Øˆtà�;Š;Ð+Ñ,Ô,ð °¸Ô0G×0KÒ0KØñ1ô 1ð rU   ú8Optional[Callable[[SpanJSON, Hint], Optional[SpanJSON]]]c                 ój   — | €d S |                       d¦  «        p| d                               d¦  «        S )NÚbefore_send_spanrc  r_  rd  s    rS   Úget_before_send_spanrm  `  sB   € ð €Øˆtà�;Š;Ð)Ñ*Ô*ð ¨g°nÔ.E×.IÒ.IØñ/ô /ð rU   Úvalr/   c                 ó‚  ‡— t          | t          t          t          t          f¦  «        r| S t          | t
          t          f¦  «        r| sg S t          | t
          ¦  «        rat          | d         ¦  «        Š‰t          t          t          t          fv r/t          ˆfd„| D ¦   «         ¦  «        rt          j
        | ¦  «        S npt          | t          ¦  «        r[t          | d         ¦  «        Š‰t          t          t          t          fv r*t          ˆfd„| D ¦   «         ¦  «        rt          | ¦  «        S t          | ¦  «        S )a¸  
    Turn unsupported attribute value types into an AttributeValue.

    We do this as soon as a user-provided attribute is set, to prevent spans,
    logs, metrics and similar from having live references to various objects.

    Note: This is not the final attribute value format. Before they're sent,
    they're serialized further into the actual format the protocol expects:
    https://develop.sentry.dev/sdk/telemetry/attributes/
    r   c              3   ó:   •K  — | ]}t          |¦  «        ‰u V — Œd S r­   ©r%  ©r/  rý  r±   s     €rS   r1  z#format_attribute.<locals>.<genexpr>}  ó-   øè è € Ð0LÐ0LÀ1µ°a±´¸B°Ð0LÐ0LÐ0LÐ0LÐ0LÐ0LrU   c              3   ó:   •K  — | ]}t          |¦  «        ‰u V — Œd S r­   rq  rr  s     €rS   r1  z#format_attribute.<locals>.<genexpr>�  rs  rU   )rú   rQ   r	  r©  rM   rº  r  r%  ÚallrÏ  Údeepcopyr…  ©rn  r±   s    @rS   Úformat_attributerx  k  s  ø€ õ �#��c¥5­#Ð.Ñ/Ô/ð Øˆ
å�#��e�}Ñ%Ô%ð 	¨cð 	Øˆ	Ý	�C�Ñ	Ô	ð Ý�#�a”&‰\Œ\ˆØ•#•s�E¥4Ð(Ð(Ð(­SÐ0LÐ0LÐ0LÐ0LÈÐ0LÑ0LÔ0LÑ-LÔ-LÐ(Ý”= Ñ%Ô%Ð%øÝ	�C�Ñ	Ô	ð Ý�#�a”&‰\Œ\ˆØ•#•s�E¥4Ð(Ð(Ð(­SÐ0LÐ0LÐ0LÐ0LÈÐ0LÑ0LÔ0LÑ-LÔ-LÐ(Ý˜‘9”9Ðå�S‰>Œ>ÐrU   r6   c                 óÒ  ‡— t          | t          ¦  «        r| ddœS t          | t          ¦  «        r| ddœS t          | t          ¦  «        r| ddœS t          | t          ¦  «        r| ddœS t          | t
          ¦  «        rX| sg ddœS t          | d         ¦  «        Š‰t          t          t          t          fv r t          ˆfd„| D ¦   «         ¦  «        r| ddœS t          | ¦  «        ddœS )	z2Serialize attribute value to the transport format.Úboolean)rH   r%  ÚintegerÚdoubler/  Úarrayr   c              3   ó:   •K  — | ]}t          |¦  «        ‰u V — Œd S r­   rq  rr  s     €rS   r1  z&serialize_attribute.<locals>.<genexpr>˜  rs  rU   )	rú   rQ   r	  r©  rM   rº  r%  ru  r…  rw  s    @rS   Úserialize_attributer  ‡  s  ø€ å�#•tÑÔð 1Ø iÐ0Ð0Ð0Ý�#•sÑÔð 1Ø iÐ0Ð0Ð0Ý�#•uÑÔð 0Ø hÐ/Ð/Ð/Ý�#•sÑÔð 0Ø hÐ/Ð/Ð/å�#•tÑÔð 3Øð 	2Ø¨Ð1Ð1Ð1õ �#�a”&‰\Œ\ˆØ•#•s�D¥%Ð(Ð(Ð(­SÐ0LÐ0LÐ0LÐ0LÈÐ0LÑ0LÔ0LÑ-LÔ-LÐ(Ø ¨'Ð2Ð2Ð2õ ˜s‘^”^¨XÐ6Ð6Ð6rU   úIterator[None]c               #   ó   K  — d V — d S r­   rª   rª   rU   rS   Únullcontextr‚  ¡  s   è è € à	€E€E€E€E€ErU   )rH   r   rG   rI   rJ   rK   )rJ   ra   r¹   )rÁ   r2   rJ   Nr­   )rÁ   ræ   rJ   rç   )r5  r6  rJ   ra   )r´   rµ   rJ   rK  )NNN)r@  r   r|  rT  r}  rT  rJ   rW  )rV  ra   r‚  ra   rJ   ra   )NTTNN)TTN)NNNNNN)r½  r6  r¯  r³   r´   rµ   rr  r¾  r¿  r¾  rÀ  rT  rÁ  rT  rt  ra   rÂ  rÃ  rJ   r—  )rÁ   r2   rJ   rÛ  )NNr   r   NNNN)
rÁ   r2   rr  r¾  r¿  r¾  rÂ  rÃ  rJ   rõ  )rû  r1   rJ   rü  )rû  r1   rJ   r  )
rû  r1   r  r  r  r  r	  ra   rJ   r1   )
rª  r   r  r  r  r  r	  ra   rJ   r  )rÈ   r  rJ   r2   )rª  rõ  rÂ  rõ  rr  r¾  rJ   rõ  r¨  )rÁ   r  rr  r¾  r¿  r¾  rJ   r   )rJ   rt  )rJ   r~  )r�  r‚  rJ   ra   )TTF)Tr,  )rJ   rä  )rJ   rö  )r  r²   rH   r³   r´   r  rJ   r$   )r  r   r  r   rJ   N)r¦   r  r	  r
  rJ   r  )r¦   r  rJ   r  )r¦   r  r	  r  rJ   r  )rJ   r'  )r  r0  rJ   r1  )r½  r;  rJ   N)rE  rF  rH   r   rJ   rG  )rg  r\  rJ   r`  )rg  r\  rJ   rf  )rg  r\  rJ   rj  )rn  r   rJ   r/   )rn  r/   rJ   r6   )rJ   r€  )ÐrÏ  r]   rl  ÚloggingrÕ  rl   rk  r  rq   ro   rN  r  Úcollectionsr   Ú
contextlibr   r   r   Údecimalr   Ú	functoolsr   r	   r
   Únumbersr   Úurllib.parser   r   r   r   r   Úsentry_sdk.data_collectionr   r<  r   rj  Útypingr   rÄ   Úsentry_sdk._compatr   Úsentry_sdk._typesr   r   r   Úsentry_sdk.constsr   r   r   Útypesr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   Ú
gevent.hubr.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   rÊ   Ú	getLoggerrÇ   rø  Ú	frozensetrO   rP   rÊ  rÓ  rT   Úbytesr`   r   r�   rM   r§   r©   r¿   rÀ   r·   r©  rÍ   rÓ   rá   rå   rê   rß   rì   rð   r  r:  r?  rQ   rJ  rP  r	  r{  rƒ  r†  r…  r“  r¨  r®  r  r²  r¼  rÙ  ri  rH  ÚHAS_CHAINED_EXCEPTIONSræ  rê  r÷  rú  r  r  r  r  ré   rÕ  r%  r  r  r  r6  r9  rb  rI  r^  r%  rs  rw  ÚHAS_REAL_CONTEXTVARSrT  ÚCONTEXTVARS_ERROR_MESSAGEr|  rÞ  rz  Ú__annotations__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#  rV  r$  r)  rW  r&  r/  r:  r>  rC  rD  rI  r[  rh  re  ri  rm  rx  r  r‚  rª   rU   rS   ú<module>r˜     sF  ðØ €€€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø "Ð "Ð "Ð "Ð "Ð "Ø %Ð %Ð %Ð %Ð %Ð %Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ Kà LÐ LÐ LÐ LÐ LÐ Lðà+Ð+Ð+Ð+Ð+Ð+Ð+øØð ð ð àÐÐÐðøøøð !Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ Rðð ð ð ð ð ð ð ð ð ð ð %Ø.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð( ÐÐÐÐÐð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	ˆ	�#‰Œ€AØˆ�‰Œ€Að 	ˆ��q˜!ÑÔ€ð 
ˆÔ	Ð.Ñ	/Ô	/€àÐ à�9ÐBÑCÔCÐ Ø�IÐBÑCÔCÐ Ø ) 	Ø2ñ!ô !Ð ð Ð ðð =Bð +ð +ñ +ð +ð +ð +ðT�Uð T˜uð Tð Tð Tð Tñ
ð ð ð ñ6ð ð ð ð2 ¨ð  ¸ð  ð  ð  ð  ðFð ð ð ð ñ ô ð ð$ 7Ð6Ñ8Ô8Ð ñ'ð 'ð 'ð 'ñHð Hð Hð Hð+˜
ð + uð +ð +ð +ð +ð	5˜Jð 	5¨3ð 	5ð 	5ð 	5ð 	5ð �I˜jÑ)Ô)Ð ð+ 3ð +¨:ð +ð +ð +ð +ð, %)ñ
"Ø!ð
"à#ñ
"ð 
"ð 
"ð 
"ð"ð "ð "ð "ð "ˆZñ "ô "ð "ðL
ð L
ð L
ð L
ð L
ñ L
ô L
ð L
ð^+Rð +Rð +Rð +Rð +Rñ +Rô +Rð +Rñ\Pð Pð Pð Pñð ð ð ð˜[ð ¨Tð ð ð ð ñ$ð ð ð ð #'Ø"Ø"ñ1ð 1Øð1àð1ð  ð1ð ð	1ð
 ð1ð Sð1ð 1ð 1ð 1ðn )-ñØðàðð &ðð Sñ	ð ð ð ð6 �Eð  ˜cð  ð  ð  ð  ð�Uð ˜sð ð ð ð ðØðØ'6ðàñð ð ð ð6 "&Ø$(Ø#'Ø(,Ø<@ñMð MØðMàðMð "ðMð !ð	Mð
 &ðMð :ðMð ðMð Mð Mð Mðb %)Ø#'Ø(,ñð Ø!ðà ðð &ðð ð	ð ð ð ð4-˜ð -¨?ð -ð -ð -ð -ðÐ!:ð ¸sð ð ð ð ð, 26Ø,0Ø$(Ø!%Ø"Ø37ñcØðcà(ðcð 	"ðcð /ð	cð
 *ðcð "ðcð ðcð ðcð 1ðcð ñcð cð cð cðL !˜ Ð,BÑCÔCÐ àð "ñ7ð 7ð 7ð 7ð 7ñ>ð ð ð ð 26Ø,0ØØØ"Ø37Ø7;Ø/3ñH&ð H&ØðH&à(ðH&ð 	"ðH&ð /ð	H&ð
 *ðH&ð ðH&ð ðH&ð ðH&ð 1ðH&ð 5ðH&ð -ðH&ð (ðH&ð H&ð H&ð H&ðZ 26Ø,0Ø37ñ	(Øð(à.ð(ð *ð(ð 1ð	(ð
 ñ(ð (ð (ð (ðV!�Sð !˜Sð !ð !ð !ð !ñ
.ð 
.ð 
.ð 
.ñð ð ð ð -1Ø,0Ø$(ñ	Øðà)ðð *ðð "ð	ð
 ñð ð ð ð0 %)ñ	(Øð(à)ð(ð *ð(ð "ð	(ð
 ñ(ð (ð (ð (ñVð ð ð ð8(Ø"ð(à&ð(ð /ð(ð ñ	(ð (ð (ð (ðZ 26Ø,0ñØ-ðà.ðð *ðð $ñ	ð ð ð ð:˜/ð Ð2Gð ÈDð ð ð ð ð /ð °dð ð ð ð ð
Øð
Ø-<ð
à	ð
ð 
ð 
ð 
ð˜sð ¨sð °sð ð ð ð ð˜cð  oð ð ð ð ð /3ñð ØðØ+ðà!ðð ð ð ð60˜3ð 0Ð#>ð 0ð 0ð 0ð 0ðf0 ð 0ð 0ð 0ð 0ðf¨ð °$ð ð ð ð ñ8"7ð "7ð "7ð "7ðJ $4Ð#3Ñ#5Ô#5Ñ  Ð �jðÐ ð &˜:Ð&?ÈÐOÑOÔOÐ ð 03¨s©u¬uÐ  Ð 4Ð 4Ñ 4ð*˜$ð *ð *ð *ð *ð ñ.ð .ð .ñ „ð.ñð ð ð ñ@(ð (ð (ð (ð #˜
Ð#:Ñ;Ô;Ð ð	ð 	ð 	ð 	ð 	˜yñ 	ô 	ð 	ðB
ð B
ð B
ð B
ð B
�IÔ$ñ B
ô B
ð B
ðJ ˆZ˜Ð&WÐ&WÐ&WÑXÔX€
ð
 "Ø $Øñ	-&ð -&Ø	ð-&àð-&ð ð-&ð ð	-&ð
 ð-&ð -&ð -&ð -&ð` ˆJ�{Ð$@Ð$@Ð$@ÑAÔA€	ñð �3ð  $ð °+ð ð ð ð ð6Øðàðð ð ð ð$¸Sð ÀZð ð ð ð ð ˜uð ¨cð °dð ð ð ð ð@ )-Ø$ñð Ø
ðà%ðð ðð 
ð	ð ð ð ð&	Ð8ð 	¸sð 	Àtð 	ð 	ð 	ð 	ñAð Að Að Að8 ð ¨ð ð ð ð ð(¸Cð (ÀCð (ð (ð (ð (ñ
ð ð ð ð"˜Sð "Ð%@ð "ð "ð "ð "ð& ñØ'ðà$ðð 	ðð ñ	ð ð ð ñ	ð 	ð 	ð 	ð
 ð Aàð;Ø@ð;à+ð;ð 
6ñ;ð ;ð ;ñ „Xð;ð
 ðAØ@ðAà	;ñAð Að Añ „XðAð EKð*Ø<ð*àAð*ð 2ñ*ð *ð *ð *ðZ ð .ð&˜Sð &ð &ð &ð &ð &ð
.˜Sð .ð .ð .ð .ðˆUð ð ð ð ðØ0Ð0Ð0Ð0Ð0Ð0Ø/Ð/Ð/Ð/Ð/Ð/Ð/øØð ð ð ñð ð ð ð Cð ¨Dð ð ð ð ð ð ðøøøðJ�4ð Jð Jð Jð Jð
 ,0ñ1Ø(ð1à*ñ1ð 1ð 1ð 1ðh6Ø?ð6à	ñ6ð 6ð 6ð 6ð 5ð °ð ¸4ð ð ð ð ð ð Øˆ�‰Œ€Añð ð ð ð$/˜ð / 3ð /ñ /ð /ð /ñd
Ñ)Cð 
Èð 
ñ 
ð 
ð 
ðØ'ðà5ññ ð ð ðØ'ðà;ññ ð ð ðØ'ðà?ññ ð ð ññ ð ð ñ87ñ 7ð 7ð 7ð4 ñ
ñ 
ð 
ñ „ð
ð 
ð 
s$   Á1A8 Á8BÂBÓ8T ÔTÔT