Ë
    bQêj»	  ã                  ó|   — d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
mZmZ d dlmZmZmZmZ dZ G d„ d	«      Zy
)é    )Úannotations)ÚSequence)Úparse_host_header)ÚURLÚHeaders)ÚPlainTextResponseÚRedirectResponseÚResponse)ÚASGIAppÚReceiveÚScopeÚSendz6Domain wildcard patterns must be like '*.example.com'.c                  ó0   — e Zd Z	 	 d	 	 	 	 	 	 	 dd„Zdd„Zy)ÚTrustedHostMiddlewareNc                ó&  — |€dg}|D ]H  }d|dd  vsJ t         «       ‚|j                  d«      sŒ'|dk7  sŒ-|j                  d«      rŒ?J t         «       ‚ || _        |D �cg c]  }|j                  «       ‘Œ c}| _        d|v | _        || _        y c c}w )NÚ*é   z*.)ÚENFORCE_DOMAIN_WILDCARDÚ
startswithÚappÚlowerÚallowed_hostsÚ	allow_anyÚwww_redirect)Úselfr   r   r   Úpatterns        úe/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/starlette/middleware/trustedhost.pyÚ__init__zTrustedHostMiddleware.__init__   s¦   € ð Ð Ø ˜EˆMà$ò 	IˆGØ˜g a b˜kÑ)ÐBÔ+BÓBÐ)Ø×!Ñ! #Õ&¨7°c«>Ø×)Ñ)¨$Õ/ÐHÔ1HÓHÐ/ð	Ið ˆŒØ=JÖK°'˜gŸm™m�oÒKˆÔØ Ð-ˆŒØ(ˆÕùò Ls   ÁBc              ƒ  óð  K  — | j                   s|d   dvr| j                  |||«      ƒ d {  –—†  y t        |¬«      }t        |j	                  d«      «      }|€ t        dd¬«      |||«      ƒ d {  –—†  y |j                  j                  «       }d}d}| j                  D ];  }	||	k(  s%|	j                  d	«      r|j                  |	d
d  «      rd} nd|z   |	k(  sŒ:d}Œ= |r| j                  |||«      ƒ d {  –—†  y |rM| j                  rAt        |¬«      }
|
j                  d|
j                  z   ¬«      }t        t!        |«      ¬«      }nt        dd¬«      } ||||«      ƒ d {  –—†  y 7 �ŒA7 Œý7 Œy7 Œ­w)NÚtype)ÚhttpÚ	websocket)ÚscopeÚhostzInvalid host headeri�  )Ústatus_codeFr   r   Tzwww.)Únetloc)Úurl)r   r   r   r   Úgetr   r$   r   r   r   Úendswithr   r   Úreplacer&   r	   Ústr)r   r#   ÚreceiveÚsendÚheadersÚparsed_hostr$   Úis_valid_hostÚfound_www_redirectr   r'   Úredirect_urlÚresponses                r   Ú__call__zTrustedHostMiddleware.__call__    s„  è ø€ Ø�>Š>˜U 6™]ð 3
ñ 
ð —(‘(˜5 '¨4Ó0×0Ð0Øä Ô&ˆÜ'¨¯©°FÓ(;Ó<ˆØÐØKÔ#Ð$9ÀsÔKÈEÐSZÐ\`Óa×aÐaØØ×Ñ×%Ñ%Ó'ˆàˆØ"ÐØ×)Ñ)ò 	*ˆGØ�wŠ 7×#5Ñ#5°cÔ#:¸t¿}¹}ÈWÐUVÐUWÈ[Ô?YØ $�ÙØ˜$‘ 'Ó)Ø%)Ñ"ð	*ñ Ø—(‘(˜5 '¨4Ó0×0Ñ0ñ " d×&7Ò&7Ü Ô&�Ø"Ÿ{™{°&¸3¿:¹:Ñ2E˜{ÓF�Ü+´°LÓ0AÔB‘ä,Ð-BÐPSÔT�Ù˜5 '¨4Ó0×0Ñ0ð; 1ùð bøð 1øð 1úsN   ‚*E6¬E-­AE6Á2E0Á3A(E6ÃE6Ã8E2Ã9A.E6Å'E4Å(E6Å0E6Å2E6Å4E6)NT)r   r   r   zSequence[str] | Noner   ÚboolÚreturnÚNone)r#   r   r,   r   r-   r   r6   r7   )Ú__name__Ú
__module__Ú__qualname__r   r4   © ó    r   r   r      s:   „ ð /3Ø!ð	)àð)ð ,ð)ð ð	)ð
 
ó)ô$"1r<   r   N)Ú
__future__r   Úcollections.abcr   Ústarlette._utilsr   Ústarlette.datastructuresr   r   Ústarlette.responsesr   r	   r
   Ústarlette.typesr   r   r   r   r   r   r;   r<   r   ú<module>rC      s-   ðÝ "å $å .ß 1ß MÑ Mß 9Ó 9àRÐ ÷51ò 51r<   