[Distutils] Mac mods for distutils

Jack Jansen jack@oratrix.nl
Mon Nov 20 05:04:02 2000


This is a multipart MIME message.

--==_Exmh_11048233920
Content-Type: text/plain; charset=us-ascii

[Hmm, my address for Greg, gward@python.net, appears outdated. So I'm sending 
it here in stead]

Greg,
here are two diffs and a new file for distutils on the mac. The ccompiler.py 
diff adds support for the MetroWerks compiler, the dist.py diff moves the Mac 
argument dialog code to a different place (apparently a few things have 
changed, it didn't work anymore in the old place).

There's also a new file mwerkscompiler.py which is the compiler.py 
implementation for Metrowerks Codewarrior.

Oh yes: the diffs are against the Python CVS tree, not the distutils cvs tree. 
Let me know if that's a problem and I'll convert them to the other one.
--
Jack Jansen             | ++++ stop the execution of Mumia Abu-Jamal ++++
Jack.Jansen@oratrix.com | ++++ if you agree copy these lines to your sig ++++
www.oratrix.nl/~jack    | ++++ see http://www.xs4all.nl/~tank/ ++++


--==_Exmh_11048233920
Content-Type: text/plain ; name="distutils.diff"; charset=us-ascii
Content-Description: distutils.diff
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="distutils.diff"

Y3ZzIC16OSBkaWZmIGNjb21waWxlci5weSAoaW4gZGlyZWN0b3J5IE1hY2ludG9zaCBIRDpT
V2RldjpKYWNrOlB5dGhvbjpMaWI6ZGlzdHV0aWxzOikKSW5kZXg6IGNjb21waWxlci5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zzcm9vdC9weXRob24vcHl0aG9uL2Rpc3Qvc3Jj
L0xpYi9kaXN0dXRpbHMvY2NvbXBpbGVyLnB5LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM1
CmRpZmYgLWMgLXIxLjM1IGNjb21waWxlci5weQoqKiogY2NvbXBpbGVyLnB5CTIwMDAvMDkv
MjcgMDI6MjQ6MjEJMS4zNQotLS0gY2NvbXBpbGVyLnB5CTIwMDAvMTEvMTkgMjI6NDk6MzIK
KioqKioqKioqKioqKioqCioqKiA4MzgsODQzICoqKioKLS0tIDgzOCw4NDQgLS0tLQogICMg
dGhhdCBwbGF0Zm9ybS4KICBkZWZhdWx0X2NvbXBpbGVyID0geyAncG9zaXgnOiAndW5peCcs
CiAgICAgICAgICAgICAgICAgICAgICAgJ250JzogJ21zdmMnLAorICAgICAgICAgICAgICAg
ICAgICAgICdtYWMnOiAnbXdlcmtzJywKICAgICAgICAgICAgICAgICAgICAgfQogIAogICMg
TWFwIGNvbXBpbGVyIHR5cGVzIHRvIChtb2R1bGVfbmFtZSwgY2xhc3NfbmFtZSkgcGFpcnMg
LS0gaWUuIHdoZXJlIHRvCioqKioqKioqKioqKioqKgoqKiogODUzLDg1OCAqKioqCi0tLSA4
NTQsODYxIC0tLS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pbmd3MzIg
cG9ydCBvZiBHTlUgQyBDb21waWxlciBmb3IgV2luMzIiKSwKICAgICAgICAgICAgICAgICAg
ICAgJ2JjcHAnOiAgICAoJ2JjcHBjb21waWxlcicsICdCQ1BQQ29tcGlsZXInLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiQm9ybGFuZCBDKysgQ29tcGlsZXIiKSwKKyAg
ICAgICAgICAgICAgICAgICAgJ213ZXJrcyc6ICAoJ213ZXJrc2NvbXBpbGVyJywgJ01XZXJr
c0NvbXBpbGVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1ldHJvV2Vy
a3MgQ29kZVdhcnJpb3IiKSwKICAgICAgICAgICAgICAgICAgIH0KICAKICBkZWYgc2hvd19j
b21waWxlcnMoKToKCioqKioqQ1ZTIGV4aXRlZCBub3JtYWxseSB3aXRoIGNvZGUgMSoqKioq
CgpjdnMgLXo5IGRpZmYgZGlzdC5weSAoaW4gZGlyZWN0b3J5IE1hY2ludG9zaCBIRDpTV2Rl
djpKYWNrOlB5dGhvbjpMaWI6ZGlzdHV0aWxzOikKSW5kZXg6IGRpc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2c3Jvb3QvcHl0aG9uL3B5dGhvbi9kaXN0L3NyYy9MaWIvZGlz
dHV0aWxzL2Rpc3QucHksdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDIKZGlmZiAtYyAtcjEu
NDIgZGlzdC5weQoqKiogZGlzdC5weQkyMDAwLzExLzExIDAyOjQ3OjExCTEuNDIKLS0tIGRp
c3QucHkJMjAwMC8xMS8xOSAyMjo0OTo1MAoqKioqKioqKioqKioqKioKKioqIDE3MiwxODMg
KioqKgogICAgICAgICAgIyBvcGVyYXRpb25zLCB3ZSBqdXN0IGNoZWNrIHRoZSAnaGF2ZV9y
dW4nIGRpY3Rpb25hcnkgYW5kIGNhcnJ5IG9uLgogICAgICAgICAgIyBJdCdzIG9ubHkgc2Fm
ZSB0byBxdWVyeSAnaGF2ZV9ydW4nIGZvciBhIGNvbW1hbmQgY2xhc3MgdGhhdCBoYXMKICAg
ICAgICAgICMgYmVlbiBpbnN0YW50aWF0ZWQgLS0gYSBmYWxzZSB2YWx1ZSB3aWxsIGJlIGlu
c2VydGVkIHdoZW4gdGhlCi0gICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ21hYyc6Ci0g
ICAgICAgICAgICAgaW1wb3J0IEVhc3lEaWFsb2dzCi0gICAgICAgICAgICAgY21kbGlzdCA9
IHNlbGYuZ2V0X2NvbW1hbmRfbGlzdCgpCi0gICAgICAgICAgICAgc2VsZi5zY3JpcHRfYXJn
cyA9IEVhc3lEaWFsb2dzLkdldEFyZ3YoCi0gICAgICAgICAgICAgICAgIHNlbGYuZ2xvYmFs
X29wdGlvbnMgKyBzZWxmLmRpc3BsYXlfb3B0aW9ucywgY21kbGlzdCkKLSAKICAgICAgICAg
ICMgY29tbWFuZCBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHJlcGxhY2VkIHdpdGggYSB0cnVl
IHZhbHVlIHdoZW4KICAgICAgICAgICMgdGhlIGNvbW1hbmQgaXMgc3VjY2Vzc2Z1bGx5IHJ1
bi4gIFRodXMgaXQncyBwcm9iYWJseSBiZXN0IHRvIHVzZQogICAgICAgICAgIyAnLmdldCgp
JyByYXRoZXIgdGhhbiBhIHN0cmFpZ2h0IGxvb2t1cC4KLS0tIDE3MiwxNzcgLS0tLQoqKioq
KioqKioqKioqKioKKioqIDM3NSwzODAgKioqKgotLS0gMzY5LDM4NCAtLS0tCiAgICAgICAg
ICBleGVjdXRlIGNvbW1hbmRzIChjdXJyZW50bHksIHRoaXMgb25seSBoYXBwZW5zIGlmIHVz
ZXIgYXNrcyBmb3IKICAgICAgICAgIGhlbHApLgogICAgICAgICAgIiIiCisgICAgICAgICAj
CisgICAgICAgICAjIFdlIG5vdyBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBzaG93IHRo
ZSBNYWNpbnRvc2ggZGlhbG9nIHRoYXQgYWxsb3dzCisgICAgICAgICAjIHRoZSB1c2VyIHRv
IGludGVyYWN0aXZlbHkgc3BlY2lmeSB0aGUgImNvbW1hbmQgbGluZSIuCisgICAgICAgICAj
CisgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ21hYyc6CisgICAgICAgICAgICAgaW1w
b3J0IEVhc3lEaWFsb2dzCisgICAgICAgICAgICAgY21kbGlzdCA9IHNlbGYuZ2V0X2NvbW1h
bmRfbGlzdCgpCisgICAgICAgICAgICAgc2VsZi5zY3JpcHRfYXJncyA9IEVhc3lEaWFsb2dz
LkdldEFyZ3YoCisgICAgICAgICAgICAgICAgIHNlbGYuZ2xvYmFsX29wdGlvbnMgKyBzZWxm
LmRpc3BsYXlfb3B0aW9ucywgY21kbGlzdCkKKyAgCiAgICAgICAgICAjIFdlIGhhdmUgdG8g
cGFyc2UgdGhlIGNvbW1hbmQgbGluZSBhIGJpdCBhdCBhIHRpbWUgLS0gZ2xvYmFsCiAgICAg
ICAgICAjIG9wdGlvbnMsIHRoZW4gdGhlIGZpcnN0IGNvbW1hbmQsIHRoZW4gaXRzIG9wdGlv
bnMsIGFuZCBzbyBvbiAtLQogICAgICAgICAgIyBiZWNhdXNlIGVhY2ggY29tbWFuZCB3aWxs
IGJlIGhhbmRsZWQgYnkgYSBkaWZmZXJlbnQgY2xhc3MsIGFuZAoKKioqKipDVlMgZXhpdGVk
IG5vcm1hbGx5IHdpdGggY29kZSAxKioqKioKCg==

--==_Exmh_11048233920
Content-Type: text/plain ; name="mwerkscompiler.py"; charset=us-ascii
Content-Description: mwerkscompiler.py
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="mwerkscompiler.py"

IiIiZGlzdHV0aWxzLm13ZXJrc2NvbXBpbGVyCgpDb250YWlucyBNV2Vya3NDb21waWxlciwg
YW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGFic3RyYWN0IENDb21waWxlciBjbGFzcwpmb3Ig
TWV0cm9XZXJrcyBDb2RlV2FycmlvciBvbiB0aGUgTWFjaW50b3NoLiBOZWVkcyB3b3JrIHRv
IHN1cHBvcnQgQ1cgb24KV2luZG93cy4iIiIKCmltcG9ydCBzeXMsIG9zLCBzdHJpbmcKZnJv
bSB0eXBlcyBpbXBvcnQgKgpmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IFwKICAgICBE
aXN0dXRpbHNFeGVjRXJyb3IsIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IsIFwKICAgICBDb21w
aWxlRXJyb3IsIExpYkVycm9yLCBMaW5rRXJyb3IKZnJvbSBkaXN0dXRpbHMuY2NvbXBpbGVy
IGltcG9ydCBcCiAgICAgQ0NvbXBpbGVyLCBnZW5fcHJlcHJvY2Vzc19vcHRpb25zLCBnZW5f
bGliX29wdGlvbnMKaW1wb3J0IGRpc3R1dGlscy51dGlsCmltcG9ydCBkaXN0dXRpbHMuZGly
X3V0aWwKaW1wb3J0IG1rY3dwcm9qZWN0CgpjbGFzcyBNV2Vya3NDb21waWxlciAoQ0NvbXBp
bGVyKSA6CiAgICAiIiJDb25jcmV0ZSBjbGFzcyB0aGF0IGltcGxlbWVudHMgYW4gaW50ZXJm
YWNlIHRvIE1pY3Jvc29mdCBWaXN1YWwgQysrLAogICAgICAgYXMgZGVmaW5lZCBieSB0aGUg
Q0NvbXBpbGVyIGFic3RyYWN0IGNsYXNzLiIiIgoKICAgIGNvbXBpbGVyX3R5cGUgPSAnbXdl
cmtzJwoKICAgICMgSnVzdCBzZXQgdGhpcyBzbyBDQ29tcGlsZXIncyBjb25zdHJ1Y3RvciBk
b2Vzbid0IGJhcmYuICBXZSBjdXJyZW50bHkKICAgICMgZG9uJ3QgdXNlIHRoZSAnc2V0X2V4
ZWN1dGFibGVzKCknIGJ1cmVhdWNyYWN5IHByb3ZpZGVkIGJ5IENDb21waWxlciwKICAgICMg
YXMgaXQgcmVhbGx5IGlzbid0IG5lY2Vzc2FyeSBmb3IgdGhpcyBzb3J0IG9mIHNpbmdsZS1j
b21waWxlciBjbGFzcy4KICAgICMgV291bGQgYmUgbmljZSB0byBoYXZlIGEgY29uc2lzdGVu
dCBpbnRlcmZhY2Ugd2l0aCBVbml4Q0NvbXBpbGVyLAogICAgIyB0aG91Z2gsIHNvIGl0J3Mg
d29ydGggdGhpbmtpbmcgYWJvdXQuCiAgICBleGVjdXRhYmxlcyA9IHt9CgogICAgIyBQcml2
YXRlIGNsYXNzIGRhdGEgKG5lZWQgdG8gZGlzdGluZ3Vpc2ggQyBmcm9tIEMrKyBzb3VyY2Ug
Zm9yIGNvbXBpbGVyKQogICAgX2NfZXh0ZW5zaW9ucyA9IFsnLmMnXQogICAgX2NwcF9leHRl
bnNpb25zID0gWycuY2MnLCAnLmNwcCcsICcuY3h4J10KICAgIF9yY19leHRlbnNpb25zID0g
WycuciddCiAgICBfZXhwX2V4dGVuc2lvbiA9ICcuZXhwJwoKICAgICMgTmVlZGVkIGZvciB0
aGUgZmlsZW5hbWUgZ2VuZXJhdGlvbiBtZXRob2RzIHByb3ZpZGVkIGJ5IHRoZQogICAgIyBi
YXNlIGNsYXNzLCBDQ29tcGlsZXIuCiAgICBzcmNfZXh0ZW5zaW9ucyA9IChfY19leHRlbnNp
b25zICsgX2NwcF9leHRlbnNpb25zICsKICAgICAgICAgICAgICAgICAgICAgIF9yY19leHRl
bnNpb25zKQogICAgcmVzX2V4dGVuc2lvbiA9ICcucnNyYycKICAgIG9ial9leHRlbnNpb24g
PSAnLm9iaicgIyBOb3QgdXNlZCwgcmVhbGx5CiAgICBzdGF0aWNfbGliX2V4dGVuc2lvbiA9
ICcubGliJwogICAgc2hhcmVkX2xpYl9leHRlbnNpb24gPSAnLnNsYicKICAgIHN0YXRpY19s
aWJfZm9ybWF0ID0gc2hhcmVkX2xpYl9mb3JtYXQgPSAnJXMlcycKICAgIGV4ZV9leHRlbnNp
b24gPSAnJwoKCiAgICBkZWYgX19pbml0X18gKHNlbGYsCiAgICAgICAgICAgICAgICAgIHZl
cmJvc2U9MCwKICAgICAgICAgICAgICAgICAgZHJ5X3J1bj0wLAogICAgICAgICAgICAgICAg
ICBmb3JjZT0wKToKCiAgICAgICAgQ0NvbXBpbGVyLl9faW5pdF9fIChzZWxmLCB2ZXJib3Nl
LCBkcnlfcnVuLCBmb3JjZSkKICAgICAgICAKICAgICAgICAKICAgIGRlZiBjb21waWxlIChz
ZWxmLAogICAgICAgICAgICAgICAgIHNvdXJjZXMsCiAgICAgICAgICAgICAgICAgb3V0cHV0
X2Rpcj1Ob25lLAogICAgICAgICAgICAgICAgIG1hY3Jvcz1Ob25lLAogICAgICAgICAgICAg
ICAgIGluY2x1ZGVfZGlycz1Ob25lLAogICAgICAgICAgICAgICAgIGRlYnVnPTAsCiAgICAg
ICAgICAgICAgICAgZXh0cmFfcHJlYXJncz1Ob25lLAogICAgICAgICAgICAgICAgIGV4dHJh
X3Bvc3RhcmdzPU5vbmUpOgogICAgICAgICBzZWxmLl9fc291cmNlcyA9IHNvdXJjZXMKICAg
ICAgICAgc2VsZi5fX21hY3JvcyA9IG1hY3JvcwogICAgICAgICBzZWxmLl9faW5jbHVkZV9k
aXJzID0gaW5jbHVkZV9kaXJzCiAgICAgICAgICMgRG9uJ3QgbmVlZCBleHRyYV9wcmVhcmdz
IGFuZCBleHRyYV9wb3N0YXJncyBmb3IgQ1cKICAgICAgICAgCiAgICBkZWYgbGluayAoc2Vs
ZiwKICAgICAgICAgICAgICB0YXJnZXRfZGVzYywKICAgICAgICAgICAgICBvYmplY3RzLAog
ICAgICAgICAgICAgIG91dHB1dF9maWxlbmFtZSwKICAgICAgICAgICAgICBvdXRwdXRfZGly
PU5vbmUsCiAgICAgICAgICAgICAgbGlicmFyaWVzPU5vbmUsCiAgICAgICAgICAgICAgbGli
cmFyeV9kaXJzPU5vbmUsCiAgICAgICAgICAgICAgcnVudGltZV9saWJyYXJ5X2RpcnM9Tm9u
ZSwKICAgICAgICAgICAgICBleHBvcnRfc3ltYm9scz1Ob25lLAogICAgICAgICAgICAgIGRl
YnVnPTAsCiAgICAgICAgICAgICAgZXh0cmFfcHJlYXJncz1Ob25lLAogICAgICAgICAgICAg
IGV4dHJhX3Bvc3RhcmdzPU5vbmUsCiAgICAgICAgICAgICAgYnVpbGRfdGVtcD1Ob25lKToK
ICAgICAgICAjIEZpcnN0IGV4YW1pbmUgYSBjb3VwbGUgb2Ygb3B0aW9ucyBmb3IgdGhpbmdz
IHRoYXQgYXJlbid0IGltcGxlbWVudGVkIHlldAogICAgICAgIGlmIG5vdCB0YXJnZXRfZGVz
YyBpbiAoc2VsZi5TSEFSRURfTElCUkFSWSwgc2VsZi5TSEFSRURfT0JKRUNUKToKICAgICAg
ICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvciwgJ0NhbiBvbmx5IG1ha2UgU0hB
UkVEX0xJQlJBUlkgb3IgU0hBUkVEX09CSkVDVCB0YXJnZXRzIG9uIHRoZSBNYWMnCiAgICAg
ICAgaWYgcnVudGltZV9saWJyYXJ5X2RpcnM6CiAgICAgICAgICAgIHJhaXNlIERpc3R1dGls
c1BsYXRmb3JtRXJyb3IsICdSdW50aW1lIGxpYnJhcnkgZGlycyBub3QgaW1wbGVtZW50ZWQg
eWV0JwogICAgICAgIGlmIGV4dHJhX3ByZWFyZ3Mgb3IgZXh0cmFfcG9zdGFyZ3M6CiAgICAg
ICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IsICdSdW50aW1lIGxpYnJhcnkg
ZGlycyBub3QgaW1wbGVtZW50ZWQgeWV0JwogICAgICAgIGlmIGxlbihleHBvcnRfc3ltYm9s
cykgIT0gMToKICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvciwgJ05l
ZWQgZXhhY3RseSBvbmUgZXhwb3J0IHN5bWJvbCcKICAgICAgICAjIE5leHQgdGhlcmUgYXJl
IHZhcmlvdXMgdGhpbmdzIGZvciB3aGljaCB3ZSBuZWVkIGFic29sdXRlIHBhdGhuYW1lcy4K
ICAgICAgICAjIFRoaXMgaXMgYmVjYXVzZSB3ZSAodXN1YWxseSkgY3JlYXRlIHRoZSBwcm9q
ZWN0IGluIGEgc3ViZGlyZWN0b3J5IG9mCiAgICAgICAgIyB3aGVyZSB3ZSBhcmUgbm93LCBh
bmQga2VlcGluZyB0aGUgcGF0aHMgcmVsYXRpdmUgaXMgdG9vIG11Y2ggd29yayByaWdodAog
ICAgICAgICMgbm93LgogICAgICAgIHNvdXJjZXMgPSBtYXAoc2VsZi5fZmlsZW5hbWVfdG9f
YWJzLCBzZWxmLl9fc291cmNlcykKICAgICAgICBpbmNsdWRlX2RpcnMgPSBtYXAoc2VsZi5f
ZmlsZW5hbWVfdG9fYWJzLCBzZWxmLl9faW5jbHVkZV9kaXJzKQogICAgICAgIGlmIG9iamVj
dHM6CiAgICAgICAgICAgIG9iamVjdHMgPSBtYXAoc2VsZi5fZmlsZW5hbWVfdG9fYWJzLCBv
YmplY3RzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIG9iamVjdHMgPSBbXQogICAgICAg
IGlmIGJ1aWxkX3RlbXA6CiAgICAgICAgICAgIGJ1aWxkX3RlbXAgPSBzZWxmLl9maWxlbmFt
ZV90b19hYnMoYnVpbGRfdGVtcCkKICAgICAgICBlbHNlOgogICAgICAgICAgICBidWlsZF90
ZW1wID0gb3MuY3VyZGlyKCkKICAgICAgICBpZiBvdXRwdXRfZGlyOgogICAgICAgICAgICBv
dXRwdXRfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4ob3V0cHV0X2Rpciwgb3V0cHV0X2ZpbGVu
YW1lKQogICAgICAgICMgVGhlIG91dHB1dCBmaWxlbmFtZSBuZWVkcyBzcGVjaWFsIGhhbmRs
aW5nOiBzcGxpdHRpbmcgaXQgaW50byBkaXIgYW5kCiAgICAgICAgIyBmaWxlbmFtZSBwYXJ0
LiBBY3R1YWxseSBJJ20gbm90IHN1cmUgdGhpcyBpcyByZWFsbHkgbmVlZGVkLCBidXQgaXQK
ICAgICAgICAjIGNhbid0IGh1cnQuCiAgICAgICAgb3V0cHV0X2ZpbGVuYW1lID0gc2VsZi5f
ZmlsZW5hbWVfdG9fYWJzKG91dHB1dF9maWxlbmFtZSkKICAgICAgICBvdXRwdXRfZGlyLCBv
dXRwdXRfZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0KG91dHB1dF9maWxlbmFtZSkKICAgICAg
ICAjIE5vdyB3ZSBuZWVkIHRoZSBzaG9ydCBuYW1lcyBvZiBhIGNvdXBsZSBvZiB0aGluZ3Mg
Zm9yIHB1dHRpbmcgdGhlbQogICAgICAgICMgaW50byB0aGUgcHJvamVjdC4KICAgICAgICBp
ZiBvdXRwdXRfZmlsZW5hbWVbLTg6XSA9PSAnLnBwYy5zbGInOgogICAgICAgICAgICBiYXNl
bmFtZSA9IG91dHB1dF9maWxlbmFtZVs6LThdCiAgICAgICAgZWxzZToKICAgICAgICAgICAg
YmFzZW5hbWUgPSBvcy5wYXRoLnN0cmlwKG91dHB1dF9maWxlbmFtZSlbMF0KICAgICAgICBw
cm9qZWN0bmFtZSA9IGJhc2VuYW1lICsgJy5tY3AnCiAgICAgICAgdGFyZ2V0bmFtZSA9IGJh
c2VuYW1lCiAgICAgICAgeG1sbmFtZSA9IGJhc2VuYW1lICsgJy54bWwnCiAgICAgICAgZXhw
b3J0bmFtZSA9IGJhc2VuYW1lICsgJy5tY3AuZXhwJwogICAgICAgIHByZWZpeG5hbWUgPSAn
bXdlcmtzXyVzX2NvbmZpZy5oJyViYXNlbmFtZQogICAgICAgICMgQ3JlYXRlIHRoZSBkaXJl
Y3RvcmllcyB3ZSBuZWVkCiAgICAgICAgZGlzdHV0aWxzLmRpcl91dGlsLm1rcGF0aChidWls
ZF90ZW1wLCBzZWxmLnZlcmJvc2UsIHNlbGYuZHJ5X3J1bikKICAgICAgICBkaXN0dXRpbHMu
ZGlyX3V0aWwubWtwYXRoKG91dHB1dF9kaXIsIHNlbGYudmVyYm9zZSwgc2VsZi5kcnlfcnVu
KQogICAgICAgICMgQW5kIG9uIHRvIGZpbGxpbmcgaW4gdGhlIHBhcmFtZXRlcnMgZm9yIHRo
ZSBwcm9qZWN0IGJ1aWxkZXIKICAgICAgICBzZXR0aW5ncyA9IHt9CiAgICAgICAgc2V0dGlu
Z3NbJ21hY19leHBvcnRuYW1lJ10gPSBleHBvcnRuYW1lCiAgICAgICAgc2V0dGluZ3NbJ21h
Y19vdXRwdXRkaXInXSA9IG91dHB1dF9kaXIKICAgICAgICBzZXR0aW5nc1snbWFjX2RsbG5h
bWUnXSA9IG91dHB1dF9maWxlbmFtZQogICAgICAgIHNldHRpbmdzWydtYWNfdGFyZ2V0bmFt
ZSddID0gdGFyZ2V0bmFtZQogICAgICAgIHNldHRpbmdzWydzeXNwcmVmaXgnXSA9IHN5cy5w
cmVmaXgKICAgICAgICBzZXR0aW5nc1snbWFjX3N5c3ByZWZpeHR5cGUnXSA9ICdBYnNvbHV0
ZScKICAgICAgICBzb3VyY2VmaWxlbmFtZXMgPSBbXQogICAgICAgIHNvdXJjZWZpbGVkaXJz
ID0gW10KICAgICAgICBmb3IgZmlsZW5hbWUgaW4gc291cmNlcyArIG9iamVjdHM6CiAgICAg
ICAgICAgIGRpcm5hbWUsIGZpbGVuYW1lID0gb3MucGF0aC5zcGxpdChmaWxlbmFtZSkKICAg
ICAgICAgICAgc291cmNlZmlsZW5hbWVzLmFwcGVuZChmaWxlbmFtZSkKICAgICAgICAgICAg
aWYgbm90IGRpcm5hbWUgaW4gc291cmNlZmlsZWRpcnM6CiAgICAgICAgICAgICAgICBzb3Vy
Y2VmaWxlZGlycy5hcHBlbmQoZGlybmFtZSkKICAgICAgICBzZXR0aW5nc1snc291cmNlcydd
ID0gc291cmNlZmlsZW5hbWVzCiAgICAgICAgc2V0dGluZ3NbJ2V4dHJhc2VhcmNoZGlycydd
ID0gc291cmNlZmlsZWRpcnMgKyBpbmNsdWRlX2RpcnMgKyBsaWJyYXJ5X2RpcnMKICAgICAg
ICBpZiBzZWxmLmRyeV9ydW46CiAgICAgICAgICAgIHByaW50ICdDQUxMSU5HIExJTktFUiBJ
TicsIG9zLmdldGN3ZCgpCiAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNldHRpbmdz
Lml0ZW1zKCk6CiAgICAgICAgICAgICAgICBwcmludCAnJTIwLjIwcyAlcyclKGtleSwgdmFs
dWUpCiAgICAgICAgICAgIHJldHVybgogICAgICAgICMgQnVpbGQgdGhlIGV4cG9ydCBmaWxl
CiAgICAgICAgZXhwb3J0ZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oYnVpbGRfdGVtcCwgZXhw
b3J0bmFtZSkKICAgICAgICBpZiBzZWxmLnZlcmJvc2U6CiAgICAgICAgICAgIHByaW50ICdc
dENyZWF0ZSBleHBvcnQgZmlsZScsIGV4cG9ydGZpbGVuYW1lCiAgICAgICAgZnAgPSBvcGVu
KGV4cG9ydGZpbGVuYW1lLCAndycpCiAgICAgICAgZnAud3JpdGUoJyVzXG4nJWV4cG9ydF9z
eW1ib2xzWzBdKQogICAgICAgIGZwLmNsb3NlKCkKICAgICAgICAjIEdlbmVyYXRlIHRoZSBw
cmVmaXggZmlsZSwgaWYgbmVlZGVkLCBhbmQgcHV0IGl0IGluIHRoZSBzZXR0aW5ncwogICAg
ICAgIGlmIHNlbGYuX19tYWNyb3M6CiAgICAgICAgICAgIHByZWZpeGZpbGVuYW1lID0gb3Mu
cGF0aC5qb2luKG9zLmdldGN3ZCgpLCBvcy5wYXRoLmpvaW4oYnVpbGRfdGVtcCwgcHJlZml4
bmFtZSkpCiAgICAgICAgICAgIGZwID0gb3BlbihwcmVmaXhmaWxlbmFtZSwgJ3cnKQogICAg
ICAgICAgICBmcC53cml0ZSgnI2luY2x1ZGUgIm13ZXJrc19wbHVnaW5fY29uZmlnLmgiXG4n
KQogICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5fX21hY3JvczoKICAgICAg
ICAgICAgICAgIGlmIHZhbHVlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgZnAud3Jp
dGUoJyNkZWZpbmUgJXNcbiclbmFtZSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICAgICAgICAgZnAud3JpdGUoJyNkZWZpbmUgJXMgIiVzIlxuJyUobmFtZSwgdmFsdWUp
KQogICAgICAgICAgICBmcC5jbG9zZSgpCiAgICAgICAgICAgIHNldHRpbmdzWydwcmVmaXhu
YW1lJ10gPSBwcmVmaXhuYW1lCgogICAgICAgICMgQnVpbGQgdGhlIFhNTCBmaWxlLiBXZSBu
ZWVkIHRoZSBmdWxsIHBhdGhuYW1lIChvbmx5IGxhdGVyb24sIHJlYWxseSkKICAgICAgICAj
IGJlY2F1c2Ugd2UgcGFzcyB0aGlzIHBhdGhuYW1lIHRvIENvZGVXYXJyaW9yIGluIGFuIEFw
cGxlRXZlbnQsIGFuZCBDVwogICAgICAgICMgZG9lc24ndCBoYXZlIGEgY2x1ZSBhYm91dCBv
dXIgd29ya2luZyBkaXJlY3RvcnkuCiAgICAgICAgeG1sZmlsZW5hbWUgPSBvcy5wYXRoLmpv
aW4ob3MuZ2V0Y3dkKCksIG9zLnBhdGguam9pbihidWlsZF90ZW1wLCB4bWxuYW1lKSkKICAg
ICAgICBpZiBzZWxmLnZlcmJvc2U6CiAgICAgICAgICAgIHByaW50ICdcdENyZWF0ZSBYTUwg
ZmlsZScsIHhtbGZpbGVuYW1lCiAgICAgICAgeG1sYnVpbGRlciA9IG1rY3dwcm9qZWN0LmN3
eG1sZ2VuLlByb2plY3RCdWlsZGVyKHNldHRpbmdzKQogICAgICAgIHhtbGJ1aWxkZXIuZ2Vu
ZXJhdGUoKQogICAgICAgIHhtbGRhdGEgPSBzZXR0aW5nc1sndG1wX3Byb2plY3R4bWxkYXRh
J10KICAgICAgICBmcCA9IG9wZW4oeG1sZmlsZW5hbWUsICd3JykKICAgICAgICBmcC53cml0
ZSh4bWxkYXRhKQogICAgICAgIGZwLmNsb3NlKCkKICAgICAgICAjIEdlbmVyYXRlIHRoZSBw
cm9qZWN0LiBBZ2FpbiBhIGZ1bGwgcGF0aG5hbWUuCiAgICAgICAgcHJvamVjdGZpbGVuYW1l
ID0gb3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCBvcy5wYXRoLmpvaW4oYnVpbGRfdGVtcCwg
cHJvamVjdG5hbWUpKQogICAgICAgIGlmIHNlbGYudmVyYm9zZToKICAgICAgICAgICAgcHJp
bnQgJ1x0Q3JlYXRlIHByb2plY3QgZmlsZScsIHByb2plY3RmaWxlbmFtZQogICAgICAgIG1r
Y3dwcm9qZWN0Lm1ha2Vwcm9qZWN0KHhtbGZpbGVuYW1lLCBwcm9qZWN0ZmlsZW5hbWUpCiAg
ICAgICAgIyBBbmQgYnVpbGQgaXQKICAgICAgICBpZiBzZWxmLnZlcmJvc2U6CiAgICAgICAg
ICAgIHByaW50ICdcdEJ1aWxkIHByb2plY3QnCiAgICAgICAgbWtjd3Byb2plY3QuYnVpbGRw
cm9qZWN0KHByb2plY3RmaWxlbmFtZSkKICAgICAgICAKICAgIGRlZiBfZmlsZW5hbWVfdG9f
YWJzKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAjIFNvbWUgZmlsZW5hbWVzIHNlZW0gdG8g
YmUgdW5peC1saWtlLiBDb252ZXJ0IHRvIE1hYyBuYW1lcy4KIyMgICAgICAgIGlmICcvJyBp
biBmaWxlbmFtZSBhbmQgJzonIGluIGZpbGVuYW1lOgojIyAgICAgICAgICAgcmFpc2UgRGlz
dHV0aWxzUGxhdGZvcm1FcnJvciwgJ0ZpbGVuYW1lIG1heSBiZSBVbml4IG9yIE1hYyBzdHls
ZTogJXMnJWZpbGVuYW1lCiMjICAgICAgICBpZiAnLycgaW4gZmlsZW5hbWU6CiMjICAgICAg
ICAgICBmaWxlbmFtZSA9IG1hY3VybDJwYXRoKGZpbGVuYW1lKQogICAgICAgIGZpbGVuYW1l
ID0gZGlzdHV0aWxzLnV0aWwuY29udmVydF9wYXRoKGZpbGVuYW1lKQogICAgICAgIGlmIG5v
dCBvcy5wYXRoLmlzYWJzKGZpbGVuYW1lKToKICAgICAgICAgICBjdXJkaXIgPSBvcy5nZXRj
d2QoKQogICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGN1cmRpciwgZmlsZW5h
bWUpCiAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAgICAgICAgCiAgICAgICAgCg==

--==_Exmh_11048233920--