§
    ‹è¨j¨)  ã                   ó,   — d Z ddlZ G d„ d¦  «        ZdS )uF   
Cáº¥u hÃ¬nh Há»‡ thá»‘ng POE2 Realtime Trading Advisor & Overlay HUD
é    Nc                   óV  — e Zd Zg d¢Zedefd„¦   «         Zededz  fd„¦   «         Zededz  fd„¦   «         Zededz  fd„¦   «         Z	ede
eedz  f         fd„¦   «         Zd	d
dddddœZdZg d¢Zi dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“d$d%“d&d'“d(d%“d)d*“d+d,“d-d.“d/d0“d1d2“i d3d4“d5d6“d7d0“d8d9“d:d;“d<d=“d>d!“d?d@“dAdB“dCdD“dEdF“dGdH“dIdJ“dKdL“dMdN“dOdP“dQdR“¥dSd'dTdUdVdWdXdYdZdLd[œ
¥Zd\Zd]Zd^Zd_Zd`ZdaZdbZdcZddZdeZdfZ ej        dgdh¦  «        ZdiZ ej        djdk¦  «        ZdlZ dmZ!dmZ"dS )nÚConfig)zJC:\Program Files (x86)\Grinding Gear Games\Path of Exile 2\logs\Client.txtzDC:\Program Files\Grinding Gear Games\Path of Exile 2\logs\Client.txtzMC:\Program Files (x86)\Steam\steamapps\common\Path of Exile 2\logs\Client.txtz@D:\SteamLibrary\steamapps\common\Path of Exile 2\logs\Client.txtÚreturnc                 óL   — |                       ¦   «         }|r|S | j        d         S )Nr   )Úfind_poe2_client_logÚDEFAULT_LOG_PATHS)ÚclsÚfounds     ú1C:\Projects\AutoPOE2\src\assistant_tool\config.pyÚget_existing_log_pathzConfig.get_existing_log_path   s.   € à×(Ò(Ñ*Ô*ˆØð 	ØˆLØÔ$ QÔ'Ð'ó    Nc                 ód  — | j         D ]%}t          j                             |¦  «        r|c S Œ&| j         D ]b}t          j                             t          j                             |¦  «        d¦  «        }t          j                             |¦  «        r|c S Œc|                      ¦   «         }|r|S dS )uê   
        TÃ¬m Client.txt / LatestClient.txt tháº­t cá»§a POE2.
        Æ¯u tiÃªn Client.txt (Ä‘á»§ Generating + SCENE), sau Ä‘Ã³ LatestClient.txt.
        Tráº£ vá»� None náº¿u chÆ°a cÃ³ file â€” khÃ´ng bá»‹a Ä‘Æ°á»�ng dáº«n.
        úLatestClient.txtN)r   ÚosÚpathÚisfileÚjoinÚdirnameÚ!_discover_log_from_running_client)r	   ÚpÚlatestÚ
discovereds       r   r   zConfig.find_poe2_client_log   s¸   € ð Ô&ð 	ð 	ˆAÝŒw�~Š~˜aÑ Ô ð Ø���ðàÔ&ð 	ð 	ˆAÝ”W—\’\¥"¤'§/¢/°!Ñ"4Ô"4Ð6HÑIÔIˆFÝŒw�~Š~˜fÑ%Ô%ð Ø���ðà×:Ò:Ñ<Ô<ˆ
Øð 	ØÐØˆtr   c                 óJ  ‡‡— 	 ddl Šddl mŠ ‰                     dd¬¦  «        }d} G ˆˆfd„d	‰j        ¦  «        }|                     |d¦  «        }|‰                     d
¦  «        j        k    rdS 	  |¦   «         }‰                     |¦  «        |_        | 	                    |‰ 
                    |¦  «        ¦  «        s	 |                     |¦  «         dS d}	 |j                             ¦   «         }|dv rt          |j        ¦  «        }n+|                     |‰ 
                    |¦  «        ¦  «        snŒ]|                     |¦  «         n# |                     |¦  «         w xY w|dk    rdS d}|                     |d|¦  «        }	|	sdS 	 ‰                     d¦  «        }
‰                     d¦  «        }|j        }‰j        ‰j        ‰j        ‰                     ‰j        ¦  «        g|_        ‰j        |_         ||	d|
‰ 
                    |¦  «        ¦  «        s	 |                     |	¦  «         dS |
j        }|                     |	¦  «         n# |                     |	¦  «         w xY wt4          j                             |¦  «        }t4          j                             |dd¦  «        }t4          j                             |dd¦  «        }t4          j                             |¦  «        r|S t4          j                             |¦  «        r|S n# t>          $ r Y dS w xY wdS )uP   Láº¥y logs\Client.txt cáº¡nh PathOfExile.exe Ä‘ang cháº¡y (cÃ i custom / Steam).r   N)ÚwintypesÚkernel32T)Úuse_last_erroré   c                   óº   •— e Zd Zd”j        fd”j        fd”j        fd” j        fd”j        fd”j        fd”j        fd” j        fd	”j        fd
”j        dz  fg
ZdS )úAConfig._discover_log_from_running_client.<locals>.PROCESSENTRY32WÚdwSizeÚcntUsageÚth32ProcessIDÚth32DefaultHeapIDÚth32ModuleIDÚ
cntThreadsÚth32ParentProcessIDÚpcPriClassBaseÚdwFlagsÚ	szExeFilei  N)Ú__name__Ú
__module__Ú__qualname__ÚDWORDÚc_size_tÚc_longÚWCHARÚ_fields_)Úctypesr   s   €€r   ÚPROCESSENTRY32Wr   5   s   ø€ € € € € à˜xœ~Ð.Ø ¤Ð0Ø$ h¤nÐ5Ø(¨&¬/Ð:Ø# X¤^Ð4Ø! 8¤>Ð2Ø*¨H¬NÐ;Ø% v¤}Ð5Ø ¤Ð/Ø  (¤.°3Ñ"6Ð7ð���r   r3   éÿÿÿÿ)zpathofexile.exezpathofexile_x64.exezpathofexilesteam.exei   Fi €  Úlogsz
Client.txtr   ) r2   r   ÚWinDLLÚ	StructureÚCreateToolhelp32SnapshotÚHANDLEÚvalueÚsizeofr    ÚProcess32FirstWÚbyrefÚCloseHandler)   ÚlowerÚintr"   ÚProcess32NextWÚOpenProcessÚcreate_unicode_bufferr-   ÚQueryFullProcessImageNameWÚLPWSTRÚPOINTERÚargtypesÚBOOLÚrestyper   r   r   r   r   Ú	Exception)r	   r   ÚTH32CS_SNAPPROCESSr3   ÚsnapÚpeÚpidÚexeÚ!PROCESS_QUERY_LIMITED_INFORMATIONÚhprocÚbufÚsizerD   Úexe_pathÚinstall_dirÚclientr   r2   r   s                    @@r   r   z(Config._discover_log_from_running_client+   s}  øø€ ðE	ØˆMˆMˆMØ'Ð'Ð'Ð'Ð'Ð'à—}’} ZÀ�}ÑEÔEˆHØ!+Ððð ð ð ð ð ð ð  &Ô"2ñ ô ð ð ×4Ò4Ð5GÈÑKÔKˆDØ�x—’ rÑ*Ô*Ô0Ò0Ð0Ø�tð+Ø$�_Ñ&Ô&�Ø"ŸMšM¨/Ñ:Ô:�”	Ø×/Ò/°°f·l²lÀ2Ñ6FÔ6FÑGÔGð  Øð ×$Ò$ TÑ*Ô*Ð*Ð*Ð*ð �ðØœ,×,Ò,Ñ.Ô.�CØÐ`Ð`Ð`Ý! "Ô"2Ñ3Ô3˜ØØ#×2Ò2°4¸¿ºÀbÑ9IÔ9IÑJÔJð Øðð ×$Ò$ TÑ*Ô*Ð*Ð*ø�×$Ò$ TÑ*Ô*Ð*Ð*øøøà�aŠxˆxØ�tà06Ð-Ø×(Ò(Ð)JÈEÐSVÑWÔWˆEØð Ø�tð,Ø×2Ò2°5Ñ9Ô9�Ø—~’~ eÑ,Ô,�Ø-5Ô-PÐ*à”O X¤^°X´_ÀfÇnÂnÐU]ÔUcÑFdÔFdð7Ð*Ô3ð 6>´]Ð*Ô2Ø1Ð1°%¸¸CÀÇÂÈdÑASÔASÑTÔTð  Øð ×$Ò$ UÑ+Ô+Ð+Ð+Ð+ð œ9�à×$Ò$ UÑ+Ô+Ð+Ð+ø�×$Ò$ UÑ+Ô+Ð+Ð+øøøåœ'Ÿ/š/¨(Ñ3Ô3ˆKÝ”W—\’\ +¨v°|ÑDÔDˆFÝ”W—\’\ +¨vÐ7IÑJÔJˆFÝŒw�~Š~˜fÑ%Ô%ð Ø�ÝŒw�~Š~˜fÑ%Ô%ð Ø�ðøåð 	ð 	ð 	Ø�4�4ð	øøøàˆtsj   „A-L Á4AE ÃL ÃA E Ä9L ÅE&Å&	L Å1L ÆBI È L È7I È>L ÉI+É+BL Ë0 L Ì
L ÌL c           	      ó(  — t           j                             d¦  «        t           j                             d¦  «        t           j                             d¦  «        t           j                             d¦  «        t           j                             d¦  «        g}	 ddl}d}d}|                     |j        j        ¦  «        }|j        j         	                    d|d||¦  «         |j
        }|rl|                     dt           j                             |d	d
