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
Ë
hñúhZPãóè—ddlZddlZddlmZd„ZdZd„Zd„Zd„ZGd„d    «Z    dd
„Z
d „Z Gd „d «Z Gd„d«Z Gd„d«ZGd„d«Zd„ZGd„d«ZGd„d«Zd„Zd„Zy)éN)Úwin32apic󔗠   tj|d¬«}t|jjdz«S#t
$rYywxYw)ab
    Checks if the specified PE file has CFG (Control Flow Guard) enabled.
 
    Parameters
    ----------
    filename : str
        Path to the PE file to inspect.
 
    Returns
    ----------
    bool
        True if file is a PE file with CFG enabled. False if CFG is not enabled or if file could not be processed using
        the pefile library.
    T©Ú    fast_loadi@F)ÚpefileÚPEÚboolÚOPTIONAL_HEADERÚDllCharacteristicsÚ    Exception)ÚfilenameÚpes  úVH:\Change_password\venv_build\Lib\site-packages\PyInstaller/utils/win32/versioninfo.pyÚpefile_check_control_flow_guardrsG€ðÜ Y‰Yx¨4Ô 0ˆôB×&Ñ&×9Ñ9¸FÑBÓCÐCøÜ òÙðús‚8;»    AÁAécó$—|jd«S)zL
    Encodes text as UTF-16LE (Microsoft 'Unicode') for use in structs.
    úUTF-16LE)Úencode)Útexts rÚgetRawr/s€ð ;‰;zÓ "Ð"ócóX—tj|dt«}tj|tj
d«}t |«sytj|tj
d|d«}t«}|j|«tj|«|S)z–
    Read the version information structure from the given executable's resources, and return it as an instance of
    `VSVersionInfo` structure.
    rÚ
RT_VERSIONN) rÚ LoadLibraryExÚLOAD_LIBRARY_AS_DATAFILEÚEnumResourceNamesrÚ RESOURCE_TYPEÚlenÚ LoadResourceÚ VSVersionInfoÚfromRawÚ FreeLibrary)Ú exe_filenameÚhÚresÚdataÚinfos     rÚ!read_version_info_from_executabler(6s‰€ô
    ×ј|¨QÔ0HÓI€AÜ
$ Q¬×(<Ñ(<¸\Ñ(JÓ
K€CÜ ˆsŒ8ØÜ ×  Ñ   ¤F×$8Ñ$8¸Ñ$FÈÈAÉÓ O€DÜ ‹?€D؇LLÔÜ ×Ñ˜ÔØ €Krcó—|dzdz    dzS)z5
    Align `offset` to the next 4-byte boundary.
    ér©)Úoffsets rÚ    nextDWordr-Fs€ða‰Z˜AÑ  !Ñ #Ð#rcó8—eZdZdZd    d„Zd„Zd„Zd„Zd
d„Zd„Z    y) r a
    WORD  wLength;        // length of the VS_VERSION_INFO structure
    WORD  wValueLength;   // length of the Value member
    WORD  wType;          // 1 means text, 0 means binary
    WCHAR szKey[];        // Contains the Unicode string "VS_VERSION_INFO".
    WORD  Padding1[];
    VS_FIXEDFILEINFO Value;
    WORD  Padding2[];
    WORD  Children[];     // zero or more StringFileInfo or VarFileInfo
                          // structures (or both) that are children of the
                          // current version structure.
    Ncó(—||_|xsg|_y©N©ÚffiÚkids)Úselfr2r3s   rÚ__init__zVSVersionInfo.__init__Zs€ØˆŒØ’J˜Bˆ    rc    ó&—t|«\}\}}}}t|«}t«|_|jj    ||«}|}||krÀ|}t||«\}\}}    }
}|j «dk(rAt «} | j    ||    |||||z«} |jj| «| }n@t«} | j    ||    |||||z«} |jj| «| }||z}t|«}||krŒÀ|S©NÚStringFileInfo)
Ú parseCommonr-Ú FixedFileInfor2r!Ústripr8r3ÚappendÚ VarFileInfo)r4r&ÚiÚsublenÚvallenÚwTypeÚnmÚjÚcsublenÚcvallenÚctypÚsfiÚkÚvfis              rr!zVSVersionInfo.fromRaw^s€Ü)4°TÓ):Ñ&ˆÑ &ˆFF˜E 2ä a‹Lˆä “?ˆŒØ H‰H× Ñ ˜T 1Ó %ˆØ ˆØ&Šj؈AÜ.9¸$ÀÓ.BÑ +ˆAÑ+˜ $¨Øx‰x‹zÐ-Ò-Ü$Ó&Ø—K‘K ¨°"°d¸A¸qÀ7¹{ÓKØ—    ‘    × Ñ  Ô%Ø‘ä!“mØ—K‘K ¨°"°d¸A¸qÀ7¹{ÓKØ—    ‘    × Ñ  Ô%ؐؐG‘ ˆAܘ!“ ˆAð&‹jðˆrcóΗtd«}|jj«}t|«}d}dt|«zdz}d}|dzrd}|t|«z|z}d}|dzrd}dj    |j
Dcgc]}|j«‘Œc}«}    |t|«zt|    «z}t jd|||«|zdz|z|z|z|    zScc}w)    NÚVS_VERSION_INFOrérréóÚHHH)rr2ÚtoRawrÚjoinr3ÚstructÚpack)
r4Úraw_nameÚrawffir@Útypr?ÚpadÚpad2ÚkidÚtmps
          rrPzVSVersionInfo.toRawwsé€ÜÐ+Ó,ˆØ—‘—‘Ó!ˆÜV“ˆØˆØ”S˜“]Ñ" QÑ&ˆØˆØ AŠ:؈CØœ#˜c›(Ñ" VÑ+ˆØˆØ AŠ:؈D؏h‰h¨t¯y©yÖ9¨˜Ÿ    ™     Ò9Ó:ˆØœ#˜d›)Ñ#¤c¨#£hÑ.ˆÜ{‰{˜5 &¨&°#Ó6¸ÑAÀKÑOÐRUÑUÐX^Ñ^ÐaeÑeÐhkÑkÐkùò:sÂC"có(—|j«|k(Sr0©rP©r4Úothers  rÚ__eq__zVSVersionInfo.__eq__ˆó€Øz‰z‹|˜uÑ$Ð$rc ó—|dz}|jDcgc]}|j|dz«‘Œ}}dj|«}djddddd|d    |jj|«›d
