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: 5.0.0-0.19 Date: Mon, 29 Jun 2026 12:26:44 GMT Message-ID: <178273600472.1.1097818725018308024.rpms-gcc-7fcf30a7eafe@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 7fcf30a7eafec1f17fed004d31d9b7eb7f9baffd QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogN2ZjZjMwYTdlYWZlYzFmMTdmZWQwMDRkMzFkOWI3ZWI3 ZjliYWZmZApBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPgpEYXRlICAg OiAyMDE1LTAzLTEzVDE5OjE1OjA2KzAxOjAwClN0YXRzICA6ICszNTkvLTgwMyBpbiAxNSBmaWxl KHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2NjL2MvN2Zj ZjMwYTdlYWZlYzFmMTdmZWQwMDRkMzFkOWI3ZWI3ZjliYWZmZD9icmFuY2g9cmhlbC1mNDEtYmFz ZQoKTG9nOgo1LjAuMC0wLjE5CgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdu b3JlCmluZGV4IDAxYjIxN2IuLmJjYzNjOTQgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIv LmdpdGlnbm9yZQpAQCAtMTAsMyArMTAsNCBAQAogL2djYy01LjAuMC0yMDE1MDIxNy50YXIuYnoy CiAvZ2NjLTUuMC4wLTIwMTUwMjI0LnRhci5iejIKIC9nY2MtNS4wLjAtMjAxNTAyMjYudGFyLmJ6 MgorL2djYy01LjAuMC0yMDE1MDMxMy50YXIuYnoyCgpkaWZmIC0tZ2l0IGEvZ2NjLnNwZWMgYi9n Y2Muc3BlYwppbmRleCA5YzE0OTk2Li4wMDI2NmE4IDEwMDY0NAotLS0gYS9nY2Muc3BlYworKysg Yi9nY2Muc3BlYwpAQCAtMSw5ICsxLDkgQEAKLSVnbG9iYWwgREFURSAyMDE1MDIyNgotJWdsb2Jh bCBTVk5SRVYgMjIxMDI4CislZ2xvYmFsIERBVEUgMjAxNTAzMTMKKyVnbG9iYWwgU1ZOUkVWIDIy MTQyNAogJWdsb2JhbCBnY2NfdmVyc2lvbiA1LjAuMAogIyBOb3RlLCBnY2NfcmVsZWFzZSBtdXN0 IGJlIGludGVnZXIsIGlmIHlvdSB3YW50IHRvIGFkZCBzdWZmaXhlcyB0bwogIyAle3JlbGVhc2V9 LCBhcHBlbmQgdGhlbSBhZnRlciAle2djY19yZWxlYXNlfSBvbiBSZWxlYXNlOiBsaW5lLgotJWds b2JhbCBnY2NfcmVsZWFzZSAwLjE4CislZ2xvYmFsIGdjY19yZWxlYXNlIDAuMTkKICVnbG9iYWwg X3VucGFja2FnZWRfZmlsZXNfdGVybWluYXRlX2J1aWxkIDAKICVnbG9iYWwgX3BlcmZvcm1hbmNl X2J1aWxkIDEKICVnbG9iYWwgbXVsdGlsaWJfNjRfYXJjaHMgc3BhcmM2NCBwcGM2NCBwcGM2NHA3 IHMzOTB4IHg4Nl82NApAQCAtMTk4LDE1ICsxOTgsOSBAQCBQYXRjaDExOiBnY2M1LW5vLWFkZC1u ZWVkZWQucGF0Y2gKIFBhdGNoMTI6IGdjYzUtbGliZ28tcDIyNC5wYXRjaAogUGF0Y2gxMzogZ2Nj NS1hYXJjaDY0LWFzeW5jLXVudy10YWJsZXMucGF0Y2gKIFBhdGNoMTQ6IGdjYzUtbGlic2FuaXRp emUtYWFyY2g2NC12YTQyLnBhdGNoCi1QYXRjaDE1OiBnY2M1LWFybS1mbnNlY3QucGF0Y2gKLVBh dGNoMTY6IGdjYzUtcHI2NTIxNS5wYXRjaAotUGF0Y2gxNzogZ2NjNS1wcjY1MjE2LnBhdGNoCi1Q YXRjaDE4OiBnY2M1LXByNjQzNjcucGF0Y2gKLVBhdGNoMTk6IGdjYzUtcHI2NTAzMi5wYXRjaAot UGF0Y2gyMDogZ2NjNS1wcjY1MDQwLnBhdGNoCi1QYXRjaDIxOiBnY2M1LXByNjUwNDgtdGVzdC5w YXRjaAotUGF0Y2gyMjogZ2NjNS1wcjY1MjIwLnBhdGNoCi1QYXRjaDIzOiBnY2M1LXByNjUyMjgu cGF0Y2gKK1BhdGNoMTU6IGdjYzUtcHI2NTM2OS5wYXRjaAorUGF0Y2gxNjogZ2NjNS1wcjY1NDAx LnBhdGNoCitQYXRjaDE3OiBnY2M1LXByNjU0MTgucGF0Y2gKIAogIyBPbiBBUk0gRUFCSSBzeXN0 ZW1zLCB3ZSBkbyB3YW50IC1nbnVlYWJpIHRvIGJlIHBhcnQgb2YgdGhlCiAjIHRhcmdldCB0cmlw bGUuCkBAIC03NTYsMTUgKzc1MCw5IEBAIHBhY2thZ2Ugb3Igd2hlbiBkZWJ1Z2dpbmcgdGhpcyBw YWNrYWdlLgogcm0gLWYgbGliZ28vZ28vY3J5cHRvL2VsbGlwdGljL3AyMjR7LF90ZXN0fS5nbwog JXBhdGNoMTMgLXAwIC1iIC5hYXJjaDY0LWFzeW5jLXVudy10YWJsZXN+CiAlcGF0Y2gxNCAtcDAg LWIgLmxpYnNhbml0aXplLWFhcmNoNjQtdmE0Mn4KLSVwYXRjaDE1IC1wMCAtYiAuYXJtLWZuc2Vj dH4KLSVwYXRjaDE2IC1wMCAtYiAucHI2NTIxNX4KLSVwYXRjaDE3IC1wMCAtYiAucHI2NTIxNn4K LSVwYXRjaDE4IC1wMCAtYiAucHI2NDM2N34KLSVwYXRjaDE5IC1wMCAtYiAucHI2NTAzMn4KLSVw YXRjaDIwIC1wMCAtYiAucHI2NTA0MH4KLSVwYXRjaDIxIC1wMCAtYiAucHI2NTA0OC10ZXN0fgot JXBhdGNoMjIgLXAwIC1iIC5wcjY1MjIwfgotJXBhdGNoMjMgLXAwIC1iIC5wcjY1MjI4fgorJXBh dGNoMTUgLXAwIC1iIC5wcjY1MzY5fgorJXBhdGNoMTYgLXAwIC1iIC5wcjY1NDAxfgorJXBhdGNo MTcgLXAwIC1iIC5wcjY1NDE4fgogCiAlaWYgMCV7P19lbmFibGVfZGVidWdfcGFja2FnZXN9CiBt a2RpciBkd3otd3JhcHBlcgpAQCAtMjk1MCw2ICsyOTM4LDMzIEBAIGZpCiAlZG9jIHJwbS5kb2Mv Y2hhbmdlbG9ncy9saWJjYzEvQ2hhbmdlTG9nKgogCiAlY2hhbmdlbG9nCisqIEZyaSBNYXIgMTMg MjAxNSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA1LjAuMC0wLjE5CistIHVwZGF0 ZSBmcm9tIHRoZSB0cnVuaworICAtIFBScyBhZGEvNjUyNTksIGFkYS82NTMxOSwgYm9vdHN0cmFw LzI1NjcyLCBib290c3RyYXAvNjUxNTAsIGMrKy82NDIyNywKKwljKysvNjQzOTgsIGMrKy82NDY2 NSwgYysrLzY0ODM0LCBjKysvNjUxMjcsIGMrKy82NTI5NSwgYysrLzY1MzIzLAorCWMrKy82NTMz MywgYysrLzY1MzM5LCBjKysvNjUzNzAsIGMvMzUzMzAsIGMvNjUxMjAsIGZvcnRyYW4vNjA4OTgs CisJZm9ydHJhbi82NTAyNCwgaXBhLzY0NjkzLCBpcGEvNjQ5ODgsIGlwYS82NTEzMCwgaXBhLzY1 MjMyLCBpcGEvNjUyMzYsCisJaXBhLzY1MjM3LCBpcGEvNjUyNDUsIGlwYS82NTI2MywgaXBhLzY1 MjcwLCBpcGEvNjUyODIsIGlwYS82NTI4NywKKwlpcGEvNjUzMDIsIGlwYS82NTMxNiwgaXBhLzY1 MzE4LCBpcGEvNjUzMzQsIGxpYmZvcnRyYW4vNjUyMDAsCisJbGliZ2NjLzY0ODg1LCBsaWJzdGRj KysvNjQzNjcsIGxpYnN0ZGMrKy82NDQ0MSwgbGlic3RkYysrLzY0Nzk3LAorCWxpYnN0ZGMrKy82 NTI0NiwgbGlic3RkYysrLzY1Mjc5LCBsdG8vNjUxOTMsIGx0by82NTI3NiwgbHRvLzY1MzE2LAor CWx0by82NTM2MSwgbWlkZGxlLWVuZC80NDU2MywgbWlkZGxlLWVuZC82MzE1NSwgbWlkZGxlLWVu ZC82MzE3NSwKKwltaWRkbGUtZW5kLzY0OTI4LCBtaWRkbGUtZW5kLzY1MjMzLCBtaWRkbGUtZW5k LzY1MjcwLAorCW1pZGRsZS1lbmQvNjUzMTUsIG90aGVyLzY1Mzg0LCBydGwtb3B0aW1pemF0aW9u LzY0ODk1LAorCXJ0bC1vcHRpbWl6YXRpb24vNjUwNjcsIHJ0bC1vcHRpbWl6YXRpb24vNjUyMzUs CisJcnRsLW9wdGltaXphdGlvbi82NTMyMSwgc2FuaXRpemVyLzYzOTU4LCBzYW5pdGl6ZXIvNjUy ODAsCisJc2FuaXRpemVyLzY1MzY3LCB0YXJnZXQvNTgxNTgsIHRhcmdldC81OTgyOCwgdGFyZ2V0 LzYyMjQ3LAorCXRhcmdldC82MjI1MSwgdGFyZ2V0LzY0MzE3LCB0YXJnZXQvNjQzMzEsIHRhcmdl dC82NDM0MiwgdGFyZ2V0LzY0NjAwLAorCXRhcmdldC82NTAzOCwgdGFyZ2V0LzY1MDQ0LCB0YXJn ZXQvNjUxMDMsIHRhcmdldC82NTEyMSwgdGFyZ2V0LzY1MTM4LAorCXRhcmdldC82NTE4MywgdGFy Z2V0LzY1MTg0LCB0YXJnZXQvNjUxOTIsIHRhcmdldC82NTI0MiwgdGFyZ2V0LzY1MjQ5LAorCXRh cmdldC82NTI2MSwgdGFyZ2V0LzY1Mjg2LCB0YXJnZXQvNjUyOTYsIHRhcmdldC82NTM2OCwKKwl0 cmVlLW9wdGltaXphdGlvbi82Mzc0MywgdHJlZS1vcHRpbWl6YXRpb24vNjUyNDEsCisJdHJlZS1v cHRpbWl6YXRpb24vNjUzMTAsIHRyZWUtb3B0aW1pemF0aW9uLzY1MzU1LAorCXRyZWUtb3B0aW1p emF0aW9uLzY1Mzg4CistIGZpeCB2ZWN0b3JpemF0aW9uIG9mIHVuYWxpZ25lZCBsb2FkcyBvbiBw b3dlcnBjIChQUiB0cmVlLW9wdGltaXphdGlvbi82NTM2OSkKKy0gZml4IGNvbWJpbmVyIG9uIGJp Zy1lbmRpYW4gdGFyZ2V0cyAoUFIgcnRsLW9wdGltaXphdGlvbi82NTQwMSkKKy0gZml4IHJlYXNz b2MgYml0IHRlc3Qgb3B0aW1pemF0aW9uIChQUiB0cmVlLW9wdGltaXphdGlvbi82NTQxOCkKKwog KiBGcmkgRmViIDI3IDIwMTUgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4gNS4wLjAt MC4xOAogLSBmaXggY29tcGlsYXRpb24gb2Ygc3RkZXhjZXB0IHdpdGggY2xhbmcgKFBSIGxpYnN0 ZGMrKy12My82NDM2NykKIC0gZml4IHNjcmF0Y2ggaGFuZGxpbmcgaW4gTFJBIHJlbWF0ZXJpYWxp emF0aW9uIChQUiB0YXJnZXQvNjUwMzIpICAgCgpkaWZmIC0tZ2l0IGEvZ2NjNS1hcm0tZm5zZWN0 LnBhdGNoIGIvZ2NjNS1hcm0tZm5zZWN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAzM2Q4OTg0Li4wMDAwMDAwCi0tLSBhL2djYzUtYXJtLWZuc2VjdC5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDI1ICswLDAgQEAKLTIwMTUtMDItMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8 cnRoQHJlZGhhdC5jb20+Ci0KLQkqIGNvbmZpZy9hcm0vYXJtLmMgKGFybV9mdW5jdGlvbl9pbl9z ZWN0aW9uX3ApOiBEZWxldGUgYm9ndXMKLQlUUkVFX1NUQVRJQyBjaGVjaywgdXNlIGRlY2xfYmlu ZHNfdG9fY3VycmVudF9kZWZfcCBpbnN0ZWFkIG9mCi0JdGFyZ2V0bS5iaW5kc19sb2NhbF9wLgot Ci0tLS0gZ2NjL2NvbmZpZy9hcm0vYXJtLmMKLSsrKyBnY2MvY29uZmlnL2FybS9hcm0uYwotQEAg LTYzOTIsMTQgKzYzOTIsOCBAQCBhcm1fc2V0X2RlZmF1bHRfdHlwZV9hdHRyaWJ1dGVzICh0cmVl IHR5cGUpCi0gc3RhdGljIGJvb2wKLSBhcm1fZnVuY3Rpb25faW5fc2VjdGlvbl9wICh0cmVlIGRl Y2wsIHNlY3Rpb24gKnNlY3Rpb24pCi0gewotLSAgLyogV2UgY2FuIG9ubHkgYmUgY2VydGFpbiBh Ym91dCBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgc2FtZQotLSAgICAgY29tcGlsYXRpb24gdW5p dC4gICovCi0tICBpZiAoIVRSRUVfU1RBVElDIChkZWNsKSkKLS0gICAgcmV0dXJuIGZhbHNlOwot LQotLSAgLyogTWFrZSBzdXJlIHRoYXQgU1lNQk9MIGFsd2F5cyBiaW5kcyB0byB0aGUgZGVmaW5p dGlvbiBpbiB0aGlzCi0tICAgICBjb21waWxhdGlvbiB1bml0LiAgKi8KLS0gIGlmICghdGFyZ2V0 bS5iaW5kc19sb2NhbF9wIChkZWNsKSkKLSsgIC8qIFdlIGNhbiBvbmx5IGJlIGNlcnRhaW4gYWJv dXQgdGhlIHByZXZhaWxpbmcgc3ltYm9sIGRlZmluaXRpb24uICAqLwotKyAgaWYgKCFkZWNsX2Jp bmRzX3RvX2N1cnJlbnRfZGVmX3AgKGRlY2wpKQotICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgIC8q IElmIERFQ0xfU0VDVElPTl9OQU1FIGlzIHNldCwgYXNzdW1lIGl0IGlzIHRydXN0d29ydGh5LiAg Ki8KCmRpZmYgLS1naXQgYS9nY2M1LXByNjQzNjcucGF0Y2ggYi9nY2M1LXByNjQzNjcucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzNzI5NzguLjAwMDAwMDAKLS0tIGEvZ2Nj NS1wcjY0MzY3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotMjAxNS0wMi0y NiAgSm9uYXRoYW4gV2FrZWx5ICA8andha2VseUByZWRoYXQuY29tPgotCi0JUFIgbGlic3RkYysr LXYzLzY0MzY3Ci0JKiBpbmNsdWRlL3N0ZC9zdGRleGNlcHQgKHN0ZDo6X19zc29fc3RyaW5nOjpf TV9ieXRlcyk6IFVzZQotCXNpemVvZihfX3N0cikgaW5zdGVhZCBvZiBzaXplb2YoX01fcykuCi0K LS0tLSBsaWJzdGRjKystdjMvaW5jbHVkZS9zdGQvc3RkZXhjZXB0Ci0rKysgbGlic3RkYysrLXYz L2luY2x1ZGUvc3RkL3N0ZGV4Y2VwdAotQEAgLTgwLDcgKzgwLDcgQEAgX0dMSUJDWFhfQkVHSU5f TkFNRVNQQUNFX1ZFUlNJT04KLSAKLSAgICAgdW5pb24gewotICAgICAgIF9fc3RyIF9NX3M7Ci0t ICAgICAgY2hhciBfTV9ieXRlc1tzaXplb2YoX01fcyldOwotKyAgICAgIGNoYXIgX01fYnl0ZXNb c2l6ZW9mKF9fc3RyKV07Ci0gICAgIH07Ci0gCi0gICAgIF9fc3NvX3N0cmluZygpIF9HTElCQ1hY X1VTRV9OT0VYQ0VQVDsKCmRpZmYgLS1naXQgYS9nY2M1LXByNjUwMzIucGF0Y2ggYi9nY2M1LXBy NjUwMzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4ZmE1NDQuLjAwMDAw MDAKLS0tIGEvZ2NjNS1wcjY1MDMyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAzICswLDAg QEAKLTIwMTUtMDItMjcgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgot Ci0JUFIgdGFyZ2V0LzY1MDMyCi0JKiBscmEtcmVtYXQuYyAodXBkYXRlX3NjcmF0Y2hfb3BzKTog TmV3LgotCShkb19yZW1hdCk6IENhbGwgaXQuCi0JKiBscmEuYyAobHJhX3JlZ2lzdGVyX25ld19z Y3JhdGNoX29wKTogTmV3LiBUYWtlIGNvZGUgZnJvbSAuLi4KLQkocmVtb3ZlX3NjcmF0Y2hlcyk6 IC4uLiBoZXJlLgotCSogbHJhLWludC5oIChscmFfcmVnaXN0ZXJfbmV3X3NjcmF0Y2hfb3ApOiBO ZXcgcHJvdG90eXBlLgotCi0JKiBnKysuZGcvcHI2NTAzMi5DOiBOZXcuCi0KLS0tLSBnY2MvbHJh LWludC5oCShyZXZpc2lvbiAyMjEwNjEpCi0rKysgZ2NjL2xyYS1pbnQuaAkocmV2aXNpb24gMjIx MDYyKQotQEAgLTMyMSw2ICszMjEsNyBAQCBleHRlcm4gdm9pZCBscmFfY3JlYXRlX2NvcHkgKGlu dCwgaW50LCBpCi0gZXh0ZXJuIGxyYV9jb3B5X3QgbHJhX2dldF9jb3B5IChpbnQpOwotIGV4dGVy biBib29sIGxyYV9mb3JtZXJfc2NyYXRjaF9wIChpbnQpOwotIGV4dGVybiBib29sIGxyYV9mb3Jt ZXJfc2NyYXRjaF9vcGVyYW5kX3AgKHJ0eF9pbnNuICosIGludCk7Ci0rZXh0ZXJuIHZvaWQgbHJh X3JlZ2lzdGVyX25ld19zY3JhdGNoX29wIChydHhfaW5zbiAqLCBpbnQpOwotIAotIGV4dGVybiBp bnQgbHJhX25ld19yZWdub19zdGFydDsKLSBleHRlcm4gaW50IGxyYV9jb25zdHJhaW50X25ld19y ZWdub19zdGFydDsKLS0tLSBnY2MvbHJhLmMJKHJldmlzaW9uIDIyMTA2MSkKLSsrKyBnY2MvbHJh LmMJKHJldmlzaW9uIDIyMTA2MikKLUBAIC0xOTA3LDYgKzE5MDcsMjQgQEAgbHJhX2Zvcm1lcl9z Y3JhdGNoX29wZXJhbmRfcCAocnR4X2luc24gKgotIAkJICAgICAgIElOU05fVUlEIChpbnNuKSAq IE1BWF9SRUNPR19PUEVSQU5EUyArIG5vcCkgIT0gMDsKLSB9Ci0gCi0rLyogUmVnaXN0ZXIgb3Bl cmFuZCBOT1AgaW4gSU5TTiBhcyBhIGZvcm1lciBzY3JhdGNoLiAgSXQgd2lsbCBiZQotKyAgIGNo YW5nZWQgdG8gc2NyYXRjaCBiYWNrLCBpZiBpdCBpcyBuZWNlc3NhcnksIGF0IHRoZSBMUkEgZW5k LiAgKi8KLSt2b2lkCi0rbHJhX3JlZ2lzdGVyX25ld19zY3JhdGNoX29wIChydHhfaW5zbiAqaW5z biwgaW50IG5vcCkKLSt7Ci0rICBscmFfaW5zbl9yZWNvZ19kYXRhX3QgaWQgPSBscmFfZ2V0X2lu c25fcmVjb2dfZGF0YSAoaW5zbik7Ci0rICBydHggb3AgPSAqaWQtPm9wZXJhbmRfbG9jW25vcF07 Ci0rICBzbG9jX3QgbG9jID0gWE5FVyAoc3RydWN0IHNsb2MpOwotKyAgbHJhX2Fzc2VydCAoUkVH X1AgKG9wKSk7Ci0rICBsb2MtPmluc24gPSBpbnNuOwotKyAgbG9jLT5ub3AgPSBub3A7Ci0rICBz Y3JhdGNoZXMuc2FmZV9wdXNoIChsb2MpOwotKyAgYml0bWFwX3NldF9iaXQgKCZzY3JhdGNoX2Jp dG1hcCwgUkVHTk8gKG9wKSk7Ci0rICBiaXRtYXBfc2V0X2JpdCAoJnNjcmF0Y2hfb3BlcmFuZF9i aXRtYXAsCi0rCQkgIElOU05fVUlEIChpbnNuKSAqIE1BWF9SRUNPR19PUEVSQU5EUyArIG5vcCk7 Ci0rICBhZGRfcmVnX25vdGUgKGluc24sIFJFR19VTlVTRUQsIG9wKTsKLSt9Ci0rCi0gLyogQ2hh bmdlIHNjcmF0Y2hlcyBvbnRvIHBzZXVkb3MgYW5kIHNhdmUgdGhlaXIgbG9jYXRpb24uICAqLwot IHN0YXRpYyB2b2lkCi0gcmVtb3ZlX3NjcmF0Y2hlcyAodm9pZCkKLUBAIC0xOTE2LDcgKzE5MzQs NiBAQCByZW1vdmVfc2NyYXRjaGVzICh2b2lkKQotICAgYmFzaWNfYmxvY2sgYmI7Ci0gICBydHhf aW5zbiAqaW5zbjsKLSAgIHJ0eCByZWc7Ci0tICBzbG9jX3QgbG9jOwotICAgbHJhX2luc25fcmVj b2dfZGF0YV90IGlkOwotICAgc3RydWN0IGxyYV9zdGF0aWNfaW5zbl9kYXRhICpzdGF0aWNfaWQ7 Ci0gCi1AQCAtMTkzOCwxNSArMTk1NSw3IEBAIHJlbW92ZV9zY3JhdGNoZXMgKHZvaWQpCi0gCSAg ICAgICppZC0+b3BlcmFuZF9sb2NbaV0gPSByZWcKLSAJCT0gbHJhX2NyZWF0ZV9uZXdfcmVnIChz dGF0aWNfaWQtPm9wZXJhbmRbaV0ubW9kZSwKLSAJCQkJICAgICAgKmlkLT5vcGVyYW5kX2xvY1tp XSwgQUxMX1JFR1MsIE5VTEwpOwotLQkgICAgICBhZGRfcmVnX25vdGUgKGluc24sIFJFR19VTlVT RUQsIHJlZyk7Ci0tCSAgICAgIGxyYV91cGRhdGVfZHVwIChpZCwgaSk7Ci0tCSAgICAgIGxvYyA9 IFhORVcgKHN0cnVjdCBzbG9jKTsKLS0JICAgICAgbG9jLT5pbnNuID0gaW5zbjsKLS0JICAgICAg bG9jLT5ub3AgPSBpOwotLQkgICAgICBzY3JhdGNoZXMuc2FmZV9wdXNoIChsb2MpOwotLQkgICAg ICBiaXRtYXBfc2V0X2JpdCAoJnNjcmF0Y2hfYml0bWFwLCBSRUdOTyAoKmlkLT5vcGVyYW5kX2xv Y1tpXSkpOwotLQkgICAgICBiaXRtYXBfc2V0X2JpdCAoJnNjcmF0Y2hfb3BlcmFuZF9iaXRtYXAs Ci0tCQkJICAgICAgSU5TTl9VSUQgKGluc24pICogTUFYX1JFQ09HX09QRVJBTkRTICsgaSk7Ci0r CSAgICAgIGxyYV9yZWdpc3Rlcl9uZXdfc2NyYXRjaF9vcCAoaW5zbiwgaSk7Ci0gCSAgICAgIGlm IChscmFfZHVtcF9maWxlICE9IE5VTEwpCi0gCQlmcHJpbnRmIChscmFfZHVtcF9maWxlLAotIAkJ CSAiUmVtb3ZpbmcgU0NSQVRDSCBpbiBpbnNuICMldSAobm9wICVkKVxuIiwKLS0tLSBnY2MvbHJh LXJlbWF0LmMJKHJldmlzaW9uIDIyMTA2MSkKLSsrKyBnY2MvbHJhLXJlbWF0LmMJKHJldmlzaW9u IDIyMTA2MikKLUBAIC0xMDQ0LDYgKzEwNDQsMjkgQEAgZ2V0X2hhcmRfcmVncyAoc3RydWN0IGxy YV9pbnNuX3JlZyAqcmVnLAotICAgcmV0dXJuIGhhcmRfcmVnbm87Ci0gfQotIAotKy8qIE1ha2Ug Y29weSBvZiBhbmQgcmVnaXN0ZXIgc2NyYXRjaCBwc2V1ZG9zIGluIHJlbWF0ZXJpYWxpemVkIGlu c24KLSsgICBSRU1BVF9JTlNOLiAgKi8KLStzdGF0aWMgdm9pZAotK3VwZGF0ZV9zY3JhdGNoX29w cyAocnR4X2luc24gKnJlbWF0X2luc24pCi0rewotKyAgbHJhX2luc25fcmVjb2dfZGF0YV90IGlk ID0gbHJhX2dldF9pbnNuX3JlY29nX2RhdGEgKHJlbWF0X2luc24pOwotKyAgc3RydWN0IGxyYV9z dGF0aWNfaW5zbl9kYXRhICpzdGF0aWNfaWQgPSBpZC0+aW5zbl9zdGF0aWNfZGF0YTsKLSsgIGZv ciAoaW50IGkgPSAwOyBpIDwgc3RhdGljX2lkLT5uX29wZXJhbmRzOyBpKyspCi0rICAgIHsKLSsg ICAgICBydHggKmxvYyA9IGlkLT5vcGVyYW5kX2xvY1tpXTsKLSsgICAgICBpZiAoISBSRUdfUCAo KmxvYykpCi0rCWNvbnRpbnVlOwotKyAgICAgIGludCByZWdubyA9IFJFR05PICgqbG9jKTsKLSsg ICAgICBpZiAoISBscmFfZm9ybWVyX3NjcmF0Y2hfcCAocmVnbm8pKQotKwljb250aW51ZTsKLSsg ICAgICAqbG9jID0gbHJhX2NyZWF0ZV9uZXdfcmVnIChHRVRfTU9ERSAoKmxvYyksICpsb2MsCi0r CQkJCSBscmFfZ2V0X2FsbG9jbm9fY2xhc3MgKHJlZ25vKSwKLSsJCQkJICJzY3JhdGNoIHBzZXVk byBjb3B5Iik7Ci0rICAgICAgbHJhX3JlZ2lzdGVyX25ld19zY3JhdGNoX29wIChyZW1hdF9pbnNu LCBpKTsKLSsgICAgfQotKyAgCi0rfQotKwotIC8qIEluc2VydCByZW1hdGVyaWFsaXphdGlvbiBp bnNucyB1c2luZyB0aGUgZGF0YS1mbG93IGRhdGEgY2FsY3VsYXRlZAotICAgIGVhcmxpZXIuICAq LwotIHN0YXRpYyBib29sCi1AQCAtMTE5Myw2ICsxMjE2LDcgQEAgZG9fcmVtYXQgKHZvaWQpCi0g CSAgICAgIEhPU1RfV0lERV9JTlQgc3Bfb2Zmc2V0X2NoYW5nZSA9IGNhbmRfc3Bfb2Zmc2V0IC0g aWQtPnNwX29mZnNldDsKLSAJICAgICAgaWYgKHNwX29mZnNldF9jaGFuZ2UgIT0gMCkKLSAJCWNo YW5nZV9zcF9vZmZzZXQgKHJlbWF0X2luc24sIHNwX29mZnNldF9jaGFuZ2UpOwotKwkgICAgICB1 cGRhdGVfc2NyYXRjaF9vcHMgKHJlbWF0X2luc24pOwotIAkgICAgICBscmFfcHJvY2Vzc19uZXdf aW5zbnMgKGluc24sIHJlbWF0X2luc24sIE5VTEwsCi0gCQkJCSAgICAgIkluc2VydGluZyByZW1h dGVyaWFsaXphdGlvbiBpbnNuIik7Ci0gCSAgICAgIGxyYV9zZXRfaW5zbl9kZWxldGVkIChpbnNu KTsKLS0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy9wcjY1MDMyLkMJKHJldmlzaW9uIDApCi0rKysg Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI2NTAzMi5DCShyZXZpc2lvbiAyMjEwNjIpCi1AQCAtMCww ICsxLDg3IEBACi0rLy8geyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0q LSogfSB9Ci0rLy8geyBkZy1vcHRpb25zICItT3MgLXN0ZD1jKysxMSAtZlBJQyAtZnN0YWNrLXBy b3RlY3Rvci1zdHJvbmcgLWZvbWl0LWZyYW1lLXBvaW50ZXIiIH0KLSsKLSsjcHJhZ21hIEdDQyB2 aXNpYmlsaXR5IHB1c2goaGlkZGVuKQotKyNwcmFnbWEgR0NDIHZpc2liaWxpdHkgcHVzaChkZWZh dWx0KQotK2V4dGVybiAiQyIgewotKyAgdHlwZWRlZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9f ICgoX19tb2RlX18gKF9fRElfXykpKTsKLSt9Ci0rZW51bSBjbGFzcyBuc3Jlc3VsdDsKLSsjcHJh Z21hIEdDQyB2aXNpYmlsaXR5IHBvcAotK2NsYXNzIEEKLSt7Ci0rICBmbG9hdCBtUmF3UHRyOwot KwotKyBwdWJsaWM6Ci0rICBBIChmbG9hdCAqKTsKLSt9OwotK2NsYXNzIEIKLSt7Ci0rIHB1Ymxp YzoKLSsgIEIgKGludDY0X3QsIGludCwgaW50KTsKLSt9OwotK3R5cGVkZWYgc3RydWN0Ci0rewot KyAgaW50IGNoYW5uZWxzOwotK30gdm9yYmlzX2luZm87Ci0rdGVtcGxhdGUgPHR5cGVuYW1lIF9L ZXk+IGNsYXNzIEMKLSt7Ci0rIHB1YmxpYzoKLSsgIHR5cGVkZWYgaW50IHNpemVfdHlwZTsKLSsg IHNpemVfdHlwZSBlcmFzZSAoX0tleSAmKTsKLSt9OwotKwotK3RlbXBsYXRlIDx0eXBlbmFtZSBf S2V5PiBjbGFzcyBECi0rewotKyBwdWJsaWM6Ci0rICB0eXBlZGVmIF9LZXkga2V5X3R5cGU7Ci0r ICB0eXBlZGVmIEM8a2V5X3R5cGU+IF9SZXBfdHlwZTsKLSsgIF9SZXBfdHlwZSBfTV90OwotKyAg dHlwZW5hbWUgX1JlcF90eXBlOjpzaXplX3R5cGUKLSsgICAgZXJhc2UgKGtleV90eXBlIHAxKQot KyAgewotKyAgICByZXR1cm4gX01fdC5lcmFzZSAocDEpOwotKyAgfQotK307Ci0rCi0rY2xhc3Mg RgotK3sKLSsgcHVibGljOgotKyAgdm9yYmlzX2luZm8gbUluZm87Ci0rICBEPGludCAqPiBtVm9y YmlzUGFja2V0U2FtcGxlczsKLSsgIHZvaWQgVmFsaWRhdGVWb3JiaXNQYWNrZXRTYW1wbGVzIChp bnQgKik7Ci0rICBpbnQ2NF90IFRpbWUgKGludDY0X3QpOwotK307Ci0rY2xhc3MgRwotK3sKLSsg IG5zcmVzdWx0IERlY29kZVZvcmJpcyAoaW50ICopOwotKyAgRiAqbVZvcmJpc1N0YXRlOwotKyAg aW50NjRfdCBtRGVjb2RlZEF1ZGlvRnJhbWVzOwotK307Ci0raW50IGZuMSAoZmxvYXQgKioqKTsK LSt2b2lkIGZuMiAoaW50KTsKLSt2b2lkCi0rRjo6VmFsaWRhdGVWb3JiaXNQYWNrZXRTYW1wbGVz IChpbnQgKnAxKQotK3sKLSsgIG1Wb3JiaXNQYWNrZXRTYW1wbGVzLmVyYXNlIChwMSk7Ci0rfQot KwotK25zcmVzdWx0Ci0rRzo6RGVjb2RlVm9yYmlzIChpbnQgKnAxKQotK3sKLSsgIGZsb2F0ICoq YTsKLSsgIGludCBiOwotKyAgbG9uZyBsb25nIGM7Ci0rICB3aGlsZSAoKGIgPSBmbjEgKCZhKSkp Ci0rICAgIHsKLSsgICAgICBtVm9yYmlzU3RhdGUtPlZhbGlkYXRlVm9yYmlzUGFja2V0U2FtcGxl cyAocDEpOwotKyAgICAgIEEgKG5ldyBmbG9hdCk7Ci0rICAgICAgZm9yICg7IG1Wb3JiaXNTdGF0 ZS0+bUluZm8uY2hhbm5lbHM7KQotKwl7Ci0rCX0KLSsgICAgICBpbnQ2NF90IGQgPSBtVm9yYmlz U3RhdGUtPlRpbWUgKGMgLSBiKTsKLSsgICAgICAoQiAoZCwgYiwgbVZvcmJpc1N0YXRlLT5tSW5m by5jaGFubmVscykpOwotKyAgICAgIG1EZWNvZGVkQXVkaW9GcmFtZXMgLT0gYjsKLSsgICAgICBm bjIgKGIpOwotKyAgICB9Ci0rfQoKZGlmZiAtLWdpdCBhL2djYzUtcHI2NTA0MC5wYXRjaCBiL2dj YzUtcHI2NTA0MC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDEzOTY4OC4u MDAwMDAwMAotLS0gYS9nY2M1LXByNjUwNDAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyAr MCwwIEBACi0yMDE1LTAyLTI3ICBNYXJlayBQb2xhY2VrICA8cG9sYWNla0ByZWRoYXQuY29tPgot Ci0JUFIgYy82NTA0MAotCSogZG9jL2ludm9rZS50ZXhpOiBVcGRhdGUgdG8gcmVmbGVjdCB0aGF0 IC1XZm9ybWF0PTIgZG9lc24ndCBlbmFibGUKLQktV2Zvcm1hdC1zaWduZWRuZXNzIGFueW1vcmUu Ci1jLWZhbWlseS8KLQkqIGMub3B0IChXZm9ybWF0LXNpZ25lZG5lc3MpOiBEb24ndCBlbmFibGUg YnkgLVdmb3JtYXQ9Mi4KLXRlc3RzdWl0ZS8KLQkqIGdjYy5kZy9wcjY1MDY2LmM6IFVzZSAtV2Zv cm1hdCAtV2Zvcm1hdC1zaWduZWRuZXNzIGFuZCBub3QKLQktV2Zvcm1hdD0yLgotCi0tLS0gZ2Nj L2RvYy9pbnZva2UudGV4aQkocmV2aXNpb24gMjIxMDYwKQotKysrIGdjYy9kb2MvaW52b2tlLnRl eGkJKHJldmlzaW9uIDIyMTA2MSkKLUBAIC0zNjMxLDcgKzM2MzEsNyBAQCBUaGUgQyBzdGFuZGFy ZCBzcGVjaWZpZXMgdGhhdCB6ZXJvLWxlbmd0Ci0gQG9waW5kZXggV2Zvcm1hdD0yCi0gRW5hYmxl IEBvcHRpb257LVdmb3JtYXR9IHBsdXMgYWRkaXRpb25hbCBmb3JtYXQgY2hlY2tzLiAgQ3VycmVu dGx5Ci0gZXF1aXZhbGVudCB0byBAb3B0aW9uey1XZm9ybWF0IC1XZm9ybWF0LW5vbmxpdGVyYWwg LVdmb3JtYXQtc2VjdXJpdHkKLS0tV2Zvcm1hdC1zaWduZWRuZXNzIC1XZm9ybWF0LXkya30uCi0r LVdmb3JtYXQteTJrfS4KLSAKLSBAaXRlbSAtV2Zvcm1hdC1ub25saXRlcmFsCi0gQG9waW5kZXgg V2Zvcm1hdC1ub25saXRlcmFsCi0tLS0gZ2NjL2MtZmFtaWx5L2Mub3B0CShyZXZpc2lvbiAyMjEw NjApCi0rKysgZ2NjL2MtZmFtaWx5L2Mub3B0CShyZXZpc2lvbiAyMjEwNjEpCi1AQCAtNDU2LDcg KzQ1Niw3IEBAIEMgT2JqQyBDKysgT2JqQysrIFZhcih3YXJuX2Zvcm1hdF9zZWN1cmkKLSBXYXJu IGFib3V0IHBvc3NpYmxlIHNlY3VyaXR5IHByb2JsZW1zIHdpdGggZm9ybWF0IGZ1bmN0aW9ucwot IAotIFdmb3JtYXQtc2lnbmVkbmVzcwotLUMgT2JqQyBDKysgT2JqQysrIFZhcih3YXJuX2Zvcm1h dF9zaWduZWRuZXNzKSBXYXJuaW5nIExhbmdFbmFibGVkQnkoQyBPYmpDIEMrKyBPYmpDKyssV2Zv cm1hdD0sIHdhcm5fZm9ybWF0ID49IDIsIDApCi0rQyBPYmpDIEMrKyBPYmpDKysgVmFyKHdhcm5f Zm9ybWF0X3NpZ25lZG5lc3MpIFdhcm5pbmcKLSBXYXJuIGFib3V0IHNpZ24gZGlmZmVyZW5jZXMg d2l0aCBmb3JtYXQgZnVuY3Rpb25zCi0gCi0gV2Zvcm1hdC15MmsKLS0tLSBnY2MvdGVzdHN1aXRl L2djYy5kZy9wcjY1MDY2LmMJKHJldmlzaW9uIDIyMTA2MCkKLSsrKyBnY2MvdGVzdHN1aXRlL2dj Yy5kZy9wcjY1MDY2LmMJKHJldmlzaW9uIDIyMTA2MSkKLUBAIC0xLDYgKzEsNiBAQAotIC8qIFBS IGMvNjUwNjYgKi8KLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAi LVdmb3JtYXQ9MiIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLVdmb3JtYXQgLVdmb3JtYXQtc2ln bmVkbmVzcyIgfSAqLwotIAotIGV4dGVybiBpbnQgc3NjYW5mIChjb25zdCBjaGFyICpyZXN0cmlj dCwgY29uc3QgY2hhciAqcmVzdHJpY3QsIC4uLik7Ci0gaW50ICphOwoKZGlmZiAtLWdpdCBhL2dj YzUtcHI2NTA0OC10ZXN0LnBhdGNoIGIvZ2NjNS1wcjY1MDQ4LXRlc3QucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzN2UyMWYuLjAwMDAwMDAKLS0tIGEvZ2NjNS1wcjY1MDQ4 LXRlc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0yMDE1LTAyLTI3ICBK YWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBSIHRyZWUtb3B0aW1pemF0aW9u LzY1MDQ4Ci0JKiBnY2MuZGcvdHJlZS1zc2Evc3NhLWRvbS10aHJlYWQtOS5jOiBBZGQgLXN0ZD1n bnU4OSB0byBkZy1vcHRpb25zLgotCShmb28pOiBVc2UgSyZSIHN0eWxlIGRlZmluaXRpb24uCi0K LS0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9zc2EtZG9tLXRocmVhZC05LmMJKHJl dmlzaW9uIDIyMTA2MikKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9zc2EtZG9t LXRocmVhZC05LmMJKHJldmlzaW9uIDIyMTA2MykKLUBAIC0xLDEyICsxLDEzIEBACi0gLyogUFIg NjUwNDggKi8KLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8z IiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzMgLXN0ZD1nbnU4OSIgfSAqLwotIAotIGludCBh LCBiLCBjLCBkOwotIHZvaWQgZm4gKHZvaWQpOwotIAotIGludAotLWZvbyAoaW50IHgpCi0rZm9v ICh4KQotKyAgICAgaW50IHg7Ci0gewotICAgc3dpdGNoICh4KQotICAgICB7CgpkaWZmIC0tZ2l0 IGEvZ2NjNS1wcjY1MjE1LnBhdGNoIGIvZ2NjNS1wcjY1MjE1LnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAyMmZhZTA3Li4wMDAwMDAwCi0tLSBhL2djYzUtcHI2NTIxNS5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDMxNCArMCwwIEBACi0yMDE1LTAyLTI2ICBKYWt1YiBKZWxp bmVrICA8amFrdWJAcmVkaGF0LmNvbT4KLQotCVBSIHRyZWUtb3B0aW1pemF0aW9uLzY1MjE1Ci0J KiB0cmVlLXNzYS1tYXRoLW9wdHMuYyAoZmluZF9ic3dhcF9vcl9ub3BfbG9hZCk6IFJldHVybiBm YWxzZQotCWZvciBQRFAgZW5kaWFuIHRhcmdldHMuCi0JKHBlcmZvcm1fc3ltYm9saWNfbWVyZ2Us IGZpbmRfYnN3YXBfb3Jfbm9wXzEsIGZpbmRfYnN3YXBfb3Jfbm9wKToKLQlGaXggdXAgZm9ybWF0 dGluZyBpc3N1ZXMuCi0JKGJzd2FwX3JlcGxhY2UpOiBMaWtld2lzZS4gIEZvciBCWVRFU19CSUdf RU5ESUFOLCBpZiB0aGUgZmluYWwgYWNjZXNzCi0Jc2l6ZSBpcyBzbWFsbGVyIHRoYW4gdGhlIG9y aWdpbmFsLCBhZGp1c3QgTUVNX1JFRiBvZmZzZXQgYnkgdGhlCi0JZGlmZmVyZW5jZSBvZiBzaXpl cy4gIFVzZSBpc19naW1wbGVfbWVtX3JlZl9hZGRyIGluc3RlYWQgb2YKLQlpc19naW1wbGVfbWlu X2ludmFyaWFudCB0ZXN0IHRvIGF2b2lkIGFkZGluZyBhZGRyZXNzIHRlbXBvcmFyaWVzLgotCi0J KiBnY2MuYy10b3J0dXJlL2V4ZWN1dGUvcHI2NTIxNS0xLmM6IE5ldyB0ZXN0LgotCSogZ2NjLmMt dG9ydHVyZS9leGVjdXRlL3ByNjUyMTUtMi5jOiBOZXcgdGVzdC4KLQkqIGdjYy5jLXRvcnR1cmUv ZXhlY3V0ZS9wcjY1MjE1LTMuYzogTmV3IHRlc3QuCi0JKiBnY2MuYy10b3J0dXJlL2V4ZWN1dGUv cHI2NTIxNS00LmM6IE5ldyB0ZXN0LgotCSogZ2NjLmMtdG9ydHVyZS9leGVjdXRlL3ByNjUyMTUt NS5jOiBOZXcgdGVzdC4KLQotLS0tIGdjYy90cmVlLXNzYS1tYXRoLW9wdHMuYy5qagkyMDE1LTAx LTI4IDIxOjI0OjU2LjAwMDAwMDAwMCArMDEwMAotKysrIGdjYy90cmVlLXNzYS1tYXRoLW9wdHMu YwkyMDE1LTAyLTI2IDExOjE2OjAxLjA2MjAyNDc0OSArMDEwMAotQEAgLTE3ODAsNiArMTc4MCwx MCBAQCBmaW5kX2Jzd2FwX29yX25vcF9sb2FkIChnaW1wbGUgc3RtdCwgdHJlCi0gICBpbnQgdW5z aWduZWRwLCB2b2xhdGlsZXA7Ci0gICB0cmVlIG9mZnNldCwgYmFzZV9hZGRyOwotIAotKyAgLyog Tm90IHByZXBhcmVkIHRvIGhhbmRsZSBQRFAgZW5kaWFuLiAgKi8KLSsgIGlmIChCWVRFU19CSUdf RU5ESUFOICE9IFdPUkRTX0JJR19FTkRJQU4pCi0rICAgIHJldHVybiBmYWxzZTsKLSsKLSAgIGlm ICghZ2ltcGxlX2Fzc2lnbl9sb2FkX3AgKHN0bXQpIHx8IGdpbXBsZV9oYXNfdm9sYXRpbGVfb3Bz IChzdG10KSkKLSAgICAgcmV0dXJuIGZhbHNlOwotIAotQEAgLTE4NjAsOCArMTg2NCw4IEBAIHBl cmZvcm1fc3ltYm9saWNfbWVyZ2UgKGdpbXBsZSBzb3VyY2Vfc3QKLSAJICB8fCAhb3BlcmFuZF9l cXVhbF9wIChuMS0+YmFzZV9hZGRyLCBuMi0+YmFzZV9hZGRyLCAwKSkKLSAJcmV0dXJuIE5VTEw7 Ci0gCi0tICAgICAgaWYgKCFuMS0+b2Zmc2V0ICE9ICFuMi0+b2Zmc2V0IHx8Ci0tICAgICAgICAg IChuMS0+b2Zmc2V0ICYmICFvcGVyYW5kX2VxdWFsX3AgKG4xLT5vZmZzZXQsIG4yLT5vZmZzZXQs IDApKSkKLSsgICAgICBpZiAoIW4xLT5vZmZzZXQgIT0gIW4yLT5vZmZzZXQKLSsJICB8fCAobjEt Pm9mZnNldCAmJiAhb3BlcmFuZF9lcXVhbF9wIChuMS0+b2Zmc2V0LCBuMi0+b2Zmc2V0LCAwKSkp Ci0gCXJldHVybiBOVUxMOwotIAotICAgICAgIGlmIChuMS0+Ynl0ZXBvcyA8IG4yLT5ieXRlcG9z KQotQEAgLTE5MTIsOCArMTkxNiw4IEBAIHBlcmZvcm1fc3ltYm9saWNfbWVyZ2UgKGdpbXBsZSBz b3VyY2Vfc3QKLSAgICAgICBzaXplID0gVFlQRV9QUkVDSVNJT04gKG4xLT50eXBlKSAvIEJJVFNf UEVSX1VOSVQ7Ci0gICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKywgaW5jIDw8PSBCSVRT X1BFUl9NQVJLRVIpCi0gCXsKLS0JICB1bnNpZ25lZCBtYXJrZXIgPQotLQkgICAgKHRvaW5jX25f cHRyLT5uID4+IChpICogQklUU19QRVJfTUFSS0VSKSkgJiBNQVJLRVJfTUFTSzsKLSsJICB1bnNp Z25lZCBtYXJrZXIKLSsJICAgID0gKHRvaW5jX25fcHRyLT5uID4+IChpICogQklUU19QRVJfTUFS S0VSKSkgJiBNQVJLRVJfTUFTSzsKLSAJICBpZiAobWFya2VyICYmIG1hcmtlciAhPSBNQVJLRVJf QllURV9VTktOT1dOKQotIAkgICAgdG9pbmNfbl9wdHItPm4gKz0gaW5jOwotIAl9Ci1AQCAtMjAz Miw3ICsyMDM2LDcgQEAgZmluZF9ic3dhcF9vcl9ub3BfMSAoZ2ltcGxlIHN0bXQsIHN0cnVjdAot IAljYXNlIFJTSElGVF9FWFBSOgotIAljYXNlIExST1RBVEVfRVhQUjoKLSAJY2FzZSBSUk9UQVRF X0VYUFI6Ci0tCSAgaWYgKCFkb19zaGlmdF9yb3RhdGUgKGNvZGUsIG4sIChpbnQpVFJFRV9JTlRf Q1NUX0xPVyAocmhzMikpKQotKwkgIGlmICghZG9fc2hpZnRfcm90YXRlIChjb2RlLCBuLCAoaW50 KSBUUkVFX0lOVF9DU1RfTE9XIChyaHMyKSkpCi0gCSAgICByZXR1cm4gTlVMTDsKLSAJICBicmVh azsKLSAJQ0FTRV9DT05WRVJUOgotQEAgLTIxMDQsMTIgKzIxMDgsMTIgQEAgZmluZF9ic3dhcF9v cl9ub3BfMSAoZ2ltcGxlIHN0bXQsIHN0cnVjdAotIAkgIGlmIChUWVBFX1BSRUNJU0lPTiAobjEu dHlwZSkgIT0gVFlQRV9QUkVDSVNJT04gKG4yLnR5cGUpKQotIAkgICAgcmV0dXJuIE5VTEw7Ci0g Ci0tCSAgaWYgKCFuMS52dXNlICE9ICFuMi52dXNlIHx8Ci0tCSAgKG4xLnZ1c2UgJiYgIW9wZXJh bmRfZXF1YWxfcCAobjEudnVzZSwgbjIudnVzZSwgMCkpKQotKwkgIGlmICghbjEudnVzZSAhPSAh bjIudnVzZQotKwkgICAgICB8fCAobjEudnVzZSAmJiAhb3BlcmFuZF9lcXVhbF9wIChuMS52dXNl LCBuMi52dXNlLCAwKSkpCi0gCSAgICByZXR1cm4gTlVMTDsKLSAKLS0JICBzb3VyY2Vfc3RtdCA9 Ci0tCSAgICBwZXJmb3JtX3N5bWJvbGljX21lcmdlIChzb3VyY2Vfc3RtdDEsICZuMSwgc291cmNl X3N0bXQyLCAmbjIsIG4pOwotKwkgIHNvdXJjZV9zdG10Ci0rCSAgICA9IHBlcmZvcm1fc3ltYm9s aWNfbWVyZ2UgKHNvdXJjZV9zdG10MSwgJm4xLCBzb3VyY2Vfc3RtdDIsICZuMiwgbik7Ci0gCi0g CSAgaWYgKCFzb3VyY2Vfc3RtdCkKLSAJICAgIHJldHVybiBOVUxMOwotQEAgLTIxNTMsMTIgKzIx NTcsMTIgQEAgZmluZF9ic3dhcF9vcl9ub3AgKGdpbXBsZSBzdG10LCBzdHJ1Y3QgcwotICAgICAg aW4gbGliZ2NjLCBhbmQgZm9yIGluaXRpYWwgc2hpZnQvYW5kIG9wZXJhdGlvbiBvZiB0aGUgc3Jj IG9wZXJhbmQuICAqLwotICAgbGltaXQgPSBUUkVFX0lOVF9DU1RfTE9XIChUWVBFX1NJWkVfVU5J VCAoZ2ltcGxlX2V4cHJfdHlwZSAoc3RtdCkpKTsKLSAgIGxpbWl0ICs9IDEgKyAoaW50KSBjZWls X2xvZzIgKCh1bnNpZ25lZCBIT1NUX1dJREVfSU5UKSBsaW1pdCk7Ci0tICBzb3VyY2Vfc3RtdCA9 ICBmaW5kX2Jzd2FwX29yX25vcF8xIChzdG10LCBuLCBsaW1pdCk7Ci0rICBzb3VyY2Vfc3RtdCA9 IGZpbmRfYnN3YXBfb3Jfbm9wXzEgKHN0bXQsIG4sIGxpbWl0KTsKLSAKLSAgIGlmICghc291cmNl X3N0bXQpCi0gICAgIHJldHVybiBOVUxMOwotIAotLSAgLyogRmluZCByZWFsIHNpemUgb2YgcmVz dWx0IChoaWdoZXN0IG5vbiB6ZXJvIGJ5dGUpLiAgKi8KLSsgIC8qIEZpbmQgcmVhbCBzaXplIG9m IHJlc3VsdCAoaGlnaGVzdCBub24temVybyBieXRlKS4gICovCi0gICBpZiAobi0+YmFzZV9hZGRy KQotICAgICB7Ci0gICAgICAgaW50IHJzaXplOwotQEAgLTIyNjEsOCArMjI2NSwzMCBAQCBic3dh cF9yZXBsYWNlIChnaW1wbGUgY3VyX3N0bXQsIGdpbXBsZSBzCi0gICAgICAgdHJlZSBsb2FkX29m ZnNldF9wdHIsIGFsaWduZWRfbG9hZF90eXBlOwotICAgICAgIGdpbXBsZSBhZGRyX3N0bXQsIGxv YWRfc3RtdDsKLSAgICAgICB1bnNpZ25lZCBhbGlnbjsKLSsgICAgICBIT1NUX1dJREVfSU5UIGxv YWRfb2Zmc2V0ID0gMDsKLSAKLSAgICAgICBhbGlnbiA9IGdldF9vYmplY3RfYWxpZ25tZW50IChz cmMpOwotKyAgICAgIC8qIElmIHRoZSBuZXcgYWNjZXNzIGlzIHNtYWxsZXIgdGhhbiB0aGUgb3Jp Z2luYWwgb25lLCB3ZSBuZWVkCi0rCSB0byBwZXJmb3JtIGJpZyBlbmRpYW4gYWRqdXN0bWVudC4g ICovCi0rICAgICAgaWYgKEJZVEVTX0JJR19FTkRJQU4pCi0rCXsKLSsJICBIT1NUX1dJREVfSU5U IGJpdHNpemUsIGJpdHBvczsKLSsJICBtYWNoaW5lX21vZGUgbW9kZTsKLSsJICBpbnQgdW5zaWdu ZWRwLCB2b2xhdGlsZXA7Ci0rCSAgdHJlZSBvZmZzZXQ7Ci0rCi0rCSAgZ2V0X2lubmVyX3JlZmVy ZW5jZSAoc3JjLCAmYml0c2l6ZSwgJmJpdHBvcywgJm9mZnNldCwgJm1vZGUsCi0rCQkJICAgICAg ICZ1bnNpZ25lZHAsICZ2b2xhdGlsZXAsIGZhbHNlKTsKLSsJICBpZiAobi0+cmFuZ2UgPCAodW5z aWduZWQgSE9TVF9XSURFX0lOVCkgYml0c2l6ZSkKLSsJICAgIHsKLSsJICAgICAgbG9hZF9vZmZz ZXQgPSAoYml0c2l6ZSAtIG4tPnJhbmdlKSAvIEJJVFNfUEVSX1VOSVQ7Ci0rCSAgICAgIHVuc2ln bmVkIEhPU1RfV0lERV9JTlQgbAotKwkJPSAobG9hZF9vZmZzZXQgKiBCSVRTX1BFUl9VTklUKSAm IChhbGlnbiAtIDEpOwotKwkgICAgICBpZiAobCkKLSsJCWFsaWduID0gbCAmIC1sOwotKwkgICAg fQotKwl9Ci0rCi0gICAgICAgaWYgKGJzd2FwCi0gCSAgJiYgYWxpZ24gPCBHRVRfTU9ERV9BTElH Tk1FTlQgKFRZUEVfTU9ERSAobG9hZF90eXBlKSkKLSAJICAmJiBTTE9XX1VOQUxJR05FRF9BQ0NF U1MgKFRZUEVfTU9ERSAobG9hZF90eXBlKSwgYWxpZ24pKQotQEAgLTIyNzQsMTAgKzIzMDAsMTAg QEAgYnN3YXBfcmVwbGFjZSAoZ2ltcGxlIGN1cl9zdG10LCBnaW1wbGUgcwotICAgICAgIGdzaV9t b3ZlX2JlZm9yZSAoJmdzaSwgJmdzaV9pbnMpOwotICAgICAgIGdzaSA9IGdzaV9mb3Jfc3RtdCAo Y3VyX3N0bXQpOwotIAotLSAgICAgIC8qICBDb21wdXRlIGFkZHJlc3MgdG8gbG9hZCBmcm9tIGFu ZCBjYXN0IGFjY29yZGluZyB0byB0aGUgc2l6ZQotLQkgIG9mIHRoZSBsb2FkLiAgKi8KLSsgICAg ICAvKiBDb21wdXRlIGFkZHJlc3MgdG8gbG9hZCBmcm9tIGFuZCBjYXN0IGFjY29yZGluZyB0byB0 aGUgc2l6ZQotKwkgb2YgdGhlIGxvYWQuICAqLwotICAgICAgIGFkZHJfZXhwciA9IGJ1aWxkX2Zv bGRfYWRkcl9leHByICh1bnNoYXJlX2V4cHIgKHNyYykpOwotLSAgICAgIGlmIChpc19naW1wbGVf bWluX2ludmFyaWFudCAoYWRkcl9leHByKSkKLSsgICAgICBpZiAoaXNfZ2ltcGxlX21lbV9yZWZf YWRkciAoYWRkcl9leHByKSkKLSAJYWRkcl90bXAgPSBhZGRyX2V4cHI7Ci0gICAgICAgZWxzZQot IAl7Ci1AQCAtMjI5MSw3ICsyMzE3LDcgQEAgYnN3YXBfcmVwbGFjZSAoZ2ltcGxlIGN1cl9zdG10 LCBnaW1wbGUgcwotICAgICAgIGFsaWduZWRfbG9hZF90eXBlID0gbG9hZF90eXBlOwotICAgICAg IGlmIChhbGlnbiA8IFRZUEVfQUxJR04gKGxvYWRfdHlwZSkpCi0gCWFsaWduZWRfbG9hZF90eXBl ID0gYnVpbGRfYWxpZ25lZF90eXBlIChsb2FkX3R5cGUsIGFsaWduKTsKLS0gICAgICBsb2FkX29m ZnNldF9wdHIgPSBidWlsZF9pbnRfY3N0IChuLT5hbGlhc19zZXQsIDApOwotKyAgICAgIGxvYWRf b2Zmc2V0X3B0ciA9IGJ1aWxkX2ludF9jc3QgKG4tPmFsaWFzX3NldCwgbG9hZF9vZmZzZXQpOwot ICAgICAgIHZhbF9leHByID0gZm9sZF9idWlsZDIgKE1FTV9SRUYsIGFsaWduZWRfbG9hZF90eXBl LCBhZGRyX3RtcCwKLSAJCQkgICAgICBsb2FkX29mZnNldF9wdHIpOwotIAotQEAgLTIzMjgsNyAr MjM1NCw3IEBAIGJzd2FwX3JlcGxhY2UgKGdpbXBsZSBjdXJfc3RtdCwgZ2ltcGxlIHMKLSAJICAg IHsKLSAJICAgICAgZnByaW50ZiAoZHVtcF9maWxlLAotIAkJICAgICAgICIlZCBiaXQgbG9hZCBp biB0YXJnZXQgZW5kaWFubmVzcyBmb3VuZCBhdDogIiwKLS0JCSAgICAgICAoaW50KW4tPnJhbmdl KTsKLSsJCSAgICAgICAoaW50KSBuLT5yYW5nZSk7Ci0gCSAgICAgIHByaW50X2dpbXBsZV9zdG10 IChkdW1wX2ZpbGUsIGN1cl9zdG10LCAwLCAwKTsKLSAJICAgIH0KLSAJICByZXR1cm4gdHJ1ZTsK LUBAIC0yMzk1LDcgKzI0MjEsNyBAQCBic3dhcF9yZXBsYWNlIChnaW1wbGUgY3VyX3N0bXQsIGdp bXBsZSBzCi0gICBpZiAoZHVtcF9maWxlKQotICAgICB7Ci0gICAgICAgZnByaW50ZiAoZHVtcF9m aWxlLCAiJWQgYml0IGJzd2FwIGltcGxlbWVudGF0aW9uIGZvdW5kIGF0OiAiLAotLQkgICAgICAg KGludCluLT5yYW5nZSk7Ci0rCSAgICAgICAoaW50KSBuLT5yYW5nZSk7Ci0gICAgICAgcHJpbnRf Z2ltcGxlX3N0bXQgKGR1bXBfZmlsZSwgY3VyX3N0bXQsIDAsIDApOwotICAgICB9Ci0gCi0tLS0g Z2NjL3Rlc3RzdWl0ZS9nY2MuYy10b3J0dXJlL2V4ZWN1dGUvcHI2NTIxNS0xLmMuamoJMjAxNS0w Mi0yNiAxMDo0NjoyOS4xMDI0NDE1MTkgKzAxMDAKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy5jLXRv cnR1cmUvZXhlY3V0ZS9wcjY1MjE1LTEuYwkyMDE1LTAyLTI2IDEwOjQ0OjM5LjAwMDAwMDAwMCAr MDEwMAotQEAgLTAsMCArMSwyNCBAQAotKy8qIFBSIHRyZWUtb3B0aW1pemF0aW9uLzY1MjE1ICov Ci0rCi0rc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQKLStmb28gKHVuc2lnbmVkIGludCB4KQot K3sKLSsgIHJldHVybiAoeCA+PiAyNCkgfCAoKHggPj4gOCkgJiAweGZmMDApIHwgKCh4IDw8IDgp ICYgMHhmZjAwMDApIHwgKHggPDwgMjQpOwotK30KLSsKLStfX2F0dHJpYnV0ZV9fKChub2lubGlu ZSwgbm9jbG9uZSkpIHVuc2lnbmVkIGludAotK2JhciAodW5zaWduZWQgbG9uZyBsb25nICp4KQot K3sKLSsgIHJldHVybiBmb28gKCp4KTsKLSt9Ci0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsgIGlm IChfX0NIQVJfQklUX18gIT0gOCB8fCBzaXplb2YgKHVuc2lnbmVkIGludCkgIT0gNCB8fCBzaXpl b2YgKHVuc2lnbmVkIGxvbmcgbG9uZykgIT0gOCkKLSsgICAgcmV0dXJuIDA7Ci0rICB1bnNpZ25l ZCBsb25nIGxvbmcgbCA9IGZvbyAoMHhkZWFkYmVlZlUpIHwgMHhmZWVkYmVhODAwMDAwMDAwVUxM OwotKyAgaWYgKGJhciAoJmwpICE9IDB4ZGVhZGJlZWZVKQotKyAgICBfX2J1aWx0aW5fYWJvcnQg KCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuYy10b3J0dXJlL2V4 ZWN1dGUvcHI2NTIxNS0yLmMuamoJMjAxNS0wMi0yNiAxMDo0NjozMS41MjQ0MDE0MDMgKzAxMDAK LSsrKyBnY2MvdGVzdHN1aXRlL2djYy5jLXRvcnR1cmUvZXhlY3V0ZS9wcjY1MjE1LTIuYwkyMDE1 LTAyLTI2IDEwOjQ1OjE1LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwyNCBAQAotKy8qIFBS IHRyZWUtb3B0aW1pemF0aW9uLzY1MjE1ICovCi0rCi0rc3RhdGljIGlubGluZSB1bnNpZ25lZCBp bnQKLStmb28gKHVuc2lnbmVkIGludCB4KQotK3sKLSsgIHJldHVybiAoeCA+PiAyNCkgfCAoKHgg Pj4gOCkgJiAweGZmMDApIHwgKCh4IDw8IDgpICYgMHhmZjAwMDApIHwgKHggPDwgMjQpOwotK30K LSsKLStfX2F0dHJpYnV0ZV9fKChub2lubGluZSwgbm9jbG9uZSkpIHVuc2lnbmVkIGxvbmcgbG9u ZwotK2JhciAodW5zaWduZWQgbG9uZyBsb25nICp4KQotK3sKLSsgIHJldHVybiAoKHVuc2lnbmVk IGxvbmcgbG9uZykgZm9vICgqeCkgPDwgMzIpIHwgZm9vICgqeCA+PiAzMik7Ci0rfQotKwotK2lu dAotK21haW4gKCkKLSt7Ci0rICBpZiAoX19DSEFSX0JJVF9fICE9IDggfHwgc2l6ZW9mICh1bnNp Z25lZCBpbnQpICE9IDQgfHwgc2l6ZW9mICh1bnNpZ25lZCBsb25nIGxvbmcpICE9IDgpCi0rICAg IHJldHVybiAwOwotKyAgdW5zaWduZWQgbG9uZyBsb25nIGwgPSBmb28gKDB4ZmVlZGJlYThVKSB8 ICgodW5zaWduZWQgbG9uZyBsb25nKSBmb28gKDB4ZGVhZGJlZWZVKSA8PCAzMik7Ci0rICBpZiAo YmFyICgmbCkgIT0gMHhmZWVkYmVhOGRlYWRiZWVmVUxMKQotKyAgICBfX2J1aWx0aW5fYWJvcnQg KCk7Ci0rICByZXR1cm4gMDsKLSt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuYy10b3J0dXJlL2V4 ZWN1dGUvcHI2NTIxNS0zLmMuamoJMjAxNS0wMi0yNiAxMDo0NjozMy40NjMzNjkyODggKzAxMDAK LSsrKyBnY2MvdGVzdHN1aXRlL2djYy5jLXRvcnR1cmUvZXhlY3V0ZS9wcjY1MjE1LTMuYwkyMDE1 LTAyLTI2IDEwOjQ1OjM3LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwzMSBAQAotKy8qIFBS IHRyZWUtb3B0aW1pemF0aW9uLzY1MjE1ICovCi0rCi0rc3RydWN0IFMgeyB1bnNpZ25lZCBsb25n IGxvbmcgbDEgOiAyNCwgbDIgOiA4LCBsMyA6IDMyOyB9OwotKwotK3N0YXRpYyBpbmxpbmUgdW5z aWduZWQgaW50Ci0rZm9vICh1bnNpZ25lZCBpbnQgeCkKLSt7Ci0rICByZXR1cm4gKHggPj4gMjQp IHwgKCh4ID4+IDgpICYgMHhmZjAwKSB8ICgoeCA8PCA4KSAmIDB4ZmYwMDAwKSB8ICh4IDw8IDI0 KTsKLSt9Ci0rCi0rX19hdHRyaWJ1dGVfXygobm9pbmxpbmUsIG5vY2xvbmUpKSB1bnNpZ25lZCBs b25nIGxvbmcKLStiYXIgKHN0cnVjdCBTICp4KQotK3sKLSsgIHVuc2lnbmVkIGxvbmcgbG9uZyB4 MSA9IGZvbyAoKCh1bnNpZ25lZCBpbnQpIHgtPmwxIDw8IDgpIHwgeC0+bDIpOwotKyAgdW5zaWdu ZWQgbG9uZyBsb25nIHgyID0gZm9vICh4LT5sMyk7Ci0rICByZXR1cm4gKHgyIDw8IDMyKSB8IHgx OwotK30KLSsKLStpbnQKLSttYWluICgpCi0rewotKyAgaWYgKF9fQ0hBUl9CSVRfXyAhPSA4IHx8 IHNpemVvZiAodW5zaWduZWQgaW50KSAhPSA0IHx8IHNpemVvZiAodW5zaWduZWQgbG9uZyBsb25n KSAhPSA4KQotKyAgICByZXR1cm4gMDsKLSsgIHN0cnVjdCBTIHMgPSB7IDB4ZGVhZGJlVSwgMHhl ZlUsIDB4ZmVlZGJlYThVIH07Ci0rICB1bnNpZ25lZCBsb25nIGxvbmcgbCA9IGJhciAoJnMpOwot KyAgaWYgKGZvbyAobCA+PiAzMikgIT0gcy5sMwotKyAgICAgIHx8IChmb28gKGwpID4+IDgpICE9 IHMubDEKLSsgICAgICB8fCAoZm9vIChsKSAmIDB4ZmYpICE9IHMubDIpCi0rICAgIF9fYnVpbHRp bl9hYm9ydCAoKTsKLSsgIHJldHVybiAwOwotK30KLS0tLSBnY2MvdGVzdHN1aXRlL2djYy5jLXRv cnR1cmUvZXhlY3V0ZS9wcjY1MjE1LTQuYy5qagkyMDE1LTAyLTI2IDEwOjQ2OjM1LjQzODMzNjU3 NiArMDEwMAotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmMtdG9ydHVyZS9leGVjdXRlL3ByNjUyMTUt NC5jCTIwMTUtMDItMjYgMTA6NDU6NDYuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDI3IEBA Ci0rLyogUFIgdHJlZS1vcHRpbWl6YXRpb24vNjUyMTUgKi8KLSsKLStzdHJ1Y3QgUyB7IHVuc2ln bmVkIGxvbmcgbG9uZyBsMSA6IDQ4OyB9OwotKwotK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50 Ci0rZm9vICh1bnNpZ25lZCBpbnQgeCkKLSt7Ci0rICByZXR1cm4gKHggPj4gMjQpIHwgKCh4ID4+ IDgpICYgMHhmZjAwKSB8ICgoeCA8PCA4KSAmIDB4ZmYwMDAwKSB8ICh4IDw8IDI0KTsKLSt9Ci0r Ci0rX19hdHRyaWJ1dGVfXygobm9pbmxpbmUsIG5vY2xvbmUpKSB1bnNpZ25lZCBpbnQKLStiYXIg KHN0cnVjdCBTICp4KQotK3sKLSsgIHJldHVybiBmb28gKHgtPmwxKTsKLSt9Ci0rCi0raW50Ci0r bWFpbiAoKQotK3sKLSsgIGlmIChfX0NIQVJfQklUX18gIT0gOCB8fCBzaXplb2YgKHVuc2lnbmVk IGludCkgIT0gNCB8fCBzaXplb2YgKHVuc2lnbmVkIGxvbmcgbG9uZykgIT0gOCkKLSsgICAgcmV0 dXJuIDA7Ci0rICBzdHJ1Y3QgUyBzOwotKyAgcy5sMSA9IGZvbyAoMHhkZWFkYmVlZlUpIHwgKDB4 ZmVlZFVMTCA8PCAzMik7Ci0rICBpZiAoYmFyICgmcykgIT0gMHhkZWFkYmVlZlUpCi0rICAgIF9f YnVpbHRpbl9hYm9ydCAoKTsKLSsgIHJldHVybiAwOwotK30KLS0tLSBnY2MvdGVzdHN1aXRlL2dj Yy5jLXRvcnR1cmUvZXhlY3V0ZS9wcjY1MjE1LTUuYy5qagkyMDE1LTAyLTI2IDExOjE0OjQ0LjY2 NDI5ODcxOSArMDEwMAotKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmMtdG9ydHVyZS9leGVjdXRlL3By NjUyMTUtNS5jCTIwMTUtMDItMjYgMTE6MTI6MjcuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsx LDI3IEBACi0rLyogUFIgdHJlZS1vcHRpbWl6YXRpb24vNjUyMTUgKi8KLSsKLStfX2F0dHJpYnV0 ZV9fKChub2lubGluZSwgbm9jbG9uZSkpIHVuc2lnbmVkIGludAotK2ZvbyAodW5zaWduZWQgY2hh ciAqcCkKLSt7Ci0rICByZXR1cm4gKCh1bnNpZ25lZCBpbnQpIHBbMF0gPDwgMjQpIHwgKHBbMV0g PDwgMTYpIHwgKHBbMl0gPDwgOCkgfCBwWzNdOwotK30KLSsKLStfX2F0dHJpYnV0ZV9fKChub2lu bGluZSwgbm9jbG9uZSkpIHVuc2lnbmVkIGludAotK2JhciAodW5zaWduZWQgY2hhciAqcCkKLSt7 Ci0rICByZXR1cm4gKCh1bnNpZ25lZCBpbnQpIHBbM10gPDwgMjQpIHwgKHBbMl0gPDwgMTYpIHwg KHBbMV0gPDwgOCkgfCBwWzBdOwotK30KLSsKLStzdHJ1Y3QgUyB7IHVuc2lnbmVkIGludCBhOyB1 bnNpZ25lZCBjaGFyIGJbNV07IH07Ci0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsgIHN0cnVjdCBT IHMgPSB7IDEsIHsgMiwgMywgNCwgNSwgNiB9IH07Ci0rICBpZiAoX19DSEFSX0JJVF9fICE9IDgg fHwgc2l6ZW9mICh1bnNpZ25lZCBpbnQpICE9IDQpCi0rICAgIHJldHVybiAwOwotKyAgaWYgKGZv byAoJnMuYlsxXSkgIT0gMHgwMzA0MDUwNlUKLSsgICAgICB8fCBiYXIgKCZzLmJbMV0pICE9IDB4 MDYwNTA0MDNVKQotKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Ci0rICByZXR1cm4gMDsKLSt9Cgpk aWZmIC0tZ2l0IGEvZ2NjNS1wcjY1MjE2LnBhdGNoIGIvZ2NjNS1wcjY1MjE2LnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjM2ZWUzLi4wMDAwMDAwCi0tLSBhL2djYzUtcHI2 NTIxNi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLTIwMTUtMDItMjYgIEph a3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCi0JUFIgdHJlZS1vcHRpbWl6YXRpb24v NjUyMTYKLQkqIHRyZWUtc3NhLXJlYXNzb2MuYyAocmV3cml0ZV9leHByX3RyZWUpOiBGb3JjZSBj cmVhdGlvbiBvZgotCW5ldyBzdG10IGFuZCBuZXcgU1NBX05BTUUgZm9yIGxocyB3aGVuZXZlciB0 aGUgYXJndW1lbnRzIGhhdmUKLQljaGFuZ2VkIGFuZCB3ZXJlbid0IGp1c3Qgc3dhcHBlZC4gIEZp eCBjb21tZW50IHR5cG8uCi0KLQkqIGdjYy5jLXRvcnR1cmUvZXhlY3V0ZS9wcjY1MjE2LmM6IE5l dyB0ZXN0LgotCi0tLS0gZ2NjL3RyZWUtc3NhLXJlYXNzb2MuYy5qagkyMDE1LTAyLTE0IDA5OjIx OjU2LjAwMDAwMDAwMCArMDEwMAotKysrIGdjYy90cmVlLXNzYS1yZWFzc29jLmMJMjAxNS0wMi0y NiAxMzowMzoyNC4zMDg2MTQxNjkgKzAxMDAKLUBAIC0zNTMyLDcgKzM1MzIsNyBAQCByZXdyaXRl X2V4cHJfdHJlZSAoZ2ltcGxlIHN0bXQsIHVuc2lnbmVkCi0gCi0gICAvKiBUaGUgZmluYWwgcmVj dXJzaW9uIGNhc2UgZm9yIHRoaXMgZnVuY3Rpb24gaXMgdGhhdCB5b3UgaGF2ZQotICAgICAgZXhh Y3RseSB0d28gb3BlcmF0aW9ucyBsZWZ0LgotLSAgICAgSWYgd2UgaGFkIG9uZSBleGFjdGx5IG9u ZSBvcCBpbiB0aGUgZW50aXJlIGxpc3QgdG8gc3RhcnQgd2l0aCwgd2UKLSsgICAgIElmIHdlIGhh ZCBleGFjdGx5IG9uZSBvcCBpbiB0aGUgZW50aXJlIGxpc3QgdG8gc3RhcnQgd2l0aCwgd2UKLSAg ICAgIHdvdWxkIGhhdmUgbmV2ZXIgY2FsbGVkIHRoaXMgZnVuY3Rpb24sIGFuZCB0aGUgdGFpbCBy ZWN1cnNpb24KLSAgICAgIHJld3JpdGVzIHRoZW0gb25lIGF0IGEgdGltZS4gICovCi0gICBpZiAo b3BpbmRleCArIDIgPT0gb3BzLmxlbmd0aCAoKSkKLUBAIC0zNTUzLDcgKzM1NTMsMTEgQEAgcmV3 cml0ZV9leHByX3RyZWUgKGdpbXBsZSBzdG10LCB1bnNpZ25lZAotIAkgICAgICBwcmludF9naW1w bGVfc3RtdCAoZHVtcF9maWxlLCBzdG10LCAwLCAwKTsKLSAJICAgIH0KLSAKLS0JICBpZiAoY2hh bmdlZCkKLSsJICAvKiBFdmVuIHdoZW4gY2hhbmdlZCBpcyBmYWxzZSwgcmVhc3NvY2lhdGlvbiBj b3VsZCBoYXZlIGUuZy4gcmVtb3ZlZAotKwkgICAgIHNvbWUgcmVkdW5kYW50IG9wZXJhdGlvbnMs IHNvIHVubGVzcyB3ZSBhcmUganVzdCBzd2FwcGluZyB0aGUKLSsJICAgICBhcmd1bWVudHMgb3Ig dW5sZXNzIHRoZXJlIGlzIG5vIGNoYW5nZSBhdCBhbGwgKHRoZW4gd2UganVzdAotKwkgICAgIHJl dHVybiBsaHMpLCBmb3JjZSBjcmVhdGlvbiBvZiBhIG5ldyBTU0FfTkFNRS4gICovCi0rCSAgaWYg KGNoYW5nZWQgfHwgKChyaHMxICE9IG9lMi0+b3AgfHwgcmhzMiAhPSBvZTEtPm9wKSAmJiBvcGlu ZGV4KSkKLSAJICAgIHsKLSAJICAgICAgZ2ltcGxlIGluc2VydF9wb2ludCA9IGZpbmRfaW5zZXJ0 X3BvaW50IChzdG10LCBvZTEtPm9wLCBvZTItPm9wKTsKLSAJICAgICAgbGhzID0gbWFrZV9zc2Ff bmFtZSAoVFJFRV9UWVBFIChsaHMpKTsKLS0tLSBnY2MvdGVzdHN1aXRlL2djYy5jLXRvcnR1cmUv ZXhlY3V0ZS9wcjY1MjE2LmMuamoJMjAxNS0wMi0yNiAxMzowNToxMi4xOTk4MTY4MjYgKzAxMDAK LSsrKyBnY2MvdGVzdHN1aXRlL2djYy5jLXRvcnR1cmUvZXhlY3V0ZS9wcjY1MjE2LmMJMjAxNS0w Mi0yNiAxMzowNDo1My4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMjAgQEAKLSsvKiBQUiB0 cmVlLW9wdGltaXphdGlvbi82NTIxNiAqLwotKwotK2ludCBhLCBiID0gNjIsIGU7Ci0rdm9sYXRp bGUgaW50IGMsIGQ7Ci0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsgIGludCBmID0gMDsKLSsgIGZv ciAoYSA9IDA7IGEgPCAyOyBhKyspCi0rICAgIHsKLSsgICAgICBiICY9ICg4IF4gZikgJiAxOwot KyAgICAgIGZvciAoZSA9IDA7IGUgPCA2OyBlKyspCi0rCWlmIChjKQotKwkgIGYgPSBkOwotKyAg ICB9Ci0rICBpZiAoYiAhPSAwKQotKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Ci0rICByZXR1cm4g MDsKLSt9CgpkaWZmIC0tZ2l0IGEvZ2NjNS1wcjY1MjIwLnBhdGNoIGIvZ2NjNS1wcjY1MjIwLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDFhZmY4Li4wMDAwMDAwCi0tLSBh L2djYzUtcHI2NTIyMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLTIwMTUt MDItMjYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotCSAgICBBbGR5IEhlcm5h bmRleiAgPGFsZHloQHJlZGhhdC5jb20+Ci0KLQlQUiBydGwtb3B0aW1pemF0aW9uLzY1MjIwCi0J KiBjb25maWcvaTM4Ni9pMzg2Lm1kICgqdWRpdm1vZDxtb2RlPjRfcG93Mik6IE5ldy4KLQotLS0t IGdjYy9jb25maWcvaTM4Ni9pMzg2Lm1kCShyZXZpc2lvbiAyMjEwNjMpCi0rKysgZ2NjL2NvbmZp Zy9pMzg2L2kzODYubWQJKHJldmlzaW9uIDIyMTA2NCkKLUBAIC03MzMxLDYgKzczMzEsMzIgQEAg KGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKnVkaXZtb2Q8bW9kZT40IgotICAgWyhzZXRfYXR0ciAi dHlwZSIgIm11bHRpIikKLSAgICAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCi0gCi0rOzsg T3B0aW1pemUgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IGNvbnN0YW50IHBvd2VyIG9mIDIsIGlmIHRo ZSBjb25zdGFudAotKzs7IG1hdGVyaWFsaXplcyBvbmx5IGFmdGVyIGV4cGFuc2lvbi4KLSsoZGVm aW5lX2luc25fYW5kX3NwbGl0ICIqdWRpdm1vZDxtb2RlPjRfcG93MiIKLSsgIFsoc2V0IChtYXRj aF9vcGVyYW5kOlNXSTQ4IDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0rCSh1ZGl2OlNXSTQ4 IChtYXRjaF9vcGVyYW5kOlNXSTQ4IDIgInJlZ2lzdGVyX29wZXJhbmQiICIwIikKLSsJCSAgICAo bWF0Y2hfb3BlcmFuZDpTV0k0OCAzICJjb25zdF9pbnRfb3BlcmFuZCIgIm4iKSkpCi0rICAgKHNl dCAobWF0Y2hfb3BlcmFuZDpTV0k0OCAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQotKwkodW1v ZDpTV0k0OCAobWF0Y2hfZHVwIDIpIChtYXRjaF9kdXAgMykpKQotKyAgIChjbG9iYmVyIChyZWc6 Q0MgRkxBR1NfUkVHKSldCi0rICAiVUlOVFZBTCAob3BlcmFuZHNbM10pIC0gMiA8IDxNT0RFX1NJ WkU+ICogQklUU19QRVJfVU5JVAotKyAgICYmIChVSU5UVkFMIChvcGVyYW5kc1szXSkgJiAoVUlO VFZBTCAob3BlcmFuZHNbM10pIC0gMSkpID09IDAiCi0rICAiIyIKLSsgICImJiByZWxvYWRfY29t cGxldGVkIgotKyAgWyhzZXQgKG1hdGNoX2R1cCAxKSAobWF0Y2hfZHVwIDIpKQotKyAgIChwYXJh bGxlbCBbKHNldCAobWF0Y2hfZHVwIDApIChsc2hpZnRydDo8TU9ERT4gKG1hdGNoX2R1cCAyKSAo bWF0Y2hfZHVwIDQpKSkKLSsJICAgICAgKGNsb2JiZXIgKHJlZzpDQyBGTEFHU19SRUcpKV0pCi0r ICAgKHBhcmFsbGVsIFsoc2V0IChtYXRjaF9kdXAgMSkgKGFuZDo8TU9ERT4gKG1hdGNoX2R1cCAx KSAobWF0Y2hfZHVwIDUpKSkKLSsJICAgICAgKGNsb2JiZXIgKHJlZzpDQyBGTEFHU19SRUcpKV0p XQotK3sKLSsgIGludCB2ID0gZXhhY3RfbG9nMiAoVUlOVFZBTCAob3BlcmFuZHNbM10pKTsKLSsg IG9wZXJhbmRzWzRdID0gR0VOX0lOVCAodik7Ci0rICBvcGVyYW5kc1s1XSA9IEdFTl9JTlQgKChI T1NUX1dJREVfSU5UXzFVIDw8IHYpIC0gMSk7Ci0rfQotKyAgWyhzZXRfYXR0ciAidHlwZSIgIm11 bHRpIikKLSsgICAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCi0rCi0gKGRlZmluZV9pbnNu ICIqdWRpdm1vZDxtb2RlPjRfbm9leHQiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTV0lNMjQ4 IDAgInJlZ2lzdGVyX29wZXJhbmQiICI9YSIpCi0gCSh1ZGl2OlNXSU0yNDggKG1hdGNoX29wZXJh bmQ6U1dJTTI0OCAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiMCIpCi0tLS0gZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2kzODYvcHI2NTUyMC5jCShyZXZpc2lvbiAwKQotKysrIGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L3ByNjU1MjAuYwkocmV2aXNpb24gMjIxMDY0KQotQEAgLTAsMCArMSwy MCBAQAotKy8qIFBSIHRhcmdldC82NTUyMCAqLwotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0r LyogeyBkZy1vcHRpb25zICItTzIiIH0gKi8KLSsKLStpbnQgZm9vICh2b2lkICopOwotKwotK3Zv aWQKLStiYXIgKHZvaWQpCi0rewotKyAgdW5zaWduZWQgcyA9IDEyODsKLSsgIHdoaWxlICgxKQot KyAgICB7Ci0rICAgICAgdW5zaWduZWQgYltzXTsKLSsgICAgICBpZiAoZm9vIChiKSkKLSsJYnJl YWs7Ci0rICAgICAgcyAqPSAyOwotKyAgICB9Ci0rfQotKwotKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlci1ub3QgImRpdlxbXlxuXHJdKiUiIH0gfSAqLwoKZGlmZiAtLWdpdCBhL2djYzUt cHI2NTIyOC5wYXRjaCBiL2djYzUtcHI2NTIyOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggZTFlZmM5NS4uMDAwMDAwMAotLS0gYS9nY2M1LXByNjUyMjgucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0yMDE1LTAyLTI3ICBNYXJlayBQb2xhY2VrICA8cG9s YWNla0ByZWRoYXQuY29tPgotCi0JUFIgYy82NTIyOAotYy8KLQkqIGMtZGVjbC5jIChzdGFydF9k ZWNsKTogUmV0dXJuIE5VTExfVFJFRSBpZiBkZWNsIGlzIGFuIGVycm9yIG5vZGUuCi10ZXN0c3Vp dGUvCi0JKiBnY2MuZGcvcHI2NTIyOC5jOiBOZXcgdGVzdC4KLQotLS0tIGdjYy9jL2MtZGVjbC5j CShyZXZpc2lvbiAyMjEwNTUpCi0rKysgZ2NjL2MvYy1kZWNsLmMJKHJldmlzaW9uIDIyMTA1NikK LUBAIC00NDYwLDggKzQ0NjAsOCBAQCBzdGFydF9kZWNsIChzdHJ1Y3QgY19kZWNsYXJhdG9yICpk ZWNsYXJhCi0gICBkZWNsID0gZ3Jva2RlY2xhcmF0b3IgKGRlY2xhcmF0b3IsIGRlY2xzcGVjcywK LSAJCQkgTk9STUFMLCBpbml0aWFsaXplZCwgTlVMTCwgJmF0dHJpYnV0ZXMsICZleHByLCBOVUxM LAotIAkJCSBkZXByZWNhdGVkX3N0YXRlKTsKLS0gIGlmICghZGVjbCkKLS0gICAgcmV0dXJuIDA7 Ci0rICBpZiAoIWRlY2wgfHwgZGVjbCA9PSBlcnJvcl9tYXJrX25vZGUpCi0rICAgIHJldHVybiBO VUxMX1RSRUU7Ci0gCi0gICBpZiAoZXhwcikKLSAgICAgYWRkX3N0bXQgKGZvbGRfY29udmVydCAo dm9pZF90eXBlX25vZGUsIGV4cHIpKTsKLS0tLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY1MjI4 LmMJKHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2NTIyOC5jCShyZXZp c2lvbiAyMjEwNTYpCi1AQCAtMCwwICsxLDExIEBACi0rLyogUFIgYy82NTIyOCAqLwotKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICIiIH0gKi8KLSsKLStfX2F1dG9f dHlwZSBhID0gYjsgLyogeyBkZy1lcnJvciAidW5kZWNsYXJlZCIgfSAqLwotKwotK3ZvaWQKLStm ICh2b2lkKQotK3sKLSsgIF9fYXV0b190eXBlIGMgPSBkOyAvKiB7IGRnLWVycm9yICJ1bmRlY2xh cmVkIiB9ICovCi0rfQoKZGlmZiAtLWdpdCBhL2djYzUtcHI2NTM2OS5wYXRjaCBiL2djYzUtcHI2 NTM2OS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzU1ZDg4Ci0t LSAvZGV2L251bGwKKysrIGIvZ2NjNS1wcjY1MzY5LnBhdGNoCkBAIC0wLDAgKzEsODEgQEAKKzIw MTUtMDMtMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJUFIgdHJlZS1v cHRpbWl6YXRpb24vNjUzNjkKKwkqIHRyZWUtdmVjdC1zdG10cy5jICh2ZWN0b3JpemFibGVfbG9h ZCkgPGNhc2UgZHJfZXhwbGljaXRfcmVhbGlnbj46CisJU2V0IGJ1bXAgdG8gdnMgKiBUWVBFX1NJ WkVfVU5JVCAoZWxlbV90eXBlKSAtIDEgaW5zdGVhZCBvZgorCSh2cyAtIDEpICogVFlQRV9TSVpF X1VOSVQgKGVsZW1fdHlwZSkuCisKKwkqIGdjYy5jLXRvcnR1cmUvZXhlY3V0ZS9wcjY1MzY5LmM6 IE5ldyB0ZXN0LgorCistLS0gZ2NjL3RyZWUtdmVjdC1zdG10cy5jLmpqCTIwMTUtMDMtMDkgMDg6 MDU6MTMuMDAwMDAwMDAwICswMTAwCisrKysgZ2NjL3RyZWUtdmVjdC1zdG10cy5jCTIwMTUtMDMt MTMgMTc6Mjc6MzAuNjEzNTI5NzY4ICswMTAwCitAQCAtNjQ2OCw5ICs2NDY4LDggQEAgdmVjdG9y aXphYmxlX2xvYWQgKGdpbXBsZSBzdG10LCBnaW1wbGVfcworIAkJY2FzZSBkcl9leHBsaWNpdF9y ZWFsaWduOgorIAkJICB7CisgCQkgICAgdHJlZSBwdHIsIGJ1bXA7CistCQkgICAgdHJlZSB2c19t aW51c18xOworIAorLQkJICAgIHZzX21pbnVzXzEgPSBzaXplX2ludCAoVFlQRV9WRUNUT1JfU1VC UEFSVFMgKHZlY3R5cGUpIC0gMSk7CisrCQkgICAgdHJlZSB2cyA9IHNpemVfaW50IChUWVBFX1ZF Q1RPUl9TVUJQQVJUUyAodmVjdHlwZSkpOworIAorIAkJICAgIGlmIChjb21wdXRlX2luX2xvb3Ap CisgCQkgICAgICBtc3EgPSB2ZWN0X3NldHVwX3JlYWxpZ25tZW50IChmaXJzdF9zdG10LCBnc2ks CitAQCAtNjQ5OSw4ICs2NDk4LDkgQEAgdmVjdG9yaXphYmxlX2xvYWQgKGdpbXBsZSBzdG10LCBn aW1wbGVfcworIAkJICAgIHZlY3RfZmluaXNoX3N0bXRfZ2VuZXJhdGlvbiAoc3RtdCwgbmV3X3N0 bXQsIGdzaSk7CisgCQkgICAgbXNxID0gbmV3X3RlbXA7CisgCistCQkgICAgYnVtcCA9IHNpemVf Ymlub3AgKE1VTFRfRVhQUiwgdnNfbWludXNfMSwKKysJCSAgICBidW1wID0gc2l6ZV9iaW5vcCAo TVVMVF9FWFBSLCB2cywKKyAJCQkJICAgICAgIFRZUEVfU0laRV9VTklUIChlbGVtX3R5cGUpKTsK KysJCSAgICBidW1wID0gc2l6ZV9iaW5vcCAoTUlOVVNfRVhQUiwgYnVtcCwgc2l6ZV9vbmVfbm9k ZSk7CisgCQkgICAgcHRyID0gYnVtcF92ZWN0b3JfcHRyIChkYXRhcmVmX3B0ciwgTlVMTCwgZ3Np LCBzdG10LCBidW1wKTsKKyAJCSAgICBuZXdfc3RtdCA9IGdpbXBsZV9idWlsZF9hc3NpZ24KKyAJ CQkJIChOVUxMX1RSRUUsIEJJVF9BTkRfRVhQUiwgcHRyLAorLS0tIGdjYy90ZXN0c3VpdGUvZ2Nj LmMtdG9ydHVyZS9leGVjdXRlL3ByNjUzNjkuYy5qagkyMDE1LTAzLTEzIDE3OjM3OjEwLjkyNjE3 NTY4NSArMDEwMAorKysrIGdjYy90ZXN0c3VpdGUvZ2NjLmMtdG9ydHVyZS9leGVjdXRlL3ByNjUz NjkuYwkyMDE1LTAzLTEzIDE3OjM1OjQwLjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSw0NSBA QAorKy8qIFBSIHRyZWUtb3B0aW1pemF0aW9uLzY1MzY5ICovCisrCisrc3RhdGljIGNvbnN0IGNo YXIgZGF0YVtdID0KKysgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkw MTIzNDU2Nzg5MCIKKysgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAiOworKworK19f YXR0cmlidXRlX18gKChub2lubGluZSkpCisrc3RhdGljIHZvaWQgZm9vIChjb25zdCB1bnNpZ25l ZCBpbnQgKmJ1ZikKKyt7CisrICBpZiAoX19idWlsdGluX21lbWNtcCAoYnVmLCBkYXRhLCA2NCkp CisrICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKyt9CisrCisrX19hdHRyaWJ1dGVfXyAoKG5vaW5s aW5lKSkKKytzdGF0aWMgdm9pZCBiYXIgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJsb2NrKQorK3sK KysgIHVuc2lnbmVkIGludCBidWZbMTZdOworKyAgX19idWlsdGluX21lbWNweSAoYnVmICsgIDAs IGJsb2NrICsgIDAsIDQpOworKyAgX19idWlsdGluX21lbWNweSAoYnVmICsgIDEsIGJsb2NrICsg IDQsIDQpOworKyAgX19idWlsdGluX21lbWNweSAoYnVmICsgIDIsIGJsb2NrICsgIDgsIDQpOwor KyAgX19idWlsdGluX21lbWNweSAoYnVmICsgIDMsIGJsb2NrICsgMTIsIDQpOworKyAgX19idWls dGluX21lbWNweSAoYnVmICsgIDQsIGJsb2NrICsgMTYsIDQpOworKyAgX19idWlsdGluX21lbWNw eSAoYnVmICsgIDUsIGJsb2NrICsgMjAsIDQpOworKyAgX19idWlsdGluX21lbWNweSAoYnVmICsg IDYsIGJsb2NrICsgMjQsIDQpOworKyAgX19idWlsdGluX21lbWNweSAoYnVmICsgIDcsIGJsb2Nr ICsgMjgsIDQpOworKyAgX19idWlsdGluX21lbWNweSAoYnVmICsgIDgsIGJsb2NrICsgMzIsIDQp OworKyAgX19idWlsdGluX21lbWNweSAoYnVmICsgIDksIGJsb2NrICsgMzYsIDQpOworKyAgX19i dWlsdGluX21lbWNweSAoYnVmICsgMTAsIGJsb2NrICsgNDAsIDQpOworKyAgX19idWlsdGluX21l bWNweSAoYnVmICsgMTEsIGJsb2NrICsgNDQsIDQpOworKyAgX19idWlsdGluX21lbWNweSAoYnVm ICsgMTIsIGJsb2NrICsgNDgsIDQpOworKyAgX19idWlsdGluX21lbWNweSAoYnVmICsgMTMsIGJs b2NrICsgNTIsIDQpOworKyAgX19idWlsdGluX21lbWNweSAoYnVmICsgMTQsIGJsb2NrICsgNTYs IDQpOworKyAgX19idWlsdGluX21lbWNweSAoYnVmICsgMTUsIGJsb2NrICsgNjAsIDQpOworKyAg Zm9vIChidWYpOworK30KKysKKytpbnQKKyttYWluICgpCisreworKyAgdW5zaWduZWQgY2hhciBp bnB1dFtzaXplb2YgZGF0YSArIDE2XSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkICgxNikpKTsKKysg IF9fYnVpbHRpbl9tZW1zZXQgKGlucHV0LCAwLCBzaXplb2YgaW5wdXQpOworKyAgX19idWlsdGlu X21lbWNweSAoaW5wdXQgKyAxLCBkYXRhLCBzaXplb2YgZGF0YSk7CisrICBiYXIgKGlucHV0ICsg MSk7CisrICByZXR1cm4gMDsKKyt9CgpkaWZmIC0tZ2l0IGEvZ2NjNS1wcjY1NDAxLnBhdGNoIGIv Z2NjNS1wcjY1NDAxLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0 ZjMxYmMKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M1LXByNjU0MDEucGF0Y2gKQEAgLTAsMCArMSwx NTEgQEAKKzIwMTUtMDMtMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJ UFIgcnRsLW9wdGltaXphdGlvbi82NTQwMQorCSogY29tYmluZS5jIChydHhfZXF1YWxfZm9yX2Zp ZWxkX2Fzc2lnbm1lbnRfcCk6IEFkZCB3aWRlbl94CisJYXJndW1lbnQuICBJZiB0cnVlLCBhZGp1 c3RfYWRkcmVzc19udiBvZiB4IHdpdGggYmlnLWVuZGlhbgorCWNvcnJlY3Rpb24gZm9yIHRoZSBt b2RlIHdpZGVuaW5nIHRvIEdFVF9NT0RFICh5KS4KKwkobWFrZV9maWVsZF9hc3NpZ25tZW50KTog RG9uJ3QgZG8gTUVNIG1vZGUgd2lkZW5pbmcgaGVyZS4KKwlVc2UgTUVNX1AgaW5zdGVhZCBvZiBH RVRfQ09ERSA9PSBNRU0uCisKKwkqIGdjYy5jLXRvcnR1cmUvZXhlY3V0ZS9wcjY1NDAxLmM6IE5l dyB0ZXN0LgorCistLS0gZ2NjL2NvbWJpbmUuYy5qagkyMDE1LTAyLTAzIDEwOjM4OjQ2LjAwMDAw MDAwMCArMDEwMAorKysrIGdjYy9jb21iaW5lLmMJMjAxNS0wMy0xMyAxODo0Njo0NS43MTA5NDAz MDYgKzAxMDAKK0BAIC00NzUsNyArNDc1LDcgQEAgc3RhdGljIHJ0eCBmb3JjZV90b19tb2RlIChy dHgsIG1hY2hpbmVfbQorIAkJCSAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCwgaW50KTsKKyBzdGF0 aWMgcnR4IGlmX3RoZW5fZWxzZV9jb25kIChydHgsIHJ0eCAqLCBydHggKik7Cisgc3RhdGljIHJ0 eCBrbm93bl9jb25kIChydHgsIGVudW0gcnR4X2NvZGUsIHJ0eCwgcnR4KTsKKy1zdGF0aWMgaW50 IHJ0eF9lcXVhbF9mb3JfZmllbGRfYXNzaWdubWVudF9wIChydHgsIHJ0eCk7Cisrc3RhdGljIGlu dCBydHhfZXF1YWxfZm9yX2ZpZWxkX2Fzc2lnbm1lbnRfcCAocnR4LCBydHgsIGJvb2wgPSBmYWxz ZSk7Cisgc3RhdGljIHJ0eCBtYWtlX2ZpZWxkX2Fzc2lnbm1lbnQgKHJ0eCk7Cisgc3RhdGljIHJ0 eCBhcHBseV9kaXN0cmlidXRpdmVfbGF3IChydHgpOworIHN0YXRpYyBydHggZGlzdHJpYnV0ZV9h bmRfc2ltcGxpZnlfcnR4IChydHgsIGludCk7CitAQCAtOTE4NCw4ICs5MTg0LDIzIEBAIGtub3du X2NvbmQgKHJ0eCB4LCBlbnVtIHJ0eF9jb2RlIGNvbmQsIHIKKyAgICBhc3NpZ25tZW50IGFzIGEg ZmllbGQgYXNzaWdubWVudC4gICovCisgCisgc3RhdGljIGludAorLXJ0eF9lcXVhbF9mb3JfZmll bGRfYXNzaWdubWVudF9wIChydHggeCwgcnR4IHkpCisrcnR4X2VxdWFsX2Zvcl9maWVsZF9hc3Np Z25tZW50X3AgKHJ0eCB4LCBydHggeSwgYm9vbCB3aWRlbl94KQorIHsKKysgIGlmICh3aWRlbl94 ICYmIEdFVF9NT0RFICh4KSAhPSBHRVRfTU9ERSAoeSkpCisrICAgIHsKKysgICAgICBpZiAoR0VU X01PREVfU0laRSAoR0VUX01PREUgKHgpKSA+IEdFVF9NT0RFX1NJWkUgKEdFVF9NT0RFICh5KSkp CisrCXJldHVybiAwOworKyAgICAgIGlmIChCWVRFU19CSUdfRU5ESUFOICE9IFdPUkRTX0JJR19F TkRJQU4pCisrCXJldHVybiAwOworKyAgICAgIC8qIEZvciBiaWcgZW5kaWFuLCBhZGp1c3QgdGhl IG1lbW9yeSBvZmZzZXQuICAqLworKyAgICAgIGlmIChCWVRFU19CSUdfRU5ESUFOKQorKwl4ID0g YWRqdXN0X2FkZHJlc3NfbnYgKHgsIEdFVF9NT0RFICh5KSwKKysJCQkgICAgICAgLXN1YnJlZ19s b3dwYXJ0X29mZnNldCAoR0VUX01PREUgKHgpLAorKwkJCQkJCSAgICAgICBHRVRfTU9ERSAoeSkp KTsKKysgICAgICBlbHNlCisrCXggPSBhZGp1c3RfYWRkcmVzc19udiAoeCwgR0VUX01PREUgKHkp LCAwKTsKKysgICAgfQorKworICAgaWYgKHggPT0geSB8fCBydHhfZXF1YWxfcCAoeCwgeSkpCisg ICAgIHJldHVybiAxOworIAorQEAgLTkzMzksMTYgKzkzNTQsMTUgQEAgbWFrZV9maWVsZF9hc3Np Z25tZW50IChydHggeCkKKyAgIC8qIFRoZSBzZWNvbmQgU1VCUkVHIHRoYXQgbWlnaHQgZ2V0IGlu IHRoZSB3YXkgaXMgYSBwYXJhZG94aWNhbAorICAgICAgU1VCUkVHIGFyb3VuZCB0aGUgZmlyc3Qg b3BlcmFuZCBvZiB0aGUgQU5ELiAgV2Ugd2FudCB0byAKKyAgICAgIHByZXRlbmQgdGhlIG9wZXJh bmQgaXMgYXMgd2lkZSBhcyB0aGUgZGVzdGluYXRpb24gaGVyZS4gICBXZQorLSAgICAgZG8gdGhp cyBieSBjcmVhdGluZyBhIG5ldyBNRU0gaW4gdGhlIHdpZGVyIG1vZGUgZm9yIHRoZSBzb2xlCisr ICAgICBkbyB0aGlzIGJ5IGFkanVzdGluZyB0aGUgTUVNIHRvIHdpZGVyIG1vZGUgZm9yIHRoZSBz b2xlCisgICAgICBwdXJwb3NlIG9mIHRoZSBjYWxsIHRvIHJ0eF9lcXVhbF9mb3JfZmllbGRfYXNz aWdubWVudF9wLiAgIEFsc28KKyAgICAgIG5vdGUgdGhpcyB0cmljayBvbmx5IHdvcmtzIGZvciBN RU1zLiAgKi8KKyAgIGVsc2UgaWYgKEdFVF9DT0RFIChyaHMpID09IEFORAorIAkgICAmJiBwYXJh ZG94aWNhbF9zdWJyZWdfcCAoWEVYUCAocmhzLCAwKSkKKy0JICAgJiYgR0VUX0NPREUgKFNVQlJF R19SRUcgKFhFWFAgKHJocywgMCkpKSA9PSBNRU0KKysJICAgJiYgTUVNX1AgKFNVQlJFR19SRUcg KFhFWFAgKHJocywgMCkpKQorIAkgICAmJiBDT05TVF9JTlRfUCAoWEVYUCAocmhzLCAxKSkKKy0J ICAgJiYgcnR4X2VxdWFsX2Zvcl9maWVsZF9hc3NpZ25tZW50X3AgKGdlbl9ydHhfTUVNIChHRVRf TU9ERSAoZGVzdCksCistCQkJCQkJCSAgICAgWEVYUCAoU1VCUkVHX1JFRyAoWEVYUCAocmhzLCAw KSksIDApKSwKKy0JCQkJCQlkZXN0KSkKKysJICAgJiYgcnR4X2VxdWFsX2Zvcl9maWVsZF9hc3Np Z25tZW50X3AgKFNVQlJFR19SRUcgKFhFWFAgKHJocywgMCkpLAorKwkJCQkJCWRlc3QsIHRydWUp KQorICAgICBjMSA9IElOVFZBTCAoWEVYUCAocmhzLCAxKSksIG90aGVyID0gbGhzOworICAgZWxz ZSBpZiAoR0VUX0NPREUgKGxocykgPT0gQU5ECisgCSAgICYmIENPTlNUX0lOVF9QIChYRVhQIChs aHMsIDEpKQorQEAgLTkzNTcsMTYgKzkzNzEsMTUgQEAgbWFrZV9maWVsZF9hc3NpZ25tZW50IChy dHggeCkKKyAgIC8qIFRoZSBzZWNvbmQgU1VCUkVHIHRoYXQgbWlnaHQgZ2V0IGluIHRoZSB3YXkg aXMgYSBwYXJhZG94aWNhbAorICAgICAgU1VCUkVHIGFyb3VuZCB0aGUgZmlyc3Qgb3BlcmFuZCBv ZiB0aGUgQU5ELiAgV2Ugd2FudCB0byAKKyAgICAgIHByZXRlbmQgdGhlIG9wZXJhbmQgaXMgYXMg d2lkZSBhcyB0aGUgZGVzdGluYXRpb24gaGVyZS4gICBXZQorLSAgICAgZG8gdGhpcyBieSBjcmVh dGluZyBhIG5ldyBNRU0gaW4gdGhlIHdpZGVyIG1vZGUgZm9yIHRoZSBzb2xlCisrICAgICBkbyB0 aGlzIGJ5IGFkanVzdGluZyB0aGUgTUVNIHRvIHdpZGVyIG1vZGUgZm9yIHRoZSBzb2xlCisgICAg ICBwdXJwb3NlIG9mIHRoZSBjYWxsIHRvIHJ0eF9lcXVhbF9mb3JfZmllbGRfYXNzaWdubWVudF9w LiAgIEFsc28KKyAgICAgIG5vdGUgdGhpcyB0cmljayBvbmx5IHdvcmtzIGZvciBNRU1zLiAgKi8K KyAgIGVsc2UgaWYgKEdFVF9DT0RFIChsaHMpID09IEFORAorIAkgICAmJiBwYXJhZG94aWNhbF9z dWJyZWdfcCAoWEVYUCAobGhzLCAwKSkKKy0JICAgJiYgR0VUX0NPREUgKFNVQlJFR19SRUcgKFhF WFAgKGxocywgMCkpKSA9PSBNRU0KKysJICAgJiYgTUVNX1AgKFNVQlJFR19SRUcgKFhFWFAgKGxo cywgMCkpKQorIAkgICAmJiBDT05TVF9JTlRfUCAoWEVYUCAobGhzLCAxKSkKKy0JICAgJiYgcnR4 X2VxdWFsX2Zvcl9maWVsZF9hc3NpZ25tZW50X3AgKGdlbl9ydHhfTUVNIChHRVRfTU9ERSAoZGVz dCksCistCQkJCQkJCSAgICAgWEVYUCAoU1VCUkVHX1JFRyAoWEVYUCAobGhzLCAwKSksIDApKSwK Ky0JCQkJCQlkZXN0KSkKKysJICAgJiYgcnR4X2VxdWFsX2Zvcl9maWVsZF9hc3NpZ25tZW50X3Ag KFNVQlJFR19SRUcgKFhFWFAgKGxocywgMCkpLAorKwkJCQkJCWRlc3QsIHRydWUpKQorICAgICBj MSA9IElOVFZBTCAoWEVYUCAobGhzLCAxKSksIG90aGVyID0gcmhzOworICAgZWxzZQorICAgICBy ZXR1cm4geDsKKy0tLSBnY2MvdGVzdHN1aXRlL2djYy5jLXRvcnR1cmUvZXhlY3V0ZS9wcjY1NDAx LmMuamoJMjAxNS0wMy0xMyAxODozNjozMC42Mzk4MTczOTMgKzAxMDAKKysrKyBnY2MvdGVzdHN1 aXRlL2djYy5jLXRvcnR1cmUvZXhlY3V0ZS9wcjY1NDAxLmMJMjAxNS0wMy0xMyAxODo0MjowMi42 OTM0ODUxMjcgKzAxMDAKK0BAIC0wLDAgKzEsNTkgQEAKKysvKiBQUiBydGwtb3B0aW1pemF0aW9u LzY1NDAxICovCisrCisrc3RydWN0IFMgeyB1bnNpZ25lZCBzaG9ydCBzWzY0XTsgfTsKKysKKytf X2F0dHJpYnV0ZV9fKChub2lubGluZSwgbm9jbG9uZSkpIHZvaWQKKytmb28gKHN0cnVjdCBTICp4 KQorK3sKKysgIHVuc2lnbmVkIGludCBpOworKyAgdW5zaWduZWQgY2hhciAqczsKKysKKysgIHMg PSAodW5zaWduZWQgY2hhciAqKSB4LT5zOworKyAgZm9yIChpID0gMDsgaSA8IDY0OyBpKyspCisr ICAgIHgtPnNbaV0gPSBzW2kgKiAyXSB8IChzW2kgKiAyICsgMV0gPDwgOCk7CisrfSAgCisrCisr X19hdHRyaWJ1dGVfXygobm9pbmxpbmUsIG5vY2xvbmUpKSB2b2lkCisrYmFyIChzdHJ1Y3QgUyAq eCkKKyt7CisrICB1bnNpZ25lZCBpbnQgaTsKKysgIHVuc2lnbmVkIGNoYXIgKnM7CisrCisrICBz ID0gKHVuc2lnbmVkIGNoYXIgKikgeC0+czsKKysgIGZvciAoaSA9IDA7IGkgPCA2NDsgaSsrKQor KyAgICB4LT5zW2ldID0gKHNbaSAqIDJdIDw8IDgpIHwgc1tpICogMiArIDFdOworK30gIAorKwor K2ludAorK21haW4gKCkKKyt7CisrICB1bnNpZ25lZCBpbnQgaTsKKysgIHN0cnVjdCBTIHM7Cisr ICBpZiAoc2l6ZW9mICh1bnNpZ25lZCBzaG9ydCkgIT0gMikKKysgICAgcmV0dXJuIDA7CisrICBm b3IgKGkgPSAwOyBpIDwgNjQ7IGkrKykKKysgICAgcy5zW2ldID0gaSArICgoNjQgLSBpKSA8PCA4 KTsKKysgIGZvbyAoJnMpOworKyNpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0JJR19FTkRJ QU5fXworKyAgZm9yIChpID0gMDsgaSA8IDY0OyBpKyspCisrICAgIGlmIChzLnNbaV0gIT0gKDY0 IC0gaSkgKyAoaSA8PCA4KSkKKysgICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7CisrI2VsaWYgX19C WVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18KKysgIGZvciAoaSA9IDA7IGkg PCA2NDsgaSsrKQorKyAgICBpZiAocy5zW2ldICE9IGkgKyAoKDY0IC0gaSkgPDwgOCkpCisrICAg ICAgX19idWlsdGluX2Fib3J0ICgpOworKyNlbmRpZgorKyAgZm9yIChpID0gMDsgaSA8IDY0OyBp KyspCisrICAgIHMuc1tpXSA9IGkgKyAoKDY0IC0gaSkgPDwgOCk7CisrICBiYXIgKCZzKTsKKysj aWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18KKysgIGZvciAoaSA9 IDA7IGkgPCA2NDsgaSsrKQorKyAgICBpZiAocy5zW2ldICE9ICg2NCAtIGkpICsgKGkgPDwgOCkp CisrICAgICAgX19idWlsdGluX2Fib3J0ICgpOworKyNlbGlmIF9fQllURV9PUkRFUl9fID09IF9f T1JERVJfQklHX0VORElBTl9fCisrICBmb3IgKGkgPSAwOyBpIDwgNjQ7IGkrKykKKysgICAgaWYg KHMuc1tpXSAhPSBpICsgKCg2NCAtIGkpIDw8IDgpKQorKyAgICAgIF9fYnVpbHRpbl9hYm9ydCAo KTsKKysjZW5kaWYKKysgIHJldHVybiAwOworK30KCmRpZmYgLS1naXQgYS9nY2M1LXByNjU0MTgu cGF0Y2ggYi9nY2M1LXByNjU0MTgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMTBiOTM1MQotLS0gL2Rldi9udWxsCisrKyBiL2djYzUtcHI2NTQxOC5wYXRjaApAQCAt MCwwICsxLDg5IEBACisyMDE1LTAzLTEzICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNv bT4KKworCVBSIHRyZWUtb3B0aW1pemF0aW9uLzY1NDE4CisJKiB0cmVlLXNzYS1yZWFzc29jLmMg KGV4dHJhY3RfYml0X3Rlc3RfbWFzayk6IElmIHRoZXJlCisJYXJlIGNhc3RzIGluIHRoZSBmaXJz dCBQTFVTX0VYUFIgb3BlcmFuZCwgZW5zdXJlIHRiaWFzIGFuZAorCSp0b3RhbGxvd3AgYXJlIGlu IHRoZSBpbm5lciB0eXBlLgorCisJKiBnY2MuYy10b3J0dXJlL2V4ZWN1dGUvcHI2NTQxOC0xLmM6 IE5ldyB0ZXN0LgorCSogZ2NjLmMtdG9ydHVyZS9leGVjdXRlL3ByNjU0MTgtMi5jOiBOZXcgdGVz dC4KKworLS0tIGdjYy90cmVlLXNzYS1yZWFzc29jLmMuamoJMjAxNS0wMi0yNiAyMjowMjozOS4w MDAwMDAwMDAgKzAxMDAKKysrKyBnY2MvdHJlZS1zc2EtcmVhc3NvYy5jCTIwMTUtMDMtMTMgMTY6 MjI6NTAuNTA2Mjk1MjUyICswMTAwCitAQCAtMjQzOSwyNiArMjQzOSwyNSBAQCBleHRyYWN0X2Jp dF90ZXN0X21hc2sgKHRyZWUgZXhwLCBpbnQgcHJlCisgCSAgICAgICYmIFRSRUVfQ09ERSAoZXhw KSA9PSBQTFVTX0VYUFIKKyAJICAgICAgJiYgVFJFRV9DT0RFIChUUkVFX09QRVJBTkQgKGV4cCwg MSkpID09IElOVEVHRVJfQ1NUKQorIAkgICAgeworKwkgICAgICB0cmVlIHJldCA9IFRSRUVfT1BF UkFORCAoZXhwLCAwKTsKKysJICAgICAgU1RSSVBfTk9QUyAocmV0KTsKKyAJICAgICAgd2lkZXN0 X2ludCBiaWFzCisgCSAgICAgICAgPSB3aTo6bmVnICh3aTo6c2V4dCAod2k6OnRvX3dpZGVzdCAo VFJFRV9PUEVSQU5EIChleHAsIDEpKSwKKyAJCQkJICAgICBUWVBFX1BSRUNJU0lPTiAoVFJFRV9U WVBFIChsb3cpKSkpOworLQkgICAgICB0cmVlIHRiaWFzID0gd2lkZV9pbnRfdG9fdHJlZSAoVFJF RV9UWVBFIChsb3cpLCBiaWFzKTsKKysJICAgICAgdHJlZSB0YmlhcyA9IHdpZGVfaW50X3RvX3Ry ZWUgKFRSRUVfVFlQRSAocmV0KSwgYmlhcyk7CisgCSAgICAgIGlmICh0b3RhbGxvd3ApCisgCQl7 CisgCQkgICp0b3RhbGxvd3AgPSB0YmlhczsKKy0JCSAgZXhwID0gVFJFRV9PUEVSQU5EIChleHAs IDApOworLQkJICBTVFJJUF9OT1BTIChleHApOworLQkJICByZXR1cm4gZXhwOworKwkJICByZXR1 cm4gcmV0OworIAkJfQorIAkgICAgICBlbHNlIGlmICghdHJlZV9pbnRfY3N0X2x0ICh0b3RhbGxv dywgdGJpYXMpKQorIAkJcmV0dXJuIE5VTExfVFJFRTsKKysJICAgICAgYmlhcyA9IHdpOjp0b193 aWRlc3QgKHRiaWFzKTsKKyAJICAgICAgYmlhcyAtPSB3aTo6dG9fd2lkZXN0ICh0b3RhbGxvdyk7 CisgCSAgICAgIGlmICh3aTo6Z2VzX3AgKGJpYXMsIDApICYmIHdpOjpsdHNfcCAoYmlhcywgcHJl YyAtIG1heCkpCisgCQl7CisgCQkgICptYXNrID0gd2k6OmxzaGlmdCAoKm1hc2ssIGJpYXMpOwor LQkJICBleHAgPSBUUkVFX09QRVJBTkQgKGV4cCwgMCk7CistCQkgIFNUUklQX05PUFMgKGV4cCk7 CistCQkgIHJldHVybiBleHA7CisrCQkgIHJldHVybiByZXQ7CisgCQl9CisgCSAgICB9CisgCX0K Ky0tLSBnY2MvdGVzdHN1aXRlL2djYy5jLXRvcnR1cmUvZXhlY3V0ZS9wcjY1NDE4LTEuYy5qagky MDE1LTAzLTEzIDE2OjQ5OjA3Ljk3MzYwNDY0OSArMDEwMAorKysrIGdjYy90ZXN0c3VpdGUvZ2Nj LmMtdG9ydHVyZS9leGVjdXRlL3ByNjU0MTgtMS5jCTIwMTUtMDMtMTMgMTY6NDg6MjguMDAwMDAw MDAwICswMTAwCitAQCAtMCwwICsxLDE5IEBACisrLyogUFIgdHJlZS1vcHRpbWl6YXRpb24vNjU0 MTggKi8KKysKKytfX2F0dHJpYnV0ZV9fKChub2lubGluZSwgbm9jbG9uZSkpIGludAorK2ZvbyAo aW50IHgpCisreworKyAgaWYgKHggPT0gLTIxNiB8fCB4ID09IC0xMzIgfHwgeCA9PSAtMjE4IHx8 IHggPT0gLTE0NikKKysgICAgIHJldHVybiAxOworKyAgcmV0dXJuIDA7CisrfQorKworK2ludAor K21haW4gKCkKKyt7CisrICB2b2xhdGlsZSBpbnQgaTsKKysgIGZvciAoaSA9IC0yMzA7IGkgPCAt MTIwOyBpKyspCisrICAgIGlmIChmb28gKGkpICE9IChpID09IC0yMTYgfHwgaSA9PSAtMTMyIHx8 IGkgPT0gLTIxOCB8fCBpID09IC0xNDYpKQorKyAgICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKKysg IHJldHVybiAwOworK30KKy0tLSBnY2MvdGVzdHN1aXRlL2djYy5jLXRvcnR1cmUvZXhlY3V0ZS9w cjY1NDE4LTIuYy5qagkyMDE1LTAzLTEzIDE2OjQ5OjEwLjk5MjU1NjExMCArMDEwMAorKysrIGdj Yy90ZXN0c3VpdGUvZ2NjLmMtdG9ydHVyZS9leGVjdXRlL3ByNjU0MTgtMi5jCTIwMTUtMDMtMTMg MTY6NDg6NDQuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDE5IEBACisrLyogUFIgdHJlZS1v cHRpbWl6YXRpb24vNjU0MTggKi8KKysKKytfX2F0dHJpYnV0ZV9fKChub2lubGluZSwgbm9jbG9u ZSkpIGludAorK2ZvbyAoaW50IHgpCisreworKyAgaWYgKHggPT0gLTIxNiB8fCB4ID09IC0yMTEg fHwgeCA9PSAtMjE4IHx8IHggPT0gLTIwNSB8fCB4ID09IC0yMjMpCisrICAgICByZXR1cm4gMTsK KysgIHJldHVybiAwOworK30KKysKKytpbnQKKyttYWluICgpCisreworKyAgdm9sYXRpbGUgaW50 IGk7CisrICBmb3IgKGkgPSAtMjMwOyBpIDwgLTIwMDsgaSsrKQorKyAgICBpZiAoZm9vIChpKSAh PSAoaSA9PSAtMjE2IHx8IGkgPT0gLTIxMSB8fCBpID09IC0yMTggfHwgaSA9PSAtMjA1IHx8IGkg PT0gLTIyMykpCisrICAgICAgX19idWlsdGluX2Fib3J0ICgpOworKyAgcmV0dXJuIDA7CisrfQoK ZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IGJhNWMwMjcuLjVkZjZmODAgMTAw NjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSArMSBAQAotNjkwNmQ0YmE2ZjIy MWI1OGMxYjY4NzhlODcwYTIzNmMgIGdjYy01LjAuMC0yMDE1MDIyNi50YXIuYnoyCis1MWQ4Yjkx NGRiYTY1OGM2OWQyM2M1Zjc4NTNmODQzYyAgZ2NjLTUuMC4wLTIwMTUwMzEzLnRhci5iejIK