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: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: Merge branch 'rawhide' of ssh://pkgs.fedoraproject.org/rpms/gcc into rawhide Date: Mon, 29 Jun 2026 12:29:37 GMT Message-ID: <178273617777.1.16051954314039080941.rpms-gcc-0bdfca38c6be@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 0bdfca38c6bec8e4afcd5e8b0af49d74c7eb0810 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogMGJkZmNhMzhjNmJlYzhlNGFmY2Q1ZThiMGFmNDlkNzRj N2ViMDgxMApBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPgpEYXRlICAg OiAyMDIyLTAxLTI1VDE0OjA0OjI4KzAxOjAwClN0YXRzICA6ICsxMjI1Ly0xOTQgaW4gOSBmaWxl KHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2NjL2MvMGJk ZmNhMzhjNmJlYzhlNGFmY2Q1ZThiMGFmNDlkNzRjN2ViMDgxMD9icmFuY2g9cmhlbC1mNDEtYmFz ZQoKTG9nOgpNZXJnZSBicmFuY2ggJ3Jhd2hpZGUnIG9mIHNzaDovL3BrZ3MuZmVkb3JhcHJvamVj dC5vcmcvcnBtcy9nY2MgaW50byByYXdoaWRlCgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUg Yi8uZ2l0aWdub3JlCmluZGV4IDIxZGNmNjEuLjk5MGI1MTYgMTAwNjQ0Ci0tLSBhLy5naXRpZ25v cmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtNTgsMyArNTgsNCBAQAogL2djYy0xMi4wLjAtMjAyMjAx MTIudGFyLnh6CiAvZ2NjLTEyLjAuMC0yMDIyMDExNS50YXIueHoKIC9nY2MtMTIuMC4xLTIwMjIw MTE4LnRhci54egorL2djYy0xMi4wLjEtMjAyMjAxMjUudGFyLnh6CgpkaWZmIC0tZ2l0IGEvZ2Nj LnNwZWMgYi9nY2Muc3BlYwppbmRleCAwNWI1NWY4Li40OWE5NGY2IDEwMDY0NAotLS0gYS9nY2Mu c3BlYworKysgYi9nY2Muc3BlYwpAQCAtMSw0ICsxLDQgQEAKLSVnbG9iYWwgREFURSAyMDIyMDEx OAorJWdsb2JhbCBEQVRFIDIwMjIwMTI1CiAlZ2xvYmFsIGdpdHJldiBjNjgyYmM4ODNkMWEyOWMz ZjY5N2YwNjVhZjIzNzU5ZjNkNjc1N2JjCiAlZ2xvYmFsIGdjY192ZXJzaW9uIDEyLjAuMQogJWds b2JhbCBnY2NfbWFqb3IgMTIKQEAgLTExLDYgKzExLDcgQEAKICVnbG9iYWwgX3BlcmZvcm1hbmNl X2J1aWxkIDEKICMgSGFyZGVuaW5nIHNsb3dzIHRoZSBjb21waWxlciB3YXkgdG9vIG11Y2guCiAl dW5kZWZpbmUgX2hhcmRlbmVkX2J1aWxkCisldW5kZWZpbmUgX2F1dG9fc2V0X2J1aWxkX2ZsYWdz CiAlaWYgMCV7P2ZlZG9yYX0gPiAyNyB8fCAwJXs/cmhlbH0gPiA3CiAjIFVudGlsIGFubm9iaW4g aXMgZml4ZWQgKCMxNTE5MTY1KS4KICV1bmRlZmluZSBfYW5ub3RhdGVkX2J1aWxkCkBAIC0xMTks NyArMTIwLDcgQEAKIFN1bW1hcnk6IFZhcmlvdXMgY29tcGlsZXJzIChDLCBDKyssIE9iamVjdGl2 ZS1DLCAuLi4pCiBOYW1lOiBnY2MKIFZlcnNpb246ICV7Z2NjX3ZlcnNpb259Ci1SZWxlYXNlOiAl e2djY19yZWxlYXNlfS4yJXs/ZGlzdH0uMQorUmVsZWFzZTogJXtnY2NfcmVsZWFzZX0uMyV7P2Rp c3R9CiAjIGxpYmdjYywgbGliZ2ZvcnRyYW4sIGxpYmdvbXAsIGxpYnN0ZGMrKyBhbmQgY3J0c3R1 ZmYgaGF2ZQogIyBHQ0MgUnVudGltZSBFeGNlcHRpb24uCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQ THYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIExHUEx2 MisgYW5kIEJTRApAQCAtMjY5LDkgKzI3MCw5IEBAIFBhdGNoODogZ2NjMTItbm8tYWRkLW5lZWRl ZC5wYXRjaAogUGF0Y2g5OiBnY2MxMi1Xbm8tZm9ybWF0LXNlY3VyaXR5LnBhdGNoCiBQYXRjaDEw OiBnY2MxMi1yaDE1NzQ5MzYucGF0Y2gKIFBhdGNoMTE6IGdjYzEyLWQtc2hhcmVkLWxpYnBob2Jv cy5wYXRjaAotUGF0Y2gxMjogZ2NjMTItcHIxMDQwMjUucGF0Y2gKLVBhdGNoMTM6IGdjYzEyLXBy MTA0MTAzLnBhdGNoCi1QYXRjaDE0OiBnY2MxMi1wcjEwNDEwNC5wYXRjaAorUGF0Y2gxMjogZ2Nj MTItcHIxMDQxOTQucGF0Y2gKK1BhdGNoMTM6IGdjYzEyLXByOTQxOTMucGF0Y2gKK1BhdGNoMTQ6 IGdjYzEyLWlmY3Z0LXJldmVydC5wYXRjaAogCiBQYXRjaDEwMDogZ2NjMTItZm9ydHJhbi1mZGVj LWR1cGxpY2F0ZXMucGF0Y2gKIFBhdGNoMTAxOiBnY2MxMi1mb3J0cmFuLWZsb2dpY2FsLWFzLWlu dGVnZXIucGF0Y2gKQEAgLTc5Myw5ICs3OTQsOSBAQCB0byBOVmlkaWEgUFRYIGNhcGFibGUgZGV2 aWNlcyBpZiBhdmFpbGFibGUuCiAlcGF0Y2gxMCAtcDAgLWIgLnJoMTU3NDkzNn4KICVlbmRpZgog JXBhdGNoMTEgLXAwIC1iIC5kLXNoYXJlZC1saWJwaG9ib3N+Ci0lcGF0Y2gxMiAtcDAgLWIgLnBy MTA0MDI1fgotJXBhdGNoMTMgLXAwIC1iIC5wcjEwNDEwM34KLSVwYXRjaDE0IC1wMCAtYiAucHIx MDQxMDR+CislcGF0Y2gxMiAtcDAgLWIgLnByMTA0MTk0fgorJXBhdGNoMTMgLXAwIC1iIC5wcjk0 MTkzfgorJXBhdGNoMTQgLXAwIC1iIC5pZmN2dC1yZXZlcnR+CiAKICVpZiAwJXs/cmhlbH0gPj0g OQogJXBhdGNoMTAwIC1wMSAtYiAuZm9ydHJhbi1mZGVjLWR1cGxpY2F0ZXN+CkBAIC0zMTU1LDgg KzMxNTYsMzUgQEAgZW5kCiAlZW5kaWYKIAogJWNoYW5nZWxvZwotKiBUaHUgSmFuIDIwIDIwMjIg RmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAx Mi4wLjEtMC4yLjEKLS0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtp L0ZlZG9yYV8zNl9NYXNzX1JlYnVpbGQKKyogVHVlIEphbiAyNCAyMDIyIEpha3ViIEplbGluZWsg PGpha3ViQHJlZGhhdC5jb20+IDEyLjAuMS0wLjMKKy0gdXBkYXRlIGZyb20gdHJ1bmsKKyAgLSBQ UnMgYWRhLzEwMzUzOCwgYW5hbHl6ZXIvOTQzNjIsIGFuYWx5emVyLzEwMzY4NSwgYW5hbHl6ZXIv MTA0MDYyLAorCWFuYWx5emVyLzEwNDA4OSwgYW5hbHl6ZXIvMTA0MTUwLCBhbmFseXplci8xMDQx NTksIGJvb3RzdHJhcC8xMDQxMzUsCisJYm9vdHN0cmFwLzEwNDE3MCwgYysrLzIwMDQwLCBjKysv NTUyMjcsIGMrKy85MTkxMSwgYysrLzEwMTA3MiwKKwljKysvMTAxNDA1LCBjKysvMTAxNzE1LCBj KysvMTAyMzAwLCBjKysvMTAyMzM4LCBjKysvMTAzNjMxLAorCWMrKy8xMDM2NzIsIGMrKy8xMDM2 ODEsIGMrKy8xMDQwMjUsIGMrKy8xMDQwNTUsIGMrKy8xMDQwODQsCisJYysrLzEwNDEzNCwgYysr LzEwNDEzOSwgYysrLzEwNDE0OCwgYysrLzEwNDE3MywgYysrLzEwNDE4MiwKKwljKysvMTA0MTk3 LCBjLzEwNDExNSwgZGVidWcvMTAzODc0LCBmb3J0cmFuLzEwMjYyMSwgZm9ydHJhbi8xMDM2OTUs CisJZm9ydHJhbi8xMDQxMjcsIGxpYmdjYy8xMDQyMDcsIGxpYnN0ZGMrKy84NzE5MywgbGlic3Rk YysrLzEwNDAxOSwKKwlsaWJzdGRjKysvMTA0MDMyLCBsaWJzdGRjKysvMTA0MDk5LCBsaWJzdGRj KysvMTA0MTAxLAorCWxpYnN0ZGMrKy8xMDQxMjMsIGxpYnN0ZGMrKy8xMDQxNzQsIG1pZGRsZS1l bmQvMTAwNzg2LAorCW1pZGRsZS1lbmQvMTAyODYwLCBtaWRkbGUtZW5kLzEwNDA2OSwgbWlkZGxl LWVuZC8xMDQwNzYsCisJbWlkZGxlLWVuZC8xMDQxNDAsIG90aGVyLzEwNDE3Niwgb3RoZXIvMTA0 MTgxLCBwcmVwcm9jZXNzb3IvMTA0MDMwLAorCXJ0bC1vcHRpbWl6YXRpb24vMTAyNDc4LCBzYW5p dGl6ZXIvOTk2NzMsIHNhbml0aXplci8xMDQxNTgsCisJdGFyZ2V0LzY0ODIxLCB0YXJnZXQvOTQx OTMsIHRhcmdldC8xMDA3ODQsIHRhcmdldC8xMDI1MTcsCisJdGFyZ2V0LzEwMzY3NiwgdGFyZ2V0 LzEwMzc3MSwgdGFyZ2V0LzEwNDA5MCwgdGFyZ2V0LzEwNDEzNiwKKwl0YXJnZXQvMTA0MTg4LCB0 ZXN0c3VpdGUvMTAyODMzLCB0ZXN0c3VpdGUvMTAzNzYzLCB0ZXN0c3VpdGUvMTA0MDIxLAorCXRl c3RzdWl0ZS8xMDQwMjIsIHRlc3RzdWl0ZS8xMDQxMDksIHRyZWUtb3B0aW1pemF0aW9uLzEwMDA4 OSwKKwl0cmVlLW9wdGltaXphdGlvbi8xMDA3NDAsIHRyZWUtb3B0aW1pemF0aW9uLzEwMTUwOCwK Kwl0cmVlLW9wdGltaXphdGlvbi8xMDE5NzIsIHRyZWUtb3B0aW1pemF0aW9uLzEwMjA4NywKKwl0 cmVlLW9wdGltaXphdGlvbi8xMDIxMzEsIHRyZWUtb3B0aW1pemF0aW9uLzEwMzcyMSwKKwl0cmVl LW9wdGltaXphdGlvbi8xMDM5OTcsIHRyZWUtb3B0aW1pemF0aW9uLzEwNDExMiwKKwl0cmVlLW9w dGltaXphdGlvbi8xMDQxMTQsIHRyZWUtb3B0aW1pemF0aW9uLzEwNDE1MiwKKwl0cmVlLW9wdGlt aXphdGlvbi8xMDQxNTYsIHRyZWUtb3B0aW1pemF0aW9uLzEwNDIxNAorICAtIGRvbid0IGVtaXQg QysrIG1hbmdsaW5nIGFsaWFzZXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBHQ0MgOC4xIHBwYzY0 bGUKKyAgICBJRUVFIHF1YWQgbG9uZyBkb3VibGUgKFBSIHRhcmdldC8xMDQxNzIpCistIG1hcmsg SUVFRSBxdWFkIGxvbmcgZG91YmxlIGluIERXQVJGIGFzIGltcGxpY2l0IHR5cGVkZWYgdG8gX0Zs b2F0MTI4CisgIChQUiBkZWJ1Zy8xMDQxOTQpCiAKICogVHVlIEphbiAxOCAyMDIyIEpha3ViIEpl bGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDEyLjAuMS0wLjIKIC0gdXBkYXRlIGZyb20gdHJ1bmsK CmRpZmYgLS1naXQgYS9nY2MxMi1pZmN2dC1yZXZlcnQucGF0Y2ggYi9nY2MxMi1pZmN2dC1yZXZl cnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI2MTY2OQotLS0g L2Rldi9udWxsCisrKyBiL2djYzEyLWlmY3Z0LXJldmVydC5wYXRjaApAQCAtMCwwICsxLDEwNTQg QEAKK1JldmVydCByMTItNjc0ezMsNCw1LDYsNyw4LDl9LCBhcyB0aGVyZSBhcmUgc2V2ZXJhbCBQ UnMgcmVwb3J0ZWQgYWdhaW5zdAordGhvc2UgY2hhbmdlczogUFIxMDQxNTMsIFBSMTA0MTU0IGFu ZCBQUjEwNDE5OCBhdCBsZWFzdC4KKworLS0tIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5jYwor KysrIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5jYworQEAgLTE2MzczLDEwICsxNjM3MywxMCBA QCByczYwMDBfZW1pdF9taW5tYXggKHJ0eCBkZXN0LCBlbnVtIHJ0eF9jb2RlIGNvZGUsIHJ0eCBv cDAsIHJ0eCBvcDEpCisgICAgIGMgPSBHRVU7CisgCisgICBpZiAoY29kZSA9PSBTTUFYIHx8IGNv ZGUgPT0gVU1BWCkKKy0gICAgdGFyZ2V0ID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlIChkZXN0LCB7 IGMsIG9wMCwgb3AxLCBtb2RlIH0sCisrICAgIHRhcmdldCA9IGVtaXRfY29uZGl0aW9uYWxfbW92 ZSAoZGVzdCwgYywgb3AwLCBvcDEsIG1vZGUsCisgCQkJCSAgICBvcDAsIG9wMSwgbW9kZSwgMCk7 CisgICBlbHNlCistICAgIHRhcmdldCA9IGVtaXRfY29uZGl0aW9uYWxfbW92ZSAoZGVzdCwgeyBj LCBvcDAsIG9wMSwgbW9kZSB9LAorKyAgICB0YXJnZXQgPSBlbWl0X2NvbmRpdGlvbmFsX21vdmUg KGRlc3QsIGMsIG9wMCwgb3AxLCBtb2RlLAorIAkJCQkgICAgb3AxLCBvcDAsIG1vZGUsIDApOwor ICAgZ2NjX2Fzc2VydCAodGFyZ2V0KTsKKyAgIGlmICh0YXJnZXQgIT0gZGVzdCkKK0BAIC0yMjc2 OSw3ICsyMjc2OSw3IEBAIHJzNjAwMF9lbWl0X3N3c3FydCAocnR4IGRzdCwgcnR4IHNyYywgYm9v bCByZWNpcCkKKyAKKyAgICAgICBpZiAobW9kZSA9PSBTRm1vZGUpCisgCXsKKy0JICBydHggdGFy Z2V0ID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlIChlLCB7IEdULCBzcmMsIHplcm8sIG1vZGUgfSwK KysJICBydHggdGFyZ2V0ID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlIChlLCBHVCwgc3JjLCB6ZXJv LCBtb2RlLAorIAkJCQkJICAgICAgZSwgemVybywgbW9kZSwgMCk7CisgCSAgaWYgKHRhcmdldCAh PSBlKQorIAkgICAgZW1pdF9tb3ZlX2luc24gKGUsIHRhcmdldCk7CistLS0gZ2NjL2V4cG1lZC5j YworKysrIGdjYy9leHBtZWQuY2MKK0BAIC00MTI0LDggKzQxMjQsOCBAQCBleHBhbmRfc2Rpdl9w b3cyIChzY2FsYXJfaW50X21vZGUgbW9kZSwgcnR4IG9wMCwgSE9TVF9XSURFX0lOVCBkKQorICAg ICAgIHRlbXAgPSBmb3JjZV9yZWcgKG1vZGUsIHRlbXApOworIAorICAgICAgIC8qIENvbnN0cnVj dCAidGVtcDIgPSAodGVtcDIgPCAwKSA/IHRlbXAgOiB0ZW1wMiIuICAqLworLSAgICAgIHRlbXAy ID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlICh0ZW1wMiwgeyBMVCwgdGVtcDIsIGNvbnN0MF9ydHgs IG1vZGUgfSwKKy0JCQkJICAgICB0ZW1wLCB0ZW1wMiwgbW9kZSwgMCk7CisrICAgICAgdGVtcDIg PSBlbWl0X2NvbmRpdGlvbmFsX21vdmUgKHRlbXAyLCBMVCwgdGVtcDIsIGNvbnN0MF9ydHgsCisr CQkJCSAgICAgbW9kZSwgdGVtcCwgdGVtcDIsIG1vZGUsIDApOworICAgICAgIGlmICh0ZW1wMikK KyAJeworIAkgIHJ0eF9pbnNuICpzZXEgPSBnZXRfaW5zbnMgKCk7CitAQCAtNjEyNywxMCArNjEy NywxMCBAQCBlbWl0X3N0b3JlX2ZsYWcgKHJ0eCB0YXJnZXQsIGVudW0gcnR4X2NvZGUgY29kZSwg cnR4IG9wMCwgcnR4IG9wMSwKKyAJcmV0dXJuIDA7CisgCisgICAgICAgaWYgKGFuZF90aGVtKQor LQl0ZW0gPSBlbWl0X2NvbmRpdGlvbmFsX21vdmUgKHRhcmdldCwgeyBjb2RlLCBvcDAsIG9wMSwg bW9kZSB9LAorKwl0ZW0gPSBlbWl0X2NvbmRpdGlvbmFsX21vdmUgKHRhcmdldCwgY29kZSwgb3Aw LCBvcDEsIG1vZGUsCisgCQkJCSAgICAgdGVtLCBjb25zdDBfcnR4LCBHRVRfTU9ERSAodGVtKSwg MCk7CisgICAgICAgZWxzZQorLQl0ZW0gPSBlbWl0X2NvbmRpdGlvbmFsX21vdmUgKHRhcmdldCwg eyBjb2RlLCBvcDAsIG9wMSwgbW9kZSB9LAorKwl0ZW0gPSBlbWl0X2NvbmRpdGlvbmFsX21vdmUg KHRhcmdldCwgY29kZSwgb3AwLCBvcDEsIG1vZGUsCisgCQkJCSAgICAgdHJ1ZXZhbCwgdGVtLCBH RVRfTU9ERSAodGVtKSwgMCk7CisgCisgICAgICAgaWYgKHRlbSA9PSAwKQorLS0tIGdjYy9leHBy LmNjCisrKysgZ2NjL2V4cHIuY2MKK0BAIC04ODI0LDkgKzg4MjQsOCBAQCBleHBhbmRfY29uZF9l eHByX3VzaW5nX2Ntb3ZlICh0cmVlIHRyZWVvcDAgQVRUUklCVVRFX1VOVVNFRCwKKyAgICAgb3Ay ID0gZ2VuX2xvd3BhcnQgKG1vZGUsIG9wMik7CisgCisgICAvKiBUcnkgdG8gZW1pdCB0aGUgY29u ZGl0aW9uYWwgbW92ZS4gICovCistICBpbnNuID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlICh0ZW1w LAorLQkJCQl7IGNvbXBhcmlzb25fY29kZSwgb3AwMCwgb3AwMSwKKy0JCQkJICBjb21wYXJpc29u X21vZGUgfSwKKysgIGluc24gPSBlbWl0X2NvbmRpdGlvbmFsX21vdmUgKHRlbXAsIGNvbXBhcmlz b25fY29kZSwKKysJCQkJb3AwMCwgb3AwMSwgY29tcGFyaXNvbl9tb2RlLAorIAkJCQlvcDEsIG9w MiwgbW9kZSwKKyAJCQkJdW5zaWduZWRwKTsKKyAKK0BAIC05NzE3LDkgKzk3MTYsOCBAQCBleHBh bmRfZXhwcl9yZWFsXzIgKHNlcG9wcyBvcHMsIHJ0eCB0YXJnZXQsIG1hY2hpbmVfbW9kZSB0bW9k ZSwKKyAJICAgIHN0YXJ0X3NlcXVlbmNlICgpOworIAorIAkgICAgLyogVHJ5IHRvIGVtaXQgdGhl IGNvbmRpdGlvbmFsIG1vdmUuICAqLworLQkgICAgaW5zbiA9IGVtaXRfY29uZGl0aW9uYWxfbW92 ZSAodGFyZ2V0LAorLQkJCQkJICB7IGNvbXBhcmlzb25fY29kZSwKKy0JCQkJCSAgICBvcDAsIGNt cG9wMSwgbW9kZSB9LAorKwkgICAgaW5zbiA9IGVtaXRfY29uZGl0aW9uYWxfbW92ZSAodGFyZ2V0 LCBjb21wYXJpc29uX2NvZGUsCisrCQkJCQkgIG9wMCwgY21wb3AxLCBtb2RlLAorIAkJCQkJICBv cDAsIG9wMSwgbW9kZSwKKyAJCQkJCSAgdW5zaWduZWRwKTsKKyAKKy0tLSBnY2MvaWZjdnQuY2MK KysrKyBnY2MvaWZjdnQuY2MKK0BAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBydHhfaW5zbiAqbGFz dF9hY3RpdmVfaW5zbiAoYmFzaWNfYmxvY2ssIGludCk7Cisgc3RhdGljIHJ0eF9pbnNuICpmaW5k X2FjdGl2ZV9pbnNuX2JlZm9yZSAoYmFzaWNfYmxvY2ssIHJ0eF9pbnNuICopOworIHN0YXRpYyBy dHhfaW5zbiAqZmluZF9hY3RpdmVfaW5zbl9hZnRlciAoYmFzaWNfYmxvY2ssIHJ0eF9pbnNuICop OworIHN0YXRpYyBiYXNpY19ibG9jayBibG9ja19mYWxsdGhydSAoYmFzaWNfYmxvY2spOworLXN0 YXRpYyBydHggY29uZF9leGVjX2dldF9jb25kaXRpb24gKHJ0eF9pbnNuICosIGJvb2wpOworK3N0 YXRpYyBydHggY29uZF9leGVjX2dldF9jb25kaXRpb24gKHJ0eF9pbnNuICopOworIHN0YXRpYyBy dHggbm9jZV9nZXRfY29uZGl0aW9uIChydHhfaW5zbiAqLCBydHhfaW5zbiAqKiwgYm9vbCk7Cisg c3RhdGljIGludCBub2NlX29wZXJhbmRfb2sgKGNvbnN0X3J0eCk7Cisgc3RhdGljIHZvaWQgbWVy Z2VfaWZfYmxvY2sgKGNlX2lmX2Jsb2NrICopOworQEAgLTk4LDE0ICs5OCw2IEBAIHN0YXRpYyBp bnQgZGVhZF9vcl9wcmVkaWNhYmxlIChiYXNpY19ibG9jaywgYmFzaWNfYmxvY2ssIGJhc2ljX2Js b2NrLAorIAkJCSAgICAgICBlZGdlLCBpbnQpOworIHN0YXRpYyB2b2lkIG5vY2VfZW1pdF9tb3Zl X2luc24gKHJ0eCwgcnR4KTsKKyBzdGF0aWMgcnR4X2luc24gKmJsb2NrX2hhc19vbmx5X3RyYXAg KGJhc2ljX2Jsb2NrKTsKKy1zdGF0aWMgdm9pZCBuZWVkX2Ntb3Zfb3JfcmV3aXJlIChiYXNpY19i bG9jaywgaGFzaF9zZXQ8cnR4X2luc24gKj4gKiwKKy0JCQkJIGhhc2hfbWFwPHJ0eF9pbnNuICos IGludD4gKik7Cistc3RhdGljIGJvb2wgbm9jZV9jb252ZXJ0X211bHRpcGxlX3NldHNfMSAoc3Ry dWN0IG5vY2VfaWZfaW5mbyAqLAorLQkJCQkJICBoYXNoX3NldDxydHhfaW5zbiAqPiAqLAorLQkJ CQkJICBoYXNoX21hcDxydHhfaW5zbiAqLCBpbnQ+ICosCistCQkJCQkgIGF1dG9fdmVjPHJ0eD4g KiwKKy0JCQkJCSAgYXV0b192ZWM8cnR4PiAqLAorLQkJCQkJICBhdXRvX3ZlYzxydHhfaW5zbiAq PiAqLCBpbnQgKik7CisgDAorIC8qIENvdW50IHRoZSBudW1iZXIgb2Ygbm9uLWp1bXAgYWN0aXZl IGluc25zIGluIEJCLiAgKi8KKyAKK0BAIC00MzMsNyArNDI1LDcgQEAgY29uZF9leGVjX3Byb2Nl c3NfaW5zbnMgKGNlX2lmX2Jsb2NrICpjZV9pbmZvIEFUVFJJQlVURV9VTlVTRUQsCisgLyogUmV0 dXJuIHRoZSBjb25kaXRpb24gZm9yIGEganVtcC4gIERvIG5vdCBkbyBhbnkgc3BlY2lhbCBwcm9j ZXNzaW5nLiAgKi8KKyAKKyBzdGF0aWMgcnR4CistY29uZF9leGVjX2dldF9jb25kaXRpb24gKHJ0 eF9pbnNuICpqdW1wLCBib29sIGdldF9yZXZlcnNlZCA9IGZhbHNlKQorK2NvbmRfZXhlY19nZXRf Y29uZGl0aW9uIChydHhfaW5zbiAqanVtcCkKKyB7CisgICBydHggdGVzdF9pZiwgY29uZDsKKyAK K0BAIC00NDUsMTAgKzQzNyw4IEBAIGNvbmRfZXhlY19nZXRfY29uZGl0aW9uIChydHhfaW5zbiAq anVtcCwgYm9vbCBnZXRfcmV2ZXJzZWQgPSBmYWxzZSkKKyAKKyAgIC8qIElmIHRoaXMgYnJhbmNo ZXMgdG8gSlVNUF9MQUJFTCB3aGVuIHRoZSBjb25kaXRpb24gaXMgZmFsc2UsCisgICAgICByZXZl cnNlIHRoZSBjb25kaXRpb24uICAqLworLSAgaWYgKGdldF9yZXZlcnNlZAorLSAgICAgIHx8IChH RVRfQ09ERSAoWEVYUCAodGVzdF9pZiwgMikpID09IExBQkVMX1JFRgorLQkgICYmIGxhYmVsX3Jl Zl9sYWJlbCAoWEVYUCAodGVzdF9pZiwgMikpCistCSAgPT0gSlVNUF9MQUJFTCAoanVtcCkpKQor KyAgaWYgKEdFVF9DT0RFIChYRVhQICh0ZXN0X2lmLCAyKSkgPT0gTEFCRUxfUkVGCisrICAgICAg JiYgbGFiZWxfcmVmX2xhYmVsIChYRVhQICh0ZXN0X2lmLCAyKSkgPT0gSlVNUF9MQUJFTCAoanVt cCkpCisgICAgIHsKKyAgICAgICBlbnVtIHJ0eF9jb2RlIHJldiA9IHJldmVyc2VkX2NvbXBhcmlz b25fY29kZSAoY29uZCwganVtcCk7CisgICAgICAgaWYgKHJldiA9PSBVTktOT1dOKQorQEAgLTc4 MCw3ICs3NzAsNyBAQCBzdGF0aWMgaW50IG5vY2VfdHJ5X2FkZGNjIChzdHJ1Y3Qgbm9jZV9pZl9p bmZvICopOworIHN0YXRpYyBpbnQgbm9jZV90cnlfc3RvcmVfZmxhZ19jb25zdGFudHMgKHN0cnVj dCBub2NlX2lmX2luZm8gKik7Cisgc3RhdGljIGludCBub2NlX3RyeV9zdG9yZV9mbGFnX21hc2sg KHN0cnVjdCBub2NlX2lmX2luZm8gKik7Cisgc3RhdGljIHJ0eCBub2NlX2VtaXRfY21vdmUgKHN0 cnVjdCBub2NlX2lmX2luZm8gKiwgcnR4LCBlbnVtIHJ0eF9jb2RlLCBydHgsCistCQkJICAgIHJ0 eCwgcnR4LCBydHgsIHJ0eCA9IE5VTEwsIHJ0eCA9IE5VTEwpOworKwkJCSAgICBydHgsIHJ0eCwg cnR4KTsKKyBzdGF0aWMgaW50IG5vY2VfdHJ5X2Ntb3ZlIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICop OworIHN0YXRpYyBpbnQgbm9jZV90cnlfY21vdmVfYXJpdGggKHN0cnVjdCBub2NlX2lmX2luZm8g Kik7Cisgc3RhdGljIHJ0eCBub2NlX2dldF9hbHRfY29uZGl0aW9uIChzdHJ1Y3Qgbm9jZV9pZl9p bmZvICosIHJ0eCwgcnR4X2luc24gKiopOworQEAgLTE3MTksOCArMTcwOSw3IEBAIG5vY2VfdHJ5 X3N0b3JlX2ZsYWdfbWFzayAoc3RydWN0IG5vY2VfaWZfaW5mbyAqaWZfaW5mbykKKyAKKyBzdGF0 aWMgcnR4Cisgbm9jZV9lbWl0X2Ntb3ZlIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICppZl9pbmZvLCBy dHggeCwgZW51bSBydHhfY29kZSBjb2RlLAorLQkJIHJ0eCBjbXBfYSwgcnR4IGNtcF9iLCBydHgg dmZhbHNlLCBydHggdnRydWUsIHJ0eCBjY19jbXAsCistCQkgcnR4IHJldl9jY19jbXApCisrCQkg cnR4IGNtcF9hLCBydHggY21wX2IsIHJ0eCB2ZmFsc2UsIHJ0eCB2dHJ1ZSkKKyB7CisgICBydHgg dGFyZ2V0IEFUVFJJQlVURV9VTlVTRUQ7CisgICBpbnQgdW5zaWduZWRwIEFUVFJJQlVURV9VTlVT RUQ7CitAQCAtMTc1MiwzMCArMTc0MSwyMyBAQCBub2NlX2VtaXRfY21vdmUgKHN0cnVjdCBub2Nl X2lmX2luZm8gKmlmX2luZm8sIHJ0eCB4LCBlbnVtIHJ0eF9jb2RlIGNvZGUsCisgICAgICAgZW5k X3NlcXVlbmNlICgpOworICAgICB9CisgCistICB1bnNpZ25lZHAgPSAoY29kZSA9PSBMVFUgfHwg Y29kZSA9PSBHRVUKKy0JICAgICAgIHx8IGNvZGUgPT0gTEVVIHx8IGNvZGUgPT0gR1RVKTsKKy0K Ky0gIGlmIChjY19jbXAgIT0gTlVMTF9SVFggJiYgcmV2X2NjX2NtcCAhPSBOVUxMX1JUWCkKKy0g ICAgdGFyZ2V0ID0gZW1pdF9jb25kaXRpb25hbF9tb3ZlICh4LCBjY19jbXAsIHJldl9jY19jbXAs CistCQkJCSAgICB2dHJ1ZSwgdmZhbHNlLCBHRVRfTU9ERSAoeCkpOworLSAgZWxzZQorKyAgLyog RG9uJ3QgZXZlbiB0cnkgaWYgdGhlIGNvbXBhcmlzb24gb3BlcmFuZHMgYXJlIHdlaXJkCisrICAg ICBleGNlcHQgdGhhdCB0aGUgdGFyZ2V0IHN1cHBvcnRzIGNicmFuY2hjYzQuICAqLworKyAgaWYg KCEgZ2VuZXJhbF9vcGVyYW5kIChjbXBfYSwgR0VUX01PREUgKGNtcF9hKSkKKysgICAgICB8fCAh IGdlbmVyYWxfb3BlcmFuZCAoY21wX2IsIEdFVF9NT0RFIChjbXBfYikpKQorICAgICB7CistICAg ICAgLyogRG9uJ3QgZXZlbiB0cnkgaWYgdGhlIGNvbXBhcmlzb24gb3BlcmFuZHMgYXJlIHdlaXJk CistCSBleGNlcHQgdGhhdCB0aGUgdGFyZ2V0IHN1cHBvcnRzIGNicmFuY2hjYzQuICAqLworLSAg ICAgIGlmICghIGdlbmVyYWxfb3BlcmFuZCAoY21wX2EsIEdFVF9NT0RFIChjbXBfYSkpCistCSAg fHwgISBnZW5lcmFsX29wZXJhbmQgKGNtcF9iLCBHRVRfTU9ERSAoY21wX2IpKSkKKy0JeworLQkg IGlmICghaGF2ZV9jYnJhbmNoY2M0CistCSAgICAgIHx8IEdFVF9NT0RFX0NMQVNTIChHRVRfTU9E RSAoY21wX2EpKSAhPSBNT0RFX0NDCistCSAgICAgIHx8IGNtcF9iICE9IGNvbnN0MF9ydHgpCist CSAgICByZXR1cm4gTlVMTF9SVFg7CistCX0KKy0KKy0gICAgICB0YXJnZXQgPSBlbWl0X2NvbmRp dGlvbmFsX21vdmUgKHgsIHsgY29kZSwgY21wX2EsIGNtcF9iLCBWT0lEbW9kZSB9LAorLQkJCQkg ICAgICB2dHJ1ZSwgdmZhbHNlLCBHRVRfTU9ERSAoeCksCistCQkJCSAgICAgIHVuc2lnbmVkcCk7 CisrICAgICAgaWYgKCFoYXZlX2NicmFuY2hjYzQKKysJICB8fCBHRVRfTU9ERV9DTEFTUyAoR0VU X01PREUgKGNtcF9hKSkgIT0gTU9ERV9DQworKwkgIHx8IGNtcF9iICE9IGNvbnN0MF9ydHgpCisr CXJldHVybiBOVUxMX1JUWDsKKyAgICAgfQorIAorKyAgdW5zaWduZWRwID0gKGNvZGUgPT0gTFRV IHx8IGNvZGUgPT0gR0VVCisrCSAgICAgICB8fCBjb2RlID09IExFVSB8fCBjb2RlID09IEdUVSk7 CisrCisrICB0YXJnZXQgPSBlbWl0X2NvbmRpdGlvbmFsX21vdmUgKHgsIGNvZGUsIGNtcF9hLCBj bXBfYiwgVk9JRG1vZGUsCisrCQkJCSAgdnRydWUsIHZmYWxzZSwgR0VUX01PREUgKHgpLAorKwkJ CQkgIHVuc2lnbmVkcCk7CisgICBpZiAodGFyZ2V0KQorICAgICByZXR1cm4gdGFyZ2V0OworIAor QEAgLTE4MTEsOSArMTc5Myw4IEBAIG5vY2VfZW1pdF9jbW92ZSAoc3RydWN0IG5vY2VfaWZfaW5m byAqaWZfaW5mbywgcnR4IHgsIGVudW0gcnR4X2NvZGUgY29kZSwKKyAKKyAgICAgICBwcm9tb3Rl ZF90YXJnZXQgPSBnZW5fcmVnX3J0eCAoR0VUX01PREUgKHJlZ192dHJ1ZSkpOworIAorLSAgICAg IHRhcmdldCA9IGVtaXRfY29uZGl0aW9uYWxfbW92ZSAocHJvbW90ZWRfdGFyZ2V0LAorLQkJCQkg ICAgICB7IGNvZGUsIGNtcF9hLCBjbXBfYiwgVk9JRG1vZGUgfSwKKy0JCQkJICAgICAgcmVnX3Z0 cnVlLCByZWdfdmZhbHNlLAorKyAgICAgIHRhcmdldCA9IGVtaXRfY29uZGl0aW9uYWxfbW92ZSAo cHJvbW90ZWRfdGFyZ2V0LCBjb2RlLCBjbXBfYSwgY21wX2IsCisrCQkJCSAgICAgIFZPSURtb2Rl LCByZWdfdnRydWUsIHJlZ192ZmFsc2UsCisgCQkJCSAgICAgIEdFVF9NT0RFIChyZWdfdnRydWUp LCB1bnNpZ25lZHApOworICAgICAgIC8qIE5vcGUsIGNvdWxkbid0IGRvIGl0IGluIHRoYXQgbW9k ZSBlaXRoZXIuICAqLworICAgICAgIGlmICghdGFyZ2V0KQorQEAgLTMxNjAsNTAgKzMxNDEsNiBA QCBiYl92YWxpZF9mb3Jfbm9jZV9wcm9jZXNzX3AgKGJhc2ljX2Jsb2NrIHRlc3RfYmIsIHJ0eCBj b25kLAorICAgcmV0dXJuIGZhbHNlOworIH0KKyAKKy0vKiBIZWxwZXIgZnVuY3Rpb24gdG8gZW1p dCBhIGNtb3Ygc2VxdWVuY2UgZW5jYXBzdWxhdGVkIGluCistICAgc3RhcnRfc2VxdWVuY2UgKCkg YW5kIGVuZF9zZXF1ZW5jZSAoKS4gIElmIE5FRURfQ01PViBpcyB0cnVlCistICAgd2UgY2FsbCBu b2NlX2VtaXRfY21vdmUgdG8gY3JlYXRlIGEgY21vdmUgc2VxdWVuY2UuICBPdGhlcndpc2UgZW1p dAorLSAgIGEgc2ltcGxlIG1vdmUuICBJZiBzdWNjZXNzZnVsLCBzdG9yZSB0aGUgZmlyc3QgaW5z dHJ1Y3Rpb24gb2YgdGhlCistICAgc2VxdWVuY2UgaW4gVEVNUF9ERVNUIGFuZCB0aGUgc2VxdWVu Y2UgY29zdHMgaW4gU0VRX0NPU1QuICAqLworLQorLXN0YXRpYyBydHhfaW5zbioKKy10cnlfZW1p dF9jbW92ZV9zZXEgKHN0cnVjdCBub2NlX2lmX2luZm8gKmlmX2luZm8sIHJ0eCB0ZW1wLAorLQkJ ICAgIHJ0eCBjb25kLCBydHggbmV3X3ZhbCwgcnR4IG9sZF92YWwsIGJvb2wgbmVlZF9jbW92LAor LQkJICAgIHVuc2lnbmVkICpjb3N0LCBydHggKnRlbXBfZGVzdCwKKy0JCSAgICBydHggY2NfY21w ID0gTlVMTCwgcnR4IHJldl9jY19jbXAgPSBOVUxMKQorLXsKKy0gIHJ0eF9pbnNuICpzZXEgPSBO VUxMOworLSAgKmNvc3QgPSAwOworLQorLSAgcnR4IHggPSBYRVhQIChjb25kLCAwKTsKKy0gIHJ0 eCB5ID0gWEVYUCAoY29uZCwgMSk7CistICBydHhfY29kZSBjb25kX2NvZGUgPSBHRVRfQ09ERSAo Y29uZCk7CistCistICBzdGFydF9zZXF1ZW5jZSAoKTsKKy0KKy0gIGlmIChuZWVkX2Ntb3YpCist ICAgICp0ZW1wX2Rlc3QgPSBub2NlX2VtaXRfY21vdmUgKGlmX2luZm8sIHRlbXAsIGNvbmRfY29k ZSwKKy0JCQkJICB4LCB5LCBuZXdfdmFsLCBvbGRfdmFsLCBjY19jbXAsIHJldl9jY19jbXApOwor LSAgZWxzZQorLSAgICB7CistICAgICAgKnRlbXBfZGVzdCA9IHRlbXA7CistICAgICAgaWYgKGlm X2luZm8tPnRoZW5fZWxzZV9yZXZlcnNlZCkKKy0Jbm9jZV9lbWl0X21vdmVfaW5zbiAodGVtcCwg b2xkX3ZhbCk7CistICAgICAgZWxzZQorLQlub2NlX2VtaXRfbW92ZV9pbnNuICh0ZW1wLCBuZXdf dmFsKTsKKy0gICAgfQorLQorLSAgaWYgKCp0ZW1wX2Rlc3QgIT0gTlVMTF9SVFgpCistICAgIHsK Ky0gICAgICBzZXEgPSBnZXRfaW5zbnMgKCk7CistICAgICAgKmNvc3QgPSBzZXFfY29zdCAoc2Vx LCBpZl9pbmZvLT5zcGVlZF9wKTsKKy0gICAgfQorLQorLSAgZW5kX3NlcXVlbmNlICgpOworLQor LSAgcmV0dXJuIHNlcTsKKy19CistCisgLyogV2UgaGF2ZSBzb21ldGhpbmcgbGlrZToKKyAKKyAg ICAgIGlmICh4ID4geSkKK0BAIC0zMjYxLDYgKzMxOTgsNyBAQCBub2NlX2NvbnZlcnRfbXVsdGlw bGVfc2V0cyAoc3RydWN0IG5vY2VfaWZfaW5mbyAqaWZfaW5mbykKKyAgIHJ0eCBjb25kID0gbm9j ZV9nZXRfY29uZGl0aW9uIChqdW1wLCAmY29uZF9lYXJsaWVzdCwgZmFsc2UpOworICAgcnR4IHgg PSBYRVhQIChjb25kLCAwKTsKKyAgIHJ0eCB5ID0gWEVYUCAoY29uZCwgMSk7CisrICBydHhfY29k ZSBjb25kX2NvZGUgPSBHRVRfQ09ERSAoY29uZCk7CisgCisgICAvKiBUaGUgdHJ1ZSB0YXJnZXRz IGZvciBhIGNvbmRpdGlvbmFsIG1vdmUuICAqLworICAgYXV0b192ZWM8cnR4PiB0YXJnZXRzOwor QEAgLTMyNjksMTM5ICszMjA3LDggQEAgbm9jZV9jb252ZXJ0X211bHRpcGxlX3NldHMgKHN0cnVj dCBub2NlX2lmX2luZm8gKmlmX2luZm8pCisgICBhdXRvX3ZlYzxydHg+IHRlbXBvcmFyaWVzOwor ICAgLyogVGhlIGluc25zIHdlJ3ZlIGVtaXR0ZWQuICAqLworICAgYXV0b192ZWM8cnR4X2luc24g Kj4gdW5tb2RpZmllZF9pbnNuczsKKy0KKy0gIGhhc2hfc2V0PHJ0eF9pbnNuICo+IG5lZWRfbm9f Y21vdjsKKy0gIGhhc2hfbWFwPHJ0eF9pbnNuICosIGludD4gcmV3aXJlZF9zcmM7CistCistICBu ZWVkX2Ntb3Zfb3JfcmV3aXJlICh0aGVuX2JiLCAmbmVlZF9ub19jbW92LCAmcmV3aXJlZF9zcmMp OworLQorLSAgaW50IGxhc3RfbmVlZHNfY29tcGFyaXNvbiA9IC0xOworLQorLSAgYm9vbCBvayA9 IG5vY2VfY29udmVydF9tdWx0aXBsZV9zZXRzXzEKKy0gICAgKGlmX2luZm8sICZuZWVkX25vX2Nt b3YsICZyZXdpcmVkX3NyYywgJnRhcmdldHMsICZ0ZW1wb3JhcmllcywKKy0gICAgICZ1bm1vZGlm aWVkX2luc25zLCAmbGFzdF9uZWVkc19jb21wYXJpc29uKTsKKy0gIGlmICghb2spCistICAgICAg cmV0dXJuIGZhbHNlOworLQorLSAgLyogSWYgdGhlcmUgYXJlIGluc25zIHRoYXQgb3ZlcndyaXRl IHBhcnQgb2YgdGhlIGluaXRpYWwKKy0gICAgIGNvbXBhcmlzb24sIHdlIGNhbiBzdGlsbCBvbWl0 IGNyZWF0aW5nIHRlbXBvcmFyaWVzIGZvcgorLSAgICAgdGhlIGxhc3Qgb2YgdGhlbS4KKy0gICAg IEFzIHRoZSBzZWNvbmQgdHJ5IHdpbGwgYWx3YXlzIGNyZWF0ZSBhIGxlc3MgZXhwZW5zaXZlLAor LSAgICAgdmFsaWQgc2VxdWVuY2UsIHdlIGRvIG5vdCBuZWVkIHRvIGNvbXBhcmUgYW5kIGNhbiBk aXNjYXJkCistICAgICB0aGUgZmlyc3Qgb25lLiAgKi8KKy0gIGlmIChsYXN0X25lZWRzX2NvbXBh cmlzb24gIT0gLTEpCistICAgIHsKKy0gICAgICBlbmRfc2VxdWVuY2UgKCk7CistICAgICAgc3Rh cnRfc2VxdWVuY2UgKCk7CistICAgICAgb2sgPSBub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0c18x CistCShpZl9pbmZvLCAmbmVlZF9ub19jbW92LCAmcmV3aXJlZF9zcmMsICZ0YXJnZXRzLCAmdGVt cG9yYXJpZXMsCistCSAmdW5tb2RpZmllZF9pbnNucywgJmxhc3RfbmVlZHNfY29tcGFyaXNvbik7 CistICAgICAgLyogQWN0dWFsbHkgd2Ugc2hvdWxkIG5vdCBmYWlsIGFueW1vcmUgaWYgd2UgcmVh Y2hlZCBoZXJlLAorLQkgYnV0IGJldHRlciBzdGlsbCBjaGVjay4gICovCistICAgICAgaWYgKCFv aykKKy0JICByZXR1cm4gZmFsc2U7CistICAgIH0KKy0KKy0gIC8qIFdlIG11c3QgaGF2ZSBzZWVu IHNvbWUgc29ydCBvZiBpbnNuIHRvIGluc2VydCwgb3RoZXJ3aXNlIHdlIHdlcmUKKy0gICAgIGdp dmVuIGFuIGVtcHR5IEJCIHRvIGNvbnZlcnQsIGFuZCB3ZSBjYW4ndCBoYW5kbGUgdGhhdC4gICov CistICBnY2NfYXNzZXJ0ICghdW5tb2RpZmllZF9pbnNucy5pc19lbXB0eSAoKSk7CistCistICAv KiBOb3cgZml4dXAgdGhlIGFzc2lnbm1lbnRzLiAgKi8KKy0gIGZvciAodW5zaWduZWQgaSA9IDA7 IGkgPCB0YXJnZXRzLmxlbmd0aCAoKTsgaSsrKQorLSAgICBpZiAodGFyZ2V0c1tpXSAhPSB0ZW1w b3Jhcmllc1tpXSkKKy0gICAgICBub2NlX2VtaXRfbW92ZV9pbnNuICh0YXJnZXRzW2ldLCB0ZW1w b3Jhcmllc1tpXSk7CistCistICAvKiBBY3R1YWxseSBlbWl0IHRoZSBzZXF1ZW5jZSBpZiBpdCBp c24ndCB0b28gZXhwZW5zaXZlLiAgKi8KKy0gIHJ0eF9pbnNuICpzZXEgPSBnZXRfaW5zbnMgKCk7 CistCistICBpZiAoIXRhcmdldG0ubm9jZV9jb252ZXJzaW9uX3Byb2ZpdGFibGVfcCAoc2VxLCBp Zl9pbmZvKSkKKy0gICAgeworLSAgICAgIGVuZF9zZXF1ZW5jZSAoKTsKKy0gICAgICByZXR1cm4g RkFMU0U7CistICAgIH0KKy0KKy0gIGZvciAoaW5zbiA9IHNlcTsgaW5zbjsgaW5zbiA9IE5FWFRf SU5TTiAoaW5zbikpCistICAgIHNldF91c2VkX2ZsYWdzIChpbnNuKTsKKy0KKy0gIC8qIE1hcmsg YWxsIG91ciB0ZW1wb3JhcmllcyBhbmQgdGFyZ2V0cyBhcyB1c2VkLiAgKi8KKy0gIGZvciAodW5z aWduZWQgaSA9IDA7IGkgPCB0YXJnZXRzLmxlbmd0aCAoKTsgaSsrKQorLSAgICB7CistICAgICAg c2V0X3VzZWRfZmxhZ3MgKHRlbXBvcmFyaWVzW2ldKTsKKy0gICAgICBzZXRfdXNlZF9mbGFncyAo dGFyZ2V0c1tpXSk7CistICAgIH0KKy0KKy0gIHNldF91c2VkX2ZsYWdzIChjb25kKTsKKy0gIHNl dF91c2VkX2ZsYWdzICh4KTsKKy0gIHNldF91c2VkX2ZsYWdzICh5KTsKKy0KKy0gIHVuc2hhcmVf YWxsX3J0bF9pbl9jaGFpbiAoc2VxKTsKKy0gIGVuZF9zZXF1ZW5jZSAoKTsKKy0KKy0gIGlmICgh c2VxKQorLSAgICByZXR1cm4gRkFMU0U7CistCistICBmb3IgKGluc24gPSBzZXE7IGluc247IGlu c24gPSBORVhUX0lOU04gKGluc24pKQorLSAgICBpZiAoSlVNUF9QIChpbnNuKQorLQl8fCByZWNv Z19tZW1vaXplZCAoaW5zbikgPT0gLTEpCistICAgICAgcmV0dXJuIEZBTFNFOworLQorLSAgZW1p dF9pbnNuX2JlZm9yZV9zZXRsb2MgKHNlcSwgaWZfaW5mby0+anVtcCwKKy0JCQkgICBJTlNOX0xP Q0FUSU9OICh1bm1vZGlmaWVkX2luc25zLmxhc3QgKCkpKTsKKy0KKy0gIC8qIENsZWFuIHVwIFRI RU5fQkIgYW5kIHRoZSBlZGdlcyBpbiBhbmQgb3V0IG9mIGl0LiAgKi8KKy0gIHJlbW92ZV9lZGdl IChmaW5kX2VkZ2UgKHRlc3RfYmIsIGpvaW5fYmIpKTsKKy0gIHJlbW92ZV9lZGdlIChmaW5kX2Vk Z2UgKHRoZW5fYmIsIGpvaW5fYmIpKTsKKy0gIHJlZGlyZWN0X2VkZ2VfYW5kX2JyYW5jaF9mb3Jj ZSAoc2luZ2xlX3N1Y2NfZWRnZSAodGVzdF9iYiksIGpvaW5fYmIpOworLSAgZGVsZXRlX2Jhc2lj X2Jsb2NrICh0aGVuX2JiKTsKKy0gIG51bV90cnVlX2NoYW5nZXMrKzsKKy0KKy0gIC8qIE1heWJl IG1lcmdlIGJsb2NrcyBub3cgdGhlIGp1bXAgaXMgc2ltcGxlIGVub3VnaC4gICovCistICBpZiAo Y2FuX21lcmdlX2Jsb2Nrc19wICh0ZXN0X2JiLCBqb2luX2JiKSkKKy0gICAgeworLSAgICAgIG1l cmdlX2Jsb2NrcyAodGVzdF9iYiwgam9pbl9iYik7CistICAgICAgbnVtX3RydWVfY2hhbmdlcysr OworLSAgICB9CistCistICBudW1fdXBkYXRlZF9pZl9ibG9ja3MrKzsKKy0gIGlmX2luZm8tPnRy YW5zZm9ybV9uYW1lID0gIm5vY2VfY29udmVydF9tdWx0aXBsZV9zZXRzIjsKKy0gIHJldHVybiBU UlVFOworLX0KKy0KKy0vKiBUaGlzIGdvZXMgdGhyb3VnaCBhbGwgcmVsZXZhbnQgaW5zbnMgb2Yg SUZfSU5GTy0+dGhlbl9iYiBhbmQgdHJpZXMgdG8KKy0gICBjcmVhdGUgY29uZGl0aW9uYWwgbW92 ZXMuICBJbiBjYXNlIGEgc2ltcGxlIG1vdmUgc3VmZmljaXMgdGhlIGluc24KKy0gICBzaG91bGQg YmUgbGlzdGVkIGluIE5FRURfTk9fQ01PVi4gIFRoZSByZXdpcmVkLXNyYyBjYXNlcyBzaG91bGQg YmUKKy0gICBzcGVjaWZpZWQgdmlhIFJFV0lSRURfU1JDLiAgVEFSR0VUUywgVEVNUE9SQVJJRVMg YW5kIFVOTU9ESUZJRURfSU5TTlMKKy0gICBhcmUgc3BlY2lmaWVkIGFuZCB1c2VkIGluIG5vY2Vf Y29udmVydF9tdWx0aXBsZV9zZXRzIGFuZCBzaG91bGQgYmUgcGFzc2VkCistICAgdG8gdGhpcyBm dW5jdGlvbi4uICAqLworLQorLXN0YXRpYyBib29sCistbm9jZV9jb252ZXJ0X211bHRpcGxlX3Nl dHNfMSAoc3RydWN0IG5vY2VfaWZfaW5mbyAqaWZfaW5mbywKKy0JCQkgICAgICBoYXNoX3NldDxy dHhfaW5zbiAqPiAqbmVlZF9ub19jbW92LAorLQkJCSAgICAgIGhhc2hfbWFwPHJ0eF9pbnNuICos IGludD4gKnJld2lyZWRfc3JjLAorLQkJCSAgICAgIGF1dG9fdmVjPHJ0eD4gKnRhcmdldHMsCist CQkJICAgICAgYXV0b192ZWM8cnR4PiAqdGVtcG9yYXJpZXMsCistCQkJICAgICAgYXV0b192ZWM8 cnR4X2luc24gKj4gKnVubW9kaWZpZWRfaW5zbnMsCistCQkJICAgICAgaW50ICpsYXN0X25lZWRz X2NvbXBhcmlzb24pCisteworLSAgYmFzaWNfYmxvY2sgdGhlbl9iYiA9IGlmX2luZm8tPnRoZW5f YmI7CistICBydHhfaW5zbiAqanVtcCA9IGlmX2luZm8tPmp1bXA7CistICBydHhfaW5zbiAqY29u ZF9lYXJsaWVzdDsKKy0KKy0gIC8qIERlY29tcG9zZSB0aGUgY29uZGl0aW9uIGF0dGFjaGVkIHRv IHRoZSBqdW1wLiAgKi8KKy0gIHJ0eCBjb25kID0gbm9jZV9nZXRfY29uZGl0aW9uIChqdW1wLCAm Y29uZF9lYXJsaWVzdCwgZmFsc2UpOworLQorLSAgcnR4IGNjX2NtcCA9IGNvbmRfZXhlY19nZXRf Y29uZGl0aW9uIChqdW1wKTsKKy0gIHJ0eCByZXZfY2NfY21wID0gY29uZF9leGVjX2dldF9jb25k aXRpb24gKGp1bXAsIC8qIGdldF9yZXZlcnNlZCAqLyB0cnVlKTsKKy0KKy0gIHJ0eF9pbnNuICpp bnNuOworICAgaW50IGNvdW50ID0gMDsKKyAKKy0gIHRhcmdldHMtPnRydW5jYXRlICgwKTsKKy0g IHRlbXBvcmFyaWVzLT50cnVuY2F0ZSAoMCk7CistICB1bm1vZGlmaWVkX2luc25zLT50cnVuY2F0 ZSAoMCk7CistCistICBib29sIHNlY29uZF90cnkgPSAqbGFzdF9uZWVkc19jb21wYXJpc29uICE9 IC0xOworLQorICAgRk9SX0JCX0lOU05TICh0aGVuX2JiLCBpbnNuKQorICAgICB7CisgICAgICAg LyogU2tpcCBvdmVyIG5vbi1pbnNucy4gICovCitAQCAtMzQxMiw1MyArMzIxOSwyNiBAQCBub2Nl X2NvbnZlcnRfbXVsdGlwbGVfc2V0c18xIChzdHJ1Y3Qgbm9jZV9pZl9pbmZvICppZl9pbmZvLAor ICAgICAgIGdjY19jaGVja2luZ19hc3NlcnQgKHNldCk7CisgCisgICAgICAgcnR4IHRhcmdldCA9 IFNFVF9ERVNUIChzZXQpOworLSAgICAgIHJ0eCB0ZW1wOworLQorKyAgICAgIHJ0eCB0ZW1wID0g Z2VuX3JlZ19ydHggKEdFVF9NT0RFICh0YXJnZXQpKTsKKyAgICAgICBydHggbmV3X3ZhbCA9IFNF VF9TUkMgKHNldCk7CistICAgICAgaWYgKGludCAqaWkgPSByZXdpcmVkX3NyYy0+Z2V0IChpbnNu KSkKKy0JbmV3X3ZhbCA9IHNpbXBsaWZ5X3JlcGxhY2VfcnR4IChuZXdfdmFsLCAoKnRhcmdldHMp WyppaV0sCistCQkJCQkoKnRlbXBvcmFyaWVzKVsqaWldKTsKKyAgICAgICBydHggb2xkX3ZhbCA9 IHRhcmdldDsKKyAKKy0gICAgICAvKiBBcyB3ZSBhcmUgdHJhbnNmb3JtaW5nCistCSBpZiAoeCA+ IHkpCistCSAgIHsKKy0JICAgICBhID0gYjsKKy0JICAgICBjID0gZDsKKy0JICAgfQorLQkgaW50 bworLQkgICBhID0gKHggPiB5KSAuLi4KKy0JICAgYyA9ICh4ID4geSkgLi4uCistCistCSB3ZSBw b3RlbnRpYWxseSBjaGVjayB4ID4geSBiZWZvcmUgZXZlcnkgc2V0LgorLQkgRXZlbiB0aG91Z2gg dGhlIGNoZWNrIG1pZ2h0IGJlIHJlbW92ZWQgYnkgc3Vic2VxdWVudCBwYXNzZXMsIHRoaXMgbWVh bnMKKy0JIHRoYXQgd2UgY2Fubm90IHRyYW5zZm9ybQorLQkgICBpZiAoeCA+IHkpCistCSAgICAg eworLQkgICAgICAgeCA9IHk7CistCSAgICAgICAuLi4KKy0JICAgICB9CistCSBpbnRvCistCSAg IHggPSAoeCA+IHkpIC4uLgorLQkgICAuLi4KKy0JIHNpbmNlIHRoaXMgd291bGQgaW52YWxpZGF0 ZSB4IGFuZCB0aGUgZm9sbG93aW5nIHRvLWJlLXJlbW92ZWQgY2hlY2tzLgorLQkgVGhlcmVmb3Jl IHdlIGludHJvZHVjZSBhIHRlbXBvcmFyeSBldmVyeSB0aW1lIHdlIGFyZSBhYm91dCB0bworLQkg b3ZlcndyaXRlIGEgdmFyaWFibGUgdXNlZCBpbiB0aGUgY2hlY2suICBDb3N0aW5nIG9mIGEgc2Vx dWVuY2Ugd2l0aAorLQkgdGhlc2UgaXMgZ29pbmcgdG8gYmUgaW5hY2N1cmF0ZSBzbyBvbmx5IHVz ZSB0ZW1wb3JhcmllcyB3aGVuCistCSBuZWVkZWQuCistCistCSBJZiBwZXJmb3JtaW5nIGEgc2Vj b25kIHRyeSwgd2Uga25vdyBob3cgbWFueSBpbnNucyByZXF1aXJlIGEKKy0JIHRlbXBvcmFyeS4g IEZvciB0aGUgbGFzdCBvZiB0aGVzZSwgd2UgY2FuIG9taXQgY3JlYXRpbmcgb25lLiAgKi8KKy0g ICAgICBpZiAocmVnX292ZXJsYXBfbWVudGlvbmVkX3AgKHRhcmdldCwgY29uZCkKKy0JICAmJiAo IXNlY29uZF90cnkgfHwgY291bnQgPCAqbGFzdF9uZWVkc19jb21wYXJpc29uKSkKKy0JdGVtcCA9 IGdlbl9yZWdfcnR4IChHRVRfTU9ERSAodGFyZ2V0KSk7CistICAgICAgZWxzZQorLQl0ZW1wID0g dGFyZ2V0OworLQorLSAgICAgIC8qIFdlIGhhdmUgaWRlbnRpZmllZCBzd2FwLXN0eWxlIGlkaW9t cyBiZWZvcmUuICBBIG5vcm1hbAorLQkgc2V0IHdpbGwgbmVlZCB0byBiZSBhIGNtb3Ygd2hpbGUg dGhlIGZpcnN0IGluc3RydWN0aW9uIG9mIGEgc3dhcC1zdHlsZQorLQkgaWRpb20gY2FuIGJlIGEg cmVndWxhciBtb3ZlLiAgVGhpcyBoZWxwcyB3aXRoIGNvc3RpbmcuICAqLworLSAgICAgIGJvb2wg bmVlZF9jbW92ID0gIW5lZWRfbm9fY21vdi0+Y29udGFpbnMgKGluc24pOworKyAgICAgIC8qIElm IHdlIHdlcmUgc3VwcG9zZWQgdG8gcmVhZCBmcm9tIGFuIGVhcmxpZXIgd3JpdGUgaW4gdGhpcyBi bG9jaywKKysJIHdlJ3ZlIGNoYW5nZWQgdGhlIHJlZ2lzdGVyIGFsbG9jYXRpb24uICBSZXdpcmUg dGhlIHJlYWQuICBXaGlsZQorKwkgd2UgYXJlIGxvb2tpbmcsIGFsc28gdHJ5IHRvIGNhdGNoIGEg c3dhcCBpZGlvbS4gICovCisrICAgICAgZm9yIChpbnQgaSA9IGNvdW50IC0gMTsgaSA+PSAwOyAt LWkpCisrCWlmIChyZWdfb3ZlcmxhcF9tZW50aW9uZWRfcCAobmV3X3ZhbCwgdGFyZ2V0c1tpXSkp CisrCSAgeworKwkgICAgLyogQ2F0Y2ggYSAic3dhcCIgc3R5bGUgaWRpb20uICAqLworKwkgICAg aWYgKGZpbmRfcmVnX25vdGUgKGluc24sIFJFR19ERUFELCBuZXdfdmFsKSAhPSBOVUxMX1JUWCkK KysJICAgICAgLyogVGhlIHdyaXRlIHRvIHRhcmdldHNbaV0gaXMgb25seSBsaXZlIHVudGlsIHRo ZSByZWFkCisrCQkgaGVyZS4gIEFzIHRoZSBjb25kaXRpb24gY29kZXMgbWF0Y2gsIHdlIGNhbiBw cm9wYWdhdGUKKysJCSB0aGUgc2V0IHRvIGhlcmUuICAqLworKwkgICAgICBuZXdfdmFsID0gU0VU X1NSQyAoc2luZ2xlX3NldCAodW5tb2RpZmllZF9pbnNuc1tpXSkpOworKwkgICAgZWxzZQorKwkg ICAgICBuZXdfdmFsID0gdGVtcG9yYXJpZXNbaV07CisrCSAgICBicmVhazsKKysJICB9CisgCisg ICAgICAgLyogSWYgd2UgaGFkIGEgbm9uLWNhbm9uaWNhbCBjb25kaXRpb25hbCBqdW1wIChpLmUu IG9uZSB3aGVyZQorIAkgdGhlIGZhbGx0aHJvdWdoIGlzIHRvIHRoZSAiZWxzZSIgY2FzZSkgd2Ug bmVlZCB0byByZXZlcnNlCitAQCAtMzQ3OCw5ICszMjU4LDcgQEAgbm9jZV9jb252ZXJ0X211bHRp cGxlX3NldHNfMSAoc3RydWN0IG5vY2VfaWZfaW5mbyAqaWZfaW5mbywKKyAJIHdlJ2xsIGVuZCB1 cCB0cnlpbmcgdG8gZW1pdCByNDpISSA9IGNvbmQgPyAocjE6U0kpIDogKHIzOkhJKS4KKyAJIFdy YXAgdGhlIHR3byBjbW92ZSBvcGVyYW5kcyBpbnRvIHN1YnJlZ3MgaWYgYXBwcm9wcmlhdGUgdG8g cHJldmVudAorIAkgdGhhdC4gICovCistCistICAgICAgaWYgKCFDT05TVEFOVF9QIChuZXdfdmFs KQorLQkgICYmIEdFVF9NT0RFIChuZXdfdmFsKSAhPSBHRVRfTU9ERSAodGVtcCkpCisrICAgICAg aWYgKEdFVF9NT0RFIChuZXdfdmFsKSAhPSBHRVRfTU9ERSAodGVtcCkpCisgCXsKKyAJICBtYWNo aW5lX21vZGUgc3JjX21vZGUgPSBHRVRfTU9ERSAobmV3X3ZhbCk7CisgCSAgbWFjaGluZV9tb2Rl IGRzdF9tb2RlID0gR0VUX01PREUgKHRlbXApOworQEAgLTM0OTEsOCArMzI2OSw3IEBAIG5vY2Vf Y29udmVydF9tdWx0aXBsZV9zZXRzXzEgKHN0cnVjdCBub2NlX2lmX2luZm8gKmlmX2luZm8sCisg CSAgICB9CisgCSAgbmV3X3ZhbCA9IGxvd3BhcnRfc3VicmVnIChkc3RfbW9kZSwgbmV3X3ZhbCwg c3JjX21vZGUpOworIAl9CistICAgICAgaWYgKCFDT05TVEFOVF9QIChvbGRfdmFsKQorLQkgICYm IEdFVF9NT0RFIChvbGRfdmFsKSAhPSBHRVRfTU9ERSAodGVtcCkpCisrICAgICAgaWYgKEdFVF9N T0RFIChvbGRfdmFsKSAhPSBHRVRfTU9ERSAodGVtcCkpCisgCXsKKyAJICBtYWNoaW5lX21vZGUg c3JjX21vZGUgPSBHRVRfTU9ERSAob2xkX3ZhbCk7CisgCSAgbWFjaGluZV9tb2RlIGRzdF9tb2Rl ID0gR0VUX01PREUgKHRlbXApOworQEAgLTM1MDQsODAgKzMyODEsMTAxIEBAIG5vY2VfY29udmVy dF9tdWx0aXBsZV9zZXRzXzEgKHN0cnVjdCBub2NlX2lmX2luZm8gKmlmX2luZm8sCisgCSAgb2xk X3ZhbCA9IGxvd3BhcnRfc3VicmVnIChkc3RfbW9kZSwgb2xkX3ZhbCwgc3JjX21vZGUpOworIAl9 CisgCistICAgICAgLyogVHJ5IGVtaXR0aW5nIGEgY29uZGl0aW9uYWwgbW92ZSBwYXNzaW5nIHRo ZSBiYWNrZW5kIHRoZQorLQkgY2Fub25pY2FsaXplZCBjb21wYXJpc29uLiAgVGhlIGJhY2tlbmQg aXMgdGhlbiBhYmxlIHRvCistCSByZWNvZ25pemUgZXhwcmVzc2lvbnMgbGlrZQorLQorLQkgICBp ZiAoeCA+IHkpCistCSAgICAgeSA9IHg7CistCistCSBhcyBtaW4vbWF4IGFuZCBlbWl0IGFuIGlu c24sIGFjY29yZGluZ2x5LiAgKi8KKy0gICAgICB1bnNpZ25lZCBjb3N0MSA9IDAsIGNvc3QyID0g MDsKKy0gICAgICBydHhfaW5zbiAqc2VxLCAqc2VxMSwgKnNlcTI7CistICAgICAgcnR4IHRlbXBf ZGVzdCA9IE5VTExfUlRYLCB0ZW1wX2Rlc3QxID0gTlVMTF9SVFgsIHRlbXBfZGVzdDIgPSBOVUxM X1JUWDsKKysgICAgICAvKiBBY3R1YWxseSBlbWl0IHRoZSBjb25kaXRpb25hbCBtb3ZlLiAgKi8K KysgICAgICBydHggdGVtcF9kZXN0ID0gbm9jZV9lbWl0X2Ntb3ZlIChpZl9pbmZvLCB0ZW1wLCBj b25kX2NvZGUsCisrCQkJCSAgICAgICB4LCB5LCBuZXdfdmFsLCBvbGRfdmFsKTsKKyAKKy0gICAg ICBzZXExID0gdHJ5X2VtaXRfY21vdmVfc2VxIChpZl9pbmZvLCB0ZW1wLCBjb25kLAorLQkJCQkg bmV3X3ZhbCwgb2xkX3ZhbCwgbmVlZF9jbW92LAorLQkJCQkgJmNvc3QxLCAmdGVtcF9kZXN0MSk7 CistCistICAgICAgLyogSGVyZSwgd2UgdHJ5IHRvIHBhc3MgdGhlIGJhY2tlbmQgYSBub24tY2Fu b25pY2FsaXplZCBjYyBjb21wYXJpc29uCistCSBhcyB3ZWxsLiAgVGhpcyBhbGxvd3MgdGhlIGJh Y2tlbmQgdG8gZW1pdCBhIGNtb3YgZGlyZWN0bHkgd2l0aG91dAorLQkgY3JlYXRpbmcgYW4gYWRk aXRpb25hbCBjb21wYXJlIGZvciBlYWNoLiAgSWYgc3VjY2Vzc2Z1bCwgY29zdGluZworLQkgaXMg ZWFzaWVyIGFuZCB0aGlzIHNlcXVlbmNlIGlzIHVzdWFsbHkgcHJlZmVycmVkLiAgKi8KKy0gICAg ICBzZXEyID0gdHJ5X2VtaXRfY21vdmVfc2VxIChpZl9pbmZvLCB0YXJnZXQsIGNvbmQsCistCQkJ CSBuZXdfdmFsLCBvbGRfdmFsLCBuZWVkX2Ntb3YsCistCQkJCSAmY29zdDIsICZ0ZW1wX2Rlc3Qy LCBjY19jbXAsIHJldl9jY19jbXApOworLQorLSAgICAgIC8qIENoZWNrIHdoaWNoIHZlcnNpb24g aXMgbGVzcyBleHBlbnNpdmUuICAqLworLSAgICAgIGlmIChzZXExICE9IE5VTExfUlRYICYmIChj b3N0MSA8PSBjb3N0MiB8fCBzZXEyID09IE5VTExfUlRYKSkKKy0JeworLQkgIHNlcSA9IHNlcTE7 CistCSAgdGVtcF9kZXN0ID0gdGVtcF9kZXN0MTsKKy0JICBpZiAoIXNlY29uZF90cnkpCistCSAg ICAqbGFzdF9uZWVkc19jb21wYXJpc29uID0gY291bnQ7CistCX0KKy0gICAgICBlbHNlIGlmIChz ZXEyICE9IE5VTExfUlRYKQorLQl7CistCSAgc2VxID0gc2VxMjsKKy0JICB0ZW1wX2Rlc3QgPSB0 ZW1wX2Rlc3QyOworLQl9CistICAgICAgZWxzZQorKyAgICAgIC8qIElmIHdlIGZhaWxlZCB0byBl eHBhbmQgdGhlIGNvbmRpdGlvbmFsIG1vdmUsIGRyb3Agb3V0IGFuZCBkb24ndAorKwkgdHJ5IHRv IGNvbnRpbnVlLiAgKi8KKysgICAgICBpZiAodGVtcF9kZXN0ID09IE5VTExfUlRYKQorIAl7Cist CSAgLyogTm90aGluZyB3b3JrZWQsIGJhaWwgb3V0LiAgKi8KKyAJICBlbmRfc2VxdWVuY2UgKCk7 CisgCSAgcmV0dXJuIEZBTFNFOworIAl9CisgCistICAgICAgLyogRW5kIHRoZSBzdWIgc2VxdWVu Y2UgYW5kIGVtaXQgdG8gdGhlIG1haW4gc2VxdWVuY2UuICAqLworLSAgICAgIGVtaXRfaW5zbiAo c2VxKTsKKy0KKyAgICAgICAvKiBCb29ra2VlcGluZy4gICovCisgICAgICAgY291bnQrKzsKKy0g ICAgICB0YXJnZXRzLT5zYWZlX3B1c2ggKHRhcmdldCk7CistICAgICAgdGVtcG9yYXJpZXMtPnNh ZmVfcHVzaCAodGVtcF9kZXN0KTsKKy0gICAgICB1bm1vZGlmaWVkX2luc25zLT5zYWZlX3B1c2gg KGluc24pOworKyAgICAgIHRhcmdldHMuc2FmZV9wdXNoICh0YXJnZXQpOworKyAgICAgIHRlbXBv cmFyaWVzLnNhZmVfcHVzaCAodGVtcF9kZXN0KTsKKysgICAgICB1bm1vZGlmaWVkX2luc25zLnNh ZmVfcHVzaCAoaW5zbik7CisgICAgIH0KKyAKKy0gIHJldHVybiB0cnVlOworLX0KKysgIC8qIFdl IG11c3QgaGF2ZSBzZWVuIHNvbWUgc29ydCBvZiBpbnNuIHRvIGluc2VydCwgb3RoZXJ3aXNlIHdl IHdlcmUKKysgICAgIGdpdmVuIGFuIGVtcHR5IEJCIHRvIGNvbnZlcnQsIGFuZCB3ZSBjYW4ndCBo YW5kbGUgdGhhdC4gICovCisrICBnY2NfYXNzZXJ0ICghdW5tb2RpZmllZF9pbnNucy5pc19lbXB0 eSAoKSk7CisrCisrICAvKiBOb3cgZml4dXAgdGhlIGFzc2lnbm1lbnRzLiAgKi8KKysgIGZvciAo aW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKysgICAgbm9jZV9lbWl0X21vdmVfaW5zbiAodGFy Z2V0c1tpXSwgdGVtcG9yYXJpZXNbaV0pOworKworKyAgLyogQWN0dWFsbHkgZW1pdCB0aGUgc2Vx dWVuY2UgaWYgaXQgaXNuJ3QgdG9vIGV4cGVuc2l2ZS4gICovCisrICBydHhfaW5zbiAqc2VxID0g Z2V0X2luc25zICgpOworKworKyAgaWYgKCF0YXJnZXRtLm5vY2VfY29udmVyc2lvbl9wcm9maXRh YmxlX3AgKHNlcSwgaWZfaW5mbykpCisrICAgIHsKKysgICAgICBlbmRfc2VxdWVuY2UgKCk7Cisr ICAgICAgcmV0dXJuIEZBTFNFOworKyAgICB9CisrCisrICBmb3IgKGluc24gPSBzZXE7IGluc247 IGluc24gPSBORVhUX0lOU04gKGluc24pKQorKyAgICBzZXRfdXNlZF9mbGFncyAoaW5zbik7Cisr CisrICAvKiBNYXJrIGFsbCBvdXIgdGVtcG9yYXJpZXMgYW5kIHRhcmdldHMgYXMgdXNlZC4gICov CisrICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisrICAgIHsKKysgICAgICBzZXRf dXNlZF9mbGFncyAodGVtcG9yYXJpZXNbaV0pOworKyAgICAgIHNldF91c2VkX2ZsYWdzICh0YXJn ZXRzW2ldKTsKKysgICAgfQorIAorKyAgc2V0X3VzZWRfZmxhZ3MgKGNvbmQpOworKyAgc2V0X3Vz ZWRfZmxhZ3MgKHgpOworKyAgc2V0X3VzZWRfZmxhZ3MgKHkpOworIAorKyAgdW5zaGFyZV9hbGxf cnRsX2luX2NoYWluIChzZXEpOworKyAgZW5kX3NlcXVlbmNlICgpOworKworKyAgaWYgKCFzZXEp CisrICAgIHJldHVybiBGQUxTRTsKKysKKysgIGZvciAoaW5zbiA9IHNlcTsgaW5zbjsgaW5zbiA9 IE5FWFRfSU5TTiAoaW5zbikpCisrICAgIGlmIChKVU1QX1AgKGluc24pCisrCXx8IHJlY29nX21l bW9pemVkIChpbnNuKSA9PSAtMSkKKysgICAgICByZXR1cm4gRkFMU0U7CisrCisrICBlbWl0X2lu c25fYmVmb3JlX3NldGxvYyAoc2VxLCBpZl9pbmZvLT5qdW1wLAorKwkJCSAgIElOU05fTE9DQVRJ T04gKHVubW9kaWZpZWRfaW5zbnMubGFzdCAoKSkpOworKworKyAgLyogQ2xlYW4gdXAgVEhFTl9C QiBhbmQgdGhlIGVkZ2VzIGluIGFuZCBvdXQgb2YgaXQuICAqLworKyAgcmVtb3ZlX2VkZ2UgKGZp bmRfZWRnZSAodGVzdF9iYiwgam9pbl9iYikpOworKyAgcmVtb3ZlX2VkZ2UgKGZpbmRfZWRnZSAo dGhlbl9iYiwgam9pbl9iYikpOworKyAgcmVkaXJlY3RfZWRnZV9hbmRfYnJhbmNoX2ZvcmNlIChz aW5nbGVfc3VjY19lZGdlICh0ZXN0X2JiKSwgam9pbl9iYik7CisrICBkZWxldGVfYmFzaWNfYmxv Y2sgKHRoZW5fYmIpOworKyAgbnVtX3RydWVfY2hhbmdlcysrOworKworKyAgLyogTWF5YmUgbWVy Z2UgYmxvY2tzIG5vdyB0aGUganVtcCBpcyBzaW1wbGUgZW5vdWdoLiAgKi8KKysgIGlmIChjYW5f bWVyZ2VfYmxvY2tzX3AgKHRlc3RfYmIsIGpvaW5fYmIpKQorKyAgICB7CisrICAgICAgbWVyZ2Vf YmxvY2tzICh0ZXN0X2JiLCBqb2luX2JiKTsKKysgICAgICBudW1fdHJ1ZV9jaGFuZ2VzKys7Cisr ICAgIH0KKysKKysgIG51bV91cGRhdGVkX2lmX2Jsb2NrcysrOworKyAgaWZfaW5mby0+dHJhbnNm b3JtX25hbWUgPSAibm9jZV9jb252ZXJ0X211bHRpcGxlX3NldHMiOworKyAgcmV0dXJuIFRSVUU7 CisrfQorIAorIC8qIFJldHVybiB0cnVlIGlmZiBiYXNpYyBibG9jayBURVNUX0JCIGlzIGNvbXBy aXNlZCBvZiBvbmx5CisgICAgKFNFVCAoUkVHKSAoUkVHKSkgaW5zbnMgc3VpdGFibGUgZm9yIGNv bnZlcnNpb24gdG8gYSBzZXJpZXMKKyAgICBvZiBjb25kaXRpb25hbCBtb3Zlcy4gIEFsc28gY2hl Y2sgdGhhdCB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgc2V0CisgICAgKG90aGVyIHJvdXRpbmVzIGNh biBoYW5kbGUgYSBzaW5nbGUgc2V0IGJldHRlciB0aGFuIHdlIHdvdWxkKSwgYW5kCistICAgZmV3 ZXIgdGhhbiBQQVJBTV9NQVhfUlRMX0lGX0NPTlZFUlNJT05fSU5TTlMgc2V0cy4gIFdoaWxlIGdv aW5nCistICAgdGhyb3VnaCB0aGUgaW5zbnMgc3RvcmUgdGhlIHN1bSBvZiB0aGVpciBwb3RlbnRp YWwgY29zdHMgaW4gQ09TVC4gICovCisrICAgZmV3ZXIgdGhhbiBQQVJBTV9NQVhfUlRMX0lGX0NP TlZFUlNJT05fSU5TTlMgc2V0cy4gICovCisgCisgc3RhdGljIGJvb2wKKy1iYl9va19mb3Jfbm9j ZV9jb252ZXJ0X211bHRpcGxlX3NldHMgKGJhc2ljX2Jsb2NrIHRlc3RfYmIsIHVuc2lnbmVkICpj b3N0KQorK2JiX29rX2Zvcl9ub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0cyAoYmFzaWNfYmxvY2sg dGVzdF9iYikKKyB7CisgICBydHhfaW5zbiAqaW5zbjsKKyAgIHVuc2lnbmVkIGNvdW50ID0gMDsK KyAgIHVuc2lnbmVkIHBhcmFtID0gcGFyYW1fbWF4X3J0bF9pZl9jb252ZXJzaW9uX2luc25zOwor LSAgYm9vbCBzcGVlZF9wID0gb3B0aW1pemVfYmJfZm9yX3NwZWVkX3AgKHRlc3RfYmIpOworLSAg dW5zaWduZWQgcG90ZW50aWFsX2Nvc3QgPSAwOworIAorICAgRk9SX0JCX0lOU05TICh0ZXN0X2Ji LCBpbnNuKQorICAgICB7CitAQCAtMzYwMCw5ICszMzk4LDkgQEAgYmJfb2tfZm9yX25vY2VfY29u dmVydF9tdWx0aXBsZV9zZXRzIChiYXNpY19ibG9jayB0ZXN0X2JiLCB1bnNpZ25lZCAqY29zdCkK KyAgICAgICBpZiAoIVJFR19QIChkZXN0KSkKKyAJcmV0dXJuIGZhbHNlOworIAorLSAgICAgIGlm ICghKChSRUdfUCAoc3JjKSB8fCBDT05TVEFOVF9QIChzcmMpKQorLQkgICAgfHwgKEdFVF9DT0RF IChzcmMpID09IFNVQlJFRyAmJiBSRUdfUCAoU1VCUkVHX1JFRyAoc3JjKSkKKy0JICAgICAgJiYg c3VicmVnX2xvd3BhcnRfcCAoc3JjKSkpKQorKyAgICAgIGlmICghKFJFR19QIChzcmMpCisrCSAg IHx8IChHRVRfQ09ERSAoc3JjKSA9PSBTVUJSRUcgJiYgUkVHX1AgKFNVQlJFR19SRUcgKHNyYykp CisrCSAgICAgICAmJiBzdWJyZWdfbG93cGFydF9wIChzcmMpKSkpCisgCXJldHVybiBmYWxzZTsK KyAKKyAgICAgICAvKiBEZXN0aW5hdGlvbiBtdXN0IGJlIGFwcHJvcHJpYXRlIGZvciBhIGNvbmRp dGlvbmFsIHdyaXRlLiAgKi8KK0BAIC0zNjEzLDEzICszNDExLDkgQEAgYmJfb2tfZm9yX25vY2Vf Y29udmVydF9tdWx0aXBsZV9zZXRzIChiYXNpY19ibG9jayB0ZXN0X2JiLCB1bnNpZ25lZCAqY29z dCkKKyAgICAgICBpZiAoIWNhbl9jb25kaXRpb25hbGx5X21vdmVfcCAoR0VUX01PREUgKGRlc3Qp KSkKKyAJcmV0dXJuIGZhbHNlOworIAorLSAgICAgIHBvdGVudGlhbF9jb3N0ICs9IGluc25fY29z dCAoaW5zbiwgc3BlZWRfcCk7CistCisgICAgICAgY291bnQrKzsKKyAgICAgfQorIAorLSAgKmNv c3QgKz0gcG90ZW50aWFsX2Nvc3Q7CistCisgICAvKiBJZiB3ZSB3b3VsZCBvbmx5IHB1dCBvdXQg b25lIGNvbmRpdGlvbmFsIG1vdmUsIHRoZSBvdGhlciBzdHJhdGVnaWVzCisgICAgICB0aGlzIHBh c3MgdHJpZXMgYXJlIGJldHRlciBvcHRpbWl6ZWQgYW5kIHdpbGwgYmUgbW9yZSBhcHByb3ByaWF0 ZS4KKyAgICAgIFNvbWUgdGFyZ2V0cyB3YW50IHRvIHN0cmljdGx5IGxpbWl0IHRoZSBudW1iZXIg b2YgY29uZGl0aW9uYWwgbW92ZXMKK0BAIC0zNjY3LDI0ICszNDYxLDExIEBAIG5vY2VfcHJvY2Vz c19pZl9ibG9jayAoc3RydWN0IG5vY2VfaWZfaW5mbyAqaWZfaW5mbykKKyAgICAgIHRvIGNhbGN1 bGF0ZSBhIHZhbHVlIGZvciB4LgorICAgICAgPz8/IEZvciBmdXR1cmUgZXhwYW5zaW9uLCBmdXJ0 aGVyIGV4cGFuZCB0aGUgIm11bHRpcGxlIFgiIHJ1bGVzLiAgKi8KKyAKKy0gIC8qIEZpcnN0IGxv b2sgZm9yIG11bHRpcGxlIFNFVFMuICBUaGUgb3JpZ2luYWwgY29zdHMgYWxyZWFkeSBpbmNsdWRl CistICAgICBhIGJhc2UgY29zdCBvZiBDT1NUU19OX0lOU05TICgyKTogb25lIGluc3RydWN0aW9u IGZvciB0aGUgY29tcGFyZQorLSAgICAgKHdoaWNoIHdlIHdpbGwgYmUgbmVlZGluZyBlaXRoZXIg d2F5KSBhbmQgb25lIGluc3RydWN0aW9uIGZvciB0aGUKKy0gICAgIGJyYW5jaC4gIFdoZW4gY29t cGFyaW5nIGNvc3RzIHdlIHdhbnQgdG8gdXNlIHRoZSBicmFuY2ggaW5zdHJ1Y3Rpb24KKy0gICAg IGNvc3QgYW5kIHRoZSBzZXRzIHZzLiB0aGUgY21vdnMgZ2VuZXJhdGVkIGhlcmUuICBUaGVyZWZv cmUgc3VidHJhY3QKKy0gICAgIHRoZSBjb3N0cyBvZiB0aGUgY29tcGFyZSBiZWZvcmUgY2hlY2tp bmcuCistICAgICA/Pz8gQWN0dWFsbHksIGluc3RlYWQgb2YgdGhlIGJyYW5jaCBpbnN0cnVjdGlv biBjb3N0cyB3ZSBtaWdodCB3YW50CistICAgICB0byB1c2UgQ09TVFNfTl9JTlNOUyAoQlJBTkNI X0NPU1QgKCkpIGFzIGluIG90aGVyIHBsYWNlcy4gICovCistCistICB1bnNpZ25lZCBwb3RlbnRp YWxfY29zdCA9IGlmX2luZm8tPm9yaWdpbmFsX2Nvc3QgLSBDT1NUU19OX0lOU05TICgxKTsKKy0g IHVuc2lnbmVkIG9sZF9jb3N0ID0gaWZfaW5mby0+b3JpZ2luYWxfY29zdDsKKysgIC8qIEZpcnN0 IGxvb2sgZm9yIG11bHRpcGxlIFNFVFMuICAqLworICAgaWYgKCFlbHNlX2JiCisgICAgICAgJiYg SEFWRV9jb25kaXRpb25hbF9tb3ZlCistICAgICAgJiYgYmJfb2tfZm9yX25vY2VfY29udmVydF9t dWx0aXBsZV9zZXRzICh0aGVuX2JiLCAmcG90ZW50aWFsX2Nvc3QpKQorKyAgICAgICYmIGJiX29r X2Zvcl9ub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0cyAodGhlbl9iYikpCisgICAgIHsKKy0gICAg ICAvKiBUZW1wb3JhcmlseSBzZXQgdGhlIG9yaWdpbmFsIGNvc3RzIHRvIHdoYXQgd2UgZXN0aW1h dGVkIHNvCistCSB3ZSBjYW4gZGV0ZXJtaW5lIGlmIHRoZSB0cmFuc2Zvcm1hdGlvbiBpcyB3b3J0 aCBpdC4gICovCistICAgICAgaWZfaW5mby0+b3JpZ2luYWxfY29zdCA9IHBvdGVudGlhbF9jb3N0 OworICAgICAgIGlmIChub2NlX2NvbnZlcnRfbXVsdGlwbGVfc2V0cyAoaWZfaW5mbykpCisgCXsK KyAJICBpZiAoZHVtcF9maWxlICYmIGlmX2luZm8tPnRyYW5zZm9ybV9uYW1lKQorQEAgLTM2OTIs OSArMzQ3Myw2IEBAIG5vY2VfcHJvY2Vzc19pZl9ibG9jayAoc3RydWN0IG5vY2VfaWZfaW5mbyAq aWZfaW5mbykKKyAJCSAgICAgaWZfaW5mby0+dHJhbnNmb3JtX25hbWUpOworIAkgIHJldHVybiBU UlVFOworIAl9CistCistICAgICAgLyogUmVzdG9yZSB0aGUgb3JpZ2luYWwgY29zdHMuICAqLwor LSAgICAgIGlmX2luZm8tPm9yaWdpbmFsX2Nvc3QgPSBvbGRfY29zdDsKKyAgICAgfQorIAorICAg Ym9vbCBzcGVlZF9wID0gb3B0aW1pemVfYmJfZm9yX3NwZWVkX3AgKHRlc3RfYmIpOworQEAgLTQw MzYsODkgKzM4MTQsNiBAQCBjaGVja19jb25kX21vdmVfYmxvY2sgKGJhc2ljX2Jsb2NrIGJiLAor ICAgcmV0dXJuIFRSVUU7CisgfQorIAorLS8qIEZpbmQgbG9jYWwgc3dhcC1zdHlsZSBpZGlvbXMg aW4gQkIgYW5kIG1hcmsgdGhlIGZpcnN0IGluc24gKDEpCistICAgdGhhdCBpcyBvbmx5IGEgdGVt cG9yYXJ5IGFzIG5vdCBuZWVkaW5nIGEgY29uZGl0aW9uYWwgbW92ZSBhcworLSAgIGl0IGlzIGdv aW5nIHRvIGJlIGRlYWQgYWZ0ZXJ3YXJkcyBhbnl3YXkuCistCistICAgICAoMSkgaW50IHRtcCA9 IGE7CistCSBhID0gYjsKKy0JIGIgPSB0bXA7CistCistCSBpZmN2dAorLQkgLS0+CistCistCSB0 bXAgPSBhOworLQkgYSA9IGNvbmQgPyBiIDogYV9vbGQ7CistCSBiID0gY29uZCA/IHRtcCA6IGJf b2xkOworLQorLSAgICBBZGRpdGlvbmFsbHksIHN0b3JlIHRoZSBpbmRleCBvZiBpbnNucyBsaWtl ICgyKSB3aGVuIGEgc3Vic2VxdWVudAorLSAgICBTRVQgcmVhZHMgZnJvbSB0aGVpciBkZXN0aW5h dGlvbi4KKy0KKy0gICAgKDIpIGludCBjID0gYTsKKy0JaW50IGQgPSBjOworLQorLQlpZmN2dAor LQktLT4KKy0KKy0JYyA9IGNvbmQgPyBhIDogY19vbGQ7CistCWQgPSBjb25kID8gZCA6IGM7ICAg ICAvLyBOZWVkIHRvIHVzZSBjIHJhdGhlciB0aGFuIGNfb2xkIGhlcmUuCistKi8KKy0KKy1zdGF0 aWMgdm9pZAorLW5lZWRfY21vdl9vcl9yZXdpcmUgKGJhc2ljX2Jsb2NrIGJiLAorLQkJICAgICBo YXNoX3NldDxydHhfaW5zbiAqPiAqbmVlZF9ub19jbW92LAorLQkJICAgICBoYXNoX21hcDxydHhf aW5zbiAqLCBpbnQ+ICpyZXdpcmVkX3NyYykKKy17CistICBydHhfaW5zbiAqaW5zbjsKKy0gIGlu dCBjb3VudCA9IDA7CistICBhdXRvX3ZlYzxydHhfaW5zbiAqPiBpbnNuczsKKy0gIGF1dG9fdmVj PHJ0eD4gZGVzdHM7CistCistICAvKiBJdGVyYXRlIG92ZXIgYWxsIFNFVHMsIHN0b3JpbmcgdGhl IGRlc3RpbmF0aW9ucworLSAgICAgaW4gREVTVC4KKy0gICAgIC0gSWYgd2UgaGl0IGEgU0VUIHRo YXQgcmVhZHMgZnJvbSBhIGRlc3RpbmF0aW9uCistICAgICAgIHRoYXQgd2UgaGF2ZSBzZWVuIGJl Zm9yZSBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgcmVnaXN0ZXIKKy0gICAgICAgaXMgZGVhZCBhZnRl cndhcmRzLCB0aGUgcmVnaXN0ZXIgZG9lcyBub3QgbmVlZCB0byBiZQorLSAgICAgICBtb3ZlZCBj b25kaXRpb25hbGx5LgorLSAgICAgLSBJZiB3ZSBlbmNvdW50ZXIgYSBwcmV2aW91c2x5IGNoYW5n ZWQgcmVnaXN0ZXIsCistICAgICAgIHJld2lyZSB0aGUgcmVhZCB0byB0aGUgb3JpZ2luYWwgc291 cmNlLiAgKi8KKy0gIEZPUl9CQl9JTlNOUyAoYmIsIGluc24pCistICAgIHsKKy0gICAgICBydHgg c2V0LCBzcmMsIGRlc3Q7CistCistICAgICAgaWYgKCFhY3RpdmVfaW5zbl9wIChpbnNuKSkKKy0J Y29udGludWU7CistCistICAgICAgc2V0ID0gc2luZ2xlX3NldCAoaW5zbik7CistICAgICAgaWYg KHNldCA9PSBOVUxMX1JUWCkKKy0JY29udGludWU7CistCistICAgICAgc3JjID0gU0VUX1NSQyAo c2V0KTsKKy0gICAgICBpZiAoU1VCUkVHX1AgKHNyYykpCistCXNyYyA9IFNVQlJFR19SRUcgKHNy Yyk7CistICAgICAgZGVzdCA9IFNFVF9ERVNUIChzZXQpOworLQorLSAgICAgIC8qIENoZWNrIGlm IHRoZSBjdXJyZW50IFNFVCdzIHNvdXJjZSBpcyB0aGUgc2FtZQorLQkgYXMgYW55IHByZXZpb3Vz bHkgc2VlbiBkZXN0aW5hdGlvbi4KKy0JIFRoaXMgaXMgcXVhZHJhdGljIGJ1dCB0aGUgbnVtYmVy IG9mIGluc25zIGluIEJCCistCSBpcyBib3VuZGVkIGJ5IFBBUkFNX01BWF9SVExfSUZfQ09OVkVS U0lPTl9JTlNOUy4gICovCistICAgICAgaWYgKFJFR19QIChzcmMpKQorLQlmb3IgKGludCBpID0g Y291bnQgLSAxOyBpID49IDA7IC0taSkKKy0JICBpZiAocmVnX292ZXJsYXBfbWVudGlvbmVkX3Ag KHNyYywgZGVzdHNbaV0pKQorLQkgICAgeworLQkgICAgICBpZiAoZmluZF9yZWdfbm90ZSAoaW5z biwgUkVHX0RFQUQsIHNyYykgIT0gTlVMTF9SVFgpCistCQluZWVkX25vX2Ntb3YtPmFkZCAoaW5z bnNbaV0pOworLQkgICAgICBlbHNlCistCQlyZXdpcmVkX3NyYy0+cHV0IChpbnNuLCBpKTsKKy0J ICAgIH0KKy0KKy0gICAgICBpbnNucy5zYWZlX3B1c2ggKGluc24pOworLSAgICAgIGRlc3RzLnNh ZmVfcHVzaCAoZGVzdCk7CistCistICAgICAgY291bnQrKzsKKy0gICAgfQorLX0KKy0KKyAvKiBH aXZlbiBhIGJhc2ljIGJsb2NrIEJCIHN1aXRhYmxlIGZvciBjb25kaXRpb25hbCBtb3ZlIGNvbnZl cnNpb24sCisgICAgYSBjb25kaXRpb24gQ09ORCwgYW5kIHBvaW50ZXIgbWFwcyBUSEVOX1ZBTFMg YW5kIEVMU0VfVkFMUyBjb250YWluaW5nCisgICAgdGhlIHJlZ2lzdGVyIHZhbHVlcyBkZXBlbmRp bmcgb24gQ09ORCwgZW1pdCB0aGUgaW5zbnMgaW4gdGhlIGJsb2NrIGFzCistLS0gZ2NjL29wdGFi cy5jYworKysrIGdjYy9vcHRhYnMuY2MKK0BAIC01Miw4ICs1Miw2IEBAIHN0YXRpYyB2b2lkIHBy ZXBhcmVfZmxvYXRfbGliX2NtcCAocnR4LCBydHgsIGVudW0gcnR4X2NvZGUsIHJ0eCAqLAorIHN0 YXRpYyBydHggZXhwYW5kX3Vub3BfZGlyZWN0IChtYWNoaW5lX21vZGUsIG9wdGFiLCBydHgsIHJ0 eCwgaW50KTsKKyBzdGF0aWMgdm9pZCBlbWl0X2xpYmNhbGxfYmxvY2tfMSAocnR4X2luc24gKiwg cnR4LCBydHgsIHJ0eCwgYm9vbCk7CisgCistc3RhdGljIHJ0eCBlbWl0X2NvbmRpdGlvbmFsX21v dmVfMSAocnR4LCBydHgsIHJ0eCwgcnR4LCBtYWNoaW5lX21vZGUpOworLQorIC8qIERlYnVnIGZh Y2lsaXR5IGZvciB1c2UgaW4gR0RCLiAgKi8KKyB2b2lkIGRlYnVnX29wdGFiX2xpYmZ1bmNzICh2 b2lkKTsKKyAMCitAQCAtNjI2LDEzICs2MjQsMTIgQEAgZXhwYW5kX2RvdWJsZXdvcmRfc2hpZnRf Y29uZG1vdmUgKHNjYWxhcl9pbnRfbW9kZSBvcDFfbW9kZSwgb3B0YWIgYmlub3B0YWIsCisgCisg ICAvKiBTZWxlY3QgYmV0d2VlbiB0aGVtLiAgRG8gdGhlIElOVE8gaGFsZiBmaXJzdCBiZWNhdXNl IElOVE9fU1VQRVJXT1JECisgICAgICBtaWdodCBiZSB0aGUgY3VycmVudCB2YWx1ZSBvZiBPVVRP Rl9UQVJHRVQuICAqLworLSAgaWYgKCFlbWl0X2NvbmRpdGlvbmFsX21vdmUgKGludG9fdGFyZ2V0 LCB7IGNtcF9jb2RlLCBjbXAxLCBjbXAyLCBvcDFfbW9kZSB9LAorKyAgaWYgKCFlbWl0X2NvbmRp dGlvbmFsX21vdmUgKGludG9fdGFyZ2V0LCBjbXBfY29kZSwgY21wMSwgY21wMiwgb3AxX21vZGUs CisgCQkJICAgICAgaW50b190YXJnZXQsIGludG9fc3VwZXJ3b3JkLCB3b3JkX21vZGUsIGZhbHNl KSkKKyAgICAgcmV0dXJuIGZhbHNlOworIAorICAgaWYgKG91dG9mX3RhcmdldCAhPSAwKQorLSAg ICBpZiAoIWVtaXRfY29uZGl0aW9uYWxfbW92ZSAob3V0b2ZfdGFyZ2V0LAorLQkJCQl7IGNtcF9j b2RlLCBjbXAxLCBjbXAyLCBvcDFfbW9kZSB9LAorKyAgICBpZiAoIWVtaXRfY29uZGl0aW9uYWxf bW92ZSAob3V0b2ZfdGFyZ2V0LCBjbXBfY29kZSwgY21wMSwgY21wMiwgb3AxX21vZGUsCisgCQkJ CW91dG9mX3RhcmdldCwgb3V0b2Zfc3VwZXJ3b3JkLAorIAkJCQl3b3JkX21vZGUsIGZhbHNlKSkK KyAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtNDg1NCw4ICs0ODUxLDggQEAgZW1pdF9pbmRpcmVj dF9qdW1wIChydHggbG9jKQorICAgIGlzIG5vdCBzdXBwb3J0ZWQuICAqLworIAorIHJ0eAorLWVt aXRfY29uZGl0aW9uYWxfbW92ZSAocnR4IHRhcmdldCwgc3RydWN0IHJ0eF9jb21wYXJpc29uIGNv bXAsCistCQkgICAgICAgcnR4IG9wMiwgcnR4IG9wMywKKytlbWl0X2NvbmRpdGlvbmFsX21vdmUg KHJ0eCB0YXJnZXQsIGVudW0gcnR4X2NvZGUgY29kZSwgcnR4IG9wMCwgcnR4IG9wMSwKKysJCSAg ICAgICBtYWNoaW5lX21vZGUgY21vZGUsIHJ0eCBvcDIsIHJ0eCBvcDMsCisgCQkgICAgICAgbWFj aGluZV9tb2RlIG1vZGUsIGludCB1bnNpZ25lZHApCisgeworICAgcnR4IGNvbXBhcmlzb247CitA QCAtNDg3NywzMyArNDg3NCwzMSBAQCBlbWl0X2NvbmRpdGlvbmFsX21vdmUgKHJ0eCB0YXJnZXQs IHN0cnVjdCBydHhfY29tcGFyaXNvbiBjb21wLAorICAgLyogSWYgb25lIG9wZXJhbmQgaXMgY29u c3RhbnQsIG1ha2UgaXQgdGhlIHNlY29uZCBvbmUuICBPbmx5IGRvIHRoaXMKKyAgICAgIGlmIHRo ZSBvdGhlciBvcGVyYW5kIGlzIG5vdCBjb25zdGFudCBhcyB3ZWxsLiAgKi8KKyAKKy0gIGlmIChz d2FwX2NvbW11dGF0aXZlX29wZXJhbmRzX3AgKGNvbXAub3AwLCBjb21wLm9wMSkpCisrICBpZiAo c3dhcF9jb21tdXRhdGl2ZV9vcGVyYW5kc19wIChvcDAsIG9wMSkpCisgICAgIHsKKy0gICAgICBz dGQ6OnN3YXAgKGNvbXAub3AwLCBjb21wLm9wMSk7CistICAgICAgY29tcC5jb2RlID0gc3dhcF9j b25kaXRpb24gKGNvbXAuY29kZSk7CisrICAgICAgc3RkOjpzd2FwIChvcDAsIG9wMSk7CisrICAg ICAgY29kZSA9IHN3YXBfY29uZGl0aW9uIChjb2RlKTsKKyAgICAgfQorIAorICAgLyogZ2V0X2Nv bmRpdGlvbiB3aWxsIHByZWZlciB0byBnZW5lcmF0ZSBMVCBhbmQgR1QgZXZlbiBpZiB0aGUgb2xk CisgICAgICBjb21wYXJpc29uIHdhcyBhZ2FpbnN0IHplcm8sIHNvIHVuZG8gdGhhdCBjYW5vbmlj YWxpemF0aW9uIGhlcmUgc2luY2UKKyAgICAgIGNvbXBhcmlzb25zIGFnYWluc3QgemVybyBhcmUg Y2hlYXBlci4gICovCisrICBpZiAoY29kZSA9PSBMVCAmJiBvcDEgPT0gY29uc3QxX3J0eCkKKysg ICAgY29kZSA9IExFLCBvcDEgPSBjb25zdDBfcnR4OworKyAgZWxzZSBpZiAoY29kZSA9PSBHVCAm JiBvcDEgPT0gY29uc3RtMV9ydHgpCisrICAgIGNvZGUgPSBHRSwgb3AxID0gY29uc3QwX3J0eDsK KyAKKy0gIGlmIChjb21wLmNvZGUgPT0gTFQgJiYgY29tcC5vcDEgPT0gY29uc3QxX3J0eCkKKy0g ICAgY29tcC5jb2RlID0gTEUsIGNvbXAub3AxID0gY29uc3QwX3J0eDsKKy0gIGVsc2UgaWYgKGNv bXAuY29kZSA9PSBHVCAmJiBjb21wLm9wMSA9PSBjb25zdG0xX3J0eCkKKy0gICAgY29tcC5jb2Rl ID0gR0UsIGNvbXAub3AxID0gY29uc3QwX3J0eDsKKy0KKy0gIGlmIChjb21wLm1vZGUgPT0gVk9J RG1vZGUpCistICAgIGNvbXAubW9kZSA9IEdFVF9NT0RFIChjb21wLm9wMCk7CisrICBpZiAoY21v ZGUgPT0gVk9JRG1vZGUpCisrICAgIGNtb2RlID0gR0VUX01PREUgKG9wMCk7CisgCistICBlbnVt IHJ0eF9jb2RlIG9yaWdfY29kZSA9IGNvbXAuY29kZTsKKysgIGVudW0gcnR4X2NvZGUgb3JpZ19j b2RlID0gY29kZTsKKyAgIGJvb2wgc3dhcHBlZCA9IGZhbHNlOworICAgaWYgKHN3YXBfY29tbXV0 YXRpdmVfb3BlcmFuZHNfcCAob3AyLCBvcDMpCistICAgICAgJiYgKChyZXZlcnNlZCA9CistCSAg IHJldmVyc2VkX2NvbXBhcmlzb25fY29kZV9wYXJ0cyAoY29tcC5jb2RlLCBjb21wLm9wMCwgY29t cC5vcDEsIE5VTEwpKQorLQkgICE9IFVOS05PV04pKQorKyAgICAgICYmICgocmV2ZXJzZWQgPSBy ZXZlcnNlZF9jb21wYXJpc29uX2NvZGVfcGFydHMgKGNvZGUsIG9wMCwgb3AxLCBOVUxMKSkKKysg ICAgICAgICAgIT0gVU5LTk9XTikpCisgICAgIHsKKyAgICAgICBzdGQ6OnN3YXAgKG9wMiwgb3Az KTsKKy0gICAgICBjb21wLmNvZGUgPSByZXZlcnNlZDsKKysgICAgICBjb2RlID0gcmV2ZXJzZWQ7 CisgICAgICAgc3dhcHBlZCA9IHRydWU7CisgICAgIH0KKyAKK0BAIC00OTIwLDEwICs0OTE1LDgg QEAgZW1pdF9jb25kaXRpb25hbF9tb3ZlIChydHggdGFyZ2V0LCBzdHJ1Y3QgcnR4X2NvbXBhcmlz b24gY29tcCwKKyAKKyAgIGZvciAoaW50IHBhc3MgPSAwOyA7IHBhc3MrKykKKyAgICAgeworLSAg ICAgIGNvbXAuY29kZSA9IHVuc2lnbmVkcCA/IHVuc2lnbmVkX2NvbmRpdGlvbiAoY29tcC5jb2Rl KSA6IGNvbXAuY29kZTsKKy0gICAgICBjb21wYXJpc29uID0KKy0Jc2ltcGxpZnlfZ2VuX3JlbGF0 aW9uYWwgKGNvbXAuY29kZSwgVk9JRG1vZGUsCistCQkJCSBjb21wLm1vZGUsIGNvbXAub3AwLCBj b21wLm9wMSk7CisrICAgICAgY29kZSA9IHVuc2lnbmVkcCA/IHVuc2lnbmVkX2NvbmRpdGlvbiAo Y29kZSkgOiBjb2RlOworKyAgICAgIGNvbXBhcmlzb24gPSBzaW1wbGlmeV9nZW5fcmVsYXRpb25h bCAoY29kZSwgVk9JRG1vZGUsIGNtb2RlLCBvcDAsIG9wMSk7CisgCisgICAgICAgLyogV2UgY2Fu IGdldCBjb25zdDBfcnR4IG9yIGNvbnN0X3RydWVfcnR4IGluIHNvbWUgY2lyY3Vtc3RhbmNlcy4g IEp1c3QKKyAJIHB1bnQgYW5kIGxldCB0aGUgY2FsbGVyIGZpZ3VyZSBvdXQgaG93IGJlc3QgdG8g ZGVhbCB3aXRoIHRoaXMKK0BAIC00OTM0LDE2ICs0OTI3LDI0IEBAIGVtaXRfY29uZGl0aW9uYWxf bW92ZSAocnR4IHRhcmdldCwgc3RydWN0IHJ0eF9jb21wYXJpc29uIGNvbXAsCisgCSAgc2F2ZV9w ZW5kaW5nX3N0YWNrX2FkanVzdCAoJnNhdmUpOworIAkgIGxhc3QgPSBnZXRfbGFzdF9pbnNuICgp OworIAkgIGRvX3BlbmRpbmdfc3RhY2tfYWRqdXN0ICgpOworLQkgIG1hY2hpbmVfbW9kZSBjbXBt b2RlID0gY29tcC5tb2RlOworKwkgIG1hY2hpbmVfbW9kZSBjbXBtb2RlID0gY21vZGU7CisgCSAg cHJlcGFyZV9jbXBfaW5zbiAoWEVYUCAoY29tcGFyaXNvbiwgMCksIFhFWFAgKGNvbXBhcmlzb24s IDEpLAorIAkJCSAgICBHRVRfQ09ERSAoY29tcGFyaXNvbiksIE5VTExfUlRYLCB1bnNpZ25lZHAs CisgCQkJICAgIE9QVEFCX1dJREVOLCAmY29tcGFyaXNvbiwgJmNtcG1vZGUpOworIAkgIGlmIChj b21wYXJpc29uKQorIAkgICAgeworLQkgICAgICAgcnR4IHJlcyA9IGVtaXRfY29uZGl0aW9uYWxf bW92ZV8xICh0YXJnZXQsIGNvbXBhcmlzb24sCistCQkJCQkJICBvcDIsIG9wMywgbW9kZSk7Cist CSAgICAgICBpZiAocmVzICE9IE5VTExfUlRYKQorLQkJIHJldHVybiByZXM7CisrCSAgICAgIGNs YXNzIGV4cGFuZF9vcGVyYW5kIG9wc1s0XTsKKysKKysJICAgICAgY3JlYXRlX291dHB1dF9vcGVy YW5kICgmb3BzWzBdLCB0YXJnZXQsIG1vZGUpOworKwkgICAgICBjcmVhdGVfZml4ZWRfb3BlcmFu ZCAoJm9wc1sxXSwgY29tcGFyaXNvbik7CisrCSAgICAgIGNyZWF0ZV9pbnB1dF9vcGVyYW5kICgm b3BzWzJdLCBvcDIsIG1vZGUpOworKwkgICAgICBjcmVhdGVfaW5wdXRfb3BlcmFuZCAoJm9wc1sz XSwgb3AzLCBtb2RlKTsKKysJICAgICAgaWYgKG1heWJlX2V4cGFuZF9pbnNuIChpY29kZSwgNCwg b3BzKSkKKysJCXsKKysJCSAgaWYgKG9wc1swXS52YWx1ZSAhPSB0YXJnZXQpCisrCQkgICAgY29u dmVydF9tb3ZlICh0YXJnZXQsIG9wc1swXS52YWx1ZSwgZmFsc2UpOworKwkJICByZXR1cm4gdGFy Z2V0OworKwkJfQorIAkgICAgfQorIAkgIGRlbGV0ZV9pbnNuc19zaW5jZSAobGFzdCk7CisgCSAg cmVzdG9yZV9wZW5kaW5nX3N0YWNrX2FkanVzdCAoJnNhdmUpOworQEAgLTQ5NTUsODggKzQ5NTYs MTcgQEAgZW1pdF9jb25kaXRpb25hbF9tb3ZlIChydHggdGFyZ2V0LCBzdHJ1Y3QgcnR4X2NvbXBh cmlzb24gY29tcCwKKyAgICAgICAvKiBJZiB0aGUgcHJlZmVycmVkIG9wMi9vcDMgb3JkZXIgaXMg bm90IHVzYWJsZSwgcmV0cnkgd2l0aCBvdGhlcgorIAkgb3BlcmFuZCBvcmRlciwgcGVyaGFwcyBp dCB3aWxsIGV4cGFuZCBzdWNjZXNzZnVsbHkuICAqLworICAgICAgIGlmIChzd2FwcGVkKQorLQlj b21wLmNvZGUgPSBvcmlnX2NvZGU7CistICAgICAgZWxzZSBpZiAoKHJldmVyc2VkID0KKy0JCXJl dmVyc2VkX2NvbXBhcmlzb25fY29kZV9wYXJ0cyAob3JpZ19jb2RlLCBjb21wLm9wMCwgY29tcC5v cDEsCisrCWNvZGUgPSBvcmlnX2NvZGU7CisrICAgICAgZWxzZSBpZiAoKHJldmVyc2VkID0gcmV2 ZXJzZWRfY29tcGFyaXNvbl9jb2RlX3BhcnRzIChvcmlnX2NvZGUsIG9wMCwgb3AxLAorIAkJCQkJ CQkgICBOVUxMKSkKKyAJICAgICAgICE9IFVOS05PV04pCistCWNvbXAuY29kZSA9IHJldmVyc2Vk OworKwljb2RlID0gcmV2ZXJzZWQ7CisgICAgICAgZWxzZQorIAlyZXR1cm4gTlVMTF9SVFg7Cisg ICAgICAgc3RkOjpzd2FwIChvcDIsIG9wMyk7CisgICAgIH0KKyB9CisgCistLyogSGVscGVyIGZ1 bmN0aW9uIHRoYXQsIGluIGFkZGl0aW9uIHRvIENPTVBBUklTT04sIGFsc28gdHJpZXMKKy0gICB0 aGUgcmV2ZXJzZWQgUkVWX0NPTVBBUklTT04gd2l0aCBzd2FwcGVkIE9QMiBhbmQgT1AzLiAgQXMg b3Bwb3NlZAorLSAgIHRvIHdoZW4gd2UgcGFzcyB0aGUgc3BlY2lmaWMgY29uc3RpdHVlbnRzIG9m IGEgY29tcGFyaXNvbiwgbm8KKy0gICBhZGRpdGlvbmFsIGluc25zIGFyZSBlbWl0dGVkIGZvciBp dC4gIEl0IG1pZ2h0IHN0aWxsIGJlIG5lY2Vzc2FyeQorLSAgIHRvIGVtaXQgbW9yZSB0aGFuIG9u ZSBpbnNuIGZvciB0aGUgZmluYWwgY29uZGl0aW9uYWwgbW92ZSwgdGhvdWdoLiAgKi8KKy0KKy1y dHgKKy1lbWl0X2NvbmRpdGlvbmFsX21vdmUgKHJ0eCB0YXJnZXQsIHJ0eCBjb21wYXJpc29uLCBy dHggcmV2X2NvbXBhcmlzb24sCistCQkgICAgICAgcnR4IG9wMiwgcnR4IG9wMywgbWFjaGluZV9t b2RlIG1vZGUpCisteworLSAgcnR4IHJlcyA9IGVtaXRfY29uZGl0aW9uYWxfbW92ZV8xICh0YXJn ZXQsIGNvbXBhcmlzb24sIG9wMiwgb3AzLCBtb2RlKTsKKy0KKy0gIGlmIChyZXMgIT0gTlVMTF9S VFgpCistICAgIHJldHVybiByZXM7CistCistICByZXR1cm4gZW1pdF9jb25kaXRpb25hbF9tb3Zl XzEgKHRhcmdldCwgcmV2X2NvbXBhcmlzb24sIG9wMywgb3AyLCBtb2RlKTsKKy19CistCistLyog SGVscGVyIGZvciBlbWl0dGluZyBhIGNvbmRpdGlvbmFsIG1vdmUuICAqLworLQorLXN0YXRpYyBy dHgKKy1lbWl0X2NvbmRpdGlvbmFsX21vdmVfMSAocnR4IHRhcmdldCwgcnR4IGNvbXBhcmlzb24s CistCQkJIHJ0eCBvcDIsIHJ0eCBvcDMsIG1hY2hpbmVfbW9kZSBtb2RlKQorLXsKKy0gIGVudW0g aW5zbl9jb2RlIGljb2RlOworLQorLSAgaWYgKGNvbXBhcmlzb24gPT0gTlVMTF9SVFggfHwgIUNP TVBBUklTT05fUCAoY29tcGFyaXNvbikpCistICAgIHJldHVybiBOVUxMX1JUWDsKKy0KKy0gIC8q IElmIHRoZSB0d28gc291cmNlIG9wZXJhbmRzIGFyZSBpZGVudGljYWwsIHRoYXQncyBqdXN0IGEg bW92ZS4KKy0gICAgIEFzIHRoZSBjb21wYXJpc29uIGNvbWVzIGluIG5vbi1jYW5vbmljYWxpemVk LCB3ZSBtdXN0IG1ha2UKKy0gICAgIHN1cmUgbm90IHRvIGRpc2NhcmQgYW55IHBvc3NpYmxlIHNp ZGUgZWZmZWN0cy4gIElmIHRoZXJlIGFyZQorLSAgICAgc2lkZSBlZmZlY3RzLCBqdXN0IGxldCB0 aGUgdGFyZ2V0IGhhbmRsZSBpdC4gICovCistICBpZiAoIXNpZGVfZWZmZWN0c19wIChjb21wYXJp c29uKSAmJiBydHhfZXF1YWxfcCAob3AyLCBvcDMpKQorLSAgICB7CistICAgICAgaWYgKCF0YXJn ZXQpCistCXRhcmdldCA9IGdlbl9yZWdfcnR4IChtb2RlKTsKKy0KKy0gICAgICBlbWl0X21vdmVf aW5zbiAodGFyZ2V0LCBvcDMpOworLSAgICAgIHJldHVybiB0YXJnZXQ7CistICAgIH0KKy0KKy0g IGlmIChtb2RlID09IFZPSURtb2RlKQorLSAgICBtb2RlID0gR0VUX01PREUgKG9wMik7CistCist ICBpY29kZSA9IGRpcmVjdF9vcHRhYl9oYW5kbGVyIChtb3ZjY19vcHRhYiwgbW9kZSk7CistCist ICBpZiAoaWNvZGUgPT0gQ09ERV9GT1Jfbm90aGluZykKKy0gICAgcmV0dXJuIE5VTExfUlRYOwor LQorLSAgaWYgKCF0YXJnZXQpCistICAgIHRhcmdldCA9IGdlbl9yZWdfcnR4IChtb2RlKTsKKy0K Ky0gIGNsYXNzIGV4cGFuZF9vcGVyYW5kIG9wc1s0XTsKKy0KKy0gIGNyZWF0ZV9vdXRwdXRfb3Bl cmFuZCAoJm9wc1swXSwgdGFyZ2V0LCBtb2RlKTsKKy0gIGNyZWF0ZV9maXhlZF9vcGVyYW5kICgm b3BzWzFdLCBjb21wYXJpc29uKTsKKy0gIGNyZWF0ZV9pbnB1dF9vcGVyYW5kICgmb3BzWzJdLCBv cDIsIG1vZGUpOworLSAgY3JlYXRlX2lucHV0X29wZXJhbmQgKCZvcHNbM10sIG9wMywgbW9kZSk7 CistCistICBpZiAobWF5YmVfZXhwYW5kX2luc24gKGljb2RlLCA0LCBvcHMpKQorLSAgICB7Cist ICAgICAgaWYgKG9wc1swXS52YWx1ZSAhPSB0YXJnZXQpCistCWNvbnZlcnRfbW92ZSAodGFyZ2V0 LCBvcHNbMF0udmFsdWUsIGZhbHNlKTsKKy0gICAgICByZXR1cm4gdGFyZ2V0OworLSAgICB9Cist CistICByZXR1cm4gTlVMTF9SVFg7CistfQorLQorIAorIC8qIEVtaXQgYSBjb25kaXRpb25hbCBu ZWdhdGUgb3IgYml0d2lzZSBjb21wbGVtZW50IHVzaW5nIHRoZQorICAgIG5lZ2NjIG9yIG5vdGNj IG9wdGFicyBpZiBhdmFpbGFibGUuICBSZXR1cm4gTlVMTF9SVFggaWYgc3VjaCBvcGVyYXRpb25z CistLS0gZ2NjL29wdGFicy5oCisrKysgZ2NjL29wdGFicy5oCitAQCAtMjc5LDggKzI3OSw4IEBA IGV4dGVybiB2b2lkIGVtaXRfaW5kaXJlY3RfanVtcCAocnR4KTsKKyAjZW5kaWYKKyAKKyAvKiBF bWl0IGEgY29uZGl0aW9uYWwgbW92ZSBvcGVyYXRpb24uICAqLworLXJ0eCBlbWl0X2NvbmRpdGlv bmFsX21vdmUgKHJ0eCwgcnR4X2NvbXBhcmlzb24sIHJ0eCwgcnR4LCBtYWNoaW5lX21vZGUsIGlu dCk7CistcnR4IGVtaXRfY29uZGl0aW9uYWxfbW92ZSAocnR4LCBydHgsIHJ0eCwgcnR4LCBydHgs IG1hY2hpbmVfbW9kZSk7CisrcnR4IGVtaXRfY29uZGl0aW9uYWxfbW92ZSAocnR4LCBlbnVtIHJ0 eF9jb2RlLCBydHgsIHJ0eCwgbWFjaGluZV9tb2RlLAorKwkJCSAgIHJ0eCwgcnR4LCBtYWNoaW5l X21vZGUsIGludCk7CisgCisgLyogRW1pdCBhIGNvbmRpdGlvbmFsIG5lZ2F0ZSBvciBiaXR3aXNl IGNvbXBsZW1lbnQgb3BlcmF0aW9uLiAgKi8KKyBydHggZW1pdF9jb25kaXRpb25hbF9uZWdfb3Jf Y29tcGxlbWVudCAocnR4LCBydHhfY29kZSwgbWFjaGluZV9tb2RlLCBydHgsCistLS0gZ2NjL3J0 bC5oCisrKysgZ2NjL3J0bC5oCitAQCAtNDYwNCwxNiArNDYwNCw3IEBAIHdvcmRfcmVnaXN0ZXJf b3BlcmF0aW9uX3AgKGNvbnN0X3J0eCB4KQorICAgICAgIHJldHVybiB0cnVlOworICAgICB9Cisg fQorLQorLS8qIEhvbGRzIGFuIHJ0eCBjb21wYXJpc29uIHRvIHNpbXBsaWZ5IHBhc3NpbmcgbWFu eSBwYXJhbWV0ZXJzIHBlcnRhaW5pbmcgdG8gYQorLSAgIHNpbmdsZSBjb21wYXJpc29uLiAgKi8K Ky0KKy1zdHJ1Y3QgcnR4X2NvbXBhcmlzb24geworLSAgcnR4X2NvZGUgY29kZTsKKy0gIHJ0eCBv cDAsIG9wMTsKKy0gIG1hY2hpbmVfbW9kZSBtb2RlOworLX07CistCisrICAgIAorIC8qIGd0eXBl LWRlc2MuY2MuICAqLworIGV4dGVybiB2b2lkIGd0X2dnY19teCAocnR4ICYpOworIGV4dGVybiB2 b2lkIGd0X3BjaF9ueCAocnR4ICYpOwoKZGlmZiAtLWdpdCBhL2djYzEyLXByMTA0MDI1LnBhdGNo IGIvZ2NjMTItcHIxMDQwMjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMw MTAyMzYuLjAwMDAwMDAKLS0tIGEvZ2NjMTItcHIxMDQwMjUucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSw0MiArMCwwIEBACi0yMDIyLTAxLTE4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0 LmNvbT4KLQotCVBSIGMrKy8xMDQwMjUKLQkqIHBhcnNlci5jYyAoY3BfcGFyc2VyX2lkX2V4cHJl c3Npb24pOiBTYXZlIGFuZCByZXN0b3JlIGlucHV0X2xvY2F0aW9uCi0JYXJvdW5kIGNwX3BhcnNl cl9za2lwX2VudGlyZV90ZW1wbGF0ZV9wYXJhbWV0ZXJfbGlzdCBjYWxsIGZvcgotCS1XbWlzc2lu Zy10ZW1wbGF0ZS1rZXl3b3JkLgotCi0JKiBnKysuZGcvd2Fybi9wcjEwNDAyNS5DOiBOZXcgdGVz dC4KLQotLS0tIGdjYy9jcC9wYXJzZXIuY2MuamoJMjAyMi0wMS0xNyAxODowNTowNC43OTczMDc1 MDYgKzAxMDAKLSsrKyBnY2MvY3AvcGFyc2VyLmNjCTIwMjItMDEtMTcgMjA6Mjc6MzMuNjQyNzEx ODU5ICswMTAwCi1AQCAtNjI1NCw2ICs2MjU0LDcgQEAgY3BfcGFyc2VyX2lkX2V4cHJlc3Npb24g KGNwX3BhcnNlciAqcGFycwotIAkJCSAgICAgT1BUX1dtaXNzaW5nX3RlbXBsYXRlX2tleXdvcmQp KQotICAgICB7Ci0gICAgICAgc2F2ZWRfdG9rZW5fc2VudGluZWwgdG9rcyAocGFyc2VyLT5sZXhl ciwgU1RTX1JPTExCQUNLKTsKLSsgICAgICBpbG9jX3NlbnRpbmVsIGlscyAoVU5LTk9XTl9MT0NB VElPTik7Ci0gICAgICAgaWYgKGNwX3BhcnNlcl9za2lwX2VudGlyZV90ZW1wbGF0ZV9wYXJhbWV0 ZXJfbGlzdCAocGFyc2VyKQotIAkgIC8qIEFuIG9wZXJhdG9yIGFmdGVyIHRoZSA+IHN1Z2dlc3Rz IHRoYXQgdGhlID4gZW5kcyBhCi0gCSAgICAgdGVtcGxhdGUtaWQ7IGEgbmFtZSBvciBsaXRlcmFs IHN1Z2dlc3RzIHRoYXQgdGhlID4gaXMgYW4KLS0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJu L3ByMTA0MDI1LkMuamoJMjAyMi0wMS0xNyAyMDozMToxNy4zMjA1OTEyNDkgKzAxMDAKLSsrKyBn Y2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL3ByMTA0MDI1LkMJMjAyMi0wMS0xNyAyMDozMTowOS4w Njg3MDYzNzMgKzAxMDAKLUBAIC0wLDAgKzEsMjAgQEAKLSsvLyBQUiBjKysvMTA0MDI1Ci0rLy8g eyBkZy1kbyBjb21waWxlIH0KLSsvLyB7IGRnLW9wdGlvbnMgIi1XbWlzc2luZy10ZW1wbGF0ZS1r ZXl3b3JkIC1mY29tcGFyZS1kZWJ1ZyIgfQotKwotK3ZvaWQgYmFyIChpbnQpOwotKwotK3N0cnVj dCBTIHsgaW50IGk7IH07Ci0rCi0rdGVtcGxhdGUgPGNsYXNzIEM+Ci0rc3RydWN0IFQKLSt7Ci0r ICBpbnQgbTsKLSsgIEMgYzsKLSsgIHZvaWQgZm9vICgpCi0rICB7Ci0rICAgIGJhciAoYy5pIDwg bSk7Ci0rICB9Ci0rfTsKLSsKLSt0ZW1wbGF0ZSB2b2lkIFQ8Uz46OmZvbyAoKTsKCmRpZmYgLS1n aXQgYS9nY2MxMi1wcjEwNDEwMy5wYXRjaCBiL2djYzEyLXByMTA0MTAzLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGY0MjFkLi4wMDAwMDAwCi0tLSBhL2djYzEyLXByMTA0 MTAzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotMjAyMi0wMS0xOCAgSmFr dWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+Ci0KLQlQUiBtaWRkbGUtZW5kLzEwNDEwMwot CSogZ2ltcGxlLXNzYS13YXJuLWFjY2Vzcy5jYyAocGFzc193YWNjZXNzOjpjaGVja19jYWxsKTog RG9uJ3QgY2hlY2sKLQkuQVNBTl9NQVJLIGNhbGxzLgotCi0tLS0gZ2NjL2dpbXBsZS1zc2Etd2Fy bi1hY2Nlc3MuY2MuamoJMjAyMi0wMS0xNiAyMDo1NTo0Ni43ODM5MzIxMTAgKzAxMDAKLSsrKyBn Y2MvZ2ltcGxlLXNzYS13YXJuLWFjY2Vzcy5jYwkyMDIyLTAxLTE4IDIwOjU2OjEzLjY5Nzc4MDMy NSArMDEwMAotQEAgLTQyMzIsNiArNDIzMiwxMSBAQCBwYXNzX3dhY2Nlc3M6OmNoZWNrX2NhbGwg KGdjYWxsICpzdG10KQotICAgaWYgKGdpbXBsZV9jYWxsX2J1aWx0aW5fcCAoc3RtdCwgQlVJTFRf SU5fTk9STUFMKSkKLSAgICAgY2hlY2tfYnVpbHRpbiAoc3RtdCk7Ci0gCi0rICAvKiAuQVNBTl9N QVJLIGRvZXNuJ3QgYWNjZXNzIGFueSB2YXJzLCBvbmx5IG1vZGlmaWVzIHNoYWRvdyBtZW1vcnku ICAqLwotKyAgaWYgKGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKHN0bXQpCi0rICAgICAgJiYgZ2lt cGxlX2NhbGxfaW50ZXJuYWxfZm4gKHN0bXQpID09IElGTl9BU0FOX01BUkspCi0rICAgIHJldHVy bjsKLSsKLSAgIGlmICghbV9lYXJseV9jaGVja3NfcCkKLSAgICAgaWYgKHRyZWUgY2FsbGVlID0g Z2ltcGxlX2NhbGxfZm5kZWNsIChzdG10KSkKLSAgICAgICB7CgpkaWZmIC0tZ2l0IGEvZ2NjMTIt cHIxMDQxMDQucGF0Y2ggYi9nY2MxMi1wcjEwNDEwNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggZDgxYjNmMC4uMDAwMDAwMAotLS0gYS9nY2MxMi1wcjEwNDEwNC5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0yMDIyLTAxLTE4ICBKYWt1YiBKZWxpbmVr ICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBSIHRhcmdldC8xMDQxMDQKLQkqIGNvbmZpZy9pMzg2 L3NzZS5tZAotCSg8YXZ4NTEyPl88Y29tcGxleG9wbmFtZT5fPG1vZGU+PG1hc2tjX25hbWU+PHJv dW5kX25hbWU+LAotCWF2eDUxMmZwMTZfPGNvbXBsZXhvcG5hbWU+c2hfdjhoZjxtYXNrX3NjYWxh cmNfbmFtZT48cm91bmRfc2NhbGFyY3pfbmFtZT4sCi0JYXZ4NTEyZHFfbXVsPG1vZGU+MzxtYXNr X25hbWU+LCA8YXZ4Ml9hdng1MTI+X3Blcm12YXI8bW9kZT48bWFza19uYW1lPiwKLQlhdngyX3Bl cm08bW9kZT5fMTxtYXNrX25hbWU+LCBhdng1MTJmX3Blcm08bW9kZT5fMTxtYXNrX25hbWU+LAot CWF2eDUxMmRxX3JhbmdlcDxtb2RlPjxtYXNrX25hbWU+PHJvdW5kX3NhZW9ubHlfbmFtZT4sCi0J YXZ4NTEyZHFfcmFuZ2VzPG1vZGU+PG1hc2tfc2NhbGFyX25hbWU+PHJvdW5kX3NhZW9ubHlfc2Nh bGFyX25hbWU+LAotCTxhdng1MTI+X2dldG1hbnQ8bW9kZT48bWFza19uYW1lPjxyb3VuZF9zYWVv bmx5X25hbWU+LAotCWF2eDUxMmZfdmdldG1hbnQ8bW9kZT48bWFza19zY2FsYXJfbmFtZT48cm91 bmRfc2Flb25seV9zY2FsYXJfbmFtZT4pOgotCVVzZSB2eG9ycHNcdCV4MCwgJXgwLCAleDAgaW5z dGVhZCBvZiB2eG9ycHNcdHsleDAsICV4MCwgJXgwfS4KLQotCSogZ2NjLnRhcmdldC9pMzg2L3By MTA0MTA0LmM6IE5ldyB0ZXN0LgotCi0tLS0gZ2NjL2NvbmZpZy9pMzg2L3NzZS5tZC5qagkyMDIy LTAxLTE4IDExOjU4OjU5LjE1Njk4ODE0MiArMDEwMAotKysrIGdjYy9jb25maWcvaTM4Ni9zc2Uu bWQJMjAyMi0wMS0xOCAyMToyMDo0MC4wMjI0Nzc3NzggKzAxMDAKLUBAIC02NTM5LDcgKzY1Mzks NyBAQCAoZGVmaW5lX2luc24gIjxhdng1MTI+Xzxjb21wbGV4b3BuYW1lPl88Ci0gewotICAgaWYg KFRBUkdFVF9ERVNUX0ZBTFNFX0RFUF9GT1JfR0xDCi0gICAgICAgJiYgPG1hc2tjX2Rlc3RfZmFs c2VfZGVwX2Zvcl9nbGNfY29uZD4pCi0tICAgIG91dHB1dF9hc21faW5zbiAoInZ4b3Jwc1x0eyV4 MCwgJXgwLCAleDB9Iiwgb3BlcmFuZHMpOwotKyAgICBvdXRwdXRfYXNtX2luc24gKCJ2eG9ycHNc dCV4MCwgJXgwLCAleDAiLCBvcGVyYW5kcyk7Ci0gICByZXR1cm4gInY8Y29tcGxleG9wbmFtZT48 c3NlbW9kZXN1ZmZpeD5cdHs8cm91bmRfbWFza2Nfb3AzPiUyLCAlMSwgJTA8bWFza2Nfb3BlcmFu ZDM+fCUwPG1hc2tjX29wZXJhbmQzPiwgJTEsICUyPHJvdW5kX21hc2tjX29wMz59IjsKLSB9Ci0g ICBbKHNldF9hdHRyICJ0eXBlIiAic3NlbXVsIikKLUBAIC02NzUwLDcgKzY3NTAsNyBAQCAoZGVm aW5lX2luc24gImF2eDUxMmZwMTZfPGNvbXBsZXhvcG5hbWU+Ci0gewotICAgaWYgKFRBUkdFVF9E RVNUX0ZBTFNFX0RFUF9GT1JfR0xDCi0gICAgICAgJiYgPG1hc2tfc2NhbGFyY19kZXN0X2ZhbHNl X2RlcF9mb3JfZ2xjX2NvbmQ+KQotLSAgICBvdXRwdXRfYXNtX2luc24gKCJ2eG9ycHNcdHsleDAs ICV4MCwgJXgwfSIsIG9wZXJhbmRzKTsKLSsgICAgb3V0cHV0X2FzbV9pbnNuICgidnhvcnBzXHQl eDAsICV4MCwgJXgwIiwgb3BlcmFuZHMpOwotICAgcmV0dXJuICJ2PGNvbXBsZXhvcG5hbWU+c2hc dHs8cm91bmRfc2NhbGFyY19tYXNrX29wMz4lMiwgJTEsICUwPG1hc2tfc2NhbGFyY19vcGVyYW5k Mz58JTA8bWFza19zY2FsYXJjX29wZXJhbmQzPiwgJTEsICUyPHJvdW5kX3NjYWxhcmNfbWFza19v cDM+fSI7Ci0gfQotICAgWyhzZXRfYXR0ciAidHlwZSIgInNzZW11bCIpCi1AQCAtMTUyMjIsNyAr MTUyMjIsNyBAQCAoZGVmaW5lX2luc24gImF2eDUxMmRxX211bDxtb2RlPjM8bWFza19uCi0gICAg ICAgJiYgPG1hc2szX2Rlc3RfZmFsc2VfZGVwX2Zvcl9nbGNfY29uZD4KLSAgICAgICAmJiAhcmVn X21lbnRpb25lZF9wIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pCi0gICAgICAgJiYgIXJlZ19t ZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzJdKSkKLS0gICAgb3V0cHV0X2FzbV9p bnNuICgidnhvcnBzXHR7JXgwLCAleDAsICV4MH0iLCBvcGVyYW5kcyk7Ci0rICAgIG91dHB1dF9h c21faW5zbiAoInZ4b3Jwc1x0JXgwLCAleDAsICV4MCIsIG9wZXJhbmRzKTsKLSAgIHJldHVybiAi dnBtdWxscVx0eyUyLCAlMSwgJTA8bWFza19vcGVyYW5kMz58JTA8bWFza19vcGVyYW5kMz4sICUx LCAlMn0iOwotIH0KLSAgIFsoc2V0X2F0dHIgInR5cGUiICJzc2VpbXVsIikKLUBAIC0yNDY1OCw3 ICsyNDY1OCw3IEBAIChkZWZpbmVfaW5zbiAiPGF2eDJfYXZ4NTEyPl9wZXJtdmFyPG1vZGUKLSAg ICAgICAmJiA8bWFzazNfZGVzdF9mYWxzZV9kZXBfZm9yX2dsY19jb25kPgotICAgICAgICYmICFy ZWdfbWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSkKLSAgICAgICAmJiAhcmVn X21lbnRpb25lZF9wIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMl0pKQotLSAgICBvdXRwdXRfYXNt X2luc24gKCJ2eG9ycHNcdHsleDAsICV4MCwgJXgwfSIsIG9wZXJhbmRzKTsKLSsgICAgb3V0cHV0 X2FzbV9pbnNuICgidnhvcnBzXHQleDAsICV4MCwgJXgwIiwgb3BlcmFuZHMpOwotICAgcmV0dXJu ICJ2cGVybTxzc2Vtb2Rlc3VmZml4Plx0eyUxLCAlMiwgJTA8bWFza19vcGVyYW5kMz58JTA8bWFz a19vcGVyYW5kMz4sICUyLCAlMX0iOwotIH0KLSAgIFsoc2V0X2F0dHIgInR5cGUiICJzc2Vsb2ci KQotQEAgLTI0OTAwLDcgKzI0OTAwLDcgQEAgKGRlZmluZV9pbnNuICJhdngyX3Blcm08bW9kZT5f MTxtYXNrX25hbQotICAgaWYgKFRBUkdFVF9ERVNUX0ZBTFNFX0RFUF9GT1JfR0xDCi0gICAgICAg JiYgPG1hc2s2X2Rlc3RfZmFsc2VfZGVwX2Zvcl9nbGNfY29uZD4KLSAgICAgICAmJiAhcmVnX21l bnRpb25lZF9wIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pKQotLSAgICBvdXRwdXRfYXNtX2lu c24gKCJ2eG9ycHNcdHsleDAsICV4MCwgJXgwfSIsIG9wZXJhbmRzKTsKLSsgICAgb3V0cHV0X2Fz bV9pbnNuICgidnhvcnBzXHQleDAsICV4MCwgJXgwIiwgb3BlcmFuZHMpOwotICAgcmV0dXJuICJ2 cGVybTxzc2Vtb2Rlc3VmZml4Plx0eyUyLCAlMSwgJTA8bWFza19vcGVyYW5kNj58JTA8bWFza19v cGVyYW5kNj4sICUxLCAlMn0iOwotIH0KLSAgIFsoc2V0X2F0dHIgInR5cGUiICJzc2Vsb2ciKQot QEAgLTI0OTc1LDcgKzI0OTc1LDcgQEAgKGRlZmluZV9pbnNuICJhdng1MTJmX3Blcm08bW9kZT5f MTxtYXNrXwotICAgaWYgKFRBUkdFVF9ERVNUX0ZBTFNFX0RFUF9GT1JfR0xDCi0gICAgICAgJiYg PG1hc2sxMF9kZXN0X2ZhbHNlX2RlcF9mb3JfZ2xjX2NvbmQ+Ci0gICAgICAgJiYgIXJlZ19tZW50 aW9uZWRfcCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKSkKLS0gICAgb3V0cHV0X2FzbV9pbnNu ICgidnhvcnBzXHR7JXgwLCAleDAsICV4MH0iLCBvcGVyYW5kcyk7Ci0rICAgIG91dHB1dF9hc21f aW5zbiAoInZ4b3Jwc1x0JXgwLCAleDAsICV4MCIsIG9wZXJhbmRzKTsKLSAgIHJldHVybiAidnBl cm08c3NlbW9kZXN1ZmZpeD5cdHslMiwgJTEsICUwPG1hc2tfb3BlcmFuZDEwPnwlMDxtYXNrX29w ZXJhbmQxMD4sICUxLCAlMn0iOwotIH0KLSAgIFsoc2V0X2F0dHIgInR5cGUiICJzc2Vsb2ciKQot QEAgLTI2ODgwLDcgKzI2ODgwLDcgQEAgKGRlZmluZV9pbnNuICJhdng1MTJkcV9yYW5nZXA8bW9k ZT48bWFzawotICAgICAgICYmIDxtYXNrNF9kZXN0X2ZhbHNlX2RlcF9mb3JfZ2xjX2NvbmQ+Ci0g ICAgICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKQotICAg ICAgICYmICFyZWdfbWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1syXSkpCi0tICAg IG91dHB1dF9hc21faW5zbiAoInZ4b3Jwc1x0eyV4MCwgJXgwLCAleDB9Iiwgb3BlcmFuZHMpOwot KyAgICBvdXRwdXRfYXNtX2luc24gKCJ2eG9ycHNcdCV4MCwgJXgwLCAleDAiLCBvcGVyYW5kcyk7 Ci0gICByZXR1cm4gInZyYW5nZTxzc2Vtb2Rlc3VmZml4Plx0eyUzLCA8cm91bmRfc2Flb25seV9t YXNrX29wND4lMiwgJTEsICUwPG1hc2tfb3BlcmFuZDQ+fCUwPG1hc2tfb3BlcmFuZDQ+LCAlMSwg JTI8cm91bmRfc2Flb25seV9tYXNrX29wND4sICUzfSI7Ci0gfQotICAgWyhzZXRfYXR0ciAidHlw ZSIgInNzZSIpCi1AQCAtMjY5MDMsNyArMjY5MDMsNyBAQCAoZGVmaW5lX2luc24gImF2eDUxMmRx X3Jhbmdlczxtb2RlPjxtYXNrCi0gICAgICAgJiYgPG1hc2tfc2NhbGFyNF9kZXN0X2ZhbHNlX2Rl cF9mb3JfZ2xjX2NvbmQ+Ci0gICAgICAgJiYgIXJlZ19tZW50aW9uZWRfcCAob3BlcmFuZHNbMF0s IG9wZXJhbmRzWzFdKQotICAgICAgICYmICFyZWdfbWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLCBv cGVyYW5kc1syXSkpCi0tICAgIG91dHB1dF9hc21faW5zbiAoInZ4b3Jwc1x0eyV4MCwgJXgwLCAl eDB9Iiwgb3BlcmFuZHMpOwotKyAgICBvdXRwdXRfYXNtX2luc24gKCJ2eG9ycHNcdCV4MCwgJXgw LCAleDAiLCBvcGVyYW5kcyk7Ci0gICByZXR1cm4gInZyYW5nZTxzc2VzY2FsYXJtb2Rlc3VmZml4 Plx0eyUzLCA8cm91bmRfc2Flb25seV9zY2FsYXJfbWFza19vcDQ+JTIsICUxLCAlMDxtYXNrX3Nj YWxhcl9vcGVyYW5kND58JTA8bWFza19zY2FsYXJfb3BlcmFuZDQ+LCAlMSwgJTxpcHRyPjI8cm91 bmRfc2Flb25seV9zY2FsYXJfbWFza19vcDQ+LCAlM30iOwotIH0KLSAgIFsoc2V0X2F0dHIgInR5 cGUiICJzc2UiKQotQEAgLTI2OTQ5LDcgKzI2OTQ5LDcgQEAgKGRlZmluZV9pbnNuICI8YXZ4NTEy Pl9nZXRtYW50PG1vZGU+PG1hcwotICAgaWYgKFRBUkdFVF9ERVNUX0ZBTFNFX0RFUF9GT1JfR0xD Ci0gICAgICAgJiYgPG1hc2szX2Rlc3RfZmFsc2VfZGVwX2Zvcl9nbGNfY29uZD4KLSAgICAgICAm JiBNRU1fUCAob3BlcmFuZHNbMV0pKQotLSAgICBvdXRwdXRfYXNtX2luc24gKCJ2eG9ycHNcdHsl eDAsICV4MCwgJXgwfSIsIG9wZXJhbmRzKTsKLSsgICAgb3V0cHV0X2FzbV9pbnNuICgidnhvcnBz XHQleDAsICV4MCwgJXgwIiwgb3BlcmFuZHMpOwotICAgcmV0dXJuICJ2Z2V0bWFudDxzc2Vtb2Rl c3VmZml4Plx0eyUyLCA8cm91bmRfc2Flb25seV9tYXNrX29wMz4lMSwgJTA8bWFza19vcGVyYW5k Mz58JTA8bWFza19vcGVyYW5kMz4sICUxPHJvdW5kX3NhZW9ubHlfbWFza19vcDM+LCAlMn0iOwot IH0KLSAgIFsoc2V0X2F0dHIgInByZWZpeCIgImV2ZXgiKQotQEAgLTI2OTcxLDcgKzI2OTcxLDcg QEAgKGRlZmluZV9pbnNuICJhdng1MTJmX3ZnZXRtYW50PG1vZGU+PG1hcwotICAgICAgICYmIDxt YXNrX3NjYWxhcjRfZGVzdF9mYWxzZV9kZXBfZm9yX2dsY19jb25kPgotICAgICAgICYmICFyZWdf bWVudGlvbmVkX3AgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSkKLSAgICAgICAmJiAhcmVnX21l bnRpb25lZF9wIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMl0pKQotLSAgICBvdXRwdXRfYXNtX2lu c24gKCJ2eG9ycHNcdHsleDAsICV4MCwgJXgwfSIsIG9wZXJhbmRzKTsKLSsgICAgb3V0cHV0X2Fz bV9pbnNuICgidnhvcnBzXHQleDAsICV4MCwgJXgwIiwgb3BlcmFuZHMpOwotICAgcmV0dXJuICJ2 Z2V0bWFudDxzc2VzY2FsYXJtb2Rlc3VmZml4Plx0eyUzLCA8cm91bmRfc2Flb25seV9zY2FsYXJf bWFza19vcDQ+JTIsICUxLCAlMDxtYXNrX3NjYWxhcl9vcGVyYW5kND58JTA8bWFza19zY2FsYXJf b3BlcmFuZDQ+LCAlMSwgJTxpcHRyPjI8cm91bmRfc2Flb25seV9zY2FsYXJfbWFza19vcDQ+LCAl M30iOwotIH0KLSAgICBbKHNldF9hdHRyICJwcmVmaXgiICJldmV4IikKLS0tLSBnY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvaTM4Ni9wcjEwNDEwNC5jLmpqCTIwMjItMDEtMTggMjE6Mzg6MTcuMDA3 OTA2NjczICswMTAwCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHIxMDQxMDQu YwkyMDIyLTAxLTE4IDIxOjM2OjEwLjQ3NTYyMzE0OCArMDEwMAotQEAgLTAsMCArMSwxMCBAQAot Ky8qIFBSIHRhcmdldC8xMDQxMDQgKi8KLSsvKiB7IGRnLWRvIGFzc2VtYmxlIHsgdGFyZ2V0IHZl Y3Rfc2ltZF9jbG9uZXMgfSB9ICovCi0rLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQg bWFzbV9pbnRlbCB9ICovCi0rLyogeyBkZy1vcHRpb25zICItbWFyY2g9YWxkZXJsYWtlIC1tYXNt PWludGVsIC1PMSAtZmFsbG93LXN0b3JlLWRhdGEtcmFjZXMgLWZ1bnJvbGwtYWxsLWxvb3BzIiB9 ICovCi0rCi0rX19hdHRyaWJ1dGVfXyAoKHNpbWQpKSBzaG9ydCBpbnQKLStmb28gKHZvaWQpCi0r ewotKyAgcmV0dXJuIDA7Ci0rfQoKZGlmZiAtLWdpdCBhL2djYzEyLXByMTA0MTk0LnBhdGNoIGIv Z2NjMTItcHIxMDQxOTQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZjA3NDdjNwotLS0gL2Rldi9udWxsCisrKyBiL2djYzEyLXByMTA0MTk0LnBhdGNoCkBAIC0wLDAg KzEsOTIgQEAKKzIwMjItMDEtMjUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgor CisJUFIgZGVidWcvMTA0MTk0CisJKiBkd2FyZjJvdXQuY2MgKGxvbmdfZG91YmxlX2FzX2Zsb2F0 MTI4KTogTmV3IGZ1bmN0aW9uLgorCShtb2RpZmllZF90eXBlX2RpZSk6IEZvciBwb3dlcnBjNjRs ZSBJRUVFIDc1NCBxdWFkIGxvbmcgZG91YmxlCisJYW5kIGNvbXBsZXggbG9uZyBkb3VibGUgZW1p dCB0aG9zZSBhcyBEV19UQUdfdHlwZWRlZiB0bworCV9GbG9hdDEyOCBvciBjb21wbGV4IF9GbG9h dDEyOCBiYXNlIHR5cGUuCisKKy0tLSBnY2MvZHdhcmYyb3V0LmNjLmpqCTIwMjItMDEtMjUgMDU6 NDc6NTMuOTg3NDU0OTM0ICswMTAwCisrKysgZ2NjL2R3YXJmMm91dC5jYwkyMDIyLTAxLTI1IDEx OjU0OjI1LjEwMDUyMjA4OSArMDEwMAorQEAgLTEzNTY4LDYgKzEzNTY4LDQ3IEBAIHF1YWxpZmll ZF9kaWVfcCAoZHdfZGllX3JlZiBkaWUsIGludCAqbWEKKyAgIHJldHVybiB0eXBlOworIH0KKyAK KysvKiBJZiBUWVBFIGlzIGxvbmcgZG91YmxlIG9yIGNvbXBsZXggbG9uZyBkb3VibGUgdGhhdAor KyAgIHNob3VsZCBiZSBlbWl0dGVkIGFzIGFydGlmaWNpYWwgdHlwZWRlZiB0byBfRmxvYXQxMjgg b3IKKysgICBjb21wbGV4IF9GbG9hdDEyOCwgcmV0dXJuIHRoZSB0eXBlIGl0IHNob3VsZCBiZSBl bWl0dGVkIGFzLgorKyAgIFRoaXMgaXMgZG9uZSBpbiBjYXNlIHRoZSB0YXJnZXQgYWxyZWFkeSBz dXBwb3J0cyAxNi1ieXRlCisrICAgY29tcG9zaXRlIGZsb2F0aW5nIHBvaW50IHR5cGUgKGlibV9l eHRlbmRlZF9mb3JtYXQpLiAgKi8KKysKKytzdGF0aWMgdHJlZQorK2xvbmdfZG91YmxlX2FzX2Zs b2F0MTI4ICh0cmVlIHR5cGUpCisreworKyAgaWYgKHR5cGUgIT0gbG9uZ19kb3VibGVfdHlwZV9u b2RlCisrICAgICAgJiYgdHlwZSAhPSBjb21wbGV4X2xvbmdfZG91YmxlX3R5cGVfbm9kZSkKKysg ICAgcmV0dXJuIE5VTExfVFJFRTsKKysKKysgIG1hY2hpbmVfbW9kZSBtb2RlLCBmbW9kZTsKKysg IGlmIChUUkVFX0NPREUgKHR5cGUpID09IENPTVBMRVhfVFlQRSkKKysgICAgbW9kZSA9IFRZUEVf TU9ERSAoVFJFRV9UWVBFICh0eXBlKSk7CisrICBlbHNlCisrICAgIG1vZGUgPSBUWVBFX01PREUg KHR5cGUpOworKyAgaWYgKGtub3duX2VxIChHRVRfTU9ERV9TSVpFIChtb2RlKSwgMTYpICYmICFN T0RFX0NPTVBPU0lURV9QIChtb2RlKSkKKysgICAgRk9SX0VBQ0hfTU9ERV9JTl9DTEFTUyAoZm1v ZGUsIE1PREVfRkxPQVQpCisrICAgICAgaWYgKGtub3duX2VxIChHRVRfTU9ERV9TSVpFIChmbW9k ZSksIDE2KQorKyAgICAgICAgICAmJiBNT0RFX0NPTVBPU0lURV9QIChmbW9kZSkpCisrCXsKKysJ ICBpZiAodHlwZSA9PSBsb25nX2RvdWJsZV90eXBlX25vZGUpCisrCSAgICB7CisrCSAgICAgIGlm IChmbG9hdDEyOF90eXBlX25vZGUKKysJCSAgJiYgKFRZUEVfTU9ERSAoZmxvYXQxMjhfdHlwZV9u b2RlKQorKwkJICAgICAgPT0gVFlQRV9NT0RFICh0eXBlKSkpCisrCQlyZXR1cm4gZmxvYXQxMjhf dHlwZV9ub2RlOworKwkgICAgICByZXR1cm4gTlVMTF9UUkVFOworKwkgICAgfQorKwkgIGZvciAo aW50IGkgPSAwOyBpIDwgTlVNX0ZMT0FUTl9OWF9UWVBFUzsgaSsrKQorKwkgICAgaWYgKENPTVBM RVhfRkxPQVROX05YX1RZUEVfTk9ERSAoaSkgIT0gTlVMTF9UUkVFCisrCQkmJiAoVFlQRV9NT0RF IChDT01QTEVYX0ZMT0FUTl9OWF9UWVBFX05PREUgKGkpKQorKwkJICAgID09IFRZUEVfTU9ERSAo dHlwZSkpKQorKwkgICAgICByZXR1cm4gQ09NUExFWF9GTE9BVE5fTlhfVFlQRV9OT0RFIChpKTsK KysJfQorKworKyAgcmV0dXJuIE5VTExfVFJFRTsKKyt9CisrCisgLyogR2l2ZW4gYSBwb2ludGVy IHRvIGFuIGFyYml0cmFyeSAuLi5fVFlQRSB0cmVlIG5vZGUsIHJldHVybiBhIGRlYnVnZ2luZwor ICAgIGVudHJ5IHRoYXQgY2hhaW5zIHRoZSBtb2RpZmllcnMgc3BlY2lmaWVkIGJ5IENWX1FVQUxT IGluIGZyb250IG9mIHRoZQorICAgIGdpdmVuIHR5cGUuICBSRVZFUlNFIGlzIHRydWUgaWYgdGhl IHR5cGUgaXMgdG8gYmUgaW50ZXJwcmV0ZWQgaW4gdGhlCitAQCAtMTM4NDgsNyArMTM4ODksMzIg QEAgbW9kaWZpZWRfdHlwZV9kaWUgKHRyZWUgdHlwZSwgaW50IGN2X3F1YQorICAgICB9CisgICBl bHNlIGlmIChpc19iYXNlX3R5cGUgKHR5cGUpKQorICAgICB7CistICAgICAgbW9kX3R5cGVfZGll ID0gYmFzZV90eXBlX2RpZSAodHlwZSwgcmV2ZXJzZSk7CisrICAgICAgLyogSWYgYSB0YXJnZXQg c3VwcG9ydHMgbG9uZyBkb3VibGUgYXMgZGlmZmVyZW50IGZsb2F0aW5nIHBvaW50CisrCSBtb2Rl cyB3aXRoIHRoZSBzYW1lIDE2LWJ5dGUgc2l6ZSwgdXNlIG5vcm1hbCBEV19UQUdfYmFzZV90eXBl CisrCSBvbmx5IGZvciB0aGUgY29tcG9zaXRlIChpYm1fZXh0ZW5kZWRfcmVhbF9mb3JtYXQpIHR5 cGUgYW5kCisrCSBmb3IgdGhlIG90aGVyIGZvciB0aGUgdGltZSBiZWluZyBlbWl0IGluc3RlYWQg YSAiX0Zsb2F0MTI4IgorKwkgb3IgImNvbXBsZXggX0Zsb2F0MTI4IiBEV19UQUdfYmFzZV90eXBl IGFuZCBhICJsb25nIGRvdWJsZSIKKysJIG9yICJjb21wbGV4IGxvbmcgZG91YmxlIiB0eXBlZGVm IHRvIGl0LiAgKi8KKysgICAgICBpZiAodHJlZSBvdGhlcl90eXBlID0gbG9uZ19kb3VibGVfYXNf ZmxvYXQxMjggKHR5cGUpKQorKwl7CisrCSAgZHdfZGllX3JlZiBvdGhlcl9kaWU7CisrCSAgaWYg KFRZUEVfTkFNRSAob3RoZXJfdHlwZSkpCisrCSAgICBvdGhlcl9kaWUKKysJICAgICAgPSBtb2Rp ZmllZF90eXBlX2RpZSAob3RoZXJfdHlwZSwgVFlQRV9VTlFVQUxJRklFRCwgcmV2ZXJzZSwKKysJ CQkJICAgY29udGV4dF9kaWUpOworKwkgIGVsc2UKKysJICAgIHsKKysJICAgICAgb3RoZXJfZGll ID0gYmFzZV90eXBlX2RpZSAodHlwZSwgcmV2ZXJzZSk7CisrCSAgICAgIGFkZF9jaGlsZF9kaWUg KGNvbXBfdW5pdF9kaWUgKCksIG90aGVyX2RpZSk7CisrCSAgICAgIGFkZF9uYW1lX2F0dHJpYnV0 ZSAob3RoZXJfZGllLAorKwkJCQkgIFRSRUVfQ09ERSAodHlwZSkgPT0gQ09NUExFWF9UWVBFCisr CQkJCSAgPyAiY29tcGxleCBfRmxvYXQxMjgiIDogIl9GbG9hdDEyOCIpOworKwkgICAgfQorKwkg IG1vZF90eXBlX2RpZSA9IG5ld19kaWVfcmF3IChEV19UQUdfdHlwZWRlZik7CisrCSAgYWRkX0FU X2RpZV9yZWYgKG1vZF90eXBlX2RpZSwgRFdfQVRfdHlwZSwgb3RoZXJfZGllKTsKKysJfQorKyAg ICAgIGVsc2UKKysJbW9kX3R5cGVfZGllID0gYmFzZV90eXBlX2RpZSAodHlwZSwgcmV2ZXJzZSk7 CisgCisgICAgICAgLyogVGhlIERJRSB3aXRoIERXX0FUX2VuZGlhbml0eSBpcyBwbGFjZWQgcmln aHQgYWZ0ZXIgdGhlIG5ha2VkIERJRS4gICovCisgICAgICAgaWYgKHJldmVyc2VfYmFzZV90eXBl KQoKZGlmZiAtLWdpdCBhL2djYzEyLXByOTQxOTMucGF0Y2ggYi9nY2MxMi1wcjk0MTkzLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2NjlhODEKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MxMi1wcjk0MTkzLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKKzIwMjItMDEtMjUg IEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJUFIgdGFyZ2V0Lzk0MTkzCisJ KiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoZmVjbGVhcmV4Y2VwdHNpLCBmZXJhaXNlZXhjZXB0 c2kpOgorCVVzZSBnZW5lcmFsX29wZXJhbmQgaW5zdGVhZCBvZiBjb25zdF9pbnRfb3BlcmFuZCwg ZHJvcCBjb25zdHJhaW50CisJYW5kIEZBSUwgaWYgb3BlcmFuZHNbMV0gaXMgbm90IENPTlNUX0lO VF9QLgorCistLS0gZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kLmpqCTIwMjItMDEtMjUgMDU6 NDg6MDEuNDk3MzQwMzAzICswMTAwCisrKysgZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kCTIw MjItMDEtMjUgMTM6NDg6MTMuNzUyNzA5NDgyICswMTAwCitAQCAtNjk1OSwxMiArNjk1OSwxMiBA QCAoZGVmaW5lX2V4cGFuZCAiZmVnZXRyb3VuZHNpIgorIDs7IEJlY2F1c2Ugb2YgdGhlc2UgcmVz dHJpY3Rpb25zLCB0aGlzIG9ubHkgZXhwYW5kcyBvbiB0aGUgZGVzaXJlZAorIDs7IGNhc2VzIGFu ZCBmYWxsYmFjayB0byBhIGNhbGwgdG8gbGliYyBvbiBhbnkgb3RoZXIgY2FzZS4KKyAoZGVmaW5l X2V4cGFuZCAiZmVjbGVhcmV4Y2VwdHNpIgorLSAgWyh1c2UgKG1hdGNoX29wZXJhbmQ6U0kgMSAi Y29uc3RfaW50X29wZXJhbmQiICJuIikpCisrICBbKHVzZSAobWF0Y2hfb3BlcmFuZDpTSSAxICJn ZW5lcmFsX29wZXJhbmQiKSkKKyAgICAoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdf b3BlcmFuZCIpCisgCShjb25zdF9pbnQgMCkpXQorICAgIlRBUkdFVF9IQVJEX0ZMT0FUIgorIHsK Ky0gIGlmICghT1BUSU9OX0dMSUJDKQorKyAgaWYgKCFPUFRJT05fR0xJQkMgfHwgIUNPTlNUX0lO VF9QIChvcGVyYW5kc1sxXSkpCisgICAgIEZBSUw7CisgCisgICB1bnNpZ25lZCBpbnQgZmUgPSBJ TlRWQUwgKG9wZXJhbmRzWzFdKTsKK0BAIC02OTk5LDEyICs2OTk5LDEyIEBAIChkZWZpbmVfZXhw YW5kICJmZWNsZWFyZXhjZXB0c2kiCisgOzsgQmVjYXVzZSBvZiB0aGVzZSByZXN0cmljdGlvbnMs IHRoaXMgb25seSBleHBhbmRzIG9uIHRoZSBkZXNpcmVkCisgOzsgY2FzZXMgYW5kIGZhbGxiYWNr IHRvIGEgY2FsbCB0byBsaWJjIG9uIGFueSBvdGhlciBjYXNlLgorIChkZWZpbmVfZXhwYW5kICJm ZXJhaXNlZXhjZXB0c2kiCistICBbKHVzZSAobWF0Y2hfb3BlcmFuZDpTSSAxICJjb25zdF9pbnRf b3BlcmFuZCIgIm4iKSkKKysgIFsodXNlIChtYXRjaF9vcGVyYW5kOlNJIDEgImdlbmVyYWxfb3Bl cmFuZCIpKQorICAgIChzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIikK KyAJKGNvbnN0X2ludCAwKSldCisgICAiVEFSR0VUX0hBUkRfRkxPQVQiCisgeworLSAgaWYgKCFP UFRJT05fR0xJQkMpCisrICBpZiAoIU9QVElPTl9HTElCQyB8fCAhQ09OU1RfSU5UX1AgKG9wZXJh bmRzWzFdKSkKKyAgICAgRkFJTDsKKyAKKyAgIHVuc2lnbmVkIGludCBmZSA9IElOVFZBTCAob3Bl cmFuZHNbMV0pOwoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IDQzZDI5NTcu LmZjZDUzM2EgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSw0ICsxLDQg QEAKLVNIQTUxMiAoZ2NjLTEyLjAuMS0yMDIyMDExOC50YXIueHopID0gNWZhYjIzOWU5MTVlNzFh ODk4NmExMjJlM2Y4OTdmMjIzNmYyMWYwZjE4M2RhMzNjYWQyYWNlOGYzNDgyM2NkOGYzMmM3YzBk ZmNlZmZiZmVhZTE3Y2Q5OWI2NTZmMjQyZDMwZGRlYjk0ZWFhZmUzZWRmODU4ZWE4OGVjNTkwMTYK K1NIQTUxMiAoZ2NjLTEyLjAuMS0yMDIyMDEyNS50YXIueHopID0gMDljNGI3ZDdmZTNlOGEyYzBm NDE4MWRhNzE3ZTQ3NmMwODY4YjJiYjFjODZjZGQyMjQ4MmVlNDIzNWFlYmI5ZWIwYzg5YjVmODdi OWEwZTY4NTJlMGNjMjg3NmI2NTJjNjA0NTc5OTZhODZkYzZlOWI5YjAyY2EyZmY4NzYxM2YKIFNI QTUxMiAoaXNsLTAuMTgudGFyLmJ6MikgPSA4NWQwYjQwZjRkYmYxNGNiOTlkMTdhYTA3MDQ4Y2Rj YWIyZGMzZWI1MjdkMmZiYjFlODRjNDFiMmRlNWYzNTEwMjUzNzBlNTc0NDhiNjNiMmI4YThjZjhh MDg0M2EwODljMzI2M2Y5YmFlZTE1NDJkNWMyZTFjYjM3ZWQzOWQ5NAogU0hBNTEyIChuZXdsaWIt Y3lnd2luLTUwZTJhNjNiMDRiZGQwMTg0ODQ2MDVmYmI5NTRmZDFiZDUxNDdmYTAudGFyLnh6KSA9 IDAwMmE0OGE3YjY4OWE4MWFiYmYxNjE2MWJjYWVjMDAxYTg0MmU2N2RmYmUzNzJlOWUxMDkwOTI3 MDNiZmM2NjY2NzVmMTYxOThmNjBjYTQyOTM3MGU4ODUwZDU2NDU0N2RjNTA1ZGY4MWJjM2FhY2E0 Y2U2ZGVmYmMwMTRhZDZjCiBTSEE1MTIgKG52cHR4LXRvb2xzLTVmNmYzNDNhMzAyZDYyMGIwODY4 ZWRhYjM3NmMwMGIxNTc0MWUzOWUudGFyLnh6KSA9IGY2ZDEwZGI5NGZhMTU3MGFlMGY5NGRmMDcz ZmEzYzczYzhlNWVlMTZkNTkwNzBiNTNkOTRmN2RiMGRlOGEwMzFiYzQ0ZDdmM2YxODUyNTMzZGEw NGI2MjVjZTc1OGUwMjIyNjM4NTVlZDQzY2ZjNjg2N2UwNzA4ZDAwMWU1M2M3Cg==