z|d z||d zd g
«Scc}w)Nú  ú, 
ú
z# UTF-8ú#z3# For more details about fixed file info 'ffi' see:z7# http://msdn.microsoft.com/en-us/library/ms646997.aspxzVSVersionInfo(zffi=ú,zkids=[ú]ú))r3Ú__str__rQr2)r4ÚindentrYrZs    rrizVSVersionInfo.__str__‹sž€Ø˜$‘ˆØ59·Y±YÖ?¨cˆs{‰{˜6 D™=Õ)Ð?ˆÐ?؏k‰k˜#ӈ؏y‰yØ Ø Ø AØ EØ Ø t˜DŸH™H×,Ñ,¨VÓ4Ð5°QÐ7Ñ 7Ø XÑ Ø Ø S‰LØ ð 
ó  ð      ùò@s”Bcó<—d|j›d|j›dS)Nzversioninfo.VSVersionInfo(ffi=z, kids=rhr1©r4s rÚ__repr__zVSVersionInfo.__repr__œsØ?C¿x»xÈÏËÐSÐSr©NN©Ú©
Ú__name__Ú
__module__Ú __qualname__Ú__doc__r5r!rPr_rirmr+rrr r Ms'„ñ óòò2lò"%ó ó"Trr có|—|dz}tjd|||«\}}}t||||z«\}}|||||ffS)NrLÚ3H)rRÚunpackÚ parseUString)r&Ústartr>ÚwLengthÚ wValueLengthrArs       rr9r9 sR€Ø ‰    €AÜ%+§]¡]°4¸¸eÀA¸Ó%GÑ"€Wˆl˜Eܘ4  A¨¡KÓ0G€A€tØ ˆw˜  e¨TÐ2Ð 2Ð2rcóx—|}||kr|||dzdk(rn |dz }||krŒ|||jd«}|dz }||fS)NrrNr)Údecode)r&rzÚlimitr>rs     rryry§s_€Ø €AØ
ˆeŠ)Ø !a‘%ˆ=˜KÒ 'Ø Ø    ˆQ‰ˆð ˆe‹)𠐐aˆ=× Ñ  
Ó +€D؈F€AØ ˆdˆ7€NrcóH—eZdZdZ                                d    d„Zd„Zd„Zd„Zd
d„Zd„Z    y) r:aü
    DWORD dwSignature;        //Contains the value 0xFEEFO4BD
    DWORD dwStrucVersion;     // binary version number of this structure.
                              // The high-order word of this member contains
                              // the major version number, and the low-order
                              // word contains the minor version number.
    DWORD dwFileVersionMS;    // most significant 32 bits of the file's binary
                              // version number
    DWORD dwFileVersionLS;    //
    DWORD dwProductVersionMS; // most significant 32 bits of the binary version
                              // number of the product with which this file was
                              // distributed
    DWORD dwProductVersionLS; //
    DWORD dwFileFlagsMask;    // bitmask that specifies the valid bits in
                              // dwFileFlags. A bit is valid only if it was
                              // defined when the file was created.
    DWORD dwFileFlags;        // VS_FF_DEBUG, VS_FF_PATCHED etc.
    DWORD dwFileOS;           // VOS_NT, VOS_WINDOWS32 etc.
    DWORD dwFileType;         // VFT_APP etc.
    DWORD dwFileSubtype;      // 0 unless VFT_DRV or VFT_FONT or VFT_VXD
    DWORD dwFileDateMS;
    DWORD dwFileDateLS;
    c    ó>—d|_d|_|ddz|ddzz|_|ddz|ddzz|_|ddz|ddzz|_|ddz|ddzz|_||_||_||_||_    ||_
