+
    *¼jzt  ã            
       óf  a € R¿ to0 t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHtHtH	t	 ^ RI
Ht ^ RIHt ]! ]! ]4      P!                  4       P"                  R,          4      tR tRÀR R lltR	 R
 ltR R ltR tR R ltR R ltR R ltR R ltR R ltR tR tRÁR R lltRÂR R llt RÁR R llt!R  R! lt"R" R# lt#R$ R% lt$R& R' lt%R( R) lt&R* R+ lt'R, R- lt(R. R/ lt)R0 R1 lt*R2 R3 lt+R4 R5 lt,R6 R7 lt-R8 R9 lt.R: R; lt/R< R= lt0R> R? lt1R@ RA lt2RB RC lt3RD RE lt4RF RG lt5RH RI lt6RJ RK lt7RL RM lt8RN RO lt9RPt:]Pv                  ! RQ4      t<]Pv                  ! RR4      t=RSRTRURVRWRXRYRZ/RSR[RUR\RWR]RYR^/RSR_RUR`RWRaRYRb/3t>Rs?] ^ k Rc Rd lt@Re Rf ltARg Rh ltBRi Rj ltCRk Rl ltDRm Rn ltERo Rp ltFRq Rr ltGRs Rt ltHRu Rv ltIRw Rx ltJRy Rz ltKR{ R| ltLR} R~ ltMRÃR R€ lltNR� R‚ ltORƒR„R…R/R† R‡ lltPRÄRˆ R‰ lltQRŠ R‹ ltRRŒ R� ltSRŽ R� ltTR� R‘ ltUR’ R“ ltVR” R• ltWR– R— ltXR˜ R™ ltYRsZ] ^k Rš R› lt[Rœ R� lt\Rž RŸ lt]R  R¡ lt^R¢ R£ lt_R¤t`Rsa] ^k R¥ R¦ ltbR§ R¨ ltcR© Rª ltdR« R¬ lteR­ R® ltfR¯ R° ltgR± R² lthR³ R´ ltiRÃRµ R¶ lltjR· R¸ ltkRÁR¹ Rº lltlR» R¼ ltmR½ R¾ ltnR# )Åé    N)ÚFlaskÚrequestÚjsonify)ÚPath)ÚOptionalzozpay.dbc                  ó´  € \        R \         24       \        P                  ! \        4      p \        P                  V n        V P                  4       pVP                  R4       VP                  R4       VP                  4        Uu0 uF  q"^,          kK  	  ppRV9  d   VP                  R4       RV9  d   VP                  R4       RV9  d   VP                  R4       R	V9  d   VP                  R
4       RV9  d   VP                  R4       RV9  d   VP                  R4       RV9  d   VP                  R4       \        V4       M2VP                  R4       VP                  4       '       d   \        V4       VP                  R4       VP                  R4       VP                  R4       VP                  R4       V P                  4        V # u upi )z[db_api] opening DB: zö
		CREATE TABLE IF NOT EXISTS accounts (
			device TEXT PRIMARY KEY,
			ip TEXT,
			port INTEGER,
			number TEXT,
			password TEXT,
			name TEXT,
			balance REAL,
			income REAL,
			outcome REAL,
			cards TEXT,
			blocked INTEGER DEFAULT 0
		)
		zPRAGMA table_info(accounts)Úblockedz9ALTER TABLE accounts ADD COLUMN blocked INTEGER DEFAULT 0Ú
card_flagsz/ALTER TABLE accounts ADD COLUMN card_flags TEXTÚneeds_setupz=ALTER TABLE accounts ADD COLUMN needs_setup INTEGER DEFAULT 0Úfrom_publicz=ALTER TABLE accounts ADD COLUMN from_public INTEGER DEFAULT 0Ú	public_idz.ALTER TABLE accounts ADD COLUMN public_id TEXTÚcolorz*ALTER TABLE accounts ADD COLUMN color TEXTÚslotz6ALTER TABLE accounts ADD COLUMN slot INTEGER DEFAULT 1zfSELECT ip, slot FROM accounts WHERE COALESCE(from_public, 0) = 0 GROUP BY ip, slot HAVING COUNT(*) > 1zd
		CREATE TABLE IF NOT EXISTS banned_ips (
			ip TEXT PRIMARY KEY,
			banned_at REAL NOT NULL
		)
		zZ
		CREATE TABLE IF NOT EXISTS app_settings (
			key TEXT PRIMARY KEY,
			value TEXT
		)
		zl
		CREATE TABLE IF NOT EXISTS panel_workers (
			tg_id INTEGER PRIMARY KEY,
			added_at REAL NOT NULL
		)
		zÔ
		CREATE TABLE IF NOT EXISTS proxies (
			id INTEGER PRIMARY KEY AUTOINCREMENT,
			url TEXT NOT NULL UNIQUE,
			used INTEGER NOT NULL DEFAULT 0,
			added_at REAL NOT NULL,
			used_at REAL,
			used_by TEXT
		)
		)ÚprintÚDB_PATHÚsqlite3ÚconnectÚRowÚrow_factoryÚcursorÚexecuteÚfetchallÚ_backfill_device_slotsÚfetchoneÚcommit)ÚconnÚcurÚrowÚcolss       Ú	db_api.pyÚget_connr!      s”  € äÐ	œw˜iÐ(Ô)Ü�ŠœÓ €Ü—K‘K€Ôà‡{�{ƒ}€Ø‡�ðôð" ‡�Ð*Ô+ØŸ<™<œ>Ó*™>�CˆQ�ˆ™>€Ð*Ø�TÔØ‡+�+ÐIÔJØ˜ÔØ‡+�+Ð?Ô@Ø˜ÔØ‡+�+ÐMÔNØ˜ÔØ‡+�+ÐMÔNØ�tÔØ‡+�+Ð>Ô?Ø�4ÔØ‡+�+Ð:Ô;Ø
�$ÔØ‡+�+ÐFÔGÜ˜Õà‡+�+Økôð 	‡\�\‡^‚^Ü˜#ÔØ‡�ðôð ‡�ðôð ‡�ðôð ‡�ð	ôð ‡�„Ø€ùòw 	+s   ÂGc                ó0   € V ^8„  d   QhR\         R\         /# )é   ÚdefaultÚreturn©Úint)Úformats   "r    Ú__annotate__r)   g   s   € ÷ 'ñ '¤cð '´#ñ 'ó    c                 ób   €  \        V 4      pV^8¼  d   V# T#   \        \        3 d    Tp L i ; i©é   )r'   Ú	TypeErrorÚ
ValueError)Úvaluer$   r   s   && r    Ú_parse_slot_valuer1   g   s>   € ðÜ	ˆU‹€$ð ˜”	ˆÐ&˜wÐ&øô 
”JÐô Ø	‚$ðús   ‚ ˜.­.c                ó$   € V ^8„  d   QhR\         /# ©r#   r%   r&   )r(   s   "r    r)   r)   o   s   € ÷ 6ñ 6œcñ 6r*   c                 óL   € \        T ;'       g    / P                  R 4      ^4      # )r   )r1   Úget©r   s   &r    Údevice_slot_valuer7   o   s   € Ü˜3Ÿ9˜9 "Ÿ/™/¨&Ó1°1Ó5Ð5r*   c                ó   € V ^8„  d   QhRR/# )r#   r%   N© )r(   s   "r    r)   r)   s   s   € ÷ .Pñ .P 4ñ .Pr*   c                 óê  € V P                  R 4       V P                  4        Uu. uF  p\        V4      NK  	  pp/ pV FV  p\        VP	                  R4      ;'       g    R4      P                  4       pVP                  V. 4      P                  V4       KX  	  VP                  4        EFÁ  pVP                  R R7       / pV F[  pVP	                  R4      '       d   K  \        VP	                  R4      ^ 4      pV^8¼  g   K@  VP	                  V^ 4      ^,           Wx&   K]  	  \        4       p	/ p
V F®  pVP	                  R4      p\        VP	                  R4      ^ 4      pV'       g   K9  VP	                  R4      '       d!   V^8  d   ^pV	P                  V4       WŠV&   Kp  V^8¼  g   Ky  VP	                  V4      ^8X  g   K‘  W‰9  g   K™  V	P                  V4       WŠV&   K°  	  ^pV FS  pVP	                  R4      pV'       d   Wº9   d   K$  WÉ9   d   V^,          pK  V	P                  V4       WÊV&   V^,          pKU  	  V
P                  4        F  w  r¸V P                  RW‹34       K  	  EKÄ  	  R	# u upi )
z8SELECT device, ip, port, slot, from_public FROM accountsÚipÚ c                 óâ   € \        V P                  R 4      ;'       g    R4      P                  4       '       d   \        V R ,          4      MR\        V P                  R4      ;'       g    R4      3# )Úportr<   Údevicei Êš;)Ústrr5   Úisdigitr'   r6   s   &r    Ú<lambda>Ú(_backfill_device_slots.<locals>.<lambda>{   sQ   € Ü˜3Ÿ7™7 6›?×0Ð0¨bÓ1×9Ñ9×;Ò;„3€sˆ6…{ÔÀÜ€s‡w�wˆxÓ×Ð˜BÓñr*   ©Úkeyr   r   r?   z-UPDATE accounts SET slot = ? WHERE device = ?N)r   r   Údictr@   r5   ÚstripÚ
setdefaultÚappendÚvaluesÚsortr1   ÚsetÚaddÚitems)r   ÚrÚrowsÚby_ipr   r;   ÚgroupÚcountsr   ÚusedÚassignedr?   Úns   &            r    r   r   s   s  € Ø‡�ÐGÔHØŸ,™,œ.Ó)™.�QŒˆaŽ™.€Ð)Ø€Û€SÜ
ˆ3�7‰7�4‹=×Ð˜BÓ×%Ñ%Ó'€"Ø×Ñ�2�rÓ×!Ñ! #Ö&ñ ð �l‰l�n€UØ‡*�*ñ €*ô ð €&Û€cØ	‡g�gˆm×ÒÙÜ
˜CŸG™G F›O¨QÓ
/€4Ø
ˆa†iØ—:‘:˜d AÓ&¨Õ*€FƒLñ ô “5€$Ø€(Û€cØ�G‰G�HÓ€6Ü
˜CŸG™G F›O¨QÓ
/€4ß
ÙØ	‡g�gˆm×ÒØˆa„xØ€TØ‡H�HˆT„NØˆVÑÙØ
ˆa†i�F—J‘J˜tÓ$¨Ö)¨dÖ.>Ø‡H�HˆT„NØˆVÓñ ð €!Û€cØ�G‰G�HÓ€6ß
�FÔ&ÙØ	
ŒØˆ…F‚AØ‡8�8ˆA„;ØˆFÑØˆ…6‚1ñ ð —n‘nÖ&�l€fØ‡;�;Ð>ÀÀÖOô 'óM ùò 	*s   ¤I0c                  óœ   € \        4       p V P                  4       pVP                  R 4       V P                  4        V P	                  4        R# )zØ
		CREATE TABLE IF NOT EXISTS accounts (
			device TEXT PRIMARY KEY,
			ip TEXT,
			port INTEGER,
			number TEXT,
			password TEXT,
			name TEXT,
			balance REAL,
			income REAL,
			outcome REAL,
			cards TEXT
		)
		N)r!   r   r   r   Úclose)r   r   s     r    Úinit_dbrY   ¤   s9   € Ü‹
