Ë
    „œjò  ã                  óŽ   — d Z ddlmZ ddlZddlZddlZddlZddlmZm	Z	 dd„Z
dd„Zdd„Zdd	œdd
„Zdd	œdd„Zddœdd„Zdd„Zy)uI   ÐŸÑ€Ð¾Ð²ÐµÑ€ÐºÐ° initData Telegram Mini App Ð¸ Ñ�ÐµÑ�Ñ�Ð¸Ð¸ Ð¿Ð°Ð½ÐµÐ»Ð¸.é    )ÚannotationsN)Ú	parse_qslÚunquotec                ó:  — g }t        t        | d¬«      «      }|r|j                  |«       i }t        | «      j	                  d«      D ]3  }d|vrŒ|j	                  dd«      \  }}t        |«      |t        |«      <   Œ5 |r||k7  r|j                  |«       |xs |gS )NT)Úkeep_blank_valuesú&ú=é   )Údictr   ÚappendÚstrÚsplitr   )ÚrawÚsetsÚqslÚmanualÚpartÚkeyÚvalues          ú,/var/www/api.ozpay.ru/ozpay/telegram_auth.pyÚ_field_setsr      s›   € Ø€DÜ
Œy˜°Ô5Ó
6€CÙ
Ø�‰�CÔØ€FÜ�C“—‘˜sÓ#ò .ˆØ�d‰?ØØ—Z‘Z  QÓ'‰
ˆˆUÜ& u›~ˆŒw�s‹|Òð	.ñ
 �&˜C’-Ø�‰�FÔØŠ=�C�5Ðó    c                ó6  — 	 t        j                  | j                  d«      xs d«      }t        |t        «      r|j                  d«      st	        d«      ‚t        |d   «      |d<   |S # t        t        t         j
                  f$ r}t	        d«      |‚d }~ww xY w)NÚuserÚ õ,   Ð�ÐµÑ‚ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ�Úid)	ÚjsonÚloadsÚgetÚ	TypeErrorÚ
ValueErrorÚJSONDecodeErrorÚ
isinstancer   Úint)Úfieldsr   Úexcs      r   Ú_user_from_fieldsr(      s‹   € ðRÜ�z‰z˜&Ÿ*™* VÓ,Ò2°Ó3ˆô �dœDÔ!¨¯©°$¬ÜÐGÓHÐHÜ�T˜$‘Z“€Dˆ�JØ€Køô ”z¤4×#7Ñ#7Ð8ò RÜÐGÓHÈcÐQûðRús   ‚(A) Á)BÂBÂBc                óÚ   — t        | xs d«      j                  «       }|st        d«      ‚t        d«      }t        |«      D ]  }	 t	        |«      c S  |‚# t        $ r}|}Y d }~Œ$d }~ww xY w)Nr   õ<   ÐžÑ‚ÐºÑ€Ð¾Ð¹Ñ‚Ðµ Ð¼Ð¸Ð½Ð¸-Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ð¸Ð· Ð±Ð¾Ñ‚Ð°r   )r   Ústripr"   r   r(   )Ú	init_datar   Ú
last_errorr&   r'   s        r   Úextract_user_from_init_datar.   '   sv   € Ü
ˆiŠo˜2Ó
×
$Ñ
$Ó
&€CÙÜÐWÓXÐXÜ&Ð'UÓV€JÜ˜cÓ"ò ˆð	Ü$ VÓ,Ò,ðð
 Ðøô ò 	Ø�Jûð	ús   Á
AÁ	A*ÁA%Á%A*i€:	 ©Úmax_agec               ó²  — t        | xs d«      j                  «       }|st        d«      ‚t        d«      }t        |«      D �]{  }t	        |«      }t        |j                  dd«      xs d«      }|st        d«      }Œ<dj                  d„ t        |j                  «       «      D «       «      }t        j                  d|j                  d	«      t        j                  «      j                  «       }	t        j                  |	|j                  d	«      t        j                  «      j                  «       }
t        j                   |
|«      st        d«      }�Œ	 t#        |j%                  d
«      xs d«      }|dk  rt        d«      }�ŒCt)        j(                  «       |z
  }||kD  s|dk  rt        d«      }�Œqt+        |«      c S  |‚# t&        t        f$ r d}Y Œcw xY w)Nr   r*   õ(   Ð�ÐµÐ²ÐµÑ€Ð½Ð°Ñ� Ð¿Ð¾Ð´Ð¿Ð¸Ñ�ÑŒ TelegramÚhashu   Ð�ÐµÑ‚ Ð¿Ð¾Ð´Ð¿Ð¸Ñ�Ð¸ Telegramú