|d|_ |d|_ y)    Nl½Þ}iréééÿÿrr*) ÚsigÚ strucVersionÚ fileVersionMSÚ fileVersionLSÚproductVersionMSÚproductVersionLSÚ fileFlagsMaskÚ    fileFlagsÚfileOSÚfileTypeÚ fileSubtypeÚ
fileDateMSÚ
fileDateLS)    r4ÚfileversÚprodversÚmaskÚflagsÚOSrŽÚsubtypeÚdates             rr5zFixedFileInfo.__init__ÊsʀðˆŒØ#ˆÔØ& q™k¨RÑ/°H¸Q±KÀ&Ñ4HÑIˆÔØ& q™k¨RÑ/°H¸Q±KÀ&Ñ4HÑIˆÔØ!)¨!¡°Ñ!2°xÀ±{ÀVÑ7KÑ LˆÔØ!)¨!¡°Ñ!2°xÀ±{ÀVÑ7KÑ LˆÔØ!ˆÔ؈ŒØˆŒ Ø ˆŒ Ø"ˆÔؘq™'ˆŒØ˜q™'ˆrcóâ—tjd|||dz«\ |_|_|_|_|_|_|_|_    |_
|_ |_ |_ |_|dzS)NÚ13Lé4)rRrxr…r†r‡rˆr‰rŠr‹rŒrrŽrrr‘)r4r&r>s   rr!zFixedFileInfo.fromRawãsr€ô M‰M˜%  a¨¨B© Ó 0ñ    
Ø ŒHØ Ô Ø Ô Ø Ô Ø Ô !Ø Ô !Ø Ô Ø ŒNØ ŒKØ ŒMØ Ô Ø ŒOØ ŒOà2‰vˆ rcóJ—tjd|j|j|j|j
|j |j|j|j|j|j|j|j|j«S)Nrš)rRrSr…r†r‡rˆr‰rŠr‹rŒrrŽrrr‘rls rrPzFixedFileInfo.toRawõs€Ü{‰{Ø Ø H‰HØ × Ñ Ø × Ñ Ø × Ñ Ø × !Ñ !Ø × !Ñ !Ø × Ñ Ø N‰NØ K‰KØ M‰MØ × Ñ Ø O‰OØ O‰Oó
ð    
rcó(—|j«|k(Sr0r\r]s  rr_zFixedFileInfo.__eq__r`rcód—|jdz    |jdz|jdz    |jdzf}|jdz    |jdz|jdz    |jdzf}|j|j
f}dddd|›dd|›dd    d
t |j«zd d t |j«zd ddt |j«zdddt |j«zdddt |j«zdd|›dg}d|›dj|«S)Nr‚r„zFixedFileInfo(zN# filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4)z!# Set not needed items to zero 0.z    filevers=rfz    prodvers=z;# Contains a bitmask that specifies the valid bits 'flags'rzmask=%s,zG# Contains a bitmask that specifies the Boolean attributes of the file.z    flags=%s,z8# The operating system for which this file was designed.z-# 0x4 - NT and there is no need to change it.zOS=%s,z# The general type of file.z## 0x1 - the file is an application.z fileType=%s,z# The function of the file.z5# 0x0 - the function is not defined for this fileTypez subtype=%s,z# Creation date and time stamp.zdate=rhrdrb) r‡rˆr‰rŠrr‘Úhexr‹rŒrrŽrrQ)r4rjÚfvÚpvÚfdrZs      rrizFixedFileInfo.__str__
sF€à × Ñ  "Ñ $ d×&8Ñ&8¸6Ñ&AØ × Ñ  "Ñ $ d×&8Ñ&8¸6Ñ&Að
ˆð
× !Ñ ! RÑ '¨×)>Ñ)>ÀÑ)GØ × !Ñ ! RÑ '¨×)>Ñ)>ÀÑ)Gð
ˆðo‰o˜tŸ™Ð /ˆà Ø \Ù /Ú Ñ "Ú Ð "Ø IØ œ˜T×/Ñ/Ó0Ñ 0Ø UØ œ#˜dŸn™nÓ-Ñ -Ø FØ ;Ø ”s˜4Ÿ;™;Ó'Ñ 'Ø )Ø 1Ø œS §¡Ó/Ñ /Ø )Ø CØ œC × 0Ñ 0Ó1Ñ 1Ù -ÙÐ Ø ð+
ˆð.F8˜2ˆ×#Ñ# CÓ(Ð(rc    ó˜—|jdz    |jdz|jdz    |jdzf}|jdz    |jdz|jdz    |jdzf}|j|j
f}d|||j |j|j|j|j|fzS)Nr‚r„zwversioninfo.FixedFileInfo(filevers=%r, prodvers=%r, mask=0x%x, flags=0x%x, OS=0x%x, fileType=%r, subtype=0x%x, date=%r)) r‡rˆr‰rŠrr‘r‹rŒrrŽr)r4r r¡r¢s    rrmzFixedFileInfo.__repr__-sҀà × Ñ  "Ñ $ d×&8Ñ&8¸6Ñ&AØ × Ñ  "Ñ $ d×&8Ñ&8¸6Ñ&Að
ˆð
× !Ñ ! RÑ '¨×)>Ñ)>ÀÑ)GØ × !Ñ ! RÑ '¨×)>Ñ)>ÀÑ)Gð
ˆðo‰o˜tŸ™Ð /ˆð 2ðT×'Ñ'¨¯©¸¿¹ÀdÇmÁmÐUY×UeÑUeÐgiÐ jñ kð    
rN)©rrrrr¤é?rirƒr)rrrorqr+rrr:r:²s@„ñð2ØØ ØØ ØØØ ó"ò2ò$
ò$%ó!)óF
rr:có8—eZdZdZd    d„Zd„Zd„Zd„Zd
d„Zd„Z    y) r8a»
    WORD        wLength;      // length of the version resource
    WORD        wValueLength; // length of the Value member in the current
                              // VS_VERSION_INFO structure
    WORD        wType;        // 1 means text, 0 means binary
    WCHAR       szKey[];      // Contains the Unicode string 'StringFileInfo'.
    WORD        Padding[];
    StringTable Children[];   // list of zero or more String structures
    Ncó(—d|_|xsg|_yr7©Únamer3©r4r3s  rr5zStringFileInfo.__init__Is€Ø$ˆŒ    Ø’J˜Bˆ    rcóž—||_||kr@t«}|j|||«}|jj    |«|}||krŒ@|Sr0)r©Ú StringTabler!r3r<)    r4r?r@r©r&r>rÚstrCs             rr!zStringFileInfo.fromRawMsP€ØˆŒ    Ø%ŠiÜ“ˆBØ—
‘
˜4  EÓ*ˆAØ I‰I× Ñ ˜RÔ  ØˆAð    %‹ið
ˆrcó\—t|j«}d}d}dt|«zdz}d}|dzrd}dj|jDcgc]}|j «‘Œc}«}|t|«zt|«z}t jd|||«|zdz|z|zScc}w)    NrrƒrLrrrMrNrO)rr©rrQr3rPrRrS)r4rTr@rVr?rWrYrZs        rrPzStringFileInfo.toRawVs¨€Ü˜$Ÿ)™)Ó$ˆØˆØˆØ”S˜“]Ñ" QÑ&ˆØˆØ AŠ:؈C؏h‰h¨t¯y©yÖ9¨˜Ÿ    ™     Ò9Ó:ˆØœ#˜c›(Ñ"¤S¨£XÑ-ˆÜ{‰{˜5 &¨&°#Ó6¸ÑAÀKÑOÐRUÑUÐX[Ñ[Ð[ùò:sÁ B)có(—|j«|k(Sr0r\r]s  rr_zStringFileInfo.__eq__br`rcór‡—|dzŠdjˆfd„|jD««}|›d‰›d|›d‰›dS)Nrbrcc3ó@•K—|]}|j‰«–—Œy­wr0)ri)Ú.0rYÚ
new_indents  €rú    <genexpr>z)StringFileInfo.__str__.<locals>.<genexpr>gsøèø€ÒG°c˜#Ÿ+™+ j×1ÑGùsƒzStringFileInfo(
z[
rdú])©rQr3)r4rjrZr³s   @rrizStringFileInfo.__str__esDø€Ø˜d‘]ˆ
؏k‰kÓG¸T¿Y¹YÔGÓGˆØÐ*¨:¨,°c¸#¸¸bÀÀ ÈBÐOÐOrcó —d|jzS)Nzversioninfo.StringFileInfo(%r)©r3rls rrmzStringFileInfo.__repr__js€Ø/°$·)±)Ñ;Ð;rr0rorqr+rrr8r8?s'„ñóòò
\ò%óPó
<rr8có8—eZdZdZd    d„Zd„Zd„Zd„Zd
d„Zd„Z    y) r¬z
    WORD   wLength;
    WORD   wValueLength;
    WORD   wType;
    WCHAR  szKey[];
    String Children[];    // list of zero or more String structures.
    Ncó0—|xsd|_|xsg|_y©Nrpr¨©r4r©r3s   rr5zStringTable.__init__v󀨒J˜BˆŒ    Ø’J˜Bˆ    rcóð—t|||«\}\}}}|_t|«}||krKt«}|j    |||«}|}|j
