three *.f90 files attached
Charlie Zender <[email protected]> Tue, 12 Aug 2003 11:46:06 -0700
| Newsgroups | gmane.comp.compilers.g95 |
|---|---|
| Message-ID | <[email protected]> |
> If you are reading this, your mail reader may not support MIME. > Some parts of this message will be readable as plain text. --12.Aug.2003mysteryboxofun Content-Type: application/octet-stream; name="sng_mdl.f90" Content-Description: ~/f/sng_mdl.f90 Content-Transfer-Encoding: base64 ISAkSGVhZGVyJAoKISBQdXJwb3NlOiBMaWJyYXJ5IG9mIEZvcnRyYW4gc3RyaW5nIG1hbmlw dWxhdGlvbiByb3V0aW5lcwoKISBDb3B5cmlnaHQgKEMpIDE5OTctLTIwMDMgQ2hhcmxpZSBa ZW5kZXIKISBMaWNlbnNlIFN1bW1hcnk6IFgxMS1zdHlsZSBmcmVlLCBub24tcmVzdHJpY3Rp dmUsIG5vbi1jb3B5bGVmdC4KISBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQohIGNvcHkgb2YgdGhpcyBz b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKISAiU29m dHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nCiEgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAohIGRpc3RyaWJ1dGUsIGFuZC9vciBzZWxsIGNv cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucwohIHRvIHdob20g dGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgcHJvdmlkZWQgdGhhdCB0aGUg YWJvdmUKISBjb3B5cmlnaHQgbm90aWNlKHMpIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IGFwcGVhciBpbiBhbGwgY29waWVzIG9mCiEgdGhlIFNvZnR3YXJlIGFuZCB0aGF0IGJvdGgg dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UocykgYW5kIHRoaXMKISBwZXJtaXNzaW9uIG5v dGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLgohIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTCiEgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRgohIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVAohIE9GIFRISVJEIFBBUlRZIFJJR0hU Uy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKISBIT0xERVJT IElOQ0xVREVEIElOIFRISVMgTk9USUNFIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBPUiBB TlkgU1BFQ0lBTAohIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUywgT1IgQU5Z IERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcKISBGUk9NIExPU1MgT0YgVVNFLCBEQVRB IE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAohIE5FR0xJ R0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OCiEgV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdB UkUuCiEgRXhjZXB0IGFzIGNvbnRhaW5lZCBpbiB0aGlzIG5vdGljZSwgdGhlIG5hbWUgb2Yg YSBjb3B5cmlnaHQgaG9sZGVyCiEgc2hhbGwgbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcg b3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsIHVzZQohIG9yIG90aGVyIGRlYWxp bmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuIGF1dGhvcml6YXRp b24KISBvZiB0aGUgY29weXJpZ2h0IGhvbGRlci4KCiEgVGhlIG9yaWdpbmFsIGF1dGhvciBv ZiB0aGlzIHNvZnR3YXJlLCBDaGFybGllIFplbmRlciwgd2FudHMgdG8gcmVjZWl2ZQohIHlv dXIgc3VnZ2VzdGlvbnMsIHRoYW5rcywgYnVnLXJlcG9ydHMsIGFuZCBwYXRjaGVzIHRvIGlt cHJvdmUgaXQuCiEgQ2hhcmxpZSBaZW5kZXIgPHplbmRlciBhdCB1Y2kgZG90IGVkdT4KISBE ZXBhcnRtZW50IG9mIEVhcnRoIFN5c3RlbSBTY2llbmNlCiEgVW5pdmVyc2l0eSBvZiBDYWxp Zm9ybmlhIGF0IElydmluZQohIElydmluZSwgQ0EgOTI2OTctMzEwMAoKISBUaGVzZSByb3V0 aW5lcyBjb250YWluIHRoZSBmdW5jdGlvbmFsaXR5IHJlcXVpcmVkIHRvIHBhcnNlIGNvbW1h bmQgbGluZSBhcmd1bWVudHMKISBodHRwOi8vd3d3LndpbnRlcmFjdGVyLmNvbS9mMmtjbGkv aW5kZXguaHRtIHByb3ZpZGVzIGYya2NsaSBtb2R1bGUgCiEgcmVxdWlyZWQgYnkgc29tZSAo bm9uLVVOSVgpIEY5WCBjb21waWxlcnMuIEYySyBwcm92aWRlcyBmdW5jdGlvbnMgbmF0aXZl bHkuCiEgQSBzdGFuZGFsb25lIHRlc3QgcHJvZ3JhbSwgc25nLkY5MCwgaXMgdXNlZCB0byBk ZW1vbnN0cmF0ZSBzbmdfbWRsLkY5MAoKISBSZWN1cnNpdmUgSS9POgohIERvIG5vdCBlbWJl ZCBwcmludCBzdGF0bWVudHMgaW4gYSBmdW5jdGlvbiB3aG9zZSByZXN1bHQgaXMgYmVpbmcg cHJpbnRlZAoKISBOeUw5NyBwLiAzMTg6IFBPVCwgVElQLCBBUFQKISBGb3IgZm9ybWF0dGVk IEkvTywgY2hhcmFjdGVycyBhcmUgdHJ1bmNhdGVkIG9yIGJsYW5rcyBhcmUgYWRkZWQsCiEg ZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGZpZWxkIHdpZHRoIGlzIHRvbyBzbWFsbCBvciB0 b28gbGFyZ2UuCiEgRm9yIGlucHV0LCB0cnVuY2F0aW9uIG9jY3VycyBvbiB0aGUgbGVmdCwg YW5kIGJsYW5rIHBhZGRpbmcgb24gdGhlIHJpZ2h0OwohIGZvciBvdXRwdXQsIHRydW5jYXRp b24gb2NjdXJzIG9uIHRoZSByaWdodCwgYW5kIGJsYWsgcGFkZGluZyBvbiB0aGUgbGVmdAoK ISBOb3RlcyBvbiBQUkNfREJMLCBhdXRvLXByb21vdGlvbiwgb3ZlcmxvYWRpbmc6CiEgQXNz dW1lIFBSQ19EQkwgaXMgZGVmaW5lZCB3aGVuIGNvbXBpbGVyIGlzIHBhc3NlZCBhdXRvcHJv bW90aW9uIGZsYWdzICgiLXI4IikKISBUaGlzIG1lYW5zIGFsbCBmbG9hdHMgYXJlIHByb21v dGVkIHRvIGRvdWJsZSBwcmVjaXNpb24KISBBcyBhIHJlc3VsdCwgZnRuX2FyZ19nZXRfZmx0 KCkgaXMgaWRlbnRpY2FsIHRvIGZ0bl9hcmdfZ2V0X2RibCgpIGluIHByZWNpc2lvbgohIFRo dXMgY29tcGlsZXIgY2Fubm90IGRpc2FtYmlndWF0ZSBvdmVybG9hZGluZyB0aGVzZSB0d28g ZnVuY3Rpb25zCiEgUmVzdWx0IGlzIE9LIG9uIGFsbCBrbm93biBjb21waWxlcnMgZXhjZXB0 IExhaGV5IGxmOTUgd2hpY2ggY29tcGxhaW5zCiEgU29sdXRpb24gaXMgdG8gZGVmaW5lIGZ0 bl9hcmdfZ2V0X2ZsdCgpIG9ubHkgd2hlbiBhdXRvLXByb21vdGlvbiBpcyBub3QgZW5hYmxl ZAohIEFsdGVybmF0ZSBzb2x1dGlvbiBpcyBuZXZlciB1c2UgYXV0by1wcm9tb3Rpb24gd2l0 aCBsZjk1CgohIFVzYWdlOgohdXNlIHNuZ19tZGwgISBbbWRsXSBTdHJpbmcgbWFuaXB1bGF0 aW9uCgptb2R1bGUgc25nX21kbCAhIFttZGxdIFN0cmluZyBtYW5pcHVsYXRpb24KCgoKICBp bXBsaWNpdCBub25lCiAgcHVibGljICEgW3N0dF0gU3ltYm9scyBhcmUgcHVibGljIHVubGVz cyBpbmRpdmlkdWFsbHkgcXVhbGlmaWVkIGFzIHByaXZhdGUKICBwcml2YXRlOjpmdG5fYXJn X2dldF9kYmwsZnRuX2FyZ19nZXRfaW50LGZ0bl9hcmdfZ2V0X2xnYyxmdG5fYXJnX2dldF9z bmcKCiAgcHJpdmF0ZTo6ZnRuX2FyZ19nZXRfZmx0CgoKICAhIE92ZXJsb2FkZWQgY29tbWFu ZCBsaW5lIGFyZ3VtZW50IHJldHJpZXZhbCBmdW5jdGlvbnMKICBpbnRlcmZhY2UgZnRuX2Fy Z19nZXQKICAgICBtb2R1bGUgcHJvY2VkdXJlIGZ0bl9hcmdfZ2V0X2RibCxmdG5fYXJnX2dl dF9pbnQsZnRuX2FyZ19nZXRfbGdjLGZ0bl9hcmdfZ2V0X3NuZwoKCiAgICAgbW9kdWxlIHBy b2NlZHVyZSBmdG5fYXJnX2dldF9mbHQKCiAgZW5kIGludGVyZmFjZSAhIGZ0bl9hcmdfZ2V0 Cgpjb250YWlucwoKCiAgISBEZWNsYXJlIGZvcndhcmQtY29tcGF0aWJsZSBGMksgZnVuY3Rp b25zCiAgaW50ZWdlciBmdW5jdGlvbiBjb21tYW5kX2FyZ3VtZW50X2NvdW50KCkgISBbZm5j XSBGb3J0cmFuIGludHJpbnNpYyAoRjJLKQogICAgISBQdXJwb3NlOiBSZXR1cm4gbnVtYmVy IG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgKG5vdCBjb3VudGluZyBwcm9ncmFtIG5hbWUp CiAgICAhIFN0YW5kYXJkaXplZCBGMksgcmVwbGFjZW1lbnQgZm9yIEY3Ny9GOVggaWFyZ2Mo KQogICAgaW50ZXJmYWNlCiAgICAgICBpbnRlZ2VyIGZ1bmN0aW9uIGlhcmdjKCkgISBbZm5j XSBGb3J0cmFuIGludHJpbnNpYwogICAgICAgZW5kIGZ1bmN0aW9uIGlhcmdjCiAgICBlbmQg aW50ZXJmYWNlCiAgICBjb21tYW5kX2FyZ3VtZW50X2NvdW50PWlhcmdjKCkKICAgIHJldHVy bgogIGVuZCBmdW5jdGlvbiBjb21tYW5kX2FyZ3VtZW50X2NvdW50CgogIHN1YnJvdXRpbmUg Z2V0X2NvbW1hbmRfYXJndW1lbnQoYXJnX2lkeCxhcmdfdmFsKQogICAgISBQdXJwb3NlOiBS ZXR1cm4gc3BlY2lmaWVkIGNvbW1hbmQgbGluZSBhcmd1bWVudAogICAgISBTdGFuZGFyZGl6 ZWQgRjJLIHJlcGxhY2VtZW50IGZvciBGNzcvRjlYIGlhcmdjKCkKICAgIGludGVnZXIsaW50 ZW50KGluKTo6YXJnX2lkeCAhIEkgW2lkeF0gQXJndW1lbnQgY291bnRlcgogICAgY2hhcmFj dGVyKGxlbj0qKSxpbnRlbnQob3V0KTo6YXJnX3ZhbCAhIEkvTyBbc25nXSBTdHJpbmcgdG8g Y29weSBpbnRvIG9wdF92YWwKICAgIGludGVyZmFjZQogICAgICAgc3Vicm91dGluZSBnZXRh cmcoaWR4LHZhbCkgISBbZm5jXSBGb3J0cmFuIGludHJpbnNpYwogICAgICAgICBpbnRlZ2Vy LGludGVudChpbik6OmlkeAogICAgICAgICBjaGFyYWN0ZXIobGVuPSopLGludGVudChvdXQp Ojp2YWwKICAgICAgIGVuZCBzdWJyb3V0aW5lIGdldGFyZwogICAgZW5kIGludGVyZmFjZQog ICAgY2FsbCBnZXRhcmcoYXJnX2lkeCxhcmdfdmFsKQogICAgcmV0dXJuCiAgZW5kIHN1YnJv dXRpbmUgZ2V0X2NvbW1hbmRfYXJndW1lbnQKCgogIGludGVnZXIgZnVuY3Rpb24gZnRuX3N0 cmxlbihzbmcpICEgW25icl0gTGVuZ3RoIG9mIHN0cmluZwogICAgISBQdXJwb3NlOiBSZXR1 cm4gbGVuZ3RoIG9mIHN0cmluZyBwcmVjZWRpbmcgZmlyc3QgbnVsbCBjaGFyYWN0ZXIKICAg ICEgRm9ydHJhbiBpbnRyaW5zaWMgbGVuKHNuZykgaXMgcmV0dXJuZWQgaWYgc3RyaW5nIGlz IG5vdCBOVUwtdGVybWluYXRlZAogICAgISBQcm90b3R5cGU6CiAgICAhIGludGVnZXIgZnRu X3N0cmxlbiAhIFtuYnJdIExlbmd0aCBvZiBzdHJpbmcKICAgIGltcGxpY2l0IG5vbmUKICAg ICEgSW5wdXQKICAgIGNoYXJhY3RlcihsZW49KiksaW50ZW50KGluKTo6c25nCiAgICAhIExv Y2FsCiAgICBpbnRlZ2VyIGlkeAogICAgaW50ZWdlciBsbmcKICAgICEgTWFpbiBDb2RlCiAg ICAhIE5vcm1hbGx5LCBsZW5ndGggb2Ygc3RyaW5nIGlzIHBvc2l0aW9uIG9mIGZpcnN0IGlu c2lnbmlmaWNhbnQgY2hhcmFjdGVyIG1pbnVzIG9uZQogICAgZnRuX3N0cmxlbj1mdG5fc3Ry ZmljKHNuZyktMSAhIFtpZHhdIEZpcnN0IE5VTCBvciA4LWJpdCBjaGFyYWN0ZXIgcG9zaXRp b24KICAgICEgU3RyaW5nIGxlbmd0aCBtYXkgbm90IGV4Y2VlZCBidWZmZXIgc2l6ZQogICAg aWYgKGZ0bl9zdHJsZW4gPiBsZW4oc25nKSkgZnRuX3N0cmxlbj1sZW4oc25nKQogICAgISBT dHJpbmcgbGVuZ3RoIG1heSBub3QgYmUgbGVzcyB0aGFuIDAKICAgICEgU3RyaW5ncyBpbml0 aWFsaXplZCB0byAnJyBzaG91bGQgaGF2ZSBsZW5ndGggMCBub3QgLTEKICAgIGlmIChmdG5f c3RybGVuIDwgMCAub3IuIHNuZyA9PSAnJykgZnRuX3N0cmxlbj0wCiAgICByZXR1cm4KICBl bmQgZnVuY3Rpb24gZnRuX3N0cmxlbiAhIGVuZCBmdG5fc3RybGVuKCkKCiAgaW50ZWdlciBm dW5jdGlvbiBmdG5fb3B0X2xuZ19nZXQoc25nKQogICAgISBQdXJwb3NlOiBSZXR1cm4gbGVu Z3RoIG9mIG9wdGlvbiBzdHJpbmcgcHJlY2VkaW5nIHNwYWNlIG9yIGVxdWFscyBjaGFyYWN0 ZXIKICAgICEgQW55IHByZWNlZGluZyBkYXNoZXMgYXJlIE5PVCBjb3VudGVkIHRvd2FyZHMg b3B0aW9uIGxlbmd0aAogICAgISBGb3J0cmFuIGludHJpbnNpYyBsZW4oc25nKSBpcyByZXR1 cm5lZCBpZiBzdHJpbmcgaXMgbm90IE5VTC10ZXJtaW5hdGVkCiAgICAhIFByb3RvdHlwZToK ICAgICEgaW50ZWdlciBmdG5fb3B0X2xuZ19nZXQgISBbbmJyXSBMZW5ndGggb2Ygb3B0aW9u CiAgICAhIFVzYWdlOgogICAgISBDYWxsIGZ0bl9vcHRfbG5nX2dldCB3aXRoIHRoZSBmdWxs IG9wdGlvbiBzdHJpbmcsIGUuZy4sCiAgICAhIGZ0bl9vcHRfbG5nX2dldCgnLS1kYmdfbHZs PTUnKSBhbmQgZnRuX29wdF9sbmdfZ2V0IHdpbGwgcmV0dXJuIHRoZQogICAgISBsZW5ndGgg b2YgdGhlIG9wdGlvbiBzdHJpbmcKICAgICEgb3B0X3NuZz1hcmdfdmFsKDM6MitmdG5fb3B0 X2xuZ19nZXQoYXJnX3ZhbCkpICEgW3NuZ10gT3B0aW9uIHN0cmluZwogICAgISBpZiAob3B0 X3NuZyA9PSAnZGJnJykgdGhlbiAuLi4KICAgIGltcGxpY2l0IG5vbmUKICAgICEgSW5wdXQK ICAgIGNoYXJhY3RlcihsZW49KiksaW50ZW50KGluKTo6c25nCiAgICAhIExvY2FsCiAgICBp bnRlZ2VyIGlkeAogICAgaW50ZWdlciBsZW5fc25nCiAgICBpbnRlZ2VyOjpkc2hfbmJyPTAg ISBbbmJyXSBOdW1iZXIgb2YgZGFzaGVzCiAgICAhIE1haW4gQ29kZQogICAgISBMZW5ndGgg b2Ygb3B0aW9uIHN0cmluZyBpcyBvbmUgbGVzcyB0aGFuIHBvc2l0aW9uIG9mIGZpcnN0IHNw YWNlIG9yIGVxdWFsIHNpZ24KICAgIGxlbl9zbmc9bGVuKHNuZykKICAgIGlmIChsZW5fc25n ID49IDEpIHRoZW4KICAgICAgIGlmIChzbmcoMToxKSA9PSAnLScpIGRzaF9uYnI9MSAhIFtu YnJdIE51bWJlciBvZiBkYXNoZXMKICAgIGVuZGlmCiAgICBpZiAobGVuX3NuZyA+PSAyKSB0 aGVuCiAgICAgICBpZiAoc25nKDE6MikgPT0gJy0tJykgZHNoX25icj0yICEgW25icl0gTnVt YmVyIG9mIGRhc2hlcwogICAgZW5kaWYKICAgIGRvIGlkeD0xLGxlbl9zbmcKICAgICAgICEg TG9vayBmb3IgZmlyc3QgYWJub3JtYWwgY2hhcmFjdGVyCiAgICAgICBpZiAoc25nKGlkeDpp ZHgpID09ICcgJyAub3IuIHNuZyhpZHg6aWR4KSA9PSAnPScpIGdvdG8gMTAwCiAgICBlbmQg ZG8gISBlbmQgbG9vcCBvdmVyIGNoYXJhY3RlcnMKMTAwIGNvbnRpbnVlCiAgICBmdG5fb3B0 X2xuZ19nZXQ9aWR4LTEtZHNoX25icgogICAgISBTdHJpbmdzIGluaXRpYWxpemVkIHRvICcn IHNob3VsZCBoYXZlIGxlbmd0aCAwCiAgICBpZiAoZnRuX29wdF9sbmdfZ2V0IDwgMCAub3Iu IHNuZyA9PSAnJykgZnRuX29wdF9sbmdfZ2V0PTAKICAgIHJldHVybgogIGVuZCBmdW5jdGlv biBmdG5fb3B0X2xuZ19nZXQgISBlbmQgZnRuX29wdF9sbmdfZ2V0KCkKCiAgc3Vicm91dGlu ZSBmdG5fZ2V0YXJnX3dycCggJiAhIFtzYnJdIENhbGwgZ2V0YXJnKCkgYW5kIGluY3JlbWVu dCBhcmdfaWR4CiAgICAgICBhcmdfaWR4LCAmICEgSS9PIFtpZHhdIEFyZ3VtZW50IGNvdW50 ZXIKICAgICAgIGFyZ192YWwpICEgSS9PIFtzbmddIFN0cmluZyB0byBjb3B5IGludG8gb3B0 X3ZhbAogICAgISBQdXJwb3NlOiBXcmFwcGVyIGZvciBnZXRhcmcoKSBpbnRyaW5zaWMgdGhh dCBpbmNyZW1lbnRzIGFyZ3VtZW50IGNvdW50ZXIKICAgICEgQXJndW1lbnQgaW5kZXggaXMg aW5jcmVtZW50ZWQgYWZ0ZXIgZ2V0YXJnKCkgaXMgY2FsbGVkCiAgICAhIFVzYWdlOgogICAg ISBjYWxsIGZ0bl9nZXRhcmdfd3JwKGFyZ19pZHgsYXJnX3ZhbCkgISBbc2JyXSBDYWxsIGdl dGFyZygpIGFuZCBpbmNyZW1lbnQgYXJnX2lkeAogICAgdXNlIGRiZ19tZGwgISBbbWRsXSBE ZWJ1Z2dpbmcgY29uc3RhbnRzLCBwcmdfbm0sIGRiZ19sdmwKICAgIGltcGxpY2l0IG5vbmUK ICAgICEgQ29tbW9ucwogICAgISBJbnB1dAogICAgISBJbnB1dC9PdXRwdXQKICAgIGludGVn ZXIsaW50ZW50KGlub3V0KTo6YXJnX2lkeCAhIEkvTyBbaWR4XSBBcmd1bWVudCBjb3VudGVy CiAgICBjaGFyYWN0ZXIobGVuPSopLGludGVudChpbm91dCk6OmFyZ192YWwgISBJL08gW3Nu Z10gU3RyaW5nIHRvIGNvcHkgaW50byBvcHRfdmFsCiAgICAhIE91dHB1dAogICAgISBMb2Nh bAogICAgISBNYWluIENvZGUKICAgIGNhbGwgZ2V0X2NvbW1hbmRfYXJndW1lbnQoYXJnX2lk eCxhcmdfdmFsKQogICAgaWYgKGRiZ19sdmwgPj0gZGJnX2lvKSB3cml0ZSAoNiwnKDJhLGky LDJhKScpIHByZ19ubSgxOmZ0bl9zdHJsc2MocHJnX25tKSksICYKICAgICAgICAgJzogREVC VUcgZnRuX2dldGFyZ193cnAoKSByZXBvcnRzIGFyZ19pZHggPSAnLGFyZ19pZHgsJywgYXJn X3ZhbCA9ICcsYXJnX3ZhbCgxOmxlbl90cmltKGFyZ192YWwpKQogICAgISBJbmNyZW1lbnQg Y291bnRlciBmb3IgbmV4dCByZWFkCiAgICBhcmdfaWR4PWFyZ19pZHgrMQogICAgcmV0dXJu CiAgZW5kIHN1YnJvdXRpbmUgZnRuX2dldGFyZ193cnAKCiAgc3Vicm91dGluZSBmdG5fZ2V0 YXJnX2VyciggJiAhIFtzYnJdIEVycm9yIGhhbmRsZXIgZm9yIGdldGFyZygpCiAgICAgICBh cmdfaWR4LCAmICEgSS9PIFtpZHhdIEFyZ3VtZW50IGNvdW50ZXIKICAgICAgIGFyZ192YWwp ICEgSS9PIFtzbmddIFN0cmluZyB0byBjb3B5IGludG8gb3B0X3ZhbAogICAgISBQdXJwb3Nl OiBIYW5kbGUgb3B0aW9uIG5vdCBmb3VuZCBlcnJvcnMgZm9yIGdldG9wdCgpCiAgICAhIFJv dXRpbmUgYXNzdW1lcyBhcmdfaWR4IHBvaW50cyB0byBhcmdfdmFsCiAgICAhIFR5cGljYWxs eSBhcmdfaWR4IGlzIGFkdmFuY2VkIGJlZm9yZSBvcHRpb24gcmVjb2duaXRpb24gaXMgYXR0 ZW1wdGVkLAogICAgISB0aHVzIGFyZ19pZHggbWF5IG5lZWQgdG8gYmUgZGVjcmVtZW50ZWQg YmVmb3JlIGZ0bl9nZXRhcmdfZXJyKCkgaXMgY2FsbGVkCiAgICAhIFVzYWdlOgogICAgISBj YWxsIGZ0bl9nZXRhcmdfZXJyKGFyZ19pZHgsYXJnX3ZhbCkgISBbc2JyXSBFcnJvciBoYW5k bGVyIGZvciBnZXRhcmcoKQogICAgdXNlIGRiZ19tZGwgISBbbWRsXSBEZWJ1Z2dpbmcgY29u c3RhbnRzLCBwcmdfbm0sIGRiZ19sdmwKICAgIGltcGxpY2l0IG5vbmUKICAgICEgQ29tbW9u cwogICAgISBJbnB1dAogICAgISBJbnB1dC9PdXRwdXQKICAgIGludGVnZXIsaW50ZW50KGlu b3V0KTo6YXJnX2lkeCAhIEkvTyBbaWR4XSBBcmd1bWVudCBjb3VudGVyCiAgICBjaGFyYWN0 ZXIobGVuPSopLGludGVudChpbm91dCk6OmFyZ192YWwgISBJL08gW3NuZ10gU3RyaW5nIHRv IGNvcHkgaW50byBvcHRfdmFsCiAgICAhIE91dHB1dAogICAgISBMb2NhbAogICAgaW50ZWdl ciBhcmdfbmJyICEgW25icl0gTnVtYmVyIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMKICAg IGludGVnZXIgZXhpdF9zdGF0dXMgISBbZW5tXSBQcm9ncmFtIGV4aXQgc3RhdHVzCiAgICAh IE1haW4gQ29kZQogICAgYXJnX25icj1jb21tYW5kX2FyZ3VtZW50X2NvdW50KCkgISBbbmJy XSBOdW1iZXIgb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cwogICAgd3JpdGUgKDYsJygyYSkn KSBwcmdfbm0oMTpmdG5fc3RybHNjKHByZ19ubSkpLCc6IEVSUk9SIE9wdGlvbiBub3QgcmVj b2duaXplZCcKICAgIHdyaXRlICg2LCcoMmEpJykgcHJnX25tKDE6ZnRuX3N0cmxzYyhwcmdf bm0pKSwnOiBISU5UIE9wdGlvbiBzeW50YXggaXMgbmVhcmx5IFBPU0lYL0dOVSBjb21wbGlh bnQ6JwogICAgd3JpdGUgKDYsJygyYSknKSBwcmdfbm0oMTpmdG5fc3RybHNjKHByZ19ubSkp LCAmCiAgICAgICAgICc6IFNob3J0IG9wdGlvbiBzeW50YXggaXMgZGFzaC1rZXktc3BhY2Ut dmFsdWUsIGUuZy4sIC1EIDInCiAgICB3cml0ZSAoNiwnKDNhKScpIHByZ19ubSgxOmZ0bl9z dHJsc2MocHJnX25tKSksICYKICAgICAgICAgJzogTG9uZyBvcHRpb24gc3ludGF4IGlzIGRh c2gtZGFzaC1rZXktc3BhY2UtdmFsdWUsIGUuZy4sIC0tZGJnIDInLCAmCiAgICAgICAgICcs IG9yIGRhc2gtZGFzaC1rZXktZXF1YWwtdmFsdWUsIGUuZy4sIC0tZGJnPTIgKHByZWZlcnJl ZCknCiAgICAhIFN1YnRyYWN0IDEgZnJvbSBhcmdfaWR4IGJlY2F1c2UgcnVsZSBpcyB0aGF0 IGFyZ19pZHggaXMgaW5jcmVtZW50ZWQgYmVmb3JlIG9wdGlvbiByZWNvZ25pdGlvbiBpcyBh dHRlbXB0ZWQKICAgIHdyaXRlICg2LCcoMmEsaTIsMmEpJykgcHJnX25tKDE6ZnRuX3N0cmxz Yyhwcmdfbm0pKSwgJgogICAgICAgICAnOiBERUJVRyBmdG5fZ2V0YXJnX2VycigpIHJlcG9y dHMgYXJnX2lkeCA9ICcsYXJnX2lkeCwnLCBhcmdfdmFsID0gJyxhcmdfdmFsKDE6bGVuX3Ry aW0oYXJnX3ZhbCkpCiAgICBpZiAoYXJnX2lkeCsxIDw9IGFyZ19uYnIpIHRoZW4KICAgICAg IGFyZ19pZHg9YXJnX2lkeCsxICEgW2lkeF0gQ291bnRpbmcgaW5kZXgKICAgICAgIGNhbGwg Z2V0X2NvbW1hbmRfYXJndW1lbnQoYXJnX2lkeCxhcmdfdmFsKQogICAgICAgd3JpdGUgKDYs JygyYSxpMiwyYSknKSBwcmdfbm0oMTpmdG5fc3RybHNjKHByZ19ubSkpLCAmCiAgICAgICAg ICAgICc6IERFQlVHIE5leHQgYXJndW1lbnQgdmFsdWUgaXMgYXJnX3ZhbCgnLGFyZ19pZHgs JykgPSAnLGFyZ192YWwKICAgIGVsc2UKICAgICAgIHdyaXRlICg2LCcoMmEpJykgcHJnX25t KDE6ZnRuX3N0cmxzYyhwcmdfbm0pKSwgJgogICAgICAgICAgICAnOiBERUJVRyBObyBtb3Jl IGFyZ3VtZW50cyBmb3VuZCcKICAgIGVuZGlmICEgZW5kaWYgbm90IGxhc3QgYXJndW1lbnQK ICAgIGV4aXRfc3RhdHVzPS0xICEgW2VubV0gUHJvZ3JhbSBleGl0IHN0YXR1cwogICAgY2Fs bCBleGl0KGV4aXRfc3RhdHVzKSAhIEV4aXQgd2l0aCBjdXJyZW50IGV4aXQgc3RhdHVzCiAg ICByZXR1cm4KICBlbmQgc3Vicm91dGluZSBmdG5fZ2V0YXJnX2VycgoKICAhIE5vdGVzIGNv bW1vbiB0byBhbGwgYXJnX2dldCgpIHJvdXRpbmVzOgogICEgYXJnX3ZhbCBpcyBhc3N1bWVk IHRvIGJlIHByZXNlbnQgYXMgYSBjb21tYW5kIGxpbmUgbGluZSBvcHRpb24KICAhIE9uIGlu cHV0LCBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiBhcmdfdmFsIGFyZSBhc3N1bWVkIHRvIGJl IGRhc2hlcywKICAhIGFsdGhvdWdoIHRoaXMgd291bGQgbm90IGJlIHRvbyBkaWZmaWN1bHQg dG8gY2hhbmdlLgogICEgUm91dGluZSBhY2NlcHRzIG9wdGlvbnMgc3BlY2lmaWVkIGluIFBP U0lYIGZvcm1hdDogIi0tb3B0X3NuZyB2YWwiIG9yICItLW9wdF9zbmc9dmFsIiAocHJlZmVy cmVkKQogICEgQ2FzZSAxOiBPcHRpb24gc3RyaW5nIGFuZCB2YWx1ZSBhcmUgc2VwYXJhdGVk IGJ5IHNwYWNlICIgIiBjb25qdW5jdGlvbgogICEgT24gaW5wdXQsIGFyZ192YWwgaXMgYXNz dW1lZCB0byBob2xkIG9wdGlvbiBzdHJpbmcgd2l0aCBkYXNoZXMsIGUuZy4sICItLW9wdF9z bmciCiAgISBPbiBvdXRwdXQsIGFyZ192YWwgaG9sZHMgY29ycmVzcG9uZGluZyBhcmd1bWVu dCwgZS5nLiwgIjczIgogICEgUm91dGluZSB1c2VzIGdldGFyZygpIHRvIG9idGFpbiBhcmdf dmFsLCB0aGVuIGluY3JlbWVudHMgYXJnX2lkeAogICEgQ2FzZSAyOiBPcHRpb24gc3RyaW5n IGFuZCB2YWx1ZSBhcmUgc2VwYXJhdGVkIGJ5IGVxdWFscyAiPSIgY29uanVuY3Rpb24KICAh IE9uIGlucHV0IGFuZCBvdXRwdXQsIGFyZ192YWwgaG9sZHMgZW50aXJlIG9wdGlvbiBhbmQg dmFsdWUsIGUuZy4sICItLW9wdF9zbmc9NzMiCiAgISBSb3V0aW5lcyBkbyBub3QgY2FsbCBn ZXRhcmcoKSB0byBjaGFuZ2UgYXJnX3ZhbCBhbmQgZG8gbm90IGluY3JlbWVudCBhcmdfaWR4 CgogIHN1YnJvdXRpbmUgZnRuX2FyZ19nZXRfZGJsKCAmICEgW3Nicl0gUHJvY2VzcyBkb3Vi bGUtdmFsdWVkIGNvbW1hbmQgbGluZSBhcmd1bWVudAogICAgICAgYXJnX2lkeCwgJiAhIEkv TyBbaWR4XSBBcmd1bWVudCBjb3VudGVyCiAgICAgICBhcmdfdmFsLCAmICEgSS9PIFtzbmdd IERvdWJsZSB0byBjb3B5IGludG8gb3B0X3ZhbAogICAgICAgb3B0X3ZhbCkgISBPIFtmcmNd IFZhcmlhYmxlIHRvIHJlY2VpdmUgY29weSBvZiBhcmdfdmFsCiAgICAhIFB1cnBvc2U6IENv cHkgY29tbWFuZC1saW5lIGRvdWJsZSBhcmd1bWVudCBhcmdfdmFsIGludG8gdmFyaWFibGUg b3B0X3ZhbAogICAgISBVc2FnZToKICAgICEgY2FsbCBmdG5fYXJnX2dldF9kYmwoYXJnX2lk eCxhcmdfdmFsLG9wdF92YWwpICEgW3Nicl0gUHJvY2VzcyBkb3VibGUtdmFsdWVkIGNvbW1h bmQgbGluZSBhcmd1bWVudAogICAgdXNlIGRiZ19tZGwgISBbbWRsXSBEZWJ1Z2dpbmcgY29u c3RhbnRzLCBwcmdfbm0sIGRiZ19sdmwKICAgIGltcGxpY2l0IG5vbmUKICAgICEgUGFyYW1l dGVycwogICAgY2hhcmFjdGVyKGxlbj0qKSxwYXJhbWV0ZXI6OnNicl9ubT0nZnRuX2FyZ19n ZXRfZGJsJyAhIFtzbmddIFN1YnJvdXRpbmUgbmFtZQogICAgISBDb21tb25zCiAgICAhIElu cHV0CiAgICAhIElucHV0L091dHB1dAogICAgaW50ZWdlcixpbnRlbnQoaW5vdXQpOjphcmdf aWR4ICEgSS9PIFtpZHhdIEFyZ3VtZW50IGNvdW50ZXIKICAgIGNoYXJhY3RlcihsZW49Kiks aW50ZW50KGlub3V0KTo6YXJnX3ZhbCAhIEkvTyBbc25nXSBEb3VibGUgdG8gY29weSBpbnRv IG9wdF92YWwKICAgICEgT3V0cHV0CiAgICByZWFsKHNlbGVjdGVkX3JlYWxfa2luZChwPTEy KSksaW50ZW50KG91dCk6Om9wdF92YWwgISBPIFtzbmddIFZhcmlhYmxlIHRvIHJlY2VpdmUg Y29weSBvZiBhcmdfdmFsCiAgICAhIExvY2FsCiAgICBpbnRlZ2VyIGlkeAogICAgaW50ZWdl ciBhcmdfbG5nICEgW25icl0gTGVuZ3RoIG9mIGFyZ3VtZW50CiAgICBpbnRlZ2VyIG9wdF9s bmcgISBbbmJyXSBMZW5ndGggb2Ygb3B0aW9uCiAgICBpbnRlZ2VyIGFyZ192YWxfc3J0X2lk eCAhIFtpZHhdIFN0YXJ0aW5nIHBvc2l0aW9uIG9mIGFyZ3VtZW50IHZhbHVlCiAgICBsb2dp Y2FsIG9wdF9jbmpfaXNfc3BjICEgW2ZsZ10gT3B0aW9uIGNvbmp1bmN0aW9uIGlzIHNwYWNl IGNoYXJhY3RlcgogICAgISBNYWluIENvZGUKICAgICEgUHJpbnQgYW55IGRpYWdub3N0aWNz IGJlZm9yZSBjdXJyZW50IHZhbHVlIG9mIGFyZ192YWwgaXMgb3ZlcndyaXR0ZW4KICAgIGFy Z19sbmc9bGVuX3RyaW0oYXJnX3ZhbCkgISBbbmJyXSBMZW5ndGggb2YgYXJndW1lbnQKICAg IG9wdF9sbmc9ZnRuX29wdF9sbmdfZ2V0KGFyZ192YWwpICEgW25icl0gTGVuZ3RoIG9mIG9w dGlvbgogICAgaWYgKGRiZ19sdmwgPj0gZGJnX2lvKSB0aGVuCiAgICAgICB3cml0ZSAoNiwn KDJhLGkyLDNhLGkyKScpIHByZ19ubSgxOmZ0bl9zdHJsc2MocHJnX25tKSksICYKICAgICAg ICAgICAgJzogREVCVUcgJy8vc2JyX25tLy8nKCkgcmVwb3J0cyBhcmdfaWR4ID0gJyxhcmdf aWR4LCAgJgogICAgICAgICAgICAnLCBGdWxsIG9wdGlvbiA9ICcnJyxhcmdfdmFsKDE6YXJn X2xuZyksJycnLCBMZW5ndGggPSAnLGFyZ19sbmcKICAgIGVuZGlmICEgZW5kaWYgZGJnCiAg ICAhIERldGVybWluZSB3aGV0aGVyIGZvcm1hdCBpcyAtLW9wdF9zbmc9dmFsIG9yIC0tb3B0 X3NuZyB2YWwKICAgICEgQWRkIDIgdG8gY292ZXIgcHJlbGltaW5hcnkgZGFzaGVzCiAgICBp ZiAob3B0X2xuZysyIDwgYXJnX2xuZykgdGhlbgogICAgICAgb3B0X2Nual9pc19zcGM9LmZh bHNlLiAhIFtmbGddIE9wdGlvbiBjb25qdW5jdGlvbiBpcyBzcGFjZSBjaGFyYWN0ZXIKICAg ICAgIGFyZ192YWxfc3J0X2lkeD0zK29wdF9sbmcrMSAhIFtpZHhdIFN0YXJ0aW5nIHBvc2l0 aW9uIG9mIGFyZ3VtZW50IHZhbHVlCiAgICAgICBpZiAoZGJnX2x2bCA+PSBkYmdfaW8pIHRo ZW4KICAgICAgICAgIHdyaXRlICg2LCcoOGEpJykgcHJnX25tKDE6ZnRuX3N0cmxzYyhwcmdf bm0pKSwgJgogICAgICAgICAgICAgICAnOiBERUJVRyAnLy9zYnJfbm0vLycoKSBkaWFzc2Vt YmxlcyBhcmd1bWVudCBpbnRvIE9wdGlvbiA9ICcnJywgJgogICAgICAgICAgICAgICBhcmdf dmFsKDM6MitvcHRfbG5nKSwnJycsIGNvbmp1bmN0aW9uIGlzICcnJywgJgogICAgICAgICAg ICAgICBhcmdfdmFsKDMrb3B0X2xuZzozK29wdF9sbmcpLCcnJywgYXJndW1lbnQgPSAnJycs ICYKICAgICAgICAgICAgICAgYXJnX3ZhbChhcmdfdmFsX3NydF9pZHg6YXJnX2xuZyksJycn JyAhIFF1b3RlIHN5bnRheCBpcyBteXN0aWNhbAogICAgICAgZW5kaWYgISBlbmRpZiBkYmcK ICAgIGVsc2UKICAgICAgIG9wdF9jbmpfaXNfc3BjPS50cnVlLiAhIFtmbGddIE9wdGlvbiBj b25qdW5jdGlvbiBpcyBzcGFjZSBjaGFyYWN0ZXIKICAgICAgIGFyZ192YWxfc3J0X2lkeD0x ICEgW2lkeF0gU3RhcnRpbmcgcG9zaXRpb24gb2YgYXJndW1lbnQgdmFsdWUKICAgIGVuZGlm ICEgZW5kaWYKICAgIGlmIChvcHRfY25qX2lzX3NwYykgdGhlbgogICAgICAgISBPYnRhaW4g dmFsdWUgb2Ygb3B0aW9uIGJ5IGdldHRpbmcgbmV4dCBjb21tYW5kIGxpbmUgYXJndW1lbnQK ICAgICAgICEgTmV3IGFyZ3VtZW50cyB3aWxsIGFsdGVyIGlucHV0IHZhbHVlcyBvZiBhcmdf aWR4LGFyZ192YWwKICAgICAgIGNhbGwgZ2V0X2NvbW1hbmRfYXJndW1lbnQoYXJnX2lkeCxh cmdfdmFsKQogICAgICAgISBJbmNyZW1lbnQgY291bnRlciBmb3IgbmV4dCByZWFkCiAgICAg ICBhcmdfaWR4PWFyZ19pZHgrMQogICAgICAgISBTYW5pdHkgY2hlY2tzCiAgICAgICBhcmdf bG5nPWxlbl90cmltKGFyZ192YWwpICEgW25icl0gTGVuZ3RoIG9mIGFyZ3VtZW50CiAgICAg ICBpZiAoYXJnX2xuZyA8PSAwKSBzdG9wICdmdG5fPz8/X2FyZ19nZXQoKSByZXBvcnRzIG9w dGlvbiBsYWNrcyBhcmd1bWVudCcKICAgIGVuZGlmICEgZW5kaWYgb3B0X2Nual9pc19zcGMK ICAgICEgUmVhZCBhcmd1bWVudCBpbnRvIGRvdWJsZSBhbmQgcmV0dXJuCiAgICByZWFkIChh cmdfdmFsKGFyZ192YWxfc3J0X2lkeDphcmdfbG5nKSwqKSBvcHRfdmFsICEgW25icl0gVmFy aWFibGUgdG8gcmVjZWl2ZSBjb3B5IG9mIGFyZ192YWwKICAgIGlmIChkYmdfbHZsID49IGRi Z19pbykgdGhlbgogICAgICAgd3JpdGUgKDYsJygyYSxnMTIuNiknKSBwcmdfbm0oMTpmdG5f c3RybHNjKHByZ19ubSkpLCAmCiAgICAgICAgICAgICc6IERFQlVHICcvL3Nicl9ubS8vJygp IGFzc2lnbmVkIGFyZ3VtZW50IHZhbHVlID0gJyxvcHRfdmFsCiAgICBlbmRpZiAhIGVuZGlm CiAgICByZXR1cm4KICBlbmQgc3Vicm91dGluZSBmdG5fYXJnX2dldF9kYmwKCgogIHN1YnJv dXRpbmUgZnRuX2FyZ19nZXRfZmx0KCAmICEgW3Nicl0gUHJvY2VzcyBmbG9hdC12YWx1ZWQg Y29tbWFuZCBsaW5lIGFyZ3VtZW50CiAgICAgICBhcmdfaWR4LCAmICEgSS9PIFtpZHhdIEFy Z3VtZW50IGNvdW50ZXIKICAgICAgIGFyZ192YWwsICYgISBJL08gW3NuZ10gRmxvYXQgdG8g Y29weSBpbnRvIG9wdF92YWwKICAgICAgIG9wdF92YWwpICEgTyBbZnJjXSBWYXJpYWJsZSB0 byByZWNlaXZlIGNvcHkgb2YgYXJnX3ZhbAogICAgISBQdXJwb3NlOiBDb3B5IGNvbW1hbmQt bGluZSBmbG9hdCBhcmd1bWVudCBhcmdfdmFsIGludG8gdmFyaWFibGUgb3B0X3ZhbAogICAg ISBVc2FnZToKICAgICEgY2FsbCBmdG5fYXJnX2dldF9mbHQoYXJnX2lkeCxhcmdfdmFsLG9w dF92YWwpICEgW3Nicl0gUHJvY2VzcyBmbG9hdC12YWx1ZWQgY29tbWFuZCBsaW5lIGFyZ3Vt ZW50CiAgICB1c2UgZGJnX21kbCAhIFttZGxdIERlYnVnZ2luZyBjb25zdGFudHMsIHByZ19u bSwgZGJnX2x2bAogICAgaW1wbGljaXQgbm9uZQogICAgISBQYXJhbWV0ZXJzCiAgICBjaGFy YWN0ZXIobGVuPSopLHBhcmFtZXRlcjo6c2JyX25tPSdmdG5fYXJnX2dldF9mbHQnICEgW3Nu Z10gU3Vicm91dGluZSBuYW1lCiAgICAhIENvbW1vbnMKICAgICEgSW5wdXQKICAgICEgSW5w dXQvT3V0cHV0CiAgICBpbnRlZ2VyLGludGVudChpbm91dCk6OmFyZ19pZHggISBJL08gW2lk eF0gQXJndW1lbnQgY291bnRlcgogICAgY2hhcmFjdGVyKGxlbj0qKSxpbnRlbnQoaW5vdXQp OjphcmdfdmFsICEgSS9PIFtzbmddIEZsb2F0IHRvIGNvcHkgaW50byBvcHRfdmFsCiAgICAh IE91dHB1dAogICAgcmVhbChzZWxlY3RlZF9yZWFsX2tpbmQocD02KSksaW50ZW50KG91dCk6 Om9wdF92YWwgISBPIFtzbmddIFZhcmlhYmxlIHRvIHJlY2VpdmUgY29weSBvZiBhcmdfdmFs CiAgICAhIExvY2FsCiAgICBpbnRlZ2VyIGlkeAogICAgaW50ZWdlciBhcmdfbG5nICEgW25i cl0gTGVuZ3RoIG9mIGFyZ3VtZW50CiAgICBpbnRlZ2VyIG9wdF9sbmcgISBbbmJyXSBMZW5n dGggb2Ygb3B0aW9uCiAgICBpbnRlZ2VyIGFyZ192YWxfc3J0X2lkeCAhIFtpZHhdIFN0YXJ0 aW5nIHBvc2l0aW9uIG9mIGFyZ3VtZW50IHZhbHVlCiAgICBsb2dpY2FsIG9wdF9jbmpfaXNf c3BjICEgW2ZsZ10gT3B0aW9uIGNvbmp1bmN0aW9uIGlzIHNwYWNlIGNoYXJhY3RlcgogICAg ISBNYWluIENvZGUKICAgICEgUHJpbnQgYW55IGRpYWdub3N0aWNzIGJlZm9yZSBjdXJyZW50 IHZhbHVlIG9mIGFyZ192YWwgaXMgb3ZlcndyaXR0ZW4KICAgIGFyZ19sbmc9bGVuX3RyaW0o YXJnX3ZhbCkgISBbbmJyXSBMZW5ndGggb2YgYXJndW1lbnQKICAgIG9wdF9sbmc9ZnRuX29w dF9sbmdfZ2V0KGFyZ192YWwpICEgW25icl0gTGVuZ3RoIG9mIG9wdGlvbgogICAgaWYgKGRi Z19sdmwgPj0gZGJnX2lvKSB0aGVuCiAgICAgICB3cml0ZSAoNiwnKDJhLGkyLDNhLGkyKScp IHByZ19ubSgxOmZ0bl9zdHJsc2MocHJnX25tKSksICYKICAgICAgICAgICAgJzogREVCVUcg Jy8vc2JyX25tLy8nKCkgcmVwb3J0cyBhcmdfaWR4ID0gJyxhcmdfaWR4LCAgJgogICAgICAg ICAgICAnLCBGdWxsIG9wdGlvbiA9ICcnJyxhcmdfdmFsKDE6YXJnX2xuZyksJycnLCBMZW5n dGggPSAnLGFyZ19sbmcKICAgIGVuZGlmICEgZW5kaWYgZGJnCiAgICAhIERldGVybWluZSB3 aGV0aGVyIGZvcm1hdCBpcyAtLW9wdF9zbmc9dmFsIG9yIC0tb3B0X3NuZyB2YWwKICAgICEg QWRkIDIgdG8gY292ZXIgcHJlbGltaW5hcnkgZGFzaGVzCiAgICBpZiAob3B0X2xuZysyIDwg YXJnX2xuZykgdGhlbgogICAgICAgb3B0X2Nual9pc19zcGM9LmZhbHNlLiAhIFtmbGddIE9w dGlvbiBjb25qdW5jdGlvbiBpcyBzcGFjZSBjaGFyYWN0ZXIKICAgICAgIGFyZ192YWxfc3J0 X2lkeD0zK29wdF9sbmcrMSAhIFtpZHhdIFN0YXJ0aW5nIHBvc2l0aW9uIG9mIGFyZ3VtZW50 IHZhbHVlCiAgICAgICBpZiAoZGJnX2x2bCA+PSBkYmdfaW8pIHRoZW4KICAgICAgICAgIHdy aXRlICg2LCcoOGEpJykgcHJnX25tKDE6ZnRuX3N0cmxzYyhwcmdfbm0pKSwgJgogICAgICAg ICAgICAgICAnOiBERUJVRyAnLy9zYnJfbm0vLycoKSBkaWFzc2VtYmxlcyBhcmd1bWVudCBp bnRvIE9wdGlvbiA9ICcnJywgJgogICAgICAgICAgICAgICBhcmdfdmFsKDM6MitvcHRfbG5n KSwnJycsIGNvbmp1bmN0aW9uIGlzICcnJywgJgogICAgICAgICAgICAgICBhcmdfdmFsKDMr b3B0X2xuZzozK29wdF9sbmcpLCcnJywgYXJndW1lbnQgPSAnJycsICYKICAgICAgICAgICAg ICAgYXJnX3ZhbChhcmdfdmFsX3NydF9pZHg6YXJnX2xuZyksJycnJyAhIFF1b3RlIHN5bnRh eCBpcyBteXN0aWNhbAogICAgICAgZW5kaWYgISBlbmRpZiBkYmcKICAgIGVsc2UKICAgICAg IG9wdF9jbmpfaXNfc3BjPS50cnVlLiAhIFtmbGddIE9wdGlvbiBjb25qdW5jdGlvbiBpcyBz cGFjZSBjaGFyYWN0ZXIKICAgICAgIGFyZ192YWxfc3J0X2lkeD0xICEgW2lkeF0gU3RhcnRp bmcgcG9zaXRpb24gb2YgYXJndW1lbnQgdmFsdWUKICAgIGVuZGlmICEgZW5kaWYKICAgIGlm IChvcHRfY25qX2lzX3NwYykgdGhlbgogICAgICAgISBPYnRhaW4gdmFsdWUgb2Ygb3B0aW9u IGJ5IGdldHRpbmcgbmV4dCBjb21tYW5kIGxpbmUgYXJndW1lbnQKICAgICAgICEgTmV3IGFy Z3VtZW50cyB3aWxsIGFsdGVyIGlucHV0IHZhbHVlcyBvZiBhcmdfaWR4LGFyZ192YWwKICAg ICAgIGNhbGwgZ2V0X2NvbW1hbmRfYXJndW1lbnQoYXJnX2lkeCxhcmdfdmFsKQogICAgICAg ISBJbmNyZW1lbnQgY291bnRlciBmb3IgbmV4dCByZWFkCiAgICAgICBhcmdfaWR4PWFyZ19p ZHgrMQogICAgICAgISBTYW5pdHkgY2hlY2tzCiAgICAgICBhcmdfbG5nPWxlbl90cmltKGFy Z192YWwpICEgW25icl0gTGVuZ3RoIG9mIGFyZ3VtZW50CiAgICAgICBpZiAoYXJnX2xuZyA8 PSAwKSBzdG9wICdmdG5fPz8/X2FyZ19nZXQoKSByZXBvcnRzIG9wdGlvbiBsYWNrcyBhcmd1 bWVudCcKICAgIGVuZGlmICEgZW5kaWYgb3B0X2Nual9pc19zcGMKICAgICEgUmVhZCBhcmd1 bWVudCBpbnRvIGZsb2F0IGFuZCByZXR1cm4KICAgIHJlYWQgKGFyZ192YWwoYXJnX3ZhbF9z cnRfaWR4OmFyZ19sbmcpLCopIG9wdF92YWwgISBbbmJyXSBWYXJpYWJsZSB0byByZWNlaXZl IGNvcHkgb2YgYXJnX3ZhbAogICAgaWYgKGRiZ19sdmwgPj0gZGJnX2lvKSB0aGVuCiAgICAg ICB3cml0ZSAoNiwnKDJhLGcxMi42KScpIHByZ19ubSgxOmZ0bl9zdHJsc2MocHJnX25tKSks ICYKICAgICAgICAgICAgJzogREVCVUcgJy8vc2JyX25tLy8nKCkgYXNzaWduZWQgYXJndW1l bnQgdmFsdWUgPSAnLG9wdF92YWwKICAgIGVuZGlmICEgZW5kaWYKICAgIHJldHVybgogIGVu ZCBzdWJyb3V0aW5lIGZ0bl9hcmdfZ2V0X2ZsdAoKCiAgc3Vicm91dGluZSBmdG5fYXJnX2dl dF9pbnQoICYgISBbc2JyXSBQcm9jZXNzIGludGVnZXItdmFsdWVkIGNvbW1hbmQgbGluZSBh cmd1bWVudAogICAgICAgYXJnX2lkeCwgJiAhIEkvTyBbaWR4XSBBcmd1bWVudCBjb3VudGVy CiAgICAgICBhcmdfdmFsLCAmICEgSS9PIFtzbmddIEludGVnZXIgdG8gY29weSBpbnRvIG9w dF92YWwKICAgICAgIG9wdF92YWwpICEgTyBbbmJyXSBWYXJpYWJsZSB0byByZWNlaXZlIGNv cHkgb2YgYXJnX3ZhbAogICAgISBQdXJwb3NlOiBDb3B5IGNvbW1hbmQtbGluZSBpbnRlZ2Vy IGFyZ3VtZW50IGFyZ192YWwgaW50byB2YXJpYWJsZSBvcHRfdmFsCiAgICAhIFVzYWdlOgog ICAgISBjYWxsIGZ0bl9hcmdfZ2V0X2ludChhcmdfaWR4LGFyZ192YWwsb3B0X3ZhbCkgISBb c2JyXSBQcm9jZXNzIGludGVnZXItdmFsdWVkIGNvbW1hbmQgbGluZSBhcmd1bWVudAogICAg dXNlIGRiZ19tZGwgISBbbWRsXSBEZWJ1Z2dpbmcgY29uc3RhbnRzLCBwcmdfbm0sIGRiZ19s dmwKICAgIGltcGxpY2l0IG5vbmUKICAgICEgUGFyYW1ldGVycwogICAgY2hhcmFjdGVyKGxl bj0qKSxwYXJhbWV0ZXI6OnNicl9ubT0nZnRuX2FyZ19nZXRfaW50JyAhIFtzbmddIFN1YnJv dXRpbmUgbmFtZQogICAgISBDb21tb25zCiAgICAhIElucHV0CiAgICAhIElucHV0L091dHB1 dAogICAgaW50ZWdlcixpbnRlbnQoaW5vdXQpOjphcmdfaWR4ICEgSS9PIFtpZHhdIEFyZ3Vt ZW50IGNvdW50ZXIKICAgIGNoYXJhY3RlcihsZW49KiksaW50ZW50KGlub3V0KTo6YXJnX3Zh bCAhIEkvTyBbc25nXSBJbnRlZ2VyIHRvIGNvcHkgaW50byBvcHRfdmFsCiAgICAhIDIwMDMw NDI5OiBDaGFuZ2Ugb3B0X3ZhbCB0byBpbm91dCBzaW5jZSBkYmdfbHZsIGl0c2VsZiBtYXkg YmUgYW4gb3B0X3ZhbCBidXQgaXMgcmVmZXJlbmNlZCBvbiBMSFMKICAgIGludGVnZXIsaW50 ZW50KGlub3V0KTo6b3B0X3ZhbCAhIE8gW3NuZ10gVmFyaWFibGUgdG8gcmVjZWl2ZSBjb3B5 IG9mIGFyZ192YWwKICAgICEgT3V0cHV0CiAgICAhIExvY2FsCiAgICBpbnRlZ2VyIGlkeAog ICAgaW50ZWdlciBhcmdfbG5nICEgW25icl0gTGVuZ3RoIG9mIGFyZ3VtZW50CiAgICBpbnRl Z2VyIG9wdF9sbmcgISBbbmJyXSBMZW5ndGggb2Ygb3B0aW9uCiAgICBpbnRlZ2VyIGFyZ192 YWxfc3J0X2lkeCAhIFtpZHhdIFN0YXJ0aW5nIHBvc2l0aW9uIG9mIGFyZ3VtZW50IHZhbHVl CiAgICBsb2dpY2FsIG9wdF9jbmpfaXNfc3BjICEgW2ZsZ10gT3B0aW9uIGNvbmp1bmN0aW9u IGlzIHNwYWNlIGNoYXJhY3RlcgogICAgISBNYWluIENvZGUKICAgICEgUHJpbnQgYW55IGRp YWdub3N0aWNzIGJlZm9yZSBjdXJyZW50IHZhbHVlIG9mIGFyZ192YWwgaXMgb3ZlcndyaXR0 ZW4KICAgIGFyZ19sbmc9bGVuX3RyaW0oYXJnX3ZhbCkgISBbbmJyXSBMZW5ndGggb2YgYXJn dW1lbnQKICAgIG9wdF9sbmc9ZnRuX29wdF9sbmdfZ2V0KGFyZ192YWwpICEgW25icl0gTGVu Z3RoIG9mIG9wdGlvbgogICAgaWYgKGRiZ19sdmwgPj0gZGJnX2lvKSB0aGVuCiAgICAgICB3 cml0ZSAoNiwnKDJhLGkyLDNhLGkyKScpIHByZ19ubSgxOmZ0bl9zdHJsc2MocHJnX25tKSks ICYKICAgICAgICAgICAgJzogREVCVUcgJy8vc2JyX25tLy8nKCkgcmVwb3J0cyBhcmdfaWR4 ID0gJyxhcmdfaWR4LCAgJgogICAgICAgICAgICAnLCBGdWxsIG9wdGlvbiA9ICcnJyxhcmdf dmFsKDE6YXJnX2xuZyksJycnLCBMZW5ndGggPSAnLGFyZ19sbmcKICAgIGVuZGlmICEgZW5k aWYgZGJnCiAgICAhIERldGVybWluZSB3aGV0aGVyIGZvcm1hdCBpcyAtLW9wdF9zbmc9dmFs IG9yIC0tb3B0X3NuZyB2YWwKICAgICEgQWRkIDIgdG8gY292ZXIgcHJlbGltaW5hcnkgZGFz aGVzCiAgICBpZiAob3B0X2xuZysyIDwgYXJnX2xuZykgdGhlbgogICAgICAgb3B0X2Nual9p c19zcGM9LmZhbHNlLiAhIFtmbGddIE9wdGlvbiBjb25qdW5jdGlvbiBpcyBzcGFjZSBjaGFy YWN0ZXIKICAgICAgIGFyZ192YWxfc3J0X2lkeD0zK29wdF9sbmcrMSAhIFtpZHhdIFN0YXJ0 aW5nIHBvc2l0aW9uIG9mIGFyZ3VtZW50IHZhbHVlCiAgICAgICBpZiAoZGJnX2x2bCA+PSBk YmdfaW8pIHRoZW4KICAgICAgICAgIHdyaXRlICg2LCcoOGEpJykgcHJnX25tKDE6ZnRuX3N0 cmxzYyhwcmdfbm0pKSwgJgogICAgICAgICAgICAgICAnOiBERUJVRyAnLy9zYnJfbm0vLyco KSBkaWFzc2VtYmxlcyBhcmd1bWVudCBpbnRvIE9wdGlvbiA9ICcnJywgJgogICAgICAgICAg ICAgICBhcmdfdmFsKDM6MitvcHRfbG5nKSwnJycsIGNvbmp1bmN0aW9uIGlzICcnJywgJgog ICAgICAgICAgICAgICBhcmdfdmFsKDMrb3B0X2xuZzozK29wdF9sbmcpLCcnJywgYXJndW1l bnQgPSAnJycsICYKICAgICAgICAgICAgICAgYXJnX3ZhbChhcmdfdmFsX3NydF9pZHg6YXJn X2xuZyksJycnJyAhIFF1b3RlIHN5bnRheCBpcyBteXN0aWNhbAogICAgICAgZW5kaWYgISBl bmRpZiBkYmcKICAgIGVsc2UKICAgICAgIG9wdF9jbmpfaXNfc3BjPS50cnVlLiAhIFtmbGdd IE9wdGlvbiBjb25qdW5jdGlvbiBpcyBzcGFjZSBjaGFyYWN0ZXIKICAgICAgIGFyZ192YWxf c3J0X2lkeD0xICEgW2lkeF0gU3RhcnRpbmcgcG9zaXRpb24gb2YgYXJndW1lbnQgdmFsdWUK ICAgIGVuZGlmICEgZW5kaWYKICAgIGlmIChvcHRfY25qX2lzX3NwYykgdGhlbgogICAgICAg ISBPYnRhaW4gdmFsdWUgb2Ygb3B0aW9uIGJ5IGdldHRpbmcgbmV4dCBjb21tYW5kIGxpbmUg YXJndW1lbnQKICAgICAgICEgTmV3IGFyZ3VtZW50cyB3aWxsIGFsdGVyIGlucHV0IHZhbHVl cyBvZiBhcmdfaWR4LGFyZ192YWwKICAgICAgIGNhbGwgZ2V0X2NvbW1hbmRfYXJndW1lbnQo YXJnX2lkeCxhcmdfdmFsKQogICAgICAgISBJbmNyZW1lbnQgY291bnRlciBmb3IgbmV4dCBy ZWFkCiAgICAgICBhcmdfaWR4PWFyZ19pZHgrMQogICAgICAgISBTYW5pdHkgY2hlY2tzCiAg ICAgICBhcmdfbG5nPWxlbl90cmltKGFyZ192YWwpICEgW25icl0gTGVuZ3RoIG9mIGFyZ3Vt ZW50CiAgICAgICBpZiAoYXJnX2xuZyA8PSAwKSBzdG9wICdmdG5fYXJnX2dldF9pbnQoKSBy ZXBvcnRzIG9wdGlvbiBsYWNrcyBhcmd1bWVudCcKICAgIGVuZGlmICEgZW5kaWYgb3B0X2Nu al9pc19zcGMKICAgICEgUmVhZCBhcmd1bWVudCBpbnRvIGludGVnZXIgYW5kIHJldHVybgog ICAgcmVhZCAoYXJnX3ZhbChhcmdfdmFsX3NydF9pZHg6YXJnX2xuZyksKikgb3B0X3ZhbCAh IFtuYnJdIFZhcmlhYmxlIHRvIHJlY2VpdmUgY29weSBvZiBhcmdfdmFsCiAgICBpZiAoZGJn X2x2bCA+PSBkYmdfaW8pIHRoZW4KICAgICAgIHdyaXRlICg2LCcoMmEsZzEyLjYpJykgcHJn X25tKDE6ZnRuX3N0cmxzYyhwcmdfbm0pKSwgJgogICAgICAgICAgICAnOiBERUJVRyAnLy9z YnJfbm0vLycoKSBhc3NpZ25lZCBhcmd1bWVudCB2YWx1ZSA9ICcsb3B0X3ZhbAogICAgZW5k aWYgISBlbmRpZgogICAgcmV0dXJuCiAgZW5kIHN1YnJvdXRpbmUgZnRuX2FyZ19nZXRfaW50 CgogIHN1YnJvdXRpbmUgZnRuX2FyZ19nZXRfbGdjKCAmICEgW3Nicl0gUHJvY2VzcyBsb2dp Y2FsLXZhbHVlZCBjb21tYW5kIGxpbmUgYXJndW1lbnQKICAgICAgIGFyZ19pZHgsICYgISBJ L08gW2lkeF0gQXJndW1lbnQgY291bnRlcgogICAgICAgYXJnX3ZhbCwgJiAhIEkvTyBbc25n XSBMb2dpY2FsIHRvIGNvcHkgaW50byBvcHRfdmFsCiAgICAgICBvcHRfdmFsKSAhIE8gW25i cl0gVmFyaWFibGUgdG8gcmVjZWl2ZSBjb3B5IG9mIGFyZ192YWwKICAgICEgUHVycG9zZTog Q29weSBjb21tYW5kLWxpbmUgbG9naWNhbCBhcmd1bWVudCBhcmdfdmFsIGludG8gdmFyaWFi bGUgb3B0X3ZhbAogICAgISBVc2FnZToKICAgICEgY2FsbCBmdG5fYXJnX2dldF9sZ2MoYXJn X2lkeCxhcmdfdmFsLG9wdF92YWwpICEgW3Nicl0gUHJvY2VzcyBsb2dpY2FsLXZhbHVlZCBj b21tYW5kIGxpbmUgYXJndW1lbnQKICAgIHVzZSBkYmdfbWRsICEgW21kbF0gRGVidWdnaW5n IGNvbnN0YW50cywgcHJnX25tLCBkYmdfbHZsCiAgICBpbXBsaWNpdCBub25lCiAgICAhIFBh cmFtZXRlcnMKICAgIGNoYXJhY3RlcihsZW49KikscGFyYW1ldGVyOjpzYnJfbm09J2Z0bl9h cmdfZ2V0X2xnYycgISBbc25nXSBTdWJyb3V0aW5lIG5hbWUKICAgICEgQ29tbW9ucwogICAg ISBJbnB1dAogICAgISBJbnB1dC9PdXRwdXQKICAgIGludGVnZXIsaW50ZW50KGlub3V0KTo6 YXJnX2lkeCAhIEkvTyBbaWR4XSBBcmd1bWVudCBjb3VudGVyCiAgICBjaGFyYWN0ZXIobGVu PSopLGludGVudChpbm91dCk6OmFyZ192YWwgISBJL08gW3NuZ10gTG9naWNhbCB0byBjb3B5 IGludG8gb3B0X3ZhbAogICAgISBPdXRwdXQKICAgIGxvZ2ljYWwsaW50ZW50KG91dCk6Om9w dF92YWwgISBPIFtmbGddIFZhcmlhYmxlIHRvIHJlY2VpdmUgY29weSBvZiBhcmdfdmFsCiAg ICAhIExvY2FsCiAgICBpbnRlZ2VyIGlkeAogICAgaW50ZWdlciBhcmdfbG5nICEgW25icl0g TGVuZ3RoIG9mIGFyZ3VtZW50CiAgICBpbnRlZ2VyIG9wdF9sbmcgISBbbmJyXSBMZW5ndGgg b2Ygb3B0aW9uCiAgICBpbnRlZ2VyIGFyZ192YWxfc3J0X2lkeCAhIFtpZHhdIFN0YXJ0aW5n IHBvc2l0aW9uIG9mIGFyZ3VtZW50IHZhbHVlCiAgICBsb2dpY2FsIG9wdF9jbmpfaXNfc3Bj ICEgW2ZsZ10gT3B0aW9uIGNvbmp1bmN0aW9uIGlzIHNwYWNlIGNoYXJhY3RlcgogICAgISBN YWluIENvZGUKICAgICEgUHJpbnQgYW55IGRpYWdub3N0aWNzIGJlZm9yZSBjdXJyZW50IHZh bHVlIG9mIGFyZ192YWwgaXMgb3ZlcndyaXR0ZW4KICAgIGFyZ19sbmc9bGVuX3RyaW0oYXJn X3ZhbCkgISBbbmJyXSBMZW5ndGggb2YgYXJndW1lbnQKICAgIG9wdF9sbmc9ZnRuX29wdF9s bmdfZ2V0KGFyZ192YWwpICEgW25icl0gTGVuZ3RoIG9mIG9wdGlvbgogICAgaWYgKGRiZ19s dmwgPj0gZGJnX2lvKSB0aGVuCiAgICAgICB3cml0ZSAoNiwnKDJhLGkyLDNhLGkyKScpIHBy Z19ubSgxOmZ0bl9zdHJsc2MocHJnX25tKSksICYKICAgICAgICAgICAgJzogREVCVUcgJy8v c2JyX25tLy8nKCkgcmVwb3J0cyBhcmdfaWR4ID0gJyxhcmdfaWR4LCAgJgogICAgICAgICAg ICAnLCBGdWxsIG9wdGlvbiA9ICcnJyxhcmdfdmFsKDE6YXJnX2xuZyksJycnLCBMZW5ndGgg PSAnLGFyZ19sbmcKICAgIGVuZGlmICEgZW5kaWYgZGJnCiAgICAhIERldGVybWluZSB3aGV0 aGVyIGZvcm1hdCBpcyAtLW9wdF9zbmc9dmFsIG9yIC0tb3B0X3NuZyB2YWwKICAgICEgQWRk IDIgdG8gY292ZXIgcHJlbGltaW5hcnkgZGFzaGVzCiAgICBpZiAob3B0X2xuZysyIDwgYXJn X2xuZykgdGhlbgogICAgICAgb3B0X2Nual9pc19zcGM9LmZhbHNlLiAhIFtmbGddIE9wdGlv biBjb25qdW5jdGlvbiBpcyBzcGFjZSBjaGFyYWN0ZXIKICAgICAgIGFyZ192YWxfc3J0X2lk eD0zK29wdF9sbmcrMSAhIFtpZHhdIFN0YXJ0aW5nIHBvc2l0aW9uIG9mIGFyZ3VtZW50IHZh bHVlCiAgICAgICBpZiAoZGJnX2x2bCA+PSBkYmdfaW8pIHRoZW4KICAgICAgICAgIHdyaXRl ICg2LCcoOGEpJykgcHJnX25tKDE6ZnRuX3N0cmxzYyhwcmdfbm0pKSwgJgogICAgICAgICAg ICAgICAnOiBERUJVRyAnLy9zYnJfbm0vLycoKSBkaWFzc2VtYmxlcyBhcmd1bWVudCBpbnRv IE9wdGlvbiA9ICcnJywgJgogICAgICAgICAgICAgICBhcmdfdmFsKDM6MitvcHRfbG5nKSwn JycsIGNvbmp1bmN0aW9uIGlzICcnJywgJgogICAgICAgICAgICAgICBhcmdfdmFsKDMrb3B0 X2xuZzozK29wdF9sbmcpLCcnJywgYXJndW1lbnQgPSAnJycsICYKICAgICAgICAgICAgICAg YXJnX3ZhbChhcmdfdmFsX3NydF9pZHg6YXJnX2xuZyksJycnJyAhIFF1b3RlIHN5bnRheCBp cyBteXN0aWNhbAogICAgICAgZW5kaWYgISBlbmRpZiBkYmcKICAgIGVsc2UKICAgICAgIG9w dF9jbmpfaXNfc3BjPS50cnVlLiAhIFtmbGddIE9wdGlvbiBjb25qdW5jdGlvbiBpcyBzcGFj ZSBjaGFyYWN0ZXIKICAgICAgIGFyZ192YWxfc3J0X2lkeD0xICEgW2lkeF0gU3RhcnRpbmcg cG9zaXRpb24gb2YgYXJndW1lbnQgdmFsdWUKICAgIGVuZGlmICEgZW5kaWYKICAgIGlmIChv cHRfY25qX2lzX3NwYykgdGhlbgogICAgICAgISBPYnRhaW4gdmFsdWUgb2Ygb3B0aW9uIGJ5 IGdldHRpbmcgbmV4dCBjb21tYW5kIGxpbmUgYXJndW1lbnQKICAgICAgICEgTmV3IGFyZ3Vt ZW50cyB3aWxsIGFsdGVyIGlucHV0IHZhbHVlcyBvZiBhcmdfaWR4LGFyZ192YWwKICAgICAg IGNhbGwgZ2V0X2NvbW1hbmRfYXJndW1lbnQoYXJnX2lkeCxhcmdfdmFsKQogICAgICAgISBJ bmNyZW1lbnQgY291bnRlciBmb3IgbmV4dCByZWFkCiAgICAgICBhcmdfaWR4PWFyZ19pZHgr MQogICAgICAgISBTYW5pdHkgY2hlY2tzCiAgICAgICBhcmdfbG5nPWxlbl90cmltKGFyZ192 YWwpICEgW25icl0gTGVuZ3RoIG9mIGFyZ3VtZW50CiAgICAgICBpZiAoYXJnX2xuZyA8PSAw KSBzdG9wICdmdG5fYXJnX2dldF9sZ2MoKSByZXBvcnRzIG9wdGlvbiBsYWNrcyBhcmd1bWVu dCcKICAgIGVuZGlmICEgZW5kaWYgb3B0X2Nual9pc19zcGMKICAgICEgUmVhZCBhcmd1bWVu dCBpbnRvIGludGVnZXIgYW5kIHJldHVybgogICAgcmVhZCAoYXJnX3ZhbChhcmdfdmFsX3Ny dF9pZHg6YXJnX2xuZyksKikgb3B0X3ZhbCAhIFtuYnJdIFZhcmlhYmxlIHRvIHJlY2VpdmUg Y29weSBvZiBhcmdfdmFsCiAgICBpZiAoZGJnX2x2bCA+PSBkYmdfaW8pIHRoZW4KICAgICAg IHdyaXRlICg2LCcoMmEsZzEyLjYpJykgcHJnX25tKDE6ZnRuX3N0cmxzYyhwcmdfbm0pKSwg JgogICAgICAgICAgICAnOiBERUJVRyAnLy9zYnJfbm0vLycoKSBhc3NpZ25lZCBhcmd1bWVu dCB2YWx1ZSA9ICcsb3B0X3ZhbAogICAgZW5kaWYgISBlbmRpZgogICAgcmV0dXJuCiAgZW5k IHN1YnJvdXRpbmUgZnRuX2FyZ19nZXRfbGdjCgogIHN1YnJvdXRpbmUgZnRuX2FyZ19nZXRf c25nKCAmICEgW3Nicl0gUHJvY2VzcyBzdHJpbmctdmFsdWVkIGNvbW1hbmQgbGluZSBhcmd1 bWVudAogICAgICAgYXJnX2lkeCwgJiAhIEkvTyBbaWR4XSBBcmd1bWVudCBjb3VudGVyCiAg ICAgICBhcmdfdmFsLCAmICEgSS9PIFtzbmddIFN0cmluZyB0byBjb3B5IGludG8gb3B0X3Zh bAogICAgICAgb3B0X3ZhbCkgISBPIFtzbmddIFZhcmlhYmxlIHRvIHJlY2VpdmUgY29weSBv ZiBhcmdfdmFsCiAgICAhIFB1cnBvc2U6IENvcHkgY29tbWFuZC1saW5lIHN0cmluZyBhcmd1 bWVudCBhcmdfdmFsIGludG8gdmFyaWFibGUgb3B0X3ZhbAogICAgISBvcHRfdmFsIGlzIHVu Y2hhbmdlZCBpZiBhcmdfdmFsIGNhbm5vdCBiZSBjb3BpZWQKICAgICEgUmVtYWluZGVyIG9m IG9wdF92YWwgaXMgTlVMLWluaXRpYWxpemVkCiAgICAhIFVzYWdlOgogICAgISBjYWxsIGZ0 bl9hcmdfZ2V0X3NuZyhhcmdfaWR4LGFyZ192YWwsb3B0X3ZhbCkgISBbc2JyXSBQcm9jZXNz IHN0cmluZy12YWx1ZWQgY29tbWFuZCBsaW5lIGFyZ3VtZW50CiAgICB1c2UgZGJnX21kbCAh IFttZGxdIERlYnVnZ2luZyBjb25zdGFudHMsIHByZ19ubSwgZGJnX2x2bAogICAgaW1wbGlj aXQgbm9uZQogICAgISBQYXJhbWV0ZXJzCiAgICBjaGFyYWN0ZXIobGVuPSopLHBhcmFtZXRl cjo6c2JyX25tPSdmdG5fYXJnX2dldF9zbmcnICEgW3NuZ10gU3Vicm91dGluZSBuYW1lCiAg ICAhIENvbW1vbnMKICAgICEgSW5wdXQKICAgICEgSW5wdXQvT3V0cHV0CiAgICBpbnRlZ2Vy LGludGVudChpbm91dCk6OmFyZ19pZHggISBJL08gW2lkeF0gQXJndW1lbnQgY291bnRlcgog ICAgY2hhcmFjdGVyKGxlbj0qKSxpbnRlbnQoaW5vdXQpOjphcmdfdmFsICEgSS9PIFtzbmdd IFN0cmluZyB0byBjb3B5IGludG8gb3B0X3ZhbAogICAgISBPdXRwdXQKICAgIGNoYXJhY3Rl cihsZW49KiksaW50ZW50KG91dCk6Om9wdF92YWwgISBPIFtzbmddIFZhcmlhYmxlIHRvIHJl Y2VpdmUgY29weSBvZiBhcmdfdmFsCiAgICAhIExvY2FsCiAgICBpbnRlZ2VyIGlkeAogICAg aW50ZWdlciBsZW5fdmFyICEgW25icl0gTGVuZ3RoIG9mIHN0cmluZyB2YXJpYWJsZQogICAg aW50ZWdlciBhcmdfbG5nICEgW25icl0gTGVuZ3RoIG9mIGFyZ3VtZW50CiAgICBpbnRlZ2Vy IG9wdF9sbmcgISBbbmJyXSBMZW5ndGggb2Ygb3B0aW9uCiAgICBpbnRlZ2VyIGFyZ192YWxf c3J0X2lkeCAhIFtpZHhdIFN0YXJ0aW5nIHBvc2l0aW9uIG9mIGFyZ3VtZW50IHZhbHVlCiAg ICBsb2dpY2FsIG9wdF9jbmpfaXNfc3BjICEgW2ZsZ10gT3B0aW9uIGNvbmp1bmN0aW9uIGlz IHNwYWNlIGNoYXJhY3RlcgogICAgaW50ZWdlciBubGxfc3J0X2lkeCAhIFtpZHhdIEZpcnN0 IE5VTCBwb3NpdGlvbiBpbiBvcHRfdmFsCiAgICAhIE1haW4gQ29kZQogICAgISBQcmludCBh bnkgZGlhZ25vc3RpY3MgYmVmb3JlIGN1cnJlbnQgdmFsdWUgb2YgYXJnX3ZhbCBpcyBvdmVy d3JpdHRlbgogICAgbGVuX3Zhcj1sZW4ob3B0X3ZhbCkgISBbbmJyXSBMZW5ndGggb2Ygc3Ry aW5nIHZhcmlhYmxlCiAgICBhcmdfbG5nPWxlbl90cmltKGFyZ192YWwpICEgW25icl0gTGVu Z3RoIG9mIGFyZ3VtZW50CiAgICBvcHRfbG5nPWZ0bl9vcHRfbG5nX2dldChhcmdfdmFsKSAh IFtuYnJdIExlbmd0aCBvZiBvcHRpb24KICAgIGlmIChkYmdfbHZsID49IGRiZ19pbykgdGhl bgogICAgICAgd3JpdGUgKDYsJygyYSxpMiwzYSxpMiknKSBwcmdfbm0oMTpmdG5fc3RybHNj KHByZ19ubSkpLCAmCiAgICAgICAgICAgICc6IERFQlVHICcvL3Nicl9ubS8vJygpIHJlcG9y dHMgYXJnX2lkeCA9ICcsYXJnX2lkeCwgICYKICAgICAgICAgICAgJywgT3B0aW9uID0gJycn LGFyZ192YWwoMTphcmdfbG5nKSwnJycsIExlbmd0aCA9ICcsYXJnX2xuZwogICAgZW5kaWYg ISBlbmRpZgogICAgISBEZXRlcm1pbmUgd2hldGhlciBmb3JtYXQgaXMgLS1vcHRfc25nPXZh bCBvciAtLW9wdF9zbmcgdmFsCiAgICAhIEFkZCAyIHRvIGNvdmVyIHByZWxpbWluYXJ5IGRh c2hlcwogICAgaWYgKG9wdF9sbmcrMiA8IGFyZ19sbmcpIHRoZW4KICAgICAgIG9wdF9jbmpf aXNfc3BjPS5mYWxzZS4gISBbZmxnXSBPcHRpb24gY29uanVuY3Rpb24gaXMgc3BhY2UgY2hh cmFjdGVyCiAgICAgICBhcmdfdmFsX3NydF9pZHg9MytvcHRfbG5nKzEgISBbaWR4XSBTdGFy dGluZyBwb3NpdGlvbiBvZiBhcmd1bWVudCB2YWx1ZQogICAgICAgaWYgKGRiZ19sdmwgPj0g ZGJnX2lvKSB0aGVuCiAgICAgICAgICB3cml0ZSAoNiwnKDhhKScpIHByZ19ubSgxOmZ0bl9z dHJsc2MocHJnX25tKSksICYKICAgICAgICAgICAgICAgJzogREVCVUcgJy8vc2JyX25tLy8n KCkgZGlhc3NlbWJsZXMgYXJndW1lbnQgaW50byBPcHRpb24gPSAnJycsICYKICAgICAgICAg ICAgICAgYXJnX3ZhbCgzOjIrb3B0X2xuZyksJycnLCBjb25qdW5jdGlvbiBpcyAnJycsICYK ICAgICAgICAgICAgICAgYXJnX3ZhbCgzK29wdF9sbmc6MytvcHRfbG5nKSwnJycsIGFyZ3Vt ZW50ID0gJycnLCAmCiAgICAgICAgICAgICAgIGFyZ192YWwoYXJnX3ZhbF9zcnRfaWR4OmFy Z19sbmcpLCcnJycgISBRdW90ZSBzeW50YXggaXMgbXlzdGljYWwKICAgICAgIGVuZGlmICEg ZW5kaWYgZGJnCiAgICBlbHNlCiAgICAgICBvcHRfY25qX2lzX3NwYz0udHJ1ZS4gISBbZmxn XSBPcHRpb24gY29uanVuY3Rpb24gaXMgc3BhY2UgY2hhcmFjdGVyCiAgICAgICBhcmdfdmFs X3NydF9pZHg9MSAhIFtpZHhdIFN0YXJ0aW5nIHBvc2l0aW9uIG9mIGFyZ3VtZW50IHZhbHVl CiAgICBlbmRpZiAhIGVuZGlmCiAgICBpZiAob3B0X2Nual9pc19zcGMpIHRoZW4KICAgICAg ICEgT2J0YWluIHZhbHVlIG9mIG9wdGlvbiBieSBnZXR0aW5nIG5leHQgY29tbWFuZCBsaW5l IGFyZ3VtZW50CiAgICAgICAhIE5ldyBhcmd1bWVudHMgd2lsbCBhbHRlciBpbnB1dCB2YWx1 ZXMgb2YgYXJnX2lkeCxhcmdfdmFsCiAgICAgICBjYWxsIGdldF9jb21tYW5kX2FyZ3VtZW50 KGFyZ19pZHgsYXJnX3ZhbCkKICAgICAgICEgSW5jcmVtZW50IGNvdW50ZXIgZm9yIG5leHQg cmVhZAogICAgICAgYXJnX2lkeD1hcmdfaWR4KzEKICAgICAgICEgU2FuaXR5IGNoZWNrcwog ICAgICAgYXJnX2xuZz1sZW5fdHJpbShhcmdfdmFsKSAhIFtuYnJdIExlbmd0aCBvZiBhcmd1 bWVudAogICAgICAgaWYgKGFyZ19sbmcgPD0gMCkgc3RvcCAnZnRuXz8/P19hcmdfZ2V0KCkg cmVwb3J0cyBvcHRpb24gbGFja3MgYXJndW1lbnQnCiAgICAgICBpZiAoYXJnX2xuZyA+IGxl bl92YXIpIHRoZW4KICAgICAgICAgIHdyaXRlICg2LCcoMmEsaTUsYSxpNSknKSBwcmdfbm0o MTpmdG5fc3RybHNjKHByZ19ubSkpLCAmCiAgICAgICAgICAgICAgICc6IEVSUk9SICcvL3Ni cl9ubS8vJygpIHJlcG9ydHMgYXJndW1lbnQgbGVuZ3RoID0gJyxhcmdfbG5nLCAmCiAgICAg ICAgICAgICAgICcgdG9vIGxvbmcgdG8gZml0IGludG8gdmFyaWFibGUgbGVuZ3RoICcsbGVu X3ZhcgogICAgICAgICAgc3RvcAogICAgICAgZW5kaWYgISBlbmRpZiBhcmdfbG5nID4gbGVu X3ZhcgogICAgZW5kaWYgISBlbmRpZiBvcHRfY25qX2lzX3NwYwogICAgISBSZWFkIGFyZ3Vt ZW50IGludG8gc3RyaW5nIGFuZCByZXR1cm4KICAgIHJlYWQgKGFyZ192YWwoYXJnX3ZhbF9z cnRfaWR4OmFyZ19sbmcpLCcoYSknKSBvcHRfdmFsICEgW3NuZ10gVmFyaWFibGUgdG8gcmVj ZWl2ZSBjb3B5IG9mIGFyZ192YWwKICAgICEgTlVMLWluaXRpYWxpemUgcmVtYWluZGVyIG9m IG9wdF92YWwKICAgIG5sbF9zcnRfaWR4PWFyZ19sbmctYXJnX3ZhbF9zcnRfaWR4KzIgISBb aWR4XSBGaXJzdCBOVUwgcG9zaXRpb24gaW4gb3B0X3ZhbAogICAgZG8gaWR4PW5sbF9zcnRf aWR4LGxlbl92YXIKICAgICAgIG9wdF92YWwoaWR4OmlkeCk9Y2hhcigwKSAhIFtzbmddIFZh cmlhYmxlIHRvIHJlY2VpdmUgY29weSBvZiBhcmdfdmFsCiAgICBlbmQgZG8gISBlbmQgbG9v cCBvdmVyIGNoYXJhY3RlcnMKICAgIGlmIChkYmdfbHZsID49IGRiZ19pbykgdGhlbgogICAg ICAgd3JpdGUgKDYsJyg0YSknKSBwcmdfbm0oMTpmdG5fc3RybHNjKHByZ19ubSkpLCAmCiAg ICAgICAgICAgICc6IERFQlVHICcvL3Nicl9ubS8vJygpIGFzc2lnbmVkIGFyZ3VtZW50IHZh bHVlID0gJyxvcHRfdmFsKDE6bGVuX3RyaW0ob3B0X3ZhbCkpLCc8LS1FbmQgb2Ygb3B0X3Zh bCBzdHJpbmcnCiAgICAgICBjYWxsIGZ0bl9zdHJwcm4ob3B0X3ZhbCkgISBbZm5jXSBQcmlu dCBjaGFyYWN0ZXIgdmFsdWVzIG9mIHN0cmluZwogICAgZW5kaWYgISBlbmRpZgogICAgcmV0 dXJuCiAgZW5kIHN1YnJvdXRpbmUgZnRuX2FyZ19nZXRfc25nCgogIGludGVnZXIgZnVuY3Rp b24gZnRuX3N0cnN0cihzbmcxLHNuZzIpICEgW2lkeF0gTG9jYXRpb24gb2Ygc25nMiBpbiBz bmcxCiAgICAhIFB1cnBvc2U6IFJldHVybiB0aGUgbG9jYXRpb24gb2Ygc2Vjb25kIHN0cmlu ZyBpbiB0aGUgZmlyc3QKICAgICEgRm9ydHJhbiBpbnRyaW5zaWMgbGVuKHNuZykgaXMgcmV0 dXJuZWQgaWYgc3RyaW5nIGlzIG5vdCBOVUwtdGVybWluYXRlZAogICAgISBSZXR1cm4gLTEg aWYgc25nMSBkb2VzIG5vdCBjb250YWluIHNuZzEKICAgICEgUHJvdG90eXBlOgogICAgISBp bnRlZ2VyIGZ0bl9zdHJzdHIgISBbaWR4XSBMb2NhdGlvbiBvZiBzbmcxIGluIHNuZzIKICAg IGltcGxpY2l0IG5vbmUKICAgICEgSW5wdXQKICAgIGNoYXJhY3RlcihsZW49KiksaW50ZW50 KGluKTo6c25nMQogICAgY2hhcmFjdGVyKGxlbj0qKSxpbnRlbnQoaW4pOjpzbmcyCiAgICAh IExvY2FsCiAgICBpbnRlZ2VyIGxlbjEKICAgIGludGVnZXIgbGVuMgogICAgaW50ZWdlciBs bmcxCiAgICBpbnRlZ2VyIGxuZzIKICAgIGludGVnZXIgaWR4MQogICAgaW50ZWdlciBpZHgy CiAgICAhIEluaXRpYWxpemUKICAgIGlkeDI9MCAhIENFV0kgZm9yIGxmOTUKICAgICEgTWFp biBDb2RlCiAgICBsZW4xPWxlbihzbmcxKQogICAgbGVuMj1sZW4oc25nMikKICAgIGxuZzE9 ZnRuX3N0cmxlbihzbmcxKSAhIFtuYnJdIExlbmd0aCBvZiBzdHJpbmcKICAgIGxuZzI9ZnRu X3N0cmxlbihzbmcyKSAhIFtuYnJdIExlbmd0aCBvZiBzdHJpbmcKICAgIGRvIGlkeDE9MSxs bmcxCiAgICAgICBpZiAoc25nMShpZHgxOmlkeDEpID09IHNuZzIoMToxKSkgdGhlbgogICAg ICAgICAgZG8gaWR4Mj0yLGxuZzIKICAgICAgICAgICAgIGlmIChzbmcxKGlkeDEraWR4Mi0x OmlkeDEraWR4Mi0xKSAvPSBzbmcyKGlkeDI6aWR4MikpIGdvdG8gMjAwCiAgICAgICAgICBl bmQgZG8gISBlbmQgbG9vcCBvdmVyIGNoYXJhY3RlcnMKICAgICAgICAgIGdvdG8gMTAwCiAg ICAgICBlbmRpZiAhIGVuZGlmCjIwMCBjb250aW51ZQogICAgZW5kIGRvICEgZW5kIGxvb3Ag b3ZlciBjaGFyYWN0ZXJzCjEwMCBjb250aW51ZQogICAgaWYgKGlkeDIgPT0gbG5nMisxKSB0 aGVuCiAgICAgICBmdG5fc3Ryc3RyPWlkeDEKICAgIGVsc2UKICAgICAgIGZ0bl9zdHJzdHI9 LTEKICAgIGVuZGlmICEgZW5kaWYKICAgIHJldHVybgogIGVuZCBmdW5jdGlvbiBmdG5fc3Ry c3RyCgogIHN1YnJvdXRpbmUgZnRuX3N0cmluaShzbmcpICEgW3NuZ10gc25nKDE6bGVuKT1O VUwKICAgICEgUHVycG9zZTogSW5pdGlhbGl6ZSBhbGwgZWxlbWVudHMgb2YgYSBjaGFyYWN0 ZXIgYXJyYXkgdG8gY2hhcigwKQogICAgISBVc2FnZToKICAgICEgY2FsbCBmdG5fc3RyaW5p KHNuZykgISBbc25nXSBzbmcoMTpsZW4pPU5VTAogICAgaW1wbGljaXQgbm9uZQogICAgISBJ bnB1dC9PdXRwdXQKICAgIGNoYXJhY3RlcihsZW49KiksaW50ZW50KG91dCk6OnNuZyAhIEkv TyBbc25nXSBTdHJpbmcgdG8gaW5pdGlhbGl6ZQogICAgISBMb2NhbAogICAgaW50ZWdlciBp ZHgKICAgIGludGVnZXIgbG5nCiAgICAhIE1haW4gQ29kZQogICAgbG5nPWxlbihzbmcpCiAg ICBkbyBpZHg9MSxsbmcKICAgICAgIHNuZyhpZHg6aWR4KT1jaGFyKDApCiAgICBlbmQgZG8g ISBlbmQgbG9vcCBvdmVyIGNoYXJhY3RlcnMKICAgICEgd3JpdGUgKDYsKikgJ2Z0bl9zdHJp bmkoKTogSW5pdGlhbGl6ZWQgc3RyaW5nIG9mIGxlbmd0aCcsbG5nCiAgICByZXR1cm4KICBl bmQgc3Vicm91dGluZSBmdG5fc3RyaW5pCgogIHN1YnJvdXRpbmUgZnRuX3N0cm51bChzbmcp ICEgW3Nicl0gTlVMLWluaXRpYWxpemUgYWxsIGNoYXJhY3RlcnMgYWZ0ZXIgTFNDCiAgICAh IFB1cnBvc2U6IENoYW5nZSBzcGFjZSBjaGFyYWN0ZXJzIHRvIE5VTCBjaGFyYWN0ZXJzIGlu IGEgc3RyaW5nCiAgICAhIFNwYWNlcyBhZnRlciBsYXN0IHNpZ25pZmljYW50IGNoYXJhY3Rl ciAoTFNDKSBpbiBzdHJpbmcgYXJlIGNoYW5nZWQgdG8gTlVMCiAgICAhIFNwYWNlcyBiZWZv cmUgTFNDIGFyZSBub3QgYWZmZWN0ZWQKICAgICEgVXNhZ2U6CiAgICAhIGNhbGwgZnRuX3N0 cm51bChzbmcpICEgW3Nicl0gTlVMLWluaXRpYWxpemUgYWxsIGNoYXJhY3RlcnMgYWZ0ZXIg TFNDCiAgICBpbXBsaWNpdCBub25lCiAgICAhIElucHV0L091dHB1dAogICAgY2hhcmFjdGVy KGxlbj0qKSxpbnRlbnQoaW5vdXQpOjpzbmcgISBJL08gW3NuZ10gU3RyaW5nIHRvIE5VTC1p bml0aWFsaXplCiAgICAhIExvY2FsCiAgICBpbnRlZ2VyIGlkeAogICAgaW50ZWdlciBsbmcK ICAgIGludGVnZXIgbHN0X3Nnbl9jaHJfaWR4CiAgICAhIE1haW4gQ29kZQogICAgbG5nPWZ0 bl9zdHJsZW4oc25nKSAhIFtuYnJdIExlbmd0aCBvZiBzdHJpbmcKICAgIGxzdF9zZ25fY2hy X2lkeD1mdG5fc3RybHNjKHNuZykKICAgIGRvIGlkeD1sc3Rfc2duX2Nocl9pZHgrMSxsbmcK ICAgICAgIGlmKHNuZyhpZHg6aWR4KSA9PSAnICcpIHNuZyhpZHg6aWR4KT1jaGFyKDApCiAg ICBlbmQgZG8gISBlbmQgbG9vcCBvdmVyIGNoYXJhY3RlcnMKICAgIHJldHVybgogIGVuZCBz dWJyb3V0aW5lIGZ0bl9zdHJudWwKCiAgaW50ZWdlciBmdW5jdGlvbiBmdG5fc3RybHNjKHNu ZykKICAgICEgUHVycG9zZTogUmV0dXJuIHBvc2l0aW9uIG9mIGxhc3Qgc2lnbmlmaWNhbnQg Y2hhcmFjdGVyIChMU0MpIGluIHN0cmluZwogICAgISBMU0MgaXMgbGFzdCBjaGFyYWN0ZXIg dGhhdCBpcyBub3QgYSBzcGFjZSBvciBhIE5VTCBjaGFyYWN0ZXIKICAgICEgUm91dGluZSBp cyB1c2VmdWwgaW4gZGV0ZXJtaW5pbmcgZWZmZWN0aXZlIGxlbmd0aHMgb2Ygc3RyaW5ncyB3 aGljaAogICAgISBtYXkgaGF2ZSBiZWVuIHBhZGRlZCBieSBjb21waWxlciBvciBzaGVsbC4K ICAgICEgQXV0b21hdGljIHBhZGRpbmcgaXMgYWx3YXlzIGRvbmUgd2l0aCBzcGFjZXMgb3Ig TlVMcywgc28gdGhpcyByb3V0aW5lCiAgICAhIHRlbGxzIHVzIGhvdyBsb25nIHRoZSBub24t cGFkZGVkIHBvcnRpb24gb2YgdGhlIHN0cmluZyBpcy4KICAgICEgUm91dGluZSB3aWxsIG1p cy1oYW5kbGUgdXNlci1kZWZpbmVkIHN0cmluZ3MgdGhhdCBlbmQgaW4gc3BhY2VzCiAgICAh IExTQyBpcyBhbHdheXMgPD0gbGVuKHNuZykKICAgICEgVXNhZ2U6CiAgICAhIHBzbj1mdG5f c3RybHNjKHNuZykgISBbaWR4XSBMYXN0IHNpZ25pZmljYW50IGNoYXJhY3RlciBwb3NpdGlv bgogICAgISBQcm90b3R5cGU6CiAgICAhIGludGVnZXIgZnRuX3N0cmxzYyAhIFtpZHhdIExh c3Qgc2lnbmlmaWNhbnQgY2hhcmFjdGVyIHBvc2l0aW9uCiAgICBpbXBsaWNpdCBub25lCiAg ICAhIElucHV0CiAgICBjaGFyYWN0ZXIobGVuPSopLGludGVudChpbik6OnNuZwogICAgISBM b2NhbAogICAgaW50ZWdlciBpZHgKICAgIGludGVnZXIgbG5nCiAgICAhIE1haW4gQ29kZQog ICAgbG5nPWxlbihzbmcpCiAgICBkbyBpZHg9bG5nLDEsLTEKICAgICAgICEgTG9vayBmb3Ig bGFzdCBub3JtYWwgY2hhcmFjdGVyCiAgICAgICBpZiAoc25nKGlkeDppZHgpIC89ICcgJy5h bmQuc25nKGlkeDppZHgpIC89IGNoYXIoMCkpIGdvdG8gMTAwCiAgICBlbmQgZG8gISBlbmQg bG9vcCBvdmVyIGNoYXJhY3RlcnMKMTAwIGNvbnRpbnVlCiAgICBmdG5fc3RybHNjPWlkeAog ICAgcmV0dXJuCiAgZW5kIGZ1bmN0aW9uIGZ0bl9zdHJsc2MKCiAgaW50ZWdlciBmdW5jdGlv biBmdG5fc3RyZmljKHNuZykgISBbaWR4XSBGaXJzdCBOVUwgb3IgOC1iaXQgY2hhcmFjdGVy IHBvc2l0aW9uCiAgICAhIFB1cnBvc2U6IFJldHVybiBwb3NpdGlvbiBvZiBmaXJzdCBpbnNp Z25pZmljYW50IGNoYXJhY3RlciAoRklDKSBpbiBzdHJpbmcKICAgICEgRklDIGlzIGZpcnN0 IE5VTCBjaGFyYWN0ZXIgaW4gc3RyaW5nLCBvciBmaXJzdCA4LWJpdCBjaGFyYWN0ZXIsIGku ZS4sIGlhY2hhciA+IDEyNwogICAgISBGSUMgaXMgbGVuKHNuZykrMSBpZiBzdHJpbmcgaGFz IG5vIE5VTCBjaGFyYWN0ZXIgYW5kIG5vIGlhY2hhciA+IDEyNwogICAgISBVc2FnZToKICAg ICEgcHNuPWZ0bl9zdHJmaWMoc25nKSAhIFtpZHhdIEZpcnN0IE5VTCBvciA4LWJpdCBjaGFy YWN0ZXIgcG9zaXRpb24KICAgICEgUHJvdG90eXBlOgogICAgISBpbnRlZ2VyIGZ0bl9zdHJm aWMgISBbaWR4XSBGaXJzdCBOVUwgb3IgOC1iaXQgY2hhcmFjdGVyIHBvc2l0aW9uCiAgICBp bXBsaWNpdCBub25lCiAgICAhIElucHV0CiAgICBjaGFyYWN0ZXIobGVuPSopLGludGVudChp bik6OnNuZyAhIEkgW3NuZ10gU3RyaW5nIHRvIGV4YW1pbmUKICAgICEgTG9jYWwKICAgIGlu dGVnZXIgaWR4CiAgICBpbnRlZ2VyIGxuZwogICAgISBNYWluIENvZGUKICAgIGxuZz1sZW4o c25nKQogICAgZG8gaWR4PTEsbG5nCiAgICAgICAhIExvb2sgZm9yIGZpcnN0IGFibm9ybWFs IGNoYXJhY3RlcgogICAgICAgaWYgKHNuZyhpZHg6aWR4KSA9PSBjaGFyKDApIC5vci4gaWFj aGFyKHNuZyhpZHg6aWR4KSkgPiAxMjcpIGdvdG8gMTAwCiAgICBlbmQgZG8gISBlbmQgbG9v cCBvdmVyIGNoYXJhY3RlcnMKMTAwIGNvbnRpbnVlCiAgICBmdG5fc3RyZmljPWlkeCAhIFtp ZHhdIEZpcnN0IE5VTCBvciA4LWJpdCBjaGFyYWN0ZXIgcG9zaXRpb24KICAgIHJldHVybgog IGVuZCBmdW5jdGlvbiBmdG5fc3RyZmljCgogIHN1YnJvdXRpbmUgZnRuX3N0cnBybihzbmcp ICEgW2ZuY10gUHJpbnQgY2hhcmFjdGVyIHZhbHVlcyBvZiBzdHJpbmcKICAgICEgUHVycG9z ZTogUHJpbnQgY2hhcmFjdGVyIHZhbHVlcyBvZiBzdHJpbmcKICAgICEgVXNhZ2U6CiAgICAh IGNhbGwgZnRuX3N0cnBybihzbmcpICEgW2ZuY10gUHJpbnQgY2hhcmFjdGVyIHZhbHVlcyBv ZiBzdHJpbmcKICAgIGltcGxpY2l0IG5vbmUKICAgICEgSW5wdXQKICAgIGNoYXJhY3Rlcihs ZW49KiksaW50ZW50KGluKTo6c25nCiAgICAhIExvY2FsCiAgICBjaGFyYWN0ZXIoMSkgY2hy X2NyciAhIFtzbmddIEN1cnJlbnQgY2hhcmFjdGVyCiAgICBpbnRlZ2VyIGlkeAogICAgaW50 ZWdlciBsbmcKICAgIGludGVnZXIgaWFjaHJfY3JyICEgW2VubV0gSW50ZWdlciByZXByZXNl bnRpbmcgY3VycmVudCBjaGFyYWN0ZXIKICAgICEgTWFpbiBDb2RlCiAgICBsbmc9bGVuKHNu ZykKICAgIGRvIGlkeD0xLGxuZwogICAgICAgISBQcmludCBlYWNoIG5vcm1hbCBjaGFyYWN0 ZXIKICAgICAgIGNocl9jcnI9c25nKGlkeDppZHgpICEgW3NuZ10gQ3VycmVudCBjaGFyYWN0 ZXIKICAgICAgIGlhY2hyX2Nycj1pYWNoYXIoY2hyX2NycikgISBbZW5tXSBJbnRlZ2VyIHJl cHJlc2VudGluZyBjdXJyZW50IGNoYXJhY3RlcgogICAgICAgaWYgKGlkeCA8IGxuZykgdGhl bgogICAgICAgICAgaWYgKGlhY2hyX2NyciA9PSAwKSB0aGVuCiAgICAgICAgICAgICB3cml0 ZSAoNiwnKGEzLGEzLGkzLGEyKScsYWR2YW5jZT0ibm8iKSAnTlVMJywnID0gJyxpYWNocl9j cnIsJywgJwogICAgICAgICAgZWxzZSBpZiAoaWFjaHJfY3JyID09IDMyKSB0aGVuCiAgICAg ICAgICAgICB3cml0ZSAoNiwnKGE1LGEzLGkzLGEyKScsYWR2YW5jZT0ibm8iKSAnU1BBQ0Un LCcgPSAnLGlhY2hyX2NyciwnLCAnCiAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB3cml0 ZSAoNiwnKGExLGEzLGkzLGEyKScsYWR2YW5jZT0ibm8iKSBjaHJfY3JyLCcgPSAnLGlhY2hy X2NyciwnLCAnCiAgICAgICAgICBlbmRpZiAhIGVuZGlmCiAgICAgICBlbHNlCiAgICAgICAg ICBpZiAoaWFjaHJfY3JyID09IDApIHRoZW4KICAgICAgICAgICAgIHdyaXRlICg2LCcoYTMs YTMsaTMpJykgJ05VTCcsJyA9ICcsaWFjaHJfY3JyLCcsICcKICAgICAgICAgIGVsc2UgaWYg KGlhY2hyX2NyciA9PSAzMikgdGhlbgogICAgICAgICAgICAgd3JpdGUgKDYsJyhhNSxhMyxp MyknKSAnU1BBQ0UnLCcgPSAnLGlhY2hyX2NyciwnLCAnCiAgICAgICAgICBlbHNlCiAgICAg ICAgICAgICB3cml0ZSAoNiwnKGExLGEzLGkzKScpIGNocl9jcnIsJyA9ICcsaWFjaHJfY3Jy LCcsICcKICAgICAgICAgIGVuZGlmICEgZW5kaWYKICAgICAgIGVuZGlmICEgZW5kaWYKICAg IGVuZCBkbyAhIGVuZCBsb29wIG92ZXIgY2hhcmFjdGVycwogICAgcmV0dXJuCiAgZW5kIHN1 YnJvdXRpbmUgZnRuX3N0cnBybgoKICBzdWJyb3V0aW5lIGZ0bl9zdHJjcHkoc25nMSxzbmcy KQogICAgISBQdXJwb3NlOiBDb3B5IHNuZzIgaW50byBzbmcxCiAgICAhIFNwYWNlIHJlbWFp bmluZyBhdCBlbmQgb2Ygc25nMSBpcyBOVUwtaW5pdGlhbGl6ZWQKICAgICEgVGhpcyBmdW5j dGlvbiB3b3JrcyB3ZWxsIGF0IGNvcHlpbmcgZml4ZWQgc3RyaW5ncyBpbnRvIHZhcmlhYmxl cywgZS5nLiwKICAgICEgVXNhZ2U6CiAgICAhIGNhbGwgZnRuX3N0cmNweShzbmcsJ0hlbGxv IFdvcmxkJykgISBbZm5jXSBDb3B5IHNuZzIgaW50byBzbmcxLCBOVUwtdGVybWluYXRlIHVu dXNlZCBzcGFjZQogICAgdXNlIGRiZ19tZGwgISBbbWRsXSBEZWJ1Z2dpbmcgY29uc3RhbnRz LCBwcmdfbm0sIGRiZ19sdmwKICAgIGltcGxpY2l0IG5vbmUKICAgICEgQ29tbW9ucwogICAg ISBJbnB1dAogICAgY2hhcmFjdGVyKGxlbj0qKSxpbnRlbnQoaW4pOjpzbmcyCiAgICAhIElu cHV0L091dHB1dAogICAgY2hhcmFjdGVyKGxlbj0qKSxpbnRlbnQoaW5vdXQpOjpzbmcxCiAg ICAhIExvY2FsCiAgICBpbnRlZ2VyIGxlbjEKICAgIGludGVnZXIgbGVuMgogICAgaW50ZWdl ciBsbmcxCiAgICBpbnRlZ2VyIGxuZzIKICAgICEgTWFpbiBDb2RlCiAgICBsZW4xPWxlbihz bmcxKQogICAgbGVuMj1sZW4oc25nMikKICAgICEgSW5pdGlhbGl6ZSBzbmcxIGJlZm9yZSBk aWFnbm9zdGljIGZ0bl9zdHJsZW4oc25nMSkgaXMgZXZhbHVhdGVkCiAgICAhIFRoaXMgaGFu ZGxlcyBzaXR1YXRpb24gd2hlbiBzbmcxIGlzIGxhcmdlIGVub3VnaCwgYnV0IG5vdC1pbml0 aWFsaXplZCBpbiBjYWxsaW5nIHJvdXRpbmUKICAgICEgT3RoZXJ3aXNlIHNvbWUgY29tcGls ZXJzLCBlLmcuLCBsZjk1IGluIGRlYnVnIG1vZGUsIG1heSBjb21wbGFpbiBpbiBmdG5fc3Ry bGVuKHNuZzEpLT5mdG5fc3RyZmljKCkKICAgICEgd2hlbiB0aGV5IGFyZSB1bmFibGUgdG8g ZGV0ZXJtaW5lIHN0cmluZyBsZW5ndGgKICAgICEgSW5pdGlhbGl6ZSBzbmcxIGJlZm9yZSBj b3B5aW5nIHNuZzIgaW50byBzbmcxIFdMT0cgc2luY2UgZnRuX3N0cmNweSgpIGJlaGF2aW9y CiAgICAhIGlzIGludGVuZGVkIHRvIG1pbWljIEMgbGlicmFyeSBzdHJjcHkoKSB3aGljaCBO VUwtdGVybWluYXRlcyB0aGUgY29weSwgYW5kIHRodXMKICAgICEgYWxsIG1hdGVyaWFsIGFm dGVyIHRoZSBOVUwgbWF5IGJlIGFzc3VtZWQgdG8gYmUgdW5kZWZpbmVkLCBpLmUuLCBzZXQg dG8gTlVMLgogICAgISBUaGlzIGlzIG5vdCBlcXVpdmFsZW50IHRvIGNhbGxpbmcgZnRuX3N0 cm51bChzbmcxKSBhZnRlciB0aGUgY29weSBzaW5jZSB3aGVuIHNuZzEgaXMgdW5kZWZpbmVk CiAgICAhIFRoZXJlIGNvdWxkIGJlIGNvcm5lciBjYXNlcyB3aGVyZSBjb250ZW50cyBvZiB1 bmRlZmluZWQgc25nMSBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkKICAgICEgZm9sbG93aW5nIGNv cHkgb2Ygc25nMiBpcyBub3QgTlVMIG9yIDgtYml0LiBSZXN1bHRzIGFyZSB1bnByZWRpY2F0 YWJsZSBpbiB0aGF0IGNhc2UuCiAgICAhIEhlbmNlIGluaXRpYWxpemUgc25nMSB0byBOVUwg YmVmb3JlIHVzaW5nIGZ0bl9zdHJsZW4oc25nMSkgYW5kIGJlZm9yZSBjb3B5aW5nIHNuZzIK ICAgIGNhbGwgZnRuX3N0cmluaShzbmcxKSAhIFtzbmddIHNuZygxOmxlbik9TlVMCiAgICBs bmcxPWZ0bl9zdHJsZW4oc25nMSkgISBbbmJyXSBMZW5ndGggb2Ygc3RyaW5nCiAgICBsbmcy PWZ0bl9zdHJsZW4oc25nMikgISBbbmJyXSBMZW5ndGggb2Ygc3RyaW5nCiAgICBpZiAobGVu MSA8IGxuZzIpIHRoZW4KICAgICAgIHdyaXRlICg2LCcoYSxhKScpIHByZ19ubSgxOmZ0bl9z dHJsZW4ocHJnX25tKSksJzogRVJST1IgbGVuMSA8IGxuZzIgaW4gZnRuX3N0cmNweSgpJwog ICAgICAgd3JpdGUgKDYsJyhhLGkzLGEsaTMsMmEpJykgJ2xlbjEgPSAnLGxlbjEsJywgbG5n MSA9ICcsbG5nMSwnLCBzbmcxID0gJyxzbmcxCiAgICAgICB3cml0ZSAoNiwnKGEsaTMsYSxp MywyYSknKSAnbGVuMiA9ICcsbGVuMiwnLCBsbmcyID0gJyxsbmcyLCcsIHNuZzIgPSAnLHNu ZzIKICAgICAgIHN0b3AgJ0VYSVRfRkFJTFVSRSBmcm9tIGZ0bl9zdHJjcHkoKScKICAgIGVu ZGlmICEgZW5kaWYKICAgIHNuZzEoMTpsbmcyKT1zbmcyKDE6bG5nMikKICAgIHJldHVybgog IGVuZCBzdWJyb3V0aW5lIGZ0bl9zdHJjcHkKCiAgaW50ZWdlciBmdW5jdGlvbiBmdG5fc3Ry Y21wKHNuZzEsc25nMikgISBbZm5jXSBDb21wYXJlIHNuZzEgdG8gc25nMjogLTEsMCwxIGlm ZiBzbmcxIDwsPSw+IHNuZzIKICAgICEgUHVycG9zZTogQ29tcGFyZSBzbmcyIHRvIHNuZzEK ICAgICEgUmV0dXJucyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiwgZXF1YWwgdG8sIG9yIGdyZWF0 ZXIgdGhhbgogICAgISB6ZXJvIGlmIHNuZzEgaXMgZm91bmQsIHJlc3BlY3RpdmVseSwgdG8g YmUgbGVzcyB0aGFuLCB0bwogICAgISBtYXRjaCwgb3IgYmUgZ3JlYXRlciB0aGFuIHNuZzIu CiAgICAhIFVzYWdlOgogICAgISBpZihmdG5fc3RyY21wKHNuZzEsIkhlbGxvIFdvcmxkIik9 PTApIHRoZW4gISBbZm5jXSBDb21wYXJlIHNuZzEgdG8gc25nMjogLTEsMCwxIGlmZiBzbmcx IDwsPSw+IHNuZzIKICAgIHVzZSBkYmdfbWRsICEgW21kbF0gRGVidWdnaW5nIGNvbnN0YW50 cywgcHJnX25tLCBkYmdfbHZsCiAgICBpbXBsaWNpdCBub25lCiAgICAhIENvbW1vbnMKICAg ICEgSW5wdXQKICAgIGNoYXJhY3RlcihsZW49KiksaW50ZW50KGluKTo6c25nMQogICAgY2hh cmFjdGVyKGxlbj0qKSxpbnRlbnQoaW4pOjpzbmcyCiAgICAhIElucHV0L091dHB1dAogICAg ISBMb2NhbAogICAgaW50ZWdlciBpZHggISBbaWR4XSBDb3VudGluZyBpZHgKICAgIGludGVn ZXIgbGVuMQogICAgaW50ZWdlciBsZW4yCiAgICBpbnRlZ2VyIGxuZzEKICAgIGludGVnZXIg bG5nMgogICAgaW50ZWdlciBsbmdfbWluCiAgICAhIE1haW4gQ29kZQogICAgbGVuMT1sZW4o c25nMSkKICAgIGxlbjI9bGVuKHNuZzIpCiAgICBsbmcxPWZ0bl9zdHJsZW4oc25nMSkgISBb bmJyXSBMZW5ndGggb2Ygc3RyaW5nCiAgICBsbmcyPWZ0bl9zdHJsZW4oc25nMikgISBbbmJy XSBMZW5ndGggb2Ygc3RyaW5nCiAgICBpZiAoLmZhbHNlLikgdGhlbgogICAgICAgISBJZiB0 aGlzIGRlYnVnZ2luZyBibG9jayBpcyB0dXJuZWQgb24gdGhlbiBhdHRlbXB0aW5nIHRvIHBy aW50LGZ0bl9zdHJjbXAoKQogICAgICAgISB3aWxsIGNhdXNlIGEgcmVjdXJzaXZlIEkvTyBl cnJvciBhdCBydW50aW1lCiAgICAgICB3cml0ZSAoNiwnKDJhKScpIHByZ19ubSgxOmZ0bl9z dHJsZW4ocHJnX25tKSksJzogREVCVUcgRGlhZ25vc3RpY3MgZnJvbSBmdG5fc3RyY21wKCkn CiAgICAgICB3cml0ZSAoNiwnKDIoYSxpMyksMmEpJykgJ2xlbjEgPSAnLGxlbjEsJywgbG5n MSA9ICcsbG5nMSwnLCBzbmcxID0gJyxzbmcxCiAgICAgICB3cml0ZSAoNiwnKDIoYSxpMyks MmEpJykgJ2xlbjIgPSAnLGxlbjIsJywgbG5nMiA9ICcsbG5nMiwnLCBzbmcyID0gJyxzbmcy CiAgICAgICBjYWxsIGZ0bl9zdHJwcm4oc25nMSkgISBbZm5jXSBQcmludCBjaGFyYWN0ZXIg dmFsdWVzIG9mIHN0cmluZwogICAgICAgY2FsbCBmdG5fc3RycHJuKHNuZzIpICEgW2ZuY10g UHJpbnQgY2hhcmFjdGVyIHZhbHVlcyBvZiBzdHJpbmcKICAgIGVuZGlmICEgZW5kaWYKICAg IGxuZ19taW49bWluKGxuZzEsbG5nMikKICAgIGRvIGlkeD0xLGxuZ19taW4KICAgICAgICEg UHJldmVudCBtZW1vcnkgb3ZlcnJ1bnMKICAgICAgICEgQ2hhcmFjdGVycyBhcmUgZXF1YWws IHByb2NlZWQgdG8gbmV4dCBjaGFyYWN0ZXIKICAgICAgIGlmIChpYWNoYXIoc25nMShpZHg6 aWR4KSkgPT0gaWFjaGFyKHNuZzIoaWR4OmlkeCkpKSBjeWNsZSAhIEdvdG8gbmV4dCBpdGVy YXRpb24KICAgICAgICEgQ2hhcmFjdGVycyBhcmUgdW5lcXVhbCwgZGV0ZXJtaW5lIHJlbGF0 aW9uc2hpcAogICAgICAgaWYgKGlhY2hhcihzbmcxKGlkeDppZHgpKSA8IGlhY2hhcihzbmcy KGlkeDppZHgpKSkgdGhlbgogICAgICAgICAgZnRuX3N0cmNtcD0tMSAhIFtmbmNdIENvbXBh cmUgc25nMSB0byBzbmcyOiAtMSwwLDEgaWZmIHNuZzEgPCw9LD4gc25nMgogICAgICAgZWxz ZSAhIChpYWNoYXIoc25nMShpZHg6aWR4KSkgPiBpYWNoYXIoc25nMihpZHg6aWR4KSkpCiAg ICAgICAgICBmdG5fc3RyY21wPTEgISBbZm5jXSBDb21wYXJlIHNuZzEgdG8gc25nMjogLTEs MCwxIGlmZiBzbmcxIDwsPSw+IHNuZzIKICAgICAgIGVuZGlmICEgZW5kaWYKCiAgICAgICAh IENoYXJhY3RlcnMgd2VyZSB1bmVxdWFsLCBleGl0IHdpdGggYXBwcm9wcmlhdGUgdmFsdWUK ICAgICAgIGdvdG8gMTAwICEgRXhpdCBCcmFuY2gKICAgIGVuZCBkbwoKICAgIGlmIChsbmcx ID09IGxuZzIpIHRoZW4KICAgICAgICEgQWxsIHNpZ25pZmljYW50IHZhbHVlcyBvZiBib3Ro IHN0cmluZ3Mgd2VyZSBlcXVhbCBpbiBhbGwgcG9zaXRpb25zCiAgICAgICAhIFRodXMgdGhl IHN0cmluZ3MgYXJlIGVxdWFsIGJ5IG91ciBjcml0ZXJpb24KICAgICAgIGZ0bl9zdHJjbXA9 MCAhIFtmbmNdIENvbXBhcmUgc25nMSB0byBzbmcyOiAtMSwwLDEgaWZmIHNuZzEgPCw9LD4g c25nMgogICAgZWxzZQogICAgICAgISBBbGwgc2lnbmlmaWNhbnQgdmFsdWVzIG9mIGJvdGgg c3RyaW5ncyB3ZXJlIGVxdWFsIGluIGFsbCBtdXR1YWxseSBsZWdhbCBwb3NpdGlvbnMKICAg ICAgICEgSG93ZXZlciwgb25lIHN0cmluZyBoYXMgbW9yZSBzaWduaWZpY2FudCBjaGFyYWN0 ZXJzIHRoYW4gdGhlIG90aGVyCiAgICAgICAhIFRodXMgcmV0dXJuIHZhbHVlIGRlcGVuZHMg b24gd2hpY2ggc3RyaW5nIGlzIGxvbmdlcgogICAgICAgaWYgKGxuZzEgPiBsbmcyKSB0aGVu CiAgICAgICAgICBmdG5fc3RyY21wPTEgISBbZm5jXSBDb21wYXJlIHNuZzEgdG8gc25nMjog LTEsMCwxIGlmZiBzbmcxIDwsPSw+IHNuZzIKICAgICAgIGVsc2UKICAgICAgICAgIGZ0bl9z dHJjbXA9LTEgISBbZm5jXSBDb21wYXJlIHNuZzEgdG8gc25nMjogLTEsMCwxIGlmZiBzbmcx IDwsPSw+IHNuZzIKICAgICAgIGVuZGlmICEgZW5kaWYKICAgIGVuZGlmICEgZW5kaWYgbG5n MSA9PSBsbmcyCgoxMDAgY29udGludWUgISBFeGl0IGJyYW5jaCBmb3IgdW5lcXVhbCB2YWx1 ZXMgaW5zaWRlIGxvb3AKICAgIHJldHVybgogIGVuZCBmdW5jdGlvbiBmdG5fc3RyY21wCgog IHN1YnJvdXRpbmUgZnRuX3N0cmNweWxzYyhzbmcxLHNuZzIpCiAgICAhIFB1cnBvc2U6IENv cHkgc25nMiBpbnRvIHNuZzEKICAgICEgU3BhY2UgcmVtYWluaW5nIGF0IGVuZCBvZiBzbmcx IGlzIE5VTC1pbml0aWFsaXplZAogICAgISBUaGlzIGZ1bmN0aW9uIHdvcmtzIHdlbGwgYXQg Y29weWluZyBmaXhlZCBzdHJpbmdzIGludG8gdmFyaWFibGVzLCBlLmcuLAogICAgISBVc2Fn ZToKICAgICEgY2FsbCBmdG5fc3RyY3B5bHNjKHNuZywnSGVsbG8gV29ybGQnKSAhIFtmbmNd IENvcHkgdXAgdG8gTFNDIG9mIHNuZzIgaW50byBzbmcxLCBOVUwtaW5pdGlhbGl6ZSB1bnVz ZWQgc3BhY2UKICAgIHVzZSBkYmdfbWRsICEgW21kbF0gRGVidWdnaW5nIGNvbnN0YW50cywg cHJnX25tLCBkYmdfbHZsCiAgICBpbXBsaWNpdCBub25lCiAgICAhIENvbW1vbnMKICAgICEg SW5wdXQKICAgIGNoYXJhY3RlcihsZW49KiksaW50ZW50KGluKTo6c25nMgogICAgISBJbnB1 dC9PdXRwdXQKICAgIGNoYXJhY3RlcihsZW49KiksaW50ZW50KGlub3V0KTo6c25nMQogICAg ISBMb2NhbAogICAgaW50ZWdlciBpZHggISBbaWR4XSBDb3VudGluZyBpZHgKICAgIGludGVn ZXIgbGVuMQogICAgaW50ZWdlciBsZW4yCiAgICBpbnRlZ2VyIGxzYzEKICAgIGludGVnZXIg bHNjMgogICAgISBNYWluIENvZGUKICAgIGxlbjE9bGVuKHNuZzEpCiAgICBsZW4yPWxlbihz bmcyKQogICAgbHNjMT1mdG5fc3RybHNjKHNuZzEpCiAgICBsc2MyPWZ0bl9zdHJsc2Moc25n MikKICAgIGlmIChsZW4xIDwgbHNjMikgdGhlbgogICAgICAgd3JpdGUgKDYsJyhhLGEpJykg cHJnX25tKDE6ZnRuX3N0cmxzYyhwcmdfbm0pKSwnOiBFUlJPUiBsZW4xIDwgbHNjMiBpbiBm dG5fc3RyY3B5bHNjKCknCiAgICAgICB3cml0ZSAoNiwnKGEsaTMsYSxpMywyYSknKSAnbGVu MSA9ICcsbGVuMSwnLCBsc2MxID0gJyxsc2MxLCcsIHNuZzEgPSAnLHNuZzEKICAgICAgIHdy aXRlICg2LCcoYSxpMyxhLGkzLDJhKScpICdsZW4yID0gJyxsZW4yLCcsIGxzYzIgPSAnLGxz YzIsJywgc25nMiA9ICcsc25nMgogICAgICAgc3RvcCAnRVhJVF9GQUlMVVJFIGZyb20gZnRu X3N0cmNweWxzYygpJwogICAgZW5kaWYgISBlbmRpZgogICAgc25nMSgxOmxzYzIpPXNuZzIo MTpsc2MyKQogICAgISBOVUwtaW5pdGlhbGl6ZSByZXN0IG9mIHN0cmluZwogICAgZG8gaWR4 PWxzYzIrMSxsZW4xCiAgICAgICBzbmcxKGlkeDppZHgpPWNoYXIoMCkKICAgIGVuZCBkbyAh IGVuZCBsb29wIG92ZXIgY2hhcmFjdGVycwogICAgcmV0dXJuCiAgZW5kIHN1YnJvdXRpbmUg ZnRuX3N0cmNweWxzYwoKICBzdWJyb3V0aW5lIGZ0bl9zdHJjYXQoICYgISBbZm5jXSBzbmcx IDo9IHNuZzEgLy8gc25nMgogICAgICAgc25nMSwgJiAhIEkvTyBbc25nXSBTdHJpbmcgdG8g YWZmaXggc2Vjb25kIHN0cmluZyB0bwogICAgICAgc25nMikgISBJIFtzbmddIFN0cmluZyB0 byBhZmZpeCB0byBmaXJzdCBzdHJpbmcKICAgICEgUHVycG9zZTogc25nMSA6PSBzbmcxIC8v IHNuZzIKICAgICEgVGhlIGNhc2Ugd2hlcmUgc25nMT1zbmcyIGlzIGhhbmRsZWQgY29ycmVj dGx5CiAgICAhIFVzYWdlOgogICAgISBjYWxsIGZ0bl9zdHJjYXQoc25nMSxzbmcyKSAhIFtm bmNdIHNuZzEgOj0gc25nMSAvLyBzbmcyCiAgICB1c2UgZGJnX21kbCAhIFttZGxdIERlYnVn Z2luZyBjb25zdGFudHMsIHByZ19ubSwgZGJnX2x2bAogICAgaW1wbGljaXQgbm9uZQogICAg ISBDb21tb25zCiAgICAhIElucHV0CiAgICBjaGFyYWN0ZXIobGVuPSopLGludGVudChpbik6 OnNuZzIgISBJIFtzbmddIFN0cmluZyB0byBhZmZpeCB0byBmaXJzdCBzdHJpbmcKICAgICEg SW5wdXQvT3V0cHV0CiAgICBjaGFyYWN0ZXIobGVuPSopLGludGVudChpbm91dCk6OnNuZzEg ISBJL08gW3NuZ10gU3RyaW5nIHRvIGFmZml4IHNlY29uZCBzdHJpbmcgdG8KICAgICEgTG9j YWwKICAgIGludGVnZXIgbGVuMQogICAgaW50ZWdlciBsZW4yCiAgICBpbnRlZ2VyIGxuZzEK ICAgIGludGVnZXIgbG5nMgogICAgISBNYWluIENvZGUKICAgIGxlbjE9bGVuKHNuZzEpCiAg ICBsZW4yPWxlbihzbmcyKQogICAgbG5nMT1mdG5fc3RybGVuKHNuZzEpICEgW25icl0gTGVu Z3RoIG9mIHN0cmluZwogICAgbG5nMj1mdG5fc3RybGVuKHNuZzIpICEgW25icl0gTGVuZ3Ro IG9mIHN0cmluZwogICAgaWYgKGxuZzErbG5nMiA+PSBsZW4xKSB0aGVuCiAgICAgICB3cml0 ZSAoNiwnKGEsYSknKSBwcmdfbm0oMTpmdG5fc3RybGVuKHByZ19ubSkpLCc6IEVSUk9SIGxu ZzErbG5nMiA+PSBsZW4xIGluIGZ0bl9zdHJjYXQoKScKICAgICAgIHdyaXRlICg2LCcoYSxp MyxhLGkzLDJhKScpICdsZW4xID0gJyxsZW4xLCcsIGxuZzEgPSAnLGxuZzEsJywgc25nMSA9 ICcsc25nMQogICAgICAgd3JpdGUgKDYsJyhhLGkzLGEsaTMsMmEpJykgJ2xlbjIgPSAnLGxl bjIsJywgbG5nMiA9ICcsbG5nMiwnLCBzbmcyID0gJyxzbmcyCiAgICAgICBzdG9wICdFWElU X0ZBSUxVUkUgZnJvbSBmdG5fc3RyY2F0KCknCiAgICBlbmRpZiAhIGVuZGlmCiAgICBzbmcx KGxuZzErMTpsbmcxK2xuZzIpPXNuZzIoMTpsbmcyKSAhIEkvTyBbc25nXSBTdHJpbmcgdG8g YWZmaXggc2Vjb25kIHN0cmluZyB0bwogICAgcmV0dXJuCiAgZW5kIHN1YnJvdXRpbmUgZnRu X3N0cmNhdAoKICBzdWJyb3V0aW5lIGZ0bl9zdHJwZngoc25nMSxzbmcyKSAhIFtzYnJdIHNu ZzIgOj0gc25nMSAvLyBzbmcyCiAgICAhIFB1cnBvc2U6IHNuZzIgOj0gc25nMSAvLyBzbmcy CiAgICAhIERpZmZlcmVuY2VzIHdpdGggZnRuX3N0cmNhdCgpOgogICAgISAxLiBSZXN1bHQg aXMgc3RvcmVkIGluIHNlY29uZCBzdHJpbmcgbm90IGZpcnN0IHN0cmluZwogICAgISAyLiBT dHJpbmdzIGFyZSB0cmltbWVkIGJlZm9yZSBjb25jYXRlbmF0aW9uCiAgICAhIFRoZSBjYXNl IHdoZXJlIHNuZzE9c25nMiBpcyBoYW5kbGVkIGNvcnJlY3RseQogICAgISBVc2FnZToKICAg ICEgY2FsbCBmdG5fc3RycGZ4KHNuZzEsc25nMikgISBbc2JyXSBzbmcyIDo9IHNuZzEgLy8g c25nMgogICAgdXNlIGRiZ19tZGwgISBbbWRsXSBEZWJ1Z2dpbmcgY29uc3RhbnRzLCBwcmdf bm0sIGRiZ19sdmwKICAgIGltcGxpY2l0IG5vbmUKICAgICEgQ29tbW9ucwogICAgISBJbnB1 dAogICAgY2hhcmFjdGVyKGxlbj0qKSxpbnRlbnQoaW4pOjpzbmcxCiAgICAhIE91dHB1dAog ICAgY2hhcmFjdGVyKGxlbj0qKSxpbnRlbnQoaW5vdXQpOjpzbmcyCiAgICAhIExvY2FsCiAg ICBpbnRlZ2VyIGxlbjEKICAgIGludGVnZXIgbGVuMgogICAgaW50ZWdlciBsZW5fdHJpbTEK ICAgIGludGVnZXIgbGVuX3RyaW0yCiAgICBpbnRlZ2VyIGxuZzEKICAgIGludGVnZXIgbG5n MgogICAgaW50ZWdlciBsc2MxCiAgICBpbnRlZ2VyIGxzYzIKICAgICEgTWFpbiBDb2RlCiAg ICBsZW4xPWxlbihzbmcxKQogICAgbGVuMj1sZW4oc25nMikKICAgIGxuZzE9ZnRuX3N0cmxl bihzbmcxKSAhIFtuYnJdIExlbmd0aCBvZiBzdHJpbmcKICAgIGxuZzI9ZnRuX3N0cmxlbihz bmcyKSAhIFtuYnJdIExlbmd0aCBvZiBzdHJpbmcKICAgIGxzYzE9ZnRuX3N0cmxzYyhzbmcx KQogICAgbHNjMj1mdG5fc3RybHNjKHNuZzIpCiAgICBsZW5fdHJpbTE9bGVuX3RyaW0oc25n MSkKICAgIGxlbl90cmltMj1sZW5fdHJpbShzbmcyKQogICAgaWYgKGxzYzErbHNjMiA+PSBs ZW4yKSB0aGVuCiAgICAgICB3cml0ZSAoNiwnKGEsYSknKSBwcmdfbm0oMTpmdG5fc3RybGVu KHByZ19ubSkpLCc6IEVSUk9SIGxzYzErbHNjMiA+PSBsZW4yIGluIGZ0bl9zdHJwZngoKScK ICAgICAgIHdyaXRlICg2LCcoNChhLGkzKSwyYSknKSAnbGVuMSA9ICcsbGVuMSwnLCBsZW5f dHJpbTEgPSAnLGxlbl90cmltMSwnLCBsbmcxID0gJyxsbmcxLCcsIHNuZzEgPSAnLHNuZzEK ICAgICAgIHdyaXRlICg2LCcoNChhLGkzKSwyYSknKSAnbGVuMiA9ICcsbGVuMiwnLCBsZW5f dHJpbTIgPSAnLGxlbl90cmltMiwnLCBsbmcyID0gJyxsbmcyLCcsIHNuZzIgPSAnLHNuZzIK ICAgICAgIGNhbGwgZnRuX3N0cnBybihzbmcxKQogICAgICAgY2FsbCBmdG5fc3RycHJuKHNu ZzIpCiAgICAgICBzdG9wICdFWElUX0ZBSUxVUkUgZnJvbSBmdG5fc3RycGZ4KCknCiAgICBl bmRpZiAhIGVuZGlmCiAgICAhIE9yZGVyIGlzIGltcG9ydGFudAogICAgc25nMihsc2MxKzE6 bHNjMStsc2MyKT1zbmcyKDE6bHNjMikKICAgIHNuZzIoMTpsc2MxKT1zbmcxKDE6bHNjMSkK ICAgIHJldHVybgogIGVuZCBzdWJyb3V0aW5lIGZ0bl9zdHJwZngKCiAgc3Vicm91dGluZSBm dG5fZHJjcGZ4KCAmICEgW3Nicl0gZmxfbm0gOj0gZHJjL2ZsX25tCiAgICAgICBkcmMsICYg ISBJIFtzbmddIERpcmVjdG9yeSB0byBwcmVwZW5kCiAgICAgICBmbF9ubSkgISBJL08gW3Nu Z10gRmlsZSBuYW1lCiAgICAhIFB1cnBvc2U6IGZsX25tIDo9IGRyYy9mbF9ubSwgbW9yZSBv ciBsZXNzCiAgICAhIERpZmZlcmVuY2VzIHdpdGggZnRuX3N0cnBmeCgpOgogICAgISAxLiBS ZXN1bHQgaXMgc3RvcmVkIGluIHNlY29uZCBzdHJpbmcgbm90IGZpcnN0IHN0cmluZwogICAg ISAyLiBTdHJpbmdzIGFyZSB0cmltbWVkIGJlZm9yZSBjb25jYXRlbmF0aW9uCiAgICAhIDMu IEZpbGVuYW1lcyBjb250YWluaW5nIHNsYXNoZXMgYXJlIHVuYWx0ZXJlZAogICAgISBVc2Fn ZToKICAgICEgY2FsbCBmdG5fZHJjcGZ4KGRyYyxmbF9ubSkgISBbc2JyXSBmbF9ubSA6PSBk cmMvZmxfbm0KICAgIHVzZSBkYmdfbWRsICEgW21kbF0gRGVidWdnaW5nIGNvbnN0YW50cywg cHJnX25tLCBkYmdfbHZsCiAgICBpbXBsaWNpdCBub25lCiAgICAhIENvbW1vbnMKICAgICEg SW5wdXQKICAgIGNoYXJhY3RlcihsZW49KiksaW50ZW50KGluKTo6ZHJjICEgSSBbc25nXSBE aXJlY3RvcnkgdG8gcHJlcGVuZAogICAgISBJbnB1dC9PdXRwdXQKICAgIGNoYXJhY3Rlcihs ZW49KiksaW50ZW50KGlub3V0KTo6Zmxfbm0gISBJL08gW3Nicl0gRmlsZSBuYW1lCiAgICAh IExvY2FsCiAgICBpbnRlZ2VyIGxlbl9kcmMKICAgIGludGVnZXIgbGVuX2ZsCiAgICBpbnRl Z2VyIGxuZ19kcmMKICAgIGludGVnZXIgbG5nX2ZsCiAgICAhIE1haW4gQ29kZQogICAgbGVu X2RyYz1sZW4oZHJjKQogICAgbGVuX2ZsPWxlbihmbF9ubSkKICAgIGxuZ19kcmM9ZnRuX3N0 cmxlbihkcmMpICEgW25icl0gTGVuZ3RoIG9mIHN0cmluZwogICAgbG5nX2ZsPWZ0bl9zdHJs ZW4oZmxfbm0pICEgW25icl0gTGVuZ3RoIG9mIHN0cmluZwogICAgaWYgKGxuZ19kcmMrbG5n X2ZsID49IGxlbl9mbCkgdGhlbgogICAgICAgd3JpdGUgKDYsJyhhLGEpJykgcHJnX25tKDE6 ZnRuX3N0cmxlbihwcmdfbm0pKSwnOiBFUlJPUiBsbmdfZHJjK2xuZ19mbCA+PSBsZW5fZmwg aW4gZnRuX2RyY3BmeCgpJwogICAgICAgd3JpdGUgKDYsJyg0KGEsaTMpLDJhKScpICdsZW5f ZHJjID0gJyxsZW5fZHJjLCcsIGxuZ19kcmMgPSAnLGxuZ19kcmMsJywgZHJjID0gJyxkcmMK ICAgICAgIHdyaXRlICg2LCcoNChhLGkzKSwyYSknKSAnbGVuX2ZsID0gJyxsZW5fZmwsJywg bG5nX2ZsID0gJyxsbmdfZmwsJywgZmxfbm0gPSAnLGZsX25tCiAgICAgICBjYWxsIGZ0bl9z dHJwcm4oZHJjKQogICAgICAgY2FsbCBmdG5fc3RycHJuKGZsX25tKQogICAgICAgc3RvcCAn RVhJVF9GQUlMVVJFIGZyb20gZnRuX2RyY3BmeCgpJwogICAgZW5kaWYgISBlbmRpZgoKICAg IGlmICggJiAhIENvbmRpdGlvbnMgZm9yIHByZXBlbmRpbmcgZmxfbm0gd2l0aCBkcmM6CiAg ICAgICAgIGxuZ19kcmMgPiAwIC5hbmQuICYgISBEaXJlY3RvcnkgbXVzdCBiZSBub24tTlVM CiAgICAgICAgIGZ0bl9zdHJzdHIoZmxfbm0sJy8nKSA9PSAtMSAmICEgZmxfbm0gZG9lcyBu b3QgbG9vayBsaWtlIGRpcmVjdG9yeSBpdHNlbGYKICAgICAgICAgKSB0aGVuCiAgICAgICAh IElmIGRpcmVjdG9yeSBkb2VzIG5vdCBoYXZlIHRyYWlsaW5nIHNsYXNoLi4uCiAgICAgICBp ZiAoZHJjKGxuZ19kcmM6bG5nX2RyYykgLz0gJy8nKSB0aGVuICEgRGlyZWN0b3J5IGRvZXMg bm90IGhhdmUgdHJhaWxpbmcgc2xhc2gKICAgICAgICAgICEgLi4uYW5kIGlmIHJvb20gZXhp c3RzIGZvciBvbmUuLi4KICAgICAgICAgIGlmIChsbmdfZHJjK2xuZ19mbCsxIDwgbGVuX2Zs KSB0aGVuCiAgICAgICAgICAgICAhIC4uLnRoZW4gYWRkIG9uZQogICAgICAgICAgICAgISBP cmRlciBpcyBpbXBvcnRhbnQKICAgICAgICAgICAgIGZsX25tKGxuZ19kcmMrMjpsbmdfZHJj KzIrbG5nX2ZsKT1mbF9ubSgxOmxuZ19mbCkKICAgICAgICAgICAgIGZsX25tKDE6bG5nX2Ry Yyk9ZHJjKDE6bG5nX2RyYykKICAgICAgICAgICAgIGZsX25tKGxuZ19kcmMrMTpsbmdfZHJj KzEpPScvJwogICAgICAgICAgZW5kaWYgISBlbmRpZiBhZGRpbmcgdHJhaWxpbmcgc2xhc2gK ICAgICAgIGVsc2UgISBEaXJlY3RvcnkgZG9lcyBoYXZlIHRyYWlsaW5nIHNsYXNoCiAgICAg ICAgICBmbF9ubShsbmdfZHJjKzE6bG5nX2RyYysxK2xuZ19mbCk9Zmxfbm0oMTpsbmdfZmwp CiAgICAgICAgICBmbF9ubSgxOmxuZ19kcmMpPWRyYygxOmxuZ19kcmMpCiAgICAgICBlbmRp ZiAhIERpcmVjdG9yeSBkb2VzIGhhdmUgdHJhaWxpbmcgc2xhc2gKICAgIGVuZGlmICEgZW5k aWYgcHJlcGVuZGluZyBkcmMKICAgIGNhbGwgZnRuX3N0cm51bChmbF9ubSkgISBbc2JyXSBO VUwtaW5pdGlhbGl6ZSBhbGwgY2hhcmFjdGVycyBhZnRlciBMU0MKCiAgICByZXR1cm4KICBl bmQgc3Vicm91dGluZSBmdG5fZHJjcGZ4CgogIHN1YnJvdXRpbmUgZnRuX3ByZ19JRF9tayhD VlNfSWQsQ1ZTX1JldmlzaW9uLENWU19EYXRlLHByZ19JRCkKICAgICEgUHVycG9zZTogQ3Jl YXRlIGlkZW50aXR5IHN0cmluZyBmcm9tIENWUyBpbnB1dAogICAgdXNlIGRiZ19tZGwgISBb bWRsXSBEZWJ1Z2dpbmcgY29uc3RhbnRzLCBwcmdfbm0sIGRiZ19sdmwKICAgIGltcGxpY2l0 IG5vbmUKICAgICEgQ29tbW9ucwogICAgISBQYXJhbWV0ZXIKICAgIGludGVnZXIscGFyYW1l dGVyOjpDVlNfa2s9MAogICAgaW50ZWdlcixwYXJhbWV0ZXI6OkNWU19rdj0xCiAgICBpbnRl Z2VyLHBhcmFtZXRlcjo6Q1ZTX2trdj0yCiAgICAhIElucHV0CiAgICBjaGFyYWN0ZXIobGVu PSopLGludGVudChpbik6OkNWU19JZAogICAgY2hhcmFjdGVyKGxlbj0qKSxpbnRlbnQoaW4p OjpDVlNfUmV2aXNpb24KICAgIGNoYXJhY3RlcihsZW49KiksaW50ZW50KGluKTo6Q1ZTX0Rh dGUKICAgICEgT3V0cHV0CiAgICBjaGFyYWN0ZXIobGVuPSopLGludGVudChvdXQpOjpwcmdf SUQKICAgICEgTG9jYWwKICAgIGludGVnZXIgQ1ZTX3R5cAogICAgaW50ZWdlciBEYXRlX3B0 cgogICAgaW50ZWdlciBzbGFzaF9wdHIKICAgIGludGVnZXIgcHJnX3B0cgogICAgaW50ZWdl ciB2cnNfcHRyCiAgICAhIE1haW4gQ29kZQogICAgISBEZWNpZGUgaG93IENWUyBrZXl3b3Jk cyB3ZXJlIGV4cGFuZGVkCiAgICBEYXRlX3B0cj1mdG5fc3Ryc3RyKENWU19EYXRlLCdEYXRl JykKICAgIGlmIChEYXRlX3B0ciA8IDApIHRoZW4KICAgICAgICEgU3RyaW5nICdEYXRlJyB3 YXMgbm90IGZvdW5kLS0tQ1ZTIGV4cGFuc2lvbiBtdXN0IGJlIC1rdgogICAgICAgQ1ZTX3R5 cD1DVlNfa3YKICAgIGVsc2UKICAgICAgICEgU3RyaW5nICdEYXRlJyB3YXMgZm91bmQtLS1D VlMgZXhwYW5zaW9uIGlzIC1rayBvciAta2t2CiAgICAgICBzbGFzaF9wdHI9ZnRuX3N0cnN0 cihDVlNfRGF0ZSwnLycpCiAgICAgICBpZiAoc2xhc2hfcHRyID4gMCkgdGhlbgogICAgICAg ICAgQ1ZTX3R5cD1DVlNfa2t2CiAgICAgICBlbHNlCiAgICAgICAgICBDVlNfdHlwPUNWU19r awogICAgICAgZW5kaWYgISBlbmRpZgogICAgZW5kaWYgISBlbmRpZgoKICAgIGlmICguZmFs c2UuKSB0aGVuCiAgICAgICB3cml0ZSAoNiwnKGEsYSknKSBwcmdfbm0oMTpmdG5fc3RybGVu KHByZ19ubSkpLCc6IERFQlVHIGZ0bl9wcmdfSURfbWsoKSByZXBvcnRzIENWUyBzdHJpbmdz OicKICAgICAgIHdyaXRlICg2LCcoYSxhKScpICdDVlNfSWQ6ICcsQ1ZTX0lkCiAgICAgICB3 cml0ZSAoNiwnKGEsYSknKSAnQ1ZTX1JldmlzaW9uOiAnLENWU19SZXZpc2lvbgogICAgICAg d3JpdGUgKDYsJyhhLGEpJykgJ0NWU19EYXRlOiAnLENWU19EYXRlCiAgICAgICB3cml0ZSAo NiwnKGEsaTEpJykgJ0NWU190eXA6ICcsQ1ZTX3R5cAogICAgICAgd3JpdGUgKDYsJyhhLGky KScpICdEYXRlX3B0cjogJyxEYXRlX3B0cgogICAgICAgd3JpdGUgKDYsJyhhLGkyKScpICdz bGFzaF9wdHI6ICcsc2xhc2hfcHRyCiAgICBlbmRpZgoKICAgICEgQ1ZTX1JldmlzaW9uIGFu ZCBDVlNfRGF0ZSBhcmUgcGFyYW1ldGVycy0tLWRvIG5vdCBhdHRlbXB0IHRvIHdyaXRlIHRo ZW0KICAgICEgY2FsbCBmdG5fc3RybnVsKENWU19SZXZpc2lvbikgISBbc2JyXSBOVUwtaW5p dGlhbGl6ZSBhbGwgY2hhcmFjdGVycyBhZnRlciBMU0MKICAgICEgY2FsbCBmdG5fc3RybnVs KENWU19EYXRlKSAhIFtzYnJdIE5VTC1pbml0aWFsaXplIGFsbCBjaGFyYWN0ZXJzIGFmdGVy IExTQwogICAgY2FsbCBmdG5fc3RyaW5pKHByZ19JRCkgISBbc25nXSBzbmcoMTpsZW4pPU5V TAogICAgaWYgKENWU190eXAgPT0gQ1ZTX2trKSB0aGVuCiAgICAgICBwcmdfSUQ9J1NvdXJj ZSBmaWxlIHVua25vd24gVmVyc2lvbiB1bmtub3duIERhdGUgdW5rbm93bicgLy8gY2hhcigw KQogICAgZWxzZQogICAgICAgcHJnX3B0cj1mdG5fc3Ryc3RyKENWU19JZCwnLHYnKSAhICcs dicgaXMgcmlnaHQgYWZ0ZXIgcHJvZ3JhbSBuYW1lCiAgICAgICBpZiAocHJnX3B0ciA8IDAp IHN0b3AgJ0VSUk9SOiBmdG5fcHJnX0lEX21rKCkgdW5hYmxlIHRvIGZpbmQgc291cmNlIGNv ZGUgbmFtZScKICAgICAgIGlmIChDVlNfdHlwID09IENWU19rdikgdGhlbgogICAgICAgICAg cHJnX0lEPUNWU19JZCgxOnByZ19wdHItMSkgLy8gICYKICAgICAgICAgICAgICAgJyB2ZXJz aW9uICcgLy8gQ1ZTX1JldmlzaW9uKDE6ZnRuX3N0cmxlbihDVlNfUmV2aXNpb24pKSAvLyAg JgogICAgICAgICAgICAgICAnIGRhdGVkICcgLy8gQ1ZTX0RhdGUoMTpmdG5fc3RybGVuKENW U19EYXRlKSkgLy8gJyBHTVQnIC8vIGNoYXIoMCkKICAgICAgIGVsc2UgaWYgKENWU190eXAg PT0gQ1ZTX2trdikgdGhlbgogICAgICAgICAgdnJzX3B0cj1mdG5fc3Ryc3RyKENWU19SZXZp c2lvbiwnaW9uOicpICEgJ2lvbjonIHNob3VsZCBhcHBlYXIgdHdvIGNoYXJhY3RlcnMgYmVm b3JlIHZlcnNpb24KICAgICAgICAgIGlmICh2cnNfcHRyIDwgMCkgc3RvcCAnRVJST1I6IGZ0 bl9wcmdfSURfbWsoKSB1bmFibGUgdG8gZmluZCByZXZpc2lvbiBudW1iZXInCiAgICAgICAg ICBwcmdfSUQ9Q1ZTX0lkKDY6cHJnX3B0ci0xKSAvLyAgJgogICAgICAgICAgICAgICAnIHZl cnNpb24gJyAvLyBDVlNfUmV2aXNpb24odnJzX3B0cis1OmZ0bl9zdHJsZW4oQ1ZTX1Jldmlz aW9uKS0yKSAvLyAgJgogICAgICAgICAgICAgICAnIGRhdGVkICcgLy8gQ1ZTX0RhdGUoODoy NikgLy8gJyBHTVQnIC8vIGNoYXIoMCkKICAgICAgIGVsc2UKICAgICAgICAgIHdyaXRlICg2 LCcoYSxhKScpIHByZ19ubSgxOmZ0bl9zdHJsZW4ocHJnX25tKSksJzogRVJST1IgZnRuX3By Z19JRF9taygpIHJlcG9ydHMgdW5rbm93biBDVlNfdHlwJwogICAgICAgZW5kaWYgISBlbmRp ZgogICAgZW5kaWYgISBlbmRpZgogICAgcmV0dXJuCiAgZW5kIHN1YnJvdXRpbmUgZnRuX3By Z19JRF9tawoKICBzdWJyb3V0aW5lIGZ0bl9jbWRfbG5fc25nKGNtZF9sbikgISBbc25nXSBS ZS1jb25zdHJ1Y3QgY29tbWFuZCBsaW5lIGludG8gc2luZ2xlIHN0cmluZwogICAgISBQdXJw b3NlOiBSZXR1cm4gYSBjb3B5IG9mIGNvbW1hbmQgbGluZSBhbmQgaW5pdGlhbGl6ZSBwcm9n cmFtIG5hbWUKICAgICEgU2VlIGh0dHA6Ly93d3cud2ludGVyYWN0ZXIuY29tL2Yya2NsaS9p bmRleC5odG0gZm9yIGFsdGVybmF0aXZlcwogICAgISBVc2FnZToKICAgICEgY2FsbCBmdG5f Y21kX2xuX3NuZyhjbWRfbG4pICEgW3NuZ10gQ29tbWFuZCBsaW5lCiAgICB1c2UgZGJnX21k bCAhIFttZGxdIERlYnVnZ2luZyBjb25zdGFudHMsIHByZ19ubSwgZGJnX2x2bAogICAgaW1w bGljaXQgbm9uZQogICAgISBDb21tb25zCiAgICAhIE91dHB1dAogICAgY2hhcmFjdGVyKGxl bj0qKSxpbnRlbnQob3V0KTo6Y21kX2xuICEgTyBbc25nXSBDb21tYW5kIGxpbmUKICAgICEg TG9jYWwKICAgIGNoYXJhY3RlcihsZW49ODApIGFyZ192YWwgISBbc25nXSBDb21tYW5kIGxp bmUgYXJndW1lbnQgdmFsdWUKICAgIGludGVnZXIgYXJnX2lkeCAhIFtpZHhdIENvdW50aW5n IGluZGV4CiAgICBpbnRlZ2VyIGFyZ19sbmcgISBbbmJyXSBMZW5ndGggb2YgYXJndW1lbnQK ICAgIGludGVnZXIgYXJnX25iciAhIFtuYnJdIE51bWJlciBvZiBjb21tYW5kIGxpbmUgYXJn dW1lbnRzCiAgICBpbnRlZ2VyIGNtZF9sbl9sZW4gISBbbmJyXSBMZW5ndGggb2YgY29tbWFu ZCBsaW5lCiAgICBpbnRlZ2VyIGNtZF9sbl9sbmcgISBbbmJyXSBMZW5ndGggb2YgY29tbWFu ZCBsaW5lCiAgICAhIE1haW4gQ29kZQogICAgISBJbml0aWFsaXplIGRlZmF1bHRzCiAgICBj YWxsIGZ0bl9zdHJpbmkoY21kX2xuKSAhIFtzbmddIHNuZygxOmxlbik9TlVMCiAgICBjYWxs IGZ0bl9zdHJpbmkocHJnX25tKSAhIFtzbmddIHNuZygxOmxlbik9TlVMCiAgICBjbWRfbG5f bGVuPWxlbihjbWRfbG4pICEgW25icl0gTGVuZ3RoIG9mIGNvbW1hbmQgbGluZQoKICAgIGFy Z19uYnI9Y29tbWFuZF9hcmd1bWVudF9jb3VudCgpICEgW25icl0gTnVtYmVyIG9mIGNvbW1h bmQgbGluZSBhcmd1bWVudHMKICAgIGlmIChkYmdfbHZsID49IGRiZ192ZWMpIHRoZW4KICAg ICAgIHdyaXRlICg2LCcoYSxpMiknKSAnZnRuX2NtZF9sbl9zbmcoKTogYXJnX25iciA9ICcs YXJnX25icgogICAgZW5kaWYgISBlbmRpZiBkYmcKCiAgICAhIExvb3Agb3ZlciBhcmd1bWVu dHMKICAgIGRvIGFyZ19pZHg9MCxhcmdfbmJyICEgTkI6IExvb3Agc3RhcnRzIHdpdGggMAog ICAgICAgISBBcmd1bWVudCAwIGlzIHRoZSBwcm9ncmFtIG5hbWUKICAgICAgICEgaWYgKGFy Z19pZHggPiAwKSBjYWxsIGZ0bl9zdHJjYXQoY21kX2xuLCcgJykKICAgICAgICEgQXBwZW5k IGEgc3BhY2UgaW4gYmV0d2VlbiBhcmd1bWVudHMKICAgICAgIGlmIChhcmdfaWR4ID4gMCkg Y21kX2xuKGNtZF9sbl9sbmcrMTpjbWRfbG5fbG5nKzEpPScgJwogICAgICAgY2FsbCBmdG5f c3RyaW5pKGFyZ192YWwpICEgW3NuZ10gc25nKDE6bGVuKT1OVUwKICAgICAgIGNhbGwgZ2V0 X2NvbW1hbmRfYXJndW1lbnQoYXJnX2lkeCxhcmdfdmFsKQogICAgICAgY2FsbCBmdG5fc3Ry bnVsKGFyZ192YWwpICEgW3Nicl0gTlVMLWluaXRpYWxpemUgYWxsIGNoYXJhY3RlcnMgYWZ0 ZXIgTFNDCiAgICAgICBjYWxsIGZ0bl9zdHJjYXQoY21kX2xuLGFyZ192YWwpCiAgICAgICBp ZiAoYXJnX2lkeCA9PSAwKSBjYWxsIGZ0bl9zdHJjcHkocHJnX25tLGFyZ192YWwpICFbc25n XSBQcm9ncmFtIG5hbWUKICAgICAgIGNtZF9sbl9sbmc9ZnRuX3N0cmxlbihjbWRfbG4pICEg W25icl0gTGVuZ3RoIG9mIHN0cmluZwogICAgICAgaWYgKGNtZF9sbl9sbmcgPiBjbWRfbG5f bGVuKSBzdG9wICdjbWRfbG5fbG5nID4gY21kX2xuX2xlbiBpbiBmdG5fY21kX2xuX3NuZygp JwogICAgICAgaWYgKGRiZ19sdmwgPj0gZGJnX3ZyYikgdGhlbgogICAgICAgICAgd3JpdGUg KDYsJyhhLGkzKScpICdhcmdfaWR4ID0gJyxhcmdfaWR4CiAgICAgICAgICB3cml0ZSAoNiwn KGEsYSknKSAnYXJnX3ZhbCA9ICcsYXJnX3ZhbAogICAgICAgICAgd3JpdGUgKDYsJyhhLGkz KScpICdsZW4oYXJnX3ZhbCkgPSAnLGxlbihhcmdfdmFsKQogICAgICAgICAgd3JpdGUgKDYs JyhhLGkzKScpICdmdG5fc3RybGVuKGFyZ192YWwpID0gJyxmdG5fc3RybGVuKGFyZ192YWwp CiAgICAgICAgICB3cml0ZSAoNiwnKGEsaTMpJykgJ2Z0bl9zdHJsZW4oY21kX2xuKSA9ICcs ZnRuX3N0cmxlbihjbWRfbG4pCiAgICAgICAgICB3cml0ZSAoNiwnKGEsYSknKSAnY21kX2xu ID0gJyxjbWRfbG4KICAgICAgIGVuZGlmICEgZW5kaWYgZGJnCiAgICBlbmQgZG8gISBlbmQg bG9vcCBvdmVyIGFyZwoKICAgIGlmIChkYmdfbHZsID49IGRiZ19pbykgd3JpdGUgKDYsJyhh LGEpJykgJ2NtZF9sbiA9ICcsY21kX2xuKDE6ZnRuX3N0cmxlbihjbWRfbG4pKQogICAgcmV0 dXJuCiAgZW5kIHN1YnJvdXRpbmUgZnRuX2NtZF9sbl9zbmcKCiAgY2hhcmFjdGVyKGxlbj0x MCkgZnVuY3Rpb24gZnRuX2RhdGUyc25nKGlkYXRlKQogICAgISBQdXJwb3NlOiBDb252ZXJ0 IGludGVnZXIgZGF0ZSBpbiBZWVlZTU1ERCB0byBhIGNoYXJhY3RlciBhcnJheSBpbiB0aGUg Zm9ybQogICAgISAnWVlZWS1NTS1ERCcKICAgICEgQXV0aG9yOiBCcmlhbiBFYXRvbiBjaGFy dXRsLkY6aWRhdGUyY2hhcigpCiAgICAhIFJlY29kZWQ6IDE5OTkwOTAxIENoYXJsaWUgWmVu ZGVyCiAgICAhIFVzYWdlOgogICAgISBjaGFyYWN0ZXIobGVuPTEwKSBmdG5fZGF0ZTJzbmcg ISBbc25nXSBDb252ZXJ0IFlZWVlNTUREIGludGVnZXIgdG8gWVlZWS1NTS1ERCBzdHJpbmcK ICAgIGltcGxpY2l0IG5vbmUKICAgICEgSW5wdXQKICAgIGludGVnZXIsaW50ZW50KGluKTo6 aWRhdGUKICAgICEgTG9jYWwKICAgIGludGVnZXIgeXkKICAgIGludGVnZXIgbW0KICAgIGlu dGVnZXIgZGQKICAgIGNoYXJhY3RlciBkYXNoCiAgICAhIE1haW4gY29kZQogICAgZGFzaD0n LScKICAgICEgRXh0cmFjdCB5ZWFyLCBtb250aCwgYW5kIGRheSBmcm9tIGRhdGUKICAgIHl5 PWlkYXRlLzEwMDAwCiAgICBtbT1tb2QoYWJzKGlkYXRlKSwxMDAwMCkvMTAwCiAgICBkZD1t b2QoYWJzKGlkYXRlKSwxMDApCiAgICB3cml0ZShmdG5fZGF0ZTJzbmcsJyhpNC40LGExLGky LjIsYTEsaTIuMiknKSB5eSxkYXNoLG1tLGRhc2gsZGQKICAgIHJldHVybgogIGVuZCBmdW5j dGlvbiBmdG5fZGF0ZTJzbmcKCiAgY2hhcmFjdGVyKGxlbj04KSBmdW5jdGlvbiBmdG5fc2Vj MnNuZyhpc2VjKQogICAgISBQdXJwb3NlOiBDb252ZXJ0IGludGVnZXIgc2Vjb25kcyB0byBh IGNoYXJhY3RlciBhcnJheSBpbiB0aGUgZm9ybSAnSEg6TU06U1MnCiAgICAhIEF1dGhvcjog QnJpYW4gRWF0b24gY2hhcnV0bC5GOmlzZWMyY2hhcigpCiAgICAhIFJlY29kZWQ6IDE5OTkw OTAxIENoYXJsaWUgWmVuZGVyCiAgICAhIGNoYXJhY3RlcihsZW49OCkgZnRuX3NlYzJzbmcg ISBbc25nXSBDb252ZXJ0IGludGVnZXIgdG8gJ0hIOk1NOlNTJyBzdHJpbmcKICAgIGltcGxp Y2l0IG5vbmUKICAgICEgSW5wdXQKICAgIGludGVnZXIsaW50ZW50KGluKTo6aXNlYwogICAg ISBMb2NhbAogICAgaW50ZWdlciBoaAogICAgaW50ZWdlciBtbQogICAgaW50ZWdlciBzcwog ICAgY2hhcmFjdGVyIGNvbG9uCiAgICAhIE1haW4gQ29kZQogICAgY29sb249JzonCiAgICAh IEV4dHJhY3QgaG91ciwgbWludXRlcywgc2Vjb25kcwogICAgaGg9aXNlYy8zNjAwCiAgICBt bT1tb2QoaXNlYywzNjAwKS82MAogICAgc3M9bW9kKGlzZWMsNjApCiAgICB3cml0ZShmdG5f c2VjMnNuZywnKGkyLjIsYTEsaTIuMixhMSxpMi4yKScpIGhoLGNvbG9uLG1tLGNvbG9uLHNz CiAgICByZXR1cm4KICBlbmQgZnVuY3Rpb24gZnRuX3NlYzJzbmcKCmVuZCBtb2R1bGUgc25n X21kbCAhIFttZGxdIFN0cmluZyBtYW5pcHVsYXRpb24K --12.Aug.2003mysteryboxofun Content-Type: application/octet-stream; name="sng.f90" Content-Description: ~/f/sng.f90 Content-Transfer-Encoding: base64 cHJvZ3JhbSBzbmcKCiAgISBQdXJwb3NlOiBEZW1vbnN0cmF0ZSBjb21tYW5kIGxpbmUgYXJn dW1lbnQtaGFuZGxpbmcgYW5kIHN0cmluZyBtYW5pcHVsYXRpb24KICAhIFRoaXMgcHJvZ3Jh bSBpcyBpbnRlbmRlZCB0byBiZSBmdWxseSBGOTAtc3RhbmRhcmQgY29tcGxpYW50IGV4Y2Vw dCBpdCByZWxpZXMKICAhIG9uIHRoZSBwcmVzZW5jZSBvZiBleHRlcm5hbCBpYXJnYygpIGFu ZCBnZXRhcmcoKSByb3V0aW5lcyBub3JtYWxseSBzdXBwbGllZAogICEgYnkgRm9ydHJhbiBj b21waWxlcnMuCgogICEgQ29weXJpZ2h0IChDKSAxOTk3LS0yMDAzIENoYXJsaWUgWmVuZGVy CiAgISBMaWNlbnNlOiBUaGlzIGZpbGUgaXMgaW4gdGhlIFB1YmxpYyBEb21haW4KCiAgISBU aGUgb3JpZ2luYWwgYXV0aG9yIG9mIHRoaXMgc29mdHdhcmUsIENoYXJsaWUgWmVuZGVyLCB3 YW50cyB0byByZWNlaXZlCiAgISB5b3VyIHN1Z2dlc3Rpb25zLCB0aGFua3MsIGJ1Zy1yZXBv cnRzLCBhbmQgcGF0Y2hlcyB0byBpbXByb3ZlIGl0LgogICEgQ2hhcmxpZSBaZW5kZXIgPHpl bmRlciBhdCB1Y2kgZG90IGVkdT4KICAhIERlcGFydG1lbnQgb2YgRWFydGggU3lzdGVtIFNj aWVuY2UKICAhIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYSBhdCBJcnZpbmUKICAhIElydmlu ZSwgQ0EgOTI2OTctMzEwMAoKICAhIENvbXBpbGF0aW9uOgogICEgUG9ydGxhbmQgR3JvdXAg cGdmOTAgY29tcGlsZXI6CiAgISBwZ2Y5MCAtbyBkYmdfbWRsLm8gLWMgZGJnX21kbC5GOTAK ICAhIHBnZjkwIC1vIHNuZ19tZGwubyAtYyBzbmdfbWRsLkY5MAogICEgcGdmOTAgLW8gc25n IHNuZ19tZGwubyBkYmdfbWRsLm8gc25nLkY5MAogICEgSW50ZWwgaWZjIGNvbXBpbGVyOgog ICEgaWZjIC1vIGRiZ19tZGwubyAtYyBkYmdfbWRsLkY5MAogICEgaWZjIC1vIHNuZ19tZGwu byAtYyBzbmdfbWRsLkY5MAogICEgaWZjIC1vIHNuZyBzbmdfbWRsLm8gZGJnX21kbC5vIHNu Zy5GOTAgLWxQRVBDRjkwCgogICEgVXNhZ2U6CiAgISBzbmcgLS1kYmc9MCAtLWRibD0xLjIz NGUyMzQgLS1mbHQ9LTUuNjdlLTM3IC0taW50PTEyMzQ1Njc4IC0tbGdjPVQgLS1zbmc9IkdO VSdzIE5vdCBVTklYIiAtLWRyY19vdXQ9JHtIT01FfS9vdXRwdXQvZGlyZWN0b3J5CiAgISBz bmcgLUQgNSAtLWRibCAxLjIzNGUyMzQKCiAgdXNlIGRiZ19tZGwgISBbbWRsXSBEZWJ1Z2dp bmcgY29uc3RhbnRzLCBwcmdfbm0sIGRiZ19sdmwKICB1c2Ugc25nX21kbCAhIFttZGxdIFN0 cmluZyBtYW5pcHVsYXRpb24KCiAgaW1wbGljaXQgbm9uZQogICEgUGFyYW1ldGVycwogIGNo YXJhY3RlcihsZW49KikscGFyYW1ldGVyOjpDVlNfSWQ9IiRJZCQiICEgW3NuZ10gQ1ZTIElk ZW50aWZpY2F0aW9uCiAgY2hhcmFjdGVyKGxlbj0qKSxwYXJhbWV0ZXI6OkNWU19EYXRlPSIk RGF0ZSQiICEgW3NuZ10gRGF0ZSBzdHJpbmcKICBjaGFyYWN0ZXIobGVuPSopLHBhcmFtZXRl cjo6Q1ZTX05hbWU9IiROYW1lJCIgISBbc25nXSBGaWxlIG5hbWUgc3RyaW5nCiAgY2hhcmFj dGVyKGxlbj0qKSxwYXJhbWV0ZXI6OkNWU19SZXZpc2lvbj0iJFJldmlzaW9uJCIgISBbc25n XSBGaWxlIHJldmlzaW9uIHN0cmluZwogIGNoYXJhY3RlcihsZW49KikscGFyYW1ldGVyOjpu bGM9Y2hhcigwKSAhIFtzbmddIE5VTCBjaGFyYWN0ZXIgPSBBU0NJSSAwID0gY2hhcigwKQoK ICAhIENvbW1hbmQtbGluZSBwYXJzaW5nCiAgY2hhcmFjdGVyKDgwKTo6YXJnX3ZhbCAhIFtz bmddIENvbW1hbmQgbGluZSBhcmd1bWVudCB2YWx1ZQogIGNoYXJhY3RlcigyMDApOjpjbWRf bG4gISBbc25nXSBDb21tYW5kIGxpbmUKICBjaGFyYWN0ZXIoODApOjpvcHRfc25nICEgW3Nu Z10gT3B0aW9uIHN0cmluZwogIGNoYXJhY3RlcigyKTo6ZHNoX2tleSAhIFtzbmddIENvbW1h bmQgbGluZSBkYXNoIGFuZCBzd2l0Y2gKICBjaGFyYWN0ZXIoMjAwKTo6cHJnX0lEICEgW3Nu Z10gUHJvZ3JhbSBJRAoKICBpbnRlZ2VyOjphcmdfaWR4ICEgW2lkeF0gQ291bnRpbmcgaW5k ZXgKICBpbnRlZ2VyOjphcmdfbmJyICEgW25icl0gTnVtYmVyIG9mIGNvbW1hbmQgbGluZSBh cmd1bWVudHMKICBpbnRlZ2VyOjpvcHRfbG5nICEgW25icl0gTGVuZ3RoIG9mIG9wdGlvbgoK ICAhIFNldCBkZWZhdWx0cyBmb3IgY29tbWFuZCBsaW5lIG9wdGlvbnMKICBjaGFyYWN0ZXIo ODApOjpkcmNfaW49Ii9ob21lL3VzZXIvaW5wdXQvZGlyIi8vbmxjICEgW3NuZ10gSW5wdXQg ZGlyZWN0b3J5CiAgY2hhcmFjdGVyKDgwKTo6ZHJjX291dD0iIiAhIFtzbmddIE91dHB1dCBk aXJlY3RvcnkKICBjaGFyYWN0ZXIoODApOjpmbF9pbj0iaW4ubmMiLy9ubGMgISBbc25nXSBJ bnB1dCBmaWxlCiAgY2hhcmFjdGVyKDgwKTo6Zmxfb3V0PSJmb28ubmMiLy9ubGMgISBbc25n XSBPdXRwdXQgZmlsZQogIGNoYXJhY3Rlcig4MCk6OnNuZ19mb289IkRlZmF1bHQgdmFsdWUi Ly9ubGMgISBbc25nXSBTdHJpbmcKICBpbnRlZ2VyOjppbnRfZm9vPTEgISBbbmJyXSBJbnRl Z2VyCiAgbG9naWNhbDo6bGdjX2Zvbz0uZmFsc2UuICEgW2ZsZ10gTG9naWNhbAogIHJlYWwo c2VsZWN0ZWRfcmVhbF9raW5kKHA9NikpOjpmbHRfZm9vPTAuMCAhIFtmcmNdIEZsb2F0CiAg cmVhbChzZWxlY3RlZF9yZWFsX2tpbmQocD0xMikpOjpkYmxfZm9vPTAuMCAhIFtmcmNdIERv dWJsZQoKICAhIE1haW4gY29kZQogIGRiZ19sdmw9MCAhIFtpZHhdIENhdXNlcyBEREQgc291 cmNlIHdpbmRvdyB0byBkaXNwbGF5IHRoaXMgZmlsZQogICEgQ0VXSSBmb3IgbGY5NTogSW5p dGlhbGl6ZSBjbWRfbG4gYmVmb3JlIHRha2luZyBsZW5ndGgKICBjYWxsIGZ0bl9zdHJpbmko Y21kX2xuKSAhIFtzbmddIHNuZygxOmxlbik9TlVMCgogIGlmICgudHJ1ZS4pIHRoZW4KICAg ICB3cml0ZSAoNiwqKSAiQmVmb3JlIGNvbW1hbmQgbGluZSBwYXJzaW5nIGFuZCBzdHJpbmcg bWFuaXB1bGF0aW9uOiAiCiAgICAgd3JpdGUgKDYsKikgIm1haW4oKSByZXBvcnRzIGNtZF9s biA9ICIsY21kX2xuKDE6ZnRuX3N0cmxlbihjbWRfbG4pKQogICAgIHdyaXRlICg2LCopICJt YWluKCkgcmVwb3J0cyBkYmxfZm9vID0gIixkYmxfZm9vCiAgICAgd3JpdGUgKDYsKikgIm1h aW4oKSByZXBvcnRzIGZsdF9mb28gPSAiLGZsdF9mb28KICAgICB3cml0ZSAoNiwqKSAibWFp bigpIHJlcG9ydHMgaW50X2ZvbyA9ICIsaW50X2ZvbwogICAgIHdyaXRlICg2LCopICJtYWlu KCkgcmVwb3J0cyBsZ2NfZm9vID0gIixsZ2NfZm9vCiAgICAgd3JpdGUgKDYsKikgIm1haW4o KSByZXBvcnRzIHNuZ19mb28gPSAiLHNuZ19mb28oMTpmdG5fc3RybGVuKHNuZ19mb28pKQog ICAgIHdyaXRlICg2LCopICJtYWluKCkgcmVwb3J0cyBmbF9pbiA9ICIsZmxfaW4oMTpmdG5f c3RybGVuKGZsX2luKSkKICAgICB3cml0ZSAoNiwqKSAibWFpbigpIHJlcG9ydHMgZmxfb3V0 ID0gIixmbF9vdXQoMTpmdG5fc3RybGVuKGZsX291dCkpCiAgICAgd3JpdGUgKDYsKikgIm1h aW4oKSByZXBvcnRzIGRyY19pbiA9ICIsZHJjX2luKDE6ZnRuX3N0cmxlbihkcmNfaW4pKQog ICAgIHdyaXRlICg2LCopICJtYWluKCkgcmVwb3J0cyBkcmNfb3V0ID0gIixkcmNfb3V0KDE6 ZnRuX3N0cmxlbihkcmNfb3V0KSkKICBlbmRpZiAhIGVuZGlmIC50cnVlLgoKICBjYWxsIGZ0 bl9jbWRfbG5fc25nKGNtZF9sbikgISBbc25nXSBSZS1jb25zdHJ1Y3QgY29tbWFuZCBsaW5l IGludG8gc2luZ2xlIHN0cmluZwogIGNhbGwgZnRuX3ByZ19JRF9tayhDVlNfSWQsQ1ZTX1Jl dmlzaW9uLENWU19EYXRlLHByZ19JRCkgISBbc25nXSBQcm9ncmFtIElECgogIGFyZ19uYnI9 Y29tbWFuZF9hcmd1bWVudF9jb3VudCgpICEgW25icl0gTnVtYmVyIG9mIGNvbW1hbmQgbGlu ZSBhcmd1bWVudHMKICBhcmdfaWR4PTEgISBbaWR4XSBDb3VudGluZyBpbmRleAogIGRvIHdo aWxlIChhcmdfaWR4IDw9IGFyZ19uYnIpCiAgICAgY2FsbCBmdG5fZ2V0YXJnX3dycChhcmdf aWR4LGFyZ192YWwpICEgW3Nicl0gQ2FsbCBnZXRhcmcsIGluY3JlbWVudCBhcmdfaWR4CiAg ICAgZHNoX2tleT1hcmdfdmFsKDE6MikgISBbc25nXSBGaXJzdCB0d28gY2hhcmFjdGVycyBv ZiBvcHRpb24KICAgICBpZiAoZHNoX2tleSA9PSAiLS0iKSB0aGVuCiAgICAgICAgb3B0X2xu Zz1mdG5fb3B0X2xuZ19nZXQoYXJnX3ZhbCkgISBbbmJyXSBMZW5ndGggb2Ygb3B0aW9uCiAg ICAgICAgaWYgKG9wdF9sbmcgPD0gMCkgc3RvcCAiTG9uZyBvcHRpb24gaGFzIG5vIG5hbWUi CiAgICAgICAgb3B0X3NuZz1hcmdfdmFsKDM6MitvcHRfbG5nKSAhIFtzbmddIE9wdGlvbiBz dHJpbmcKICAgICAgICBpZiAoZGJnX2x2bCA+PSBkYmdfaW8pIHdyaXRlICg2LCIoNWEsaTMp IikgcHJnX25tKDE6ZnRuX3N0cmxlbihwcmdfbm0pKSwgJgogICAgICAgICAgICAgIjogREVC VUcgRG91YmxlIGh5cGhlbiBpbmRpY2F0ZXMgbXVsdGktY2hhcmFjdGVyIG9wdGlvbjogIiwg JgogICAgICAgICAgICAgIm9wdF9zbmcgPSAiLG9wdF9zbmcoMTpmdG5fc3RybGVuKG9wdF9z bmcpKSwiLCBvcHRfbG5nID0gIixvcHRfbG5nCiAgICAgICAgaWYgKG9wdF9zbmcgPT0gImRi ZyIgLm9yLiBvcHRfc25nID09ICJkYmdfbHZsIiApIHRoZW4KICAgICAgICAgICBjYWxsIGZ0 bl9hcmdfZ2V0KGFyZ19pZHgsYXJnX3ZhbCxkYmdfbHZsKSAhIFtlbm1dIERlYnVnZ2luZyBs ZXZlbAogICAgICAgIGVsc2UgaWYgKG9wdF9zbmcgPT0gImRibCIgLm9yLiBvcHRfc25nID09 ICJkYmxfZm9vIiApIHRoZW4KICAgICAgICAgICBjYWxsIGZ0bl9hcmdfZ2V0KGFyZ19pZHgs YXJnX3ZhbCxkYmxfZm9vKSAhIFtmcmNdIERvdWJsZQogICAgICAgIGVsc2UgaWYgKG9wdF9z bmcgPT0gImRyY19pbiIpIHRoZW4KICAgICAgICAgICBjYWxsIGZ0bl9hcmdfZ2V0KGFyZ19p ZHgsYXJnX3ZhbCxkcmNfaW4pICEgW3NuZ10gSW5wdXQgZGlyZWN0b3J5CiAgICAgICAgZWxz ZSBpZiAob3B0X3NuZyA9PSAiZHJjX291dCIpIHRoZW4KICAgICAgICAgICBjYWxsIGZ0bl9h cmdfZ2V0KGFyZ19pZHgsYXJnX3ZhbCxkcmNfb3V0KSAhIFtzbmddIE91dHB1dCBkaXJlY3Rv cnkKICAgICAgICBlbHNlIGlmIChvcHRfc25nID09ICJmbF9pbiIpIHRoZW4KICAgICAgICAg ICBjYWxsIGZ0bl9hcmdfZ2V0KGFyZ19pZHgsYXJnX3ZhbCxmbF9pbikgISBbc25nXSBJbnB1 dCBmaWxlCiAgICAgICAgZWxzZSBpZiAob3B0X3NuZyA9PSAiZmxfb3V0IikgdGhlbgogICAg ICAgICAgIGNhbGwgZnRuX2FyZ19nZXQoYXJnX2lkeCxhcmdfdmFsLGZsX291dCkgISBbc25n XSBPdXRwdXQgZmlsZQogICAgICAgIGVsc2UgaWYgKG9wdF9zbmcgPT0gImZsdCIgLm9yLiBv cHRfc25nID09ICJmbHRfZm9vIiApIHRoZW4KICAgICAgICAgICBjYWxsIGZ0bl9hcmdfZ2V0 KGFyZ19pZHgsYXJnX3ZhbCxmbHRfZm9vKSAhIFtmcmNdIEZsb2F0CiAgICAgICAgZWxzZSBp ZiAob3B0X3NuZyA9PSAiaW50IiAub3IuIG9wdF9zbmcgPT0gImludF9mb28iICkgdGhlbgog ICAgICAgICAgIGNhbGwgZnRuX2FyZ19nZXQoYXJnX2lkeCxhcmdfdmFsLGludF9mb28pICEg W25icl0gSW50ZWdlcgogICAgICAgIGVsc2UgaWYgKG9wdF9zbmcgPT0gImxnYyIgLm9yLiBv cHRfc25nID09ICJsZ2NfZm9vIiApIHRoZW4KICAgICAgICAgICBjYWxsIGZ0bl9hcmdfZ2V0 KGFyZ19pZHgsYXJnX3ZhbCxsZ2NfZm9vKSAhIFtsZ2NdIExvZ2ljYWwKICAgICAgICBlbHNl IGlmIChvcHRfc25nID09ICJzbmciIC5vci4gb3B0X3NuZyA9PSAic25nX2ZvbyIpIHRoZW4K ICAgICAgICAgICBjYWxsIGZ0bl9hcmdfZ2V0KGFyZ19pZHgsYXJnX3ZhbCxzbmdfZm9vKSAh IFtzbmddIFN0cmluZwogICAgICAgIGVsc2UgISBPcHRpb24gbm90IHJlY29nbml6ZWQKICAg ICAgICAgICBhcmdfaWR4PWFyZ19pZHgtMSAhIFtpZHhdIENvdW50aW5nIGluZGV4CiAgICAg ICAgICAgY2FsbCBmdG5fZ2V0YXJnX2VycihhcmdfaWR4LGFyZ192YWwpICEgW3Nicl0gRXJy b3IgaGFuZGxlciBmb3IgZ2V0YXJnKCkKICAgICAgICBlbmRpZiAhIGVuZGlmIG9wdGlvbiBp cyByZWNvZ25pemVkCiAgICAgICAgISBKdW1wIHRvIHRvcCBvZiB3aGlsZSBsb29wCiAgICAg ICAgY3ljbGUgISBDLCBGNzcsIGFuZCBGOTAgdXNlICJjb250aW51ZSIsICJnb3RvIiwgYW5k ICJjeWNsZSIKICAgICBlbmRpZiAhIGVuZGlmIGxvbmcgb3B0aW9uCiAgICAgISBIYW5kbGUg c2hvcnQgb3B0aW9ucwogICAgIGlmIChkc2hfa2V5ID09ICItRCIpIHRoZW4KICAgICAgICBj YWxsIGZ0bl9hcmdfZ2V0KGFyZ19pZHgsYXJnX3ZhbCxkYmdfbHZsKSAhIFtlbm1dIERlYnVn Z2luZyBsZXZlbAogICAgIGVsc2UgaWYgKGRzaF9rZXkgPT0gIi1mIikgdGhlbgogICAgICAg IGNhbGwgZnRuX2FyZ19nZXQoYXJnX2lkeCxhcmdfdmFsLGZsdF9mb28pICEgW2ZyY10gRmxv YXQKICAgICBlbHNlIGlmIChkc2hfa2V5ID09ICItaSIpIHRoZW4KICAgICAgICBjYWxsIGZ0 bl9hcmdfZ2V0KGFyZ19pZHgsYXJnX3ZhbCxmbF9pbikgISBbc25nXSBJbnB1dCBmaWxlCiAg ICAgZWxzZSBpZiAoZHNoX2tleSA9PSAiLWwiKSB0aGVuCiAgICAgICAgY2FsbCBmdG5fYXJn X2dldChhcmdfaWR4LGFyZ192YWwsaW50X2ZvbykKICAgICBlbHNlIGlmIChkc2hfa2V5ID09 ICItcCIpIHRoZW4KICAgICAgICBsZ2NfZm9vPS5ub3QubGdjX2ZvbwogICAgIGVsc2UgaWYg KGRzaF9rZXkgPT0gIi1vIikgdGhlbgogICAgICAgIGNhbGwgZnRuX2FyZ19nZXQoYXJnX2lk eCxhcmdfdmFsLGZsX291dCkgISBbc25nXSBPdXRwdXQgZmlsZQogICAgIGVsc2UgaWYgKGRz aF9rZXkgPT0gIi1zIikgdGhlbgogICAgICAgIGNhbGwgZnRuX2FyZ19nZXQoYXJnX2lkeCxh cmdfdmFsLHNuZ19mb28pICEgW3NuZ10gU3RyaW5nCiAgICAgZWxzZSBpZiAoZHNoX2tleSA9 PSAiLXYiKSB0aGVuCiAgICAgICAgZ290byAxMDAwICEgR290byBleGl0IHdpdGggZXJyb3Ig c3RhdHVzCiAgICAgZWxzZSAhIE9wdGlvbiBub3QgcmVjb2duaXplZAogICAgICAgIGFyZ19p ZHg9YXJnX2lkeC0xICEgW2lkeF0gQ291bnRpbmcgaW5kZXgKICAgICAgICBjYWxsIGZ0bl9n ZXRhcmdfZXJyKGFyZ19pZHgsYXJnX3ZhbCkgISBbc2JyXSBFcnJvciBoYW5kbGVyIGZvciBn ZXRhcmcoKQogICAgIGVuZGlmICEgZW5kaWYgYXJnX3ZhbAogIGVuZCBkbyAhIGVuZCB3aGls ZSAoYXJnX2lkeCA8PSBhcmdfbmJyKQoKICAhIENvbXB1dGUgYW55IHF1YW50aXRpZXMgdGhh dCBtaWdodCBkZXBlbmQgb24gY29tbWFuZCBsaW5lIGlucHV0CiAgISBQcmVwZW5kIHVzZXIt c3BlY2lmaWVkIHBhdGgsIGlmIGFueSwgdG8gaW5wdXQgZGF0YSBmaWxlIG5hbWVzCiAgaWYg KGZ0bl9zdHJsZW4oZHJjX2luKSA+IDApIGNhbGwgZnRuX2RyY3BmeChkcmNfaW4sZmxfaW4p ICEgW3NuZ10gSW5wdXQgZmlsZQogICEgUHJlcGVuZCB1c2VyLXNwZWNpZmllZCBwYXRoLCBp ZiBhbnksIHRvIG91dHB1dCBkYXRhIGZpbGUgbmFtZXMKICBpZiAoZnRuX3N0cmxlbihkcmNf b3V0KSA+IDApIGNhbGwgZnRuX2RyY3BmeChkcmNfb3V0LGZsX291dCkgISBbc25nXSBPdXRw dXQgZmlsZQoKICBpZiAoLnRydWUuKSB0aGVuCiAgICAgd3JpdGUgKDYsKikgIkFmdGVyIGNv bW1hbmQgbGluZSBwYXJzaW5nIGFuZCBzdHJpbmcgbWFuaXB1bGF0aW9uOiAiCiAgICAgd3Jp dGUgKDYsKikgIm1haW4oKSByZXBvcnRzIGNtZF9sbiA9ICIsY21kX2xuKDE6ZnRuX3N0cmxl bihjbWRfbG4pKQogICAgIHdyaXRlICg2LCopICJtYWluKCkgcmVwb3J0cyBkYmxfZm9vID0g IixkYmxfZm9vCiAgICAgd3JpdGUgKDYsKikgIm1haW4oKSByZXBvcnRzIGZsdF9mb28gPSAi LGZsdF9mb28KICAgICB3cml0ZSAoNiwqKSAibWFpbigpIHJlcG9ydHMgaW50X2ZvbyA9ICIs aW50X2ZvbwogICAgIHdyaXRlICg2LCopICJtYWluKCkgcmVwb3J0cyBsZ2NfZm9vID0gIixs Z2NfZm9vCiAgICAgd3JpdGUgKDYsKikgIm1haW4oKSByZXBvcnRzIHNuZ19mb28gPSAiLHNu Z19mb28oMTpmdG5fc3RybGVuKHNuZ19mb28pKQogICAgIHdyaXRlICg2LCopICJtYWluKCkg cmVwb3J0cyBmbF9pbiA9ICIsZmxfaW4oMTpmdG5fc3RybGVuKGZsX2luKSkKICAgICB3cml0 ZSAoNiwqKSAibWFpbigpIHJlcG9ydHMgZmxfb3V0ID0gIixmbF9vdXQoMTpmdG5fc3RybGVu KGZsX291dCkpCiAgICAgd3JpdGUgKDYsKikgIm1haW4oKSByZXBvcnRzIGRyY19pbiA9ICIs ZHJjX2luKDE6ZnRuX3N0cmxlbihkcmNfaW4pKQogICAgIHdyaXRlICg2LCopICJtYWluKCkg cmVwb3J0cyBkcmNfb3V0ID0gIixkcmNfb3V0KDE6ZnRuX3N0cmxlbihkcmNfb3V0KSkKICBl bmRpZiAhIGVuZGlmIC50cnVlLgoKMTAwMCBjb250aW51ZSAhIEp1bXBpbmcgcG9pbnQgZm9y IHF1aWNrIGV4aXQKCmVuZCBwcm9ncmFtIHNuZwo= --12.Aug.2003mysteryboxofun Content-Type: application/octet-stream; name="dbg_mdl.f90" Content-Description: ~/f/dbg_mdl.f90 Content-Transfer-Encoding: base64 ISAkSGVhZGVyJCAtKi1mOTAtKi0KCiEgUHVycG9zZTogU3lzdGVtYXRpYyBub21lbmNsYXR1 cmUgZm9yIGRlYnVnZ2luZy92ZXJib3NpdHkgbGV2ZWxzCiEgTkI6IFRoaXMgbW9kdWxlIGNv bnRhaW5zIGdlbmVyaWMgZGVidWdnaW5nIGNvbnN0YW50cyBhbmQgcm91dGluZXMKISBJdCBp cyBpbnRlbmRlZCBmb3IgdXNlIGluIGFsbCBGb3J0cmFuOTAgYXBwbGljYXRpb25zIGFuZCBp cyB0aHVzIGFwcGxpY2F0aW9uLWluZGVwZW5kZW50CgohIENvcHlyaWdodCAoQykgMTk5Ny0t MjAwMyBDaGFybGllIFplbmRlcgohIExpY2Vuc2U6IFRoaXMgZmlsZSBpcyBpbiB0aGUgUHVi bGljIERvbWFpbgoKISBVc2FnZToKIXVzZSBkYmdfbWRsICEgW21kbF0gRGVidWdnaW5nIGNv bnN0YW50cywgcHJnX25tLCBkYmdfbHZsCgptb2R1bGUgZGJnX21kbCAhIFttZGxdIERlYnVn Z2luZyBjb25zdGFudHMsIHByZ19ubSwgZGJnX2x2bAogIGltcGxpY2l0IG5vbmUKCiAgaW50 ZWdlciBkYmdfbHZsICEgW2VubV0gRGVidWdnaW5nIGxldmVsLCBpbml0aWFsaXplZCBpbiBt YWluKCkKICBjaGFyYWN0ZXIoODApIHByZ19ubSAhIFtzbmddIFByb2dyYW0gbmFtZSwgaW5p dGlhbGl6ZWQgaW4gZnRuX2NtZF9sbl9zbmcoKQoKICAhIEVudW1lcmF0ZSBkZWJ1Z2dpbmcg bGV2ZWxzCiAgaW50ZWdlcixwYXJhbWV0ZXI6OmRiZ19uYnI9OSAhIFtuYnJdIE51bWJlciBv ZiBkaWZmZXJlbnQgZGVidWdnaW5nIGxldmVscwoKICBpbnRlZ2VyLHBhcmFtZXRlcjo6ZGJn X29mZj0wICEgW2VubV0gUHJvZHVjdGlvbiBtb2RlLiBEZWJ1Z2dpbmcgaXMgdHVybmVkIG9m Zi4KICBpbnRlZ2VyLHBhcmFtZXRlcjo6ZGJnX2ZsPTEgISBbZW5tXSBGaWxlbmFtZXMKICBp bnRlZ2VyLHBhcmFtZXRlcjo6ZGJnX3NjbD0yICEgW2VubV0gU2NhbGFycwogIGludGVnZXIs cGFyYW1ldGVyOjpkYmdfY3JyPTMgISBbZW5tXSBDdXJyZW50IHRhc2sKICBpbnRlZ2VyLHBh cmFtZXRlcjo6ZGJnX3Nicj00ICEgW2VubV0gU3Vicm91dGluZSBuYW1lcyBvbiBlbnRyeSBh bmQgZXhpdAogIGludGVnZXIscGFyYW1ldGVyOjpkYmdfaW89NSAhIFtlbm1dIFN1YnJvdXRp bmUgSS9PCiAgaW50ZWdlcixwYXJhbWV0ZXI6OmRiZ192ZWM9NiAhIFtlbm1dIEVudGlyZSB2 ZWN0b3JzCiAgaW50ZWdlcixwYXJhbWV0ZXI6OmRiZ192cmI9NyAhIFtlbm1dIEV2ZXJ5dGhp bmcKICBpbnRlZ2VyLHBhcmFtZXRlcjo6ZGJnX29sZD04ICEgW2VubV0gT2xkIGRlYnVnZ2lu ZyBibG9ja3Mgbm90IHVzZWQgYW55bW9yZQoKZW5kIG1vZHVsZSBkYmdfbWRsCg== --12.Aug.2003mysteryboxofun Content-Type: text/plain -- Charlie Zender, zender at uci dot edu, (949) 824-2987, Department of Earth System Science, University of California, Irvine CA 92697-3100 --12.Aug.2003mysteryboxofun-- ------------------------------------------------------- This SF.Net email sponsored by: Free pre-built ASP.NET sites including Data Reports, E-commerce, Portals, and Forums are available now. Download today and enter to win an XBOX or Visual Studio .NET. http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01