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: 4.8.0-0.4 Date: Mon, 29 Jun 2026 12:25:39 GMT Message-ID: <178273593920.1.6533858260420957203.rpms-gcc-95108be4edf7@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 95108be4edf7b95bf6f5f737f388e59217f72bff QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogOTUxMDhiZTRlZGY3Yjk1YmY2ZjVmNzM3ZjM4OGU1OTIx N2Y3MmJmZgpBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPgpEYXRlICAg OiAyMDEzLTAxLTIxVDE4OjA0OjQ3KzAxOjAwClN0YXRzICA6ICsxMzQ0Ly0yNTAgaW4gNyBmaWxl KHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2NjL2MvOTUx MDhiZTRlZGY3Yjk1YmY2ZjVmNzM3ZjM4OGU1OTIxN2Y3MmJmZj9icmFuY2g9cmhlbC1mNDEtYmFz ZQoKTG9nOgo0LjguMC0wLjQKCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25v cmUKaW5kZXggNTk5YWIwNi4uMmJkZmY3NSAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8u Z2l0aWdub3JlCkBAIC01MCwzICs1MCw2IEBACiAvY2xvb2ctMC4xNy4wLnRhci5negogL2lzbC0w LjEwLnRhci5iejIKIC9nY2MtNC44LjAtMjAxMzAxMDYudGFyLmJ6MgorL2djYy00LjguMC0yMDEz MDEyMS50YXIuYnoyCisvY2xvb2ctMC4xOC4wLnRhci5negorL2lzbC0wLjExLjEudGFyLmJ6MgoK ZGlmZiAtLWdpdCBhL2djYy5zcGVjIGIvZ2NjLnNwZWMKaW5kZXggNTA2ZWVlMy4uYjAxM2Y0ZCAx MDA2NDQKLS0tIGEvZ2NjLnNwZWMKKysrIGIvZ2NjLnNwZWMKQEAgLTEsOSArMSw5IEBACi0lZ2xv YmFsIERBVEUgMjAxMzAxMDYKLSVnbG9iYWwgU1ZOUkVWIDE5NDkzOAorJWdsb2JhbCBEQVRFIDIw MTMwMTIxCislZ2xvYmFsIFNWTlJFViAxOTUzMzcKICVnbG9iYWwgZ2NjX3ZlcnNpb24gNC44LjAK ICMgTm90ZSwgZ2NjX3JlbGVhc2UgbXVzdCBiZSBpbnRlZ2VyLCBpZiB5b3Ugd2FudCB0byBhZGQg c3VmZml4ZXMgdG8KICMgJXtyZWxlYXNlfSwgYXBwZW5kIHRoZW0gYWZ0ZXIgJXtnY2NfcmVsZWFz ZX0gb24gUmVsZWFzZTogbGluZS4KLSVnbG9iYWwgZ2NjX3JlbGVhc2UgMC4zCislZ2xvYmFsIGdj Y19yZWxlYXNlIDAuNAogJWdsb2JhbCBfdW5wYWNrYWdlZF9maWxlc190ZXJtaW5hdGVfYnVpbGQg MAogJWdsb2JhbCBtdWx0aWxpYl82NF9hcmNocyBzcGFyYzY0IHBwYzY0IHMzOTB4IHg4Nl82NAog JWlmYXJjaCAle2l4ODZ9IHg4Nl82NCBpYTY0IHBwYyBwcGM2NCBhbHBoYQpAQCAtODMsOSArODMs OSBAQCBHcm91cDogRGV2ZWxvcG1lbnQvTGFuZ3VhZ2VzCiAjIHN2biBleHBvcnQgc3ZuOi8vZ2Nj LmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9yZWRoYXQvZ2NjLTRfNy1icmFuY2hAJXtTVk5SRVZ9 IGdjYy0le3ZlcnNpb259LSV7REFURX0KICMgdGFyIGNmIC0gZ2NjLSV7dmVyc2lvbn0tJXtEQVRF fSB8IGJ6aXAyIC05ID4gZ2NjLSV7dmVyc2lvbn0tJXtEQVRFfS50YXIuYnoyCiBTb3VyY2UwOiBn Y2MtJXt2ZXJzaW9ufS0le0RBVEV9LnRhci5iejIKLSVnbG9iYWwgaXNsX3ZlcnNpb24gMC4xMAor JWdsb2JhbCBpc2xfdmVyc2lvbiAwLjExLjEKIFNvdXJjZTE6IGZ0cDovL2djYy5nbnUub3JnL3B1 Yi9nY2MvaW5mcmFzdHJ1Y3R1cmUvaXNsLSV7aXNsX3ZlcnNpb259LnRhci5iejIKLSVnbG9iYWwg Y2xvb2dfdmVyc2lvbiAwLjE3LjAKKyVnbG9iYWwgY2xvb2dfdmVyc2lvbiAwLjE4LjAKIFNvdXJj ZTI6IGZ0cDovL2djYy5nbnUub3JnL3B1Yi9nY2MvaW5mcmFzdHJ1Y3R1cmUvY2xvb2ctJXtjbG9v Z192ZXJzaW9ufS50YXIuZ3oKICVnbG9iYWwgZmFzdGphcl92ZXIgMC45NwogU291cmNlNDogaHR0 cDovL2Rvd25sb2FkLnNhdmFubmFoLm5vbmdudS5vcmcvcmVsZWFzZXMvZmFzdGphci9mYXN0amFy LSV7ZmFzdGphcl92ZXJ9LnRhci5negpAQCAtMTk2LDEwICsxOTYsOSBAQCBQYXRjaDk6IGdjYzQ4 LWNsb29nLWRsMi5wYXRjaAogUGF0Y2gxMDogZ2NjNDgtcHIzODc1Ny5wYXRjaAogUGF0Y2gxMTog Z2NjNDgtbGlic3RkYysrLWRvY3MucGF0Y2gKIFBhdGNoMTI6IGdjYzQ4LW5vLWFkZC1uZWVkZWQu cGF0Y2gKLVBhdGNoMTM6IGdjYzQ4LWFzYW4tcHBjLnBhdGNoCi1QYXRjaDE0OiBnY2M0OC1wcjU1 MzQxLnBhdGNoCi1QYXRjaDE1OiBnY2M0OC1wcjU1NjA4LnBhdGNoCi1QYXRjaDE2OiBnY2M0OC1w cjU1ODQ0LnBhdGNoCitQYXRjaDEzOiBnY2M0OC1wcjU1NjA4LnBhdGNoCitQYXRjaDE0OiBnY2M0 OC1wcjU1NzQyLnBhdGNoCitQYXRjaDE1OiBnY2M0OC1wcjU2MDIyLnBhdGNoCiAKIFBhdGNoMTAw MDogZmFzdGphci0wLjk3LXNlZ2ZhdWx0LnBhdGNoCiBQYXRjaDEwMDE6IGZhc3RqYXItMC45Ny1s ZW4xLnBhdGNoCkBAIC03NTEsMTAgKzc1MCw5IEBAIHBhY2thZ2Ugb3Igd2hlbiBkZWJ1Z2dpbmcg dGhpcyBwYWNrYWdlLgogJXBhdGNoMTEgLXAwIC1iIC5saWJzdGRjKystZG9jc34KICVlbmRpZgog JXBhdGNoMTIgLXAwIC1iIC5uby1hZGQtbmVlZGVkfgotJXBhdGNoMTMgLXAwIC1iIC5hc2FuLXBw Y34KLSVwYXRjaDE0IC1wMCAtYiAucHI1NTM0MX4KLSVwYXRjaDE1IC1wMCAtYiAucHI1NTYwOH4K LSVwYXRjaDE2IC1wMCAtYiAucHI1NTg0NH4KKyVwYXRjaDEzIC1wMCAtYiAucHI1NTYwOH4KKyVw YXRjaDE0IC1wMCAtRSAtYiAucHI1NTc0Mn4KKyVwYXRjaDE1IC1wMCAtYiAucHI1NjAyMn4KIAog JWlmIDAlez9fZW5hYmxlX2RlYnVnX3BhY2thZ2VzfQogY2F0ID4gc3BsaXQtZGVidWdpbmZvLnNo IDw8XEVPRgpAQCAtMjk3NSw1ICsyOTczLDQ0IEBAIGZpCiAle19wcmVmaXh9L2xpYmV4ZWMvZ2Nj LyV7Z2NjX3RhcmdldF9wbGF0Zm9ybX0vJXtnY2NfdmVyc2lvbn0vcGx1Z2luCiAKICVjaGFuZ2Vs b2cKKyogTW9uIEphbiAyMSAyMDEzIEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+IDQu OC4wLTAuNAorLSB1cGRhdGVkIGZyb20gdHJ1bmsKKyAgLSBQUnMgYWRhLzg2NCwgYm9vdHN0cmFw LzU1NzkyLCBib290c3RyYXAvNTU5NjEsIGMrKy81MjM0MywgYysrLzU1NjYzLAorCWMrKy81NTc1 MywgYysrLzU1ODAxLCBjKysvNTU4NzgsIGMrKy81NTg5MywgYy80ODQxOCwgZGVidWcvNDk4ODgs CisJZGVidWcvNTMyMzUsIGRlYnVnLzUzNjcxLCBkZWJ1Zy81NDExNCwgZGVidWcvNTQ0MDIsIGRl YnVnLzU1NTc5LAorCWRlYnVnLzU2MDA2LCBkcml2ZXIvNTU0NzAsIGRyaXZlci81NTg4NCwgZm9y dHJhbi80Mjc2OSwgZm9ydHJhbi80NTgzNiwKKwlmb3J0cmFuLzQ1OTAwLCBmb3J0cmFuLzQ3MjAz LCBmb3J0cmFuLzUyODY1LCBmb3J0cmFuLzUzODc2LAorCWZvcnRyYW4vNTQyODYsIGZvcnRyYW4v NTQ2NzgsIGZvcnRyYW4vNTQ5OTAsIGZvcnRyYW4vNTQ5OTIsCisJZm9ydHJhbi81NTA3MiwgZm9y dHJhbi81NTM0MSwgZm9ydHJhbi81NTYxOCwgZm9ydHJhbi81NTc1OCwKKwlmb3J0cmFuLzU1NzYz LCBmb3J0cmFuLzU1ODA2LCBmb3J0cmFuLzU1ODUyLCBmb3J0cmFuLzU1ODY4LAorCWZvcnRyYW4v NTU5MzUsIGZvcnRyYW4vNTU5ODMsIGxpYm11ZGZsYXAvNTMzNTksIGxpYnN0ZGMrKy81MTAwNywK KwlsaWJzdGRjKysvNTUwNDMsIGxpYnN0ZGMrKy81NTIzMywgbGlic3RkYysrLzU1NTk0LCBsaWJz dGRjKysvNTU3MjgsCisJbGlic3RkYysrLzU1ODQ3LCBsaWJzdGRjKysvNTU4NjEsIGxpYnN0ZGMr Ky81NTkwOCwgbHRvLzQ1Mzc1LAorCW1pZGRsZS1lbmQvNTUxMTQsIG1pZGRsZS1lbmQvNTU4NTEs IG1pZGRsZS1lbmQvNTU4ODIsCisJbWlkZGxlLWVuZC81NTg5MCwgbWlkZGxlLWVuZC81NjAxNSwg b3RoZXIvNTU5NzMsIG90aGVyLzU1OTgyLAorCXJ0bC1vcHRpbWl6YXRpb24vNTI1NzMsIHJ0bC1v cHRpbWl6YXRpb24vNTM4MjcsCisJcnRsLW9wdGltaXphdGlvbi81NTE1MywgcnRsLW9wdGltaXph dGlvbi81NTU0NywKKwlydGwtb3B0aW1pemF0aW9uLzU1NjcyLCBydGwtb3B0aW1pemF0aW9uLzU1 ODI5LAorCXJ0bC1vcHRpbWl6YXRpb24vNTU4MzMsIHJ0bC1vcHRpbWl6YXRpb24vNTU4NDUsCisJ cnRsLW9wdGltaXphdGlvbi81NjAwNSwgc2FuaXRpemVyLzU1NDg4LCBzYW5pdGl6ZXIvNTU2Nzks CisJc2FuaXRpemVyLzU1ODQ0LCB0YXJnZXQvNDI2NjEsIHRhcmdldC80Mzk2MSwgdGFyZ2V0LzU0 NDYxLAorCXRhcmdldC81NDkwOCwgdGFyZ2V0LzU1MzAxLCB0YXJnZXQvNTU0MzMsIHRhcmdldC81 NTU2NSwKKwl0YXJnZXQvNTU3MTgsIHRhcmdldC81NTcxOSwgdGFyZ2V0LzU1ODc2LCB0YXJnZXQv NTU4OTcsCisJdGFyZ2V0LzU1OTQwLCB0YXJnZXQvNTU5NDgsIHRhcmdldC81NTk3NCwgdGFyZ2V0 LzU1OTgxLAorCXRhcmdldC81NjA1OCwgdGVzdHN1aXRlLzU0NjIyLCB0ZXN0c3VpdGUvNTU5OTQs CisJdHJlZS1vcHRpbWl6YXRpb24vNDQwNjEsIHRyZWUtb3B0aW1pemF0aW9uLzQ4MTg5LAorCXRy ZWUtb3B0aW1pemF0aW9uLzQ4NzY2LCB0cmVlLW9wdGltaXphdGlvbi81MjYzMSwKKwl0cmVlLW9w dGltaXphdGlvbi81MzQ2NSwgdHJlZS1vcHRpbWl6YXRpb24vNTQxMjAsCisJdHJlZS1vcHRpbWl6 YXRpb24vNTQ3NjcsIHRyZWUtb3B0aW1pemF0aW9uLzU1MjczLAorCXRyZWUtb3B0aW1pemF0aW9u LzU1NTY5LCB0cmVlLW9wdGltaXphdGlvbi81NTgyMywKKwl0cmVlLW9wdGltaXphdGlvbi81NTg2 MiwgdHJlZS1vcHRpbWl6YXRpb24vNTU4NzUsCisJdHJlZS1vcHRpbWl6YXRpb24vNTU4ODgsIHRy ZWUtb3B0aW1pemF0aW9uLzU1OTIwLAorCXRyZWUtb3B0aW1pemF0aW9uLzU1OTIxLCB0cmVlLW9w dGltaXphdGlvbi81NTk1NSwKKwl0cmVlLW9wdGltaXphdGlvbi81NTk2NCwgdHJlZS1vcHRpbWl6 YXRpb24vNTU5OTUsCisJdHJlZS1vcHRpbWl6YXRpb24vNTYwMjksIHRyZWUtb3B0aW1pemF0aW9u LzU1MjY0CistIGZpeCB1cCBtdWx0aXZlcnNpb25pbmcgKFBSIGMrKy81NTc0MikKKy0gZml4IHVw IElDRSB3aXRoIHRhcmdldCBhdHRyaWJ1dGUgKFBSIG1pZGRsZS1lbmQvNTYwMjIpCistIHVwZGF0 ZSBpc2wgdG8gMC4xMS4xIGFuZCBjbG9vZyB0byAwLjE4LjAKKwogKiBTdW4gSmFuICA2IDIwMTMg SmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNC44LjAtMC4zCiAtIG5ldyBwYWNrYWdl CgpkaWZmIC0tZ2l0IGEvZ2NjNDgtYXNhbi1wcGMucGF0Y2ggYi9nY2M0OC1hc2FuLXBwYy5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBhYjM4Zi4uMDAwMDAwMAotLS0gYS9n Y2M0OC1hc2FuLXBwYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi0yMDEy LTEyLTIxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCSogdmFyYXNtLmMg KG91dHB1dF9jb25zdGFudF9kZWZfY29udGVudHMpOiBGb3IgYXNhbl9wcm90ZWN0X2dsb2JhbAot CXByb3RlY3RlZCBzdHJpbmdzLCBhZGp1c3QgREVDTF9BTElHTiBpZiBuZWVkZWQsIGJlZm9yZSB0 ZXN0aW5nIGZvcgotCWFuY2hvcmVkIHN5bWJvbHMuCi0JKHBsYWNlX2Jsb2NrX3N5bWJvbCk6IEFk anVzdCBzaXplIGZvciBhc2FuIHByb3RlY3RlZCBTVFJJTkdfQ1NUcyBpZgotCVRSRUVfQ09OU1RB TlRfUE9PTF9BRERSRVNTX1AuICBJbmNyZWFzZSBhbGlnbm1lbnQgZm9yIGFzYW4gcHJvdGVjdGVk Ci0Jbm9ybWFsIGRlY2xzLgotCShvdXRwdXRfb2JqZWN0X2Jsb2NrKTogRm9yIGFzYW4gcHJvdGVj dGVkIGRlY2xzLCBlbWl0IGFzYW4gcGFkZGluZwotCWFmdGVyIHRoZWlyIGNvbnRlbnRzLgotCSog YXNhbi5jIChhc2FuX3Byb3RlY3RfZ2xvYmFsKTogRG9uJ3QgY2hlY2sgVFJFRV9BU01fV1JJVFRF TiBoZXJlLgotCShhc2FuX2ZpbmlzaF9maWxlKTogVGVzdCBpdCBoZXJlIGluc3RlYWQuCi0KLS0t LSBnY2MvdmFyYXNtLmMuamoJMjAxMi0xMi0yMCAxOToxMDoxOS44NTY1MjY3MjAgKzAxMDAKLSsr KyBnY2MvdmFyYXNtLmMJMjAxMi0xMi0yMSAxMDozNzo0NC40ODE5OTk1NDUgKzAxMDAKLUBAIC0z MjUyLDYgKzMyNTIsNyBAQCBvdXRwdXRfY29uc3RhbnRfZGVmX2NvbnRlbnRzIChydHggc3ltYm9s Ci0gICB0cmVlIGRlY2wgPSBTWU1CT0xfUkVGX0RFQ0wgKHN5bWJvbCk7Ci0gICB0cmVlIGV4cCA9 IERFQ0xfSU5JVElBTCAoZGVjbCk7Ci0gICB1bnNpZ25lZCBpbnQgYWxpZ247Ci0rICBib29sIGFz YW5fcHJvdGVjdGVkID0gZmFsc2U7Ci0gCi0gICAvKiBNYWtlIHN1cmUgYW55IG90aGVyIGNvbnN0 YW50cyB3aG9zZSBhZGRyZXNzZXMgYXBwZWFyIGluIEVYUAotICAgICAgYXJlIGFzc2lnbmVkIGxh YmVsIG51bWJlcnMuICAqLwotQEAgLTMyNjAsNiArMzI2MSwxNCBAQCBvdXRwdXRfY29uc3RhbnRf ZGVmX2NvbnRlbnRzIChydHggc3ltYm9sCi0gICAvKiBXZSBhcmUgbm8gbG9uZ2VyIGRlZmVycmlu ZyB0aGlzIGNvbnN0YW50LiAgKi8KLSAgIFRSRUVfQVNNX1dSSVRURU4gKGRlY2wpID0gVFJFRV9B U01fV1JJVFRFTiAoZXhwKSA9IDE7Ci0gCi0rICBpZiAoZmxhZ19hc2FuICYmIFRSRUVfQ09ERSAo ZXhwKSA9PSBTVFJJTkdfQ1NUCi0rICAgICAgJiYgYXNhbl9wcm90ZWN0X2dsb2JhbCAoZXhwKSkK LSsgICAgewotKyAgICAgIGFzYW5fcHJvdGVjdGVkID0gdHJ1ZTsKLSsgICAgICBERUNMX0FMSUdO IChkZWNsKSA9IE1BWCAoREVDTF9BTElHTiAoZGVjbCksCi0rCQkJICAgICAgIEFTQU5fUkVEX1pP TkVfU0laRSAqIEJJVFNfUEVSX1VOSVQpOwotKyAgICB9Ci0rCi0gICAvKiBJZiB0aGUgY29uc3Rh bnQgaXMgcGFydCBvZiBhbiBvYmplY3QgYmxvY2ssIG1ha2Ugc3VyZSB0aGF0IHRoZQotICAgICAg ZGVjbCBoYXMgYmVlbiBwb3NpdGlvbmVkIHdpdGhpbiBpdHMgYmxvY2ssIGJ1dCBkbyBub3Qgd3Jp dGUgb3V0Ci0gICAgICBpdHMgZGVmaW5pdGlvbiB5ZXQuICBvdXRwdXRfb2JqZWN0X2Jsb2NrcyB3 aWxsIGRvIHRoYXQgbGF0ZXIuICAqLwotQEAgLTMyNjcsMTUgKzMyNzYsOCBAQCBvdXRwdXRfY29u c3RhbnRfZGVmX2NvbnRlbnRzIChydHggc3ltYm9sCi0gICAgIHBsYWNlX2Jsb2NrX3N5bWJvbCAo c3ltYm9sKTsKLSAgIGVsc2UKLSAgICAgewotLSAgICAgIGJvb2wgYXNhbl9wcm90ZWN0ZWQgPSBm YWxzZTsKLSAgICAgICBhbGlnbiA9IERFQ0xfQUxJR04gKGRlY2wpOwotICAgICAgIHN3aXRjaF90 b19zZWN0aW9uIChnZXRfY29uc3RhbnRfc2VjdGlvbiAoZXhwLCBhbGlnbikpOwotLSAgICAgIGlm IChmbGFnX2FzYW4gJiYgVFJFRV9DT0RFIChleHApID09IFNUUklOR19DU1QKLS0JICAmJiBhc2Fu X3Byb3RlY3RfZ2xvYmFsIChleHApKQotLQl7Ci0tCSAgYXNhbl9wcm90ZWN0ZWQgPSB0cnVlOwot LQkgIGFsaWduID0gTUFYIChhbGlnbiwgQVNBTl9SRURfWk9ORV9TSVpFICogQklUU19QRVJfVU5J VCk7Ci0tCX0KLSAgICAgICBpZiAoYWxpZ24gPiBCSVRTX1BFUl9VTklUKQotIAlBU01fT1VUUFVU X0FMSUdOIChhc21fb3V0X2ZpbGUsIGZsb29yX2xvZzIgKGFsaWduIC8gQklUU19QRVJfVU5JVCkp OwotICAgICAgIGFzc2VtYmxlX2NvbnN0YW50X2NvbnRlbnRzIChleHAsIFhTVFIgKHN5bWJvbCwg MCksIGFsaWduKTsKLUBAIC02OTY4LDYgKzY5NzAsMTAgQEAgcGxhY2VfYmxvY2tfc3ltYm9sIChy dHggc3ltYm9sKQotICAgICAgIGRlY2wgPSBTWU1CT0xfUkVGX0RFQ0wgKHN5bWJvbCk7Ci0gICAg ICAgYWxpZ25tZW50ID0gREVDTF9BTElHTiAoZGVjbCk7Ci0gICAgICAgc2l6ZSA9IGdldF9jb25z dGFudF9zaXplIChERUNMX0lOSVRJQUwgKGRlY2wpKTsKLSsgICAgICBpZiAoZmxhZ19hc2FuCi0r CSAgJiYgVFJFRV9DT0RFIChERUNMX0lOSVRJQUwgKGRlY2wpKSA9PSBTVFJJTkdfQ1NUCi0rCSAg JiYgYXNhbl9wcm90ZWN0X2dsb2JhbCAoREVDTF9JTklUSUFMIChkZWNsKSkpCi0rCXNpemUgKz0g YXNhbl9yZWRfem9uZV9zaXplIChzaXplKTsKLSAgICAgfQotICAgZWxzZQotICAgICB7Ci1AQCAt Njk3NSw3ICs2OTgxLDExIEBAIHBsYWNlX2Jsb2NrX3N5bWJvbCAocnR4IHN5bWJvbCkKLSAgICAg ICBhbGlnbm1lbnQgPSBERUNMX0FMSUdOIChkZWNsKTsKLSAgICAgICBzaXplID0gdHJlZV9sb3df Y3N0IChERUNMX1NJWkVfVU5JVCAoZGVjbCksIDEpOwotICAgICAgIGlmIChmbGFnX2FzYW4gJiYg YXNhbl9wcm90ZWN0X2dsb2JhbCAoZGVjbCkpCi0tCXNpemUgKz0gYXNhbl9yZWRfem9uZV9zaXpl IChzaXplKTsKLSsJewotKwkgIHNpemUgKz0gYXNhbl9yZWRfem9uZV9zaXplIChzaXplKTsKLSsJ ICBhbGlnbm1lbnQgPSBNQVggKGFsaWdubWVudCwKLSsJCQkgICBBU0FOX1JFRF9aT05FX1NJWkUg KiBCSVRTX1BFUl9VTklUKTsKLSsJfQotICAgICB9Ci0gCi0gICAvKiBDYWxjdWxhdGUgdGhlIG9i amVjdCdzIG9mZnNldCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgYmxvY2suICAqLwotQEAgLTcxMTQs MTYgKzcxMjQsMzQgQEAgb3V0cHV0X29iamVjdF9ibG9jayAoc3RydWN0IG9iamVjdF9ibG9jawot IAl9Ci0gICAgICAgZWxzZSBpZiAoVFJFRV9DT05TVEFOVF9QT09MX0FERFJFU1NfUCAoc3ltYm9s KSkKLSAJewotKwkgIEhPU1RfV0lERV9JTlQgc2l6ZTsKLSAJICBkZWNsID0gU1lNQk9MX1JFRl9E RUNMIChzeW1ib2wpOwotIAkgIGFzc2VtYmxlX2NvbnN0YW50X2NvbnRlbnRzIChERUNMX0lOSVRJ QUwgKGRlY2wpLCBYU1RSIChzeW1ib2wsIDApLAotIAkJCQkgICAgICBERUNMX0FMSUdOIChkZWNs KSk7Ci0tCSAgb2Zmc2V0ICs9IGdldF9jb25zdGFudF9zaXplIChERUNMX0lOSVRJQUwgKGRlY2wp KTsKLSsJICBzaXplID0gZ2V0X2NvbnN0YW50X3NpemUgKERFQ0xfSU5JVElBTCAoZGVjbCkpOwot KwkgIG9mZnNldCArPSBzaXplOwotKwkgIGlmIChmbGFnX2FzYW4KLSsJICAgICAgJiYgVFJFRV9D T0RFIChERUNMX0lOSVRJQUwgKGRlY2wpKSA9PSBTVFJJTkdfQ1NUCi0rCSAgICAgICYmIGFzYW5f cHJvdGVjdF9nbG9iYWwgKERFQ0xfSU5JVElBTCAoZGVjbCkpKQotKwkgICAgewotKwkgICAgICBz aXplID0gYXNhbl9yZWRfem9uZV9zaXplIChzaXplKTsKLSsJICAgICAgYXNzZW1ibGVfemVyb3Mg KHNpemUpOwotKwkgICAgICBvZmZzZXQgKz0gc2l6ZTsKLSsJICAgIH0KLSAJfQotICAgICAgIGVs c2UKLSAJewotKwkgIEhPU1RfV0lERV9JTlQgc2l6ZTsKLSAJICBkZWNsID0gU1lNQk9MX1JFRl9E RUNMIChzeW1ib2wpOwotIAkgIGFzc2VtYmxlX3ZhcmlhYmxlX2NvbnRlbnRzIChkZWNsLCBYU1RS IChzeW1ib2wsIDApLCBmYWxzZSk7Ci0tCSAgb2Zmc2V0ICs9IHRyZWVfbG93X2NzdCAoREVDTF9T SVpFX1VOSVQgKGRlY2wpLCAxKTsKLSsJICBzaXplID0gdHJlZV9sb3dfY3N0IChERUNMX1NJWkVf VU5JVCAoZGVjbCksIDEpOwotKwkgIG9mZnNldCArPSBzaXplOwotKwkgIGlmIChmbGFnX2FzYW4g JiYgYXNhbl9wcm90ZWN0X2dsb2JhbCAoZGVjbCkpCi0rCSAgICB7Ci0rCSAgICAgIHNpemUgPSBh c2FuX3JlZF96b25lX3NpemUgKHNpemUpOwotKwkgICAgICBhc3NlbWJsZV96ZXJvcyAoc2l6ZSk7 Ci0rCSAgICAgIG9mZnNldCArPSBzaXplOwotKwkgICAgfQotIAl9Ci0gICAgIH0KLSB9Ci0tLS0g Z2NjL2FzYW4uYy5qagkyMDEyLTEyLTIwIDExOjM4OjE0LjAwMDAwMDAwMCArMDEwMAotKysrIGdj Yy9hc2FuLmMJMjAxMi0xMi0yMSAxMDo0OTo0NS4zNjQ4MjM3NTkgKzAxMDAKLUBAIC00NjMsNyAr NDYzLDYgQEAgYXNhbl9wcm90ZWN0X2dsb2JhbCAodHJlZSBkZWNsKQotICAgICAgIHx8IERFQ0xf VEhSRUFEX0xPQ0FMX1AgKGRlY2wpCi0gICAgICAgLyogRXh0ZXJucyB3aWxsIGJlIHByb3RlY3Rl ZCBlbHNld2hlcmUuICAqLwotICAgICAgIHx8IERFQ0xfRVhURVJOQUwgKGRlY2wpCi0tICAgICAg fHwgIVRSRUVfQVNNX1dSSVRURU4gKGRlY2wpCi0gICAgICAgfHwgIURFQ0xfUlRMX1NFVF9QIChk ZWNsKQotICAgICAgIC8qIENvbWRhdCB2YXJzIHBvc2UgYW4gQUJJIHByb2JsZW0sIHdlIGNhbid0 IGtub3cgaWYKLSAJIHRoZSB2YXIgdGhhdCBpcyBzZWxlY3RlZCBieSB0aGUgbGlua2VyIHdpbGwg aGF2ZQotQEAgLTE2OTksNyArMTY5OCw4IEBAIGFzYW5fZmluaXNoX2ZpbGUgKHZvaWQpCi0gICB0 cmVlIGZuID0gYnVpbHRpbl9kZWNsX2ltcGxpY2l0IChCVUlMVF9JTl9BU0FOX0lOSVQpOwotICAg YXBwZW5kX3RvX3N0YXRlbWVudF9saXN0IChidWlsZF9jYWxsX2V4cHIgKGZuLCAwKSwgJmFzYW5f Y3Rvcl9zdGF0ZW1lbnRzKTsKLSAgIEZPUl9FQUNIX0RFRklORURfVkFSSUFCTEUgKHZub2RlKQot LSAgICBpZiAoYXNhbl9wcm90ZWN0X2dsb2JhbCAodm5vZGUtPnN5bWJvbC5kZWNsKSkKLSsgICAg aWYgKFRSRUVfQVNNX1dSSVRURU4gKHZub2RlLT5zeW1ib2wuZGVjbCkKLSsJJiYgYXNhbl9wcm90 ZWN0X2dsb2JhbCAodm5vZGUtPnN5bWJvbC5kZWNsKSkKLSAgICAgICArK2djb3VudDsKLSAgIGh0 YWJfdCBjb25zdF9kZXNjX2h0YWIgPSBjb25zdGFudF9wb29sX2h0YWIgKCk7Ci0gICBodGFiX3Ry YXZlcnNlIChjb25zdF9kZXNjX2h0YWIsIGNvdW50X3N0cmluZ19jc3RzLCAmZ2NvdW50KTsKLUBA IC0xNzIxLDcgKzE3MjEsOCBAQCBhc2FuX2ZpbmlzaF9maWxlICh2b2lkKQotICAgICAgIERFQ0xf SUdOT1JFRF9QICh2YXIpID0gMTsKLSAgICAgICB2ZWNfYWxsb2MgKHYsIGdjb3VudCk7Ci0gICAg ICAgRk9SX0VBQ0hfREVGSU5FRF9WQVJJQUJMRSAodm5vZGUpCi0tCWlmIChhc2FuX3Byb3RlY3Rf Z2xvYmFsICh2bm9kZS0+c3ltYm9sLmRlY2wpKQotKwlpZiAoVFJFRV9BU01fV1JJVFRFTiAodm5v ZGUtPnN5bWJvbC5kZWNsKQotKwkgICAgJiYgYXNhbl9wcm90ZWN0X2dsb2JhbCAodm5vZGUtPnN5 bWJvbC5kZWNsKSkKLSAJICBhc2FuX2FkZF9nbG9iYWwgKHZub2RlLT5zeW1ib2wuZGVjbCwgVFJF RV9UWVBFICh0eXBlKSwgdik7Ci0gICAgICAgc3RydWN0IGFzYW5fYWRkX3N0cmluZ19jc3RzX2Rh dGEgYWFzY2Q7Ci0gICAgICAgYWFzY2QudHlwZSA9IFRSRUVfVFlQRSAodHlwZSk7CgpkaWZmIC0t Z2l0IGEvZ2NjNDgtcHI1NTM0MS5wYXRjaCBiL2djYzQ4LXByNTUzNDEucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwY2RhYmIuLjAwMDAwMDAKLS0tIGEvZ2NjNDgtcHI1NTM0 MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLTIwMTItMTItMTkgIEpha3Vi IEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JUFIgZm9ydHJhbi81NTM0MQotCSogYXNh bi5jIChhc2FuX2NsZWFyX3NoYWRvdyk6IE5ldyBmdW5jdGlvbi4KLQkoYXNhbl9lbWl0X3N0YWNr X3Byb3RlY3Rpb24pOiBVc2UgaXQuCi0KLS0tLSBnY2MvYXNhbi5jLmpqCTIwMTItMTItMTMgMDA6 MDU6MDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2NjL2FzYW4uYwkyMDEyLTEyLTE5IDEyOjI1OjU3 LjY3NjM2NTg1MSArMDEwMAotQEAgLTI3MCw2ICsyNzAsNDUgQEAgYXNhbl9zaGFkb3dfY3N0ICh1 bnNpZ25lZCBjaGFyIHNoYWRvd19ieQotICAgcmV0dXJuIEdFTl9JTlQgKHRydW5jX2ludF9mb3Jf bW9kZSAodmFsLCBTSW1vZGUpKTsKLSB9Ci0gCi0rLyogQ2xlYXIgc2hhZG93IG1lbW9yeSBhdCBT SEFET1dfTUVNLCBMRU4gYnl0ZXMuICBDYW4ndCBjYWxsIGEgbGlicmFyeSBjYWxsIGhlcmUKLSsg ICB0aG91Z2guICAqLwotKwotK3N0YXRpYyB2b2lkCi0rYXNhbl9jbGVhcl9zaGFkb3cgKHJ0eCBz aGFkb3dfbWVtLCBIT1NUX1dJREVfSU5UIGxlbikKLSt7Ci0rICBydHggaW5zbiwgaW5zbnMsIHRv cF9sYWJlbCwgZW5kLCBhZGRyLCB0bXAsIGp1bXA7Ci0rCi0rICBzdGFydF9zZXF1ZW5jZSAoKTsK LSsgIGNsZWFyX3N0b3JhZ2UgKHNoYWRvd19tZW0sIEdFTl9JTlQgKGxlbiksIEJMT0NLX09QX05P Uk1BTCk7Ci0rICBpbnNucyA9IGdldF9pbnNucyAoKTsKLSsgIGVuZF9zZXF1ZW5jZSAoKTsKLSsg IGZvciAoaW5zbiA9IGluc25zOyBpbnNuOyBpbnNuID0gTkVYVF9JTlNOIChpbnNuKSkKLSsgICAg aWYgKENBTExfUCAoaW5zbikpCi0rICAgICAgYnJlYWs7Ci0rICBpZiAoaW5zbiA9PSBOVUxMX1JU WCkKLSsgICAgewotKyAgICAgIGVtaXRfaW5zbiAoaW5zbnMpOwotKyAgICAgIHJldHVybjsKLSsg ICAgfQotKwotKyAgZ2NjX2Fzc2VydCAoKGxlbiAmIDMpID09IDApOwotKyAgdG9wX2xhYmVsID0g Z2VuX2xhYmVsX3J0eCAoKTsKLSsgIGFkZHIgPSBmb3JjZV9yZWcgKFBtb2RlLCBYRVhQIChzaGFk b3dfbWVtLCAwKSk7Ci0rICBzaGFkb3dfbWVtID0gYWRqdXN0X2F1dG9tb2RpZnlfYWRkcmVzcyAo c2hhZG93X21lbSwgU0ltb2RlLCBhZGRyLCAwKTsKLSsgIGVuZCA9IGZvcmNlX3JlZyAoUG1vZGUs IHBsdXNfY29uc3RhbnQgKFBtb2RlLCBhZGRyLCBsZW4pKTsKLSsgIGVtaXRfbGFiZWwgKHRvcF9s YWJlbCk7Ci0rCi0rICBlbWl0X21vdmVfaW5zbiAoc2hhZG93X21lbSwgY29uc3QwX3J0eCk7Ci0r ICB0bXAgPSBleHBhbmRfc2ltcGxlX2Jpbm9wIChQbW9kZSwgUExVUywgYWRkciwgR0VOX0lOVCAo NCksIGFkZHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCBPUFRBQl9MSUJf V0lERU4pOwotKyAgaWYgKHRtcCAhPSBhZGRyKQotKyAgICBlbWl0X21vdmVfaW5zbiAoYWRkciwg dG1wKTsKLSsgIGVtaXRfY21wX2FuZF9qdW1wX2luc25zIChhZGRyLCBlbmQsIExULCBOVUxMX1JU WCwgUG1vZGUsIHRydWUsIHRvcF9sYWJlbCk7Ci0rICBqdW1wID0gZ2V0X2xhc3RfaW5zbiAoKTsK LSsgIGdjY19hc3NlcnQgKEpVTVBfUCAoanVtcCkpOwotKyAgYWRkX3JlZ19ub3RlIChqdW1wLCBS RUdfQlJfUFJPQiwgR0VOX0lOVCAoUkVHX0JSX1BST0JfQkFTRSAqIDgwIC8gMTAwKSk7Ci0rfQot KwotIC8qIEluc2VydCBjb2RlIHRvIHByb3RlY3Qgc3RhY2sgdmFycy4gIFRoZSBwcm9sb2d1ZSBz ZXF1ZW5jZSBzaG91bGQgYmUgZW1pdHRlZAotICAgIGRpcmVjdGx5LCBlcGlsb2d1ZSBzZXF1ZW5j ZSByZXR1cm5lZC4gIEJBU0UgaXMgdGhlIHJlZ2lzdGVyIGhvbGRpbmcgdGhlCi0gICAgc3RhY2sg YmFzZSwgYWdhaW5zdCB3aGljaCBPRkZTRVRTIGFycmF5IG9mZnNldHMgYXJlIHJlbGF0aXZlIHRv LCBPRkZTRVRTCi1AQCAtNDA0LDggKzQ0Myw3IEBAIGFzYW5fZW1pdF9zdGFja19wcm90ZWN0aW9u IChydHggYmFzZSwgSE8KLSAJCQkJICAgICAgIChsYXN0X29mZnNldCAtIHByZXZfb2Zmc2V0KQot IAkJCQkgICAgICAgPj4gQVNBTl9TSEFET1dfU0hJRlQpOwotIAkgIHByZXZfb2Zmc2V0ID0gbGFz dF9vZmZzZXQ7Ci0tCSAgY2xlYXJfc3RvcmFnZSAoc2hhZG93X21lbSwgR0VOX0lOVCAobGFzdF9z aXplID4+IEFTQU5fU0hBRE9XX1NISUZUKSwKLS0JCQkgQkxPQ0tfT1BfTk9STUFMKTsKLSsJICBh c2FuX2NsZWFyX3NoYWRvdyAoc2hhZG93X21lbSwgbGFzdF9zaXplID4+IEFTQU5fU0hBRE9XX1NI SUZUKTsKLSAJICBsYXN0X29mZnNldCA9IG9mZnNldDsKLSAJICBsYXN0X3NpemUgPSAwOwotIAl9 Ci1AQCAtNDE4LDggKzQ1Niw3IEBAIGFzYW5fZW1pdF9zdGFja19wcm90ZWN0aW9uIChydHggYmFz ZSwgSE8KLSAgICAgICBzaGFkb3dfbWVtID0gYWRqdXN0X2FkZHJlc3MgKHNoYWRvd19tZW0sIFZP SURtb2RlLAotIAkJCQkgICAobGFzdF9vZmZzZXQgLSBwcmV2X29mZnNldCkKLSAJCQkJICAgPj4g QVNBTl9TSEFET1dfU0hJRlQpOwotLSAgICAgIGNsZWFyX3N0b3JhZ2UgKHNoYWRvd19tZW0sIEdF Tl9JTlQgKGxhc3Rfc2l6ZSA+PiBBU0FOX1NIQURPV19TSElGVCksCi0tCQkgICAgIEJMT0NLX09Q X05PUk1BTCk7Ci0rICAgICAgYXNhbl9jbGVhcl9zaGFkb3cgKHNoYWRvd19tZW0sIGxhc3Rfc2l6 ZSA+PiBBU0FOX1NIQURPV19TSElGVCk7Ci0gICAgIH0KLSAKLSAgIGRvX3BlbmRpbmdfc3RhY2tf YWRqdXN0ICgpOwoKZGlmZiAtLWdpdCBhL2djYzQ4LXByNTU3NDIucGF0Y2ggYi9nY2M0OC1wcjU1 NzQyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4OGMyZTgKLS0t IC9kZXYvbnVsbAorKysgYi9nY2M0OC1wcjU1NzQyLnBhdGNoCkBAIC0wLDAgKzEsMTI4OCBAQAor MjAxMy0wMS0yMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CisKKwlQUiBjKysv NTU3NDIKKwkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl92YWxpZF90YXJnZXRfYXR0cmlidXRl X2lubmVyX3ApOiBEaWFnbm9zZQorCWludmFsaWQgYXJncyBpbnN0ZWFkIG9mIElDRWluZyBvbiBp dC4KKwkoaXg4Nl92YWxpZF90YXJnZXRfYXR0cmlidXRlX3RyZWUpOiBSZXR1cm4gZXJyb3JfbWFy a19ub2RlIGlmCisJaXg4Nl92YWxpZF90YXJnZXRfYXR0cmlidXRlX2lubmVyX3AgZmFpbGVkLgor CShpeDg2X3ZhbGlkX3RhcmdldF9hdHRyaWJ1dGVfcCk6IFJldHVybiBmYWxzZSBvbmx5IGlmCisJ aXg4Nl92YWxpZF90YXJnZXRfYXR0cmlidXRlX3RyZWUgcmV0dXJuZWQgZXJyb3JfbWFya19ub2Rl LiAgQWxsb3cKKwl0YXJnZXQoImRlZmF1bHQiKSBhdHRyaWJ1dGUuCisJKHNvcnRlZF9hdHRyX3N0 cmluZyk6IENoYW5nZSBhcmd1bWVudCBmcm9tIGNvbnN0IGNoYXIgKiB0byB0cmVlLAorCW1lcmdl IGluIGFsbCB0YXJnZXQgYXR0cmlidXRlIGFyZ3VtZW50cyByYXRoZXIgdGhhbiBqdXN0IG9uZS4K KwlGb3JtYXR0aW5nIGZpeC4gIFVzZSBYTkVXVkVDIGluc3RlYWQgb2YgeG1hbGxvYyBhbmQgWERF TEVURVZFQworCWluc3RlYWQgb2YgZnJlZS4gIEF2b2lkIHVzaW5nIHN0cmNhdC4KKwkoaXg4Nl9t YW5nbGVfZnVuY3Rpb25fdmVyc2lvbl9hc3NlbWJsZXJfbmFtZSk6IE1hbmdsZQorCXRhcmdldCgi ZGVmYXVsdCIpIGFzIGlmIG5vIHRhcmdldCBhdHRyaWJ1dGUgaXMgcHJlc2VudC4gIEFkanVzdAor CXNvcnRlZF9hdHRyX3N0cmluZyBjYWxsZXIuICBBdm9pZCBsZWFraW5nIG1lbW9yeS4gIFVzZSBY TkVXVkVDCisJaW5zdGVhZCBvZiB4bWFsbG9jIGFuZCBYREVMRVRFVkVDIGluc3RlYWQgb2YgZnJl ZS4KKwkoaXg4Nl9mdW5jdGlvbl92ZXJzaW9ucyk6IERvbid0IHJldHVybiB0cnVlIGlmIG9uZSBv ZiB0aGUgZGVjbHMKKwlkb2Vzbid0IGhhdmUgdGFyZ2V0IGF0dHJpYnV0ZS4gIElmIHRoZXkgZG9u J3QgYW5kIG9uZSBvZiB0aGUgZGVjbHMKKwlpcyBERUNMX0ZVTkNUSU9OX1ZFUlNJT05FRCwgcmVw b3J0IGFuIGVycm9yLiAgQWRqdXN0CisJc29ydGVkX2F0dHJfc3RyaW5nIGNhbGxlci4gIFVzZSBY REVMRVRFVkVDIGluc3RlYWQgb2YgZnJlZS4KKwkoaXg4Nl9zdXBwb3J0c19mdW5jdGlvbl92ZXJz aW9ucyk6IFJlbW92ZS4KKwkobWFrZV9uYW1lKTogRml4IHVwIGZvcm1hdHRpbmcuCisJKG1ha2Vf ZGlzcGF0Y2hlcl9kZWNsKTogUmVtb3ZlIHJlc29sdmVyX25hbWUgYW5kIGl0cyBpbml0aWFsaXph dGlvbi4KKwlBdm9pZCBsZWFraW5nIG1lbW9yeS4KKwkoaXNfZnVuY3Rpb25fZGVmYXVsdF92ZXJz aW9uKTogUmV0dXJuIHRydWUgaWYgdGhlcmUgaXMKKwl0YXJnZXQoImRlZmF1bHQiKSBhdHRyaWJ1 dGUgcmF0aGVyIHRoYW4gbm8gdGFyZ2V0IGF0dHJpYnV0ZSBhdCBhbGwuCisJKG1ha2VfcmVzb2x2 ZXJfZnVuYyk6IEF2b2lkIGxlYWtpbmcgbWVtb3J5LgorCShpeDg2X2dlbmVyYXRlX3ZlcnNpb25f ZGlzcGF0Y2hlcl9ib2R5KTogTGlrZXdpc2UuCisJKFRBUkdFVF9PUFRJT05fU1VQUE9SVFNfRlVO Q1RJT05fVkVSU0lPTlMpOiBSZW1vdmUuCisJKiB0YXJnZXQuZGVmIChzdXBwb3J0c19mdW5jdGlv bl92ZXJzaW9ucyk6IFJlbW92ZS4KKwkqIGRvYy90bS50ZXhpLmluIChTVVBQT1JUU19GVU5DVElP Tl9WRVJTSU9OUyk6IFJlbW92ZS4KKwkqIGRvYy90bS50ZXhpOiBSZWdlbmVyYXRlZC4KKworCSog Yy1jb21tb24uYyAoaGFuZGxlX3RhcmdldF9hdHRyaWJ1dGUpOiBSZXZlcnQgMjAxMi0xMi0yNiBj aGFuZ2UuCisKKwkqIGcrKy5kZy9tdjEuQzogTW92ZWQgdG8uLi4KKwkqIGcrKy5kZy9leHQvbXYx LkM6IC4uLiBoZXJlLiAgQWRqdXN0IHRlc3QuCisJKiBnKysuZGcvbXYyLkM6IE1vdmVkIHRvLi4u CisJKiBnKysuZGcvZXh0L212Mi5DOiAuLi4gaGVyZS4gIEFkanVzdCB0ZXN0LgorCSogZysrLmRn L212My5DOiBNb3ZlZCB0by4uLgorCSogZysrLmRnL2V4dC9tdjMuQzogLi4uIGhlcmUuCisJKiBn KysuZGcvbXY0LkM6IE1vdmVkIHRvLi4uCisJKiBnKysuZGcvZXh0L212NC5DOiAuLi4gaGVyZS4K KwkqIGcrKy5kZy9tdjUuQzogTW92ZWQgdG8uLi4KKwkqIGcrKy5kZy9leHQvbXY1LkM6IC4uLiBo ZXJlLiAgQWRqdXN0IHRlc3QuCisJKiBnKysuZGcvbXY2LkM6IE1vdmVkIHRvLi4uCisJKiBnKysu ZGcvZXh0L212Ni5DOiAuLi4gaGVyZS4gIEFkanVzdCB0ZXN0LgorCSogZysrLmRnL2V4dC9tdjcu QzogTmV3IHRlc3QuCisJKiBnKysuZGcvZXh0L212OC5DOiBOZXcgdGVzdC4KKwkqIGcrKy5kZy9l eHQvbXY5LkM6IE5ldyB0ZXN0LgorCSogZysrLmRnL2V4dC9tdjEwLkM6IE5ldyB0ZXN0LgorCSog ZysrLmRnL2V4dC9tdjExLkM6IE5ldyB0ZXN0LgorCistLS0gZ2NjL2NvbmZpZy9pMzg2L2kzODYu Yy5qagkyMDEzLTAxLTIxIDEwOjU3OjA4LjMyNTk0NTQ2OSArMDEwMAorKysrIGdjYy9jb25maWcv aTM4Ni9pMzg2LmMJMjAxMy0wMS0yMSAxMjowMjo1OS4zODQ3MDEzOTQgKzAxMDAKK0BAIC00MjIz LDcgKzQyMjMsMTAgQEAgaXg4Nl92YWxpZF90YXJnZXRfYXR0cmlidXRlX2lubmVyX3AgKHRyZQor ICAgICB9CisgCisgICBlbHNlIGlmIChUUkVFX0NPREUgKGFyZ3MpICE9IFNUUklOR19DU1QpCist ICAgIGdjY191bnJlYWNoYWJsZSAoKTsKKysgICAgeworKyAgICAgIGVycm9yICgiYXR0cmlidXRl ICU8dGFyZ2V0JT4gYXJndW1lbnQgbm90IGEgc3RyaW5nIik7CisrICAgICAgcmV0dXJuIGZhbHNl OworKyAgICB9CisgCisgICAvKiBIYW5kbGUgbXVsdGlwbGUgYXJndW1lbnRzIHNlcGFyYXRlZCBi eSBjb21tYXMuICAqLworICAgbmV4dF9vcHRzdHIgPSBBU1RSRFVQIChUUkVFX1NUUklOR19QT0lO VEVSIChhcmdzKSk7CitAQCAtNDM2OCw3ICs0MzcxLDcgQEAgaXg4Nl92YWxpZF90YXJnZXRfYXR0 cmlidXRlX3RyZWUgKHRyZWUgYQorICAgLyogUHJvY2VzcyBlYWNoIG9mIHRoZSBvcHRpb25zIG9u IHRoZSBjaGFpbi4gICovCisgICBpZiAoISBpeDg2X3ZhbGlkX3RhcmdldF9hdHRyaWJ1dGVfaW5u ZXJfcCAoYXJncywgb3B0aW9uX3N0cmluZ3MsCisgCQkJCQkgICAgICZlbnVtX29wdHNfc2V0KSkK Ky0gICAgcmV0dXJuIE5VTExfVFJFRTsKKysgICAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKKyAK KyAgIC8qIElmIHRoZSBjaGFuZ2VkIG9wdGlvbnMgYXJlIGRpZmZlcmVudCBmcm9tIHRoZSBkZWZh dWx0LCByZXJ1bgorICAgICAgaXg4Nl9vcHRpb25fb3ZlcnJpZGVfaW50ZXJuYWwsIGFuZCB0aGVu IHNhdmUgdGhlIG9wdGlvbnMgYXdheS4KK0BAIC00NDMzLDYgKzQ0MzYsMTUgQEAgaXg4Nl92YWxp ZF90YXJnZXRfYXR0cmlidXRlX3AgKHRyZWUgZm5kZQorIHsKKyAgIHN0cnVjdCBjbF90YXJnZXRf b3B0aW9uIGN1cl90YXJnZXQ7CisgICBib29sIHJldCA9IHRydWU7CisrCisrICAvKiBhdHRyaWJ1 dGUoKHRhcmdldCgiZGVmYXVsdCIpKSkgZG9lcyBub3RoaW5nLCBiZXlvbmQKKysgICAgIGFmZmVj dGluZyBtdWx0aS12ZXJzaW9uaW5nLiAgKi8KKysgIGlmIChUUkVFX1ZBTFVFIChhcmdzKQorKyAg ICAgICYmIFRSRUVfQ09ERSAoVFJFRV9WQUxVRSAoYXJncykpID09IFNUUklOR19DU1QKKysgICAg ICAmJiBUUkVFX0NIQUlOIChhcmdzKSA9PSBOVUxMX1RSRUUKKysgICAgICAmJiBzdHJjbXAgKFRS RUVfU1RSSU5HX1BPSU5URVIgKFRSRUVfVkFMVUUgKGFyZ3MpKSwgImRlZmF1bHQiKSA9PSAwKQor KyAgICByZXR1cm4gdHJ1ZTsKKysKKyAgIHRyZWUgb2xkX29wdGltaXplID0gYnVpbGRfb3B0aW1p emF0aW9uX25vZGUgKCk7CisgICB0cmVlIG5ld190YXJnZXQsIG5ld19vcHRpbWl6ZTsKKyAgIHRy ZWUgZnVuY19vcHRpbWl6ZSA9IERFQ0xfRlVOQ1RJT05fU1BFQ0lGSUNfT1BUSU1JWkFUSU9OIChm bmRlY2wpOworQEAgLTQ0NDksMTAgKzQ0NjEsMTAgQEAgaXg4Nl92YWxpZF90YXJnZXRfYXR0cmli dXRlX3AgKHRyZWUgZm5kZQorICAgbmV3X3RhcmdldCA9IGl4ODZfdmFsaWRfdGFyZ2V0X2F0dHJp YnV0ZV90cmVlIChhcmdzKTsKKyAgIG5ld19vcHRpbWl6ZSA9IGJ1aWxkX29wdGltaXphdGlvbl9u b2RlICgpOworIAorLSAgaWYgKCFuZXdfdGFyZ2V0KQorKyAgaWYgKG5ld190YXJnZXQgPT0gZXJy b3JfbWFya19ub2RlKQorICAgICByZXQgPSBmYWxzZTsKKyAKKy0gIGVsc2UgaWYgKGZuZGVjbCkK KysgIGVsc2UgaWYgKGZuZGVjbCAmJiBuZXdfdGFyZ2V0KQorICAgICB7CisgICAgICAgREVDTF9G VU5DVElPTl9TUEVDSUZJQ19UQVJHRVQgKGZuZGVjbCkgPSBuZXdfdGFyZ2V0OworIAorQEAgLTI4 OTQ2LDI2ICsyODk1OCw0NCBAQCBhdHRyX3N0cmNtcCAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZv aWQKKyAgIHJldHVybiBzdHJjbXAgKGMxLCBjMik7CisgfQorIAorLS8qIFNUUiBpcyB0aGUgYXJn dW1lbnQgdG8gdGFyZ2V0IGF0dHJpYnV0ZS4gIFRoaXMgZnVuY3Rpb24gdG9rZW5pemVzCisrLyog QVJHTElTVCBpcyB0aGUgYXJndW1lbnQgdG8gdGFyZ2V0IGF0dHJpYnV0ZS4gIFRoaXMgZnVuY3Rp b24gdG9rZW5pemVzCisgICAgdGhlIGNvbW1hIHNlcGFyYXRlZCBhcmd1bWVudHMsIHNvcnRzIHRo ZW0gYW5kIHJldHVybnMgYSBzdHJpbmcgd2hpY2gKKyAgICBpcyBhIHVuaXF1ZSBpZGVudGlmaWVy IGZvciB0aGUgY29tbWEgc2VwYXJhdGVkIGFyZ3VtZW50cy4gICBJdCBhbHNvCisgICAgcmVwbGFj ZXMgbm9uLWlkZW50aWZpZXIgY2hhcmFjdGVycyAiPSwtIiB3aXRoICJfIi4gICovCisgCisgc3Rh dGljIGNoYXIgKgorLXNvcnRlZF9hdHRyX3N0cmluZyAoY29uc3QgY2hhciAqc3RyKQorK3NvcnRl ZF9hdHRyX3N0cmluZyAodHJlZSBhcmdsaXN0KQorIHsKKysgIHRyZWUgYXJnOworKyAgc2l6ZV90 IHN0cl9sZW5fc3VtID0gMDsKKyAgIGNoYXIgKiphcmdzID0gTlVMTDsKKyAgIGNoYXIgKmF0dHJf c3RyLCAqcmV0X3N0cjsKKyAgIGNoYXIgKmF0dHIgPSBOVUxMOworICAgdW5zaWduZWQgaW50IGFy Z251bSA9IDE7CisgICB1bnNpZ25lZCBpbnQgaTsKKyAKKy0gIGZvciAoaSA9IDA7IGkgPCBzdHJs ZW4gKHN0cik7IGkrKykKKy0gICAgaWYgKHN0cltpXSA9PSAnLCcpCistICAgICAgYXJnbnVtKys7 CistCistICBhdHRyX3N0ciA9IChjaGFyICopeG1hbGxvYyAoc3RybGVuIChzdHIpICsgMSk7Cist ICBzdHJjcHkgKGF0dHJfc3RyLCBzdHIpOworKyAgZm9yIChhcmcgPSBhcmdsaXN0OyBhcmc7IGFy ZyA9IFRSRUVfQ0hBSU4gKGFyZykpCisrICAgIHsKKysgICAgICBjb25zdCBjaGFyICpzdHIgPSBU UkVFX1NUUklOR19QT0lOVEVSIChUUkVFX1ZBTFVFIChhcmcpKTsKKysgICAgICBzaXplX3QgbGVu ID0gc3RybGVuIChzdHIpOworKyAgICAgIHN0cl9sZW5fc3VtICs9IGxlbiArIDE7CisrICAgICAg aWYgKGFyZyAhPSBhcmdsaXN0KQorKwlhcmdudW0rKzsKKysgICAgICBmb3IgKGkgPSAwOyBpIDwg c3RybGVuIChzdHIpOyBpKyspCisrCWlmIChzdHJbaV0gPT0gJywnKQorKwkgIGFyZ251bSsrOwor KyAgICB9CisrCisrICBhdHRyX3N0ciA9IFhORVdWRUMgKGNoYXIsIHN0cl9sZW5fc3VtKTsKKysg IHN0cl9sZW5fc3VtID0gMDsKKysgIGZvciAoYXJnID0gYXJnbGlzdDsgYXJnOyBhcmcgPSBUUkVF X0NIQUlOIChhcmcpKQorKyAgICB7CisrICAgICAgY29uc3QgY2hhciAqc3RyID0gVFJFRV9TVFJJ TkdfUE9JTlRFUiAoVFJFRV9WQUxVRSAoYXJnKSk7CisrICAgICAgc2l6ZV90IGxlbiA9IHN0cmxl biAoc3RyKTsKKysgICAgICBtZW1jcHkgKGF0dHJfc3RyICsgc3RyX2xlbl9zdW0sIHN0ciwgbGVu KTsKKysgICAgICBhdHRyX3N0cltzdHJfbGVuX3N1bSArIGxlbl0gPSBUUkVFX0NIQUlOIChhcmcp ID8gJywnIDogJ1wwJzsKKysgICAgICBzdHJfbGVuX3N1bSArPSBsZW4gKyAxOworKyAgICB9Cisg CisgICAvKiBSZXBsYWNlICI9LC0iIHdpdGggIl8iLiAgKi8KKyAgIGZvciAoaSA9IDA7IGkgPCBz dHJsZW4gKGF0dHJfc3RyKTsgaSsrKQorQEAgLTI4OTg2LDE4ICsyOTAxNiwyMCBAQCBzb3J0ZWRf YXR0cl9zdHJpbmcgKGNvbnN0IGNoYXIgKnN0cikKKyAgICAgICBhdHRyID0gc3RydG9rIChOVUxM LCAiLCIpOworICAgICB9CisgCistICBxc29ydCAoYXJncywgYXJnbnVtLCBzaXplb2YgKGNoYXIq KSwgYXR0cl9zdHJjbXApOworKyAgcXNvcnQgKGFyZ3MsIGFyZ251bSwgc2l6ZW9mIChjaGFyICop LCBhdHRyX3N0cmNtcCk7CisgCistICByZXRfc3RyID0gKGNoYXIgKil4bWFsbG9jIChzdHJsZW4g KHN0cikgKyAxKTsKKy0gIHN0cmNweSAocmV0X3N0ciwgYXJnc1swXSk7CistICBmb3IgKGkgPSAx OyBpIDwgYXJnbnVtOyBpKyspCisrICByZXRfc3RyID0gWE5FV1ZFQyAoY2hhciwgc3RyX2xlbl9z dW0pOworKyAgc3RyX2xlbl9zdW0gPSAwOworKyAgZm9yIChpID0gMDsgaSA8IGFyZ251bTsgaSsr KQorICAgICB7CistICAgICAgc3RyY2F0IChyZXRfc3RyLCAiXyIpOworLSAgICAgIHN0cmNhdCAo cmV0X3N0ciwgYXJnc1tpXSk7CisrICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoYXJnc1tpXSk7 CisrICAgICAgbWVtY3B5IChyZXRfc3RyICsgc3RyX2xlbl9zdW0sIGFyZ3NbaV0sIGxlbik7Cisr ICAgICAgcmV0X3N0cltzdHJfbGVuX3N1bSArIGxlbl0gPSBpIDwgYXJnbnVtIC0gMSA/ICdfJyA6 ICdcMCc7CisrICAgICAgc3RyX2xlbl9zdW0gKz0gbGVuICsgMTsKKyAgICAgfQorIAorLSAgZnJl ZSAoYXJncyk7CistICBmcmVlIChhdHRyX3N0cik7CisrICBYREVMRVRFVkVDIChhcmdzKTsKKysg IFhERUxFVEVWRUMgKGF0dHJfc3RyKTsKKyAgIHJldHVybiByZXRfc3RyOworIH0KKyAKK0BAIC0y OTAwOSw4ICsyOTA0MSw4IEBAIHN0YXRpYyB0cmVlCisgaXg4Nl9tYW5nbGVfZnVuY3Rpb25fdmVy c2lvbl9hc3NlbWJsZXJfbmFtZSAodHJlZSBkZWNsLCB0cmVlIGlkKQorIHsKKyAgIHRyZWUgdmVy c2lvbl9hdHRyOworLSAgY29uc3QgY2hhciAqb3JpZ19uYW1lLCAqdmVyc2lvbl9zdHJpbmcsICph dHRyX3N0cjsKKy0gIGNoYXIgKmFzc2VtYmxlcl9uYW1lOworKyAgY29uc3QgY2hhciAqb3JpZ19u YW1lLCAqdmVyc2lvbl9zdHJpbmc7CisrICBjaGFyICphdHRyX3N0ciwgKmFzc2VtYmxlcl9uYW1l OworIAorICAgaWYgKERFQ0xfREVDTEFSRURfSU5MSU5FX1AgKGRlY2wpCisgICAgICAgJiYgbG9v a3VwX2F0dHJpYnV0ZSAoImdudV9pbmxpbmUiLAorQEAgLTI5MDM0LDkgKzI5MDY2LDExIEBAIGl4 ODZfbWFuZ2xlX2Z1bmN0aW9uX3ZlcnNpb25fYXNzZW1ibGVyX24KKyAgIHZlcnNpb25fc3RyaW5n CisgICAgID0gVFJFRV9TVFJJTkdfUE9JTlRFUiAoVFJFRV9WQUxVRSAoVFJFRV9WQUxVRSAodmVy c2lvbl9hdHRyKSkpOworIAorLSAgYXR0cl9zdHIgPSBzb3J0ZWRfYXR0cl9zdHJpbmcgKHZlcnNp b25fc3RyaW5nKTsKKy0gIGFzc2VtYmxlcl9uYW1lID0gKGNoYXIgKikgeG1hbGxvYyAoc3RybGVu IChvcmlnX25hbWUpCistCQkJCSAgICAgKyBzdHJsZW4gKGF0dHJfc3RyKSArIDIpOworKyAgaWYg KHN0cmNtcCAodmVyc2lvbl9zdHJpbmcsICJkZWZhdWx0IikgPT0gMCkKKysgICAgcmV0dXJuIGlk OworKworKyAgYXR0cl9zdHIgPSBzb3J0ZWRfYXR0cl9zdHJpbmcgKFRSRUVfVkFMVUUgKHZlcnNp b25fYXR0cikpOworKyAgYXNzZW1ibGVyX25hbWUgPSBYTkVXVkVDIChjaGFyLCBzdHJsZW4gKG9y aWdfbmFtZSkgKyBzdHJsZW4gKGF0dHJfc3RyKSArIDIpOworIAorICAgc3ByaW50ZiAoYXNzZW1i bGVyX25hbWUsICIlcy4lcyIsIG9yaWdfbmFtZSwgYXR0cl9zdHIpOworIAorQEAgLTI5MDQ0LDcg KzI5MDc4LDEwIEBAIGl4ODZfbWFuZ2xlX2Z1bmN0aW9uX3ZlcnNpb25fYXNzZW1ibGVyX24KKyAg IGlmIChERUNMX0FTU0VNQkxFUl9OQU1FX1NFVF9QIChkZWNsKSkKKyAgICAgU0VUX0RFQ0xfUlRM IChkZWNsLCBOVUxMKTsKKyAKKy0gIHJldHVybiBnZXRfaWRlbnRpZmllciAoYXNzZW1ibGVyX25h bWUpOworKyAgdHJlZSByZXQgPSBnZXRfaWRlbnRpZmllciAoYXNzZW1ibGVyX25hbWUpOworKyAg WERFTEVURVZFQyAoYXR0cl9zdHIpOworKyAgWERFTEVURVZFQyAoYXNzZW1ibGVyX25hbWUpOwor KyAgcmV0dXJuIHJldDsKKyB9CisgCisgLyogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYg Rk4xIGFuZCBGTjIgYXJlIHZlcnNpb25zIG9mIHRoZSBzYW1lIGZ1bmN0aW9uLAorQEAgLTI5MDU1 LDEwICsyOTA5Miw5IEBAIHN0YXRpYyBib29sCisgaXg4Nl9mdW5jdGlvbl92ZXJzaW9ucyAodHJl ZSBmbjEsIHRyZWUgZm4yKQorIHsKKyAgIHRyZWUgYXR0cjEsIGF0dHIyOworLSAgY29uc3QgY2hh ciAqYXR0cl9zdHIxLCAqYXR0cl9zdHIyOworICAgY2hhciAqdGFyZ2V0MSwgKnRhcmdldDI7Cisg ICBib29sIHJlc3VsdDsKKy0gIAorKworICAgaWYgKFRSRUVfQ09ERSAoZm4xKSAhPSBGVU5DVElP Tl9ERUNMCisgICAgICAgfHwgVFJFRV9DT0RFIChmbjIpICE9IEZVTkNUSU9OX0RFQ0wpCisgICAg IHJldHVybiBmYWxzZTsKK0BAIC0yOTA3MCwxNSArMjkxMDYsMzUgQEAgaXg4Nl9mdW5jdGlvbl92 ZXJzaW9ucyAodHJlZSBmbjEsIHRyZWUgZgorICAgaWYgKGF0dHIxID09IE5VTExfVFJFRSAmJiBh dHRyMiA9PSBOVUxMX1RSRUUpCisgICAgIHJldHVybiBmYWxzZTsKKyAKKy0gIC8qIElmIG9uZSBm dW5jdGlvbiBkb2VzIG5vdCBoYXZlIGEgdGFyZ2V0IGF0dHJpYnV0ZSwgdGhlc2UgYXJlIHZlcnNp b25zLiAgKi8KKysgIC8qIERpYWdub3NlIG1pc3NpbmcgdGFyZ2V0IGF0dHJpYnV0ZSBpZiBvbmUg b2YgdGhlIGRlY2xzIGlzIGFscmVhZHkKKysgICAgIG11bHRpLXZlcnNpb25lZC4gICovCisgICBp ZiAoYXR0cjEgPT0gTlVMTF9UUkVFIHx8IGF0dHIyID09IE5VTExfVFJFRSkKKy0gICAgcmV0dXJu IHRydWU7CistCistICBhdHRyX3N0cjEgPSAgVFJFRV9TVFJJTkdfUE9JTlRFUiAoVFJFRV9WQUxV RSAoVFJFRV9WQUxVRSAoYXR0cjEpKSk7CistICBhdHRyX3N0cjIgPSAgVFJFRV9TVFJJTkdfUE9J TlRFUiAoVFJFRV9WQUxVRSAoVFJFRV9WQUxVRSAoYXR0cjIpKSk7CisrICAgIHsKKysgICAgICBp ZiAoREVDTF9GVU5DVElPTl9WRVJTSU9ORUQgKGZuMSkgfHwgREVDTF9GVU5DVElPTl9WRVJTSU9O RUQgKGZuMikpCisrCXsKKysJICBpZiAoYXR0cjIgIT0gTlVMTF9UUkVFKQorKwkgICAgeworKwkg ICAgICB0cmVlIHRlbSA9IGZuMTsKKysJICAgICAgZm4xID0gZm4yOworKwkgICAgICBmbjIgPSB0 ZW07CisrCSAgICAgIGF0dHIxID0gYXR0cjI7CisrCSAgICB9CisrCSAgZXJyb3JfYXQgKERFQ0xf U09VUkNFX0xPQ0FUSU9OIChmbjIpLAorKwkJICAgICJtaXNzaW5nICU8dGFyZ2V0JT4gYXR0cmli dXRlIGZvciBtdWx0aS12ZXJzaW9uZWQgJUQiLAorKwkJICAgIGZuMik7CisrCSAgZXJyb3JfYXQg KERFQ0xfU09VUkNFX0xPQ0FUSU9OIChmbjEpLAorKwkJICAgICJwcmV2aW91cyBkZWNsYXJhdGlv biBvZiAlRCIsIGZuMSk7CisrCSAgLyogUHJldmVudCBkaWFnbm9zaW5nIG9mIHRoZSBzYW1lIGVy cm9yIG11bHRpcGxlIHRpbWVzLiAgKi8KKysJICBERUNMX0FUVFJJQlVURVMgKGZuMikKKysJICAg ID0gdHJlZV9jb25zIChnZXRfaWRlbnRpZmllciAoInRhcmdldCIpLAorKwkJCSBjb3B5X25vZGUg KFRSRUVfVkFMVUUgKGF0dHIxKSksCisrCQkJIERFQ0xfQVRUUklCVVRFUyAoZm4yKSk7CisrCX0K KysgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKyAKKy0gIHRhcmdldDEgPSBzb3J0ZWRfYXR0 cl9zdHJpbmcgKGF0dHJfc3RyMSk7CistICB0YXJnZXQyID0gc29ydGVkX2F0dHJfc3RyaW5nIChh dHRyX3N0cjIpOworKyAgdGFyZ2V0MSA9IHNvcnRlZF9hdHRyX3N0cmluZyAoVFJFRV9WQUxVRSAo YXR0cjEpKTsKKysgIHRhcmdldDIgPSBzb3J0ZWRfYXR0cl9zdHJpbmcgKFRSRUVfVkFMVUUgKGF0 dHIyKSk7CisgCisgICAvKiBUaGUgc29ydGVkIHRhcmdldCBzdHJpbmdzIG11c3QgYmUgZGlmZmVy ZW50IGZvciBmbjEgYW5kIGZuMgorICAgICAgdG8gYmUgdmVyc2lvbnMuICAqLworQEAgLTI5MDg3 LDIwICsyOTE0MywxMiBAQCBpeDg2X2Z1bmN0aW9uX3ZlcnNpb25zICh0cmVlIGZuMSwgdHJlZSBm CisgICBlbHNlCisgICAgIHJlc3VsdCA9IHRydWU7CisgCistICBmcmVlICh0YXJnZXQxKTsKKy0g IGZyZWUgKHRhcmdldDIpOyAKKysgIFhERUxFVEVWRUMgKHRhcmdldDEpOworKyAgWERFTEVURVZF QyAodGFyZ2V0Mik7IAorICAgCisgICByZXR1cm4gcmVzdWx0OworIH0KKyAKKy0vKiBUaGlzIHRh cmdldCBzdXBwb3J0cyBmdW5jdGlvbiBtdWx0aXZlcnNpb25pbmcuICAqLworLQorLXN0YXRpYyBi b29sCistaXg4Nl9zdXBwb3J0c19mdW5jdGlvbl92ZXJzaW9ucyAodm9pZCkKKy17CistICByZXR1 cm4gdHJ1ZTsKKy19CistCisgc3RhdGljIHRyZWUgCisgaXg4Nl9tYW5nbGVfZGVjbF9hc3NlbWJs ZXJfbmFtZSAodHJlZSBkZWNsLCB0cmVlIGlkKQorIHsKK0BAIC0yOTE0MSwxMCArMjkxODksMTAg QEAgbWFrZV9uYW1lICh0cmVlIGRlY2wsIGNvbnN0IGNoYXIgKnN1ZmZpeAorIAorICAgLyogVXNl ICcuJyB0byBjb25jYXRlbmF0ZSBuYW1lcyBhcyBpdCBpcyBkZW1hbmdsZXIgZnJpZW5kbHkuICAq LworICAgaWYgKG1ha2VfdW5pcXVlKQorLSAgICAgIHNucHJpbnRmIChnbG9iYWxfdmFyX25hbWUs IG5hbWVfbGVuLCAiJXMuJXMuJXMiLCBuYW1lLAorLQkJdW5pcXVlX25hbWUsIHN1ZmZpeCk7Cisr ICAgIHNucHJpbnRmIChnbG9iYWxfdmFyX25hbWUsIG5hbWVfbGVuLCAiJXMuJXMuJXMiLCBuYW1l LCB1bmlxdWVfbmFtZSwKKysJICAgICAgc3VmZml4KTsKKyAgIGVsc2UKKy0gICAgICBzbnByaW50 ZiAoZ2xvYmFsX3Zhcl9uYW1lLCBuYW1lX2xlbiwgIiVzLiVzIiwgbmFtZSwgc3VmZml4KTsKKysg ICAgc25wcmludGYgKGdsb2JhbF92YXJfbmFtZSwgbmFtZV9sZW4sICIlcy4lcyIsIG5hbWUsIHN1 ZmZpeCk7CisgCisgICByZXR1cm4gZ2xvYmFsX3Zhcl9uYW1lOworIH0KK0BAIC0yOTE1OSw3ICsy OTIwNyw3IEBAIHN0YXRpYyB0cmVlCisgbWFrZV9kaXNwYXRjaGVyX2RlY2wgKGNvbnN0IHRyZWUg ZGVjbCkKKyB7CisgICB0cmVlIGZ1bmNfZGVjbDsKKy0gIGNoYXIgKmZ1bmNfbmFtZSwgKnJlc29s dmVyX25hbWU7CisrICBjaGFyICpmdW5jX25hbWU7CisgICB0cmVlIGZuX3R5cGUsIGZ1bmNfdHlw ZTsKKyAgIGJvb2wgaXNfdW5pcSA9IGZhbHNlOworIAorQEAgLTI5MTY3LDE0ICsyOTIxNSwxMyBA QCBtYWtlX2Rpc3BhdGNoZXJfZGVjbCAoY29uc3QgdHJlZSBkZWNsKQorICAgICBpc191bmlxID0g dHJ1ZTsKKyAKKyAgIGZ1bmNfbmFtZSA9IG1ha2VfbmFtZSAoZGVjbCwgImlmdW5jIiwgaXNfdW5p cSk7CistICByZXNvbHZlcl9uYW1lID0gbWFrZV9uYW1lIChkZWNsLCAicmVzb2x2ZXIiLCBpc191 bmlxKTsKKy0gIGdjY19hc3NlcnQgKHJlc29sdmVyX25hbWUpOworIAorICAgZm5fdHlwZSA9IFRS RUVfVFlQRSAoZGVjbCk7CisgICBmdW5jX3R5cGUgPSBidWlsZF9mdW5jdGlvbl90eXBlIChUUkVF X1RZUEUgKGZuX3R5cGUpLAorIAkJCQkgICBUWVBFX0FSR19UWVBFUyAoZm5fdHlwZSkpOworICAg CisgICBmdW5jX2RlY2wgPSBidWlsZF9mbl9kZWNsIChmdW5jX25hbWUsIGZ1bmNfdHlwZSk7Cisr ICBYREVMRVRFVkVDIChmdW5jX25hbWUpOworICAgVFJFRV9VU0VEIChmdW5jX2RlY2wpID0gMTsK KyAgIERFQ0xfQ09OVEVYVCAoZnVuY19kZWNsKSA9IE5VTExfVFJFRTsKKyAgIERFQ0xfSU5JVElB TCAoZnVuY19kZWNsKSA9IGVycm9yX21hcmtfbm9kZTsKK0BAIC0yOTE5Niw5ICsyOTI0MywxNCBA QCBtYWtlX2Rpc3BhdGNoZXJfZGVjbCAoY29uc3QgdHJlZSBkZWNsKQorIHN0YXRpYyBib29sCisg aXNfZnVuY3Rpb25fZGVmYXVsdF92ZXJzaW9uIChjb25zdCB0cmVlIGRlY2wpCisgeworLSAgcmV0 dXJuIChUUkVFX0NPREUgKGRlY2wpID09IEZVTkNUSU9OX0RFQ0wKKy0JICAmJiBERUNMX0ZVTkNU SU9OX1ZFUlNJT05FRCAoZGVjbCkKKy0JICAmJiBsb29rdXBfYXR0cmlidXRlICgidGFyZ2V0Iiwg REVDTF9BVFRSSUJVVEVTIChkZWNsKSkgPT0gTlVMTF9UUkVFKTsKKysgIGlmIChUUkVFX0NPREUg KGRlY2wpICE9IEZVTkNUSU9OX0RFQ0wKKysgICAgICB8fCAhREVDTF9GVU5DVElPTl9WRVJTSU9O RUQgKGRlY2wpKQorKyAgICByZXR1cm4gZmFsc2U7CisrICB0cmVlIGF0dHIgPSBsb29rdXBfYXR0 cmlidXRlICgidGFyZ2V0IiwgREVDTF9BVFRSSUJVVEVTIChkZWNsKSk7CisrICBnY2NfYXNzZXJ0 IChhdHRyKTsKKysgIGF0dHIgPSBUUkVFX1ZBTFVFIChUUkVFX1ZBTFVFIChhdHRyKSk7CisrICBy ZXR1cm4gKFRSRUVfQ09ERSAoYXR0cikgPT0gU1RSSU5HX0NTVAorKwkgICYmIHN0cmNtcCAoVFJF RV9TVFJJTkdfUE9JTlRFUiAoYXR0ciksICJkZWZhdWx0IikgPT0gMCk7CisgfQorIAorIC8qIE1h a2UgYSBkaXNwYXRjaGVyIGRlY2xhcmF0aW9uIGZvciB0aGUgbXVsdGktdmVyc2lvbmVkIGZ1bmN0 aW9uIERFQ0wuCitAQCAtMjkzOTIsNiArMjk0NDQsNyBAQCBtYWtlX3Jlc29sdmVyX2Z1bmMgKGNv bnN0IHRyZWUgZGVmYXVsdF9kCisgICAvKiBDcmVhdGUgdGhlIGFsaWFzIGZvciBkaXNwYXRjaCB0 byByZXNvbHZlciBoZXJlLiAgKi8KKyAgIC8qY2dyYXBoX2NyZWF0ZV9mdW5jdGlvbl9hbGlhcyAo ZGlzcGF0Y2hfZGVjbCwgZGVjbCk7Ki8KKyAgIGNncmFwaF9zYW1lX2JvZHlfYWxpYXMgKE5VTEws IGRpc3BhdGNoX2RlY2wsIGRlY2wpOworKyAgWERFTEVURVZFQyAocmVzb2x2ZXJfbmFtZSk7Cisg ICByZXR1cm4gZGVjbDsKKyB9CisgCitAQCAtMjk0NTMsNyArMjk1MDYsNyBAQCBpeDg2X2dlbmVy YXRlX3ZlcnNpb25fZGlzcGF0Y2hlcl9ib2R5ICh2CisgICAgIH0KKyAKKyAgIGRpc3BhdGNoX2Z1 bmN0aW9uX3ZlcnNpb25zIChyZXNvbHZlcl9kZWNsLCAmZm5fdmVyX3ZlYywgJmVtcHR5X2JiKTsK Ky0KKysgIGZuX3Zlcl92ZWMucmVsZWFzZSAoKTsKKyAgIHJlYnVpbGRfY2dyYXBoX2VkZ2VzICgp OyAKKyAgIHBvcF9jZnVuICgpOworICAgcmV0dXJuIHJlc29sdmVyX2RlY2w7CitAQCAtNDI0NDEs MTAgKzQyNDk0LDYgQEAgaXg4Nl9tZW1tb2RlbF9jaGVjayAodW5zaWduZWQgSE9TVF9XSURFXwor ICN1bmRlZiBUQVJHRVRfT1BUSU9OX0ZVTkNUSU9OX1ZFUlNJT05TCisgI2RlZmluZSBUQVJHRVRf T1BUSU9OX0ZVTkNUSU9OX1ZFUlNJT05TIGl4ODZfZnVuY3Rpb25fdmVyc2lvbnMKKyAKKy0jdW5k ZWYgVEFSR0VUX09QVElPTl9TVVBQT1JUU19GVU5DVElPTl9WRVJTSU9OUworLSNkZWZpbmUgVEFS R0VUX09QVElPTl9TVVBQT1JUU19GVU5DVElPTl9WRVJTSU9OUyBcCistICBpeDg2X3N1cHBvcnRz X2Z1bmN0aW9uX3ZlcnNpb25zCistCisgI3VuZGVmIFRBUkdFVF9DQU5fSU5MSU5FX1AKKyAjZGVm aW5lIFRBUkdFVF9DQU5fSU5MSU5FX1AgaXg4Nl9jYW5faW5saW5lX3AKKyAKKy0tLSBnY2MvdGFy Z2V0LmRlZi5qagkyMDEzLTAxLTExIDA5OjAyOjMyLjAwMDAwMDAwMCArMDEwMAorKysrIGdjYy90 YXJnZXQuZGVmCTIwMTMtMDEtMjEgMTE6MjU6MjkuMTQ1MTI0NzAyICswMTAwCitAQCAtMjgzMSwx NCArMjgzMSw2IEBAIERFRkhPT0sKKyAgYm9vbCwgKHRyZWUgZGVjbDEsIHRyZWUgZGVjbDIpLAor ICBob29rX2Jvb2xfdHJlZV90cmVlX2ZhbHNlKQorIAorLS8qIFRoaXMgZnVuY3Rpb24gcmV0dXJu cyB0cnVlIGlmIHRoZSB0YXJnZXQgc3VwcG9ydHMgZnVuY3Rpb24KKy0gICBtdWx0aXZlcnNpb25p bmcuICAqLworLURFRkhPT0sKKy0oc3VwcG9ydHNfZnVuY3Rpb25fdmVyc2lvbnMsCistICIiLAor LSBib29sLCAodm9pZCksCistIGhvb2tfYm9vbF92b2lkX2ZhbHNlKQorLQorIC8qIEZ1bmN0aW9u IHRvIGRldGVybWluZSBpZiBvbmUgZnVuY3Rpb24gY2FuIGlubGluZSBhbm90aGVyIGZ1bmN0aW9u LiAgKi8KKyAjdW5kZWYgSE9PS19QUkVGSVgKKyAjZGVmaW5lIEhPT0tfUFJFRklYICJUQVJHRVRf IgorLS0tIGdjYy9kb2MvdG0udGV4aS5pbi5qagkyMDEzLTAxLTExIDA5OjAyOjI2LjAwMDAwMDAw MCArMDEwMAorKysrIGdjYy9kb2MvdG0udGV4aS5pbgkyMDEzLTAxLTIxIDExOjI1OjU3Ljc4OTk2 MjU4NCArMDEwMAorQEAgLTk3NjgsMTEgKzk3NjgsNiBAQCBkaWZmZXJlbnQgdGFyZ2V0IHNwZWNp ZmljIGF0dHJpYnV0ZXMsIHRoCisgZGlmZmVyZW50IHRhcmdldCBtYWNoaW5lcy4KKyBAZW5kIGRl ZnR5cGVmbgorIAorLUBob29rIFRBUkdFVF9PUFRJT05fU1VQUE9SVFNfRlVOQ1RJT05fVkVSU0lP TlMKKy1UaGlzIHRhcmdldCBob29rIHJldHVybnMgQGNvZGV7dHJ1ZX0gaWYgdGhlIHRhcmdldCBz dXBwb3J0cyBmdW5jdGlvbgorLW11bHRpdmVyc2lvbmluZy4KKy1AZW5kIGRlZnR5cGVmbgorLQor IEBob29rIFRBUkdFVF9DQU5fSU5MSU5FX1AKKyBUaGlzIHRhcmdldCBob29rIHJldHVybnMgQGNv ZGV7ZmFsc2V9IGlmIHRoZSBAdmFye2NhbGxlcn0gZnVuY3Rpb24KKyBjYW5ub3QgaW5saW5lIEB2 YXJ7Y2FsbGVlfSwgYmFzZWQgb24gdGFyZ2V0IHNwZWNpZmljIGluZm9ybWF0aW9uLiAgQnkKKy0t LSBnY2MvZG9jL3RtLnRleGkuamoJMjAxMy0wMS0xMSAwOTowMjoyNi4wMDAwMDAwMDAgKzAxMDAK KysrKyBnY2MvZG9jL3RtLnRleGkJMjAxMy0wMS0yMSAxMToyNjowOC42NDc4OTcwMTQgKzAxMDAK K0BAIC05OTA3LDExICs5OTA3LDYgQEAgZGlmZmVyZW50IHRhcmdldCBzcGVjaWZpYyBhdHRyaWJ1 dGVzLCB0aAorIGRpZmZlcmVudCB0YXJnZXQgbWFjaGluZXMuCisgQGVuZCBkZWZ0eXBlZm4KKyAK Ky1AZGVmdHlwZWZuIHtUYXJnZXQgSG9va30gYm9vbCBUQVJHRVRfT1BUSU9OX1NVUFBPUlRTX0ZV TkNUSU9OX1ZFUlNJT05TICh2b2lkKQorLVRoaXMgdGFyZ2V0IGhvb2sgcmV0dXJucyBAY29kZXt0 cnVlfSBpZiB0aGUgdGFyZ2V0IHN1cHBvcnRzIGZ1bmN0aW9uCistbXVsdGl2ZXJzaW9uaW5nLgor LUBlbmQgZGVmdHlwZWZuCistCisgQGRlZnR5cGVmbiB7VGFyZ2V0IEhvb2t9IGJvb2wgVEFSR0VU X0NBTl9JTkxJTkVfUCAodHJlZSBAdmFye2NhbGxlcn0sIHRyZWUgQHZhcntjYWxsZWV9KQorIFRo aXMgdGFyZ2V0IGhvb2sgcmV0dXJucyBAY29kZXtmYWxzZX0gaWYgdGhlIEB2YXJ7Y2FsbGVyfSBm dW5jdGlvbgorIGNhbm5vdCBpbmxpbmUgQHZhcntjYWxsZWV9LCBiYXNlZCBvbiB0YXJnZXQgc3Bl Y2lmaWMgaW5mb3JtYXRpb24uICBCeQorLS0tIGdjYy9jLWZhbWlseS9jLWNvbW1vbi5jLmpqCTIw MTMtMDEtMjEgMTA6NTY6NTUuMTY1MDE0NjkzICswMTAwCisrKysgZ2NjL2MtZmFtaWx5L2MtY29t bW9uLmMJMjAxMy0wMS0yMSAxMDo1OTowNC4zMDUyODUwMzggKzAxMDAKK0BAIC04NzU5LDEyICs4 NzU5LDggQEAgaGFuZGxlX3RhcmdldF9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZQorICAgICAg IHdhcm5pbmcgKE9QVF9XYXR0cmlidXRlcywgIiVxRSBhdHRyaWJ1dGUgaWdub3JlZCIsIG5hbWUp OworICAgICAgICpub19hZGRfYXR0cnMgPSB0cnVlOworICAgICB9CistICAvKiBEbyBub3Qgc3Ry aXAgaW52YWxpZCB0YXJnZXQgYXR0cmlidXRlcyBmb3IgdGFyZ2V0cyB3aGljaCBzdXBwb3J0IGZ1 bmN0aW9uCistICAgICBtdWx0aXZlcnNpb25pbmcgYXMgdGhlIHRhcmdldCBzdHJpbmcgaXMgdXNl ZCB0byBkZXRlcm1pbmUgdmVyc2lvbmVkCistICAgICBmdW5jdGlvbnMuICAqLworICAgZWxzZSBp ZiAoISB0YXJnZXRtLnRhcmdldF9vcHRpb24udmFsaWRfYXR0cmlidXRlX3AgKCpub2RlLCBuYW1l LCBhcmdzLAorLQkJCQkJCSAgICAgIGZsYWdzKQorLQkgICAmJiAhIHRhcmdldG0udGFyZ2V0X29w dGlvbi5zdXBwb3J0c19mdW5jdGlvbl92ZXJzaW9ucyAoKSkKKysJCQkJCQkgICAgICBmbGFncykp CisgICAgICpub19hZGRfYXR0cnMgPSB0cnVlOworIAorICAgcmV0dXJuIE5VTExfVFJFRTsKKy0t LSBnY2MvdGVzdHN1aXRlL2crKy5kZy9tdjEuQy5qagkyMDEzLTAxLTIxIDEwOjU2OjU0LjU2NDAx NzgxNSArMDEwMAorKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL212MS5DCTIwMTMtMDEtMjEgMTE6 MzU6NDIuMjYwNjg0NTA4ICswMTAwCitAQCAtMSwxMzAgKzAsMCBAQAorLS8qIFRlc3QgY2FzZSB0 byBjaGVjayBpZiBNdWx0aXZlcnNpb25pbmcgd29ya3MuICAqLworLS8qIHsgZGctZG8gcnVuIHsg dGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCistLyogeyBkZy1yZXF1aXJlLWlmdW5j ICIiIH0gICovCistLyogeyBkZy1vcHRpb25zICItTzIgLWZQSUMiIH0gKi8KKy0KKy0jaW5jbHVk ZSA8YXNzZXJ0Lmg+CistCistLyogRGVmYXVsdCB2ZXJzaW9uLiAgKi8KKy1pbnQgZm9vICgpOwor LS8qIFRoZSBvdGhlciB2ZXJzaW9ucyBvZiBmb28uICBNaXggdXAgdGhlIG9yZGVyaW5nIGFuZCAK Ky0gICBjaGVjayBpZiB0aGUgZGlzcGF0Y2hpbmcgZG9lcyBpdCBpbiB0aGUgb3JkZXIgb2YgcHJp b3JpdHkuICovCistLyogQ2hlY2sgY29tYmluYXRpb24gb2YgdGFyZ2V0IGF0dHJpYnV0ZXMuICAq LworLWludCBmb28gKCkgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgiYXJjaD1jb3JlaTcscG9wY250 IikpKTsKKy0vKiBUaGUgdGFyZ2V0IG9wZXJhbmRzIGluIHRoaXMgZGVjbGFyYXRpb24gYW5kIHRo ZSBkZWZpbml0aW9uIGFyZSByZS1vcmRlcmVkLgorLSAgIFRoaXMgc2hvdWxkIHN0aWxsIHdvcmsu ICAqLworLWludCBmb28gKCkgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgic3NzZTMsYXZ4MiIpKSk7 CistCistLyogQ2hlY2sgZm9yIGFsbCB0YXJnZXQgYXR0cmlidXRlcyBmb3Igd2hpY2ggZGlzcGF0 Y2hlcnMgYXJlIGF2YWlsYWJsZS4gICovCistLyogQ2hlY2sgYXJjaD0gKi8KKy1pbnQgZm9vICgp IF9fYXR0cmlidXRlX18oKHRhcmdldCgiYXJjaD1jb3JlMiIpKSk7CistaW50IGZvbyAoKSBfX2F0 dHJpYnV0ZV9fKCh0YXJnZXQoImFyY2g9Y29yZWk3IikpKTsKKy1pbnQgZm9vICgpIF9fYXR0cmli dXRlX18oKHRhcmdldCgiYXJjaD1hdG9tIikpKTsKKy0vKiBDaGVjayBJU0FzICAqLworLWludCBm b28gKCkgX19hdHRyaWJ1dGVfXygodGFyZ2V0KCJhdngiKSkpOworLWludCBmb28gKCkgX19hdHRy aWJ1dGVfXyAoKHRhcmdldCgiYXJjaD1jb3JlMixzc2U0LjIiKSkpOworLS8qIENoZWNrIG1vcmUg YXJjaD0uICAqLworLWludCBmb28gKCkgX19hdHRyaWJ1dGVfXygodGFyZ2V0KCJhcmNoPWFtZGZh bTEwIikpKTsKKy1pbnQgZm9vICgpIF9fYXR0cmlidXRlX18oKHRhcmdldCgiYXJjaD1iZHZlcjEi KSkpOworLWludCBmb28gKCkgX19hdHRyaWJ1dGVfXygodGFyZ2V0KCJhcmNoPWJkdmVyMiIpKSk7 CistCistaW50ICgqcCkoKSA9ICZmb287CistaW50IG1haW4gKCkKKy17CistICBpbnQgdmFsID0g Zm9vICgpOworLSAgYXNzZXJ0ICh2YWwgPT0gICgqcCkoKSk7CistCistICAvKiBDaGVjayBpbiB0 aGUgZXhhY3Qgc2FtZSBvcmRlciBpbiB3aGljaCB0aGUgZGlzcGF0Y2hpbmcKKy0gICAgIGlzIGV4 cGVjdGVkIHRvIGhhcHBlbi4gICovCistICBpZiAoX19idWlsdGluX2NwdV9pcyAoImJkdmVyMSIp KQorLSAgICBhc3NlcnQgKHZhbCA9PSAxKTsKKy0gIGVsc2UgaWYgKF9fYnVpbHRpbl9jcHVfaXMg KCJiZHZlcjIiKSkKKy0gICAgYXNzZXJ0ICh2YWwgPT0gMik7CistICBlbHNlIGlmIChfX2J1aWx0 aW5fY3B1X3N1cHBvcnRzICgiYXZ4MiIpCistCSAgICYmIF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMg KCJzc3NlMyIpKQorLSAgICBhc3NlcnQgKHZhbCA9PSAzKTsKKy0gIGVsc2UgaWYgKF9fYnVpbHRp bl9jcHVfc3VwcG9ydHMgKCJhdngiKSkKKy0gICAgYXNzZXJ0ICh2YWwgPT0gNCk7CistICBlbHNl IGlmIChfX2J1aWx0aW5fY3B1X2lzICgiY29yZWk3IikKKy0JICAgJiYgX19idWlsdGluX2NwdV9z dXBwb3J0cyAoInBvcGNudCIpKQorLSAgICBhc3NlcnQgKHZhbCA9PSA1KTsKKy0gIGVsc2UgaWYg KF9fYnVpbHRpbl9jcHVfaXMgKCJjb3JlaTciKSkKKy0gICAgYXNzZXJ0ICh2YWwgPT0gNik7Cist ICBlbHNlIGlmIChfX2J1aWx0aW5fY3B1X2lzICgiYW1kZmFtMTBoIikpCistICAgIGFzc2VydCAo dmFsID09IDcpOworLSAgZWxzZSBpZiAoX19idWlsdGluX2NwdV9pcyAoImNvcmUyIikKKy0JICAg JiYgX19idWlsdGluX2NwdV9zdXBwb3J0cyAoInNzZTQuMiIpKQorLSAgICBhc3NlcnQgKHZhbCA9 PSA4KTsKKy0gIGVsc2UgaWYgKF9fYnVpbHRpbl9jcHVfaXMgKCJjb3JlMiIpKQorLSAgICBhc3Nl cnQgKHZhbCA9PSA5KTsKKy0gIGVsc2UgaWYgKF9fYnVpbHRpbl9jcHVfaXMgKCJhdG9tIikpCist ICAgIGFzc2VydCAodmFsID09IDEwKTsKKy0gIGVsc2UKKy0gICAgYXNzZXJ0ICh2YWwgPT0gMCk7 CistICAKKy0gIHJldHVybiAwOworLX0KKy0KKy1pbnQgZm9vICgpCisteworLSAgcmV0dXJuIDA7 CistfQorLQorLWludCBfX2F0dHJpYnV0ZV9fICgodGFyZ2V0KCJhcmNoPWNvcmVpNyxwb3BjbnQi KSkpCistZm9vICgpCisteworLSAgcmV0dXJuIDU7CistfQorLWludCBfX2F0dHJpYnV0ZV9fICgo dGFyZ2V0KCJhdngyLHNzc2UzIikpKQorLWZvbyAoKQorLXsKKy0gIHJldHVybiAzOworLX0KKy0K Ky1pbnQgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgiYXJjaD1jb3JlMiIpKSkKKy1mb28gKCkKKy17 CistICByZXR1cm4gOTsKKy19CistCistaW50IF9fYXR0cmlidXRlX18gKCh0YXJnZXQoImFyY2g9 Y29yZWk3IikpKQorLWZvbyAoKQorLXsKKy0gIHJldHVybiA2OworLX0KKy0KKy1pbnQgX19hdHRy aWJ1dGVfXyAoKHRhcmdldCgiYXJjaD1hdG9tIikpKQorLWZvbyAoKQorLXsKKy0gIHJldHVybiAx MDsKKy19CistCistaW50IF9fYXR0cmlidXRlX18gKCh0YXJnZXQoImF2eCIpKSkKKy1mb28gKCkK Ky17CistICByZXR1cm4gNDsKKy19CistCistaW50IF9fYXR0cmlidXRlX18gKCh0YXJnZXQoImFy Y2g9Y29yZTIsc3NlNC4yIikpKQorLWZvbyAoKQorLXsKKy0gIHJldHVybiA4OworLX0KKy0KKy1p bnQgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgiYXJjaD1hbWRmYW0xMCIpKSkKKy1mb28gKCkKKy17 CistICByZXR1cm4gNzsKKy19CistCistaW50IF9fYXR0cmlidXRlX18gKCh0YXJnZXQoImFyY2g9 YmR2ZXIxIikpKQorLWZvbyAoKQorLXsKKy0gIHJldHVybiAxOworLX0KKy0KKy1pbnQgX19hdHRy aWJ1dGVfXyAoKHRhcmdldCgiYXJjaD1iZHZlcjIiKSkpCistZm9vICgpCisteworLSAgcmV0dXJu IDI7CistfQorLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9tdjEuQy5qagkyMDEzLTAxLTIx IDExOjM2OjE2LjA4NDQ5MTE3NSArMDEwMAorKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9t djEuQwkyMDEzLTAxLTIxIDExOjQyOjUyLjk3NTMxNTcxOCArMDEwMAorQEAgLTAsMCArMSwxMzIg QEAKKysvKiBUZXN0IGNhc2UgdG8gY2hlY2sgaWYgTXVsdGl2ZXJzaW9uaW5nIHdvcmtzLiAgKi8K KysvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworKy8q IHsgZGctcmVxdWlyZS1pZnVuYyAiIiB9ICAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mUElD IiB9ICovCisrCisrI2luY2x1ZGUgPGFzc2VydC5oPgorKworKy8qIERlZmF1bHQgdmVyc2lvbi4g ICovCisraW50IGZvbyAoKTsgLy8gRXh0cmEgZGVjbGFyYXRpb24gdGhhdCBpcyBtZXJnZWQgd2l0 aCB0aGUgc2Vjb25kIG9uZS4KKytpbnQgZm9vICgpIF9fYXR0cmlidXRlX18gKCh0YXJnZXQoImRl ZmF1bHQiKSkpOworKy8qIFRoZSBvdGhlciB2ZXJzaW9ucyBvZiBmb28uICBNaXggdXAgdGhlIG9y ZGVyaW5nIGFuZCAKKysgICBjaGVjayBpZiB0aGUgZGlzcGF0Y2hpbmcgZG9lcyBpdCBpbiB0aGUg b3JkZXIgb2YgcHJpb3JpdHkuICovCisrLyogQ2hlY2sgY29tYmluYXRpb24gb2YgdGFyZ2V0IGF0 dHJpYnV0ZXMuICAqLworK2ludCBmb28gKCkgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgiYXJjaD1j b3JlaTcscG9wY250IikpKTsKKysvKiBUaGUgdGFyZ2V0IG9wZXJhbmRzIGluIHRoaXMgZGVjbGFy YXRpb24gYW5kIHRoZSBkZWZpbml0aW9uIGFyZSByZS1vcmRlcmVkLgorKyAgIFRoaXMgc2hvdWxk IHN0aWxsIHdvcmsuICAqLworK2ludCBmb28gKCkgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgic3Nz ZTMsYXZ4MiIpKSk7CisrCisrLyogQ2hlY2sgZm9yIGFsbCB0YXJnZXQgYXR0cmlidXRlcyBmb3Ig d2hpY2ggZGlzcGF0Y2hlcnMgYXJlIGF2YWlsYWJsZS4gICovCisrLyogQ2hlY2sgYXJjaD0gKi8K KytpbnQgZm9vICgpIF9fYXR0cmlidXRlX18oKHRhcmdldCgiYXJjaD1jb3JlMiIpKSk7CisraW50 IGZvbyAoKSBfX2F0dHJpYnV0ZV9fKCh0YXJnZXQoImFyY2g9Y29yZWk3IikpKTsKKytpbnQgZm9v ICgpIF9fYXR0cmlidXRlX18oKHRhcmdldCgiYXJjaD1hdG9tIikpKTsKKysvKiBDaGVjayBJU0Fz ICAqLworK2ludCBmb28gKCkgX19hdHRyaWJ1dGVfXygodGFyZ2V0KCJhdngiKSkpOworK2ludCBm b28gKCkgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgiYXJjaD1jb3JlMixzc2U0LjIiKSkpOworKy8q IENoZWNrIG1vcmUgYXJjaD0uICAqLworK2ludCBmb28gKCkgX19hdHRyaWJ1dGVfXygodGFyZ2V0 KCJhcmNoPWFtZGZhbTEwIikpKTsKKytpbnQgZm9vICgpIF9fYXR0cmlidXRlX18oKHRhcmdldCgi YXJjaD1iZHZlcjEiKSkpOworK2ludCBmb28gKCkgX19hdHRyaWJ1dGVfXygodGFyZ2V0KCJhcmNo PWJkdmVyMiIpKSk7CisrCisraW50ICgqcCkoKSA9ICZmb287CisraW50IG1haW4gKCkKKyt7Cisr ICBpbnQgdmFsID0gZm9vICgpOworKyAgYXNzZXJ0ICh2YWwgPT0gICgqcCkoKSk7CisrCisrICAv KiBDaGVjayBpbiB0aGUgZXhhY3Qgc2FtZSBvcmRlciBpbiB3aGljaCB0aGUgZGlzcGF0Y2hpbmcK KysgICAgIGlzIGV4cGVjdGVkIHRvIGhhcHBlbi4gICovCisrICBpZiAoX19idWlsdGluX2NwdV9p cyAoImJkdmVyMSIpKQorKyAgICBhc3NlcnQgKHZhbCA9PSAxKTsKKysgIGVsc2UgaWYgKF9fYnVp bHRpbl9jcHVfaXMgKCJiZHZlcjIiKSkKKysgICAgYXNzZXJ0ICh2YWwgPT0gMik7CisrICBlbHNl IGlmIChfX2J1aWx0aW5fY3B1X3N1cHBvcnRzICgiYXZ4MiIpCisrCSAgICYmIF9fYnVpbHRpbl9j cHVfc3VwcG9ydHMgKCJzc3NlMyIpKQorKyAgICBhc3NlcnQgKHZhbCA9PSAzKTsKKysgIGVsc2Ug aWYgKF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgKCJhdngiKSkKKysgICAgYXNzZXJ0ICh2YWwgPT0g NCk7CisrICBlbHNlIGlmIChfX2J1aWx0aW5fY3B1X2lzICgiY29yZWk3IikKKysJICAgJiYgX19i dWlsdGluX2NwdV9zdXBwb3J0cyAoInBvcGNudCIpKQorKyAgICBhc3NlcnQgKHZhbCA9PSA1KTsK KysgIGVsc2UgaWYgKF9fYnVpbHRpbl9jcHVfaXMgKCJjb3JlaTciKSkKKysgICAgYXNzZXJ0ICh2 YWwgPT0gNik7CisrICBlbHNlIGlmIChfX2J1aWx0aW5fY3B1X2lzICgiYW1kZmFtMTBoIikpCisr ICAgIGFzc2VydCAodmFsID09IDcpOworKyAgZWxzZSBpZiAoX19idWlsdGluX2NwdV9pcyAoImNv cmUyIikKKysJICAgJiYgX19idWlsdGluX2NwdV9zdXBwb3J0cyAoInNzZTQuMiIpKQorKyAgICBh c3NlcnQgKHZhbCA9PSA4KTsKKysgIGVsc2UgaWYgKF9fYnVpbHRpbl9jcHVfaXMgKCJjb3JlMiIp KQorKyAgICBhc3NlcnQgKHZhbCA9PSA5KTsKKysgIGVsc2UgaWYgKF9fYnVpbHRpbl9jcHVfaXMg KCJhdG9tIikpCisrICAgIGFzc2VydCAodmFsID09IDEwKTsKKysgIGVsc2UKKysgICAgYXNzZXJ0 ICh2YWwgPT0gMCk7CisrICAKKysgIHJldHVybiAwOworK30KKysKKytpbnQgX19hdHRyaWJ1dGVf XyAoKHRhcmdldCgiZGVmYXVsdCIpKSkKKytmb28gKCkKKyt7CisrICByZXR1cm4gMDsKKyt9Cisr CisraW50IF9fYXR0cmlidXRlX18gKCh0YXJnZXQoImFyY2g9Y29yZWk3LHBvcGNudCIpKSkKKytm b28gKCkKKyt7CisrICByZXR1cm4gNTsKKyt9CisraW50IF9fYXR0cmlidXRlX18gKCh0YXJnZXQo ImF2eDIsc3NzZTMiKSkpCisrZm9vICgpCisreworKyAgcmV0dXJuIDM7CisrfQorKworK2ludCBf X2F0dHJpYnV0ZV9fICgodGFyZ2V0KCJhcmNoPWNvcmUyIikpKQorK2ZvbyAoKQorK3sKKysgIHJl dHVybiA5OworK30KKysKKytpbnQgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgiYXJjaD1jb3JlaTci KSkpCisrZm9vICgpCisreworKyAgcmV0dXJuIDY7CisrfQorKworK2ludCBfX2F0dHJpYnV0ZV9f ICgodGFyZ2V0KCJhcmNoPWF0b20iKSkpCisrZm9vICgpCisreworKyAgcmV0dXJuIDEwOworK30K KysKKytpbnQgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgiYXZ4IikpKQorK2ZvbyAoKQorK3sKKysg IHJldHVybiA0OworK30KKysKKytpbnQgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgiYXJjaD1jb3Jl Mixzc2U0LjIiKSkpCisrZm9vICgpCisreworKyAgcmV0dXJuIDg7CisrfQorKworK2ludCBfX2F0 dHJpYnV0ZV9fICgodGFyZ2V0KCJhcmNoPWFtZGZhbTEwIikpKQorK2ZvbyAoKQorK3sKKysgIHJl dHVybiA3OworK30KKysKKytpbnQgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgiYXJjaD1iZHZlcjEi KSkpCisrZm9vICgpCisreworKyAgcmV0dXJuIDE7CisrfQorKworK2ludCBfX2F0dHJpYnV0ZV9f ICgodGFyZ2V0KCJhcmNoPWJkdmVyMiIpKSkKKytmb28gKCkKKyt7CisrICByZXR1cm4gMjsKKyt9 CistLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbXYyLkMuamoJMjAxMy0wMS0yMSAxMDo1Njo1NC40 NjUwMTgzNTQgKzAxMDAKKysrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9tdjIuQwkyMDEzLTAxLTIx IDExOjM1OjQ1LjA4ODY2Njc0NSArMDEwMAorQEAgLTEsMTE4ICswLDAgQEAKKy0vKiBUZXN0IGNh c2UgdG8gY2hlY2sgaWYgTXVsdGl2ZXJzaW9uaW5nIGNob29zZXMgdGhlIGNvcnJlY3QKKy0gICBk aXNwYXRjaGluZyBvcmRlciB3aGVuIHZlcnNpb25zIGFyZSBmb3IgdmFyaW91cyBJU0FzLiAgKi8K Ky0vKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworLS8q IHsgZGctcmVxdWlyZS1pZnVuYyAiIiB9ICAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8yIiB9ICov CistCistI2luY2x1ZGUgPGFzc2VydC5oPgorLQorLS8qIERlZmF1bHQgdmVyc2lvbi4gICovCist aW50IGZvbyAoKTsKKy0vKiBUaGUgZGlzcGF0Y2ggY2hlY2tzIHNob3VsZCBiZSBpbiB0aGUgZXhh Y3QgcmV2ZXJzZSBvcmRlciBvZiB0aGUKKy0gICBkZWNsYXJhdGlvbnMgYmVsb3cuICAqLworLWlu dCBmb28gKCkgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCAoIm1teCIpKSk7CistaW50IGZvbyAoKSBf X2F0dHJpYnV0ZV9fICgodGFyZ2V0ICgic3NlIikpKTsKKy1pbnQgZm9vICgpIF9fYXR0cmlidXRl X18gKCh0YXJnZXQgKCJzc2UyIikpKTsKKy1pbnQgZm9vICgpIF9fYXR0cmlidXRlX18gKCh0YXJn ZXQgKCJzc2UzIikpKTsKKy1pbnQgZm9vICgpIF9fYXR0cmlidXRlX18gKCh0YXJnZXQgKCJzc3Nl MyIpKSk7CistaW50IGZvbyAoKSBfX2F0dHJpYnV0ZV9fICgodGFyZ2V0ICgic3NlNC4xIikpKTsK Ky1pbnQgZm9vICgpIF9fYXR0cmlidXRlX18gKCh0YXJnZXQgKCJzc2U0LjIiKSkpOworLWludCBm b28gKCkgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCAoInBvcGNudCIpKSk7CistaW50IGZvbyAoKSBf X2F0dHJpYnV0ZV9fICgodGFyZ2V0ICgiYXZ4IikpKTsKKy1pbnQgZm9vICgpIF9fYXR0cmlidXRl X18gKCh0YXJnZXQgKCJhdngyIikpKTsKKy0KKy1pbnQgbWFpbiAoKQorLXsKKy0gIGludCB2YWwg PSBmb28gKCk7CistCistICBpZiAoX19idWlsdGluX2NwdV9zdXBwb3J0cyAoImF2eDIiKSkKKy0g ICAgYXNzZXJ0ICh2YWwgPT0gMSk7CistICBlbHNlIGlmIChfX2J1aWx0aW5fY3B1X3N1cHBvcnRz ICgiYXZ4IikpCistICAgIGFzc2VydCAodmFsID09IDIpOworLSAgZWxzZSBpZiAoX19idWlsdGlu X2NwdV9zdXBwb3J0cyAoInBvcGNudCIpKQorLSAgICBhc3NlcnQgKHZhbCA9PSAzKTsKKy0gIGVs c2UgaWYgKF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgKCJzc2U0LjIiKSkKKy0gICAgYXNzZXJ0ICh2 YWwgPT0gNCk7CistICBlbHNlIGlmIChfX2J1aWx0aW5fY3B1X3N1cHBvcnRzICgic3NlNC4xIikp CistICAgIGFzc2VydCAodmFsID09IDUpOworLSAgZWxzZSBpZiAoX19idWlsdGluX2NwdV9zdXBw b3J0cyAoInNzc2UzIikpCistICAgIGFzc2VydCAodmFsID09IDYpOworLSAgZWxzZSBpZiAoX19i dWlsdGluX2NwdV9zdXBwb3J0cyAoInNzZTMiKSkKKy0gICAgYXNzZXJ0ICh2YWwgPT0gNyk7Cist ICBlbHNlIGlmIChfX2J1aWx0aW5fY3B1X3N1cHBvcnRzICgic3NlMiIpKQorLSAgICBhc3NlcnQg KHZhbCA9PSA4KTsKKy0gIGVsc2UgaWYgKF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgKCJzc2UiKSkK Ky0gICAgYXNzZXJ0ICh2YWwgPT0gOSk7CistICBlbHNlIGlmIChfX2J1aWx0aW5fY3B1X3N1cHBv cnRzICgibW14IikpCistICAgIGFzc2VydCAodmFsID09IDEwKTsKKy0gIGVsc2UKKy0gICAgYXNz ZXJ0ICh2YWwgPT0gMCk7CistCistICByZXR1cm4gMDsKKy19CistCistaW50CistZm9vICgpCist eworLSAgcmV0dXJuIDA7CistfQorLQorLWludCBfX2F0dHJpYnV0ZV9fICgodGFyZ2V0KCJtbXgi KSkpCistZm9vICgpCisteworLSAgcmV0dXJuIDEwOworLX0KKy0KKy1pbnQgX19hdHRyaWJ1dGVf XyAoKHRhcmdldCgic3NlIikpKQorLWZvbyAoKQorLXsKKy0gIHJldHVybiA5OworLX0KKy0KKy1p bnQgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgic3NlMiIpKSkKKy1mb28gKCkKKy17CistICByZXR1 cm4gODsKKy19CistCistaW50IF9fYXR0cmlidXRlX18gKCh0YXJnZXQoInNzZTMiKSkpCistZm9v ICgpCisteworLSAgcmV0dXJuIDc7CistfQorLQorLWludCBfX2F0dHJpYnV0ZV9fICgodGFyZ2V0 KCJzc3NlMyIpKSkKKy1mb28gKCkKKy17CistICByZXR1cm4gNjsKKy19CistCistaW50IF9fYXR0 cmlidXRlX18gKCh0YXJnZXQoInNzZTQuMSIpKSkKKy1mb28gKCkKKy17CistICByZXR1cm4gNTsK Ky19CistCistaW50IF9fYXR0cmlidXRlX18gKCh0YXJnZXQoInNzZTQuMiIpKSkKKy1mb28gKCkK Ky17CistICByZXR1cm4gNDsKKy19CistCistaW50IF9fYXR0cmlidXRlX18gKCh0YXJnZXQoInBv cGNudCIpKSkKKy1mb28gKCkKKy17CistICByZXR1cm4gMzsKKy19CistCistaW50IF9fYXR0cmli dXRlX18gKCh0YXJnZXQoImF2eCIpKSkKKy1mb28gKCkKKy17CistICByZXR1cm4gMjsKKy19Cist CistaW50IF9fYXR0cmlidXRlX18gKCh0YXJnZXQoImF2eDIiKSkpCistZm9vICgpCisteworLSAg cmV0dXJuIDE7CistfQorLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9tdjIuQy5qagkyMDEz LTAxLTIxIDExOjM2OjE2LjA4NTQ5MTE2NSArMDEwMAorKysrIGdjYy90ZXN0c3VpdGUvZysrLmRn L2V4dC9tdjIuQwkyMDEzLTAxLTIxIDEwOjU4OjU3LjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCAr MSwxMTggQEAKKysvKiBUZXN0IGNhc2UgdG8gY2hlY2sgaWYgTXVsdGl2ZXJzaW9uaW5nIGNob29z ZXMgdGhlIGNvcnJlY3QKKysgICBkaXNwYXRjaGluZyBvcmRlciB3aGVuIHZlcnNpb25zIGFyZSBm b3IgdmFyaW91cyBJU0FzLiAgKi8KKysvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotKiB4 ODZfNjQtKi0qIH0gfSAqLworKy8qIHsgZGctcmVxdWlyZS1pZnVuYyAiIiB9ICAqLworKy8qIHsg ZGctb3B0aW9ucyAiLU8yIiB9ICovCisrCisrI2luY2x1ZGUgPGFzc2VydC5oPgorKworKy8qIERl ZmF1bHQgdmVyc2lvbi4gICovCisraW50IGZvbyAoKSBfX2F0dHJpYnV0ZV9fICgodGFyZ2V0ICgi ZGVmYXVsdCIpKSk7CisrLyogVGhlIGRpc3BhdGNoIGNoZWNrcyBzaG91bGQgYmUgaW4gdGhlIGV4 YWN0IHJldmVyc2Ugb3JkZXIgb2YgdGhlCisrICAgZGVjbGFyYXRpb25zIGJlbG93LiAgKi8KKytp bnQgZm9vICgpIF9fYXR0cmlidXRlX18gKCh0YXJnZXQgKCJtbXgiKSkpOworK2ludCBmb28gKCkg X19hdHRyaWJ1dGVfXyAoKHRhcmdldCAoInNzZSIpKSk7CisraW50IGZvbyAoKSBfX2F0dHJpYnV0 ZV9fICgodGFyZ2V0ICgic3NlMiIpKSk7CisraW50IGZvbyAoKSBfX2F0dHJpYnV0ZV9fICgodGFy Z2V0ICgic3NlMyIpKSk7CisraW50IGZvbyAoKSBfX2F0dHJpYnV0ZV9fICgodGFyZ2V0ICgic3Nz ZTMiKSkpOworK2ludCBmb28gKCkgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCAoInNzZTQuMSIpKSk7 CisraW50IGZvbyAoKSBfX2F0dHJpYnV0ZV9fICgodGFyZ2V0ICgic3NlNC4yIikpKTsKKytpbnQg Zm9vICgpIF9fYXR0cmlidXRlX18gKCh0YXJnZXQgKCJwb3BjbnQiKSkpOworK2ludCBmb28gKCkg X19hdHRyaWJ1dGVfXyAoKHRhcmdldCAoImF2eCIpKSk7CisraW50IGZvbyAoKSBfX2F0dHJpYnV0 ZV9fICgodGFyZ2V0ICgiYXZ4MiIpKSk7CisrCisraW50IG1haW4gKCkKKyt7CisrICBpbnQgdmFs ID0gZm9vICgpOworKworKyAgaWYgKF9fYnVpbHRpbl9jcHVfc3VwcG9ydHMgKCJhdngyIikpCisr ICAgIGFzc2VydCAodmFsID09IDEpOworKyAgZWxzZSBpZiAoX19idWlsdGluX2NwdV9zdXBwb3J0 cyAoImF2eCIpKQorKyAgICBhc3NlcnQgKHZhbCA9PSAyKTsKKysgIGVsc2UgaWYgKF9fYnVpbHRp bl9jcHVfc3VwcG9ydHMgKCJwb3BjbnQiKSkKKysgICAgYXNzZXJ0ICh2YWwgPT0gMyk7CisrICBl bHNlIGlmIChfX2J1aWx0aW5fY3B1X3N1cHBvcnRzICgic3NlNC4yIikpCisrICAgIGFzc2VydCAo dmFsID09IDQpOworKyAgZWxzZSBpZiAoX19idWlsdGluX2NwdV9zdXBwb3J0cyAoInNzZTQuMSIp KQorKyAgICBhc3NlcnQgKHZhbCA9PSA1KTsKKysgIGVsc2UgaWYgKF9fYnVpbHRpbl9jcHVfc3Vw cG9ydHMgKCJzc3NlMyIpKQorKyAgICBhc3NlcnQgKHZhbCA9PSA2KTsKKysgIGVsc2UgaWYgKF9f YnVpbHRpbl9jcHVfc3VwcG9ydHMgKCJzc2UzIikpCisrICAgIGFzc2VydCAodmFsID09IDcpOwor KyAgZWxzZSBpZiAoX19idWlsdGluX2NwdV9zdXBwb3J0cyAoInNzZTIiKSkKKysgICAgYXNzZXJ0 ICh2YWwgPT0gOCk7CisrICBlbHNlIGlmIChfX2J1aWx0aW5fY3B1X3N1cHBvcnRzICgic3NlIikp CisrICAgIGFzc2VydCAodmFsID09IDkpOworKyAgZWxzZSBpZiAoX19idWlsdGluX2NwdV9zdXBw b3J0cyAoIm1teCIpKQorKyAgICBhc3NlcnQgKHZhbCA9PSAxMCk7CisrICBlbHNlCisrICAgIGFz c2VydCAodmFsID09IDApOworKworKyAgcmV0dXJuIDA7CisrfQorKworK2ludCBfX2F0dHJpYnV0 ZV9fICgodGFyZ2V0KCJkZWZhdWx0IikpKQorK2ZvbyAoKQorK3sKKysgIHJldHVybiAwOworK30K KysKKytpbnQgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgibW14IikpKQorK2ZvbyAoKQorK3sKKysg IHJldHVybiAxMDsKKyt9CisrCisraW50IF9fYXR0cmlidXRlX18gKCh0YXJnZXQoInNzZSIpKSkK Kytmb28gKCkKKyt7CisrICByZXR1cm4gOTsKKyt9CisrCisraW50IF9fYXR0cmlidXRlX18gKCh0 YXJnZXQoInNzZTIiKSkpCisrZm9vICgpCisreworKyAgcmV0dXJuIDg7CisrfQorKworK2ludCBf X2F0dHJpYnV0ZV9fICgodGFyZ2V0KCJzc2UzIikpKQorK2ZvbyAoKQorK3sKKysgIHJldHVybiA3 OworK30KKysKKytpbnQgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgic3NzZTMiKSkpCisrZm9vICgp CisreworKyAgcmV0dXJuIDY7CisrfQorKworK2ludCBfX2F0dHJpYnV0ZV9fICgodGFyZ2V0KCJz c2U0LjEiKSkpCisrZm9vICgpCisreworKyAgcmV0dXJuIDU7CisrfQorKworK2ludCBfX2F0dHJp YnV0ZV9fICgodGFyZ2V0KCJzc2U0LjIiKSkpCisrZm9vICgpCisreworKyAgcmV0dXJuIDQ7Cisr fQorKworK2ludCBfX2F0dHJpYnV0ZV9fICgodGFyZ2V0KCJwb3BjbnQiKSkpCisrZm9vICgpCisr eworKyAgcmV0dXJuIDM7CisrfQorKworK2ludCBfX2F0dHJpYnV0ZV9fICgodGFyZ2V0KCJhdngi KSkpCisrZm9vICgpCisreworKyAgcmV0dXJuIDI7CisrfQorKworK2ludCBfX2F0dHJpYnV0ZV9f ICgodGFyZ2V0KCJhdngyIikpKQorK2ZvbyAoKQorK3sKKysgIHJldHVybiAxOworK30KKy0tLSBn Y2MvdGVzdHN1aXRlL2crKy5kZy9tdjMuQy5qagkyMDEzLTAxLTE4IDIxOjIzOjQ1LjAwMDAwMDAw MCArMDEwMAorKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL212My5DCTIwMTMtMDEtMjEgMTE6MzU6 NTIuNDAwNjI2NDM1ICswMTAwCitAQCAtMSwzNiArMCwwIEBACistLyogVGVzdCBjYXNlIHRvIGNo ZWNrIGlmIGEgY2FsbCB0byBhIG11bHRpdmVyc2lvbmVkIGZ1bmN0aW9uCistICAgaXMgcmVwbGFj ZWQgd2l0aCBhIGRpcmVjdCBjYWxsIHRvIHRoZSBwYXJ0aWN1bGFyIHZlcnNpb24gd2hlbgorLSAg IHRoZSBtb3N0IHNwZWNpYWxpemVkIHZlcnNpb24ncyB0YXJnZXQgYXR0cmlidXRlcyBtYXRjaCB0 aGUKKy0gICBjYWxsZXIuICAKKy0gIAorLSAgIEluIHRoaXMgcHJvZ3JhbSwgZm9vIGlzIG11bHRp dmVyc2lvbmVkIGJ1dCB0aGVyZSBpcyBubyBkZWZhdWx0CistICAgZnVuY3Rpb24uICBUaGlzIGlz IGFuIGVycm9yIGlmIHRoZSBjYWxsIGhhcyB0byBnbyB0aHJvdWdoIGEKKy0gICBkaXNwYXRjaGVy LiAgSG93ZXZlciwgdGhlIGNhbGwgdG8gZm9vIGluIGJhciBjYW4gYmUgcmVwbGFjZWQKKy0gICB3 aXRoIGEgZGlyZWN0IGNhbGwgdG8gdGhlIHBvcGNudCB2ZXJzaW9uIG9mIGZvby4gIEhlbmNlLCB0 aGlzCistICAgdGVzdCBzaG91bGQgcGFzcy4gICovCistCistLyogeyBkZy1kbyBydW4geyB0YXJn ZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAq LworLQorLQorLWludCBfX2F0dHJpYnV0ZV9fICgodGFyZ2V0ICgic3NlIikpKQorLWZvbyAoKQor LXsKKy0gIHJldHVybiAxOworLX0KKy1pbnQgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCAoInBvcGNu dCIpKSkKKy1mb28gKCkKKy17CistICByZXR1cm4gMDsKKy19CistCistaW50IF9fYXR0cmlidXRl X18gKCh0YXJnZXQgKCJwb3BjbnQiKSkpCistYmFyICgpCisteworLSAgcmV0dXJuIGZvbyAoKTsK Ky19CistCistaW50IG1haW4gKCkKKy17CistICByZXR1cm4gYmFyICgpOworLX0KKy0tLSBnY2Mv dGVzdHN1aXRlL2crKy5kZy9leHQvbXYzLkMuamoJMjAxMy0wMS0yMSAxMTozNjoxNi4wODY0OTEx NTYgKzAxMDAKKysrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9leHQvbXYzLkMJMjAxMy0wMS0xOCAy MToyMzo0NS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0wLDAgKzEsMzYgQEAKKysvKiBUZXN0IGNhc2Ug dG8gY2hlY2sgaWYgYSBjYWxsIHRvIGEgbXVsdGl2ZXJzaW9uZWQgZnVuY3Rpb24KKysgICBpcyBy ZXBsYWNlZCB3aXRoIGEgZGlyZWN0IGNhbGwgdG8gdGhlIHBhcnRpY3VsYXIgdmVyc2lvbiB3aGVu CisrICAgdGhlIG1vc3Qgc3BlY2lhbGl6ZWQgdmVyc2lvbidzIHRhcmdldCBhdHRyaWJ1dGVzIG1h dGNoIHRoZQorKyAgIGNhbGxlci4gIAorKyAgCisrICAgSW4gdGhpcyBwcm9ncmFtLCBmb28gaXMg bXVsdGl2ZXJzaW9uZWQgYnV0IHRoZXJlIGlzIG5vIGRlZmF1bHQKKysgICBmdW5jdGlvbi4gIFRo aXMgaXMgYW4gZXJyb3IgaWYgdGhlIGNhbGwgaGFzIHRvIGdvIHRocm91Z2ggYQorKyAgIGRpc3Bh dGNoZXIuICBIb3dldmVyLCB0aGUgY2FsbCB0byBmb28gaW4gYmFyIGNhbiBiZSByZXBsYWNlZAor KyAgIHdpdGggYSBkaXJlY3QgY2FsbCB0byB0aGUgcG9wY250IHZlcnNpb24gb2YgZm9vLiAgSGVu Y2UsIHRoaXMKKysgICB0ZXN0IHNob3VsZCBwYXNzLiAgKi8KKysKKysvKiB7IGRnLWRvIHJ1biB7 IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8y IiB9ICovCisrCisrCisraW50IF9fYXR0cmlidXRlX18gKCh0YXJnZXQgKCJzc2UiKSkpCisrZm9v ICgpCisreworKyAgcmV0dXJuIDE7CisrfQorK2ludCBfX2F0dHJpYnV0ZV9fICgodGFyZ2V0ICgi cG9wY250IikpKQorK2ZvbyAoKQorK3sKKysgIHJldHVybiAwOworK30KKysKKytpbnQgX19hdHRy aWJ1dGVfXyAoKHRhcmdldCAoInBvcGNudCIpKSkKKytiYXIgKCkKKyt7CisrICByZXR1cm4gZm9v ICgpOworK30KKysKKytpbnQgbWFpbiAoKQorK3sKKysgIHJldHVybiBiYXIgKCk7CisrfQorLS0t IGdjYy90ZXN0c3VpdGUvZysrLmRnL212NC5DLmpqCTIwMTMtMDEtMTggMjE6MjM6NDUuMDAwMDAw MDAwICswMTAwCisrKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvbXY0LkMJMjAxMy0wMS0yMSAxMToz NTo1NC4zMDg2MTYyMjMgKzAxMDAKK0BAIC0xLDI0ICswLDAgQEAKKy0vKiBUZXN0IGNhc2UgdG8g Y2hlY2sgaWYgdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhbiBlcnJvciBtZXNzYWdlCistICAgd2hl biB0aGUgZGVmYXVsdCB2ZXJzaW9uIG9mIGEgbXVsdGl2ZXJzaW9uZWQgZnVuY3Rpb24gaXMgYWJz ZW50CistICAgYW5kIGl0cyBwb2ludGVyIGlzIHRha2VuLiAgKi8KKy0KKy0vKiB7IGRnLWRvIGNv bXBpbGUgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKy0vKiB7IGRnLXJlcXVp cmUtaWZ1bmMgIiIgfSAgKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLworLQorLWludCBf X2F0dHJpYnV0ZV9fICgodGFyZ2V0ICgic3NlIikpKQorLWZvbyAoKQorLXsKKy0gIHJldHVybiAx OworLX0KKy1pbnQgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCAoInBvcGNudCIpKSkKKy1mb28gKCkK Ky17CistICByZXR1cm4gMDsKKy19CistCistaW50IG1haW4gKCkKKy17CistICBpbnQgKCpwKSgp ID0gJmZvbzsgLyogeyBkZy1lcnJvciAidXNlIG9mIG11bHRpdmVyc2lvbmVkIGZ1bmN0aW9uIHdp dGhvdXQgYSBkZWZhdWx0IiB7fSB9ICovCistICByZXR1cm4gKCpwKSgpOworLX0KKy0tLSBnY2Mv dGVzdHN1aXRlL2crKy5kZy9leHQvbXY0LkMuamoJMjAxMy0wMS0yMSAxMTozNjoxNi4wODg0OTEx MzMgKzAxMDAKKysrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9leHQvbXY0LkMJMjAxMy0wMS0xOCAy MToyMzo0NS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0wLDAgKzEsMjQgQEAKKysvKiBUZXN0IGNhc2Ug dG8gY2hlY2sgaWYgdGhlIGNvbXBpbGVyIGdlbmVyYXRlcyBhbiBlcnJvciBtZXNzYWdlCisrICAg d2hlbiB0aGUgZGVmYXVsdCB2ZXJzaW9uIG9mIGEgbXVsdGl2ZXJzaW9uZWQgZnVuY3Rpb24gaXMg YWJzZW50CisrICAgYW5kIGl0cyBwb2ludGVyIGlzIHRha2VuLiAgKi8KKysKKysvKiB7IGRnLWRv IGNvbXBpbGUgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKysvKiB7IGRnLXJl cXVpcmUtaWZ1bmMgIiIgfSAgKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLworKworK2lu dCBfX2F0dHJpYnV0ZV9fICgodGFyZ2V0ICgic3NlIikpKQorK2ZvbyAoKQorK3sKKysgIHJldHVy biAxOworK30KKytpbnQgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCAoInBvcGNudCIpKSkKKytmb28g KCkKKyt7CisrICByZXR1cm4gMDsKKyt9CisrCisraW50IG1haW4gKCkKKyt7CisrICBpbnQgKCpw KSgpID0gJmZvbzsgLyogeyBkZy1lcnJvciAidXNlIG9mIG11bHRpdmVyc2lvbmVkIGZ1bmN0aW9u IHdpdGhvdXQgYSBkZWZhdWx0IiB7fSB9ICovCisrICByZXR1cm4gKCpwKSgpOworK30KKy0tLSBn Y2MvdGVzdHN1aXRlL2crKy5kZy9tdjUuQy5qagkyMDEzLTAxLTIxIDEwOjU2OjU0LjU4MjAxNzcy MyArMDEwMAorKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL212NS5DCTIwMTMtMDEtMjEgMTE6MzU6 NTYuMDI3NjA2MTg1ICswMTAwCitAQCAtMSwyNSArMCwwIEBACistLyogVGVzdCBjYXNlIHRvIGNo ZWNrIGlmIG11bHRpdmVyc2lvbmVkIGZ1bmN0aW9ucyBhcmUgc3RpbGwgZ2VuZXJhdGVkIGlmIHRo ZXkgYXJlCistICAgbWFya2VkIGNvbWRhdCB3aXRoIGlubGluZSBrZXl3b3JkLiAgKi8KKy0KKy0v KiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworLS8qIHsg ZGctcmVxdWlyZS1pZnVuYyAiIiB9ICAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8yIiB9ICovCist CistCistLyogRGVmYXVsdCB2ZXJzaW9uLiAgKi8KKy1pbmxpbmUgaW50CistZm9vICgpCistewor LSAgcmV0dXJuIDA7CistfQorLQorLWlubGluZSBpbnQgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCAo InBvcGNudCIpKSkKKy1mb28gKCkKKy17CistICByZXR1cm4gMDsKKy19CistCistaW50IG1haW4g KCkKKy17CistICByZXR1cm4gZm9vICgpOworLX0KKy0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy9l eHQvbXY1LkMuamoJMjAxMy0wMS0yMSAxMTozNjoxNi4wODk0OTExMjMgKzAxMDAKKysrKyBnY2Mv dGVzdHN1aXRlL2crKy5kZy9leHQvbXY1LkMJMjAxMy0wMS0yMSAxMDo1ODo1Ny4wMDAwMDAwMDAg KzAxMDAKK0BAIC0wLDAgKzEsMjUgQEAKKysvKiBUZXN0IGNhc2UgdG8gY2hlY2sgaWYgbXVsdGl2 ZXJzaW9uZWQgZnVuY3Rpb25zIGFyZSBzdGlsbCBnZW5lcmF0ZWQgaWYgdGhleSBhcmUKKysgICBt YXJrZWQgY29tZGF0IHdpdGggaW5saW5lIGtleXdvcmQuICAqLworKworKy8qIHsgZGctZG8gcnVu IHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisrLyogeyBkZy1yZXF1aXJlLWlm dW5jICIiIH0gICovCisrLyogeyBkZy1vcHRpb25zICItTzIiIH0gKi8KKysKKysKKysvKiBEZWZh dWx0IHZlcnNpb24uICAqLworK2lubGluZSBpbnQgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCAoImRl ZmF1bHQiKSkpCisrZm9vICgpCisreworKyAgcmV0dXJuIDA7CisrfQorKworK2lubGluZSBpbnQg X19hdHRyaWJ1dGVfXyAoKHRhcmdldCAoInBvcGNudCIpKSkKKytmb28gKCkKKyt7CisrICByZXR1 cm4gMDsKKyt9CisrCisraW50IG1haW4gKCkKKyt7CisrICByZXR1cm4gZm9vICgpOworK30KKy0t LSBnY2MvdGVzdHN1aXRlL2crKy5kZy9tdjYuQy5qagkyMDEzLTAxLTIxIDEwOjU2OjU0LjUwNDAx ODA4MSArMDEwMAorKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL212Ni5DCTIwMTMtMDEtMjEgMTE6 MzU6NTcuNTE0NTk3Njk3ICswMTAwCitAQCAtMSwyNyArMCwwIEBACistLyogVGVzdCB0byBjaGVj ayBpZiBtZW1iZXIgdmVyc2lvbiBtdWx0aXZlcnNpb25pbmcgd29ya3MgY29ycmVjdGx5LiAgKi8K Ky0KKy0vKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwor LS8qIHsgZGctcmVxdWlyZS1pZnVuYyAiIiB9ICAqLworLS8qIHsgZGctb3B0aW9ucyAiLW1hcmNo PXg4Ni02NCIgfSAqLworLQorLWNsYXNzIEZvbworLXsKKy0gcHVibGljOgorLSAgLyogRGVmYXVs dCB2ZXJzaW9uIG9mIGZvby4gICovCistICBpbnQgZm9vICgpCistICB7CistICAgIHJldHVybiAw OworLSAgfQorLSAgLyogY29yZWk3IHZlcnNpb24gb2YgZm9vLiAgKi8KKy0gIF9fYXR0cmlidXRl X18gKCh0YXJnZXQoImFyY2g9Y29yZWk3IikpKQorLSAgaW50IGZvbyAoKQorLSAgeworLSAgICBy ZXR1cm4gMDsKKy0gIH0KKy19OworLQorLWludCBtYWluICgpCisteworLSAgRm9vIGY7CistICBy ZXR1cm4gZi5mb28gKCk7CistfQorLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9tdjYuQy5q agkyMDEzLTAxLTIxIDExOjM2OjE2LjA5MDQ5MTExNyArMDEwMAorKysrIGdjYy90ZXN0c3VpdGUv ZysrLmRnL2V4dC9tdjYuQwkyMDEzLTAxLTIxIDEwOjU4OjU3LjAwMDAwMDAwMCArMDEwMAorQEAg LTAsMCArMSwyOCBAQAorKy8qIFRlc3QgdG8gY2hlY2sgaWYgbWVtYmVyIHZlcnNpb24gbXVsdGl2 ZXJzaW9uaW5nIHdvcmtzIGNvcnJlY3RseS4gICovCisrCisrLyogeyBkZy1kbyBydW4geyB0YXJn ZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKysvKiB7IGRnLXJlcXVpcmUtaWZ1bmMgIiIg fSAgKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD14ODYtNjQiIH0gKi8KKysKKytjbGFzcyBG b28KKyt7CisrIHB1YmxpYzoKKysgIC8qIERlZmF1bHQgdmVyc2lvbiBvZiBmb28uICAqLworKyAg X19hdHRyaWJ1dGVfXyAoKHRhcmdldCgiZGVmYXVsdCIpKSkKKysgIGludCBmb28gKCkKKysgIHsK KysgICAgcmV0dXJuIDA7CisrICB9CisrICAvKiBjb3JlaTcgdmVyc2lvbiBvZiBmb28uICAqLwor KyAgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgiYXJjaD1jb3JlaTciKSkpCisrICBpbnQgZm9vICgp CisrICB7CisrICAgIHJldHVybiAwOworKyAgfQorK307CisrCisraW50IG1haW4gKCkKKyt7Cisr ICBGb28gZjsKKysgIHJldHVybiBmLmZvbyAoKTsKKyt9CistLS0gZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvZXh0L212Ny5DLmpqCTIwMTMtMDEtMjEgMTE6Mzk6MjEuNzg5NDYwNDkzICswMTAwCisrKysg Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvZXh0L212Ny5DCTIwMTMtMDEtMjEgMTE6NDU6MDUuMDk4NTg5 NjMyICswMTAwCitAQCAtMCwwICsxLDEyIEBACisrLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0 IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9CisrLy8geyBkZy1vcHRpb25zICIiIH0KKysKKytfX2F0 dHJpYnV0ZV9fKCh0YXJnZXQgKCJkZWZhdWx0IikpKQorK3ZvaWQgZm9vICh2b2lkKQkvLyB7IGRn LWVycm9yICJwcmV2aW91c2x5IGRlZmluZWQgaGVyZSIgfQorK3sKKyt9CisrCisrX19hdHRyaWJ1 dGVfXygodGFyZ2V0ICgxMjgpKSkKKyt2b2lkIGZvbyAodm9pZCkgLy8geyBkZy1lcnJvciAiKG5v dCBhIHN0cmluZ3xyZWRlZmluaXRpb24pIiB9CisreworK30KKy0tLSBnY2MvdGVzdHN1aXRlL2cr Ky5kZy9leHQvbXY4LkMuamoJMjAxMy0wMS0yMSAxMTo0MToxNy4xNDc4MzYxMDEgKzAxMDAKKysr KyBnY2MvdGVzdHN1aXRlL2crKy5kZy9leHQvbXY4LkMJMjAxMy0wMS0yMSAxMTo0NToxMy40OTM1 NDQyNTYgKzAxMDAKK0BAIC0wLDAgKzEsNyBAQAorKy8vIHsgZGctZG8gY29tcGlsZSB7IHRhcmdl dCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfQorKy8vIHsgZGctb3B0aW9ucyAiIiB9CisrCisrX19h dHRyaWJ1dGVfXygodGFyZ2V0ICgxMSwxMikpKQorK3ZvaWQgZm9vICh2b2lkKSAvLyB7IGRnLWVy cm9yICJub3QgYSBzdHJpbmciIH0KKyt7CisrfQorLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4 dC9tdjkuQy5qagkyMDEzLTAxLTIxIDExOjQ0OjMxLjYzNDc3NDkyMSArMDEwMAorKysrIGdjYy90 ZXN0c3VpdGUvZysrLmRnL2V4dC9tdjkuQwkyMDEzLTAxLTIxIDExOjQ1OjE4LjI3NTUxNjI2NiAr MDEwMAorQEAgLTAsMCArMSw5IEBACisrLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGk/ODYt Ki0qIHg4Nl82NC0qLSogfSB9ICAgIAorKy8vIHsgZGctb3B0aW9ucyAiIiB9ICAgCisrCisrdm9p ZCBmb28gKCk7Cisrdm9pZCBmb28gKCkgX19hdHRyaWJ1dGVfXygodGFyZ2V0ICgic3NlNCIpKSk7 Cisrdm9pZCBmb28gKCkgX19hdHRyaWJ1dGVfXygodGFyZ2V0ICgiZGVmYXVsdCIpKSk7IC8vIHsg ZGctZXJyb3IgInByZXZpb3VzIGRlY2xhcmF0aW9uIiB9Cisrdm9pZCBmb28gKCkJLy8geyBkZy1l cnJvciAiYXR0cmlidXRlIGZvciBtdWx0aS12ZXJzaW9uZWQiIH0KKyt7CisrfQorLS0tIGdjYy90 ZXN0c3VpdGUvZysrLmRnL2V4dC9tdjEwLkMuamoJMjAxMy0wMS0yMSAxMjoxMjoyOS4zNTQ1NDE2 MzAgKzAxMDAKKysrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9leHQvbXYxMC5DCTIwMTMtMDEtMjEg MTI6MTI6NTYuMjA3MzkyODg2ICswMTAwCitAQCAtMCwwICsxLDEyIEBACisrLy8geyBkZy1kbyBh c3NlbWJsZSB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfQorKy8vIHsgZGctb3B0aW9u cyAiIiB9CisrCisrX19hdHRyaWJ1dGVfXygodGFyZ2V0ICgicG9wY250IiksIHVzZWQpKQorK3Zv aWQgZm9vICh2b2lkKQorK3sKKyt9CisrCisrX19hdHRyaWJ1dGVfXygodGFyZ2V0ICgicG9wY250 IiwiYXZ4IiksIHVzZWQpKQorK3ZvaWQgZm9vICh2b2lkKQorK3sKKyt9CistLS0gZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvZXh0L212MTEuQy5qagkyMDEzLTAxLTIxIDEyOjE2OjI2LjM4MTI4NTUzNSAr MDEwMAorKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9tdjExLkMJMjAxMy0wMS0yMSAxMjox NzozMy4zODA5MTg5OTYgKzAxMDAKK0BAIC0wLDAgKzEsMjMgQEAKKysvLyB7IGRnLWRvIGNvbXBp bGUgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0KKysvLyB7IGRnLW9wdGlvbnMgIi1t c3NlMiIgfQorKworK2ludCBmb28gKCkgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgiZGVmYXVsdCIp KSk7CisraW50IGZvbyAoKSBfX2F0dHJpYnV0ZV9fICgodGFyZ2V0KCJzc2UyIikpKTsKKysKKytp bnQKKyttYWluICgpCisreworKyAgcmV0dXJuIGZvbyAoKTsKKyt9CisrCisraW50ICBfX2F0dHJp YnV0ZV9fICgodGFyZ2V0KCJkZWZhdWx0IikpKQorK2ZvbyAoKQorK3sKKysgIHJldHVybiAwOwor K30KKysKKytpbnQgX19hdHRyaWJ1dGVfXyAoKHRhcmdldCgic3NlMiIpKSkKKytmb28gKCkKKyt7 CisrICByZXR1cm4gMDsKKyt9CgpkaWZmIC0tZ2l0IGEvZ2NjNDgtcHI1NTg0NC5wYXRjaCBiL2dj YzQ4LXByNTU4NDQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0ZTdmN2Iu LjAwMDAwMDAKLS0tIGEvZ2NjNDgtcHI1NTg0NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1 ICswLDAgQEAKLTIwMTItMTItMTkgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgot Ci0JUFIgc2FuaXRpemVyLzU1ODQ0Ci0JKiBjLWMrKy1jb21tb24vYXNhbi9udWxsLWRlcmVmLTEu YzogQWRkIC1mbm8tc2hyaW5rLXdyYXAgdG8KLQlkZy1vcHRpb25zLgotCi0tLS0gZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vYXNhbi9udWxsLWRlcmVmLTEuYy5qagkyMDEyLTEyLTEzIDAwOjAy OjUwLjAwMDAwMDAwMCArMDEwMAotKysrIGdjYy90ZXN0c3VpdGUvYy1jKystY29tbW9uL2FzYW4v bnVsbC1kZXJlZi0xLmMJMjAxMi0xMi0xOSAxMjozMDowNS4zNTQ5NjIxNjAgKzAxMDAKLUBAIC0x LDUgKzEsNSBAQAotIC8qIHsgZGctZG8gcnVuIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1mbm8t b21pdC1mcmFtZS1wb2ludGVyIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItZm5vLW9taXQtZnJh bWUtcG9pbnRlciAtZm5vLXNocmluay13cmFwIiB9ICovCi0gLyogeyBkZy1hZGRpdGlvbmFsLW9w dGlvbnMgIi1tbm8tb21pdC1sZWFmLWZyYW1lLXBvaW50ZXIiIHsgdGFyZ2V0IHsgaT84Ni0qLSog eDg2XzY0LSotKiB9IH0gfSAqLwotIC8qIHsgZGctc2hvdWxkZmFpbCAiYXNhbiIgfSAqLwotIAoK ZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IGIyZmRiOTkuLjcxZWZmZTcgMTAw NjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSw0ICsxLDQgQEAKK2JlNzhhNDdi ZDgyNTIzMjUwZWIzZTkxNjQ2ZGI1YjNkICBjbG9vZy0wLjE4LjAudGFyLmd6CiAyNjU5ZjA5YzJl NDNlZjhiN2Q0NDA2MzIxNzUzZjFiMiAgZmFzdGphci0wLjk3LnRhci5negotMGFhMzMwMmM4MWY2 NWNhNjJjMTE0ZTUyNjRmOGE4MDIgIGNsb29nLTAuMTcuMC50YXIuZ3oKLWMxZWNlNjUzODkxYmIy YTVmNTVjYTI1ZTNmNGU4ZjM1ICBpc2wtMC4xMC50YXIuYnoyCi1iOWJlMGVkMTk4OGEzNjI0YTVm NDA1NjY2ZjcyZDIyMCAgZ2NjLTQuOC4wLTIwMTMwMTA2LnRhci5iejIKK2JjZTE1ODYzODRkODYz NWE3NmQyZjAxN2ZiMDY3Y2QyICBpc2wtMC4xMS4xLnRhci5iejIKK2Y5ZGQ5M2JiZDFhZDA4YmJi ZDcxZDJlM2MzNmIwZGEwICBnY2MtNC44LjAtMjAxMzAxMjEudGFyLmJ6Mgo=