d¦  «        ¦  «         |                     dt           j                             |d	d
d¦  «        ¦  «         n# t          $ r Y nw xY w|D ]%}t           j                             |¦  «        r|c S Œ&dS )u‹   
        TÃ¬m tá»‡p poe2_production_Config.ini cá»§a ngÆ°á»�i chÆ¡i.
        Kiá»ƒm tra OneDrive, Documents, My Games vÃ  AppData.
        zH~\OneDrive\Documents\My Games\Path of Exile 2\poe2_production_Config.iniz?~\Documents\My Games\Path of Exile 2\poe2_production_Config.inizC~\OneDrive\Documents\My Games\Path of Exile 2\production_Config.iniz:~\Documents\My Games\Path of Exile 2\production_Config.iniz<~\AppData\Roaming\Path of Exile 2\poe2_production_Config.inir   Né   zMy GameszPath of Exile 2zpoe2_production_Config.inié   zproduction_Config.ini)r   r   Ú
expanduserÚctypes.wintypesrC   r   ÚMAX_PATHÚwindllÚshell32ÚSHGetFolderPathWr:   Úinsertr   rJ   r   )r	   Ú
candidatesr2   ÚCSIDL_PERSONALÚSHGFP_TYPE_CURRENTrR   Údoc_dirr   s           r   Úfind_poe2_config_pathzConfig.find_poe2_config_pathv   s‰  € õ ŒG×ÒÐjÑkÔkÝŒG×ÒÐaÑbÔbÝŒG×ÒÐeÑfÔfÝŒG×ÒÐ\Ñ]Ô]ÝŒG×ÒÐ^Ñ_Ô_ð
ˆ
ð	Ø"Ð"Ð"Ð"ØˆNØ!"ÐØ×.Ò.¨v¬Ô/GÑHÔHˆCØŒMÔ!×2Ò2°4¸ÈÐOaÐcfÑgÔgÐgØ”iˆGØð tØ×!Ò! !¥R¤W§\¢\°'¸:ÐGXÐZvÑ%wÔ%wÑxÔxÐxØ×!Ò! !¥R¤W§\¢\°'¸:ÐGXÐZqÑ%rÔ%rÑsÔsÐsøøÝð 	ð 	ð 	ØˆDð	øøøð ð 	ð 	ˆAÝŒw�~Š~˜aÑ Ô ð Ø���ðàˆts   ÂB?E Å
E'Å&E'c                 ó¸  — |                       ¦   «         }|sdS 	 ddl}|                     d¬¦  «        }|                     |d¬¦  «         |                     dd	d
¬¦  «                             ¦   «                              ¦   «         }|                     ddd
¬¦  «                             ¦   «                              ¦   «         }|dk    s|dk    rd|fS |                     d¦  «        r@|                     ddd¬¦  «                             ¦   «         }|dk    r|dk    s|dk    rd|fS d|fS # t          $ r#}t          d|› d|› �¦  «         d|fcY d}~S d}~ww xY w)uÚ   
        Ä�á»�c tá»‡p setting cá»§a game vÃ  tá»± Ä‘á»™ng nháº­n diá»‡n cháº¿ Ä‘á»™ di chuyá»ƒn:
        Tráº£ vá»� ('wasd', filepath) hoáº·c ('mouse', filepath) hoáº·c ('mouse', None náº¿u khÃ´ng tÃ¬m tháº¥y)
        )ÚwasdNr   NF)Ústrictz	utf-8-sig)ÚencodingÚGENERALÚuser_input_modeÚ )ÚfallbackÚlast_selected_KBM_input_moderg   ÚWASD_ACTION_KEYSÚmove_upÚ0Ú87u   [Config] Lá»—i Ä‘á»�c z: )