€Ø‡{�{ƒ}€Ø‡�ðôð  ‡�„Ø‡�†r*   c                ó$   € V ^8„  d   QhR\         /# ©r#   r?   ©r@   )r(   s   "r    r)   r)   »   s   € ÷ ñ œ#ñ r*   c                ó  € \        4        \        4       pVP                  4       pVP                  RV VP	                  R4      VP	                  R4      VP	                  R4      VP	                  R4      VP	                  R4      VP	                  R4      VP	                  R4      VP	                  R	4      VP	                  R
4      \        VP	                  R4      ^4      34       VP                  4        VP                  4        R# )z=Create a device row. Pass any of the columns as keyword args.z…INSERT INTO accounts (device, ip, port, number, password, name, balance, income, outcome, cards, slot) VALUES (?,?,?,?,?,?,?,?,?,?,?)r;   r>   ÚnumberÚpasswordÚnameÚbalanceÚincomeÚoutcomeÚcardsr   N)rY   r!   r   r   r5   r1   r   rX   )r?   Úfieldsr   r   s   &,  r    Úcreate_devicerf   »   sÆ   € ä„Ü‹
€Ø‡{�{ƒ}€Ø‡�ð Jà	Ø	‡:�:ˆdÓØ	‡:�:ˆfÓØ	‡:�:ˆhÓØ	‡:�:ˆjÓØ	‡:�:ˆfÓØ	‡:�:ˆiÓØ	‡:�:ˆhÓØ	‡:�:ˆiÓØ	‡:�:ˆgÓÜ�V—Z‘Z Ó'¨Ó+ðôð  ‡�„Ø‡�†r*   c                óF   € V ^8„  d   QhR\         R\        \        ,          /# ©r#   r;   r%   ©r@   r   rF   )r(   s   "r    r)   r)   Ô   s   € ÷ ñ œsð ¬X´d­^ñ r*   c                 ó0  € V '       d   VR9   d   R #  \        V4      p\        4       pTP	                  4       pTP                  RY34       TP                  4       pTP                  4        T'       g   R # \        T4      #   \        \        3 d     R # i ; i)Nz0SELECT * FROM accounts WHERE ip = ? AND port = ?©Nr<   )	r'   r.   r/   r!   r   r   r   rX   rF   )r;   r>   r   r   r   s   &&   r    Úfind_device_by_ip_portrl   Ô   s   € ß
ˆd�jÔ Ù	ðÜ	ˆT‹€$ô 	‹
€Ø‡{�{ƒ}€Ø‡�Ð?À"ÀÔLØ
‡|�|ƒ~€Ø‡�„ßÙ	ÜˆS‹	Ðøô 
”JÐô Ú	ðús   “B  Â BÂBc                óF   € V ^8„  d   QhR\         R\        \        ,          /# )r#   r   r%   ri   )r(   s   "r    r)   r)   å   s   € ÷ ñ ¬ð ´¼µñ r*   c                 ó   € \        T ;'       g    R 4      P                  4       p V '       g   R# \        4       pVP                  4       pVP	                  RV 34       VP                  4       pVP                  4        V'       g   R# \        V4      # )r<   Nz*SELECT * FROM accounts WHERE public_id = ?)r@   rG   r!   r   r   r   rX   rF   )r   r   r   r   s   &   r    Úfind_device_by_public_idro   å   sh   € Ü�—�˜bÓ!×'Ñ'Ó)€ßÙ	Ü‹
€Ø‡{�{ƒ}€Ø‡�Ð9¸I¸<ÔHØ
‡|�|ƒ~€Ø‡�„ßÙ	ÜˆS‹	Ðr*   c                ó0   € V ^8„  d   QhR\         R\        /# ©r#   r?   r%   ©r@   Úbool)r(   s   "r    r)   r)   ó   s   € ÷ ñ œ#ð ¤$ñ r*   c                 ó¾   € \        4       pVP                  4       pVP                  R V 34       VP                  4        VP                  pVP                  4        V^ 8„  # )z%DELETE FROM accounts WHERE device = ?©r!   r   r   r   ÚrowcountrX   )r?   r   r   Úchangeds   &   r    Údelete_devicerx   ó   sJ   € Ü‹
€Ø‡{�{ƒ}€Ø‡�Ð4°v°iÔ@Ø‡�„Ø�<‰<€Ø‡�„Ø�!‰Ðr*   c                ó$   € V ^8„  d   QhR\         /# r[   r\   )r(   s   "r    r)   r)   ý   s   € ÷ ñ ”sñ r*   c                 óÆ   € \        4       pVP                  4       pVP                  R V 34       VP                  4       pVP	                  4        V'       g   R# \        V4      # )z'SELECT * FROM accounts WHERE device = ?N)r!   r   r   r   rX   rF   )r?   r   r   r   s   &   r    Ú
get_devicer{   ý   sI   € Ü‹
€Ø‡{�{ƒ}€Ø‡�Ð6¸¸	ÔBØ
‡|�|ƒ~€Ø‡�„ßÙ	ÜˆS‹	Ðr*   c                 óþ   € \        V P                  R 4      ;'       g    R4      p\        P                  ! RV4       Uu. uF3  q"P	                  4       '       d   \        V4      MVP                  4       NK5  	  up# u upi )r?   r<   z(\d+))r@   r5   ÚreÚsplitrA   r'   Úlower)r   r?   Úparts   &  r    Ú_device_sort_keyr�     sZ   € Ü
ˆc�g‰g�hÓ×%Ð% 2Ó
&€ÜCEÇ8Â8ÈHÐV\ÔC]Ó^ÑC]¸4—l‘l—n’nŒˆTŒ¨$¯*©*«,Ò	6ÑC]Ñ^Ð^ùÒ^s   ¾9A:c                  ó  € \        4       p V P                  4       pVP                  R 4       VP                  4       pV P	                  4        V Uu. uF  p\        V4      NK  	  ppVP                  \        R7       V# u upi )zSELECT * FROM accountsrD   )r!   r   r   r   rX   rF   rK   r�   )r   r   rP   rO   rN   s        r    Úlist_devicesrƒ     sf   € Ü‹
€Ø‡{�{ƒ}€Ø‡�Ð%Ô&Ø�‰‹€Ø‡�„ÙÓ	 ™4�aŒ$ˆqŽ'™4€Ð	 Ø‡�Ô €Ô!Ø€ùò 
!s   ÁA>c                ó<   € V ^8„  d   QhR\         R\         R\        /# ©r#   r;   Úexcluder%   )r@   Úlist)r(   s   "r    r)   r)     s!   € ÷ 
ñ 
œ3ð 
¬ð 
´dñ 
r*   c                 ó²  € \        T ;'       g    R 4      P                  4       p\        T;'       g    R 4      P                  4       p. p\        4        F€  pV'       d,   \        VP                  R4      ;'       g    R 4      V8X  d   K6  \        VP                  R4      ;'       g    R 4      P                  4       V8w  d   Ko  VP	                  V4       K‚  	  V# )r<   r?   r;   )r@   rG   rƒ   r5   rI   )r;   r†   ÚwantedÚskiprN   r   s   &&    r    Úlist_devices_by_ipr‹     s£   € Ü
ˆb�hˆh�B‹-×
Ñ
Ó
€ÜˆG�MˆM�rÓ× Ñ Ó"€Ø	€ÜŽN€Sß	Œc�#—'‘'˜(Ó#×)Ð) rÓ*¨dÔ2ÙÜˆ�‰�‹×	Ð	˜"Ó×#Ñ#Ó%¨Ô/ÙØ‡,�,ˆsÖñ ð 	€r*   c                óH   € V ^8„  d   QhR\         R\         R\        R\        /# )r#   r;   r†   Úmin_slotr%   )r@   r'   )r(   s   "r    r)   r)   %  s(   € ÷ 

ñ 

œð 

¤sð 

¼3ð 

Äsñ 

r*   c                 óÖ   € \        WR 7       Uu0 uF  p\        V4      kK  	  pp \        V4      pV^8  d   ^pWT9   d   V^,          pK  V# u upi   \        \        3 d    ^p L6i ; i)©r†   )r‹   r7   r'   r.   r/   )r;   r†   r�   r   rT   rV   s   &&&   r    Únext_device_slotr�   %  ss   € Ü+=¸bÕ+RÓSÑ+R CÔ	˜3Ö	Ñ+R€ÐSðÜ	ˆ(ƒm€!ð ˆ„EØ€!Ø„yØ€q…&‚!Ø	€ùò 	Tøô 
”JÐô Ø‚!ðús   �A¦A ÁA(Á'A(c                óR   € V ^8„  d   QhR\         R\         R\        \        ,          /# r…   )r@   rL   r'   )r(   s   "r    r)   r)   2  s%   € ÷ 	ñ 	œ#ð 	¬ð 	´S¼µXñ 	r*   c                 óò   € \        4       p\        WR 7       FD  p \        VP                  R4      4      p^Tu;8:  d
   R8:  g   K/  M K3  TP                  T4       KF  	  V#   \        \
        3 d     K^  i ; i)r�   r>   iÿÿ  )rL   r‹   r'   r5   r.   r/   rM   )r;   r†   rT   r   r>   s   &&   r    Úused_device_portsr“   2  sl   € Ü“%€Ü˜r×3€SðÜ
ˆc�g‰g�f‹oÓ
€4ð ˆ$Ö�%×ÒØ‡8�8ˆD†>ñ 4ð 	€øô	 ”ZÐ	 ô Úðús   ›A!Á!A6Á5A6c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r#   r?   Údatar%   )r@   rF   rs   )r(   s   "r    r)   r)   >  s!   € ÷ ñ œ#ð ¤Tð ¬dñ r*   c                ó´  € . ROp. p. pVP                  4        F2  w  rVWR9   g   K  VP                  V R24       VP                  V4       K4  	  V'       g   R# VP                  V 4       \        4       pVP                  4       pVP	                  RRP                  V4       R2V4       VP                  4        VP                  p	VP                  4        V	^ 8„  # )z=Generic update by device. `data` keys should be column names.z = ?FúUPDATE accounts SET z, z WHERE device = ?)r;   r>   r^   r_   r`   ra   rb   rc   rd   r	   r
   r   r   r   r   r   )	rN   rI   r!   r   r   Újoinr   rv   rX   )
r?   r•   ÚallowedÚ	set_partsÚparamsÚkÚvr   r   rw   s
   &&        r    Úupdate_devicerž   >  s¹   € ò v€Ø€Ø
€Ø�Z‰ZŽ\�T€QØ†\Ø×Ñ�q�c˜�JÔØ	‡=�=�Öñ ÷ 	Ù	Ø‡�ˆvÔÜ‹
€Ø‡{�{ƒ}€Ø‡�Ð# D§I¡I¨iÓ$8Ð#9Ð9JÐKÈVÔTØ‡�„Ø�<‰<€Ø‡�„Ø�!‰Ðr*   c                ó<   € V ^8„  d   QhR\         R\         R\        /# )r#   ÚoldÚnewr%   rr   )r(   s   "r    r)   r)   S  s!   € ÷ ñ ”sð ¤ð ¬ñ r*   c                 ó°  € T ;'       g    R P                  4       p T;'       g    R P                  4       pV '       d   V'       d   W8X  d   R# \        4       pVP                  4       p VP                  RW34       VP	                  4        VP
                  pTP                  4        T^ 8„  #   \        P                   d    TP                  4         R# i ; i)r<   Fz/UPDATE accounts SET device = ? WHERE device = ?)	rG   r!   r   r   r   rv   r   ÚIntegrityErrorrX   )r    r¡   r   r   rw   s   &&   r    Úrename_devicer¤   S  s¨   € Ø�	ˆ	ˆr×ÑÓ€Ø�	ˆ	ˆr×ÑÓ€ß—3˜#œ*Ù	Ü‹
€Ø‡{�{ƒ}€ðØ‡+�+Ð?À#ÀÔLØ‡+�+„-Ø�L‰L€'ð ‡�„Ø�!‰Ðøô	 	×Ñô Ø‡*�*„,Ú	ðús   Á(/B, Â,%CÃCc                ó0   € V ^8„  d   QhR\         R\         /# )r#   r?   Úfieldr\   )r(   s   "r    r)   r)   h  s   € ÷ ñ ”sð ¤3ñ r*   c                 óÊ   € \        4       pVP                  4       pVP                  R V R2V 34       VP                  4       pVP	                  4        V'       g   R# V^ ,          # )zSELECT z FROM accounts WHERE device = ?N)r!   r   r   r   rX   )r?   r¦   r   r   r   s   &&   r    Ú
_get_fieldr¨   h  sQ   € Ü‹
€Ø‡{�{ƒ}€Ø‡�ˆw�u�gÐ<Ð=À¸yÔIØ
‡|�|ƒ~€Ø‡�„ßÙ	ØˆA�€r*   c                ó<   € V ^8„  d   QhR\         R\         R\        /# )r#   r?   r¦   r%   rr   )r(   s   "r    r)   r)   s  s!   € ÷ ñ œ#ð ¤cð ´Tñ r*   c                 óÆ   € \        4       pVP                  4       pVP                  R V R2W 34       VP                  4        VP                  pVP                  4        V^ 8„  # )r—   z = ? WHERE device = ?ru   )r?   r¦   r0   r   r   rw   s   &&&   r    Ú_update_fieldr«   s  sT   € Ü‹
€Ø‡{�{ƒ}€Ø‡�Ð# E 7Ð*?Ð@À5À/ÔRØ‡�„Ø�<‰<€Ø‡�„Ø�!‰Ðr*   c                ó$   € V ^8„  d   QhR\         /# r[   r\   )r(   s   "r    r)   r)   ~  s   € ÷ !ñ !”3ñ !r*   c                 ó   € \        V R 4      # ©r;   ©r¨   ©r?   s   &r    Úget_ipr±   ~  s   € Ü�6˜4Ó Ð r*   c                ó<   € V ^8„  d   QhR\         R\         R\        /# )r#   r?   r;   r%   rr   )r(   s   "r    r)   r)   ‚  s!   € ÷ (ñ (”cð (œsð (¤tñ (r*   c                 ó   € \        V R V4      # r®   ©r«   )r?   r;   s   &&r    Ú	update_iprµ   ‚  s   € Ü�f˜d BÓ'Ð'r*   c                ó$   € V ^8„  d   QhR\         /# r[   r\   )r(   s   "r    r)   r)   ‡  ó   € ÷ #ñ #”Sñ #r*   c                 ó   € \        V R 4      # ©r>   r¯   r°   s   &r    Úget_portrº   ‡  ó   € Ü�6˜6Ó"Ð"r*   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r#   r?   r>   r%   ©r@   r'   rs   )r(   s   "r    r)   r)   ‹  ó!   € ÷ ,ñ ,œð ,¤3ð ,¬4ñ ,r*   c                 ó   € \        V R V4      # r¹   r´   )r?   r>   s   &&r    Úupdate_portrÀ   ‹  ó   € Ü�f˜f dÓ+Ð+r*   c                ó$   € V ^8„  d   QhR\         /# r[   r\   )r(   s   "r    r)   r)   �  ó   € ÷ %ñ %”sñ %r*   c                 ó   € \        V R 4      # ©r^   r¯   r°   s   &r    Ú
get_numberrÆ   �  ó   € Ü�6˜8Ó$Ð$r*   c                ó<   € V ^8„  d   QhR\         R\         R\        /# )r#   r?   r^   r%   rr   )r(   s   "r    r)   r)   ”  s!   € ÷ 0ñ 0œ#ð 0¤sð 0¬tñ 0r*   c                 ó   € \        V R V4      # rÅ   r´   )r?   r^   s   &&r    Úupdate_numberrÊ   ”  ó   € Ü�f˜h¨Ó/Ð/r*   c                ó$   € V ^8„  d   QhR\         /# r[   r\   )r(   s   "r    r)   r)   ˜  s   € ÷ ñ ”cñ r*   c                 ó   € \        V 4      # ©N)rÆ   r°   s   &r    Ú	get_phonerÏ   ˜  s   € Ü�6ÓÐr*   c                ó<   € V ^8„  d   QhR\         R\         R\        /# )r#   r?   Úphoner%   rr   )r(   s   "r    r)   r)   œ  s!   € ÷ %ñ %œð %¤Sð %¬Tñ %r*   c                 ó   € \        W4      # rÎ   )rÊ   )r?   rÑ   s   &&r    Úupdate_phonerÓ   œ  s   € Ü�fÓ$Ð$r*   c                ó$   € V ^8„  d   QhR\         /# r[   r\   )r(   s   "r    r)   r)   ¡  r·   r*   c                 ó   € \        V R 4      # ©r`   r¯   r°   s   &r    Úget_namer×   ¡  r»   r*   c                ó<   € V ^8„  d   QhR\         R\         R\        /# )r#   r?   r`   r%   rr   )r(   s   "r    r)   r)   ¥  r¾   r*   c                 ó   € \        V R V4      # rÖ   r´   )r?   r`   s   &&r    Úupdate_namerÚ   ¥  rÁ   r*   c                ó$   € V ^8„  d   QhR\         /# r[   r\   )r(   s   "r    r)   r)   ª  ó   € ÷ &ñ &œñ &r*   c                 ó   € \        V R 4      # ©ra   r¯   r°   s   &r    Úget_balancerß   ª  ó   € Ü�6˜9Ó%Ð%r*   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r#   r?   ra   r%   ©r@   Úfloatrs   )r(   s   "r    r)   r)   ®  ó!   € ÷ 2ñ 2œ3ð 2¬ð 2´4ñ 2r*   c                 ó   € \        V R V4      # rÞ   r´   )r?   ra   s   &&r    Úupdate_balanceræ   ®  ó   € Ü�f˜i¨Ó1Ð1r*   c                ó$   € V ^8„  d   QhR\         /# r[   r\   )r(   s   "r    r)   r)   ³  rÃ   r*   c                 ó   € \        V R 4      # ©rb   r¯   r°   s   &r    Ú
get_incomerë   ³  rÇ   r*   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r#   r?   rb   r%   râ   )r(   s   "r    r)   r)   ·  s!   € ÷ 0ñ 0œ#ð 0¤uð 0´ñ 0r*   c                 ó   € \        V R V4      # rê   r´   )r?   rb   s   &&r    Úupdate_incomerî   ·  rË   r*   c                ó$   € V ^8„  d   QhR\         /# r[   r\   )r(   s   "r    r)   r)   ¼  rÜ   r*   c                 ó   € \        V R 4      # ©rc   r¯   r°   s   &r    Úget_outcomerò   ¼  rà   r*   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r#   r?   rc   r%   râ   )r(   s   "r    r)   r)   À  rä   r*   c                 ó   € \        V R V4      # rñ   r´   )r?   rc   s   &&r    Úupdate_outcomerõ   À  rç   r*   c                ó$   € V ^8„  d   QhR\         /# r[   r\   )r(   s   "r    r)   r)   Å  s   € ÷ $ñ $”cñ $r*   c                 ó   € \        V R 4      # ©rd   r¯   r°   s   &r    Ú	get_cardsrù   Å  s   € Ü�6˜7Ó#Ð#r*   c                ó<   € V ^8„  d   QhR\         R\         R\        /# )r#   r?   rd   r%   rr   )r(   s   "r    r)   r)   É  s!   € ÷ .ñ .œð .¤Sð .¬Tñ .r*   c                 ó   € \        V R V4      # rø   r´   )r?   rd   s   &&r    Úupdate_cardsrü   É  s   € Ü�f˜g uÓ-Ð-r*   c                ó$   € V ^8„  d   QhR\         /# r[   r\   )r(   s   "r    r)   r)   Í  s   € ÷ )ñ )œ3ñ )r*   c                 ó   € \        V R 4      # ©r
   r¯   r°   s   &r    Úget_card_flagsr   Í  s   € Ü�6˜<Ó(Ð(r*   c                ó<   € V ^8„  d   QhR\         R\         R\        /# )r#   r?   r
   r%   rr   )r(   s   "r    r)   r)   Ñ  s!   € ÷ 8ñ 8œcð 8¬sð 8´tñ 8r*   c                 ó   € \        V R V4      # rÿ   r´   )r?   r
   s   &&r    Úupdate_card_flagsr  Ñ  s   € Ü�f˜l¨JÓ7Ð7r*   Úcard_flag_defsz^[a-z][a-z0-9_]{0,23}$z^#[0-9a-f]{6}$ÚidÚbeeliner`   u   Ð‘Ð¸Ð»Ð°Ð¹Ð½r   z#facc15Úaliasu   Ð±Úyapayu   Ð¯Ð¿ÐµÐ¹z#ef4444u   Ñ�Úmtsu   ÐœÐ¢Ð¡z#a855f7u   Ð¼c                ó$   € V ^8„  d   QhR\         /# r3   ©r‡   )r(   s   "r    r)   r)   à  s   € ÷ 5ñ 5¤ñ 5r*   c                  óJ   € \          U u. uF  p \        V 4      NK  	  up # u up i rÎ   )Ú_DEFAULT_CARD_FLAGSrF   ©Úitems    r    Údefault_card_flag_defsr  à  s    € Ý 3Ó4Ñ 3˜ŒˆdŽÑ 3Ñ4Ð4ùÒ4s   ‰ c                ó$   € V ^8„  d   QhR\         /# r3   r\   )r(   s   "r    r)   r)   ä  s   € ÷ ñ ¤Cñ r*   c                 óJ  € \        T ;'       g    R 4      P                  4       pV'       g   R # \        V4      p\        V4      ^8w  g;   V^ ,          P	                  4       '       g   V^ ,          P                  4       '       g   \        R4      hV^ ,          P                  4       # )r<   u/   Ð‘ÑƒÐºÐ²Ð° Ñ„Ð»Ð°Ð³Ð° â€” Ð¾Ð´Ð¸Ð½ Ñ�Ð¸Ð¼Ð²Ð¾Ð»)r@   rG   r‡   ÚlenÚisspaceÚisalnumr/   Úcasefold)r0   ÚtextÚcharss   &  r    Ú_normalize_flag_aliasr  ä  sx   € ÜˆE�KˆK�RÓ×ÑÓ €ßÙ	Ü	ˆd‹€ÜˆƒJ�!„O�u˜Q•x×'Ñ'×)Ò)°°qµ×1AÑ1A×1CÒ1CÜÐDÓEÐEØˆa�×ÑÓÐr*   c                ó0   € V ^8„  d   QhR\         R\        /# ©r#   rT   r%   )rL   r@   )r(   s   "r    r)   r)   î  s   € ÷ ñ ”sð œsñ r*   c                 óR   €  R\         P                  ! ^4      ,           pW9  g   K&  V# )TÚf)ÚsecretsÚ	token_hex)rT   Ú	candidates   & r    Ú_new_flag_idr!  î  s&   € ØØ”G×%Ò% aÓ(Õ(€)ØÖØ
Ðr*   c                ó$   € V ^8„  d   QhR\         /# r3   r  )r(   s   "r    r)   r)   õ  s   € ÷ 'ñ '¤$ñ 'r*   c                 óD  € \        V \        4      '       d   T pM! V '       d   \        P                  ! V 4      MR p\        V\        4      '       g   \        4       # . p\        4       p\        4       p\        4       pV EFá  p\        V\        4      '       g   K  RP                  \        VP                  R4      ;'       g    R4      P                  4       4      R,          p\        VP                  R4      ;'       g    R4      P                  4       P                  4       pV'       d   \         P#                  V4      '       g   KÉ  VP%                  4       p	W”9   d   Ká   \'        VP                  R4      4      p
V
'       d	   W¥9   d   Rp
\        VP                  R4      ;'       g    R4      P                  4       P                  4       p\(        P#                  V4      '       d	   W³9  d   TM
\+        V4      pVP-                  V4       VP-                  V	4       V
'       d   VP-                  V
4       VP/                  RVRVRVRV
/4       \1        V4      ^8¼  g   EKá   V# 	  V#   \        \
        \        P                  3 d    R p ELOi ; i  \
         d    Rp
 EL%i ; i)NÚ r`   r<   :Né   Nr   r  r  )Ú
isinstancer‡   ÚjsonÚloadsr.   r/   ÚJSONDecodeErrorr  rL   rF   r˜   r@   r5   r~   rG   r   Ú_HEX_COLOR_REÚ	fullmatchr  r  Ú_FLAG_ID_REr!  rM   rI   r  )ÚrawÚpayloadÚflagsÚused_idsÚ
used_namesÚused_aliasesr  r`   r   Úname_keyr  Úraw_idÚflag_ids   &            r    Ú_parse_card_flag_defsr6  õ  s  € Üˆs”D×ÒØ�'ðß #ŒT�ZŠZ˜Œ_¨€7ô 	�7œD×!Ò!Ü	Ó	!Ð!Ø	€Ü‹E€Ü‹e€Ü“€Ü€TÜ	�Dœ$×	Ò	ÙØ	�‰”#�d—h‘h˜vÓ&×,Ð,¨"Ó-×3Ñ3Ó5Ó	6°sÕ	;€$Ü
ˆd�h‰h�wÓ×%Ð% 2Ó
&×
,Ñ
,Ó
.×
4Ñ
4Ó
6€%ß	”]×,Ñ,¨U×3Ò3ÙØ�]‰]‹_€(ØÔÙðÜ  §¡¨'Ó!2Ó3€5÷ ˆuÔ$Ø€5Üˆt�x‰x˜‹~×#Ð# Ó$×*Ñ*Ó,×2Ñ2Ó4€&Ü!×+Ñ+¨F×3Ò3¸Ô8N‰FÔT`ÐaiÓTj€'Ø
‡,�,ˆwÔØ‡.�.�Ôß
Ø×Ñ�EÔØ‡,�,��g˜v t¨W°e¸WÀeÐLÔMÜˆƒZ�2×ØØ€ñ3 ð2 	€øôC ”Z¤×!5Ñ!5Ð	6ô Øƒ7ðûô( 
ô Øƒ5ðús(   ›I% £I% ÅJÉ%"JÊ
JÊJÊJc                ó$   € V ^8„  d   QhR\         /# r3   r  )r(   s   "r    r)   r)     ó   € ÷ %ñ %œDñ %r*   c                  ó   € \         e/   \        P                  ! \        P                  ! \         4      4      # \	        4       p V P                  4       pVP                  R\        34       VP                  4       pV P                  4        \        V'       d
   V^ ,          MR 4      pVs \        P                  ! \        P                  ! V4      4      # ©Nz,SELECT value FROM app_settings WHERE key = ?)Ú_flag_defs_cacher'  r(  Údumpsr!   r   r   ÚCARD_FLAG_SETTINGS_KEYr   rX   r6  ©r   r   r   r•   s       r    Úget_card_flag_defsr?    sŠ   € äÒ Ü	�Š”D—J’JÔ/Ó0Ó	1Ð1Ü‹
€Ø‡{�{ƒ}€Ø‡�Ð;Ô>TÐ=VÔWØ
‡|�|ƒ~€Ø‡�„Ü¯˜c !žf°Ó6€ØÐÜ�
Š
”4—:’:˜dÓ#Ó$Ð$r*   c                ó$   € V ^8„  d   QhR\         /# r3   )Útuple)r(   s   "r    r)   r)   -  s   € ÷ ;ñ ;œñ ;r*   c                  óz   € \         ;QJ d    . R  \        4        4       F  NK  	  5# ! R  \        4        4       4      # )c              3   ó2   "  € T F  qR ,          x € K  	  R# 5i)r  Nr9   )Ú.0r  s   & r    Ú	<genexpr>Ú!card_flag_keys.<locals>.<genexpr>.  s   é € Ð:Ñ%9˜T�4�jŠjÓ%9ùs   ‚)rA  r?  r9   r*   r    Úcard_flag_keysrG  -  s,   € ßŒÑ:Ô%7Ô%9Ó:�Ð:ˆÑ:Ô%7Ô%9Ó:Ó:Ð:r*   c                ó$   € V ^8„  d   QhR\         /# r3   ©rF   )r(   s   "r    r)   r)   1  s   € ÷ ñ œñ r*   c                  óŒ   € / p \        4        F3  pVP                  R 4      ;'       g    RpV'       g   K(  VR,          W&   K5  	  V # )r  r<   r  )r?  r5   )Úmappingr  r  s      r    Úsystem_by_aliasrL  1  sA   € Ø€ÜÖ!€TØ
�(‰(�7Ó
×
!Ð
!˜r€%ß
�UØ˜•J€7ƒ>ñ "ð 	€r*   c                ó$   € V ^8„  d   QhR\         /# r3   r  )r(   s   "r    r)   r)   :  s   € ÷ +&ñ +&¤$ñ +&r*   c                 ó  € \        V \        4      '       g   \        R 4      h\        V 4      ^8”  d   \        R4      h. p\	        4       p\	        4       p\	        4       pV  EF  p\        V\
        4      '       g   \        R4      hRP                  \        VP                  R4      ;'       g    R4      P                  4       4      pV'       g   \        R4      h\        V4      ^8”  d   \        R4      hVP                  4       pWs9   d   \        R4      h\        VP                  R	4      ;'       g    R4      P                  4       P                  4       p\        P                  V4      '       g   \        R
4      h\        VP                  R4      4      p	V	'       d   W”9   d   \        R4      h\        VP                  R4      ;'       g    R4      P                  4       P                  4       p
\         P                  V
4      '       d	   W¢9  d   T
M
\#        V4      pVP%                  V4       VP%                  V4       V	'       d   VP%                  V	4       VP'                  RVRVR	VRV	/4       EK  	  \)        4       pVP+                  4       pVP-                  R\.        \0        P2                  ! VRR7      34       VP5                  4        VP7                  4        Vs\0        P:                  ! \0        P2                  ! V4      4      # )u2   Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð¿Ð¸Ñ�Ð¾Ðº Ñ„Ð»Ð°Ð³Ð¾Ð²u&   Ð¡Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ„Ð»Ð°Ð³Ð¾Ð²u!   Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð»Ð°Ð³r$  r`   r<   u*   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Ñ„Ð»Ð°Ð³Ð°u9   Ð�Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Ñ„Ð»Ð°Ð³Ð° Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµu?   Ð�Ð°Ð·Ð²Ð°Ð½Ð¸Ñ� Ñ„Ð»Ð°Ð³Ð¾Ð² Ð´Ð¾Ð»Ð¶Ð½Ñ‹ Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°Ñ‚ÑŒÑ�Ñ�r   u"   Ð£ÐºÐ°Ð¶Ð¸Ñ‚Ðµ Ñ†Ð²ÐµÑ‚ Ñ„Ð»Ð°Ð³Ð°r  u9   Ð‘ÑƒÐºÐ²Ñ‹ Ñ„Ð»Ð°Ð³Ð¾Ð² Ð´Ð¾Ð»Ð¶Ð½Ñ‹ Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°Ñ‚ÑŒÑ�Ñ�r  úiINSERT INTO app_settings (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.valueF©Úensure_ascii)r&  r‡   r/   r  rL   rF   r˜   r@   r5   r~   r  rG   r   r*  r+  r  r,  r!  rM   rI   r!   r   r   r=  r'  r<  r   rX   r;  r(  )rN   r/  r0  r1  r2  r  r`   r3  r   r  r4  r5  r   r   s   &             r    Úsave_card_flag_defsrR  :  sM  € ä�5œ$×ÒÜÐGÓHÐHÜˆƒJ�„OÜÐ;Ó<Ð<Ø	€Ü‹E€Ü‹e€Ü“€Ü€TÜ	�Dœ$×	Ò	Ü	Ð7Ó	8Ð8Ø	�‰”#�d—h‘h˜vÓ&×,Ð,¨"Ó-×3Ñ3Ó5Ó	6€$ß	Ü	Ð@Ó	AÐAÜˆƒY�„^Ü	ÐOÓ	PÐPØ�]‰]‹_€(ØÔÜ	ÐUÓ	VÐVÜ
ˆd�h‰h�wÓ×%Ð% 2Ó
&×
,Ñ
,Ó
.×
4Ñ
4Ó
6€%Ü	×	 Ñ	  ×	'Ò	'Ü	Ð8Ó	9Ð9Ü
 §¡¨Ó 1Ó
2€%ß
ˆuÔ$Ü	ÐOÓ	PÐPÜˆt�x‰x˜‹~×#Ð# Ó$×*Ñ*Ó,×2Ñ2Ó4€&Ü!×+Ñ+¨F×3Ò3¸Ô8N‰FÔT`ÐaiÓTj€'Ø
‡,�,ˆwÔØ‡.�.�Ôß
Ø×Ñ�EÔØ‡,�,��g˜v t¨W°e¸WÀeÐL×Mñ/ ô0 	‹
€Ø‡{�{ƒ}€Ø‡�ØmÜœ4Ÿ:š: e¸%Ô@ÐAôð ‡�„Ø‡�„ØÐÜ�
Š
”4—:’:˜eÓ$Ó%Ð%r*   c                ó$   € V ^8„  d   QhR\         /# r3   r\   )r(   s   "r    r)   r)   h  s   € ÷ ,ñ ,œ3ñ ,r*   c                 óX   € \         P                  ! R R\        T ;'       g    R4      4      # )z\Dr<   )r}   Úsubr@   ©r0   s   &r    Ú_card_digitsrW  h  s    € Ü
�Šˆu�bœ#˜eŸk˜k rÓ*Ó+Ð+r*   c                ó0   € V ^8„  d   QhR\         R\         /# )r#   r^   r%   r\   )r(   s   "r    r)   r)   l  s   € ÷ Dñ D¤ð D¬ñ Dr*   c           	      ó    a€ \        V 4      oS'       g   T ;'       g    R # RP                  V3R l\        ^ \        S4      ^4       4       4      # )r<   r$  c              3   ó:   <"  € T F  pSW^,            x € K  	  R# 5i)é   Nr9   )rD  ÚiÚdigitss   & €r    rE  Ú&_format_card_number.<locals>.<genexpr>p  s   øé € ÐCÑ*B Q�˜˜a�%•Ó*Bùs   ƒ)rW  r˜   Úranger  )r^   r]  s   &@r    Ú_format_card_numberr`  l  s>   ø€ Ü
�vÓ
€ßØ	�ˆ�2ÐØ�‰ÔC¬%°´3°v³;ÀÔ*BÓCÓCÐCr*   c                ó0   € V ^8„  d   QhR\         R\         /# ©r#   r-  r%   r\   )r(   s   "r    r)   r)   s  s   € ÷ ñ œð ¤ñ r*   c                 ó¦  € T ;'       g    R P                  4       pV'       g   R # \        P                  ! RV4      '       d   \        V4      ^8”  d
   VR,          # T# \	        V4      p\        V4      ^8X  dZ   VR,          P                  4       '       d   \        VR,          4      M^ p^Tu;8:  d   ^8:  d   M R # VR,           RVR,           2# R # )r<   z(0[1-9]|1[0-2])/\d{2}(?:\d{2})?:Né   N:Nr#   NÚ/:r#   NN)rG   r}   r+  r  rW  rA   r'   )r-  r  r]  Úmonths   &   r    Ú_format_expiryrg  s  s¬   € Ø	�ˆ�×ÑÓ€ßÙ	Ü‡L‚LÐ3°T×:Ò:Ü˜“Y ”]ˆˆb�Ð,¨Ð,Ü
�tÓ
€ÜˆƒK�1ÔØ# B�Z×/Ñ/×1Ò1Œ#ˆf�R�jŒ/°q€%Øˆ%Ö�2Öá
ð �B�ZˆL˜˜& �*˜Ð
&Ð&Ù
r*   c                ó$   € V ^8„  d   QhR\         /# r3   rI  )r(   s   "r    r)   r)   �  s   € ÷ 1ñ 1”dñ 1r*   c                  ó@   € \        4        U u/ uF  q R bK  	  up # u up i ©F)rG  rD   s    r    Ú_empty_flagsrk  �  s!   € Ü-Ô/Ó0Ñ/˜ˆeŠÑ/Ñ0Ð0ùÒ0s   �c                ó$   € V ^8„  d   QhR\         /# r3   rI  )r(   s   "r    r)   r)   …  s   € ÷ @ñ @¤ñ @r*   c           	      ó°   € \        V \        4      '       g   \        4       # \        4        Uu/ uF  q\	        V P                  V4      4      bK  	  up# u upi rÎ   )r&  rF   rk  rG  rs   r5   )r0   rE   s   & r    Ú_flags_from_valuern  …  sD   € Ü�5œ$×ÒÜ	‹ÐÜ.<Ô.>Ó?Ñ.> sŒd�5—9‘9˜S“>Ó"Ò	"Ñ.>Ñ?Ð?ùÒ?s   ­#Ac                ó$   € V ^8„  d   QhR\         /# r3   rI  )r(   s   "r    r)   r)   ‹  s   € ÷ ñ œTñ r*   c                 ót  € V '       g   / # \        V \        4      '       d   T pM \        P                  ! V 4      p\        V\        4      '       g   / # / pVP                  4        F'  w  r4\        V4      pV'       g   K  \        V4      W%&   K)  	  V#   \        \
        \        P                  3 d    / u # i ; irÎ   )
r&  rF   r'  r(  r.   r/   r)  rN   rW  rn  )r-  r•   r/  rE   r0   r]  s   &     r    Úparse_card_flagsrq  ‹  sŸ   € ßØ	€)Üˆs”D×ÒØ	�$ðÜ
�*Š*�S‹/€4ô 	�4œ×ÒØ	€)Ø	€Ø—:‘:–<�Z€SÜ˜Ó€&ß	ÙÜ# EÓ*€%ƒ-ñ	  ð
 	€øô ”Z¤×!5Ñ!5Ð	6ô Ø
‚9ðús   ¥B Â"B7Â6B7c                óF   € V ^8„  d   QhR\         \        ,          R\        /# rb  )r   r@   r‡   )r(   s   "r    r)   r)      s   € ÷ ñ ”Xœc•]ð ´tñ r*   c                óx  € \        V4      pV '       g   . # . p\        V 4      P                  R4       EF  pVP                  4       pV'       g   K  VP                  R4      pV'       d
   V^ ,          MRp\	        V4      ^8”  d
   V^,          MRp\	        V4      ^8”  d
   V^,          MRp\        V4      p	\        V4      p
V	'       d   W©RR 8X  d   RpM\        V4      pVP                  V	4      ;'       g    \        4       pR\        V4      RVRV/pVP                  V4       VP                  V4       EK  	  V# )	ui   cards Ð² Ð‘Ð”: number/expiry/cvv, ÐºÐ°Ñ€Ñ‚Ñ‹ Ñ‡ÐµÑ€ÐµÐ· ':'. Ð¡Ñ‚Ð°Ñ€Ñ‹Ð¹ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚: number/last4/cvv.Ú:re  r<   Nr^   ÚexpiryÚcvvéüÿÿÿ)rq  r@   r~   rG   r  rW  rg  r5   rk  r`  ÚupdaterI   )r-  Ú	flags_rawÚ	flags_maprd   ÚchunkÚpartsr^   Úmiddlerv  Únumber_digitsÚmiddle_digitsru  r/  Úcards   &&            r    Úparse_cardsr�     s  € ä˜iÓ(€ßØ	€)Ø	€Ü�#‹h�n‰n˜S×!€UØ
�+‰+‹-€%ß	ÙØ
�+‰+�cÓ
€%ßˆ5�Ž8 "€&Ü˜5“z A”~ˆ5�Ž8¨2€&Ü˜“J ”NˆˆaŽ¨€#Ü˜vÓ&€-Ü˜vÓ&€-ß�}°b°cÐ(:Ô:Ø�6ä˜6Ó"€6Ø
�-‰-˜Ó
&×
8Ð
8¬,«.€%àÔ  Ó(ØˆVØˆ#ð
€$ð
 ‡+�+ˆeÔØ‡,�,ˆt×ñ+ "ð, 	€r*   c                ó$   € V ^8„  d   QhR\         /# r3   )rã   )r(   s   "r    r)   r)   ¿  s   € ÷ 
ñ 
œ%ñ 
r*   c                 ó`  € V e   V R8X  d   R# \        V \        \        34      '       d   \        V 4      # \        V 4      P	                  RR4      P	                  RR4      P	                  RR4      p\
        P                  ! RRV4      p V'       d   \        V4      # R#   \         d     R# i ; i)Nr<   ç        ô   Â r$  Ú,Ú.z[^\d.])r&  r'   rã   r@   Úreplacer}   rU  r/   )r0   r  s   & r    Ú_to_balancer‰  ¿  s•   € Ø	‚M�U˜b”[Ù	Üˆu”sœE�l×#Ò#Ü	ˆu‹ÐÜˆE‹
×Ñ˜6 3Ó'×/Ñ/°°RÓ8×@Ñ@ÀÀcÓJ€Ü
�Šˆy˜"˜dÓ#€ðßŒˆt‹Ð% #Ð%øÜô Ú	ðús   Â	B ÂB ÂB-Â,B-ÚsmallerTÚsystemc                óh   € V ^8„  d   QhR\         R\        \        ,          R\        \        ,          /# )r#   rŠ  r‹  r%   )rs   r   r@   rF   )r(   s   "r    r)   r)   Ì  s*   € ÷  ñ  œ$ð  ¬x¼­}ð  ÌÔQUÍñ  r*   c                ó\  € Ve   V\        4       9  d   R# . p\        4        EF[  pVP                  R4      '       d   K  \        VP                  R4      4      pVP                  R4      ;'       g    Rp\	        VP                  R4      VP                  R4      4       FÛ  p\        VP                  R4      4      pV'       g   K'  V'       d   VP                  V4      '       d   KH  TP                  RTR	VP                  R	4      ;'       g    RP                  4       RTRVP                  R4      ;'       g    RR
TRVP                  R4      ;'       g    RRVP                  R4      ;'       g    RRV/4       KÝ  	  EK^  	  V'       g   R# VP                  R V '       * R7       V^ ,          # )u†   ÐšÐ°Ñ€Ñ‚Ð° Ñ�Ð¾ Ð²Ñ�ÐµÐ¹ Ð¿Ð°Ð½ÐµÐ»Ð¸: min/max Ð±Ð°Ð»Ð°Ð½Ñ� Ð°ÐºÐºÐ°ÑƒÐ½Ñ‚Ð°, Ð±ÐµÐ· Ð³Ð°Ð»Ð¾Ñ‡ÐºÐ¸ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹.Nr	   ra   r?   r<   rd   r
   r^   r`   r~  ru  rv  r‹  c                 ó6   € V R ,          V R,          V R,          3# )ra   r?   r~  r9   r  s   &r    rB   Úpick_card.<locals>.<lambda>é  s   € �D˜•O T¨(¥^°T¸/Õ5JÑKr*   )rE   Úreverse)	rG  rƒ   r5   r‰  r�  rW  rI   rG   rK   )rŠ  r‹  Ú
candidatesr   ra   Ú	device_idr€  r~  s   $$      r    Ú	pick_cardr“  Ì  se  € à
Ò˜6¬Ó)9Ô9Ù	Ø€Ü�N€SØ‡W�WˆY×ÒÙÜ˜Ÿ™ 	Ó*Ó+€'Ø�g‰g�hÓ×%Ð% 2€)Ü˜#Ÿ'™' 'Ó*¨C¯G©G°LÓ,AÖB€dÜ §¡¨Ó 2Ó3€=ß
Ùß�—‘˜&×!Ò!ÙØ×ÑØˆiØ
ˆS�W‰W�V‹_×"Ð" ×)Ñ)Ó+ØˆwØˆd�h‰h�xÓ ×&Ð& BØ�]Øˆd�h‰h�xÓ ×&Ð& BØ	ˆ4�8‰8�E‹?× Ð ˜bØˆfð	ö 	ô Cñ ÷* 	Ù	Ø‡�ÙKØŒ+ð ô ð 	�1�Ðr*   c          
      óT   € V ^8„  d   QhR\         R\         R\         R\        R\        /# )r#   r?   r^   Úflagr0   r%   rr   )r(   s   "r    r)   r)   ï  s6   € ÷ Iñ Iœ#ð I¤sð I´#ð I¼dð IÌdñ Ir*   c           	      óp  a	€ V\        4       9  d   R # \        V 4      pV'       g   R # \        VP                  R4      4      p\	        V4      pV'       g   R # VP                  V4      ;'       g    \        4       o	\        V4      S	V&   \        4       p\        ;QJ d    V	3R lV 4       F  '       g   K   RM	  R M! V	3R lV 4       4      '       d.   V Uu/ uF  qˆ\        S	P                  V4      4      bK  	  upWV&   MVP                  VR4       \        V \        P                  ! VR R7      4      # u upi )Fr
   c              3   óF   <"  € T F  pSP                  V4      x € K  	  R # 5irÎ   )r5   )rD  rE   Úcurrents   & €r    rE  Ú set_card_flag.<locals>.<genexpr>ü  s   øé € Ð)¡D˜Sˆ�‰�C×Ð£Dùs   ƒ!TNrP  )rG  r{   rq  r5   rW  rk  rs   ÚanyÚpopr  r'  r<  )
