From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.bugs Subject: bug#33847: 27.0.50; emacsclient does not find server socket Date: Fri, 21 Aug 2020 14:28:36 -0700 Organization: UCLA Computer Science Department Message-ID: References: <8a6fc59c-08b3-e274-4fb1-74674c79540a@cs.ucla.edu> <9ebcad22-2cdb-46fb-4be9-efc4ad234b6d@cs.ucla.edu> <27d2f2eb-8956-4088-f3ec-5ff6c2cf2e8f@cs.ucla.edu> <87eeo27v6k.fsf@gnus.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------B4492B69FE93BEFD072D593D" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5917"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 Cc: Teika Kazura , 33847@debbugs.gnu.org, Ulrich Mueller To: Lars Ingebrigtsen , Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Aug 21 23:29:12 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1k9Eb1-0001MP-Os for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 21 Aug 2020 23:29:12 +0200 Original-Received: from localhost ([::1]:40696 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k9Eb0-0002D6-Go for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 21 Aug 2020 17:29:10 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:56504) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k9Eas-0002CZ-7R for bug-gnu-emacs@gnu.org; Fri, 21 Aug 2020 17:29:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:36860) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1k9Ear-0005qS-Ti for bug-gnu-emacs@gnu.org; Fri, 21 Aug 2020 17:29:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1k9Ear-0007Oe-MW for bug-gnu-emacs@gnu.org; Fri, 21 Aug 2020 17:29:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Paul Eggert Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 21 Aug 2020 21:29:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33847 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 33847-submit@debbugs.gnu.org id=B33847.159804533228417 (code B ref 33847); Fri, 21 Aug 2020 21:29:01 +0000 Original-Received: (at 33847) by debbugs.gnu.org; 21 Aug 2020 21:28:52 +0000 Original-Received: from localhost ([127.0.0.1]:48406 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1k9Eag-0007OG-Nb for submit@debbugs.gnu.org; Fri, 21 Aug 2020 17:28:52 -0400 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:37594) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1k9Eac-0007O0-Kw for 33847@debbugs.gnu.org; Fri, 21 Aug 2020 17:28:49 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id BBB88160084; Fri, 21 Aug 2020 14:28:40 -0700 (PDT) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id qS8K1vv_avr6; Fri, 21 Aug 2020 14:28:37 -0700 (PDT) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id D2A8E1600C6; Fri, 21 Aug 2020 14:28:37 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id UJ3Sx6RtLde6; Fri, 21 Aug 2020 14:28:37 -0700 (PDT) Original-Received: from [192.168.1.9] (cpe-75-82-69-226.socal.res.rr.com [75.82.69.226]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id E98FC160084; Fri, 21 Aug 2020 14:28:36 -0700 (PDT) Autocrypt: addr=eggert@cs.ucla.edu; prefer-encrypt=mutual; keydata= LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCgptUUlOQkV5QWNtUUJFQURB QXlIMnhvVHU3cHBHNUQzYThGTVpFb243NGRDdmM0K3ExWEEySjJ0QnkycHdhVHFmCmhweHhk R0E5Smo1MFVKM1BENGJTVUVnTjh0TFowc2FuNDdsNVhUQUZMaTI0NTZjaVNsNW04c0thSGxH ZHQ5WG0KQUF0bVhxZVpWSVlYL1VGUzk2ZkR6ZjR4aEVtbS95N0xiWUVQUWRVZHh1NDd4QTVL aFRZcDVibHRGM1dZRHoxWQpnZDdneDA3QXV3cDdpdzdlTnZub0RUQWxLQWw4S1lEWnpiRE5D UUdFYnBZM2VmWkl2UGRlSStGV1FONFcra2doCnkrUDZhdTZQcklJaFlyYWV1YTdYRGRiMkxT MWVuM1NzbUUzUWpxZlJxSS9BMnVlOEpNd3N2WGUvV0szOEV6czYKeDc0aVRhcUkzQUZINmls QWhEcXBNbmQvbXNTRVNORnQ3NkRpTzFaS1FNcjlhbVZQa25qZlBtSklTcWRoZ0IxRApsRWR3 MzRzUk9mNlY4bVp3MHhmcVQ2UEtFNDZMY0ZlZnpzMGtiZzRHT1JmOHZqRzJTZjF0azVlVThN Qml5Ti9iClowM2JLTmpOWU1wT0REUVF3dVA4NGtZTGtYMndCeHhNQWhCeHdiRFZadWR6eERa SjFDMlZYdWpDT0pWeHEya2wKakJNOUVUWXVVR3FkNzVBVzJMWHJMdzYrTXVJc0hGQVlBZ1Jy NytLY3dEZ0JBZndoU In-Reply-To: <87eeo27v6k.fsf@gnus.org> Content-Language: en-US X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:185910 Archived-At: This is a multi-part message in MIME format. --------------B4492B69FE93BEFD072D593D Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 8/19/20 4:05 AM, Lars Ingebrigtsen wrote: > I've just skimmed the thread, but the patch seems to me like a > reasonable thing to add to make these use cases work again. Although that patch would makes the use cases work again, it does so at the expense of security in XDG environments, because it opens holes allowing symlink attacks. You log in in an XDG environment, you don't run Emacs server, you run emacsclient - and the attacker's symlink in /tmp (or whatever) causes emacsclient to send garbage to some other socket of yours that may not be prepared for the garbage. I spent quite a bit of time looking into this and came up with the attached proposed patch which should make the use cases work again without opening security holes. This patch fixes some other bugs that I noticed while I was in the area. These use cases continue to be dubious security-wise (for other programs as well as for Emacs), but if they're popular then this patch should help people avoid shooting themselves in the foot quite so often. --------------B4492B69FE93BEFD072D593D Content-Type: text/plain; charset=UTF-8; name="0001-Redo-emacsclient-socket-symlink-attack-checking.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Redo-emacsclient-socket-symlink-attack-checking.txt" RnJvbSBhOWNmYTk3YzA5OTlkZDQ1YjVkOWU3MjdkZDY1MzJmODU2NTQ4MmI3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBGcmksIDIxIEF1ZyAyMDIwIDE0OjE2OjEzIC0wNzAwClN1YmplY3Q6IFtQQVRD SF0gUmVkbyBlbWFjc2NsaWVudCBzb2NrZXQgc3ltbGluay1hdHRhY2sgY2hlY2tpbmcKTUlN RS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKClRoaXMgYWRkcmVzc2VzIEJ1ZyMz Mzg0Nywgd2hpY2ggY29tcGxhaW5lZCBhYm91dCBlbWFjc2NsaWVudCBpbiBhCnNhZmVyIFhE RyBlbnZpcm9ubWVudCBub3QgY29ubmVjdGluZyB0byBhbiBFbWFjcyBzZXJ2ZXIgcnVubmlu ZyBpbgphIGxlc3Mtc2FmZSBlbnZpcm9tZW50IG91dHNpZGUgWERHLiAgVGhlIHBhdGNoIGZp eGVzIGEKbG9uZ3N0YW5kaW5nIGlzc3VlIHdpdGggZW1hY3NjbGllbnQgcGVybWlzc2lvbiBj aGVja2luZy4KSXTigJlzIGluZWZmZWN0aXZlIHRvIGxvb2sgYXQgdGhlIHBlcm1pc3Npb24g b2YgdGhlIHNvY2tldCBmaWxlCml0c2VsZjsgb24gc29tZSBwbGF0Zm9ybXMsIHRoZXNlIHBl cm1pc3Npb25zIGFyZSBpZ25vcmVkIGFueXdheS4KV2hhdCBtYXR0ZXJzIGFyZSB0aGUgcGVy bWlzc2lvbnMgb24gdGhlIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhlCnNvY2tldCBmaWxlLCBh cyB0aGVzZSBhcmUgd2hhdCBtYWtlIHN5bWxpbmsgYXR0YWNrcyBwb3NzaWJsZS4KQ2hhbmdl IHRoZSBwZXJtaXNzaW9ucyBjaGVjayBhY2NvcmRpbmdseSwgYW5kIGFsc28gcmVmdXNlIHRv CmZvbGxvdyBzeW1saW5rcyB0byB0aGF0IHBhcmVudCBkaXJlY3RvcnkuICBUaGVzZSBjaGFu Z2VzIG1ha2UgaXQKT0sgZm9yIGVtYWNzY2xpZW50IHRvIGZhbGwgYmFjayBmcm9tIFhER19S VU5USU1FX0RJUiB0byB0aGUKdHJhZGl0aW9uYWxseSBsZXNzLXNhZmUgL3RtcC9lbWFjc05O Tk4gZGlyZWN0b3JpZXMsIHNpbmNlIC90bXAgaXMKdW5pdmVyc2FsbHkgc3RpY2t5IG5vd2Fk YXlzLgoqIGFkbWluL21lcmdlLWdudWxpYiAoR05VTElCX01PRFVMRVMpOiBBZGQgZmlsZS1o YXMtYWNsLgoqIGxpYi9maWxlLWhhcy1hY2wuYzogTmV3IGZpbGUsIGNvcGllZCBmcm9tIEdu dWxpYi4KKiBsaWIvZ251bGliLm1rLmluLCBtNC9nbnVsaWItY29tcC5tNDogUmVnZW5lcmF0 ZS4KKiBsaWItc3JjL2VtYWNzY2xpZW50LmM6IEluY2x1ZGUgYWNsLmgsIGZvciBmaWxlX2hh c19hY2wuCihPX1BBVEgpOiBEZWZhdWx0IHRvIE9fU0VBUkNILCB3aGljaCBpcyBnb29kIGVu b3VnaCBoZXJlLgoodW5pb24gbG9jYWxfc29ja2FkZHIpOiBOZXcgdHlwZS4KKHNvY2tldF9z dGF0dXMpOiBSZW1vdmUsIHJlcGxhY2luZyB3aXRoIC4uLgooY29ubmVjdF9zb2NrZXQpOiBO ZXcgZnVuY3Rpb24uICBBbGwgY2FsbGVycyBjaGFuZ2VkLgpUaGlzIGZ1bmN0aW9uIGNoZWNr cyBmb3Igb3duZXJzaGlwIGFuZCBwZXJtaXNzaW9ucyBpc3N1ZXMgd2l0aCB0aGUKcGFyZW50 IGRpcmVjdG9yeSBvZiB0aGUgc29ja2V0IGZpbGUsIGluc3RlYWQgb2YgY2hlY2tpbmcgdGhl Cm93bmVyIG9mIHRoZSBzb2NrZXQgKHdoaWNoIGRvZXMgbm90IGhlbHAgc2VjdXJpdHkpLgoo c29ja25hbWVzaXplKTogTW92ZSB0byBmaWxlIHNjb3BlLgoobG9jYWxfc29ja25hbWUpOiBO ZXcgYXJnIFMuICBObyBuZWVkIHRvIHBhc3Mgc29ja25hbWVzaXplLgpVSUQgYXJnIGlzIG5v dyB1aWRfdC4gIEFsbCBjYWxsZXJzIGNoYW5nZWQuICBHZXQgZmlsZSBkZXNjcmlwdG9yCm9m IHBhcmVudCBkaXJlY3Rvcnkgb2Ygc29ja2V0LCB0byBmb2lsIHNvbWUgc3ltbGluayBhdHRh Y2tzLgpEbyBub3QgZm9sbG93IHN5bWxpbmtzIHRvIHRoYXQgZGlyZWN0b3J5Lgooc2V0X2xv Y2FsX3NvY2tldCk6IENyZWF0ZSB0aGUgc29ja2V0IGhlcmUgaW5zdGVhZCBvZiBvbgplYWNo IGF0dGVtcHQgdG8gY29ubmVjdCBpdC4gIEZhbGwgYmFjayBmcm9tIFhER19SVU5USU1FX0RJ Ugp0byAvdG1wIG9ubHkgaWYgdGhlIGZvcm1lciBmYWlscyBkdWUgdG8gRU5PRU5ULiAgQWRq dXN0CnBlcm1pc3Npb24tZmFpbHVyZSBkaWFnbm9zdGljIHRvIG1hdGNoIGNoYW5nZWQgYmVo YXZpb3IuCi0tLQogYWRtaW4vbWVyZ2UtZ251bGliICAgIHwgICAyICstCiBsaWItc3JjL2Vt YWNzY2xpZW50LmMgfCAyMjQgKysrKysrKysrKysrLS0tLS0tLQogbGliL2ZpbGUtaGFzLWFj bC5jICAgIHwgNTEwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogbGliL2dudWxpYi5tay5pbiAgICAgIHwgIDExICsKIG00L2dudWxpYi1jb21wLm00ICAg ICB8ICAgMyArCiA1IGZpbGVzIGNoYW5nZWQsIDY3MCBpbnNlcnRpb25zKCspLCA4MCBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvZmlsZS1oYXMtYWNsLmMKCmRpZmYg LS1naXQgYS9hZG1pbi9tZXJnZS1nbnVsaWIgYi9hZG1pbi9tZXJnZS1nbnVsaWIKaW5kZXgg M2YzMjUzNmE2Mi4uYTQ5YzkxYzkxMCAxMDA3NTUKLS0tIGEvYWRtaW4vbWVyZ2UtZ251bGli CisrKyBiL2FkbWluL21lcmdlLWdudWxpYgpAQCAtMzMsNyArMzMsNyBAQCBHTlVMSUJfTU9E VUxFUz0KICAgY3J5cHRvL21kNS1idWZmZXIgY3J5cHRvL3NoYTEtYnVmZmVyIGNyeXB0by9z aGEyNTYtYnVmZmVyIGNyeXB0by9zaGE1MTItYnVmZmVyCiAgIGQtdHlwZSBkaWZmc2VxIGRv dWJsZS1zbGFzaC1yb290IGR0b2FzdHIgZHRvdGltZXNwZWMgZHVwMgogICBlbnZpcm9uIGV4 ZWNpbmZvIGV4cGxpY2l0X2J6ZXJvIGZhY2Nlc3NhdAotICBmY2htb2RhdCBmY250bCBmY250 bC1oIGZkb3BlbmRpcgorICBmY2htb2RhdCBmY250bCBmY250bC1oIGZkb3BlbmRpciBmaWxl LWhhcy1hY2wKICAgZmlsZW1vZGUgZmlsZW5hbWUgZmlsZXZlcmNtcCBmbGV4bWVtYmVyIGZw aWVlZSBmc3RhdGF0IGZzdXNhZ2UgZnN5bmMgZnV0aW1lbnMKICAgZ2V0bG9hZGF2ZyBnZXRv cHQtZ251IGdldHJhbmRvbSBnZXR0aW1lIGdldHRpbWVvZmRheSBnaXRsb2ctdG8tY2hhbmdl bG9nCiAgIGllZWU3NTQtaCBpZ25vcmUtdmFsdWUgaW50cHJvcHMgbGFyZ2VmaWxlIGxpYmdt cCBsc3RhdApkaWZmIC0tZ2l0IGEvbGliLXNyYy9lbWFjc2NsaWVudC5jIGIvbGliLXNyYy9l bWFjc2NsaWVudC5jCmluZGV4IDg3MWZhN2E4ZDMuLjE1MTRkNmRhZDMgMTAwNjQ0Ci0tLSBh L2xpYi1zcmMvZW1hY3NjbGllbnQuYworKysgYi9saWItc3JjL2VtYWNzY2xpZW50LmMKQEAg LTgwLDYgKzgwLDcgQEAgQ29weXJpZ2h0IChDKSAxOTg2LTE5ODcsIDE5OTQsIDE5OTktMjAy MCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICNpbmNsdWRlIDxzeXMvc3RhdC5o PgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCisjaW5jbHVkZSA8YWNsLmg+CiAjaW5jbHVkZSA8 ZmlsZW5hbWUuaD4KICNpbmNsdWRlIDxpbnRwcm9wcy5oPgogI2luY2x1ZGUgPG1pbi1tYXgu aD4KQEAgLTkxLDYgKzkyLDEwIEBAIENvcHlyaWdodCAoQykgMTk4Ni0xOTg3LCAxOTk0LCAx OTk5LTIwMjAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjIHByYWdtYSBHQ0Mg ZGlhZ25vc3RpYyBpZ25vcmVkICItV2Zvcm1hdC10cnVuY2F0aW9uPTIiCiAjZW5kaWYKIAor I2lmbmRlZiBPX1BBVEgKKyMgZGVmaW5lIE9fUEFUSCBPX1NFQVJDSAorI2VuZGlmCisKIAwK IC8qIE5hbWUgdXNlZCB0byBpbnZva2UgdGhpcyBwcm9ncmFtLiAgKi8KIHN0YXRpYyBjaGFy IGNvbnN0ICpwcm9nbmFtZTsKQEAgLTExNDMsMjQgKzExNDgsNzQgQEAgcHJvY2Vzc19ncm91 cGluZyAodm9pZCkKIAogI2lmZGVmIFNPQ0tFVFNfSU5fRklMRV9TWVNURU0KIAotLyogUmV0 dXJuIHRoZSBmaWxlIHN0YXR1cyBvZiBOQU1FLCBvcmRpbmFyaWx5IGEgc29ja2V0LgotICAg SXQgc2hvdWxkIGJlIG93bmVkIGJ5IFVJRC4gIFJldHVybiBvbmUgb2YgdGhlIGZvbGxvd2lu ZzoKLSAgPjAgLSAnc3RhdCcgZmFpbGVkIHdpdGggdGhpcyBlcnJubyB2YWx1ZQotICAtMSAt IGlzbid0IG93bmVkIGJ5IHVzCi0gICAwIC0gc3VjY2Vzczogbm9uZSBvZiB0aGUgYWJvdmUg Ki8KKy8qIEEgbG9jYWwgc29ja2V0IGFkZHJlc3MuICBUaGUgdW5pb24gYXZvaWRzIHRoZSBu ZWVkIHRvIGNhc3QuICAqLwordW5pb24gbG9jYWxfc29ja2FkZHIKK3sKKyAgc3RydWN0IHNv Y2thZGRyX3VuIHVuOworICBzdHJ1Y3Qgc29ja2FkZHIgc2E7Cit9OworCisvKiBSZWxhdGl2 ZSB0byB0aGUgZGlyZWN0b3J5IERJUkZELCBjb25uZWN0IHRoZSBzb2NrZXQgZmlsZSBuYW1l ZCBBRERSCisgICB0byB0aGUgc29ja2V0IFMuICBSZXR1cm4gMCBpZiBzdWNjZXNzZnVsLCAt MSBpZiBESVJGRCBpcyBub3QKKyAgIEFUX0ZEQ1dEIGFuZCBESVJGRCdzIHBlcm1pc3Npb25z IHdvdWxkIGFsbG93IGEgc3ltbGluayBhdHRhY2ssIGFuCisgICBlcnJubyBvdGhlcndpc2Uu ICAqLwogCiBzdGF0aWMgaW50Ci1zb2NrZXRfc3RhdHVzIChjb25zdCBjaGFyICpuYW1lLCB1 aWRfdCB1aWQpCitjb25uZWN0X3NvY2tldCAoaW50IGRpcmZkLCBjaGFyIGNvbnN0ICphZGRy LCBpbnQgcywgdWlkX3QgdWlkKQogewotICBzdHJ1Y3Qgc3RhdCBzdGF0YmZyOworICBpbnQg c29ja19zdGF0dXMgPSAwOwogCi0gIGlmIChzdGF0IChuYW1lLCAmc3RhdGJmcikgIT0gMCkK LSAgICByZXR1cm4gZXJybm87CisgIHVuaW9uIGxvY2FsX3NvY2thZGRyIHNlcnZlcjsKKyAg aWYgKHNpemVvZiBzZXJ2ZXIudW4uc3VuX3BhdGggPD0gc3RybGVuIChhZGRyKSkKKyAgICBy ZXR1cm4gRU5BTUVUT09MT05HOworICBzZXJ2ZXIudW4uc3VuX2ZhbWlseSA9IEFGX1VOSVg7 CisgIHN0cmNweSAoc2VydmVyLnVuLnN1bl9wYXRoLCBhZGRyKTsKIAotICBpZiAoc3RhdGJm ci5zdF91aWQgIT0gdWlkKQotICAgIHJldHVybiAtMTsKKyAgLyogSWYgLTEsIFdERkQgaXMg bm90IHNldCB5ZXQuICBJZiBub25uZWdhdGl2ZSwgV0RGRCBpcyBhIGZpbGUKKyAgICAgZGVz Y3JpcHRvciBmb3IgdGhlIGluaXRpYWwgd29ya2luZyBkaXJlY3RvcnkuICBPdGhlcndpc2Ug LTEgLSBXREZEIGlzCisgICAgIHRoZSBlcnJvciBudW1iZXIgZm9yIHRoZSBpbml0aWFsIHdv cmtpbmcgZGlyZWN0b3J5LiAgKi8KKyAgc3RhdGljIGludCB3ZGZkID0gLTE7CiAKLSAgcmV0 dXJuIDA7CisgIGlmIChkaXJmZCAhPSBBVF9GRENXRCkKKyAgICB7CisgICAgICAvKiBGYWls IGlmIERJUkZEJ3MgcGVybWlzc2lvbnMgYXJlIGJvZ3VzLiAgKi8KKyAgICAgIHN0cnVjdCBz dGF0IHN0OworICAgICAgaWYgKGZzdGF0IChkaXJmZCwgJnN0KSAhPSAwKQorCXJldHVybiBl cnJubzsKKyAgICAgIGlmIChzdC5zdF91aWQgIT0gdWlkIHx8IChzdC5zdF9tb2RlICYgKFNf SVdHUlAgfCBTX0lXT1RIKSkpCisJcmV0dXJuIC0xOworCisgICAgICBpZiAod2RmZCA9PSAt MSkKKwl7CisJICAvKiBTYXZlIHRoZSBpbml0aWFsIHdvcmtpbmcgZGlyZWN0b3J5LiAgKi8K KwkgIHdkZmQgPSBvcGVuICgiLiIsIE9fUEFUSCB8IE9fQ0xPRVhFQyk7CisJICBpZiAod2Rm ZCA8IDApCisJICAgIHdkZmQgPSAtMSAtIGVycm5vOworCX0KKyAgICAgIGlmICh3ZGZkIDwg MCkKKwlyZXR1cm4gLTEgLSB3ZGZkOworICAgICAgaWYgKGZjaGRpciAoZGlyZmQpICE9IDAp CisJcmV0dXJuIGVycm5vOworCisgICAgICAvKiBGYWlsIGlmIERJUkZEIGhhcyBhbiBBQ0ws IHdoaWNoIG1lYW5zIGl0cyBwZXJtaXNzaW9ucyBhcmUKKwkgYWxtb3N0IHN1cmVseSBib2d1 cy4gICovCisgICAgICBpbnQgaGFzX2FjbCA9IGZpbGVfaGFzX2FjbCAoIi4iLCAmc3QpOwor ICAgICAgaWYgKGhhc19hY2wpCisJc29ja19zdGF0dXMgPSBoYXNfYWNsIDwgMCA/IGVycm5v IDogLTE7CisgICAgfQorCisgIGlmICghc29ja19zdGF0dXMpCisgICAgc29ja19zdGF0dXMg PSBjb25uZWN0IChzLCAmc2VydmVyLnNhLCBzaXplb2Ygc2VydmVyLnVuKSA9PSAwID8gMCA6 IGVycm5vOworCisgIC8qIEZhaWwgaW1tZWRpYXRlbHkgaWYgd2UgY2Fubm90IGNoYW5nZSBi YWNrIHRvIHRoZSBpbml0aWFsIHdvcmtpbmcKKyAgICAgZGlyZWN0b3J5LCBhcyB0aGF0IGNh biBtZXNzIHVwIHRoZSByZXN0IG9mIGV4ZWN1dGlvbi4gICovCisgIGlmIChkaXJmZCAhPSBB VF9GRENXRCAmJiBmY2hkaXIgKHdkZmQpICE9IDApCisgICAgeworICAgICAgbWVzc2FnZSAo dHJ1ZSwgIiVzOiAuOiAlc1xuIiwgcHJvZ25hbWUsIHN0cmVycm9yIChlcnJubykpOworICAg ICAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKKyAgICB9CisKKyAgcmV0dXJuIHNvY2tfc3RhdHVz OwogfQogCiAMCkBAIC0xMzM3LDMyICsxMzkyLDQ5IEBAIGFjdF9vbl9zaWduYWxzIChIU09D S0VUIGVtYWNzX3NvY2tldCkKICAgICB9CiB9CiAKLS8qIENyZWF0ZSBpbiBTT0NLTkFNRSAo b2Ygc2l6ZSBTT0NLTkFNRVNJWkUpIGEgbmFtZSBmb3IgYSBsb2NhbCBzb2NrZXQuCi0gICBU aGUgZmlyc3QgVE1QRElSTEVOIGJ5dGVzIG9mIFNPQ0tOQU1FIGFyZSBhbHJlYWR5IGluaXRp YWxpemVkIHRvIGJlCi0gICB0aGUgbmFtZSBvZiBhIHRlbXBvcmFyeSBkaXJlY3RvcnkuICBV c2UgVUlEIGFuZCBTRVJWRVJfTkFNRSB0bwotICAgY29uY29jdCB0aGUgbmFtZS4gIFJldHVy biB0aGUgdG90YWwgbGVuZ3RoIG9mIHRoZSBuYW1lIGlmIHN1Y2Nlc3NmdWwsCi0gICAtMSBp ZiBpdCBkb2VzIG5vdCBmaXQgKGFuZCBzdG9yZSBhIHRydW5jYXRlZCBuYW1lIGluIHRoYXQg Y2FzZSkuCi0gICBGYWlsIGlmIFRNUERJUkxFTiBpcyBvdXQgb2YgcmFuZ2UuICAqLworZW51 bSB7IHNvY2tuYW1lc2l6ZSA9IHNpemVvZiAoKHN0cnVjdCBzb2NrYWRkcl91biAqKSBOVUxM KS0+c3VuX3BhdGggfTsKKworLyogR2l2ZW4gYSBsb2NhbCBzb2NrZXQgUywgY3JlYXRlIGlu ICpTT0NLTkFNRSBhIG5hbWUgZm9yIGEgbG9jYWwgc29ja2V0CisgICBhbmQgY29ubmVjdCB0 byB0aGF0IHNvY2tldC4gIFRoZSBmaXJzdCBUTVBESVJMRU4gYnl0ZXMgb2YgKlNPQ0tOQU1F IGFyZQorICAgYWxyZWFkeSBpbml0aWFsaXplZCB0byBiZSB0aGUgbmFtZSBvZiBhIHRlbXBv cmFyeSBkaXJlY3RvcnkuCisgICBVc2UgVUlEIGFuZCBTRVJWRVJfTkFNRSB0byBjb25jb2N0 IHRoZSBuYW1lLiAgUmV0dXJuIDAgaWYKKyAgIHN1Y2Nlc3NmdWwsIC0xIGlmIHRoZSBzb2Nr ZXQncyBwYXJlbnQgZGlyZWN0b3J5IGlzIG5vdCBzYWZlLCBhbmQgYW4KKyAgIGVycm5vIGlm IHRoZXJlIGlzIHNvbWUgb3RoZXIgcHJvYmxlbS4gICovCiAKIHN0YXRpYyBpbnQKLWxvY2Fs X3NvY2tuYW1lIChjaGFyICpzb2NrbmFtZSwgaW50IHNvY2tuYW1lc2l6ZSwgaW50IHRtcGRp cmxlbiwKLQkJdWludG1heF90IHVpZCwgY2hhciBjb25zdCAqc2VydmVyX25hbWUpCitsb2Nh bF9zb2NrbmFtZSAoaW50IHMsIGNoYXIgc29ja25hbWVbc29ja25hbWVzaXplXSwgaW50IHRt cGRpcmxlbiwKKwkJdWlkX3QgdWlkLCBjaGFyIGNvbnN0ICpzZXJ2ZXJfbmFtZSkKIHsKICAg LyogSWYgISAoMCA8PSBUTVBESVJMRU4gJiYgVE1QRElSTEVOIDwgU09DS05BTUVTSVpFKSB0 aGUgdHJ1bmNhdGVkCiAgICAgIHRlbXBvcmFyeSBkaXJlY3RvcnkgbmFtZSBpcyBhbHJlYWR5 IGluIFNPQ0tOQU1FLCBzbyBub3RoaW5nIG1vcmUKICAgICAgbmVlZCBiZSBzdG9yZWQuICAq LwotICBpZiAoMCA8PSB0bXBkaXJsZW4pCi0gICAgewotICAgICAgaW50IHJlbWFpbmluZyA9 IHNvY2tuYW1lc2l6ZSAtIHRtcGRpcmxlbjsKLSAgICAgIGlmICgwIDwgcmVtYWluaW5nKQot CXsKLQkgIGludCBzdWZmaXhsZW4gPSBzbnByaW50ZiAoJnNvY2tuYW1lW3RtcGRpcmxlbl0s IHJlbWFpbmluZywKLQkJCQkgICAgIi9lbWFjcyUiUFJJdU1BWCIvJXMiLCB1aWQsIHNlcnZl cl9uYW1lKTsKLQkgIGlmICgwIDw9IHN1ZmZpeGxlbiAmJiBzdWZmaXhsZW4gPCByZW1haW5p bmcpCi0JICAgIHJldHVybiB0bXBkaXJsZW4gKyBzdWZmaXhsZW47Ci0JfQotICAgIH0KLSAg cmV0dXJuIC0xOworICBpZiAoISAoMCA8PSB0bXBkaXJsZW4gJiYgdG1wZGlybGVuIDwgc29j a25hbWVzaXplKSkKKyAgICByZXR1cm4gRU5BTUVUT09MT05HOworCisgIC8qIFB1dCB0aGUg ZnVsbCBhZGRyZXNzIG5hbWUgaW50byB0aGUgYnVmZmVyLCBzaW5jZSB0aGUgY2FsbGVyIG1p Z2h0CisgICAgIG5lZWQgaXQgZm9yIGRpYWdub3N0aWNzLiAgQnV0IGRvbid0IG92ZXJydW4g dGhlIGJ1ZmZlci4gICovCisgIHVpbnRtYXhfdCB1aWRtYXggPSB1aWQ7CisgIGludCBlbWFj c2RpcmxlbjsKKyAgaW50IHN1ZmZpeGxlbiA9IHNucHJpbnRmIChzb2NrbmFtZSArIHRtcGRp cmxlbiwgc29ja25hbWVzaXplIC0gdG1wZGlybGVuLAorCQkJICAgICIvZW1hY3MlIlBSSXVN QVgiJW4vJXMiLCB1aWRtYXgsICZlbWFjc2RpcmxlbiwKKwkJCSAgICBzZXJ2ZXJfbmFtZSk7 CisgIGlmICghICgwIDw9IHN1ZmZpeGxlbiAmJiBzdWZmaXhsZW4gPCBzb2NrbmFtZXNpemUg LSB0bXBkaXJsZW4pKQorICAgIHJldHVybiBFTkFNRVRPT0xPTkc7CisKKyAgLyogTWFrZSBz dXJlIHRoZSBhZGRyZXNzJ3MgcGFyZW50IGRpcmVjdG9yeSBpcyBub3QgYSBzeW1saW5rIGFu ZCBpcworICAgICB0aGlzIHVzZXIncyBkaXJlY3RvcnkgYW5kIGRvZXMgbm90IGxldCBvdGhl cnMgd3JpdGUgdG8gaXQ7IHRoaXMKKyAgICAgZmVuZHMgb2ZmIHNvbWUgc3ltbGluayBhdHRh Y2tzLiAgVG8gYXZvaWQgcmFjZXMsIGtlZXAgdGhlIHBhcmVudAorICAgICBkaXJlY3Rvcnkg b3BlbiB3aGlsZSBjaGVja2luZy4gICovCisgIGNoYXIgKmVtYWNzZGlyZW5kID0gc29ja25h bWUgKyB0bXBkaXJsZW4gKyBlbWFjc2RpcmxlbjsKKyAgKmVtYWNzZGlyZW5kID0gJ1wwJzsK KyAgaW50IGRpciA9IG9wZW5hdCAoQVRfRkRDV0QsIHNvY2tuYW1lLAorCQkgICAgT19QQVRI IHwgT19ESVJFQ1RPUlkgfCBPX05PRk9MTE9XIHwgT19DTE9FWEVDKTsKKyAgKmVtYWNzZGly ZW5kID0gJy8nOworICBpZiAoZGlyIDwgMCkKKyAgICByZXR1cm4gZXJybm87CisgIGludCBz b2NrX3N0YXR1cyA9IGNvbm5lY3Rfc29ja2V0IChkaXIsIHNlcnZlcl9uYW1lLCBzLCB1aWQp OworICBjbG9zZSAoZGlyKTsKKyAgcmV0dXJuIHNvY2tfc3RhdHVzOwogfQogCiAvKiBDcmVh dGUgYSBsb2NhbCBzb2NrZXQgZm9yIFNFUlZFUl9OQU1FIGFuZCBjb25uZWN0IGl0IHRvIEVt YWNzLiAgSWYKQEAgLTEzNzMsMjggKzE0NDUsNDMgQEAgbG9jYWxfc29ja25hbWUgKGNoYXIg KnNvY2tuYW1lLCBpbnQgc29ja25hbWVzaXplLCBpbnQgdG1wZGlybGVuLAogc3RhdGljIEhT T0NLRVQKIHNldF9sb2NhbF9zb2NrZXQgKGNoYXIgY29uc3QgKnNlcnZlcl9uYW1lKQogewot ICB1bmlvbiB7Ci0gICAgc3RydWN0IHNvY2thZGRyX3VuIHVuOwotICAgIHN0cnVjdCBzb2Nr YWRkciBzYTsKLSAgfSBzZXJ2ZXIgPSB7eyAuc3VuX2ZhbWlseSA9IEFGX1VOSVggfX07Cisg IHVuaW9uIGxvY2FsX3NvY2thZGRyIHNlcnZlcjsKKyAgaW50IHNvY2tfc3RhdHVzOwogICBj aGFyICpzb2NrbmFtZSA9IHNlcnZlci51bi5zdW5fcGF0aDsKLSAgZW51bSB7IHNvY2tuYW1l c2l6ZSA9IHNpemVvZiBzZXJ2ZXIudW4uc3VuX3BhdGggfTsKICAgaW50IHRtcGRpcmxlbiA9 IC0xOwogICBpbnQgc29ja25hbWVsZW4gPSAtMTsKICAgdWlkX3QgdWlkID0gZ2V0ZXVpZCAo KTsKICAgYm9vbCB0bXBkaXJfdXNlZCA9IGZhbHNlOworICBpbnQgcyA9IGNsb2V4ZWNfc29j a2V0IChBRl9VTklYLCBTT0NLX1NUUkVBTSwgMCk7CisgIGlmIChzIDwgMCkKKyAgICB7Cisg ICAgICBtZXNzYWdlICh0cnVlLCAiJXM6IGNhbid0IGNyZWF0ZSBzb2NrZXQ6ICVzXG4iLAor CSAgICAgICBwcm9nbmFtZSwgc3RyZXJyb3IgKGVycm5vKSk7CisgICAgICBmYWlsICgpOwor ICAgIH0KIAogICBpZiAoc3RyY2hyIChzZXJ2ZXJfbmFtZSwgJy8nKQogICAgICAgfHwgKElT U0xBU0ggKCdcXCcpICYmIHN0cmNociAoc2VydmVyX25hbWUsICdcXCcpKSkKLSAgICBzb2Nr bmFtZWxlbiA9IHNucHJpbnRmIChzb2NrbmFtZSwgc29ja25hbWVzaXplLCAiJXMiLCBzZXJ2 ZXJfbmFtZSk7CisgICAgeworICAgICAgc29ja25hbWVsZW4gPSBzbnByaW50ZiAoc29ja25h bWUsIHNvY2tuYW1lc2l6ZSwgIiVzIiwgc2VydmVyX25hbWUpOworICAgICAgc29ja19zdGF0 dXMgPSAoMCA8PSBzb2NrbmFtZWxlbiAmJiBzb2NrbmFtZWxlbiA8IHNvY2tuYW1lc2l6ZQor CQkgICAgID8gY29ubmVjdF9zb2NrZXQgKEFUX0ZEQ1dELCBzb2NrbmFtZSwgcywgMCkKKwkJ ICAgICA6IEVOQU1FVE9PTE9ORyk7CisgICAgfQogICBlbHNlCiAgICAgewogICAgICAgLyog c29ja2V0X25hbWUgaXMgYSBmaWxlIG5hbWUgY29tcG9uZW50LiAgKi8KKyAgICAgIHNvY2tf c3RhdHVzID0gRU5PRU5UOwogICAgICAgY2hhciBjb25zdCAqeGRnX3J1bnRpbWVfZGlyID0g ZWdldGVudiAoIlhER19SVU5USU1FX0RJUiIpOwogICAgICAgaWYgKHhkZ19ydW50aW1lX2Rp cikKLQlzb2NrbmFtZWxlbiA9IHNucHJpbnRmIChzb2NrbmFtZSwgc29ja25hbWVzaXplLCAi JXMvZW1hY3MvJXMiLAotCQkJCXhkZ19ydW50aW1lX2Rpciwgc2VydmVyX25hbWUpOwotICAg ICAgZWxzZQorCXsKKwkgIHNvY2tuYW1lbGVuID0gc25wcmludGYgKHNvY2tuYW1lLCBzb2Nr bmFtZXNpemUsICIlcy9lbWFjcy8lcyIsCisJCQkJICB4ZGdfcnVudGltZV9kaXIsIHNlcnZl cl9uYW1lKTsKKwkgIHNvY2tfc3RhdHVzID0gKDAgPD0gc29ja25hbWVsZW4gJiYgc29ja25h bWVsZW4gPCBzb2NrbmFtZXNpemUKKwkJCSA/IGNvbm5lY3Rfc29ja2V0IChBVF9GRENXRCwg c29ja25hbWUsIHMsIDApCisJCQkgOiBFTkFNRVRPT0xPTkcpOworCX0KKyAgICAgIGlmIChz b2NrX3N0YXR1cyA9PSBFTk9FTlQpCiAJewogCSAgY2hhciBjb25zdCAqdG1wZGlyID0gZWdl dGVudiAoIlRNUERJUiIpOwogCSAgaWYgKHRtcGRpcikKQEAgLTE0MTMsMjMgKzE1MDAsMjQg QEAgc2V0X2xvY2FsX3NvY2tldCAoY2hhciBjb25zdCAqc2VydmVyX25hbWUpCiAJICAgICAg aWYgKHRtcGRpcmxlbiA8IDApCiAJCXRtcGRpcmxlbiA9IHNucHJpbnRmIChzb2NrbmFtZSwg c29ja25hbWVzaXplLCAiL3RtcCIpOwogCSAgICB9Ci0JICBzb2NrbmFtZWxlbiA9IGxvY2Fs X3NvY2tuYW1lIChzb2NrbmFtZSwgc29ja25hbWVzaXplLCB0bXBkaXJsZW4sCisJICBzb2Nr X3N0YXR1cyA9IGxvY2FsX3NvY2tuYW1lIChzLCBzb2NrbmFtZSwgdG1wZGlybGVuLAogCQkJ CQl1aWQsIHNlcnZlcl9uYW1lKTsKIAkgIHRtcGRpcl91c2VkID0gdHJ1ZTsKIAl9CiAgICAg fQogCi0gIGlmICghICgwIDw9IHNvY2tuYW1lbGVuICYmIHNvY2tuYW1lbGVuIDwgc29ja25h bWVzaXplKSkKKyAgaWYgKHNvY2tfc3RhdHVzID09IDApCisgICAgcmV0dXJuIHM7CisKKyAg aWYgKHNvY2tfc3RhdHVzID09IEVOQU1FVE9PTE9ORykKICAgICB7CiAgICAgICBtZXNzYWdl ICh0cnVlLCAiJXM6IHNvY2tldC1uYW1lICVzLi4uIHRvbyBsb25nXG4iLCBwcm9nbmFtZSwg c29ja25hbWUpOwogICAgICAgZmFpbCAoKTsKICAgICB9CiAKLSAgLyogU2VlIGlmIHRoZSBz b2NrZXQgZXhpc3RzLCBhbmQgaWYgaXQncyBvd25lZCBieSB1cy4gKi8KLSAgaW50IHNvY2tf c3RhdHVzID0gc29ja2V0X3N0YXR1cyAoc29ja25hbWUsIHVpZCk7Ci0gIGlmIChzb2NrX3N0 YXR1cykKKyAgaWYgKHRtcGRpcl91c2VkKQogICAgIHsKLSAgICAgIC8qIEZhaWxpbmcgdGhh dCwgc2VlIGlmIExPR05BTUUgb3IgVVNFUiBleGlzdCBhbmQgZGlmZmVyIGZyb20KKyAgICAg IC8qIFNlZSB3aGV0aGVyIExPR05BTUUgb3IgVVNFUiBleGlzdCBhbmQgZGlmZmVyIGZyb20K IAkgb3VyIGV1aWQuICBJZiBzbywgbG9vayBmb3IgYSBzb2NrZXQgYmFzZWQgb24gdGhlIFVJ RAogCSBhc3NvY2lhdGVkIHdpdGggdGhlIG5hbWUuICBUaGlzIGlzIHJlbWluaXNjZW50IG9m IHRoZSBsb2dpYwogCSB0aGF0IGluaXRfZWRpdGZucyB1c2VzIHRvIHNldCB0aGUgZ2xvYmFs IFZ1c2VyX2Z1bGxfbmFtZS4gICovCkBAIC0xNDQ2LDQ4ICsxNTM0LDI2IEBAIHNldF9sb2Nh bF9zb2NrZXQgKGNoYXIgY29uc3QgKnNlcnZlcl9uYW1lKQogCSAgaWYgKHB3ICYmIHB3LT5w d191aWQgIT0gdWlkKQogCSAgICB7CiAJICAgICAgLyogV2UncmUgcnVubmluZyB1bmRlciBz dSwgYXBwYXJlbnRseS4gKi8KLQkgICAgICBzb2NrbmFtZWxlbiA9IGxvY2FsX3NvY2tuYW1l IChzb2NrbmFtZSwgc29ja25hbWVzaXplLCB0bXBkaXJsZW4sCisJICAgICAgc29ja19zdGF0 dXMgPSBsb2NhbF9zb2NrbmFtZSAocywgc29ja25hbWUsIHRtcGRpcmxlbiwKIAkJCQkJICAg IHB3LT5wd191aWQsIHNlcnZlcl9uYW1lKTsKLQkgICAgICBpZiAoc29ja25hbWVsZW4gPCAw KQorCSAgICAgIGlmIChzb2NrX3N0YXR1cyA9PSAwKQorCQlyZXR1cm4gczsKKwkgICAgICBp ZiAoc29ja19zdGF0dXMgPT0gRU5BTUVUT09MT05HKQogCQl7CiAJCSAgbWVzc2FnZSAodHJ1 ZSwgIiVzOiBzb2NrZXQtbmFtZSAlcy4uLiB0b28gbG9uZ1xuIiwKIAkJCSAgIHByb2duYW1l LCBzb2NrbmFtZSk7CiAJCSAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKIAkJfQotCi0JICAgICAg c29ja19zdGF0dXMgPSBzb2NrZXRfc3RhdHVzIChzb2NrbmFtZSwgdWlkKTsKIAkgICAgfQog CX0KICAgICB9CiAKLSAgaWYgKHNvY2tfc3RhdHVzID09IDApCi0gICAgewotICAgICAgSFNP Q0tFVCBzID0gY2xvZXhlY19zb2NrZXQgKEFGX1VOSVgsIFNPQ0tfU1RSRUFNLCAwKTsKLSAg ICAgIGlmIChzIDwgMCkKLQl7Ci0JICBtZXNzYWdlICh0cnVlLCAiJXM6IHNvY2tldDogJXNc biIsIHByb2duYW1lLCBzdHJlcnJvciAoZXJybm8pKTsKLQkgIHJldHVybiBJTlZBTElEX1NP Q0tFVDsKLQl9Ci0gICAgICBpZiAoY29ubmVjdCAocywgJnNlcnZlci5zYSwgc2l6ZW9mIHNl cnZlci51bikgIT0gMCkKLQl7Ci0JICBtZXNzYWdlICh0cnVlLCAiJXM6IGNvbm5lY3Q6ICVz XG4iLCBwcm9nbmFtZSwgc3RyZXJyb3IgKGVycm5vKSk7Ci0JICBDTE9TRV9TT0NLRVQgKHMp OwotCSAgcmV0dXJuIElOVkFMSURfU09DS0VUOwotCX0KLQotICAgICAgc3RydWN0IHN0YXQg Y29ubmVjdF9zdGF0OwotICAgICAgaWYgKGZzdGF0IChzLCAmY29ubmVjdF9zdGF0KSAhPSAw KQotCXNvY2tfc3RhdHVzID0gZXJybm87Ci0gICAgICBlbHNlIGlmIChjb25uZWN0X3N0YXQu c3RfdWlkID09IHVpZCkKLQlyZXR1cm4gczsKLSAgICAgIGVsc2UKLQlzb2NrX3N0YXR1cyA9 IC0xOwotCi0gICAgICBDTE9TRV9TT0NLRVQgKHMpOwotICAgIH0KKyAgY2xvc2UgKHMpOwog Ci0gIGlmIChzb2NrX3N0YXR1cyA8IDApCi0gICAgbWVzc2FnZSAodHJ1ZSwgIiVzOiBJbnZh bGlkIHNvY2tldCBvd25lclxuIiwgcHJvZ25hbWUpOworICBpZiAoc29ja19zdGF0dXMgPT0g LTEpCisgICAgbWVzc2FnZSAodHJ1ZSwKKwkgICAgICIlczogSW52YWxpZCBwZXJtaXNzaW9u cyBvbiBwYXJlbnQgZGlyZWN0b3J5IG9mIHNvY2tldDogJXNcbiIsCisJICAgICBwcm9nbmFt ZSwgc29ja25hbWUpOwogICBlbHNlIGlmIChzb2NrX3N0YXR1cyA9PSBFTk9FTlQpCiAgICAg ewogICAgICAgaWYgKHRtcGRpcl91c2VkKQpAQCAtMTUxNyw3ICsxNTgzLDcgQEAgc2V0X2xv Y2FsX3NvY2tldCAoY2hhciBjb25zdCAqc2VydmVyX25hbWUpCiAJfQogICAgIH0KICAgZWxz ZQotICAgIG1lc3NhZ2UgKHRydWUsICIlczogY2FuJ3Qgc3RhdCAlczogJXNcbiIsCisgICAg bWVzc2FnZSAodHJ1ZSwgIiVzOiBjYW4ndCBjb25uZWN0IHRvICVzOiAlc1xuIiwKIAkgICAg IHByb2duYW1lLCBzb2NrbmFtZSwgc3RyZXJyb3IgKHNvY2tfc3RhdHVzKSk7CiAKICAgcmV0 dXJuIElOVkFMSURfU09DS0VUOwpkaWZmIC0tZ2l0IGEvbGliL2ZpbGUtaGFzLWFjbC5jIGIv bGliL2ZpbGUtaGFzLWFjbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLmM2NjdhZTlkMjQKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvZmlsZS1oYXMtYWNsLmMK QEAgLTAsMCArMSw1MTAgQEAKKy8qIFRlc3Qgd2hldGhlciBhIGZpbGUgaGFzIGEgbm9udHJp dmlhbCBBQ0wuICAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKworICAgQ29weXJpZ2h0IChDKSAy MDAyLTIwMDMsIDIwMDUtMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwor ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKworICAgV3JpdHRlbiBieSBQYXVsIEVnZ2VydCwgQW5kcmVhcyBHcsO8bmJhY2hl ciwgYW5kIEJydW5vIEhhaWJsZS4gICovCisKKy8qIFdpdGhvdXQgdGhpcyBwcmFnbWEsIGdj YyA0LjcuMCAyMDEyMDEyNiBtYXkgc3VnZ2VzdCB0aGF0IHRoZQorICAgZmlsZV9oYXNfYWNs IGZ1bmN0aW9uIG1pZ2h0IGJlIGNhbmRpZGF0ZSBmb3IgYXR0cmlidXRlICdjb25zdCcgICov CisjaWYgKF9fR05VQ19fID09IDQgJiYgNiA8PSBfX0dOVUNfTUlOT1JfXykgfHwgNCA8IF9f R05VQ19fCisjIHByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3N1Z2dlc3QtYXR0 cmlidXRlPWNvbnN0IgorI2VuZGlmCisKKyNpbmNsdWRlIDxjb25maWcuaD4KKworI2luY2x1 ZGUgImFjbC5oIgorCisjaW5jbHVkZSAiYWNsLWludGVybmFsLmgiCisKKyNpZiBHRVRYQVRU Ul9XSVRIX1BPU0lYX0FDTFMKKyMgaW5jbHVkZSA8c3lzL3hhdHRyLmg+CisjIGluY2x1ZGUg PGxpbnV4L3hhdHRyLmg+CisjZW5kaWYKKworLyogUmV0dXJuIDEgaWYgTkFNRSBoYXMgYSBu b250cml2aWFsIGFjY2VzcyBjb250cm9sIGxpc3QsCisgICAwIGlmIEFDTHMgYXJlIG5vdCBz dXBwb3J0ZWQsIG9yIGlmIE5BTUUgaGFzIG5vIG9yIG9ubHkgYSBiYXNlIEFDTCwKKyAgIGFu ZCAtMSAoc2V0dGluZyBlcnJubykgb24gZXJyb3IuICBOb3RlIGNhbGxlcnMgY2FuIGRldGVy bWluZQorICAgaWYgQUNMcyBhcmUgbm90IHN1cHBvcnRlZCBhcyBlcnJubyBpcyBzZXQgaW4g dGhhdCBjYXNlIGFsc28uCisgICBTQiBtdXN0IGJlIHNldCB0byB0aGUgc3RhdCBidWZmZXIg b2YgTkFNRSwKKyAgIG9idGFpbmVkIHRocm91Z2ggc3RhdCgpIG9yIGxzdGF0KCkuICAqLwor CitpbnQKK2ZpbGVfaGFzX2FjbCAoY2hhciBjb25zdCAqbmFtZSwgc3RydWN0IHN0YXQgY29u c3QgKnNiKQoreworI2lmIFVTRV9BQ0wKKyAgaWYgKCEgU19JU0xOSyAoc2ItPnN0X21vZGUp KQorICAgIHsKKworIyBpZiBHRVRYQVRUUl9XSVRIX1BPU0lYX0FDTFMKKworICAgICAgc3Np emVfdCByZXQ7CisKKyAgICAgIHJldCA9IGdldHhhdHRyIChuYW1lLCBYQVRUUl9OQU1FX1BP U0lYX0FDTF9BQ0NFU1MsIE5VTEwsIDApOworICAgICAgaWYgKHJldCA8IDAgJiYgZXJybm8g PT0gRU5PREFUQSkKKyAgICAgICAgcmV0ID0gMDsKKyAgICAgIGVsc2UgaWYgKHJldCA+IDAp CisgICAgICAgIHJldHVybiAxOworCisgICAgICBpZiAocmV0ID09IDAgJiYgU19JU0RJUiAo c2ItPnN0X21vZGUpKQorICAgICAgICB7CisgICAgICAgICAgcmV0ID0gZ2V0eGF0dHIgKG5h bWUsIFhBVFRSX05BTUVfUE9TSVhfQUNMX0RFRkFVTFQsIE5VTEwsIDApOworICAgICAgICAg IGlmIChyZXQgPCAwICYmIGVycm5vID09IEVOT0RBVEEpCisgICAgICAgICAgICByZXQgPSAw OworICAgICAgICAgIGVsc2UgaWYgKHJldCA+IDApCisgICAgICAgICAgICByZXR1cm4gMTsK KyAgICAgICAgfQorCisgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIC0gYWNs X2Vycm5vX3ZhbGlkIChlcnJubyk7CisgICAgICByZXR1cm4gcmV0OworCisjIGVsaWYgSEFW RV9BQ0xfR0VUX0ZJTEUKKworICAgICAgLyogUE9TSVggMTAwMy4xZSAoZHJhZnQgMTcgLS0g YWJhbmRvbmVkKSBzcGVjaWZpYyB2ZXJzaW9uLiAgKi8KKyAgICAgIC8qIExpbnV4LCBGcmVl QlNELCBNYWMgT1MgWCwgSVJJWCwgVHJ1NjQsIEN5Z3dpbiA+PSAyLjUgKi8KKyAgICAgIGlu dCByZXQ7CisKKyAgICAgIGlmIChIQVZFX0FDTF9FWFRFTkRFRF9GSUxFKSAvKiBMaW51eCAq LworICAgICAgICB7CisgICAgICAgICAgLyogT24gTGludXgsIGFjbF9leHRlbmRlZF9maWxl IGlzIGFuIG9wdGltaXplZCBmdW5jdGlvbjogSXQgb25seQorICAgICAgICAgICAgIG1ha2Vz IHR3byBjYWxscyB0byBnZXR4YXR0cigpLCBvbmUgZm9yIEFDTF9UWVBFX0FDQ0VTUywgb25l IGZvcgorICAgICAgICAgICAgIEFDTF9UWVBFX0RFRkFVTFQuICAqLworICAgICAgICAgIHJl dCA9IGFjbF9leHRlbmRlZF9maWxlIChuYW1lKTsKKyAgICAgICAgfQorICAgICAgZWxzZSAv KiBGcmVlQlNELCBNYWMgT1MgWCwgSVJJWCwgVHJ1NjQsIEN5Z3dpbiA+PSAyLjUgKi8KKyAg ICAgICAgeworIyAgaWYgSEFWRV9BQ0xfVFlQRV9FWFRFTkRFRCAvKiBNYWMgT1MgWCAqLwor ICAgICAgICAgIC8qIE9uIE1hYyBPUyBYLCBhY2xfZ2V0X2ZpbGUgKG5hbWUsIEFDTF9UWVBF X0FDQ0VTUykKKyAgICAgICAgICAgICBhbmQgYWNsX2dldF9maWxlIChuYW1lLCBBQ0xfVFlQ RV9ERUZBVUxUKQorICAgICAgICAgICAgIGFsd2F5cyByZXR1cm4gTlVMTCAvIEVJTlZBTC4g IFRoZXJlIGlzIG5vIHBvaW50IGluIG1ha2luZworICAgICAgICAgICAgIHRoZXNlIHR3byB1 c2VsZXNzIGNhbGxzLiAgVGhlIHJlYWwgQUNMIGlzIHJldHJpZXZlZCB0aHJvdWdoCisgICAg ICAgICAgICAgYWNsX2dldF9maWxlIChuYW1lLCBBQ0xfVFlQRV9FWFRFTkRFRCkuICAqLwor ICAgICAgICAgIGFjbF90IGFjbCA9IGFjbF9nZXRfZmlsZSAobmFtZSwgQUNMX1RZUEVfRVhU RU5ERUQpOworICAgICAgICAgIGlmIChhY2wpCisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgIHJldCA9IGFjbF9leHRlbmRlZF9ub250cml2aWFsIChhY2wpOworICAgICAgICAgICAg ICBhY2xfZnJlZSAoYWNsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAg ICAgICAgICByZXQgPSAtMTsKKyMgIGVsc2UgLyogRnJlZUJTRCwgSVJJWCwgVHJ1NjQsIEN5 Z3dpbiA+PSAyLjUgKi8KKyAgICAgICAgICBhY2xfdCBhY2wgPSBhY2xfZ2V0X2ZpbGUgKG5h bWUsIEFDTF9UWVBFX0FDQ0VTUyk7CisgICAgICAgICAgaWYgKGFjbCkKKyAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgaW50IHNhdmVkX2Vycm5vOworCisgICAgICAgICAgICAgIHJl dCA9IGFjbF9hY2Nlc3Nfbm9udHJpdmlhbCAoYWNsKTsKKyAgICAgICAgICAgICAgc2F2ZWRf ZXJybm8gPSBlcnJubzsKKyAgICAgICAgICAgICAgYWNsX2ZyZWUgKGFjbCk7CisgICAgICAg ICAgICAgIGVycm5vID0gc2F2ZWRfZXJybm87CisjICAgaWYgSEFWRV9BQ0xfRlJFRV9URVhU IC8qIFRydTY0ICovCisgICAgICAgICAgICAgIC8qIE9uIE9TRi8xLCBhY2xfZ2V0X2ZpbGUg KG5hbWUsIEFDTF9UWVBFX0RFRkFVTFQpIGFsd2F5cworICAgICAgICAgICAgICAgICByZXR1 cm5zIE5VTEwgd2l0aCBlcnJubyBub3Qgc2V0LiAgVGhlcmUgaXMgbm8gcG9pbnQgaW4KKyAg ICAgICAgICAgICAgICAgbWFraW5nIHRoaXMgY2FsbC4gICovCisjICAgZWxzZSAvKiBGcmVl QlNELCBJUklYLCBDeWd3aW4gPj0gMi41ICovCisgICAgICAgICAgICAgIC8qIE9uIExpbnV4 LCBGcmVlQlNELCBJUklYLCBhY2xfZ2V0X2ZpbGUgKG5hbWUsIEFDTF9UWVBFX0FDQ0VTUykK KyAgICAgICAgICAgICAgICAgYW5kIGFjbF9nZXRfZmlsZSAobmFtZSwgQUNMX1RZUEVfREVG QVVMVCkgb24gYSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAgZWl0aGVyIGJvdGggc3Vj Y2VlZCBvciBib3RoIGZhaWw7IGl0IGRlcGVuZHMgb24gdGhlCisgICAgICAgICAgICAgICAg IGZpbGUgc3lzdGVtLiAgVGhlcmVmb3JlIHRoZXJlIGlzIG5vIHBvaW50IGluIG1ha2luZyB0 aGUgc2Vjb25kCisgICAgICAgICAgICAgICAgIGNhbGwgaWYgdGhlIGZpcnN0IG9uZSBhbHJl YWR5IGZhaWxlZC4gICovCisgICAgICAgICAgICAgIGlmIChyZXQgPT0gMCAmJiBTX0lTRElS IChzYi0+c3RfbW9kZSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg YWNsID0gYWNsX2dldF9maWxlIChuYW1lLCBBQ0xfVFlQRV9ERUZBVUxUKTsKKyAgICAgICAg ICAgICAgICAgIGlmIChhY2wpCisgICAgICAgICAgICAgICAgICAgIHsKKyMgICAgaWZkZWYg X19DWUdXSU5fXyAvKiBDeWd3aW4gPj0gMi41ICovCisgICAgICAgICAgICAgICAgICAgICAg cmV0ID0gYWNsX2FjY2Vzc19ub250cml2aWFsIChhY2wpOworICAgICAgICAgICAgICAgICAg ICAgIHNhdmVkX2Vycm5vID0gZXJybm87CisgICAgICAgICAgICAgICAgICAgICAgYWNsX2Zy ZWUgKGFjbCk7CisgICAgICAgICAgICAgICAgICAgICAgZXJybm8gPSBzYXZlZF9lcnJubzsK KyMgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgIHJldCA9ICgwIDwgYWNsX2VudHJp ZXMgKGFjbCkpOworICAgICAgICAgICAgICAgICAgICAgIGFjbF9mcmVlIChhY2wpOworIyAg ICBlbmRpZgorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNl CisgICAgICAgICAgICAgICAgICAgIHJldCA9IC0xOworICAgICAgICAgICAgICAgIH0KKyMg ICBlbmRpZgorICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJl dCA9IC0xOworIyAgZW5kaWYKKyAgICAgICAgfQorICAgICAgaWYgKHJldCA8IDApCisgICAg ICAgIHJldHVybiAtIGFjbF9lcnJub192YWxpZCAoZXJybm8pOworICAgICAgcmV0dXJuIHJl dDsKKworIyBlbGlmIEhBVkVfRkFDTCAmJiBkZWZpbmVkIEdFVEFDTCAvKiBTb2xhcmlzLCBD eWd3aW4gPCAyLjUsIG5vdCBIUC1VWCAqLworCisjICBpZiBkZWZpbmVkIEFDTF9OT19UUklW SUFMCisKKyAgICAgIC8qIFNvbGFyaXMgMTAgKG5ld2VyIHZlcnNpb24pLCB3aGljaCBoYXMg YWRkaXRpb25hbCBBUEkgZGVjbGFyZWQgaW4KKyAgICAgICAgIDxzeXMvYWNsLmg+IChhY2xf dCkgYW5kIGltcGxlbWVudGVkIGluIGxpYnNlYyAoYWNsX3NldCwgYWNsX3RyaXZpYWwsCisg ICAgICAgICBhY2xfZnJvbXRleHQsIC4uLikuICAqLworICAgICAgcmV0dXJuIGFjbF90cml2 aWFsIChuYW1lKTsKKworIyAgZWxzZSAvKiBTb2xhcmlzLCBDeWd3aW4sIGdlbmVyYWwgY2Fz ZSAqLworCisgICAgICAvKiBTb2xhcmlzIDIuNSB0aHJvdWdoIFNvbGFyaXMgMTAsIEN5Z3dp biwgYW5kIGNvbnRlbXBvcmFuZW91cyB2ZXJzaW9ucworICAgICAgICAgb2YgVW5peHdhcmUu ICBUaGUgYWNsKCkgY2FsbCByZXR1cm5zIHRoZSBhY2Nlc3MgYW5kIGRlZmF1bHQgQUNMIGJv dGgKKyAgICAgICAgIGF0IG9uY2UuICAqLworICAgICAgeworICAgICAgICAvKiBJbml0aWFs bHksIHRyeSB0byByZWFkIHRoZSBlbnRyaWVzIGludG8gYSBzdGFjay1hbGxvY2F0ZWQgYnVm ZmVyLgorICAgICAgICAgICBVc2UgbWFsbG9jIGlmIGl0IGRvZXMgbm90IGZpdC4gICovCisg ICAgICAgIGVudW0KKyAgICAgICAgICB7CisgICAgICAgICAgICBhbGxvY19pbml0ID0gNDAw MCAvIHNpemVvZiAoYWNsZW50X3QpLCAvKiA+PSAzICovCisgICAgICAgICAgICBhbGxvY19t YXggPSBNSU4gKElOVF9NQVgsIFNJWkVfTUFYIC8gc2l6ZW9mIChhY2xlbnRfdCkpCisgICAg ICAgICAgfTsKKyAgICAgICAgYWNsZW50X3QgYnVmW2FsbG9jX2luaXRdOworICAgICAgICBz aXplX3QgYWxsb2MgPSBhbGxvY19pbml0OworICAgICAgICBhY2xlbnRfdCAqZW50cmllcyA9 IGJ1ZjsKKyAgICAgICAgYWNsZW50X3QgKm1hbGxvY2VkID0gTlVMTDsKKyAgICAgICAgaW50 IGNvdW50OworCisgICAgICAgIGZvciAoOzspCisgICAgICAgICAgeworICAgICAgICAgICAg Y291bnQgPSBhY2wgKG5hbWUsIEdFVEFDTCwgYWxsb2MsIGVudHJpZXMpOworICAgICAgICAg ICAgaWYgKGNvdW50IDwgMCAmJiBlcnJubyA9PSBFTk9TUEMpCisgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAvKiBJbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyLiAg Ki8KKyAgICAgICAgICAgICAgICBmcmVlIChtYWxsb2NlZCk7CisgICAgICAgICAgICAgICAg aWYgKGFsbG9jID4gYWxsb2NfbWF4IC8gMikKKyAgICAgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICAgICAgZXJybm8gPSBFTk9NRU07CisgICAgICAgICAgICAgICAgICAgIHJl dHVybiAtMTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhbGxvYyA9 IDIgKiBhbGxvYzsgLyogPD0gYWxsb2NfbWF4ICovCisgICAgICAgICAgICAgICAgZW50cmll cyA9IG1hbGxvY2VkID0KKyAgICAgICAgICAgICAgICAgIChhY2xlbnRfdCAqKSBtYWxsb2Mg KGFsbG9jICogc2l6ZW9mIChhY2xlbnRfdCkpOworICAgICAgICAgICAgICAgIGlmIChlbnRy aWVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg IGVycm5vID0gRU5PTUVNOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgaWYgKGNv dW50IDwgMCkKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PU1lT IHx8IGVycm5vID09IEVOT1RTVVApCisgICAgICAgICAgICAgIDsKKyAgICAgICAgICAgIGVs c2UKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludCBzYXZlZF9lcnJubyA9 IGVycm5vOworICAgICAgICAgICAgICAgIGZyZWUgKG1hbGxvY2VkKTsKKyAgICAgICAgICAg ICAgICBlcnJubyA9IHNhdmVkX2Vycm5vOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsK KyAgICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY291bnQg PT0gMCkKKyAgICAgICAgICA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAg ICAgICAvKiBEb24ndCB1c2UgTUlOX0FDTF9FTlRSSUVTOiAgSXQncyBzZXQgdG8gNCBvbiBD eWd3aW4sIGJ1dCBDeWd3aW4KKyAgICAgICAgICAgICAgIHJldHVybnMgb25seSAzIGVudHJp ZXMgZm9yIGZpbGVzIHdpdGggbm8gQUNMLiAgQnV0IHRoaXMgaXMgc2FmZToKKyAgICAgICAg ICAgICAgIElmIHRoZXJlIGFyZSBtb3JlIHRoYW4gNCBlbnRyaWVzLCB0aGVyZSBjYW5ub3Qg YmUgb25seSB0aGUKKyAgICAgICAgICAgICAgICJ1c2VyOjoiLCAiZ3JvdXA6OiIsICJvdGhl cjoiLCBhbmQgIm1hc2s6IiBlbnRyaWVzLiAgKi8KKyAgICAgICAgICAgIGlmIChjb3VudCA+ IDQpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmcmVlIChtYWxsb2NlZCk7 CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgIH0KKworICAgICAg ICAgICAgaWYgKGFjbF9ub250cml2aWFsIChjb3VudCwgZW50cmllcykpCisgICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICBmcmVlIChtYWxsb2NlZCk7CisgICAgICAgICAgICAg ICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIGZy ZWUgKG1hbGxvY2VkKTsKKyAgICAgIH0KKworIyAgIGlmZGVmIEFDRV9HRVRBQ0wKKyAgICAg IC8qIFNvbGFyaXMgYWxzbyBoYXMgYSBkaWZmZXJlbnQgdmFyaWFudCBvZiBBQ0xzLCB1c2Vk IGluIFpGUyBhbmQgTkZTdjQKKyAgICAgICAgIGZpbGUgc3lzdGVtcyAod2hlcmVhcyB0aGUg b3RoZXIgb25lcyBhcmUgdXNlZCBpbiBVRlMgZmlsZSBzeXN0ZW1zKS4gICovCisgICAgICB7 CisgICAgICAgIC8qIEluaXRpYWxseSwgdHJ5IHRvIHJlYWQgdGhlIGVudHJpZXMgaW50byBh IHN0YWNrLWFsbG9jYXRlZCBidWZmZXIuCisgICAgICAgICAgIFVzZSBtYWxsb2MgaWYgaXQg ZG9lcyBub3QgZml0LiAgKi8KKyAgICAgICAgZW51bQorICAgICAgICAgIHsKKyAgICAgICAg ICAgIGFsbG9jX2luaXQgPSA0MDAwIC8gc2l6ZW9mIChhY2VfdCksIC8qID49IDMgKi8KKyAg ICAgICAgICAgIGFsbG9jX21heCA9IE1JTiAoSU5UX01BWCwgU0laRV9NQVggLyBzaXplb2Yg KGFjZV90KSkKKyAgICAgICAgICB9OworICAgICAgICBhY2VfdCBidWZbYWxsb2NfaW5pdF07 CisgICAgICAgIHNpemVfdCBhbGxvYyA9IGFsbG9jX2luaXQ7CisgICAgICAgIGFjZV90ICpl bnRyaWVzID0gYnVmOworICAgICAgICBhY2VfdCAqbWFsbG9jZWQgPSBOVUxMOworICAgICAg ICBpbnQgY291bnQ7CisKKyAgICAgICAgZm9yICg7OykKKyAgICAgICAgICB7CisgICAgICAg ICAgICBjb3VudCA9IGFjbCAobmFtZSwgQUNFX0dFVEFDTCwgYWxsb2MsIGVudHJpZXMpOwor ICAgICAgICAgICAgaWYgKGNvdW50IDwgMCAmJiBlcnJubyA9PSBFTk9TUEMpCisgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAvKiBJbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUg YnVmZmVyLiAgKi8KKyAgICAgICAgICAgICAgICBmcmVlIChtYWxsb2NlZCk7CisgICAgICAg ICAgICAgICAgaWYgKGFsbG9jID4gYWxsb2NfbWF4IC8gMikKKyAgICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgZXJybm8gPSBFTk9NRU07CisgICAgICAgICAgICAg ICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICBhbGxvYyA9IDIgKiBhbGxvYzsgLyogPD0gYWxsb2NfbWF4ICovCisgICAgICAgICAgICAg ICAgZW50cmllcyA9IG1hbGxvY2VkID0gKGFjZV90ICopIG1hbGxvYyAoYWxsb2MgKiBzaXpl b2YgKGFjZV90KSk7CisgICAgICAgICAgICAgICAgaWYgKGVudHJpZXMgPT0gTlVMTCkKKyAg ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybm8gPSBFTk9NRU07 CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICBpZiAoY291bnQgPCAwKQorICAgICAg ICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9TWVMgfHwgZXJybm8gPT0gRUlO VkFMKQorICAgICAgICAgICAgICA7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICBpbnQgc2F2ZWRfZXJybm8gPSBlcnJubzsKKyAgICAgICAg ICAgICAgICBmcmVlIChtYWxsb2NlZCk7CisgICAgICAgICAgICAgICAgZXJybm8gPSBzYXZl ZF9lcnJubzsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgIH0K KyAgICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNvdW50ID09IDApCisgICAgICAgICAg OworICAgICAgICBlbHNlCisgICAgICAgICAgeworICAgICAgICAgICAgLyogSW4gdGhlIG9s ZCAob3JpZ2luYWwgU29sYXJpcyAxMCkgY29udmVudGlvbjoKKyAgICAgICAgICAgICAgIElm IHRoZXJlIGFyZSBtb3JlIHRoYW4gMyBlbnRyaWVzLCB0aGVyZSBjYW5ub3QgYmUgb25seSB0 aGUKKyAgICAgICAgICAgICAgIEFDRV9PV05FUiwgQUNFX0dST1VQLCBBQ0VfT1RIRVIgZW50 cmllcy4KKyAgICAgICAgICAgICAgIEluIHRoZSBuZXdlciBTb2xhcmlzIDEwIGFuZCBTb2xh cmlzIDExIGNvbnZlbnRpb246CisgICAgICAgICAgICAgICBJZiB0aGVyZSBhcmUgbW9yZSB0 aGFuIDYgZW50cmllcywgdGhlcmUgY2Fubm90IGJlIG9ubHkgdGhlCisgICAgICAgICAgICAg ICBBQ0VfT1dORVIsIEFDRV9HUk9VUCwgQUNFX0VWRVJZT05FIGVudHJpZXMsIGVhY2ggb25j ZSB3aXRoCisgICAgICAgICAgICAgICBORVdfQUNFX0FDQ0VTU19BTExPV0VEX0FDRV9UWVBF IGFuZCBvbmNlIHdpdGgKKyAgICAgICAgICAgICAgIE5FV19BQ0VfQUNDRVNTX0RFTklFRF9B Q0VfVFlQRS4gICovCisgICAgICAgICAgICBpZiAoY291bnQgPiA2KQorICAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgZnJlZSAobWFsbG9jZWQpOworICAgICAgICAgICAgICAg IHJldHVybiAxOworICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChhY2xfYWNl X25vbnRyaXZpYWwgKGNvdW50LCBlbnRyaWVzKSkKKyAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgIGZyZWUgKG1hbGxvY2VkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsK KyAgICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgZnJlZSAobWFsbG9jZWQp OworICAgICAgfQorIyAgIGVuZGlmCisKKyAgICAgIHJldHVybiAwOworIyAgZW5kaWYKKwor IyBlbGlmIEhBVkVfR0VUQUNMIC8qIEhQLVVYICovCisKKyAgICAgIHsKKyAgICAgICAgc3Ry dWN0IGFjbF9lbnRyeSBlbnRyaWVzW05BQ0xFTlRSSUVTXTsKKyAgICAgICAgaW50IGNvdW50 OworCisgICAgICAgIGNvdW50ID0gZ2V0YWNsIChuYW1lLCBOQUNMRU5UUklFUywgZW50cmll cyk7CisKKyAgICAgICAgaWYgKGNvdW50IDwgMCkKKyAgICAgICAgICB7CisgICAgICAgICAg ICAvKiBFTk9TWVMgaXMgc2VlbiBvbiBuZXdlciBIUC1VWCB2ZXJzaW9ucy4KKyAgICAgICAg ICAgICAgIEVPUE5PVFNVUFAgaXMgdHlwaWNhbGx5IHNlZW4gb24gTkZTIG1vdW50cy4KKyAg ICAgICAgICAgICAgIEVOT1RTVVAgd2FzIHNlZW4gb24gUXVhbnR1bSBTdG9yTmV4dCBmaWxl IHN5c3RlbXMgKGN2ZnMpLiAgKi8KKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9TWVMg fHwgZXJybm8gPT0gRU9QTk9UU1VQUCB8fCBlcnJubyA9PSBFTk9UU1VQKQorICAgICAgICAg ICAgICA7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAg ICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNvdW50ID09IDApCisgICAgICAgICAgcmV0 dXJuIDA7CisgICAgICAgIGVsc2UgLyogY291bnQgPiAwICovCisgICAgICAgICAgeworICAg ICAgICAgICAgaWYgKGNvdW50ID4gTkFDTEVOVFJJRVMpCisgICAgICAgICAgICAgIC8qIElm IE5BQ0xFTlRSSUVTIGNhbm5vdCBiZSB0cnVzdGVkLCB1c2UgZHluYW1pYyBtZW1vcnkKKyAg ICAgICAgICAgICAgICAgYWxsb2NhdGlvbi4gICovCisgICAgICAgICAgICAgIGFib3J0ICgp OworCisgICAgICAgICAgICAvKiBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIDMgZW50cmllcywg dGhlcmUgY2Fubm90IGJlIG9ubHkgdGhlCisgICAgICAgICAgICAgICAodWlkLCUpLCAoJSxn aWQpLCAoJSwlKSBlbnRyaWVzLiAgKi8KKyAgICAgICAgICAgIGlmIChjb3VudCA+IDMpCisg ICAgICAgICAgICAgIHJldHVybiAxOworCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg IHN0cnVjdCBzdGF0IHN0YXRidWY7CisKKyAgICAgICAgICAgICAgaWYgKHN0YXQgKG5hbWUs ICZzdGF0YnVmKSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAg ICAgICAgIHJldHVybiBhY2xfbm9udHJpdmlhbCAoY291bnQsIGVudHJpZXMpOworICAgICAg ICAgICAgfQorICAgICAgICAgIH0KKyAgICAgIH0KKworIyAgaWYgSEFWRV9BQ0xWX0ggLyog SFAtVVggPj0gMTEuMTEgKi8KKworICAgICAgeworICAgICAgICBzdHJ1Y3QgYWNsIGVudHJp ZXNbTkFDTFZFTlRSSUVTXTsKKyAgICAgICAgaW50IGNvdW50OworCisgICAgICAgIGNvdW50 ID0gYWNsICgoY2hhciAqKSBuYW1lLCBBQ0xfR0VULCBOQUNMVkVOVFJJRVMsIGVudHJpZXMp OworCisgICAgICAgIGlmIChjb3VudCA8IDApCisgICAgICAgICAgeworICAgICAgICAgICAg LyogRU9QTk9UU1VQUCBpcyBzZWVuIG9uIE5GUyBpbiBIUC1VWCAxMS4xMSwgMTEuMjMuCisg ICAgICAgICAgICAgICBFSU5WQUwgaXMgc2VlbiBvbiBORlMgaW4gSFAtVVggMTEuMzEuICAq LworICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT1NZUyB8fCBlcnJubyA9PSBFT1BOT1RT VVBQIHx8IGVycm5vID09IEVJTlZBTCkKKyAgICAgICAgICAgICAgOworICAgICAgICAgICAg ZWxzZQorICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgfQorICAgICAgICBl bHNlIGlmIChjb3VudCA9PSAwKQorICAgICAgICAgIHJldHVybiAwOworICAgICAgICBlbHNl IC8qIGNvdW50ID4gMCAqLworICAgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjb3VudCA+ IE5BQ0xWRU5UUklFUykKKyAgICAgICAgICAgICAgLyogSWYgTkFDTFZFTlRSSUVTIGNhbm5v dCBiZSB0cnVzdGVkLCB1c2UgZHluYW1pYyBtZW1vcnkKKyAgICAgICAgICAgICAgICAgYWxs b2NhdGlvbi4gICovCisgICAgICAgICAgICAgIGFib3J0ICgpOworCisgICAgICAgICAgICAv KiBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIDQgZW50cmllcywgdGhlcmUgY2Fubm90IGJlIG9u bHkgdGhlCisgICAgICAgICAgICAgICBmb3VyIGJhc2UgQUNMIGVudHJpZXMuICAqLworICAg ICAgICAgICAgaWYgKGNvdW50ID4gNCkKKyAgICAgICAgICAgICAgcmV0dXJuIDE7CisKKyAg ICAgICAgICAgIHJldHVybiBhY2x2X25vbnRyaXZpYWwgKGNvdW50LCBlbnRyaWVzKTsKKyAg ICAgICAgICB9CisgICAgICB9CisKKyMgIGVuZGlmCisKKyMgZWxpZiBIQVZFX0FDTFhfR0VU ICYmIGRlZmluZWQgQUNMX0FJWF9XSVAgLyogQUlYICovCisKKyAgICAgIGFjbF90eXBlX3Qg dHlwZTsKKyAgICAgIGNoYXIgYWNsYnVmWzEwMjRdOworICAgICAgdm9pZCAqYWNsID0gYWNs YnVmOworICAgICAgc2l6ZV90IGFjbHNpemUgPSBzaXplb2YgKGFjbGJ1Zik7CisgICAgICBt b2RlX3QgbW9kZTsKKworICAgICAgZm9yICg7OykKKyAgICAgICAgeworICAgICAgICAgIC8q IFRoZSBkb2NzIHNheSB0aGF0IHR5cGUgYmVpbmcgMCBpcyBlcXVpdmFsZW50IHRvIEFDTF9B TlksIGJ1dCBpdAorICAgICAgICAgICAgIGlzIG5vdCB0cnVlLCBpbiBBSVggNS4zLiAgKi8K KyAgICAgICAgICB0eXBlLnU2NCA9IEFDTF9BTlk7CisgICAgICAgICAgaWYgKGFjbHhfZ2V0 IChuYW1lLCAwLCAmdHlwZSwgYWNsYnVmLCAmYWNsc2l6ZSwgJm1vZGUpID49IDApCisgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PU1lTKQorICAgICAg ICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgaWYgKGVycm5vICE9IEVOT1NQQykKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgaWYgKGFjbCAhPSBhY2xidWYpCisgICAgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICAgaW50IHNhdmVkX2Vycm5vID0gZXJybm87Cisg ICAgICAgICAgICAgICAgICBmcmVlIChhY2wpOworICAgICAgICAgICAgICAgICAgZXJybm8g PSBzYXZlZF9lcnJubzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHJldHVy biAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBhY2xzaXplID0gMiAqIGFjbHNpemU7 CisgICAgICAgICAgaWYgKGFjbCAhPSBhY2xidWYpCisgICAgICAgICAgICBmcmVlIChhY2wp OworICAgICAgICAgIGFjbCA9IG1hbGxvYyAoYWNsc2l6ZSk7CisgICAgICAgICAgaWYgKGFj bCA9PSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBlcnJubyA9IEVOT01F TTsKKyAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9 CisKKyAgICAgIGlmICh0eXBlLnU2NCA9PSBBQ0xfQUlYQykKKyAgICAgICAgeworICAgICAg ICAgIGludCByZXN1bHQgPSBhY2xfbm9udHJpdmlhbCAoKHN0cnVjdCBhY2wgKikgYWNsKTsK KyAgICAgICAgICBpZiAoYWNsICE9IGFjbGJ1ZikKKyAgICAgICAgICAgIGZyZWUgKGFjbCk7 CisgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgZWxzZSBpZiAo dHlwZS51NjQgPT0gQUNMX05GUzQpCisgICAgICAgIHsKKyAgICAgICAgICBpbnQgcmVzdWx0 ID0gYWNsX25mczRfbm9udHJpdmlhbCAoKG5mczRfYWNsX2ludF90ICopIGFjbCk7CisgICAg ICAgICAgaWYgKGFjbCAhPSBhY2xidWYpCisgICAgICAgICAgICBmcmVlIChhY2wpOworICAg ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAg eworICAgICAgICAgIC8qIEEgbmV3ZXIgdHlwZSBvZiBBQ0wgaGFzIGJlZW4gaW50cm9kdWNl ZCBpbiB0aGUgc3lzdGVtLgorICAgICAgICAgICAgIFdlIHNob3VsZCBiZXR0ZXIgc3VwcG9y dCBpdC4gICovCisgICAgICAgICAgaWYgKGFjbCAhPSBhY2xidWYpCisgICAgICAgICAgICBm cmVlIChhY2wpOworICAgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICAgIHJldHVy biAtMTsKKyAgICAgICAgfQorCisjIGVsaWYgSEFWRV9TVEFUQUNMIC8qIG9sZGVyIEFJWCAq LworCisgICAgICB1bmlvbiB7IHN0cnVjdCBhY2wgYTsgY2hhciByb29tWzQwOTZdOyB9IHU7 CisKKyAgICAgIGlmIChzdGF0YWNsICgoY2hhciAqKSBuYW1lLCBTVFhfTk9STUFMLCAmdS5h LCBzaXplb2YgKHUpKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgICAgcmV0dXJu IGFjbF9ub250cml2aWFsICgmdS5hKTsKKworIyBlbGlmIEhBVkVfQUNMU09SVCAvKiBOb25T dG9wIEtlcm5lbCAqLworCisgICAgICB7CisgICAgICAgIHN0cnVjdCBhY2wgZW50cmllc1tO QUNMRU5UUklFU107CisgICAgICAgIGludCBjb3VudDsKKworICAgICAgICBjb3VudCA9IGFj bCAoKGNoYXIgKikgbmFtZSwgQUNMX0dFVCwgTkFDTEVOVFJJRVMsIGVudHJpZXMpOworCisg ICAgICAgIGlmIChjb3VudCA8IDApCisgICAgICAgICAgeworICAgICAgICAgICAgaWYgKGVy cm5vID09IEVOT1NZUyB8fCBlcnJubyA9PSBFTk9UU1VQKQorICAgICAgICAgICAgICA7Cisg ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICB9 CisgICAgICAgIGVsc2UgaWYgKGNvdW50ID09IDApCisgICAgICAgICAgcmV0dXJuIDA7Cisg ICAgICAgIGVsc2UgLyogY291bnQgPiAwICovCisgICAgICAgICAgeworICAgICAgICAgICAg aWYgKGNvdW50ID4gTkFDTEVOVFJJRVMpCisgICAgICAgICAgICAgIC8qIElmIE5BQ0xFTlRS SUVTIGNhbm5vdCBiZSB0cnVzdGVkLCB1c2UgZHluYW1pYyBtZW1vcnkKKyAgICAgICAgICAg ICAgICAgYWxsb2NhdGlvbi4gICovCisgICAgICAgICAgICAgIGFib3J0ICgpOworCisgICAg ICAgICAgICAvKiBJZiB0aGVyZSBhcmUgbW9yZSB0aGFuIDQgZW50cmllcywgdGhlcmUgY2Fu bm90IGJlIG9ubHkgdGhlCisgICAgICAgICAgICAgICBmb3VyIGJhc2UgQUNMIGVudHJpZXMu ICAqLworICAgICAgICAgICAgaWYgKGNvdW50ID4gNCkKKyAgICAgICAgICAgICAgcmV0dXJu IDE7CisKKyAgICAgICAgICAgIHJldHVybiBhY2xfbm9udHJpdmlhbCAoY291bnQsIGVudHJp ZXMpOworICAgICAgICAgIH0KKyAgICAgIH0KKworIyBlbmRpZgorICAgIH0KKyNlbmRpZgor CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvbGliL2dudWxpYi5tay5pbiBiL2xpYi9n bnVsaWIubWsuaW4KaW5kZXggNzhiNDU0MmQ4MC4uNWUwMjQ0ZjIxYSAxMDA2NDQKLS0tIGEv bGliL2dudWxpYi5tay5pbgorKysgYi9saWIvZ251bGliLm1rLmluCkBAIC05OCw2ICs5OCw3 IEBACiAjICBmY250bCBcCiAjICBmY250bC1oIFwKICMgIGZkb3BlbmRpciBcCisjICBmaWxl LWhhcy1hY2wgXAogIyAgZmlsZW1vZGUgXAogIyAgZmlsZW5hbWUgXAogIyAgZmlsZXZlcmNt cCBcCkBAIC0xNjc2LDYgKzE2NzcsMTYgQEAgRVhUUkFfbGliZ251X2FfU09VUkNFUyArPSBm ZG9wZW5kaXIuYwogZW5kaWYKICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgZmRvcGVuZGlyCiAK KyMjIGJlZ2luIGdudWxpYiBtb2R1bGUgZmlsZS1oYXMtYWNsCitpZmVxICgsJChPTUlUX0dO VUxJQl9NT0RVTEVfZmlsZS1oYXMtYWNsKSkKKworbGliZ251X2FfU09VUkNFUyArPSBmaWxl LWhhcy1hY2wuYworCitFWFRSQV9ESVNUICs9IGFjbC1pbnRlcm5hbC5oCisKK2VuZGlmCisj IyBlbmQgICBnbnVsaWIgbW9kdWxlIGZpbGUtaGFzLWFjbAorCiAjIyBiZWdpbiBnbnVsaWIg bW9kdWxlIGZpbGVtb2RlCiBpZmVxICgsJChPTUlUX0dOVUxJQl9NT0RVTEVfZmlsZW1vZGUp KQogCmRpZmYgLS1naXQgYS9tNC9nbnVsaWItY29tcC5tNCBiL200L2dudWxpYi1jb21wLm00 CmluZGV4IDViZmExNDczZWQuLjViNzMzMmJlMzkgMTAwNjQ0Ci0tLSBhL200L2dudWxpYi1j b21wLm00CisrKyBiL200L2dudWxpYi1jb21wLm00CkBAIC04Nyw2ICs4Nyw3IEBAIEFDX0RF RlVOCiAgICMgQ29kZSBmcm9tIG1vZHVsZSBmY250bDoKICAgIyBDb2RlIGZyb20gbW9kdWxl IGZjbnRsLWg6CiAgICMgQ29kZSBmcm9tIG1vZHVsZSBmZG9wZW5kaXI6CisgICMgQ29kZSBm cm9tIG1vZHVsZSBmaWxlLWhhcy1hY2w6CiAgICMgQ29kZSBmcm9tIG1vZHVsZSBmaWxlbW9k ZToKICAgIyBDb2RlIGZyb20gbW9kdWxlIGZpbGVuYW1lOgogICAjIENvZGUgZnJvbSBtb2R1 bGUgZmlsZXZlcmNtcDoKQEAgLTI4MSw2ICsyODIsNyBAQCBBQ19ERUZVTgogICBmaQogICBn bF9ESVJFTlRfTU9EVUxFX0lORElDQVRPUihbZmRvcGVuZGlyXSkKICAgZ2xfTU9EVUxFX0lO RElDQVRPUihbZmRvcGVuZGlyXSkKKyAgZ2xfRklMRV9IQVNfQUNMCiAgIGdsX0ZJTEVNT0RF CiAgIEFDX0NfRkxFWElCTEVfQVJSQVlfTUVNQkVSCiAgIGdsX0ZVTkNfRlBFTkRJTkcKQEAg LTk3NSw2ICs5NzcsNyBAQCBBQ19ERUZVTgogICBsaWIvZmNudGwuYwogICBsaWIvZmNudGwu aW4uaAogICBsaWIvZmRvcGVuZGlyLmMKKyAgbGliL2ZpbGUtaGFzLWFjbC5jCiAgIGxpYi9m aWxlbW9kZS5jCiAgIGxpYi9maWxlbW9kZS5oCiAgIGxpYi9maWxlbmFtZS5oCi0tIAoyLjI1 LjQKCg== --------------B4492B69FE93BEFD072D593D--