From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Siteshwar Vashisht To: git-commits@fedoraproject.org Subject: [rpms/bash] rawhide: Update to bash-5.3 patchlevel 15 Date: Wed, 01 Jul 2026 06:51:56 GMT Message-ID: <178288871691.1.17566830163228717672.rpms-bash-a25b015033f2@fedoraproject.org> List-ID: X-Git-Repo: rpms/bash X-Git-Branch: rawhide X-Git-Rev: a25b015033f2d8c4e88e4674c78d18ae12750372 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvYmFzaAogICAgICAgICAgICBCcmFuY2ggOiByYXdoaWRlCiAgICAgICAgICAg IENvbW1pdCA6IGEyNWIwMTUwMzNmMmQ4YzRlODhlNDY3NGM3OGQxOGFlMTI3NTAzNzIKICAgICAg ICAgICAgQXV0aG9yIDogU2l0ZXNod2FyIFZhc2hpc2h0IDxzdmFzaGlzaHRAcmVkaGF0LmNvbT4K ICAgICAgICAgICAgRGF0ZSAgIDogMjAyNi0wNi0zMFQxMTo0Njo0OSswMjowMAogICAgICAgICAg ICBTdGF0cyAgOiArMjQ5ODMvLTIgaW4gNyBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0 dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvYmFzaC9jL2EyNWIwMTUwMzNmMmQ4YzRl ODhlNDY3NGM3OGQxOGFlMTI3NTAzNzI/YnJhbmNoPXJhd2hpZGUKCiAgICAgICAgICAgIExvZzoK ICAgICAgICAgICAgVXBkYXRlIHRvIGJhc2gtNS4zIHBhdGNobGV2ZWwgMTUKClNpZ25lZC1vZmYt Ynk6IFNpdGVzaHdhciBWYXNoaXNodCA8c3Zhc2hpc2h0QHJlZGhhdC5jb20+CgotLS0KZGlmZiAt LWdpdCBhL2Jhc2gtNS4zLXBhdGNoLTEwLnBhdGNoIGIvYmFzaC01LjMtcGF0Y2gtMTAucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU5N2Q1YgotLS0gL2Rldi9udWxs CisrKyBiL2Jhc2gtNS4zLXBhdGNoLTEwLnBhdGNoCkBAIC0wLDAgKzEsMjQ3ODEgQEAKK2RpZmYg LS1naXQgYS9jb25maWd1cmV+IGIvY29uZmlndXJlfgorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1 CistLS0gYS9jb25maWd1cmV+CisrKysgL2Rldi9udWxsCitAQCAtMSwyNDc1MyArMCwwIEBACist IyEgL2Jpbi9zaAorLSMgRnJvbSBjb25maWd1cmUuYWMgZm9yIEJhc2ggNS4zLCB2ZXJzaW9uIDUu MDgwLgorLSMgR3Vlc3MgdmFsdWVzIGZvciBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQg Y3JlYXRlIE1ha2VmaWxlcy4KKy0jIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi43MiBmb3Ig YmFzaCA1LjMtcmMyLgorLSMKKy0jIFJlcG9ydCBidWdzIHRvIDxidWctYmFzaEBnbnUub3JnPi4K Ky0jCistIworLSMgQ29weXJpZ2h0IChDKSAxOTkyLTE5OTYsIDE5OTgtMjAxNywgMjAyMC0yMDIz IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0jIEluYy4KKy0jCistIworLSMgVGhpcyBjb25m aWd1cmUgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24KKy0jIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5k IG1vZGlmeSBpdC4KKy0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworLSMjIE00c2ggSW5pdGlh bGl6YXRpb24uICMjCistIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKy0KKy0jIEJlIG1vcmUg Qm91cm5lIGNvbXBhdGlibGUKKy1EVUFMQ0FTRT0xOyBleHBvcnQgRFVBTENBU0UgIyBmb3IgTUtT IHNoCistaWYgdGVzdCAke1pTSF9WRVJTSU9OK3l9ICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxs IDI+JjEKKy10aGVuIDoKKy0gIGVtdWxhdGUgc2gKKy0gIE5VTExDTUQ9OgorLSAgIyBQcmUtNC4y IHZlcnNpb25zIG9mIFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiAkezErIiRAIn0sIHdoaWNoCist ICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLgorLSAg YWxpYXMgLWcgJyR7MSsiJEAifSc9JyIkQCInCistICBzZXRvcHQgTk9fR0xPQl9TVUJTVAorLWVs c2UgY2FzZSBlIGluICMoCistICBlKSBjYXNlIGAoc2V0IC1vKSAyPi9kZXYvbnVsbGAgaW4gIygK Ky0gICpwb3NpeCopIDoKKy0gICAgc2V0IC1vIHBvc2l4IDs7ICMoCistICAqKSA6CistICAgICA7 OworLWVzYWMgOzsKKy1lc2FjCistZmkKKy0KKy0KKy0KKy0jIFJlc2V0IHZhcmlhYmxlcyB0aGF0 IG1heSBoYXZlIGluaGVyaXRlZCB0cm91Ymxlc29tZSB2YWx1ZXMgZnJvbQorLSMgdGhlIGVudmly b25tZW50LgorLQorLSMgSUZTIG5lZWRzIHRvIGJlIHNldCwgdG8gc3BhY2UsIHRhYiwgYW5kIG5l d2xpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLgorLSMgKElmIF9BU19QQVRIX1dBTEsgd2Vy ZSBjYWxsZWQgd2l0aCBJRlMgdW5zZXQsIGl0IHdvdWxkIGhhdmUgdGhlCistIyBzaWRlIGVmZmVj dCBvZiBzZXR0aW5nIElGUyB0byBlbXB0eSwgdGh1cyBkaXNhYmxpbmcgd29yZCBzcGxpdHRpbmcu KQorLSMgUXVvdGluZyBpcyB0byBwcmV2ZW50IGVkaXRvcnMgZnJvbSBjb21wbGFpbmluZyBhYm91 dCBzcGFjZS10YWIuCistYXNfbmw9JworLScKKy1leHBvcnQgYXNfbmwKKy1JRlM9IiAiIgkkYXNf bmwiCistCistUFMxPSckICcKKy1QUzI9Jz4gJworLVBTND0nKyAnCistCistIyBFbnN1cmUgcHJl ZGljdGFibGUgYmVoYXZpb3IgZnJvbSB1dGlsaXRpZXMgd2l0aCBsb2NhbGUtZGVwZW5kZW50IG91 dHB1dC4KKy1MQ19BTEw9QworLWV4cG9ydCBMQ19BTEwKKy1MQU5HVUFHRT1DCistZXhwb3J0IExB TkdVQUdFCistCistIyBXZSBjYW5ub3QgeWV0IHJlbHkgb24gInVuc2V0IiB0byB3b3JrLCBidXQg d2UgbmVlZCB0aGVzZSB2YXJpYWJsZXMKKy0jIHRvIGJlIHVuc2V0LS1ub3QganVzdCBzZXQgdG8g YW4gZW1wdHkgb3IgaGFybWxlc3MgdmFsdWUtLW5vdywgdG8KKy0jIGF2b2lkIGJ1Z3MgaW4gb2xk IHNoZWxscyAoZS5nLiBwcmUtMy4wIFVXSU4ga3NoKS4gIFRoaXMgY29uc3RydWN0CistIyBhbHNv IGF2b2lkcyBrbm93biBwcm9ibGVtcyByZWxhdGVkIHRvICJ1bnNldCIgYW5kIHN1YnNoZWxsIHN5 bnRheAorLSMgaW4gb3RoZXIgb2xkIHNoZWxscyAoZS5nLiBiYXNoIDIuMDEgYW5kIHBka3NoIDUu Mi4xNCkuCistZm9yIGFzX3ZhciBpbiBCQVNIX0VOViBFTlYgTUFJTCBNQUlMUEFUSCBDRFBBVEgK Ky1kbyBldmFsIHRlc3QgXCR7JGFzX3Zhcit5fSBcCistICAmJiAoICh1bnNldCAkYXNfdmFyKSB8 fCBleGl0IDEpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCAkYXNfdmFyIHx8IDoKKy1kb25lCist CistIyBFbnN1cmUgdGhhdCBmZHMgMCwgMSwgYW5kIDIgYXJlIG9wZW4uCistaWYgKGV4ZWMgMz4m MCkgMj4vZGV2L251bGw7IHRoZW4gOjsgZWxzZSBleGVjIDA8L2Rldi9udWxsOyBmaQorLWlmIChl eGVjIDM+JjEpIDI+L2Rldi9udWxsOyB0aGVuIDo7IGVsc2UgZXhlYyAxPi9kZXYvbnVsbDsgZmkK Ky1pZiAoZXhlYyAzPiYyKSAgICAgICAgICAgIDsgdGhlbiA6OyBlbHNlIGV4ZWMgMj4vZGV2L251 bGw7IGZpCistCistIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCistaWYgJHtQQVRIX1NFUEFS QVRPUitmYWxzZX0gOjsgdGhlbgorLSAgUEFUSF9TRVBBUkFUT1I9OgorLSAgKFBBVEg9Jy9iaW47 L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgJiYgeworLSAgICAo UEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSB8 fAorLSAgICAgIFBBVEhfU0VQQVJBVE9SPSc7JworLSAgfQorLWZpCistCistCistIyBGaW5kIHdo byB3ZSBhcmUuICBMb29rIGluIHRoZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8gZGlyZWN0b3J5IHNl cGFyYXRvci4KKy1hc19teXNlbGY9CistY2FzZSAkMCBpbiAjKCgKKy0gICpbXFwvXSogKSBhc19t eXNlbGY9JDAgOzsKKy0gICopIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IK Ky1mb3IgYXNfZGlyIGluICRQQVRICistZG8KKy0gIElGUz0kYXNfc2F2ZV9JRlMKKy0gIGNhc2Ug JGFzX2RpciBpbiAjKCgoCistICAgICcnKSBhc19kaXI9Li8gOzsKKy0gICAgKi8pIDs7CistICAg ICopIGFzX2Rpcj0kYXNfZGlyLyA7OworLSAgZXNhYworLSAgICB0ZXN0IC1yICIkYXNfZGlyJDAi ICYmIGFzX215c2VsZj0kYXNfZGlyJDAgJiYgYnJlYWsKKy0gIGRvbmUKKy1JRlM9JGFzX3NhdmVf SUZTCistCistICAgICA7OworLWVzYWMKKy0jIFdlIGRpZCBub3QgZmluZCBvdXJzZWx2ZXMsIG1v c3QgcHJvYmFibHkgd2Ugd2VyZSBydW4gYXMgJ3NoIENPTU1BTkQnCistIyBpbiB3aGljaCBjYXNl IHdlIGFyZSBub3QgdG8gYmUgZm91bmQgaW4gdGhlIHBhdGguCistaWYgdGVzdCAieCRhc19teXNl bGYiID0geDsgdGhlbgorLSAgYXNfbXlzZWxmPSQwCistZmkKKy1pZiB0ZXN0ICEgLWYgIiRhc19t eXNlbGYiOyB0aGVuCistICBwcmludGYgIiVzXG4iICIkYXNfbXlzZWxmOiBlcnJvcjogY2Fubm90 IGZpbmQgbXlzZWxmOyByZXJ1biB3aXRoIGFuIGFic29sdXRlIGZpbGUgbmFtZSIgPiYyCistICBl eGl0IDEKKy1maQorLQorLQorLSMgVXNlIGEgcHJvcGVyIGludGVybmFsIGVudmlyb25tZW50IHZh cmlhYmxlIHRvIGVuc3VyZSB3ZSBkb24ndCBmYWxsCistICAjIGludG8gYW4gaW5maW5pdGUgbG9v cCwgY29udGludW91c2x5IHJlLWV4ZWN1dGluZyBvdXJzZWx2ZXMuCistICBpZiB0ZXN0IHgiJHtf YXNfY2FuX3JlZXhlY30iICE9IHhubyAmJiB0ZXN0ICJ4JENPTkZJR19TSEVMTCIgIT0geDsgdGhl bgorLSAgICBfYXNfY2FuX3JlZXhlYz1ubzsgZXhwb3J0IF9hc19jYW5fcmVleGVjOworLSAgICAj IFdlIGNhbm5vdCB5ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBzbyB3ZSBoYXZlIHRvIHByb3Zp ZGUgYQorLSMgbmV1dHJhbGl6YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3aXRob3V0IHVuc2V0OyBh bmQgdGhpcyBhbHNvCistIyB3b3JrcyBhcm91bmQgc2hlbGxzIHRoYXQgY2Fubm90IHVuc2V0IG5v bmV4aXN0ZW50IHZhcmlhYmxlcy4KKy0jIFByZXNlcnZlIC12IGFuZCAteCB0byB0aGUgcmVwbGFj ZW1lbnQgc2hlbGwuCistQkFTSF9FTlY9L2Rldi9udWxsCistRU5WPS9kZXYvbnVsbAorLSh1bnNl dCBCQVNIX0VOVikgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IEJBU0hfRU5WIEVOVgorLWNhc2Ug JC0gaW4gIyAoKCgoCistICAqdip4KiB8ICp4KnYqICkgYXNfb3B0cz0tdnggOzsKKy0gICp2KiAp IGFzX29wdHM9LXYgOzsKKy0gICp4KiApIGFzX29wdHM9LXggOzsKKy0gICogKSBhc19vcHRzPSA7 OworLWVzYWMKKy1leGVjICRDT05GSUdfU0hFTEwgJGFzX29wdHMgIiRhc19teXNlbGYiICR7MSsi JEAifQorLSMgQWRtaXR0ZWRseSwgdGhpcyBpcyBxdWl0ZSBwYXJhbm9pZCwgc2luY2UgYWxsIHRo ZSBrbm93biBzaGVsbHMgYmFpbAorLSMgb3V0IGFmdGVyIGEgZmFpbGVkICdleGVjJy4KKy1wcmlu dGYgIiVzXG4iICIkMDogY291bGQgbm90IHJlLWV4ZWN1dGUgd2l0aCAkQ09ORklHX1NIRUxMIiA+ JjIKKy1leGl0IDI1NQorLSAgZmkKKy0gICMgV2UgZG9uJ3Qgd2FudCB0aGlzIHRvIHByb3BhZ2F0 ZSB0byBvdGhlciBzdWJwcm9jZXNzZXMuCistICAgICAgICAgIHsgX2FzX2Nhbl9yZWV4ZWM9OyB1 bnNldCBfYXNfY2FuX3JlZXhlYzt9CistaWYgdGVzdCAieCRDT05GSUdfU0hFTEwiID0geDsgdGhl bgorLSAgYXNfYm91cm5lX2NvbXBhdGlibGU9ImlmIHRlc3QgXCR7WlNIX1ZFUlNJT04reX0gJiYg KGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMQorLXRoZW4gOgorLSAgZW11bGF0ZSBzaAorLSAg TlVMTENNRD06CistICAjIFByZS00LjIgdmVyc2lvbnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5n IG9uIFwkezErXCJcJEBcIn0sIHdoaWNoCistICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4g IERpc2FibGUgdGhpcyBmZWF0dXJlLgorLSAgYWxpYXMgLWcgJ1wkezErXCJcJEBcIn0nPSdcIlwk QFwiJworLSAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkg Y2FzZSBcYChzZXQgLW8pIDI+L2Rldi9udWxsXGAgaW4gIygKKy0gICpwb3NpeCopIDoKKy0gICAg c2V0IC1vIHBvc2l4IDs7ICMoCistICAqKSA6CistICAgICA7OworLWVzYWMgOzsKKy1lc2FjCist ZmkKKy0iCistICBhc19yZXF1aXJlZD0iYXNfZm5fcmV0dXJuICgpIHsgKGV4aXQgXCQxKTsgfQor LWFzX2ZuX3N1Y2Nlc3MgKCkgeyBhc19mbl9yZXR1cm4gMDsgfQorLWFzX2ZuX2ZhaWx1cmUgKCkg eyBhc19mbl9yZXR1cm4gMTsgfQorLWFzX2ZuX3JldF9zdWNjZXNzICgpIHsgcmV0dXJuIDA7IH0K Ky1hc19mbl9yZXRfZmFpbHVyZSAoKSB7IHJldHVybiAxOyB9CistCistZXhpdGNvZGU9MAorLWFz X2ZuX3N1Y2Nlc3MgfHwgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX3N1Y2Nlc3MgZmFpbGVkLjsg fQorLWFzX2ZuX2ZhaWx1cmUgJiYgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX2ZhaWx1cmUgc3Vj Y2VlZGVkLjsgfQorLWFzX2ZuX3JldF9zdWNjZXNzIHx8IHsgZXhpdGNvZGU9MTsgZWNobyBhc19m bl9yZXRfc3VjY2VzcyBmYWlsZWQuOyB9CistYXNfZm5fcmV0X2ZhaWx1cmUgJiYgeyBleGl0Y29k ZT0xOyBlY2hvIGFzX2ZuX3JldF9mYWlsdXJlIHN1Y2NlZWRlZC47IH0KKy1pZiAoIHNldCB4OyBh c19mbl9yZXRfc3VjY2VzcyB5ICYmIHRlc3QgeCA9IFwiXCQxXCIgKQorLXRoZW4gOgorLQorLWVs c2UgY2FzZSBlIGluICMoCistICBlKSBleGl0Y29kZT0xOyBlY2hvIHBvc2l0aW9uYWwgcGFyYW1l dGVycyB3ZXJlIG5vdCBzYXZlZC4gOzsKKy1lc2FjCistZmkKKy10ZXN0IHhcJGV4aXRjb2RlID0g eDAgfHwgZXhpdCAxCistYmxhaD1cJChlY2hvIFwkKGVjaG8gYmxhaCkpCistdGVzdCB4XCJcJGJs YWhcIiA9IHhibGFoIHx8IGV4aXQgMQorLXRlc3QgLXggLyB8fCBleGl0IDEiCistICBhc19zdWdn ZXN0ZWQ9IiAgYXNfbGluZW5vXzE9Ijthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCRMSU5FTk87 YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQiIGFzX2xpbmVub18xYT1cJExJTkVOTworLSAgYXNf bGluZW5vXzI9Ijthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCRMSU5FTk87YXNfc3VnZ2VzdGVk PSRhc19zdWdnZXN0ZWQiIGFzX2xpbmVub18yYT1cJExJTkVOTworLSAgZXZhbCAndGVzdCBcInhc JGFzX2xpbmVub18xJ1wkYXNfcnVuJ1wiICE9IFwieFwkYXNfbGluZW5vXzInXCRhc19ydW4nXCIg JiYKKy0gIHRlc3QgXCJ4XGBleHByIFwkYXNfbGluZW5vXzEnXCRhc19ydW4nICsgMVxgXCIgPSBc InhcJGFzX2xpbmVub18yJ1wkYXNfcnVuJ1wiJyB8fCBleGl0IDEKKy10ZXN0IFwkKCggMSArIDEg KSkgPSAyIHx8IGV4aXQgMSIKKy0gIGlmIChldmFsICIkYXNfcmVxdWlyZWQiKSAyPi9kZXYvbnVs bAorLXRoZW4gOgorLSAgYXNfaGF2ZV9yZXF1aXJlZD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAor LSAgZSkgYXNfaGF2ZV9yZXF1aXJlZD1ubyA7OworLWVzYWMKKy1maQorLSAgaWYgdGVzdCB4JGFz X2hhdmVfcmVxdWlyZWQgPSB4eWVzICYmIChldmFsICIkYXNfc3VnZ2VzdGVkIikgMj4vZGV2L251 bGwKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYXNfc2F2ZV9JRlM9JElG UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorLWFzX2ZvdW5kPWZhbHNlCistZm9yIGFzX2RpciBpbiAv YmluJFBBVEhfU0VQQVJBVE9SL3Vzci9iaW4kUEFUSF9TRVBBUkFUT1IkUEFUSAorLWRvCistICBJ RlM9JGFzX3NhdmVfSUZTCistICBjYXNlICRhc19kaXIgaW4gIygoKAorLSAgICAnJykgYXNfZGly PS4vIDs7CistICAgICovKSA7OworLSAgICAqKSBhc19kaXI9JGFzX2Rpci8gOzsKKy0gIGVzYWMK Ky0gIGFzX2ZvdW5kPToKKy0gIGNhc2UgJGFzX2RpciBpbiAjKAorLQkgLyopCistCSAgIGZvciBh c19iYXNlIGluIHNoIGJhc2gga3NoIHNoNTsgZG8KKy0JICAgICAjIFRyeSBvbmx5IHNoZWxscyB0 aGF0IGV4aXN0LCB0byBzYXZlIHNldmVyYWwgZm9ya3MuCistCSAgICAgYXNfc2hlbGw9JGFzX2Rp ciRhc19iYXNlCistCSAgICAgaWYgeyB0ZXN0IC1mICIkYXNfc2hlbGwiIHx8IHRlc3QgLWYgIiRh c19zaGVsbC5leGUiOyB9ICYmCistCQkgICAgYXNfcnVuPWEgIiRhc19zaGVsbCIgLWMgIiRhc19i b3VybmVfY29tcGF0aWJsZSIiJGFzX3JlcXVpcmVkIiAyPi9kZXYvbnVsbAorLXRoZW4gOgorLSAg Q09ORklHX1NIRUxMPSRhc19zaGVsbCBhc19oYXZlX3JlcXVpcmVkPXllcworLQkJICAgaWYgYXNf cnVuPWEgIiRhc19zaGVsbCIgLWMgIiRhc19ib3VybmVfY29tcGF0aWJsZSIiJGFzX3N1Z2dlc3Rl ZCIgMj4vZGV2L251bGwKKy10aGVuIDoKKy0gIGJyZWFrIDIKKy1maQorLWZpCistCSAgIGRvbmU7 OworLSAgICAgICBlc2FjCistICBhc19mb3VuZD1mYWxzZQorLWRvbmUKKy1JRlM9JGFzX3NhdmVf SUZTCistaWYgJGFzX2ZvdW5kCistdGhlbiA6CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUp IGlmIHsgdGVzdCAtZiAiJFNIRUxMIiB8fCB0ZXN0IC1mICIkU0hFTEwuZXhlIjsgfSAmJgorLQkg ICAgICBhc19ydW49YSAiJFNIRUxMIiAtYyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfcmVx dWlyZWQiIDI+L2Rldi9udWxsCistdGhlbiA6CistICBDT05GSUdfU0hFTEw9JFNIRUxMIGFzX2hh dmVfcmVxdWlyZWQ9eWVzCistZmkgOzsKKy1lc2FjCistZmkKKy0KKy0KKy0gICAgICBpZiB0ZXN0 ICJ4JENPTkZJR19TSEVMTCIgIT0geAorLXRoZW4gOgorLSAgZXhwb3J0IENPTkZJR19TSEVMTAor LSAgICAgICAgICAgICAjIFdlIGNhbm5vdCB5ZXQgYXNzdW1lIGEgZGVjZW50IHNoZWxsLCBzbyB3 ZSBoYXZlIHRvIHByb3ZpZGUgYQorLSMgbmV1dHJhbGl6YXRpb24gdmFsdWUgZm9yIHNoZWxscyB3 aXRob3V0IHVuc2V0OyBhbmQgdGhpcyBhbHNvCistIyB3b3JrcyBhcm91bmQgc2hlbGxzIHRoYXQg Y2Fubm90IHVuc2V0IG5vbmV4aXN0ZW50IHZhcmlhYmxlcy4KKy0jIFByZXNlcnZlIC12IGFuZCAt eCB0byB0aGUgcmVwbGFjZW1lbnQgc2hlbGwuCistQkFTSF9FTlY9L2Rldi9udWxsCistRU5WPS9k ZXYvbnVsbAorLSh1bnNldCBCQVNIX0VOVikgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IEJBU0hf RU5WIEVOVgorLWNhc2UgJC0gaW4gIyAoKCgoCistICAqdip4KiB8ICp4KnYqICkgYXNfb3B0cz0t dnggOzsKKy0gICp2KiApIGFzX29wdHM9LXYgOzsKKy0gICp4KiApIGFzX29wdHM9LXggOzsKKy0g ICogKSBhc19vcHRzPSA7OworLWVzYWMKKy1leGVjICRDT05GSUdfU0hFTEwgJGFzX29wdHMgIiRh c19teXNlbGYiICR7MSsiJEAifQorLSMgQWRtaXR0ZWRseSwgdGhpcyBpcyBxdWl0ZSBwYXJhbm9p ZCwgc2luY2UgYWxsIHRoZSBrbm93biBzaGVsbHMgYmFpbAorLSMgb3V0IGFmdGVyIGEgZmFpbGVk ICdleGVjJy4KKy1wcmludGYgIiVzXG4iICIkMDogY291bGQgbm90IHJlLWV4ZWN1dGUgd2l0aCAk Q09ORklHX1NIRUxMIiA+JjIKKy1leGl0IDI1NQorLWZpCistCistICAgIGlmIHRlc3QgeCRhc19o YXZlX3JlcXVpcmVkID0geG5vCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIkMDogVGhpcyBz Y3JpcHQgcmVxdWlyZXMgYSBzaGVsbCBtb3JlIG1vZGVybiB0aGFuIGFsbCIKKy0gIHByaW50ZiAi JXNcbiIgIiQwOiB0aGUgc2hlbGxzIHRoYXQgSSBmb3VuZCBvbiB5b3VyIHN5c3RlbS4iCistICBp ZiB0ZXN0ICR7WlNIX1ZFUlNJT04reX0gOyB0aGVuCistICAgIHByaW50ZiAiJXNcbiIgIiQwOiBJ biBwYXJ0aWN1bGFyLCB6c2ggJFpTSF9WRVJTSU9OIGhhcyBidWdzIGFuZCBzaG91bGQiCistICAg IHByaW50ZiAiJXNcbiIgIiQwOiBiZSB1cGdyYWRlZCB0byB6c2ggNC4zLjQgb3IgbGF0ZXIuIgor LSAgZWxzZQorLSAgICBwcmludGYgIiVzXG4iICIkMDogUGxlYXNlIHRlbGwgYnVnLWF1dG9jb25m QGdudS5vcmcgYW5kIGJ1Zy1iYXNoQGdudS5vcmcKKy0kMDogYWJvdXQgeW91ciBzeXN0ZW0sIGlu Y2x1ZGluZyBhbnkgZXJyb3IgcG9zc2libHkgb3V0cHV0CistJDA6IGJlZm9yZSB0aGlzIG1lc3Nh Z2UuIFRoZW4gaW5zdGFsbCBhIG1vZGVybiBzaGVsbCwgb3IKKy0kMDogbWFudWFsbHkgcnVuIHRo ZSBzY3JpcHQgdW5kZXIgc3VjaCBhIHNoZWxsIGlmIHlvdSBkbworLSQwOiBoYXZlIG9uZS4iCist ICBmaQorLSAgZXhpdCAxCistZmkgOzsKKy1lc2FjCistZmkKKy1maQorLVNIRUxMPSR7Q09ORklH X1NIRUxMLS9iaW4vc2h9CistZXhwb3J0IFNIRUxMCistIyBVbnNldCBtb3JlIHZhcmlhYmxlcyBr bm93biB0byBpbnRlcmZlcmUgd2l0aCBiZWhhdmlvciBvZiBjb21tb24gdG9vbHMuCistQ0xJQ09M T1JfRk9SQ0U9IEdSRVBfT1BUSU9OUz0KKy11bnNldCBDTElDT0xPUl9GT1JDRSBHUkVQX09QVElP TlMKKy0KKy0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKy0jIyBNNHNoIFNoZWxsIEZ1bmN0 aW9ucy4gIyMKKy0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKy0jIGFzX2ZuX3Vuc2V0IFZB UgorLSMgLS0tLS0tLS0tLS0tLS0tCistIyBQb3J0YWJseSB1bnNldCBWQVIuCistYXNfZm5fdW5z ZXQgKCkKKy17CistICB7IGV2YWwgJDE9OyB1bnNldCAkMTt9CistfQorLWFzX3Vuc2V0PWFzX2Zu X3Vuc2V0CistCistCistIyBhc19mbl9zZXRfc3RhdHVzIFNUQVRVUworLSMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKy0jIFNldCAkPyB0byBTVEFUVVMsIHdpdGhvdXQgZm9ya2luZy4KKy1hc19m bl9zZXRfc3RhdHVzICgpCisteworLSAgcmV0dXJuICQxCistfSAjIGFzX2ZuX3NldF9zdGF0dXMK Ky0KKy0jIGFzX2ZuX2V4aXQgU1RBVFVTCistIyAtLS0tLS0tLS0tLS0tLS0tLQorLSMgRXhpdCB0 aGUgc2hlbGwgd2l0aCBTVEFUVVMsIGV2ZW4gaW4gYSAidHJhcCAwIiBvciAic2V0IC1lIiBjb250 ZXh0LgorLWFzX2ZuX2V4aXQgKCkKKy17CistICBzZXQgK2UKKy0gIGFzX2ZuX3NldF9zdGF0dXMg JDEKKy0gIGV4aXQgJDEKKy19ICMgYXNfZm5fZXhpdAorLQorLSMgYXNfZm5fbWtkaXJfcAorLSMg LS0tLS0tLS0tLS0tLQorLSMgQ3JlYXRlICIkYXNfZGlyIiBhcyBhIGRpcmVjdG9yeSwgaW5jbHVk aW5nIHBhcmVudHMgaWYgbmVjZXNzYXJ5LgorLWFzX2ZuX21rZGlyX3AgKCkKKy17CistCistICBj YXNlICRhc19kaXIgaW4gIygKKy0gIC0qKSBhc19kaXI9Li8kYXNfZGlyOzsKKy0gIGVzYWMKKy0g IHRlc3QgLWQgIiRhc19kaXIiIHx8IGV2YWwgJGFzX21rZGlyX3AgfHwgeworLSAgICBhc19kaXJz PQorLSAgICB3aGlsZSA6OyBkbworLSAgICAgIGNhc2UgJGFzX2RpciBpbiAjKAorLSAgICAgICpc JyopIGFzX3FkaXI9YHByaW50ZiAiJXNcbiIgIiRhc19kaXIiIHwgc2VkICJzLycvJ1xcXFxcXFxc JycvZyJgOzsgIycoCistICAgICAgKikgYXNfcWRpcj0kYXNfZGlyOzsKKy0gICAgICBlc2FjCist ICAgICAgYXNfZGlycz0iJyRhc19xZGlyJyAkYXNfZGlycyIKKy0gICAgICBhc19kaXI9YCRhc19k aXJuYW1lIC0tICIkYXNfZGlyIiB8fAorLSRhc19leHByIFgiJGFzX2RpciIgOiAnWFwoLipbXi9d XCkvLypbXi9dW14vXSovKiQnIFx8IFwKKy0JIFgiJGFzX2RpciIgOiAnWFwoLy9cKVteL10nIFx8 IFwKKy0JIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwKKy0JIFgiJGFzX2RpciIgOiAnWFwo L1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CistcHJpbnRmICIlc1xuIiBYIiRhc19kaXIiIHwKKy0g ICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKy0JICAgIHMvL1wxLwor LQkgICAgcQorLQkgIH0KKy0JICAvXlhcKFwvXC9cKVteL10uKi97CistCSAgICBzLy9cMS8KKy0J ICAgIHEKKy0JICB9CistCSAgL15YXChcL1wvXCkkL3sKKy0JICAgIHMvL1wxLworLQkgICAgcQor LQkgIH0KKy0JICAvXlhcKFwvXCkuKi97CistCSAgICBzLy9cMS8KKy0JICAgIHEKKy0JICB9Cist CSAgcy8uKi8uLzsgcSdgCistICAgICAgdGVzdCAtZCAiJGFzX2RpciIgJiYgYnJlYWsKKy0gICAg ZG9uZQorLSAgICB0ZXN0IC16ICIkYXNfZGlycyIgfHwgZXZhbCAibWtkaXIgJGFzX2RpcnMiCist ICB9IHx8IHRlc3QgLWQgIiRhc19kaXIiIHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRl IGRpcmVjdG9yeSAkYXNfZGlyIgorLQorLQorLX0gIyBhc19mbl9ta2Rpcl9wCistCistIyBhc19m bl9leGVjdXRhYmxlX3AgRklMRQorLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0jIFRlc3Qg aWYgRklMRSBpcyBhbiBleGVjdXRhYmxlIHJlZ3VsYXIgZmlsZS4KKy1hc19mbl9leGVjdXRhYmxl X3AgKCkKKy17CistICB0ZXN0IC1mICIkMSIgJiYgdGVzdCAteCAiJDEiCistfSAjIGFzX2ZuX2V4 ZWN1dGFibGVfcAorLSMgYXNfZm5fYXBwZW5kIFZBUiBWQUxVRQorLSMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorLSMgQXBwZW5kIHRoZSB0ZXh0IGluIFZBTFVFIHRvIHRoZSBlbmQgb2YgdGhlIGRl ZmluaXRpb24gY29udGFpbmVkIGluIFZBUi4gVGFrZQorLSMgYWR2YW50YWdlIG9mIGFueSBzaGVs bCBvcHRpbWl6YXRpb25zIHRoYXQgYWxsb3cgYW1vcnRpemVkIGxpbmVhciBncm93dGggb3Zlcgor LSMgcmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVhZCBvZiB0aGUgdHlwaWNhbCBxdWFkcmF0aWMgZ3Jv d3RoIHByZXNlbnQgaW4gbmFpdmUKKy0jIGltcGxlbWVudGF0aW9ucy4KKy1pZiAoZXZhbCAiYXNf dmFyPTE7IGFzX3Zhcis9MjsgdGVzdCB4XCRhc192YXIgPSB4MTIiKSAyPi9kZXYvbnVsbAorLXRo ZW4gOgorLSAgZXZhbCAnYXNfZm5fYXBwZW5kICgpCistICB7CistICAgIGV2YWwgJDErPVwkMgor LSAgfScKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYXNfZm5fYXBwZW5kICgpCistICB7Cist ICAgIGV2YWwgJDE9XCQkMVwkMgorLSAgfSA7OworLWVzYWMKKy1maSAjIGFzX2ZuX2FwcGVuZAor LQorLSMgYXNfZm5fYXJpdGggQVJHLi4uCistIyAtLS0tLS0tLS0tLS0tLS0tLS0KKy0jIFBlcmZv cm0gYXJpdGhtZXRpYyBldmFsdWF0aW9uIG9uIHRoZSBBUkdzLCBhbmQgc3RvcmUgdGhlIHJlc3Vs dCBpbiB0aGUKKy0jIGdsb2JhbCAkYXNfdmFsLiBUYWtlIGFkdmFudGFnZSBvZiBzaGVsbHMgdGhh dCBjYW4gYXZvaWQgZm9ya3MuIFRoZSBhcmd1bWVudHMKKy0jIG11c3QgYmUgcG9ydGFibGUgYWNy b3NzICQoKCkpIGFuZCBleHByLgorLWlmIChldmFsICJ0ZXN0IFwkKCggMSArIDEgKSkgPSAyIikg Mj4vZGV2L251bGwKKy10aGVuIDoKKy0gIGV2YWwgJ2FzX2ZuX2FyaXRoICgpCistICB7CistICAg IGFzX3ZhbD0kKCggJCogKSkKKy0gIH0nCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFzX2Zu X2FyaXRoICgpCistICB7CistICAgIGFzX3ZhbD1gZXhwciAiJEAiIHx8IHRlc3QgJD8gLWVxIDFg CistICB9IDs7CistZXNhYworLWZpICMgYXNfZm5fYXJpdGgKKy0KKy0KKy0jIGFzX2ZuX2Vycm9y IFNUQVRVUyBFUlJPUiBbTElORU5PIExPR19GRF0KKy0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKy0jIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9S IiB0byBzdGRlcnIuIElmIExJTkVOTyBhbmQgTE9HX0ZEIGFyZQorLSMgcHJvdmlkZWQsIGFsc28g b3V0cHV0IHRoZSBlcnJvciB0byBMT0dfRkQsIHJlZmVyZW5jaW5nIExJTkVOTy4gVGhlbiBleGl0 IHRoZQorLSMgc2NyaXB0IHdpdGggU1RBVFVTLCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuCistYXNf Zm5fZXJyb3IgKCkKKy17CistICBhc19zdGF0dXM9JDE7IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAm JiBhc19zdGF0dXM9MQorLSAgaWYgdGVzdCAiJDQiOyB0aGVuCistICAgIGFzX2xpbmVubz0ke2Fz X2xpbmVuby0iJDMifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9f c3RhY2sKKy0gICAgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBl cnJvcjogJDIiID4mJDQKKy0gIGZpCistICBwcmludGYgIiVzXG4iICIkYXNfbWU6IGVycm9yOiAk MiIgPiYyCistICBhc19mbl9leGl0ICRhc19zdGF0dXMKKy19ICMgYXNfZm5fZXJyb3IKKy0KKy1p ZiBleHByIGEgOiAnXChhXCknID4vZGV2L251bGwgMj4mMSAmJgorLSAgIHRlc3QgIlhgZXhwciAw MDAwMSA6ICcuKlwoLi4uXCknYCIgPSBYMDAxOyB0aGVuCistICBhc19leHByPWV4cHIKKy1lbHNl CistICBhc19leHByPWZhbHNlCistZmkKKy0KKy1pZiAoYmFzZW5hbWUgLS0gLykgPi9kZXYvbnVs bCAyPiYxICYmIHRlc3QgIlhgYmFzZW5hbWUgLS0gLyAyPiYxYCIgPSAiWC8iOyB0aGVuCistICBh c19iYXNlbmFtZT1iYXNlbmFtZQorLWVsc2UKKy0gIGFzX2Jhc2VuYW1lPWZhbHNlCistZmkKKy0K Ky1pZiAoYXNfZGlyPWBkaXJuYW1lIC0tIC9gICYmIHRlc3QgIlgkYXNfZGlyIiA9IFgvKSA+L2Rl di9udWxsIDI+JjE7IHRoZW4KKy0gIGFzX2Rpcm5hbWU9ZGlybmFtZQorLWVsc2UKKy0gIGFzX2Rp cm5hbWU9ZmFsc2UKKy1maQorLQorLWFzX21lPWAkYXNfYmFzZW5hbWUgLS0gIiQwIiB8fAorLSRh c19leHByIFgvIiQwIiA6ICcuKi9cKFteL11bXi9dKlwpLyokJyBcfCBcCistCSBYIiQwIiA6ICdY XCgvL1wpJCcgXHwgXAorLQkgWCIkMCIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8Cist cHJpbnRmICIlc1xuIiBYLyIkMCIgfAorLSAgICBzZWQgJy9eLipcL1woW14vXVteL10qXClcLyok L3sKKy0JICAgIHMvL1wxLworLQkgICAgcQorLQkgIH0KKy0JICAvXlhcL1woXC9cL1wpJC97Cist CSAgICBzLy9cMS8KKy0JICAgIHEKKy0JICB9CistCSAgL15YXC9cKFwvXCkuKi97CistCSAgICBz Ly9cMS8KKy0JICAgIHEKKy0JICB9CistCSAgcy8uKi8uLzsgcSdgCistCistIyBBdm9pZCBkZXBl bmRpbmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLgorLWFzX2NyX2xldHRlcnM9J2FiY2RlZmdoaWpr bG1ub3BxcnN0dXZ3eHl6JworLWFzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZX WFlaJworLWFzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUworLWFzX2Ny X2RpZ2l0cz0nMDEyMzQ1Njc4OScKKy1hc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9k aWdpdHMKKy0KKy0KKy0gIGFzX2xpbmVub18xPSRMSU5FTk8gYXNfbGluZW5vXzFhPSRMSU5FTk8K Ky0gIGFzX2xpbmVub18yPSRMSU5FTk8gYXNfbGluZW5vXzJhPSRMSU5FTk8KKy0gIGV2YWwgJ3Rl c3QgIngkYXNfbGluZW5vXzEnJGFzX3J1biciICE9ICJ4JGFzX2xpbmVub18yJyRhc19ydW4nIiAm JgorLSAgdGVzdCAieGBleHByICRhc19saW5lbm9fMSckYXNfcnVuJyArIDFgIiA9ICJ4JGFzX2xp bmVub18yJyRhc19ydW4nIicgfHwgeworLSAgIyBCbGFtZSBMZWUgRS4gTWNNYWhvbiAoMTkzMS0x OTg5KSBmb3Igc2VkJ3Mgc3ludGF4LiAgOi0pCistICBzZWQgLW4gJworLSAgICBwCistICAgIC9b JF1MSU5FTk8vPQorLSAgJyA8JGFzX215c2VsZiB8CistICAgIHNlZCAnCistICAgICAgdCBjbGVh cgorLSAgICAgIDpjbGVhcgorLSAgICAgIHMvWyRdTElORU5PLiovJi0vCistICAgICAgdCBsaW5l bm8KKy0gICAgICBiCistICAgICAgOmxpbmVubworLSAgICAgIE4KKy0gICAgICA6bG9vcAorLSAg ICAgIHMvWyRdTElORU5PXChbXickYXNfY3JfYWxudW0nX10uKlxuXClcKC4qXCkvXDJcMVwyLwor LSAgICAgIHQgbG9vcAorLSAgICAgIHMvLVxuLiovLworLSAgICAnID4kYXNfbWUubGluZW5vICYm CistICBjaG1vZCAreCAiJGFzX21lLmxpbmVubyIgfHwKKy0gICAgeyBwcmludGYgIiVzXG4iICIk YXNfbWU6IGVycm9yOiBjYW5ub3QgY3JlYXRlICRhc19tZS5saW5lbm87IHJlcnVuIHdpdGggYSBQ T1NJWCBzaGVsbCIgPiYyOyBhc19mbl9leGl0IDE7IH0KKy0KKy0gICMgSWYgd2UgaGFkIHRvIHJl LWV4ZWN1dGUgd2l0aCAkQ09ORklHX1NIRUxMLCB3ZSdyZSBlbnN1cmVkIHRvIGhhdmUKKy0gICMg YWxyZWFkeSBkb25lIHRoYXQsIHNvIGVuc3VyZSB3ZSBkb24ndCB0cnkgdG8gZG8gc28gYWdhaW4g YW5kIGZhbGwKKy0gICMgaW4gYW4gaW5maW5pdGUgbG9vcC4gIFRoaXMgaGFzIGFscmVhZHkgaGFw cGVuZWQgaW4gcHJhY3RpY2UuCistICBfYXNfY2FuX3JlZXhlYz1ubzsgZXhwb3J0IF9hc19jYW5f cmVleGVjCistICAjIERvbid0IHRyeSB0byBleGVjIGFzIGl0IGNoYW5nZXMgJFswXSwgY2F1c2lu ZyBhbGwgc29ydCBvZiBwcm9ibGVtcworLSAgIyAodGhlIGRpcm5hbWUgb2YgJFswXSBpcyBub3Qg dGhlIHBsYWNlIHdoZXJlIHdlIG1pZ2h0IGZpbmQgdGhlCistICAjIG9yaWdpbmFsIGFuZCBzbyBv bi4gIEF1dG9jb25mIGlzIGVzcGVjaWFsbHkgc2Vuc2l0aXZlIHRvIHRoaXMpLgorLSAgLiAiLi8k YXNfbWUubGluZW5vIgorLSAgIyBFeGl0IHN0YXR1cyBpcyB0aGF0IG9mIHRoZSBsYXN0IGNvbW1h bmQuCistICBleGl0CistfQorLQorLQorLSMgRGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBwb3NzaWJs ZSB0byBtYWtlICdlY2hvJyBwcmludCB3aXRob3V0IGEgbmV3bGluZS4KKy0jIFRoZXNlIHZhcmlh YmxlcyBhcmUgbm8gbG9uZ2VyIHVzZWQgZGlyZWN0bHkgYnkgQXV0b2NvbmYsIGJ1dCBhcmUgQUNf U1VCU1RlZAorLSMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyBNYWtlZmlsZXMuCist RUNIT19DPSBFQ0hPX049IEVDSE9fVD0KKy1jYXNlIGBlY2hvIC1uIHhgIGluICMoKCgoKAorLS1u KikKKy0gIGNhc2UgYGVjaG8gJ3h5XGMnYCBpbgorLSAgKmMqKSBFQ0hPX1Q9JwknOzsJIyBFQ0hP X1QgaXMgc2luZ2xlIHRhYiBjaGFyYWN0ZXIuCistICB4eSkgIEVDSE9fQz0nXGMnOzsKKy0gICop ICAgZWNobyBgZWNobyBrc2g4OCBidWcgb24gQUlYIDYuMWAgPiAvZGV2L251bGwKKy0gICAgICAg RUNIT19UPScJJzs7CistICBlc2FjOzsKKy0qKQorLSAgRUNIT19OPSctbic7OworLWVzYWMKKy0K Ky0jIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkIHRoaXJkLXBhcnR5IG1hY3Jv cywgd2UgcHJvdmlkZQorLSMgdGhlIHNoZWxsIHZhcmlhYmxlcyAkYXNfZWNobyBhbmQgJGFzX2Vj aG9fbi4gIE5ldyBjb2RlIHNob3VsZCB1c2UKKy0jIEFTX0VDSE8oWyJtZXNzYWdlIl0pIGFuZCBB U19FQ0hPX04oWyJtZXNzYWdlIl0pLCByZXNwZWN0aXZlbHkuCistYXNfZWNobz0ncHJpbnRmICVz XG4nCistYXNfZWNob19uPSdwcmludGYgJXMnCistCistcm0gLWYgY29uZiQkIGNvbmYkJC5leGUg Y29uZiQkLmZpbGUKKy1pZiB0ZXN0IC1kIGNvbmYkJC5kaXI7IHRoZW4KKy0gIHJtIC1mIGNvbmYk JC5kaXIvY29uZiQkLmZpbGUKKy1lbHNlCistICBybSAtZiBjb25mJCQuZGlyCistICBta2RpciBj b25mJCQuZGlyIDI+L2Rldi9udWxsCistZmkKKy1pZiAoZWNobyA+Y29uZiQkLmZpbGUpIDI+L2Rl di9udWxsOyB0aGVuCistICBpZiBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7 IHRoZW4KKy0gICAgYXNfbG5fcz0nbG4gLXMnCistICAgICMgLi4uIGJ1dCB0aGVyZSBhcmUgdHdv IGdvdGNoYXM6CistICAgICMgMSkgT24gTVNZUywgYm90aCAnbG4gLXMgZmlsZSBkaXInIGFuZCAn bG4gZmlsZSBkaXInIGZhaWwuCistICAgICMgMikgREpHUFAgPCAyLjA0IGhhcyBubyBzeW1saW5r czsgJ2xuIC1zJyBjcmVhdGVzIGEgd3JhcHBlciBleGVjdXRhYmxlLgorLSAgICAjIEluIGJvdGgg Y2FzZXMsIHdlIGhhdmUgdG8gZGVmYXVsdCB0byAnY3AgLXBSJy4KKy0gICAgbG4gLXMgY29uZiQk LmZpbGUgY29uZiQkLmRpciAyPi9kZXYvbnVsbCAmJiB0ZXN0ICEgLWYgY29uZiQkLmV4ZSB8fAor LSAgICAgIGFzX2xuX3M9J2NwIC1wUicKKy0gIGVsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQkIDI+ L2Rldi9udWxsOyB0aGVuCistICAgIGFzX2xuX3M9bG4KKy0gIGVsc2UKKy0gICAgYXNfbG5fcz0n Y3AgLXBSJworLSAgZmkKKy1lbHNlCistICBhc19sbl9zPSdjcCAtcFInCistZmkKKy1ybSAtZiBj b25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZGlyL2NvbmYkJC5maWxlIGNvbmYkJC5maWxlCistcm1k aXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbAorLQorLWlmIG1rZGlyIC1wIC4gMj4vZGV2L251bGw7 IHRoZW4KKy0gIGFzX21rZGlyX3A9J21rZGlyIC1wICIkYXNfZGlyIicKKy1lbHNlCistICB0ZXN0 IC1kIC4vLXAgJiYgcm1kaXIgLi8tcAorLSAgYXNfbWtkaXJfcD1mYWxzZQorLWZpCistCistYXNf dGVzdF94PSd0ZXN0IC14JworLWFzX2V4ZWN1dGFibGVfcD1hc19mbl9leGVjdXRhYmxlX3AKKy0K Ky0jIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgQ1BQIG5hbWUu CistYXNfc2VkX2NwcD0ieSUqJGFzX2NyX2xldHRlcnMlUCRhc19jcl9MRVRURVJTJTtzJVteXyRh c19jcl9hbG51bV0lXyVnIgorLWFzX3RyX2NwcD0iZXZhbCBzZWQgJyRhc19zZWRfY3BwJyIgIyBk ZXByZWNhdGVkCistCistIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZh bGlkIHZhcmlhYmxlIG5hbWUuCistYXNfc2VkX3NoPSJ5JSorJXBwJTtzJVteXyRhc19jcl9hbG51 bV0lXyVnIgorLWFzX3RyX3NoPSJldmFsIHNlZCAnJGFzX3NlZF9zaCciICMgZGVwcmVjYXRlZAor LQorLQorLXRlc3QgLW4gIiRESkRJUiIgfHwgZXhlYyA3PCYwIDwvZGV2L251bGwKKy1leGVjIDY+ JjEKKy0KKy0jIE5hbWUgb2YgdGhlIGhvc3QuCistIyBob3N0bmFtZSBvbiBzb21lIHN5c3RlbXMg KFNWUjMuMiwgb2xkIEdOVS9MaW51eCkgcmV0dXJucyBhIGJvZ3VzIGV4aXQgc3RhdHVzLAorLSMg c28gdW5hbWUgZ2V0cyBydW4gdG9vLgorLWFjX2hvc3RuYW1lPWAoaG9zdG5hbWUgfHwgdW5hbWUg LW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAorLQorLSMKKy0jIEluaXRpYWxpemF0aW9ucy4KKy0j CistYWNfZGVmYXVsdF9wcmVmaXg9L3Vzci9sb2NhbAorLWFjX2NsZWFuX2ZpbGVzPQorLWFjX2Nv bmZpZ19saWJvYmpfZGlyPS4KKy1MSUJPQkpTPQorLWNyb3NzX2NvbXBpbGluZz1ubworLXN1YmRp cnM9CistTUZMQUdTPQorLU1BS0VGTEFHUz0KKy0KKy0jIElkZW50aXR5IG9mIHRoaXMgcGFja2Fn ZS4KKy1QQUNLQUdFX05BTUU9J2Jhc2gnCistUEFDS0FHRV9UQVJOQU1FPSdiYXNoJworLVBBQ0tB R0VfVkVSU0lPTj0nNS4zLXJjMicKKy1QQUNLQUdFX1NUUklORz0nYmFzaCA1LjMtcmMyJworLVBB Q0tBR0VfQlVHUkVQT1JUPSdidWctYmFzaEBnbnUub3JnJworLVBBQ0tBR0VfVVJMPScnCistCist YWNfdW5pcXVlX2ZpbGU9InNoZWxsLmgiCistIyBGYWN0b3JpbmcgZGVmYXVsdCBoZWFkZXJzIGZv ciBtb3N0IHRlc3RzLgorLWFjX2luY2x1ZGVzX2RlZmF1bHQ9IlwKKy0jaW5jbHVkZSA8c3RkZGVm Lmg+CistI2lmZGVmIEhBVkVfU1RESU9fSAorLSMgaW5jbHVkZSA8c3RkaW8uaD4KKy0jZW5kaWYK Ky0jaWZkZWYgSEFWRV9TVERMSUJfSAorLSMgaW5jbHVkZSA8c3RkbGliLmg+CistI2VuZGlmCist I2lmZGVmIEhBVkVfU1RSSU5HX0gKKy0jIGluY2x1ZGUgPHN0cmluZy5oPgorLSNlbmRpZgorLSNp ZmRlZiBIQVZFX0lOVFRZUEVTX0gKKy0jIGluY2x1ZGUgPGludHR5cGVzLmg+CistI2VuZGlmCist I2lmZGVmIEhBVkVfU1RESU5UX0gKKy0jIGluY2x1ZGUgPHN0ZGludC5oPgorLSNlbmRpZgorLSNp ZmRlZiBIQVZFX1NUUklOR1NfSAorLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgorLSNlbmRpZgorLSNp ZmRlZiBIQVZFX1NZU19UWVBFU19ICistIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jZW5kaWYK Ky0jaWZkZWYgSEFWRV9TWVNfU1RBVF9ICistIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgorLSNlbmRp ZgorLSNpZmRlZiBIQVZFX1VOSVNURF9ICistIyBpbmNsdWRlIDx1bmlzdGQuaD4KKy0jZW5kaWYi CistCistYWNfaGVhZGVyX2NfbGlzdD0KKy1ndF9uZWVkcz0KKy1hY19mdW5jX2NfbGlzdD0KKy1n bF91c2VfdGhyZWFkc19kZWZhdWx0PQorLWdsX3VzZV93aW5wdGhyZWFkc19kZWZhdWx0PQorLWVu YWJsZV95ZWFyMjAzOD1ubworLWFjX3N1YnN0X3ZhcnM9J0xUTElCT0JKUworLVNURENLRElOVF9I CistTE9DQUxfREVGUworLUxPQ0FMX0xERkxBR1MKKy1MT0NBTF9DRkxBR1MKKy1MT0NBTF9MSUJT CistTUFMTE9DX0RFQlVHCistREVCVUcKKy1SRUxTVEFUVVMKKy1CQVNIVkVSUworLWhlYWRlcnNk aXIKKy1sb2FkYWJsZXNkaXIKKy1CVUlMRF9ESVIKKy1pbmNkaXIKKy1QUk9GSUxFX0ZMQUdTCist U0hPQkpfU1RBVFVTCistU0hPQkpfTElCUworLVNIT0JKX1hMREZMQUdTCistU0hPQkpfTERGTEFH UworLVNIT0JKX0xECistU0hPQkpfQ0ZMQUdTCistU0hPQkpfQ0MKKy1KT0JTX08KKy1URVJNQ0FQ X0RFUAorLVRFUk1DQVBfTElCCistU0lHTElTVF9PCistUFRIUkVBRF9IX0RFRklORVNfU1RSVUNU X1RJTUVTUEVDCistU1lTX1RJTUVfSF9ERUZJTkVTX1NUUlVDVF9USU1FU1BFQworLVRJTUVfSF9E RUZJTkVTX1NUUlVDVF9USU1FU1BFQworLUxJQklOVExfSAorLUlOVExfSU5DCistSU5UTF9ERVAK Ky1MSUJPQkpTCistUE9TVUIKKy1MVExJQklOVEwKKy1MSUJJTlRMCistSU5UTExJQlMKKy1DQVRP QkpFWFQKKy1VU0VfSU5DTFVERURfTElCSU5UTAorLUJVSUxEX0lOQ0xVREVEX0xJQklOVEwKKy1X SU5EUkVTCistV09FMzIKKy1XT0UzMkRMTAorLUVOSEFOQ0VfTE9DQUxFX0ZVTkNTCistSEFWRV9X UFJJTlRGCistSEFWRV9TTlBSSU5URgorLUhBVkVfQVNQUklOVEYKKy1IQVZFX1BPU0lYX1BSSU5U RgorLUlOVExfREVGQVVMVF9WRVJCT1NJVFkKKy1BUkZMQUdTCistSU5UTF9NQUNPU1hfTElCUwor LUxPQ0FMRU5BTUVfRU5IQU5DRV9MT0NBTEVfRlVOQ1MKKy1SRVBMQUNFX1NUUlVDVF9MQ09OVgor LVJFUExBQ0VfRlJFRUxPQ0FMRQorLVJFUExBQ0VfRFVQTE9DQUxFCistUkVQTEFDRV9ORVdMT0NB TEUKKy1SRVBMQUNFX1NFVExPQ0FMRQorLVJFUExBQ0VfTE9DQUxFQ09OVgorLUhBVkVfRlJFRUxP Q0FMRQorLUhBVkVfRFVQTE9DQUxFCistSEFWRV9ORVdMT0NBTEUKKy1HTlVMSUJIRUFERVJTX09W RVJSSURFX1dJTlRfVAorLUlOVExCSVNPTgorLUxUTElCSUNPTlYKKy1MSUJJQ09OVgorLUxUTElC TVVMVElUSFJFQUQKKy1MSUJNVUxUSVRIUkVBRAorLUxUTElCVEhSRUFECistTElCVEhSRUFECist TElCU1REVEhSRUFECistTElCX1NDSEVEX1lJRUxECistTElCUE1VTFRJVEhSRUFECistTElCUFRI UkVBRAorLUFMTE9DQQorLUhBVkVfVklTSUJJTElUWQorLUNGTEFHX1ZJU0lCSUxJVFkKKy1HTElC QzIKKy1DUFAKKy1YR0VUVEVYVF9FWFRSQV9PUFRJT05TCistTVNHTUVSR0VfRk9SX01TR0ZNVF9P UFRJT04KKy1NU0dNRVJHRQorLVhHRVRURVhUXzAxNQorLVhHRVRURVhUCistR01TR0ZNVF8wMTUK Ky1HTVNHRk1UCistTVNHRk1UCistR0VUVEVYVF9NQUNST19WRVJTSU9OCistVVNFX05MUworLVNF RAorLU1LRElSX1AKKy1TSVpFCistTUFLRV9TSEVMTAorLUlOU1RBTExfU1RSSVBfUFJPR1JBTQor LVNUUklQCistaW5zdGFsbF9zaAorLVNFVF9NQUtFCistWUZMQUdTCistWUFDQworLVJBTkxJQgor LUFSCistSU5TVEFMTF9EQVRBCistSU5TVEFMTF9TQ1JJUFQKKy1JTlNUQUxMX1BST0dSQU0KKy1U SUxERV9MSUIKKy1ISVNUX0lOQ0xVREVESVIKKy1ISVNUX0xJQkRJUgorLUhJU1RPUllfREVQCist SElTVE9SWV9MSUIKKy1STF9JTkNMVURFCistUkxfSU5DTFVERURJUgorLVJMX0xJQkRJUgorLVJF QURMSU5FX0RFUAorLVJFQURMSU5FX0xJQgorLVJMX01JTk9SCistUkxfTUFKT1IKKy1STF9WRVJT SU9OCistTElCU19GT1JfQlVJTEQKKy1TVFlMRV9DRkxBR1MKKy1TVEFUSUNfTEQKKy1TSUdOQU1F U19PCistU0lHTkFNRVNfSAorLUNST1NTX0NPTVBJTEUKKy1PQkpFWFQKKy1FWEVFWFQKKy1hY19j dF9DQworLUNQUEZMQUdTCistTERGTEFHUworLUNGTEFHUworLUNDCistSEVMUFNUUklOR1MKKy1I RUxQRklMRVNfVEFSR0VUCistSEVMUElOU1RBTEwKKy1IRUxQRElSREVGSU5FCistSEVMUERJUgor LUFSUkFZX08KKy1NQUxMT0NfREVQCistTUFMTE9DX0xERkxBR1MKKy1NQUxMT0NfTElCUkFSWQor LU1BTExPQ19MSUIKKy1NQUxMT0NfU1JDCistTUFMTE9DX1RBUkdFVAorLVRFU1RTQ1JJUFQKKy1D UFBGTEFHU19GT1JfQlVJTEQKKy1MREZMQUdTX0ZPUl9CVUlMRAorLUNGTEFHU19GT1JfQlVJTEQK Ky1DQ19GT1JfQlVJTEQKKy1ERUJVR0dFUl9TVEFSVF9GSUxFCistaG9zdF9vcworLWhvc3RfdmVu ZG9yCistaG9zdF9jcHUKKy1ob3N0CistYnVpbGRfb3MKKy1idWlsZF92ZW5kb3IKKy1idWlsZF9j cHUKKy1idWlsZAorLXRhcmdldF9hbGlhcworLWhvc3RfYWxpYXMKKy1idWlsZF9hbGlhcworLUxJ QlMKKy1FQ0hPX1QKKy1FQ0hPX04KKy1FQ0hPX0MKKy1ERUZTCistbWFuZGlyCistbG9jYWxlZGly CistbGliZGlyCistcHNkaXIKKy1wZGZkaXIKKy1kdmlkaXIKKy1odG1sZGlyCistaW5mb2Rpcgor LWRvY2RpcgorLW9sZGluY2x1ZGVkaXIKKy1pbmNsdWRlZGlyCistcnVuc3RhdGVkaXIKKy1sb2Nh bHN0YXRlZGlyCistc2hhcmVkc3RhdGVkaXIKKy1zeXNjb25mZGlyCistZGF0YWRpcgorLWRhdGFy b290ZGlyCistbGliZXhlY2RpcgorLXNiaW5kaXIKKy1iaW5kaXIKKy1wcm9ncmFtX3RyYW5zZm9y bV9uYW1lCistcHJlZml4CistZXhlY19wcmVmaXgKKy1QQUNLQUdFX1VSTAorLVBBQ0tBR0VfQlVH UkVQT1JUCistUEFDS0FHRV9TVFJJTkcKKy1QQUNLQUdFX1ZFUlNJT04KKy1QQUNLQUdFX1RBUk5B TUUKKy1QQUNLQUdFX05BTUUKKy1QQVRIX1NFUEFSQVRPUgorLVNIRUxMJworLWFjX3N1YnN0X2Zp bGVzPScnCistYWNfdXNlcl9vcHRzPScKKy1lbmFibGVfb3B0aW9uX2NoZWNraW5nCistd2l0aF9h ZnMKKy13aXRoX2Jhc2hfbWFsbG9jCistd2l0aF9jdXJzZXMKKy13aXRoX2dudV9tYWxsb2MKKy13 aXRoX2luc3RhbGxlZF9yZWFkbGluZQorLWVuYWJsZV9taW5pbWFsX2NvbmZpZworLWVuYWJsZV9h bGlhcworLWVuYWJsZV9hbHRfYXJyYXlfaW1wbGVtZW50YXRpb24KKy1lbmFibGVfYXJpdGhfZm9y X2NvbW1hbmQKKy1lbmFibGVfYXJyYXlfdmFyaWFibGVzCistZW5hYmxlX2JhbmdfaGlzdG9yeQor LWVuYWJsZV9iYXNoX3NvdXJjZV9mdWxscGF0aF9kZWZhdWx0CistZW5hYmxlX2JyYWNlX2V4cGFu c2lvbgorLWVuYWJsZV9jYXNlbW9kX2F0dHJpYnV0ZXMKKy1lbmFibGVfY2FzZW1vZF9leHBhbnNp b25zCistZW5hYmxlX2NvbW1hbmRfdGltaW5nCistZW5hYmxlX2NvbmRfY29tbWFuZAorLWVuYWJs ZV9jb25kX3JlZ2V4cAorLWVuYWJsZV9jb3Byb2Nlc3NlcworLWVuYWJsZV9kZWJ1Z2dlcgorLWVu YWJsZV9kZXZfZmRfc3RhdF9icm9rZW4KKy1lbmFibGVfZGlyZXhwYW5kX2RlZmF1bHQKKy1lbmFi bGVfZGlyZWN0b3J5X3N0YWNrCistZW5hYmxlX2Rpc2FibGVkX2J1aWx0aW5zCistZW5hYmxlX2Rw YXJlbl9hcml0aG1ldGljCistZW5hYmxlX2V4dGVuZGVkX2dsb2IKKy1lbmFibGVfZXh0ZW5kZWRf Z2xvYl9kZWZhdWx0CistZW5hYmxlX2Z1bmN0aW9uX2ltcG9ydAorLWVuYWJsZV9nbG9iX2FzY2lp cmFuZ2VzX2RlZmF1bHQKKy1lbmFibGVfaGVscF9idWlsdGluCistZW5hYmxlX2hpc3RvcnkKKy1l bmFibGVfam9iX2NvbnRyb2wKKy1lbmFibGVfbXVsdGlieXRlCistZW5hYmxlX25ldF9yZWRpcmVj dGlvbnMKKy1lbmFibGVfcHJvY2Vzc19zdWJzdGl0dXRpb24KKy1lbmFibGVfcHJvZ2NvbXAKKy1l bmFibGVfcHJvbXB0X3N0cmluZ19kZWNvZGluZworLWVuYWJsZV9yZWFkbGluZQorLWVuYWJsZV9y ZXN0cmljdGVkCistZW5hYmxlX3NlbGVjdAorLWVuYWJsZV9zZXBhcmF0ZV9oZWxwZmlsZXMKKy1l bmFibGVfc2luZ2xlX2hlbHBfc3RyaW5ncworLWVuYWJsZV9zdHJpY3RfcG9zaXhfZGVmYXVsdAor LWVuYWJsZV90cmFuc2xhdGFibGVfc3RyaW5ncworLWVuYWJsZV91c2dfZWNob19kZWZhdWx0Cist ZW5hYmxlX3hwZ19lY2hvX2RlZmF1bHQKKy1lbmFibGVfbWVtX3NjcmFtYmxlCistZW5hYmxlX3By b2ZpbGluZworLWVuYWJsZV9zdGF0aWNfbGluaworLWVuYWJsZV9sYXJnZWZpbGUKKy1lbmFibGVf bmxzCistZW5hYmxlX3RocmVhZHMKKy13aXRoX2dudV9sZAorLWVuYWJsZV9ycGF0aAorLXdpdGhf bGliaWNvbnZfcHJlZml4Cistd2l0aF9pbmNsdWRlZF9nZXR0ZXh0Cistd2l0aF9saWJpbnRsX3By ZWZpeAorLWVuYWJsZV95ZWFyMjAzOAorLScKKy0gICAgICBhY19wcmVjaW91c192YXJzPSdidWls ZF9hbGlhcworLWhvc3RfYWxpYXMKKy10YXJnZXRfYWxpYXMKKy1ERUJVR0dFUl9TVEFSVF9GSUxF CistQ0NfRk9SX0JVSUxECistQ0ZMQUdTX0ZPUl9CVUlMRAorLUxERkxBR1NfRk9SX0JVSUxECist Q1BQRkxBR1NfRk9SX0JVSUxECistQ0MKKy1DRkxBR1MKKy1MREZMQUdTCistTElCUworLUNQUEZM QUdTCistWUFDQworLVlGTEFHUworLUNQUCcKKy0KKy0KKy0jIEluaXRpYWxpemUgc29tZSB2YXJp YWJsZXMgc2V0IGJ5IG9wdGlvbnMuCistYWNfaW5pdF9oZWxwPQorLWFjX2luaXRfdmVyc2lvbj1m YWxzZQorLWFjX3VucmVjb2duaXplZF9vcHRzPQorLWFjX3VucmVjb2duaXplZF9zZXA9CistIyBU aGUgdmFyaWFibGVzIGhhdmUgdGhlIHNhbWUgbmFtZXMgYXMgdGhlIG9wdGlvbnMsIHdpdGgKKy0j IGRhc2hlcyBjaGFuZ2VkIHRvIHVuZGVybGluZXMuCistY2FjaGVfZmlsZT0vZGV2L251bGwKKy1l eGVjX3ByZWZpeD1OT05FCistbm9fY3JlYXRlPQorLW5vX3JlY3Vyc2lvbj0KKy1wcmVmaXg9Tk9O RQorLXByb2dyYW1fcHJlZml4PU5PTkUKKy1wcm9ncmFtX3N1ZmZpeD1OT05FCistcHJvZ3JhbV90 cmFuc2Zvcm1fbmFtZT1zLHgseCwKKy1zaWxlbnQ9Cistc2l0ZT0KKy1zcmNkaXI9CistdmVyYm9z ZT0KKy14X2luY2x1ZGVzPU5PTkUKKy14X2xpYnJhcmllcz1OT05FCistCistIyBJbnN0YWxsYXRp b24gZGlyZWN0b3J5IG9wdGlvbnMuCistIyBUaGVzZSBhcmUgbGVmdCB1bmV4cGFuZGVkIHNvIHVz ZXJzIGNhbiAibWFrZSBpbnN0YWxsIGV4ZWNfcHJlZml4PS9mb28iCistIyBhbmQgYWxsIHRoZSB2 YXJpYWJsZXMgdGhhdCBhcmUgc3VwcG9zZWQgdG8gYmUgYmFzZWQgb24gZXhlY19wcmVmaXgKKy0j IGJ5IGRlZmF1bHQgd2lsbCBhY3R1YWxseSBjaGFuZ2UuCistIyBVc2UgYnJhY2VzIGluc3RlYWQg b2YgcGFyZW5zIGJlY2F1c2Ugc2gsIHBlcmwsIGV0Yy4gYWxzbyBhY2NlcHQgdGhlbS4KKy0jIChU aGUgbGlzdCBmb2xsb3dzIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBHTlUgQ29kaW5nIFN0YW5kYXJk cy4pCistYmluZGlyPScke2V4ZWNfcHJlZml4fS9iaW4nCistc2JpbmRpcj0nJHtleGVjX3ByZWZp eH0vc2JpbicKKy1saWJleGVjZGlyPScke2V4ZWNfcHJlZml4fS9saWJleGVjJworLWRhdGFyb290 ZGlyPScke3ByZWZpeH0vc2hhcmUnCistZGF0YWRpcj0nJHtkYXRhcm9vdGRpcn0nCistc3lzY29u ZmRpcj0nJHtwcmVmaXh9L2V0YycKKy1zaGFyZWRzdGF0ZWRpcj0nJHtwcmVmaXh9L2NvbScKKy1s b2NhbHN0YXRlZGlyPScke3ByZWZpeH0vdmFyJworLXJ1bnN0YXRlZGlyPScke2xvY2Fsc3RhdGVk aXJ9L3J1bicKKy1pbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVkZScKKy1vbGRpbmNsdWRlZGly PScvdXNyL2luY2x1ZGUnCistZG9jZGlyPScke2RhdGFyb290ZGlyfS9kb2MvJHtQQUNLQUdFX1RB Uk5BTUV9JworLWluZm9kaXI9JyR7ZGF0YXJvb3RkaXJ9L2luZm8nCistaHRtbGRpcj0nJHtkb2Nk aXJ9JworLWR2aWRpcj0nJHtkb2NkaXJ9JworLXBkZmRpcj0nJHtkb2NkaXJ9JworLXBzZGlyPSck e2RvY2Rpcn0nCistbGliZGlyPScke2V4ZWNfcHJlZml4fS9saWInCistbG9jYWxlZGlyPScke2Rh dGFyb290ZGlyfS9sb2NhbGUnCistbWFuZGlyPScke2RhdGFyb290ZGlyfS9tYW4nCistCistYWNf cHJldj0KKy1hY19kYXNoZGFzaD0KKy1mb3IgYWNfb3B0aW9uCistZG8KKy0gICMgSWYgdGhlIHBy ZXZpb3VzIG9wdGlvbiBuZWVkcyBhbiBhcmd1bWVudCwgYXNzaWduIGl0LgorLSAgaWYgdGVzdCAt biAiJGFjX3ByZXYiOyB0aGVuCistICAgIGV2YWwgJGFjX3ByZXY9XCRhY19vcHRpb24KKy0gICAg YWNfcHJldj0KKy0gICAgY29udGludWUKKy0gIGZpCistCistICBjYXNlICRhY19vcHRpb24gaW4K Ky0gICo9PyopIGFjX29wdGFyZz1gZXhwciAiWCRhY19vcHRpb24iIDogJ1tePV0qPVwoLipcKSdg IDs7CistICAqPSkgICBhY19vcHRhcmc9IDs7CistICAqKSAgICBhY19vcHRhcmc9eWVzIDs7Cist ICBlc2FjCistCistICBjYXNlICRhY19kYXNoZGFzaCRhY19vcHRpb24gaW4KKy0gIC0tKQorLSAg ICBhY19kYXNoZGFzaD15ZXMgOzsKKy0KKy0gIC1iaW5kaXIgfCAtLWJpbmRpciB8IC0tYmluZGkg fCAtLWJpbmQgfCAtLWJpbiB8IC0tYmkpCistICAgIGFjX3ByZXY9YmluZGlyIDs7CistICAtYmlu ZGlyPSogfCAtLWJpbmRpcj0qIHwgLS1iaW5kaT0qIHwgLS1iaW5kPSogfCAtLWJpbj0qIHwgLS1i aT0qKQorLSAgICBiaW5kaXI9JGFjX29wdGFyZyA7OworLQorLSAgLWJ1aWxkIHwgLS1idWlsZCB8 IC0tYnVpbCB8IC0tYnVpIHwgLS1idSkKKy0gICAgYWNfcHJldj1idWlsZF9hbGlhcyA7OworLSAg LWJ1aWxkPSogfCAtLWJ1aWxkPSogfCAtLWJ1aWw9KiB8IC0tYnVpPSogfCAtLWJ1PSopCistICAg IGJ1aWxkX2FsaWFzPSRhY19vcHRhcmcgOzsKKy0KKy0gIC1jYWNoZS1maWxlIHwgLS1jYWNoZS1m aWxlIHwgLS1jYWNoZS1maWwgfCAtLWNhY2hlLWZpIFwKKy0gIHwgLS1jYWNoZS1mIHwgLS1jYWNo ZS0gfCAtLWNhY2hlIHwgLS1jYWNoIHwgLS1jYWMgfCAtLWNhIHwgLS1jKQorLSAgICBhY19wcmV2 PWNhY2hlX2ZpbGUgOzsKKy0gIC1jYWNoZS1maWxlPSogfCAtLWNhY2hlLWZpbGU9KiB8IC0tY2Fj aGUtZmlsPSogfCAtLWNhY2hlLWZpPSogXAorLSAgfCAtLWNhY2hlLWY9KiB8IC0tY2FjaGUtPSog fCAtLWNhY2hlPSogfCAtLWNhY2g9KiB8IC0tY2FjPSogfCAtLWNhPSogfCAtLWM9KikKKy0gICAg Y2FjaGVfZmlsZT0kYWNfb3B0YXJnIDs7CistCistICAtLWNvbmZpZy1jYWNoZSB8IC1DKQorLSAg ICBjYWNoZV9maWxlPWNvbmZpZy5jYWNoZSA7OworLQorLSAgLWRhdGFkaXIgfCAtLWRhdGFkaXIg fCAtLWRhdGFkaSB8IC0tZGF0YWQpCistICAgIGFjX3ByZXY9ZGF0YWRpciA7OworLSAgLWRhdGFk aXI9KiB8IC0tZGF0YWRpcj0qIHwgLS1kYXRhZGk9KiB8IC0tZGF0YWQ9KikKKy0gICAgZGF0YWRp cj0kYWNfb3B0YXJnIDs7CistCistICAtZGF0YXJvb3RkaXIgfCAtLWRhdGFyb290ZGlyIHwgLS1k YXRhcm9vdGRpIHwgLS1kYXRhcm9vdGQgfCAtLWRhdGFyb290IFwKKy0gIHwgLS1kYXRhcm9vIHwg LS1kYXRhcm8gfCAtLWRhdGFyKQorLSAgICBhY19wcmV2PWRhdGFyb290ZGlyIDs7CistICAtZGF0 YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3RkaT0qIHwgLS1kYXRhcm9v dGQ9KiBcCistICB8IC0tZGF0YXJvb3Q9KiB8IC0tZGF0YXJvbz0qIHwgLS1kYXRhcm89KiB8IC0t ZGF0YXI9KikKKy0gICAgZGF0YXJvb3RkaXI9JGFjX29wdGFyZyA7OworLQorLSAgLWRpc2FibGUt KiB8IC0tZGlzYWJsZS0qKQorLSAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAn eC0qZGlzYWJsZS1cKC4qXCknYAorLSAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFs aWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCistICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipb Xi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCistICAgICAgYXNfZm5fZXJyb3IgJD8g ImludmFsaWQgZmVhdHVyZSBuYW1lOiAnJGFjX3VzZXJvcHQnIgorLSAgICBhY191c2Vyb3B0X29y aWc9JGFjX3VzZXJvcHQKKy0gICAgYWNfdXNlcm9wdD1gcHJpbnRmICIlc1xuIiAiJGFjX3VzZXJv cHQiIHwgc2VkICdzL1stKy5dL18vZydgCistICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgorLSAg ICAgICoiCistImVuYWJsZV8kYWNfdXNlcm9wdCIKKy0iKikgOzsKKy0gICAgICAqKSBhY191bnJl Y29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVjb2duaXplZF9zZXAt LWRpc2FibGUtJGFjX3VzZXJvcHRfb3JpZyIKKy0JIGFjX3VucmVjb2duaXplZF9zZXA9JywgJzs7 CistICAgIGVzYWMKKy0gICAgZXZhbCBlbmFibGVfJGFjX3VzZXJvcHQ9bm8gOzsKKy0KKy0gIC1k b2NkaXIgfCAtLWRvY2RpciB8IC0tZG9jZGkgfCAtLWRvYyB8IC0tZG8pCistICAgIGFjX3ByZXY9 ZG9jZGlyIDs7CistICAtZG9jZGlyPSogfCAtLWRvY2Rpcj0qIHwgLS1kb2NkaT0qIHwgLS1kb2M9 KiB8IC0tZG89KikKKy0gICAgZG9jZGlyPSRhY19vcHRhcmcgOzsKKy0KKy0gIC1kdmlkaXIgfCAt LWR2aWRpciB8IC0tZHZpZGkgfCAtLWR2aWQgfCAtLWR2aSB8IC0tZHYpCistICAgIGFjX3ByZXY9 ZHZpZGlyIDs7CistICAtZHZpZGlyPSogfCAtLWR2aWRpcj0qIHwgLS1kdmlkaT0qIHwgLS1kdmlk PSogfCAtLWR2aT0qIHwgLS1kdj0qKQorLSAgICBkdmlkaXI9JGFjX29wdGFyZyA7OworLQorLSAg LWVuYWJsZS0qIHwgLS1lbmFibGUtKikKKy0gICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRp b24iIDogJ3gtKmVuYWJsZS1cKFtePV0qXCknYAorLSAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFy ZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCistICAgIGV4cHIgIngkYWNfdXNlcm9w dCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCistICAgICAgYXNfZm5f ZXJyb3IgJD8gImludmFsaWQgZmVhdHVyZSBuYW1lOiAnJGFjX3VzZXJvcHQnIgorLSAgICBhY191 c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKKy0gICAgYWNfdXNlcm9wdD1gcHJpbnRmICIlc1xuIiAi JGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCistICAgIGNhc2UgJGFjX3VzZXJfb3B0 cyBpbgorLSAgICAgICoiCistImVuYWJsZV8kYWNfdXNlcm9wdCIKKy0iKikgOzsKKy0gICAgICAq KSBhY191bnJlY29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVjb2du aXplZF9zZXAtLWVuYWJsZS0kYWNfdXNlcm9wdF9vcmlnIgorLQkgYWNfdW5yZWNvZ25pemVkX3Nl cD0nLCAnOzsKKy0gICAgZXNhYworLSAgICBldmFsIGVuYWJsZV8kYWNfdXNlcm9wdD1cJGFjX29w dGFyZyA7OworLQorLSAgLWV4ZWMtcHJlZml4IHwgLS1leGVjX3ByZWZpeCB8IC0tZXhlYy1wcmVm aXggfCAtLWV4ZWMtcHJlZmkgXAorLSAgfCAtLWV4ZWMtcHJlZiB8IC0tZXhlYy1wcmUgfCAtLWV4 ZWMtcHIgfCAtLWV4ZWMtcCB8IC0tZXhlYy0gXAorLSAgfCAtLWV4ZWMgfCAtLWV4ZSB8IC0tZXgp CistICAgIGFjX3ByZXY9ZXhlY19wcmVmaXggOzsKKy0gIC1leGVjLXByZWZpeD0qIHwgLS1leGVj X3ByZWZpeD0qIHwgLS1leGVjLXByZWZpeD0qIHwgLS1leGVjLXByZWZpPSogXAorLSAgfCAtLWV4 ZWMtcHJlZj0qIHwgLS1leGVjLXByZT0qIHwgLS1leGVjLXByPSogfCAtLWV4ZWMtcD0qIHwgLS1l eGVjLT0qIFwKKy0gIHwgLS1leGVjPSogfCAtLWV4ZT0qIHwgLS1leD0qKQorLSAgICBleGVjX3By ZWZpeD0kYWNfb3B0YXJnIDs7CistCistICAtZ2FzIHwgLS1nYXMgfCAtLWdhIHwgLS1nKQorLSAg ICAjIE9ic29sZXRlOyB1c2UgLS13aXRoLWdhcy4KKy0gICAgd2l0aF9nYXM9eWVzIDs7CistCist ICAtaGVscCB8IC0taGVscCB8IC0taGVsIHwgLS1oZSB8IC1oKQorLSAgICBhY19pbml0X2hlbHA9 bG9uZyA7OworLSAgLWhlbHA9ciogfCAtLWhlbHA9ciogfCAtLWhlbD1yKiB8IC0taGU9ciogfCAt aHIqKQorLSAgICBhY19pbml0X2hlbHA9cmVjdXJzaXZlIDs7CistICAtaGVscD1zKiB8IC0taGVs cD1zKiB8IC0taGVsPXMqIHwgLS1oZT1zKiB8IC1ocyopCistICAgIGFjX2luaXRfaGVscD1zaG9y dCA7OworLQorLSAgLWhvc3QgfCAtLWhvc3QgfCAtLWhvcyB8IC0taG8pCistICAgIGFjX3ByZXY9 aG9zdF9hbGlhcyA7OworLSAgLWhvc3Q9KiB8IC0taG9zdD0qIHwgLS1ob3M9KiB8IC0taG89KikK Ky0gICAgaG9zdF9hbGlhcz0kYWNfb3B0YXJnIDs7CistCistICAtaHRtbGRpciB8IC0taHRtbGRp ciB8IC0taHRtbGRpIHwgLS1odG1sZCB8IC0taHRtbCB8IC0taHRtIHwgLS1odCkKKy0gICAgYWNf cHJldj1odG1sZGlyIDs7CistICAtaHRtbGRpcj0qIHwgLS1odG1sZGlyPSogfCAtLWh0bWxkaT0q IHwgLS1odG1sZD0qIHwgLS1odG1sPSogfCAtLWh0bT0qIFwKKy0gIHwgLS1odD0qKQorLSAgICBo dG1sZGlyPSRhY19vcHRhcmcgOzsKKy0KKy0gIC1pbmNsdWRlZGlyIHwgLS1pbmNsdWRlZGlyIHwg LS1pbmNsdWRlZGkgfCAtLWluY2x1ZGVkIHwgLS1pbmNsdWRlIFwKKy0gIHwgLS1pbmNsdWQgfCAt LWluY2x1IHwgLS1pbmNsIHwgLS1pbmMpCistICAgIGFjX3ByZXY9aW5jbHVkZWRpciA7OworLSAg LWluY2x1ZGVkaXI9KiB8IC0taW5jbHVkZWRpcj0qIHwgLS1pbmNsdWRlZGk9KiB8IC0taW5jbHVk ZWQ9KiB8IC0taW5jbHVkZT0qIFwKKy0gIHwgLS1pbmNsdWQ9KiB8IC0taW5jbHU9KiB8IC0taW5j bD0qIHwgLS1pbmM9KikKKy0gICAgaW5jbHVkZWRpcj0kYWNfb3B0YXJnIDs7CistCistICAtaW5m b2RpciB8IC0taW5mb2RpciB8IC0taW5mb2RpIHwgLS1pbmZvZCB8IC0taW5mbyB8IC0taW5mKQor LSAgICBhY19wcmV2PWluZm9kaXIgOzsKKy0gIC1pbmZvZGlyPSogfCAtLWluZm9kaXI9KiB8IC0t aW5mb2RpPSogfCAtLWluZm9kPSogfCAtLWluZm89KiB8IC0taW5mPSopCistICAgIGluZm9kaXI9 JGFjX29wdGFyZyA7OworLQorLSAgLWxpYmRpciB8IC0tbGliZGlyIHwgLS1saWJkaSB8IC0tbGli ZCkKKy0gICAgYWNfcHJldj1saWJkaXIgOzsKKy0gIC1saWJkaXI9KiB8IC0tbGliZGlyPSogfCAt LWxpYmRpPSogfCAtLWxpYmQ9KikKKy0gICAgbGliZGlyPSRhY19vcHRhcmcgOzsKKy0KKy0gIC1s aWJleGVjZGlyIHwgLS1saWJleGVjZGlyIHwgLS1saWJleGVjZGkgfCAtLWxpYmV4ZWNkIHwgLS1s aWJleGVjIFwKKy0gIHwgLS1saWJleGUgfCAtLWxpYmV4IHwgLS1saWJlKQorLSAgICBhY19wcmV2 PWxpYmV4ZWNkaXIgOzsKKy0gIC1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNkaXI9KiB8IC0tbGli ZXhlY2RpPSogfCAtLWxpYmV4ZWNkPSogfCAtLWxpYmV4ZWM9KiBcCistICB8IC0tbGliZXhlPSog fCAtLWxpYmV4PSogfCAtLWxpYmU9KikKKy0gICAgbGliZXhlY2Rpcj0kYWNfb3B0YXJnIDs7Cist CistICAtbG9jYWxlZGlyIHwgLS1sb2NhbGVkaXIgfCAtLWxvY2FsZWRpIHwgLS1sb2NhbGVkIHwg LS1sb2NhbGUpCistICAgIGFjX3ByZXY9bG9jYWxlZGlyIDs7CistICAtbG9jYWxlZGlyPSogfCAt LWxvY2FsZWRpcj0qIHwgLS1sb2NhbGVkaT0qIHwgLS1sb2NhbGVkPSogfCAtLWxvY2FsZT0qKQor LSAgICBsb2NhbGVkaXI9JGFjX29wdGFyZyA7OworLQorLSAgLWxvY2Fsc3RhdGVkaXIgfCAtLWxv Y2Fsc3RhdGVkaXIgfCAtLWxvY2Fsc3RhdGVkaSB8IC0tbG9jYWxzdGF0ZWQgXAorLSAgfCAtLWxv Y2Fsc3RhdGUgfCAtLWxvY2Fsc3RhdCB8IC0tbG9jYWxzdGEgfCAtLWxvY2Fsc3QgfCAtLWxvY2Fs cykKKy0gICAgYWNfcHJldj1sb2NhbHN0YXRlZGlyIDs7CistICAtbG9jYWxzdGF0ZWRpcj0qIHwg LS1sb2NhbHN0YXRlZGlyPSogfCAtLWxvY2Fsc3RhdGVkaT0qIHwgLS1sb2NhbHN0YXRlZD0qIFwK Ky0gIHwgLS1sb2NhbHN0YXRlPSogfCAtLWxvY2Fsc3RhdD0qIHwgLS1sb2NhbHN0YT0qIHwgLS1s b2NhbHN0PSogfCAtLWxvY2Fscz0qKQorLSAgICBsb2NhbHN0YXRlZGlyPSRhY19vcHRhcmcgOzsK Ky0KKy0gIC1tYW5kaXIgfCAtLW1hbmRpciB8IC0tbWFuZGkgfCAtLW1hbmQgfCAtLW1hbiB8IC0t bWEgfCAtLW0pCistICAgIGFjX3ByZXY9bWFuZGlyIDs7CistICAtbWFuZGlyPSogfCAtLW1hbmRp cj0qIHwgLS1tYW5kaT0qIHwgLS1tYW5kPSogfCAtLW1hbj0qIHwgLS1tYT0qIHwgLS1tPSopCist ICAgIG1hbmRpcj0kYWNfb3B0YXJnIDs7CistCistICAtbmZwIHwgLS1uZnAgfCAtLW5mKQorLSAg ICAjIE9ic29sZXRlOyB1c2UgLS13aXRob3V0LWZwLgorLSAgICB3aXRoX2ZwPW5vIDs7CistCist ICAtbm8tY3JlYXRlIHwgLS1uby1jcmVhdGUgfCAtLW5vLWNyZWF0IHwgLS1uby1jcmVhIHwgLS1u by1jcmUgXAorLSAgfCAtLW5vLWNyIHwgLS1uby1jIHwgLW4pCistICAgIG5vX2NyZWF0ZT15ZXMg OzsKKy0KKy0gIC1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvbiB8IC0tbm8tcmVjdXJzaW8g fCAtLW5vLXJlY3Vyc2kgXAorLSAgfCAtLW5vLXJlY3VycyB8IC0tbm8tcmVjdXIgfCAtLW5vLXJl Y3UgfCAtLW5vLXJlYyB8IC0tbm8tcmUgfCAtLW5vLXIpCistICAgIG5vX3JlY3Vyc2lvbj15ZXMg OzsKKy0KKy0gIC1vbGRpbmNsdWRlZGlyIHwgLS1vbGRpbmNsdWRlZGlyIHwgLS1vbGRpbmNsdWRl ZGkgfCAtLW9sZGluY2x1ZGVkIFwKKy0gIHwgLS1vbGRpbmNsdWRlIHwgLS1vbGRpbmNsdWQgfCAt LW9sZGluY2x1IHwgLS1vbGRpbmNsIHwgLS1vbGRpbmMgXAorLSAgfCAtLW9sZGluIHwgLS1vbGRp IHwgLS1vbGQgfCAtLW9sIHwgLS1vKQorLSAgICBhY19wcmV2PW9sZGluY2x1ZGVkaXIgOzsKKy0g IC1vbGRpbmNsdWRlZGlyPSogfCAtLW9sZGluY2x1ZGVkaXI9KiB8IC0tb2xkaW5jbHVkZWRpPSog fCAtLW9sZGluY2x1ZGVkPSogXAorLSAgfCAtLW9sZGluY2x1ZGU9KiB8IC0tb2xkaW5jbHVkPSog fCAtLW9sZGluY2x1PSogfCAtLW9sZGluY2w9KiB8IC0tb2xkaW5jPSogXAorLSAgfCAtLW9sZGlu PSogfCAtLW9sZGk9KiB8IC0tb2xkPSogfCAtLW9sPSogfCAtLW89KikKKy0gICAgb2xkaW5jbHVk ZWRpcj0kYWNfb3B0YXJnIDs7CistCistICAtcHJlZml4IHwgLS1wcmVmaXggfCAtLXByZWZpIHwg LS1wcmVmIHwgLS1wcmUgfCAtLXByIHwgLS1wKQorLSAgICBhY19wcmV2PXByZWZpeCA7OworLSAg LXByZWZpeD0qIHwgLS1wcmVmaXg9KiB8IC0tcHJlZmk9KiB8IC0tcHJlZj0qIHwgLS1wcmU9KiB8 IC0tcHI9KiB8IC0tcD0qKQorLSAgICBwcmVmaXg9JGFjX29wdGFyZyA7OworLQorLSAgLXByb2dy YW0tcHJlZml4IHwgLS1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaSB8IC0tcHJvZ3Jh bS1wcmVmIFwKKy0gIHwgLS1wcm9ncmFtLXByZSB8IC0tcHJvZ3JhbS1wciB8IC0tcHJvZ3JhbS1w KQorLSAgICBhY19wcmV2PXByb2dyYW1fcHJlZml4IDs7CistICAtcHJvZ3JhbS1wcmVmaXg9KiB8 IC0tcHJvZ3JhbS1wcmVmaXg9KiB8IC0tcHJvZ3JhbS1wcmVmaT0qIFwKKy0gIHwgLS1wcm9ncmFt LXByZWY9KiB8IC0tcHJvZ3JhbS1wcmU9KiB8IC0tcHJvZ3JhbS1wcj0qIHwgLS1wcm9ncmFtLXA9 KikKKy0gICAgcHJvZ3JhbV9wcmVmaXg9JGFjX29wdGFyZyA7OworLQorLSAgLXByb2dyYW0tc3Vm Zml4IHwgLS1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1zdWZmaSB8IC0tcHJvZ3JhbS1zdWZm IFwKKy0gIHwgLS1wcm9ncmFtLXN1ZiB8IC0tcHJvZ3JhbS1zdSB8IC0tcHJvZ3JhbS1zKQorLSAg ICBhY19wcmV2PXByb2dyYW1fc3VmZml4IDs7CistICAtcHJvZ3JhbS1zdWZmaXg9KiB8IC0tcHJv Z3JhbS1zdWZmaXg9KiB8IC0tcHJvZ3JhbS1zdWZmaT0qIFwKKy0gIHwgLS1wcm9ncmFtLXN1ZmY9 KiB8IC0tcHJvZ3JhbS1zdWY9KiB8IC0tcHJvZ3JhbS1zdT0qIHwgLS1wcm9ncmFtLXM9KikKKy0g ICAgcHJvZ3JhbV9zdWZmaXg9JGFjX29wdGFyZyA7OworLQorLSAgLXByb2dyYW0tdHJhbnNmb3Jt LW5hbWUgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbWUgXAorLSAgfCAtLXByb2dyYW0tdHJhbnNm b3JtLW5hbSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmEgXAorLSAgfCAtLXByb2dyYW0tdHJhbnNm b3JtLW4gfCAtLXByb2dyYW0tdHJhbnNmb3JtLSBcCistICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0g fCAtLXByb2dyYW0tdHJhbnNmb3IgXAorLSAgfCAtLXByb2dyYW0tdHJhbnNmbyB8IC0tcHJvZ3Jh bS10cmFuc2YgXAorLSAgfCAtLXByb2dyYW0tdHJhbnMgfCAtLXByb2dyYW0tdHJhbiBcCistICB8 IC0tcHJvZ3ItdHJhIHwgLS1wcm9ncmFtLXRyIHwgLS1wcm9ncmFtLXQpCistICAgIGFjX3ByZXY9 cHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSA7OworLSAgLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9KiB8 IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0qIFwKKy0gIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1u YW09KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmE9KiBcCistICB8IC0tcHJvZ3JhbS10cmFuc2Zv cm0tbj0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS09KiBcCistICB8IC0tcHJvZ3JhbS10cmFuc2Zv cm09KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcj0qIFwKKy0gIHwgLS1wcm9ncmFtLXRyYW5zZm89KiB8 IC0tcHJvZ3JhbS10cmFuc2Y9KiBcCistICB8IC0tcHJvZ3JhbS10cmFucz0qIHwgLS1wcm9ncmFt LXRyYW49KiBcCistICB8IC0tcHJvZ3ItdHJhPSogfCAtLXByb2dyYW0tdHI9KiB8IC0tcHJvZ3Jh bS10PSopCistICAgIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9JGFjX29wdGFyZyA7OworLQorLSAg LXBkZmRpciB8IC0tcGRmZGlyIHwgLS1wZGZkaSB8IC0tcGRmZCB8IC0tcGRmIHwgLS1wZCkKKy0g ICAgYWNfcHJldj1wZGZkaXIgOzsKKy0gIC1wZGZkaXI9KiB8IC0tcGRmZGlyPSogfCAtLXBkZmRp PSogfCAtLXBkZmQ9KiB8IC0tcGRmPSogfCAtLXBkPSopCistICAgIHBkZmRpcj0kYWNfb3B0YXJn IDs7CistCistICAtcHNkaXIgfCAtLXBzZGlyIHwgLS1wc2RpIHwgLS1wc2QgfCAtLXBzKQorLSAg ICBhY19wcmV2PXBzZGlyIDs7CistICAtcHNkaXI9KiB8IC0tcHNkaXI9KiB8IC0tcHNkaT0qIHwg LS1wc2Q9KiB8IC0tcHM9KikKKy0gICAgcHNkaXI9JGFjX29wdGFyZyA7OworLQorLSAgLXEgfCAt cXVpZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwKKy0gIHwgLXNp bGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsKQorLSAgICBzaWxlbnQ9 eWVzIDs7CistCistICAtcnVuc3RhdGVkaXIgfCAtLXJ1bnN0YXRlZGlyIHwgLS1ydW5zdGF0ZWRp IHwgLS1ydW5zdGF0ZWQgXAorLSAgfCAtLXJ1bnN0YXRlIHwgLS1ydW5zdGF0IHwgLS1ydW5zdGEg fCAtLXJ1bnN0IHwgLS1ydW5zIFwKKy0gIHwgLS1ydW4gfCAtLXJ1IHwgLS1yKQorLSAgICBhY19w cmV2PXJ1bnN0YXRlZGlyIDs7CistICAtcnVuc3RhdGVkaXI9KiB8IC0tcnVuc3RhdGVkaXI9KiB8 IC0tcnVuc3RhdGVkaT0qIHwgLS1ydW5zdGF0ZWQ9KiBcCistICB8IC0tcnVuc3RhdGU9KiB8IC0t cnVuc3RhdD0qIHwgLS1ydW5zdGE9KiB8IC0tcnVuc3Q9KiB8IC0tcnVucz0qIFwKKy0gIHwgLS1y dW49KiB8IC0tcnU9KiB8IC0tcj0qKQorLSAgICBydW5zdGF0ZWRpcj0kYWNfb3B0YXJnIDs7Cist CistICAtc2JpbmRpciB8IC0tc2JpbmRpciB8IC0tc2JpbmRpIHwgLS1zYmluZCB8IC0tc2JpbiB8 IC0tc2JpIHwgLS1zYikKKy0gICAgYWNfcHJldj1zYmluZGlyIDs7CistICAtc2JpbmRpcj0qIHwg LS1zYmluZGlyPSogfCAtLXNiaW5kaT0qIHwgLS1zYmluZD0qIHwgLS1zYmluPSogXAorLSAgfCAt LXNiaT0qIHwgLS1zYj0qKQorLSAgICBzYmluZGlyPSRhY19vcHRhcmcgOzsKKy0KKy0gIC1zaGFy ZWRzdGF0ZWRpciB8IC0tc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGkgXAorLSAgfCAt LXNoYXJlZHN0YXRlZCB8IC0tc2hhcmVkc3RhdGUgfCAtLXNoYXJlZHN0YXQgfCAtLXNoYXJlZHN0 YSBcCistICB8IC0tc2hhcmVkc3QgfCAtLXNoYXJlZHMgfCAtLXNoYXJlZCB8IC0tc2hhcmUgfCAt LXNoYXIgXAorLSAgfCAtLXNoYSB8IC0tc2gpCistICAgIGFjX3ByZXY9c2hhcmVkc3RhdGVkaXIg OzsKKy0gIC1zaGFyZWRzdGF0ZWRpcj0qIHwgLS1zaGFyZWRzdGF0ZWRpcj0qIHwgLS1zaGFyZWRz dGF0ZWRpPSogXAorLSAgfCAtLXNoYXJlZHN0YXRlZD0qIHwgLS1zaGFyZWRzdGF0ZT0qIHwgLS1z aGFyZWRzdGF0PSogfCAtLXNoYXJlZHN0YT0qIFwKKy0gIHwgLS1zaGFyZWRzdD0qIHwgLS1zaGFy ZWRzPSogfCAtLXNoYXJlZD0qIHwgLS1zaGFyZT0qIHwgLS1zaGFyPSogXAorLSAgfCAtLXNoYT0q IHwgLS1zaD0qKQorLSAgICBzaGFyZWRzdGF0ZWRpcj0kYWNfb3B0YXJnIDs7CistCistICAtc2l0 ZSB8IC0tc2l0ZSB8IC0tc2l0KQorLSAgICBhY19wcmV2PXNpdGUgOzsKKy0gIC1zaXRlPSogfCAt LXNpdGU9KiB8IC0tc2l0PSopCistICAgIHNpdGU9JGFjX29wdGFyZyA7OworLQorLSAgLXNyY2Rp ciB8IC0tc3JjZGlyIHwgLS1zcmNkaSB8IC0tc3JjZCB8IC0tc3JjIHwgLS1zcikKKy0gICAgYWNf cHJldj1zcmNkaXIgOzsKKy0gIC1zcmNkaXI9KiB8IC0tc3JjZGlyPSogfCAtLXNyY2RpPSogfCAt LXNyY2Q9KiB8IC0tc3JjPSogfCAtLXNyPSopCistICAgIHNyY2Rpcj0kYWNfb3B0YXJnIDs7Cist CistICAtc3lzY29uZmRpciB8IC0tc3lzY29uZmRpciB8IC0tc3lzY29uZmRpIHwgLS1zeXNjb25m ZCB8IC0tc3lzY29uZiBcCistICB8IC0tc3lzY29uIHwgLS1zeXNjbyB8IC0tc3lzYyB8IC0tc3lz IHwgLS1zeSkKKy0gICAgYWNfcHJldj1zeXNjb25mZGlyIDs7CistICAtc3lzY29uZmRpcj0qIHwg LS1zeXNjb25mZGlyPSogfCAtLXN5c2NvbmZkaT0qIHwgLS1zeXNjb25mZD0qIHwgLS1zeXNjb25m PSogXAorLSAgfCAtLXN5c2Nvbj0qIHwgLS1zeXNjbz0qIHwgLS1zeXNjPSogfCAtLXN5cz0qIHwg LS1zeT0qKQorLSAgICBzeXNjb25mZGlyPSRhY19vcHRhcmcgOzsKKy0KKy0gIC10YXJnZXQgfCAt LXRhcmdldCB8IC0tdGFyZ2UgfCAtLXRhcmcgfCAtLXRhciB8IC0tdGEgfCAtLXQpCistICAgIGFj X3ByZXY9dGFyZ2V0X2FsaWFzIDs7CistICAtdGFyZ2V0PSogfCAtLXRhcmdldD0qIHwgLS10YXJn ZT0qIHwgLS10YXJnPSogfCAtLXRhcj0qIHwgLS10YT0qIHwgLS10PSopCistICAgIHRhcmdldF9h bGlhcz0kYWNfb3B0YXJnIDs7CistCistICAtdiB8IC12ZXJib3NlIHwgLS12ZXJib3NlIHwgLS12 ZXJib3MgfCAtLXZlcmJvIHwgLS12ZXJiKQorLSAgICB2ZXJib3NlPXllcyA7OworLQorLSAgLXZl cnNpb24gfCAtLXZlcnNpb24gfCAtLXZlcnNpbyB8IC0tdmVyc2kgfCAtLXZlcnMgfCAtVikKKy0g ICAgYWNfaW5pdF92ZXJzaW9uPTogOzsKKy0KKy0gIC13aXRoLSogfCAtLXdpdGgtKikKKy0gICAg YWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGgtXChbXj1dKlwpJ2AKKy0g ICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVz LgorLSAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2FsbnVtXSIgPi9k ZXYvbnVsbCAmJgorLSAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHBhY2thZ2UgbmFtZTog JyRhY191c2Vyb3B0JyIKKy0gICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CistICAgIGFj X3VzZXJvcHQ9YHByaW50ZiAiJXNcbiIgIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cn YAorLSAgICBjYXNlICRhY191c2VyX29wdHMgaW4KKy0gICAgICAqIgorLSJ3aXRoXyRhY191c2Vy b3B0IgorLSIqKSA7OworLSAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNv Z25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0td2l0aC0kYWNfdXNlcm9wdF9vcmlnIgor LQkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsKKy0gICAgZXNhYworLSAgICBldmFsIHdpdGhf JGFjX3VzZXJvcHQ9XCRhY19vcHRhcmcgOzsKKy0KKy0gIC13aXRob3V0LSogfCAtLXdpdGhvdXQt KikKKy0gICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGhvdXQtXCgu KlwpJ2AKKy0gICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlh YmxlIG5hbWVzLgorLSAgICBleHByICJ4JGFjX3VzZXJvcHQiIDogIi4qW14tKy5fJGFzX2NyX2Fs bnVtXSIgPi9kZXYvbnVsbCAmJgorLSAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHBhY2th Z2UgbmFtZTogJyRhY191c2Vyb3B0JyIKKy0gICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0 CistICAgIGFjX3VzZXJvcHQ9YHByaW50ZiAiJXNcbiIgIiRhY191c2Vyb3B0IiB8IHNlZCAncy9b LSsuXS9fL2cnYAorLSAgICBjYXNlICRhY191c2VyX29wdHMgaW4KKy0gICAgICAqIgorLSJ3aXRo XyRhY191c2Vyb3B0IgorLSIqKSA7OworLSAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIk YWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0td2l0aG91dC0kYWNfdXNl cm9wdF9vcmlnIgorLQkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsKKy0gICAgZXNhYworLSAg ICBldmFsIHdpdGhfJGFjX3VzZXJvcHQ9bm8gOzsKKy0KKy0gIC0teCkKKy0gICAgIyBPYnNvbGV0 ZTsgdXNlIC0td2l0aC14LgorLSAgICB3aXRoX3g9eWVzIDs7CistCistICAteC1pbmNsdWRlcyB8 IC0teC1pbmNsdWRlcyB8IC0teC1pbmNsdWRlIHwgLS14LWluY2x1ZCB8IC0teC1pbmNsdSBcCist ICB8IC0teC1pbmNsIHwgLS14LWluYyB8IC0teC1pbiB8IC0teC1pKQorLSAgICBhY19wcmV2PXhf aW5jbHVkZXMgOzsKKy0gIC14LWluY2x1ZGVzPSogfCAtLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNs dWRlPSogfCAtLXgtaW5jbHVkPSogfCAtLXgtaW5jbHU9KiBcCistICB8IC0teC1pbmNsPSogfCAt LXgtaW5jPSogfCAtLXgtaW49KiB8IC0teC1pPSopCistICAgIHhfaW5jbHVkZXM9JGFjX29wdGFy ZyA7OworLQorLSAgLXgtbGlicmFyaWVzIHwgLS14LWxpYnJhcmllcyB8IC0teC1saWJyYXJpZSB8 IC0teC1saWJyYXJpIFwKKy0gIHwgLS14LWxpYnJhciB8IC0teC1saWJyYSB8IC0teC1saWJyIHwg LS14LWxpYiB8IC0teC1saSB8IC0teC1sKQorLSAgICBhY19wcmV2PXhfbGlicmFyaWVzIDs7Cist ICAteC1saWJyYXJpZXM9KiB8IC0teC1saWJyYXJpZXM9KiB8IC0teC1saWJyYXJpZT0qIHwgLS14 LWxpYnJhcmk9KiBcCistICB8IC0teC1saWJyYXI9KiB8IC0teC1saWJyYT0qIHwgLS14LWxpYnI9 KiB8IC0teC1saWI9KiB8IC0teC1saT0qIHwgLS14LWw9KikKKy0gICAgeF9saWJyYXJpZXM9JGFj X29wdGFyZyA7OworLQorLSAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9u OiAnJGFjX29wdGlvbicKKy1UcnkgJyQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24iCist ICAgIDs7CistCistICAqPSopCistICAgIGFjX2VudnZhcj1gZXhwciAieCRhY19vcHRpb24iIDog J3hcKFtePV0qXCk9J2AKKy0gICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNo ZWxsIHZhcmlhYmxlIG5hbWVzLgorLSAgICBjYXNlICRhY19lbnZ2YXIgaW4gIygKKy0gICAgICAn JyB8IFswLTldKiB8ICpbIV8kYXNfY3JfYWxudW1dKiApCistICAgICAgYXNfZm5fZXJyb3IgJD8g ImludmFsaWQgdmFyaWFibGUgbmFtZTogJyRhY19lbnZ2YXInIiA7OworLSAgICBlc2FjCistICAg IGV2YWwgJGFjX2VudnZhcj1cJGFjX29wdGFyZworLSAgICBleHBvcnQgJGFjX2VudnZhciA7Owor LQorLSAgKikKKy0gICAgIyBGSVhNRTogc2hvdWxkIGJlIHJlbW92ZWQgaW4gYXV0b2NvbmYgMy4w LgorLSAgICBwcmludGYgIiVzXG4iICIkYXNfbWU6IFdBUk5JTkc6IHlvdSBzaG91bGQgdXNlIC0t YnVpbGQsIC0taG9zdCwgLS10YXJnZXQiID4mMgorLSAgICBleHByICJ4JGFjX29wdGlvbiIgOiAi LipbXi0uXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKKy0gICAgICBwcmludGYgIiVzXG4i ICIkYXNfbWU6IFdBUk5JTkc6IGludmFsaWQgaG9zdCB0eXBlOiAkYWNfb3B0aW9uIiA+JjIKKy0g ICAgOiAiJHtidWlsZF9hbGlhcz0kYWNfb3B0aW9ufSAke2hvc3RfYWxpYXM9JGFjX29wdGlvbn0g JHt0YXJnZXRfYWxpYXM9JGFjX29wdGlvbn0iCistICAgIDs7CistCistICBlc2FjCistZG9uZQor LQorLWlmIHRlc3QgLW4gIiRhY19wcmV2IjsgdGhlbgorLSAgYWNfb3B0aW9uPS0tYGVjaG8gJGFj X3ByZXYgfCBzZWQgJ3MvXy8tL2cnYAorLSAgYXNfZm5fZXJyb3IgJD8gIm1pc3NpbmcgYXJndW1l bnQgdG8gJGFjX29wdGlvbiIKKy1maQorLQorLWlmIHRlc3QgLW4gIiRhY191bnJlY29nbml6ZWRf b3B0cyI7IHRoZW4KKy0gIGNhc2UgJGVuYWJsZV9vcHRpb25fY2hlY2tpbmcgaW4KKy0gICAgbm8p IDs7CistICAgIGZhdGFsKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbnM6ICRh Y191bnJlY29nbml6ZWRfb3B0cyIgOzsKKy0gICAgKikgICAgIHByaW50ZiAiJXNcbiIgIiRhc19t ZTogV0FSTklORzogdW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIg PiYyIDs7CistICBlc2FjCistZmkKKy0KKy0jIENoZWNrIGFsbCBkaXJlY3RvcnkgYXJndW1lbnRz IGZvciBjb25zaXN0ZW5jeS4KKy1mb3IgYWNfdmFyIGluCWV4ZWNfcHJlZml4IHByZWZpeCBiaW5k aXIgc2JpbmRpciBsaWJleGVjZGlyIGRhdGFyb290ZGlyIFwKKy0JCWRhdGFkaXIgc3lzY29uZmRp ciBzaGFyZWRzdGF0ZWRpciBsb2NhbHN0YXRlZGlyIGluY2x1ZGVkaXIgXAorLQkJb2xkaW5jbHVk ZWRpciBkb2NkaXIgaW5mb2RpciBodG1sZGlyIGR2aWRpciBwZGZkaXIgcHNkaXIgXAorLQkJbGli ZGlyIGxvY2FsZWRpciBtYW5kaXIgcnVuc3RhdGVkaXIKKy1kbworLSAgZXZhbCBhY192YWw9XCQk YWNfdmFyCistICAjIFJlbW92ZSB0cmFpbGluZyBzbGFzaGVzLgorLSAgY2FzZSAkYWNfdmFsIGlu CistICAgICovICkKKy0gICAgICBhY192YWw9YGV4cHIgIlgkYWNfdmFsIiA6ICdYXCguKlteL11c KScgXHwgIlgkYWNfdmFsIiA6ICdYXCguKlwpJ2AKKy0gICAgICBldmFsICRhY192YXI9XCRhY192 YWw7OworLSAgZXNhYworLSAgIyBCZSBzdXJlIHRvIGhhdmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5h bWVzLgorLSAgY2FzZSAkYWNfdmFsIGluCistICAgIFtcXC8kXSogfCA/OltcXC9dKiApICBjb250 aW51ZTs7CistICAgIE5PTkUgfCAnJyApIGNhc2UgJGFjX3ZhciBpbiAqcHJlZml4ICkgY29udGlu dWU7OyBlc2FjOzsKKy0gIGVzYWMKKy0gIGFzX2ZuX2Vycm9yICQ/ICJleHBlY3RlZCBhbiBhYnNv bHV0ZSBkaXJlY3RvcnkgbmFtZSBmb3IgLS0kYWNfdmFyOiAkYWNfdmFsIgorLWRvbmUKKy0KKy0j IFRoZXJlIG1pZ2h0IGJlIHBlb3BsZSB3aG8gZGVwZW5kIG9uIHRoZSBvbGQgYnJva2VuIGJlaGF2 aW9yOiAnJGhvc3QnCistIyB1c2VkIHRvIGhvbGQgdGhlIGFyZ3VtZW50IG9mIC0taG9zdCBldGMu CistIyBGSVhNRTogVG8gcmVtb3ZlIHNvbWUgZGF5LgorLWJ1aWxkPSRidWlsZF9hbGlhcworLWhv c3Q9JGhvc3RfYWxpYXMKKy10YXJnZXQ9JHRhcmdldF9hbGlhcworLQorLSMgRklYTUU6IFRvIHJl bW92ZSBzb21lIGRheS4KKy1pZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiICE9IHg7IHRoZW4KKy0gIGlm IHRlc3QgIngkYnVpbGRfYWxpYXMiID0geDsgdGhlbgorLSAgICBjcm9zc19jb21waWxpbmc9bWF5 YmUKKy0gIGVsaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgIT0gIngkaG9zdF9hbGlhcyI7IHRoZW4K Ky0gICAgY3Jvc3NfY29tcGlsaW5nPXllcworLSAgZmkKKy1maQorLQorLWFjX3Rvb2xfcHJlZml4 PQorLXRlc3QgLW4gIiRob3N0X2FsaWFzIiAmJiBhY190b29sX3ByZWZpeD0kaG9zdF9hbGlhcy0K Ky0KKy10ZXN0ICIkc2lsZW50IiA9IHllcyAmJiBleGVjIDY+L2Rldi9udWxsCistCistCistYWNf cHdkPWBwd2RgICYmIHRlc3QgLW4gIiRhY19wd2QiICYmCistYWNfbHNfZGk9YGxzIC1kaSAuYCAm JgorLWFjX3B3ZF9sc19kaT1gY2QgIiRhY19wd2QiICYmIGxzIC1kaSAuYCB8fAorLSAgYXNfZm5f ZXJyb3IgJD8gIndvcmtpbmcgZGlyZWN0b3J5IGNhbm5vdCBiZSBkZXRlcm1pbmVkIgorLXRlc3Qg IlgkYWNfbHNfZGkiID0gIlgkYWNfcHdkX2xzX2RpIiB8fAorLSAgYXNfZm5fZXJyb3IgJD8gInB3 ZCBkb2VzIG5vdCByZXBvcnQgbmFtZSBvZiB3b3JraW5nIGRpcmVjdG9yeSIKKy0KKy0KKy0jIEZp bmQgdGhlIHNvdXJjZSBmaWxlcywgaWYgbG9jYXRpb24gd2FzIG5vdCBzcGVjaWZpZWQuCistaWYg dGVzdCAteiAiJHNyY2RpciI7IHRoZW4KKy0gIGFjX3NyY2Rpcl9kZWZhdWx0ZWQ9eWVzCistICAj IFRyeSB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhpcyBzY3JpcHQsIHRoZW4gdGhlIHBhcmVu dCBkaXJlY3RvcnkuCistICBhY19jb25mZGlyPWAkYXNfZGlybmFtZSAtLSAiJGFzX215c2VsZiIg fHwKKy0kYXNfZXhwciBYIiRhc19teXNlbGYiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyok JyBcfCBcCistCSBYIiRhc19teXNlbGYiIDogJ1hcKC8vXClbXi9dJyBcfCBcCistCSBYIiRhc19t eXNlbGYiIDogJ1hcKC8vXCkkJyBcfCBcCistCSBYIiRhc19teXNlbGYiIDogJ1hcKC9cKScgXHwg LiAyPi9kZXYvbnVsbCB8fAorLXByaW50ZiAiJXNcbiIgWCIkYXNfbXlzZWxmIiB8CistICAgIHNl ZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97CistCSAgICBzLy9cMS8KKy0JICAg IHEKKy0JICB9CistCSAgL15YXChcL1wvXClbXi9dLioveworLQkgICAgcy8vXDEvCistCSAgICBx CistCSAgfQorLQkgIC9eWFwoXC9cL1wpJC97CistCSAgICBzLy9cMS8KKy0JICAgIHEKKy0JICB9 CistCSAgL15YXChcL1wpLioveworLQkgICAgcy8vXDEvCistCSAgICBxCistCSAgfQorLQkgIHMv LiovLi87IHEnYAorLSAgc3JjZGlyPSRhY19jb25mZGlyCistICBpZiB0ZXN0ICEgLXIgIiRzcmNk aXIvJGFjX3VuaXF1ZV9maWxlIjsgdGhlbgorLSAgICBzcmNkaXI9Li4KKy0gIGZpCistZWxzZQor LSAgYWNfc3JjZGlyX2RlZmF1bHRlZD1ubworLWZpCistaWYgdGVzdCAhIC1yICIkc3JjZGlyLyRh Y191bmlxdWVfZmlsZSI7IHRoZW4KKy0gIHRlc3QgIiRhY19zcmNkaXJfZGVmYXVsdGVkIiA9IHll cyAmJiBzcmNkaXI9IiRhY19jb25mZGlyIG9yIC4uIgorLSAgYXNfZm5fZXJyb3IgJD8gImNhbm5v dCBmaW5kIHNvdXJjZXMgKCRhY191bmlxdWVfZmlsZSkgaW4gJHNyY2RpciIKKy1maQorLWFjX21z Zz0ic291cmNlcyBhcmUgaW4gJHNyY2RpciwgYnV0ICdjZCAkc3JjZGlyJyBkb2VzIG5vdCB3b3Jr IgorLWFjX2Fic19jb25mZGlyPWAoCistCWNkICIkc3JjZGlyIiAmJiB0ZXN0IC1yICIuLyRhY191 bmlxdWVfZmlsZSIgfHwgYXNfZm5fZXJyb3IgJD8gIiRhY19tc2ciCistCXB3ZClgCistIyBXaGVu IGJ1aWxkaW5nIGluIHBsYWNlLCBzZXQgc3JjZGlyPS4KKy1pZiB0ZXN0ICIkYWNfYWJzX2NvbmZk aXIiID0gIiRhY19wd2QiOyB0aGVuCistICBzcmNkaXI9LgorLWZpCistIyBSZW1vdmUgdW5uZWNl c3NhcnkgdHJhaWxpbmcgc2xhc2hlcyBmcm9tIHNyY2Rpci4KKy0jIERvdWJsZSBzbGFzaGVzIGlu IGZpbGUgbmFtZXMgaW4gb2JqZWN0IGZpbGUgZGVidWdnaW5nIGluZm8KKy0jIG1lc3MgdXAgTS14 IGdkYiBpbiBFbWFjcy4KKy1jYXNlICRzcmNkaXIgaW4KKy0qLykgc3JjZGlyPWBleHByICJYJHNy Y2RpciIgOiAnWFwoLipbXi9dXCknIFx8ICJYJHNyY2RpciIgOiAnWFwoLipcKSdgOzsKKy1lc2Fj CistZm9yIGFjX3ZhciBpbiAkYWNfcHJlY2lvdXNfdmFyczsgZG8KKy0gIGV2YWwgYWNfZW52XyR7 YWNfdmFyfV9zZXQ9XCR7JHthY192YXJ9K3NldH0KKy0gIGV2YWwgYWNfZW52XyR7YWNfdmFyfV92 YWx1ZT1cJCR7YWNfdmFyfQorLSAgZXZhbCBhY19jdl9lbnZfJHthY192YXJ9X3NldD1cJHske2Fj X3Zhcn0rc2V0fQorLSAgZXZhbCBhY19jdl9lbnZfJHthY192YXJ9X3ZhbHVlPVwkJHthY192YXJ9 CistZG9uZQorLQorLSMKKy0jIFJlcG9ydCB0aGUgLS1oZWxwIG1lc3NhZ2UuCistIworLWlmIHRl c3QgIiRhY19pbml0X2hlbHAiID0gImxvbmciOyB0aGVuCistICAjIE9taXQgc29tZSBpbnRlcm5h bCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KKy0g ICMgVGhpcyBtZXNzYWdlIGlzIHRvbyBsb25nIHRvIGJlIGEgc3RyaW5nIGluIHRoZSBBL1VYIDMu MSBzaC4KKy0gIGNhdCA8PF9BQ0VPRgorLSdjb25maWd1cmUnIGNvbmZpZ3VyZXMgYmFzaCA1LjMt cmMyIHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KKy0KKy1Vc2FnZTogJDAgW09Q VElPTl0uLi4gW1ZBUj1WQUxVRV0uLi4KKy0KKy1UbyBhc3NpZ24gZW52aXJvbm1lbnQgdmFyaWFi bGVzIChlLmcuLCBDQywgQ0ZMQUdTLi4uKSwgc3BlY2lmeSB0aGVtIGFzCistVkFSPVZBTFVFLiAg U2VlIGJlbG93IGZvciBkZXNjcmlwdGlvbnMgb2Ygc29tZSBvZiB0aGUgdXNlZnVsIHZhcmlhYmxl cy4KKy0KKy1EZWZhdWx0cyBmb3IgdGhlIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBicmFja2V0 cy4KKy0KKy1Db25maWd1cmF0aW9uOgorLSAgLWgsIC0taGVscCAgICAgICAgICAgICAgZGlzcGxh eSB0aGlzIGhlbHAgYW5kIGV4aXQKKy0gICAgICAtLWhlbHA9c2hvcnQgICAgICAgIGRpc3BsYXkg b3B0aW9ucyBzcGVjaWZpYyB0byB0aGlzIHBhY2thZ2UKKy0gICAgICAtLWhlbHA9cmVjdXJzaXZl ICAgIGRpc3BsYXkgdGhlIHNob3J0IGhlbHAgb2YgYWxsIHRoZSBpbmNsdWRlZCBwYWNrYWdlcwor LSAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgZGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFu ZCBleGl0CistICAtcSwgLS1xdWlldCwgLS1zaWxlbnQgICBkbyBub3QgcHJpbnQgJ2NoZWNraW5n IC4uLicgbWVzc2FnZXMKKy0gICAgICAtLWNhY2hlLWZpbGU9RklMRSAgIGNhY2hlIHRlc3QgcmVz dWx0cyBpbiBGSUxFIFtkaXNhYmxlZF0KKy0gIC1DLCAtLWNvbmZpZy1jYWNoZSAgICAgIGFsaWFz IGZvciAnLS1jYWNoZS1maWxlPWNvbmZpZy5jYWNoZScKKy0gIC1uLCAtLW5vLWNyZWF0ZSAgICAg ICAgIGRvIG5vdCBjcmVhdGUgb3V0cHV0IGZpbGVzCistICAgICAgLS1zcmNkaXI9RElSICAgICAg ICBmaW5kIHRoZSBzb3VyY2VzIGluIERJUiBbY29uZmlndXJlIGRpciBvciAnLi4nXQorLQorLUlu c3RhbGxhdGlvbiBkaXJlY3RvcmllczoKKy0gIC0tcHJlZml4PVBSRUZJWCAgICAgICAgIGluc3Rh bGwgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGZpbGVzIGluIFBSRUZJWAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgWyRhY19kZWZhdWx0X3ByZWZpeF0KKy0gIC0tZXhlYy1wcmVmaXg9RVBS RUZJWCAgIGluc3RhbGwgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBmaWxlcyBpbiBFUFJFRklYCist ICAgICAgICAgICAgICAgICAgICAgICAgICBbUFJFRklYXQorLQorLUJ5IGRlZmF1bHQsICdtYWtl IGluc3RhbGwnIHdpbGwgaW5zdGFsbCBhbGwgdGhlIGZpbGVzIGluCistJyRhY19kZWZhdWx0X3By ZWZpeC9iaW4nLCAnJGFjX2RlZmF1bHRfcHJlZml4L2xpYicgZXRjLiAgWW91IGNhbiBzcGVjaWZ5 CistYW4gaW5zdGFsbGF0aW9uIHByZWZpeCBvdGhlciB0aGFuICckYWNfZGVmYXVsdF9wcmVmaXgn IHVzaW5nICctLXByZWZpeCcsCistZm9yIGluc3RhbmNlICctLXByZWZpeD1cJEhPTUUnLgorLQor LUZvciBiZXR0ZXIgY29udHJvbCwgdXNlIHRoZSBvcHRpb25zIGJlbG93LgorLQorLUZpbmUgdHVu aW5nIG9mIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3JpZXM6CistICAtLWJpbmRpcj1ESVIgICAg ICAgICAgICB1c2VyIGV4ZWN1dGFibGVzIFtFUFJFRklYL2Jpbl0KKy0gIC0tc2JpbmRpcj1ESVIg ICAgICAgICAgIHN5c3RlbSBhZG1pbiBleGVjdXRhYmxlcyBbRVBSRUZJWC9zYmluXQorLSAgLS1s aWJleGVjZGlyPURJUiAgICAgICAgcHJvZ3JhbSBleGVjdXRhYmxlcyBbRVBSRUZJWC9saWJleGVj XQorLSAgLS1zeXNjb25mZGlyPURJUiAgICAgICAgcmVhZC1vbmx5IHNpbmdsZS1tYWNoaW5lIGRh dGEgW1BSRUZJWC9ldGNdCistICAtLXNoYXJlZHN0YXRlZGlyPURJUiAgICBtb2RpZmlhYmxlIGFy Y2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVGSVgvY29tXQorLSAgLS1sb2NhbHN0YXRl ZGlyPURJUiAgICAgbW9kaWZpYWJsZSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvdmFyXQor LSAgLS1ydW5zdGF0ZWRpcj1ESVIgICAgICAgbW9kaWZpYWJsZSBwZXItcHJvY2VzcyBkYXRhIFtM T0NBTFNUQVRFRElSL3J1bl0KKy0gIC0tbGliZGlyPURJUiAgICAgICAgICAgIG9iamVjdCBjb2Rl IGxpYnJhcmllcyBbRVBSRUZJWC9saWJdCistICAtLWluY2x1ZGVkaXI9RElSICAgICAgICBDIGhl YWRlciBmaWxlcyBbUFJFRklYL2luY2x1ZGVdCistICAtLW9sZGluY2x1ZGVkaXI9RElSICAgICBD IGhlYWRlciBmaWxlcyBmb3Igbm9uLWdjYyBbL3Vzci9pbmNsdWRlXQorLSAgLS1kYXRhcm9vdGRp cj1ESVIgICAgICAgcmVhZC1vbmx5IGFyY2guLWluZGVwZW5kZW50IGRhdGEgcm9vdCBbUFJFRklY L3NoYXJlXQorLSAgLS1kYXRhZGlyPURJUiAgICAgICAgICAgcmVhZC1vbmx5IGFyY2hpdGVjdHVy ZS1pbmRlcGVuZGVudCBkYXRhIFtEQVRBUk9PVERJUl0KKy0gIC0taW5mb2Rpcj1ESVIgICAgICAg ICAgIGluZm8gZG9jdW1lbnRhdGlvbiBbREFUQVJPT1RESVIvaW5mb10KKy0gIC0tbG9jYWxlZGly PURJUiAgICAgICAgIGxvY2FsZS1kZXBlbmRlbnQgZGF0YSBbREFUQVJPT1RESVIvbG9jYWxlXQor LSAgLS1tYW5kaXI9RElSICAgICAgICAgICAgbWFuIGRvY3VtZW50YXRpb24gW0RBVEFST09URElS L21hbl0KKy0gIC0tZG9jZGlyPURJUiAgICAgICAgICAgIGRvY3VtZW50YXRpb24gcm9vdCBbREFU QVJPT1RESVIvZG9jL2Jhc2hdCistICAtLWh0bWxkaXI9RElSICAgICAgICAgICBodG1sIGRvY3Vt ZW50YXRpb24gW0RPQ0RJUl0KKy0gIC0tZHZpZGlyPURJUiAgICAgICAgICAgIGR2aSBkb2N1bWVu dGF0aW9uIFtET0NESVJdCistICAtLXBkZmRpcj1ESVIgICAgICAgICAgICBwZGYgZG9jdW1lbnRh dGlvbiBbRE9DRElSXQorLSAgLS1wc2Rpcj1ESVIgICAgICAgICAgICAgcHMgZG9jdW1lbnRhdGlv biBbRE9DRElSXQorLV9BQ0VPRgorLQorLSAgY2F0IDw8XF9BQ0VPRgorLQorLVN5c3RlbSB0eXBl czoKKy0gIC0tYnVpbGQ9QlVJTEQgICAgIGNvbmZpZ3VyZSBmb3IgYnVpbGRpbmcgb24gQlVJTEQg W2d1ZXNzZWRdCistICAtLWhvc3Q9SE9TVCAgICAgICBjcm9zcy1jb21waWxlIHRvIGJ1aWxkIHBy b2dyYW1zIHRvIHJ1biBvbiBIT1NUIFtCVUlMRF0KKy1fQUNFT0YKKy1maQorLQorLWlmIHRlc3Qg LW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCistICBjYXNlICRhY19pbml0X2hlbHAgaW4KKy0gICAg IHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBiYXNoIDUuMy1yYzI6 Ijs7CistICAgZXNhYworLSAgY2F0IDw8XF9BQ0VPRgorLQorLU9wdGlvbmFsIEZlYXR1cmVzOgor LSAgLS1kaXNhYmxlLW9wdGlvbi1jaGVja2luZyAgaWdub3JlIHVucmVjb2duaXplZCAtLWVuYWJs ZS8tLXdpdGggb3B0aW9ucworLSAgLS1kaXNhYmxlLUZFQVRVUkUgICAgICAgZG8gbm90IGluY2x1 ZGUgRkVBVFVSRSAoc2FtZSBhcyAtLWVuYWJsZS1GRUFUVVJFPW5vKQorLSAgLS1lbmFibGUtRkVB VFVSRVs9QVJHXSAgaW5jbHVkZSBGRUFUVVJFIFtBUkc9eWVzXQorLSAgLS1lbmFibGUtbWluaW1h bC1jb25maWcgYSBtaW5pbWFsIHNoLWxpa2UgY29uZmlndXJhdGlvbgorLSAgLS1lbmFibGUtYWxp YXMgICAgICAgICAgZW5hYmxlIHNoZWxsIGFsaWFzZXMKKy0gIC0tZW5hYmxlLWFsdC1hcnJheS1p bXBsZW1lbnRhdGlvbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlIGFuIGFsdGVy bmF0ZSBhcnJheSBpbXBsZW1lbnRhdGlvbiB0aGF0CistICAgICAgICAgICAgICAgICAgICAgICAg ICBvcHRpbWl6ZXMgc3BlZWQgYXQgdGhlIGNvc3Qgb2Ygc3BhY2UKKy0gIC0tZW5hYmxlLWFyaXRo LWZvci1jb21tYW5kCistICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGUgYXJpdGhtZXRp YyBmb3IgY29tbWFuZAorLSAgLS1lbmFibGUtYXJyYXktdmFyaWFibGVzCistICAgICAgICAgICAg ICAgICAgICAgICAgICBpbmNsdWRlIHNoZWxsIGFycmF5IHZhcmlhYmxlcworLSAgLS1lbmFibGUt YmFuZy1oaXN0b3J5ICAgdHVybiBvbiBjc2gtc3R5bGUgaGlzdG9yeSBzdWJzdGl0dXRpb24KKy0g IC0tZW5hYmxlLWJhc2gtc291cmNlLWZ1bGxwYXRoLWRlZmF1bHQKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgIGVuYWJsZSB0aGUgYmFzaF9zb3VyY2VfZnVsbHBhdGggb3B0aW9uIGJ5IGRlZmF1 bHQKKy0gIC0tZW5hYmxlLWJyYWNlLWV4cGFuc2lvbgorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgaW5jbHVkZSBicmFjZSBleHBhbnNpb24KKy0gIC0tZW5hYmxlLWNhc2Vtb2QtYXR0cmlidXRl cworLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBjYXNlLW1vZGlmeWluZyB2YXJp YWJsZSBhdHRyaWJ1dGVzCistICAtLWVuYWJsZS1jYXNlbW9kLWV4cGFuc2lvbnMKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgY2FzZS1tb2RpZnlpbmcgd29yZCBleHBhbnNpb25z CistICAtLWVuYWJsZS1jb21tYW5kLXRpbWluZyBlbmFibGUgdGhlIHRpbWUgcmVzZXJ2ZWQgd29y ZCBhbmQgY29tbWFuZCB0aW1pbmcKKy0gIC0tZW5hYmxlLWNvbmQtY29tbWFuZCAgIGVuYWJsZSB0 aGUgY29uZGl0aW9uYWwgY29tbWFuZAorLSAgLS1lbmFibGUtY29uZC1yZWdleHAgICAgZW5hYmxl IGV4dGVuZGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGluZyBpbgorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uZGl0aW9uYWwgY29tbWFuZHMKKy0gIC0tZW5hYmxlLWNvcHJvY2Vzc2Vz ICAgIGVuYWJsZSBjb3Byb2Nlc3Mgc3VwcG9ydCBhbmQgdGhlIGNvcHJvYyByZXNlcnZlZAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgd29yZAorLSAgLS1lbmFibGUtZGVidWdnZXIgICAgICAg ZW5hYmxlIHN1cHBvcnQgZm9yIGJhc2ggZGVidWdnZXIKKy0gIC0tZW5hYmxlLWRldi1mZC1zdGF0 LWJyb2tlbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlIHRoaXMgb3B0aW9uIGlm IHN0YXQgb24gL2Rldi9mZC9OIGFuZCBmc3RhdCBvbgorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgZmlsZSBkZXNjcmlwdG9yIE4gZG9uJ3QgcmV0dXJuIHRoZSBzYW1lIHJlc3VsdHMKKy0gIC0t ZW5hYmxlLWRpcmV4cGFuZC1kZWZhdWx0CistICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFi bGUgdGhlIGRpcmV4cGFuZCBzaGVsbCBvcHRpb24gYnkgZGVmYXVsdAorLSAgLS1lbmFibGUtZGly ZWN0b3J5LXN0YWNrCistICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGUgYnVpbHRpbnMg cHVzaGQvcG9wZC9kaXJzCistICAtLWVuYWJsZS1kaXNhYmxlZC1idWlsdGlucworLSAgICAgICAg ICAgICAgICAgICAgICAgICAgYWxsb3cgZGlzYWJsZWQgYnVpbHRpbnMgdG8gc3RpbGwgYmUgaW52 b2tlZAorLSAgLS1lbmFibGUtZHBhcmVuLWFyaXRobWV0aWMKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgIGluY2x1ZGUgKCguLi4pKSBjb21tYW5kCistICAtLWVuYWJsZS1leHRlbmRlZC1nbG9i ICBpbmNsdWRlIGtzaC1zdHlsZSBleHRlbmRlZCBwYXR0ZXJuIG1hdGNoaW5nCistICAtLWVuYWJs ZS1leHRlbmRlZC1nbG9iLWRlZmF1bHQKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNl IGV4dGVuZGVkIHBhdHRlcm4gbWF0Y2hpbmcgdG8gYmUgZW5hYmxlZCBieQorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgZGVmYXVsdAorLSAgLS1lbmFibGUtZnVuY3Rpb24taW1wb3J0CistICAg ICAgICAgICAgICAgICAgICAgICAgICBhbGxvdyBiYXNoIHRvIGltcG9ydCBleHBvcnRlZCBmdW5j dGlvbiBkZWZpbml0aW9ucworLSAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgZGVmYXVsdAor LSAgLS1lbmFibGUtZ2xvYi1hc2NpaXJhbmdlcy1kZWZhdWx0CistICAgICAgICAgICAgICAgICAg ICAgICAgICBmb3JjZSBicmFja2V0IHJhbmdlIGV4cHJlc3Npb25zIGluIHBhdHRlcm4gbWF0Y2hp bmcKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHVzZSB0aGUgQyBsb2NhbGUgYnkgZGVm YXVsdAorLSAgLS1lbmFibGUtaGVscC1idWlsdGluICAgaW5jbHVkZSB0aGUgaGVscCBidWlsdGlu CistICAtLWVuYWJsZS1oaXN0b3J5ICAgICAgICB0dXJuIG9uIGNvbW1hbmQgaGlzdG9yeQorLSAg LS1lbmFibGUtam9iLWNvbnRyb2wgICAgZW5hYmxlIGpvYiBjb250cm9sIGZlYXR1cmVzCistICAt LWVuYWJsZS1tdWx0aWJ5dGUgICAgICBlbmFibGUgbXVsdGlieXRlIGNoYXJhY3RlcnMgaWYgT1Mg c3VwcG9ydHMgdGhlbQorLSAgLS1lbmFibGUtbmV0LXJlZGlyZWN0aW9ucworLSAgICAgICAgICAg ICAgICAgICAgICAgICAgZW5hYmxlIC9kZXYvdGNwL2hvc3QvcG9ydCByZWRpcmVjdGlvbgorLSAg LS1lbmFibGUtcHJvY2Vzcy1zdWJzdGl0dXRpb24KKy0gICAgICAgICAgICAgICAgICAgICAgICAg IGVuYWJsZSBwcm9jZXNzIHN1YnN0aXR1dGlvbgorLSAgLS1lbmFibGUtcHJvZ2NvbXAgICAgICAg ZW5hYmxlIHByb2dyYW1tYWJsZSBjb21wbGV0aW9uIGFuZCB0aGUgY29tcGxldGUKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgIGJ1aWx0aW4KKy0gIC0tZW5hYmxlLXByb21wdC1zdHJpbmctZGVj b2RpbmcKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIHR1cm4gb24gZXNjYXBlIGNoYXJhY3Rl ciBkZWNvZGluZyBpbiBwcm9tcHRzCistICAtLWVuYWJsZS1yZWFkbGluZSAgICAgICB0dXJuIG9u IGNvbW1hbmQgbGluZSBlZGl0aW5nCistICAtLWVuYWJsZS1yZXN0cmljdGVkICAgICBlbmFibGUg YSByZXN0cmljdGVkIHNoZWxsCistICAtLWVuYWJsZS1zZWxlY3QgICAgICAgICBpbmNsdWRlIHNl bGVjdCBjb21tYW5kCistICAtLWVuYWJsZS1zZXBhcmF0ZS1oZWxwZmlsZXMKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgIHVzZSBleHRlcm5hbCBmaWxlcyBmb3IgaGVscCBidWlsdGluIGRvY3Vt ZW50YXRpb24KKy0gIC0tZW5hYmxlLXNpbmdsZS1oZWxwLXN0cmluZ3MKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgIHN0b3JlIGhlbHAgZG9jdW1lbnRhdGlvbiBhcyBhIHNpbmdsZSBzdHJpbmcg dG8gZWFzZQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb24KKy0gIC0tZW5h YmxlLXN0cmljdC1wb3NpeC1kZWZhdWx0CistICAgICAgICAgICAgICAgICAgICAgICAgICBjb25m aWd1cmUgYmFzaCB0byBiZSBwb3NpeC1jb25mb3JtYW50IGJ5IGRlZmF1bHQKKy0gIC0tZW5hYmxl LXRyYW5zbGF0YWJsZS1zdHJpbmdzCistICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRl IHN1cHBvcnQgZm9yICQiLi4uIiB0cmFuc2xhdGFibGUgc3RyaW5ncworLSAgLS1lbmFibGUtdXNn LWVjaG8tZGVmYXVsdAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgYSBzeW5vbnltIGZvciAt LWVuYWJsZS14cGctZWNoby1kZWZhdWx0CistICAtLWVuYWJsZS14cGctZWNoby1kZWZhdWx0Cist ICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlIHRoZSBlY2hvIGJ1aWx0aW4gZXhwYW5kIGVz Y2FwZSBzZXF1ZW5jZXMgYnkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQKKy0g IC0tZW5hYmxlLW1lbS1zY3JhbWJsZSAgIHNjcmFtYmxlIG1lbW9yeSBvbiBjYWxscyB0byBtYWxs b2MgYW5kIGZyZWUKKy0gIC0tZW5hYmxlLXByb2ZpbGluZyAgICAgIGFsbG93IHByb2ZpbGluZyB3 aXRoIGdwcm9mCistICAtLWVuYWJsZS1zdGF0aWMtbGluayAgICBsaW5rIGJhc2ggc3RhdGljYWxs eSwgZm9yIHVzZSBhcyBhIHJvb3Qgc2hlbGwKKy0gIC0tZGlzYWJsZS1sYXJnZWZpbGUgICAgIG9t aXQgc3VwcG9ydCBmb3IgbGFyZ2UgZmlsZXMKKy0gIC0tZGlzYWJsZS1ubHMgICAgICAgICAgIGRv IG5vdCB1c2UgTmF0aXZlIExhbmd1YWdlIFN1cHBvcnQKKy0gIC0tZW5hYmxlLXRocmVhZHM9e2lz b2N8cG9zaXh8aXNvYytwb3NpeHx3aW5kb3dzfQorLSAgICAgICAgICAgICAgICAgICAgICAgICAg c3BlY2lmeSBtdWx0aXRocmVhZGluZyBBUEkKKy0gIC0tZGlzYWJsZS10aHJlYWRzICAgICAgIGJ1 aWxkIHdpdGhvdXQgbXVsdGl0aHJlYWQgc2FmZXR5CistICAtLWRpc2FibGUtcnBhdGggICAgICAg ICBkbyBub3QgaGFyZGNvZGUgcnVudGltZSBsaWJyYXJ5IHBhdGhzCistICAtLWVuYWJsZS15ZWFy MjAzOCAgICAgICBzdXBwb3J0IHRpbWVzdGFtcHMgYWZ0ZXIgMjAzOAorLQorLU9wdGlvbmFsIFBh Y2thZ2VzOgorLSAgLS13aXRoLVBBQ0tBR0VbPUFSR10gICAgdXNlIFBBQ0tBR0UgW0FSRz15ZXNd CistICAtLXdpdGhvdXQtUEFDS0FHRSAgICAgICBkbyBub3QgdXNlIFBBQ0tBR0UgKHNhbWUgYXMg LS13aXRoLVBBQ0tBR0U9bm8pCistICAtLXdpdGgtYWZzICAgICAgICAgICAgICBpZiB5b3UgYXJl IHJ1bm5pbmcgQUZTCistICAtLXdpdGgtYmFzaC1tYWxsb2MgICAgICB1c2UgdGhlIEJhc2ggdmVy c2lvbiBvZiBtYWxsb2MKKy0gIC0td2l0aC1jdXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2Vz IGxpYnJhcnkgaW5zdGVhZCBvZiB0aGUgdGVybWNhcAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlicmFyeQorLSAgLS13aXRoLWdudS1tYWxsb2MgICAgICAgc3lub255bSBmb3IgLS13aXRo LWJhc2gtbWFsbG9jCistICAtLXdpdGgtaW5zdGFsbGVkLXJlYWRsaW5lCistICAgICAgICAgICAg ICAgICAgICAgICAgICB1c2UgYSB2ZXJzaW9uIG9mIHRoZSByZWFkbGluZSBsaWJyYXJ5IHRoYXQg aXMKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgaW5zdGFsbGVkCistICAtLXdp dGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2Rl ZmF1bHQ9bm9dCistICAtLXdpdGgtbGliaWNvbnYtcHJlZml4Wz1ESVJdICBzZWFyY2ggZm9yIGxp Ymljb252IGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCistICAtLXdpdGhvdXQtbGliaWNvbnYt cHJlZml4ICAgICBkb24ndCBzZWFyY2ggZm9yIGxpYmljb252IGluIGluY2x1ZGVkaXIgYW5kIGxp YmRpcgorLSAgLS13aXRoLWluY2x1ZGVkLWdldHRleHQgdXNlIHRoZSBHTlUgZ2V0dGV4dCBsaWJy YXJ5IGluY2x1ZGVkIGhlcmUKKy0gIC0td2l0aC1saWJpbnRsLXByZWZpeFs9RElSXSAgc2VhcmNo IGZvciBsaWJpbnRsIGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCistICAtLXdpdGhvdXQtbGli aW50bC1wcmVmaXggICAgIGRvbid0IHNlYXJjaCBmb3IgbGliaW50bCBpbiBpbmNsdWRlZGlyIGFu ZCBsaWJkaXIKKy0KKy1Tb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKKy0g IERFQlVHR0VSX1NUQVJUX0ZJTEUKKy0gICAgICAgICAgICAgIGxvY2F0aW9uIG9mIGJhc2ggZGVi dWdnZXIgaW5pdGlhbGl6YXRpb24gZmlsZQorLSAgQ0NfRk9SX0JVSUxECistICAgICAgICAgICAg ICBDIGNvbXBpbGVyIHVzZWQgd2hlbiBjb21waWxpbmcgYmluYXJpZXMgdXNlZCBvbmx5IGF0IGJ1 aWxkIHRpbWUKKy0gIENGTEFHU19GT1JfQlVJTEQKKy0gICAgICAgICAgICAgIENvbXBpbGF0aW9u IG9wdGlvbnMgKENGTEFHUykgdXNlZCB3aGVuIGNvbXBpbGluZyBiaW5hcmllcyB1c2VkCistICAg ICAgICAgICAgICBvbmx5IGF0IGJ1aWxkIHRpbWUKKy0gIExERkxBR1NfRk9SX0JVSUxECistICAg ICAgICAgICAgICBMaW5rZXIgb3B0aW9ucyAoTERGTEFHUykgdXNlZCB3aGVuIGNvbXBpbGluZyBi aW5hcmllcyB1c2VkIG9ubHkKKy0gICAgICAgICAgICAgIGF0IGJ1aWxkIHRpbWUKKy0gIENQUEZM QUdTX0ZPUl9CVUlMRAorLSAgICAgICAgICAgICAgQyBwcmVwcm9jZXNzb3Igb3B0aW9ucyAoQ1BQ RkxBR1MpIHVzZWQgd2hlbiBjb21waWxpbmcgYmluYXJpZXMKKy0gICAgICAgICAgICAgIHVzZWQg b25seSBhdCBidWlsZCB0aW1lCistICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKKy0g IENGTEFHUyAgICAgIEMgY29tcGlsZXIgZmxhZ3MKKy0gIExERkxBR1MgICAgIGxpbmtlciBmbGFn cywgZS5nLiAtTDxsaWIgZGlyPiBpZiB5b3UgaGF2ZSBsaWJyYXJpZXMgaW4gYQorLSAgICAgICAg ICAgICAgbm9uc3RhbmRhcmQgZGlyZWN0b3J5IDxsaWIgZGlyPgorLSAgTElCUyAgICAgICAgbGli cmFyaWVzIHRvIHBhc3MgdG8gdGhlIGxpbmtlciwgZS5nLiAtbDxsaWJyYXJ5PgorLSAgQ1BQRkxB R1MgICAgKE9iamVjdGl2ZSkgQy9DKysgcHJlcHJvY2Vzc29yIGZsYWdzLCBlLmcuIC1JPGluY2x1 ZGUgZGlyPiBpZgorLSAgICAgICAgICAgICAgeW91IGhhdmUgaGVhZGVycyBpbiBhIG5vbnN0YW5k YXJkIGRpcmVjdG9yeSA8aW5jbHVkZSBkaXI+CistICBZQUNDICAgICAgICBUaGUgJ1lldCBBbm90 aGVyIENvbXBpbGVyIENvbXBpbGVyJyBpbXBsZW1lbnRhdGlvbiB0byB1c2UuCistICAgICAgICAg ICAgICBEZWZhdWx0cyB0byB0aGUgZmlyc3QgcHJvZ3JhbSBmb3VuZCBvdXQgb2Y6ICdiaXNvbiAt eScsICdieWFjYycsCistICAgICAgICAgICAgICAneWFjYycuCistICBZRkxBR1MgICAgICBUaGUg bGlzdCBvZiBhcmd1bWVudHMgdGhhdCB3aWxsIGJlIHBhc3NlZCBieSBkZWZhdWx0IHRvICRZQUND LgorLSAgICAgICAgICAgICAgVGhpcyBzY3JpcHQgd2lsbCBkZWZhdWx0IFlGTEFHUyB0byB0aGUg ZW1wdHkgc3RyaW5nIHRvIGF2b2lkIGEKKy0gICAgICAgICAgICAgIGRlZmF1bHQgdmFsdWUgb2Yg Jy1kJyBnaXZlbiBieSBzb21lIG1ha2UgYXBwbGljYXRpb25zLgorLSAgQ1BQICAgICAgICAgQyBw cmVwcm9jZXNzb3IKKy0KKy1Vc2UgdGhlc2UgdmFyaWFibGVzIHRvIG92ZXJyaWRlIHRoZSBjaG9p Y2VzIG1hZGUgYnkgJ2NvbmZpZ3VyZScgb3IgdG8gaGVscAorLWl0IHRvIGZpbmQgbGlicmFyaWVz IGFuZCBwcm9ncmFtcyB3aXRoIG5vbnN0YW5kYXJkIG5hbWVzL2xvY2F0aW9ucy4KKy0KKy1SZXBv cnQgYnVncyB0byA8YnVnLWJhc2hAZ251Lm9yZz4uCistX0FDRU9GCistYWNfc3RhdHVzPSQ/Cist ZmkKKy0KKy1pZiB0ZXN0ICIkYWNfaW5pdF9oZWxwIiA9ICJyZWN1cnNpdmUiOyB0aGVuCistICAj IElmIHRoZXJlIGFyZSBzdWJkaXJzLCByZXBvcnQgdGhlaXIgc3BlY2lmaWMgLS1oZWxwLgorLSAg Zm9yIGFjX2RpciBpbiA6ICRhY19zdWJkaXJzX2FsbDsgZG8gdGVzdCAieCRhY19kaXIiID0geDog JiYgY29udGludWUKKy0gICAgdGVzdCAtZCAiJGFjX2RpciIgfHwKKy0gICAgICB7IGNkICIkc3Jj ZGlyIiAmJiBhY19wd2Q9YHB3ZGAgJiYgc3JjZGlyPS4gJiYgdGVzdCAtZCAiJGFjX2RpciI7IH0g fHwKKy0gICAgICBjb250aW51ZQorLSAgICBhY19idWlsZGRpcj0uCistCistY2FzZSAiJGFjX2Rp ciIgaW4KKy0uKSBhY19kaXJfc3VmZml4PSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1 aWxkX3ByZWZpeD0gOzsKKy0qKQorLSAgYWNfZGlyX3N1ZmZpeD0vYHByaW50ZiAiJXNcbiIgIiRh Y19kaXIiIHwgc2VkICdzfF5cLltcXC9dfHwnYAorLSAgIyBBICIuLiIgZm9yIGVhY2ggZGlyZWN0 b3J5IGluICRhY19kaXJfc3VmZml4LgorLSAgYWNfdG9wX2J1aWxkZGlyX3N1Yj1gcHJpbnRmICIl c1xuIiAiJGFjX2Rpcl9zdWZmaXgiIHwgc2VkICdzfC9bXlxcL10qfC8uLnxnO3N8L3x8J2AKKy0g IGNhc2UgJGFjX3RvcF9idWlsZGRpcl9zdWIgaW4KKy0gICIiKSBhY190b3BfYnVpbGRkaXJfc3Vi PS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsKKy0gICopICBhY190b3BfYnVpbGRfcHJlZml4PSRh Y190b3BfYnVpbGRkaXJfc3ViLyA7OworLSAgZXNhYyA7OworLWVzYWMKKy1hY19hYnNfdG9wX2J1 aWxkZGlyPSRhY19wd2QKKy1hY19hYnNfYnVpbGRkaXI9JGFjX3B3ZCRhY19kaXJfc3VmZml4Cist IyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eToKKy1hY190b3BfYnVpbGRkaXI9JGFjX3RvcF9i dWlsZF9wcmVmaXgKKy0KKy1jYXNlICRzcmNkaXIgaW4KKy0gIC4pICAjIFdlIGFyZSBidWlsZGlu ZyBpbiBwbGFjZS4KKy0gICAgYWNfc3JjZGlyPS4KKy0gICAgYWNfdG9wX3NyY2Rpcj0kYWNfdG9w X2J1aWxkZGlyX3N1YgorLSAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdkIDs7CistICBbXFwv XSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIG5hbWUuCistICAgIGFjX3NyY2Rpcj0kc3JjZGly JGFjX2Rpcl9zdWZmaXg7CistICAgIGFjX3RvcF9zcmNkaXI9JHNyY2RpcgorLSAgICBhY19hYnNf dG9wX3NyY2Rpcj0kc3JjZGlyIDs7CistICAqKSAjIFJlbGF0aXZlIG5hbWUuCistICAgIGFjX3Ny Y2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXIkYWNfZGlyX3N1ZmZpeAorLSAgICBhY190 b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2RpcgorLSAgICBhY19hYnNfdG9wX3Ny Y2Rpcj0kYWNfcHdkLyRzcmNkaXIgOzsKKy1lc2FjCistYWNfYWJzX3NyY2Rpcj0kYWNfYWJzX3Rv cF9zcmNkaXIkYWNfZGlyX3N1ZmZpeAorLQorLSAgICBjZCAiJGFjX2RpciIgfHwgeyBhY19zdGF0 dXM9JD87IGNvbnRpbnVlOyB9CistICAgICMgQ2hlY2sgZm9yIGNvbmZpZ3VyZS5nbnUgZmlyc3Q7 IHRoaXMgbmFtZSBpcyB1c2VkIGZvciBhIHdyYXBwZXIgZm9yCistICAgICMgTWV0YWNvbmZpZydz ICJDb25maWd1cmUiIG9uIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW1zLgorLSAgICBpZiB0 ZXN0IC1mICIkYWNfc3JjZGlyL2NvbmZpZ3VyZS5nbnUiOyB0aGVuCistICAgICAgZWNobyAmJgor LSAgICAgICRTSEVMTCAiJGFjX3NyY2Rpci9jb25maWd1cmUuZ251IiAtLWhlbHA9cmVjdXJzaXZl CistICAgIGVsaWYgdGVzdCAtZiAiJGFjX3NyY2Rpci9jb25maWd1cmUiOyB0aGVuCistICAgICAg ZWNobyAmJgorLSAgICAgICRTSEVMTCAiJGFjX3NyY2Rpci9jb25maWd1cmUiIC0taGVscD1yZWN1 cnNpdmUKKy0gICAgZWxzZQorLSAgICAgIHByaW50ZiAiJXNcbiIgIiRhc19tZTogV0FSTklORzog bm8gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBpcyBpbiAkYWNfZGlyIiA+JjIKKy0gICAgZmkg fHwgYWNfc3RhdHVzPSQ/CistICAgIGNkICIkYWNfcHdkIiB8fCB7IGFjX3N0YXR1cz0kPzsgYnJl YWs7IH0KKy0gIGRvbmUKKy1maQorLQorLXRlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQg JGFjX3N0YXR1cworLWlmICRhY19pbml0X3ZlcnNpb247IHRoZW4KKy0gIGNhdCA8PFxfQUNFT0YK Ky1iYXNoIGNvbmZpZ3VyZSA1LjMtcmMyCistZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjcy CistCistQ29weXJpZ2h0IChDKSAyMDIzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor LVRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uCistZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJp YnV0ZSBhbmQgbW9kaWZ5IGl0LgorLV9BQ0VPRgorLSAgZXhpdAorLWZpCistCistIyMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tICMjCistIyMgQXV0b2NvbmYgaW5pdGlhbGl6YXRpb24uICMjCist IyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCistCistIyBhY19mbl9jX3RyeV9jb21waWxl IExJTkVOTworLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0jIFRyeSB0byBjb21waWxl IGNvbmZ0ZXN0LiRhY19leHQsIGFuZCByZXR1cm4gd2hldGhlciB0aGlzIHN1Y2NlZWRlZC4KKy1h Y19mbl9jX3RyeV9jb21waWxlICgpCisteworLSAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9 IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworLSAgcm0g LWYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtCistICBpZiB7IHsgYWNfdHJ5PSIk YWNfY29tcGlsZSIKKy1jYXNlICIoKCRhY190cnkiIGluCistICAqXCIqIHwgKlxgKiB8ICpcXCop IGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKy0gICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworLWVz YWMKKy1ldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRh Y190cnlfZWNob1wiIgorLXByaW50ZiAiJXNcbiIgIiRhY190cnlfZWNobyI7IH0gPiY1CistICAo ZXZhbCAiJGFjX2NvbXBpbGUiKSAyPmNvbmZ0ZXN0LmVycgorLSAgYWNfc3RhdHVzPSQ/CistICBp ZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorLSAgICBncmVwIC12ICdeICorJyBjb25mdGVz dC5lcnIgPmNvbmZ0ZXN0LmVyMQorLSAgICBjYXQgY29uZnRlc3QuZXIxID4mNQorLSAgICBtdiAt ZiBjb25mdGVzdC5lcjEgY29uZnRlc3QuZXJyCistICBmaQorLSAgcHJpbnRmICIlc1xuIiAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKy0gIHRlc3Qg JGFjX3N0YXR1cyA9IDA7IH0gJiYgeworLQkgdGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciIHx8 CistCSB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyCistICAgICAgIH0gJiYgdGVzdCAtcyBjb25mdGVz dC4kYWNfb2JqZXh0CistdGhlbiA6CistICBhY19yZXR2YWw9MAorLWVsc2UgY2FzZSBlIGluICMo CistICBlKSBwcmludGYgIiVzXG4iICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQor LXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKKy0KKy0JYWNfcmV0dmFsPTEgOzsK Ky1lc2FjCistZmkKKy0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6 Kzp9IHVuc2V0IGFzX2xpbmVubworLSAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCistCist fSAjIGFjX2ZuX2NfdHJ5X2NvbXBpbGUKKy0KKy0jIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBp bGUgTElORU5PIEhFQURFUiBWQVIgSU5DTFVERVMKKy0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0jIFRlc3RzIHdoZXRoZXIgSEVBREVS IGV4aXN0cyBhbmQgY2FuIGJlIGNvbXBpbGVkIHVzaW5nIHRoZSBpbmNsdWRlIGZpbGVzIGluCist IyBJTkNMVURFUywgc2V0dGluZyB0aGUgY2FjaGUgdmFyaWFibGUgVkFSIGFjY29yZGluZ2x5Lgor LWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgKCkKKy17CistICBhc19saW5lbm89JHthc19s aW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0 YWNrCistICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgZm9yICQyIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsg fQorLWlmIGV2YWwgdGVzdCBcJHskMyt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVk KSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FD RU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLSQ0CistI2lu Y2x1ZGUgPCQyPgorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCist dGhlbiA6CistICBldmFsICIkMz15ZXMiCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGV2YWwg IiQzPW5vIiA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0 LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZp CistZXZhbCBhY19yZXM9XCQkMworLQkgICAgICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CistcHJpbnRmICIlc1xuIiAi JGFjX3JlcyIgPiY2OyB9CistICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0 YWNrOis6fSB1bnNldCBhc19saW5lbm8KKy0KKy19ICMgYWNfZm5fY19jaGVja19oZWFkZXJfY29t cGlsZQorLQorLSMgYWNfZm5fY190cnlfbGluayBMSU5FTk8KKy0jIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCistIyBUcnkgdG8gbGluayBjb25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRo ZXIgdGhpcyBzdWNjZWVkZWQuCistYWNfZm5fY190cnlfbGluayAoKQorLXsKKy0gIGFzX2xpbmVu bz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19s aW5lbm9fc3RhY2sKKy0gIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBj b25mdGVzdCRhY19leGVleHQKKy0gIGlmIHsgeyBhY190cnk9IiRhY19saW5rIgorLWNhc2UgIigo JGFjX3RyeSIgaW4KKy0gICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7 OworLSAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7CistZXNhYworLWV2YWwgYWNfdHJ5X2VjaG89 IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCistcHJpbnRm ICIlc1xuIiAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKy0gIChldmFsICIkYWNfbGluayIpIDI+Y29u ZnRlc3QuZXJyCistICBhY19zdGF0dXM9JD8KKy0gIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0 aGVuCistICAgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIxCistICAg IGNhdCBjb25mdGVzdC5lcjEgPiY1CistICAgIG12IC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5l cnIKKy0gIGZpCistICBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IFwkPyA9ICRhY19zdGF0dXMiID4mNQorLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB7Cist CSB0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIgfHwKKy0JIHRlc3QgISAtcyBjb25mdGVzdC5l cnIKKy0gICAgICAgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAmJiB7CistCSB0ZXN0 ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyB8fAorLQkgdGVzdCAteCBjb25mdGVzdCRhY19leGVl eHQKKy0gICAgICAgfQorLXRoZW4gOgorLSAgYWNfcmV0dmFsPTAKKy1lbHNlIGNhc2UgZSBpbiAj KAorLSAgZSkgcHJpbnRmICIlc1xuIiAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUK Ky1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CistCistCWFjX3JldHZhbD0xIDs7 CistZXNhYworLWZpCistICAjIERlbGV0ZSB0aGUgSVBBL0lQTyAoSW50ZXIgUHJvY2VkdXJhbCBB bmFseXNpcy9PcHRpbWl6YXRpb24pIGluZm9ybWF0aW9uCistICAjIGNyZWF0ZWQgYnkgdGhlIFBH SSBjb21waWxlciAoY29uZnRlc3RfaXBhOF9jb25mdGVzdC5vbyksIGFzIGl0IHdvdWxkCistICAj IGludGVyZmVyZSB3aXRoIHRoZSBuZXh0IGxpbmsgY29tbWFuZDsgYWxzbyBkZWxldGUgYSBkaXJl Y3RvcnkgdGhhdCBpcworLSAgIyBsZWZ0IGJlaGluZCBieSBBcHBsZSdzIGNvbXBpbGVyLiAgV2Ug ZG8gdGhpcyBiZWZvcmUgZXhlY3V0aW5nIHRoZSBhY3Rpb25zLgorLSAgcm0gLXJmIGNvbmZ0ZXN0 LmRTWU0gY29uZnRlc3RfaXBhOF9jb25mdGVzdC5vbworLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNr OyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCistICBhc19mbl9zZXRfc3Rh dHVzICRhY19yZXR2YWwKKy0KKy19ICMgYWNfZm5fY190cnlfbGluaworLQorLSMgYWNfZm5fY19j aGVja19mdW5jIExJTkVOTyBGVU5DIFZBUgorLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorLSMgVGVzdHMgd2hldGhlciBGVU5DIGV4aXN0cywgc2V0dGluZyB0aGUgY2FjaGUg dmFyaWFibGUgVkFSIGFjY29yZGluZ2x5CistYWNfZm5fY19jaGVja19mdW5jICgpCisteworLSAg YXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3Rh Y2s9JGFzX2xpbmVub19zdGFjaworLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBm b3IgJDIuLi4gIiA+JjY7IH0KKy1pZiBldmFsIHRlc3QgXCR7JDMreX0KKy10aGVuIDoKKy0gIHBy aW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0IGNv bmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5o LiAgKi8KKy0vKiBEZWZpbmUgJDIgdG8gYW4gaW5ub2N1b3VzIHZhcmlhbnQsIGluIGNhc2UgPGxp bWl0cy5oPiBkZWNsYXJlcyAkMi4KKy0gICBGb3IgZXhhbXBsZSwgSFAtVVggMTFpIDxsaW1pdHMu aD4gZGVjbGFyZXMgZ2V0dGltZW9mZGF5LiAgKi8KKy0jZGVmaW5lICQyIGlubm9jdW91c18kMgor LQorLS8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxs eSBmZXcgcHJvdG90eXBlcywKKy0gICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICQyICh2 b2lkKTsgYmVsb3cuICAqLworLQorLSNpbmNsdWRlIDxsaW1pdHMuaD4KKy0jdW5kZWYgJDIKKy0K Ky0vKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJv ci4KKy0gICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUg b2YgYSBHQ0MKKy0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291 bGQgc3RpbGwgYXBwbHkuICAqLworLSNpZmRlZiBfX2NwbHVzcGx1cworLWV4dGVybiAiQyIKKy0j ZW5kaWYKKy1jaGFyICQyICh2b2lkKTsKKy0vKiBUaGUgR05VIEMgbGlicmFyeSBkZWZpbmVzIHRo aXMgZm9yIGZ1bmN0aW9ucyB3aGljaCBpdCBpbXBsZW1lbnRzCistICAgIHRvIGFsd2F5cyBmYWls IHdpdGggRU5PU1lTLiAgU29tZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IG5hbWVkCistICAgIHNv bWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMu ICAqLworLSNpZiBkZWZpbmVkIF9fc3R1Yl8kMiB8fCBkZWZpbmVkIF9fc3R1Yl9fXyQyCistY2hv a2UgbWUKKy0jZW5kaWYKKy0KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1yZXR1cm4gJDIgKCk7 CistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfbGluayAi JExJTkVOTyIKKy10aGVuIDoKKy0gIGV2YWwgIiQzPXllcyIKKy1lbHNlIGNhc2UgZSBpbiAjKAor LSAgZSkgZXZhbCAiJDM9bm8iIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5l cnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAgY29uZnRlc3QkYWNf ZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy1ldmFsIGFjX3Jlcz1cJCQz CistCSAgICAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkYWNfcmVzIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfcmVzIiA+JjY7IH0KKy0g IGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xp bmVubworLQorLX0gIyBhY19mbl9jX2NoZWNrX2Z1bmMKKy0KKy0jIGFjX2ZuX2NfdHJ5X3J1biBM SU5FTk8KKy0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0jIFRyeSB0byBydW4gY29uZnRlc3Qu JGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVkLiBBc3N1bWVzIHRoYXQK Ky0jIGV4ZWN1dGFibGVzICpjYW4qIGJlIHJ1bi4KKy1hY19mbl9jX3RyeV9ydW4gKCkKKy17Cist ICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19z dGFjaz0kYXNfbGluZW5vX3N0YWNrCistICBpZiB7IHsgYWNfdHJ5PSIkYWNfbGluayIKKy1jYXNl ICIoKCRhY190cnkiIGluCistICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNf dHJ5OzsKKy0gICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworLWVzYWMKKy1ldmFsIGFjX3RyeV9l Y2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorLXBy aW50ZiAiJXNcbiIgIiRhY190cnlfZWNobyI7IH0gPiY1CistICAoZXZhbCAiJGFjX2xpbmsiKSAy PiY1CistICBhY19zdGF0dXM9JD8KKy0gIHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CistICB0ZXN0ICRhY19zdGF0dXMgPSAw OyB9ICYmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2V4ZWV4dCcKKy0gIHsgeyBjYXNlICIoKCRh Y190cnkiIGluCistICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsK Ky0gICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworLWVzYWMKKy1ldmFsIGFjX3RyeV9lY2hvPSJc IlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorLXByaW50ZiAi JXNcbiIgIiRhY190cnlfZWNobyI7IH0gPiY1CistICAoZXZhbCAiJGFjX3RyeSIpIDI+JjUKKy0g IGFjX3N0YXR1cz0kPworLSAgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKy0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IH0K Ky10aGVuIDoKKy0gIGFjX3JldHZhbD0wCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIHByaW50 ZiAiJXNcbiIgIiRhc19tZTogcHJvZ3JhbSBleGl0ZWQgd2l0aCBzdGF0dXMgJGFjX3N0YXR1cyIg PiY1CistICAgICAgIHByaW50ZiAiJXNcbiIgIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIg PiY1Cistc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQorLQorLSAgICAgICBhY19y ZXR2YWw9JGFjX3N0YXR1cyA7OworLWVzYWMKKy1maQorLSAgcm0gLXJmIGNvbmZ0ZXN0LmRTWU0g Y29uZnRlc3RfaXBhOF9jb25mdGVzdC5vbworLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2Fz X2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCistICBhc19mbl9zZXRfc3RhdHVzICRh Y19yZXR2YWwKKy0KKy19ICMgYWNfZm5fY190cnlfcnVuCistCistIyBhY19mbl9jX3RyeV9jcHAg TElORU5PCistIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistIyBUcnkgdG8gcHJlcHJvY2VzcyBj b25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuCistYWNf Zm5fY190cnlfY3BwICgpCisteworLSAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xp bmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworLSAgaWYgeyB7IGFj X3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IgorLWNhc2UgIigoJGFjX3RyeSIgaW4KKy0g ICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworLSAgKikgYWNfdHJ5 X2VjaG89JGFjX3RyeTs7CistZXNhYworLWV2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCistcHJpbnRmICIlc1xuIiAiJGFjX3Ry eV9lY2hvIjsgfSA+JjUKKy0gIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPmNv bmZ0ZXN0LmVycgorLSAgYWNfc3RhdHVzPSQ/CistICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsg dGhlbgorLSAgICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMQorLSAg ICBjYXQgY29uZnRlc3QuZXIxID4mNQorLSAgICBtdiAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3Qu ZXJyCistICBmaQorLSAgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKy0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gPiBjb25m dGVzdC5pICYmIHsKKy0JIHRlc3QgLXogIiRhY19jX3ByZXByb2Nfd2Fybl9mbGFnJGFjX2Nfd2Vy cm9yX2ZsYWciIHx8CistCSB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyCistICAgICAgIH0KKy10aGVu IDoKKy0gIGFjX3JldHZhbD0wCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIHByaW50ZiAiJXNc biIgIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Cistc2VkICdzL14vfCAvJyBjb25m dGVzdC4kYWNfZXh0ID4mNQorLQorLSAgICBhY19yZXR2YWw9MSA7OworLWVzYWMKKy1maQorLSAg ZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGlu ZW5vCistICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKKy0KKy19ICMgYWNfZm5fY190cnlf Y3BwCistCistIyBhY19mbl9jX2NoZWNrX3R5cGUgTElORU5PIFRZUEUgVkFSIElOQ0xVREVTCist IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistIyBUZXN0cyB3 aGV0aGVyIFRZUEUgZXhpc3RzIGFmdGVyIGhhdmluZyBpbmNsdWRlZCBJTkNMVURFUywgc2V0dGlu ZyBjYWNoZQorLSMgdmFyaWFibGUgVkFSIGFjY29yZGluZ2x5LgorLWFjX2ZuX2NfY2hlY2tfdHlw ZSAoKQorLXsKKy0gIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9 YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQorLXByaW50ZiAl cyAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9CistaWYgZXZhbCB0ZXN0IFwkeyQzK3l9Cist dGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygK Ky0gIGUpIGV2YWwgIiQzPW5vIgorLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl c3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0kNAorLWludAorLW1haW4gKHZv aWQpCisteworLWlmIChzaXplb2YgKCQyKSkKKy0JIHJldHVybiAwOworLSAgOworLSAgcmV0dXJu IDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhl biA6CistICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyog ZW5kIGNvbmZkZWZzLmguICAqLworLSQ0CistaW50CistbWFpbiAodm9pZCkKKy17CistaWYgKHNp emVvZiAoKCQyKSkpCistCSAgICByZXR1cm4gMDsKKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1f QUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRoZW4gOgorLQorLWVs c2UgY2FzZSBlIGluICMoCistICBlKSBldmFsICIkMz15ZXMiIDs7CistZXNhYworLWZpCistcm0g LWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNv bmZ0ZXN0LiRhY19leHQKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh Y19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZpCist ZXZhbCBhY19yZXM9XCQkMworLQkgICAgICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFj X3JlcyIgPiY2OyB9CistICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNr Ois6fSB1bnNldCBhc19saW5lbm8KKy0KKy19ICMgYWNfZm5fY19jaGVja190eXBlCistCistIyBh Y19mbl9jaGVja19kZWNsIExJTkVOTyBTWU1CT0wgVkFSIElOQ0xVREVTIEVYVFJBLU9QVElPTlMg RkxBRy1WQVIKKy0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLSMgVGVzdHMgd2hldGhlciBTWU1CT0wgaXMgZGVjbGFy ZWQgaW4gSU5DTFVERVMsIHNldHRpbmcgY2FjaGUgdmFyaWFibGUgVkFSCistIyBhY2NvcmRpbmds eS4gUGFzcyBFWFRSQS1PUFRJT05TIHRvIHRoZSBjb21waWxlciwgdXNpbmcgRkxBRy1WQVIuCist YWNfZm5fY2hlY2tfZGVjbCAoKQorLXsKKy0gIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBh c19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKy0gIGFzX2Rl Y2xfbmFtZT1gZWNobyAkMnxzZWQgJ3MvICooLiovLydgCistICB7IHByaW50ZiAiJXNcbiIgIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkYXNfZGVjbF9uYW1l IGlzIGRlY2xhcmVkIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIHdoZXRoZXIgJGFzX2RlY2xf bmFtZSBpcyBkZWNsYXJlZC4uLiAiID4mNjsgfQorLWlmIGV2YWwgdGVzdCBcJHskMyt5fQorLXRo ZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCist ICBlKSBhc19kZWNsX3VzZT1gZWNobyAkMnxzZWQgLWUgJ3MvKC8oKC8nIC1lICdzLykvKSAwJi8n IC1lICdzLywvKSAwJiAoL2cnYAorLSAgZXZhbCBhY19zYXZlX0ZMQUdTPVwkJDYKKy0gIGFzX2Zu X2FwcGVuZCAkNiAiICQ1IgorLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu JGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0kNAorLWludAorLW1haW4gKHZvaWQp CisteworLSNpZm5kZWYgJGFzX2RlY2xfbmFtZQorLSNpZmRlZiBfX2NwbHVzcGx1cworLSAgKHZv aWQpICRhc19kZWNsX3VzZTsKKy0jZWxzZQorLSAgKHZvaWQpICRhc19kZWNsX25hbWU7CistI2Vu ZGlmCistI2VuZGlmCistCistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNf Zm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGV2YWwgIiQzPXllcyIKKy1l bHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgZXZhbCAiJDM9bm8iIDs7CistZXNhYworLWZpCistcm0g LWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNv bmZ0ZXN0LiRhY19leHQKKy0gIGV2YWwgJDY9XCRhY19zYXZlX0ZMQUdTCistIDs7CistZXNhYwor LWZpCistZXZhbCBhY19yZXM9XCQkMworLQkgICAgICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CistcHJpbnRmICIlc1xu IiAiJGFjX3JlcyIgPiY2OyB9CistICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5v X3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KKy0KKy19ICMgYWNfZm5fY2hlY2tfZGVjbAorLQor LSMgYWNfZm5fY19jb21wdXRlX2ludCBMSU5FTk8gRVhQUiBWQVIgSU5DTFVERVMKKy0jIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistIyBUcmllcyB0byBmaW5k IHRoZSBjb21waWxlLXRpbWUgdmFsdWUgb2YgRVhQUiBpbiBhIHByb2dyYW0gdGhhdCBpbmNsdWRl cworLSMgSU5DTFVERVMsIHNldHRpbmcgVkFSIGFjY29yZGluZ2x5LiBSZXR1cm5zIHdoZXRoZXIg dGhlIHZhbHVlIGNvdWxkIGJlCistIyBjb21wdXRlZAorLWFjX2ZuX2NfY29tcHV0ZV9pbnQgKCkK Ky17CistICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xp bmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCistICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5n IiA9IHllczsgdGhlbgorLSAgICAjIERlcGVuZGluZyB1cG9uIHRoZSBzaXplLCBjb21wdXRlIHRo ZSBsbyBhbmQgaGkgYm91bmRzLgorLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0 LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistJDQKKy1pbnQKKy1tYWluICh2b2lk KQorLXsKKy1zdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgoJDIpID49IDApXTsKKy10 ZXN0X2FycmF5IFswXSA9IDA7CistcmV0dXJuIHRlc3RfYXJyYXkgWzBdOworLQorLSAgOworLSAg cmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8i CistdGhlbiA6CistICBhY19sbz0wIGFjX21pZD0wCistICB3aGlsZSA6OyBkbworLSAgICBjYXQg Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZz LmguICAqLworLSQ0CistaW50CistbWFpbiAodm9pZCkKKy17Cistc3RhdGljIGludCB0ZXN0X2Fy cmF5IFsxIC0gMiAqICEoKCQyKSA8PSAkYWNfbWlkKV07CistdGVzdF9hcnJheSBbMF0gPSAwOwor LXJldHVybiB0ZXN0X2FycmF5IFswXTsKKy0KKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNF T0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRoZW4gOgorLSAgYWNfaGk9 JGFjX21pZDsgYnJlYWsKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYXNfZm5fYXJpdGggJGFj X21pZCArIDEgJiYgYWNfbG89JGFzX3ZhbAorLQkJCWlmIHRlc3QgJGFjX2xvIC1sZSAkYWNfbWlk OyB0aGVuCistCQkJICBhY19sbz0gYWNfaGk9CistCQkJICBicmVhaworLQkJCWZpCistCQkJYXNf Zm5fYXJpdGggMiAnKicgJGFjX21pZCArIDEgJiYgYWNfbWlkPSRhc192YWwgOzsKKy1lc2FjCist ZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0 LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorLSAgZG9uZQorLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNv bmZkZWZzLmguICAqLworLSQ0CistaW50CistbWFpbiAodm9pZCkKKy17Cistc3RhdGljIGludCB0 ZXN0X2FycmF5IFsxIC0gMiAqICEoKCQyKSA8IDApXTsKKy10ZXN0X2FycmF5IFswXSA9IDA7Cist cmV0dXJuIHRlc3RfYXJyYXkgWzBdOworLQorLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VP RgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19oaT0t MSBhY19taWQ9LTEKKy0gIHdoaWxlIDo7IGRvCistICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF T0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistJDQKKy1pbnQK Ky1tYWluICh2b2lkKQorLXsKKy1zdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgoJDIp ID49ICRhY19taWQpXTsKKy10ZXN0X2FycmF5IFswXSA9IDA7CistcmV0dXJuIHRlc3RfYXJyYXkg WzBdOworLQorLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5 X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19sbz0kYWNfbWlkOyBicmVhaworLWVs c2UgY2FzZSBlIGluICMoCistICBlKSBhc19mbl9hcml0aCAnKCcgJGFjX21pZCAnKScgLSAxICYm IGFjX2hpPSRhc192YWwKKy0JCQlpZiB0ZXN0ICRhY19taWQgLWxlICRhY19oaTsgdGhlbgorLQkJ CSAgYWNfbG89IGFjX2hpPQorLQkJCSAgYnJlYWsKKy0JCQlmaQorLQkJCWFzX2ZuX2FyaXRoIDIg JyonICRhY19taWQgJiYgYWNfbWlkPSRhc192YWwgOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3Jl IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3Qu JGFjX2V4dAorLSAgZG9uZQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19sbz0gYWNfaGk9 IDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i amV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy1ybSAt ZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29u ZnRlc3QuJGFjX2V4dAorLSMgQmluYXJ5IHNlYXJjaCBiZXR3ZWVuIGxvIGFuZCBoaSBib3VuZHMu Cistd2hpbGUgdGVzdCAieCRhY19sbyIgIT0gIngkYWNfaGkiOyBkbworLSAgYXNfZm5fYXJpdGgg JygnICRhY19oaSAtICRhY19sbyAnKScgLyAyICsgJGFjX2xvICYmIGFjX21pZD0kYXNfdmFsCist ICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNv bmZkZWZzLmguICAqLworLSQ0CistaW50CistbWFpbiAodm9pZCkKKy17Cistc3RhdGljIGludCB0 ZXN0X2FycmF5IFsxIC0gMiAqICEoKCQyKSA8PSAkYWNfbWlkKV07CistdGVzdF9hcnJheSBbMF0g PSAwOworLXJldHVybiB0ZXN0X2FycmF5IFswXTsKKy0KKy0gIDsKKy0gIHJldHVybiAwOworLX0K Ky1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRoZW4gOgorLSAg YWNfaGk9JGFjX21pZAorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhc19mbl9hcml0aCAnKCcg JGFjX21pZCAnKScgKyAxICYmIGFjX2xvPSRhc192YWwgOzsKKy1lc2FjCistZmkKKy1ybSAtZiBj b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRl c3QuJGFjX2V4dAorLWRvbmUKKy1jYXNlICRhY19sbyBpbiAjKCgKKy0/KikgZXZhbCAiJDM9XCRh Y19sbyI7IGFjX3JldHZhbD0wIDs7CistJycpIGFjX3JldHZhbD0xIDs7CistZXNhYworLSAgZWxz ZQorLSAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyog ZW5kIGNvbmZkZWZzLmguICAqLworLSQ0Cistc3RhdGljIGxvbmcgaW50IGxvbmd2YWwgKHZvaWQp IHsgcmV0dXJuICQyOyB9Cistc3RhdGljIHVuc2lnbmVkIGxvbmcgaW50IHVsb25ndmFsICh2b2lk KSB7IHJldHVybiAkMjsgfQorLSNpbmNsdWRlIDxzdGRpby5oPgorLSNpbmNsdWRlIDxzdGRsaWIu aD4KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy0KKy0gIEZJTEUgKmYgPSBmb3BlbiAoImNvbmZ0 ZXN0LnZhbCIsICJ3Iik7CistICBpZiAoISBmKQorLSAgICByZXR1cm4gMTsKKy0gIGlmICgoJDIp IDwgMCkKKy0gICAgeworLSAgICAgIGxvbmcgaW50IGkgPSBsb25ndmFsICgpOworLSAgICAgIGlm IChpICE9ICgkMikpCistCXJldHVybiAxOworLSAgICAgIGZwcmludGYgKGYsICIlbGQiLCBpKTsK Ky0gICAgfQorLSAgZWxzZQorLSAgICB7CistICAgICAgdW5zaWduZWQgbG9uZyBpbnQgaSA9IHVs b25ndmFsICgpOworLSAgICAgIGlmIChpICE9ICgkMikpCistCXJldHVybiAxOworLSAgICAgIGZw cmludGYgKGYsICIlbHUiLCBpKTsKKy0gICAgfQorLSAgLyogRG8gbm90IG91dHB1dCBhIHRyYWls aW5nIG5ld2xpbmUsIGFzIHRoaXMgY2F1c2VzIFxyXG4gY29uZnVzaW9uCistICAgICBvbiBzb21l IHBsYXRmb3Jtcy4gICovCistICByZXR1cm4gZmVycm9yIChmKSB8fCBmY2xvc2UgKGYpICE9IDA7 CistCistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfcnVu ICIkTElORU5PIgorLXRoZW4gOgorLSAgZWNobyA+PmNvbmZ0ZXN0LnZhbDsgcmVhZCAkMyA8Y29u ZnRlc3QudmFsOyBhY19yZXR2YWw9MAorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19yZXR2 YWw9MSA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBn bW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKy0gIGNvbmZ0ZXN0LiRhY19vYmpl eHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0Cistcm0gLWYgY29uZnRlc3QudmFsCist CistICBmaQorLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0g dW5zZXQgYXNfbGluZW5vCistICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKKy0KKy19ICMg YWNfZm5fY19jb21wdXRlX2ludAorLQorLSMgYWNfZm5fY19jaGVja19tZW1iZXIgTElORU5PIEFH R1IgTUVNQkVSIFZBUiBJTkNMVURFUworLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLSMgVHJpZXMgdG8gZmluZCBpZiB0aGUgZmllbGQgTUVN QkVSIGV4aXN0cyBpbiB0eXBlIEFHR1IsIGFmdGVyIGluY2x1ZGluZworLSMgSU5DTFVERVMsIHNl dHRpbmcgY2FjaGUgdmFyaWFibGUgVkFSIGFjY29yZGluZ2x5LgorLWFjX2ZuX2NfY2hlY2tfbWVt YmVyICgpCisteworLSAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFj az1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworLSAgeyBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMi4kMyIgPiY1CistcHJp bnRmICVzICJjaGVja2luZyBmb3IgJDIuJDMuLi4gIiA+JjY7IH0KKy1pZiBldmFsIHRlc3QgXCR7 JDQreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2Ug ZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4 dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0kNQorLWludAorLW1haW4gKHZvaWQpCistewor LXN0YXRpYyAkMiBhY19hZ2dyOworLWlmIChhY19hZ2dyLiQzKQorLXJldHVybiAwOworLSAgOwor LSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5F Tk8iCistdGhlbiA6CistICBldmFsICIkND15ZXMiCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUp IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29u ZmRlZnMuaC4gICovCistJDUKKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1zdGF0aWMgJDIgYWNf YWdncjsKKy1pZiAoc2l6ZW9mIGFjX2FnZ3IuJDMpCistcmV0dXJuIDA7CistICA7CistICByZXR1 cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10 aGVuIDoKKy0gIGV2YWwgIiQ0PXllcyIKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgZXZhbCAi JDQ9bm8iIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3Qu JGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkK Ky1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJl YW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLWV2YWwgYWNfcmVzPVwkJDQKKy0J ICAgICAgIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6ICRhY19yZXMiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19yZXMiID4mNjsgfQorLSAgZXZh bCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5v CistCistfSAjIGFjX2ZuX2NfY2hlY2tfbWVtYmVyCistYWNfY29uZmlndXJlX2FyZ3NfcmF3PQor LWZvciBhY19hcmcKKy1kbworLSAgY2FzZSAkYWNfYXJnIGluCistICAqXCcqKQorLSAgICBhY19h cmc9YHByaW50ZiAiJXNcbiIgIiRhY19hcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7 CistICBlc2FjCistICBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJlX2FyZ3NfcmF3ICIgJyRhY19h cmcnIgorLWRvbmUKKy0KKy1jYXNlICRhY19jb25maWd1cmVfYXJnc19yYXcgaW4KKy0gICokYXNf bmwqKQorLSAgICBhY19zYWZlX3VucXVvdGU9IDs7CistICAqKQorLSAgICBhY191bnNhZmVfej0n fCY7PD4oKSRgXFwiKj9bICcnCScgIyBUaGlzIHN0cmluZyBlbmRzIGluIHNwYWNlLCB0YWIuCist ICAgIGFjX3Vuc2FmZV9hPSIkYWNfdW5zYWZlX3ojfiIKKy0gICAgYWNfc2FmZV91bnF1b3RlPSJz LyAnXFwoW14kYWNfdW5zYWZlX2FdW14kYWNfdW5zYWZlX3pdKlxcKScvIFxcMS9nIgorLSAgICBh Y19jb25maWd1cmVfYXJnc19yYXc9YCAgICAgIHByaW50ZiAiJXNcbiIgIiRhY19jb25maWd1cmVf YXJnc19yYXciIHwgc2VkICIkYWNfc2FmZV91bnF1b3RlImA7OworLWVzYWMKKy0KKy1jYXQgPmNv bmZpZy5sb2cgPDxfQUNFT0YKKy1UaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1 Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQorLXJ1bm5pbmcgY29uZmlndXJlLCB0byBhaWQgZGVidWdn aW5nIGlmIGNvbmZpZ3VyZSBtYWtlcyBhIG1pc3Rha2UuCistCistSXQgd2FzIGNyZWF0ZWQgYnkg YmFzaCAkYXNfbWUgNS4zLXJjMiwgd2hpY2ggd2FzCistZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29u ZiAyLjcyLiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCistCistICAkICQwJGFjX2NvbmZp Z3VyZV9hcmdzX3JhdworLQorLV9BQ0VPRgorLWV4ZWMgNT4+Y29uZmlnLmxvZworLXsKKy1jYXQg PDxfQVNVTkFNRQorLSMjIC0tLS0tLS0tLSAjIworLSMjIFBsYXRmb3JtLiAjIworLSMjIC0tLS0t LS0tLSAjIworLQorLWhvc3RuYW1lID0gYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251 bGwgfCBzZWQgMXFgCistdW5hbWUgLW0gPSBgKHVuYW1lIC1tKSAyPi9kZXYvbnVsbCB8fCBlY2hv IHVua25vd25gCistdW5hbWUgLXIgPSBgKHVuYW1lIC1yKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVu a25vd25gCistdW5hbWUgLXMgPSBgKHVuYW1lIC1zKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25v d25gCistdW5hbWUgLXYgPSBgKHVuYW1lIC12KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25g CistCistL3Vzci9iaW4vdW5hbWUgLXAgPSBgKC91c3IvYmluL3VuYW1lIC1wKSAyPi9kZXYvbnVs bCB8fCBlY2hvIHVua25vd25gCistL2Jpbi91bmFtZSAtWCAgICAgPSBgKC9iaW4vdW5hbWUgLVgp IDI+L2Rldi9udWxsICAgICB8fCBlY2hvIHVua25vd25gCistCistL2Jpbi9hcmNoICAgICAgICAg ICAgICA9IGAoL2Jpbi9hcmNoKSAyPi9kZXYvbnVsbCAgICAgICAgICAgICAgfHwgZWNobyB1bmtu b3duYAorLS91c3IvYmluL2FyY2ggLWsgICAgICAgPSBgKC91c3IvYmluL2FyY2ggLWspIDI+L2Rl di9udWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy0vdXNyL2NvbnZleC9nZXRzeXNpbmZvID0g YCgvdXNyL2NvbnZleC9nZXRzeXNpbmZvKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCist L3Vzci9iaW4vaG9zdGluZm8gICAgICA9IGAoL3Vzci9iaW4vaG9zdGluZm8pIDI+L2Rldi9udWxs ICAgICAgfHwgZWNobyB1bmtub3duYAorLS9iaW4vbWFjaGluZSAgICAgICAgICAgPSBgKC9iaW4v bWFjaGluZSkgMj4vZGV2L251bGwgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy0vdXNyL2Jp bi9vc2xldmVsICAgICAgID0gYCgvdXNyL2Jpbi9vc2xldmVsKSAyPi9kZXYvbnVsbCAgICAgICB8 fCBlY2hvIHVua25vd25gCistL2Jpbi91bml2ZXJzZSAgICAgICAgICA9IGAoL2Jpbi91bml2ZXJz ZSkgMj4vZGV2L251bGwgICAgICAgICAgfHwgZWNobyB1bmtub3duYAorLQorLV9BU1VOQU1FCist CistYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorLWZvciBhc19kaXIgaW4g JFBBVEgKKy1kbworLSAgSUZTPSRhc19zYXZlX0lGUworLSAgY2FzZSAkYXNfZGlyIGluICMoKCgK Ky0gICAgJycpIGFzX2Rpcj0uLyA7OworLSAgICAqLykgOzsKKy0gICAgKikgYXNfZGlyPSRhc19k aXIvIDs7CistICBlc2FjCistICAgIHByaW50ZiAiJXNcbiIgIlBBVEg6ICRhc19kaXIiCistICBk b25lCistSUZTPSRhc19zYXZlX0lGUworLQorLX0gPiY1CistCistY2F0ID4mNSA8PF9BQ0VPRgor LQorLQorLSMjIC0tLS0tLS0tLS0tICMjCistIyMgQ29yZSB0ZXN0cy4gIyMKKy0jIyAtLS0tLS0t LS0tLSAjIworLQorLV9BQ0VPRgorLQorLQorLSMgS2VlcCBhIHRyYWNlIG9mIHRoZSBjb21tYW5k IGxpbmUuCistIyBTdHJpcCBvdXQgLS1uby1jcmVhdGUgYW5kIC0tbm8tcmVjdXJzaW9uIHNvIHRo ZXkgZG8gbm90IHBpbGUgdXAuCistIyBTdHJpcCBvdXQgLS1zaWxlbnQgYmVjYXVzZSB3ZSBkb24n dCB3YW50IHRvIHJlY29yZCBpdCBmb3IgZnV0dXJlIHJ1bnMuCistIyBBbHNvIHF1b3RlIGFueSBh cmdzIGNvbnRhaW5pbmcgc2hlbGwgbWV0YS1jaGFyYWN0ZXJzLgorLSMgTWFrZSB0d28gcGFzc2Vz IHRvIGFsbG93IGZvciBwcm9wZXIgZHVwbGljYXRlLWFyZ3VtZW50IHN1cHByZXNzaW9uLgorLWFj X2NvbmZpZ3VyZV9hcmdzPQorLWFjX2NvbmZpZ3VyZV9hcmdzMD0KKy1hY19jb25maWd1cmVfYXJn czE9CistYWNfbXVzdF9rZWVwX25leHQ9ZmFsc2UKKy1mb3IgYWNfcGFzcyBpbiAxIDIKKy1kbwor LSAgZm9yIGFjX2FyZworLSAgZG8KKy0gICAgY2FzZSAkYWNfYXJnIGluCistICAgIC1uby1jcmVh dGUgfCAtLW5vLWMqIHwgLW4gfCAtbm8tcmVjdXJzaW9uIHwgLS1uby1yKikgY29udGludWUgOzsK Ky0gICAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1x IFwKKy0gICAgfCAtc2lsZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwp CistICAgICAgY29udGludWUgOzsKKy0gICAgKlwnKikKKy0gICAgICBhY19hcmc9YHByaW50ZiAi JXNcbiIgIiRhY19hcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7CistICAgIGVzYWMK Ky0gICAgY2FzZSAkYWNfcGFzcyBpbgorLSAgICAxKSBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJl X2FyZ3MwICIgJyRhY19hcmcnIiA7OworLSAgICAyKQorLSAgICAgIGFzX2ZuX2FwcGVuZCBhY19j b25maWd1cmVfYXJnczEgIiAnJGFjX2FyZyciCistICAgICAgaWYgdGVzdCAkYWNfbXVzdF9rZWVw X25leHQgPSB0cnVlOyB0aGVuCistCWFjX211c3Rfa2VlcF9uZXh0PWZhbHNlICMgR290IHZhbHVl LCBiYWNrIHRvIG5vcm1hbC4KKy0gICAgICBlbHNlCistCWNhc2UgJGFjX2FyZyBpbgorLQkgICo9 KiB8IC0tY29uZmlnLWNhY2hlIHwgLUMgfCAtZGlzYWJsZS0qIHwgLS1kaXNhYmxlLSogXAorLQkg IHwgLWVuYWJsZS0qIHwgLS1lbmFibGUtKiB8IC1nYXMgfCAtLWcqIHwgLW5mcCB8IC0tbmYqIFwK Ky0JICB8IC1xIHwgLXF1aWV0IHwgLS1xKiB8IC1zaWxlbnQgfCAtLXNpbCogfCAtdiB8IC12ZXJi KiBcCistCSAgfCAtd2l0aC0qIHwgLS13aXRoLSogfCAtd2l0aG91dC0qIHwgLS13aXRob3V0LSog fCAtLXgpCistCSAgICBjYXNlICIkYWNfY29uZmlndXJlX2FyZ3MwICIgaW4KKy0JICAgICAgIiRh Y19jb25maWd1cmVfYXJnczEiKiIgJyRhY19hcmcnICIqICkgY29udGludWUgOzsKKy0JICAgIGVz YWMKKy0JICAgIDs7CistCSAgLSogKSBhY19tdXN0X2tlZXBfbmV4dD10cnVlIDs7CistCWVzYWMK Ky0gICAgICBmaQorLSAgICAgIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJncyAiICckYWNf YXJnJyIKKy0gICAgICA7OworLSAgICBlc2FjCistICBkb25lCistZG9uZQorLXsgYWNfY29uZmln dXJlX2FyZ3MwPTsgdW5zZXQgYWNfY29uZmlndXJlX2FyZ3MwO30KKy17IGFjX2NvbmZpZ3VyZV9h cmdzMT07IHVuc2V0IGFjX2NvbmZpZ3VyZV9hcmdzMTt9CistCistIyBXaGVuIGludGVycnVwdGVk IG9yIGV4aXQnZCwgY2xlYW51cCB0ZW1wb3JhcnkgZmlsZXMsIGFuZCBjb21wbGV0ZQorLSMgY29u ZmlnLmxvZy4gIFdlIHJlbW92ZSBjb21tZW50cyBiZWNhdXNlIGFueXdheSB0aGUgcXVvdGVzIGlu IHRoZXJlCistIyB3b3VsZCBjYXVzZSBwcm9ibGVtcyBvciBsb29rIHVnbHkuCistIyBXQVJOSU5H OiBVc2UgJ1wnJyB0byByZXByZXNlbnQgYW4gYXBvc3Ryb3BoZSB3aXRoaW4gdGhlIHRyYXAuCist IyBXQVJOSU5HOiBEbyBub3Qgc3RhcnQgdGhlIHRyYXAgY29kZSB3aXRoIGEgbmV3bGluZSwgZHVl IHRvIGEgRnJlZUJTRCA0LjAgYnVnLgorLXRyYXAgJ2V4aXRfc3RhdHVzPSQ/CistICAjIFNhbml0 aXplIElGUy4KKy0gIElGUz0iICIiCSRhc19ubCIKKy0gICMgU2F2ZSBpbnRvIGNvbmZpZy5sb2cg c29tZSBpbmZvcm1hdGlvbiB0aGF0IG1pZ2h0IGhlbHAgaW4gZGVidWdnaW5nLgorLSAgeworLSAg ICBlY2hvCistCistICAgIHByaW50ZiAiJXNcbiIgIiMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKKy0j IyBDYWNoZSB2YXJpYWJsZXMuICMjCistIyMgLS0tLS0tLS0tLS0tLS0tLSAjIyIKKy0gICAgZWNo bworLSAgICAjIFRoZSBmb2xsb3dpbmcgd2F5IG9mIHdyaXRpbmcgdGhlIGNhY2hlIG1pc2hhbmRs ZXMgbmV3bGluZXMgaW4gdmFsdWVzLAorLSgKKy0gIGZvciBhY192YXIgaW4gYChzZXQpIDI+JjEg fCBzZWQgLW4gJ1wnJ3MvXlwoW2EtekEtWl9dW2EtekEtWjAtOV9dKlwpPS4qL1wxL3AnXCcnYDsg ZG8KKy0gICAgZXZhbCBhY192YWw9XCQkYWNfdmFyCistICAgIGNhc2UgJGFjX3ZhbCBpbiAjKAor LSAgICAqJHthc19ubH0qKQorLSAgICAgIGNhc2UgJGFjX3ZhciBpbiAjKAorLSAgICAgICpfY3Zf KikgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6 IGNhY2hlIHZhcmlhYmxlICRhY192YXIgY29udGFpbnMgYSBuZXdsaW5lIiA+JjUKKy1wcmludGYg IiVzXG4iICIkYXNfbWU6IFdBUk5JTkc6IGNhY2hlIHZhcmlhYmxlICRhY192YXIgY29udGFpbnMg YSBuZXdsaW5lIiA+JjI7fSA7OworLSAgICAgIGVzYWMKKy0gICAgICBjYXNlICRhY192YXIgaW4g IygKKy0gICAgICBfIHwgSUZTIHwgYXNfbmwpIDs7ICMoCistICAgICAgQkFTSF9BUkdWIHwgQkFT SF9TT1VSQ0UpIGV2YWwgJGFjX3Zhcj0gOzsgIygKKy0gICAgICAqKSB7IGV2YWwgJGFjX3Zhcj07 IHVuc2V0ICRhY192YXI7fSA7OworLSAgICAgIGVzYWMgOzsKKy0gICAgZXNhYworLSAgZG9uZQor LSAgKHNldCkgMj4mMSB8CistICAgIGNhc2UgJGFzX25sYChhY19zcGFjZT0nXCcnICdcJyc7IHNl dCkgMj4mMWAgaW4gIygKKy0gICAgKiR7YXNfbmx9YWNfc3BhY2U9XCAqKQorLSAgICAgIHNlZCAt biBcCistCSJzLydcJycvJ1wnJ1xcXFwnXCcnJ1wnJy9nOworLQkgIHMvXlxcKFtfJGFzX2NyX2Fs bnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9cXDE9J1wnJ1xcMidcJycvcCIK Ky0gICAgICA7OyAjKAorLSAgICAqKQorLSAgICAgIHNlZCAtbiAiL15bXyRhc19jcl9hbG51bV0q X2N2X1tfJGFzX2NyX2FsbnVtXSo9L3AiCistICAgICAgOzsKKy0gICAgZXNhYyB8CistICAgIHNv cnQKKy0pCistICAgIGVjaG8KKy0KKy0gICAgcHJpbnRmICIlc1xuIiAiIyMgLS0tLS0tLS0tLS0t LS0tLS0gIyMKKy0jIyBPdXRwdXQgdmFyaWFibGVzLiAjIworLSMjIC0tLS0tLS0tLS0tLS0tLS0t ICMjIgorLSAgICBlY2hvCistICAgIGZvciBhY192YXIgaW4gJGFjX3N1YnN0X3ZhcnMKKy0gICAg ZG8KKy0gICAgICBldmFsIGFjX3ZhbD1cJCRhY192YXIKKy0gICAgICBjYXNlICRhY192YWwgaW4K Ky0gICAgICAqXCdcJycqKSBhY192YWw9YHByaW50ZiAiJXNcbiIgIiRhY192YWwiIHwgc2VkICJz LydcJycvJ1wnJ1xcXFxcXFxcJ1wnJydcJycvZyJgOzsKKy0gICAgICBlc2FjCistICAgICAgcHJp bnRmICIlc1xuIiAiJGFjX3Zhcj0nXCcnJGFjX3ZhbCdcJyciCistICAgIGRvbmUgfCBzb3J0Cist ICAgIGVjaG8KKy0KKy0gICAgaWYgdGVzdCAtbiAiJGFjX3N1YnN0X2ZpbGVzIjsgdGhlbgorLSAg ICAgIHByaW50ZiAiJXNcbiIgIiMjIC0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKy0jIyBGaWxlIHN1 YnN0aXR1dGlvbnMuICMjCistIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIyIKKy0gICAgICBlY2hv CistICAgICAgZm9yIGFjX3ZhciBpbiAkYWNfc3Vic3RfZmlsZXMKKy0gICAgICBkbworLQlldmFs IGFjX3ZhbD1cJCRhY192YXIKKy0JY2FzZSAkYWNfdmFsIGluCistCSpcJ1wnJyopIGFjX3ZhbD1g cHJpbnRmICIlc1xuIiAiJGFjX3ZhbCIgfCBzZWQgInMvJ1wnJy8nXCcnXFxcXFxcXFwnXCcnJ1wn Jy9nImA7OworLQllc2FjCistCXByaW50ZiAiJXNcbiIgIiRhY192YXI9J1wnJyRhY192YWwnXCcn IgorLSAgICAgIGRvbmUgfCBzb3J0CistICAgICAgZWNobworLSAgICBmaQorLQorLSAgICBpZiB0 ZXN0IC1zIGNvbmZkZWZzLmg7IHRoZW4KKy0gICAgICBwcmludGYgIiVzXG4iICIjIyAtLS0tLS0t LS0tLSAjIworLSMjIGNvbmZkZWZzLmguICMjCistIyMgLS0tLS0tLS0tLS0gIyMiCistICAgICAg ZWNobworLSAgICAgIGNhdCBjb25mZGVmcy5oCistICAgICAgZWNobworLSAgICBmaQorLSAgICB0 ZXN0ICIkYWNfc2lnbmFsIiAhPSAwICYmCistICAgICAgcHJpbnRmICIlc1xuIiAiJGFzX21lOiBj YXVnaHQgc2lnbmFsICRhY19zaWduYWwiCistICAgIHByaW50ZiAiJXNcbiIgIiRhc19tZTogZXhp dCAkZXhpdF9zdGF0dXMiCistICB9ID4mNQorLSAgcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25m dGVzdC4qICYmCistICAgIHJtIC1mIC1yIGNvbmZ0ZXN0KiBjb25mZGVmcyogY29uZiQkKiAkYWNf Y2xlYW5fZmlsZXMgJiYKKy0gICAgZXhpdCAkZXhpdF9zdGF0dXMKKy0nIDAKKy1mb3IgYWNfc2ln bmFsIGluIDEgMiAxMyAxNTsgZG8KKy0gIHRyYXAgJ2FjX3NpZ25hbD0nJGFjX3NpZ25hbCc7IGFz X2ZuX2V4aXQgMScgJGFjX3NpZ25hbAorLWRvbmUKKy1hY19zaWduYWw9MAorLQorLSMgY29uZmRl ZnMuaCBhdm9pZHMgT1MgY29tbWFuZCBsaW5lIGxlbmd0aCBsaW1pdHMgdGhhdCBERUZTIGNhbiBl eGNlZWQuCistcm0gLWYgLXIgY29uZnRlc3QqIGNvbmZkZWZzLmgKKy0KKy1wcmludGYgIiVzXG4i ICIvKiBjb25mZGVmcy5oICovIiA+IGNvbmZkZWZzLmgKKy0KKy0jIFByZWRlZmluZWQgcHJlcHJv Y2Vzc29yIHZhcmlhYmxlcy4KKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIFBBQ0tBR0VfTkFN RSBcIiRQQUNLQUdFX05BTUVcIiIgPj5jb25mZGVmcy5oCistCistcHJpbnRmICIlc1xuIiAiI2Rl ZmluZSBQQUNLQUdFX1RBUk5BTUUgXCIkUEFDS0FHRV9UQVJOQU1FXCIiID4+Y29uZmRlZnMuaAor LQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OIFwiJFBBQ0tBR0VfVkVS U0lPTlwiIiA+PmNvbmZkZWZzLmgKKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIFBBQ0tBR0Vf U1RSSU5HIFwiJFBBQ0tBR0VfU1RSSU5HXCIiID4+Y29uZmRlZnMuaAorLQorLXByaW50ZiAiJXNc biIgIiNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgXCIkUEFDS0FHRV9CVUdSRVBPUlRcIiIgPj5j b25mZGVmcy5oCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBQQUNLQUdFX1VSTCBcIiRQQUNL QUdFX1VSTFwiIiA+PmNvbmZkZWZzLmgKKy0KKy0KKy0jIExldCB0aGUgc2l0ZSBmaWxlIHNlbGVj dCBhbiBhbHRlcm5hdGUgY2FjaGUgZmlsZSBpZiBpdCB3YW50cyB0by4KKy0jIFByZWZlciBhbiBl eHBsaWNpdGx5IHNlbGVjdGVkIGZpbGUgdG8gYXV0b21hdGljYWxseSBzZWxlY3RlZCBvbmVzLgor LWlmIHRlc3QgLW4gIiRDT05GSUdfU0lURSI7IHRoZW4KKy0gIGFjX3NpdGVfZmlsZXM9IiRDT05G SUdfU0lURSIKKy1lbGlmIHRlc3QgIngkcHJlZml4IiAhPSB4Tk9ORTsgdGhlbgorLSAgYWNfc2l0 ZV9maWxlcz0iJHByZWZpeC9zaGFyZS9jb25maWcuc2l0ZSAkcHJlZml4L2V0Yy9jb25maWcuc2l0 ZSIKKy1lbHNlCistICBhY19zaXRlX2ZpbGVzPSIkYWNfZGVmYXVsdF9wcmVmaXgvc2hhcmUvY29u ZmlnLnNpdGUgJGFjX2RlZmF1bHRfcHJlZml4L2V0Yy9jb25maWcuc2l0ZSIKKy1maQorLQorLWZv ciBhY19zaXRlX2ZpbGUgaW4gJGFjX3NpdGVfZmlsZXMKKy1kbworLSAgY2FzZSAkYWNfc2l0ZV9m aWxlIGluICMoCistICAqLyopIDoKKy0gICAgIDs7ICMoCistICAqKSA6CistICAgIGFjX3NpdGVf ZmlsZT0uLyRhY19zaXRlX2ZpbGUgOzsKKy1lc2FjCistICBpZiB0ZXN0IC1mICIkYWNfc2l0ZV9m aWxlIiAmJiB0ZXN0IC1yICIkYWNfc2l0ZV9maWxlIjsgdGhlbgorLSAgICB7IHByaW50ZiAiJXNc biIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogbG9hZGluZyBzaXRlIHNjcmlwdCAkYWNf c2l0ZV9maWxlIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IGxvYWRpbmcgc2l0ZSBzY3Jp cHQgJGFjX3NpdGVfZmlsZSIgPiY2O30KKy0gICAgc2VkICdzL14vfCAvJyAiJGFjX3NpdGVfZmls ZSIgPiY1CistICAgIC4gIiRhY19zaXRlX2ZpbGUiIFwKKy0gICAgICB8fCB7IHsgcHJpbnRmICIl c1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gJyRhY19wd2QnOiIg PiY1CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiBlcnJvcjogaW4gJyRhY19wd2QnOiIgPiYyO30K Ky1hc19mbl9lcnJvciAkPyAiZmFpbGVkIHRvIGxvYWQgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmls ZQorLVNlZSAnY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KKy0g IGZpCistZG9uZQorLQorLWlmIHRlc3QgLXIgIiRjYWNoZV9maWxlIjsgdGhlbgorLSAgIyBTb21l IHZlcnNpb25zIG9mIGJhc2ggd2lsbCBmYWlsIHRvIHNvdXJjZSAvZGV2L251bGwgKHNwZWNpYWwg ZmlsZXMKKy0gICMgYWN0dWFsbHkpLCBzbyB3ZSBhdm9pZCBkb2luZyB0aGF0LiAgREpHUFAgZW11 bGF0ZXMgaXQgYXMgYSByZWd1bGFyIGZpbGUuCistICBpZiB0ZXN0IC9kZXYvbnVsbCAhPSAiJGNh Y2hlX2ZpbGUiICYmIHRlc3QgLWYgIiRjYWNoZV9maWxlIjsgdGhlbgorLSAgICB7IHByaW50ZiAi JXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogbG9hZGluZyBjYWNoZSAkY2FjaGVf ZmlsZSIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiBsb2FkaW5nIGNhY2hlICRjYWNoZV9m aWxlIiA+JjY7fQorLSAgICBjYXNlICRjYWNoZV9maWxlIGluCistICAgICAgW1xcL10qIHwgPzpb XFwvXSogKSAuICIkY2FjaGVfZmlsZSI7OworLSAgICAgICopICAgICAgICAgICAgICAgICAgICAg IC4gIi4vJGNhY2hlX2ZpbGUiOzsKKy0gICAgZXNhYworLSAgZmkKKy1lbHNlCistICB7IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY3JlYXRpbmcgY2FjaGUgJGNh Y2hlX2ZpbGUiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogY3JlYXRpbmcgY2FjaGUgJGNh Y2hlX2ZpbGUiID4mNjt9CistICA+JGNhY2hlX2ZpbGUKKy1maQorLQorLSMgVGVzdCBjb2RlIGZv ciB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRzIEM4OSAoZ2xvYmFsIGRlY2xhcmF0aW9u cykKKy1hY19jX2NvbmZ0ZXN0X2M4OV9nbG9iYWxzPScKKy0vKiBEb2VzIHRoZSBjb21waWxlciBh ZHZlcnRpc2UgQzg5IGNvbmZvcm1hbmNlPworLSAgIERvIG5vdCB0ZXN0IHRoZSB2YWx1ZSBvZiBf X1NURENfXywgYmVjYXVzZSBzb21lIGNvbXBpbGVycyBzZXQgaXQgdG8gMAorLSAgIHdoaWxlIGJl aW5nIG90aGVyd2lzZSBhZGVxdWF0ZWx5IGNvbmZvcm1hbnQuICovCistI2lmICFkZWZpbmVkIF9f U1REQ19fCistIyBlcnJvciAiQ29tcGlsZXIgZG9lcyBub3QgYWR2ZXJ0aXNlIEM4OSBjb25mb3Jt YW5jZSIKKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSA8c3RkZGVmLmg+CistI2luY2x1ZGUgPHN0ZGFy Zy5oPgorLXN0cnVjdCBzdGF0OworLS8qIE1vc3Qgb2YgdGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUg c3RvbGVuIGZyb20gUkNTIDUuNyBzcmMvY29uZi5zaC4gICovCistc3RydWN0IGJ1ZiB7IGludCB4 OyB9OworLXN0cnVjdCBidWYgKiAoKnJjc29wZW4pIChzdHJ1Y3QgYnVmICosIHN0cnVjdCBzdGF0 ICosIGludCk7Cistc3RhdGljIGNoYXIgKmUgKGNoYXIgKipwLCBpbnQgaSkKKy17CistICByZXR1 cm4gcFtpXTsKKy19Cistc3RhdGljIGNoYXIgKmYgKGNoYXIgKiAoKmcpIChjaGFyICoqLCBpbnQp LCBjaGFyICoqcCwgLi4uKQorLXsKKy0gIGNoYXIgKnM7CistICB2YV9saXN0IHY7CistICB2YV9z dGFydCAodixwKTsKKy0gIHMgPSBnIChwLCB2YV9hcmcgKHYsaW50KSk7CistICB2YV9lbmQgKHYp OworLSAgcmV0dXJuIHM7CistfQorLQorLS8qIEM4OSBzdHlsZSBzdHJpbmdpZmljYXRpb24uICov CistI2RlZmluZSBub2V4cGFuZF9zdHJpbmdpZnkoYSkgI2EKKy1jb25zdCBjaGFyICpzdHJpbmdp ZmllZCA9IG5vZXhwYW5kX3N0cmluZ2lmeShhcmJpdHJhcnkrdG9rZW49c2VxdWVuY2UpOworLQor LS8qIEM4OSBzdHlsZSB0b2tlbiBwYXN0aW5nLiAgRXhlcmNpc2VzIHNvbWUgb2YgdGhlIGNvcm5l ciBjYXNlcyB0aGF0CistICAgZS5nLiBvbGQgTVNWQyBnZXRzIHdyb25nLCBidXQgbm90IHZlcnkg aGFyZC4gKi8KKy0jZGVmaW5lIG5vZXhwYW5kX2NvbmNhdChhLGIpIGEjI2IKKy0jZGVmaW5lIGV4 cGFuZF9jb25jYXQoYSxiKSBub2V4cGFuZF9jb25jYXQoYSxiKQorLWV4dGVybiBpbnQgdkE7Cist ZXh0ZXJuIGludCB2YmVlOworLSNkZWZpbmUgYXllIEEKKy0jZGVmaW5lIGJlZSBCCistaW50ICpw dkEgPSAmZXhwYW5kX2NvbmNhdCh2LGF5ZSk7CistaW50ICpwdmJlZSA9ICZub2V4cGFuZF9jb25j YXQodixiZWUpOworLQorLS8qIE9TRiA0LjAgQ29tcGFxIGNjIGlzIHNvbWUgc29ydCBvZiBhbG1v c3QtQU5TSSBieSBkZWZhdWx0LiAgSXQgaGFzCistICAgZnVuY3Rpb24gcHJvdG90eXBlcyBhbmQg c3R1ZmYsIGJ1dCBub3QgXHhISCBoZXggY2hhcmFjdGVyIGNvbnN0YW50cy4KKy0gICBUaGVzZSBk byBub3QgcHJvdm9rZSBhbiBlcnJvciB1bmZvcnR1bmF0ZWx5LCBpbnN0ZWFkIGFyZSBzaWxlbnRs eSB0cmVhdGVkCistICAgYXMgYW4gIngiLiAgVGhlIGZvbGxvd2luZyBpbmR1Y2VzIGFuIGVycm9y LCB1bnRpbCAtc3RkIGlzIGFkZGVkIHRvIGdldAorLSAgIHByb3BlciBBTlNJIG1vZGUuICBDdXJp b3VzbHkgXHgwMCAhPSB4IGFsd2F5cyBjb21lcyBvdXQgdHJ1ZSwgZm9yIGFuCistICAgYXJyYXkg c2l6ZSBhdCBsZWFzdC4gIEl0IGlzIG5lY2Vzc2FyeSB0byB3cml0ZSBceDAwID09IDAgdG8gZ2V0 IHNvbWV0aGluZworLSAgIHRoYXQgaXMgdHJ1ZSBvbmx5IHdpdGggLXN0ZC4gICovCistaW50IG9z ZjRfY2NfYXJyYXkgWydcJydceDAwJ1wnJyA9PSAwID8gMSA6IC0xXTsKKy0KKy0vKiBJQk0gQyA2 IGZvciBBSVggaXMgYWxtb3N0LUFOU0kgYnkgZGVmYXVsdCwgYnV0IGl0IHJlcGxhY2VzIG1hY3Jv IHBhcmFtZXRlcnMKKy0gICBpbnNpZGUgc3RyaW5ncyBhbmQgY2hhcmFjdGVyIGNvbnN0YW50cy4g ICovCistI2RlZmluZSBGT08oeCkgJ1wnJ3gnXCcnCistaW50IHhsYzZfY2NfYXJyYXlbRk9PKGEp ID09ICdcJyd4J1wnJyA/IDEgOiAtMV07CistCistaW50IHRlc3QgKGludCBpLCBkb3VibGUgeCk7 Cistc3RydWN0IHMxIHtpbnQgKCpmKSAoaW50IGEpO307Cistc3RydWN0IHMyIHtpbnQgKCpmKSAo ZG91YmxlIGEpO307CistaW50IHBhaXJuYW1lcyAoaW50LCBjaGFyICoqLCBpbnQgKigqKShzdHJ1 Y3QgYnVmICosIHN0cnVjdCBzdGF0ICosIGludCksCistICAgICAgICAgICAgICAgaW50LCBpbnQp OycKKy0KKy0jIFRlc3QgY29kZSBmb3Igd2hldGhlciB0aGUgQyBjb21waWxlciBzdXBwb3J0cyBD ODkgKGJvZHkgb2YgbWFpbikuCistYWNfY19jb25mdGVzdF9jODlfbWFpbj0nCistb2sgfD0gKGFy Z2MgPT0gMCB8fCBmIChlLCBhcmd2LCAwKSAhPSBhcmd2WzBdIHx8IGYgKGUsIGFyZ3YsIDEpICE9 IGFyZ3ZbMV0pOworLScKKy0KKy0jIFRlc3QgY29kZSBmb3Igd2hldGhlciB0aGUgQyBjb21waWxl ciBzdXBwb3J0cyBDOTkgKGdsb2JhbCBkZWNsYXJhdGlvbnMpCistYWNfY19jb25mdGVzdF9jOTlf Z2xvYmFscz0nCistLyogRG9lcyB0aGUgY29tcGlsZXIgYWR2ZXJ0aXNlIEM5OSBjb25mb3JtYW5j ZT8gKi8KKy0jaWYgIWRlZmluZWQgX19TVERDX1ZFUlNJT05fXyB8fCBfX1NURENfVkVSU0lPTl9f IDwgMTk5OTAxTAorLSMgZXJyb3IgIkNvbXBpbGVyIGRvZXMgbm90IGFkdmVydGlzZSBDOTkgY29u Zm9ybWFuY2UiCistI2VuZGlmCistCistLy8gU2VlIGlmIEMrKy1zdHlsZSBjb21tZW50cyB3b3Jr LgorLQorLSNpbmNsdWRlIDxzdGRib29sLmg+CistZXh0ZXJuIGludCBwdXRzIChjb25zdCBjaGFy ICopOworLWV4dGVybiBpbnQgcHJpbnRmIChjb25zdCBjaGFyICosIC4uLik7CistZXh0ZXJuIGlu dCBkcHJpbnRmIChpbnQsIGNvbnN0IGNoYXIgKiwgLi4uKTsKKy1leHRlcm4gdm9pZCAqbWFsbG9j IChzaXplX3QpOworLWV4dGVybiB2b2lkIGZyZWUgKHZvaWQgKik7CistCistLy8gQ2hlY2sgdmFy YXJncyBtYWNyb3MuICBUaGVzZSBleGFtcGxlcyBhcmUgdGFrZW4gZnJvbSBDOTkgNi4xMC4zLjUu CistLy8gZHByaW50ZiBpcyB1c2VkIGluc3RlYWQgb2YgZnByaW50ZiB0byBhdm9pZCBuZWVkaW5n IHRvIGRlY2xhcmUKKy0vLyBGSUxFIGFuZCBzdGRlcnIuCistI2RlZmluZSBkZWJ1ZyguLi4pIGRw cmludGYgKDIsIF9fVkFfQVJHU19fKQorLSNkZWZpbmUgc2hvd2xpc3QoLi4uKSBwdXRzICgjX19W QV9BUkdTX18pCistI2RlZmluZSByZXBvcnQodGVzdCwuLi4pICgodGVzdCkgPyBwdXRzICgjdGVz dCkgOiBwcmludGYgKF9fVkFfQVJHU19fKSkKKy1zdGF0aWMgdm9pZAorLXRlc3RfdmFyYXJnc19t YWNyb3MgKHZvaWQpCisteworLSAgaW50IHggPSAxMjM0OworLSAgaW50IHkgPSA1Njc4OworLSAg ZGVidWcgKCJGbGFnIik7CistICBkZWJ1ZyAoIlggPSAlZFxuIiwgeCk7CistICBzaG93bGlzdCAo VGhlIGZpcnN0LCBzZWNvbmQsIGFuZCB0aGlyZCBpdGVtcy4pOworLSAgcmVwb3J0ICh4PnksICJ4 IGlzICVkIGJ1dCB5IGlzICVkIiwgeCwgeSk7CistfQorLQorLS8vIENoZWNrIGxvbmcgbG9uZyB0 eXBlcy4KKy0jZGVmaW5lIEJJRzY0IDE4NDQ2NzQ0MDczNzA5NTUxNjE1dWxsCistI2RlZmluZSBC SUczMiA0Mjk0OTY3Mjk1dWwKKy0jZGVmaW5lIEJJR19PSyAoQklHNjQgLyBCSUczMiA9PSA0Mjk0 OTY3Mjk3dWxsICYmIEJJRzY0ICUgQklHMzIgPT0gMCkKKy0jaWYgIUJJR19PSworLSAgI2Vycm9y ICJ5b3VyIHByZXByb2Nlc3NvciBpcyBicm9rZW4iCistI2VuZGlmCistI2lmIEJJR19PSworLSNl bHNlCistICAjZXJyb3IgInlvdXIgcHJlcHJvY2Vzc29yIGlzIGJyb2tlbiIKKy0jZW5kaWYKKy1z dGF0aWMgbG9uZyBsb25nIGludCBiaWdudW0gPSAtOTIyMzM3MjAzNjg1NDc3NTgwN0xMOworLXN0 YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHViaWdudW0gPSBCSUc2NDsKKy0KKy1zdHJ1Y3Qg aW5jb21wbGV0ZV9hcnJheQorLXsKKy0gIGludCBkYXRhc2l6ZTsKKy0gIGRvdWJsZSBkYXRhW107 CistfTsKKy0KKy1zdHJ1Y3QgbmFtZWRfaW5pdCB7CistICBpbnQgbnVtYmVyOworLSAgY29uc3Qg d2NoYXJfdCAqbmFtZTsKKy0gIGRvdWJsZSBhdmVyYWdlOworLX07CistCistdHlwZWRlZiBjb25z dCBjaGFyICpjY3A7CistCistc3RhdGljIGlubGluZSBpbnQKKy10ZXN0X3Jlc3RyaWN0IChjY3Ag cmVzdHJpY3QgdGV4dCkKKy17CistICAvLyBJdGVyYXRlIHRocm91Z2ggaXRlbXMgdmlhIHRoZSBy ZXN0cmljdGVkIHBvaW50ZXIuCistICAvLyBBbHNvIGNoZWNrIGZvciBkZWNsYXJhdGlvbnMgaW4g Zm9yIGxvb3BzLgorLSAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7ICoodGV4dCtpKSAhPSAnXCcn XDAnXCcnOyArK2kpCistICAgIGNvbnRpbnVlOworLSAgcmV0dXJuIDA7CistfQorLQorLS8vIENo ZWNrIHZhcmFyZ3MgYW5kIHZhX2NvcHkuCistc3RhdGljIGJvb2wKKy10ZXN0X3ZhcmFyZ3MgKGNv bnN0IGNoYXIgKmZvcm1hdCwgLi4uKQorLXsKKy0gIHZhX2xpc3QgYXJnczsKKy0gIHZhX3N0YXJ0 IChhcmdzLCBmb3JtYXQpOworLSAgdmFfbGlzdCBhcmdzX2NvcHk7CistICB2YV9jb3B5IChhcmdz X2NvcHksIGFyZ3MpOworLQorLSAgY29uc3QgY2hhciAqc3RyID0gIiI7CistICBpbnQgbnVtYmVy ID0gMDsKKy0gIGZsb2F0IGZudW1iZXIgPSAwOworLQorLSAgd2hpbGUgKCpmb3JtYXQpCistICAg IHsKKy0gICAgICBzd2l0Y2ggKCpmb3JtYXQrKykKKy0JeworLQljYXNlICdcJydzJ1wnJzogLy8g c3RyaW5nCistCSAgc3RyID0gdmFfYXJnIChhcmdzX2NvcHksIGNvbnN0IGNoYXIgKik7CistCSAg YnJlYWs7CistCWNhc2UgJ1wnJ2QnXCcnOiAvLyBpbnQKKy0JICBudW1iZXIgPSB2YV9hcmcgKGFy Z3NfY29weSwgaW50KTsKKy0JICBicmVhazsKKy0JY2FzZSAnXCcnZidcJyc6IC8vIGZsb2F0Cist CSAgZm51bWJlciA9IHZhX2FyZyAoYXJnc19jb3B5LCBkb3VibGUpOworLQkgIGJyZWFrOworLQlk ZWZhdWx0OgorLQkgIGJyZWFrOworLQl9CistICAgIH0KKy0gIHZhX2VuZCAoYXJnc19jb3B5KTsK Ky0gIHZhX2VuZCAoYXJncyk7CistCistICByZXR1cm4gKnN0ciAmJiBudW1iZXIgJiYgZm51bWJl cjsKKy19CistJworLQorLSMgVGVzdCBjb2RlIGZvciB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHN1 cHBvcnRzIEM5OSAoYm9keSBvZiBtYWluKS4KKy1hY19jX2NvbmZ0ZXN0X2M5OV9tYWluPScKKy0g IC8vIENoZWNrIGJvb2wuCistICBfQm9vbCBzdWNjZXNzID0gZmFsc2U7CistICBzdWNjZXNzIHw9 IChhcmdjICE9IDApOworLQorLSAgLy8gQ2hlY2sgcmVzdHJpY3QuCistICBpZiAodGVzdF9yZXN0 cmljdCAoIlN0cmluZyBsaXRlcmFsIikgPT0gMCkKKy0gICAgc3VjY2VzcyA9IHRydWU7CistICBj aGFyICpyZXN0cmljdCBuZXd2YXIgPSAiQW5vdGhlciBzdHJpbmciOworLQorLSAgLy8gQ2hlY2sg dmFyYXJncy4KKy0gIHN1Y2Nlc3MgJj0gdGVzdF92YXJhcmdzICgicywgZCdcJycgZiAuIiwgInN0 cmluZyIsIDY1LCAzNC4yMzQpOworLSAgdGVzdF92YXJhcmdzX21hY3JvcyAoKTsKKy0KKy0gIC8v IENoZWNrIGZsZXhpYmxlIGFycmF5IG1lbWJlcnMuCistICBzdHJ1Y3QgaW5jb21wbGV0ZV9hcnJh eSAqaWEgPQorLSAgICBtYWxsb2MgKHNpemVvZiAoc3RydWN0IGluY29tcGxldGVfYXJyYXkpICsg KHNpemVvZiAoZG91YmxlKSAqIDEwKSk7CistICBpYS0+ZGF0YXNpemUgPSAxMDsKKy0gIGZvciAo aW50IGkgPSAwOyBpIDwgaWEtPmRhdGFzaXplOyArK2kpCistICAgIGlhLT5kYXRhW2ldID0gaSAq IDEuMjM0OworLSAgLy8gV29yayBhcm91bmQgbWVtb3J5IGxlYWsgd2FybmluZ3MuCistICBmcmVl IChpYSk7CistCistICAvLyBDaGVjayBuYW1lZCBpbml0aWFsaXplcnMuCistICBzdHJ1Y3QgbmFt ZWRfaW5pdCBuaSA9IHsKKy0gICAgLm51bWJlciA9IDM0LAorLSAgICAubmFtZSA9IEwiVGVzdCB3 aWRlIHN0cmluZyIsCistICAgIC5hdmVyYWdlID0gNTQzLjM0MzQzLAorLSAgfTsKKy0KKy0gIG5p Lm51bWJlciA9IDU4OworLQorLSAgaW50IGR5bmFtaWNfYXJyYXlbbmkubnVtYmVyXTsKKy0gIGR5 bmFtaWNfYXJyYXlbMF0gPSBhcmd2WzBdWzBdOworLSAgZHluYW1pY19hcnJheVtuaS5udW1iZXIg LSAxXSA9IDU0MzsKKy0KKy0gIC8vIHdvcmsgYXJvdW5kIHVudXNlZCB2YXJpYWJsZSB3YXJuaW5n cworLSAgb2sgfD0gKCFzdWNjZXNzIHx8IGJpZ251bSA9PSAwTEwgfHwgdWJpZ251bSA9PSAwdUxM IHx8IG5ld3ZhclswXSA9PSAnXCcneCdcJycKKy0JIHx8IGR5bmFtaWNfYXJyYXlbbmkubnVtYmVy IC0gMV0gIT0gNTQzKTsKKy0nCistCistIyBUZXN0IGNvZGUgZm9yIHdoZXRoZXIgdGhlIEMgY29t cGlsZXIgc3VwcG9ydHMgQzExIChnbG9iYWwgZGVjbGFyYXRpb25zKQorLWFjX2NfY29uZnRlc3Rf YzExX2dsb2JhbHM9JworLS8qIERvZXMgdGhlIGNvbXBpbGVyIGFkdmVydGlzZSBDMTEgY29uZm9y bWFuY2U/ICovCistI2lmICFkZWZpbmVkIF9fU1REQ19WRVJTSU9OX18gfHwgX19TVERDX1ZFUlNJ T05fXyA8IDIwMTExMkwKKy0jIGVycm9yICJDb21waWxlciBkb2VzIG5vdCBhZHZlcnRpc2UgQzEx IGNvbmZvcm1hbmNlIgorLSNlbmRpZgorLQorLS8vIENoZWNrIF9BbGlnbmFzLgorLWNoYXIgX0Fs aWduYXMgKGRvdWJsZSkgYWxpZ25lZF9hc19kb3VibGU7CistY2hhciBfQWxpZ25hcyAoMCkgbm9f c3BlY2lhbF9hbGlnbm1lbnQ7CistZXh0ZXJuIGNoYXIgYWxpZ25lZF9hc19pbnQ7CistY2hhciBf QWxpZ25hcyAoMCkgX0FsaWduYXMgKGludCkgYWxpZ25lZF9hc19pbnQ7CistCistLy8gQ2hlY2sg X0FsaWdub2YuCistZW51bQorLXsKKy0gIGludF9hbGlnbm1lbnQgPSBfQWxpZ25vZiAoaW50KSwK Ky0gIGludF9hcnJheV9hbGlnbm1lbnQgPSBfQWxpZ25vZiAoaW50WzEwMF0pLAorLSAgY2hhcl9h bGlnbm1lbnQgPSBfQWxpZ25vZiAoY2hhcikKKy19OworLV9TdGF0aWNfYXNzZXJ0ICgwIDwgLV9B bGlnbm9mIChpbnQpLCAiX0FsaWdub2YgaXMgc2lnbmVkIik7CistCistLy8gQ2hlY2sgX05vcmV0 dXJuLgorLWludCBfTm9yZXR1cm4gZG9lc19ub3RfcmV0dXJuICh2b2lkKSB7IGZvciAoOzspIGNv bnRpbnVlOyB9CistCistLy8gQ2hlY2sgX1N0YXRpY19hc3NlcnQuCistc3RydWN0IHRlc3Rfc3Rh dGljX2Fzc2VydAorLXsKKy0gIGludCB4OworLSAgX1N0YXRpY19hc3NlcnQgKHNpemVvZiAoaW50 KSA8PSBzaXplb2YgKGxvbmcgaW50KSwKKy0gICAgICAgICAgICAgICAgICAiX1N0YXRpY19hc3Nl cnQgZG9lcyBub3Qgd29yayBpbiBzdHJ1Y3QiKTsKKy0gIGxvbmcgaW50IHk7CistfTsKKy0KKy0v LyBDaGVjayBVVEYtOCBsaXRlcmFscy4KKy0jZGVmaW5lIHU4IHN5bnRheCBlcnJvciEKKy1jaGFy IGNvbnN0IHV0ZjhfbGl0ZXJhbFtdID0gdTgiaGFwcGVucyB0byBiZSBBU0NJSSIgImFub3RoZXIg c3RyaW5nIjsKKy0KKy0vLyBDaGVjayBkdXBsaWNhdGUgdHlwZWRlZnMuCistdHlwZWRlZiBsb25n ICpsb25nX3B0cjsKKy10eXBlZGVmIGxvbmcgaW50ICpsb25nX3B0cjsKKy10eXBlZGVmIGxvbmdf cHRyIGxvbmdfcHRyOworLQorLS8vIEFub255bW91cyBzdHJ1Y3R1cmVzIGFuZCB1bmlvbnMgLS0g dGFrZW4gZnJvbSBDMTEgNi43LjIuMSBFeGFtcGxlIDEuCistc3RydWN0IGFub255bW91cworLXsK Ky0gIHVuaW9uIHsKKy0gICAgc3RydWN0IHsgaW50IGk7IGludCBqOyB9OworLSAgICBzdHJ1Y3Qg eyBpbnQgazsgbG9uZyBpbnQgbDsgfSB3OworLSAgfTsKKy0gIGludCBtOworLX0gdjE7CistJwor LQorLSMgVGVzdCBjb2RlIGZvciB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRzIEMxMSAo Ym9keSBvZiBtYWluKS4KKy1hY19jX2NvbmZ0ZXN0X2MxMV9tYWluPScKKy0gIF9TdGF0aWNfYXNz ZXJ0ICgob2Zmc2V0b2YgKHN0cnVjdCBhbm9ueW1vdXMsIGkpCistCQkgICA9PSBvZmZzZXRvZiAo c3RydWN0IGFub255bW91cywgdy5rKSksCistCQkgICJBbm9ueW1vdXMgdW5pb24gYWxpZ25tZW50 IGJvdGNoIik7CistICB2MS5pID0gMjsKKy0gIHYxLncuayA9IDU7CistICBvayB8PSB2MS5pICE9 IDU7CistJworLQorLSMgVGVzdCBjb2RlIGZvciB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHN1cHBv cnRzIEMxMSAoY29tcGxldGUpLgorLWFjX2NfY29uZnRlc3RfYzExX3Byb2dyYW09IiR7YWNfY19j b25mdGVzdF9jODlfZ2xvYmFsc30KKy0ke2FjX2NfY29uZnRlc3RfYzk5X2dsb2JhbHN9CistJHth Y19jX2NvbmZ0ZXN0X2MxMV9nbG9iYWxzfQorLQorLWludAorLW1haW4gKGludCBhcmdjLCBjaGFy ICoqYXJndikKKy17CistICBpbnQgb2sgPSAwOworLSAgJHthY19jX2NvbmZ0ZXN0X2M4OV9tYWlu fQorLSAgJHthY19jX2NvbmZ0ZXN0X2M5OV9tYWlufQorLSAgJHthY19jX2NvbmZ0ZXN0X2MxMV9t YWlufQorLSAgcmV0dXJuIG9rOworLX0KKy0iCistCistIyBUZXN0IGNvZGUgZm9yIHdoZXRoZXIg dGhlIEMgY29tcGlsZXIgc3VwcG9ydHMgQzk5IChjb21wbGV0ZSkuCistYWNfY19jb25mdGVzdF9j OTlfcHJvZ3JhbT0iJHthY19jX2NvbmZ0ZXN0X2M4OV9nbG9iYWxzfQorLSR7YWNfY19jb25mdGVz dF9jOTlfZ2xvYmFsc30KKy0KKy1pbnQKKy1tYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCist eworLSAgaW50IG9rID0gMDsKKy0gICR7YWNfY19jb25mdGVzdF9jODlfbWFpbn0KKy0gICR7YWNf Y19jb25mdGVzdF9jOTlfbWFpbn0KKy0gIHJldHVybiBvazsKKy19CistIgorLQorLSMgVGVzdCBj b2RlIGZvciB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRzIEM4OSAoY29tcGxldGUpLgor LWFjX2NfY29uZnRlc3RfYzg5X3Byb2dyYW09IiR7YWNfY19jb25mdGVzdF9jODlfZ2xvYmFsc30K Ky0KKy1pbnQKKy1tYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisteworLSAgaW50IG9rID0g MDsKKy0gICR7YWNfY19jb25mdGVzdF9jODlfbWFpbn0KKy0gIHJldHVybiBvazsKKy19CistIgor LQorLWFzX2ZuX2FwcGVuZCBhY19oZWFkZXJfY19saXN0ICIgc3RkaW8uaCBzdGRpb19oIEhBVkVf U1RESU9fSCIKKy1hc19mbl9hcHBlbmQgYWNfaGVhZGVyX2NfbGlzdCAiIHN0ZGxpYi5oIHN0ZGxp Yl9oIEhBVkVfU1RETElCX0giCistYXNfZm5fYXBwZW5kIGFjX2hlYWRlcl9jX2xpc3QgIiBzdHJp bmcuaCBzdHJpbmdfaCBIQVZFX1NUUklOR19IIgorLWFzX2ZuX2FwcGVuZCBhY19oZWFkZXJfY19s aXN0ICIgaW50dHlwZXMuaCBpbnR0eXBlc19oIEhBVkVfSU5UVFlQRVNfSCIKKy1hc19mbl9hcHBl bmQgYWNfaGVhZGVyX2NfbGlzdCAiIHN0ZGludC5oIHN0ZGludF9oIEhBVkVfU1RESU5UX0giCist YXNfZm5fYXBwZW5kIGFjX2hlYWRlcl9jX2xpc3QgIiBzdHJpbmdzLmggc3RyaW5nc19oIEhBVkVf U1RSSU5HU19IIgorLWFzX2ZuX2FwcGVuZCBhY19oZWFkZXJfY19saXN0ICIgc3lzL3N0YXQuaCBz eXNfc3RhdF9oIEhBVkVfU1lTX1NUQVRfSCIKKy1hc19mbl9hcHBlbmQgYWNfaGVhZGVyX2NfbGlz dCAiIHN5cy90eXBlcy5oIHN5c190eXBlc19oIEhBVkVfU1lTX1RZUEVTX0giCistYXNfZm5fYXBw ZW5kIGFjX2hlYWRlcl9jX2xpc3QgIiB1bmlzdGQuaCB1bmlzdGRfaCBIQVZFX1VOSVNURF9IIgor LWFzX2ZuX2FwcGVuZCBhY19oZWFkZXJfY19saXN0ICIgd2NoYXIuaCB3Y2hhcl9oIEhBVkVfV0NI QVJfSCIKKy1hc19mbl9hcHBlbmQgYWNfaGVhZGVyX2NfbGlzdCAiIG1pbml4L2NvbmZpZy5oIG1p bml4X2NvbmZpZ19oIEhBVkVfTUlOSVhfQ09ORklHX0giCistYXNfZm5fYXBwZW5kIGFjX2hlYWRl cl9jX2xpc3QgIiBzdGRib29sLmggc3RkYm9vbF9oIEhBVkVfU1REQk9PTF9IIgorLWd0X25lZWRz PSIkZ3RfbmVlZHMgbmVlZC1uZ2V0dGV4dCIKKy1hc19mbl9hcHBlbmQgYWNfaGVhZGVyX2NfbGlz dCAiIHN5cy9wYXJhbS5oIHN5c19wYXJhbV9oIEhBVkVfU1lTX1BBUkFNX0giCistYXNfZm5fYXBw ZW5kIGFjX2Z1bmNfY19saXN0ICIgZ2V0cGFnZXNpemUgSEFWRV9HRVRQQUdFU0laRSIKKy1hc19m bl9hcHBlbmQgYWNfaGVhZGVyX2NfbGlzdCAiIHRocmVhZHMuaCB0aHJlYWRzX2ggSEFWRV9USFJF QURTX0giCistYXNfZm5fYXBwZW5kIGFjX2Z1bmNfY19saXN0ICIgc3ltbGluayBIQVZFX1NZTUxJ TksiCistYXNfZm5fYXBwZW5kIGFjX2Z1bmNfY19saXN0ICIgdXNlbG9jYWxlIEhBVkVfVVNFTE9D QUxFIgorLWFzX2ZuX2FwcGVuZCBhY19oZWFkZXJfY19saXN0ICIgeGxvY2FsZS5oIHhsb2NhbGVf aCBIQVZFX1hMT0NBTEVfSCIKKy1hc19mbl9hcHBlbmQgYWNfZnVuY19jX2xpc3QgIiB2cHJpbnRm IEhBVkVfVlBSSU5URiIKKy1hc19mbl9hcHBlbmQgYWNfaGVhZGVyX2NfbGlzdCAiIHN5cy90aW1l Lmggc3lzX3RpbWVfaCBIQVZFX1NZU19USU1FX0giCistYXNfZm5fYXBwZW5kIGFjX2Z1bmNfY19s aXN0ICIgYWxhcm0gSEFWRV9BTEFSTSIKKy1hc19mbl9hcHBlbmQgYWNfZnVuY19jX2xpc3QgIiBm cHVyZ2UgSEFWRV9GUFVSR0UiCistYXNfZm5fYXBwZW5kIGFjX2Z1bmNfY19saXN0ICIgX19mcHVy Z2UgSEFWRV9fX0ZQVVJHRSIKKy1hc19mbl9hcHBlbmQgYWNfZnVuY19jX2xpc3QgIiBzbnByaW50 ZiBIQVZFX1NOUFJJTlRGIgorLWFzX2ZuX2FwcGVuZCBhY19mdW5jX2NfbGlzdCAiIHZzbnByaW50 ZiBIQVZFX1ZTTlBSSU5URiIKKy0KKy0jIEF1eGlsaWFyeSBmaWxlcyByZXF1aXJlZCBieSB0aGlz IGNvbmZpZ3VyZSBzY3JpcHQuCistYWNfYXV4X2ZpbGVzPSJjb25maWcucnBhdGggaW5zdGFsbC1z aCBjb25maWcuZ3Vlc3MgY29uZmlnLnN1YiIKKy0KKy0jIExvY2F0aW9ucyBpbiB3aGljaCB0byBs b29rIGZvciBhdXhpbGlhcnkgZmlsZXMuCistYWNfYXV4X2Rpcl9jYW5kaWRhdGVzPSIke3NyY2Rp cn0vLi9zdXBwb3J0IgorLQorLSMgU2VhcmNoIGZvciBhIGRpcmVjdG9yeSBjb250YWluaW5nIGFs bCBvZiB0aGUgcmVxdWlyZWQgYXV4aWxpYXJ5IGZpbGVzLAorLSMgJGFjX2F1eF9maWxlcywgZnJv bSB0aGUgJFBBVEgtc3R5bGUgbGlzdCAkYWNfYXV4X2Rpcl9jYW5kaWRhdGVzLgorLSMgSWYgd2Ug ZG9uJ3QgZmluZCBvbmUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgYWxsIHRoZSBmaWxlcyB3ZSBu ZWVkLAorLSMgd2UgcmVwb3J0IHRoZSBzZXQgb2YgbWlzc2luZyBmaWxlcyBmcm9tIHRoZSAqZmly c3QqIGRpcmVjdG9yeSBpbgorLSMgJGFjX2F1eF9kaXJfY2FuZGlkYXRlcyBhbmQgZ2l2ZSB1cC4K Ky1hY19taXNzaW5nX2F1eF9maWxlcz0iIgorLWFjX2ZpcnN0X2NhbmRpZGF0ZT06CistcHJpbnRm ICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBsb29raW5nIGZvciBhdXggZmls ZXM6ICRhY19hdXhfZmlsZXMiID4mNQorLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBB UkFUT1IKKy1hc19mb3VuZD1mYWxzZQorLWZvciBhc19kaXIgaW4gJGFjX2F1eF9kaXJfY2FuZGlk YXRlcworLWRvCistICBJRlM9JGFzX3NhdmVfSUZTCistICBjYXNlICRhc19kaXIgaW4gIygoKAor LSAgICAnJykgYXNfZGlyPS4vIDs7CistICAgICovKSA7OworLSAgICAqKSBhc19kaXI9JGFzX2Rp ci8gOzsKKy0gIGVzYWMKKy0gIGFzX2ZvdW5kPToKKy0KKy0gIHByaW50ZiAiJXNcbiIgIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogIHRyeWluZyAkYXNfZGlyIiA+JjUKKy0gIGFjX2F1eF9k aXJfZm91bmQ9eWVzCistICBhY19pbnN0YWxsX3NoPQorLSAgZm9yIGFjX2F1eCBpbiAkYWNfYXV4 X2ZpbGVzCistICBkbworLSAgICAjIEFzIGEgc3BlY2lhbCBjYXNlLCBpZiAiaW5zdGFsbC1zaCIg aXMgcmVxdWlyZWQsIHRoYXQgcmVxdWlyZW1lbnQKKy0gICAgIyBjYW4gYmUgc2F0aXNmaWVkIGJ5 IGFueSBvZiAiaW5zdGFsbC1zaCIsICJpbnN0YWxsLnNoIiwgb3IgInNodG9vbCIsCistICAgICMg YW5kICRhY19pbnN0YWxsX3NoIGlzIHNldCBhcHByb3ByaWF0ZWx5IGZvciB3aGljaGV2ZXIgb25l IGlzIGZvdW5kLgorLSAgICBpZiB0ZXN0IHgiJGFjX2F1eCIgPSB4Imluc3RhbGwtc2giCistICAg IHRoZW4KKy0gICAgICBpZiB0ZXN0IC1mICIke2FzX2Rpcn1pbnN0YWxsLXNoIjsgdGhlbgorLSAg ICAgICAgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAgICR7YXNf ZGlyfWluc3RhbGwtc2ggZm91bmQiID4mNQorLSAgICAgICAgYWNfaW5zdGFsbF9zaD0iJHthc19k aXJ9aW5zdGFsbC1zaCAtYyIKKy0gICAgICBlbGlmIHRlc3QgLWYgIiR7YXNfZGlyfWluc3RhbGwu c2giOyB0aGVuCistICAgICAgICBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306ICAgJHthc19kaXJ9aW5zdGFsbC5zaCBmb3VuZCIgPiY1CistICAgICAgICBhY19pbnN0 YWxsX3NoPSIke2FzX2Rpcn1pbnN0YWxsLnNoIC1jIgorLSAgICAgIGVsaWYgdGVzdCAtZiAiJHth c19kaXJ9c2h0b29sIjsgdGhlbgorLSAgICAgICAgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiAgICR7YXNfZGlyfXNodG9vbCBmb3VuZCIgPiY1CistICAgICAgICBh Y19pbnN0YWxsX3NoPSIke2FzX2Rpcn1zaHRvb2wgaW5zdGFsbCAtYyIKKy0gICAgICBlbHNlCist ICAgICAgICBhY19hdXhfZGlyX2ZvdW5kPW5vCistICAgICAgICBpZiAkYWNfZmlyc3RfY2FuZGlk YXRlOyB0aGVuCistICAgICAgICAgIGFjX21pc3NpbmdfYXV4X2ZpbGVzPSIke2FjX21pc3Npbmdf YXV4X2ZpbGVzfSBpbnN0YWxsLXNoIgorLSAgICAgICAgZWxzZQorLSAgICAgICAgICBicmVhawor LSAgICAgICAgZmkKKy0gICAgICBmaQorLSAgICBlbHNlCistICAgICAgaWYgdGVzdCAtZiAiJHth c19kaXJ9JHthY19hdXh9IjsgdGhlbgorLSAgICAgICAgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiAgICR7YXNfZGlyfSR7YWNfYXV4fSBmb3VuZCIgPiY1CistICAg ICAgZWxzZQorLSAgICAgICAgYWNfYXV4X2Rpcl9mb3VuZD1ubworLSAgICAgICAgaWYgJGFjX2Zp cnN0X2NhbmRpZGF0ZTsgdGhlbgorLSAgICAgICAgICBhY19taXNzaW5nX2F1eF9maWxlcz0iJHth Y19taXNzaW5nX2F1eF9maWxlc30gJHthY19hdXh9IgorLSAgICAgICAgZWxzZQorLSAgICAgICAg ICBicmVhaworLSAgICAgICAgZmkKKy0gICAgICBmaQorLSAgICBmaQorLSAgZG9uZQorLSAgaWYg dGVzdCAiJGFjX2F1eF9kaXJfZm91bmQiID0geWVzOyB0aGVuCistICAgIGFjX2F1eF9kaXI9IiRh c19kaXIiCistICAgIGJyZWFrCistICBmaQorLSAgYWNfZmlyc3RfY2FuZGlkYXRlPWZhbHNlCist CistICBhc19mb3VuZD1mYWxzZQorLWRvbmUKKy1JRlM9JGFzX3NhdmVfSUZTCistaWYgJGFzX2Zv dW5kCistdGhlbiA6CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFzX2ZuX2Vycm9yICQ/ ICJjYW5ub3QgZmluZCByZXF1aXJlZCBhdXhpbGlhcnkgZmlsZXM6JGFjX21pc3NpbmdfYXV4X2Zp bGVzIiAiJExJTkVOTyIgNSA7OworLWVzYWMKKy1maQorLQorLQorLSMgVGhlc2UgdGhyZWUgdmFy aWFibGVzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIHVuc3VwcG9ydGVkLAorLSMgYW5kIGFyZSBpbnRl bmRlZCB0byBiZSB3aXRoZHJhd24gaW4gYSBmdXR1cmUgQXV0b2NvbmYgcmVsZWFzZS4KKy0jIFRo ZXkgY2FuIGNhdXNlIHNlcmlvdXMgcHJvYmxlbXMgaWYgYSBidWlsZGVyJ3Mgc291cmNlIHRyZWUg aXMgaW4gYSBkaXJlY3RvcnkKKy0jIHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyB1bnVzdWFsIGNo YXJhY3RlcnMuCistaWYgdGVzdCAtZiAiJHthY19hdXhfZGlyfWNvbmZpZy5ndWVzcyI7IHRoZW4K Ky0gIGFjX2NvbmZpZ19ndWVzcz0iJFNIRUxMICR7YWNfYXV4X2Rpcn1jb25maWcuZ3Vlc3MiCist ZmkKKy1pZiB0ZXN0IC1mICIke2FjX2F1eF9kaXJ9Y29uZmlnLnN1YiI7IHRoZW4KKy0gIGFjX2Nv bmZpZ19zdWI9IiRTSEVMTCAke2FjX2F1eF9kaXJ9Y29uZmlnLnN1YiIKKy1maQorLWlmIHRlc3Qg LWYgIiRhY19hdXhfZGlyL2NvbmZpZ3VyZSI7IHRoZW4KKy0gIGFjX2NvbmZpZ3VyZT0iJFNIRUxM ICR7YWNfYXV4X2Rpcn1jb25maWd1cmUiCistZmkKKy0KKy0jIENoZWNrIHRoYXQgdGhlIHByZWNp b3VzIHZhcmlhYmxlcyBzYXZlZCBpbiB0aGUgY2FjaGUgaGF2ZSBrZXB0IHRoZSBzYW1lCistIyB2 YWx1ZS4KKy1hY19jYWNoZV9jb3JydXB0ZWQ9ZmFsc2UKKy1mb3IgYWNfdmFyIGluICRhY19wcmVj aW91c192YXJzOyBkbworLSAgZXZhbCBhY19vbGRfc2V0PVwkYWNfY3ZfZW52XyR7YWNfdmFyfV9z ZXQKKy0gIGV2YWwgYWNfbmV3X3NldD1cJGFjX2Vudl8ke2FjX3Zhcn1fc2V0CistICBldmFsIGFj X29sZF92YWw9XCRhY19jdl9lbnZfJHthY192YXJ9X3ZhbHVlCistICBldmFsIGFjX25ld192YWw9 XCRhY19lbnZfJHthY192YXJ9X3ZhbHVlCistICBjYXNlICRhY19vbGRfc2V0LCRhY19uZXdfc2V0 IGluCistICAgIHNldCwpCistICAgICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGVycm9yOiAnJGFjX3Zhcicgd2FzIHNldCB0byAnJGFjX29sZF92YWwnIGlu IHRoZSBwcmV2aW91cyBydW4iID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogZXJyb3I6ICck YWNfdmFyJyB3YXMgc2V0IHRvICckYWNfb2xkX3ZhbCcgaW4gdGhlIHByZXZpb3VzIHJ1biIgPiYy O30KKy0gICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OiA7OworLSAgICAsc2V0KQorLSAgICAgIHsg cHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJyRhY192 YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iID4mNQorLXByaW50ZiAiJXNcbiIg IiRhc19tZTogZXJyb3I6ICckYWNfdmFyJyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMgcnVu IiA+JjI7fQorLSAgICAgIGFjX2NhY2hlX2NvcnJ1cHRlZD06IDs7CistICAgICwpOzsKKy0gICAg KikKKy0gICAgICBpZiB0ZXN0ICJ4JGFjX29sZF92YWwiICE9ICJ4JGFjX25ld192YWwiOyB0aGVu CistCSMgZGlmZmVyZW5jZXMgaW4gd2hpdGVzcGFjZSBkbyBub3QgbGVhZCB0byBmYWlsdXJlLgor LQlhY19vbGRfdmFsX3c9YGVjaG8geCAkYWNfb2xkX3ZhbGAKKy0JYWNfbmV3X3ZhbF93PWBlY2hv IHggJGFjX25ld192YWxgCistCWlmIHRlc3QgIiRhY19vbGRfdmFsX3ciICE9ICIkYWNfbmV3X3Zh bF93IjsgdGhlbgorLQkgIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBlcnJvcjogJyRhY192YXInIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBwcmV2aW91cyBydW46 IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IGVycm9yOiAnJGFjX3ZhcicgaGFzIGNoYW5n ZWQgc2luY2UgdGhlIHByZXZpb3VzIHJ1bjoiID4mMjt9CistCSAgYWNfY2FjaGVfY29ycnVwdGVk PToKKy0JZWxzZQorLQkgIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiB3YXJuaW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNlIGNoYW5nZXMgaW4gJyRhY192YXInIHNp bmNlIHRoZSBwcmV2aW91cyBydW46IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IHdhcm5p bmc6IGlnbm9yaW5nIHdoaXRlc3BhY2UgY2hhbmdlcyBpbiAnJGFjX3Zhcicgc2luY2UgdGhlIHBy ZXZpb3VzIHJ1bjoiID4mMjt9CistCSAgZXZhbCAkYWNfdmFyPVwkYWNfb2xkX3ZhbAorLQlmaQor LQl7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogICBmb3JtZXIg dmFsdWU6ICAnJGFjX29sZF92YWwnIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6ICAgZm9y bWVyIHZhbHVlOiAgJyRhY19vbGRfdmFsJyIgPiYyO30KKy0JeyBwcmludGYgIiVzXG4iICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306ICAgY3VycmVudCB2YWx1ZTogJyRhY19uZXdfdmFsJyIg PiY1CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiAgIGN1cnJlbnQgdmFsdWU6ICckYWNfbmV3X3Zh bCciID4mMjt9CistICAgICAgZmk7OworLSAgZXNhYworLSAgIyBQYXNzIHByZWNpb3VzIHZhcmlh YmxlcyB0byBjb25maWcuc3RhdHVzLgorLSAgaWYgdGVzdCAiJGFjX25ld19zZXQiID0gc2V0OyB0 aGVuCistICAgIGNhc2UgJGFjX25ld192YWwgaW4KKy0gICAgKlwnKikgYWNfYXJnPSRhY192YXI9 YHByaW50ZiAiJXNcbiIgIiRhY19uZXdfdmFsIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYCA7 OworLSAgICAqKSBhY19hcmc9JGFjX3Zhcj0kYWNfbmV3X3ZhbCA7OworLSAgICBlc2FjCistICAg IGNhc2UgIiAkYWNfY29uZmlndXJlX2FyZ3MgIiBpbgorLSAgICAgICoiICckYWNfYXJnJyAiKikg OzsgIyBBdm9pZCBkdXBzLiAgVXNlIG9mIHF1b3RlcyBlbnN1cmVzIGFjY3VyYWN5LgorLSAgICAg ICopIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJncyAiICckYWNfYXJnJyIgOzsKKy0gICAg ZXNhYworLSAgZmkKKy1kb25lCistaWYgJGFjX2NhY2hlX2NvcnJ1cHRlZDsgdGhlbgorLSAgeyBw cmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiAnJGFj X3B3ZCc6IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IGVycm9yOiBpbiAnJGFjX3B3ZCc6 IiA+JjI7fQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVp bGQiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogZXJyb3I6IGNoYW5nZXMgaW4gdGhlIGVu dmlyb25tZW50IGNhbiBjb21wcm9taXNlIHRoZSBidWlsZCIgPiYyO30KKy0gIGFzX2ZuX2Vycm9y ICQ/ICJydW4gJyR7TUFLRS1tYWtlfSBkaXN0Y2xlYW4nIGFuZC9vciAncm0gJGNhY2hlX2ZpbGUn CistCSAgICBhbmQgc3RhcnQgb3ZlciIgIiRMSU5FTk8iIDUKKy1maQorLSMjIC0tLS0tLS0tLS0t LS0tLS0tLS0tICMjCistIyMgTWFpbiBib2R5IG9mIHNjcmlwdC4gIyMKKy0jIyAtLS0tLS0tLS0t LS0tLS0tLS0tLSAjIworLQorLWFjX2V4dD1jCistYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKKy1h Y19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUn CistYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAk TERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKKy1hY19jb21waWxlcl9nbnU9JGFj X2N2X2NfY29tcGlsZXJfZ251CistCistCistCistCistCistCistCistYWNfY29uZmlnX2hlYWRl cnM9IiRhY19jb25maWdfaGVhZGVycyBjb25maWcuaCBidWlsZGNvbmYuaCIKKy0KKy0KKy1CQVNI VkVSUz01LjMKKy1SRUxTVEFUVVM9cmMyCistCistY2FzZSAiJFJFTFNUQVRVUyIgaW4KKy1hbHAq fGJldCp8ZGV2KnxyYyp8cmVsZW5nKnxtYWludCopCURFQlVHPSctRERFQlVHJyBNQUxMT0NfREVC VUc9Jy1ETUFMTE9DX0RFQlVHJyA7OworLSopCURFQlVHPSBNQUxMT0NfREVCVUc9IDs7CistZXNh YworLQorLQorLQorLQorLSAgIyBNYWtlIHN1cmUgd2UgY2FuIHJ1biBjb25maWcuc3ViLgorLSRT SEVMTCAiJHthY19hdXhfZGlyfWNvbmZpZy5zdWIiIHN1bjQgPi9kZXYvbnVsbCAyPiYxIHx8Cist ICBhc19mbl9lcnJvciAkPyAiY2Fubm90IHJ1biAkU0hFTEwgJHthY19hdXhfZGlyfWNvbmZpZy5z dWIiICIkTElORU5PIiA1CistCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUKKy1wcmludGYgJXMgImNo ZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X2J1 aWxkK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIGFjX2J1aWxkX2FsaWFzPSRidWlsZF9hbGlhcworLXRlc3QgIngkYWNf YnVpbGRfYWxpYXMiID0geCAmJgorLSAgYWNfYnVpbGRfYWxpYXM9YCRTSEVMTCAiJHthY19hdXhf ZGlyfWNvbmZpZy5ndWVzcyJgCistdGVzdCAieCRhY19idWlsZF9hbGlhcyIgPSB4ICYmCistICBh c19mbl9lcnJvciAkPyAiY2Fubm90IGd1ZXNzIGJ1aWxkIHR5cGU7IHlvdSBtdXN0IHNwZWNpZnkg b25lIiAiJExJTkVOTyIgNQorLWFjX2N2X2J1aWxkPWAkU0hFTEwgIiR7YWNfYXV4X2Rpcn1jb25m aWcuc3ViIiAkYWNfYnVpbGRfYWxpYXNgIHx8CistICBhc19mbl9lcnJvciAkPyAiJFNIRUxMICR7 YWNfYXV4X2Rpcn1jb25maWcuc3ViICRhY19idWlsZF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1 CistIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJGFjX2N2X2J1aWxkIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNf Y3ZfYnVpbGQiID4mNjsgfQorLWNhc2UgJGFjX2N2X2J1aWxkIGluCistKi0qLSopIDs7CistKikg YXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIGJ1aWxkIiAiJExJTkVO TyIgNTs7CistZXNhYworLWJ1aWxkPSRhY19jdl9idWlsZAorLWFjX3NhdmVfSUZTPSRJRlM7IElG Uz0nLScKKy1zZXQgeCAkYWNfY3ZfYnVpbGQKKy1zaGlmdAorLWJ1aWxkX2NwdT0kMQorLWJ1aWxk X3ZlbmRvcj0kMgorLXNoaWZ0OyBzaGlmdAorLSMgUmVtZW1iZXIsIHRoZSBmaXJzdCBjaGFyYWN0 ZXIgb2YgSUZTIGlzIHVzZWQgdG8gY3JlYXRlICQqLAorLSMgZXhjZXB0IHdpdGggb2xkIHNoZWxs czoKKy1idWlsZF9vcz0kKgorLUlGUz0kYWNfc2F2ZV9JRlMKKy1jYXNlICRidWlsZF9vcyBpbiAq XCAqKSBidWlsZF9vcz1gZWNobyAiJGJ1aWxkX29zIiB8IHNlZCAncy8gLy0vZydgOzsgZXNhYwor LQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVj a2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGhvc3Qgc3lz dGVtIHR5cGUuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfaG9zdCt5fQorLXRoZW4gOgor LSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBp ZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiID0geDsgdGhlbgorLSAgYWNfY3ZfaG9zdD0kYWNfY3ZfYnVp bGQKKy1lbHNlCistICBhY19jdl9ob3N0PWAkU0hFTEwgIiR7YWNfYXV4X2Rpcn1jb25maWcuc3Vi IiAkaG9zdF9hbGlhc2AgfHwKKy0gICAgYXNfZm5fZXJyb3IgJD8gIiRTSEVMTCAke2FjX2F1eF9k aXJ9Y29uZmlnLnN1YiAkaG9zdF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CistZmkKKy0gOzsK Ky1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiAkYWNfY3ZfaG9zdCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X2hvc3Qi ID4mNjsgfQorLWNhc2UgJGFjX2N2X2hvc3QgaW4KKy0qLSotKikgOzsKKy0qKSBhc19mbl9lcnJv ciAkPyAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgaG9zdCIgIiRMSU5FTk8iIDU7OworLWVz YWMKKy1ob3N0PSRhY19jdl9ob3N0CistYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSctJworLXNldCB4 ICRhY19jdl9ob3N0Cistc2hpZnQKKy1ob3N0X2NwdT0kMQorLWhvc3RfdmVuZG9yPSQyCistc2hp ZnQ7IHNoaWZ0CistIyBSZW1lbWJlciwgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBJRlMgaXMgdXNl ZCB0byBjcmVhdGUgJCosCistIyBleGNlcHQgd2l0aCBvbGQgc2hlbGxzOgorLWhvc3Rfb3M9JCoK Ky1JRlM9JGFjX3NhdmVfSUZTCistY2FzZSAkaG9zdF9vcyBpbiAqXCAqKSBob3N0X29zPWBlY2hv ICIkaG9zdF9vcyIgfCBzZWQgJ3MvIC8tL2cnYDs7IGVzYWMKKy0KKy0KKy0KKy0KKy1vcHRfYmFz aF9tYWxsb2M9eWVzCistb3B0X2Fmcz1ubworLW9wdF9jdXJzZXM9bm8KKy1vcHRfd2l0aF9pbnN0 YWxsZWRfcmVhZGxpbmU9bm8KKy0KKy0jaHRtbGRpcj0KKy0KKy1jYXNlICIke2hvc3RfY3B1fS0k e2hvc3Rfb3N9IiBpbgorLSMgbW9zdGx5IG9ic29sZXRlIHBsYXRmb3JtcworLWFscGhhKi0qKQlv cHRfYmFzaF9tYWxsb2M9bm8gOzsJIyBhbHBoYSBydW5uaW5nIG9zZi8xIG9yIGxpbnV4CistKltD Y11yYXkqLSopCW9wdF9iYXNoX21hbGxvYz1ubyA7OwkjIENyYXlzCistKi1vc2YxKikJb3B0X2Jh c2hfbWFsbG9jPW5vIDs7CSMgb3RoZXIgb3NmLzEgbWFjaGluZXMKKy0qLWRndXgqKQlvcHRfYmFz aF9tYWxsb2M9bm8gOzsJIyBERy9VWCBtYWNoaW5lcworLXNwYXJjLXN2cjQqKQlvcHRfYmFzaF9t YWxsb2M9bm8gOzsJIyBzcGFyYyBTVlI0LCBTVlI0LjIKKy1tNjhrLXN5c3YpCW9wdF9iYXNoX21h bGxvYz1ubyA7OwkjIGZpeGVzIGZpbGUgZGVzY3JpcHRvciBsZWFrIGluIGNsb3NlZGlyCistKi1i c2RpMi4xfCotYnNkaTMuPykJb3B0X2Jhc2hfbWFsbG9jPW5vIDsgOiAke0NDOj1zaGxpY2MyfSA7 OyAjIGZvciBsb2FkYWJsZSBidWlsdGlucworLSotb3Blbm50KnwqLWludGVyaXgqKQlvcHRfYmFz aF9tYWxsb2M9bm8gOzsJIyBJbnRlcml4LCBub3cgb3duZWQgYnkgTWljcm9zb2Z0CistKi1iZW9z KikJb3B0X2Jhc2hfbWFsbG9jPW5vIDs7CSMgdGhleSBzYXkgaXQncyBzdWl0YWJsZQorLSMgVGhl c2UgbmVlZCBhZGRpdGlvbmFsIGludmVzdGlnYXRpb24KKy1zcGFyYy1saW51eCopCW9wdF9iYXNo X21hbGxvYz1ubyA7OwkjIHNwYXJjIHJ1bm5pbmcgbGludXg7IHJlcXVpcmVzIEVMRgorLSotYWl4 KikJCW9wdF9iYXNoX21hbGxvYz1ubyA7OwkjIEFJWCBtYWNoaW5lcworLSotY3lnd2luKnxtc3lz Kikgb3B0X2Jhc2hfbWFsbG9jPW5vIDs7CSMgQ3lnbnVzJ3MgQ1lHV0lOIGVudmlyb25tZW50Cist IyBUaGVzZSBsYWNrIGEgd29ya2luZyBzYnJrKDIpCistYWFyY2g2NC1mcmVlYnNkKikJb3B0X2Jh c2hfbWFsbG9jPW5vIDs7CistcmlzY3YqLWZyZWVic2QqKQlvcHRfYmFzaF9tYWxsb2M9bm8gOzsK Ky0jIE1hY2gtZGVyaXZlZCBzeXN0ZW1zIGhhdmUgYSB0b24gb2YgZXh0cmEgbWFsbG9jIGZ1bmN0 aW9ucyBhbmQgbGFjayBzYnJrKDIpCistKi1uZXh0c3RlcCopCW9wdF9iYXNoX21hbGxvYz1ubyA7 OwkjIE5lWFQgbWFjaGluZXMgcnVubmluZyBOZVhUc3RlcAorLSotb3BlbnN0ZXAqKQlvcHRfYmFz aF9tYWxsb2M9bm8gOzsJIyBpMzg2L1NwYXJjL0hQIG1hY2hpbmVzIHJ1bm5pbmcgT3BlbnN0ZXAK Ky0qLW1hY29zKikJb3B0X2Jhc2hfbWFsbG9jPW5vIDs7CSMgQXBwbGUgTWFjT1MgWAorLSotcmhh cHNvZHkqKQlvcHRfYmFzaF9tYWxsb2M9bm8gOzsJIyBBcHBsZSBSaGFwc29keSAoTWFjT1MgWCkK Ky0qLWRhcndpbiopCW9wdF9iYXNoX21hbGxvYz1ubyA7OwkjIEFwcGxlIERhcndpbiAoTWFjT1Mg WCkKKy0qLW1hY2h0ZW40KQlvcHRfYmFzaF9tYWxsb2M9bm8gOzsJIyBNYWNoVGVuIDQueAorLSMg TmljaGUgb3Igbm9uLW1haW5zdHJlYW0tc2hlbGwtdXNlciBzeXN0ZW1zCistKi1xbngqKQkJb3B0 X2Jhc2hfbWFsbG9jPW5vIDs7CSMgUU5YIDQuMiwgUU5YIFs2N10ueAorLSotbnNrKikJCW9wdF9i YXNoX21hbGxvYz1ubyA7OwkjIEhQIE5vblN0b3AKKy0qLWhhaWt1KikJb3B0X2Jhc2hfbWFsbG9j PW5vIDs7CSMgSGFpa3UgT1MKKy0qLWdlbm9kZSopCW9wdF9iYXNoX21hbGxvYz1ubyA7OwkjIEdl bm9kZSBoYXMgbm8gc2JyaworLWkzNzAtb3BlbmVkaXRpb24qKQlvcHRfYmFzaF9tYWxsb2M9bm8g TE9DQUxfTElCUz0tbHpvc2xpYiBMSUJTX0ZPUl9CVUlMRD0tbHpvc2xpYiA7OwkjIElCTSB6L09T IG1hY2hpbmVzCistaTM3MC0qKQkJb3B0X2Jhc2hfbWFsbG9jPW5vIDs7CSMgZ2VuZXJpYyAoPykg SUJNIDM3MCBtYWNoaW5lcworLWVzYWMKKy0KKy0jIG1lbW9yeSBzY3JhbWJsaW5nIG9uIGZyZWUo KQorLWNhc2UgIiR7aG9zdF9vc30iIGluCistc2NvMy4ydjUqfHNjbzMuMnY0KikJb3B0X21lbXNj cmFtYmxlPW5vIDs7CistKikJCQlvcHRfbWVtc2NyYW1ibGU9eWVzIDs7CistZXNhYworLQorLQor LQorLQorLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYWZzIHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICR7 d2l0aF9hZnMreX0KKy10aGVuIDoKKy0gIHdpdGh2YWw9JHdpdGhfYWZzOyBvcHRfYWZzPSR3aXRo dmFsCistZmkKKy0KKy0KKy0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWJhc2gtbWFsbG9jIHdhcyBn aXZlbi4KKy1pZiB0ZXN0ICR7d2l0aF9iYXNoX21hbGxvYyt5fQorLXRoZW4gOgorLSAgd2l0aHZh bD0kd2l0aF9iYXNoX21hbGxvYzsgb3B0X2Jhc2hfbWFsbG9jPSR3aXRodmFsCistZmkKKy0KKy0K Ky0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWN1cnNlcyB3YXMgZ2l2ZW4uCistaWYgdGVzdCAke3dp dGhfY3Vyc2VzK3l9CistdGhlbiA6CistICB3aXRodmFsPSR3aXRoX2N1cnNlczsgb3B0X2N1cnNl cz0kd2l0aHZhbAorLWZpCistCistCistIyBDaGVjayB3aGV0aGVyIC0td2l0aC1nbnUtbWFsbG9j IHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICR7d2l0aF9nbnVfbWFsbG9jK3l9CistdGhlbiA6CistICB3 aXRodmFsPSR3aXRoX2dudV9tYWxsb2M7IG9wdF9iYXNoX21hbGxvYz0kd2l0aHZhbAorLWZpCist CistCistIyBDaGVjayB3aGV0aGVyIC0td2l0aC1pbnN0YWxsZWQtcmVhZGxpbmUgd2FzIGdpdmVu LgorLWlmIHRlc3QgJHt3aXRoX2luc3RhbGxlZF9yZWFkbGluZSt5fQorLXRoZW4gOgorLSAgd2l0 aHZhbD0kd2l0aF9pbnN0YWxsZWRfcmVhZGxpbmU7IG9wdF93aXRoX2luc3RhbGxlZF9yZWFkbGlu ZT0kd2l0aHZhbAorLWZpCistCistCistaWYgdGVzdCAiJG9wdF9iYXNoX21hbGxvYyIgPSB5ZXM7 IHRoZW4KKy0JTUFMTE9DX1RBUkdFVD1tYWxsb2MKKy0JTUFMTE9DX1NSQz1tYWxsb2MuYworLQor LQlNQUxMT0NfTElCPSctbG1hbGxvYycKKy0JTUFMTE9DX0xJQlJBUlk9JyQoQUxMT0NfTElCRElS KS9saWJtYWxsb2MuYScKKy0JTUFMTE9DX0xERkxBR1M9Jy1MJChBTExPQ19MSUJESVIpJworLQlN QUxMT0NfREVQPSckKE1BTExPQ19MSUJSQVJZKScKKy0KKy0JcHJpbnRmICIlc1xuIiAiI2RlZmlu ZSBVU0lOR19CQVNIX01BTExPQyAxIiA+PmNvbmZkZWZzLmgKKy0KKy1lbHNlCistCU1BTExPQ19M SUI9CistCU1BTExPQ19MSUJSQVJZPQorLQlNQUxMT0NfTERGTEFHUz0KKy0JTUFMTE9DX0RFUD0K Ky1maQorLQorLWlmIHRlc3QgIiRvcHRfYWZzIiA9IHllczsgdGhlbgorLQlwcmludGYgIiVzXG4i ICIjZGVmaW5lIEFGUyAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLWlmIHRlc3QgIiRvcHRf Y3Vyc2VzIiA9IHllczsgdGhlbgorLQlwcmVmZXJfY3Vyc2VzPXllcworLWZpCistCistaWYgdGVz dCAteiAiJHtERUJVR0dFUl9TVEFSVF9GSUxFfSI7IHRoZW4KKy0JREVCVUdHRVJfU1RBUlRfRklM RT0nJHtkYXRhZGlyfS9iYXNoZGIvYmFzaGRiLW1haW4uaW5jJworLWZpCistCistb3B0X21pbmlt YWxfY29uZmlnPW5vCistCistb3B0X2pvYl9jb250cm9sPXllcworLW9wdF9hbGlhcz15ZXMKKy1v cHRfcmVhZGxpbmU9eWVzCistb3B0X2hpc3Rvcnk9eWVzCistb3B0X2JhbmdfaGlzdG9yeT15ZXMK Ky1vcHRfZGlyc3RhY2s9eWVzCistb3B0X3Jlc3RyaWN0ZWQ9eWVzCistb3B0X3Byb2Nlc3Nfc3Vi c3Q9eWVzCistb3B0X3Byb21wdF9kZWNvZGluZz15ZXMKKy1vcHRfc2VsZWN0PXllcworLW9wdF9o ZWxwPXllcworLW9wdF9hcnJheV92YXJpYWJsZXM9eWVzCistb3B0X2RwYXJlbl9hcml0aD15ZXMK Ky1vcHRfZXh0ZW5kZWRfZ2xvYj15ZXMKKy1vcHRfYnJhY2VfZXhwYW5zaW9uPXllcworLW9wdF9k aXNhYmxlZF9idWlsdGlucz1ubworLW9wdF9jb21tYW5kX3RpbWluZz15ZXMKKy1vcHRfeHBnX2Vj aG89bm8KKy1vcHRfc3RyaWN0X3Bvc2l4PW5vCistb3B0X2NvbmRfY29tbWFuZD15ZXMKKy1vcHRf Y29uZF9yZWdleHA9eWVzCistb3B0X2NvcHJvYz15ZXMKKy1vcHRfYXJpdGhfZm9yX2NvbW1hbmQ9 eWVzCistb3B0X25ldF9yZWRpcnM9eWVzCistb3B0X3Byb2djb21wPXllcworLW9wdF9zZXBhcmF0 ZV9oZWxwPW5vCistb3B0X211bHRpYnl0ZT15ZXMKKy1vcHRfZGVidWdnZXI9eWVzCistb3B0X3Np bmdsZV9sb25nZG9jX3N0cmluZ3M9eWVzCistb3B0X2Nhc2Vtb2RfYXR0cnM9eWVzCistb3B0X2Nh c2Vtb2RfZXhwYW5zaW9ucz15ZXMKKy1vcHRfZXh0Z2xvYl9kZWZhdWx0PW5vCistb3B0X2RpcmNv bXBsZXRlX2V4cGFuZF9kZWZhdWx0PW5vCistb3B0X2dsb2Jhc2NpaV9kZWZhdWx0PXllcworLW9w dF9mdW5jdGlvbl9pbXBvcnQ9eWVzCistb3B0X2Rldl9mZF9zdGF0X2Jyb2tlbj1ubworLW9wdF9h bHRfYXJyYXlfaW1wbD1ubworLW9wdF90cmFuc2xhdGFibGVfc3RyaW5ncz15ZXMKKy1vcHRfYmFz aF9zb3VyY2VfZnVsbHBhdGhfZGVmYXVsdD1ubworLQorLUFSUkFZX089YXJyYXkubworLQorLW9w dF9zdGF0aWNfbGluaz1ubworLW9wdF9wcm9maWxpbmc9bm8KKy0KKy0jIENoZWNrIHdoZXRoZXIg LS1lbmFibGUtbWluaW1hbC1jb25maWcgd2FzIGdpdmVuLgorLWlmIHRlc3QgJHtlbmFibGVfbWlu aW1hbF9jb25maWcreX0KKy10aGVuIDoKKy0gIGVuYWJsZXZhbD0kZW5hYmxlX21pbmltYWxfY29u ZmlnOyBvcHRfbWluaW1hbF9jb25maWc9JGVuYWJsZXZhbAorLWZpCistCistCistaWYgdGVzdCAk b3B0X21pbmltYWxfY29uZmlnID0geWVzOyB0aGVuCistCW9wdF9qb2JfY29udHJvbD1ubyBvcHRf YWxpYXM9bm8gb3B0X3JlYWRsaW5lPW5vCistCW9wdF9oaXN0b3J5PW5vIG9wdF9iYW5nX2hpc3Rv cnk9bm8gb3B0X2RpcnN0YWNrPW5vCistCW9wdF9yZXN0cmljdGVkPW5vIG9wdF9wcm9jZXNzX3N1 YnN0PW5vIG9wdF9wcm9tcHRfZGVjb2Rpbmc9bm8KKy0Jb3B0X3NlbGVjdD1ubyBvcHRfaGVscD1u byBvcHRfYXJyYXlfdmFyaWFibGVzPW5vIG9wdF9kcGFyZW5fYXJpdGg9bm8KKy0Jb3B0X2JyYWNl X2V4cGFuc2lvbj1ubyBvcHRfZGlzYWJsZWRfYnVpbHRpbnM9bm8gb3B0X2NvbW1hbmRfdGltaW5n PW5vCistCW9wdF9leHRlbmRlZF9nbG9iPW5vIG9wdF9jb25kX2NvbW1hbmQ9bm8gb3B0X2FyaXRo X2Zvcl9jb21tYW5kPW5vCistCW9wdF9uZXRfcmVkaXJzPW5vIG9wdF9wcm9nY29tcD1ubyBvcHRf c2VwYXJhdGVfaGVscD1ubworLQlvcHRfbXVsdGlieXRlPXllcyBvcHRfY29uZF9yZWdleHA9bm8g b3B0X2NvcHJvYz1ubworLQlvcHRfY2FzZW1vZF9hdHRycz1ubyBvcHRfY2FzZW1vZF9leHBhbnNp b25zPW5vIG9wdF9leHRnbG9iX2RlZmF1bHQ9bm8KKy0Jb3B0X3RyYW5zbGF0YWJsZV9zdHJpbmdz PW5vCistCW9wdF9nbG9iYXNjaWlfZGVmYXVsdD15ZXMKKy0Jb3B0X2Jhc2hfc291cmNlX2Z1bGxw YXRoX2RlZmF1bHQ9bm8KKy1maQorLQorLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1hbGlhcyB3 YXMgZ2l2ZW4uCistaWYgdGVzdCAke2VuYWJsZV9hbGlhcyt5fQorLXRoZW4gOgorLSAgZW5hYmxl dmFsPSRlbmFibGVfYWxpYXM7IG9wdF9hbGlhcz0kZW5hYmxldmFsCistZmkKKy0KKy0jIENoZWNr IHdoZXRoZXIgLS1lbmFibGUtYWx0LWFycmF5LWltcGxlbWVudGF0aW9uIHdhcyBnaXZlbi4KKy1p ZiB0ZXN0ICR7ZW5hYmxlX2FsdF9hcnJheV9pbXBsZW1lbnRhdGlvbit5fQorLXRoZW4gOgorLSAg ZW5hYmxldmFsPSRlbmFibGVfYWx0X2FycmF5X2ltcGxlbWVudGF0aW9uOyBvcHRfYWx0X2FycmF5 X2ltcGw9JGVuYWJsZXZhbAorLWZpCistCistIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWFyaXRo LWZvci1jb21tYW5kIHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICR7ZW5hYmxlX2FyaXRoX2Zvcl9jb21t YW5kK3l9CistdGhlbiA6CistICBlbmFibGV2YWw9JGVuYWJsZV9hcml0aF9mb3JfY29tbWFuZDsg b3B0X2FyaXRoX2Zvcl9jb21tYW5kPSRlbmFibGV2YWwKKy1maQorLQorLSMgQ2hlY2sgd2hldGhl ciAtLWVuYWJsZS1hcnJheS12YXJpYWJsZXMgd2FzIGdpdmVuLgorLWlmIHRlc3QgJHtlbmFibGVf YXJyYXlfdmFyaWFibGVzK3l9CistdGhlbiA6CistICBlbmFibGV2YWw9JGVuYWJsZV9hcnJheV92 YXJpYWJsZXM7IG9wdF9hcnJheV92YXJpYWJsZXM9JGVuYWJsZXZhbAorLWZpCistCistIyBDaGVj ayB3aGV0aGVyIC0tZW5hYmxlLWJhbmctaGlzdG9yeSB3YXMgZ2l2ZW4uCistaWYgdGVzdCAke2Vu YWJsZV9iYW5nX2hpc3RvcnkreX0KKy10aGVuIDoKKy0gIGVuYWJsZXZhbD0kZW5hYmxlX2Jhbmdf aGlzdG9yeTsgb3B0X2JhbmdfaGlzdG9yeT0kZW5hYmxldmFsCistZmkKKy0KKy0jIENoZWNrIHdo ZXRoZXIgLS1lbmFibGUtYmFzaC1zb3VyY2UtZnVsbHBhdGgtZGVmYXVsdCB3YXMgZ2l2ZW4uCist aWYgdGVzdCAke2VuYWJsZV9iYXNoX3NvdXJjZV9mdWxscGF0aF9kZWZhdWx0K3l9CistdGhlbiA6 CistICBlbmFibGV2YWw9JGVuYWJsZV9iYXNoX3NvdXJjZV9mdWxscGF0aF9kZWZhdWx0OyBvcHRf YmFzaF9zb3VyY2VfZnVsbHBhdGhfZGVmYXVsdD0kZW5hYmxldmFsCistZmkKKy0KKy0jIENoZWNr IHdoZXRoZXIgLS1lbmFibGUtYnJhY2UtZXhwYW5zaW9uIHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICR7 ZW5hYmxlX2JyYWNlX2V4cGFuc2lvbit5fQorLXRoZW4gOgorLSAgZW5hYmxldmFsPSRlbmFibGVf YnJhY2VfZXhwYW5zaW9uOyBvcHRfYnJhY2VfZXhwYW5zaW9uPSRlbmFibGV2YWwKKy1maQorLQor LSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1jYXNlbW9kLWF0dHJpYnV0ZXMgd2FzIGdpdmVuLgor LWlmIHRlc3QgJHtlbmFibGVfY2FzZW1vZF9hdHRyaWJ1dGVzK3l9CistdGhlbiA6CistICBlbmFi bGV2YWw9JGVuYWJsZV9jYXNlbW9kX2F0dHJpYnV0ZXM7IG9wdF9jYXNlbW9kX2F0dHJzPSRlbmFi bGV2YWwKKy1maQorLQorLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1jYXNlbW9kLWV4cGFuc2lv bnMgd2FzIGdpdmVuLgorLWlmIHRlc3QgJHtlbmFibGVfY2FzZW1vZF9leHBhbnNpb25zK3l9Cist dGhlbiA6CistICBlbmFibGV2YWw9JGVuYWJsZV9jYXNlbW9kX2V4cGFuc2lvbnM7IG9wdF9jYXNl bW9kX2V4cGFuc2lvbnM9JGVuYWJsZXZhbAorLWZpCistCistIyBDaGVjayB3aGV0aGVyIC0tZW5h YmxlLWNvbW1hbmQtdGltaW5nIHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICR7ZW5hYmxlX2NvbW1hbmRf dGltaW5nK3l9CistdGhlbiA6CistICBlbmFibGV2YWw9JGVuYWJsZV9jb21tYW5kX3RpbWluZzsg b3B0X2NvbW1hbmRfdGltaW5nPSRlbmFibGV2YWwKKy1maQorLQorLSMgQ2hlY2sgd2hldGhlciAt LWVuYWJsZS1jb25kLWNvbW1hbmQgd2FzIGdpdmVuLgorLWlmIHRlc3QgJHtlbmFibGVfY29uZF9j b21tYW5kK3l9CistdGhlbiA6CistICBlbmFibGV2YWw9JGVuYWJsZV9jb25kX2NvbW1hbmQ7IG9w dF9jb25kX2NvbW1hbmQ9JGVuYWJsZXZhbAorLWZpCistCistIyBDaGVjayB3aGV0aGVyIC0tZW5h YmxlLWNvbmQtcmVnZXhwIHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICR7ZW5hYmxlX2NvbmRfcmVnZXhw K3l9CistdGhlbiA6CistICBlbmFibGV2YWw9JGVuYWJsZV9jb25kX3JlZ2V4cDsgb3B0X2NvbmRf cmVnZXhwPSRlbmFibGV2YWwKKy1maQorLQorLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1jb3By b2Nlc3NlcyB3YXMgZ2l2ZW4uCistaWYgdGVzdCAke2VuYWJsZV9jb3Byb2Nlc3Nlcyt5fQorLXRo ZW4gOgorLSAgZW5hYmxldmFsPSRlbmFibGVfY29wcm9jZXNzZXM7IG9wdF9jb3Byb2M9JGVuYWJs ZXZhbAorLWZpCistCistIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWRlYnVnZ2VyIHdhcyBnaXZl bi4KKy1pZiB0ZXN0ICR7ZW5hYmxlX2RlYnVnZ2VyK3l9CistdGhlbiA6CistICBlbmFibGV2YWw9 JGVuYWJsZV9kZWJ1Z2dlcjsgb3B0X2RlYnVnZ2VyPSRlbmFibGV2YWwKKy1maQorLQorLSMgQ2hl Y2sgd2hldGhlciAtLWVuYWJsZS1kZXYtZmQtc3RhdC1icm9rZW4gd2FzIGdpdmVuLgorLWlmIHRl c3QgJHtlbmFibGVfZGV2X2ZkX3N0YXRfYnJva2VuK3l9CistdGhlbiA6CistICBlbmFibGV2YWw9 JGVuYWJsZV9kZXZfZmRfc3RhdF9icm9rZW47IG9wdF9kZXZfZmRfc3RhdF9icm9rZW49JGVuYWJs ZXZhbAorLWZpCistCistIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWRpcmV4cGFuZC1kZWZhdWx0 IHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICR7ZW5hYmxlX2RpcmV4cGFuZF9kZWZhdWx0K3l9CistdGhl biA6CistICBlbmFibGV2YWw9JGVuYWJsZV9kaXJleHBhbmRfZGVmYXVsdDsgb3B0X2RpcmNvbXBs ZXRlX2V4cGFuZF9kZWZhdWx0PSRlbmFibGV2YWwKKy1maQorLQorLSMgQ2hlY2sgd2hldGhlciAt LWVuYWJsZS1kaXJlY3Rvcnktc3RhY2sgd2FzIGdpdmVuLgorLWlmIHRlc3QgJHtlbmFibGVfZGly ZWN0b3J5X3N0YWNrK3l9CistdGhlbiA6CistICBlbmFibGV2YWw9JGVuYWJsZV9kaXJlY3Rvcnlf c3RhY2s7IG9wdF9kaXJzdGFjaz0kZW5hYmxldmFsCistZmkKKy0KKy0jIENoZWNrIHdoZXRoZXIg LS1lbmFibGUtZGlzYWJsZWQtYnVpbHRpbnMgd2FzIGdpdmVuLgorLWlmIHRlc3QgJHtlbmFibGVf ZGlzYWJsZWRfYnVpbHRpbnMreX0KKy10aGVuIDoKKy0gIGVuYWJsZXZhbD0kZW5hYmxlX2Rpc2Fi bGVkX2J1aWx0aW5zOyBvcHRfZGlzYWJsZWRfYnVpbHRpbnM9JGVuYWJsZXZhbAorLWZpCistCist IyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWRwYXJlbi1hcml0aG1ldGljIHdhcyBnaXZlbi4KKy1p ZiB0ZXN0ICR7ZW5hYmxlX2RwYXJlbl9hcml0aG1ldGljK3l9CistdGhlbiA6CistICBlbmFibGV2 YWw9JGVuYWJsZV9kcGFyZW5fYXJpdGhtZXRpYzsgb3B0X2RwYXJlbl9hcml0aD0kZW5hYmxldmFs CistZmkKKy0KKy0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZXh0ZW5kZWQtZ2xvYiB3YXMgZ2l2 ZW4uCistaWYgdGVzdCAke2VuYWJsZV9leHRlbmRlZF9nbG9iK3l9CistdGhlbiA6CistICBlbmFi bGV2YWw9JGVuYWJsZV9leHRlbmRlZF9nbG9iOyBvcHRfZXh0ZW5kZWRfZ2xvYj0kZW5hYmxldmFs CistZmkKKy0KKy0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZXh0ZW5kZWQtZ2xvYi1kZWZhdWx0 IHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICR7ZW5hYmxlX2V4dGVuZGVkX2dsb2JfZGVmYXVsdCt5fQor LXRoZW4gOgorLSAgZW5hYmxldmFsPSRlbmFibGVfZXh0ZW5kZWRfZ2xvYl9kZWZhdWx0OyBvcHRf ZXh0Z2xvYl9kZWZhdWx0PSRlbmFibGV2YWwKKy1maQorLQorLSMgQ2hlY2sgd2hldGhlciAtLWVu YWJsZS1mdW5jdGlvbi1pbXBvcnQgd2FzIGdpdmVuLgorLWlmIHRlc3QgJHtlbmFibGVfZnVuY3Rp b25faW1wb3J0K3l9CistdGhlbiA6CistICBlbmFibGV2YWw9JGVuYWJsZV9mdW5jdGlvbl9pbXBv cnQ7IG9wdF9mdW5jdGlvbl9pbXBvcnQ9JGVuYWJsZXZhbAorLWZpCistCistIyBDaGVjayB3aGV0 aGVyIC0tZW5hYmxlLWdsb2ItYXNjaWlyYW5nZXMtZGVmYXVsdCB3YXMgZ2l2ZW4uCistaWYgdGVz dCAke2VuYWJsZV9nbG9iX2FzY2lpcmFuZ2VzX2RlZmF1bHQreX0KKy10aGVuIDoKKy0gIGVuYWJs ZXZhbD0kZW5hYmxlX2dsb2JfYXNjaWlyYW5nZXNfZGVmYXVsdDsgb3B0X2dsb2Jhc2NpaV9kZWZh dWx0PSRlbmFibGV2YWwKKy1maQorLQorLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1oZWxwLWJ1 aWx0aW4gd2FzIGdpdmVuLgorLWlmIHRlc3QgJHtlbmFibGVfaGVscF9idWlsdGluK3l9CistdGhl biA6CistICBlbmFibGV2YWw9JGVuYWJsZV9oZWxwX2J1aWx0aW47IG9wdF9oZWxwPSRlbmFibGV2 YWwKKy1maQorLQorLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1oaXN0b3J5IHdhcyBnaXZlbi4K Ky1pZiB0ZXN0ICR7ZW5hYmxlX2hpc3RvcnkreX0KKy10aGVuIDoKKy0gIGVuYWJsZXZhbD0kZW5h YmxlX2hpc3Rvcnk7IG9wdF9oaXN0b3J5PSRlbmFibGV2YWwKKy1maQorLQorLSMgQ2hlY2sgd2hl dGhlciAtLWVuYWJsZS1qb2ItY29udHJvbCB3YXMgZ2l2ZW4uCistaWYgdGVzdCAke2VuYWJsZV9q b2JfY29udHJvbCt5fQorLXRoZW4gOgorLSAgZW5hYmxldmFsPSRlbmFibGVfam9iX2NvbnRyb2w7 IG9wdF9qb2JfY29udHJvbD0kZW5hYmxldmFsCistZmkKKy0KKy0jIENoZWNrIHdoZXRoZXIgLS1l bmFibGUtbXVsdGlieXRlIHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICR7ZW5hYmxlX211bHRpYnl0ZSt5 fQorLXRoZW4gOgorLSAgZW5hYmxldmFsPSRlbmFibGVfbXVsdGlieXRlOyBvcHRfbXVsdGlieXRl PSRlbmFibGV2YWwKKy1maQorLQorLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1uZXQtcmVkaXJl Y3Rpb25zIHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICR7ZW5hYmxlX25ldF9yZWRpcmVjdGlvbnMreX0K Ky10aGVuIDoKKy0gIGVuYWJsZXZhbD0kZW5hYmxlX25ldF9yZWRpcmVjdGlvbnM7IG9wdF9uZXRf cmVkaXJzPSRlbmFibGV2YWwKKy1maQorLQorLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wcm9j ZXNzLXN1YnN0aXR1dGlvbiB3YXMgZ2l2ZW4uCistaWYgdGVzdCAke2VuYWJsZV9wcm9jZXNzX3N1 YnN0aXR1dGlvbit5fQorLXRoZW4gOgorLSAgZW5hYmxldmFsPSRlbmFibGVfcHJvY2Vzc19zdWJz dGl0dXRpb247IG9wdF9wcm9jZXNzX3N1YnN0PSRlbmFibGV2YWwKKy1maQorLQorLSMgQ2hlY2sg d2hldGhlciAtLWVuYWJsZS1wcm9nY29tcCB3YXMgZ2l2ZW4uCistaWYgdGVzdCAke2VuYWJsZV9w cm9nY29tcCt5fQorLXRoZW4gOgorLSAgZW5hYmxldmFsPSRlbmFibGVfcHJvZ2NvbXA7IG9wdF9w cm9nY29tcD0kZW5hYmxldmFsCistZmkKKy0KKy0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcHJv bXB0LXN0cmluZy1kZWNvZGluZyB3YXMgZ2l2ZW4uCistaWYgdGVzdCAke2VuYWJsZV9wcm9tcHRf c3RyaW5nX2RlY29kaW5nK3l9CistdGhlbiA6CistICBlbmFibGV2YWw9JGVuYWJsZV9wcm9tcHRf c3RyaW5nX2RlY29kaW5nOyBvcHRfcHJvbXB0X2RlY29kaW5nPSRlbmFibGV2YWwKKy1maQorLQor LSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1yZWFkbGluZSB3YXMgZ2l2ZW4uCistaWYgdGVzdCAk e2VuYWJsZV9yZWFkbGluZSt5fQorLXRoZW4gOgorLSAgZW5hYmxldmFsPSRlbmFibGVfcmVhZGxp bmU7IG9wdF9yZWFkbGluZT0kZW5hYmxldmFsCistZmkKKy0KKy0jIENoZWNrIHdoZXRoZXIgLS1l bmFibGUtcmVzdHJpY3RlZCB3YXMgZ2l2ZW4uCistaWYgdGVzdCAke2VuYWJsZV9yZXN0cmljdGVk K3l9CistdGhlbiA6CistICBlbmFibGV2YWw9JGVuYWJsZV9yZXN0cmljdGVkOyBvcHRfcmVzdHJp Y3RlZD0kZW5hYmxldmFsCistZmkKKy0KKy0jIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtc2VsZWN0 IHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICR7ZW5hYmxlX3NlbGVjdCt5fQorLXRoZW4gOgorLSAgZW5h YmxldmFsPSRlbmFibGVfc2VsZWN0OyBvcHRfc2VsZWN0PSRlbmFibGV2YWwKKy1maQorLQorLSMg Q2hlY2sgd2hldGhlciAtLWVuYWJsZS1zZXBhcmF0ZS1oZWxwZmlsZXMgd2FzIGdpdmVuLgorLWlm IHRlc3QgJHtlbmFibGVfc2VwYXJhdGVfaGVscGZpbGVzK3l9CistdGhlbiA6CistICBlbmFibGV2 YWw9JGVuYWJsZV9zZXBhcmF0ZV9oZWxwZmlsZXM7IG9wdF9zZXBhcmF0ZV9oZWxwPSRlbmFibGV2 YWwKKy1maQorLQorLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1zaW5nbGUtaGVscC1zdHJpbmdz IHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICR7ZW5hYmxlX3NpbmdsZV9oZWxwX3N0cmluZ3MreX0KKy10 aGVuIDoKKy0gIGVuYWJsZXZhbD0kZW5hYmxlX3NpbmdsZV9oZWxwX3N0cmluZ3M7IG9wdF9zaW5n bGVfbG9uZ2RvY19zdHJpbmdzPSRlbmFibGV2YWwKKy1maQorLQorLSMgQ2hlY2sgd2hldGhlciAt LWVuYWJsZS1zdHJpY3QtcG9zaXgtZGVmYXVsdCB3YXMgZ2l2ZW4uCistaWYgdGVzdCAke2VuYWJs ZV9zdHJpY3RfcG9zaXhfZGVmYXVsdCt5fQorLXRoZW4gOgorLSAgZW5hYmxldmFsPSRlbmFibGVf c3RyaWN0X3Bvc2l4X2RlZmF1bHQ7IG9wdF9zdHJpY3RfcG9zaXg9JGVuYWJsZXZhbAorLWZpCist CistIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXRyYW5zbGF0YWJsZS1zdHJpbmdzIHdhcyBnaXZl bi4KKy1pZiB0ZXN0ICR7ZW5hYmxlX3RyYW5zbGF0YWJsZV9zdHJpbmdzK3l9CistdGhlbiA6Cist ICBlbmFibGV2YWw9JGVuYWJsZV90cmFuc2xhdGFibGVfc3RyaW5nczsgb3B0X3RyYW5zbGF0YWJs ZV9zdHJpbmdzPSRlbmFibGV2YWwKKy1maQorLQorLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS11 c2ctZWNoby1kZWZhdWx0IHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICR7ZW5hYmxlX3VzZ19lY2hvX2Rl ZmF1bHQreX0KKy10aGVuIDoKKy0gIGVuYWJsZXZhbD0kZW5hYmxlX3VzZ19lY2hvX2RlZmF1bHQ7 IG9wdF94cGdfZWNobz0kZW5hYmxldmFsCistZmkKKy0KKy0jIENoZWNrIHdoZXRoZXIgLS1lbmFi bGUteHBnLWVjaG8tZGVmYXVsdCB3YXMgZ2l2ZW4uCistaWYgdGVzdCAke2VuYWJsZV94cGdfZWNo b19kZWZhdWx0K3l9CistdGhlbiA6CistICBlbmFibGV2YWw9JGVuYWJsZV94cGdfZWNob19kZWZh dWx0OyBvcHRfeHBnX2VjaG89JGVuYWJsZXZhbAorLWZpCistCistCistIyBDaGVjayB3aGV0aGVy IC0tZW5hYmxlLW1lbS1zY3JhbWJsZSB3YXMgZ2l2ZW4uCistaWYgdGVzdCAke2VuYWJsZV9tZW1f c2NyYW1ibGUreX0KKy10aGVuIDoKKy0gIGVuYWJsZXZhbD0kZW5hYmxlX21lbV9zY3JhbWJsZTsg b3B0X21lbXNjcmFtYmxlPSRlbmFibGV2YWwKKy1maQorLQorLSMgQ2hlY2sgd2hldGhlciAtLWVu YWJsZS1wcm9maWxpbmcgd2FzIGdpdmVuLgorLWlmIHRlc3QgJHtlbmFibGVfcHJvZmlsaW5nK3l9 CistdGhlbiA6CistICBlbmFibGV2YWw9JGVuYWJsZV9wcm9maWxpbmc7IG9wdF9wcm9maWxpbmc9 JGVuYWJsZXZhbAorLWZpCistCistIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXN0YXRpYy1saW5r IHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICR7ZW5hYmxlX3N0YXRpY19saW5rK3l9CistdGhlbiA6Cist ICBlbmFibGV2YWw9JGVuYWJsZV9zdGF0aWNfbGluazsgb3B0X3N0YXRpY19saW5rPSRlbmFibGV2 YWwKKy1maQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLWlmIHRlc3QgJG9wdF9hbGlhcyA9 IHllczsgdGhlbgorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgQUxJQVMgMSIgPj5jb25mZGVmcy5o CistCistZmkKKy1pZiB0ZXN0ICRvcHRfZGlyc3RhY2sgPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVz XG4iICIjZGVmaW5lIFBVU0hEX0FORF9QT1BEIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistaWYg dGVzdCAkb3B0X3Jlc3RyaWN0ZWQgPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5l IFJFU1RSSUNURURfU0hFTEwgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1pZiB0ZXN0ICRvcHRf cHJvY2Vzc19zdWJzdCA9IHllczsgdGhlbgorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgUFJPQ0VT U19TVUJTVElUVVRJT04gMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1pZiB0ZXN0ICRvcHRfcHJv bXB0X2RlY29kaW5nID0geWVzOyB0aGVuCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBQUk9NUFRf U1RSSU5HX0RFQ09ERSAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWlmIHRlc3QgJG9wdF9zZWxl Y3QgPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIFNFTEVDVF9DT01NQU5EIDEi ID4+Y29uZmRlZnMuaAorLQorLWZpCistaWYgdGVzdCAkb3B0X2hlbHAgPSB5ZXM7IHRoZW4KKy1w cmludGYgIiVzXG4iICIjZGVmaW5lIEhFTFBfQlVJTFRJTiAxIiA+PmNvbmZkZWZzLmgKKy0KKy1m aQorLWlmIHRlc3QgJG9wdF9hcnJheV92YXJpYWJsZXMgPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVz XG4iICIjZGVmaW5lIEFSUkFZX1ZBUlMgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1pZiB0ZXN0 ICRvcHRfZHBhcmVuX2FyaXRoID0geWVzOyB0aGVuCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBE UEFSRU5fQVJJVEhNRVRJQyAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWlmIHRlc3QgJG9wdF9i cmFjZV9leHBhbnNpb24gPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEJSQUNF X0VYUEFOU0lPTiAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWlmIHRlc3QgJG9wdF9kaXNhYmxl ZF9idWlsdGlucyA9IHllczsgdGhlbgorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgRElTQUJMRURf QlVJTFRJTlMgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1pZiB0ZXN0ICRvcHRfY29tbWFuZF90 aW1pbmcgPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIENPTU1BTkRfVElNSU5H IDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistaWYgdGVzdCAkb3B0X3hwZ19lY2hvID0geWVzIDsg dGhlbgorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgREVGQVVMVF9FQ0hPX1RPX1hQRyAxIiA+PmNv bmZkZWZzLmgKKy0KKy1maQorLWlmIHRlc3QgJG9wdF9zdHJpY3RfcG9zaXggPSB5ZXM7IHRoZW4K Ky1wcmludGYgIiVzXG4iICIjZGVmaW5lIFNUUklDVF9QT1NJWCAxIiA+PmNvbmZkZWZzLmgKKy0K Ky1maQorLWlmIHRlc3QgJG9wdF9leHRlbmRlZF9nbG9iID0geWVzIDsgdGhlbgorLXByaW50ZiAi JXNcbiIgIiNkZWZpbmUgRVhURU5ERURfR0xPQiAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWlm IHRlc3QgJG9wdF9leHRnbG9iX2RlZmF1bHQgPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVzXG4iICIj ZGVmaW5lIEVYVEdMT0JfREVGQVVMVCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1lbHNlCistcHJpbnRm ICIlc1xuIiAiI2RlZmluZSBFWFRHTE9CX0RFRkFVTFQgMCIgPj5jb25mZGVmcy5oCistCistZmkK Ky1pZiB0ZXN0ICRvcHRfY29uZF9jb21tYW5kID0geWVzIDsgdGhlbgorLXByaW50ZiAiJXNcbiIg IiNkZWZpbmUgQ09ORF9DT01NQU5EIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistaWYgdGVzdCAk b3B0X2NvbmRfcmVnZXhwID0geWVzIDsgdGhlbgorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgQ09O RF9SRUdFWFAgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1pZiB0ZXN0ICRvcHRfY29wcm9jID0g eWVzOyB0aGVuCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBDT1BST0NFU1NfU1VQUE9SVCAxIiA+ PmNvbmZkZWZzLmgKKy0KKy1maQorLWlmIHRlc3QgJG9wdF9hcml0aF9mb3JfY29tbWFuZCA9IHll czsgdGhlbgorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgQVJJVEhfRk9SX0NPTU1BTkQgMSIgPj5j b25mZGVmcy5oCistCistZmkKKy1pZiB0ZXN0ICRvcHRfbmV0X3JlZGlycyA9IHllczsgdGhlbgor LXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgTkVUV09SS19SRURJUkVDVElPTlMgMSIgPj5jb25mZGVm cy5oCistCistZmkKKy1pZiB0ZXN0ICRvcHRfcHJvZ2NvbXAgPSB5ZXM7IHRoZW4KKy1wcmludGYg IiVzXG4iICIjZGVmaW5lIFBST0dSQU1NQUJMRV9DT01QTEVUSU9OIDEiID4+Y29uZmRlZnMuaAor LQorLWZpCistaWYgdGVzdCAkb3B0X211bHRpYnl0ZSA9IG5vOyB0aGVuCistcHJpbnRmICIlc1xu IiAiI2RlZmluZSBOT19NVUxUSUJZVEVfU1VQUE9SVCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQor LWlmIHRlc3QgJG9wdF9kZWJ1Z2dlciA9IHllczsgdGhlbgorLXByaW50ZiAiJXNcbiIgIiNkZWZp bmUgREVCVUdHRVIgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1pZiB0ZXN0ICRvcHRfY2FzZW1v ZF9hdHRycyA9IHllczsgdGhlbgorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgQ0FTRU1PRF9BVFRS UyAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWlmIHRlc3QgJG9wdF9jYXNlbW9kX2V4cGFuc2lv bnMgPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIENBU0VNT0RfRVhQQU5TSU9O UyAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWlmIHRlc3QgJG9wdF9kaXJjb21wbGV0ZV9leHBh bmRfZGVmYXVsdCA9IHllczsgdGhlbgorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgRElSQ09NUExF VEVfRVhQQU5EX0RFRkFVTFQgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1pZiB0ZXN0ICRvcHRf Z2xvYmFzY2lpX2RlZmF1bHQgPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEdM T0JBU0NJSV9ERUZBVUxUIDEiID4+Y29uZmRlZnMuaAorLQorLWVsc2UKKy1wcmludGYgIiVzXG4i ICIjZGVmaW5lIEdMT0JBU0NJSV9ERUZBVUxUIDAiID4+Y29uZmRlZnMuaAorLQorLWZpCistaWYg dGVzdCAkb3B0X2Z1bmN0aW9uX2ltcG9ydCA9IHllczsgdGhlbgorLXByaW50ZiAiJXNcbiIgIiNk ZWZpbmUgRlVOQ1RJT05fSU1QT1JUIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistaWYgdGVzdCAk b3B0X2Rldl9mZF9zdGF0X2Jyb2tlbiA9IHllczsgdGhlbgorLXByaW50ZiAiJXNcbiIgIiNkZWZp bmUgREVWX0ZEX1NUQVRfQlJPS0VOIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistaWYgdGVzdCAk b3B0X2FsdF9hcnJheV9pbXBsID0geWVzOyB0aGVuCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBB TFRfQVJSQVlfSU1QTEVNRU5UQVRJT04gMSIgPj5jb25mZGVmcy5oCistCistQVJSQVlfTz1hcnJh eTIubworLWZpCistaWYgdGVzdCAkb3B0X3RyYW5zbGF0YWJsZV9zdHJpbmdzID0geWVzOyB0aGVu CistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBUUkFOU0xBVEFCTEVfU1RSSU5HUyAxIiA+PmNvbmZk ZWZzLmgKKy0KKy1maQorLWlmIHRlc3QgJG9wdF9iYXNoX3NvdXJjZV9mdWxscGF0aF9kZWZhdWx0 ID0geWVzOyB0aGVuCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBCQVNIX1NPVVJDRV9GVUxMUEFU SF9ERUZBVUxUIDEiID4+Y29uZmRlZnMuaAorLQorLWVsc2UKKy1wcmludGYgIiVzXG4iICIjZGVm aW5lIEJBU0hfU09VUkNFX0ZVTExQQVRIX0RFRkFVTFQgMCIgPj5jb25mZGVmcy5oCistCistZmkK Ky0KKy1pZiB0ZXN0ICRvcHRfbWVtc2NyYW1ibGUgPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVzXG4i ICIjZGVmaW5lIE1FTVNDUkFNQkxFIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCistaWYgdGVz dCAiJG9wdF9taW5pbWFsX2NvbmZpZyIgPSB5ZXM7IHRoZW4KKy0JVEVTVFNDUklQVD1ydW4tbWlu aW1hbAorLWVsc2UKKy0JVEVTVFNDUklQVD1ydW4tYWxsCistZmkKKy0KKy1IRUxQRElSPSBIRUxQ RElSREVGSU5FPSBIRUxQSU5TVEFMTD0gSEVMUEZJTEVTX1RBUkdFVD0KKy1pZiB0ZXN0ICIkb3B0 X3NlcGFyYXRlX2hlbHAiICE9IG5vOyB0aGVuCistCWlmIHRlc3QgIiRvcHRfc2VwYXJhdGVfaGVs cCIgPSAieWVzIiA7IHRoZW4KKy0JCUhFTFBESVI9JyR7ZGF0YWRpcn0vYmFzaC9oZWxwZmlsZXMn CistCWVsc2UKKy0JCUhFTFBESVI9JG9wdF9zZXBhcmF0ZV9oZWxwCistCWZpCistCUhFTFBESVJE RUZJTkU9Jy1IICR7SEVMUERJUn0nCistCUhFTFBJTlNUQUxMPSdpbnN0YWxsLWhlbHAnCistCUhF TFBGSUxFU19UQVJHRVQ9J2hlbHBkb2MnCistZmkKKy1IRUxQU1RSSU5HUz0KKy1pZiB0ZXN0ICIk b3B0X3NpbmdsZV9sb25nZG9jX3N0cmluZ3MiICE9ICJ5ZXMiOyB0aGVuCistCUhFTFBTVFJJTkdT PSctUycKKy1maQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQor LQorLQorLQorLQorLQorLWlmIHRlc3QgLXogIiRDRkxBR1MiOyB0aGVuCistCXdhbnRfYXV0b19j ZmxhZ3M9MQorLWZpCistCistZWNobyAiIgorLWVjaG8gIkJlZ2lubmluZyBjb25maWd1cmF0aW9u IGZvciBiYXNoLSRCQVNIVkVSUy0kUkVMU1RBVFVTIGZvciAke2hvc3RfY3B1fS0ke2hvc3RfdmVu ZG9yfS0ke2hvc3Rfb3N9IgorLWVjaG8gIiIKKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0K Ky1hY19leHQ9YworLWFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCistYWNfY29tcGlsZT0nJENDIC1j ICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworLWFjX2xpbms9JyRDQyAt byBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3Qu JGFjX2V4dCAkTElCUyA+JjUnCistYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2du dQorLWlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUg Zmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1nY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9n cmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWdjYzsgYWNf d29yZD0kMgorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yICRhY193 b3JkLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X3Byb2dfQ0MreX0KKy10aGVuIDoKKy0g IHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgaWYg dGVzdCAtbiAiJENDIjsgdGhlbgorLSAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNl ciBvdmVycmlkZSB0aGUgdGVzdC4KKy1lbHNlCistYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRI X1NFUEFSQVRPUgorLWZvciBhc19kaXIgaW4gJFBBVEgKKy1kbworLSAgSUZTPSRhc19zYXZlX0lG UworLSAgY2FzZSAkYXNfZGlyIGluICMoKCgKKy0gICAgJycpIGFzX2Rpcj0uLyA7OworLSAgICAq LykgOzsKKy0gICAgKikgYXNfZGlyPSRhc19kaXIvIDs7CistICBlc2FjCistICAgIGZvciBhY19l eGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworLSAgaWYgYXNfZm5f ZXhlY3V0YWJsZV9wICIkYXNfZGlyJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFj X2N2X3Byb2dfQ0M9IiR7YWNfdG9vbF9wcmVmaXh9Z2NjIgorLSAgICBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIkYWNfd29yZCRhY19leGVj X2V4dCIgPiY1CistICAgIGJyZWFrIDIKKy0gIGZpCistZG9uZQorLSAgZG9uZQorLUlGUz0kYXNf c2F2ZV9JRlMKKy0KKy1maSA7OworLWVzYWMKKy1maQorLUNDPSRhY19jdl9wcm9nX0NDCistaWYg dGVzdCAtbiAiJENDIjsgdGhlbgorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKKy1wcmludGYgIiVzXG4iICIkQ0MiID4mNjsg fQorLWVsc2UKKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiByZXN1bHQ6IG5vIiA+JjUKKy1wcmludGYgIiVzXG4iICJubyIgPiY2OyB9CistZmkKKy0KKy0K Ky1maQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0NDIjsgdGhlbgorLSAgYWNfY3RfQ0M9JEND CistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdjYyIsIHNvIGl0IGNhbiBiZSBhIHBy b2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGdjYzsgYWNfd29yZD0kMgorLXsgcHJp bnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFj X3dvcmQiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9 CistaWYgdGVzdCAke2FjX2N2X3Byb2dfYWNfY3RfQ0MreX0KKy10aGVuIDoKKy0gIHByaW50ZiAl cyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgaWYgdGVzdCAtbiAi JGFjX2N0X0NDIjsgdGhlbgorLSAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExl dCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKy1lbHNlCistYXNfc2F2ZV9JRlM9JElGUzsg SUZTPSRQQVRIX1NFUEFSQVRPUgorLWZvciBhc19kaXIgaW4gJFBBVEgKKy1kbworLSAgSUZTPSRh c19zYXZlX0lGUworLSAgY2FzZSAkYXNfZGlyIGluICMoKCgKKy0gICAgJycpIGFzX2Rpcj0uLyA7 OworLSAgICAqLykgOzsKKy0gICAgKikgYXNfZGlyPSRhc19kaXIvIDs7CistICBlc2FjCistICAg IGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworLSAg aWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVu CistICAgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9ImdjYyIKKy0gICAgcHJpbnRmICIlc1xuIiAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyJGFjX3dvcmQkYWNfZXhlY19l eHQiID4mNQorLSAgICBicmVhayAyCistICBmaQorLWRvbmUKKy0gIGRvbmUKKy1JRlM9JGFzX3Nh dmVfSUZTCistCistZmkgOzsKKy1lc2FjCistZmkKKy1hY19jdF9DQz0kYWNfY3ZfcHJvZ19hY19j dF9DQworLWlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKy0gIHsgcHJpbnRmICIlc1xuIiAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9DQyIgPiY1CistcHJp bnRmICIlc1xuIiAiJGFjX2N0X0NDIiA+JjY7IH0KKy1lbHNlCistICB7IHByaW50ZiAiJXNcbiIg IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CistcHJpbnRmICIl c1xuIiAibm8iID4mNjsgfQorLWZpCistCistICBpZiB0ZXN0ICJ4JGFjX2N0X0NDIiA9IHg7IHRo ZW4KKy0gICAgQ0M9IiIKKy0gIGVsc2UKKy0gICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190 b29sX3dhcm5lZCBpbgorLXllczopCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRo IGhvc3QgdHJpcGxldCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiBXQVJOSU5HOiB1c2lu ZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CistYWNf dG9vbF93YXJuZWQ9eWVzIDs7CistZXNhYworLSAgICBDQz0kYWNfY3RfQ0MKKy0gIGZpCistZWxz ZQorLSAgQ0M9IiRhY19jdl9wcm9nX0NDIgorLWZpCistCistaWYgdGVzdCAteiAiJENDIjsgdGhl bgorLSAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAgICMg RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1jYyIsIHNvIGl0IGNh biBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVm aXh9Y2M7IGFjX3dvcmQ9JDIKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5n IGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9wcm9nX0NDK3l9Cist dGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygK Ky0gIGUpIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKy0gIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBM ZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCistZWxzZQorLWFzX3NhdmVfSUZTPSRJRlM7 IElGUz0kUEFUSF9TRVBBUkFUT1IKKy1mb3IgYXNfZGlyIGluICRQQVRICistZG8KKy0gIElGUz0k YXNfc2F2ZV9JRlMKKy0gIGNhc2UgJGFzX2RpciBpbiAjKCgoCistICAgICcnKSBhc19kaXI9Li8g OzsKKy0gICAgKi8pIDs7CistICAgICopIGFzX2Rpcj0kYXNfZGlyLyA7OworLSAgZXNhYworLSAg ICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKy0g IGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2RpciRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhl bgorLSAgICBhY19jdl9wcm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWNjIgorLSAgICBwcmludGYg IiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIkYWNfd29y ZCRhY19leGVjX2V4dCIgPiY1CistICAgIGJyZWFrIDIKKy0gIGZpCistZG9uZQorLSAgZG9uZQor LUlGUz0kYXNfc2F2ZV9JRlMKKy0KKy1maSA7OworLWVzYWMKKy1maQorLUNDPSRhY19jdl9wcm9n X0NDCistaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKKy1wcmludGYgIiVzXG4iICIk Q0MiID4mNjsgfQorLWVsc2UKKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKy1wcmludGYgIiVzXG4iICJubyIgPiY2OyB9Cist ZmkKKy0KKy0KKy0gIGZpCistZmkKKy1pZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCistICAjIEV4dHJh Y3QgdGhlIGZpcnN0IHdvcmQgb2YgImNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdp dGggYXJncy4KKy1zZXQgZHVtbXkgY2M7IGFjX3dvcmQ9JDIKKy17IHByaW50ZiAiJXNcbiIgIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKy1w cmludGYgJXMgImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHth Y19jdl9wcm9nX0NDK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2Cist ZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKy0gIGFjX2N2 X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCistZWxzZQor LSAgYWNfcHJvZ19yZWplY3RlZD1ubworLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBB UkFUT1IKKy1mb3IgYXNfZGlyIGluICRQQVRICistZG8KKy0gIElGUz0kYXNfc2F2ZV9JRlMKKy0g IGNhc2UgJGFzX2RpciBpbiAjKCgoCistICAgICcnKSBhc19kaXI9Li8gOzsKKy0gICAgKi8pIDs7 CistICAgICopIGFzX2Rpcj0kYXNfZGlyLyA7OworLSAgZXNhYworLSAgICBmb3IgYWNfZXhlY19l eHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKy0gIGlmIGFzX2ZuX2V4ZWN1 dGFibGVfcCAiJGFzX2RpciRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBpZiB0ZXN0 ICIkYXNfZGlyJGFjX3dvcmQkYWNfZXhlY19leHQiID0gIi91c3IvdWNiL2NjIjsgdGhlbgorLSAg ICAgICBhY19wcm9nX3JlamVjdGVkPXllcworLSAgICAgICBjb250aW51ZQorLSAgICAgZmkKKy0g ICAgYWNfY3ZfcHJvZ19DQz0iY2MiCistICAgIHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogZm91bmQgJGFzX2RpciRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKy0g ICAgYnJlYWsgMgorLSAgZmkKKy1kb25lCistICBkb25lCistSUZTPSRhc19zYXZlX0lGUworLQor LWlmIHRlc3QgJGFjX3Byb2dfcmVqZWN0ZWQgPSB5ZXM7IHRoZW4KKy0gICMgV2UgZm91bmQgYSBi b2dvbiBpbiB0aGUgcGF0aCwgc28gbWFrZSBzdXJlIHdlIG5ldmVyIHVzZSBpdC4KKy0gIHNldCBk dW1teSAkYWNfY3ZfcHJvZ19DQworLSAgc2hpZnQKKy0gIGlmIHRlc3QgJCMgIT0gMDsgdGhlbgor LSAgICAjIFdlIGNob3NlIGEgZGlmZmVyZW50IGNvbXBpbGVyIGZyb20gdGhlIGJvZ3VzIG9uZS4K Ky0gICAgIyBIb3dldmVyLCBpdCBoYXMgdGhlIHNhbWUgYmFzZW5hbWUsIHNvIHRoZSBib2dvbiB3 aWxsIGJlIGNob3NlbgorLSAgICAjIGZpcnN0IGlmIHdlIHNldCBDQyB0byBqdXN0IHRoZSBiYXNl bmFtZTsgdXNlIHRoZSBmdWxsIGZpbGUgbmFtZS4KKy0gICAgc2hpZnQKKy0gICAgYWNfY3ZfcHJv Z19DQz0iJGFzX2RpciRhY193b3JkJHsxKycgJ30kQCIKKy0gIGZpCistZmkKKy1maSA7OworLWVz YWMKKy1maQorLUNDPSRhY19jdl9wcm9nX0NDCistaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorLSAg eyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEND IiA+JjUKKy1wcmludGYgIiVzXG4iICIkQ0MiID4mNjsgfQorLWVsc2UKKy0gIHsgcHJpbnRmICIl c1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKy1wcmlu dGYgIiVzXG4iICJubyIgPiY2OyB9CistZmkKKy0KKy0KKy1maQorLWlmIHRlc3QgLXogIiRDQyI7 IHRoZW4KKy0gIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gIGZvciBhY19w cm9nIGluIGNsLmV4ZQorLSAgZG8KKy0gICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIk YWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRo IGFyZ3MuCistc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCist eyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv ciAkYWNfd29yZCIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+ JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfcHJvZ19DQyt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVz ICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiB0ZXN0IC1uICIk Q0MiOyB0aGVuCistICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRl IHRoZSB0ZXN0LgorLWVsc2UKKy1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9S CistZm9yIGFzX2RpciBpbiAkUEFUSAorLWRvCistICBJRlM9JGFzX3NhdmVfSUZTCistICBjYXNl ICRhc19kaXIgaW4gIygoKAorLSAgICAnJykgYXNfZGlyPS4vIDs7CistICAgICovKSA7OworLSAg ICAqKSBhc19kaXI9JGFzX2Rpci8gOzsKKy0gIGVzYWMKKy0gICAgZm9yIGFjX2V4ZWNfZXh0IGlu ICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistICBpZiBhc19mbl9leGVjdXRhYmxl X3AgIiRhc19kaXIkYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19D Qz0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCistICAgIHByaW50ZiAiJXNcbiIgIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2RpciRhY193b3JkJGFjX2V4ZWNfZXh0IiA+ JjUKKy0gICAgYnJlYWsgMgorLSAgZmkKKy1kb25lCistICBkb25lCistSUZTPSRhc19zYXZlX0lG UworLQorLWZpIDs7CistZXNhYworLWZpCistQ0M9JGFjX2N2X3Byb2dfQ0MKKy1pZiB0ZXN0IC1u ICIkQ0MiOyB0aGVuCistICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkQ0MiID4mNQorLXByaW50ZiAiJXNcbiIgIiRDQyIgPiY2OyB9CistZWxz ZQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogbm8iID4mNQorLXByaW50ZiAiJXNcbiIgIm5vIiA+JjY7IH0KKy1maQorLQorLQorLSAgICB0 ZXN0IC1uICIkQ0MiICYmIGJyZWFrCistICBkb25lCistZmkKKy1pZiB0ZXN0IC16ICIkQ0MiOyB0 aGVuCistICBhY19jdF9DQz0kQ0MKKy0gIGZvciBhY19wcm9nIGluIGNsLmV4ZQorLWRvCistICAj IEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJv Z3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKy17 IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y ICRhY193b3JkIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4m NjsgfQorLWlmIHRlc3QgJHthY19jdl9wcm9nX2FjX2N0X0NDK3l9CistdGhlbiA6CistICBwcmlu dGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3Qg LW4gIiRhY19jdF9DQyI7IHRoZW4KKy0gIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19jdF9DQyIg IyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCistZWxzZQorLWFzX3NhdmVfSUZTPSRJ RlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKy1mb3IgYXNfZGlyIGluICRQQVRICistZG8KKy0gIElG Uz0kYXNfc2F2ZV9JRlMKKy0gIGNhc2UgJGFzX2RpciBpbiAjKCgoCistICAgICcnKSBhc19kaXI9 Li8gOzsKKy0gICAgKi8pIDs7CistICAgICopIGFzX2Rpcj0kYXNfZGlyLyA7OworLSAgZXNhYwor LSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8K Ky0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2RpciRhY193b3JkJGFjX2V4ZWNfZXh0Ijsg dGhlbgorLSAgICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfcHJvZyIKKy0gICAgcHJpbnRmICIl c1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyJGFjX3dvcmQk YWNfZXhlY19leHQiID4mNQorLSAgICBicmVhayAyCistICBmaQorLWRvbmUKKy0gIGRvbmUKKy1J RlM9JGFzX3NhdmVfSUZTCistCistZmkgOzsKKy1lc2FjCistZmkKKy1hY19jdF9DQz0kYWNfY3Zf cHJvZ19hY19jdF9DQworLWlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKy0gIHsgcHJpbnRm ICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9DQyIg PiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N0X0NDIiA+JjY7IH0KKy1lbHNlCistICB7IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Cist cHJpbnRmICIlc1xuIiAibm8iID4mNjsgfQorLWZpCistCistCistICB0ZXN0IC1uICIkYWNfY3Rf Q0MiICYmIGJyZWFrCistZG9uZQorLQorLSAgaWYgdGVzdCAieCRhY19jdF9DQyIgPSB4OyB0aGVu CistICAgIENDPSIiCistICBlbHNlCistICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9v bF93YXJuZWQgaW4KKy15ZXM6KQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBo b3N0IHRyaXBsZXQiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogV0FSTklORzogdXNpbmcg Y3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorLWFjX3Rv b2xfd2FybmVkPXllcyA7OworLWVzYWMKKy0gICAgQ0M9JGFjX2N0X0NDCistICBmaQorLWZpCist CistZmkKKy1pZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCistICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9w cmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9w cmVmaXh9Y2xhbmciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNl dCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWNsYW5nOyBhY193b3JkPSQyCisteyBwcmludGYgIiVz XG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIg PiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKy1pZiB0 ZXN0ICR7YWNfY3ZfcHJvZ19DQyt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAi ID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCist ICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0Lgor LWVsc2UKKy1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCistZm9yIGFzX2Rp ciBpbiAkUEFUSAorLWRvCistICBJRlM9JGFzX3NhdmVfSUZTCistICBjYXNlICRhc19kaXIgaW4g IygoKAorLSAgICAnJykgYXNfZGlyPS4vIDs7CistICAgICovKSA7OworLSAgICAqKSBhc19kaXI9 JGFzX2Rpci8gOzsKKy0gIGVzYWMKKy0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVj dXRhYmxlX2V4dGVuc2lvbnM7IGRvCistICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIk YWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19DQz0iJHthY190b29s X3ByZWZpeH1jbGFuZyIKKy0gICAgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBmb3VuZCAkYXNfZGlyJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorLSAgICBicmVh ayAyCistICBmaQorLWRvbmUKKy0gIGRvbmUKKy1JRlM9JGFzX3NhdmVfSUZTCistCistZmkgOzsK Ky1lc2FjCistZmkKKy1DQz0kYWNfY3ZfcHJvZ19DQworLWlmIHRlc3QgLW4gIiRDQyI7IHRoZW4K Ky0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 ICRDQyIgPiY1CistcHJpbnRmICIlc1xuIiAiJENDIiA+JjY7IH0KKy1lbHNlCistICB7IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Cist cHJpbnRmICIlc1xuIiAibm8iID4mNjsgfQorLWZpCistCistCistZmkKKy1pZiB0ZXN0IC16ICIk YWNfY3ZfcHJvZ19DQyI7IHRoZW4KKy0gIGFjX2N0X0NDPSRDQworLSAgIyBFeHRyYWN0IHRoZSBm aXJzdCB3b3JkIG9mICJjbGFuZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFy Z3MuCistc2V0IGR1bW15IGNsYW5nOyBhY193b3JkPSQyCisteyBwcmludGYgIiVzXG4iICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CistcHJp bnRmICVzICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNf Y3ZfcHJvZ19hY19jdF9DQyt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4m NgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVu CistICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfY3RfQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJy aWRlIHRoZSB0ZXN0LgorLWVsc2UKKy1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJB VE9SCistZm9yIGFzX2RpciBpbiAkUEFUSAorLWRvCistICBJRlM9JGFzX3NhdmVfSUZTCistICBj YXNlICRhc19kaXIgaW4gIygoKAorLSAgICAnJykgYXNfZGlyPS4vIDs7CistICAgICovKSA7Owor LSAgICAqKSBhc19kaXI9JGFzX2Rpci8gOzsKKy0gIGVzYWMKKy0gICAgZm9yIGFjX2V4ZWNfZXh0 IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistICBpZiBhc19mbl9leGVjdXRh YmxlX3AgIiRhc19kaXIkYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJv Z19hY19jdF9DQz0iY2xhbmciCistICAgIHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogZm91bmQgJGFzX2RpciRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKy0gICAg YnJlYWsgMgorLSAgZmkKKy1kb25lCistICBkb25lCistSUZTPSRhc19zYXZlX0lGUworLQorLWZp IDs7CistZXNhYworLWZpCistYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKKy1pZiB0ZXN0 IC1uICIkYWNfY3RfQ0MiOyB0aGVuCistICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQorLXByaW50ZiAiJXNcbiIgIiRh Y19jdF9DQyIgPiY2OyB9CistZWxzZQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorLXByaW50ZiAiJXNcbiIgIm5vIiA+JjY7 IH0KKy1maQorLQorLSAgaWYgdGVzdCAieCRhY19jdF9DQyIgPSB4OyB0aGVuCistICAgIENDPSIi CistICBlbHNlCistICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4K Ky15ZXM6KQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBX QVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQi ID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMg bm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorLWFjX3Rvb2xfd2FybmVkPXll cyA7OworLWVzYWMKKy0gICAgQ0M9JGFjX2N0X0NDCistICBmaQorLWVsc2UKKy0gIENDPSIkYWNf Y3ZfcHJvZ19DQyIKKy1maQorLQorLWZpCistCistCistdGVzdCAteiAiJENDIiAmJiB7IHsgcHJp bnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gJyRhY19w d2QnOiIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiBlcnJvcjogaW4gJyRhY19wd2QnOiIg PiYyO30KKy1hc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBDIGNvbXBpbGVyIGZvdW5kIGlu IFwkUEFUSAorLVNlZSAnY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7 IH0KKy0KKy0jIFByb3ZpZGUgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tcGlsZXIuCist cHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig QyBjb21waWxlciB2ZXJzaW9uIiA+JjUKKy1zZXQgWCAkYWNfY29tcGlsZQorLWFjX2NvbXBpbGVy PSQyCistZm9yIGFjX29wdGlvbiBpbiAtLXZlcnNpb24gLXYgLVYgLXF2ZXJzaW9uIC12ZXJzaW9u OyBkbworLSAgeyB7IGFjX3RyeT0iJGFjX2NvbXBpbGVyICRhY19vcHRpb24gPiY1IgorLWNhc2Ug IigoJGFjX3RyeSIgaW4KKy0gICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190 cnk7OworLSAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7CistZXNhYworLWV2YWwgYWNfdHJ5X2Vj aG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCistcHJp bnRmICIlc1xuIiAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKy0gIChldmFsICIkYWNfY29tcGlsZXIg JGFjX29wdGlvbiA+JjUiKSAyPmNvbmZ0ZXN0LmVycgorLSAgYWNfc3RhdHVzPSQ/CistICBpZiB0 ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorLSAgICBzZWQgJzEwYVwKKy0uLi4gcmVzdCBvZiBz dGRlcnIgb3V0cHV0IGRlbGV0ZWQgLi4uCistICAgICAgICAgMTBxJyBjb25mdGVzdC5lcnIgPmNv bmZ0ZXN0LmVyMQorLSAgICBjYXQgY29uZnRlc3QuZXIxID4mNQorLSAgZmkKKy0gIHJtIC1mIGNv bmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIKKy0gIHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CistICB0ZXN0ICRhY19zdGF0dXMg PSAwOyB9CistZG9uZQorLQorLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh Y19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCistaW50CistbWFpbiAodm9pZCkKKy17 CistCistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCistYWNfY2xlYW5fZmlsZXNfc2F2 ZT0kYWNfY2xlYW5fZmlsZXMKKy1hY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzIGEub3V0 IGEub3V0LmRTWU0gYS5leGUgYi5vdXQiCistIyBUcnkgdG8gY3JlYXRlIGFuIGV4ZWN1dGFibGUg d2l0aG91dCAtbyBmaXJzdCwgZGlzcmVnYXJkIGEub3V0LgorLSMgSXQgd2lsbCBoZWxwIHVzIGRp YWdub3NlIGJyb2tlbiBjb21waWxlcnMsIGFuZCBmaW5kaW5nIG91dCBhbiBpbnR1aXRpb24KKy0j IG9mIGV4ZWV4dC4KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciB3b3JrcyIgPiY1CistcHJpbnRmICVz ICJjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHdvcmtzLi4uICIgPiY2OyB9CistYWNf bGlua19kZWZhdWx0PWBwcmludGYgIiVzXG4iICIkYWNfbGluayIgfCBzZWQgJ3MvIC1vICpjb25m dGVzdFteIF0qLy8nYAorLQorLSMgVGhlIHBvc3NpYmxlIG91dHB1dCBmaWxlczoKKy1hY19maWxl cz0iYS5vdXQgY29uZnRlc3QuZXhlIGNvbmZ0ZXN0IGEuZXhlIGFfb3V0LmV4ZSBiLm91dCBjb25m dGVzdC4qIgorLQorLWFjX3JtZmlsZXM9CistZm9yIGFjX2ZpbGUgaW4gJGFjX2ZpbGVzCistZG8K Ky0gIGNhc2UgJGFjX2ZpbGUgaW4KKy0gICAgKi4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwg Ki5kIHwgKi5wZGIgfCAqLnhTWU0gfCAqLmJiIHwgKi5iYmcgfCAqLm1hcCB8ICouaW5mIHwgKi5k U1lNIHwgKi5vIHwgKi5vYmogKSA7OworLSAgICAqICkgYWNfcm1maWxlcz0iJGFjX3JtZmlsZXMg JGFjX2ZpbGUiOzsKKy0gIGVzYWMKKy1kb25lCistcm0gLWYgJGFjX3JtZmlsZXMKKy0KKy1pZiB7 IHsgYWNfdHJ5PSIkYWNfbGlua19kZWZhdWx0IgorLWNhc2UgIigoJGFjX3RyeSIgaW4KKy0gICpc IiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworLSAgKikgYWNfdHJ5X2Vj aG89JGFjX3RyeTs7CistZXNhYworLWV2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCistcHJpbnRmICIlc1xuIiAiJGFjX3RyeV9l Y2hvIjsgfSA+JjUKKy0gIChldmFsICIkYWNfbGlua19kZWZhdWx0IikgMj4mNQorLSAgYWNfc3Rh dHVzPSQ/CistICBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwk PyA9ICRhY19zdGF0dXMiID4mNQorLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorLXRoZW4gOgor LSAgIyBBdXRvY29uZi0yLjEzIGNvdWxkIHNldCB0aGUgYWNfY3ZfZXhlZXh0IHZhcmlhYmxlIHRv ICdubycuCistIyBTbyBpZ25vcmUgYSB2YWx1ZSBvZiAnbm8nLCBvdGhlcndpc2UgdGhpcyB3b3Vs ZCBsZWFkIHRvICdFWEVFWFQgPSBubycKKy0jIGluIGEgTWFrZWZpbGUuICBXZSBzaG91bGQgbm90 IG92ZXJyaWRlIGFjX2N2X2V4ZWV4dCBpZiBpdCB3YXMgY2FjaGVkLAorLSMgc28gdGhhdCB0aGUg dXNlciBjYW4gc2hvcnQtY2lyY3VpdCB0aGlzIHRlc3QgZm9yIGNvbXBpbGVycyB1bmtub3duIHRv CistIyBBdXRvY29uZi4KKy1mb3IgYWNfZmlsZSBpbiAkYWNfZmlsZXMgJycKKy1kbworLSAgdGVz dCAtZiAiJGFjX2ZpbGUiIHx8IGNvbnRpbnVlCistICBjYXNlICRhY19maWxlIGluCistICAgICou JGFjX2V4dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8 ICouYmJnIHwgKi5tYXAgfCAqLmluZiB8ICouZFNZTSB8ICoubyB8ICoub2JqICkKKy0JOzsKKy0g ICAgW2FiXS5vdXQgKQorLQkjIFdlIGZvdW5kIHRoZSBkZWZhdWx0IGV4ZWN1dGFibGUsIGJ1dCBl eGVleHQ9JycgaXMgbW9zdAorLQkjIGNlcnRhaW5seSByaWdodC4KKy0JYnJlYWs7OworLSAgICAq LiogKQorLQlpZiB0ZXN0ICR7YWNfY3ZfZXhlZXh0K3l9ICYmIHRlc3QgIiRhY19jdl9leGVleHQi ICE9IG5vOworLQl0aGVuIDo7IGVsc2UKKy0JICAgYWNfY3ZfZXhlZXh0PWBleHByICIkYWNfZmls ZSIgOiAnW14uXSpcKFwuLipcKSdgCistCWZpCistCSMgV2Ugc2V0IGFjX2N2X2V4ZWV4dCBoZXJl IGJlY2F1c2UgdGhlIGxhdGVyIHRlc3QgZm9yIGl0IGlzIG5vdAorLQkjIHNhZmU6IGNyb3NzIGNv bXBpbGVycyBtYXkgbm90IGFkZCB0aGUgc3VmZml4IGlmIGdpdmVuIGFuICctbycKKy0JIyBhcmd1 bWVudCwgc28gd2UgbWF5IG5lZWQgdG8ga25vdyBpdCBhdCB0aGF0IHBvaW50IGFscmVhZHkuCist CSMgRXZlbiBpZiB0aGlzIHNlY3Rpb24gbG9va3MgY3J1ZnR5OiBpdCBoYXMgdGhlIGFkdmFudGFn ZSBvZgorLQkjIGFjdHVhbGx5IHdvcmtpbmcuCistCWJyZWFrOzsKKy0gICAgKiApCistCWJyZWFr OzsKKy0gIGVzYWMKKy1kb25lCistdGVzdCAiJGFjX2N2X2V4ZWV4dCIgPSBubyAmJiBhY19jdl9l eGVleHQ9CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2ZpbGU9JycgOzsKKy1lc2Fj CistZmkKKy1pZiB0ZXN0IC16ICIkYWNfZmlsZSIKKy10aGVuIDoKKy0gIHsgcHJpbnRmICIlc1xu IiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKy1wcmludGYg IiVzXG4iICJubyIgPiY2OyB9CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiBmYWlsZWQgcHJvZ3Jh bSB3YXM6IiA+JjUKKy1zZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CistCisteyB7 IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluICck YWNfcHdkJzoiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogZXJyb3I6IGluICckYWNfcHdk JzoiID4mMjt9CistYXNfZm5fZXJyb3IgNzcgIkMgY29tcGlsZXIgY2Fubm90IGNyZWF0ZSBleGVj dXRhYmxlcworLVNlZSAnY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7 IH0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKy1wcmludGYgIiVzXG4iICJ5ZXMi ID4mNjsgfSA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQyBjb21waWxlciBkZWZhdWx0IG91dHB1dCBmaWxl IG5hbWUiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgZGVmYXVsdCBv dXRwdXQgZmlsZSBuYW1lLi4uICIgPiY2OyB9CisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2ZpbGUiID4mNQorLXByaW50ZiAiJXNcbiIg IiRhY19maWxlIiA+JjY7IH0KKy1hY19leGVleHQ9JGFjX2N2X2V4ZWV4dAorLQorLXJtIC1mIC1y IGEub3V0IGEub3V0LmRTWU0gYS5leGUgY29uZnRlc3QkYWNfY3ZfZXhlZXh0IGIub3V0CistYWNf Y2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUKKy17IHByaW50ZiAiJXNcbiIgIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBleGVjdXRhYmxl cyIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3Igc3VmZml4IG9mIGV4ZWN1dGFibGVzLi4u ICIgPiY2OyB9CistaWYgeyB7IGFjX3RyeT0iJGFjX2xpbmsiCistY2FzZSAiKCgkYWNfdHJ5IiBp bgorLSAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CistICAqKSBh Y190cnlfZWNobz0kYWNfdHJ5OzsKKy1lc2FjCistZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKy1wcmludGYgIiVzXG4iICIk YWNfdHJ5X2VjaG8iOyB9ID4mNQorLSAgKGV2YWwgIiRhY19saW5rIikgMj4mNQorLSAgYWNfc3Rh dHVzPSQ/CistICBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwk PyA9ICRhY19zdGF0dXMiID4mNQorLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorLXRoZW4gOgor LSAgIyBJZiBib3RoICdjb25mdGVzdC5leGUnIGFuZCAnY29uZnRlc3QnIGFyZSAncHJlc2VudCcg KHdlbGwsIG9ic2VydmFibGUpCistIyBjYXRjaCAnY29uZnRlc3QuZXhlJy4gIEZvciBpbnN0YW5j ZSB3aXRoIEN5Z3dpbiwgJ2xzIGNvbmZ0ZXN0JyB3aWxsCistIyB3b3JrIHByb3Blcmx5IChpLmUu LCByZWZlciB0byAnY29uZnRlc3QuZXhlJyksIHdoaWxlIGl0IHdvbid0IHdpdGgKKy0jICdybScu CistZm9yIGFjX2ZpbGUgaW4gY29uZnRlc3QuZXhlIGNvbmZ0ZXN0IGNvbmZ0ZXN0Lio7IGRvCist ICB0ZXN0IC1mICIkYWNfZmlsZSIgfHwgY29udGludWUKKy0gIGNhc2UgJGFjX2ZpbGUgaW4KKy0g ICAgKi4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIgfCAqLnhTWU0gfCAq LmJiIHwgKi5iYmcgfCAqLm1hcCB8ICouaW5mIHwgKi5kU1lNIHwgKi5vIHwgKi5vYmogKSA7Owor LSAgICAqLiogKSBhY19jdl9leGVleHQ9YGV4cHIgIiRhY19maWxlIiA6ICdbXi5dKlwoXC4uKlwp J2AKKy0JICBicmVhazs7CistICAgICogKSBicmVhazs7CistICBlc2FjCistZG9uZQorLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSB7IHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBlcnJvcjogaW4gJyRhY19wd2QnOiIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFz X21lOiBlcnJvcjogaW4gJyRhY19wd2QnOiIgPiYyO30KKy1hc19mbl9lcnJvciAkPyAiY2Fubm90 IGNvbXB1dGUgc3VmZml4IG9mIGV4ZWN1dGFibGVzOiBjYW5ub3QgY29tcGlsZSBhbmQgbGluawor LVNlZSAnY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0gOzsKKy1l c2FjCistZmkKKy1ybSAtZiBjb25mdGVzdCBjb25mdGVzdCRhY19jdl9leGVleHQKKy17IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZXhl ZXh0IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfY3ZfZXhlZXh0IiA+JjY7IH0KKy0KKy1ybSAt ZiBjb25mdGVzdC4kYWNfZXh0CistRVhFRVhUPSRhY19jdl9leGVleHQKKy1hY19leGVleHQ9JEVY RUVYVAorLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBl bmQgY29uZmRlZnMuaC4gICovCistI2luY2x1ZGUgPHN0ZGlvLmg+CistaW50CistbWFpbiAodm9p ZCkKKy17CistRklMRSAqZiA9IGZvcGVuICgiY29uZnRlc3Qub3V0IiwgInciKTsKKy0gaWYgKCFm KQorLSAgcmV0dXJuIDE7CistIHJldHVybiBmZXJyb3IgKGYpIHx8IGZjbG9zZSAoZikgIT0gMDsK Ky0KKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1hY19jbGVhbl9maWxlcz0iJGFj X2NsZWFuX2ZpbGVzIGNvbmZ0ZXN0Lm91dCIKKy0jIENoZWNrIHRoYXQgdGhlIGNvbXBpbGVyIHBy b2R1Y2VzIGV4ZWN1dGFibGVzIHdlIGNhbiBydW4uICBJZiBub3QsIGVpdGhlcgorLSMgdGhlIGNv bXBpbGVyIGlzIGJyb2tlbiwgb3Igd2UgY3Jvc3MgY29tcGlsZS4KKy17IHByaW50ZiAiJXNcbiIg IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgY3Jv c3MgY29tcGlsaW5nIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIGNy b3NzIGNvbXBpbGluZy4uLiAiID4mNjsgfQorLWlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciICE9 IHllczsgdGhlbgorLSAgeyB7IGFjX3RyeT0iJGFjX2xpbmsiCistY2FzZSAiKCgkYWNfdHJ5IiBp bgorLSAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CistICAqKSBh Y190cnlfZWNobz0kYWNfdHJ5OzsKKy1lc2FjCistZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKy1wcmludGYgIiVzXG4iICIk YWNfdHJ5X2VjaG8iOyB9ID4mNQorLSAgKGV2YWwgIiRhY19saW5rIikgMj4mNQorLSAgYWNfc3Rh dHVzPSQ/CistICBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwk PyA9ICRhY19zdGF0dXMiID4mNQorLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorLSAgaWYgeyBh Y190cnk9Jy4vY29uZnRlc3QkYWNfY3ZfZXhlZXh0JworLSAgeyB7IGNhc2UgIigoJGFjX3RyeSIg aW4KKy0gICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworLSAgKikg YWNfdHJ5X2VjaG89JGFjX3RyeTs7CistZXNhYworLWV2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCistcHJpbnRmICIlc1xuIiAi JGFjX3RyeV9lY2hvIjsgfSA+JjUKKy0gIChldmFsICIkYWNfdHJ5IikgMj4mNQorLSAgYWNfc3Rh dHVzPSQ/CistICBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwk PyA9ICRhY19zdGF0dXMiID4mNQorLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgfTsgdGhlbgor LSAgICBjcm9zc19jb21waWxpbmc9bm8KKy0gIGVsc2UKKy0gICAgaWYgdGVzdCAiJGNyb3NzX2Nv bXBpbGluZyIgPSBtYXliZTsgdGhlbgorLQljcm9zc19jb21waWxpbmc9eWVzCistICAgIGVsc2UK Ky0JeyB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6 IGluICckYWNfcHdkJzoiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogZXJyb3I6IGluICck YWNfcHdkJzoiID4mMjt9CistYXNfZm5fZXJyb3IgNzcgImNhbm5vdCBydW4gQyBjb21waWxlZCBw cm9ncmFtcy4KKy1JZiB5b3UgbWVhbnQgdG8gY3Jvc3MgY29tcGlsZSwgdXNlICctLWhvc3QnLgor LVNlZSAnY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KKy0gICAg ZmkKKy0gIGZpCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkY3Jvc3NfY29tcGlsaW5nIiA+JjUKKy1wcmludGYgIiVzXG4iICIkY3Jv c3NfY29tcGlsaW5nIiA+JjY7IH0KKy0KKy1ybSAtZiBjb25mdGVzdC4kYWNfZXh0IGNvbmZ0ZXN0 JGFjX2N2X2V4ZWV4dCBcCistICBjb25mdGVzdC5vIGNvbmZ0ZXN0Lm9iaiBjb25mdGVzdC5vdXQK Ky1hY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQorLXsgcHJpbnRmICIlc1xuIiAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3VmZml4IG9mIG9iamVj dCBmaWxlcyIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3Igc3VmZml4IG9mIG9iamVjdCBm aWxlcy4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9vYmpleHQreX0KKy10aGVuIDoKKy0g IHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVm cy5oLiAgKi8KKy0KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy0KKy0gIDsKKy0gIHJldHVybiAw OworLX0KKy1fQUNFT0YKKy1ybSAtZiBjb25mdGVzdC5vIGNvbmZ0ZXN0Lm9iagorLWlmIHsgeyBh Y190cnk9IiRhY19jb21waWxlIgorLWNhc2UgIigoJGFjX3RyeSIgaW4KKy0gICpcIiogfCAqXGAq IHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworLSAgKikgYWNfdHJ5X2VjaG89JGFjX3Ry eTs7CistZXNhYworLWV2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogJGFjX3RyeV9lY2hvXCIiCistcHJpbnRmICIlc1xuIiAiJGFjX3RyeV9lY2hvIjsgfSA+ JjUKKy0gIChldmFsICIkYWNfY29tcGlsZSIpIDI+JjUKKy0gIGFjX3N0YXR1cz0kPworLSAgcHJp bnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVz IiA+JjUKKy0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKy10aGVuIDoKKy0gIGZvciBhY19maWxl IGluIGNvbmZ0ZXN0Lm8gY29uZnRlc3Qub2JqIGNvbmZ0ZXN0Lio7IGRvCistICB0ZXN0IC1mICIk YWNfZmlsZSIgfHwgY29udGludWU7CistICBjYXNlICRhY19maWxlIGluCistICAgICouJGFjX2V4 dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJn IHwgKi5tYXAgfCAqLmluZiB8ICouZFNZTSApIDs7CistICAgICopIGFjX2N2X29iamV4dD1gZXhw ciAiJGFjX2ZpbGUiIDogJy4qXC5cKC4qXCknYAorLSAgICAgICBicmVhazs7CistICBlc2FjCist ZG9uZQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBwcmludGYgIiVzXG4iICIkYXNfbWU6IGZh aWxlZCBwcm9ncmFtIHdhczoiID4mNQorLXNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+ JjUKKy0KKy17IHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBl cnJvcjogaW4gJyRhY19wd2QnOiIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiBlcnJvcjog aW4gJyRhY19wd2QnOiIgPiYyO30KKy1hc19mbl9lcnJvciAkPyAiY2Fubm90IGNvbXB1dGUgc3Vm Zml4IG9mIG9iamVjdCBmaWxlczogY2Fubm90IGNvbXBpbGUKKy1TZWUgJ2NvbmZpZy5sb2cnIGZv ciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9IDs7CistZXNhYworLWZpCistcm0gLWYgY29u ZnRlc3QuJGFjX2N2X29iamV4dCBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZpCisteyBw cmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2 X29iamV4dCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X29iamV4dCIgPiY2OyB9CistT0JK RVhUPSRhY19jdl9vYmpleHQKKy1hY19vYmpleHQ9JE9CSkVYVAorLXsgcHJpbnRmICIlc1xuIiAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSBjb21waWxl ciBzdXBwb3J0cyBHTlUgQyIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyB3aGV0aGVyIHRoZSBj b21waWxlciBzdXBwb3J0cyBHTlUgQy4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9jX2Nv bXBpbGVyX2dudSt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVs c2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz dC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLWludAorLW1haW4gKHZvaWQp CisteworLSNpZm5kZWYgX19HTlVDX18KKy0gICAgICAgY2hva2UgbWUKKy0jZW5kaWYKKy0KKy0g IDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIk TElORU5PIgorLXRoZW4gOgorLSAgYWNfY29tcGlsZXJfZ251PXllcworLWVsc2UgY2FzZSBlIGlu ICMoCistICBlKSBhY19jb21waWxlcl9nbnU9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3Jl IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3Qu JGFjX2V4dAorLWFjX2N2X2NfY29tcGlsZXJfZ251PSRhY19jb21waWxlcl9nbnUKKy0gOzsKKy1l c2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19j dl9jX2NvbXBpbGVyX2dudSIgPiY2OyB9CistYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBp bGVyX2dudQorLQorLWlmIHRlc3QgJGFjX2NvbXBpbGVyX2dudSA9IHllczsgdGhlbgorLSAgR0ND PXllcworLWVsc2UKKy0gIEdDQz0KKy1maQorLWFjX3Rlc3RfQ0ZMQUdTPSR7Q0ZMQUdTK3l9Cist YWNfc2F2ZV9DRkxBR1M9JENGTEFHUworLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nIiA+JjUKKy1wcmlu dGYgJXMgImNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWcuLi4gIiA+JjY7IH0KKy1pZiB0 ZXN0ICR7YWNfY3ZfcHJvZ19jY19nK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQp ICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX3NhdmVfY193ZXJyb3JfZmxhZz0k YWNfY193ZXJyb3JfZmxhZworLSAgIGFjX2Nfd2Vycm9yX2ZsYWc9eWVzCistICAgYWNfY3ZfcHJv Z19jY19nPW5vCistICAgQ0ZMQUdTPSItZyIKKy0gICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G ID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLWludAorLW1h aW4gKHZvaWQpCisteworLQorLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFj X2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19jdl9wcm9nX2NjX2c9 eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIENGTEFHUz0iIgorLSAgICAgIGNhdCBjb25m ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4g ICovCistCistaW50CistbWFpbiAodm9pZCkKKy17CistCistICA7CistICByZXR1cm4gMDsKKy19 CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0K Ky1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY193ZXJyb3JfZmxhZz0kYWNfc2F2ZV9jX3dl cnJvcl9mbGFnCistCSBDRkxBR1M9Ii1nIgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+ Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy1pbnQKKy1tYWlu ICh2b2lkKQorLXsKKy0KKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19m bl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRoZW4gOgorLSAgYWNfY3ZfcHJvZ19jY19nPXll cworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25m dGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFj X2V4dCA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh Y19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CistICAgYWNfY193ZXJyb3Jf ZmxhZz0kYWNfc2F2ZV9jX3dlcnJvcl9mbGFnIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVz XG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3Byb2dfY2Nf ZyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X3Byb2dfY2NfZyIgPiY2OyB9CistaWYgdGVz dCAkYWNfdGVzdF9DRkxBR1M7IHRoZW4KKy0gIENGTEFHUz0kYWNfc2F2ZV9DRkxBR1MKKy1lbGlm IHRlc3QgJGFjX2N2X3Byb2dfY2NfZyA9IHllczsgdGhlbgorLSAgaWYgdGVzdCAiJEdDQyIgPSB5 ZXM7IHRoZW4KKy0gICAgQ0ZMQUdTPSItZyAtTzIiCistICBlbHNlCistICAgIENGTEFHUz0iLWci CistICBmaQorLWVsc2UKKy0gIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistICAgIENGTEFH Uz0iLU8yIgorLSAgZWxzZQorLSAgICBDRkxBR1M9CistICBmaQorLWZpCistYWNfcHJvZ19jY19z dGRjPW5vCistaWYgdGVzdCB4JGFjX3Byb2dfY2Nfc3RkYyA9IHhubworLXRoZW4gOgorLSAgeyBw cmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAk Q0Mgb3B0aW9uIHRvIGVuYWJsZSBDMTEgZmVhdHVyZXMiID4mNQorLXByaW50ZiAlcyAiY2hlY2tp bmcgZm9yICRDQyBvcHRpb24gdG8gZW5hYmxlIEMxMSBmZWF0dXJlcy4uLiAiID4mNjsgfQorLWlm IHRlc3QgJHthY19jdl9wcm9nX2NjX2MxMSt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2Fj aGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl9wcm9nX2NjX2MxMT1u bworLWFjX3NhdmVfQ0M9JENDCistY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu JGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0kYWNfY19jb25mdGVzdF9jMTFfcHJv Z3JhbQorLV9BQ0VPRgorLWZvciBhY19hcmcgaW4gJycgLXN0ZD1nbnUxMQorLWRvCistICBDQz0i JGFjX3NhdmVfQ0MgJGFjX2FyZyIKKy0gIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8i CistdGhlbiA6CistICBhY19jdl9wcm9nX2NjX2MxMT0kYWNfYXJnCistZmkKKy1ybSAtZiBjb3Jl IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0KKy0gIHRlc3Qg IngkYWNfY3ZfcHJvZ19jY19jMTEiICE9ICJ4bm8iICYmIGJyZWFrCistZG9uZQorLXJtIC1mIGNv bmZ0ZXN0LiRhY19leHQKKy1DQz0kYWNfc2F2ZV9DQyA7OworLWVzYWMKKy1maQorLQorLWlmIHRl c3QgIngkYWNfY3ZfcHJvZ19jY19jMTEiID0geG5vCistdGhlbiA6CistICB7IHByaW50ZiAiJXNc biIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB1bnN1cHBvcnRlZCIgPiY1 CistcHJpbnRmICIlc1xuIiAidW5zdXBwb3J0ZWQiID4mNjsgfQorLWVsc2UgY2FzZSBlIGluICMo CistICBlKSBpZiB0ZXN0ICJ4JGFjX2N2X3Byb2dfY2NfYzExIiA9IHgKKy10aGVuIDoKKy0gIHsg cHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vbmUg bmVlZGVkIiA+JjUKKy1wcmludGYgIiVzXG4iICJub25lIG5lZWRlZCIgPiY2OyB9CistZWxzZSBj YXNlIGUgaW4gIygKKy0gIGUpIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX2MxMSIgPiY1CistcHJpbnRmICIlc1xuIiAi JGFjX2N2X3Byb2dfY2NfYzExIiA+JjY7IH0KKy0gICAgIENDPSIkQ0MgJGFjX2N2X3Byb2dfY2Nf YzExIiA7OworLWVzYWMKKy1maQorLSAgYWNfY3ZfcHJvZ19jY19zdGRjPSRhY19jdl9wcm9nX2Nj X2MxMQorLSAgYWNfcHJvZ19jY19zdGRjPWMxMSA7OworLWVzYWMKKy1maQorLWZpCistaWYgdGVz dCB4JGFjX3Byb2dfY2Nfc3RkYyA9IHhubworLXRoZW4gOgorLSAgeyBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkQ0Mgb3B0aW9uIHRvIGVu YWJsZSBDOTkgZmVhdHVyZXMiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yICRDQyBvcHRp b24gdG8gZW5hYmxlIEM5OSBmZWF0dXJlcy4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9w cm9nX2NjX2M5OSt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVs c2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl9wcm9nX2NjX2M5OT1ubworLWFjX3NhdmVfQ0M9 JENDCistY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVu ZCBjb25mZGVmcy5oLiAgKi8KKy0kYWNfY19jb25mdGVzdF9jOTlfcHJvZ3JhbQorLV9BQ0VPRgor LWZvciBhY19hcmcgaW4gJycgLXN0ZD1nbnU5OSAtc3RkPWM5OSAtYzk5IC1xbGFuZ2x2bD1leHRj MXggLXFsYW5nbHZsPWV4dGM5OSAtQUM5OSAtRF9TVERDX0M5OT0KKy1kbworLSAgQ0M9IiRhY19z YXZlX0NDICRhY19hcmciCistICBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRo ZW4gOgorLSAgYWNfY3ZfcHJvZ19jY19jOTk9JGFjX2FyZworLWZpCistcm0gLWYgY29yZSBjb25m dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtCistICB0ZXN0ICJ4JGFj X2N2X3Byb2dfY2NfYzk5IiAhPSAieG5vIiAmJiBicmVhaworLWRvbmUKKy1ybSAtZiBjb25mdGVz dC4kYWNfZXh0CistQ0M9JGFjX3NhdmVfQ0MgOzsKKy1lc2FjCistZmkKKy0KKy1pZiB0ZXN0ICJ4 JGFjX2N2X3Byb2dfY2NfYzk5IiA9IHhubworLXRoZW4gOgorLSAgeyBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogdW5zdXBwb3J0ZWQiID4mNQorLXBy aW50ZiAiJXNcbiIgInVuc3VwcG9ydGVkIiA+JjY7IH0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkgaWYgdGVzdCAieCRhY19jdl9wcm9nX2NjX2M5OSIgPSB4CistdGhlbiA6CistICB7IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBub25lIG5lZWRl ZCIgPiY1CistcHJpbnRmICIlc1xuIiAibm9uZSBuZWVkZWQiID4mNjsgfQorLWVsc2UgY2FzZSBl IGluICMoCistICBlKSB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19jOTkiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19j dl9wcm9nX2NjX2M5OSIgPiY2OyB9CistICAgICBDQz0iJENDICRhY19jdl9wcm9nX2NjX2M5OSIg OzsKKy1lc2FjCistZmkKKy0gIGFjX2N2X3Byb2dfY2Nfc3RkYz0kYWNfY3ZfcHJvZ19jY19jOTkK Ky0gIGFjX3Byb2dfY2Nfc3RkYz1jOTkgOzsKKy1lc2FjCistZmkKKy1maQorLWlmIHRlc3QgeCRh Y19wcm9nX2NjX3N0ZGMgPSB4bm8KKy10aGVuIDoKKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBlbmFibGUg Qzg5IGZlYXR1cmVzIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciAkQ0Mgb3B0aW9uIHRv IGVuYWJsZSBDODkgZmVhdHVyZXMuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfcHJvZ19j Y19jODkreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNh c2UgZSBpbiAjKAorLSAgZSkgYWNfY3ZfcHJvZ19jY19jODk9bm8KKy1hY19zYXZlX0NDPSRDQwor LWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29u ZmRlZnMuaC4gICovCistJGFjX2NfY29uZnRlc3RfYzg5X3Byb2dyYW0KKy1fQUNFT0YKKy1mb3Ig YWNfYXJnIGluICcnIC1xbGFuZ2x2bD1leHRjODkgLXFsYW5nbHZsPWFuc2kgLXN0ZCAtQWUgIi1B YSAtRF9IUFVYX1NPVVJDRSIgIi1YYyAtRF9fRVhURU5TSU9OU19fIgorLWRvCistICBDQz0iJGFj X3NhdmVfQ0MgJGFjX2FyZyIKKy0gIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCist dGhlbiA6CistICBhY19jdl9wcm9nX2NjX2M4OT0kYWNfYXJnCistZmkKKy1ybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0KKy0gIHRlc3QgIngk YWNfY3ZfcHJvZ19jY19jODkiICE9ICJ4bm8iICYmIGJyZWFrCistZG9uZQorLXJtIC1mIGNvbmZ0 ZXN0LiRhY19leHQKKy1DQz0kYWNfc2F2ZV9DQyA7OworLWVzYWMKKy1maQorLQorLWlmIHRlc3Qg IngkYWNfY3ZfcHJvZ19jY19jODkiID0geG5vCistdGhlbiA6CistICB7IHByaW50ZiAiJXNcbiIg IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB1bnN1cHBvcnRlZCIgPiY1Cist cHJpbnRmICIlc1xuIiAidW5zdXBwb3J0ZWQiID4mNjsgfQorLWVsc2UgY2FzZSBlIGluICMoCist ICBlKSBpZiB0ZXN0ICJ4JGFjX2N2X3Byb2dfY2NfYzg5IiA9IHgKKy10aGVuIDoKKy0gIHsgcHJp bnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vbmUgbmVl ZGVkIiA+JjUKKy1wcmludGYgIiVzXG4iICJub25lIG5lZWRlZCIgPiY2OyB9CistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX2M4OSIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFj X2N2X3Byb2dfY2NfYzg5IiA+JjY7IH0KKy0gICAgIENDPSIkQ0MgJGFjX2N2X3Byb2dfY2NfYzg5 IiA7OworLWVzYWMKKy1maQorLSAgYWNfY3ZfcHJvZ19jY19zdGRjPSRhY19jdl9wcm9nX2NjX2M4 OQorLSAgYWNfcHJvZ19jY19zdGRjPWM4OSA7OworLWVzYWMKKy1maQorLWZpCistCistYWNfZXh0 PWMKKy1hY19jcHA9JyRDUFAgJENQUEZMQUdTJworLWFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdT ICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKKy1hY19saW5rPSckQ0MgLW8gY29uZnRl c3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQg JExJQlMgPiY1JworLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKy0KKy0K Ky1pZiB0ZXN0IC1uICIkd2FudF9hdXRvX2NmbGFncyI7IHRoZW4KKy0JQVVUT19DRkxBR1M9Ii1n ICR7R0NDOistTzJ9IgorLQlBVVRPX0xERkxBR1M9Ii1nICR7R0NDOistTzJ9IgorLSMJU1RZTEVf Q0ZMQUdTPSIke0dDQzorLVduby1wYXJlbnRoZXNlc30gJHtHQ0M6Ky1Xbm8tZm9ybWF0LXNlY3Vy aXR5fSAke0dDQzorLVduby10YXV0b2xvZ2ljYWwtY29uc3RhbnQtb3V0LW9mLXJhbmdlLWNvbXBh cmV9IgorLQlTVFlMRV9DRkxBR1M9IiR7R0NDOistV25vLXBhcmVudGhlc2VzfSAke0dDQzorLVdu by1mb3JtYXQtc2VjdXJpdHl9IgorLWVsc2UKKy0JQVVUT19DRkxBR1M9IEFVVE9fTERGTEFHUz0g U1RZTEVfQ0ZMQUdTPQorLWZpCistCistCistYWNfaGVhZGVyPSBhY19jYWNoZT0KKy1mb3IgYWNf aXRlbSBpbiAkYWNfaGVhZGVyX2NfbGlzdAorLWRvCistICBpZiB0ZXN0ICRhY19jYWNoZTsgdGhl bgorLSAgICBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAkYWNfaGVhZGVy IGFjX2N2X2hlYWRlcl8kYWNfY2FjaGUgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLSAgICBpZiBl dmFsIHRlc3QgXCJ4XCRhY19jdl9oZWFkZXJfJGFjX2NhY2hlXCIgPSB4eWVzOyB0aGVuCistICAg ICAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSAkYWNfaXRlbSAxIiA+PiBjb25mZGVmcy5oCistICAg IGZpCistICAgIGFjX2hlYWRlcj0gYWNfY2FjaGU9CistICBlbGlmIHRlc3QgJGFjX2hlYWRlcjsg dGhlbgorLSAgICBhY19jYWNoZT0kYWNfaXRlbQorLSAgZWxzZQorLSAgICBhY19oZWFkZXI9JGFj X2l0ZW0KKy0gIGZpCistZG9uZQorLQorLQorLQorLQorLQorLQorLQorLQorLWlmIHRlc3QgJGFj X2N2X2hlYWRlcl9zdGRsaWJfaCA9IHllcyAmJiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RyaW5nX2gg PSB5ZXMKKy10aGVuIDoKKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIFNURENfSEVBREVSUyAx IiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLQorLQorLQorLQorLQorLSAgeyBwcmludGYgIiVz XG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgaXQgaXMg c2FmZSB0byBkZWZpbmUgX19FWFRFTlNJT05TX18iID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcg d2hldGhlciBpdCBpcyBzYWZlIHRvIGRlZmluZSBfX0VYVEVOU0lPTlNfXy4uLiAiID4mNjsgfQor LWlmIHRlc3QgJHthY19jdl9zYWZlX3RvX2RlZmluZV9fX2V4dGVuc2lvbnNfXyt5fQorLXRoZW4g OgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNv bmZkZWZzLmguICAqLworLQorLSMgICAgICAgICBkZWZpbmUgX19FWFRFTlNJT05TX18gMQorLSAg ICAgICAgICAkYWNfaW5jbHVkZXNfZGVmYXVsdAorLWludAorLW1haW4gKHZvaWQpCisteworLQor LSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUg IiRMSU5FTk8iCistdGhlbiA6CistICBhY19jdl9zYWZlX3RvX2RlZmluZV9fX2V4dGVuc2lvbnNf Xz15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY3Zfc2FmZV90b19kZWZpbmVfX19l eHRlbnNpb25zX189bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBj b25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVz YWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRhY19jdl9zYWZlX3RvX2RlZmluZV9fX2V4dGVuc2lvbnNfXyIgPiY1CistcHJpbnRm ICIlc1xuIiAiJGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fIiA+JjY7IH0KKy0K Ky0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu ZyB3aGV0aGVyIF9YT1BFTl9TT1VSQ0Ugc2hvdWxkIGJlIGRlZmluZWQiID4mNQorLXByaW50ZiAl cyAiY2hlY2tpbmcgd2hldGhlciBfWE9QRU5fU09VUkNFIHNob3VsZCBiZSBkZWZpbmVkLi4uICIg PiY2OyB9CistaWYgdGVzdCAke2FjX2N2X3Nob3VsZF9kZWZpbmVfX3hvcGVuX3NvdXJjZSt5fQor LXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMo CistICBlKSBhY19jdl9zaG91bGRfZGVmaW5lX194b3Blbl9zb3VyY2U9bm8KKy0gICAgaWYgdGVz dCAkYWNfY3ZfaGVhZGVyX3djaGFyX2ggPSB5ZXMKKy10aGVuIDoKKy0gIGNhdCBjb25mZGVmcy5o IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCist CistICAgICAgICAgICNpbmNsdWRlIDx3Y2hhci5oPgorLSAgICAgICAgICBtYnN0YXRlX3QgeDsK Ky1pbnQKKy1tYWluICh2b2lkKQorLXsKKy0KKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNF T0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRoZW4gOgorLQorLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k YWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLSAgICAgICAgICAgICNkZWZpbmUg X1hPUEVOX1NPVVJDRSA1MDAKKy0gICAgICAgICAgICAjaW5jbHVkZSA8d2NoYXIuaD4KKy0gICAg ICAgICAgICBtYnN0YXRlX3QgeDsKKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy0KKy0gIDsKKy0g IHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5P IgorLXRoZW4gOgorLSAgYWNfY3Zfc2hvdWxkX2RlZmluZV9feG9wZW5fc291cmNlPXllcworLWZp Cistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5i ZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0 LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAor LWZpIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJGFjX2N2X3Nob3VsZF9kZWZpbmVfX3hvcGVuX3NvdXJjZSIgPiY1 CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X3Nob3VsZF9kZWZpbmVfX3hvcGVuX3NvdXJjZSIgPiY2 OyB9CistCistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIF9BTExfU09VUkNFIDEiID4+Y29uZmRl ZnMuaAorLQorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBfREFSV0lOX0NfU09VUkNFIDEiID4+ Y29uZmRlZnMuaAorLQorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBfR05VX1NPVVJDRSAxIiA+ PmNvbmZkZWZzLmgKKy0KKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgX0hQVVhfQUxUX1hPUEVO X1NPQ0tFVF9BUEkgMSIgPj5jb25mZGVmcy5oCistCistICBwcmludGYgIiVzXG4iICIjZGVmaW5l IF9ORVRCU0RfU09VUkNFIDEiID4+Y29uZmRlZnMuaAorLQorLSAgcHJpbnRmICIlc1xuIiAiI2Rl ZmluZSBfT1BFTkJTRF9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCistCistICBwcmludGYgIiVzXG4i ICIjZGVmaW5lIF9QT1NJWF9QVEhSRUFEX1NFTUFOVElDUyAxIiA+PmNvbmZkZWZzLmgKKy0KKy0g IHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgX19TVERDX1dBTlRfSUVDXzYwNTU5X0FUVFJJQlNfRVhU X18gMSIgPj5jb25mZGVmcy5oCistCistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIF9fU1REQ19X QU5UX0lFQ182MDU1OV9CRlBfRVhUX18gMSIgPj5jb25mZGVmcy5oCistCistICBwcmludGYgIiVz XG4iICIjZGVmaW5lIF9fU1REQ19XQU5UX0lFQ182MDU1OV9ERlBfRVhUX18gMSIgPj5jb25mZGVm cy5oCistCistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIF9fU1REQ19XQU5UX0lFQ182MDU1OV9F WFRfXyAxIiA+PmNvbmZkZWZzLmgKKy0KKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgX19TVERD X1dBTlRfSUVDXzYwNTU5X0ZVTkNTX0VYVF9fIDEiID4+Y29uZmRlZnMuaAorLQorLSAgcHJpbnRm ICIlc1xuIiAiI2RlZmluZSBfX1NURENfV0FOVF9JRUNfNjA1NTlfVFlQRVNfRVhUX18gMSIgPj5j b25mZGVmcy5oCistCistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIF9fU1REQ19XQU5UX0xJQl9F WFQyX18gMSIgPj5jb25mZGVmcy5oCistCistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIF9fU1RE Q19XQU5UX01BVEhfU1BFQ19GVU5DU19fIDEiID4+Y29uZmRlZnMuaAorLQorLSAgcHJpbnRmICIl c1xuIiAiI2RlZmluZSBfVEFOREVNX1NPVVJDRSAxIiA+PmNvbmZkZWZzLmgKKy0KKy0gIGlmIHRl c3QgJGFjX2N2X2hlYWRlcl9taW5peF9jb25maWdfaCA9IHllcworLXRoZW4gOgorLSAgTUlOSVg9 eWVzCistICAgIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgX01JTklYIDEiID4+Y29uZmRlZnMuaAor LQorLSAgICBwcmludGYgIiVzXG4iICIjZGVmaW5lIF9QT1NJWF9TT1VSQ0UgMSIgPj5jb25mZGVm cy5oCistCistICAgIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgX1BPU0lYXzFfU09VUkNFIDIiID4+ Y29uZmRlZnMuaAorLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBNSU5JWD0gOzsKKy1lc2Fj CistZmkKKy0gIGlmIHRlc3QgJGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fID0g eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIF9fRVhURU5TSU9OU19fIDEi ID4+Y29uZmRlZnMuaAorLQorLWZpCistICBpZiB0ZXN0ICRhY19jdl9zaG91bGRfZGVmaW5lX194 b3Blbl9zb3VyY2UgPSB5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgX1hP UEVOX1NPVVJDRSA1MDAiID4+Y29uZmRlZnMuaAorLQorLWZpCistCistIyBDaGVjayB3aGV0aGVy IC0tZW5hYmxlLWxhcmdlZmlsZSB3YXMgZ2l2ZW4uCistaWYgdGVzdCAke2VuYWJsZV9sYXJnZWZp bGUreX0KKy10aGVuIDoKKy0gIGVuYWJsZXZhbD0kZW5hYmxlX2xhcmdlZmlsZTsKKy1maQorLWlm IHRlc3QgIiRlbmFibGVfbGFyZ2VmaWxlLCRlbmFibGVfeWVhcjIwMzgiICE9IG5vLG5vCistdGhl biA6CistICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgZm9yICRDQyBvcHRpb24gdG8gZW5hYmxlIGxhcmdlIGZpbGUgc3VwcG9ydCIgPiY1Cist cHJpbnRmICVzICJjaGVja2luZyBmb3IgJENDIG9wdGlvbiB0byBlbmFibGUgbGFyZ2UgZmlsZSBz dXBwb3J0Li4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X3N5c19sYXJnZWZpbGVfb3B0cyt5 fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGlu ICMoCistICBlKSBhY19zYXZlX0NDPSIkQ0MiCistICBhY19vcHRfZm91bmQ9bm8KKy0gIGZvciBh Y19vcHQgaW4gIm5vbmUgbmVlZGVkIiAiLURfRklMRV9PRkZTRVRfQklUUz02NCIgIi1EX0xBUkdF X0ZJTEVTPTEiICItbjMyIjsgZG8KKy0gICAgaWYgdGVzdCB4IiRhY19vcHQiICE9IHgibm9uZSBu ZWVkZWQiCistdGhlbiA6CistICBDQz0iJGFjX3NhdmVfQ0MgJGFjX29wdCIKKy1maQorLSAgICBj YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZk ZWZzLmguICAqLworLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaWZuZGVmIEZUWVBFCistIyBk ZWZpbmUgRlRZUEUgb2ZmX3QKKy0jZW5kaWYKKy0gLyogQ2hlY2sgdGhhdCBGVFlQRSBjYW4gcmVw cmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCistICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUg TEFSR0VfRlRZUEUgdG8gYmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKKy0gICAgc2luY2Ugc29tZSBD KysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycworLSAgICBpbmNvcnJlY3Rs eSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICovCistI2RlZmluZSBMQVJHRV9GVFlQRSAo KChGVFlQRSkgMSA8PCAzMSA8PCAzMSkgLSAxICsgKChGVFlQRSkgMSA8PCAzMSA8PCAzMSkpCist ICBpbnQgRlRZUEVfaXNfbGFyZ2VbKExBUkdFX0ZUWVBFICUgMjE0NzQ4MzYyOSA9PSA3MjEKKy0J CSAgICAgICAmJiBMQVJHRV9GVFlQRSAlIDIxNDc0ODM2NDcgPT0gMSkKKy0JCSAgICAgID8gMSA6 IC0xXTsKKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy0KKy0gIDsKKy0gIHJldHVybiAwOworLX0K Ky1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRoZW4gOgorLSAg aWYgdGVzdCB4IiRhY19vcHQiID0geCJub25lIG5lZWRlZCIKKy10aGVuIDoKKy0gICMgR05VL0xp bnV4IHMzOTB4IGFuZCBhbHBoYSBuZWVkIF9GSUxFX09GRlNFVF9CSVRTPTY0IGZvciB3aWRlIGlu b190LgorLQkgQ0M9IiRDQyAtREZUWVBFPWlub190IgorLQkgaWYgYWNfZm5fY190cnlfY29tcGls ZSAiJExJTkVOTyIKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgQ0M9IiRD QyAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IgorLQkgICAgaWYgYWNfZm5fY190cnlfY29tcGlsZSAi JExJTkVOTyIKKy10aGVuIDoKKy0gIGFjX29wdD0nLURfRklMRV9PRkZTRVRfQklUUz02NCcKKy1m aQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3Qu YmVhbSA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh Y19vYmpleHQgY29uZnRlc3QuYmVhbQorLWZpCistICAgICAgYWNfY3Zfc3lzX2xhcmdlZmlsZV9v cHRzPSRhY19vcHQKKy0gICAgICBhY19vcHRfZm91bmQ9eWVzCistZmkKKy1ybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFj X2V4dAorLSAgICB0ZXN0ICRhY19vcHRfZm91bmQgPSBubyB8fCBicmVhaworLSAgZG9uZQorLSAg Q0M9IiRhY19zYXZlX0NDIgorLQorLSAgdGVzdCAkYWNfb3B0X2ZvdW5kID0geWVzIHx8IGFjX2N2 X3N5c19sYXJnZWZpbGVfb3B0cz0ic3VwcG9ydCBub3QgZGV0ZWN0ZWQiIDs7CistZXNhYworLWZp CisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JGFjX2N2X3N5c19sYXJnZWZpbGVfb3B0cyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X3N5 c19sYXJnZWZpbGVfb3B0cyIgPiY2OyB9CistCistYWNfaGF2ZV9sYXJnZWZpbGU9eWVzCistY2Fz ZSAkYWNfY3Zfc3lzX2xhcmdlZmlsZV9vcHRzIGluICMoCistICAibm9uZSBuZWVkZWQiKSA6Cist ICAgICA7OyAjKAorLSAgInN1cHBvcnRlZCB0aHJvdWdoIGdudWxpYiIpIDoKKy0gICAgIDs7ICMo CistICAic3VwcG9ydCBub3QgZGV0ZWN0ZWQiKSA6CistICAgIGFjX2hhdmVfbGFyZ2VmaWxlPW5v IDs7ICMoCistICAiLURfRklMRV9PRkZTRVRfQklUUz02NCIpIDoKKy0KKy1wcmludGYgIiVzXG4i ICIjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0IiA+PmNvbmZkZWZzLmgKKy0gOzsgIygKKy0g ICItRF9MQVJHRV9GSUxFUz0xIikgOgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgX0xBUkdF X0ZJTEVTIDEiID4+Y29uZmRlZnMuaAorLSA7OyAjKAorLSAgIi1uMzIiKSA6CistICAgIENDPSIk Q0MgLW4zMiIgOzsgIygKKy0gICopIDoKKy0gICAgYXNfZm5fZXJyb3IgJD8gImludGVybmFsIGVy cm9yOiBiYWQgdmFsdWUgZm9yIFwkYWNfY3Zfc3lzX2xhcmdlZmlsZV9vcHRzIiAiJExJTkVOTyIg NSA7OworLWVzYWMKKy0KKy1pZiB0ZXN0ICIkZW5hYmxlX3llYXIyMDM4IiAhPSBubworLXRoZW4g OgorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciAkQ0Mgb3B0aW9uIGZvciB0aW1lc3RhbXBzIGFmdGVyIDIwMzgiID4mNQorLXByaW50 ZiAlcyAiY2hlY2tpbmcgZm9yICRDQyBvcHRpb24gZm9yIHRpbWVzdGFtcHMgYWZ0ZXIgMjAzOC4u LiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9zeXNfeWVhcjIwMzhfb3B0cyt5fQorLXRoZW4g OgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBhY19zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCistICBhY19vcHRfZm91bmQ9bm8KKy0gIGZv ciBhY19vcHQgaW4gIm5vbmUgbmVlZGVkIiAiLURfVElNRV9CSVRTPTY0IiAiLURfX01JTkdXX1VT RV9WQzIwMDVfQ09NUEFUIiAiLVVfVVNFXzMyX0JJVF9USU1FX1QgLURfX01JTkdXX1VTRV9WQzIw MDVfQ09NUEFUIjsgZG8KKy0gICAgaWYgdGVzdCB4IiRhY19vcHQiICE9IHgibm9uZSBuZWVkZWQi CistdGhlbiA6CistICBDUFBGTEFHUz0iJGFjX3NhdmVfQ1BQRkxBR1MgJGFjX29wdCIKKy1maQor LSAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5k IGNvbmZkZWZzLmguICAqLworLQorLSAgI2luY2x1ZGUgPHRpbWUuaD4KKy0gIC8qIENoZWNrIHRo YXQgdGltZV90IGNhbiByZXByZXNlbnQgMioqMzIgLSAxIGNvcnJlY3RseS4gICovCistICAjZGVm aW5lIExBUkdFX1RJTUVfVCBcXAorLSAgICAoKHRpbWVfdCkgKCgodGltZV90KSAxIDw8IDMwKSAt IDEgKyAzICogKCh0aW1lX3QpIDEgPDwgMzApKSkKKy0gIGludCB2ZXJpZnlfdGltZV90X3Jhbmdl WyhMQVJHRV9USU1FX1QgLyA2NTUzNyA9PSA2NTUzNQorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICYmIExBUkdFX1RJTUVfVCAlIDY1NTM3ID09IDApCistICAgICAgICAgICAgICAgICAgICAg ICAgICA/IDEgOiAtMV07CistCistaW50CistbWFpbiAodm9pZCkKKy17CistCistICA7CistICBy ZXR1cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIK Ky10aGVuIDoKKy0gIGFjX2N2X3N5c195ZWFyMjAzOF9vcHRzPSIkYWNfb3B0IgorLSAgICAgIGFj X29wdF9mb3VuZD15ZXMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh Y19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CistICAgIHRlc3QgJGFjX29w dF9mb3VuZCA9IG5vIHx8IGJyZWFrCistICBkb25lCistICBDUFBGTEFHUz0iJGFjX3NhdmVfQ1BQ RkxBR1MiCistICB0ZXN0ICRhY19vcHRfZm91bmQgPSB5ZXMgfHwgYWNfY3Zfc3lzX3llYXIyMDM4 X29wdHM9InN1cHBvcnQgbm90IGRldGVjdGVkIiA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIl c1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zeXNfeWVh cjIwMzhfb3B0cyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X3N5c195ZWFyMjAzOF9vcHRz IiA+JjY7IH0KKy0KKy1hY19oYXZlX3llYXIyMDM4PXllcworLWNhc2UgJGFjX2N2X3N5c195ZWFy MjAzOF9vcHRzIGluICMoCistICAibm9uZSBuZWVkZWQiKSA6CistICAgICA7OyAjKAorLSAgInN1 cHBvcnQgbm90IGRldGVjdGVkIikgOgorLSAgICBhY19oYXZlX3llYXIyMDM4PW5vIDs7ICMoCist ICAiLURfVElNRV9CSVRTPTY0IikgOgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgX1RJTUVf QklUUyA2NCIgPj5jb25mZGVmcy5oCistIDs7ICMoCistICAiLURfX01JTkdXX1VTRV9WQzIwMDVf Q09NUEFUIikgOgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgX19NSU5HV19VU0VfVkMyMDA1 X0NPTVBBVCAxIiA+PmNvbmZkZWZzLmgKKy0gOzsgIygKKy0gICItVV9VU0VfMzJfQklUX1RJTUVf VCIqKSA6CistICAgIHsgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGVycm9yOiBpbiAnJGFjX3B3ZCc6IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IGVy cm9yOiBpbiAnJGFjX3B3ZCc6IiA+JjI7fQorLWFzX2ZuX2Vycm9yICQ/ICJ0aGUgJ3RpbWVfdCcg dHlwZSBpcyBjdXJyZW50bHkgZm9yY2VkIHRvIGJlIDMyLWJpdC4gSXQKKy13aWxsIHN0b3Agd29y a2luZyBhZnRlciBtaWQtSmFudWFyeSAyMDM4LiBSZW1vdmUKKy1fVVNFXzMyQklUX1RJTUVfVCBm cm9tIHRoZSBjb21waWxlciBmbGFncy4KKy1TZWUgJ2NvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFp bHMiICIkTElORU5PIiA1OyB9IDs7ICMoCistICAqKSA6CistICAgIGFzX2ZuX2Vycm9yICQ/ICJp bnRlcm5hbCBlcnJvcjogYmFkIHZhbHVlIGZvciBcJGFjX2N2X3N5c195ZWFyMjAzOF9vcHRzIiAi JExJTkVOTyIgNSA7OworLWVzYWMKKy0KKy1maQorLQorLWZpCistCistCistU0lHTkFNRVNfTz0K Ky1TSUdOQU1FU19IPWxzaWduYW1lcy5oCistCistCistCistQ1JPU1NfQ09NUElMRT0KKy1pZiB0 ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgPSAieHllcyI7IHRoZW4KKy0jICAgIGNhc2UgIiR7aG9z dH0iIGluCistIyAgICAqLWN5Z3dpbiopCistIwljcm9zc19jYWNoZT0ke3NyY2Rpcn0vY3Jvc3Mt YnVpbGQvY3lnd2luMzIuY2FjaGUKKy0jCTs7CistIyAgICAqLW1zeXMqKQorLSMJY3Jvc3NfY2Fj aGU9JHtzcmNkaXJ9L2Nyb3NzLWJ1aWxkL21zeXMzMi5jYWNoZQorLSMJOzsKKy0jICAgICotbWlu Z3cqKQorLSMJY3Jvc3NfY2FjaGU9JHtzcmNkaXJ9L2Nyb3NzLWJ1aWxkL2N5Z3dpbjMyLmNhY2hl CistIwk7OworLSMgICAgaVtbMzQ1Nl1dODYtKi1iZW9zKikKKy0jCWNyb3NzX2NhY2hlPSR7c3Jj ZGlyfS9jcm9zcy1idWlsZC94ODYtYmVvcy5jYWNoZQorLSMJOzsKKy0jICAgKi1xbngqKQorLSMJ Y3Jvc3NfY2FjaGU9JHtzcmNkaXJ9L2Nyb3NzLWJ1aWxkL3FueC5jYWNoZQorLSMJOzsKKy0jICAg ICopCWVjaG8gImNvbmZpZ3VyZTogY3Jvc3MtY29tcGlsaW5nIGZvciAkaG9zdCBpcyBub3Qgc3Vw cG9ydGVkIiA+JjIKKy0jCTs7CistIyAgICBlc2FjCistIyAgICBpZiB0ZXN0IC1uICIke2Nyb3Nz X2NhY2hlfSIgJiYgdGVzdCAtciAiJHtjcm9zc19jYWNoZX0iOyB0aGVuCistIwllY2hvICJsb2Fk aW5nIGNyb3NzLWJ1aWxkIGNhY2hlIGZpbGUgJHtjcm9zc19jYWNoZX0iCistIwkuICR7Y3Jvc3Nf Y2FjaGV9CistIyAgICBmaQorLSMgICAgdW5zZXQgY3Jvc3NfY2FjaGUKKy0gICAgU0lHTkFNRVNf Tz0nc2lnbmFtZXMubycKKy0gICAgQ1JPU1NfQ09NUElMRT0nLURDUk9TU19DT01QSUxJTkcnCist CistZmkKKy0KKy0KKy0KKy0KKy1DRkxBR1M9JHtDRkxBR1MtIiRBVVRPX0NGTEFHUyJ9CistIyBM REZMQUdTPSR7TERGTEFHUz0iJEFVVE9fTERGTEFHUyJ9CSMgWFhYCistCistaWYgdGVzdCAiJG9w dF9wcm9maWxpbmciID0gInllcyI7IHRoZW4KKy0JUFJPRklMRV9GTEFHUz0tcGcKKy0JY2FzZSAi JGhvc3Rfb3MiIGluCistCXNvbGFyaXMyKnxsaW51eCp8ZGFyd2luKikJOzsKKy0JKikJCW9wdF9z dGF0aWNfbGluaz15ZXMgOzsKKy0JZXNhYworLQlERUJVRz0gTUFMTE9DX0RFQlVHPQorLWZpCist CistcHJlZmVyX3NoYXJlZD15ZXMKKy1wcmVmZXJfc3RhdGljPW5vCistCistaWYgdGVzdCAiJG9w dF9zdGF0aWNfbGluayIgPSB5ZXM7IHRoZW4KKy0JcHJlZmVyX3N0YXRpYz15ZXMKKy0JcHJlZmVy X3NoYXJlZD1ubworLQkjIGlmIHdlJ3JlIHVzaW5nIGdjYywgYWRkIGAtc3RhdGljJyB0byBMREZM QUdTLCBleGNlcHQgb24gU29sYXJpcyA+PSAyCistCWlmIHRlc3QgIiRHQ0MiID0gInllcyI7IHRo ZW4KKy0JCVNUQVRJQ19MRD0iLXN0YXRpYyIKKy0JCWNhc2UgIiRob3N0X29zIiBpbgorLQkJc29s YXJpczIqKQk7OworLQkJbGludXgqKQkJdGVzdCAiJG9wdF9wcm9maWxpbmciID0gIm5vIiAmJiBM REZMQUdTPSIkTERGTEFHUyAtc3RhdGljIiA7OworLQkJKikJCUxERkxBR1M9IiRMREZMQUdTIC1z dGF0aWMiIDs7CSMgWFhYIGV4cGVyaW1lbnRhbAorLQkJZXNhYworLQlmaQorLWZpCistCistIyBz ZXQgdGhlIGFwcHJvcHJpYXRlIG1ha2UgdmFyaWFibGVzIGZvciBidWlsZGluZyB0aGUgImJ1aWxk IHRvb2xzIgorLSMgbW9kaWZ5IGRlZmF1bHRzIGJhc2VkIG9uIHdoZXRoZXIgb3Igbm90IHdlIGFy ZSBjcm9zcyBjb21waWxpbmcsIHNpbmNlIHRoZQorLSMgb3B0aW9ucyBmb3IgdGhlIHRhcmdldCBo b3N0IG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIHRoZSBidWlsZCBob3N0CistaWYgdGVzdCAi WCRjcm9zc19jb21waWxpbmciID0gIlhubyI7IHRoZW4KKy0JQ0NfRk9SX0JVSUxEPSR7Q0NfRk9S X0JVSUxELSckKENDKSd9CistCUNQUEZMQUdTX0ZPUl9CVUlMRD0ke0NQUEZMQUdTX0ZPUl9CVUlM RC0iJENQUEZMQUdTIn0JIyBYWFggLSBzaG91bGQgaXQgYmUgJyQoQ1BQRkxBR1MpJworLQlpZiB0 ZXN0IFgiJG9wdF9wcm9maWxpbmciID0gWHllczsgdGhlbgorLQkJTERGTEFHU19GT1JfQlVJTEQ9 JHtMREZMQUdTX0ZPUl9CVUlMRC0nJChCQVNFX0xERkxBR1MpJ30KKy0JZWxzZQorLQkJTERGTEFH U19GT1JfQlVJTEQ9JHtMREZMQUdTX0ZPUl9CVUlMRC0nJChMREZMQUdTKSd9CistCWZpCistCSMg Q0ZMQUdTIHNldCBhYm92ZSB0byBkZWZhdWx0IHZhbHVlIGlmIG5vdCBwYXNzZWQgaW4gZW52aXJv bm1lbnQKKy0JaWYgdGVzdCAtbiAiJHdhbnRfYXV0b19jZmxhZ3MiIDsgdGhlbgorLQkJQ0ZMQUdT X0ZPUl9CVUlMRD0iJHtDRkxBR1N9IgorLQllbHNlCistCQkjIHBhc3NlZCBpbiBlbnZpcm9ubWVu dAorLQkJQ0ZMQUdTX0ZPUl9CVUlMRD0ke0NGTEFHUy0nJChDRkxBR1MpJ30KKy0JZmkKKy0JTElC U19GT1JfQlVJTEQ9JHtMSUJTX0ZPUl9CVUlMRC0nJChMSUJTKSd9CistZWxzZQorLQlDQ19GT1Jf QlVJTEQ9JHtDQ19GT1JfQlVJTEQtImdjYyJ9CistCUNQUEZMQUdTX0ZPUl9CVUlMRD0ke0NQUEZM QUdTX0ZPUl9CVUlMRC0iIn0KKy0JTERGTEFHU19GT1JfQlVJTEQ9JHtMREZMQUdTX0ZPUl9CVUlM RC0iIn0KKy0JQ0ZMQUdTX0ZPUl9CVUlMRD0ke0NGTEFHU19GT1JfQlVJTEQ9Ii1nIn0KKy0JTElC U19GT1JfQlVJTEQ9JHtMSUJTX0ZPUl9CVUlMRC0iIn0KKy1maQorLQorLQorLQorLQorLQorLQor LQorLQorLQorLQorLQorLQorLQorLQorLQorLWlmIHRlc3QgIiRvcHRfcmVhZGxpbmUiID0geWVz ICYmIHRlc3QgIiRvcHRfd2l0aF9pbnN0YWxsZWRfcmVhZGxpbmUiICE9ICJubyIKKy10aGVuCist CSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIC0td2l0aC1pbnN0YWxsZWQtcmVhZGxpbmU9UFJFRklY IGFuZCBQUkVGSVgKKy0JIyBpcyBub3QgYHllcycsIHNldCBhY19jdl9ybF9wcmVmaXggdG8gUFJF RklYCistCXRlc3QgJG9wdF93aXRoX2luc3RhbGxlZF9yZWFkbGluZSAhPSAieWVzIiAmJiBhY19j dl9ybF9wcmVmaXg9JG9wdF93aXRoX2luc3RhbGxlZF9yZWFkbGluZQorLQorLQorLWlmIHRlc3Qg IlgkYmFzaF9jdl90ZXJtY2FwX2xpYiIgPSAiWCI7IHRoZW4KKy1fYmFzaF9uZWVkbXNnPXllcwor LWVsc2UKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgd2hpY2ggbGlicmFyeSBoYXMgdGhlIHRlcm1jYXAgZnVuY3Rpb25zIiA+JjUKKy1wcmlu dGYgJXMgImNoZWNraW5nIHdoaWNoIGxpYnJhcnkgaGFzIHRoZSB0ZXJtY2FwIGZ1bmN0aW9ucy4u LiAiID4mNjsgfQorLV9iYXNoX25lZWRtc2c9CistZmkKKy1pZiB0ZXN0ICR7YmFzaF9jdl90ZXJt Y2FwX2xpYit5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJ0Z2V0ZW50 IiAiYWNfY3ZfZnVuY190Z2V0ZW50IgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY190Z2V0ZW50IiA9 IHh5ZXMKKy10aGVuIDoKKy0gIGJhc2hfY3ZfdGVybWNhcF9saWI9bGliYworLWVsc2UgY2FzZSBl IGluICMoCistICBlKSB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgZm9yIHRnZXRlbnQgaW4gLWx0ZXJtY2FwIiA+JjUKKy1wcmludGYgJXMgImNo ZWNraW5nIGZvciB0Z2V0ZW50IGluIC1sdGVybWNhcC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHth Y19jdl9saWJfdGVybWNhcF90Z2V0ZW50K3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNo ZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2NoZWNrX2xpYl9zYXZlX0xJ QlM9JExJQlMKKy1MSUJTPSItbHRlcm1jYXAgICRMSUJTIgorLWNhdCBjb25mZGVmcy5oIC0gPDxf QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCistLyog T3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCist ICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEg R0NDCistICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0 aWxsIGFwcGx5LgorLSAgIFRoZSAnZXh0ZXJuICJDIicgaXMgZm9yIGJ1aWxkcyBieSBDKysgY29t cGlsZXJzOworLSAgIGFsdGhvdWdoIHRoaXMgaXMgbm90IGdlbmVyYWxseSBzdXBwb3J0ZWQgaW4g QyBjb2RlIHN1cHBvcnRpbmcgaXQgaGVyZQorLSAgIGhhcyBsaXR0bGUgY29zdCBhbmQgc29tZSBw cmFjdGljYWwgYmVuZWZpdCAoc3IgMTEwNTMyKS4gICovCistI2lmZGVmIF9fY3BsdXNwbHVzCist ZXh0ZXJuICJDIgorLSNlbmRpZgorLWNoYXIgdGdldGVudCAodm9pZCk7CistaW50CistbWFpbiAo dm9pZCkKKy17CistcmV0dXJuIHRnZXRlbnQgKCk7CistICA7CistICByZXR1cm4gMDsKKy19Cist X0FDRU9GCistaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGFjX2N2 X2xpYl90ZXJtY2FwX3RnZXRlbnQ9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2N2 X2xpYl90ZXJtY2FwX3RnZXRlbnQ9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0 ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gXAorLSAgICBjb25mdGVz dCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLUxJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJ QlMgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3Rlcm1jYXBfdGdldGVudCIgPiY1CistcHJpbnRm ICIlc1xuIiAiJGFjX2N2X2xpYl90ZXJtY2FwX3RnZXRlbnQiID4mNjsgfQorLWlmIHRlc3QgIngk YWNfY3ZfbGliX3Rlcm1jYXBfdGdldGVudCIgPSB4eWVzCistdGhlbiA6CistICBiYXNoX2N2X3Rl cm1jYXBfbGliPWxpYnRlcm1jYXAKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgeyBwcmludGYg IiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0Z2V0ZW50 IGluIC1sdGluZm8iID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHRnZXRlbnQgaW4gLWx0 aW5mby4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9saWJfdGluZm9fdGdldGVudCt5fQor LXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMo CistICBlKSBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCistTElCUz0iLWx0aW5mbyAgJExJ QlMiCistY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVu ZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0vKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3Rv dHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKy0gICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBt YXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKy0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBh cmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuCistICAgVGhlICdleHRlcm4gIkMi JyBpcyBmb3IgYnVpbGRzIGJ5IEMrKyBjb21waWxlcnM7CistICAgYWx0aG91Z2ggdGhpcyBpcyBu b3QgZ2VuZXJhbGx5IHN1cHBvcnRlZCBpbiBDIGNvZGUgc3VwcG9ydGluZyBpdCBoZXJlCistICAg aGFzIGxpdHRsZSBjb3N0IGFuZCBzb21lIHByYWN0aWNhbCBiZW5lZml0IChzciAxMTA1MzIpLiAg Ki8KKy0jaWZkZWYgX19jcGx1c3BsdXMKKy1leHRlcm4gIkMiCistI2VuZGlmCistY2hhciB0Z2V0 ZW50ICh2b2lkKTsKKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1yZXR1cm4gdGdldGVudCAoKTsK Ky0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9saW5rICIk TElORU5PIgorLXRoZW4gOgorLSAgYWNfY3ZfbGliX3RpbmZvX3RnZXRlbnQ9eWVzCistZWxzZSBj YXNlIGUgaW4gIygKKy0gIGUpIGFjX2N2X2xpYl90aW5mb190Z2V0ZW50PW5vIDs7CistZXNhYwor LWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz dC5iZWFtIFwKKy0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1MSUJT PSRhY19jaGVja19saWJfc2F2ZV9MSUJTIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4i ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl90aW5mb190 Z2V0ZW50IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfY3ZfbGliX3RpbmZvX3RnZXRlbnQiID4m NjsgfQorLWlmIHRlc3QgIngkYWNfY3ZfbGliX3RpbmZvX3RnZXRlbnQiID0geHllcworLXRoZW4g OgorLSAgYmFzaF9jdl90ZXJtY2FwX2xpYj1saWJ0aW5mbworLWVsc2UgY2FzZSBlIGluICMoCist ICBlKSB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgZm9yIHRnZXRlbnQgaW4gLWxjdXJzZXMiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9y IHRnZXRlbnQgaW4gLWxjdXJzZXMuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfbGliX2N1 cnNlc190Z2V0ZW50K3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2Cist ZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKKy1M SUJTPSItbGN1cnNlcyAgJExJQlMiCistY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl c3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0vKiBPdmVycmlkZSBhbnkg R0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKy0gICBVc2UgY2hhciBi ZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKy0gICBidWls dGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuCist ICAgVGhlICdleHRlcm4gIkMiJyBpcyBmb3IgYnVpbGRzIGJ5IEMrKyBjb21waWxlcnM7CistICAg YWx0aG91Z2ggdGhpcyBpcyBub3QgZ2VuZXJhbGx5IHN1cHBvcnRlZCBpbiBDIGNvZGUgc3VwcG9y dGluZyBpdCBoZXJlCistICAgaGFzIGxpdHRsZSBjb3N0IGFuZCBzb21lIHByYWN0aWNhbCBiZW5l Zml0IChzciAxMTA1MzIpLiAgKi8KKy0jaWZkZWYgX19jcGx1c3BsdXMKKy1leHRlcm4gIkMiCist I2VuZGlmCistY2hhciB0Z2V0ZW50ICh2b2lkKTsKKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1y ZXR1cm4gdGdldGVudCAoKTsKKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBh Y19mbl9jX3RyeV9saW5rICIkTElORU5PIgorLXRoZW4gOgorLSAgYWNfY3ZfbGliX2N1cnNlc190 Z2V0ZW50PXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl9saWJfY3Vyc2VzX3Rn ZXRlbnQ9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gXAorLSAgICBjb25mdGVzdCRhY19leGVleHQgY29u ZnRlc3QuJGFjX2V4dAorLUxJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMgOzsKKy1lc2FjCist ZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiAkYWNfY3ZfbGliX2N1cnNlc190Z2V0ZW50IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfY3Zf bGliX2N1cnNlc190Z2V0ZW50IiA+JjY7IH0KKy1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9jdXJzZXNf dGdldGVudCIgPSB4eWVzCistdGhlbiA6CistICBiYXNoX2N2X3Rlcm1jYXBfbGliPWxpYmN1cnNl cworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHRnZXRlbnQgaW4gLWxuY3Vyc2VzdyIgPiY1 CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgdGdldGVudCBpbiAtbG5jdXJzZXN3Li4uICIgPiY2 OyB9CistaWYgdGVzdCAke2FjX2N2X2xpYl9uY3Vyc2Vzd190Z2V0ZW50K3l9CistdGhlbiA6Cist ICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFj X2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKKy1MSUJTPSItbG5jdXJzZXN3ICAkTElCUyIKKy1j YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZk ZWZzLmguICAqLworLQorLS8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRv IGF2b2lkIGFuIGVycm9yLgorLSAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRo ZSByZXR1cm4gdHlwZSBvZiBhIEdDQworLSAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50 IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4KKy0gICBUaGUgJ2V4dGVybiAiQyInIGlzIGZv ciBidWlsZHMgYnkgQysrIGNvbXBpbGVyczsKKy0gICBhbHRob3VnaCB0aGlzIGlzIG5vdCBnZW5l cmFsbHkgc3VwcG9ydGVkIGluIEMgY29kZSBzdXBwb3J0aW5nIGl0IGhlcmUKKy0gICBoYXMgbGl0 dGxlIGNvc3QgYW5kIHNvbWUgcHJhY3RpY2FsIGJlbmVmaXQgKHNyIDExMDUzMikuICAqLworLSNp ZmRlZiBfX2NwbHVzcGx1cworLWV4dGVybiAiQyIKKy0jZW5kaWYKKy1jaGFyIHRnZXRlbnQgKHZv aWQpOworLWludAorLW1haW4gKHZvaWQpCisteworLXJldHVybiB0Z2V0ZW50ICgpOworLSAgOwor LSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8i CistdGhlbiA6CistICBhY19jdl9saWJfbmN1cnNlc3dfdGdldGVudD15ZXMKKy1lbHNlIGNhc2Ug ZSBpbiAjKAorLSAgZSkgYWNfY3ZfbGliX25jdXJzZXN3X3RnZXRlbnQ9bm8gOzsKKy1lc2FjCist ZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0 LmJlYW0gXAorLSAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLUxJQlM9 JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIg IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX25jdXJzZXN3 X3RnZXRlbnQiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19jdl9saWJfbmN1cnNlc3dfdGdldGVu dCIgPiY2OyB9CistaWYgdGVzdCAieCRhY19jdl9saWJfbmN1cnNlc3dfdGdldGVudCIgPSB4eWVz CistdGhlbiA6CistICBiYXNoX2N2X3Rlcm1jYXBfbGliPWxpYm5jdXJzZXN3CistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyBmb3IgdGdldGVudCBpbiAtbG5jdXJzZXMiID4mNQorLXByaW50ZiAlcyAi Y2hlY2tpbmcgZm9yIHRnZXRlbnQgaW4gLWxuY3Vyc2VzLi4uICIgPiY2OyB9CistaWYgdGVzdCAk e2FjX2N2X2xpYl9uY3Vyc2VzX3RnZXRlbnQreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNh Y2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY2hlY2tfbGliX3NhdmVf TElCUz0kTElCUworLUxJQlM9Ii1sbmN1cnNlcyAgJExJQlMiCistY2F0IGNvbmZkZWZzLmggLSA8 PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0v KiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4K Ky0gICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2Yg YSBHQ0MKKy0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQg c3RpbGwgYXBwbHkuCistICAgVGhlICdleHRlcm4gIkMiJyBpcyBmb3IgYnVpbGRzIGJ5IEMrKyBj b21waWxlcnM7CistICAgYWx0aG91Z2ggdGhpcyBpcyBub3QgZ2VuZXJhbGx5IHN1cHBvcnRlZCBp biBDIGNvZGUgc3VwcG9ydGluZyBpdCBoZXJlCistICAgaGFzIGxpdHRsZSBjb3N0IGFuZCBzb21l IHByYWN0aWNhbCBiZW5lZml0IChzciAxMTA1MzIpLiAgKi8KKy0jaWZkZWYgX19jcGx1c3BsdXMK Ky1leHRlcm4gIkMiCistI2VuZGlmCistY2hhciB0Z2V0ZW50ICh2b2lkKTsKKy1pbnQKKy1tYWlu ICh2b2lkKQorLXsKKy1yZXR1cm4gdGdldGVudCAoKTsKKy0gIDsKKy0gIHJldHVybiAwOworLX0K Ky1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIgorLXRoZW4gOgorLSAgYWNf Y3ZfbGliX25jdXJzZXNfdGdldGVudD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNf Y3ZfbGliX25jdXJzZXNfdGdldGVudD1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29u ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0 ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistTElCUz0kYWNfY2hlY2tfbGliX3NhdmVf TElCUyA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfbmN1cnNlc190Z2V0ZW50IiA+JjUKKy1wcmlu dGYgIiVzXG4iICIkYWNfY3ZfbGliX25jdXJzZXNfdGdldGVudCIgPiY2OyB9CistaWYgdGVzdCAi eCRhY19jdl9saWJfbmN1cnNlc190Z2V0ZW50IiA9IHh5ZXMKKy10aGVuIDoKKy0gIGJhc2hfY3Zf dGVybWNhcF9saWI9bGlibmN1cnNlcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBiYXNoX2N2 X3Rlcm1jYXBfbGliPWdudXRlcm1jYXAgOzsKKy1lc2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkK Ky0gOzsKKy1lc2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy0g OzsKKy1lc2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy0KKy1pZiB0ZXN0ICJYJF9iYXNoX25l ZWRtc2ciID0gIlh5ZXMiOyB0aGVuCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIHdoaWNoIGxpYnJhcnkgaGFzIHRoZSB0ZXJtY2FwIGZ1bmN0 aW9ucyIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyB3aGljaCBsaWJyYXJ5IGhhcyB0aGUgdGVy bWNhcCBmdW5jdGlvbnMuLi4gIiA+JjY7IH0KKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHVzaW5nICRiYXNoX2N2X3Rlcm1jYXBfbGli IiA+JjUKKy1wcmludGYgIiVzXG4iICJ1c2luZyAkYmFzaF9jdl90ZXJtY2FwX2xpYiIgPiY2OyB9 CistaWYgdGVzdCAkYmFzaF9jdl90ZXJtY2FwX2xpYiA9IGdudXRlcm1jYXAgJiYgdGVzdCAteiAi JHByZWZlcl9jdXJzZXMiOyB0aGVuCistTERGTEFHUz0iJExERkxBR1MgLUwuL2xpYi90ZXJtY2Fw IgorLVRFUk1DQVBfTElCPSIuL2xpYi90ZXJtY2FwL2xpYnRlcm1jYXAuYSIKKy1URVJNQ0FQX0RF UD0iLi9saWIvdGVybWNhcC9saWJ0ZXJtY2FwLmEiCistZWxpZiB0ZXN0ICRiYXNoX2N2X3Rlcm1j YXBfbGliID0gbGlidGVybWNhcCAmJiB0ZXN0IC16ICIkcHJlZmVyX2N1cnNlcyI7IHRoZW4KKy1U RVJNQ0FQX0xJQj0tbHRlcm1jYXAKKy1URVJNQ0FQX0RFUD0KKy1lbGlmIHRlc3QgJGJhc2hfY3Zf dGVybWNhcF9saWIgPSBsaWJ0aW5mbzsgdGhlbgorLVRFUk1DQVBfTElCPS1sdGluZm8KKy1URVJN Q0FQX0RFUD0KKy1lbGlmIHRlc3QgJGJhc2hfY3ZfdGVybWNhcF9saWIgPSBsaWJuY3Vyc2Vzdzsg dGhlbgorLVRFUk1DQVBfTElCPS1sbmN1cnNlc3cKKy1URVJNQ0FQX0RFUD0KKy1lbGlmIHRlc3Qg JGJhc2hfY3ZfdGVybWNhcF9saWIgPSBsaWJuY3Vyc2VzOyB0aGVuCistVEVSTUNBUF9MSUI9LWxu Y3Vyc2VzCistVEVSTUNBUF9ERVA9CistZWxpZiB0ZXN0ICRiYXNoX2N2X3Rlcm1jYXBfbGliID0g bGliY3Vyc2VzOyB0aGVuCistVEVSTUNBUF9MSUI9LWxjdXJzZXMKKy1URVJNQ0FQX0RFUD0KKy1l bGlmIHRlc3QgJGJhc2hfY3ZfdGVybWNhcF9saWIgPSBsaWJjOyB0aGVuCistVEVSTUNBUF9MSUI9 CistVEVSTUNBUF9ERVA9CistZWxzZQorLSMgd2UgYXNzdW1lIG5jdXJzZXMgaXMgaW5zdGFsbGVk IHNvbWV3aGVyZSB0aGUgbGlua2VyIGNhbiBmaW5kIGl0CistVEVSTUNBUF9MSUI9LWxuY3Vyc2Vz CistVEVSTUNBUF9ERVA9CistZmkKKy0KKy0KKy0KKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgdmVyc2lvbiBvZiBpbnN0YWxsZWQgcmVh ZGxpbmUgbGlicmFyeSIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyB2ZXJzaW9uIG9mIGluc3Rh bGxlZCByZWFkbGluZSBsaWJyYXJ5Li4uICIgPiY2OyB9CistCistIyBXaGF0IGEgcGFpbiBpbiB0 aGUgYXNzIHRoaXMgaXMuCistCistIyBzYXZlIGNwcCBhbmQgbGQgb3B0aW9ucworLV9zYXZlX0NG TEFHUz0iJENGTEFHUyIKKy1fc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy1fc2F2ZV9MSUJTPSIk TElCUyIKKy0KKy0jIERvbid0IHNldCBhY19jdl9ybF9wcmVmaXggaWYgdGhlIGNhbGxlciBoYXMg YWxyZWFkeSBhc3NpZ25lZCBhIHZhbHVlLiAgVGhpcworLSMgYWxsb3dzIHRoZSBjYWxsZXIgdG8g ZG8gc29tZXRoaW5nIGxpa2UgJF9ybF9wcmVmaXg9JHdpdGh2YWwgaWYgdGhlIHVzZXIKKy0jIHNw ZWNpZmllcyAtLXdpdGgtaW5zdGFsbGVkLXJlYWRsaW5lPVBSRUZJWCBhcyBhbiBhcmd1bWVudCB0 byBjb25maWd1cmUKKy0KKy1pZiB0ZXN0IC16ICIkYWNfY3ZfcmxfcHJlZml4IjsgdGhlbgorLXRl c3QgIngkcHJlZml4IiA9IHhOT05FICYmIGFjX2N2X3JsX3ByZWZpeD0kYWNfZGVmYXVsdF9wcmVm aXggfHwgYWNfY3ZfcmxfcHJlZml4PSR7cHJlZml4fQorLWZpCistCistZXZhbCBhY19jdl9ybF9p bmNsdWRlZGlyPSR7YWNfY3ZfcmxfcHJlZml4fS9pbmNsdWRlCistZXZhbCBhY19jdl9ybF9saWJk aXI9JHthY19jdl9ybF9wcmVmaXh9L2xpYgorLQorLUxJQlM9IiRMSUJTIC1scmVhZGxpbmUgJHtU RVJNQ0FQX0xJQn0iCistQ0ZMQUdTPSIkQ0ZMQUdTIC1JJHthY19jdl9ybF9pbmNsdWRlZGlyfSIK Ky1MREZMQUdTPSIkTERGTEFHUyAtTCR7YWNfY3ZfcmxfbGliZGlyfSIKKy0KKy1pZiB0ZXN0ICR7 YWNfY3ZfcmxfdmVyc2lvbit5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4m NgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9 IHllcworLXRoZW4gOgorLSAgYWNfY3ZfcmxfdmVyc2lvbj0nOC4wJworLQorLWVsc2UgY2FzZSBl IGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0 CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLSNpbmNsdWRlIDxzdGRpby5oPgorLSNpbmNs dWRlIDxyZWFkbGluZS9yZWFkbGluZS5oPgorLSNpbmNsdWRlIDxzdGRsaWIuaD4KKy0KKy1leHRl cm4gaW50IHJsX2dudV9yZWFkbGluZV9wOworLQorLWludAorLW1haW4oKQorLXsKKy0JRklMRSAq ZnA7CistCWZwID0gZm9wZW4oImNvbmZ0ZXN0LnJsdiIsICJ3Iik7CistCWlmIChmcCA9PSAwKQor LQkJZXhpdCgxKTsKKy0JaWYgKHJsX2dudV9yZWFkbGluZV9wICE9IDEpCistCQlmcHJpbnRmKGZw LCAiMC4wXG4iKTsKKy0JZWxzZQorLQkJZnByaW50ZihmcCwgIiVzXG4iLCBybF9saWJyYXJ5X3Zl cnNpb24gPyBybF9saWJyYXJ5X3ZlcnNpb24gOiAiMC4wIik7CistCWZjbG9zZShmcCk7CistCWV4 aXQoMCk7CistfQorLQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyIKKy10 aGVuIDoKKy0gIGFjX2N2X3JsX3ZlcnNpb249YGNhdCBjb25mdGVzdC5ybHZgCistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIGFjX2N2X3JsX3ZlcnNpb249JzAuMCcgOzsKKy1lc2FjCistZmkKKy1y bSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0 JGFjX2V4ZWV4dCBcCistICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRl c3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLSA7OworLWVzYWMKKy1maQorLQorLQorLUNGTEFH Uz0iJF9zYXZlX0NGTEFHUyIKKy1MREZMQUdTPSIkX3NhdmVfTERGTEFHUyIKKy1MSUJTPSIkX3Nh dmVfTElCUyIKKy0KKy1STF9NQUpPUj0wCistUkxfTUlOT1I9MAorLQorLSMgKAorLWNhc2UgIiRh Y19jdl9ybF92ZXJzaW9uIiBpbgorLTIqfDMqfDQqfDUqfDYqfDcqfDgqfDkqKQorLQlSTF9NQUpP Uj1gZWNobyAkYWNfY3ZfcmxfdmVyc2lvbiB8IHNlZCAnczpcLi4qJDo6J2AKKy0JUkxfTUlOT1I9 YGVjaG8gJGFjX2N2X3JsX3ZlcnNpb24gfCBzZWQgLWUgJ3M6Xi4qXC46OicgLWUgJ3M6W2EtekEt Wl0qJDo6J2AKKy0JOzsKKy1lc2FjCistCistIyAoKCgKKy1jYXNlICRSTF9NQUpPUiBpbgorLVsw LTldWzAtOV0pCV9STF9NQUpPUj0kUkxfTUFKT1IgOzsKKy1bMC05XSkJX1JMX01BSk9SPTAkUkxf TUFKT1IgOzsKKy0qKQkJX1JMX01BSk9SPTAwIDs7CistZXNhYworLQorLSMgKCgoCistY2FzZSAk UkxfTUlOT1IgaW4KKy1bMC05XVswLTldKQlfUkxfTUlOT1I9JFJMX01JTk9SIDs7CistWzAtOV0p CV9STF9NSU5PUj0wJFJMX01JTk9SIDs7CistKikJCV9STF9NSU5PUj0wMCA7OworLWVzYWMKKy0K Ky1STF9WRVJTSU9OPSIweCR7X1JMX01BSk9SfSR7X1JMX01JTk9SfSIKKy0KKy0jIFJlYWRsaW5l IHZlcnNpb25zIGdyZWF0ZXIgdGhhbiA0LjIgaGF2ZSB0aGVzZSBkZWZpbmVzIGluIHJlYWRsaW5l LmgKKy0KKy1pZiB0ZXN0ICRhY19jdl9ybF92ZXJzaW9uID0gJzAuMCcgOyB0aGVuCistCXsgcHJp bnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBDb3VsZCBu b3QgdGVzdCB2ZXJzaW9uIG9mIGluc3RhbGxlZCByZWFkbGluZSBsaWJyYXJ5LiIgPiY1CistcHJp bnRmICIlc1xuIiAiJGFzX21lOiBXQVJOSU5HOiBDb3VsZCBub3QgdGVzdCB2ZXJzaW9uIG9mIGlu c3RhbGxlZCByZWFkbGluZSBsaWJyYXJ5LiIgPiYyO30KKy1lbGlmIHRlc3QgJFJMX01BSk9SIC1n dCA0IHx8IHsgdGVzdCAkUkxfTUFKT1IgPSA0ICYmIHRlc3QgJFJMX01JTk9SIC1ndCAyIDsgfSA7 IHRoZW4KKy0JIyBzZXQgdGhlc2UgZm9yIHVzZSBieSB0aGUgY2FsbGVyCistCVJMX1BSRUZJWD0k YWNfY3ZfcmxfcHJlZml4CistCVJMX0xJQkRJUj0kYWNfY3ZfcmxfbGliZGlyCistCVJMX0lOQ0xV REVESVI9JGFjX2N2X3JsX2luY2x1ZGVkaXIKKy0JeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3JsX3ZlcnNpb24iID4mNQorLXByaW50 ZiAiJXNcbiIgIiRhY19jdl9ybF92ZXJzaW9uIiA+JjY7IH0KKy1lbHNlCistCistCistcHJpbnRm ICIlc1xuIiAiI2RlZmluZSBSTF9SRUFETElORV9WRVJTSU9OICRSTF9WRVJTSU9OIiA+PmNvbmZk ZWZzLmgKKy0KKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIFJMX1ZFUlNJT05fTUFKT1IgJFJM X01BSk9SIiA+PmNvbmZkZWZzLmgKKy0KKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIFJMX1ZF UlNJT05fTUlOT1IgJFJMX01JTk9SIiA+PmNvbmZkZWZzLmgKKy0KKy0KKy0KKy0KKy0KKy0KKy0j IHNldCB0aGVzZSBmb3IgdXNlIGJ5IHRoZSBjYWxsZXIKKy1STF9QUkVGSVg9JGFjX2N2X3JsX3By ZWZpeAorLVJMX0xJQkRJUj0kYWNfY3ZfcmxfbGliZGlyCistUkxfSU5DTFVERURJUj0kYWNfY3Zf cmxfaW5jbHVkZWRpcgorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6ICRhY19jdl9ybF92ZXJzaW9uIiA+JjUKKy1wcmludGYgIiVzXG4iICIk YWNfY3ZfcmxfdmVyc2lvbiIgPiY2OyB9CistCistZmkKKy0KKy0KKy0JY2FzZSAiJGFjX2N2X3Js X3ZlcnNpb24iIGluCistCTgqfDkqKQk7OworLQkqKQlvcHRfd2l0aF9pbnN0YWxsZWRfcmVhZGxp bmU9bm8KKy0JCXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBX QVJOSU5HOiBpbnN0YWxsZWQgcmVhZGxpbmUgbGlicmFyeSBpcyB0b28gb2xkIHRvIGJlIGxpbmtl ZCB3aXRoIGJhc2giID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogV0FSTklORzogaW5zdGFs bGVkIHJlYWRsaW5lIGxpYnJhcnkgaXMgdG9vIG9sZCB0byBiZSBsaW5rZWQgd2l0aCBiYXNoIiA+ JjI7fQorLQkJeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdB Uk5JTkc6IHVzaW5nIHByaXZhdGUgYmFzaCB2ZXJzaW9uIiA+JjUKKy1wcmludGYgIiVzXG4iICIk YXNfbWU6IFdBUk5JTkc6IHVzaW5nIHByaXZhdGUgYmFzaCB2ZXJzaW9uIiA+JjI7fQorLQkJOzsK Ky0JZXNhYworLWZpCistCistVElMREVfTElCPS1sdGlsZGUKKy1pZiB0ZXN0ICRvcHRfcmVhZGxp bmUgPSB5ZXM7IHRoZW4KKy0JcHJpbnRmICIlc1xuIiAiI2RlZmluZSBSRUFETElORSAxIiA+PmNv bmZkZWZzLmgKKy0KKy0JaWYgdGVzdCAiJG9wdF93aXRoX2luc3RhbGxlZF9yZWFkbGluZSIgIT0g Im5vIiA7IHRoZW4KKy0JCWNhc2UgIiRvcHRfd2l0aF9pbnN0YWxsZWRfcmVhZGxpbmUiIGluCist CQl5ZXMpCVJMX0lOQ0xVREU9IDs7CistCQkqKQljYXNlICIkUkxfSU5DTFVERURJUiIgaW4KKy0J CQkvdXNyL2luY2x1ZGUpCTs7CistCQkJKikJCVJMX0lOQ0xVREU9Jy1JJHtSTF9JTkNMVURFRElS fScgOzsKKy0JCQllc2FjCistCQkJOzsKKy0JCWVzYWMKKy0JCVJFQURMSU5FX0RFUD0KKy0JCVJF QURMSU5FX0xJQj0tbHJlYWRsaW5lCistCQkjIHNlY3Rpb24gZm9yIE9TIHZlcnNpb25zIHRoYXQg ZG9uJ3QgYWxsb3cgdW5yZXNvbHZlZCBzeW1ib2xzCistCQkjIHRvIGJlIGNvbXBpbGVkIGludG8g ZHluYW1pYyBsaWJyYXJpZXMuCistCQljYXNlICIkaG9zdF9vcyIgaW4KKy0JCWN5Z3dpbip8bXN5 cyopCVRJTERFX0xJQj0gOzsKKy0JCWVzYWMKKy0JZWxzZQorLQkJUkxfTElCRElSPSckKGRvdCkv JChMSUJTVUJESVIpL3JlYWRsaW5lJworLQkJUkVBRExJTkVfREVQPSckKFJFQURMSU5FX0xJQlJB UlkpJworLQkJIyBmb3IgZGVwZW5kZW5jaWVzCistCQlSTF9JTkNMVURFRElSPSckKFJMX0xJQkRJ UiknCistCQkjIHNlY3Rpb24gZm9yIE9TIHZlcnNpb25zIHRoYXQgc2hpcCBhbiBvbGRlci9icm9r ZW4gdmVyc2lvbiBvZgorLQkJIyByZWFkbGluZSBhcyBhIHN0YW5kYXJkIGR5bmFtaWMgbGlicmFy eSBhbmQgZG9uJ3QgYWxsb3cgYQorLQkJIyBzdGF0aWMgdmVyc2lvbiBzcGVjaWZpZWQgYXMgLWxs aWJuYW1lIHRvIG92ZXJyaWRlIHRoZQorLQkJIyBkeW5hbWljIHZlcnNpb24KKy0JCWNhc2UgIiR7 aG9zdF9vc30iIGluCistCQlkYXJ3aW5bODldKnxkYXJ3aW4xMCopIFJFQURMSU5FX0xJQj0nJHtS RUFETElORV9MSUJSQVJZfScgOzsKKy0JCSopCQlSRUFETElORV9MSUI9LWxyZWFkbGluZSA7Owor LQkJZXNhYworLQlmaQorLWVsc2UKKy0JUkxfTElCRElSPSckKGRvdCkvJChMSUJTVUJESVIpL3Jl YWRsaW5lJworLQlSRUFETElORV9MSUI9IFJFQURMSU5FX0RFUD0KKy0JUkxfSU5DTFVERURJUj0K Ky1maQorLWlmIHRlc3QgJG9wdF9oaXN0b3J5ID0geWVzIHx8IHRlc3QgJG9wdF9iYW5nX2hpc3Rv cnkgPSB5ZXM7IHRoZW4KKy0JaWYgdGVzdCAkb3B0X2hpc3RvcnkgPSB5ZXM7IHRoZW4KKy0JCXBy aW50ZiAiJXNcbiIgIiNkZWZpbmUgSElTVE9SWSAxIiA+PmNvbmZkZWZzLmgKKy0KKy0JZmkKKy0J aWYgdGVzdCAkb3B0X2JhbmdfaGlzdG9yeSA9IHllczsgdGhlbgorLQkJcHJpbnRmICIlc1xuIiAi I2RlZmluZSBCQU5HX0hJU1RPUlkgMSIgPj5jb25mZGVmcy5oCistCistCWZpCistIAlpZiB0ZXN0 ICIkb3B0X3dpdGhfaW5zdGFsbGVkX3JlYWRsaW5lIiAhPSAibm8iOyB0aGVuCistCQlISVNUX0xJ QkRJUj0kUkxfTElCRElSCistCQlISVNUT1JZX0RFUD0KKy0JCUhJU1RPUllfTElCPS1saGlzdG9y eQorLQkJY2FzZSAiJG9wdF93aXRoX2luc3RhbGxlZF9yZWFkbGluZSIgaW4KKy0JCXllcykJUkxf SU5DTFVERT0gOzsKKy0JCSopCWNhc2UgIiRSTF9JTkNMVURFRElSIiBpbgorLQkJCS91c3IvaW5j bHVkZSkJOzsKKy0JCQkqKQkJUkxfSU5DTFVERT0nLUkke1JMX0lOQ0xVREVESVJ9JyA7OworLQkJ CWVzYWMKKy0JCQk7OworLQkJZXNhYworLQllbHNlCistCQlISVNUX0xJQkRJUj0nJChkb3QpLyQo TElCU1VCRElSKS9yZWFkbGluZScKKy0JCUhJU1RPUllfREVQPSckKEhJU1RPUllfTElCUkFSWSkn CistCQkjIGZvciBkZXBlbmRlbmNpZXMKKy0JCUhJU1RfSU5DTFVERURJUj0nJChISVNUX0xJQkRJ UiknCistCQkjIHNlY3Rpb24gZm9yIE9TIHZlcnNpb25zIHRoYXQgc2hpcCBhbiBvbGRlciB2ZXJz aW9uIG9mCistCQkjIHJlYWRsaW5lIGFzIGEgc3RhbmRhcmQgZHluYW1pYyBsaWJyYXJ5IGFuZCBk b24ndCBhbGxvdyBhCistCQkjIHN0YXRpYyB2ZXJzaW9uIHNwZWNpZmllZCBhcyAtbGxpYm5hbWUg dG8gb3ZlcnJpZGUgdGhlCistCQkjIGR5bmFtaWMgdmVyc2lvbgorLQkJY2FzZSAiJHtob3N0X29z fSIgaW4KKy0JCWRhcndpbls4OV0qfGRhcndpbjEwKikgSElTVE9SWV9MSUI9JyR7SElTVE9SWV9M SUJSQVJZfScgOzsKKy0JCSopCQlISVNUT1JZX0xJQj0tbGhpc3RvcnkgOzsKKy0JCWVzYWMKKy0J ZmkKKy1lbHNlCistCUhJU1RfTElCRElSPSckKGRvdCkvJChMSUJTVUJESVIpL3JlYWRsaW5lJwor LQlISVNUT1JZX0xJQj0gSElTVE9SWV9ERVA9CistCUhJU1RfSU5DTFVERURJUj0KKy1maQorLQor LQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLSAgIyBGaW5kIGEgZ29vZCBpbnN0 YWxsIHByb2dyYW0uICBXZSBwcmVmZXIgYSBDIHByb2dyYW0gKGZhc3RlciksCistIyBzbyBvbmUg c2NyaXB0IGlzIGFzIGdvb2QgYXMgYW5vdGhlci4gIEJ1dCBhdm9pZCB0aGUgYnJva2VuIG9yCist IyBpbmNvbXBhdGlibGUgdmVyc2lvbnM6CistIyBTeXNWIC9ldGMvaW5zdGFsbCwgL3Vzci9zYmlu L2luc3RhbGwKKy0jIFN1bk9TIC91c3IvZXRjL2luc3RhbGwKKy0jIElSSVggL3NiaW4vaW5zdGFs bAorLSMgQUlYIC9iaW4vaW5zdGFsbAorLSMgQW1pZ2FPUyAvQy9pbnN0YWxsLCB3aGljaCBpbnN0 YWxscyBib290YmxvY2tzIG9uIGZsb3BweSBkaXNjcworLSMgQUlYIDQgL3Vzci9iaW4vaW5zdGFs bGJzZCwgd2hpY2ggZG9lc24ndCB3b3JrIHdpdGhvdXQgYSAtZyBmbGFnCistIyBBRlMgL3Vzci9h ZnN3cy9iaW4vaW5zdGFsbCwgd2hpY2ggbWlzaGFuZGxlcyBub25leGlzdGVudCBhcmdzCistIyBT VlI0IC91c3IvdWNiL2luc3RhbGwsIHdoaWNoIHRyaWVzIHRvIHVzZSB0aGUgbm9uZXhpc3RlbnQg Z3JvdXAgInN0YWZmIgorLSMgT1MvMidzIHN5c3RlbSBpbnN0YWxsLCB3aGljaCBoYXMgYSBjb21w bGV0ZWx5IGRpZmZlcmVudCBzZW1hbnRpYworLSMgLi9pbnN0YWxsLCB3aGljaCBjYW4gYmUgZXJy b25lb3VzbHkgY3JlYXRlZCBieSBtYWtlIGZyb20gLi9pbnN0YWxsLnNoLgorLSMgUmVqZWN0IGlu c3RhbGwgcHJvZ3JhbXMgdGhhdCBjYW5ub3QgaW5zdGFsbCBtdWx0aXBsZSBmaWxlcy4KKy17IHBy aW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEg QlNELWNvbXBhdGlibGUgaW5zdGFsbCIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgYSBC U0QtY29tcGF0aWJsZSBpbnN0YWxsLi4uICIgPiY2OyB9CistaWYgdGVzdCAteiAiJElOU1RBTEwi OyB0aGVuCistaWYgdGVzdCAke2FjX2N2X3BhdGhfaW5zdGFsbCt5fQorLXRoZW4gOgorLSAgcHJp bnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhc19zYXZl X0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCistZm9yIGFzX2RpciBpbiAkUEFUSAorLWRv CistICBJRlM9JGFzX3NhdmVfSUZTCistICBjYXNlICRhc19kaXIgaW4gIygoKAorLSAgICAnJykg YXNfZGlyPS4vIDs7CistICAgICovKSA7OworLSAgICAqKSBhc19kaXI9JGFzX2Rpci8gOzsKKy0g IGVzYWMKKy0gICAgIyBBY2NvdW50IGZvciBmYWN0IHRoYXQgd2UgcHV0IHRyYWlsaW5nIHNsYXNo ZXMgaW4gb3VyIFBBVEggd2Fsay4KKy1jYXNlICRhc19kaXIgaW4gIygoCistICAuLyB8IC9bY0Nd LyogfCBcCistICAvZXRjLyogfCAvdXNyL3NiaW4vKiB8IC91c3IvZXRjLyogfCAvc2Jpbi8qIHwg L3Vzci9hZnN3cy9iaW4vKiB8IFwKKy0gID86W1xcL11vczJbXFwvXWluc3RhbGxbXFwvXSogfCA/ OltcXC9dT1MyW1xcL11JTlNUQUxMW1xcL10qIHwgXAorLSAgL3Vzci91Y2IvKiApIDs7CistICAq KQorLSAgICAjIE9TRjEgYW5kIFNDTyBPRFQgMy4wIGhhdmUgdGhlaXIgb3duIG5hbWVzIGZvciBp bnN0YWxsLgorLSAgICAjIERvbid0IHVzZSBpbnN0YWxsYnNkIGZyb20gT1NGIHNpbmNlIGl0IGlu c3RhbGxzIHN0dWZmIGFzIHJvb3QKKy0gICAgIyBieSBkZWZhdWx0LgorLSAgICBmb3IgYWNfcHJv ZyBpbiBnaW5zdGFsbCBzY29pbnN0IGluc3RhbGw7IGRvCistICAgICAgZm9yIGFjX2V4ZWNfZXh0 IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistCWlmIGFzX2ZuX2V4ZWN1dGFi bGVfcCAiJGFzX2RpciRhY19wcm9nJGFjX2V4ZWNfZXh0IjsgdGhlbgorLQkgIGlmIHRlc3QgJGFj X3Byb2cgPSBpbnN0YWxsICYmCistCSAgICBncmVwIGRzcG1zZyAiJGFzX2RpciRhY19wcm9nJGFj X2V4ZWNfZXh0IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKy0JICAgICMgQUlYIGluc3RhbGwuICBJ dCBoYXMgYW4gaW5jb21wYXRpYmxlIGNhbGxpbmcgY29udmVudGlvbi4KKy0JICAgIDoKKy0JICBl bGlmIHRlc3QgJGFjX3Byb2cgPSBpbnN0YWxsICYmCistCSAgICBncmVwIHB3cGx1cyAiJGFzX2Rp ciRhY19wcm9nJGFjX2V4ZWNfZXh0IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKy0JICAgICMgcHJv Z3JhbS1zcGVjaWZpYyBpbnN0YWxsIHNjcmlwdCB1c2VkIGJ5IEhQIHB3cGx1cy0tZG9uJ3QgdXNl LgorLQkgICAgOgorLQkgIGVsc2UKKy0JICAgIHJtIC1yZiBjb25mdGVzdC5vbmUgY29uZnRlc3Qu dHdvIGNvbmZ0ZXN0LmRpcgorLQkgICAgZWNobyBvbmUgPiBjb25mdGVzdC5vbmUKKy0JICAgIGVj aG8gdHdvID4gY29uZnRlc3QudHdvCistCSAgICBta2RpciBjb25mdGVzdC5kaXIKKy0JICAgIGlm ICIkYXNfZGlyJGFjX3Byb2ckYWNfZXhlY19leHQiIC1jIGNvbmZ0ZXN0Lm9uZSBjb25mdGVzdC50 d28gImBwd2RgL2NvbmZ0ZXN0LmRpci8iICYmCistCSAgICAgIHRlc3QgLXMgY29uZnRlc3Qub25l ICYmIHRlc3QgLXMgY29uZnRlc3QudHdvICYmCistCSAgICAgIHRlc3QgLXMgY29uZnRlc3QuZGly L2NvbmZ0ZXN0Lm9uZSAmJgorLQkgICAgICB0ZXN0IC1zIGNvbmZ0ZXN0LmRpci9jb25mdGVzdC50 d28KKy0JICAgIHRoZW4KKy0JICAgICAgYWNfY3ZfcGF0aF9pbnN0YWxsPSIkYXNfZGlyJGFjX3By b2ckYWNfZXhlY19leHQgLWMiCistCSAgICAgIGJyZWFrIDMKKy0JICAgIGZpCistCSAgZmkKKy0J ZmkKKy0gICAgICBkb25lCistICAgIGRvbmUKKy0gICAgOzsKKy1lc2FjCistCistICBkb25lCist SUZTPSRhc19zYXZlX0lGUworLQorLXJtIC1yZiBjb25mdGVzdC5vbmUgY29uZnRlc3QudHdvIGNv bmZ0ZXN0LmRpcgorLSA7OworLWVzYWMKKy1maQorLSAgaWYgdGVzdCAke2FjX2N2X3BhdGhfaW5z dGFsbCt5fTsgdGhlbgorLSAgICBJTlNUQUxMPSRhY19jdl9wYXRoX2luc3RhbGwKKy0gIGVsc2UK Ky0gICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB1c2UgdGhlIHNsb3cgc2hlbGwgc2NyaXB0LiAgRG9u J3QgY2FjaGUgYQorLSAgICAjIHZhbHVlIGZvciBJTlNUQUxMIHdpdGhpbiBhIHNvdXJjZSBkaXJl Y3RvcnksIGJlY2F1c2UgdGhhdCB3aWxsCistICAgICMgYnJlYWsgb3RoZXIgcGFja2FnZXMgdXNp bmcgdGhlIGNhY2hlIGlmIHRoYXQgZGlyZWN0b3J5IGlzCistICAgICMgcmVtb3ZlZCwgb3IgaWYg dGhlIHZhbHVlIGlzIGEgcmVsYXRpdmUgbmFtZS4KKy0gICAgSU5TVEFMTD0kYWNfaW5zdGFsbF9z aAorLSAgZmkKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6ICRJTlNUQUxMIiA+JjUKKy1wcmludGYgIiVzXG4iICIkSU5TVEFMTCIgPiY2 OyB9CistCistIyBVc2UgdGVzdCAteiBiZWNhdXNlIFN1bk9TNCBzaCBtaXNoYW5kbGVzIGJyYWNl cyBpbiAke3Zhci12YWx9LgorLSMgSXQgdGhpbmtzIHRoZSBmaXJzdCBjbG9zZSBicmFjZSBlbmRz IHRoZSB2YXJpYWJsZSBzdWJzdGl0dXRpb24uCistdGVzdCAteiAiJElOU1RBTExfUFJPR1JBTSIg JiYgSU5TVEFMTF9QUk9HUkFNPScke0lOU1RBTEx9JworLQorLXRlc3QgLXogIiRJTlNUQUxMX1ND UklQVCIgJiYgSU5TVEFMTF9TQ1JJUFQ9JyR7SU5TVEFMTH0nCistCistdGVzdCAteiAiJElOU1RB TExfREFUQSIgJiYgSU5TVEFMTF9EQVRBPScke0lOU1RBTEx9IC1tIDY0NCcKKy0KKy1pZiB0ZXN0 IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQg b2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0 aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisteyBw cmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAk YWNfd29yZCIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7 IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfcHJvZ19BUit5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIo Y2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiB0ZXN0IC1uICIkQVIi OyB0aGVuCistICBhY19jdl9wcm9nX0FSPSIkQVIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRo ZSB0ZXN0LgorLWVsc2UKKy1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCist Zm9yIGFzX2RpciBpbiAkUEFUSAorLWRvCistICBJRlM9JGFzX3NhdmVfSUZTCistICBjYXNlICRh c19kaXIgaW4gIygoKAorLSAgICAnJykgYXNfZGlyPS4vIDs7CistICAgICovKSA7OworLSAgICAq KSBhc19kaXI9JGFzX2Rpci8gOzsKKy0gIGVzYWMKKy0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcn ICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistICBpZiBhc19mbl9leGVjdXRhYmxlX3Ag IiRhc19kaXIkYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19BUj0i JHthY190b29sX3ByZWZpeH1hciIKKy0gICAgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorLSAg ICBicmVhayAyCistICBmaQorLWRvbmUKKy0gIGRvbmUKKy1JRlM9JGFzX3NhdmVfSUZTCistCist ZmkgOzsKKy1lc2FjCistZmkKKy1BUj0kYWNfY3ZfcHJvZ19BUgorLWlmIHRlc3QgLW4gIiRBUiI7 IHRoZW4KKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRBUiIgPiY1CistcHJpbnRmICIlc1xuIiAiJEFSIiA+JjY7IH0KKy1lbHNlCistICB7 IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIg PiY1CistcHJpbnRmICIlc1xuIiAibm8iID4mNjsgfQorLWZpCistCistCistZmkKKy1pZiB0ZXN0 IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKy0gIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0 IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRo IGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisteyBwcmludGYgIiVzXG4iICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CistcHJp bnRmICVzICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNf Y3ZfcHJvZ19hY19jdF9BUit5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4m NgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiB0ZXN0IC1uICIkYWNfY3RfQVIiOyB0aGVu CistICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfY3RfQVIiICMgTGV0IHRoZSB1c2VyIG92ZXJy aWRlIHRoZSB0ZXN0LgorLWVsc2UKKy1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJB VE9SCistZm9yIGFzX2RpciBpbiAkUEFUSAorLWRvCistICBJRlM9JGFzX3NhdmVfSUZTCistICBj YXNlICRhc19kaXIgaW4gIygoKAorLSAgICAnJykgYXNfZGlyPS4vIDs7CistICAgICovKSA7Owor LSAgICAqKSBhc19kaXI9JGFzX2Rpci8gOzsKKy0gIGVzYWMKKy0gICAgZm9yIGFjX2V4ZWNfZXh0 IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistICBpZiBhc19mbl9leGVjdXRh YmxlX3AgIiRhc19kaXIkYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJv Z19hY19jdF9BUj0iYXIiCistICAgIHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogZm91bmQgJGFzX2RpciRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKy0gICAgYnJl YWsgMgorLSAgZmkKKy1kb25lCistICBkb25lCistSUZTPSRhc19zYXZlX0lGUworLQorLWZpIDs7 CistZXNhYworLWZpCistYWNfY3RfQVI9JGFjX2N2X3Byb2dfYWNfY3RfQVIKKy1pZiB0ZXN0IC1u ICIkYWNfY3RfQVIiOyB0aGVuCistICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQVIiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19j dF9BUiIgPiY2OyB9CistZWxzZQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorLXByaW50ZiAiJXNcbiIgIm5vIiA+JjY7IH0K Ky1maQorLQorLSAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCistICAgIEFSPSIiCist ICBlbHNlCistICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKy15 ZXM6KQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJO SU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4m NQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90 IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorLWFjX3Rvb2xfd2FybmVkPXllcyA7 OworLWVzYWMKKy0gICAgQVI9JGFjX2N0X0FSCistICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3Zf cHJvZ19BUiIKKy1maQorLQorLXRlc3QgLW4gIiRBUkZMQUdTIiB8fCBBUkZMQUdTPSJjciIKKy1p ZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0 IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3Jh bSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1yYW5saWI7IGFj X3dvcmQ9JDIKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Y2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciAkYWNf d29yZC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9wcm9nX1JBTkxJQit5fQorLXRoZW4g OgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgorLSAgYWNfY3ZfcHJvZ19SQU5MSUI9IiRSQU5M SUIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorLWVsc2UKKy1hc19zYXZlX0lG Uz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCistZm9yIGFzX2RpciBpbiAkUEFUSAorLWRvCist ICBJRlM9JGFzX3NhdmVfSUZTCistICBjYXNlICRhc19kaXIgaW4gIygoKAorLSAgICAnJykgYXNf ZGlyPS4vIDs7CistICAgICovKSA7OworLSAgICAqKSBhc19kaXI9JGFzX2Rpci8gOzsKKy0gIGVz YWMKKy0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7 IGRvCistICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIkYWNfd29yZCRhY19leGVjX2V4 dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19SQU5MSUI9IiR7YWNfdG9vbF9wcmVmaXh9cmFubGli IgorLSAgICBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5k ICRhc19kaXIkYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CistICAgIGJyZWFrIDIKKy0gIGZpCist ZG9uZQorLSAgZG9uZQorLUlGUz0kYXNfc2F2ZV9JRlMKKy0KKy1maSA7OworLWVzYWMKKy1maQor LVJBTkxJQj0kYWNfY3ZfcHJvZ19SQU5MSUIKKy1pZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgor LSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JFJBTkxJQiIgPiY1CistcHJpbnRmICIlc1xuIiAiJFJBTkxJQiIgPiY2OyB9CistZWxzZQorLSAg eyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8i ID4mNQorLXByaW50ZiAiJXNcbiIgIm5vIiA+JjY7IH0KKy1maQorLQorLQorLWZpCistaWYgdGVz dCAteiAiJGFjX2N2X3Byb2dfUkFOTElCIjsgdGhlbgorLSAgYWNfY3RfUkFOTElCPSRSQU5MSUIK Ky0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicmFubGliIiwgc28gaXQgY2FuIGJlIGEg cHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgcmFubGliOyBhY193b3JkPSQyCist eyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv ciAkYWNfd29yZCIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+ JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIreX0KKy10aGVuIDoKKy0g IHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgaWYg dGVzdCAtbiAiJGFjX2N0X1JBTkxJQiI7IHRoZW4KKy0gIGFjX2N2X3Byb2dfYWNfY3RfUkFOTElC PSIkYWNfY3RfUkFOTElCIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKy1lbHNl CistYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorLWZvciBhc19kaXIgaW4g JFBBVEgKKy1kbworLSAgSUZTPSRhc19zYXZlX0lGUworLSAgY2FzZSAkYXNfZGlyIGluICMoKCgK Ky0gICAgJycpIGFzX2Rpcj0uLyA7OworLSAgICAqLykgOzsKKy0gICAgKikgYXNfZGlyPSRhc19k aXIvIDs7CistICBlc2FjCistICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJs ZV9leHRlbnNpb25zOyBkbworLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyJGFjX3dv cmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCPSJyYW5s aWIiCistICAgIHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91 bmQgJGFzX2RpciRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKy0gICAgYnJlYWsgMgorLSAgZmkK Ky1kb25lCistICBkb25lCistSUZTPSRhc19zYXZlX0lGUworLQorLWZpIDs7CistZXNhYworLWZp CistYWNfY3RfUkFOTElCPSRhY19jdl9wcm9nX2FjX2N0X1JBTkxJQgorLWlmIHRlc3QgLW4gIiRh Y19jdF9SQU5MSUIiOyB0aGVuCistICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfUkFOTElCIiA+JjUKKy1wcmludGYgIiVzXG4iICIk YWNfY3RfUkFOTElCIiA+JjY7IH0KKy1lbHNlCistICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CistcHJpbnRmICIlc1xuIiAibm8i ID4mNjsgfQorLWZpCistCistICBpZiB0ZXN0ICJ4JGFjX2N0X1JBTkxJQiIgPSB4OyB0aGVuCist ICAgIFJBTkxJQj0iOiIKKy0gIGVsc2UKKy0gICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190 b29sX3dhcm5lZCBpbgorLXllczopCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRo IGhvc3QgdHJpcGxldCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiBXQVJOSU5HOiB1c2lu ZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CistYWNf dG9vbF93YXJuZWQ9eWVzIDs7CistZXNhYworLSAgICBSQU5MSUI9JGFjX2N0X1JBTkxJQgorLSAg ZmkKKy1lbHNlCistICBSQU5MSUI9IiRhY19jdl9wcm9nX1JBTkxJQiIKKy1maQorLQorLWZvciBh Y19wcm9nIGluICdiaXNvbiAteScgYnlhY2MKKy1kbworLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3 b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3Mu Cistc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisteyBwcmludGYgIiVzXG4iICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CistcHJp bnRmICVzICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNf Y3ZfcHJvZ19ZQUNDK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2Cist ZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgLW4gIiRZQUNDIjsgdGhlbgorLSAgYWNf Y3ZfcHJvZ19ZQUNDPSIkWUFDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCist ZWxzZQorLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKy1mb3IgYXNfZGly IGluICRQQVRICistZG8KKy0gIElGUz0kYXNfc2F2ZV9JRlMKKy0gIGNhc2UgJGFzX2RpciBpbiAj KCgoCistICAgICcnKSBhc19kaXI9Li8gOzsKKy0gICAgKi8pIDs7CistICAgICopIGFzX2Rpcj0k YXNfZGlyLyA7OworLSAgZXNhYworLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1 dGFibGVfZXh0ZW5zaW9uczsgZG8KKy0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2RpciRh Y193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX1lBQ0M9IiRhY19wcm9n IgorLSAgICBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5k ICRhc19kaXIkYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CistICAgIGJyZWFrIDIKKy0gIGZpCist ZG9uZQorLSAgZG9uZQorLUlGUz0kYXNfc2F2ZV9JRlMKKy0KKy1maSA7OworLWVzYWMKKy1maQor LVlBQ0M9JGFjX2N2X3Byb2dfWUFDQworLWlmIHRlc3QgLW4gIiRZQUNDIjsgdGhlbgorLSAgeyBw cmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFlBQ0Mi ID4mNQorLXByaW50ZiAiJXNcbiIgIiRZQUNDIiA+JjY7IH0KKy1lbHNlCistICB7IHByaW50ZiAi JXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CistcHJp bnRmICIlc1xuIiAibm8iID4mNjsgfQorLWZpCistCistCistICB0ZXN0IC1uICIkWUFDQyIgJiYg YnJlYWsKKy1kb25lCistdGVzdCAtbiAiJFlBQ0MiIHx8IFlBQ0M9InlhY2MiCistCisteyBwcmlu dGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIg JHtNQUtFLW1ha2V9IHNldHMgXCQoTUFLRSkiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgd2hl dGhlciAke01BS0UtbWFrZX0gc2V0cyBcJChNQUtFKS4uLiAiID4mNjsgfQorLXNldCB4ICR7TUFL RS1tYWtlfQorLWFjX21ha2U9YHByaW50ZiAiJXNcbiIgIiQyIiB8IHNlZCAncy8rL3AvZzsgcy9b XmEtekEtWjAtOV9dL18vZydgCistaWYgZXZhbCB0ZXN0IFwke2FjX2N2X3Byb2dfbWFrZV8ke2Fj X21ha2V9X3NldCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVs c2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgPmNvbmZ0ZXN0Lm1ha2UgPDxcX0FDRU9GCistU0hF TEwgPSAvYmluL3NoCistYWxsOgorLQlAZWNobyAnQEBAJSUlPSQoTUFLRSk9QEBAJSUlJworLV9B Q0VPRgorLSMgR05VIG1ha2Ugc29tZXRpbWVzIHByaW50cyAibWFrZVsxXTogRW50ZXJpbmcgLi4u Iiwgd2hpY2ggd291bGQgY29uZnVzZSB1cy4KKy1jYXNlIGAke01BS0UtbWFrZX0gLWYgY29uZnRl c3QubWFrZSAyPi9kZXYvbnVsbGAgaW4KKy0gICpAQEAlJSU9Pyo9QEBAJSUlKikKKy0gICAgZXZh bCBhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQ9eWVzOzsKKy0gICopCistICAgIGV2YWwg YWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0PW5vOzsKKy1lc2FjCistcm0gLWYgY29uZnRl c3QubWFrZSA7OworLWVzYWMKKy1maQorLWlmIGV2YWwgdGVzdCBcJGFjX2N2X3Byb2dfbWFrZV8k e2FjX21ha2V9X3NldCA9IHllczsgdGhlbgorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKy1wcmludGYgIiVzXG4iICJ5ZXMi ID4mNjsgfQorLSAgU0VUX01BS0U9CistZWxzZQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorLXByaW50ZiAiJXNcbiIgIm5v IiA+JjY7IH0KKy0gIFNFVF9NQUtFPSJNQUtFPSR7TUFLRS1tYWtlfSIKKy1maQorLQorLQorLQor LSMgRXhwYW5kICRhY19hdXhfZGlyIHRvIGFuIGFic29sdXRlIHBhdGguCistYW1fYXV4X2Rpcj1g Y2QgIiRhY19hdXhfZGlyIiAmJiBwd2RgCistCistaWYgdGVzdCB4IiR7aW5zdGFsbF9zaCtzZXR9 IiAhPSB4c2V0OyB0aGVuCistICBjYXNlICRhbV9hdXhfZGlyIGluCistICAqXCAqIHwgKlwJKikK Ky0gICAgaW5zdGFsbF9zaD0iXCR7U0hFTEx9ICckYW1fYXV4X2Rpci9pbnN0YWxsLXNoJyIgOzsK Ky0gICopCistICAgIGluc3RhbGxfc2g9Ilwke1NIRUxMfSAkYW1fYXV4X2Rpci9pbnN0YWxsLXNo IgorLSAgZXNhYworLWZpCistCistIyBJbnN0YWxsZWQgYmluYXJpZXMgYXJlIHVzdWFsbHkgc3Ry aXBwZWQgdXNpbmcgJ3N0cmlwJyB3aGVuIHRoZSB1c2VyCistIyBydW4gIm1ha2UgaW5zdGFsbC1z dHJpcCIuICBIb3dldmVyICdzdHJpcCcgbWlnaHQgbm90IGJlIHRoZSByaWdodAorLSMgdG9vbCB0 byB1c2UgaW4gY3Jvc3MtY29tcGlsYXRpb24gZW52aXJvbm1lbnRzLCB0aGVyZWZvcmUgQXV0b21h a2UKKy0jIHdpbGwgaG9ub3IgdGhlICdTVFJJUCcgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gb3Zl cnJ1bGUgdGhpcyBwcm9ncmFtLgorLSNpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiAhPSBubzsg dGhlbgorLSAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorLSAgIyBFeHRyYWN0 IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJl IGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1z dHJpcDsgYWNfd29yZD0kMgorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcg Zm9yICRhY193b3JkLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X3Byb2dfU1RSSVAreX0K Ky10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAj KAorLSAgZSkgaWYgdGVzdCAtbiAiJFNUUklQIjsgdGhlbgorLSAgYWNfY3ZfcHJvZ19TVFJJUD0i JFNUUklQIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKy1lbHNlCistYXNfc2F2 ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorLWZvciBhc19kaXIgaW4gJFBBVEgKKy1k bworLSAgSUZTPSRhc19zYXZlX0lGUworLSAgY2FzZSAkYXNfZGlyIGluICMoKCgKKy0gICAgJycp IGFzX2Rpcj0uLyA7OworLSAgICAqLykgOzsKKy0gICAgKikgYXNfZGlyPSRhc19kaXIvIDs7Cist ICBlc2FjCistICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNp b25zOyBkbworLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyJGFjX3dvcmQkYWNfZXhl Y19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfU1RSSVA9IiR7YWNfdG9vbF9wcmVmaXh9c3Ry aXAiCistICAgIHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91 bmQgJGFzX2RpciRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKy0gICAgYnJlYWsgMgorLSAgZmkK Ky1kb25lCistICBkb25lCistSUZTPSRhc19zYXZlX0lGUworLQorLWZpIDs7CistZXNhYworLWZp CistU1RSSVA9JGFjX2N2X3Byb2dfU1RSSVAKKy1pZiB0ZXN0IC1uICIkU1RSSVAiOyB0aGVuCist ICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk U1RSSVAiID4mNQorLXByaW50ZiAiJXNcbiIgIiRTVFJJUCIgPiY2OyB9CistZWxzZQorLSAgeyBw cmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4m NQorLXByaW50ZiAiJXNcbiIgIm5vIiA+JjY7IH0KKy1maQorLQorLQorLWZpCistaWYgdGVzdCAt eiAiJGFjX2N2X3Byb2dfU1RSSVAiOyB0aGVuCistICBhY19jdF9TVFJJUD0kU1RSSVAKKy0gICMg RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAic3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFt IG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBzdHJpcDsgYWNfd29yZD0kMgorLXsgcHJpbnRm ICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dv cmQiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Cist aWYgdGVzdCAke2FjX2N2X3Byb2dfYWNfY3RfU1RSSVAreX0KKy10aGVuIDoKKy0gIHByaW50ZiAl cyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgaWYgdGVzdCAtbiAi JGFjX2N0X1NUUklQIjsgdGhlbgorLSAgYWNfY3ZfcHJvZ19hY19jdF9TVFJJUD0iJGFjX2N0X1NU UklQIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKy1lbHNlCistYXNfc2F2ZV9J RlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorLWZvciBhc19kaXIgaW4gJFBBVEgKKy1kbwor LSAgSUZTPSRhc19zYXZlX0lGUworLSAgY2FzZSAkYXNfZGlyIGluICMoKCgKKy0gICAgJycpIGFz X2Rpcj0uLyA7OworLSAgICAqLykgOzsKKy0gICAgKikgYXNfZGlyPSRhc19kaXIvIDs7CistICBl c2FjCistICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25z OyBkbworLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyJGFjX3dvcmQkYWNfZXhlY19l eHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfU1RSSVA9InN0cmlwIgorLSAgICBwcmlu dGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIkYWNf d29yZCRhY19leGVjX2V4dCIgPiY1CistICAgIGJyZWFrIDIKKy0gIGZpCistZG9uZQorLSAgZG9u ZQorLUlGUz0kYXNfc2F2ZV9JRlMKKy0KKy1maSA7OworLWVzYWMKKy1maQorLWFjX2N0X1NUUklQ PSRhY19jdl9wcm9nX2FjX2N0X1NUUklQCistaWYgdGVzdCAtbiAiJGFjX2N0X1NUUklQIjsgdGhl bgorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogJGFjX2N0X1NUUklQIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfY3RfU1RSSVAiID4mNjsg fQorLWVsc2UKKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiByZXN1bHQ6IG5vIiA+JjUKKy1wcmludGYgIiVzXG4iICJubyIgPiY2OyB9CistZmkKKy0KKy0g IGlmIHRlc3QgIngkYWNfY3RfU1RSSVAiID0geDsgdGhlbgorLSAgICBTVFJJUD0iOiIKKy0gIGVs c2UKKy0gICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorLXllczop CisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6 IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Cist cHJpbnRmICIlc1xuIiAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJl Zml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CistYWNfdG9vbF93YXJuZWQ9eWVzIDs7Cist ZXNhYworLSAgICBTVFJJUD0kYWNfY3RfU1RSSVAKKy0gIGZpCistZWxzZQorLSAgU1RSSVA9IiRh Y19jdl9wcm9nX1NUUklQIgorLWZpCistCistI2ZpCistSU5TVEFMTF9TVFJJUF9QUk9HUkFNPSJc JChpbnN0YWxsX3NoKSAtYyAtcyIKKy0KKy0KKy1jYXNlICIkYWNfY3ZfcHJvZ19ZQUNDIiBpbgor LSpiaXNvbiopCTs7CistKikJeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IFdBUk5JTkc6IGJpc29uIG5vdCBhdmFpbGFibGU7IG5lZWRlZCB0byBwcm9jZXNzIHBh cnNlLnkiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogV0FSTklORzogYmlzb24gbm90IGF2 YWlsYWJsZTsgbmVlZGVkIHRvIHByb2Nlc3MgcGFyc2UueSIgPiYyO30gOzsKKy1lc2FjCistCist Y2FzZSAiJGhvc3Rfb3MiIGluCistb3Blbm50KnxpbnRlcml4KikJTUFLRV9TSEVMTD0iJElOVEVS SVhfUk9PVC9iaW4vc2giIDs7CistKikJCQlNQUtFX1NIRUxMPS9iaW4vc2ggOzsKKy1lc2FjCist CistCistaWYgdGVzdCB4JFNJWkUgPSB4OyB0aGVuCistCWlmIHRlc3QgeCRhY190b29sX3ByZWZp eCA9IHg7IHRoZW4KKy0JCVNJWkU9c2l6ZQorLQllbHNlCistCQlTSVpFPSR7YWNfdG9vbF9wcmVm aXh9c2l6ZQorLQkJc2F2ZV9JRlM9JElGUyA7IElGUz06CistCQlzaXplX2ZvdW5kPTAKKy0JCWZv ciBkaXIgaW4gJFBBVEg7IGRvCistCQkJaWYgdGVzdCAteCAkZGlyLyRTSVpFIDsgdGhlbgorLQkJ CQlzaXplX2ZvdW5kPTEKKy0JCQkJYnJlYWsKKy0JCQlmaQorLQkJZG9uZQorLQkJaWYgdGVzdCAk c2l6ZV9mb3VuZCAtZXEgMDsgdGhlbgorLQkJCVNJWkU9OgorLQkJZmkKKy0JCUlGUz0kc2F2ZV9J RlMKKy0JZmkKKy1maQorLQorLQorLSMgQ2hlY2tzIGZvciBzdGF0LXJlbGF0ZWQgdGltZSBmdW5j dGlvbnMuCistCistIyBDb3B5cmlnaHQgKEMpIDE5OTgtMTk5OSwgMjAwMSwgMjAwMywgMjAwNS0y MDA3LCAyMDA5LTIwMTIgRnJlZSBTb2Z0d2FyZQorLSMgRm91bmRhdGlvbiwgSW5jLgorLQorLSMg VGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24K Ky0jIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUg aXQsCistIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5v dGljZSBpcyBwcmVzZXJ2ZWQuCistCistCistIyBzdF9hdGltLnR2X25zZWMgLSBMaW51eCwgU29s YXJpcywgQ3lnd2luCistIyBzdF9hdGltZXNwZWMudHZfbnNlYyAtIEZyZWVCU0QsIE5ldEJTRCwg aWYgISBkZWZpbmVkIF9QT1NJWF9TT1VSQ0UKKy0jIHN0X2F0aW1lbnNlYyAtIEZyZWVCU0QsIE5l dEJTRCwgaWYgZGVmaW5lZCBfUE9TSVhfU09VUkNFCistIyBzdF9hdGltLnN0X190aW0udHZfbnNl YyAtIFVuaXhXYXJlIChhdCBsZWFzdCAyLjEuMiB0aHJvdWdoIDcuMSkKKy0KKy0jIHN0X2JpcnRo dGltZXNwZWMgLSBGcmVlQlNELCBOZXRCU0QgKGhpZGRlbiBvbiBPcGVuQlNEIDMuOSwgYW55d2F5 KQorLSMgc3RfYmlydGh0aW0gLSBDeWd3aW4gMS43LjArCistCistCistCistIyBDb25maWd1cmUg Y2hlY2tzIGZvciBzdHJ1Y3QgdGltZXNwZWMKKy0KKy0jIENvcHlyaWdodCAoQykgMjAwMC0yMDAx LCAyMDAzLTIwMDcsIDIwMDktMjAxMSwgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKy0KKy0jIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uCistIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBk aXN0cmlidXRlIGl0LAorLSMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcg YXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorLQorLSMgT3JpZ2luYWwgd3JpdHRlbiBieSBQ YXVsIEVnZ2VydCBhbmQgSmltIE1leWVyaW5nLgorLSMgTW9kaWZpZWQgYnkgQ2hldCBSYW1leSBm b3IgYmFzaAorLQorLQorLQorLQorLQorLQorLQorLQorLQorLSMgdW5sb2NrZWQtaW8ubTQgc2Vy aWFsIDE2CistCistIyBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwNiwgMjAwOS0yMDI0IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSMKKy0jIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJl OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCistIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlz c2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorLSMgd2l0aCBvciB3aXRob3V0IG1v ZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorLQorLQor LQorLQorLQorLSMgY29kZXNldC5tNCBzZXJpYWwgNSAoZ2V0dGV4dC0wLjE4LjIpCistCistCist CistCistCistCistCistCistCistIyBzZXJpYWwgMTAKKy0KKy0jIENvcHlyaWdodCAoQykgMjAw Mi0yMDA2LCAyMDA4LTIwMjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistIyBUaGlz IGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorLSMg Z2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwK Ky0jIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNl IGlzIHByZXNlcnZlZC4KKy0KKy0jIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgcGFyc2VyIHNrZWxl dG9uczoKKy0jCistIyAqIFRob3NlIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBhbnkgWWFjYyBpbXBs ZW1lbnRhdGlvbiwgaW5jbHVkaW5nIGJpc29uLgorLSMgICBGb3IgdGhlc2UsIGluIHRoZSBjb25m aWd1cmUuYWMsIHVwIHRvIEF1dG9jb25mIDIuNjksIHlvdSBjb3VsZCB1c2UKKy0jICAgICBBQ19Q Uk9HX1lBQ0MKKy0jICAgSW4gbmV3ZXIgQXV0b2NvbmYgdmVyc2lvbnMsIGhvd2V2ZXIsIHRoaXMg bWFjcm8gaXMgYnJva2VuLiBTZWUKKy0jICAgICBodHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2 ZS9odG1sL2F1dG9jb25mLXBhdGNoZXMvMjAxMy0wMy9tc2cwMDAwMC5odG1sCistIyAgICAgaHR0 cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctYXV0b2NvbmYvMjAxOC0xMi9tc2cw MDAwMS5odG1sCistIyAgIEluIHRoZSBNYWtlZmlsZS5hbSB5b3UgY291bGQgdXNlCistIyAgICAg JChTSEVMTCkgJChZTFdSQVApICQoc3JjZGlyKS9mb28ueSBcCistIyAgICAgICAgICAgICAgICAg ICAgICAgIHkudGFiLmMgZm9vLmMgXAorLSMgICAgICAgICAgICAgICAgICAgICAgICB5LnRhYi5o IGZvby5oIFwKKy0jICAgICAgICAgICAgICAgICAgICAgICAgeS5vdXRwdXQgZm9vLm91dHB1dCBc CistIyAgICAgICAgICAgICAgICAgICAgICAgIC0tICQoWUFDQykgJChZRkxBR1MpICQoQU1fWUZM QUdTKQorLSMgICBvciBzaW1pbGFyLgorLSMKKy0jICogVGhvc2UgdGhhdCBtYWtlIHVzZSBvZiBC aXNvbiBleHRlbnNpb25zLiBGb3IgZXhhbXBsZSwKKy0jICAgICAtICVkZWZpbmUgYXBpLnB1cmUg ICByZXF1aXJlcyBiaXNvbiAyLjcgb3IgbmV3ZXIsCistIyAgICAgLSAlcHJlY2VkZW5jZSAgICAg ICAgcmVxdWlyZXMgYmlzb24gMy4wIG9yIG5ld2VyLgorLSMgICBGb3IgdGhlc2UsIGluIHRoZSBj b25maWd1cmUuYWMgeW91IHdpbGwgbmVlZCBhbiBpbnZvY2F0aW9uIG9mCistIyAgICAgZ2xfUFJP R19CSVNPTihbVkFSSUFCTEVdLCBbTUlOX0JJU09OX1ZFUlNJT05dKQorLSMgICBFeGFtcGxlOgor LSMgICAgIGdsX1BST0dfQklTT04oW1BBUlNFX0RBVEVUSU1FX0JJU09OXSwgWzIuNF0pCistIyAg IFdpdGggdGhpcyBwcmVwYXJhdGlvbiwgaW4gdGhlIE1ha2VmaWxlLmFtIHRoZXJlIGFyZSB0d28g d2F5cyB0byBmb3JtdWxhdGUKKy0jICAgdGhlIGludm9jYXRpb24uIEJvdGggYXJlIGRpcmVjdCwg d2l0aG91dCB1c2Ugb2YgJ3lsd3JhcCcuCistIyAgIChhKSBZb3UgY2FuIGludm9rZQorLSMgICAg ICAgICAkKFZBUklBQkxFKSAtZCAkKFNPTUVfQklTT05fT1BUSU9OUykgLS1vdXRwdXQgZm9vLmMg JChzcmNkaXIpL2Zvby55CistIyAgICAgICBvciBzaW1pbGFyLgorLSMgICAoYikgSWYgeW91IHdh bnQgdGhlIGludm9jYXRpb24gdG8gaG9ub3IgYW4gWUZMQUdTPS4uLiBwYXJhbWV0ZXIgcGFzc2Vk IHRvCistIyAgICAgICAnY29uZmlndXJlJyBvciBhbiBZRkxBR1MgZW52aXJvbm1lbnQgdmFyaWFi bGUgcHJlc2VudCBhdCAnY29uZmlndXJlJworLSMgICAgICAgdGltZSwgYWRkIGFuIGludm9jYXRp b24gb2YgZ2xfQklTT04gdG8gdGhlIGNvbmZpZ3VyZS5hYywgYW5kIHdyaXRlCistIyAgICAgICAg ICQoVkFSSUFCTEUpIC1kICQoWUZMQUdTKSAkKEFNX1lGTEFHUykgJChzcmNkaXIpL2Zvby55Cist IyAgICAgICBvciBzaW1pbGFyLgorLQorLSMgVGhpcyBtYWNybyBkZWZpbmVzIHRoZSBhdXRvY29u ZiB2YXJpYWJsZSBWQVJJQUJMRSB0byAnYmlzb24nIGlmIHRoZSBzcGVjaWZpZWQKKy0jIG1pbmlt dW0gdmVyc2lvbiBvZiBiaXNvbiBpcyBmb3VuZCBpbiAkUEFUSCwgb3IgdG8gJzonIG90aGVyd2lz ZS4KKy0KKy0KKy0jIFRoaXMgbWFjcm8gc2V0cyB0aGUgYXV0b2NvbmYgdmFyaWFibGVzIFlBQ0Mg KGZvciBvbGQtc3R5bGUgeWFjYyBNYWtlZmlsZQorLSMgcnVsZXMpIGFuZCBZRkxBR1MgKHRvIGFs bG93IG9wdGlvbnMgdG8gYmUgcGFzc2VkIGFzICdjb25maWd1cmUnIHRpbWUpLgorLQorLQorLSMg ZmNudGwtby5tNCBzZXJpYWwgNworLQorLQorLQorLQorLSMgVGVzdCB3aGV0aGVyIHRoZSBmbGFn cyBPX05PQVRJTUUgYW5kIE9fTk9GT0xMT1cgYWN0dWFsbHkgd29yay4KKy0jIERlZmluZSBIQVZF X1dPUktJTkdfT19OT0FUSU1FIHRvIDEgaWYgT19OT0FUSU1FIHdvcmtzLCBvciB0byAwIG90aGVy d2lzZS4KKy0jIERlZmluZSBIQVZFX1dPUktJTkdfT19OT0ZPTExPVyB0byAxIGlmIE9fTk9GT0xM T1cgd29ya3MsIG9yIHRvIDAgb3RoZXJ3aXNlLgorLQorLQorLSMgc2VyaWFsIDUKKy0jIENoZWNr IGZvciBmbGV4aWJsZSBhcnJheSBtZW1iZXIgc3VwcG9ydC4KKy0KKy0jIENvcHlyaWdodCAoQykg MjAwNiwgMjAwOS0yMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSMgVGhpcyBm aWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKy0jIGdp dmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCist IyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBp cyBwcmVzZXJ2ZWQuCistCistIyBXcml0dGVuIGJ5IFBhdWwgRWdnZXJ0LgorLQorLQorLQorLSMg Z2V0dGV4dC5tNCBzZXJpYWwgNzIgKGdldHRleHQtMC4yMS4xKQorLQorLQorLQorLQorLQorLQor LQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLSMgZ2xpYmMyLm00IHNlcmlhbCAz CistCistIyBUZXN0IGZvciB0aGUgR05VIEMgTGlicmFyeSwgdmVyc2lvbiAyLjAgb3IgbmV3ZXIu CistIyBGcm9tIEJydW5vIEhhaWJsZS4KKy0KKy0KKy0KKy0jIGljb252Lm00IHNlcmlhbCAyNAor LQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLSMgaW50ZGl2MC5tNCBzZXJpYWwgOSAo Z2V0dGV4dC0wLjIxLjEpCistCistCistCistCistIyBpbnRsLm00IHNlcmlhbCA1MSAoZ2V0dGV4 dC0wLjIxLjEpCistCistCistCistCistCistCistCistCistCistCistCistIyBpbnRsbWFjb3N4 Lm00IHNlcmlhbCA4IChnZXR0ZXh0LTAuMjAuMikKKy0KKy0KKy0KKy0jIGludGwtdGhyZWFkLWxv Y2FsZS5tNCBzZXJpYWwgOQorLQorLQorLQorLQorLQorLSMgaW50bWF4Lm00IHNlcmlhbCA2IChn ZXR0ZXh0LTAuMTguMikKKy0KKy0KKy0KKy0KKy0jIGludHR5cGVzLXByaS5tNCBzZXJpYWwgNyAo Z2V0dGV4dC0wLjE4LjIpCistCistCistCistCistIyBEZWZpbmUgUFJJX01BQ1JPU19CUk9LRU4g aWYgPGludHR5cGVzLmg+IGV4aXN0cyBhbmQgZGVmaW5lcyB0aGUgUFJJKgorLSMgbWFjcm9zIHRv IG5vbi1zdHJpbmcgdmFsdWVzLiAgVGhpcyBpcyB0aGUgY2FzZSBvbiBBSVggNC4zLjMuCistCist CistCistIyBpbnR0eXBlcy5tNCBzZXJpYWwgMzYKKy0KKy0KKy0KKy0KKy0KKy0KKy0jIEVuc3Vy ZSB0aGF0IHRoZSBQUkkqIGFuZCBTQ04qIG1hY3JvcyBhcmUgZGVmaW5lZCBhcHByb3ByaWF0ZWx5 LgorLQorLQorLSMgRGVmaW5lIHRoZSBzeW1ib2wgJDEgdG8gYmUgMSBpZiB0aGUgY29uZGl0aW9u IGlzIHRydWUsIDAgb3RoZXJ3aXNlLgorLSMgSWYgJDIgaXMgdHJ1ZSwgdGhlIGNvbmRpdGlvbiBp cyAkMzsgb3RoZXJ3aXNlIGlmIGxvbmcgbG9uZyBpbnQgaXMgc3VwcG9ydGVkCistIyBhcHByb3hp bWF0ZSB0aGUgY29uZGl0aW9uIHdpdGggJDQ7IG90aGVyd2lzZSwgYXNzdW1lIHRoZSBjb25kaXRp b24gaXMgZmFsc2UuCistIyBUaGUgY29uZGl0aW9uIHNob3VsZCB3b3JrIG9uIGFsbCBDOTkgcGxh dGZvcm1zOyB0aGUgYXBwcm94aW1hdGlvbnMgc2hvdWxkIGJlCistIyBnb29kIGVub3VnaCB0byB3 b3JrIG9uIGFsbCBwcmFjdGljYWwgcHJlLUM5OSBwbGF0Zm9ybXMuCistIyAkMiBpcyBldmFsdWF0 ZWQgYnkgdGhlIEMgcHJlcHJvY2Vzc29yLCAkMyBhbmQgJDQgYXMgY29tcGlsZS10aW1lIGNvbnN0 YW50cy4KKy0KKy0KKy0jIGdsX0lOVFRZUEVTX01PRFVMRV9JTkRJQ0FUT1IoW21vZHVsZW5hbWVd KQorLSMgc2V0cyB0aGUgc2hlbGwgdmFyaWFibGUgdGhhdCBpbmRpY2F0ZXMgdGhlIHByZXNlbmNl IG9mIHRoZSBnaXZlbiBtb2R1bGUKKy0jIHRvIGEgQyBwcmVwcm9jZXNzb3IgZXhwcmVzc2lvbiB0 aGF0IHdpbGwgZXZhbHVhdGUgdG8gMS4KKy0jIFRoaXMgbWFjcm8gaW52b2NhdGlvbiBtdXN0IG5v dCBvY2N1ciBpbiBtYWNyb3MgdGhhdCBhcmUgQUNfUkVRVUlSRWQuCistCistCistIyBJbml0aWFs aXplcyB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIEFDX1NVQlNUZWQgc2hlbGwgdmFyaWFibGVzLgor LSMgVGhpcyBtYWNybyBtdXN0IG5vdCBiZSBBQ19SRVFVSVJFZC4gIEl0IG11c3Qgb25seSBiZSBp bnZva2VkLCBhbmQgb25seQorLSMgb3V0c2lkZSBvZiBtYWNyb3Mgb3IgaW4gbWFjcm9zIHRoYXQg YXJlIG5vdCBBQ19SRVFVSVJFZC4KKy0KKy0KKy0KKy0KKy0jIGludHR5cGVzX2gubTQgc2VyaWFs IDEwCistCistCistIyBEZWZpbmUgSEFWRV9JTlRUWVBFU19IX1dJVEhfVUlOVE1BWCBpZiA8aW50 dHlwZXMuaD4gZXhpc3RzLAorLSMgZG9lc24ndCBjbGFzaCB3aXRoIDxzeXMvdHlwZXMuaD4sIGFu ZCBkZWNsYXJlcyB1aW50bWF4X3QuCistCistCistCistIyBsY21lc3NhZ2UubTQgc2VyaWFsIDgK Ky0KKy0KKy0jIENoZWNrIHdoZXRoZXIgTENfTUVTU0FHRVMgaXMgYXZhaWxhYmxlIGluIDxsb2Nh bGUuaD4uCistCistCistCistIyBsaWItbGQubTQgc2VyaWFsIDEwCistCistCistCistCistCist CistIyBsaWItbGluay5tNCBzZXJpYWwgMzMKKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0K Ky0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0jIGxpYi1wcmVmaXgubTQgc2VyaWFsIDIwCistCist CistCistCistCistCistCistCistCistCistIyBsb2NhbGVfaC5tNCBzZXJpYWwgMjgKKy0KKy0K Ky0KKy0KKy0KKy0jIGdsX0xPQ0FMRV9NT0RVTEVfSU5ESUNBVE9SKFttb2R1bGVuYW1lXSkKKy0j IHNldHMgdGhlIHNoZWxsIHZhcmlhYmxlIHRoYXQgaW5kaWNhdGVzIHRoZSBwcmVzZW5jZSBvZiB0 aGUgZ2l2ZW4gbW9kdWxlCistIyB0byBhIEMgcHJlcHJvY2Vzc29yIGV4cHJlc3Npb24gdGhhdCB3 aWxsIGV2YWx1YXRlIHRvIDEuCistIyBUaGlzIG1hY3JvIGludm9jYXRpb24gbXVzdCBub3Qgb2Nj dXIgaW4gbWFjcm9zIHRoYXQgYXJlIEFDX1JFUVVJUkVkLgorLQorLQorLSMgSW5pdGlhbGl6ZXMg dGhlIGRlZmF1bHQgdmFsdWVzIGZvciBBQ19TVUJTVGVkIHNoZWxsIHZhcmlhYmxlcy4KKy0jIFRo aXMgbWFjcm8gbXVzdCBub3QgYmUgQUNfUkVRVUlSRWQuICBJdCBtdXN0IG9ubHkgYmUgaW52b2tl ZCwgYW5kIG9ubHkKKy0jIG91dHNpZGUgb2YgbWFjcm9zIG9yIGluIG1hY3JvcyB0aGF0IGFyZSBu b3QgQUNfUkVRVUlSRWQuCistCistCistCistCistIyBsb2NrLm00IHNlcmlhbCAxNAorLQorLQor LQorLQorLSMgUHJlcmVxdWlzaXRlcyBvZiBsaWIvZ2x0aHJlYWQvbG9jay5jLgorLQorLQorLSMg bmxzLm00IHNlcmlhbCA2IChnZXR0ZXh0LTAuMjAuMikKKy0KKy0KKy0KKy0KKy0KKy0KKy0jIHBv Lm00IHNlcmlhbCAzMiAoZ2V0dGV4dC0wLjIxLjEpCistCistCistCistCistCistCistCistCist CistCistCistCistIyBwcmludGYtcG9zaXgubTQgc2VyaWFsIDcgKGdldHRleHQtMC4yMS4xKQor LQorLQorLQorLQorLSMgcHJvZ3Rlc3QubTQgc2VyaWFsIDkgKGdldHRleHQtMC4yMS4xKQorLQor LQorLQorLQorLSMgU2VhcmNoIHBhdGggZm9yIGEgcHJvZ3JhbSB3aGljaCBwYXNzZXMgdGhlIGdp dmVuIHRlc3QuCistCistCistCistIyBwdGhyZWFkX3J3bG9ja19yZGxvY2subTQgc2VyaWFsIDQK Ky0KKy0KKy0KKy0KKy0jIHNpemVfbWF4Lm00IHNlcmlhbCAxMgorLQorLQorLQorLQorLQorLQor LSMgc3RkaW50X2gubTQgc2VyaWFsIDkKKy0KKy0KKy0jIERlZmluZSBIQVZFX1NURElOVF9IX1dJ VEhfVUlOVE1BWCBpZiA8c3RkaW50Lmg+IGV4aXN0cywKKy0jIGRvZXNuJ3QgY2xhc2ggd2l0aCA8 c3lzL3R5cGVzLmg+LCBhbmQgZGVjbGFyZXMgdWludG1heF90LgorLQorLQorLQorLSMgdGhyZWFk bGliLm00IHNlcmlhbCAzMgorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQor LQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQor LQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLSMgdWlu dG1heF90Lm00IHNlcmlhbCAxMgorLQorLQorLQorLQorLSMgRGVmaW5lIHVpbnRtYXhfdCB0byAn dW5zaWduZWQgbG9uZycgb3IgJ3Vuc2lnbmVkIGxvbmcgbG9uZycKKy0jIGlmIGl0IGlzIG5vdCBh bHJlYWR5IGRlZmluZWQgaW4gPHN0ZGludC5oPiBvciA8aW50dHlwZXMuaD4uCistCistCistCist IyB1bG9uZ2xvbmcubTQgc2VyaWFsIDEwCistCistIyB2aXNpYmlsaXR5Lm00IHNlcmlhbCA2Cist CistCistCistCistCistIyB3Y2hhcl90Lm00IHNlcmlhbCA0IChnZXR0ZXh0LTAuMTguMikKKy0K Ky0KKy0KKy0KKy0jIHdpbnRfdC5tNCBzZXJpYWwgMTEKKy0KKy0KKy0KKy0KKy0KKy0KKy0jIHhz aXplLm00IHNlcmlhbCA1CistCistCistCistCistIyBnbGliYzIxLm00IHNlcmlhbCA1CistCist IyBUZXN0IGZvciB0aGUgR05VIEMgTGlicmFyeSwgdmVyc2lvbiAyLjEgb3IgbmV3ZXIsIG9yIHVD bGliYy4KKy0jIEZyb20gQnJ1bm8gSGFpYmxlLgorLQorLQorLQorLSMgaG9zdC1jcHUtYy1hYmku bTQgc2VyaWFsIDE1CistCistCistCistCistCistCistCistCistIyBDaGVjayBmb3IgYm9vbCB0 aGF0IGNvbmZvcm1zIHRvIEMyMDIzLgorLQorLQorLQorLQorLSMgZC10eXBlLm00CistIyBzZXJp YWwgMTIKKy0KKy0KKy0KKy0KKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFuIEFOU0kgQy1jb25mb3JtaW5nIGNvbnN0IiA+JjUK Ky1wcmludGYgJXMgImNoZWNraW5nIGZvciBhbiBBTlNJIEMtY29uZm9ybWluZyBjb25zdC4uLiAi ID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9jX2NvbnN0K3l9CistdGhlbiA6CistICBwcmludGYg JXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVm cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICov CistCistaW50CistbWFpbiAodm9pZCkKKy17CistCistI2lmbmRlZiBfX2NwbHVzcGx1cworLSAg LyogVWx0cml4IG1pcHMgY2MgcmVqZWN0cyB0aGlzIHNvcnQgb2YgdGhpbmcuICAqLworLSAgdHlw ZWRlZiBpbnQgY2hhcnNldFsyXTsKKy0gIGNvbnN0IGNoYXJzZXQgY3MgPSB7IDAsIDAgfTsKKy0g IC8qIFN1bk9TIDQuMS4xIGNjIHJlamVjdHMgdGhpcy4gICovCistICBjaGFyIGNvbnN0ICpjb25z dCAqcGNwY2M7CistICBjaGFyICoqcHBjOworLSAgLyogTkVDIFNWUjQuMC4yIG1pcHMgY2MgcmVq ZWN0cyB0aGlzLiAgKi8KKy0gIHN0cnVjdCBwb2ludCB7aW50IHgsIHk7fTsKKy0gIHN0YXRpYyBz dHJ1Y3QgcG9pbnQgY29uc3QgemVybyA9IHswLDB9OworLSAgLyogSUJNIFhMIEMgMS4wMi4wLjAg cmVqZWN0cyB0aGlzLgorLSAgICAgSXQgZG9lcyBub3QgbGV0IHlvdSBzdWJ0cmFjdCBvbmUgY29u c3QgWCogcG9pbnRlciBmcm9tIGFub3RoZXIgaW4KKy0gICAgIGFuIGFybSBvZiBhbiBpZi1leHBy ZXNzaW9uIHdob3NlIGlmLXBhcnQgaXMgbm90IGEgY29uc3RhbnQKKy0gICAgIGV4cHJlc3Npb24g Ki8KKy0gIGNvbnN0IGNoYXIgKmcgPSAic3RyaW5nIjsKKy0gIHBjcGNjID0gJmcgKyAoZyA/IGct ZyA6IDApOworLSAgLyogSFBVWCA3LjAgY2MgcmVqZWN0cyB0aGVzZS4gKi8KKy0gICsrcGNwY2M7 CistICBwcGMgPSAoY2hhcioqKSBwY3BjYzsKKy0gIHBjcGNjID0gKGNoYXIgY29uc3QgKmNvbnN0 ICopIHBwYzsKKy0gIHsgLyogU0NPIDMuMnY0IGNjIHJlamVjdHMgdGhpcyBzb3J0IG9mIHRoaW5n LiAgKi8KKy0gICAgY2hhciB0eDsKKy0gICAgY2hhciAqdCA9ICZ0eDsKKy0gICAgY2hhciBjb25z dCAqcyA9IDAgPyAoY2hhciAqKSAwIDogKGNoYXIgY29uc3QgKikgMDsKKy0KKy0gICAgKnQrKyA9 IDA7CistICAgIGlmIChzKSByZXR1cm4gMDsKKy0gIH0KKy0gIHsgLyogU29tZW9uZSB0aGlua3Mg dGhlIFN1biBzdXBwb3NlZGx5LUFOU0kgY29tcGlsZXIgd2lsbCByZWplY3QgdGhpcy4gICovCist ICAgIGludCB4W10gPSB7MjUsIDE3fTsKKy0gICAgY29uc3QgaW50ICpmb28gPSAmeFswXTsKKy0g ICAgKytmb287CistICB9CistICB7IC8qIFN1biBTQzEuMCBBTlNJIGNvbXBpbGVyIHJlamVjdHMg dGhpcyAtLSBidXQgbm90IHRoZSBhYm92ZS4gKi8KKy0gICAgdHlwZWRlZiBjb25zdCBpbnQgKmlw dHI7CistICAgIGlwdHIgcCA9IDA7CistICAgICsrcDsKKy0gIH0KKy0gIHsgLyogSUJNIFhMIEMg MS4wMi4wLjAgcmVqZWN0cyB0aGlzIHNvcnQgb2YgdGhpbmcsIHNheWluZworLSAgICAgICAiay5j IiwgbGluZSAyLjI3OiAxNTA2LTAyNSAoUykgT3BlcmFuZCBtdXN0IGJlIGEgbW9kaWZpYWJsZSBs dmFsdWUuICovCistICAgIHN0cnVjdCBzIHsgaW50IGo7IGNvbnN0IGludCAqYXBbM107IH0gYng7 CistICAgIHN0cnVjdCBzICpiID0gJmJ4OyBiLT5qID0gNTsKKy0gIH0KKy0gIHsgLyogVUxUUklY LTMyIFYzLjEgKFJldiA5KSB2Y2MgcmVqZWN0cyB0aGlzICovCistICAgIGNvbnN0IGludCBmb28g PSAxMDsKKy0gICAgaWYgKCFmb28pIHJldHVybiAwOworLSAgfQorLSAgcmV0dXJuICFjc1swXSAm JiAhemVyby54OworLSNlbmRpZgorLQorLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgor LWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19jdl9jX2Nv bnN0PXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl9jX2NvbnN0PW5vIDs7Cist ZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBj b25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAi JXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfY19jb25z dCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X2NfY29uc3QiID4mNjsgfQorLWlmIHRlc3Qg JGFjX2N2X2NfY29uc3QgPSBubzsgdGhlbgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgY29u c3QgLyoqLyIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGlubGluZSIgPiY1CistcHJpbnRm ICVzICJjaGVja2luZyBmb3IgaW5saW5lLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X2Nf aW5saW5lK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBj YXNlIGUgaW4gIygKKy0gIGUpIGFjX2N2X2NfaW5saW5lPW5vCistZm9yIGFjX2t3IGluIGlubGlu ZSBfX2lubGluZV9fIF9faW5saW5lOyBkbworLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+ Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0jaWZuZGVmIF9fY3Bs dXNwbHVzCistdHlwZWRlZiBpbnQgZm9vX3Q7Cistc3RhdGljICRhY19rdyBmb29fdCBzdGF0aWNf Zm9vICh2b2lkKSB7cmV0dXJuIDA7IH0KKy0kYWNfa3cgZm9vX3QgZm9vICh2b2lkKSB7cmV0dXJu IDA7IH0KKy0jZW5kaWYKKy0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElO RU5PIgorLXRoZW4gOgorLSAgYWNfY3ZfY19pbmxpbmU9JGFjX2t3CistZmkKKy1ybSAtZiBjb3Jl IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3Qu JGFjX2V4dAorLSAgdGVzdCAiJGFjX2N2X2NfaW5saW5lIiAhPSBubyAmJiBicmVhaworLWRvbmUK Ky0gOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkYWNfY3ZfY19pbmxpbmUiID4mNQorLXByaW50ZiAiJXNcbiIgIiRh Y19jdl9jX2lubGluZSIgPiY2OyB9CistCistY2FzZSAkYWNfY3ZfY19pbmxpbmUgaW4KKy0gIGlu bGluZSB8IHllcykgOzsKKy0gICopCistICAgIGNhc2UgJGFjX2N2X2NfaW5saW5lIGluCistICAg ICAgbm8pIGFjX3ZhbD07OworLSAgICAgICopIGFjX3ZhbD0kYWNfY3ZfY19pbmxpbmU7OworLSAg ICBlc2FjCistICAgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKy0jaWZuZGVmIF9fY3BsdXNw bHVzCistI2RlZmluZSBpbmxpbmUgJGFjX3ZhbAorLSNlbmRpZgorLV9BQ0VPRgorLSAgICA7Owor LWVzYWMKKy0KKy0geyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IGNoZWNraW5nIHdoZXRoZXIgYnl0ZSBvcmRlcmluZyBpcyBiaWdlbmRpYW4iID4mNQorLXByaW50 ZiAlcyAiY2hlY2tpbmcgd2hldGhlciBieXRlIG9yZGVyaW5nIGlzIGJpZ2VuZGlhbi4uLiAiID4m NjsgfQorLWlmIHRlc3QgJHthY19jdl9jX2JpZ2VuZGlhbit5fQorLXRoZW4gOgorLSAgcHJpbnRm ICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl9jX2Jp Z2VuZGlhbj11bmtub3duCistICAgICMgU2VlIGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHVuaXZl cnNhbCBjb21waWxlci4KKy0gICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu JGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0jaWZuZGVmIF9fQVBQTEVfQ0NfXwor LQkgICAgICAgbm90IGEgdW5pdmVyc2FsIGNhcGFibGUgY29tcGlsZXIKKy0JICAgICAjZW5kaWYK Ky0JICAgICB0eXBlZGVmIGludCBkdW1teTsKKy0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9j b21waWxlICIkTElORU5PIgorLXRoZW4gOgorLQorLQkjIENoZWNrIGZvciBwb3RlbnRpYWwgLWFy Y2ggZmxhZ3MuICBJdCBpcyBub3QgdW5pdmVyc2FsIHVubGVzcworLQkjIHRoZXJlIGFyZSBhdCBs ZWFzdCB0d28gLWFyY2ggZmxhZ3Mgd2l0aCBkaWZmZXJlbnQgdmFsdWVzLgorLQlhY19hcmNoPQor LQlhY19wcmV2PQorLQlmb3IgYWNfd29yZCBpbiAkQ0MgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxB R1M7IGRvCistCSBpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4KKy0JICAgY2FzZSAkYWNfd29y ZCBpbgorLQkgICAgIGk/ODYgfCB4ODZfNjQgfCBwcGMgfCBwcGM2NCkKKy0JICAgICAgIGlmIHRl c3QgLXogIiRhY19hcmNoIiB8fCB0ZXN0ICIkYWNfYXJjaCIgPSAiJGFjX3dvcmQiOyB0aGVuCist CQkgYWNfYXJjaD0kYWNfd29yZAorLQkgICAgICAgZWxzZQorLQkJIGFjX2N2X2NfYmlnZW5kaWFu PXVuaXZlcnNhbAorLQkJIGJyZWFrCistCSAgICAgICBmaQorLQkgICAgICAgOzsKKy0JICAgZXNh YworLQkgICBhY19wcmV2PQorLQkgZWxpZiB0ZXN0ICJ4JGFjX3dvcmQiID0gIngtYXJjaCI7IHRo ZW4KKy0JICAgYWNfcHJldj1hcmNoCistCSBmaQorLSAgICAgICBkb25lCistZmkKKy1ybSAtZiBj b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRl c3QuJGFjX2V4dAorLSAgICBpZiB0ZXN0ICRhY19jdl9jX2JpZ2VuZGlhbiA9IHVua25vd247IHRo ZW4KKy0gICAgICAjIFNlZSBpZiBzeXMvcGFyYW0uaCBkZWZpbmVzIHRoZSBCWVRFX09SREVSIG1h Y3JvLgorLSAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK Ky0vKiBlbmQgY29uZmRlZnMuaC4gICovCistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLQkgICAg ICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKy0KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy0jaWYg ISAoZGVmaW5lZCBCWVRFX09SREVSICYmIGRlZmluZWQgQklHX0VORElBTiBcXAorLQkJICAgICAm JiBkZWZpbmVkIExJVFRMRV9FTkRJQU4gJiYgQllURV9PUkRFUiAmJiBCSUdfRU5ESUFOIFxcCist CQkgICAgICYmIExJVFRMRV9FTkRJQU4pCistCSAgICAgIGJvZ3VzIGVuZGlhbiBtYWNyb3MKKy0J ICAgICAjZW5kaWYKKy0KKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19m bl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRoZW4gOgorLSAgIyBJdCBkb2VzOyBub3cgc2Vl IHdoZXRoZXIgaXQgZGVmaW5lZCB0byBCSUdfRU5ESUFOIG9yIG5vdC4KKy0JIGNhdCBjb25mZGVm cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICov CistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLQkJI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorLQor LWludAorLW1haW4gKHZvaWQpCisteworLSNpZiBCWVRFX09SREVSICE9IEJJR19FTkRJQU4KKy0J CSBub3QgYmlnIGVuZGlhbgorLQkJI2VuZGlmCistCistICA7CistICByZXR1cm4gMDsKKy19Cist X0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGFj X2N2X2NfYmlnZW5kaWFuPXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl9jX2Jp Z2VuZGlhbj1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0 ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CistZmkKKy1ybSAt ZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29u ZnRlc3QuJGFjX2V4dAorLSAgICBmaQorLSAgICBpZiB0ZXN0ICRhY19jdl9jX2JpZ2VuZGlhbiA9 IHVua25vd247IHRoZW4KKy0gICAgICAjIFNlZSBpZiA8bGltaXRzLmg+IGRlZmluZXMgX0xJVFRM RV9FTkRJQU4gb3IgX0JJR19FTkRJQU4gKGUuZy4sIFNvbGFyaXMpLgorLSAgICAgIGNhdCBjb25m ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4g ICovCistI2luY2x1ZGUgPGxpbWl0cy5oPgorLQorLWludAorLW1haW4gKHZvaWQpCisteworLSNp ZiAhIChkZWZpbmVkIF9MSVRUTEVfRU5ESUFOIHx8IGRlZmluZWQgX0JJR19FTkRJQU4pCistCSAg ICAgIGJvZ3VzIGVuZGlhbiBtYWNyb3MKKy0JICAgICAjZW5kaWYKKy0KKy0gIDsKKy0gIHJldHVy biAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRo ZW4gOgorLSAgIyBJdCBkb2VzOyBub3cgc2VlIHdoZXRoZXIgaXQgZGVmaW5lZCB0byBfQklHX0VO RElBTiBvciBub3QuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf ZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLSNpbmNsdWRlIDxsaW1pdHMuaD4KKy0KKy1p bnQKKy1tYWluICh2b2lkKQorLXsKKy0jaWZuZGVmIF9CSUdfRU5ESUFOCistCQkgbm90IGJpZyBl bmRpYW4KKy0JCSNlbmRpZgorLQorLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlm IGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19jdl9jX2JpZ2Vu ZGlhbj15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY3ZfY19iaWdlbmRpYW49bm8g OzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2Jq ZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorLWZpCistcm0gLWYgY29yZSBjb25m dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19l eHQKKy0gICAgZmkKKy0gICAgaWYgdGVzdCAkYWNfY3ZfY19iaWdlbmRpYW4gPSB1bmtub3duOyB0 aGVuCistICAgICAgIyBDb21waWxlIGEgdGVzdCBwcm9ncmFtLgorLSAgICAgIGlmIHRlc3QgIiRj cm9zc19jb21waWxpbmciID0geWVzCistdGhlbiA6CistICAjIFRyeSB0byBndWVzcyBieSBncmVw cGluZyB2YWx1ZXMgZnJvbSBhbiBvYmplY3QgZmlsZS4KKy0JIGNhdCBjb25mZGVmcy5oIC0gPDxf QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistdW5zaWdu ZWQgc2hvcnQgaW50IGFzY2lpX21tW10gPQorLQkJICB7IDB4NDI0OSwgMHg0NzY1LCAweDZFNDQs IDB4Njk2MSwgMHg2RTUzLCAweDc5NTMsIDAgfTsKKy0JCXVuc2lnbmVkIHNob3J0IGludCBhc2Np aV9paVtdID0KKy0JCSAgeyAweDY5NEMsIDB4NTQ1NCwgMHg2NTZDLCAweDZFNDUsIDB4Njk0NCwg MHg2RTYxLCAwIH07CistCQlpbnQgdXNlX2FzY2lpIChpbnQgaSkgeworLQkJICByZXR1cm4gYXNj aWlfbW1baV0gKyBhc2NpaV9paVtpXTsKKy0JCX0KKy0JCXVuc2lnbmVkIHNob3J0IGludCBlYmNk aWNfaWlbXSA9CistCQkgIHsgMHg4OUQzLCAweEUzRTMsIDB4ODU5MywgMHg5NUM1LCAweDg5QzQs IDB4OTU4MSwgMCB9OworLQkJdW5zaWduZWQgc2hvcnQgaW50IGViY2RpY19tbVtdID0KKy0JCSAg eyAweEMyQzksIDB4Qzc4NSwgMHg5NUM0LCAweDg5ODEsIDB4OTVFMiwgMHhBOEUyLCAwIH07Cist CQlpbnQgdXNlX2ViY2RpYyAoaW50IGkpIHsKKy0JCSAgcmV0dXJuIGViY2RpY19tbVtpXSArIGVi Y2RpY19paVtpXTsKKy0JCX0KKy0JCWludAorLQkJbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQorLQkJeworLQkJICAvKiBJbnRpbWlkYXRlIHRoZSBjb21waWxlciBzbyB0aGF0IGl0IGRvZXMg bm90CistCQkgICAgIG9wdGltaXplIHRoZSBhcnJheXMgYXdheS4gICovCistCQkgIGNoYXIgKnAg PSBhcmd2WzBdOworLQkJICBhc2NpaV9tbVsxXSA9ICpwKys7IGViY2RpY19tbVsxXSA9ICpwKys7 CistCQkgIGFzY2lpX2lpWzFdID0gKnArKzsgZWJjZGljX2lpWzFdID0gKnArKzsKKy0JCSAgcmV0 dXJuIHVzZV9hc2NpaSAoYXJnYykgPT0gdXNlX2ViY2RpYyAoKnApOworLQkJfQorLV9BQ0VPRgor LWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6CistICBpZiBncmVwIEJJR2Vu RGlhblN5UyBjb25mdGVzdCRhY19leGVleHQgPi9kZXYvbnVsbDsgdGhlbgorLQkgICAgICBhY19j dl9jX2JpZ2VuZGlhbj15ZXMKKy0JICAgIGZpCistCSAgICBpZiBncmVwIExpVFRsZUVuRGlhbiBj b25mdGVzdCRhY19leGVleHQgPi9kZXYvbnVsbCA7IHRoZW4KKy0JICAgICAgaWYgdGVzdCAiJGFj X2N2X2NfYmlnZW5kaWFuIiA9IHVua25vd247IHRoZW4KKy0JCWFjX2N2X2NfYmlnZW5kaWFuPW5v CistCSAgICAgIGVsc2UKKy0JCSMgZmluZGluZyBib3RoIHN0cmluZ3MgaXMgdW5saWtlbHkgdG8g aGFwcGVuLCBidXQgd2hvIGtub3dzPworLQkJYWNfY3ZfY19iaWdlbmRpYW49dW5rbm93bgorLQkg ICAgICBmaQorLQkgICAgZmkKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0 LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25m dGVzdC4kYWNfZXh0CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistJGFj X2luY2x1ZGVzX2RlZmF1bHQKKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy0KKy0JICAgICAvKiBB cmUgd2UgbGl0dGxlIG9yIGJpZyBlbmRpYW4/ICBGcm9tIEhhcmJpc29uJlN0ZWVsZS4gICovCist CSAgICAgdW5pb24KKy0JICAgICB7CistCSAgICAgICBsb25nIGludCBsOworLQkgICAgICAgY2hh ciBjW3NpemVvZiAobG9uZyBpbnQpXTsKKy0JICAgICB9IHU7CistCSAgICAgdS5sID0gMTsKKy0J ICAgICByZXR1cm4gdS5jW3NpemVvZiAobG9uZyBpbnQpIC0gMV0gPT0gMTsKKy0KKy0gIDsKKy0g IHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iCist dGhlbiA6CistICBhY19jdl9jX2JpZ2VuZGlhbj1ubworLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBhY19jdl9jX2JpZ2VuZGlhbj15ZXMgOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlICouY29y ZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCist ICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dCA7Owor LWVzYWMKKy1maQorLQorLSAgICBmaSA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jX2JpZ2VuZGlhbiIg PiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X2NfYmlnZW5kaWFuIiA+JjY7IH0KKy0gY2FzZSAk YWNfY3ZfY19iaWdlbmRpYW4gaW4gIygKKy0gICB5ZXMpCistICAgICBwcmludGYgIiVzXG4iICIj ZGVmaW5lIFdPUkRTX0JJR0VORElBTiAxIiA+PmNvbmZkZWZzLmgKKy07OyAjKAorLSAgIG5vKQor LSAgICAgIDs7ICMoCistICAgdW5pdmVyc2FsKQorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUg QUNfQVBQTEVfVU5JVkVSU0FMX0JVSUxEIDEiID4+Y29uZmRlZnMuaAorLQorLSAgICAgOzsgIygK Ky0gICAqKQorLSAgICAgYXNfZm5fZXJyb3IgJD8gInVua25vd24gZW5kaWFubmVzcworLSBwcmVz ZXR0aW5nIGFjX2N2X2NfYmlnZW5kaWFuPW5vIChvciB5ZXMpIHdpbGwgaGVscCIgIiRMSU5FTk8i IDUgOzsKKy0gZXNhYworLQorLQorLWlmIHRlc3QgIiRhY19wcm9nX2NjX3N0ZGMiICE9IG5vOyB0 aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NUUklOR0laRSAxIiA+PmNvbmZk ZWZzLmgKKy0KKy1maQorLQorLQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsb25nIGRvdWJsZSIgPiY1CistcHJpbnRmICVzICJj aGVja2luZyBmb3IgbG9uZyBkb3VibGUuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfdHlw ZV9sb25nX2RvdWJsZSt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgor LWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLSAg ICAgICBhY19jdl90eXBlX2xvbmdfZG91YmxlPXllcworLSAgICAgZWxzZQorLSAgICAgICBjYXQg Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZz LmguICAqLworLS8qIFRoZSBTdGFyZGVudCBWaXN0cmEga25vd3Mgc2l6ZW9mIChsb25nIGRvdWJs ZSksIGJ1dCBkb2VzCistCQkgbm90IHN1cHBvcnQgaXQuICAqLworLQkgICAgICBsb25nIGRvdWJs ZSBmb28gPSAwLjBMOworLWludAorLW1haW4gKHZvaWQpCisteworLXN0YXRpYyBpbnQgdGVzdF9h cnJheSBbMSAtIDIgKiAhKC8qIE9uIFVsdHJpeCA0LjMgY2MsIGxvbmcgZG91YmxlIGlzIDQgYW5k IGRvdWJsZSBpcyA4LiAgKi8KKy0JICAgICAgc2l6ZW9mIChkb3VibGUpIDw9IHNpemVvZiAobG9u ZyBkb3VibGUpKV07CistdGVzdF9hcnJheSBbMF0gPSAwOworLXJldHVybiB0ZXN0X2FycmF5IFsw XTsKKy0KKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9j b21waWxlICIkTElORU5PIgorLXRoZW4gOgorLSAgYWNfY3ZfdHlwZV9sb25nX2RvdWJsZT15ZXMK Ky1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY3ZfdHlwZV9sb25nX2RvdWJsZT1ubyA7Owor LWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQg Y29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CistICAgICBmaSA7OworLWVzYWMKKy1maQor LXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRh Y19jdl90eXBlX2xvbmdfZG91YmxlIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfY3ZfdHlwZV9s b25nX2RvdWJsZSIgPiY2OyB9CistICBpZiB0ZXN0ICRhY19jdl90eXBlX2xvbmdfZG91YmxlID0g eWVzOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0xPTkdfRE9VQkxFIDEi ID4+Y29uZmRlZnMuaAorLQorLSAgZmkKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBjaGFyIGlzIHVuc2lnbmVkIiA+JjUK Ky1wcmludGYgJXMgImNoZWNraW5nIHdoZXRoZXIgY2hhciBpcyB1bnNpZ25lZC4uLiAiID4mNjsg fQorLWlmIHRlc3QgJHthY19jdl9jX2NoYXJfdW5zaWduZWQreX0KKy10aGVuIDoKKy0gIHByaW50 ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZk ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KKy0kYWNfaW5jbHVkZXNfZGVmYXVsdAorLWludAorLW1haW4gKHZvaWQpCisteworLXN0YXRp YyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAhKCgoY2hhcikgLTEpIDwgMCldOworLXRlc3RfYXJy YXkgWzBdID0gMDsKKy1yZXR1cm4gdGVzdF9hcnJheSBbMF07CistCistICA7CistICByZXR1cm4g MDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVu IDoKKy0gIGFjX2N2X2NfY2hhcl91bnNpZ25lZD1ubworLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBhY19jdl9jX2NoYXJfdW5zaWduZWQ9eWVzIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBj b25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRh Y19leHQgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfY19jaGFyX3Vuc2lnbmVkIiA+JjUKKy1wcmludGYg IiVzXG4iICIkYWNfY3ZfY19jaGFyX3Vuc2lnbmVkIiA+JjY7IH0KKy1pZiB0ZXN0ICRhY19jdl9j X2NoYXJfdW5zaWduZWQgPSB5ZXM7IHRoZW4KKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgX19D SEFSX1VOU0lHTkVEX18gMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy17IHByaW50ZiAiJXNc biIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgdm9s YXRpbGUiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgdm9sYXRpbGUuLi4g IiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfY192b2xhdGlsZSt5fQorLXRoZW4gOgorLSAgcHJp bnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29u ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmgu ICAqLworLQorLWludAorLW1haW4gKHZvaWQpCisteworLQorLXZvbGF0aWxlIGludCB4OworLWlu dCAqIHZvbGF0aWxlIHkgPSAoaW50ICopIDA7CistcmV0dXJuICF4ICYmICF5OworLSAgOworLSAg cmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8i CistdGhlbiA6CistICBhY19jdl9jX3ZvbGF0aWxlPXllcworLWVsc2UgY2FzZSBlIGluICMoCist ICBlKSBhY19jdl9jX3ZvbGF0aWxlPW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25m dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19l eHQgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkYWNfY3ZfY192b2xhdGlsZSIgPiY1CistcHJpbnRmICIlc1xuIiAi JGFjX2N2X2Nfdm9sYXRpbGUiID4mNjsgfQorLWlmIHRlc3QgJGFjX2N2X2Nfdm9sYXRpbGUgPSBu bzsgdGhlbgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgdm9sYXRpbGUgLyoqLyIgPj5jb25m ZGVmcy5oCistCistZmkKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogY2hlY2tpbmcgZm9yIEMvQysrIHJlc3RyaWN0IGtleXdvcmQiID4mNQorLXByaW50 ZiAlcyAiY2hlY2tpbmcgZm9yIEMvQysrIHJlc3RyaWN0IGtleXdvcmQuLi4gIiA+JjY7IH0KKy1p ZiB0ZXN0ICR7YWNfY3ZfY19yZXN0cmljdCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2Fj aGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl9jX3Jlc3RyaWN0PW5v CistICAgIyBQdXQgJ19fcmVzdHJpY3RfXycgZmlyc3QsIHRvIGF2b2lkIHByb2JsZW1zIHdpdGgg Z2xpYmMgYW5kIG5vbi1HQ0M7IHNlZToKKy0gICAjIGh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNo aXZlL2h0bWwvYnVnLWF1dG9jb25mLzIwMTYtMDIvbXNnMDAwMDYuaHRtbAorLSAgICMgUHV0ICdy ZXN0cmljdCcgbGFzdCwgYmVjYXVzZSBDKysgbGFja3MgaXQuCistICAgZm9yIGFjX2t3IGluIF9f cmVzdHJpY3RfXyBfX3Jlc3RyaWN0IF9SZXN0cmljdCByZXN0cmljdDsgZG8KKy0gICAgIGNhdCBj b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMu aC4gICovCistdHlwZWRlZiBpbnQgKmludF9wdHI7CistCSAgIGludCBmb28gKGludF9wdHIgJGFj X2t3IGlwKSB7IHJldHVybiBpcFswXTsgfQorLQkgICBpbnQgYmFyIChpbnQgWyRhY19rd10pOyAv KiBDYXRjaCBHQ0MgYnVnIDE0MDUwLiAgKi8KKy0JICAgaW50IGJhciAoaW50IGlwWyRhY19rd10p IHsgcmV0dXJuIGlwWzBdOyB9CistCistaW50CistbWFpbiAodm9pZCkKKy17CistaW50IHNbMV07 CistCSAgIGludCAqJGFjX2t3IHQgPSBzOworLQkgICB0WzBdID0gMDsKKy0JICAgcmV0dXJuIGZv byAodCkgKyBiYXIgKHQpOworLQorLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlm IGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19jdl9jX3Jlc3Ry aWN0PSRhY19rdworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i amV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgIHRlc3QgIiRhY19jdl9j X3Jlc3RyaWN0IiAhPSBubyAmJiBicmVhaworLSAgIGRvbmUKKy0gICA7OworLWVzYWMKKy1maQor LXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRh Y19jdl9jX3Jlc3RyaWN0IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfY3ZfY19yZXN0cmljdCIg PiY2OyB9CistCistIGNhc2UgJGFjX2N2X2NfcmVzdHJpY3QgaW4KKy0gICByZXN0cmljdCkgOzsK Ky0gICBubykgcHJpbnRmICIlc1xuIiAiI2RlZmluZSByZXN0cmljdCAvKiovIiA+PmNvbmZkZWZz LmgKKy0gOzsKKy0gICAqKSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSByZXN0cmljdCAkYWNfY3Zf Y19yZXN0cmljdCIgPj5jb25mZGVmcy5oCistIDs7CistIGVzYWMKKy0KKy0KKy0KKy0KKy0gIHsg cHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig Ym9vbCwgdHJ1ZSwgZmFsc2UiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIGJvb2wsIHRy dWUsIGZhbHNlLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2dsX2N2X2NfYm9vbCt5fQorLXRoZW4g OgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNv bmZkZWZzLmguICAqLworLQorLSAgICAgICAgICAjaWYgdHJ1ZSA9PSBmYWxzZQorLSAgICAgICAg ICAgI2Vycm9yICJ0cnVlID09IGZhbHNlIgorLSAgICAgICAgICAjZW5kaWYKKy0gICAgICAgICAg ZXh0ZXJuIGJvb2wgYjsKKy0gICAgICAgICAgYm9vbCBiID0gdHJ1ZSA9PSBmYWxzZTsKKy1fQUNF T0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRoZW4gOgorLSAgZ2xfY3Zf Y19ib29sPXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBnbF9jdl9jX2Jvb2w9bm8gOzsK Ky1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0 IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLXsgcHJpbnRm ICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9jX2Jv b2wiID4mNQorLXByaW50ZiAiJXNcbiIgIiRnbF9jdl9jX2Jvb2wiID4mNjsgfQorLSAgaWYgdGVz dCAiJGdsX2N2X2NfYm9vbCIgPSB5ZXM7IHRoZW4KKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5l IEhBVkVfQ19CT09MIDEiID4+Y29uZmRlZnMuaAorLQorLSAgZmkKKy0KKy0KKy0KKy0KKy0KKy0K Ky0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu ZyBmb3IgYSByYWNlLWZyZWUgbWtkaXIgLXAiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9y IGEgcmFjZS1mcmVlIG1rZGlyIC1wLi4uICIgPiY2OyB9CistaWYgdGVzdCAteiAiJE1LRElSX1Ai OyB0aGVuCistICBpZiB0ZXN0ICR7YWNfY3ZfcGF0aF9ta2Rpcit5fQorLXRoZW4gOgorLSAgcHJp bnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhc19zYXZl X0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCistZm9yIGFzX2RpciBpbiAkUEFUSCRQQVRI X1NFUEFSQVRPUi9vcHQvc2Z3L2JpbgorLWRvCistICBJRlM9JGFzX3NhdmVfSUZTCistICBjYXNl ICRhc19kaXIgaW4gIygoKAorLSAgICAnJykgYXNfZGlyPS4vIDs7CistICAgICovKSA7OworLSAg ICAqKSBhc19kaXI9JGFzX2Rpci8gOzsKKy0gIGVzYWMKKy0gICAgZm9yIGFjX3Byb2cgaW4gbWtk aXIgZ21rZGlyOyBkbworLQkgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4 dGVuc2lvbnM7IGRvCistCSAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2RpciRhY19wcm9nJGFj X2V4ZWNfZXh0IiB8fCBjb250aW51ZQorLQkgICBjYXNlIGAiJGFzX2RpciRhY19wcm9nJGFjX2V4 ZWNfZXh0IiAtLXZlcnNpb24gMj4mMWAgaW4gIygKKy0JICAgICAnbWtkaXIgKCcqJ2NvcmV1dGls cykgJyogfCBcCistCSAgICAgKidCdXN5Qm94ICcqIHwgXAorLQkgICAgICdta2RpciAoZmlsZXV0 aWxzKSAnNC4xKikKKy0JICAgICAgIGFjX2N2X3BhdGhfbWtkaXI9JGFzX2RpciRhY19wcm9nJGFj X2V4ZWNfZXh0CistCSAgICAgICBicmVhayAzOzsKKy0JICAgZXNhYworLQkgZG9uZQorLSAgICAg ICBkb25lCistICBkb25lCistSUZTPSRhc19zYXZlX0lGUworLSA7OworLWVzYWMKKy1maQorLQor LSAgdGVzdCAtZCAuLy0tdmVyc2lvbiAmJiBybWRpciAuLy0tdmVyc2lvbgorLSAgaWYgdGVzdCAk e2FjX2N2X3BhdGhfbWtkaXIreX07IHRoZW4KKy0gICAgTUtESVJfUD0iJGFjX2N2X3BhdGhfbWtk aXIgLXAiCistICBlbHNlCistICAgICMgQXMgYSBsYXN0IHJlc29ydCwgdXNlIHBsYWluIG1rZGly IC1wLAorLSAgICAjIGluIHRoZSBob3BlIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgYnVncyBvZiBhbmNp ZW50IG1rZGlyLgorLSAgICBNS0RJUl9QPSdta2RpciAtcCcKKy0gIGZpCistZmkKKy17IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUtESVJfUCIg PiY1CistcHJpbnRmICIlc1xuIiAiJE1LRElSX1AiID4mNjsgfQorLQorLXsgcHJpbnRmICIlc1xu IiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYSBzZWQgdGhhdCBk b2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXQiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIGEg c2VkIHRoYXQgZG9lcyBub3QgdHJ1bmNhdGUgb3V0cHV0Li4uICIgPiY2OyB9CistaWYgdGVzdCAk e2FjX2N2X3BhdGhfU0VEK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2 CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpICAgICAgICAgICBhY19zY3JpcHQ9cy9hYWFhYWFh YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS9iYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJi YmJiYmIvCistICAgICBmb3IgYWNfaSBpbiAxIDIgMyA0IDUgNiA3OyBkbworLSAgICAgICBhY19z Y3JpcHQ9IiRhY19zY3JpcHQkYXNfbmwkYWNfc2NyaXB0IgorLSAgICAgZG9uZQorLSAgICAgZWNo byAiJGFjX3NjcmlwdCIgMj4vZGV2L251bGwgfCBzZWQgOTlxID5jb25mdGVzdC5zZWQKKy0gICAg IHsgYWNfc2NyaXB0PTsgdW5zZXQgYWNfc2NyaXB0O30KKy0gICAgIGlmIHRlc3QgLXogIiRTRUQi OyB0aGVuCistICBhY19wYXRoX1NFRF9mb3VuZD1mYWxzZQorLSAgIyBMb29wIHRocm91Z2ggdGhl IHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBlYWNoIG9mIFBST0dOQU1FLUxJU1QKKy0gIGFzX3Nh dmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKy1mb3IgYXNfZGlyIGluICRQQVRICist ZG8KKy0gIElGUz0kYXNfc2F2ZV9JRlMKKy0gIGNhc2UgJGFzX2RpciBpbiAjKCgoCistICAgICcn KSBhc19kaXI9Li8gOzsKKy0gICAgKi8pIDs7CistICAgICopIGFzX2Rpcj0kYXNfZGlyLyA7Owor LSAgZXNhYworLSAgICBmb3IgYWNfcHJvZyBpbiBzZWQgZ3NlZAorLSAgIGRvCistICAgIGZvciBh Y19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworLSAgICAgIGFj X3BhdGhfU0VEPSIkYXNfZGlyJGFjX3Byb2ckYWNfZXhlY19leHQiCistICAgICAgYXNfZm5fZXhl Y3V0YWJsZV9wICIkYWNfcGF0aF9TRUQiIHx8IGNvbnRpbnVlCistIyBDaGVjayBmb3IgR05VIGFj X3BhdGhfU0VEIGFuZCBzZWxlY3QgaXQgaWYgaXQgaXMgZm91bmQuCistICAjIENoZWNrIGZvciBH TlUgJGFjX3BhdGhfU0VECistY2FzZSBgIiRhY19wYXRoX1NFRCIgLS12ZXJzaW9uIDI+JjFgIGlu ICMoCistKkdOVSopCistICBhY19jdl9wYXRoX1NFRD0iJGFjX3BhdGhfU0VEIiBhY19wYXRoX1NF RF9mb3VuZD06OzsKKy0jKAorLSopCistICBhY19jb3VudD0wCistICBwcmludGYgJXMgMDEyMzQ1 Njc4OSA+ImNvbmZ0ZXN0LmluIgorLSAgd2hpbGUgOgorLSAgZG8KKy0gICAgY2F0ICJjb25mdGVz dC5pbiIgImNvbmZ0ZXN0LmluIiA+ImNvbmZ0ZXN0LnRtcCIKKy0gICAgbXYgImNvbmZ0ZXN0LnRt cCIgImNvbmZ0ZXN0LmluIgorLSAgICBjcCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5ubCIKKy0g ICAgcHJpbnRmICIlc1xuIiAnJyA+PiAiY29uZnRlc3QubmwiCistICAgICIkYWNfcGF0aF9TRUQi IC1mIGNvbmZ0ZXN0LnNlZCA8ICJjb25mdGVzdC5ubCIgPiJjb25mdGVzdC5vdXQiIDI+L2Rldi9u dWxsIHx8IGJyZWFrCistICAgIGRpZmYgImNvbmZ0ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+L2Rl di9udWxsIDI+JjEgfHwgYnJlYWsKKy0gICAgYXNfZm5fYXJpdGggJGFjX2NvdW50ICsgMSAmJiBh Y19jb3VudD0kYXNfdmFsCistICAgIGlmIHRlc3QgJGFjX2NvdW50IC1ndCAke2FjX3BhdGhfU0VE X21heC0wfTsgdGhlbgorLSAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVw IGxvb2tpbmcgZm9yIGEgYmV0dGVyIG9uZQorLSAgICAgIGFjX2N2X3BhdGhfU0VEPSIkYWNfcGF0 aF9TRUQiCistICAgICAgYWNfcGF0aF9TRURfbWF4PSRhY19jb3VudAorLSAgICBmaQorLSAgICAj IDEwKigyXjEwKSBjaGFycyBhcyBpbnB1dCBzZWVtcyBtb3JlIHRoYW4gZW5vdWdoCistICAgIHRl c3QgJGFjX2NvdW50IC1ndCAxMCAmJiBicmVhaworLSAgZG9uZQorLSAgcm0gLWYgY29uZnRlc3Qu aW4gY29uZnRlc3QudG1wIGNvbmZ0ZXN0Lm5sIGNvbmZ0ZXN0Lm91dDs7CistZXNhYworLQorLSAg ICAgICRhY19wYXRoX1NFRF9mb3VuZCAmJiBicmVhayAzCistICAgIGRvbmUKKy0gIGRvbmUKKy0g IGRvbmUKKy1JRlM9JGFzX3NhdmVfSUZTCistICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9TRUQi OyB0aGVuCistICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIHNlZCBjb3VsZCBiZSBm b3VuZCBpbiBcJFBBVEgiICIkTElORU5PIiA1CistICBmaQorLWVsc2UKKy0gIGFjX2N2X3BhdGhf U0VEPSRTRUQKKy1maQorLSA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wYXRoX1NFRCIgPiY1CistcHJp bnRmICIlc1xuIiAiJGFjX2N2X3BhdGhfU0VEIiA+JjY7IH0KKy0gU0VEPSIkYWNfY3ZfcGF0aF9T RUQiCistICBybSAtZiBjb25mdGVzdC5zZWQKKy0KKy0KKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIE5MUyBpcyByZXF1ZXN0 ZWQiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgd2hldGhlciBOTFMgaXMgcmVxdWVzdGVkLi4u ICIgPiY2OyB9CistICAgICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1ubHMgd2FzIGdpdmVuLgor LWlmIHRlc3QgJHtlbmFibGVfbmxzK3l9CistdGhlbiA6CistICBlbmFibGV2YWw9JGVuYWJsZV9u bHM7IFVTRV9OTFM9JGVuYWJsZXZhbAorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBVU0VfTkxT PXllcyA7OworLWVzYWMKKy1maQorLQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IHJlc3VsdDogJFVTRV9OTFMiID4mNQorLXByaW50ZiAiJXNcbiIgIiRV U0VfTkxTIiA+JjY7IH0KKy0KKy0KKy0KKy0KKy0gICAgICBHRVRURVhUX01BQ1JPX1ZFUlNJT049 MC4yMAorLQorLQorLQorLQorLSMgUHJlcGFyZSBQQVRIX1NFUEFSQVRPUi4KKy0jIFRoZSB1c2Vy IGlzIGFsd2F5cyByaWdodC4KKy1pZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNl dDsgdGhlbgorLSAgIyBEZXRlcm1pbmUgUEFUSF9TRVBBUkFUT1IgYnkgdHJ5aW5nIHRvIGZpbmQg L2Jpbi9zaCBpbiBhIFBBVEggd2hpY2gKKy0gICMgY29udGFpbnMgb25seSAvYmluLiBOb3RlIHRo YXQga3NoIGxvb2tzIGFsc28gYXQgdGhlIEZQQVRIIHZhcmlhYmxlLAorLSAgIyBzbyB3ZSBoYXZl IHRvIHNldCB0aGF0IGFzIHdlbGwgZm9yIHRoZSB0ZXN0LgorLSAgUEFUSF9TRVBBUkFUT1I9Ogor LSAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+ JjEgXAorLSAgICAmJiB7IChQQVRIPScvYmluOi9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikg Pi9kZXYvbnVsbCAyPiYxIFwKKy0gICAgICAgICAgIHx8IFBBVEhfU0VQQVJBVE9SPSc7JworLSAg ICAgICB9CistZmkKKy0KKy0jIEZpbmQgb3V0IGhvdyB0byB0ZXN0IGZvciBleGVjdXRhYmxlIGZp bGVzLiBEb24ndCB1c2UgYSB6ZXJvLWJ5dGUgZmlsZSwKKy0jIGFzIHN5c3RlbXMgbWF5IHVzZSBt ZXRob2RzIG90aGVyIHRoYW4gbW9kZSBiaXRzIHRvIGRldGVybWluZSBleGVjdXRhYmlsaXR5Lgor LWNhdCA+Y29uZiQkLmZpbGUgPDxfQVNFT0YKKy0jISAvYmluL3NoCistZXhpdCAwCistX0FTRU9G CistY2htb2QgK3ggY29uZiQkLmZpbGUKKy1pZiB0ZXN0IC14IGNvbmYkJC5maWxlID4vZGV2L251 bGwgMj4mMTsgdGhlbgorLSAgYWNfZXhlY3V0YWJsZV9wPSJ0ZXN0IC14IgorLWVsc2UKKy0gIGFj X2V4ZWN1dGFibGVfcD0idGVzdCAtZiIKKy1maQorLXJtIC1mIGNvbmYkJC5maWxlCistCistIyBF eHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtc2dmbXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFt IG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBtc2dmbXQ7IGFjX3dvcmQ9JDIKKy17IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193 b3JkIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQor LWlmIHRlc3QgJHthY19jdl9wYXRoX01TR0ZNVCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIo Y2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXNlICIkTVNHRk1UIiBp bgorLSAgW1xcL10qIHwgPzpbXFwvXSopCistICAgIGFjX2N2X3BhdGhfTVNHRk1UPSIkTVNHRk1U IiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKy0gICAgOzsK Ky0gICopCistICAgIGFjX3NhdmVfSUZTPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgorLSAg ICBmb3IgYWNfZGlyIGluICRQQVRIOyBkbworLSAgICAgIElGUz0iJGFjX3NhdmVfSUZTIgorLSAg ICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCistICAgICAgZm9yIGFjX2V4ZWNfZXh0 IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistICAgICAgICBpZiAkYWNfZXhl Y3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICAgICAg ICBlY2hvICIkYXNfbWU6IHRyeWluZyAkYWNfZGlyLyRhY193b3JkLi4uIiA+JjUKKy0gICAgICAg ICAgaWYgJGFjX2Rpci8kYWNfd29yZCAtLXN0YXRpc3RpY3MgL2Rldi9udWxsID4mNSAyPiYxICYm CistICAgICAoaWYgJGFjX2Rpci8kYWNfd29yZCAtLXN0YXRpc3RpY3MgL2Rldi9udWxsIDI+JjEg Pi9kZXYvbnVsbCB8IGdyZXAgdXNhZ2UgPi9kZXYvbnVsbDsgdGhlbiBleGl0IDE7IGVsc2UgZXhp dCAwOyBmaSk7IHRoZW4KKy0gICAgICAgICAgICBhY19jdl9wYXRoX01TR0ZNVD0iJGFjX2Rpci8k YWNfd29yZCRhY19leGVjX2V4dCIKKy0gICAgICAgICAgICBicmVhayAyCistICAgICAgICAgIGZp CistICAgICAgICBmaQorLSAgICAgIGRvbmUKKy0gICAgZG9uZQorLSAgICBJRlM9IiRhY19zYXZl X0lGUyIKKy0gIHRlc3QgLXogIiRhY19jdl9wYXRoX01TR0ZNVCIgJiYgYWNfY3ZfcGF0aF9NU0dG TVQ9IjoiCistICAgIDs7CistZXNhYyA7OworLWVzYWMKKy1maQorLU1TR0ZNVD0iJGFjX2N2X3Bh dGhfTVNHRk1UIgorLWlmIHRlc3QgIiRNU0dGTVQiICE9ICI6IjsgdGhlbgorLSAgeyBwcmludGYg IiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1TR0ZNVCIgPiY1 CistcHJpbnRmICIlc1xuIiAiJE1TR0ZNVCIgPiY2OyB9CistZWxzZQorLSAgeyBwcmludGYgIiVz XG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorLXByaW50 ZiAiJXNcbiIgIm5vIiA+JjY7IH0KKy1maQorLQorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3Jk IG9mICJnbXNnZm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1z ZXQgZHVtbXkgZ21zZ2ZtdDsgYWNfd29yZD0kMgorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorLXByaW50ZiAl cyAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X3Bh dGhfR01TR0ZNVCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVs c2UgY2FzZSBlIGluICMoCistICBlKSBjYXNlICRHTVNHRk1UIGluCistICBbXFwvXSogfCA/Oltc XC9dKikKKy0gIGFjX2N2X3BhdGhfR01TR0ZNVD0iJEdNU0dGTVQiICMgTGV0IHRoZSB1c2VyIG92 ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorLSAgOzsKKy0gICopCistICBhc19zYXZlX0lG Uz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCistZm9yIGFzX2RpciBpbiAkUEFUSAorLWRvCist ICBJRlM9JGFzX3NhdmVfSUZTCistICBjYXNlICRhc19kaXIgaW4gIygoKAorLSAgICAnJykgYXNf ZGlyPS4vIDs7CistICAgICovKSA7OworLSAgICAqKSBhc19kaXI9JGFzX2Rpci8gOzsKKy0gIGVz YWMKKy0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7 IGRvCistICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIkYWNfd29yZCRhY19leGVjX2V4 dCI7IHRoZW4KKy0gICAgYWNfY3ZfcGF0aF9HTVNHRk1UPSIkYXNfZGlyJGFjX3dvcmQkYWNfZXhl Y19leHQiCistICAgIHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Zm91bmQgJGFzX2RpciRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKy0gICAgYnJlYWsgMgorLSAg ZmkKKy1kb25lCistICBkb25lCistSUZTPSRhc19zYXZlX0lGUworLQorLSAgdGVzdCAteiAiJGFj X2N2X3BhdGhfR01TR0ZNVCIgJiYgYWNfY3ZfcGF0aF9HTVNHRk1UPSIkTVNHRk1UIgorLSAgOzsK Ky1lc2FjIDs7CistZXNhYworLWZpCistR01TR0ZNVD0kYWNfY3ZfcGF0aF9HTVNHRk1UCistaWYg dGVzdCAtbiAiJEdNU0dGTVQiOyB0aGVuCistICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkR01TR0ZNVCIgPiY1CistcHJpbnRmICIlc1xuIiAi JEdNU0dGTVQiID4mNjsgfQorLWVsc2UKKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKy1wcmludGYgIiVzXG4iICJubyIgPiY2 OyB9CistZmkKKy0KKy0KKy0KKy0gICAgY2FzZSBgJEdNU0dGTVQgLS12ZXJzaW9uIHwgc2VkIDFx IHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbgorLSAgICAnJyB8IDAuWzAtOV0gfCAwLlswLTld LiogfCAwLjFbMC00XSB8IDAuMVswLTRdLiopIEdNU0dGTVRfMDE1PTogOzsKKy0gICAgKikgR01T R0ZNVF8wMTU9JEdNU0dGTVQgOzsKKy0gIGVzYWMKKy0KKy0KKy0KKy0jIFByZXBhcmUgUEFUSF9T RVBBUkFUT1IuCistIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCistaWYgdGVzdCAiJHtQQVRI X1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4KKy0gICMgRGV0ZXJtaW5lIFBBVEhfU0VQQVJB VE9SIGJ5IHRyeWluZyB0byBmaW5kIC9iaW4vc2ggaW4gYSBQQVRIIHdoaWNoCistICAjIGNvbnRh aW5zIG9ubHkgL2Jpbi4gTm90ZSB0aGF0IGtzaCBsb29rcyBhbHNvIGF0IHRoZSBGUEFUSCB2YXJp YWJsZSwKKy0gICMgc28gd2UgaGF2ZSB0byBzZXQgdGhhdCBhcyB3ZWxsIGZvciB0aGUgdGVzdC4K Ky0gIFBBVEhfU0VQQVJBVE9SPToKKy0gIChQQVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsg c2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIFwKKy0gICAgJiYgeyAoUEFUSD0nL2JpbjovYmluJzsg RlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSBcCistICAgICAgICAgICB8fCBQ QVRIX1NFUEFSQVRPUj0nOycKKy0gICAgICAgfQorLWZpCistCistIyBGaW5kIG91dCBob3cgdG8g dGVzdCBmb3IgZXhlY3V0YWJsZSBmaWxlcy4gRG9uJ3QgdXNlIGEgemVyby1ieXRlIGZpbGUsCist IyBhcyBzeXN0ZW1zIG1heSB1c2UgbWV0aG9kcyBvdGhlciB0aGFuIG1vZGUgYml0cyB0byBkZXRl cm1pbmUgZXhlY3V0YWJpbGl0eS4KKy1jYXQgPmNvbmYkJC5maWxlIDw8X0FTRU9GCistIyEgL2Jp bi9zaAorLWV4aXQgMAorLV9BU0VPRgorLWNobW9kICt4IGNvbmYkJC5maWxlCistaWYgdGVzdCAt eCBjb25mJCQuZmlsZSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKy0gIGFjX2V4ZWN1dGFibGVfcD0i dGVzdCAteCIKKy1lbHNlCistICBhY19leGVjdXRhYmxlX3A9InRlc3QgLWYiCistZmkKKy1ybSAt ZiBjb25mJCQuZmlsZQorLQorLSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAieGdldHRleHQi LCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSB4Z2V0 dGV4dDsgYWNfd29yZD0kMgorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcg Zm9yICRhY193b3JkLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X3BhdGhfWEdFVFRFWFQr eX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBp biAjKAorLSAgZSkgY2FzZSAiJFhHRVRURVhUIiBpbgorLSAgW1xcL10qIHwgPzpbXFwvXSopCist ICAgIGFjX2N2X3BhdGhfWEdFVFRFWFQ9IiRYR0VUVEVYVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJp ZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCistICAgIDs7CistICAqKQorLSAgICBhY19zYXZlX0lG Uz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKKy0gICAgZm9yIGFjX2RpciBpbiAkUEFUSDsg ZG8KKy0gICAgICBJRlM9IiRhY19zYXZlX0lGUyIKKy0gICAgICB0ZXN0IC16ICIkYWNfZGlyIiAm JiBhY19kaXI9LgorLSAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9l eHRlbnNpb25zOyBkbworLSAgICAgICAgaWYgJGFjX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNf d29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgICAgICAgZWNobyAiJGFzX21lOiB0cnlpbmcg JGFjX2Rpci8kYWNfd29yZC4uLiIgPiY1CistICAgICAgICAgIGlmICRhY19kaXIvJGFjX3dvcmQg LS1vbWl0LWhlYWRlciAtLWNvcHlyaWdodC1ob2xkZXI9IC0tbXNnaWQtYnVncy1hZGRyZXNzPSAv ZGV2L251bGwgPiY1IDI+JjEgJiYKKy0gICAgIChpZiAkYWNfZGlyLyRhY193b3JkIC0tb21pdC1o ZWFkZXIgLS1jb3B5cmlnaHQtaG9sZGVyPSAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0gL2Rldi9udWxs IDI+JjEgPi9kZXYvbnVsbCB8IGdyZXAgdXNhZ2UgPi9kZXYvbnVsbDsgdGhlbiBleGl0IDE7IGVs c2UgZXhpdCAwOyBmaSk7IHRoZW4KKy0gICAgICAgICAgICBhY19jdl9wYXRoX1hHRVRURVhUPSIk YWNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorLSAgICAgICAgICAgIGJyZWFrIDIKKy0gICAg ICAgICAgZmkKKy0gICAgICAgIGZpCistICAgICAgZG9uZQorLSAgICBkb25lCistICAgIElGUz0i JGFjX3NhdmVfSUZTIgorLSAgdGVzdCAteiAiJGFjX2N2X3BhdGhfWEdFVFRFWFQiICYmIGFjX2N2 X3BhdGhfWEdFVFRFWFQ9IjoiCistICAgIDs7CistZXNhYyA7OworLWVzYWMKKy1maQorLVhHRVRU RVhUPSIkYWNfY3ZfcGF0aF9YR0VUVEVYVCIKKy1pZiB0ZXN0ICIkWEdFVFRFWFQiICE9ICI6Ijsg dGhlbgorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogJFhHRVRURVhUIiA+JjUKKy1wcmludGYgIiVzXG4iICIkWEdFVFRFWFQiID4mNjsgfQor LWVsc2UKKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6IG5vIiA+JjUKKy1wcmludGYgIiVzXG4iICJubyIgPiY2OyB9CistZmkKKy0KKy0gICAg cm0gLWYgbWVzc2FnZXMucG8KKy0KKy0gICAgY2FzZSBgJFhHRVRURVhUIC0tdmVyc2lvbiB8IHNl ZCAxcSB8IHNlZCAtZSAncyxeW14wLTldKiwsJ2AgaW4KKy0gICAgJycgfCAwLlswLTldIHwgMC5b MC05XS4qIHwgMC4xWzAtNF0gfCAwLjFbMC00XS4qKSBYR0VUVEVYVF8wMTU9OiA7OworLSAgICAq KSBYR0VUVEVYVF8wMTU9JFhHRVRURVhUIDs7CistICBlc2FjCistCistCistCistIyBQcmVwYXJl IFBBVEhfU0VQQVJBVE9SLgorLSMgVGhlIHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgorLWlmIHRlc3Qg IiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0OyB0aGVuCistICAjIERldGVybWluZSBQQVRI X1NFUEFSQVRPUiBieSB0cnlpbmcgdG8gZmluZCAvYmluL3NoIGluIGEgUEFUSCB3aGljaAorLSAg IyBjb250YWlucyBvbmx5IC9iaW4uIE5vdGUgdGhhdCBrc2ggbG9va3MgYWxzbyBhdCB0aGUgRlBB VEggdmFyaWFibGUsCistICAjIHNvIHdlIGhhdmUgdG8gc2V0IHRoYXQgYXMgd2VsbCBmb3IgdGhl IHRlc3QuCistICBQQVRIX1NFUEFSQVRPUj06CistICAoUEFUSD0nL2JpbjsvYmluJzsgRlBBVEg9 JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSBcCistICAgICYmIHsgKFBBVEg9Jy9iaW46 L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgXAorLSAgICAgICAg ICAgfHwgUEFUSF9TRVBBUkFUT1I9JzsnCistICAgICAgIH0KKy1maQorLQorLSMgRmluZCBvdXQg aG93IHRvIHRlc3QgZm9yIGV4ZWN1dGFibGUgZmlsZXMuIERvbid0IHVzZSBhIHplcm8tYnl0ZSBm aWxlLAorLSMgYXMgc3lzdGVtcyBtYXkgdXNlIG1ldGhvZHMgb3RoZXIgdGhhbiBtb2RlIGJpdHMg dG8gZGV0ZXJtaW5lIGV4ZWN1dGFiaWxpdHkuCistY2F0ID5jb25mJCQuZmlsZSA8PF9BU0VPRgor LSMhIC9iaW4vc2gKKy1leGl0IDAKKy1fQVNFT0YKKy1jaG1vZCAreCBjb25mJCQuZmlsZQorLWlm IHRlc3QgLXggY29uZiQkLmZpbGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCistICBhY19leGVjdXRh YmxlX3A9InRlc3QgLXgiCistZWxzZQorLSAgYWNfZXhlY3V0YWJsZV9wPSJ0ZXN0IC1mIgorLWZp Cistcm0gLWYgY29uZiQkLmZpbGUKKy0KKy0jIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm1z Z21lcmdlIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVt bXkgbXNnbWVyZ2U7IGFjX3dvcmQ9JDIKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKy1wcmludGYgJXMgImNo ZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9wYXRoX01T R01FUkdFK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBj YXNlIGUgaW4gIygKKy0gIGUpIGNhc2UgIiRNU0dNRVJHRSIgaW4KKy0gIFtcXC9dKiB8ID86W1xc L10qKQorLSAgICBhY19jdl9wYXRoX01TR01FUkdFPSIkTVNHTUVSR0UiICMgTGV0IHRoZSB1c2Vy IG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorLSAgICA7OworLSAgKikKKy0gICAgYWNf c2F2ZV9JRlM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCistICAgIGZvciBhY19kaXIgaW4g JFBBVEg7IGRvCistICAgICAgSUZTPSIkYWNfc2F2ZV9JRlMiCistICAgICAgdGVzdCAteiAiJGFj X2RpciIgJiYgYWNfZGlyPS4KKy0gICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1 dGFibGVfZXh0ZW5zaW9uczsgZG8KKy0gICAgICAgIGlmICRhY19leGVjdXRhYmxlX3AgIiRhY19k aXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgICAgICAgIGVjaG8gIiRhc19tZTog dHJ5aW5nICRhY19kaXIvJGFjX3dvcmQuLi4iID4mNQorLSAgICAgICAgICBpZiAkYWNfZGlyLyRh Y193b3JkIC0tdXBkYXRlIC1xIC9kZXYvbnVsbCAvZGV2L251bGwgPiY1IDI+JjE7IHRoZW4KKy0g ICAgICAgICAgICBhY19jdl9wYXRoX01TR01FUkdFPSIkYWNfZGlyLyRhY193b3JkJGFjX2V4ZWNf ZXh0IgorLSAgICAgICAgICAgIGJyZWFrIDIKKy0gICAgICAgICAgZmkKKy0gICAgICAgIGZpCist ICAgICAgZG9uZQorLSAgICBkb25lCistICAgIElGUz0iJGFjX3NhdmVfSUZTIgorLSAgdGVzdCAt eiAiJGFjX2N2X3BhdGhfTVNHTUVSR0UiICYmIGFjX2N2X3BhdGhfTVNHTUVSR0U9IjoiCistICAg IDs7CistZXNhYyA7OworLWVzYWMKKy1maQorLU1TR01FUkdFPSIkYWNfY3ZfcGF0aF9NU0dNRVJH RSIKKy1pZiB0ZXN0ICIkTVNHTUVSR0UiICE9ICI6IjsgdGhlbgorLSAgeyBwcmludGYgIiVzXG4i ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1TR01FUkdFIiA+JjUKKy1w cmludGYgIiVzXG4iICIkTVNHTUVSR0UiID4mNjsgfQorLWVsc2UKKy0gIHsgcHJpbnRmICIlc1xu IiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKy1wcmludGYg IiVzXG4iICJubyIgPiY2OyB9CistZmkKKy0KKy0KKy0gICAgaWYgTENfQUxMPUMgJE1TR01FUkdF IC0taGVscCB8IGdyZXAgJyAtLWZvci1tc2dmbXQgJyA+L2Rldi9udWxsOyB0aGVuCistICAgIE1T R01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OPSctLWZvci1tc2dmbXQnCistICBlbHNlCistICAgICAg ICBpZiBMQ19BTEw9QyAkTVNHTUVSR0UgLS1oZWxwIHwgZ3JlcCAnIC0tbm8tZnV6enktbWF0Y2hp bmcgJyA+L2Rldi9udWxsOyB0aGVuCistICAgICAgTVNHTUVSR0VfRk9SX01TR0ZNVF9PUFRJT049 Jy0tbm8tZnV6enktbWF0Y2hpbmcgLS1uby1sb2NhdGlvbiAtLXF1aWV0JworLSAgICBlbHNlCist ICAgICAgICAgICAgICAgICAgICAgICAgTVNHTUVSR0VfRk9SX01TR0ZNVF9PUFRJT049Jy0tbm8t bG9jYXRpb24gLS1xdWlldCcKKy0gICAgZmkKKy0gIGZpCistCistCistICAgIHRlc3QgLW4gIiR7 WEdFVFRFWFRfRVhUUkFfT1BUSU9OUytzZXR9IiB8fCBYR0VUVEVYVF9FWFRSQV9PUFRJT05TPQor LQorLQorLSAgYWNfY29uZmlnX2NvbW1hbmRzPSIkYWNfY29uZmlnX2NvbW1hbmRzIHBvLWRpcmVj dG9yaWVzIgorLQorLQorLWFjX2V4dD1jCistYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKKy1hY19j b21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCist YWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERG TEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKKy1hY19jb21waWxlcl9nbnU9JGFjX2N2 X2NfY29tcGlsZXJfZ251CisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yIiA+JjUKKy1wcmlu dGYgJXMgImNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yLi4uICIgPiY2OyB9 CistIyBPbiBTdW5zLCBzb21ldGltZXMgJENQUCBuYW1lcyBhIGRpcmVjdG9yeS4KKy1pZiB0ZXN0 IC1uICIkQ1BQIiAmJiB0ZXN0IC1kICIkQ1BQIjsgdGhlbgorLSAgQ1BQPQorLWZpCistaWYgdGVz dCAteiAiJENQUCI7IHRoZW4KKy0gIGlmIHRlc3QgJHthY19jdl9wcm9nX0NQUCt5fQorLXRoZW4g OgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBl KSAgICAgIyBEb3VibGUgcXVvdGVzIGJlY2F1c2UgJENDIG5lZWRzIHRvIGJlIGV4cGFuZGVkCist ICAgIGZvciBDUFAgaW4gIiRDQyAtRSIgIiRDQyAtRSAtdHJhZGl0aW9uYWwtY3BwIiBjcHAgL2xp Yi9jcHAKKy0gICAgZG8KKy0gICAgICBhY19wcmVwcm9jX29rPWZhbHNlCistZm9yIGFjX2NfcHJl cHJvY193YXJuX2ZsYWcgaW4gJycgeWVzCistZG8KKy0gICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhh dCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKKy0gICMgd2l0aCBhIGZyZXNo IGNyb3NzLWNvbXBpbGVyIHdvcmtzLgorLSAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUg Y29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKKy0gICMgbm90IGp1c3QgdGhyb3Vn aCBjcHAuICJTeW50YXggZXJyb3IiIGlzIGhlcmUgdG8gY2F0Y2ggdGhpcyBjYXNlLgorLSAgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVm cy5oLiAgKi8KKy0jaW5jbHVkZSA8bGltaXRzLmg+CistCQkgICAgIFN5bnRheCBlcnJvcgorLV9B Q0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyIKKy10aGVuIDoKKy0KKy1lbHNlIGNh c2UgZSBpbiAjKAorLSAgZSkgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgorLWNvbnRp bnVlIDs7CistZXNhYworLWZpCistcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRl c3QuJGFjX2V4dAorLQorLSAgIyBPSywgd29ya3Mgb24gc2FuZSBjYXNlcy4gIE5vdyBjaGVjayB3 aGV0aGVyIG5vbmV4aXN0ZW50IGhlYWRlcnMKKy0gICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cu CistICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5k IGNvbmZkZWZzLmguICAqLworLSNpbmNsdWRlIDxhY19ub25leGlzdGVudC5oPgorLV9BQ0VPRgor LWlmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyIKKy10aGVuIDoKKy0gICMgQnJva2VuOiBzdWNj ZXNzIG9uIGludmFsaWQgaW5wdXQuCistY29udGludWUKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkgIyBQYXNzZXMgYm90aCB0ZXN0cy4KKy1hY19wcmVwcm9jX29rPToKKy1icmVhayA7OworLWVz YWMKKy1maQorLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQK Ky0KKy1kb25lCistIyBCZWNhdXNlIG9mICdicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNs ZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCistcm0gLWYgY29uZnRlc3QuaSBjb25mdGVzdC5lcnIg Y29uZnRlc3QuJGFjX2V4dAorLWlmICRhY19wcmVwcm9jX29rCistdGhlbiA6CistICBicmVhawor LWZpCistCistICAgIGRvbmUKKy0gICAgYWNfY3ZfcHJvZ19DUFA9JENQUAorLSAgIDs7CistZXNh YworLWZpCistICBDUFA9JGFjX2N2X3Byb2dfQ1BQCistZWxzZQorLSAgYWNfY3ZfcHJvZ19DUFA9 JENQUAorLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJENQUCIgPiY1CistcHJpbnRmICIlc1xuIiAiJENQUCIgPiY2OyB9CistYWNfcHJl cHJvY19vaz1mYWxzZQorLWZvciBhY19jX3ByZXByb2Nfd2Fybl9mbGFnIGluICcnIHllcworLWRv CistICAjIFVzZSBhIGhlYWRlciBmaWxlIHRoYXQgY29tZXMgd2l0aCBnY2MsIHNvIGNvbmZpZ3Vy aW5nIGdsaWJjCistICAjIHdpdGggYSBmcmVzaCBjcm9zcy1jb21waWxlciB3b3Jrcy4KKy0gICMg T24gdGhlIE5lWFQsIGNjIC1FIHJ1bnMgdGhlIGNvZGUgdGhyb3VnaCB0aGUgY29tcGlsZXIncyBw YXJzZXIsCistICAjIG5vdCBqdXN0IHRocm91Z2ggY3BwLiAiU3ludGF4IGVycm9yIiBpcyBoZXJl IHRvIGNhdGNoIHRoaXMgY2FzZS4KKy0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0 ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistI2luY2x1ZGUgPGxpbWl0cy5o PgorLQkJICAgICBTeW50YXggZXJyb3IKKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jcHAgIiRM SU5FTk8iCistdGhlbiA6CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpICMgQnJva2VuOiBm YWlscyBvbiB2YWxpZCBpbnB1dC4KKy1jb250aW51ZSA7OworLWVzYWMKKy1maQorLXJtIC1mIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKKy0KKy0gICMgT0ssIHdvcmtz IG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub25leGlzdGVudCBoZWFkZXJzCist ICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgorLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP RiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0jaW5jbHVkZSA8 YWNfbm9uZXhpc3RlbnQuaD4KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8i CistdGhlbiA6CistICAjIEJyb2tlbjogc3VjY2VzcyBvbiBpbnZhbGlkIGlucHV0LgorLWNvbnRp bnVlCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpICMgUGFzc2VzIGJvdGggdGVzdHMuCistYWNf cHJlcHJvY19vaz06CistYnJlYWsgOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb25mdGVzdC5lcnIg Y29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CistCistZG9uZQorLSMgQmVjYXVzZSBvZiAnYnJl YWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgorLXJt IC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKKy1pZiAkYWNfcHJl cHJvY19vaworLXRoZW4gOgorLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSB7IHsgcHJpbnRm ICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gJyRhY19wd2Qn OiIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiBlcnJvcjogaW4gJyRhY19wd2QnOiIgPiYy O30KKy1hc19mbl9lcnJvciAkPyAiQyBwcmVwcm9jZXNzb3IgXCIkQ1BQXCIgZmFpbHMgc2FuaXR5 IGNoZWNrCistU2VlICdjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsg fSA7OworLWVzYWMKKy1maQorLQorLWFjX2V4dD1jCistYWNfY3BwPSckQ1BQICRDUFBGTEFHUycK Ky1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+ JjUnCistYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFH UyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKKy1hY19jb21waWxlcl9nbnU9 JGFjX2N2X2NfY29tcGlsZXJfZ251CistCistCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBlZ3JlcCAtZSIgPiY1CistcHJpbnRmICVz ICJjaGVja2luZyBmb3IgZWdyZXAgLWUuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfcGF0 aF9FR1JFUF9UUkFESVRJT05BTCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAi ID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiB0ZXN0IC16ICIkRUdSRVBfVFJBRElU SU9OQUwiOyB0aGVuCistICBhY19wYXRoX0VHUkVQX1RSQURJVElPTkFMX2ZvdW5kPWZhbHNlCist ICAjIExvb3AgdGhyb3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJP R05BTUUtTElTVAorLSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorLWZv ciBhc19kaXIgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluCistZG8KKy0gIElG Uz0kYXNfc2F2ZV9JRlMKKy0gIGNhc2UgJGFzX2RpciBpbiAjKCgoCistICAgICcnKSBhc19kaXI9 Li8gOzsKKy0gICAgKi8pIDs7CistICAgICopIGFzX2Rpcj0kYXNfZGlyLyA7OworLSAgZXNhYwor LSAgICBmb3IgYWNfcHJvZyBpbiBncmVwIGdncmVwCistICAgZG8KKy0gICAgZm9yIGFjX2V4ZWNf ZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistICAgICAgYWNfcGF0aF9F R1JFUF9UUkFESVRJT05BTD0iJGFzX2RpciRhY19wcm9nJGFjX2V4ZWNfZXh0IgorLSAgICAgIGFz X2ZuX2V4ZWN1dGFibGVfcCAiJGFjX3BhdGhfRUdSRVBfVFJBRElUSU9OQUwiIHx8IGNvbnRpbnVl CistIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfRUdSRVBfVFJBRElUSU9OQUwgYW5kIHNlbGVjdCBp dCBpZiBpdCBpcyBmb3VuZC4KKy0gICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9FR1JFUF9UUkFE SVRJT05BTAorLWNhc2UgYCIkYWNfcGF0aF9FR1JFUF9UUkFESVRJT05BTCIgLS12ZXJzaW9uIDI+ JjFgIGluICMoCistKkdOVSopCistICBhY19jdl9wYXRoX0VHUkVQX1RSQURJVElPTkFMPSIkYWNf cGF0aF9FR1JFUF9UUkFESVRJT05BTCIgYWNfcGF0aF9FR1JFUF9UUkFESVRJT05BTF9mb3VuZD06 OzsKKy0jKAorLSopCistICBhY19jb3VudD0wCistICBwcmludGYgJXMgMDEyMzQ1Njc4OSA+ImNv bmZ0ZXN0LmluIgorLSAgd2hpbGUgOgorLSAgZG8KKy0gICAgY2F0ICJjb25mdGVzdC5pbiIgImNv bmZ0ZXN0LmluIiA+ImNvbmZ0ZXN0LnRtcCIKKy0gICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0 ZXN0LmluIgorLSAgICBjcCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5ubCIKKy0gICAgcHJpbnRm ICIlc1xuIiAnRUdSRVBfVFJBRElUSU9OQUwnID4+ICJjb25mdGVzdC5ubCIKKy0gICAgIiRhY19w YXRoX0VHUkVQX1RSQURJVElPTkFMIiAtRSAnRUdSKEVQfEFDKV9UUkFESVRJT05BTCQnIDwgImNv bmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2L251bGwgfHwgYnJlYWsKKy0gICAgZGlm ZiAiY29uZnRlc3Qub3V0IiAiY29uZnRlc3QubmwiID4vZGV2L251bGwgMj4mMSB8fCBicmVhawor LSAgICBhc19mbl9hcml0aCAkYWNfY291bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKKy0gICAg aWYgdGVzdCAkYWNfY291bnQgLWd0ICR7YWNfcGF0aF9FR1JFUF9UUkFESVRJT05BTF9tYXgtMH07 IHRoZW4KKy0gICAgICAjIEJlc3Qgb25lIHNvIGZhciwgc2F2ZSBpdCBidXQga2VlcCBsb29raW5n IGZvciBhIGJldHRlciBvbmUKKy0gICAgICBhY19jdl9wYXRoX0VHUkVQX1RSQURJVElPTkFMPSIk YWNfcGF0aF9FR1JFUF9UUkFESVRJT05BTCIKKy0gICAgICBhY19wYXRoX0VHUkVQX1RSQURJVElP TkFMX21heD0kYWNfY291bnQKKy0gICAgZmkKKy0gICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5w dXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAorLSAgICB0ZXN0ICRhY19jb3VudCAtZ3QgMTAgJiYg YnJlYWsKKy0gIGRvbmUKKy0gIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVz dC5ubCBjb25mdGVzdC5vdXQ7OworLWVzYWMKKy0KKy0gICAgICAkYWNfcGF0aF9FR1JFUF9UUkFE SVRJT05BTF9mb3VuZCAmJiBicmVhayAzCistICAgIGRvbmUKKy0gIGRvbmUKKy0gIGRvbmUKKy1J RlM9JGFzX3NhdmVfSUZTCistICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9FR1JFUF9UUkFESVRJ T05BTCI7IHRoZW4KKy0gICAgOgorLSAgZmkKKy1lbHNlCistICBhY19jdl9wYXRoX0VHUkVQX1RS QURJVElPTkFMPSRFR1JFUF9UUkFESVRJT05BTAorLWZpCistCistICAgIGlmIHRlc3QgIiRhY19j dl9wYXRoX0VHUkVQX1RSQURJVElPTkFMIgorLXRoZW4gOgorLSAgYWNfY3ZfcGF0aF9FR1JFUF9U UkFESVRJT05BTD0iJGFjX2N2X3BhdGhfRUdSRVBfVFJBRElUSU9OQUwgLUUiCistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgLXogIiRFR1JFUF9UUkFESVRJT05BTCI7IHRoZW4KKy0g IGFjX3BhdGhfRUdSRVBfVFJBRElUSU9OQUxfZm91bmQ9ZmFsc2UKKy0gICMgTG9vcCB0aHJvdWdo IHRoZSB1c2VyJ3MgcGF0aCBhbmQgdGVzdCBmb3IgZWFjaCBvZiBQUk9HTkFNRS1MSVNUCistICBh c19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCistZm9yIGFzX2RpciBpbiAkUEFU SCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4KKy1kbworLSAgSUZTPSRhc19zYXZlX0lGUwor LSAgY2FzZSAkYXNfZGlyIGluICMoKCgKKy0gICAgJycpIGFzX2Rpcj0uLyA7OworLSAgICAqLykg OzsKKy0gICAgKikgYXNfZGlyPSRhc19kaXIvIDs7CistICBlc2FjCistICAgIGZvciBhY19wcm9n IGluIGVncmVwCistICAgZG8KKy0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRh YmxlX2V4dGVuc2lvbnM7IGRvCistICAgICAgYWNfcGF0aF9FR1JFUF9UUkFESVRJT05BTD0iJGFz X2RpciRhY19wcm9nJGFjX2V4ZWNfZXh0IgorLSAgICAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFj X3BhdGhfRUdSRVBfVFJBRElUSU9OQUwiIHx8IGNvbnRpbnVlCistIyBDaGVjayBmb3IgR05VIGFj X3BhdGhfRUdSRVBfVFJBRElUSU9OQUwgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KKy0g ICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9FR1JFUF9UUkFESVRJT05BTAorLWNhc2UgYCIkYWNf cGF0aF9FR1JFUF9UUkFESVRJT05BTCIgLS12ZXJzaW9uIDI+JjFgIGluICMoCistKkdOVSopCist ICBhY19jdl9wYXRoX0VHUkVQX1RSQURJVElPTkFMPSIkYWNfcGF0aF9FR1JFUF9UUkFESVRJT05B TCIgYWNfcGF0aF9FR1JFUF9UUkFESVRJT05BTF9mb3VuZD06OzsKKy0jKAorLSopCistICBhY19j b3VudD0wCistICBwcmludGYgJXMgMDEyMzQ1Njc4OSA+ImNvbmZ0ZXN0LmluIgorLSAgd2hpbGUg OgorLSAgZG8KKy0gICAgY2F0ICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0LmluIiA+ImNvbmZ0ZXN0 LnRtcCIKKy0gICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorLSAgICBjcCAiY29u ZnRlc3QuaW4iICJjb25mdGVzdC5ubCIKKy0gICAgcHJpbnRmICIlc1xuIiAnRUdSRVBfVFJBRElU SU9OQUwnID4+ICJjb25mdGVzdC5ubCIKKy0gICAgIiRhY19wYXRoX0VHUkVQX1RSQURJVElPTkFM IiAnRUdSKEVQfEFDKV9UUkFESVRJT05BTCQnIDwgImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91 dCIgMj4vZGV2L251bGwgfHwgYnJlYWsKKy0gICAgZGlmZiAiY29uZnRlc3Qub3V0IiAiY29uZnRl c3QubmwiID4vZGV2L251bGwgMj4mMSB8fCBicmVhaworLSAgICBhc19mbl9hcml0aCAkYWNfY291 bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKKy0gICAgaWYgdGVzdCAkYWNfY291bnQgLWd0ICR7 YWNfcGF0aF9FR1JFUF9UUkFESVRJT05BTF9tYXgtMH07IHRoZW4KKy0gICAgICAjIEJlc3Qgb25l IHNvIGZhciwgc2F2ZSBpdCBidXQga2VlcCBsb29raW5nIGZvciBhIGJldHRlciBvbmUKKy0gICAg ICBhY19jdl9wYXRoX0VHUkVQX1RSQURJVElPTkFMPSIkYWNfcGF0aF9FR1JFUF9UUkFESVRJT05B TCIKKy0gICAgICBhY19wYXRoX0VHUkVQX1RSQURJVElPTkFMX21heD0kYWNfY291bnQKKy0gICAg ZmkKKy0gICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3Vn aAorLSAgICB0ZXN0ICRhY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKKy0gIGRvbmUKKy0gIHJtIC1m IGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25mdGVzdC5vdXQ7OworLWVz YWMKKy0KKy0gICAgICAkYWNfcGF0aF9FR1JFUF9UUkFESVRJT05BTF9mb3VuZCAmJiBicmVhayAz CistICAgIGRvbmUKKy0gIGRvbmUKKy0gIGRvbmUKKy1JRlM9JGFzX3NhdmVfSUZTCistICBpZiB0 ZXN0IC16ICIkYWNfY3ZfcGF0aF9FR1JFUF9UUkFESVRJT05BTCI7IHRoZW4KKy0gICAgYXNfZm5f ZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgZWdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFU SF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQorLSAgZmkKKy1lbHNlCistICBh Y19jdl9wYXRoX0VHUkVQX1RSQURJVElPTkFMPSRFR1JFUF9UUkFESVRJT05BTAorLWZpCistIDs7 CistZXNhYworLWZpIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3BhdGhfRUdSRVBfVFJBRElUSU9OQUwi ID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19jdl9wYXRoX0VHUkVQX1RSQURJVElPTkFMIiA+JjY7 IH0KKy0gRUdSRVBfVFJBRElUSU9OQUw9JGFjX2N2X3BhdGhfRUdSRVBfVFJBRElUSU9OQUwKKy0K Ky0KKy0gICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo ZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBMaWJyYXJ5IDIgb3IgbmV3ZXIi ID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBD IExpYnJhcnkgMiBvciBuZXdlci4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9nbnVfbGli cmFyeV8yK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBj YXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh Y19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCistI2luY2x1ZGUgPGZlYXR1cmVzLmg+ CistI2lmZGVmIF9fR05VX0xJQlJBUllfXworLSAjaWYgKF9fR0xJQkNfXyA+PSAyKSAmJiAhZGVm aW5lZCBfX1VDTElCQ19fCistICBMdWNreSBHTlUgdXNlcgorLSAjZW5kaWYKKy0jZW5kaWYKKy0K Ky1fQUNFT0YKKy1pZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Cist ICAkRUdSRVBfVFJBRElUSU9OQUwgIkx1Y2t5IEdOVSB1c2VyIiA+L2Rldi9udWxsIDI+JjEKKy10 aGVuIDoKKy0gIGFjX2N2X2dudV9saWJyYXJ5XzI9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0g IGUpIGFjX2N2X2dudV9saWJyYXJ5XzI9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtcmYgY29uZnRl c3QqCistCistCistICAgICA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9nbnVfbGlicmFyeV8yIiA+JjUK Ky1wcmludGYgIiVzXG4iICIkYWNfY3ZfZ251X2xpYnJhcnlfMiIgPiY2OyB9CistCistICAgIEdM SUJDMj0iJGFjX2N2X2dudV9saWJyYXJ5XzIiCistCistCistCistCistICBDRkxBR19WSVNJQklM SVRZPQorLSAgSEFWRV9WSVNJQklMSVRZPTAKKy0gIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCist ICAgICAgICAgICAgICAgIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAtV2Vycm9yIG9wdGlvbiBpcyB1c2FibGUiID4mNQor LXByaW50ZiAlcyAiY2hlY2tpbmcgd2hldGhlciB0aGUgLVdlcnJvciBvcHRpb24gaXMgdXNhYmxl Li4uICIgPiY2OyB9CistaWYgdGVzdCAke2dsX2N2X2NjX3Zpc193ZXJyb3IreX0KKy10aGVuIDoK Ky0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkg Z2xfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCistICAgICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9y IgorLSAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Cist LyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLWludAorLW1haW4gKHZvaWQpCisteworLQorLSAg OworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRM SU5FTk8iCistdGhlbiA6CistICBnbF9jdl9jY192aXNfd2Vycm9yPXllcworLWVsc2UgY2FzZSBl IGluICMoCistICBlKSBnbF9jdl9jY192aXNfd2Vycm9yPW5vIDs7CistZXNhYworLWZpCistcm0g LWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNv bmZ0ZXN0LiRhY19leHQKKy0gICAgICAgQ0ZMQUdTPSIkZ2xfc2F2ZV9DRkxBR1MiCistICAgICAg IDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJGdsX2N2X2NjX3Zpc193ZXJyb3IiID4mNQorLXByaW50ZiAiJXNcbiIg IiRnbF9jdl9jY192aXNfd2Vycm9yIiA+JjY7IH0KKy0gICAgICAgIHsgcHJpbnRmICIlc1xuIiAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2ltcGxlIHZpc2liaWxp dHkgZGVjbGFyYXRpb25zIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBzaW1wbGUgdmlz aWJpbGl0eSBkZWNsYXJhdGlvbnMuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7Z2xfY3ZfY2Nfdmlz aWJpbGl0eSt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSBnbF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKy0gICAgICAgQ0ZM QUdTPSIkQ0ZMQUdTIC1mdmlzaWJpbGl0eT1oaWRkZW4iCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAkZ2xfY3ZfY2NfdmlzX3dlcnJvciA9IHllczsg dGhlbgorLSAgICAgICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIgorLSAgICAgICBmaQorLSAg ICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5k IGNvbmZkZWZzLmguICAqLworLWV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX3Zpc2liaWxpdHlfXygi aGlkZGVuIikpKSBpbnQgaGlkZGVudmFyOworLSAgICAgICAgICAgICAgZXh0ZXJuIF9fYXR0cmli dXRlX18oKF9fdmlzaWJpbGl0eV9fKCJkZWZhdWx0IikpKSBpbnQgZXhwb3J0ZWR2YXI7CistICAg ICAgICAgICAgICBleHRlcm4gX19hdHRyaWJ1dGVfXygoX192aXNpYmlsaXR5X18oImhpZGRlbiIp KSkgaW50IGhpZGRlbmZ1bmMgKHZvaWQpOworLSAgICAgICAgICAgICAgZXh0ZXJuIF9fYXR0cmli dXRlX18oKF9fdmlzaWJpbGl0eV9fKCJkZWZhdWx0IikpKSBpbnQgZXhwb3J0ZWRmdW5jICh2b2lk KTsKKy0gICAgICAgICAgICAgIHZvaWQgZHVtbXlmdW5jICh2b2lkKSB7fQorLQorLWludAorLW1h aW4gKHZvaWQpCisteworLQorLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFj X2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6CistICBnbF9jdl9jY192aXNpYmls aXR5PXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBnbF9jdl9jY192aXNpYmlsaXR5PW5v IDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i amV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgQ0ZMQUdTPSIkZ2xf c2F2ZV9DRkxBR1MiCistICAgICAgIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2NjX3Zpc2liaWxpdHki ID4mNQorLXByaW50ZiAiJXNcbiIgIiRnbF9jdl9jY192aXNpYmlsaXR5IiA+JjY7IH0KKy0gICAg aWYgdGVzdCAkZ2xfY3ZfY2NfdmlzaWJpbGl0eSA9IHllczsgdGhlbgorLSAgICAgIENGTEFHX1ZJ U0lCSUxJVFk9Ii1mdmlzaWJpbGl0eT1oaWRkZW4iCistICAgICAgSEFWRV9WSVNJQklMSVRZPTEK Ky0gICAgZmkKKy0gIGZpCistCistCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1ZJ U0lCSUxJVFkgJEhBVkVfVklTSUJJTElUWSIgPj5jb25mZGVmcy5oCistCistCistYWNfZm5fY19j aGVja190eXBlICIkTElORU5PIiAic2l6ZV90IiAiYWNfY3ZfdHlwZV9zaXplX3QiICIkYWNfaW5j bHVkZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfc2l6ZV90IiA9IHh5ZXMKKy10 aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkKKy1wcmludGYgIiVzXG4iICIjZGVm aW5lIHNpemVfdCB1bnNpZ25lZCBpbnQiID4+Y29uZmRlZnMuaAorLSA7OworLWVzYWMKKy1maQor LQorLQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo ZWNraW5nIGZvciBzdGRpbnQuaCIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3Igc3RkaW50 LmguLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7Z2xfY3ZfaGVhZGVyX3N0ZGludF9oK3l9CistdGhl biA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0g IGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQg Y29uZmRlZnMuaC4gICovCistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSAgICAgICAgICAgICNp bmNsdWRlIDxzdGRpbnQuaD4KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy11aW50bWF4X3QgaSA9 ICh1aW50bWF4X3QpIC0xOyByZXR1cm4gIWk7CistICA7CistICByZXR1cm4gMDsKKy19CistX0FD RU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGdsX2N2 X2hlYWRlcl9zdGRpbnRfaD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgZ2xfY3ZfaGVh ZGVyX3N0ZGludF9oPW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIg Y29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1l c2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkZ2xfY3ZfaGVhZGVyX3N0ZGludF9oIiA+JjUKKy1wcmludGYgIiVzXG4iICIkZ2xf Y3ZfaGVhZGVyX3N0ZGludF9oIiA+JjY7IH0KKy0gIGlmIHRlc3QgJGdsX2N2X2hlYWRlcl9zdGRp bnRfaCA9IHllczsgdGhlbgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TVERJTlRf SF9XSVRIX1VJTlRNQVggMSIgPj5jb25mZGVmcy5oCistCistICBmaQorLQorLSMgVGhlIFVsdHJp eCA0LjIgbWlwcyBidWlsdGluIGFsbG9jYSBkZWNsYXJlZCBieSBhbGxvY2EuaCBvbmx5IHdvcmtz CistIyBmb3IgY29uc3RhbnQgYXJndW1lbnRzLiAgVXNlbGVzcyEKKy17IHByaW50ZiAiJXNcbiIg IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgYWxsb2Nh LmgiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgYWxsb2NhLmguLi4gIiA+ JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3Zfd29ya2luZ19hbGxvY2FfaCt5fQorLXRoZW4gOgorLSAg cHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQg Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZz LmguICAqLworLSNpbmNsdWRlIDxhbGxvY2EuaD4KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1j aGFyICpwID0gKGNoYXIgKikgYWxsb2NhICgyICogc2l6ZW9mIChpbnQpKTsKKy0JCQkgIGlmIChw KSByZXR1cm4gMDsKKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9j X3RyeV9saW5rICIkTElORU5PIgorLXRoZW4gOgorLSAgYWNfY3Zfd29ya2luZ19hbGxvY2FfaD15 ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY3Zfd29ya2luZ19hbGxvY2FfaD1ubyA7 OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpl eHQgY29uZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNf ZXh0IDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJGFjX2N2X3dvcmtpbmdfYWxsb2NhX2giID4mNQorLXByaW50ZiAi JXNcbiIgIiRhY19jdl93b3JraW5nX2FsbG9jYV9oIiA+JjY7IH0KKy1pZiB0ZXN0ICRhY19jdl93 b3JraW5nX2FsbG9jYV9oID0geWVzOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBI QVZFX0FMTE9DQV9IIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCisteyBwcmludGYgIiVzXG4i ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhbGxvY2EiID4mNQor LXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIGFsbG9jYS4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHth Y19jdl9mdW5jX2FsbG9jYV93b3Jrcyt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVk KSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl9mdW5jX2FsbG9jYV93b3Jr cz0kYWNfY3Zfd29ya2luZ19hbGxvY2FfaAorLWlmIHRlc3QgIiRhY19jdl9mdW5jX2FsbG9jYV93 b3JrcyIgIT0geWVzCistdGhlbiA6CistICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m dGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLSNpbmNsdWRlIDxzdGRsaWIu aD4KKy0jaW5jbHVkZSA8c3RkZGVmLmg+CistI2lmbmRlZiBhbGxvY2EKKy0jIGlmZGVmIF9fR05V Q19fCistIyAgZGVmaW5lIGFsbG9jYSBfX2J1aWx0aW5fYWxsb2NhCistIyBlbGlmIGRlZmluZWQg X01TQ19WRVIKKy0jICBpbmNsdWRlIDxtYWxsb2MuaD4KKy0jICBkZWZpbmUgYWxsb2NhIF9hbGxv Y2EKKy0jIGVsc2UKKy0jICBpZmRlZiAgX19jcGx1c3BsdXMKKy1leHRlcm4gIkMiCistIyAgZW5k aWYKKy12b2lkICphbGxvY2EgKHNpemVfdCk7CistIyBlbmRpZgorLSNlbmRpZgorLQorLWludAor LW1haW4gKHZvaWQpCisteworLWNoYXIgKnAgPSAoY2hhciAqKSBhbGxvY2EgKDEpOworLQkJCQkg ICAgaWYgKHApIHJldHVybiAwOworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlm IGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19jdl9mdW5jX2FsbG9j YV93b3Jrcz15ZXMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19v YmpleHQgY29uZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4k YWNfZXh0CistZmkgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3MiID4mNQor LXByaW50ZiAiJXNcbiIgIiRhY19jdl9mdW5jX2FsbG9jYV93b3JrcyIgPiY2OyB9CistCistaWYg dGVzdCAkYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3MgPSB5ZXM7IHRoZW4KKy0KKy1wcmludGYgIiVz XG4iICIjZGVmaW5lIEhBVkVfQUxMT0NBIDEiID4+Y29uZmRlZnMuaAorLQorLWVsc2UKKy0gICMg VGhlIFNWUjMgbGliUFcgYW5kIFNWUjQgbGlidWNiIGJvdGggY29udGFpbiBpbmNvbXBhdGlibGUg ZnVuY3Rpb25zCistIyB0aGF0IGNhdXNlIHRyb3VibGUuICBTb21lIHZlcnNpb25zIGRvIG5vdCBl dmVuIGNvbnRhaW4gYWxsb2NhIG9yCistIyBjb250YWluIGEgYnVnZ3kgdmVyc2lvbi4gIElmIHlv dSBzdGlsbCB3YW50IHRvIHVzZSB0aGVpciBhbGxvY2EsCistIyB1c2UgYXIgdG8gZXh0cmFjdCBh bGxvY2EubyBmcm9tIHRoZW0gaW5zdGVhZCBvZiBjb21waWxpbmcgYWxsb2NhLmMuCistCistQUxM T0NBPVwke0xJQk9CSkRJUn1hbGxvY2EuJGFjX29iamV4dAorLQorLXByaW50ZiAiJXNcbiIgIiNk ZWZpbmUgQ19BTExPQ0EgMSIgPj5jb25mZGVmcy5oCistCistCisteyBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHN0YWNrIGRpcmVjdGlvbiBmb3Ig QyBhbGxvY2EiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgc3RhY2sgZGlyZWN0aW9uIGZvciBD IGFsbG9jYS4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9jX3N0YWNrX2RpcmVjdGlvbit5 fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGlu ICMoCistICBlKSBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcworLXRoZW4gOgorLSAg YWNfY3ZfY19zdGFja19kaXJlY3Rpb249MAorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQg Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZz LmguICAqLworLSRhY19pbmNsdWRlc19kZWZhdWx0CistaW50CistZmluZF9zdGFja19kaXJlY3Rp b24gKGludCAqYWRkciwgaW50IGRlcHRoKQorLXsKKy0gIGludCBkaXIsIGR1bW15ID0gMDsKKy0g IGlmICghIGFkZHIpCistICAgIGFkZHIgPSAmZHVtbXk7CistICAqYWRkciA9IGFkZHIgPCAmZHVt bXkgPyAxIDogYWRkciA9PSAmZHVtbXkgPyAwIDogLTE7CistICBkaXIgPSBkZXB0aCA/IGZpbmRf c3RhY2tfZGlyZWN0aW9uIChhZGRyLCBkZXB0aCAtIDEpIDogMDsKKy0gIHJldHVybiBkaXIgKyBk dW1teTsKKy19CistCistaW50CistbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorLXsKKy0g IHJldHVybiBmaW5kX3N0YWNrX2RpcmVjdGlvbiAoMCwgYXJnYyArICFhcmd2ICsgMjApIDwgMDsK Ky19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIgorLXRoZW4gOgorLSAg YWNfY3ZfY19zdGFja19kaXJlY3Rpb249MQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19j dl9jX3N0YWNrX2RpcmVjdGlvbj0tMSA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgKi5jb3Jl IGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKy0g IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7Cist ZXNhYworLWZpCistIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uIiA+JjUK Ky1wcmludGYgIiVzXG4iICIkYWNfY3ZfY19zdGFja19kaXJlY3Rpb24iID4mNjsgfQorLXByaW50 ZiAiJXNcbiIgIiNkZWZpbmUgU1RBQ0tfRElSRUNUSU9OICRhY19jdl9jX3N0YWNrX2RpcmVjdGlv biIgPj5jb25mZGVmcy5oCistCistCistZmkKKy0KKy0KKy1hY19mdW5jPQorLWZvciBhY19pdGVt IGluICRhY19mdW5jX2NfbGlzdAorLWRvCistICBpZiB0ZXN0ICRhY19mdW5jOyB0aGVuCistICAg IGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgJGFjX2Z1bmMgYWNfY3ZfZnVuY18kYWNfZnVu YworLSAgICBpZiBldmFsIHRlc3QgXCJ4XCRhY19jdl9mdW5jXyRhY19mdW5jXCIgPSB4eWVzOyB0 aGVuCistICAgICAgZWNobyAiI2RlZmluZSAkYWNfaXRlbSAxIiA+PiBjb25mZGVmcy5oCistICAg IGZpCistICAgIGFjX2Z1bmM9CistICBlbHNlCistICAgIGFjX2Z1bmM9JGFjX2l0ZW0KKy0gIGZp CistZG9uZQorLQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyBmb3Igd29ya2luZyBtbWFwIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5n IGZvciB3b3JraW5nIG1tYXAuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfZnVuY19tbWFw X2ZpeGVkX21hcHBlZCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgor LWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHll cworLXRoZW4gOgorLSAgY2FzZSAiJGhvc3Rfb3MiIGluICMgKCgKKy0JCQkgICMgR3Vlc3MgeWVz IG9uIHBsYXRmb3JtcyB3aGVyZSB3ZSBrbm93IHRoZSByZXN1bHQuCistCQkgIGxpbnV4KikgYWNf Y3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXMgOzsKKy0JCQkgICMgSWYgd2UgZG9uJ3Qga25v dywgYXNzdW1lIHRoZSB3b3JzdC4KKy0JCSAgKikgICAgICBhY19jdl9mdW5jX21tYXBfZml4ZWRf bWFwcGVkPW5vIDs7CistCQllc2FjCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25m ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4g ICovCistJGFjX2luY2x1ZGVzX2RlZmF1bHQKKy0vKiBtYWxsb2MgbWlnaHQgaGF2ZSBiZWVuIHJl bmFtZWQgYXMgcnBsX21hbGxvYy4gKi8KKy0jdW5kZWYgbWFsbG9jCistCistLyogVGhhbmtzIHRv IE1pa2UgSGFlcnRlbCBhbmQgSmltIEF2ZXJhIGZvciB0aGlzIHRlc3QuCistICAgSGVyZSBpcyBh IG1hdHJpeCBvZiBtbWFwIHBvc3NpYmlsaXRpZXM6CistCW1tYXAgcHJpdmF0ZSBub3QgZml4ZWQK Ky0JbW1hcCBwcml2YXRlIGZpeGVkIGF0IHNvbWV3aGVyZSBjdXJyZW50bHkgdW5tYXBwZWQKKy0J bW1hcCBwcml2YXRlIGZpeGVkIGF0IHNvbWV3aGVyZSBhbHJlYWR5IG1hcHBlZAorLQltbWFwIHNo YXJlZCBub3QgZml4ZWQKKy0JbW1hcCBzaGFyZWQgZml4ZWQgYXQgc29tZXdoZXJlIGN1cnJlbnRs eSB1bm1hcHBlZAorLQltbWFwIHNoYXJlZCBmaXhlZCBhdCBzb21ld2hlcmUgYWxyZWFkeSBtYXBw ZWQKKy0gICBGb3IgcHJpdmF0ZSBtYXBwaW5ncywgd2Ugc2hvdWxkIHZlcmlmeSB0aGF0IGNoYW5n ZXMgY2Fubm90IGJlIHJlYWQoKQorLSAgIGJhY2sgZnJvbSB0aGUgZmlsZSwgbm9yIG1tYXAncyBi YWNrIGZyb20gdGhlIGZpbGUgYXQgYSBkaWZmZXJlbnQKKy0gICBhZGRyZXNzLiAgKFRoZXJlIGhh dmUgYmVlbiBzeXN0ZW1zIHdoZXJlIHByaXZhdGUgd2FzIG5vdCBjb3JyZWN0bHkKKy0gICBpbXBs ZW1lbnRlZCBsaWtlIHRoZSBpbmZhbW91cyBpMzg2IHN2cjQuMCwgYW5kIHN5c3RlbXMgd2hlcmUg dGhlCistICAgVk0gcGFnZSBjYWNoZSB3YXMgbm90IGNvaGVyZW50IHdpdGggdGhlIGZpbGUgc3lz dGVtIGJ1ZmZlciBjYWNoZQorLSAgIGxpa2UgZWFybHkgdmVyc2lvbnMgb2YgRnJlZUJTRCBhbmQg cG9zc2libHkgY29udGVtcG9yYXJ5IE5ldEJTRC4pCistICAgRm9yIHNoYXJlZCBtYXBwaW5ncywg d2Ugc2hvdWxkIGNvbnZlcnNlbHkgdmVyaWZ5IHRoYXQgY2hhbmdlcyBnZXQKKy0gICBwcm9wYWdh dGVkIGJhY2sgdG8gYWxsIHRoZSBwbGFjZXMgdGhleSdyZSBzdXBwb3NlZCB0byBiZS4gICovCist CistI2luY2x1ZGUgPGZjbnRsLmg+CistI2luY2x1ZGUgPHN5cy9tbWFuLmg+CistCistI2lmbmRl ZiBnZXRwYWdlc2l6ZQorLS8qIFByZWZlciBzeXNjb25mIHRvIHRoZSBsZWdhY3kgZ2V0cGFnZXNp emUgZnVuY3Rpb24sIGFzIGdldHBhZ2VzaXplIGhhcworLSAgIGJlZW4gcmVtb3ZlZCBmcm9tIFBP U0lYIGFuZCBpcyBsaW1pdGVkIHRvIHBhZ2Ugc2l6ZXMgdGhhdCBmaXQgaW4gJ2ludCcuICAqLwor LSMgaWZkZWYgX1NDX1BBR0VTSVpFCistIyAgZGVmaW5lIGdldHBhZ2VzaXplKCkgc3lzY29uZiAo X1NDX1BBR0VTSVpFKQorLSMgZWxpZiBkZWZpbmVkIF9TQ19QQUdFX1NJWkUKKy0jICBkZWZpbmUg Z2V0cGFnZXNpemUoKSBzeXNjb25mIChfU0NfUEFHRV9TSVpFKQorLSMgZWxpZiBIQVZFX0dFVFBB R0VTSVpFCistaW50IGdldHBhZ2VzaXplICgpOworLSMgZWxzZQorLSMgIGlmZGVmIEhBVkVfU1lT X1BBUkFNX0gKKy0jICAgaW5jbHVkZSA8c3lzL3BhcmFtLmg+CistIyAgIGlmZGVmIEVYRUNfUEFH RVNJWkUKKy0jICAgIGRlZmluZSBnZXRwYWdlc2l6ZSgpIEVYRUNfUEFHRVNJWkUKKy0jICAgZWxz ZSAvKiBubyBFWEVDX1BBR0VTSVpFICovCistIyAgICBpZmRlZiBOQlBHCistIyAgICAgZGVmaW5l IGdldHBhZ2VzaXplKCkgTkJQRyAqIENMU0laRQorLSMgICAgIGlmbmRlZiBDTFNJWkUKKy0jICAg ICAgZGVmaW5lIENMU0laRSAxCistIyAgICAgZW5kaWYgLyogbm8gQ0xTSVpFICovCistIyAgICBl bHNlIC8qIG5vIE5CUEcgKi8KKy0jICAgICBpZmRlZiBOQlBDCistIyAgICAgIGRlZmluZSBnZXRw YWdlc2l6ZSgpIE5CUEMKKy0jICAgICBlbHNlIC8qIG5vIE5CUEMgKi8KKy0jICAgICAgaWZkZWYg UEFHRVNJWkUKKy0jICAgICAgIGRlZmluZSBnZXRwYWdlc2l6ZSgpIFBBR0VTSVpFCistIyAgICAg IGVuZGlmIC8qIFBBR0VTSVpFICovCistIyAgICAgZW5kaWYgLyogbm8gTkJQQyAqLworLSMgICAg ZW5kaWYgLyogbm8gTkJQRyAqLworLSMgICBlbmRpZiAvKiBubyBFWEVDX1BBR0VTSVpFICovCist IyAgZWxzZSAvKiBubyBIQVZFX1NZU19QQVJBTV9IICovCistIyAgIGRlZmluZSBnZXRwYWdlc2l6 ZSgpIDgxOTIJLyogcHVudCB0b3RhbGx5ICovCistIyAgZW5kaWYgLyogbm8gSEFWRV9TWVNfUEFS QU1fSCAqLworLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy0g IGNoYXIgKmRhdGEsICpkYXRhMiwgKmRhdGEzOworLSAgY29uc3QgY2hhciAqY2RhdGEyOworLSAg bG9uZyBpLCBwYWdlc2l6ZTsKKy0gIGludCBmZCwgZmQyOworLQorLSAgcGFnZXNpemUgPSBnZXRw YWdlc2l6ZSAoKTsKKy0KKy0gIC8qIEZpcnN0LCBtYWtlIGEgZmlsZSB3aXRoIHNvbWUga25vd24g Z2FyYmFnZSBpbiBpdC4gKi8KKy0gIGRhdGEgPSAoY2hhciAqKSBtYWxsb2MgKHBhZ2VzaXplKTsK Ky0gIGlmICghZGF0YSkKKy0gICAgcmV0dXJuIDE7CistICBmb3IgKGkgPSAwOyBpIDwgcGFnZXNp emU7ICsraSkKKy0gICAgKihkYXRhICsgaSkgPSByYW5kICgpOworLSAgdW1hc2sgKDApOworLSAg ZmQgPSBjcmVhdCAoImNvbmZ0ZXN0Lm1tYXAiLCAwNjAwKTsKKy0gIGlmIChmZCA8IDApCistICAg IHJldHVybiAyOworLSAgaWYgKHdyaXRlIChmZCwgZGF0YSwgcGFnZXNpemUpICE9IHBhZ2VzaXpl KQorLSAgICByZXR1cm4gMzsKKy0gIGNsb3NlIChmZCk7CistCistICAvKiBOZXh0LCBjaGVjayB0 aGF0IHRoZSB0YWlsIG9mIGEgcGFnZSBpcyB6ZXJvLWZpbGxlZC4gIEZpbGUgbXVzdCBoYXZlCist ICAgICBub24temVybyBsZW5ndGgsIG90aGVyd2lzZSB3ZSByaXNrIFNJR0JVUyBmb3IgZW50aXJl IHBhZ2UuICAqLworLSAgZmQyID0gb3BlbiAoImNvbmZ0ZXN0LnR4dCIsIE9fUkRXUiB8IE9fQ1JF QVQgfCBPX1RSVU5DLCAwNjAwKTsKKy0gIGlmIChmZDIgPCAwKQorLSAgICByZXR1cm4gNDsKKy0g IGNkYXRhMiA9ICIiOworLSAgaWYgKHdyaXRlIChmZDIsIGNkYXRhMiwgMSkgIT0gMSkKKy0gICAg cmV0dXJuIDU7CistICBkYXRhMiA9IChjaGFyICopIG1tYXAgKDAsIHBhZ2VzaXplLCBQUk9UX1JF QUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBmZDIsIDBMKTsKKy0gIGlmIChkYXRhMiA9PSBN QVBfRkFJTEVEKQorLSAgICByZXR1cm4gNjsKKy0gIGZvciAoaSA9IDA7IGkgPCBwYWdlc2l6ZTsg KytpKQorLSAgICBpZiAoKihkYXRhMiArIGkpKQorLSAgICAgIHJldHVybiA3OworLSAgY2xvc2Ug KGZkMik7CistICAvKiAncmV0dXJuIDg7JyBub3QgY3VycmVudGx5IHVzZWQuICAqLworLQorLSAg LyogTmV4dCwgdHJ5IHRvIG1tYXAgdGhlIGZpbGUgYXQgYSBmaXhlZCBhZGRyZXNzIHdoaWNoIGFs cmVhZHkgaGFzCistICAgICBzb21ldGhpbmcgZWxzZSBhbGxvY2F0ZWQgYXQgaXQuICBJZiB3ZSBj YW4sIGFsc28gbWFrZSBzdXJlIHRoYXQKKy0gICAgIHdlIHNlZSB0aGUgc2FtZSBnYXJiYWdlLiAg Ki8KKy0gIGZkID0gb3BlbiAoImNvbmZ0ZXN0Lm1tYXAiLCBPX1JEV1IpOworLSAgaWYgKGZkIDwg MCkKKy0gICAgcmV0dXJuIDk7CistICBpZiAoZGF0YTIgIT0gbW1hcCAoZGF0YTIsIHBhZ2VzaXpl LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAorLQkJICAgICBNQVBfUFJJVkFURSB8IE1BUF9GSVhF RCwgZmQsIDBMKSkKKy0gICAgcmV0dXJuIDEwOworLSAgZm9yIChpID0gMDsgaSA8IHBhZ2VzaXpl OyArK2kpCistICAgIGlmICgqKGRhdGEgKyBpKSAhPSAqKGRhdGEyICsgaSkpCistICAgICAgcmV0 dXJuIDExOworLQorLSAgLyogRmluYWxseSwgbWFrZSBzdXJlIHRoYXQgY2hhbmdlcyB0byB0aGUg bWFwcGVkIGFyZWEgZG8gbm90CistICAgICBwZXJjb2xhdGUgYmFjayB0byB0aGUgZmlsZSBhcyBz ZWVuIGJ5IHJlYWQoKS4gIChUaGlzIGlzIGEgYnVnIG9uCistICAgICBzb21lIHZhcmlhbnRzIG9m IGkzODYgc3ZyNC4wLikgICovCistICBmb3IgKGkgPSAwOyBpIDwgcGFnZXNpemU7ICsraSkKKy0g ICAgKihkYXRhMiArIGkpID0gKihkYXRhMiArIGkpICsgMTsKKy0gIGRhdGEzID0gKGNoYXIgKikg bWFsbG9jIChwYWdlc2l6ZSk7CistICBpZiAoIWRhdGEzKQorLSAgICByZXR1cm4gMTI7CistICBp ZiAocmVhZCAoZmQsIGRhdGEzLCBwYWdlc2l6ZSkgIT0gcGFnZXNpemUpCistICAgIHJldHVybiAx MzsKKy0gIGZvciAoaSA9IDA7IGkgPCBwYWdlc2l6ZTsgKytpKQorLSAgICBpZiAoKihkYXRhICsg aSkgIT0gKihkYXRhMyArIGkpKQorLSAgICAgIHJldHVybiAxNDsKKy0gIGNsb3NlIChmZCk7Cist ICBmcmVlIChkYXRhKTsKKy0gIGZyZWUgKGRhdGEzKTsKKy0gIHJldHVybiAwOworLX0KKy1fQUNF T0YKKy1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iCistdGhlbiA6CistICBhY19jdl9mdW5j X21tYXBfZml4ZWRfbWFwcGVkPXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl9m dW5jX21tYXBfZml4ZWRfbWFwcGVkPW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSAqLmNv cmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAor LSAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsK Ky1lc2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBl ZCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQiID4m NjsgfQorLWlmIHRlc3QgJGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQgPSB5ZXM7IHRoZW4K Ky0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfTU1BUCAxIiA+PmNvbmZkZWZzLmgKKy0K Ky1maQorLXJtIC1mIGNvbmZ0ZXN0Lm1tYXAgY29uZnRlc3QudHh0CistCistCistCistICB7IHBy aW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhl ciBpbnRlZ2VyIGRpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIFNJR0ZQRSIgPiY1CistcHJpbnRmICVz ICJjaGVja2luZyB3aGV0aGVyIGludGVnZXIgZGl2aXNpb24gYnkgemVybyByYWlzZXMgU0lHRlBF Li4uICIgPiY2OyB9CistaWYgdGVzdCAke2d0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlK3l9Cist dGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygK Ky0gIGUpCistICAgICAgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGU9CistICAgICAgY2FzZSAi JGhvc3Rfb3MiIGluCistICAgICAgICBtYWNvcyogfCBkYXJ3aW5bNi05XSogfCBkYXJ3aW5bMS05 XVswLTldKikKKy0gICAgICAgICAgIyBPbiBNYWMgT1MgWCAxMC4yIG9yIG5ld2VyLCBqdXN0IGFz c3VtZSB0aGUgc2FtZSBhcyB3aGVuIGNyb3NzLQorLSAgICAgICAgICAjIGNvbXBpbGluZy4gSWYg d2Ugd2VyZSB0byBwZXJmb3JtIHRoZSByZWFsIHRlc3QsIDEgQ3Jhc2ggUmVwb3J0CistICAgICAg ICAgICMgZGlhbG9nIHdpbmRvdyB3b3VsZCBwb3AgdXAuCistICAgICAgICAgIGNhc2UgIiRob3N0 X2NwdSIgaW4KKy0gICAgICAgICAgICBpWzM0NTY3XTg2IHwgeDg2XzY0KQorLSAgICAgICAgICAg ICAgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGU9Imd1ZXNzaW5nIHllcyIgOzsKKy0gICAgICAg ICAgZXNhYworLSAgICAgICAgICA7OworLSAgICAgIGVzYWMKKy0gICAgICBpZiB0ZXN0IC16ICIk Z3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGUiOyB0aGVuCistICAgICAgICBpZiB0ZXN0ICIkY3Jv c3NfY29tcGlsaW5nIiA9IHllcworLXRoZW4gOgorLQorLSAgICAgICAgICAgICMgR3Vlc3MgYmFz ZWQgb24gdGhlIENQVS4KKy0gICAgICAgICAgICBjYXNlICIkaG9zdF9jcHUiIGluCistICAgICAg ICAgICAgICBhbHBoYSogfCBpWzM0NTY3XTg2IHwgeDg2XzY0IHwgbTY4ayB8IHMzOTAqKQorLSAg ICAgICAgICAgICAgICBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZT0iZ3Vlc3NpbmcgeWVzIjs7 CistICAgICAgICAgICAgICAqKQorLSAgICAgICAgICAgICAgICBndF9jdl9pbnRfZGl2Ynl6ZXJv X3NpZ2ZwZT0iZ3Vlc3Npbmcgbm8iOzsKKy0gICAgICAgICAgICBlc2FjCistCistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19l eHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCistI2luY2x1ZGUgPHN0ZGxpYi5oPiAvKiBm b3IgZXhpdCgpICovCistI2luY2x1ZGUgPHNpZ25hbC5oPgorLSNpZiAhKGRlZmluZWQgX1dJTjMy ICYmICFkZWZpbmVkIF9fQ1lHV0lOX18pCistI2luY2x1ZGUgPHVuaXN0ZC5oPiAvKiBmb3IgX2V4 aXQoKSAqLworLSNlbmRpZgorLQorLXN0YXRpYyB2b2lkCistc2lnZnBlX2hhbmRsZXIgKGludCBz aWcpCisteworLSAgLyogRXhpdCB3aXRoIGNvZGUgMCBpZiBTSUdGUEUsIHdpdGggY29kZSAxIGlm IGFueSBvdGhlciBzaWduYWwuICAqLworLSAgX2V4aXQgKHNpZyAhPSBTSUdGUEUpOworLX0KKy0K Ky1pbnQgeCA9IDE7CistaW50IHkgPSAwOworLWludCB6OworLWludCBpbmFuOworLQorLWludCBt YWluICgpCisteworLSAgc2lnbmFsIChTSUdGUEUsIHNpZ2ZwZV9oYW5kbGVyKTsKKy0vKiBJUklY IGFuZCBBSVggKHdoZW4gInhsYyAtcWNoZWNrIiBpcyB1c2VkKSB5aWVsZCBzaWduYWwgU0lHVFJB UC4gICovCistI2lmIChkZWZpbmVkIChfX3NnaSkgfHwgZGVmaW5lZCAoX0FJWCkpICYmIGRlZmlu ZWQgKFNJR1RSQVApCistICBzaWduYWwgKFNJR1RSQVAsIHNpZ2ZwZV9oYW5kbGVyKTsKKy0jZW5k aWYKKy0vKiBMaW51eC9TUEFSQyB5aWVsZHMgc2lnbmFsIFNJR0lMTC4gICovCistI2lmIGRlZmlu ZWQgKF9fc3BhcmNfXykgJiYgZGVmaW5lZCAoX19saW51eF9fKQorLSAgc2lnbmFsIChTSUdJTEws IHNpZ2ZwZV9oYW5kbGVyKTsKKy0jZW5kaWYKKy0KKy0gIHogPSB4IC8geTsKKy0gIGluYW4gPSB5 IC8geTsKKy0gIGV4aXQgKDIpOworLX0KKy0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9ydW4g IiRMSU5FTk8iCistdGhlbiA6CistICBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZT15ZXMKKy1l bHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGU9bm8gOzsK Ky1lc2FjCistZmkKKy1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQg YmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCistICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0 ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLQorLSAgICAgIGZpCist ICAgICA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6ICRndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZSIgPiY1CistcHJp bnRmICIlc1xuIiAiJGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlIiA+JjY7IH0KKy0gIGNhc2Ug IiRndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZSIgaW4KKy0gICAgKnllcykgdmFsdWU9MSA7Owor LSAgICAqKSAgICB2YWx1ZT0wIDs7CistICBlc2FjCistCistcHJpbnRmICIlc1xuIiAiI2RlZmlu ZSBJTlRESVYwX1JBSVNFU19TSUdGUEUgJHZhbHVlIiA+PmNvbmZkZWZzLmgKKy0KKy0KKy0KKy0g IHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm b3IgaW50dHlwZXMuaCIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgaW50dHlwZXMuaC4u LiAiID4mNjsgfQorLWlmIHRlc3QgJHtnbF9jdl9oZWFkZXJfaW50dHlwZXNfaCt5fQorLXRoZW4g OgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNv bmZkZWZzLmguICAqLworLQorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8aW50 dHlwZXMuaD4KKy0KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy11aW50bWF4X3QgaSA9ICh1aW50 bWF4X3QpIC0xOyByZXR1cm4gIWk7CistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCist aWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGdsX2N2X2hlYWRl cl9pbnR0eXBlc19oPXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBnbF9jdl9oZWFkZXJf aW50dHlwZXNfaD1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNv bmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNh YworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogJGdsX2N2X2hlYWRlcl9pbnR0eXBlc19oIiA+JjUKKy1wcmludGYgIiVzXG4iICIkZ2xf Y3ZfaGVhZGVyX2ludHR5cGVzX2giID4mNjsgfQorLSAgaWYgdGVzdCAkZ2xfY3ZfaGVhZGVyX2lu dHR5cGVzX2ggPSB5ZXM7IHRoZW4KKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfSU5U VFlQRVNfSF9XSVRIX1VJTlRNQVggMSIgPj5jb25mZGVmcy5oCistCistICBmaQorLQorLQorLSAg eyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv ciB1bnNpZ25lZCBsb25nIGxvbmcgaW50IiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciB1 bnNpZ25lZCBsb25nIGxvbmcgaW50Li4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X3R5cGVf dW5zaWduZWRfbG9uZ19sb25nX2ludCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVk KSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl90eXBlX3Vuc2lnbmVkX2xv bmdfbG9uZ19pbnQ9eWVzCistICAgICBjYXNlICRhY19wcm9nX2NjX3N0ZGMgaW4KKy0gICAgICAg bm8gfCBjODkpIDs7CistICAgICAgICopCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j b25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLSAgLyogRm9yIG5v dywgZG8gbm90IHRlc3QgdGhlIHByZXByb2Nlc3NvcjsgYXMgb2YgMjAwNyB0aGVyZSBhcmUgdG9v IG1hbnkKKy0JIGltcGxlbWVudGF0aW9ucyB3aXRoIGJyb2tlbiBwcmVwcm9jZXNzb3JzLiAgUGVy aGFwcyB0aGlzIGNhbgorLQkgYmUgcmV2aXNpdGVkIGluIDIwMTIuICBJbiB0aGUgbWVhbnRpbWUs IGNvZGUgc2hvdWxkIG5vdCBleHBlY3QKKy0JICNpZiB0byB3b3JrIHdpdGggbGl0ZXJhbHMgd2lk ZXIgdGhhbiAzMiBiaXRzLiAgKi8KKy0gICAgICAvKiBUZXN0IGxpdGVyYWxzLiAgKi8KKy0gICAg ICBsb25nIGxvbmcgaW50IGxsID0gOTIyMzM3MjAzNjg1NDc3NTgwN2xsOworLSAgICAgIGxvbmcg bG9uZyBpbnQgbmxsID0gLTkyMjMzNzIwMzY4NTQ3NzU4MDdMTDsKKy0gICAgICB1bnNpZ25lZCBs b25nIGxvbmcgaW50IHVsbCA9IDE4NDQ2NzQ0MDczNzA5NTUxNjE1VUxMOworLSAgICAgIC8qIFRl c3QgY29uc3RhbnQgZXhwcmVzc2lvbnMuICAgKi8KKy0gICAgICB0eXBlZGVmIGludCBhWygoLTky MjMzNzIwMzY4NTQ3NzU4MDdMTCA8IDAgJiYgMCA8IDkyMjMzNzIwMzY4NTQ3NzU4MDdsbCkKKy0J CSAgICAgPyAxIDogLTEpXTsKKy0gICAgICB0eXBlZGVmIGludCBiWygxODQ0Njc0NDA3MzcwOTU1 MTYxNVVMTCA8PSAodW5zaWduZWQgbG9uZyBsb25nIGludCkgLTEKKy0JCSAgICAgPyAxIDogLTEp XTsKKy0gICAgICBpbnQgaSA9IDYzOworLWludAorLW1haW4gKHZvaWQpCisteworLS8qIFRlc3Qg YXZhaWxhYmlsaXR5IG9mIHJ1bnRpbWUgcm91dGluZXMgZm9yIHNoaWZ0IGFuZCBkaXZpc2lvbi4g ICovCistICAgICAgbG9uZyBsb25nIGludCBsbG1heCA9IDkyMjMzNzIwMzY4NTQ3NzU4MDdsbDsK Ky0gICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVsbG1heCA9IDE4NDQ2NzQ0MDczNzA5NTUx NjE1dWxsOworLSAgICAgIHJldHVybiAoKGxsIDw8IDYzKSB8IChsbCA+PiA2MykgfCAobGwgPCBp KSB8IChsbCA+IGkpCistCSAgICAgIHwgKGxsbWF4IC8gbGwpIHwgKGxsbWF4ICUgbGwpCistCSAg ICAgIHwgKHVsbCA8PCA2MykgfCAodWxsID4+IDYzKSB8ICh1bGwgPDwgaSkgfCAodWxsID4+IGkp CistCSAgICAgIHwgKHVsbG1heCAvIHVsbCkgfCAodWxsbWF4ICUgdWxsKSk7CistICA7CistICBy ZXR1cm4gMDsKKy19CistCistX0FDRU9GCistaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyIK Ky10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY3ZfdHlwZV91bnNpZ25l ZF9sb25nX2xvbmdfaW50PW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5l cnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAgY29uZnRlc3QkYWNf ZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQ7OworLSAgICAgZXNhYyA7OworLWVzYWMKKy1maQorLXsg cHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19j dl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZ19pbnQiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19j dl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZ19pbnQiID4mNjsgfQorLSAgaWYgdGVzdCAkYWNfY3Zf dHlwZV91bnNpZ25lZF9sb25nX2xvbmdfaW50ID0geWVzOyB0aGVuCistCistcHJpbnRmICIlc1xu IiAiI2RlZmluZSBIQVZFX1VOU0lHTkVEX0xPTkdfTE9OR19JTlQgMSIgPj5jb25mZGVmcy5oCist CistICBmaQorLQorLQorLQorLQorLSAgaWYgdGVzdCAkZ2xfY3ZfaGVhZGVyX2ludHR5cGVzX2gg PSBubyAmJiB0ZXN0ICRnbF9jdl9oZWFkZXJfc3RkaW50X2ggPSBubzsgdGhlbgorLQorLSAgICB0 ZXN0ICRhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZ19pbnQgPSB5ZXMgXAorLSAgICAgICYm IGFjX3R5cGU9J3Vuc2lnbmVkIGxvbmcgbG9uZycgXAorLSAgICAgIHx8IGFjX3R5cGU9J3Vuc2ln bmVkIGxvbmcnCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSB1aW50bWF4X3QgJGFjX3R5cGUi ID4+Y29uZmRlZnMuaAorLQorLSAgZWxzZQorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFW RV9VSU5UTUFYX1QgMSIgPj5jb25mZGVmcy5oCistCistICBmaQorLQorLQorLQorLQorLQorLQor LQorLSAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXRocmVhZHMgd2FzIGdpdmVuLgorLWlmIHRl c3QgJHtlbmFibGVfdGhyZWFkcyt5fQorLXRoZW4gOgorLSAgZW5hYmxldmFsPSRlbmFibGVfdGhy ZWFkczsgZ2xfdXNlX3RocmVhZHM9JGVuYWJsZXZhbAorLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBpZiB0ZXN0IC1uICIkZ2xfdXNlX3RocmVhZHNfZGVmYXVsdCI7IHRoZW4KKy0gICAgICAgZ2xf dXNlX3RocmVhZHM9IiRnbF91c2VfdGhyZWFkc19kZWZhdWx0IgorLSAgICAgZWxzZQorLSAgICAg ICBjYXNlICIkaG9zdF9vcyIgaW4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvc2YqKSBnbF91c2VfdGhyZWFkcz1ubyA7OworLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN5Z3dpbiopCistICAgICAgICAgICAgICAgY2FzZSBgdW5hbWUgLXJgIGluCist ICAgICAgICAgICAgICAgICAxLlswLTVdLiopIGdsX3VzZV90aHJlYWRzPW5vIDs7CistICAgICAg ICAgICAgICAgICAqKSAgICAgICAgIGdsX3VzZV90aHJlYWRzPXllcyA7OworLSAgICAgICAgICAg ICAgIGVzYWMKKy0gICAgICAgICAgICAgICA7OworLSAgICAgICAgICAgICAgICAgIG1pbmd3KikK Ky0gICAgICAgICAgICAgICBjYXNlICIkZ2xfdXNlX3dpbnB0aHJlYWRzX2RlZmF1bHQiIGluCist ICAgICAgICAgICAgICAgICB5ZXMpIGdsX3VzZV90aHJlYWRzPXBvc2l4IDs7CistICAgICAgICAg ICAgICAgICBubykgIGdsX3VzZV90aHJlYWRzPXdpbmRvd3MgOzsKKy0gICAgICAgICAgICAgICAg ICopICAgZ2xfdXNlX3RocmVhZHM9eWVzIDs7CistICAgICAgICAgICAgICAgZXNhYworLSAgICAg ICAgICAgICAgIDs7CistICAgICAgICAgKikgICAgZ2xfdXNlX3RocmVhZHM9eWVzIDs7CistICAg ICAgIGVzYWMKKy0gICAgIGZpCistICAgICA7OworLWVzYWMKKy1maQorLQorLSAgaWYgdGVzdCAi JGdsX3VzZV90aHJlYWRzIiA9IHllcyBcCistICAgICB8fCB0ZXN0ICIkZ2xfdXNlX3RocmVhZHMi ID0gaXNvYyBcCistICAgICB8fCB0ZXN0ICIkZ2xfdXNlX3RocmVhZHMiID0gcG9zaXggXAorLSAg ICAgfHwgdGVzdCAiJGdsX3VzZV90aHJlYWRzIiA9IGlzb2MrcG9zaXg7IHRoZW4KKy0gICAgIyBG b3IgdXNpbmcgPHRocmVhZHMuaD4gb3IgPHB0aHJlYWQuaD46CistCistCistICBpZiB0ZXN0IC16 ICIkZ2xfYW55dGhyZWFkbGliX2Vhcmx5X2RvbmUiOyB0aGVuCistICAgIGNhc2UgIiRob3N0X29z IiBpbgorLSAgICAgIG9zZiopCistICAgICAgICAjIE9uIE9TRi8xLCB0aGUgY29tcGlsZXIgbmVl ZHMgdGhlIGZsYWcgLURfUkVFTlRSQU5UIHNvIHRoYXQgaXQKKy0gICAgICAgICMgZ3Jva3MgPHB0 aHJlYWQuaD4uIGNjIGFsc28gdW5kZXJzdGFuZHMgdGhlIGZsYWcgLXB0aHJlYWQsIGJ1dAorLSAg ICAgICAgIyB3ZSBkb24ndCB1c2UgaXQgYmVjYXVzZSAxLiBnY2MtMi45NSBkb2Vzbid0IHVuZGVy c3RhbmQgLXB0aHJlYWQsCistICAgICAgICAjIDIuIHB1dHRpbmcgYSBmbGFnIGludG8gQ1BQRkxB R1MgdGhhdCBoYXMgYW4gZWZmZWN0IG9uIHRoZSBsaW5rZXIKKy0gICAgICAgICMgY2F1c2VzIHRo ZSBBQ19MSU5LX0lGRUxTRSB0ZXN0IGJlbG93IHRvIHN1Y2NlZWQgdW5leHBlY3RlZGx5LAorLSAg ICAgICAgIyBsZWFkaW5nIHRvIHdyb25nIHZhbHVlcyBvZiBMSUJUSFJFQUQgYW5kIExUTElCVEhS RUFELgorLSAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9SRUVOVFJBTlQiCistICAgICAg ICA7OworLSAgICBlc2FjCistICAgICMgU29tZSBzeXN0ZW1zIG9wdGltaXplIGZvciBzaW5nbGUt dGhyZWFkZWQgcHJvZ3JhbXMgYnkgZGVmYXVsdCwgYW5kCistICAgICMgbmVlZCBzcGVjaWFsIGZs YWdzIHRvIGRpc2FibGUgdGhlc2Ugb3B0aW1pemF0aW9ucy4gRm9yIGV4YW1wbGUsIHRoZQorLSAg ICAjIGRlZmluaXRpb24gb2YgJ2Vycm5vJyBpbiA8ZXJybm8uaD4uCistICAgIGNhc2UgIiRob3N0 X29zIiBpbgorLSAgICAgIGFpeCogfCBmcmVlYnNkKikgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9U SFJFQURfU0FGRSIgOzsKKy0gICAgICBzb2xhcmlzKikgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9S RUVOVFJBTlQiIDs7CistICAgIGVzYWMKKy0gICAgZ2xfYW55dGhyZWFkbGliX2Vhcmx5X2RvbmU9 ZG9uZQorLSAgZmkKKy0KKy0gIGZpCistCistCistCistCistCistCistCistICBnbF90aHJlYWRz X2FwaT1ub25lCistICBMSUJUSFJFQUQ9CistICBMVExJQlRIUkVBRD0KKy0gIExJQk1VTFRJVEhS RUFEPQorLSAgTFRMSUJNVUxUSVRIUkVBRD0KKy0gIGlmIHRlc3QgIiRnbF91c2VfdGhyZWFkcyIg IT0gbm87IHRoZW4KKy0KKy0KKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGltcG9ydGVkIHN5bWJvbHMgY2FuIGJlIGRlY2xh cmVkIHdlYWsiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgd2hldGhlciBpbXBvcnRlZCBzeW1i b2xzIGNhbiBiZSBkZWNsYXJlZCB3ZWFrLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2dsX2N2X2hh dmVfd2Vhayt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSBjYXNlICIkaG9zdF9vcyIgaW4KKy0gICAgICAgY3lnd2luKikK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9jdl9oYXZlX3dlYWs9Imd1 ZXNzaW5nIG5vIgorLSAgICAgICAgIDs7CistICAgICAgICopCistICAgICAgICAgZ2xfY3ZfaGF2 ZV93ZWFrPW5vCistICAgICAgICAgICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+ Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1leHRlcm4gdm9pZCB4 eXp6eSAoKTsKKy0jcHJhZ21hIHdlYWsgeHl6enkKKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy14 eXp6eSgpOworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5 X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6CistICBnbF9jdl9oYXZlX3dlYWs9bWF5YmUKKy1maQor LXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVh bSBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICAg aWYgdGVzdCAkZ2xfY3ZfaGF2ZV93ZWFrID0gbWF5YmU7IHRoZW4KKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcworLXRoZW4g OgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF T0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistI2lmZGVmIF9f RUxGX18KKy0gICAgICAgICAgICAgICAgIEV4dGVuc2libGUgTGlua2luZyBGb3JtYXQKKy0gICAg ICAgICAgICAgICAgICNlbmRpZgorLQorLV9BQ0VPRgorLWlmIChldmFsICIkYWNfY3BwIGNvbmZ0 ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUF9UUkFESVRJT05BTCAiRXh0ZW5zaWJsZSBM aW5raW5nIEZvcm1hdCIgPi9kZXYvbnVsbCAyPiYxCistdGhlbiA6CistICBnbF9jdl9oYXZlX3dl YWs9Imd1ZXNzaW5nIHllcyIKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgZ2xfY3ZfaGF2ZV93 ZWFrPSJndWVzc2luZyBubyIgOzsKKy1lc2FjCistZmkKKy1ybSAtcmYgY29uZnRlc3QqCistCist CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv bmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCistI2luY2x1ZGUgPHN0 ZGlvLmg+CistI3ByYWdtYSB3ZWFrIGZwdXRzCistaW50IG1haW4gKCkKKy17CistICByZXR1cm4g KGZwdXRzID09IE5VTEwpOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5F Tk8iCistdGhlbiA6CistICBnbF9jdl9oYXZlX3dlYWs9eWVzCistZWxzZSBjYXNlIGUgaW4gIygK Ky0gIGUpIGdsX2N2X2hhdmVfd2Vhaz1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgKi5j b3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwK Ky0gIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7 CistZXNhYworLWZpCistCistICAgICAgICAgZmkKKy0gICAgICAgICA7OworLSAgICAgZXNhYwor LSAgICAgICAgICBjYXNlICIgJExERkxBR1MgIiBpbgorLSAgICAgICAqIiAtc3RhdGljICIqKSBn bF9jdl9oYXZlX3dlYWs9bm8gOzsKKy0gICAgIGVzYWMKKy0gICAgICAgICAgICAgICAgICAgIGNh c2UgIiRnbF9jdl9oYXZlX3dlYWsiIGluCistICAgICAgICp5ZXMpCistICAgICAgICAgY2FzZSAi JGhvc3Rfb3MiIGluCistICAgICAgICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSogfCBtaWRuaWdo dGJzZCopCistICAgICAgICAgICAgIDogPiBjb25mdGVzdDEuYworLSAgICAgICAgICAgICAkQ0Mg JENQUEZMQUdTICRDRkxBR1MgJExERkxBR1MgLWZQSUMgLXNoYXJlZCAtbyBsaWJlbXB0eS5zbyBj b25mdGVzdDEuYyAtbHB0aHJlYWQgPiY1IDI+JjEKKy0gICAgICAgICAgICAgY2F0IDw8RU9GID4g Y29uZnRlc3QyLmMKKy0jaW5jbHVkZSA8cHRocmVhZC5oPgorLSNwcmFnbWEgd2VhayBwdGhyZWFk X211dGV4YXR0cl9nZXR0eXBlCistaW50IG1haW4gKCkKKy17CistICByZXR1cm4gKHB0aHJlYWRf bXV0ZXhhdHRyX2dldHR5cGUgIT0gTlVMTCk7CistfQorLUVPRgorLSAgICAgICAgICAgICAkQ0Mg JENQUEZMQUdTICRDRkxBR1MgJExERkxBR1MgLW8gY29uZnRlc3QgY29uZnRlc3QyLmMgbGliZW1w dHkuc28gPiY1IDI+JjEgXAorLSAgICAgICAgICAgICAgIHx8IGdsX2N2X2hhdmVfd2Vhaz1ubwor LSAgICAgICAgICAgICBybSAtZiBjb25mdGVzdDEuYyBsaWJlbXB0eS5zbyBjb25mdGVzdDIuYyBj b25mdGVzdAorLSAgICAgICAgICAgICA7OworLSAgICAgICAgIGVzYWMKKy0gICAgICAgICA7Owor LSAgICAgZXNhYworLSAgICAgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfaGF2ZV93ZWFrIiA+JjUKKy1w cmludGYgIiVzXG4iICIkZ2xfY3ZfaGF2ZV93ZWFrIiA+JjY7IH0KKy0gIGNhc2UgIiRnbF9jdl9o YXZlX3dlYWsiIGluCistICAgICp5ZXMpCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZF X1dFQUtfU1lNQk9MUyAxIiA+PmNvbmZkZWZzLmgKKy0KKy0gICAgICA7OworLSAgZXNhYworLQor LSAgICBpZiBjYXNlICIkZ2xfY3ZfaGF2ZV93ZWFrIiBpbiAqeWVzKSB0cnVlOzsgKikgZmFsc2U7 OyBlc2FjOyB0aGVuCistCistICAgICAgOgorLSAgICBmaQorLSAgICBpZiB0ZXN0ICIkZ2xfdXNl X3RocmVhZHMiID0gaXNvYyB8fCB0ZXN0ICIkZ2xfdXNlX3RocmVhZHMiID0gaXNvYytwb3NpeDsg dGhlbgorLQorLSAgICAgIGdsX2hhdmVfaXNvY190aHJlYWRzPSIkYWNfY3ZfaGVhZGVyX3RocmVh ZHNfaCIKKy0gICAgZmkKKy0gICAgaWYgdGVzdCAiJGdsX3VzZV90aHJlYWRzIiA9IHllcyBcCist ICAgICAgIHx8IHRlc3QgIiRnbF91c2VfdGhyZWFkcyIgPSBwb3NpeCBcCistICAgICAgIHx8IHRl c3QgIiRnbF91c2VfdGhyZWFkcyIgPSBpc29jK3Bvc2l4OyB0aGVuCistCistCistICBpZiB0ZXN0 IC16ICIkZ2xfcHRocmVhZGxpYl9ib2R5X2RvbmUiOyB0aGVuCistICAgIGdsX3B0aHJlYWRfYXBp PW5vCistICAgIExJQlBUSFJFQUQ9CistICAgIExJQlBNVUxUSVRIUkVBRD0KKy0gICAgIyBPbiBP U0YvMSwgdGhlIGNvbXBpbGVyIG5lZWRzIHRoZSBmbGFnIC1wdGhyZWFkIG9yIC1EX1JFRU5UUkFO VCBzbyB0aGF0CistICAgICMgaXQgZ3Jva3MgPHB0aHJlYWQuaD4uIEl0J3MgYWRkZWQgYWJvdmUs IGluIGdsX0FOWVRIUkVBRExJQl9FQVJMWS4KKy0gICAgYWNfZm5fY19jaGVja19oZWFkZXJfY29t cGlsZSAiJExJTkVOTyIgInB0aHJlYWQuaCIgImFjX2N2X2hlYWRlcl9wdGhyZWFkX2giICIkYWNf aW5jbHVkZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9wdGhyZWFkX2giID0g eHllcworLXRoZW4gOgorLSAgZ2xfaGF2ZV9wdGhyZWFkX2g9eWVzCistZWxzZSBjYXNlIGUgaW4g IygKKy0gIGUpIGdsX2hhdmVfcHRocmVhZF9oPW5vIDs7CistZXNhYworLWZpCistCistICAgIGlm IHRlc3QgIiRnbF9oYXZlX3B0aHJlYWRfaCIgPSB5ZXM7IHRoZW4KKy0gICAgICAjIE90aGVyIHBv c3NpYmxlIHRlc3RzOgorLSAgICAgICMgICAtbHB0aHJlYWRzIChGU1UgdGhyZWFkcywgUEN0aHJl YWRzKQorLSAgICAgICMgICAtbGd0aHJlYWRzCistICAgICAgIyBUZXN0IHdoZXRoZXIgYm90aCBw dGhyZWFkX211dGV4X2xvY2sgYW5kIHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQgZXhpc3QKKy0gICAg ICAjIGluIGxpYmMuIElSSVggNi41IGhhcyB0aGUgZmlyc3Qgb25lIGluIGJvdGggbGliYyBhbmQg bGlicHRocmVhZCwgYnV0CistICAgICAgIyB0aGUgc2Vjb25kIG9uZSBvbmx5IGluIGxpYnB0aHJl YWQsIGFuZCBsb2NrLmMgbmVlZHMgaXQuCistICAgICAgIworLSAgICAgICMgSWYgLXB0aHJlYWQg d29ya3MsIHByZWZlciBpdCB0byAtbHB0aHJlYWQsIHNpbmNlIFVidW50dSAxNC4wNAorLSAgICAg ICMgbmVlZHMgLXB0aHJlYWQgZm9yIHNvbWUgcmVhc29uLiAgU2VlOgorLSAgICAgICMgaHR0cHM6 Ly9saXN0cy5nbnUub3JnL3IvYnVnLWdudWxpYi8yMDE0LTA5L21zZzAwMDIzLmh0bWwKKy0gICAg ICBzYXZlX0xJQlM9JExJQlMKKy0gICAgICBmb3IgZ2xfcHRocmVhZCBpbiAnJyAnLXB0aHJlYWQn OyBkbworLSAgICAgICAgTElCUz0iJExJQlMgJGdsX3B0aHJlYWQiCistICAgICAgICBjYXQgY29u ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmgu ICAqLworLSNpbmNsdWRlIDxwdGhyZWFkLmg+CistICAgICAgICAgICAgICAgcHRocmVhZF9tdXRl eF90IG07CistICAgICAgICAgICAgICAgcHRocmVhZF9tdXRleGF0dHJfdCBtYTsKKy0KKy1pbnQK Ky1tYWluICh2b2lkKQorLXsKKy1wdGhyZWFkX211dGV4X2xvY2sgKCZtKTsKKy0gICAgICAgICAg ICAgICBwdGhyZWFkX211dGV4YXR0cl9pbml0ICgmbWEpOworLSAgOworLSAgcmV0dXJuIDA7Cist fQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6CistICBn bF9wdGhyZWFkX2FwaT15ZXMKKy0gICAgICAgICAgIExJQlBUSFJFQUQ9JGdsX3B0aHJlYWQKKy0g ICAgICAgICAgIExJQlBNVUxUSVRIUkVBRD0kZ2xfcHRocmVhZAorLWZpCistcm0gLWYgY29yZSBj b25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAgY29u ZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExJQlM9JHNhdmVfTElC UworLSAgICAgICAgdGVzdCAkZ2xfcHRocmVhZF9hcGkgPSB5ZXMgJiYgYnJlYWsKKy0gICAgICBk b25lCistICAgICAgZWNobyAiJGFzX21lOjkzNjA6IGdsX3B0aHJlYWRfYXBpPSRnbF9wdGhyZWFk X2FwaSIgPiY1CistICAgICAgZWNobyAiJGFzX21lOjkzNjE6IExJQlBUSFJFQUQ9JExJQlBUSFJF QUQiID4mNQorLQorLSAgICAgIGdsX3B0aHJlYWRfaW5fZ2xpYmM9bm8KKy0gICAgICAjIE9uIExp bnV4IHdpdGggZ2xpYmMgPj0gMi4zNCwgbGliYyBjb250YWlucyB0aGUgZnVsbHkgZnVuY3Rpb25h bAorLSAgICAgICMgcHRocmVhZCBmdW5jdGlvbnMuCistICAgICAgY2FzZSAiJGhvc3Rfb3MiIGlu CistICAgICAgICBsaW51eCopCistICAgICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg PmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistI2luY2x1ZGUgPGZl YXR1cmVzLmg+CistICAgICAgICAgICAgICNpZmRlZiBfX0dOVV9MSUJSQVJZX18KKy0gICAgICAg ICAgICAgICNpZiAoX19HTElCQ19fID09IDIgJiYgX19HTElCQ19NSU5PUl9fID49IDM0KSB8fCAo X19HTElCQ19fID4gMikKKy0gICAgICAgICAgICAgICBMdWNreSB1c2VyCistICAgICAgICAgICAg ICAjZW5kaWYKKy0gICAgICAgICAgICAgI2VuZGlmCistCistX0FDRU9GCistaWYgKGV2YWwgIiRh Y19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQX1RSQURJVElPTkFMICJM dWNreSB1c2VyIiA+L2Rldi9udWxsIDI+JjEKKy10aGVuIDoKKy0gIGdsX3B0aHJlYWRfaW5fZ2xp YmM9eWVzCistZmkKKy1ybSAtcmYgY29uZnRlc3QqCistCistICAgICAgICAgIDs7CistICAgICAg ZXNhYworLSAgICAgIGVjaG8gIiRhc19tZTo5Mzg3OiBnbF9wdGhyZWFkX2luX2dsaWJjPSRnbF9w dGhyZWFkX2luX2dsaWJjIiA+JjUKKy0KKy0gICAgICAjIFRlc3QgZm9yIGxpYnB0aHJlYWQgYnkg bG9va2luZyBmb3IgcHRocmVhZF9raWxsLiAoTm90IHB0aHJlYWRfc2VsZiwKKy0gICAgICAjIHNp bmNlIGl0IGlzIGRlZmluZWQgYXMgYSBtYWNybyBvbiBPU0YvMS4pCistICAgICAgaWYgdGVzdCAk Z2xfcHRocmVhZF9hcGkgPSB5ZXMgJiYgdGVzdCAteiAiJExJQlBUSFJFQUQiOyB0aGVuCistICAg ICAgICAjIFRoZSBwcm9ncmFtIGxpbmtzIGZpbmUgd2l0aG91dCBsaWJwdGhyZWFkLiBCdXQgaXQg bWF5IGFjdHVhbGx5CistICAgICAgICAjIG5lZWQgdG8gbGluayB3aXRoIGxpYnB0aHJlYWQgaW4g b3JkZXIgdG8gY3JlYXRlIG11bHRpcGxlIHRocmVhZHMuCistICAgICAgICB7IHByaW50ZiAiJXNc biIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHB0aHJlYWRfa2ls bCBpbiAtbHB0aHJlYWQiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHB0aHJlYWRfa2ls bCBpbiAtbHB0aHJlYWQuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfbGliX3B0aHJlYWRf cHRocmVhZF9raWxsK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2Cist ZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKKy1M SUJTPSItbHB0aHJlYWQgICRMSUJTIgorLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0 ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCistLyogT3ZlcnJpZGUgYW55 IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCistICAgVXNlIGNoYXIg YmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCistICAgYnVp bHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5Lgor LSAgIFRoZSAnZXh0ZXJuICJDIicgaXMgZm9yIGJ1aWxkcyBieSBDKysgY29tcGlsZXJzOworLSAg IGFsdGhvdWdoIHRoaXMgaXMgbm90IGdlbmVyYWxseSBzdXBwb3J0ZWQgaW4gQyBjb2RlIHN1cHBv cnRpbmcgaXQgaGVyZQorLSAgIGhhcyBsaXR0bGUgY29zdCBhbmQgc29tZSBwcmFjdGljYWwgYmVu ZWZpdCAoc3IgMTEwNTMyKS4gICovCistI2lmZGVmIF9fY3BsdXNwbHVzCistZXh0ZXJuICJDIgor LSNlbmRpZgorLWNoYXIgcHRocmVhZF9raWxsICh2b2lkKTsKKy1pbnQKKy1tYWluICh2b2lkKQor LXsKKy1yZXR1cm4gcHRocmVhZF9raWxsICgpOworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9B Q0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19jdl9s aWJfcHRocmVhZF9wdGhyZWFkX2tpbGw9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFj X2N2X2xpYl9wdGhyZWFkX3B0aHJlYWRfa2lsbD1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNv cmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBcCistICAg IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistTElCUz0kYWNfY2hlY2tfbGli X3NhdmVfTElCUyA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGwi ID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGwiID4m NjsgfQorLWlmIHRlc3QgIngkYWNfY3ZfbGliX3B0aHJlYWRfcHRocmVhZF9raWxsIiA9IHh5ZXMK Ky10aGVuIDoKKy0gIGlmIHRlc3QgJGdsX3B0aHJlYWRfaW5fZ2xpYmMgPSB5ZXM7IHRoZW4KKy0g ICAgICAgICAgICAgTElCUE1VTFRJVEhSRUFEPQorLSAgICAgICAgICAgZWxzZQorLSAgICAgICAg ICAgICBMSUJQTVVMVElUSFJFQUQ9LWxwdGhyZWFkCistICAgICAgICAgICAgICMgT24gU29sYXJp cyBhbmQgSFAtVVgsIG1vc3QgcHRocmVhZCBmdW5jdGlvbnMgZXhpc3QgYWxzbyBpbiBsaWJjLgor LSAgICAgICAgICAgICAjIFRoZXJlZm9yZSBwdGhyZWFkX2luX3VzZSgpIG5lZWRzIHRvIGFjdHVh bGx5IHRyeSB0byBjcmVhdGUgYQorLSAgICAgICAgICAgICAjIHRocmVhZDogcHRocmVhZF9jcmVh dGUgZnJvbSBsaWJjIHdpbGwgZmFpbCwgd2hlcmVhcworLSAgICAgICAgICAgICAjIHB0aHJlYWRf Y3JlYXRlIHdpbGwgYWN0dWFsbHkgY3JlYXRlIGEgdGhyZWFkLgorLSAgICAgICAgICAgICAjIE9u IFNvbGFyaXMgMTAgb3IgbmV3ZXIsIHRoaXMgdGVzdCBpcyBubyBsb25nZXIgbmVlZGVkLCBiZWNh dXNlCistICAgICAgICAgICAgICMgbGliYyBjb250YWlucyB0aGUgZnVsbHkgZnVuY3Rpb25hbCBw dGhyZWFkIGZ1bmN0aW9ucy4KKy0gICAgICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCistICAg ICAgICAgICAgICAgc29sYXJpcyB8IHNvbGFyaXMyLjEtOSB8IHNvbGFyaXMyLjEtOS4qIHwgaHB1 eCopCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBQVEhSRUFEX0lOX1VTRV9ERVRFQ1RJT05f SEFSRCAxIiA+PmNvbmZkZWZzLmgKKy0KKy0gICAgICAgICAgICAgZXNhYworLSAgICAgICAgICAg ZmkKKy0KKy1maQorLQorLSAgICAgIGVsaWYgdGVzdCAkZ2xfcHRocmVhZF9hcGkgIT0geWVzOyB0 aGVuCistICAgICAgICAjIFNvbWUgbGlicmFyeSBpcyBuZWVkZWQuIFRyeSBsaWJwdGhyZWFkIGFu ZCBsaWJjX3IuCistICAgICAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogY2hlY2tpbmcgZm9yIHB0aHJlYWRfa2lsbCBpbiAtbHB0aHJlYWQiID4mNQorLXBy aW50ZiAlcyAiY2hlY2tpbmcgZm9yIHB0aHJlYWRfa2lsbCBpbiAtbHB0aHJlYWQuLi4gIiA+JjY7 IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfbGliX3B0aHJlYWRfcHRocmVhZF9raWxsK3l9CistdGhlbiA6 CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUp IGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKKy1MSUJTPSItbHB0aHJlYWQgICRMSUJTIgor LWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29u ZmRlZnMuaC4gICovCistCistLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUg dG8gYXZvaWQgYW4gZXJyb3IuCistICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2gg dGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCistICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1l bnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LgorLSAgIFRoZSAnZXh0ZXJuICJDIicgaXMg Zm9yIGJ1aWxkcyBieSBDKysgY29tcGlsZXJzOworLSAgIGFsdGhvdWdoIHRoaXMgaXMgbm90IGdl bmVyYWxseSBzdXBwb3J0ZWQgaW4gQyBjb2RlIHN1cHBvcnRpbmcgaXQgaGVyZQorLSAgIGhhcyBs aXR0bGUgY29zdCBhbmQgc29tZSBwcmFjdGljYWwgYmVuZWZpdCAoc3IgMTEwNTMyKS4gICovCist I2lmZGVmIF9fY3BsdXNwbHVzCistZXh0ZXJuICJDIgorLSNlbmRpZgorLWNoYXIgcHRocmVhZF9r aWxsICh2b2lkKTsKKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1yZXR1cm4gcHRocmVhZF9raWxs ICgpOworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xp bmsgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGw9 eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2N2X2xpYl9wdGhyZWFkX3B0aHJlYWRf a2lsbD1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0 LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25m dGVzdC4kYWNfZXh0CistTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUyA7OworLWVzYWMKKy1m aQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 ICRhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGwiID4mNQorLXByaW50ZiAiJXNcbiIgIiRh Y19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGwiID4mNjsgfQorLWlmIHRlc3QgIngkYWNfY3Zf bGliX3B0aHJlYWRfcHRocmVhZF9raWxsIiA9IHh5ZXMKKy10aGVuIDoKKy0gIGdsX3B0aHJlYWRf YXBpPXllcworLSAgICAgICAgICAgTElCUFRIUkVBRD0tbHB0aHJlYWQKKy0gICAgICAgICAgIExJ QlBNVUxUSVRIUkVBRD0tbHB0aHJlYWQKKy1maQorLQorLSAgICAgICAgaWYgdGVzdCAkZ2xfcHRo cmVhZF9hcGkgIT0geWVzOyB0aGVuCistICAgICAgICAgICMgRm9yIEZyZWVCU0QgNC4KKy0gICAg ICAgICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciBwdGhyZWFkX2tpbGwgaW4gLWxjX3IiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcg Zm9yIHB0aHJlYWRfa2lsbCBpbiAtbGNfci4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9s aWJfY19yX3B0aHJlYWRfa2lsbCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAi ID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRM SUJTCistTElCUz0iLWxjX3IgICRMSUJTIgorLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv bmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCistLyogT3ZlcnJpZGUg YW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCistICAgVXNlIGNo YXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCistICAg YnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5 LgorLSAgIFRoZSAnZXh0ZXJuICJDIicgaXMgZm9yIGJ1aWxkcyBieSBDKysgY29tcGlsZXJzOwor LSAgIGFsdGhvdWdoIHRoaXMgaXMgbm90IGdlbmVyYWxseSBzdXBwb3J0ZWQgaW4gQyBjb2RlIHN1 cHBvcnRpbmcgaXQgaGVyZQorLSAgIGhhcyBsaXR0bGUgY29zdCBhbmQgc29tZSBwcmFjdGljYWwg YmVuZWZpdCAoc3IgMTEwNTMyKS4gICovCistI2lmZGVmIF9fY3BsdXNwbHVzCistZXh0ZXJuICJD IgorLSNlbmRpZgorLWNoYXIgcHRocmVhZF9raWxsICh2b2lkKTsKKy1pbnQKKy1tYWluICh2b2lk KQorLXsKKy1yZXR1cm4gcHRocmVhZF9raWxsICgpOworLSAgOworLSAgcmV0dXJuIDA7CistfQor LV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19j dl9saWJfY19yX3B0aHJlYWRfa2lsbD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNf Y3ZfbGliX2Nfcl9wdGhyZWFkX2tpbGw9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gXAorLSAgICBjb25m dGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLUxJQlM9JGFjX2NoZWNrX2xpYl9zYXZl X0xJQlMgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2Nfcl9wdGhyZWFkX2tpbGwiID4mNQorLXBy aW50ZiAiJXNcbiIgIiRhY19jdl9saWJfY19yX3B0aHJlYWRfa2lsbCIgPiY2OyB9CistaWYgdGVz dCAieCRhY19jdl9saWJfY19yX3B0aHJlYWRfa2lsbCIgPSB4eWVzCistdGhlbiA6CistICBnbF9w dGhyZWFkX2FwaT15ZXMKKy0gICAgICAgICAgICAgTElCUFRIUkVBRD0tbGNfcgorLSAgICAgICAg ICAgICBMSUJQTVVMVElUSFJFQUQ9LWxjX3IKKy1maQorLQorLSAgICAgICAgZmkKKy0gICAgICBm aQorLSAgICAgIGVjaG8gIiRhc19tZTo5NTY1OiBMSUJQTVVMVElUSFJFQUQ9JExJQlBNVUxUSVRI UkVBRCIgPiY1CistICAgIGZpCistICAgIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIFBPU0lYIHRocmVhZHMgQVBJIGlzIGF2YWls YWJsZSIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyB3aGV0aGVyIFBPU0lYIHRocmVhZHMgQVBJ IGlzIGF2YWlsYWJsZS4uLiAiID4mNjsgfQorLSAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfcHRocmVhZF9hcGkiID4mNQorLXByaW50 ZiAiJXNcbiIgIiRnbF9wdGhyZWFkX2FwaSIgPiY2OyB9CistCistCistICAgIGlmIHRlc3QgJGds X3B0aHJlYWRfYXBpID0geWVzOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZF X1BUSFJFQURfQVBJIDEiID4+Y29uZmRlZnMuaAorLQorLSAgICBmaQorLQorLSAgICAgICAgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVm cy5oLiAgKi8KKy0jaW5jbHVkZSA8c2NoZWQuaD4KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1z Y2hlZF95aWVsZCAoKTsKKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19m bl9jX3RyeV9saW5rICIkTElORU5PIgorLXRoZW4gOgorLSAgTElCX1NDSEVEX1lJRUxEPQorLQor LWVsc2UgY2FzZSBlIGluICMoCistICBlKSAgICAgICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzY2hlZF95aWVsZCBpbiAtbHJ0IiA+ JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBzY2hlZF95aWVsZCBpbiAtbHJ0Li4uICIgPiY2 OyB9CistaWYgdGVzdCAke2FjX2N2X2xpYl9ydF9zY2hlZF95aWVsZCt5fQorLXRoZW4gOgorLSAg cHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19j aGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCistTElCUz0iLWxydCAgJExJQlMiCistY2F0IGNvbmZk ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KKy0KKy0vKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBh biBlcnJvci4KKy0gICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJu IHR5cGUgb2YgYSBHQ0MKKy0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5 cGUgd291bGQgc3RpbGwgYXBwbHkuCistICAgVGhlICdleHRlcm4gIkMiJyBpcyBmb3IgYnVpbGRz IGJ5IEMrKyBjb21waWxlcnM7CistICAgYWx0aG91Z2ggdGhpcyBpcyBub3QgZ2VuZXJhbGx5IHN1 cHBvcnRlZCBpbiBDIGNvZGUgc3VwcG9ydGluZyBpdCBoZXJlCistICAgaGFzIGxpdHRsZSBjb3N0 IGFuZCBzb21lIHByYWN0aWNhbCBiZW5lZml0IChzciAxMTA1MzIpLiAgKi8KKy0jaWZkZWYgX19j cGx1c3BsdXMKKy1leHRlcm4gIkMiCistI2VuZGlmCistY2hhciBzY2hlZF95aWVsZCAodm9pZCk7 CistaW50CistbWFpbiAodm9pZCkKKy17CistcmV0dXJuIHNjaGVkX3lpZWxkICgpOworLSAgOwor LSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8i CistdGhlbiA6CistICBhY19jdl9saWJfcnRfc2NoZWRfeWllbGQ9eWVzCistZWxzZSBjYXNlIGUg aW4gIygKKy0gIGUpIGFjX2N2X2xpYl9ydF9zY2hlZF95aWVsZD1ubyA7OworLWVzYWMKKy1maQor LXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVh bSBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistTElCUz0kYWNf Y2hlY2tfbGliX3NhdmVfTElCUyA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcnRfc2NoZWRfeWll bGQiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19jdl9saWJfcnRfc2NoZWRfeWllbGQiID4mNjsg fQorLWlmIHRlc3QgIngkYWNfY3ZfbGliX3J0X3NjaGVkX3lpZWxkIiA9IHh5ZXMKKy10aGVuIDoK Ky0gIExJQl9TQ0hFRF9ZSUVMRD0tbHJ0CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpICAgICAg ICAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgZm9yIHNjaGVkX3lpZWxkIGluIC1scG9zaXg0IiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5n IGZvciBzY2hlZF95aWVsZCBpbiAtbHBvc2l4NC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19j dl9saWJfcG9zaXg0X3NjaGVkX3lpZWxkK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNo ZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2NoZWNrX2xpYl9zYXZlX0xJ QlM9JExJQlMKKy1MSUJTPSItbHBvc2l4NCAgJExJQlMiCistY2F0IGNvbmZkZWZzLmggLSA8PF9B Q0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0vKiBP dmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKy0g ICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBH Q0MKKy0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3Rp bGwgYXBwbHkuCistICAgVGhlICdleHRlcm4gIkMiJyBpcyBmb3IgYnVpbGRzIGJ5IEMrKyBjb21w aWxlcnM7CistICAgYWx0aG91Z2ggdGhpcyBpcyBub3QgZ2VuZXJhbGx5IHN1cHBvcnRlZCBpbiBD IGNvZGUgc3VwcG9ydGluZyBpdCBoZXJlCistICAgaGFzIGxpdHRsZSBjb3N0IGFuZCBzb21lIHBy YWN0aWNhbCBiZW5lZml0IChzciAxMTA1MzIpLiAgKi8KKy0jaWZkZWYgX19jcGx1c3BsdXMKKy1l eHRlcm4gIkMiCistI2VuZGlmCistY2hhciBzY2hlZF95aWVsZCAodm9pZCk7CistaW50CistbWFp biAodm9pZCkKKy17CistcmV0dXJuIHNjaGVkX3lpZWxkICgpOworLSAgOworLSAgcmV0dXJuIDA7 CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6Cist ICBhY19jdl9saWJfcG9zaXg0X3NjaGVkX3lpZWxkPXllcworLWVsc2UgY2FzZSBlIGluICMoCist ICBlKSBhY19jdl9saWJfcG9zaXg0X3NjaGVkX3lpZWxkPW5vIDs7CistZXNhYworLWZpCistcm0g LWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwK Ky0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1MSUJTPSRhY19jaGVj a19saWJfc2F2ZV9MSUJTIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9wb3NpeDRfc2NoZWRfeWll bGQiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19jdl9saWJfcG9zaXg0X3NjaGVkX3lpZWxkIiA+ JjY7IH0KKy1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9wb3NpeDRfc2NoZWRfeWllbGQiID0geHllcwor LXRoZW4gOgorLSAgTElCX1NDSEVEX1lJRUxEPS1scG9zaXg0CistZmkKKy0gOzsKKy1lc2FjCist ZmkKKy0KKy0gICAgICAgOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBj b25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gXAorLSAgICBjb25mdGVzdCRhY19leGVl eHQgY29uZnRlc3QuJGFjX2V4dAorLQorLQorLSAgICBnbF9wdGhyZWFkbGliX2JvZHlfZG9uZT1k b25lCistICBmaQorLQorLSAgICAgIExJQlRIUkVBRD0kTElCUFRIUkVBRCBMVExJQlRIUkVBRD0k TElCUFRIUkVBRAorLSAgICAgIExJQk1VTFRJVEhSRUFEPSRMSUJQTVVMVElUSFJFQUQgTFRMSUJN VUxUSVRIUkVBRD0kTElCUE1VTFRJVEhSRUFECistICAgICAgaWYgdGVzdCAkZ2xfcHRocmVhZF9h cGkgPSB5ZXM7IHRoZW4KKy0gICAgICAgIGlmIHRlc3QgIiRnbF91c2VfdGhyZWFkcyIgPSBpc29j K3Bvc2l4ICYmIHRlc3QgIiRnbF9oYXZlX2lzb2NfdGhyZWFkcyIgPSB5ZXM7IHRoZW4KKy0gICAg ICAgICAgZ2xfdGhyZWFkc19hcGk9J2lzb2MrcG9zaXgnCistCistcHJpbnRmICIlc1xuIiAiI2Rl ZmluZSBVU0VfSVNPQ19BTkRfUE9TSVhfVEhSRUFEUyAxIiA+PmNvbmZkZWZzLmgKKy0KKy0gICAg ICAgICAgTElCVEhSRUFEPSBMVExJQlRIUkVBRD0KKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAg Z2xfdGhyZWFkc19hcGk9cG9zaXgKKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIFVTRV9QT1NJ WF9USFJFQURTIDEiID4+Y29uZmRlZnMuaAorLQorLSAgICAgICAgICBpZiB0ZXN0IC16ICIkTElC TVVMVElUSFJFQUQiICYmIHRlc3QgLXogIiRMVExJQk1VTFRJVEhSRUFEIjsgdGhlbgorLQorLXBy aW50ZiAiJXNcbiIgIiNkZWZpbmUgVVNFX1BPU0lYX1RIUkVBRFNfRlJPTV9MSUJDIDEiID4+Y29u ZmRlZnMuaAorLQorLSAgICAgICAgICBlbHNlCistICAgICAgICAgICAgaWYgY2FzZSAiJGdsX2N2 X2hhdmVfd2VhayIgaW4gKnllcykgdHJ1ZTs7ICopIGZhbHNlOzsgZXNhYzsgdGhlbgorLQorLXBy aW50ZiAiJXNcbiIgIiNkZWZpbmUgVVNFX1BPU0lYX1RIUkVBRFNfV0VBSyAxIiA+PmNvbmZkZWZz LmgKKy0KKy0gICAgICAgICAgICAgIExJQlRIUkVBRD0gTFRMSUJUSFJFQUQ9CistICAgICAgICAg ICAgZWxzZQorLSAgICAgICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCistICAgICAgICAgICAg ICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KiB8IG1pZG5pZ2h0YnNkKikKKy0gICAgICAgICAgICAg ICAgICBpZiB0ZXN0ICJ4JExJQlRIUkVBRCIgIT0gIngkTElCTVVMVElUSFJFQUQiOyB0aGVuCist CistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBQVEhSRUFEX0lOX1VTRV9ERVRFQ1RJT05fSEFSRCAx IiA+PmNvbmZkZWZzLmgKKy0KKy0gICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAg ICAgIDs7CistICAgICAgICAgICAgICBlc2FjCistICAgICAgICAgICAgZmkKKy0gICAgICAgICAg ZmkKKy0gICAgICAgIGZpCistICAgICAgZmkKKy0gICAgZmkKKy0gICAgaWYgdGVzdCAkZ2xfdGhy ZWFkc19hcGkgPSBub25lOyB0aGVuCistICAgICAgaWYgdGVzdCAiJGdsX3VzZV90aHJlYWRzIiA9 IGlzb2MgJiYgdGVzdCAiJGdsX2hhdmVfaXNvY190aHJlYWRzIiA9IHllczsgdGhlbgorLQorLQor LQorLSAgaWYgdGVzdCAteiAiJGdsX3N0ZHRocmVhZGxpYl9ib2R5X2RvbmUiOyB0aGVuCistCist CistICAgIGNhc2UgIiRob3N0X29zIiBpbgorLSAgICAgIG1pbmd3KikKKy0gICAgICAgIExJQlNU RFRIUkVBRD0KKy0gICAgICAgIDs7CistICAgICAgKikKKy0KKy0KKy0gIGlmIHRlc3QgLXogIiRn bF9wdGhyZWFkbGliX2JvZHlfZG9uZSI7IHRoZW4KKy0gICAgZ2xfcHRocmVhZF9hcGk9bm8KKy0g ICAgTElCUFRIUkVBRD0KKy0gICAgTElCUE1VTFRJVEhSRUFEPQorLSAgICAjIE9uIE9TRi8xLCB0 aGUgY29tcGlsZXIgbmVlZHMgdGhlIGZsYWcgLXB0aHJlYWQgb3IgLURfUkVFTlRSQU5UIHNvIHRo YXQKKy0gICAgIyBpdCBncm9rcyA8cHRocmVhZC5oPi4gSXQncyBhZGRlZCBhYm92ZSwgaW4gZ2xf QU5ZVEhSRUFETElCX0VBUkxZLgorLSAgICBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIk TElORU5PIiAicHRocmVhZC5oIiAiYWNfY3ZfaGVhZGVyX3B0aHJlYWRfaCIgIiRhY19pbmNsdWRl c19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3B0aHJlYWRfaCIgPSB4eWVzCist dGhlbiA6CistICBnbF9oYXZlX3B0aHJlYWRfaD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkgZ2xfaGF2ZV9wdGhyZWFkX2g9bm8gOzsKKy1lc2FjCistZmkKKy0KKy0gICAgaWYgdGVzdCAi JGdsX2hhdmVfcHRocmVhZF9oIiA9IHllczsgdGhlbgorLSAgICAgICMgT3RoZXIgcG9zc2libGUg dGVzdHM6CistICAgICAgIyAgIC1scHRocmVhZHMgKEZTVSB0aHJlYWRzLCBQQ3RocmVhZHMpCist ICAgICAgIyAgIC1sZ3RocmVhZHMKKy0gICAgICAjIFRlc3Qgd2hldGhlciBib3RoIHB0aHJlYWRf bXV0ZXhfbG9jayBhbmQgcHRocmVhZF9tdXRleGF0dHJfaW5pdCBleGlzdAorLSAgICAgICMgaW4g bGliYy4gSVJJWCA2LjUgaGFzIHRoZSBmaXJzdCBvbmUgaW4gYm90aCBsaWJjIGFuZCBsaWJwdGhy ZWFkLCBidXQKKy0gICAgICAjIHRoZSBzZWNvbmQgb25lIG9ubHkgaW4gbGlicHRocmVhZCwgYW5k IGxvY2suYyBuZWVkcyBpdC4KKy0gICAgICAjCistICAgICAgIyBJZiAtcHRocmVhZCB3b3Jrcywg cHJlZmVyIGl0IHRvIC1scHRocmVhZCwgc2luY2UgVWJ1bnR1IDE0LjA0CistICAgICAgIyBuZWVk cyAtcHRocmVhZCBmb3Igc29tZSByZWFzb24uICBTZWU6CistICAgICAgIyBodHRwczovL2xpc3Rz LmdudS5vcmcvci9idWctZ251bGliLzIwMTQtMDkvbXNnMDAwMjMuaHRtbAorLSAgICAgIHNhdmVf TElCUz0kTElCUworLSAgICAgIGZvciBnbF9wdGhyZWFkIGluICcnICctcHRocmVhZCc7IGRvCist ICAgICAgICBMSUJTPSIkTElCUyAkZ2xfcHRocmVhZCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5o IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCist I2luY2x1ZGUgPHB0aHJlYWQuaD4KKy0gICAgICAgICAgICAgICBwdGhyZWFkX211dGV4X3QgbTsK Ky0gICAgICAgICAgICAgICBwdGhyZWFkX211dGV4YXR0cl90IG1hOworLQorLWludAorLW1haW4g KHZvaWQpCisteworLXB0aHJlYWRfbXV0ZXhfbG9jayAoJm0pOworLSAgICAgICAgICAgICAgIHB0 aHJlYWRfbXV0ZXhhdHRyX2luaXQgKCZtYSk7CistICA7CistICByZXR1cm4gMDsKKy19CistX0FD RU9GCistaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGdsX3B0aHJl YWRfYXBpPXllcworLSAgICAgICAgICAgTElCUFRIUkVBRD0kZ2xfcHRocmVhZAorLSAgICAgICAg ICAgTElCUE1VTFRJVEhSRUFEPSRnbF9wdGhyZWFkCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0 LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gXAorLSAgICBjb25mdGVzdCRh Y19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTElCUz0kc2F2ZV9MSUJTCistICAg ICAgICB0ZXN0ICRnbF9wdGhyZWFkX2FwaSA9IHllcyAmJiBicmVhaworLSAgICAgIGRvbmUKKy0g ICAgICBlY2hvICIkYXNfbWU6OTgxMjogZ2xfcHRocmVhZF9hcGk9JGdsX3B0aHJlYWRfYXBpIiA+ JjUKKy0gICAgICBlY2hvICIkYXNfbWU6OTgxMzogTElCUFRIUkVBRD0kTElCUFRIUkVBRCIgPiY1 CistCistICAgICAgZ2xfcHRocmVhZF9pbl9nbGliYz1ubworLSAgICAgICMgT24gTGludXggd2l0 aCBnbGliYyA+PSAyLjM0LCBsaWJjIGNvbnRhaW5zIHRoZSBmdWxseSBmdW5jdGlvbmFsCistICAg ICAgIyBwdGhyZWFkIGZ1bmN0aW9ucy4KKy0gICAgICBjYXNlICIkaG9zdF9vcyIgaW4KKy0gICAg ICAgIGxpbnV4KikKKy0gICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl c3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0jaW5jbHVkZSA8ZmVhdHVyZXMu aD4KKy0gICAgICAgICAgICAgI2lmZGVmIF9fR05VX0xJQlJBUllfXworLSAgICAgICAgICAgICAg I2lmIChfX0dMSUJDX18gPT0gMiAmJiBfX0dMSUJDX01JTk9SX18gPj0gMzQpIHx8IChfX0dMSUJD X18gPiAyKQorLSAgICAgICAgICAgICAgIEx1Y2t5IHVzZXIKKy0gICAgICAgICAgICAgICNlbmRp ZgorLSAgICAgICAgICAgICAjZW5kaWYKKy0KKy1fQUNFT0YKKy1pZiAoZXZhbCAiJGFjX2NwcCBj b25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVBfVFJBRElUSU9OQUwgIkx1Y2t5IHVz ZXIiID4vZGV2L251bGwgMj4mMQorLXRoZW4gOgorLSAgZ2xfcHRocmVhZF9pbl9nbGliYz15ZXMK Ky1maQorLXJtIC1yZiBjb25mdGVzdCoKKy0KKy0gICAgICAgICAgOzsKKy0gICAgICBlc2FjCist ICAgICAgZWNobyAiJGFzX21lOjk4Mzk6IGdsX3B0aHJlYWRfaW5fZ2xpYmM9JGdsX3B0aHJlYWRf aW5fZ2xpYmMiID4mNQorLQorLSAgICAgICMgVGVzdCBmb3IgbGlicHRocmVhZCBieSBsb29raW5n IGZvciBwdGhyZWFkX2tpbGwuIChOb3QgcHRocmVhZF9zZWxmLAorLSAgICAgICMgc2luY2UgaXQg aXMgZGVmaW5lZCBhcyBhIG1hY3JvIG9uIE9TRi8xLikKKy0gICAgICBpZiB0ZXN0ICRnbF9wdGhy ZWFkX2FwaSA9IHllcyAmJiB0ZXN0IC16ICIkTElCUFRIUkVBRCI7IHRoZW4KKy0gICAgICAgICMg VGhlIHByb2dyYW0gbGlua3MgZmluZSB3aXRob3V0IGxpYnB0aHJlYWQuIEJ1dCBpdCBtYXkgYWN0 dWFsbHkKKy0gICAgICAgICMgbmVlZCB0byBsaW5rIHdpdGggbGlicHRocmVhZCBpbiBvcmRlciB0 byBjcmVhdGUgbXVsdGlwbGUgdGhyZWFkcy4KKy0gICAgICAgIHsgcHJpbnRmICIlc1xuIiAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgcHRocmVhZF9raWxsIGluIC1s cHRocmVhZCIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgcHRocmVhZF9raWxsIGluIC1s cHRocmVhZC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9saWJfcHRocmVhZF9wdGhyZWFk X2tpbGwreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNh c2UgZSBpbiAjKAorLSAgZSkgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworLUxJQlM9Ii1s cHRocmVhZCAgJExJQlMiCistY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj X2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0vKiBPdmVycmlkZSBhbnkgR0NDIGlu dGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKy0gICBVc2UgY2hhciBiZWNhdXNl IGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKy0gICBidWlsdGluIGFu ZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuCistICAgVGhl ICdleHRlcm4gIkMiJyBpcyBmb3IgYnVpbGRzIGJ5IEMrKyBjb21waWxlcnM7CistICAgYWx0aG91 Z2ggdGhpcyBpcyBub3QgZ2VuZXJhbGx5IHN1cHBvcnRlZCBpbiBDIGNvZGUgc3VwcG9ydGluZyBp dCBoZXJlCistICAgaGFzIGxpdHRsZSBjb3N0IGFuZCBzb21lIHByYWN0aWNhbCBiZW5lZml0IChz ciAxMTA1MzIpLiAgKi8KKy0jaWZkZWYgX19jcGx1c3BsdXMKKy1leHRlcm4gIkMiCistI2VuZGlm CistY2hhciBwdGhyZWFkX2tpbGwgKHZvaWQpOworLWludAorLW1haW4gKHZvaWQpCisteworLXJl dHVybiBwdGhyZWFkX2tpbGwgKCk7CistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCist aWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGFjX2N2X2xpYl9wdGhy ZWFkX3B0aHJlYWRfa2lsbD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY3ZfbGli X3B0aHJlYWRfcHRocmVhZF9raWxsPW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25m dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAgY29uZnRl c3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1MSUJTPSRhY19jaGVja19saWJfc2F2ZV9M SUJTIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9wdGhyZWFkX3B0aHJlYWRfa2lsbCIgPiY1Cist cHJpbnRmICIlc1xuIiAiJGFjX2N2X2xpYl9wdGhyZWFkX3B0aHJlYWRfa2lsbCIgPiY2OyB9Cist aWYgdGVzdCAieCRhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGwiID0geHllcworLXRoZW4g OgorLSAgaWYgdGVzdCAkZ2xfcHRocmVhZF9pbl9nbGliYyA9IHllczsgdGhlbgorLSAgICAgICAg ICAgICBMSUJQTVVMVElUSFJFQUQ9CistICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgIExJ QlBNVUxUSVRIUkVBRD0tbHB0aHJlYWQKKy0gICAgICAgICAgICAgIyBPbiBTb2xhcmlzIGFuZCBI UC1VWCwgbW9zdCBwdGhyZWFkIGZ1bmN0aW9ucyBleGlzdCBhbHNvIGluIGxpYmMuCistICAgICAg ICAgICAgICMgVGhlcmVmb3JlIHB0aHJlYWRfaW5fdXNlKCkgbmVlZHMgdG8gYWN0dWFsbHkgdHJ5 IHRvIGNyZWF0ZSBhCistICAgICAgICAgICAgICMgdGhyZWFkOiBwdGhyZWFkX2NyZWF0ZSBmcm9t IGxpYmMgd2lsbCBmYWlsLCB3aGVyZWFzCistICAgICAgICAgICAgICMgcHRocmVhZF9jcmVhdGUg d2lsbCBhY3R1YWxseSBjcmVhdGUgYSB0aHJlYWQuCistICAgICAgICAgICAgICMgT24gU29sYXJp cyAxMCBvciBuZXdlciwgdGhpcyB0ZXN0IGlzIG5vIGxvbmdlciBuZWVkZWQsIGJlY2F1c2UKKy0g ICAgICAgICAgICAgIyBsaWJjIGNvbnRhaW5zIHRoZSBmdWxseSBmdW5jdGlvbmFsIHB0aHJlYWQg ZnVuY3Rpb25zLgorLSAgICAgICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KKy0gICAgICAgICAg ICAgICBzb2xhcmlzIHwgc29sYXJpczIuMS05IHwgc29sYXJpczIuMS05LiogfCBocHV4KikKKy0K Ky1wcmludGYgIiVzXG4iICIjZGVmaW5lIFBUSFJFQURfSU5fVVNFX0RFVEVDVElPTl9IQVJEIDEi ID4+Y29uZmRlZnMuaAorLQorLSAgICAgICAgICAgICBlc2FjCistICAgICAgICAgICBmaQorLQor LWZpCistCistICAgICAgZWxpZiB0ZXN0ICRnbF9wdGhyZWFkX2FwaSAhPSB5ZXM7IHRoZW4KKy0g ICAgICAgICMgU29tZSBsaWJyYXJ5IGlzIG5lZWRlZC4gVHJ5IGxpYnB0aHJlYWQgYW5kIGxpYmNf ci4KKy0gICAgICAgIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyBmb3IgcHRocmVhZF9raWxsIGluIC1scHRocmVhZCIgPiY1CistcHJpbnRmICVz ICJjaGVja2luZyBmb3IgcHRocmVhZF9raWxsIGluIC1scHRocmVhZC4uLiAiID4mNjsgfQorLWlm IHRlc3QgJHthY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGwreX0KKy10aGVuIDoKKy0gIHBy aW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY2hl Y2tfbGliX3NhdmVfTElCUz0kTElCUworLUxJQlM9Ii1scHRocmVhZCAgJExJQlMiCistY2F0IGNv bmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5o LiAgKi8KKy0KKy0vKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9p ZCBhbiBlcnJvci4KKy0gICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0 dXJuIHR5cGUgb2YgYSBHQ0MKKy0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90 b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuCistICAgVGhlICdleHRlcm4gIkMiJyBpcyBmb3IgYnVp bGRzIGJ5IEMrKyBjb21waWxlcnM7CistICAgYWx0aG91Z2ggdGhpcyBpcyBub3QgZ2VuZXJhbGx5 IHN1cHBvcnRlZCBpbiBDIGNvZGUgc3VwcG9ydGluZyBpdCBoZXJlCistICAgaGFzIGxpdHRsZSBj b3N0IGFuZCBzb21lIHByYWN0aWNhbCBiZW5lZml0IChzciAxMTA1MzIpLiAgKi8KKy0jaWZkZWYg X19jcGx1c3BsdXMKKy1leHRlcm4gIkMiCistI2VuZGlmCistY2hhciBwdGhyZWFkX2tpbGwgKHZv aWQpOworLWludAorLW1haW4gKHZvaWQpCisteworLXJldHVybiBwdGhyZWFkX2tpbGwgKCk7Cist ICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfbGluayAiJExJ TkVOTyIKKy10aGVuIDoKKy0gIGFjX2N2X2xpYl9wdGhyZWFkX3B0aHJlYWRfa2lsbD15ZXMKKy1l bHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY3ZfbGliX3B0aHJlYWRfcHRocmVhZF9raWxsPW5v IDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i amV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRh Y19leHQKKy1MSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTIDs7CistZXNhYworLWZpCisteyBw cmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2 X2xpYl9wdGhyZWFkX3B0aHJlYWRfa2lsbCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X2xp Yl9wdGhyZWFkX3B0aHJlYWRfa2lsbCIgPiY2OyB9CistaWYgdGVzdCAieCRhY19jdl9saWJfcHRo cmVhZF9wdGhyZWFkX2tpbGwiID0geHllcworLXRoZW4gOgorLSAgZ2xfcHRocmVhZF9hcGk9eWVz CistICAgICAgICAgICBMSUJQVEhSRUFEPS1scHRocmVhZAorLSAgICAgICAgICAgTElCUE1VTFRJ VEhSRUFEPS1scHRocmVhZAorLWZpCistCistICAgICAgICBpZiB0ZXN0ICRnbF9wdGhyZWFkX2Fw aSAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgIyBGb3IgRnJlZUJTRCA0LgorLSAgICAgICAgICB7 IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y IHB0aHJlYWRfa2lsbCBpbiAtbGNfciIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgcHRo cmVhZF9raWxsIGluIC1sY19yLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X2xpYl9jX3Jf cHRocmVhZF9raWxsK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2Cist ZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKKy1M SUJTPSItbGNfciAgJExJQlMiCistY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu JGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0vKiBPdmVycmlkZSBhbnkgR0ND IGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKy0gICBVc2UgY2hhciBiZWNh dXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKy0gICBidWlsdGlu IGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuCistICAg VGhlICdleHRlcm4gIkMiJyBpcyBmb3IgYnVpbGRzIGJ5IEMrKyBjb21waWxlcnM7CistICAgYWx0 aG91Z2ggdGhpcyBpcyBub3QgZ2VuZXJhbGx5IHN1cHBvcnRlZCBpbiBDIGNvZGUgc3VwcG9ydGlu ZyBpdCBoZXJlCistICAgaGFzIGxpdHRsZSBjb3N0IGFuZCBzb21lIHByYWN0aWNhbCBiZW5lZml0 IChzciAxMTA1MzIpLiAgKi8KKy0jaWZkZWYgX19jcGx1c3BsdXMKKy1leHRlcm4gIkMiCistI2Vu ZGlmCistY2hhciBwdGhyZWFkX2tpbGwgKHZvaWQpOworLWludAorLW1haW4gKHZvaWQpCistewor LXJldHVybiBwdGhyZWFkX2tpbGwgKCk7CistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9G CistaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGFjX2N2X2xpYl9j X3JfcHRocmVhZF9raWxsPXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl9saWJf Y19yX3B0aHJlYWRfa2lsbD1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3Qu ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0ZXN0JGFj X2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUyA7 OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6ICRhY19jdl9saWJfY19yX3B0aHJlYWRfa2lsbCIgPiY1CistcHJpbnRmICIl c1xuIiAiJGFjX2N2X2xpYl9jX3JfcHRocmVhZF9raWxsIiA+JjY7IH0KKy1pZiB0ZXN0ICJ4JGFj X2N2X2xpYl9jX3JfcHRocmVhZF9raWxsIiA9IHh5ZXMKKy10aGVuIDoKKy0gIGdsX3B0aHJlYWRf YXBpPXllcworLSAgICAgICAgICAgICBMSUJQVEhSRUFEPS1sY19yCistICAgICAgICAgICAgIExJ QlBNVUxUSVRIUkVBRD0tbGNfcgorLWZpCistCistICAgICAgICBmaQorLSAgICAgIGZpCistICAg ICAgZWNobyAiJGFzX21lOjEwMDE3OiBMSUJQTVVMVElUSFJFQUQ9JExJQlBNVUxUSVRIUkVBRCIg PiY1CistICAgIGZpCistICAgIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyB3aGV0aGVyIFBPU0lYIHRocmVhZHMgQVBJIGlzIGF2YWlsYWJsZSIg PiY1CistcHJpbnRmICVzICJjaGVja2luZyB3aGV0aGVyIFBPU0lYIHRocmVhZHMgQVBJIGlzIGF2 YWlsYWJsZS4uLiAiID4mNjsgfQorLSAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfcHRocmVhZF9hcGkiID4mNQorLXByaW50ZiAiJXNc biIgIiRnbF9wdGhyZWFkX2FwaSIgPiY2OyB9CistCistCistICAgIGlmIHRlc3QgJGdsX3B0aHJl YWRfYXBpID0geWVzOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1BUSFJF QURfQVBJIDEiID4+Y29uZmRlZnMuaAorLQorLSAgICBmaQorLQorLSAgICAgICAgY2F0IGNvbmZk ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KKy0jaW5jbHVkZSA8c2NoZWQuaD4KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1zY2hlZF95 aWVsZCAoKTsKKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3Ry eV9saW5rICIkTElORU5PIgorLXRoZW4gOgorLSAgTElCX1NDSEVEX1lJRUxEPQorLQorLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSAgICAgICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzY2hlZF95aWVsZCBpbiAtbHJ0IiA+JjUKKy1w cmludGYgJXMgImNoZWNraW5nIGZvciBzY2hlZF95aWVsZCBpbiAtbHJ0Li4uICIgPiY2OyB9Cist aWYgdGVzdCAke2FjX2N2X2xpYl9ydF9zY2hlZF95aWVsZCt5fQorLXRoZW4gOgorLSAgcHJpbnRm ICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jaGVja19s aWJfc2F2ZV9MSUJTPSRMSUJTCistTElCUz0iLWxydCAgJExJQlMiCistY2F0IGNvbmZkZWZzLmgg LSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0K Ky0vKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJv ci4KKy0gICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUg b2YgYSBHQ0MKKy0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291 bGQgc3RpbGwgYXBwbHkuCistICAgVGhlICdleHRlcm4gIkMiJyBpcyBmb3IgYnVpbGRzIGJ5IEMr KyBjb21waWxlcnM7CistICAgYWx0aG91Z2ggdGhpcyBpcyBub3QgZ2VuZXJhbGx5IHN1cHBvcnRl ZCBpbiBDIGNvZGUgc3VwcG9ydGluZyBpdCBoZXJlCistICAgaGFzIGxpdHRsZSBjb3N0IGFuZCBz b21lIHByYWN0aWNhbCBiZW5lZml0IChzciAxMTA1MzIpLiAgKi8KKy0jaWZkZWYgX19jcGx1c3Bs dXMKKy1leHRlcm4gIkMiCistI2VuZGlmCistY2hhciBzY2hlZF95aWVsZCAodm9pZCk7CistaW50 CistbWFpbiAodm9pZCkKKy17CistcmV0dXJuIHNjaGVkX3lpZWxkICgpOworLSAgOworLSAgcmV0 dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhl biA6CistICBhY19jdl9saWJfcnRfc2NoZWRfeWllbGQ9eWVzCistZWxzZSBjYXNlIGUgaW4gIygK Ky0gIGUpIGFjX2N2X2xpYl9ydF9zY2hlZF95aWVsZD1ubyA7OworLWVzYWMKKy1maQorLXJtIC1m IGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBcCist ICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistTElCUz0kYWNfY2hlY2tf bGliX3NhdmVfTElCUyA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcnRfc2NoZWRfeWllbGQiID4m NQorLXByaW50ZiAiJXNcbiIgIiRhY19jdl9saWJfcnRfc2NoZWRfeWllbGQiID4mNjsgfQorLWlm IHRlc3QgIngkYWNfY3ZfbGliX3J0X3NjaGVkX3lpZWxkIiA9IHh5ZXMKKy10aGVuIDoKKy0gIExJ Ql9TQ0hFRF9ZSUVMRD0tbHJ0CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpICAgICAgICAgICB7 IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y IHNjaGVkX3lpZWxkIGluIC1scG9zaXg0IiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBz Y2hlZF95aWVsZCBpbiAtbHBvc2l4NC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9saWJf cG9zaXg0X3NjaGVkX3lpZWxkK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIg PiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJ QlMKKy1MSUJTPSItbHBvc2l4NCAgJExJQlMiCistY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+ Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0vKiBPdmVycmlk ZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKy0gICBVc2Ug Y2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKy0g ICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBw bHkuCistICAgVGhlICdleHRlcm4gIkMiJyBpcyBmb3IgYnVpbGRzIGJ5IEMrKyBjb21waWxlcnM7 CistICAgYWx0aG91Z2ggdGhpcyBpcyBub3QgZ2VuZXJhbGx5IHN1cHBvcnRlZCBpbiBDIGNvZGUg c3VwcG9ydGluZyBpdCBoZXJlCistICAgaGFzIGxpdHRsZSBjb3N0IGFuZCBzb21lIHByYWN0aWNh bCBiZW5lZml0IChzciAxMTA1MzIpLiAgKi8KKy0jaWZkZWYgX19jcGx1c3BsdXMKKy1leHRlcm4g IkMiCistI2VuZGlmCistY2hhciBzY2hlZF95aWVsZCAodm9pZCk7CistaW50CistbWFpbiAodm9p ZCkKKy17CistcmV0dXJuIHNjaGVkX3lpZWxkICgpOworLSAgOworLSAgcmV0dXJuIDA7CistfQor LV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19j dl9saWJfcG9zaXg0X3NjaGVkX3lpZWxkPXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBh Y19jdl9saWJfcG9zaXg0X3NjaGVkX3lpZWxkPW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29y ZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAg Y29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1MSUJTPSRhY19jaGVja19saWJf c2F2ZV9MSUJTIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9wb3NpeDRfc2NoZWRfeWllbGQiID4m NQorLXByaW50ZiAiJXNcbiIgIiRhY19jdl9saWJfcG9zaXg0X3NjaGVkX3lpZWxkIiA+JjY7IH0K Ky1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9wb3NpeDRfc2NoZWRfeWllbGQiID0geHllcworLXRoZW4g OgorLSAgTElCX1NDSEVEX1lJRUxEPS1scG9zaXg0CistZmkKKy0gOzsKKy1lc2FjCistZmkKKy0K Ky0gICAgICAgOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gXAorLSAgICBjb25mdGVzdCRhY19leGVleHQgY29u ZnRlc3QuJGFjX2V4dAorLQorLQorLSAgICBnbF9wdGhyZWFkbGliX2JvZHlfZG9uZT1kb25lCist ICBmaQorLQorLSAgICAgICAgaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3RocmVhZHNfaCA9IHllczsg dGhlbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInRocmRfY3JlYXRlIiAiYWNf Y3ZfZnVuY190aHJkX2NyZWF0ZSIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfdGhyZF9jcmVhdGUi ID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1RIUkRfQ1JF QVRFIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCistICAgICAgICAgIGlmIHRlc3QgJGFjX2N2 X2Z1bmNfdGhyZF9jcmVhdGUgPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgICBMSUJTVERUSFJFQUQ9 CistICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHRocmRfY3JlYXRlIGluIC1sc3RkdGhy ZWFkcyIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgdGhyZF9jcmVhdGUgaW4gLWxzdGR0 aHJlYWRzLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X2xpYl9zdGR0aHJlYWRzX3RocmRf Y3JlYXRlK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBj YXNlIGUgaW4gIygKKy0gIGUpIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKKy1MSUJTPSIt bHN0ZHRocmVhZHMgICRMSUJTIgorLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0 LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCistLyogT3ZlcnJpZGUgYW55IEdD QyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCistICAgVXNlIGNoYXIgYmVj YXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCistICAgYnVpbHRp biBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LgorLSAg IFRoZSAnZXh0ZXJuICJDIicgaXMgZm9yIGJ1aWxkcyBieSBDKysgY29tcGlsZXJzOworLSAgIGFs dGhvdWdoIHRoaXMgaXMgbm90IGdlbmVyYWxseSBzdXBwb3J0ZWQgaW4gQyBjb2RlIHN1cHBvcnRp bmcgaXQgaGVyZQorLSAgIGhhcyBsaXR0bGUgY29zdCBhbmQgc29tZSBwcmFjdGljYWwgYmVuZWZp dCAoc3IgMTEwNTMyKS4gICovCistI2lmZGVmIF9fY3BsdXNwbHVzCistZXh0ZXJuICJDIgorLSNl bmRpZgorLWNoYXIgdGhyZF9jcmVhdGUgKHZvaWQpOworLWludAorLW1haW4gKHZvaWQpCistewor LXJldHVybiB0aHJkX2NyZWF0ZSAoKTsKKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YK Ky1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIgorLXRoZW4gOgorLSAgYWNfY3ZfbGliX3N0 ZHRocmVhZHNfdGhyZF9jcmVhdGU9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2N2 X2xpYl9zdGR0aHJlYWRzX3RocmRfY3JlYXRlPW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29y ZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAg Y29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1MSUJTPSRhY19jaGVja19saWJf c2F2ZV9MSUJTIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9zdGR0aHJlYWRzX3RocmRfY3JlYXRl IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfY3ZfbGliX3N0ZHRocmVhZHNfdGhyZF9jcmVhdGUi ID4mNjsgfQorLWlmIHRlc3QgIngkYWNfY3ZfbGliX3N0ZHRocmVhZHNfdGhyZF9jcmVhdGUiID0g eHllcworLXRoZW4gOgorLQorLSAgICAgICAgICAgICAgTElCU1REVEhSRUFEPSctbHN0ZHRocmVh ZHMgLWxwdGhyZWFkJworLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKQorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMSUJTVERUSFJFQUQ9IiRMSUJQTVVMVElUSFJFQUQiCistICAgICAg ICAgICAgIDs7CistZXNhYworLWZpCistCistICAgICAgICAgIGZpCistICAgICAgICBlbHNlCist ICAgICAgICAgICAgICAgICAgICBMSUJTVERUSFJFQUQ9IiRMSUJQTVVMVElUSFJFQUQgJExJQl9T Q0hFRF9ZSUVMRCIKKy0gICAgICAgIGZpCistICAgICAgICA7OworLSAgICBlc2FjCistCistCist ICAgIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu ZyB3aGV0aGVyIElTTyBDIHRocmVhZHMgQVBJIGlzIGF2YWlsYWJsZSIgPiY1CistcHJpbnRmICVz ICJjaGVja2luZyB3aGV0aGVyIElTTyBDIHRocmVhZHMgQVBJIGlzIGF2YWlsYWJsZS4uLiAiID4m NjsgfQorLSAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3RocmVhZHNfaCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFj X2N2X2hlYWRlcl90aHJlYWRzX2giID4mNjsgfQorLSAgICBnbF9zdGR0aHJlYWRsaWJfYm9keV9k b25lPWRvbmUKKy0gIGZpCistCistICAgICAgICBMSUJUSFJFQUQ9JExJQlNURFRIUkVBRCBMVExJ QlRIUkVBRD0kTElCU1REVEhSRUFECistICAgICAgICBMSUJNVUxUSVRIUkVBRD0kTElCU1REVEhS RUFEIExUTElCTVVMVElUSFJFQUQ9JExJQlNURFRIUkVBRAorLSAgICAgICAgZ2xfdGhyZWFkc19h cGk9aXNvYworLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgVVNFX0lTT0NfVEhSRUFEUyAxIiA+ PmNvbmZkZWZzLmgKKy0KKy0gICAgICBmaQorLSAgICBmaQorLSAgICBpZiB0ZXN0ICRnbF90aHJl YWRzX2FwaSA9IG5vbmU7IHRoZW4KKy0gICAgICBjYXNlICIkZ2xfdXNlX3RocmVhZHMiIGluCist ICAgICAgICB5ZXMgfCB3aW5kb3dzIHwgd2luMzIpICMgVGhlICd3aW4zMicgaXMgZm9yIGJhY2t3 YXJkIGNvbXBhdGliaWxpdHkuCistICAgICAgICAgIGlmIHsgY2FzZSAiJGhvc3Rfb3MiIGluCist ICAgICAgICAgICAgICAgICBtaW5ndyopIHRydWU7OworLSAgICAgICAgICAgICAgICAgKikgZmFs c2U7OworLSAgICAgICAgICAgICAgIGVzYWMKKy0gICAgICAgICAgICAgfTsgdGhlbgorLSAgICAg ICAgICAgIGdsX3RocmVhZHNfYXBpPXdpbmRvd3MKKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5l IFVTRV9XSU5ET1dTX1RIUkVBRFMgMSIgPj5jb25mZGVmcy5oCistCistICAgICAgICAgIGZpCist ICAgICAgICAgIDs7CistICAgICAgZXNhYworLSAgICBmaQorLSAgZmkKKy0gIHsgcHJpbnRmICIl c1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbXVsdGl0aHJl YWQgQVBJIHRvIHVzZSIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgbXVsdGl0aHJlYWQg QVBJIHRvIHVzZS4uLiAiID4mNjsgfQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX3RocmVhZHNfYXBpIiA+JjUKKy1wcmludGYgIiVz XG4iICIkZ2xfdGhyZWFkc19hcGkiID4mNjsgfQorLQorLQorLQorLQorLQorLQorLQorLQorLQor LQorLQorLSAgaWYgdGVzdCAiJGdsX3RocmVhZHNfYXBpIiA9IHBvc2l4OyB0aGVuCistICAgICMg T1NGLzEgNC4wIGFuZCBNYWMgT1MgWCAxMC4xIGxhY2sgdGhlIHB0aHJlYWRfcndsb2NrX3QgdHlw ZSBhbmQgdGhlCistICAgICMgcHRocmVhZF9yd2xvY2tfKiBmdW5jdGlvbnMuCistICAgIGhhc19y d2xvY2s9ZmFsc2UKKy0gICAgYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAicHRocmVhZF9y d2xvY2tfdCIgImFjX2N2X3R5cGVfcHRocmVhZF9yd2xvY2tfdCIgIiNpbmNsdWRlIDxwdGhyZWFk Lmg+CistIgorLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV9wdGhyZWFkX3J3bG9ja190IiA9IHh5ZXMK Ky10aGVuIDoKKy0gIGhhc19yd2xvY2s9dHJ1ZQorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUg SEFWRV9QVEhSRUFEX1JXTE9DSyAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLSAgICBpZiAk aGFzX3J3bG9jazsgdGhlbgorLQorLQorLSAgICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgcHRocmVhZF9yd2xvY2tfcmRsb2Nr IHByZWZlcnMgYSB3cml0ZXIgdG8gYSByZWFkZXIiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcg d2hldGhlciBwdGhyZWFkX3J3bG9ja19yZGxvY2sgcHJlZmVycyBhIHdyaXRlciB0byBhIHJlYWRl ci4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHtnbF9jdl9wdGhyZWFkX3J3bG9ja19yZGxvY2tfcHJl ZmVyX3dyaXRlcit5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVs c2UgY2FzZSBlIGluICMoCistICBlKSBzYXZlX0xJQlM9IiRMSUJTIgorLSAgICAgTElCUz0iJExJ QlMgJExJQk1VTFRJVEhSRUFEIgorLSAgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5 ZXMKKy10aGVuIDoKKy0gIGNhc2UgIiRob3N0X29zIiBpbgorLSAgICAgICAgICAgICAgICAgICAg ICAgICAjIEd1ZXNzIG5vIG9uIGdsaWJjIHN5c3RlbXMuCistICAgICAgICAgICotZ251KiB8IGdu dSopIGdsX2N2X3B0aHJlYWRfcndsb2NrX3JkbG9ja19wcmVmZXJfd3JpdGVyPSJndWVzc2luZyBu byIgOzsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIyBHdWVzcyBubyBvbiBtdXNsIHN5c3Rl bXMuCistICAgICAgICAgICotbXVzbCopICAgICAgIGdsX2N2X3B0aHJlYWRfcndsb2NrX3JkbG9j a19wcmVmZXJfd3JpdGVyPSJndWVzc2luZyBubyIgOzsKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgIyBHdWVzcyBubyBvbiBiaW9uaWMgc3lzdGVtcy4KKy0gICAgICAgICAgKi1hbmRyb2lkKikg ICAgZ2xfY3ZfcHRocmVhZF9yd2xvY2tfcmRsb2NrX3ByZWZlcl93cml0ZXI9Imd1ZXNzaW5nIG5v IiA7OworLSAgICAgICAgICAgICAgICAgICAgICAgICAjIEd1ZXNzIHllcyBvbiBuYXRpdmUgV2lu ZG93cyB3aXRoIHRoZSBtaW5ndy13NjQgd2lucHRocmVhZHMgbGlicmFyeS4KKy0gICAgICAgICAg ICAgICAgICAgICAgICAgIyBHdWVzcyBubyBvbiBuYXRpdmUgV2luZG93cyB3aXRoIHRoZSBnbnVs aWIgd2luZG93cy1yd2xvY2sgbW9kdWxlLgorLSAgICAgICAgICBtaW5ndyopICAgICAgICBpZiB0 ZXN0ICIkZ2xfdXNlX3RocmVhZHMiID0geWVzIHx8IHRlc3QgIiRnbF91c2VfdGhyZWFkcyIgPSBw b3NpeDsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2N2X3B0aHJlYWRfcnds b2NrX3JkbG9ja19wcmVmZXJfd3JpdGVyPSJndWVzc2luZyB5ZXMiCistICAgICAgICAgICAgICAg ICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9jdl9wdGhyZWFk X3J3bG9ja19yZGxvY2tfcHJlZmVyX3dyaXRlcj0iZ3Vlc3Npbmcgbm8iCistICAgICAgICAgICAg ICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgICAgICAgIDs7CistICAgICAgICAg ICAgICAgICAgICAgICAgICMgSWYgd2UgZG9uJ3Qga25vdywgb2JleSAtLWVuYWJsZS1jcm9zcy1n dWVzc2VzLgorLSAgICAgICAgICAqKSAgICAgICAgICAgICBnbF9jdl9wdGhyZWFkX3J3bG9ja19y ZGxvY2tfcHJlZmVyX3dyaXRlcj0iJGdsX2Nyb3NzX2d1ZXNzX25vcm1hbCIgOzsKKy0gICAgICAg ICBlc2FjCistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxf QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCistI2lu Y2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPHB0aHJlYWQuaD4KKy0jaW5jbHVkZSA8c3RkbGli Lmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLQorLSNkZWZpbmUgU1VDQ0VFRCgpIGV4aXQgKDAp CistI2RlZmluZSBGQUlMVVJFKCkgZXhpdCAoMSkKKy0jZGVmaW5lIFVORVhQRUNURUQobikgKGV4 aXQgKDEwICsgKG4pKSkKKy0KKy0vKiBUaGUgbWFpbiB0aHJlYWQgY3JlYXRlcyB0aGUgd2FpdGlu ZyB3cml0ZXIgYW5kIHRoZSByZXF1ZXN0aW5nIHJlYWRlciB0aHJlYWRzCistICAgaW4gdGhlIGRl ZmF1bHQgd2F5OyB0aGlzIGd1YXJhbnRlZXMgdGhhdCB0aGV5IGhhdmUgdGhlIHNhbWUgcHJpb3Jp dHkuCistICAgV2UgY2FuIHJldXNlIHRoZSBtYWluIHRocmVhZCBhcyBmaXJzdCByZWFkZXIgdGhy ZWFkLiAgKi8KKy0KKy1zdGF0aWMgcHRocmVhZF9yd2xvY2tfdCBsb2NrOworLXN0YXRpYyBwdGhy ZWFkX3QgcmVhZGVyMTsKKy1zdGF0aWMgcHRocmVhZF90IHdyaXRlcjsKKy1zdGF0aWMgcHRocmVh ZF90IHJlYWRlcjI7Cistc3RhdGljIHB0aHJlYWRfdCB0aW1lcjsKKy0vKiBVc2VkIHRvIHBhc3Mg Y29udHJvbCBmcm9tIHdyaXRlciB0byByZWFkZXIyIGFuZCBmcm9tIHJlYWRlcjIgdG8gdGltZXIs CistICAgYXMgaW4gYSByZWxheSByYWNlLgorLSAgIFBhc3NpbmcgY29udHJvbCBmcm9tIG9uZSBy dW5uaW5nIHRocmVhZCB0byBhbm90aGVyIHJ1bm5pbmcgdGhyZWFkCistICAgaXMgbW9zdCBsaWtl bHkgZmFzdGVyIHRoYW4gdG8gY3JlYXRlIHRoZSBzZWNvbmQgdGhyZWFkLiAgKi8KKy1zdGF0aWMg cHRocmVhZF9tdXRleF90IGJhdG9uOworLQorLXN0YXRpYyB2b2lkICoKKy10aW1lcl9mdW5jICh2 b2lkICppZ25vcmVkKQorLXsKKy0gIC8qIFN0ZXAgMTMgKGNhbiBiZSBiZWZvcmUgb3IgYWZ0ZXIg c3RlcCAxMik6CistICAgICBUaGUgdGltZXIgdGhyZWFkIHRha2VzIHRoZSBiYXRvbiwgdGhlbiB3 YWl0cyBhIG1vbWVudCB0byBtYWtlIHN1cmUKKy0gICAgIGl0IGNhbiB0ZWxsIHdoZXRoZXIgdGhl IHNlY29uZCByZWFkZXIgdGhyZWFkIGlzIGJsb2NrZWQgYXQgc3RlcCAxMi4gICovCistICBpZiAo cHRocmVhZF9tdXRleF9sb2NrICgmYmF0b24pKQorLSAgICBVTkVYUEVDVEVEICgxMyk7CistICB1 c2xlZXAgKDEwMDAwMCk7CistICAvKiBCeSB0aGUgdGltZSB3ZSBnZXQgaGVyZSwgaXQncyBjbGVh ciB0aGF0IHRoZSBzZWNvbmQgcmVhZGVyIHRocmVhZCBpcworLSAgICAgYmxvY2tlZCBhdCBzdGVw IDEyLiAgVGhpcyBpcyB0aGUgZGVzaXJlZCBiZWhhdmlvdXIuICAqLworLSAgU1VDQ0VFRCAoKTsK Ky19CistCistc3RhdGljIHZvaWQgKgorLXJlYWRlcjJfZnVuYyAodm9pZCAqaWdub3JlZCkKKy17 CistICBpbnQgZXJyOworLQorLSAgLyogU3RlcCA4IChjYW4gYmUgYmVmb3JlIG9yIGFmdGVyIHN0 ZXAgNyk6CistICAgICBUaGUgc2Vjb25kIHJlYWRlciB0aHJlYWQgdGFrZXMgdGhlIGJhdG9uLCB0 aGVuIHdhaXRzIGEgbW9tZW50IHRvIG1ha2Ugc3VyZQorLSAgICAgdGhlIHdyaXRlciB0aHJlYWQg aGFzIHJlYWNoZWQgc3RlcCA3LiAgKi8KKy0gIGlmIChwdGhyZWFkX211dGV4X2xvY2sgKCZiYXRv bikpCistICAgIFVORVhQRUNURUQgKDgpOworLSAgdXNsZWVwICgxMDAwMDApOworLSAgLyogU3Rl cCA5OiBUaGUgc2Vjb25kIHJlYWRlciB0aHJlYWQgcmVxdWVzdHMgdGhlIGxvY2suICAqLworLSAg ZXJyID0gcHRocmVhZF9yd2xvY2tfdHJ5cmRsb2NrICgmbG9jayk7CistICBpZiAoZXJyID09IDAp CistICAgIEZBSUxVUkUgKCk7CistICBlbHNlIGlmIChlcnIgIT0gRUJVU1kpCistICAgIFVORVhQ RUNURUQgKDkpOworLSAgLyogU3RlcCAxMDogTGF1bmNoIGEgdGltZXIsIHRvIHRlc3Qgd2hldGhl ciB0aGUgbmV4dCBjYWxsIGJsb2Nrcy4gICovCistICBpZiAocHRocmVhZF9jcmVhdGUgKCZ0aW1l ciwgTlVMTCwgdGltZXJfZnVuYywgTlVMTCkpCistICAgIFVORVhQRUNURUQgKDEwKTsKKy0gIC8q IFN0ZXAgMTE6IFJlbGVhc2UgdGhlIGJhdG9uLiAgKi8KKy0gIGlmIChwdGhyZWFkX211dGV4X3Vu bG9jayAoJmJhdG9uKSkKKy0gICAgVU5FWFBFQ1RFRCAoMTEpOworLSAgLyogU3RlcCAxMjogVGhl IHNlY29uZCByZWFkZXIgdGhyZWFkIHJlcXVlc3RzIHRoZSBsb2NrLiAgKi8KKy0gIGVyciA9IHB0 aHJlYWRfcndsb2NrX3JkbG9jayAoJmxvY2spOworLSAgaWYgKGVyciA9PSAwKQorLSAgICBGQUlM VVJFICgpOworLSAgZWxzZQorLSAgICBVTkVYUEVDVEVEICgxMik7CistfQorLQorLXN0YXRpYyB2 b2lkICoKKy13cml0ZXJfZnVuYyAodm9pZCAqaWdub3JlZCkKKy17CistICAvKiBTdGVwIDQ6IFRh a2UgdGhlIGJhdG9uLCBzbyB0aGF0IHRoZSBzZWNvbmQgcmVhZGVyIHRocmVhZCBkb2VzIG5vdCBn byBhaGVhZAorLSAgICAgdG9vIGVhcmx5LiAgKi8KKy0gIGlmIChwdGhyZWFkX211dGV4X2xvY2sg KCZiYXRvbikpCistICAgIFVORVhQRUNURUQgKDQpOworLSAgLyogU3RlcCA1OiBDcmVhdGUgdGhl IHNlY29uZCByZWFkZXIgdGhyZWFkLiAgKi8KKy0gIGlmIChwdGhyZWFkX2NyZWF0ZSAoJnJlYWRl cjIsIE5VTEwsIHJlYWRlcjJfZnVuYywgTlVMTCkpCistICAgIFVORVhQRUNURUQgKDUpOworLSAg LyogU3RlcCA2OiBSZWxlYXNlIHRoZSBiYXRvbi4gICovCistICBpZiAocHRocmVhZF9tdXRleF91 bmxvY2sgKCZiYXRvbikpCistICAgIFVORVhQRUNURUQgKDYpOworLSAgLyogU3RlcCA3OiBUaGUg d3JpdGVyIHRocmVhZCByZXF1ZXN0cyB0aGUgbG9jay4gICovCistICBpZiAocHRocmVhZF9yd2xv Y2tfd3Jsb2NrICgmbG9jaykpCistICAgIFVORVhQRUNURUQgKDcpOworLSAgcmV0dXJuIE5VTEw7 CistfQorLQorLWludAorLW1haW4gKCkKKy17CistICByZWFkZXIxID0gcHRocmVhZF9zZWxmICgp OworLQorLSAgLyogU3RlcCAxOiBUaGUgbWFpbiB0aHJlYWQgaW5pdGlhbGl6ZXMgdGhlIGxvY2sg YW5kIHRoZSBiYXRvbi4gICovCistICBpZiAocHRocmVhZF9yd2xvY2tfaW5pdCAoJmxvY2ssIE5V TEwpKQorLSAgICBVTkVYUEVDVEVEICgxKTsKKy0gIGlmIChwdGhyZWFkX211dGV4X2luaXQgKCZi YXRvbiwgTlVMTCkpCistICAgIFVORVhQRUNURUQgKDEpOworLSAgLyogU3RlcCAyOiBUaGUgbWFp biB0aHJlYWQgYWNxdWlyZXMgdGhlIGxvY2sgYXMgYSByZWFkZXIuICAqLworLSAgaWYgKHB0aHJl YWRfcndsb2NrX3JkbG9jayAoJmxvY2spKQorLSAgICBVTkVYUEVDVEVEICgyKTsKKy0gIC8qIFN0 ZXAgMzogQ3JlYXRlIHRoZSB3cml0ZXIgdGhyZWFkLiAgKi8KKy0gIGlmIChwdGhyZWFkX2NyZWF0 ZSAoJndyaXRlciwgTlVMTCwgd3JpdGVyX2Z1bmMsIE5VTEwpKQorLSAgICBVTkVYUEVDVEVEICgz KTsKKy0gIC8qIEpvYiBkb25lLiAgR28gdG8gc2xlZXAuICAqLworLSAgZm9yICg7OykKKy0gICAg eworLSAgICAgIHNsZWVwICgxKTsKKy0gICAgfQorLX0KKy0KKy1fQUNFT0YKKy1pZiBhY19mbl9j X3RyeV9ydW4gIiRMSU5FTk8iCistdGhlbiA6CistICBnbF9jdl9wdGhyZWFkX3J3bG9ja19yZGxv Y2tfcHJlZmVyX3dyaXRlcj15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgZ2xfY3ZfcHRo cmVhZF9yd2xvY2tfcmRsb2NrX3ByZWZlcl93cml0ZXI9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAt ZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFj X2V4ZWV4dCBcCistICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3Qu JGFjX2V4dCA7OworLWVzYWMKKy1maQorLQorLSAgICAgTElCUz0iJHNhdmVfTElCUyIKKy0gICAg IDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJGdsX2N2X3B0aHJlYWRfcndsb2NrX3JkbG9ja19wcmVmZXJfd3JpdGVy IiA+JjUKKy1wcmludGYgIiVzXG4iICIkZ2xfY3ZfcHRocmVhZF9yd2xvY2tfcmRsb2NrX3ByZWZl cl93cml0ZXIiID4mNjsgfQorLSAgY2FzZSAiJGdsX2N2X3B0aHJlYWRfcndsb2NrX3JkbG9ja19w cmVmZXJfd3JpdGVyIiBpbgorLSAgICAqeWVzKQorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUg SEFWRV9QVEhSRUFEX1JXTE9DS19SRExPQ0tfUFJFRkVSX1dSSVRFUiAxIiA+PmNvbmZkZWZzLmgK Ky0KKy0gICAgICA7OworLSAgZXNhYworLQorLSAgICBmaQorLSAgICAjIGdsaWJjIGRlZmluZXMg UFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUgYXMgZW51bSwgbm90IGFzIGEgbWFjcm8uCistICAgIGNh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRl ZnMuaC4gICovCistCistICAgICAgI2luY2x1ZGUgPHB0aHJlYWQuaD4KKy1pbnQKKy1tYWluICh2 b2lkKQorLXsKKy0KKy0jaWYgX19GcmVlQlNEX18gPT0gNAorLWVycm9yICJObywgaW4gRnJlZUJT RCA0LjAgcmVjdXJzaXZlIG11dGV4ZXMgYWN0dWFsbHkgZG9uJ3Qgd29yay4iCistI2VsaWYgKGRl ZmluZWQgX19FTlZJUk9OTUVOVF9NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRF9fIFwKKy0g ICAgICAgJiYgX19FTlZJUk9OTUVOVF9NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRF9fIDwg MTA3MCkKKy1lcnJvciAiTm8sIGluIE1hYyBPUyBYIDwgMTAuNyByZWN1cnNpdmUgbXV0ZXhlcyBh Y3R1YWxseSBkb24ndCB3b3JrLiIKKy0jZWxzZQorLWludCB4ID0gKGludClQVEhSRUFEX01VVEVY X1JFQ1VSU0lWRTsKKy1yZXR1cm4gIXg7CistI2VuZGlmCistCistICA7CistICByZXR1cm4gMDsK Ky19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoK Ky0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUg MSIgPj5jb25mZGVmcy5oCistCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorLSAgZmkKKy0gIDoK Ky0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgZm9yICRDQyBvcHRpb25zIG5lZWRlZCB0byBkZXRlY3QgYWxsIHVuZGVjbGFyZWQgZnVuY3Rp b25zIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciAkQ0Mgb3B0aW9ucyBuZWVkZWQgdG8g ZGV0ZWN0IGFsbCB1bmRlY2xhcmVkIGZ1bmN0aW9ucy4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHth Y19jdl9jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25zK3l9CistdGhlbiA6CistICBwcmludGYg JXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX3NhdmVfQ0ZM QUdTPSRDRkxBR1MKKy0gICBhY19jdl9jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25zPSdjYW5u b3QgZGV0ZWN0JworLSAgIGZvciBhY19hcmcgaW4gJycgLWZuby1idWlsdGluOyBkbworLSAgICAg Q0ZMQUdTPSIkYWNfc2F2ZV9DRkxBR1MgJGFjX2FyZyIKKy0gICAgICMgVGhpcyB0ZXN0IHByb2dy YW0gc2hvdWxkICpub3QqIGNvbXBpbGUgc3VjY2Vzc2Z1bGx5LgorLSAgICAgY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8K Ky0KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy0odm9pZCkgc3RyY2hyOworLSAgOworLSAgcmV0 dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCist dGhlbiA6CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpICMgVGhpcyB0ZXN0IHByb2dyYW0g c2hvdWxkIGNvbXBpbGUgc3VjY2Vzc2Z1bGx5LgorLSAgICAgICAgIyBObyBsaWJyYXJ5IGZ1bmN0 aW9uIGlzIGNvbnNpc3RlbnRseSBhdmFpbGFibGUgb24KKy0gICAgICAgICMgZnJlZXN0YW5kaW5n IGltcGxlbWVudGF0aW9ucywgc28gdGVzdCBhZ2FpbnN0IGEgZHVtbXkKKy0gICAgICAgICMgZGVj bGFyYXRpb24uICBJbmNsdWRlIGFsd2F5cy1hdmFpbGFibGUgaGVhZGVycyBvbiB0aGUKKy0gICAg ICAgICMgb2ZmIGNoYW5jZSB0aGF0IHRoZXkgc29tZWhvdyBlbGljaXQgd2FybmluZ3MuCistICAg ICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5k IGNvbmZkZWZzLmguICAqLworLSNpbmNsdWRlIDxmbG9hdC5oPgorLSNpbmNsdWRlIDxsaW1pdHMu aD4KKy0jaW5jbHVkZSA8c3RkYXJnLmg+CistI2luY2x1ZGUgPHN0ZGRlZi5oPgorLWV4dGVybiB2 b2lkIGFjX2RlY2wgKGludCwgY2hhciAqKTsKKy0KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy0o dm9pZCkgYWNfZGVjbCAoMCwgKGNoYXIgKikgMCk7CistICAodm9pZCkgYWNfZGVjbDsKKy0KKy0g IDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIk TElORU5PIgorLXRoZW4gOgorLSAgaWYgdGVzdCB4IiRhY19hcmciID0geAorLXRoZW4gOgorLSAg YWNfY3ZfY191bmRlY2xhcmVkX2J1aWx0aW5fb3B0aW9ucz0nbm9uZSBuZWVkZWQnCistZWxzZSBj YXNlIGUgaW4gIygKKy0gIGUpIGFjX2N2X2NfdW5kZWNsYXJlZF9idWlsdGluX29wdGlvbnM9JGFj X2FyZyA7OworLWVzYWMKKy1maQorLSAgICAgICAgICBicmVhaworLWZpCistcm0gLWYgY29yZSBj b25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRh Y19leHQgOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4k YWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorLSAgICBkb25lCistICAg IENGTEFHUz0kYWNfc2F2ZV9DRkxBR1MKKy0gICA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIl c1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jX3VuZGVj bGFyZWRfYnVpbHRpbl9vcHRpb25zIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfY3ZfY191bmRl Y2xhcmVkX2J1aWx0aW5fb3B0aW9ucyIgPiY2OyB9CistICBjYXNlICRhY19jdl9jX3VuZGVjbGFy ZWRfYnVpbHRpbl9vcHRpb25zIGluICMoCistICAnY2Fubm90IGRldGVjdCcpIDoKKy0gICAgeyB7 IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluICck YWNfcHdkJzoiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogZXJyb3I6IGluICckYWNfcHdk JzoiID4mMjt9CistYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBtYWtlICRDQyByZXBvcnQgdW5kZWNs YXJlZCBidWlsdGlucworLVNlZSAnY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5F Tk8iIDU7IH0gOzsgIygKKy0gICdub25lIG5lZWRlZCcpIDoKKy0gICAgYWNfY191bmRlY2xhcmVk X2J1aWx0aW5fb3B0aW9ucz0nJyA7OyAjKAorLSAgKikgOgorLSAgICBhY19jX3VuZGVjbGFyZWRf YnVpbHRpbl9vcHRpb25zPSRhY19jdl9jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25zIDs7Cist ZXNhYworLQorLQorLSAgICAgIGlmIHRlc3QgIlgkcHJlZml4IiA9ICJYTk9ORSI7IHRoZW4KKy0g ICAgYWNsX2ZpbmFsX3ByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4IgorLSAgZWxzZQorLSAgICBh Y2xfZmluYWxfcHJlZml4PSIkcHJlZml4IgorLSAgZmkKKy0gIGlmIHRlc3QgIlgkZXhlY19wcmVm aXgiID0gIlhOT05FIjsgdGhlbgorLSAgICBhY2xfZmluYWxfZXhlY19wcmVmaXg9JyR7cHJlZml4 fScKKy0gIGVsc2UKKy0gICAgYWNsX2ZpbmFsX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCist ICBmaQorLSAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgorLSAgcHJlZml4PSIkYWNsX2ZpbmFs X3ByZWZpeCIKKy0gIGV2YWwgYWNsX2ZpbmFsX2V4ZWNfcHJlZml4PVwiJGFjbF9maW5hbF9leGVj X3ByZWZpeFwiCistICBwcmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCistCistCistCistIyBDaGVj ayB3aGV0aGVyIC0td2l0aC1nbnUtbGQgd2FzIGdpdmVuLgorLWlmIHRlc3QgJHt3aXRoX2dudV9s ZCt5fQorLXRoZW4gOgorLSAgd2l0aHZhbD0kd2l0aF9nbnVfbGQ7IHRlc3QgIiR3aXRodmFsIiA9 IG5vIHx8IHdpdGhfZ251X2xkPXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSB3aXRoX2du dV9sZD1ubyA7OworLWVzYWMKKy1maQorLQorLSMgUHJlcGFyZSBQQVRIX1NFUEFSQVRPUi4KKy0j IFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KKy1pZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3Nl dH0iICE9IHNldDsgdGhlbgorLSAgIyBEZXRlcm1pbmUgUEFUSF9TRVBBUkFUT1IgYnkgdHJ5aW5n IHRvIGZpbmQgL2Jpbi9zaCBpbiBhIFBBVEggd2hpY2gKKy0gICMgY29udGFpbnMgb25seSAvYmlu LiBOb3RlIHRoYXQga3NoIGxvb2tzIGFsc28gYXQgdGhlIEZQQVRIIHZhcmlhYmxlLAorLSAgIyBz byB3ZSBoYXZlIHRvIHNldCB0aGF0IGFzIHdlbGwgZm9yIHRoZSB0ZXN0LgorLSAgUEFUSF9TRVBB UkFUT1I9OgorLSAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rl di9udWxsIDI+JjEgXAorLSAgICAmJiB7IChQQVRIPScvYmluOi9iaW4nOyBGUEFUSD0kUEFUSDsg c2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIFwKKy0gICAgICAgICAgIHx8IFBBVEhfU0VQQVJBVE9S PSc7JworLSAgICAgICB9CistZmkKKy0KKy1pZiB0ZXN0IC1uICIkTEQiOyB0aGVuCistICB7IHBy aW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGxk IiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBsZC4uLiAiID4mNjsgfQorLWVsaWYgdGVz dCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbGQgdXNlZCBieSAkQ0MiID4mNQorLXByaW50ZiAl cyAiY2hlY2tpbmcgZm9yIGxkIHVzZWQgYnkgJENDLi4uICIgPiY2OyB9CistZWxpZiB0ZXN0ICIk d2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCistICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEdOVSBsZCIgPiY1CistcHJpbnRmICVzICJj aGVja2luZyBmb3IgR05VIGxkLi4uICIgPiY2OyB9CistZWxzZQorLSAgeyBwcmludGYgIiVzXG4i ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBub24tR05VIGxkIiA+ JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBub24tR05VIGxkLi4uICIgPiY2OyB9CistZmkK Ky1pZiB0ZXN0IC1uICIkTEQiOyB0aGVuCistICAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg dGVzdCB3aXRoIGEgcGF0aC4KKy0gIDoKKy1lbHNlCistICBpZiB0ZXN0ICR7YWNsX2N2X3BhdGhf TEQreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2Ug ZSBpbiAjKAorLSAgZSkKKy0gICAgYWNsX2N2X3BhdGhfTEQ9ICMgRmluYWwgcmVzdWx0IG9mIHRo aXMgdGVzdAorLSAgICBhY19wcm9nPWxkICMgUHJvZ3JhbSB0byBzZWFyY2ggaW4gJFBBVEgKKy0g ICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0gICAgICAjIENoZWNrIGlmIGdjYyAtcHJp bnQtcHJvZy1uYW1lPWxkIGdpdmVzIGEgcGF0aC4KKy0gICAgICBjYXNlICRob3N0IGluCistICAg ICAgICAqLSotbWluZ3cqKQorLSAgICAgICAgICAjIGdjYyBsZWF2ZXMgYSB0cmFpbGluZyBjYXJy aWFnZSByZXR1cm4gd2hpY2ggdXBzZXRzIG1pbmd3CistICAgICAgICAgIGFjbF9vdXRwdXQ9YCgk Q0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNSB8IHRyIC1kICdcMDE1J2AgOzsKKy0gICAgICAg ICopCistICAgICAgICAgIGFjbF9vdXRwdXQ9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4m NWAgOzsKKy0gICAgICBlc2FjCistICAgICAgY2FzZSAkYWNsX291dHB1dCBpbgorLSAgICAgICAg IyBBY2NlcHQgYWJzb2x1dGUgcGF0aHMuCistICAgICAgICBbXFwvXSogfCA/OltcXC9dKikKKy0g ICAgICAgICAgcmVfZGlyZWx0PScvW14vXVteL10qL1wuXC4vJworLSAgICAgICAgICAjIENhbm9u aWNhbGl6ZSB0aGUgcGF0aG5hbWUgb2YgbGQKKy0gICAgICAgICAgYWNsX291dHB1dD1gZWNobyAi JGFjbF9vdXRwdXQiIHwgc2VkICdzJVxcXFwlLyVnJ2AKKy0gICAgICAgICAgd2hpbGUgZWNobyAi JGFjbF9vdXRwdXQiIHwgZ3JlcCAiJHJlX2RpcmVsdCIgPiAvZGV2L251bGwgMj4mMTsgZG8KKy0g ICAgICAgICAgICBhY2xfb3V0cHV0PWBlY2hvICRhY2xfb3V0cHV0IHwgc2VkICJzJSRyZV9kaXJl bHQlLyUiYAorLSAgICAgICAgICBkb25lCistICAgICAgICAgICMgR290IHRoZSBwYXRobmFtZS4g Tm8gc2VhcmNoIGluIFBBVEggaXMgbmVlZGVkLgorLSAgICAgICAgICBhY2xfY3ZfcGF0aF9MRD0i JGFjbF9vdXRwdXQiCistICAgICAgICAgIGFjX3Byb2c9CistICAgICAgICAgIDs7CistICAgICAg ICAiIikKKy0gICAgICAgICAgIyBJZiBpdCBmYWlscywgdGhlbiBwcmV0ZW5kIHdlIGFyZW4ndCB1 c2luZyBHQ0MuCistICAgICAgICAgIDs7CistICAgICAgICAqKQorLSAgICAgICAgICAjIElmIGl0 IGlzIHJlbGF0aXZlLCB0aGVuIHNlYXJjaCBmb3IgdGhlIGZpcnN0IGxkIGluIFBBVEguCistICAg ICAgICAgIHdpdGhfZ251X2xkPXVua25vd24KKy0gICAgICAgICAgOzsKKy0gICAgICBlc2FjCist ICAgIGZpCistICAgIGlmIHRlc3QgLW4gIiRhY19wcm9nIjsgdGhlbgorLSAgICAgICMgU2VhcmNo IGZvciAkYWNfcHJvZyBpbiAkUEFUSC4KKy0gICAgICBhY2xfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9 JFBBVEhfU0VQQVJBVE9SCistICAgICAgZm9yIGFjX2RpciBpbiAkUEFUSDsgZG8KKy0gICAgICAg IElGUz0iJGFjbF9zYXZlX2lmcyIKKy0gICAgICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rp cj0uCistICAgICAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nIiB8fCB0ZXN0IC1mICIk YWNfZGlyLyRhY19wcm9nJGFjX2V4ZWV4dCI7IHRoZW4KKy0gICAgICAgICAgYWNsX2N2X3BhdGhf TEQ9IiRhY19kaXIvJGFjX3Byb2ciCistICAgICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBw cm9ncmFtIGlzIEdOVSBsZC4gIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiwKKy0gICAgICAgICAg IyBidXQgYXBwYXJlbnRseSBzb21lIHZhcmlhbnRzIG9mIEdOVSBsZCBvbmx5IGFjY2VwdCAtdi4K Ky0gICAgICAgICAgIyBCcmVhayBvbmx5IGlmIGl0IHdhcyB0aGUgR05VL25vbi1HTlUgbGQgdGhh dCB3ZSBwcmVmZXIuCistICAgICAgICAgIGNhc2UgYCIkYWNsX2N2X3BhdGhfTEQiIC12IDI+JjEg PC9kZXYvbnVsbGAgaW4KKy0gICAgICAgICAgICAqR05VKiB8ICond2l0aCBCRkQnKikKKy0gICAg ICAgICAgICAgIHRlc3QgIiR3aXRoX2dudV9sZCIgIT0gbm8gJiYgYnJlYWsKKy0gICAgICAgICAg ICAgIDs7CistICAgICAgICAgICAgKikKKy0gICAgICAgICAgICAgIHRlc3QgIiR3aXRoX2dudV9s ZCIgIT0geWVzICYmIGJyZWFrCistICAgICAgICAgICAgICA7OworLSAgICAgICAgICBlc2FjCist ICAgICAgICBmaQorLSAgICAgIGRvbmUKKy0gICAgICBJRlM9IiRhY2xfc2F2ZV9pZnMiCistICAg IGZpCistICAgIGNhc2UgJGhvc3QgaW4KKy0gICAgICAqLSotYWl4KikKKy0gICAgICAgIGNhdCBj b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMu aC4gICovCistI2lmIGRlZmluZWQgX19wb3dlcnBjNjRfXyB8fCBkZWZpbmVkIF9fTFA2NF9fCist ICAgICAgICAgICAgICAgIGludCBvazsKKy0gICAgICAgICAgICAgICAjZWxzZQorLSAgICAgICAg ICAgICAgICBlcnJvciBmYWlsCistICAgICAgICAgICAgICAgI2VuZGlmCistCistX0FDRU9GCist aWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0gICMgVGhlIGNvbXBp bGVyIHByb2R1Y2VzIDY0LWJpdCBjb2RlLiBBZGQgb3B0aW9uICctYjY0JyBzbyB0aGF0IHRoZQor LSAgICAgICAgICAgIyBsaW5rZXIgZ3Jva3MgNjQtYml0IG9iamVjdCBmaWxlcy4KKy0gICAgICAg ICAgIGNhc2UgIiRhY2xfY3ZfcGF0aF9MRCAiIGluCistICAgICAgICAgICAgICoiIC1iNjQgIiop IDs7CistICAgICAgICAgICAgICopIGFjbF9jdl9wYXRoX0xEPSIkYWNsX2N2X3BhdGhfTEQgLWI2 NCIgOzsKKy0gICAgICAgICAgIGVzYWMKKy0KKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJy IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CistICAg ICAgICA7OworLSAgICAgIHNwYXJjNjQtKi1uZXRic2QqKQorLSAgICAgICAgY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8K Ky0jaWYgZGVmaW5lZCBfX3NwYXJjdjkgfHwgZGVmaW5lZCBfX2FyY2g2NF9fCistICAgICAgICAg ICAgICAgIGludCBvazsKKy0gICAgICAgICAgICAgICAjZWxzZQorLSAgICAgICAgICAgICAgICBl cnJvciBmYWlsCistICAgICAgICAgICAgICAgI2VuZGlmCistCistX0FDRU9GCistaWYgYWNfZm5f Y190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAor LSAgZSkgIyBUaGUgY29tcGlsZXIgcHJvZHVjZXMgMzItYml0IGNvZGUuIEFkZCBvcHRpb24gJy1t IGVsZjMyX3NwYXJjJworLSAgICAgICAgICAgIyBzbyB0aGF0IHRoZSBsaW5rZXIgZ3Jva3MgMzIt Yml0IG9iamVjdCBmaWxlcy4KKy0gICAgICAgICAgIGNhc2UgIiRhY2xfY3ZfcGF0aF9MRCAiIGlu CistICAgICAgICAgICAgICoiIC1tIGVsZjMyX3NwYXJjICIqKSA7OworLSAgICAgICAgICAgICAq KSBhY2xfY3ZfcGF0aF9MRD0iJGFjbF9jdl9wYXRoX0xEIC1tIGVsZjMyX3NwYXJjIiA7OworLSAg ICAgICAgICAgZXNhYworLSAgICAgICAgICAgOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFj X2V4dAorLSAgICAgICAgOzsKKy0gICAgZXNhYworLSAgIDs7CistZXNhYworLWZpCistCistICBM RD0iJGFjbF9jdl9wYXRoX0xEIgorLWZpCistaWYgdGVzdCAtbiAiJExEIjsgdGhlbgorLSAgeyBw cmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJExEIiA+ JjUKKy1wcmludGYgIiVzXG4iICIkTEQiID4mNjsgfQorLWVsc2UKKy0gIHsgcHJpbnRmICIlc1xu IiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKy1wcmludGYg IiVzXG4iICJubyIgPiY2OyB9CistICBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBsZCBm b3VuZCBpbiBcJFBBVEgiICIkTElORU5PIiA1CistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgdGhlIGxpbmtlciAoJExEKSBpcyBH TlUgbGQiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgaWYgdGhlIGxpbmtlciAoJExEKSBpcyBH TlUgbGQuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNsX2N2X3Byb2dfZ251X2xkK3l9CistdGhl biA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0g IGUpICMgSSdkIHJhdGhlciB1c2UgLS12ZXJzaW9uIGhlcmUsIGJ1dCBhcHBhcmVudGx5IHNvbWUg R05VIGxkcyBvbmx5IGFjY2VwdCAtdi4KKy1jYXNlIGAkTEQgLXYgMj4mMSA8L2Rldi9udWxsYCBp bgorLSpHTlUqIHwgKid3aXRoIEJGRCcqKQorLSAgYWNsX2N2X3Byb2dfZ251X2xkPXllcworLSAg OzsKKy0qKQorLSAgYWNsX2N2X3Byb2dfZ251X2xkPW5vCistICA7OworLWVzYWMgOzsKKy1lc2Fj CistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz dWx0OiAkYWNsX2N2X3Byb2dfZ251X2xkIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNsX2N2X3By b2dfZ251X2xkIiA+JjY7IH0KKy13aXRoX2dudV9sZD0kYWNsX2N2X3Byb2dfZ251X2xkCistCist CistCistCistCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n IGZvciBzaGFyZWQgbGlicmFyeSBydW4gcGF0aCBvcmlnaW4iID4mNQorLXByaW50ZiAlcyAiY2hl Y2tpbmcgZm9yIHNoYXJlZCBsaWJyYXJ5IHJ1biBwYXRoIG9yaWdpbi4uLiAiID4mNjsgfQorLWlm IHRlc3QgJHthY2xfY3ZfcnBhdGgreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkg IiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkKKy0gICAgQ0M9IiRDQyIgR0NDPSIkR0ND IiBMREZMQUdTPSIkTERGTEFHUyIgTEQ9IiRMRCIgd2l0aF9nbnVfbGQ9IiR3aXRoX2dudV9sZCIg XAorLSAgICAke0NPTkZJR19TSEVMTC0vYmluL3NofSAiJGFjX2F1eF9kaXIvY29uZmlnLnJwYXRo IiAiJGhvc3QiID4gY29uZnRlc3Quc2gKKy0gICAgLiAuL2NvbmZ0ZXN0LnNoCistICAgIHJtIC1m IC4vY29uZnRlc3Quc2gKKy0gICAgYWNsX2N2X3JwYXRoPWRvbmUKKy0gICA7OworLWVzYWMKKy1m aQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 ICRhY2xfY3ZfcnBhdGgiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY2xfY3ZfcnBhdGgiID4mNjsg fQorLSAgd2w9IiRhY2xfY3Zfd2wiCistICBhY2xfbGliZXh0PSIkYWNsX2N2X2xpYmV4dCIKKy0g IGFjbF9zaGxpYmV4dD0iJGFjbF9jdl9zaGxpYmV4dCIKKy0gIGFjbF9saWJuYW1lX3NwZWM9IiRh Y2xfY3ZfbGlibmFtZV9zcGVjIgorLSAgYWNsX2xpYnJhcnlfbmFtZXNfc3BlYz0iJGFjbF9jdl9s aWJyYXJ5X25hbWVzX3NwZWMiCistICBhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0iJGFj bF9jdl9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIgorLSAgYWNsX2hhcmRjb2RlX2xpYmRpcl9z ZXBhcmF0b3I9IiRhY2xfY3ZfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIKKy0gIGFjbF9oYXJk Y29kZV9kaXJlY3Q9IiRhY2xfY3ZfaGFyZGNvZGVfZGlyZWN0IgorLSAgYWNsX2hhcmRjb2RlX21p bnVzX0w9IiRhY2xfY3ZfaGFyZGNvZGVfbWludXNfTCIKKy0gICAgIyBDaGVjayB3aGV0aGVyIC0t ZW5hYmxlLXJwYXRoIHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICR7ZW5hYmxlX3JwYXRoK3l9CistdGhl biA6CistICBlbmFibGV2YWw9JGVuYWJsZV9ycGF0aDsgOgorLWVsc2UgY2FzZSBlIGluICMoCist ICBlKSBlbmFibGVfcnBhdGg9eWVzIDs7CistZXNhYworLWZpCistCistCistCistCistICB7IHBy aW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgMzItYml0 IGhvc3QgQyBBQkkiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgMzItYml0IGhvc3QgQyBBQkku Li4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7Z2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQreX0KKy10 aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAor LSAgZSkgaWYgdGVzdCAtbiAiJGdsX2N2X2hvc3RfY3B1X2NfYWJpIjsgdGhlbgorLSAgICAgICBj YXNlICIkZ2xfY3ZfaG9zdF9jcHVfY19hYmkiIGluCistICAgICAgICAgaTM4NiB8IHg4Nl82NC14 MzIgfCBhcm0gfCBhcm1oZiB8IGFybTY0LWlscDMyIHwgaHBwYSB8IGlhNjQtaWxwMzIgfCBtaXBz IHwgbWlwc24zMiB8IHBvd2VycGMgfCByaXNjdiotaWxwMzIqIHwgczM5MCB8IHNwYXJjKQorLSAg ICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzIDs7CistICAgICAgICAgeDg2 XzY0IHwgYWxwaGEgfCBhcm02NCB8IGhwcGE2NCB8IGlhNjQgfCBtaXBzNjQgfCBwb3dlcnBjNjQg fCBwb3dlcnBjNjQtZWxmdjIgfCByaXNjdiotbHA2NCogfCBzMzkweCB8IHNwYXJjNjQgKQorLSAg ICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm8gOzsKKy0gICAgICAgICAqKQor LSAgICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9dW5rbm93biA7OworLSAgICAg ICBlc2FjCistICAgICBlbHNlCistICAgICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KKy0KKy0gICAg ICAgICAjIENQVXMgdGhhdCBvbmx5IHN1cHBvcnQgYSAzMi1iaXQgQUJJLgorLSAgICAgICAgIGFy YyBcCistICAgICAgICAgfCBiZmluIFwKKy0gICAgICAgICB8IGNyaXMqIFwKKy0gICAgICAgICB8 IGNza3kgXAorLSAgICAgICAgIHwgZXBpcGhhbnkgXAorLSAgICAgICAgIHwgZnQzMiBcCistICAg ICAgICAgfCBoODMwMCBcCistICAgICAgICAgfCBtNjhrIFwKKy0gICAgICAgICB8IG1pY3JvYmxh emUgfCBtaWNyb2JsYXplZWwgXAorLSAgICAgICAgIHwgbmRzMzIgfCBuZHMzMmxlIHwgbmRzMzJi ZSBcCistICAgICAgICAgfCBuaW9zMiB8IG5pb3MyZWIgfCBuaW9zMmVsIFwKKy0gICAgICAgICB8 IG9yMWsqIFwKKy0gICAgICAgICB8IG9yMzIgXAorLSAgICAgICAgIHwgc2ggfCBzaDEyMzQgfCBz aDEyMzRlbGIgXAorLSAgICAgICAgIHwgdGljNnggXAorLSAgICAgICAgIHwgeHRlbnNhKiApCist ICAgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXMKKy0gICAgICAgICAgIDs7 CistCistICAgICAgICAgIyBDUFVzIHRoYXQgb25seSBzdXBwb3J0IGEgNjQtYml0IEFCSS4KKy0g ICAgICAgICBhbHBoYSB8IGFscGhhZXZbNC04XSB8IGFscGhhZXY1NiB8IGFscGhhcGNhNVs2N10g fCBhbHBoYWV2Nls3OF0gXAorLSAgICAgICAgIHwgbW1peCApCistICAgICAgICAgICBnbF9jdl9o b3N0X2NwdV9jX2FiaV8zMmJpdD1ubworLSAgICAgICAgICAgOzsKKy0KKy0gICAgICAgICBpWzM0 NTY3XTg2ICkKKy0gICAgICAgICAgIGdsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PXllcworLSAg ICAgICAgICAgOzsKKy0KKy0gICAgICAgICB4ODZfNjQgKQorLSAgICAgICAgICAgIyBPbiB4ODZf NjQgc3lzdGVtcywgdGhlIEMgY29tcGlsZXIgbWF5IGJlIGdlbmVyYXRpbmcgY29kZSBpbiBvbmUg b2YKKy0gICAgICAgICAgICMgdGhlc2UgQUJJczoKKy0gICAgICAgICAgICMgLSA2NC1iaXQgaW5z dHJ1Y3Rpb24gc2V0LCA2NC1iaXQgcG9pbnRlcnMsIDY0LWJpdCAnbG9uZyc6IHg4Nl82NC4KKy0g ICAgICAgICAgICMgLSA2NC1iaXQgaW5zdHJ1Y3Rpb24gc2V0LCA2NC1iaXQgcG9pbnRlcnMsIDMy LWJpdCAnbG9uZyc6IHg4Nl82NAorLSAgICAgICAgICAgIyAgIHdpdGggbmF0aXZlIFdpbmRvd3Mg KG1pbmd3LCBNU1ZDKS4KKy0gICAgICAgICAgICMgLSA2NC1iaXQgaW5zdHJ1Y3Rpb24gc2V0LCAz Mi1iaXQgcG9pbnRlcnMsIDMyLWJpdCAnbG9uZyc6IHg4Nl82NC14MzIuCistICAgICAgICAgICAj IC0gMzItYml0IGluc3RydWN0aW9uIHNldCwgMzItYml0IHBvaW50ZXJzLCAzMi1iaXQgJ2xvbmcn OiBpMzg2LgorLSAgICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu JGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0jaWYgKGRlZmluZWQgX194ODZfNjRf XyB8fCBkZWZpbmVkIF9fYW1kNjRfXyBcCistICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWZp bmVkIF9NX1g2NCB8fCBkZWZpbmVkIF9NX0FNRDY0KSBcCistICAgICAgICAgICAgICAgICAgICAg ICYmICEoZGVmaW5lZCBfX0lMUDMyX18gfHwgZGVmaW5lZCBfSUxQMzIpCistICAgICAgICAgICAg ICAgICAgIGludCBvazsKKy0gICAgICAgICAgICAgICAgICAjZWxzZQorLSAgICAgICAgICAgICAg ICAgICBlcnJvciBmYWlsCistICAgICAgICAgICAgICAgICAgI2VuZGlmCistCistX0FDRU9GCist aWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGdsX2N2X2hvc3Rf Y3B1X2NfYWJpXzMyYml0PW5vCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGdsX2N2X2hvc3Rf Y3B1X2NfYWJpXzMyYml0PXllcyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3Qu ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0Cist ICAgICAgICAgICA7OworLQorLSAgICAgICAgIGFybSogfCBhYXJjaDY0ICkKKy0gICAgICAgICAg ICMgQXNzdW1lIGFybSB3aXRoIEVBQkkuCistICAgICAgICAgICAjIE9uIGFybTY0IHN5c3RlbXMs IHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIGNvZGUgaW4gb25lIG9mCistICAgICAg ICAgICAjIHRoZXNlIEFCSXM6CistICAgICAgICAgICAjIC0gYWFyY2g2NCBpbnN0cnVjdGlvbiBz ZXQsIDY0LWJpdCBwb2ludGVycywgNjQtYml0ICdsb25nJzogYXJtNjQuCistICAgICAgICAgICAj IC0gYWFyY2g2NCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25n JzogYXJtNjQtaWxwMzIuCistICAgICAgICAgICAjIC0gMzItYml0IGluc3RydWN0aW9uIHNldCwg MzItYml0IHBvaW50ZXJzLCAzMi1iaXQgJ2xvbmcnOiBhcm0gb3IgYXJtaGYuCistICAgICAgICAg ICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNv bmZkZWZzLmguICAqLworLSNpZiBkZWZpbmVkIF9fYWFyY2g2NF9fICYmICEoZGVmaW5lZCBfX0lM UDMyX18gfHwgZGVmaW5lZCBfSUxQMzIpCistICAgICAgICAgICAgICAgICAgIGludCBvazsKKy0g ICAgICAgICAgICAgICAgICAjZWxzZQorLSAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCist ICAgICAgICAgICAgICAgICAgI2VuZGlmCistCistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29t cGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGdsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5v CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGdsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PXll cyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19v YmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICAgICA7OworLQor LSAgICAgICAgIGhwcGExLjAgfCBocHBhMS4xIHwgaHBwYTIuMCogfCBocHBhNjQgKQorLSAgICAg ICAgICAgIyBPbiBocHBhLCB0aGUgQyBjb21waWxlciBtYXkgYmUgZ2VuZXJhdGluZyAzMi1iaXQg Y29kZSBvciA2NC1iaXQKKy0gICAgICAgICAgICMgY29kZS4gSW4gdGhlIGxhdHRlciBjYXNlLCBp dCBkZWZpbmVzIF9MUDY0IGFuZCBfX0xQNjRfXy4KKy0gICAgICAgICAgIGNhdCBjb25mZGVmcy5o IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCist I2lmZGVmIF9fTFA2NF9fCistICAgICAgICAgICAgICAgICAgIGludCBvazsKKy0gICAgICAgICAg ICAgICAgICAjZWxzZQorLSAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCistICAgICAgICAg ICAgICAgICAgI2VuZGlmCistCistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJ TkVOTyIKKy10aGVuIDoKKy0gIGdsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vCistZWxzZSBj YXNlIGUgaW4gIygKKy0gIGUpIGdsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PXllcyA7OworLWVz YWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u ZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICAgICA7OworLQorLSAgICAgICAg IGlhNjQqICkKKy0gICAgICAgICAgICMgT24gaWE2NCBvbiBIUC1VWCwgdGhlIEMgY29tcGlsZXIg bWF5IGJlIGdlbmVyYXRpbmcgNjQtYml0IGNvZGUgb3IKKy0gICAgICAgICAgICMgMzItYml0IGNv ZGUuIEluIHRoZSBsYXR0ZXIgY2FzZSwgaXQgZGVmaW5lcyBfSUxQMzIuCistICAgICAgICAgICBj YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZk ZWZzLmguICAqLworLSNpZmRlZiBfSUxQMzIKKy0gICAgICAgICAgICAgICAgICAgaW50IG9rOwor LSAgICAgICAgICAgICAgICAgICNlbHNlCistICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwK Ky0gICAgICAgICAgICAgICAgICAjZW5kaWYKKy0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9j b21waWxlICIkTElORU5PIgorLXRoZW4gOgorLSAgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9 eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGdsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0 PW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFj X29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgICAgIDs7Cist CistICAgICAgICAgbWlwcyogKQorLSAgICAgICAgICAgIyBXZSBzaG91bGQgYWxzbyBjaGVjayBm b3IgKF9NSVBTX1NaUFRSID09IDY0KSwgYnV0IGdjYyBrZWVwcyB0aGlzCistICAgICAgICAgICAj IGF0IDMyLgorLSAgICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu JGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0jaWYgZGVmaW5lZCBfTUlQU19TWkxP TkcgJiYgKF9NSVBTX1NaTE9ORyA9PSA2NCkKKy0gICAgICAgICAgICAgICAgICAgaW50IG9rOwor LSAgICAgICAgICAgICAgICAgICNlbHNlCistICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwK Ky0gICAgICAgICAgICAgICAgICAjZW5kaWYKKy0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9j b21waWxlICIkTElORU5PIgorLXRoZW4gOgorLSAgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9 bm8KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9 eWVzIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFj X29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgICAgIDs7Cist CistICAgICAgICAgcG93ZXJwYyogKQorLSAgICAgICAgICAgIyBEaWZmZXJlbnQgQUJJcyBhcmUg aW4gdXNlIG9uIEFJWCB2cy4gTWFjIE9TIFggdnMuIExpbnV4LCpCU0QuCistICAgICAgICAgICAj IE5vIG5lZWQgdG8gZGlzdGluZ3Vpc2ggdGhlbSBoZXJlOyB0aGUgY2FsbGVyIG1heSBkaXN0aW5n dWlzaAorLSAgICAgICAgICAgIyB0aGVtIGJhc2VkIG9uIHRoZSBPUy4KKy0gICAgICAgICAgICMg T24gcG93ZXJwYzY0IHN5c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heSBzdGlsbCBiZSBnZW5lcmF0 aW5nCistICAgICAgICAgICAjIDMyLWJpdCBjb2RlLiBBbmQgb24gcG93ZXJwYy1pYm0tYWl4IHN5 c3RlbXMsIHRoZSBDIGNvbXBpbGVyIG1heQorLSAgICAgICAgICAgIyBiZSBnZW5lcmF0aW5nIDY0 LWJpdCBjb2RlLgorLSAgICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl c3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0jaWYgZGVmaW5lZCBfX3Bvd2Vy cGM2NF9fIHx8IGRlZmluZWQgX19MUDY0X18KKy0gICAgICAgICAgICAgICAgICAgaW50IG9rOwor LSAgICAgICAgICAgICAgICAgICNlbHNlCistICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwK Ky0gICAgICAgICAgICAgICAgICAjZW5kaWYKKy0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9j b21waWxlICIkTElORU5PIgorLXRoZW4gOgorLSAgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9 bm8KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9 eWVzIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFj X29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgICAgIDs7Cist CistICAgICAgICAgcnM2MDAwICkKKy0gICAgICAgICAgIGdsX2N2X2hvc3RfY3B1X2NfYWJpXzMy Yml0PXllcworLSAgICAgICAgICAgOzsKKy0KKy0gICAgICAgICByaXNjdjMyIHwgcmlzY3Y2NCAp CistICAgICAgICAgICAjIFRoZXJlIGFyZSA2IEFCSXM6IGlscDMyLCBpbHAzMmYsIGlscDMyZCwg bHA2NCwgbHA2NGYsIGxwNjRkLgorLSAgICAgICAgICAgIyBTaXplIG9mICdsb25nJyBhbmQgJ3Zv aWQgKic6CistICAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k YWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLSNpZiBkZWZpbmVkIF9fTFA2NF9fCist ICAgICAgICAgICAgICAgICAgICBpbnQgb2s7CistICAgICAgICAgICAgICAgICAgI2Vsc2UKKy0g ICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKy0gICAgICAgICAgICAgICAgICAjZW5kaWYK Ky0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRoZW4gOgor LSAgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm8KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzIDs7CistZXNhYworLWZpCistcm0gLWYg Y29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0 ZXN0LiRhY19leHQKKy0gICAgICAgICAgIDs7CistCistICAgICAgICAgczM5MCogKQorLSAgICAg ICAgICAgIyBPbiBzMzkweCwgdGhlIEMgY29tcGlsZXIgbWF5IGJlIGdlbmVyYXRpbmcgNjQtYml0 ICg9IHMzOTB4KSBjb2RlCistICAgICAgICAgICAjIG9yIDMxLWJpdCAoPSBzMzkwKSBjb2RlLgor LSAgICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAor LS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0jaWYgZGVmaW5lZCBfX0xQNjRfXyB8fCBkZWZpbmVk IF9fczM5MHhfXworLSAgICAgICAgICAgICAgICAgICAgaW50IG9rOworLSAgICAgICAgICAgICAg ICAgICNlbHNlCistICAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCistICAgICAgICAgICAg ICAgICAgI2VuZGlmCistCistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVO TyIKKy10aGVuIDoKKy0gIGdsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vCistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIGdsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PXllcyA7OworLWVzYWMK Ky1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl c3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICAgICA7OworLQorLSAgICAgICAgIHNw YXJjIHwgc3BhcmM2NCApCistICAgICAgICAgICAjIFVsdHJhU1BBUkNzIHJ1bm5pbmcgTGludXgg aGF2ZSBgdW5hbWUgLW1gID0gInNwYXJjNjQiLCBidXQgdGhlCistICAgICAgICAgICAjIEMgY29t cGlsZXIgc3RpbGwgZ2VuZXJhdGVzIDMyLWJpdCBjb2RlLgorLSAgICAgICAgICAgY2F0IGNvbmZk ZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAg Ki8KKy0jaWYgZGVmaW5lZCBfX3NwYXJjdjkgfHwgZGVmaW5lZCBfX2FyY2g2NF9fCistICAgICAg ICAgICAgICAgICAgIGludCBvazsKKy0gICAgICAgICAgICAgICAgICAjZWxzZQorLSAgICAgICAg ICAgICAgICAgICBlcnJvciBmYWlsCistICAgICAgICAgICAgICAgICAgI2VuZGlmCistCistX0FD RU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGdsX2N2 X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGdsX2N2 X2hvc3RfY3B1X2NfYWJpXzMyYml0PXllcyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29u ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNf ZXh0CistICAgICAgICAgICA7OworLQorLSAgICAgICAgICopCistICAgICAgICAgICBnbF9jdl9o b3N0X2NwdV9jX2FiaV8zMmJpdD11bmtub3duCistICAgICAgICAgICA7OworLSAgICAgICBlc2Fj CistICAgICBmaQorLSAgICAgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJi aXQiID4mNQorLXByaW50ZiAiJXNcbiIgIiRnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdCIgPiY2 OyB9CistCistICBIT1NUX0NQVV9DX0FCSV8zMkJJVD0iJGdsX2N2X2hvc3RfY3B1X2NfYWJpXzMy Yml0IgorLQorLQorLQorLQorLQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIGZvciBFTEYgYmluYXJ5IGZvcm1hdCIgPiY1CistcHJpbnRm ICVzICJjaGVja2luZyBmb3IgRUxGIGJpbmFyeSBmb3JtYXQuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0 ICR7Z2xfY3ZfZWxmK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2Cist ZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0 ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistI2lmIGRlZmluZWQgX19FTEZf XyB8fCAoZGVmaW5lZCBfX2xpbnV4X18gJiYgZGVmaW5lZCBfX0VER19fKQorLSAgICAgICAgRXh0 ZW5zaWJsZSBMaW5raW5nIEZvcm1hdAorLSAgICAgICAgI2VuZGlmCistCistX0FDRU9GCistaWYg KGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQX1RSQURJ VElPTkFMICJFeHRlbnNpYmxlIExpbmtpbmcgRm9ybWF0IiA+L2Rldi9udWxsIDI+JjEKKy10aGVu IDoKKy0gIGdsX2N2X2VsZj15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgZ2xfY3ZfZWxm PW5vIDs7CistZXNhYworLWZpCistcm0gLXJmIGNvbmZ0ZXN0KgorLQorLSAgICAgOzsKKy1lc2Fj CistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz dWx0OiAkZ2xfY3ZfZWxmIiA+JjUKKy1wcmludGYgIiVzXG4iICIkZ2xfY3ZfZWxmIiA+JjY7IH0K Ky0gIGlmIHRlc3QgJGdsX2N2X2VsZiA9IHllczsgdGhlbgorLSAgICAjIEV4dHJhY3QgdGhlIEVM RiBjbGFzcyBvZiBhIGZpbGUgKDV0aCBieXRlKSBpbiBkZWNpbWFsLgorLSAgICAjIENmLiBodHRw czovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9FeGVjdXRhYmxlX2FuZF9MaW5rYWJsZV9Gb3JtYXQj RmlsZV9oZWFkZXIKKy0gICAgaWYgb2QgLUEgeCA8IC9kZXYvbnVsbCA+L2Rldi9udWxsIDI+L2Rl di9udWxsOyB0aGVuCistICAgICAgIyBVc2UgUE9TSVggb2QuCistICAgICAgZnVuY19lbGZjbGFz cyAoKQorLSAgICAgIHsKKy0gICAgICAgIG9kIC1BIG4gLXQgZDEgLWogNCAtTiAxCistICAgICAg fQorLSAgICBlbHNlCistICAgICAgIyBVc2UgQlNEIGhleGR1bXAuCistICAgICAgZnVuY19lbGZj bGFzcyAoKQorLSAgICAgIHsKKy0gICAgICAgIGRkIGJzPTEgY291bnQ9MSBza2lwPTQgMj4vZGV2 L251bGwgfCBoZXhkdW1wIC1lICcxLzEgIiUzZCAiJworLSAgICAgICAgZWNobworLSAgICAgIH0K Ky0gICAgZmkKKy0gICAgIyBVc2UgJ2V4cHInLCBub3QgJ3Rlc3QnLCB0byBjb21wYXJlIHRoZSB2 YWx1ZXMgb2YgZnVuY19lbGZjbGFzcywgYmVjYXVzZSBvbgorLSAgICAjIFNvbGFyaXMgMTEgT3Bl bkluZGlhbmEgYW5kIFNvbGFyaXMgMTEgT21uaU9TLCB0aGUgcmVzdWx0IGlzIDAwMSBvciAwMDIs CistICAgICMgbm90IDEgb3IgMi4KKy0gICAgY2FzZSAkSE9TVF9DUFVfQ19BQklfMzJCSVQgaW4K Ky0gICAgICB5ZXMpCistICAgICAgICAjIDMyLWJpdCBBQkkuCistICAgICAgICBhY2xfaXNfZXhw ZWN0ZWRfZWxmY2xhc3MgKCkKKy0gICAgICAgIHsKKy0gICAgICAgICAgZXhwciAiYGZ1bmNfZWxm Y2xhc3MgfCBzZWQgLWUgJ3MvWyAJXS8vZydgIiA9IDEgPiAvZGV2L251bGwKKy0gICAgICAgIH0K Ky0gICAgICAgIDs7CistICAgICAgbm8pCistICAgICAgICAjIDY0LWJpdCBBQkkuCistICAgICAg ICBhY2xfaXNfZXhwZWN0ZWRfZWxmY2xhc3MgKCkKKy0gICAgICAgIHsKKy0gICAgICAgICAgZXhw ciAiYGZ1bmNfZWxmY2xhc3MgfCBzZWQgLWUgJ3MvWyAJXS8vZydgIiA9IDIgPiAvZGV2L251bGwK Ky0gICAgICAgIH0KKy0gICAgICAgIDs7CistICAgICAgKikKKy0gICAgICAgICMgVW5rbm93bi4K Ky0gICAgICAgIGFjbF9pc19leHBlY3RlZF9lbGZjbGFzcyAoKQorLSAgICAgICAgeworLSAgICAg ICAgICA6CistICAgICAgICB9CistICAgICAgICA7OworLSAgICBlc2FjCistICBlbHNlCistICAg IGFjbF9pc19leHBlY3RlZF9lbGZjbGFzcyAoKQorLSAgICB7CistICAgICAgOgorLSAgICB9Cist ICBmaQorLQorLSAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgZm9yIHRoZSBjb21tb24gc3VmZml4ZXMgb2YgZGlyZWN0b3JpZXMgaW4gdGhl IGxpYnJhcnkgc2VhcmNoIHBhdGgiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHRoZSBj b21tb24gc3VmZml4ZXMgb2YgZGlyZWN0b3JpZXMgaW4gdGhlIGxpYnJhcnkgc2VhcmNoIHBhdGgu Li4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNsX2N2X2xpYmRpcnN0ZW1zK3l9CistdGhlbiA6Cist ICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpICAg ICAgICAgICBhY2xfbGliZGlyc3RlbT1saWIKKy0gICAgIGFjbF9saWJkaXJzdGVtMj0KKy0gICAg IGFjbF9saWJkaXJzdGVtMz0KKy0gICAgIGNhc2UgIiRob3N0X29zIiBpbgorLSAgICAgICBzb2xh cmlzKikKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiB0ZXN0ICRIT1NUX0NQVV9DX0FCSV8zMkJJVCA9IG5vOyB0aGVuCistICAgICAgICAg ICBhY2xfbGliZGlyc3RlbTI9bGliLzY0CistICAgICAgICAgICBjYXNlICIkaG9zdF9jcHUiIGlu CistICAgICAgICAgICAgIHNwYXJjKikgICAgICAgIGFjbF9saWJkaXJzdGVtMz1saWIvc3BhcmN2 OSA7OworLSAgICAgICAgICAgICBpKjg2IHwgeDg2XzY0KSBhY2xfbGliZGlyc3RlbTM9bGliL2Ft ZDY0IDs7CistICAgICAgICAgICBlc2FjCistICAgICAgICAgZmkKKy0gICAgICAgICA7OworLSAg ICAgICAqKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaHBhdGg9YChMQ19BTEw9QyAk Q0MgJENQUEZMQUdTICRDRkxBR1MgLXByaW50LXNlYXJjaC1kaXJzKSAyPi9kZXYvbnVsbCBcCist ICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLW4gLWUgJ3MsXmxpYnJhcmllczogLCxwJyB8IHNl ZCAtZSAncyxePSwsJ2AKKy0gICAgICAgICBpZiB0ZXN0ICRIT1NUX0NQVV9DX0FCSV8zMkJJVCAh PSBubzsgdGhlbgorLSAgICAgICAgICAgIyAzMi1iaXQgb3IgdW5rbm93biBBQkkuCistICAgICAg ICAgICBpZiB0ZXN0IC1kIC91c3IvbGliMzI7IHRoZW4KKy0gICAgICAgICAgICAgYWNsX2xpYmRp cnN0ZW0yPWxpYjMyCistICAgICAgICAgICBmaQorLSAgICAgICAgIGZpCistICAgICAgICAgaWYg dGVzdCAkSE9TVF9DUFVfQ19BQklfMzJCSVQgIT0geWVzOyB0aGVuCistICAgICAgICAgICAjIDY0 LWJpdCBvciB1bmtub3duIEFCSS4KKy0gICAgICAgICAgIGlmIHRlc3QgLWQgL3Vzci9saWI2NDsg dGhlbgorLSAgICAgICAgICAgICBhY2xfbGliZGlyc3RlbTM9bGliNjQKKy0gICAgICAgICAgIGZp CistICAgICAgICAgZmkKKy0gICAgICAgICBpZiB0ZXN0IC1uICIkc2VhcmNocGF0aCI7IHRoZW4K Ky0gICAgICAgICAgIGFjbF9zYXZlX0lGUz0iJHtJRlM9IAl9IjsgSUZTPSI6IgorLSAgICAgICAg ICAgZm9yIHNlYXJjaGRpciBpbiAkc2VhcmNocGF0aDsgZG8KKy0gICAgICAgICAgICAgaWYgdGVz dCAtZCAiJHNlYXJjaGRpciI7IHRoZW4KKy0gICAgICAgICAgICAgICBjYXNlICIkc2VhcmNoZGly IiBpbgorLSAgICAgICAgICAgICAgICAgKi9saWIzMi8gfCAqL2xpYjMyICkgYWNsX2xpYmRpcnN0 ZW0yPWxpYjMyIDs7CistICAgICAgICAgICAgICAgICAqL2xpYjY0LyB8ICovbGliNjQgKSBhY2xf bGliZGlyc3RlbTM9bGliNjQgOzsKKy0gICAgICAgICAgICAgICAgICovLi4vIHwgKi8uLiApCist ICAgICAgICAgICAgICAgICAgICMgQmV0dGVyIGlnbm9yZSBkaXJlY3RvcmllcyBvZiB0aGlzIGZv cm0uIFRoZXkgYXJlIG1pc2xlYWRpbmcuCistICAgICAgICAgICAgICAgICAgIDs7CistICAgICAg ICAgICAgICAgICAqKSBzZWFyY2hkaXI9YGNkICIkc2VhcmNoZGlyIiAmJiBwd2RgCistICAgICAg ICAgICAgICAgICAgICBjYXNlICIkc2VhcmNoZGlyIiBpbgorLSAgICAgICAgICAgICAgICAgICAg ICAqL2xpYjMyICkgYWNsX2xpYmRpcnN0ZW0yPWxpYjMyIDs7CistICAgICAgICAgICAgICAgICAg ICAgICovbGliNjQgKSBhY2xfbGliZGlyc3RlbTM9bGliNjQgOzsKKy0gICAgICAgICAgICAgICAg ICAgIGVzYWMgOzsKKy0gICAgICAgICAgICAgICBlc2FjCistICAgICAgICAgICAgIGZpCistICAg ICAgICAgICBkb25lCistICAgICAgICAgICBJRlM9IiRhY2xfc2F2ZV9JRlMiCistICAgICAgICAg ICBpZiB0ZXN0ICRIT1NUX0NQVV9DX0FCSV8zMkJJVCA9IHllczsgdGhlbgorLSAgICAgICAgICAg ICAjIDMyLWJpdCBBQkkuCistICAgICAgICAgICAgIGFjbF9saWJkaXJzdGVtMz0KKy0gICAgICAg ICAgIGZpCistICAgICAgICAgICBpZiB0ZXN0ICRIT1NUX0NQVV9DX0FCSV8zMkJJVCA9IG5vOyB0 aGVuCistICAgICAgICAgICAgICMgNjQtYml0IEFCSS4KKy0gICAgICAgICAgICAgYWNsX2xpYmRp cnN0ZW0yPQorLSAgICAgICAgICAgZmkKKy0gICAgICAgICBmaQorLSAgICAgICAgIDs7CistICAg ICBlc2FjCistICAgICB0ZXN0IC1uICIkYWNsX2xpYmRpcnN0ZW0yIiB8fCBhY2xfbGliZGlyc3Rl bTI9IiRhY2xfbGliZGlyc3RlbSIKKy0gICAgIHRlc3QgLW4gIiRhY2xfbGliZGlyc3RlbTMiIHx8 IGFjbF9saWJkaXJzdGVtMz0iJGFjbF9saWJkaXJzdGVtIgorLSAgICAgYWNsX2N2X2xpYmRpcnN0 ZW1zPSIkYWNsX2xpYmRpcnN0ZW0sJGFjbF9saWJkaXJzdGVtMiwkYWNsX2xpYmRpcnN0ZW0zIgor LSAgICAgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkYWNsX2N2X2xpYmRpcnN0ZW1zIiA+JjUKKy1wcmludGYgIiVz XG4iICIkYWNsX2N2X2xpYmRpcnN0ZW1zIiA+JjY7IH0KKy0gICAgICBhY2xfbGliZGlyc3RlbT1g ZWNobyAiJGFjbF9jdl9saWJkaXJzdGVtcyIgfCBzZWQgLWUgJ3MvLC4qLy8nYAorLSAgYWNsX2xp YmRpcnN0ZW0yPWBlY2hvICIkYWNsX2N2X2xpYmRpcnN0ZW1zIiB8IHNlZCAtZSAncy9eW14sXSos Ly8nIC1lICdzLywuKi8vJ2AKKy0gIGFjbF9saWJkaXJzdGVtMz1gZWNobyAiJGFjbF9jdl9saWJk aXJzdGVtcyIgfCBzZWQgLWUgJ3MvXlteLF0qLFteLF0qLC8vJyAtZSAncy8sLiovLydgCistCist CistCistCistCistCistCistCistCistCistCistICAgIHVzZV9hZGRpdGlvbmFsPXllcworLQor LSAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgorLSAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZp eCIKKy0gIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCistICBleGVjX3ByZWZp eD0iJGFjbF9maW5hbF9leGVjX3ByZWZpeCIKKy0KKy0gICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1 ZGVkaXI9XCIkaW5jbHVkZWRpclwiCistICAgIGV2YWwgYWRkaXRpb25hbF9saWJkaXI9XCIkbGli ZGlyXCIKKy0gICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcjI9XCIkZXhlY19wcmVmaXgvJGFjbF9s aWJkaXJzdGVtMlwiCistICAgIGV2YWwgYWRkaXRpb25hbF9saWJkaXIzPVwiJGV4ZWNfcHJlZml4 LyRhY2xfbGliZGlyc3RlbTNcIgorLQorLSAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3By ZWZpeCIKKy0gIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKKy0KKy0KKy0jIENoZWNrIHdoZXRo ZXIgLS13aXRoLWxpYmljb252LXByZWZpeCB3YXMgZ2l2ZW4uCistaWYgdGVzdCAke3dpdGhfbGli aWNvbnZfcHJlZml4K3l9CistdGhlbiA6CistICB3aXRodmFsPSR3aXRoX2xpYmljb252X3ByZWZp eDsKKy0gICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYbm8iOyB0aGVuCistICAgICAgdXNlX2Fk ZGl0aW9uYWw9bm8KKy0gICAgZWxzZQorLSAgICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWCI7 IHRoZW4KKy0KKy0gIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKy0gIHByZWZpeD0iJGFjbF9m aW5hbF9wcmVmaXgiCistICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgorLSAg ZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCistCistICAgICAgICAgIGV2YWwg YWRkaXRpb25hbF9pbmNsdWRlZGlyPVwiJGluY2x1ZGVkaXJcIgorLSAgICAgICAgICBldmFsIGFk ZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCistICAgICAgICAgIGV2YWwgYWRkaXRpb25hbF9s aWJkaXIyPVwiJGV4ZWNfcHJlZml4LyRhY2xfbGliZGlyc3RlbTJcIgorLSAgICAgICAgICBldmFs IGFkZGl0aW9uYWxfbGliZGlyMz1cIiRleGVjX3ByZWZpeC8kYWNsX2xpYmRpcnN0ZW0zXCIKKy0K Ky0gIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCistICBwcmVmaXg9IiRhY2xf c2F2ZV9wcmVmaXgiCistCistICAgICAgZWxzZQorLSAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRl ZGlyPSIkd2l0aHZhbC9pbmNsdWRlIgorLSAgICAgICAgYWRkaXRpb25hbF9saWJkaXI9IiR3aXRo dmFsLyRhY2xfbGliZGlyc3RlbSIKKy0gICAgICAgIGFkZGl0aW9uYWxfbGliZGlyMj0iJHdpdGh2 YWwvJGFjbF9saWJkaXJzdGVtMiIKKy0gICAgICAgIGFkZGl0aW9uYWxfbGliZGlyMz0iJHdpdGh2 YWwvJGFjbF9saWJkaXJzdGVtMyIKKy0gICAgICBmaQorLSAgICBmaQorLQorLWZpCistCistICBp ZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyMiIgPSAiWCRhZGRpdGlvbmFsX2xpYmRpciI7IHRo ZW4KKy0gICAgYWRkaXRpb25hbF9saWJkaXIyPQorLSAgZmkKKy0gIGlmIHRlc3QgIlgkYWRkaXRp b25hbF9saWJkaXIzIiA9ICJYJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorLSAgICBhZGRpdGlv bmFsX2xpYmRpcjM9CistICBmaQorLSAgICAgIExJQklDT05WPQorLSAgTFRMSUJJQ09OVj0KKy0g IElOQ0lDT05WPQorLSAgTElCSUNPTlZfUFJFRklYPQorLSAgICAgIEhBVkVfTElCSUNPTlY9Cist ICBycGF0aGRpcnM9CistICBsdHJwYXRoZGlycz0KKy0gIG5hbWVzX2FscmVhZHlfaGFuZGxlZD0K Ky0gIG5hbWVzX25leHRfcm91bmQ9J2ljb252ICcKKy0gIHdoaWxlIHRlc3QgLW4gIiRuYW1lc19u ZXh0X3JvdW5kIjsgZG8KKy0gICAgbmFtZXNfdGhpc19yb3VuZD0iJG5hbWVzX25leHRfcm91bmQi CistICAgIG5hbWVzX25leHRfcm91bmQ9CistICAgIGZvciBuYW1lIGluICRuYW1lc190aGlzX3Jv dW5kOyBkbworLSAgICAgIGFscmVhZHlfaGFuZGxlZD0KKy0gICAgICBmb3IgbiBpbiAkbmFtZXNf YWxyZWFkeV9oYW5kbGVkOyBkbworLSAgICAgICAgaWYgdGVzdCAiJG4iID0gIiRuYW1lIjsgdGhl bgorLSAgICAgICAgICBhbHJlYWR5X2hhbmRsZWQ9eWVzCistICAgICAgICAgIGJyZWFrCistICAg ICAgICBmaQorLSAgICAgIGRvbmUKKy0gICAgICBpZiB0ZXN0IC16ICIkYWxyZWFkeV9oYW5kbGVk IjsgdGhlbgorLSAgICAgICAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPSIkbmFtZXNfYWxyZWFkeV9o YW5kbGVkICRuYW1lIgorLSAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVybmFtZT1gZWNobyAi JG5hbWUiIHwgc2VkIC1lICd5fGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLXxBQkNERUZH SElKS0xNTk9QUVJTVFVWV1hZWl9fX198J2AKKy0gICAgICAgIGV2YWwgdmFsdWU9XCJcJEhBVkVf TElCJHVwcGVybmFtZVwiCistICAgICAgICBpZiB0ZXN0IC1uICIkdmFsdWUiOyB0aGVuCistICAg ICAgICAgIGlmIHRlc3QgIiR2YWx1ZSIgPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgICBldmFsIHZh bHVlPVwiXCRMSUIkdXBwZXJuYW1lXCIKKy0gICAgICAgICAgICB0ZXN0IC16ICIkdmFsdWUiIHx8 IExJQklDT05WPSIke0xJQklDT05WfSR7TElCSUNPTlY6KyB9JHZhbHVlIgorLSAgICAgICAgICAg IGV2YWwgdmFsdWU9XCJcJExUTElCJHVwcGVybmFtZVwiCistICAgICAgICAgICAgdGVzdCAteiAi JHZhbHVlIiB8fCBMVExJQklDT05WPSIke0xUTElCSUNPTlZ9JHtMVExJQklDT05WOisgfSR2YWx1 ZSIKKy0gICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDoKKy0gICAgICAgICAgZmkKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmb3VuZF9kaXI9CistICAgICAgICAgIGZvdW5kX2xhPQorLSAgICAgICAgICBmb3Vu ZF9zbz0KKy0gICAgICAgICAgZm91bmRfYT0KKy0gICAgICAgICAgZXZhbCBsaWJuYW1lPVwiJGFj bF9saWJuYW1lX3NwZWNcIiAgICAjIHR5cGljYWxseTogbGlibmFtZT1saWIkbmFtZQorLSAgICAg ICAgICBpZiB0ZXN0IC1uICIkYWNsX3NobGliZXh0IjsgdGhlbgorLSAgICAgICAgICAgIHNocmV4 dD0iLiRhY2xfc2hsaWJleHQiICAgICAgICAgICAgICMgdHlwaWNhbGx5OiBzaHJleHQ9LnNvCist ICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICBzaHJleHQ9CistICAgICAgICAgIGZpCistICAg ICAgICAgIGlmIHRlc3QgJHVzZV9hZGRpdGlvbmFsID0geWVzOyB0aGVuCistICAgICAgICAgICAg Zm9yIGFkZGl0aW9uYWxfbGliZGlyX3ZhcmlhYmxlIGluIGFkZGl0aW9uYWxfbGliZGlyIGFkZGl0 aW9uYWxfbGliZGlyMiBhZGRpdGlvbmFsX2xpYmRpcjM7IGRvCistICAgICAgICAgICAgICBpZiB0 ZXN0ICJYJGZvdW5kX2RpciIgPSAiWCI7IHRoZW4KKy0gICAgICAgICAgICAgICAgZXZhbCBkaXI9 XCQkYWRkaXRpb25hbF9saWJkaXJfdmFyaWFibGUKKy0gICAgICAgICAgICAgICAgaWYgdGVzdCAt biAiJGRpciI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX3NobGliZXh0IjsgdGhlbgorLSAgICAgICAg ICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQiICYmIGFjbF9pc19l eHBlY3RlZF9lbGZjbGFzcyA8ICIkZGlyLyRsaWJuYW1lJHNocmV4dCI7IHRoZW4KKy0gICAgICAg ICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorLSAgICAgICAgICAgICAgICAgICAgICBm b3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJleHQiCistICAgICAgICAgICAgICAgICAgICBlbHNl CistICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfbGlicmFyeV9uYW1lc19zcGVj IiA9ICckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JzsgdGhlbgorLSAgICAgICAgICAgICAgICAg ICAgICAgIHZlcj1gKGNkICIkZGlyIiAmJiBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZm9yIGYgaW4gIiRsaWJuYW1lJHNocmV4dCIuKjsgZG8gZWNobyAiJGYiOyBkb25lIFwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtZSAicyxeJGxpYm5hbWUkc2hyZXh0 XFxcXC4sLCIgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc29ydCAtdCAnLicg LW4gLXIgLWsxLDEgLWsyLDIgLWszLDMgLWs0LDQgLWs1LDUgXAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgc2VkIDFxICkgMj4vZGV2L251bGxgCistICAgICAgICAgICAgICAgICAg ICAgICAgaWYgdGVzdCAtbiAiJHZlciIgJiYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQu JHZlciIgJiYgYWNsX2lzX2V4cGVjdGVkX2VsZmNsYXNzIDwgIiRkaXIvJGxpYm5hbWUkc2hyZXh0 LiR2ZXIiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIi CistICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJl eHQuJHZlciIKKy0gICAgICAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAg ICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCBsaWJyYXJ5X25hbWVzPVwi JGFjbF9saWJyYXJ5X25hbWVzX3NwZWNcIgorLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBm IGluICRsaWJyYXJ5X25hbWVzOyBkbworLSAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVz dCAtZiAiJGRpci8kZiIgJiYgYWNsX2lzX2V4cGVjdGVkX2VsZmNsYXNzIDwgIiRkaXIvJGYiOyB0 aGVuCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGYiCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrCistICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorLSAg ICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKy0gICAgICAgICAgICAgICAgICAgICAgZmkKKy0g ICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWCI7IHRo ZW4KKy0gICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUuJGFjbF9s aWJleHQiICYmICR7QVItYXJ9IC1wICIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IiB8IGFjbF9p c19leHBlY3RlZF9lbGZjbGFzczsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9k aXI9IiRkaXIiCistICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2E9IiRkaXIvJGxpYm5hbWUu JGFjbF9saWJleHQiCistICAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAg IGZpCistICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhl bgorLSAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZS5sYSI7IHRo ZW4KKy0gICAgICAgICAgICAgICAgICAgICAgZm91bmRfbGE9IiRkaXIvJGxpYm5hbWUubGEiCist ICAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAg ICAgICAgIGZpCistICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgIGRvbmUKKy0gICAgICAg ICAgZmkKKy0gICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgiOyB0aGVuCistICAg ICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExUTElCSUNPTlY7IGRvCistCistICBhY2xfc2F2 ZV9wcmVmaXg9IiRwcmVmaXgiCistICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgorLSAgYWNs X3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKy0gIGV4ZWNfcHJlZml4PSIkYWNsX2Zp bmFsX2V4ZWNfcHJlZml4IgorLSAgZXZhbCB4PVwiJHhcIgorLSAgZXhlY19wcmVmaXg9IiRhY2xf c2F2ZV9leGVjX3ByZWZpeCIKKy0gIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKKy0KKy0gICAg ICAgICAgICAgIGNhc2UgIiR4IiBpbgorLSAgICAgICAgICAgICAgICAtTCopCistICAgICAgICAg ICAgICAgICAgZGlyPWBlY2hvICJYJHgiIHwgc2VkIC1lICdzL15YLUwvLydgCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjbF9zaGxpYmV4dCI7IHRo ZW4KKy0gICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUkc2hyZXh0 IiAmJiBhY2xfaXNfZXhwZWN0ZWRfZWxmY2xhc3MgPCAiJGRpci8kbGlibmFtZSRzaHJleHQiOyB0 aGVuCistICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKy0gICAgICAgICAg ICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGxpYm5hbWUkc2hyZXh0IgorLSAgICAgICAgICAg ICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkYWNsX2xpYnJh cnlfbmFtZXNfc3BlYyIgPSAnJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCc7IHRoZW4KKy0gICAg ICAgICAgICAgICAgICAgICAgICB2ZXI9YChjZCAiJGRpciIgJiYgXAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZvciBmIGluICIkbGlibmFtZSRzaHJleHQiLio7IGRvIGVjaG8gIiRm IjsgZG9uZSBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLWUgInMsXiRs aWJuYW1lJHNocmV4dFxcXFwuLCwiIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IHNvcnQgLXQgJy4nIC1uIC1yIC1rMSwxIC1rMiwyIC1rMywzIC1rNCw0IC1rNSw1IFwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAxcSApIDI+L2Rldi9udWxsYAorLSAgICAg ICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiR2ZXIiICYmIHRlc3QgLWYgIiRkaXIvJGxp Ym5hbWUkc2hyZXh0LiR2ZXIiICYmIGFjbF9pc19leHBlY3RlZF9lbGZjbGFzcyA8ICIkZGlyLyRs aWJuYW1lJHNocmV4dC4kdmVyIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm91 bmRfZGlyPSIkZGlyIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIv JGxpYm5hbWUkc2hyZXh0LiR2ZXIiCistICAgICAgICAgICAgICAgICAgICAgICAgZmkKKy0gICAg ICAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwgbGli cmFyeV9uYW1lcz1cIiRhY2xfbGlicmFyeV9uYW1lc19zcGVjXCIKKy0gICAgICAgICAgICAgICAg ICAgICAgICBmb3IgZiBpbiAkbGlicmFyeV9uYW1lczsgZG8KKy0gICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGYiICYmIGFjbF9pc19leHBlY3RlZF9lbGZjbGFzcyA8 ICIkZGlyLyRmIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9 IiRkaXIiCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRmIgor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworLSAgICAgICAgICAgICAgICAgICAg ICAgICAgZmkKKy0gICAgICAgICAgICAgICAgICAgICAgICBkb25lCistICAgICAgICAgICAgICAg ICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAgIGZp CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9k aXIiID0gIlgiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRs aWJuYW1lLiRhY2xfbGliZXh0IiAmJiAke0FSLWFyfSAtcCAiJGRpci8kbGlibmFtZS4kYWNsX2xp YmV4dCIgfCBhY2xfaXNfZXhwZWN0ZWRfZWxmY2xhc3M7IHRoZW4KKy0gICAgICAgICAgICAgICAg ICAgICAgZm91bmRfZGlyPSIkZGlyIgorLSAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9hPSIk ZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IgorLSAgICAgICAgICAgICAgICAgICAgZmkKKy0gICAg ICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGly IiAhPSAiWCI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxp Ym5hbWUubGEiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2xhPSIkZGlyLyRs aWJuYW1lLmxhIgorLSAgICAgICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICAgICBm aQorLSAgICAgICAgICAgICAgICAgIDs7CistICAgICAgICAgICAgICBlc2FjCistICAgICAgICAg ICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCistICAgICAgICAgICAgICAg IGJyZWFrCistICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgIGRvbmUKKy0gICAgICAgICAg ZmkKKy0gICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhlbgorLSAgICAg ICAgICAgICAgICAgICAgICAgIExUTElCSUNPTlY9IiR7TFRMSUJJQ09OVn0ke0xUTElCSUNPTlY6 KyB9LUwkZm91bmRfZGlyIC1sJG5hbWUiCistICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9z byIgIT0gIlgiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkZW5hYmxlX3JwYXRoIiA9IG5vIFwKKy0gICAgICAg ICAgICAgICAgIHx8IHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0i IFwKKy0gICAgICAgICAgICAgICAgIHx8IHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYL3Vzci8kYWNs X2xpYmRpcnN0ZW0yIiBcCistICAgICAgICAgICAgICAgICB8fCB0ZXN0ICJYJGZvdW5kX2RpciIg PSAiWC91c3IvJGFjbF9saWJkaXJzdGVtMyI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExJQklDT05WPSIke0xJQklDT05WfSR7TElCSUNPTlY6KyB9JGZvdW5kX3NvIgor LSAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorLSAg ICAgICAgICAgICAgICBmb3IgeCBpbiAkbHRycGF0aGRpcnM7IGRvCistICAgICAgICAgICAgICAg ICAgaWYgdGVzdCAiWCR4IiA9ICJYJGZvdW5kX2RpciI7IHRoZW4KKy0gICAgICAgICAgICAgICAg ICAgIGhhdmVpdD15ZXMKKy0gICAgICAgICAgICAgICAgICAgIGJyZWFrCistICAgICAgICAgICAg ICAgICAgZmkKKy0gICAgICAgICAgICAgICAgZG9uZQorLSAgICAgICAgICAgICAgICBpZiB0ZXN0 IC16ICIkaGF2ZWl0IjsgdGhlbgorLSAgICAgICAgICAgICAgICAgIGx0cnBhdGhkaXJzPSIkbHRy cGF0aGRpcnMgJGZvdW5kX2RpciIKKy0gICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfaGFyZGNvZGVfZGlyZWN0IiA9IHllczsg dGhlbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExJQklDT05WPSIke0xJQklDT05WfSR7TElCSUNPTlY6KyB9JGZvdW5kX3NvIgorLSAgICAg ICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjbF9oYXJk Y29kZV9saWJkaXJfZmxhZ19zcGVjIiAmJiB0ZXN0ICIkYWNsX2hhcmRjb2RlX21pbnVzX0wiID0g bm87IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMSUJJQ09OVj0iJHtMSUJJQ09OVn0ke0xJQklDT05WOisgfSRmb3VuZF9z byIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBoYXZlaXQ9CistICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkcnBhdGhkaXJz OyBkbworLSAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZm91bmRfZGly IjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKy0gICAgICAgICAg ICAgICAgICAgICAgICBicmVhaworLSAgICAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAg ICAgICAgICAgICAgZG9uZQorLSAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVp dCI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgICAgcnBhdGhkaXJzPSIkcnBhdGhkaXJzICRm b3VuZF9kaXIiCistICAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAgIGVs c2UKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKy0gICAgICAgICAgICAgICAgICAg IGZvciB4IGluICRMREZMQUdTICRMSUJJQ09OVjsgZG8KKy0KKy0gIGFjbF9zYXZlX3ByZWZpeD0i JHByZWZpeCIKKy0gIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCistICBhY2xfc2F2ZV9leGVj X3ByZWZpeD0iJGV4ZWNfcHJlZml4IgorLSAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19w cmVmaXgiCistICBldmFsIHg9XCIkeFwiCistICBleGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNf cHJlZml4IgorLSAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorLQorLSAgICAgICAgICAgICAg ICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRmb3VuZF9kaXIiOyB0aGVuCistICAgICAgICAg ICAgICAgICAgICAgICAgaGF2ZWl0PXllcworLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr CistICAgICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgICBkb25lCist ICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorLSAgICAgICAg ICAgICAgICAgICAgICBMSUJJQ09OVj0iJHtMSUJJQ09OVn0ke0xJQklDT05WOisgfS1MJGZvdW5k X2RpciIKKy0gICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgICBpZiB0 ZXN0ICIkYWNsX2hhcmRjb2RlX21pbnVzX0wiICE9IG5vOyB0aGVuCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExJQklDT05WPSIke0xJQklDT05WfSR7TElCSUNPTlY6KyB9JGZvdW5k X3NvIgorLSAgICAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCSUNPTlY9IiR7TElCSUNP TlZ9JHtMSUJJQ09OVjorIH0tbCRuYW1lIgorLSAgICAgICAgICAgICAgICAgICAgZmkKKy0gICAg ICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgZmkK Ky0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2EiICE9 ICJYIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCSUNPTlY9IiR7 TElCSUNPTlZ9JHtMSUJJQ09OVjorIH0kZm91bmRfYSIKKy0gICAgICAgICAgICAgIGVsc2UKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJJQ09OVj0i JHtMSUJJQ09OVn0ke0xJQklDT05WOisgfS1MJGZvdW5kX2RpciAtbCRuYW1lIgorLSAgICAgICAg ICAgICAgZmkKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0 aW9uYWxfaW5jbHVkZWRpcj0KKy0gICAgICAgICAgICBjYXNlICIkZm91bmRfZGlyIiBpbgorLSAg ICAgICAgICAgICAgKi8kYWNsX2xpYmRpcnN0ZW0gfCAqLyRhY2xfbGliZGlyc3RlbS8pCistICAg ICAgICAgICAgICAgIGJhc2VkaXI9YGVjaG8gIlgkZm91bmRfZGlyIiB8IHNlZCAtZSAncyxeWCws JyAtZSAicywvJGFjbF9saWJkaXJzdGVtLyInKiQsLCdgCistICAgICAgICAgICAgICAgIGlmIHRl c3QgIiRuYW1lIiA9ICdpY29udic7IHRoZW4KKy0gICAgICAgICAgICAgICAgICBMSUJJQ09OVl9Q UkVGSVg9IiRiYXNlZGlyIgorLSAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICBh ZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiRiYXNlZGlyL2luY2x1ZGUiCistICAgICAgICAgICAgICAg IDs7CistICAgICAgICAgICAgICAqLyRhY2xfbGliZGlyc3RlbTIgfCAqLyRhY2xfbGliZGlyc3Rl bTIvKQorLSAgICAgICAgICAgICAgICBiYXNlZGlyPWBlY2hvICJYJGZvdW5kX2RpciIgfCBzZWQg LWUgJ3MsXlgsLCcgLWUgInMsLyRhY2xfbGliZGlyc3RlbTIvIicqJCwsJ2AKKy0gICAgICAgICAg ICAgICAgaWYgdGVzdCAiJG5hbWUiID0gJ2ljb252JzsgdGhlbgorLSAgICAgICAgICAgICAgICAg IExJQklDT05WX1BSRUZJWD0iJGJhc2VkaXIiCistICAgICAgICAgICAgICAgIGZpCistICAgICAg ICAgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJGJhc2VkaXIvaW5jbHVkZSIKKy0gICAg ICAgICAgICAgICAgOzsKKy0gICAgICAgICAgICAgICovJGFjbF9saWJkaXJzdGVtMyB8ICovJGFj bF9saWJkaXJzdGVtMy8pCistICAgICAgICAgICAgICAgIGJhc2VkaXI9YGVjaG8gIlgkZm91bmRf ZGlyIiB8IHNlZCAtZSAncyxeWCwsJyAtZSAicywvJGFjbF9saWJkaXJzdGVtMy8iJyokLCwnYAor LSAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkbmFtZSIgPSAnaWNvbnYnOyB0aGVuCistICAgICAg ICAgICAgICAgICAgTElCSUNPTlZfUFJFRklYPSIkYmFzZWRpciIKKy0gICAgICAgICAgICAgICAg ZmkKKy0gICAgICAgICAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPSIkYmFzZWRpci9pbmNs dWRlIgorLSAgICAgICAgICAgICAgICA7OworLSAgICAgICAgICAgIGVzYWMKKy0gICAgICAgICAg ICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgiOyB0aGVuCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3Qg IlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiAhPSAiWC91c3IvaW5jbHVkZSI7IHRoZW4KKy0gICAg ICAgICAgICAgICAgaGF2ZWl0PQorLSAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9u YWxfaW5jbHVkZWRpciIgPSAiWC91c3IvbG9jYWwvaW5jbHVkZSI7IHRoZW4KKy0gICAgICAgICAg ICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgY2Fz ZSAkaG9zdF9vcyBpbgorLSAgICAgICAgICAgICAgICAgICAgICBsaW51eCogfCBnbnUqIHwgaypi c2QqLWdudSkgaGF2ZWl0PXllczs7CistICAgICAgICAgICAgICAgICAgICBlc2FjCistICAgICAg ICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICAgaWYg dGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkQ1BQ RkxBR1MgJElOQ0lDT05WOyBkbworLQorLSAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgorLSAg cHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKy0gIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhl Y19wcmVmaXgiCistICBleGVjX3ByZWZpeD0iJGFjbF9maW5hbF9leGVjX3ByZWZpeCIKKy0gIGV2 YWwgeD1cIiR4XCIKKy0gIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCistICBw cmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCistCistICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0 ICJYJHgiID0gIlgtSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCistICAgICAgICAgICAg ICAgICAgICAgIGhhdmVpdD15ZXMKKy0gICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKy0gICAg ICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgZG9uZQorLSAgICAgICAgICAg ICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICBp ZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5DSUNPTlY9IiR7SU5DSUNPTlZ9JHtJTkNJ Q09OVjorIH0tSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiCistICAgICAgICAgICAgICAgICAgICBm aQorLSAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgIGZpCistICAgICAgICAg ICAgICBmaQorLSAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVz dCAtbiAiJGZvdW5kX2xhIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZV9saWJkaXI9IiRsaWJkaXIiCistICAgICAgICAg ICAgICBjYXNlICIkZm91bmRfbGEiIGluCistICAgICAgICAgICAgICAgICovKiB8ICpcXCopIC4g IiRmb3VuZF9sYSIgOzsKKy0gICAgICAgICAgICAgICAgKikgLiAiLi8kZm91bmRfbGEiIDs7Cist ICAgICAgICAgICAgICBlc2FjCistICAgICAgICAgICAgICBsaWJkaXI9IiRzYXZlX2xpYmRpciIK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGRlcCBpbiAkZGVwZW5kZW5jeV9saWJz OyBkbworLSAgICAgICAgICAgICAgICBjYXNlICIkZGVwIiBpbgorLSAgICAgICAgICAgICAgICAg IC1MKikKKy0gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3lfbGliZGlyPWBlY2hvICJYJGRl cCIgfCBzZWQgLWUgJ3MvXlgtTC8vJ2AKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRkZXBlbmRlbmN5X2xpYmRpciIgIT0gIlgvdXNyLyRh Y2xfbGliZGlyc3RlbSIgXAorLSAgICAgICAgICAgICAgICAgICAgICAgJiYgdGVzdCAiWCRkZXBl bmRlbmN5X2xpYmRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbTIiIFwKKy0gICAgICAgICAg ICAgICAgICAgICAgICYmIHRlc3QgIlgkZGVwZW5kZW5jeV9saWJkaXIiICE9ICJYL3Vzci8kYWNs X2xpYmRpcnN0ZW0zIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CistICAg ICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZGVwZW5kZW5jeV9saWJkaXIiID0gIlgvdXNy L2xvY2FsLyRhY2xfbGliZGlyc3RlbSIgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICB8fCB0 ZXN0ICJYJGRlcGVuZGVuY3lfbGliZGlyIiA9ICJYL3Vzci9sb2NhbC8kYWNsX2xpYmRpcnN0ZW0y IiBcCistICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRlc3QgIlgkZGVwZW5kZW5jeV9saWJk aXIiID0gIlgvdXNyL2xvY2FsLyRhY2xfbGliZGlyc3RlbTMiOyB0aGVuCistICAgICAgICAgICAg ICAgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAg ICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlu dXgqIHwgZ251KiB8IGsqYnNkKi1nbnUpIGhhdmVpdD15ZXM7OworLSAgICAgICAgICAgICAgICAg ICAgICAgICAgZXNhYworLSAgICAgICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAg ICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQi OyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorLSAgICAgICAgICAgICAg ICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMSUJJQ09OVjsgZG8KKy0KKy0gIGFjbF9zYXZl X3ByZWZpeD0iJHByZWZpeCIKKy0gIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCistICBhY2xf c2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgorLSAgZXhlY19wcmVmaXg9IiRhY2xfZmlu YWxfZXhlY19wcmVmaXgiCistICBldmFsIHg9XCIkeFwiCistICBleGVjX3ByZWZpeD0iJGFjbF9z YXZlX2V4ZWNfcHJlZml4IgorLSAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorLQorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkZGVwZW5kZW5jeV9saWJk aXIiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKy0gICAgICAgICAgICAgICAgICAgICAgICAg IGZpCistICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQorLSAgICAgICAgICAgICAgICAgICAg ICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiB0ZXN0IC1kICIkZGVwZW5kZW5jeV9saWJkaXIiOyB0aGVuCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJJQ09OVj0iJHtMSUJJ Q09OVn0ke0xJQklDT05WOisgfS1MJGRlcGVuZGVuY3lfbGliZGlyIgorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAg ICAgICAgICAgICAgIGhhdmVpdD0KKy0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAk TERGTEFHUyAkTFRMSUJJQ09OVjsgZG8KKy0KKy0gIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIK Ky0gIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCistICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0i JGV4ZWNfcHJlZml4IgorLSAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCist ICBldmFsIHg9XCIkeFwiCistICBleGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4Igor LSAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorLQorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkZGVwZW5kZW5jeV9saWJkaXIiOyB0aGVuCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAg ICAgICAgICAgICAgZG9uZQorLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRo YXZlaXQiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkZGVw ZW5kZW5jeV9saWJkaXIiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMVExJQklDT05WPSIke0xUTElCSUNPTlZ9JHtMVExJQklD T05WOisgfS1MJGRlcGVuZGVuY3lfbGliZGlyIgorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ZmkKKy0gICAgICAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAgICAgICBm aQorLSAgICAgICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICAgICAgIDs7CistICAg ICAgICAgICAgICAgICAgLVIqKQorLSAgICAgICAgICAgICAgICAgICAgZGlyPWBlY2hvICJYJGRl cCIgfCBzZWQgLWUgJ3MvXlgtUi8vJ2AKKy0gICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRl bmFibGVfcnBhdGgiICE9IG5vOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorLSAgICAgICAgICAg ICAgICAgICAgICBmb3IgeCBpbiAkcnBhdGhkaXJzOyBkbworLSAgICAgICAgICAgICAgICAgICAg ICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRkaXIiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAg ICAgICBoYXZlaXQ9eWVzCistICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworLSAgICAg ICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKy0gICAg ICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKy0gICAgICAgICAg ICAgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0aGRpcnMgJGRpciIKKy0gICAgICAgICAgICAg ICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CistICAgICAgICAgICAgICAgICAgICAgIGZv ciB4IGluICRsdHJwYXRoZGlyczsgZG8KKy0gICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0 ICJYJHgiID0gIlgkZGlyIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0 PXllcworLSAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKy0gICAgICAgICAgICAgICAg ICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAgICAgICBkb25lCistICAgICAgICAgICAgICAg ICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAg ICAgbHRycGF0aGRpcnM9IiRsdHJwYXRoZGlycyAkZGlyIgorLSAgICAgICAgICAgICAgICAgICAg ICBmaQorLSAgICAgICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICAgICAgIDs7Cist ICAgICAgICAgICAgICAgICAgLWwqKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkZXA9YGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1sLy8nYAorLSAg ICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRkZXAiICE9IFhjIFwKKy0gICAgICAgICAgICAg ICAgICAgICAgIHx8IGNhc2UgJGhvc3Rfb3MgaW4KKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGludXgqIHwgZ251KiB8IGsqYnNkKi1nbnUpIGZhbHNlIDs7CistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICopICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlIDs7CistICAgICAg ICAgICAgICAgICAgICAgICAgICBlc2FjOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgIG5h bWVzX25leHRfcm91bmQ9IiRuYW1lc19uZXh0X3JvdW5kICRkZXAiCistICAgICAgICAgICAgICAg ICAgICBmaQorLSAgICAgICAgICAgICAgICAgICAgOzsKKy0gICAgICAgICAgICAgICAgICAqLmxh KQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNfbmV4dF9yb3VuZD0iJG5hbWVzX25leHRf cm91bmQgImBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MsXlguKi8sLCcgLWUgJ3MsXmxpYiwsJyAt ZSAncyxcLmxhJCwsJ2AKKy0gICAgICAgICAgICAgICAgICAgIDs7CistICAgICAgICAgICAgICAg ICAgKikKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCSUNPTlY9 IiR7TElCSUNPTlZ9JHtMSUJJQ09OVjorIH0kZGVwIgorLSAgICAgICAgICAgICAgICAgICAgTFRM SUJJQ09OVj0iJHtMVExJQklDT05WfSR7TFRMSUJJQ09OVjorIH0kZGVwIgorLSAgICAgICAgICAg ICAgICAgICAgOzsKKy0gICAgICAgICAgICAgICAgZXNhYworLSAgICAgICAgICAgICAgZG9uZQor LSAgICAgICAgICAgIGZpCistICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJJQ09OVj0iJHtMSUJJQ09O Vn0ke0xJQklDT05WOisgfS1sJG5hbWUiCistICAgICAgICAgICAgTFRMSUJJQ09OVj0iJHtMVExJ QklDT05WfSR7TFRMSUJJQ09OVjorIH0tbCRuYW1lIgorLSAgICAgICAgICBmaQorLSAgICAgICAg ZmkKKy0gICAgICBmaQorLSAgICBkb25lCistICBkb25lCistICBpZiB0ZXN0ICJYJHJwYXRoZGly cyIgIT0gIlgiOyB0aGVuCistICAgIGlmIHRlc3QgLW4gIiRhY2xfaGFyZGNvZGVfbGliZGlyX3Nl cGFyYXRvciI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgICAgICBhbGxkaXJzPQorLSAgICAg IGZvciBmb3VuZF9kaXIgaW4gJHJwYXRoZGlyczsgZG8KKy0gICAgICAgIGFsbGRpcnM9IiR7YWxs ZGlyc30ke2FsbGRpcnM6KyRhY2xfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcn0kZm91bmRfZGly IgorLSAgICAgIGRvbmUKKy0gICAgICAgICAgICBhY2xfc2F2ZV9saWJkaXI9IiRsaWJkaXIiCist ICAgICAgbGliZGlyPSIkYWxsZGlycyIKKy0gICAgICBldmFsIGZsYWc9XCIkYWNsX2hhcmRjb2Rl X2xpYmRpcl9mbGFnX3NwZWNcIgorLSAgICAgIGxpYmRpcj0iJGFjbF9zYXZlX2xpYmRpciIKKy0g ICAgICBMSUJJQ09OVj0iJHtMSUJJQ09OVn0ke0xJQklDT05WOisgfSRmbGFnIgorLSAgICBlbHNl CistICAgICAgICAgICAgZm9yIGZvdW5kX2RpciBpbiAkcnBhdGhkaXJzOyBkbworLSAgICAgICAg YWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgorLSAgICAgICAgbGliZGlyPSIkZm91bmRfZGlyIgor LSAgICAgICAgZXZhbCBmbGFnPVwiJGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKy0g ICAgICAgIGxpYmRpcj0iJGFjbF9zYXZlX2xpYmRpciIKKy0gICAgICAgIExJQklDT05WPSIke0xJ QklDT05WfSR7TElCSUNPTlY6KyB9JGZsYWciCistICAgICAgZG9uZQorLSAgICBmaQorLSAgZmkK Ky0gIGlmIHRlc3QgIlgkbHRycGF0aGRpcnMiICE9ICJYIjsgdGhlbgorLSAgICAgICAgICAgIGZv ciBmb3VuZF9kaXIgaW4gJGx0cnBhdGhkaXJzOyBkbworLSAgICAgIExUTElCSUNPTlY9IiR7TFRM SUJJQ09OVn0ke0xUTElCSUNPTlY6KyB9LVIkZm91bmRfZGlyIgorLSAgICBkb25lCistICBmaQor LQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLSAgICAgICAgICBhbV9zYXZlX0NQUEZM QUdTPSIkQ1BQRkxBR1MiCistCistICBmb3IgZWxlbWVudCBpbiAkSU5DSUNPTlY7IGRvCistICAg IGhhdmVpdD0KKy0gICAgZm9yIHggaW4gJENQUEZMQUdTOyBkbworLQorLSAgYWNsX3NhdmVfcHJl Zml4PSIkcHJlZml4IgorLSAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKy0gIGFjbF9zYXZl X2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCistICBleGVjX3ByZWZpeD0iJGFjbF9maW5hbF9l eGVjX3ByZWZpeCIKKy0gIGV2YWwgeD1cIiR4XCIKKy0gIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVf ZXhlY19wcmVmaXgiCistICBwcmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCistCistICAgICAgaWYg dGVzdCAiWCR4IiA9ICJYJGVsZW1lbnQiOyB0aGVuCistICAgICAgICBoYXZlaXQ9eWVzCistICAg ICAgICBicmVhaworLSAgICAgIGZpCistICAgIGRvbmUKKy0gICAgaWYgdGVzdCAteiAiJGhhdmVp dCI7IHRoZW4KKy0gICAgICBDUFBGTEFHUz0iJHtDUFBGTEFHU30ke0NQUEZMQUdTOisgfSRlbGVt ZW50IgorLSAgICBmaQorLSAgZG9uZQorLQorLQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBpY29udiIgPiY1CistcHJpbnRmICVz ICJjaGVja2luZyBmb3IgaWNvbnYuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YW1fY3ZfZnVuY19p Y29udit5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2Fz ZSBlIGluICMoCistICBlKQorLSAgICBhbV9jdl9mdW5jX2ljb252PSJubywgY29uc2lkZXIgaW5z dGFsbGluZyBHTlUgbGliaWNvbnYiCistICAgIGFtX2N2X2xpYl9pY29udj1ubworLSAgICBjYXQg Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZz LmguICAqLworLQorLSNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8aWNvbnYuaD4KKy0K Ky1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1pY29udl90IGNkID0gaWNvbnZfb3BlbigiIiwiIik7 CistICAgICAgICAgICBpY29udihjZCxOVUxMLE5VTEwsTlVMTCxOVUxMKTsKKy0gICAgICAgICAg IGljb252X2Nsb3NlKGNkKTsKKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBh Y19mbl9jX3RyeV9saW5rICIkTElORU5PIgorLXRoZW4gOgorLSAgYW1fY3ZfZnVuY19pY29udj15 ZXMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u ZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Cist ICAgIGlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiAhPSB5ZXM7IHRoZW4KKy0gICAgICBhbV9z YXZlX0xJQlM9IiRMSUJTIgorLSAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKKy0gICAgICBj YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZk ZWZzLmguICAqLworLQorLSNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8aWNvbnYuaD4K Ky0KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1pY29udl90IGNkID0gaWNvbnZfb3BlbigiIiwi Iik7CistICAgICAgICAgICAgIGljb252KGNkLE5VTEwsTlVMTCxOVUxMLE5VTEwpOworLSAgICAg ICAgICAgICBpY29udl9jbG9zZShjZCk7CistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9G CistaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGFtX2N2X2xpYl9p Y29udj15ZXMKKy0gICAgICAgIGFtX2N2X2Z1bmNfaWNvbnY9eWVzCistZmkKKy1ybSAtZiBjb3Jl IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gXAorLSAgICBj b25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgIExJQlM9IiRhbV9zYXZl X0xJQlMiCistICAgIGZpCistICAgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYW1fY3ZfZnVuY19pY29udiIgPiY1 CistcHJpbnRmICIlc1xuIiAiJGFtX2N2X2Z1bmNfaWNvbnYiID4mNjsgfQorLSAgaWYgdGVzdCAi JGFtX2N2X2Z1bmNfaWNvbnYiID0geWVzOyB0aGVuCistICAgIHsgcHJpbnRmICIlc1xuIiAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29ya2luZyBpY29udiIgPiY1 CistcHJpbnRmICVzICJjaGVja2luZyBmb3Igd29ya2luZyBpY29udi4uLiAiID4mNjsgfQorLWlm IHRlc3QgJHthbV9jdl9mdW5jX2ljb252X3dvcmtzK3l9CistdGhlbiA6CistICBwcmludGYgJXMg IihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpCistICAgICAgICAgICAg ICAgICAgYW1fc2F2ZV9MSUJTPSIkTElCUyIKKy0gICAgICBpZiB0ZXN0ICRhbV9jdl9saWJfaWNv bnYgPSB5ZXM7IHRoZW4KKy0gICAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKKy0gICAgICBm aQorLSAgICAgIGFtX2N2X2Z1bmNfaWNvbnZfd29ya3M9bm8KKy0gICAgICBmb3IgYWNfaWNvbnZf Y29uc3QgaW4gJycgJ2NvbnN0JzsgZG8KKy0gICAgICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxp bmciID0geWVzCistdGhlbiA6CistICBjYXNlICIkaG9zdF9vcyIgaW4KKy0gICAgICAgICAgICAg YWl4KiB8IGhwdXgqKSBhbV9jdl9mdW5jX2ljb252X3dvcmtzPSJndWVzc2luZyBubyIgOzsKKy0g ICAgICAgICAgICAgKikgICAgICAgICAgICBhbV9jdl9mdW5jX2ljb252X3dvcmtzPSJndWVzc2lu ZyB5ZXMiIDs7CistICAgICAgICAgICBlc2FjCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRl ZnMuaC4gICovCistCistI2luY2x1ZGUgPGljb252Lmg+CistI2luY2x1ZGUgPHN0cmluZy5oPgor LQorLSNpZm5kZWYgSUNPTlZfQ09OU1QKKy0jIGRlZmluZSBJQ09OVl9DT05TVCAkYWNfaWNvbnZf Y29uc3QKKy0jZW5kaWYKKy0KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1pbnQgcmVzdWx0ID0g MDsKKy0gIC8qIFRlc3QgYWdhaW5zdCBBSVggNS4xLi4uNy4yIGJ1ZzogRmFpbHVyZXMgYXJlIG5v dCBkaXN0aW5ndWlzaGFibGUgZnJvbQorLSAgICAgc3VjY2Vzc2Z1bCByZXR1cm5zLiAgVGhpcyBp cyBldmVuIGRvY3VtZW50ZWQgaW4KKy0gICAgIDxodHRwczovL3d3dy5pYm0uY29tL3N1cHBvcnQv a25vd2xlZGdlY2VudGVyL3Nzd19haXhfNzIvaV9ib3N0ZWNocmVmL2ljb252Lmh0bWw+ICovCist ICB7CistICAgIGljb252X3QgY2RfdXRmOF90b184ODU5MSA9IGljb252X29wZW4gKCJJU084ODU5 LTEiLCAiVVRGLTgiKTsKKy0gICAgaWYgKGNkX3V0ZjhfdG9fODg1OTEgIT0gKGljb252X3QpKC0x KSkKKy0gICAgICB7CistICAgICAgICBzdGF0aWMgSUNPTlZfQ09OU1QgY2hhciBpbnB1dFtdID0g IlwzNDJcMjAyXDI1NCI7IC8qIEVVUk8gU0lHTiAqLworLSAgICAgICAgY2hhciBidWZbMTBdOwor LSAgICAgICAgSUNPTlZfQ09OU1QgY2hhciAqaW5wdHIgPSBpbnB1dDsKKy0gICAgICAgIHNpemVf dCBpbmJ5dGVzbGVmdCA9IHN0cmxlbiAoaW5wdXQpOworLSAgICAgICAgY2hhciAqb3V0cHRyID0g YnVmOworLSAgICAgICAgc2l6ZV90IG91dGJ5dGVzbGVmdCA9IHNpemVvZiAoYnVmKTsKKy0gICAg ICAgIHNpemVfdCByZXMgPSBpY29udiAoY2RfdXRmOF90b184ODU5MSwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmlucHRyLCAmaW5ieXRlc2xlZnQsCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZvdXRwdHIsICZvdXRieXRlc2xlZnQpOworLSAgICAgICAgaWYgKHJlcyA9PSAw KQorLSAgICAgICAgICByZXN1bHQgfD0gMTsKKy0gICAgICAgIGljb252X2Nsb3NlIChjZF91dGY4 X3RvXzg4NTkxKTsKKy0gICAgICB9CistICB9CistICAvKiBUZXN0IGFnYWluc3QgU29sYXJpcyAx MCBidWc6IEZhaWx1cmVzIGFyZSBub3QgZGlzdGluZ3Vpc2hhYmxlIGZyb20KKy0gICAgIHN1Y2Nl c3NmdWwgcmV0dXJucy4gICovCistICB7CistICAgIGljb252X3QgY2RfYXNjaWlfdG9fODg1OTEg PSBpY29udl9vcGVuICgiSVNPODg1OS0xIiwgIjY0NiIpOworLSAgICBpZiAoY2RfYXNjaWlfdG9f ODg1OTEgIT0gKGljb252X3QpKC0xKSkKKy0gICAgICB7CistICAgICAgICBzdGF0aWMgSUNPTlZf Q09OU1QgY2hhciBpbnB1dFtdID0gIlwyNjMiOworLSAgICAgICAgY2hhciBidWZbMTBdOworLSAg ICAgICAgSUNPTlZfQ09OU1QgY2hhciAqaW5wdHIgPSBpbnB1dDsKKy0gICAgICAgIHNpemVfdCBp bmJ5dGVzbGVmdCA9IHN0cmxlbiAoaW5wdXQpOworLSAgICAgICAgY2hhciAqb3V0cHRyID0gYnVm OworLSAgICAgICAgc2l6ZV90IG91dGJ5dGVzbGVmdCA9IHNpemVvZiAoYnVmKTsKKy0gICAgICAg IHNpemVfdCByZXMgPSBpY29udiAoY2RfYXNjaWlfdG9fODg1OTEsCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZpbnB0ciwgJmluYnl0ZXNsZWZ0LAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmb3V0cHRyLCAmb3V0Ynl0ZXNsZWZ0KTsKKy0gICAgICAgIGlmIChyZXMgPT0gMCkK Ky0gICAgICAgICAgcmVzdWx0IHw9IDI7CistICAgICAgICBpY29udl9jbG9zZSAoY2RfYXNjaWlf dG9fODg1OTEpOworLSAgICAgIH0KKy0gIH0KKy0gIC8qIFRlc3QgYWdhaW5zdCBBSVggNi4xLi43 LjEgYnVnOiBCdWZmZXIgb3ZlcnJ1bi4gICovCistICB7CistICAgIGljb252X3QgY2RfODg1OTFf dG9fdXRmOCA9IGljb252X29wZW4gKCJVVEYtOCIsICJJU08tODg1OS0xIik7CistICAgIGlmIChj ZF84ODU5MV90b191dGY4ICE9IChpY29udl90KSgtMSkpCistICAgICAgeworLSAgICAgICAgc3Rh dGljIElDT05WX0NPTlNUIGNoYXIgaW5wdXRbXSA9ICJcMzA0IjsKKy0gICAgICAgIHN0YXRpYyBj aGFyIGJ1ZlsyXSA9IHsgKGNoYXIpMHhERSwgKGNoYXIpMHhBRCB9OworLSAgICAgICAgSUNPTlZf Q09OU1QgY2hhciAqaW5wdHIgPSBpbnB1dDsKKy0gICAgICAgIHNpemVfdCBpbmJ5dGVzbGVmdCA9 IDE7CistICAgICAgICBjaGFyICpvdXRwdHIgPSBidWY7CistICAgICAgICBzaXplX3Qgb3V0Ynl0 ZXNsZWZ0ID0gMTsKKy0gICAgICAgIHNpemVfdCByZXMgPSBpY29udiAoY2RfODg1OTFfdG9fdXRm OCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlucHRyLCAmaW5ieXRlc2xlZnQsCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdHIsICZvdXRieXRlc2xlZnQpOworLSAg ICAgICAgaWYgKHJlcyAhPSAoc2l6ZV90KSgtMSkgfHwgb3V0cHRyIC0gYnVmID4gMSB8fCBidWZb MV0gIT0gKGNoYXIpMHhBRCkKKy0gICAgICAgICAgcmVzdWx0IHw9IDQ7CistICAgICAgICBpY29u dl9jbG9zZSAoY2RfODg1OTFfdG9fdXRmOCk7CistICAgICAgfQorLSAgfQorLSNpZiAwIC8qIFRo aXMgYnVnIGNvdWxkIGJlIHdvcmtlZCBhcm91bmQgYnkgdGhlIGNhbGxlci4gICovCistICAvKiBU ZXN0IGFnYWluc3QgSFAtVVggMTEuMTEgYnVnOiBQb3NpdGl2ZSByZXR1cm4gdmFsdWUgaW5zdGVh ZCBvZiAwLiAgKi8KKy0gIHsKKy0gICAgaWNvbnZfdCBjZF84ODU5MV90b191dGY4ID0gaWNvbnZf b3BlbiAoInV0ZjgiLCAiaXNvODg1OTEiKTsKKy0gICAgaWYgKGNkXzg4NTkxX3RvX3V0ZjggIT0g KGljb252X3QpKC0xKSkKKy0gICAgICB7CistICAgICAgICBzdGF0aWMgSUNPTlZfQ09OU1QgY2hh ciBpbnB1dFtdID0gIlwzMDRyZ2VyIG1pdCBiXDM2NnNlbiBCXDM3NGJjaGVuIG9obmUgQXVnZW5t YVwzMzciOworLSAgICAgICAgY2hhciBidWZbNTBdOworLSAgICAgICAgSUNPTlZfQ09OU1QgY2hh ciAqaW5wdHIgPSBpbnB1dDsKKy0gICAgICAgIHNpemVfdCBpbmJ5dGVzbGVmdCA9IHN0cmxlbiAo aW5wdXQpOworLSAgICAgICAgY2hhciAqb3V0cHRyID0gYnVmOworLSAgICAgICAgc2l6ZV90IG91 dGJ5dGVzbGVmdCA9IHNpemVvZiAoYnVmKTsKKy0gICAgICAgIHNpemVfdCByZXMgPSBpY29udiAo Y2RfODg1OTFfdG9fdXRmOCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlucHRyLCAm aW5ieXRlc2xlZnQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdHIsICZvdXRi eXRlc2xlZnQpOworLSAgICAgICAgaWYgKChpbnQpcmVzID4gMCkKKy0gICAgICAgICAgcmVzdWx0 IHw9IDg7CistICAgICAgICBpY29udl9jbG9zZSAoY2RfODg1OTFfdG9fdXRmOCk7CistICAgICAg fQorLSAgfQorLSNlbmRpZgorLSAgLyogVGVzdCBhZ2FpbnN0IEhQLVVYIDExLjExIGJ1ZzogTm8g Y29udmVydGVyIGZyb20gRVVDLUpQIHRvIFVURi04IGlzCistICAgICBwcm92aWRlZC4gICovCist ICB7CistICAgIC8qIFRyeSBzdGFuZGFyZGl6ZWQgbmFtZXMuICAqLworLSAgICBpY29udl90IGNk MSA9IGljb252X29wZW4gKCJVVEYtOCIsICJFVUMtSlAiKTsKKy0gICAgLyogVHJ5IElSSVgsIE9T Ri8xIG5hbWVzLiAgKi8KKy0gICAgaWNvbnZfdCBjZDIgPSBpY29udl9vcGVuICgiVVRGLTgiLCAi ZXVjSlAiKTsKKy0gICAgLyogVHJ5IEFJWCBuYW1lcy4gICovCistICAgIGljb252X3QgY2QzID0g aWNvbnZfb3BlbiAoIlVURi04IiwgIklCTS1ldWNKUCIpOworLSAgICAvKiBUcnkgSFAtVVggbmFt ZXMuICAqLworLSAgICBpY29udl90IGNkNCA9IGljb252X29wZW4gKCJ1dGY4IiwgImV1Y0pQIik7 CistICAgIGlmIChjZDEgPT0gKGljb252X3QpKC0xKSAmJiBjZDIgPT0gKGljb252X3QpKC0xKQor LSAgICAgICAgJiYgY2QzID09IChpY29udl90KSgtMSkgJiYgY2Q0ID09IChpY29udl90KSgtMSkp CistICAgICAgcmVzdWx0IHw9IDE2OworLSAgICBpZiAoY2QxICE9IChpY29udl90KSgtMSkpCist ICAgICAgaWNvbnZfY2xvc2UgKGNkMSk7CistICAgIGlmIChjZDIgIT0gKGljb252X3QpKC0xKSkK Ky0gICAgICBpY29udl9jbG9zZSAoY2QyKTsKKy0gICAgaWYgKGNkMyAhPSAoaWNvbnZfdCkoLTEp KQorLSAgICAgIGljb252X2Nsb3NlIChjZDMpOworLSAgICBpZiAoY2Q0ICE9IChpY29udl90KSgt MSkpCistICAgICAgaWNvbnZfY2xvc2UgKGNkNCk7CistICB9CistICByZXR1cm4gcmVzdWx0Owor LQorLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X3J1biAi JExJTkVOTyIKKy10aGVuIDoKKy0gIGFtX2N2X2Z1bmNfaWNvbnZfd29ya3M9eWVzCistZmkKKy1y bSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0 JGFjX2V4ZWV4dCBcCistICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRl c3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLQorLSAgICAgICAgdGVzdCAiJGFtX2N2X2Z1bmNf aWNvbnZfd29ya3MiID0gbm8gfHwgYnJlYWsKKy0gICAgICBkb25lCistICAgICAgTElCUz0iJGFt X3NhdmVfTElCUyIKKy0gICAgIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFtX2N2X2Z1bmNfaWNvbnZfd29ya3Mi ID4mNQorLXByaW50ZiAiJXNcbiIgIiRhbV9jdl9mdW5jX2ljb252X3dvcmtzIiA+JjY7IH0KKy0g ICAgY2FzZSAiJGFtX2N2X2Z1bmNfaWNvbnZfd29ya3MiIGluCistICAgICAgKm5vKSBhbV9mdW5j X2ljb252PW5vIGFtX2N2X2xpYl9pY29udj1ubyA7OworLSAgICAgICopICAgYW1fZnVuY19pY29u dj15ZXMgOzsKKy0gICAgZXNhYworLSAgZWxzZQorLSAgICBhbV9mdW5jX2ljb252PW5vIGFtX2N2 X2xpYl9pY29udj1ubworLSAgZmkKKy0gIGlmIHRlc3QgIiRhbV9mdW5jX2ljb252IiA9IHllczsg dGhlbgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9JQ09OViAxIiA+PmNvbmZkZWZz LmgKKy0KKy0gIGZpCistICBpZiB0ZXN0ICIkYW1fY3ZfbGliX2ljb252IiA9IHllczsgdGhlbgor LSAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgaG93IHRvIGxpbmsgd2l0aCBsaWJpY29udiIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBo b3cgdG8gbGluayB3aXRoIGxpYmljb252Li4uICIgPiY2OyB9CistICAgIHsgcHJpbnRmICIlc1xu IiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRMSUJJQ09OViIgPiY1Cist cHJpbnRmICIlc1xuIiAiJExJQklDT05WIiA+JjY7IH0KKy0gIGVsc2UKKy0gICAgICAgICAgICBD UFBGTEFHUz0iJGFtX3NhdmVfQ1BQRkxBR1MiCistICAgIExJQklDT05WPQorLSAgICBMVExJQklD T05WPQorLSAgZmkKKy0KKy0KKy0KKy0gIGlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiA9IHll czsgdGhlbgorLSAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgd2hldGhlciBpY29udiBpcyBjb21wYXRpYmxlIHdpdGggaXRzIFBPU0lYIHNp Z25hdHVyZSIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyB3aGV0aGVyIGljb252IGlzIGNvbXBh dGlibGUgd2l0aCBpdHMgUE9TSVggc2lnbmF0dXJlLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2ds X2N2X2ljb252X25vbmNvbnN0K3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIg PiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg PmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCistI2luY2x1ZGUg PHN0ZGxpYi5oPgorLSNpbmNsdWRlIDxpY29udi5oPgorLWV4dGVybgorLSNpZmRlZiBfX2NwbHVz cGx1cworLSJDIgorLSNlbmRpZgorLXNpemVfdCBpY29udiAoaWNvbnZfdCBjZCwgY2hhciAqICpp bmJ1Ziwgc2l6ZV90ICppbmJ5dGVzbGVmdCwgY2hhciAqICpvdXRidWYsIHNpemVfdCAqb3V0Ynl0 ZXNsZWZ0KTsKKy0KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy0KKy0gIDsKKy0gIHJldHVybiAw OworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRoZW4g OgorLSAgZ2xfY3ZfaWNvbnZfbm9uY29uc3Q9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUp IGdsX2N2X2ljb252X25vbmNvbnN0PW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25m dGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19l eHQKKy0gICAgICAgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfaWNvbnZfbm9uY29uc3QiID4mNQorLXBy aW50ZiAiJXNcbiIgIiRnbF9jdl9pY29udl9ub25jb25zdCIgPiY2OyB9CistICBlbHNlCistICAg ICAgICAgICAgZ2xfY3ZfaWNvbnZfbm9uY29uc3Q9eWVzCistICBmaQorLSAgaWYgdGVzdCAkZ2xf Y3ZfaWNvbnZfbm9uY29uc3QgPSB5ZXM7IHRoZW4KKy0gICAgaWNvbnZfYXJnMT0iIgorLSAgZWxz ZQorLSAgICBpY29udl9hcmcxPSJjb25zdCIKKy0gIGZpCistCistcHJpbnRmICIlc1xuIiAiI2Rl ZmluZSBJQ09OVl9DT05TVCAkaWNvbnZfYXJnMSIgPj5jb25mZGVmcy5oCistCistCistCistCist CistCistICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyog ZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28gKGludCBhKSB7IGEgPSBfX2J1aWx0aW5fZXhw ZWN0IChhLCAxMCk7IHJldHVybiBhID09IDEwID8gMCA6IDE7IH0KKy1pbnQKKy1tYWluICh2b2lk KQorLXsKKy0KKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3Ry eV9saW5rICIkTElORU5PIgorLXRoZW4gOgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFW RV9CVUlMVElOX0VYUEVDVCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLXJtIC1mIGNvcmUgY29u ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0 ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistCistICBhY19mbl9jX2NoZWNrX2hlYWRl cl9jb21waWxlICIkTElORU5PIiAiaW50dHlwZXMuaCIgImFjX2N2X2hlYWRlcl9pbnR0eXBlc19o IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfaW50dHlw ZXNfaCIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfSU5U VFlQRVNfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2Nv bXBpbGUgIiRMSU5FTk8iICJ1bmlzdGQuaCIgImFjX2N2X2hlYWRlcl91bmlzdGRfaCIgIiRhY19p bmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3VuaXN0ZF9oIiA9IHh5 ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9VTklTVERfSCAxIiA+ PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5F Tk8iICJzeXMvcGFyYW0uaCIgImFjX2N2X2hlYWRlcl9zeXNfcGFyYW1faCIgIiRhY19pbmNsdWRl c19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N5c19wYXJhbV9oIiA9IHh5ZXMK Ky10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TWVNfUEFSQU1fSCAxIiA+ PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLSAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAi Z2V0Y3dkIiAiYWNfY3ZfZnVuY19nZXRjd2QiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX2dldGN3 ZCIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfR0VUQ1dE IDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAi Z2V0ZWdpZCIgImFjX2N2X2Z1bmNfZ2V0ZWdpZCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZ2V0 ZWdpZCIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfR0VU RUdJRCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVO TyIgImdldGV1aWQiICJhY19jdl9mdW5jX2dldGV1aWQiCistaWYgdGVzdCAieCRhY19jdl9mdW5j X2dldGV1aWQiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZF X0dFVEVVSUQgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRM SU5FTk8iICJnZXRnaWQiICJhY19jdl9mdW5jX2dldGdpZCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1 bmNfZ2V0Z2lkIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFW RV9HRVRHSUQgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRM SU5FTk8iICJnZXR1aWQiICJhY19jdl9mdW5jX2dldHVpZCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1 bmNfZ2V0dWlkIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFW RV9HRVRVSUQgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRM SU5FTk8iICJtZW1wY3B5IiAiYWNfY3ZfZnVuY19tZW1wY3B5IgorLWlmIHRlc3QgIngkYWNfY3Zf ZnVuY19tZW1wY3B5IiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUg SEFWRV9NRU1QQ1BZIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5j ICIkTElORU5PIiAibXVubWFwIiAiYWNfY3ZfZnVuY19tdW5tYXAiCistaWYgdGVzdCAieCRhY19j dl9mdW5jX211bm1hcCIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5l IEhBVkVfTVVOTUFQIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5j ICIkTElORU5PIiAic3RwY3B5IiAiYWNfY3ZfZnVuY19zdHBjcHkiCistaWYgdGVzdCAieCRhY19j dl9mdW5jX3N0cGNweSIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5l IEhBVkVfU1RQQ1BZIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5j ICIkTElORU5PIiAic3RyY2FzZWNtcCIgImFjX2N2X2Z1bmNfc3RyY2FzZWNtcCIKKy1pZiB0ZXN0 ICJ4JGFjX2N2X2Z1bmNfc3RyY2FzZWNtcCIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVz XG4iICIjZGVmaW5lIEhBVkVfU1RSQ0FTRUNNUCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFj X2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInRzZWFyY2giICJhY19jdl9mdW5jX3RzZWFyY2gi CistaWYgdGVzdCAieCRhY19jdl9mdW5jX3RzZWFyY2giID0geHllcworLXRoZW4gOgorLSAgcHJp bnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1RTRUFSQ0ggMSIgPj5jb25mZGVmcy5oCistCistZmkK Ky1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJfX2ZzZXRsb2NraW5nIiAiYWNfY3ZfZnVu Y19fX2ZzZXRsb2NraW5nIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19fX2ZzZXRsb2NraW5nIiA9 IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9fX0ZTRVRMT0NL SU5HIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCistCistICAgICAgICAgIGFjX2ZuX2NoZWNr X2RlY2wgIiRMSU5FTk8iICJmZW9mX3VubG9ja2VkIiAiYWNfY3ZfaGF2ZV9kZWNsX2Zlb2ZfdW5s b2NrZWQiICIjaW5jbHVkZSA8c3RkaW8uaD4KKy0iICIkYWNfY191bmRlY2xhcmVkX2J1aWx0aW5f b3B0aW9ucyIgIkNGTEFHUyIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9mZW9mX3VubG9j a2VkIiA9IHh5ZXMKKy10aGVuIDoKKy0gIGFjX2hhdmVfZGVjbD0xCistZWxzZSBjYXNlIGUgaW4g IygKKy0gIGUpIGFjX2hhdmVfZGVjbD0wIDs7CistZXNhYworLWZpCistcHJpbnRmICIlc1xuIiAi I2RlZmluZSBIQVZFX0RFQ0xfRkVPRl9VTkxPQ0tFRCAkYWNfaGF2ZV9kZWNsIiA+PmNvbmZkZWZz LmgKKy1hY19mbl9jaGVja19kZWNsICIkTElORU5PIiAiZmdldHNfdW5sb2NrZWQiICJhY19jdl9o YXZlX2RlY2xfZmdldHNfdW5sb2NrZWQiICIjaW5jbHVkZSA8c3RkaW8uaD4KKy0iICIkYWNfY191 bmRlY2xhcmVkX2J1aWx0aW5fb3B0aW9ucyIgIkNGTEFHUyIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hh dmVfZGVjbF9mZ2V0c191bmxvY2tlZCIgPSB4eWVzCistdGhlbiA6CistICBhY19oYXZlX2RlY2w9 MQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19oYXZlX2RlY2w9MCA7OworLWVzYWMKKy1m aQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9ERUNMX0ZHRVRTX1VOTE9DS0VEICRhY19o YXZlX2RlY2wiID4+Y29uZmRlZnMuaAorLQorLQorLQorLQorLSAgICBhY19mbl9jX2NoZWNrX2Z1 bmMgIiRMSU5FTk8iICJsb2NhbGVjb252IiAiYWNfY3ZfZnVuY19sb2NhbGVjb252IgorLWlmIHRl c3QgIngkYWNfY3ZfZnVuY19sb2NhbGVjb252IiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAi JXNcbiIgIiNkZWZpbmUgSEFWRV9MT0NBTEVDT05WIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCist CistCistCistICBmb3IgYWNfcHJvZyBpbiBiaXNvbgorLWRvCistICAjIEV4dHJhY3QgdGhlIGZp cnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGgg YXJncy4KKy1zZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKy17IHByaW50ZiAiJXNcbiIg IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUK Ky1wcmludGYgJXMgImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorLWlmIHRlc3Qg JHthY19jdl9wcm9nX0lOVExCSVNPTit5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVk KSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiB0ZXN0IC1uICIkSU5UTEJJU09O IjsgdGhlbgorLSAgYWNfY3ZfcHJvZ19JTlRMQklTT049IiRJTlRMQklTT04iICMgTGV0IHRoZSB1 c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorLWVsc2UKKy1hc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBB VEhfU0VQQVJBVE9SCistZm9yIGFzX2RpciBpbiAkUEFUSAorLWRvCistICBJRlM9JGFzX3NhdmVf SUZTCistICBjYXNlICRhc19kaXIgaW4gIygoKAorLSAgICAnJykgYXNfZGlyPS4vIDs7CistICAg ICovKSA7OworLSAgICAqKSBhc19kaXI9JGFzX2Rpci8gOzsKKy0gIGVzYWMKKy0gICAgZm9yIGFj X2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCistICBpZiBhc19m bl9leGVjdXRhYmxlX3AgIiRhc19kaXIkYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAg YWNfY3ZfcHJvZ19JTlRMQklTT049IiRhY19wcm9nIgorLSAgICBwcmludGYgIiVzXG4iICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIkYWNfd29yZCRhY19leGVjX2V4 dCIgPiY1CistICAgIGJyZWFrIDIKKy0gIGZpCistZG9uZQorLSAgZG9uZQorLUlGUz0kYXNfc2F2 ZV9JRlMKKy0KKy1maSA7OworLWVzYWMKKy1maQorLUlOVExCSVNPTj0kYWNfY3ZfcHJvZ19JTlRM QklTT04KKy1pZiB0ZXN0IC1uICIkSU5UTEJJU09OIjsgdGhlbgorLSAgeyBwcmludGYgIiVzXG4i ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJElOVExCSVNPTiIgPiY1Cist cHJpbnRmICIlc1xuIiAiJElOVExCSVNPTiIgPiY2OyB9CistZWxzZQorLSAgeyBwcmludGYgIiVz XG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorLXByaW50 ZiAiJXNcbiIgIm5vIiA+JjY7IH0KKy1maQorLQorLQorLSAgdGVzdCAtbiAiJElOVExCSVNPTiIg JiYgYnJlYWsKKy1kb25lCistCistICBpZiB0ZXN0IC16ICIkSU5UTEJJU09OIjsgdGhlbgorLSAg ICBhY192ZXJjX2ZhaWw9eWVzCistICBlbHNlCistICAgIGNhdCA+Y29uZnRlc3QueSA8PF9BQ0VP RgorLSVyZXF1aXJlICIzLjAiCistJSUKKy1leHA6CistX0FDRU9GCistICAgIHsgcHJpbnRmICIl c1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYmlzb24gMy4w IG9yIG5ld2VyIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBiaXNvbiAzLjAgb3IgbmV3 ZXIuLi4gIiA+JjY7IH0KKy0gICAgYWNfcHJvZ192ZXJzaW9uPWAkSU5UTEJJU09OIC0tdmVyc2lv biAyPiYxIHwgc2VkIC1uICdzL14uKkdOVSBCaXNvbi4qIFwoWzAtOV0qXC5bMC05Ll0qXCkuKiQv XDEvcCdgCistICAgIDogJHthY19wcm9nX3ZlcnNpb246PSd2LiA/Lj8/J30KKy0gICAgaWYgJElO VExCSVNPTiBjb25mdGVzdC55IC1vIGNvbmZ0ZXN0LmMgMj4vZGV2L251bGw7IHRoZW4KKy0gICAg ICBhY19wcm9nX3ZlcnNpb249IiRhY19wcm9nX3ZlcnNpb24sIG9rIgorLSAgICAgIGFjX3ZlcmNf ZmFpbD1ubworLSAgICBlbHNlCistICAgICAgYWNfcHJvZ192ZXJzaW9uPSIkYWNfcHJvZ192ZXJz aW9uLCBiYWQiCistICAgICAgYWNfdmVyY19mYWlsPXllcworLSAgICBmaQorLSAgICBybSAtZiBj b25mdGVzdC55IGNvbmZ0ZXN0LmMKKy0gICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3Byb2dfdmVyc2lvbiIgPiY1CistcHJpbnRmICIl c1xuIiAiJGFjX3Byb2dfdmVyc2lvbiIgPiY2OyB9CistICBmaQorLSAgaWYgdGVzdCAkYWNfdmVy Y19mYWlsID0geWVzOyB0aGVuCistICAgIElOVExCSVNPTj06CistICBmaQorLQorLQorLQorLQor LQorLQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo ZWNraW5nIGZvciBsb25nIGxvbmcgaW50IiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBs b25nIGxvbmcgaW50Li4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X3R5cGVfbG9uZ19sb25n X2ludCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2Fz ZSBlIGluICMoCistICBlKSBhY19jdl90eXBlX2xvbmdfbG9uZ19pbnQ9eWVzCistICAgICAgY2Fz ZSAkYWNfcHJvZ19jY19zdGRjIGluCistCW5vIHwgYzg5KSA7OworLQkqKQorLQkgIGFjX2N2X3R5 cGVfbG9uZ19sb25nX2ludD0kYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmdfaW50CistCSAg aWYgdGVzdCAkYWNfY3ZfdHlwZV9sb25nX2xvbmdfaW50ID0geWVzOyB0aGVuCistCSAgICAJICAg IAkgICAgCSAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcworLXRoZW4gOgorLSAg OgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j b25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLSNpbmNsdWRlIDxsaW1p dHMuaD4KKy0JCSAgICNpZm5kZWYgTExPTkdfTUFYCistCQkgICAjIGRlZmluZSBIQUxGIFxcCist CQkJICAgICgxTEwgPDwgKHNpemVvZiAobG9uZyBsb25nIGludCkgKiBDSEFSX0JJVCAtIDIpKQor LQkJICAgIyBkZWZpbmUgTExPTkdfTUFYIChIQUxGIC0gMSArIEhBTEYpCistCQkgICAjZW5kaWYK Ky1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1sb25nIGxvbmcgaW50IG4gPSAxOworLQkJICAgaW50 IGk7CistCQkgICBmb3IgKGkgPSAwOyA7IGkrKykKKy0JCSAgICAgeworLQkJICAgICAgIGxvbmcg bG9uZyBpbnQgbSA9IG4gPDwgaTsKKy0JCSAgICAgICBpZiAobSA+PiBpICE9IG4pCistCQkJIHJl dHVybiAxOworLQkJICAgICAgIGlmIChMTE9OR19NQVggLyAyIDwgbSkKKy0JCQkgYnJlYWs7Cist CQkgICAgIH0KKy0JCSAgIHJldHVybiAwOworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VP RgorLWlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyIKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2Ug ZSBpbiAjKAorLSAgZSkgYWNfY3ZfdHlwZV9sb25nX2xvbmdfaW50PW5vIDs7CistZXNhYworLWZp Cistcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25m dGVzdCRhY19leGVleHQgXAorLSAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNv bmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy0KKy0JICBmaTs7CistICAgICAgZXNhYyA7 OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6ICRhY19jdl90eXBlX2xvbmdfbG9uZ19pbnQiID4mNQorLXByaW50ZiAiJXNc biIgIiRhY19jdl90eXBlX2xvbmdfbG9uZ19pbnQiID4mNjsgfQorLSAgaWYgdGVzdCAkYWNfY3Zf dHlwZV9sb25nX2xvbmdfaW50ID0geWVzOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmlu ZSBIQVZFX0xPTkdfTE9OR19JTlQgMSIgPj5jb25mZGVmcy5oCistCistICBmaQorLQorLQorLSAg eyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv ciB3Y2hhcl90IiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciB3Y2hhcl90Li4uICIgPiY2 OyB9CistaWYgdGVzdCAke2d0X2N2X2Nfd2NoYXJfdCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVz ICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMu aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLwor LSNpbmNsdWRlIDxzdGRkZWYuaD4KKy0gICAgICAgICAgICB3Y2hhcl90IGZvbyA9ICh3Y2hhcl90 KSdcMCc7CistaW50CistbWFpbiAodm9pZCkKKy17CistCistICA7CistICByZXR1cm4gMDsKKy19 CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0g IGd0X2N2X2Nfd2NoYXJfdD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgZ3RfY3ZfY193 Y2hhcl90PW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRl c3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCist ZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiAkZ3RfY3ZfY193Y2hhcl90IiA+JjUKKy1wcmludGYgIiVzXG4iICIkZ3RfY3ZfY193Y2hhcl90 IiA+JjY7IH0KKy0gIGlmIHRlc3QgJGd0X2N2X2Nfd2NoYXJfdCA9IHllczsgdGhlbgorLQorLXBy aW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9XQ0hBUl9UIDEiID4+Y29uZmRlZnMuaAorLQorLSAg ZmkKKy0KKy0KKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyBmb3Igd2ludF90IiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciB3aW50 X3QuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7Z3RfY3ZfY193aW50X3QreX0KKy10aGVuIDoKKy0g IHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVm cy5oLiAgKi8KKy0jaW5jbHVkZSA8d2NoYXIuaD4KKy0gICAgICAgICAgICB3aW50X3QgZm9vID0g KHdjaGFyX3QpJ1wwJzsKKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy0KKy0gIDsKKy0gIHJldHVy biAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRo ZW4gOgorLSAgZ3RfY3ZfY193aW50X3Q9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGd0 X2N2X2Nfd2ludF90PW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIg Y29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1l c2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkZ3RfY3ZfY193aW50X3QiID4mNQorLXByaW50ZiAiJXNcbiIgIiRndF9jdl9jX3dp bnRfdCIgPiY2OyB9CistICBpZiB0ZXN0ICRndF9jdl9jX3dpbnRfdCA9IHllczsgdGhlbgorLQor LXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9XSU5UX1QgMSIgPj5jb25mZGVmcy5oCistCist CistICAgICAgICAgICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGNoZWNraW5nIHdoZXRoZXIgd2ludF90IGlzIGxhcmdlIGVub3VnaCIgPiY1CistcHJpbnRm ICVzICJjaGVja2luZyB3aGV0aGVyIHdpbnRfdCBpcyBsYXJnZSBlbm91Z2guLi4gIiA+JjY7IH0K Ky1pZiB0ZXN0ICR7Z2xfY3ZfdHlwZV93aW50X3RfbGFyZ2VfZW5vdWdoK3l9CistdGhlbiA6Cist ICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRl ZnMuaC4gICovCistI2luY2x1ZGUgPHdjaGFyLmg+CistICAgICAgICAgICAgICBpbnQgdmVyaWZ5 W3NpemVvZiAod2ludF90KSA8IHNpemVvZiAoaW50KSA/IC0xIDogMV07CistCistaW50CistbWFp biAodm9pZCkKKy17CistCistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNf Zm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGdsX2N2X3R5cGVfd2ludF90 X2xhcmdlX2Vub3VnaD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgZ2xfY3ZfdHlwZV93 aW50X3RfbGFyZ2VfZW5vdWdoPW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVz dC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQg OzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkZ2xfY3ZfdHlwZV93aW50X3RfbGFyZ2VfZW5vdWdoIiA+JjUKKy1wcmlu dGYgIiVzXG4iICIkZ2xfY3ZfdHlwZV93aW50X3RfbGFyZ2VfZW5vdWdoIiA+JjY7IH0KKy0gICAg aWYgdGVzdCAkZ2xfY3ZfdHlwZV93aW50X3RfbGFyZ2VfZW5vdWdoID0gbm87IHRoZW4KKy0gICAg ICBHTlVMSUJIRUFERVJTX09WRVJSSURFX1dJTlRfVD0xCistICAgIGVsc2UKKy0gICAgICBHTlVM SUJIRUFERVJTX09WRVJSSURFX1dJTlRfVD0wCistICAgIGZpCistICBlbHNlCistICAgIEdOVUxJ QkhFQURFUlNfT1ZFUlJJREVfV0lOVF9UPTAKKy0gIGZpCistCistCistCistCistCistICB7IHBy aW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGlu dG1heF90IiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBpbnRtYXhfdC4uLiAiID4mNjsg fQorLWlmIHRlc3QgJHtndF9jdl9jX2ludG1heF90K3l9CistdGhlbiA6CistICBwcmludGYgJXMg IihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5o IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCist CistI2luY2x1ZGUgPHN0ZGRlZi5oPgorLSNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaWYgSEFWRV9T VERJTlRfSF9XSVRIX1VJTlRNQVgKKy0jaW5jbHVkZSA8c3RkaW50Lmg+CistI2VuZGlmCistI2lm IEhBVkVfSU5UVFlQRVNfSF9XSVRIX1VJTlRNQVgKKy0jaW5jbHVkZSA8aW50dHlwZXMuaD4KKy0j ZW5kaWYKKy0KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1pbnRtYXhfdCB4ID0gLTE7CistICAg ICAgICAgICAgcmV0dXJuICF4OworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlm IGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6CistICBndF9jdl9jX2ludG1h eF90PXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBndF9jdl9jX2ludG1heF90PW5vIDs7 CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4 dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy17IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ3RfY3ZfY19p bnRtYXhfdCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGd0X2N2X2NfaW50bWF4X3QiID4mNjsgfQor LSAgaWYgdGVzdCAkZ3RfY3ZfY19pbnRtYXhfdCA9IHllczsgdGhlbgorLQorLXByaW50ZiAiJXNc biIgIiNkZWZpbmUgSEFWRV9JTlRNQVhfVCAxIiA+PmNvbmZkZWZzLmgKKy0KKy0gIGZpCistCist CistCistICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgd2hldGhlciBwcmludGYoKSBzdXBwb3J0cyBQT1NJWC9YU0kgZm9ybWF0IHN0cmluZ3Mi ID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgd2hldGhlciBwcmludGYoKSBzdXBwb3J0cyBQT1NJ WC9YU0kgZm9ybWF0IHN0cmluZ3MuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7Z3RfY3ZfZnVuY19w cmludGZfcG9zaXgreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1l bHNlIGNhc2UgZSBpbiAjKAorLSAgZSkKKy0gICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5n IiA9IHllcworLXRoZW4gOgorLQorLSAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G ID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLSNpZiBkZWZp bmVkIF9fTmV0QlNEX18gfHwgZGVmaW5lZCBfX0JFT1NfXyB8fCBkZWZpbmVkIF9NU0NfVkVSIHx8 IGRlZmluZWQgX19NSU5HVzMyX18gfHwgZGVmaW5lZCBfX0NZR1dJTl9fCistICBub3Rwb3NpeAor LSNlbmRpZgorLQorLV9BQ0VPRgorLWlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQi KSAyPiY1IHwKKy0gICRFR1JFUF9UUkFESVRJT05BTCAibm90cG9zaXgiID4vZGV2L251bGwgMj4m MQorLXRoZW4gOgorLSAgZ3RfY3ZfZnVuY19wcmludGZfcG9zaXg9Imd1ZXNzaW5nIG5vIgorLWVs c2UgY2FzZSBlIGluICMoCistICBlKSBndF9jdl9mdW5jX3ByaW50Zl9wb3NpeD0iZ3Vlc3Npbmcg eWVzIiA7OworLWVzYWMKKy1maQorLXJtIC1yZiBjb25mdGVzdCoKKy0KKy0KKy1lbHNlIGNhc2Ug ZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4 dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0jaW5jbHVkZSA8c3RkaW8uaD4KKy0jaW5j bHVkZSA8c3RyaW5nLmg+CistLyogVGhlIHN0cmluZyAiJTIkZCAlMSRkIiwgd2l0aCBkb2xsYXIg Y2hhcmFjdGVycyBwcm90ZWN0ZWQgZnJvbSB0aGUgc2hlbGwncworLSAgIGRvbGxhciBleHBhbnNp b24gKHBvc3NpYmx5IGFuIGF1dG9jb25mIGJ1ZykuICAqLworLXN0YXRpYyBjaGFyIGZvcm1hdFtd ID0geyAnJScsICcyJywgJyQnLCAnZCcsICcgJywgJyUnLCAnMScsICckJywgJ2QnLCAnXDAnIH07 Cistc3RhdGljIGNoYXIgYnVmWzEwMF07CistaW50IG1haW4gKCkKKy17CistICBzcHJpbnRmIChi dWYsIGZvcm1hdCwgMzMsIDU1KTsKKy0gIHJldHVybiAoc3RyY21wIChidWYsICI1NSAzMyIpICE9 IDApOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iCistdGhlbiA6 CistICBndF9jdl9mdW5jX3ByaW50Zl9wb3NpeD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkgZ3RfY3ZfZnVuY19wcmludGZfcG9zaXg9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3Jl ICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4 dCBcCistICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4 dCA7OworLWVzYWMKKy1maQorLQorLSAgICAgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNc biIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ3RfY3ZfZnVuY19wcmlu dGZfcG9zaXgiID4mNQorLXByaW50ZiAiJXNcbiIgIiRndF9jdl9mdW5jX3ByaW50Zl9wb3NpeCIg PiY2OyB9CistICBjYXNlICRndF9jdl9mdW5jX3ByaW50Zl9wb3NpeCBpbgorLSAgICAqeWVzKQor LQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9QT1NJWF9QUklOVEYgMSIgPj5jb25mZGVm cy5oCistCistICAgICAgOzsKKy0gIGVzYWMKKy0KKy0KKy0gIGFjX2ZuX2NfY2hlY2tfaGVhZGVy X2NvbXBpbGUgIiRMSU5FTk8iICJzdGRpbnQuaCIgImFjX2N2X2hlYWRlcl9zdGRpbnRfaCIgIiRh Y19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N0ZGludF9oIiA9 IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TVERJTlRfSCAx IiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLSAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIFNJWkVfTUFYIiA+JjUKKy1wcmludGYg JXMgImNoZWNraW5nIGZvciBTSVpFX01BWC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHtnbF9jdl9z aXplX21heCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKQorLSAgICBnbF9jdl9zaXplX21heD1ubworLSAgICBjYXQgY29u ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmgu ICAqLworLQorLSNpbmNsdWRlIDxsaW1pdHMuaD4KKy0jaWYgSEFWRV9TVERJTlRfSAorLSNpbmNs dWRlIDxzdGRpbnQuaD4KKy0jZW5kaWYKKy0jaWZkZWYgU0laRV9NQVgKKy1Gb3VuZCBpdAorLSNl bmRpZgorLQorLV9BQ0VPRgorLWlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAy PiY1IHwKKy0gICRFR1JFUF9UUkFESVRJT05BTCAiRm91bmQgaXQiID4vZGV2L251bGwgMj4mMQor LXRoZW4gOgorLSAgZ2xfY3Zfc2l6ZV9tYXg9eWVzCistZmkKKy1ybSAtcmYgY29uZnRlc3QqCist CistICAgIGlmIHRlc3QgJGdsX2N2X3NpemVfbWF4ICE9IHllczsgdGhlbgorLSAgICAgICAgICAg ICAgICAgICAgICAgIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICJzaXplb2YgKHNp emVfdCkgKiBDSEFSX0JJVCAtIDEiICJzaXplX3RfYml0c19taW51c18xIiAgICAgICAgIiNpbmNs dWRlIDxzdGRkZWYuaD4KKy0jaW5jbHVkZSA8bGltaXRzLmg+IgorLXRoZW4gOgorLQorLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSBzaXplX3RfYml0c19taW51c18xPSA7OworLWVzYWMKKy1maQor LQorLSAgICAgIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICJzaXplb2YgKHNpemVf dCkgPD0gc2l6ZW9mICh1bnNpZ25lZCBpbnQpIiAiZml0c19pbl91aW50IiAgICAgICAgIiNpbmNs dWRlIDxzdGRkZWYuaD4iCistdGhlbiA6CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGZp dHNfaW5fdWludD0gOzsKKy1lc2FjCistZmkKKy0KKy0gICAgICBpZiB0ZXN0IC1uICIkc2l6ZV90 X2JpdHNfbWludXNfMSIgJiYgdGVzdCAtbiAiJGZpdHNfaW5fdWludCI7IHRoZW4KKy0gICAgICAg IGlmIHRlc3QgJGZpdHNfaW5fdWludCA9IDE7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyog ZW5kIGNvbmZkZWZzLmguICAqLworLSNpbmNsdWRlIDxzdGRkZWYuaD4KKy0gICAgICAgICAgICAg ICAgIGV4dGVybiBzaXplX3QgZm9vOworLSAgICAgICAgICAgICAgICAgZXh0ZXJuIHVuc2lnbmVk IGxvbmcgZm9vOworLQorLWludAorLW1haW4gKHZvaWQpCisteworLQorLSAgOworLSAgcmV0dXJu IDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhl biA6CistICBmaXRzX2luX3VpbnQ9MAorLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29u ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAg IGZpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICRmaXRzX2luX3Vp bnQgPSAxOyB0aGVuCistICAgICAgICAgIGdsX2N2X3NpemVfbWF4PSIoKCgxVSA8PCAkc2l6ZV90 X2JpdHNfbWludXNfMSkgLSAxKSAqIDIgKyAxKSIKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAg Z2xfY3Zfc2l6ZV9tYXg9IigoKDFVTCA8PCAkc2l6ZV90X2JpdHNfbWludXNfMSkgLSAxKSAqIDIg KyAxKSIKKy0gICAgICAgIGZpCistICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICBnbF9jdl9z aXplX21heD0nKChzaXplX3QpfihzaXplX3QpMCknCistICAgICAgZmkKKy0gICAgZmkKKy0gICA7 OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6ICRnbF9jdl9zaXplX21heCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGdsX2N2 X3NpemVfbWF4IiA+JjY7IH0KKy0gIGlmIHRlc3QgIiRnbF9jdl9zaXplX21heCIgIT0geWVzOyB0 aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBTSVpFX01BWCAkZ2xfY3Zfc2l6ZV9tYXgi ID4+Y29uZmRlZnMuaAorLQorLSAgZmkKKy0KKy0KKy0KKy0KKy0gIGFjX2ZuX2NfY2hlY2tfaGVh ZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJzdGRpbnQuaCIgImFjX2N2X2hlYWRlcl9zdGRpbnRfaCIg IiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N0ZGludF9o IiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TVERJTlRf SCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLQorLQorLQorLQorLQorLQorLQorLSAgeyBw cmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3 b3JraW5nIGZjbnRsLmgiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgZmNu dGwuaC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHtnbF9jdl9oZWFkZXJfd29ya2luZ19mY250bF9o K3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUg aW4gIygKKy0gIGUpIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzCistdGhlbiA6Cist ICBjYXNlICIkaG9zdF9vcyIgaW4KKy0gICAgICAgICAgICAgICAgICAjIEd1ZXNzICdubycgb24g bmF0aXZlIFdpbmRvd3MuCistICAgICAgICAgIG1pbmd3KikgZ2xfY3ZfaGVhZGVyX3dvcmtpbmdf ZmNudGxfaD0nbm8nIDs7CistICAgICAgICAgICopICAgICAgZ2xfY3ZfaGVhZGVyX3dvcmtpbmdf ZmNudGxfaD1jcm9zcy1jb21waWxpbmcgOzsKKy0gICAgICAgIGVzYWMKKy0KKy1lbHNlIGNhc2Ug ZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4 dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistICAg ICAgICAgICAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKy0gICAgICAgICAgICNpZiBIQVZFX1VOSVNU RF9ICistICAgICAgICAgICAjIGluY2x1ZGUgPHVuaXN0ZC5oPgorLSAgICAgICAgICAgI2Vsc2Ug Lyogb24gV2luZG93cyB3aXRoIE1TVkMgKi8KKy0gICAgICAgICAgICMgaW5jbHVkZSA8aW8uaD4K Ky0gICAgICAgICAgICMgaW5jbHVkZSA8c3RkbGliLmg+CistICAgICAgICAgICAjIGRlZmluZWQg c2xlZXAobikgX3NsZWVwICgobikgKiAxMDAwKQorLSAgICAgICAgICAgI2VuZGlmCistICAgICAg ICAgICAjaW5jbHVkZSA8ZmNudGwuaD4KKy0gICAgICAgICAgIEdMX01EQV9ERUZJTkVTCistICAg ICAgICAgICAjaWZuZGVmIE9fTk9BVElNRQorLSAgICAgICAgICAgICNkZWZpbmUgT19OT0FUSU1F IDAKKy0gICAgICAgICAgICNlbmRpZgorLSAgICAgICAgICAgI2lmbmRlZiBPX05PRk9MTE9XCist ICAgICAgICAgICAgI2RlZmluZSBPX05PRk9MTE9XIDAKKy0gICAgICAgICAgICNlbmRpZgorLSAg ICAgICAgICAgc3RhdGljIGludCBjb25zdCBjb25zdGFudHNbXSA9CistICAgICAgICAgICAgewor LSAgICAgICAgICAgICAgT19DUkVBVCwgT19FWENMLCBPX05PQ1RUWSwgT19UUlVOQywgT19BUFBF TkQsCistICAgICAgICAgICAgICBPX05PTkJMT0NLLCBPX1NZTkMsIE9fQUNDTU9ERSwgT19SRE9O TFksIE9fUkRXUiwgT19XUk9OTFkKKy0gICAgICAgICAgICB9OworLQorLWludAorLW1haW4gKHZv aWQpCisteworLQorLSAgICAgICAgICAgIGludCByZXN1bHQgPSAhY29uc3RhbnRzOworLSAgICAg ICAgICAgICNpZiBIQVZFX1NZTUxJTksKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICBz dGF0aWMgY2hhciBjb25zdCBzeW1bXSA9ICJjb25mdGVzdC5zeW0iOworLSAgICAgICAgICAgICAg aWYgKHN5bWxpbmsgKCIvZGV2L251bGwiLCBzeW0pICE9IDApCistICAgICAgICAgICAgICAgIHJl c3VsdCB8PSAyOworLSAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICB7CistICAg ICAgICAgICAgICAgICAgaW50IGZkID0gb3BlbiAoc3ltLCBPX1dST05MWSB8IE9fTk9GT0xMT1cg fCBPX0NSRUFULCAwKTsKKy0gICAgICAgICAgICAgICAgICBpZiAoZmQgPj0gMCkKKy0gICAgICAg ICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgY2xvc2UgKGZkKTsKKy0gICAg ICAgICAgICAgICAgICAgICAgcmVzdWx0IHw9IDQ7CistICAgICAgICAgICAgICAgICAgICB9Cist ICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgIGlmICh1bmxpbmsgKHN5bSkgIT0gMCB8 fCBzeW1saW5rICgiLiIsIHN5bSkgIT0gMCkKKy0gICAgICAgICAgICAgICAgcmVzdWx0IHw9IDI7 CistICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAg ICAgICBpbnQgZmQgPSBvcGVuIChzeW0sIE9fUkRPTkxZIHwgT19OT0ZPTExPVyk7CistICAgICAg ICAgICAgICAgICAgaWYgKGZkID49IDApCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAg ICAgICAgICAgICAgICAgIGNsb3NlIChmZCk7CistICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs dCB8PSA0OworLSAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICB9CistICAg ICAgICAgICAgICB1bmxpbmsgKHN5bSk7CistICAgICAgICAgICAgfQorLSAgICAgICAgICAgICNl bmRpZgorLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IGZp bGVbXSA9ICJjb25mZGVmcy5oIjsKKy0gICAgICAgICAgICAgIGludCBmZCA9IG9wZW4gKGZpbGUs IE9fUkRPTkxZIHwgT19OT0FUSU1FKTsKKy0gICAgICAgICAgICAgIGlmIChmZCA8IDApCistICAg ICAgICAgICAgICAgIHJlc3VsdCB8PSA4OworLSAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAg ICAgICAgICB7CistICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgc3QwOworLSAgICAgICAg ICAgICAgICAgIGlmIChmc3RhdCAoZmQsICZzdDApICE9IDApCistICAgICAgICAgICAgICAgICAg ICByZXN1bHQgfD0gMTY7CistICAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAg ICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICBjaGFyIGM7CistICAgICAgICAgICAgICAg ICAgICAgIHNsZWVwICgxKTsKKy0gICAgICAgICAgICAgICAgICAgICAgaWYgKHJlYWQgKGZkLCAm YywgMSkgIT0gMSkKKy0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgfD0gMjQ7CistICAg ICAgICAgICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAgICAgICB7CistICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2xvc2UgKGZkKSAhPSAwKQorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXN1bHQgfD0gMzI7CistICAgICAgICAgICAgICAgICAgICAgICAg ICBlbHNlCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDE7CistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKHN0YXQgKGZpbGUsICZzdDEpICE9IDApCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXN1bHQgfD0gNDA7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0MC5zdF9hdGltZSAh PSBzdDEuc3RfYXRpbWUpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs dCB8PSA2NDsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAg ICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgfQor LSAgICAgICAgICAgIH0KKy0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworLSAgOworLSAgcmV0 dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyIKKy10aGVu IDoKKy0gIGdsX2N2X2hlYWRlcl93b3JraW5nX2ZjbnRsX2g9eWVzCistZWxzZSBjYXNlIGUgaW4g IygKKy0gIGUpIGNhc2UgJD8gaW4gIygKKy0gICAgICAgIDQpIGdsX2N2X2hlYWRlcl93b3JraW5n X2ZjbnRsX2g9J25vIChiYWQgT19OT0ZPTExPVyknOzsgIygKKy0gICAgICAgIDY0KSBnbF9jdl9o ZWFkZXJfd29ya2luZ19mY250bF9oPSdubyAoYmFkIE9fTk9BVElNRSknOzsgIygKKy0gICAgICAg IDY4KSBnbF9jdl9oZWFkZXJfd29ya2luZ19mY250bF9oPSdubyAoYmFkIE9fTk9BVElNRSwgT19O T0ZPTExPVyknOzsgIygKKy0gICAgICAgICAqKSBnbF9jdl9oZWFkZXJfd29ya2luZ19mY250bF9o PSdubyc7OworLSAgICAgICAgZXNhYyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgKi5jb3Jl IGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKy0g IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7Cist ZXNhYworLWZpCistCistICAgICA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9oZWFkZXJfd29ya2luZ19m Y250bF9oIiA+JjUKKy1wcmludGYgIiVzXG4iICIkZ2xfY3ZfaGVhZGVyX3dvcmtpbmdfZmNudGxf aCIgPiY2OyB9CistCistICBjYXNlICRnbF9jdl9oZWFkZXJfd29ya2luZ19mY250bF9oIGluICMo CistICAqT19OT0FUSU1FKiB8IG5vIHwgY3Jvc3MtY29tcGlsaW5nKSBhY192YWw9MDs7ICMoCist ICAqKSBhY192YWw9MTs7CistICBlc2FjCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZF X1dPUktJTkdfT19OT0FUSU1FICRhY192YWwiID4+Y29uZmRlZnMuaAorLQorLQorLSAgY2FzZSAk Z2xfY3ZfaGVhZGVyX3dvcmtpbmdfZmNudGxfaCBpbiAjKAorLSAgKk9fTk9GT0xMT1cqIHwgbm8g fCBjcm9zcy1jb21waWxpbmcpIGFjX3ZhbD0wOzsgIygKKy0gICopIGFjX3ZhbD0xOzsKKy0gIGVz YWMKKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfV09SS0lOR19PX05PRk9MTE9XICRh Y192YWwiID4+Y29uZmRlZnMuaAorLQorLQorLQorLSAgICBIQVZFX05FV0xPQ0FMRT0xOworLSAg SEFWRV9EVVBMT0NBTEU9MTsKKy0gIEhBVkVfRlJFRUxPQ0FMRT0xOworLSAgUkVQTEFDRV9MT0NB TEVDT05WPTA7CistICBSRVBMQUNFX1NFVExPQ0FMRT0wOworLSAgUkVQTEFDRV9ORVdMT0NBTEU9 MDsKKy0gIFJFUExBQ0VfRFVQTE9DQUxFPTA7CistICBSRVBMQUNFX0ZSRUVMT0NBTEU9MDsKKy0g IFJFUExBQ0VfU1RSVUNUX0xDT05WPTA7CistICBMT0NBTEVOQU1FX0VOSEFOQ0VfTE9DQUxFX0ZV TkNTPTA7CistCistCistCistCistCistCistCistCistCistCistCistCistCistCistICAgICAg ICAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfdXNlbG9jYWxlID0geWVzOyB0aGVuCistCistICAgIHsg cHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0 aGVyIHVzZWxvY2FsZSB3b3JrcyIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyB3aGV0aGVyIHVz ZWxvY2FsZSB3b3Jrcy4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHtndF9jdl9mdW5jX3VzZWxvY2Fs ZV93b3Jrcyt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcworLXRo ZW4gOgorLSAgIyBHdWVzcyBubyBvbiBBSVggYW5kIHovT1MsIHllcyBvdGhlcndpc2UuCistICAg ICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgorLSAgICAgICAgICAgIGFpeCogfCBvcGVuZWRpdGlv biopIGd0X2N2X2Z1bmNfdXNlbG9jYWxlX3dvcmtzPSJndWVzc2luZyBubyIgOzsKKy0gICAgICAg ICAgICAqKSAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX3VzZWxvY2FsZV93b3Jrcz0iZ3Vl c3NpbmcgeWVzIiA7OworLSAgICAgICAgICBlc2FjCistCistZWxzZSBjYXNlIGUgaW4gIygKKy0g IGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQg Y29uZmRlZnMuaC4gICovCistCistI2luY2x1ZGUgPGxvY2FsZS5oPgorLSNpZiBIQVZFX1hMT0NB TEVfSAorLSMgaW5jbHVkZSA8eGxvY2FsZS5oPgorLSNlbmRpZgorLWxvY2FsZV90IGxvYzE7Cist aW50IG1haW4gKCkKKy17CistICB1c2Vsb2NhbGUgKE5VTEwpOworLSAgc2V0bG9jYWxlIChMQ19B TEwsICJlbl9VUy5VVEYtOCIpOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2Zu X2NfdHJ5X3J1biAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGd0X2N2X2Z1bmNfdXNlbG9jYWxlX3dv cmtzPXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBndF9jdl9mdW5jX3VzZWxvY2FsZV93 b3Jrcz1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3Qu KiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKy0gIGNvbmZ0ZXN0LiRhY19v YmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZpCistCist ICAgICAgIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJGd0X2N2X2Z1bmNfdXNlbG9jYWxlX3dvcmtzIiA+JjUKKy1w cmludGYgIiVzXG4iICIkZ3RfY3ZfZnVuY191c2Vsb2NhbGVfd29ya3MiID4mNjsgfQorLSAgZWxz ZQorLSAgICBndF9jdl9mdW5jX3VzZWxvY2FsZV93b3Jrcz1ubworLSAgZmkKKy0gIGNhc2UgIiRn dF9jdl9mdW5jX3VzZWxvY2FsZV93b3JrcyIgaW4KKy0gICAgKnllcykKKy0gICAgICBndF93b3Jr aW5nX3VzZWxvY2FsZT15ZXMKKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfV09SS0lO R19VU0VMT0NBTEUgMSIgPj5jb25mZGVmcy5oCistCistICAgICAgOzsKKy0gICAgKikKKy0gICAg ICBndF93b3JraW5nX3VzZWxvY2FsZT1ubworLSAgICAgIDs7CistICBlc2FjCistCistCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIiRndF9jdl9mdW5jX3VzZWxvY2FsZV93b3Jr cyIgaW4KKy0gICAgKnllcykKKy0KKy0gICAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGZha2UgbG9jYWxlIHN5c3RlbSAoT3BlbkJT RCkiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIGZha2UgbG9jYWxlIHN5c3RlbSAoT3Bl bkJTRCkuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7Z3RfY3ZfbG9jYWxlX2Zha2UreX0KKy10aGVu IDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXMKKy10aGVuIDoKKy0gICAgICAgICAg ICAgIGNhc2UgIiRob3N0X29zIiBpbgorLSAgICAgICAgICAgICAgb3BlbmJzZCopIGd0X2N2X2xv Y2FsZV9mYWtlPSJndWVzc2luZyB5ZXMiIDs7CistICAgICAgICAgICAgICAqKSAgICAgICAgZ3Rf Y3ZfbG9jYWxlX2Zha2U9Imd1ZXNzaW5nIG5vIiA7OworLSAgICAgICAgICAgIGVzYWMKKy0KKy1l bHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl c3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0jaW5jbHVkZSA8bG9jYWxl Lmg+CistI2lmIEhBVkVfWExPQ0FMRV9ICistIyBpbmNsdWRlIDx4bG9jYWxlLmg+CistI2VuZGlm CistaW50IG1haW4gKCkKKy17CistICBsb2NhbGVfdCBsb2MxLCBsb2MyOworLSAgaWYgKHNldGxv Y2FsZSAoTENfQUxMLCAiZGVfREUuVVRGLTgiKSA9PSBOVUxMKSByZXR1cm4gMTsKKy0gIGlmIChz ZXRsb2NhbGUgKExDX0FMTCwgImZyX0ZSLlVURi04IikgPT0gTlVMTCkgcmV0dXJuIDE7CistICBs b2MxID0gbmV3bG9jYWxlIChMQ19BTExfTUFTSywgImRlX0RFLlVURi04IiwgKGxvY2FsZV90KTAp OworLSAgbG9jMiA9IG5ld2xvY2FsZSAoTENfQUxMX01BU0ssICJmcl9GUi5VVEYtOCIsIChsb2Nh bGVfdCkwKTsKKy0gIHJldHVybiAhKGxvYzEgPT0gbG9jMik7CistfQorLV9BQ0VPRgorLWlmIGFj X2ZuX2NfdHJ5X3J1biAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGd0X2N2X2xvY2FsZV9mYWtlPXll cworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBndF9jdl9sb2NhbGVfZmFrZT1ubyA7OworLWVz YWMKKy1maQorLXJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5v dXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKy0gIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3Qu YmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZpCistCistICAgICAgICAgOzsKKy1l c2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkZ3RfY3ZfbG9jYWxlX2Zha2UiID4mNQorLXByaW50ZiAiJXNcbiIgIiRndF9jdl9s b2NhbGVfZmFrZSIgPiY2OyB9CistICAgICAgOzsKKy0gICAgKikgZ3RfY3ZfbG9jYWxlX2Zha2U9 bm8gOzsKKy0gIGVzYWMKKy0gIGNhc2UgIiRndF9jdl9sb2NhbGVfZmFrZSIgaW4KKy0gICAgKnll cykKKy0gICAgICBndF9mYWtlX2xvY2FsZXM9eWVzCistCistcHJpbnRmICIlc1xuIiAiI2RlZmlu ZSBIQVZFX0ZBS0VfTE9DQUxFUyAxIiA+PmNvbmZkZWZzLmgKKy0KKy0gICAgICA7OworLSAgICAq KQorLSAgICAgIGd0X2Zha2VfbG9jYWxlcz1ubworLSAgICAgIDs7CistICBlc2FjCistCistICBj YXNlICIkZ3RfY3ZfZnVuY191c2Vsb2NhbGVfd29ya3MiIGluCistICAgICp5ZXMpCistICAgICAg eyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZv ciBTb2xhcmlzIDExLjQgbG9jYWxlIHN5c3RlbSIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBm b3IgU29sYXJpcyAxMS40IGxvY2FsZSBzeXN0ZW0uLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7Z3Rf Y3ZfbG9jYWxlX3NvbGFyaXMxMTQreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkg IiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2FzZSAiJGhvc3Rfb3MiIGluCistICAg ICAgICAgICBzb2xhcmlzKikKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVm cy5oLiAgKi8KKy0KKy0gICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bG9jYWxlLmg+CistICAg ICAgICAgICAgICAgICAgc3RydWN0IF9MQ19sb2NhbGVfdCAqeDsKKy0gICAgICAgICAgICAgICAg ICBsb2NhbGVfdCB5OworLQorLWludAorLW1haW4gKHZvaWQpCisteworLSp5ID0geDsKKy0gIDsK Ky0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElO RU5PIgorLXRoZW4gOgorLSAgZ3RfY3ZfbG9jYWxlX3NvbGFyaXMxMTQ9eWVzCistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIGd0X2N2X2xvY2FsZV9zb2xhcmlzMTE0PW5vIDs7CistZXNhYworLWZp Cistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5i ZWFtIGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgICAgICAgOzsKKy0gICAgICAgICAgICopIGd0 X2N2X2xvY2FsZV9zb2xhcmlzMTE0PW5vIDs7CistICAgICAgICAgZXNhYworLSAgICAgICAgIDs7 CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogJGd0X2N2X2xvY2FsZV9zb2xhcmlzMTE0IiA+JjUKKy1wcmludGYgIiVzXG4i ICIkZ3RfY3ZfbG9jYWxlX3NvbGFyaXMxMTQiID4mNjsgfQorLSAgICAgIDs7CistICAgICopIGd0 X2N2X2xvY2FsZV9zb2xhcmlzMTE0PW5vIDs7CistICBlc2FjCistICBpZiB0ZXN0ICRndF9jdl9s b2NhbGVfc29sYXJpczExNCA9IHllczsgdGhlbgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUg SEFWRV9TT0xBUklTMTE0X0xPQ0FMRVMgMSIgPj5jb25mZGVmcy5oCistCistICBmaQorLQorLSAg ICAgICAgY2FzZSAiJGd0X2N2X2Z1bmNfdXNlbG9jYWxlX3dvcmtzIiBpbgorLSAgICAqeWVzKQor LSAgICAgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImdldGxvY2FsZW5hbWVfbCIgImFj X2N2X2Z1bmNfZ2V0bG9jYWxlbmFtZV9sIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19nZXRsb2Nh bGVuYW1lX2wiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZF X0dFVExPQ0FMRU5BTUVfTCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLSAgICAgIDs7Cist ICBlc2FjCistCistICAgICAgICAgICAgZ3RfbmFtZWxlc3NfbG9jYWxlcz1ubworLSAgY2FzZSAi JGhvc3Rfb3MiIGluCistICAgICAgICBhaXgqKQorLSAgICAgIGd0X25hbWVsZXNzX2xvY2FsZXM9 eWVzCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX05BTUVMRVNTX0xPQ0FMRVMgMSIg Pj5jb25mZGVmcy5oCistCistICAgICAgOzsKKy0gIGVzYWMKKy0KKy0gICAgICAgIGlmIHRlc3Qg JGd0X3dvcmtpbmdfdXNlbG9jYWxlID0geWVzICYmIHRlc3QgJGd0X2Zha2VfbG9jYWxlcyA9IG5v OyB0aGVuCistICAgIGd0X2dvb2RfdXNlbG9jYWxlPXllcworLQorLXByaW50ZiAiJXNcbiIgIiNk ZWZpbmUgSEFWRV9HT09EX1VTRUxPQ0FMRSAxIiA+PmNvbmZkZWZzLmgKKy0KKy0gIGVsc2UKKy0g ICAgZ3RfZ29vZF91c2Vsb2NhbGU9bm8KKy0gIGZpCistCistICAgICAgICBpZiB0ZXN0ICRndF9n b29kX3VzZWxvY2FsZSA9IHllcyAmJiB0ZXN0ICRndF9uYW1lbGVzc19sb2NhbGVzID0geWVzOyB0 aGVuCistICAgIGd0X2xvY2FsZW5hbWVfZW5oYW5jZXNfbG9jYWxlX2Z1bmNzPXllcworLSAgICBM T0NBTEVOQU1FX0VOSEFOQ0VfTE9DQUxFX0ZVTkNTPTEKKy0KKy1wcmludGYgIiVzXG4iICIjZGVm aW5lIExPQ0FMRU5BTUVfRU5IQU5DRV9MT0NBTEVfRlVOQ1MgMSIgPj5jb25mZGVmcy5oCistCist ICBlbHNlCistICAgIGd0X2xvY2FsZW5hbWVfZW5oYW5jZXNfbG9jYWxlX2Z1bmNzPW5vCistICBm aQorLQorLQorLSAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgZm9yIENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUiID4mNQorLXByaW50ZiAl cyAiY2hlY2tpbmcgZm9yIENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUuLi4gIiA+JjY7IH0KKy1p ZiB0ZXN0ICR7Z3RfY3ZfZnVuY19DRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlK3l9CistdGhlbiA6 CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUp IGd0X3NhdmVfTElCUz0iJExJQlMiCistICAgICBMSUJTPSIkTElCUyAtV2wsLWZyYW1ld29yayAt V2wsQ29yZUZvdW5kYXRpb24iCistICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m dGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLSNpbmNsdWRlIDxDb3JlRm91 bmRhdGlvbi9DRlByZWZlcmVuY2VzLmg+CistaW50CistbWFpbiAodm9pZCkKKy17CistQ0ZQcmVm ZXJlbmNlc0NvcHlBcHBWYWx1ZShOVUxMLCBOVUxMKQorLSAgOworLSAgcmV0dXJuIDA7CistfQor LV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6CistICBndF9j dl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWU9eWVzCistZWxzZSBjYXNlIGUgaW4gIygK Ky0gIGUpIGd0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZT1ubyA7OworLWVzYWMK Ky1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl c3QuYmVhbSBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAg ICBMSUJTPSIkZ3Rfc2F2ZV9MSUJTIiA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRndF9jdl9mdW5jX0NGUHJlZmVy ZW5jZXNDb3B5QXBwVmFsdWUiID4mNQorLXByaW50ZiAiJXNcbiIgIiRndF9jdl9mdW5jX0NGUHJl ZmVyZW5jZXNDb3B5QXBwVmFsdWUiID4mNjsgfQorLSAgaWYgdGVzdCAkZ3RfY3ZfZnVuY19DRlBy ZWZlcmVuY2VzQ29weUFwcFZhbHVlID0geWVzOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2Rl ZmluZSBIQVZFX0NGUFJFRkVSRU5DRVNDT1BZQVBQVkFMVUUgMSIgPj5jb25mZGVmcy5oCistCist ICBmaQorLSAgICAgICAgICAgICAgICAgICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFn ZXMiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIENGTG9jYWxlQ29weVByZWZlcnJlZExh bmd1YWdlcy4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHtndF9jdl9mdW5jX0NGTG9jYWxlQ29weVBy ZWZlcnJlZExhbmd1YWdlcyt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4m NgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBndF9zYXZlX0xJQlM9IiRMSUJTIgorLSAgICAg TElCUz0iJExJQlMgLVdsLC1mcmFtZXdvcmsgLVdsLENvcmVGb3VuZGF0aW9uIgorLSAgICAgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVm cy5oLiAgKi8KKy0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZMb2NhbGUuaD4KKy1pbnQKKy1t YWluICh2b2lkKQorLXsKKy1DRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMoKTsKKy0gIDsK Ky0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5P IgorLXRoZW4gOgorLSAgZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXM9 eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGd0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5UHJl ZmVycmVkTGFuZ3VhZ2VzPW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5l cnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAgY29uZnRlc3QkYWNf ZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgIExJQlM9IiRndF9zYXZlX0xJQlMiIDs7Cist ZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJGd0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzIiA+JjUK Ky1wcmludGYgIiVzXG4iICIkZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFn ZXMiID4mNjsgfQorLSAgaWYgdGVzdCAkZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlQcmVmZXJyZWRM YW5ndWFnZXMgPSB5ZXM7IHRoZW4KKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfQ0ZM T0NBTEVDT1BZUFJFRkVSUkVETEFOR1VBR0VTIDEiID4+Y29uZmRlZnMuaAorLQorLSAgZmkKKy0g IElOVExfTUFDT1NYX0xJQlM9CistICBpZiB0ZXN0ICRndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXND b3B5QXBwVmFsdWUgPSB5ZXMgXAorLSAgICAgfHwgdGVzdCAkZ3RfY3ZfZnVuY19DRkxvY2FsZUNv cHlQcmVmZXJyZWRMYW5ndWFnZXMgPSB5ZXM7IHRoZW4KKy0gICAgSU5UTF9NQUNPU1hfTElCUz0i LVdsLC1mcmFtZXdvcmsgLVdsLENvcmVGb3VuZGF0aW9uIgorLSAgZmkKKy0KKy0KKy0KKy0KKy0K Ky0KKy0KKy0KKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyBmb3IgZmxleGlibGUgYXJyYXkgbWVtYmVyIiA+JjUKKy1wcmludGYgJXMgImNo ZWNraW5nIGZvciBmbGV4aWJsZSBhcnJheSBtZW1iZXIuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7 YWNfY3ZfY19mbGV4bWVtYmVyK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIg PiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg PmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistI2luY2x1ZGUgPHN0 ZGxpYi5oPgorLSAgICAgICAgICAgICNpbmNsdWRlIDxzdGRpby5oPgorLSAgICAgICAgICAgICNp bmNsdWRlIDxzdGRkZWYuaD4KKy0gICAgICAgICAgICBzdHJ1Y3QgbSB7IHN0cnVjdCBtICpuZXh0 LCAqKmxpc3Q7IGNoYXIgbmFtZVtdOyB9OworLSAgICAgICAgICAgIHN0cnVjdCBzIHsgc3RydWN0 IHMgKnA7IHN0cnVjdCBtICptOyBpbnQgbjsgZG91YmxlIGRbXTsgfTsKKy1pbnQKKy1tYWluICh2 b2lkKQorLXsKKy1pbnQgbSA9IGdldGNoYXIgKCk7CistICAgICAgICAgICAgc2l6ZV90IG5ieXRl cyA9IG9mZnNldG9mIChzdHJ1Y3QgcywgZCkgKyBtICogc2l6ZW9mIChkb3VibGUpOworLSAgICAg ICAgICAgIG5ieXRlcyArPSBzaXplb2YgKHN0cnVjdCBzKSAtIDE7CistICAgICAgICAgICAgbmJ5 dGVzIC09IG5ieXRlcyAlIHNpemVvZiAoc3RydWN0IHMpOworLSAgICAgICAgICAgIHN0cnVjdCBz ICpwID0gbWFsbG9jIChuYnl0ZXMpOworLSAgICAgICAgICAgIHAtPnAgPSBwOworLSAgICAgICAg ICAgIHAtPm0gPSBOVUxMOworLSAgICAgICAgICAgIHAtPmRbMF0gPSAwLjA7CistICAgICAgICAg ICAgcmV0dXJuIHAtPmQgIT0gKGRvdWJsZSAqKSBOVUxMOworLSAgOworLSAgcmV0dXJuIDA7Cist fQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6Cist ICBhY19jdl9jX2ZsZXhtZW1iZXI9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2N2 X2NfZmxleG1lbWJlcj1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJy IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7Cist ZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJGFjX2N2X2NfZmxleG1lbWJlciIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2 X2NfZmxleG1lbWJlciIgPiY2OyB9CistICBpZiB0ZXN0ICRhY19jdl9jX2ZsZXhtZW1iZXIgPSB5 ZXM7IHRoZW4KKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEZMRVhJQkxFX0FSUkFZX01FTUJF UiAvKiovIiA+PmNvbmZkZWZzLmgKKy0KKy0gIGVsc2UKKy0gICAgcHJpbnRmICIlc1xuIiAiI2Rl ZmluZSBGTEVYSUJMRV9BUlJBWV9NRU1CRVIgMSIgPj5jb25mZGVmcy5oCistCistICBmaQorLQor LQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLSAgICAgICAgICAgICAgIGlmIHRlc3QgLW4g IiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAi JHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFy Z3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKy17IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193 b3JkIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQor LWlmIHRlc3QgJHthY19jdl9wcm9nX0FSK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNo ZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgLW4gIiRBUiI7IHRo ZW4KKy0gIGFjX2N2X3Byb2dfQVI9IiRBUiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRl c3QuCistZWxzZQorLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKy1mb3Ig YXNfZGlyIGluICRQQVRICistZG8KKy0gIElGUz0kYXNfc2F2ZV9JRlMKKy0gIGNhc2UgJGFzX2Rp ciBpbiAjKCgoCistICAgICcnKSBhc19kaXI9Li8gOzsKKy0gICAgKi8pIDs7CistICAgICopIGFz X2Rpcj0kYXNfZGlyLyA7OworLSAgZXNhYworLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFj X2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKy0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFz X2RpciRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2Fj X3Rvb2xfcHJlZml4fWFyIgorLSAgICBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGZvdW5kICRhc19kaXIkYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CistICAgIGJy ZWFrIDIKKy0gIGZpCistZG9uZQorLSAgZG9uZQorLUlGUz0kYXNfc2F2ZV9JRlMKKy0KKy1maSA7 OworLWVzYWMKKy1maQorLUFSPSRhY19jdl9wcm9nX0FSCistaWYgdGVzdCAtbiAiJEFSIjsgdGhl bgorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogJEFSIiA+JjUKKy1wcmludGYgIiVzXG4iICIkQVIiID4mNjsgfQorLWVsc2UKKy0gIHsgcHJp bnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUK Ky1wcmludGYgIiVzXG4iICJubyIgPiY2OyB9CistZmkKKy0KKy0KKy1maQorLWlmIHRlc3QgLXog IiRhY19jdl9wcm9nX0FSIjsgdGhlbgorLSAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhl IGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJn cy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKy1wcmludGYg JXMgImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9w cm9nX2FjX2N0X0FSK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2Cist ZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4KKy0g IGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19jdF9BUiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUg dGhlIHRlc3QuCistZWxzZQorLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IK Ky1mb3IgYXNfZGlyIGluICRQQVRICistZG8KKy0gIElGUz0kYXNfc2F2ZV9JRlMKKy0gIGNhc2Ug JGFzX2RpciBpbiAjKCgoCistICAgICcnKSBhc19kaXI9Li8gOzsKKy0gICAgKi8pIDs7CistICAg ICopIGFzX2Rpcj0kYXNfZGlyLyA7OworLSAgZXNhYworLSAgICBmb3IgYWNfZXhlY19leHQgaW4g JycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKy0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVf cCAiJGFzX2RpciRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX2Fj X2N0X0FSPSJhciIKKy0gICAgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBmb3VuZCAkYXNfZGlyJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorLSAgICBicmVhayAy CistICBmaQorLWRvbmUKKy0gIGRvbmUKKy1JRlM9JGFzX3NhdmVfSUZTCistCistZmkgOzsKKy1l c2FjCistZmkKKy1hY19jdF9BUj0kYWNfY3ZfcHJvZ19hY19jdF9BUgorLWlmIHRlc3QgLW4gIiRh Y19jdF9BUiI7IHRoZW4KKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6ICRhY19jdF9BUiIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N0X0FS IiA+JjY7IH0KKy1lbHNlCistICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiBubyIgPiY1CistcHJpbnRmICIlc1xuIiAibm8iID4mNjsgfQorLWZp CistCistICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKy0gICAgQVI9ImFyIgorLSAg ZWxzZQorLSAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisteWVz OikKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklO RzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUK Ky1wcmludGYgIiVzXG4iICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBw cmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKy1hY190b29sX3dhcm5lZD15ZXMgOzsK Ky1lc2FjCistICAgIEFSPSRhY19jdF9BUgorLSAgZmkKKy1lbHNlCistICBBUj0iJGFjX2N2X3By b2dfQVIiCistZmkKKy0KKy0gICAgIGlmIHRlc3QgLXogIiRBUkZMQUdTIjsgdGhlbgorLSAgICAg ICBBUkZMQUdTPSdjcicKKy0gICAgIGZpCistCistCistCistCistICAgIGNhc2UgIiRlbmFibGVf c2lsZW50X3J1bGVzIiBpbgorLSAgICB5ZXMpIElOVExfREVGQVVMVF9WRVJCT1NJVFk9MDs7Cist ICAgIG5vKSAgSU5UTF9ERUZBVUxUX1ZFUkJPU0lUWT0xOzsKKy0gICAgKikgICBJTlRMX0RFRkFV TFRfVkVSQk9TSVRZPTE7OworLSAgZXNhYworLQorLQorLSAgYWNfZm5fY19jaGVja190eXBlICIk TElORU5PIiAicHRyZGlmZl90IiAiYWNfY3ZfdHlwZV9wdHJkaWZmX3QiICIkYWNfaW5jbHVkZXNf ZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfcHRyZGlmZl90IiA9IHh5ZXMKKy10aGVu IDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5l IHB0cmRpZmZfdCBsb25nIiA+PmNvbmZkZWZzLmgKKy0KKy0gICAgIDs7CistZXNhYworLWZpCist CistICBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAiZmVhdHVyZXMuaCIg ImFjX2N2X2hlYWRlcl9mZWF0dXJlc19oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVz dCAieCRhY19jdl9oZWFkZXJfZmVhdHVyZXNfaCIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYg IiVzXG4iICIjZGVmaW5lIEhBVkVfRkVBVFVSRVNfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQor LWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJzdGRkZWYuaCIgImFjX2N2 X2hlYWRlcl9zdGRkZWZfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNf Y3ZfaGVhZGVyX3N0ZGRlZl9oIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNk ZWZpbmUgSEFWRV9TVERERUZfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hl Y2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJzdGRsaWIuaCIgImFjX2N2X2hlYWRlcl9zdGRs aWJfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N0 ZGxpYl9oIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9T VERMSUJfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2Nv bXBpbGUgIiRMSU5FTk8iICJzdHJpbmcuaCIgImFjX2N2X2hlYWRlcl9zdHJpbmdfaCIgIiRhY19p bmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N0cmluZ19oIiA9IHh5 ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TVFJJTkdfSCAxIiA+ PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLSAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAi YXNwcmludGYiICJhY19jdl9mdW5jX2FzcHJpbnRmIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19h c3ByaW50ZiIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVf QVNQUklOVEYgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRM SU5FTk8iICJ3cHJpbnRmIiAiYWNfY3ZfZnVuY193cHJpbnRmIgorLWlmIHRlc3QgIngkYWNfY3Zf ZnVuY193cHJpbnRmIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUg SEFWRV9XUFJJTlRGIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5j ICIkTElORU5PIiAibmV3bG9jYWxlIiAiYWNfY3ZfZnVuY19uZXdsb2NhbGUiCistaWYgdGVzdCAi eCRhY19jdl9mdW5jX25ld2xvY2FsZSIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4i ICIjZGVmaW5lIEhBVkVfTkVXTE9DQUxFIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5f Y19jaGVja19mdW5jICIkTElORU5PIiAicHV0ZW52IiAiYWNfY3ZfZnVuY19wdXRlbnYiCistaWYg dGVzdCAieCRhY19jdl9mdW5jX3B1dGVudiIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVz XG4iICIjZGVmaW5lIEhBVkVfUFVURU5WIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5f Y19jaGVja19mdW5jICIkTElORU5PIiAic2V0ZW52IiAiYWNfY3ZfZnVuY19zZXRlbnYiCistaWYg dGVzdCAieCRhY19jdl9mdW5jX3NldGVudiIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVz XG4iICIjZGVmaW5lIEhBVkVfU0VURU5WIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5f Y19jaGVja19mdW5jICIkTElORU5PIiAic25wcmludGYiICJhY19jdl9mdW5jX3NucHJpbnRmIgor LWlmIHRlc3QgIngkYWNfY3ZfZnVuY19zbnByaW50ZiIgPSB4eWVzCistdGhlbiA6CistICBwcmlu dGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU05QUklOVEYgMSIgPj5jb25mZGVmcy5oCistCistZmkK Ky1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJzdHJubGVuIiAiYWNfY3ZfZnVuY19zdHJu bGVuIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19zdHJubGVuIiA9IHh5ZXMKKy10aGVuIDoKKy0g IHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TVFJOTEVOIDEiID4+Y29uZmRlZnMuaAorLQor LWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAidXNlbG9jYWxlIiAiYWNfY3ZfZnVu Y191c2Vsb2NhbGUiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX3VzZWxvY2FsZSIgPSB4eWVzCist dGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfVVNFTE9DQUxFIDEiID4+Y29u ZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAid2NzbGVuIiAi YWNfY3ZfZnVuY193Y3NsZW4iCistaWYgdGVzdCAieCRhY19jdl9mdW5jX3djc2xlbiIgPSB4eWVz CistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfV0NTTEVOIDEiID4+Y29u ZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAid2NzbmxlbiIg ImFjX2N2X2Z1bmNfd2NzbmxlbiIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfd2NzbmxlbiIgPSB4 eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfV0NTTkxFTiAxIiA+ PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1icnRv d2MiICJhY19jdl9mdW5jX21icnRvd2MiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX21icnRvd2Mi ID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX01CUlRPV0Mg MSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJ3 Y3J0b21iIiAiYWNfY3ZfZnVuY193Y3J0b21iIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY193Y3J0 b21iIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9XQ1JU T01CIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCistCistICAgICAgYWNfZm5fY2hlY2tfZGVj bCAiJExJTkVOTyIgIl9zbnByaW50ZiIgImFjX2N2X2hhdmVfZGVjbF9fc25wcmludGYiICIjaW5j bHVkZSA8c3RkaW8uaD4KKy0iICIkYWNfY191bmRlY2xhcmVkX2J1aWx0aW5fb3B0aW9ucyIgIkNG TEFHUyIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9fc25wcmludGYiID0geHllcworLXRo ZW4gOgorLSAgYWNfaGF2ZV9kZWNsPTEKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfaGF2 ZV9kZWNsPTAgOzsKKy1lc2FjCistZmkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfREVD TF9fU05QUklOVEYgJGFjX2hhdmVfZGVjbCIgPj5jb25mZGVmcy5oCistYWNfZm5fY2hlY2tfZGVj bCAiJExJTkVOTyIgIl9zbndwcmludGYiICJhY19jdl9oYXZlX2RlY2xfX3Nud3ByaW50ZiIgIiNp bmNsdWRlIDxzdGRpby5oPgorLSIgIiRhY19jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25zIiAi Q0ZMQUdTIgorLWlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX19zbndwcmludGYiID0geHllcwor LXRoZW4gOgorLSAgYWNfaGF2ZV9kZWNsPTEKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNf aGF2ZV9kZWNsPTAgOzsKKy1lc2FjCistZmkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVf REVDTF9fU05XUFJJTlRGICRhY19oYXZlX2RlY2wiID4+Y29uZmRlZnMuaAorLQorLQorLSAgICAg ICAgICBhY19mbl9jaGVja19kZWNsICIkTElORU5PIiAiZ2V0Y191bmxvY2tlZCIgImFjX2N2X2hh dmVfZGVjbF9nZXRjX3VubG9ja2VkIiAiI2luY2x1ZGUgPHN0ZGlvLmg+CistIiAiJGFjX2NfdW5k ZWNsYXJlZF9idWlsdGluX29wdGlvbnMiICJDRkxBR1MiCistaWYgdGVzdCAieCRhY19jdl9oYXZl X2RlY2xfZ2V0Y191bmxvY2tlZCIgPSB4eWVzCistdGhlbiA6CistICBhY19oYXZlX2RlY2w9MQor LWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19oYXZlX2RlY2w9MCA7OworLWVzYWMKKy1maQor LXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9ERUNMX0dFVENfVU5MT0NLRUQgJGFjX2hhdmVf ZGVjbCIgPj5jb25mZGVmcy5oCistCistCistICBjYXNlICRndF9jdl9mdW5jX3ByaW50Zl9wb3Np eCBpbgorLSAgICAqeWVzKSBIQVZFX1BPU0lYX1BSSU5URj0xIDs7CistICAgICopICAgIEhBVkVf UE9TSVhfUFJJTlRGPTAgOzsKKy0gIGVzYWMKKy0KKy0gIGlmIHRlc3QgIiRhY19jdl9mdW5jX2Fz cHJpbnRmIiA9IHllczsgdGhlbgorLSAgICBIQVZFX0FTUFJJTlRGPTEKKy0gIGVsc2UKKy0gICAg SEFWRV9BU1BSSU5URj0wCistICBmaQorLQorLSAgaWYgdGVzdCAiJGFjX2N2X2Z1bmNfc25wcmlu dGYiID0geWVzOyB0aGVuCistICAgIEhBVkVfU05QUklOVEY9MQorLSAgZWxzZQorLSAgICBIQVZF X1NOUFJJTlRGPTAKKy0gIGZpCistCistICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY19uZXdsb2NhbGUi ID0geWVzOyB0aGVuCistICAgIEhBVkVfTkVXTE9DQUxFPTEKKy0gIGVsc2UKKy0gICAgSEFWRV9O RVdMT0NBTEU9MAorLSAgZmkKKy0KKy0gIGlmIHRlc3QgIiRhY19jdl9mdW5jX3dwcmludGYiID0g eWVzOyB0aGVuCistICAgIEhBVkVfV1BSSU5URj0xCistICBlbHNlCistICAgIEhBVkVfV1BSSU5U Rj0wCistICBmaQorLQorLQorLQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIGZvciBubF9sYW5naW5mbyBhbmQgQ09ERVNFVCIgPiY1Cist cHJpbnRmICVzICJjaGVja2luZyBmb3IgbmxfbGFuZ2luZm8gYW5kIENPREVTRVQuLi4gIiA+JjY7 IH0KKy1pZiB0ZXN0ICR7YW1fY3ZfbGFuZ2luZm9fY29kZXNldCt5fQorLXRoZW4gOgorLSAgcHJp bnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29u ZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmgu ICAqLworLSNpbmNsdWRlIDxsYW5naW5mby5oPgorLWludAorLW1haW4gKHZvaWQpCisteworLWNo YXIqIGNzID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7IHJldHVybiAhY3M7CistICA7CistICByZXR1 cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyIKKy10aGVu IDoKKy0gIGFtX2N2X2xhbmdpbmZvX2NvZGVzZXQ9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0g IGUpIGFtX2N2X2xhbmdpbmZvX2NvZGVzZXQ9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3Jl IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gXAorLSAgICBj b25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgOzsKKy1lc2FjCistZmkK Ky17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk YW1fY3ZfbGFuZ2luZm9fY29kZXNldCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFtX2N2X2xhbmdp bmZvX2NvZGVzZXQiID4mNjsgfQorLSAgaWYgdGVzdCAkYW1fY3ZfbGFuZ2luZm9fY29kZXNldCA9 IHllczsgdGhlbgorLSAgICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfTkxfTEFOR0lORk8g MSIgPj5jb25mZGVmcy5oCistCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0xBTkdJ TkZPX0NPREVTRVQgMSIgPj5jb25mZGVmcy5oCistCistICBmaQorLQorLQorLSAgeyBwcmludGYg IiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBMQ19NRVNT QUdFUyIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgTENfTUVTU0FHRVMuLi4gIiA+JjY7 IH0KKy1pZiB0ZXN0ICR7Z3RfY3ZfdmFsX0xDX01FU1NBR0VTK3l9CistdGhlbiA6CistICBwcmlu dGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25m ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4g ICovCistI2luY2x1ZGUgPGxvY2FsZS5oPgorLWludAorLW1haW4gKHZvaWQpCisteworLXJldHVy biBMQ19NRVNTQUdFUworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2Zu X2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6CistICBndF9jdl92YWxfTENfTUVTU0FHRVM9 eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGd0X2N2X3ZhbF9MQ19NRVNTQUdFUz1ubyA7 OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpl eHQgY29uZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNf ZXh0IDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJGd0X2N2X3ZhbF9MQ19NRVNTQUdFUyIgPiY1CistcHJpbnRmICIl c1xuIiAiJGd0X2N2X3ZhbF9MQ19NRVNTQUdFUyIgPiY2OyB9CistICBpZiB0ZXN0ICRndF9jdl92 YWxfTENfTUVTU0FHRVMgPSB5ZXM7IHRoZW4KKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhB VkVfTENfTUVTU0FHRVMgMSIgPj5jb25mZGVmcy5oCistCistICBmaQorLQorLQorLSAgaWYgdGVz dCAkZ3RfbG9jYWxlbmFtZV9lbmhhbmNlc19sb2NhbGVfZnVuY3MgPSB5ZXM7IHRoZW4KKy0gICAg RU5IQU5DRV9MT0NBTEVfRlVOQ1M9MQorLSAgZWxzZQorLSAgICBFTkhBTkNFX0xPQ0FMRV9GVU5D Uz0wCistICBmaQorLQorLQorLSAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJl ZCIgPSB5ZXM7IHRoZW4KKy0gICAgY2FzZSAiJGhvc3Rfb3MiIGluCistICAgICAgbWluZ3cqIHwg Y3lnd2luKikgaXNfd29lMzJkbGw9eWVzIDs7CistICAgICAgKikgaXNfd29lMzJkbGw9bm8gOzsK Ky0gICAgZXNhYworLSAgZWxzZQorLSAgICBpc193b2UzMmRsbD1ubworLSAgZmkKKy0gIFdPRTMy RExMPSRpc193b2UzMmRsbAorLQorLQorLSAgICAgIGNhc2UgIiRob3N0X29zIiBpbgorLSAgICBt aW5ndyogfCBjeWd3aW4qKSBpc193b2UzMj15ZXMgOzsKKy0gICAgKikgaXNfd29lMzI9bm8gOzsK Ky0gIGVzYWMKKy0gIFdPRTMyPSRpc193b2UzMgorLQorLSAgaWYgdGVzdCAkV09FMzIgPSB5ZXM7 IHRoZW4KKy0gICAgICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMg RXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH13aW5kcmVzIiwgc28g aXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29s X3ByZWZpeH13aW5kcmVzOyBhY193b3JkPSQyCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CistcHJpbnRmICVz ICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfcHJv Z19XSU5EUkVTK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxz ZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgLW4gIiRXSU5EUkVTIjsgdGhlbgorLSAgYWNf Y3ZfcHJvZ19XSU5EUkVTPSIkV0lORFJFUyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRl c3QuCistZWxzZQorLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKy1mb3Ig YXNfZGlyIGluICRQQVRICistZG8KKy0gIElGUz0kYXNfc2F2ZV9JRlMKKy0gIGNhc2UgJGFzX2Rp ciBpbiAjKCgoCistICAgICcnKSBhc19kaXI9Li8gOzsKKy0gICAgKi8pIDs7CistICAgICopIGFz X2Rpcj0kYXNfZGlyLyA7OworLSAgZXNhYworLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFj X2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKy0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFz X2RpciRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX1dJTkRSRVM9 IiR7YWNfdG9vbF9wcmVmaXh9d2luZHJlcyIKKy0gICAgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyJGFjX3dvcmQkYWNfZXhlY19leHQiID4m NQorLSAgICBicmVhayAyCistICBmaQorLWRvbmUKKy0gIGRvbmUKKy1JRlM9JGFzX3NhdmVfSUZT CistCistZmkgOzsKKy1lc2FjCistZmkKKy1XSU5EUkVTPSRhY19jdl9wcm9nX1dJTkRSRVMKKy1p ZiB0ZXN0IC1uICIkV0lORFJFUyI7IHRoZW4KKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRXSU5EUkVTIiA+JjUKKy1wcmludGYgIiVzXG4i ICIkV0lORFJFUyIgPiY2OyB9CistZWxzZQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorLXByaW50ZiAiJXNcbiIgIm5vIiA+ JjY7IH0KKy1maQorLQorLQorLWZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfV0lORFJFUyI7 IHRoZW4KKy0gIGFjX2N0X1dJTkRSRVM9JFdJTkRSRVMKKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qg d29yZCBvZiAid2luZHJlcyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3Mu Cistc2V0IGR1bW15IHdpbmRyZXM7IGFjX3dvcmQ9JDIKKy17IHByaW50ZiAiJXNcbiIgIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKy1wcmlu dGYgJXMgImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19j dl9wcm9nX2FjX2N0X1dJTkRSRVMreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkg IiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgaWYgdGVzdCAtbiAiJGFjX2N0X1dJTkRS RVMiOyB0aGVuCistICBhY19jdl9wcm9nX2FjX2N0X1dJTkRSRVM9IiRhY19jdF9XSU5EUkVTIiAj IExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKy1lbHNlCistYXNfc2F2ZV9JRlM9JElG UzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorLWZvciBhc19kaXIgaW4gJFBBVEgKKy1kbworLSAgSUZT PSRhc19zYXZlX0lGUworLSAgY2FzZSAkYXNfZGlyIGluICMoKCgKKy0gICAgJycpIGFzX2Rpcj0u LyA7OworLSAgICAqLykgOzsKKy0gICAgKikgYXNfZGlyPSRhc19kaXIvIDs7CistICBlc2FjCist ICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwor LSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0 aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfV0lORFJFUz0id2luZHJlcyIKKy0gICAgcHJpbnRm ICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyJGFjX3dv cmQkYWNfZXhlY19leHQiID4mNQorLSAgICBicmVhayAyCistICBmaQorLWRvbmUKKy0gIGRvbmUK Ky1JRlM9JGFzX3NhdmVfSUZTCistCistZmkgOzsKKy1lc2FjCistZmkKKy1hY19jdF9XSU5EUkVT PSRhY19jdl9wcm9nX2FjX2N0X1dJTkRSRVMKKy1pZiB0ZXN0IC1uICIkYWNfY3RfV0lORFJFUyI7 IHRoZW4KKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRhY19jdF9XSU5EUkVTIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfY3RfV0lORFJF UyIgPiY2OyB9CistZWxzZQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogbm8iID4mNQorLXByaW50ZiAiJXNcbiIgIm5vIiA+JjY7IH0KKy1m aQorLQorLSAgaWYgdGVzdCAieCRhY19jdF9XSU5EUkVTIiA9IHg7IHRoZW4KKy0gICAgV0lORFJF Uz0iIgorLSAgZWxzZQorLSAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVk IGluCisteWVzOikKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlw bGV0IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRv b2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKy1hY190b29sX3dhcm5l ZD15ZXMgOzsKKy1lc2FjCistICAgIFdJTkRSRVM9JGFjX2N0X1dJTkRSRVMKKy0gIGZpCistZWxz ZQorLSAgV0lORFJFUz0iJGFjX2N2X3Byb2dfV0lORFJFUyIKKy1maQorLQorLSAgZmkKKy0KKy0K Ky0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0K Ky0KKy0KKy0KKy0KKy0gICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGZvciBDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlIiA+JjUKKy1wcmlu dGYgJXMgImNoZWNraW5nIGZvciBDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlLi4uICIgPiY2OyB9 CistaWYgdGVzdCAke2d0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZSt5fQorLXRo ZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCist ICBlKSBndF9zYXZlX0xJQlM9IiRMSUJTIgorLSAgICAgTElCUz0iJExJQlMgLVdsLC1mcmFtZXdv cmsgLVdsLENvcmVGb3VuZGF0aW9uIgorLSAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+ Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0jaW5jbHVkZSA8Q29y ZUZvdW5kYXRpb24vQ0ZQcmVmZXJlbmNlcy5oPgorLWludAorLW1haW4gKHZvaWQpCisteworLUNG UHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoTlVMTCwgTlVMTCkKKy0gIDsKKy0gIHJldHVybiAwOwor LX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIgorLXRoZW4gOgorLSAg Z3RfY3ZfZnVuY19DRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlPXllcworLWVsc2UgY2FzZSBlIGlu ICMoCistICBlKSBndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWU9bm8gOzsKKy1l c2FjCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNv bmZ0ZXN0LmJlYW0gXAorLSAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAor LSAgICAgTElCUz0iJGd0X3NhdmVfTElCUyIgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNc biIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ3RfY3ZfZnVuY19DRlBy ZWZlcmVuY2VzQ29weUFwcFZhbHVlIiA+JjUKKy1wcmludGYgIiVzXG4iICIkZ3RfY3ZfZnVuY19D RlByZWZlcmVuY2VzQ29weUFwcFZhbHVlIiA+JjY7IH0KKy0gIGlmIHRlc3QgJGd0X2N2X2Z1bmNf Q0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZSA9IHllczsgdGhlbgorLQorLXByaW50ZiAiJXNcbiIg IiNkZWZpbmUgSEFWRV9DRlBSRUZFUkVOQ0VTQ09QWUFQUFZBTFVFIDEiID4+Y29uZmRlZnMuaAor LQorLSAgZmkKKy0gICAgICAgICAgICAgICAgICAgIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFu Z3VhZ2VzIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBDRkxvY2FsZUNvcHlQcmVmZXJy ZWRMYW5ndWFnZXMuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7Z3RfY3ZfZnVuY19DRkxvY2FsZUNv cHlQcmVmZXJyZWRMYW5ndWFnZXMreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkg IiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgZ3Rfc2F2ZV9MSUJTPSIkTElCUyIKKy0g ICAgIExJQlM9IiRMSUJTIC1XbCwtZnJhbWV3b3JrIC1XbCxDb3JlRm91bmRhdGlvbiIKKy0gICAg IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29u ZmRlZnMuaC4gICovCistI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGTG9jYWxlLmg+CistaW50 CistbWFpbiAodm9pZCkKKy17CistQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzKCk7Cist ICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfbGluayAiJExJ TkVOTyIKKy10aGVuIDoKKy0gIGd0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3Vh Z2VzPXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBndF9jdl9mdW5jX0NGTG9jYWxlQ29w eVByZWZlcnJlZExhbmd1YWdlcz1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRl c3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0ZXN0 JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICBMSUJTPSIkZ3Rfc2F2ZV9MSUJTIiA7 OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiByZXN1bHQ6ICRndF9jdl9mdW5jX0NGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlcyIg PiY1CistcHJpbnRmICIlc1xuIiAiJGd0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFu Z3VhZ2VzIiA+JjY7IH0KKy0gIGlmIHRlc3QgJGd0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5UHJlZmVy cmVkTGFuZ3VhZ2VzID0geWVzOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZF X0NGTE9DQUxFQ09QWVBSRUZFUlJFRExBTkdVQUdFUyAxIiA+PmNvbmZkZWZzLmgKKy0KKy0gIGZp CistICBJTlRMX01BQ09TWF9MSUJTPQorLSAgaWYgdGVzdCAkZ3RfY3ZfZnVuY19DRlByZWZlcmVu Y2VzQ29weUFwcFZhbHVlID0geWVzIFwKKy0gICAgIHx8IHRlc3QgJGd0X2N2X2Z1bmNfQ0ZMb2Nh bGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzID0geWVzOyB0aGVuCistICAgIElOVExfTUFDT1NYX0xJ QlM9Ii1XbCwtZnJhbWV3b3JrIC1XbCxDb3JlRm91bmRhdGlvbiIKKy0gIGZpCistCistCistCist CistCistCistICAgIEJVSUxEX0lOQ0xVREVEX0xJQklOVEw9bm8KKy0gICAgVVNFX0lOQ0xVREVE X0xJQklOVEw9bm8KKy0KKy0gIExJQklOVEw9CistICBMVExJQklOVEw9CistICBQT1NVQj0KKy0K Ky0gICAgY2FzZSAiICRndF9uZWVkcyAiIGluCistICAgICoiIG5lZWQtZm9ybWF0c3RyaW5nLW1h Y3JvcyAiKikgZ3RfYXBpX3ZlcnNpb249MyA7OworLSAgICAqIiBuZWVkLW5nZXR0ZXh0ICIqKSBn dF9hcGlfdmVyc2lvbj0yIDs7CistICAgICopIGd0X2FwaV92ZXJzaW9uPTEgOzsKKy0gIGVzYWMK Ky0gIGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJjPSJndF9jdl9mdW5jX2dudWdldHRleHQke2d0X2Fw aV92ZXJzaW9ufV9saWJjIgorLSAgZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9Imd0X2N2X2Z1 bmNfZ251Z2V0dGV4dCR7Z3RfYXBpX3ZlcnNpb259X2xpYmludGwiCistCistICAgIGlmIHRlc3Qg IiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCistICAgIGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0 dGV4dD1ubworLQorLSAgICAgIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGluY2x1ZGVkIGdldHRleHQgaXMgcmVxdWVzdGVkIiA+ JjUKKy1wcmludGYgJXMgImNoZWNraW5nIHdoZXRoZXIgaW5jbHVkZWQgZ2V0dGV4dCBpcyByZXF1 ZXN0ZWQuLi4gIiA+JjY7IH0KKy0KKy0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWluY2x1ZGVkLWdl dHRleHQgd2FzIGdpdmVuLgorLWlmIHRlc3QgJHt3aXRoX2luY2x1ZGVkX2dldHRleHQreX0KKy10 aGVuIDoKKy0gIHdpdGh2YWw9JHdpdGhfaW5jbHVkZWRfZ2V0dGV4dDsgbmxzX2N2X2ZvcmNlX3Vz ZV9nbnVfZ2V0dGV4dD0kd2l0aHZhbAorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBubHNfY3Zf Zm9yY2VfdXNlX2dudV9nZXR0ZXh0PW5vIDs7CistZXNhYworLWZpCistCistICAgICAgeyBwcmlu dGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJG5sc19jdl9m b3JjZV91c2VfZ251X2dldHRleHQiID4mNQorLXByaW50ZiAiJXNcbiIgIiRubHNfY3ZfZm9yY2Vf dXNlX2dudV9nZXR0ZXh0IiA+JjY7IH0KKy0KKy0gICAgICBubHNfY3ZfdXNlX2dudV9nZXR0ZXh0 PSIkbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dCIKKy0gICAgICBpZiB0ZXN0ICIkbmxzX2N2 X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dCIgIT0gInllcyI7IHRoZW4KKy0KKy0KKy0gICAgICAgIGlm IHRlc3QgJGd0X2FwaV92ZXJzaW9uIC1nZSAzOyB0aGVuCistICAgICAgICAgIGd0X3JldmlzaW9u X3Rlc3RfY29kZT0nCistI2lmbmRlZiBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTgor LSNkZWZpbmUgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04obWFqb3IpICgobWFqb3Ip ID09IDAgPyAwIDogLTEpCistI2VuZGlmCistdHlwZWRlZiBpbnQgYXJyYXkgWzIgKiAoX19HTlVf R0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04oMCkgPj0gMSkgLSAxXTsKKy0nCistICAgICAgICBl bHNlCistICAgICAgICAgIGd0X3JldmlzaW9uX3Rlc3RfY29kZT0KKy0gICAgICAgIGZpCistICAg ICAgICBpZiB0ZXN0ICRndF9hcGlfdmVyc2lvbiAtZ2UgMjsgdGhlbgorLSAgICAgICAgICBndF9l eHByZXNzaW9uX3Rlc3RfY29kZT0nICsgKiBuZ2V0dGV4dCAoIiIsICIiLCAwKScKKy0gICAgICAg IGVsc2UKKy0gICAgICAgICAgZ3RfZXhwcmVzc2lvbl90ZXN0X2NvZGU9CistICAgICAgICBmaQor LQorLSAgICAgICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IGNoZWNraW5nIGZvciBHTlUgZ2V0dGV4dCBpbiBsaWJjIiA+JjUKKy1wcmludGYgJXMgImNoZWNr aW5nIGZvciBHTlUgZ2V0dGV4dCBpbiBsaWJjLi4uICIgPiY2OyB9CistaWYgZXZhbCB0ZXN0IFwk eyRndF9mdW5jX2dudWdldHRleHRfbGliYyt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2Fj aGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8 X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLSNp bmNsdWRlIDxsaWJpbnRsLmg+CistI2lmbmRlZiBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJ U0lPTgorLWV4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKKy1leHRlcm4gaW50ICpfbmxfZG9t YWluX2JpbmRpbmdzOworLSNkZWZpbmUgX19HTlVfR0VUVEVYVF9TWU1CT0xfRVhQUkVTU0lPTiAo X25sX21zZ19jYXRfY250ciArICpfbmxfZG9tYWluX2JpbmRpbmdzKQorLSNlbHNlCistI2RlZmlu ZSBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OIDAKKy0jZW5kaWYKKy0kZ3RfcmV2aXNp b25fdGVzdF9jb2RlCistCistaW50CistbWFpbiAodm9pZCkKKy17CistCistYmluZHRleHRkb21h aW4gKCIiLCAiIik7CistcmV0dXJuICogZ2V0dGV4dCAoIiIpJGd0X2V4cHJlc3Npb25fdGVzdF9j b2RlICsgX19HTlVfR0VUVEVYVF9TWU1CT0xfRVhQUkVTU0lPTgorLQorLSAgOworLSAgcmV0dXJu IDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6 CistICBldmFsICIkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmM9eWVzIgorLWVsc2UgY2FzZSBlIGlu ICMoCistICBlKSBldmFsICIkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmM9bm8iIDs7CistZXNhYwor LWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz dC5iZWFtIFwKKy0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1l c2FjCistZmkKKy1ldmFsIGFjX3Jlcz1cJCRndF9mdW5jX2dudWdldHRleHRfbGliYworLQkgICAg ICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JGFjX3JlcyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX3JlcyIgPiY2OyB9CistCistICAgICAg ICBpZiB7IGV2YWwgImd0X3ZhbD1cJCRndF9mdW5jX2dudWdldHRleHRfbGliYyI7IHRlc3QgIiRn dF92YWwiICE9ICJ5ZXMiOyB9OyB0aGVuCistCistCistCistCistCistCistCistICAgIHVzZV9h ZGRpdGlvbmFsPXllcworLQorLSAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgorLSAgcHJlZml4 PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKy0gIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVm aXgiCistICBleGVjX3ByZWZpeD0iJGFjbF9maW5hbF9leGVjX3ByZWZpeCIKKy0KKy0gICAgZXZh bCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCistICAgIGV2YWwgYWRkaXRp b25hbF9saWJkaXI9XCIkbGliZGlyXCIKKy0gICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcjI9XCIk ZXhlY19wcmVmaXgvJGFjbF9saWJkaXJzdGVtMlwiCistICAgIGV2YWwgYWRkaXRpb25hbF9saWJk aXIzPVwiJGV4ZWNfcHJlZml4LyRhY2xfbGliZGlyc3RlbTNcIgorLQorLSAgZXhlY19wcmVmaXg9 IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKKy0gIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKKy0K Ky0KKy0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYmludGwtcHJlZml4IHdhcyBnaXZlbi4KKy1p ZiB0ZXN0ICR7d2l0aF9saWJpbnRsX3ByZWZpeCt5fQorLXRoZW4gOgorLSAgd2l0aHZhbD0kd2l0 aF9saWJpbnRsX3ByZWZpeDsKKy0gICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYbm8iOyB0aGVu CistICAgICAgdXNlX2FkZGl0aW9uYWw9bm8KKy0gICAgZWxzZQorLSAgICAgIGlmIHRlc3QgIlgk d2l0aHZhbCIgPSAiWCI7IHRoZW4KKy0KKy0gIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKy0g IHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCistICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4 ZWNfcHJlZml4IgorLSAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCistCist ICAgICAgICAgIGV2YWwgYWRkaXRpb25hbF9pbmNsdWRlZGlyPVwiJGluY2x1ZGVkaXJcIgorLSAg ICAgICAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCistICAgICAgICAgIGV2 YWwgYWRkaXRpb25hbF9saWJkaXIyPVwiJGV4ZWNfcHJlZml4LyRhY2xfbGliZGlyc3RlbTJcIgor LSAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyMz1cIiRleGVjX3ByZWZpeC8kYWNsX2xp YmRpcnN0ZW0zXCIKKy0KKy0gIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCist ICBwcmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCistCistICAgICAgZWxzZQorLSAgICAgICAgYWRk aXRpb25hbF9pbmNsdWRlZGlyPSIkd2l0aHZhbC9pbmNsdWRlIgorLSAgICAgICAgYWRkaXRpb25h bF9saWJkaXI9IiR3aXRodmFsLyRhY2xfbGliZGlyc3RlbSIKKy0gICAgICAgIGFkZGl0aW9uYWxf bGliZGlyMj0iJHdpdGh2YWwvJGFjbF9saWJkaXJzdGVtMiIKKy0gICAgICAgIGFkZGl0aW9uYWxf bGliZGlyMz0iJHdpdGh2YWwvJGFjbF9saWJkaXJzdGVtMyIKKy0gICAgICBmaQorLSAgICBmaQor LQorLWZpCistCistICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyMiIgPSAiWCRhZGRpdGlv bmFsX2xpYmRpciI7IHRoZW4KKy0gICAgYWRkaXRpb25hbF9saWJkaXIyPQorLSAgZmkKKy0gIGlm IHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIzIiA9ICJYJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhl bgorLSAgICBhZGRpdGlvbmFsX2xpYmRpcjM9CistICBmaQorLSAgICAgIExJQklOVEw9CistICBM VExJQklOVEw9CistICBJTkNJTlRMPQorLSAgTElCSU5UTF9QUkVGSVg9CistICAgICAgSEFWRV9M SUJJTlRMPQorLSAgcnBhdGhkaXJzPQorLSAgbHRycGF0aGRpcnM9CistICBuYW1lc19hbHJlYWR5 X2hhbmRsZWQ9CistICBuYW1lc19uZXh0X3JvdW5kPSdpbnRsICcKKy0gIHdoaWxlIHRlc3QgLW4g IiRuYW1lc19uZXh0X3JvdW5kIjsgZG8KKy0gICAgbmFtZXNfdGhpc19yb3VuZD0iJG5hbWVzX25l eHRfcm91bmQiCistICAgIG5hbWVzX25leHRfcm91bmQ9CistICAgIGZvciBuYW1lIGluICRuYW1l c190aGlzX3JvdW5kOyBkbworLSAgICAgIGFscmVhZHlfaGFuZGxlZD0KKy0gICAgICBmb3IgbiBp biAkbmFtZXNfYWxyZWFkeV9oYW5kbGVkOyBkbworLSAgICAgICAgaWYgdGVzdCAiJG4iID0gIiRu YW1lIjsgdGhlbgorLSAgICAgICAgICBhbHJlYWR5X2hhbmRsZWQ9eWVzCistICAgICAgICAgIGJy ZWFrCistICAgICAgICBmaQorLSAgICAgIGRvbmUKKy0gICAgICBpZiB0ZXN0IC16ICIkYWxyZWFk eV9oYW5kbGVkIjsgdGhlbgorLSAgICAgICAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPSIkbmFtZXNf YWxyZWFkeV9oYW5kbGVkICRuYW1lIgorLSAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVybmFt ZT1gZWNobyAiJG5hbWUiIHwgc2VkIC1lICd5fGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8r LXxBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX198J2AKKy0gICAgICAgIGV2YWwgdmFsdWU9 XCJcJEhBVkVfTElCJHVwcGVybmFtZVwiCistICAgICAgICBpZiB0ZXN0IC1uICIkdmFsdWUiOyB0 aGVuCistICAgICAgICAgIGlmIHRlc3QgIiR2YWx1ZSIgPSB5ZXM7IHRoZW4KKy0gICAgICAgICAg ICBldmFsIHZhbHVlPVwiXCRMSUIkdXBwZXJuYW1lXCIKKy0gICAgICAgICAgICB0ZXN0IC16ICIk dmFsdWUiIHx8IExJQklOVEw9IiR7TElCSU5UTH0ke0xJQklOVEw6KyB9JHZhbHVlIgorLSAgICAg ICAgICAgIGV2YWwgdmFsdWU9XCJcJExUTElCJHVwcGVybmFtZVwiCistICAgICAgICAgICAgdGVz dCAteiAiJHZhbHVlIiB8fCBMVExJQklOVEw9IiR7TFRMSUJJTlRMfSR7TFRMSUJJTlRMOisgfSR2 YWx1ZSIKKy0gICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDoKKy0gICAgICAgICAgZmkKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb3VuZF9kaXI9CistICAgICAgICAgIGZvdW5kX2xhPQorLSAgICAgICAgICBm b3VuZF9zbz0KKy0gICAgICAgICAgZm91bmRfYT0KKy0gICAgICAgICAgZXZhbCBsaWJuYW1lPVwi JGFjbF9saWJuYW1lX3NwZWNcIiAgICAjIHR5cGljYWxseTogbGlibmFtZT1saWIkbmFtZQorLSAg ICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX3NobGliZXh0IjsgdGhlbgorLSAgICAgICAgICAgIHNo cmV4dD0iLiRhY2xfc2hsaWJleHQiICAgICAgICAgICAgICMgdHlwaWNhbGx5OiBzaHJleHQ9LnNv CistICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICBzaHJleHQ9CistICAgICAgICAgIGZpCist ICAgICAgICAgIGlmIHRlc3QgJHVzZV9hZGRpdGlvbmFsID0geWVzOyB0aGVuCistICAgICAgICAg ICAgZm9yIGFkZGl0aW9uYWxfbGliZGlyX3ZhcmlhYmxlIGluIGFkZGl0aW9uYWxfbGliZGlyIGFk ZGl0aW9uYWxfbGliZGlyMiBhZGRpdGlvbmFsX2xpYmRpcjM7IGRvCistICAgICAgICAgICAgICBp ZiB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWCI7IHRoZW4KKy0gICAgICAgICAgICAgICAgZXZhbCBk aXI9XCQkYWRkaXRpb25hbF9saWJkaXJfdmFyaWFibGUKKy0gICAgICAgICAgICAgICAgaWYgdGVz dCAtbiAiJGRpciI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX3NobGliZXh0IjsgdGhlbgorLSAgICAg ICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQiICYmIGFjbF9p c19leHBlY3RlZF9lbGZjbGFzcyA8ICIkZGlyLyRsaWJuYW1lJHNocmV4dCI7IHRoZW4KKy0gICAg ICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorLSAgICAgICAgICAgICAgICAgICAg ICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJleHQiCistICAgICAgICAgICAgICAgICAgICBl bHNlCistICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfbGlicmFyeV9uYW1lc19z cGVjIiA9ICckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JzsgdGhlbgorLSAgICAgICAgICAgICAg ICAgICAgICAgIHZlcj1gKGNkICIkZGlyIiAmJiBcCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZm9yIGYgaW4gIiRsaWJuYW1lJHNocmV4dCIuKjsgZG8gZWNobyAiJGYiOyBkb25lIFwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtZSAicyxeJGxpYm5hbWUkc2hy ZXh0XFxcXC4sLCIgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc29ydCAtdCAn LicgLW4gLXIgLWsxLDEgLWsyLDIgLWszLDMgLWs0LDQgLWs1LDUgXAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgc2VkIDFxICkgMj4vZGV2L251bGxgCistICAgICAgICAgICAgICAg ICAgICAgICAgaWYgdGVzdCAtbiAiJHZlciIgJiYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJl eHQuJHZlciIgJiYgYWNsX2lzX2V4cGVjdGVkX2VsZmNsYXNzIDwgIiRkaXIvJGxpYm5hbWUkc2hy ZXh0LiR2ZXIiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRk aXIiCistICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRz aHJleHQuJHZlciIKKy0gICAgICAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAg ICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCBsaWJyYXJ5X25hbWVz PVwiJGFjbF9saWJyYXJ5X25hbWVzX3NwZWNcIgorLSAgICAgICAgICAgICAgICAgICAgICAgIGZv ciBmIGluICRsaWJyYXJ5X25hbWVzOyBkbworLSAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg dGVzdCAtZiAiJGRpci8kZiIgJiYgYWNsX2lzX2V4cGVjdGVkX2VsZmNsYXNzIDwgIiRkaXIvJGYi OyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGYiCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJyZWFrCistICAgICAgICAgICAgICAgICAgICAgICAgICBmaQor LSAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKy0gICAgICAgICAgICAgICAgICAgICAgZmkK Ky0gICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgZmkKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWCI7 IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUuJGFj bF9saWJleHQiICYmICR7QVItYXJ9IC1wICIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IiB8IGFj bF9pc19leHBlY3RlZF9lbGZjbGFzczsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICBmb3Vu ZF9kaXI9IiRkaXIiCistICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2E9IiRkaXIvJGxpYm5h bWUuJGFjbF9saWJleHQiCistICAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAg ICAgIGZpCistICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsg dGhlbgorLSAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZS5sYSI7 IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgICAgZm91bmRfbGE9IiRkaXIvJGxpYm5hbWUubGEi CistICAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAgIGZpCistICAgICAg ICAgICAgICAgIGZpCistICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgIGRvbmUKKy0gICAg ICAgICAgZmkKKy0gICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgiOyB0aGVuCist ICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExUTElCSU5UTDsgZG8KKy0KKy0gIGFjbF9z YXZlX3ByZWZpeD0iJHByZWZpeCIKKy0gIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCistICBh Y2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgorLSAgZXhlY19wcmVmaXg9IiRhY2xf ZmluYWxfZXhlY19wcmVmaXgiCistICBldmFsIHg9XCIkeFwiCistICBleGVjX3ByZWZpeD0iJGFj bF9zYXZlX2V4ZWNfcHJlZml4IgorLSAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorLQorLSAg ICAgICAgICAgICAgY2FzZSAiJHgiIGluCistICAgICAgICAgICAgICAgIC1MKikKKy0gICAgICAg ICAgICAgICAgICBkaXI9YGVjaG8gIlgkeCIgfCBzZWQgLWUgJ3MvXlgtTC8vJ2AKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX3NobGliZXh0Ijsg dGhlbgorLSAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJl eHQiICYmIGFjbF9pc19leHBlY3RlZF9lbGZjbGFzcyA8ICIkZGlyLyRsaWJuYW1lJHNocmV4dCI7 IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorLSAgICAgICAg ICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJleHQiCistICAgICAgICAg ICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfbGli cmFyeV9uYW1lc19zcGVjIiA9ICckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JzsgdGhlbgorLSAg ICAgICAgICAgICAgICAgICAgICAgIHZlcj1gKGNkICIkZGlyIiAmJiBcCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZm9yIGYgaW4gIiRsaWJuYW1lJHNocmV4dCIuKjsgZG8gZWNobyAi JGYiOyBkb25lIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtZSAicyxe JGxpYm5hbWUkc2hyZXh0XFxcXC4sLCIgXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgc29ydCAtdCAnLicgLW4gLXIgLWsxLDEgLWsyLDIgLWszLDMgLWs0LDQgLWs1LDUgXAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIDFxICkgMj4vZGV2L251bGxgCistICAg ICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJHZlciIgJiYgdGVzdCAtZiAiJGRpci8k bGlibmFtZSRzaHJleHQuJHZlciIgJiYgYWNsX2lzX2V4cGVjdGVkX2VsZmNsYXNzIDwgIiRkaXIv JGxpYm5hbWUkc2hyZXh0LiR2ZXIiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgICAgICBm b3VuZF9kaXI9IiRkaXIiCistICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRp ci8kbGlibmFtZSRzaHJleHQuJHZlciIKKy0gICAgICAgICAgICAgICAgICAgICAgICBmaQorLSAg ICAgICAgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCBs aWJyYXJ5X25hbWVzPVwiJGFjbF9saWJyYXJ5X25hbWVzX3NwZWNcIgorLSAgICAgICAgICAgICAg ICAgICAgICAgIGZvciBmIGluICRsaWJyYXJ5X25hbWVzOyBkbworLSAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kZiIgJiYgYWNsX2lzX2V4cGVjdGVkX2VsZmNsYXNz IDwgIiRkaXIvJGYiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rp cj0iJGRpciIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGYi CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCistICAgICAgICAgICAgICAgICAg ICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKy0gICAgICAgICAgICAg ICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAg ZmkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5k X2RpciIgPSAiWCI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIv JGxpYm5hbWUuJGFjbF9saWJleHQiICYmICR7QVItYXJ9IC1wICIkZGlyLyRsaWJuYW1lLiRhY2xf bGliZXh0IiB8IGFjbF9pc19leHBlY3RlZF9lbGZjbGFzczsgdGhlbgorLSAgICAgICAgICAgICAg ICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCistICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2E9 IiRkaXIvJGxpYm5hbWUuJGFjbF9saWJleHQiCistICAgICAgICAgICAgICAgICAgICBmaQorLSAg ICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9k aXIiICE9ICJYIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8k bGlibmFtZS5sYSI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgICAgZm91bmRfbGE9IiRkaXIv JGxpYm5hbWUubGEiCistICAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAg IGZpCistICAgICAgICAgICAgICAgICAgOzsKKy0gICAgICAgICAgICAgIGVzYWMKKy0gICAgICAg ICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KKy0gICAgICAgICAgICAg ICAgYnJlYWsKKy0gICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgZG9uZQorLSAgICAgICAg ICBmaQorLSAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCistICAg ICAgICAgICAgICAgICAgICAgICAgTFRMSUJJTlRMPSIke0xUTElCSU5UTH0ke0xUTElCSU5UTDor IH0tTCRmb3VuZF9kaXIgLWwkbmFtZSIKKy0gICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX3Nv IiAhPSAiWCI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRlbmFibGVfcnBhdGgiID0gbm8gXAorLSAgICAgICAg ICAgICAgICAgfHwgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbSIg XAorLSAgICAgICAgICAgICAgICAgfHwgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgvdXNyLyRhY2xf bGliZGlyc3RlbTIiIFwKKy0gICAgICAgICAgICAgICAgIHx8IHRlc3QgIlgkZm91bmRfZGlyIiA9 ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0zIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTElCSU5UTD0iJHtMSUJJTlRMfSR7TElCSU5UTDorIH0kZm91bmRfc28iCistICAg ICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CistICAgICAg ICAgICAgICAgIGZvciB4IGluICRsdHJwYXRoZGlyczsgZG8KKy0gICAgICAgICAgICAgICAgICBp ZiB0ZXN0ICJYJHgiID0gIlgkZm91bmRfZGlyIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAg aGF2ZWl0PXllcworLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKKy0gICAgICAgICAgICAgICAg ICBmaQorLSAgICAgICAgICAgICAgICBkb25lCistICAgICAgICAgICAgICAgIGlmIHRlc3QgLXog IiRoYXZlaXQiOyB0aGVuCistICAgICAgICAgICAgICAgICAgbHRycGF0aGRpcnM9IiRsdHJwYXRo ZGlycyAkZm91bmRfZGlyIgorLSAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgdGVzdCAiJGFjbF9oYXJkY29kZV9kaXJlY3QiID0geWVzOyB0aGVu CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TElCSU5UTD0iJHtMSUJJTlRMfSR7TElCSU5UTDorIH0kZm91bmRfc28iCistICAgICAgICAgICAg ICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX2hhcmRjb2RlX2xp YmRpcl9mbGFnX3NwZWMiICYmIHRlc3QgIiRhY2xfaGFyZGNvZGVfbWludXNfTCIgPSBubzsgdGhl bgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExJQklOVEw9IiR7TElCSU5UTH0ke0xJQklOVEw6KyB9JGZvdW5kX3NvIgorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhh dmVpdD0KKy0gICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRycGF0aGRpcnM7IGRvCistICAg ICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRmb3VuZF9kaXIiOyB0aGVuCist ICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworLSAgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrCistICAgICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAg ICBkb25lCistICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgor LSAgICAgICAgICAgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0aGRpcnMgJGZvdW5kX2RpciIK Ky0gICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorLSAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4g JExERkxBR1MgJExJQklOVEw7IGRvCistCistICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCist ICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgorLSAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRl eGVjX3ByZWZpeCIKKy0gIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgorLSAg ZXZhbCB4PVwiJHhcIgorLSAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKKy0g IHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKKy0KKy0gICAgICAgICAgICAgICAgICAgICAgaWYg dGVzdCAiWCR4IiA9ICJYLUwkZm91bmRfZGlyIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAg ICAgIGhhdmVpdD15ZXMKKy0gICAgICAgICAgICAgICAgICAgICAgICBicmVhaworLSAgICAgICAg ICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAgICAgZG9uZQorLSAgICAgICAgICAg ICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAg ICAgTElCSU5UTD0iJHtMSUJJTlRMfSR7TElCSU5UTDorIH0tTCRmb3VuZF9kaXIiCistICAgICAg ICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGFjbF9oYXJk Y29kZV9taW51c19MIiAhPSBubzsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMSUJJTlRMPSIke0xJQklOVEx9JHtMSUJJTlRMOisgfSRmb3VuZF9zbyIKKy0gICAgICAgICAg ICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExJQklOVEw9IiR7TElCSU5UTH0ke0xJQklOVEw6KyB9LWwk bmFtZSIKKy0gICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgZmkKKy0g ICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgZWxzZQor LSAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9hIiAhPSAiWCI7IHRoZW4KKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExJQklOVEw9IiR7TElCSU5UTH0ke0xJQklOVEw6KyB9 JGZvdW5kX2EiCistICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTElCSU5UTD0iJHtMSUJJTlRMfSR7TElCSU5UTDorIH0t TCRmb3VuZF9kaXIgLWwkbmFtZSIKKy0gICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgZmkK Ky0gICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9CistICAgICAg ICAgICAgY2FzZSAiJGZvdW5kX2RpciIgaW4KKy0gICAgICAgICAgICAgICovJGFjbF9saWJkaXJz dGVtIHwgKi8kYWNsX2xpYmRpcnN0ZW0vKQorLSAgICAgICAgICAgICAgICBiYXNlZGlyPWBlY2hv ICJYJGZvdW5kX2RpciIgfCBzZWQgLWUgJ3MsXlgsLCcgLWUgInMsLyRhY2xfbGliZGlyc3RlbS8i JyokLCwnYAorLSAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkbmFtZSIgPSAnaW50bCc7IHRoZW4K Ky0gICAgICAgICAgICAgICAgICBMSUJJTlRMX1BSRUZJWD0iJGJhc2VkaXIiCistICAgICAgICAg ICAgICAgIGZpCistICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJGJhc2Vk aXIvaW5jbHVkZSIKKy0gICAgICAgICAgICAgICAgOzsKKy0gICAgICAgICAgICAgICovJGFjbF9s aWJkaXJzdGVtMiB8ICovJGFjbF9saWJkaXJzdGVtMi8pCistICAgICAgICAgICAgICAgIGJhc2Vk aXI9YGVjaG8gIlgkZm91bmRfZGlyIiB8IHNlZCAtZSAncyxeWCwsJyAtZSAicywvJGFjbF9saWJk aXJzdGVtMi8iJyokLCwnYAorLSAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkbmFtZSIgPSAnaW50 bCc7IHRoZW4KKy0gICAgICAgICAgICAgICAgICBMSUJJTlRMX1BSRUZJWD0iJGJhc2VkaXIiCist ICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRp cj0iJGJhc2VkaXIvaW5jbHVkZSIKKy0gICAgICAgICAgICAgICAgOzsKKy0gICAgICAgICAgICAg ICovJGFjbF9saWJkaXJzdGVtMyB8ICovJGFjbF9saWJkaXJzdGVtMy8pCistICAgICAgICAgICAg ICAgIGJhc2VkaXI9YGVjaG8gIlgkZm91bmRfZGlyIiB8IHNlZCAtZSAncyxeWCwsJyAtZSAicywv JGFjbF9saWJkaXJzdGVtMy8iJyokLCwnYAorLSAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkbmFt ZSIgPSAnaW50bCc7IHRoZW4KKy0gICAgICAgICAgICAgICAgICBMSUJJTlRMX1BSRUZJWD0iJGJh c2VkaXIiCistICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxf aW5jbHVkZWRpcj0iJGJhc2VkaXIvaW5jbHVkZSIKKy0gICAgICAgICAgICAgICAgOzsKKy0gICAg ICAgICAgICBlc2FjCistICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVk aXIiICE9ICJYIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgv dXNyL2luY2x1ZGUiOyB0aGVuCistICAgICAgICAgICAgICAgIGhhdmVpdD0KKy0gICAgICAgICAg ICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiID0gIlgvdXNyL2xvY2FsL2lu Y2x1ZGUiOyB0aGVuCistICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4K Ky0gICAgICAgICAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKy0gICAgICAgICAgICAgICAg ICAgICAgbGludXgqIHwgZ251KiB8IGsqYnNkKi1nbnUpIGhhdmVpdD15ZXM7OworLSAgICAgICAg ICAgICAgICAgICAgZXNhYworLSAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAg IGZpCistICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCistICAgICAg ICAgICAgICAgICAgZm9yIHggaW4gJENQUEZMQUdTICRJTkNJTlRMOyBkbworLQorLSAgYWNsX3Nh dmVfcHJlZml4PSIkcHJlZml4IgorLSAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKy0gIGFj bF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCistICBleGVjX3ByZWZpeD0iJGFjbF9m aW5hbF9leGVjX3ByZWZpeCIKKy0gIGV2YWwgeD1cIiR4XCIKKy0gIGV4ZWNfcHJlZml4PSIkYWNs X3NhdmVfZXhlY19wcmVmaXgiCistICBwcmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCistCistICAg ICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtSSRhZGRpdGlvbmFsX2luY2x1ZGVk aXIiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKy0gICAgICAgICAg ICAgICAgICAgICAgYnJlYWsKKy0gICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAg ICAgICAgZG9uZQorLSAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVu CistICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9pbmNsdWRlZGly IjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5D SU5UTD0iJHtJTkNJTlRMfSR7SU5DSU5UTDorIH0tSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiCist ICAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAg ICAgICAgIGZpCistICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgIGZpCistICAgICAgICAg ICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZvdW5kX2xhIjsgdGhlbgorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZV9saWJkaXI9 IiRsaWJkaXIiCistICAgICAgICAgICAgICBjYXNlICIkZm91bmRfbGEiIGluCistICAgICAgICAg ICAgICAgICovKiB8ICpcXCopIC4gIiRmb3VuZF9sYSIgOzsKKy0gICAgICAgICAgICAgICAgKikg LiAiLi8kZm91bmRfbGEiIDs7CistICAgICAgICAgICAgICBlc2FjCistICAgICAgICAgICAgICBs aWJkaXI9IiRzYXZlX2xpYmRpciIKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGRl cCBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworLSAgICAgICAgICAgICAgICBjYXNlICIkZGVwIiBp bgorLSAgICAgICAgICAgICAgICAgIC1MKikKKy0gICAgICAgICAgICAgICAgICAgIGRlcGVuZGVu Y3lfbGliZGlyPWBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MvXlgtTC8vJ2AKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRkZXBlbmRlbmN5 X2xpYmRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbSIgXAorLSAgICAgICAgICAgICAgICAg ICAgICAgJiYgdGVzdCAiWCRkZXBlbmRlbmN5X2xpYmRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGly c3RlbTIiIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICYmIHRlc3QgIlgkZGVwZW5kZW5jeV9s aWJkaXIiICE9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0zIjsgdGhlbgorLSAgICAgICAgICAgICAg ICAgICAgICBoYXZlaXQ9CistICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZGVwZW5k ZW5jeV9saWJkaXIiID0gIlgvdXNyL2xvY2FsLyRhY2xfbGliZGlyc3RlbSIgXAorLSAgICAgICAg ICAgICAgICAgICAgICAgICB8fCB0ZXN0ICJYJGRlcGVuZGVuY3lfbGliZGlyIiA9ICJYL3Vzci9s b2NhbC8kYWNsX2xpYmRpcnN0ZW0yIiBcCistICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRl c3QgIlgkZGVwZW5kZW5jeV9saWJkaXIiID0gIlgvdXNyL2xvY2FsLyRhY2xfbGliZGlyc3RlbTMi OyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4K Ky0gICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGludXgqIHwgZ251KiB8IGsqYnNkKi1nbnUpIGhhdmVpdD15ZXM7 OworLSAgICAgICAgICAgICAgICAgICAgICAgICAgZXNhYworLSAgICAgICAgICAgICAgICAgICAg ICAgIGZpCistICAgICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgICAg IGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgICAgaGF2 ZWl0PQorLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMSUJJTlRM OyBkbworLQorLSAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgorLSAgcHJlZml4PSIkYWNsX2Zp bmFsX3ByZWZpeCIKKy0gIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCistICBl eGVjX3ByZWZpeD0iJGFjbF9maW5hbF9leGVjX3ByZWZpeCIKKy0gIGV2YWwgeD1cIiR4XCIKKy0g IGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCistICBwcmVmaXg9IiRhY2xfc2F2 ZV9wcmVmaXgiCistCistICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0g IlgtTCRkZXBlbmRlbmN5X2xpYmRpciI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGF2ZWl0PXllcworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworLSAgICAg ICAgICAgICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICAgICAgICAgICBkb25lCist ICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKy0gICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRkZXBlbmRlbmN5X2xpYmRpciI7IHRo ZW4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExJQklOVEw9IiR7TElCSU5UTH0ke0xJQklOVEw6KyB9LUwkZGVwZW5kZW5jeV9saWJkaXIi CistICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAgICAgICAg IGZpCistICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorLSAgICAgICAgICAgICAgICAg ICAgICAgIGZvciB4IGluICRMREZMQUdTICRMVExJQklOVEw7IGRvCistCistICBhY2xfc2F2ZV9w cmVmaXg9IiRwcmVmaXgiCistICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgorLSAgYWNsX3Nh dmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKy0gIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFs X2V4ZWNfcHJlZml4IgorLSAgZXZhbCB4PVwiJHhcIgorLSAgZXhlY19wcmVmaXg9IiRhY2xfc2F2 ZV9leGVjX3ByZWZpeCIKKy0gIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKKy0KKy0gICAgICAg ICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGRlcGVuZGVuY3lfbGliZGly IjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCistICAgICAgICAgICAgICAgICAgICAgICAgICBm aQorLSAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKy0gICAgICAgICAgICAgICAgICAgICAg ICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgdGVzdCAtZCAiJGRlcGVuZGVuY3lfbGliZGlyIjsgdGhlbgorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFRMSUJJTlRMPSIke0xUTElC SU5UTH0ke0xUTElCSU5UTDorIH0tTCRkZXBlbmRlbmN5X2xpYmRpciIKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAg ICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAg ICAgICA7OworLSAgICAgICAgICAgICAgICAgIC1SKikKKy0gICAgICAgICAgICAgICAgICAgIGRp cj1gZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzL15YLVIvLydgCistICAgICAgICAgICAgICAgICAg ICBpZiB0ZXN0ICIkZW5hYmxlX3JwYXRoIiAhPSBubzsgdGhlbgorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0K Ky0gICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJHJwYXRoZGlyczsgZG8KKy0gICAgICAg ICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZGlyIjsgdGhlbgorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworLSAgICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWsKKy0gICAgICAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgICAgICAg ICBkb25lCistICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVu CistICAgICAgICAgICAgICAgICAgICAgICAgcnBhdGhkaXJzPSIkcnBhdGhkaXJzICRkaXIiCist ICAgICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorLSAgICAgICAgICAg ICAgICAgICAgICBmb3IgeCBpbiAkbHRycGF0aGRpcnM7IGRvCistICAgICAgICAgICAgICAgICAg ICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGRpciI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAg ICAgICAgIGhhdmVpdD15ZXMKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCistICAg ICAgICAgICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICAgICAgICAgZG9uZQorLSAg ICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorLSAgICAgICAg ICAgICAgICAgICAgICAgIGx0cnBhdGhkaXJzPSIkbHRycGF0aGRpcnMgJGRpciIKKy0gICAgICAg ICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAg ICAgICAgICA7OworLSAgICAgICAgICAgICAgICAgIC1sKikKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwPWBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3Mv XlgtbC8vJ2AKKy0gICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZGVwIiAhPSBYYyBcCist ICAgICAgICAgICAgICAgICAgICAgICB8fCBjYXNlICRob3N0X29zIGluCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxpbnV4KiB8IGdudSogfCBrKmJzZCotZ251KSBmYWxzZSA7OworLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqKSAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1 ZSA7OworLSAgICAgICAgICAgICAgICAgICAgICAgICAgZXNhYzsgdGhlbgorLSAgICAgICAgICAg ICAgICAgICAgICBuYW1lc19uZXh0X3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCAkZGVwIgorLSAg ICAgICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICAgICAgIDs7CistICAgICAgICAg ICAgICAgICAgKi5sYSkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzX25leHRfcm91bmQ9 IiRuYW1lc19uZXh0X3JvdW5kICJgZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzLF5YLiovLCwnIC1l ICdzLF5saWIsLCcgLWUgJ3MsXC5sYSQsLCdgCistICAgICAgICAgICAgICAgICAgICA7OworLSAg ICAgICAgICAgICAgICAgICopCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExJQklOVEw9IiR7TElCSU5UTH0ke0xJQklOVEw6KyB9JGRlcCIKKy0gICAgICAgICAgICAg ICAgICAgIExUTElCSU5UTD0iJHtMVExJQklOVEx9JHtMVExJQklOVEw6KyB9JGRlcCIKKy0gICAg ICAgICAgICAgICAgICAgIDs7CistICAgICAgICAgICAgICAgIGVzYWMKKy0gICAgICAgICAgICAg IGRvbmUKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCSU5UTD0iJHtM SUJJTlRMfSR7TElCSU5UTDorIH0tbCRuYW1lIgorLSAgICAgICAgICAgIExUTElCSU5UTD0iJHtM VExJQklOVEx9JHtMVExJQklOVEw6KyB9LWwkbmFtZSIKKy0gICAgICAgICAgZmkKKy0gICAgICAg IGZpCistICAgICAgZmkKKy0gICAgZG9uZQorLSAgZG9uZQorLSAgaWYgdGVzdCAiWCRycGF0aGRp cnMiICE9ICJYIjsgdGhlbgorLSAgICBpZiB0ZXN0IC1uICIkYWNsX2hhcmRjb2RlX2xpYmRpcl9z ZXBhcmF0b3IiOyB0aGVuCistICAgICAgICAgICAgICAgICAgICAgICAgYWxsZGlycz0KKy0gICAg ICBmb3IgZm91bmRfZGlyIGluICRycGF0aGRpcnM7IGRvCistICAgICAgICBhbGxkaXJzPSIke2Fs bGRpcnN9JHthbGxkaXJzOiskYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3J9JGZvdW5kX2Rp ciIKKy0gICAgICBkb25lCistICAgICAgICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgor LSAgICAgIGxpYmRpcj0iJGFsbGRpcnMiCistICAgICAgZXZhbCBmbGFnPVwiJGFjbF9oYXJkY29k ZV9saWJkaXJfZmxhZ19zcGVjXCIKKy0gICAgICBsaWJkaXI9IiRhY2xfc2F2ZV9saWJkaXIiCist ICAgICAgTElCSU5UTD0iJHtMSUJJTlRMfSR7TElCSU5UTDorIH0kZmxhZyIKKy0gICAgZWxzZQor LSAgICAgICAgICAgIGZvciBmb3VuZF9kaXIgaW4gJHJwYXRoZGlyczsgZG8KKy0gICAgICAgIGFj bF9zYXZlX2xpYmRpcj0iJGxpYmRpciIKKy0gICAgICAgIGxpYmRpcj0iJGZvdW5kX2RpciIKKy0g ICAgICAgIGV2YWwgZmxhZz1cIiRhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCistICAg ICAgICBsaWJkaXI9IiRhY2xfc2F2ZV9saWJkaXIiCistICAgICAgICBMSUJJTlRMPSIke0xJQklO VEx9JHtMSUJJTlRMOisgfSRmbGFnIgorLSAgICAgIGRvbmUKKy0gICAgZmkKKy0gIGZpCistICBp ZiB0ZXN0ICJYJGx0cnBhdGhkaXJzIiAhPSAiWCI7IHRoZW4KKy0gICAgICAgICAgICBmb3IgZm91 bmRfZGlyIGluICRsdHJwYXRoZGlyczsgZG8KKy0gICAgICBMVExJQklOVEw9IiR7TFRMSUJJTlRM fSR7TFRMSUJJTlRMOisgfS1SJGZvdW5kX2RpciIKKy0gICAgZG9uZQorLSAgZmkKKy0KKy0KKy0K Ky0KKy0KKy0gICAgICAgICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGZvciBHTlUgZ2V0dGV4dCBpbiBsaWJpbnRsIiA+JjUKKy1wcmludGYg JXMgImNoZWNraW5nIGZvciBHTlUgZ2V0dGV4dCBpbiBsaWJpbnRsLi4uICIgPiY2OyB9CistaWYg ZXZhbCB0ZXN0IFwkeyRndF9mdW5jX2dudWdldHRleHRfbGliaW50bCt5fQorLXRoZW4gOgorLSAg cHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBndF9z YXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCistICAgICAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFH UyAkSU5DSU5UTCIKKy0gICAgICAgICAgICBndF9zYXZlX0xJQlM9IiRMSUJTIgorLSAgICAgICAg ICAgIExJQlM9IiRMSUJTICRMSUJJTlRMIgorLSAgICAgICAgICAgICAgICAgICAgICAgIGNhdCBj b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMu aC4gICovCistCistI2luY2x1ZGUgPGxpYmludGwuaD4KKy0jaWZuZGVmIF9fR05VX0dFVFRFWFRf U1VQUE9SVEVEX1JFVklTSU9OCistZXh0ZXJuIGludCBfbmxfbXNnX2NhdF9jbnRyOworLWV4dGVy bgorLSNpZmRlZiBfX2NwbHVzcGx1cworLSJDIgorLSNlbmRpZgorLWNvbnN0IGNoYXIgKl9ubF9l eHBhbmRfYWxpYXMgKGNvbnN0IGNoYXIgKik7CistI2RlZmluZSBfX0dOVV9HRVRURVhUX1NZTUJP TF9FWFBSRVNTSU9OIChfbmxfbXNnX2NhdF9jbnRyICsgKl9ubF9leHBhbmRfYWxpYXMgKCIiKSkK Ky0jZWxzZQorLSNkZWZpbmUgX19HTlVfR0VUVEVYVF9TWU1CT0xfRVhQUkVTU0lPTiAwCistI2Vu ZGlmCistJGd0X3JldmlzaW9uX3Rlc3RfY29kZQorLQorLWludAorLW1haW4gKHZvaWQpCistewor LQorLWJpbmR0ZXh0ZG9tYWluICgiIiwgIiIpOworLXJldHVybiAqIGdldHRleHQgKCIiKSRndF9l eHByZXNzaW9uX3Rlc3RfY29kZSArIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04KKy0K Ky0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9saW5rICIk TElORU5PIgorLXRoZW4gOgorLSAgZXZhbCAiJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsPXll cyIKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgZXZhbCAiJGd0X2Z1bmNfZ251Z2V0dGV4dF9s aWJpbnRsPW5vIiA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0 ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBj b25mdGVzdC4kYWNfZXh0CistICAgICAgICAgICAgICAgICAgICAgICAgaWYgeyBldmFsICJndF92 YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGwiOyB0ZXN0ICIkZ3RfdmFsIiAhPSB5ZXM7 IH0gJiYgdGVzdCAtbiAiJExJQklDT05WIjsgdGhlbgorLSAgICAgICAgICAgICAgTElCUz0iJExJ QlMgJExJQklDT05WIgorLSAgICAgICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+ Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0jaW5jbHVkZSA8 bGliaW50bC5oPgorLSNpZm5kZWYgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04KKy1l eHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7CistZXh0ZXJuCistI2lmZGVmIF9fY3BsdXNwbHVz CistIkMiCistI2VuZGlmCistY29uc3QgY2hhciAqX25sX2V4cGFuZF9hbGlhcyAoY29uc3QgY2hh ciAqKTsKKy0jZGVmaW5lIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04gKF9ubF9tc2df Y2F0X2NudHIgKyAqX25sX2V4cGFuZF9hbGlhcyAoIiIpKQorLSNlbHNlCistI2RlZmluZSBfX0dO VV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OIDAKKy0jZW5kaWYKKy0kZ3RfcmV2aXNpb25fdGVz dF9jb2RlCistCistaW50CistbWFpbiAodm9pZCkKKy17CistCistYmluZHRleHRkb21haW4gKCIi LCAiIik7CistcmV0dXJuICogZ2V0dGV4dCAoIiIpJGd0X2V4cHJlc3Npb25fdGVzdF9jb2RlICsg X19HTlVfR0VUVEVYVF9TWU1CT0xfRVhQUkVTU0lPTgorLQorLSAgOworLSAgcmV0dXJuIDA7Cist fQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6CistICBM SUJJTlRMPSIkTElCSU5UTCAkTElCSUNPTlYiCistICAgICAgICAgICAgICAgICBMVExJQklOVEw9 IiRMVExJQklOVEwgJExUTElCSUNPTlYiCistICAgICAgICAgICAgICAgICBldmFsICIkZ3RfZnVu Y19nbnVnZXR0ZXh0X2xpYmludGw9eWVzIgorLQorLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5l cnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAgY29uZnRlc3QkYWNf ZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgICAgIENQ UEZMQUdTPSIkZ3Rfc2F2ZV9DUFBGTEFHUyIKKy0gICAgICAgICAgICBMSUJTPSIkZ3Rfc2F2ZV9M SUJTIiA7OworLWVzYWMKKy1maQorLWV2YWwgYWNfcmVzPVwkJGd0X2Z1bmNfZ251Z2V0dGV4dF9s aWJpbnRsCistCSAgICAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfcmVzIiA+JjY7 IH0KKy0gICAgICAgIGZpCistCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIHsgZXZhbCAiZ3RfdmFsPVwkJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJjIjsgdGVzdCAi JGd0X3ZhbCIgPSAieWVzIjsgfSBcCistICAgICAgICAgICB8fCB7IHsgZXZhbCAiZ3RfdmFsPVwk JGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsIjsgdGVzdCAiJGd0X3ZhbCIgPSAieWVzIjsgfSBc CistICAgICAgICAgICAgICAgICYmIHRlc3QgIiRQQUNLQUdFIiAhPSBnZXR0ZXh0LXJ1bnRpbWUg XAorLSAgICAgICAgICAgICAgICAmJiB0ZXN0ICIkUEFDS0FHRSIgIT0gZ2V0dGV4dC10b29sczsg fTsgdGhlbgorLSAgICAgICAgICBndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQ9eWVzCist ICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICAgICBMSUJJTlRMPQorLSAgICAgICAgICBM VExJQklOVEw9CistICAgICAgICAgIElOQ0lOVEw9CistICAgICAgICBmaQorLQorLQorLSAgICAg ICAgaWYgdGVzdCAiJGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dCIgIT0gInllcyI7IHRo ZW4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBubHNfY3ZfdXNlX2dudV9nZXR0ZXh0 PXllcworLSAgICAgICAgZmkKKy0gICAgICBmaQorLQorLSAgICAgIGlmIHRlc3QgIiRubHNfY3Zf dXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCistICAgICAgICAgICAgICAgIEJVSUxEX0lO Q0xVREVEX0xJQklOVEw9eWVzCistICAgICAgICBVU0VfSU5DTFVERURfTElCSU5UTD15ZXMKKy0j ICAgICAgICBMSUJJTlRMPSJtNF9pZihbbGliL2ludGxdLFtdLFwke3RvcF9idWlsZGRpcn0vaW50 bCxbbGliL2ludGxdKS9saWJpbnRsLmxhICRMSUJJQ09OViAkTElCVEhSRUFEIgorLQkjIHdlIGRv bid0IGJ1aWxkIHdpdGggbGlidG9vbAorLSAgICAgICAgTElCSU5UTD0ibGliL2ludGwvbGliaW50 bC5hICRMSUJJQ09OViAkTElCVEhSRUFEIgorLSAgICAgICAgTFRMSUJJTlRMPSJsaWIvaW50bC9s aWJpbnRsLmxhICRMVExJQklDT05WICRMVExJQlRIUkVBRCIKKy0gICAgICAgIExJQlM9YGVjaG8g IiAkTElCUyAiIHwgc2VkIC1lICdzLyAtbGludGwgLyAvJyAtZSAncy9eIC8vJyAtZSAncy8gJC8v J2AKKy0gICAgICBmaQorLQorLSAgICAgIENBVE9CSkVYVD0KKy0gICAgICBpZiB0ZXN0ICIkZ3Rf dXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiA9ICJ5ZXMiIFwKKy0gICAgICAgICB8fCB0ZXN0 ICIkbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dCIgPSAieWVzIjsgdGhlbgorLSAgICAgICAgICAgICAg ICBDQVRPQkpFWFQ9LmdtbworLSAgICAgIGZpCistCistCistICAgIGlmIHRlc3QgLW4gIiRJTlRM X01BQ09TWF9MSUJTIjsgdGhlbgorLSAgICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVk X2dudWdldHRleHQiID0gInllcyIgXAorLSAgICAgICAgIHx8IHRlc3QgIiRubHNfY3ZfdXNlX2du dV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCistICAgICAgICAgICAgICAgIExJQklOVEw9IiRMSUJJ TlRMICRJTlRMX01BQ09TWF9MSUJTIgorLSAgICAgICAgTFRMSUJJTlRMPSIkTFRMSUJJTlRMICRJ TlRMX01BQ09TWF9MSUJTIgorLSAgICAgIGZpCistICAgIGZpCistCistICAgIGlmIHRlc3QgIiRn dF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAorLSAgICAgICB8fCB0ZXN0 ICIkbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dCIgPSAieWVzIjsgdGhlbgorLQorLXByaW50ZiAiJXNc biIgIiNkZWZpbmUgRU5BQkxFX05MUyAxIiA+PmNvbmZkZWZzLmgKKy0KKy0gICAgZWxzZQorLSAg ICAgIFVTRV9OTFM9bm8KKy0gICAgZmkKKy0gIGZpCistCistICB7IHByaW50ZiAiJXNcbiIgIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0byB1c2UgTkxTIiA+ JjUKKy1wcmludGYgJXMgImNoZWNraW5nIHdoZXRoZXIgdG8gdXNlIE5MUy4uLiAiID4mNjsgfQor LSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JFVTRV9OTFMiID4mNQorLXByaW50ZiAiJXNcbiIgIiRVU0VfTkxTIiA+JjY7IH0KKy0gIGlmIHRl c3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCistICAgIHsgcHJpbnRmICIlc1xuIiAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGVyZSB0aGUgZ2V0dGV4dCBmdW5jdGlv biBjb21lcyBmcm9tIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIHdoZXJlIHRoZSBnZXR0ZXh0 IGZ1bmN0aW9uIGNvbWVzIGZyb20uLi4gIiA+JjY7IH0KKy0gICAgaWYgdGVzdCAiJGd0X3VzZV9w cmVpbnN0YWxsZWRfZ251Z2V0dGV4dCIgPSAieWVzIjsgdGhlbgorLSAgICAgIGlmIHsgZXZhbCAi Z3RfdmFsPVwkJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsIjsgdGVzdCAiJGd0X3ZhbCIgPSAi eWVzIjsgfTsgdGhlbgorLSAgICAgICAgZ3Rfc291cmNlPSJleHRlcm5hbCBsaWJpbnRsIgorLSAg ICAgIGVsc2UKKy0gICAgICAgIGd0X3NvdXJjZT0ibGliYyIKKy0gICAgICBmaQorLSAgICBlbHNl CistICAgICAgZ3Rfc291cmNlPSJpbmNsdWRlZCBpbnRsIGRpcmVjdG9yeSIKKy0gICAgZmkKKy0g ICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JGd0X3NvdXJjZSIgPiY1CistcHJpbnRmICIlc1xuIiAiJGd0X3NvdXJjZSIgPiY2OyB9CistICBm aQorLQorLSAgaWYgdGVzdCAiJFVTRV9OTFMiID0gInllcyI7IHRoZW4KKy0KKy0gICAgaWYgdGVz dCAiJGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dCIgPSAieWVzIjsgdGhlbgorLSAgICAg IGlmIHsgZXZhbCAiZ3RfdmFsPVwkJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsIjsgdGVzdCAi JGd0X3ZhbCIgPSAieWVzIjsgfTsgdGhlbgorLSAgICAgICAgeyBwcmludGYgIiVzXG4iICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBsaW5rIHdpdGggbGliaW50 bCIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBob3cgdG8gbGluayB3aXRoIGxpYmludGwuLi4g IiA+JjY7IH0KKy0gICAgICAgIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6ICRMSUJJTlRMIiA+JjUKKy1wcmludGYgIiVzXG4iICIkTElCSU5UTCIg PiY2OyB9CistCistICBmb3IgZWxlbWVudCBpbiAkSU5DSU5UTDsgZG8KKy0gICAgaGF2ZWl0PQor LSAgICBmb3IgeCBpbiAkQ1BQRkxBR1M7IGRvCistCistICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVm aXgiCistICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgorLSAgYWNsX3NhdmVfZXhlY19wcmVm aXg9IiRleGVjX3ByZWZpeCIKKy0gIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4 IgorLSAgZXZhbCB4PVwiJHhcIgorLSAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZp eCIKKy0gIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKKy0KKy0gICAgICBpZiB0ZXN0ICJYJHgi ID0gIlgkZWxlbWVudCI7IHRoZW4KKy0gICAgICAgIGhhdmVpdD15ZXMKKy0gICAgICAgIGJyZWFr CistICAgICAgZmkKKy0gICAgZG9uZQorLSAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgor LSAgICAgIENQUEZMQUdTPSIke0NQUEZMQUdTfSR7Q1BQRkxBR1M6KyB9JGVsZW1lbnQiCistICAg IGZpCistICBkb25lCistCistICAgICAgZmkKKy0KKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5l IEhBVkVfR0VUVEVYVCAxIiA+PmNvbmZkZWZzLmgKKy0KKy0KKy1wcmludGYgIiVzXG4iICIjZGVm aW5lIEhBVkVfRENHRVRURVhUIDEiID4+Y29uZmRlZnMuaAorLQorLSAgICBmaQorLQorLSAgICAg ICAgUE9TVUI9cG8KKy0gIGZpCistCistCistICAgICAgICAgICAgQlVJTERfSU5DTFVERURfTElC SU5UTD15ZXMKKy0KKy0KKy0KKy0KKy0KKy0KKy0gICAgSU5UTExJQlM9IiRMSUJJTlRMIgorLQor LQorLQorLQorLQorLQorLQorLWFjX2hlYWRlcl9kaXJlbnQ9bm8KKy1mb3IgYWNfaGRyIGluIGRp cmVudC5oIHN5cy9uZGlyLmggc3lzL2Rpci5oIG5kaXIuaDsgZG8KKy0gIGFzX2FjX0hlYWRlcj1g cHJpbnRmICIlc1xuIiAiYWNfY3ZfaGVhZGVyX2RpcmVudF8kYWNfaGRyIiB8IHNlZCAiJGFzX3Nl ZF9zaCJgCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo ZWNraW5nIGZvciAkYWNfaGRyIHRoYXQgZGVmaW5lcyBESVIiID4mNQorLXByaW50ZiAlcyAiY2hl Y2tpbmcgZm9yICRhY19oZHIgdGhhdCBkZWZpbmVzIERJUi4uLiAiID4mNjsgfQorLWlmIGV2YWwg dGVzdCBcJHskYXNfYWNfSGVhZGVyK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQp ICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF T0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistI2luY2x1ZGUg PHN5cy90eXBlcy5oPgorLSNpbmNsdWRlIDwkYWNfaGRyPgorLQorLWludAorLW1haW4gKHZvaWQp CisteworLWlmICgoRElSICopIDApCistcmV0dXJuIDA7CistICA7CistICByZXR1cm4gMDsKKy19 CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0g IGV2YWwgIiRhc19hY19IZWFkZXI9eWVzIgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBldmFs ICIkYXNfYWNfSGVhZGVyPW5vIiA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3Qu ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7 CistZXNhYworLWZpCistZXZhbCBhY19yZXM9XCQkYXNfYWNfSGVhZGVyCistCSAgICAgICB7IHBy aW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVz IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfcmVzIiA+JjY7IH0KKy1pZiBldmFsIHRlc3QgXCJ4 XCQiJGFzX2FjX0hlYWRlciJcIiA9IHgieWVzIgorLXRoZW4gOgorLSAgY2F0ID4+Y29uZmRlZnMu aCA8PF9BQ0VPRgorLSNkZWZpbmUgYHByaW50ZiAiJXNcbiIgIkhBVkVfJGFjX2hkciIgfCBzZWQg IiRhc19zZWRfY3BwImAgMQorLV9BQ0VPRgorLQorLWFjX2hlYWRlcl9kaXJlbnQ9JGFjX2hkcjsg YnJlYWsKKy1maQorLQorLWRvbmUKKy0jIFR3byB2ZXJzaW9ucyBvZiBvcGVuZGlyIGV0IGFsLiBh cmUgaW4gLWxkaXIgYW5kIC1seCBvbiBTQ08gWGVuaXguCistaWYgdGVzdCAkYWNfaGVhZGVyX2Rp cmVudCA9IGRpcmVudC5oOyB0aGVuCistICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGxpYnJhcnkgY29udGFpbmluZyBvcGVuZGlyIiA+ JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgb3BlbmRpci4u LiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9zZWFyY2hfb3BlbmRpcit5fQorLXRoZW4gOgor LSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBh Y19mdW5jX3NlYXJjaF9zYXZlX0xJQlM9JExJQlMKKy1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G ID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLS8qIE92ZXJy aWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorLSAgIFVz ZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQwor LSAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBh cHBseS4KKy0gICBUaGUgJ2V4dGVybiAiQyInIGlzIGZvciBidWlsZHMgYnkgQysrIGNvbXBpbGVy czsKKy0gICBhbHRob3VnaCB0aGlzIGlzIG5vdCBnZW5lcmFsbHkgc3VwcG9ydGVkIGluIEMgY29k ZSBzdXBwb3J0aW5nIGl0IGhlcmUKKy0gICBoYXMgbGl0dGxlIGNvc3QgYW5kIHNvbWUgcHJhY3Rp Y2FsIGJlbmVmaXQgKHNyIDExMDUzMikuICAqLworLSNpZmRlZiBfX2NwbHVzcGx1cworLWV4dGVy biAiQyIKKy0jZW5kaWYKKy1jaGFyIG9wZW5kaXIgKHZvaWQpOworLWludAorLW1haW4gKHZvaWQp CisteworLXJldHVybiBvcGVuZGlyICgpOworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VP RgorLWZvciBhY19saWIgaW4gJycgZGlyCistZG8KKy0gIGlmIHRlc3QgLXogIiRhY19saWIiOyB0 aGVuCistICAgIGFjX3Jlcz0ibm9uZSByZXF1aXJlZCIKKy0gIGVsc2UKKy0gICAgYWNfcmVzPS1s JGFjX2xpYgorLSAgICBMSUJTPSItbCRhY19saWIgICRhY19mdW5jX3NlYXJjaF9zYXZlX0xJQlMi CistICBmaQorLSAgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGFj X2N2X3NlYXJjaF9vcGVuZGlyPSRhY19yZXMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJy IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0ZXN0JGFjX2V4 ZWV4dAorLSAgaWYgdGVzdCAke2FjX2N2X3NlYXJjaF9vcGVuZGlyK3l9CistdGhlbiA6CistICBi cmVhaworLWZpCistZG9uZQorLWlmIHRlc3QgJHthY19jdl9zZWFyY2hfb3BlbmRpcit5fQorLXRo ZW4gOgorLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl9zZWFyY2hfb3BlbmRpcj1u byA7OworLWVzYWMKKy1maQorLXJtIGNvbmZ0ZXN0LiRhY19leHQKKy1MSUJTPSRhY19mdW5jX3Nl YXJjaF9zYXZlX0xJQlMgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2VhcmNoX29wZW5kaXIiID4mNQor LXByaW50ZiAiJXNcbiIgIiRhY19jdl9zZWFyY2hfb3BlbmRpciIgPiY2OyB9CistYWNfcmVzPSRh Y19jdl9zZWFyY2hfb3BlbmRpcgorLWlmIHRlc3QgIiRhY19yZXMiICE9IG5vCistdGhlbiA6Cist ICB0ZXN0ICIkYWNfcmVzIiA9ICJub25lIHJlcXVpcmVkIiB8fCBMSUJTPSIkYWNfcmVzICRMSUJT IgorLQorLWZpCistCistZWxzZQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgb3BlbmRpciIgPiY1 CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgbGlicmFyeSBjb250YWluaW5nIG9wZW5kaXIuLi4g IiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3Zfc2VhcmNoX29wZW5kaXIreX0KKy10aGVuIDoKKy0g IHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNf ZnVuY19zZWFyY2hfc2F2ZV9MSUJTPSRMSUJTCistY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+ Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0vKiBPdmVycmlk ZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKy0gICBVc2Ug Y2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKy0g ICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBw bHkuCistICAgVGhlICdleHRlcm4gIkMiJyBpcyBmb3IgYnVpbGRzIGJ5IEMrKyBjb21waWxlcnM7 CistICAgYWx0aG91Z2ggdGhpcyBpcyBub3QgZ2VuZXJhbGx5IHN1cHBvcnRlZCBpbiBDIGNvZGUg c3VwcG9ydGluZyBpdCBoZXJlCistICAgaGFzIGxpdHRsZSBjb3N0IGFuZCBzb21lIHByYWN0aWNh bCBiZW5lZml0IChzciAxMTA1MzIpLiAgKi8KKy0jaWZkZWYgX19jcGx1c3BsdXMKKy1leHRlcm4g IkMiCistI2VuZGlmCistY2hhciBvcGVuZGlyICh2b2lkKTsKKy1pbnQKKy1tYWluICh2b2lkKQor LXsKKy1yZXR1cm4gb3BlbmRpciAoKTsKKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YK Ky1mb3IgYWNfbGliIGluICcnIHgKKy1kbworLSAgaWYgdGVzdCAteiAiJGFjX2xpYiI7IHRoZW4K Ky0gICAgYWNfcmVzPSJub25lIHJlcXVpcmVkIgorLSAgZWxzZQorLSAgICBhY19yZXM9LWwkYWNf bGliCistICAgIExJQlM9Ii1sJGFjX2xpYiAgJGFjX2Z1bmNfc2VhcmNoX3NhdmVfTElCUyIKKy0g IGZpCistICBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIgorLXRoZW4gOgorLSAgYWNfY3Zf c2VhcmNoX29wZW5kaXI9JGFjX3JlcworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29u ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAgY29uZnRlc3QkYWNfZXhlZXh0 CistICBpZiB0ZXN0ICR7YWNfY3Zfc2VhcmNoX29wZW5kaXIreX0KKy10aGVuIDoKKy0gIGJyZWFr CistZmkKKy1kb25lCistaWYgdGVzdCAke2FjX2N2X3NlYXJjaF9vcGVuZGlyK3l9CistdGhlbiA6 CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2N2X3NlYXJjaF9vcGVuZGlyPW5vIDs7 CistZXNhYworLWZpCistcm0gY29uZnRlc3QuJGFjX2V4dAorLUxJQlM9JGFjX2Z1bmNfc2VhcmNo X3NhdmVfTElCUyA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zZWFyY2hfb3BlbmRpciIgPiY1CistcHJp bnRmICIlc1xuIiAiJGFjX2N2X3NlYXJjaF9vcGVuZGlyIiA+JjY7IH0KKy1hY19yZXM9JGFjX2N2 X3NlYXJjaF9vcGVuZGlyCistaWYgdGVzdCAiJGFjX3JlcyIgIT0gbm8KKy10aGVuIDoKKy0gIHRl c3QgIiRhY19yZXMiID0gIm5vbmUgcmVxdWlyZWQiIHx8IExJQlM9IiRhY19yZXMgJExJQlMiCist CistZmkKKy0KKy1maQorLQorLQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5F Tk8iICJzeXMvbWtkZXYuaCIgImFjX2N2X2hlYWRlcl9zeXNfbWtkZXZfaCIgIiRhY19pbmNsdWRl c19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N5c19ta2Rldl9oIiA9IHh5ZXMK Ky10aGVuIDoKKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIE1BSk9SX0lOX01LREVWIDEiID4+ Y29uZmRlZnMuaAorLQorLWZpCistCistaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N5c19ta2Rldl9o ID0gbm87IHRoZW4KKy0gIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJz eXMvc3lzbWFjcm9zLmgiICJhY19jdl9oZWFkZXJfc3lzX3N5c21hY3Jvc19oIiAiJGFjX2luY2x1 ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX3N5c21hY3Jvc19oIiA9 IHh5ZXMKKy10aGVuIDoKKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIE1BSk9SX0lOX1NZU01B Q1JPUyAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLWZpCistCistCistCistIGFjX2ZuX2Nf Y2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJpbnR0eXBlcy5oIiAiYWNfY3ZfaGVhZGVy X2ludHR5cGVzX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hl YWRlcl9pbnR0eXBlc19oIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZp bmUgSEFWRV9JTlRUWVBFU19IIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCistCistCistYWNf Zm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVOTyIgInVuaXN0ZC5oIiAiYWNfY3ZfaGVh ZGVyX3VuaXN0ZF9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl9o ZWFkZXJfdW5pc3RkX2giID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmlu ZSBIQVZFX1VOSVNURF9IIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19o ZWFkZXJfY29tcGlsZSAiJExJTkVOTyIgInN0ZGxpYi5oIiAiYWNfY3ZfaGVhZGVyX3N0ZGxpYl9o IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3RkbGli X2giID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NURExJ Ql9IIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGls ZSAiJExJTkVOTyIgInZhcmFyZ3MuaCIgImFjX2N2X2hlYWRlcl92YXJhcmdzX2giICIkYWNfaW5j bHVkZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl92YXJhcmdzX2giID0geHll cworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1ZBUkFSR1NfSCAxIiA+ PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5F Tk8iICJsaW1pdHMuaCIgImFjX2N2X2hlYWRlcl9saW1pdHNfaCIgIiRhY19pbmNsdWRlc19kZWZh dWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2xpbWl0c19oIiA9IHh5ZXMKKy10aGVuIDoK Ky0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9MSU1JVFNfSCAxIiA+PmNvbmZkZWZzLmgK Ky0KKy1maQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJzdHJpbmcu aCIgImFjX2N2X2hlYWRlcl9zdHJpbmdfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRl c3QgIngkYWNfY3ZfaGVhZGVyX3N0cmluZ19oIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAi JXNcbiIgIiNkZWZpbmUgSEFWRV9TVFJJTkdfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFj X2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJtZW1vcnkuaCIgImFjX2N2X2hl YWRlcl9tZW1vcnlfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3Zf aGVhZGVyX21lbW9yeV9oIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZp bmUgSEFWRV9NRU1PUllfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tf aGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJsb2NhbGUuaCIgImFjX2N2X2hlYWRlcl9sb2NhbGVf aCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2xvY2Fs ZV9oIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9MT0NB TEVfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBp bGUgIiRMSU5FTk8iICJ0ZXJtY2FwLmgiICJhY19jdl9oZWFkZXJfdGVybWNhcF9oIiAiJGFjX2lu Y2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfdGVybWNhcF9oIiA9IHh5 ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9URVJNQ0FQX0ggMSIg Pj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElO RU5PIiAidGVybWlvLmgiICJhY19jdl9oZWFkZXJfdGVybWlvX2giICIkYWNfaW5jbHVkZXNfZGVm YXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl90ZXJtaW9faCIgPSB4eWVzCistdGhlbiA6 CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfVEVSTUlPX0ggMSIgPj5jb25mZGVmcy5o CistCistZmkKKy1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAidGVybWlv cy5oIiAiYWNfY3ZfaGVhZGVyX3Rlcm1pb3NfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlm IHRlc3QgIngkYWNfY3ZfaGVhZGVyX3Rlcm1pb3NfaCIgPSB4eWVzCistdGhlbiA6CistICBwcmlu dGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfVEVSTUlPU19IIDEiID4+Y29uZmRlZnMuaAorLQorLWZp CistYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVOTyIgImRsZmNuLmgiICJhY19j dl9oZWFkZXJfZGxmY25faCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNf Y3ZfaGVhZGVyX2RsZmNuX2giID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2Rl ZmluZSBIQVZFX0RMRkNOX0ggMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNr X2hlYWRlcl9jb21waWxlICIkTElORU5PIiAic3RkZGVmLmgiICJhY19jdl9oZWFkZXJfc3RkZGVm X2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zdGRk ZWZfaCIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1RE REVGX0ggMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21w aWxlICIkTElORU5PIiAic3RkaW50LmgiICJhY19jdl9oZWFkZXJfc3RkaW50X2giICIkYWNfaW5j bHVkZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zdGRpbnRfaCIgPSB4eWVz CistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1RESU5UX0ggMSIgPj5j b25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5P IiAibmV0ZGIuaCIgImFjX2N2X2hlYWRlcl9uZXRkYl9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQi CistaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbmV0ZGJfaCIgPSB4eWVzCistdGhlbiA6CistICBw cmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfTkVUREJfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1m aQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJwd2QuaCIgImFjX2N2 X2hlYWRlcl9wd2RfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3Zf aGVhZGVyX3B3ZF9oIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUg SEFWRV9QV0RfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVy X2NvbXBpbGUgIiRMSU5FTk8iICJncnAuaCIgImFjX2N2X2hlYWRlcl9ncnBfaCIgIiRhY19pbmNs dWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2dycF9oIiA9IHh5ZXMKKy10 aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9HUlBfSCAxIiA+PmNvbmZkZWZz LmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJzdHJp bmdzLmgiICJhY19jdl9oZWFkZXJfc3RyaW5nc19oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCist aWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3RyaW5nc19oIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHBy aW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMSIgPj5jb25mZGVmcy5oCistCist ZmkKKy1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAic3RkY2tkaW50Lmgi ICJhY19jdl9oZWFkZXJfc3RkY2tkaW50X2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKKy1pZiB0 ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zdGRja2RpbnRfaCIgPSB4eWVzCistdGhlbiA6CistICBwcmlu dGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1REQ0tESU5UX0ggMSIgPj5jb25mZGVmcy5oCistCist ZmkKKy1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAicmVnZXguaCIgImFj X2N2X2hlYWRlcl9yZWdleF9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRh Y19jdl9oZWFkZXJfcmVnZXhfaCIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIj ZGVmaW5lIEhBVkVfUkVHRVhfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hl Y2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJzeXNsb2cuaCIgImFjX2N2X2hlYWRlcl9zeXNs b2dfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N5 c2xvZ19oIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9T WVNMT0dfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2Nv bXBpbGUgIiRMSU5FTk8iICJ1bGltaXQuaCIgImFjX2N2X2hlYWRlcl91bGltaXRfaCIgIiRhY19p bmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3VsaW1pdF9oIiA9IHh5 ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9VTElNSVRfSCAxIiA+ PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRM SU5FTk8iICJzeXMvcHRlLmgiICJhY19jdl9oZWFkZXJfc3lzX3B0ZV9oIiAiJGFjX2luY2x1ZGVz X2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX3B0ZV9oIiA9IHh5ZXMKKy10 aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TWVNfUFRFX0ggMSIgPj5jb25m ZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAi c3lzL3N0cmVhbS5oIiAiYWNfY3ZfaGVhZGVyX3N5c19zdHJlYW1faCIgIiRhY19pbmNsdWRlc19k ZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N5c19zdHJlYW1faCIgPSB4eWVzCist dGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1lTX1NUUkVBTV9IIDEiID4+ Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVO TyIgInN5cy9zZWxlY3QuaCIgImFjX2N2X2hlYWRlcl9zeXNfc2VsZWN0X2giICIkYWNfaW5jbHVk ZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfc2VsZWN0X2giID0geHll cworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NZU19TRUxFQ1RfSCAx IiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRM SU5FTk8iICJzeXMvZmlsZS5oIiAiYWNfY3ZfaGVhZGVyX3N5c19maWxlX2giICIkYWNfaW5jbHVk ZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfZmlsZV9oIiA9IHh5ZXMK Ky10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TWVNfRklMRV9IIDEiID4+ Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVO TyIgInN5cy9pb2N0bC5oIiAiYWNfY3ZfaGVhZGVyX3N5c19pb2N0bF9oIiAiJGFjX2luY2x1ZGVz X2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX2lvY3RsX2giID0geHllcwor LXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NZU19JT0NUTF9IIDEiID4+ Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVO TyIgInN5cy9tbWFuLmgiICJhY19jdl9oZWFkZXJfc3lzX21tYW5faCIgIiRhY19pbmNsdWRlc19k ZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N5c19tbWFuX2giID0geHllcworLXRo ZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NZU19NTUFOX0ggMSIgPj5jb25m ZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAi c3lzL3BhcmFtLmgiICJhY19jdl9oZWFkZXJfc3lzX3BhcmFtX2giICIkYWNfaW5jbHVkZXNfZGVm YXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfcGFyYW1faCIgPSB4eWVzCistdGhl biA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1lTX1BBUkFNX0ggMSIgPj5jb25m ZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAi c3lzL3JhbmRvbS5oIiAiYWNfY3ZfaGVhZGVyX3N5c19yYW5kb21faCIgIiRhY19pbmNsdWRlc19k ZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N5c19yYW5kb21faCIgPSB4eWVzCist dGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1lTX1JBTkRPTV9IIDEiID4+ Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVO TyIgInN5cy9zb2NrZXQuaCIgImFjX2N2X2hlYWRlcl9zeXNfc29ja2V0X2giICIkYWNfaW5jbHVk ZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfc29ja2V0X2giID0geHll cworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NZU19TT0NLRVRfSCAx IiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRM SU5FTk8iICJzeXMvc3RhdC5oIiAiYWNfY3ZfaGVhZGVyX3N5c19zdGF0X2giICIkYWNfaW5jbHVk ZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfc3RhdF9oIiA9IHh5ZXMK Ky10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TWVNfU1RBVF9IIDEiID4+ Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVO TyIgInN5cy90aW1lLmgiICJhY19jdl9oZWFkZXJfc3lzX3RpbWVfaCIgIiRhY19pbmNsdWRlc19k ZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N5c190aW1lX2giID0geHllcworLXRo ZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NZU19USU1FX0ggMSIgPj5jb25m ZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAi c3lzL3RpbWVzLmgiICJhY19jdl9oZWFkZXJfc3lzX3RpbWVzX2giICIkYWNfaW5jbHVkZXNfZGVm YXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfdGltZXNfaCIgPSB4eWVzCistdGhl biA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1lTX1RJTUVTX0ggMSIgPj5jb25m ZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAi c3lzL3R5cGVzLmgiICJhY19jdl9oZWFkZXJfc3lzX3R5cGVzX2giICIkYWNfaW5jbHVkZXNfZGVm YXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfdHlwZXNfaCIgPSB4eWVzCistdGhl biA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMSIgPj5jb25m ZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAi c3lzL3dhaXQuaCIgImFjX2N2X2hlYWRlcl9zeXNfd2FpdF9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1 bHQiCistaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX3dhaXRfaCIgPSB4eWVzCistdGhlbiA6 CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1lTX1dBSVRfSCAxIiA+PmNvbmZkZWZz LmgKKy0KKy1maQorLQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJu ZXRpbmV0L2luLmgiICJhY19jdl9oZWFkZXJfbmV0aW5ldF9pbl9oIiAiJGFjX2luY2x1ZGVzX2Rl ZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbmV0aW5ldF9pbl9oIiA9IHh5ZXMKKy10 aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9ORVRJTkVUX0lOX0ggMSIgPj5j b25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5P IiAiYXJwYS9pbmV0LmgiICJhY19jdl9oZWFkZXJfYXJwYV9pbmV0X2giICIkYWNfaW5jbHVkZXNf ZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9hcnBhX2luZXRfaCIgPSB4eWVzCist dGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfQVJQQV9JTkVUX0ggMSIgPj5j b25mZGVmcy5oCistCistZmkKKy0KKy0KKy1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIk TElORU5PIiAic3lzL3B0ZW0uaCIgImFjX2N2X2hlYWRlcl9zeXNfcHRlbV9oIiAiCistI2lmIEhB VkVfU1lTX1NUUkVBTV9ICistIyAgaW5jbHVkZSA8c3lzL3N0cmVhbS5oPgorLSNlbmRpZgorLQor LSIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfcHRlbV9oIiA9IHh5ZXMKKy10aGVuIDoK Ky0KKy1maQorLQorLQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJz eXMvcmVzb3VyY2UuaCIgImFjX2N2X2hlYWRlcl9zeXNfcmVzb3VyY2VfaCIgIgorLSNpZiBIQVZF X1NZU19USU1FX0gKKy0jICBpbmNsdWRlIDxzeXMvdGltZS5oPgorLSNlbmRpZgorLQorLSIKKy1p ZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfcmVzb3VyY2VfaCIgPSB4eWVzCistdGhlbiA6Cist ICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1lTX1JFU09VUkNFX0ggMSIgPj5jb25mZGVm cy5oCistCistZmkKKy0KKy0KKy0jIFRoZSBVbHRyaXggNC4yIG1pcHMgYnVpbHRpbiBhbGxvY2Eg ZGVjbGFyZWQgYnkgYWxsb2NhLmggb25seSB3b3JrcworLSMgZm9yIGNvbnN0YW50IGFyZ3VtZW50 cy4gIFVzZWxlc3MhCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGNoZWNraW5nIGZvciB3b3JraW5nIGFsbG9jYS5oIiA+JjUKKy1wcmludGYgJXMgImNoZWNr aW5nIGZvciB3b3JraW5nIGFsbG9jYS5oLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X3dv cmtpbmdfYWxsb2NhX2greX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYK Ky1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29u ZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0jaW5jbHVkZSA8YWxsb2Nh Lmg+CistaW50CistbWFpbiAodm9pZCkKKy17CistY2hhciAqcCA9IChjaGFyICopIGFsbG9jYSAo MiAqIHNpemVvZiAoaW50KSk7CistCQkJICBpZiAocCkgcmV0dXJuIDA7CistICA7CistICByZXR1 cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyIKKy10aGVu IDoKKy0gIGFjX2N2X3dvcmtpbmdfYWxsb2NhX2g9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0g IGUpIGFjX2N2X3dvcmtpbmdfYWxsb2NhX2g9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3Jl IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gXAorLSAgICBj b25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLXsgcHJp bnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl93 b3JraW5nX2FsbG9jYV9oIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfY3Zfd29ya2luZ19hbGxv Y2FfaCIgPiY2OyB9CistaWYgdGVzdCAkYWNfY3Zfd29ya2luZ19hbGxvY2FfaCA9IHllczsgdGhl bgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9BTExPQ0FfSCAxIiA+PmNvbmZkZWZz LmgKKy0KKy1maQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyBmb3IgYWxsb2NhIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBh bGxvY2EuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfZnVuY19hbGxvY2Ffd29ya3MreX0K Ky10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAj KAorLSAgZSkgYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3M9JGFjX2N2X3dvcmtpbmdfYWxsb2NhX2gK Ky1pZiB0ZXN0ICIkYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3MiICE9IHllcworLXRoZW4gOgorLSAg Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHN0ZGRlZi5oPgor LSNpZm5kZWYgYWxsb2NhCistIyBpZmRlZiBfX0dOVUNfXworLSMgIGRlZmluZSBhbGxvY2EgX19i dWlsdGluX2FsbG9jYQorLSMgZWxpZiBkZWZpbmVkIF9NU0NfVkVSCistIyAgaW5jbHVkZSA8bWFs bG9jLmg+CistIyAgZGVmaW5lIGFsbG9jYSBfYWxsb2NhCistIyBlbHNlCistIyAgaWZkZWYgIF9f Y3BsdXNwbHVzCistZXh0ZXJuICJDIgorLSMgIGVuZGlmCistdm9pZCAqYWxsb2NhIChzaXplX3Qp OworLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1jaGFyICpw ID0gKGNoYXIgKikgYWxsb2NhICgxKTsKKy0JCQkJICAgIGlmIChwKSByZXR1cm4gMDsKKy0gIDsK Ky0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5P IgorLXRoZW4gOgorLSAgYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3M9eWVzCistZmkKKy1ybSAtZiBj b3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gXAorLSAg ICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWZpIDs7CistZXNhYworLWZp CisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JGFjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfY3ZfZnVu Y19hbGxvY2Ffd29ya3MiID4mNjsgfQorLQorLWlmIHRlc3QgJGFjX2N2X2Z1bmNfYWxsb2NhX3dv cmtzID0geWVzOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0FMTE9DQSAx IiA+PmNvbmZkZWZzLmgKKy0KKy1lbHNlCistICAjIFRoZSBTVlIzIGxpYlBXIGFuZCBTVlI0IGxp YnVjYiBib3RoIGNvbnRhaW4gaW5jb21wYXRpYmxlIGZ1bmN0aW9ucworLSMgdGhhdCBjYXVzZSB0 cm91YmxlLiAgU29tZSB2ZXJzaW9ucyBkbyBub3QgZXZlbiBjb250YWluIGFsbG9jYSBvcgorLSMg Y29udGFpbiBhIGJ1Z2d5IHZlcnNpb24uICBJZiB5b3Ugc3RpbGwgd2FudCB0byB1c2UgdGhlaXIg YWxsb2NhLAorLSMgdXNlIGFyIHRvIGV4dHJhY3QgYWxsb2NhLm8gZnJvbSB0aGVtIGluc3RlYWQg b2YgY29tcGlsaW5nIGFsbG9jYS5jLgorLQorLUFMTE9DQT1cJHtMSUJPQkpESVJ9YWxsb2NhLiRh Y19vYmpleHQKKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIENfQUxMT0NBIDEiID4+Y29uZmRl ZnMuaAorLQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyBzdGFjayBkaXJlY3Rpb24gZm9yIEMgYWxsb2NhIiA+JjUKKy1wcmludGYgJXMg ImNoZWNraW5nIHN0YWNrIGRpcmVjdGlvbiBmb3IgQyBhbGxvY2EuLi4gIiA+JjY7IH0KKy1pZiB0 ZXN0ICR7YWNfY3ZfY19zdGFja19kaXJlY3Rpb24reX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAi KGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgaWYgdGVzdCAiJGNyb3Nz X2NvbXBpbGluZyIgPSB5ZXMKKy10aGVuIDoKKy0gIGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uPTAK Ky1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29u ZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0kYWNfaW5jbHVkZXNfZGVm YXVsdAorLWludAorLWZpbmRfc3RhY2tfZGlyZWN0aW9uIChpbnQgKmFkZHIsIGludCBkZXB0aCkK Ky17CistICBpbnQgZGlyLCBkdW1teSA9IDA7CistICBpZiAoISBhZGRyKQorLSAgICBhZGRyID0g JmR1bW15OworLSAgKmFkZHIgPSBhZGRyIDwgJmR1bW15ID8gMSA6IGFkZHIgPT0gJmR1bW15ID8g MCA6IC0xOworLSAgZGlyID0gZGVwdGggPyBmaW5kX3N0YWNrX2RpcmVjdGlvbiAoYWRkciwgZGVw dGggLSAxKSA6IDA7CistICByZXR1cm4gZGlyICsgZHVtbXk7CistfQorLQorLWludAorLW1haW4g KGludCBhcmdjLCBjaGFyICoqYXJndikKKy17CistICByZXR1cm4gZmluZF9zdGFja19kaXJlY3Rp b24gKDAsIGFyZ2MgKyAhYXJndiArIDIwKSA8IDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2Nf dHJ5X3J1biAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uPTEK Ky1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY3ZfY19zdGFja19kaXJlY3Rpb249LTEgOzsK Ky1lc2FjCistZmkKKy1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQg YmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCistICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0 ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLSA7OworLWVzYWMKKy1m aQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 ICRhY19jdl9jX3N0YWNrX2RpcmVjdGlvbiIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X2Nf c3RhY2tfZGlyZWN0aW9uIiA+JjY7IH0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIFNUQUNLX0RJ UkVDVElPTiAkYWNfY3ZfY19zdGFja19kaXJlY3Rpb24iID4+Y29uZmRlZnMuaAorLQorLQorLWZp CistCistYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAidWlkX3QiICJhY19jdl90eXBlX3Vp ZF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl90eXBlX3VpZF90 IiA9IHh5ZXMKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkKKy1wcmludGYg IiVzXG4iICIjZGVmaW5lIHVpZF90IGludCIgPj5jb25mZGVmcy5oCistIDs7CistZXNhYworLWZp CistCistYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAiZ2lkX3QiICJhY19jdl90eXBlX2dp ZF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl90eXBlX2dpZF90 IiA9IHh5ZXMKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkKKy1wcmludGYg IiVzXG4iICIjZGVmaW5lIGdpZF90IGludCIgPj5jb25mZGVmcy5oCistIDs7CistZXNhYworLWZp CistCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciB3b3JraW5nIGNob3duIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciB3b3Jr aW5nIGNob3duLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X2Z1bmNfY2hvd25fd29ya3Mr eX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBp biAjKAorLSAgZSkgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXMKKy10aGVuIDoKKy0g IGNhc2UgIiRob3N0X29zIiBpbiAjICgoCistCQkJICAjIEd1ZXNzIHllcyBvbiBnbGliYyBzeXN0 ZW1zLgorLQkJICAqLWdudSopIGFjX2N2X2Z1bmNfY2hvd25fd29ya3M9eWVzIDs7CistCQkJICAj IElmIHdlIGRvbid0IGtub3csIGFzc3VtZSB0aGUgd29yc3QuCistCQkgICopICAgICAgYWNfY3Zf ZnVuY19jaG93bl93b3Jrcz1ubyA7OworLQkJZXNhYworLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNv bmZkZWZzLmguICAqLworLSRhY19pbmNsdWRlc19kZWZhdWx0CistI2luY2x1ZGUgPGZjbnRsLmg+ CistCistaW50CistbWFpbiAodm9pZCkKKy17CistICBjaGFyICpmID0gImNvbmZ0ZXN0LmNob3du IjsKKy0gIHN0cnVjdCBzdGF0IGJlZm9yZSwgYWZ0ZXI7CistCistICBpZiAoY3JlYXQgKGYsIDA2 MDApIDwgMCkKKy0gICAgcmV0dXJuIDE7CistICBpZiAoc3RhdCAoZiwgJmJlZm9yZSkgPCAwKQor LSAgICByZXR1cm4gMTsKKy0gIGlmIChjaG93biAoZiwgKHVpZF90KSAtMSwgKGdpZF90KSAtMSkg PT0gLTEpCistICAgIHJldHVybiAxOworLSAgaWYgKHN0YXQgKGYsICZhZnRlcikgPCAwKQorLSAg ICByZXR1cm4gMTsKKy0gIHJldHVybiAhIChiZWZvcmUuc3RfdWlkID09IGFmdGVyLnN0X3VpZCAm JiBiZWZvcmUuc3RfZ2lkID09IGFmdGVyLnN0X2dpZCk7CistCistICA7CistICByZXR1cm4gMDsK Ky19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIgorLXRoZW4gOgorLSAg YWNfY3ZfZnVuY19jaG93bl93b3Jrcz15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNf Y3ZfZnVuY19jaG93bl93b3Jrcz1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgKi5jb3Jl IGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKy0g IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7Cist ZXNhYworLWZpCistCistcm0gLWYgY29uZnRlc3QuY2hvd24KKy0gOzsKKy1lc2FjCistZmkKKy17 IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNf Y3ZfZnVuY19jaG93bl93b3JrcyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X2Z1bmNfY2hv d25fd29ya3MiID4mNjsgfQorLWlmIHRlc3QgJGFjX2N2X2Z1bmNfY2hvd25fd29ya3MgPSB5ZXM7 IHRoZW4KKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfQ0hPV04gMSIgPj5jb25mZGVm cy5oCistCistZmkKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgd2hldGhlciBnZXRwZ3JwIHJlcXVpcmVzIHplcm8gYXJndW1lbnRzIiA+ JjUKKy1wcmludGYgJXMgImNoZWNraW5nIHdoZXRoZXIgZ2V0cGdycCByZXF1aXJlcyB6ZXJvIGFy Z3VtZW50cy4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9mdW5jX2dldHBncnBfdm9pZCt5 fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGlu ICMoCistICBlKSAjIFVzZSBpdCB3aXRoIGEgc2luZ2xlIGFyZy4KKy1jYXQgY29uZmRlZnMuaCAt IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLSRh Y19pbmNsdWRlc19kZWZhdWx0CistaW50CistbWFpbiAodm9pZCkKKy17CistZ2V0cGdycCAoMCk7 CistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGls ZSAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGFjX2N2X2Z1bmNfZ2V0cGdycF92b2lkPW5vCistZWxz ZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2N2X2Z1bmNfZ2V0cGdycF92b2lkPXllcyA7OworLWVz YWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u ZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CistIDs7CistZXNhYworLWZpCisteyBwcmludGYg IiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNf Z2V0cGdycF92b2lkIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfY3ZfZnVuY19nZXRwZ3JwX3Zv aWQiID4mNjsgfQorLWlmIHRlc3QgJGFjX2N2X2Z1bmNfZ2V0cGdycF92b2lkID0geWVzOyB0aGVu CistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBHRVRQR1JQX1ZPSUQgMSIgPj5jb25mZGVmcy5o CistCistZmkKKy0KKy0KKy0KKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfdnByaW50ZiIgPSB4bm8K Ky10aGVuIDoKKy0gIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIl9kb3BybnQiICJhY19j dl9mdW5jX19kb3BybnQiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX19kb3BybnQiID0geHllcwor LXRoZW4gOgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9ET1BSTlQgMSIgPj5jb25m ZGVmcy5oCistCistZmkKKy0KKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29ya2luZyBzdHJjb2xsIiA+JjUKKy1wcmludGYg JXMgImNoZWNraW5nIGZvciB3b3JraW5nIHN0cmNvbGwuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7 YWNfY3ZfZnVuY19zdHJjb2xsX3dvcmtzK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNo ZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgIiRjcm9zc19jb21w aWxpbmciID0geWVzCistdGhlbiA6CistICBjYXNlICIkaG9zdF9vcyIgaW4gIyAoKAorLQkJCSAg IyBHdWVzcyB5ZXMgb24gZ2xpYmMgc3lzdGVtcy4KKy0JCSAgKi1nbnUqKSBhY19jdl9mdW5jX3N0 cmNvbGxfd29ya3M9eWVzIDs7CistCQkJICAjIElmIHdlIGRvbid0IGtub3csIGFzc3VtZSB0aGUg d29yc3QuCistCQkgICopICAgICAgYWNfY3ZfZnVuY19zdHJjb2xsX3dvcmtzPW5vIDs7CistCQll c2FjCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg PmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistJGFjX2luY2x1ZGVz X2RlZmF1bHQKKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1yZXR1cm4gKHN0cmNvbGwgKCJhYmMi LCAiZGVmIikgPj0gMCB8fAorLQkgc3RyY29sbCAoIkFCQyIsICJERUYiKSA+PSAwIHx8CistCSBz dHJjb2xsICgiMTIzIiwgIjQ1NiIpID49IDApCistICA7CistICByZXR1cm4gMDsKKy19CistX0FD RU9GCistaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIgorLXRoZW4gOgorLSAgYWNfY3ZfZnVu Y19zdHJjb2xsX3dvcmtzPXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl9mdW5j X3N0cmNvbGxfd29ya3M9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlICouY29yZSBjb3Jl LmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCistICBjb25m dGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMK Ky1maQorLSA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9mdW5jX3N0cmNvbGxfd29ya3MiID4mNQorLXBy aW50ZiAiJXNcbiIgIiRhY19jdl9mdW5jX3N0cmNvbGxfd29ya3MiID4mNjsgfQorLWlmIHRlc3Qg JGFjX2N2X2Z1bmNfc3RyY29sbF93b3JrcyA9IHllczsgdGhlbgorLQorLXByaW50ZiAiJXNcbiIg IiNkZWZpbmUgSEFWRV9TVFJDT0xMIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCistCistCist aWYgdGVzdCAiJGFjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzIiA9ICJubyIgJiYgdGVzdCAiJG9wdF9i YXNoX21hbGxvYyIgPSAibm8iOyB0aGVuCistCU1BTExPQ19UQVJHRVQ9YWxsb2NhCistCU1BTExP Q19TUkM9YWxsb2NhLmMKKy0KKy0JTUFMTE9DX0xJQj0nLWxtYWxsb2MnCistCU1BTExPQ19MSUJS QVJZPSckKEFMTE9DX0xJQkRJUikvbGlibWFsbG9jLmEnCistCU1BTExPQ19MREZMQUdTPSctTCQo QUxMT0NfTElCRElSKScKKy0JTUFMTE9DX0RFUD0nJChNQUxMT0NfTElCUkFSWSknCistZmkKKy0K Ky1pZiB0ZXN0ICIkYWNfY3ZfZnVuY192cHJpbnRmIiA9IG5vOyB0aGVuCistICAgIHsgcHJpbnRm ICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGVjbGFy YXRpb24gb2YgdnByaW50ZiBpbiBzdGRpby5oIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZv ciBkZWNsYXJhdGlvbiBvZiB2cHJpbnRmIGluIHN0ZGlvLmguLi4gIiA+JjY7IH0KKy0gICAgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVm cy5oLiAgKi8KKy0jaW5jbHVkZSA8c3RkaW8uaD4KKy0KKy1fQUNFT0YKKy1pZiAoZXZhbCAiJGFj X2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVBfVFJBRElUSU9OQUwgIltp bnRbIAldKnZwcmludGZbXmEtekEtWjAtOV1dIiA+L2Rldi9udWxsIDI+JjEKKy10aGVuIDoKKy0g IGFjX2N2X2Z1bmNfdnByaW50Zj15ZXMKKy1maQorLXJtIC1yZiBjb25mdGVzdCoKKy0KKy0gICAg eyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFj X2N2X2Z1bmNfdnByaW50ZiIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X2Z1bmNfdnByaW50 ZiIgPiY2OyB9CistICAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfdnByaW50ZiA9IHllczsgdGhlbgor LQlwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfVlBSSU5URiAxIiA+PmNvbmZkZWZzLmgKKy0K Ky0gICAgZmkKKy1maQorLQorLWlmIHRlc3QgIiRhY19jdl9mdW5jX3ZwcmludGYiID0gbm8gJiYg dGVzdCAiJGFjX2N2X2Z1bmNfX2RvcHJudCIgPSAieWVzIjsgdGhlbgorLSAgY2FzZSAiICRMSUJP QkpTICIgaW4KKy0gICoiIHZwcmludC4kYWNfb2JqZXh0ICIqICkgOzsKKy0gICopIExJQk9CSlM9 IiRMSUJPQkpTIHZwcmludC4kYWNfb2JqZXh0IgorLSA7OworLWVzYWMKKy0KKy1maQorLQorLWFj X2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIl9fc2V0b3N0eXBlIiAiYWNfY3ZfZnVuY19fX3Nl dG9zdHlwZSIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfX19zZXRvc3R5cGUiID0geHllcworLXRo ZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NFVE9TVFlQRSAxIiA+PmNvbmZk ZWZzLmgKKy0KKy1maQorLQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIndhaXQzIiAi YWNfY3ZfZnVuY193YWl0MyIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfd2FpdDMiID0geHllcwor LXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1dBSVQzIDEiID4+Y29uZmRl ZnMuaAorLQorLWZpCistCistCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAibWtmaWZv IiAiYWNfY3ZfZnVuY19ta2ZpZm8iCistaWYgdGVzdCAieCRhY19jdl9mdW5jX21rZmlmbyIgPSB4 eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfTUtGSUZPIDEiID4+ Y29uZmRlZnMuaAorLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBwcmludGYgIiVzXG4iICIj ZGVmaW5lIE1LRklGT19NSVNTSU5HIDEiID4+Y29uZmRlZnMuaAorLSA7OworLWVzYWMKKy1maQor LQorLQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImR1cDIiICJhY19jdl9mdW5jX2R1 cDIiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX2R1cDIiID0geHllcworLXRoZW4gOgorLSAgcHJp bnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0RVUDIgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1h Y19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJlYWNjZXNzIiAiYWNfY3ZfZnVuY19lYWNjZXNz IgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19lYWNjZXNzIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHBy aW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9FQUNDRVNTIDEiID4+Y29uZmRlZnMuaAorLQorLWZp CistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiZmNudGwiICJhY19jdl9mdW5jX2ZjbnRs IgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19mY250bCIgPSB4eWVzCistdGhlbiA6CistICBwcmlu dGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfRkNOVEwgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1h Y19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJnZXRkdGFibGVzaXplIiAiYWNfY3ZfZnVuY19n ZXRkdGFibGVzaXplIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19nZXRkdGFibGVzaXplIiA9IHh5 ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9HRVREVEFCTEVTSVpF IDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAi Z2V0ZW50cm9weSIgImFjX2N2X2Z1bmNfZ2V0ZW50cm9weSIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1 bmNfZ2V0ZW50cm9weSIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5l IEhBVkVfR0VURU5UUk9QWSAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tf ZnVuYyAiJExJTkVOTyIgImdldGdyb3VwcyIgImFjX2N2X2Z1bmNfZ2V0Z3JvdXBzIgorLWlmIHRl c3QgIngkYWNfY3ZfZnVuY19nZXRncm91cHMiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIl c1xuIiAiI2RlZmluZSBIQVZFX0dFVEdST1VQUyAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFj X2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImdldGhvc3RuYW1lIiAiYWNfY3ZfZnVuY19nZXRo b3N0bmFtZSIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZ2V0aG9zdG5hbWUiID0geHllcworLXRo ZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0dFVEhPU1ROQU1FIDEiID4+Y29u ZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiZ2V0cGFnZXNp emUiICJhY19jdl9mdW5jX2dldHBhZ2VzaXplIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19nZXRw YWdlc2l6ZSIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVf R0VUUEFHRVNJWkUgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2Z1bmMg IiRMSU5FTk8iICJnZXRwZWVybmFtZSIgImFjX2N2X2Z1bmNfZ2V0cGVlcm5hbWUiCistaWYgdGVz dCAieCRhY19jdl9mdW5jX2dldHBlZXJuYW1lIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAi JXNcbiIgIiNkZWZpbmUgSEFWRV9HRVRQRUVSTkFNRSAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQor LWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImdldHJhbmRvbSIgImFjX2N2X2Z1bmNfZ2V0 cmFuZG9tIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19nZXRyYW5kb20iID0geHllcworLXRoZW4g OgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0dFVFJBTkRPTSAxIiA+PmNvbmZkZWZz LmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImdldHJsaW1pdCIgImFj X2N2X2Z1bmNfZ2V0cmxpbWl0IgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19nZXRybGltaXQiID0g eHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0dFVFJMSU1JVCAx IiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImdl dHJ1c2FnZSIgImFjX2N2X2Z1bmNfZ2V0cnVzYWdlIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19n ZXRydXNhZ2UiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZF X0dFVFJVU0FHRSAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAi JExJTkVOTyIgImdldHRpbWVvZmRheSIgImFjX2N2X2Z1bmNfZ2V0dGltZW9mZGF5IgorLWlmIHRl c3QgIngkYWNfY3ZfZnVuY19nZXR0aW1lb2ZkYXkiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRm ICIlc1xuIiAiI2RlZmluZSBIQVZFX0dFVFRJTUVPRkRBWSAxIiA+PmNvbmZkZWZzLmgKKy0KKy1m aQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImtpbGwiICJhY19jdl9mdW5jX2tpbGwi CistaWYgdGVzdCAieCRhY19jdl9mdW5jX2tpbGwiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRm ICIlc1xuIiAiI2RlZmluZSBIQVZFX0tJTEwgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19m bl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJraWxscGciICJhY19jdl9mdW5jX2tpbGxwZyIKKy1p ZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfa2lsbHBnIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAi JXNcbiIgIiNkZWZpbmUgSEFWRV9LSUxMUEcgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19m bl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJsc3RhdCIgImFjX2N2X2Z1bmNfbHN0YXQiCistaWYg dGVzdCAieCRhY19jdl9mdW5jX2xzdGF0IiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNc biIgIiNkZWZpbmUgSEFWRV9MU1RBVCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2Nf Y2hlY2tfZnVuYyAiJExJTkVOTyIgIm5hbm9zbGVlcCIgImFjX2N2X2Z1bmNfbmFub3NsZWVwIgor LWlmIHRlc3QgIngkYWNfY3ZfZnVuY19uYW5vc2xlZXAiID0geHllcworLXRoZW4gOgorLSAgcHJp bnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX05BTk9TTEVFUCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1m aQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInBzZWxlY3QiICJhY19jdl9mdW5jX3Bz ZWxlY3QiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX3BzZWxlY3QiID0geHllcworLXRoZW4gOgor LSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1BTRUxFQ1QgMSIgPj5jb25mZGVmcy5oCist CistZmkKKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJyZWFkbGluayIgImFjX2N2X2Z1 bmNfcmVhZGxpbmsiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX3JlYWRsaW5rIiA9IHh5ZXMKKy10 aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9SRUFETElOSyAxIiA+PmNvbmZk ZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInNlbGVjdCIgImFj X2N2X2Z1bmNfc2VsZWN0IgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19zZWxlY3QiID0geHllcwor LXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NFTEVDVCAxIiA+PmNvbmZk ZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInNldGR0YWJsZXNp emUiICJhY19jdl9mdW5jX3NldGR0YWJsZXNpemUiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX3Nl dGR0YWJsZXNpemUiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBI QVZFX1NFVERUQUJMRVNJWkUgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNr X2Z1bmMgIiRMSU5FTk8iICJzZXRpdGltZXIiICJhY19jdl9mdW5jX3NldGl0aW1lciIKKy1pZiB0 ZXN0ICJ4JGFjX2N2X2Z1bmNfc2V0aXRpbWVyIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAi JXNcbiIgIiNkZWZpbmUgSEFWRV9TRVRJVElNRVIgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1h Y19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJzdGF0ZnMiICJhY19jdl9mdW5jX3N0YXRmcyIK Ky1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfc3RhdGZzIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50 ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TVEFURlMgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1h Y19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJ0Y2dldHBncnAiICJhY19jdl9mdW5jX3RjZ2V0 cGdycCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfdGNnZXRwZ3JwIiA9IHh5ZXMKKy10aGVuIDoK Ky0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9UQ0dFVFBHUlAgMSIgPj5jb25mZGVmcy5o CistCistZmkKKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJ1bmFtZSIgImFjX2N2X2Z1 bmNfdW5hbWUiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX3VuYW1lIiA9IHh5ZXMKKy10aGVuIDoK Ky0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9VTkFNRSAxIiA+PmNvbmZkZWZzLmgKKy0K Ky1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInVsaW1pdCIgImFjX2N2X2Z1bmNf dWxpbWl0IgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY191bGltaXQiID0geHllcworLXRoZW4gOgor LSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1VMSU1JVCAxIiA+PmNvbmZkZWZzLmgKKy0K Ky1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIndhaXRwaWQiICJhY19jdl9mdW5j X3dhaXRwaWQiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX3dhaXRwaWQiID0geHllcworLXRoZW4g OgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1dBSVRQSUQgMSIgPj5jb25mZGVmcy5o CistCistZmkKKy0KKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJyZW5hbWUiICJhY19j dl9mdW5jX3JlbmFtZSIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfcmVuYW1lIiA9IHh5ZXMKKy10 aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9SRU5BTUUgMSIgPj5jb25mZGVm cy5oCistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhc2UgIiAkTElCT0JKUyAiIGluCist ICAqIiByZW5hbWUuJGFjX29iamV4dCAiKiApIDs7CistICAqKSBMSUJPQkpTPSIkTElCT0JKUyBy ZW5hbWUuJGFjX29iamV4dCIKKy0gOzsKKy1lc2FjCistIDs7CistZXNhYworLWZpCistCistCist YWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiYmNvcHkiICJhY19jdl9mdW5jX2Jjb3B5Igor LWlmIHRlc3QgIngkYWNfY3ZfZnVuY19iY29weSIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYg IiVzXG4iICIjZGVmaW5lIEhBVkVfQkNPUFkgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19m bl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJiemVybyIgImFjX2N2X2Z1bmNfYnplcm8iCistaWYg dGVzdCAieCRhY19jdl9mdW5jX2J6ZXJvIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNc biIgIiNkZWZpbmUgSEFWRV9CWkVSTyAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2Nf Y2hlY2tfZnVuYyAiJExJTkVOTyIgImNsb2NrX2dldHRpbWUiICJhY19jdl9mdW5jX2Nsb2NrX2dl dHRpbWUiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX2Nsb2NrX2dldHRpbWUiID0geHllcworLXRo ZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0NMT0NLX0dFVFRJTUUgMSIgPj5j b25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJjb25mc3Ry IiAiYWNfY3ZfZnVuY19jb25mc3RyIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19jb25mc3RyIiA9 IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9DT05GU1RSIDEi ID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiZmFj Y2Vzc2F0IiAiYWNfY3ZfZnVuY19mYWNjZXNzYXQiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX2Zh Y2Nlc3NhdCIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVf RkFDQ0VTU0FUIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5jICIk TElORU5PIiAiZm5tYXRjaCIgImFjX2N2X2Z1bmNfZm5tYXRjaCIKKy1pZiB0ZXN0ICJ4JGFjX2N2 X2Z1bmNfZm5tYXRjaCIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5l IEhBVkVfRk5NQVRDSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVu YyAiJExJTkVOTyIgImdldGFkZHJpbmZvIiAiYWNfY3ZfZnVuY19nZXRhZGRyaW5mbyIKKy1pZiB0 ZXN0ICJ4JGFjX2N2X2Z1bmNfZ2V0YWRkcmluZm8iID0geHllcworLXRoZW4gOgorLSAgcHJpbnRm ICIlc1xuIiAiI2RlZmluZSBIQVZFX0dFVEFERFJJTkZPIDEiID4+Y29uZmRlZnMuaAorLQorLWZp CistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiZ2V0aG9zdGJ5bmFtZSIgImFjX2N2X2Z1 bmNfZ2V0aG9zdGJ5bmFtZSIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZ2V0aG9zdGJ5bmFtZSIg PSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfR0VUSE9TVEJZ TkFNRSAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVO TyIgImdldHNlcnZieW5hbWUiICJhY19jdl9mdW5jX2dldHNlcnZieW5hbWUiCistaWYgdGVzdCAi eCRhY19jdl9mdW5jX2dldHNlcnZieW5hbWUiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIl c1xuIiAiI2RlZmluZSBIQVZFX0dFVFNFUlZCWU5BTUUgMSIgPj5jb25mZGVmcy5oCistCistZmkK Ky1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJnZXRzZXJ2ZW50IiAiYWNfY3ZfZnVuY19n ZXRzZXJ2ZW50IgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19nZXRzZXJ2ZW50IiA9IHh5ZXMKKy10 aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9HRVRTRVJWRU5UIDEiID4+Y29u ZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiaW5ldF9hdG9u IiAiYWNfY3ZfZnVuY19pbmV0X2F0b24iCistaWYgdGVzdCAieCRhY19jdl9mdW5jX2luZXRfYXRv biIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfSU5FVF9B VE9OIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5P IiAiaW1heGRpdiIgImFjX2N2X2Z1bmNfaW1heGRpdiIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNf aW1heGRpdiIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVf SU1BWERJViAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJ TkVOTyIgIm1lbW1vdmUiICJhY19jdl9mdW5jX21lbW1vdmUiCistaWYgdGVzdCAieCRhY19jdl9m dW5jX21lbW1vdmUiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBI QVZFX01FTU1PVkUgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2Z1bmMg IiRMSU5FTk8iICJwYXRoY29uZiIgImFjX2N2X2Z1bmNfcGF0aGNvbmYiCistaWYgdGVzdCAieCRh Y19jdl9mdW5jX3BhdGhjb25mIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNk ZWZpbmUgSEFWRV9QQVRIQ09ORiAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hl Y2tfZnVuYyAiJExJTkVOTyIgInB1dGVudiIgImFjX2N2X2Z1bmNfcHV0ZW52IgorLWlmIHRlc3Qg IngkYWNfY3ZfZnVuY19wdXRlbnYiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAi I2RlZmluZSBIQVZFX1BVVEVOViAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hl Y2tfZnVuYyAiJExJTkVOTyIgInJhaXNlIiAiYWNfY3ZfZnVuY19yYWlzZSIKKy1pZiB0ZXN0ICJ4 JGFjX2N2X2Z1bmNfcmFpc2UiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2Rl ZmluZSBIQVZFX1JBSVNFIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19m dW5jICIkTElORU5PIiAicmFuZG9tIiAiYWNfY3ZfZnVuY19yYW5kb20iCistaWYgdGVzdCAieCRh Y19jdl9mdW5jX3JhbmRvbSIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVm aW5lIEhBVkVfUkFORE9NIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19m dW5jICIkTElORU5PIiAicmVnY29tcCIgImFjX2N2X2Z1bmNfcmVnY29tcCIKKy1pZiB0ZXN0ICJ4 JGFjX2N2X2Z1bmNfcmVnY29tcCIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIj ZGVmaW5lIEhBVkVfUkVHQ09NUCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hl Y2tfZnVuYyAiJExJTkVOTyIgInJlZ2V4ZWMiICJhY19jdl9mdW5jX3JlZ2V4ZWMiCistaWYgdGVz dCAieCRhY19jdl9mdW5jX3JlZ2V4ZWMiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xu IiAiI2RlZmluZSBIQVZFX1JFR0VYRUMgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9j X2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJzZXRlbnYiICJhY19jdl9mdW5jX3NldGVudiIKKy1pZiB0 ZXN0ICJ4JGFjX2N2X2Z1bmNfc2V0ZW52IiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNc biIgIiNkZWZpbmUgSEFWRV9TRVRFTlYgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9j X2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJzZXRsaW5lYnVmIiAiYWNfY3ZfZnVuY19zZXRsaW5lYnVm IgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19zZXRsaW5lYnVmIiA9IHh5ZXMKKy10aGVuIDoKKy0g IHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TRVRMSU5FQlVGIDEiID4+Y29uZmRlZnMuaAor LQorLWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAic2V0bG9jYWxlIiAiYWNfY3Zf ZnVuY19zZXRsb2NhbGUiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX3NldGxvY2FsZSIgPSB4eWVz CistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU0VUTE9DQUxFIDEiID4+ Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAic2V0dmJ1 ZiIgImFjX2N2X2Z1bmNfc2V0dmJ1ZiIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfc2V0dmJ1ZiIg PSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU0VUVkJVRiAx IiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInNp Z2ludGVycnVwdCIgImFjX2N2X2Z1bmNfc2lnaW50ZXJydXB0IgorLWlmIHRlc3QgIngkYWNfY3Zf ZnVuY19zaWdpbnRlcnJ1cHQiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2Rl ZmluZSBIQVZFX1NJR0lOVEVSUlVQVCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2Nf Y2hlY2tfZnVuYyAiJExJTkVOTyIgInN0cmNociIgImFjX2N2X2Z1bmNfc3RyY2hyIgorLWlmIHRl c3QgIngkYWNfY3ZfZnVuY19zdHJjaHIiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xu IiAiI2RlZmluZSBIQVZFX1NUUkNIUiAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2Nf Y2hlY2tfZnVuYyAiJExJTkVOTyIgInN5c2NvbmYiICJhY19jdl9mdW5jX3N5c2NvbmYiCistaWYg dGVzdCAieCRhY19jdl9mdW5jX3N5c2NvbmYiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIl c1xuIiAiI2RlZmluZSBIQVZFX1NZU0NPTkYgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19m bl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJzeXNsb2ciICJhY19jdl9mdW5jX3N5c2xvZyIKKy1p ZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfc3lzbG9nIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAi JXNcbiIgIiNkZWZpbmUgSEFWRV9TWVNMT0cgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19m bl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJ0Y2dldGF0dHIiICJhY19jdl9mdW5jX3RjZ2V0YXR0 ciIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfdGNnZXRhdHRyIiA9IHh5ZXMKKy10aGVuIDoKKy0g IHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9UQ0dFVEFUVFIgMSIgPj5jb25mZGVmcy5oCist CistZmkKKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJ0Y2dldHdpbnNpemUiICJhY19j dl9mdW5jX3RjZ2V0d2luc2l6ZSIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfdGNnZXR3aW5zaXpl IiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9UQ0dFVFdJ TlNJWkUgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5F Tk8iICJ0Y3NldHdpbnNpemUiICJhY19jdl9mdW5jX3Rjc2V0d2luc2l6ZSIKKy1pZiB0ZXN0ICJ4 JGFjX2N2X2Z1bmNfdGNzZXR3aW5zaXplIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNc biIgIiNkZWZpbmUgSEFWRV9UQ1NFVFdJTlNJWkUgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1h Y19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJ0aW1lcyIgImFjX2N2X2Z1bmNfdGltZXMiCist aWYgdGVzdCAieCRhY19jdl9mdW5jX3RpbWVzIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAi JXNcbiIgIiNkZWZpbmUgSEFWRV9USU1FUyAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2Zu X2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInR0eW5hbWUiICJhY19jdl9mdW5jX3R0eW5hbWUiCist aWYgdGVzdCAieCRhY19jdl9mdW5jX3R0eW5hbWUiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRm ICIlc1xuIiAiI2RlZmluZSBIQVZFX1RUWU5BTUUgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1h Y19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJ0enNldCIgImFjX2N2X2Z1bmNfdHpzZXQiCist aWYgdGVzdCAieCRhY19jdl9mdW5jX3R6c2V0IiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAi JXNcbiIgIiNkZWZpbmUgSEFWRV9UWlNFVCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2Zu X2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInVuc2V0ZW52IiAiYWNfY3ZfZnVuY191bnNldGVudiIK Ky1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfdW5zZXRlbnYiID0geHllcworLXRoZW4gOgorLSAgcHJp bnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1VOU0VURU5WIDEiID4+Y29uZmRlZnMuaAorLQorLWZp CistCistCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAidmFzcHJpbnRmIiAiYWNfY3Zf ZnVuY192YXNwcmludGYiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX3Zhc3ByaW50ZiIgPSB4eWVz CistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfVkFTUFJJTlRGIDEiID4+ Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiYXNwcmlu dGYiICJhY19jdl9mdW5jX2FzcHJpbnRmIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19hc3ByaW50 ZiIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfQVNQUklO VEYgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5F Tk8iICJpc2FzY2lpIiAiYWNfY3ZfZnVuY19pc2FzY2lpIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVu Y19pc2FzY2lpIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFW RV9JU0FTQ0lJIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5jICIk TElORU5PIiAiaXNibGFuayIgImFjX2N2X2Z1bmNfaXNibGFuayIKKy1pZiB0ZXN0ICJ4JGFjX2N2 X2Z1bmNfaXNibGFuayIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5l IEhBVkVfSVNCTEFOSyAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVu YyAiJExJTkVOTyIgImlzZ3JhcGgiICJhY19jdl9mdW5jX2lzZ3JhcGgiCistaWYgdGVzdCAieCRh Y19jdl9mdW5jX2lzZ3JhcGgiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2Rl ZmluZSBIQVZFX0lTR1JBUEggMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNr X2Z1bmMgIiRMSU5FTk8iICJpc3ByaW50IiAiYWNfY3ZfZnVuY19pc3ByaW50IgorLWlmIHRlc3Qg IngkYWNfY3ZfZnVuY19pc3ByaW50IiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIg IiNkZWZpbmUgSEFWRV9JU1BSSU5UIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19j aGVja19mdW5jICIkTElORU5PIiAiaXNzcGFjZSIgImFjX2N2X2Z1bmNfaXNzcGFjZSIKKy1pZiB0 ZXN0ICJ4JGFjX2N2X2Z1bmNfaXNzcGFjZSIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVz XG4iICIjZGVmaW5lIEhBVkVfSVNTUEFDRSAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2Zu X2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImlzeGRpZ2l0IiAiYWNfY3ZfZnVuY19pc3hkaWdpdCIK Ky1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfaXN4ZGlnaXQiID0geHllcworLXRoZW4gOgorLSAgcHJp bnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0lTWERJR0lUIDEiID4+Y29uZmRlZnMuaAorLQorLWZp CistCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiZ2V0cHdlbnQiICJhY19jdl9mdW5j X2dldHB3ZW50IgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19nZXRwd2VudCIgPSB4eWVzCistdGhl biA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfR0VUUFdFTlQgMSIgPj5jb25mZGVm cy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJnZXRwd25hbSIgImFj X2N2X2Z1bmNfZ2V0cHduYW0iCistaWYgdGVzdCAieCRhY19jdl9mdW5jX2dldHB3bmFtIiA9IHh5 ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9HRVRQV05BTSAxIiA+ PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImdldHB3 dWlkIiAiYWNfY3ZfZnVuY19nZXRwd3VpZCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZ2V0cHd1 aWQiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0dFVFBX VUlEIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCistYWNfZm5fY19jaGVja19mdW5jICIkTElO RU5PIiAibWtzdGVtcCIgImFjX2N2X2Z1bmNfbWtzdGVtcCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1 bmNfbWtzdGVtcCIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhB VkVfTUtTVEVNUCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAi JExJTkVOTyIgIm1rZHRlbXAiICJhY19jdl9mdW5jX21rZHRlbXAiCistaWYgdGVzdCAieCRhY19j dl9mdW5jX21rZHRlbXAiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmlu ZSBIQVZFX01LRFRFTVAgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy1hY19mbl9jX2NoZWNr X2Z1bmMgIiRMSU5FTk8iICJhcmM0cmFuZG9tIiAiYWNfY3ZfZnVuY19hcmM0cmFuZG9tIgorLWlm IHRlc3QgIngkYWNfY3ZfZnVuY19hcmM0cmFuZG9tIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50 ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9BUkM0UkFORE9NIDEiID4+Y29uZmRlZnMuaAorLQorLWZp CistCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAic3RybGNhdCIgImFjX2N2X2Z1bmNf c3RybGNhdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfc3RybGNhdCIgPSB4eWVzCistdGhlbiA6 CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1RSTENBVCAxIiA+PmNvbmZkZWZzLmgK Ky0KKy1maQorLQorLQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1lbWZkX2NyZWF0 ZSIgImFjX2N2X2Z1bmNfbWVtZmRfY3JlYXRlIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19tZW1m ZF9jcmVhdGUiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZF X01FTUZEX0NSRUFURSAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVu YyAiJExJTkVOTyIgInNobV9vcGVuIiAiYWNfY3ZfZnVuY19zaG1fb3BlbiIKKy1pZiB0ZXN0ICJ4 JGFjX2N2X2Z1bmNfc2htX29wZW4iID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAi I2RlZmluZSBIQVZFX1NITV9PUEVOIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19j aGVja19mdW5jICIkTElORU5PIiAic2htX21rc3RlbXAiICJhY19jdl9mdW5jX3NobV9ta3N0ZW1w IgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19zaG1fbWtzdGVtcCIgPSB4eWVzCistdGhlbiA6Cist ICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU0hNX01LU1RFTVAgMSIgPj5jb25mZGVmcy5o CistCistZmkKKy0KKy0KKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJnZXRjd2QiICJh Y19jdl9mdW5jX2dldGN3ZCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfZ2V0Y3dkIiA9IHh5ZXMK Ky10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9HRVRDV0QgMSIgPj5jb25m ZGVmcy5oCistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhc2UgIiAkTElCT0JKUyAiIGlu CistICAqIiBnZXRjd2QuJGFjX29iamV4dCAiKiApIDs7CistICAqKSBMSUJPQkpTPSIkTElCT0JK UyBnZXRjd2QuJGFjX29iamV4dCIKKy0gOzsKKy1lc2FjCistIDs7CistZXNhYworLWZpCistYWNf Zm5fY19jaGVja19mdW5jICIkTElORU5PIiAibWVtc2V0IiAiYWNfY3ZfZnVuY19tZW1zZXQiCist aWYgdGVzdCAieCRhY19jdl9mdW5jX21lbXNldCIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYg IiVzXG4iICIjZGVmaW5lIEhBVkVfTUVNU0VUIDEiID4+Y29uZmRlZnMuaAorLQorLWVsc2UgY2Fz ZSBlIGluICMoCistICBlKSBjYXNlICIgJExJQk9CSlMgIiBpbgorLSAgKiIgbWVtc2V0LiRhY19v YmpleHQgIiogKSA7OworLSAgKikgTElCT0JKUz0iJExJQk9CSlMgbWVtc2V0LiRhY19vYmpleHQi CistIDs7CistZXNhYworLSA7OworLWVzYWMKKy1maQorLQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAi JExJTkVOTyIgInN0cmNhc2VjbXAiICJhY19jdl9mdW5jX3N0cmNhc2VjbXAiCistaWYgdGVzdCAi eCRhY19jdl9mdW5jX3N0cmNhc2VjbXAiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xu IiAiI2RlZmluZSBIQVZFX1NUUkNBU0VDTVAgMSIgPj5jb25mZGVmcy5oCistCistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIGNhc2UgIiAkTElCT0JKUyAiIGluCistICAqIiBzdHJjYXNlY21wLiRh Y19vYmpleHQgIiogKSA7OworLSAgKikgTElCT0JKUz0iJExJQk9CSlMgc3RyY2FzZWNtcC4kYWNf b2JqZXh0IgorLSA7OworLWVzYWMKKy0gOzsKKy1lc2FjCistZmkKKy1hY19mbl9jX2NoZWNrX2Z1 bmMgIiRMSU5FTk8iICJzdHJjYXNlc3RyIiAiYWNfY3ZfZnVuY19zdHJjYXNlc3RyIgorLWlmIHRl c3QgIngkYWNfY3ZfZnVuY19zdHJjYXNlc3RyIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAi JXNcbiIgIiNkZWZpbmUgSEFWRV9TVFJDQVNFU1RSIDEiID4+Y29uZmRlZnMuaAorLQorLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSBjYXNlICIgJExJQk9CSlMgIiBpbgorLSAgKiIgc3RyY2FzZXN0 ci4kYWNfb2JqZXh0ICIqICkgOzsKKy0gICopIExJQk9CSlM9IiRMSUJPQkpTIHN0cmNhc2VzdHIu JGFjX29iamV4dCIKKy0gOzsKKy1lc2FjCistIDs7CistZXNhYworLWZpCistYWNfZm5fY19jaGVj a19mdW5jICIkTElORU5PIiAic3RyZXJyb3IiICJhY19jdl9mdW5jX3N0cmVycm9yIgorLWlmIHRl c3QgIngkYWNfY3ZfZnVuY19zdHJlcnJvciIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVz XG4iICIjZGVmaW5lIEhBVkVfU1RSRVJST1IgMSIgPj5jb25mZGVmcy5oCistCistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIGNhc2UgIiAkTElCT0JKUyAiIGluCistICAqIiBzdHJlcnJvci4kYWNf b2JqZXh0ICIqICkgOzsKKy0gICopIExJQk9CSlM9IiRMSUJPQkpTIHN0cmVycm9yLiRhY19vYmpl eHQiCistIDs7CistZXNhYworLSA7OworLWVzYWMKKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAi JExJTkVOTyIgInN0cmZ0aW1lIiAiYWNfY3ZfZnVuY19zdHJmdGltZSIKKy1pZiB0ZXN0ICJ4JGFj X2N2X2Z1bmNfc3RyZnRpbWUiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2Rl ZmluZSBIQVZFX1NUUkZUSU1FIDEiID4+Y29uZmRlZnMuaAorLQorLWVsc2UgY2FzZSBlIGluICMo CistICBlKSBjYXNlICIgJExJQk9CSlMgIiBpbgorLSAgKiIgc3RyZnRpbWUuJGFjX29iamV4dCAi KiApIDs7CistICAqKSBMSUJPQkpTPSIkTElCT0JKUyBzdHJmdGltZS4kYWNfb2JqZXh0IgorLSA7 OworLWVzYWMKKy0gOzsKKy1lc2FjCistZmkKKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8i ICJzdHJubGVuIiAiYWNfY3ZfZnVuY19zdHJubGVuIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19z dHJubGVuIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9T VFJOTEVOIDEiID4+Y29uZmRlZnMuaAorLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXNl ICIgJExJQk9CSlMgIiBpbgorLSAgKiIgc3Rybmxlbi4kYWNfb2JqZXh0ICIqICkgOzsKKy0gICop IExJQk9CSlM9IiRMSUJPQkpTIHN0cm5sZW4uJGFjX29iamV4dCIKKy0gOzsKKy1lc2FjCistIDs7 CistZXNhYworLWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAic3RycGJyayIgImFj X2N2X2Z1bmNfc3RycGJyayIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfc3RycGJyayIgPSB4eWVz CistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1RSUEJSSyAxIiA+PmNv bmZkZWZzLmgKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2FzZSAiICRMSUJPQkpTICIg aW4KKy0gICoiIHN0cnBicmsuJGFjX29iamV4dCAiKiApIDs7CistICAqKSBMSUJPQkpTPSIkTElC T0JKUyBzdHJwYnJrLiRhY19vYmpleHQiCistIDs7CistZXNhYworLSA7OworLWVzYWMKKy1maQor LWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInN0cnN0ciIgImFjX2N2X2Z1bmNfc3Ryc3Ry IgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19zdHJzdHIiID0geHllcworLXRoZW4gOgorLSAgcHJp bnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NUUlNUUiAxIiA+PmNvbmZkZWZzLmgKKy0KKy1lbHNl IGNhc2UgZSBpbiAjKAorLSAgZSkgY2FzZSAiICRMSUJPQkpTICIgaW4KKy0gICoiIHN0cnN0ci4k YWNfb2JqZXh0ICIqICkgOzsKKy0gICopIExJQk9CSlM9IiRMSUJPQkpTIHN0cnN0ci4kYWNfb2Jq ZXh0IgorLSA7OworLWVzYWMKKy0gOzsKKy1lc2FjCistZmkKKy0KKy1hY19mbl9jX2NoZWNrX2Z1 bmMgIiRMSU5FTk8iICJzdHJ0b2QiICJhY19jdl9mdW5jX3N0cnRvZCIKKy1pZiB0ZXN0ICJ4JGFj X2N2X2Z1bmNfc3RydG9kIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZp bmUgSEFWRV9TVFJUT0QgMSIgPj5jb25mZGVmcy5oCistCistZWxzZSBjYXNlIGUgaW4gIygKKy0g IGUpIGNhc2UgIiAkTElCT0JKUyAiIGluCistICAqIiBzdHJ0b2QuJGFjX29iamV4dCAiKiApIDs7 CistICAqKSBMSUJPQkpTPSIkTElCT0JKUyBzdHJ0b2QuJGFjX29iamV4dCIKKy0gOzsKKy1lc2Fj CistIDs7CistZXNhYworLWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAic3RydG9s IiAiYWNfY3ZfZnVuY19zdHJ0b2wiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX3N0cnRvbCIgPSB4 eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1RSVE9MIDEiID4+ Y29uZmRlZnMuaAorLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXNlICIgJExJQk9CSlMg IiBpbgorLSAgKiIgc3RydG9sLiRhY19vYmpleHQgIiogKSA7OworLSAgKikgTElCT0JKUz0iJExJ Qk9CSlMgc3RydG9sLiRhY19vYmpleHQiCistIDs7CistZXNhYworLSA7OworLWVzYWMKKy1maQor LWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInN0cnRvdWwiICJhY19jdl9mdW5jX3N0cnRv dWwiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX3N0cnRvdWwiID0geHllcworLXRoZW4gOgorLSAg cHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NUUlRPVUwgMSIgPj5jb25mZGVmcy5oCistCist ZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhc2UgIiAkTElCT0JKUyAiIGluCistICAqIiBzdHJ0 b3VsLiRhY19vYmpleHQgIiogKSA7OworLSAgKikgTElCT0JKUz0iJExJQk9CSlMgc3RydG91bC4k YWNfb2JqZXh0IgorLSA7OworLWVzYWMKKy0gOzsKKy1lc2FjCistZmkKKy1hY19mbl9jX2NoZWNr X2Z1bmMgIiRMSU5FTk8iICJzdHJ0b2xsIiAiYWNfY3ZfZnVuY19zdHJ0b2xsIgorLWlmIHRlc3Qg IngkYWNfY3ZfZnVuY19zdHJ0b2xsIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIg IiNkZWZpbmUgSEFWRV9TVFJUT0xMIDEiID4+Y29uZmRlZnMuaAorLQorLWVsc2UgY2FzZSBlIGlu ICMoCistICBlKSBjYXNlICIgJExJQk9CSlMgIiBpbgorLSAgKiIgc3RydG9sbC4kYWNfb2JqZXh0 ICIqICkgOzsKKy0gICopIExJQk9CSlM9IiRMSUJPQkpTIHN0cnRvbGwuJGFjX29iamV4dCIKKy0g OzsKKy1lc2FjCistIDs7CistZXNhYworLWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5P IiAic3RydG91bGwiICJhY19jdl9mdW5jX3N0cnRvdWxsIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVu Y19zdHJ0b3VsbCIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhB VkVfU1RSVE9VTEwgMSIgPj5jb25mZGVmcy5oCistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUp IGNhc2UgIiAkTElCT0JKUyAiIGluCistICAqIiBzdHJ0b3VsbC4kYWNfb2JqZXh0ICIqICkgOzsK Ky0gICopIExJQk9CSlM9IiRMSUJPQkpTIHN0cnRvdWxsLiRhY19vYmpleHQiCistIDs7CistZXNh YworLSA7OworLWVzYWMKKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInN0cnRv dW1heCIgImFjX2N2X2Z1bmNfc3RydG91bWF4IgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19zdHJ0 b3VtYXgiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NU UlRPVU1BWCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2Fz ZSAiICRMSUJPQkpTICIgaW4KKy0gICoiIHN0cnRvdW1heC4kYWNfb2JqZXh0ICIqICkgOzsKKy0g ICopIExJQk9CSlM9IiRMSUJPQkpTIHN0cnRvdW1heC4kYWNfb2JqZXh0IgorLSA7OworLWVzYWMK Ky0gOzsKKy1lc2FjCistZmkKKy0KKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJkcHJp bnRmIiAiYWNfY3ZfZnVuY19kcHJpbnRmIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19kcHJpbnRm IiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9EUFJJTlRG IDEiID4+Y29uZmRlZnMuaAorLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXNlICIgJExJ Qk9CSlMgIiBpbgorLSAgKiIgZHByaW50Zi4kYWNfb2JqZXh0ICIqICkgOzsKKy0gICopIExJQk9C SlM9IiRMSUJPQkpTIGRwcmludGYuJGFjX29iamV4dCIKKy0gOzsKKy1lc2FjCistIDs7CistZXNh YworLWZpCistCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAic3RyZHVwIiAiYWNfY3Zf ZnVuY19zdHJkdXAiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX3N0cmR1cCIgPSB4eWVzCistdGhl biA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1RSRFVQIDEiID4+Y29uZmRlZnMu aAorLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXNlICIgJExJQk9CSlMgIiBpbgorLSAg KiIgc3RyZHVwLiRhY19vYmpleHQgIiogKSA7OworLSAgKikgTElCT0JKUz0iJExJQk9CSlMgc3Ry ZHVwLiRhY19vYmpleHQiCistIDs7CistZXNhYworLSA7OworLWVzYWMKKy1maQorLQorLWFjX2Zu X2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInN0cmxjcHkiICJhY19jdl9mdW5jX3N0cmxjcHkiCist aWYgdGVzdCAieCRhY19jdl9mdW5jX3N0cmxjcHkiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRm ICIlc1xuIiAiI2RlZmluZSBIQVZFX1NUUkxDUFkgMSIgPj5jb25mZGVmcy5oCistCistZWxzZSBj YXNlIGUgaW4gIygKKy0gIGUpIGNhc2UgIiAkTElCT0JKUyAiIGluCistICAqIiBzdHJsY3B5LiRh Y19vYmpleHQgIiogKSA7OworLSAgKikgTElCT0JKUz0iJExJQk9CSlMgc3RybGNweS4kYWNfb2Jq ZXh0IgorLSA7OworLWVzYWMKKy0gOzsKKy1lc2FjCistZmkKKy0KKy1hY19mbl9jX2NoZWNrX2Z1 bmMgIiRMSU5FTk8iICJyZWFsbG9jYXJyYXkiICJhY19jdl9mdW5jX3JlYWxsb2NhcnJheSIKKy1p ZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfcmVhbGxvY2FycmF5IiA9IHh5ZXMKKy10aGVuIDoKKy0gIHBy aW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9SRUFMTE9DQVJSQVkgMSIgPj5jb25mZGVmcy5oCist CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhc2UgIiAkTElCT0JKUyAiIGluCistICAqIiBy ZWFsbG9jYXJyYXkuJGFjX29iamV4dCAiKiApIDs7CistICAqKSBMSUJPQkpTPSIkTElCT0JKUyBy ZWFsbG9jYXJyYXkuJGFjX29iamV4dCIKKy0gOzsKKy1lc2FjCistIDs7CistZXNhYworLWZpCist CistCistYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVOTyIgImxpYmF1ZGl0Lmgi ICJhY19jdl9oZWFkZXJfbGliYXVkaXRfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRl c3QgIngkYWNfY3ZfaGVhZGVyX2xpYmF1ZGl0X2giID0geHllcworLXRoZW4gOgorLSAgcHJpbnRm ICIlc1xuIiAiI2RlZmluZSBIQVZFX0xJQkFVRElUX0ggMSIgPj5jb25mZGVmcy5oCistCistZmkK Ky0KKy1hY19mbl9jaGVja19kZWNsICIkTElORU5PIiAiQVVESVRfVVNFUl9UVFkiICJhY19jdl9o YXZlX2RlY2xfQVVESVRfVVNFUl9UVFkiICIjaW5jbHVkZSA8bGludXgvYXVkaXQuaD4KKy0iICIk YWNfY191bmRlY2xhcmVkX2J1aWx0aW5fb3B0aW9ucyIgIkNGTEFHUyIKKy1pZiB0ZXN0ICJ4JGFj X2N2X2hhdmVfZGVjbF9BVURJVF9VU0VSX1RUWSIgPSB4eWVzCistdGhlbiA6CistICBhY19oYXZl X2RlY2w9MQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19oYXZlX2RlY2w9MCA7OworLWVz YWMKKy1maQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9ERUNMX0FVRElUX1VTRVJfVFRZ ICRhY19oYXZlX2RlY2wiID4+Y29uZmRlZnMuaAorLQorLQorLWFjX2ZuX2NoZWNrX2RlY2wgIiRM SU5FTk8iICJjb25mc3RyIiAiYWNfY3ZfaGF2ZV9kZWNsX2NvbmZzdHIiICIkYWNfaW5jbHVkZXNf ZGVmYXVsdCIgIiRhY19jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25zIiAiQ0ZMQUdTIgorLWlm IHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX2NvbmZzdHIiID0geHllcworLXRoZW4gOgorLSAgYWNf aGF2ZV9kZWNsPTEKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfaGF2ZV9kZWNsPTAgOzsK Ky1lc2FjCistZmkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfREVDTF9DT05GU1RSICRh Y19oYXZlX2RlY2wiID4+Y29uZmRlZnMuaAorLQorLWFjX2ZuX2NoZWNrX2RlY2wgIiRMSU5FTk8i ICJwcmludGYiICJhY19jdl9oYXZlX2RlY2xfcHJpbnRmIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQi ICIkYWNfY191bmRlY2xhcmVkX2J1aWx0aW5fb3B0aW9ucyIgIkNGTEFHUyIKKy1pZiB0ZXN0ICJ4 JGFjX2N2X2hhdmVfZGVjbF9wcmludGYiID0geHllcworLXRoZW4gOgorLSAgYWNfaGF2ZV9kZWNs PTEKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfaGF2ZV9kZWNsPTAgOzsKKy1lc2FjCist ZmkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfREVDTF9QUklOVEYgJGFjX2hhdmVfZGVj bCIgPj5jb25mZGVmcy5oCistCistYWNfZm5fY2hlY2tfZGVjbCAiJExJTkVOTyIgImJyayIgImFj X2N2X2hhdmVfZGVjbF9icmsiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIgIiRhY19jX3VuZGVjbGFy ZWRfYnVpbHRpbl9vcHRpb25zIiAiQ0ZMQUdTIgorLWlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNs X2JyayIgPSB4eWVzCistdGhlbiA6CistICBhY19oYXZlX2RlY2w9MQorLWVsc2UgY2FzZSBlIGlu ICMoCistICBlKSBhY19oYXZlX2RlY2w9MCA7OworLWVzYWMKKy1maQorLXByaW50ZiAiJXNcbiIg IiNkZWZpbmUgSEFWRV9ERUNMX0JSSyAkYWNfaGF2ZV9kZWNsIiA+PmNvbmZkZWZzLmgKKy0KKy1h Y19mbl9jaGVja19kZWNsICIkTElORU5PIiAic2JyayIgImFjX2N2X2hhdmVfZGVjbF9zYnJrIiAi JGFjX2luY2x1ZGVzX2RlZmF1bHQiICIkYWNfY191bmRlY2xhcmVkX2J1aWx0aW5fb3B0aW9ucyIg IkNGTEFHUyIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9zYnJrIiA9IHh5ZXMKKy10aGVu IDoKKy0gIGFjX2hhdmVfZGVjbD0xCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2hhdmVf ZGVjbD0wIDs7CistZXNhYworLWZpCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0RFQ0xf U0JSSyAkYWNfaGF2ZV9kZWNsIiA+PmNvbmZkZWZzLmgKKy0KKy1hY19mbl9jaGVja19kZWNsICIk TElORU5PIiAic2V0cmVnaWQiICJhY19jdl9oYXZlX2RlY2xfc2V0cmVnaWQiICIkYWNfaW5jbHVk ZXNfZGVmYXVsdCIgIiRhY19jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25zIiAiQ0ZMQUdTIgor LWlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX3NldHJlZ2lkIiA9IHh5ZXMKKy10aGVuIDoKKy0g IGFjX2hhdmVfZGVjbD0xCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2hhdmVfZGVjbD0w IDs7CistZXNhYworLWZpCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0RFQ0xfU0VUUkVH SUQgJGFjX2hhdmVfZGVjbCIgPj5jb25mZGVmcy5oCistCistYWNfZm5fY2hlY2tfZGVjbCAiJExJ TkVOTyIgInN0cmNweSIgImFjX2N2X2hhdmVfZGVjbF9zdHJjcHkiICIkYWNfaW5jbHVkZXNfZGVm YXVsdCIgIiRhY19jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25zIiAiQ0ZMQUdTIgorLWlmIHRl c3QgIngkYWNfY3ZfaGF2ZV9kZWNsX3N0cmNweSIgPSB4eWVzCistdGhlbiA6CistICBhY19oYXZl X2RlY2w9MQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19oYXZlX2RlY2w9MCA7OworLWVz YWMKKy1maQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9ERUNMX1NUUkNQWSAkYWNfaGF2 ZV9kZWNsIiA+PmNvbmZkZWZzLmgKKy0KKy1hY19mbl9jaGVja19kZWNsICIkTElORU5PIiAic3Ry c2lnbmFsIiAiYWNfY3ZfaGF2ZV9kZWNsX3N0cnNpZ25hbCIgIiRhY19pbmNsdWRlc19kZWZhdWx0 IiAiJGFjX2NfdW5kZWNsYXJlZF9idWlsdGluX29wdGlvbnMiICJDRkxBR1MiCistaWYgdGVzdCAi eCRhY19jdl9oYXZlX2RlY2xfc3Ryc2lnbmFsIiA9IHh5ZXMKKy10aGVuIDoKKy0gIGFjX2hhdmVf ZGVjbD0xCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2hhdmVfZGVjbD0wIDs7CistZXNh YworLWZpCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0RFQ0xfU1RSU0lHTkFMICRhY19o YXZlX2RlY2wiID4+Y29uZmRlZnMuaAorLQorLQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVO TyIgInNldHJlc3VpZCIgImFjX2N2X2Z1bmNfc2V0cmVzdWlkIgorLWlmIHRlc3QgIngkYWNfY3Zf ZnVuY19zZXRyZXN1aWQiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmlu ZSBIQVZFX1NFVFJFU1VJRCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tf ZnVuYyAiJExJTkVOTyIgInNldHJlc2dpZCIgImFjX2N2X2Z1bmNfc2V0cmVzZ2lkIgorLWlmIHRl c3QgIngkYWNfY3ZfZnVuY19zZXRyZXNnaWQiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIl c1xuIiAiI2RlZmluZSBIQVZFX1NFVFJFU0dJRCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQor LQorLWFjX2ZuX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJzdHJ0b2xkIiAiYWNfY3ZfaGF2ZV9kZWNs X3N0cnRvbGQiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIgIiRhY19jX3VuZGVjbGFyZWRfYnVpbHRp bl9vcHRpb25zIiAiQ0ZMQUdTIgorLWlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX3N0cnRvbGQi ID0geHllcworLXRoZW4gOgorLSAgYWNfaGF2ZV9kZWNsPTEKKy1lbHNlIGNhc2UgZSBpbiAjKAor LSAgZSkgYWNfaGF2ZV9kZWNsPTAgOzsKKy1lc2FjCistZmkKKy1wcmludGYgIiVzXG4iICIjZGVm aW5lIEhBVkVfREVDTF9TVFJUT0xEICRhY19oYXZlX2RlY2wiID4+Y29uZmRlZnMuaAorLWlmIHRl c3QgJGFjX2hhdmVfZGVjbCA9IDEKKy10aGVuIDoKKy0KKy0gICAgeyBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBicm9rZW4gc3RydG9sZCIg PiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgYnJva2VuIHN0cnRvbGQuLi4gIiA+JjY7IH0K Ky0gICAgaWYgdGVzdCAke2Jhc2hfY3Zfc3RydG9sZF9icm9rZW4reX0KKy10aGVuIDoKKy0gIHBy aW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0IGNv bmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5o LiAgKi8KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistaW50CistbWFpbiAodm9pZCkKKy17CistbG9u ZyBkb3VibGUgcjsgY2hhciAqZm9vLCAqYmFyOyByID0gc3RydG9sZChmb28sICZiYXIpOworLQor LSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUg IiRMSU5FTk8iCistdGhlbiA6CistICBiYXNoX2N2X3N0cnRvbGRfYnJva2VuPW5vCistZWxzZSBj YXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3Zfc3RydG9sZF9icm9rZW49eWVzIDs7CistZXNhYwor LWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz dC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKKy0KKy0gICAgIDs7CistZXNhYworLWZpCistCistICAg IHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRi YXNoX2N2X3N0cnRvbGRfYnJva2VuIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYmFzaF9jdl9zdHJ0 b2xkX2Jyb2tlbiIgPiY2OyB9CistICAgIGlmIHRlc3QgIiRiYXNoX2N2X3N0cnRvbGRfYnJva2Vu IiA9ICJ5ZXMiIDsgdGhlbgorLQlwcmludGYgIiVzXG4iICIjZGVmaW5lIFNUUlRPTERfQlJPS0VO IDEiID4+Y29uZmRlZnMuaAorLQorLSAgICBmaQorLQorLWZpCistCistCistYWNfZm5fY2hlY2tf ZGVjbCAiJExJTkVOTyIgInN0cnRvbCIgImFjX2N2X2hhdmVfZGVjbF9zdHJ0b2wiICIkYWNfaW5j bHVkZXNfZGVmYXVsdCIgIiRhY19jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25zIiAiQ0ZMQUdT IgorLWlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX3N0cnRvbCIgPSB4eWVzCistdGhlbiA6Cist ICBhY19oYXZlX2RlY2w9MQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19oYXZlX2RlY2w9 MCA7OworLWVzYWMKKy1maQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9ERUNMX1NUUlRP TCAkYWNfaGF2ZV9kZWNsIiA+PmNvbmZkZWZzLmgKKy0KKy1hY19mbl9jaGVja19kZWNsICIkTElO RU5PIiAic3RydG9sbCIgImFjX2N2X2hhdmVfZGVjbF9zdHJ0b2xsIiAiJGFjX2luY2x1ZGVzX2Rl ZmF1bHQiICIkYWNfY191bmRlY2xhcmVkX2J1aWx0aW5fb3B0aW9ucyIgIkNGTEFHUyIKKy1pZiB0 ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9zdHJ0b2xsIiA9IHh5ZXMKKy10aGVuIDoKKy0gIGFjX2hh dmVfZGVjbD0xCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2hhdmVfZGVjbD0wIDs7Cist ZXNhYworLWZpCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0RFQ0xfU1RSVE9MTCAkYWNf aGF2ZV9kZWNsIiA+PmNvbmZkZWZzLmgKKy0KKy1hY19mbl9jaGVja19kZWNsICIkTElORU5PIiAi c3RydG91bCIgImFjX2N2X2hhdmVfZGVjbF9zdHJ0b3VsIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQi ICIkYWNfY191bmRlY2xhcmVkX2J1aWx0aW5fb3B0aW9ucyIgIkNGTEFHUyIKKy1pZiB0ZXN0ICJ4 JGFjX2N2X2hhdmVfZGVjbF9zdHJ0b3VsIiA9IHh5ZXMKKy10aGVuIDoKKy0gIGFjX2hhdmVfZGVj bD0xCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2hhdmVfZGVjbD0wIDs7CistZXNhYwor LWZpCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0RFQ0xfU1RSVE9VTCAkYWNfaGF2ZV9k ZWNsIiA+PmNvbmZkZWZzLmgKKy0KKy1hY19mbl9jaGVja19kZWNsICIkTElORU5PIiAic3RydG91 bGwiICJhY19jdl9oYXZlX2RlY2xfc3RydG91bGwiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIgIiRh Y19jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25zIiAiQ0ZMQUdTIgorLWlmIHRlc3QgIngkYWNf Y3ZfaGF2ZV9kZWNsX3N0cnRvdWxsIiA9IHh5ZXMKKy10aGVuIDoKKy0gIGFjX2hhdmVfZGVjbD0x CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2hhdmVfZGVjbD0wIDs7CistZXNhYworLWZp CistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0RFQ0xfU1RSVE9VTEwgJGFjX2hhdmVfZGVj bCIgPj5jb25mZGVmcy5oCistCistYWNfZm5fY2hlY2tfZGVjbCAiJExJTkVOTyIgInN0cnRvdW1h eCIgImFjX2N2X2hhdmVfZGVjbF9zdHJ0b3VtYXgiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIgIiRh Y19jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25zIiAiQ0ZMQUdTIgorLWlmIHRlc3QgIngkYWNf Y3ZfaGF2ZV9kZWNsX3N0cnRvdW1heCIgPSB4eWVzCistdGhlbiA6CistICBhY19oYXZlX2RlY2w9 MQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19oYXZlX2RlY2w9MCA7OworLWVzYWMKKy1m aQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9ERUNMX1NUUlRPVU1BWCAkYWNfaGF2ZV9k ZWNsIiA+PmNvbmZkZWZzLmgKKy0KKy0KKy0KKy0KKy0KKy0KKy17IHByaW50ZiAiJXNcbiIgIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgbWt0aW1lIiA+ JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciB3b3JraW5nIG1rdGltZS4uLiAiID4mNjsgfQor LWlmIHRlc3QgJHthY19jdl9mdW5jX3dvcmtpbmdfbWt0aW1lK3l9CistdGhlbiA6CistICBwcmlu dGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3Qg IiRjcm9zc19jb21waWxpbmciID0geWVzCistdGhlbiA6CistICBhY19jdl9mdW5jX3dvcmtpbmdf bWt0aW1lPW5vCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxf QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistLyogVGVz dCBwcm9ncmFtIGZyb20gUGF1bCBFZ2dlcnQgYW5kIFRvbnkgTGVuZWlzLiAgKi8KKy0jaW5jbHVk ZSA8dGltZS5oPgorLSNpZmRlZiBIQVZFX1NZU19USU1FX0gKKy0jIGluY2x1ZGUgPHN5cy90aW1l Lmg+CistI2VuZGlmCistCistI2luY2x1ZGUgPGxpbWl0cy5oPgorLSNpbmNsdWRlIDxzdGRsaWIu aD4KKy0KKy0jaWZkZWYgSEFWRV9VTklTVERfSAorLSMgaW5jbHVkZSA8dW5pc3RkLmg+CistI2Vu ZGlmCistCistI2lmbmRlZiBIQVZFX0FMQVJNCistIyBkZWZpbmUgYWxhcm0oWCkgLyogZW1wdHkg Ki8KKy0jZW5kaWYKKy0KKy0vKiBXb3JrIGFyb3VuZCByZWRlZmluaXRpb24gdG8gcnBsX3B1dGVu diBieSBvdGhlciBjb25maWcgdGVzdHMuICAqLworLSN1bmRlZiBwdXRlbnYKKy0KKy1zdGF0aWMg dGltZV90IHRpbWVfdF9tYXg7Cistc3RhdGljIHRpbWVfdCB0aW1lX3RfbWluOworLQorLS8qIFZh bHVlcyB3ZSdsbCB1c2UgdG8gc2V0IHRoZSBUWiBlbnZpcm9ubWVudCB2YXJpYWJsZS4gICovCist c3RhdGljIGNvbnN0IGNoYXIgKnR6X3N0cmluZ3NbXSA9IHsKKy0gIChjb25zdCBjaGFyICopIDAs ICJUWj1HTVQwIiwgIlRaPUpTVC05IiwKKy0gICJUWj1FU1QrM0VEVCsyLE0xMC4xLjAvMDA6MDA6 MDAsTTIuMy4wLzAwOjAwOjAwIgorLX07CistI2RlZmluZSBOX1NUUklOR1MgKHNpemVvZiAodHpf c3RyaW5ncykgLyBzaXplb2YgKHR6X3N0cmluZ3NbMF0pKQorLQorLS8qIFJldHVybiAwIGlmIG1r dGltZSBmYWlscyB0byBjb252ZXJ0IGEgZGF0ZSBpbiB0aGUgc3ByaW5nLWZvcndhcmQgZ2FwLgor LSAgIEJhc2VkIG9uIGEgcHJvYmxlbSByZXBvcnQgZnJvbSBBbmRyZWFzIEphZWdlci4gICovCist c3RhdGljIGludAorLXNwcmluZ19mb3J3YXJkX2dhcCAodm9pZCkKKy17CistICAvKiBnbGliYyAo dXAgdG8gYWJvdXQgMTk5OC0xMC0wNykgZmFpbGVkIHRoaXMgdGVzdC4gKi8KKy0gIHN0cnVjdCB0 bSB0bTsKKy0KKy0gIC8qIFVzZSB0aGUgcG9ydGFibGUgUE9TSVguMSBzcGVjaWZpY2F0aW9uICJU Wj1QU1Q4UERULE00LjEuMCxNMTAuNS4wIgorLSAgICAgaW5zdGVhZCBvZiAiVFo9QW1lcmljYS9W YW5jb3V2ZXIiIGluIG9yZGVyIHRvIGRldGVjdCB0aGUgYnVnIGV2ZW4KKy0gICAgIG9uIHN5c3Rl bXMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZSBPbHNvbiBleHRlbnNpb24sIG9yIGRvbid0IGhhdmUg dGhlCistICAgICBmdWxsIHpvbmVpbmZvIHRhYmxlcyBpbnN0YWxsZWQuICAqLworLSAgcHV0ZW52 ICgoY2hhciopICJUWj1QU1Q4UERULE00LjEuMCxNMTAuNS4wIik7CistCistICB0bS50bV95ZWFy ID0gOTg7CistICB0bS50bV9tb24gPSAzOworLSAgdG0udG1fbWRheSA9IDU7CistICB0bS50bV9o b3VyID0gMjsKKy0gIHRtLnRtX21pbiA9IDA7CistICB0bS50bV9zZWMgPSAwOworLSAgdG0udG1f aXNkc3QgPSAtMTsKKy0gIHJldHVybiBta3RpbWUgKCZ0bSkgIT0gKHRpbWVfdCkgLTE7CistfQor LQorLXN0YXRpYyBpbnQKKy1ta3RpbWVfdGVzdDEgKHRpbWVfdCBub3cpCisteworLSAgc3RydWN0 IHRtICpsdDsKKy0gIHJldHVybiAhIChsdCA9IGxvY2FsdGltZSAoJm5vdykpIHx8IG1rdGltZSAo bHQpID09IG5vdzsKKy19CistCistc3RhdGljIGludAorLW1rdGltZV90ZXN0ICh0aW1lX3Qgbm93 KQorLXsKKy0gIHJldHVybiAobWt0aW1lX3Rlc3QxIChub3cpCistCSAgJiYgbWt0aW1lX3Rlc3Qx ICgodGltZV90KSAodGltZV90X21heCAtIG5vdykpCistCSAgJiYgbWt0aW1lX3Rlc3QxICgodGlt ZV90KSAodGltZV90X21pbiArIG5vdykpKTsKKy19CistCistc3RhdGljIGludAorLWlyaXhfNl80 X2J1ZyAodm9pZCkKKy17CistICAvKiBCYXNlZCBvbiBjb2RlIGZyb20gQXJpZWwgRmFpZ29uLiAg Ki8KKy0gIHN0cnVjdCB0bSB0bTsKKy0gIHRtLnRtX3llYXIgPSA5NjsKKy0gIHRtLnRtX21vbiA9 IDM7CistICB0bS50bV9tZGF5ID0gMDsKKy0gIHRtLnRtX2hvdXIgPSAwOworLSAgdG0udG1fbWlu ID0gMDsKKy0gIHRtLnRtX3NlYyA9IDA7CistICB0bS50bV9pc2RzdCA9IC0xOworLSAgbWt0aW1l ICgmdG0pOworLSAgcmV0dXJuIHRtLnRtX21vbiA9PSAyICYmIHRtLnRtX21kYXkgPT0gMzE7Cist fQorLQorLXN0YXRpYyBpbnQKKy1iaWd0aW1lX3Rlc3QgKGludCBqKQorLXsKKy0gIHN0cnVjdCB0 bSB0bTsKKy0gIHRpbWVfdCBub3c7CistICB0bS50bV95ZWFyID0gdG0udG1fbW9uID0gdG0udG1f bWRheSA9IHRtLnRtX2hvdXIgPSB0bS50bV9taW4gPSB0bS50bV9zZWMgPSBqOworLSAgbm93ID0g bWt0aW1lICgmdG0pOworLSAgaWYgKG5vdyAhPSAodGltZV90KSAtMSkKKy0gICAgeworLSAgICAg IHN0cnVjdCB0bSAqbHQgPSBsb2NhbHRpbWUgKCZub3cpOworLSAgICAgIGlmICghIChsdAorLQkg ICAgICYmIGx0LT50bV95ZWFyID09IHRtLnRtX3llYXIKKy0JICAgICAmJiBsdC0+dG1fbW9uID09 IHRtLnRtX21vbgorLQkgICAgICYmIGx0LT50bV9tZGF5ID09IHRtLnRtX21kYXkKKy0JICAgICAm JiBsdC0+dG1faG91ciA9PSB0bS50bV9ob3VyCistCSAgICAgJiYgbHQtPnRtX21pbiA9PSB0bS50 bV9taW4KKy0JICAgICAmJiBsdC0+dG1fc2VjID09IHRtLnRtX3NlYworLQkgICAgICYmIGx0LT50 bV95ZGF5ID09IHRtLnRtX3lkYXkKKy0JICAgICAmJiBsdC0+dG1fd2RheSA9PSB0bS50bV93ZGF5 CistCSAgICAgJiYgKChsdC0+dG1faXNkc3QgPCAwID8gLTEgOiAwIDwgbHQtPnRtX2lzZHN0KQor LQkJICA9PSAodG0udG1faXNkc3QgPCAwID8gLTEgOiAwIDwgdG0udG1faXNkc3QpKSkpCistCXJl dHVybiAwOworLSAgICB9CistICByZXR1cm4gMTsKKy19CistCistc3RhdGljIGludAorLXllYXJf MjA1MF90ZXN0ICh2b2lkKQorLXsKKy0gIC8qIFRoZSBjb3JyZWN0IGFuc3dlciBmb3IgMjA1MC0w Mi0wMSAwMDowMDowMCBpbiBQYWNpZmljIHRpbWUsCistICAgICBpZ25vcmluZyBsZWFwIHNlY29u ZHMuICAqLworLSAgdW5zaWduZWQgbG9uZyBpbnQgYW5zd2VyID0gMjUyNzMxNTIwMFVMOworLQor LSAgc3RydWN0IHRtIHRtOworLSAgdGltZV90IHQ7CistICB0bS50bV95ZWFyID0gMjA1MCAtIDE5 MDA7CistICB0bS50bV9tb24gPSAyIC0gMTsKKy0gIHRtLnRtX21kYXkgPSAxOworLSAgdG0udG1f aG91ciA9IHRtLnRtX21pbiA9IHRtLnRtX3NlYyA9IDA7CistICB0bS50bV9pc2RzdCA9IC0xOwor LQorLSAgLyogVXNlIHRoZSBwb3J0YWJsZSBQT1NJWC4xIHNwZWNpZmljYXRpb24gIlRaPVBTVDhQ RFQsTTQuMS4wLE0xMC41LjAiCistICAgICBpbnN0ZWFkIG9mICJUWj1BbWVyaWNhL1ZhbmNvdXZl ciIgaW4gb3JkZXIgdG8gZGV0ZWN0IHRoZSBidWcgZXZlbgorLSAgICAgb24gc3lzdGVtcyB0aGF0 IGRvbid0IHN1cHBvcnQgdGhlIE9sc29uIGV4dGVuc2lvbiwgb3IgZG9uJ3QgaGF2ZSB0aGUKKy0g ICAgIGZ1bGwgem9uZWluZm8gdGFibGVzIGluc3RhbGxlZC4gICovCistICBwdXRlbnYgKChjaGFy KikgIlRaPVBTVDhQRFQsTTQuMS4wLE0xMC41LjAiKTsKKy0KKy0gIHQgPSBta3RpbWUgKCZ0bSk7 CistCistICAvKiBDaGVjayB0aGF0IHRoZSByZXN1bHQgaXMgZWl0aGVyIGEgZmFpbHVyZSwgb3Ig Y2xvc2UgZW5vdWdoCistICAgICB0byB0aGUgY29ycmVjdCBhbnN3ZXIgdGhhdCB3ZSBjYW4gYXNz dW1lIHRoZSBkaXNjcmVwYW5jeSBpcworLSAgICAgZHVlIHRvIGxlYXAgc2Vjb25kcy4gICovCist ICByZXR1cm4gKHQgPT0gKHRpbWVfdCkgLTEKKy0JICB8fCAoMCA8IHQgJiYgYW5zd2VyIC0gMTIw IDw9IHQgJiYgdCA8PSBhbnN3ZXIgKyAxMjApKTsKKy19CistCistaW50CistbWFpbiAodm9pZCkK Ky17CistICB0aW1lX3QgdCwgZGVsdGE7CistICBpbnQgaSwgajsKKy0KKy0gIC8qIFRoaXMgdGVz dCBtYWtlcyBzb21lIGJ1Z2d5IG1rdGltZSBpbXBsZW1lbnRhdGlvbnMgbG9vcC4KKy0gICAgIEdp dmUgdXAgYWZ0ZXIgNjAgc2Vjb25kczsgYSBta3RpbWUgc2xvd2VyIHRoYW4gdGhhdAorLSAgICAg aXNuJ3Qgd29ydGggdXNpbmcgYW55d2F5LiAgKi8KKy0gIGFsYXJtICg2MCk7CistCistICBmb3Ig KDs7KQorLSAgICB7CistICAgICAgdCA9ICh0aW1lX3RfbWF4IDw8IDEpICsgMTsKKy0gICAgICBp ZiAodCA8PSB0aW1lX3RfbWF4KQorLQlicmVhazsKKy0gICAgICB0aW1lX3RfbWF4ID0gdDsKKy0g ICAgfQorLSAgdGltZV90X21pbiA9IC0gKCh0aW1lX3QpIH4gKHRpbWVfdCkgMCA9PSAodGltZV90 KSAtMSkgLSB0aW1lX3RfbWF4OworLQorLSAgZGVsdGEgPSB0aW1lX3RfbWF4IC8gOTk3OyAvKiBh IHN1aXRhYmxlIHByaW1lIG51bWJlciAqLworLSAgZm9yIChpID0gMDsgaSA8IE5fU1RSSU5HUzsg aSsrKQorLSAgICB7CistICAgICAgaWYgKHR6X3N0cmluZ3NbaV0pCistCXB1dGVudiAoKGNoYXIq KSB0el9zdHJpbmdzW2ldKTsKKy0KKy0gICAgICBmb3IgKHQgPSAwOyB0IDw9IHRpbWVfdF9tYXgg LSBkZWx0YTsgdCArPSBkZWx0YSkKKy0JaWYgKCEgbWt0aW1lX3Rlc3QgKHQpKQorLQkgIHJldHVy biAxOworLSAgICAgIGlmICghIChta3RpbWVfdGVzdCAoKHRpbWVfdCkgMSkKKy0JICAgICAmJiBt a3RpbWVfdGVzdCAoKHRpbWVfdCkgKDYwICogNjApKQorLQkgICAgICYmIG1rdGltZV90ZXN0ICgo dGltZV90KSAoNjAgKiA2MCAqIDI0KSkpKQorLQlyZXR1cm4gMTsKKy0KKy0gICAgICBmb3IgKGog PSAxOyA7IGogPDw9IDEpCistCWlmICghIGJpZ3RpbWVfdGVzdCAoaikpCistCSAgcmV0dXJuIDE7 CistCWVsc2UgaWYgKElOVF9NQVggLyAyIDwgaikKKy0JICBicmVhazsKKy0gICAgICBpZiAoISBi aWd0aW1lX3Rlc3QgKElOVF9NQVgpKQorLQlyZXR1cm4gMTsKKy0gICAgfQorLSAgcmV0dXJuICEg KGlyaXhfNl80X2J1ZyAoKSAmJiBzcHJpbmdfZm9yd2FyZF9nYXAgKCkgJiYgeWVhcl8yMDUwX3Rl c3QgKCkpOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iCistdGhl biA6CistICBhY19jdl9mdW5jX3dvcmtpbmdfbWt0aW1lPXllcworLWVsc2UgY2FzZSBlIGluICMo CistICBlKSBhY19jdl9mdW5jX3dvcmtpbmdfbWt0aW1lPW5vIDs7CistZXNhYworLWZpCistcm0g LWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRh Y19leGVleHQgXAorLSAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0 LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNc biIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZnVuY193b3Jr aW5nX21rdGltZSIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X2Z1bmNfd29ya2luZ19ta3Rp bWUiID4mNjsgfQorLWlmIHRlc3QgJGFjX2N2X2Z1bmNfd29ya2luZ19ta3RpbWUgPSBubzsgdGhl bgorLSAgY2FzZSAiICRMSUJPQkpTICIgaW4KKy0gICoiIG1rdGltZS4kYWNfb2JqZXh0ICIqICkg OzsKKy0gICopIExJQk9CSlM9IiRMSUJPQkpTIG1rdGltZS4kYWNfb2JqZXh0IgorLSA7OworLWVz YWMKKy0KKy1maQorLQorLQorLQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5F Tk8iICJhcmd6LmgiICJhY19jdl9oZWFkZXJfYXJnel9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQi CistaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfYXJnel9oIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHBy aW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9BUkdaX0ggMSIgPj5jb25mZGVmcy5oCistCistZmkK Ky1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAiZXJybm8uaCIgImFjX2N2 X2hlYWRlcl9lcnJub19oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19j dl9oZWFkZXJfZXJybm9faCIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVm aW5lIEhBVkVfRVJSTk9fSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tf aGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJmY250bC5oIiAiYWNfY3ZfaGVhZGVyX2ZjbnRsX2gi ICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9mY250bF9o IiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9GQ05UTF9I IDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAi JExJTkVOTyIgIm1hbGxvYy5oIiAiYWNfY3ZfaGVhZGVyX21hbGxvY19oIiAiJGFjX2luY2x1ZGVz X2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbWFsbG9jX2giID0geHllcworLXRo ZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX01BTExPQ19IIDEiID4+Y29uZmRl ZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVOTyIgInN0 ZGlvX2V4dC5oIiAiYWNfY3ZfaGVhZGVyX3N0ZGlvX2V4dF9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1 bHQiCistaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3RkaW9fZXh0X2giID0geHllcworLXRoZW4g OgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NURElPX0VYVF9IIDEiID4+Y29uZmRl ZnMuaAorLQorLWZpCistCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX01BTExPQyAx IiA+PmNvbmZkZWZzLmgKKy0KKy0KKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgbW1hcCIgPiY1CistcHJpbnRmICVz ICJjaGVja2luZyBmb3Igd29ya2luZyBtbWFwLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2 X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hl ZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgaWYgdGVzdCAiJGNyb3NzX2NvbXBp bGluZyIgPSB5ZXMKKy10aGVuIDoKKy0gIGNhc2UgIiRob3N0X29zIiBpbiAjICgoCistCQkJICAj IEd1ZXNzIHllcyBvbiBwbGF0Zm9ybXMgd2hlcmUgd2Uga25vdyB0aGUgcmVzdWx0LgorLQkJICBs aW51eCopIGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQ9eWVzIDs7CistCQkJICAjIElmIHdl IGRvbid0IGtub3csIGFzc3VtZSB0aGUgd29yc3QuCistCQkgICopICAgICAgYWNfY3ZfZnVuY19t bWFwX2ZpeGVkX21hcHBlZD1ubyA7OworLQkJZXNhYworLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNv bmZkZWZzLmguICAqLworLSRhY19pbmNsdWRlc19kZWZhdWx0CistLyogbWFsbG9jIG1pZ2h0IGhh dmUgYmVlbiByZW5hbWVkIGFzIHJwbF9tYWxsb2MuICovCistI3VuZGVmIG1hbGxvYworLQorLS8q IFRoYW5rcyB0byBNaWtlIEhhZXJ0ZWwgYW5kIEppbSBBdmVyYSBmb3IgdGhpcyB0ZXN0LgorLSAg IEhlcmUgaXMgYSBtYXRyaXggb2YgbW1hcCBwb3NzaWJpbGl0aWVzOgorLQltbWFwIHByaXZhdGUg bm90IGZpeGVkCistCW1tYXAgcHJpdmF0ZSBmaXhlZCBhdCBzb21ld2hlcmUgY3VycmVudGx5IHVu bWFwcGVkCistCW1tYXAgcHJpdmF0ZSBmaXhlZCBhdCBzb21ld2hlcmUgYWxyZWFkeSBtYXBwZWQK Ky0JbW1hcCBzaGFyZWQgbm90IGZpeGVkCistCW1tYXAgc2hhcmVkIGZpeGVkIGF0IHNvbWV3aGVy ZSBjdXJyZW50bHkgdW5tYXBwZWQKKy0JbW1hcCBzaGFyZWQgZml4ZWQgYXQgc29tZXdoZXJlIGFs cmVhZHkgbWFwcGVkCistICAgRm9yIHByaXZhdGUgbWFwcGluZ3MsIHdlIHNob3VsZCB2ZXJpZnkg dGhhdCBjaGFuZ2VzIGNhbm5vdCBiZSByZWFkKCkKKy0gICBiYWNrIGZyb20gdGhlIGZpbGUsIG5v ciBtbWFwJ3MgYmFjayBmcm9tIHRoZSBmaWxlIGF0IGEgZGlmZmVyZW50CistICAgYWRkcmVzcy4g IChUaGVyZSBoYXZlIGJlZW4gc3lzdGVtcyB3aGVyZSBwcml2YXRlIHdhcyBub3QgY29ycmVjdGx5 CistICAgaW1wbGVtZW50ZWQgbGlrZSB0aGUgaW5mYW1vdXMgaTM4NiBzdnI0LjAsIGFuZCBzeXN0 ZW1zIHdoZXJlIHRoZQorLSAgIFZNIHBhZ2UgY2FjaGUgd2FzIG5vdCBjb2hlcmVudCB3aXRoIHRo ZSBmaWxlIHN5c3RlbSBidWZmZXIgY2FjaGUKKy0gICBsaWtlIGVhcmx5IHZlcnNpb25zIG9mIEZy ZWVCU0QgYW5kIHBvc3NpYmx5IGNvbnRlbXBvcmFyeSBOZXRCU0QuKQorLSAgIEZvciBzaGFyZWQg bWFwcGluZ3MsIHdlIHNob3VsZCBjb252ZXJzZWx5IHZlcmlmeSB0aGF0IGNoYW5nZXMgZ2V0Cist ICAgcHJvcGFnYXRlZCBiYWNrIHRvIGFsbCB0aGUgcGxhY2VzIHRoZXkncmUgc3VwcG9zZWQgdG8g YmUuICAqLworLQorLSNpbmNsdWRlIDxmY250bC5oPgorLSNpbmNsdWRlIDxzeXMvbW1hbi5oPgor LQorLSNpZm5kZWYgZ2V0cGFnZXNpemUKKy0vKiBQcmVmZXIgc3lzY29uZiB0byB0aGUgbGVnYWN5 IGdldHBhZ2VzaXplIGZ1bmN0aW9uLCBhcyBnZXRwYWdlc2l6ZSBoYXMKKy0gICBiZWVuIHJlbW92 ZWQgZnJvbSBQT1NJWCBhbmQgaXMgbGltaXRlZCB0byBwYWdlIHNpemVzIHRoYXQgZml0IGluICdp bnQnLiAgKi8KKy0jIGlmZGVmIF9TQ19QQUdFU0laRQorLSMgIGRlZmluZSBnZXRwYWdlc2l6ZSgp IHN5c2NvbmYgKF9TQ19QQUdFU0laRSkKKy0jIGVsaWYgZGVmaW5lZCBfU0NfUEFHRV9TSVpFCist IyAgZGVmaW5lIGdldHBhZ2VzaXplKCkgc3lzY29uZiAoX1NDX1BBR0VfU0laRSkKKy0jIGVsaWYg SEFWRV9HRVRQQUdFU0laRQorLWludCBnZXRwYWdlc2l6ZSAoKTsKKy0jIGVsc2UKKy0jICBpZmRl ZiBIQVZFX1NZU19QQVJBTV9ICistIyAgIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgorLSMgICBpZmRl ZiBFWEVDX1BBR0VTSVpFCistIyAgICBkZWZpbmUgZ2V0cGFnZXNpemUoKSBFWEVDX1BBR0VTSVpF CistIyAgIGVsc2UgLyogbm8gRVhFQ19QQUdFU0laRSAqLworLSMgICAgaWZkZWYgTkJQRworLSMg ICAgIGRlZmluZSBnZXRwYWdlc2l6ZSgpIE5CUEcgKiBDTFNJWkUKKy0jICAgICBpZm5kZWYgQ0xT SVpFCistIyAgICAgIGRlZmluZSBDTFNJWkUgMQorLSMgICAgIGVuZGlmIC8qIG5vIENMU0laRSAq LworLSMgICAgZWxzZSAvKiBubyBOQlBHICovCistIyAgICAgaWZkZWYgTkJQQworLSMgICAgICBk ZWZpbmUgZ2V0cGFnZXNpemUoKSBOQlBDCistIyAgICAgZWxzZSAvKiBubyBOQlBDICovCistIyAg ICAgIGlmZGVmIFBBR0VTSVpFCistIyAgICAgICBkZWZpbmUgZ2V0cGFnZXNpemUoKSBQQUdFU0la RQorLSMgICAgICBlbmRpZiAvKiBQQUdFU0laRSAqLworLSMgICAgIGVuZGlmIC8qIG5vIE5CUEMg Ki8KKy0jICAgIGVuZGlmIC8qIG5vIE5CUEcgKi8KKy0jICAgZW5kaWYgLyogbm8gRVhFQ19QQUdF U0laRSAqLworLSMgIGVsc2UgLyogbm8gSEFWRV9TWVNfUEFSQU1fSCAqLworLSMgICBkZWZpbmUg Z2V0cGFnZXNpemUoKSA4MTkyCS8qIHB1bnQgdG90YWxseSAqLworLSMgIGVuZGlmIC8qIG5vIEhB VkVfU1lTX1BBUkFNX0ggKi8KKy0jIGVuZGlmCistI2VuZGlmCistCistaW50CistbWFpbiAodm9p ZCkKKy17CistICBjaGFyICpkYXRhLCAqZGF0YTIsICpkYXRhMzsKKy0gIGNvbnN0IGNoYXIgKmNk YXRhMjsKKy0gIGxvbmcgaSwgcGFnZXNpemU7CistICBpbnQgZmQsIGZkMjsKKy0KKy0gIHBhZ2Vz aXplID0gZ2V0cGFnZXNpemUgKCk7CistCistICAvKiBGaXJzdCwgbWFrZSBhIGZpbGUgd2l0aCBz b21lIGtub3duIGdhcmJhZ2UgaW4gaXQuICovCistICBkYXRhID0gKGNoYXIgKikgbWFsbG9jIChw YWdlc2l6ZSk7CistICBpZiAoIWRhdGEpCistICAgIHJldHVybiAxOworLSAgZm9yIChpID0gMDsg aSA8IHBhZ2VzaXplOyArK2kpCistICAgICooZGF0YSArIGkpID0gcmFuZCAoKTsKKy0gIHVtYXNr ICgwKTsKKy0gIGZkID0gY3JlYXQgKCJjb25mdGVzdC5tbWFwIiwgMDYwMCk7CistICBpZiAoZmQg PCAwKQorLSAgICByZXR1cm4gMjsKKy0gIGlmICh3cml0ZSAoZmQsIGRhdGEsIHBhZ2VzaXplKSAh PSBwYWdlc2l6ZSkKKy0gICAgcmV0dXJuIDM7CistICBjbG9zZSAoZmQpOworLQorLSAgLyogTmV4 dCwgY2hlY2sgdGhhdCB0aGUgdGFpbCBvZiBhIHBhZ2UgaXMgemVyby1maWxsZWQuICBGaWxlIG11 c3QgaGF2ZQorLSAgICAgbm9uLXplcm8gbGVuZ3RoLCBvdGhlcndpc2Ugd2UgcmlzayBTSUdCVVMg Zm9yIGVudGlyZSBwYWdlLiAgKi8KKy0gIGZkMiA9IG9wZW4gKCJjb25mdGVzdC50eHQiLCBPX1JE V1IgfCBPX0NSRUFUIHwgT19UUlVOQywgMDYwMCk7CistICBpZiAoZmQyIDwgMCkKKy0gICAgcmV0 dXJuIDQ7CistICBjZGF0YTIgPSAiIjsKKy0gIGlmICh3cml0ZSAoZmQyLCBjZGF0YTIsIDEpICE9 IDEpCistICAgIHJldHVybiA1OworLSAgZGF0YTIgPSAoY2hhciAqKSBtbWFwICgwLCBwYWdlc2l6 ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwgZmQyLCAwTCk7CistICBpZiAo ZGF0YTIgPT0gTUFQX0ZBSUxFRCkKKy0gICAgcmV0dXJuIDY7CistICBmb3IgKGkgPSAwOyBpIDwg cGFnZXNpemU7ICsraSkKKy0gICAgaWYgKCooZGF0YTIgKyBpKSkKKy0gICAgICByZXR1cm4gNzsK Ky0gIGNsb3NlIChmZDIpOworLSAgLyogJ3JldHVybiA4Oycgbm90IGN1cnJlbnRseSB1c2VkLiAg Ki8KKy0KKy0gIC8qIE5leHQsIHRyeSB0byBtbWFwIHRoZSBmaWxlIGF0IGEgZml4ZWQgYWRkcmVz cyB3aGljaCBhbHJlYWR5IGhhcworLSAgICAgc29tZXRoaW5nIGVsc2UgYWxsb2NhdGVkIGF0IGl0 LiAgSWYgd2UgY2FuLCBhbHNvIG1ha2Ugc3VyZSB0aGF0CistICAgICB3ZSBzZWUgdGhlIHNhbWUg Z2FyYmFnZS4gICovCistICBmZCA9IG9wZW4gKCJjb25mdGVzdC5tbWFwIiwgT19SRFdSKTsKKy0g IGlmIChmZCA8IDApCistICAgIHJldHVybiA5OworLSAgaWYgKGRhdGEyICE9IG1tYXAgKGRhdGEy LCBwYWdlc2l6ZSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwKKy0JCSAgICAgTUFQX1BSSVZBVEUg fCBNQVBfRklYRUQsIGZkLCAwTCkpCistICAgIHJldHVybiAxMDsKKy0gIGZvciAoaSA9IDA7IGkg PCBwYWdlc2l6ZTsgKytpKQorLSAgICBpZiAoKihkYXRhICsgaSkgIT0gKihkYXRhMiArIGkpKQor LSAgICAgIHJldHVybiAxMTsKKy0KKy0gIC8qIEZpbmFsbHksIG1ha2Ugc3VyZSB0aGF0IGNoYW5n ZXMgdG8gdGhlIG1hcHBlZCBhcmVhIGRvIG5vdAorLSAgICAgcGVyY29sYXRlIGJhY2sgdG8gdGhl IGZpbGUgYXMgc2VlbiBieSByZWFkKCkuICAoVGhpcyBpcyBhIGJ1ZyBvbgorLSAgICAgc29tZSB2 YXJpYW50cyBvZiBpMzg2IHN2cjQuMC4pICAqLworLSAgZm9yIChpID0gMDsgaSA8IHBhZ2VzaXpl OyArK2kpCistICAgICooZGF0YTIgKyBpKSA9ICooZGF0YTIgKyBpKSArIDE7CistICBkYXRhMyA9 IChjaGFyICopIG1hbGxvYyAocGFnZXNpemUpOworLSAgaWYgKCFkYXRhMykKKy0gICAgcmV0dXJu IDEyOworLSAgaWYgKHJlYWQgKGZkLCBkYXRhMywgcGFnZXNpemUpICE9IHBhZ2VzaXplKQorLSAg ICByZXR1cm4gMTM7CistICBmb3IgKGkgPSAwOyBpIDwgcGFnZXNpemU7ICsraSkKKy0gICAgaWYg KCooZGF0YSArIGkpICE9ICooZGF0YTMgKyBpKSkKKy0gICAgICByZXR1cm4gMTQ7CistICBjbG9z ZSAoZmQpOworLSAgZnJlZSAoZGF0YSk7CistICBmcmVlIChkYXRhMyk7CistICByZXR1cm4gMDsK Ky19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIgorLXRoZW4gOgorLSAg YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkgYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD1ubyA7OworLWVzYWMKKy1maQorLXJtIC1m IGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNf ZXhlZXh0IFwKKy0gIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4k YWNfZXh0IDs7CistZXNhYworLWZpCistIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4i ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfbW1hcF9m aXhlZF9tYXBwZWQiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19jdl9mdW5jX21tYXBfZml4ZWRf bWFwcGVkIiA+JjY7IH0KKy1pZiB0ZXN0ICRhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkID0g eWVzOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX01NQVAgMSIgPj5jb25m ZGVmcy5oCistCistZmkKKy1ybSAtZiBjb25mdGVzdC5tbWFwIGNvbmZ0ZXN0LnR4dAorLQorLWFj X2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIl9fYXJnel9jb3VudCIgImFjX2N2X2Z1bmNfX19h cmd6X2NvdW50IgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19fX2FyZ3pfY291bnQiID0geHllcwor LXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX19fQVJHWl9DT1VOVCAxIiA+ PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIl9fYXJn el9uZXh0IiAiYWNfY3ZfZnVuY19fX2FyZ3pfbmV4dCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNf X19hcmd6X25leHQiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBI QVZFX19fQVJHWl9ORVhUIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19m dW5jICIkTElORU5PIiAiX19hcmd6X3N0cmluZ2lmeSIgImFjX2N2X2Z1bmNfX19hcmd6X3N0cmlu Z2lmeSIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfX19hcmd6X3N0cmluZ2lmeSIgPSB4eWVzCist dGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfX19BUkdaX1NUUklOR0lGWSAx IiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImRj Z2V0dGV4dCIgImFjX2N2X2Z1bmNfZGNnZXR0ZXh0IgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19k Y2dldHRleHQiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZF X0RDR0VUVEVYVCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAi JExJTkVOTyIgImxvY2FsZV9jaGFyc2V0IiAiYWNfY3ZfZnVuY19sb2NhbGVfY2hhcnNldCIKKy1p ZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbG9jYWxlX2NoYXJzZXQiID0geHllcworLXRoZW4gOgorLSAg cHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0xPQ0FMRV9DSEFSU0VUIDEiID4+Y29uZmRlZnMu aAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAibWVtcGNweSIgImFjX2N2 X2Z1bmNfbWVtcGNweSIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbWVtcGNweSIgPSB4eWVzCist dGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfTUVNUENQWSAxIiA+PmNvbmZk ZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm11bm1hcCIgImFj X2N2X2Z1bmNfbXVubWFwIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19tdW5tYXAiID0geHllcwor LXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX01VTk1BUCAxIiA+PmNvbmZk ZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1yZW1hcCIgImFj X2N2X2Z1bmNfbXJlbWFwIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19tcmVtYXAiID0geHllcwor LXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX01SRU1BUCAxIiA+PmNvbmZk ZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInN0cGNweSIgImFj X2N2X2Z1bmNfc3RwY3B5IgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19zdHBjcHkiID0geHllcwor LXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NUUENQWSAxIiA+PmNvbmZk ZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInN0cmNzcG4iICJh Y19jdl9mdW5jX3N0cmNzcG4iCistaWYgdGVzdCAieCRhY19jdl9mdW5jX3N0cmNzcG4iID0geHll cworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NUUkNTUE4gMSIgPj5j b25mZGVmcy5oCistCistZmkKKy0KKy0KKy1JTlRMX0RFUD0gSU5UTF9JTkM9IExJQklOVExfSD0K Ky1pZiB0ZXN0ICJ4JFVTRV9JTkNMVURFRF9MSUJJTlRMIiA9ICJ4eWVzIjsgdGhlbgorLQlJTlRM X0RFUD0nJHtJTlRMX0xJQkRJUn0vbGliaW50bC5hJworLQlJTlRMX0lOQz0nLUkke0lOVExfTElC U1JDfSAtSSR7SU5UTF9CVUlMRERJUn0nCistCUxJQklOVExfSD0nJHtJTlRMX0JVSUxERElSfS9s aWJpbnRsLmgnCistCistCXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9MT0NBTEVfQ0hBUlNF VCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLQorLQorLQorLQorLQorLWFjX2ZuX2NfY2hl Y2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICJ3Y3R5cGUuaCIgImFjX2N2X2hlYWRlcl93Y3R5 cGVfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3dj dHlwZV9oIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9X Q1RZUEVfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLWFjX2ZuX2NfY2hlY2tfaGVhZGVy X2NvbXBpbGUgIiRMSU5FTk8iICJ3Y2hhci5oIiAiYWNfY3ZfaGVhZGVyX3djaGFyX2giICIkYWNf aW5jbHVkZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl93Y2hhcl9oIiA9IHh5 ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9XQ0hBUl9IIDEiID4+ Y29uZmRlZnMuaAorLQorLWZpCistCistYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJ TkVOTyIgImxhbmdpbmZvLmgiICJhY19jdl9oZWFkZXJfbGFuZ2luZm9faCIgIiRhY19pbmNsdWRl c19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2xhbmdpbmZvX2giID0geHllcwor LXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0xBTkdJTkZPX0ggMSIgPj5j b25mZGVmcy5oCistCistZmkKKy0KKy0KKy1hY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIk TElORU5PIiAibWJzdHIuaCIgImFjX2N2X2hlYWRlcl9tYnN0cl9oIiAiJGFjX2luY2x1ZGVzX2Rl ZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbWJzdHJfaCIgPSB4eWVzCistdGhlbiA6 CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfTUJTVFJfSCAxIiA+PmNvbmZkZWZzLmgK Ky0KKy1maQorLQorLQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1icmxlbiIgImFj X2N2X2Z1bmNfbWJybGVuIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19tYnJsZW4iID0geHllcwor LXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX01CUkxFTiAxIiA+PmNvbmZk ZWZzLmgKKy0KKy1maQorLQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1ic2Nhc2Vj bXAiICJhY19jdl9mdW5jX21ic2Nhc2VjbXAiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX21ic2Nh c2VjbXAiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX01C U0NBU0VDTVAgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy1hY19mbl9jX2NoZWNrX2Z1bmMg IiRMSU5FTk8iICJtYnNjbXAiICJhY19jdl9mdW5jX21ic2NtcCIKKy1pZiB0ZXN0ICJ4JGFjX2N2 X2Z1bmNfbWJzY21wIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUg SEFWRV9NQlNDTVAgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy1hY19mbl9jX2NoZWNrX2Z1 bmMgIiRMSU5FTk8iICJtYnNuY21wIiAiYWNfY3ZfZnVuY19tYnNuY21wIgorLWlmIHRlc3QgIngk YWNfY3ZfZnVuY19tYnNuY21wIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNk ZWZpbmUgSEFWRV9NQlNOQ01QIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCistYWNfZm5fY19j aGVja19mdW5jICIkTElORU5PIiAibWJzbnJ0b3djcyIgImFjX2N2X2Z1bmNfbWJzbnJ0b3djcyIK Ky1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbWJzbnJ0b3djcyIgPSB4eWVzCistdGhlbiA6CistICBw cmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfTUJTTlJUT1dDUyAxIiA+PmNvbmZkZWZzLmgKKy0K Ky1maQorLQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1ic3J0b3djcyIgImFjX2N2 X2Z1bmNfbWJzcnRvd2NzIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19tYnNydG93Y3MiID0geHll cworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX01CU1JUT1dDUyAxIiA+ PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIg Im1ic2NociIgImFjX2N2X2Z1bmNfbWJzY2hyIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19tYnNj aHIiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX01CU0NI UiAxIiA+PmNvbmZkZWZzLmgKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2FzZSAiICRM SUJPQkpTICIgaW4KKy0gICoiIG1ic2Noci4kYWNfb2JqZXh0ICIqICkgOzsKKy0gICopIExJQk9C SlM9IiRMSUJPQkpTIG1ic2Noci4kYWNfb2JqZXh0IgorLSA7OworLWVzYWMKKy0gOzsKKy1lc2Fj CistZmkKKy0KKy0KKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJ3Y3J0b21iIiAiYWNf Y3ZfZnVuY193Y3J0b21iIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY193Y3J0b21iIiA9IHh5ZXMK Ky10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9XQ1JUT01CIDEiID4+Y29u ZmRlZnMuaAorLQorLWZpCistCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAid2NzY29s bCIgImFjX2N2X2Z1bmNfd2NzY29sbCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfd2NzY29sbCIg PSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfV0NTQ09MTCAx IiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIg Indjc2R1cCIgImFjX2N2X2Z1bmNfd2NzZHVwIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY193Y3Nk dXAiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1dDU0RV UCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVO TyIgIndjd2lkdGgiICJhY19jdl9mdW5jX3djd2lkdGgiCistaWYgdGVzdCAieCRhY19jdl9mdW5j X3djd2lkdGgiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZF X1dDV0lEVEggMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy1hY19mbl9jX2NoZWNrX2Z1bmMg IiRMSU5FTk8iICJ3Y3R5cGUiICJhY19jdl9mdW5jX3djdHlwZSIKKy1pZiB0ZXN0ICJ4JGFjX2N2 X2Z1bmNfd2N0eXBlIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUg SEFWRV9XQ1RZUEUgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy1hY19mbl9jX2NoZWNrX2Z1 bmMgIiRMSU5FTk8iICJ3Y3NucnRvbWJzIiAiYWNfY3ZfZnVuY193Y3NucnRvbWJzIgorLWlmIHRl c3QgIngkYWNfY3ZfZnVuY193Y3NucnRvbWJzIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAi JXNcbiIgIiNkZWZpbmUgSEFWRV9XQ1NOUlRPTUJTIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCist CistCistYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAid2Nzd2lkdGgiICJhY19jdl9mdW5j X3djc3dpZHRoIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY193Y3N3aWR0aCIgPSB4eWVzCistdGhl biA6CistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfV0NTV0lEVEggMSIgPj5jb25mZGVm cy5oCistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhc2UgIiAkTElCT0JKUyAiIGluCist ICAqIiB3Y3N3aWR0aC4kYWNfb2JqZXh0ICIqICkgOzsKKy0gICopIExJQk9CSlM9IiRMSUJPQkpT IHdjc3dpZHRoLiRhY19vYmpleHQiCistIDs7CistZXNhYworLSA7OworLWVzYWMKKy1maQorLQor LQorLQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo ZWNraW5nIHdoZXRoZXIgbWJydG93YyBhbmQgbWJzdGF0ZV90IGFyZSBwcm9wZXJseSBkZWNsYXJl ZCIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyB3aGV0aGVyIG1icnRvd2MgYW5kIG1ic3RhdGVf dCBhcmUgcHJvcGVybHkgZGVjbGFyZWQuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfZnVu Y19tYnJ0b3djK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxz ZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0 LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistI2luY2x1ZGUgPHdjaGFyLmg+Cist aW50CistbWFpbiAodm9pZCkKKy17Cistd2NoYXJfdCB3YzsKKy0JICAgICAgY2hhciBjb25zdCBz W10gPSAiIjsKKy0JICAgICAgc2l6ZV90IG4gPSAxOworLQkgICAgICBtYnN0YXRlX3Qgc3RhdGU7 CistCSAgICAgIHJldHVybiAhIChzaXplb2Ygc3RhdGUgJiYgKG1icnRvd2MpICgmd2MsIHMsIG4s ICZzdGF0ZSkpOworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2Nf dHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19jdl9mdW5jX21icnRvd2M9eWVzCist ZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2N2X2Z1bmNfbWJydG93Yz1ubyA7OworLWVzYWMK Ky1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl c3QuYmVhbSBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0IDs7Cist ZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJGFjX2N2X2Z1bmNfbWJydG93YyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2 X2Z1bmNfbWJydG93YyIgPiY2OyB9CistICBpZiB0ZXN0ICRhY19jdl9mdW5jX21icnRvd2MgPSB5 ZXM7IHRoZW4KKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfTUJSVE9XQyAxIiA+PmNv bmZkZWZzLmgKKy0KKy0gIGZpCistCistaWYgdGVzdCAkYWNfY3ZfZnVuY19tYnJ0b3djID0geWVz OyB0aGVuCistCXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9NQlNUQVRFX1QgMSIgPj5jb25m ZGVmcy5oCistCistZmkKKy0KKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJpc3dsb3dl ciIgImFjX2N2X2Z1bmNfaXN3bG93ZXIiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX2lzd2xvd2Vy IiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9JU1dMT1dF UiAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIg Imlzd3VwcGVyIiAiYWNfY3ZfZnVuY19pc3d1cHBlciIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNf aXN3dXBwZXIiID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZF X0lTV1VQUEVSIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistYWNfZm5fY19jaGVja19mdW5jICIk TElORU5PIiAidG93bG93ZXIiICJhY19jdl9mdW5jX3Rvd2xvd2VyIgorLWlmIHRlc3QgIngkYWNf Y3ZfZnVuY190b3dsb3dlciIgPSB4eWVzCistdGhlbiA6CistICBwcmludGYgIiVzXG4iICIjZGVm aW5lIEhBVkVfVE9XTE9XRVIgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNr X2Z1bmMgIiRMSU5FTk8iICJ0b3d1cHBlciIgImFjX2N2X2Z1bmNfdG93dXBwZXIiCistaWYgdGVz dCAieCRhY19jdl9mdW5jX3Rvd3VwcGVyIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNc biIgIiNkZWZpbmUgSEFWRV9UT1dVUFBFUiAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2Zu X2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImlzd2N0eXBlIiAiYWNfY3ZfZnVuY19pc3djdHlwZSIK Ky1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfaXN3Y3R5cGUiID0geHllcworLXRoZW4gOgorLSAgcHJp bnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0lTV0NUWVBFIDEiID4+Y29uZmRlZnMuaAorLQorLWZp CistCistCistCistCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGNoZWNraW5nIGZvciB3Y2hhcl90IGluIHdjaGFyLmgiID4mNQorLXByaW50ZiAlcyAiY2hl Y2tpbmcgZm9yIHdjaGFyX3QgaW4gd2NoYXIuaC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHtiYXNo X2N2X3R5cGVfd2NoYXJfdCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4m NgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5j b25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLSNpbmNsdWRlIDx3 Y2hhci5oPgorLWludAorLW1haW4gKHZvaWQpCisteworLQorLSAgICAgICAgd2NoYXJfdCBmb287 CistICAgICAgICBmb28gPSAwOworLQorLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgor LWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6CistICBiYXNoX2N2X3R5 cGVfd2NoYXJfdD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYmFzaF9jdl90eXBlX3dj aGFyX3Q9bm8KKy0gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25m dGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMK Ky1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6ICRiYXNoX2N2X3R5cGVfd2NoYXJfdCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGJhc2hfY3Zf dHlwZV93Y2hhcl90IiA+JjY7IH0KKy1pZiB0ZXN0ICRiYXNoX2N2X3R5cGVfd2NoYXJfdCA9IHll czsgdGhlbgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9XQ0hBUl9UIDEiID4+Y29u ZmRlZnMuaAorLQorLWZpCistCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIGZvciB3Y3R5cGVfdCBpbiB3Y3R5cGUuaCIgPiY1CistcHJpbnRm ICVzICJjaGVja2luZyBmb3Igd2N0eXBlX3QgaW4gd2N0eXBlLmguLi4gIiA+JjY7IH0KKy1pZiB0 ZXN0ICR7YmFzaF9jdl90eXBlX3djdHlwZV90K3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihj YWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCist I2luY2x1ZGUgPHdjdHlwZS5oPgorLWludAorLW1haW4gKHZvaWQpCisteworLQorLSAgICAgICAg d2N0eXBlX3QgZm9vOworLSAgICAgICAgZm9vID0gMDsKKy0KKy0gIDsKKy0gIHJldHVybiAwOwor LX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRoZW4gOgor LSAgYmFzaF9jdl90eXBlX3djdHlwZV90PXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBi YXNoX2N2X3R5cGVfd2N0eXBlX3Q9bm8KKy0gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFj X2V4dCA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6ICRiYXNoX2N2X3R5cGVfd2N0eXBlX3QiID4mNQorLXByaW50ZiAi JXNcbiIgIiRiYXNoX2N2X3R5cGVfd2N0eXBlX3QiID4mNjsgfQorLWlmIHRlc3QgJGJhc2hfY3Zf dHlwZV93Y3R5cGVfdCA9IHllczsgdGhlbgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFW RV9XQ1RZUEVfVCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLXsgcHJpbnRmICIlc1xuIiAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd2ludF90IGluIHdjdHlw ZS5oIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciB3aW50X3QgaW4gd2N0eXBlLmguLi4g IiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl90eXBlX3dpbnRfdCt5fQorLXRoZW4gOgorLSAg cHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQg Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZz LmguICAqLworLQorLSNpbmNsdWRlIDx3Y3R5cGUuaD4KKy1pbnQKKy1tYWluICh2b2lkKQorLXsK Ky0KKy0gICAgICAgIHdpbnRfdCBmb287CistICAgICAgICBmb28gPSAwOworLQorLSAgOworLSAg cmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8i CistdGhlbiA6CistICBiYXNoX2N2X3R5cGVfd2ludF90PXllcworLWVsc2UgY2FzZSBlIGluICMo CistICBlKSBiYXNoX2N2X3R5cGVfd2ludF90PW5vCistIDs7CistZXNhYworLWZpCistcm0gLWYg Y29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0 ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl90eXBlX3dpbnRfdCIgPiY1CistcHJp bnRmICIlc1xuIiAiJGJhc2hfY3ZfdHlwZV93aW50X3QiID4mNjsgfQorLWlmIHRlc3QgJGJhc2hf Y3ZfdHlwZV93aW50X3QgPSB5ZXM7IHRoZW4KKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhB VkVfV0lOVF9UIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCisteyBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3Y3dpZHRoIGJyb2tlbiB3 aXRoIHVuaWNvZGUgY29tYmluaW5nIGNoYXJhY3RlcnMiID4mNQorLXByaW50ZiAlcyAiY2hlY2tp bmcgZm9yIHdjd2lkdGggYnJva2VuIHdpdGggdW5pY29kZSBjb21iaW5pbmcgY2hhcmFjdGVycy4u LiAiID4mNjsgfQorLWlmIHRlc3QgJHtiYXNoX2N2X3djd2lkdGhfYnJva2VuK3l9CistdGhlbiA6 CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUp IGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzCistdGhlbiA6CistICBiYXNoX2N2X3dj d2lkdGhfYnJva2VuPW5vCistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVm cy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICov CistCistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVk ZSA8c3RkaW8uaD4KKy0KKy0jaW5jbHVkZSA8bG9jYWxlLmg+CistI2luY2x1ZGUgPHdjaGFyLmg+ CistCistaW50CistbWFpbihpbnQgYywgY2hhciAqKnYpCisteworLSAgICAgICAgaW50ICAgICB3 OworLQorLSAgICAgICAgc2V0bG9jYWxlKExDX0FMTCwgImVuX1VTLlVURi04Iik7CistICAgICAg ICB3ID0gd2N3aWR0aCAoMHgwMzAxKTsKKy0JaWYgKHcgIT0gMCkKKy0JICBleGl0ICgwKTsKKy0J dyA9IHdjd2lkdGggKDB4MjAwYik7CistICAgICAgICBleGl0ICh3ID09IDApOyAgLyogZXhpdCAw IGlmIHdjd2lkdGggYnJva2VuICovCistfQorLQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X3J1 biAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGJhc2hfY3Zfd2N3aWR0aF9icm9rZW49eWVzCistZWxz ZSBjYXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3Zfd2N3aWR0aF9icm9rZW49bm8gOzsKKy1lc2Fj CistZmkKKy1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0 IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCistICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJl YW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLSA7OworLWVzYWMKKy1maQorLXsg cHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRiYXNo X2N2X3djd2lkdGhfYnJva2VuIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYmFzaF9jdl93Y3dpZHRo X2Jyb2tlbiIgPiY2OyB9CistaWYgdGVzdCAiJGJhc2hfY3Zfd2N3aWR0aF9icm9rZW4iID0geWVz OyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBXQ1dJRFRIX0JST0tFTiAxIiA+PmNv bmZkZWZzLmgKKy0KKy1maQorLQorLWlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiA9IHllczsg dGhlbgorLQlPTERMSUJTPSIkTElCUyIKKy0JTElCUz0iJExJQlMgJExJQklOVEwgJExJQklDT05W IgorLQlhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJsb2NhbGVfY2hhcnNldCIgImFjX2N2 X2Z1bmNfbG9jYWxlX2NoYXJzZXQiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX2xvY2FsZV9jaGFy c2V0IiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9MT0NB TEVfQ0hBUlNFVCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLQlMSUJTPSIkT0xETElCUyIK Ky1maQorLQorLSMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRo ZSBIUCBDIENvbXBpbGVyCistIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwg d2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cworLSMgZGVjbGFyYXRpb25zIGxpa2UgJ2ludCBhM1tb KHNpemVvZiAodW5zaWduZWQgY2hhcikpID49IDBdXTsnLgorLSMgVGhpcyBidWcgaXMgSFAgU1Ig bnVtYmVyIDg2MDYyMjMzNjQuCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGNoZWNraW5nIHNpemUgb2Ygd2NoYXJfdCIgPiY1CistcHJpbnRmICVzICJjaGVj a2luZyBzaXplIG9mIHdjaGFyX3QuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3Zfc2l6ZW9m X3djaGFyX3QreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNl IGNhc2UgZSBpbiAjKAorLSAgZSkgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihs b25nIGludCkgKHNpemVvZiAod2NoYXJfdCkpIiAiYWNfY3Zfc2l6ZW9mX3djaGFyX3QiICAgICAg ICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistdGhlbiA6CistCistZWxzZSBjYXNlIGUgaW4gIygK Ky0gIGUpIGlmIHRlc3QgIiRhY19jdl90eXBlX3djaGFyX3QiID0geWVzOyB0aGVuCistICAgICB7 IHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4g JyRhY19wd2QnOiIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiBlcnJvcjogaW4gJyRhY19w d2QnOiIgPiYyO30KKy1hc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mICh3Y2hh cl90KQorLVNlZSAnY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0K Ky0gICBlbHNlCistICAgICBhY19jdl9zaXplb2Zfd2NoYXJfdD0wCistICAgZmkgOzsKKy1lc2Fj CistZmkKKy0gOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2l6ZW9mX3djaGFyX3QiID4mNQorLXByaW50 ZiAiJXNcbiIgIiRhY19jdl9zaXplb2Zfd2NoYXJfdCIgPiY2OyB9CistCistCistCistcHJpbnRm ICIlc1xuIiAiI2RlZmluZSBTSVpFT0ZfV0NIQVJfVCAkYWNfY3Zfc2l6ZW9mX3djaGFyX3QiID4+ Y29uZmRlZnMuaAorLQorLQorLQorLQorLQorLWlmIHRlc3QgIiRvcHRfc3RhdGljX2xpbmsiICE9 IHllczsgdGhlbgorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcg Zm9yIGRsb3BlbiBpbiAtbGRsLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X2xpYl9kbF9k bG9wZW4reX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNh c2UgZSBpbiAjKAorLSAgZSkgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworLUxJQlM9Ii1s ZGwgICRMSUJTIgorLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQK Ky0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCistLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5h bCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCistICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQg bWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCistICAgYnVpbHRpbiBhbmQgdGhl biBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LgorLSAgIFRoZSAnZXh0 ZXJuICJDIicgaXMgZm9yIGJ1aWxkcyBieSBDKysgY29tcGlsZXJzOworLSAgIGFsdGhvdWdoIHRo aXMgaXMgbm90IGdlbmVyYWxseSBzdXBwb3J0ZWQgaW4gQyBjb2RlIHN1cHBvcnRpbmcgaXQgaGVy ZQorLSAgIGhhcyBsaXR0bGUgY29zdCBhbmQgc29tZSBwcmFjdGljYWwgYmVuZWZpdCAoc3IgMTEw NTMyKS4gICovCistI2lmZGVmIF9fY3BsdXNwbHVzCistZXh0ZXJuICJDIgorLSNlbmRpZgorLWNo YXIgZGxvcGVuICh2b2lkKTsKKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1yZXR1cm4gZGxvcGVu ICgpOworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xp bmsgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19jdl9saWJfZGxfZGxvcGVuPXllcworLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSBhY19jdl9saWJfZGxfZGxvcGVuPW5vIDs7CistZXNhYworLWZp Cistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5i ZWFtIFwKKy0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1MSUJTPSRh Y19jaGVja19saWJfc2F2ZV9MSUJTIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9kbF9kbG9wZW4i ID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19jdl9saWJfZGxfZGxvcGVuIiA+JjY7IH0KKy1pZiB0 ZXN0ICJ4JGFjX2N2X2xpYl9kbF9kbG9wZW4iID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIl c1xuIiAiI2RlZmluZSBIQVZFX0xJQkRMIDEiID4+Y29uZmRlZnMuaAorLQorLSAgTElCUz0iLWxk bCAkTElCUyIKKy0KKy1maQorLQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImRsb3Bl biIgImFjX2N2X2Z1bmNfZGxvcGVuIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19kbG9wZW4iID0g eHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0RMT1BFTiAxIiA+ PmNvbmZkZWZzLmgKKy0KKy1maQorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImRsY2xv c2UiICJhY19jdl9mdW5jX2RsY2xvc2UiCistaWYgdGVzdCAieCRhY19jdl9mdW5jX2RsY2xvc2Ui ID0geHllcworLXRoZW4gOgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0RMQ0xPU0Ug MSIgPj5jb25mZGVmcy5oCistCistZmkKKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJk bHN5bSIgImFjX2N2X2Z1bmNfZGxzeW0iCistaWYgdGVzdCAieCRhY19jdl9mdW5jX2Rsc3ltIiA9 IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9ETFNZTSAxIiA+ PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLWZpCistCistaWYgdGVzdCAiJGFjX2N2X2Z1bmNfaW5l dF9hdG9uIiAhPSAneWVzJzsgdGhlbgorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgaW5ldF9hdG9uIiA+JjUKKy1wcmludGYgJXMg ImNoZWNraW5nIGZvciBpbmV0X2F0b24uLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl9m dW5jX2luZXRfYXRvbit5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgor LWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m dGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLSNpbmNsdWRlIDxzeXMv dHlwZXMuaD4KKy0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorLSNpbmNsdWRlIDxhcnBhL2luZXQu aD4KKy1zdHJ1Y3QgaW5fYWRkciBhcDsKKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy0gaW5ldF9h dG9uKCIxMjcuMC4wLjEiLCAmYXApOworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgor LWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6CistICBiYXNoX2N2X2Z1bmNf aW5ldF9hdG9uPXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBiYXNoX2N2X2Z1bmNfaW5l dF9hdG9uPW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRl c3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNv bmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl9mdW5jX2luZXRfYXRvbiIgPiY1 CistcHJpbnRmICIlc1xuIiAiJGJhc2hfY3ZfZnVuY19pbmV0X2F0b24iID4mNjsgfQorLWlmIHRl c3QgJGJhc2hfY3ZfZnVuY19pbmV0X2F0b24gPSB5ZXM7IHRoZW4KKy0gIHByaW50ZiAiJXNcbiIg IiNkZWZpbmUgSEFWRV9JTkVUX0FUT04gMSIgPj5jb25mZGVmcy5oCistCistZWxzZQorLSAgY2Fz ZSAiICRMSUJPQkpTICIgaW4KKy0gICoiIGluZXRfYXRvbi4kYWNfb2JqZXh0ICIqICkgOzsKKy0g ICopIExJQk9CSlM9IiRMSUJPQkpTIGluZXRfYXRvbi4kYWNfb2JqZXh0IgorLSA7OworLWVzYWMK Ky0KKy1maQorLQorLWZpCistCistY2FzZSAiJGhvc3Rfb3MiIGluCistaXJpeDQqKQl7IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdldHB3 ZW50IGluIC1sc3VuIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBnZXRwd2VudCBpbiAt bHN1bi4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9saWJfc3VuX2dldHB3ZW50K3l9Cist dGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygK Ky0gIGUpIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKKy1MSUJTPSItbHN1biAgJExJQlMi CistY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBj b25mZGVmcy5oLiAgKi8KKy0KKy0vKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlw ZSB0byBhdm9pZCBhbiBlcnJvci4KKy0gICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRj aCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKy0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1 bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuCistICAgVGhlICdleHRlcm4gIkMiJyBp cyBmb3IgYnVpbGRzIGJ5IEMrKyBjb21waWxlcnM7CistICAgYWx0aG91Z2ggdGhpcyBpcyBub3Qg Z2VuZXJhbGx5IHN1cHBvcnRlZCBpbiBDIGNvZGUgc3VwcG9ydGluZyBpdCBoZXJlCistICAgaGFz IGxpdHRsZSBjb3N0IGFuZCBzb21lIHByYWN0aWNhbCBiZW5lZml0IChzciAxMTA1MzIpLiAgKi8K Ky0jaWZkZWYgX19jcGx1c3BsdXMKKy1leHRlcm4gIkMiCistI2VuZGlmCistY2hhciBnZXRwd2Vu dCAodm9pZCk7CistaW50CistbWFpbiAodm9pZCkKKy17CistcmV0dXJuIGdldHB3ZW50ICgpOwor LSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRM SU5FTk8iCistdGhlbiA6CistICBhY19jdl9saWJfc3VuX2dldHB3ZW50PXllcworLWVsc2UgY2Fz ZSBlIGluICMoCistICBlKSBhY19jdl9saWJfc3VuX2dldHB3ZW50PW5vIDs7CistZXNhYworLWZp Cistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5i ZWFtIFwKKy0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1MSUJTPSRh Y19jaGVja19saWJfc2F2ZV9MSUJTIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9zdW5fZ2V0cHdl bnQiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19jdl9saWJfc3VuX2dldHB3ZW50IiA+JjY7IH0K Ky1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9zdW5fZ2V0cHdlbnQiID0geHllcworLXRoZW4gOgorLSAg cHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0xJQlNVTiAxIiA+PmNvbmZkZWZzLmgKKy0KKy0g IExJQlM9Ii1sc3VuICRMSUJTIgorLQorLWZpCistIDs7CistZXNhYworLQorLWlmIHRlc3QgIiRh Y19jdl9mdW5jX2dldHBlZXJuYW1lIiA9IG5vOyB0aGVuCistCistaWYgdGVzdCAiWCRiYXNoX2N2 X2hhdmVfc29ja2xpYiIgPSAiWCI7IHRoZW4KKy1fYmFzaF9uZWVkbXNnPQorLWVsc2UKKy17IHBy aW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHNv Y2tldCBsaWJyYXJ5IiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBzb2NrZXQgbGlicmFy eS4uLiAiID4mNjsgfQorLV9iYXNoX25lZWRtc2c9eWVzCistZmkKKy1pZiB0ZXN0ICR7YmFzaF9j dl9oYXZlX3NvY2tsaWIreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYK Ky1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBnZXRwZWVybmFtZSBpbiAtbHNvY2tldCIgPiY1 CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgZ2V0cGVlcm5hbWUgaW4gLWxzb2NrZXQuLi4gIiA+ JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfbGliX3NvY2tldF9nZXRwZWVybmFtZSt5fQorLXRoZW4g OgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCistTElCUz0iLWxzb2NrZXQgLWxuc2wgJExJ QlMiCistY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVu ZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0vKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3Rv dHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKy0gICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBt YXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKy0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBh cmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuCistICAgVGhlICdleHRlcm4gIkMi JyBpcyBmb3IgYnVpbGRzIGJ5IEMrKyBjb21waWxlcnM7CistICAgYWx0aG91Z2ggdGhpcyBpcyBu b3QgZ2VuZXJhbGx5IHN1cHBvcnRlZCBpbiBDIGNvZGUgc3VwcG9ydGluZyBpdCBoZXJlCistICAg aGFzIGxpdHRsZSBjb3N0IGFuZCBzb21lIHByYWN0aWNhbCBiZW5lZml0IChzciAxMTA1MzIpLiAg Ki8KKy0jaWZkZWYgX19jcGx1c3BsdXMKKy1leHRlcm4gIkMiCistI2VuZGlmCistY2hhciBnZXRw ZWVybmFtZSAodm9pZCk7CistaW50CistbWFpbiAodm9pZCkKKy17CistcmV0dXJuIGdldHBlZXJu YW1lICgpOworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5 X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19jdl9saWJfc29ja2V0X2dldHBlZXJuYW1l PXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl9saWJfc29ja2V0X2dldHBlZXJu YW1lPW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3Qu JGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0 ZXN0LiRhY19leHQKKy1MSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTIDs7CistZXNhYworLWZp CisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JGFjX2N2X2xpYl9zb2NrZXRfZ2V0cGVlcm5hbWUiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19j dl9saWJfc29ja2V0X2dldHBlZXJuYW1lIiA+JjY7IH0KKy1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9z b2NrZXRfZ2V0cGVlcm5hbWUiID0geHllcworLXRoZW4gOgorLSAgYmFzaF9jdl9oYXZlX3NvY2ts aWI9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3ZfaGF2ZV9zb2NrbGliPW5v IDs7CistZXNhYworLWZpCistIDs7CistZXNhYworLWZpCistCistaWYgdGVzdCAiWCRfYmFzaF9u ZWVkbXNnIiA9IFh5ZXM7IHRoZW4KKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRiYXNoX2N2X2hhdmVfc29ja2xpYiIgPiY1CistcHJpbnRm ICIlc1xuIiAiJGJhc2hfY3ZfaGF2ZV9zb2NrbGliIiA+JjY7IH0KKy0gIF9iYXNoX25lZWRtc2c9 CistZmkKKy1pZiB0ZXN0ICRiYXNoX2N2X2hhdmVfc29ja2xpYiA9IHllczsgdGhlbgorLSAgIyBj aGVjayBmb3IgbGlibnNsLCBhZGQgaXQgdG8gTElCUyBpZiBwcmVzZW50CistICBpZiB0ZXN0ICJY JGJhc2hfY3ZfaGF2ZV9saWJuc2wiID0gIlgiOyB0aGVuCistICAgIF9iYXNoX25lZWRtc2c9Cist ICBlbHNlCistICAgIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyBmb3IgbGlibnNsIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBsaWJu c2wuLi4gIiA+JjY7IH0KKy0gICAgX2Jhc2hfbmVlZG1zZz15ZXMKKy0gIGZpCistICBpZiB0ZXN0 ICR7YmFzaF9jdl9oYXZlX2xpYm5zbCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVk KSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSB7IHByaW50ZiAiJXNcbiIgIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHRfb3BlbiBpbiAtbG5zbCIgPiY1 CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgdF9vcGVuIGluIC1sbnNsLi4uICIgPiY2OyB9Cist aWYgdGVzdCAke2FjX2N2X2xpYl9uc2xfdF9vcGVuK3l9CistdGhlbiA6CistICBwcmludGYgJXMg IihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2NoZWNrX2xpYl9z YXZlX0xJQlM9JExJQlMKKy1MSUJTPSItbG5zbCAgJExJQlMiCistY2F0IGNvbmZkZWZzLmggLSA8 PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0v KiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4K Ky0gICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2Yg YSBHQ0MKKy0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQg c3RpbGwgYXBwbHkuCistICAgVGhlICdleHRlcm4gIkMiJyBpcyBmb3IgYnVpbGRzIGJ5IEMrKyBj b21waWxlcnM7CistICAgYWx0aG91Z2ggdGhpcyBpcyBub3QgZ2VuZXJhbGx5IHN1cHBvcnRlZCBp biBDIGNvZGUgc3VwcG9ydGluZyBpdCBoZXJlCistICAgaGFzIGxpdHRsZSBjb3N0IGFuZCBzb21l IHByYWN0aWNhbCBiZW5lZml0IChzciAxMTA1MzIpLiAgKi8KKy0jaWZkZWYgX19jcGx1c3BsdXMK Ky1leHRlcm4gIkMiCistI2VuZGlmCistY2hhciB0X29wZW4gKHZvaWQpOworLWludAorLW1haW4g KHZvaWQpCisteworLXJldHVybiB0X29wZW4gKCk7CistICA7CistICByZXR1cm4gMDsKKy19Cist X0FDRU9GCistaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGFjX2N2 X2xpYl9uc2xfdF9vcGVuPXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl9saWJf bnNsX3Rfb3Blbj1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNv bmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4 dCBjb25mdGVzdC4kYWNfZXh0CistTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUyA7OworLWVz YWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRhY19jdl9saWJfbnNsX3Rfb3BlbiIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2 X2xpYl9uc2xfdF9vcGVuIiA+JjY7IH0KKy1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9uc2xfdF9vcGVu IiA9IHh5ZXMKKy10aGVuIDoKKy0gIGJhc2hfY3ZfaGF2ZV9saWJuc2w9eWVzCistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIGJhc2hfY3ZfaGF2ZV9saWJuc2w9bm8gOzsKKy1lc2FjCistZmkKKy0g OzsKKy1lc2FjCistZmkKKy0KKy0gIGlmIHRlc3QgIlgkX2Jhc2hfbmVlZG1zZyIgPSBYeWVzOyB0 aGVuCistICAgIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRiYXNoX2N2X2hhdmVfbGlibnNsIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYmFzaF9j dl9oYXZlX2xpYm5zbCIgPiY2OyB9CistICAgIF9iYXNoX25lZWRtc2c9CistICBmaQorLSAgaWYg dGVzdCAkYmFzaF9jdl9oYXZlX2xpYm5zbCA9IHllczsgdGhlbgorLSAgICBMSUJTPSItbHNvY2tl dCAtbG5zbCAkTElCUyIKKy0gIGVsc2UKKy0gICAgTElCUz0iLWxzb2NrZXQgJExJQlMiCistICBm aQorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0xJQlNPQ0tFVCAxIiA+PmNvbmZkZWZz LmgKKy0KKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9HRVRQRUVSTkFNRSAxIiA+PmNv bmZkZWZzLmgKKy0KKy1maQorLQorLWZpCistaWYgdGVzdCAiJGFjX2N2X2Z1bmNfZ2V0aG9zdGJ5 bmFtZSIgPSBubzsgdGhlbgorLQlpZiB0ZXN0ICJYJGJhc2hfY3ZfaGF2ZV9nZXRob3N0YnluYW1l IiA9ICJYIjsgdGhlbgorLV9iYXNoX25lZWRtc2c9eWVzCistZWxzZQorLXsgcHJpbnRmICIlc1xu IiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ2V0aG9zdGJ5bmFt ZSBpbiBzb2NrZXQgbGlicmFyeSIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgZ2V0aG9z dGJ5bmFtZSBpbiBzb2NrZXQgbGlicmFyeS4uLiAiID4mNjsgfQorLV9iYXNoX25lZWRtc2c9Cist ZmkKKy1pZiB0ZXN0ICR7YmFzaF9jdl9oYXZlX2dldGhvc3RieW5hbWUreX0KKy10aGVuIDoKKy0g IHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVm cy5oLiAgKi8KKy0KKy0jaW5jbHVkZSA8bmV0ZGIuaD4KKy0KKy1pbnQKKy1tYWluICh2b2lkKQor LXsKKy0KKy1zdHJ1Y3QgaG9zdGVudCAqaHA7CistaHAgPSBnZXRob3N0YnluYW1lKCJsb2NhbGhv c3QiKTsKKy0KKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3Ry eV9saW5rICIkTElORU5PIgorLXRoZW4gOgorLSAgYmFzaF9jdl9oYXZlX2dldGhvc3RieW5hbWU9 eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3ZfaGF2ZV9nZXRob3N0YnluYW1l PW5vCistIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3Qu JGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0 ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy0KKy1pZiB0ZXN0ICJYJF9iYXNoX25lZWRtc2ci ID0gWHllczsgdGhlbgorLSAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogY2hlY2tpbmcgZm9yIGdldGhvc3RieW5hbWUgaW4gc29ja2V0IGxpYnJhcnkiID4m NQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIGdldGhvc3RieW5hbWUgaW4gc29ja2V0IGxpYnJh cnkuLi4gIiA+JjY7IH0KKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6ICRiYXNoX2N2X2hhdmVfZ2V0aG9zdGJ5bmFtZSIgPiY1CistcHJp bnRmICIlc1xuIiAiJGJhc2hfY3ZfaGF2ZV9nZXRob3N0YnluYW1lIiA+JjY7IH0KKy1pZiB0ZXN0 ICIkYmFzaF9jdl9oYXZlX2dldGhvc3RieW5hbWUiID0geWVzOyB0aGVuCistcHJpbnRmICIlc1xu IiAiI2RlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUUgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0K Ky1maQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyB0eXBlIG9mIGFycmF5IGFyZ3VtZW50IHRvIGdldGdyb3VwcyIgPiY1CistcHJpbnRm ICVzICJjaGVja2luZyB0eXBlIG9mIGFycmF5IGFyZ3VtZW50IHRvIGdldGdyb3Vwcy4uLiAiID4m NjsgfQorLWlmIHRlc3QgJHthY19jdl90eXBlX2dldGdyb3Vwcyt5fQorLXRoZW4gOgorLSAgcHJp bnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSAjIElmIEFD X1RZUEVfVUlEX1Qgc2F5cyB0aGVyZSBpc24ndCBhbnkgZ2lkX3QgdHlwZWRlZiwgdGhlbiB3ZSBj YW4gc2tpcAorLSMgZXZlcnl0aGluZyBiZWxvdy4KKy1pZiB0ZXN0ICRhY19jdl90eXBlX2dpZF90 ID0gbm8KKy10aGVuIDoKKy0gIGFjX2N2X3R5cGVfZ2V0Z3JvdXBzPWludAorLWVsc2UgY2FzZSBl IGluICMoCistICBlKSAjIFRlc3QgcHJvZ3JhbXMgYmVsb3cgcmVseSBvbiBzdHJpY3QgdHlwZSBj aGVja2luZyBvZiBleHRlcm4gZGVjbGFyYXRpb25zOgorLSAgIyAnZXh0ZXJuIGludCBnZXRncm91 cHMoaW50LCBpbnQgKik7IGV4dGVybiBpbnQgZ2V0Z3JvdXBzKGludCwgcGlkX3QgKik7JworLSAg IyBpcyB2YWxpZCBpbiBDODkgaWYgYW5kIG9ubHkgaWYgcGlkX3QgaXMgYSB0eXBlZGVmIGZvciBp bnQuICBVbmxpa2UKKy0gICMgYW55dGhpbmcgaW52b2x2aW5nIGVpdGhlciBhbiBhc3NpZ25tZW50 IG9yIGEgZnVuY3Rpb24gY2FsbCwgY29tcGlsZXJzCistICAjIHRlbmQgdG8gbWFrZSB0aGlzIGtp bmQgb2YgdHlwZSBtaXNtYXRjaCBhIGhhcmQgZXJyb3IsIG5vdCBqdXN0IGFuCistICAjICJpbmNv bXBhdGlibGUgcG9pbnRlciB0eXBlcyIgd2FybmluZy4KKy0gIGNhdCBjb25mZGVmcy5oIC0gPDxf QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistJGFjX2lu Y2x1ZGVzX2RlZmF1bHQKKy1leHRlcm4gaW50IGdldGdyb3VwcyhpbnQsIGdpZF90ICopOworLWlu dAorLW1haW4gKHZvaWQpCisteworLXJldHVybiAhKGdldGdyb3VwcygwLCAwKSA+PSAwKTsKKy0g IDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIk TElORU5PIgorLXRoZW4gOgorLSAgYWNfZ2V0Z3JvdXBzX2dpZGFycmF5PXllcworLWVsc2UgY2Fz ZSBlIGluICMoCistICBlKSBhY19nZXRncm91cHNfZ2lkYXJyYXk9bm8gOzsKKy1lc2FjCistZmkK Ky1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJl YW0gY29uZnRlc3QuJGFjX2V4dAorLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRl c3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0kYWNfaW5jbHVkZXNfZGVmYXVs dAorLWV4dGVybiBpbnQgZ2V0Z3JvdXBzKGludCwgaW50ICopOworLWludAorLW1haW4gKHZvaWQp CisteworLXJldHVybiAhKGdldGdyb3VwcygwLCAwKSA+PSAwKTsKKy0gIDsKKy0gIHJldHVybiAw OworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRoZW4g OgorLSAgYWNfZ2V0Z3JvdXBzX2ludGFycmF5PXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBhY19nZXRncm91cHNfaW50YXJyYXk9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFj X2V4dAorLQorLSAgY2FzZSBpbnQ6JGFjX2dldGdyb3Vwc19pbnRhcnJheSxnaWQ6JGFjX2dldGdy b3Vwc19naWRhcnJheSBpbiAjKAorLSAgaW50OnllcyxnaWQ6bm8pIDoKKy0gICAgYWNfY3ZfdHlw ZV9nZXRncm91cHM9aW50IDs7ICMoCistICBpbnQ6bm8sZ2lkOnllcykgOgorLSAgICBhY19jdl90 eXBlX2dldGdyb3Vwcz1naWRfdCA7OyAjKAorLSAgaW50OnllcyxnaWQ6eWVzKSA6CistCistICAg ICAgIyBCb3RoIHByb2dyYW1zIGNvbXBpbGVkIC0gdGhpcyBtZWFucyAqZWl0aGVyKiB0aGF0IGdl dGdyb3VwcworLSAgICAgICMgd2FzIGRlY2xhcmVkIHdpdGggbm8gcHJvdG90eXBlLCBpbiB3aGlj aCBjYXNlIHdlIHNob3VsZCB1c2UgaW50LAorLSAgICAgICMgb3IgdGhhdCBpdCB3YXMgZGVjbGFy ZWQgcHJvdG90eXBlZCBidXQgZ2lkX3QgaXMgYSB0eXBlZGVmIGZvciBpbnQsCistICAgICAgIyBp biB3aGljaCBjYXNlIHdlIHNob3VsZCB1c2UgZ2lkX3QuICBEaXN0aW5ndWlzaCB0aGUgdHdvIGNh c2VzCistICAgICAgIyBieSB0ZXN0aW5nIGlmIHRoZSBjb21waWxlciBjYXRjaGVzIGEgYmxhdGFu dGx5IGluY29ycmVjdCBmdW5jdGlvbgorLSAgICAgICMgc2lnbmF0dXJlIGZvciBnZXRncm91cHMu CistICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8q IGVuZCBjb25mZGVmcy5oLiAgKi8KKy0kYWNfaW5jbHVkZXNfZGVmYXVsdAorLWV4dGVybiBpbnQg Z2V0Z3JvdXBzKGludCwgZmxvYXQpOworLWludAorLW1haW4gKHZvaWQpCisteworLXJldHVybiAh KGdldGdyb3VwcygwLCAwKSA+PSAwKTsKKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YK Ky1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRoZW4gOgorLQorLSAgICAgICAg IyBDb21waWxlciBkaWQgbm90IGNhdGNoIGluY29ycmVjdCBhcmd1bWVudCBsaXN0OworLSAgICAg ICAgIyBnZXRncm91cHMgaXMgdW5wcm90b3R5cGVkLgorLSAgICAgICAgYWNfY3ZfdHlwZV9nZXRn cm91cHM9aW50CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpCistICAgICAgICAjIENvbXBp bGVyIGNhdWdodCBpbmNvcnJlY3QgYXJndW1lbnQgbGlzdDsKKy0gICAgICAgICMgZ2lkX3QgaXMg YSB0eXBlZGVmIGZvciBpbnQuCistICAgICAgICBhY19jdl90eXBlX2dldGdyb3Vwcz1naWRfdAor LSAgICAgICA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0 LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CistICAgICA7OyAjKAor LSAgKikgOgorLQorLSAgICAgICMgQm90aCBwcm9ncmFtcyBmYWlsZWQgdG8gY29tcGlsZSAtIHRo aXMgcHJvYmFibHkgbWVhbnMgZ2V0Z3JvdXBzCistICAgICAgIyB3YXNuJ3QgZGVjbGFyZWQgYXQg YWxsLiAgVXNlICdpbnQnLCBhcyB0aGlzIGlzIHByb2JhYmx5IGEgdmVyeQorLSAgICAgICMgb2xk IHN5c3RlbSB3aGVyZSB0aGUgdHlwZSBfd291bGQgaGF2ZSBiZWVuXyBpbnQuCistICAgICAgYWNf Y3ZfdHlwZV9nZXRncm91cHM9aW50CistICAgICA7OworLWVzYWMKKy0gICA7OworLWVzYWMKKy1m aQorLSA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl90eXBlX2dldGdyb3VwcyIgPiY1CistcHJpbnRmICIl c1xuIiAiJGFjX2N2X3R5cGVfZ2V0Z3JvdXBzIiA+JjY7IH0KKy1wcmludGYgIiVzXG4iICIjZGVm aW5lIEdFVEdST1VQU19UICRhY19jdl90eXBlX2dldGdyb3VwcyIgPj5jb25mZGVmcy5oCistCist CistYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAib2ZmX3QiICJhY19jdl90eXBlX29mZl90 IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl90eXBlX29mZl90IiA9 IHh5ZXMKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkKKy1wcmludGYgIiVz XG4iICIjZGVmaW5lIG9mZl90IGxvbmcgaW50IiA+PmNvbmZkZWZzLmgKKy0gOzsKKy1lc2FjCist ZmkKKy0KKy1hY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJtb2RlX3QiICJhY19jdl90eXBl X21vZGVfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV9t b2RlX3QiID0geHllcworLXRoZW4gOgorLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKQorLXBy aW50ZiAiJXNcbiIgIiNkZWZpbmUgbW9kZV90IGludCIgPj5jb25mZGVmcy5oCistIDs7CistZXNh YworLWZpCistCistYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAidWlkX3QiICJhY19jdl90 eXBlX3VpZF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl90eXBl X3VpZF90IiA9IHh5ZXMKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkKKy1w cmludGYgIiVzXG4iICIjZGVmaW5lIHVpZF90IGludCIgPj5jb25mZGVmcy5oCistIDs7CistZXNh YworLWZpCistCistYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAiZ2lkX3QiICJhY19jdl90 eXBlX2dpZF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl90eXBl X2dpZF90IiA9IHh5ZXMKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkKKy1w cmludGYgIiVzXG4iICIjZGVmaW5lIGdpZF90IGludCIgPj5jb25mZGVmcy5oCistIDs7CistZXNh YworLWZpCistCistCistICBhY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJwaWRfdCIgImFj X2N2X3R5cGVfcGlkX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdAorLSIKKy1pZiB0ZXN0ICJ4JGFj X2N2X3R5cGVfcGlkX3QiID0geHllcworLXRoZW4gOgorLQorLWVsc2UgY2FzZSBlIGluICMoCist ICBlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8K Ky0KKy0gICAgICAgICAgI2lmIGRlZmluZWQgX1dJTjY0ICYmICFkZWZpbmVkIF9fQ1lHV0lOX18K Ky0gICAgICAgICAgTExQNjQKKy0gICAgICAgICAgI2VuZGlmCistCistaW50CistbWFpbiAodm9p ZCkKKy17CistCistICA7CistICByZXR1cm4gMDsKKy19CistCistX0FDRU9GCistaWYgYWNfZm5f Y190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGFjX3BpZF90eXBlPSdpbnQnCist ZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX3BpZF90eXBlPSdfX2ludDY0JyA7OworLWVzYWMK Ky1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRl c3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBwaWRf dCAkYWNfcGlkX3R5cGUiID4+Y29uZmRlZnMuaAorLQorLSAgICAgOzsKKy1lc2FjCistZmkKKy0K Ky0KKy1hY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJzaXplX3QiICJhY19jdl90eXBlX3Np emVfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV9zaXpl X3QiID0geHllcworLXRoZW4gOgorLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKQorLXByaW50 ZiAiJXNcbiIgIiNkZWZpbmUgc2l6ZV90IHVuc2lnbmVkIGludCIgPj5jb25mZGVmcy5oCistIDs7 CistZXNhYworLWZpCistCistCistICBhY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJpbnRw dHJfdCIgImFjX2N2X3R5cGVfaW50cHRyX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKKy1pZiB0 ZXN0ICJ4JGFjX2N2X3R5cGVfaW50cHRyX3QiID0geHllcworLXRoZW4gOgorLQorLXByaW50ZiAi JXNcbiIgIiNkZWZpbmUgSEFWRV9JTlRQVFJfVCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1lbHNlIGNh c2UgZSBpbiAjKAorLSAgZSkgZm9yIGFjX3R5cGUgaW4gJ2ludCcgJ2xvbmcgaW50JyAnbG9uZyBs b25nIGludCc7IGRvCistICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0 LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistJGFjX2luY2x1ZGVzX2RlZmF1bHQK Ky1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1zdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICog IShzaXplb2YgKHZvaWQgKikgPD0gc2l6ZW9mICgkYWNfdHlwZSkpXTsKKy10ZXN0X2FycmF5IFsw XSA9IDA7CistcmV0dXJuIHRlc3RfYXJyYXkgWzBdOworLQorLSAgOworLSAgcmV0dXJuIDA7Cist fQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6Cist CistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBpbnRwdHJfdCAkYWNfdHlwZSIgPj5jb25mZGVmcy5o CistCistCSAgYWNfdHlwZT0KKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0 LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CistICAgICAgIHRlc3Qg LXogIiRhY190eXBlIiAmJiBicmVhaworLSAgICAgZG9uZSA7OworLWVzYWMKKy1maQorLQorLQor LQorLSAgYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAidWludHB0cl90IiAiYWNfY3ZfdHlw ZV91aW50cHRyX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X3R5 cGVfdWludHB0cl90IiA9IHh5ZXMKKy10aGVuIDoKKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5l IEhBVkVfVUlOVFBUUl9UIDEiID4+Y29uZmRlZnMuaAorLQorLWVsc2UgY2FzZSBlIGluICMoCist ICBlKSBmb3IgYWNfdHlwZSBpbiAndW5zaWduZWQgaW50JyAndW5zaWduZWQgbG9uZyBpbnQnIFwK Ky0JJ3Vuc2lnbmVkIGxvbmcgbG9uZyBpbnQnOyBkbworLSAgICAgICBjYXQgY29uZmRlZnMuaCAt IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLSRh Y19pbmNsdWRlc19kZWZhdWx0CistaW50CistbWFpbiAodm9pZCkKKy17Cistc3RhdGljIGludCB0 ZXN0X2FycmF5IFsxIC0gMiAqICEoc2l6ZW9mICh2b2lkICopIDw9IHNpemVvZiAoJGFjX3R5cGUp KV07CistdGVzdF9hcnJheSBbMF0gPSAwOworLXJldHVybiB0ZXN0X2FycmF5IFswXTsKKy0KKy0g IDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIk TElORU5PIgorLXRoZW4gOgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgdWludHB0cl90ICRh Y190eXBlIiA+PmNvbmZkZWZzLmgKKy0KKy0JICBhY190eXBlPQorLWZpCistcm0gLWYgY29yZSBj b25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRh Y19leHQKKy0gICAgICAgdGVzdCAteiAiJGFjX3R5cGUiICYmIGJyZWFrCistICAgICBkb25lIDs7 CistZXNhYworLWZpCistCistCistCistYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAic3Np emVfdCIgImFjX2N2X3R5cGVfc3NpemVfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRl c3QgIngkYWNfY3ZfdHlwZV9zc2l6ZV90IiA9IHh5ZXMKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2Ug ZSBpbiAjKAorLSAgZSkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIHNzaXplX3QgaW50IiA+PmNv bmZkZWZzLmgKKy0gOzsKKy1lc2FjCistZmkKKy0KKy1hY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5F Tk8iICJ0aW1lX3QiICJhY19jdl90eXBlX3RpbWVfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0Igor LWlmIHRlc3QgIngkYWNfY3ZfdHlwZV90aW1lX3QiID0geHllcworLXRoZW4gOgorLQorLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgdGltZV90IGxvbmci ID4+Y29uZmRlZnMuaAorLSA7OworLWVzYWMKKy1maQorLQorLQorLQorLQorLSAgeyBwcmludGYg IiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsb25nIGxv bmcgaW50IiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBsb25nIGxvbmcgaW50Li4uICIg PiY2OyB9CistaWYgdGVzdCAke2FjX2N2X3R5cGVfbG9uZ19sb25nX2ludCt5fQorLXRoZW4gOgor LSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBh Y19jdl90eXBlX2xvbmdfbG9uZ19pbnQ9eWVzCistICAgICAgY2FzZSAkYWNfcHJvZ19jY19zdGRj IGluCistCW5vIHwgYzg5KSA7OworLQkqKQorLQkgIGFjX2N2X3R5cGVfbG9uZ19sb25nX2ludD0k YWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmdfaW50CistCSAgaWYgdGVzdCAkYWNfY3ZfdHlw ZV9sb25nX2xvbmdfaW50ID0geWVzOyB0aGVuCistCSAgICAJICAgIAkgICAgCSAgICBpZiB0ZXN0 ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcworLXRoZW4gOgorLSAgOgorLWVsc2UgY2FzZSBlIGlu ICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Cist LyogZW5kIGNvbmZkZWZzLmguICAqLworLSNpbmNsdWRlIDxsaW1pdHMuaD4KKy0JCSAgICNpZm5k ZWYgTExPTkdfTUFYCistCQkgICAjIGRlZmluZSBIQUxGIFxcCistCQkJICAgICgxTEwgPDwgKHNp emVvZiAobG9uZyBsb25nIGludCkgKiBDSEFSX0JJVCAtIDIpKQorLQkJICAgIyBkZWZpbmUgTExP TkdfTUFYIChIQUxGIC0gMSArIEhBTEYpCistCQkgICAjZW5kaWYKKy1pbnQKKy1tYWluICh2b2lk KQorLXsKKy1sb25nIGxvbmcgaW50IG4gPSAxOworLQkJICAgaW50IGk7CistCQkgICBmb3IgKGkg PSAwOyA7IGkrKykKKy0JCSAgICAgeworLQkJICAgICAgIGxvbmcgbG9uZyBpbnQgbSA9IG4gPDwg aTsKKy0JCSAgICAgICBpZiAobSA+PiBpICE9IG4pCistCQkJIHJldHVybiAxOworLQkJICAgICAg IGlmIChMTE9OR19NQVggLyAyIDwgbSkKKy0JCQkgYnJlYWs7CistCQkgICAgIH0KKy0JCSAgIHJl dHVybiAwOworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5 X3J1biAiJExJTkVOTyIKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNf Y3ZfdHlwZV9sb25nX2xvbmdfaW50PW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSAqLmNv cmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAor LSAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsK Ky1lc2FjCistZmkKKy0KKy0JICBmaTs7CistICAgICAgZXNhYyA7OworLWVzYWMKKy1maQorLXsg cHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19j dl90eXBlX2xvbmdfbG9uZ19pbnQiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19jdl90eXBlX2xv bmdfbG9uZ19pbnQiID4mNjsgfQorLSAgaWYgdGVzdCAkYWNfY3ZfdHlwZV9sb25nX2xvbmdfaW50 ID0geWVzOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0xPTkdfTE9OR19J TlQgMSIgPj5jb25mZGVmcy5oCistCistICBmaQorLQorLQorLSAgeyBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB1bnNpZ25lZCBsb25nIGxv bmcgaW50IiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciB1bnNpZ25lZCBsb25nIGxvbmcg aW50Li4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25n X2ludCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2Fz ZSBlIGluICMoCistICBlKSBhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZ19pbnQ9eWVzCist ICAgICBjYXNlICRhY19wcm9nX2NjX3N0ZGMgaW4KKy0gICAgICAgbm8gfCBjODkpIDs7CistICAg ICAgICopCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Cist LyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLSAgLyogRm9yIG5vdywgZG8gbm90IHRlc3QgdGhl IHByZXByb2Nlc3NvcjsgYXMgb2YgMjAwNyB0aGVyZSBhcmUgdG9vIG1hbnkKKy0JIGltcGxlbWVu dGF0aW9ucyB3aXRoIGJyb2tlbiBwcmVwcm9jZXNzb3JzLiAgUGVyaGFwcyB0aGlzIGNhbgorLQkg YmUgcmV2aXNpdGVkIGluIDIwMTIuICBJbiB0aGUgbWVhbnRpbWUsIGNvZGUgc2hvdWxkIG5vdCBl eHBlY3QKKy0JICNpZiB0byB3b3JrIHdpdGggbGl0ZXJhbHMgd2lkZXIgdGhhbiAzMiBiaXRzLiAg Ki8KKy0gICAgICAvKiBUZXN0IGxpdGVyYWxzLiAgKi8KKy0gICAgICBsb25nIGxvbmcgaW50IGxs ID0gOTIyMzM3MjAzNjg1NDc3NTgwN2xsOworLSAgICAgIGxvbmcgbG9uZyBpbnQgbmxsID0gLTky MjMzNzIwMzY4NTQ3NzU4MDdMTDsKKy0gICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVsbCA9 IDE4NDQ2NzQ0MDczNzA5NTUxNjE1VUxMOworLSAgICAgIC8qIFRlc3QgY29uc3RhbnQgZXhwcmVz c2lvbnMuICAgKi8KKy0gICAgICB0eXBlZGVmIGludCBhWygoLTkyMjMzNzIwMzY4NTQ3NzU4MDdM TCA8IDAgJiYgMCA8IDkyMjMzNzIwMzY4NTQ3NzU4MDdsbCkKKy0JCSAgICAgPyAxIDogLTEpXTsK Ky0gICAgICB0eXBlZGVmIGludCBiWygxODQ0Njc0NDA3MzcwOTU1MTYxNVVMTCA8PSAodW5zaWdu ZWQgbG9uZyBsb25nIGludCkgLTEKKy0JCSAgICAgPyAxIDogLTEpXTsKKy0gICAgICBpbnQgaSA9 IDYzOworLWludAorLW1haW4gKHZvaWQpCisteworLS8qIFRlc3QgYXZhaWxhYmlsaXR5IG9mIHJ1 bnRpbWUgcm91dGluZXMgZm9yIHNoaWZ0IGFuZCBkaXZpc2lvbi4gICovCistICAgICAgbG9uZyBs b25nIGludCBsbG1heCA9IDkyMjMzNzIwMzY4NTQ3NzU4MDdsbDsKKy0gICAgICB1bnNpZ25lZCBs b25nIGxvbmcgaW50IHVsbG1heCA9IDE4NDQ2NzQ0MDczNzA5NTUxNjE1dWxsOworLSAgICAgIHJl dHVybiAoKGxsIDw8IDYzKSB8IChsbCA+PiA2MykgfCAobGwgPCBpKSB8IChsbCA+IGkpCistCSAg ICAgIHwgKGxsbWF4IC8gbGwpIHwgKGxsbWF4ICUgbGwpCistCSAgICAgIHwgKHVsbCA8PCA2Mykg fCAodWxsID4+IDYzKSB8ICh1bGwgPDwgaSkgfCAodWxsID4+IGkpCistCSAgICAgIHwgKHVsbG1h eCAvIHVsbCkgfCAodWxsbWF4ICUgdWxsKSk7CistICA7CistICByZXR1cm4gMDsKKy19CistCist X0FDRU9GCistaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyIKKy10aGVuIDoKKy0KKy1lbHNl IGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmdfaW50PW5v IDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29i amV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRh Y19leHQ7OworLSAgICAgZXNhYyA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl90eXBlX3Vuc2lnbmVkX2xv bmdfbG9uZ19pbnQiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19jdl90eXBlX3Vuc2lnbmVkX2xv bmdfbG9uZ19pbnQiID4mNjsgfQorLSAgaWYgdGVzdCAkYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25n X2xvbmdfaW50ID0geWVzOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1VO U0lHTkVEX0xPTkdfTE9OR19JTlQgMSIgPj5jb25mZGVmcy5oCistCistICBmaQorLQorLQorLXsg cHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig c2lnX2F0b21pY190IGluIHNpZ25hbC5oIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBz aWdfYXRvbWljX3QgaW4gc2lnbmFsLmguLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfaGF2 ZV9zaWdfYXRvbWljX3QreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYK Ky1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29u ZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0gI2luY2x1ZGUgPHNpZ25h bC5oPgorLWludAorLW1haW4gKHZvaWQpCisteworLSBzaWdfYXRvbWljX3QgeDsKKy0gIDsKKy0g IHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIgor LXRoZW4gOgorLSAgYWNfY3ZfaGF2ZV9zaWdfYXRvbWljX3Q9eWVzCistZWxzZSBjYXNlIGUgaW4g IygKKy0gIGUpIGFjX2N2X2hhdmVfc2lnX2F0b21pY190PW5vIDs7CistZXNhYworLWZpCistcm0g LWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwK Ky0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkK Ky17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk YWNfY3ZfaGF2ZV9zaWdfYXRvbWljX3QiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19jdl9oYXZl X3NpZ19hdG9taWNfdCIgPiY2OyB9CistaWYgdGVzdCAiJGFjX2N2X2hhdmVfc2lnX2F0b21pY190 IiA9ICJubyIKKy10aGVuCistCistCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzaWdfYXRvbWljX3QiID4mNQorLXByaW50ZiAlcyAi Y2hlY2tpbmcgZm9yIHNpZ19hdG9taWNfdC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHtiYXNoX2N2 X3R5cGVfc2lnX2F0b21pY190K3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIg PiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0Yg PmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistI2luY2x1ZGUgPHN5 cy90eXBlcy5oPgorLSNpZiBIQVZFX1NURExJQl9ICistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNl bmRpZgorLSNpZiBIQVZFX1NURERFRl9ICistI2luY2x1ZGUgPHN0ZGRlZi5oPgorLSNlbmRpZgor LSNpZiBIQVZFX0lOVFRZUEVTX0gKKy0jaW5jbHVkZSA8aW50dHlwZXMuaD4KKy0jZW5kaWYKKy0j aWYgSEFWRV9TVERJTlRfSAorLSNpbmNsdWRlIDxzdGRpbnQuaD4KKy0jZW5kaWYKKy0jaW5jbHVk ZSA8c2lnbmFsLmg+CistCistX0FDRU9GCistaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFj X2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQX1RSQURJVElPTkFMICJzaWdfYXRvbWljX3QiID4vZGV2 L251bGwgMj4mMQorLXRoZW4gOgorLSAgYmFzaF9jdl90eXBlX3NpZ19hdG9taWNfdD15ZXMKKy1l bHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYmFzaF9jdl90eXBlX3NpZ19hdG9taWNfdD1ubyA7Owor LWVzYWMKKy1maQorLXJtIC1yZiBjb25mdGVzdCoKKy0gOzsKKy1lc2FjCistZmkKKy0KKy17IHBy aW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9j dl90eXBlX3NpZ19hdG9taWNfdCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGJhc2hfY3ZfdHlwZV9z aWdfYXRvbWljX3QiID4mNjsgfQorLQorLWlmIHRlc3QgJGJhc2hfY3ZfdHlwZV9zaWdfYXRvbWlj X3QgPSBubzsgdGhlbgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBzaWdfYXRvbWljX3QgaW50 IiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLWZpCistCistCistIyBUaGUgY2FzdCB0byBsb25n IGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhQIEMgQ29tcGlsZXIKKy0jIHZlcnNpb24g SFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCist IyBkZWNsYXJhdGlvbnMgbGlrZSAnaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0g MF1dOycuCistIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KKy17IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiBj aGFyIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIHNpemUgb2YgY2hhci4uLiAiID4mNjsgfQor LWlmIHRlc3QgJHthY19jdl9zaXplb2ZfY2hhcit5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIo Y2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiBhY19mbl9jX2NvbXB1 dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mIChjaGFyKSkiICJhY19jdl9zaXpl b2ZfY2hhciIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKKy10aGVuIDoKKy0KKy1lbHNl IGNhc2UgZSBpbiAjKAorLSAgZSkgaWYgdGVzdCAiJGFjX2N2X3R5cGVfY2hhciIgPSB5ZXM7IHRo ZW4KKy0gICAgIHsgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IGVycm9yOiBpbiAnJGFjX3B3ZCc6IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IGVycm9y OiBpbiAnJGFjX3B3ZCc6IiA+JjI7fQorLWFzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBz aXplb2YgKGNoYXIpCistU2VlICdjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVO TyIgNTsgfQorLSAgIGVsc2UKKy0gICAgIGFjX2N2X3NpemVvZl9jaGFyPTAKKy0gICBmaSA7Owor LWVzYWMKKy1maQorLSA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zaXplb2ZfY2hhciIgPiY1CistcHJp bnRmICIlc1xuIiAiJGFjX2N2X3NpemVvZl9jaGFyIiA+JjY7IH0KKy0KKy0KKy0KKy1wcmludGYg IiVzXG4iICIjZGVmaW5lIFNJWkVPRl9DSEFSICRhY19jdl9zaXplb2ZfY2hhciIgPj5jb25mZGVm cy5oCistCistCistIyBUaGUgY2FzdCB0byBsb25nIGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4g dGhlIEhQIEMgQ29tcGlsZXIKKy0jIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQ LCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCistIyBkZWNsYXJhdGlvbnMgbGlrZSAnaW50IGEz W1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCistIyBUaGlzIGJ1ZyBpcyBIUCBT UiBudW1iZXIgODYwNjIyMzM2NC4KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiBzaG9ydCIgPiY1CistcHJpbnRmICVzICJjaGVj a2luZyBzaXplIG9mIHNob3J0Li4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X3NpemVvZl9z aG9ydCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2Fz ZSBlIGluICMoCistICBlKSBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcg aW50KSAoc2l6ZW9mIChzaG9ydCkpIiAiYWNfY3Zfc2l6ZW9mX3Nob3J0IiAgICAgICAgIiRhY19p bmNsdWRlc19kZWZhdWx0IgorLXRoZW4gOgorLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBp ZiB0ZXN0ICIkYWNfY3ZfdHlwZV9zaG9ydCIgPSB5ZXM7IHRoZW4KKy0gICAgIHsgeyBwcmludGYg IiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiAnJGFjX3B3ZCc6 IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IGVycm9yOiBpbiAnJGFjX3B3ZCc6IiA+JjI7 fQorLWFzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKHNob3J0KQorLVNlZSAn Y29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KKy0gICBlbHNlCist ICAgICBhY19jdl9zaXplb2Zfc2hvcnQ9MAorLSAgIGZpIDs7CistZXNhYworLWZpCistIDs7Cist ZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJGFjX2N2X3NpemVvZl9zaG9ydCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2 X3NpemVvZl9zaG9ydCIgPiY2OyB9CistCistCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBT SVpFT0ZfU0hPUlQgJGFjX2N2X3NpemVvZl9zaG9ydCIgPj5jb25mZGVmcy5oCistCistCistIyBU aGUgY2FzdCB0byBsb25nIGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhQIEMgQ29tcGls ZXIKKy0jIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJl Y3RseSByZWplY3RzCistIyBkZWNsYXJhdGlvbnMgbGlrZSAnaW50IGEzW1soc2l6ZW9mICh1bnNp Z25lZCBjaGFyKSkgPj0gMF1dOycuCistIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIy MzM2NC4KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgc2l6ZSBvZiBpbnQiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgc2l6ZSBvZiBpbnQu Li4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3Zfc2l6ZW9mX2ludCt5fQorLXRoZW4gOgorLSAg cHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiBh Y19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mIChpbnQpKSIg ImFjX2N2X3NpemVvZl9pbnQiICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistdGhlbiA6 CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgIiRhY19jdl90eXBlX2ludCIg PSB5ZXM7IHRoZW4KKy0gICAgIHsgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGVycm9yOiBpbiAnJGFjX3B3ZCc6IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNf bWU6IGVycm9yOiBpbiAnJGFjX3B3ZCc6IiA+JjI7fQorLWFzX2ZuX2Vycm9yIDc3ICJjYW5ub3Qg Y29tcHV0ZSBzaXplb2YgKGludCkKKy1TZWUgJ2NvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMi ICIkTElORU5PIiA1OyB9CistICAgZWxzZQorLSAgICAgYWNfY3Zfc2l6ZW9mX2ludD0wCistICAg ZmkgOzsKKy1lc2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2l6ZW9mX2ludCIgPiY1 CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X3NpemVvZl9pbnQiID4mNjsgfQorLQorLQorLQorLXBy aW50ZiAiJXNcbiIgIiNkZWZpbmUgU0laRU9GX0lOVCAkYWNfY3Zfc2l6ZW9mX2ludCIgPj5jb25m ZGVmcy5oCistCistCistIyBUaGUgY2FzdCB0byBsb25nIGludCB3b3JrcyBhcm91bmQgYSBidWcg aW4gdGhlIEhQIEMgQ29tcGlsZXIKKy0jIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5 LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCistIyBkZWNsYXJhdGlvbnMgbGlrZSAnaW50 IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCistIyBUaGlzIGJ1ZyBpcyBI UCBTUiBudW1iZXIgODYwNjIyMzM2NC4KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiBsb25nIiA+JjUKKy1wcmludGYgJXMgImNo ZWNraW5nIHNpemUgb2YgbG9uZy4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9zaXplb2Zf bG9uZyt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2Fz ZSBlIGluICMoCistICBlKSBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcg aW50KSAoc2l6ZW9mIChsb25nKSkiICJhY19jdl9zaXplb2ZfbG9uZyIgICAgICAgICIkYWNfaW5j bHVkZXNfZGVmYXVsdCIKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgaWYg dGVzdCAiJGFjX2N2X3R5cGVfbG9uZyIgPSB5ZXM7IHRoZW4KKy0gICAgIHsgeyBwcmludGYgIiVz XG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiAnJGFjX3B3ZCc6IiA+ JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IGVycm9yOiBpbiAnJGFjX3B3ZCc6IiA+JjI7fQor LWFzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGxvbmcpCistU2VlICdjb25m aWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQorLSAgIGVsc2UKKy0gICAg IGFjX2N2X3NpemVvZl9sb25nPTAKKy0gICBmaSA7OworLWVzYWMKKy1maQorLSA7OworLWVzYWMK Ky1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6ICRhY19jdl9zaXplb2ZfbG9uZyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X3NpemVv Zl9sb25nIiA+JjY7IH0KKy0KKy0KKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIFNJWkVPRl9M T05HICRhY19jdl9zaXplb2ZfbG9uZyIgPj5jb25mZGVmcy5oCistCistCistIyBUaGUgY2FzdCB0 byBsb25nIGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhQIEMgQ29tcGlsZXIKKy0jIHZl cnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWpl Y3RzCistIyBkZWNsYXJhdGlvbnMgbGlrZSAnaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFy KSkgPj0gMF1dOycuCistIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KKy17 IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6 ZSBvZiBjaGFyICoiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgc2l6ZSBvZiBjaGFyICouLi4g IiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3Zfc2l6ZW9mX2NoYXJfcCt5fQorLXRoZW4gOgorLSAg cHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiBh Y19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mIChjaGFyICop KSIgImFjX2N2X3NpemVvZl9jaGFyX3AiICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCist dGhlbiA6CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgIiRhY19jdl90eXBl X2NoYXJfcCIgPSB5ZXM7IHRoZW4KKy0gICAgIHsgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiAnJGFjX3B3ZCc6IiA+JjUKKy1wcmludGYgIiVz XG4iICIkYXNfbWU6IGVycm9yOiBpbiAnJGFjX3B3ZCc6IiA+JjI7fQorLWFzX2ZuX2Vycm9yIDc3 ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGNoYXIgKikKKy1TZWUgJ2NvbmZpZy5sb2cnIGZvciBt b3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CistICAgZWxzZQorLSAgICAgYWNfY3Zfc2l6ZW9m X2NoYXJfcD0wCistICAgZmkgOzsKKy1lc2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy17IHBy aW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zf c2l6ZW9mX2NoYXJfcCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X3NpemVvZl9jaGFyX3Ai ID4mNjsgfQorLQorLQorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgU0laRU9GX0NIQVJfUCAk YWNfY3Zfc2l6ZW9mX2NoYXJfcCIgPj5jb25mZGVmcy5oCistCistCistIyBUaGUgY2FzdCB0byBs b25nIGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhQIEMgQ29tcGlsZXIKKy0jIHZlcnNp b24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3Rz CistIyBkZWNsYXJhdGlvbnMgbGlrZSAnaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkg Pj0gMF1dOycuCistIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KKy17IHBy aW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBv ZiBzaXplX3QiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgc2l6ZSBvZiBzaXplX3QuLi4gIiA+ JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3Zfc2l6ZW9mX3NpemVfdCt5fQorLXRoZW4gOgorLSAgcHJp bnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiBhY19m bl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mIChzaXplX3QpKSIg ImFjX2N2X3NpemVvZl9zaXplX3QiICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistdGhl biA6CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgIiRhY19jdl90eXBlX3Np emVfdCIgPSB5ZXM7IHRoZW4KKy0gICAgIHsgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IGVycm9yOiBpbiAnJGFjX3B3ZCc6IiA+JjUKKy1wcmludGYgIiVzXG4i ICIkYXNfbWU6IGVycm9yOiBpbiAnJGFjX3B3ZCc6IiA+JjI7fQorLWFzX2ZuX2Vycm9yIDc3ICJj YW5ub3QgY29tcHV0ZSBzaXplb2YgKHNpemVfdCkKKy1TZWUgJ2NvbmZpZy5sb2cnIGZvciBtb3Jl IGRldGFpbHMiICIkTElORU5PIiA1OyB9CistICAgZWxzZQorLSAgICAgYWNfY3Zfc2l6ZW9mX3Np emVfdD0wCistICAgZmkgOzsKKy1lc2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy17IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2l6 ZW9mX3NpemVfdCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X3NpemVvZl9zaXplX3QiID4m NjsgfQorLQorLQorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgU0laRU9GX1NJWkVfVCAkYWNf Y3Zfc2l6ZW9mX3NpemVfdCIgPj5jb25mZGVmcy5oCistCistCistIyBUaGUgY2FzdCB0byBsb25n IGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhQIEMgQ29tcGlsZXIKKy0jIHZlcnNpb24g SFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCist IyBkZWNsYXJhdGlvbnMgbGlrZSAnaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0g MF1dOycuCistIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KKy17IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiBk b3VibGUiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgc2l6ZSBvZiBkb3VibGUuLi4gIiA+JjY7 IH0KKy1pZiB0ZXN0ICR7YWNfY3Zfc2l6ZW9mX2RvdWJsZSt5fQorLXRoZW4gOgorLSAgcHJpbnRm ICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiBhY19mbl9j X2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mIChkb3VibGUpKSIgImFj X2N2X3NpemVvZl9kb3VibGUiICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistdGhlbiA6 CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgIiRhY19jdl90eXBlX2RvdWJs ZSIgPSB5ZXM7IHRoZW4KKy0gICAgIHsgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IGVycm9yOiBpbiAnJGFjX3B3ZCc6IiA+JjUKKy1wcmludGYgIiVzXG4iICIk YXNfbWU6IGVycm9yOiBpbiAnJGFjX3B3ZCc6IiA+JjI7fQorLWFzX2ZuX2Vycm9yIDc3ICJjYW5u b3QgY29tcHV0ZSBzaXplb2YgKGRvdWJsZSkKKy1TZWUgJ2NvbmZpZy5sb2cnIGZvciBtb3JlIGRl dGFpbHMiICIkTElORU5PIiA1OyB9CistICAgZWxzZQorLSAgICAgYWNfY3Zfc2l6ZW9mX2RvdWJs ZT0wCistICAgZmkgOzsKKy1lc2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAi JXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2l6ZW9m X2RvdWJsZSIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X3NpemVvZl9kb3VibGUiID4mNjsg fQorLQorLQorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgU0laRU9GX0RPVUJMRSAkYWNfY3Zf c2l6ZW9mX2RvdWJsZSIgPj5jb25mZGVmcy5oCistCistCistIyBUaGUgY2FzdCB0byBsb25nIGlu dCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhQIEMgQ29tcGlsZXIKKy0jIHZlcnNpb24gSFA5 MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCistIyBk ZWNsYXJhdGlvbnMgbGlrZSAnaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1d OycuCistIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KKy17IHByaW50ZiAi JXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiBsb25n IGxvbmciID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgc2l6ZSBvZiBsb25nIGxvbmcuLi4gIiA+ JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyt5fQorLXRoZW4gOgorLSAg cHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiBh Y19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mIChsb25nIGxv bmcpKSIgImFjX2N2X3NpemVvZl9sb25nX2xvbmciICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1 bHQiCistdGhlbiA6CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgIiRhY19j dl90eXBlX2xvbmdfbG9uZyIgPSB5ZXM7IHRoZW4KKy0gICAgIHsgeyBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiAnJGFjX3B3ZCc6IiA+JjUKKy1w cmludGYgIiVzXG4iICIkYXNfbWU6IGVycm9yOiBpbiAnJGFjX3B3ZCc6IiA+JjI7fQorLWFzX2Zu X2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGxvbmcgbG9uZykKKy1TZWUgJ2NvbmZp Zy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CistICAgZWxzZQorLSAgICAg YWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZz0wCistICAgZmkgOzsKKy1lc2FjCistZmkKKy0gOzsKKy1l c2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFj X2N2X3NpemVvZl9sb25nX2xvbmciID4mNjsgfQorLQorLQorLQorLXByaW50ZiAiJXNcbiIgIiNk ZWZpbmUgU0laRU9GX0xPTkdfTE9ORyAkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgPj5jb25mZGVm cy5oCistCistCistCistCistaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9zaG9ydCIgPSAyOyB0aGVu CistICBhY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJiaXRzMTZfdCIgImFjX2N2X3R5cGVf Yml0czE2X3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVf Yml0czE2X3QiID0geHllcworLXRoZW4gOgorLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKQor LXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgYml0czE2X3Qgc2hvcnQiID4+Y29uZmRlZnMuaAorLSA7 OworLWVzYWMKKy1maQorLQorLWVsaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9jaGFyIiA9IDI7IHRo ZW4KKy0gIGFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgImJpdHMxNl90IiAiYWNfY3ZfdHlw ZV9iaXRzMTZfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfdHlw ZV9iaXRzMTZfdCIgPSB4eWVzCistdGhlbiA6CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUp CistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBiaXRzMTZfdCBjaGFyIiA+PmNvbmZkZWZzLmgKKy0g OzsKKy1lc2FjCistZmkKKy0KKy1lbHNlCistICBhY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8i ICJiaXRzMTZfdCIgImFjX2N2X3R5cGVfYml0czE2X3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIK Ky1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfYml0czE2X3QiID0geHllcworLXRoZW4gOgorLQorLWVs c2UgY2FzZSBlIGluICMoCistICBlKQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgYml0czE2X3Qg c2hvcnQiID4+Y29uZmRlZnMuaAorLSA7OworLWVzYWMKKy1maQorLQorLWZpCistCistCistaWYg dGVzdCAiJGFjX2N2X3NpemVvZl9zaG9ydCIgPSAyOyB0aGVuCistICBhY19mbl9jX2NoZWNrX3R5 cGUgIiRMSU5FTk8iICJ1X2JpdHMxNl90IiAiYWNfY3ZfdHlwZV91X2JpdHMxNl90IiAiJGFjX2lu Y2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl90eXBlX3VfYml0czE2X3QiID0geHll cworLXRoZW4gOgorLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKQorLXByaW50ZiAiJXNcbiIg IiNkZWZpbmUgdV9iaXRzMTZfdCB1bnNpZ25lZCBzaG9ydCIgPj5jb25mZGVmcy5oCistIDs7Cist ZXNhYworLWZpCistCistZWxpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX2NoYXIiID0gMjsgdGhlbgor LSAgYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAidV9iaXRzMTZfdCIgImFjX2N2X3R5cGVf dV9iaXRzMTZfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfdHlw ZV91X2JpdHMxNl90IiA9IHh5ZXMKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIHVfYml0czE2X3QgdW5zaWduZWQgY2hhciIgPj5j b25mZGVmcy5oCistIDs7CistZXNhYworLWZpCistCistZWxzZQorLSAgYWNfZm5fY19jaGVja190 eXBlICIkTElORU5PIiAidV9iaXRzMTZfdCIgImFjX2N2X3R5cGVfdV9iaXRzMTZfdCIgIiRhY19p bmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV91X2JpdHMxNl90IiA9IHh5 ZXMKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkKKy1wcmludGYgIiVzXG4i ICIjZGVmaW5lIHVfYml0czE2X3QgdW5zaWduZWQgc2hvcnQiID4+Y29uZmRlZnMuaAorLSA7Owor LWVzYWMKKy1maQorLQorLWZpCistCistCistaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9pbnQiID0g NDsgdGhlbgorLSAgYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAiYml0czMyX3QiICJhY19j dl90eXBlX2JpdHMzMl90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19j dl90eXBlX2JpdHMzMl90IiA9IHh5ZXMKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAor LSAgZSkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIGJpdHMzMl90IGludCIgPj5jb25mZGVmcy5o CistIDs7CistZXNhYworLWZpCistCistZWxpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX2xvbmciID0g NDsgdGhlbgorLSAgYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAiYml0czMyX3QiICJhY19j dl90eXBlX2JpdHMzMl90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19j dl90eXBlX2JpdHMzMl90IiA9IHh5ZXMKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAor LSAgZSkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIGJpdHMzMl90IGxvbmciID4+Y29uZmRlZnMu aAorLSA7OworLWVzYWMKKy1maQorLQorLWVsc2UKKy0gIGFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJ TkVOTyIgImJpdHMzMl90IiAiYWNfY3ZfdHlwZV9iaXRzMzJfdCIgIiRhY19pbmNsdWRlc19kZWZh dWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV9iaXRzMzJfdCIgPSB4eWVzCistdGhlbiA6Cist CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBiaXRz MzJfdCBpbnQiID4+Y29uZmRlZnMuaAorLSA7OworLWVzYWMKKy1maQorLQorLWZpCistCistCist aWYgdGVzdCAiJGFjX2N2X3NpemVvZl9pbnQiID0gNDsgdGhlbgorLSAgYWNfZm5fY19jaGVja190 eXBlICIkTElORU5PIiAidV9iaXRzMzJfdCIgImFjX2N2X3R5cGVfdV9iaXRzMzJfdCIgIiRhY19p bmNsdWRlc19kZWZhdWx0IgorLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV91X2JpdHMzMl90IiA9IHh5 ZXMKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkKKy1wcmludGYgIiVzXG4i ICIjZGVmaW5lIHVfYml0czMyX3QgdW5zaWduZWQgaW50IiA+PmNvbmZkZWZzLmgKKy0gOzsKKy1l c2FjCistZmkKKy0KKy1lbGlmIHRlc3QgIiRhY19jdl9zaXplb2ZfbG9uZyIgPSA0OyB0aGVuCist ICBhY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJ1X2JpdHMzMl90IiAiYWNfY3ZfdHlwZV91 X2JpdHMzMl90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl90eXBl X3VfYml0czMyX3QiID0geHllcworLXRoZW4gOgorLQorLWVsc2UgY2FzZSBlIGluICMoCistICBl KQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgdV9iaXRzMzJfdCB1bnNpZ25lZCBsb25nIiA+PmNv bmZkZWZzLmgKKy0gOzsKKy1lc2FjCistZmkKKy0KKy1lbHNlCistICBhY19mbl9jX2NoZWNrX3R5 cGUgIiRMSU5FTk8iICJ1X2JpdHMzMl90IiAiYWNfY3ZfdHlwZV91X2JpdHMzMl90IiAiJGFjX2lu Y2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl90eXBlX3VfYml0czMyX3QiID0geHll cworLXRoZW4gOgorLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKQorLXByaW50ZiAiJXNcbiIg IiNkZWZpbmUgdV9iaXRzMzJfdCB1bnNpZ25lZCBpbnQiID4+Y29uZmRlZnMuaAorLSA7OworLWVz YWMKKy1maQorLQorLWZpCistCistCistaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9jaGFyX3AiID0g ODsgdGhlbgorLSAgYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAiYml0czY0X3QiICJhY19j dl90eXBlX2JpdHM2NF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19j dl90eXBlX2JpdHM2NF90IiA9IHh5ZXMKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAor LSAgZSkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIGJpdHM2NF90IGNoYXIgKiIgPj5jb25mZGVm cy5oCistIDs7CistZXNhYworLWZpCistCistZWxpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX2RvdWJs ZSIgPSA4OyB0aGVuCistICBhY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJiaXRzNjRfdCIg ImFjX2N2X3R5cGVfYml0czY0X3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4 JGFjX2N2X3R5cGVfYml0czY0X3QiID0geHllcworLXRoZW4gOgorLQorLWVsc2UgY2FzZSBlIGlu ICMoCistICBlKQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgYml0czY0X3QgZG91YmxlIiA+PmNv bmZkZWZzLmgKKy0gOzsKKy1lc2FjCistZmkKKy0KKy1lbGlmIHRlc3QgLW4gIiRhY19jdl90eXBl X2xvbmdfbG9uZyIgJiYgdGVzdCAiJGFjX2N2X3NpemVvZl9sb25nX2xvbmciID0gODsgdGhlbgor LSAgYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAiYml0czY0X3QiICJhY19jdl90eXBlX2Jp dHM2NF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl90eXBlX2Jp dHM2NF90IiA9IHh5ZXMKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkKKy1w cmludGYgIiVzXG4iICIjZGVmaW5lIGJpdHM2NF90IGxvbmcgbG9uZyIgPj5jb25mZGVmcy5oCist IDs7CistZXNhYworLWZpCistCistZWxpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX2xvbmciID0gODsg dGhlbgorLSAgYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAiYml0czY0X3QiICJhY19jdl90 eXBlX2JpdHM2NF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl90 eXBlX2JpdHM2NF90IiA9IHh5ZXMKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIGJpdHM2NF90IGxvbmciID4+Y29uZmRlZnMuaAor LSA7OworLWVzYWMKKy1maQorLQorLWVsc2UKKy0gIGFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVO TyIgImJpdHM2NF90IiAiYWNfY3ZfdHlwZV9iaXRzNjRfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0 IgorLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV9iaXRzNjRfdCIgPSB4eWVzCistdGhlbiA6CistCist ZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBiaXRzNjRf dCBkb3VibGUiID4+Y29uZmRlZnMuaAorLSA7OworLWVzYWMKKy1maQorLQorLWZpCistCistCist CistaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9pbnQiID0gIiRhY19jdl9zaXplb2ZfY2hhcl9wIjsg dGhlbgorLSAgYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAicHRyZGlmZl90IiAiYWNfY3Zf dHlwZV9wdHJkaWZmX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2 X3R5cGVfcHRyZGlmZl90IiA9IHh5ZXMKKy10aGVuIDoKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAor LSAgZSkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIHB0cmRpZmZfdCBpbnQiID4+Y29uZmRlZnMu aAorLSA7OworLWVzYWMKKy1maQorLQorLWVsaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9sb25nIiA9 ICIkYWNfY3Zfc2l6ZW9mX2NoYXJfcCI7IHRoZW4KKy0gIGFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJ TkVOTyIgInB0cmRpZmZfdCIgImFjX2N2X3R5cGVfcHRyZGlmZl90IiAiJGFjX2luY2x1ZGVzX2Rl ZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl90eXBlX3B0cmRpZmZfdCIgPSB4eWVzCistdGhlbiA6 CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBw dHJkaWZmX3QgbG9uZyIgPj5jb25mZGVmcy5oCistIDs7CistZXNhYworLWZpCistCistZWxpZiB0 ZXN0ICIkYWNfY3ZfdHlwZV9sb25nX2xvbmciID0geWVzICYmIHRlc3QgIiRhY19jdl9zaXplb2Zf bG9uZ19sb25nIiA9ICIkYWNfY3Zfc2l6ZW9mX2NoYXJfcCI7IHRoZW4KKy0gIGFjX2ZuX2NfY2hl Y2tfdHlwZSAiJExJTkVOTyIgInB0cmRpZmZfdCIgImFjX2N2X3R5cGVfcHRyZGlmZl90IiAiJGFj X2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRhY19jdl90eXBlX3B0cmRpZmZfdCIgPSB4 eWVzCistdGhlbiA6CistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpCistcHJpbnRmICIlc1xu IiAiI2RlZmluZSBwdHJkaWZmX3QgbG9uZyBsb25nIiA+PmNvbmZkZWZzLmgKKy0gOzsKKy1lc2Fj CistZmkKKy0KKy1lbHNlCistICBhY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJwdHJkaWZm X3QiICJhY19jdl90eXBlX3B0cmRpZmZfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLWlmIHRl c3QgIngkYWNfY3ZfdHlwZV9wdHJkaWZmX3QiID0geHllcworLXRoZW4gOgorLQorLWVsc2UgY2Fz ZSBlIGluICMoCistICBlKQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgcHRyZGlmZl90IGludCIg Pj5jb25mZGVmcy5oCistIDs7CistZXNhYworLWZpCistCistZmkKKy0KKy0KKy17IHByaW50ZiAi JXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBzdGF0 IGZpbGUtbW9kZSBtYWNyb3MgYXJlIGJyb2tlbiIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyB3 aGV0aGVyIHN0YXQgZmlsZS1tb2RlIG1hY3JvcyBhcmUgYnJva2VuLi4uICIgPiY2OyB9CistaWYg dGVzdCAke2FjX2N2X2hlYWRlcl9zdGF0X2Jyb2tlbit5fQorLXRoZW4gOgorLSAgcHJpbnRmICVz ICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMu aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLwor LSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KKy0KKy0jaWYg ZGVmaW5lZCBTX0lTQkxLICYmIGRlZmluZWQgU19JRkRJUgorLWV4dGVybiBjaGFyIGMxW1NfSVNC TEsgKFNfSUZESVIpID8gLTEgOiAxXTsKKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBTX0lTQkxL ICYmIGRlZmluZWQgU19JRkNIUgorLWV4dGVybiBjaGFyIGMyW1NfSVNCTEsgKFNfSUZDSFIpID8g LTEgOiAxXTsKKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBTX0lTTE5LICYmIGRlZmluZWQgU19J RlJFRworLWV4dGVybiBjaGFyIGMzW1NfSVNMTksgKFNfSUZSRUcpID8gLTEgOiAxXTsKKy0jZW5k aWYKKy0KKy0jaWYgZGVmaW5lZCBTX0lTU09DSyAmJiBkZWZpbmVkIFNfSUZSRUcKKy1leHRlcm4g Y2hhciBjNFtTX0lTU09DSyAoU19JRlJFRykgPyAtMSA6IDFdOworLSNlbmRpZgorLQorLV9BQ0VP RgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19jdl9o ZWFkZXJfc3RhdF9icm9rZW49bm8KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY3ZfaGVh ZGVyX3N0YXRfYnJva2VuPXllcyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3Qu ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7 CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogJGFjX2N2X2hlYWRlcl9zdGF0X2Jyb2tlbiIgPiY1CistcHJpbnRmICIlc1xu IiAiJGFjX2N2X2hlYWRlcl9zdGF0X2Jyb2tlbiIgPiY2OyB9CistaWYgdGVzdCAkYWNfY3ZfaGVh ZGVyX3N0YXRfYnJva2VuID0geWVzOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBT VEFUX01BQ1JPU19CUk9LRU4gMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy0KKy17IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAj ISB3b3JrcyBpbiBzaGVsbCBzY3JpcHRzIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIHdoZXRo ZXIgIyEgd29ya3MgaW4gc2hlbGwgc2NyaXB0cy4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19j dl9zeXNfaW50ZXJwcmV0ZXIreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+ JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgZWNobyAnIyEgL2Jpbi9jYXQKKy1leGl0IDY5 CistJyA+Y29uZnRlc3QKKy1jaG1vZCB1K3ggY29uZnRlc3QKKy0oU0hFTEw9L2Jpbi9zaDsgZXhw b3J0IFNIRUxMOyAuL2NvbmZ0ZXN0ID4vZGV2L251bGwgMj4mMSkKKy1pZiB0ZXN0ICQ/IC1uZSA2 OTsgdGhlbgorLSAgIGFjX2N2X3N5c19pbnRlcnByZXRlcj15ZXMKKy1lbHNlCistICAgYWNfY3Zf c3lzX2ludGVycHJldGVyPW5vCistZmkKKy1ybSAtZiBjb25mdGVzdCA7OworLWVzYWMKKy1maQor LXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRh Y19jdl9zeXNfaW50ZXJwcmV0ZXIiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhY19jdl9zeXNfaW50 ZXJwcmV0ZXIiID4mNjsgfQorLWludGVycHZhbD0kYWNfY3Zfc3lzX2ludGVycHJldGVyCistCist aWYgdGVzdCAkYWNfY3Zfc3lzX2ludGVycHJldGVyID0geWVzOyB0aGVuCistcHJpbnRmICIlc1xu IiAiI2RlZmluZSBIQVZFX0hBU0hfQkFOR19FWEVDIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCist CistaWYgdGVzdCAiJGFjX2N2X2Z1bmNfbHN0YXQiID0gIm5vIjsgdGhlbgorLXsgcHJpbnRmICIl c1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbHN0YXQiID4m NQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIGxzdGF0Li4uICIgPiY2OyB9CistaWYgdGVzdCAk e2Jhc2hfY3ZfZnVuY19sc3RhdCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAi ID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G ID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLQkJI2luY2x1 ZGUgPHN5cy90eXBlcy5oPgorLQkJI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CistCistaW50CistbWFp biAodm9pZCkKKy17CistIGxzdGF0KCIuIiwoc3RydWN0IHN0YXQgKikwKTsKKy0gIDsKKy0gIHJl dHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIgorLXRo ZW4gOgorLSAgYmFzaF9jdl9mdW5jX2xzdGF0PXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBiYXNoX2N2X2Z1bmNfbHN0YXQ9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0 ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gXAorLSAgICBjb25mdGVz dCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIl c1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRiYXNoX2N2X2Z1bmNf bHN0YXQiID4mNQorLXByaW50ZiAiJXNcbiIgIiRiYXNoX2N2X2Z1bmNfbHN0YXQiID4mNjsgfQor LWlmIHRlc3QgJGJhc2hfY3ZfZnVuY19sc3RhdCA9IHllczsgdGhlbgorLSAgcHJpbnRmICIlc1xu IiAiI2RlZmluZSBIQVZFX0xTVEFUIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCistZmkKKy0K Ky0KKy0KKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyB3aGV0aGVyIHN0cmNocm51bCB3b3JrcyIgPiY1CistcHJpbnRmICVzICJjaGVja2lu ZyB3aGV0aGVyIHN0cmNocm51bCB3b3Jrcy4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHtiYXNoX2N2 X2Z1bmNfc3RyY2hybnVsX3dvcmtzK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQp ICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgIiRjcm9zc19jb21waWxp bmciID0geWVzCistdGhlbiA6CistICBiYXNoX2N2X2Z1bmNfc3RyY2hybnVsX3dvcmtzPW5vCist CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv bmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCistI2luY2x1ZGUgPHN0 cmluZy5oPgorLQorLWludAorLW1haW4gKHZvaWQpCisteworLWNvbnN0IGNoYXIgKmJ1ZiA9ICJh YmMiOworLSAgICAgIHJldHVybiBzdHJjaHJudWwgKGJ1ZiwgJ2QnKSAhPSBidWYgKyAzOworLQor LQorLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X3J1biAi JExJTkVOTyIKKy10aGVuIDoKKy0gIGJhc2hfY3ZfZnVuY19zdHJjaHJudWxfd29ya3M9eWVzCist ZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3ZfZnVuY19zdHJjaHJudWxfd29ya3M9bm8g OzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5v dXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCistICBjb25mdGVzdC4kYWNfb2JqZXh0IGNv bmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLSA7OworLWVzYWMK Ky1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6ICRiYXNoX2N2X2Z1bmNfc3RyY2hybnVsX3dvcmtzIiA+JjUKKy1wcmludGYgIiVzXG4iICIk YmFzaF9jdl9mdW5jX3N0cmNocm51bF93b3JrcyIgPiY2OyB9CistCistaWYgdGVzdCAiJGJhc2hf Y3ZfZnVuY19zdHJjaHJudWxfd29ya3MiID0gIm5vIjsgdGhlbgorLWNhc2UgIiAkTElCT0JKUyAi IGluCistICAqIiBzdHJjaHJudWwuJGFjX29iamV4dCAiKiApIDs7CistICAqKSBMSUJPQkpTPSIk TElCT0JKUyBzdHJjaHJudWwuJGFjX29iamV4dCIKKy0gOzsKKy1lc2FjCistCistZmkKKy0KKy0K Ky17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg aWYgZHVwMiBmYWlscyB0byBjbGVhciB0aGUgY2xvc2Utb24tZXhlYyBmbGFnIiA+JjUKKy1wcmlu dGYgJXMgImNoZWNraW5nIGlmIGR1cDIgZmFpbHMgdG8gY2xlYXIgdGhlIGNsb3NlLW9uLWV4ZWMg ZmxhZy4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHtiYXNoX2N2X2R1cDJfYnJva2VuK3l9CistdGhl biA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0g IGUpIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzCistdGhlbiA6CistICB7IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogY2Fubm90IGNo ZWNrIGR1cDIgaWYgY3Jvc3MgY29tcGlsaW5nIC0tIGRlZmF1bHRpbmcgdG8gbm8iID4mNQorLXBy aW50ZiAiJXNcbiIgIiRhc19tZTogV0FSTklORzogY2Fubm90IGNoZWNrIGR1cDIgaWYgY3Jvc3Mg Y29tcGlsaW5nIC0tIGRlZmF1bHRpbmcgdG8gbm8iID4mMjt9CistICAgICBiYXNoX2N2X2R1cDJf YnJva2VuPW5vCistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCist I2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpbmNsdWRlIDxmY250bC5oPgorLSNpbmNsdWRlIDxz dGRsaWIuaD4KKy0jaWZkZWYgSEFWRV9VTklTVERfSAorLSMgaW5jbHVkZSA8dW5pc3RkLmg+Cist I2VuZGlmIC8qIEhBVkVfVU5JU1REX0ggKi8KKy1pbnQKKy1tYWluKCkKKy17CistICBpbnQgZmQx LCBmZDIsIGZsOworLSAgZmQxID0gb3BlbigiL2Rldi9udWxsIiwgMik7CistICBpZiAoZmNudGwo ZmQxLCAyLCAxKSA8IDApCistICAgIGV4aXQoMSk7CistICBmZDIgPSBkdXAyKGZkMSwgMSk7Cist ICBpZiAoZmQyIDwgMCkKKy0gICAgZXhpdCgyKTsKKy0gIGZsID0gZmNudGwoZmQyLCAxLCAwKTsK Ky0gIC8qIGZsIHdpbGwgYmUgMSBpZiBkdXAyIGRpZCBub3QgcmVzZXQgdGhlIGNsb3NlLW9uLWV4 ZWMgZmxhZy4gKi8KKy0gIGV4aXQoZmwgIT0gMSk7CistfQorLQorLV9BQ0VPRgorLWlmIGFjX2Zu X2NfdHJ5X3J1biAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGJhc2hfY3ZfZHVwMl9icm9rZW49eWVz CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3ZfZHVwMl9icm9rZW49bm8gOzsKKy1l c2FjCistZmkKKy1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIu b3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCistICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0 LmJlYW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLSA7OworLWVzYWMKKy1maQor LQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 ICRiYXNoX2N2X2R1cDJfYnJva2VuIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYmFzaF9jdl9kdXAy X2Jyb2tlbiIgPiY2OyB9CistaWYgdGVzdCAkYmFzaF9jdl9kdXAyX2Jyb2tlbiA9IHllczsgdGhl bgorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgRFVQMl9CUk9LRU4gMSIgPj5jb25mZGVmcy5oCist CistZmkKKy0KKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgd2hldGhlciBwZ3JwcyBuZWVkIHN5bmNocm9uaXphdGlvbiIgPiY1CistcHJp bnRmICVzICJjaGVja2luZyB3aGV0aGVyIHBncnBzIG5lZWQgc3luY2hyb25pemF0aW9uLi4uICIg PiY2OyB9CistaWYgdGVzdCAke2Jhc2hfY3ZfcGdycF9waXBlK3l9CistdGhlbiA6CistICBwcmlu dGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3Qg IiRjcm9zc19jb21waWxpbmciID0geWVzCistdGhlbiA6CistICB7IHByaW50ZiAiJXNcbiIgIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogY2Fubm90IGNoZWNrIHBncnAgc3lu Y2hyb25pemF0aW9uIGlmIGNyb3NzIGNvbXBpbGluZyAtLSBkZWZhdWx0aW5nIHRvIG5vIiA+JjUK Ky1wcmludGYgIiVzXG4iICIkYXNfbWU6IFdBUk5JTkc6IGNhbm5vdCBjaGVjayBwZ3JwIHN5bmNo cm9uaXphdGlvbiBpZiBjcm9zcyBjb21waWxpbmcgLS0gZGVmYXVsdGluZyB0byBubyIgPiYyO30K Ky0gICAgYmFzaF9jdl9wZ3JwX3BpcGU9bm8KKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkg Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9VTklTVERfSAorLSMgIGluY2x1ZGUgPHVuaXN0 ZC5oPgorLSNlbmRpZgorLSNpZmRlZiBIQVZFX1NZU19XQUlUX0gKKy0jICBpbmNsdWRlIDxzeXMv d2FpdC5oPgorLSNlbmRpZgorLSNpbmNsdWRlIDxzdGRsaWIuaD4KKy1pbnQKKy1tYWluKCkKKy17 CistIyBpZmRlZiBHRVRQR1JQX1ZPSUQKKy0jICBkZWZpbmUgZ2V0cGdJRCgpCWdldHBncnAoKQor LSMgZWxzZQorLSMgIGRlZmluZSBnZXRwZ0lEKCkJZ2V0cGdycCgwKQorLSMgIGRlZmluZSBzZXRw Z2lkKHgseSkJc2V0cGdycCh4LHkpCistIyBlbmRpZgorLQlpbnQgcGlkMSwgcGlkMiwgZmRzWzJd OworLQlpbnQgc3RhdHVzOworLQljaGFyIG9rOworLQorLQlzd2l0Y2ggKHBpZDEgPSBmb3JrKCkp IHsKKy0JICBjYXNlIC0xOgorLQkgICAgZXhpdCgxKTsKKy0JICBjYXNlIDA6CistCSAgICBzZXRw Z2lkKDAsIGdldHBpZCgpKTsKKy0JICAgIGV4aXQoMCk7CistCX0KKy0Jc2V0cGdpZChwaWQxLCBw aWQxKTsKKy0KKy0Jc2xlZXAoMik7CS8qIGxldCBmaXJzdCBjaGlsZCBkaWUgKi8KKy0KKy0JaWYg KHBpcGUoZmRzKSA8IDApCistCSAgZXhpdCgyKTsKKy0KKy0Jc3dpdGNoIChwaWQyID0gZm9yaygp KSB7CistCSAgY2FzZSAtMToKKy0JICAgIGV4aXQoMyk7CistCSAgY2FzZSAwOgorLQkgICAgc2V0 cGdpZCgwLCBwaWQxKTsKKy0JICAgIG9rID0gZ2V0cGdJRCgpID09IHBpZDE7CistCSAgICB3cml0 ZShmZHNbMV0sICZvaywgMSk7CistCSAgICBleGl0KDApOworLQl9CistCXNldHBnaWQocGlkMiwg cGlkMSk7CistCistCWNsb3NlKGZkc1sxXSk7CistCWlmIChyZWFkKGZkc1swXSwgJm9rLCAxKSAh PSAxKQorLQkgIGV4aXQoNCk7CistCXdhaXQoJnN0YXR1cyk7CistCXdhaXQoJnN0YXR1cyk7Cist CWV4aXQob2sgPyAwIDogNSk7CistfQorLQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X3J1biAi JExJTkVOTyIKKy10aGVuIDoKKy0gIGJhc2hfY3ZfcGdycF9waXBlPW5vCistZWxzZSBjYXNlIGUg aW4gIygKKy0gIGUpIGJhc2hfY3ZfcGdycF9waXBlPXllcyA7OworLWVzYWMKKy1maQorLXJtIC1m IGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNf ZXhlZXh0IFwKKy0gIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4k YWNfZXh0IDs7CistZXNhYworLWZpCistIDs7CistZXNhYworLWZpCistCisteyBwcmludGYgIiVz XG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGJhc2hfY3ZfcGdycF9w aXBlIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYmFzaF9jdl9wZ3JwX3BpcGUiID4mNjsgfQorLWlm IHRlc3QgJGJhc2hfY3ZfcGdycF9waXBlID0geWVzOyB0aGVuCistcHJpbnRmICIlc1xuIiAiI2Rl ZmluZSBQR1JQX1BJUEUgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy17IHByaW50ZiAiJXNc biIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHR5cGUgb2Ygc2ln bmFsIGZ1bmN0aW9ucyIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgdHlwZSBvZiBzaWdu YWwgZnVuY3Rpb25zLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2Jhc2hfY3Zfc2lnbmFsX3ZpbnRh Z2UreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2Ug ZSBpbiAjKAorLSAgZSkKKy1pZiB0ZXN0ICR7YmFzaF9jdl9wb3NpeF9zaWduYWxzK3l9CistdGhl biA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0g IGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQg Y29uZmRlZnMuaC4gICovCistCistI2luY2x1ZGUgPHNpZ25hbC5oPgorLQorLWludAorLW1haW4g KHZvaWQpCisteworLQorLSAgICBzaWdzZXRfdCBzczsKKy0gICAgc3RydWN0IHNpZ2FjdGlvbiBz YTsKKy0gICAgc2lnZW1wdHlzZXQoJnNzKTsgc2lnc3VzcGVuZCgmc3MpOworLSAgICBzaWdhY3Rp b24oU0lHSU5ULCAmc2EsIChzdHJ1Y3Qgc2lnYWN0aW9uICopIDApOworLSAgICBzaWdwcm9jbWFz ayhTSUdfQkxPQ0ssICZzcywgKHNpZ3NldF90ICopIDApOworLQorLSAgOworLSAgcmV0dXJuIDA7 CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6Cist ICBiYXNoX2N2X3Bvc2l4X3NpZ25hbHM9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGJh c2hfY3ZfcG9zaXhfc2lnbmFscz1ubworLSA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29u ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0 ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZpCistCistCistaWYg dGVzdCAkYmFzaF9jdl9wb3NpeF9zaWduYWxzID0geWVzOyB0aGVuCistICBiYXNoX2N2X3NpZ25h bF92aW50YWdlPXBvc2l4CistZWxzZQorLSAgaWYgdGVzdCAke2Jhc2hfY3ZfYnNkX3NpZ25hbHMr eX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBp biAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAor LS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0jaW5jbHVkZSA8c2lnbmFsLmg+CistCistaW50 CistbWFpbiAodm9pZCkKKy17CistCistaW50IG1hc2sgPSBzaWdtYXNrKFNJR0lOVCk7Cistc2ln c2V0bWFzayhtYXNrKTsgc2lnYmxvY2sobWFzayk7IHNpZ3BhdXNlKG1hc2spOworLQorLSAgOwor LSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8i CistdGhlbiA6CistICBiYXNoX2N2X2JzZF9zaWduYWxzPXllcworLWVsc2UgY2FzZSBlIGluICMo CistICBlKSBiYXNoX2N2X2JzZF9zaWduYWxzPW5vCistIDs7CistZXNhYworLWZpCistcm0gLWYg Y29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0g ICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy0K Ky0KKy0gIGlmIHRlc3QgJGJhc2hfY3ZfYnNkX3NpZ25hbHMgPSB5ZXM7IHRoZW4KKy0gICAgYmFz aF9jdl9zaWduYWxfdmludGFnZT00LjJic2QKKy0gIGVsc2UKKy0gICAgaWYgdGVzdCAke2Jhc2hf Y3Zfc3lzdl9zaWduYWxzK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2 CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv bmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCistI2luY2x1ZGUgPHNp Z25hbC5oPgorLXZvaWQgZm9vKCkgeyB9CistCistaW50CistbWFpbiAodm9pZCkKKy17CistCist aW50IG1hc2sgPSBzaWdtYXNrKFNJR0lOVCk7Cistc2lnc2V0KFNJR0lOVCwgZm9vKTsgc2lncmVs c2UoU0lHSU5UKTsKKy1zaWdob2xkKFNJR0lOVCk7IHNpZ3BhdXNlKFNJR0lOVCk7CistCistICA7 CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVO TyIKKy10aGVuIDoKKy0gIGJhc2hfY3Zfc3lzdl9zaWduYWxzPXllcworLWVsc2UgY2FzZSBlIGlu ICMoCistICBlKSBiYXNoX2N2X3N5c3Zfc2lnbmFscz1ubworLSA7OworLWVzYWMKKy1maQorLXJt IC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBc CistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZp CistCistCistICAgIGlmIHRlc3QgJGJhc2hfY3Zfc3lzdl9zaWduYWxzID0geWVzOyB0aGVuCist ICAgICAgYmFzaF9jdl9zaWduYWxfdmludGFnZT1zdnIzCistICAgIGVsc2UKKy0gICAgICBiYXNo X2N2X3NpZ25hbF92aW50YWdlPXY3CistICAgIGZpCistICBmaQorLWZpCistIDs7CistZXNhYwor LWZpCistCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogJGJhc2hfY3Zfc2lnbmFsX3ZpbnRhZ2UiID4mNQorLXByaW50ZiAiJXNcbiIgIiRiYXNo X2N2X3NpZ25hbF92aW50YWdlIiA+JjY7IH0KKy1pZiB0ZXN0ICIkYmFzaF9jdl9zaWduYWxfdmlu dGFnZSIgPSBwb3NpeDsgdGhlbgorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9QT1NJWF9T SUdOQUxTIDEiID4+Y29uZmRlZnMuaAorLQorLWVsaWYgdGVzdCAiJGJhc2hfY3Zfc2lnbmFsX3Zp bnRhZ2UiID0gIjQuMmJzZCI7IHRoZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfQlNE X1NJR05BTFMgMSIgPj5jb25mZGVmcy5oCistCistZWxpZiB0ZXN0ICIkYmFzaF9jdl9zaWduYWxf dmludGFnZSIgPSBzdnIzOyB0aGVuCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1VTR19T SUdIT0xEIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCistCisteyBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNfZXJybGlzdCBhbmQg c3lzX25lcnIiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHN5c19lcnJsaXN0IGFuZCBz eXNfbmVyci4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHtiYXNoX2N2X3N5c19lcnJsaXN0K3l9Cist dGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygK Ky0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBl bmQgY29uZmRlZnMuaC4gICovCistCistI2luY2x1ZGUgPGVycm5vLmg+CistCistaW50CistbWFp biAodm9pZCkKKy17CistCistZXh0ZXJuIGNoYXIgKnN5c19lcnJsaXN0W107CistZXh0ZXJuIGlu dCBzeXNfbmVycjsKKy1jaGFyICptc2cgPSBzeXNfZXJybGlzdFtzeXNfbmVyciAtIDFdOworLQor LSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRM SU5FTk8iCistdGhlbiA6CistICBiYXNoX2N2X3N5c19lcnJsaXN0PXllcworLWVsc2UgY2FzZSBl IGluICMoCistICBlKSBiYXNoX2N2X3N5c19lcnJsaXN0PW5vCistIDs7CistZXNhYworLWZpCist cm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFt IFwKKy0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCist ZmkKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz dWx0OiAkYmFzaF9jdl9zeXNfZXJybGlzdCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGJhc2hfY3Zf c3lzX2Vycmxpc3QiID4mNjsgfQorLWlmIHRlc3QgJGJhc2hfY3Zfc3lzX2Vycmxpc3QgPSB5ZXM7 IHRoZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1lTX0VSUkxJU1QgMSIgPj5jb25m ZGVmcy5oCistCistZmkKKy0KKy1hY19mbl9jaGVja19kZWNsICIkTElORU5PIiAic3lzX3NpZ2xp c3QiICJhY19jdl9oYXZlX2RlY2xfc3lzX3NpZ2xpc3QiICIjaW5jbHVkZSA8c2lnbmFsLmg+Cist LyogTmV0QlNEIGRlY2xhcmVzIHN5c19zaWdsaXN0IGluIHVuaXN0ZC5oLiAgKi8KKy0jaWZkZWYg SEFWRV9VTklTVERfSAorLSMgaW5jbHVkZSA8dW5pc3RkLmg+CistI2VuZGlmCistCistIiAiJGFj X2NfdW5kZWNsYXJlZF9idWlsdGluX29wdGlvbnMiICJDRkxBR1MiCistaWYgdGVzdCAieCRhY19j dl9oYXZlX2RlY2xfc3lzX3NpZ2xpc3QiID0geHllcworLXRoZW4gOgorLSAgYWNfaGF2ZV9kZWNs PTEKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfaGF2ZV9kZWNsPTAgOzsKKy1lc2FjCist ZmkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfREVDTF9TWVNfU0lHTElTVCAkYWNfaGF2 ZV9kZWNsIiA+PmNvbmZkZWZzLmgKKy0KKy0KKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c19zaWdsaXN0IGluIHN5c3RlbSBD IGxpYnJhcnkiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHN5c19zaWdsaXN0IGluIHN5 c3RlbSBDIGxpYnJhcnkuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl9zeXNfc2lnbGlz dCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBl IGluICMoCistICBlKSBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcworLXRoZW4gOgor LSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6 IGNhbm5vdCBjaGVjayBmb3Igc3lzX3NpZ2xpc3QgaWYgY3Jvc3MgY29tcGlsaW5nIC0tIGRlZmF1 bHRpbmcgdG8gbm8iID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogV0FSTklORzogY2Fubm90 IGNoZWNrIGZvciBzeXNfc2lnbGlzdCBpZiBjcm9zcyBjb21waWxpbmcgLS0gZGVmYXVsdGluZyB0 byBubyIgPiYyO30KKy0JIGJhc2hfY3Zfc3lzX3NpZ2xpc3Q9bm8KKy0KKy1lbHNlIGNhc2UgZSBp biAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAor LS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2lu Y2x1ZGUgPHNpZ25hbC5oPgorLSNpZmRlZiBIQVZFX1VOSVNURF9ICistI2luY2x1ZGUgPHVuaXN0 ZC5oPgorLSNlbmRpZgorLSNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaWYgIUhBVkVfREVDTF9TWVNf U0lHTElTVAorLWV4dGVybiBjaGFyICpzeXNfc2lnbGlzdFtdOworLSNlbmRpZgorLWludAorLW1h aW4oKQorLXsKKy1jaGFyICptc2cgPSBzeXNfc2lnbGlzdFsyXTsKKy1leGl0KG1zZyA9PSAwKTsK Ky19CistCistX0FDRU9GCistaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIgorLXRoZW4gOgor LSAgYmFzaF9jdl9zeXNfc2lnbGlzdD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYmFz aF9jdl9zeXNfc2lnbGlzdD1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgKi5jb3JlIGNv cmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKy0gIGNv bmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNh YworLWZpCistIDs7CistZXNhYworLWZpCistCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGJhc2hfY3Zfc3lzX3NpZ2xpc3QiID4mNQorLXBy aW50ZiAiJXNcbiIgIiRiYXNoX2N2X3N5c19zaWdsaXN0IiA+JjY7IH0KKy1pZiB0ZXN0ICRiYXNo X2N2X3N5c19zaWdsaXN0ID0geWVzOyB0aGVuCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZF X1NZU19TSUdMSVNUIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCisteyBwcmludGYgIiVzXG4i ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfc3lzX3NpZ2xpc3Qg aW4gc2lnbmFsLmggb3IgdW5pc3RkLmgiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIF9z eXNfc2lnbGlzdCBpbiBzaWduYWwuaCBvciB1bmlzdGQuaC4uLiAiID4mNjsgfQorLWlmIHRlc3Qg JHtiYXNoX2N2X2RlY2xfdW5kZXJfc3lzX3NpZ2xpc3QreX0KKy10aGVuIDoKKy0gIHByaW50ZiAl cyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8K Ky0KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHNpZ25hbC5oPgorLSNpZmRl ZiBIQVZFX1VOSVNURF9ICistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNlbmRpZgorLWludAorLW1h aW4gKHZvaWQpCisteworLSBjaGFyICptc2cgPSBfc3lzX3NpZ2xpc3RbMl07CistICA7CistICBy ZXR1cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIK Ky10aGVuIDoKKy0gIGJhc2hfY3ZfZGVjbF91bmRlcl9zeXNfc2lnbGlzdD15ZXMKKy1lbHNlIGNh c2UgZSBpbiAjKAorLSAgZSkgYmFzaF9jdl9kZWNsX3VuZGVyX3N5c19zaWdsaXN0PW5vIDs7Cist ZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBj b25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAi JXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl9kZWNs X3VuZGVyX3N5c19zaWdsaXN0IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYmFzaF9jdl9kZWNsX3Vu ZGVyX3N5c19zaWdsaXN0IiA+JjY7IH0KKy1pZiB0ZXN0ICRiYXNoX2N2X2RlY2xfdW5kZXJfc3lz X3NpZ2xpc3QgPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIFVOREVSX1NZU19T SUdMSVNUX0RFQ0xBUkVEIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCistCisteyBwcmludGYg IiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfc3lzX3Np Z2xpc3QgaW4gc3lzdGVtIEMgbGlicmFyeSIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3Ig X3N5c19zaWdsaXN0IGluIHN5c3RlbSBDIGxpYnJhcnkuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7 YmFzaF9jdl91bmRlcl9zeXNfc2lnbGlzdCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2Fj aGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiB0ZXN0ICIkY3Jvc3NfY29t cGlsaW5nIiA9IHllcworLXRoZW4gOgorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IFdBUk5JTkc6IGNhbm5vdCBjaGVjayBmb3IgX3N5c19zaWdsaXN0IGlm IGNyb3NzIGNvbXBpbGluZyAtLSBkZWZhdWx0aW5nIHRvIG5vIiA+JjUKKy1wcmludGYgIiVzXG4i ICIkYXNfbWU6IFdBUk5JTkc6IGNhbm5vdCBjaGVjayBmb3IgX3N5c19zaWdsaXN0IGlmIGNyb3Nz IGNvbXBpbGluZyAtLSBkZWZhdWx0aW5nIHRvIG5vIiA+JjI7fQorLQkgYmFzaF9jdl91bmRlcl9z eXNfc2lnbGlzdD1ubworLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMu aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLwor LQorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8c2lnbmFsLmg+CistI2lmZGVm IEhBVkVfVU5JU1REX0gKKy0jaW5jbHVkZSA8dW5pc3RkLmg+CistI2VuZGlmCistI2luY2x1ZGUg PHN0ZGxpYi5oPgorLSNpZm5kZWYgVU5ERVJfU1lTX1NJR0xJU1RfREVDTEFSRUQKKy1leHRlcm4g Y2hhciAqX3N5c19zaWdsaXN0W107CistI2VuZGlmCistaW50CistbWFpbigpCisteworLWNoYXIg Km1zZyA9IChjaGFyICopX3N5c19zaWdsaXN0WzJdOworLWV4aXQobXNnID09IDApOworLX0KKy0K Ky1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iCistdGhlbiA6CistICBiYXNo X2N2X3VuZGVyX3N5c19zaWdsaXN0PXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBiYXNo X2N2X3VuZGVyX3N5c19zaWdsaXN0PW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSAqLmNv cmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAor LSAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsK Ky1lc2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl91bmRlcl9zeXNfc2lnbGlz dCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGJhc2hfY3ZfdW5kZXJfc3lzX3NpZ2xpc3QiID4mNjsg fQorLWlmIHRlc3QgJGJhc2hfY3ZfdW5kZXJfc3lzX3NpZ2xpc3QgPSB5ZXM7IHRoZW4KKy1wcmlu dGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfVU5ERVJfU1lTX1NJR0xJU1QgMSIgPj5jb25mZGVmcy5o CistCistZmkKKy0KKy0KKy0KKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgZm9yIGNsb2NrX3QiID4mNQorLXByaW50ZiAlcyAiY2hlY2tp bmcgZm9yIGNsb2NrX3QuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl90eXBlX2Nsb2Nr X3QreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2Ug ZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4 dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2lm IEhBVkVfU1RETElCX0gKKy0jaW5jbHVkZSA8c3RkbGliLmg+CistI2VuZGlmCistI2lmIEhBVkVf U1REREVGX0gKKy0jaW5jbHVkZSA8c3RkZGVmLmg+CistI2VuZGlmCistI2lmIEhBVkVfSU5UVFlQ RVNfSAorLSNpbmNsdWRlIDxpbnR0eXBlcy5oPgorLSNlbmRpZgorLSNpZiBIQVZFX1NURElOVF9I CistI2luY2x1ZGUgPHN0ZGludC5oPgorLSNlbmRpZgorLSNpbmNsdWRlIDxzeXMvdGltZXMuaD4K Ky0KKy1fQUNFT0YKKy1pZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8 CistICAkRUdSRVBfVFJBRElUSU9OQUwgImNsb2NrX3QiID4vZGV2L251bGwgMj4mMQorLXRoZW4g OgorLSAgYmFzaF9jdl90eXBlX2Nsb2NrX3Q9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUp IGJhc2hfY3ZfdHlwZV9jbG9ja190PW5vIDs7CistZXNhYworLWZpCistcm0gLXJmIGNvbmZ0ZXN0 KgorLSA7OworLWVzYWMKKy1maQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRiYXNoX2N2X3R5cGVfY2xvY2tfdCIgPiY1CistcHJpbnRm ICIlc1xuIiAiJGJhc2hfY3ZfdHlwZV9jbG9ja190IiA+JjY7IH0KKy0KKy1pZiB0ZXN0ICRiYXNo X2N2X3R5cGVfY2xvY2tfdCA9IG5vOyB0aGVuCistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIGNs b2NrX3QgbG9uZyIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy0KKy0KKy17IHByaW50ZiAiJXNc biIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHNpZ3NldF90IiA+ JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBzaWdzZXRfdC4uLiAiID4mNjsgfQorLWlmIHRl c3QgJHtiYXNoX2N2X3R5cGVfc2lnc2V0X3QreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNh Y2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8 PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0jaW5j bHVkZSA8c3lzL3R5cGVzLmg+CistI2lmIEhBVkVfU1RETElCX0gKKy0jaW5jbHVkZSA8c3RkbGli Lmg+CistI2VuZGlmCistI2lmIEhBVkVfU1REREVGX0gKKy0jaW5jbHVkZSA8c3RkZGVmLmg+Cist I2VuZGlmCistI2lmIEhBVkVfSU5UVFlQRVNfSAorLSNpbmNsdWRlIDxpbnR0eXBlcy5oPgorLSNl bmRpZgorLSNpZiBIQVZFX1NURElOVF9ICistI2luY2x1ZGUgPHN0ZGludC5oPgorLSNlbmRpZgor LSNpbmNsdWRlIDxzaWduYWwuaD4KKy0KKy1fQUNFT0YKKy1pZiAoZXZhbCAiJGFjX2NwcCBjb25m dGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVBfVFJBRElUSU9OQUwgInNpZ3NldF90IiA+ L2Rldi9udWxsIDI+JjEKKy10aGVuIDoKKy0gIGJhc2hfY3ZfdHlwZV9zaWdzZXRfdD15ZXMKKy1l bHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYmFzaF9jdl90eXBlX3NpZ3NldF90PW5vIDs7CistZXNh YworLWZpCistcm0gLXJmIGNvbmZ0ZXN0KgorLSA7OworLWVzYWMKKy1maQorLQorLXsgcHJpbnRm ICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRiYXNoX2N2X3R5 cGVfc2lnc2V0X3QiID4mNQorLXByaW50ZiAiJXNcbiIgIiRiYXNoX2N2X3R5cGVfc2lnc2V0X3Qi ID4mNjsgfQorLQorLWlmIHRlc3QgJGJhc2hfY3ZfdHlwZV9zaWdzZXRfdCA9IG5vOyB0aGVuCist ICBwcmludGYgIiVzXG4iICIjZGVmaW5lIHNpZ3NldF90IGludCIgPj5jb25mZGVmcy5oCistCist ZmkKKy0KKy1pZiB0ZXN0ICIkYWNfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaCIgPSAieWVzIjsgdGhl bgorLQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBj aGVja2luZyBmb3Igc29ja2xlbl90IiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBzb2Nr bGVuX3QuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl90eXBlX3NvY2tsZW5fdCt5fQor LXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMo CistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyog ZW5kIGNvbmZkZWZzLmguICAqLworLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaWYgSEFWRV9T VERMSUJfSAorLSNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jZW5kaWYKKy0jaWYgSEFWRV9TVERERUZf SAorLSNpbmNsdWRlIDxzdGRkZWYuaD4KKy0jZW5kaWYKKy0jaWYgSEFWRV9JTlRUWVBFU19ICist I2luY2x1ZGUgPGludHR5cGVzLmg+CistI2VuZGlmCistI2lmIEhBVkVfU1RESU5UX0gKKy0jaW5j bHVkZSA8c3RkaW50Lmg+CistI2VuZGlmCistI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKy0KKy1f QUNFT0YKKy1pZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAk RUdSRVBfVFJBRElUSU9OQUwgInNvY2tsZW5fdCIgPi9kZXYvbnVsbCAyPiYxCistdGhlbiA6Cist ICBiYXNoX2N2X3R5cGVfc29ja2xlbl90PXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBi YXNoX2N2X3R5cGVfc29ja2xlbl90PW5vIDs7CistZXNhYworLWZpCistcm0gLXJmIGNvbmZ0ZXN0 KgorLSA7OworLWVzYWMKKy1maQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRiYXNoX2N2X3R5cGVfc29ja2xlbl90IiA+JjUKKy1wcmlu dGYgIiVzXG4iICIkYmFzaF9jdl90eXBlX3NvY2tsZW5fdCIgPiY2OyB9CistaWYgdGVzdCAkYmFz aF9jdl90eXBlX3NvY2tsZW5fdCA9IHllczsgdGhlbgorLQlwcmludGYgIiVzXG4iICIjZGVmaW5l IEhBVkVfU09DS0xFTl9UIDEiID4+Y29uZmRlZnMuaAorLQorLQlmaQorLWlmIHRlc3QgJGJhc2hf Y3ZfdHlwZV9zb2NrbGVuX3QgPSBubzsgdGhlbgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBz b2NrbGVuX3QgdW5zaWduZWQgaW50IiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLWZpCistCist YWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAicXVhZF90IiAiYWNfY3ZfdHlwZV9xdWFkX3Qi ICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfcXVhZF90IiA9 IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9RVUFEX1QgMSIg Pj5jb25mZGVmcy5oCistCistZmkKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHR5cGUgb2Ygc3RydWN0IHJsaW1pdCBmaWVsZHMi ID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHR5cGUgb2Ygc3RydWN0IHJsaW1pdCBmaWVs ZHMuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl90eXBlX3JsaW1pdCt5fQorLXRoZW4g OgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNv bmZkZWZzLmguICAqLworLQorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8c3lz L3Jlc291cmNlLmg+CistaW50CistbWFpbiAodm9pZCkKKy17CistcmxpbV90IHh4eDsKKy0KKy0g IDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIk TElORU5PIgorLXRoZW4gOgorLSAgYmFzaF9jdl90eXBlX3JsaW1pdD1ybGltX3QKKy1lbHNlIGNh c2UgZSBpbiAjKAorLSAgZSkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogY2hlY2tpbmcgZm9yIHNpemUgb2Ygc3RydWN0IHJsaW1pdCBmaWVsZHMiID4mNQor LXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHNpemUgb2Ygc3RydWN0IHJsaW1pdCBmaWVsZHMuLi4g IiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl9zaXplb2ZfcmxpbV9jdXIreX0KKy10aGVuIDoK Ky0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkg aWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXMKKy10aGVuIDoKKy0gIHsgcHJpbnRmICIl c1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYW5ub3QgY2hlY2sg c2l6ZSBvZiBybGltaXQgZmllbGRzIGlmIGNyb3NzIGNvbXBpbGluZyAtLSBkZWZhdWx0aW5nIHRv IGxvbmciID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogV0FSTklORzogY2Fubm90IGNoZWNr IHNpemUgb2YgcmxpbWl0IGZpZWxkcyBpZiBjcm9zcyBjb21waWxpbmcgLS0gZGVmYXVsdGluZyB0 byBsb25nIiA+JjI7fQorLQkgYmFzaF9jdl9zaXplb2ZfcmxpbV9jdXI9JGFjX2N2X3NpemVvZl9s b25nCistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF T0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCistI2lmZGVm IEhBVkVfU1lTX1RJTUVfSAorLSNpbmNsdWRlIDxzeXMvdGltZS5oPgorLSNlbmRpZgorLSNpbmNs dWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CistaW50CistbWFpbigp CisteworLXN0cnVjdCBybGltaXQgcjsKKy1leGl0KHNpemVvZiAoci5ybGltX2N1cikpOworLX0K Ky0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iCistdGhlbiA6CistICBi YXNoX2N2X3NpemVvZl9ybGltX2N1cj0kPworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBiYXNo X2N2X3NpemVvZl9ybGltX2N1cj0kPyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgKi5jb3Jl IGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKy0g IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7Cist ZXNhYworLWZpCistIDs7CistZXNhYworLWZpCistCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGJhc2hfY3Zfc2l6ZW9mX3JsaW1fY3VyIiA+ JjUKKy1wcmludGYgIiVzXG4iICIkYmFzaF9jdl9zaXplb2ZfcmxpbV9jdXIiID4mNjsgfQorLQor LXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm b3Igc2l6ZSBvZiBxdWFkX3QiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHNpemUgb2Yg cXVhZF90Li4uICIgPiY2OyB9CistaWYgdGVzdCAke2Jhc2hfY3Zfc2l6ZW9mX3F1YWRfdCt5fQor LXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMo CistICBlKSBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcworLXRoZW4gOgorLSAgeyBw cmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IGNhbm5v dCBjaGVjayBzaXplIG9mIHF1YWRfdCBpZiBjcm9zcyBjb21waWxpbmcgLS0gZGVmYXVsdGluZyB0 byAwIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IFdBUk5JTkc6IGNhbm5vdCBjaGVjayBz aXplIG9mIHF1YWRfdCBpZiBjcm9zcyBjb21waWxpbmcgLS0gZGVmYXVsdGluZyB0byAwIiA+JjI7 fQorLQkgYmFzaF9jdl9zaXplb2ZfcXVhZF90PTAKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBj b25mZGVmcy5oLiAgKi8KKy0KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN0 ZGxpYi5oPgorLSNpZiBIQVZFX0lOVFRZUEVTX0gKKy0jaW5jbHVkZSA8aW50dHlwZXMuaD4KKy0j ZW5kaWYKKy0jaWYgSEFWRV9TVERJTlRfSAorLSNpbmNsdWRlIDxzdGRpbnQuaD4KKy0jZW5kaWYK Ky0KKy1pbnQKKy1tYWluKCkKKy17CistI2lmIEhBVkVfUVVBRF9UCistcXVhZF90IHg7CistZXhp dChzaXplb2YgKHgpKTsKKy0jZWxzZQorLWV4aXQgKDApOworLSNlbmRpZgorLX0KKy0KKy1fQUNF T0YKKy1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iCistdGhlbiA6CistICBiYXNoX2N2X3Np emVvZl9xdWFkX3Q9JD8KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYmFzaF9jdl9zaXplb2Zf cXVhZF90PSQ/IDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVz dC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorLSAgY29uZnRlc3QuJGFj X29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy0g OzsKKy1lc2FjCistZmkKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl9zaXplb2ZfcXVhZF90IiA+JjUKKy1wcmludGYgIiVz XG4iICIkYmFzaF9jdl9zaXplb2ZfcXVhZF90IiA+JjY7IH0KKy0KKy1pZiB0ZXN0ICRiYXNoX2N2 X3NpemVvZl9ybGltX2N1ciA9ICRhY19jdl9zaXplb2ZfbG9uZzsgdGhlbgorLSAgYmFzaF9jdl90 eXBlX3JsaW1pdD0ndW5zaWduZWQgbG9uZycKKy1lbGlmIHRlc3QgJGJhc2hfY3Zfc2l6ZW9mX3Js aW1fY3VyID0gJGFjX2N2X3NpemVvZl9sb25nX2xvbmc7IHRoZW4KKy0gIGJhc2hfY3ZfdHlwZV9y bGltaXQ9J3Vuc2lnbmVkIGxvbmcgbG9uZycKKy1lbGlmIHRlc3QgJGJhc2hfY3Zfc2l6ZW9mX3Js aW1fY3VyID0gJGFjX2N2X3NpemVvZl9pbnQ7IHRoZW4KKy0gIGJhc2hfY3ZfdHlwZV9ybGltaXQ9 J3Vuc2lnbmVkIGludCcKKy1lbGlmIHRlc3QgJGJhc2hfY3Zfc2l6ZW9mX3JsaW1fY3VyID0gJGJh c2hfY3Zfc2l6ZW9mX3F1YWRfdDsgdGhlbgorLSAgYmFzaF9jdl90eXBlX3JsaW1pdD0ncXVhZF90 JworLWVsc2UKKy0gIGJhc2hfY3ZfdHlwZV9ybGltaXQ9J3Vuc2lnbmVkIGxvbmcnCistZmkKKy0K Ky0gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNf b2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLQor LXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRi YXNoX2N2X3R5cGVfcmxpbWl0IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYmFzaF9jdl90eXBlX3Js aW1pdCIgPiY2OyB9CistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBSTElNVFlQRSAkYmFzaF9jdl90 eXBlX3JsaW1pdCIgPj5jb25mZGVmcy5oCistCistCistCistCistCistICBhY19mbl9jX2NoZWNr X3R5cGUgIiRMSU5FTk8iICJpbnRtYXhfdCIgImFjX2N2X3R5cGVfaW50bWF4X3QiICIkYWNfaW5j bHVkZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfaW50bWF4X3QiID0geHllcwor LXRoZW4gOgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9JTlRNQVhfVCAxIiA+PmNv bmZkZWZzLmgKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgdGVzdCAkYWNfY3ZfdHlwZV9s b25nX2xvbmdfaW50ID0geWVzIFwKKy0gICAgICAgJiYgYWNfdHlwZT0nbG9uZyBsb25nIGludCcg XAorLSAgICAgICB8fCBhY190eXBlPSdsb25nIGludCcKKy0KKy1wcmludGYgIiVzXG4iICIjZGVm aW5lIGludG1heF90ICRhY190eXBlIiA+PmNvbmZkZWZzLmgKKy0gOzsKKy1lc2FjCistZmkKKy0K Ky0KKy0KKy0KKy0gIGFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInVpbnRtYXhfdCIgImFj X2N2X3R5cGVfdWludG1heF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCistaWYgdGVzdCAieCRh Y19jdl90eXBlX3VpbnRtYXhfdCIgPSB4eWVzCistdGhlbiA6CistCistcHJpbnRmICIlc1xuIiAi I2RlZmluZSBIQVZFX1VJTlRNQVhfVCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1lbHNlIGNhc2UgZSBp biAjKAorLSAgZSkgdGVzdCAkYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmdfaW50ID0geWVz IFwKKy0gICAgICAgJiYgYWNfdHlwZT0ndW5zaWduZWQgbG9uZyBsb25nIGludCcgXAorLSAgICAg ICB8fCBhY190eXBlPSd1bnNpZ25lZCBsb25nIGludCcKKy0KKy1wcmludGYgIiVzXG4iICIjZGVm aW5lIHVpbnRtYXhfdCAkYWNfdHlwZSIgPj5jb25mZGVmcy5oCistIDs7CistZXNhYworLWZpCist CistCistCistIyBUaGUgY2FzdCB0byBsb25nIGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhl IEhQIEMgQ29tcGlsZXIKKy0jIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3 aGljaCBpbmNvcnJlY3RseSByZWplY3RzCistIyBkZWNsYXJhdGlvbnMgbGlrZSAnaW50IGEzW1so c2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCistIyBUaGlzIGJ1ZyBpcyBIUCBTUiBu dW1iZXIgODYwNjIyMzM2NC4KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiBpbnRtYXhfdCIgPiY1CistcHJpbnRmICVzICJjaGVj a2luZyBzaXplIG9mIGludG1heF90Li4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X3NpemVv Zl9pbnRtYXhfdCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVs c2UgY2FzZSBlIGluICMoCistICBlKSBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAi KGxvbmcgaW50KSAoc2l6ZW9mIChpbnRtYXhfdCkpIiAiYWNfY3Zfc2l6ZW9mX2ludG1heF90IiAg ICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorLXRoZW4gOgorLQorLWVsc2UgY2FzZSBlIGlu ICMoCistICBlKSBpZiB0ZXN0ICIkYWNfY3ZfdHlwZV9pbnRtYXhfdCIgPSB5ZXM7IHRoZW4KKy0g ICAgIHsgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9y OiBpbiAnJGFjX3B3ZCc6IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IGVycm9yOiBpbiAn JGFjX3B3ZCc6IiA+JjI7fQorLWFzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2Yg KGludG1heF90KQorLVNlZSAnY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8i IDU7IH0KKy0gICBlbHNlCistICAgICBhY19jdl9zaXplb2ZfaW50bWF4X3Q9MAorLSAgIGZpIDs7 CistZXNhYworLWZpCistIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3NpemVvZl9pbnRtYXhfdCIgPiY1 CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X3NpemVvZl9pbnRtYXhfdCIgPiY2OyB9CistCistCist CistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBTSVpFT0ZfSU5UTUFYX1QgJGFjX2N2X3NpemVvZl9p bnRtYXhfdCIgPj5jb25mZGVmcy5oCistCistCistCistCistYWNfZm5fY19jaGVja19tZW1iZXIg IiRMSU5FTk8iICJzdHJ1Y3QgdGVybWlvcyIgImNfbGluZSIgImFjX2N2X21lbWJlcl9zdHJ1Y3Rf dGVybWlvc19jX2xpbmUiICIKKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHRl cm1pb3MuaD4KKy0KKy0iCistaWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3Rlcm1pb3Nf Y19saW5lIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgVEVSTUlP U19MRElTQyAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLQorLQorLWFjX2ZuX2NfY2hlY2tf bWVtYmVyICIkTElORU5PIiAic3RydWN0IHRlcm1pbyIgImNfbGluZSIgImFjX2N2X21lbWJlcl9z dHJ1Y3RfdGVybWlvX2NfbGluZSIgIgorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVk ZSA8dGVybWlvLmg+CistCistIgorLWlmIHRlc3QgIngkYWNfY3ZfbWVtYmVyX3N0cnVjdF90ZXJt aW9fY19saW5lIiA9IHh5ZXMKKy10aGVuIDoKKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgVEVS TUlPX0xESVNDIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCistCistCistCistYWNfZm5fY19j aGVja19tZW1iZXIgIiRMSU5FTk8iICJzdHJ1Y3QgZGlyZW50IiAiZF9pbm8iICJhY19jdl9tZW1i ZXJfc3RydWN0X2RpcmVudF9kX2lubyIgIgorLSNpbmNsdWRlIDxzdGRpby5oPgorLSNpbmNsdWRl IDxzeXMvdHlwZXMuaD4KKy0jaWZkZWYgSEFWRV9VTklTVERfSAorLSMgaW5jbHVkZSA8dW5pc3Rk Lmg+CistI2VuZGlmIC8qIEhBVkVfVU5JU1REX0ggKi8KKy0jaWYgZGVmaW5lZChIQVZFX0RJUkVO VF9IKQorLSMgaW5jbHVkZSA8ZGlyZW50Lmg+CistI2Vsc2UKKy0jIGRlZmluZSBkaXJlbnQgZGly ZWN0CistIyBpZmRlZiBIQVZFX1NZU19ORElSX0gKKy0jICBpbmNsdWRlIDxzeXMvbmRpci5oPgor LSMgZW5kaWYgLyogU1lTTkRJUiAqLworLSMgaWZkZWYgSEFWRV9TWVNfRElSX0gKKy0jICBpbmNs dWRlIDxzeXMvZGlyLmg+CistIyBlbmRpZiAvKiBTWVNESVIgKi8KKy0jIGlmZGVmIEhBVkVfTkRJ Ul9ICistIyAgaW5jbHVkZSA8bmRpci5oPgorLSMgZW5kaWYKKy0jZW5kaWYgLyogSEFWRV9ESVJF TlRfSCAqLworLQorLSIKKy1pZiB0ZXN0ICJ4JGFjX2N2X21lbWJlcl9zdHJ1Y3RfZGlyZW50X2Rf aW5vIiA9IHh5ZXMKKy10aGVuIDoKKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1RS VUNUX0RJUkVOVF9EX0lOTyAxIiA+PmNvbmZkZWZzLmgKKy0KKy0KKy1maQorLQorLQorLQorLQor LWFjX2ZuX2NfY2hlY2tfbWVtYmVyICIkTElORU5PIiAic3RydWN0IGRpcmVudCIgImRfZmlsZW5v IiAiYWNfY3ZfbWVtYmVyX3N0cnVjdF9kaXJlbnRfZF9maWxlbm8iICIKKy0jaW5jbHVkZSA8c3Rk aW8uaD4KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2lmZGVmIEhBVkVfVU5JU1REX0gKKy0j IGluY2x1ZGUgPHVuaXN0ZC5oPgorLSNlbmRpZiAvKiBIQVZFX1VOSVNURF9IICovCistI2lmIGRl ZmluZWQoSEFWRV9ESVJFTlRfSCkKKy0jIGluY2x1ZGUgPGRpcmVudC5oPgorLSNlbHNlCistIyBk ZWZpbmUgZGlyZW50IGRpcmVjdAorLSMgaWZkZWYgSEFWRV9TWVNfTkRJUl9ICistIyAgaW5jbHVk ZSA8c3lzL25kaXIuaD4KKy0jIGVuZGlmIC8qIFNZU05ESVIgKi8KKy0jIGlmZGVmIEhBVkVfU1lT X0RJUl9ICistIyAgaW5jbHVkZSA8c3lzL2Rpci5oPgorLSMgZW5kaWYgLyogU1lTRElSICovCist IyBpZmRlZiBIQVZFX05ESVJfSAorLSMgIGluY2x1ZGUgPG5kaXIuaD4KKy0jIGVuZGlmCistI2Vu ZGlmIC8qIEhBVkVfRElSRU5UX0ggKi8KKy0KKy0iCistaWYgdGVzdCAieCRhY19jdl9tZW1iZXJf c3RydWN0X2RpcmVudF9kX2ZpbGVubyIgPSB4eWVzCistdGhlbiA6CistCistcHJpbnRmICIlc1xu IiAiI2RlZmluZSBIQVZFX1NUUlVDVF9ESVJFTlRfRF9GSUxFTk8gMSIgPj5jb25mZGVmcy5oCist CistCistZmkKKy0KKy0KKy0KKy0KKy1hY19mbl9jX2NoZWNrX21lbWJlciAiJExJTkVOTyIgInN0 cnVjdCBkaXJlbnQiICJkX25hbWxlbiIgImFjX2N2X21lbWJlcl9zdHJ1Y3RfZGlyZW50X2RfbmFt bGVuIiAiCistI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNp ZmRlZiBIQVZFX1VOSVNURF9ICistIyBpbmNsdWRlIDx1bmlzdGQuaD4KKy0jZW5kaWYgLyogSEFW RV9VTklTVERfSCAqLworLSNpZiBkZWZpbmVkKEhBVkVfRElSRU5UX0gpCistIyBpbmNsdWRlIDxk aXJlbnQuaD4KKy0jZWxzZQorLSMgZGVmaW5lIGRpcmVudCBkaXJlY3QKKy0jIGlmZGVmIEhBVkVf U1lTX05ESVJfSAorLSMgIGluY2x1ZGUgPHN5cy9uZGlyLmg+CistIyBlbmRpZiAvKiBTWVNORElS ICovCistIyBpZmRlZiBIQVZFX1NZU19ESVJfSAorLSMgIGluY2x1ZGUgPHN5cy9kaXIuaD4KKy0j IGVuZGlmIC8qIFNZU0RJUiAqLworLSMgaWZkZWYgSEFWRV9ORElSX0gKKy0jICBpbmNsdWRlIDxu ZGlyLmg+CistIyBlbmRpZgorLSNlbmRpZiAvKiBIQVZFX0RJUkVOVF9IICovCistCistIgorLWlm IHRlc3QgIngkYWNfY3ZfbWVtYmVyX3N0cnVjdF9kaXJlbnRfZF9uYW1sZW4iID0geHllcworLXRo ZW4gOgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TVFJVQ1RfRElSRU5UX0RfTkFN TEVOIDEiID4+Y29uZmRlZnMuaAorLQorLQorLWZpCistCistCisteyBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkX3R5cGUgbWVtYmVyIGlu IGRpcmVjdG9yeSBzdHJ1Y3QiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIGRfdHlwZSBt ZW1iZXIgaW4gZGlyZWN0b3J5IHN0cnVjdC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHtnbF9jdl9z dHJ1Y3RfZGlyZW50X2RfdHlwZSt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAi ID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G ID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLSNpbmNsdWRl IDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8ZGlyZW50Lmg+CistCistaW50CistbWFpbiAodm9p ZCkKKy17Cistc3RydWN0IGRpcmVudCBkcDsgZHAuZF90eXBlID0gMDsKKy0gIDsKKy0gIHJldHVy biAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIgorLXRoZW4g OgorLSAgZ2xfY3Zfc3RydWN0X2RpcmVudF9kX3R5cGU9eWVzCistZWxzZSBjYXNlIGUgaW4gIygK Ky0gIGUpIGdsX2N2X3N0cnVjdF9kaXJlbnRfZF90eXBlPW5vIDs7CistZXNhYworLWZpCistcm0g LWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwK Ky0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0KKy0gICAgOzsKKy1l c2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkZ2xfY3Zfc3RydWN0X2RpcmVudF9kX3R5cGUiID4mNQorLXByaW50ZiAiJXNcbiIg IiRnbF9jdl9zdHJ1Y3RfZGlyZW50X2RfdHlwZSIgPiY2OyB9CistICAgaWYgdGVzdCAkZ2xfY3Zf c3RydWN0X2RpcmVudF9kX3R5cGUgPSB5ZXM7IHRoZW4KKy0KKy1wcmludGYgIiVzXG4iICIjZGVm aW5lIEhBVkVfU1RSVUNUX0RJUkVOVF9EX1RZUEUgMSIgPj5jb25mZGVmcy5oCistCistICAgZmkK Ky0KKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgZm9yIHN0cnVjdCB3aW5zaXplIGluIHN5cy9pb2N0bC5oIGFuZCB0ZXJtaW9zLmgiID4m NQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHN0cnVjdCB3aW5zaXplIGluIHN5cy9pb2N0bC5o IGFuZCB0ZXJtaW9zLmguLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl9zdHJ1Y3Rfd2lu c2l6ZV9oZWFkZXIreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1l bHNlIGNhc2UgZSBpbiAjKAorLSAgZSkKKy1pZiB0ZXN0ICR7YmFzaF9jdl9zdHJ1Y3Rfd2luc2l6 ZV9pb2N0bCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k YWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLSNpbmNsdWRlIDxzeXMvdHlwZXMu aD4KKy0jaW5jbHVkZSA8c3lzL2lvY3RsLmg+CistCistaW50CistbWFpbiAodm9pZCkKKy17Cist Cistc3RydWN0IHdpbnNpemUgeDsKKy1pZiAoc2l6ZW9mICh4KSA+IDApIHJldHVybiAoMCk7Cist CistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGls ZSAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGJhc2hfY3Zfc3RydWN0X3dpbnNpemVfaW9jdGw9eWVz CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3Zfc3RydWN0X3dpbnNpemVfaW9jdGw9 bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNf b2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorLSA7OworLWVzYWMKKy1maQor LQorLQorLWlmIHRlc3QgJHtiYXNoX2N2X3N0cnVjdF93aW5zaXplX3Rlcm1pb3MreX0KKy10aGVu IDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBj b25mZGVmcy5oLiAgKi8KKy0KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5 cy90ZXJtaW9zLmg+CistCistaW50CistbWFpbiAodm9pZCkKKy17CistCistc3RydWN0IHdpbnNp emUgeDsKKy1pZiAoc2l6ZW9mICh4KSA+IDApIHJldHVybiAoMCk7CistCistICA7CistICByZXR1 cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10 aGVuIDoKKy0gIGJhc2hfY3Zfc3RydWN0X3dpbnNpemVfdGVybWlvcz15ZXMKKy1lbHNlIGNhc2Ug ZSBpbiAjKAorLSAgZSkgYmFzaF9jdl9zdHJ1Y3Rfd2luc2l6ZV90ZXJtaW9zPW5vIDs7CistZXNh YworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25m dGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKKy0gOzsKKy1lc2FjCistZmkKKy0KKy0KKy0KKy1p ZiB0ZXN0ICRiYXNoX2N2X3N0cnVjdF93aW5zaXplX2lvY3RsID0geWVzOyB0aGVuCistICBiYXNo X2N2X3N0cnVjdF93aW5zaXplX2hlYWRlcj1pb2N0bF9oCistZWxpZiB0ZXN0ICRiYXNoX2N2X3N0 cnVjdF93aW5zaXplX3Rlcm1pb3MgPSB5ZXM7IHRoZW4KKy0gIGJhc2hfY3Zfc3RydWN0X3dpbnNp emVfaGVhZGVyPXRlcm1pb3NfaAorLWVsc2UKKy0gIGJhc2hfY3Zfc3RydWN0X3dpbnNpemVfaGVh ZGVyPW90aGVyCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy0KKy1pZiB0ZXN0ICRiYXNoX2N2X3N0 cnVjdF93aW5zaXplX2hlYWRlciA9IGlvY3RsX2g7IHRoZW4KKy0gIHsgcHJpbnRmICIlc1xuIiAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHN5cy9pb2N0bC5oIiA+JjUKKy1w cmludGYgIiVzXG4iICJzeXMvaW9jdGwuaCIgPiY2OyB9CistICBwcmludGYgIiVzXG4iICIjZGVm aW5lIFNUUlVDVF9XSU5TSVpFX0lOX1NZU19JT0NUTCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1lbGlm IHRlc3QgJGJhc2hfY3Zfc3RydWN0X3dpbnNpemVfaGVhZGVyID0gdGVybWlvc19oOyB0aGVuCist ICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB0 ZXJtaW9zLmgiID4mNQorLXByaW50ZiAiJXNcbiIgInRlcm1pb3MuaCIgPiY2OyB9CistICBwcmlu dGYgIiVzXG4iICIjZGVmaW5lIFNUUlVDVF9XSU5TSVpFX0lOX1RFUk1JT1MgMSIgPj5jb25mZGVm cy5oCistCistZWxzZQorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogbm90IGZvdW5kIiA+JjUKKy1wcmludGYgIiVzXG4iICJub3QgZm91bmQi ID4mNjsgfQorLWZpCistCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGZvciBzdHJ1Y3QgdGltZXZhbCBpbiBzeXMvdGltZS5oIGFuZCB0aW1l LmgiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHN0cnVjdCB0aW1ldmFsIGluIHN5cy90 aW1lLmggYW5kIHRpbWUuaC4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHtiYXNoX2N2X3N0cnVjdF90 aW1ldmFsK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBj YXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRh Y19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistI2lmIEhBVkVfU1lTX1RJTUVfSAorLQkJ ICAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKy0JCSAgI2VuZGlmCistCQkgICNpbmNsdWRlIDx0aW1l Lmg+CistCistaW50CistbWFpbiAodm9pZCkKKy17Cistc3RhdGljIHN0cnVjdCB0aW1ldmFsIHg7 IHgudHZfc2VjID0geC50dl91c2VjOworLQorLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VP RgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6CistICBiYXNoX2N2 X3N0cnVjdF90aW1ldmFsPXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBiYXNoX2N2X3N0 cnVjdF90aW1ldmFsPW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIg Y29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKKy0gOzsK Ky1lc2FjCistZmkKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogcmVzdWx0OiAkYmFzaF9jdl9zdHJ1Y3RfdGltZXZhbCIgPiY1CistcHJpbnRmICIlc1xu IiAiJGJhc2hfY3Zfc3RydWN0X3RpbWV2YWwiID4mNjsgfQorLWlmIHRlc3QgJGJhc2hfY3Zfc3Ry dWN0X3RpbWV2YWwgPSB5ZXM7IHRoZW4KKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9U SU1FVkFMIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCistYWNfZm5fY19jaGVja19tZW1iZXIg IiRMSU5FTk8iICJzdHJ1Y3Qgc3RhdCIgInN0X2Jsb2NrcyIgImFjX2N2X21lbWJlcl9zdHJ1Y3Rf c3RhdF9zdF9ibG9ja3MiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKKy1pZiB0ZXN0ICJ4JGFjX2N2 X21lbWJlcl9zdHJ1Y3Rfc3RhdF9zdF9ibG9ja3MiID0geHllcworLXRoZW4gOgorLQorLXByaW50 ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTE9DS1MgMSIgPj5jb25mZGVm cy5oCistCistCistZmkKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogY2hlY2tpbmcgd2hldGhlciBzdHJ1Y3QgdG0gaXMgaW4gc3lzL3RpbWUuaCBvciB0 aW1lLmgiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgd2hldGhlciBzdHJ1Y3QgdG0gaXMgaW4g c3lzL3RpbWUuaCBvciB0aW1lLmguLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3Zfc3RydWN0 X3RtK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19l eHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNp bmNsdWRlIDx0aW1lLmg+CistCistaW50CistbWFpbiAodm9pZCkKKy17Cistc3RydWN0IHRtIHRt OworLQkJCQkgICAgIGludCAqcCA9ICZ0bS50bV9zZWM7CistCQkJCSAgICAgcmV0dXJuICFwOwor LSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUg IiRMSU5FTk8iCistdGhlbiA6CistICBhY19jdl9zdHJ1Y3RfdG09dGltZS5oCistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIGFjX2N2X3N0cnVjdF90bT1zeXMvdGltZS5oIDs7CistZXNhYworLWZp Cistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5i ZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc3RydWN0X3RtIiA+JjUK Ky1wcmludGYgIiVzXG4iICIkYWNfY3Zfc3RydWN0X3RtIiA+JjY7IH0KKy1pZiB0ZXN0ICRhY19j dl9zdHJ1Y3RfdG0gPSBzeXMvdGltZS5oOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmlu ZSBUTV9JTl9TWVNfVElNRSAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLWFjX2ZuX2NfY2hl Y2tfbWVtYmVyICIkTElORU5PIiAic3RydWN0IHRtIiAidG1fem9uZSIgImFjX2N2X21lbWJlcl9z dHJ1Y3RfdG1fdG1fem9uZSIgIiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8JGFj X2N2X3N0cnVjdF90bT4KKy0KKy0iCistaWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3Rt X3RtX3pvbmUiID0geHllcworLXRoZW4gOgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFW RV9TVFJVQ1RfVE1fVE1fWk9ORSAxIiA+PmNvbmZkZWZzLmgKKy0KKy0KKy1maQorLQorLWlmIHRl c3QgIiRhY19jdl9tZW1iZXJfc3RydWN0X3RtX3RtX3pvbmUiID0geWVzOyB0aGVuCistCistcHJp bnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1RNX1pPTkUgMSIgPj5jb25mZGVmcy5oCistCistZWxz ZQorLSAgYWNfZm5fY2hlY2tfZGVjbCAiJExJTkVOTyIgInR6bmFtZSIgImFjX2N2X2hhdmVfZGVj bF90em5hbWUiICIjaW5jbHVkZSA8dGltZS5oPgorLSIgIiRhY19jX3VuZGVjbGFyZWRfYnVpbHRp bl9vcHRpb25zIiAiQ0ZMQUdTIgorLWlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX3R6bmFtZSIg PSB4eWVzCistdGhlbiA6CistICBhY19oYXZlX2RlY2w9MQorLWVsc2UgY2FzZSBlIGluICMoCist ICBlKSBhY19oYXZlX2RlY2w9MCA7OworLWVzYWMKKy1maQorLXByaW50ZiAiJXNcbiIgIiNkZWZp bmUgSEFWRV9ERUNMX1RaTkFNRSAkYWNfaGF2ZV9kZWNsIiA+PmNvbmZkZWZzLmgKKy0KKy0gIHsg cHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig dHpuYW1lIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciB0em5hbWUuLi4gIiA+JjY7IH0K Ky1pZiB0ZXN0ICR7YWNfY3ZfdmFyX3R6bmFtZSt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIo Y2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAt IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLSNp bmNsdWRlIDx0aW1lLmg+CistI2lmICFIQVZFX0RFQ0xfVFpOQU1FCistZXh0ZXJuIGNoYXIgKnR6 bmFtZVtdOworLSNlbmRpZgorLQorLWludAorLW1haW4gKHZvaWQpCisteworLXJldHVybiB0em5h bWVbMF1bMF07CistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190 cnlfbGluayAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGFjX2N2X3Zhcl90em5hbWU9eWVzCistZWxz ZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2N2X3Zhcl90em5hbWU9bm8gOzsKKy1lc2FjCistZmkK Ky1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJl YW0gXAorLSAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMK Ky1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6ICRhY19jdl92YXJfdHpuYW1lIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfY3ZfdmFyX3R6 bmFtZSIgPiY2OyB9CistICBpZiB0ZXN0ICRhY19jdl92YXJfdHpuYW1lID0geWVzOyB0aGVuCist CistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1RaTkFNRSAxIiA+PmNvbmZkZWZzLmgKKy0K Ky0gIGZpCistZmkKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgZm9yIHN0cnVjdCB0aW1lem9uZSBpbiBzeXMvdGltZS5oIGFuZCB0aW1l LmgiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHN0cnVjdCB0aW1lem9uZSBpbiBzeXMv dGltZS5oIGFuZCB0aW1lLmguLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl9zdHJ1Y3Rf dGltZXpvbmUreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNl IGNhc2UgZSBpbiAjKAorLSAgZSkKKy1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz dC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLSNpbmNsdWRlIDxzeXMvdGltZS5o PgorLQorLV9BQ0VPRgorLWlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1 IHwKKy0gICRFR1JFUF9UUkFESVRJT05BTCAic3RydWN0IHRpbWV6b25lIiA+L2Rldi9udWxsIDI+ JjEKKy10aGVuIDoKKy0gIGJhc2hfY3Zfc3RydWN0X3RpbWV6b25lPXllcworLWVsc2UgY2FzZSBl IGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0 CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLSNpbmNsdWRlIDx0aW1lLmg+CistCistX0FDRU9G CistaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQ X1RSQURJVElPTkFMICJzdHJ1Y3QgdGltZXpvbmUiID4vZGV2L251bGwgMj4mMQorLXRoZW4gOgor LSAgYmFzaF9jdl9zdHJ1Y3RfdGltZXpvbmU9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUp IGJhc2hfY3Zfc3RydWN0X3RpbWV6b25lPW5vIDs7CistZXNhYworLWZpCistcm0gLXJmIGNvbmZ0 ZXN0KgorLSA7OworLWVzYWMKKy1maQorLXJtIC1yZiBjb25mdGVzdCoKKy0KKy0gOzsKKy1lc2Fj CistZmkKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkYmFzaF9jdl9zdHJ1Y3RfdGltZXpvbmUiID4mNQorLXByaW50ZiAiJXNcbiIgIiRi YXNoX2N2X3N0cnVjdF90aW1lem9uZSIgPiY2OyB9CistaWYgdGVzdCAkYmFzaF9jdl9zdHJ1Y3Rf dGltZXpvbmUgPSB5ZXM7IHRoZW4KKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TVFJV Q1RfVElNRVpPTkUgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy0KKy17IHByaW50ZiAiJXNc biIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG9mZnNldCBvZiBl eGl0IHN0YXR1cyBpbiByZXR1cm4gc3RhdHVzIGZyb20gd2FpdCIgPiY1CistcHJpbnRmICVzICJj aGVja2luZyBmb3Igb2Zmc2V0IG9mIGV4aXQgc3RhdHVzIGluIHJldHVybiBzdGF0dXMgZnJvbSB3 YWl0Li4uICIgPiY2OyB9CistaWYgdGVzdCAke2Jhc2hfY3Zfd2V4aXRzdGF0dXNfb2Zmc2V0K3l9 CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4g IygKKy0gIGUpIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzCistdGhlbiA6CistICB7 IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogY2Fu bm90IGNoZWNrIFdFWElUU1RBVFVTIG9mZnNldCBpZiBjcm9zcyBjb21waWxpbmcgLS0gZGVmYXVs dGluZyB0byAwIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IFdBUk5JTkc6IGNhbm5vdCBj aGVjayBXRVhJVFNUQVRVUyBvZmZzZXQgaWYgY3Jvc3MgY29tcGlsaW5nIC0tIGRlZmF1bHRpbmcg dG8gMCIgPiYyO30KKy0gICAgYmFzaF9jdl93ZXhpdHN0YXR1c19vZmZzZXQ9MAorLQorLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k YWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLSNpbmNsdWRlIDxzdGRsaWIuaD4K Ky0jaW5jbHVkZSA8dW5pc3RkLmg+CistCistI2luY2x1ZGUgPHN5cy93YWl0Lmg+CistCistaW50 CistbWFpbihpbnQgYywgY2hhciAqKnYpCisteworLSAgcGlkX3QgcGlkLCBwOworLSAgaW50IHMs IGksIG47CistCistICBzID0gMDsKKy0gIHBpZCA9IGZvcmsoKTsKKy0gIGlmIChwaWQgPT0gMCkK Ky0gICAgZXhpdCAoNDIpOworLQorLSAgLyogd2FpdCBmb3IgdGhlIHByb2Nlc3MgKi8KKy0gIHAg PSB3YWl0KCZzKTsKKy0gIGlmIChwICE9IHBpZCkKKy0gICAgZXhpdCAoMjU1KTsKKy0KKy0gIC8q IGNyYWNrIHMgKi8KKy0gIGZvciAoaSA9IDA7IGkgPCAoc2l6ZW9mKHMpICogOCk7IGkrKykKKy0g ICAgeworLSAgICAgIG4gPSAocyA+PiBpKSAmIDB4ZmY7CistICAgICAgaWYgKG4gPT0gNDIpCist CWV4aXQgKGkpOworLSAgICB9CistCistICBleGl0ICgyNTQpOworLX0KKy0KKy1fQUNFT0YKKy1p ZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iCistdGhlbiA6CistICBiYXNoX2N2X3dleGl0c3Rh dHVzX29mZnNldD0wCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3Zfd2V4aXRzdGF0 dXNfb2Zmc2V0PSQ/IDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25m dGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorLSAgY29uZnRlc3Qu JGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkK Ky0gOzsKKy1lc2FjCistZmkKKy0KKy1pZiB0ZXN0ICIkYmFzaF9jdl93ZXhpdHN0YXR1c19vZmZz ZXQiIC1ndCAzMiA7IHRoZW4KKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBXQVJOSU5HOiBiYWQgZXhpdCBzdGF0dXMgZnJvbSB0ZXN0IHByb2dyYW0gLS0g ZGVmYXVsdGluZyB0byAwIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IFdBUk5JTkc6IGJh ZCBleGl0IHN0YXR1cyBmcm9tIHRlc3QgcHJvZ3JhbSAtLSBkZWZhdWx0aW5nIHRvIDAiID4mMjt9 CistICBiYXNoX2N2X3dleGl0c3RhdHVzX29mZnNldD0wCistZmkKKy17IHByaW50ZiAiJXNcbiIg IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl93ZXhpdHN0YXR1 c19vZmZzZXQiID4mNQorLXByaW50ZiAiJXNcbiIgIiRiYXNoX2N2X3dleGl0c3RhdHVzX29mZnNl dCIgPiY2OyB9CistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBXRVhJVFNUQVRVU19PRkZTRVQg JGJhc2hfY3Zfd2V4aXRzdGF0dXNfb2Zmc2V0IiA+PmNvbmZkZWZzLmgKKy0KKy0KKy0KKy0KKy0K Ky0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu ZyBmb3Igc3RydWN0IHRpbWVzcGVjIGluIDx0aW1lLmg+IiA+JjUKKy1wcmludGYgJXMgImNoZWNr aW5nIGZvciBzdHJ1Y3QgdGltZXNwZWMgaW4gPHRpbWUuaD4uLi4gIiA+JjY7IH0KKy1pZiB0ZXN0 ICR7YmFzaF9jdl9zeXNfc3RydWN0X3RpbWVzcGVjX2luX3RpbWVfaCt5fQorLXRoZW4gOgorLSAg cHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQg Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZz LmguICAqLworLSNpbmNsdWRlIDx0aW1lLmg+CistCistaW50CistbWFpbiAodm9pZCkKKy17Cist c3RhdGljIHN0cnVjdCB0aW1lc3BlYyB4OyB4LnR2X3NlYyA9IHgudHZfbnNlYzsKKy0gIDsKKy0g IHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5P IgorLXRoZW4gOgorLSAgYmFzaF9jdl9zeXNfc3RydWN0X3RpbWVzcGVjX2luX3RpbWVfaD15ZXMK Ky1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYmFzaF9jdl9zeXNfc3RydWN0X3RpbWVzcGVjX2lu X3RpbWVfaD1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0 ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYwor LWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogJGJhc2hfY3Zfc3lzX3N0cnVjdF90aW1lc3BlY19pbl90aW1lX2giID4mNQorLXByaW50ZiAi JXNcbiIgIiRiYXNoX2N2X3N5c19zdHJ1Y3RfdGltZXNwZWNfaW5fdGltZV9oIiA+JjY7IH0KKy0K Ky0gIEhBVkVfU1RSVUNUX1RJTUVTUEVDPTAKKy0gIFRJTUVfSF9ERUZJTkVTX1NUUlVDVF9USU1F U1BFQz0wCistICBTWVNfVElNRV9IX0RFRklORVNfU1RSVUNUX1RJTUVTUEVDPTAKKy0gIFBUSFJF QURfSF9ERUZJTkVTX1NUUlVDVF9USU1FU1BFQz0wCistICBpZiB0ZXN0ICRiYXNoX2N2X3N5c19z dHJ1Y3RfdGltZXNwZWNfaW5fdGltZV9oID0geWVzOyB0aGVuCistICAgIHByaW50ZiAiJXNcbiIg IiNkZWZpbmUgSEFWRV9TVFJVQ1RfVElNRVNQRUMgMSIgPj5jb25mZGVmcy5oCistCistICAgIHBy aW50ZiAiJXNcbiIgIiNkZWZpbmUgVElNRV9IX0RFRklORVNfU1RSVUNUX1RJTUVTUEVDIDEiID4+ Y29uZmRlZnMuaAorLQorLSAgICBUSU1FX0hfREVGSU5FU19TVFJVQ1RfVElNRVNQRUM9MQorLSAg ZWxzZQorLSAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Y2hlY2tpbmcgZm9yIHN0cnVjdCB0aW1lc3BlYyBpbiA8c3lzL3RpbWUuaD4iID4mNQorLXByaW50 ZiAlcyAiY2hlY2tpbmcgZm9yIHN0cnVjdCB0aW1lc3BlYyBpbiA8c3lzL3RpbWUuaD4uLi4gIiA+ JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl9zeXNfc3RydWN0X3RpbWVzcGVjX2luX3N5c190aW1l X2greX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2Ug ZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4 dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KKy0KKy1p bnQKKy1tYWluICh2b2lkKQorLXsKKy1zdGF0aWMgc3RydWN0IHRpbWVzcGVjIHg7IHgudHZfc2Vj ID0geC50dl9uc2VjOworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2Zu X2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6CistICBiYXNoX2N2X3N5c19zdHJ1Y3Rf dGltZXNwZWNfaW5fc3lzX3RpbWVfaD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYmFz aF9jdl9zeXNfc3RydWN0X3RpbWVzcGVjX2luX3N5c190aW1lX2g9bm8gOzsKKy1lc2FjCistZmkK Ky1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJl YW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRiYXNoX2N2X3N5c19zdHJ1Y3RfdGlt ZXNwZWNfaW5fc3lzX3RpbWVfaCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGJhc2hfY3Zfc3lzX3N0 cnVjdF90aW1lc3BlY19pbl9zeXNfdGltZV9oIiA+JjY7IH0KKy0gICAgaWYgdGVzdCAkYmFzaF9j dl9zeXNfc3RydWN0X3RpbWVzcGVjX2luX3N5c190aW1lX2ggPSB5ZXM7IHRoZW4KKy0gICAgICBT WVNfVElNRV9IX0RFRklORVNfU1RSVUNUX1RJTUVTUEVDPTEKKy0gICAgICBwcmludGYgIiVzXG4i ICIjZGVmaW5lIEhBVkVfU1RSVUNUX1RJTUVTUEVDIDEiID4+Y29uZmRlZnMuaAorLQorLSAgICAg IHByaW50ZiAiJXNcbiIgIiNkZWZpbmUgU1lTX1RJTUVfSF9ERUZJTkVTX1NUUlVDVF9USU1FU1BF QyAxIiA+PmNvbmZkZWZzLmgKKy0KKy0gICAgZWxzZQorLSAgICAgIHsgcHJpbnRmICIlc1xuIiAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3RydWN0IHRpbWVzcGVj IGluIDxwdGhyZWFkLmg+IiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBzdHJ1Y3QgdGlt ZXNwZWMgaW4gPHB0aHJlYWQuaD4uLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl9zeXNf c3RydWN0X3RpbWVzcGVjX2luX3B0aHJlYWRfaCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIo Y2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAt IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLSNp bmNsdWRlIDxwdGhyZWFkLmg+CistCistaW50CistbWFpbiAodm9pZCkKKy17Cistc3RhdGljIHN0 cnVjdCB0aW1lc3BlYyB4OyB4LnR2X3NlYyA9IHgudHZfbnNlYzsKKy0gIDsKKy0gIHJldHVybiAw OworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIgorLXRoZW4g OgorLSAgYmFzaF9jdl9zeXNfc3RydWN0X3RpbWVzcGVjX2luX3B0aHJlYWRfaD15ZXMKKy1lbHNl IGNhc2UgZSBpbiAjKAorLSAgZSkgYmFzaF9jdl9zeXNfc3RydWN0X3RpbWVzcGVjX2luX3B0aHJl YWRfaD1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0 LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZp CisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDog JGJhc2hfY3Zfc3lzX3N0cnVjdF90aW1lc3BlY19pbl9wdGhyZWFkX2giID4mNQorLXByaW50ZiAi JXNcbiIgIiRiYXNoX2N2X3N5c19zdHJ1Y3RfdGltZXNwZWNfaW5fcHRocmVhZF9oIiA+JjY7IH0K Ky0gICAgICBpZiB0ZXN0ICRiYXNoX2N2X3N5c19zdHJ1Y3RfdGltZXNwZWNfaW5fcHRocmVhZF9o ID0geWVzOyB0aGVuCistICAgICAgICBQVEhSRUFEX0hfREVGSU5FU19TVFJVQ1RfVElNRVNQRUM9 MQorLQlwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1RSVUNUX1RJTUVTUEVDIDEiID4+Y29u ZmRlZnMuaAorLQorLQlwcmludGYgIiVzXG4iICIjZGVmaW5lIFBUSFJFQURfSF9ERUZJTkVTX1NU UlVDVF9USU1FU1BFQyAxIiA+PmNvbmZkZWZzLmgKKy0KKy0gICAgICBmaQorLSAgICBmaQorLSAg ZmkKKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0KKy0gIGFjX2ZuX2NfY2hlY2tfbWVtYmVyICIk TElORU5PIiAic3RydWN0IHN0YXQiICJzdF9hdGltLnR2X25zZWMiICJhY19jdl9tZW1iZXJfc3Ry dWN0X3N0YXRfc3RfYXRpbV90dl9uc2VjIiAiI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSAgICAg I2luY2x1ZGUgPHN5cy9zdGF0Lmg+CistIgorLWlmIHRlc3QgIngkYWNfY3ZfbWVtYmVyX3N0cnVj dF9zdGF0X3N0X2F0aW1fdHZfbnNlYyIgPSB4eWVzCistdGhlbiA6CistCistcHJpbnRmICIlc1xu IiAiI2RlZmluZSBIQVZFX1NUUlVDVF9TVEFUX1NUX0FUSU1fVFZfTlNFQyAxIiA+PmNvbmZkZWZz LmgKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hl Y2tpbmcgd2hldGhlciBzdHJ1Y3Qgc3RhdC5zdF9hdGltIGlzIG9mIHR5cGUgc3RydWN0IHRpbWVz cGVjIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIHdoZXRoZXIgc3RydWN0IHN0YXQuc3RfYXRp bSBpcyBvZiB0eXBlIHN0cnVjdCB0aW1lc3BlYy4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19j dl90eXBlb2Zfc3RydWN0X3N0YXRfc3RfYXRpbV9pc19zdHJ1Y3RfdGltZXNwZWMreX0KKy10aGVu IDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBj b25mZGVmcy5oLiAgKi8KKy0KKy0gICAgICAgICAgICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cist ICAgICAgICAgICAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CistICAgICAgICAgICAgI2lmIEhBVkVf U1lTX1RJTUVfSAorLSAgICAgICAgICAgICMgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKy0gICAgICAg ICAgICAjZW5kaWYKKy0gICAgICAgICAgICAjaW5jbHVkZSA8dGltZS5oPgorLSAgICAgICAgICAg IHN0cnVjdCB0aW1lc3BlYyB0czsKKy0gICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKKy0KKy1p bnQKKy1tYWluICh2b2lkKQorLXsKKy0KKy0gICAgICAgICAgICBzdC5zdF9hdGltID0gdHM7Cist CistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGls ZSAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGFjX2N2X3R5cGVvZl9zdHJ1Y3Rfc3RhdF9zdF9hdGlt X2lzX3N0cnVjdF90aW1lc3BlYz15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY3Zf dHlwZW9mX3N0cnVjdF9zdGF0X3N0X2F0aW1faXNfc3RydWN0X3RpbWVzcGVjPW5vIDs7CistZXNh YworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25m dGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNc biIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfdHlwZW9mX3N0 cnVjdF9zdGF0X3N0X2F0aW1faXNfc3RydWN0X3RpbWVzcGVjIiA+JjUKKy1wcmludGYgIiVzXG4i ICIkYWNfY3ZfdHlwZW9mX3N0cnVjdF9zdGF0X3N0X2F0aW1faXNfc3RydWN0X3RpbWVzcGVjIiA+ JjY7IH0KKy0gICAgIGlmIHRlc3QgJGFjX2N2X3R5cGVvZl9zdHJ1Y3Rfc3RhdF9zdF9hdGltX2lz X3N0cnVjdF90aW1lc3BlYyA9IHllczsgdGhlbgorLQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUg VFlQRU9GX1NUUlVDVF9TVEFUX1NUX0FUSU1fSVNfU1RSVUNUX1RJTUVTUEVDIDEiID4+Y29uZmRl ZnMuaAorLQorLSAgICAgZmkKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfZm5fY19jaGVj a19tZW1iZXIgIiRMSU5FTk8iICJzdHJ1Y3Qgc3RhdCIgInN0X2F0aW1lc3BlYy50dl9uc2VjIiAi YWNfY3ZfbWVtYmVyX3N0cnVjdF9zdGF0X3N0X2F0aW1lc3BlY190dl9uc2VjIiAiI2luY2x1ZGUg PHN5cy90eXBlcy5oPgorLSAgICAgICAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CistIgorLWlmIHRl c3QgIngkYWNfY3ZfbWVtYmVyX3N0cnVjdF9zdGF0X3N0X2F0aW1lc3BlY190dl9uc2VjIiA9IHh5 ZXMKKy10aGVuIDoKKy0KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1RSVUNUX1NUQVRf U1RfQVRJTUVTUEVDX1RWX05TRUMgMSIgPj5jb25mZGVmcy5oCistCistCistZWxzZSBjYXNlIGUg aW4gIygKKy0gIGUpIGFjX2ZuX2NfY2hlY2tfbWVtYmVyICIkTElORU5PIiAic3RydWN0IHN0YXQi ICJzdF9hdGltZW5zZWMiICJhY19jdl9tZW1iZXJfc3RydWN0X3N0YXRfc3RfYXRpbWVuc2VjIiAi I2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSAgICAgICAgICAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+ CistIgorLWlmIHRlc3QgIngkYWNfY3ZfbWVtYmVyX3N0cnVjdF9zdGF0X3N0X2F0aW1lbnNlYyIg PSB4eWVzCistdGhlbiA6CistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NUUlVDVF9T VEFUX1NUX0FUSU1FTlNFQyAxIiA+PmNvbmZkZWZzLmgKKy0KKy0KKy1lbHNlIGNhc2UgZSBpbiAj KAorLSAgZSkgYWNfZm5fY19jaGVja19tZW1iZXIgIiRMSU5FTk8iICJzdHJ1Y3Qgc3RhdCIgInN0 X2F0aW0uc3RfX3RpbS50dl9uc2VjIiAiYWNfY3ZfbWVtYmVyX3N0cnVjdF9zdGF0X3N0X2F0aW1f c3RfX3RpbV90dl9uc2VjIiAiI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSAgICAgICAgICAgICAg I2luY2x1ZGUgPHN5cy9zdGF0Lmg+CistIgorLWlmIHRlc3QgIngkYWNfY3ZfbWVtYmVyX3N0cnVj dF9zdGF0X3N0X2F0aW1fc3RfX3RpbV90dl9uc2VjIiA9IHh5ZXMKKy10aGVuIDoKKy0KKy1wcmlu dGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfU1RSVUNUX1NUQVRfU1RfQVRJTV9TVF9fVElNX1RWX05T RUMgMSIgPj5jb25mZGVmcy5oCistCistCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy0gOzsKKy1l c2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy0KKy0KKy0KKy0KKy0gIHsgcHJpbnRmICIlc1xu IiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2JyayIgPiY1Cist cHJpbnRmICVzICJjaGVja2luZyBmb3Igc2Jyay4uLiAiID4mNjsgfQorLSAgaWYgdGVzdCAke2Fj X2N2X2Z1bmNfc2Jyayt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgor LWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25m dGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLSNpbmNsdWRlIDx1bmlzdGQu aD4KKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy0gdm9pZCAqeCA9IHNicmsgKDQwOTYpOworLSAg OworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5F Tk8iCistdGhlbiA6CistICBhY19jdl9mdW5jX3Nicms9eWVzCistZWxzZSBjYXNlIGUgaW4gIygK Ky0gIGUpIGFjX2N2X2Z1bmNfc2Jyaz1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29u ZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0 ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZpCistCistICB7IHBy aW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zf ZnVuY19zYnJrIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfY3ZfZnVuY19zYnJrIiA+JjY7IH0K Ky0gIGlmIHRlc3QgWCRhY19jdl9mdW5jX3NicmsgPSBYeWVzOyB0aGVuCistICAgIHsgcHJpbnRm ICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29ya2lu ZyBzYnJrIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciB3b3JraW5nIHNicmsuLi4gIiA+ JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl9mdW5jX3NicmsreX0KKy10aGVuIDoKKy0gIHByaW50 ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgaWYgdGVzdCAi JGNyb3NzX2NvbXBpbGluZyIgPSB5ZXMKKy10aGVuIDoKKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYW5ub3QgY2hlY2sgd29ya2luZyBz YnJrIGlmIGNyb3NzLWNvbXBpbGluZyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiBXQVJO SU5HOiBjYW5ub3QgY2hlY2sgd29ya2luZyBzYnJrIGlmIGNyb3NzLWNvbXBpbGluZyIgPiYyO30K Ky0gICAgYmFzaF9jdl9mdW5jX3Nicms9eWVzCistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUp IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29u ZmRlZnMuaC4gICovCistCistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlIDx1bmlzdGQu aD4KKy0KKy1pbnQKKy1tYWluKGludCBjLCBjaGFyICoqdikKKy17CistCXZvaWQgKng7CistCist CXggPSBzYnJrICg0MDk2KTsKKy0JZXhpdCAoKHggPT0gKHZvaWQgKiktMSkgPyAxIDogMCk7Cist fQorLQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyIKKy10aGVuIDoKKy0g IGJhc2hfY3ZfZnVuY19zYnJrPXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBiYXNoX2N2 X2Z1bmNfc2Jyaz1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29u ZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKy0gIGNvbmZ0ZXN0 LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZp CistIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJGJhc2hfY3ZfZnVuY19zYnJrIiA+JjUKKy1wcmludGYgIiVzXG4i ICIkYmFzaF9jdl9mdW5jX3NicmsiID4mNjsgfQorLSAgICBpZiB0ZXN0ICRiYXNoX2N2X2Z1bmNf c2JyayA9IG5vOyB0aGVuCistICAgICAgYWNfY3ZfZnVuY19zYnJrPW5vCistICAgIGZpCistICBm aQorLSAgaWYgdGVzdCAkYWNfY3ZfZnVuY19zYnJrID0geWVzOyB0aGVuCistCistcHJpbnRmICIl c1xuIiAiI2RlZmluZSBIQVZFX1NCUksgMSIgPj5jb25mZGVmcy5oCistCistICBmaQorLQorLQor LSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n IGZvciBicmsiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIGJyay4uLiAiID4mNjsgfQor LSAgaWYgdGVzdCAke2FjX2N2X2Z1bmNfYnJrK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihj YWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistI2lu Y2x1ZGUgPHVuaXN0ZC5oPgorLWludAorLW1haW4gKHZvaWQpCisteworLSB2b2lkICp4ID0gYnJr ICgwKTsKKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9s aW5rICIkTElORU5PIgorLXRoZW4gOgorLSAgYWNfY3ZfZnVuY19icms9eWVzCistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIGFjX2N2X2Z1bmNfYnJrPW5vIDs7CistZXNhYworLWZpCistcm0gLWYg Y29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0g ICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy0K Ky0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6 ICRhY19jdl9mdW5jX2JyayIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X2Z1bmNfYnJrIiA+ JjY7IH0KKy0gIGlmIHRlc3QgWCRhY19jdl9mdW5jX2JyayA9IFh5ZXM7IHRoZW4KKy0gICAgeyBw cmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3 b3JraW5nIGJyayIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3Igd29ya2luZyBicmsuLi4g IiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl9mdW5jX2Jyayt5fQorLXRoZW4gOgorLSAgcHJp bnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiB0ZXN0 ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcworLXRoZW4gOgorLSAgeyBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IGNhbm5vdCBjaGVjayB3b3JraW5n IGJyayBpZiBjcm9zcy1jb21waWxpbmciID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogV0FS TklORzogY2Fubm90IGNoZWNrIHdvcmtpbmcgYnJrIGlmIGNyb3NzLWNvbXBpbGluZyIgPiYyO30K Ky0gICAgYmFzaF9jdl9mdW5jX2Jyaz15ZXMKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkg Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KKy0KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5o PgorLQorLWludAorLW1haW4oaW50IGMsIGNoYXIgKip2KQorLXsKKy0Jdm9pZCAqeDsKKy0KKy0J eCA9IGJyayAoMCk7CistCWV4aXQgKCh4ID09ICh2b2lkICopLTEpID8gMSA6IDApOworLX0KKy0K Ky1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iCistdGhlbiA6CistICBiYXNo X2N2X2Z1bmNfYnJrPXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBiYXNoX2N2X2Z1bmNf YnJrPW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4q IGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorLSAgY29uZnRlc3QuJGFjX29i amV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy0gOzsK Ky1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiAkYmFzaF9jdl9mdW5jX2JyayIgPiY1CistcHJpbnRmICIlc1xuIiAiJGJhc2hf Y3ZfZnVuY19icmsiID4mNjsgfQorLSAgICBpZiB0ZXN0ICRiYXNoX2N2X2Z1bmNfYnJrID0gbm87 IHRoZW4KKy0gICAgICBhY19jdl9mdW5jX2Jyaz1ubworLSAgICBmaQorLSAgZmkKKy0gIGlmIHRl c3QgJGFjX2N2X2Z1bmNfYnJrID0geWVzOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmlu ZSBIQVZFX0JSSyAxIiA+PmNvbmZkZWZzLmgKKy0KKy0gIGZpCistCistCisteyBwcmludGYgIiVz XG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0aGUgZXhpc3Rl bmNlIG9mIHN0cnNpZ25hbCIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgdGhlIGV4aXN0 ZW5jZSBvZiBzdHJzaWduYWwuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl9oYXZlX3N0 cnNpZ25hbCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k YWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K Ky0jaW5jbHVkZSA8c2lnbmFsLmg+CistI2luY2x1ZGUgPHN0cmluZy5oPgorLWludAorLW1haW4g KHZvaWQpCisteworLWNoYXIgKnMgPSAoY2hhciAqKXN0cnNpZ25hbCgyKTsKKy0gIDsKKy0gIHJl dHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIgorLXRo ZW4gOgorLSAgYmFzaF9jdl9oYXZlX3N0cnNpZ25hbD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAor LSAgZSkgYmFzaF9jdl9oYXZlX3N0cnNpZ25hbD1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNv cmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBcCistICAg IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZpCistCist eyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGJh c2hfY3ZfaGF2ZV9zdHJzaWduYWwiID4mNQorLXByaW50ZiAiJXNcbiIgIiRiYXNoX2N2X2hhdmVf c3Ryc2lnbmFsIiA+JjY7IH0KKy1pZiB0ZXN0ICRiYXNoX2N2X2hhdmVfc3Ryc2lnbmFsID0geWVz OyB0aGVuCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NUUlNJR05BTCAxIiA+PmNvbmZk ZWZzLmgKKy0KKy1maQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBjaGVja2luZyBpZiBvcGVuZGlyKCkgb3BlbnMgbm9uLWRpcmVjdG9yaWVzIiA+JjUK Ky1wcmludGYgJXMgImNoZWNraW5nIGlmIG9wZW5kaXIoKSBvcGVucyBub24tZGlyZWN0b3JpZXMu Li4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl9vcGVuZGlyX25vdF9yb2J1c3QreX0KKy10 aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAor LSAgZSkgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXMKKy10aGVuIDoKKy0gIHsgcHJp bnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYW5ub3Qg Y2hlY2sgb3BlbmRpciBpZiBjcm9zcyBjb21waWxpbmcgLS0gZGVmYXVsdGluZyB0byBubyIgPiY1 CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiBXQVJOSU5HOiBjYW5ub3QgY2hlY2sgb3BlbmRpciBp ZiBjcm9zcyBjb21waWxpbmcgLS0gZGVmYXVsdGluZyB0byBubyIgPiYyO30KKy0gICAgIGJhc2hf Y3Zfb3BlbmRpcl9ub3Rfcm9idXN0PW5vCistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNh dCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRl ZnMuaC4gICovCistCistI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPHN5cy90eXBlcy5o PgorLSNpbmNsdWRlIDxmY250bC5oPgorLSNpZmRlZiBIQVZFX1VOSVNURF9ICistIyBpbmNsdWRl IDx1bmlzdGQuaD4KKy0jZW5kaWYgLyogSEFWRV9VTklTVERfSCAqLworLSNpZmRlZiBIQVZFX1NZ U19TVEFUX0gKKy0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KKy0jZW5kaWYKKy0jaWYgZGVmaW5lZChI QVZFX0RJUkVOVF9IKQorLSMgaW5jbHVkZSA8ZGlyZW50Lmg+CistI2Vsc2UKKy0jIGRlZmluZSBk aXJlbnQgZGlyZWN0CistIyBpZmRlZiBIQVZFX1NZU19ORElSX0gKKy0jICBpbmNsdWRlIDxzeXMv bmRpci5oPgorLSMgZW5kaWYgLyogU1lTTkRJUiAqLworLSMgaWZkZWYgSEFWRV9TWVNfRElSX0gK Ky0jICBpbmNsdWRlIDxzeXMvZGlyLmg+CistIyBlbmRpZiAvKiBTWVNESVIgKi8KKy0jIGlmZGVm IEhBVkVfTkRJUl9ICistIyAgaW5jbHVkZSA8bmRpci5oPgorLSMgZW5kaWYKKy0jZW5kaWYgLyog SEFWRV9ESVJFTlRfSCAqLworLSNpbmNsdWRlIDxzdGRsaWIuaD4KKy1pbnQKKy1tYWluKCkKKy17 CistRElSICpkaXI7CistaW50IGZkLCBlcnI7CistZXJyID0gbWtkaXIoImJhc2gtYWNsb2NhbCIs IDA3MDApOworLWlmIChlcnIgPCAwKSB7CistICBwZXJyb3IoIm1rZGlyIik7CistICBleGl0KDEp OworLX0KKy11bmxpbmsoImJhc2gtYWNsb2NhbC9ub3RfYV9kaXJlY3RvcnkiKTsKKy1mZCA9IG9w ZW4oImJhc2gtYWNsb2NhbC9ub3RfYV9kaXJlY3RvcnkiLCBPX1dST05MWXxPX0NSRUFUfE9fRVhD TCwgMDY2Nik7Cistd3JpdGUoZmQsICJcbiIsIDEpOworLWNsb3NlKGZkKTsKKy1kaXIgPSBvcGVu ZGlyKCJiYXNoLWFjbG9jYWwvbm90X2FfZGlyZWN0b3J5Iik7CistdW5saW5rKCJiYXNoLWFjbG9j YWwvbm90X2FfZGlyZWN0b3J5Iik7Cistcm1kaXIoImJhc2gtYWNsb2NhbCIpOworLWV4aXQgKGRp ciA9PSAwKTsKKy19CistCistX0FDRU9GCistaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIgor LXRoZW4gOgorLSAgYmFzaF9jdl9vcGVuZGlyX25vdF9yb2J1c3Q9eWVzCistZWxzZSBjYXNlIGUg aW4gIygKKy0gIGUpIGJhc2hfY3Zfb3BlbmRpcl9ub3Rfcm9idXN0PW5vIDs7CistZXNhYworLWZp Cistcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25m dGVzdCRhY19leGVleHQgXAorLSAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNv bmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy0KKy17IHBy aW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9j dl9vcGVuZGlyX25vdF9yb2J1c3QiID4mNQorLXByaW50ZiAiJXNcbiIgIiRiYXNoX2N2X29wZW5k aXJfbm90X3JvYnVzdCIgPiY2OyB9CistaWYgdGVzdCAkYmFzaF9jdl9vcGVuZGlyX25vdF9yb2J1 c3QgPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIE9QRU5ESVJfTk9UX1JPQlVT VCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHVsaW1pdCBjYW4gc3Vic3RpdHV0 ZSBmb3IgZ2V0ZHRhYmxlc2l6ZSIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyB3aGV0aGVyIHVs aW1pdCBjYW4gc3Vic3RpdHV0ZSBmb3IgZ2V0ZHRhYmxlc2l6ZS4uLiAiID4mNjsgfQorLWlmIHRl c3QgJHtiYXNoX2N2X3VsaW1pdF9tYXhmZHMreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNh Y2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgaWYgdGVzdCAiJGNyb3NzX2Nv bXBpbGluZyIgPSB5ZXMKKy10aGVuIDoKKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYW5ub3QgY2hlY2sgdWxpbWl0IGlmIGNyb3NzIGNv bXBpbGluZyAtLSBkZWZhdWx0aW5nIHRvIG5vIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6 IFdBUk5JTkc6IGNhbm5vdCBjaGVjayB1bGltaXQgaWYgY3Jvc3MgY29tcGlsaW5nIC0tIGRlZmF1 bHRpbmcgdG8gbm8iID4mMjt9CistICAgIGJhc2hfY3ZfdWxpbWl0X21heGZkcz1ubworLQorLWVs c2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVz dC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLSNpbmNsdWRlIDxzdGRsaWIu aD4KKy0jaWZkZWYgSEFWRV9VTElNSVRfSAorLSNpbmNsdWRlIDx1bGltaXQuaD4KKy0jZW5kaWYK Ky1pbnQKKy1tYWluKCkKKy17CistbG9uZyBtYXhmZHMgPSB1bGltaXQoNCwgMEwpOworLWV4aXQg KG1heGZkcyA9PSAtMUwpOworLX0KKy0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9ydW4gIiRM SU5FTk8iCistdGhlbiA6CistICBiYXNoX2N2X3VsaW1pdF9tYXhmZHM9eWVzCistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIGJhc2hfY3ZfdWxpbWl0X21heGZkcz1ubyA7OworLWVzYWMKKy1maQor LXJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRl c3QkYWNfZXhlZXh0IFwKKy0gIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25m dGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZpCistIDs7CistZXNhYworLWZpCistCisteyBwcmlu dGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGJhc2hfY3Zf dWxpbWl0X21heGZkcyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGJhc2hfY3ZfdWxpbWl0X21heGZk cyIgPiY2OyB9CistaWYgdGVzdCAkYmFzaF9jdl91bGltaXRfbWF4ZmRzID0geWVzOyB0aGVuCist cHJpbnRmICIlc1xuIiAiI2RlZmluZSBVTElNSVRfTUFYRkRTIDEiID4+Y29uZmRlZnMuaAorLQor LWZpCistCistCistCistCistCistCistICBhY19mbl9jaGVja19kZWNsICIkTElORU5PIiAiZnB1 cmdlIiAiYWNfY3ZfaGF2ZV9kZWNsX2ZwdXJnZSIgIiNpbmNsdWRlIDxzdGRpby5oPgorLSIgIiRh Y19jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25zIiAiQ0ZMQUdTIgorLWlmIHRlc3QgIngkYWNf Y3ZfaGF2ZV9kZWNsX2ZwdXJnZSIgPSB4eWVzCistdGhlbiA6CistICBhY19oYXZlX2RlY2w9MQor LWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19oYXZlX2RlY2w9MCA7OworLWVzYWMKKy1maQor LXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9ERUNMX0ZQVVJHRSAkYWNfaGF2ZV9kZWNsIiA+ PmNvbmZkZWZzLmgKKy0KKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogY2hlY2tpbmcgdG8gc2VlIGlmIGdldGVudiBjYW4gYmUgcmVkZWZpbmVkIiA+JjUK Ky1wcmludGYgJXMgImNoZWNraW5nIHRvIHNlZSBpZiBnZXRlbnYgY2FuIGJlIHJlZGVmaW5lZC4u LiAiID4mNjsgfQorLWlmIHRlc3QgJHtiYXNoX2N2X2dldGVudl9yZWRlZit5fQorLXRoZW4gOgor LSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBp ZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcworLXRoZW4gOgorLSAgeyBwcmludGYgIiVz XG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IGNhbm5vdCBjaGVjayBn ZXRlbnYgcmVkZWZpbml0aW9uIGlmIGNyb3NzIGNvbXBpbGluZyAtLSBkZWZhdWx0aW5nIHRvIHll cyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiBXQVJOSU5HOiBjYW5ub3QgY2hlY2sgZ2V0 ZW52IHJlZGVmaW5pdGlvbiBpZiBjcm9zcyBjb21waWxpbmcgLS0gZGVmYXVsdGluZyB0byB5ZXMi ID4mMjt9CistICAgIGJhc2hfY3ZfZ2V0ZW52X3JlZGVmPXllcworLQorLWVsc2UgY2FzZSBlIGlu ICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Cist LyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLSNpZmRlZiBIQVZFX1VOSVNURF9ICistIyAgaW5j bHVkZSA8dW5pc3RkLmg+CistI2VuZGlmCistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLWNoYXIgKgor LWdldGVudiAoY29uc3QgY2hhciAqbmFtZSkKKy17CistcmV0dXJuICI0MiI7CistfQorLWludAor LW1haW4oKQorLXsKKy1jaGFyICpzOworLS8qIFRoZSBuZXh0IGFsbG93cyB0aGlzIHByb2dyYW0g dG8gcnVuLCBidXQgZG9lcyBub3QgYWxsb3cgYmFzaCB0byBsaW5rCistICAgd2hlbiBpdCByZWRl ZmluZXMgZ2V0ZW52LiAgSSdtIG5vdCByZWFsbHkgaW50ZXJlc3RlZCBpbiBmaWd1cmluZyBvdXQK Ky0gICB3aHkgbm90LiAqLworLSNpZiBkZWZpbmVkIChOZVhUKQorLWV4aXQoMSk7CistI2VuZGlm CistcyA9IGdldGVudigiQUJDREUiKTsKKy1leGl0KHMgPT0gMCk7CS8qIGZvcmNlIG9wdGltaXpl ciB0byBsZWF2ZSBnZXRlbnYgaW4gKi8KKy19CistCistX0FDRU9GCistaWYgYWNfZm5fY190cnlf cnVuICIkTElORU5PIgorLXRoZW4gOgorLSAgYmFzaF9jdl9nZXRlbnZfcmVkZWY9eWVzCistZWxz ZSBjYXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3ZfZ2V0ZW52X3JlZGVmPW5vIDs7CistZXNhYwor LWZpCistcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBj b25mdGVzdCRhY19leGVleHQgXAorLSAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFt IGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy0KKy17 IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFz aF9jdl9nZXRlbnZfcmVkZWYiID4mNQorLXByaW50ZiAiJXNcbiIgIiRiYXNoX2N2X2dldGVudl9y ZWRlZiIgPiY2OyB9CistaWYgdGVzdCAkYmFzaF9jdl9nZXRlbnZfcmVkZWYgPSB5ZXM7IHRoZW4K Ky1wcmludGYgIiVzXG4iICIjZGVmaW5lIENBTl9SRURFRklORV9HRVRFTlYgMSIgPj5jb25mZGVm cy5oCistCistZmkKKy0KKy1pZiB0ZXN0ICIkYWNfY3ZfZnVuY19nZXRjd2QiID0gInllcyI7IHRo ZW4KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgaWYgZ2V0Y3dkKCkgd2lsbCBkeW5hbWljYWxseSBhbGxvY2F0ZSBtZW1vcnkgd2l0aCAwIHNp emUiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgaWYgZ2V0Y3dkKCkgd2lsbCBkeW5hbWljYWxs eSBhbGxvY2F0ZSBtZW1vcnkgd2l0aCAwIHNpemUuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFz aF9jdl9nZXRjd2RfbWFsbG9jK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIg PiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmci ID0geWVzCistdGhlbiA6CistICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogV0FSTklORzogY2Fubm90IGNoZWNrIHdoZXRoZXIgZ2V0Y3dkIGFsbG9jYXRlcyBt ZW1vcnkgd2hlbiBjcm9zcy1jb21waWxpbmcgLS0gZGVmYXVsdGluZyB0byBubyIgPiY1CistcHJp bnRmICIlc1xuIiAiJGFzX21lOiBXQVJOSU5HOiBjYW5ub3QgY2hlY2sgd2hldGhlciBnZXRjd2Qg YWxsb2NhdGVzIG1lbW9yeSB3aGVuIGNyb3NzLWNvbXBpbGluZyAtLSBkZWZhdWx0aW5nIHRvIG5v IiA+JjI7fQorLSAgICBiYXNoX2N2X2dldGN3ZF9tYWxsb2M9bm8KKy0KKy1lbHNlIGNhc2UgZSBp biAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAor LS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0jaW5jbHVkZSA8c3RkaW8uaD4KKy0jaWZkZWYg SEFWRV9VTklTVERfSAorLSNpbmNsdWRlIDx1bmlzdGQuaD4KKy0jZW5kaWYKKy0jaW5jbHVkZSA8 c3RkbGliLmg+CistCistaW50CistbWFpbigpCisteworLQljaGFyCSp4cHdkOworLQl4cHdkID0g Z2V0Y3dkKDAsIDApOworLQlleGl0ICh4cHdkID09IDApOworLX0KKy0KKy1fQUNFT0YKKy1pZiBh Y19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iCistdGhlbiA6CistICBiYXNoX2N2X2dldGN3ZF9tYWxs b2M9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3ZfZ2V0Y3dkX21hbGxvYz1u byA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9u Lm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKy0gIGNvbmZ0ZXN0LiRhY19vYmpleHQg Y29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZpCistIDs7CistZXNh YworLWZpCistCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJGJhc2hfY3ZfZ2V0Y3dkX21hbGxvYyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGJh c2hfY3ZfZ2V0Y3dkX21hbGxvYyIgPiY2OyB9CistaWYgdGVzdCAkYmFzaF9jdl9nZXRjd2RfbWFs bG9jID0gbm87IHRoZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEdFVENXRF9CUk9LRU4gMSIg Pj5jb25mZGVmcy5oCistCistY2FzZSAiICRMSUJPQkpTICIgaW4KKy0gICoiIGdldGN3ZC4kYWNf b2JqZXh0ICIqICkgOzsKKy0gICopIExJQk9CSlM9IiRMSUJPQkpTIGdldGN3ZC4kYWNfb2JqZXh0 IgorLSA7OworLWVzYWMKKy0KKy1maQorLQorLWZpCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBI QVZFX0dFVENXRCAxIiA+PmNvbmZkZWZzLmgKKy0KKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHByZXNlbmNlIG9mIFBPU0lYLXN0 eWxlIHNpZ3NldGptcC9zaWdsb25nam1wIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBw cmVzZW5jZSBvZiBQT1NJWC1zdHlsZSBzaWdzZXRqbXAvc2lnbG9uZ2ptcC4uLiAiID4mNjsgfQor LWlmIHRlc3QgJHtiYXNoX2N2X2Z1bmNfc2lnc2V0am1wK3l9CistdGhlbiA6CistICBwcmludGYg JXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgIiRj cm9zc19jb21waWxpbmciID0geWVzCistdGhlbiA6CistICB7IHByaW50ZiAiJXNcbiIgIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogY2Fubm90IGNoZWNrIGZvciBzaWdzZXRq bXAvc2lnbG9uZ2ptcCBpZiBjcm9zcy1jb21waWxpbmcgLS0gZGVmYXVsdGluZyB0byAkYmFzaF9j dl9wb3NpeF9zaWduYWxzIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IFdBUk5JTkc6IGNh bm5vdCBjaGVjayBmb3Igc2lnc2V0am1wL3NpZ2xvbmdqbXAgaWYgY3Jvc3MtY29tcGlsaW5nIC0t IGRlZmF1bHRpbmcgdG8gJGJhc2hfY3ZfcG9zaXhfc2lnbmFscyIgPiYyO30KKy0gICAgIGlmIHRl c3QgIiRiYXNoX2N2X3Bvc2l4X3NpZ25hbHMiID0gInllcyIgOyB0aGVuCistCWJhc2hfY3ZfZnVu Y19zaWdzZXRqbXA9cHJlc2VudAorLSAgICAgZWxzZQorLQliYXNoX2N2X2Z1bmNfc2lnc2V0am1w PW1pc3NpbmcKKy0gICAgIGZpCistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25m ZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4g ICovCistCistI2lmZGVmIEhBVkVfVU5JU1REX0gKKy0jaW5jbHVkZSA8dW5pc3RkLmg+CistI2Vu ZGlmCistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpbmNsdWRlIDxzaWduYWwuaD4KKy0jaW5j bHVkZSA8c2V0am1wLmg+CistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLQorLWludAorLW1haW4oKQor LXsKKy0jaWYgIWRlZmluZWQgKF9QT1NJWF9WRVJTSU9OKSB8fCAhZGVmaW5lZCAoSEFWRV9QT1NJ WF9TSUdOQUxTKQorLWV4aXQgKDEpOworLSNlbHNlCistCistaW50IGNvZGU7Cistc2lnc2V0X3Qg c2V0LCBvc2V0LCBuc2V0OworLXNpZ2ptcF9idWYgeHg7CistCistLyogZ2V0IHRoZSBtYXNrICov Cistc2lnZW1wdHlzZXQoJnNldCk7Cistc2lnZW1wdHlzZXQoJm9zZXQpOworLQorLXNpZ3Byb2Nt YXNrKFNJR19CTE9DSywgKHNpZ3NldF90ICopTlVMTCwgJm9zZXQpOworLS8qIHBhcmFub2lhIC0t IG1ha2Ugc3VyZSBTSUdJTlQgaXMgbm90IGJsb2NrZWQgKi8KKy1zaWdkZWxzZXQgKCZvc2V0LCBT SUdJTlQpOworLXNpZ3Byb2NtYXNrIChTSUdfU0VUTUFTSywgJm9zZXQsIChzaWdzZXRfdCAqKU5V TEwpOworLQorLS8qIHNhdmUgaXQgKi8KKy1jb2RlID0gc2lnc2V0am1wKHh4LCAxKTsKKy1pZiAo Y29kZSkKKy17CistICBzaWdwcm9jbWFzayhTSUdfQkxPQ0ssIChzaWdzZXRfdCAqKU5VTEwsICZu c2V0KTsKKy0gIC8qIGNvdWxkIGNvbXBhcmUgbnNldCB0byBvc2V0IGhlcmUsIGJ1dCB3ZSBqdXN0 IGxvb2sgZm9yIFNJR0lOVCAqLworLSAgaWYgKHNpZ2lzbWVtYmVyICgmbnNldCwgU0lHSU5UKSkK Ky0gICAgZXhpdCgxKTsKKy0gIGV4aXQoMCk7CistfQorLQorLS8qIGNoYW5nZSBpdCBzbyB0aGF0 IFNJR0lOVCBpcyBibG9ja2VkICovCistc2lnYWRkc2V0KCZzZXQsIFNJR0lOVCk7Cistc2lncHJv Y21hc2soU0lHX0JMT0NLLCAmc2V0LCAoc2lnc2V0X3QgKilOVUxMKTsKKy0KKy0vKiBhbmQgc2ln bG9uZ2ptcCAqLworLXNpZ2xvbmdqbXAoeHgsIDEwKTsKKy1leGl0KDEpOworLSNlbmRpZgorLX0K Ky0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iCistdGhlbiA6CistICBi YXNoX2N2X2Z1bmNfc2lnc2V0am1wPXByZXNlbnQKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkg YmFzaF9jdl9mdW5jX3NpZ3NldGptcD1taXNzaW5nIDs7CistZXNhYworLWZpCistcm0gLWYgY29y ZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVl eHQgXAorLSAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19l eHQgOzsKKy1lc2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy0KKy17IHByaW50ZiAiJXNcbiIg IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl9mdW5jX3NpZ3Nl dGptcCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGJhc2hfY3ZfZnVuY19zaWdzZXRqbXAiID4mNjsg fQorLWlmIHRlc3QgJGJhc2hfY3ZfZnVuY19zaWdzZXRqbXAgPSBwcmVzZW50OyB0aGVuCistcHJp bnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1BPU0lYX1NJR1NFVEpNUCAxIiA+PmNvbmZkZWZzLmgK Ky0KKy1maQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyB3aGV0aGVyIG9yIG5vdCBzdHJjb2xsIGFuZCBzdHJjbXAgZGlmZmVyIiA+JjUK Ky1wcmludGYgJXMgImNoZWNraW5nIHdoZXRoZXIgb3Igbm90IHN0cmNvbGwgYW5kIHN0cmNtcCBk aWZmZXIuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl9mdW5jX3N0cmNvbGxfYnJva2Vu K3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUg aW4gIygKKy0gIGUpIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzCistdGhlbiA6Cist ICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzog Y2Fubm90IGNoZWNrIHN0cmNvbGwgaWYgY3Jvc3MgY29tcGlsaW5nIC0tIGRlZmF1bHRpbmcgdG8g bm8iID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogV0FSTklORzogY2Fubm90IGNoZWNrIHN0 cmNvbGwgaWYgY3Jvc3MgY29tcGlsaW5nIC0tIGRlZmF1bHRpbmcgdG8gbm8iID4mMjt9CistICAg IGJhc2hfY3ZfZnVuY19zdHJjb2xsX2Jyb2tlbj1ubworLQorLWVsc2UgY2FzZSBlIGluICMoCist ICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5k IGNvbmZkZWZzLmguICAqLworLQorLSNpbmNsdWRlIDxzdGRpby5oPgorLSNpZiBkZWZpbmVkIChI QVZFX0xPQ0FMRV9IKQorLSNpbmNsdWRlIDxsb2NhbGUuaD4KKy0jZW5kaWYKKy0jaW5jbHVkZSA8 c3RyaW5nLmg+CistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLQorLWludAorLW1haW4oaW50IGMsIGNo YXIgKip2KQorLXsKKy0gICAgICAgIGludCAgICAgcjEsIHIyOworLSAgICAgICAgY2hhciAgICAq ZGVmbG9jYWxlLCAqZGVmY29sbDsKKy0KKy0jaWZkZWYgSEFWRV9TRVRMT0NBTEUKKy0gICAgICAg IGRlZmxvY2FsZSA9IHNldGxvY2FsZShMQ19BTEwsICIiKTsKKy0JZGVmY29sbCA9IHNldGxvY2Fs ZShMQ19DT0xMQVRFLCAiIik7CistI2VuZGlmCistCistI2lmZGVmIEhBVkVfU1RSQ09MTAorLQkv KiBUaGVzZSB0d28gdmFsdWVzIGFyZSB0YWtlbiBmcm9tIHRlc3RzL2dsb2ItdGVzdC4gKi8KKy0g ICAgICAgIHIxID0gc3RyY29sbCgiYWJkIiwgImFYZCIpOworLSNlbHNlCistCXIxID0gMDsKKy0j ZW5kaWYKKy0gICAgICAgIHIyID0gc3RyY21wKCJhYmQiLCAiYVhkIik7CistCistCS8qIFRoZXNl IHR3byBzaG91bGQgYm90aCBiZSBncmVhdGVyIHRoYW4gMC4gIEl0IGlzIHBlcm1pc3NpYmxlIGZv cgorLQkgICBhIHN5c3RlbSB0byByZXR1cm4gZGlmZmVyZW50IHZhbHVlcywgYXMgbG9uZyBhcyB0 aGUgc2lnbiBpcyB0aGUKKy0JICAgc2FtZS4gKi8KKy0KKy0gICAgICAgIC8qIEV4aXQgd2l0aCAx IChmYWlsdXJlKSBpZiB0aGVzZSB0d28gdmFsdWVzIGFyZSBib3RoID4gMCwgc2luY2UKKy0JICAg dGhpcyB0ZXN0cyB3aGV0aGVyIHN0cmNvbGwoMykgaXMgYnJva2VuIHdpdGggcmVzcGVjdCB0byBz dHJjbXAoMykKKy0JICAgaW4gdGhlIGRlZmF1bHQgbG9jYWxlLiAqLworLQlleGl0IChyMSA+IDAg JiYgcjIgPiAwKTsKKy19CistCistX0FDRU9GCistaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5P IgorLXRoZW4gOgorLSAgYmFzaF9jdl9mdW5jX3N0cmNvbGxfYnJva2VuPXllcworLWVsc2UgY2Fz ZSBlIGluICMoCistICBlKSBiYXNoX2N2X2Z1bmNfc3RyY29sbF9icm9rZW49bm8gOzsKKy1lc2Fj CistZmkKKy1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0 IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCistICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJl YW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLSA7OworLWVzYWMKKy1maQorLQor LXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRi YXNoX2N2X2Z1bmNfc3RyY29sbF9icm9rZW4iID4mNQorLXByaW50ZiAiJXNcbiIgIiRiYXNoX2N2 X2Z1bmNfc3RyY29sbF9icm9rZW4iID4mNjsgfQorLWlmIHRlc3QgJGJhc2hfY3ZfZnVuY19zdHJj b2xsX2Jyb2tlbiA9IHllczsgdGhlbgorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgU1RSQ09MTF9C Uk9LRU4gMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy0KKy0KKy0KKy0gIGlmIHRlc3QgWCRh Y19jdl9mdW5jX3NucHJpbnRmID0gWHllczsgdGhlbgorLSAgICB7IHByaW50ZiAiJXNcbiIgIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN0YW5kYXJkLWNvbmZvcm1h bnQgc25wcmludGYiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHN0YW5kYXJkLWNvbmZv cm1hbnQgc25wcmludGYuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl9mdW5jX3NucHJp bnRmK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzCistdGhlbiA6 CistICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklO RzogY2Fubm90IGNoZWNrIHN0YW5kYXJkIHNucHJpbnRmIGlmIGNyb3NzLWNvbXBpbGluZyIgPiY1 CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiBXQVJOSU5HOiBjYW5ub3QgY2hlY2sgc3RhbmRhcmQg c25wcmludGYgaWYgY3Jvc3MtY29tcGlsaW5nIiA+JjI7fQorLSAgICBiYXNoX2N2X2Z1bmNfc25w cmludGY9eWVzCistCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCist I2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLQorLWludAorLW1haW4o KQorLXsKKy0gIGludCBuOworLSAgbiA9IHNucHJpbnRmICgwLCAwLCAiJXMiLCAiMDEyMzQ1NiIp OworLSAgZXhpdChuICE9IDcpOworLX0KKy0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9ydW4g IiRMSU5FTk8iCistdGhlbiA6CistICBiYXNoX2N2X2Z1bmNfc25wcmludGY9eWVzCistZWxzZSBj YXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3ZfZnVuY19zbnByaW50Zj1ubyA7OworLWVzYWMKKy1m aQorLXJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29u ZnRlc3QkYWNfZXhlZXh0IFwKKy0gIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBj b25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZpCistIDs7CistZXNhYworLWZpCisteyBwcmlu dGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGJhc2hfY3Zf ZnVuY19zbnByaW50ZiIgPiY1CistcHJpbnRmICIlc1xuIiAiJGJhc2hfY3ZfZnVuY19zbnByaW50 ZiIgPiY2OyB9CistICAgIGlmIHRlc3QgJGJhc2hfY3ZfZnVuY19zbnByaW50ZiA9IG5vOyB0aGVu CistICAgICAgYWNfY3ZfZnVuY19zbnByaW50Zj1ubworLSAgICBmaQorLSAgZmkKKy0gIGlmIHRl c3QgJGFjX2N2X2Z1bmNfc25wcmludGYgPSBubzsgdGhlbgorLQorLXByaW50ZiAiJXNcbiIgIiNk ZWZpbmUgSEFWRV9TTlBSSU5URiAwIiA+PmNvbmZkZWZzLmgKKy0KKy0gIGZpCistCistCistCist CistICBpZiB0ZXN0IFgkYWNfY3ZfZnVuY192c25wcmludGYgPSBYeWVzOyB0aGVuCistICAgIHsg cHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig c3RhbmRhcmQtY29uZm9ybWFudCB2c25wcmludGYiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcg Zm9yIHN0YW5kYXJkLWNvbmZvcm1hbnQgdnNucHJpbnRmLi4uICIgPiY2OyB9CistaWYgdGVzdCAk e2Jhc2hfY3ZfZnVuY192c25wcmludGYreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hl ZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgaWYgdGVzdCAiJGNyb3NzX2NvbXBp bGluZyIgPSB5ZXMKKy10aGVuIDoKKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYW5ub3QgY2hlY2sgc3RhbmRhcmQgdnNucHJpbnRmIGlm IGNyb3NzLWNvbXBpbGluZyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiBXQVJOSU5HOiBj YW5ub3QgY2hlY2sgc3RhbmRhcmQgdnNucHJpbnRmIGlmIGNyb3NzLWNvbXBpbGluZyIgPiYyO30K Ky0gICAgYmFzaF9jdl9mdW5jX3ZzbnByaW50Zj15ZXMKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAor LSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVu ZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0jaW5jbHVkZSA8c3RkYXJnLmg+CistI2luY2x1ZGUgPHN0 ZGlvLmg+CistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLQorLXN0YXRpYyBpbnQKKy1mb28oY29uc3Qg Y2hhciAqZm10LCAuLi4pCisteworLSAgdmFfbGlzdCBhcmdzOworLSAgaW50IG47CistCistICB2 YV9zdGFydChhcmdzLCBmbXQpOworLSAgbiA9IHZzbnByaW50ZigwLCAwLCBmbXQsIGFyZ3MpOwor LSAgdmFfZW5kIChhcmdzKTsKKy0gIHJldHVybiBuOworLX0KKy0KKy1pbnQKKy1tYWluKCkKKy17 CistICBpbnQgbjsKKy0gIG4gPSBmb28oIiVzIiwgIjAxMjM0NTYiKTsKKy0gIGV4aXQobiAhPSA3 KTsKKy19CistCistX0FDRU9GCistaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIgorLXRoZW4g OgorLSAgYmFzaF9jdl9mdW5jX3ZzbnByaW50Zj15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkgYmFzaF9jdl9mdW5jX3ZzbnByaW50Zj1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUg Ki5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0 IFwKKy0gIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0 IDs7CistZXNhYworLWZpCistIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGJhc2hfY3ZfZnVuY192c25wcmludGYi ID4mNQorLXByaW50ZiAiJXNcbiIgIiRiYXNoX2N2X2Z1bmNfdnNucHJpbnRmIiA+JjY7IH0KKy0g ICAgaWYgdGVzdCAkYmFzaF9jdl9mdW5jX3ZzbnByaW50ZiA9IG5vOyB0aGVuCistICAgICAgYWNf Y3ZfZnVuY192c25wcmludGY9bm8KKy0gICAgZmkKKy0gIGZpCistICBpZiB0ZXN0ICRhY19jdl9m dW5jX3ZzbnByaW50ZiA9IG5vOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZF X1ZTTlBSSU5URiAwIiA+PmNvbmZkZWZzLmgKKy0KKy0gIGZpCistCistCistCistICBhY19mbl9j X2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJzdHJ0b2ltYXgiICJhY19jdl9mdW5jX3N0cnRvaW1heCIK Ky1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfc3RydG9pbWF4IiA9IHh5ZXMKKy10aGVuIDoKKy0gIHBy aW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9TVFJUT0lNQVggMSIgPj5jb25mZGVmcy5oCistCist ZmkKKy0KKy0gIGFjX2ZuX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJzdHJ0b2ltYXgiICJhY19jdl9o YXZlX2RlY2xfc3RydG9pbWF4IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiICIkYWNfY191bmRlY2xh cmVkX2J1aWx0aW5fb3B0aW9ucyIgIkNGTEFHUyIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVj bF9zdHJ0b2ltYXgiID0geHllcworLXRoZW4gOgorLSAgYWNfaGF2ZV9kZWNsPTEKKy1lbHNlIGNh c2UgZSBpbiAjKAorLSAgZSkgYWNfaGF2ZV9kZWNsPTAgOzsKKy1lc2FjCistZmkKKy1wcmludGYg IiVzXG4iICIjZGVmaW5lIEhBVkVfREVDTF9TVFJUT0lNQVggJGFjX2hhdmVfZGVjbCIgPj5jb25m ZGVmcy5oCistCistCistICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY19zdHJ0b2ltYXgiICE9ICJ5ZXMi IDsgdGhlbgorLSAgICBjYXNlICIgJExJQk9CSlMgIiBpbgorLSAgKiIgc3RydG9pbWF4LiRhY19v YmpleHQgIiogKSA7OworLSAgKikgTElCT0JKUz0iJExJQk9CSlMgc3RydG9pbWF4LiRhY19vYmpl eHQiCistIDs7CistZXNhYworLQorLSAgZmkKKy0KKy1hY19mbl9jaGVja19kZWNsICIkTElORU5P IiAiY2xlYXJlcnJfdW5sb2NrZWQiICJhY19jdl9oYXZlX2RlY2xfY2xlYXJlcnJfdW5sb2NrZWQi ICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIgIiRhY19jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25z IiAiQ0ZMQUdTIgorLWlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX2NsZWFyZXJyX3VubG9ja2Vk IiA9IHh5ZXMKKy10aGVuIDoKKy0gIGFjX2hhdmVfZGVjbD0xCistZWxzZSBjYXNlIGUgaW4gIygK Ky0gIGUpIGFjX2hhdmVfZGVjbD0wIDs7CistZXNhYworLWZpCistcHJpbnRmICIlc1xuIiAiI2Rl ZmluZSBIQVZFX0RFQ0xfQ0xFQVJFUlJfVU5MT0NLRUQgJGFjX2hhdmVfZGVjbCIgPj5jb25mZGVm cy5oCistCistYWNfZm5fY2hlY2tfZGVjbCAiJExJTkVOTyIgImZlb2ZfdW5sb2NrZWQiICJhY19j dl9oYXZlX2RlY2xfZmVvZl91bmxvY2tlZCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IiAiJGFjX2Nf dW5kZWNsYXJlZF9idWlsdGluX29wdGlvbnMiICJDRkxBR1MiCistaWYgdGVzdCAieCRhY19jdl9o YXZlX2RlY2xfZmVvZl91bmxvY2tlZCIgPSB4eWVzCistdGhlbiA6CistICBhY19oYXZlX2RlY2w9 MQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19oYXZlX2RlY2w9MCA7OworLWVzYWMKKy1m aQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9ERUNMX0ZFT0ZfVU5MT0NLRUQgJGFjX2hh dmVfZGVjbCIgPj5jb25mZGVmcy5oCistCistYWNfZm5fY2hlY2tfZGVjbCAiJExJTkVOTyIgImZl cnJvcl91bmxvY2tlZCIgImFjX2N2X2hhdmVfZGVjbF9mZXJyb3JfdW5sb2NrZWQiICIkYWNfaW5j bHVkZXNfZGVmYXVsdCIgIiRhY19jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25zIiAiQ0ZMQUdT IgorLWlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX2ZlcnJvcl91bmxvY2tlZCIgPSB4eWVzCist dGhlbiA6CistICBhY19oYXZlX2RlY2w9MQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19o YXZlX2RlY2w9MCA7OworLWVzYWMKKy1maQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9E RUNMX0ZFUlJPUl9VTkxPQ0tFRCAkYWNfaGF2ZV9kZWNsIiA+PmNvbmZkZWZzLmgKKy0KKy1hY19m bl9jaGVja19kZWNsICIkTElORU5PIiAiZmZsdXNoX3VubG9ja2VkIiAiYWNfY3ZfaGF2ZV9kZWNs X2ZmbHVzaF91bmxvY2tlZCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IiAiJGFjX2NfdW5kZWNsYXJl ZF9idWlsdGluX29wdGlvbnMiICJDRkxBR1MiCistaWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xf ZmZsdXNoX3VubG9ja2VkIiA9IHh5ZXMKKy10aGVuIDoKKy0gIGFjX2hhdmVfZGVjbD0xCistZWxz ZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2hhdmVfZGVjbD0wIDs7CistZXNhYworLWZpCistcHJp bnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0RFQ0xfRkZMVVNIX1VOTE9DS0VEICRhY19oYXZlX2Rl Y2wiID4+Y29uZmRlZnMuaAorLQorLWFjX2ZuX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJmZ2V0c191 bmxvY2tlZCIgImFjX2N2X2hhdmVfZGVjbF9mZ2V0c191bmxvY2tlZCIgIiRhY19pbmNsdWRlc19k ZWZhdWx0IiAiJGFjX2NfdW5kZWNsYXJlZF9idWlsdGluX29wdGlvbnMiICJDRkxBR1MiCistaWYg dGVzdCAieCRhY19jdl9oYXZlX2RlY2xfZmdldHNfdW5sb2NrZWQiID0geHllcworLXRoZW4gOgor LSAgYWNfaGF2ZV9kZWNsPTEKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfaGF2ZV9kZWNs PTAgOzsKKy1lc2FjCistZmkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfREVDTF9GR0VU U19VTkxPQ0tFRCAkYWNfaGF2ZV9kZWNsIiA+PmNvbmZkZWZzLmgKKy0KKy1hY19mbl9jaGVja19k ZWNsICIkTElORU5PIiAiZnB1dGNfdW5sb2NrZWQiICJhY19jdl9oYXZlX2RlY2xfZnB1dGNfdW5s b2NrZWQiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIgIiRhY19jX3VuZGVjbGFyZWRfYnVpbHRpbl9v cHRpb25zIiAiQ0ZMQUdTIgorLWlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX2ZwdXRjX3VubG9j a2VkIiA9IHh5ZXMKKy10aGVuIDoKKy0gIGFjX2hhdmVfZGVjbD0xCistZWxzZSBjYXNlIGUgaW4g IygKKy0gIGUpIGFjX2hhdmVfZGVjbD0wIDs7CistZXNhYworLWZpCistcHJpbnRmICIlc1xuIiAi I2RlZmluZSBIQVZFX0RFQ0xfRlBVVENfVU5MT0NLRUQgJGFjX2hhdmVfZGVjbCIgPj5jb25mZGVm cy5oCistCistYWNfZm5fY2hlY2tfZGVjbCAiJExJTkVOTyIgImZwdXRzX3VubG9ja2VkIiAiYWNf Y3ZfaGF2ZV9kZWNsX2ZwdXRzX3VubG9ja2VkIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiICIkYWNf Y191bmRlY2xhcmVkX2J1aWx0aW5fb3B0aW9ucyIgIkNGTEFHUyIKKy1pZiB0ZXN0ICJ4JGFjX2N2 X2hhdmVfZGVjbF9mcHV0c191bmxvY2tlZCIgPSB4eWVzCistdGhlbiA6CistICBhY19oYXZlX2Rl Y2w9MQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19oYXZlX2RlY2w9MCA7OworLWVzYWMK Ky1maQorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgSEFWRV9ERUNMX0ZQVVRTX1VOTE9DS0VEICRh Y19oYXZlX2RlY2wiID4+Y29uZmRlZnMuaAorLQorLWFjX2ZuX2NoZWNrX2RlY2wgIiRMSU5FTk8i ICJmcmVhZF91bmxvY2tlZCIgImFjX2N2X2hhdmVfZGVjbF9mcmVhZF91bmxvY2tlZCIgIiRhY19p bmNsdWRlc19kZWZhdWx0IiAiJGFjX2NfdW5kZWNsYXJlZF9idWlsdGluX29wdGlvbnMiICJDRkxB R1MiCistaWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfZnJlYWRfdW5sb2NrZWQiID0geHllcwor LXRoZW4gOgorLSAgYWNfaGF2ZV9kZWNsPTEKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNf aGF2ZV9kZWNsPTAgOzsKKy1lc2FjCistZmkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVf REVDTF9GUkVBRF9VTkxPQ0tFRCAkYWNfaGF2ZV9kZWNsIiA+PmNvbmZkZWZzLmgKKy0KKy1hY19m bl9jaGVja19kZWNsICIkTElORU5PIiAiZndyaXRlX3VubG9ja2VkIiAiYWNfY3ZfaGF2ZV9kZWNs X2Z3cml0ZV91bmxvY2tlZCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IiAiJGFjX2NfdW5kZWNsYXJl ZF9idWlsdGluX29wdGlvbnMiICJDRkxBR1MiCistaWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xf ZndyaXRlX3VubG9ja2VkIiA9IHh5ZXMKKy10aGVuIDoKKy0gIGFjX2hhdmVfZGVjbD0xCistZWxz ZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2hhdmVfZGVjbD0wIDs7CistZXNhYworLWZpCistcHJp bnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0RFQ0xfRldSSVRFX1VOTE9DS0VEICRhY19oYXZlX2Rl Y2wiID4+Y29uZmRlZnMuaAorLQorLWFjX2ZuX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJnZXRjX3Vu bG9ja2VkIiAiYWNfY3ZfaGF2ZV9kZWNsX2dldGNfdW5sb2NrZWQiICIkYWNfaW5jbHVkZXNfZGVm YXVsdCIgIiRhY19jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25zIiAiQ0ZMQUdTIgorLWlmIHRl c3QgIngkYWNfY3ZfaGF2ZV9kZWNsX2dldGNfdW5sb2NrZWQiID0geHllcworLXRoZW4gOgorLSAg YWNfaGF2ZV9kZWNsPTEKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfaGF2ZV9kZWNsPTAg OzsKKy1lc2FjCistZmkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfREVDTF9HRVRDX1VO TE9DS0VEICRhY19oYXZlX2RlY2wiID4+Y29uZmRlZnMuaAorLQorLWFjX2ZuX2NoZWNrX2RlY2wg IiRMSU5FTk8iICJnZXRjaGFyX3VubG9ja2VkIiAiYWNfY3ZfaGF2ZV9kZWNsX2dldGNoYXJfdW5s b2NrZWQiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIgIiRhY19jX3VuZGVjbGFyZWRfYnVpbHRpbl9v cHRpb25zIiAiQ0ZMQUdTIgorLWlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX2dldGNoYXJfdW5s b2NrZWQiID0geHllcworLXRoZW4gOgorLSAgYWNfaGF2ZV9kZWNsPTEKKy1lbHNlIGNhc2UgZSBp biAjKAorLSAgZSkgYWNfaGF2ZV9kZWNsPTAgOzsKKy1lc2FjCistZmkKKy1wcmludGYgIiVzXG4i ICIjZGVmaW5lIEhBVkVfREVDTF9HRVRDSEFSX1VOTE9DS0VEICRhY19oYXZlX2RlY2wiID4+Y29u ZmRlZnMuaAorLQorLWFjX2ZuX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJwdXRjX3VubG9ja2VkIiAi YWNfY3ZfaGF2ZV9kZWNsX3B1dGNfdW5sb2NrZWQiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIgIiRh Y19jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25zIiAiQ0ZMQUdTIgorLWlmIHRlc3QgIngkYWNf Y3ZfaGF2ZV9kZWNsX3B1dGNfdW5sb2NrZWQiID0geHllcworLXRoZW4gOgorLSAgYWNfaGF2ZV9k ZWNsPTEKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfaGF2ZV9kZWNsPTAgOzsKKy1lc2Fj CistZmkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfREVDTF9QVVRDX1VOTE9DS0VEICRh Y19oYXZlX2RlY2wiID4+Y29uZmRlZnMuaAorLQorLWFjX2ZuX2NoZWNrX2RlY2wgIiRMSU5FTk8i ICJwdXRjaGFyX3VubG9ja2VkIiAiYWNfY3ZfaGF2ZV9kZWNsX3B1dGNoYXJfdW5sb2NrZWQiICIk YWNfaW5jbHVkZXNfZGVmYXVsdCIgIiRhY19jX3VuZGVjbGFyZWRfYnVpbHRpbl9vcHRpb25zIiAi Q0ZMQUdTIgorLWlmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX3B1dGNoYXJfdW5sb2NrZWQiID0g eHllcworLXRoZW4gOgorLSAgYWNfaGF2ZV9kZWNsPTEKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkgYWNfaGF2ZV9kZWNsPTAgOzsKKy1lc2FjCistZmkKKy1wcmludGYgIiVzXG4iICIjZGVmaW5l IEhBVkVfREVDTF9QVVRDSEFSX1VOTE9DS0VEICRhY19oYXZlX2RlY2wiID4+Y29uZmRlZnMuaAor LQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQorLQor LQorLWlmIHRlc3QgIiRhY19jdl9mdW5jX3B1dGVudiIgPSAieWVzIjsgdGhlbgorLQorLXsgcHJp bnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3Rh bmRhcmQtY29uZm9ybWFudCBwdXRlbnYgZGVjbGFyYXRpb24iID4mNQorLXByaW50ZiAlcyAiY2hl Y2tpbmcgZm9yIHN0YW5kYXJkLWNvbmZvcm1hbnQgcHV0ZW52IGRlY2xhcmF0aW9uLi4uICIgPiY2 OyB9CistaWYgdGVzdCAke2Jhc2hfY3Zfc3RkX3B1dGVudit5fQorLXRoZW4gOgorLSAgcHJpbnRm ICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRl ZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAq LworLQorLSNpZiBIQVZFX1NURExJQl9ICistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNlbmRpZgor LSNpZiBIQVZFX1NURERFRl9ICistI2luY2x1ZGUgPHN0ZGRlZi5oPgorLSNlbmRpZgorLWV4dGVy biBpbnQgcHV0ZW52IChjaGFyICopOworLQorLWludAorLW1haW4gKHZvaWQpCisteworLXJldHVy biAocHV0ZW52ID09IDApOworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFj X2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6CistICBiYXNoX2N2X3N0ZF9wdXRlbnY9 eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3Zfc3RkX3B1dGVudj1ubworLSA7 OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpl eHQgY29uZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNf ZXh0IDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJGJhc2hfY3Zfc3RkX3B1dGVudiIgPiY1CistcHJpbnRmICIlc1xu IiAiJGJhc2hfY3Zfc3RkX3B1dGVudiIgPiY2OyB9CistaWYgdGVzdCAkYmFzaF9jdl9zdGRfcHV0 ZW52ID0geWVzOyB0aGVuCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX1NURF9QVVRFTlYg MSIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy1lbHNlCistcHJpbnRmICIlc1xuIiAiI2RlZmlu ZSBIQVZFX1NURF9QVVRFTlYgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy1pZiB0ZXN0ICIkYWNf Y3ZfZnVuY191bnNldGVudiIgPSAieWVzIjsgdGhlbgorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3RhbmRhcmQtY29uZm9ybWFu dCB1bnNldGVudiBkZWNsYXJhdGlvbiIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3Igc3Rh bmRhcmQtY29uZm9ybWFudCB1bnNldGVudiBkZWNsYXJhdGlvbi4uLiAiID4mNjsgfQorLWlmIHRl c3QgJHtiYXNoX2N2X3N0ZF91bnNldGVudit5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2Fj aGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8 X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLSNp ZiBIQVZFX1NURExJQl9ICistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNlbmRpZgorLSNpZiBIQVZF X1NURERFRl9ICistI2luY2x1ZGUgPHN0ZGRlZi5oPgorLSNlbmRpZgorLWV4dGVybiBpbnQgdW5z ZXRlbnYgKGNvbnN0IGNoYXIgKik7CistCistaW50CistbWFpbiAodm9pZCkKKy17CistcmV0dXJu ICh1bnNldGVudiA9PSAwKTsKKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBh Y19mbl9jX3RyeV9saW5rICIkTElORU5PIgorLXRoZW4gOgorLSAgYmFzaF9jdl9zdGRfdW5zZXRl bnY9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3Zfc3RkX3Vuc2V0ZW52PW5v CistIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFj X29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0 LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl9zdGRfdW5zZXRlbnYiID4mNQorLXByaW50 ZiAiJXNcbiIgIiRiYXNoX2N2X3N0ZF91bnNldGVudiIgPiY2OyB9CistaWYgdGVzdCAkYmFzaF9j dl9zdGRfdW5zZXRlbnYgPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVf U1REX1VOU0VURU5WIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCistZWxzZQorLXByaW50ZiAi JXNcbiIgIiNkZWZpbmUgSEFWRV9TVERfVU5TRVRFTlYgMSIgPj5jb25mZGVmcy5oCistCistZmkK Ky0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgZm9yIHByaW50ZiBmbG9hdGluZyBwb2ludCBvdXRwdXQgaW4gaGV4IG5vdGF0aW9uIiA+JjUK Ky1wcmludGYgJXMgImNoZWNraW5nIGZvciBwcmludGYgZmxvYXRpbmcgcG9pbnQgb3V0cHV0IGlu IGhleCBub3RhdGlvbi4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHtiYXNoX2N2X3ByaW50Zl9hX2Zv cm1hdCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2Fz ZSBlIGluICMoCistICBlKSBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcworLXRoZW4g OgorLSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5J Tkc6IGNhbm5vdCBjaGVjayBwcmludGYgaWYgY3Jvc3MgY29tcGlsaW5nIC0tIGRlZmF1bHRpbmcg dG8gbm8iID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTogV0FSTklORzogY2Fubm90IGNoZWNr IHByaW50ZiBpZiBjcm9zcyBjb21waWxpbmcgLS0gZGVmYXVsdGluZyB0byBubyIgPiYyO30KKy0g ICAgYmFzaF9jdl9wcmludGZfYV9mb3JtYXQ9bm8KKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBj b25mZGVmcy5oLiAgKi8KKy0KKy0jaW5jbHVkZSA8c3RkaW8uaD4KKy0jaW5jbHVkZSA8c3RyaW5n Lmg+CistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLQorLWludAorLW1haW4oKQorLXsKKy0JZG91Ymxl IHkgPSAwLjA7CistCWNoYXIgYWJ1ZlsxMDI0XTsKKy0KKy0Jc3ByaW50ZihhYnVmLCAiJUEiLCB5 KTsKKy0JZXhpdChzdHJjaHIoYWJ1ZiwgJ1AnKSA9PSAoY2hhciAqKTApOworLX0KKy0KKy1fQUNF T0YKKy1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iCistdGhlbiA6CistICBiYXNoX2N2X3By aW50Zl9hX2Zvcm1hdD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYmFzaF9jdl9wcmlu dGZfYV9mb3JtYXQ9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNv bmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCistICBjb25mdGVz dC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMKKy1m aQorLSA7OworLWVzYWMKKy1maQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRiYXNoX2N2X3ByaW50Zl9hX2Zvcm1hdCIgPiY1CistcHJp bnRmICIlc1xuIiAiJGJhc2hfY3ZfcHJpbnRmX2FfZm9ybWF0IiA+JjY7IH0KKy1pZiB0ZXN0ICRi YXNoX2N2X3ByaW50Zl9hX2Zvcm1hdCA9IHllczsgdGhlbgorLXByaW50ZiAiJXNcbiIgIiNkZWZp bmUgSEFWRV9QUklOVEZfQV9GT1JNQVQgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy0KKy17 IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hl dGhlciBmbm1hdGNoIGNhbiBiZSB1c2VkIHRvIGNoZWNrIGJyYWNrZXQgZXF1aXZhbGVuY2UgY2xh c3NlcyIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyB3aGV0aGVyIGZubWF0Y2ggY2FuIGJlIHVz ZWQgdG8gY2hlY2sgYnJhY2tldCBlcXVpdmFsZW5jZSBjbGFzc2VzLi4uICIgPiY2OyB9CistaWYg dGVzdCAke2Jhc2hfY3ZfZm5tYXRjaF9lcXVpdl9mYWxsYmFjayt5fQorLXRoZW4gOgorLSAgcHJp bnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiB0ZXN0 ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcworLXRoZW4gOgorLSAgeyBwcmludGYgIiVzXG4iICIk YXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IGNhbm5vdCBjaGVjayBmbm1hdGNo IGlmIGNyb3NzIGNvbXBpbGluZyAtLSBkZWZhdWx0aW5nIHRvIG5vIiA+JjUKKy1wcmludGYgIiVz XG4iICIkYXNfbWU6IFdBUk5JTkc6IGNhbm5vdCBjaGVjayBmbm1hdGNoIGlmIGNyb3NzIGNvbXBp bGluZyAtLSBkZWZhdWx0aW5nIHRvIG5vIiA+JjI7fQorLSAgICBiYXNoX2N2X2ZubWF0Y2hfZXF1 aXZfZmFsbGJhY2s9bm8KKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8K Ky0KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHVuaXN0ZC5oPgorLSNpbmNsdWRl IDxzdGRpby5oPgorLSNpbmNsdWRlIDxmbm1hdGNoLmg+CistI2luY2x1ZGUgPGxvY2FsZS5oPgor LQorLWNoYXIgKnBhdHRlcm4gPSAiW1s9YT1dXSI7CistCistLyogY2hhciAqc3RyaW5nID0gIsOk IjsgKi8KKy11bnNpZ25lZCBjaGFyIHN0cmluZ1s0XSA9IHsgJ1x4YzMnLCAnXHhhNCcsICdcMCcg fTsKKy0KKy1pbnQKKy1tYWluIChpbnQgYywgY2hhciAqKnYpCisteworLSAgc2V0bG9jYWxlIChM Q19BTEwsICJlbl9VUy5VVEYtOCIpOworLSAgaWYgKGZubWF0Y2ggKHBhdHRlcm4sIChjb25zdCBj aGFyICopc3RyaW5nLCAwKSAhPSBGTk1fTk9NQVRDSCkKKy0gICAgZXhpdCAoMCk7CistICBleGl0 ICgxKTsKKy19CistCistX0FDRU9GCistaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIgorLXRo ZW4gOgorLSAgYmFzaF9jdl9mbm1hdGNoX2VxdWl2X2ZhbGxiYWNrPXllcworLWVsc2UgY2FzZSBl IGluICMoCistICBlKSBiYXNoX2N2X2ZubWF0Y2hfZXF1aXZfZmFsbGJhY2s9bm8gOzsKKy1lc2Fj CistZmkKKy1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0 IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCistICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJl YW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLSA7OworLWVzYWMKKy1maQorLQor LXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRi YXNoX2N2X2ZubWF0Y2hfZXF1aXZfZmFsbGJhY2siID4mNQorLXByaW50ZiAiJXNcbiIgIiRiYXNo X2N2X2ZubWF0Y2hfZXF1aXZfZmFsbGJhY2siID4mNjsgfQorLWlmIHRlc3QgIiRiYXNoX2N2X2Zu bWF0Y2hfZXF1aXZfZmFsbGJhY2siID0gInllcyIgOyB0aGVuCistICAgIGJhc2hfY3ZfZm5tYXRj aF9lcXVpdl92YWx1ZT0xCistZWxzZQorLSAgICBiYXNoX2N2X2ZubWF0Y2hfZXF1aXZfdmFsdWU9 MAorLWZpCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBGTk1BVENIX0VRVUlWX0ZBTExCQUNL ICRiYXNoX2N2X2ZubWF0Y2hfZXF1aXZfdmFsdWUiID4+Y29uZmRlZnMuaAorLQorLQorLQorLQor LXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBp ZiBzaWduYWwgaGFuZGxlcnMgbXVzdCBiZSByZWluc3RhbGxlZCB3aGVuIGludm9rZWQiID4mNQor LXByaW50ZiAlcyAiY2hlY2tpbmcgaWYgc2lnbmFsIGhhbmRsZXJzIG11c3QgYmUgcmVpbnN0YWxs ZWQgd2hlbiBpbnZva2VkLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2Jhc2hfY3ZfbXVzdF9yZWlu c3RhbGxfc2lnaGFuZGxlcnMreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+ JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIg PSB5ZXMKKy10aGVuIDoKKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiBXQVJOSU5HOiBjYW5ub3QgY2hlY2sgc2lnbmFsIGhhbmRsaW5nIGlmIGNyb3NzIGNv bXBpbGluZyAtLSBkZWZhdWx0aW5nIHRvIG5vIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6 IFdBUk5JTkc6IGNhbm5vdCBjaGVjayBzaWduYWwgaGFuZGxpbmcgaWYgY3Jvc3MgY29tcGlsaW5n IC0tIGRlZmF1bHRpbmcgdG8gbm8iID4mMjt9CistICAgIGJhc2hfY3ZfbXVzdF9yZWluc3RhbGxf c2lnaGFuZGxlcnM9bm8KKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZz LmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8K Ky0KKy0jaW5jbHVkZSA8c2lnbmFsLmg+CistI2lmZGVmIEhBVkVfVU5JU1REX0gKKy0jaW5jbHVk ZSA8dW5pc3RkLmg+CistI2VuZGlmCistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLQorLXR5cGVkZWYg dm9pZCBzaWdmdW5jKGludCk7CistCistdm9sYXRpbGUgaW50IG5zaWdpbnQ7CistCistI2lmZGVm IEhBVkVfUE9TSVhfU0lHTkFMUworLXNpZ2Z1bmMgKgorLXNldF9zaWduYWxfaGFuZGxlcihpbnQg c2lnLCBzaWdmdW5jICpoYW5kbGVyKQorLXsKKy0gIHN0cnVjdCBzaWdhY3Rpb24gYWN0LCBvYWN0 OworLSAgYWN0LnNhX2hhbmRsZXIgPSBoYW5kbGVyOworLSAgYWN0LnNhX2ZsYWdzID0gMDsKKy0g IHNpZ2VtcHR5c2V0ICgmYWN0LnNhX21hc2spOworLSAgc2lnZW1wdHlzZXQgKCZvYWN0LnNhX21h c2spOworLSAgc2lnYWN0aW9uIChzaWcsICZhY3QsICZvYWN0KTsKKy0gIHJldHVybiAob2FjdC5z YV9oYW5kbGVyKTsKKy19CistI2Vsc2UKKy0jZGVmaW5lIHNldF9zaWduYWxfaGFuZGxlcihzLCBo KSBzaWduYWwocywgaCkKKy0jZW5kaWYKKy0KKy12b2lkCistc2lnaW50KGludCBzKQorLXsKKy0g IG5zaWdpbnQrKzsKKy19CistCistaW50CistbWFpbigpCisteworLQluc2lnaW50ID0gMDsKKy0J c2V0X3NpZ25hbF9oYW5kbGVyKFNJR0lOVCwgc2lnaW50KTsKKy0Ja2lsbCgoaW50KWdldHBpZCgp LCBTSUdJTlQpOworLQlraWxsKChpbnQpZ2V0cGlkKCksIFNJR0lOVCk7CistCWV4aXQobnNpZ2lu dCAhPSAyKTsKKy19CistCistX0FDRU9GCistaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIgor LXRoZW4gOgorLSAgYmFzaF9jdl9tdXN0X3JlaW5zdGFsbF9zaWdoYW5kbGVycz1ubworLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSBiYXNoX2N2X211c3RfcmVpbnN0YWxsX3NpZ2hhbmRsZXJzPXll cyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9u Lm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKy0gIGNvbmZ0ZXN0LiRhY19vYmpleHQg Y29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZpCistIDs7CistZXNh YworLWZpCistCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJGJhc2hfY3ZfbXVzdF9yZWluc3RhbGxfc2lnaGFuZGxlcnMiID4mNQorLXByaW50 ZiAiJXNcbiIgIiRiYXNoX2N2X211c3RfcmVpbnN0YWxsX3NpZ2hhbmRsZXJzIiA+JjY7IH0KKy1p ZiB0ZXN0ICRiYXNoX2N2X211c3RfcmVpbnN0YWxsX3NpZ2hhbmRsZXJzID0geWVzOyB0aGVuCist cHJpbnRmICIlc1xuIiAiI2RlZmluZSBNVVNUX1JFSU5TVEFMTF9TSUdIQU5ETEVSUyAxIiA+PmNv bmZkZWZzLmgKKy0KKy1maQorLQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgcHJlc2VuY2Ugb2YgbmVjZXNzYXJ5IGpvYiBjb250 cm9sIGRlZmluaXRpb25zIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciBwcmVzZW5jZSBv ZiBuZWNlc3Nhcnkgam9iIGNvbnRyb2wgZGVmaW5pdGlvbnMuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0 ICR7YmFzaF9jdl9qb2JfY29udHJvbF9taXNzaW5nK3l9CistdGhlbiA6CistICBwcmludGYgJXMg IihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBjb25mZGVmcy5o IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCist CistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpZmRlZiBIQVZFX1NZU19XQUlUX0gKKy0jaW5j bHVkZSA8c3lzL3dhaXQuaD4KKy0jZW5kaWYKKy0jaWZkZWYgSEFWRV9VTklTVERfSAorLSNpbmNs dWRlIDx1bmlzdGQuaD4KKy0jZW5kaWYKKy0jaW5jbHVkZSA8c2lnbmFsLmg+CistCistLyogYWRk IG1vcmUgdGVzdHMgaW4gaGVyZSBhcyBhcHByb3ByaWF0ZSAqLworLQorLS8qIHNpZ25hbCB0eXBl ICovCistI2lmICFkZWZpbmVkIChIQVZFX1BPU0lYX1NJR05BTFMpICYmICFkZWZpbmVkIChIQVZF X0JTRF9TSUdOQUxTKQorLSNlcnJvcgorLSNlbmRpZgorLQorLS8qIHNpZ25hbHMgYW5kIHR0eSBj b250cm9sLiAqLworLSNpZiAhZGVmaW5lZCAoU0lHVFNUUCkgfHwgIWRlZmluZWQgKFNJR1NUT1Ap IHx8ICFkZWZpbmVkIChTSUdDT05UKQorLSNlcnJvcgorLSNlbmRpZgorLQorLS8qIHByb2Nlc3Mg Y29udHJvbCAqLworLSNpZiAhZGVmaW5lZCAoV05PSEFORykgfHwgIWRlZmluZWQgKFdVTlRSQUNF RCkKKy0jZXJyb3IKKy0jZW5kaWYKKy0KKy0vKiBQb3NpeCBzeXN0ZW1zIGhhdmUgdGNnZXRwZ3Jw IGFuZCB3YWl0cGlkLiAqLworLSNpZiBkZWZpbmVkIChfUE9TSVhfVkVSU0lPTikgJiYgIWRlZmlu ZWQgKEhBVkVfVENHRVRQR1JQKQorLSNlcnJvcgorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIChf UE9TSVhfVkVSU0lPTikgJiYgIWRlZmluZWQgKEhBVkVfV0FJVFBJRCkKKy0jZXJyb3IKKy0jZW5k aWYKKy0KKy0vKiBPdGhlciBzeXN0ZW1zIGhhdmUgVElPQ1NQR1JQL1RJT0NHUFJHUCBhbmQgd2Fp dDMuICovCistI2lmICFkZWZpbmVkIChfUE9TSVhfVkVSU0lPTikgJiYgIWRlZmluZWQgKEhBVkVf V0FJVDMpCistI2Vycm9yCistI2VuZGlmCistCistCistaW50CistbWFpbiAodm9pZCkKKy17Cist IGludCB4OworLSAgOworLSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5 X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6CistICBiYXNoX2N2X2pvYl9jb250cm9sX21pc3Np bmc9cHJlc2VudAorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBiYXNoX2N2X2pvYl9jb250cm9s X21pc3Npbmc9bWlzc2luZworLSA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3Qu ZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7 CistZXNhYworLWZpCistCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IHJlc3VsdDogJGJhc2hfY3Zfam9iX2NvbnRyb2xfbWlzc2luZyIgPiY1CistcHJpbnRm ICIlc1xuIiAiJGJhc2hfY3Zfam9iX2NvbnRyb2xfbWlzc2luZyIgPiY2OyB9CistaWYgdGVzdCAk YmFzaF9jdl9qb2JfY29udHJvbF9taXNzaW5nID0gbWlzc2luZzsgdGhlbgorLXByaW50ZiAiJXNc biIgIiNkZWZpbmUgSk9CX0NPTlRST0xfTUlTU0lORyAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQor LQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu ZyBmb3IgcHJlc2VuY2Ugb2YgbmFtZWQgcGlwZXMiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcg Zm9yIHByZXNlbmNlIG9mIG5hbWVkIHBpcGVzLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2Jhc2hf Y3Zfc3lzX25hbWVkX3BpcGVzK3l9CistdGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIg PiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmci ID0geWVzCistdGhlbiA6CistICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogV0FSTklORzogY2Fubm90IGNoZWNrIGZvciBuYW1lZCBwaXBlcyBpZiBjcm9zcy1j b21waWxpbmcgLS0gZGVmYXVsdGluZyB0byBtaXNzaW5nIiA+JjUKKy1wcmludGYgIiVzXG4iICIk YXNfbWU6IFdBUk5JTkc6IGNhbm5vdCBjaGVjayBmb3IgbmFtZWQgcGlwZXMgaWYgY3Jvc3MtY29t cGlsaW5nIC0tIGRlZmF1bHRpbmcgdG8gbWlzc2luZyIgPiYyO30KKy0gICAgIGJhc2hfY3Zfc3lz X25hbWVkX3BpcGVzPW1pc3NpbmcKKy0KKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0IGNv bmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5o LiAgKi8KKy0KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy9zdGF0Lmg+ CistI2lmZGVmIEhBVkVfVU5JU1REX0gKKy0jaW5jbHVkZSA8dW5pc3RkLmg+CistI2VuZGlmCist I2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLQorLS8qIEFkZCBtb3Jl IHRlc3RzIGluIGhlcmUgYXMgYXBwcm9wcmlhdGUuICovCistaW50CistbWFpbigpCisteworLWlu dCBmZCwgZXJyOworLQorLSNpZiBkZWZpbmVkIChIQVZFX01LRklGTykKKy1leGl0ICgwKTsKKy0j ZW5kaWYKKy0KKy0jaWYgIWRlZmluZWQgKFNfSUZJRk8pICYmIChkZWZpbmVkIChfUE9TSVhfVkVS U0lPTikgJiYgIWRlZmluZWQgKFNfSVNGSUZPKSkKKy1leGl0ICgxKTsKKy0jZW5kaWYKKy0KKy0j aWYgZGVmaW5lZCAoTmVYVCkKKy1leGl0ICgxKTsKKy0jZW5kaWYKKy1lcnIgPSBta2RpcigiYmFz aC1hY2xvY2FsIiwgMDcwMCk7CistaWYgKGVyciA8IDApIHsKKy0gIHBlcnJvciAoIm1rZGlyIik7 CistICBleGl0KDEpOworLX0KKy1mZCA9IG1rbm9kICgiYmFzaC1hY2xvY2FsL3NoLW5wLWF1dG9j b25mIiwgMDY2NiB8IFNfSUZJRk8sIDApOworLWlmIChmZCA9PSAtMSkgeworLSAgcm1kaXIgKCJi YXNoLWFjbG9jYWwiKTsKKy0gIGV4aXQgKDEpOworLX0KKy1jbG9zZShmZCk7CistdW5saW5rICgi YmFzaC1hY2xvY2FsL3NoLW5wLWF1dG9jb25mIik7Cistcm1kaXIgKCJiYXNoLWFjbG9jYWwiKTsK Ky1leGl0KDApOworLX0KKy0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8i CistdGhlbiA6CistICBiYXNoX2N2X3N5c19uYW1lZF9waXBlcz1wcmVzZW50CistZWxzZSBjYXNl IGUgaW4gIygKKy0gIGUpIGJhc2hfY3Zfc3lzX25hbWVkX3BpcGVzPW1pc3NpbmcgOzsKKy1lc2Fj CistZmkKKy1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0 IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCistICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJl YW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMKKy1maQorLSA7OworLWVzYWMKKy1maQorLQor LXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRi YXNoX2N2X3N5c19uYW1lZF9waXBlcyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGJhc2hfY3Zfc3lz X25hbWVkX3BpcGVzIiA+JjY7IH0KKy1pZiB0ZXN0ICRiYXNoX2N2X3N5c19uYW1lZF9waXBlcyA9 IG1pc3Npbmc7IHRoZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIE5BTUVEX1BJUEVTX01JU1NJ TkcgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0ZXJtaW9zLmggZGVmaW5l cyBUSU9DR1dJTlNaIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIHdoZXRoZXIgdGVybWlvcy5o IGRlZmluZXMgVElPQ0dXSU5TWi4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9zeXNfdGlv Y2d3aW5zel9pbl90ZXJtaW9zX2greX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkg IiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP RiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0kYWNfaW5jbHVk ZXNfZGVmYXVsdAorLSNpbmNsdWRlIDx0ZXJtaW9zLmg+CistY29uc3QgaW50IHRpb2Nnd2luc3og PSBUSU9DR1dJTlNaOworLQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5F Tk8iCistdGhlbiA6CistICBhY19jdl9zeXNfdGlvY2d3aW5zel9pbl90ZXJtaW9zX2g9eWVzCist ZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2N2X3N5c190aW9jZ3dpbnN6X2luX3Rlcm1pb3Nf aD1ubyA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh Y19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZpCist eyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFj X2N2X3N5c190aW9jZ3dpbnN6X2luX3Rlcm1pb3NfaCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFj X2N2X3N5c190aW9jZ3dpbnN6X2luX3Rlcm1pb3NfaCIgPiY2OyB9CistCistaWYgdGVzdCAkYWNf Y3Zfc3lzX3Rpb2Nnd2luc3pfaW5fdGVybWlvc19oICE9IHllczsgdGhlbgorLSAgeyBwcmludGYg IiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgc3lz L2lvY3RsLmggZGVmaW5lcyBUSU9DR1dJTlNaIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIHdo ZXRoZXIgc3lzL2lvY3RsLmggZGVmaW5lcyBUSU9DR1dJTlNaLi4uICIgPiY2OyB9CistaWYgdGVz dCAke2FjX2N2X3N5c190aW9jZ3dpbnN6X2luX3N5c19pb2N0bF9oK3l9CistdGhlbiA6CistICBw cmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGNhdCBj b25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMu aC4gICovCistJGFjX2luY2x1ZGVzX2RlZmF1bHQKKy0jaW5jbHVkZSA8c3lzL2lvY3RsLmg+Cist Y29uc3QgaW50IHRpb2Nnd2luc3ogPSBUSU9DR1dJTlNaOworLQorLV9BQ0VPRgorLWlmIGFjX2Zu X2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iCistdGhlbiA6CistICBhY19jdl9zeXNfdGlvY2d3aW5z el9pbl9zeXNfaW9jdGxfaD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY3Zfc3lz X3Rpb2Nnd2luc3pfaW5fc3lzX2lvY3RsX2g9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3Jl IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3Qu JGFjX2V4dCA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zeXNfdGlvY2d3aW5zel9pbl9zeXNfaW9jdGxf aCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X3N5c190aW9jZ3dpbnN6X2luX3N5c19pb2N0 bF9oIiA+JjY7IH0KKy0KKy0gIGlmIHRlc3QgJGFjX2N2X3N5c190aW9jZ3dpbnN6X2luX3N5c19p b2N0bF9oID0geWVzOyB0aGVuCistCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBHV0lOU1pfSU5f U1lTX0lPQ1RMIDEiID4+Y29uZmRlZnMuaAorLQorLSAgZmkKKy1maQorLQorLXsgcHJpbnRmICIl c1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgVElPQ1NUQVQg aW4gc3lzL2lvY3RsLmgiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIFRJT0NTVEFUIGlu IHN5cy9pb2N0bC5oLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2Jhc2hfY3ZfdGlvY3N0YXRfaW5f aW9jdGwreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNh c2UgZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj X2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+ CistI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorLWludAorLW1haW4gKHZvaWQpCisteworLWludCB4 ID0gVElPQ1NUQVQ7CistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5f Y190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGJhc2hfY3ZfdGlvY3N0YXRfaW5f aW9jdGw9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3ZfdGlvY3N0YXRfaW5f aW9jdGw9bm8KKy0gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25m dGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dCA7OworLWVzYWMK Ky1maQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRiYXNoX2N2X3Rpb2NzdGF0X2luX2lvY3RsIiA+JjUKKy1wcmludGYgIiVzXG4iICIk YmFzaF9jdl90aW9jc3RhdF9pbl9pb2N0bCIgPiY2OyB9CistaWYgdGVzdCAkYmFzaF9jdl90aW9j c3RhdF9pbl9pb2N0bCA9IHllczsgdGhlbgorLXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgVElPQ1NU QVRfSU5fU1lTX0lPQ1RMIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCisteyBwcmludGYgIiVz XG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBGSU9OUkVBRCBp biBzeXMvaW9jdGwuaCIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgRklPTlJFQUQgaW4g c3lzL2lvY3RsLmguLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YmFzaF9jdl9maW9ucmVhZF9pbl9p b2N0bCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2Fz ZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNf ZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K Ky0jaW5jbHVkZSA8c3lzL2lvY3RsLmg+CistaW50CistbWFpbiAodm9pZCkKKy17CistaW50IHgg PSBGSU9OUkVBRDsKKy0gIDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9j X3RyeV9jb21waWxlICIkTElORU5PIgorLXRoZW4gOgorLSAgYmFzaF9jdl9maW9ucmVhZF9pbl9p b2N0bD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYmFzaF9jdl9maW9ucmVhZF9pbl9p b2N0bD1ubworLSA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0 ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYwor LWZpCistCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogJGJhc2hfY3ZfZmlvbnJlYWRfaW5faW9jdGwiID4mNQorLXByaW50ZiAiJXNcbiIgIiRi YXNoX2N2X2Zpb25yZWFkX2luX2lvY3RsIiA+JjY7IH0KKy1pZiB0ZXN0ICRiYXNoX2N2X2Zpb25y ZWFkX2luX2lvY3RsID0geWVzOyB0aGVuCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBGSU9OUkVB RF9JTl9TWVNfSU9DVEwgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0KKy0KKy0KKy17IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBX Q09OVElOVUVEIGZsYWcgdG8gd2FpdHBpZCBpcyB1bmF2YWlsYWJsZSBvciBhdmFpbGFibGUgYnV0 IGJyb2tlbiIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyB3aGV0aGVyIFdDT05USU5VRUQgZmxh ZyB0byB3YWl0cGlkIGlzIHVuYXZhaWxhYmxlIG9yIGF2YWlsYWJsZSBidXQgYnJva2VuLi4uICIg PiY2OyB9CistaWYgdGVzdCAke2Jhc2hfY3Zfd2NvbnRpbnVlZF9icm9rZW4reX0KKy10aGVuIDoK Ky0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkg aWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXMKKy10aGVuIDoKKy0gIHsgcHJpbnRmICIl c1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYW5ub3QgY2hlY2sg V0NPTlRJTlVFRCBpZiBjcm9zcyBjb21waWxpbmcgLS0gZGVmYXVsdGluZyB0byBubyIgPiY1Cist cHJpbnRmICIlc1xuIiAiJGFzX21lOiBXQVJOSU5HOiBjYW5ub3QgY2hlY2sgV0NPTlRJTlVFRCBp ZiBjcm9zcyBjb21waWxpbmcgLS0gZGVmYXVsdGluZyB0byBubyIgPiYyO30KKy0gICAgYmFzaF9j dl93Y29udGludWVkX2Jyb2tlbj1ubworLQorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQg Y29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZz LmguICAqLworLQorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaW5jbHVkZSA8c3lzL3dhaXQu aD4KKy0jaW5jbHVkZSA8dW5pc3RkLmg+CistI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUg PHN0ZGxpYi5oPgorLQorLSNpZm5kZWYgZXJybm8KKy1leHRlcm4gaW50IGVycm5vOworLSNlbmRp ZgorLWludAorLW1haW4oKQorLXsKKy0JaW50CXg7CistCistCXggPSB3YWl0cGlkKC0xLCAoaW50 ICopMCwgV05PSEFOR3xXQ09OVElOVUVEKTsKKy0JaWYgKHggPT0gLTEgJiYgZXJybm8gPT0gRUlO VkFMKQorLQkJZXhpdCAoMSk7CistCWVsc2UKKy0JCWV4aXQgKDApOworLX0KKy0KKy1fQUNFT0YK Ky1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iCistdGhlbiA6CistICBiYXNoX2N2X3djb250 aW51ZWRfYnJva2VuPW5vCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3Zfd2NvbnRp bnVlZF9icm9rZW49eWVzIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSAqLmNvcmUgY29yZS5j b25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorLSAgY29uZnRl c3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCist ZmkKKy0gOzsKKy1lc2FjCistZmkKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl93Y29udGludWVkX2Jyb2tlbiIgPiY1Cist cHJpbnRmICIlc1xuIiAiJGJhc2hfY3Zfd2NvbnRpbnVlZF9icm9rZW4iID4mNjsgfQorLWlmIHRl c3QgJGJhc2hfY3Zfd2NvbnRpbnVlZF9icm9rZW4gPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVzXG4i ICIjZGVmaW5lIFdDT05USU5VRURfQlJPS0VOIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCist CisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n IGZvciBzcGVlZF90IGluIHN5cy90eXBlcy5oIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZv ciBzcGVlZF90IGluIHN5cy90eXBlcy5oLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2Jhc2hfY3Zf c3BlZWRfdF9pbl9zeXNfdHlwZXMreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkg IiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP RiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0jaW5jbHVkZSA8 c3lzL3R5cGVzLmg+CistaW50CistbWFpbiAodm9pZCkKKy17Cistc3BlZWRfdCB4OworLSAgOwor LSAgcmV0dXJuIDA7CistfQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5F Tk8iCistdGhlbiA6CistICBiYXNoX2N2X3NwZWVkX3RfaW5fc3lzX3R5cGVzPXllcworLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSBiYXNoX2N2X3NwZWVkX3RfaW5fc3lzX3R5cGVzPW5vIDs7Cist ZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBj b25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy0KKy17IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl9z cGVlZF90X2luX3N5c190eXBlcyIgPiY1CistcHJpbnRmICIlc1xuIiAiJGJhc2hfY3Zfc3BlZWRf dF9pbl9zeXNfdHlwZXMiID4mNjsgfQorLWlmIHRlc3QgJGJhc2hfY3Zfc3BlZWRfdF9pbl9zeXNf dHlwZXMgPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIFNQRUVEX1RfSU5fU1lT X1RZUEVTIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCisteyBwcmludGYgIiVzXG4iICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgZ2V0cHcgZnVuY3Rpb25z IGFyZSBkZWNsYXJlZCBpbiBwd2QuaCIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyB3aGV0aGVy IGdldHB3IGZ1bmN0aW9ucyBhcmUgZGVjbGFyZWQgaW4gcHdkLmguLi4gIiA+JjY7IH0KKy1pZiB0 ZXN0ICR7YmFzaF9jdl9nZXRwd19kZWNsYXJlZCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIo Y2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBjYXQgY29uZmRlZnMuaCAt IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQor LSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0jaWZkZWYgSEFWRV9VTklTVERfSAorLSMgIGluY2x1 ZGUgPHVuaXN0ZC5oPgorLSNlbmRpZgorLSNpbmNsdWRlIDxwd2QuaD4KKy0KKy1fQUNFT0YKKy1p ZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVBfVFJB RElUSU9OQUwgImdldHB3dWlkIiA+L2Rldi9udWxsIDI+JjEKKy10aGVuIDoKKy0gIGJhc2hfY3Zf Z2V0cHdfZGVjbGFyZWQ9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGJhc2hfY3ZfZ2V0 cHdfZGVjbGFyZWQ9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtcmYgY29uZnRlc3QqCistIDs7Cist ZXNhYworLWZpCistCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogJGJhc2hfY3ZfZ2V0cHdfZGVjbGFyZWQiID4mNQorLXByaW50ZiAiJXNcbiIg IiRiYXNoX2N2X2dldHB3X2RlY2xhcmVkIiA+JjY7IH0KKy1pZiB0ZXN0ICRiYXNoX2N2X2dldHB3 X2RlY2xhcmVkID0geWVzOyB0aGVuCistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBIQVZFX0dFVFBX X0RFQ0xTIDEiID4+Y29uZmRlZnMuaAorLQorLWZpCistCisteyBwcmludGYgIiVzXG4iICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB1bnVzYWJsZSByZWFsLXRpbWUg c2lnbmFscyBkdWUgdG8gbGFyZ2UgdmFsdWVzIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZv ciB1bnVzYWJsZSByZWFsLXRpbWUgc2lnbmFscyBkdWUgdG8gbGFyZ2UgdmFsdWVzLi4uICIgPiY2 OyB9CistaWYgdGVzdCAke2Jhc2hfY3ZfdW51c2FibGVfcnRzaWdzK3l9CistdGhlbiA6CistICBw cmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGlmIHRl c3QgIiRjcm9zc19jb21waWxpbmciID0geWVzCistdGhlbiA6CistICB7IHByaW50ZiAiJXNcbiIg IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogY2Fubm90IGNoZWNrIHJlYWwt dGltZSBzaWduYWxzIGlmIGNyb3NzIGNvbXBpbGluZyAtLSBkZWZhdWx0aW5nIHRvIHllcyIgPiY1 CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiBXQVJOSU5HOiBjYW5ub3QgY2hlY2sgcmVhbC10aW1l IHNpZ25hbHMgaWYgY3Jvc3MgY29tcGlsaW5nIC0tIGRlZmF1bHRpbmcgdG8geWVzIiA+JjI7fQor LSAgICAgYmFzaF9jdl91bnVzYWJsZV9ydHNpZ3M9eWVzCistCistZWxzZSBjYXNlIGUgaW4gIygK Ky0gIGUpIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBl bmQgY29uZmRlZnMuaC4gICovCistCistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpbmNsdWRl IDxzaWduYWwuaD4KKy0jaW5jbHVkZSA8c3RkbGliLmg+CistCistI2lmbmRlZiBOU0lHCistIyAg ZGVmaW5lIE5TSUcgNjQKKy0jZW5kaWYKKy0KKy1pbnQKKy1tYWluICgpCisteworLSAgaW50IG5f c2lncyA9IDIgKiBOU0lHOworLSNpZmRlZiBTSUdSVE1JTgorLSAgaW50IHJ0bWluID0gU0lHUlRN SU47CistI2Vsc2UKKy0gIGludCBydG1pbiA9IDA7CistI2VuZGlmCistCistICBleGl0KHJ0bWlu IDwgbl9zaWdzKTsKKy19CistCistX0FDRU9GCistaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5P IgorLXRoZW4gOgorLSAgYmFzaF9jdl91bnVzYWJsZV9ydHNpZ3M9eWVzCistZWxzZSBjYXNlIGUg aW4gIygKKy0gIGUpIGJhc2hfY3ZfdW51c2FibGVfcnRzaWdzPW5vIDs7CistZXNhYworLWZpCist cm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVz dCRhY19leGVleHQgXAorLSAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0 ZXN0LiRhY19leHQgOzsKKy1lc2FjCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy0KKy17IHByaW50 ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl91 bnVzYWJsZV9ydHNpZ3MiID4mNQorLXByaW50ZiAiJXNcbiIgIiRiYXNoX2N2X3VudXNhYmxlX3J0 c2lncyIgPiY2OyB9CistaWYgdGVzdCAkYmFzaF9jdl91bnVzYWJsZV9ydHNpZ3MgPSB5ZXM7IHRo ZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIFVOVVNBQkxFX1JUX1NJR05BTFMgMSIgPj5jb25m ZGVmcy5oCistCistZmkKKy0KKy0KKy0KKy0KKy0KKy1pZiB0ZXN0ICIkYmFzaF9jdl9zeXNfc2ln bGlzdCIgPSBubyAmJiB0ZXN0ICIkYmFzaF9jdl91bmRlcl9zeXNfc2lnbGlzdCIgPSBubyAmJiB0 ZXN0ICIkYmFzaF9jdl9oYXZlX3N0cnNpZ25hbCIgPSBubzsgdGhlbgorLSAgU0lHTElTVF9PPXNp Z2xpc3QubworLWVsc2UKKy0gIFNJR0xJU1RfTz0KKy1maQorLQorLQorLQorLWNhc2UgIiRob3N0 X29zIiBpbgorLWhwdXgqKQl7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgd2hldGhlciAkaG9zdF9vcyBuZWVkcyBfS0VSTkVMIGZvciBSTElNSVQg ZGVmaW5lcyIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyB3aGV0aGVyICRob3N0X29zIG5lZWRz IF9LRVJORUwgZm9yIFJMSU1JVCBkZWZpbmVzLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2Jhc2hf Y3Zfa2VybmVsX3JsaW1pdCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4m NgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBpZiB0ZXN0ICR7YmFzaF9jdl9ybGltaXQreX0K Ky10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBpbiAj KAorLSAgZSkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8q IGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1 ZGUgPHN5cy9yZXNvdXJjZS5oPgorLQorLWludAorLW1haW4gKHZvaWQpCisteworLQorLSAgaW50 IGY7CistICBmID0gUkxJTUlUX0RBVEE7CistCistICA7CistICByZXR1cm4gMDsKKy19CistX0FD RU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGJhc2hf Y3ZfcmxpbWl0PXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBiYXNoX2N2X3JsaW1pdD1u bworLSA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRh Y19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0IDs7CistZXNhYworLWZpCist CistCistaWYgdGVzdCAkYmFzaF9jdl9ybGltaXQgPSBubzsgdGhlbgorLWNhdCBjb25mZGVmcy5o IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCist CistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNkZWZpbmUgX0tFUk5FTAorLSNpbmNsdWRlIDxz eXMvcmVzb3VyY2UuaD4KKy0jdW5kZWYgX0tFUk5FTAorLQorLWludAorLW1haW4gKHZvaWQpCist eworLQorLSAgaW50IGY7CistICBmID0gUkxJTUlUX0RBVEE7CistCistICA7CistICByZXR1cm4g MDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyIKKy10aGVu IDoKKy0gIGJhc2hfY3Zfa2VybmVsX3JsaW1pdD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAg ZSkgYmFzaF9jdl9rZXJuZWxfcmxpbWl0PW5vICA7OworLWVzYWMKKy1maQorLXJtIC1mIGNvcmUg Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4k YWNfZXh0CistZmkKKy0gOzsKKy1lc2FjCistZmkKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl9rZXJuZWxfcmxpbWl0IiA+ JjUKKy1wcmludGYgIiVzXG4iICIkYmFzaF9jdl9rZXJuZWxfcmxpbWl0IiA+JjY7IH0KKy1pZiB0 ZXN0ICRiYXNoX2N2X2tlcm5lbF9ybGltaXQgPSB5ZXM7IHRoZW4KKy1wcmludGYgIiVzXG4iICIj ZGVmaW5lIFJMSU1JVF9ORUVEU19LRVJORUwgMSIgPj5jb25mZGVmcy5oCistCistZmkKKy0gOzsK Ky1lc2FjCistCistaWYgdGVzdCAiJG9wdF9yZWFkbGluZSIgPSB5ZXM7IHRoZW4KKy1jYXNlICIk aG9zdF9vcyIgaW4KKy1haXgqKQlwcmVmZXJfY3Vyc2VzPXllcyA7OworLWVzYWMKKy0KKy1pZiB0 ZXN0ICJYJGJhc2hfY3ZfdGVybWNhcF9saWIiID0gIlgiOyB0aGVuCistX2Jhc2hfbmVlZG1zZz15 ZXMKKy1lbHNlCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IGNoZWNraW5nIHdoaWNoIGxpYnJhcnkgaGFzIHRoZSB0ZXJtY2FwIGZ1bmN0aW9ucyIgPiY1Cist cHJpbnRmICVzICJjaGVja2luZyB3aGljaCBsaWJyYXJ5IGhhcyB0aGUgdGVybWNhcCBmdW5jdGlv bnMuLi4gIiA+JjY7IH0KKy1fYmFzaF9uZWVkbXNnPQorLWZpCistaWYgdGVzdCAke2Jhc2hfY3Zf dGVybWNhcF9saWIreX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1l bHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAidGdl dGVudCIgImFjX2N2X2Z1bmNfdGdldGVudCIKKy1pZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfdGdldGVu dCIgPSB4eWVzCistdGhlbiA6CistICBiYXNoX2N2X3Rlcm1jYXBfbGliPWxpYmMKKy1lbHNlIGNh c2UgZSBpbiAjKAorLSAgZSkgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJ TkVOT306IGNoZWNraW5nIGZvciB0Z2V0ZW50IGluIC1sdGVybWNhcCIgPiY1CistcHJpbnRmICVz ICJjaGVja2luZyBmb3IgdGdldGVudCBpbiAtbHRlcm1jYXAuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0 ICR7YWNfY3ZfbGliX3Rlcm1jYXBfdGdldGVudCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIo Y2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jaGVja19saWJfc2F2 ZV9MSUJTPSRMSUJTCistTElCUz0iLWx0ZXJtY2FwICAkTElCUyIKKy1jYXQgY29uZmRlZnMuaCAt IDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CistLyogZW5kIGNvbmZkZWZzLmguICAqLworLQor LS8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9y LgorLSAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBv ZiBhIEdDQworLSAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3Vs ZCBzdGlsbCBhcHBseS4KKy0gICBUaGUgJ2V4dGVybiAiQyInIGlzIGZvciBidWlsZHMgYnkgQysr IGNvbXBpbGVyczsKKy0gICBhbHRob3VnaCB0aGlzIGlzIG5vdCBnZW5lcmFsbHkgc3VwcG9ydGVk IGluIEMgY29kZSBzdXBwb3J0aW5nIGl0IGhlcmUKKy0gICBoYXMgbGl0dGxlIGNvc3QgYW5kIHNv bWUgcHJhY3RpY2FsIGJlbmVmaXQgKHNyIDExMDUzMikuICAqLworLSNpZmRlZiBfX2NwbHVzcGx1 cworLWV4dGVybiAiQyIKKy0jZW5kaWYKKy1jaGFyIHRnZXRlbnQgKHZvaWQpOworLWludAorLW1h aW4gKHZvaWQpCisteworLXJldHVybiB0Z2V0ZW50ICgpOworLSAgOworLSAgcmV0dXJuIDA7Cist fQorLV9BQ0VPRgorLWlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iCistdGhlbiA6CistICBh Y19jdl9saWJfdGVybWNhcF90Z2V0ZW50PXllcworLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBh Y19jdl9saWJfdGVybWNhcF90Z2V0ZW50PW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBj b25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAgY29u ZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1MSUJTPSRhY19jaGVja19saWJfc2F2 ZV9MSUJTIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl90ZXJtY2FwX3RnZXRlbnQiID4mNQorLXBy aW50ZiAiJXNcbiIgIiRhY19jdl9saWJfdGVybWNhcF90Z2V0ZW50IiA+JjY7IH0KKy1pZiB0ZXN0 ICJ4JGFjX2N2X2xpYl90ZXJtY2FwX3RnZXRlbnQiID0geHllcworLXRoZW4gOgorLSAgYmFzaF9j dl90ZXJtY2FwX2xpYj1saWJ0ZXJtY2FwCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIHsgcHJp bnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgdGdl dGVudCBpbiAtbHRpbmZvIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5nIGZvciB0Z2V0ZW50IGlu IC1sdGluZm8uLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICR7YWNfY3ZfbGliX3RpbmZvX3RnZXRlbnQr eX0KKy10aGVuIDoKKy0gIHByaW50ZiAlcyAiKGNhY2hlZCkgIiA+JjYKKy1lbHNlIGNhc2UgZSBp biAjKAorLSAgZSkgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworLUxJQlM9Ii1sdGluZm8g ICRMSUJTIgorLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0v KiBlbmQgY29uZmRlZnMuaC4gICovCistCistLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBw cm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCistICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWln aHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCistICAgYnVpbHRpbiBhbmQgdGhlbiBp dHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LgorLSAgIFRoZSAnZXh0ZXJu ICJDIicgaXMgZm9yIGJ1aWxkcyBieSBDKysgY29tcGlsZXJzOworLSAgIGFsdGhvdWdoIHRoaXMg aXMgbm90IGdlbmVyYWxseSBzdXBwb3J0ZWQgaW4gQyBjb2RlIHN1cHBvcnRpbmcgaXQgaGVyZQor LSAgIGhhcyBsaXR0bGUgY29zdCBhbmQgc29tZSBwcmFjdGljYWwgYmVuZWZpdCAoc3IgMTEwNTMy KS4gICovCistI2lmZGVmIF9fY3BsdXNwbHVzCistZXh0ZXJuICJDIgorLSNlbmRpZgorLWNoYXIg dGdldGVudCAodm9pZCk7CistaW50CistbWFpbiAodm9pZCkKKy17CistcmV0dXJuIHRnZXRlbnQg KCk7CistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfbGlu ayAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGFjX2N2X2xpYl90aW5mb190Z2V0ZW50PXllcworLWVs c2UgY2FzZSBlIGluICMoCistICBlKSBhY19jdl9saWJfdGluZm9fdGdldGVudD1ubyA7OworLWVz YWMKKy1maQorLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29u ZnRlc3QuYmVhbSBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Cist TElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUyA7OworLWVzYWMKKy1maQorLXsgcHJpbnRmICIl c1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfdGlu Zm9fdGdldGVudCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFjX2N2X2xpYl90aW5mb190Z2V0ZW50 IiA+JjY7IH0KKy1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl90aW5mb190Z2V0ZW50IiA9IHh5ZXMKKy10 aGVuIDoKKy0gIGJhc2hfY3ZfdGVybWNhcF9saWI9bGlidGluZm8KKy1lbHNlIGNhc2UgZSBpbiAj KAorLSAgZSkgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo ZWNraW5nIGZvciB0Z2V0ZW50IGluIC1sY3Vyc2VzIiA+JjUKKy1wcmludGYgJXMgImNoZWNraW5n IGZvciB0Z2V0ZW50IGluIC1sY3Vyc2VzLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2FjX2N2X2xp Yl9jdXJzZXNfdGdldGVudCt5fQorLXRoZW4gOgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4m NgorLWVsc2UgY2FzZSBlIGluICMoCistICBlKSBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJT CistTElCUz0iLWxjdXJzZXMgICRMSUJTIgorLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv bmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCistCistLyogT3ZlcnJpZGUg YW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCistICAgVXNlIGNo YXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCistICAg YnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5 LgorLSAgIFRoZSAnZXh0ZXJuICJDIicgaXMgZm9yIGJ1aWxkcyBieSBDKysgY29tcGlsZXJzOwor LSAgIGFsdGhvdWdoIHRoaXMgaXMgbm90IGdlbmVyYWxseSBzdXBwb3J0ZWQgaW4gQyBjb2RlIHN1 cHBvcnRpbmcgaXQgaGVyZQorLSAgIGhhcyBsaXR0bGUgY29zdCBhbmQgc29tZSBwcmFjdGljYWwg YmVuZWZpdCAoc3IgMTEwNTMyKS4gICovCistI2lmZGVmIF9fY3BsdXNwbHVzCistZXh0ZXJuICJD IgorLSNlbmRpZgorLWNoYXIgdGdldGVudCAodm9pZCk7CistaW50CistbWFpbiAodm9pZCkKKy17 CistcmV0dXJuIHRnZXRlbnQgKCk7CistICA7CistICByZXR1cm4gMDsKKy19CistX0FDRU9GCist aWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyIKKy10aGVuIDoKKy0gIGFjX2N2X2xpYl9jdXJz ZXNfdGdldGVudD15ZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYWNfY3ZfbGliX2N1cnNl c190Z2V0ZW50PW5vIDs7CistZXNhYworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29u ZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIFwKKy0gICAgY29uZnRlc3QkYWNfZXhlZXh0 IGNvbmZ0ZXN0LiRhY19leHQKKy1MSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTIDs7CistZXNh YworLWZpCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogJGFjX2N2X2xpYl9jdXJzZXNfdGdldGVudCIgPiY1CistcHJpbnRmICIlc1xuIiAiJGFj X2N2X2xpYl9jdXJzZXNfdGdldGVudCIgPiY2OyB9CistaWYgdGVzdCAieCRhY19jdl9saWJfY3Vy c2VzX3RnZXRlbnQiID0geHllcworLXRoZW4gOgorLSAgYmFzaF9jdl90ZXJtY2FwX2xpYj1saWJj dXJzZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0Z2V0ZW50IGluIC1sbmN1cnNlc3ci ID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgZm9yIHRnZXRlbnQgaW4gLWxuY3Vyc2Vzdy4uLiAi ID4mNjsgfQorLWlmIHRlc3QgJHthY19jdl9saWJfbmN1cnNlc3dfdGdldGVudCt5fQorLXRoZW4g OgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCistTElCUz0iLWxuY3Vyc2VzdyAgJExJQlMi CistY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBj b25mZGVmcy5oLiAgKi8KKy0KKy0vKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlw ZSB0byBhdm9pZCBhbiBlcnJvci4KKy0gICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRj aCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKy0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1 bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuCistICAgVGhlICdleHRlcm4gIkMiJyBp cyBmb3IgYnVpbGRzIGJ5IEMrKyBjb21waWxlcnM7CistICAgYWx0aG91Z2ggdGhpcyBpcyBub3Qg Z2VuZXJhbGx5IHN1cHBvcnRlZCBpbiBDIGNvZGUgc3VwcG9ydGluZyBpdCBoZXJlCistICAgaGFz IGxpdHRsZSBjb3N0IGFuZCBzb21lIHByYWN0aWNhbCBiZW5lZml0IChzciAxMTA1MzIpLiAgKi8K Ky0jaWZkZWYgX19jcGx1c3BsdXMKKy1leHRlcm4gIkMiCistI2VuZGlmCistY2hhciB0Z2V0ZW50 ICh2b2lkKTsKKy1pbnQKKy1tYWluICh2b2lkKQorLXsKKy1yZXR1cm4gdGdldGVudCAoKTsKKy0g IDsKKy0gIHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9saW5rICIkTElO RU5PIgorLXRoZW4gOgorLSAgYWNfY3ZfbGliX25jdXJzZXN3X3RnZXRlbnQ9eWVzCistZWxzZSBj YXNlIGUgaW4gIygKKy0gIGUpIGFjX2N2X2xpYl9uY3Vyc2Vzd190Z2V0ZW50PW5vIDs7CistZXNh YworLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25m dGVzdC5iZWFtIFwKKy0gICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1M SUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTIDs7CistZXNhYworLWZpCisteyBwcmludGYgIiVz XG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9uY3Vy c2Vzd190Z2V0ZW50IiA+JjUKKy1wcmludGYgIiVzXG4iICIkYWNfY3ZfbGliX25jdXJzZXN3X3Rn ZXRlbnQiID4mNjsgfQorLWlmIHRlc3QgIngkYWNfY3ZfbGliX25jdXJzZXN3X3RnZXRlbnQiID0g eHllcworLXRoZW4gOgorLSAgYmFzaF9jdl90ZXJtY2FwX2xpYj1saWJuY3Vyc2VzdworLWVsc2Ug Y2FzZSBlIGluICMoCistICBlKSB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogY2hlY2tpbmcgZm9yIHRnZXRlbnQgaW4gLWxuY3Vyc2VzIiA+JjUKKy1wcmludGYg JXMgImNoZWNraW5nIGZvciB0Z2V0ZW50IGluIC1sbmN1cnNlcy4uLiAiID4mNjsgfQorLWlmIHRl c3QgJHthY19jdl9saWJfbmN1cnNlc190Z2V0ZW50K3l9CistdGhlbiA6CistICBwcmludGYgJXMg IihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUpIGFjX2NoZWNrX2xpYl9z YXZlX0xJQlM9JExJQlMKKy1MSUJTPSItbG5jdXJzZXMgICRMSUJTIgorLWNhdCBjb25mZGVmcy5o IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy0vKiBlbmQgY29uZmRlZnMuaC4gICovCist CistLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJy b3IuCistICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBl IG9mIGEgR0NDCistICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdv dWxkIHN0aWxsIGFwcGx5LgorLSAgIFRoZSAnZXh0ZXJuICJDIicgaXMgZm9yIGJ1aWxkcyBieSBD KysgY29tcGlsZXJzOworLSAgIGFsdGhvdWdoIHRoaXMgaXMgbm90IGdlbmVyYWxseSBzdXBwb3J0 ZWQgaW4gQyBjb2RlIHN1cHBvcnRpbmcgaXQgaGVyZQorLSAgIGhhcyBsaXR0bGUgY29zdCBhbmQg c29tZSBwcmFjdGljYWwgYmVuZWZpdCAoc3IgMTEwNTMyKS4gICovCistI2lmZGVmIF9fY3BsdXNw bHVzCistZXh0ZXJuICJDIgorLSNlbmRpZgorLWNoYXIgdGdldGVudCAodm9pZCk7CistaW50Cist bWFpbiAodm9pZCkKKy17CistcmV0dXJuIHRnZXRlbnQgKCk7CistICA7CistICByZXR1cm4gMDsK Ky19CistX0FDRU9GCistaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyIKKy10aGVuIDoKKy0g IGFjX2N2X2xpYl9uY3Vyc2VzX3RnZXRlbnQ9eWVzCistZWxzZSBjYXNlIGUgaW4gIygKKy0gIGUp IGFjX2N2X2xpYl9uY3Vyc2VzX3RnZXRlbnQ9bm8gOzsKKy1lc2FjCistZmkKKy1ybSAtZiBjb3Jl IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gXAorLSAgICBj b25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLUxJQlM9JGFjX2NoZWNrX2xpYl9z YXZlX0xJQlMgOzsKKy1lc2FjCistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX25jdXJzZXNfdGdldGVudCIgPiY1Cist cHJpbnRmICIlc1xuIiAiJGFjX2N2X2xpYl9uY3Vyc2VzX3RnZXRlbnQiID4mNjsgfQorLWlmIHRl c3QgIngkYWNfY3ZfbGliX25jdXJzZXNfdGdldGVudCIgPSB4eWVzCistdGhlbiA6CistICBiYXNo X2N2X3Rlcm1jYXBfbGliPWxpYm5jdXJzZXMKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYmFz aF9jdl90ZXJtY2FwX2xpYj1nbnV0ZXJtY2FwIDs7CistZXNhYworLWZpCistIDs7CistZXNhYwor LWZpCistIDs7CistZXNhYworLWZpCistIDs7CistZXNhYworLWZpCistIDs7CistZXNhYworLWZp CistIDs7CistZXNhYworLWZpCistIDs7CistZXNhYworLWZpCistCistaWYgdGVzdCAiWCRfYmFz aF9uZWVkbXNnIiA9ICJYeWVzIjsgdGhlbgorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGljaCBsaWJyYXJ5IGhhcyB0aGUgdGVybWNhcCBm dW5jdGlvbnMiID4mNQorLXByaW50ZiAlcyAiY2hlY2tpbmcgd2hpY2ggbGlicmFyeSBoYXMgdGhl IHRlcm1jYXAgZnVuY3Rpb25zLi4uICIgPiY2OyB9CistZmkKKy17IHByaW50ZiAiJXNcbiIgIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB1c2luZyAkYmFzaF9jdl90ZXJtY2Fw X2xpYiIgPiY1CistcHJpbnRmICIlc1xuIiAidXNpbmcgJGJhc2hfY3ZfdGVybWNhcF9saWIiID4m NjsgfQorLWlmIHRlc3QgJGJhc2hfY3ZfdGVybWNhcF9saWIgPSBnbnV0ZXJtY2FwICYmIHRlc3Qg LXogIiRwcmVmZXJfY3Vyc2VzIjsgdGhlbgorLUxERkxBR1M9IiRMREZMQUdTIC1MLi9saWIvdGVy bWNhcCIKKy1URVJNQ0FQX0xJQj0iLi9saWIvdGVybWNhcC9saWJ0ZXJtY2FwLmEiCistVEVSTUNB UF9ERVA9Ii4vbGliL3Rlcm1jYXAvbGlidGVybWNhcC5hIgorLWVsaWYgdGVzdCAkYmFzaF9jdl90 ZXJtY2FwX2xpYiA9IGxpYnRlcm1jYXAgJiYgdGVzdCAteiAiJHByZWZlcl9jdXJzZXMiOyB0aGVu CistVEVSTUNBUF9MSUI9LWx0ZXJtY2FwCistVEVSTUNBUF9ERVA9CistZWxpZiB0ZXN0ICRiYXNo X2N2X3Rlcm1jYXBfbGliID0gbGlidGluZm87IHRoZW4KKy1URVJNQ0FQX0xJQj0tbHRpbmZvCist VEVSTUNBUF9ERVA9CistZWxpZiB0ZXN0ICRiYXNoX2N2X3Rlcm1jYXBfbGliID0gbGlibmN1cnNl c3c7IHRoZW4KKy1URVJNQ0FQX0xJQj0tbG5jdXJzZXN3CistVEVSTUNBUF9ERVA9CistZWxpZiB0 ZXN0ICRiYXNoX2N2X3Rlcm1jYXBfbGliID0gbGlibmN1cnNlczsgdGhlbgorLVRFUk1DQVBfTElC PS1sbmN1cnNlcworLVRFUk1DQVBfREVQPQorLWVsaWYgdGVzdCAkYmFzaF9jdl90ZXJtY2FwX2xp YiA9IGxpYmN1cnNlczsgdGhlbgorLVRFUk1DQVBfTElCPS1sY3Vyc2VzCistVEVSTUNBUF9ERVA9 CistZWxpZiB0ZXN0ICRiYXNoX2N2X3Rlcm1jYXBfbGliID0gbGliYzsgdGhlbgorLVRFUk1DQVBf TElCPQorLVRFUk1DQVBfREVQPQorLWVsc2UKKy0jIHdlIGFzc3VtZSBuY3Vyc2VzIGlzIGluc3Rh bGxlZCBzb21ld2hlcmUgdGhlIGxpbmtlciBjYW4gZmluZCBpdAorLVRFUk1DQVBfTElCPS1sbmN1 cnNlcworLVRFUk1DQVBfREVQPQorLWZpCistCistZmkKKy0KKy0KKy0KKy17IHByaW50ZiAiJXNc biIgIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAvZGV2L2Zk IGlzIGF2YWlsYWJsZSIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyB3aGV0aGVyIC9kZXYvZmQg aXMgYXZhaWxhYmxlLi4uICIgPiY2OyB9CistaWYgdGVzdCAke2Jhc2hfY3ZfZGV2X2ZkK3l9Cist dGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygK Ky0gIGUpIGJhc2hfY3ZfZGV2X2ZkPSIiCistaWYgdGVzdCAtZCAvZGV2L2ZkICYmIChleGVjIHRl c3QgLXIgL2Rldi9mZC8wIDwgL2Rldi9udWxsKSA7IHRoZW4KKy0jIGNoZWNrIGZvciBzeXN0ZW1z IGxpa2UgRnJlZUJTRCA1IHRoYXQgb25seSBwcm92aWRlIC9kZXYvZmQvWzAxMl0KKy0gICBpZiAo ZXhlYyB0ZXN0IC1yIC9kZXYvZmQvMyAzPC9kZXYvbnVsbCkgOyB0aGVuCistICAgICBiYXNoX2N2 X2Rldl9mZD1zdGFuZGFyZAorLSAgIGVsc2UKKy0gICAgIGJhc2hfY3ZfZGV2X2ZkPWFic2VudAor LSAgIGZpCistZWxpZiB0ZXN0ICIkaG9zdF9vcyIgPSAib3BlbmVkaXRpb24iICYmIChleGVjIHRl c3QgLXIgL2Rldi9mZDAgPCAvZGV2L251bGwpOyB0aGVuCistICBiYXNoX2N2X2Rldl9mZD1ub2Rp cgkJIyAvZGV2L2ZkTiB2aWEgY2hhcmFjdGVyIGRldmljZQorLWZpCistaWYgdGVzdCAteiAiJGJh c2hfY3ZfZGV2X2ZkIiA7IHRoZW4KKy0gIGlmIHRlc3QgLWQgL3Byb2Mvc2VsZi9mZCAmJiAoZXhl YyB0ZXN0IC1yIC9wcm9jL3NlbGYvZmQvMCA8IC9kZXYvbnVsbCkgOyB0aGVuCistICAgIGJhc2hf Y3ZfZGV2X2ZkPXdoYWNreQorLSAgZWxzZQorLSAgICBiYXNoX2N2X2Rldl9mZD1hYnNlbnQKKy0g IGZpCistZmkKKy0gOzsKKy1lc2FjCistZmkKKy0KKy17IHByaW50ZiAiJXNcbiIgIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl9kZXZfZmQiID4mNQorLXByaW50 ZiAiJXNcbiIgIiRiYXNoX2N2X2Rldl9mZCIgPiY2OyB9CistaWYgdGVzdCAkYmFzaF9jdl9kZXZf ZmQgPSAic3RhbmRhcmQiOyB0aGVuCistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVfREVW X0ZEIDEiID4+Y29uZmRlZnMuaAorLQorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBERVZfRkRf UFJFRklYIFwiL2Rldi9mZC9cIiIgPj5jb25mZGVmcy5oCistCistZWxpZiB0ZXN0ICRiYXNoX2N2 X2Rldl9mZCA9ICJ3aGFja3kiOyB0aGVuCistICBwcmludGYgIiVzXG4iICIjZGVmaW5lIEhBVkVf REVWX0ZEIDEiID4+Y29uZmRlZnMuaAorLQorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmluZSBERVZf RkRfUFJFRklYIFwiL3Byb2Mvc2VsZi9mZC9cIiIgPj5jb25mZGVmcy5oCistCistZWxpZiB0ZXN0 ICRiYXNoX2N2X2Rldl9mZCA9ICJub2RpciI7IHRoZW4KKy0gIHByaW50ZiAiJXNcbiIgIiNkZWZp bmUgSEFWRV9ERVZfRkQgMSIgPj5jb25mZGVmcy5oCistCistICBwcmludGYgIiVzXG4iICIjZGVm aW5lIERFVl9GRF9QUkVGSVggXCIvZGV2L2ZkXCIiID4+Y29uZmRlZnMuaAorLQorLWZpCistCist eyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdo ZXRoZXIgL2Rldi9zdGRpbiBzdGRvdXQgc3RkZXJyIGFyZSBhdmFpbGFibGUiID4mNQorLXByaW50 ZiAlcyAiY2hlY2tpbmcgd2hldGhlciAvZGV2L3N0ZGluIHN0ZG91dCBzdGRlcnIgYXJlIGF2YWls YWJsZS4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHtiYXNoX2N2X2Rldl9zdGRpbit5fQorLXRoZW4g OgorLSAgcHJpbnRmICVzICIoY2FjaGVkKSAiID4mNgorLWVsc2UgY2FzZSBlIGluICMoCistICBl KSBpZiAoZXhlYyB0ZXN0IC1yIC9kZXYvc3RkaW4gPCAvZGV2L251bGwpIDsgdGhlbgorLSAgIGJh c2hfY3ZfZGV2X3N0ZGluPXByZXNlbnQKKy0gZWxzZQorLSAgIGJhc2hfY3ZfZGV2X3N0ZGluPWFi c2VudAorLSBmaQorLSA7OworLWVzYWMKKy1maQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21l OiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRiYXNoX2N2X2Rldl9zdGRpbiIgPiY1Cist cHJpbnRmICIlc1xuIiAiJGJhc2hfY3ZfZGV2X3N0ZGluIiA+JjY7IH0KKy1pZiB0ZXN0ICRiYXNo X2N2X2Rldl9zdGRpbiA9ICJwcmVzZW50IjsgdGhlbgorLSAgcHJpbnRmICIlc1xuIiAiI2RlZmlu ZSBIQVZFX0RFVl9TVERJTiAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorLQorLXsgcHJpbnRmICIl c1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGVmYXVsdCBt YWlsIGRpcmVjdG9yeSIgPiY1CistcHJpbnRmICVzICJjaGVja2luZyBmb3IgZGVmYXVsdCBtYWls IGRpcmVjdG9yeS4uLiAiID4mNjsgfQorLWlmIHRlc3QgJHtiYXNoX2N2X21haWxfZGlyK3l9Cist dGhlbiA6CistICBwcmludGYgJXMgIihjYWNoZWQpICIgPiY2CistZWxzZSBjYXNlIGUgaW4gIygK Ky0gIGUpIGlmIHRlc3QgLWQgL3Zhci9tYWlsOyB0aGVuCistICAgYmFzaF9jdl9tYWlsX2Rpcj0v dmFyL21haWwKKy0gZWxpZiB0ZXN0IC1kIC92YXIvc3Bvb2wvbWFpbDsgdGhlbgorLSAgIGJhc2hf Y3ZfbWFpbF9kaXI9L3Zhci9zcG9vbC9tYWlsCistIGVsaWYgdGVzdCAtZCAvdXNyL21haWw7IHRo ZW4KKy0gICBiYXNoX2N2X21haWxfZGlyPS91c3IvbWFpbAorLSBlbGlmIHRlc3QgLWQgL3Vzci9z cG9vbC9tYWlsOyB0aGVuCistICAgYmFzaF9jdl9tYWlsX2Rpcj0vdXNyL3Nwb29sL21haWwKKy0g ZWxzZQorLSAgIGJhc2hfY3ZfbWFpbF9kaXI9dW5rbm93bgorLSBmaQorLSA7OworLWVzYWMKKy1m aQorLQorLXsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6ICRiYXNoX2N2X21haWxfZGlyIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYmFzaF9jdl9tYWls X2RpciIgPiY2OyB9CistcHJpbnRmICIlc1xuIiAiI2RlZmluZSBERUZBVUxUX01BSUxfRElSRUNU T1JZIFwiJGJhc2hfY3ZfbWFpbF9kaXJcIiIgPj5jb25mZGVmcy5oCistCistCistCistaWYgdGVz dCAiJGJhc2hfY3Zfam9iX2NvbnRyb2xfbWlzc2luZyIgPSBtaXNzaW5nOyB0aGVuCistCW9wdF9q b2JfY29udHJvbD1ubworLWZpCistCistaWYgdGVzdCAiJG9wdF9qb2JfY29udHJvbCIgPSB5ZXM7 IHRoZW4KKy1wcmludGYgIiVzXG4iICIjZGVmaW5lIEpPQl9DT05UUk9MIDEiID4+Y29uZmRlZnMu aAorLQorLUpPQlNfTz1qb2JzLm8KKy1lbHNlCistSk9CU19PPW5vam9icy5vCistZmkKKy0KKy0K Ky0KKy0KKy1MT0NBTF9ERUZTPS1EU0hFTEwKKy0KKy0KKy1jYXNlICIke2hvc3Rfb3N9IiBpbgor LXN5c3Y0LjIqKQlwcmludGYgIiVzXG4iICIjZGVmaW5lIFNWUjRfMiAxIiA+PmNvbmZkZWZzLmgK Ky0KKy0JCXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgU1ZSNCAxIiA+PmNvbmZkZWZzLmgKKy0gOzsK Ky1zeXN2NCopCQlwcmludGYgIiVzXG4iICIjZGVmaW5lIFNWUjQgMSIgPj5jb25mZGVmcy5oCist IDs7Cistc3lzdjUqKQkJcHJpbnRmICIlc1xuIiAiI2RlZmluZSBTVlI1IDEiID4+Y29uZmRlZnMu aAorLSA7OworLWhwdXg5KikJCUxPQ0FMX0NGTEFHUz0iLURIUFVYOSAtREhQVVggLURUR0VURU5U X0JST0tFTiAtRFRHRVRGTEFHX0JST0tFTiIgOzsKKy1ocHV4KikJCUxPQ0FMX0NGTEFHUz0iLURI UFVYIC1EVEdFVEVOVF9CUk9LRU4gLURUR0VURkxBR19CUk9LRU4iIDs7CistZGd1eCopCQlMT0NB TF9DRkxBR1M9LURfREdVWF9TT1VSQ0U7IExPQ0FMX0xJQlM9LWxkZ2MgOzsKKy1pc2MqKQkJTE9D QUxfQ0ZMQUdTPS1EaXNjMzg2IDs7CistcmhhcHNvZHkqKQlMT0NBTF9DRkxBR1M9LURSSEFQU09E WSA7OworLWRhcndpbiopCUxPQ0FMX0NGTEFHUz0tRE1BQ09TWCA7OworLXNjbzMuMnY1KikJTE9D QUxfQ0ZMQUdTPSItYiBlbGYgLURXQUlUUElEX0JST0tFTiAtRFBBVEhfTUFYPTEwMjQiIDs7Cist c2NvMy4ydjQqKQlMT0NBTF9DRkxBR1M9Ii1ETVVTVF9VTkJMT0NLX0NITEQgLURQQVRIX01BWD0x MDI0IiA7OworLXNjbzMuMiopCUxPQ0FMX0NGTEFHUz0tRE1VU1RfVU5CTE9DS19DSExEIDs7Cist c3Vub3M0KikJTE9DQUxfQ0ZMQUdTPS1EU3VuT1M0IDs7Cistc29sYXJpczIuNSopCUxPQ0FMX0NG TEFHUz0iLURTdW5PUzUgLURTT0xBUklTIiA7OworLXNvbGFyaXMyLjgqKQlMT0NBTF9DRkxBR1M9 LURTT0xBUklTICA7OworLXNvbGFyaXMyLjkqKQlMT0NBTF9DRkxBR1M9LURTT0xBUklTICA7Owor LXNvbGFyaXMyLjEwKikJTE9DQUxfQ0ZMQUdTPS1EU09MQVJJUyAgOzsKKy1zb2xhcmlzMiopCUxP Q0FMX0NGTEFHUz0tRFNPTEFSSVMgOzsKKy1seW54b3MqKQlMT0NBTF9DRkxBR1M9LURSRUNZQ0xF U19QSURTIDs7CistbGludXgqKQkJTE9DQUxfTERGTEFHUz0tcmR5bmFtaWMJCSAjIGFsbG93IGR5 bmFtaWMgbG9hZGluZworLQkJY2FzZSAiYHVuYW1lIC1yYCIgaW4KKy0JCTEuKnwyLlswMTIzXSop CTogOzsKKy0JCSopCXByaW50ZiAiJXNcbiIgIiNkZWZpbmUgUEdSUF9QSVBFIDEiID4+Y29uZmRl ZnMuaAorLSA7OworLQkJZXNhYyA7OworLW5ldGJzZCp8b3BlbmJzZCopCUxPQ0FMX0NGTEFHUz0i LURERVZfRkRfU1RBVF9CUk9LRU4iIDs7CistZnJlZWJzZCp8bWlkbmlnaHRic2QqKQlMT0NBTF9D RkxBR1M9Jy1ESEVSRURPQ19QSVBFU0laRT00MDk2JyA7OworLSpxbnhbNjddKikJTE9DQUxfTElC Uz0iLWxuY3Vyc2VzIiA7OworLSpxbngqKQkJTE9DQUxfQ0ZMQUdTPSItRHFueCAtRiAtM3MiIExP Q0FMX0xERkxBR1M9Ii0zcyIgTE9DQUxfTElCUz0iLWx1bml4IC1sbmN1cnNlcyIgOzsKKy1wb3dl cnV4KikJTE9DQUxfTElCUz0iLWxnZW4iIDs7CistY3lnd2luKnxtc3lzKikJTE9DQUxfQ0ZMQUdT PS1EUkVDWUNMRVNfUElEUyA7OworLW9wZW5udCp8aW50ZXJpeCopIExPQ0FMX0NGTEFHUz0iLURO T19NQUlOX0VOVl9BUkcgLURCUk9LRU5fRElSRU5UX0RfSU5PIC1EX1BPU0lYX1NPVVJDRSAtRF9B TExfU09VUkNFIC1EUkVDWUNMRVNfUElEUyIgOzsKKy0qb3BlbnN0ZXAqKQlMT0NBTF9DRkxBR1M9 Ii1EX19BUFBMRV9DQ19fIiA7OworLWVzYWMKKy0KKy1jYXNlICIke2hvc3Rfb3N9LSR7Q0N9IiBp bgorLWFpeDQuMiotKmdjYyopCUxPQ0FMX0xERkxBR1M9Ii1YbGlua2VyIC1iZXhwYWxsIC1YbGlu a2VyIC1icnRsIiA7OworLWFpeDQuMiopCUxPQ0FMX0xERkxBR1M9Ii1iZXhwYWxsIC1icnRsIiA7 OworLWJzZGk0Ki0qZ2NjKikJTE9DQUxfTERGTEFHUz0iLXJkeW5hbWljIiA7OwkjIGFsbG93IGR5 bmFtaWMgbG9hZGluZywgbGlrZSBMaW51eAorLWJzZGk1Ki0qZ2NjKikJTE9DQUxfTERGTEFHUz0i LXJkeW5hbWljIiA7OwkjIGFsbG93IGR5bmFtaWMgbG9hZGluZywgbGlrZSBMaW51eAorLWhwdXgx MSotZ2NjKikJTE9DQUxfTERGTEFHUz0iLVdsLC1FIiA7OwkjIGFsbG93IGR5bmFtaWMgbG9hZGlu ZworLWVzYWMKKy0KKy1jYXNlICIke2hvc3Rfb3N9IiBpbgorLWZyZWVic2RbMy05XSopCistCQlp ZiB0ZXN0IC14IC91c3IvYmluL29iamZvcm1hdCAmJiB0ZXN0ICJgL3Vzci9iaW4vb2JqZm9ybWF0 YCIgPSAiZWxmIiA7IHRoZW4KKy0JCQlMT0NBTF9MREZMQUdTPS1yZHluYW1pYyAjIGFsbG93IGR5 bmFtaWMgbG9hZGluZworLQkJZmkgOzsKKy1mcmVlYnNkKikJTE9DQUxfTERGTEFHUz0tcmR5bmFt aWMgOzsJIyBhbGxvdyBkeW5hbWljIGxvYWRpbmcKKy1vcGVuYnNkKikJTE9DQUxfTERGTEFHUz0t cmR5bmFtaWMgOzsJIyBhbGxvdyBkeW5hbWljIGxvYWRpbmcKKy1uZXRic2QqKQlMT0NBTF9MREZM QUdTPS1yZHluYW1pYyA7OwkjIGFsbG93IGR5bmFtaWMgbG9hZGluZworLWRyYWdvbmZseSopCUxP Q0FMX0xERkxBR1M9LXJkeW5hbWljIDs7CSMgYWxsb3cgZHluYW1pYyBsb2FkaW5nCistbWlkbmln aHRic2QqKQlMT0NBTF9MREZMQUdTPS1yZHluYW1pYyA7OwkjIGFsbG93IGR5bmFtaWMgbG9hZGlu ZworLWVzYWMKKy0KKy1jYXNlICIkaG9zdF9jcHUiIGluCistKmNyYXkqKQkJTE9DQUxfQ0ZMQUdT PSItRENSQVkiIDs7ICMgc2hlbGwgdmFyIHNvIGNvbmZpZy5oIGNhbiB1c2UgaXQKKy1lc2FjCist CistY2FzZSAiJGhvc3RfY3B1LSRob3N0X29zIiBpbgorLWlibXJ0LSpic2Q0KikJTE9DQUxfQ0ZM QUdTPSItbWEgLVVfX1NURENfXyIgOzsKKy1lc2FjCistCistY2FzZSAiJGhvc3RfY3B1LSRob3N0 X3ZlbmRvci0kaG9zdF9vcyIgaW4KKy1tODhrLW1vdG9yb2xhLXN5c3YzKQlMT0NBTF9DRkxBR1M9 LURXQUlUUElEX0JST0tFTiA7OworLW1pcHMtcHlyYW1pZC1zeXN2NCkJTE9DQUxfQ0ZMQUdTPS1Y YSA7OworLWVzYWMKKy0KKy0jIHR1cm4gb2ZmIHBhcmVuIHdhcm5pbmdzIGluIGdjYworLSNDRkxB R1M9IiRDRkxBR1MgJHtTVFlMRV9DRkxBR1N9IgorLQorLSMKKy0jIFNoYXJlZCBvYmplY3QgY29u ZmlndXJhdGlvbiBzZWN0aW9uLiAgVGhlc2UgdmFsdWVzIGFyZSBnZW5lcmF0ZWQgYnkKKy0jICR7 c3JjZGlyfS9zdXBwb3J0L3Nob2JqLWNvbmYKKy0jCistaWYgdGVzdCAiJGFjX2N2X2Z1bmNfZGxv cGVuIiA9ICJ5ZXMiICYmIHRlc3QgLWYgJHtzcmNkaXJ9L3N1cHBvcnQvc2hvYmotY29uZgorLXRo ZW4KKy0JeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIHNoYXJlZCBvYmplY3QgY29uZmlndXJhdGlvbiBmb3IgbG9hZGFibGUgYnVpbHRpbnMiID4m NQorLXByaW50ZiAlcyAiY2hlY2tpbmcgc2hhcmVkIG9iamVjdCBjb25maWd1cmF0aW9uIGZvciBs b2FkYWJsZSBidWlsdGlucy4uLiAiID4mNjsgfQorLQlldmFsIGAke0NPTkZJR19TSEVMTC0vYmlu L3NofSAke3NyY2Rpcn0vc3VwcG9ydC9zaG9iai1jb25mIC1DICIke0NDfSIgLWMgIiR7aG9zdF9j cHV9IiAtbyAiJHtob3N0X29zfSIgLXYgIiR7aG9zdF92ZW5kb3J9ImAKKy0KKy0KKy0KKy0KKy0K Ky0KKy0KKy0JeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogJFNIT0JKX1NUQVRVUyIgPiY1CistcHJpbnRmICIlc1xuIiAiJFNIT0JKX1NUQVRVUyIg PiY2OyB9CistZWxzZQorLQlTSE9CSl9TVEFUVVM9dW5zdXBwb3J0ZWQKKy0KKy1maQorLQorLSMg dHJ5IHRvIGNyZWF0ZSBhIGRpcmVjdG9yeSB0cmVlIGlmIHRoZSBzb3VyY2UgaXMgZWxzZXdoZXJl CistIyB0aGlzIHNob3VsZCBiZSBwYWNrYWdlZCBpbnRvIGEgc2NyaXB0IGFjY2Vzc2libGUgdmlh ICR7c3JjZGlyfS9zdXBwb3J0CistY2FzZSAiJHNyY2RpciIgaW4KKy0uKQk7OworLSopCWZvciBk IGluIGRvYyB0ZXN0cyBzdXBwb3J0IGxpYiBleGFtcGxlczsgZG8JIyBkaXJzCistCQl0ZXN0IC1k ICRkIHx8IG1rZGlyICRkCistCWRvbmUKKy0JZm9yIGxkIGluIHJlYWRsaW5lIGdsb2IgdGlsZGUg bWFsbG9jIHNoIHRlcm1jYXA7IGRvCSMgbGliZGlycworLQkJdGVzdCAtZCBsaWIvJGxkIHx8IG1r ZGlyIGxpYi8kbGQKKy0JZG9uZQorLQl0ZXN0IC1kIGV4YW1wbGVzL2xvYWRhYmxlcyB8fCBta2Rp ciBleGFtcGxlcy9sb2FkYWJsZXMJIyBsb2FkYWJsZSBidWlsdGlucworLQl0ZXN0IC1kIGV4YW1w bGVzL2xvYWRhYmxlcy9wZXJsIHx8IG1rZGlyIGV4YW1wbGVzL2xvYWRhYmxlcy9wZXJsCistCTs7 CistZXNhYworLQorLUJVSUxEX0RJUj1gcHdkYAorLWNhc2UgIiRCVUlMRF9ESVIiIGluCistKlwg KikJQlVJTERfRElSPWBlY2hvICIkQlVJTERfRElSIiB8IHNlZCAnczogOlxcXFwgOmcnYCA7Owor LSopCTs7CistZXNhYworLQorLWlmIHRlc3QgLXogIiRsb2NhbGVkaXIiOyB0aGVuCistCWxvY2Fs ZWRpcj0nJHtkYXRhcm9vdGRpcn0vbG9jYWxlJworLWZpCistaWYgdGVzdCAteiAiJGRhdGFyb290 ZGlyIjsgdGhlbgorLQlkYXRhcm9vdGRpcj0nJHtwcmVmaXh9L3NoYXJlJworLWZpCistCistCist CistCistCistCistIyBTb21lIHZlcnNpb25zIG9mIGF1dG9jb25mIGRvbid0IHN1YnN0aXR1dGUg dGhlc2UgYXV0b21hdGljYWxseQorLQorLQorLQorLSMgZGlyZWN0b3J5IHdoZXJlIHdlIGluc3Rh bGwgZHluYW1pY2FsbHkgbG9hZGFibGUgYnVpbHRpbnMKKy1pZiB0ZXN0IC16ICIkbG9hZGFibGVz ZGlyIjsgdGhlbgorLQlsb2FkYWJsZXNkaXI9JyR7bGliZGlyfS9iYXNoJworLWZpCistCistaWYg dGVzdCAteiAiJGhlYWRlcnNkaXIiOyB0aGVuCistCWhlYWRlcnNkaXI9JyQoaW5jbHVkZWRpcikv JChQQUNLQUdFX05BTUUpJworLWZpCistCistCistCistCistCistCistCistCistCistCistCist CistCistCistCistCistCistCistCistCistI0FDX1NVQlNUKEFMTE9DQV9TT1VSQ0UpCistI0FD X1NVQlNUKEFMTE9DQV9PQkpFQ1QpCistCistYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2Zp bGVzIE1ha2VmaWxlIGJ1aWx0aW5zL01ha2VmaWxlIGxpYi9yZWFkbGluZS9NYWtlZmlsZSBsaWIv Z2xvYi9NYWtlZmlsZSBsaWIvaW50bC9NYWtlZmlsZSBsaWIvbWFsbG9jL01ha2VmaWxlIGxpYi9z aC9NYWtlZmlsZSBsaWIvdGVybWNhcC9NYWtlZmlsZSBsaWIvdGlsZGUvTWFrZWZpbGUgZG9jL01h a2VmaWxlIHN1cHBvcnQvTWFrZWZpbGUgcG8vTWFrZWZpbGUuaW4gZXhhbXBsZXMvbG9hZGFibGVz L01ha2VmaWxlIGV4YW1wbGVzL2xvYWRhYmxlcy9NYWtlZmlsZS5pbmMgZXhhbXBsZXMvbG9hZGFi bGVzL01ha2VmaWxlLnNhbXBsZSBleGFtcGxlcy9sb2FkYWJsZXMvcGVybC9NYWtlZmlsZSBzdXBw b3J0L2Jhc2gucGMgc3VwcG9ydC9iYXNoYnVnLnNoIgorLQorLQorLWFjX2NvbmZpZ19jb21tYW5k cz0iJGFjX2NvbmZpZ19jb21tYW5kcyBzdGFtcC1oIgorLQorLQorLWlmIHRlc3QgIiRhY19jdl9o ZWFkZXJfc3RkY2tkaW50X2giID0geWVzOyB0aGVuCistCXJtIC1mIHN0ZGNrZGludC5oCistCVNU RENLRElOVF9IPQorLWVsaWYgY21wICR7c3JjZGlyfS9pbmNsdWRlL3N0ZGNrZGludC5pbi5oIHN0 ZGNrZGludC5oIDI+L2Rldi9udWxsOyB0aGVuCistCToKKy0JU1REQ0tESU5UX0g9JyR7QlVJTERf RElSfS9zdGRja2RpbnQuaCcKKy1lbHNlCistCWNwICR7c3JjZGlyfS9pbmNsdWRlL3N0ZGNrZGlu dC5pbi5oIHN0ZGNrZGludC5oCistCVNURENLRElOVF9IPScke0JVSUxEX0RJUn0vc3RkY2tkaW50 LmgnCistZmkKKy0KKy0KKy1jYXQgPmNvbmZjYWNoZSA8PFxfQUNFT0YKKy0jIFRoaXMgZmlsZSBp cyBhIHNoZWxsIHNjcmlwdCB0aGF0IGNhY2hlcyB0aGUgcmVzdWx0cyBvZiBjb25maWd1cmUKKy0j IHRlc3RzIHJ1biBvbiB0aGlzIHN5c3RlbSBzbyB0aGV5IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBj b25maWd1cmUKKy0jIHNjcmlwdHMgYW5kIGNvbmZpZ3VyZSBydW5zLCBzZWUgY29uZmlndXJlJ3Mg b3B0aW9uIC0tY29uZmlnLWNhY2hlLgorLSMgSXQgaXMgbm90IHVzZWZ1bCBvbiBvdGhlciBzeXN0 ZW1zLiAgSWYgaXQgY29udGFpbnMgcmVzdWx0cyB5b3UgZG9uJ3QKKy0jIHdhbnQgdG8ga2VlcCwg eW91IG1heSByZW1vdmUgb3IgZWRpdCBpdC4KKy0jCistIyBjb25maWcuc3RhdHVzIG9ubHkgcGF5 cyBhdHRlbnRpb24gdG8gdGhlIGNhY2hlIGZpbGUgaWYgeW91IGdpdmUgaXQKKy0jIHRoZSAtLXJl Y2hlY2sgb3B0aW9uIHRvIHJlcnVuIGNvbmZpZ3VyZS4KKy0jCistIyAnYWNfY3ZfZW52X2Zvbycg dmFyaWFibGVzIChzZXQgb3IgdW5zZXQpIHdpbGwgYmUgb3ZlcnJpZGRlbiB3aGVuCistIyBsb2Fk aW5nIHRoaXMgZmlsZSwgb3RoZXIgKnVuc2V0KiAnYWNfY3ZfZm9vJyB3aWxsIGJlIGFzc2lnbmVk IHRoZQorLSMgZm9sbG93aW5nIHZhbHVlcy4KKy0KKy1fQUNFT0YKKy0KKy0jIFRoZSBmb2xsb3dp bmcgd2F5IG9mIHdyaXRpbmcgdGhlIGNhY2hlIG1pc2hhbmRsZXMgbmV3bGluZXMgaW4gdmFsdWVz LAorLSMgYnV0IHdlIGtub3cgb2Ygbm8gd29ya2Fyb3VuZCB0aGF0IGlzIHNpbXBsZSwgcG9ydGFi bGUsIGFuZCBlZmZpY2llbnQuCistIyBTbywgd2Uga2lsbCB2YXJpYWJsZXMgY29udGFpbmluZyBu ZXdsaW5lcy4KKy0jIFVsdHJpeCBzaCBzZXQgd3JpdGVzIHRvIHN0ZGVyciBhbmQgY2FuJ3QgYmUg cmVkaXJlY3RlZCBkaXJlY3RseSwKKy0jIGFuZCBzZXRzIHRoZSBoaWdoIGJpdCBpbiB0aGUgY2Fj aGUgZmlsZSB1bmxlc3Mgd2UgYXNzaWduIHRvIHRoZSB2YXJzLgorLSgKKy0gIGZvciBhY192YXIg aW4gYChzZXQpIDI+JjEgfCBzZWQgLW4gJ3MvXlwoW2EtekEtWl9dW2EtekEtWjAtOV9dKlwpPS4q L1wxL3AnYDsgZG8KKy0gICAgZXZhbCBhY192YWw9XCQkYWNfdmFyCistICAgIGNhc2UgJGFjX3Zh bCBpbiAjKAorLSAgICAqJHthc19ubH0qKQorLSAgICAgIGNhc2UgJGFjX3ZhciBpbiAjKAorLSAg ICAgICpfY3ZfKikgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IFdBUk5JTkc6IGNhY2hlIHZhcmlhYmxlICRhY192YXIgY29udGFpbnMgYSBuZXdsaW5lIiA+JjUK Ky1wcmludGYgIiVzXG4iICIkYXNfbWU6IFdBUk5JTkc6IGNhY2hlIHZhcmlhYmxlICRhY192YXIg Y29udGFpbnMgYSBuZXdsaW5lIiA+JjI7fSA7OworLSAgICAgIGVzYWMKKy0gICAgICBjYXNlICRh Y192YXIgaW4gIygKKy0gICAgICBfIHwgSUZTIHwgYXNfbmwpIDs7ICMoCistICAgICAgQkFTSF9B UkdWIHwgQkFTSF9TT1VSQ0UpIGV2YWwgJGFjX3Zhcj0gOzsgIygKKy0gICAgICAqKSB7IGV2YWwg JGFjX3Zhcj07IHVuc2V0ICRhY192YXI7fSA7OworLSAgICAgIGVzYWMgOzsKKy0gICAgZXNhYwor LSAgZG9uZQorLQorLSAgKHNldCkgMj4mMSB8CistICAgIGNhc2UgJGFzX25sYChhY19zcGFjZT0n ICc7IHNldCkgMj4mMWAgaW4gIygKKy0gICAgKiR7YXNfbmx9YWNfc3BhY2U9XCAqKQorLSAgICAg ICMgJ3NldCcgZG9lcyBub3QgcXVvdGUgY29ycmVjdGx5LCBzbyBhZGQgcXVvdGVzOiBkb3VibGUt cXVvdGUKKy0gICAgICAjIHN1YnN0aXR1dGlvbiB0dXJucyBcXFxcIGludG8gXFwsIGFuZCBzZWQg dHVybnMgXFwgaW50byBcLgorLSAgICAgIHNlZCAtbiBcCistCSJzLycvJ1xcXFwnJy9nOworLQkg IHMvXlxcKFtfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKlxcKT1cXCguKlxcKS9c XDE9J1xcMicvcCIKKy0gICAgICA7OyAjKAorLSAgICAqKQorLSAgICAgICMgJ3NldCcgcXVvdGVz IGNvcnJlY3RseSBhcyByZXF1aXJlZCBieSBQT1NJWCwgc28gZG8gbm90IGFkZCBxdW90ZXMuCist ICAgICAgc2VkIC1uICIvXltfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKj0vcCIK Ky0gICAgICA7OworLSAgICBlc2FjIHwKKy0gICAgc29ydAorLSkgfAorLSAgc2VkICcKKy0gICAg IC9eYWNfY3ZfZW52Xy9iIGVuZAorLSAgICAgdCBjbGVhcgorLSAgICAgOmNsZWFyCistICAgICBz L15cKFtePV0qXCk9XCguKlt7fV0uKlwpJC90ZXN0ICR7XDEreX0gfHwgJi8KKy0gICAgIHQgZW5k CistICAgICBzL15cKFtePV0qXCk9XCguKlwpJC9cMT0ke1wxPVwyfS8KKy0gICAgIDplbmQnID4+ Y29uZmNhY2hlCistaWYgZGlmZiAiJGNhY2hlX2ZpbGUiIGNvbmZjYWNoZSA+L2Rldi9udWxsIDI+ JjE7IHRoZW4gOjsgZWxzZQorLSAgaWYgdGVzdCAtdyAiJGNhY2hlX2ZpbGUiOyB0aGVuCistICAg IGlmIHRlc3QgIngkY2FjaGVfZmlsZSIgIT0gIngvZGV2L251bGwiOyB0aGVuCistICAgICAgeyBw cmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHVwZGF0aW5nIGNhY2hl ICRjYWNoZV9maWxlIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IHVwZGF0aW5nIGNhY2hl ICRjYWNoZV9maWxlIiA+JjY7fQorLSAgICAgIGlmIHRlc3QgISAtZiAiJGNhY2hlX2ZpbGUiIHx8 IHRlc3QgLWggIiRjYWNoZV9maWxlIjsgdGhlbgorLQljYXQgY29uZmNhY2hlID4iJGNhY2hlX2Zp bGUiCistICAgICAgZWxzZQorLSAgICAgICAgY2FzZSAkY2FjaGVfZmlsZSBpbiAjKAorLSAgICAg ICAgKi8qIHwgPzoqKQorLQkgIG12IC1mIGNvbmZjYWNoZSAiJGNhY2hlX2ZpbGUiJCQgJiYKKy0J ICBtdiAtZiAiJGNhY2hlX2ZpbGUiJCQgIiRjYWNoZV9maWxlIiA7OyAjKAorLSAgICAgICAgKikK Ky0JICBtdiAtZiBjb25mY2FjaGUgIiRjYWNoZV9maWxlIiA7OworLQllc2FjCistICAgICAgZmkK Ky0gICAgZmkKKy0gIGVsc2UKKy0gICAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5l bm8tJExJTkVOT306IG5vdCB1cGRhdGluZyB1bndyaXRhYmxlIGNhY2hlICRjYWNoZV9maWxlIiA+ JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IG5vdCB1cGRhdGluZyB1bndyaXRhYmxlIGNhY2hl ICRjYWNoZV9maWxlIiA+JjY7fQorLSAgZmkKKy1maQorLXJtIC1mIGNvbmZjYWNoZQorLQorLXRl c3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0kYWNfZGVmYXVsdF9wcmVmaXgKKy0jIExl dCBtYWtlIGV4cGFuZCBleGVjX3ByZWZpeC4KKy10ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05F ICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCistCistREVGUz0tREhBVkVfQ09ORklHX0gKKy0K Ky1hY19saWJvYmpzPQorLWFjX2x0bGlib2Jqcz0KKy1VPQorLWZvciBhY19pIGluIDogJExJQk9C SlM7IGRvIHRlc3QgIngkYWNfaSIgPSB4OiAmJiBjb250aW51ZQorLSAgIyAxLiBSZW1vdmUgdGhl IGV4dGVuc2lvbiwgYW5kICRVIGlmIGFscmVhZHkgaW5zdGFsbGVkLgorLSAgYWNfc2NyaXB0PSdz L1wkVVwuLy4vO3MvXC5vJC8vO3MvXC5vYmokLy8nCistICBhY19pPWBwcmludGYgIiVzXG4iICIk YWNfaSIgfCBzZWQgIiRhY19zY3JpcHQiYAorLSAgIyAyLiBQcmVwZW5kIExJQk9CSkRJUi4gIFdo ZW4gdXNlZCB3aXRoIGF1dG9tYWtlPj0xLjEwIExJQk9CSkRJUgorLSAgIyAgICB3aWxsIGJlIHNl dCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIExJQk9CSlMgb2JqZWN0cyBhcmUgYnVpbHQuCistICBh c19mbl9hcHBlbmQgYWNfbGlib2JqcyAiIFwke0xJQk9CSkRJUn0kYWNfaVwkVS4kYWNfb2JqZXh0 IgorLSAgYXNfZm5fYXBwZW5kIGFjX2x0bGlib2JqcyAiIFwke0xJQk9CSkRJUn0kYWNfaSInJFUu bG8nCistZG9uZQorLUxJQk9CSlM9JGFjX2xpYm9ianMKKy0KKy1MVExJQk9CSlM9JGFjX2x0bGli b2JqcworLQorLQorLSMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS15ZWFyMjAzOCB3YXMgZ2l2ZW4u CistaWYgdGVzdCAke2VuYWJsZV95ZWFyMjAzOCt5fQorLXRoZW4gOgorLSAgZW5hYmxldmFsPSRl bmFibGVfeWVhcjIwMzg7CistZmkKKy0KKy0KKy0KKy06ICIke0NPTkZJR19TVEFUVVM9Li9jb25m aWcuc3RhdHVzfSIKKy1hY193cml0ZV9mYWlsPTAKKy1hY19jbGVhbl9maWxlc19zYXZlPSRhY19j bGVhbl9maWxlcworLWFjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgJENPTkZJR19TVEFU VVMiCisteyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNyZWF0 aW5nICRDT05GSUdfU1RBVFVTIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IGNyZWF0aW5n ICRDT05GSUdfU1RBVFVTIiA+JjY7fQorLWFzX3dyaXRlX2ZhaWw9MAorLWNhdCA+JENPTkZJR19T VEFUVVMgPDxfQVNFT0YgfHwgYXNfd3JpdGVfZmFpbD0xCistIyEgJFNIRUxMCistIyBHZW5lcmF0 ZWQgYnkgJGFzX21lLgorLSMgUnVuIHRoaXMgZmlsZSB0byByZWNyZWF0ZSB0aGUgY3VycmVudCBj b25maWd1cmF0aW9uLgorLSMgQ29tcGlsZXIgb3V0cHV0IHByb2R1Y2VkIGJ5IGNvbmZpZ3VyZSwg dXNlZnVsIGZvciBkZWJ1Z2dpbmcKKy0jIGNvbmZpZ3VyZSwgaXMgaW4gY29uZmlnLmxvZyBpZiBp dCBleGlzdHMuCistCistZGVidWc9ZmFsc2UKKy1hY19jc19yZWNoZWNrPWZhbHNlCistYWNfY3Nf c2lsZW50PWZhbHNlCistCistU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0KKy1leHBvcnQg U0hFTEwKKy1fQVNFT0YKKy1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQVNFT0YgfHwgYXNfd3Jp dGVfZmFpbD0xCistIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKy0jIyBNNHNoIEluaXRpYWxp emF0aW9uLiAjIworLSMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCistCistIyBCZSBtb3JlIEJv dXJuZSBjb21wYXRpYmxlCistRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBz aAorLWlmIHRlc3QgJHtaU0hfVkVSU0lPTit5fSAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAy PiYxCistdGhlbiA6CistICBlbXVsYXRlIHNoCistICBOVUxMQ01EPToKKy0gICMgUHJlLTQuMiB2 ZXJzaW9ucyBvZiBac2ggZG8gd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaAorLSAg IyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4KKy0gIGFs aWFzIC1nICckezErIiRAIn0nPSciJEAiJworLSAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKKy1lbHNl IGNhc2UgZSBpbiAjKAorLSAgZSkgY2FzZSBgKHNldCAtbykgMj4vZGV2L251bGxgIGluICMoCist ICAqcG9zaXgqKSA6CistICAgIHNldCAtbyBwb3NpeCA7OyAjKAorLSAgKikgOgorLSAgICAgOzsK Ky1lc2FjIDs7CistZXNhYworLWZpCistCistCistCistIyBSZXNldCB2YXJpYWJsZXMgdGhhdCBt YXkgaGF2ZSBpbmhlcml0ZWQgdHJvdWJsZXNvbWUgdmFsdWVzIGZyb20KKy0jIHRoZSBlbnZpcm9u bWVudC4KKy0KKy0jIElGUyBuZWVkcyB0byBiZSBzZXQsIHRvIHNwYWNlLCB0YWIsIGFuZCBuZXds aW5lLCBpbiBwcmVjaXNlbHkgdGhhdCBvcmRlci4KKy0jIChJZiBfQVNfUEFUSF9XQUxLIHdlcmUg Y2FsbGVkIHdpdGggSUZTIHVuc2V0LCBpdCB3b3VsZCBoYXZlIHRoZQorLSMgc2lkZSBlZmZlY3Qg b2Ygc2V0dGluZyBJRlMgdG8gZW1wdHksIHRodXMgZGlzYWJsaW5nIHdvcmQgc3BsaXR0aW5nLikK Ky0jIFF1b3RpbmcgaXMgdG8gcHJldmVudCBlZGl0b3JzIGZyb20gY29tcGxhaW5pbmcgYWJvdXQg c3BhY2UtdGFiLgorLWFzX25sPScKKy0nCistZXhwb3J0IGFzX25sCistSUZTPSIgIiIJJGFzX25s IgorLQorLVBTMT0nJCAnCistUFMyPSc+ICcKKy1QUzQ9JysgJworLQorLSMgRW5zdXJlIHByZWRp Y3RhYmxlIGJlaGF2aW9yIGZyb20gdXRpbGl0aWVzIHdpdGggbG9jYWxlLWRlcGVuZGVudCBvdXRw dXQuCistTENfQUxMPUMKKy1leHBvcnQgTENfQUxMCistTEFOR1VBR0U9QworLWV4cG9ydCBMQU5H VUFHRQorLQorLSMgV2UgY2Fubm90IHlldCByZWx5IG9uICJ1bnNldCIgdG8gd29yaywgYnV0IHdl IG5lZWQgdGhlc2UgdmFyaWFibGVzCistIyB0byBiZSB1bnNldC0tbm90IGp1c3Qgc2V0IHRvIGFu IGVtcHR5IG9yIGhhcm1sZXNzIHZhbHVlLS1ub3csIHRvCistIyBhdm9pZCBidWdzIGluIG9sZCBz aGVsbHMgKGUuZy4gcHJlLTMuMCBVV0lOIGtzaCkuICBUaGlzIGNvbnN0cnVjdAorLSMgYWxzbyBh dm9pZHMga25vd24gcHJvYmxlbXMgcmVsYXRlZCB0byAidW5zZXQiIGFuZCBzdWJzaGVsbCBzeW50 YXgKKy0jIGluIG90aGVyIG9sZCBzaGVsbHMgKGUuZy4gYmFzaCAyLjAxIGFuZCBwZGtzaCA1LjIu MTQpLgorLWZvciBhc192YXIgaW4gQkFTSF9FTlYgRU5WIE1BSUwgTUFJTFBBVEggQ0RQQVRICist ZG8gZXZhbCB0ZXN0IFwkeyRhc192YXIreX0gXAorLSAgJiYgKCAodW5zZXQgJGFzX3ZhcikgfHwg ZXhpdCAxKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgJGFzX3ZhciB8fCA6CistZG9uZQorLQor LSMgRW5zdXJlIHRoYXQgZmRzIDAsIDEsIGFuZCAyIGFyZSBvcGVuLgorLWlmIChleGVjIDM+JjAp IDI+L2Rldi9udWxsOyB0aGVuIDo7IGVsc2UgZXhlYyAwPC9kZXYvbnVsbDsgZmkKKy1pZiAoZXhl YyAzPiYxKSAyPi9kZXYvbnVsbDsgdGhlbiA6OyBlbHNlIGV4ZWMgMT4vZGV2L251bGw7IGZpCist aWYgKGV4ZWMgMz4mMikgICAgICAgICAgICA7IHRoZW4gOjsgZWxzZSBleGVjIDI+L2Rldi9udWxs OyBmaQorLQorLSMgVGhlIHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgorLWlmICR7UEFUSF9TRVBBUkFU T1IrZmFsc2V9IDo7IHRoZW4KKy0gIFBBVEhfU0VQQVJBVE9SPToKKy0gIChQQVRIPScvYmluOy9i aW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxICYmIHsKKy0gICAgKFBB VEg9Jy9iaW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgfHwK Ky0gICAgICBQQVRIX1NFUEFSQVRPUj0nOycKKy0gIH0KKy1maQorLQorLQorLSMgRmluZCB3aG8g d2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIGRpcmVjdG9yeSBzZXBh cmF0b3IuCistYXNfbXlzZWxmPQorLWNhc2UgJDAgaW4gIygoCistICAqW1xcL10qICkgYXNfbXlz ZWxmPSQwIDs7CistICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCist Zm9yIGFzX2RpciBpbiAkUEFUSAorLWRvCistICBJRlM9JGFzX3NhdmVfSUZTCistICBjYXNlICRh c19kaXIgaW4gIygoKAorLSAgICAnJykgYXNfZGlyPS4vIDs7CistICAgICovKSA7OworLSAgICAq KSBhc19kaXI9JGFzX2Rpci8gOzsKKy0gIGVzYWMKKy0gICAgdGVzdCAtciAiJGFzX2RpciQwIiAm JiBhc19teXNlbGY9JGFzX2RpciQwICYmIGJyZWFrCistICBkb25lCistSUZTPSRhc19zYXZlX0lG UworLQorLSAgICAgOzsKKy1lc2FjCistIyBXZSBkaWQgbm90IGZpbmQgb3Vyc2VsdmVzLCBtb3N0 IHByb2JhYmx5IHdlIHdlcmUgcnVuIGFzICdzaCBDT01NQU5EJworLSMgaW4gd2hpY2ggY2FzZSB3 ZSBhcmUgbm90IHRvIGJlIGZvdW5kIGluIHRoZSBwYXRoLgorLWlmIHRlc3QgIngkYXNfbXlzZWxm IiA9IHg7IHRoZW4KKy0gIGFzX215c2VsZj0kMAorLWZpCistaWYgdGVzdCAhIC1mICIkYXNfbXlz ZWxmIjsgdGhlbgorLSAgcHJpbnRmICIlc1xuIiAiJGFzX215c2VsZjogZXJyb3I6IGNhbm5vdCBm aW5kIG15c2VsZjsgcmVydW4gd2l0aCBhbiBhYnNvbHV0ZSBmaWxlIG5hbWUiID4mMgorLSAgZXhp dCAxCistZmkKKy0KKy0KKy0KKy0jIGFzX2ZuX2Vycm9yIFNUQVRVUyBFUlJPUiBbTElORU5PIExP R19GRF0KKy0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0jIE91 dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9SIiB0byBzdGRlcnIuIElmIExJTkVOTyBh bmQgTE9HX0ZEIGFyZQorLSMgcHJvdmlkZWQsIGFsc28gb3V0cHV0IHRoZSBlcnJvciB0byBMT0df RkQsIHJlZmVyZW5jaW5nIExJTkVOTy4gVGhlbiBleGl0IHRoZQorLSMgc2NyaXB0IHdpdGggU1RB VFVTLCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuCistYXNfZm5fZXJyb3IgKCkKKy17CistICBhc19z dGF0dXM9JDE7IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQorLSAgaWYgdGVz dCAiJDQiOyB0aGVuCistICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDMifSBhc19saW5lbm9f c3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKy0gICAgcHJpbnRmICIlc1xu IiAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDIiID4mJDQKKy0gIGZpCist ICBwcmludGYgIiVzXG4iICIkYXNfbWU6IGVycm9yOiAkMiIgPiYyCistICBhc19mbl9leGl0ICRh c19zdGF0dXMKKy19ICMgYXNfZm5fZXJyb3IKKy0KKy0KKy0jIGFzX2ZuX3NldF9zdGF0dXMgU1RB VFVTCistIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLSMgU2V0ICQ/IHRvIFNUQVRVUywgd2l0 aG91dCBmb3JraW5nLgorLWFzX2ZuX3NldF9zdGF0dXMgKCkKKy17CistICByZXR1cm4gJDEKKy19 ICMgYXNfZm5fc2V0X3N0YXR1cworLQorLSMgYXNfZm5fZXhpdCBTVEFUVVMKKy0jIC0tLS0tLS0t LS0tLS0tLS0tCistIyBFeGl0IHRoZSBzaGVsbCB3aXRoIFNUQVRVUywgZXZlbiBpbiBhICJ0cmFw IDAiIG9yICJzZXQgLWUiIGNvbnRleHQuCistYXNfZm5fZXhpdCAoKQorLXsKKy0gIHNldCArZQor LSAgYXNfZm5fc2V0X3N0YXR1cyAkMQorLSAgZXhpdCAkMQorLX0gIyBhc19mbl9leGl0CistCist IyBhc19mbl91bnNldCBWQVIKKy0jIC0tLS0tLS0tLS0tLS0tLQorLSMgUG9ydGFibHkgdW5zZXQg VkFSLgorLWFzX2ZuX3Vuc2V0ICgpCisteworLSAgeyBldmFsICQxPTsgdW5zZXQgJDE7fQorLX0K Ky1hc191bnNldD1hc19mbl91bnNldAorLQorLSMgYXNfZm5fYXBwZW5kIFZBUiBWQUxVRQorLSMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLSMgQXBwZW5kIHRoZSB0ZXh0IGluIFZBTFVFIHRvIHRo ZSBlbmQgb2YgdGhlIGRlZmluaXRpb24gY29udGFpbmVkIGluIFZBUi4gVGFrZQorLSMgYWR2YW50 YWdlIG9mIGFueSBzaGVsbCBvcHRpbWl6YXRpb25zIHRoYXQgYWxsb3cgYW1vcnRpemVkIGxpbmVh ciBncm93dGggb3ZlcgorLSMgcmVwZWF0ZWQgYXBwZW5kcywgaW5zdGVhZCBvZiB0aGUgdHlwaWNh bCBxdWFkcmF0aWMgZ3Jvd3RoIHByZXNlbnQgaW4gbmFpdmUKKy0jIGltcGxlbWVudGF0aW9ucy4K Ky1pZiAoZXZhbCAiYXNfdmFyPTE7IGFzX3Zhcis9MjsgdGVzdCB4XCRhc192YXIgPSB4MTIiKSAy Pi9kZXYvbnVsbAorLXRoZW4gOgorLSAgZXZhbCAnYXNfZm5fYXBwZW5kICgpCistICB7CistICAg IGV2YWwgJDErPVwkMgorLSAgfScKKy1lbHNlIGNhc2UgZSBpbiAjKAorLSAgZSkgYXNfZm5fYXBw ZW5kICgpCistICB7CistICAgIGV2YWwgJDE9XCQkMVwkMgorLSAgfSA7OworLWVzYWMKKy1maSAj IGFzX2ZuX2FwcGVuZAorLQorLSMgYXNfZm5fYXJpdGggQVJHLi4uCistIyAtLS0tLS0tLS0tLS0t LS0tLS0KKy0jIFBlcmZvcm0gYXJpdGhtZXRpYyBldmFsdWF0aW9uIG9uIHRoZSBBUkdzLCBhbmQg c3RvcmUgdGhlIHJlc3VsdCBpbiB0aGUKKy0jIGdsb2JhbCAkYXNfdmFsLiBUYWtlIGFkdmFudGFn ZSBvZiBzaGVsbHMgdGhhdCBjYW4gYXZvaWQgZm9ya3MuIFRoZSBhcmd1bWVudHMKKy0jIG11c3Qg YmUgcG9ydGFibGUgYWNyb3NzICQoKCkpIGFuZCBleHByLgorLWlmIChldmFsICJ0ZXN0IFwkKCgg MSArIDEgKSkgPSAyIikgMj4vZGV2L251bGwKKy10aGVuIDoKKy0gIGV2YWwgJ2FzX2ZuX2FyaXRo ICgpCistICB7CistICAgIGFzX3ZhbD0kKCggJCogKSkKKy0gIH0nCistZWxzZSBjYXNlIGUgaW4g IygKKy0gIGUpIGFzX2ZuX2FyaXRoICgpCistICB7CistICAgIGFzX3ZhbD1gZXhwciAiJEAiIHx8 IHRlc3QgJD8gLWVxIDFgCistICB9IDs7CistZXNhYworLWZpICMgYXNfZm5fYXJpdGgKKy0KKy0K Ky1pZiBleHByIGEgOiAnXChhXCknID4vZGV2L251bGwgMj4mMSAmJgorLSAgIHRlc3QgIlhgZXhw ciAwMDAwMSA6ICcuKlwoLi4uXCknYCIgPSBYMDAxOyB0aGVuCistICBhc19leHByPWV4cHIKKy1l bHNlCistICBhc19leHByPWZhbHNlCistZmkKKy0KKy1pZiAoYmFzZW5hbWUgLS0gLykgPi9kZXYv bnVsbCAyPiYxICYmIHRlc3QgIlhgYmFzZW5hbWUgLS0gLyAyPiYxYCIgPSAiWC8iOyB0aGVuCist ICBhc19iYXNlbmFtZT1iYXNlbmFtZQorLWVsc2UKKy0gIGFzX2Jhc2VuYW1lPWZhbHNlCistZmkK Ky0KKy1pZiAoYXNfZGlyPWBkaXJuYW1lIC0tIC9gICYmIHRlc3QgIlgkYXNfZGlyIiA9IFgvKSA+ L2Rldi9udWxsIDI+JjE7IHRoZW4KKy0gIGFzX2Rpcm5hbWU9ZGlybmFtZQorLWVsc2UKKy0gIGFz X2Rpcm5hbWU9ZmFsc2UKKy1maQorLQorLWFzX21lPWAkYXNfYmFzZW5hbWUgLS0gIiQwIiB8fAor LSRhc19leHByIFgvIiQwIiA6ICcuKi9cKFteL11bXi9dKlwpLyokJyBcfCBcCistCSBYIiQwIiA6 ICdYXCgvL1wpJCcgXHwgXAorLQkgWCIkMCIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8 CistcHJpbnRmICIlc1xuIiBYLyIkMCIgfAorLSAgICBzZWQgJy9eLipcL1woW14vXVteL10qXClc LyokL3sKKy0JICAgIHMvL1wxLworLQkgICAgcQorLQkgIH0KKy0JICAvXlhcL1woXC9cL1wpJC97 CistCSAgICBzLy9cMS8KKy0JICAgIHEKKy0JICB9CistCSAgL15YXC9cKFwvXCkuKi97CistCSAg ICBzLy9cMS8KKy0JICAgIHEKKy0JICB9CistCSAgcy8uKi8uLzsgcSdgCistCistIyBBdm9pZCBk ZXBlbmRpbmcgdXBvbiBDaGFyYWN0ZXIgUmFuZ2VzLgorLWFzX2NyX2xldHRlcnM9J2FiY2RlZmdo aWprbG1ub3BxcnN0dXZ3eHl6JworLWFzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNU VVZXWFlaJworLWFzX2NyX0xldHRlcnM9JGFzX2NyX2xldHRlcnMkYXNfY3JfTEVUVEVSUworLWFz X2NyX2RpZ2l0cz0nMDEyMzQ1Njc4OScKKy1hc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19j cl9kaWdpdHMKKy0KKy0KKy0jIERldGVybWluZSB3aGV0aGVyIGl0J3MgcG9zc2libGUgdG8gbWFr ZSAnZWNobycgcHJpbnQgd2l0aG91dCBhIG5ld2xpbmUuCistIyBUaGVzZSB2YXJpYWJsZXMgYXJl IG5vIGxvbmdlciB1c2VkIGRpcmVjdGx5IGJ5IEF1dG9jb25mLCBidXQgYXJlIEFDX1NVQlNUZWQK Ky0jIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgTWFrZWZpbGVzLgorLUVDSE9fQz0g RUNIT19OPSBFQ0hPX1Q9CistY2FzZSBgZWNobyAtbiB4YCBpbiAjKCgoKCgKKy0tbiopCistICBj YXNlIGBlY2hvICd4eVxjJ2AgaW4KKy0gICpjKikgRUNIT19UPScJJzs7CSMgRUNIT19UIGlzIHNp bmdsZSB0YWIgY2hhcmFjdGVyLgorLSAgeHkpICBFQ0hPX0M9J1xjJzs7CistICAqKSAgIGVjaG8g YGVjaG8ga3NoODggYnVnIG9uIEFJWCA2LjFgID4gL2Rldi9udWxsCistICAgICAgIEVDSE9fVD0n CSc7OworLSAgZXNhYzs7CistKikKKy0gIEVDSE9fTj0nLW4nOzsKKy1lc2FjCistCistIyBGb3Ig YmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCB0aGlyZC1wYXJ0eSBtYWNyb3MsIHdlIHBy b3ZpZGUKKy0jIHRoZSBzaGVsbCB2YXJpYWJsZXMgJGFzX2VjaG8gYW5kICRhc19lY2hvX24uICBO ZXcgY29kZSBzaG91bGQgdXNlCistIyBBU19FQ0hPKFsibWVzc2FnZSJdKSBhbmQgQVNfRUNIT19O KFsibWVzc2FnZSJdKSwgcmVzcGVjdGl2ZWx5LgorLWFzX2VjaG89J3ByaW50ZiAlc1xuJworLWFz X2VjaG9fbj0ncHJpbnRmICVzJworLQorLXJtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5m aWxlCistaWYgdGVzdCAtZCBjb25mJCQuZGlyOyB0aGVuCistICBybSAtZiBjb25mJCQuZGlyL2Nv bmYkJC5maWxlCistZWxzZQorLSAgcm0gLWYgY29uZiQkLmRpcgorLSAgbWtkaXIgY29uZiQkLmRp ciAyPi9kZXYvbnVsbAorLWZpCistaWYgKGVjaG8gPmNvbmYkJC5maWxlKSAyPi9kZXYvbnVsbDsg dGhlbgorLSAgaWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCist ICAgIGFzX2xuX3M9J2xuIC1zJworLSAgICAjIC4uLiBidXQgdGhlcmUgYXJlIHR3byBnb3RjaGFz OgorLSAgICAjIDEpIE9uIE1TWVMsIGJvdGggJ2xuIC1zIGZpbGUgZGlyJyBhbmQgJ2xuIGZpbGUg ZGlyJyBmYWlsLgorLSAgICAjIDIpIERKR1BQIDwgMi4wNCBoYXMgbm8gc3ltbGlua3M7ICdsbiAt cycgY3JlYXRlcyBhIHdyYXBwZXIgZXhlY3V0YWJsZS4KKy0gICAgIyBJbiBib3RoIGNhc2VzLCB3 ZSBoYXZlIHRvIGRlZmF1bHQgdG8gJ2NwIC1wUicuCistICAgIGxuIC1zIGNvbmYkJC5maWxlIGNv bmYkJC5kaXIgMj4vZGV2L251bGwgJiYgdGVzdCAhIC1mIGNvbmYkJC5leGUgfHwKKy0gICAgICBh c19sbl9zPSdjcCAtcFInCistICBlbGlmIGxuIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVs bDsgdGhlbgorLSAgICBhc19sbl9zPWxuCistICBlbHNlCistICAgIGFzX2xuX3M9J2NwIC1wUicK Ky0gIGZpCistZWxzZQorLSAgYXNfbG5fcz0nY3AgLXBSJworLWZpCistcm0gLWYgY29uZiQkIGNv bmYkJC5leGUgY29uZiQkLmRpci9jb25mJCQuZmlsZSBjb25mJCQuZmlsZQorLXJtZGlyIGNvbmYk JC5kaXIgMj4vZGV2L251bGwKKy0KKy0KKy0jIGFzX2ZuX21rZGlyX3AKKy0jIC0tLS0tLS0tLS0t LS0KKy0jIENyZWF0ZSAiJGFzX2RpciIgYXMgYSBkaXJlY3RvcnksIGluY2x1ZGluZyBwYXJlbnRz IGlmIG5lY2Vzc2FyeS4KKy1hc19mbl9ta2Rpcl9wICgpCisteworLQorLSAgY2FzZSAkYXNfZGly IGluICMoCistICAtKikgYXNfZGlyPS4vJGFzX2Rpcjs7CistICBlc2FjCistICB0ZXN0IC1kICIk YXNfZGlyIiB8fCBldmFsICRhc19ta2Rpcl9wIHx8IHsKKy0gICAgYXNfZGlycz0KKy0gICAgd2hp bGUgOjsgZG8KKy0gICAgICBjYXNlICRhc19kaXIgaW4gIygKKy0gICAgICAqXCcqKSBhc19xZGly PWBwcmludGYgIiVzXG4iICIkYXNfZGlyIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7ICMn KAorLSAgICAgICopIGFzX3FkaXI9JGFzX2Rpcjs7CistICAgICAgZXNhYworLSAgICAgIGFzX2Rp cnM9IickYXNfcWRpcicgJGFzX2RpcnMiCistICAgICAgYXNfZGlyPWAkYXNfZGlybmFtZSAtLSAi JGFzX2RpciIgfHwKKy0kYXNfZXhwciBYIiRhc19kaXIiIDogJ1hcKC4qW14vXVwpLy8qW14vXVte L10qLyokJyBcfCBcCistCSBYIiRhc19kaXIiIDogJ1hcKC8vXClbXi9dJyBcfCBcCistCSBYIiRh c19kaXIiIDogJ1hcKC8vXCkkJyBcfCBcCistCSBYIiRhc19kaXIiIDogJ1hcKC9cKScgXHwgLiAy Pi9kZXYvbnVsbCB8fAorLXByaW50ZiAiJXNcbiIgWCIkYXNfZGlyIiB8CistICAgIHNlZCAnL15Y XCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97CistCSAgICBzLy9cMS8KKy0JICAgIHEKKy0J ICB9CistCSAgL15YXChcL1wvXClbXi9dLioveworLQkgICAgcy8vXDEvCistCSAgICBxCistCSAg fQorLQkgIC9eWFwoXC9cL1wpJC97CistCSAgICBzLy9cMS8KKy0JICAgIHEKKy0JICB9CistCSAg L15YXChcL1wpLioveworLQkgICAgcy8vXDEvCistCSAgICBxCistCSAgfQorLQkgIHMvLiovLi87 IHEnYAorLSAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrCistICAgIGRvbmUKKy0gICAg dGVzdCAteiAiJGFzX2RpcnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIgorLSAgfSB8fCB0ZXN0 IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBkaXJlY3Rvcnkg JGFzX2RpciIKKy0KKy0KKy19ICMgYXNfZm5fbWtkaXJfcAorLWlmIG1rZGlyIC1wIC4gMj4vZGV2 L251bGw7IHRoZW4KKy0gIGFzX21rZGlyX3A9J21rZGlyIC1wICIkYXNfZGlyIicKKy1lbHNlCist ICB0ZXN0IC1kIC4vLXAgJiYgcm1kaXIgLi8tcAorLSAgYXNfbWtkaXJfcD1mYWxzZQorLWZpCist CistCistIyBhc19mbl9leGVjdXRhYmxlX3AgRklMRQorLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0jIFRlc3QgaWYgRklMRSBpcyBhbiBleGVjdXRhYmxlIHJlZ3VsYXIgZmlsZS4KKy1hc19m bl9leGVjdXRhYmxlX3AgKCkKKy17CistICB0ZXN0IC1mICIkMSIgJiYgdGVzdCAteCAiJDEiCist fSAjIGFzX2ZuX2V4ZWN1dGFibGVfcAorLWFzX3Rlc3RfeD0ndGVzdCAteCcKKy1hc19leGVjdXRh YmxlX3A9YXNfZm5fZXhlY3V0YWJsZV9wCistCistIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBz dHJpbmcgb250byBhIHZhbGlkIENQUCBuYW1lLgorLWFzX3NlZF9jcHA9InklKiRhc19jcl9sZXR0 ZXJzJVAkYXNfY3JfTEVUVEVSUyU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyIKKy1hc190cl9jcHA9 ImV2YWwgc2VkICckYXNfc2VkX2NwcCciICMgZGVwcmVjYXRlZAorLQorLSMgU2VkIGV4cHJlc3Np b24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgorLWFzX3NlZF9z aD0ieSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyIKKy1hc190cl9zaD0iZXZhbCBzZWQg JyRhc19zZWRfc2gnIiAjIGRlcHJlY2F0ZWQKKy0KKy0KKy1leGVjIDY+JjEKKy0jIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworLSMjIE1haW4gYm9keSBvZiAkQ09ORklH X1NUQVRVUyBzY3JpcHQuICMjCistIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gIyMKKy1fQVNFT0YKKy10ZXN0ICRhc193cml0ZV9mYWlsID0gMCAmJiBjaG1vZCAreCAkQ09O RklHX1NUQVRVUyB8fCBhY193cml0ZV9mYWlsPTEKKy0KKy1jYXQgPj4kQ09ORklHX1NUQVRVUyA8 PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCistIyBTYXZlIHRoZSBsb2cgbWVzc2FnZSwgdG8g a2VlcCAkMCBhbmQgc28gb24gbWVhbmluZ2Z1bCwgYW5kIHRvCistIyByZXBvcnQgYWN0dWFsIGlu cHV0IHZhbHVlcyBvZiBDT05GSUdfRklMRVMgZXRjLiBpbnN0ZWFkIG9mIHRoZWlyCistIyB2YWx1 ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KKy1hY19sb2c9IgorLVRoaXMgZmlsZSB3YXMgZXh0 ZW5kZWQgYnkgYmFzaCAkYXNfbWUgNS4zLXJjMiwgd2hpY2ggd2FzCistZ2VuZXJhdGVkIGJ5IEdO VSBBdXRvY29uZiAyLjcyLiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCistCistICBDT05G SUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCistICBDT05GSUdfSEVBREVSUyAgPSAkQ09ORklH X0hFQURFUlMKKy0gIENPTkZJR19MSU5LUyAgICA9ICRDT05GSUdfTElOS1MKKy0gIENPTkZJR19D T01NQU5EUyA9ICRDT05GSUdfQ09NTUFORFMKKy0gICQgJDAgJEAKKy0KKy1vbiBgKGhvc3RuYW1l IHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAKKy0iCistCistX0FDRU9GCistCist Y2FzZSAkYWNfY29uZmlnX2ZpbGVzIGluICoiCistIiopIHNldCB4ICRhY19jb25maWdfZmlsZXM7 IHNoaWZ0OyBhY19jb25maWdfZmlsZXM9JCo7OworLWVzYWMKKy0KKy1jYXNlICRhY19jb25maWdf aGVhZGVycyBpbiAqIgorLSIqKSBzZXQgeCAkYWNfY29uZmlnX2hlYWRlcnM7IHNoaWZ0OyBhY19j b25maWdfaGVhZGVycz0kKjs7CistZXNhYworLQorLQorLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8 X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorLSMgRmlsZXMgdGhhdCBjb25maWcuc3RhdHVzIHdh cyBtYWRlIGZvci4KKy1jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMiCistY29uZmlnX2hl YWRlcnM9IiRhY19jb25maWdfaGVhZGVycyIKKy1jb25maWdfY29tbWFuZHM9IiRhY19jb25maWdf Y29tbWFuZHMiCistCistX0FDRU9GCistCistY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9G IHx8IGFjX3dyaXRlX2ZhaWw9MQorLWFjX2NzX3VzYWdlPSJcCistJyRhc19tZScgaW5zdGFudGlh dGVzIGZpbGVzIGFuZCBvdGhlciBjb25maWd1cmF0aW9uIGFjdGlvbnMKKy1mcm9tIHRlbXBsYXRl cyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gIFVubGVzcyB0aGUgZmls ZXMKKy1hbmQgYWN0aW9ucyBhcmUgc3BlY2lmaWVkIGFzIFRBR3MsIGFsbCBhcmUgaW5zdGFudGlh dGVkIGJ5IGRlZmF1bHQuCistCistVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtUQUddLi4uCistCist ICAtaCwgLS1oZWxwICAgICAgIHByaW50IHRoaXMgaGVscCwgdGhlbiBleGl0CistICAtViwgLS12 ZXJzaW9uICAgIHByaW50IHZlcnNpb24gbnVtYmVyIGFuZCBjb25maWd1cmF0aW9uIHNldHRpbmdz LCB0aGVuIGV4aXQKKy0gICAgICAtLWNvbmZpZyAgICAgcHJpbnQgY29uZmlndXJhdGlvbiwgdGhl biBleGl0CistICAtcSwgLS1xdWlldCwgLS1zaWxlbnQKKy0gICAgICAgICAgICAgICAgICAgZG8g bm90IHByaW50IHByb2dyZXNzIG1lc3NhZ2VzCistICAtZCwgLS1kZWJ1ZyAgICAgIGRvbid0IHJl bW92ZSB0ZW1wb3JhcnkgZmlsZXMKKy0gICAgICAtLXJlY2hlY2sgICAgdXBkYXRlICRhc19tZSBi eSByZWNvbmZpZ3VyaW5nIGluIHRoZSBzYW1lIGNvbmRpdGlvbnMKKy0gICAgICAtLWZpbGU9RklM RVs6VEVNUExBVEVdCistICAgICAgICAgICAgICAgICAgIGluc3RhbnRpYXRlIHRoZSBjb25maWd1 cmF0aW9uIGZpbGUgRklMRQorLSAgICAgIC0taGVhZGVyPUZJTEVbOlRFTVBMQVRFXQorLSAgICAg ICAgICAgICAgICAgICBpbnN0YW50aWF0ZSB0aGUgY29uZmlndXJhdGlvbiBoZWFkZXIgRklMRQor LQorLUNvbmZpZ3VyYXRpb24gZmlsZXM6CistJGNvbmZpZ19maWxlcworLQorLUNvbmZpZ3VyYXRp b24gaGVhZGVyczoKKy0kY29uZmlnX2hlYWRlcnMKKy0KKy1Db25maWd1cmF0aW9uIGNvbW1hbmRz OgorLSRjb25maWdfY29tbWFuZHMKKy0KKy1SZXBvcnQgYnVncyB0byA8YnVnLWJhc2hAZ251Lm9y Zz4uIgorLQorLV9BQ0VPRgorLWFjX2NzX2NvbmZpZz1gcHJpbnRmICIlc1xuIiAiJGFjX2NvbmZp Z3VyZV9hcmdzIiB8IHNlZCAiJGFjX3NhZmVfdW5xdW90ZSJgCistYWNfY3NfY29uZmlnX2VzY2Fw ZWQ9YHByaW50ZiAiJXNcbiIgIiRhY19jc19jb25maWciIHwgc2VkICJzL14gLy87IHMvJy8nXFxc XFxcXFwnJy9nImAKKy1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9m YWlsPTEKKy1hY19jc19jb25maWc9JyRhY19jc19jb25maWdfZXNjYXBlZCcKKy1hY19jc192ZXJz aW9uPSJcXAorLWJhc2ggY29uZmlnLnN0YXR1cyA1LjMtcmMyCistY29uZmlndXJlZCBieSAkMCwg Z2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjcyLAorLSAgd2l0aCBvcHRpb25zIFxcIlwkYWNf Y3NfY29uZmlnXFwiCistCistQ29weXJpZ2h0IChDKSAyMDIzIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorLVRoaXMgY29uZmlnLnN0YXR1cyBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorLWdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9u IHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCistCistYWNfcHdkPSckYWNfcHdk JworLXNyY2Rpcj0nJHNyY2RpcicKKy1JTlNUQUxMPSckSU5TVEFMTCcKKy1NS0RJUl9QPSckTUtE SVJfUCcKKy10ZXN0IC1uICJcJEFXSyIgfHwgQVdLPWF3aworLV9BQ0VPRgorLQorLWNhdCA+PiRD T05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKKy0jIFRoZSBkZWZhdWx0 IGxpc3RzIGFwcGx5IGlmIHRoZSB1c2VyIGRvZXMgbm90IHNwZWNpZnkgYW55IGZpbGUuCistYWNf bmVlZF9kZWZhdWx0cz06Cistd2hpbGUgdGVzdCAkIyAhPSAwCistZG8KKy0gIGNhc2UgJDEgaW4K Ky0gIC0tKj0/KikKKy0gICAgYWNfb3B0aW9uPWBleHByICJYJDEiIDogJ1hcKFtePV0qXCk9J2AK Ky0gICAgYWNfb3B0YXJnPWBleHByICJYJDEiIDogJ1hbXj1dKj1cKC4qXCknYAorLSAgICBhY19z aGlmdD06CistICAgIDs7CistICAtLSo9KQorLSAgICBhY19vcHRpb249YGV4cHIgIlgkMSIgOiAn WFwoW149XSpcKT0nYAorLSAgICBhY19vcHRhcmc9CistICAgIGFjX3NoaWZ0PToKKy0gICAgOzsK Ky0gICopCistICAgIGFjX29wdGlvbj0kMQorLSAgICBhY19vcHRhcmc9JDIKKy0gICAgYWNfc2hp ZnQ9c2hpZnQKKy0gICAgOzsKKy0gIGVzYWMKKy0KKy0gIGNhc2UgJGFjX29wdGlvbiBpbgorLSAg IyBIYW5kbGluZyBvZiB0aGUgb3B0aW9ucy4KKy0gIC1yZWNoZWNrIHwgLS1yZWNoZWNrIHwgLS1y ZWNoZWMgfCAtLXJlY2hlIHwgLS1yZWNoIHwgLS1yZWMgfCAtLXJlIHwgLS1yKQorLSAgICBhY19j c19yZWNoZWNrPTogOzsKKy0gIC0tdmVyc2lvbiB8IC0tdmVyc2lvIHwgLS12ZXJzaSB8IC0tdmVy cyB8IC0tdmVyIHwgLS12ZSB8IC0tdiB8IC1WICkKKy0gICAgcHJpbnRmICIlc1xuIiAiJGFjX2Nz X3ZlcnNpb24iOyBleGl0IDs7CistICAtLWNvbmZpZyB8IC0tY29uZmkgfCAtLWNvbmYgfCAtLWNv biB8IC0tY28gfCAtLWMgKQorLSAgICBwcmludGYgIiVzXG4iICIkYWNfY3NfY29uZmlnIjsgZXhp dCA7OworLSAgLS1kZWJ1ZyB8IC0tZGVidSB8IC0tZGViIHwgLS1kZSB8IC0tZCB8IC1kICkKKy0g ICAgZGVidWc9OiA7OworLSAgLS1maWxlIHwgLS1maWwgfCAtLWZpIHwgLS1mICkKKy0gICAgJGFj X3NoaWZ0CistICAgIGNhc2UgJGFjX29wdGFyZyBpbgorLSAgICAqXCcqKSBhY19vcHRhcmc9YHBy aW50ZiAiJXNcbiIgIiRhY19vcHRhcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7Cist ICAgICcnKSBhc19mbl9lcnJvciAkPyAibWlzc2luZyBmaWxlIGFyZ3VtZW50IiA7OworLSAgICBl c2FjCistICAgIGFzX2ZuX2FwcGVuZCBDT05GSUdfRklMRVMgIiAnJGFjX29wdGFyZyciCistICAg IGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7OworLSAgLS1oZWFkZXIgfCAtLWhlYWRlIHwgLS1oZWFk IHwgLS1oZWEgKQorLSAgICAkYWNfc2hpZnQKKy0gICAgY2FzZSAkYWNfb3B0YXJnIGluCistICAg ICpcJyopIGFjX29wdGFyZz1gcHJpbnRmICIlc1xuIiAiJGFjX29wdGFyZyIgfCBzZWQgInMvJy8n XFxcXFxcXFwnJy9nImAgOzsKKy0gICAgZXNhYworLSAgICBhc19mbl9hcHBlbmQgQ09ORklHX0hF QURFUlMgIiAnJGFjX29wdGFyZyciCistICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2U7OworLSAg LS1oZSB8IC0taCkKKy0gICAgIyBDb25mbGljdCBiZXR3ZWVuIC0taGVscCBhbmQgLS1oZWFkZXIK Ky0gICAgYXNfZm5fZXJyb3IgJD8gImFtYmlndW91cyBvcHRpb246ICckMScKKy1UcnkgJyQwIC0t aGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIjs7CistICAtLWhlbHAgfCAtLWhlbCB8IC1oICkK Ky0gICAgcHJpbnRmICIlc1xuIiAiJGFjX2NzX3VzYWdlIjsgZXhpdCA7OworLSAgLXEgfCAtcXVp ZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwKKy0gIHwgLXNpbGVu dCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsIHwgLS1zaSB8IC0tcykKKy0g ICAgYWNfY3Nfc2lsZW50PTogOzsKKy0KKy0gICMgVGhpcyBpcyBhbiBlcnJvci4KKy0gIC0qKSBh c19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbjogJyQxJworLVRyeSAnJDAgLS1oZWxw JyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIDs7CistCistICAqKSBhc19mbl9hcHBlbmQgYWNfY29u ZmlnX3RhcmdldHMgIiAkMSIKKy0gICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2UgOzsKKy0KKy0g IGVzYWMKKy0gIHNoaWZ0CistZG9uZQorLQorLWFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzPQorLQor LWlmICRhY19jc19zaWxlbnQ7IHRoZW4KKy0gIGV4ZWMgNj4vZGV2L251bGwKKy0gIGFjX2NvbmZp Z3VyZV9leHRyYV9hcmdzPSIkYWNfY29uZmlndXJlX2V4dHJhX2FyZ3MgLS1zaWxlbnQiCistZmkK Ky0KKy1fQUNFT0YKKy1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9m YWlsPTEKKy1pZiBcJGFjX2NzX3JlY2hlY2s7IHRoZW4KKy0gIHNldCBYICRTSEVMTCAnJDAnICRh Y19jb25maWd1cmVfYXJncyBcJGFjX2NvbmZpZ3VyZV9leHRyYV9hcmdzIC0tbm8tY3JlYXRlIC0t bm8tcmVjdXJzaW9uCistICBzaGlmdAorLSAgXHByaW50ZiAiJXNcbiIgInJ1bm5pbmcgQ09ORklH X1NIRUxMPSRTSEVMTCBcJCoiID4mNgorLSAgQ09ORklHX1NIRUxMPSckU0hFTEwnCistICBleHBv cnQgQ09ORklHX1NIRUxMCistICBleGVjICJcJEAiCistZmkKKy0KKy1fQUNFT0YKKy1jYXQgPj4k Q09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCistZXhlYyA1Pj5jb25m aWcubG9nCisteworLSAgZWNobworLSAgc2VkICdoO3MvLi8tL2c7cy9eLi4uLyMjIC87cy8uLi4k LyAjIy87cDt4O3A7eCcgPDxfQVNCT1gKKy0jIyBSdW5uaW5nICRhc19tZS4gIyMKKy1fQVNCT1gK Ky0gIHByaW50ZiAiJXNcbiIgIiRhY19sb2ciCistfSA+JjUKKy0KKy1fQUNFT0YKKy1jYXQgPj4k Q09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKKy0jCistIyBJTklULUNP TU1BTkRTCistIworLSMgQ2FwdHVyZSB0aGUgdmFsdWUgb2Ygb2Jzb2xldGUgQUxMX0xJTkdVQVMg YmVjYXVzZSB3ZSBuZWVkIGl0IHRvIGNvbXB1dGUKKy0gICAgIyBQT0ZJTEVTLCBVUERBVEVQT0ZJ TEVTLCBEVU1NWVBPRklMRVMsIEdNT0ZJTEVTLCBDQVRBTE9HUy4KKy0gICAgT0JTT0xFVEVfQUxM X0xJTkdVQVM9IiRBTExfTElOR1VBUyIKKy0gICAgIyBDYXB0dXJlIHRoZSB2YWx1ZSBvZiBMSU5H VUFTIGJlY2F1c2Ugd2UgbmVlZCBpdCB0byBjb21wdXRlIENBVEFMT0dTLgorLSAgICBMSU5HVUFT PSIke0xJTkdVQVMtJVVOU0VUJX0iCistCistCistX0FDRU9GCistCistY2F0ID4+JENPTkZJR19T VEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorLQorLSMgSGFuZGxpbmcgb2YgYXJn dW1lbnRzLgorLWZvciBhY19jb25maWdfdGFyZ2V0IGluICRhY19jb25maWdfdGFyZ2V0cworLWRv CistICBjYXNlICRhY19jb25maWdfdGFyZ2V0IGluCistICAgICJjb25maWcuaCIpIENPTkZJR19I RUFERVJTPSIkQ09ORklHX0hFQURFUlMgY29uZmlnLmgiIDs7CistICAgICJidWlsZGNvbmYuaCIp IENPTkZJR19IRUFERVJTPSIkQ09ORklHX0hFQURFUlMgYnVpbGRjb25mLmgiIDs7CistICAgICJw by1kaXJlY3RvcmllcyIpIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBwby1kaXJl Y3RvcmllcyIgOzsKKy0gICAgIk1ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVT IE1ha2VmaWxlIiA7OworLSAgICAiYnVpbHRpbnMvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRD T05GSUdfRklMRVMgYnVpbHRpbnMvTWFrZWZpbGUiIDs7CistICAgICJsaWIvcmVhZGxpbmUvTWFr ZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgbGliL3JlYWRsaW5lL01ha2VmaWxl IiA7OworLSAgICAibGliL2dsb2IvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklM RVMgbGliL2dsb2IvTWFrZWZpbGUiIDs7CistICAgICJsaWIvaW50bC9NYWtlZmlsZSIpIENPTkZJ R19GSUxFUz0iJENPTkZJR19GSUxFUyBsaWIvaW50bC9NYWtlZmlsZSIgOzsKKy0gICAgImxpYi9t YWxsb2MvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgbGliL21hbGxvYy9N YWtlZmlsZSIgOzsKKy0gICAgImxpYi9zaC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJ R19GSUxFUyBsaWIvc2gvTWFrZWZpbGUiIDs7CistICAgICJsaWIvdGVybWNhcC9NYWtlZmlsZSIp IENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBsaWIvdGVybWNhcC9NYWtlZmlsZSIgOzsKKy0g ICAgImxpYi90aWxkZS9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBsaWIv dGlsZGUvTWFrZWZpbGUiIDs7CistICAgICJkb2MvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRD T05GSUdfRklMRVMgZG9jL01ha2VmaWxlIiA7OworLSAgICAic3VwcG9ydC9NYWtlZmlsZSIpIENP TkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzdXBwb3J0L01ha2VmaWxlIiA7OworLSAgICAicG8v TWFrZWZpbGUuaW4iKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgcG8vTWFrZWZpbGUuaW4i IDs7CistICAgICJleGFtcGxlcy9sb2FkYWJsZXMvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRD T05GSUdfRklMRVMgZXhhbXBsZXMvbG9hZGFibGVzL01ha2VmaWxlIiA7OworLSAgICAiZXhhbXBs ZXMvbG9hZGFibGVzL01ha2VmaWxlLmluYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBl eGFtcGxlcy9sb2FkYWJsZXMvTWFrZWZpbGUuaW5jIiA7OworLSAgICAiZXhhbXBsZXMvbG9hZGFi bGVzL01ha2VmaWxlLnNhbXBsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleGFtcGxl cy9sb2FkYWJsZXMvTWFrZWZpbGUuc2FtcGxlIiA7OworLSAgICAiZXhhbXBsZXMvbG9hZGFibGVz L3BlcmwvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZXhhbXBsZXMvbG9h ZGFibGVzL3BlcmwvTWFrZWZpbGUiIDs7CistICAgICJzdXBwb3J0L2Jhc2gucGMiKSBDT05GSUdf RklMRVM9IiRDT05GSUdfRklMRVMgc3VwcG9ydC9iYXNoLnBjIiA7OworLSAgICAic3VwcG9ydC9i YXNoYnVnLnNoIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHN1cHBvcnQvYmFzaGJ1Zy5z aCIgOzsKKy0gICAgInN0YW1wLWgiKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMg c3RhbXAtaCIgOzsKKy0KKy0gICopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGFyZ3VtZW50OiAn JGFjX2NvbmZpZ190YXJnZXQnIiAiJExJTkVOTyIgNTs7CistICBlc2FjCistZG9uZQorLQorLQor LSMgSWYgdGhlIHVzZXIgZGlkIG5vdCB1c2UgdGhlIGFyZ3VtZW50cyB0byBzcGVjaWZ5IHRoZSBp dGVtcyB0byBpbnN0YW50aWF0ZSwKKy0jIHRoZW4gdGhlIGVudnZhciBpbnRlcmZhY2UgaXMgdXNl ZC4gIFNldCBvbmx5IHRob3NlIHRoYXQgYXJlIG5vdC4KKy0jIFdlIHVzZSB0aGUgbG9uZyBmb3Jt IGZvciB0aGUgZGVmYXVsdCBhc3NpZ25tZW50IGJlY2F1c2Ugb2YgYW4gZXh0cmVtZWx5CistIyBi aXphcnJlIGJ1ZyBvbiBTdW5PUyA0LjEuMy4KKy1pZiAkYWNfbmVlZF9kZWZhdWx0czsgdGhlbgor LSAgdGVzdCAke0NPTkZJR19GSUxFUyt5fSB8fCBDT05GSUdfRklMRVM9JGNvbmZpZ19maWxlcwor LSAgdGVzdCAke0NPTkZJR19IRUFERVJTK3l9IHx8IENPTkZJR19IRUFERVJTPSRjb25maWdfaGVh ZGVycworLSAgdGVzdCAke0NPTkZJR19DT01NQU5EUyt5fSB8fCBDT05GSUdfQ09NTUFORFM9JGNv bmZpZ19jb21tYW5kcworLWZpCistCistIyBIYXZlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3Ig Y29udmVuaWVuY2UuICBNYWtlIGl0IGluIHRoZSBidWlsZCB0cmVlCistIyBzaW1wbHkgYmVjYXVz ZSB0aGVyZSBpcyBubyByZWFzb24gYWdhaW5zdCBoYXZpbmcgaXQgaGVyZSwgYW5kIGluIGFkZGl0 aW9uLAorLSMgY3JlYXRpbmcgYW5kIG1vdmluZyBmaWxlcyBmcm9tIC90bXAgY2FuIHNvbWV0aW1l cyBjYXVzZSBwcm9ibGVtcy4KKy0jIEhvb2sgZm9yIGl0cyByZW1vdmFsIHVubGVzcyBkZWJ1Z2dp bmcuCistIyBOb3RlIHRoYXQgdGhlcmUgaXMgYSBzbWFsbCB3aW5kb3cgaW4gd2hpY2ggdGhlIGRp cmVjdG9yeSB3aWxsIG5vdCBiZSBjbGVhbmVkOgorLSMgYWZ0ZXIgaXRzIGNyZWF0aW9uIGJ1dCBi ZWZvcmUgaXRzIG5hbWUgaGFzIGJlZW4gYXNzaWduZWQgdG8gJyR0bXAnLgorLSRkZWJ1ZyB8fAor LXsKKy0gIHRtcD0gYWNfdG1wPQorLSAgdHJhcCAnZXhpdF9zdGF0dXM9JD8KKy0gIDogIiR7YWNf dG1wOj0kdG1wfSIKKy0gIHsgdGVzdCAhIC1kICIkYWNfdG1wIiB8fCBybSAtZnIgIiRhY190bXAi OyB9ICYmIGV4aXQgJGV4aXRfc3RhdHVzCistJyAwCistICB0cmFwICdhc19mbl9leGl0IDEnIDEg MiAxMyAxNQorLX0KKy0jIENyZWF0ZSBhIChzZWN1cmUpIHRtcCBkaXJlY3RvcnkgZm9yIHRtcCBm aWxlcy4KKy0KKy17CistICB0bXA9YCh1bWFzayAwNzcgJiYgbWt0ZW1wIC1kICIuL2NvbmZYWFhY WFgiKSAyPi9kZXYvbnVsbGAgJiYKKy0gIHRlc3QgLWQgIiR0bXAiCistfSAgfHwKKy17CistICB0 bXA9Li9jb25mJCQtJFJBTkRPTQorLSAgKHVtYXNrIDA3NyAmJiBta2RpciAiJHRtcCIpCistfSB8 fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4g LiIgIiRMSU5FTk8iIDUKKy1hY190bXA9JHRtcAorLQorLSMgU2V0IHVwIHRoZSBzY3JpcHRzIGZv ciBDT05GSUdfRklMRVMgc2VjdGlvbi4KKy0jIE5vIG5lZWQgdG8gZ2VuZXJhdGUgdGhlbSBpZiB0 aGVyZSBhcmUgbm8gQ09ORklHX0ZJTEVTLgorLSMgVGhpcyBoYXBwZW5zIGZvciBpbnN0YW5jZSB3 aXRoICcuL2NvbmZpZy5zdGF0dXMgY29uZmlnLmgnLgorLWlmIHRlc3QgLW4gIiRDT05GSUdfRklM RVMiOyB0aGVuCistCistCistYWNfY3I9YGVjaG8gWCB8IHRyIFggJ1wwMTUnYAorLSMgT24gY3ln d2luLCBiYXNoIGNhbiBlYXQgXHIgaW5zaWRlIGBgIGlmIHRoZSB1c2VyIHJlcXVlc3RlZCBpZ25j ci4KKy0jIEJ1dCB3ZSBrbm93IG9mIG5vIG90aGVyIHNoZWxsIHdoZXJlIGFjX2NyIHdvdWxkIGJl IGVtcHR5IGF0IHRoaXMKKy0jIHBvaW50LCBzbyB3ZSBjYW4gdXNlIGEgYmFzaGlzbSBhcyBhIGZh bGxiYWNrLgorLWlmIHRlc3QgIngkYWNfY3IiID0geDsgdGhlbgorLSAgZXZhbCBhY19jcj1cJFwn XFxyXCcKKy1maQorLWFjX2NzX2F3a19jcj1gJEFXSyAnQkVHSU4geyBwcmludCAiYVxyYiIgfScg PC9kZXYvbnVsbCAyPi9kZXYvbnVsbGAKKy1pZiB0ZXN0ICIkYWNfY3NfYXdrX2NyIiA9ICJhJHth Y19jcn1iIjsgdGhlbgorLSAgYWNfY3NfYXdrX2NyPSdcXHInCistZWxzZQorLSAgYWNfY3NfYXdr X2NyPSRhY19jcgorLWZpCistCistZWNobyAnQkVHSU4geycgPiIkYWNfdG1wL3N1YnMxLmF3ayIg JiYKKy1fQUNFT0YKKy0KKy0KKy17CistICBlY2hvICJjYXQgPmNvbmYkJHN1YnMuYXdrIDw8X0FD RU9GIiAmJgorLSAgZWNobyAiJGFjX3N1YnN0X3ZhcnMiIHwgc2VkICdzLy4qLyYhJCYkYWNfZGVs aW0vJyAmJgorLSAgZWNobyAiX0FDRU9GIgorLX0gPmNvbmYkJHN1YnMuc2ggfHwKKy0gIGFzX2Zu X2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKKy1h Y19kZWxpbV9udW09YGVjaG8gIiRhY19zdWJzdF92YXJzIiB8IGdyZXAgLWMgJ14nYAorLWFjX2Rl bGltPSclIV8hIyAnCistZm9yIGFjX2xhc3RfdHJ5IGluIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNl IGZhbHNlIDo7IGRvCistICAuIC4vY29uZiQkc3Vicy5zaCB8fAorLSAgICBhc19mbl9lcnJvciAk PyAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CistCistICBhY19k ZWxpbV9uPWBzZWQgLW4gInMvLiokYWNfZGVsaW1cJC9YL3AiIGNvbmYkJHN1YnMuYXdrIHwgZ3Jl cCAtYyBYYAorLSAgaWYgdGVzdCAkYWNfZGVsaW1fbiA9ICRhY19kZWxpbV9udW07IHRoZW4KKy0g ICAgYnJlYWsKKy0gIGVsaWYgJGFjX2xhc3RfdHJ5OyB0aGVuCistICAgIGFzX2ZuX2Vycm9yICQ/ ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKKy0gIGVsc2UKKy0g ICAgYWNfZGVsaW09IiRhY19kZWxpbSEkYWNfZGVsaW0gXyRhY19kZWxpbSEhICIKKy0gIGZpCist ZG9uZQorLXJtIC1mIGNvbmYkJHN1YnMuc2gKKy0KKy1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9B Q0VPRiB8fCBhY193cml0ZV9mYWlsPTEKKy1jYXQgPj4iXCRhY190bXAvc3ViczEuYXdrIiA8PFxc X0FDQVdLICYmCistX0FDRU9GCistc2VkIC1uICcKKy1oCistcy9eL1NbIi87IHMvIS4qLyJdPS8K Ky1wCistZworLXMvXlteIV0qIS8vCistOnJlcGwKKy10IHJlcGwKKy1zLyciJGFjX2RlbGltIick Ly8KKy10IGRlbGltCistOm5sCistaAorLXMvXCguXHsxNDhcfVwpLi4qL1wxLworLXQgbW9yZTEK Ky1zL1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC9cXG4iXFwvCistcAorLW4KKy1iIHJlcGwKKy06 bW9yZTEKKy1zL1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC8iXFwvCistcAorLWcKKy1zLy5cezE0 OFx9Ly8KKy10IG5sCistOmRlbGltCistaAorLXMvXCguXHsxNDhcfVwpLi4qL1wxLworLXQgbW9y ZTIKKy1zL1siXFxdL1xcJi9nOyBzL14vIi87IHMvJC8iLworLXAKKy1iCistOm1vcmUyCistcy9b IlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvIlxcLworLXAKKy1nCistcy8uXHsxNDhcfS8vCistdCBk ZWxpbQorLScgPGNvbmYkJHN1YnMuYXdrIHwgc2VkICcKKy0vXlteIiJdL3sKKy0gIE4KKy0gIHMv XG4vLworLX0KKy0nID4+JENPTkZJR19TVEFUVVMgfHwgYWNfd3JpdGVfZmFpbD0xCistcm0gLWYg Y29uZiQkc3Vicy5hd2sKKy1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0 ZV9mYWlsPTEKKy1fQUNBV0sKKy1jYXQgPj4iXCRhY190bXAvc3ViczEuYXdrIiA8PF9BQ0FXSyAm JgorLSAgZm9yIChrZXkgaW4gUykgU19pc19zZXRba2V5XSA9IDEKKy0gIEZTID0gIgciCistCist fQorLXsKKy0gIGxpbmUgPSAkIDAKKy0gIG5maWVsZHMgPSBzcGxpdChsaW5lLCBmaWVsZCwgIkAi KQorLSAgc3Vic3RlZCA9IDAKKy0gIGxlbiA9IGxlbmd0aChmaWVsZFsxXSkKKy0gIGZvciAoaSA9 IDI7IGkgPCBuZmllbGRzOyBpKyspIHsKKy0gICAga2V5ID0gZmllbGRbaV0KKy0gICAga2V5bGVu ID0gbGVuZ3RoKGtleSkKKy0gICAgaWYgKFNfaXNfc2V0W2tleV0pIHsKKy0gICAgICB2YWx1ZSA9 IFNba2V5XQorLSAgICAgIGxpbmUgPSBzdWJzdHIobGluZSwgMSwgbGVuKSAiIiB2YWx1ZSAiIiBz dWJzdHIobGluZSwgbGVuICsga2V5bGVuICsgMykKKy0gICAgICBsZW4gKz0gbGVuZ3RoKHZhbHVl KSArIGxlbmd0aChmaWVsZFsrK2ldKQorLSAgICAgIHN1YnN0ZWQgPSAxCistICAgIH0gZWxzZQor LSAgICAgIGxlbiArPSAxICsga2V5bGVuCistICB9CistCistICBwcmludCBsaW5lCistfQorLQor LV9BQ0FXSworLV9BQ0VPRgorLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193 cml0ZV9mYWlsPTEKKy1pZiBzZWQgInMvJGFjX2NyLy8iIDwgL2Rldi9udWxsID4gL2Rldi9udWxs IDI+JjE7IHRoZW4KKy0gIHNlZCAicy8kYWNfY3JcJC8vOyBzLyRhY19jci8kYWNfY3NfYXdrX2Ny L2ciCistZWxzZQorLSAgY2F0CistZmkgPCAiJGFjX3RtcC9zdWJzMS5hd2siID4gIiRhY190bXAv c3Vicy5hd2siIFwKKy0gIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3Qgc2V0dXAgY29uZmln IGZpbGVzIG1hY2hpbmVyeSIgIiRMSU5FTk8iIDUKKy1fQUNFT0YKKy0KKy0jIFZQQVRIIG1heSBj YXVzZSB0cm91YmxlIHdpdGggc29tZSBtYWtlcywgc28gd2UgcmVtb3ZlIHNvbGUgJChzcmNkaXIp LAorLSMgJHtzcmNkaXJ9IGFuZCBAc3JjZGlyQCBlbnRyaWVzIGZyb20gVlBBVEggaWYgc3JjZGly IGlzICIuIiwgc3RyaXAgbGVhZGluZyBhbmQKKy0jIHRyYWlsaW5nIGNvbG9ucyBhbmQgdGhlbiBy ZW1vdmUgdGhlIHdob2xlIGxpbmUgaWYgVlBBVEggYmVjb21lcyBlbXB0eQorLSMgKGFjdHVhbGx5 IHdlIGxlYXZlIGFuIGVtcHR5IGxpbmUgdG8gcHJlc2VydmUgbGluZSBudW1iZXJzKS4KKy1pZiB0 ZXN0ICJ4JHNyY2RpciIgPSB4LjsgdGhlbgorLSAgYWNfdnBzdWI9Jy9eWwkgXSpWUEFUSFsJIF0q PVsJIF0qL3sKKy1oCistcy8vLworLXMvXi86LworLXMvWwkgXSokLzovCistcy86XCQoc3JjZGly KTovOi9nCistcy86XCR7c3JjZGlyfTovOi9nCistcy86QHNyY2RpckA6LzovZworLXMvXjoqLy8K Ky1zLzoqJC8vCisteAorLXMvXCg9WwkgXSpcKS4qL1wxLworLUcKKy1zL1xuLy8KKy1zL15bXj1d Kj1bCSBdKiQvLworLX0nCistZmkKKy0KKy1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0Yg fHwgYWNfd3JpdGVfZmFpbD0xCistZmkgIyB0ZXN0IC1uICIkQ09ORklHX0ZJTEVTIgorLQorLSMg U2V0IHVwIHRoZSBzY3JpcHRzIGZvciBDT05GSUdfSEVBREVSUyBzZWN0aW9uLgorLSMgTm8gbmVl ZCB0byBnZW5lcmF0ZSB0aGVtIGlmIHRoZXJlIGFyZSBubyBDT05GSUdfSEVBREVSUy4KKy0jIFRo aXMgaGFwcGVucyBmb3IgaW5zdGFuY2Ugd2l0aCAnLi9jb25maWcuc3RhdHVzIE1ha2VmaWxlJy4K Ky1pZiB0ZXN0IC1uICIkQ09ORklHX0hFQURFUlMiOyB0aGVuCistY2F0ID4iJGFjX3RtcC9kZWZp bmVzLmF3ayIgPDxcX0FDQVdLIHx8CistQkVHSU4geworLV9BQ0VPRgorLQorLSMgVHJhbnNmb3Jt IGNvbmZkZWZzLmggaW50byBhbiBhd2sgc2NyaXB0ICdkZWZpbmVzLmF3aycsIGVtYmVkZGVkIGFz CistIyBoZXJlLWRvY3VtZW50IGluIGNvbmZpZy5zdGF0dXMsIHRoYXQgc3Vic3RpdHV0ZXMgdGhl IHByb3BlciB2YWx1ZXMgaW50bworLSMgY29uZmlnLmguaW4gdG8gcHJvZHVjZSBjb25maWcuaC4K Ky0KKy0jIENyZWF0ZSBhIGRlbGltaXRlciBzdHJpbmcgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiBj b25mZGVmcy5oLCB0byBlYXNlCistIyBoYW5kbGluZyBvZiBsb25nIGxpbmVzLgorLWFjX2RlbGlt PSclIV8hIyAnCistZm9yIGFjX2xhc3RfdHJ5IGluIGZhbHNlIGZhbHNlIDo7IGRvCistICBhY190 dD1gc2VkIC1uICIvJGFjX2RlbGltL3AiIGNvbmZkZWZzLmhgCistICBpZiB0ZXN0IC16ICIkYWNf dHQiOyB0aGVuCistICAgIGJyZWFrCistICBlbGlmICRhY19sYXN0X3RyeTsgdGhlbgorLSAgICBh c19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19IRUFERVJTIiAiJExJTkVOTyIg NQorLSAgZWxzZQorLSAgICBhY19kZWxpbT0iJGFjX2RlbGltISRhY19kZWxpbSBfJGFjX2RlbGlt ISEgIgorLSAgZmkKKy1kb25lCistCistIyBGb3IgdGhlIGF3ayBzY3JpcHQsIEQgaXMgYW4gYXJy YXkgb2YgbWFjcm8gdmFsdWVzIGtleWVkIGJ5IG5hbWUsCistIyBsaWtld2lzZSBQIGNvbnRhaW5z IG1hY3JvIHBhcmFtZXRlcnMgaWYgYW55LiAgUHJlc2VydmUgYmFja3NsYXNoCistIyBuZXdsaW5l IHNlcXVlbmNlcy4KKy0KKy1hY193b3JkX3JlPVtfJGFzX2NyX0xldHRlcnNdW18kYXNfY3JfYWxu dW1dKgorLXNlZCAtbiAnCistcy8uXHsxNDhcfS8mJyIkYWNfZGVsaW0iJy9nCistdCByc2V0Cist OnJzZXQKKy1zL15bCSBdKiNbCSBdKmRlZmluZVsJIF1bCSBdKi8gLworLXQgZGVmCistZAorLTpk ZWYKKy1zL1xcJC8vCistdCBic25sCistcy9bIlxcXS9cXCYvZworLXMvXiBcKCciJGFjX3dvcmRf cmUiJ1wpXCgoW14oKV0qKVwpWwkgXSpcKC4qXCkvUFsiXDEiXT0iXDIiXAorLURbIlwxIl09IiBc MyIvcAorLXMvXiBcKCciJGFjX3dvcmRfcmUiJ1wpWwkgXSpcKC4qXCkvRFsiXDEiXT0iIFwyIi9w CistZAorLTpic25sCistcy9bIlxcXS9cXCYvZworLXMvXiBcKCciJGFjX3dvcmRfcmUiJ1wpXCgo W14oKV0qKVwpWwkgXSpcKC4qXCkvUFsiXDEiXT0iXDIiXAorLURbIlwxIl09IiBcM1xcXFxcXG4i XFwvcAorLXQgY29udAorLXMvXiBcKCciJGFjX3dvcmRfcmUiJ1wpWwkgXSpcKC4qXCkvRFsiXDEi XT0iIFwyXFxcXFxcbiJcXC9wCistdCBjb250CistZAorLTpjb250CistbgorLXMvLlx7MTQ4XH0v JiciJGFjX2RlbGltIicvZworLXQgY2xlYXIKKy06Y2xlYXIKKy1zL1xcJC8vCistdCBic25sYwor LXMvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyIvcAorLWQKKy06YnNubGMKKy1zL1siXFxdL1xc Ji9nOyBzL14vIi87IHMvJC9cXFxcXFxuIlxcL3AKKy1iIGNvbnQKKy0nIDxjb25mZGVmcy5oIHwg c2VkICcKKy1zLyciJGFjX2RlbGltIicvIlxcXAorLSIvZycgPj4kQ09ORklHX1NUQVRVUyB8fCBh Y193cml0ZV9mYWlsPTEKKy0KKy1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193 cml0ZV9mYWlsPTEKKy0gIGZvciAoa2V5IGluIEQpIERfaXNfc2V0W2tleV0gPSAxCistICBGUyA9 ICIHIgorLX0KKy0vXltcdCBdKiNbXHQgXSooZGVmaW5lfHVuZGVmKVtcdCBdKyRhY193b3JkX3Jl KFtcdCAoXXxcJCkvIHsKKy0gIGxpbmUgPSBcJCAwCistICBzcGxpdChsaW5lLCBhcmcsICIgIikK Ky0gIGlmIChhcmdbMV0gPT0gIiMiKSB7CistICAgIGRlZnVuZGVmID0gYXJnWzJdCistICAgIG1h YzEgPSBhcmdbM10KKy0gIH0gZWxzZSB7CistICAgIGRlZnVuZGVmID0gc3Vic3RyKGFyZ1sxXSwg MikKKy0gICAgbWFjMSA9IGFyZ1syXQorLSAgfQorLSAgc3BsaXQobWFjMSwgbWFjMiwgIigiKSAj KQorLSAgbWFjcm8gPSBtYWMyWzFdCistICBwcmVmaXggPSBzdWJzdHIobGluZSwgMSwgaW5kZXgo bGluZSwgZGVmdW5kZWYpIC0gMSkKKy0gIGlmIChEX2lzX3NldFttYWNyb10pIHsKKy0gICAgIyBQ cmVzZXJ2ZSB0aGUgd2hpdGUgc3BhY2Ugc3Vycm91bmRpbmcgdGhlICIjIi4KKy0gICAgcHJpbnQg cHJlZml4ICJkZWZpbmUiLCBtYWNybyBQW21hY3JvXSBEW21hY3JvXQorLSAgICBuZXh0CistICB9 IGVsc2UgeworLSAgICAjIFJlcGxhY2UgI3VuZGVmIHdpdGggY29tbWVudHMuICBUaGlzIGlzIG5l Y2Vzc2FyeSwgZm9yIGV4YW1wbGUsCistICAgICMgaW4gdGhlIGNhc2Ugb2YgX1BPU0lYX1NPVVJD RSwgd2hpY2ggaXMgcHJlZGVmaW5lZCBhbmQgcmVxdWlyZWQKKy0gICAgIyBvbiBzb21lIHN5c3Rl bXMgd2hlcmUgY29uZmlndXJlIHdpbGwgbm90IGRlY2lkZSB0byBkZWZpbmUgaXQuCistICAgIGlm IChkZWZ1bmRlZiA9PSAidW5kZWYiKSB7CistICAgICAgcHJpbnQgIi8qIiwgcHJlZml4IGRlZnVu ZGVmLCBtYWNybywgIiovIgorLSAgICAgIG5leHQKKy0gICAgfQorLSAgfQorLX0KKy17IHByaW50 IH0KKy1fQUNBV0sKKy1fQUNFT0YKKy1jYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwg YWNfd3JpdGVfZmFpbD0xCistICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IHNldHVwIGNvbmZp ZyBoZWFkZXJzIG1hY2hpbmVyeSIgIiRMSU5FTk8iIDUKKy1maSAjIHRlc3QgLW4gIiRDT05GSUdf SEVBREVSUyIKKy0KKy0KKy1ldmFsIHNldCBYICIgIDpGICRDT05GSUdfRklMRVMgIDpIICRDT05G SUdfSEVBREVSUyAgICA6QyAkQ09ORklHX0NPTU1BTkRTIgorLXNoaWZ0CistZm9yIGFjX3RhZwor LWRvCistICBjYXNlICRhY190YWcgaW4KKy0gIDpbRkhMQ10pIGFjX21vZGU9JGFjX3RhZzsgY29u dGludWU7OworLSAgZXNhYworLSAgY2FzZSAkYWNfbW9kZSRhY190YWcgaW4KKy0gIDpbRkhMXSo6 Kik7OworLSAgOkwqIHwgOkMqOiopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHRhZyAnJGFjX3Rh ZyciICIkTElORU5PIiA1OzsKKy0gIDpbRkhdLSkgYWNfdGFnPS06LTs7CistICA6W0ZIXSopIGFj X3RhZz0kYWNfdGFnOiRhY190YWcuaW47OworLSAgZXNhYworLSAgYWNfc2F2ZV9JRlM9JElGUwor LSAgSUZTPToKKy0gIHNldCB4ICRhY190YWcKKy0gIElGUz0kYWNfc2F2ZV9JRlMKKy0gIHNoaWZ0 CistICBhY19maWxlPSQxCistICBzaGlmdAorLQorLSAgY2FzZSAkYWNfbW9kZSBpbgorLSAgOkwp IGFjX3NvdXJjZT0kMTs7CistICA6W0ZIXSkKKy0gICAgYWNfZmlsZV9pbnB1dHM9CistICAgIGZv ciBhY19mCistICAgIGRvCistICAgICAgY2FzZSAkYWNfZiBpbgorLSAgICAgIC0pIGFjX2Y9IiRh Y190bXAvc3RkaW4iOzsKKy0gICAgICAqKSAjIExvb2sgZm9yIHRoZSBmaWxlIGZpcnN0IGluIHRo ZSBidWlsZCB0cmVlLCB0aGVuIGluIHRoZSBzb3VyY2UgdHJlZQorLQkgIyAoaWYgdGhlIHBhdGgg aXMgbm90IGFic29sdXRlKS4gIFRoZSBhYnNvbHV0ZSBwYXRoIGNhbm5vdCBiZSBET1Mtc3R5bGUs CistCSAjIGJlY2F1c2UgJGFjX2YgY2Fubm90IGNvbnRhaW4gJzonLgorLQkgdGVzdCAtZiAiJGFj X2YiIHx8CistCSAgIGNhc2UgJGFjX2YgaW4KKy0JICAgW1xcLyRdKikgZmFsc2U7OworLQkgICAq KSB0ZXN0IC1mICIkc3JjZGlyLyRhY19mIiAmJiBhY19mPSIkc3JjZGlyLyRhY19mIjs7CistCSAg IGVzYWMgfHwKKy0JICAgYXNfZm5fZXJyb3IgMSAiY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogJyRh Y19mJyIgIiRMSU5FTk8iIDU7OworLSAgICAgIGVzYWMKKy0gICAgICBjYXNlICRhY19mIGluICpc JyopIGFjX2Y9YHByaW50ZiAiJXNcbiIgIiRhY19mIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ci YDs7IGVzYWMKKy0gICAgICBhc19mbl9hcHBlbmQgYWNfZmlsZV9pbnB1dHMgIiAnJGFjX2YnIgor LSAgICBkb25lCistCistICAgICMgTGV0J3Mgc3RpbGwgcHJldGVuZCBpdCBpcyAnY29uZmlndXJl JyB3aGljaCBpbnN0YW50aWF0ZXMgKGkuZS4sIGRvbid0CistICAgICMgdXNlICRhc19tZSksIHBl b3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoKKy0gICAgIyAgICAvKiBjb25maWcuaC4g IEdlbmVyYXRlZCBieSBjb25maWcuc3RhdHVzLiAgKi8KKy0gICAgY29uZmlndXJlX2lucHV0PSdH ZW5lcmF0ZWQgZnJvbSAnYAorLQkgIHByaW50ZiAiJXNcbiIgIiQqIiB8IHNlZCAnc3xeW146XSov fHw7c3w6W146XSovfCwgfGcnCistCWAnIGJ5IGNvbmZpZ3VyZS4nCistICAgIGlmIHRlc3QgeCIk YWNfZmlsZSIgIT0geC07IHRoZW4KKy0gICAgICBjb25maWd1cmVfaW5wdXQ9IiRhY19maWxlLiAg JGNvbmZpZ3VyZV9pbnB1dCIKKy0gICAgICB7IHByaW50ZiAiJXNcbiIgIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNQorLXByaW50ZiAiJXNcbiIgIiRh c19tZTogY3JlYXRpbmcgJGFjX2ZpbGUiID4mNjt9CistICAgIGZpCistICAgICMgTmV1dHJhbGl6 ZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW50ZXJwcmV0ZWQgYnkgc2VkIGluIHJlcGxhY2VtZW50IHN0 cmluZ3MuCistICAgIGNhc2UgJGNvbmZpZ3VyZV9pbnB1dCBpbiAjKAorLSAgICAqXCYqIHwgKlx8 KiB8ICpcXCogKQorLSAgICAgICBhY19zZWRfY29uZl9pbnB1dD1gcHJpbnRmICIlc1xuIiAiJGNv bmZpZ3VyZV9pbnB1dCIgfAorLSAgICAgICBzZWQgJ3MvW1xcXFwmfF0vXFxcXCYvZydgOzsgIygK Ky0gICAgKikgYWNfc2VkX2NvbmZfaW5wdXQ9JGNvbmZpZ3VyZV9pbnB1dDs7CistICAgIGVzYWMK Ky0KKy0gICAgY2FzZSAkYWNfdGFnIGluCistICAgICo6LToqIHwgKjotKSBjYXQgPiIkYWNfdG1w L3N0ZGluIiBcCistICAgICAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFj X2ZpbGUiICIkTElORU5PIiA1IDs7CistICAgIGVzYWMKKy0gICAgOzsKKy0gIGVzYWMKKy0KKy0g IGFjX2Rpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhY19maWxlIiB8fAorLSRhc19leHByIFgiJGFjX2Zp bGUiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCistCSBYIiRhY19maWxlIiA6 ICdYXCgvL1wpW14vXScgXHwgXAorLQkgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKSQnIFx8IFwKKy0J IFgiJGFjX2ZpbGUiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fAorLXByaW50ZiAiJXNc biIgWCIkYWNfZmlsZSIgfAorLSAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwv KiQveworLQkgICAgcy8vXDEvCistCSAgICBxCistCSAgfQorLQkgIC9eWFwoXC9cL1wpW14vXS4q L3sKKy0JICAgIHMvL1wxLworLQkgICAgcQorLQkgIH0KKy0JICAvXlhcKFwvXC9cKSQveworLQkg ICAgcy8vXDEvCistCSAgICBxCistCSAgfQorLQkgIC9eWFwoXC9cKS4qL3sKKy0JICAgIHMvL1wx LworLQkgICAgcQorLQkgIH0KKy0JICBzLy4qLy4vOyBxJ2AKKy0gIGFzX2Rpcj0iJGFjX2RpciI7 IGFzX2ZuX21rZGlyX3AKKy0gIGFjX2J1aWxkZGlyPS4KKy0KKy1jYXNlICIkYWNfZGlyIiBpbgor LS4pIGFjX2Rpcl9zdWZmaXg9IGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJl Zml4PSA7OworLSopCistICBhY19kaXJfc3VmZml4PS9gcHJpbnRmICIlc1xuIiAiJGFjX2RpciIg fCBzZWQgJ3N8XlwuW1xcL118fCdgCistICAjIEEgIi4uIiBmb3IgZWFjaCBkaXJlY3RvcnkgaW4g JGFjX2Rpcl9zdWZmaXguCistICBhY190b3BfYnVpbGRkaXJfc3ViPWBwcmludGYgIiVzXG4iICIk YWNfZGlyX3N1ZmZpeCIgfCBzZWQgJ3N8L1teXFwvXSp8Ly4ufGc7c3wvfHwnYAorLSAgY2FzZSAk YWNfdG9wX2J1aWxkZGlyX3N1YiBpbgorLSAgIiIpIGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190 b3BfYnVpbGRfcHJlZml4PSA7OworLSAgKikgIGFjX3RvcF9idWlsZF9wcmVmaXg9JGFjX3RvcF9i dWlsZGRpcl9zdWIvIDs7CistICBlc2FjIDs7CistZXNhYworLWFjX2Fic190b3BfYnVpbGRkaXI9 JGFjX3B3ZAorLWFjX2Fic19idWlsZGRpcj0kYWNfcHdkJGFjX2Rpcl9zdWZmaXgKKy0jIGZvciBi YWNrd2FyZCBjb21wYXRpYmlsaXR5OgorLWFjX3RvcF9idWlsZGRpcj0kYWNfdG9wX2J1aWxkX3By ZWZpeAorLQorLWNhc2UgJHNyY2RpciBpbgorLSAgLikgICMgV2UgYXJlIGJ1aWxkaW5nIGluIHBs YWNlLgorLSAgICBhY19zcmNkaXI9LgorLSAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRk aXJfc3ViCistICAgIGFjX2Fic190b3Bfc3JjZGlyPSRhY19wd2QgOzsKKy0gIFtcXC9dKiB8ID86 W1xcL10qICkgICMgQWJzb2x1dGUgbmFtZS4KKy0gICAgYWNfc3JjZGlyPSRzcmNkaXIkYWNfZGly X3N1ZmZpeDsKKy0gICAgYWNfdG9wX3NyY2Rpcj0kc3JjZGlyCistICAgIGFjX2Fic190b3Bfc3Jj ZGlyPSRzcmNkaXIgOzsKKy0gICopICMgUmVsYXRpdmUgbmFtZS4KKy0gICAgYWNfc3JjZGlyPSRh Y190b3BfYnVpbGRfcHJlZml4JHNyY2RpciRhY19kaXJfc3VmZml4CistICAgIGFjX3RvcF9zcmNk aXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyCistICAgIGFjX2Fic190b3Bfc3JjZGlyPSRh Y19wd2QvJHNyY2RpciA7OworLWVzYWMKKy1hY19hYnNfc3JjZGlyPSRhY19hYnNfdG9wX3NyY2Rp ciRhY19kaXJfc3VmZml4CistCistCistICBjYXNlICRhY19tb2RlIGluCistICA6RikKKy0gICMK Ky0gICMgQ09ORklHX0ZJTEUKKy0gICMKKy0KKy0gIGNhc2UgJElOU1RBTEwgaW4KKy0gIFtcXC8k XSogfCA/OltcXC9dKiApIGFjX0lOU1RBTEw9JElOU1RBTEwgOzsKKy0gICopIGFjX0lOU1RBTEw9 JGFjX3RvcF9idWlsZF9wcmVmaXgkSU5TVEFMTCA7OworLSAgZXNhYworLSAgYWNfTUtESVJfUD0k TUtESVJfUAorLSAgY2FzZSAkTUtESVJfUCBpbgorLSAgW1xcLyRdKiB8ID86W1xcL10qICkgOzsK Ky0gICovKikgYWNfTUtESVJfUD0kYWNfdG9wX2J1aWxkX3ByZWZpeCRNS0RJUl9QIDs7CistICBl c2FjCistX0FDRU9GCistCistY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dy aXRlX2ZhaWw9MQorLSMgSWYgdGhlIHRlbXBsYXRlIGRvZXMgbm90IGtub3cgYWJvdXQgZGF0YXJv b3RkaXIsIGV4cGFuZCBpdC4KKy0jIEZJWE1FOiBUaGlzIGhhY2sgc2hvdWxkIGJlIHJlbW92ZWQg YSBmZXcgeWVhcnMgYWZ0ZXIgMi42MC4KKy1hY19kYXRhcm9vdGRpcl9oYWNrPTsgYWNfZGF0YXJv b3RkaXJfc2Vlbj0KKy1hY19zZWRfZGF0YXJvb3Q9JworLS9kYXRhcm9vdGRpci8geworLSAgcAor LSAgcQorLX0KKy0vQGRhdGFkaXJAL3AKKy0vQGRvY2RpckAvcAorLS9AaW5mb2RpckAvcAorLS9A bG9jYWxlZGlyQC9wCistL0BtYW5kaXJAL3AnCistY2FzZSBgZXZhbCAic2VkIC1uIFwiXCRhY19z ZWRfZGF0YXJvb3RcIiAkYWNfZmlsZV9pbnB1dHMiYCBpbgorLSpkYXRhcm9vdGRpciopIGFjX2Rh dGFyb290ZGlyX3NlZW49eWVzOzsKKy0qQGRhdGFkaXJAKnwqQGRvY2RpckAqfCpAaW5mb2RpckAq fCpAbG9jYWxlZGlyQCp8KkBtYW5kaXJAKikKKy0gIHsgcHJpbnRmICIlc1xuIiAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkYWNfZmlsZV9pbnB1dHMgc2VlbXMgdG8gaWdu b3JlIHRoZSAtLWRhdGFyb290ZGlyIHNldHRpbmciID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19t ZTogV0FSTklORzogJGFjX2ZpbGVfaW5wdXRzIHNlZW1zIHRvIGlnbm9yZSB0aGUgLS1kYXRhcm9v dGRpciBzZXR0aW5nIiA+JjI7fQorLV9BQ0VPRgorLWNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FD RU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorLSAgYWNfZGF0YXJvb3RkaXJfaGFjaz0nCistICBzJkBk YXRhZGlyQCYkZGF0YWRpciZnCistICBzJkBkb2NkaXJAJiRkb2NkaXImZworLSAgcyZAaW5mb2Rp ckAmJGluZm9kaXImZworLSAgcyZAbG9jYWxlZGlyQCYkbG9jYWxlZGlyJmcKKy0gIHMmQG1hbmRp ckAmJG1hbmRpciZnCistICBzJlxcXCR7ZGF0YXJvb3RkaXJ9JiRkYXRhcm9vdGRpciZnJyA7Owor LWVzYWMKKy1fQUNFT0YKKy0KKy0jIE5ldXRyYWxpemUgVlBBVEggd2hlbiAnJHNyY2RpcicgPSAn LicuCistIyBTaGVsbCBjb2RlIGluIGNvbmZpZ3VyZS5hYyBtaWdodCBzZXQgZXh0cmFzdWIuCist IyBGSVhNRTogZG8gd2UgcmVhbGx5IHdhbnQgdG8gbWFpbnRhaW4gdGhpcyBmZWF0dXJlPworLWNh dCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorLWFjX3NlZF9l eHRyYT0iJGFjX3Zwc3ViCistJGV4dHJhc3ViCistX0FDRU9GCistY2F0ID4+JENPTkZJR19TVEFU VVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorLTp0CistL0BbYS16QS1aX11bYS16QS1a XzAtOV0qQC8hYgorLXN8QGNvbmZpZ3VyZV9pbnB1dEB8JGFjX3NlZF9jb25mX2lucHV0fDt0IHQK Ky1zJkB0b3BfYnVpbGRkaXJAJiRhY190b3BfYnVpbGRkaXJfc3ViJjt0IHQKKy1zJkB0b3BfYnVp bGRfcHJlZml4QCYkYWNfdG9wX2J1aWxkX3ByZWZpeCY7dCB0CistcyZAc3JjZGlyQCYkYWNfc3Jj ZGlyJjt0IHQKKy1zJkBhYnNfc3JjZGlyQCYkYWNfYWJzX3NyY2RpciY7dCB0CistcyZAdG9wX3Ny Y2RpckAmJGFjX3RvcF9zcmNkaXImO3QgdAorLXMmQGFic190b3Bfc3JjZGlyQCYkYWNfYWJzX3Rv cF9zcmNkaXImO3QgdAorLXMmQGJ1aWxkZGlyQCYkYWNfYnVpbGRkaXImO3QgdAorLXMmQGFic19i dWlsZGRpckAmJGFjX2Fic19idWlsZGRpciY7dCB0CistcyZAYWJzX3RvcF9idWlsZGRpckAmJGFj X2Fic190b3BfYnVpbGRkaXImO3QgdAorLXMmQElOU1RBTExAJiRhY19JTlNUQUxMJjt0IHQKKy1z JkBNS0RJUl9QQCYkYWNfTUtESVJfUCY7dCB0CistJGFjX2RhdGFyb290ZGlyX2hhY2sKKy0iCist ZXZhbCBzZWQgXCJcJGFjX3NlZF9leHRyYVwiICIkYWNfZmlsZV9pbnB1dHMiIHwgJEFXSyAtZiAi JGFjX3RtcC9zdWJzLmF3ayIgXAorLSAgPiRhY190bXAvb3V0IHx8IGFzX2ZuX2Vycm9yICQ/ICJj b3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQorLQorLXRlc3QgLXogIiRhY19k YXRhcm9vdGRpcl9oYWNrJGFjX2RhdGFyb290ZGlyX3NlZW4iICYmCistICB7IGFjX291dD1gc2Vk IC1uICcvXCR7ZGF0YXJvb3RkaXJ9L3AnICIkYWNfdG1wL291dCJgOyB0ZXN0IC1uICIkYWNfb3V0 IjsgfSAmJgorLSAgeyBhY19vdXQ9YHNlZCAtbiAnL15bCSBdKmRhdGFyb290ZGlyWwkgXSo6Kj0v cCcgXAorLSAgICAgICIkYWNfdG1wL291dCJgOyB0ZXN0IC16ICIkYWNfb3V0IjsgfSAmJgorLSAg eyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRh Y19maWxlIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSAnZGF0YXJvb3RkaXIn Cistd2hpY2ggc2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBk ZWZpbmVkIiA+JjUKKy1wcmludGYgIiVzXG4iICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlIGNv bnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSAnZGF0YXJvb3RkaXInCistd2hpY2gg c2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIiA+ JjI7fQorLQorLSAgcm0gLWYgIiRhY190bXAvc3RkaW4iCistICBjYXNlICRhY19maWxlIGluCist ICAtKSBjYXQgIiRhY190bXAvb3V0IiAmJiBybSAtZiAiJGFjX3RtcC9vdXQiOzsKKy0gICopIHJt IC1mICIkYWNfZmlsZSIgJiYgbXYgIiRhY190bXAvb3V0IiAiJGFjX2ZpbGUiOzsKKy0gIGVzYWMg XAorLSAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElO RU5PIiA1CistIDs7CistICA6SCkKKy0gICMKKy0gICMgQ09ORklHX0hFQURFUgorLSAgIworLSAg aWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgorLSAgICB7CistICAgICAgcHJpbnRmICIl c1xuIiAiLyogJGNvbmZpZ3VyZV9pbnB1dCAgKi8iID4mMSBcCistICAgICAgJiYgZXZhbCAnJEFX SyAtZiAiJGFjX3RtcC9kZWZpbmVzLmF3ayInICIkYWNfZmlsZV9pbnB1dHMiCistICAgIH0gPiIk YWNfdG1wL2NvbmZpZy5oIiBcCistICAgICAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBj cmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CistICAgIGlmIGRpZmYgIiRhY19maWxlIiAiJGFj X3RtcC9jb25maWcuaCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCistICAgICAgeyBwcmludGYgIiVz XG4iICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY19maWxlIGlzIHVuY2hhbmdlZCIg PiY1CistcHJpbnRmICIlc1xuIiAiJGFzX21lOiAkYWNfZmlsZSBpcyB1bmNoYW5nZWQiID4mNjt9 CistICAgIGVsc2UKKy0gICAgICBybSAtZiAiJGFjX2ZpbGUiCistICAgICAgbXYgIiRhY190bXAv Y29uZmlnLmgiICIkYWNfZmlsZSIgXAorLQl8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNy ZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKKy0gICAgZmkKKy0gIGVsc2UKKy0gICAgcHJpbnRm ICIlc1xuIiAiLyogJGNvbmZpZ3VyZV9pbnB1dCAgKi8iID4mMSBcCistICAgICAgJiYgZXZhbCAn JEFXSyAtZiAiJGFjX3RtcC9kZWZpbmVzLmF3ayInICIkYWNfZmlsZV9pbnB1dHMiIFwKKy0gICAg ICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAtIiAiJExJTkVOTyIgNQorLSAg ZmkKKy0gOzsKKy0KKy0gIDpDKSAgeyBwcmludGYgIiVzXG4iICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IGV4ZWN1dGluZyAkYWNfZmlsZSBjb21tYW5kcyIgPiY1CistcHJpbnRmICIlc1xu IiAiJGFzX21lOiBleGVjdXRpbmcgJGFjX2ZpbGUgY29tbWFuZHMiID4mNjt9CistIDs7CistICBl c2FjCistCistCistICBjYXNlICRhY19maWxlJGFjX21vZGUgaW4KKy0gICAgInBvLWRpcmVjdG9y aWVzIjpDKQorLSAgICBmb3IgYWNfZmlsZSBpbiAkQ09ORklHX0ZJTEVTOyBkbworLSAgICAgICMg U3VwcG9ydCAib3V0ZmlsZVs6aW5maWxlWzppbmZpbGUuLi5dXSIKKy0gICAgICBjYXNlICIkYWNf ZmlsZSIgaW4KKy0gICAgICAgICo6KikgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyU6 LiolJSdgIDs7CistICAgICAgZXNhYworLSAgICAgICMgUE8gZGlyZWN0b3JpZXMgaGF2ZSBhIE1h a2VmaWxlLmluIGdlbmVyYXRlZCBmcm9tIE1ha2VmaWxlLmluLmluLgorLSAgICAgIGNhc2UgIiRh Y19maWxlIiBpbiAqL01ha2VmaWxlLmluKQorLSAgICAgICAgIyBBZGp1c3QgYSByZWxhdGl2ZSBz cmNkaXIuCistICAgICAgICBhY19kaXI9YGVjaG8gIiRhY19maWxlInxzZWQgJ3MlL1teL11bXi9d KiQlJSdgCistICAgICAgICBhY19kaXJfc3VmZml4PS9gZWNobyAiJGFjX2RpciJ8c2VkICdzJV5c Li8lJSdgCistICAgICAgICBhY19kb3RzPWBlY2hvICIkYWNfZGlyX3N1ZmZpeCJ8c2VkICdzJS9b Xi9dKiUuLi8lZydgCistICAgICAgICAjIEluIGF1dG9jb25mLTIuMTMgaXQgaXMgY2FsbGVkICRh Y19naXZlbl9zcmNkaXIuCistICAgICAgICAjIEluIGF1dG9jb25mLTIuNTAgaXQgaXMgY2FsbGVk ICRzcmNkaXIuCistICAgICAgICB0ZXN0IC1uICIkYWNfZ2l2ZW5fc3JjZGlyIiB8fCBhY19naXZl bl9zcmNkaXI9IiRzcmNkaXIiCistICAgICAgICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgor LSAgICAgICAgICAuKSAgdG9wX3NyY2Rpcj1gZWNobyAkYWNfZG90c3xzZWQgJ3MlLyQlJSdgIDs7 CistICAgICAgICAgIC8qKSB0b3Bfc3JjZGlyPSIkYWNfZ2l2ZW5fc3JjZGlyIiA7OworLSAgICAg ICAgICAqKSAgdG9wX3NyY2Rpcj0iJGFjX2RvdHMkYWNfZ2l2ZW5fc3JjZGlyIiA7OworLSAgICAg ICAgZXNhYworLSAgICAgICAgIyBUcmVhdCBhIGRpcmVjdG9yeSBhcyBhIFBPIGRpcmVjdG9yeSBp ZiBhbmQgb25seSBpZiBpdCBoYXMgYQorLSAgICAgICAgIyBQT1RGSUxFUy5pbiBmaWxlLiBUaGlz IGFsbG93cyBwYWNrYWdlcyB0byBoYXZlIG11bHRpcGxlIFBPCistICAgICAgICAjIGRpcmVjdG9y aWVzIHVuZGVyIGRpZmZlcmVudCBuYW1lcyBvciBpbiBkaWZmZXJlbnQgbG9jYXRpb25zLgorLSAg ICAgICAgaWYgdGVzdCAtZiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL1BPVEZJTEVTLmluIjsg dGhlbgorLSAgICAgICAgICBybSAtZiAiJGFjX2Rpci9QT1RGSUxFUyIKKy0gICAgICAgICAgdGVz dCAtbiAiJGFzX21lIiAmJiBlY2hvICIkYXNfbWU6IGNyZWF0aW5nICRhY19kaXIvUE9URklMRVMi IHx8IGVjaG8gImNyZWF0aW5nICRhY19kaXIvUE9URklMRVMiCistICAgICAgICAgIGd0X3RhYj1g cHJpbnRmICdcdCdgCistICAgICAgICAgIGNhdCAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL1BP VEZJTEVTLmluIiB8IHNlZCAtZSAiL14jL2QiIC1lICIvXlsgJHtndF90YWJ9XSpcJC9kIiAtZSAi cywuKiwgICAgICR0b3Bfc3JjZGlyLyYgXFxcXCwiIHwgc2VkIC1lICJcJHMvXCguKlwpIFxcXFwv XDEvIiA+ICIkYWNfZGlyL1BPVEZJTEVTIgorLSAgICAgICAgICBQT01BS0VGSUxFREVQUz0iUE9U RklMRVMuaW4iCistICAgICAgICAgICMgQUxMX0xJTkdVQVMsIFBPRklMRVMsIFVQREFURVBPRklM RVMsIERVTU1ZUE9GSUxFUywgR01PRklMRVMgZGVwZW5kCistICAgICAgICAgICMgb24gJGFjX2Rp ciBidXQgZG9uJ3QgZGVwZW5kIG9uIHVzZXItc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24KKy0gICAg ICAgICAgIyBwYXJhbWV0ZXJzLgorLSAgICAgICAgICBpZiB0ZXN0IC1mICIkYWNfZ2l2ZW5fc3Jj ZGlyLyRhY19kaXIvTElOR1VBUyI7IHRoZW4KKy0gICAgICAgICAgICAjIFRoZSBMSU5HVUFTIGZp bGUgY29udGFpbnMgdGhlIHNldCBvZiBhdmFpbGFibGUgbGFuZ3VhZ2VzLgorLSAgICAgICAgICAg IGlmIHRlc3QgLW4gIiRPQlNPTEVURV9BTExfTElOR1VBUyI7IHRoZW4KKy0gICAgICAgICAgICAg IHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBzZXR0aW5nIEFMTF9MSU5HVUFTIGlu IGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIgfHwgZWNobyAic2V0dGluZyBBTExfTElOR1VBUyBp biBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiCistICAgICAgICAgICAgZmkKKy0gICAgICAgICAg ICBBTExfTElOR1VBUz1gc2VkIC1lICIvXiMvZCIgLWUgInMvIy4qLy8iICIkYWNfZ2l2ZW5fc3Jj ZGlyLyRhY19kaXIvTElOR1VBUyJgCistICAgICAgICAgICAgUE9NQUtFRklMRURFUFM9IiRQT01B S0VGSUxFREVQUyBMSU5HVUFTIgorLSAgICAgICAgICBlbHNlCistICAgICAgICAgICAgIyBUaGUg c2V0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMgd2FzIGdpdmVuIGluIGNvbmZpZ3VyZS5pbi4KKy0g ICAgICAgICAgICBBTExfTElOR1VBUz0kT0JTT0xFVEVfQUxMX0xJTkdVQVMKKy0gICAgICAgICAg ZmkKKy0gICAgICAgICAgIyBDb21wdXRlIFBPRklMRVMKKy0gICAgICAgICAgIyBhcyAgICAgICQo Zm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQobGFuZykucG8pCistICAg ICAgICAgICMgQ29tcHV0ZSBVUERBVEVQT0ZJTEVTCistICAgICAgICAgICMgYXMgICAgICAkKGZv cmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykucG8tdXBkYXRlKQorLSAgICAgICAg ICAjIENvbXB1dGUgRFVNTVlQT0ZJTEVTCistICAgICAgICAgICMgYXMgICAgICAkKGZvcmVhY2gg bGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykubm9wKQorLSAgICAgICAgICAjIENvbXB1dGUg R01PRklMRVMKKy0gICAgICAgICAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5H VUFTKSwgJChzcmNkaXIpLyQobGFuZykuZ21vKQorLSAgICAgICAgICBjYXNlICIkYWNfZ2l2ZW5f c3JjZGlyIiBpbgorLSAgICAgICAgICAgIC4pIHNyY2RpcnByZT0gOzsKKy0gICAgICAgICAgICAq KSBzcmNkaXJwcmU9JyQoc3JjZGlyKS8nIDs7CistICAgICAgICAgIGVzYWMKKy0gICAgICAgICAg UE9GSUxFUz0KKy0gICAgICAgICAgVVBEQVRFUE9GSUxFUz0KKy0gICAgICAgICAgRFVNTVlQT0ZJ TEVTPQorLSAgICAgICAgICBHTU9GSUxFUz0KKy0gICAgICAgICAgZm9yIGxhbmcgaW4gJEFMTF9M SU5HVUFTOyBkbworLSAgICAgICAgICAgIFBPRklMRVM9IiRQT0ZJTEVTICRzcmNkaXJwcmUkbGFu Zy5wbyIKKy0gICAgICAgICAgICBVUERBVEVQT0ZJTEVTPSIkVVBEQVRFUE9GSUxFUyAkbGFuZy5w by11cGRhdGUiCistICAgICAgICAgICAgRFVNTVlQT0ZJTEVTPSIkRFVNTVlQT0ZJTEVTICRsYW5n Lm5vcCIKKy0gICAgICAgICAgICBHTU9GSUxFUz0iJEdNT0ZJTEVTICRzcmNkaXJwcmUkbGFuZy5n bW8iCistICAgICAgICAgIGRvbmUKKy0gICAgICAgICAgIyBDQVRBTE9HUyBkZXBlbmRzIG9uIGJv dGggJGFjX2RpciBhbmQgdGhlIHVzZXIncyBMSU5HVUFTCistICAgICAgICAgICMgZW52aXJvbm1l bnQgdmFyaWFibGUuCistICAgICAgICAgIElOU1RfTElOR1VBUz0KKy0gICAgICAgICAgaWYgdGVz dCAtbiAiJEFMTF9MSU5HVUFTIjsgdGhlbgorLSAgICAgICAgICAgIGZvciBwcmVzZW50bGFuZyBp biAkQUxMX0xJTkdVQVM7IGRvCistICAgICAgICAgICAgICB1c2VpdD1ubworLSAgICAgICAgICAg ICAgaWYgdGVzdCAiJVVOU0VUJSIgIT0gIiRMSU5HVUFTIjsgdGhlbgorLSAgICAgICAgICAgICAg ICBkZXNpcmVkbGFuZ3VhZ2VzPSIkTElOR1VBUyIKKy0gICAgICAgICAgICAgIGVsc2UKKy0gICAg ICAgICAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJEFMTF9MSU5HVUFTIgorLSAgICAgICAgICAg ICAgZmkKKy0gICAgICAgICAgICAgIGZvciBkZXNpcmVkbGFuZyBpbiAkZGVzaXJlZGxhbmd1YWdl czsgZG8KKy0gICAgICAgICAgICAgICAgIyBVc2UgdGhlIHByZXNlbnRsYW5nIGNhdGFsb2cgaWYg ZGVzaXJlZGxhbmcgaXMKKy0gICAgICAgICAgICAgICAgIyAgIGEuIGVxdWFsIHRvIHByZXNlbnRs YW5nLCBvcgorLSAgICAgICAgICAgICAgICAjICAgYi4gYSB2YXJpYW50IG9mIHByZXNlbnRsYW5n IChiZWNhdXNlIGluIHRoaXMgY2FzZSwKKy0gICAgICAgICAgICAgICAgIyAgICAgIHByZXNlbnRs YW5nIGNhbiBiZSB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIG1lc3NhZ2VzCistICAgICAgICAgICAg ICAgICMgICAgICB3aGljaCBhcmUgbm90IHRyYW5zbGF0ZWQgaW4gdGhlIGRlc2lyZWRsYW5nIGNh dGFsb2cpLgorLSAgICAgICAgICAgICAgICBjYXNlICIkZGVzaXJlZGxhbmciIGluCistICAgICAg ICAgICAgICAgICAgIiRwcmVzZW50bGFuZyIgfCAiJHByZXNlbnRsYW5nIl8qIHwgIiRwcmVzZW50 bGFuZyIuKiB8ICIkcHJlc2VudGxhbmciQCopCistICAgICAgICAgICAgICAgICAgICB1c2VpdD15 ZXMKKy0gICAgICAgICAgICAgICAgICAgIDs7CistICAgICAgICAgICAgICAgIGVzYWMKKy0gICAg ICAgICAgICAgIGRvbmUKKy0gICAgICAgICAgICAgIGlmIHRlc3QgJHVzZWl0ID0geWVzOyB0aGVu CistICAgICAgICAgICAgICAgIElOU1RfTElOR1VBUz0iJElOU1RfTElOR1VBUyAkcHJlc2VudGxh bmciCistICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgIGRvbmUKKy0gICAgICAgICAgZmkK Ky0gICAgICAgICAgQ0FUQUxPR1M9CistICAgICAgICAgIGlmIHRlc3QgLW4gIiRJTlNUX0xJTkdV QVMiOyB0aGVuCistICAgICAgICAgICAgZm9yIGxhbmcgaW4gJElOU1RfTElOR1VBUzsgZG8KKy0g ICAgICAgICAgICAgIENBVEFMT0dTPSIkQ0FUQUxPR1MgJGxhbmcuZ21vIgorLSAgICAgICAgICAg IGRvbmUKKy0gICAgICAgICAgZmkKKy0gICAgICAgICAgdGVzdCAtbiAiJGFzX21lIiAmJiBlY2hv ICIkYXNfbWU6IGNyZWF0aW5nICRhY19kaXIvTWFrZWZpbGUiIHx8IGVjaG8gImNyZWF0aW5nICRh Y19kaXIvTWFrZWZpbGUiCistICAgICAgICAgIHNlZCAtZSAiL15QT1RGSUxFUyA9L3IgJGFjX2Rp ci9QT1RGSUxFUyIgLWUgIi9eIyBNYWtldmFycy9yICRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9N YWtldmFycyIgLWUgInN8QFBPRklMRVNAfCRQT0ZJTEVTfGciIC1lICJzfEBVUERBVEVQT0ZJTEVT QHwkVVBEQVRFUE9GSUxFU3xnIiAtZSAic3xARFVNTVlQT0ZJTEVTQHwkRFVNTVlQT0ZJTEVTfGci IC1lICJzfEBHTU9GSUxFU0B8JEdNT0ZJTEVTfGciIC1lICJzfEBDQVRBTE9HU0B8JENBVEFMT0dT fGciIC1lICJzfEBQT01BS0VGSUxFREVQU0B8JFBPTUFLRUZJTEVERVBTfGciICIkYWNfZGlyL01h a2VmaWxlLmluIiA+ICIkYWNfZGlyL01ha2VmaWxlIgorLSAgICAgICAgICBmb3IgZiBpbiAiJGFj X2dpdmVuX3NyY2Rpci8kYWNfZGlyIi9SdWxlcy0qOyBkbworLSAgICAgICAgICAgIGlmIHRlc3Qg LWYgIiRmIjsgdGhlbgorLSAgICAgICAgICAgICAgY2FzZSAiJGYiIGluCistICAgICAgICAgICAg ICAgICoub3JpZyB8ICouYmFrIHwgKn4pIDs7CistICAgICAgICAgICAgICAgICopIGNhdCAiJGYi ID4+ICIkYWNfZGlyL01ha2VmaWxlIiA7OworLSAgICAgICAgICAgICAgZXNhYworLSAgICAgICAg ICAgIGZpCistICAgICAgICAgIGRvbmUKKy0gICAgICAgIGZpCistICAgICAgICA7OworLSAgICAg IGVzYWMKKy0gICAgZG9uZSA7OworLSAgICAic3RhbXAtaCI6QykgZWNobyB0aW1lc3RhbXAgPiBz dGFtcC1oIDs7CistCistICBlc2FjCistZG9uZSAjIGZvciBhY190YWcKKy0KKy0KKy1hc19mbl9l eGl0IDAKKy1fQUNFT0YKKy1hY19jbGVhbl9maWxlcz0kYWNfY2xlYW5fZmlsZXNfc2F2ZQorLQor LXRlc3QgJGFjX3dyaXRlX2ZhaWwgPSAwIHx8CistICBhc19mbl9lcnJvciAkPyAid3JpdGUgZmFp bHVyZSBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKKy0KKy0KKy0jIGNvbmZp Z3VyZSBpcyB3cml0aW5nIHRvIGNvbmZpZy5sb2csIGFuZCB0aGVuIGNhbGxzIGNvbmZpZy5zdGF0 dXMuCistIyBjb25maWcuc3RhdHVzIGRvZXMgaXRzIG93biByZWRpcmVjdGlvbiwgYXBwZW5kaW5n IHRvIGNvbmZpZy5sb2cuCistIyBVbmZvcnR1bmF0ZWx5LCBvbiBET1MgdGhpcyBmYWlscywgYXMg Y29uZmlnLmxvZyBpcyBzdGlsbCBrZXB0IG9wZW4KKy0jIGJ5IGNvbmZpZ3VyZSwgc28gY29uZmln LnN0YXR1cyB3b24ndCBiZSBhYmxlIHRvIHdyaXRlIHRvIGl0OyBpdHMKKy0jIG91dHB1dCBpcyBz aW1wbHkgZGlzY2FyZGVkLiAgU28gd2UgZXhlYyB0aGUgRkQgdG8gL2Rldi9udWxsLAorLSMgZWZm ZWN0aXZlbHkgY2xvc2luZyBjb25maWcubG9nLCBzbyBpdCBjYW4gYmUgcHJvcGVybHkgKHJlKW9w ZW5lZCBhbmQKKy0jIGFwcGVuZGVkIHRvIGJ5IGNvbmZpZy5zdGF0dXMuICBXaGVuIGNvbWluZyBi YWNrIHRvIGNvbmZpZ3VyZSwgd2UKKy0jIG5lZWQgdG8gbWFrZSB0aGUgRkQgYXZhaWxhYmxlIGFn YWluLgorLWlmIHRlc3QgIiRub19jcmVhdGUiICE9IHllczsgdGhlbgorLSAgYWNfY3Nfc3VjY2Vz cz06CistICBhY19jb25maWdfc3RhdHVzX2FyZ3M9CistICB0ZXN0ICIkc2lsZW50IiA9IHllcyAm JgorLSAgICBhY19jb25maWdfc3RhdHVzX2FyZ3M9IiRhY19jb25maWdfc3RhdHVzX2FyZ3MgLS1x dWlldCIKKy0gIGV4ZWMgNT4vZGV2L251bGwKKy0gICRTSEVMTCAkQ09ORklHX1NUQVRVUyAkYWNf Y29uZmlnX3N0YXR1c19hcmdzIHx8IGFjX2NzX3N1Y2Nlc3M9ZmFsc2UKKy0gIGV4ZWMgNT4+Y29u ZmlnLmxvZworLSAgIyBVc2UgfHwsIG5vdCAmJiwgdG8gYXZvaWQgZXhpdGluZyBmcm9tIHRoZSBp ZiB3aXRoICQ/ID0gMSwgd2hpY2gKKy0gICMgd291bGQgbWFrZSBjb25maWd1cmUgZmFpbCBpZiB0 aGlzIGlzIHRoZSBsYXN0IGluc3RydWN0aW9uLgorLSAgJGFjX2NzX3N1Y2Nlc3MgfHwgYXNfZm5f ZXhpdCAxCistZmkKKy1pZiB0ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMiICYmIHRlc3Qg IiRlbmFibGVfb3B0aW9uX2NoZWNraW5nIiAhPSBubzsgdGhlbgorLSAgeyBwcmludGYgIiVzXG4i ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRp b25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mNQorLXByaW50ZiAiJXNcbiIgIiRhc19tZTog V0FSTklORzogdW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgPiYy O30KKy1maQorLQorLQorZGlmZiAtLWdpdCBhL2pvYnMuYyBiL2pvYnMuYworLS0tIGEvam9icy5j CisrKysgYi9qb2JzLmMKK0BAIC0yODM5LDcgKzI4MzksNyBAQCB3YWl0X2Zvcl9iYWNrZ3JvdW5k X3BpZHMgKHN0cnVjdCBwcm9jc3RhdCAqcHMpCisgCSAgcHMtPnBpZCA9IHBpZDsKKyAJICBwcy0+ c3RhdHVzID0gKHIgPCAwIHx8IHIgPiAyNTYpID8gMTI3IDogcjsKKyAJfQorLSAgICAgIGlmIChy ID09IC0xICYmIGVycm5vID09IEVDSElMRCkKKysgICAgICBpZiAoKHIgPCAwIHx8IHIgPiAyNTYp ICYmIGVycm5vID09IEVDSElMRCkKKyAJeworIAkgIC8qIElmIHdlJ3JlIG1pc3Rha2VuIGFib3V0 IGpvYiBzdGF0ZSwgY29tcGVuc2F0ZS4gKi8KKyAJICBjaGVja19hc3luYyA9IDA7CitkaWZmIC0t Z2l0IGEvcGF0Y2hsZXZlbC5oIGIvcGF0Y2hsZXZlbC5oCistLS0gYS9wYXRjaGxldmVsLmgKKysr KyBiL3BhdGNobGV2ZWwuaAorQEAgLTI1LDYgKzI1LDYgQEAKKyAgICByZWdleHAgYF4jZGVmaW5l WyAJXSpQQVRDSExFVkVMJywgc2luY2UgdGhhdCdzIHdoYXQgc3VwcG9ydC9ta3ZlcnNpb24uc2gK KyAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJz aW9uIHN0cmluZykuICovCisgCistI2RlZmluZSBQQVRDSExFVkVMIDkKKysjZGVmaW5lIFBBVENI TEVWRUwgMTAKKyAKKyAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KCmRpZmYgLS1naXQgYS9i YXNoLTUuMy1wYXRjaC0xMS5wYXRjaCBiL2Jhc2gtNS4zLXBhdGNoLTExLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NGRmN2QKLS0tIC9kZXYvbnVsbAorKysgYi9i YXNoLTUuMy1wYXRjaC0xMS5wYXRjaApAQCAtMCwwICsxLDQxIEBACitkaWZmIC0tZ2l0IGEvYnVp bHRpbnMvbWFwZmlsZS5kZWYgYi9idWlsdGlucy9tYXBmaWxlLmRlZgorLS0tIGEvYnVpbHRpbnMv bWFwZmlsZS5kZWYKKysrKyBiL2J1aWx0aW5zL21hcGZpbGUuZGVmCitAQCAtMTUzLDkgKzE1Myw3 IEBAIG1hcGZpbGUgKGludCBmZCwgbG9uZyBsaW5lX2NvdW50X2dvYWwsIGxvbmcgb3JpZ2luLCBs b25nIG5za2lwLCBsb25nIGNhbGxiYWNrX3F1CisgICBsaW5lX2xlbmd0aCA9IDA7CisgICB1bmJ1 ZmZlcmVkX3JlYWQgPSAwOworIAorLSAgLyogVGhlIGZvbGxvd2luZyBjaGVjayBzaG91bGQgYmUg ZG9uZSBiZWZvcmUgcmVhZGluZyBhbnkgbGluZXMuICBEb2luZyBpdAorLSAgICAgaGVyZSBhbGxv d3MgdXMgdG8gY2FsbCBiaW5kX2FycmF5X2VsZW1lbnQgaW5zdGVhZCBvZiBiaW5kX2FycmF5X3Zh cmlhYmxlCistICAgICBhbmQgc2tpcCB0aGUgdmFyaWFibGUgbG9va3VwIG9uIGV2ZXJ5IGNhbGwu ICovCisrICAvKiBUaGUgZm9sbG93aW5nIGNoZWNrIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFk aW5nIGFueSBsaW5lcy4gKi8KKyAgIGVudHJ5ID0gYnVpbHRpbl9maW5kX2luZGV4ZWRfYXJyYXkg KGFycmF5X25hbWUsIGZsYWdzICYgTUFQRl9DTEVBUkFSUkFZKTsKKyAgIGlmIChlbnRyeSA9PSAw KQorICAgICByZXR1cm4gRVhFQ1VUSU9OX0ZBSUxVUkU7CitAQCAtMjAxLDggKzE5OSwxMyBAQCBt YXBmaWxlIChpbnQgZmQsIGxvbmcgbGluZV9jb3VudF9nb2FsLCBsb25nIG9yaWdpbiwgbG9uZyBu c2tpcCwgbG9uZyBjYWxsYmFja19xdQorIAkgIHJ1bl9jYWxsYmFjayAoY2FsbGJhY2ssIGFycmF5 X2luZGV4LCBsaW5lKTsKKyAJfQorIAorLSAgICAgIC8qIFhYWCAtIGJhZCB0aGluZ3MgY2FuIGhh cHBlbiBpZiB0aGUgY2FsbGJhY2sgbW9kaWZpZXMgRU5UUlksIGUuZy4sCistCSB1bnNldHRpbmcg aXQgb3IgY2hhbmdpbmcgaXQgdG8gYSBub24taW5kZXhlZC1hcnJheSB0eXBlLiAqLworKyAgICAg IC8qIEJhZCB0aGluZ3MgY2FuIGhhcHBlbiBpZiB0aGUgY2FsbGJhY2sgbW9kaWZpZXMgRU5UUlks IGUuZy4sCisrCSB1bnNldHRpbmcgaXQgb3IgY2hhbmdpbmcgaXQgdG8gYSBub24taW5kZXhlZC1h cnJheSB0eXBlLCBzbyB3ZQorKwkgbG9vayBpdCB1cCBhZ2FpbiBldmVyeSB0aW1lIHdlIG5lZWQg dG8gYXNzaWduIHNvbWV0aGluZyAqLworKyAgICAgIGVudHJ5ID0gYmluZF9hcnJheV92YXJpYWJs ZSAoYXJyYXlfbmFtZSwgYXJyYXlfaW5kZXgsIGxpbmUsIDApOworKyAgICAgIGlmIChlbnRyeSA9 PSAwIHx8IEFTU0lHTl9ESVNBTExPV0VEIChlbnRyeSwgMCkpCisrCXJldHVybiBFWEVDVVRJT05f RkFJTFVSRTsKKysKKyAgICAgICBiaW5kX2FycmF5X2VsZW1lbnQgKGVudHJ5LCBhcnJheV9pbmRl eCwgbGluZSwgMCk7CisgCisgICAgICAgLyogSGF2ZSB3ZSBleGNlZWRlZCAjIG9mIGxpbmVzIHRv IHN0b3JlPyAqLworZGlmZiAtLWdpdCBhL3BhdGNobGV2ZWwuaCBiL3BhdGNobGV2ZWwuaAorLS0t IGEvcGF0Y2hsZXZlbC5oCisrKysgYi9wYXRjaGxldmVsLmgKK0BAIC0yNSw2ICsyNSw2IEBACisg ICAgcmVnZXhwIGBeI2RlZmluZVsgCV0qUEFUQ0hMRVZFTCcsIHNpbmNlIHRoYXQncyB3aGF0IHN1 cHBvcnQvbWt2ZXJzaW9uLnNoCisgICAgbG9va3MgZm9yIHRvIGZpbmQgdGhlIHBhdGNoIGxldmVs IChmb3IgdGhlIHNjY3MgdmVyc2lvbiBzdHJpbmcpLiAqLworIAorLSNkZWZpbmUgUEFUQ0hMRVZF TCAxMAorKyNkZWZpbmUgUEFUQ0hMRVZFTCAxMQorIAorICNlbmRpZiAvKiBfUEFUQ0hMRVZFTF9I XyAqLwoKZGlmZiAtLWdpdCBhL2Jhc2gtNS4zLXBhdGNoLTEyLnBhdGNoIGIvYmFzaC01LjMtcGF0 Y2gtMTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI5ZTQ1Mwot LS0gL2Rldi9udWxsCisrKyBiL2Jhc2gtNS4zLXBhdGNoLTEyLnBhdGNoCkBAIC0wLDAgKzEsNDUg QEAKK2RpZmYgLS1naXQgYS9leGVjdXRlX2NtZC5jIGIvZXhlY3V0ZV9jbWQuYworLS0tIGEvZXhl Y3V0ZV9jbWQuYworKysrIGIvZXhlY3V0ZV9jbWQuYworQEAgLTE2NDMsMTMgKzE2NDMsMTMgQEAg ZXhlY3V0ZV9pbl9zdWJzaGVsbCAoQ09NTUFORCAqY29tbWFuZCwgaW50IGFzeW5jaHJvbm91cywg aW50IHBpcGVfaW4sIGludCBwaXBlX28KKyAKKyAgIGlmICh1c2VyX3N1YnNoZWxsKQorICAgICB7 CistICAgICAgc3Vic2hlbGxfZW52aXJvbm1lbnQgPSBTVUJTSEVMTF9QQVJFTjsJLyogWFhYICov CisrICAgICAgc3Vic2hlbGxfZW52aXJvbm1lbnQgPSBTVUJTSEVMTF9QQVJFTnxTVUJTSEVMTF9J R05UUkFQOwkvKiBYWFggKi8KKyAgICAgICBpZiAoYXN5bmNocm9ub3VzKQorIAlzdWJzaGVsbF9l bnZpcm9ubWVudCB8PSBTVUJTSEVMTF9BU1lOQzsKKyAgICAgfQorICAgZWxzZQorICAgICB7Cist ICAgICAgc3Vic2hlbGxfZW52aXJvbm1lbnQgPSAwOwkJCS8qIFhYWCAqLworKyAgICAgIHN1YnNo ZWxsX2Vudmlyb25tZW50ID0gU1VCU0hFTExfSUdOVFJBUDsJCQkvKiBYWFggKi8KKyAgICAgICBp ZiAoYXN5bmNocm9ub3VzKQorIAlzdWJzaGVsbF9lbnZpcm9ubWVudCB8PSBTVUJTSEVMTF9BU1lO QzsKKyAgICAgICBpZiAocGlwZV9pbiAhPSBOT19QSVBFIHx8IHBpcGVfb3V0ICE9IE5PX1BJUEUp CitkaWZmIC0tZ2l0IGEvcGF0Y2hsZXZlbC5oIGIvcGF0Y2hsZXZlbC5oCistLS0gYS9wYXRjaGxl dmVsLmgKKysrKyBiL3BhdGNobGV2ZWwuaAorQEAgLTI1LDYgKzI1LDYgQEAKKyAgICByZWdleHAg YF4jZGVmaW5lWyAJXSpQQVRDSExFVkVMJywgc2luY2UgdGhhdCdzIHdoYXQgc3VwcG9ydC9ta3Zl cnNpb24uc2gKKyAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUg c2NjcyB2ZXJzaW9uIHN0cmluZykuICovCisgCistI2RlZmluZSBQQVRDSExFVkVMIDExCisrI2Rl ZmluZSBQQVRDSExFVkVMIDEyCisgCisgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCitkaWZm IC0tZ2l0IGEvc2lnLmMgYi9zaWcuYworLS0tIGEvc2lnLmMKKysrKyBiL3NpZy5jCitAQCAtNjM4 LDcgKzYzOCwxMCBAQCB0ZXJtc2lnX2hhbmRsZXIgKGludCBzaWcpCisgICBpbnRlcnJ1cHRfZXhl Y3V0aW9uID0gcmV0YWluX2ZpZm9zID0gZXhlY3V0aW5nX2Z1bnN1YiA9IDA7CisgICBjb21zdWJf aWdub3JlX3JldHVybiA9IHJldHVybl9jYXRjaF9mbGFnID0gd2FpdF9pbnRyX2ZsYWcgPSAwOwor IAorLSAgcnVuX2V4aXRfdHJhcCAoKTsJLyogWFhYIC0gcnVuIGV4aXQgdHJhcCBwb3NzaWJseSBp biBzaWduYWwgY29udGV4dD8gKi8KKysgIC8qIERvbid0IHJ1biB0aGUgZXhpdCB0cmFwIGlmIHdl J3JlIHN1cHBvc2VkIHRvIGJlIGlnbm9yaW5nIHRyYXBzIGluIGEKKysgICAgIHN1YnNoZWxsIGVu dmlyb25tZW50LiAqLworKyAgaWYgKChzdWJzaGVsbF9lbnZpcm9ubWVudCAmIFNVQlNIRUxMX0lH TlRSQVApID09IDApCisrICAgIHJ1bl9leGl0X3RyYXAgKCk7CS8qIFhYWCAtIHJ1biBleGl0IHRy YXAgcG9zc2libHkgaW4gc2lnbmFsIGNvbnRleHQ/ICovCisgCisgICBraWxsX3NoZWxsIChzaWcp OworIH0KCmRpZmYgLS1naXQgYS9iYXNoLTUuMy1wYXRjaC0xMy5wYXRjaCBiL2Jhc2gtNS4zLXBh dGNoLTEzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYmU1NWMK LS0tIC9kZXYvbnVsbAorKysgYi9iYXNoLTUuMy1wYXRjaC0xMy5wYXRjaApAQCAtMCwwICsxLDI3 IEBACitkaWZmIC0tZ2l0IGEvYnVpbHRpbnMvcmVhZC5kZWYgYi9idWlsdGlucy9yZWFkLmRlZgor LS0tIGEvYnVpbHRpbnMvcmVhZC5kZWYKKysrKyBiL2J1aWx0aW5zL3JlYWQuZGVmCitAQCAtNzg4 LDggKzc4OCwxMSBAQCByZWFkX2J1aWx0aW4gKFdPUkRfTElTVCAqbGlzdCkKKyAJICBjaGFyICp4 OworIAkgIHggPSAoY2hhciAqKXhyZWFsbG9jIChpbnB1dF9zdHJpbmcsIHNpemUgKz0gMTI4KTsK KyAKKy0JICAvKiBPbmx5IG5lZWQgdG8gY2hhbmdlIHVud2luZC1wcm90ZWN0IGlmIGlucHV0X3N0 cmluZyBjaGFuZ2VzICovCisrI2lmIDAKKysJICAvKiBUaGlzIGlzLCBpbiB0aGVvcnksIHVuZGVm aW5lZCBiZWhhdmlvciwgc2luY2UgaW5wdXRfc3RyaW5nIG1heQorKwkgICAgIGhhdmUgYmVlbiBm cmVlZC4gKi8KKyAJICBpZiAoeCAhPSBpbnB1dF9zdHJpbmcpCisrI2VuZGlmCisgCSAgICB7Cisg CSAgICAgIGlucHV0X3N0cmluZyA9IHg7CisgCSAgICAgIHJlbW92ZV91bndpbmRfcHJvdGVjdCAo KTsKK2RpZmYgLS1naXQgYS9wYXRjaGxldmVsLmggYi9wYXRjaGxldmVsLmgKKy0tLSBhL3BhdGNo bGV2ZWwuaAorKysrIGIvcGF0Y2hsZXZlbC5oCitAQCAtMjUsNiArMjUsNiBAQAorICAgIHJlZ2V4 cCBgXiNkZWZpbmVbIAldKlBBVENITEVWRUwnLCBzaW5jZSB0aGF0J3Mgd2hhdCBzdXBwb3J0L21r dmVyc2lvbi5zaAorICAgIGxvb2tzIGZvciB0byBmaW5kIHRoZSBwYXRjaCBsZXZlbCAoZm9yIHRo ZSBzY2NzIHZlcnNpb24gc3RyaW5nKS4gKi8KKyAKKy0jZGVmaW5lIFBBVENITEVWRUwgMTIKKysj ZGVmaW5lIFBBVENITEVWRUwgMTMKKyAKKyAjZW5kaWYgLyogX1BBVENITEVWRUxfSF8gKi8KCmRp ZmYgLS1naXQgYS9iYXNoLTUuMy1wYXRjaC0xNC5wYXRjaCBiL2Jhc2gtNS4zLXBhdGNoLTE0LnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4ZWE0NzEKLS0tIC9kZXYv bnVsbAorKysgYi9iYXNoLTUuMy1wYXRjaC0xNC5wYXRjaApAQCAtMCwwICsxLDQwIEBACitkaWZm IC0tZ2l0IGEvYnVpbHRpbnMvbWFwZmlsZS5kZWYgYi9idWlsdGlucy9tYXBmaWxlLmRlZgorLS0t IGEvYnVpbHRpbnMvbWFwZmlsZS5kZWYKKysrKyBiL2J1aWx0aW5zL21hcGZpbGUuZGVmCitAQCAt MTk3LDE2ICsxOTcsMTYgQEAgbWFwZmlsZSAoaW50IGZkLCBsb25nIGxpbmVfY291bnRfZ29hbCwg bG9uZyBvcmlnaW4sIGxvbmcgbnNraXAsIGxvbmcgY2FsbGJhY2tfcXUKKyAJICAgIHpzeW5jZmQg KGZkKTsKKyAKKyAJICBydW5fY2FsbGJhY2sgKGNhbGxiYWNrLCBhcnJheV9pbmRleCwgbGluZSk7 CistCX0KKy0KKy0gICAgICAvKiBCYWQgdGhpbmdzIGNhbiBoYXBwZW4gaWYgdGhlIGNhbGxiYWNr IG1vZGlmaWVzIEVOVFJZLCBlLmcuLAorLQkgdW5zZXR0aW5nIGl0IG9yIGNoYW5naW5nIGl0IHRv IGEgbm9uLWluZGV4ZWQtYXJyYXkgdHlwZSwgc28gd2UKKy0JIGxvb2sgaXQgdXAgYWdhaW4gZXZl cnkgdGltZSB3ZSBuZWVkIHRvIGFzc2lnbiBzb21ldGhpbmcgKi8KKy0gICAgICBlbnRyeSA9IGJp bmRfYXJyYXlfdmFyaWFibGUgKGFycmF5X25hbWUsIGFycmF5X2luZGV4LCBsaW5lLCAwKTsKKy0g ICAgICBpZiAoZW50cnkgPT0gMCB8fCBBU1NJR05fRElTQUxMT1dFRCAoZW50cnksIDApKQorLQly ZXR1cm4gRVhFQ1VUSU9OX0ZBSUxVUkU7CisgCistICAgICAgYmluZF9hcnJheV9lbGVtZW50IChl bnRyeSwgYXJyYXlfaW5kZXgsIGxpbmUsIDApOworKwkgIC8qIEJhZCB0aGluZ3MgY2FuIGhhcHBl biBpZiB0aGUgY2FsbGJhY2sgbW9kaWZpZXMgRU5UUlksIGUuZy4sCisrCSAgICAgdW5zZXR0aW5n IGl0IG9yIGNoYW5naW5nIGl0IHRvIGEgbm9uLWluZGV4ZWQtYXJyYXkgdHlwZSwgc28gd2UKKysJ ICAgICBsb29rIGl0IHVwIGFnYWluIGV2ZXJ5IHRpbWUgd2UgbmVlZCB0byBhc3NpZ24gc29tZXRo aW5nICovCisrCSAgZW50cnkgPSBiaW5kX2FycmF5X3ZhcmlhYmxlIChhcnJheV9uYW1lLCBhcnJh eV9pbmRleCwgbGluZSwgMCk7CisrCSAgaWYgKGVudHJ5ID09IDAgfHwgQVNTSUdOX0RJU0FMTE9X RUQgKGVudHJ5LCAwKSkKKysJICAgIHJldHVybiBFWEVDVVRJT05fRkFJTFVSRTsKKysJfQorKyAg ICAgIGVsc2UKKysJYmluZF9hcnJheV9lbGVtZW50IChlbnRyeSwgYXJyYXlfaW5kZXgsIGxpbmUs IDApOworIAorICAgICAgIC8qIEhhdmUgd2UgZXhjZWVkZWQgIyBvZiBsaW5lcyB0byBzdG9yZT8g Ki8KKyAgICAgICBsaW5lX2NvdW50Kys7CitkaWZmIC0tZ2l0IGEvcGF0Y2hsZXZlbC5oIGIvcGF0 Y2hsZXZlbC5oCistLS0gYS9wYXRjaGxldmVsLmgKKysrKyBiL3BhdGNobGV2ZWwuaAorQEAgLTI1 LDYgKzI1LDYgQEAKKyAgICByZWdleHAgYF4jZGVmaW5lWyAJXSpQQVRDSExFVkVMJywgc2luY2Ug dGhhdCdzIHdoYXQgc3VwcG9ydC9ta3ZlcnNpb24uc2gKKyAgICBsb29rcyBmb3IgdG8gZmluZCB0 aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUgc2NjcyB2ZXJzaW9uIHN0cmluZykuICovCisgCistI2Rl ZmluZSBQQVRDSExFVkVMIDEzCisrI2RlZmluZSBQQVRDSExFVkVMIDE0CisgCisgI2VuZGlmIC8q IF9QQVRDSExFVkVMX0hfICovCgpkaWZmIC0tZ2l0IGEvYmFzaC01LjMtcGF0Y2gtMTUucGF0Y2gg Yi9iYXNoLTUuMy1wYXRjaC0xNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4zZDU0MmI2Ci0tLSAvZGV2L251bGwKKysrIGIvYmFzaC01LjMtcGF0Y2gtMTUucGF0Y2gK QEAgLTAsMCArMSw0NCBAQAorZGlmZiAtLWdpdCBhL2J1aWx0aW5zL3JlYWQuZGVmIGIvYnVpbHRp bnMvcmVhZC5kZWYKKy0tLSBhL2J1aWx0aW5zL3JlYWQuZGVmCisrKysgYi9idWlsdGlucy9yZWFk LmRlZgorQEAgLTUzOCw3ICs1MzgsOCBAQCByZWFkX2J1aWx0aW4gKFdPUkRfTElTVCAqbGlzdCkK KyAJICAgICBzbyB3ZSBoYXZlIHRvIHNhdmUgaW5wdXRfc3RyaW5nIHRlbXBvcmFyaWx5LCBydW4g dGhlIHVud2luZC0KKyAJICAgICBwcm90ZWN0cywgdGhlbiByZXN0b3JlIGlucHV0X3N0cmluZyBz byB3ZSBjYW4gdXNlIGl0IGxhdGVyICovCisgCSAgb3JpZ19pbnB1dF9zdHJpbmcgPSAwOworLQkg IGlucHV0X3N0cmluZ1tpXSA9ICdcMCc7CS8qIG1ha2Ugc3VyZSBpdCdzIHRlcm1pbmF0ZWQgKi8K KysJICBpZiAoaSA+PSAwKQorKwkgICAgaW5wdXRfc3RyaW5nW2ldID0gJ1wwJzsJLyogbWFrZSBz dXJlIGl0J3MgdGVybWluYXRlZCAqLworIAkgIGlmIChpID09IDApCisgCSAgICB7CisgCSAgICAg IHQgPSAoY2hhciAqKXhtYWxsb2MgKDEpOworQEAgLTU5Miw4ICs1OTMsNyBAQCByZWFkX2J1aWx0 aW4gKFdPUkRfTElTVCAqbGlzdCkKKyAJICB0ZXJtc2F2ZS5hdHRycyA9IHR0YXR0cnM7CisgCisg CSAgdHRzZXQgPSB0dGF0dHJzOwkgIAorLQkgIGkgPSBzaWxlbnQgPyB0dGZkX2NicmVhayAoZmQs ICZ0dHNldCkgOiB0dGZkX29uZWNoYXIgKGZkLCAmdHRzZXQpOworLQkgIGlmIChpIDwgMCkKKysJ ICBpZiAoKHNpbGVudCA/IHR0ZmRfY2JyZWFrIChmZCwgJnR0c2V0KSA6IHR0ZmRfb25lY2hhciAo ZmQsICZ0dHNldCkpIDwgMCkKKyAJICAgIHNoX3R0eWVycm9yICgxKTsKKyAJICB0dHlfbW9kaWZp ZWQgPSAxOworIAkgIGFkZF91bndpbmRfcHJvdGVjdCAodXdfdHR5cmVzdG9yZSwgJnRlcm1zYXZl KTsKK0BAIC02MDksOCArNjA5LDcgQEAgcmVhZF9idWlsdGluIChXT1JEX0xJU1QgKmxpc3QpCisg ICAgICAgdGVybXNhdmUuYXR0cnMgPSB0dGF0dHJzOworIAorICAgICAgIHR0c2V0ID0gdHRhdHRy czsKKy0gICAgICBpID0gdHRmZF9ub2VjaG8gKGZkLCAmdHRzZXQpOwkJCS8qIHR0bm9lY2hvICgp OyAqLworLSAgICAgIGlmIChpIDwgMCkKKysgICAgICBpZiAodHRmZF9ub2VjaG8gKGZkLCAmdHRz ZXQpIDwgMCkKKyAJc2hfdHR5ZXJyb3IgKDEpOworIAorICAgICAgIHR0eV9tb2RpZmllZCA9IDE7 CitkaWZmIC0tZ2l0IGEvcGF0Y2hsZXZlbC5oIGIvcGF0Y2hsZXZlbC5oCistLS0gYS9wYXRjaGxl dmVsLmgKKysrKyBiL3BhdGNobGV2ZWwuaAorQEAgLTI1LDYgKzI1LDYgQEAKKyAgICByZWdleHAg YF4jZGVmaW5lWyAJXSpQQVRDSExFVkVMJywgc2luY2UgdGhhdCdzIHdoYXQgc3VwcG9ydC9ta3Zl cnNpb24uc2gKKyAgICBsb29rcyBmb3IgdG8gZmluZCB0aGUgcGF0Y2ggbGV2ZWwgKGZvciB0aGUg c2NjcyB2ZXJzaW9uIHN0cmluZykuICovCisgCistI2RlZmluZSBQQVRDSExFVkVMIDE0CisrI2Rl ZmluZSBQQVRDSExFVkVMIDE1CisgCisgI2VuZGlmIC8qIF9QQVRDSExFVkVMX0hfICovCgpkaWZm IC0tZ2l0IGEvYmFzaC5zcGVjIGIvYmFzaC5zcGVjCmluZGV4IGMzOTk3YzEuLjZlZmUxN2UgMTAw NjQ0Ci0tLSBhL2Jhc2guc3BlYworKysgYi9iYXNoLnNwZWMKQEAgLTEsMTIgKzEsMTIgQEAKICMl IGRlZmluZSBiZXRhX3RhZyByYzIKLSVkZWZpbmUgcGF0Y2hsZXZlbCA5CislZGVmaW5lIHBhdGNo bGV2ZWwgMTUKICVkZWZpbmUgYmFzZXZlcnNpb24gNS4zCiAlYmNvbmRfd2l0aG91dCB0ZXN0cwog CiBWZXJzaW9uOiAle2Jhc2V2ZXJzaW9ufS4le3BhdGNobGV2ZWx9CiBOYW1lOiBiYXNoCiBTdW1t YXJ5OiBUaGUgR05VIEJvdXJuZSBBZ2FpbiBzaGVsbAotUmVsZWFzZTogMyV7P2Rpc3R9CitSZWxl YXNlOiAxJXs/ZGlzdH0KIExpY2Vuc2U6IEdQTC0zLjAtb3ItbGF0ZXIKIFVybDogaHR0cHM6Ly93 d3cuZ251Lm9yZy9zb2Z0d2FyZS9iYXNoCiBTb3VyY2UwOiBodHRwczovL2Z0cC5nbnUub3JnL2du dS9iYXNoL2Jhc2gtJXtiYXNldmVyc2lvbn0udGFyLmd6CkBAIC0zMjMsNiArMzIzLDkgQEAgZW5k CiAle19saWJkaXJ9L3BrZ2NvbmZpZy8le25hbWV9LnBjCiAKICVjaGFuZ2Vsb2cKKyogVHVlIEp1 biAzMCAyMDI2IFNpdGVzaHdhciBWYXNoaXNodCA8c3Zhc2hpc2h0QHJlZGhhdC5jb20+IC0gNS4z LjE1LTEKKy0gVXBkYXRlIHRvIGJhc2gtNS4zIHBhdGNobGV2ZWwgMTUKKwogKiBGcmkgSmFuIDE2 IDIwMjYgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9y Zz4gLSA1LjMuOS0zCiAtIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lr aS9GZWRvcmFfNDRfTWFzc19SZWJ1aWxkCiAK