r?   r^   r•  r0   r   r/  r]  ÚkeysrE   r˜  s
   &&&&     @r    Úset_card_flagr�  ï  så   ø€ Ø”Ó Ô Ù	Ü�&Ó€ßÙ	Ü	˜#Ÿ'™' ,Ó/Ó	0€Ü
�vÓ
€ßÙ	Ø�9‰9�VÓ×.Ð.¤£€Ü�e“€ˆ�ÜÓ€ßƒCÔ)¡DÓ)‡C‡C‚CÔ)¡DÓ)×)Ò)Ù:>Ó?¹$°3œ˜WŸ[™[¨Ó-Ó.Ò.¹$Ñ?€%‚-à‡)�)ˆF�DÔÜ˜&¤$§*¢*¨UÀÔ"GÓHÐHùò @s   Ã#D3c                ó$   € V ^8„  d   QhR\         /# r[   r\   )r(   s   "r    r)   r)     rÜ   r*   c                 ó   € \        V R 4      # ©r	   r¯   r°   s   &r    Úget_blockedr¡    rà   r*   c                ó<   € V ^8„  d   QhR\         R\        R\        /# )r#   r?   r	   r%   r½   )r(   s   "r    r)   r)     s!   € ÷ =ñ =œ3ð =¬ð =´ñ =r*   c           	      ó@   € \        V R \        \        V4      4      4      # r   )r«   r'   rs   )r?   r	   s   &&r    Úupdate_blockedr¤    s   € Ü�f˜i¬¬T°'«]Ó);Ó<Ð<r*   c                ó$   € V ^8„  d   QhR\         /# r[   r\   )r(   s   "r    r)   r)     s   € ÷ 'ñ 'œñ 'r*   c                 ó   € \        V R 4      # ©r_   r¯   r°   s   &r    Úget_passwordr¨    s   € Ü�6˜:Ó&Ð&r*   c                ó<   € V ^8„  d   QhR\         R\         R\        /# )r#   r?   r_   r%   rr   )r(   s   "r    r)   r)     s!   € ÷ 4ñ 4œCð 4¬3ð 4´4ñ 4r*   c                 ó   € \        V R V4      # r§  r´   )r?   r_   s   &&r    Úupdate_passwordr«    s   € Ü�f˜j¨(Ó3Ð3r*   c                ó:   € V ^8„  d   QhR\         \        ,          /# r3   )r‡   r@   )r(   s   "r    r)   r)     s   € ÷ 5ñ 5œœc�ñ 5r*   c                  óL   € \        4        U u. uF  q R ,          NK  	  up # u up i r®   )Úlist_banned_ip_rowsr6   s    r    Úlist_banned_ipsr¯    s#   € Ü1Ô3Ó4Ñ3�sˆT�ˆÑ3Ñ4Ð4ùÒ4s   �!c                ó:   € V ^8„  d   QhR\         \        ,          /# r3   )r‡   rF   )r(   s   "r    r)   r)     s   € ÷ ñ œT¤$�Zñ r*   c                  ó–  € \        4       p V P                  4       pVP                  R 4       . pVP                  4        F^  pV'       d   V^ ,          '       g   K   \	        V^,          ;'       g    ^ 4      pVP                  R\        V^ ,          4      RV/4       K`  	  V P                  4        V#   \
        \        3 d    Rp LPi ; i)zDSELECT ip, banned_at FROM banned_ips ORDER BY banned_at DESC, ip ASCr„  r;   Ú	banned_at)
