From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21423 invoked by alias); 27 May 2016 16:31:04 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 21410 invoked by uid 89); 27 May 2016 16:31:03 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.6 required=5.0 tests=BAYES_50,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=pass_dce, NEXT_PASS, next_pass, tree_common X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Fri, 27 May 2016 16:30:51 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AF6B57D0C2 for ; Fri, 27 May 2016 16:30:49 +0000 (UTC) Received: from localhost.localdomain (ovpn-116-172.phx2.redhat.com [10.3.116.172]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u4RGUnr4029579 for ; Fri, 27 May 2016 12:30:49 -0400 From: Jeff Law To: gcc-patches Subject: Moving backwards/FSM threader into its own pass Message-ID: <40ef7284-eb9d-29c7-3af0-05d5de81e602@redhat.com> Date: Fri, 27 May 2016 19:30:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------B6D1D1FA56D66B8783CA9547" X-IsSubscribed: yes X-SW-Source: 2016-05/txt/msg02219.txt.bz2 This is a multi-part message in MIME format. --------------B6D1D1FA56D66B8783CA9547 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 2374 It's been my plan since finally wrapping my head around Bodik's thesis to revamp how we handle jump threading to use some of the principles from his thesis. In particular, the back substitution and simplification model feels like the right long term direction. Sebastian's FSM threader was the first step on that path (gcc-5). Exploiting that threader for more than just FSM loops was the next big step (gcc-6). This patch takes the next step -- dis-entangling that new jump threading code from the old threading code and VRP/DOM. The key thing to realize here is that the backwards (FSM) jump threader does not inherently need the DOM tables nor the ASSERT_EXPRs from VRP to do its job. ie, it can and should run completely independently of DOM/VRP (though one day it may exploit range information that a prior VRP pass has computed). By moving the backwards threader into its own pass, we can run it prior to DOM/VRP, which allow DOM/VRP to work on a simpler CFG with larger extended basic blocks. The removal of unexecutable paths before VRP also has the nice effect of also eliminating false positive warnings for some work Aldy is doing around out-of-bound array index warnings. We can remove all the calls to the backwards threader from the old style threader. The way the FSM bits wired into the old threader caused redundant path evaluations. That can be easily fixed with the FSM bits in their own pass. The net is a 25% reduction in paths examined by the FSM threader. Finally, we ultimately end up threading more jumps. I don't have the #s handy anymore, but when I ran this through my tester there was a clear decrease in the number of runtime jumps. So what are the downsides. With the threader in its own pass, we end up getting more calls into the CFG & SSA verification routines in a checking-enabled compiler. So the compile-time improvement is lost for a checking-enabled compiler. The backward threader does not combine identical jump threading paths with different starting edges into a single jump threading path with multiple entry points. This is primarily a codesize issue, but can have a secondary effect on performance. I know how to fix this and it's on the list for gcc-7 along with further cleanups. Bootstrapped and regression tested on x86_64 linux. Installing on the trunk momentarily. Jeff --------------B6D1D1FA56D66B8783CA9547 Content-Type: text/plain; charset=UTF-8; name="patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="patch" Content-length: 27703 Y29tbWl0IDM1YmQ2NDZhNDgzNGE2OGE0OWFmOWNjYjU4NzMzNjJhMGZjNzQy YWUKQXV0aG9yOiBKZWZmIExhdyA8bGF3QHJlZGhhdC5jb20+CkRhdGU6ICAg RnJpIE1heSAyNyAxMDoyMzo1NCAyMDE2IC0wNjAwCgogICAgCSogdHJlZS1z c2EtdGhyZWFkZWRnZS5jOiBSZW1vdmUgaW5jbHVkZSBvZiB0cmVlLXNzYS10 aHJlYWRiYWNrd2FyZC5oLgogICAgCSh0aHJlYWRfYWNyb3NzX2VkZ2UpOiBS ZW1vdmUgY2FsbHMgdG8gZmluZF9qdW1wX3RocmVhZHNfYmFja3dhcmRzLgog ICAgCSogcGFzc2VzLmRlZjogQWRkIGp1bXAgdGhyZWFkaW5nIHBhc3NlcyBi ZWZvcmUgRE9NL1ZSUC4KICAgIAkqIHRyZWUtc3NhLXRocmVhZGJhY2t3YXJk LmMgKGZpbmRfanVtcF90aHJlYWRzX2JhY2t3YXJkcyk6IENoYW5nZQogICAg CWFyZ3VtZW50IHRvIGEgYmFzaWMgYmxvY2sgZnJvbSBhbiBlZGdlLiAgUmVt b3ZlIHRlc3RzIHdoaWNoIGFyZQogICAgCWhhbmRsZWQgZWxzZXdoZXJlLgog ICAgCShwYXNzX2RhdGFfdGhyZWFkX2p1bXBzLCBjbGFzcyBwYXNzX3RocmVh ZF9qdW1wcyk6IE5ldy4KICAgIAkocGFzc190aHJlYWRfanVtcHM6OmdhdGUs IHBhc3NfdGhyZWFkX2p1bXBzOjpleGVjdXRlKTogTmV3LgogICAgCShtYWtl X3Bhc3NfdGhyZWFkX2p1bXBzKTogTGlrZXdpc2UuCiAgICAJKiB0cmVlLXBh c3MuaCAobWFrZV9wYXNzX3RocmVhZF9qdW1wcyk6IERlY2xhcmUuCiAgICAK ICAgIAkqIGdjYy5kZy90cmVlLXNzYS9wcjIxNDE3LmM6IFVwZGF0ZSBleHBl Y3RlZCBvdXRwdXQuCiAgICAJKiBnY2MuZGcvdHJlZS1zc2EvcHI2Njc1Mi0z LmM6IExpa2V3aXNlLgogICAgCSogZ2NjLmRnL3RyZWUtc3NhL3ByNjgxOTgu YzogTGlrZXdpc2UuCiAgICAJKiBnY2MuZGcvdHJlZS1zc2EvcHI2OTE5Ni0x LmM6IExpa2V3aXNlLgogICAgCSogZ2NjLmRnL3RyZWUtc3NhL3ByNjkyNzAt My5jOiBMaWtld2lzZS4KICAgIAkqIGdjYy5kZy90cmVlLXNzYS9zc2EtZG9t LXRocmVhZC0yYi5jOiBMaWtld2lzZS4KICAgIAkqIGdjYy5kZy90cmVlLXNz YS9zc2EtZG9tLXRocmVhZC0yZy5jOiBMaWtld2lzZS4KICAgIAkqIGdjYy5k Zy90cmVlLXNzYS9zc2EtZG9tLXRocmVhZC0yaC5jOiBMaWtld2lzZS4KICAg IAkqIGdjYy5kZy90cmVlLXNzYS9zc2EtZG9tLXRocmVhZC02LmM6IExpa2V3 aXNlLgogICAgCSogZ2NjLmRnL3RyZWUtc3NhL3NzYS1kb20tdGhyZWFkLTcu YzogTGlrZXdpc2UuCiAgICAJKiBnY2MuZGcvdHJlZS1zc2Evc3NhLWRvbS10 aHJlYWQtMTIuYzogTGlrZXdpc2UuCiAgICAJKiBnY2MuZGcvdHJlZS1zc2Ev c3NhLWRvbS10aHJlYWQtMTMuYzogTGlrZXdpc2UuCiAgICAJKiBnY2MuZGcv dHJlZS1zc2EvdnJwNTYuYzogTGlrZXdpc2UuCgpkaWZmIC0tZ2l0IGEvZ2Nj L0NoYW5nZUxvZyBiL2djYy9DaGFuZ2VMb2cKaW5kZXggZjA0ZDI2ZC4uNDBi YWM5NiAxMDA2NDQKLS0tIGEvZ2NjL0NoYW5nZUxvZworKysgYi9nY2MvQ2hh bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDUtMjYgIEplZmYgTGF3 ICA8bGF3QHJlZGhhdC5jb20+CisKKwkqIHRyZWUtc3NhLXRocmVhZGVkZ2Uu YzogUmVtb3ZlIGluY2x1ZGUgb2YgdHJlZS1zc2EtdGhyZWFkYmFja3dhcmQu aC4KKwkodGhyZWFkX2Fjcm9zc19lZGdlKTogUmVtb3ZlIGNhbGxzIHRvIGZp bmRfanVtcF90aHJlYWRzX2JhY2t3YXJkcy4KKwkqIHBhc3Nlcy5kZWY6IEFk ZCBqdW1wIHRocmVhZGluZyBwYXNzZXMgYmVmb3JlIERPTS9WUlAuCisJKiB0 cmVlLXNzYS10aHJlYWRiYWNrd2FyZC5jIChmaW5kX2p1bXBfdGhyZWFkc19i YWNrd2FyZHMpOiBDaGFuZ2UKKwlhcmd1bWVudCB0byBhIGJhc2ljIGJsb2Nr IGZyb20gYW4gZWRnZS4gIFJlbW92ZSB0ZXN0cyB3aGljaCBhcmUKKwloYW5k bGVkIGVsc2V3aGVyZS4KKwkocGFzc19kYXRhX3RocmVhZF9qdW1wcywgY2xh c3MgcGFzc190aHJlYWRfanVtcHMpOiBOZXcuCisJKHBhc3NfdGhyZWFkX2p1 bXBzOjpnYXRlLCBwYXNzX3RocmVhZF9qdW1wczo6ZXhlY3V0ZSk6IE5ldy4K KwkobWFrZV9wYXNzX3RocmVhZF9qdW1wcyk6IExpa2V3aXNlLgorCSogdHJl ZS1wYXNzLmggKG1ha2VfcGFzc190aHJlYWRfanVtcHMpOiBEZWNsYXJlLgor CiAyMDE2LTA1LTI3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNv cmUuY29tPgogCiAJKiBjb25maWcvdmlzaXVtL3Zpc2l1bS1wcm90b3MuaCAo c3BsaXRfZG91YmxlX21vdmUpOiBSZW5hbWUgaW50by4uLgpkaWZmIC0tZ2l0 IGEvZ2NjL3Bhc3Nlcy5kZWYgYi9nY2MvcGFzc2VzLmRlZgppbmRleCA5OTNl ZDI4Li4zNjQ3ZTkwIDEwMDY0NAotLS0gYS9nY2MvcGFzc2VzLmRlZgorKysg Yi9nY2MvcGFzc2VzLmRlZgpAQCAtMTk5LDYgKzE5OSw3IEBAIGFsb25nIHdp dGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAg ICAgICBORVhUX1BBU1MgKHBhc3NfcmV0dXJuX3Nsb3QpOwogICAgICAgTkVY VF9QQVNTIChwYXNzX2ZyZSk7CiAgICAgICBORVhUX1BBU1MgKHBhc3NfbWVy Z2VfcGhpKTsKKyAgICAgIE5FWFRfUEFTUyAocGFzc190aHJlYWRfanVtcHMp OwogICAgICAgTkVYVF9QQVNTIChwYXNzX3ZycCwgdHJ1ZSAvKiB3YXJuX2Fy cmF5X2JvdW5kc19wICovKTsKICAgICAgIE5FWFRfUEFTUyAocGFzc19jaGtw X29wdCk7CiAgICAgICBORVhUX1BBU1MgKHBhc3NfZGNlKTsKQEAgLTIxOCw2 ICsyMTksNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJ TkczLiAgSWYgbm90IHNlZQogCSBwcm9wYWdhdGlvbnMgaGF2ZSBhbHJlYWR5 IHJ1biwgYnV0IGJlZm9yZSBzb21lIG1vcmUgZGVhZCBjb2RlCiAJIGlzIHJl bW92ZWQsIGFuZCB0aGlzIHBsYWNlIGZpdHMgbmljZWx5LiAgUmVtZW1iZXIg dGhpcyB3aGVuCiAJIHRyeWluZyB0byBtb3ZlIG9yIGR1cGxpY2F0ZSBwYXNz X2RvbWluYXRvciBzb21ld2hlcmUgZWFybGllci4gICovCisgICAgICBORVhU X1BBU1MgKHBhc3NfdGhyZWFkX2p1bXBzKTsKICAgICAgIE5FWFRfUEFTUyAo cGFzc19kb21pbmF0b3IsIHRydWUgLyogbWF5X3BlZWxfbG9vcF9oZWFkZXJz X3AgKi8pOwogICAgICAgLyogQXQgdGhpcyBwb2ludCB0aGUgbWFqb3JpdHkg b2YgY29uc3QvY29weSBwcm9wYWdhdGlvbnMKIAkgYXJlIGV4cG9zZWQuICBH byBhaGVhZCBhbmQgaWRlbnRpZnkgcGF0aHMgdGhhdCBzaG91bGQgbmV2ZXIK QEAgLTMwNSw4ICszMDcsMTAgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUg ZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICAgICAgIE5FWFRfUEFTUyAo cGFzc19zdHJlbmd0aF9yZWR1Y3Rpb24pOwogICAgICAgTkVYVF9QQVNTIChw YXNzX3NwbGl0X3BhdGhzKTsKICAgICAgIE5FWFRfUEFTUyAocGFzc190cmFj ZXIpOworICAgICAgTkVYVF9QQVNTIChwYXNzX3RocmVhZF9qdW1wcyk7CiAg ICAgICBORVhUX1BBU1MgKHBhc3NfZG9taW5hdG9yLCBmYWxzZSAvKiBtYXlf cGVlbF9sb29wX2hlYWRlcnNfcCAqLyk7CiAgICAgICBORVhUX1BBU1MgKHBh c3Nfc3RybGVuKTsKKyAgICAgIE5FWFRfUEFTUyAocGFzc190aHJlYWRfanVt cHMpOwogICAgICAgTkVYVF9QQVNTIChwYXNzX3ZycCwgZmFsc2UgLyogd2Fy bl9hcnJheV9ib3VuZHNfcCAqLyk7CiAgICAgICAvKiBUaGUgb25seSBjb25z dC9jb3B5IHByb3BhZ2F0aW9uIG9wcG9ydHVuaXRpZXMgbGVmdCBhZnRlcgog CSBET00gYW5kIFZSUCBzaG91bGQgYmUgZHVlIHRvIGRlZ2VuZXJhdGUgUEhJ IG5vZGVzLiAgU28gcmF0aGVyIHRoYW4KZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvQ2hhbmdlTG9nIGIvZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKaW5k ZXggMDBjMmE5OS4uNWRlZDJkNCAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0 ZS9DaGFuZ2VMb2cKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKQEAg LTEsMyArMSwxOSBAQAorMjAxNi0wNS0yNiAgSmVmZiBMYXcgIDxsYXdAcmVk aGF0LmNvbT4KKworCSogZ2NjLmRnL3RyZWUtc3NhL3ByMjE0MTcuYzogVXBk YXRlIGV4cGVjdGVkIG91dHB1dC4KKwkqIGdjYy5kZy90cmVlLXNzYS9wcjY2 NzUyLTMuYzogTGlrZXdpc2UuCisJKiBnY2MuZGcvdHJlZS1zc2EvcHI2ODE5 OC5jOiBMaWtld2lzZS4KKwkqIGdjYy5kZy90cmVlLXNzYS9wcjY5MTk2LTEu YzogTGlrZXdpc2UuCisJKiBnY2MuZGcvdHJlZS1zc2EvcHI2OTI3MC0zLmM6 IExpa2V3aXNlLgorCSogZ2NjLmRnL3RyZWUtc3NhL3NzYS1kb20tdGhyZWFk LTJiLmM6IExpa2V3aXNlLgorCSogZ2NjLmRnL3RyZWUtc3NhL3NzYS1kb20t dGhyZWFkLTJnLmM6IExpa2V3aXNlLgorCSogZ2NjLmRnL3RyZWUtc3NhL3Nz YS1kb20tdGhyZWFkLTJoLmM6IExpa2V3aXNlLgorCSogZ2NjLmRnL3RyZWUt c3NhL3NzYS1kb20tdGhyZWFkLTYuYzogTGlrZXdpc2UuCisJKiBnY2MuZGcv dHJlZS1zc2Evc3NhLWRvbS10aHJlYWQtNy5jOiBMaWtld2lzZS4KKwkqIGdj Yy5kZy90cmVlLXNzYS9zc2EtZG9tLXRocmVhZC0xMi5jOiBMaWtld2lzZS4K KwkqIGdjYy5kZy90cmVlLXNzYS9zc2EtZG9tLXRocmVhZC0xMy5jOiBMaWtl d2lzZS4KKwkqIGdjYy5kZy90cmVlLXNzYS92cnA1Ni5jOiBMaWtld2lzZS4K KwogMjAxNi0wNS0yNyAgVmlsbGUgVm91dGlsYWluZW4gIDx2aWxsZS52b3V0 aWxhaW5lbkBnbWFpbC5jb20+CiAKIAlQUiBjKysvNjk4NTUKZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3ByMjE0MTcuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3ByMjE0MTcuYwppbmRl eCBjODY1ZWUzLi40ODQ1MTE5IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRl L2djYy5kZy90cmVlLXNzYS9wcjIxNDE3LmMKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdHJlZS1zc2EvcHIyMTQxNy5jCkBAIC0xLDUgKzEsNSBAQAog LyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLU8y IC1mZHVtcC10cmVlLWRvbTMtZGV0YWlscyIgfSAqLworLyogeyBkZy1vcHRp b25zICItTzIgLWZkdW1wLXRyZWUtdGhyZWFkNC1kZXRhaWxzIiB9ICovCiAK IHN0cnVjdCB0cmVlX2NvbW1vbiAKIHsgCkBAIC00OSw1ICs0OSw1IEBAIEwy MzoKIC8qIFdlIHNob3VsZCB0aHJlYWQgdGhlIGJhY2tlZGdlIHRvIHRoZSB0 b3Agb2YgdGhlIGxvb3A7IGllIHdlIG9ubHkKICAgIGV4ZWN1dGUgdGhlIGlm IChleHByLT5jb21tb24uY29kZSAhPSAxNDIpIHRlc3Qgb25jZSBwZXIgbG9v cAogICAgaXRlcmF0aW9uLiAgKi8KLS8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcC10aW1lcyAiRlNNIGp1bXAgdGhyZWFkIiAxICJkb20zIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiRlNN IGp1bXAgdGhyZWFkIiAxICJ0aHJlYWQ0IiB9IH0gKi8KIApkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcHI2Njc1Mi0zLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9wcjY2NzUyLTMuYwpp bmRleCAyOTQ5Y2JiLi44OTZjOGJmIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1 aXRlL2djYy5kZy90cmVlLXNzYS9wcjY2NzUyLTMuYworKysgYi9nY2MvdGVz dHN1aXRlL2djYy5kZy90cmVlLXNzYS9wcjY2NzUyLTMuYwpAQCAtMSw1ICsx LDUgQEAKIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0vKiB7IGRnLW9wdGlv bnMgIi1PMiAtZmR1bXAtdHJlZS12cnAxLWRldGFpbHMgLWZkdW1wLXRyZWUt b3B0aW1pemVkIiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmR1bXAt dHJlZS10aHJlYWQxLWRldGFpbHMgLWZkdW1wLXRyZWUtZGNlMiIgfSAqLwog CiBleHRlcm4gaW50IHN0YXR1cywgcHQ7CiBleHRlcm4gaW50IGNvdW50OwpA QCAtMzIsOSArMzIsMTAgQEAgZm9vIChpbnQgTiwgaW50IGMsIGludCBiLCBp bnQgKmEpCiAgICBwdC0tOwogfQogCi0vKiBUaGVyZSBhcmUgMyBGU00ganVt cCB0aHJlYWRpbmcgb3Bwb3J0dW5pdGllcywgYWxsIG9mIHdoaWNoIHdpbGwg YmUKKy8qIFRoZXJlIGFyZSA0IEZTTSBqdW1wIHRocmVhZGluZyBvcHBvcnR1 bml0aWVzLCBhbGwgb2Ygd2hpY2ggd2lsbCBiZQogICAgcmVhbGl6ZWQsIHdo aWNoIHdpbGwgZWxpbWluYXRlIHRlc3Rpbmcgb2YgRkxBRywgY29tcGxldGVs eS4gICovCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMg IlJlZ2lzdGVyaW5nIEZTTSIgMyAidnJwMSJ9IH0gKi8KKy8qIHsgZGctZmlu YWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiUmVnaXN0ZXJpbmcgRlNNIiA0 ICJ0aHJlYWQxIn0gfSAqLwogCi0vKiBUaGVyZSBzaG91bGQgYmUgbm8gYXNz aWdubWVudHMgb3IgcmVmZXJlbmNlcyB0byBGTEFHLiAgKi8KLS8qIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgImZsYWciICJvcHRpbWl6ZWQi fSB9ICovCisvKiBUaGVyZSBzaG91bGQgYmUgbm8gYXNzaWdubWVudHMgb3Ig cmVmZXJlbmNlcyB0byBGTEFHLCB2ZXJpZnkgdGhleSdyZQorICAgZWxpbWlu YXRlZCBhcyBlYXJseSBhcyBwb3NzaWJsZS4gICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAtbm90ICJpZiAuZmxhZyIgImRjZTIifSB9ICov CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9w cjY4MTk4LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9wcjY4 MTk4LmMKaW5kZXggMjI3ZmZlYi4uZDY3OGRjOCAxMDA2NDQKLS0tIGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcHI2ODE5OC5jCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3ByNjgxOTguYwpAQCAtMSw1 ICsxLDUgQEAKIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0vKiB7IGRnLW9w dGlvbnMgIi1PMiAtZmR1bXAtdHJlZS12cnAxLWRldGFpbHMiIH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLU8yIC1mZHVtcC10cmVlLXRocmVhZDEtZGV0YWls cyIgfSAqLwogCiBleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7CiAKQEAgLTM5 LDUgKzM5LDUgQEAgY19maW5pc2hfb21wX2NsYXVzZXMgKHRyZWUgY2xhdXNl cykKIAogLyogVGhlcmUgYXJlIDMgRlNNIGp1bXAgdGhyZWFkaW5nIG9wcG9y dHVuaXRpZXMsIHR3byBvZiB3aGljaCB3aWxsCiAgIGdldCBmaWx0ZXJlZCBv dXQuICAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVz ICJSZWdpc3RlcmluZyBGU00iIDEgInZycDEifSB9ICovCi0vKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIkZTTSBUaHJlYWQgdGhyb3Vn aCBtdWx0aXdheSBicmFuY2ggd2l0aG91dCB0aHJlYWRpbmcgYSBtdWx0aXdh eSBicmFuY2giIDIgInZycDEifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAtdGltZXMgIlJlZ2lzdGVyaW5nIEZTTSIgMSAidGhyZWFk MSJ9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1l cyAiRlNNIFRocmVhZCB0aHJvdWdoIG11bHRpd2F5IGJyYW5jaCB3aXRob3V0 IHRocmVhZGluZyBhIG11bHRpd2F5IGJyYW5jaCIgMiAidGhyZWFkMSJ9IH0g Ki8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3Nh L3ByNjkxOTYtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Ev cHI2OTE5Ni0xLmMKaW5kZXggNDE1YWMyZS4uNTg0MmUyOCAxMDA2NDQKLS0t IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcHI2OTE5Ni0xLmMK KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvcHI2OTE5Ni0x LmMKQEAgLTEsNyArMSw3IEBACiAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJn ZXQgc3BhcmMqLSotKiB4ODZfNjQtKi0qIH0gfSAqLwotLyogeyBkZy1vcHRp b25zICItTzIgLWZkdW1wLXRyZWUtdnJwMS1kZXRhaWxzIiB9ICovCisvKiB7 IGRnLW9wdGlvbnMgIi1PMiAtZmR1bXAtdHJlZS10aHJlYWQxLWRldGFpbHMi IH0gKi8KIAotLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJGU00g ZGlkIG5vdCB0aHJlYWQgYXJvdW5kIGxvb3AgYW5kIHdvdWxkIGNvcHkgdG9v IG1hbnkgc3RhdGVtZW50cyIgInZycDEiIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wICJGU00gZGlkIG5vdCB0aHJlYWQgYXJvdW5k IGxvb3AgYW5kIHdvdWxkIGNvcHkgdG9vIG1hbnkgc3RhdGVtZW50cyIgInRo cmVhZDEiIH0gfSAqLwogCiAKIHR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3Qg X19nbnVjX3ZhX2xpc3Q7CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy5kZy90cmVlLXNzYS9wcjY5MjcwLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3RyZWUtc3NhL3ByNjkyNzAtMy5jCmluZGV4IDg5NzM1ZjYuLmQ1NDZh YzYgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3Nh L3ByNjkyNzAtMy5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUt c3NhL3ByNjkyNzAtMy5jCkBAIC0zLDcgKzMsNyBAQAogCiAvKiBXZSdyZSBs b29raW5nIGZvciBhIGNvbnN0YW50IGFyZ3VtZW50IGEgUEhJIG5vZGUuICBU aGVyZQogICAgc2hvdWxkIG9ubHkgYmUgb25lIGlmIHdlIHVucHJvcGFnYXRl IGNvcnJlY3RseS4gICovCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgIiwgMSIgMSAidW5jcHJvcDEifSB9ICovCisvKiB7IGRnLWZp bmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIiwgMSIgNCAidW5jcHJvcDEi fSB9ICovCiAKIHR5cGVkZWYgbG9uZyB1bnNpZ25lZCBpbnQgc2l6ZV90Owog dHlwZWRlZiB1bmlvbiBnaW1wbGVfc3RhdGVtZW50X2QgKmdpbXBsZTsKZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3NzYS1k b20tdGhyZWFkLTJiLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNz YS9zc2EtZG9tLXRocmVhZC0yYi5jCmluZGV4IDBkNDAyNTQuLmViNjYxMzYg MTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3Nz YS1kb20tdGhyZWFkLTJiLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv dHJlZS1zc2Evc3NhLWRvbS10aHJlYWQtMmIuYwpAQCAtMSw1ICsxLDUgQEAK IC8qIHsgZGctZG8gY29tcGlsZSB9ICovIAotLyogeyBkZy1vcHRpb25zICIt TzIgLWZkdW1wLXRyZWUtdnJwMS1zdGF0cyAtZmR1bXAtdHJlZS1kb20yLXN0 YXRzIiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmR1bXAtdHJlZS10 aHJlYWQxLXN0YXRzIC1mZHVtcC10cmVlLWRvbTItc3RhdHMiIH0gKi8KIAog dm9pZCBmb28oKTsKIHZvaWQgYmxhKCk7CkBAIC0yNiw0ICsyNiw0IEBAIHZv aWQgdGhyZWFkX2xhdGNoX3Rocm91Z2hfaGVhZGVyICh2b2lkKQogICAgY2Fz ZS4gIEFuZCB3ZSB3YW50IHRvIHRocmVhZCB0aHJvdWdoIHRoZSBoZWFkZXIg YXMgd2VsbC4gIFRoZXNlCiAgICBhcmUgYm90aCBjYXVnaHQgYnkgdGhyZWFk aW5nIGluIERPTS4gICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtbm90ICJKdW1wcyB0aHJlYWRlZCIgImRvbTIifSB9ICovCi0vKiB7IGRn LWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgIkp1bXBzIHRocmVhZGVk OiAyIiAxICJ2cnAxIn0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJl ZS1kdW1wLXRpbWVzICJKdW1wcyB0aHJlYWRlZDogMSIgMSAidGhyZWFkMSJ9 IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUt c3NhL3NzYS1kb20tdGhyZWFkLTJnLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy90cmVlLXNzYS9zc2EtZG9tLXRocmVhZC0yZy5jCmluZGV4IDZkMWZmNWQu LmVkZTAzZTAgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3Ry ZWUtc3NhL3NzYS1kb20tdGhyZWFkLTJnLmMKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvdHJlZS1zc2Evc3NhLWRvbS10aHJlYWQtMmcuYwpAQCAtMSw1 ICsxLDUgQEAKIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0vKiB7IGRnLW9w dGlvbnMgIi1PMiAtZmR1bXAtdHJlZS12cnAxLXN0YXRzIC1mZHVtcC10cmVl LWRvbTItc3RhdHMiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZHVt cC10cmVlLWRvbTItZGV0YWlscyIgfSAqLwogCiB2b2lkIGZvbygpOwogdm9p ZCBibGEoKTsKQEAgLTIyLDUgKzIyLDggQEAgdm9pZCBkb250X3RocmVhZF8x ICh2b2lkKQogICAgIH0gd2hpbGUgKGkrKyA8IDEwMCk7CiB9CiAKLS8qIHsg ZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiSnVtcHMgdGhyZWFkZWQ6IDIi ICJ2cnAxIn0gfSAqLwotLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w ICJKdW1wcyB0aHJlYWRlZDogMSIgImRvbTIifSB9ICovCisvKiBUaGlzIG9u ZSBjYW4gb25seSBiZSB0aHJlYWRlZCBpZiBib3RoIHBhdGhzIHRvIHRoZQor ICAgY29uZGl0aW9uYWwgaW5zaWRlIHRoZSBsb29wIGFyZSB0aHJlYWRlZCBh dCB0aGUgc2FtZQorICAgdGltZS4gIEVsc2Ugd2UgcG90ZW50aWFsbHkgZW5k IHVwIHdpdGggaXJyZWR1Y2libGUKKyAgIGxvb3BzLiAgKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLXRyZWUtZHVtcC1ub3QgIklSUkVEVUNJQkxFX0xPT1Ai ICJkb20yIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3RyZWUtc3NhL3NzYS1kb20tdGhyZWFkLTJoLmMgYi9nY2MvdGVzdHN1 aXRlL2djYy5kZy90cmVlLXNzYS9zc2EtZG9tLXRocmVhZC0yaC5jCmluZGV4 IDYxNzA1ZTEuLjA0MzkxOGQgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3RyZWUtc3NhL3NzYS1kb20tdGhyZWFkLTJoLmMKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Evc3NhLWRvbS10aHJlYWQtMmgu YwpAQCAtMSw1ICsxLDUgQEAKIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0v KiB7IGRnLW9wdGlvbnMgIi1PMiAtZmR1bXAtdHJlZS12cnAxLXN0YXRzIC1m ZHVtcC10cmVlLWRvbTItc3RhdHMiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAi LU8yIC1mZHVtcC10cmVlLWRvbTItZGV0YWlscyIgfSAqLwogCiB2b2lkIGZv bygpOwogdm9pZCBibGEoKTsKQEAgLTI1LDUgKzI1LDQgQEAgdm9pZCBkb250 X3RocmVhZF8yIChpbnQgZmlyc3QpCiAKIC8qIFBlZWxpbmcgb2ZmIHRoZSBm aXJzdCBpdGVyYXRpb24gd291bGQgbWFrZSB0aHJlYWRpbmcgdGhyb3VnaAog ICAgdGhlIGxvb3AgbGF0Y2ggc2FmZSwgYnV0IHdlIGRvbid0IGRvIHRoYXQg Y3VycmVudGx5LiAgKi8KLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cCAiSnVtcHMgdGhyZWFkZWQ6IDEiICJ2cnAxIn0gfSAqLwotLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wICJKdW1wcyB0aHJlYWRlZDogMSIgImRv bTIifSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtbm90 ICJJUlJFRFVDSUJMRV9MT09QIiAiZG9tMiIgfSB9ICovCmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9zc2EtZG9tLXRocmVh ZC02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS9zc2EtZG9t LXRocmVhZC02LmMKaW5kZXggYWI2YjZlYi4uNWVjNDY4NyAxMDA2NDQKLS0t IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Evc3NhLWRvbS10aHJl YWQtNi5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3Nz YS1kb20tdGhyZWFkLTYuYwpAQCAtMSw2ICsxLDcgQEAKIC8qIHsgZGctZG8g Y29tcGlsZSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmR1bXAtdHJl ZS1kb20yLWRldGFpbHMiIH0gKi8KLS8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcC10aW1lcyAiRlNNIiA2ICJkb20yIiB9IH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLU8yIC1mZHVtcC10cmVlLXRocmVhZDEtZGV0YWlscyAtZmR1 bXAtdHJlZS10aHJlYWQyLWRldGFpbHMiIH0gKi8KKy8qIHsgZGctZmluYWwg eyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiRlNNIiAzICJ0aHJlYWQxIiB9IH0g Ki8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcC10aW1lcyAiRlNN IiA0ICJ0aHJlYWQyIiB9IH0gKi8KIAogaW50IHN1bTAsIHN1bTEsIHN1bTIs IHN1bTM7CiBpbnQgZm9vIChjaGFyICpzLCBjaGFyICoqcmV0KQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Evc3NhLWRvbS10 aHJlYWQtNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Evc3Nh LWRvbS10aHJlYWQtNy5jCmluZGV4IGE3YTczN2IuLjdjZDE0NTEgMTAwNjQ0 Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3NzYS1kb20t dGhyZWFkLTcuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNz YS9zc2EtZG9tLXRocmVhZC03LmMKQEAgLTEsNyArMSw4IEBACiAvKiB7IGRn LWRvIGNvbXBpbGUgfSAqLwotLyogeyBkZy1vcHRpb25zICItTzIgLWZkdW1w LXRyZWUtdnJwMS1zdGF0cyAtZmR1bXAtdHJlZS1kb20yLXN0YXRzIC1mZHVt cC10cmVlLWRvbTMtc3RhdHMgLWZkdW1wLXRyZWUtdnJwMi1zdGF0cyIgfSAq LwotLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJKdW1wcyB0aHJl YWRlZDogMTkiICAidnJwMSIgfSB9ICovCi0vKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAgIkp1bXBzIHRocmVhZGVkOiAxMiIgImRvbTIiIH0gfSAq LworLyogeyBkZy1vcHRpb25zICItTzIgLWZkdW1wLXRyZWUtdGhyZWFkMS1z dGF0cyAtZmR1bXAtdHJlZS10aHJlYWQyLXN0YXRzIC1mZHVtcC10cmVlLXRo cmVhZDMtc3RhdHMgLWZkdW1wLXRyZWUtZG9tMy1zdGF0cyAtZmR1bXAtdHJl ZS12cnAyLXN0YXRzIiB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVl LWR1bXAgIkp1bXBzIHRocmVhZGVkOiAxNiIgICJ0aHJlYWQxIiB9IH0gKi8K Ky8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVtcCAiSnVtcHMgdGhyZWFk ZWQ6IDExIiAidGhyZWFkMiIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAgIkp1bXBzIHRocmVhZGVkOiAzIiAidGhyZWFkMyIgfSB9 ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtbm90ICJKdW1w cyB0aHJlYWRlZCIgICJkb20zIiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcC1ub3QgIkp1bXBzIHRocmVhZGVkIiAgInZycDIiIH0g fSAqLwogCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVl LXNzYS9zc2EtdGhyZWFkLTEyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90 cmVlLXNzYS9zc2EtdGhyZWFkLTEyLmMKaW5kZXggZjI1MGQyMi4uZmE2ZGE3 YiAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Ev c3NhLXRocmVhZC0xMi5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3Ry ZWUtc3NhL3NzYS10aHJlYWQtMTIuYwpAQCAtMSw2ICsxLDggQEAKIC8qIHsg ZGctZG8gY29tcGlsZSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtZmR1 bXAtdHJlZS1kb20yLWRldGFpbHMiIH0gKi8KLS8qIHsgZGctZmluYWwgeyBz Y2FuLXRyZWUtZHVtcCAiRlNNIiAiZG9tMiIgfSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1PMiAtZmR1bXAtdHJlZS10aHJlYWQyLWRldGFpbHMgLWZkdW1w LXRyZWUtdGhyZWFkMy1kZXRhaWxzIC1mZHVtcC10cmVlLXRocmVhZDQtZGV0 YWlscyIgfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wICJG U00iICJ0aHJlYWQyIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLXRy ZWUtZHVtcCAiRlNNIiAidGhyZWFkMyIgfSB9ICovCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi10cmVlLWR1bXAgIkZTTSIgInRocmVhZDQiIH0gfSAqLwogCiB0 eXBlZGVmIHN0cnVjdCBiaXRtYXBfaGVhZF9kZWYgKmJpdG1hcDsKIHR5cGVk ZWYgY29uc3Qgc3RydWN0IGJpdG1hcF9oZWFkX2RlZiAqY29uc3RfYml0bWFw OwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2Ev c3NhLXRocmVhZC0xMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1z c2Evc3NhLXRocmVhZC0xMy5jCmluZGV4IDk5ZDQ1ZjUuLmY1ZjMzOGIgMTAw NjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3RyZWUtc3NhL3NzYS10 aHJlYWQtMTMuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNz YS9zc2EtdGhyZWFkLTEzLmMKQEAgLTEsNiArMSw2IEBACiAvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLwotLyogeyBkZy1vcHRpb25zICItTzIgLWZkdW1wLXRy ZWUtdnJwMS1kZXRhaWxzIiB9ICovCi0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAgIkZTTSIgInZycDEiIH0gfSAqLworLyogeyBkZy1vcHRpb25z ICItTzIgLWZkdW1wLXRyZWUtdGhyZWFkMS1kZXRhaWxzIiB9ICovCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAgIkZTTSIgInRocmVhZDEiIH0g fSAqLwogCiB0eXBlZGVmIHN0cnVjdCBydHhfZGVmICpydHg7CiB0eXBlZGVm IGNvbnN0IHN0cnVjdCBydHhfZGVmICpjb25zdF9ydHg7CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy5kZy90cmVlLXNzYS92cnA1Ni5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvdHJlZS1zc2EvdnJwNTYuYwppbmRleCA0ODFl ODg4Li4zYTY0YjAxIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5k Zy90cmVlLXNzYS92cnA1Ni5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3RyZWUtc3NhL3ZycDU2LmMKQEAgLTEsNSArMSw1IEBACiAvKiB7IGRnLWRv IGNvbXBpbGUgfSAqLyAKLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZHVtcC10 cmVlLXZycDEtZGV0YWlscyIgfSAqLworLyogeyBkZy1vcHRpb25zICItTzIg LWZkdW1wLXRyZWUtdGhyZWFkMS1zdGF0cyIgfSAqLwogdHlwZWRlZiBzdHJ1 Y3QgYmFzaWNfYmxvY2tfZGVmICpiYXNpY19ibG9jazsKIHN0cnVjdCBiYXNp Y19ibG9ja19kZWY7CiBzdHJ1Y3QgZWRnZV9kZWY7CkBAIC0zOCw1ICszOCw1 IEBAIGNsZWFudXBfZW1wdHlfZWggKGJhc2ljX2Jsb2NrIGJiKQogCWZvbyAo KTsKICAgICB9CiB9Ci0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMgIlRocmVhZGVkIiAxICJ2cnAxIn0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tdHJlZS1kdW1wICJKdW1wcyB0aHJlYWRlZDogMSIgInRocmVh ZDEifSB9ICovCiAKZGlmZiAtLWdpdCBhL2djYy90aW1ldmFyLmRlZiBiL2dj Yy90aW1ldmFyLmRlZgppbmRleCAxNzBlZTlhLi4zNjJhYTZlIDEwMDY0NAot LS0gYS9nY2MvdGltZXZhci5kZWYKKysrIGIvZ2NjL3RpbWV2YXIuZGVmCkBA IC0xNTYsNiArMTU2LDcgQEAgREVGVElNRVZBUiAoVFZfVFJFRV9TU0FfT1RI RVIJICAgICAsICJ0cmVlIFNTQSBvdGhlciIpCiBERUZUSU1FVkFSIChUVl9U UkVFX1NTQV9JTkNSRU1FTlRBTCAgLCAidHJlZSBTU0EgaW5jcmVtZW50YWwi KQogREVGVElNRVZBUiAoVFZfVFJFRV9PUFMJICAgICAgICAgICAgICwgInRy ZWUgb3BlcmFuZCBzY2FuIikKIERFRlRJTUVWQVIgKFRWX1RSRUVfU1NBX0RP TUlOQVRPUl9PUFRTICAgLCAiZG9taW5hdG9yIG9wdGltaXphdGlvbiIpCitE RUZUSU1FVkFSIChUVl9UUkVFX1NTQV9USFJFQURfSlVNUFMgLCAiYmFja3dh cmRzIGp1bXAgdGhyZWFkaW5nIikKIERFRlRJTUVWQVIgKFRWX1RSRUVfU1JB ICAgICAgICAgICAgICAsICJ0cmVlIFNSQSIpCiBERUZUSU1FVkFSIChUVl9J U09MQVRFX0VSUk9ORU9VU19QQVRIUyAgICAsICJpc29sYXRlIGVyb25lb3Vz IHBhdGhzIikKIERFRlRJTUVWQVIgKFRWX1RSRUVfQ0NQCQkgICAgICwgInRy ZWUgQ0NQIikKZGlmZiAtLWdpdCBhL2djYy90cmVlLXBhc3MuaCBiL2djYy90 cmVlLXBhc3MuaAppbmRleCA2NmUxMDNhLi4zNjI5OWE2IDEwMDY0NAotLS0g YS9nY2MvdHJlZS1wYXNzLmgKKysrIGIvZ2NjL3RyZWUtcGFzcy5oCkBAIC0z OTgsNiArMzk4LDcgQEAgZXh0ZXJuIGdpbXBsZV9vcHRfcGFzcyAqbWFrZV9w YXNzX2RjZSAoZ2NjOjpjb250ZXh0ICpjdHh0KTsKIGV4dGVybiBnaW1wbGVf b3B0X3Bhc3MgKm1ha2VfcGFzc19jZF9kY2UgKGdjYzo6Y29udGV4dCAqY3R4 dCk7CiBleHRlcm4gZ2ltcGxlX29wdF9wYXNzICptYWtlX3Bhc3NfY2FsbF9j ZGNlIChnY2M6OmNvbnRleHQgKmN0eHQpOwogZXh0ZXJuIGdpbXBsZV9vcHRf cGFzcyAqbWFrZV9wYXNzX21lcmdlX3BoaSAoZ2NjOjpjb250ZXh0ICpjdHh0 KTsKK2V4dGVybiBnaW1wbGVfb3B0X3Bhc3MgKm1ha2VfcGFzc190aHJlYWRf anVtcHMgKGdjYzo6Y29udGV4dCAqY3R4dCk7CiBleHRlcm4gZ2ltcGxlX29w dF9wYXNzICptYWtlX3Bhc3Nfc3BsaXRfY3JpdF9lZGdlcyAoZ2NjOjpjb250 ZXh0ICpjdHh0KTsKIGV4dGVybiBnaW1wbGVfb3B0X3Bhc3MgKm1ha2VfcGFz c19sYWRkcmVzcyAoZ2NjOjpjb250ZXh0ICpjdHh0KTsKIGV4dGVybiBnaW1w bGVfb3B0X3Bhc3MgKm1ha2VfcGFzc19wcmUgKGdjYzo6Y29udGV4dCAqY3R4 dCk7CmRpZmYgLS1naXQgYS9nY2MvdHJlZS1zc2EtdGhyZWFkYmFja3dhcmQu YyBiL2djYy90cmVlLXNzYS10aHJlYWRiYWNrd2FyZC5jCmluZGV4IDYzNmI2 N2QuLjU3ZjFmNWMgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLXNzYS10aHJlYWRi YWNrd2FyZC5jCisrKyBiL2djYy90cmVlLXNzYS10aHJlYWRiYWNrd2FyZC5j CkBAIC0zMyw2ICszMyw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZp bGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAjaW5jbHVkZSAidHJlZS1zc2Et bG9vcC5oIgogI2luY2x1ZGUgImNmZ2FuYWwuaCIKICNpbmNsdWRlICJ0cmVl LXBhc3MuaCIKKyNpbmNsdWRlICJnaW1wbGUtc3NhLmgiCisjaW5jbHVkZSAi dHJlZS1waGlub2Rlcy5oIgogCiBzdGF0aWMgaW50IG1heF90aHJlYWRlZF9w YXRoczsKIApAQCAtNTk2LDE1ICs1OTgsMTMgQEAgZnNtX2ZpbmRfY29udHJv bF9zdGF0ZW1lbnRfdGhyZWFkX3BhdGhzICh0cmVlIG5hbWUsCiAgICBmaW5k aW5nIGEgcGF0aCB3aGVyZSBOQU1FIGlzIGEgY29uc3RhbnQsIHdlIGNhbiB0 aHJlYWQgdGhlIHBhdGguICAqLwogCiB2b2lkICAKLWZpbmRfanVtcF90aHJl YWRzX2JhY2t3YXJkcyAoZWRnZSBlKQorZmluZF9qdW1wX3RocmVhZHNfYmFj a3dhcmRzIChiYXNpY19ibG9jayBiYikKIHsgICAgIAogICBpZiAoIWZsYWdf ZXhwZW5zaXZlX29wdGltaXphdGlvbnMKLSAgICAgIHx8IG9wdGltaXplX2Z1 bmN0aW9uX2Zvcl9zaXplX3AgKGNmdW4pCi0gICAgICB8fCBlLT5kZXN0LT5s b29wX2ZhdGhlciAhPSBlLT5zcmMtPmxvb3BfZmF0aGVyCi0gICAgICB8fCBs b29wX2RlcHRoIChlLT5kZXN0LT5sb29wX2ZhdGhlcikgPT0gMCkKKyAgICAg IHx8IG9wdGltaXplX2Z1bmN0aW9uX2Zvcl9zaXplX3AgKGNmdW4pKQogICAg IHJldHVybjsKIAotICBnaW1wbGUgKnN0bXQgPSBnZXRfZ2ltcGxlX2NvbnRy b2xfc3RtdCAoZS0+ZGVzdCk7CisgIGdpbXBsZSAqc3RtdCA9IGdldF9naW1w bGVfY29udHJvbF9zdG10IChiYik7CiAgIGlmICghc3RtdCkKICAgICByZXR1 cm47CiAKQEAgLTYyOCw3ICs2MjgsNyBAQCBmaW5kX2p1bXBfdGhyZWFkc19i YWNrd2FyZHMgKGVkZ2UgZSkKIAogICB2ZWM8YmFzaWNfYmxvY2ssIHZhX2dj PiAqYmJfcGF0aDsKICAgdmVjX2FsbG9jIChiYl9wYXRoLCAxMCk7Ci0gIHZl Y19zYWZlX3B1c2ggKGJiX3BhdGgsIGUtPmRlc3QpOworICB2ZWNfc2FmZV9w dXNoIChiYl9wYXRoLCBiYik7CiAgIGhhc2hfc2V0PGJhc2ljX2Jsb2NrPiAq dmlzaXRlZF9iYnMgPSBuZXcgaGFzaF9zZXQ8YmFzaWNfYmxvY2s+OwogCiAg IG1heF90aHJlYWRlZF9wYXRocyA9IFBBUkFNX1ZBTFVFIChQQVJBTV9NQVhf RlNNX1RIUkVBRF9QQVRIUyk7CkBAIC02MzcsMyArNjM3LDYwIEBAIGZpbmRf anVtcF90aHJlYWRzX2JhY2t3YXJkcyAoZWRnZSBlKQogICBkZWxldGUgdmlz aXRlZF9iYnM7CiAgIHZlY19mcmVlIChiYl9wYXRoKTsKIH0KKworbmFtZXNw YWNlIHsKKworY29uc3QgcGFzc19kYXRhIHBhc3NfZGF0YV90aHJlYWRfanVt cHMgPQoreworICBHSU1QTEVfUEFTUywKKyAgInRocmVhZCIsCisgIE9QVEdS T1VQX05PTkUsCisgIFRWX1RSRUVfU1NBX1RIUkVBRF9KVU1QUywKKyAgKCBQ Uk9QX2NmZyB8IFBST1Bfc3NhICksCisgIDAsCisgIDAsCisgIDAsCisgICgg VE9ET19jbGVhbnVwX2NmZyB8IFRPRE9fdXBkYXRlX3NzYSApLAorfTsKKwor Y2xhc3MgcGFzc190aHJlYWRfanVtcHMgOiBwdWJsaWMgZ2ltcGxlX29wdF9w YXNzCit7CitwdWJsaWM6CisgIHBhc3NfdGhyZWFkX2p1bXBzIChnY2M6OmNv bnRleHQgKmN0eHQpCisgICAgOiBnaW1wbGVfb3B0X3Bhc3MgKHBhc3NfZGF0 YV90aHJlYWRfanVtcHMsIGN0eHQpCisgIHt9CisKKyAgb3B0X3Bhc3MgKiBj bG9uZSAodm9pZCkgeyByZXR1cm4gbmV3IHBhc3NfdGhyZWFkX2p1bXBzICht X2N0eHQpOyB9CisgIHZpcnR1YWwgYm9vbCBnYXRlIChmdW5jdGlvbiAqKTsK KyAgdmlydHVhbCB1bnNpZ25lZCBpbnQgZXhlY3V0ZSAoZnVuY3Rpb24gKik7 Cit9OworCitib29sCitwYXNzX3RocmVhZF9qdW1wczo6Z2F0ZSAoZnVuY3Rp b24gKmZ1biBBVFRSSUJVVEVfVU5VU0VEKQoreworICByZXR1cm4gKGZsYWdf ZXhwZW5zaXZlX29wdGltaXphdGlvbnMKKwkgICYmICEgb3B0aW1pemVfZnVu Y3Rpb25fZm9yX3NpemVfcCAoY2Z1bikpOworfQorCisKK3Vuc2lnbmVkIGlu dAorcGFzc190aHJlYWRfanVtcHM6OmV4ZWN1dGUgKGZ1bmN0aW9uICpmdW4p Cit7CisgIC8qIFRyeSB0byB0aHJlYWQgZWFjaCBibG9jayB3aXRoIG1vcmUg dGhhbiBvbmUgc3VjY2Vzc29yLiAgKi8KKyAgYmFzaWNfYmxvY2sgYmI7Cisg IEZPUl9FQUNIX0JCX0ZOIChiYiwgZnVuKQorICAgIHsKKyAgICAgIGlmIChF REdFX0NPVU5UIChiYi0+c3VjY3MpID4gMSkKKwlmaW5kX2p1bXBfdGhyZWFk c19iYWNrd2FyZHMgKGJiKTsKKyAgICB9CisgIHRocmVhZF90aHJvdWdoX2Fs bF9ibG9ja3MgKHRydWUpOworICByZXR1cm4gMDsKK30KKworfQorCitnaW1w bGVfb3B0X3Bhc3MgKgorbWFrZV9wYXNzX3RocmVhZF9qdW1wcyAoZ2NjOjpj b250ZXh0ICpjdHh0KQoreworICByZXR1cm4gbmV3IHBhc3NfdGhyZWFkX2p1 bXBzIChjdHh0KTsKK30KZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYS10aHJl YWRlZGdlLmMgYi9nY2MvdHJlZS1zc2EtdGhyZWFkZWRnZS5jCmluZGV4IGVj YTM4MTIuLjVmZDViOTggMTAwNjQ0Ci0tLSBhL2djYy90cmVlLXNzYS10aHJl YWRlZGdlLmMKKysrIGIvZ2NjL3RyZWUtc3NhLXRocmVhZGVkZ2UuYwpAQCAt MzQsNyArMzQsNiBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENP UFlJTkczLiAgSWYgbm90IHNlZQogI2luY2x1ZGUgInBhcmFtcy5oIgogI2lu Y2x1ZGUgInRyZWUtc3NhLXNjb3BlZHRhYmxlcy5oIgogI2luY2x1ZGUgInRy ZWUtc3NhLXRocmVhZGVkZ2UuaCIKLSNpbmNsdWRlICJ0cmVlLXNzYS10aHJl YWRiYWNrd2FyZC5oIgogI2luY2x1ZGUgInRyZWUtc3NhLWRvbS5oIgogI2lu Y2x1ZGUgImdpbXBsZS1mb2xkLmgiCiAKQEAgLTExODMsOCArMTE4Miw2IEBA IHRocmVhZF9hY3Jvc3NfZWRnZSAoZ2NvbmQgKmR1bW15X2NvbmQsCiAgICAg ICBwYXRoLT5yZWxlYXNlICgpOwogICAgICAgZGVsZXRlIHBhdGg7CiAKLSAg ICAgIGZpbmRfanVtcF90aHJlYWRzX2JhY2t3YXJkcyAoZSk7Ci0KICAgICAg IC8qIEEgbmVnYXRpdmUgc3RhdHVzIGluZGljYXRlcyB0aGUgdGFyZ2V0IGJs b2NrIHdhcyBkZWVtZWQgdG9vIGJpZyB0bwogCSBkdXBsaWNhdGUuICBKdXN0 IHF1aXQgbm93IHJhdGhlciB0aGFuIHRyeWluZyB0byB1c2UgdGhlIGJsb2Nr IGFzCiAJIGEgam9pbmVyIGluIGEganVtcCB0aHJlYWRpbmcgcGF0aC4KQEAg LTEyMzEsMTAgKzEyMjgsNyBAQCB0aHJlYWRfYWNyb3NzX2VkZ2UgKGdjb25k ICpkdW1teV9jb25kLAogICAgICAgewogCWlmICgoZS0+ZmxhZ3MgJiBFREdF X0RGU19CQUNLKSAhPSAwCiAJICAgIHx8ICh0YWtlbl9lZGdlLT5mbGFncyAm IEVER0VfREZTX0JBQ0spICE9IDApCi0JICB7Ci0JICAgIGZpbmRfanVtcF90 aHJlYWRzX2JhY2t3YXJkcyAodGFrZW5fZWRnZSk7Ci0JICAgIGNvbnRpbnVl OwotCSAgfQorCSAgY29udGludWU7CiAKIAkvKiBQdXNoIGEgZnJlc2ggbWFy a2VyIHNvIHdlIGNhbiB1bndpbmQgdGhlIGVxdWl2YWxlbmNlcyBjcmVhdGVk CiAJICAgZm9yIGVhY2ggb2YgRS0+ZGVzdCdzIHN1Y2Nlc3NvcnMuICAqLwpA QCAtMTI4MiwxMCArMTI3Niw3IEBAIHRocmVhZF9hY3Jvc3NfZWRnZSAoZ2Nv bmQgKmR1bW15X2NvbmQsCiAJICAgIHJlZ2lzdGVyX2p1bXBfdGhyZWFkIChw YXRoKTsKIAkgIH0KIAllbHNlCi0JICB7Ci0JICAgIGZpbmRfanVtcF90aHJl YWRzX2JhY2t3YXJkcyAocGF0aC0+bGFzdCAoKS0+ZSk7Ci0JICAgIGRlbGV0 ZV9qdW1wX3RocmVhZF9wYXRoIChwYXRoKTsKLQkgIH0KKwkgIGRlbGV0ZV9q dW1wX3RocmVhZF9wYXRoIChwYXRoKTsKIAogCS8qIEFuZCB1bndpbmQgdGhl IGVxdWl2YWxlbmNlIHRhYmxlLiAgKi8KIAlpZiAoYXZhaWxfZXhwcnNfc3Rh Y2spCg== --------------B6D1D1FA56D66B8783CA9547--