hyb
2025-12-31 6cdcd01f77e11b72c323603e27ebdb85b15223c9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
Ë
hñúh€Åãóè—dZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
m Z ddl
m Z ddlmZmZddlmZe j&r    ddlmcmZe j.e«ZdZe j6rej8e j:«Zd„Zd„Zdd    „Z dd
„Z!d „Z"d „Z#d „Z$dd„Z%e%Z&e%Z'dd„Z(d„Z)d„Z*d„Z+d„Z,d„Z-e j\rd„Z/ye j6rd„Z/ye j&rd„Z/yd„Z/y)z1
Find external dependencies of binary libraries.
éN)Úcompat)Úlog)ÚdylibÚutils)Úwinutilscóè—ddl}|j«}|j|j««t    j
t j«t    j
t j«j«t    j
t j«t    j
t j«j«h}||Dcgc]%}t    j
|«j«‘Œ'c}z }t«}|D]A}|sŒt    j
|«}|j«sŒ,||vrŒ1|j|«ŒCt|d„d¬«}|Scc}w)a‹
    Return list of paths that serve as prefixes for parent-directory preservation of collected binaries and/or
    shared libraries. If a binary is collected from a location that starts with a path from this list, the relative
    directory structure is preserved within the frozen application bundle; otherwise, the binary is collected to the
    frozen application's top-level directory.
    rNcó,—t|j«S©N)ÚlenÚparents)Úxs úOH:\Change_password\venv_build\Lib\site-packages\PyInstaller/depend/bindepend.pyú<lambda>z>_get_paths_for_parent_directory_preservation.<locals>.<lambda>^s€¬¨A¯I©I«€óT)ÚkeyÚreverse)ÚsiteÚgetsitepackagesÚappendÚgetusersitepackagesÚpathlibÚPathÚsysÚ base_prefixÚresolveÚprefixÚsetÚis_dirÚaddÚsorted)rÚ