r!   r   r   r   rã   r.   r/   rI   r@   rX   )r   r   rP   r   r²  s        r    r®  r®    s§   € Ü‹
€Ø‡{�{ƒ}€Ø‡�ÐSÔTØ
€Ø�L‰LŽN€Sß	�C˜—F”FÙðÜ�S˜•V—[�[˜qÓ!€9ð ‡+�+ˆt”S˜˜Q�“[ +¨yÐ9Ö:ñ ð ‡�„Ø€øô	 ”ZÐ	 ô Ø‚9ðús   ÁB2Á0B2Â2CÃCc                ó(   € V ^8„  d   QhR\         RR/# )r#   r;   r%   Nr\   )r(   s   "r    r)   r)   *  s   € ÷ ñ ”sð ˜tñ r*   c                 ó  € T ;'       g    R P                  4       p V '       g   R# \        4       pVP                  4       pVP                  RV \        P                  ! 4       34       VP                  4        VP                  4        R# )r<   Nz>INSERT OR IGNORE INTO banned_ips (ip, banned_at) VALUES (?, ?))rG   r!   r   r   Útimer   rX   )r;   r   r   s   &  r    Úsave_banned_ipr¶  *  s_   € Ø	‡x€xˆR×ÑÓ€ß
ÙÜ‹
€Ø‡{�{ƒ}€Ø‡�ØBØ„t‡y‚yƒ{Ðôð ‡�„Ø‡�†r*   c                ó0   € V ^8„  d   QhR\         R\        /# rh   rr   )r(   s   "r    r)   r)   8  s   € ÷ 
ñ 
œð 
¤ñ 
r*   c                 ó  € T ;'       g    R P                  4       p V '       g   R# \        4       pVP                  4       pVP                  RV 34       VP	                  4        VP
                  pVP                  4        V^ 8„  # )r<   Fz#DELETE FROM banned_ips WHERE ip = ?)rG   r!   r   r   r   rv   rX   )r;   r   r   rw   s   &   r    Úremove_banned_ipr¹  8  sd   € Ø	‡x€xˆR×ÑÓ€ß
Ù	Ü‹
€Ø‡{�{ƒ}€Ø‡�Ð2°R°EÔ:Ø‡�„Ø�<‰<€Ø‡�„Ø�!‰Ðr*   c                ó:   € V ^8„  d   QhR\         \        ,          /# r3   )rL   r'   )r(   s   "r    r)   r)   H  s   € ÷ ñ œS¤�Xñ r*   c                  ó`  € \        4       p V P                  4       pVP                  R 4       \        4       pVP	                  4        F:  pV'       d   V^ ,          f   K   VP                  \        V^ ,          4      4       K<  	  V P                  4        Vs
V#   \        \        3 d     Kf  i ; i)zSELECT tg_id FROM panel_workers)r!   r   r   rL   r   rM   r'   r.   r/   rX   Ú_panel_workers_cache)r   r   Úidsr   s       r    Ú_load_panel_workersr¾  H  sŽ   € ä‹
€Ø‡{�{ƒ}€Ø‡�Ð.Ô/Ü
ƒu€Ø�L‰LŽN€Sß	��A•’ÙðØ‡7�7Œ3ˆs�1�v‹;Öñ	 ð ‡�„ØÐØ€øô	 ”ZÐ	 ô Úðús   Á!BÂB-Â,B-c                ó:   € V ^8„  d   QhR\         \        ,          /# r3   )r‡   r'   )r(   s   "r    r)   r)   Z  s   € ÷ %ñ %œD¤�Iñ %r*   c                  óD   € \         f   \        4        \        \         4      # rÎ   )r¼  r¾  Úsortedr9   r*   r    Úlist_panel_workersrÂ  Z  s   € äÒ ÜÔÜÔ#Ó$Ð$r*   c                ó$   € V ^8„  d   QhR\         /# r3   ©rs   )r(   s   "r    r)   r)   a  s   € ÷ $ñ $œdñ $r*   c                 ó€   €  \        V 4      p\        f   \	        4        T\        9   #   \        \        3 d     R # i ; irj  )r'   r.   r/   r¼  r¾  )Útg_idÚuids   & r    Úis_panel_workerrÈ  a  sC   € ðÜˆE‹
€#ô Ò ÜÔØÔ#Ñ#Ð#øô 
”JÐô Ú	ðús   ‚( ¨=¼=c                ó0   € V ^8„  d   QhR\         R\        /# ©r#   rÆ  r%   ©r'   rs   )r(   s   "r    r)   r)   l  s   € ÷ ñ œCð ¤Dñ r*   c                 ót  €  \        V 4      pT^ 8:  d   R # \        4       pTP	                  4       pTP                  RT\        P                  ! 4       34       TP                  4        TP                  4        \        f   \        4        R# \        P                  T4       R#   \        \        3 d     R # i ; i)FzCINSERT OR IGNORE INTO panel_workers (tg_id, added_at) VALUES (?, ?)T)r'   r.   r/   r!   r   r   rµ  r   rX   r¼  r¾  rM   )rÆ  rÇ  r   r   s   &   r    Úadd_panel_workerrÍ  l  sœ   € ðÜˆE‹
€#ð ˆ1„HÙ	Ü‹
€Ø‡{�{ƒ}€Ø‡�ØGØŒ�	Š	‹Ðôð ‡�„Ø‡�„äÒ ÜÔñ 	ô ×Ñ˜3ÔÙøô# 
”JÐô Ú	ðús   ‚B" Â"B7Â6B7c                ó0   € V ^8„  d   QhR\         R\        /# rÊ  rË  )r(   s   "r    r)   r)   ƒ  s   € ÷ ñ œsð ¤tñ r*   c                 óX  €  \        V 4      p\        4       pTP	                  4       pTP                  RT34       TP                  4        TP                  ^ 8„  pTP                  4        \        f   \        4        T# \        P                  T4       T#   \        \        3 d     R # i ; i)Fz)DELETE FROM panel_workers WHERE tg_id = ?)r'   r.   r/   r!   r   r   r   rv   rX   r¼  r¾  Údiscard)rÆ  rÇ  r   r   rw   s   &    r    Úremove_panel_workerrÑ  ƒ  s–   € ðÜˆE‹
€#ô 	‹
€Ø‡{�{ƒ}€Ø‡�Ð8¸3¸&ÔAØ‡�„Ø�<‰<˜!Ñ€Ø‡�„äÒ ÜÔð 	€ô ×Ñ˜sÔ#Ø€øô 
”JÐô Ú	ðús   ‚B ÂB)Â(B)Úuserbot_watchc                ó$   € V ^8„  d   QhR\         /# r3   rI  )r(   s   "r    r)   r)   š  s   € ÷ ñ ¤ñ r*   c                  ó   € R RR. R. RR/# )ÚenabledTÚkeywordsÚchatsÚalert_chat_idNr9   r9   r*   r    Ú_default_watch_settingsrÙ  š  s    € àˆTØˆbØ	ˆ2Ø�4ð		ð r*   c                ó$   € V ^8„  d   QhR\         /# r3   r\   )r(   s   "r    r)   r)   £  s   € ÷ +ñ +¤sñ +r*   c                 óf   € R P                  \        T ;'       g    R4      P                  4       4      # )r$  r<   )r˜   r@   r~   rV  s   &r    Ú_normalize_watch_keywordrÜ  £  s%   € Ø�‰”�U—[�[˜bÓ!×'Ñ'Ó)Ó*Ð*r*   c                ó:   € V ^8„  d   QhR\         \        ,          /# r3   )r   rF   )r(   s   "r    r)   r)   §  s   € ÷ Fñ F¤H¬T¥Nñ Fr*   c                 óæ  € \        V \        4      '       g   R # V P                  R4      pVR9   d   R #  \        V4      pRP                  \        T P                  R4      ;'       g    T4      P                  4       4      R,          p\        T P                  R4      ;'       g    R4      P                  4       R,          pRTRT;'       g    \        T4      RT/#   \        \
        3 d     R # i ; i)	Nr  r<   r$  Útitle:Néx   NÚkind:Né   Nrk   )
r&  rF   r5   r'   r.   r/   r˜   r@   r~   rG   )r0   r4  Úchat_idrß  rá  s   &    r    Ú_normalize_watch_chaträ  §  sÍ   € Ü�5œ$×ÒÙ	Ø
�)‰)�D‹/€Ø
ˆjÔÙ	ðÜ�‹K€'ð 
�‰”#�e—i‘i Ó(×3Ð3¨GÓ4×:Ñ:Ó<Ó	=¸dÕ	C€ÜˆE�I‰I�fÓ×#Ð# Ó$×*Ñ*Ó,¨SÕ1€Ø	ˆw˜ ×!6Ð!6¬#¨g«,¸ÀÐEÐEøô	 
”JÐô Ú	ðús   ´C ÃC0Ã/C0c                ó$   € V ^8„  d   QhR\         /# r3   rI  )r(   s   "r    r)   r)   ¶  s   € ÷ .ñ .¤$ñ .r*   c                 ó<  € \        4       pV '       g   V# \        V \        4      '       d   T pM \        P                  ! V 4      p\        V\        4      '       g   V# R V9   d   \        VP                  R 4      4      VR &   . p\        4       pVP                  R4      ;'       g    .  Fi  p\        V4      pVP                  4       pV'       d   Wt9   d   K.  VP                  V4       VP                  VR,          4       \        V4      ^28¼  g   Ki   M	  W1R&   . p\        4       p	VP                  R4      ;'       g    .  Fa  p\!        V4      p
V
'       d   V
R,          V	9   d   K&  V	P                  V
R,          4       VP                  V
4       \        V4      ^d8¼  g   Ka   M	  W�R&   VP                  R4      pVR9   d   RVR&   V#  \#        V4      VR&   V#   \
        \        \        P                  3 d    Tu # i ; i  \
        \        3 d
    RTR&    T# i ; i)rÕ  rÖ  :NéP   Nr×  r  rØ  Nrk   )rÙ  r&  rF   r'  r(  r.   r/   r)  rs   r5   rL   rÜ  r  rM   rI   r  rä  r'   )r-  r•   r.  rÖ  Úseenr  ÚwordrE   r×  Úseen_idsÚchatÚalerts   &           r    Ú_parse_watch_settingsrí  ¶  sé  € ÜÓ!€ßØ	€+Üˆs”D×ÒØ�'ðÜ�ZŠZ˜‹_€7ô 	�7œD×!Ò!Ø	€+Ø�ÔÜ˜Ÿ™ YÓ/Ó0€$€y�/Ø€Ü‹€Ø�[‰[˜Ó$×*Ð*¨Ò*€TÜ	! $Ó	'€$Ø�‰‹€#ß	�”ÙØ‡(�(ˆ3„-Ø
‡/�/�$�s•)ÔÜˆƒ]�bÖÙñ +ð €jÑØ	€Ü‹E€Ø�[‰[˜Ó!×'Ð' RÒ'€TÜ	˜tÓ	$€$ß	��d•˜xÔ'ÙØ
‡,�,ˆt�D�zÔØ‡,�,ˆtÔÜˆƒZ�3ÖÙñ (ð €g�Ø	�‰�_Ó	%€Ø	ˆZÔØ€$€Ñð 	€ð	 Ü˜u›:€4ˆÑð 	€øôK ”Z¤×!5Ñ!5Ð	6ô Ø
‚;ðûôF ”ZÐ	 ô  Ø€4ˆÒØ€ð ús#   ¯G Ç	H Ç"G>Ç=G>ÈHÈHc                ó$   € V ^8„  d   QhR\         /# r3   rI  )r(   s   "r    r)   r)   ç  r8  r*   c                  ó   € \         e/   \        P                  ! \        P                  ! \         4      4      # \	        4       p V P                  4       pVP                  R\        34       VP                  4       pV P                  4        \        V'       d
   V^ ,          MR 4      pVs \        P                  ! \        P                  ! V4      4      # r:  )Ú_watch_cacher'  r(  r<  r!   r   r   ÚWATCH_SETTINGS_KEYr   rX   rí  r>  s       r    Úget_watch_settingsrò  ç  sˆ   € äÒÜ	�Š”D—J’Jœ|Ó,Ó	-Ð-Ü‹
€Ø‡{�{ƒ}€Ø‡�Ð;Ô>PÐ=RÔSØ
‡|�|ƒ~€Ø‡�„Ü¯˜c !žf°Ó6€Ø€Ü�
Š
”4—:’:˜dÓ#Ó$Ð$r*   c                ó0   € V ^8„  d   QhR\         R\         /# )r#   r.  r%   rI  )r(   s   "r    r)   r)   õ  s   € ÷ %ñ %¤ð %¬$ñ %r*   c           	      óP  € \        4       p\        V \        4      '       g   / p R R V 9   d
   V R ,          MVR ,          RRV 9   d
   V R,          MVR,          RRV 9   d
   V R,          MVR,          RRV 9   d
   V R,          MVR,          /p\        V4      p\	        4       pVP                  4       pVP                  R\        \        P                  ! VRR7      34       VP                  4        VP                  4        Vs\        P                  ! \        P                  ! V4      4      # )rÕ  rÖ  r×  rØ  rO  FrP  )rò  r&  rF   rí  r!   r   r   rñ  r'  r<  r   rX   rð  r(  )r.  r˜  Úmergedr•   r   r   s   &     r    Úsave_watch_settingsrö  õ  sõ   € äÓ€Ü�7œD×!Ò!Ø€'à 9°Ô#7ˆW�YÖ¸WÀYÕ=OØ Z°7Ô%:ˆg�jÖ!ÀÈ
Õ@SØ	˜w¨'Ô1ˆ7�7Ö°w¸wÕ7GØ¨À'Ô/I�7˜?Ö+ÈwÐWfÕOgð	€ô 	˜fÓ%€Ü‹
€Ø‡{�{ƒ}€Ø‡�ØmÜ”t—z’z $°UÔ;Ð<ôð ‡�„Ø‡�„Ø€Ü�
Š
”4—:’:˜dÓ#Ó$Ð$r*   c                ó$   € V ^8„  d   QhR\         /# r3   rI  )r(   s   "r    r)   r)     s   € ÷ ñ ”tñ r*   c                 óH  € R \        V R ,          4      R\        V R,          ;'       g    R4      R\        V R,          4      R\        V R,          ;'       g    ^ 4      RV R,          R9  d   \        V R,          4      MRRV R,          R9  d   \        V R,          4      /# R/# )	r  Úurlr<   rT   Úadded_atÚused_atNÚused_byrk   )r'   r@   rs   rã   r6   s   &r    Ú
_proxy_rowrý    s˜   € àŒˆC��I‹ØŒˆS��Z×Ð˜2Ó	ØŒ$ˆs�6�{Ó
ØŒe�C˜
•O×(Ð( qÓ)Ø c¨)¥n¸JÔ&FŒU�3�y•>Ô"ÈDØ C¨	¥N¸*Ô$DŒS��Y•Ó ð	ð ð KOð	ð r*   c                ó$   € V ^8„  d   QhR\         /# r3   rI  )r(   s   "r    r)   r)     s   € ÷ :ñ :œñ :r*   c                óÂ  € \        V \        4      '       d   V P                  4       p \        V \        \        34      '       g   R^ R^ /# \        4       p. pV  FX  p\        T;'       g    R4      P                  4       pV'       d   WA9   d   K6  VP                  V4       VP                  V4       KZ  	  V'       g   R^ R^ /# \        4       pVP                  4       p\        P                  ! 4       p^ pV F3  pVP                  RWG34       VP                  '       g   K*  V^,          pK5  	  VP                  4        VP                  4        RVR\!        V4      V,
          /# )u‹   Ð”Ð¾Ð±Ð°Ð²Ð»Ñ�ÐµÑ‚ Ð¿Ñ€Ð¾ÐºÑ�Ð¸-Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Ð² Ð¿ÑƒÐ». Ð”ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ‚Ñ‹ Ð¿Ñ€Ð¾Ð¿ÑƒÑ�ÐºÐ°ÑŽÑ‚Ñ�Ñ�. Ð’Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸ÐºÐ¸.ÚaddedÚskippedr<   zDINSERT OR IGNORE INTO proxies (url, used, added_at) VALUES (?, 0, ?))r&  r@   Ú
splitlinesr‡   rA  rL   rG   rM   rI   r!   r   rµ  r   rv   r   rX   r  )	Úurlsrè  Úcleanedr  rù  r   r   Únowr   s	   &        r    Úadd_proxiesr    s  € äˆt”S×ÒØ	�‰Ó	€$Ü�4œ$¤˜×'Ò'Ø
�1�i Ð	#Ð#Ü‹€Ø€Û€TÜˆD�JˆJ�B‹×ÑÓ€#ß	�”ÙØ‡(�(ˆ3„-Ø	‡.�.�Öñ ÷ 	Ø
�1�i Ð	#Ð#Ü‹
€Ø‡{�{ƒ}€Ü‡y‚yƒ{€Ø	
€Û€SØ‡+�+ØIØ€:ôð 	‡\‡\‚\ØˆA…:‚5ñ ð ‡�„Ø‡�„Ø	�%˜¤C¨£L°5Õ$8Ð9Ð9r*   c                ó\   € V ^8„  d   QhR\         \        ,          R\        \        ,          /# r  )r   rs   r‡   rF   )r(   s   "r    r)   r)   8  s"   € ÷ &ñ &”x¤•~ð &´´dµñ &r*   c                 ó0  € \        4       pVP                  4       pV f   VP                  R4       M'TP                  V '       d   RMRV '       d   ^M^ 34       VP                  4       pVP	                  4        V Uu. uF  p\        V4      NK  	  up# u upi )Nz%SELECT * FROM proxies ORDER BY id ASCzBSELECT * FROM proxies WHERE used = ? ORDER BY used_at DESC, id ASCz4SELECT * FROM proxies WHERE used = ? ORDER BY id ASC)r!   r   r   r   rX   rý  )rT   r   r   rP   rO   s   &    r    Úlist_proxiesr	  8  sw   € Ü‹
€Ø‡{�{ƒ}€Ø‚LØ‡+�+Ð5Õ6à‡+�+ßKOÑGØ>ß	�A�1Ðôð
 	�‰‹€Ø‡�„Ù $Ó%¡˜1Œ�AŽ¡Ñ%Ð%ùÒ%s   Á<Bc                ó$   € V ^8„  d   QhR\         /# r3   rI  )r(   s   "r    r)   r)   H  s   € ÷ Jñ J”dñ Jr*   c                  óF  € \        4       p V P                  4       pVP                  R 4       ^ p^ pVP                  4        FA  p\	        VR,          4      '       d   \	        VR,          4      pK/  \	        VR,          4      pKC  	  V P                  4        RVRVRW#,           /# )zWSELECT COALESCE(used, 0) AS used, COUNT(*) AS n FROM proxies GROUP BY COALESCE(used, 0)rT   rV   Ú	availableÚtotal)r!   r   r   r   r'   rX   )r   r   r  rT   r   s        r    Úproxy_countsr  H  s…   € Ü‹
€Ø‡{�{ƒ}€Ø‡�ÐfÔgØ€Ø	€Ø�L‰LŽN€SÜˆˆV�×ÒÜ
ˆc�#�h‹-‚4ä�3�s•8‹}‚9ñ	 ð
 ‡�„Ø	�i ¨¨w¸	Õ8HÐIÐIr*   c                óF   € V ^8„  d   QhR\         R\        \        ,          /# rq   ri   )r(   s   "r    r)   r)   W  s   € ÷ ñ œCð ¬´$­ñ r*   c                óF  € \        4       pVP                  4       pVP                  R4       VP                  4       pV'       g   VP	                  4        R# \        V4      pTP                  R\        P                  ! 4       \        T ;'       g    R4      ;'       g    RVR,          34       VP                  '       g   VP	                  4        \        V 4      # VP                  4        VP	                  4        RVR&   \        T ;'       g    R4      ;'       g    RVR&   V# )	u�   Ð‘ÐµÑ€Ñ‘Ñ‚ Ñ�Ð°Ð¼ÑƒÑŽ Ñ�Ñ‚Ð°Ñ€ÑƒÑŽ Ñ�Ð²Ð¾Ð±Ð¾Ð´Ð½ÑƒÑŽ Ð¿Ñ€Ð¾ÐºÑ�Ð¸, Ð¿Ð¾Ð¼ÐµÑ‡Ð°ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¹ Ð¸ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ ÐµÑ‘.z<SELECT * FROM proxies WHERE used = 0 ORDER BY id ASC LIMIT 1NzOUPDATE proxies SET used = 1, used_at = ?, used_by = ? WHERE id = ? AND used = 0r<   r  TrT   rü  )r!   r   r   r   rX   rý  rµ  r@   rv   Útake_next_proxyr   )r?   r   r   r   Úproxys   &    r    r  r  W  sÖ   € ä‹
€Ø‡{�{ƒ}€Ø‡�ÐKÔLØ
‡|�|ƒ~€ßØ‡*�*„,Ù	Ü	�C‹€Ø‡�ØSÜ‡9‚9ƒ;”�F—L�L˜bÓ!×)Ð) T¨5°­;Ð7ôð 	��ˆØ‡*�*„,Ü	˜Ó	 Ð Ø‡�„Ø‡�„Ø€€v�Ü˜Ÿ˜ "Ó%×-Ð-¨€€yÑØ€r*   c                ó$   € V ^8„  d   QhR\         /# r3   rÄ  )r(   s   "r    r)   r)   o  s   € ÷ ñ œdñ r*   c                 ó  €  \        V 4      p\        4       pTP	                  4       pTP                  RT34       TP                  4        TP                  pTP                  4        T^ 8„  #   \        \        3 d     R # i ; i)Fz DELETE FROM proxies WHERE id = ?©	r'   r.   r/   r!   r   r   r   rv   rX   ©Úproxy_idÚpidr   r   rw   s   &    r    Údelete_proxyr  o  ss   € ðÜˆH‹€#ô 	‹
€Ø‡{�{ƒ}€Ø‡�Ð/°#°Ô8Ø‡�„Ø�<‰<€Ø‡�„Ø�!‰Ðøô 
”JÐô Ú	ðúó   ‚A+ Á+B Á?B c                ó$   € V ^8„  d   QhR\         /# r3   rÄ  )r(   s   "r    r)   r)   }  s   € ÷ ñ œtñ r*   c                ó  €  \        V 4      p\        4       pTP	                  4       pTP                  RT34       TP                  4        TP                  pTP                  4        T^ 8„  #   \        \        3 d     R# i ; i)uk   Ð’Ð¾Ð·Ð²Ñ€Ð°Ñ‰Ð°ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½ÑƒÑŽ Ð¿Ñ€Ð¾ÐºÑ�Ð¸ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾ Ð² Ð¿ÑƒÐ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ñ‹Ñ….FzHUPDATE proxies SET used = 0, used_at = NULL, used_by = NULL WHERE id = ?r  r  s   &    r    Úrestore_proxyr  }  sx   € ðÜˆH‹€#ô 	‹
€Ø‡{�{ƒ}€Ø‡�ØLØ€&ôð ‡�„Ø�<‰<€Ø‡�„Ø�!‰Ðøô 
”JÐô Ú	ðúr  c                óè   € V ^8„  d   Qh/ ^ \         9   d   \        \        ,          ;R&   ^\         9   d    \        \        \        ,          ,          ;R&   ^\         9   d   \        \
        ,          ;R&   # )r#   r;  r¼  rð  )Ú__conditional_annotations__r   r‡   rL   r'   rF   )r(   s   "r    r)   r)      sS   € ‡�÷v (Ò '”(œ4•.Ñ 'ñw ÷F 0Ò /”hœs¤3�xÕ(Ñ /ñG ÷j $Ò #Œh”t�nÑ #òk r*   r,   )r<   )r<   r-   rÎ   )T)pr  r'  r}   r  r   rµ  Úflaskr   r   r   Úpathlibr   Útypingr   r@   Ú__file__ÚresolveÚparentr   r!   r1   r7   r   rY   rf   rl   ro   rx   r{   r�   rƒ   r‹   r�   r“   rž   r¤   r¨   r«   r±   rµ   rº   rÀ   rÆ   rÊ   rÏ   rÓ   r×   rÚ   rß   ræ   rë   rî   rò   rõ   rù   rü   r   r  r=  Úcompiler,  r*  r  r;  r  r  r!  r6  r?  rG  rL  rR  rW  r`  rg  rk  rn  rq  r�  r‰  r“  r�  r¡  r¤  r¨  r«  r¯  r®  r¶  r¹  r¼  r¾  rÂ  rÈ  rÍ  rÑ  rñ  rð  rÙ  rÜ  rä  rí  rò  rö  rý  r  r	  r  r  r  r  r)   )r  s   @r    Ú<module>r'     s“  øðç €Û 	Û Û Û ß )Ñ )Ý Ý ñ ‰d�8‹n×$Ñ$Ó&×-Ñ-°
Õ:Ó
;€òT÷n'õ6õ.Pòbõ.õ2õ"õõò_ò
÷
÷

÷	õõ*õ*õõ!õ(õ
#õ,õ
%õ0õõ%õ
#õ,õ
&õ2õ
%õ0õ
&õ2õ
$õ.õ)õ8ð *Ð Ø�jŠjÐ2Ó3€Ø—
’
Ð,Ó-€àˆ	�6˜>¨7°I¸wÈÐMØˆ�˜ W¨i¸À$ÐGØˆˆv�x ¨)°W¸dÐCðÐ ð
 $(Ð Ó 'õ5õõõ'õT%õ;õõ+&õ\,õDõõ1õ@õ÷*õ>
ð  ð  ¸t÷  ÷FIõ*&õ=õ
'õ4õ5õõ"õ
ð ,0Ð Ó /õõ$%õ$õõ.ð& %Ð Ø#€Ó #õõ+õFõ.õb%õ%õ0õ:÷@&õ J÷õ0÷r*   