j |«t|«}||krŒK|Sr0)Ú parseCodePager©r-Ú StringStructr!r3r<)    r4r&r>rÚcpsublenÚcpwValueLengthÚcpwTypeÚssrCs             rr!zStringTable.fromRawzs{€Ü<IÈ$ÐPQÐSXÓ<YÑ9ˆÑ 9ˆHn g¨t¬yÜ a‹LˆØ%ŠiÜ“ˆBØ—
‘
˜4  EÓ*ˆA؈AØ I‰I× Ñ ˜RÔ  Ü˜!“ ˆAð %‹ið ˆrcód—t|j«}d}d}dt|«zdz}g}|jD]6}|j    «}t|«dzr|dz}|j |«Œ8dj |«}|t|«z }tjd|||«|zdz|zS)    NrrƒrLrrMrNrrO)    rr©rr3rPr<rQrRrS)r4rTr@rVr?rZrYÚraws        rrPzStringTable.toRaw…s²€Ü˜$Ÿ)™)Ó$ˆØˆØˆØ”S˜“]Ñ" QÑ&ˆØˆØ—9‘9ò    ˆCØ—)‘)“+ˆCܐ3‹x˜!Š|ؘKÑ'Ø J‰JsOð        ð
h‰hs‹mˆØ”#c“(ш܏{‰{˜5 &¨&°#Ó6¸ÑAÀKÑOÐRUÑUÐUrcó(—|j«|k(Sr0r\r]s  rr_zStringTable.__eq__”r`rc
óŒ—|dz}d|zjd„|jD««}|›d|›d|j›d|›d|›d
S)    Nrbz,
c3ó2K—|]}t|«–—Œy­wr0©Ústr©r²rYs  rr´z&StringTable.__str__.<locals>.<genexpr>™sèø€Ò'F°S¬¨C¯Ñ'Fùó‚z StringTable(
ú'z',
ú[rµ)rQr3r©)r4rjr³rZs    rrizStringTable.__str__—sV€Ø˜d‘]ˆ
ؐzÑ!×'Ñ'Ñ'F¸D¿I¹IÔ'FÓFˆØ˜¨
 |°1°T·Y±Y°K¸tÀJÀ<ÈqÐQTÐPUÐUWÐXÐXrcó<—d|j›d|j›dS)Nzversioninfo.StringTable(ú, rhr¨rls rrmzStringTable.__repr__œsØ48·I³I¸t¿y»yÐIÐIrrnrorqr+rrr¬r¬ns(„ñóò    ò Vò%óYó
Jrr¬có8—eZdZdZd    d„Zd„Zd„Zd„Zd
d„Zd„Z    y) rÀz‚
    WORD   wLength;
    WORD   wValueLength;
    WORD   wType;
    WCHAR  szKey[];
    WORD   Padding[];
    String Value[];
    Ncó0—|xsd|_|xsd|_yr»©r©Úval)r4r©rÕs   rr5zStringStruct.__init__©s€Ø’J˜BˆŒ    Ø’9˜"ˆrcó‚—t||«\}\}}}|_||z}t|«}t|||«\}|_|Sr0)r9r©r-ryrÕ)r4r&r>rr?r@rVs       rr!zStringStruct.fromRaw­sI€Ü.9¸$ÀÓ.BÑ+ˆÑ +ˆFF˜C ¤ØF‘