orig_pathsÚexcluded_pathsÚpathÚpathss     rÚ,_get_paths_for_parent_directory_preservationr%)s€ó$à×%Ñ%Ó'€JØ×ѐd×.Ñ.Ó0Ô1ô      ‰ ”S—_‘_Ó%܏ ‰ ”S—_‘_Ó%×-Ñ-Ó/܏ ‰ ”S—Z‘ZӠ܏ ‰ ”S—Z‘ZÓ ×(Ñ(Ó*ð    €Nð¸JÖG°D”7—<‘< Ó%×-Ñ-Õ/ÒGÑG€Jä ‹E€EØò
ˆÙØ Ü|‰|˜DÓ!ˆà{‰{Œ}Ø à >Ñ !Ø Ø     ‰    $ð
ô 5Ñ6ÀÔ E€Eà €Lùò'HsÃ*E/cój—|D]#}||jvsŒ|j|«cS|jSr
)r Ú relative_toÚname)Ú src_filenameÚparent_dir_preservation_pathsÚparent_dir_preservation_paths   rÚ_select_destination_directoryr,csB€à(EòJÐ$Ø '¨<×+?Ñ+?Ò ?à×+Ñ+Ð,HÓIÒ IðJð × Ñ Ðrc
ó"
‡‡—t«}t«}t«}g}|dd}|D]Æ\}}    }
|
dk(rŒtj|    «} | |vrŒ(|j    | «t
j d|    «t|    |«D]h\} Št
j d| ‰«‰s|j| |    f«Œ4tj‰«st
j d‰«Œ`tj‰«Š‰|vr t
j dt‰««Œ™|j    ‰«t‰|«} tj| «} tjr…| j tjd«k(rct#j$‰«rN‰j j j j }tj‰j'|««} t
j dt‰«t| ««|jt| «t‰«d    f«tj(rŒÁ| j tjd«k(rŒåt+ˆfd
„|D««r!t
j d t| ««Œt
j d t| ««|jt| j,«t| «df«ŒkŒÉ|D    
cic]K\}}    }
|
dk7r@t.j0j3t.j0j5|    ««||    |
f“ŒM}}    }}
t|D    
cgc]\}}    }
|
dk(sŒ |‘Œc}
}    }«}|D]†\}}tj|«sŒt.j0j3t.j0j5|««}|j7|d«}|€.tj8|«sŒƒt
j;d ||«Œ›tj(rŒ¬tj|d«}tj|d«Š|j tjd«k(rŒÿ||vrŒt+ˆfd„|D««r!t
j=dt|««Œ:t
j=dt|««|j|t|«df«|j    |«Œ‰|Scc}
}    }wcc}
}    }w)az
    Perform binary dependency analysis on the given TOC list of collected binaries, by recursively scanning each binary
    for linked dependencies (shared library imports). Returns new TOC list that contains both original entries and their
    binary dependencies.
 
    Additional search paths for dependencies' full path resolution may be supplied via optional argument.
    NÚSYMLINKzAnalyzing binary %rz2Processing dependency, name: %r, resolved path: %rz5Skipping dependency %r due to global exclusion rules.z/Skipping dependency %r due to prior processing.ú.zCollecting dependency %r as %r.ÚBINARYc3ó@•K—|]}‰j|«–—Œy­wr
©Úmatch)Ú.0ÚpatternÚ dep_src_paths  €rú    <genexpr>z-binary_dependency_analysis.<locals>.<genexpr>Ésøèø€Ò]°W\×'Ñ'¨×0Ñ]ùóƒz‡Skipping symbolic link from %r to top-level application directory due to source path matching one of symlink suppression path patterns.z@Adding symbolic link from %r to top-level application directory.z:Library not found: could not resolve %r, dependency of %r.réc3ó@•K—|]}‰j|«–—Œy­wr
r2)r4r5Údependency_src_paths  €rr7z-binary_dependency_analysis.<locals>.<genexpr>søèø€Òb¸'Ð&×,Ñ,¨W×5Ñbùr8z¤Missing dependency handling: skipping symbolic link from %r to top-level application directory due to source path matching one of symlink suppression path patterns.z]Missing dependency handling: adding symbolic link from %r to top-level application directory.)r%rrrrÚloggerÚdebugÚ get_importsrrÚinclude_libraryÚstrr,ÚPurePathrÚ    is_darwinÚparentÚosxutilsÚis_framework_bundle_libr'Úis_winÚanyr(Úosr#ÚnormcaseÚbasenameÚgetÚwarn_missing_libÚwarningÚinfo)ÚbinariesÚ search_pathsÚsymlink_suppression_patternsr*Úprocessed_binariesÚprocessed_dependenciesÚmissing_dependenciesÚ
output_tocÚ    dest_nameÚsrc_nameÚtypecodeÚsrc_pathÚdep_nameÚ dep_dest_pathÚframework_parent_pathÚ seen_binariesÚexisting_symlinksÚdependency_nameÚreferring_binaryÚdependency_basenameÚdependency_toc_entryÚdependency_dest_pathr6r;s                      @@rÚbinary_dependency_analysisrdns’ù€ô%QÓ$RÐ!ô›ÐÜ ›UÐð
Ðð™!€JØ)3óJ\Ñ%ˆ    8˜Xà yÒ  Ø ô—<‘< Ó)ˆØ Ð)Ñ )Ø Ø×јxÔ(ä ‰ Ð*¨HÔ5ô'2°(¸LÓ&Ió;    \Ñ "ˆHlÜ L‰LÐMÈxÐYeÔ fñ Ø$×+Ñ+¨X°xÐ,@ÔAØô×(Ñ(¨Ô6Ü— ‘ ÐTÐVbÔcØä"Ÿ<™<¨ Ó5ˆLðÐ5Ñ5Ü— ‘ ÐNÔPSÐT`ÓPaÔbØØ "× &Ñ & |Ô 4ô
:¸,ÐHeÓfˆMÜ#×,Ñ,¨]Ó;ˆMô
×Ò M×$8Ñ$8¼G×<LÑ<LÈSÓ<QÒ$QÜ×3Ñ3°LÔAà,8×,?Ñ,?×,FÑ,F×,MÑ,M×,TÑ,TÐ)Ü$+×$4Ñ$4°\×5MÑ5MÐNcÓ5dÓ$eMä L‰LÐ:¼CÀ Ó<MÌsÐS`ÓOaÔ bØ × Ñ œs =Ó1´3°|Ó3DÀhÐOÔ Pô}Š}áØ×%Ñ%¬×)9Ñ)9¸#Ó)>Ò>áÜÓ]Ð@\Ô]Ô]ä— ‘ ð<Ü=@ÀÓ=Oöô
— ‘ Ð_ÔadÐerÓasÔtØ×!Ñ!¤3 }×'9Ñ'9Ó#:¼CÀ Ó<NÐPYÐ"ZÖ[òw;    \ðJ\ð^.8÷ðá )ˆIx ¸8ÀyÒ;Pô     ‰×ÑœŸ™×)Ñ)¨(Ó3Ó4°yÀ(ÈHÐ6UÑUð€MòôÈJ×pÐpÑ+H¨9°hÀÐZbÐfoÓZošYÔpÓqÐà-Aó37Ñ)ˆÐ)ä×$Ñ$ _Ô5Ø ô!Ÿg™g×.Ñ.¬r¯w©w×/?Ñ/?ÀÓ/PÓQÐØ,×0Ñ0Ð1DÀdÓKÐØ Ð 'ä×)Ñ)¨/Ô:ØÜ N‰NØLÈoÐ_oõ ô—“ä#*×#3Ñ#3Ð4HÈÑ4KÓ#LÐ  Ü")§,¡,Ð/CÀAÑ/FÓ"GÐ à#×*Ñ*¬g×.>Ñ.>¸sÓ.CÒCàØ$Ð(9Ñ9áôÓbÐEaÔbÔbÜ— ‘ ð\Ü]`ÐauÓ]vôñô K‰KØoÜÐ(Ó)ô ð × Ñ Ð2´CÐ8LÓ4MÈyÐYÔ ZØ × !Ñ !Ð"5Ö 6ðg37ðj ÐùôwùôqsË:ATÍT
Í(T
cóޗtjr6t|«j«j    d«rgSt ||«Stj r t||«St||«S)a+
    Analyze the given binary file (shared library or executable), and obtain the list of shared libraries it imports
    (i.e., link-time dependencies).
 
    Returns set of tuples (name, fullpath). The name component is the referenced name, and on macOS, may not be just
    a base name. If the library's full path cannot be resolved, fullpath element is None.
 
    Additional list of search paths may be specified via `search_paths`, to be used as a fall-back when the
    platform-specific resolution mechanism fails to resolve a library fullpath.
    z    .manifest)    rrFr@ÚlowerÚendswithÚ_get_imports_pefilerBÚ_get_imports_macholibÚ_get_imports_ldd)ÚfilenamerPs  rr>r>s[€ô‡}‚}Ü ˆx‹=× Ñ Ó  × )Ñ )¨+Ô 6؈IÜ" 8¨\Ó:Ð:Ü    ×    Ò    Ü$ X¨|Ó<Ð<ä ¨,Ó7Ð7rcó²—ddl}t«}|j|d¬«}|j|jd|jdgdd¬«t |dg«D].}|j jd    «}|j|«Œ0t |d