c              3  ó0   K  — | ]  \  }}|› d |› �–— Œ y­w)r	   N© )Ú.0r   r   s      r   ú	<genexpr>z%validate_init_data.<locals>.<genexpr>?   s   è ø€ ÒY±J°C¸ #  a¨ wÔ/ÑYùs   ‚s
   WebAppDataúutf-8Ú	auth_dater   ua   Ð¡ÐµÑ�Ñ�Ð¸Ñ� Ð¼Ð¸Ð½Ð¸-Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ»Ð°, Ð¾Ñ‚ÐºÑ€Ð¾Ð¹Ñ‚Ðµ ÐµÐ³Ð¾ Ð·Ð°Ð½Ð¾Ð²Ð¾iÔþÿÿ)r   r+   r"   r   r   ÚpopÚjoinÚsortedÚitemsÚhmacÚnewÚencodeÚhashlibÚsha256ÚdigestÚ	hexdigestÚcompare_digestr%   r    r!   Útimer(   )r,   Ú	bot_tokenr0   r   r-   r&   ÚparsedÚreceived_hashÚ
data_checkÚsecretÚ
calculatedr:   Úages                r   Úvalidate_init_datarO   4   s¥  € Ü
ˆiŠo˜2Ó
×
$Ñ
$Ó
&€CÙÜÐWÓXÐXÜ&Ð'QÓR€JÜ˜cÓ"ó )ˆÜ�f“ˆÜ˜FŸJ™J v¨rÓ2Ò8°bÓ9ˆÙÜ#Ð$DÓEˆJØØ—Y‘YÑYÄ&ÈÏÉËÓBXÔYÓYˆ
Ü—‘˜-¨×)9Ñ)9¸'Ó)BÄGÇNÁNÓS×ZÑZÓ\ˆÜ—X‘X˜f j×&7Ñ&7¸Ó&@Ä'Ç.Á.ÓQ×[Ñ[Ó]ˆ
Ü×"Ñ" :¨}Ô=Ü#Ð$NÓOˆJÙð	Ü˜FŸJ™J {Ó3Ò8°qÓ9ˆIð ˜Š>Ü#ð  %Hó  IˆJÙÜ�i‰i‹k˜IÑ%ˆØ�Š=˜C $šJÜ#ð  %Hó  IˆJÙÜ  Ó(Ò(ð/)ð0 Ðøô œ:Ð&ò 	ØŠIð	ús   ÅGÇGÇGc               ó¶  — t        | xs d«      j                  «       }|st        d«      ‚t        d«      }t        «       }|D ]G  }t        |xs d«      j                  «       }|r||v rŒ'|j	                  |«       	 t        |||¬«      c S  |‚# t        $ rA}|}t        |«      j                  d«      st        |«      j                  d«      rY d }~Œ�‚ d }~ww xY w)Nr   r*   r2   r/   u   Ð�ÐµÐ²ÐµÑ€Ð½Ð°Ñ� Ð¿Ð¾Ð´Ð¿Ð¸Ñ�ÑŒu   Ð�ÐµÑ‚ Ð¿Ð¾Ð´Ð¿Ð¸Ñ�Ð¸)r   r+   r"   ÚsetÚaddrO   Ú
startswith)r,   Útokensr0   r   r-   ÚseenÚtokenr'   s           r   Úvalidate_init_data_anyrW   T   sÕ   € Ü
ˆiŠo˜2Ó
×
$Ñ
$Ó
&€CÙÜÐWÓXÐXÜ&Ð'QÓR€JÜ“U€DØò ˆÜ�E’K˜RÓ ×&Ñ&Ó(ˆÙ˜ ™ØØ�‰�Œð	Ü% c¨5¸'ÔBÒBðð Ðøô ò 	ØˆJÜ�3‹x×"Ñ"Ð#DÔEÌÈSË×I\ÑI\Ð]tÔIuÜØûð		ús   Á;BÂ	CÂ6CÃCÃC)Úttlc               ó*  — t        t        j                  «       «      t        |«      z   }t        | «      › d|› �}t        j                  |j	                  d«      |j	                  d«      t
        j                  «      j                  «       d d }|› d|› �S )Nú.r9   é   )r%   rG   r?   r@   rA   rB   rC   rE   )Úuser_idrH   rX   ÚexpÚpayloadÚsigs         r   Úmake_panel_tokenr`   i   s|   € Ü
Œd�i‰i‹kÓ
œS ›XÑ
%€CÜ�W“�˜a ˜uÐ%€GÜ
�(‰(�9×#Ñ# GÓ,¨g¯n©n¸WÓ.EÄwÇ~Á~Ó
V×
`Ñ
`Ó
bÐcfÐdfÐ
g€CØˆY�a˜�uÐÐr   c                ó(  — t        | xs d«      j                  d«      }t        |«      dk7  rt        d«      ‚|\  }}}|› d|› �}t	        j
                  |j                  d«      |j                  d«      t        j                  «      j                  «       d d }t	        j                  ||«      st        d«      ‚	 t        |«      t        j                  «       k  rt        d«      ‚t        |«      S # t        t        f$ r}t        d«      |‚d }~ww xY w)Nr   rZ   é   u+   Ð¡ÐµÑ�Ñ�Ð¸Ñ� Ð½ÐµÐ´ÐµÐ¹Ñ�Ñ‚Ð²Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°r9   r[   uI   Ð¡ÐµÑ�Ñ�Ð¸Ñ� ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ»Ð°, Ð¾Ñ‚ÐºÑ€Ð¾Ð¹Ñ‚Ðµ Ð¿Ð°Ð½ÐµÐ»ÑŒ Ð·Ð°Ð½Ð¾Ð²Ð¾)r   r   Úlenr"   r?   r@   rA   rB   rC   rE   rF   r%   rG   r!   )	rV   rH   Úpartsr\   r]   r_   r^   Úexpectr'   s	            r   Úparse_panel_tokenrf   p   sù   € Ü�’˜Ó×"Ñ" 3Ó'€EÜ
ˆ5ƒz�Q‚ÜÐFÓGÐGØÑ€GˆS�#Ø�	˜˜3˜%Ð €GÜ�X‰X�i×&Ñ& wÓ/°·±ÀÓ1HÌ'Ï.É.ÓY×cÑcÓeÐfiÐgiÐj€FÜ×Ñ˜v sÔ+ÜÐFÓGÐGðQÜˆs‹8”d—i‘i“kÒ!ÜÐhÓiÐiÜ�7‹|ÐøÜ”zÐ"ò QÜÐFÓGÈSÐPûðQús   Â;5C1 Ã1DÄ DÄD)r   r   Úreturnz
list[dict])r&   r   rg   r   )r,   r   rg   r   )r,   r   rH   r   r0   r%   rg   r   )r,   r   rT   z	list[str]r0   r%   rg   r   )r\   r%   rH   r   rX   r%   rg   r   )rV   r   rH   r   rg   r%   )Ú__doc__Ú
__future__r   rB   r?   r   rG   Úurllib.parser   r   r   r(   r.   rO   rW   r`   rf   r6   r   r   ú<module>rk      sT   ðÙ Oå "ã Û Û Û ß +óó ó
ð JSõ ð@ QZõ ð* BKõ ôQr   