ˆÜ a‹LˆÜ" 4¨¨EÓ2‰ ˆˆ4Œ8؈rcó4—t|j«}t|j«}t|j«dz}d}dt|«zdz}d}|dzrd}|t|«z|dzz}t    j
d|||«|zdz|z|zdzS)NrƒrLrrrMrNrO)rr©rÕrrRrS)r4rTÚraw_valr@rVr?rWs       rrPzStringStruct.toRaw´s¡€Ü˜$Ÿ)™)Ó$ˆÜ˜Ÿ™Ó"ˆäT—X‘X“ Ñ"ˆØˆØ”S˜“]Ñ" QÑ&ˆØˆØ AŠ:؈CØœ#˜c›(Ñ" f¨q¡jÑ1ˆÜ{‰{˜5 &¨&°#Ó6¸ÑAÀKÑOÐRUÑUÐX_Ñ_ÐbmÑmÐmrcó(—|j«|k(Sr0r\r]s  rr_zStringStruct.__eq__Ár`rcó<—d|j›d|j›dS)Nz StringStruct(rÑrhrÔ©r4rjs  rrizStringStruct.__str__ÄsØ)-¯«°D·H³HÐ=Ð=rcó<—d|j›d|j›dS)Nzversioninfo.StringStruct(rÑrhrÔrls rrmzStringStruct.__repr__ÇsØ59·Y³YÀÇÃÐIÐIrrnrorqr+rrrÀrÀ s'„ñóòò nò%ó>óJrrÀcó:—t||«\}\}}}}|||||ffSr0)r9)r&r>rr?r|rArBs       rr¿r¿Ës0€Ü+6°t¸QÓ+?Ñ(€AÑ(ˆ ˜e RØ ˆv| U¨BÐ/Ð /Ð/rcó8—eZdZdZd    d„Zd„Zd„Zd„Zd
d„Zd„Z    y) r=a—
    WORD  wLength;        // length of the version resource
    WORD  wValueLength;   // length of the Value member in the current
                          // VS_VERSION_INFO structure
    WORD  wType;          // 1 means text, 0 means binary
    WCHAR szKey[];        // Contains the Unicode string 'VarFileInfo'.
    WORD  Padding[];
    Var   Children[];     // list of zero or more Var structures
    Ncó—|xsg|_yr0r¸rªs  rr5zVarFileInfo.__init__Ús €Ø’J˜Bˆ    rcóЗ||_||_||_t|«}||kr@t    «}|j |||«}|j j|«|}||krŒ@|Sr0)r?r@r©r-Ú    VarStructr!r3r<)    r4r?r@r©r&r>rÚvsrCs             rr!zVarFileInfo.fromRawÝsg€ØˆŒ ؈Œ ؈Œ    Ü a‹LˆØ%ŠiÜ“ˆBØ—