d«}|ra|jD]R}|j€Œ|jjd    «}    |    jd «d}
|j|
d z«ŒT|j«tjj|«g|xsgz}|D chc]} | t!| |«f’Œ}} |Scc} w) zo
    Windows-specific helper for `get_imports`, which uses the `pefile` library to walk through PE header.
    rNT©Ú    fast_loadÚIMAGE_DIRECTORY_ENTRY_IMPORTÚIMAGE_DIRECTORY_ENTRY_EXPORT)Ú directoriesÚforwarded_exports_onlyÚimport_dllnames_onlyÚDIRECTORY_ENTRY_IMPORTúutf-8ÚDIRECTORY_ENTRY_EXPORTr/z.dll)ÚpefilerÚPEÚparse_data_directoriesÚDIRECTORY_ENTRYÚgetattrÚdllÚdecoderÚsymbolsÚ    forwarderÚsplitÚcloserHr#ÚdirnameÚresolve_library_path) rkrPrwÚoutputÚpeÚentryÚdll_strÚexported_symbolsÚsymbolrr|Úlibs             rrhrh*sa€óä ‹U€Fð
‰8 tˆÓ    ,€BØ×Ñà × "Ñ "Ð#AÑ BØ × "Ñ "Ð#AÑ Bð
ð $Ø!ð ôô˜Ð5°rÓ:òˆØ—)‘)×"Ñ" 7Ó+ˆØ
‰
7Õðô ˜rÐ#;¸TÓBÐÙØ&×.Ñ.ò    )ˆFØ×ÑÑ+à"×,Ñ,×3Ñ3°GÓ<    à—o‘o cÓ*¨1Ñ-Ø—
‘
˜3 ™<Õ(ð     )ð‡HH„Jô—G‘G—O‘O HÓ-Ð.°,Ò2DÀ"ÑE€LØHNÖ OÀˆsÔ(¨¨lÓ;Ò<Ð O€FÐ Oà €MùòPsÄ;Ecón—t«}tjrtjd«}n‡tj
rtjd«}natj rtjd«}n;tjrtjd«}ntjd«}tjdtjj|«gtjtjtjd¬«}g}|jj!«D]P}|sŒ|j#d«r|j%d    «rŒ)|j#d
«rŒ;d |vrŒ@|j'|«ŒR|r&t(j+d |d j-|««|j.j!«D]e}d}d}|j1|«}    |    r¡tjrx|    j3d«}
|
r4|
}tjj5|«|    j3d«z}nî|    j3d«}tjj5|«}n½tj
r#|    j3d«|    j3d«}}nŠ|    j3d«|    j3d«}}|xstjj5|«}tjr5tj6dtjj5|««rŒa|dddvrŒjtj8r!|j;«j#d«rŒ›tjj=|«sMd}nJ|j%d«r7|j?d«} tA| «dk7rŒï| djC«}d}nŒ|s)tEtjj5|«|«}|rtjjG|«}|jI||f«Œh|S)z
    Helper for `get_imports`, which uses `ldd` to analyze shared libraries. Used on Linux and other POSIX-like platforms
    (with exception of macOS).
    zR^\s*(((?P<libarchive>(.*\.a))(?P<objectmember>\(.*\)))|((?P<libshared>(.*\.so))))$z^\s+(.*)\s+=>\s+(.*)$z$^\s*(?:(.*?)\s+=>\s+)?(.*?)\s+\(.*\)z\s*(.*?)\s+=>\s+(.*?)\s+\(.*\)Úlddru)ÚstdinÚstderrÚstdoutÚencodingzError relocating z symbol not foundz7ldd: warning: you do not have execution permission for znot a dynamic executablezldd warnings for %r:
%sú
libarchiveÚ objectmemberÚ    libsharedr9éz'ld(64)?(-linux|-musl)?(-.+)?\.so(\..+)?é
)z
linux-gatez
linux-vdsoz/cygdrive/c/windows/systemz    not foundz=>r)%rrÚis_aixÚreÚcompileÚis_hpuxÚis_solarÚis_linuxÚ
subprocessÚrunrHr#ÚrealpathÚDEVNULLÚPIPErŽÚ
splitlinesÚ
startswithrgrr<rMÚjoinrÚsearchÚgrouprJÚ    fullmatchÚ    is_cygwinrfÚexistsr€r ÚstripÚ%_resolve_library_path_in_search_pathsÚnormpathr) rkrPr„Ú LDD_PATTERNÚpÚ ldd_warningsÚliner(rŠÚmr’Útokenss             rrjrjYsW€ô ‹U€Fô‡}‚}ô —j‘jÐ!vÓw‰ Ü    Šô
—j‘jÐ!9Ó:‰ Ü    Šô —j‘jÐ!9Ó:‰ Ü    Šô
—j‘jÐ!HÓI‰ ä—j‘jÐ!BÓCˆ ô    ‰Ø    ”—‘× Ñ  Ó*Ð+ÜנѠ܏‰Ü‰Øô     €Að€LØ—‘×#Ñ#Ó%ò"ˆÙØ ð_‰_Ð0Ô 1°d·m±mÐDWÔ6XØ ð_‰_ÐVÔ WØ ð(¨4Ñ /Ø à×јDÕ!ð%"ñ&܏‰Ð1°8¸T¿Y¹YÀ|Ó=TÔUà—‘×#Ñ#Ó%óA ˆØˆØˆà × Ñ ˜tÓ $ˆÚ ܏}Š}ØŸW™W \Ó2
Ùð%CÜŸ7™7×+Ñ+¨CÓ0°1·7±7¸>Ó3JÑJ‘DðŸ'™' +Ó.CÜŸ7™7×+Ñ+¨CÓ0‘DÜ—’ØŸG™G A›J¨¯©°«
c‘àŸG™G A›J¨¯©°«
cØÒ4œrŸw™w×/Ñ/°Ó4Ü—?’?ô—|‘|Ð$NÔPR×PWÑPW×P`ÑP`ÐadÓPeÔf٠ؐCRˆyÐ8Ñ8ñä×Òà—9‘9“;×)Ñ)Ð*FÔGÙô—7‘7—>‘> #Ô&Ø‘Ø ]‰]˜;Ô 'à—Z‘Z Ó%ˆFܐ6‹{˜aÒÙØ˜!‘9—?‘?Ó$ˆD؉Cñ ñÜ7Ü—‘× Ñ  Ó&ØóˆCñ Ü—'‘'×"Ñ" 3Ó'ˆCð    
‰
D˜#;ÖðCA ðF €Mrc󇇇‡‡‡‡‡—ddlmŠddlmŠddlmŠ    ddlmŠt«}tjjtjj‰««}tjjtj«}tjj|«}d„Šˆˆfd„Štj ˆˆˆfd    „«}tj ˆˆfd
„«}|‰«\}}    |    ||«z }    |    j#tjj%t&j(d ««t+t,j/|    ««}    ˆˆfd „Šˆfd „}
|D]†} d} | j1d«rítjj$| j3tj4«ddŽ} |    D]«}tjj%|| «}|j1d«r |
|||«}nGtjj7|«s tjj%||«‰|«}|sŒ‰tjj9|«sŒ©|} n&n$| j1d«r |
| ||«} n‰| «} | s)t;tjj=| «|«} | rtjj?| «} |jA| | f«Œ‰|S#t$rdŠYŒæwxYw)z|
    macOS-specific helper for `get_imports`, which uses `macholib` to analyze library load commands in Mach-O headers.
    r)Ú    dyld_find)ÚLC_RPATH)ÚMachO)Ú _dyld_shared_cache_contains_pathNcó—t«}|jD],}|j«D]\}}}|j|«ŒŒ.|Sr
)rÚheadersÚwalkRelocatablesr)r±Úreferenced_libsÚheaderÚidxr(rŠs      rÚ_get_referenced_libsz3_get_imports_macholib.<locals>._get_referenced_libsüsP€ä›%ˆØ—i‘iò    )ˆFØ"(×"9Ñ"9Ó";ò )‘T˜3Ø×#Ñ# CÕ(ñ )ð    )ðÐrcóZ•—g}|jD]˜}|jD]‡}|dj}|‰k(sŒ|djd«}|j    d«}|j d«r)|j d«st jd|‰«Œw|j|«Œ‰Œš|S)Nrr•ruúú@©z@executable_pathz @loader_pathz<Unsupported rpath format %r found in binary %r - ignoring...)    r¹ÚcommandsÚcmdr}Úrstripr£r<rMr)r±Ú    run_pathsr¼ÚcommandÚcmd_typeÚrpathrµrks      €€rÚ_get_run_pathsz-_get_imports_macholib.<locals>._get_run_pathss³ø€ðˆ    Ø—i‘iò    ,ˆFØ!Ÿ?™?ò ,ð
# 1™:Ÿ>™>Ø˜xÓ'Ø# A™J×-Ñ-¨gÓ6Eà!ŸL™L¨Ó0Eð×'Ñ'¨Ô,°U×5EÑ5EÐFjÔ5kÜŸ™Ð'eÐglÐnvÔwØ Ø×$Ñ$ UÕ+ñ ,ð    ,ð"Ðrcó4•—‰|«}‰|«‰|«fSr
©)rkr±r¶r¾rÊs  €€€rÚ!get_run_paths_and_referenced_libsz@_get_imports_macholib.<locals>.get_run_paths_and_referenced_libss#ø€ñ (‹OˆÙ# AÓ&©°qÓ(9Ð9Ð9rcó •—‰‰|««Sr
rÌ)rkr¶rÊs €€rÚ get_run_pathsz,_get_imports_macholib.<locals>.get_run_paths!sø€ñ™e H›oÓ.Ð.rrŠcóΕ—tjj|«r.‰
‰|«r|Stjj|«r|Sy    ‰|«S#t$rYywxYwr
)rHr#ÚisabsÚisfileÚ
ValueError)rŠr·r´s €€rÚ_resolve_using_pathz2_get_imports_macholib.<locals>._resolve_using_path=sbø€ô 7‰7=‰=˜Ô Ø/Ð;Ñ@`ÐadÔ@eؐ
܏w‰w~‰~˜cÔ"ؐ
Øð    Ù˜S“>Ð !øÜò    Ùð    úsÁAÁ    A$Á#A$có"•—|jd«r|td«d}n|jd«r|td«d}‰tjj    ||««}||S‰tjj    ||««S)Nz @loader_path/z@executable_path/)r£r rHr#r¤)rŠÚbin_pathÚpython_bin_pathÚ resolved_librÔs    €rÚ_resolve_using_loader_pathz9_get_imports_macholib.<locals>._resolve_using_loader_pathOs†ø€ð >‰>˜/Ô *Ø”c˜/Ó*Ð+Ð,‰CØ ^‰^Ð/Ô 0Ø”cÐ-Ó.Ð/Ð0ˆCñ+¬2¯7©7¯<©<¸À#Ó+FÓGˆ Ø Ð #ØÐ ñ#¤2§7¡7§<¡<°ÀÓ#EÓFÐFrz@rpathr9rÂ)!Ú macholib.dyldr´Úmacholib.mach_orµÚmacholib.MachOr¶r·Ú ImportErrorrrHr#r‚rŸrÚ
executableÚ    functoolsÚ    lru_cacherr¤rrÚlistÚdictÚfromkeysr£r€ÚseprÑr©r«rJr¬r)rkrPr„rÖÚ
python_binr×rÍrÏr»rÆrÙÚreferenced_librØrŠÚrun_pathÚlib_pathrµr¶r·r¾rÊrÔr´s`               @@@@@@@rririæs…ÿ€õ(Ý(Ý$ð0ÝBô‹U€Fô
w‰w‰œrŸw™w×/Ñ/°Ó9Ó:€HÜ—‘×!Ñ!¤#§.¡.Ó1€JÜ—g‘g—o‘o jÓ1€Oòõô.×Ñõ:óð:ô
×Ñô/óð/ñ
"CÀ8Ó!LÑ€OYð‘˜zÓ*Ñ*€Ið×Ñ”R—W‘W—\‘\¤&×"4Ñ"4°eÓ<Ô=ô”T—]‘] 9Ó-Ó.€Iõô$Gð6*ó,3ˆØˆ ð × $Ñ $ XÔ .Ü—'‘'—,‘, × 4Ñ 4´R·V±VÓ <¸Q¸RР@ÐAˆCð&ò äŸ7™7Ÿ<™<¨°#Ó6à×&Ñ&Ð'KÔLá9¸(ÀHÈoÓ^‘HôŸ7™7Ÿ=™=¨Ô2ÜŸ™Ÿ ™  X¨xÔ8Ù2°8Ó<H⤧¡§¡¨xÕ 8Ø#+LÙñ ð"×(Ñ(Ð)MÔNÙ9¸.È(ÐTcÓd‘ á2°>ÓB ñÜ@Ü—‘× Ñ  Ó0ØóˆLñ ÜŸ7™7×+Ñ+¨LÓ9ˆLð
    
‰
N LÐ1Ö2ðY,3ð\ €MøôQ ò0Ø+/Ó(ð0úsœK:Ë: L    ÌL    cóÀ—tjj|«r|Stjrt |«}|r|St ||«Stjr_t ||«}|r|Stjdd«jtj«Dcgc]}|sŒ|‘Œ    }}t ||«Stjj|«Scc}w)ad
    Given a library name, attempt to resolve full path to that library. The search for library is done via
    platform-specific mechanism and fall back to optionally-provided list of search paths. Returns None if library
    cannot be resolved. If give library name is already an absolute path, the given path is returned without any
    processing.
    ÚPATHÚ)rHr#rÑrÚis_unixÚ_resolve_library_path_unixr«rFÚgetenvr€ÚpathsepÚctypesÚutilÚ find_library)r(rPÚfullpathr#Úwin_search_pathss     rrƒrƒžs¶€ô