re   ÚconfigparserÚConfigParserÚreadÚgetÚstripr?   Úhas_sectionrJ   Úprint)r	   r   rs   Úcfgrk   Úlast_kbmrp   Úes           r   Údetect_poe2_movement_modez Config.detect_poe2_movement_mode•   s¡  € ð ×(Ò(Ñ*Ô*ˆØð 	 Ø�<ð	 ØÐÐÐØ×+Ò+°5Ð+Ñ9Ô9ˆCØ�HŠH�T KˆHÑ0Ô0Ð0à!Ÿgšg iÐ1BÈR˜gÑPÔP×VÒVÑXÔX×^Ò^Ñ`Ô`ˆOØ—w’w˜yÐ*HÐSU�wÑVÔV×\Ò\Ñ^Ô^×dÒdÑfÔfˆHà &Ò(Ð(¨H¸Ò,>Ð,>Ø˜t�|Ð#à�ŠÐ1Ñ2Ô2ð (ØŸ'š'Ð"4°iÈ#˜'ÑNÔN×TÒTÑVÔV�Ø˜d’?�?¨¸6Ò(AÐ(AÀXÐQWÒEWÐEWØ! 4˜<Ð'à˜4�<ÐøÝð 	 ð 	 ð 	 ÝÐ6¨4Ð6Ð6°1Ð6Ð6Ñ7Ô7Ð7Ø˜4�<ÐÐÐÐÐÐøøøøð	 øøøs+   šB8D, ÃAD, Ä(D, Ä,
EÄ6EÅEÅEi^  é–   iÂ  i,  i&  éú   )ÚBULK_DIVINEÚBULK_CHAOS_BUNDLEÚPINNACLE_KEYÚOMENÚ	GEM_6LINKÚ	HIGH_RUNEúForbidden Rite)r†   ÚStandardzHardcore Forbidden RiteÚHardcoreÚbg_darkz#0a0c10Ú	bg_headerz#0d1117Úcard_bgz#131b26Úcard_bg_altz#0f172aÚcard_borderz#2a3248Úaccent_goldz#c89b3cÚ
gold_lightz#fbbf24Úprofit_greenz#22c55eÚokz#34d399Úok_hoverz#059669Ústartz#10b981Ústart_hoverÚ	alert_redz#ef4444Úalert_hoverz#b91c1cÚwarnz#f59e0bÚ	info_cyanz#38bdf8Útext_primaryz#f1f5f9Ú
text_mutedz#94a3b8Úhpz#f87171ÚesÚwardz#a78bfaÚmanaz#60a5faÚspiritz#c084fcÚlog_fgÚlog_bgz#090d13Ú
warn_hoverz#b45309Úinfoz#0284c7Ú
info_hoverz#0369a1Úbluez#2563ebÚ
blue_hoverz#1d4ed8Ú	bar_trackz#1e293bÚ	muted_btnz#334155Úmuted_btn_hoverz#475569Úok_bgz#064e3bz#022c22z#d1fae5z#a7f3d0z#6ee7b7z#1e1b4bz#6366f1z#7c3aedz#c7d2fe)
Ú
ok_bg_deepÚ	ok_borderÚ
text_on_okÚtext_on_ok_mutedÚtext_on_ok_brightÚspirit_deepÚspirit_borderÚspirit_hoverÚ	spirit_fgÚinsetiÔ  i¨  i„  iX  iþ  i¼  g)\�Âõ(ì?gš™™™™™É?g      ð?ÚF9ÚF10ÚGEMINI_MODELzgemini-3.8-flashzgemini-3.7-flashÚGEMINI_API_KEYrl   g      @F)#r*   r+   r,   r   ÚclassmethodÚstrr   r   r   re   Útupler}   ÚGOLD_TAX_RATESÚDEFAULT_LEAGUEÚAVAILABLE_LEAGUESÚTHEMEÚCONTROL_CENTER_WIDTHÚCONTROL_CENTER_HEIGHTÚCONTROL_CENTER_MIN_WIDTHÚCONTROL_CENTER_MIN_HEIGHTÚOVERLAY_WIDTHÚOVERLAY_HEIGHTÚDEFAULT_OPACITYÚMIN_OPACITYÚMAX_OPACITYÚHOTKEY_TOGGLE_OVERLAYÚHOTKEY_REFRESH_MARKETr   Úgetenvr·   ÚGEMINI_FALLBACK_MODELr¸   ÚDEFAULT_ZOOM_MULTIPLIERÚDEFAULT_ZOOM_ENABLEDÚDEFAULT_DISABLE_FOG© r   r   r   r      sœ  € € € € € ðð ð Ðð ð( cð (ð (ð (ñ „[ð(ð ð S¨4¡Zð ð ð ñ „[ðð$ ðH°#¸±*ð Hð Hð Hñ „[ðHðT ð c¨D¡jð ð ð ñ „[ðð< ð ¨%°°S¸4±Z°Ô*@ð  ð  ð  ñ „[ð ð@ Ø ØØØØðð €Nð &€NØ]Ð]Ð]Ðð-Ø�9ð-à�Yð-ð 	�9ð-ð 	�yð	-ð
 	�yð-ð 	�yð-ð 	�ið-ð 	˜	ð-ð 	ˆið-ð 	�Ið-ð 	�ð-ð 	�yð-ð 	�Yð-ð 	�yð-ð 	�	ð-ð  	�Yð!-ð" 	˜	ð#-ð -ð$ 	�ið%-ð& 	ˆið'-ð( 	ˆið)-ð* 	�	ð+-ð, 	�	ð--ð. 	�)ð/-ð0 	�)ð1-ð2 	�)ð3-ð4 	�ið5-ð6 	�	ð7-ð8 	�ið9-ð: 	�	ð;-ð< 	�ið=-ð> 	�Yð?-ð@ 	�YðA-ðB 	˜9ðC-ðD 	�ðE-ð -ðF  ØØØ%Ø&Ø Ø"Ø!ØØðY-ð -ð -€Eð` ÐØÐØ"ÐØ #Ðð €MØ€NØ€OØ€KØ€Kð !ÐØ!Ðð �2”9˜^Ð-?Ñ@Ô@€LØ.ÐØ�R”YÐ/°Ñ4Ô4€Nð "ÐØ ÐØÐÐÐr   r   )Ú__doc__r   r   rÐ   r   r   ú<module>rÒ      sV   ððð ð 
€	€	€	ðD ð D ð D ð D ð D ñ D ô D ð D ð D ð D r   