‘
˜4  EÓ*ˆAØ I‰I× Ñ ˜RÔ  ØˆAð    %‹ið
ˆrcóÄ—d|_d|_d|_t|j«}dt    |«zdz}d}|dzrd}dj |j Dcgc]}|j«‘Œc}«}|t    |«zt    |«z|_tjd    |j|j|j«|zdz|z|zScc}w)
Nrrƒr=rLrrrMrNrO) r@rAr©rrrQr3rPr?rRrS©r4rTr?rWrYrZs      rrPzVarFileInfo.toRawés€ØˆŒ ؈Œ
Ø!ˆŒ    Ü˜$Ÿ)™)Ó$ˆØ”S˜“]Ñ" QÑ&ˆØˆØ AŠ:؈C؏h‰h¨t¯y©yÖ9¨˜Ÿ    ™     Ò9Ó:ˆØœs 3›xÑ'¬#¨c«(Ñ2ˆŒ ܏{‰{˜5 $§+¡+¨t¯{©{¸D¿J¹JÓGÈ(ÑRÐU`Ñ`ÐcfÑfÐilÑlÐlùò:sÁCcó(—|j«|k(Sr0r\r]s  rr_zVarFileInfo.__eq__ör`rcóR—|ddjd„|jD««zzS)NzVarFileInfo([%s])rÑc3ó2K—|]}t|«–—Œy­wr0rÊrÌs  rr´z&VarFileInfo.__str__.<locals>.<genexpr>úsèø€Ò7VÀS¼¸C¿Ñ7VùrÍr¶rÛs  rrizVarFileInfo.__str__ùs&€ØÐ+¨d¯i©iÑ7VÈDÏIÉIÔ7VÓ.VÑVÑVÐVrcó —d|jzS)Nzversioninfo.VarFileInfo(%r)r¸rls rrmzVarFileInfo.__repr__üs€Ø,¨t¯y©yÑ8Ð8rr0rorqr+rrr=r=Ðs'„ñóò
ò mò%óWó9rr=có8—eZdZdZd    d„Zd„Zd„Zd„Zd
d„Zd„Z    y) ráa
    WORD  wLength;        // length of the version resource
    WORD  wValueLength;   // length of the Value member in the current
                          // VS_VERSION_INFO structure
    WORD  wType;          // 1 means text, 0 means binary
    WCHAR szKey[];        // Contains the Unicode string 'Translation'
                          // or a user-defined key string value
    WORD  Padding[];      //
    WORD  Value[];        // list of one or more values that are language
                          // and code-page identifiers
    Ncó0—|xsd|_|xsg|_yr»r¨r¼s   rr5zVarStruct.__init__ r½rcó"—t||«\}\|_|_|_|_t |«}t d|jd«D]A}tjd|||dz«d}|jj|«|dz }ŒC|S)NrrÚH) r9r?r|rAr©r-ÚrangerRrxr3r<)r4r&r>rrCrYs      rr!zVarStruct.fromRaws€ÜEPÐQUÐWXÓEYÑBˆÑ BˆDŒK˜Ô*¨D¬J¸¼    Ü a‹LˆÜq˜$×+Ñ+¨QÓ/ò    ˆAÜ—-‘-  T¨!¨A°©E ]Ó3°AÑ6ˆCØ I‰I× Ñ ˜SÔ !Ø ‰F‰Að    ðˆrc    óð—t|j«dz|_d|_t    |j