‡ww‡}}TÔØˆ ä ‡~‚~ä-¨dÓ3ˆÙ ؈Oä4°T¸<ÓHÐHÜ    Šä8¸¸|ÓLˆÙ ؈Oô.4¯]©]¸6À2Ó-F×-LÑ-LÌRÏZÉZÓ-XÖa TÒ\`šDÐaÐÐaÜ4°TÐ;KÓLÐLä{‰{×'Ñ'¨Ó-Ð-ùòbs Â"CÂ*CcóX—|xsgD]’}tjj||«}tjj|«sŒCtj
r     t j|«}|tk7rŒstjj|«cSy#t$rYŒ¡wxYw)zg
    Low-level helper for resolving given library name to full path in given list of search paths.
    N) rHr#r¤rÒrrFrÚget_pe_file_machine_typeÚ    ExceptionÚ_exe_machine_typer¬)r(rPÚ search_pathróÚdll_machine_types     rr«r«Æsš€ð$Ò) rò*ˆ Ü—7‘7—<‘<  ¨TÓ2ˆÜw‰w~‰~˜hÔ'Ø ô =Š=ð Ü#+×#DÑ#DÀXÓ#NРð Ô#4Ò4Øäw‰w×Ñ Ó)Ò)ð*ð" øôò áð úsÁB    B)Â(B)c    ó—tjsJd«‚|jd«sd|vrt}nt}tj
rtj dd«}n=tjrtj dd«}ntj dd«}||td|jtj«««}|€Vtj«tjj|«}|r!tj j#|«sJ‚|€×d    d
g}tj$d k(r|j'd d g«n|j'ddg«tj(dk(r8tj$d k(r|j'dg«n|j'dg«t+j,d«}|rOtj j/|«}|j1tj j3d
|««nt4j7d«tj j9d«r|j1d«tj
r|j1d«nxtj:r7tj$d k(r|j1d«nC|j1d«n1tj<stj>r|j1d«|||«}|S)z¡
    UNIX-specific helper for resolving library path.
 
    Emulates the algorithm used by dlopen. `name` must include the prefix, e.g., ``libpython2.4.so``.
    zCCurrent implementation for Unix only (Linux, Solaris, AIX, FreeBSD)z.soz.so.ÚLIBPATHrëÚDYLD_LIBRARY_PATHÚLD_LIBRARY_PATHNz/libz/usr/libÚ32bitz/lib32z
/usr/lib32z/lib64z
/usr/lib64Úintelz/usr/lib/i386-linux-gnuz/usr/lib/x86_64-linux-gnuÚmultiarchsubdirz!Multiarch directory not detected.z#/data/data/com.termux/files/usr/libz/opt/freeware/libz/usr/local/lib/hpux32z/usr/local/lib/hpux64z/usr/local/lib) rrìrgr«Ú_which_libraryr—rîrBÚfilterr€rHrïrÚload_ldconfig_cacheÚLDCONFIG_CACHErKr#rÒÚ architectureÚextendÚmachineÚ    sysconfigÚget_config_varrJrr¤r<r=ÚisdirršÚ
is_freebsdÚ
is_openbsd)r(Úlib_search_funcÚlprŠr$Ú arch_subdirs      rríríÞs<€ô >Š>Ð`Ð`Ó`ˆ>à ‡}}UÔ˜v¨™~ô@‰ô)ˆô‡}‚}Ü ]‰]˜9 bÓ )‰Ü    ×    Ò    Ü ]‰]Ð.°Ó 3‰ä ]‰]Ð,¨bÓ 1ˆÙ
˜$¤ t¨R¯X©X´b·j±jÓ-AÓ BÓ
C€Cð €{Ü ×!Ñ!Ô#Ü×"Ñ"×&Ñ& tÓ,ˆÙ Ü—7‘7—>‘> #Ô&Ð &Ð&ð {à˜Ð$ˆä × Ñ  'Ò )Ø L‰L˜( LÐ1Õ 2à L‰L˜( LÐ1Ô 2ä >‰>˜WÒ $Ü×"Ñ" gÒ-Ø— ‘ Ð7Ð8Õ9à— ‘ Ð9Ð:Ô;ô
 ×.Ñ.Ð/@ÓAˆ Ù ÜŸ'™'×*Ñ*¨;Ó7ˆKØ L‰LœŸ™Ÿ™ j°+Ó>Õ ?ä L‰LÐ<Ô =ô 7‰7=‰=Ð>Ô ?Ø L‰LÐ>Ô ?ä =Š=Ø L‰LÐ,Õ -Ü ^Š^Ü×"Ñ" gÒ-Ø— ‘ Ð4Õ5à— ‘ Ð4Õ5Ü × Ò ¤&×"3Ò"3Ø L‰LÐ)Ô *Ù˜d EÓ*ˆà €Jrcóø—t|«}ttjj|«D]H}tj
