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: Michal Ruprich To: git-commits@fedoraproject.org Subject: [rpms/rsync] rawhide: Fixing a path traversal regression Date: Tue, 08 Sep 2026 12:10:36 GMT Message-ID: <178886943697.1.17842912453025405616.rpms-rsync-a6fe29a20ac2@fedoraproject.org> List-ID: X-Git-Repo: rpms/rsync X-Git-Branch: rawhide X-Git-Rev: a6fe29a20ac288df849c4c9186e37e3a158551ef QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvcnN5bmMKQnJhbmNo IDogcmF3aGlkZQpDb21taXQgOiBhNmZlMjlhMjBhYzI4OGRmODQ5YzRjOTE4NmUzN2UzYTE1ODU1 MWVmCkF1dGhvciA6IE1pY2hhbCBSdXByaWNoIDxtcnVwcmljaEByZWRoYXQuY29tPgpEYXRlICAg OiAyMDI2LTA5LTA4VDExOjUwOjI3KzAyOjAwClN0YXRzICA6ICs5NDIvLTEgaW4gMiBmaWxlKHMp ClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvcnN5bmMvYy9hNmZl MjlhMjBhYzI4OGRmODQ5YzRjOTE4NmUzN2UzYTE1ODU1MWVmP2JyYW5jaD1yYXdoaWRlCgpMb2c6 CkZpeGluZyBhIHBhdGggdHJhdmVyc2FsIHJlZ3Jlc3Npb24KCi0tLQpkaWZmIC0tZ2l0IGEvcnN5 bmMtMy41LjAtb19wYXRoLWRpci10cmF2ZXJzYWwucGF0Y2ggYi9yc3luYy0zLjUuMC1vX3BhdGgt ZGlyLXRyYXZlcnNhbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42 ZTBmM2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvcnN5bmMtMy41LjAtb19wYXRoLWRpci10cmF2ZXJz YWwucGF0Y2gKQEAgLTAsMCArMSw5MzIgQEAKK2RpZmYgLS1naXQgYS9TRUNVUklUWS5tZCBiL1NF Q1VSSVRZLm1kCitpbmRleCAyMzIzYmJmLi5iY2M4NDkxIDEwMDY0NAorLS0tIGEvU0VDVVJJVFku bWQKKysrKyBiL1NFQ1VSSVRZLm1kCitAQCAtMTQ2LDI4ICsxNDYsMjkgQEAgZm9sbG93aW5nIHN5 bWxpbmtzIGJ5IGRlc2lnbi4KKyAKKyAjIyMgVGhlIG1lY2hhbmlzbQorIAorLVJlc29sdXRpb24g b2YgYXR0YWNrZXItaW5mbHVlbmNlYWJsZSBwYXRocyBnb2VzIHRocm91Z2ggYHNlY3VyZV9yZWxh dGl2ZV9vcGVuKClgCistYW5kIHRoZSBgZG9fKl9hdCgpYCB3cmFwcGVycyBpbiBgc3lzY2FsbC5j YCwgbmV2ZXIgYSByYXcgYG9wZW4oKWAvYHJlbmFtZSgpYC8KKy1gY2htb2QoKWAgb24gYSBmdWxs IHBhdGggc3RyaW5nLiBUaGUgcHJpbmNpcGxlIGlzOiAqKnRydXN0IHRoZSBvcGVyYXRvci1uYW1l ZAorLXRyYW5zZmVyIHJvb3QsIGFuZCBjb25maW5lIGFsbCByZXNvbHV0aW9uIGJlbmVhdGggaXQq KiwgcmVqZWN0aW5nIGVzY2FwZXMgdmlhCistYC4uYCBhYm92ZSB0aGUgYW5jaG9yLCBhYnNvbHV0 ZSBzeW1saW5rcywgb3Igb3V0LW9mLXRyZWUgc3ltbGlua3MuCistYHNlY3VyZV9yZWxhdGl2ZV9v cGVuKClgIHJlc29sdmVzIHRoZSBwYXJlbnQgZGlyZWN0b3J5IGJ5IHdhbGtpbmcgaXQgb25lCist Y29tcG9uZW50IGF0IGEgdGltZSBvbiBhIHN0YWNrIG9mIGhlbGQgZGlyZWN0b3J5IGZkcywgdGhl biBvcGVyYXRlcyBvbiB0aGUgZmluYWwKKy1jb21wb25lbnQgd2l0aCBhbiBhdC1zdHlsZSBjYWxs IG9uIHRoZSByZXN1bHRpbmcgZGlyZWN0b3J5IGZkLgorK1Jlc29sdXRpb24gb2YgYXR0YWNrZXIt aW5mbHVlbmNlYWJsZSBwYXRocyBnb2VzIHRocm91Z2ggYHNlY3VyZV9yZWxhdGl2ZV9vcGVuKClg LAorK2BzZWN1cmVfcmVsYXRpdmVfZGlyZmQoKWAsIGFuZCB0aGUgYGRvXypfYXQoKWAgd3JhcHBl cnMgaW4gYHN5c2NhbGwuY2AsIG5ldmVyIGEKKytyYXcgYG9wZW4oKWAvYHJlbmFtZSgpYC9gY2ht b2QoKWAgb24gYSBmdWxsIHBhdGggc3RyaW5nLiBUaGUgcHJpbmNpcGxlIGlzOgorKyoqdHJ1c3Qg dGhlIG9wZXJhdG9yLW5hbWVkIHRyYW5zZmVyIHJvb3QsIGFuZCBjb25maW5lIGFsbCByZXNvbHV0 aW9uIGJlbmVhdGgKKytpdCoqLCByZWplY3RpbmcgZXNjYXBlcyB2aWEgYC4uYCBhYm92ZSB0aGUg YW5jaG9yLCBhYnNvbHV0ZSBzeW1saW5rcywgb3IKKytvdXQtb2YtdHJlZSBzeW1saW5rcy4gYHNl Y3VyZV9yZWxhdGl2ZV9vcGVuKClgIG9wZW5zIHRoZSByZXNvbHZlZCBlbmRwb2ludCB3aXRoCisr dGhlIGNhbGxlcidzIHJlcXVlc3RlZCBhY2Nlc3MuIGBzZWN1cmVfcmVsYXRpdmVfZGlyZmQoKWAg aW5zdGVhZCByZXR1cm5zCisrdHJhdmVyc2FsIGF1dGhvcml0eSBmb3IgYGZjaGRpcigpYCBvciBh biBhdC1zdHlsZSBvcGVyYXRpb24gb24gYSBrbm93biBjaGlsZDsKKytpdCBkb2VzIG5vdCBpbXBs eSBwZXJtaXNzaW9uIHRvIGVudW1lcmF0ZSB0aGUgZGlyZWN0b3J5LgorIAorIEZvciBwZXItZW50 cnkgd29yayB0aGUgcmVjZWl2ZXIgYW5kIGdlbmVyYXRvciBnbyBvbmUgc3RlcCBmdXJ0aGVyIGFu ZCBob2xkIHRoZQorIHBhcmVudCBkaXJlY3Rvcnkgb3BlbjogYG9wZW5fZGlyX3NlY3VyZSgpYCBy ZXNvbHZlcyBhbiBlbnRyeSdzIGRpcmVjdG9yeSBvbmNlCistKHZpYSBgc2VjdXJlX3JlbGF0aXZl X29wZW4oKWApLCBgaGVsZF9kZmRfZm9yKClgIGNhY2hlcyB0aGF0IGRlc2NyaXB0b3IgZm9yIHRo ZQorLWR1cmF0aW9uIG9mIHRoZSBlbnRyeSwgYW5kIGV2ZXJ5IG9wZXJhdGlvbiBvbiB0aGUgZW50 cnkg4oCUIGBsc3RhdGAsIHRoZSB0ZW1wLWZpbGUKKy1gbWtzdGVtcGAsIHRoZSB0ZW1wLT5maW5h bCBgcmVuYW1lYCwgYGNobW9kYC9gY2hvd25gL2B1dGltZXNgLCBgbWtkaXJgLCBzcGVjaWFsLQor LWZpbGUgYW5kIHN5bWxpbmsgY3JlYXRpb24sIHRoZSBkZWx0YS1iYXNpcyBvcGVuLCBhbmQgdGhl IHJlY3Vyc2l2ZSBkZWxldGUg4oCUIHJ1bnMKKy10aHJvdWdoIHRoYXQgb25lIGhlbGQgZmQgdmlh IGFuIGAqYXQoKWAgY2FsbCAoYGRvXypfYXRmZCgpYCkuIEJlY2F1c2UgdGhlCistZGVzY3JpcHRv ciBpcyBwaW5uZWQgdG8gdGhlIGRpcmVjdG9yeSBpbm9kZSwgYSBwYXJlbnQgY29tcG9uZW50IGZs aXBwZWQgdG8gYQorLXN5bWxpbmsgKmFmdGVyKiB0aGUgb3BlbiBjYW5ub3QgcmVkaXJlY3QgYW55 IG9mIHRob3NlIG9wZXJhdGlvbnMuIFRoZSBhbHRlcm5hdGUtCistZGVzdGluYXRpb24gbG9va3Vw cyBhcmUgY29uZmluZWQgdGhlIHNhbWUgd2F5IChgYmFzaXNfbGlua19zdGF0KClgIGluCistYGdl bmVyYXRvci5jYCBhbmQgYHNlY3VyZV9iYXNpc19vcGVuKClgIGluIGByZWNlaXZlci5jYCksIHNv IGEgcGVlci1jaG9zZW4KKy1gLS1saW5rLWRlc3RgL2AtLWNvbXBhcmUtZGVzdGAvYC0tY29weS1k ZXN0YCBiYXNpcyBpbmRleCBjYW5ub3QgcmVhY2ggYW4KKy1vdXQtb2YtbW9kdWxlIGZpbGUgdGhy b3VnaCBhIHN5bWxpbmtlZCBwYXJlbnQuCisrYXMgdHJhdmVyc2FsIGF1dGhvcml0eSwgYGhlbGRf ZGZkX2ZvcigpYCBjYWNoZXMgdGhhdCBkZXNjcmlwdG9yIGZvciB0aGUKKytkdXJhdGlvbiBvZiB0 aGUgZW50cnksIGFuZCBldmVyeSBvcGVyYXRpb24gb24gdGhlIGVudHJ5IOKAlCBgbHN0YXRgLCB0 aGUKKyt0ZW1wLWZpbGUgYG1rc3RlbXBgLCB0aGUgdGVtcC0+ZmluYWwgYHJlbmFtZWAsIGBjaG1v ZGAvYGNob3duYC9gdXRpbWVzYCwKKytgbWtkaXJgLCBzcGVjaWFsLWZpbGUgYW5kIHN5bWxpbmsg Y3JlYXRpb24sIHRoZSBkZWx0YS1iYXNpcyBvcGVuLCBhbmQgdGhlCisrcmVjdXJzaXZlIGRlbGV0 ZSDigJQgcnVucyB0aHJvdWdoIHRoYXQgb25lIGhlbGQgZmQgdmlhIGFuIGAqYXQoKWAgY2FsbAor KyhgZG9fKl9hdGZkKClgKS4gQmVjYXVzZSB0aGUgZGVzY3JpcHRvciBpcyBwaW5uZWQgdG8gdGhl IGRpcmVjdG9yeSBpbm9kZSwgYQorK3BhcmVudCBjb21wb25lbnQgZmxpcHBlZCB0byBhIHN5bWxp bmsgKmFmdGVyKiB0aGUgb3BlbiBjYW5ub3QgcmVkaXJlY3QgYW55IG9mCisrdGhvc2Ugb3BlcmF0 aW9ucy4gVGhlIGFsdGVybmF0ZS1kZXN0aW5hdGlvbiBsb29rdXBzIGFyZSBjb25maW5lZCB0aGUg c2FtZSB3YXkKKysoYGJhc2lzX2xpbmtfc3RhdCgpYCBpbiBgZ2VuZXJhdG9yLmNgIGFuZCBgc2Vj dXJlX2Jhc2lzX29wZW4oKWAgaW4KKytgcmVjZWl2ZXIuY2ApLCBzbyBhIHBlZXItY2hvc2VuIGAt LWxpbmstZGVzdGAvYC0tY29tcGFyZS1kZXN0YC9gLS1jb3B5LWRlc3RgCisrYmFzaXMgaW5kZXgg Y2Fubm90IHJlYWNoIGFuIG91dC1vZi1tb2R1bGUgZmlsZSB0aHJvdWdoIGEgc3ltbGlua2VkIHBh cmVudC4KKyAKKyBUaGUgc2VuZGVyJ3Mgc291cmNlLWRpcmVjdG9yeSAqZW51bWVyYXRpb24qIGlz IGNvbmZpbmVkIHRoZSBzYW1lIHdheSBhcyBpdHMKKyBjb250ZW50IG9wZW4uIGBzZW5kX2RpcmVj dG9yeSgpYCBvcGVucyBlYWNoIHNjYW5uZWQgZGlyZWN0b3J5IHRocm91Z2gKK0BAIC0xOTAsMTMg KzE5MSwxNyBAQCBzeW1saW5rIHdvdWxkIG90aGVyd2lzZSBpbnRyb2R1Y2UuCisgIyMjIFBhdGgg cmVzb2x1dGlvbgorIAorIGBzZWN1cmVfcmVsYXRpdmVfb3BlbigpYCByZXNvbHZlcyBhIHBhdGgg d2l0aCBhIHNpbmdsZSBwb3J0YWJsZSBtZWNoYW5pc20gb24KKy1ldmVyeSBwbGF0Zm9ybTogYSBw ZXItY29tcG9uZW50IHdhbGsgb24gYSBzdGFjayBvZiBoZWxkIGRpcmVjdG9yeSBmZHMuIEVhY2gK Ky1jb21wb25lbnQgaXMgb3BlbmVkIHJlbGF0aXZlIHRvIHRoZSBoZWxkIHBhcmVudCB3aXRoIGBv cGVuYXQocGFyZW50X2ZkLAorLSJjb21wb25lbnQiLCBPX05PRk9MTE9XKWA7IGRlc2NlbmRpbmcg aW50byBhIHJlYWwgc3ViZGlyZWN0b3J5IHB1c2hlcyBpdHMgZmQsIGEKKy1gLi5gIHBvcHMgYmFj ayB0byB0aGUgYWxyZWFkeS1oZWxkIHBhcmVudCAoYSBwb3AgYXQgdGhlIGFuY2hvciBpcyByZWZ1 c2VkKSwgYW5kIGFuCistaW4tdHJlZSBkaXJlY3Rvcnkgc3ltbGluayBpcyBmb2xsb3dlZCBieSBy ZWFkaW5nIGl0cyB0YXJnZXQgYW5kIHdhbGtpbmcgdGhhdCBvZmYKKy10aGUgc2FtZSBzdGFjayAo YWJzb2x1dGUgdGFyZ2V0cyByZWZ1c2VkLCBzeW1saW5rIGhvcHMgYm91bmRlZCkuIFRoZSBmaW5h bAorLWNvbXBvbmVudCBpcyBvcGVuZWQgYE9fTk9GT0xMT1dgLgorK2V2ZXJ5IHBsYXRmb3JtOiBh IHBlci1jb21wb25lbnQgd2FsayBvbiBhIHN0YWNrIG9mIGhlbGQgZGlyZWN0b3J5IGZkcy4gT24K KytMaW51eCwgYW5jaG9ycyBhbmQgdHJhdmVyc2FsIGNvbXBvbmVudHMgdXNlCisrYE9fUEFUSHxP X0RJUkVDVE9SWXxPX05PRk9MTE9XYDsgb3RoZXIgcGxhdGZvcm1zIHJldGFpbiB0aGUKKytgT19S RE9OTFl8T19ESVJFQ1RPUllgIGZhbGxiYWNrLiBEZXNjZW5kaW5nIGludG8gYSByZWFsIHN1YmRp cmVjdG9yeSBwdXNoZXMKKytpdHMgZmQsIGEgYC4uYCBwb3BzIGJhY2sgdG8gdGhlIGFscmVhZHkt aGVsZCBwYXJlbnQgKGEgcG9wIGF0IHRoZSBhbmNob3IgaXMKKytyZWZ1c2VkKSwgYW5kIGFuIGlu LXRyZWUgZGlyZWN0b3J5IHN5bWxpbmsgaXMgZm9sbG93ZWQgYnkgcmVhZGluZyBpdHMgdGFyZ2V0 CisrYW5kIHdhbGtpbmcgdGhhdCBvZmYgdGhlIHNhbWUgc3RhY2sgKGFic29sdXRlIHRhcmdldHMg cmVmdXNlZCwgc3ltbGluayBob3BzCisrYm91bmRlZCkuIEEgZmluYWwgZGlyZWN0b3J5IGVuZHBv aW50IGlzIHJlb3BlbmVkIHdpdGggdGhlIGNhbGxlcidzIHJlcXVlc3RlZAorK2ZsYWdzLiBUaHVz IGBzZWN1cmVfb3BlbmRpcigpYCBzdGlsbCByZWNlaXZlcyBhIHJlYWRhYmxlIGZkLCB3aGlsZSBr bm93bi1uYW1lCisrb3BlcmF0aW9ucyBiZW5lYXRoIGEgc2VhcmNoYWJsZSBidXQgdW5yZWFkYWJs ZSBkaXJlY3RvcnkgZG8gbm90IHJlcXVpcmUKKytwZXJtaXNzaW9uIHRvIGxpc3QgaXQuCisgCisg QmVjYXVzZSBldmVyeSBjb21wb25lbnQgaXMgb3BlbmVkIHJlbGF0aXZlIHRvIGEgKnBpbm5lZCog ZmQgdW5kZXIgYE9fTk9GT0xMT1dgLAorIGFuZCBgLi5gIGlzIHJlc29sdmVkIGJ5IHRoZSBoZWxk LWZkIHN0YWNrIHJhdGhlciB0aGFuIGJ5IHRoZSBrZXJuZWwsIHRoZSB3YWxrIGlzCitAQCAtMjM1 LDggKzI0MCw5IEBAIGNobW9kLWluZyB0aHJvdWdoIGEgcmFjZWQgbGVhZiBzeW1saW5rLgorICAg aW5mbHVlbmNlZCBieSB0aGUgcmVtb3RlIHBlZXIgb3IgYnkgYW5vdGhlciBsb2NhbCB1c2VyLCB1 c2UgYSBgZG9fKl9hdCgpYAorICAgd3JhcHBlciAob3IgYHNlY3VyZV9yZWxhdGl2ZV9vcGVuKClg KSwgbm90IGEgcmF3IGZ1bGwtcGF0aCBzeXNjYWxsLgorICogV2hlbiBpbnRyb2R1Y2luZyBhIG5l dyBvcGVyYXRpb24sIGFkZCBhIG1hdGNoaW5nIGBkb188b3A+X2F0KClgIHdyYXBwZXIgdGhhdAor LSAgcmVzb2x2ZXMgdGhlIHBhcmVudCB3aXRoIGBzZWN1cmVfcmVsYXRpdmVfb3BlbigpYCBhbmQg YWN0cyB2aWEgYW4gYXQtc3R5bGUgY2FsbAorLSAgb24gdGhlIHJldHVybmVkIGRpcmZkLgorKyAg cmVzb2x2ZXMgYSBwYXJlbnQgdXNlZCBvbmx5IGFzIGF0LXN0eWxlIGF1dGhvcml0eSB3aXRoCisr ICBgc2VjdXJlX3JlbGF0aXZlX2RpcmZkKClgLiBVc2UgYHNlY3VyZV9yZWxhdGl2ZV9vcGVuKClg IHdoZW4gdGhlIHJldHVybmVkIGZkCisrICBpdHNlbGYgbXVzdCBiZSByZWFkYWJsZSBvciBvdGhl cndpc2Ugc3VwcG9ydCB0aGUgY2FsbGVyJ3MgcmVxdWVzdGVkIGFjY2Vzcy4KKyAqIERvIG5vdCBh c3N1bWUgYSBub24tZGFlbW9uIHRyYW5zZmVyIGlzIHNhZmU7IHRoZSBxdWVzdGlvbiBpcyB3aGV0 aGVyIHJzeW5jIGhhcworICAgbW9yZSBhdXRob3JpdHkgdGhhbiB3aG9ldmVyIGNvbnRyb2xzIHRo ZSBwYXRoIGNvbXBvbmVudHMuCisgKiBPbiBwbGF0Zm9ybXMgd2hvc2UgQVBJIGxhY2tzIGFuIGF0 LXN0eWxlIGVxdWl2YWxlbnQgKGUuZy4gYHNldGF0dHJsaXN0KClgKSwKK2RpZmYgLS1naXQgYS9n ZW5lcmF0b3IuYyBiL2dlbmVyYXRvci5jCitpbmRleCA3ZTVhZDYwLi42ZjI4MTg4IDEwMDY0NAor LS0tIGEvZ2VuZXJhdG9yLmMKKysrKyBiL2dlbmVyYXRvci5jCitAQCAtMTA1Miw3ICsxMDUyLDcg QEAgc3RhdGljIGludCBiYXNpc19saW5rX3N0YXQoY29uc3QgY2hhciAqcGF0aCwgU1RSVUNUX1NU QVQgKnN0cCkKKyAJCQlpZiAoZGxlbiA+PSBzaXplb2YgZGlyKSB7IGVycm5vID0gRU5BTUVUT09M T05HOyByZXR1cm4gLTE7IH0KKyAJCQltZW1jcHkoZGlyLCBwYXRoLCBkbGVuKTsKKyAJCQlkaXJb ZGxlbl0gPSAnXDAnOworLQkJCWlmICgoZGZkID0gc2VjdXJlX3JlbGF0aXZlX29wZW4oTlVMTCwg ZGlyLCBPX1JET05MWSB8IE9fRElSRUNUT1JZLCAwKSkgPCAwKQorKwkJCWlmICgoZGZkID0gc2Vj dXJlX3JlbGF0aXZlX2RpcmZkKE5VTEwsIGRpcikpIDwgMCkKKyAJCQkJcmV0dXJuIC0xOworIAkJ CXIgPSBsaW5rX3N0YXRfYXQoZGZkLCBzbGFzaCArIDEsIHN0cCwgMCk7CisgCQkJZSA9IGVycm5v OworZGlmZiAtLWdpdCBhL3NlbmRlci5jIGIvc2VuZGVyLmMKK2luZGV4IGJiMWIxMzcuLmJhNDBi OTQgMTAwNjQ0CistLS0gYS9zZW5kZXIuYworKysrIGIvc2VuZGVyLmMKK0BAIC0xMjcsOCArMTI3 LDcgQEAgc3RhdGljIGludCBzZWN1cmVfc2VuZGVyX3BhcmVudF9mZChzdHJ1Y3QgZmlsZV9zdHJ1 Y3QgKmZpbGUsIGNvbnN0IGNoYXIgKmZuYW1lLAorICNlbmRpZgorIAkJCQl3aGlsZSAoKnJlbCA9 PSAnLycpCisgCQkJCQlyZWwrKzsKKy0JCQkJcmV0dXJuIHNlY3VyZV9yZWxhdGl2ZV9vcGVuKCIv IiwgcmVsLAorLQkJCQkJT19SRE9OTFkgfCBPX0RJUkVDVE9SWSwgMCk7CisrCQkJCXJldHVybiBz ZWN1cmVfcmVsYXRpdmVfZGlyZmQoIi8iLCByZWwpOworIAkJCX0KKyAJCQkvKiBoZWxkX2Rpcl9w YXRoX2ZkIHJldHVybnMgYSBjYWNoZS1PV05FRCBmZDsgdGhlIGNhbGxlciBjbG9zZXMKKyAJCQkg KiB3aGF0IHdlIHJldHVybiwgc28gaGFuZCBiYWNrIGFuIG93bmVkIGR1cCBhbmQgbGVhdmUgdGhl IGNhY2hlJ3MKK0BAIC0xNDEsNyArMTQwLDcgQEAgc3RhdGljIGludCBzZWN1cmVfc2VuZGVyX3Bh cmVudF9mZChzdHJ1Y3QgZmlsZV9zdHJ1Y3QgKmZpbGUsIGNvbnN0IGNoYXIgKmZuYW1lLAorIAkJ CQlyZXR1cm4gZHVwKGRmZCk7CisgCQkJaWYgKGVycm5vICE9IDApCisgCQkJCXJldHVybiAtMTsK Ky0JCQlyZXR1cm4gc2VjdXJlX3JlbGF0aXZlX29wZW4oTlVMTCwgZGlyLCBPX1JET05MWSB8IE9f RElSRUNUT1JZLCAwKTsKKysJCQlyZXR1cm4gc2VjdXJlX3JlbGF0aXZlX2RpcmZkKE5VTEwsIGRp cik7CisgCQl9CisgCQllcnJubyA9IDA7CS8qIHRvcC1sZXZlbCBmaWxlOiBubyBwYXJlbnQgY29t cG9uZW50IHRvIGNvbmZpbmUgKi8KKyAJCXJldHVybiAtMTsKK0BAIC0xNzYsOSArMTc1LDkgQEAg c3RhdGljIGludCBzZWN1cmVfc2VuZGVyX3BhcmVudF9mZChzdHJ1Y3QgZmlsZV9zdHJ1Y3QgKmZp bGUsIGNvbnN0IGNoYXIgKmZuYW1lLAorIAkJfQorIAkJbWVtY3B5KGRpciwgcmVscCwgZGxlbik7 CisgCQlkaXJbZGxlbl0gPSAnXDAnOworLQkJZGZkID0gc2VjdXJlX3JlbGF0aXZlX29wZW4obW9k dWxlX2RpciwgZGlyLCBPX1JET05MWSB8IE9fRElSRUNUT1JZLCAwKTsKKysJCWRmZCA9IHNlY3Vy ZV9yZWxhdGl2ZV9kaXJmZChtb2R1bGVfZGlyLCBkaXIpOworIAl9IGVsc2UKKy0JCWRmZCA9IHNl Y3VyZV9yZWxhdGl2ZV9vcGVuKG1vZHVsZV9kaXIsICIiLCBPX1JET05MWSB8IE9fRElSRUNUT1JZ LCAwKTsKKysJCWRmZCA9IHNlY3VyZV9yZWxhdGl2ZV9kaXJmZChtb2R1bGVfZGlyLCAiIik7Cisg CisgCS8qIFRoZSBsZWFmIGlzIHRoZSBzYW1lIGxhc3QgY29tcG9uZW50IGVpdGhlciB3YXk7IHRh a2UgaXQgZnJvbSB0aGUgY2FsbGVyJ3MKKyAJICogcGVyc2lzdGVudCBmbmFtZSBidWZmZXIsIG5v dCB0aGUgbG9jYWwgc2VjdXJlX3BhdGguICovCitAQCAtMjkyLDExICsyOTEsOSBAQCBzdGF0aWMg aW50IHNlbmRlcl9vcGVuX2NvcHlsaW5rc19jb25maW5lZChjb25zdCBjaGFyICphbmNob3IsIGNv bnN0IGNoYXIgKnJlbHBhdAorIAkJICogb25seSB0aGlzIGJyYW5jaCB3b3VsZCBoYW5kIGl0IHRv IHN0cmNtcCgpLiAqLworIAkJaWYgKGFtX2RhZW1vbiAmJiBtb2R1bGVfZGlyZmQgPj0gMCAmJiBt b2R1bGVfZGlyICYmIGFuY2hvcgorIAkJICYmIHN0cmNtcChhbmNob3IsIG1vZHVsZV9kaXIpID09 IDApCistCQkJcGRmZCA9IHNlY3VyZV9yZWxhdGl2ZV9vcGVuX2F0X2JlbmVhdGgobW9kdWxlX2Rp cmZkLCBkaXIsCistCQkJCQlPX1JET05MWSB8IE9fRElSRUNUT1JZLCAwKTsKKysJCQlwZGZkID0g c2VjdXJlX3JlbGF0aXZlX2RpcmZkX2F0X2JlbmVhdGgobW9kdWxlX2RpcmZkLCBkaXIpOworIAkJ ZWxzZQorLQkJCXBkZmQgPSBzZWN1cmVfcmVsYXRpdmVfb3BlbihhbmNob3IsIGRpciwKKy0JCQkJ CU9fUkRPTkxZIHwgT19ESVJFQ1RPUlksIDApOworKwkJCXBkZmQgPSBzZWN1cmVfcmVsYXRpdmVf ZGlyZmQoYW5jaG9yLCBkaXIpOworIAkJaWYgKHBkZmQgPCAwKQorIAkJCXJldHVybiAtMTsKKyAJ CW4gPSBkb19yZWFkbGlua19hdGZkKHBkZmQsIGJuYW1lLCB0Z3QsIHNpemVvZiB0Z3QgLSAxKTsK K2RpZmYgLS1naXQgYS9zeXNjYWxsLmMgYi9zeXNjYWxsLmMKK2luZGV4IDVlOTJlZGMuLmQ4MDRm NDIgMTAwNjQ0CistLS0gYS9zeXNjYWxsLmMKKysrKyBiL3N5c2NhbGwuYworQEAgLTc0LDYgKzc0 LDIwIEBAIGV4dGVybiB1bnNpZ25lZCBpbnQgY29uZmluZV9yb290bGVuOworIGV4dGVybiBjaGFy IGN1cnJfZGlyW01BWFBBVEhMRU5dOwkvKiBkZWZpbmVkIGJlbG93OyBmd2QtZGVjbGFyZWQgZm9y IHRoZSBzZWVkICovCisgZXh0ZXJuIGludCBvcGVyYXRvcl9wYXRoX3Jlc29sdmU7CS8qIGRlZmlu ZWQgYmVsb3c7IGZ3ZC1kZWNsYXJlZCBmb3IgdGhlIGV4Y2x1ZGUgY2hlY2sgKi8KKyAKKysvKiBB IGRpcmVjdG9yeSBmZCB1c2VkIG9ubHkgZm9yIHBhdGhuYW1lIHRyYXZlcnNhbCwgZmNoZGlyKCks IG9yIGFzICphdCgpCisrICogYXV0aG9yaXR5IGRvZXMgbm90IG5lZWQgcmVhZCBwZXJtaXNzaW9u IG9uIExpbnV4LiAgS2VlcCB0aGUgcG9ydGFibGUKKysgKiBPX1JET05MWSBmYWxsYmFjayBmb3Ig c3lzdGVtcyB3aXRob3V0IE9fUEFUSC4gKi8KKytzdGF0aWMgaW50IGRpcmVjdG9yeV90cmF2ZXJz ZV9mbGFncyh2b2lkKQorK3sKKysjaWYgZGVmaW5lZCBPX1BBVEggJiYgZGVmaW5lZCBPX0RJUkVD VE9SWQorKwlyZXR1cm4gT19QQVRIIHwgT19ESVJFQ1RPUlk7CisrI2VsaWYgZGVmaW5lZCBPX0RJ UkVDVE9SWQorKwlyZXR1cm4gT19SRE9OTFkgfCBPX0RJUkVDVE9SWTsKKysjZWxzZQorKwlyZXR1 cm4gT19SRE9OTFk7CisrI2VuZGlmCisrfQorKworICNpZiBkZWZpbmVkIEFUX0ZEQ1dEICYmIGRl ZmluZWQgT19OT0ZPTExPVyAmJiBkZWZpbmVkIE9fRElSRUNUT1JZCisgLyogT3BlbiBhIHRydXN0 ZWQgYWJzb2x1dGUgYW5jaG9yIGRpcmVjdG9yeSBhcyBhbiBvd25lZCBkaXJmZC4gIFdoZW4gdGhl IGFuY2hvciBpcworICAqIHRoZSBzZXJ2ZWQgbW9kdWxlIHJvb3QgYW5kIHRoZSBkYWVtb24gcGlu bmVkIGl0IGJ5IGlkZW50aXR5IChtb2R1bGVfZGlyZmQpLCBkdXAKK0BAIC04Niw3ICsxMDAsNyBA QCBzdGF0aWMgaW50IG9wZW5fYW5jaG9yX2RpcmZkKGNvbnN0IGNoYXIgKnBhdGgpCisgeworIAlp ZiAobW9kdWxlX2RpcmZkID49IDAgJiYgYW1fZGFlbW9uICYmIG1vZHVsZV9kaXIgJiYgc3RyY21w KHBhdGgsIG1vZHVsZV9kaXIpID09IDApCisgCQlyZXR1cm4gZHVwKG1vZHVsZV9kaXJmZCk7Cist CXJldHVybiBvcGVuYXQoQVRfRkRDV0QsIHBhdGgsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlkpOwor KwlyZXR1cm4gb3BlbmF0KEFUX0ZEQ1dELCBwYXRoLCBkaXJlY3RvcnlfdHJhdmVyc2VfZmxhZ3Mo KSk7CisgfQorICNlbmRpZgorIAorQEAgLTI4NSwxMiArMjk5LDEzIEBAIHN0YXRpYyBpbnQgYWJz cGF0aF9zdGVwKGNoYXIgKmFic3BhdGgsIHNpemVfdCBjYXAsIGNvbnN0IGNoYXIgKmNvbXAsIHNp emVfdCBjb21wCisgICogdXNlcyBpdCB0byBmaWx0ZXItY2hlY2sgdGhlIChvdGhlcndpc2UgdW5j aGVja2VkKSBsZWFmIGJhc2VuYW1lLiAqLworIHN0YXRpYyBpbnQgb25hX29wZW4oY29uc3QgY2hh ciAqcGF0aCwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSwgY2hhciAqb3V0X2Ficywgc2l6ZV90IG91 dF9jYXApCisgeworLSNpZiBkZWZpbmVkIEFUX0ZEQ1dEICYmIGRlZmluZWQgT19OT0ZPTExPVwor KyNpZiBkZWZpbmVkIEFUX0ZEQ1dEICYmIGRlZmluZWQgT19OT0ZPTExPVyAmJiBkZWZpbmVkIE9f RElSRUNUT1JZCisgCS8qIE9fQ0xPRVhFQyBwcmVkYXRlcyBzb21lIHN0aWxsLXN1cHBvcnRlZCB0 YXJnZXRzOyBtaXJyb3IgcmFuZF9ieXRlcygpJ3MKKyAJICogZmFsbGJhY2sgaW4gc3lzY2FsbC5j IHNvIGEgYnVpbGQgd2l0aG91dCBpdCBzdGlsbCBjb21waWxlcy4gKi8KKyAjaWZuZGVmIE9fQ0xP RVhFQworICNkZWZpbmUgT19DTE9FWEVDIDAKKyAjZW5kaWYKKysJY29uc3QgaW50IGRpcl90cmF2 ZXJzZV9mbGFncyA9IGRpcmVjdG9yeV90cmF2ZXJzZV9mbGFncygpIHwgT19DTE9FWEVDOworIAlp ZiAoIXBhdGggfHwgISpwYXRoKSB7CisgCQllcnJubyA9IEVJTlZBTDsKKyAJCXJldHVybiAtMTsK K0BAIC0zNDgsNyArMzYzLDcgQEAgc3RhdGljIGludCBvbmFfb3Blbihjb25zdCBjaGFyICpwYXRo LCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlLCBjaGFyICpvdXRfYWJzLCBzaXoKKyAKKyAJLyogQWJz b2x1dGUgcGF0aDogcGluICIvIiBhcyB0aGUgc3RhcnRpbmcgZGZkLiAqLworIAlpZiAocmVtYWlu aW5nWzBdID09ICcvJykgeworLQkJZGZkID0gb3BlbigiLyIsIE9fUkRPTkxZIHwgT19ESVJFQ1RP UlkgfCBPX0NMT0VYRUMpOworKwkJZGZkID0gb3BlbigiLyIsIGRpcl90cmF2ZXJzZV9mbGFncyk7 CisgCQlpZiAoZGZkIDwgMCkKKyAJCQlyZXR1cm4gLTE7CisgCQlkZmRfb3ducyA9IDE7CitAQCAt NDM1LDcgKzQ1MCw3IEBAIHN0YXRpYyBpbnQgb25hX29wZW4oY29uc3QgY2hhciAqcGF0aCwgaW50 IGZsYWdzLCBtb2RlX3QgbW9kZSwgY2hhciAqb3V0X2Ficywgc2l6CisgCisgCQkJaWYgKHRhcmdl dFswXSA9PSAnLycpIHsKKyAJCQkJaWYgKGRmZF9vd25zKSBjbG9zZShkZmQpOworLQkJCQlkZmQg PSBvcGVuKCIvIiwgT19SRE9OTFkgfCBPX0RJUkVDVE9SWSB8IE9fQ0xPRVhFQyk7CisrCQkJCWRm ZCA9IG9wZW4oIi8iLCBkaXJfdHJhdmVyc2VfZmxhZ3MpOworIAkJCQlpZiAoZGZkIDwgMCkgewor IAkJCQkJc2F2ZWRfZXJybm8gPSBlcnJubzsKKyAJCQkJCWRmZF9vd25zID0gMDsKK0BAIC00OTAs NyArNTA1LDcgQEAgc3RhdGljIGludCBvbmFfb3Blbihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxh Z3MsIG1vZGVfdCBtb2RlLCBjaGFyICpvdXRfYWJzLCBzaXoKKyAJCQlzYXZlZF9lcnJubyA9IEVM T09QOworIAkJCWdvdG8gb3V0OworIAkJfQorLQkJaW50IG5leHQgPSBvcGVuYXQoZGZkLCBjb21w LCBPX1JET05MWSB8IE9fRElSRUNUT1JZIHwgT19OT0ZPTExPVyB8IE9fQ0xPRVhFQyk7CisrCQlp bnQgbmV4dCA9IG9wZW5hdChkZmQsIGNvbXAsIGRpcl90cmF2ZXJzZV9mbGFncyB8IE9fTk9GT0xM T1cpOworIAkJaWYgKG5leHQgPCAwKSB7CisgCQkJc2F2ZWRfZXJybm8gPSBlcnJubzsKKyAJCQln b3RvIG91dDsKK0BAIC01MTAsMTIgKzUyNSwxMiBAQCBzdGF0aWMgaW50IG9uYV9vcGVuKGNvbnN0 IGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUsIGNoYXIgKm91dF9hYnMsIHNpegor IAl9CisgCisgCS8qIFBhdGggcmVzb2x2ZWQgZW50aXJlbHkgdG8gYSBkaXJlY3RvcnkgKG5vIGxl YWYgY29tcG9uZW50IGxlZnQpLgorLQkgKiBJZiB0aGUgY2FsbGVyIHdhbnRlZCBPX0RJUkVDVE9S WSB3ZSBhbHJlYWR5IGhvbGQgdGhlIGRpcmZkIHdlCistCSAqIGJ1aWx0IHVwOyBvdGhlcndpc2Ug aXQncyBhbiBFSVNESVIuICovCisrCSAqIFJlb3BlbiB0aGUgaGVsZCB0cmF2ZXJzYWwgZmQgd2l0 aCB0aGUgY2FsbGVyJ3MgcmVxdWVzdGVkIGFjY2VzcyBtb2RlOworKwkgKiBhbiBPX1BBVEggZmQg aXMgc3VmZmljaWVudCBmb3IgdHJhdmVyc2FsIGFuZCBmY2hkaXIgYnV0IG5vdCBvcGVyYXRpb25z CisrCSAqIHN1Y2ggYXMgZmNobW9kLiAqLworIAlpZiAoZmxhZ3MgJiBPX0RJUkVDVE9SWSkgewor LQkJcmV0ZmQgPSBkZmQ7CistCQlkZmRfb3ducyA9IDA7CS8qIGNhbGxlciBub3cgb3ducyBpdCAq LworLQkJc2F2ZWRfZXJybm8gPSAwOworKwkJcmV0ZmQgPSBvcGVuYXQoZGZkLCAiLiIsIGZsYWdz IHwgT19OT0ZPTExPVywgbW9kZSk7CisrCQlzYXZlZF9lcnJubyA9IHJldGZkIDwgMCA/IGVycm5v IDogMDsKKyAJCWlmIChvdXRfYWJzICYmIG91dF9jYXApCisgCQkJLyogUm9vdC1yZXNvbHZlZCAo Ii4uIiBwb3BwZWQgYWJzcGF0aCBlbXB0eSkgdHJhY2tlZCBkYWVtb24gd2FsazoKKyAJCQkgKiBo YW5kIGJhY2sgIi8iIHNvIG93bmVyX3dhbGtfcGFyZW50IHN0aWxsIGxlYWYtY2hlY2tzIChwYXRo PS8gYnlwYXNzKS4gKi8KK0BAIC01NDAsNiArNTU1LDE0IEBAIGludCBvcGVuX25vX2F0dGFja2Vy X3N5bWxpbmtzKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUpCisgCXJl dHVybiBvbmFfb3BlbihwYXRoLCBmbGFncywgbW9kZSwgTlVMTCwgMCk7CisgfQorIAorKy8qIE9w ZW4gYSBkaXJlY3RvcnkgZm9yIHRyYXZlcnNhbCBvciBhcyAqYXQoKS9mY2hkaXIoKSBhdXRob3Jp dHkuICBVbmxpa2UgYW4KKysgKiBPX1JET05MWSBkaXJlY3RvcnkgZW5kcG9pbnQsIHRoaXMgYWNj ZXB0cyBhIHNlYXJjaGFibGUgYnV0IHVucmVhZGFibGUKKysgKiBkaXJlY3Rvcnkgb24gTGludXgu ICovCisraW50IG9wZW5fbm9fYXR0YWNrZXJfc3ltbGlua3NfZGlyZmQoY29uc3QgY2hhciAqcGF0 aCkKKyt7CisrCXJldHVybiBvbmFfb3BlbihwYXRoLCBkaXJlY3RvcnlfdHJhdmVyc2VfZmxhZ3Mo KSwgMCwgTlVMTCwgMCk7CisrfQorKworIC8qIFdoZW4gc2V0LCB0aGUgZG9fKl9hdCgpIHdyYXBw ZXJzIHJlc29sdmUgdGhlaXIgcGF0aCBhcyBhbiBPUEVSQVRPUi1zdXBwbGllZAorICAqIGRpcmVj dG9yeSBwYXRoIChhbiBhYnNvbHV0ZSBvciByZWxhdGl2ZSAtLWJhY2t1cC1kaXIvLS10ZW1wLWRp ci8tLSotZGVzdCkKKyAgKiB1c2luZyB0aGUgb3duZXJzaGlwIHdhbGsgLS0gZm9sbG93IGEgc3lt bGluayBvd25lZCBieSB1aWQgMCBvciBvdXIgZXVpZCwKK0BAIC01NjUsNyArNTg4LDcgQEAgaW50 IG93bmVyX3dhbGtfcGFyZW50KGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKipibmFtZSkK KyAJKmJuYW1lID0gc2xhc2ggPyBzbGFzaCArIDEgOiBwYXRoOworIAlwYWJzWzBdID0gJ1wwJzsK KyAJaWYgKCFzbGFzaCkKKy0JCWRmZCA9IG9uYV9vcGVuKCIuIiwgT19SRE9OTFkgfCBPX0RJUkVD VE9SWSwgMCwgcGFicywgc2l6ZW9mIHBhYnMpOworKwkJZGZkID0gb25hX29wZW4oIi4iLCBkaXJl Y3RvcnlfdHJhdmVyc2VfZmxhZ3MoKSwgMCwgcGFicywgc2l6ZW9mIHBhYnMpOworIAllbHNlIHsK KyAJCWRsZW4gPSBzbGFzaCA9PSBwYXRoID8gMSA6IChzaXplX3QpKHNsYXNoIC0gcGF0aCk7IC8q ICIveCIgLT4gcGFyZW50ICIvIiAqLworIAkJaWYgKGRsZW4gPj0gc2l6ZW9mIGRpcikgeworQEAg LTU3NCw3ICs1OTcsNyBAQCBpbnQgb3duZXJfd2Fsa19wYXJlbnQoY29uc3QgY2hhciAqcGF0aCwg Y29uc3QgY2hhciAqKmJuYW1lKQorIAkJfQorIAkJbWVtY3B5KGRpciwgcGF0aCwgZGxlbik7Cisg CQlkaXJbZGxlbl0gPSAnXDAnOworLQkJZGZkID0gb25hX29wZW4oZGlyLCBPX1JET05MWSB8IE9f RElSRUNUT1JZLCAwLCBwYWJzLCBzaXplb2YgcGFicyk7CisrCQlkZmQgPSBvbmFfb3BlbihkaXIs IGRpcmVjdG9yeV90cmF2ZXJzZV9mbGFncygpLCAwLCBwYWJzLCBzaXplb2YgcGFicyk7CisgCX0K KyAJaWYgKGRmZCA8IDApCisgCQlyZXR1cm4gLTE7CitAQCAtNzAzLDcgKzcyNiw3IEBAIGludCBk b191bmxpbmtfYXQoY29uc3QgY2hhciAqcGF0aCkKKyAJZGlycGF0aFtkbGVuXSA9ICdcMCc7Cisg CWJuYW1lID0gc2xhc2ggKyAxOworIAorLQlkZmQgPSBzZWN1cmVfcmVsYXRpdmVfb3BlbihOVUxM LCBkaXJwYXRoLCBPX1JET05MWSB8IE9fRElSRUNUT1JZLCAwKTsKKysJZGZkID0gc2VjdXJlX3Jl bGF0aXZlX2RpcmZkKE5VTEwsIGRpcnBhdGgpOworIAlpZiAoZGZkIDwgMCkKKyAJCXJldHVybiAt MTsKKyAKK0BAIC04MTAsNyArODMzLDcgQEAgaW50IGRvX3N5bWxpbmtfYXQoY29uc3QgY2hhciAq bG5rLCBjb25zdCBjaGFyICpwYXRoKQorIAkJCW1lbWNweShkaXJwYXRoLCBwYXRoLCBkbGVuKTsK KyAJCQlkaXJwYXRoW2RsZW5dID0gJ1wwJzsKKyAJCQlibmFtZSA9IHNsYXNoICsgMTsKKy0JCQlk ZmQgPSBzZWN1cmVfcmVsYXRpdmVfb3BlbihOVUxMLCBkaXJwYXRoLCBPX1JET05MWSB8IE9fRElS RUNUT1JZLCAwKTsKKysJCQlkZmQgPSBzZWN1cmVfcmVsYXRpdmVfZGlyZmQoTlVMTCwgZGlycGF0 aCk7CisgCQkJaWYgKGRmZCA8IDApCisgCQkJCXJldHVybiAtMTsKKyAJCQlvd25zID0gVHJ1ZTsK K0BAIC0xMDEyLDcgKzEwMzUsNyBAQCBpbnQgZG9fbGlua19hdChjb25zdCBjaGFyICpvbGRfcGF0 aCwgY29uc3QgY2hhciAqbmV3X3BhdGgpCisgCQltZW1jcHkob2xkX2RpcnBhdGgsIG9sZF9wYXRo LCBvbGRfZGxlbik7CisgCQlvbGRfZGlycGF0aFtvbGRfZGxlbl0gPSAnXDAnOworIAkJb2xkX2Ju YW1lID0gb2xkX3NsYXNoICsgMTsKKy0JCW9sZF9kZmQgPSBzZWN1cmVfcmVsYXRpdmVfb3BlbihO VUxMLCBvbGRfZGlycGF0aCwgT19SRE9OTFkgfCBPX0RJUkVDVE9SWSwgMCk7CisrCQlvbGRfZGZk ID0gc2VjdXJlX3JlbGF0aXZlX2RpcmZkKE5VTEwsIG9sZF9kaXJwYXRoKTsKKyAJCWlmIChvbGRf ZGZkIDwgMCkKKyAJCQlyZXR1cm4gLTE7CisgCQlvbGRfb3ducyA9IFRydWU7CitAQCAtMTA1MSw3 ICsxMDc0LDcgQEAgaW50IGRvX2xpbmtfYXQoY29uc3QgY2hhciAqb2xkX3BhdGgsIGNvbnN0IGNo YXIgKm5ld19wYXRoKQorIAkJICYmIG1lbWNtcChvbGRfZGlycGF0aCwgbmV3X2RpcnBhdGgsIG9s ZF9kbGVuKSA9PSAwKSB7CisgCQkJbmV3X2RmZCA9IG9sZF9kZmQ7CisgCQl9IGVsc2UgeworLQkJ CW5ld19kZmQgPSBzZWN1cmVfcmVsYXRpdmVfb3BlbihOVUxMLCBuZXdfZGlycGF0aCwgT19SRE9O TFkgfCBPX0RJUkVDVE9SWSwgMCk7CisrCQkJbmV3X2RmZCA9IHNlY3VyZV9yZWxhdGl2ZV9kaXJm ZChOVUxMLCBuZXdfZGlycGF0aCk7CisgCQkJaWYgKG5ld19kZmQgPCAwKSB7CisgCQkJCWUgPSBl cnJubzsKKyAJCQkJaWYgKG9sZF9vd25zKSBjbG9zZShvbGRfZGZkKTsKK0BAIC0xMTU0LDcgKzEx NzcsNyBAQCBpbnQgZG9fbGNob3duX2F0KGNvbnN0IGNoYXIgKmZuYW1lLCB1aWRfdCBvd25lciwg Z2lkX3QgZ3JvdXApCisgCWRpcnBhdGhbZGxlbl0gPSAnXDAnOworIAlibmFtZSA9IHNsYXNoICsg MTsKKyAKKy0JZGZkID0gc2VjdXJlX3JlbGF0aXZlX29wZW4oTlVMTCwgZGlycGF0aCwgT19SRE9O TFkgfCBPX0RJUkVDVE9SWSwgMCk7CisrCWRmZCA9IHNlY3VyZV9yZWxhdGl2ZV9kaXJmZChOVUxM LCBkaXJwYXRoKTsKKyAJaWYgKGRmZCA8IDApCisgCQlyZXR1cm4gLTE7CisgCitAQCAtMTMyNSw3 ICsxMzQ4LDcgQEAgaW50IGRvX21rbm9kX2F0KGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBtb2RlX3Qg bW9kZSwgZGV2X3QgZGV2KQorIAkJbWVtY3B5KGRpcnBhdGgsIHBhdGhuYW1lLCBkbGVuKTsKKyAJ CWRpcnBhdGhbZGxlbl0gPSAnXDAnOworIAkJYm5hbWUgPSBzbGFzaCArIDE7CistCQlkZmQgPSBz ZWN1cmVfcmVsYXRpdmVfb3BlbihOVUxMLCBkaXJwYXRoLCBPX1JET05MWSB8IE9fRElSRUNUT1JZ LCAwKTsKKysJCWRmZCA9IHNlY3VyZV9yZWxhdGl2ZV9kaXJmZChOVUxMLCBkaXJwYXRoKTsKKyAJ CWlmIChkZmQgPCAwKQorIAkJCXJldHVybiAtMTsKKyAJCW93bnMgPSBUcnVlOworQEAgLTE0NDcs NyArMTQ3MCw3IEBAIGludCBkb19ybWRpcl9hdChjb25zdCBjaGFyICpwYXRobmFtZSkKKyAJZGly cGF0aFtkbGVuXSA9ICdcMCc7CisgCWJuYW1lID0gc2xhc2ggKyAxOworIAorLQlkZmQgPSBzZWN1 cmVfcmVsYXRpdmVfb3BlbihOVUxMLCBkaXJwYXRoLCBPX1JET05MWSB8IE9fRElSRUNUT1JZLCAw KTsKKysJZGZkID0gc2VjdXJlX3JlbGF0aXZlX2RpcmZkKE5VTEwsIGRpcnBhdGgpOworIAlpZiAo ZGZkIDwgMCkKKyAJCXJldHVybiAtMTsKKyAKK0BAIC0xNTQzLDcgKzE1NjYsNyBAQCBpbnQgZG9f b3Blbl9hdChjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSkKKyAJ ZGlycGF0aFtkbGVuXSA9ICdcMCc7CisgCWJuYW1lID0gc2xhc2ggKyAxOworIAorLQlkZmQgPSBz ZWN1cmVfcmVsYXRpdmVfb3BlbihOVUxMLCBkaXJwYXRoLCBPX1JET05MWSB8IE9fRElSRUNUT1JZ LCAwKTsKKysJZGZkID0gc2VjdXJlX3JlbGF0aXZlX2RpcmZkKE5VTEwsIGRpcnBhdGgpOworIAlp ZiAoZGZkIDwgMCkKKyAJCXJldHVybiAtMTsKKyAKK0BAIC0xODI1LDcgKzE4NDgsNyBAQCBpbnQg ZG9fY2htb2RfYXQoY29uc3QgY2hhciAqZm5hbWUsIG1vZGVfdCBtb2RlKQorIAlkaXJwYXRoW2Rs ZW5dID0gJ1wwJzsKKyAJYm5hbWUgPSBzbGFzaCArIDE7CisgCistCWRmZCA9IHNlY3VyZV9yZWxh dGl2ZV9vcGVuKE5VTEwsIGRpcnBhdGgsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlksIDApOworKwlk ZmQgPSBzZWN1cmVfcmVsYXRpdmVfZGlyZmQoTlVMTCwgZGlycGF0aCk7CisgCWlmIChkZmQgPCAw KQorIAkJcmV0dXJuIC0xOworIAorQEAgLTE5NDIsNyArMTk2NSw3IEBAIGludCBkb19yZW5hbWVf YXQoY29uc3QgY2hhciAqb2xkX3BhdGgsIGNvbnN0IGNoYXIgKm5ld19wYXRoKQorIAkJbWVtY3B5 KG9sZF9kaXJwYXRoLCBvbGRfcGF0aCwgb2xkX2RsZW4pOworIAkJb2xkX2RpcnBhdGhbb2xkX2Rs ZW5dID0gJ1wwJzsKKyAJCW9sZF9ibmFtZSA9IG9sZF9zbGFzaCArIDE7CistCQlvbGRfZGZkID0g c2VjdXJlX3JlbGF0aXZlX29wZW4oTlVMTCwgb2xkX2RpcnBhdGgsIE9fUkRPTkxZIHwgT19ESVJF Q1RPUlksIDApOworKwkJb2xkX2RmZCA9IHNlY3VyZV9yZWxhdGl2ZV9kaXJmZChOVUxMLCBvbGRf ZGlycGF0aCk7CisgCQlpZiAob2xkX2RmZCA8IDApCisgCQkJcmV0dXJuIC0xOworIAkJb2xkX293 bnMgPSBUcnVlOworQEAgLTE5ODEsNyArMjAwNCw3IEBAIGludCBkb19yZW5hbWVfYXQoY29uc3Qg Y2hhciAqb2xkX3BhdGgsIGNvbnN0IGNoYXIgKm5ld19wYXRoKQorIAkJICYmIG1lbWNtcChvbGRf ZGlycGF0aCwgbmV3X2RpcnBhdGgsIG9sZF9kbGVuKSA9PSAwKSB7CisgCQkJbmV3X2RmZCA9IG9s ZF9kZmQ7CisgCQl9IGVsc2UgeworLQkJCW5ld19kZmQgPSBzZWN1cmVfcmVsYXRpdmVfb3BlbihO VUxMLCBuZXdfZGlycGF0aCwgT19SRE9OTFkgfCBPX0RJUkVDVE9SWSwgMCk7CisrCQkJbmV3X2Rm ZCA9IHNlY3VyZV9yZWxhdGl2ZV9kaXJmZChOVUxMLCBuZXdfZGlycGF0aCk7CisgCQkJaWYgKG5l d19kZmQgPCAwKSB7CisgCQkJCWUgPSBlcnJubzsKKyAJCQkJaWYgKG9sZF9vd25zKSBjbG9zZShv bGRfZGZkKTsKK0BAIC0yMTEyLDcgKzIxMzUsNyBAQCBpbnQgZG9fbWtkaXJfYXQoY2hhciAqcGF0 aCwgbW9kZV90IG1vZGUpCisgCWRpcnBhdGhbZGxlbl0gPSAnXDAnOworIAlibmFtZSA9IHNsYXNo ICsgMTsKKyAKKy0JZGZkID0gc2VjdXJlX3JlbGF0aXZlX29wZW4oTlVMTCwgZGlycGF0aCwgT19S RE9OTFkgfCBPX0RJUkVDVE9SWSwgMCk7CisrCWRmZCA9IHNlY3VyZV9yZWxhdGl2ZV9kaXJmZChO VUxMLCBkaXJwYXRoKTsKKyAJaWYgKGRmZCA8IDApCisgCQlyZXR1cm4gLTE7CisgCitAQCAtMjIz OCw3ICsyMjYxLDcgQEAgc3RhdGljIGludCBkb194c3RhdF9hdChjb25zdCBjaGFyICpwYXRoLCBT VFJVQ1RfU1RBVCAqc3QsIGludCBhdF9mbGFncywgaW50ICgqZmEKKyAJZGlycGF0aFtkbGVuXSA9 ICdcMCc7CisgCWJuYW1lID0gc2xhc2ggKyAxOworIAorLQlkZmQgPSBzZWN1cmVfcmVsYXRpdmVf b3BlbihOVUxMLCBkaXJwYXRoLCBPX1JET05MWSB8IE9fRElSRUNUT1JZLCAwKTsKKysJZGZkID0g c2VjdXJlX3JlbGF0aXZlX2RpcmZkKE5VTEwsIGRpcnBhdGgpOworIAlpZiAoZGZkIDwgMCkKKyAJ CXJldHVybiAtMTsKKyAKK0BAIC0yNDkwLDcgKzI1MTMsNyBAQCBpbnQgZG9fdXRpbWVuc2F0X2F0 KGNvbnN0IGNoYXIgKnBhdGgsIFNUUlVDVF9TVEFUICpzdHApCisgCXRbMV0udHZfbnNlYyA9IDA7 CisgI2VuZGlmCisgCistCWRmZCA9IHNlY3VyZV9yZWxhdGl2ZV9vcGVuKE5VTEwsIGRpcnBhdGgs IE9fUkRPTkxZIHwgT19ESVJFQ1RPUlksIDApOworKwlkZmQgPSBzZWN1cmVfcmVsYXRpdmVfZGly ZmQoTlVMTCwgZGlycGF0aCk7CisgCWlmIChkZmQgPCAwKQorIAkJcmV0dXJuIC0xOworIAorQEAg LTI4NzEsMTMgKzI4OTQsMTMgQEAgc3RhdGljIGludCBkc19wdXNoKHN0cnVjdCBkaXJzdGFjayAq ZHMsIGludCBmZCkKKyAJcmV0dXJuIDA7CisgfQorIAorLS8qIERldGFjaCB0aGUgY3VycmVudCBk aXIgYXMgYW4gb3duZWQgZmQgdGhlIGNhbGxlciBtdXN0IGNsb3NlLiAgQXQgdGhlIGFuY2hvcgor LSAqICh0b3AgMCkgdGhlIGFuY2hvciBpcyBib3Jyb3dlZCwgc28gcmV0dXJuIGEgZnJlc2ggZHVw IG9mIGl0IGluc3RlYWQuICovCisrLyogRGV0YWNoIHRoZSBjdXJyZW50IHRyYXZlcnNhbCBkaXJm ZCBhcyBhbiBvd25lZCBmZCB0aGUgY2FsbGVyIG11c3QgY2xvc2UuICBBdAorKyAqIHRoZSBhbmNo b3IgKHRvcCAwKSB0aGUgYW5jaG9yIGlzIGJvcnJvd2VkLCBzbyBvcGVuIGEgZnJlc2ggdHJhdmVy c2FsIGZkLiAqLworIHN0YXRpYyBpbnQgZHNfdGFrZShzdHJ1Y3QgZGlyc3RhY2sgKmRzKQorIHsK KyAJaWYgKGRzLT50b3AgPiAwKQorIAkJcmV0dXJuIGRzLT5mZHNbZHMtPnRvcC0tXTsKKy0JcmV0 dXJuIG9wZW5hdChkcy0+ZmRzWzBdLCAiLiIsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlkpOworKwly ZXR1cm4gb3BlbmF0KGRzLT5mZHNbMF0sICIuIiwgZGlyZWN0b3J5X3RyYXZlcnNlX2ZsYWdzKCkp OworIH0KKyAKKyBzdGF0aWMgaW50IGRzX3dhbGtfcGF0aChzdHJ1Y3QgZGlyc3RhY2sgKmRzLCBj aGFyICpwYXRoLCBpbnQgKmhvcHMpOworQEAgLTI5MDIsNyArMjkyNSw3IEBAIHN0YXRpYyBpbnQg ZHNfZGVzY2VuZChzdHJ1Y3QgZGlyc3RhY2sgKmRzLCBjb25zdCBjaGFyICpwYXJ0LCBpbnQgKmhv cHMpCisgCQlyZXR1cm4gMDsKKyAJfQorIAorLQlpbnQgZmQgPSBvcGVuYXQoZHNfY3VyKGRzKSwg cGFydCwgT19SRE9OTFkgfCBPX0RJUkVDVE9SWSB8IE9fTk9GT0xMT1cpOworKwlpbnQgZmQgPSBv cGVuYXQoZHNfY3VyKGRzKSwgcGFydCwgZGlyZWN0b3J5X3RyYXZlcnNlX2ZsYWdzKCkgfCBPX05P Rk9MTE9XKTsKKyAJaWYgKGZkICE9IC0xKSB7CQkJCQkvKiBhIHJlYWwgc3ViZGlyZWN0b3J5ICov CisgCQlpZiAoZHNfcHVzaChkcywgZmQpIDwgMCkKKyAJCQlyZXR1cm4gLTE7CitAQCAtMzAyNSw3 ICszMDQ4LDcgQEAgc3RhdGljIGludCBzZWN1cmVfd2Fsa19hdChpbnQgYW5jaG9yX2ZkLCBjb25z dCBjaGFyICphbmNob3JfYWJzcGF0aCwKKyAJCQkJZ290byBjbGVhbnVwOworIAkJCWlmIChpc19s YXN0KSB7CisgCQkJCWlmIChmbGFncyAmIE9fRElSRUNUT1JZKQorLQkJCQkJcmV0ZmQgPSBkc190 YWtlKCZkcyk7CisrCQkJCQlyZXRmZCA9IG9wZW5hdChkc19jdXIoJmRzKSwgIi4iLCBmbGFncyB8 IE9fTk9GT0xMT1csIG1vZGUpOworIAkJCQllbHNlCisgCQkJCQllcnJubyA9IEVJU0RJUjsKKyAJ CQkJZ290byBjbGVhbnVwOworQEAgLTMwNDUsNyArMzA2OCw4IEBAIHN0YXRpYyBpbnQgc2VjdXJl X3dhbGtfYXQoaW50IGFuY2hvcl9mZCwgY29uc3QgY2hhciAqYW5jaG9yX2Fic3BhdGgsCisgCQkJ CQlnb3RvIGNsZWFudXA7CisgCQkJCX0KKyAJCQl9CistCQkJaW50IG5leHRfZmQgPSBvcGVuYXQo ZHNfY3VyKCZkcyksIHBhcnQsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlkgfCBPX05PRk9MTE9XKTsK KysJCQlpbnQgbmV4dF9mZCA9IG9wZW5hdChkc19jdXIoJmRzKSwgcGFydCwKKysJCQkJCSAgICAg ZGlyZWN0b3J5X3RyYXZlcnNlX2ZsYWdzKCkgfCBPX05PRk9MTE9XKTsKKyAJCQlpZiAobmV4dF9m ZCA9PSAtMSAmJiAoZXJybm8gPT0gRU5PVERJUiB8fCBlcnJubyA9PSBFTk9FTlQpKSB7CisgCQkJ CXJldGZkID0gb3BlbmF0KGRzX2N1cigmZHMpLCBwYXJ0LCBmbGFncyB8IE9fTk9GT0xMT1csIG1v ZGUpOworIAkJCQlnb3RvIGNsZWFudXA7CitAQCAtMzA1OSw3ICszMDgzLDcgQEAgc3RhdGljIGlu dCBzZWN1cmVfd2Fsa19hdChpbnQgYW5jaG9yX2ZkLCBjb25zdCBjaGFyICphbmNob3JfYWJzcGF0 aCwKKyAKKyAJCS8qIE9fRElSRUNUT1JZfE9fTk9GT0xMT1cgbGVhZjogdGhlIGNhbGxlcidzIE9f Tk9GT0xMT1cgZ292ZXJucyB0aGUgbGVhZi4gKi8KKyAJCWlmIChpc19sYXN0ICYmIChmbGFncyAm IE9fTk9GT0xMT1cpKSB7CistCQkJcmV0ZmQgPSBvcGVuYXQoZHNfY3VyKCZkcyksIHBhcnQsIE9f UkRPTkxZIHwgT19ESVJFQ1RPUlkgfCBPX05PRk9MTE9XKTsKKysJCQlyZXRmZCA9IG9wZW5hdChk c19jdXIoJmRzKSwgcGFydCwgZmxhZ3MgfCBPX05PRk9MTE9XLCBtb2RlKTsKKyAJCQlnb3RvIGNs ZWFudXA7CisgCQl9CisgCitAQCAtMzA3MSwxNyArMzA5NSwxNyBAQCBzdGF0aWMgaW50IHNlY3Vy ZV93YWxrX2F0KGludCBhbmNob3JfZmQsIGNvbnN0IGNoYXIgKmFuY2hvcl9hYnNwYXRoLAorIAkJ CWdvdG8gY2xlYW51cDsKKyAJCX0KKyAJCWlmIChpc19sYXN0KSB7CistCQkJcmV0ZmQgPSBkc190 YWtlKCZkcyk7CisrCQkJcmV0ZmQgPSBvcGVuYXQoZHNfY3VyKCZkcyksICIuIiwgZmxhZ3MgfCBP X05PRk9MTE9XLCBtb2RlKTsKKyAJCQlnb3RvIGNsZWFudXA7CisgCQl9CisgCX0KKyAKKy0JLyog RW1wdHkgcmVscGF0aDogaGFuZCBiYWNrIGEgcmVhbCBhbmNob3IgZm9yIGFuIE9fRElSRUNUT1JZ IGNhbGxlciAoZHNfdGFrZQorLQkgKiBkdXBzIHRoZSBib3Jyb3dlZCBhbmNob3IpLCBlbHNlIEVJ U0RJUi4gIEFuIEFUX0ZEQ1dEIGFuY2hvciBpcyBub3QgYQorLQkgKiByZXNvbHZhYmxlIHRhcmdl dCwgc28gaXQgZmFpbHMgcmF0aGVyIHRoYW4gc2lsZW50bHkgcmV0dXJuaW5nIHRoZSBjd2QuICov CisrCS8qIEVtcHR5IHJlbHBhdGg6IHJlb3BlbiB0aGUgYW5jaG9yIHdpdGggdGhlIGNhbGxlcidz IHJlcXVlc3RlZCBkaXJlY3RvcnkKKysJICogYWNjZXNzLCBlbHNlIEVJU0RJUi4gIEFuIEFUX0ZE Q1dEIGFuY2hvciBpcyBub3QgYSByZXNvbHZhYmxlIHRhcmdldCwgc28gaXQKKysJICogZmFpbHMg cmF0aGVyIHRoYW4gc2lsZW50bHkgcmV0dXJuaW5nIHRoZSBjd2QuICovCisgCWlmICghc2F3X2Nv bXBvbmVudCkgeworIAkJaWYgKChmbGFncyAmIE9fRElSRUNUT1JZKSAmJiBhbmNob3JfZmQgIT0g QVRfRkRDV0QpCistCQkJcmV0ZmQgPSBkc190YWtlKCZkcyk7CisrCQkJcmV0ZmQgPSBvcGVuYXQo YW5jaG9yX2ZkLCAiLiIsIGZsYWdzIHwgT19OT0ZPTExPVywgbW9kZSk7CisgCQllbHNlCisgCQkJ ZXJybm8gPSBFSVNESVI7CisgCX0KK0BAIC0zMjM0LDYgKzMyNTgsMTQgQEAgaW50IHNlY3VyZV9y ZWxhdGl2ZV9vcGVuKGNvbnN0IGNoYXIgKmJhc2VkaXIsIGNvbnN0IGNoYXIgKnJlbHBhdGgsIGlu dCBmbGFncywgbW8KKyAjZW5kaWYgLy8gT19OT0ZPTExPVywgT19ESVJFQ1RPUlkKKyB9CisgCisr LyogUmVzb2x2ZSBhIGRpcmVjdG9yeSBmb3IgdHJhdmVyc2FsIG9yIGFzICphdCgpL2ZjaGRpcigp IGF1dGhvcml0eS4gIENhbGxlcnMKKysgKiB0aGF0IHJlYWQgZGlyZWN0b3J5IGVudHJpZXMgb3Ig bmVlZCBhIHJlYWQtY2FwYWJsZSBmZCBtdXN0IGNvbnRpbnVlIHRvIHVzZQorKyAqIHNlY3VyZV9y ZWxhdGl2ZV9vcGVuKC4uLiwgT19SRE9OTFkgfCBPX0RJUkVDVE9SWSwgLi4uKS4gKi8KKytpbnQg c2VjdXJlX3JlbGF0aXZlX2RpcmZkKGNvbnN0IGNoYXIgKmJhc2VkaXIsIGNvbnN0IGNoYXIgKnJl bHBhdGgpCisreworKwlyZXR1cm4gc2VjdXJlX3JlbGF0aXZlX29wZW4oYmFzZWRpciwgcmVscGF0 aCwgZGlyZWN0b3J5X3RyYXZlcnNlX2ZsYWdzKCksIDApOworK30KKysKKyAvKiBDb21tb24gZmQt YW5jaG9yZWQgcmVzb2x2ZXIuICBBIGNhbGxlciBtYXkgZXhwbGljaXRseSBhbGxvdyBsaXRlcmFs ICIuLiIKKyAgKiBjb21wb25lbnRzIHdoZW4gdGhlIGZkIGl0c2VsZiBpcyB0aGUgY29uZmluZW1l bnQgYm91bmRhcnk6IHNlY3VyZV93YWxrX2F0KCkKKyAgKiByZXNvbHZlcyBlYWNoIG9uZSBieSBw b3BwaW5nIGl0cyBoZWxkLWRpcmZkIHN0YWNrIGFuZCByZWZ1c2VzIGEgcG9wIGFib3ZlIHRoZQor QEAgLTMyODgsNiArMzMyMCwxMiBAQCBpbnQgc2VjdXJlX3JlbGF0aXZlX29wZW5fYXRfYmVuZWF0 aChpbnQgYW5jaG9yX2ZkLCBjb25zdCBjaGFyICpyZWxwYXRoLAorIAlyZXR1cm4gc2VjdXJlX3Jl bGF0aXZlX29wZW5fYXRfaW50ZXJuYWwoYW5jaG9yX2ZkLCByZWxwYXRoLCBmbGFncywgbW9kZSwg MSk7CisgfQorIAorK2ludCBzZWN1cmVfcmVsYXRpdmVfZGlyZmRfYXRfYmVuZWF0aChpbnQgYW5j aG9yX2ZkLCBjb25zdCBjaGFyICpyZWxwYXRoKQorK3sKKysJcmV0dXJuIHNlY3VyZV9yZWxhdGl2 ZV9vcGVuX2F0X2ludGVybmFsKGFuY2hvcl9mZCwgcmVscGF0aCwKKysJCQkJCQlkaXJlY3Rvcnlf dHJhdmVyc2VfZmxhZ3MoKSwgMCwgMSk7CisrfQorKworICNpZiBkZWZpbmVkIE9fTk9GT0xMT1cg JiYgZGVmaW5lZCBPX0RJUkVDVE9SWSAmJiBkZWZpbmVkIEFUX0ZEQ1dECisgLyogRmlsbCBidWYg d2l0aCBsZW4gcmFuZG9tIGJ5dGVzLiAgUHJlZmVycyAvZGV2L3VyYW5kb20gZm9yIGNyeXB0b2dy YXBoaWMKKyAgKiBxdWFsaXR5OyBmYWxscyBiYWNrIHRvIHJhbmQoKSBpZiAvZGV2L3VyYW5kb20g Y2Fubm90IGJlIG9wZW5lZCBvciByZWFkCitAQCAtMzQyNCw4ICszNDYyLDggQEAgaW50IHNlY3Vy ZV9ta3N0ZW1wKGNoYXIgKnRlbXBsYXRlLCBtb2RlX3QgcGVybXMsIGludCBvcGVyYXRvcl9wYXRo KQorIAkJCWRpciA9IGRpcmJ1ZjsKKyAJCX0KKyAJCWRpcmZkID0gb3BlcmF0b3JfcGF0aAorLQkJ ICAgICAgPyBvcGVuX25vX2F0dGFja2VyX3N5bWxpbmtzKGRpciwgT19SRE9OTFkgfCBPX0RJUkVD VE9SWSwgMCkKKy0JCSAgICAgIDogc2VjdXJlX3JlbGF0aXZlX29wZW4oZGlyLCAiLiIsIE9fUkRP TkxZIHwgT19ESVJFQ1RPUlksIDApOworKwkJICAgICAgPyBvcGVuX25vX2F0dGFja2VyX3N5bWxp bmtzX2RpcmZkKGRpcikKKysJCSAgICAgIDogc2VjdXJlX3JlbGF0aXZlX2RpcmZkKGRpciwgIi4i KTsKKyAJCWlmIChkaXJmZCA8IDApCisgCQkJcmV0dXJuIC0xOworIAl9CitAQCAtMzQ5NCwxNCAr MzUzMiwxNCBAQCBpbnQgb3Blbl9kaXJfc2VjdXJlKGNvbnN0IGNoYXIgKmRpcm5hbWUpCisgCisg CWlmICghZGlybmFtZSB8fCAhKmRpcm5hbWUpIHsKKyAJCS8qIFRoZSB0cmFuc2ZlciByb290IGl0 c2VsZiAoZmlsZS0+ZGlybmFtZSA9PSBOVUxMKTogdGhlIGN3ZC4gKi8KKy0JCWRmZCA9IG9wZW5h dChBVF9GRENXRCwgIi4iLCBPX1JET05MWSB8IE9fRElSRUNUT1JZKTsKKysJCWRmZCA9IG9wZW5h dChBVF9GRENXRCwgIi4iLCBkaXJlY3RvcnlfdHJhdmVyc2VfZmxhZ3MoKSk7CisgCX0gZWxzZSBp ZiAoZGlybmFtZVswXSA9PSAnLycpIHsKKyAJCS8qIEFuIGFic29sdXRlIGRpcm5hbWUgaXMgbm90 IGV4cGVjdGVkIGZvciBhbiBpbi10cmFuc2ZlciBlbnRyeTsKKyAJCSAqIGxlYXZlIGl0IHRvIHRo ZSBsZWdhY3kgcGF0aC4gKi8KKyAJCWVycm5vID0gMDsKKyAJCXJldHVybiAtMTsKKyAJfSBlbHNl IHsKKy0JCWRmZCA9IHNlY3VyZV9yZWxhdGl2ZV9vcGVuKE5VTEwsIGRpcm5hbWUsIE9fUkRPTkxZ IHwgT19ESVJFQ1RPUlksIDApOworKwkJZGZkID0gc2VjdXJlX3JlbGF0aXZlX2RpcmZkKE5VTEws IGRpcm5hbWUpOworIAl9CisgCisgCWlmIChkZmQgPj0gMCkgeworZGlmZiAtLWdpdCBhL3Rlc3Rz dWl0ZS9za2lwbGlzdC9jeWd3aW4udHh0IGIvdGVzdHN1aXRlL3NraXBsaXN0L2N5Z3dpbi50eHQK K2luZGV4IGJhNDk5Y2MuLjM0N2I2OWIgMTAwNjQ0CistLS0gYS90ZXN0c3VpdGUvc2tpcGxpc3Qv Y3lnd2luLnR4dAorKysrIGIvdGVzdHN1aXRlL3NraXBsaXN0L2N5Z3dpbi50eHQKK0BAIC01Niw2 ICs1Niw3IEBAIHJlbmFtZS1taXhlZC1wYXJlbnQtdHJhbnNmZXIKKyBycnN5bmMtc2VuZGVyLWxl YWYtZmxpcAorIHJyc3luYy1zZW5kZXItcGFyZW50LXBpbgorIHJyc3luYy1zeW1saW5rCisrc2Vh cmNoLW9ubHktZGVzdGluYXRpb24KKyBzZW5kZXItcmVtb3ZlLXNvdXJjZS1yb290LWFuY2hvcgor IHNpbWQtY2hlY2tzdW0KKyBzb3VyY2UtY2hhbmdlLXNpemUtY29udGludWVzCitkaWZmIC0tZ2l0 IGEvdGVzdHN1aXRlL3NraXBsaXN0L21hY29zLnR4dCBiL3Rlc3RzdWl0ZS9za2lwbGlzdC9tYWNv cy50eHQKK2luZGV4IDNlNzY1M2MuLmNlNDE1YmUgMTAwNjQ0CistLS0gYS90ZXN0c3VpdGUvc2tp cGxpc3QvbWFjb3MudHh0CisrKysgYi90ZXN0c3VpdGUvc2tpcGxpc3QvbWFjb3MudHh0CitAQCAt MjYsNiArMjYsNyBAQCByZWFkb25seS1wYXJ0aWFsLWFib3J0LW1vZGUtcmVncmVzc2lvbiAgIwor IHJyc3luYy1zZW5kZXItbGVhZi1mbGlwCisgcnJzeW5jLXNlbmRlci1wYXJlbnQtcGluCisgcnJz eW5jLXN5bWxpbmsKKytzZWFyY2gtb25seS1kZXN0aW5hdGlvbgorIHNlbmRlci1yZW1vdmUtc291 cmNlLXJvb3QtYW5jaG9yCisgc2ltZC1jaGVja3N1bQorIHNvdXJjZS1jaGFuZ2Utc2l6ZS1jb250 aW51ZXMKK2RpZmYgLS1naXQgYS91dGlsMS5jIGIvdXRpbDEuYworaW5kZXggODdmZjIyNS4uOTU1 ZDIwNCAxMDA2NDQKKy0tLSBhL3V0aWwxLmMKKysrKyBiL3V0aWwxLmMKK0BAIC0xMjUyLDcgKzEy NTIsNyBAQCBpbnQgY2hhbmdlX2Rpcihjb25zdCBjaGFyICpkaXIsIGludCBzZXRfcGF0aF9vbmx5 KQorIAkJCSAqIG5vbi1kYWVtb24gcmVjZWl2ZXIgY2FuIG9wdCBiYWNrIGludG8gdGhlIGxlZ2Fj eSBwbGFpbiBjaGRpciB3aXRoCisgCQkJICogLS1pbnNlY3VyZS1saW5rcy4gKi8KKyAJCQlpZiAo YW1fZGFlbW9uICYmICFhbV9jaHJvb3RlZCkgeworLQkJCQlpbnQgZGZkID0gb3Blbl9ub19hdHRh Y2tlcl9zeW1saW5rcyhkaXIsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlksIDApOworKwkJCQlpbnQg ZGZkID0gb3Blbl9ub19hdHRhY2tlcl9zeW1saW5rc19kaXJmZChkaXIpOworIAkJCQlpZiAoZGZk IDwgMCkKKyAJCQkJCXJldHVybiAwOworIAkJCQlpZiAoZmNoZGlyKGRmZCkgIT0gMCkgeworQEAg LTEyODMsNyArMTI4Myw3IEBAIGludCBjaGFuZ2VfZGlyKGNvbnN0IGNoYXIgKmRpciwgaW50IHNl dF9wYXRoX29ubHkpCisgCQkJCSAqIGFub3RoZXIgdWlkLiAgQSByZWFsIGRpciBpcyBvcGVuZWQg ZGlyZWN0bHkuICBUaGlzIGNsb3NlcyB0aGUKKyAJCQkJICogZGVzdGluYXRpb24gY2hkaXIgVE9D VE9VOyAtLWluc2VjdXJlLWxpbmtzIGtlZXBzIHRoZSBwbGFpbgorIAkJCQkgKiBjaGRpciBmb3Ig YW4gb3BlcmF0b3Igd2hvc2UgZGVzdCBpcyBhIGZvcmVpZ24tb3duZWQgc3ltbGluay4gKi8KKy0J CQkJZGZkID0gb3Blbl9ub19hdHRhY2tlcl9zeW1saW5rcyhuZiwgT19SRE9OTFkgfCBPX0RJUkVD VE9SWSwgMCk7CisrCQkJCWRmZCA9IG9wZW5fbm9fYXR0YWNrZXJfc3ltbGlua3NfZGlyZmQobmYp OworIAkJCQlpZiAoZGZkIDwgMCkKKyAJCQkJCXJldHVybiAwOworIAkJCQlpZiAoZmNoZGlyKGRm ZCkgIT0gMCkgeworQEAgLTEzNDQsOCArMTM0NCw3IEBAIGludCBjaGFuZ2VfZGlyKGNvbnN0IGNo YXIgKmRpciwgaW50IHNldF9wYXRoX29ubHkpCisgCQkJCQlwcmVmaXhbc2F2ZV9kaXJfbGVuXSA9 ICdcMCc7CisgCQkJCQliYXNlZGlyID0gcHJlZml4OworIAkJCQl9CistCQkJCWRmZCA9IHNlY3Vy ZV9yZWxhdGl2ZV9vcGVuKGJhc2VkaXIsIGRpciwKKy0JCQkJCU9fUkRPTkxZIHwgT19ESVJFQ1RP UlksIDApOworKwkJCQlkZmQgPSBzZWN1cmVfcmVsYXRpdmVfZGlyZmQoYmFzZWRpciwgZGlyKTsK KyAJCQkJaWYgKGRmZCA8IDApIHsKKyAJCQkJCWNoZGlyX2ZhaWxlZCA9IDE7CisgCQkJCX0gZWxz ZSB7CitAQCAtMTM2Myw4ICsxMzYyLDcgQEAgaW50IGNoYW5nZV9kaXIoY29uc3QgY2hhciAqZGly LCBpbnQgc2V0X3BhdGhfb25seSkKKyAJCQkJICogc3ltbGluayBub3Qgb3duZWQgYnkgdWlkIDAg b3Igb3VyIGV1aWQsIGNsb3NpbmcgdGhlCisgCQkJCSAqIHJlbGF0aXZlLWRlc3QgY2hkaXIgVE9D VE9VIHdoaWxlIHN0aWxsIGZvbGxvd2luZyB0aGUgb3BlcmF0b3IncworIAkJCQkgKiBvd24gc3lt bGlua3MuICAtLWluc2VjdXJlLWxpbmtzIGtlZXBzIHRoZSBwbGFpbiBjaGRpci4gKi8KKy0JCQkJ aW50IGRmZCA9IG9wZW5fbm9fYXR0YWNrZXJfc3ltbGlua3MoY3Vycl9kaXIsCistCQkJCQlPX1JE T05MWSB8IE9fRElSRUNUT1JZLCAwKTsKKysJCQkJaW50IGRmZCA9IG9wZW5fbm9fYXR0YWNrZXJf c3ltbGlua3NfZGlyZmQoY3Vycl9kaXIpOworIAkJCQlpZiAoZGZkIDwgMCkKKyAJCQkJCWNoZGly X2ZhaWxlZCA9IDE7CisgCQkJCWVsc2UgeworZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS9za2lwbGlz dC9jeWd3aW4udHh0IGIvdGVzdHN1aXRlL3NraXBsaXN0L2N5Z3dpbi50eHQKK2luZGV4IDM0N2I2 OWIuLjVhNWZjMDYgMTAwNjQ0CistLS0gYS90ZXN0c3VpdGUvc2tpcGxpc3QvY3lnd2luLnR4dAor KysrIGIvdGVzdHN1aXRlL3NraXBsaXN0L2N5Z3dpbi50eHQKK0BAIC01Nyw2ICs1Nyw3IEBAIHJy c3luYy1zZW5kZXItbGVhZi1mbGlwCisgcnJzeW5jLXNlbmRlci1wYXJlbnQtcGluCisgcnJzeW5j LXN5bWxpbmsKKyBzZWFyY2gtb25seS1kZXN0aW5hdGlvbgorK3NlYXJjaC1vbmx5LWhlbGQtZGly ZmQKKyBzZW5kZXItcmVtb3ZlLXNvdXJjZS1yb290LWFuY2hvcgorIHNpbWQtY2hlY2tzdW0KKyBz b3VyY2UtY2hhbmdlLXNpemUtY29udGludWVzCitkaWZmIC0tZ2l0IGEvdGVzdHN1aXRlL3NraXBs aXN0L21hY29zLnR4dCBiL3Rlc3RzdWl0ZS9za2lwbGlzdC9tYWNvcy50eHQKK2luZGV4IGNlNDE1 YmUuLmIxNzI1YzQgMTAwNjQ0CistLS0gYS90ZXN0c3VpdGUvc2tpcGxpc3QvbWFjb3MudHh0Cisr KysgYi90ZXN0c3VpdGUvc2tpcGxpc3QvbWFjb3MudHh0CitAQCAtMjcsNiArMjcsNyBAQCBycnN5 bmMtc2VuZGVyLWxlYWYtZmxpcAorIHJyc3luYy1zZW5kZXItcGFyZW50LXBpbgorIHJyc3luYy1z eW1saW5rCisgc2VhcmNoLW9ubHktZGVzdGluYXRpb24KKytzZWFyY2gtb25seS1oZWxkLWRpcmZk Cisgc2VuZGVyLXJlbW92ZS1zb3VyY2Utcm9vdC1hbmNob3IKKyBzaW1kLWNoZWNrc3VtCisgc291 cmNlLWNoYW5nZS1zaXplLWNvbnRpbnVlcworZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS9zZWFyY2gt b25seS1kZXN0aW5hdGlvbl90ZXN0LnB5IGIvdGVzdHN1aXRlL3NlYXJjaC1vbmx5LWRlc3RpbmF0 aW9uX3Rlc3QucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLjQ2MTA4 ZTJmNQorLS0tIC9kZXYvbnVsbAorKysrIGIvdGVzdHN1aXRlL3NlYXJjaC1vbmx5LWRlc3RpbmF0 aW9uX3Rlc3QucHkKK0BAIC0wLDAgKzEsNzcgQEAKKysjIS91c3IvYmluL2VudiBweXRob24zCisr IiIiVGhlIHJlY2VpdmVyIG11c3QgdHJhdmVyc2UgYSBzZWFyY2hhYmxlIGJ1dCB1bnJlYWRhYmxl IGRlc3RpbmF0aW9uIHBhcmVudC4KKysKKytBbmRyb2lkIGV4cG9zZXMgL3NkY2FyZCB0aHJvdWdo IHN1Y2ggYSBwYXRoLCBzbyB0aGUgcmFjZS1zYWZlIGRlc3RpbmF0aW9uIHdhbGsKKyttdXN0IHVz ZSBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgdGhhdCByZXF1aXJlIHNlYXJjaCBwZXJtaXNzaW9uIG9u bHkuCisrIiIiCisrCisraW1wb3J0IG9zCisraW1wb3J0IHNodXRpbAorK2ltcG9ydCBzdWJwcm9j ZXNzCisraW1wb3J0IHN5cworK2ltcG9ydCB0ZW1wZmlsZQorK2Zyb20gcGF0aGxpYiBpbXBvcnQg UGF0aAorKworK2Zyb20gcnN5bmNmbnMgaW1wb3J0IFNDUkFUQ0hESVIsIHJtdHJlZSwgcnN5bmNf YXJndiwgdGVzdF9mYWlsLCB0ZXN0X3NraXBwZWQKKysKKytpZiBub3Qgc3lzLnBsYXRmb3JtLnN0 YXJ0c3dpdGgoJ2xpbnV4Jyk6CisrICAgIHRlc3Rfc2tpcHBlZCgnc2VhcmNoLW9ubHktZGVzdGlu YXRpb24gaXMgTGludXgtc3BlY2lmaWMnKQorKworK2xhdW5jaGVyID0gW10KKytpZiBvcy5nZXRl dWlkKCkgPT0gMDoKKysgICAgc2V0cHJpdiA9IHNodXRpbC53aGljaCgnc2V0cHJpdicpCisrICAg IGlmIHNldHByaXYgaXMgTm9uZToKKysgICAgICAgIHRlc3Rfc2tpcHBlZCgnc2V0cHJpdiBpcyB1 bmF2YWlsYWJsZSBmb3IgdGhlIHJvb3QtcnVuIHRlc3RzdWl0ZScpCisrICAgIGxhdW5jaGVyID0g W3NldHByaXYsICctLXJldWlkPTY1NTM0JywgJy0tcmVnaWQ9NjU1MzQnLCAnLS1jbGVhci1ncm91 cHMnXQorKworK2V4dGVybmFsX2Jhc2UgPSBvcy5nZXRldWlkKCkgPT0gMAorK2lmIGV4dGVybmFs X2Jhc2U6CisrICAgIGJhc2UgPSBQYXRoKHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdyc3luYy1z ZWFyY2gtb25seS0nKSkKKysgICAgYmFzZS5jaG1vZCgwbzc1NSkKKytlbHNlOgorKyAgICBiYXNl ID0gU0NSQVRDSERJUiAvICdzZWFyY2gtb25seS1kZXN0aW5hdGlvbicKKytzcmMgPSBiYXNlIC8g J3NyYycKKytwYXJlbnQgPSBiYXNlIC8gJ3NlYXJjaC1vbmx5JworK2Rlc3QgPSBwYXJlbnQgLyAn ZGVzdCcKKytybXRyZWUoYmFzZSkKKytzcmMubWtkaXIocGFyZW50cz1UcnVlKQorK2Rlc3QubWtk aXIocGFyZW50cz1UcnVlKQorKyhzcmMgLyAncHJvYmUnKS53cml0ZV90ZXh0KCdzZWFyY2gtb25s eSBkZXN0aW5hdGlvblxuJykKKysKKytpZiBvcy5nZXRldWlkKCkgPT0gMDoKKysgICAgZm9yIHBh dGggaW4gKHNyYywgc3JjIC8gJ3Byb2JlJywgZGVzdCk6CisrICAgICAgICBvcy5jaG93bihwYXRo LCA2NTUzNCwgNjU1MzQpCisrCisrdHJ5OgorKyAgICBwYXJlbnQuY2htb2QoMG8xMTEpCisrICAg IHRyeToKKysgICAgICAgIHByb2JlID0gc3VicHJvY2Vzcy5ydW4oCisrICAgICAgICAgICAgbGF1 bmNoZXIgKyBbJ3Rlc3QnLCAnLXInLCBzdHIocGFyZW50KV0sCisrICAgICAgICAgICAgc3Rkb3V0 PXN1YnByb2Nlc3MuREVWTlVMTCwKKysgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZO VUxMLAorKyAgICAgICAgKQorKyAgICAgICAgaWYgcHJvYmUucmV0dXJuY29kZSA9PSAwOgorKyAg ICAgICAgICAgIHRlc3Rfc2tpcHBlZCgnZmlsZXN5c3RlbSBkb2VzIG5vdCBlbmZvcmNlIHRoZSBz ZWFyY2gtb25seSB0ZXN0IG1vZGUnKQorKyAgICAgICAgaWYgcHJvYmUucmV0dXJuY29kZSAhPSAx OgorKyAgICAgICAgICAgIHRlc3RfZmFpbChmJ3NlYXJjaC1vbmx5IHBlcm1pc3Npb24gcHJvYmUg ZmFpbGVkIHdpdGggZXhpdCB7cHJvYmUucmV0dXJuY29kZX0nKQorKworKyAgICAgICAgcHJvYyA9 IHN1YnByb2Nlc3MucnVuKAorKyAgICAgICAgICAgIGxhdW5jaGVyICsgcnN5bmNfYXJndignLWEn LCBmJ3tzcmN9LycsIGYne2Rlc3R9LycpLAorKyAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNz LlBJUEUsCisrICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKysgICAgICAgICAg ICB0ZXh0PVRydWUsCisrICAgICAgICApCisrICAgIGZpbmFsbHk6CisrICAgICAgICBwYXJlbnQu Y2htb2QoMG83NTUpCisrICAgIGNvcGllZCA9IChkZXN0IC8gJ3Byb2JlJykucmVhZF90ZXh0KCkg aWYgKGRlc3QgLyAncHJvYmUnKS5pc19maWxlKCkgZWxzZSBOb25lCisrZmluYWxseToKKysgICAg aWYgZXh0ZXJuYWxfYmFzZToKKysgICAgICAgIHJtdHJlZShiYXNlKQorKworK2lmIHByb2MucmV0 dXJuY29kZSAhPSAwOgorKyAgICB0ZXN0X2ZhaWwoCisrICAgICAgICAncmVjZWl2ZXIgY291bGQg bm90IGVudGVyIGEgZGVzdGluYXRpb24gYmVsb3cgYSBzZWFyY2hhYmxlLCB1bnJlYWRhYmxlICcK KysgICAgICAgIGYncGFyZW50IChleGl0IHtwcm9jLnJldHVybmNvZGV9KToge3Byb2Muc3RkZXJy LnN0cmlwKCl9JworKyAgICApCisraWYgY29waWVkICE9ICdzZWFyY2gtb25seSBkZXN0aW5hdGlv blxuJzoKKysgICAgdGVzdF9mYWlsKCdyZWNlaXZlciBkaWQgbm90IGNvcHkgaW50byB0aGUgc2Vh cmNoLW9ubHkgZGVzdGluYXRpb24nKQorZGlmZiAtLWdpdCBhL3Rlc3RzdWl0ZS9zZWFyY2gtb25s eS1oZWxkLWRpcmZkX3Rlc3QucHkgYi90ZXN0c3VpdGUvc2VhcmNoLW9ubHktaGVsZC1kaXJmZF90 ZXN0LnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi5lNGRhNDZmYmYK Ky0tLSAvZGV2L251bGwKKysrKyBiL3Rlc3RzdWl0ZS9zZWFyY2gtb25seS1oZWxkLWRpcmZkX3Rl c3QucHkKK0BAIC0wLDAgKzEsMjE1IEBACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworKyIiIktu b3duLW5hbWUgb3BlcmF0aW9ucyBtdXN0IG5vdCByZXF1aXJlIHBlcm1pc3Npb24gdG8gbGlzdCBw YXJlbnQgZGlycy4KKysKKytUaGUgY29uZmluZWQgcmVzb2x2ZXIgaG9sZHMgZGlyZWN0b3J5IGRl c2NyaXB0b3JzIHRvIHByZXZlbnQgc3ltbGluayByYWNlcy4KKytPbiBMaW51eCwgdGhvc2UgdHJh dmVyc2FsIGFuZCAqYXQoKSBhbmNob3IgZGVzY3JpcHRvcnMgY2FuIHVzZSBPX1BBVEg6IG9wZW5p bmcKKythIGtub3duIGZpbGUgYmVuZWF0aCBhIHNlYXJjaGFibGUgZGlyZWN0b3J5LCBvciBjcmVh dGluZyBvbmUgYmVuZWF0aCBhCisrd3JpdGFibGUvc2VhcmNoYWJsZSBkaXJlY3RvcnksIGRvZXMg bm90IHJlcXVpcmUgZGlyZWN0b3J5IHJlYWQgcGVybWlzc2lvbi4KKysiIiIKKysKKytpbXBvcnQg b3MKKytpbXBvcnQgc2h1dGlsCisraW1wb3J0IHN1YnByb2Nlc3MKKytpbXBvcnQgc3lzCisraW1w b3J0IHRlbXBmaWxlCisrZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCisrCisrZnJvbSByc3luY2Zu cyBpbXBvcnQgKAorKyAgICBTQ1JBVENIRElSLCBmb3JjZWRfcHJvdG9jb2wsIHJtdHJlZSwgcnN5 bmNfYXJndiwgdGVzdF9mYWlsLCB0ZXN0X3NraXBwZWQsCisrKQorKworK2lmIG5vdCBzeXMucGxh dGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKKysgICAgdGVzdF9za2lwcGVkKCdzZWFyY2gtb25s eSBoZWxkLWRpcmZkIGNvdmVyYWdlIGlzIExpbnV4LXNwZWNpZmljJykKKysKKytsYXVuY2hlciA9 IFtdCisraWYgb3MuZ2V0ZXVpZCgpID09IDA6CisrICAgIHNldHByaXYgPSBzaHV0aWwud2hpY2go J3NldHByaXYnKQorKyAgICBpZiBzZXRwcml2IGlzIE5vbmU6CisrICAgICAgICB0ZXN0X3NraXBw ZWQoJ3NldHByaXYgaXMgdW5hdmFpbGFibGUgZm9yIHRoZSByb290LXJ1biB0ZXN0c3VpdGUnKQor KyAgICBsYXVuY2hlciA9IFtzZXRwcml2LCAnLS1yZXVpZD02NTUzNCcsICctLXJlZ2lkPTY1NTM0 JywgJy0tY2xlYXItZ3JvdXBzJ10KKysKKytleHRlcm5hbF9iYXNlID0gb3MuZ2V0ZXVpZCgpID09 IDAKKytiYXNlID0gKAorKyAgICBQYXRoKHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdyc3luYy1z ZWFyY2gtb25seS1oZWxkLWRpcmZkLScpKQorKyAgICBpZiBleHRlcm5hbF9iYXNlCisrICAgIGVs c2UgU0NSQVRDSERJUiAvICdzZWFyY2gtb25seS1oZWxkLWRpcmZkJworKykKKytybXRyZWUoYmFz ZSkKKysKKytzcmMgPSBiYXNlIC8gJ3NyYycKKyt4b25seSA9IHNyYyAvICd4b25seScKKytyZWFk YWJsZSA9IHhvbmx5IC8gJ3JlYWRhYmxlJworK25lc3RlZF9zcmMgPSBzcmMgLyAnbmVzdGVkJwor K2V4YWN0X2Rlc3QgPSBiYXNlIC8gJ2V4YWN0LWRlc3QnCisrdHJlZV9kZXN0ID0gYmFzZSAvICd0 cmVlLWRlc3QnCisrdW5yZWFkYWJsZV9kZXN0ID0gYmFzZSAvICd1bnJlYWRhYmxlLWRlc3QnCisr d3JpdGVfb25seV9kZXN0ID0gYmFzZSAvICd3cml0ZS1vbmx5LWRlc3QnCisrbmVzdGVkX2Rlc3Qg PSBiYXNlIC8gJ25lc3RlZC1kZXN0JworK25lc3RlZF9wYXJlbnQgPSBuZXN0ZWRfZGVzdCAvICdu ZXN0ZWQnCisrZm9yIHBhdGggaW4gKAorKyAgICByZWFkYWJsZSwKKysgICAgbmVzdGVkX3NyYywK KysgICAgZXhhY3RfZGVzdCwKKysgICAgdHJlZV9kZXN0LAorKyAgICB1bnJlYWRhYmxlX2Rlc3Qs CisrICAgIHdyaXRlX29ubHlfZGVzdCwKKysgICAgbmVzdGVkX3BhcmVudCwKKyspOgorKyAgICBw YXRoLm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSkKKysKKysoeG9ubHkgLyAnZXhh Y3QnKS53cml0ZV90ZXh0KCdrbm93biBmaWxlIGJlbmVhdGggc2VhcmNoLW9ubHkgcGFyZW50XG4n KQorKyhyZWFkYWJsZSAvICduZXN0ZWQnKS53cml0ZV90ZXh0KCdlbnVtZXJhdGVkIGJlbG93IHNl YXJjaC1vbmx5IGFuY2VzdG9yXG4nKQorK2luY29taW5nID0gc3JjIC8gJ2luY29taW5nJworK2lu Y29taW5nLndyaXRlX3RleHQoJ2NyZWF0ZWQgYmVuZWF0aCB3cml0ZS1zZWFyY2gtb25seSBkZXN0 aW5hdGlvblxuJykKKysobmVzdGVkX3NyYyAvICdrbm93bicpLndyaXRlX3RleHQoCisrICAgICdj cmVhdGVkIGJlbmVhdGggbmVzdGVkIHdyaXRlLXNlYXJjaC1vbmx5IHBhcmVudFxuJworKykKKysK KytpZiBvcy5nZXRldWlkKCkgPT0gMDoKKysgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9z LndhbGsoYmFzZSk6CisrICAgICAgICBvcy5jaG93bihyb290LCA2NTUzNCwgNjU1MzQpCisrICAg ICAgICBmb3IgbmFtZSBpbiBkaXJzICsgZmlsZXM6CisrICAgICAgICAgICAgb3MuY2hvd24oUGF0 aChyb290KSAvIG5hbWUsIDY1NTM0LCA2NTUzNCkKKysKKysKKytkZWYgcGVybWlzc2lvbl9wcm9i ZShwYXRoLCBmbGFnLCBleHBlY3RlZCwgbGFiZWwpOgorKyAgICBwcm9jID0gc3VicHJvY2Vzcy5y dW4oCisrICAgICAgICBsYXVuY2hlciArIFsndGVzdCcsIGZsYWcsIHN0cihwYXRoKV0sCisrICAg ICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5ERVZOVUxMLAorKyAgICAgICAgc3RkZXJyPXN1YnByb2Nl c3MuREVWTlVMTCwKKysgICAgKQorKyAgICBpZiBwcm9jLnJldHVybmNvZGUgIT0gZXhwZWN0ZWQ6 CisrICAgICAgICB0ZXN0X3NraXBwZWQoCisrICAgICAgICAgICAgZidmaWxlc3lzdGVtIGRvZXMg bm90IGVuZm9yY2Uge2xhYmVsfTogdGVzdCB7ZmxhZ30gcmV0dXJuZWQgJworKyAgICAgICAgICAg IGYne3Byb2MucmV0dXJuY29kZX0sIGV4cGVjdGVkIHtleHBlY3RlZH0nCisrICAgICAgICApCisr CisrCisrZmFpbHVyZXMgPSBbXQorK3RyeToKKysgICAgeG9ubHkuY2htb2QoMG8xMTEpCisrICAg IHdyaXRlX29ubHlfZGVzdC5jaG1vZCgwbzMzMykKKysgICAgbmVzdGVkX3BhcmVudC5jaG1vZCgw bzMzMykKKysKKysgICAgcGVybWlzc2lvbl9wcm9iZSh4b25seSwgJy1yJywgMSwgJ3NlYXJjaC1v bmx5IG1vZGUnKQorKyAgICBwZXJtaXNzaW9uX3Byb2JlKHhvbmx5LCAnLXgnLCAwLCAnc2VhcmNo LW9ubHkgbW9kZScpCisrICAgIHBlcm1pc3Npb25fcHJvYmUod3JpdGVfb25seV9kZXN0LCAnLXIn LCAxLCAnd3JpdGUtc2VhcmNoLW9ubHkgbW9kZScpCisrICAgIHBlcm1pc3Npb25fcHJvYmUod3Jp dGVfb25seV9kZXN0LCAnLXcnLCAwLCAnd3JpdGUtc2VhcmNoLW9ubHkgbW9kZScpCisrICAgIHBl cm1pc3Npb25fcHJvYmUod3JpdGVfb25seV9kZXN0LCAnLXgnLCAwLCAnd3JpdGUtc2VhcmNoLW9u bHkgbW9kZScpCisrICAgIHBlcm1pc3Npb25fcHJvYmUobmVzdGVkX3BhcmVudCwgJy1yJywgMSwg J25lc3RlZCB3cml0ZS1zZWFyY2gtb25seSBtb2RlJykKKysgICAgcGVybWlzc2lvbl9wcm9iZShu ZXN0ZWRfcGFyZW50LCAnLXcnLCAwLCAnbmVzdGVkIHdyaXRlLXNlYXJjaC1vbmx5IG1vZGUnKQor KyAgICBwZXJtaXNzaW9uX3Byb2JlKG5lc3RlZF9wYXJlbnQsICcteCcsIDAsICduZXN0ZWQgd3Jp dGUtc2VhcmNoLW9ubHkgbW9kZScpCisrCisrICAgICMgS2VlcCByZWNlaXZlZCBpbXBsaWVkIGRp cnMgdXNhYmxlIG9uIHN5c3RlbXMgd2l0aG91dCBhIHNhZmUgZmNobW9kYXQyLgorKyAgICAjIFRo ZSBzb3VyY2UgcmVtYWlucyBtb2RlIDAxMTEsIHNvIHNlbmRlciB0cmF2ZXJzYWwgY292ZXJhZ2Ug aXMgdW5jaGFuZ2VkLgorKyAgICBleGFjdCA9IHN1YnByb2Nlc3MucnVuKAorKyAgICAgICAgbGF1 bmNoZXIgKyByc3luY19hcmd2KAorKyAgICAgICAgICAgICctYVInLCAnLS1jaG1vZD1EdStydycs ICd4b25seS9leGFjdCcsIGYne2V4YWN0X2Rlc3R9LycsCisrICAgICAgICApLAorKyAgICAgICAg Y3dkPXNyYywKKysgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisrICAgICAgICBzdGRl cnI9c3VicHJvY2Vzcy5QSVBFLAorKyAgICAgICAgdGV4dD1UcnVlLAorKyAgICApCisrICAgIGV4 YWN0X3BhdGggPSBleGFjdF9kZXN0IC8gJ3hvbmx5JyAvICdleGFjdCcKKysgICAgZXhhY3RfY29u dGVudCA9IGV4YWN0X3BhdGgucmVhZF90ZXh0KCkgaWYgZXhhY3RfcGF0aC5pc19maWxlKCkgZWxz ZSBOb25lCisrICAgIGlmIGV4YWN0LnJldHVybmNvZGUgIT0gMCBvciBleGFjdF9jb250ZW50ICE9 ICgKKysgICAgICAgICdrbm93biBmaWxlIGJlbmVhdGggc2VhcmNoLW9ubHkgcGFyZW50XG4nCisr ICAgICk6CisrICAgICAgICBmYWlsdXJlcy5hcHBlbmQoCisrICAgICAgICAgICAgJ2V4YWN0IC1S IHNvdXJjZSBiZW5lYXRoIG1vZGUgMDExMSBmYWlsZWQ6ICcKKysgICAgICAgICAgICBmJ3JjPXtl eGFjdC5yZXR1cm5jb2RlfSwgc3RkZXJyPXtleGFjdC5zdGRlcnIuc3RyaXAoKSFyfSwgJworKyAg ICAgICAgICAgIGYnY29udGVudD17ZXhhY3RfY29udGVudCFyfScKKysgICAgICAgICkKKysKKysg ICAgdHJlZSA9IHN1YnByb2Nlc3MucnVuKAorKyAgICAgICAgbGF1bmNoZXIgKyByc3luY19hcmd2 KAorKyAgICAgICAgICAgICctYVInLCAnLS1jaG1vZD1EdStydycsICd4b25seS9yZWFkYWJsZS8n LCBmJ3t0cmVlX2Rlc3R9LycsCisrICAgICAgICApLAorKyAgICAgICAgY3dkPXNyYywKKysgICAg ICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisrICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5Q SVBFLAorKyAgICAgICAgdGV4dD1UcnVlLAorKyAgICApCisrICAgIHRyZWVfcGF0aCA9IHRyZWVf ZGVzdCAvICd4b25seScgLyAncmVhZGFibGUnIC8gJ25lc3RlZCcKKysgICAgdHJlZV9jb250ZW50 ID0gdHJlZV9wYXRoLnJlYWRfdGV4dCgpIGlmIHRyZWVfcGF0aC5pc19maWxlKCkgZWxzZSBOb25l CisrICAgIGlmIHRyZWUucmV0dXJuY29kZSAhPSAwIG9yIHRyZWVfY29udGVudCAhPSAoCisrICAg ICAgICAnZW51bWVyYXRlZCBiZWxvdyBzZWFyY2gtb25seSBhbmNlc3RvclxuJworKyAgICApOgor KyAgICAgICAgZmFpbHVyZXMuYXBwZW5kKAorKyAgICAgICAgICAgICdyZWFkYWJsZSBkaXJlY3Rv cnkgYmVuZWF0aCBtb2RlIDAxMTEgYW5jZXN0b3IgZmFpbGVkOiAnCisrICAgICAgICAgICAgZidy Yz17dHJlZS5yZXR1cm5jb2RlfSwgc3RkZXJyPXt0cmVlLnN0ZGVyci5zdHJpcCgpIXJ9LCAnCisr ICAgICAgICAgICAgZidjb250ZW50PXt0cmVlX2NvbnRlbnQhcn0nCisrICAgICAgICApCisrCisr ICAgIHVucmVhZGFibGUgPSBzdWJwcm9jZXNzLnJ1bigKKysgICAgICAgIGxhdW5jaGVyICsgcnN5 bmNfYXJndigKKysgICAgICAgICAgICAnLWEnLCAneG9ubHkvJywgZid7dW5yZWFkYWJsZV9kZXN0 fS8nLAorKyAgICAgICAgKSwKKysgICAgICAgIGN3ZD1zcmMsCisrICAgICAgICBzdGRvdXQ9c3Vi cHJvY2Vzcy5QSVBFLAorKyAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKysgICAgICAg IHRleHQ9VHJ1ZSwKKysgICAgKQorKyAgICBpZiB1bnJlYWRhYmxlLnJldHVybmNvZGUgPT0gMDoK KysgICAgICAgIGZhaWx1cmVzLmFwcGVuZCgKKysgICAgICAgICAgICAnbW9kZSAwMTExIHNvdXJj ZSBkaXJlY3Rvcnkgd2FzIGVudW1lcmFibGUgd2l0aG91dCByZWFkIHBlcm1pc3Npb24nCisrICAg ICAgICApCisrCisrICAgIHJlY2VpdmVyID0gc3VicHJvY2Vzcy5ydW4oCisrICAgICAgICBsYXVu Y2hlciArIHJzeW5jX2FyZ3YoCisrICAgICAgICAgICAgJy10Jywgc3RyKGluY29taW5nKSwgZid7 d3JpdGVfb25seV9kZXN0fS8nLAorKyAgICAgICAgKSwKKysgICAgICAgIHN0ZG91dD1zdWJwcm9j ZXNzLlBJUEUsCisrICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorKyAgICAgICAgdGV4 dD1UcnVlLAorKyAgICApCisrICAgIHJlY2VpdmVkID0gd3JpdGVfb25seV9kZXN0IC8gJ2luY29t aW5nJworKyAgICByZWNlaXZlZF9jb250ZW50ID0gcmVjZWl2ZWQucmVhZF90ZXh0KCkgaWYgcmVj ZWl2ZWQuaXNfZmlsZSgpIGVsc2UgTm9uZQorKyAgICBpZiByZWNlaXZlci5yZXR1cm5jb2RlICE9 IDAgb3IgcmVjZWl2ZWRfY29udGVudCAhPSAoCisrICAgICAgICAnY3JlYXRlZCBiZW5lYXRoIHdy aXRlLXNlYXJjaC1vbmx5IGRlc3RpbmF0aW9uXG4nCisrICAgICk6CisrICAgICAgICBmYWlsdXJl cy5hcHBlbmQoCisrICAgICAgICAgICAgJ2tub3duLWZpbGUgY3JlYXRpb24gYmVuZWF0aCBtb2Rl IDAzMzMgZGVzdGluYXRpb24gZmFpbGVkOiAnCisrICAgICAgICAgICAgZidyYz17cmVjZWl2ZXIu cmV0dXJuY29kZX0sIHN0ZGVycj17cmVjZWl2ZXIuc3RkZXJyLnN0cmlwKCkhcn0sICcKKysgICAg ICAgICAgICBmJ2NvbnRlbnQ9e3JlY2VpdmVkX2NvbnRlbnQhcn0nCisrICAgICAgICApCisrCisr ICAgICMgUHJvdG9jb2wgMjkgcmVqZWN0cyB0aGlzIG5lc3RlZCAtUiBzaGFwZSBiZWZvcmUgdGhl IHJlc29sdmVyIGlzIHJlYWNoZWQuCisrICAgIHByb3RvID0gZm9yY2VkX3Byb3RvY29sKCkKKysg ICAgaWYgcHJvdG8gaXMgTm9uZSBvciBwcm90byA+PSAzMDoKKysgICAgICAgIG5lc3RlZF9yZWNl aXZlciA9IHN1YnByb2Nlc3MucnVuKAorKyAgICAgICAgICAgIGxhdW5jaGVyICsgcnN5bmNfYXJn digKKysgICAgICAgICAgICAgICAgJy10UicsICctLW5vLWltcGxpZWQtZGlycycsICduZXN0ZWQv a25vd24nLCBmJ3tuZXN0ZWRfZGVzdH0vJywKKysgICAgICAgICAgICApLAorKyAgICAgICAgICAg IGN3ZD1zcmMsCisrICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKysgICAgICAg ICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorKyAgICAgICAgICAgIHRleHQ9VHJ1ZSwKKysg ICAgICAgICkKKysgICAgICAgIG5lc3RlZF9yZWNlaXZlZCA9IG5lc3RlZF9wYXJlbnQgLyAna25v d24nCisrICAgICAgICBuZXN0ZWRfY29udGVudCA9ICgKKysgICAgICAgICAgICBuZXN0ZWRfcmVj ZWl2ZWQucmVhZF90ZXh0KCkgaWYgbmVzdGVkX3JlY2VpdmVkLmlzX2ZpbGUoKSBlbHNlIE5vbmUK KysgICAgICAgICkKKysgICAgICAgIGlmIG5lc3RlZF9yZWNlaXZlci5yZXR1cm5jb2RlICE9IDAg b3IgbmVzdGVkX2NvbnRlbnQgIT0gKAorKyAgICAgICAgICAgICdjcmVhdGVkIGJlbmVhdGggbmVz dGVkIHdyaXRlLXNlYXJjaC1vbmx5IHBhcmVudFxuJworKyAgICAgICAgKToKKysgICAgICAgICAg ICBmYWlsdXJlcy5hcHBlbmQoCisrICAgICAgICAgICAgICAgICdrbm93bi1maWxlIGNyZWF0aW9u IGJlbmVhdGggbmVzdGVkIG1vZGUgMDMzMyBkZXN0aW5hdGlvbiAnCisrICAgICAgICAgICAgICAg IGYnZmFpbGVkOiByYz17bmVzdGVkX3JlY2VpdmVyLnJldHVybmNvZGV9LCAnCisrICAgICAgICAg ICAgICAgIGYnc3RkZXJyPXtuZXN0ZWRfcmVjZWl2ZXIuc3RkZXJyLnN0cmlwKCkhcn0sICcKKysg ICAgICAgICAgICAgICAgZidjb250ZW50PXtuZXN0ZWRfY29udGVudCFyfScKKysgICAgICAgICAg ICApCisrZmluYWxseToKKysgICAgeG9ubHkuY2htb2QoMG83NTUpCisrICAgIHdyaXRlX29ubHlf ZGVzdC5jaG1vZCgwbzc1NSkKKysgICAgbmVzdGVkX3BhcmVudC5jaG1vZCgwbzc1NSkKKysgICAg Zm9yIGRlc3QgaW4gKGV4YWN0X2Rlc3QsIHRyZWVfZGVzdCk6CisrICAgICAgICBjb3BpZWRfeG9u bHkgPSBkZXN0IC8gJ3hvbmx5JworKyAgICAgICAgaWYgY29waWVkX3hvbmx5LmlzX2RpcigpOgor KyAgICAgICAgICAgIGNvcGllZF94b25seS5jaG1vZCgwbzc1NSkKKysgICAgaWYgZXh0ZXJuYWxf YmFzZToKKysgICAgICAgIHJtdHJlZShiYXNlKQorKworK2lmIGZhaWx1cmVzOgorKyAgICB0ZXN0 X2ZhaWwoJ1xuJy5qb2luKGZhaWx1cmVzKSkKCmRpZmYgLS1naXQgYS9yc3luYy5zcGVjIGIvcnN5 bmMuc3BlYwppbmRleCAyZTQyOGNkLi5mMzI5MTkxIDEwMDY0NAotLS0gYS9yc3luYy5zcGVjCisr KyBiL3JzeW5jLnNwZWMKQEAgLTYsNyArNiw3IEBACiBTdW1tYXJ5OiBBIHByb2dyYW0gZm9yIHN5 bmNocm9uaXppbmcgZmlsZXMgb3ZlciBhIG5ldHdvcmsKIE5hbWU6IHJzeW5jCiBWZXJzaW9uOiAz LjUuMAotUmVsZWFzZTogMSV7P2Rpc3R9CitSZWxlYXNlOiAyJXs/ZGlzdH0KIFVSTDogaHR0cHM6 Ly9yc3luYy5zYW1iYS5vcmcvCiAKIFNvdXJjZTA6IGh0dHBzOi8vZG93bmxvYWQuc2FtYmEub3Jn L3B1Yi9yc3luYy9zcmMvcnN5bmMtJXt2ZXJzaW9ufSV7P3ByZXJlbGVhc2V9LnRhci5negpAQCAt NDMsNiArNDMsMTIgQEAgUHJvdmlkZXM6IGJ1bmRsZWQoemxpYikgPSAxLjIuOAogI21lbnRpb25l ZCBoZXJlIGFzIHdlbGwuCiBMaWNlbnNlOiBHUEwtMy4wLW9yLWxhdGVyCiAKKyMgVGhpcyBpcyBh IHJlZ3Jlc3Npb24gdGhhdCBkZW5pZXMgcnN5bmMgdXNlciBhY2Nlc3MgdG8gbGVnaXQgcGF0aHMg bGlrZQorIyAvdmFyL3J1bi8gb3IgL3Zhci9sb2cvCisjIGh0dHBzOi8vZ2l0aHViLmNvbS9zeXNm Y2UyL3JzeW5jL2NvbW1pdC8zYjFlYjhkZAorIyBodHRwczovL2dpdGh1Yi5jb20vc3lzZmNlMi9y c3luYy9jb21taXQvMjQwYmQ5ZGYKK1BhdGNoMTogcnN5bmMtMy41LjAtb19wYXRoLWRpci10cmF2 ZXJzYWwucGF0Y2gKKwogJWRlc2NyaXB0aW9uCiBSc3luYyB1c2VzIGEgcmVsaWFibGUgYWxnb3Jp dGhtIHRvIGJyaW5nIHJlbW90ZSBhbmQgaG9zdCBmaWxlcyBpbnRvCiBzeW5jIHZlcnkgcXVpY2ts eS4gUnN5bmMgaXMgZmFzdCBiZWNhdXNlIGl0IGp1c3Qgc2VuZHMgdGhlIGRpZmZlcmVuY2VzCkBA IC0xMzgsNiArMTQ0LDkgQEAgaW5zdGFsbCAtRCAtbTY0NCAle1NPVVJDRTZ9ICRSUE1fQlVJTERf Uk9PVC8le191bml0ZGlyfS9yc3luY2RALnNlcnZpY2UKICVzeXN0ZW1kX3Bvc3R1bl93aXRoX3Jl c3RhcnQgcnN5bmNkLnNlcnZpY2UKIAogJWNoYW5nZWxvZworKiBUdWUgU2VwIDA4IDIwMjYgTWlj aGFsIFJ1cHJpY2ggPG1ydXByaWNoQHJlZGhhdC5jb20+IC0gMy41LjAtMgorLSBGaXhpbmcgYSBw YXRoIHRyYXZlcnNhbCByZWdyZXNzaW9uCisKICogVHVlIEF1ZyAxOCAyMDI2IE1pY2hhbCBSdXBy aWNoIDxtcnVwcmljaEByZWRoYXQuY29tPiAtIDMuNS4wLTEKIC0gTmV3IHZlcnNpb24gMy41LjAK IAo=