«}dt|«zdz}d}|dzrd}|t|«z|jz|_dj|jDcgc]}tjd|«‘Œc}«}tjd|j |j|j«|zdz|z|zScc}w)    NrrrLrrMrNrìrO)
rr3r|rArr©r?rQrRrSräs      rrPzVarStruct.toRawsԀÜ §    ¡    ›N¨QÑ.ˆÔ؈Œ
ܘ$Ÿ)™)Ó$ˆØ”S˜“]Ñ" QÑ&ˆØˆØ AŠ:؈CØœs 3›xÑ'¨$×*;Ñ*;Ñ;ˆŒ ؏h‰h¸¿¹ÖC°#œŸ ™  C¨Õ-ÒCÓDˆÜ{‰{˜5 $§+¡+¨t×/@Ñ/@À$Ç*Á*ÓMÐPXÑXÐ[fÑfÐilÑlÐorÑrÐrùòDs C3có(—|j«|k(Sr0r\r]s  rr_zVarStruct.__eq__%r`rcó<—d|j›d|j›dS)Nz VarStruct('z', rhr¨rÛs  rrizVarStruct.__str__(sØ(,¯    «    °4·9³9Ð=Ð=rcó<—d|j›d|j›dS)Nzversioninfo.VarStruct(rÑrhr¨rls rrmzVarStruct.__repr__+sØ26·)³)¸T¿Y»YÐGÐGrrnrorqr+rrrárás'„ñ
óòò
sò%ó>óHrrácó0—ddlmcm}t|d«5}|j    |j ««}ddd«    t «}t|t«sJdt|«›«‚|S#1swYŒ:xYw#t$r}td«|‚d}~wwxYw)z±
    Load the `VSVersionInfo` structure from its string-based (`VSVersionInfo.__str__`) serialization by reading the
    text from the file and running it through `eval()`.
    rNÚrbzCFailed to deserialize VSVersionInfo from text-based representation!zALoaded incompatible structure type! Expected VSVersionInfo, got: ) ÚPyInstaller.utils.miscÚutilsÚmiscÚopenr~ÚreadÚevalr Ú