|«D].}||«sŒ tjj ||«ccSŒJy)a9
    Search for a shared library in a list of directories.
 
    Args:
        name:
            The library name including the `lib` prefix but excluding any `.so` suffix.
        dirs:
            An iterable of folders to search in.
    Returns:
        The path to the library if found or None otherwise.
 
    N)Ú_library_matcherrrHr#r©Úlistdirr¤)r(ÚdirsÚmatcherr#Ú_paths     rrr,s`€ô˜tÓ$€GÜ”r—w‘w—~‘~ tÓ,ò1ˆÜ—Z‘Z Ó%ò    1ˆEِu~Ü—w‘w—|‘| D¨%Ó0Ô0ñ    1ñ1rcóF—tj|dz«jS)zv
    Create a callable that matches libraries if **name** is a valid library prefix for input library full names.
    z[0-9]*\.)r˜r™r3)r(s rrr@s€ô :‰:d˜[Ñ(Ó )× /Ñ /Ð/rcóž—tjr#ddl}|jtj
«St jd«xs'tjxrt jd«}|rt jd«}nˆtjrRtjdd\}}tjrdnd}tjr d    |›d
|›|›d }n2d    |›d
|›|›d }n&dd l m }tjrdnd}|d|›d
«‚tjstjr3tj j#|«j%d«r|dd}tj j#tj j'|««}|rit)tj*«}    |    D]K\}
} | €Œ    tj j#tj j'| ««|k(sŒI| cSd„} | |tj,tj j/tj,d««} | r| St1|«} | r| Sdd l m }d|›d}tj2rEtj j5d«r&dtjj6›}|d|›dz }||«‚)aÞ
    Find Python shared library that belongs to the current interpreter.
 
    Return  full path to Python dynamic library or None when not found.
 
    PyInstaller needs to collect the Python shared library, so that bootloader can load it, import Python C API
    symbols, and use them to set up the embedded Python interpreter.
 
    The name of the shared library is typically fixed (`python3.X.dll` on Windows, libpython3.X.so on Unix systems,
    and `libpython3.X.dylib` on macOS for shared library builds and `Python.framework/Python` for framework build).
    Its location can usually be inferred from the Python interpreter executable, when the latter is dynamically
    linked against the shared library.
 
    However, some situations require extra handling due to various quirks; for example, Debian-based linux
    distributions statically link the Python interpreter executable against the Python library, while also providing
    a shared library variant for external users.
    rNÚPy_ENABLE_SHAREDÚPYTHONFRAMEWORKÚ
