From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 31842 invoked from network); 25 Sep 2021 10:19:58 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 25 Sep 2021 10:19:58 -0000 Content-Type: multipart/mixed; boundary="===============6659778931403398187==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_LuaJIT=3A_import_upstream_patch_to_support_64bit_lightuserdata_on_aarch64?= To: ml@inbox.vuxu.org From: Johnnynator Reply-to: ml@inbox.vuxu.org Message-ID: Date: Sat, 25 Sep 2021 12:19:58 +0200 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============6659778931403398187== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IEpvaG5ueW5hdG9yIGFnYWluc3QgbWFzdGVy IG9uIHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9Kb2hu bnluYXRvci92b2lkLXBhY2thZ2VzIGx1YWppdC1hYXJjaDY0Cmh0dHBzOi8vZ2l0aHViLmNvbS92 b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8zMzA5OAoKTHVhSklUOiBpbXBvcnQgdXBzdHJl YW0gcGF0Y2ggdG8gc3VwcG9ydCA2NGJpdCBsaWdodHVzZXJkYXRhIG9uIGFhcmNoNjQKd2l0aG91 dCB0aGlzIGUuZy4gbHVhaml0IGp1c3QgY3Jhc2hlcyBvbiBuYXRpdmUgbmVvdmltIGJ1aWxkcyBh bmQgdW5kZXIKY2VydGFpbiBjb25kaXRpb25zIGFsc28gZHVyaW5nIHJ1bnRpbWUgZS5nLiB3aXRo IG52aW0tY21wICsgbnZpbS1jbXAtbHNwCgo8IS0tIE1hcmsgaXRlbXMgd2l0aCBbeF0gd2hlcmUg YXBwbGljYWJsZSAtLT4KCiMjIyMgR2VuZXJhbAotIFsgXSBUaGlzIGlzIGEgbmV3IHBhY2thZ2Ug YW5kIGl0IGNvbmZvcm1zIHRvIHRoZSBbcXVhbGl0eSByZXF1aXJlbWVudHNdKGh0dHBzOi8vZ2l0 aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvYmxvYi9tYXN0ZXIvTWFudWFsLm1kI3F1 YWxpdHktcmVxdWlyZW1lbnRzKQoKIyMjIyBIYXZlIHRoZSByZXN1bHRzIG9mIHRoZSBwcm9wb3Nl ZCBjaGFuZ2VzIGJlZW4gdGVzdGVkPwotIFsgXSBJIHVzZSB0aGUgcGFja2FnZXMgYWZmZWN0ZWQg YnkgdGhlIHByb3Bvc2VkIGNoYW5nZXMgb24gYSByZWd1bGFyIGJhc2lzIGFuZCBjb25maXJtIHRo aXMgUFIgd29ya3MgZm9yIG1lCi0gWyBdIEkgZ2VuZXJhbGx5IGRvbid0IHVzZSB0aGUgYWZmZWN0 ZWQgcGFja2FnZXMgYnV0IGJyaWVmbHkgdGVzdGVkIHRoaXMgUFIKCjwhLS0KSWYgR2l0SHViIENJ IGNhbm5vdCBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBidWlsZCByZXN1bHQgKGZvciBleGFtcGxl LCBpZiB0aGUKYnVpbGQgaXMgbGlrZWx5IHRvIHRha2Ugc2V2ZXJhbCBob3VycyksIG1ha2Ugc3Vy ZSB0bwpbc2tpcCBDSV0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdl cy9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQjY29udGludW91cy1pbnRlZ3JhdGlvbikuCldo ZW4gc2tpcHBpbmcgQ0ksIHVuY29tbWVudCBhbmQgZmlsbCBvdXQgdGhlIGZvbGxvd2luZyBzZWN0 aW9uLgpOb3RlOiBmb3IgYnVpbGRzIHRoYXQgYXJlIGxpa2VseSB0byBjb21wbGV0ZSBpbiBsZXNz IHRoYW4gMiBob3VycywgaXQgaXMgbm90CmFjY2VwdGFibGUgdG8gc2tpcCBDSS4KLS0+CjwhLS0g CiMjIyMgRG9lcyBpdCBidWlsZCBhbmQgcnVuIHN1Y2Nlc3NmdWxseT8gCihQbGVhc2UgY2hvb3Nl IGF0IGxlYXN0IG9uZSBuYXRpdmUgYnVpbGQgYW5kLCBpZiBzdXBwb3J0ZWQsIGF0IGxlYXN0IG9u ZSBjcm9zcyBidWlsZC4gTW9yZSBhcmUgYmV0dGVyLikKLSBbIF0gSSBidWlsdCB0aGlzIFBSIGxv Y2FsbHkgZm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsIChBUkNILUxJQkMpCi0gWyBdIEkgYnVp bHQgdGhpcyBQUiBsb2NhbGx5IGZvciB0aGVzZSBhcmNoaXRlY3R1cmVzIChpZiBzdXBwb3J0ZWQu IG1hcmsgY3Jvc3NidWlsZHMpOgogIC0gWyBdIGFhcmNoNjQtbXVzbAogIC0gWyBdIGFybXY3bAog IC0gWyBdIGFybXY2bC1tdXNsCi0tPgoKCkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8vZ2l0aHVi LmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8zMzA5OC5wYXRjaCBpcyBhdHRhY2hl ZA== --===============6659778931403398187== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-luajit-aarch64-33098.patch" RnJvbSBhNDZlZDRhMGUxZDViODNhY2QxNzZhYTUwNWNkZTgxODNmNTBlYzNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxtZUBqb2hubnluYXRvci5kZXY+CkRhdGU6IFNhdCwg MjUgU2VwIDIwMjEgMTI6MTI6MjcgKzAyMDAKU3ViamVjdDogW1BBVENIXSBMdWFKSVQ6IGltcG9y dCB1cHN0cmVhbSBwYXRjaCB0byBzdXBwb3J0IDY0Yml0IGxpZ2h0dXNlcmRhdGEKIG9uIGFhcmNo NjQKCndpdGhvdXQgdGhpcyBlLmcuIGx1YWppdCBqdXN0IGNyYXNoZXMgb24gbmF0aXZlIG5lb3Zp bSBidWlsZHMgYW5kIHVuZGVyCmNlcnRhaW4gY29uZGl0aW9ucyBhbHNvIGR1cmluZyBydW50aW1l IGUuZy4gd2l0aCBudmltLWNtcCArIG52aW0tY21wLWxzcAotLS0KIC4uLjFhYmVjNTQyZTZmOTg1 MWZmMjM2OGU3ZjE5NmI2MzgyYTQ0Yy5wYXRjaCB8IDU2MiArKysrKysrKysrKysrKysrKysKIHNy Y3BrZ3MvTHVhSklUL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogMiBm aWxlcyBjaGFuZ2VkLCA1NjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvTHVhSklUL3BhdGNoZXMvZTlhZjFhYmVjNTQyZTZmOTg1MWZmMjM2 OGU3ZjE5NmI2MzgyYTQ0Yy5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvTHVhSklUL3BhdGNo ZXMvZTlhZjFhYmVjNTQyZTZmOTg1MWZmMjM2OGU3ZjE5NmI2MzgyYTQ0Yy5wYXRjaCBiL3NyY3Br Z3MvTHVhSklUL3BhdGNoZXMvZTlhZjFhYmVjNTQyZTZmOTg1MWZmMjM2OGU3ZjE5NmI2MzgyYTQ0 Yy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEyMTc4NjZj MzkyYwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvTHVhSklUL3BhdGNoZXMvZTlhZjFhYmVj NTQyZTZmOTg1MWZmMjM2OGU3ZjE5NmI2MzgyYTQ0Yy5wYXRjaApAQCAtMCwwICsxLDU2MiBAQAor RnJvbSBlOWFmMWFiZWM1NDJlNmY5ODUxZmYyMzY4ZTdmMTk2YjYzODJhNDRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorRnJvbTogTWlrZSBQYWxsIDxtaWtlPgorRGF0ZTogV2VkLCAzMCBTZXAg MjAyMCAwMTozMToyNyArMDIwMAorU3ViamVjdDogW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgZnVs bC1yYW5nZSA2NCBiaXQgbGlnaHR1c2VyZGF0YS4KKworLS0tCisgZG9jL3N0YXR1cy5odG1sICAg fCAxMSAtLS0tLS0tLS0KKyBzcmMvaml0L2R1bXAubHVhICB8ICA0ICsrKy0KKyBzcmMvbGliX2Rl YnVnLmMgICB8IDEyICsrKysrLS0tLS0KKyBzcmMvbGliX2ppdC5jICAgICB8IDE0ICsrKysrKy0t LS0tLQorIHNyYy9saWJfcGFja2FnZS5jIHwgIDggKysrLS0tLQorIHNyYy9saWJfc3RyaW5nLmMg IHwgIDIgKy0KKyBzcmMvbGpfYXBpLmMgICAgICB8IDQwICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLQorIHNyYy9sal9jY2FsbC5jICAgIHwgIDIgKy0KKyBzcmMvbGpfY2NvbnYuYyAg ICB8ICAyICstCisgc3JjL2xqX2NyZWNvcmQuYyAgfCAgNiArKy0tLQorIHNyYy9sal9kaXNwYXRj aC5jIHwgIDIgKy0KKyBzcmMvbGpfaXIuYyAgICAgICB8ICA2ICsrKy0tCisgc3JjL2xqX29iai5j ICAgICAgfCAgNSArKystLQorIHNyYy9sal9vYmouaCAgICAgIHwgNTcgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KKyBzcmMvbGpfc25hcC5jICAgICB8ICA5 ICsrKysrKystCisgc3JjL2xqX3N0YXRlLmMgICAgfCAgNiArKysrKworIHNyYy9sal9zdHJmbXQu YyAgIHwgIDIgKy0KKyAxNyBmaWxlcyBjaGFuZ2VkLCAxMjEgaW5zZXJ0aW9ucygrKSwgNjcgZGVs ZXRpb25zKC0pCisKKyNkaWZmIC0tZ2l0IGEvZG9jL3N0YXR1cy5odG1sIGIvZG9jL3N0YXR1cy5o dG1sCisjaW5kZXggMGFhZmUxM2EyLi5mZDBhZThiYWUgMTAwNjQ0CisjLS0tIGEvZG9jL3N0YXR1 cy5odG1sCisjKysrIGIvZG9jL3N0YXR1cy5odG1sCisjQEAgLTkxLDE3ICs5MSw2IEBAIDxoMj5D dXJyZW50IFN0YXR1czwvaDI+CisjIDx0dD5sdWFfYXRwYW5pYzwvdHQ+IG9uIHg2NC4gVGhpcyBp c3N1ZSB3aWxsIGJlIGZpeGVkIHdpdGggdGhlIG5ldworIyBnYXJiYWdlIGNvbGxlY3Rvci4KKyMg PC9saT4KKyMtPGxpPgorIy1MdWFKSVQgb24gNjQgYml0IHN5c3RlbXMgcHJvdmlkZXMgYSA8Yj5s aW1pdGVkIHJhbmdlPC9iPiBvZiA0NyBiaXRzIGZvciB0aGUKKyMtPGI+bGVnYWN5IDx0dD5saWdo dHVzZXJkYXRhPC90dD48L2I+IGRhdGEgdHlwZS4KKyMtVGhpcyBpcyBvbmx5IHJlbGV2YW50IG9u IHg2NCBzeXN0ZW1zIHdoaWNoIHVzZSB0aGUgbmVnYXRpdmUgcGFydCBvZiB0aGUKKyMtdmlydHVh bCBhZGRyZXNzIHNwYWNlIGluIHVzZXIgbW9kZSwgZS5nLiBTb2xhcmlzL3g2NCwgYW5kIG9uIEFS TTY0IHN5c3RlbXMKKyMtY29uZmlndXJlZCB3aXRoIGEgNDggYml0IG9yIDUyIGJpdCBWQS4KKyMt QXZvaWQgdXNpbmcgPHR0PmxpZ2h0dXNlcmRhdGE8L3R0PiB0byBob2xkIHBvaW50ZXJzIHRoYXQg bWF5IHBvaW50IG91dHNpZGUKKyMtb2YgdGhhdCByYW5nZSwgZS5nLiB2YXJpYWJsZXMgb24gdGhl IHN0YWNrLiBJbiBnZW5lcmFsLCBhdm9pZCB0aGlzIGRhdGEKKyMtdHlwZSBmb3IgbmV3IGNvZGUg YW5kIHJlcGxhY2UgaXQgd2l0aCAobXVjaCBtb3JlIHBlcmZvcm1hbnQpIEZGSSBiaW5kaW5ncy4K KyMtRkZJIGNkYXRhIHBvaW50ZXJzIGNhbiBhZGRyZXNzIHRoZSBmdWxsIDY0IGJpdCByYW5nZS4K KyMtPC9saT4KKyMgPC91bD4KKyMgPGJyIGNsYXNzPSJmbHVzaCI+CisjIDwvZGl2PgorSW5kZXg6 IGx1YWppdC9zcmMvaml0L2R1bXAubHVhCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbHVhaml0Lm9yaWcvc3Jj L2ppdC9kdW1wLmx1YQorKysrIGx1YWppdC9zcmMvaml0L2R1bXAubHVhCitAQCAtMzE1LDcgKzMx NSw5IEBACisgICBsb2NhbCB0biA9IHR5cGUoaykKKyAgIGxvY2FsIHMKKyAgIGlmIHRuID09ICJu dW1iZXIiIHRoZW4KKy0gICAgaWYgYmFuZChzbiBvciAwLCAweDMwMDAwKSB+PSAwIHRoZW4KKysg ICAgaWYgdCA8IDEyIHRoZW4KKysgICAgICBzID0gayA9PSAwIGFuZCAiTlVMTCIgb3IgZm9ybWF0 KCJbMHglMDh4XSIsIGspCisrICAgIGVsc2VpZiBiYW5kKHNuIG9yIDAsIDB4MzAwMDApIH49IDAg dGhlbgorICAgICAgIHMgPSBiYW5kKHNuLCAweDIwMDAwKSB+PSAwIGFuZCAiY29udHBjIiBvciAi ZnRzeiIKKyAgICAgZWxzZWlmIGsgPT0gMl41MisyXjUxIHRoZW4KKyAgICAgICBzID0gImJpYXMi CitJbmRleDogbHVhaml0L3NyYy9saWJfZGVidWcuYworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGx1YWppdC5v cmlnL3NyYy9saWJfZGVidWcuYworKysrIGx1YWppdC9zcmMvbGliX2RlYnVnLmMKK0BAIC0yMzEs OCArMjMxLDggQEAKKyAgIGludDMyX3QgbiA9IGxqX2xpYl9jaGVja2ludChMLCAyKSAtIDE7Cisg ICBpZiAoKHVpbnQzMl90KW4gPj0gZm4tPmwubnVwdmFsdWVzKQorICAgICBsal9lcnJfYXJnKEws IDIsIExKX0VSUl9JRFhSTkcpOworLSAgc2V0bGlnaHR1ZFYoTC0+dG9wLTEsIGlzbHVhZnVuYyhm bikgPyAodm9pZCAqKWdjcmVmKGZuLT5sLnV2cHRyW25dKSA6CistCQkJCQkodm9pZCAqKSZmbi0+ Yy51cHZhbHVlW25dKTsKKysgIGx1YV9wdXNobGlnaHR1c2VyZGF0YShMLCBpc2x1YWZ1bmMoZm4p ID8gKHZvaWQgKilnY3JlZihmbi0+bC51dnB0cltuXSkgOgorKwkJCQkJICAgKHZvaWQgKikmZm4t PmMudXB2YWx1ZVtuXSk7CisgICByZXR1cm4gMTsKKyB9CisgCitAQCAtMjgzLDEzICsyODMsMTMg QEAKKyAKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKy0jZGVmaW5lIEtFWV9IT09LCSgodm9p ZCAqKTB4MzAwNCkKKysjZGVmaW5lIEtFWV9IT09LCShVNjR4KDgwMDAwMDAwLDAwMDAwMDAwKXwn aCcpCisgCisgc3RhdGljIHZvaWQgaG9va2YobHVhX1N0YXRlICpMLCBsdWFfRGVidWcgKmFyKQor IHsKKyAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBob29rbmFtZXNbXSA9CisgICAgIHsiY2Fs bCIsICJyZXR1cm4iLCAibGluZSIsICJjb3VudCIsICJ0YWlsIHJldHVybiJ9OworLSAgbHVhX3B1 c2hsaWdodHVzZXJkYXRhKEwsIEtFWV9IT09LKTsKKysgIChMLT50b3ArKyktPnU2NCA9IEtFWV9I T09LOworICAgbHVhX3Jhd2dldChMLCBMVUFfUkVHSVNUUllJTkRFWCk7CisgICBpZiAobHVhX2lz ZnVuY3Rpb24oTCwgLTEpKSB7CisgICAgIGx1YV9wdXNoc3RyaW5nKEwsIGhvb2tuYW1lc1soaW50 KWFyLT5ldmVudF0pOworQEAgLTMzNCw3ICszMzQsNyBAQAorICAgICBjb3VudCA9IGx1YUxfb3B0 aW50KEwsIGFyZyszLCAwKTsKKyAgICAgZnVuYyA9IGhvb2tmOyBtYXNrID0gbWFrZW1hc2soc21h c2ssIGNvdW50KTsKKyAgIH0KKy0gIGx1YV9wdXNobGlnaHR1c2VyZGF0YShMLCBLRVlfSE9PSyk7 CisrICAoTC0+dG9wKyspLT51NjQgPSBLRVlfSE9PSzsKKyAgIGx1YV9wdXNodmFsdWUoTCwgYXJn KzEpOworICAgbHVhX3Jhd3NldChMLCBMVUFfUkVHSVNUUllJTkRFWCk7CisgICBsdWFfc2V0aG9v ayhMLCBmdW5jLCBtYXNrLCBjb3VudCk7CitAQCAtMzQ5LDcgKzM0OSw3IEBACisgICBpZiAoaG9v ayAhPSBOVUxMICYmIGhvb2sgIT0gaG9va2YpIHsgIC8qIGV4dGVybmFsIGhvb2s/ICovCisgICAg IGx1YV9wdXNobGl0ZXJhbChMLCAiZXh0ZXJuYWwgaG9vayIpOworICAgfSBlbHNlIHsKKy0gICAg bHVhX3B1c2hsaWdodHVzZXJkYXRhKEwsIEtFWV9IT09LKTsKKysgICAgKEwtPnRvcCsrKS0+dTY0 ID0gS0VZX0hPT0s7CisgICAgIGx1YV9yYXdnZXQoTCwgTFVBX1JFR0lTVFJZSU5ERVgpOyAgIC8q IGdldCBob29rICovCisgICB9CisgICBsdWFfcHVzaHN0cmluZyhMLCB1bm1ha2VtYXNrKG1hc2ss IGJ1ZmYpKTsKK0luZGV4OiBsdWFqaXQvc3JjL2xpYl9qaXQuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGx1 YWppdC5vcmlnL3NyYy9saWJfaml0LmMKKysrKyBsdWFqaXQvc3JjL2xpYl9qaXQuYworQEAgLTU0 MCwxNSArNTQwLDE1IEBACisgCisgLyogTm90IGxvYWRlZCBieSBkZWZhdWx0LCB1c2U6IGxvY2Fs IHByb2ZpbGUgPSByZXF1aXJlKCJqaXQucHJvZmlsZSIpICovCisgCistc3RhdGljIGNvbnN0IGNo YXIgS0VZX1BST0ZJTEVfVEhSRUFEID0gJ3QnOworLXN0YXRpYyBjb25zdCBjaGFyIEtFWV9QUk9G SUxFX0ZVTkMgPSAnZic7CisrI2RlZmluZSBLRVlfUFJPRklMRV9USFJFQUQJKFU2NHgoODAwMDAw MDAsMDAwMDAwMDApfCd0JykKKysjZGVmaW5lIEtFWV9QUk9GSUxFX0ZVTkMJKFU2NHgoODAwMDAw MDAsMDAwMDAwMDApfCdmJykKKyAKKyBzdGF0aWMgdm9pZCBqaXRfcHJvZmlsZV9jYWxsYmFjayhs dWFfU3RhdGUgKkwyLCBsdWFfU3RhdGUgKkwsIGludCBzYW1wbGVzLAorIAkJCQkgaW50IHZtc3Rh dGUpCisgeworICAgVFZhbHVlIGtleTsKKyAgIGNUVmFsdWUgKnR2OworLSAgc2V0bGlnaHR1ZFYo JmtleSwgKHZvaWQgKikmS0VZX1BST0ZJTEVfRlVOQyk7CisrICBrZXkudTY0ID0gS0VZX1BST0ZJ TEVfRlVOQzsKKyAgIHR2ID0gbGpfdGFiX2dldChMLCB0YWJWKHJlZ2lzdHJ5KEwpKSwgJmtleSk7 CisgICBpZiAodHZpc2Z1bmModHYpKSB7CisgICAgIGNoYXIgdm1zdCA9IChjaGFyKXZtc3RhdGU7 CitAQCAtNTc1LDkgKzU3NSw5IEBACisgICBsdWFfU3RhdGUgKkwyID0gbHVhX25ld3RocmVhZChM KTsgIC8qIFRocmVhZCB0aGF0IHJ1bnMgcHJvZmlsZXIgY2FsbGJhY2suICovCisgICBUVmFsdWUg a2V5OworICAgLyogQW5jaG9yIHRocmVhZCBhbmQgZnVuY3Rpb24gaW4gcmVnaXN0cnkuICovCist ICBzZXRsaWdodHVkVigma2V5LCAodm9pZCAqKSZLRVlfUFJPRklMRV9USFJFQUQpOworKyAga2V5 LnU2NCA9IEtFWV9QUk9GSUxFX1RIUkVBRDsKKyAgIHNldHRocmVhZFYoTCwgbGpfdGFiX3NldChM LCByZWdpc3RyeSwgJmtleSksIEwyKTsKKy0gIHNldGxpZ2h0dWRWKCZrZXksICh2b2lkICopJktF WV9QUk9GSUxFX0ZVTkMpOworKyAga2V5LnU2NCA9IEtFWV9QUk9GSUxFX0ZVTkM7CisgICBzZXRm dW5jVihMLCBsal90YWJfc2V0KEwsIHJlZ2lzdHJ5LCAma2V5KSwgZnVuYyk7CisgICBsal9nY19h bnliYXJyaWVydChMLCByZWdpc3RyeSk7CisgICBsdWFKSVRfcHJvZmlsZV9zdGFydChMLCBtb2Rl ID8gc3RyZGF0YShtb2RlKSA6ICIiLAorQEAgLTU5Miw5ICs1OTIsOSBAQAorICAgVFZhbHVlIGtl eTsKKyAgIGx1YUpJVF9wcm9maWxlX3N0b3AoTCk7CisgICByZWdpc3RyeSA9IHRhYlYocmVnaXN0 cnkoTCkpOworLSAgc2V0bGlnaHR1ZFYoJmtleSwgKHZvaWQgKikmS0VZX1BST0ZJTEVfVEhSRUFE KTsKKysgIGtleS51NjQgPSBLRVlfUFJPRklMRV9USFJFQUQ7CisgICBzZXRuaWxWKGxqX3RhYl9z ZXQoTCwgcmVnaXN0cnksICZrZXkpKTsKKy0gIHNldGxpZ2h0dWRWKCZrZXksICh2b2lkICopJktF WV9QUk9GSUxFX0ZVTkMpOworKyAga2V5LnU2NCA9IEtFWV9QUk9GSUxFX0ZVTkM7CisgICBzZXRu aWxWKGxqX3RhYl9zZXQoTCwgcmVnaXN0cnksICZrZXkpKTsKKyAgIGxqX2djX2FueWJhcnJpZXJ0 KEwsIHJlZ2lzdHJ5KTsKKyAgIHJldHVybiAwOworSW5kZXg6IGx1YWppdC9zcmMvbGliX3BhY2th Z2UuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIGx1YWppdC5vcmlnL3NyYy9saWJfcGFja2FnZS5jCisrKysg bHVhaml0L3NyYy9saWJfcGFja2FnZS5jCitAQCAtMzk4LDcgKzM5OCw3IEBACisgCisgLyogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tICovCisgCistI2RlZmluZSBzZW50aW5lbAkoKHZvaWQgKikweDQwMDQpCisr I2RlZmluZSBLRVlfU0VOVElORUwJKFU2NHgoODAwMDAwMDAsMDAwMDAwMDApfCdzJykKKyAKKyBz dGF0aWMgaW50IGxqX2NmX3BhY2thZ2VfcmVxdWlyZShsdWFfU3RhdGUgKkwpCisgeworQEAgLTQw OCw3ICs0MDgsNyBAQAorICAgbHVhX2dldGZpZWxkKEwsIExVQV9SRUdJU1RSWUlOREVYLCAiX0xP QURFRCIpOworICAgbHVhX2dldGZpZWxkKEwsIDIsIG5hbWUpOworICAgaWYgKGx1YV90b2Jvb2xl YW4oTCwgLTEpKSB7ICAvKiBpcyBpdCB0aGVyZT8gKi8KKy0gICAgaWYgKGx1YV90b3VzZXJkYXRh KEwsIC0xKSA9PSBzZW50aW5lbCkgIC8qIGNoZWNrIGxvb3BzICovCisrICAgIGlmICgoTC0+dG9w LTEpLT51NjQgPT0gS0VZX1NFTlRJTkVMKSAgLyogY2hlY2sgbG9vcHMgKi8KKyAgICAgICBsdWFM X2Vycm9yKEwsICJsb29wIG9yIHByZXZpb3VzIGVycm9yIGxvYWRpbmcgbW9kdWxlICIgTFVBX1FT LCBuYW1lKTsKKyAgICAgcmV0dXJuIDE7ICAvKiBwYWNrYWdlIGlzIGFscmVhZHkgbG9hZGVkICov CisgICB9CitAQCAtNDMxLDE0ICs0MzEsMTQgQEAKKyAgICAgZWxzZQorICAgICAgIGx1YV9wb3Ao TCwgMSk7CisgICB9CistICBsdWFfcHVzaGxpZ2h0dXNlcmRhdGEoTCwgc2VudGluZWwpOworKyAg KEwtPnRvcCsrKS0+dTY0ID0gS0VZX1NFTlRJTkVMOworICAgbHVhX3NldGZpZWxkKEwsIDIsIG5h bWUpOyAgLyogX0xPQURFRFtuYW1lXSA9IHNlbnRpbmVsICovCisgICBsdWFfcHVzaHN0cmluZyhM LCBuYW1lKTsgIC8qIHBhc3MgbmFtZSBhcyBhcmd1bWVudCB0byBtb2R1bGUgKi8KKyAgIGx1YV9j YWxsKEwsIDEsIDEpOyAgLyogcnVuIGxvYWRlZCBtb2R1bGUgKi8KKyAgIGlmICghbHVhX2lzbmls KEwsIC0xKSkgIC8qIG5vbi1uaWwgcmV0dXJuPyAqLworICAgICBsdWFfc2V0ZmllbGQoTCwgMiwg bmFtZSk7ICAvKiBfTE9BREVEW25hbWVdID0gcmV0dXJuZWQgdmFsdWUgKi8KKyAgIGx1YV9nZXRm aWVsZChMLCAyLCBuYW1lKTsKKy0gIGlmIChsdWFfdG91c2VyZGF0YShMLCAtMSkgPT0gc2VudGlu ZWwpIHsgICAvKiBtb2R1bGUgZGlkIG5vdCBzZXQgYSB2YWx1ZT8gKi8KKysgIGlmICgoTC0+dG9w LTEpLT51NjQgPT0gS0VZX1NFTlRJTkVMKSB7ICAgLyogbW9kdWxlIGRpZCBub3Qgc2V0IGEgdmFs dWU/ICovCisgICAgIGx1YV9wdXNoYm9vbGVhbihMLCAxKTsgIC8qIHVzZSB0cnVlIGFzIHJlc3Vs dCAqLworICAgICBsdWFfcHVzaHZhbHVlKEwsIC0xKTsgIC8qIGV4dHJhIGNvcHkgdG8gYmUgcmV0 dXJuZWQgKi8KKyAgICAgbHVhX3NldGZpZWxkKEwsIDIsIG5hbWUpOyAgLyogX0xPQURFRFtuYW1l XSA9IHRydWUgKi8KK0luZGV4OiBsdWFqaXQvc3JjL2xpYl9zdHJpbmcuYworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGx1YWppdC5vcmlnL3NyYy9saWJfc3RyaW5nLmMKKysrKyBsdWFqaXQvc3JjL2xpYl9zdHJp bmcuYworQEAgLTcxNCw3ICs3MTQsNyBAQAorIAlsal9zdHJmbXRfcHV0ZmNoYXIoc2IsIHNmLCBs al9saWJfY2hlY2tpbnQoTCwgYXJnKSk7CisgCWJyZWFrOworICAgICAgIGNhc2UgU1RSRk1UX1BU UjogIC8qIE5vIGZvcm1hdHRpbmcuICovCistCWxqX3N0cmZtdF9wdXRwdHIoc2IsIGxqX29ial9w dHIoTC0+YmFzZSthcmctMSkpOworKwlsal9zdHJmbXRfcHV0cHRyKHNiLCBsal9vYmpfcHRyKEco TCksIEwtPmJhc2UrYXJnLTEpKTsKKyAJYnJlYWs7CisgICAgICAgZGVmYXVsdDoKKyAJbHVhX2Fz c2VydCgwKTsKK0luZGV4OiBsdWFqaXQvc3JjL2xqX2FwaS5jCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbHVh aml0Lm9yaWcvc3JjL2xqX2FwaS5jCisrKysgbHVhaml0L3NyYy9sal9hcGkuYworQEAgLTU5NSw3 ICs1OTUsNyBAQAorICAgaWYgKHR2aXN1ZGF0YShvKSkKKyAgICAgcmV0dXJuIHVkZGF0YSh1ZGF0 YVYobykpOworICAgZWxzZSBpZiAodHZpc2xpZ2h0dWQobykpCistICAgIHJldHVybiBsaWdodHVk VihvKTsKKysgICAgcmV0dXJuIGxpZ2h0dWRWKEcoTCksIG8pOworICAgZWxzZQorICAgICByZXR1 cm4gTlVMTDsKKyB9CitAQCAtNjA4LDcgKzYwOCw3IEBACisgCisgTFVBX0FQSSBjb25zdCB2b2lk ICpsdWFfdG9wb2ludGVyKGx1YV9TdGF0ZSAqTCwgaW50IGlkeCkKKyB7CistICByZXR1cm4gbGpf b2JqX3B0cihpbmRleDJhZHIoTCwgaWR4KSk7CisrICByZXR1cm4gbGpfb2JqX3B0cihHKEwpLCBp bmRleDJhZHIoTCwgaWR4KSk7CisgfQorIAorIC8qIC0tIFN0YWNrIHNldHRlcnMgKG9iamVjdCBj cmVhdGlvbikgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworQEAgLTY5 NCw5ICs2OTQsMzggQEAKKyAgIGluY3JfdG9wKEwpOworIH0KKyAKKysjaWYgTEpfNjQKKytzdGF0 aWMgdm9pZCAqbGlnaHR1ZF9pbnRlcm4obHVhX1N0YXRlICpMLCB2b2lkICpwKQorK3sKKysgIGds b2JhbF9TdGF0ZSAqZyA9IEcoTCk7CisrICB1aW50NjRfdCB1ID0gKHVpbnQ2NF90KXA7CisrICB1 aW50MzJfdCB1cCA9IGxpZ2h0dWR1cCh1KTsKKysgIHVpbnQzMl90ICpzZWdtYXAgPSBtcmVmKGct PmdjLmxpZ2h0dWRzZWcsIHVpbnQzMl90KTsKKysgIE1TaXplIHNlZ251bSA9IGctPmdjLmxpZ2h0 dWRudW07CisrICBpZiAoc2VnbWFwKSB7CisrICAgIE1TaXplIHNlZzsKKysgICAgZm9yIChzZWcg PSAwOyBzZWcgPD0gc2VnbnVtOyBzZWcrKykKKysgICAgICBpZiAoc2VnbWFwW3NlZ10gPT0gdXAp ICAvKiBGYXN0IHBhdGguICovCisrCXJldHVybiAodm9pZCAqKSgoKHVpbnQ2NF90KXNlZyA8PCBM Sl9MSUdIVFVEX0JJVFNfTE8pIHwgbGlnaHR1ZGxvKHUpKTsKKysgICAgc2VnbnVtKys7CisrICB9 CisrICBpZiAoISgoc2VnbnVtLTEpICYgc2VnbnVtKSAmJiBzZWdudW0gIT0gMSkgeworKyAgICBp ZiAoc2VnbnVtID49ICgxIDw8IExKX0xJR0hUVURfQklUU19TRUcpKSBsal9lcnJfbXNnKEwsIExK X0VSUl9CQURMVSk7CisrICAgIGxqX21lbV9yZWFsbG9jdmVjKEwsIHNlZ21hcCwgc2VnbnVtLCBz ZWdudW0gPyAyKnNlZ251bSA6IDJ1LCB1aW50MzJfdCk7CisrICAgIHNldG1yZWYoZy0+Z2MubGln aHR1ZHNlZywgc2VnbWFwKTsKKysgIH0KKysgIGctPmdjLmxpZ2h0dWRudW0gPSBzZWdudW07Cisr ICBzZWdtYXBbc2VnbnVtXSA9IHVwOworKyAgcmV0dXJuICh2b2lkICopKCgodWludDY0X3Qpc2Vn bnVtIDw8IExKX0xJR0hUVURfQklUU19MTykgfCBsaWdodHVkbG8odSkpOworK30KKysjZW5kaWYK KysKKyBMVUFfQVBJIHZvaWQgbHVhX3B1c2hsaWdodHVzZXJkYXRhKGx1YV9TdGF0ZSAqTCwgdm9p ZCAqcCkKKyB7CistICBzZXRsaWdodHVkVihMLT50b3AsIGNoZWNrbGlnaHR1ZHB0cihMLCBwKSk7 CisrI2lmIExKXzY0CisrICBwID0gbGlnaHR1ZF9pbnRlcm4oTCwgcCk7CisrI2VuZGlmCisrICBz ZXRyYXdsaWdodHVkVihMLT50b3AsIHApOworICAgaW5jcl90b3AoTCk7CisgfQorIAorQEAgLTEx MzgsNyArMTE2NywxMCBAQAorICAgZm4tPmMuZiA9IGZ1bmM7CisgICBzZXRmdW5jVihMLCB0b3Ar KywgZm4pOworICAgaWYgKExKX0ZSMikgc2V0bmlsVih0b3ArKyk7CistICBzZXRsaWdodHVkVih0 b3ArKywgY2hlY2tsaWdodHVkcHRyKEwsIHVkKSk7CisrI2lmIExKXzY0CisrICB1ZCA9IGxpZ2h0 dWRfaW50ZXJuKEwsIHVkKTsKKysjZW5kaWYKKysgIHNldHJhd2xpZ2h0dWRWKHRvcCsrLCB1ZCk7 CisgICBjZnJhbWVfbnJlcyhMLT5jZnJhbWUpID0gMSswOyAgLyogWmVybyByZXN1bHRzLiAqLwor ICAgTC0+dG9wID0gdG9wOworICAgcmV0dXJuIHRvcC0xOyAgLyogTm93IGNhbGwgdGhlIG5ld2x5 IGFsbG9jYXRlZCBDIGZ1bmN0aW9uLiAqLworSW5kZXg6IGx1YWppdC9zcmMvbGpfY2NhbGwuYwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGx1YWppdC5vcmlnL3NyYy9sal9jY2FsbC5jCisrKysgbHVhaml0L3Ny Yy9sal9jY2FsbC5jCitAQCAtMTMxNCw3ICsxMzE0LDcgQEAKKyAgICAgbGpfdm1fZmZpX2NhbGwo JmNjKTsKKyAgICAgaWYgKGN0cy0+Y2Iuc2xvdCAhPSB+MHUpIHsgIC8qIEJsYWNrbGlzdCBmdW5j dGlvbiB0aGF0IGNhbGxlZCBhIGNhbGxiYWNrLiAqLworICAgICAgIFRWYWx1ZSB0djsKKy0gICAg ICBzZXRsaWdodHVkVigmdHYsICh2b2lkICopY2MuZnVuYyk7CisrICAgICAgdHYudTY0ID0gKCh1 aW50cHRyX3QpKHZvaWQgKiljYy5mdW5jID4+IDIpIHwgVTY0eCg4MDAwMDAwMDAsIDAwMDAwMDAw KTsKKyAgICAgICBzZXRib29sVihsal90YWJfc2V0KEwsIGN0cy0+bWlzY21hcCwgJnR2KSwgMSk7 CisgICAgIH0KKyAgICAgY3QgPSAoQ1R5cGUgKikoKGludHB0cl90KWN0KyhpbnRwdHJfdCljdHMt PnRhYik7ICAvKiBNYXkgYmUgcmVhbGxvY2F0ZWQuICovCitJbmRleDogbHVhaml0L3NyYy9sal9j Y29udi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gbHVhaml0Lm9yaWcvc3JjL2xqX2Njb252LmMKKysrKyBs dWFqaXQvc3JjL2xqX2Njb252LmMKK0BAIC02MTEsNyArNjExLDcgQEAKKyAgICAgaWYgKHVkLT51 ZHR5cGUgPT0gVURUWVBFX0lPX0ZJTEUpCisgICAgICAgdG1wcHRyID0gKih2b2lkICoqKXRtcHB0 cjsKKyAgIH0gZWxzZSBpZiAodHZpc2xpZ2h0dWQobykpIHsKKy0gICAgdG1wcHRyID0gbGlnaHR1 ZFYobyk7CisrICAgIHRtcHB0ciA9IGxpZ2h0dWRWKGN0cy0+Zywgbyk7CisgICB9IGVsc2UgaWYg KHR2aXNmdW5jKG8pKSB7CisgICAgIHZvaWQgKnAgPSBsal9jY2FsbGJhY2tfbmV3KGN0cywgZCwg ZnVuY1YobykpOworICAgICBpZiAocCkgeworSW5kZXg6IGx1YWppdC9zcmMvbGpfY3JlY29yZC5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gbHVhaml0Lm9yaWcvc3JjL2xqX2NyZWNvcmQuYworKysrIGx1YWpp dC9zcmMvbGpfY3JlY29yZC5jCitAQCAtNjQzLDggKzY0Myw3IEBACisgICAgIH0KKyAgIH0gZWxz ZSBpZiAodHJlZl9pc2xpZ2h0dWQoc3ApKSB7CisgI2lmIExKXzY0CistICAgIHNwID0gZW1pdGly KElSVChJUl9CQU5ELCBJUlRfUDY0KSwgc3AsCistCQlsal9pcl9raW50NjQoSiwgVTY0eCgwMDAw N2ZmZixmZmZmZmZmZikpKTsKKysgICAgbGpfdHJhY2VfZXJyKEosIExKX1RSRVJSX05ZSUNPTlYp OworICNlbmRpZgorICAgfSBlbHNlIHsgIC8qIE5ZSTogdHJlZl9pc3RhYihzcCkuICovCisgICAg IElSVHlwZSB0OworQEAgLTEyMDksOCArMTIwOCw3IEBACisgICAgIFRSZWYgdHI7CisgICAgIFRW YWx1ZSB0djsKKyAgICAgLyogQ2hlY2sgZm9yIGJsYWNrbGlzdGVkIEMgZnVuY3Rpb25zIHRoYXQg bWlnaHQgY2FsbCBhIGNhbGxiYWNrLiAqLworLSAgICBzZXRsaWdodHVkVigmdHYsCistCQljZGF0 YV9nZXRwdHIoY2RhdGFwdHIoY2QpLCAoTEpfNjQgJiYgdHAgPT0gSVJUX1A2NCkgPyA4IDogNCkp OworKyAgICB0di51NjQgPSAoKHVpbnRwdHJfdCljZGF0YV9nZXRwdHIoY2RhdGFwdHIoY2QpLCAo TEpfNjQgJiYgdHAgPT0gSVJUX1A2NCkgPyA4IDogNCkgPj4gMikgfCBVNjR4KDgwMDAwMDAwMCwg MDAwMDAwMDApOworICAgICBpZiAodHZpc3RydWUobGpfdGFiX2dldChKLT5MLCBjdHMtPm1pc2Nt YXAsICZ0dikpKQorICAgICAgIGxqX3RyYWNlX2VycihKLCBMSl9UUkVSUl9CTEFDS0wpOworICAg ICBpZiAoY3R5cGVfaXN2b2lkKGN0ci0+aW5mbykpIHsKK0luZGV4OiBsdWFqaXQvc3JjL2xqX2Rp c3BhdGNoLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsdWFqaXQub3JpZy9zcmMvbGpfZGlzcGF0Y2guYwor KysrIGx1YWppdC9zcmMvbGpfZGlzcGF0Y2guYworQEAgLTMwMiw3ICszMDIsNyBAQAorICAgICAg IGlmIChpZHggIT0gMCkgeworIAljVFZhbHVlICp0diA9IGlkeCA+IDAgPyBMLT5iYXNlICsgKGlk eC0xKSA6IEwtPnRvcCArIGlkeDsKKyAJaWYgKHR2aXNsaWdodHVkKHR2KSkKKy0JICBnLT53cmFw ZiA9IChsdWFfQ0Z1bmN0aW9uKWxpZ2h0dWRWKHR2KTsKKysJICBnLT53cmFwZiA9IChsdWFfQ0Z1 bmN0aW9uKWxpZ2h0dWRWKGcsIHR2KTsKKyAJZWxzZQorIAkgIHJldHVybiAwOyAgLyogRmFpbGVk LiAqLworICAgICAgIH0gZWxzZSB7CitJbmRleDogbHVhaml0L3NyYy9sal9pci5jCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gbHVhaml0Lm9yaWcvc3JjL2xqX2lyLmMKKysrKyBsdWFqaXQvc3JjL2xqX2lyLmMK K0BAIC0zODYsOCArMzg2LDEwIEBACisgICBjYXNlIElSX0tQUkk6IHNldHByaVYodHYsIGlydF90 b2l0eXBlKGlyLT50KSk7IGJyZWFrOworICAgY2FzZSBJUl9LSU5UOiBzZXRpbnRWKHR2LCBpci0+ aSk7IGJyZWFrOworICAgY2FzZSBJUl9LR0M6IHNldGdjVihMLCB0diwgaXJfa2djKGlyKSwgaXJ0 X3RvaXR5cGUoaXItPnQpKTsgYnJlYWs7CistICBjYXNlIElSX0tQVFI6IGNhc2UgSVJfS0tQVFI6 IHNldGxpZ2h0dWRWKHR2LCBpcl9rcHRyKGlyKSk7IGJyZWFrOworLSAgY2FzZSBJUl9LTlVMTDog c2V0bGlnaHR1ZFYodHYsIE5VTEwpOyBicmVhazsKKysgIGNhc2UgSVJfS1BUUjogY2FzZSBJUl9L S1BUUjoKKysgICAgc2V0bnVtVih0diwgKGx1YV9OdW1iZXIpKHVpbnRwdHJfdClpcl9rcHRyKGly KSk7CisrICAgIGJyZWFrOworKyAgY2FzZSBJUl9LTlVMTDogc2V0aW50Vih0diwgMCk7IGJyZWFr OworICAgY2FzZSBJUl9LTlVNOiBzZXRudW1WKHR2LCBpcl9rbnVtKGlyKS0+bik7IGJyZWFrOwor ICNpZiBMSl9IQVNGRkkKKyAgIGNhc2UgSVJfS0lOVDY0OiB7CitJbmRleDogbHVhaml0L3NyYy9s al9vYmouYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIGx1YWppdC5vcmlnL3NyYy9sal9vYmouYworKysrIGx1 YWppdC9zcmMvbGpfb2JqLmMKK0BAIC0zNCwxMiArMzQsMTMgQEAKKyB9CisgCisgLyogUmV0dXJu IHBvaW50ZXIgdG8gb2JqZWN0IG9yIGl0cyBvYmplY3QgZGF0YS4gKi8KKy1jb25zdCB2b2lkICog TEpfRkFTVENBTEwgbGpfb2JqX3B0cihjVFZhbHVlICpvKQorK2NvbnN0IHZvaWQgKiBMSl9GQVNU Q0FMTCBsal9vYmpfcHRyKGdsb2JhbF9TdGF0ZSAqZywgY1RWYWx1ZSAqbykKKyB7CisrICBVTlVT RUQoZyk7CisgICBpZiAodHZpc3VkYXRhKG8pKQorICAgICByZXR1cm4gdWRkYXRhKHVkYXRhVihv KSk7CisgICBlbHNlIGlmICh0dmlzbGlnaHR1ZChvKSkKKy0gICAgcmV0dXJuIGxpZ2h0dWRWKG8p OworKyAgICByZXR1cm4gbGlnaHR1ZFYoZywgbyk7CisgICBlbHNlIGlmIChMSl9IQVNGRkkgJiYg dHZpc2NkYXRhKG8pKQorICAgICByZXR1cm4gY2RhdGFwdHIoY2RhdGFWKG8pKTsKKyAgIGVsc2Ug aWYgKHR2aXNnY3YobykpCitJbmRleDogbHVhaml0L3NyYy9sal9vYmouaAorPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGx1YWppdC5vcmlnL3NyYy9sal9vYmouaAorKysrIGx1YWppdC9zcmMvbGpfb2JqLmgKK0BA IC0yMzIsNyArMjMyLDcgQEAKKyAqKiAgICAgICAgICAgICAgICAgIC0tLU1TVy0tLS4tLS1MU1ct LS0KKyAqKiBwcmltaXRpdmUgdHlwZXMgfCAgaXR5cGUgIHwgICAgICAgICB8CisgKiogbGlnaHR1 c2VyZGF0YSAgIHwgIGl0eXBlICB8ICB2b2lkICogfCAgKDMyIGJpdCBwbGF0Zm9ybXMpCistKiog bGlnaHR1c2VyZGF0YSAgIHxmZmZmfCAgICB2b2lkICogICAgfCAgKDY0IGJpdCBwbGF0Zm9ybXMs IDQ3IGJpdCBwb2ludGVycykKKysqKiBsaWdodHVzZXJkYXRhICAgfGZmZmZ8c2VnfCAgICBvZnMg ICB8ICAoNjQgYml0IHBsYXRmb3JtcykKKyAqKiBHQyBvYmplY3RzICAgICAgfCAgaXR5cGUgIHwg IEdDUmVmICB8CisgKiogaW50IChMSl9EVUFMTlVNKXwgIGl0eXBlICB8ICAgaW50ICAgfAorICoq IG51bWJlciAgICAgICAgICAgLS0tLS0tLWRvdWJsZS0tLS0tLQorQEAgLTI0NSw3ICsyNDUsOCBA QAorICoqCisgKiogICAgICAgICAgICAgICAgICAgICAtLS0tLS1NU1ctLS0tLS0uLS0tLS0tTFNX LS0tLS0tCisgKiogcHJpbWl0aXZlIHR5cGVzICAgIHwxLi4xfGl0eXBlfDEuLi4uLi4uLi4uLi4u Li4uLi4xfAorLSoqIEdDIG9iamVjdHMvbGlnaHR1ZCB8MS4uMXxpdHlwZXwtLS0tLS0tR0NSZWYt LS0tLS0tLXwKKysqKiBHQyBvYmplY3RzICAgICAgICAgfDEuLjF8aXR5cGV8LS0tLS0tLUdDUmVm LS0tLS0tLS18CisrKiogbGlnaHR1c2VyZGF0YSAgICAgIHwxLi4xfGl0eXBlfHNlZ3wtLS0tLS1v ZnMtLS0tLS0tfAorICoqIGludCAoTEpfRFVBTE5VTSkgICB8MS4uMXxpdHlwZXwwLi4wfC0tLS0t aW50LS0tLS0tLXwKKyAqKiBudW1iZXIgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLWRvdWJsZS0t LS0tLS0tLS0tLS0KKyAqKgorQEAgLTI4NSw2ICsyODYsMTIgQEAKKyAjZGVmaW5lIExKX0dDVk1B U0sJCSgoKHVpbnQ2NF90KTEgPDwgNDcpIC0gMSkKKyAjZW5kaWYKKyAKKysjaWYgTEpfNjQKKysv KiBUbyBzdGF5IHdpdGhpbiA0NyBiaXRzLCBsaWdodHVzZXJkYXRhIGlzIHNlZ21lbnRlZC4gKi8K KysjZGVmaW5lIExKX0xJR0hUVURfQklUU19TRUcJOAorKyNkZWZpbmUgTEpfTElHSFRVRF9CSVRT X0xPCSg0NyAtIExKX0xJR0hUVURfQklUU19TRUcpCisrI2VuZGlmCisrCisgLyogLS0gU3RyaW5n IG9iamVjdCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tICovCisgCisgLyogU3RyaW5nIG9iamVjdCBoZWFkZXIuIFN0cmluZyBwYXlsb2FkIGZv bGxvd3MuICovCitAQCAtNTc2LDcgKzU4MywxMSBAQAorICAgdWludDhfdCBjdXJyZW50d2hpdGU7 CS8qIEN1cnJlbnQgd2hpdGUgY29sb3IuICovCisgICB1aW50OF90IHN0YXRlOwkvKiBHQyBzdGF0 ZS4gKi8KKyAgIHVpbnQ4X3Qgbm9jZGF0YWZpbjsJLyogTm8gY2RhdGEgZmluYWxpemVyIGNhbGxl ZC4gKi8KKy0gIHVpbnQ4X3QgdW51c2VkMjsKKysjaWYgTEpfNjQKKysgIHVpbnQ4X3QgbGlnaHR1 ZG51bTsJLyogTnVtYmVyIG9mIGxpZ2h0dXNlcmRhdGEgc2VnbWVudHMgLSAxLiAqLworKyNlbHNl CisrICB1aW50OF90IHVudXNlZDE7CisrI2VuZGlmCisgICBNU2l6ZSBzd2VlcHN0cjsJLyogU3dl ZXAgcG9zaXRpb24gaW4gc3RyaW5nIHRhYmxlLiAqLworICAgR0NSZWYgcm9vdDsJCS8qIExpc3Qg b2YgYWxsIGNvbGxlY3RhYmxlIG9iamVjdHMuICovCisgICBNUmVmIHN3ZWVwOwkJLyogU3dlZXAg cG9zaXRpb24gaW4gcm9vdCBsaXN0LiAqLworQEAgLTU4OCw2ICs1OTksOSBAQAorICAgR0NTaXpl IGVzdGltYXRlOwkvKiBFc3RpbWF0ZSBvZiBtZW1vcnkgYWN0dWFsbHkgaW4gdXNlLiAqLworICAg TVNpemUgc3RlcG11bDsJLyogSW5jcmVtZW50YWwgR0Mgc3RlcCBncmFudWxhcml0eS4gKi8KKyAg IE1TaXplIHBhdXNlOwkJLyogUGF1c2UgYmV0d2VlbiBzdWNjZXNzaXZlIEdDIGN5Y2xlcy4gKi8K KysjaWYgTEpfNjQKKysgIE1SZWYgbGlnaHR1ZHNlZzsJLyogVXBwZXIgYml0cyBvZiBsaWdodHVz ZXJkYXRhIHNlZ21lbnRzLiAqLworKyNlbmRpZgorIH0gR0NTdGF0ZTsKKyAKKyAvKiBHbG9iYWwg c3RhdGUsIHNoYXJlZCBieSBhbGwgdGhyZWFkcyBvZiBhIEx1YSB1bml2ZXJzZS4gKi8KK0BAIC03 OTUsMTAgKzgwOSwyMyBAQAorICNlbmRpZgorICNkZWZpbmUgYm9vbFYobykJY2hlY2tfZXhwKHR2 aXNib29sKG8pLCAoTEpfVEZBTFNFIC0gaXR5cGUobykpKQorICNpZiBMSl82NAorLSNkZWZpbmUg bGlnaHR1ZFYobykgXAorLSAgY2hlY2tfZXhwKHR2aXNsaWdodHVkKG8pLCAodm9pZCAqKSgobykt PnU2NCAmIFU2NHgoMDAwMDdmZmYsZmZmZmZmZmYpKSkKKysjZGVmaW5lIGxpZ2h0dWRzZWcodSkg XAorKyAgKCgodSkgPj4gTEpfTElHSFRVRF9CSVRTX0xPKSAmICgoMSA8PCBMSl9MSUdIVFVEX0JJ VFNfU0VHKS0xKSkKKysjZGVmaW5lIGxpZ2h0dWRsbyh1KSBcCisrICAoKHUpICYgKCgodWludDY0 X3QpMSA8PCBMSl9MSUdIVFVEX0JJVFNfTE8pIC0gMSkpCisrI2RlZmluZSBsaWdodHVkdXAocCkg XAorKyAgKCh1aW50MzJfdCkoKChwKSA+PiBMSl9MSUdIVFVEX0JJVFNfTE8pIDw8IChMSl9MSUdI VFVEX0JJVFNfTE8tMzIpKSkKKytzdGF0aWMgTEpfQUlOTElORSB2b2lkICpsaWdodHVkVihnbG9i YWxfU3RhdGUgKmcsIGNUVmFsdWUgKm8pCisreworKyAgdWludDY0X3QgdSA9IG8tPnU2NDsKKysg IHVpbnQ2NF90IHNlZyA9IGxpZ2h0dWRzZWcodSk7CisrICB1aW50MzJfdCAqc2VnbWFwID0gbXJl ZihnLT5nYy5saWdodHVkc2VnLCB1aW50MzJfdCk7CisrICBsdWFfYXNzZXJ0KHR2aXNsaWdodHVk KG8pKTsKKysgIGx1YV9hc3NlcnQoc2VnIDw9IGctPmdjLmxpZ2h0dWRudW0pOworKyAgcmV0dXJu ICh2b2lkICopKCgodWludDY0X3Qpc2VnbWFwW3NlZ10gPDwgMzIpIHwgbGlnaHR1ZGxvKHUpKTsK Kyt9CisgI2Vsc2UKKy0jZGVmaW5lIGxpZ2h0dWRWKG8pCWNoZWNrX2V4cCh0dmlzbGlnaHR1ZChv KSwgZ2NyZWZwKChvKS0+Z2NyLCB2b2lkKSkKKysjZGVmaW5lIGxpZ2h0dWRWKGcsIG8pCWNoZWNr X2V4cCh0dmlzbGlnaHR1ZChvKSwgZ2NyZWZwKChvKS0+Z2NyLCB2b2lkKSkKKyAjZW5kaWYKKyAj ZGVmaW5lIGdjVihvKQkJY2hlY2tfZXhwKHR2aXNnY3YobyksIGdjdmFsKG8pKQorICNkZWZpbmUg c3RyVihvKQkJY2hlY2tfZXhwKHR2aXNzdHIobyksICZnY3ZhbChvKS0+c3RyKQorQEAgLTgyNCw3 ICs4NTEsNyBAQAorICNkZWZpbmUgc2V0cHJpVihvLCBpKQkJKHNldGl0eXBlKChvKSwgKGkpKSkK KyAjZW5kaWYKKyAKKy1zdGF0aWMgTEpfQUlOTElORSB2b2lkIHNldGxpZ2h0dWRWKFRWYWx1ZSAq bywgdm9pZCAqcCkKKytzdGF0aWMgTEpfQUlOTElORSB2b2lkIHNldHJhd2xpZ2h0dWRWKFRWYWx1 ZSAqbywgdm9pZCAqcCkKKyB7CisgI2lmIExKX0dDNjQKKyAgIG8tPnU2NCA9ICh1aW50NjRfdClw IHwgKCgodWludDY0X3QpTEpfVExJR0hUVUQpIDw8IDQ3KTsKK0BAIC04MzUsMjQgKzg2MiwxNCBA QAorICNlbmRpZgorIH0KKyAKKy0jaWYgTEpfNjQKKy0jZGVmaW5lIGNoZWNrbGlnaHR1ZHB0cihM LCBwKSBcCistICAoKCh1aW50NjRfdCkocCkgPj4gNDcpID8gKGxqX2Vycl9tc2coTCwgTEpfRVJS X0JBRExVKSwgTlVMTCkgOiAocCkpCistI2Vsc2UKKy0jZGVmaW5lIGNoZWNrbGlnaHR1ZHB0cihM LCBwKQkocCkKKy0jZW5kaWYKKy0KKy0jaWYgTEpfRlIyCisrI2lmIExKX0ZSMiB8fCBMSl8zMgor ICNkZWZpbmUgY29udHB0cihmKQkJKCh2b2lkICopKGYpKQorICNkZWZpbmUgc2V0Y29udChvLCBm KQkJKChvKS0+dTY0ID0gKHVpbnQ2NF90KSh1aW50cHRyX3QpY29udHB0cihmKSkKKy0jZWxpZiBM Sl82NAorKyNlbHNlCisgI2RlZmluZSBjb250cHRyKGYpIFwKKyAgICgodm9pZCAqKSh1aW50cHRy X3QpKHVpbnQzMl90KSgoaW50cHRyX3QpKGYpIC0gKGludHB0cl90KWxqX3ZtX2FzbV9iZWdpbikp CisgI2RlZmluZSBzZXRjb250KG8sIGYpIFwKKyAgICgobyktPnU2NCA9ICh1aW50NjRfdCkodm9p ZCAqKShmKSAtICh1aW50NjRfdClsal92bV9hc21fYmVnaW4pCistI2Vsc2UKKy0jZGVmaW5lIGNv bnRwdHIoZikJCSgodm9pZCAqKShmKSkKKy0jZGVmaW5lIHNldGNvbnQobywgZikJCXNldGxpZ2h0 dWRWKChvKSwgY29udHB0cihmKSkKKyAjZW5kaWYKKyAKKyAjZGVmaW5lIHR2Y2hlY2tsaXZlKEws IG8pIFwKK0BAIC05NzgsNiArOTk1LDYgQEAKKyAKKyAvKiBDb21wYXJlIHR3byBvYmplY3RzIHdp dGhvdXQgY2FsbGluZyBtZXRhbWV0aG9kcy4gKi8KKyBMSl9GVU5DIGludCBMSl9GQVNUQ0FMTCBs al9vYmpfZXF1YWwoY1RWYWx1ZSAqbzEsIGNUVmFsdWUgKm8yKTsKKy1MSl9GVU5DIGNvbnN0IHZv aWQgKiBMSl9GQVNUQ0FMTCBsal9vYmpfcHRyKGNUVmFsdWUgKm8pOworK0xKX0ZVTkMgY29uc3Qg dm9pZCAqIExKX0ZBU1RDQUxMIGxqX29ial9wdHIoZ2xvYmFsX1N0YXRlICpnLCBjVFZhbHVlICpv KTsKKyAKKyAjZW5kaWYKK0luZGV4OiBsdWFqaXQvc3JjL2xqX3NuYXAuYworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGx1YWppdC5vcmlnL3NyYy9sal9zbmFwLmMKKysrKyBsdWFqaXQvc3JjL2xqX3NuYXAuYwor QEAgLTYyNiw3ICs2MjYsMTIgQEAKKyAgIElSVHlwZTEgdCA9IGlyLT50OworICAgUmVnU1AgcnMg PSBpci0+cHJldjsKKyAgIGlmIChpcnJlZl9pc2socmVmKSkgeyAgLyogUmVzdG9yZSBjb25zdGFu dCBzbG90LiAqLworLSAgICBsal9pcl9rdmFsdWUoSi0+TCwgbywgaXIpOworKyAgICBpZiAoaXIt Pm8gPT0gSVJfS1BUUikgeworKyAgICAgIG8tPnU2NCA9ICh1aW50NjRfdCkodWludHB0cl90KWly X2twdHIoaXIpOworKyAgICB9IGVsc2UgeworKyAgICAgIGx1YV9hc3NlcnQoIShpci0+byA9PSBJ Ul9LS1BUUiB8fCBpci0+byA9PSBJUl9LTlVMTCkpOworKyAgICAgIGxqX2lyX2t2YWx1ZShKLT5M LCBvLCBpcik7CisrICAgIH0KKyAgICAgcmV0dXJuOworICAgfQorICAgaWYgKExKX1VOTElLRUxZ KGJsb29tdGVzdChyZmlsdCwgcmVmKSkpCitJbmRleDogbHVhaml0L3NyYy9sal9zdGF0ZS5jCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gbHVhaml0Lm9yaWcvc3JjL2xqX3N0YXRlLmMKKysrKyBsdWFqaXQvc3Jj L2xqX3N0YXRlLmMKK0BAIC0xNzEsNiArMTcxLDEyIEBACisgICBsal9tZW1fZnJlZXZlYyhnLCBn LT5zdHJoYXNoLCBnLT5zdHJtYXNrKzEsIEdDUmVmKTsKKyAgIGxqX2J1Zl9mcmVlKGcsICZnLT50 bXBidWYpOworICAgbGpfbWVtX2ZyZWV2ZWMoZywgdHZyZWYoTC0+c3RhY2spLCBMLT5zdGFja3Np emUsIFRWYWx1ZSk7CisrI2lmIExKXzY0CisrICBpZiAobXJlZihnLT5nYy5saWdodHVkc2VnLCB1 aW50MzJfdCkpIHsKKysgICAgTVNpemUgc2VnbnVtID0gZy0+Z2MubGlnaHR1ZG51bSA/ICgyIDw8 IGxqX2ZscyhnLT5nYy5saWdodHVkbnVtKSkgOiAyOworKyAgICBsal9tZW1fZnJlZXZlYyhnLCBt cmVmKGctPmdjLmxpZ2h0dWRzZWcsIHVpbnQzMl90KSwgc2VnbnVtLCB1aW50MzJfdCk7CisrICB9 CisrI2VuZGlmCisgICBsdWFfYXNzZXJ0KGctPmdjLnRvdGFsID09IHNpemVvZihHR19TdGF0ZSkp OworICNpZm5kZWYgTFVBSklUX1VTRV9TWVNNQUxMT0MKKyAgIGlmIChnLT5hbGxvY2YgPT0gbGpf YWxsb2NfZikKK0luZGV4OiBsdWFqaXQvc3JjL2xqX3N0cmZtdC5jCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g bHVhaml0Lm9yaWcvc3JjL2xqX3N0cmZtdC5jCisrKysgbHVhaml0L3NyYy9sal9zdHJmbXQuYwor QEAgLTM5Myw3ICszOTMsNyBAQAorICAgICAgIHAgPSBsal9idWZfd21lbShwLCAiYnVpbHRpbiMi LCA4KTsKKyAgICAgICBwID0gbGpfc3RyZm10X3dpbnQocCwgZnVuY1YobyktPmMuZmZpZCk7Cisg ICAgIH0gZWxzZSB7CistICAgICAgcCA9IGxqX3N0cmZtdF93cHRyKHAsIGxqX29ial9wdHIobykp OworKyAgICAgIHAgPSBsal9zdHJmbXRfd3B0cihwLCBsal9vYmpfcHRyKEcoTCksIG8pKTsKKyAg ICAgfQorICAgICByZXR1cm4gbGpfc3RyX25ldyhMLCBidWYsIChzaXplX3QpKHAgLSBidWYpKTsK KyAgIH0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvTHVhSklUL3RlbXBsYXRlIGIvc3JjcGtncy9MdWFK SVQvdGVtcGxhdGUKaW5kZXggNWI4YWIxYmVkYTExLi43NzhhOGRmMGU1OTMgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvTHVhSklUL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvTHVhSklUL3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnTHVhSklUJwogcGtnbmFtZT1MdWFK SVQKIHZlcnNpb249Mi4xLjBiZXRhMwotcmV2aXNpb249MQorcmV2aXNpb249MgogX3NvX3ZlcnNp b249Mi4xLjAKIF9kaXN0X3ZlcnNpb249JHtfc29fdmVyc2lvbn0tYmV0YTMKIHdya3NyYz0iJHtw a2duYW1lfS0ke19kaXN0X3ZlcnNpb259Igo= --===============6659778931403398187==--