ValueErrorÚ
isinstancer Útype)r Ú    miscutilsÚfprr'Úes      rÚ load_version_info_from_text_filer/s£€÷/Ð.Ü     ˆh˜Ó    ð+ Ø×Ñ §¡£    Ó*ˆ÷+ðgܐD‹zˆô
dœMÔ *ð[Ø
KÌDÐQUËJÈ>ÐZó[Ð *ð €K÷+ð+ûô ògÜÐ^Ó_ÐefÐfûðgús"– A/¿ A;Á/A8Á;    B BÂBcó:—t|t«sJ‚tj|d¬«}|j    «}|j «t j|d«}t j|tjdd|j««t j|d«|ratj|d¬«}|j    «}|j «|s't|d«5}|j|«ddd«yyy#1swYyxYw)NTrrrrƒÚab)rûr rrÚ get_overlayÚcloserÚBeginUpdateResourceÚUpdateResourcerrPÚEndUpdateResourcer÷Úwrite)r#r'rÚoverlay_beforeÚhdstÚ overlay_afterÚexefs       rÚ write_version_info_to_executabler Gsé€Ü dœMÔ *Ð*Ð *ô
‰<¨4Ô    0€BØ—^‘^Ó%€N؇HH„Jä × 'Ñ '¨ °aÓ 8€DÜ ×јD¤&×"6Ñ"6°|Ñ"DÀaÈÏÉËÔVÜ ×јt QÔ'áä Y‰Y|¨tÔ 4ˆØŸ™Ó(ˆ Ø
‰Œ
ñܐl DÓ)ð +¨TØ—
‘
˜>Ô*÷ +ð +ðð÷ +ð +ús Ã4DÄD)r)rRrÚPyInstaller.compatrrrrr(r-r r9ryr:r8r¬rÀr¿r=rárr r+rrú<module>rsžðóã å'òð2Ðò#ò ò $÷PTñPTóf3ò÷J
ñJ
÷Z,<ñ,<÷^/Jñ/J÷d(Jñ(JòV0÷
-9ñ-9÷`,Hñ,Hò^ó0+r