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 7967 invoked from network); 25 Sep 2021 11:29:27 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 25 Sep 2021 11:29:27 -0000 Content-Type: multipart/mixed; boundary="===============2935822710345207791==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=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 In-Reply-To: References: Date: Sat, 25 Sep 2021 13:29:27 +0200 List-Id: Message-ID: <20210925112927.2c-LoCwte96e4l2UJejonk_wNKzWP993qzMDJHIB9jY@z> GitHub notification mails are now in MIME to allow UTF8. --===============2935822710345207791== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgSm9obm55bmF0b3IgYWdhaW5zdCBt YXN0ZXIgb24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29t L0pvaG5ueW5hdG9yL3ZvaWQtcGFja2FnZXMgbHVhaml0LWFhcmNoNjQKaHR0cHM6Ly9naXRodWIu Y29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzMzMDk4CgpMdWFKSVQ6IGltcG9ydCB1 cHN0cmVhbSBwYXRjaCB0byBzdXBwb3J0IDY0Yml0IGxpZ2h0dXNlcmRhdGEgb24gYWFyY2g2NAp3 aXRob3V0IHRoaXMgZS5nLiBsdWFqaXQganVzdCBjcmFzaGVzIG9uIG5hdGl2ZSBuZW92aW0gYnVp bGRzIGFuZCB1bmRlcgpjZXJ0YWluIGNvbmRpdGlvbnMgYWxzbyBkdXJpbmcgcnVudGltZSBlLmcu IHdpdGggbnZpbS1jbXAgKyBudmltLWNtcC1sc3AKCjwhLS0gTWFyayBpdGVtcyB3aXRoIFt4XSB3 aGVyZSBhcHBsaWNhYmxlIC0tPgoKIyMjIyBHZW5lcmFsCi0gWyBdIFRoaXMgaXMgYSBuZXcgcGFj a2FnZSBhbmQgaXQgY29uZm9ybXMgdG8gdGhlIFtxdWFsaXR5IHJlcXVpcmVtZW50c10oaHR0cHM6 Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9ibG9iL21hc3Rlci9NYW51YWwu bWQjcXVhbGl0eS1yZXF1aXJlbWVudHMpCgojIyMjIEhhdmUgdGhlIHJlc3VsdHMgb2YgdGhlIHBy b3Bvc2VkIGNoYW5nZXMgYmVlbiB0ZXN0ZWQ/Ci0gWyBdIEkgdXNlIHRoZSBwYWNrYWdlcyBhZmZl Y3RlZCBieSB0aGUgcHJvcG9zZWQgY2hhbmdlcyBvbiBhIHJlZ3VsYXIgYmFzaXMgYW5kIGNvbmZp cm0gdGhpcyBQUiB3b3JrcyBmb3IgbWUKLSBbIF0gSSBnZW5lcmFsbHkgZG9uJ3QgdXNlIHRoZSBh ZmZlY3RlZCBwYWNrYWdlcyBidXQgYnJpZWZseSB0ZXN0ZWQgdGhpcyBQUgoKPCEtLQpJZiBHaXRI dWIgQ0kgY2Fubm90IGJlIHVzZWQgdG8gdmFsaWRhdGUgdGhlIGJ1aWxkIHJlc3VsdCAoZm9yIGV4 YW1wbGUsIGlmIHRoZQpidWlsZCBpcyBsaWtlbHkgdG8gdGFrZSBzZXZlcmFsIGhvdXJzKSwgbWFr ZSBzdXJlIHRvCltza2lwIENJXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBh Y2thZ2VzL2Jsb2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZCNjb250aW51b3VzLWludGVncmF0aW9u KS4KV2hlbiBza2lwcGluZyBDSSwgdW5jb21tZW50IGFuZCBmaWxsIG91dCB0aGUgZm9sbG93aW5n IHNlY3Rpb24uCk5vdGU6IGZvciBidWlsZHMgdGhhdCBhcmUgbGlrZWx5IHRvIGNvbXBsZXRlIGlu IGxlc3MgdGhhbiAyIGhvdXJzLCBpdCBpcyBub3QKYWNjZXB0YWJsZSB0byBza2lwIENJLgotLT4K PCEtLSAKIyMjIyBEb2VzIGl0IGJ1aWxkIGFuZCBydW4gc3VjY2Vzc2Z1bGx5PyAKKFBsZWFzZSBj aG9vc2UgYXQgbGVhc3Qgb25lIG5hdGl2ZSBidWlsZCBhbmQsIGlmIHN1cHBvcnRlZCwgYXQgbGVh c3Qgb25lIGNyb3NzIGJ1aWxkLiBNb3JlIGFyZSBiZXR0ZXIuKQotIFsgXSBJIGJ1aWx0IHRoaXMg UFIgbG9jYWxseSBmb3IgbXkgbmF0aXZlIGFyY2hpdGVjdHVyZSwgKEFSQ0gtTElCQykKLSBbIF0g SSBidWlsdCB0aGlzIFBSIGxvY2FsbHkgZm9yIHRoZXNlIGFyY2hpdGVjdHVyZXMgKGlmIHN1cHBv cnRlZC4gbWFyayBjcm9zc2J1aWxkcyk6CiAgLSBbIF0gYWFyY2g2NC1tdXNsCiAgLSBbIF0gYXJt djdsCiAgLSBbIF0gYXJtdjZsLW11c2wKLS0+CgoKQSBwYXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzMzMDk4LnBhdGNoIGlzIGF0 dGFjaGVk --===============2935822710345207791== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-luajit-aarch64-33098.patch" RnJvbSA0Y2M1ODUzYzI5NDk1YTE3YjBhOTQwOTMzNTg2MTdmZWRhMjA5MjYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxtZUBqb2hubnluYXRvci5kZXY+CkRhdGU6IFNhdCwg MjUgU2VwIDIwMjEgMTI6MTI6MjcgKzAyMDAKU3ViamVjdDogW1BBVENIXSBMdWFKSVQ6IGltcG9y dCB1cHN0cmVhbSBwYXRjaGVzIHRvIGZpeCBjcmFzaGVzIG9uIGFhcmNoNjQKCndpdGhvdXQgdGhp cyBsdWFqaXQganVzdCBjcmFzaGVzIG9uIGUuZy4gbmF0aXZlIG5lb3ZpbSBidWlsZHMgYW5kIHVu ZGVyCmNlcnRhaW4gY29uZGl0aW9ucyBhbHNvIGR1cmluZyBydW5uaW5nIG5lb3ZpbSBlLmcuIHdp dGggbnZpbS1jbXAgKyBudmltLWNtcC1sc3AKLS0tCiAuLi4vYWFyY2g2NC1GaXgtZXhpdC1zdHVi LXBhdGNoaW5nLnBhdGNoICAgICAgfCAyMzEgKysrKysrKwogLi4uMWFiZWM1NDJlNmY5ODUxZmYy MzY4ZTdmMTk2YjYzODJhNDRjLnBhdGNoIHwgNTYyICsrKysrKysrKysrKysrKysrKwogc3JjcGtn cy9MdWFKSVQvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiAzIGZpbGVz IGNoYW5nZWQsIDc5NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9hYXJjaDY0LUZpeC1leGl0LXN0dWItcGF0Y2hp bmcucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL0x1YUpJVC9wYXRjaGVzL2U5YWYx YWJlYzU0MmU2Zjk4NTFmZjIzNjhlN2YxOTZiNjM4MmE0NGMucGF0Y2gKCmRpZmYgLS1naXQgYS9z cmNwa2dzL0x1YUpJVC9wYXRjaGVzL2FhcmNoNjQtRml4LWV4aXQtc3R1Yi1wYXRjaGluZy5wYXRj aCBiL3NyY3BrZ3MvTHVhSklUL3BhdGNoZXMvYWFyY2g2NC1GaXgtZXhpdC1zdHViLXBhdGNoaW5n LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDg3YTFjZDFj YTc4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9hYXJjaDY0LUZp eC1leGl0LXN0dWItcGF0Y2hpbmcucGF0Y2gKQEAgLTAsMCArMSwyMzEgQEAKK2NvbW1pdCA5ZGEw NjUzNTA5MmQ2ZDlkZWM0NDI2NDFhMjZjNjRiY2U1NTc0MzIyCitBdXRob3I6IE1pa2UgUGFsbCA8 bWlrZT4KK0RhdGU6ICAgU3VuIEp1biAyNCAxNDowODo1OSAyMDE4ICswMjAwCisKKyAgICBBUk02 NDogRml4IGV4aXQgc3R1YiBwYXRjaGluZy4KKyAgICAKKyAgICBDb250cmlidXRlZCBieSBKYXZp ZXIgR3VlcnJhIEdpcmFsZGV6LgorCitkaWZmIC0tZ2l0IGEvc3JjL2xqX2FzbV9hcm02NC5oIGIv c3JjL2xqX2FzbV9hcm02NC5oCitpbmRleCBjYmIxODZkMy4uYmFhZmEyMWEgMTAwNjQ0CistLS0g YS9zcmMvbGpfYXNtX2FybTY0LmgKKysrKyBiL3NyYy9sal9hc21fYXJtNjQuaAorQEAgLTU2LDEx ICs1NiwxMSBAQCBzdGF0aWMgdm9pZCBhc21fZXhpdHN0dWJfc2V0dXAoQVNNU3RhdGUgKmFzLCBF eGl0Tm8gbmV4aXRzKQorICAgICBhc21fbWNsaW1pdChhcyk7CisgICAvKiAxOiBzdHIgbHIsW3Nw XTsgYmwgLT52bV9leGl0X2hhbmRsZXI7IG1vdnogdzAsdHJhY2VubzsgYmwgPDE7IGJsIDwxOyAu Li4gKi8KKyAgIGZvciAoaSA9IG5leGl0cy0xOyAoaW50MzJfdClpID49IDA7IGktLSkKKy0gICAg Ki0tbXhwID0gQTY0SV9MRShBNjRJX0JMfCgoLTMtaSkmMHgwM2ZmZmZmZnUpKTsKKy0gICotLW14 cCA9IEE2NElfTEUoQTY0SV9NT1Zad3xBNjRGX1UxNihhcy0+VC0+dHJhY2VubykpOworKyAgICAq LS1teHAgPSBBNjRJX0xFKEE2NElfQkwgfCBBNjRGX1MyNigtMy1pKSk7CisrICAqLS1teHAgPSBB NjRJX0xFKEE2NElfTU9WWncgfCBBNjRGX1UxNihhcy0+VC0+dHJhY2VubykpOworICAgbXhwLS07 CistICAqbXhwID0gQTY0SV9MRShBNjRJX0JMfCgoKE1Db2RlICopKHZvaWQgKilsal92bV9leGl0 X2hhbmRsZXItbXhwKSYweDAzZmZmZmZmdSkpOworLSAgKi0tbXhwID0gQTY0SV9MRShBNjRJX1NU Unh8QTY0Rl9EKFJJRF9MUil8QTY0Rl9OKFJJRF9TUCkpOworKyAgKm14cCA9IEE2NElfTEUoQTY0 SV9CTCB8IEE2NEZfUzI2KCgoTUNvZGUgKikodm9pZCAqKWxqX3ZtX2V4aXRfaGFuZGxlci1teHAp KSk7CisrICAqLS1teHAgPSBBNjRJX0xFKEE2NElfU1RSeCB8IEE2NEZfRChSSURfTFIpIHwgQTY0 Rl9OKFJJRF9TUCkpOworICAgYXMtPm1jdG9wID0gbXhwOworIH0KKyAKK0BAIC03Nyw3ICs3Nyw3 IEBAIHN0YXRpYyB2b2lkIGFzbV9ndWFyZGNjKEFTTVN0YXRlICphcywgQTY0Q0MgY2MpCisgICBN Q29kZSAqcCA9IGFzLT5tY3A7CisgICBpZiAoTEpfVU5MSUtFTFkocCA9PSBhcy0+aW52bWNwKSkg eworICAgICBhcy0+bG9vcGludiA9IDE7CistICAgICpwID0gQTY0SV9CIHwgKCh0YXJnZXQtcCkg JiAweDAzZmZmZmZmdSk7CisrICAgICpwID0gQTY0SV9CIHwgQTY0Rl9TMjYodGFyZ2V0LXApOwor ICAgICBlbWl0X2NvbmRfYnJhbmNoKGFzLCBjY14xLCBwLTEpOworICAgICByZXR1cm47CisgICB9 CitAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgdm9pZCBhc21fZ3VhcmR0bmIoQVNNU3RhdGUgKmFz LCBBNjRJbnMgYWksIFJlZyByLCB1aW50MzJfdCBiaXQpCisgICBNQ29kZSAqcCA9IGFzLT5tY3A7 CisgICBpZiAoTEpfVU5MSUtFTFkocCA9PSBhcy0+aW52bWNwKSkgeworICAgICBhcy0+bG9vcGlu diA9IDE7CistICAgICpwID0gQTY0SV9CIHwgKCh0YXJnZXQtcCkgJiAweDAzZmZmZmZmdSk7Cisr ICAgICpwID0gQTY0SV9CIHwgQTY0Rl9TMjYodGFyZ2V0LXApOworICAgICBlbWl0X3RuYihhcywg YWleMHgwMTAwMDAwMHUsIHIsIGJpdCwgcC0xKTsKKyAgICAgcmV0dXJuOworICAgfQorQEAgLTEw NSw3ICsxMDUsNyBAQCBzdGF0aWMgdm9pZCBhc21fZ3VhcmRjbmIoQVNNU3RhdGUgKmFzLCBBNjRJ bnMgYWksIFJlZyByKQorICAgTUNvZGUgKnAgPSBhcy0+bWNwOworICAgaWYgKExKX1VOTElLRUxZ KHAgPT0gYXMtPmludm1jcCkpIHsKKyAgICAgYXMtPmxvb3BpbnYgPSAxOworLSAgICAqcCA9IEE2 NElfQiB8ICgodGFyZ2V0LXApICYgMHgwM2ZmZmZmZnUpOworKyAgICAqcCA9IEE2NElfQiB8IEE2 NEZfUzI2KHRhcmdldC1wKTsKKyAgICAgZW1pdF9jbmIoYXMsIGFpXjB4MDEwMDAwMDB1LCByLCBw LTEpOworICAgICByZXR1cm47CisgICB9CitAQCAtMTg1MCw3ICsxODUwLDcgQEAgc3RhdGljIHZv aWQgYXNtX2xvb3BfZml4dXAoQVNNU3RhdGUgKmFzKQorICAgICBwWy0yXSB8PSAoKHVpbnQzMl90 KWRlbHRhICYgbWFzaykgPDwgNTsKKyAgIH0gZWxzZSB7CisgICAgIHB0cmRpZmZfdCBkZWx0YSA9 IHRhcmdldCAtIChwIC0gMSk7CistICAgIHBbLTFdID0gQTY0SV9CIHwgKCh1aW50MzJfdCkoZGVs dGEpICYgMHgwM2ZmZmZmZnUpOworKyAgICBwWy0xXSA9IEE2NElfQiB8IEE2NEZfUzI2KGRlbHRh KTsKKyAgIH0KKyB9CisgCitAQCAtMTkxOSw3ICsxOTE5LDcgQEAgc3RhdGljIHZvaWQgYXNtX3Rh aWxfZml4dXAoQVNNU3RhdGUgKmFzLCBUcmFjZU5vIGxuaykKKyAgIH0KKyAgIC8qIFBhdGNoIGV4 aXQgYnJhbmNoLiAqLworICAgdGFyZ2V0ID0gbG5rID8gdHJhY2VyZWYoYXMtPkosIGxuayktPm1j b2RlIDogKE1Db2RlICopbGpfdm1fZXhpdF9pbnRlcnA7CistICBwWy0xXSA9IEE2NElfQiB8ICgo KHRhcmdldC1wKSsxKSYweDAzZmZmZmZmdSk7CisrICBwWy0xXSA9IEE2NElfQiB8IEE2NEZfUzI2 KCh0YXJnZXQtcCkrMSk7CisgfQorIAorIC8qIFByZXBhcmUgdGFpbCBvZiBjb2RlLiAqLworQEAg LTE5ODIsNDAgKzE5ODIsNTAgQEAgdm9pZCBsal9hc21fcGF0Y2hleGl0KGppdF9TdGF0ZSAqSiwg R0N0cmFjZSAqVCwgRXhpdE5vIGV4aXRubywgTUNvZGUgKnRhcmdldCkKKyB7CisgICBNQ29kZSAq cCA9IFQtPm1jb2RlOworICAgTUNvZGUgKnBlID0gKE1Db2RlICopKChjaGFyICopcCArIFQtPnN6 bWNvZGUpOworLSAgTUNvZGUgKmNzdGFydCA9IE5VTEwsICpjZW5kID0gcDsKKysgIE1Db2RlICpj c3RhcnQgPSBOVUxMOworICAgTUNvZGUgKm1jYXJlYSA9IGxqX21jb2RlX3BhdGNoKEosIHAsIDAp OworICAgTUNvZGUgKnB4ID0gZXhpdHN0dWJfdHJhY2VfYWRkcihULCBleGl0bm8pOworKyAgLyog Tm90ZTogdGhpcyBhc3N1bWVzIGEgdHJhY2UgZXhpdCBpcyBvbmx5IGV2ZXIgcGF0Y2hlZCBvbmNl LiAqLworICAgZm9yICg7IHAgPCBwZTsgcCsrKSB7CisgICAgIC8qIExvb2sgZm9yIGV4aXRzdHVi IGJyYW5jaCwgcmVwbGFjZSB3aXRoIGJyYW5jaCB0byB0YXJnZXQuICovCisrICAgIHB0cmRpZmZf dCBkZWx0YSA9IHRhcmdldCAtIHA7CisgICAgIE1Db2RlIGlucyA9IEE2NElfTEUoKnApOworICAg ICBpZiAoKGlucyAmIDB4ZmYwMDAwMDB1KSA9PSAweDU0MDAwMDAwdSAmJgorIAkoKGlucyBeICgo cHgtcCk8PDUpKSAmIDB4MDBmZmZmZTB1KSA9PSAwKSB7CistICAgICAgLyogUGF0Y2ggYmNjIGV4 aXRzdHViLiAqLworLSAgICAgICpwID0gQTY0SV9MRSgoaW5zICYgMHhmZjAwMDAxZnUpIHwgKCgo dGFyZ2V0LXApPDw1KSAmIDB4MDBmZmZmZTB1KSk7CistICAgICAgY2VuZCA9IHArMTsKKy0gICAg ICBpZiAoIWNzdGFydCkgY3N0YXJ0ID0gcDsKKysgICAgICAvKiBQYXRjaCBiY2MsIGlmIHdpdGhp biByYW5nZS4gKi8KKysgICAgICBpZiAoQTY0Rl9TX09LKGRlbHRhLCAxOSkpIHsKKysJKnAgPSBB NjRJX0xFKChpbnMgJiAweGZmMDAwMDFmdSkgfCBBNjRGX1MxOShkZWx0YSkpOworKwlpZiAoIWNz dGFydCkgY3N0YXJ0ID0gcDsKKysgICAgICB9CisgICAgIH0gZWxzZSBpZiAoKGlucyAmIDB4ZmMw MDAwMDB1KSA9PSAweDE0MDAwMDAwdSAmJgorIAkgICAgICAgKChpbnMgXiAocHgtcCkpICYgMHgw M2ZmZmZmZnUpID09IDApIHsKKy0gICAgICAvKiBQYXRjaCBiIGV4aXRzdHViLiAqLworLSAgICAg ICpwID0gQTY0SV9MRSgoaW5zICYgMHhmYzAwMDAwMHUpIHwgKCh0YXJnZXQtcCkgJiAweDAzZmZm ZmZmdSkpOworLSAgICAgIGNlbmQgPSBwKzE7CisrICAgICAgLyogUGF0Y2ggYi4gKi8KKysgICAg ICBsdWFfYXNzZXJ0KEE2NEZfU19PSyhkZWx0YSwgMjYpKTsKKysgICAgICAqcCA9IEE2NElfTEUo KGlucyAmIDB4ZmMwMDAwMDB1KSB8IEE2NEZfUzI2KGRlbHRhKSk7CisgICAgICAgaWYgKCFjc3Rh cnQpIGNzdGFydCA9IHA7CisgICAgIH0gZWxzZSBpZiAoKGlucyAmIDB4N2UwMDAwMDB1KSA9PSAw eDM0MDAwMDAwdSAmJgorIAkgICAgICAgKChpbnMgXiAoKHB4LXApPDw1KSkgJiAweDAwZmZmZmUw dSkgPT0gMCkgeworLSAgICAgIC8qIFBhdGNoIGNiei9jYm56IGV4aXRzdHViLiAqLworLSAgICAg ICpwID0gQTY0SV9MRSgoaW5zICYgMHhmZjAwMDAxZikgfCAoKCh0YXJnZXQtcCk8PDUpICYgMHgw MGZmZmZlMHUpKTsKKy0gICAgICBjZW5kID0gcCsxOworLSAgICAgIGlmICghY3N0YXJ0KSBjc3Rh cnQgPSBwOworKyAgICAgIC8qIFBhdGNoIGNiei9jYm56LCBpZiB3aXRoaW4gcmFuZ2UuICovCisr ICAgICAgaWYgKEE2NEZfU19PSyhkZWx0YSwgMTkpKSB7CisrCSpwID0gQTY0SV9MRSgoaW5zICYg MHhmZjAwMDAxZnUpIHwgQTY0Rl9TMTkoZGVsdGEpKTsKKysJaWYgKCFjc3RhcnQpIGNzdGFydCA9 IHA7CisrICAgICAgfQorICAgICB9IGVsc2UgaWYgKChpbnMgJiAweDdlMDAwMDAwdSkgPT0gMHgz NjAwMDAwMHUgJiYKKyAJICAgICAgICgoaW5zIF4gKChweC1wKTw8NSkpICYgMHgwMDA3ZmZlMHUp ID09IDApIHsKKy0gICAgICAvKiBQYXRjaCB0YnovdGJueiBleGl0c3R1Yi4gKi8KKy0gICAgICAq cCA9IEE2NElfTEUoKGlucyAmIDB4ZmZmODAwMWZ1KSB8ICgoKHRhcmdldC1wKTw8NSkgJiAweDAw MDdmZmUwdSkpOworLSAgICAgIGNlbmQgPSBwKzE7CistICAgICAgaWYgKCFjc3RhcnQpIGNzdGFy dCA9IHA7CisrICAgICAgLyogUGF0Y2ggdGJ6L3RibnosIGlmIHdpdGhpbiByYW5nZS4gKi8KKysg ICAgICBpZiAoQTY0Rl9TX09LKGRlbHRhLCAxNCkpIHsKKysJKnAgPSBBNjRJX0xFKChpbnMgJiAw eGZmZjgwMDFmdSkgfCBBNjRGX1MxNChkZWx0YSkpOworKwlpZiAoIWNzdGFydCkgY3N0YXJ0ID0g cDsKKysgICAgICB9CisgICAgIH0KKyAgIH0KKy0gIGx1YV9hc3NlcnQoY3N0YXJ0ICE9IE5VTEwp OworLSAgbGpfbWNvZGVfc3luYyhjc3RhcnQsIGNlbmQpOworKyAgeyAgLyogQWx3YXlzIHBhdGNo IGxvbmctcmFuZ2UgYnJhbmNoIGluIGV4aXQgc3R1YiBpdHNlbGYuICovCisrICAgIHB0cmRpZmZf dCBkZWx0YSA9IHRhcmdldCAtIHB4OworKyAgICBsdWFfYXNzZXJ0KEE2NEZfU19PSyhkZWx0YSwg MjYpKTsKKysgICAgKnB4ID0gQTY0SV9CIHwgQTY0Rl9TMjYoZGVsdGEpOworKyAgICBpZiAoIWNz dGFydCkgY3N0YXJ0ID0gcHg7CisrICB9CisrICBsal9tY29kZV9zeW5jKGNzdGFydCwgcHgrMSk7 CisgICBsal9tY29kZV9wYXRjaChKLCBtY2FyZWEsIDEpOworIH0KKyAKK2RpZmYgLS1naXQgYS9z cmMvbGpfZW1pdF9hcm02NC5oIGIvc3JjL2xqX2VtaXRfYXJtNjQuaAoraW5kZXggNmRhNGM3ZDQu LjEwMDFiMWQ4IDEwMDY0NAorLS0tIGEvc3JjL2xqX2VtaXRfYXJtNjQuaAorKysrIGIvc3JjL2xq X2VtaXRfYXJtNjQuaAorQEAgLTI0MSw3ICsyNDEsNyBAQCBzdGF0aWMgdm9pZCBlbWl0X2xvYWRr KEFTTVN0YXRlICphcywgUmVnIHJkLCB1aW50NjRfdCB1NjQsIGludCBpczY0KQorICNkZWZpbmUg bWNwb2ZzKGFzLCBrKSBcCisgICAoKGludHB0cl90KSgodWludHB0cl90KShrKSAtICh1aW50cHRy X3QpKGFzLT5tY3AgLSAxKSkpCisgI2RlZmluZSBjaGVja21jcG9mcyhhcywgaykgXAorLSAgKCgo KG1jcG9mcyhhcywgayk+PjIpICsgMHgwMDA0MDAwMCkgPj4gMTkpID09IDApCisrICAoQTY0Rl9T X09LKG1jcG9mcyhhcywgayk+PjIsIDE5KSkKKyAKKyBzdGF0aWMgUmVnIHJhX2FsbG9jayhBU01T dGF0ZSAqYXMsIGludHB0cl90IGssIFJlZ1NldCBhbGxvdyk7CisgCitAQCAtMzEyLDcgKzMxMiw3 IEBAIHN0YXRpYyB2b2lkIGVtaXRfY29uZF9icmFuY2goQVNNU3RhdGUgKmFzLCBBNjRDQyBjb25k LCBNQ29kZSAqdGFyZ2V0KQorIHsKKyAgIE1Db2RlICpwID0gLS1hcy0+bWNwOworICAgcHRyZGlm Zl90IGRlbHRhID0gdGFyZ2V0IC0gcDsKKy0gIGx1YV9hc3NlcnQoKChkZWx0YSArIDB4NDAwMDAp ID4+IDE5KSA9PSAwKTsKKysgIGx1YV9hc3NlcnQoQTY0Rl9TX09LKGRlbHRhLCAxOSkpOworICAg KnAgPSBBNjRJX0JDQyB8IEE2NEZfUzE5KGRlbHRhKSB8IGNvbmQ7CisgfQorIAorQEAgLTMyMCwy NCArMzIwLDI0IEBAIHN0YXRpYyB2b2lkIGVtaXRfYnJhbmNoKEFTTVN0YXRlICphcywgQTY0SW5z IGFpLCBNQ29kZSAqdGFyZ2V0KQorIHsKKyAgIE1Db2RlICpwID0gLS1hcy0+bWNwOworICAgcHRy ZGlmZl90IGRlbHRhID0gdGFyZ2V0IC0gcDsKKy0gIGx1YV9hc3NlcnQoKChkZWx0YSArIDB4MDIw MDAwMDApID4+IDI2KSA9PSAwKTsKKy0gICpwID0gYWkgfCAoKHVpbnQzMl90KWRlbHRhICYgMHgw M2ZmZmZmZnUpOworKyAgbHVhX2Fzc2VydChBNjRGX1NfT0soZGVsdGEsIDI2KSk7CisrICAqcCA9 IGFpIHwgQTY0Rl9TMjYoZGVsdGEpOworIH0KKyAKKyBzdGF0aWMgdm9pZCBlbWl0X3RuYihBU01T dGF0ZSAqYXMsIEE2NElucyBhaSwgUmVnIHIsIHVpbnQzMl90IGJpdCwgTUNvZGUgKnRhcmdldCkK KyB7CisgICBNQ29kZSAqcCA9IC0tYXMtPm1jcDsKKyAgIHB0cmRpZmZfdCBkZWx0YSA9IHRhcmdl dCAtIHA7CistICBsdWFfYXNzZXJ0KGJpdCA8IDYzICYmICgoZGVsdGEgKyAweDIwMDApID4+IDE0 KSA9PSAwKTsKKysgIGx1YV9hc3NlcnQoYml0IDwgNjMgJiYgQTY0Rl9TX09LKGRlbHRhLCAxNCkp OworICAgaWYgKGJpdCA+IDMxKSBhaSB8PSBBNjRJX1g7CistICAqcCA9IGFpIHwgQTY0Rl9CSVQo Yml0ICYgMzEpIHwgQTY0Rl9TMTQoKHVpbnQzMl90KWRlbHRhICYgMHgzZmZmdSkgfCByOworKyAg KnAgPSBhaSB8IEE2NEZfQklUKGJpdCAmIDMxKSB8IEE2NEZfUzE0KGRlbHRhKSB8IHI7CisgfQor IAorIHN0YXRpYyB2b2lkIGVtaXRfY25iKEFTTVN0YXRlICphcywgQTY0SW5zIGFpLCBSZWcgciwg TUNvZGUgKnRhcmdldCkKKyB7CisgICBNQ29kZSAqcCA9IC0tYXMtPm1jcDsKKyAgIHB0cmRpZmZf dCBkZWx0YSA9IHRhcmdldCAtIHA7CistICBsdWFfYXNzZXJ0KCgoZGVsdGEgKyAweDQwMDAwKSA+ PiAxOSkgPT0gMCk7CisrICBsdWFfYXNzZXJ0KEE2NEZfU19PSyhkZWx0YSwgMTkpKTsKKyAgICpw ID0gYWkgfCBBNjRGX1MxOShkZWx0YSkgfCByOworIH0KKyAKK0BAIC0zNDcsOCArMzQ3LDggQEAg c3RhdGljIHZvaWQgZW1pdF9jYWxsKEFTTVN0YXRlICphcywgdm9pZCAqdGFyZ2V0KQorIHsKKyAg IE1Db2RlICpwID0gLS1hcy0+bWNwOworICAgcHRyZGlmZl90IGRlbHRhID0gKGNoYXIgKil0YXJn ZXQgLSAoY2hhciAqKXA7CistICBpZiAoKCgoZGVsdGE+PjIpICsgMHgwMjAwMDAwMCkgPj4gMjYp ID09IDApIHsKKy0gICAgKnAgPSBBNjRJX0JMIHwgKCh1aW50MzJfdCkoZGVsdGE+PjIpICYgMHgw M2ZmZmZmZnUpOworKyAgaWYgKEE2NEZfU19PSyhkZWx0YT4+MiwgMjYpKSB7CisrICAgICpwID0g QTY0SV9CTCB8IEE2NEZfUzI2KGRlbHRhPj4yKTsKKyAgIH0gZWxzZSB7ICAvKiBUYXJnZXQgb3V0 IG9mIHJhbmdlOiBuZWVkIGluZGlyZWN0IGNhbGwuIEJ1dCBkb24ndCB1c2UgUjAtUjcuICovCisg ICAgIFJlZyByID0gcmFfYWxsb2NrKGFzLCBpNjRwdHIodGFyZ2V0KSwKKyAJCSAgICAgIFJTRVRf UkFOR0UoUklEX1g4LCBSSURfTUFYX0dQUiktUlNFVF9GSVhFRCk7CitkaWZmIC0tZ2l0IGEvc3Jj L2xqX3RhcmdldF9hcm02NC5oIGIvc3JjL2xqX3RhcmdldF9hcm02NC5oCitpbmRleCA1MjAwMjNh ZS4uYTIwN2EyYmEgMTAwNjQ0CistLS0gYS9zcmMvbGpfdGFyZ2V0X2FybTY0LmgKKysrKyBiL3Ny Yy9sal90YXJnZXRfYXJtNjQuaAorQEAgLTEzMiw5ICsxMzIsOSBAQCBzdGF0aWMgTEpfQUlOTElO RSB1aW50MzJfdCAqZXhpdHN0dWJfdHJhY2VfYWRkcl8odWludDMyX3QgKnAsIHVpbnQzMl90IGV4 aXRubykKKyAjZGVmaW5lIEE2NEZfSU1NUih4KQkoKHgpIDw8IDE2KQorICNkZWZpbmUgQTY0Rl9V MTYoeCkJKCh4KSA8PCA1KQorICNkZWZpbmUgQTY0Rl9VMTIoeCkJKCh4KSA8PCAxMCkKKy0jZGVm aW5lIEE2NEZfUzI2KHgpCSh4KQorKyNkZWZpbmUgQTY0Rl9TMjYoeCkJKCgodWludDMyX3QpKHgp ICYgMHgwM2ZmZmZmZnUpKQorICNkZWZpbmUgQTY0Rl9TMTkoeCkJKCgodWludDMyX3QpKHgpICYg MHg3ZmZmZnUpIDw8IDUpCistI2RlZmluZSBBNjRGX1MxNCh4KQkoKHgpIDw8IDUpCisrI2RlZmlu ZSBBNjRGX1MxNCh4KQkoKCh1aW50MzJfdCkoeCkgJiAweDNmZmZ1KSA8PCA1KQorICNkZWZpbmUg QTY0Rl9TOSh4KQkoKHgpIDw8IDEyKQorICNkZWZpbmUgQTY0Rl9CSVQoeCkJKCh4KSA8PCAxOSkK KyAjZGVmaW5lIEE2NEZfU0goc2gsIHgpCSgoKHNoKSA8PCAyMikgfCAoKHgpIDw8IDEwKSkKK0BA IC0xNDUsNiArMTQ1LDkgQEAgc3RhdGljIExKX0FJTkxJTkUgdWludDMyX3QgKmV4aXRzdHViX3Ry YWNlX2FkZHJfKHVpbnQzMl90ICpwLCB1aW50MzJfdCBleGl0bm8pCisgI2RlZmluZSBBNjRGX0xT TDE2KHgpCSgoKHgpIC8gMTYpIDw8IDIxKQorICNkZWZpbmUgQTY0Rl9CU0goc2gpCSgoc2gpIDw8 IDEwKQorIAorKy8qIENoZWNrIGZvciB2YWxpZCBmaWVsZCByYW5nZS4gKi8KKysjZGVmaW5lIEE2 NEZfU19PSyh4LCBiKQkoKCgoeCkgKyAoMSA8PCAoYi0xKSkpID4+IChiKSkgPT0gMCkKKysKKyB0 eXBlZGVmIGVudW0gQTY0SW5zIHsKKyAgIEE2NElfUyA9IDB4MjAwMDAwMDAsCisgICBBNjRJX1gg PSAweDgwMDAwMDAwLApkaWZmIC0tZ2l0IGEvc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9lOWFmMWFi ZWM1NDJlNmY5ODUxZmYyMzY4ZTdmMTk2YjYzODJhNDRjLnBhdGNoIGIvc3JjcGtncy9MdWFKSVQv cGF0Y2hlcy9lOWFmMWFiZWM1NDJlNmY5ODUxZmYyMzY4ZTdmMTk2YjYzODJhNDRjLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTIxNzg2NmMzOTJjCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9MdWFKSVQvcGF0Y2hlcy9lOWFmMWFiZWM1NDJlNmY5ODUx ZmYyMzY4ZTdmMTk2YjYzODJhNDRjLnBhdGNoCkBAIC0wLDAgKzEsNTYyIEBACitGcm9tIGU5YWYx YWJlYzU0MmU2Zjk4NTFmZjIzNjhlN2YxOTZiNjM4MmE0NGMgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tOiBNaWtlIFBhbGwgPG1pa2U+CitEYXRlOiBXZWQsIDMwIFNlcCAyMDIwIDAxOjMx OjI3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBmdWxsLXJhbmdlIDY0 IGJpdCBsaWdodHVzZXJkYXRhLgorCistLS0KKyBkb2Mvc3RhdHVzLmh0bWwgICB8IDExIC0tLS0t LS0tLQorIHNyYy9qaXQvZHVtcC5sdWEgIHwgIDQgKysrLQorIHNyYy9saWJfZGVidWcuYyAgIHwg MTIgKysrKystLS0tLQorIHNyYy9saWJfaml0LmMgICAgIHwgMTQgKysrKysrLS0tLS0tCisgc3Jj L2xpYl9wYWNrYWdlLmMgfCAgOCArKystLS0tCisgc3JjL2xpYl9zdHJpbmcuYyAgfCAgMiArLQor IHNyYy9sal9hcGkuYyAgICAgIHwgNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t Cisgc3JjL2xqX2NjYWxsLmMgICAgfCAgMiArLQorIHNyYy9sal9jY29udi5jICAgIHwgIDIgKy0K KyBzcmMvbGpfY3JlY29yZC5jICB8ICA2ICsrLS0tCisgc3JjL2xqX2Rpc3BhdGNoLmMgfCAgMiAr LQorIHNyYy9sal9pci5jICAgICAgIHwgIDYgKysrLS0KKyBzcmMvbGpfb2JqLmMgICAgICB8ICA1 ICsrKy0tCisgc3JjL2xqX29iai5oICAgICAgfCA1NyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9sal9zbmFwLmMgICAgIHwgIDkgKysrKysrKy0K KyBzcmMvbGpfc3RhdGUuYyAgICB8ICA2ICsrKysrCisgc3JjL2xqX3N0cmZtdC5jICAgfCAgMiAr LQorIDE3IGZpbGVzIGNoYW5nZWQsIDEyMSBpbnNlcnRpb25zKCspLCA2NyBkZWxldGlvbnMoLSkK KworI2RpZmYgLS1naXQgYS9kb2Mvc3RhdHVzLmh0bWwgYi9kb2Mvc3RhdHVzLmh0bWwKKyNpbmRl eCAwYWFmZTEzYTIuLmZkMGFlOGJhZSAxMDA2NDQKKyMtLS0gYS9kb2Mvc3RhdHVzLmh0bWwKKyMr KysgYi9kb2Mvc3RhdHVzLmh0bWwKKyNAQCAtOTEsMTcgKzkxLDYgQEAgPGgyPkN1cnJlbnQgU3Rh dHVzPC9oMj4KKyMgPHR0Pmx1YV9hdHBhbmljPC90dD4gb24geDY0LiBUaGlzIGlzc3VlIHdpbGwg YmUgZml4ZWQgd2l0aCB0aGUgbmV3CisjIGdhcmJhZ2UgY29sbGVjdG9yLgorIyA8L2xpPgorIy08 bGk+CisjLUx1YUpJVCBvbiA2NCBiaXQgc3lzdGVtcyBwcm92aWRlcyBhIDxiPmxpbWl0ZWQgcmFu Z2U8L2I+IG9mIDQ3IGJpdHMgZm9yIHRoZQorIy08Yj5sZWdhY3kgPHR0PmxpZ2h0dXNlcmRhdGE8 L3R0PjwvYj4gZGF0YSB0eXBlLgorIy1UaGlzIGlzIG9ubHkgcmVsZXZhbnQgb24geDY0IHN5c3Rl bXMgd2hpY2ggdXNlIHRoZSBuZWdhdGl2ZSBwYXJ0IG9mIHRoZQorIy12aXJ0dWFsIGFkZHJlc3Mg c3BhY2UgaW4gdXNlciBtb2RlLCBlLmcuIFNvbGFyaXMveDY0LCBhbmQgb24gQVJNNjQgc3lzdGVt cworIy1jb25maWd1cmVkIHdpdGggYSA0OCBiaXQgb3IgNTIgYml0IFZBLgorIy1Bdm9pZCB1c2lu ZyA8dHQ+bGlnaHR1c2VyZGF0YTwvdHQ+IHRvIGhvbGQgcG9pbnRlcnMgdGhhdCBtYXkgcG9pbnQg b3V0c2lkZQorIy1vZiB0aGF0IHJhbmdlLCBlLmcuIHZhcmlhYmxlcyBvbiB0aGUgc3RhY2suIElu IGdlbmVyYWwsIGF2b2lkIHRoaXMgZGF0YQorIy10eXBlIGZvciBuZXcgY29kZSBhbmQgcmVwbGFj ZSBpdCB3aXRoIChtdWNoIG1vcmUgcGVyZm9ybWFudCkgRkZJIGJpbmRpbmdzLgorIy1GRkkgY2Rh dGEgcG9pbnRlcnMgY2FuIGFkZHJlc3MgdGhlIGZ1bGwgNjQgYml0IHJhbmdlLgorIy08L2xpPgor IyA8L3VsPgorIyA8YnIgY2xhc3M9ImZsdXNoIj4KKyMgPC9kaXY+CitJbmRleDogbHVhaml0L3Ny Yy9qaXQvZHVtcC5sdWEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsdWFqaXQub3JpZy9zcmMvaml0L2R1bXAu bHVhCisrKysgbHVhaml0L3NyYy9qaXQvZHVtcC5sdWEKK0BAIC0zMTUsNyArMzE1LDkgQEAKKyAg IGxvY2FsIHRuID0gdHlwZShrKQorICAgbG9jYWwgcworICAgaWYgdG4gPT0gIm51bWJlciIgdGhl bgorLSAgICBpZiBiYW5kKHNuIG9yIDAsIDB4MzAwMDApIH49IDAgdGhlbgorKyAgICBpZiB0IDwg MTIgdGhlbgorKyAgICAgIHMgPSBrID09IDAgYW5kICJOVUxMIiBvciBmb3JtYXQoIlsweCUwOHhd IiwgaykKKysgICAgZWxzZWlmIGJhbmQoc24gb3IgMCwgMHgzMDAwMCkgfj0gMCB0aGVuCisgICAg ICAgcyA9IGJhbmQoc24sIDB4MjAwMDApIH49IDAgYW5kICJjb250cGMiIG9yICJmdHN6IgorICAg ICBlbHNlaWYgayA9PSAyXjUyKzJeNTEgdGhlbgorICAgICAgIHMgPSAiYmlhcyIKK0luZGV4OiBs dWFqaXQvc3JjL2xpYl9kZWJ1Zy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbHVhaml0Lm9yaWcvc3JjL2xp Yl9kZWJ1Zy5jCisrKysgbHVhaml0L3NyYy9saWJfZGVidWcuYworQEAgLTIzMSw4ICsyMzEsOCBA QAorICAgaW50MzJfdCBuID0gbGpfbGliX2NoZWNraW50KEwsIDIpIC0gMTsKKyAgIGlmICgodWlu dDMyX3QpbiA+PSBmbi0+bC5udXB2YWx1ZXMpCisgICAgIGxqX2Vycl9hcmcoTCwgMiwgTEpfRVJS X0lEWFJORyk7CistICBzZXRsaWdodHVkVihMLT50b3AtMSwgaXNsdWFmdW5jKGZuKSA/ICh2b2lk ICopZ2NyZWYoZm4tPmwudXZwdHJbbl0pIDoKKy0JCQkJCSh2b2lkICopJmZuLT5jLnVwdmFsdWVb bl0pOworKyAgbHVhX3B1c2hsaWdodHVzZXJkYXRhKEwsIGlzbHVhZnVuYyhmbikgPyAodm9pZCAq KWdjcmVmKGZuLT5sLnV2cHRyW25dKSA6CisrCQkJCQkgICAodm9pZCAqKSZmbi0+Yy51cHZhbHVl W25dKTsKKyAgIHJldHVybiAxOworIH0KKyAKK0BAIC0yODMsMTMgKzI4MywxMyBAQAorIAorIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSAqLworIAorLSNkZWZpbmUgS0VZX0hPT0sJKCh2b2lkICopMHgzMDA0 KQorKyNkZWZpbmUgS0VZX0hPT0sJKFU2NHgoODAwMDAwMDAsMDAwMDAwMDApfCdoJykKKyAKKyBz dGF0aWMgdm9pZCBob29rZihsdWFfU3RhdGUgKkwsIGx1YV9EZWJ1ZyAqYXIpCisgeworICAgc3Rh dGljIGNvbnN0IGNoYXIgKmNvbnN0IGhvb2tuYW1lc1tdID0KKyAgICAgeyJjYWxsIiwgInJldHVy biIsICJsaW5lIiwgImNvdW50IiwgInRhaWwgcmV0dXJuIn07CistICBsdWFfcHVzaGxpZ2h0dXNl cmRhdGEoTCwgS0VZX0hPT0spOworKyAgKEwtPnRvcCsrKS0+dTY0ID0gS0VZX0hPT0s7CisgICBs dWFfcmF3Z2V0KEwsIExVQV9SRUdJU1RSWUlOREVYKTsKKyAgIGlmIChsdWFfaXNmdW5jdGlvbihM LCAtMSkpIHsKKyAgICAgbHVhX3B1c2hzdHJpbmcoTCwgaG9va25hbWVzWyhpbnQpYXItPmV2ZW50 XSk7CitAQCAtMzM0LDcgKzMzNCw3IEBACisgICAgIGNvdW50ID0gbHVhTF9vcHRpbnQoTCwgYXJn KzMsIDApOworICAgICBmdW5jID0gaG9va2Y7IG1hc2sgPSBtYWtlbWFzayhzbWFzaywgY291bnQp OworICAgfQorLSAgbHVhX3B1c2hsaWdodHVzZXJkYXRhKEwsIEtFWV9IT09LKTsKKysgIChMLT50 b3ArKyktPnU2NCA9IEtFWV9IT09LOworICAgbHVhX3B1c2h2YWx1ZShMLCBhcmcrMSk7CisgICBs dWFfcmF3c2V0KEwsIExVQV9SRUdJU1RSWUlOREVYKTsKKyAgIGx1YV9zZXRob29rKEwsIGZ1bmMs IG1hc2ssIGNvdW50KTsKK0BAIC0zNDksNyArMzQ5LDcgQEAKKyAgIGlmIChob29rICE9IE5VTEwg JiYgaG9vayAhPSBob29rZikgeyAgLyogZXh0ZXJuYWwgaG9vaz8gKi8KKyAgICAgbHVhX3B1c2hs aXRlcmFsKEwsICJleHRlcm5hbCBob29rIik7CisgICB9IGVsc2UgeworLSAgICBsdWFfcHVzaGxp Z2h0dXNlcmRhdGEoTCwgS0VZX0hPT0spOworKyAgICAoTC0+dG9wKyspLT51NjQgPSBLRVlfSE9P SzsKKyAgICAgbHVhX3Jhd2dldChMLCBMVUFfUkVHSVNUUllJTkRFWCk7ICAgLyogZ2V0IGhvb2sg Ki8KKyAgIH0KKyAgIGx1YV9wdXNoc3RyaW5nKEwsIHVubWFrZW1hc2sobWFzaywgYnVmZikpOwor SW5kZXg6IGx1YWppdC9zcmMvbGliX2ppdC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbHVhaml0Lm9yaWcv c3JjL2xpYl9qaXQuYworKysrIGx1YWppdC9zcmMvbGliX2ppdC5jCitAQCAtNTQwLDE1ICs1NDAs MTUgQEAKKyAKKyAvKiBOb3QgbG9hZGVkIGJ5IGRlZmF1bHQsIHVzZTogbG9jYWwgcHJvZmlsZSA9 IHJlcXVpcmUoImppdC5wcm9maWxlIikgKi8KKyAKKy1zdGF0aWMgY29uc3QgY2hhciBLRVlfUFJP RklMRV9USFJFQUQgPSAndCc7Cistc3RhdGljIGNvbnN0IGNoYXIgS0VZX1BST0ZJTEVfRlVOQyA9 ICdmJzsKKysjZGVmaW5lIEtFWV9QUk9GSUxFX1RIUkVBRAkoVTY0eCg4MDAwMDAwMCwwMDAwMDAw MCl8J3QnKQorKyNkZWZpbmUgS0VZX1BST0ZJTEVfRlVOQwkoVTY0eCg4MDAwMDAwMCwwMDAwMDAw MCl8J2YnKQorIAorIHN0YXRpYyB2b2lkIGppdF9wcm9maWxlX2NhbGxiYWNrKGx1YV9TdGF0ZSAq TDIsIGx1YV9TdGF0ZSAqTCwgaW50IHNhbXBsZXMsCisgCQkJCSBpbnQgdm1zdGF0ZSkKKyB7Cisg ICBUVmFsdWUga2V5OworICAgY1RWYWx1ZSAqdHY7CistICBzZXRsaWdodHVkVigma2V5LCAodm9p ZCAqKSZLRVlfUFJPRklMRV9GVU5DKTsKKysgIGtleS51NjQgPSBLRVlfUFJPRklMRV9GVU5DOwor ICAgdHYgPSBsal90YWJfZ2V0KEwsIHRhYlYocmVnaXN0cnkoTCkpLCAma2V5KTsKKyAgIGlmICh0 dmlzZnVuYyh0dikpIHsKKyAgICAgY2hhciB2bXN0ID0gKGNoYXIpdm1zdGF0ZTsKK0BAIC01NzUs OSArNTc1LDkgQEAKKyAgIGx1YV9TdGF0ZSAqTDIgPSBsdWFfbmV3dGhyZWFkKEwpOyAgLyogVGhy ZWFkIHRoYXQgcnVucyBwcm9maWxlciBjYWxsYmFjay4gKi8KKyAgIFRWYWx1ZSBrZXk7CisgICAv KiBBbmNob3IgdGhyZWFkIGFuZCBmdW5jdGlvbiBpbiByZWdpc3RyeS4gKi8KKy0gIHNldGxpZ2h0 dWRWKCZrZXksICh2b2lkICopJktFWV9QUk9GSUxFX1RIUkVBRCk7CisrICBrZXkudTY0ID0gS0VZ X1BST0ZJTEVfVEhSRUFEOworICAgc2V0dGhyZWFkVihMLCBsal90YWJfc2V0KEwsIHJlZ2lzdHJ5 LCAma2V5KSwgTDIpOworLSAgc2V0bGlnaHR1ZFYoJmtleSwgKHZvaWQgKikmS0VZX1BST0ZJTEVf RlVOQyk7CisrICBrZXkudTY0ID0gS0VZX1BST0ZJTEVfRlVOQzsKKyAgIHNldGZ1bmNWKEwsIGxq X3RhYl9zZXQoTCwgcmVnaXN0cnksICZrZXkpLCBmdW5jKTsKKyAgIGxqX2djX2FueWJhcnJpZXJ0 KEwsIHJlZ2lzdHJ5KTsKKyAgIGx1YUpJVF9wcm9maWxlX3N0YXJ0KEwsIG1vZGUgPyBzdHJkYXRh KG1vZGUpIDogIiIsCitAQCAtNTkyLDkgKzU5Miw5IEBACisgICBUVmFsdWUga2V5OworICAgbHVh SklUX3Byb2ZpbGVfc3RvcChMKTsKKyAgIHJlZ2lzdHJ5ID0gdGFiVihyZWdpc3RyeShMKSk7Cist ICBzZXRsaWdodHVkVigma2V5LCAodm9pZCAqKSZLRVlfUFJPRklMRV9USFJFQUQpOworKyAga2V5 LnU2NCA9IEtFWV9QUk9GSUxFX1RIUkVBRDsKKyAgIHNldG5pbFYobGpfdGFiX3NldChMLCByZWdp c3RyeSwgJmtleSkpOworLSAgc2V0bGlnaHR1ZFYoJmtleSwgKHZvaWQgKikmS0VZX1BST0ZJTEVf RlVOQyk7CisrICBrZXkudTY0ID0gS0VZX1BST0ZJTEVfRlVOQzsKKyAgIHNldG5pbFYobGpfdGFi X3NldChMLCByZWdpc3RyeSwgJmtleSkpOworICAgbGpfZ2NfYW55YmFycmllcnQoTCwgcmVnaXN0 cnkpOworICAgcmV0dXJuIDA7CitJbmRleDogbHVhaml0L3NyYy9saWJfcGFja2FnZS5jCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gbHVhaml0Lm9yaWcvc3JjL2xpYl9wYWNrYWdlLmMKKysrKyBsdWFqaXQvc3Jj L2xpYl9wYWNrYWdlLmMKK0BAIC0zOTgsNyArMzk4LDcgQEAKKyAKKyAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gKi8KKyAKKy0jZGVmaW5lIHNlbnRpbmVsCSgodm9pZCAqKTB4NDAwNCkKKysjZGVmaW5lIEtF WV9TRU5USU5FTAkoVTY0eCg4MDAwMDAwMCwwMDAwMDAwMCl8J3MnKQorIAorIHN0YXRpYyBpbnQg bGpfY2ZfcGFja2FnZV9yZXF1aXJlKGx1YV9TdGF0ZSAqTCkKKyB7CitAQCAtNDA4LDcgKzQwOCw3 IEBACisgICBsdWFfZ2V0ZmllbGQoTCwgTFVBX1JFR0lTVFJZSU5ERVgsICJfTE9BREVEIik7Cisg ICBsdWFfZ2V0ZmllbGQoTCwgMiwgbmFtZSk7CisgICBpZiAobHVhX3RvYm9vbGVhbihMLCAtMSkp IHsgIC8qIGlzIGl0IHRoZXJlPyAqLworLSAgICBpZiAobHVhX3RvdXNlcmRhdGEoTCwgLTEpID09 IHNlbnRpbmVsKSAgLyogY2hlY2sgbG9vcHMgKi8KKysgICAgaWYgKChMLT50b3AtMSktPnU2NCA9 PSBLRVlfU0VOVElORUwpICAvKiBjaGVjayBsb29wcyAqLworICAgICAgIGx1YUxfZXJyb3IoTCwg Imxvb3Agb3IgcHJldmlvdXMgZXJyb3IgbG9hZGluZyBtb2R1bGUgIiBMVUFfUVMsIG5hbWUpOwor ICAgICByZXR1cm4gMTsgIC8qIHBhY2thZ2UgaXMgYWxyZWFkeSBsb2FkZWQgKi8KKyAgIH0KK0BA IC00MzEsMTQgKzQzMSwxNCBAQAorICAgICBlbHNlCisgICAgICAgbHVhX3BvcChMLCAxKTsKKyAg IH0KKy0gIGx1YV9wdXNobGlnaHR1c2VyZGF0YShMLCBzZW50aW5lbCk7CisrICAoTC0+dG9wKysp LT51NjQgPSBLRVlfU0VOVElORUw7CisgICBsdWFfc2V0ZmllbGQoTCwgMiwgbmFtZSk7ICAvKiBf TE9BREVEW25hbWVdID0gc2VudGluZWwgKi8KKyAgIGx1YV9wdXNoc3RyaW5nKEwsIG5hbWUpOyAg LyogcGFzcyBuYW1lIGFzIGFyZ3VtZW50IHRvIG1vZHVsZSAqLworICAgbHVhX2NhbGwoTCwgMSwg MSk7ICAvKiBydW4gbG9hZGVkIG1vZHVsZSAqLworICAgaWYgKCFsdWFfaXNuaWwoTCwgLTEpKSAg Lyogbm9uLW5pbCByZXR1cm4/ICovCisgICAgIGx1YV9zZXRmaWVsZChMLCAyLCBuYW1lKTsgIC8q IF9MT0FERURbbmFtZV0gPSByZXR1cm5lZCB2YWx1ZSAqLworICAgbHVhX2dldGZpZWxkKEwsIDIs IG5hbWUpOworLSAgaWYgKGx1YV90b3VzZXJkYXRhKEwsIC0xKSA9PSBzZW50aW5lbCkgeyAgIC8q IG1vZHVsZSBkaWQgbm90IHNldCBhIHZhbHVlPyAqLworKyAgaWYgKChMLT50b3AtMSktPnU2NCA9 PSBLRVlfU0VOVElORUwpIHsgICAvKiBtb2R1bGUgZGlkIG5vdCBzZXQgYSB2YWx1ZT8gKi8KKyAg ICAgbHVhX3B1c2hib29sZWFuKEwsIDEpOyAgLyogdXNlIHRydWUgYXMgcmVzdWx0ICovCisgICAg IGx1YV9wdXNodmFsdWUoTCwgLTEpOyAgLyogZXh0cmEgY29weSB0byBiZSByZXR1cm5lZCAqLwor ICAgICBsdWFfc2V0ZmllbGQoTCwgMiwgbmFtZSk7ICAvKiBfTE9BREVEW25hbWVdID0gdHJ1ZSAq LworSW5kZXg6IGx1YWppdC9zcmMvbGliX3N0cmluZy5jCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbHVhaml0 Lm9yaWcvc3JjL2xpYl9zdHJpbmcuYworKysrIGx1YWppdC9zcmMvbGliX3N0cmluZy5jCitAQCAt NzE0LDcgKzcxNCw3IEBACisgCWxqX3N0cmZtdF9wdXRmY2hhcihzYiwgc2YsIGxqX2xpYl9jaGVj a2ludChMLCBhcmcpKTsKKyAJYnJlYWs7CisgICAgICAgY2FzZSBTVFJGTVRfUFRSOiAgLyogTm8g Zm9ybWF0dGluZy4gKi8KKy0JbGpfc3RyZm10X3B1dHB0cihzYiwgbGpfb2JqX3B0cihMLT5iYXNl K2FyZy0xKSk7CisrCWxqX3N0cmZtdF9wdXRwdHIoc2IsIGxqX29ial9wdHIoRyhMKSwgTC0+YmFz ZSthcmctMSkpOworIAlicmVhazsKKyAgICAgICBkZWZhdWx0OgorIAlsdWFfYXNzZXJ0KDApOwor SW5kZXg6IGx1YWppdC9zcmMvbGpfYXBpLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsdWFqaXQub3JpZy9z cmMvbGpfYXBpLmMKKysrKyBsdWFqaXQvc3JjL2xqX2FwaS5jCitAQCAtNTk1LDcgKzU5NSw3IEBA CisgICBpZiAodHZpc3VkYXRhKG8pKQorICAgICByZXR1cm4gdWRkYXRhKHVkYXRhVihvKSk7Cisg ICBlbHNlIGlmICh0dmlzbGlnaHR1ZChvKSkKKy0gICAgcmV0dXJuIGxpZ2h0dWRWKG8pOworKyAg ICByZXR1cm4gbGlnaHR1ZFYoRyhMKSwgbyk7CisgICBlbHNlCisgICAgIHJldHVybiBOVUxMOwor IH0KK0BAIC02MDgsNyArNjA4LDcgQEAKKyAKKyBMVUFfQVBJIGNvbnN0IHZvaWQgKmx1YV90b3Bv aW50ZXIobHVhX1N0YXRlICpMLCBpbnQgaWR4KQorIHsKKy0gIHJldHVybiBsal9vYmpfcHRyKGlu ZGV4MmFkcihMLCBpZHgpKTsKKysgIHJldHVybiBsal9vYmpfcHRyKEcoTCksIGluZGV4MmFkcihM LCBpZHgpKTsKKyB9CisgCisgLyogLS0gU3RhY2sgc2V0dGVycyAob2JqZWN0IGNyZWF0aW9uKSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCitAQCAtNjk0LDkgKzY5NCwz OCBAQAorICAgaW5jcl90b3AoTCk7CisgfQorIAorKyNpZiBMSl82NAorK3N0YXRpYyB2b2lkICps aWdodHVkX2ludGVybihsdWFfU3RhdGUgKkwsIHZvaWQgKnApCisreworKyAgZ2xvYmFsX1N0YXRl ICpnID0gRyhMKTsKKysgIHVpbnQ2NF90IHUgPSAodWludDY0X3QpcDsKKysgIHVpbnQzMl90IHVw ID0gbGlnaHR1ZHVwKHUpOworKyAgdWludDMyX3QgKnNlZ21hcCA9IG1yZWYoZy0+Z2MubGlnaHR1 ZHNlZywgdWludDMyX3QpOworKyAgTVNpemUgc2VnbnVtID0gZy0+Z2MubGlnaHR1ZG51bTsKKysg IGlmIChzZWdtYXApIHsKKysgICAgTVNpemUgc2VnOworKyAgICBmb3IgKHNlZyA9IDA7IHNlZyA8 PSBzZWdudW07IHNlZysrKQorKyAgICAgIGlmIChzZWdtYXBbc2VnXSA9PSB1cCkgIC8qIEZhc3Qg cGF0aC4gKi8KKysJcmV0dXJuICh2b2lkICopKCgodWludDY0X3Qpc2VnIDw8IExKX0xJR0hUVURf QklUU19MTykgfCBsaWdodHVkbG8odSkpOworKyAgICBzZWdudW0rKzsKKysgIH0KKysgIGlmICgh KChzZWdudW0tMSkgJiBzZWdudW0pICYmIHNlZ251bSAhPSAxKSB7CisrICAgIGlmIChzZWdudW0g Pj0gKDEgPDwgTEpfTElHSFRVRF9CSVRTX1NFRykpIGxqX2Vycl9tc2coTCwgTEpfRVJSX0JBRExV KTsKKysgICAgbGpfbWVtX3JlYWxsb2N2ZWMoTCwgc2VnbWFwLCBzZWdudW0sIHNlZ251bSA/IDIq c2VnbnVtIDogMnUsIHVpbnQzMl90KTsKKysgICAgc2V0bXJlZihnLT5nYy5saWdodHVkc2VnLCBz ZWdtYXApOworKyAgfQorKyAgZy0+Z2MubGlnaHR1ZG51bSA9IHNlZ251bTsKKysgIHNlZ21hcFtz ZWdudW1dID0gdXA7CisrICByZXR1cm4gKHZvaWQgKikoKCh1aW50NjRfdClzZWdudW0gPDwgTEpf TElHSFRVRF9CSVRTX0xPKSB8IGxpZ2h0dWRsbyh1KSk7CisrfQorKyNlbmRpZgorKworIExVQV9B UEkgdm9pZCBsdWFfcHVzaGxpZ2h0dXNlcmRhdGEobHVhX1N0YXRlICpMLCB2b2lkICpwKQorIHsK Ky0gIHNldGxpZ2h0dWRWKEwtPnRvcCwgY2hlY2tsaWdodHVkcHRyKEwsIHApKTsKKysjaWYgTEpf NjQKKysgIHAgPSBsaWdodHVkX2ludGVybihMLCBwKTsKKysjZW5kaWYKKysgIHNldHJhd2xpZ2h0 dWRWKEwtPnRvcCwgcCk7CisgICBpbmNyX3RvcChMKTsKKyB9CisgCitAQCAtMTEzOCw3ICsxMTY3 LDEwIEBACisgICBmbi0+Yy5mID0gZnVuYzsKKyAgIHNldGZ1bmNWKEwsIHRvcCsrLCBmbik7Cisg ICBpZiAoTEpfRlIyKSBzZXRuaWxWKHRvcCsrKTsKKy0gIHNldGxpZ2h0dWRWKHRvcCsrLCBjaGVj a2xpZ2h0dWRwdHIoTCwgdWQpKTsKKysjaWYgTEpfNjQKKysgIHVkID0gbGlnaHR1ZF9pbnRlcm4o TCwgdWQpOworKyNlbmRpZgorKyAgc2V0cmF3bGlnaHR1ZFYodG9wKyssIHVkKTsKKyAgIGNmcmFt ZV9ucmVzKEwtPmNmcmFtZSkgPSAxKzA7ICAvKiBaZXJvIHJlc3VsdHMuICovCisgICBMLT50b3Ag PSB0b3A7CisgICByZXR1cm4gdG9wLTE7ICAvKiBOb3cgY2FsbCB0aGUgbmV3bHkgYWxsb2NhdGVk IEMgZnVuY3Rpb24uICovCitJbmRleDogbHVhaml0L3NyYy9sal9jY2FsbC5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gbHVhaml0Lm9yaWcvc3JjL2xqX2NjYWxsLmMKKysrKyBsdWFqaXQvc3JjL2xqX2NjYWxs LmMKK0BAIC0xMzE0LDcgKzEzMTQsNyBAQAorICAgICBsal92bV9mZmlfY2FsbCgmY2MpOworICAg ICBpZiAoY3RzLT5jYi5zbG90ICE9IH4wdSkgeyAgLyogQmxhY2tsaXN0IGZ1bmN0aW9uIHRoYXQg Y2FsbGVkIGEgY2FsbGJhY2suICovCisgICAgICAgVFZhbHVlIHR2OworLSAgICAgIHNldGxpZ2h0 dWRWKCZ0diwgKHZvaWQgKiljYy5mdW5jKTsKKysgICAgICB0di51NjQgPSAoKHVpbnRwdHJfdCko dm9pZCAqKWNjLmZ1bmMgPj4gMikgfCBVNjR4KDgwMDAwMDAwMCwgMDAwMDAwMDApOworICAgICAg IHNldGJvb2xWKGxqX3RhYl9zZXQoTCwgY3RzLT5taXNjbWFwLCAmdHYpLCAxKTsKKyAgICAgfQor ICAgICBjdCA9IChDVHlwZSAqKSgoaW50cHRyX3QpY3QrKGludHB0cl90KWN0cy0+dGFiKTsgIC8q IE1heSBiZSByZWFsbG9jYXRlZC4gKi8KK0luZGV4OiBsdWFqaXQvc3JjL2xqX2Njb252LmMKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSBsdWFqaXQub3JpZy9zcmMvbGpfY2NvbnYuYworKysrIGx1YWppdC9zcmMv bGpfY2NvbnYuYworQEAgLTYxMSw3ICs2MTEsNyBAQAorICAgICBpZiAodWQtPnVkdHlwZSA9PSBV RFRZUEVfSU9fRklMRSkKKyAgICAgICB0bXBwdHIgPSAqKHZvaWQgKiopdG1wcHRyOworICAgfSBl bHNlIGlmICh0dmlzbGlnaHR1ZChvKSkgeworLSAgICB0bXBwdHIgPSBsaWdodHVkVihvKTsKKysg ICAgdG1wcHRyID0gbGlnaHR1ZFYoY3RzLT5nLCBvKTsKKyAgIH0gZWxzZSBpZiAodHZpc2Z1bmMo bykpIHsKKyAgICAgdm9pZCAqcCA9IGxqX2NjYWxsYmFja19uZXcoY3RzLCBkLCBmdW5jVihvKSk7 CisgICAgIGlmIChwKSB7CitJbmRleDogbHVhaml0L3NyYy9sal9jcmVjb3JkLmMKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBsdWFqaXQub3JpZy9zcmMvbGpfY3JlY29yZC5jCisrKysgbHVhaml0L3NyYy9sal9j cmVjb3JkLmMKK0BAIC02NDMsOCArNjQzLDcgQEAKKyAgICAgfQorICAgfSBlbHNlIGlmICh0cmVm X2lzbGlnaHR1ZChzcCkpIHsKKyAjaWYgTEpfNjQKKy0gICAgc3AgPSBlbWl0aXIoSVJUKElSX0JB TkQsIElSVF9QNjQpLCBzcCwKKy0JCWxqX2lyX2tpbnQ2NChKLCBVNjR4KDAwMDA3ZmZmLGZmZmZm ZmZmKSkpOworKyAgICBsal90cmFjZV9lcnIoSiwgTEpfVFJFUlJfTllJQ09OVik7CisgI2VuZGlm CisgICB9IGVsc2UgeyAgLyogTllJOiB0cmVmX2lzdGFiKHNwKS4gKi8KKyAgICAgSVJUeXBlIHQ7 CitAQCAtMTIwOSw4ICsxMjA4LDcgQEAKKyAgICAgVFJlZiB0cjsKKyAgICAgVFZhbHVlIHR2Owor ICAgICAvKiBDaGVjayBmb3IgYmxhY2tsaXN0ZWQgQyBmdW5jdGlvbnMgdGhhdCBtaWdodCBjYWxs IGEgY2FsbGJhY2suICovCistICAgIHNldGxpZ2h0dWRWKCZ0diwKKy0JCWNkYXRhX2dldHB0cihj ZGF0YXB0cihjZCksIChMSl82NCAmJiB0cCA9PSBJUlRfUDY0KSA/IDggOiA0KSk7CisrICAgIHR2 LnU2NCA9ICgodWludHB0cl90KWNkYXRhX2dldHB0cihjZGF0YXB0cihjZCksIChMSl82NCAmJiB0 cCA9PSBJUlRfUDY0KSA/IDggOiA0KSA+PiAyKSB8IFU2NHgoODAwMDAwMDAwLCAwMDAwMDAwMCk7 CisgICAgIGlmICh0dmlzdHJ1ZShsal90YWJfZ2V0KEotPkwsIGN0cy0+bWlzY21hcCwgJnR2KSkp CisgICAgICAgbGpfdHJhY2VfZXJyKEosIExKX1RSRVJSX0JMQUNLTCk7CisgICAgIGlmIChjdHlw ZV9pc3ZvaWQoY3RyLT5pbmZvKSkgeworSW5kZXg6IGx1YWppdC9zcmMvbGpfZGlzcGF0Y2guYwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGx1YWppdC5vcmlnL3NyYy9sal9kaXNwYXRjaC5jCisrKysgbHVhaml0 L3NyYy9sal9kaXNwYXRjaC5jCitAQCAtMzAyLDcgKzMwMiw3IEBACisgICAgICAgaWYgKGlkeCAh PSAwKSB7CisgCWNUVmFsdWUgKnR2ID0gaWR4ID4gMCA/IEwtPmJhc2UgKyAoaWR4LTEpIDogTC0+ dG9wICsgaWR4OworIAlpZiAodHZpc2xpZ2h0dWQodHYpKQorLQkgIGctPndyYXBmID0gKGx1YV9D RnVuY3Rpb24pbGlnaHR1ZFYodHYpOworKwkgIGctPndyYXBmID0gKGx1YV9DRnVuY3Rpb24pbGln aHR1ZFYoZywgdHYpOworIAllbHNlCisgCSAgcmV0dXJuIDA7ICAvKiBGYWlsZWQuICovCisgICAg ICAgfSBlbHNlIHsKK0luZGV4OiBsdWFqaXQvc3JjL2xqX2lyLmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBs dWFqaXQub3JpZy9zcmMvbGpfaXIuYworKysrIGx1YWppdC9zcmMvbGpfaXIuYworQEAgLTM4Niw4 ICszODYsMTAgQEAKKyAgIGNhc2UgSVJfS1BSSTogc2V0cHJpVih0diwgaXJ0X3RvaXR5cGUoaXIt PnQpKTsgYnJlYWs7CisgICBjYXNlIElSX0tJTlQ6IHNldGludFYodHYsIGlyLT5pKTsgYnJlYWs7 CisgICBjYXNlIElSX0tHQzogc2V0Z2NWKEwsIHR2LCBpcl9rZ2MoaXIpLCBpcnRfdG9pdHlwZShp ci0+dCkpOyBicmVhazsKKy0gIGNhc2UgSVJfS1BUUjogY2FzZSBJUl9LS1BUUjogc2V0bGlnaHR1 ZFYodHYsIGlyX2twdHIoaXIpKTsgYnJlYWs7CistICBjYXNlIElSX0tOVUxMOiBzZXRsaWdodHVk Vih0diwgTlVMTCk7IGJyZWFrOworKyAgY2FzZSBJUl9LUFRSOiBjYXNlIElSX0tLUFRSOgorKyAg ICBzZXRudW1WKHR2LCAobHVhX051bWJlcikodWludHB0cl90KWlyX2twdHIoaXIpKTsKKysgICAg YnJlYWs7CisrICBjYXNlIElSX0tOVUxMOiBzZXRpbnRWKHR2LCAwKTsgYnJlYWs7CisgICBjYXNl IElSX0tOVU06IHNldG51bVYodHYsIGlyX2tudW0oaXIpLT5uKTsgYnJlYWs7CisgI2lmIExKX0hB U0ZGSQorICAgY2FzZSBJUl9LSU5UNjQ6IHsKK0luZGV4OiBsdWFqaXQvc3JjL2xqX29iai5jCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gbHVhaml0Lm9yaWcvc3JjL2xqX29iai5jCisrKysgbHVhaml0L3NyYy9s al9vYmouYworQEAgLTM0LDEyICszNCwxMyBAQAorIH0KKyAKKyAvKiBSZXR1cm4gcG9pbnRlciB0 byBvYmplY3Qgb3IgaXRzIG9iamVjdCBkYXRhLiAqLworLWNvbnN0IHZvaWQgKiBMSl9GQVNUQ0FM TCBsal9vYmpfcHRyKGNUVmFsdWUgKm8pCisrY29uc3Qgdm9pZCAqIExKX0ZBU1RDQUxMIGxqX29i al9wdHIoZ2xvYmFsX1N0YXRlICpnLCBjVFZhbHVlICpvKQorIHsKKysgIFVOVVNFRChnKTsKKyAg IGlmICh0dmlzdWRhdGEobykpCisgICAgIHJldHVybiB1ZGRhdGEodWRhdGFWKG8pKTsKKyAgIGVs c2UgaWYgKHR2aXNsaWdodHVkKG8pKQorLSAgICByZXR1cm4gbGlnaHR1ZFYobyk7CisrICAgIHJl dHVybiBsaWdodHVkVihnLCBvKTsKKyAgIGVsc2UgaWYgKExKX0hBU0ZGSSAmJiB0dmlzY2RhdGEo bykpCisgICAgIHJldHVybiBjZGF0YXB0cihjZGF0YVYobykpOworICAgZWxzZSBpZiAodHZpc2dj dihvKSkKK0luZGV4OiBsdWFqaXQvc3JjL2xqX29iai5oCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbHVhaml0 Lm9yaWcvc3JjL2xqX29iai5oCisrKysgbHVhaml0L3NyYy9sal9vYmouaAorQEAgLTIzMiw3ICsy MzIsNyBAQAorICoqICAgICAgICAgICAgICAgICAgLS0tTVNXLS0tLi0tLUxTVy0tLQorICoqIHBy aW1pdGl2ZSB0eXBlcyB8ICBpdHlwZSAgfCAgICAgICAgIHwKKyAqKiBsaWdodHVzZXJkYXRhICAg fCAgaXR5cGUgIHwgIHZvaWQgKiB8ICAoMzIgYml0IHBsYXRmb3JtcykKKy0qKiBsaWdodHVzZXJk YXRhICAgfGZmZmZ8ICAgIHZvaWQgKiAgICB8ICAoNjQgYml0IHBsYXRmb3JtcywgNDcgYml0IHBv aW50ZXJzKQorKyoqIGxpZ2h0dXNlcmRhdGEgICB8ZmZmZnxzZWd8ICAgIG9mcyAgIHwgICg2NCBi aXQgcGxhdGZvcm1zKQorICoqIEdDIG9iamVjdHMgICAgICB8ICBpdHlwZSAgfCAgR0NSZWYgIHwK KyAqKiBpbnQgKExKX0RVQUxOVU0pfCAgaXR5cGUgIHwgICBpbnQgICB8CisgKiogbnVtYmVyICAg ICAgICAgICAtLS0tLS0tZG91YmxlLS0tLS0tCitAQCAtMjQ1LDcgKzI0NSw4IEBACisgKioKKyAq KiAgICAgICAgICAgICAgICAgICAgIC0tLS0tLU1TVy0tLS0tLS4tLS0tLS1MU1ctLS0tLS0KKyAq KiBwcmltaXRpdmUgdHlwZXMgICAgfDEuLjF8aXR5cGV8MS4uLi4uLi4uLi4uLi4uLi4uLjF8Cist KiogR0Mgb2JqZWN0cy9saWdodHVkIHwxLi4xfGl0eXBlfC0tLS0tLS1HQ1JlZi0tLS0tLS0tfAor KyoqIEdDIG9iamVjdHMgICAgICAgICB8MS4uMXxpdHlwZXwtLS0tLS0tR0NSZWYtLS0tLS0tLXwK KysqKiBsaWdodHVzZXJkYXRhICAgICAgfDEuLjF8aXR5cGV8c2VnfC0tLS0tLW9mcy0tLS0tLS18 CisgKiogaW50IChMSl9EVUFMTlVNKSAgIHwxLi4xfGl0eXBlfDAuLjB8LS0tLS1pbnQtLS0tLS0t fAorICoqIG51bWJlciAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tZG91YmxlLS0tLS0tLS0tLS0t LQorICoqCitAQCAtMjg1LDYgKzI4NiwxMiBAQAorICNkZWZpbmUgTEpfR0NWTUFTSwkJKCgodWlu dDY0X3QpMSA8PCA0NykgLSAxKQorICNlbmRpZgorIAorKyNpZiBMSl82NAorKy8qIFRvIHN0YXkg d2l0aGluIDQ3IGJpdHMsIGxpZ2h0dXNlcmRhdGEgaXMgc2VnbWVudGVkLiAqLworKyNkZWZpbmUg TEpfTElHSFRVRF9CSVRTX1NFRwk4CisrI2RlZmluZSBMSl9MSUdIVFVEX0JJVFNfTE8JKDQ3IC0g TEpfTElHSFRVRF9CSVRTX1NFRykKKysjZW5kaWYKKysKKyAvKiAtLSBTdHJpbmcgb2JqZWN0IC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8K KyAKKyAvKiBTdHJpbmcgb2JqZWN0IGhlYWRlci4gU3RyaW5nIHBheWxvYWQgZm9sbG93cy4gKi8K K0BAIC01NzYsNyArNTgzLDExIEBACisgICB1aW50OF90IGN1cnJlbnR3aGl0ZTsJLyogQ3VycmVu dCB3aGl0ZSBjb2xvci4gKi8KKyAgIHVpbnQ4X3Qgc3RhdGU7CS8qIEdDIHN0YXRlLiAqLworICAg dWludDhfdCBub2NkYXRhZmluOwkvKiBObyBjZGF0YSBmaW5hbGl6ZXIgY2FsbGVkLiAqLworLSAg dWludDhfdCB1bnVzZWQyOworKyNpZiBMSl82NAorKyAgdWludDhfdCBsaWdodHVkbnVtOwkvKiBO dW1iZXIgb2YgbGlnaHR1c2VyZGF0YSBzZWdtZW50cyAtIDEuICovCisrI2Vsc2UKKysgIHVpbnQ4 X3QgdW51c2VkMTsKKysjZW5kaWYKKyAgIE1TaXplIHN3ZWVwc3RyOwkvKiBTd2VlcCBwb3NpdGlv biBpbiBzdHJpbmcgdGFibGUuICovCisgICBHQ1JlZiByb290OwkJLyogTGlzdCBvZiBhbGwgY29s bGVjdGFibGUgb2JqZWN0cy4gKi8KKyAgIE1SZWYgc3dlZXA7CQkvKiBTd2VlcCBwb3NpdGlvbiBp biByb290IGxpc3QuICovCitAQCAtNTg4LDYgKzU5OSw5IEBACisgICBHQ1NpemUgZXN0aW1hdGU7 CS8qIEVzdGltYXRlIG9mIG1lbW9yeSBhY3R1YWxseSBpbiB1c2UuICovCisgICBNU2l6ZSBzdGVw bXVsOwkvKiBJbmNyZW1lbnRhbCBHQyBzdGVwIGdyYW51bGFyaXR5LiAqLworICAgTVNpemUgcGF1 c2U7CQkvKiBQYXVzZSBiZXR3ZWVuIHN1Y2Nlc3NpdmUgR0MgY3ljbGVzLiAqLworKyNpZiBMSl82 NAorKyAgTVJlZiBsaWdodHVkc2VnOwkvKiBVcHBlciBiaXRzIG9mIGxpZ2h0dXNlcmRhdGEgc2Vn bWVudHMuICovCisrI2VuZGlmCisgfSBHQ1N0YXRlOworIAorIC8qIEdsb2JhbCBzdGF0ZSwgc2hh cmVkIGJ5IGFsbCB0aHJlYWRzIG9mIGEgTHVhIHVuaXZlcnNlLiAqLworQEAgLTc5NSwxMCArODA5 LDIzIEBACisgI2VuZGlmCisgI2RlZmluZSBib29sVihvKQljaGVja19leHAodHZpc2Jvb2wobyks IChMSl9URkFMU0UgLSBpdHlwZShvKSkpCisgI2lmIExKXzY0CistI2RlZmluZSBsaWdodHVkVihv KSBcCistICBjaGVja19leHAodHZpc2xpZ2h0dWQobyksICh2b2lkICopKChvKS0+dTY0ICYgVTY0 eCgwMDAwN2ZmZixmZmZmZmZmZikpKQorKyNkZWZpbmUgbGlnaHR1ZHNlZyh1KSBcCisrICAoKCh1 KSA+PiBMSl9MSUdIVFVEX0JJVFNfTE8pICYgKCgxIDw8IExKX0xJR0hUVURfQklUU19TRUcpLTEp KQorKyNkZWZpbmUgbGlnaHR1ZGxvKHUpIFwKKysgICgodSkgJiAoKCh1aW50NjRfdCkxIDw8IExK X0xJR0hUVURfQklUU19MTykgLSAxKSkKKysjZGVmaW5lIGxpZ2h0dWR1cChwKSBcCisrICAoKHVp bnQzMl90KSgoKHApID4+IExKX0xJR0hUVURfQklUU19MTykgPDwgKExKX0xJR0hUVURfQklUU19M Ty0zMikpKQorK3N0YXRpYyBMSl9BSU5MSU5FIHZvaWQgKmxpZ2h0dWRWKGdsb2JhbF9TdGF0ZSAq ZywgY1RWYWx1ZSAqbykKKyt7CisrICB1aW50NjRfdCB1ID0gby0+dTY0OworKyAgdWludDY0X3Qg c2VnID0gbGlnaHR1ZHNlZyh1KTsKKysgIHVpbnQzMl90ICpzZWdtYXAgPSBtcmVmKGctPmdjLmxp Z2h0dWRzZWcsIHVpbnQzMl90KTsKKysgIGx1YV9hc3NlcnQodHZpc2xpZ2h0dWQobykpOworKyAg bHVhX2Fzc2VydChzZWcgPD0gZy0+Z2MubGlnaHR1ZG51bSk7CisrICByZXR1cm4gKHZvaWQgKiko KCh1aW50NjRfdClzZWdtYXBbc2VnXSA8PCAzMikgfCBsaWdodHVkbG8odSkpOworK30KKyAjZWxz ZQorLSNkZWZpbmUgbGlnaHR1ZFYobykJY2hlY2tfZXhwKHR2aXNsaWdodHVkKG8pLCBnY3JlZnAo KG8pLT5nY3IsIHZvaWQpKQorKyNkZWZpbmUgbGlnaHR1ZFYoZywgbykJY2hlY2tfZXhwKHR2aXNs aWdodHVkKG8pLCBnY3JlZnAoKG8pLT5nY3IsIHZvaWQpKQorICNlbmRpZgorICNkZWZpbmUgZ2NW KG8pCQljaGVja19leHAodHZpc2djdihvKSwgZ2N2YWwobykpCisgI2RlZmluZSBzdHJWKG8pCQlj aGVja19leHAodHZpc3N0cihvKSwgJmdjdmFsKG8pLT5zdHIpCitAQCAtODI0LDcgKzg1MSw3IEBA CisgI2RlZmluZSBzZXRwcmlWKG8sIGkpCQkoc2V0aXR5cGUoKG8pLCAoaSkpKQorICNlbmRpZgor IAorLXN0YXRpYyBMSl9BSU5MSU5FIHZvaWQgc2V0bGlnaHR1ZFYoVFZhbHVlICpvLCB2b2lkICpw KQorK3N0YXRpYyBMSl9BSU5MSU5FIHZvaWQgc2V0cmF3bGlnaHR1ZFYoVFZhbHVlICpvLCB2b2lk ICpwKQorIHsKKyAjaWYgTEpfR0M2NAorICAgby0+dTY0ID0gKHVpbnQ2NF90KXAgfCAoKCh1aW50 NjRfdClMSl9UTElHSFRVRCkgPDwgNDcpOworQEAgLTgzNSwyNCArODYyLDE0IEBACisgI2VuZGlm CisgfQorIAorLSNpZiBMSl82NAorLSNkZWZpbmUgY2hlY2tsaWdodHVkcHRyKEwsIHApIFwKKy0g ICgoKHVpbnQ2NF90KShwKSA+PiA0NykgPyAobGpfZXJyX21zZyhMLCBMSl9FUlJfQkFETFUpLCBO VUxMKSA6IChwKSkKKy0jZWxzZQorLSNkZWZpbmUgY2hlY2tsaWdodHVkcHRyKEwsIHApCShwKQor LSNlbmRpZgorLQorLSNpZiBMSl9GUjIKKysjaWYgTEpfRlIyIHx8IExKXzMyCisgI2RlZmluZSBj b250cHRyKGYpCQkoKHZvaWQgKikoZikpCisgI2RlZmluZSBzZXRjb250KG8sIGYpCQkoKG8pLT51 NjQgPSAodWludDY0X3QpKHVpbnRwdHJfdCljb250cHRyKGYpKQorLSNlbGlmIExKXzY0CisrI2Vs c2UKKyAjZGVmaW5lIGNvbnRwdHIoZikgXAorICAgKCh2b2lkICopKHVpbnRwdHJfdCkodWludDMy X3QpKChpbnRwdHJfdCkoZikgLSAoaW50cHRyX3QpbGpfdm1fYXNtX2JlZ2luKSkKKyAjZGVmaW5l IHNldGNvbnQobywgZikgXAorICAgKChvKS0+dTY0ID0gKHVpbnQ2NF90KSh2b2lkICopKGYpIC0g KHVpbnQ2NF90KWxqX3ZtX2FzbV9iZWdpbikKKy0jZWxzZQorLSNkZWZpbmUgY29udHB0cihmKQkJ KCh2b2lkICopKGYpKQorLSNkZWZpbmUgc2V0Y29udChvLCBmKQkJc2V0bGlnaHR1ZFYoKG8pLCBj b250cHRyKGYpKQorICNlbmRpZgorIAorICNkZWZpbmUgdHZjaGVja2xpdmUoTCwgbykgXAorQEAg LTk3OCw2ICs5OTUsNiBAQAorIAorIC8qIENvbXBhcmUgdHdvIG9iamVjdHMgd2l0aG91dCBjYWxs aW5nIG1ldGFtZXRob2RzLiAqLworIExKX0ZVTkMgaW50IExKX0ZBU1RDQUxMIGxqX29ial9lcXVh bChjVFZhbHVlICpvMSwgY1RWYWx1ZSAqbzIpOworLUxKX0ZVTkMgY29uc3Qgdm9pZCAqIExKX0ZB U1RDQUxMIGxqX29ial9wdHIoY1RWYWx1ZSAqbyk7CisrTEpfRlVOQyBjb25zdCB2b2lkICogTEpf RkFTVENBTEwgbGpfb2JqX3B0cihnbG9iYWxfU3RhdGUgKmcsIGNUVmFsdWUgKm8pOworIAorICNl bmRpZgorSW5kZXg6IGx1YWppdC9zcmMvbGpfc25hcC5jCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbHVhaml0 Lm9yaWcvc3JjL2xqX3NuYXAuYworKysrIGx1YWppdC9zcmMvbGpfc25hcC5jCitAQCAtNjI2LDcg KzYyNiwxMiBAQAorICAgSVJUeXBlMSB0ID0gaXItPnQ7CisgICBSZWdTUCBycyA9IGlyLT5wcmV2 OworICAgaWYgKGlycmVmX2lzayhyZWYpKSB7ICAvKiBSZXN0b3JlIGNvbnN0YW50IHNsb3QuICov CistICAgIGxqX2lyX2t2YWx1ZShKLT5MLCBvLCBpcik7CisrICAgIGlmIChpci0+byA9PSBJUl9L UFRSKSB7CisrICAgICAgby0+dTY0ID0gKHVpbnQ2NF90KSh1aW50cHRyX3QpaXJfa3B0cihpcik7 CisrICAgIH0gZWxzZSB7CisrICAgICAgbHVhX2Fzc2VydCghKGlyLT5vID09IElSX0tLUFRSIHx8 IGlyLT5vID09IElSX0tOVUxMKSk7CisrICAgICAgbGpfaXJfa3ZhbHVlKEotPkwsIG8sIGlyKTsK KysgICAgfQorICAgICByZXR1cm47CisgICB9CisgICBpZiAoTEpfVU5MSUtFTFkoYmxvb210ZXN0 KHJmaWx0LCByZWYpKSkKK0luZGV4OiBsdWFqaXQvc3JjL2xqX3N0YXRlLmMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBsdWFqaXQub3JpZy9zcmMvbGpfc3RhdGUuYworKysrIGx1YWppdC9zcmMvbGpfc3RhdGUu YworQEAgLTE3MSw2ICsxNzEsMTIgQEAKKyAgIGxqX21lbV9mcmVldmVjKGcsIGctPnN0cmhhc2gs IGctPnN0cm1hc2srMSwgR0NSZWYpOworICAgbGpfYnVmX2ZyZWUoZywgJmctPnRtcGJ1Zik7Cisg ICBsal9tZW1fZnJlZXZlYyhnLCB0dnJlZihMLT5zdGFjayksIEwtPnN0YWNrc2l6ZSwgVFZhbHVl KTsKKysjaWYgTEpfNjQKKysgIGlmIChtcmVmKGctPmdjLmxpZ2h0dWRzZWcsIHVpbnQzMl90KSkg eworKyAgICBNU2l6ZSBzZWdudW0gPSBnLT5nYy5saWdodHVkbnVtID8gKDIgPDwgbGpfZmxzKGct PmdjLmxpZ2h0dWRudW0pKSA6IDI7CisrICAgIGxqX21lbV9mcmVldmVjKGcsIG1yZWYoZy0+Z2Mu bGlnaHR1ZHNlZywgdWludDMyX3QpLCBzZWdudW0sIHVpbnQzMl90KTsKKysgIH0KKysjZW5kaWYK KyAgIGx1YV9hc3NlcnQoZy0+Z2MudG90YWwgPT0gc2l6ZW9mKEdHX1N0YXRlKSk7CisgI2lmbmRl ZiBMVUFKSVRfVVNFX1NZU01BTExPQworICAgaWYgKGctPmFsbG9jZiA9PSBsal9hbGxvY19mKQor SW5kZXg6IGx1YWppdC9zcmMvbGpfc3RyZm10LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsdWFqaXQub3Jp Zy9zcmMvbGpfc3RyZm10LmMKKysrKyBsdWFqaXQvc3JjL2xqX3N0cmZtdC5jCitAQCAtMzkzLDcg KzM5Myw3IEBACisgICAgICAgcCA9IGxqX2J1Zl93bWVtKHAsICJidWlsdGluIyIsIDgpOworICAg ICAgIHAgPSBsal9zdHJmbXRfd2ludChwLCBmdW5jVihvKS0+Yy5mZmlkKTsKKyAgICAgfSBlbHNl IHsKKy0gICAgICBwID0gbGpfc3RyZm10X3dwdHIocCwgbGpfb2JqX3B0cihvKSk7CisrICAgICAg cCA9IGxqX3N0cmZtdF93cHRyKHAsIGxqX29ial9wdHIoRyhMKSwgbykpOworICAgICB9CisgICAg IHJldHVybiBsal9zdHJfbmV3KEwsIGJ1ZiwgKHNpemVfdCkocCAtIGJ1ZikpOworICAgfQpkaWZm IC0tZ2l0IGEvc3JjcGtncy9MdWFKSVQvdGVtcGxhdGUgYi9zcmNwa2dzL0x1YUpJVC90ZW1wbGF0 ZQppbmRleCA1YjhhYjFiZWRhMTEuLjc3OGE4ZGYwZTU5MyAxMDA2NDQKLS0tIGEvc3JjcGtncy9M dWFKSVQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9MdWFKSVQvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdMdWFKSVQnCiBwa2duYW1lPUx1YUpJVAogdmVyc2lv bj0yLjEuMGJldGEzCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfc29fdmVyc2lvbj0yLjEuMAog X2Rpc3RfdmVyc2lvbj0ke19zb192ZXJzaW9ufS1iZXRhMwogd3Jrc3JjPSIke3BrZ25hbWV9LSR7 X2Rpc3RfdmVyc2lvbn0iCg== --===============2935822710345207791==--