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.1.2-32 Date: Mon, 29 Jun 2026 12:23:29 GMT Message-ID: <178273580977.1.2153305839142141525.rpms-gcc-70a3a1d06381@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 70a3a1d0638109eb4005ecccfe766f1df95e9ae2 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogNzBhM2ExZDA2MzgxMDllYjQwMDVlY2NjZmU3NjZmMWRm OTVlOWFlMgpBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkBmZWRvcmFwcm9qZWN0Lm9yZz4K RGF0ZSAgIDogMjAwNy0xMC0xNlQxNDoxODo1NSswMDowMApTdGF0cyAgOiArMTI5Ny8tMSBpbiAx MCBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2Nj L2MvNzBhM2ExZDA2MzgxMDllYjQwMDVlY2NjZmU3NjZmMWRmOTVlOWFlMj9icmFuY2g9cmhlbC1m NDEtYmFzZQoKTG9nOgo0LjEuMi0zMgoKLS0tCmRpZmYgLS1naXQgYS9nY2M0MS1wcjMyMTIxLnBh dGNoIGIvZ2NjNDEtcHIzMjEyMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi42YmYzMzJkCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjNDEtcHIzMjEyMS5wYXRjaApAQCAt MCwwICsxLDEzMiBAQAorMjAwNy0xMC0xMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5j b20+CisKKwlQUiBjKysvMzIxMjEKKwkqIHBhcnNlci5jIChjcF9wYXJzZXJfY29tcG91bmRfc3Rh dGVtZW50KTogSGFuZGxlIGxhYmVsLWRlY2xhcmF0aW9ucworCWF0IHRoZSBiZWdpbm5pbmcgb2Yg dGhlIGNvbXBvdW5kIHN0YXRlbWVudC4KKwkoY3BfcGFyc2VyX2Jsb2NrX2RlY2xhcmF0aW9uKTog SXNzdWUgZGlhZ25vc3RpY3MgYWJvdXQgX19sYWJlbF9fCisJbm90IGF0IHRoZSBiZWdpbm5pbmcg b2YgYSBibG9jay4KKworCSogZysrLmRnL2V4dC9sYWJlbDQuQzogQWRqdXN0IGVycm9yIHJlZ2V4 cC4KKwkqIGcrKy5kZy9leHQvbGFiZWw3LkM6IE5ldyB0ZXN0LgorCSogZysrLmRnL2V4dC9sYWJl bDguQzogTmV3IHRlc3QuCisJKiBnKysuZGcvZXh0L2xhYmVsOS5DOiBOZXcgdGVzdC4KKworLS0t IGdjYy9jcC9wYXJzZXIuYwkocmV2aXNpb24gMTI5MjUyKQorKysrIGdjYy9jcC9wYXJzZXIuYwko cmV2aXNpb24gMTI5MjUzKQorQEAgLTY4MjEsNiArNjgyMSwxNSBAQCBjcF9wYXJzZXJfZXhwcmVz c2lvbl9zdGF0ZW1lbnQgKGNwX3BhcnNlCisgICAgY29tcG91bmQtc3RhdGVtZW50OgorICAgICAg eyBzdGF0ZW1lbnQtc2VxIFtvcHRdIH0KKyAKKysgICBHTlUgZXh0ZW5zaW9uOgorKworKyAgIGNv bXBvdW5kLXN0YXRlbWVudDoKKysgICAgIHsgbGFiZWwtZGVjbGFyYXRpb24tc2VxIFtvcHRdIHN0 YXRlbWVudC1zZXEgW29wdF0gfQorKworKyAgIGxhYmVsLWRlY2xhcmF0aW9uLXNlcToKKysgICAg IGxhYmVsLWRlY2xhcmF0aW9uCisrICAgICBsYWJlbC1kZWNsYXJhdGlvbi1zZXEgbGFiZWwtZGVj bGFyYXRpb24KKysKKyAgICBSZXR1cm5zIGEgdHJlZSByZXByZXNlbnRpbmcgdGhlIHN0YXRlbWVu dC4gICovCisgCisgc3RhdGljIHRyZWUKK0BAIC02ODM0LDYgKzY4NDMsOSBAQCBjcF9wYXJzZXJf Y29tcG91bmRfc3RhdGVtZW50IChjcF9wYXJzZXIgCisgICAgIHJldHVybiBlcnJvcl9tYXJrX25v ZGU7CisgICAvKiBCZWdpbiB0aGUgY29tcG91bmQtc3RhdGVtZW50LiAgKi8KKyAgIGNvbXBvdW5k X3N0bXQgPSBiZWdpbl9jb21wb3VuZF9zdG10IChpbl90cnkgPyBCQ1NfVFJZX0JMT0NLIDogMCk7 CisrICAvKiBJZiB0aGUgbmV4dCBrZXl3b3JkIGlzIGBfX2xhYmVsX18nIHdlIGhhdmUgYSBsYWJl bCBkZWNsYXJhdGlvbi4gICovCisrICB3aGlsZSAoY3BfbGV4ZXJfbmV4dF90b2tlbl9pc19rZXl3 b3JkIChwYXJzZXItPmxleGVyLCBSSURfTEFCRUwpKQorKyAgICBjcF9wYXJzZXJfbGFiZWxfZGVj bGFyYXRpb24gKHBhcnNlcik7CisgICAvKiBQYXJzZSBhbiAob3B0aW9uYWwpIHN0YXRlbWVudC1z ZXEuICAqLworICAgY3BfcGFyc2VyX3N0YXRlbWVudF9zZXFfb3B0IChwYXJzZXIsIGluX3N0YXRl bWVudF9leHByKTsKKyAgIC8qIEZpbmlzaCB0aGUgY29tcG91bmQtc3RhdGVtZW50LiAgKi8KK0BA IC03NzExLDcgKzc3MjMsNiBAQCBjcF9wYXJzZXJfZGVjbGFyYXRpb24gKGNwX3BhcnNlciogcGFy c2VyCisgCisgICAgYmxvY2stZGVjbGFyYXRpb246CisgICAgICBfX2V4dGVuc2lvbl9fIGJsb2Nr LWRlY2xhcmF0aW9uCistICAgICBsYWJlbC1kZWNsYXJhdGlvbgorIAorICAgIEMrKzB4IEV4dGVu c2lvbjoKKyAKK0BAIC03NzcyLDEyICs3NzgzLDE2IEBAIGNwX3BhcnNlcl9ibG9ja19kZWNsYXJh dGlvbiAoY3BfcGFyc2VyICoKKyAJY3BfcGFyc2VyX3VzaW5nX2RlY2xhcmF0aW9uIChwYXJzZXIs CisgCQkJCSAgICAgLyphY2Nlc3NfZGVjbGFyYXRpb25fcD0qL2ZhbHNlKTsKKyAgICAgfQorLSAg LyogSWYgdGhlIG5leHQga2V5d29yZCBpcyBgX19sYWJlbF9fJyB3ZSBoYXZlIGEgbGFiZWwgZGVj bGFyYXRpb24uICAqLworKyAgLyogSWYgdGhlIG5leHQga2V5d29yZCBpcyBgX19sYWJlbF9fJyB3 ZSBoYXZlIGEgbWlzcGxhY2VkIGxhYmVsCisrICAgICBkZWNsYXJhdGlvbi4gICovCisgICBlbHNl IGlmICh0b2tlbjEtPmtleXdvcmQgPT0gUklEX0xBQkVMKQorICAgICB7CistICAgICAgaWYgKHN0 YXRlbWVudF9wKQorLQljcF9wYXJzZXJfY29tbWl0X3RvX3RlbnRhdGl2ZV9wYXJzZSAocGFyc2Vy KTsKKy0gICAgICBjcF9wYXJzZXJfbGFiZWxfZGVjbGFyYXRpb24gKHBhcnNlcik7CisrICAgICAg Y3BfbGV4ZXJfY29uc3VtZV90b2tlbiAocGFyc2VyLT5sZXhlcik7CisrICAgICAgZXJyb3IgKCIl PF9fbGFiZWxfXyU+IG5vdCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgYmxvY2siKTsKKysgICAgICBj cF9wYXJzZXJfc2tpcF90b19lbmRfb2Zfc3RhdGVtZW50IChwYXJzZXIpOworKyAgICAgIC8qIElm IHRoZSBuZXh0IHRva2VuIGlzIG5vdyBhIGA7JywgY29uc3VtZSBpdC4gICovCisrICAgICAgaWYg KGNwX2xleGVyX25leHRfdG9rZW5faXMgKHBhcnNlci0+bGV4ZXIsIENQUF9TRU1JQ09MT04pKQor KwljcF9sZXhlcl9jb25zdW1lX3Rva2VuIChwYXJzZXItPmxleGVyKTsKKyAgICAgfQorICAgLyog SWYgdGhlIG5leHQgdG9rZW4gaXMgYHN0YXRpY19hc3NlcnQnIHdlIGhhdmUgYSBzdGF0aWMgYXNz ZXJ0aW9uLiAgKi8KKyAgIGVsc2UgaWYgKHRva2VuMS0+a2V5d29yZCA9PSBSSURfU1RBVElDX0FT U0VSVCkKKworLS0tIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9sYWJlbDkuQwkocmV2aXNpb24g MCkKKysrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9leHQvbGFiZWw5LkMJKHJldmlzaW9uIDEyOTI1 MykKK0BAIC0wLDAgKzEsMTAgQEAKKysvLyBQUiBjKysvMzIxMjEKKysvLyB7IGRnLWRvIGNvbXBp bGUgfQorKworK2ludCBmICh2b2lkKQorK3sKKysgIHdoaWxlICgxKQorKyAgICBfX2xhYmVsX18g YTsJLy8geyBkZy1lcnJvciAibm90IGF0IHRoZSBiZWdpbm5pbmciIH0KKysgIGZvciAoOzspCisr ICAgIF9fbGFiZWxfXyBiOwkvLyB7IGRnLWVycm9yICJub3QgYXQgdGhlIGJlZ2lubmluZyIgfQor K30KKy0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy9leHQvbGFiZWw0LkMJKHJldmlzaW9uIDEyOTI1 MikKKysrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy9leHQvbGFiZWw0LkMJKHJldmlzaW9uIDEyOTI1 MykKK0BAIC0zLDQgKzMsNCBAQAorIAorIC8vIHsgZGctZG8gY29tcGlsZSB9CisgCistX19sYWJl bF9fICpsOyAgLy8geyBkZy1lcnJvciAiYmVmb3JlIiB9CisrX19sYWJlbF9fICpsOyAgLy8geyBk Zy1lcnJvciAibm90IGF0IHRoZSBiZWdpbm5pbmcgb2YiIH0KKy0tLSBnY2MvdGVzdHN1aXRlL2cr Ky5kZy9leHQvbGFiZWw3LkMJKHJldmlzaW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv ZXh0L2xhYmVsNy5DCShyZXZpc2lvbiAxMjkyNTMpCitAQCAtMCwwICsxLDEyIEBACisrLy8gUFIg YysrLzMyMTIxCisrLy8geyBkZy1kbyBjb21waWxlIH0KKysKKytpbnQgZiAodm9pZCkKKyt7Cisr ICBhOjsKKysgIF9fbGFiZWxfXyBhOwkvLyB7IGRnLWVycm9yICJub3QgYXQgdGhlIGJlZ2lubmlu ZyIgfQorKyAgaW50IGI7CisrICBfX2xhYmVsX18gYzsJLy8geyBkZy1lcnJvciAibm90IGF0IHRo ZSBiZWdpbm5pbmciIH0KKysgIGE6OwkJLy8geyBkZy1lcnJvciAiZHVwbGljYXRlIGxhYmVsIiB9 CisrICBjOjsKKyt9CistLS0gZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvZXh0L2xhYmVsOC5DCShyZXZp c2lvbiAwKQorKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL2V4dC9sYWJlbDguQwkocmV2aXNpb24g MTI5MjUzKQorQEAgLTAsMCArMSwyMiBAQAorKy8vIFBSIGMrKy8zMjEyMQorKy8vIHsgZGctZG8g Y29tcGlsZSB9CisrCisraW50IGYgKHZvaWQpCisreworKyAgX19sYWJlbF9fIGEsIGI7CisrICBf X2xhYmVsX18gYzsKKysgIGE6OworKyAgYjo7CisrICBjOjsKKysgIHsKKysgICAgX19sYWJlbF9f IGQ7CisrICAgIGQ6OworKyAgICBpZiAoMCkKKysgICAgICB7CisrCV9fbGFiZWxfXyBlOworKwlf X2xhYmVsX18gZjsKKysJZjo7CisrCWU6OworKyAgICAgIH0KKysgIH0KKyt9CgpkaWZmIC0tZ2l0 IGEvZ2NjNDEtcHIzMzEzNi5wYXRjaCBiL2djYzQxLXByMzMxMzYucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQzODlhYQotLS0gL2Rldi9udWxsCisrKyBiL2djYzQx LXByMzMxMzYucGF0Y2gKQEAgLTAsMCArMSwyMzAgQEAKKzIwMDctMTAtMTUgIEpha3ViIEplbGlu ZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJUFIgdHJlZS1vcHRpbWl6YXRpb24vMzMxMzYKKwkq IG9wdHMuYyAoZGVjb2RlX29wdGlvbnMpOiBEb24ndCBlbmFibGUgZmxhZ19pcGFfdHlwZV9lc2Nh cGUuCisKKwkqIGdjYy5jLXRvcnR1cmUvZXhlY3V0ZS8yMDA3MDgyNC0xLmM6IE5ldyB0ZXN0Lgor CSogZ2NjLmRnL3ByMzMxMzYtMS5jOiBOZXcgdGVzdC4KKwkqIGdjYy5kZy9wcjMzMTM2LTIuYzog TmV3IHRlc3QuCisJKiBnY2MuZGcvcHIzMzEzNi0zLmM6IE5ldyB0ZXN0LgorCistLS0gZ2NjL29w dHMuYwkocmV2aXNpb24gMTI5MzY1KQorKysrIGdjYy9vcHRzLmMJKHJldmlzaW9uIDEyOTM2NikK K0BAIC00NzMsNyArNDczLDYgQEAgZGVjb2RlX29wdGlvbnMgKHVuc2lnbmVkIGludCBhcmdjLCBj b25zdAorICAgICAgIGZsYWdfY3NlX3NraXBfYmxvY2tzID0gMTsKKyAgICAgICBmbGFnX2djc2Ug PSAxOworICAgICAgIGZsYWdfZXhwZW5zaXZlX29wdGltaXphdGlvbnMgPSAxOworLSAgICAgIGZs YWdfaXBhX3R5cGVfZXNjYXBlID0gMTsKKyAgICAgICBmbGFnX3N0cmVuZ3RoX3JlZHVjZSA9IDE7 CisgICAgICAgZmxhZ19yZXJ1bl9jc2VfYWZ0ZXJfbG9vcCA9IDE7CisgICAgICAgZmxhZ19yZXJ1 bl9sb29wX29wdCA9IDE7CistLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuYy10b3J0dXJlL2V4ZWN1dGUv MjAwNzA4MjQtMS5jCShyZXZpc2lvbiAwKQorKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmMtdG9ydHVy ZS9leGVjdXRlLzIwMDcwODI0LTEuYwkocmV2aXNpb24gMTI5MzY2KQorQEAgLTAsMCArMSwyNCBA QAorKy8qIFBSIHRyZWUtb3B0aW1pemF0aW9uLzMzMTM2ICovCisrCisrZXh0ZXJuIHZvaWQgYWJv cnQgKHZvaWQpOworKworK3N0cnVjdCBTCisreworKyAgc3RydWN0IFMgKmE7CisrICBpbnQgYjsK Kyt9OworKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgc3RydWN0IFMgKnMgPSAoc3RydWN0 IFMgKikgMCwgKipwLCAqbjsKKysgIGZvciAocCA9ICZzOyAqcDsgcCA9ICYoKnApLT5hKTsKKysg IG4gPSAoc3RydWN0IFMgKikgX19idWlsdGluX2FsbG9jYSAoc2l6ZW9mICgqbikpOworKyAgbi0+ YSA9ICpwOworKyAgbi0+YiA9IDE7CisrICAqcCA9IG47CisrCisrICBpZiAoIXMpCisrICAgIGFi b3J0ICgpOworKyAgcmV0dXJuIDA7CisrfQorLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMzMx MzYtMS5jCShyZXZpc2lvbiAwKQorKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMzMxMzYtMS5j CShyZXZpc2lvbiAxMjkzNjYpCitAQCAtMCwwICsxLDU0IEBACisrLyogUFIgdHJlZS1vcHRpbWl6 YXRpb24vMzMxMzYgKi8KKysvKiB7IGRnLWRvIHJ1biB9ICovCisrLyogeyBkZy1vcHRpb25zICIt TzIiIH0gKi8KKysKKytleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7CisrCisrc3RydWN0IFMKKyt7 CisrICBzdHJ1Y3QgUyAqYTsKKysgIGludCBiOworKyAgZmxvYXQgZjsKKyt9OworKworK3N0YXRp YyBzdHJ1Y3QgUyBzOworKworK3N0YXRpYyBpbnQgKgorK19fYXR0cmlidXRlX18oKG5vaW5saW5l LCBjb25zdCkpCisrZm9vICh2b2lkKQorK3sKKysgIHJldHVybiAmcy5iOworK30KKysKKytmbG9h dAorK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKKytiYXIgKGZsb2F0ICpmKQorK3sKKysgIHMu ZiA9IDEuMDsKKysgICpmID0gNC4wOworKyAgcmV0dXJuIHMuZjsKKyt9CisrCisraW50CisrX19h dHRyaWJ1dGVfXygobm9pbmxpbmUpKQorK2JheiAoaW50ICp4KQorK3sKKysgIHMuYiA9IDE7Cisr ICAqeCA9IDQ7CisrICByZXR1cm4gcy5iOworK30KKysKKytpbnQKKyt0ICh2b2lkKQorK3sKKysg IGZsb2F0IGYgPSA4LjA7CisrICByZXR1cm4gYmFyICgmZikgKyBiYXogKGZvbyAoKSk7CisrfQor KworK2ludAorK21haW4gKHZvaWQpCisreworKyAgaWYgKHQgKCkgIT0gNSkKKysgICAgYWJvcnQg KCk7CisrICByZXR1cm4gMDsKKyt9CistLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIzMzEzNi0z LmMJKHJldmlzaW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIzMzEzNi0zLmMJKHJl dmlzaW9uIDEyOTM2NikKK0BAIC0wLDAgKzEsNjAgQEAKKysvKiBQUiB0cmVlLW9wdGltaXphdGlv bi8zMzEzNiAqLworKy8qIHsgZGctZG8gcnVuIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiIg fSAqLworKworK2V4dGVybiB2b2lkIGFib3J0ICh2b2lkKTsKKysKKytzdHJ1Y3QgUworK3sKKysg IHZvaWQgKmE7CisrICBpbnQgYlszXTsKKysgIGRvdWJsZSAqYzsKKyt9OworK3N0YXRpYyBkb3Vi bGUgZCwgZTsKKysKKytzdGF0aWMgc3RydWN0IFMgczsKKysKKytzdGF0aWMgaW50ICoKKytfX2F0 dHJpYnV0ZV9fKChub2lubGluZSwgY29uc3QpKQorK2ZvbyAodm9pZCkKKyt7CisrICByZXR1cm4g KGludCAqKSAmcy5iOworK30KKysKKytkb3VibGUgKgorK19fYXR0cmlidXRlX18oKG5vaW5saW5l KSkKKytiYXIgKGRvdWJsZSAqKmYpCisreworKyAgcy5jID0gJmQ7CisrICAqZiA9ICZlOworKyAg LyogQXMgbm90aGluZyBldmVyIHRha2VzIHRoZSBhZGRyZXNzIG9mIGFueSBkb3VibGUgKiBmaWVs ZCBpbiBzdHJ1Y3QgUywKKysgICAgIHRoZSB3cml0ZSB0byAqZiBjYW4ndCBhbGlhcyB3aXRoIHRo ZSBzLmMgZmllbGQuICAqLworKyAgcmV0dXJuIHMuYzsKKyt9CisrCisraW50CisrX19hdHRyaWJ1 dGVfXygobm9pbmxpbmUpKQorK2JheiAoaW50ICp4KQorK3sKKysgIHMuYlswXSA9IDE7CisrICAq eCA9IDQ7CisrICAvKiBGdW5jdGlvbiBmb28gdGFrZXMgYWRkcmVzcyBvZiBhbiBpbnQgYXJyYXkg ZmllbGQgaW4gc3RydWN0IFMsCisrICAgICBzbyAqeCBjYW4gYWxpYXMgd2l0aCB0aGUgcy5iIGZp ZWxkIChhbmQgaXQgZG9lcyBpbiB0aGlzIHRlc3RjYXNlKS4gICovCisrICByZXR1cm4gcy5iWzBd OworK30KKysKKytpbnQKKytfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCisrdCAodm9pZCkKKyt7 CisrICBkb3VibGUgKmYgPSAoZG91YmxlICopIDA7CisrICByZXR1cm4gMTAgKiAoYmFyICgmZikg IT0gJmQpICsgYmF6IChmb28gKCkpOworK30KKysKKytpbnQKKyttYWluICh2b2lkKQorK3sKKysg IGlmICh0ICgpICE9IDQpCisrICAgIGFib3J0ICgpOworKyAgcmV0dXJuIDA7CisrfQorLS0tIGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL3ByMzMxMzYtMi5jCShyZXZpc2lvbiAwKQorKysrIGdjYy90ZXN0 c3VpdGUvZ2NjLmRnL3ByMzMxMzYtMi5jCShyZXZpc2lvbiAxMjkzNjYpCitAQCAtMCwwICsxLDYw IEBACisrLyogUFIgdHJlZS1vcHRpbWl6YXRpb24vMzMxMzYgKi8KKysvKiB7IGRnLWRvIHJ1biB9 ICovCisrLyogeyBkZy1vcHRpb25zICItTzIiIH0gKi8KKysKKytleHRlcm4gdm9pZCBhYm9ydCAo dm9pZCk7CisrCisrc3RydWN0IFMKKyt7CisrICB2b2lkICphOworKyAgaW50IGI7CisrICBpbnQg KmM7CisrfTsKKytzdGF0aWMgaW50IGQsIGU7CisrCisrc3RhdGljIHN0cnVjdCBTIHM7CisrCisr c3RhdGljIGludCAqCisrX19hdHRyaWJ1dGVfXygobm9pbmxpbmUsIGNvbnN0KSkKKytmb28gKHZv aWQpCisreworKyAgcmV0dXJuICZzLmI7CisrfQorKworK2ludCAqCisrX19hdHRyaWJ1dGVfXygo bm9pbmxpbmUpKQorK2JhciAoaW50ICoqZikKKyt7CisrICBzLmMgPSAmZDsKKysgICpmID0gJmU7 CisrICAvKiBBcyBub3RoaW5nIGV2ZXIgdGFrZXMgdGhlIGFkZHJlc3Mgb2YgYW55IGludCAqIGZp ZWxkIGluIHN0cnVjdCBTLAorKyAgICAgdGhlIHdyaXRlIHRvICpmIGNhbid0IGFsaWFzIHdpdGgg dGhlIHMuYyBmaWVsZC4gICovCisrICByZXR1cm4gcy5jOworK30KKysKKytpbnQKKytfX2F0dHJp YnV0ZV9fKChub2lubGluZSkpCisrYmF6IChpbnQgKngpCisreworKyAgcy5iID0gMTsKKysgICp4 ID0gNDsKKysgIC8qIEZ1bmN0aW9uIGZvbyB0YWtlcyBhZGRyZXNzIG9mIGFuIGludCBmaWVsZCBp biBzdHJ1Y3QgUywKKysgICAgIHNvICp4IGNhbiBhbGlhcyB3aXRoIHRoZSBzLmIgZmllbGQgKGFu ZCBpdCBkb2VzIGluIHRoaXMgdGVzdGNhc2UpLiAgKi8KKysgIHJldHVybiBzLmI7CisrfQorKwor K2ludAorK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKKyt0ICh2b2lkKQorK3sKKysgIGludCAq ZiA9IChpbnQgKikgMDsKKysgIHJldHVybiAxMCAqIChiYXIgKCZmKSAhPSAmZCkgKyBiYXogKGZv byAoKSk7CisrfQorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgaWYgKHQgKCkgIT0gNCkK KysgICAgYWJvcnQgKCk7CisrICByZXR1cm4gMDsKKyt9CgpkaWZmIC0tZ2l0IGEvZ2NjNDEtcHIz MzIzOC5wYXRjaCBiL2djYzQxLXByMzMyMzgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMmVjMjg1YQotLS0gL2Rldi9udWxsCisrKyBiL2djYzQxLXByMzMyMzgucGF0 Y2gKQEAgLTAsMCArMSwxOTQgQEAKKzIwMDctMDktMjAgIEpha3ViIEplbGluZWsgIDxqYWt1YkBy ZWRoYXQuY29tPgorCisJUFIgYy8zMzIzOAorCVBSIGMvMjczMDEKKwkqIGdpbXBsaWZ5LmMgKGdp bXBsaWZ5X3ZsYV9kZWNsKTogTmV3IGZ1bmN0aW9uLgorCShnaW1wbGlmeV9kZWNsX2V4cHIpOiBN b3ZlIFZMQSBkZWNsIGhhbmRsaW5nIHRvIGdpbXBsaWZ5X3ZsYV9kZWNsLgorCUNhbGwgaXQuCisJ KGdpbXBsaWZ5X3RhcmdldF9leHByKTogSGFuZGxlIHZhcmlhYmxlIGxlbmd0aCBUQVJHRVRfRVhQ UnMuCisKKwkqIGdjYy5jLXRvcnR1cmUvZXhlY3V0ZS8yMDA3MDkxOS0xLmM6IE5ldyB0ZXN0Lgor CSogZ2NjLmRnL3ByMzMyMzguYzogTmV3IHRlc3QuCisJKiBnY2MuZGcvcHIyNzMwMS5jOiBOZXcg dGVzdC4KKworLS0tIGdjYy9naW1wbGlmeS5jCShyZXZpc2lvbiAxMjg2MjgpCisrKysgZ2NjL2dp bXBsaWZ5LmMJKHJldmlzaW9uIDEyODYyOSkKK0BAIC0xMTQ0LDYgKzExNDQsNDIgQEAgZ2ltcGxp ZnlfcmV0dXJuX2V4cHIgKHRyZWUgc3RtdCwgdHJlZSAqcAorICAgcmV0dXJuIEdTX0FMTF9ET05F OworIH0KKyAKKytzdGF0aWMgdm9pZAorK2dpbXBsaWZ5X3ZsYV9kZWNsICh0cmVlIGRlY2wsIHRy ZWUgKnN0bXRfcCkKKyt7CisrICAvKiBUaGlzIGlzIGEgdmFyaWFibGUtc2l6ZWQgZGVjbC4gIFNp bXBsaWZ5IGl0cyBzaXplIGFuZCBtYXJrIGl0CisrICAgICBmb3IgZGVmZXJyZWQgZXhwYW5zaW9u LiAgTm90ZSB0aGF0IG11ZGZsYXAgZGVwZW5kcyBvbiB0aGUgZm9ybWF0CisrICAgICBvZiB0aGUg ZW1pdHRlZCBjb2RlOiBzZWUgbXhfcmVnaXN0ZXJfZGVjbHMoKS4gICovCisrICB0cmVlIHQsIGFy Z3MsIGFkZHIsIHB0cl90eXBlOworKworKyAgZ2ltcGxpZnlfb25lX3NpemVwb3MgKCZERUNMX1NJ WkUgKGRlY2wpLCBzdG10X3ApOworKyAgZ2ltcGxpZnlfb25lX3NpemVwb3MgKCZERUNMX1NJWkVf VU5JVCAoZGVjbCksIHN0bXRfcCk7CisrCisrICAvKiBBbGwgb2NjdXJyZW5jZXMgb2YgdGhpcyBk ZWNsIGluIGZpbmFsIGdpbXBsaWZpZWQgY29kZSB3aWxsIGJlCisrICAgICByZXBsYWNlZCBieSBp bmRpcmVjdGlvbi4gIFNldHRpbmcgREVDTF9WQUxVRV9FWFBSIGRvZXMgdHdvCisrICAgICB0aGlu Z3M6IEZpcnN0LCBpdCBsZXRzIHRoZSByZXN0IG9mIHRoZSBnaW1wbGlmaWVyIGtub3cgd2hhdAor KyAgICAgcmVwbGFjZW1lbnQgdG8gdXNlLiAgU2Vjb25kLCBpdCBsZXRzIHRoZSBkZWJ1ZyBpbmZv IGtub3cKKysgICAgIHdoZXJlIHRvIGZpbmQgdGhlIHZhbHVlLiAgKi8KKysgIHB0cl90eXBlID0g YnVpbGRfcG9pbnRlcl90eXBlIChUUkVFX1RZUEUgKGRlY2wpKTsKKysgIGFkZHIgPSBjcmVhdGVf dG1wX3ZhciAocHRyX3R5cGUsIGdldF9uYW1lIChkZWNsKSk7CisrICBERUNMX0lHTk9SRURfUCAo YWRkcikgPSAwOworKyAgdCA9IGJ1aWxkX2ZvbGRfaW5kaXJlY3RfcmVmIChhZGRyKTsKKysgIFNF VF9ERUNMX1ZBTFVFX0VYUFIgKGRlY2wsIHQpOworKyAgREVDTF9IQVNfVkFMVUVfRVhQUl9QIChk ZWNsKSA9IDE7CisrCisrICBhcmdzID0gdHJlZV9jb25zIChOVUxMLCBERUNMX1NJWkVfVU5JVCAo ZGVjbCksIE5VTEwpOworKyAgdCA9IGJ1aWx0X2luX2RlY2xzW0JVSUxUX0lOX0FMTE9DQV07Cisr ICB0ID0gYnVpbGRfZnVuY3Rpb25fY2FsbF9leHByICh0LCBhcmdzKTsKKysgIHQgPSBmb2xkX2Nv bnZlcnQgKHB0cl90eXBlLCB0KTsKKysgIHQgPSBidWlsZDIgKE1PRElGWV9FWFBSLCB2b2lkX3R5 cGVfbm9kZSwgYWRkciwgdCk7CisrCisrICBnaW1wbGlmeV9hbmRfYWRkICh0LCBzdG10X3ApOwor KworKyAgLyogSW5kaWNhdGUgdGhhdCB3ZSBuZWVkIHRvIHJlc3RvcmUgdGhlIHN0YWNrIGxldmVs IHdoZW4gdGhlCisrICAgICBlbmNsb3NpbmcgQklORF9FWFBSIGlzIGV4aXRlZC4gICovCisrICBn aW1wbGlmeV9jdHhwLT5zYXZlX3N0YWNrID0gdHJ1ZTsKKyt9CisrCisgLyogR2ltcGxpZmllcyBh IERFQ0xfRVhQUiBub2RlICpTVE1UX1AgYnkgbWFraW5nIGFueSBuZWNlc3NhcnkgYWxsb2NhdGlv bgorICAgIGFuZCBpbml0aWFsaXphdGlvbiBleHBsaWNpdC4gICovCisgCitAQCAtMTE2OCwzOSAr MTIwNCw3IEBAIGdpbXBsaWZ5X2RlY2xfZXhwciAodHJlZSAqc3RtdF9wKQorICAgICAgIHRyZWUg aW5pdCA9IERFQ0xfSU5JVElBTCAoZGVjbCk7CisgCisgICAgICAgaWYgKFRSRUVfQ09ERSAoREVD TF9TSVpFIChkZWNsKSkgIT0gSU5URUdFUl9DU1QpCistCXsKKy0JICAvKiBUaGlzIGlzIGEgdmFy aWFibGUtc2l6ZWQgZGVjbC4gIFNpbXBsaWZ5IGl0cyBzaXplIGFuZCBtYXJrIGl0CistCSAgICAg Zm9yIGRlZmVycmVkIGV4cGFuc2lvbi4gIE5vdGUgdGhhdCBtdWRmbGFwIGRlcGVuZHMgb24gdGhl IGZvcm1hdAorLQkgICAgIG9mIHRoZSBlbWl0dGVkIGNvZGU6IHNlZSBteF9yZWdpc3Rlcl9kZWNs cygpLiAgKi8KKy0JICB0cmVlIHQsIGFyZ3MsIGFkZHIsIHB0cl90eXBlOworLQorLQkgIGdpbXBs aWZ5X29uZV9zaXplcG9zICgmREVDTF9TSVpFIChkZWNsKSwgc3RtdF9wKTsKKy0JICBnaW1wbGlm eV9vbmVfc2l6ZXBvcyAoJkRFQ0xfU0laRV9VTklUIChkZWNsKSwgc3RtdF9wKTsKKy0KKy0JICAv KiBBbGwgb2NjdXJyZW5jZXMgb2YgdGhpcyBkZWNsIGluIGZpbmFsIGdpbXBsaWZpZWQgY29kZSB3 aWxsIGJlCistCSAgICAgcmVwbGFjZWQgYnkgaW5kaXJlY3Rpb24uICBTZXR0aW5nIERFQ0xfVkFM VUVfRVhQUiBkb2VzIHR3bworLQkgICAgIHRoaW5nczogRmlyc3QsIGl0IGxldHMgdGhlIHJlc3Qg b2YgdGhlIGdpbXBsaWZpZXIga25vdyB3aGF0CistCSAgICAgcmVwbGFjZW1lbnQgdG8gdXNlLiAg U2Vjb25kLCBpdCBsZXRzIHRoZSBkZWJ1ZyBpbmZvIGtub3cKKy0JICAgICB3aGVyZSB0byBmaW5k IHRoZSB2YWx1ZS4gICovCistCSAgcHRyX3R5cGUgPSBidWlsZF9wb2ludGVyX3R5cGUgKFRSRUVf VFlQRSAoZGVjbCkpOworLQkgIGFkZHIgPSBjcmVhdGVfdG1wX3ZhciAocHRyX3R5cGUsIGdldF9u YW1lIChkZWNsKSk7CistCSAgREVDTF9JR05PUkVEX1AgKGFkZHIpID0gMDsKKy0JICB0ID0gYnVp bGRfZm9sZF9pbmRpcmVjdF9yZWYgKGFkZHIpOworLQkgIFNFVF9ERUNMX1ZBTFVFX0VYUFIgKGRl Y2wsIHQpOworLQkgIERFQ0xfSEFTX1ZBTFVFX0VYUFJfUCAoZGVjbCkgPSAxOworLQorLQkgIGFy Z3MgPSB0cmVlX2NvbnMgKE5VTEwsIERFQ0xfU0laRV9VTklUIChkZWNsKSwgTlVMTCk7CistCSAg dCA9IGJ1aWx0X2luX2RlY2xzW0JVSUxUX0lOX0FMTE9DQV07CistCSAgdCA9IGJ1aWxkX2Z1bmN0 aW9uX2NhbGxfZXhwciAodCwgYXJncyk7CistCSAgdCA9IGZvbGRfY29udmVydCAocHRyX3R5cGUs IHQpOworLQkgIHQgPSBidWlsZDIgKE1PRElGWV9FWFBSLCB2b2lkX3R5cGVfbm9kZSwgYWRkciwg dCk7CistCistCSAgZ2ltcGxpZnlfYW5kX2FkZCAodCwgc3RtdF9wKTsKKy0KKy0JICAvKiBJbmRp Y2F0ZSB0aGF0IHdlIG5lZWQgdG8gcmVzdG9yZSB0aGUgc3RhY2sgbGV2ZWwgd2hlbiB0aGUKKy0J ICAgICBlbmNsb3NpbmcgQklORF9FWFBSIGlzIGV4aXRlZC4gICovCistCSAgZ2ltcGxpZnlfY3R4 cC0+c2F2ZV9zdGFjayA9IHRydWU7CistCX0KKysJZ2ltcGxpZnlfdmxhX2RlY2wgKGRlY2wsIHN0 bXRfcCk7CisgCisgICAgICAgaWYgKGluaXQgJiYgaW5pdCAhPSBlcnJvcl9tYXJrX25vZGUpCisg CXsKK0BAIC00MTQ2LDggKzQxNTAsMTUgQEAgZ2ltcGxpZnlfdGFyZ2V0X2V4cHIgKHRyZWUgKmV4 cHJfcCwgdHJlZQorICAgaWYgKGluaXQpCisgICAgIHsKKyAgICAgICAvKiBUQVJHRVRfRVhQUiB0 ZW1wcyBhcmVuJ3QgcGFydCBvZiB0aGUgZW5jbG9zaW5nIGJsb2NrLCBzbyBhZGQgaXQKKy0JIHRv IHRoZSB0ZW1wcyBsaXN0LiAgKi8KKy0gICAgICBnaW1wbGVfYWRkX3RtcF92YXIgKHRlbXApOwor KwkgdG8gdGhlIHRlbXBzIGxpc3QuICBIYW5kbGUgYWxzbyB2YXJpYWJsZSBsZW5ndGggVEFSR0VU X0VYUFJzLiAgKi8KKysgICAgICBpZiAoVFJFRV9DT0RFIChERUNMX1NJWkUgKHRlbXApKSAhPSBJ TlRFR0VSX0NTVCkKKysJeworKwkgIGlmICghVFlQRV9TSVpFU19HSU1QTElGSUVEIChUUkVFX1RZ UEUgKHRlbXApKSkKKysJICAgIGdpbXBsaWZ5X3R5cGVfc2l6ZXMgKFRSRUVfVFlQRSAodGVtcCks IHByZV9wKTsKKysJICBnaW1wbGlmeV92bGFfZGVjbCAodGVtcCwgcHJlX3ApOworKwl9CisrICAg ICAgZWxzZQorKwlnaW1wbGVfYWRkX3RtcF92YXIgKHRlbXApOworIAorICAgICAgIC8qIElmIFRB UkdFVF9FWFBSX0lOSVRJQUwgaXMgdm9pZCwgdGhlbiB0aGUgbWVyZSBldmFsdWF0aW9uIG9mIHRo ZQorIAkgZXhwcmVzc2lvbiBpcyBzdXBwb3NlZCB0byBpbml0aWFsaXplIHRoZSBzbG90LiAgKi8K Ky0tLSBnY2MvdGVzdHN1aXRlL2djYy5jLXRvcnR1cmUvZXhlY3V0ZS8yMDA3MDkxOS0xLmMJKHJl dmlzaW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuYy10b3J0dXJlL2V4ZWN1dGUvMjAwNzA5 MTktMS5jCShyZXZpc2lvbiAxMjg2MjkpCitAQCAtMCwwICsxLDQxIEBACisrLyogUFIgYy8zMzIz OCAqLworKworK3R5cGVkZWYgX19TSVpFX1RZUEVfXyBzaXplX3Q7CisraW50IG1lbWNtcCAoY29u c3Qgdm9pZCAqLCBjb25zdCB2b2lkICosIHNpemVfdCk7Cisrdm9pZCBhYm9ydCAodm9pZCk7Cisr Cisrdm9pZAorK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKKytiYXIgKHZvaWQgKngsIHZvaWQg KnkpCisreworKyAgc3RydWN0IFMgeyBjaGFyIHdbOF07IH0gKnAgPSB4LCAqcSA9IHk7CisrICBp ZiAobWVtY21wIChwLT53LCAienl4d3Z1dCIsIDgpICE9IDApCisrICAgIGFib3J0ICgpOworKyAg aWYgKG1lbWNtcCAocVswXS53LCAiYWJjZGVmZyIsIDgpICE9IDApCisrICAgIGFib3J0ICgpOwor KyAgaWYgKG1lbWNtcCAocVsxXS53LCAiQUJDREVGRyIsIDgpICE9IDApCisrICAgIGFib3J0ICgp OworKyAgaWYgKG1lbWNtcCAocVsyXS53LCAienl4d3Z1dCIsIDgpICE9IDApCisrICAgIGFib3J0 ICgpOworKyAgaWYgKG1lbWNtcCAocVszXS53LCAienl4d3Z1dCIsIDgpICE9IDApCisrICAgIGFi b3J0ICgpOworK30KKysKKyt2b2lkCisrX19hdHRyaWJ1dGVfXygobm9pbmxpbmUpKQorK2ZvbyAo dm9pZCAqeCwgaW50IHkpCisreworKyAgc3RydWN0IFMgeyBjaGFyIHdbeV07IH0gKnAgPSB4LCBh OworKyAgaW50IGk7CisrICBhID0gKHsgc3RydWN0IFMgYjsgYiA9IHBbMl07IHBbM10gPSBiOyB9 KTsKKysgIGJhciAoJmEsIHgpOworK30KKysKKytpbnQKKyttYWluICh2b2lkKQorK3sKKysgIHN0 cnVjdCBTIHsgY2hhciB3WzhdOyB9IHBbNF0KKysgICAgPSB7ICJhYmNkZWZnIiwgIkFCQ0RFRkci LCAienl4d3Z1dCIsICJaWVhXVlVUIiB9OworKyAgZm9vIChwLCA4KTsKKysgIHJldHVybiAwOwor K30KKy0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjMzMjM4LmMJKHJldmlzaW9uIDApCisrKysg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIzMzIzOC5jCShyZXZpc2lvbiAxMjg2MjkpCitAQCAtMCww ICsxLDEyIEBACisrLyogUFIgYy8zMzIzOCAqLworKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisr LyogeyBkZy1vcHRpb25zICItc3RkPWdudTg5IiB9ICovCisrCisrdm9pZAorK3JldmVyc2UgKHZv aWQgKngsIGludCB5LCBpbnQgeikKKyt7CisrICBzdHJ1Y3QgeyBjaGFyIHdbel07IH0gKnAgPSB4 LCBhOworKyAgaW50IGksIGo7CisrICBmb3IgKGkgPSB5IC0gMSwgaiA9IDA7IGogPCB5IC8gMjsg aS0tLCBqKyspCisrICAgICh7IGEgPSBwW2ldOyBwW2ldID0gcFtqXTsgcFtqXSA9IGE7IH0pOwor K30KKy0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjI3MzAxLmMJKHJldmlzaW9uIDApCisrKysg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIyNzMwMS5jCShyZXZpc2lvbiAxMjg2MjkpCitAQCAtMCww ICsxLDE1IEBACisrLyogUFIgYy8yNzMwMSAqLworKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisr LyogeyBkZy1vcHRpb25zICItTzIgLXN0ZD1nbnU4OSIgfSAqLworKworK3ZvaWQKKytmb28gKHZv aWQgKnB0ciwgbG9uZyBuKQorK3sKKysgIF9fYXNtX18gX192b2xhdGlsZV9fICgiIiA6OiAibSIg KCh7IHN0cnVjdCB7IGNoYXIgeFtuXTsgfSAqcCA9IHB0cjsgKnA7IH0pKSk7CisrfQorKworK3Zv aWQKKytiYXIgKHZvaWQgKnB0ciwgbG9uZyBuKQorK3sKKysgIF9fYXNtX18gX192b2xhdGlsZV9f ICgiIiA6OiAibSIgKCooeyBzdHJ1Y3QgeyBjaGFyIHhbbl07IH0gKnAgPSBwdHI7IHA7IH0pKSk7 CisrfQoKZGlmZiAtLWdpdCBhL2djYzQxLXByMzM2MTkucGF0Y2ggYi9nY2M0MS1wcjMzNjE5LnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0M2FhMWUKLS0tIC9kZXYv bnVsbAorKysgYi9nY2M0MS1wcjMzNjE5LnBhdGNoCkBAIC0wLDAgKzEsNzcgQEAKKzIwMDctMTAt MTUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJUFIgdHJlZS1vcHRpbWl6 YXRpb24vMzM2MTkKKwkqIHRyZWUtb3V0b2Ytc3NhLmMgKGNoZWNrX3JlcGxhY2VhYmxlKTogUmV0 dXJuIGZhbHNlIGZvciBhbGwKKwljYWxscyBvdGhlciB0aGFuIF9fYnVpbHRpbl9leHBlY3QuCisK KwkqIGdjYy5kZy9wcjMzNjE5LmM6IE5ldyB0ZXN0LgorCistLS0gZ2NjL3RyZWUtb3V0b2Ytc3Nh LmMJMjAwNy0xMC0xMSAyMjowMTo0MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnY2MvdHJlZS1vdXRv Zi1zc2EuYwkyMDA3LTEwLTE2IDE0OjI4OjQyLjAwMDAwMDAwMCArMDIwMAorQEAgLTE1NzAsMTIg KzE1NzAsMTQgQEAgY2hlY2tfcmVwbGFjZWFibGUgKHRlbXBfZXhwcl90YWJsZV9wIHRhYgorICAg aWYgKGZsYWdfZmxvYXRfc3RvcmUgJiYgRkxPQVRfVFlQRV9QIChUUkVFX1RZUEUgKFRSRUVfT1BF UkFORCAoc3RtdCwgMSkpKSkKKyAgICAgcmV0dXJuIGZhbHNlOworIAorLSAgLyogQ2FsbHMgdG8g ZnVuY3Rpb25zIHdpdGggc2lkZS1lZmZlY3RzIGNhbm5vdCBiZSByZXBsYWNlZC4gICovCisrICAv KiBObyBjYWxscyB0byBmdW5jdGlvbnMgb3RoZXIgdGhhbiBfX2J1aWx0aW5fZXhwZWN0IGFyZSBy ZXBsYWNlYWJsZS4gICovCisgICBpZiAoKGNhbGxfZXhwciA9IGdldF9jYWxsX2V4cHJfaW4gKHN0 bXQpKSAhPSBOVUxMX1RSRUUpCisgICAgIHsKKy0gICAgICBpbnQgY2FsbF9mbGFncyA9IGNhbGxf ZXhwcl9mbGFncyAoY2FsbF9leHByKTsKKy0gICAgICBpZiAoVFJFRV9TSURFX0VGRkVDVFMgKGNh bGxfZXhwcikKKy0JICAmJiAhKGNhbGxfZmxhZ3MgJiAoRUNGX1BVUkUgfCBFQ0ZfQ09OU1QgfCBF Q0ZfTk9SRVRVUk4pKSkKKysgICAgICB0cmVlIGZuZGVjbCA9IGdldF9jYWxsZWVfZm5kZWNsIChj YWxsX2V4cHIpOworKworKyAgICAgIGlmIChmbmRlY2wgPT0gTlVMTF9UUkVFCisrCSAgfHwgREVD TF9CVUlMVF9JTl9DTEFTUyAoZm5kZWNsKSAhPSBCVUlMVF9JTl9OT1JNQUwKKysJICB8fCBERUNM X0ZVTkNUSU9OX0NPREUgKGZuZGVjbCkgIT0gQlVJTFRfSU5fRVhQRUNUKQorIAlyZXR1cm4gZmFs c2U7CisgICAgIH0KKyAKKy0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjMzNjE5LmMJKHJldmlz aW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIzMzYxOS5jCShyZXZpc2lvbiAxMjkz NTApCitAQCAtMCwwICsxLDQ1IEBACisrLyogUFIgdHJlZS1vcHRpbWl6YXRpb24vMzM2MTkgKi8K KysvKiB7IGRnLWRvIHJ1biB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIiIH0gKi8KKysKKysj aWZkZWYgX19wb3dlcnBjX18KKysjIGRlZmluZSBSRUcxIF9fYXNtX18gKCIzIikKKysjIGRlZmlu ZSBSRUcyIF9fYXNtX18gKCI0IikKKysjZWxpZiBkZWZpbmVkIF9feDg2XzY0X18KKysjIGRlZmlu ZSBSRUcxIF9fYXNtX18gKCJyZGkiKQorKyMgZGVmaW5lIFJFRzIgX19hc21fXyAoInJzaSIpCisr I2Vsc2UKKysjIGRlZmluZSBSRUcxCisrIyBkZWZpbmUgUkVHMgorKyNlbmRpZgorKworK3N0YXRp YyBpbmxpbmUgdm9pZAorK2JhciAodW5zaWduZWQgbG9uZyB4LCBpbnQgeSkKKyt7CisrICByZWdp c3RlciB1bnNpZ25lZCBsb25nIHAxIFJFRzEgPSB4OworKyAgcmVnaXN0ZXIgdW5zaWduZWQgbG9u ZyBwMiBSRUcyID0geTsKKysgIF9fYXNtX18gdm9sYXRpbGUgKCIiIDogIj1yIiAocDEpLCAiPXIi IChwMikgOiAiMCIgKHAxKSwgIjEiIChwMikgOiAibWVtb3J5Iik7CisrICBpZiAocDEgIT0gMHhk ZWFkVUwgfHwgcDIgIT0gMHhiZWZVTCkKKysgICAgX19idWlsdGluX2Fib3J0ICgpOworK30KKysK KytfX2F0dHJpYnV0ZV9fKChjb25zdCwgbm9pbmxpbmUpKSBpbnQKKytiYXogKGludCB4KQorK3sK KysgIHJldHVybiB4OworK30KKysKKytfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIHZvaWQKKytm b28gKHVuc2lnbmVkIGxvbmcgKngsIGludCB5KQorK3sKKysgIHVuc2lnbmVkIGxvbmcgYSA9ICp4 OworKyAgYmFyIChhLCBiYXogKHkpKTsKKyt9CisrCisraW50CisrbWFpbiAodm9pZCkKKyt7Cisr ICB1bnNpZ25lZCBsb25nIGEgPSAweGRlYWRVTDsKKysgIGZvbyAoJmEsIDB4YmVmVUwpOworKyAg cmV0dXJuIDA7CisrfQoKZGlmZiAtLWdpdCBhL2djYzQxLXByMzM2MzkucGF0Y2ggYi9nY2M0MS1w cjMzNjM5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkY2NkYjQK LS0tIC9kZXYvbnVsbAorKysgYi9nY2M0MS1wcjMzNjM5LnBhdGNoCkBAIC0wLDAgKzEsODQgQEAK KzIwMDctMTAtMDMgIEFuZHJldyBIYWxleSAgPGFwaEByZWRoYXQuY29tPgorCisJUFIgamF2YS8z MzYzOQorCSogY2xhc3MuYyAobWFuZ2xlZF9jbGFzc25hbWUpOiBEZXRlY3QgYW5kIHJlcGxhY2Ug aWxsZWdhbAorCWNoYXJhY3RlcnMgaW4gYXNzZW1ibHkgbGFuZ3VhZ2Ugc3ltYm9scy4KKwkoZ2Vu X2luZGlyZWN0X2Rpc3BhdGNoX3RhYmxlcyk6IENhbGwgbWFuZ2xlZF9jbGFzc25hbWUoKSBvbgor CXRoZSB0eXBlLgorCistLS0gZ2NjL2phdmEvY2xhc3MuYwkocmV2aXNpb24gMTI4OTgwKQorKysr IGdjYy9qYXZhL2NsYXNzLmMJKHJldmlzaW9uIDEyODk4MSkKK0BAIC0zMTQsMTAgKzMxNCw2MyBA QCBpZGVudGlmaWVyX3N1YnN0IChjb25zdCB0cmVlIG9sZF9pZCwKKyB0cmVlCisgbWFuZ2xlZF9j bGFzc25hbWUgKGNvbnN0IGNoYXIgKnByZWZpeCwgdHJlZSB0eXBlKQorIHsKKysgIHRyZWUgcmVz dWx0OworICAgdHJlZSBpZGVudCA9IFRZUEVfTkFNRSAodHlwZSk7CisgICBpZiAoVFJFRV9DT0RF IChpZGVudCkgIT0gSURFTlRJRklFUl9OT0RFKQorICAgICBpZGVudCA9IERFQ0xfTkFNRSAoaWRl bnQpOworLSAgcmV0dXJuIGlkZW50aWZpZXJfc3Vic3QgKGlkZW50LCBwcmVmaXgsICcuJywgJ18n LCAiIik7CisrICByZXN1bHQgPSBpZGVudGlmaWVyX3N1YnN0IChpZGVudCwgcHJlZml4LCAnLics ICdfJywgIiIpOworKworKyAgLyogUmVwbGFjZSBhbnkgY2hhcmFjdGVycyB0aGF0IGFyZW4ndCBp biB0aGUgc2V0IFswLTlhLXpBLVpfJF0gd2l0aAorKyAgICAgIl8weFhYIi4gIENsYXNzIG5hbWVz IGNvbnRhaW5pbmcgc3VjaCBjaHJhY3RlcnMgYXJlIHVuY29tbW9uLCBidXQKKysgICAgIHRoZXkg ZG8gc29tZXRpbWVzIG9jY3VyIGluIGNsYXNzIGZpbGVzLiAgV2l0aG91dCB0aGlzIGNoZWNrLAor KyAgICAgdGhlc2UgbmFtZXMgY2F1c2UgYXNzZW1ibHkgZXJyb3JzLgorKworKyAgICAgVGhlcmUg aXMgYSBwb3NzaWJpbGl0eSB0aGF0IGEgcmVhbCBjbGFzcyBuYW1lIGNvdWxkIGNvbmZsaWN0IHdp dGgKKysgICAgIHRoZSBpZGVudGlmaWVyIHdlIGdlbmVyYXRlLCBidXQgaXQgaXMgdW5saWtlbHkg YW5kIHdpbGwKKysgICAgIGltbWVkaWF0ZWx5IGJlIGRldGVjdGVkIGFzIGFuIGFzc2VtYmxlciBl cnJvci4gIEF0IHNvbWUgcG9pbnQgd2UKKysgICAgIHNob3VsZCBkbyBzb21ldGhpbmcgbW9yZSBl bGFib3JhdGUgKHBlcmhhcHMgdXNpbmcgdGhlIGZ1bGwKKysgICAgIHVuaWNvZGUgbWFuZ2xpbmcg c2NoZW1lKSBpbiBvcmRlciB0byBwcmV2ZW50IHN1Y2ggYSBjb25mbGljdC4gICovCisrICB7Cisr ICAgIGludCBpOworKyAgICBjb25zdCBpbnQgbGVuID0gSURFTlRJRklFUl9MRU5HVEggKHJlc3Vs dCk7CisrICAgIGNvbnN0IGNoYXIgKnAgPSBJREVOVElGSUVSX1BPSU5URVIgKHJlc3VsdCk7Cisr ICAgIGludCBpbGxlZ2FsX2NoYXJzID0gMDsKKysKKysgICAgLyogTWFrZSB0d28gcGFzc2VzIG92 ZXIgdGhlIGlkZW50aWZpZXIuICBUaGUgZmlyc3QgcGFzcyBpcyBtZXJlbHkKKysgICAgICAgdG8g Y291bnQgaWxsZWdhbCBjaGFyYWN0ZXJzOyB3ZSBuZWVkIHRvIGRvIHRoaXMgaW4gb3JkZXIgdG8K KysgICAgICAgYWxsb2NhdGUgYSBidWZmZXIuICAqLworKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVu OyBpKyspCisrICAgICAgeworKwljaGFyIGMgPSBwW2ldOworKwlpbGxlZ2FsX2NoYXJzICs9ICgh IElTQUxOVU0gKGMpICYmIGMgIT0gJ18nICYmIGMgIT0gJyQnKTsKKysgICAgICB9CisrCisrICAg IC8qIEFuZCB0aGUgc2Vjb25kIHBhc3MsIHdoaWNoIGlzIHJhcmVseSBleGVjdXRlZCwgZG9lcyB0 aGUKKysgICAgICAgcmV3cml0aW5nLiAgKi8KKysgICAgaWYgKGlsbGVnYWxfY2hhcnMgIT0gMCkK KysgICAgICB7CisrCWNoYXIgKmJ1ZmZlciA9IGFsbG9jYSAoaWxsZWdhbF9jaGFycyAqIDQgKyBs ZW4gKyAxKTsKKysJaW50IGo7CisrCisrCWZvciAoaSA9IDAsIGogPSAwOyBpIDwgbGVuOyBpKysp CisrCSAgeworKwkgICAgY2hhciBjID0gcFtpXTsKKysJICAgIGlmICghIElTQUxOVU0gKGMpICYm IGMgIT0gJ18nICYmIGMgIT0gJyQnKQorKwkgICAgICB7CisrCQlidWZmZXJbaisrXSA9ICdfJzsK KysJCXNwcmludGYgKCZidWZmZXJbal0sICIweCUwMngiLCBjKTsKKysJCWogKz0gNDsKKysJICAg ICAgfQorKwkgICAgZWxzZQorKwkgICAgICBidWZmZXJbaisrXSA9IGM7CisrCSAgfQorKworKwli dWZmZXJbal0gPSAwOworKwlyZXN1bHQgPSBnZXRfaWRlbnRpZmllciAoYnVmZmVyKTsKKysgICAg ICB9CisrICB9CisrCisrICByZXR1cm4gcmVzdWx0OworIH0KKyAKKyB0cmVlCitAQCAtMzg5LDcg KzQ0Miw3IEBAIHdoaWxlICgwKQorIHZvaWQKKyBnZW5faW5kaXJlY3RfZGlzcGF0Y2hfdGFibGVz ICh0cmVlIHR5cGUpCisgeworLSAgY29uc3QgY2hhciAqdHlwZW5hbWUgPSBJREVOVElGSUVSX1BP SU5URVIgKERFQ0xfTkFNRSAoVFlQRV9OQU1FICh0eXBlKSkpOworKyAgY29uc3QgY2hhciAqdHlw ZW5hbWUgPSBJREVOVElGSUVSX1BPSU5URVIgKG1hbmdsZWRfY2xhc3NuYW1lICgiIiwgdHlwZSkp OworICAgeyAgCisgICAgIHRyZWUgZmllbGQgPSBOVUxMOworICAgICBjaGFyICpidWYgPSBhbGxv Y2EgKHN0cmxlbiAodHlwZW5hbWUpICsgc3RybGVuICgiX2NhdGNoX2NsYXNzZXNfIikgKyAxKTsK CmRpZmYgLS1naXQgYS9nY2M0MS1wcjMzNzQ0LnBhdGNoIGIvZ2NjNDEtcHIzMzc0NC5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTRmZDRkCi0tLSAvZGV2L251bGwK KysrIGIvZ2NjNDEtcHIzMzc0NC5wYXRjaApAQCAtMCwwICsxLDY3IEBACisyMDA3LTEwLTE1ICBK YWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCVBSIGMrKy8zMzc0NAorCSogcGFy c2VyLmMgKGNwX3BhcnNlcl9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb25fbGlzdCk6IFNldAorCWdy ZWF0ZXJfdGhhbl9pc19vcGVyYXRvcl9wIHRvIHRydWUgaW4gYmV0d2VlbiB0aGUgcGFyZW5zLgor CisJKiBnKysuZGcvdGVtcGxhdGUvYXJnNi5DOiBOZXcgdGVzdC4KKworLS0tIGdjYy9jcC9wYXJz ZXIuYy5qagkyMDA3LTEwLTEyIDAwOjI4OjI0LjAwMDAwMDAwMCArMDIwMAorKysrIGdjYy9jcC9w YXJzZXIuYwkyMDA3LTEwLTE1IDE0OjUyOjAyLjAwMDAwMDAwMCArMDIwMAorQEAgLTQ5NzYsNiAr NDk3Niw3IEBAIGNwX3BhcnNlcl9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb25fbGlzdCAKKyAgIHRy ZWUgZXhwcmVzc2lvbl9saXN0ID0gTlVMTF9UUkVFOworICAgYm9vbCBmb2xkX2V4cHJfcCA9IGlz X2F0dHJpYnV0ZV9saXN0OworICAgdHJlZSBpZGVudGlmaWVyID0gTlVMTF9UUkVFOworKyAgYm9v bCBzYXZlZF9ncmVhdGVyX3RoYW5faXNfb3BlcmF0b3JfcDsKKyAKKyAgIC8qIEFzc3VtZSBhbGwg dGhlIGV4cHJlc3Npb25zIHdpbGwgYmUgY29uc3RhbnQuICAqLworICAgaWYgKG5vbl9jb25zdGFu dF9wKQorQEAgLTQ5ODQsNiArNDk4NSwxMiBAQCBjcF9wYXJzZXJfcGFyZW50aGVzaXplZF9leHBy ZXNzaW9uX2xpc3QgCisgICBpZiAoIWNwX3BhcnNlcl9yZXF1aXJlIChwYXJzZXIsIENQUF9PUEVO X1BBUkVOLCAiYCgnIikpCisgICAgIHJldHVybiBlcnJvcl9tYXJrX25vZGU7CisgCisrICAvKiBX aXRoaW4gYSBwYXJlbnRoZXNpemVkIGV4cHJlc3Npb24sIGEgYD4nIHRva2VuIGlzIGFsd2F5cwor KyAgICAgdGhlIGdyZWF0ZXItdGhhbiBvcGVyYXRvci4gICovCisrICBzYXZlZF9ncmVhdGVyX3Ro YW5faXNfb3BlcmF0b3JfcAorKyAgICA9IHBhcnNlci0+Z3JlYXRlcl90aGFuX2lzX29wZXJhdG9y X3A7CisrICBwYXJzZXItPmdyZWF0ZXJfdGhhbl9pc19vcGVyYXRvcl9wID0gdHJ1ZTsKKysKKyAg IC8qIENvbnN1bWUgZXhwcmVzc2lvbnMgdW50aWwgdGhlcmUgYXJlIG5vIG1vcmUuICAqLworICAg aWYgKGNwX2xleGVyX25leHRfdG9rZW5faXNfbm90IChwYXJzZXItPmxleGVyLCBDUFBfQ0xPU0Vf UEFSRU4pKQorICAgICB3aGlsZSAodHJ1ZSkKK0BAIC01MDY5LDkgKzUwNzYsMTYgQEAgY3BfcGFy c2VyX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbl9saXN0IAorICAgICAgIGlmIChlbmRpbmcgPCAw KQorIAlnb3RvIGdldF9jb21tYTsKKyAgICAgICBpZiAoIWVuZGluZykKKy0JcmV0dXJuIGVycm9y X21hcmtfbm9kZTsKKysJeworKwkgIHBhcnNlci0+Z3JlYXRlcl90aGFuX2lzX29wZXJhdG9yX3AK KysJICAgID0gc2F2ZWRfZ3JlYXRlcl90aGFuX2lzX29wZXJhdG9yX3A7CisrCSAgcmV0dXJuIGVy cm9yX21hcmtfbm9kZTsKKysJfQorICAgICB9CisgCisrICBwYXJzZXItPmdyZWF0ZXJfdGhhbl9p c19vcGVyYXRvcl9wCisrICAgID0gc2F2ZWRfZ3JlYXRlcl90aGFuX2lzX29wZXJhdG9yX3A7Cisr CisgICAvKiBXZSBidWlsdCB1cCB0aGUgbGlzdCBpbiByZXZlcnNlIG9yZGVyIHNvIHdlIG11c3Qg cmV2ZXJzZSBpdCBub3cuICAqLworICAgZXhwcmVzc2lvbl9saXN0ID0gbnJldmVyc2UgKGV4cHJl c3Npb25fbGlzdCk7CisgICBpZiAoaWRlbnRpZmllcikKKy0tLSBnY2MvdGVzdHN1aXRlL2crKy5k Zy90ZW1wbGF0ZS9hcmc2LkMuamoJMjAwNy0xMC0xNSAxNDo1OToxMy4wMDAwMDAwMDAgKzAyMDAK KysrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy90ZW1wbGF0ZS9hcmc2LkMJMjAwNy0xMC0xNSAxNDo1 NzozMS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0wLDAgKzEsMTUgQEAKKysvLyBQUiBjKysvMzM3NDQK KysvLyB7IGRnLWRvIHJ1biB9CisrCisrdGVtcGxhdGUgPGJvb2wgQj4gc3RydWN0IEEgeyBib29s IGI7IEEoKSA6IGIoQikge307IH07CisrQTxib29sKDEpPiBhOworK0E8Ym9vbCgxPDIpPiBiOwor K0E8KGJvb2wpKDI+MSk+IGM7CisrQTxib29sKCgyPjEpKT4gZDsKKytBPGJvb2woMj4xKT4gZTsK KysKKytpbnQKKyttYWluICgpCisreworKyAgcmV0dXJuIChhLmIgJiYgYi5iICYmIGMuYiAmJiBk LmIgJiYgZS5iKSA/IDAgOiAxOworK30KCmRpZmYgLS1naXQgYS9nY2M0MS1wcjMzNzYzLnBhdGNo IGIvZ2NjNDEtcHIzMzc2My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li44ZjExMWJhCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjNDEtcHIzMzc2My5wYXRjaApAQCAtMCww ICsxLDE1MyBAQAorMjAwNy0xMC0xNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+ CisKKwlQUiB0cmVlLW9wdGltaXphdGlvbi8zMzc2MworCSogZ2NjLmRnL3ByMzM3NjMuYzogTmV3 IHRlc3QuCisJKiBnKysuZGcvb3B0L2lubGluZTEyLkM6IE5ldyB0ZXN0LgorCisyMDA3LTEwLTE0 ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CisKKwlQUiB0cmVlLW9wdGltaXphdGlvbi8zMzc2 MworCSogdHJlZS1pbmxpbmUuYyAoZXhwYW5kX2NhbGxfaW5saW5lKTogU2lsZW50bHkgaWdub3Jl IGFsd2F5c19pbmxpbmUKKwlhdHRyaWJ1dGUgZm9yIHJlZGVmaW5lZCBleHRlcm4gaW5saW5lIGZ1 bmN0aW9ucy4KKworLS0tIGdjYy90cmVlLWlubGluZS5jLmpqCTIwMDctMDktMjUgMTI6MjM6MDUu MDAwMDAwMDAwICswMjAwCisrKysgZ2NjL3RyZWUtaW5saW5lLmMJMjAwNy0xMC0xNiAxNToyNzo1 MS4wMDAwMDAwMDAgKzAyMDAKK0BAIC0yMDU5LDYgKzIwNTksMTIgQEAgZXhwYW5kX2NhbGxfaW5s aW5lIChiYXNpY19ibG9jayBiYiwgdHJlZQorICAgaWYgKCFjZ3JhcGhfaW5saW5lX3AgKGNnX2Vk Z2UsICZyZWFzb24pKQorICAgICB7CisgICAgICAgaWYgKGxvb2t1cF9hdHRyaWJ1dGUgKCJhbHdh eXNfaW5saW5lIiwgREVDTF9BVFRSSUJVVEVTIChmbikpCisrCS8qIEZvciBleHRlcm4gaW5saW5l IGZ1bmN0aW9ucyB0aGF0IGdldCByZWRlZmluZWQgd2UgYWx3YXlzCisrCSAgIHNpbGVudGx5IGln bm9yZWQgYWx3YXlfaW5saW5lIGZsYWcuIEJldHRlciBiZWhhdmlvdXIgd291bGQKKysJICAgYmUg dG8gYmUgYWJsZSB0byBrZWVwIGJvdGggYm9kaWVzIGFuZCB1c2UgZXh0ZXJuIGlubGluZSBib2R5 CisrCSAgIGZvciBpbmxpbmluZywgYnV0IHdlIGNhbid0IGRvIHRoYXQgYmVjYXVzZSBmcm9udGVu ZHMgb3ZlcndyaXRlCisrCSAgIHRoZSBib2R5LiAgKi8KKysJICAmJiAhY2dfZWRnZS0+Y2FsbGVl LT5sb2NhbC5yZWRlZmluZWRfZXh0ZXJuX2lubGluZQorIAkgIC8qIEF2b2lkIHdhcm5pbmdzIGR1 cmluZyBlYXJseSBpbmxpbmUgcGFzcy4gKi8KKyAJICAmJiAoIWZsYWdfdW5pdF9hdF9hX3RpbWUg fHwgY2dyYXBoX2dsb2JhbF9pbmZvX3JlYWR5KSkKKyAJeworLS0tIGdjYy90ZXN0c3VpdGUvZ2Nj LmRnL3ByMzM3NjMuYy5qagkyMDA3LTEwLTE2IDE1OjIwOjQxLjAwMDAwMDAwMCArMDIwMAorKysr IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMzM3NjMuYwkyMDA3LTEwLTE2IDE1OjIwOjM1LjAwMDAw MDAwMCArMDIwMAorQEAgLTAsMCArMSw2MCBAQAorKy8qIFBSIHRyZWUtb3B0aW1pemF0aW9uLzMz NzYzICovCisrLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiIg fSAqLworKworK3R5cGVkZWYgc3RydWN0CisreworKyAgdm9pZCAqYTsKKysgIHZvaWQgKmI7Cisr fSBUOworK2V4dGVybiB2b2lkICpmb28gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKytl eHRlcm4gdm9pZCAqYmFyICh2b2lkICosIGNvbnN0IGNoYXIgKiwgVCk7CisrZXh0ZXJuIGludCBi YXogKGNvbnN0IGNoYXIgKiwgaW50KTsKKysKKytleHRlcm4gaW5saW5lIF9fYXR0cmlidXRlX18g KChhbHdheXNfaW5saW5lLCBnbnVfaW5saW5lKSkgaW50CisrYmF6IChjb25zdCBjaGFyICp4LCBp bnQgeSkKKyt7CisrICByZXR1cm4gMjsKKyt9CisrCisraW50CisrYmF6IChjb25zdCBjaGFyICp4 LCBpbnQgeSkKKyt7CisrICByZXR1cm4gMTsKKyt9CisrCisraW50IHhhLCB4YjsKKysKKytzdGF0 aWMgdm9pZCAqCisraW5sIChjb25zdCBjaGFyICp4LCBjb25zdCBjaGFyICp5KQorK3sKKysgIFQg dCA9IHsgJnhhLCAmeGIgfTsKKysgIGludCAqZiA9IChpbnQgKikgX19idWlsdGluX21hbGxvYyAo c2l6ZW9mIChpbnQpKTsKKysgIGNvbnN0IGNoYXIgKno7CisrICBpbnQgbyA9IDA7CisrICB2b2lk ICpyID0gMDsKKysKKysgIGZvciAoeiA9IHk7ICp6OyB6KyspCisrICAgIHsKKysgICAgICBpZiAo KnogPT0gJ3InKQorKwlvIHw9IDE7CisrICAgICAgaWYgKCp6ID09ICd3JykKKysJbyB8PSAyOwor KyAgICB9CisrICBpZiAobyA9PSAxKQorKyAgICAqZiA9IGJheiAoeCwgMCk7CisrICBpZiAobyA9 PSAyKQorKyAgICAqZiA9IGJheiAoeCwgMSk7CisrICBpZiAobyA9PSAzKQorKyAgICAqZiA9IGJh eiAoeCwgMik7CisrCisrICBpZiAobyAmJiAqZiA+IDApCisrICAgIHIgPSBiYXIgKGYsICJ3Iiwg dCk7CisrICByZXR1cm4gcjsKKyt9CisrCisrdm9pZCAqCisrZm9vIChjb25zdCBjaGFyICp4LCBj b25zdCBjaGFyICp5KQorK3sKKysgIHJldHVybiBpbmwgKHgsIHkpOworK30KKy0tLSBnY2MvdGVz dHN1aXRlL2crKy5kZy9vcHQvaW5saW5lMTIuQy5qagkyMDA3LTEwLTE2IDE1OjI2OjAxLjAwMDAw MDAwMCArMDIwMAorKysrIGdjYy90ZXN0c3VpdGUvZysrLmRnL29wdC9pbmxpbmUxMi5DCTIwMDct MTAtMTYgMTU6MjY6MjAuMDAwMDAwMDAwICswMjAwCitAQCAtMCwwICsxLDYwIEBACisrLy8gUFIg dHJlZS1vcHRpbWl6YXRpb24vMzM3NjMKKysvLyB7IGRnLWRvIGNvbXBpbGUgfQorKy8vIHsgZGct b3B0aW9ucyAiLU8yIiB9CisrCisrdHlwZWRlZiBzdHJ1Y3QKKyt7CisrICB2b2lkICphOworKyAg dm9pZCAqYjsKKyt9IFQ7CisrZXh0ZXJuIHZvaWQgKmZvbyAoY29uc3QgY2hhciAqLCBjb25zdCBj aGFyICopOworK2V4dGVybiB2b2lkICpiYXIgKHZvaWQgKiwgY29uc3QgY2hhciAqLCBUKTsKKytl eHRlcm4gaW50IGJheiAoY29uc3QgY2hhciAqLCBpbnQpOworKworK2V4dGVybiBpbmxpbmUgX19h dHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUsIGdudV9pbmxpbmUpKSBpbnQKKytiYXogKGNvbnN0 IGNoYXIgKngsIGludCB5KQorK3sKKysgIHJldHVybiAyOworK30KKysKKytpbnQKKytiYXogKGNv bnN0IGNoYXIgKngsIGludCB5KQorK3sKKysgIHJldHVybiAxOworK30KKysKKytpbnQgeGEsIHhi OworKworK3N0YXRpYyB2b2lkICoKKytpbmwgKGNvbnN0IGNoYXIgKngsIGNvbnN0IGNoYXIgKnkp CisreworKyAgVCB0ID0geyAmeGEsICZ4YiB9OworKyAgaW50ICpmID0gKGludCAqKSBfX2J1aWx0 aW5fbWFsbG9jIChzaXplb2YgKGludCkpOworKyAgY29uc3QgY2hhciAqejsKKysgIGludCBvID0g MDsKKysgIHZvaWQgKnIgPSAwOworKworKyAgZm9yICh6ID0geTsgKno7IHorKykKKysgICAgewor KyAgICAgIGlmICgqeiA9PSAncicpCisrCW8gfD0gMTsKKysgICAgICBpZiAoKnogPT0gJ3cnKQor KwlvIHw9IDI7CisrICAgIH0KKysgIGlmIChvID09IDEpCisrICAgICpmID0gYmF6ICh4LCAwKTsK KysgIGlmIChvID09IDIpCisrICAgICpmID0gYmF6ICh4LCAxKTsKKysgIGlmIChvID09IDMpCisr ICAgICpmID0gYmF6ICh4LCAyKTsKKysKKysgIGlmIChvICYmICpmID4gMCkKKysgICAgciA9IGJh ciAoZiwgInciLCB0KTsKKysgIHJldHVybiByOworK30KKysKKyt2b2lkICoKKytmb28gKGNvbnN0 IGNoYXIgKngsIGNvbnN0IGNoYXIgKnkpCisreworKyAgcmV0dXJuIGlubCAoeCwgeSk7CisrfQoK ZGlmZiAtLWdpdCBhL2djYzQxLXJoMzE3MDUxLnBhdGNoIGIvZ2NjNDEtcmgzMTcwNTEucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY0YTA0MAotLS0gL2Rldi9udWxs CisrKyBiL2djYzQxLXJoMzE3MDUxLnBhdGNoCkBAIC0wLDAgKzEsMjkxIEBACisyMDA2LTA3LTI2 ICBGcmFuY29pcy1YYXZpZXIgQ291ZGVydCAgPGNvdWRlcnRAY2xpcHBlci5lbnMuZnI+CisKKwkq IGludHJpbnNpYy5jIChhZGRfZnVuY3Rpb25zKTogQWRkIElOVDIsIFNIT1JULCBJTlQ4LCBMT05H LAorCUxTVEFULCBNQ0xPQ0sgYW5kIE1DTE9DSzggaW50cmluc2ljIGZ1bmN0aW9ucy4KKwkoYWRk X3N1YnJvdXRpbmVzKTogQWRkIExTVEFUIGludHJpbnNpYyBzdWJyb3V0aW5lLgorCSogZ2ZvcnRy YW4uaCAoZ2ZjX2dlbmVyaWNfaXN5bV9pZCk6IEFkZCBHRkNfSVNZTV9JTlQyLAorCUdGQ19JU1lN X0lOVDgsIEdGQ19JU1lNX0xPTkcsIEdGQ19JU1lNX0xTVEFULCBHRkNfSVNZTV9NQ0xPQ0sKKwlh bmQgR0ZDX0lTWU1fTUNMT0NLOC4KKwkqIGlyZXNvbHZlLmMgKGdmY19yZXNvbHZlX2ludDIsIGdm Y19yZXNvbHZlX2ludDgsCisJZ2ZjX3Jlc29sdmVfbG9uZywgZ2ZjX3Jlc29sdmVfbHN0YXQsIGdm Y19yZXNvbHZlX21jbG9jaywKKwlnZmNfcmVzb2x2ZV9tY2xvY2s4LCBnZmNfcmVzb2x2ZV9sc3Rh dF9zdWIpOiBOZXcgZnVuY3Rpb25zLgorCSogY2hlY2suYyAoZ2ZjX2NoZWNrX2ludGNvbnYpOiBO ZXcgZnVuY3Rpb24uCisJKiB0cmFucy1pbnRyaW5zaWMuYyAoZ2ZjX2NvbnZfaW50cmluc2ljX2Z1 bmN0aW9uKTogQWRkIGNhc2VzIGZvcgorCXRoZSBhZGRlZCBHRkNfSVNZTV8qLgorCSogc2ltcGxp ZnkuYyAoZ2ZjX3NpbXBsaWZ5X2ludGNvbnYsIGdmY19zaW1wbGlmeV9pbnQyLAorCWdmY19zaW1w bGlmeV9pbnQ4LCBnZmNfc2ltcGxpZnlfbG9uZyk6IE5ldyBmdW5jdGlvbnMuCisJKiBpbnRyaW5z aWMuaCAoZ2ZjX2NoZWNrX2ludGNvbnYsIGdmY19zaW1wbGlmeV9pbnQyLAorCWdmY19zaW1wbGlm eV9pbnQ4LCBnZmNfc2ltcGxpZnlfbG9uZywgZ2ZjX3Jlc29sdmVfaW50MiwKKwlnZmNfcmVzb2x2 ZV9pbnQ4LCBnZmNfcmVzb2x2ZV9sb25nLCBnZmNfcmVzb2x2ZV9sc3RhdCwKKwlnZmNfcmVzb2x2 ZV9tY2xvY2ssIGdmY19yZXNvbHZlX21jbG9jazgsIGdmY19yZXNvbHZlX2xzdGF0X3N1Yik6CisJ QWRkIHByb3RvdHlwZXMuCisKKwkqIGdmb3J0cmFuLmRnL2ludF9jb252XzEuZjkwOiBOZXcgdGVz dC4KKworLS0tIGdjYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvaW50X2NvbnZfMS5mOTAJKHJldmlz aW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9pbnRfY29udl8xLmY5MAkocmV2 aXNpb24gMTE1NzU0KQorQEAgLTAsMCArMSwzNiBAQAorKyEgeyBkZy1kbyBydW4gfQorKyEgeyBk Zy1vcHRpb25zICItc3RkPWdudSIgfQorKyAgaW50ZWdlcihraW5kPTIpIDo6IGkyLCBqMiwgazIs IGwyLCBtMiwgbjIsIG8yCisrICBpbnRlZ2VyKGtpbmQ9NCkgOjogaTQsIGo0CisrICBpbnRlZ2Vy KGtpbmQ9OCkgOjogaTgsIGo4CisrICByZWFsIDo6IHgKKysgIGNvbXBsZXggOjogegorKworKyAg aTIgPSBodWdlKGkyKSAvIDMKKysgIGk4ID0gaW50OChpMikKKysgIGk0ID0gbG9uZyhpMikKKysg IGoyID0gc2hvcnQoaTIpCisrICBrMiA9IGludDIoaTIpCisrICBsMiA9IGludDIoaTgpCisrICBt MiA9IHNob3J0KGk4KQorKyAgbjIgPSBpbnQyKGk0KQorKyAgbzIgPSBzaG9ydChpNCkKKysKKysg IGlmIChpOCAvPSBpMiAub3IuIGk0IC89IGkyIC5vci4gajIgLz0gaTIgLm9yLiBrMiAvPSBpMiAm CisrICAgICAgLm9yLiBsMiAvPSBpMiAub3IuIG0yIC89IGkyIC5vci4gbjIgLz0gaTIgLm9yLiBv MiAvPSBpMikgY2FsbCBhYm9ydAorKworKyAgeCA9IGkyCisrICBpOCA9IGludDgoeCkKKysgIGk0 ID0gbG9uZyh4KQorKyAgajIgPSBzaG9ydCh4KQorKyAgazIgPSBpbnQyKHgpCisrICBpZiAoaTgg Lz0gaTIgLm9yLiBpNCAvPSBpMiAub3IuIGoyIC89IGkyIC5vci4gazIgLz0gaTIpIGNhbGwgYWJv cnQKKysKKysgIHogPSBpMiArICgwLiwtNDIuKQorKyAgaTggPSBpbnQ4KHopCisrICBpNCA9IGxv bmcoeikKKysgIGoyID0gc2hvcnQoeikKKysgIGsyID0gaW50Mih6KQorKyAgaWYgKGk4IC89IGky IC5vci4gaTQgLz0gaTIgLm9yLiBqMiAvPSBpMiAub3IuIGsyIC89IGkyKSBjYWxsIGFib3J0Cisr CisrICBlbmQKKy0tLSBnY2MvZm9ydHJhbi9pbnRyaW5zaWMuYwkocmV2aXNpb24gMTE1NzUzKQor KysrIGdjYy9mb3J0cmFuL2ludHJpbnNpYy5jCShyZXZpc2lvbiAxMTU3NTQpCitAQCAtMTUzNSw2 ICsxNTM1LDI2IEBAIGFkZF9mdW5jdGlvbnMgKHZvaWQpCisgCisgICBtYWtlX2dlbmVyaWMgKCJp bnQiLCBHRkNfSVNZTV9JTlQsIEdGQ19TVERfRjc3KTsKKyAKKysgIGFkZF9zeW1fMSAoImludDIi LCAxLCAwLCBCVF9JTlRFR0VSLCBkaSwgR0ZDX1NURF9HTlUsCisrCSAgICAgZ2ZjX2NoZWNrX2lu dGNvbnYsIGdmY19zaW1wbGlmeV9pbnQyLCBnZmNfcmVzb2x2ZV9pbnQyLAorKwkgICAgIGEsIEJU X1JFQUwsIGRyLCBSRVFVSVJFRCk7CisrCisrICBtYWtlX2FsaWFzICgic2hvcnQiLCBHRkNfU1RE X0dOVSk7CisrCisrICBtYWtlX2dlbmVyaWMgKCJpbnQyIiwgR0ZDX0lTWU1fSU5UMiwgR0ZDX1NU RF9HTlUpOworKworKyAgYWRkX3N5bV8xICgiaW50OCIsIDEsIDAsIEJUX0lOVEVHRVIsIGRpLCBH RkNfU1REX0dOVSwKKysJICAgICBnZmNfY2hlY2tfaW50Y29udiwgZ2ZjX3NpbXBsaWZ5X2ludDgs IGdmY19yZXNvbHZlX2ludDgsCisrCSAgICAgYSwgQlRfUkVBTCwgZHIsIFJFUVVJUkVEKTsKKysK KysgIG1ha2VfZ2VuZXJpYyAoImludDgiLCBHRkNfSVNZTV9JTlQ4LCBHRkNfU1REX0dOVSk7Cisr CisrICBhZGRfc3ltXzEgKCJsb25nIiwgMSwgMCwgQlRfSU5URUdFUiwgZGksIEdGQ19TVERfR05V LAorKwkgICAgIGdmY19jaGVja19pbnRjb252LCBnZmNfc2ltcGxpZnlfbG9uZywgZ2ZjX3Jlc29s dmVfbG9uZywKKysJICAgICBhLCBCVF9SRUFMLCBkciwgUkVRVUlSRUQpOworKworKyAgbWFrZV9n ZW5lcmljICgibG9uZyIsIEdGQ19JU1lNX0xPTkcsIEdGQ19TVERfR05VKTsKKysKKyAgIGFkZF9z eW1fMiAoImlvciIsIDEsIDEsIEJUX0lOVEVHRVIsIGRpLCBHRkNfU1REX0Y5NSwKKyAJICAgICBn ZmNfY2hlY2tfaW9yLCBnZmNfc2ltcGxpZnlfaW9yLCBnZmNfcmVzb2x2ZV9pb3IsCisgCSAgICAg aSwgQlRfSU5URUdFUiwgZGksIFJFUVVJUkVELCBqLCBCVF9JTlRFR0VSLCBkaSwgUkVRVUlSRUQp OworLS0tIGdjYy9mb3J0cmFuL2ludHJpbnNpYy5oCShyZXZpc2lvbiAxMTU3NTMpCisrKysgZ2Nj L2ZvcnRyYW4vaW50cmluc2ljLmgJKHJldmlzaW9uIDExNTc1NCkKK0BAIC03NCw2ICs3NCw3IEBA IHRyeSBnZmNfY2hlY2tfaWRuaW50IChnZmNfZXhwciAqKTsKKyB0cnkgZ2ZjX2NoZWNrX2llb3Ig KGdmY19leHByICosIGdmY19leHByICopOworIHRyeSBnZmNfY2hlY2tfaW5kZXggKGdmY19leHBy ICosIGdmY19leHByICosIGdmY19leHByICopOworIHRyeSBnZmNfY2hlY2tfaW50IChnZmNfZXhw ciAqLCBnZmNfZXhwciAqKTsKKyt0cnkgZ2ZjX2NoZWNrX2ludGNvbnYgKGdmY19leHByICopOwor IHRyeSBnZmNfY2hlY2tfaW9yIChnZmNfZXhwciAqLCBnZmNfZXhwciAqKTsKKyB0cnkgZ2ZjX2No ZWNrX2lyYW5kIChnZmNfZXhwciAqKTsKKyB0cnkgZ2ZjX2NoZWNrX2lzYXR0eSAoZ2ZjX2V4cHIg Kik7CitAQCAtMjIyLDYgKzIyMyw5IEBAIGdmY19leHByICpnZmNfc2ltcGxpZnlfaWNoYXIgKGdm Y19leHByICoKKyBnZmNfZXhwciAqZ2ZjX3NpbXBsaWZ5X2llb3IgKGdmY19leHByICosIGdmY19l eHByICopOworIGdmY19leHByICpnZmNfc2ltcGxpZnlfaW5kZXggKGdmY19leHByICosIGdmY19l eHByICosIGdmY19leHByICopOworIGdmY19leHByICpnZmNfc2ltcGxpZnlfaW50IChnZmNfZXhw ciAqLCBnZmNfZXhwciAqKTsKKytnZmNfZXhwciAqZ2ZjX3NpbXBsaWZ5X2ludDIgKGdmY19leHBy ICopOworK2dmY19leHByICpnZmNfc2ltcGxpZnlfaW50OCAoZ2ZjX2V4cHIgKik7CisrZ2ZjX2V4 cHIgKmdmY19zaW1wbGlmeV9sb25nIChnZmNfZXhwciAqKTsKKyBnZmNfZXhwciAqZ2ZjX3NpbXBs aWZ5X2lmaXggKGdmY19leHByICopOworIGdmY19leHByICpnZmNfc2ltcGxpZnlfaWRpbnQgKGdm Y19leHByICopOworIGdmY19leHByICpnZmNfc2ltcGxpZnlfaW9yIChnZmNfZXhwciAqLCBnZmNf ZXhwciAqKTsKK0BAIC0zNTIsNiArMzU2LDkgQEAgdm9pZCBnZmNfcmVzb2x2ZV9pZW9yIChnZmNf ZXhwciAqLCBnZmNfZQorIHZvaWQgZ2ZjX3Jlc29sdmVfaWNoYXIgKGdmY19leHByICosIGdmY19l eHByICopOworIHZvaWQgZ2ZjX3Jlc29sdmVfaWRuaW50IChnZmNfZXhwciAqLCBnZmNfZXhwciAq KTsKKyB2b2lkIGdmY19yZXNvbHZlX2ludCAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKiwgZ2ZjX2V4 cHIgKik7Cisrdm9pZCBnZmNfcmVzb2x2ZV9pbnQyIChnZmNfZXhwciAqLCBnZmNfZXhwciAqKTsK Kyt2b2lkIGdmY19yZXNvbHZlX2ludDggKGdmY19leHByICosIGdmY19leHByICopOworK3ZvaWQg Z2ZjX3Jlc29sdmVfbG9uZyAoZ2ZjX2V4cHIgKiwgZ2ZjX2V4cHIgKik7Cisgdm9pZCBnZmNfcmVz b2x2ZV9pb3IgKGdmY19leHByICosIGdmY19leHByICosIGdmY19leHByICopOworIHZvaWQgZ2Zj X3Jlc29sdmVfaXNhdHR5IChnZmNfZXhwciAqLCBnZmNfZXhwciAqKTsKKyB2b2lkIGdmY19yZXNv bHZlX2lzaGZ0IChnZmNfZXhwciAqLCBnZmNfZXhwciAqLCBnZmNfZXhwciAqKTsKKy0tLSBnY2Mv Zm9ydHJhbi9nZm9ydHJhbi5oCShyZXZpc2lvbiAxMTU3NTMpCisrKysgZ2NjL2ZvcnRyYW4vZ2Zv cnRyYW4uaAkocmV2aXNpb24gMTE1NzU0KQorQEAgLTM3Nyw2ICszNzcsOCBAQCBlbnVtIGdmY19n ZW5lcmljX2lzeW1faWQKKyAgIEdGQ19JU1lNX0lFUlJOTywKKyAgIEdGQ19JU1lNX0lOREVYLAor ICAgR0ZDX0lTWU1fSU5ULAorKyAgR0ZDX0lTWU1fSU5UMiwKKysgIEdGQ19JU1lNX0lOVDgsCisg ICBHRkNfSVNZTV9JT1IsCisgICBHRkNfSVNZTV9JUkFORCwKKyAgIEdGQ19JU1lNX0lTQVRUWSwK K0BAIC0zOTEsMTAgKzM5MywxMSBAQCBlbnVtIGdmY19nZW5lcmljX2lzeW1faWQKKyAgIEdGQ19J U1lNX0xHVCwKKyAgIEdGQ19JU1lNX0xMRSwKKyAgIEdGQ19JU1lNX0xMVCwKKy0gIEdGQ19JU1lN X0xPRywKKyAgIEdGQ19JU1lNX0xPQywKKysgIEdGQ19JU1lNX0xPRywKKyAgIEdGQ19JU1lNX0xP RzEwLAorICAgR0ZDX0lTWU1fTE9HSUNBTCwKKysgIEdGQ19JU1lNX0xPTkcsCisgICBHRkNfSVNZ TV9NQUxMT0MsCisgICBHRkNfSVNZTV9NQVRNVUwsCisgICBHRkNfSVNZTV9NQVgsCistLS0gZ2Nj L2ZvcnRyYW4vaXJlc29sdmUuYwkocmV2aXNpb24gMTE1NzUzKQorKysrIGdjYy9mb3J0cmFuL2ly ZXNvbHZlLmMJKHJldmlzaW9uIDExNTc1NCkKK0BAIC04NTQsNiArODU0LDQyIEBAIGdmY19yZXNv bHZlX2ludCAoZ2ZjX2V4cHIgKiBmLCBnZmNfZXhwciAKKyAKKyAKKyB2b2lkCisrZ2ZjX3Jlc29s dmVfaW50MiAoZ2ZjX2V4cHIgKiBmLCBnZmNfZXhwciAqIGEpCisreworKyAgZi0+dHMudHlwZSA9 IEJUX0lOVEVHRVI7CisrICBmLT50cy5raW5kID0gMjsKKysKKysgIGYtPnZhbHVlLmZ1bmN0aW9u Lm5hbWUgPQorKyAgICBnZmNfZ2V0X3N0cmluZyAoIl9faW50XyVkXyVjJWQiLCBmLT50cy5raW5k LCBnZmNfdHlwZV9sZXR0ZXIgKGEtPnRzLnR5cGUpLAorKwkJICAgIGEtPnRzLmtpbmQpOworK30K KysKKysKKyt2b2lkCisrZ2ZjX3Jlc29sdmVfaW50OCAoZ2ZjX2V4cHIgKiBmLCBnZmNfZXhwciAq IGEpCisreworKyAgZi0+dHMudHlwZSA9IEJUX0lOVEVHRVI7CisrICBmLT50cy5raW5kID0gODsK KysKKysgIGYtPnZhbHVlLmZ1bmN0aW9uLm5hbWUgPQorKyAgICBnZmNfZ2V0X3N0cmluZyAoIl9f aW50XyVkXyVjJWQiLCBmLT50cy5raW5kLCBnZmNfdHlwZV9sZXR0ZXIgKGEtPnRzLnR5cGUpLAor KwkJICAgIGEtPnRzLmtpbmQpOworK30KKysKKysKKyt2b2lkCisrZ2ZjX3Jlc29sdmVfbG9uZyAo Z2ZjX2V4cHIgKiBmLCBnZmNfZXhwciAqIGEpCisreworKyAgZi0+dHMudHlwZSA9IEJUX0lOVEVH RVI7CisrICBmLT50cy5raW5kID0gNDsKKysKKysgIGYtPnZhbHVlLmZ1bmN0aW9uLm5hbWUgPQor KyAgICBnZmNfZ2V0X3N0cmluZyAoIl9faW50XyVkXyVjJWQiLCBmLT50cy5raW5kLCBnZmNfdHlw ZV9sZXR0ZXIgKGEtPnRzLnR5cGUpLAorKwkJICAgIGEtPnRzLmtpbmQpOworK30KKysKKysKKyt2 b2lkCisgZ2ZjX3Jlc29sdmVfaXNhdHR5IChnZmNfZXhwciAqIGYsIGdmY19leHByICogdSkKKyB7 CisgICBnZmNfdHlwZXNwZWMgdHM7CistLS0gZ2NjL2ZvcnRyYW4vY2hlY2suYwkocmV2aXNpb24g MTE1NzUzKQorKysrIGdjYy9mb3J0cmFuL2NoZWNrLmMJKHJldmlzaW9uIDExNTc1NCkKK0BAIC0x MjAwLDYgKzEyMDAsMTYgQEAgZ2ZjX2NoZWNrX2ludCAoZ2ZjX2V4cHIgKiB4LCBnZmNfZXhwciAq IAorIAorIAorIHRyeQorK2dmY19jaGVja19pbnRjb252IChnZmNfZXhwciAqIHgpCisreworKyAg aWYgKG51bWVyaWNfY2hlY2sgKHgsIDApID09IEZBSUxVUkUpCisrICAgIHJldHVybiBGQUlMVVJF OworKworKyAgcmV0dXJuIFNVQ0NFU1M7CisrfQorKworKworK3RyeQorIGdmY19jaGVja19pb3Ig KGdmY19leHByICogaSwgZ2ZjX2V4cHIgKiBqKQorIHsKKyAgIGlmICh0eXBlX2NoZWNrIChpLCAw LCBCVF9JTlRFR0VSKSA9PSBGQUlMVVJFKQorLS0tIGdjYy9mb3J0cmFuL3RyYW5zLWludHJpbnNp Yy5jCShyZXZpc2lvbiAxMTU3NTMpCisrKysgZ2NjL2ZvcnRyYW4vdHJhbnMtaW50cmluc2ljLmMJ KHJldmlzaW9uIDExNTc1NCkKK0BAIC0zNDc3LDYgKzM0NzcsOSBAQCBnZmNfY29udl9pbnRyaW5z aWNfZnVuY3Rpb24gKGdmY19zZSAqIHNlCisgICAgICAgLyogSW50ZWdlciBjb252ZXJzaW9ucyBh cmUgaGFuZGxlZCBzZXBhcmF0ZWx5IHRvIG1ha2Ugc3VyZSB3ZSBnZXQgdGhlCisgICAgICAgICAg Y29ycmVjdCByb3VuZGluZyBtb2RlLiAgKi8KKyAgICAgY2FzZSBHRkNfSVNZTV9JTlQ6CisrICAg IGNhc2UgR0ZDX0lTWU1fSU5UMjoKKysgICAgY2FzZSBHRkNfSVNZTV9JTlQ4OgorKyAgICBjYXNl IEdGQ19JU1lNX0xPTkc6CisgICAgICAgZ2ZjX2NvbnZfaW50cmluc2ljX2ludCAoc2UsIGV4cHIs IEZJWF9UUlVOQ19FWFBSKTsKKyAgICAgICBicmVhazsKKyAKKy0tLSBnY2MvZm9ydHJhbi9zaW1w bGlmeS5jCShyZXZpc2lvbiAxMTU3NTMpCisrKysgZ2NjL2ZvcnRyYW4vc2ltcGxpZnkuYwkocmV2 aXNpb24gMTE1NzU0KQorQEAgLTE2MTAsNiArMTYxMCw2NiBAQCBnZmNfc2ltcGxpZnlfaW50IChn ZmNfZXhwciAqIGUsIGdmY19leHByCisgfQorIAorIAorK3N0YXRpYyBnZmNfZXhwciAqCisrZ2Zj X3NpbXBsaWZ5X2ludGNvbnYgKGdmY19leHByICogZSwgaW50IGtpbmQsIGNvbnN0IGNoYXIgKm5h bWUpCisreworKyAgZ2ZjX2V4cHIgKnJwYXJ0LCAqcnRydW5jLCAqcmVzdWx0OworKworKyAgaWYg KGUtPmV4cHJfdHlwZSAhPSBFWFBSX0NPTlNUQU5UKQorKyAgICByZXR1cm4gTlVMTDsKKysKKysg IHJlc3VsdCA9IGdmY19jb25zdGFudF9yZXN1bHQgKEJUX0lOVEVHRVIsIGtpbmQsICZlLT53aGVy ZSk7CisrCisrICBzd2l0Y2ggKGUtPnRzLnR5cGUpCisrICAgIHsKKysgICAgY2FzZSBCVF9JTlRF R0VSOgorKyAgICAgIG1wel9zZXQgKHJlc3VsdC0+dmFsdWUuaW50ZWdlciwgZS0+dmFsdWUuaW50 ZWdlcik7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQlRfUkVBTDoKKysgICAgICBydHJ1 bmMgPSBnZmNfY29weV9leHByIChlKTsKKysgICAgICBtcGZyX3RydW5jIChydHJ1bmMtPnZhbHVl LnJlYWwsIGUtPnZhbHVlLnJlYWwpOworKyAgICAgIGdmY19tcGZyX3RvX21weiAocmVzdWx0LT52 YWx1ZS5pbnRlZ2VyLCBydHJ1bmMtPnZhbHVlLnJlYWwpOworKyAgICAgIGdmY19mcmVlX2V4cHIg KHJ0cnVuYyk7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQlRfQ09NUExFWDoKKysgICAg ICBycGFydCA9IGdmY19jb21wbGV4MnJlYWwgKGUsIGtpbmQpOworKyAgICAgIHJ0cnVuYyA9IGdm Y19jb3B5X2V4cHIgKHJwYXJ0KTsKKysgICAgICBtcGZyX3RydW5jIChydHJ1bmMtPnZhbHVlLnJl YWwsIHJwYXJ0LT52YWx1ZS5yZWFsKTsKKysgICAgICBnZmNfbXBmcl90b19tcHogKHJlc3VsdC0+ dmFsdWUuaW50ZWdlciwgcnRydW5jLT52YWx1ZS5yZWFsKTsKKysgICAgICBnZmNfZnJlZV9leHBy IChycGFydCk7CisrICAgICAgZ2ZjX2ZyZWVfZXhwciAocnRydW5jKTsKKysgICAgICBicmVhazsK KysKKysgICAgZGVmYXVsdDoKKysgICAgICBnZmNfZXJyb3IgKCJBcmd1bWVudCBvZiAlcyBhdCAl TCBpcyBub3QgYSB2YWxpZCB0eXBlIiwgbmFtZSwgJmUtPndoZXJlKTsKKysgICAgICBnZmNfZnJl ZV9leHByIChyZXN1bHQpOworKyAgICAgIHJldHVybiAmZ2ZjX2JhZF9leHByOworKyAgICB9Cisr CisrICByZXR1cm4gcmFuZ2VfY2hlY2sgKHJlc3VsdCwgbmFtZSk7CisrfQorKworK2dmY19leHBy ICoKKytnZmNfc2ltcGxpZnlfaW50MiAoZ2ZjX2V4cHIgKiBlKQorK3sKKysgIHJldHVybiBnZmNf c2ltcGxpZnlfaW50Y29udiAoZSwgMiwgIklOVDIiKTsKKyt9CisrCisrZ2ZjX2V4cHIgKgorK2dm Y19zaW1wbGlmeV9pbnQ4IChnZmNfZXhwciAqIGUpCisreworKyAgcmV0dXJuIGdmY19zaW1wbGlm eV9pbnRjb252IChlLCA4LCAiSU5UOCIpOworK30KKysKKytnZmNfZXhwciAqCisrZ2ZjX3NpbXBs aWZ5X2xvbmcgKGdmY19leHByICogZSkKKyt7CisrICByZXR1cm4gZ2ZjX3NpbXBsaWZ5X2ludGNv bnYgKGUsIDQsICJMT05HIik7CisrfQorKworKworIGdmY19leHByICoKKyBnZmNfc2ltcGxpZnlf aWZpeCAoZ2ZjX2V4cHIgKiBlKQorIHsKCmRpZmYgLS1naXQgYS9nY2M0MS1yaDMzMDc3MS5wYXRj aCBiL2djYzQxLXJoMzMwNzcxLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmM4OTRmODMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M0MS1yaDMzMDc3MS5wYXRjaApAQCAt MCwwICsxLDM0IEBACisyMDA3LTEwLTE2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNv bT4KKworCSogTWFrZWZpbGUuYW0gKGxpYmdjal90b29sc19sYV9MSUJBREQpOiBBZGQuCisJKiBN YWtlZmlsZS5pbjogUmVnZW5lcmF0ZWQuCisKKy0tLSBsaWJqYXZhL01ha2VmaWxlLmFtLmpqCTIw MDctMDMtMTcgMDk6MjA6MzAuMDAwMDAwMDAwICswMTAwCisrKysgbGliamF2YS9NYWtlZmlsZS5h bQkyMDA3LTEwLTE2IDE1OjQ1OjE0LjAwMDAwMDAwMCArMDIwMAorQEAgLTI2Miw2ICsyNjIsOCBA QCBFWFRSQV9saWJnY2pfbGFfU09VUkNFUyA9IGphdmEvbGFuZy9PYmplCisgCisgbGliZ2NqX3Rv b2xzX2xhX1NPVVJDRVMgPSBjbGFzc3BhdGgvdG9vbHMvdG9vbHMuemlwCisgbGliZ2NqX3Rvb2xz X2xhX0dDSkZMQUdTID0gJChBTV9HQ0pGTEFHUykgLWZpbmRpcmVjdC1kaXNwYXRjaCAtZm5vLWlu ZGlyZWN0LWNsYXNzZXMgIC1mc291cmNlLWZpbGVuYW1lPSQoaGVyZSkvY2xhc3NwYXRoL3Rvb2xz L2FsbC1jbGFzc2VzLmxzdAorKyMjIFNlZSBqdl9jb252ZXJ0X0xEQURELgorK2xpYmdjal90b29s c19sYV9MSUJBREQgPSAtTCQoaGVyZSkvLmxpYnMgbGliZ2NqLmxhCisgbGliZ2NqX3Rvb2xzX2xh X0xERkxBR1MgPSAtcnBhdGggJCh0b29sZXhlY2xpYmRpcikgXAorICAtdmVyc2lvbi1pbmZvIGBn cmVwIC12ICdeXCMnICQoc3JjZGlyKS9saWJ0b29sLXZlcnNpb25gCisgbGliZ2NqX3Rvb2xzX2xh X0RFUEVOREVOQ0lFUyA9IGxpYmdjai5sYSBsaWJnY2ouc3BlYworLS0tIGxpYmphdmEvTWFrZWZp bGUuaW4uamoJMjAwNy0wNy0wNCAyMToxMToxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBsaWJqYXZh L01ha2VmaWxlLmluCTIwMDctMTAtMTYgMTU6NTY6MDcuMDAwMDAwMDAwICswMjAwCitAQCAtMTQ2 LDcgKzE0Niw2IEBAIGFtX19vYmplY3RzXzEgPSBnbnUvZ2NqL3hsaWIvbGliX2dudV9hd3QKKyBh bV9saWJfZ251X2F3dF94bGliX2xhX09CSkVDVFMgPSAkKGFtX19vYmplY3RzXzEpCisgbGliX2du dV9hd3RfeGxpYl9sYV9PQkpFQ1RTID0gJChhbV9saWJfZ251X2F3dF94bGliX2xhX09CSkVDVFMp CisgQFhMSUJfQVdUX1RSVUVAYW1fbGliX2dudV9hd3RfeGxpYl9sYV9ycGF0aCA9IC1ycGF0aCAk KHRvb2xleGVjbGliZGlyKQorLWxpYmdjal90b29sc19sYV9MSUJBREQgPQorIGFtX2xpYmdjal90 b29sc19sYV9PQkpFQ1RTID0gY2xhc3NwYXRoL3Rvb2xzL2xpYmdjal90b29sc19sYS10b29scy5s bworIGxpYmdjal90b29sc19sYV9PQkpFQ1RTID0gJChhbV9saWJnY2pfdG9vbHNfbGFfT0JKRUNU UykKKyBhbV9fREVQRU5ERU5DSUVTXzEgPSBnbnUvYXd0LmxvIGdudS9hd3QvajJkLmxvIGdudS9j bGFzc3BhdGgubG8gXAorQEAgLTg5NCw2ICs4OTMsNyBAQCBsaWJnY2pfbGFfTElOSyA9ICQoTElC TElOSykKKyBFWFRSQV9saWJnY2pfbGFfU09VUkNFUyA9IGphdmEvbGFuZy9PYmplY3QuamF2YQor IGxpYmdjal90b29sc19sYV9TT1VSQ0VTID0gY2xhc3NwYXRoL3Rvb2xzL3Rvb2xzLnppcAorIGxp Ymdjal90b29sc19sYV9HQ0pGTEFHUyA9ICQoQU1fR0NKRkxBR1MpIC1maW5kaXJlY3QtZGlzcGF0 Y2ggLWZuby1pbmRpcmVjdC1jbGFzc2VzICAtZnNvdXJjZS1maWxlbmFtZT0kKGhlcmUpL2NsYXNz cGF0aC90b29scy9hbGwtY2xhc3Nlcy5sc3QKKytsaWJnY2pfdG9vbHNfbGFfTElCQUREID0gLUwk KGhlcmUpLy5saWJzIGxpYmdjai5sYQorIGxpYmdjal90b29sc19sYV9MREZMQUdTID0gLXJwYXRo ICQodG9vbGV4ZWNsaWJkaXIpIFwKKyAgLXZlcnNpb24taW5mbyBgZ3JlcCAtdiAnXlwjJyAkKHNy Y2RpcikvbGlidG9vbC12ZXJzaW9uYAorIAoKZGlmZiAtLWdpdCBhL2djYzQxLnNwZWMgYi9nY2M0 MS5zcGVjCmluZGV4IDg1YzYzNjAuLjkwNGUxNTAgMTAwNjQ0Ci0tLSBhL2djYzQxLnNwZWMKKysr IGIvZ2NjNDEuc3BlYwpAQCAtMSw2ICsxLDYgQEAKICVkZWZpbmUgREFURSAyMDA3MDkyNQogJWRl ZmluZSBnY2NfdmVyc2lvbiA0LjEuMgotJWRlZmluZSBnY2NfcmVsZWFzZSAzMQorJWRlZmluZSBn Y2NfcmVsZWFzZSAzMgogJWRlZmluZSBfdW5wYWNrYWdlZF9maWxlc190ZXJtaW5hdGVfYnVpbGQg MAogJWRlZmluZSBtdWx0aWxpYl82NF9hcmNocyBzcGFyYzY0IHBwYzY0IHMzOTB4IHg4Nl82NAog JWRlZmluZSBpbmNsdWRlX2dhcHBsZXR2aWV3ZXIgMQpAQCAtMTQ5LDYgKzE0OSwxNSBAQCBQYXRj aDMyOiBnY2M0MS12aXJ0dWFsLWlubGluZS1iYWNrdHJhY2UucGF0Y2gKIFBhdGNoMzM6IGdjYzQx LWMrKy1nbnUtaW5saW5lLXJlZGVjbC5wYXRjaAogUGF0Y2gzNDogZ2NjNDEtYysrLWJ1aWx0aW4t cmVkZWNsLnBhdGNoCiBQYXRjaDM1OiBnY2M0MS1jKystZ3VhcmQtdmlzaWJpbGl0eS5wYXRjaAor UGF0Y2gzNjogZ2NjNDEtcHIzMjEyMS5wYXRjaAorUGF0Y2gzNzogZ2NjNDEtcHIzMzEzNi5wYXRj aAorUGF0Y2gzODogZ2NjNDEtcHIzMzIzOC5wYXRjaAorUGF0Y2gzOTogZ2NjNDEtcHIzMzYxOS5w YXRjaAorUGF0Y2g0MDogZ2NjNDEtcHIzMzYzOS5wYXRjaAorUGF0Y2g0MTogZ2NjNDEtcHIzMzc0 NC5wYXRjaAorUGF0Y2g0MjogZ2NjNDEtcHIzMzc2My5wYXRjaAorUGF0Y2g0MzogZ2NjNDEtcmgz MTcwNTEucGF0Y2gKK1BhdGNoNDQ6IGdjYzQxLXJoMzMwNzcxLnBhdGNoCiAKICMgT24gQVJNIEVB Qkkgc3lzdGVtcywgd2UgZG8gd2FudCAtZ251ZWFiaSB0byBiZSBwYXJ0IG9mIHRoZQogIyB0YXJn ZXQgdHJpcGxlLgpAQCAtNDY3LDYgKzQ3NiwxNSBAQCB3aGljaCBhcmUgcmVxdWlyZWQgdG8gcnVu IHByb2dyYW1zIGNvbXBpbGVkIHdpdGggdGhlIEdOQVQuCiAlcGF0Y2gzMyAtcDAgLWIgLmMrKy1n bnUtaW5saW5lLXJlZGVjbH4KICVwYXRjaDM0IC1wMCAtYiAuYysrLWJ1aWx0aW4tcmVkZWNsfgog JXBhdGNoMzUgLXAwIC1iIC5jKystZ3VhcmQtdmlzaWJpbGl0eX4KKyVwYXRjaDM2IC1wMCAtYiAu cHIzMjEyMX4KKyVwYXRjaDM3IC1wMCAtYiAucHIzMzEzNn4KKyVwYXRjaDM4IC1wMCAtYiAucHIz MzIzOH4KKyVwYXRjaDM5IC1wMCAtYiAucHIzMzYxOX4KKyVwYXRjaDQwIC1wMCAtYiAucHIzMzYz OX4KKyVwYXRjaDQxIC1wMCAtYiAucHIzMzc0NH4KKyVwYXRjaDQyIC1wMCAtYiAucHIzMzc2M34K KyVwYXRjaDQzIC1wMCAtYiAucmgzMTcwNTF+CislcGF0Y2g0NCAtcDAgLWIgLnJoMzMwNzcxfgog CiBzZWQgLWkgLWUgJ3MvNFwuMVwuMy80LjEuMi8nIGdjYy9CQVNFLVZFUiBnY2MvdmVyc2lvbi5j CiBzZWQgLWkgLWUgJ3MvIiAoUmVkIEhhdFteKV0qKSIvIiAoUmVkIEhhdCAle3ZlcnNpb259LSV7 Z2NjX3JlbGVhc2V9KSIvJyBnY2MvdmVyc2lvbi5jCkBAIC0xNjIxLDYgKzE2MzksMjIgQEAgZmkK ICVkb2MgcnBtLmRvYy9jaGFuZ2Vsb2dzL2xpYm11ZGZsYXAvQ2hhbmdlTG9nKgogCiAlY2hhbmdl bG9nCisqIFR1ZSBPY3QgMTYgMjAwNyBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0 LjEuMi0zMgorLSBvbmx5IGFsbG93IF9fbGFiZWxfXyBhdCB0aGUgc3RhcnQgb2YgYSBibG9jayAo UFIgYysrLzMyMTIxKQorLSBkaXNhYmxlIC1maXBhLXR5cGUtZXNjYXBlIGJ5IGRlZmF1bHQgKFBS IHRyZWUtb3B0aW1pemF0aW9uLzMzMTM2KQorLSBWTEEgaGFuZGxpbmcgZml4IChQUiBjLzMzMjM4 LCBQUiBjLzI3MzAxKQorLSBkaXNhYmxlIFRFUiBvZiBwdXJlIGFuZCBjb25zdCBmdW5jdGlvbiBj YWxscyBleGNlcHQgZm9yIF9fYnVpbHRpbl9leHBlY3QKKyAgKFBSIHRyZWUtb3B0aW1pemF0aW9u LzMzNjE5KQorLSBoYW5kbGUgY2xhc3NlcyB3aXRoIGNoYXJhY3RlcnMgb3RoZXIgdGhhbiBbYS16 QS1aMC05XyRdIGluCisgIHRoZWlyIG5hbWVzIChBbmRyZXcgSGFsZXksICMyOTc5NjEsIFBSIGph dmEvMzM2MzkpCistIGZpeCBwYXJzaW5nIG9mIEMrKyBmdW5jdGlvbi1saWtlIGNhc3QgaW4gdGVt cGxhdGUgYXJndW1lbnQgd2hlcmUgY2FzdCdzCisgIGFyZ3VtZW50IHVzZXMgZ3JlYXRlci10aGFu IG9wZXJhdG9yIChQUiBjKysvMzM3NDQpCistIGlnbm9yZSBhbHdheXNfaW5saW5lIGF0dHJpYnV0 ZSBvbiByZWRlZmluZWQgZXh0ZXJuIGlubGluZQorICBmdW5jdGlvbnMgKEphbiBIdWJpY2thLCAj MzI5NjcxLCBQUiB0cmVlLW9wdGltaXphdGlvbi8zMzc2MykKKy0gYWRkIHN1cHBvcnQgZm9yIEZv cnRyYW4gaW50IGNvbnZlcnNpb24gaW50cmluc2ljcyAoRnJhbmNvaXMtWGF2aWVyCisgIENvdWRl cnQsICMzMTcwNTEpCistIGxpbmsgbGliZ2NqLXRvb2xzLnNvKiBhZ2FpbnN0IGxpYmdjai5zbyog KCMzMzA3NzEpCisKICogV2VkIE9jdCAgMyAyMDA3IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhh dC5jb20+IDQuMS4yLTMxCiAtIGZpeCB2aXNpYmlsaXR5IG9mIEMrKyBndWFyZCB2YXJpYWJsZXMg KEphc29uIE1lcnJpbGwpCiAtIGRvbid0IGRyb3AgREVDTF9CVUlMVF9JTl9DTEFTUyB3aGVuIGRl ZmluaW5nIGEgYnVpbHRpbiBmdW5jdGlvbgo=