INSTSONAMEr•ÚtrëÚ    libpythonr/z.dylibz.so.1.0)ÚPythonLibraryNotFoundErrorz?either the `--enable-shared` or the `--enable-framework` optionzthe `--enable-shared` optionz~Python was built without a shared library, which is required by PyInstaller. If you built Python from source, rebuild it with z.dll.aéþÿÿÿcó—|D]„}tjj||«}tjj|«sŒCtjj    |«}tjj|«sŒ‚|cSyr
)rHr#r¤r©rŸ)r(ÚlibdirsÚlibdirÚ    full_paths    rÚ_find_lib_in_libdirsz5get_python_library_path.<locals>._find_lib_in_libdirs¥sl€Øò
    ˆFÜŸ™Ÿ ™  V¨TÓ2ˆIÜ—7‘7—>‘> )Ô,ØôŸ™×(Ñ(¨Ó3ˆIÜ—7‘7—>‘> )Ô,ØØÒ ð
    ðrrŠzERROR: Python shared library (z) was not found!z/etc/debian_versionz libpython3.zw If you are using system python on Debian/Ubuntu, you might need to install a separate package by running `apt install z`.)rrFÚ_winapiÚGetModuleFileNamerÚ    dllhandler    r
rBÚis_condaÚ version_infoÚis_nogilÚPyInstaller.exceptionsrr¨rHr#rIrgrJr>Úpython_executablerr¤rƒrœrÒÚminor)r%Ú    is_sharedÚ expected_nameÚpy_majorÚpy_minorÚ    py_suffixrÚ
option_strÚexpected_basenameÚimported_librariesÚ_rèr$Úpython_libnameÚmessageÚpkg_names                rÚget_python_library_pathr:Js›€ô,‡}‚}ÛØ×(Ñ(¬¯©Ó7Ð7ô    × Ñ Ð!3Ó4ò    Kô
×    Ñ    Ò    Iœi×6Ñ6Ð7HÓIð ñÜ!×0Ñ0°Ó>‰ Ü    Šô!×-Ñ-¨b¨qÐ1ш(Ü!Ÿ?š?‘C°ˆ    Ü × Ò à'¨ z°°8°*¸Y¸KÀvÐN‰Mð(¨ z°°8°*¸Y¸KÀwÐO‰Mõ    Fô×Òñ NØ%Cð    ñ)ð @Ø@J¸|È1ð Nó
ð    
ô     Š œ×)Ò)¬r¯w©w×/?Ñ/?À Ó/N×/WÑ/WÐX`Ô/aØ% c rÐ*ˆ ôŸ™×(Ñ(¬¯©×)9Ñ)9¸-Ó)HÓIÐñ
Ü(¬×)AÑ)AÓBÐØ-ò     ‰KˆAˆxØÐØÜw‰w×Ѥ§¡× 0Ñ 0°Ó :Ó;Ð?PÓPà’ð      ò ñ"*ØÜ×ÑÜ
‰ ‰ ”V×'Ñ'¨Ó/ó€Nñ
ØÐô *Ð*;Ó<€NÙØÐõBà.¨}Ð.?Ð?OÐP€GÜ ‡‚œ2Ÿ7™7Ÿ>™>Ð*?Ô@à ¤×!1Ñ!1×!7Ñ!7Р8Ð9ˆØð Ø$˜: Rð )ñ    
ˆñ
% WÓ
-Ð-rcóX—tjj|«syt|«S)a3
    Classify the given file as either BINARY or a DATA, using appropriate platform-specific method. Returns 'BINARY'
    or 'DATA' string depending on the determined file type, or None if classification cannot be performed (non-existing
    file, missing tool, and other errors during classification).
    N)rHr#rÒÚ_classify_binary_vs_data©rks rÚclassify_binary_vs_datar>Øs$€ô 7‰7>‰>˜(Ô #Øô $ HÓ -Ð-rcój—    t|d«5}|jd«}ddd«dk7rydd|g}    tj|tj
tj
tj d¬«}|jd    k(rd
SdS#1swYŒlxYw#t$rYywxYw#t$rYywxYw) NÚrbésELFÚDATAÚobjdumpz-aÚutf8)rrŽrrrr0)ÚopenÚreadr÷rržr¡r Ú
returncode)rkÚfpÚsigÚcmd_argsr®s     rr<r<és¼€ð    Üh Ó%ð !¨Ø—g‘g˜a“j÷ !ð
*Ò Øð
˜t XÐ.ˆð        Ü—‘ØÜ!—‘Ü!—‘Ü ×(Ñ(Øô ˆAðŸ<™<¨1Ò,ˆxÐ8°&Ð8÷/ !ð !ûäò    Ùð    ûô$ò    Ùð    ús9‚ BŽB  B´AB& BÂB    B#Â"B#Â&    B2Â1B2có.—ddl}    t|d«5}|jd«}ddd«dk7ry    |j    |d¬«5}    ddd«y#1swYŒ.xYw#t$rYywxYw#1swYyxYw#|j
$rYyt$rYywxYw)    Nrr@r•sMZrBTrmr0)rwrErFr÷rxÚ PEFormatError)rkrwrHrIr…s     rr<r<sª€Ûð    Üh Ó%ð !¨Ø—g‘g˜a“j÷ !ð
%Š<Øð    Ø—‘˜8¨tÓ4ð ¸Ø÷ à÷ !ð !ûäò    Ùð    ú÷ àûØ×#Ñ#ò    ÙÜò    Ø àð    ús\† A’A¤A³A8ÁA,ÁA8ÁAÁAÁ    A)Á(A)Á,A5Á1A8Á5A8Á8B    BÂBcób—ddl}    |jj|«}y#t$rYywxYw)Nrr0rB)rÜr¶r÷)rkÚmacholibÚmachos   rr<r<"s6€ãð    Ø—N‘N×(Ñ(¨Ó2ˆEØøÜò    à àð        ús †"¢    .­.có—yr
rÌr=s rr<r<1s€àr)NNr
)0Ú__doc__Ú ctypes.utilrðrßrHrr˜rr    rÚ PyInstallerrrÚloggingÚPyInstaller.dependrrÚPyInstaller.utils.win32rrBÚPyInstaller.utils.osxÚosxrDÚ    getLoggerÚ__name__r<rørFrör,r%r,rdr>rhrjrirƒÚ findLibraryÚfindSystemLibraryr«rírrr:r>rœr<rÌrrú<module>r]sðñóÛÛ    ÛÛ    Û
ÛÛåÝ&ß+Ý,à    ×Òß,Ð,à    ˆ×    Ñ    ˜8Ó    $€àÐØ    ‡=‚=Ø9˜×9Ñ9¸&×:RÑ:RÓSÐò
7òtóaóN8ò*,ò^JòZrópðH#€ Ø(Ðóò0Kò\1ò(0òH.ò\ .ð
‡?‚?ó9ð8 ‡]‚]óð2 ×Òó ór