From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.bugs Subject: bug#13070: Use putenv+unsetenv instead of modifying environ directly Date: Fri, 07 Dec 2012 20:02:33 -0800 Organization: UCLA Computer Science Department Message-ID: <50C2BBD9.8060401@cs.ucla.edu> References: <50BD0C72.7070601@cs.ucla.edu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------090204060905090807070004" X-Trace: ger.gmane.org 1354939437 8155 80.91.229.3 (8 Dec 2012 04:03:57 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 8 Dec 2012 04:03:57 +0000 (UTC) Cc: 13070@debbugs.gnu.org To: Fabrice Popineau Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Dec 08 05:04:10 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1ThBdz-0003nH-E5 for geb-bug-gnu-emacs@m.gmane.org; Sat, 08 Dec 2012 05:04:03 +0100 Original-Received: from localhost ([::1]:51109 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ThBdn-0000PD-40 for geb-bug-gnu-emacs@m.gmane.org; Fri, 07 Dec 2012 23:03:51 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:43469) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ThBdg-0000Nx-Pk for bug-gnu-emacs@gnu.org; Fri, 07 Dec 2012 23:03:48 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ThBdd-0004Vb-37 for bug-gnu-emacs@gnu.org; Fri, 07 Dec 2012 23:03:44 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:49486) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ThBdc-0004VX-Vc for bug-gnu-emacs@gnu.org; Fri, 07 Dec 2012 23:03:41 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1ThBdy-0000kB-CY for bug-gnu-emacs@gnu.org; Fri, 07 Dec 2012 23:04:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Paul Eggert Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 08 Dec 2012 04:04:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13070 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 13070-submit@debbugs.gnu.org id=B13070.13549393872790 (code B ref 13070); Sat, 08 Dec 2012 04:04:02 +0000 Original-Received: (at 13070) by debbugs.gnu.org; 8 Dec 2012 04:03:07 +0000 Original-Received: from localhost ([127.0.0.1]:59737 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1ThBd3-0000it-Ix for submit@debbugs.gnu.org; Fri, 07 Dec 2012 23:03:07 -0500 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:55159) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1ThBcw-0000iP-2r for 13070@debbugs.gnu.org; Fri, 07 Dec 2012 23:03:02 -0500 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 36A4D39E810A; Fri, 7 Dec 2012 20:02:35 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Original-Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yGOoUy8GdWvI; Fri, 7 Dec 2012 20:02:32 -0800 (PST) Original-Received: from [192.168.1.3] (pool-71-189-154-249.lsanca.fios.verizon.net [71.189.154.249]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 7CAE739E8008; Fri, 7 Dec 2012 20:02:32 -0800 (PST) User-Agent: Mozilla/5.0 (X11; Linux i686; rv:17.0) Gecko/17.0 Thunderbird/17.0 In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 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.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:68165 Archived-At: This is a multi-part message in MIME format. --------------090204060905090807070004 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 12/04/2012 05:51 AM, Fabrice Popineau wrote: > Provided I added some unsetenv() function for w32. Can you just add $(BLD)/unsetenv.$(O) to GNULIBOBJS in lib/makefile.w32-in, or something like that? No point in having two implementations of unsetenv. I've attached a revised patch (sans any change to makefile.w32-in), relative to trunk bzr 111151. --------------090204060905090807070004 Content-Type: text/plain; charset=UTF-8; name="setenv.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="setenv.txt" PT09IG1vZGlmaWVkIGZpbGUgJ0NoYW5nZUxvZycKLS0tIENoYW5nZUxvZwkyMDEyLTEyLTA4 IDAyOjMwOjUxICswMDAwCisrKyBDaGFuZ2VMb2cJMjAxMi0xMi0wOCAwMzo0Njo1OSArMDAw MApAQCAtMSw1ICsxLDExIEBACiAyMDEyLTEyLTA4ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBj cy51Y2xhLmVkdT4KIAorCVVzZSBwdXRlbnYrdW5zZXRlbnYgaW5zdGVhZCBvZiBtb2RpZnlp bmcgZW52aXJvbiBkaXJlY3RseSAoQnVnIzEzMDcwKS4KKwkqIGxpYi9wdXRlbnYuYywgbGli L3Vuc2V0ZW52LmMsIG00L3B1dGVudi5tNCwgbTQvc2V0ZW52Lm00OgorCU5ldyBmaWxlcywg Y29waWVkIGF1dG9tYXRpY2FsbHkgZnJvbSBnbnVsaWIuCisJKiBsaWIvZ251bGliLm1rLCBt NC9nbnVsaWItY29tcC5tNDogUmVnZW5lcmF0ZS4KKwkqIG1lcmdlLWdudWxpYiAoR05VTElC X01PRFVMRVMpOiBBZGQgcHV0ZW52LCB1bnNldGVudi4KKwogCUFzc3VtZSBQT1NJWCAxMDAz LjEtMTk4OCBvciBsYXRlciBmb3Igc2lnbmFsLmggKEJ1ZyMxMzAyNikuCiAJKiBjb25maWd1 cmUuYWMgKFBUWV9PUEVOLCBQVFlfVFRZX05BTUVfU1BSSU5URik6CiAJVXNlIFNJR0NITEQg cmF0aGVyIHRoYW4gU0lHQ0xELgoKPT09IG1vZGlmaWVkIGZpbGUgJ2FkbWluL0NoYW5nZUxv ZycKLS0tIGFkbWluL0NoYW5nZUxvZwkyMDEyLTEyLTA4IDAyOjMwOjUxICswMDAwCisrKyBh ZG1pbi9DaGFuZ2VMb2cJMjAxMi0xMi0wOCAwMzo0Njo1OSArMDAwMApAQCAtMSw0ICsxLDcg QEAKLTIwMTItMTItMDMgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorMjAx Mi0xMi0wOCAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAY3MudWNsYS5lZHU+CisKKwlVc2UgcHV0 ZW52K3Vuc2V0ZW52IGluc3RlYWQgb2YgbW9kaWZ5aW5nIGVudmlyb24gZGlyZWN0bHkgKEJ1 ZyMxMzA3MCkuCisJKiBtZXJnZS1nbnVsaWIgKEdOVUxJQl9NT0RVTEVTKTogQWRkIHB1dGVu diwgdW5zZXRlbnYuCiAKIAlBc3N1bWUgUE9TSVggMTAwMy4xLTE5ODggb3IgbGF0ZXIgZm9y IHNpZ25hbC5oIChCdWcjMTMwMjYpLgogCSogQ1BQLURFRklORVMgKFNJR0FMUk0sIFNJR0NI TEQsIFNJR0hVUCwgU0lHS0lMTCwgU0lHUElQRSwgU0lHUVVJVCk6Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnYWRtaW4vbWVyZ2UtZ251bGliJwotLS0gYWRtaW4vbWVyZ2UtZ251bGliCTIwMTIt MTItMDggMDI6MzA6NTEgKzAwMDAKKysrIGFkbWluL21lcmdlLWdudWxpYgkyMDEyLTEyLTA4 IDAzOjQ2OjU5ICswMDAwCkBAIC0zMSwxMCArMzEsMTAgQEAKICAgZHRvYXN0ciBkdG90aW1l c3BlYyBkdXAyIGVudmlyb24gZXhlY2luZm8gZmFjY2Vzc2F0CiAgIGZjbnRsLWggZmlsZW1v ZGUgZ2V0bG9hZGF2ZyBnZXRvcHQtZ251IGdldHRpbWUgZ2V0dGltZW9mZGF5CiAgIGlnbm9y ZS12YWx1ZSBpbnRwcm9wcyBsYXJnZWZpbGUgbHN0YXQKLSAgbWFueXdhcm5pbmdzIG1rdGlt ZSBwc2VsZWN0IHB0aHJlYWRfc2lnbWFzayByZWFkbGluaworICBtYW55d2FybmluZ3MgbWt0 aW1lIHBzZWxlY3QgcHRocmVhZF9zaWdtYXNrIHB1dGVudiByZWFkbGluawogICBzaWcyc3Ry IHNvY2tsZW4gc3RhdC10aW1lIHN0ZGFsaWduIHN0ZGFyZyBzdGRib29sIHN0ZGlvCiAgIHN0 cmZ0aW1lIHN0cnRvaW1heCBzdHJ0b3VtYXggc3ltbGluayBzeXNfc3RhdAotICBzeXNfdGlt ZSB0aW1lIHRpbWVyLXRpbWUgdGltZXNwZWMtYWRkIHRpbWVzcGVjLXN1YiB1dGltZW5zCisg IHN5c190aW1lIHRpbWUgdGltZXItdGltZSB0aW1lc3BlYy1hZGQgdGltZXNwZWMtc3ViIHVu c2V0ZW52IHV0aW1lbnMKICAgd2FybmluZ3MKICcKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ2xp Yi9nbnVsaWIubWsnCi0tLSBsaWIvZ251bGliLm1rCTIwMTItMTItMDggMDI6MzA6NTEgKzAw MDAKKysrIGxpYi9nbnVsaWIubWsJMjAxMi0xMi0wOCAwMzo0Njo1OSArMDAwMApAQCAtMjEs NyArMjEsNyBAQAogIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qg b2YgdGhhdCBwcm9ncmFtLgogIwogIyBHZW5lcmF0ZWQgYnkgZ251bGliLXRvb2wuCi0jIFJl cHJvZHVjZSBieTogZ251bGliLXRvb2wgLS1pbXBvcnQgLS1kaXI9LiAtLWxpYj1saWJnbnUg LS1zb3VyY2UtYmFzZT1saWIgLS1tNC1iYXNlPW00IC0tZG9jLWJhc2U9ZG9jIC0tdGVzdHMt YmFzZT10ZXN0cyAtLWF1eC1kaXI9YnVpbGQtYXV4IC0tYXZvaWQ9YXQtaW50ZXJuYWwgLS1h dm9pZD1lcnJubyAtLWF2b2lkPWZjaGRpciAtLWF2b2lkPWZjbnRsIC0tYXZvaWQ9ZnN0YXQg LS1hdm9pZD1tYWxsb2MtcG9zaXggLS1hdm9pZD1tc3ZjLWludmFsIC0tYXZvaWQ9bXN2Yy1u b3Rocm93IC0tYXZvaWQ9b3BlbmF0LWRpZSAtLWF2b2lkPW9wZW5hdC1oIC0tYXZvaWQ9cmFp c2UgLS1hdm9pZD1zYXZlLWN3ZCAtLWF2b2lkPXNlbGVjdCAtLWF2b2lkPXNpZ3Byb2NtYXNr IC0tYXZvaWQ9c3lzX3R5cGVzIC0tYXZvaWQ9dGhyZWFkbGliIC0tbWFrZWZpbGUtbmFtZT1n bnVsaWIubWsgLS1jb25kaXRpb25hbC1kZXBlbmRlbmNpZXMgLS1uby1saWJ0b29sIC0tbWFj cm8tcHJlZml4PWdsIC0tbm8tdmMtZmlsZXMgYWxsb2NhLW9wdCBjLWN0eXBlIGMtc3RyY2Fz ZSBjYXJlYWRsaW5rYXQgY2xvc2Utc3RyZWFtIGNyeXB0by9tZDUgY3J5cHRvL3NoYTEgY3J5 cHRvL3NoYTI1NiBjcnlwdG8vc2hhNTEyIGR0b2FzdHIgZHRvdGltZXNwZWMgZHVwMiBlbnZp cm9uIGV4ZWNpbmZvIGZhY2Nlc3NhdCBmY250bC1oIGZpbGVtb2RlIGdldGxvYWRhdmcgZ2V0 b3B0LWdudSBnZXR0aW1lIGdldHRpbWVvZmRheSBpZ25vcmUtdmFsdWUgaW50cHJvcHMgbGFy Z2VmaWxlIGxzdGF0IG1hbnl3YXJuaW5ncyBta3RpbWUgcHNlbGVjdCBwdGhyZWFkX3NpZ21h c2sgcmVhZGxpbmsgc2lnMnN0ciBzb2NrbGVuIHN0YXQtdGltZSBzdGRhbGlnbiBzdGRhcmcg c3RkYm9vbCBzdGRpbyBzdHJmdGltZSBzdHJ0b2ltYXggc3RydG91bWF4IHN5bWxpbmsgc3lz X3N0YXQgc3lzX3RpbWUgdGltZSB0aW1lci10aW1lIHRpbWVzcGVjLWFkZCB0aW1lc3BlYy1z dWIgdXRpbWVucyB3YXJuaW5ncworIyBSZXByb2R1Y2UgYnk6IGdudWxpYi10b29sIC0taW1w b3J0IC0tZGlyPS4gLS1saWI9bGliZ251IC0tc291cmNlLWJhc2U9bGliIC0tbTQtYmFzZT1t NCAtLWRvYy1iYXNlPWRvYyAtLXRlc3RzLWJhc2U9dGVzdHMgLS1hdXgtZGlyPWJ1aWxkLWF1 eCAtLWF2b2lkPWF0LWludGVybmFsIC0tYXZvaWQ9ZXJybm8gLS1hdm9pZD1mY2hkaXIgLS1h dm9pZD1mY250bCAtLWF2b2lkPWZzdGF0IC0tYXZvaWQ9bWFsbG9jLXBvc2l4IC0tYXZvaWQ9 bXN2Yy1pbnZhbCAtLWF2b2lkPW1zdmMtbm90aHJvdyAtLWF2b2lkPW9wZW5hdC1kaWUgLS1h dm9pZD1vcGVuYXQtaCAtLWF2b2lkPXJhaXNlIC0tYXZvaWQ9c2F2ZS1jd2QgLS1hdm9pZD1z ZWxlY3QgLS1hdm9pZD1zaWdwcm9jbWFzayAtLWF2b2lkPXN5c190eXBlcyAtLWF2b2lkPXRo cmVhZGxpYiAtLW1ha2VmaWxlLW5hbWU9Z251bGliLm1rIC0tY29uZGl0aW9uYWwtZGVwZW5k ZW5jaWVzIC0tbm8tbGlidG9vbCAtLW1hY3JvLXByZWZpeD1nbCAtLW5vLXZjLWZpbGVzIGFs bG9jYS1vcHQgYy1jdHlwZSBjLXN0cmNhc2UgY2FyZWFkbGlua2F0IGNsb3NlLXN0cmVhbSBj cnlwdG8vbWQ1IGNyeXB0by9zaGExIGNyeXB0by9zaGEyNTYgY3J5cHRvL3NoYTUxMiBkdG9h c3RyIGR0b3RpbWVzcGVjIGR1cDIgZW52aXJvbiBleGVjaW5mbyBmYWNjZXNzYXQgZmNudGwt aCBmaWxlbW9kZSBnZXRsb2FkYXZnIGdldG9wdC1nbnUgZ2V0dGltZSBnZXR0aW1lb2ZkYXkg aWdub3JlLXZhbHVlIGludHByb3BzIGxhcmdlZmlsZSBsc3RhdCBtYW55d2FybmluZ3MgbWt0 aW1lIHBzZWxlY3QgcHRocmVhZF9zaWdtYXNrIHB1dGVudiByZWFkbGluayBzaWcyc3RyIHNv Y2tsZW4gc3RhdC10aW1lIHN0ZGFsaWduIHN0ZGFyZyBzdGRib29sIHN0ZGlvIHN0cmZ0aW1l IHN0cnRvaW1heCBzdHJ0b3VtYXggc3ltbGluayBzeXNfc3RhdCBzeXNfdGltZSB0aW1lIHRp bWVyLXRpbWUgdGltZXNwZWMtYWRkIHRpbWVzcGVjLXN1YiB1bnNldGVudiB1dGltZW5zIHdh cm5pbmdzCiAKIAogTU9TVExZQ0xFQU5GSUxFUyArPSBjb3JlICouc3RhY2tkdW1wCkBAIC00 MzksNiArNDM5LDE1IEBACiAKICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgcHRocmVhZF9zaWdt YXNrCiAKKyMjIGJlZ2luIGdudWxpYiBtb2R1bGUgcHV0ZW52CisKKworRVhUUkFfRElTVCAr PSBwdXRlbnYuYworCitFWFRSQV9saWJnbnVfYV9TT1VSQ0VTICs9IHB1dGVudi5jCisKKyMj IGVuZCAgIGdudWxpYiBtb2R1bGUgcHV0ZW52CisKICMjIGJlZ2luIGdudWxpYiBtb2R1bGUg cmVhZGxpbmsKIAogCkBAIC0xNDA5LDYgKzE0MTgsMTUgQEAKIAogIyMgZW5kICAgZ251bGli IG1vZHVsZSB1bmlzdGQKIAorIyMgYmVnaW4gZ251bGliIG1vZHVsZSB1bnNldGVudgorCisK K0VYVFJBX0RJU1QgKz0gdW5zZXRlbnYuYworCitFWFRSQV9saWJnbnVfYV9TT1VSQ0VTICs9 IHVuc2V0ZW52LmMKKworIyMgZW5kICAgZ251bGliIG1vZHVsZSB1bnNldGVudgorCiAjIyBi ZWdpbiBnbnVsaWIgbW9kdWxlIHV0aW1lbnMKIAogbGliZ251X2FfU09VUkNFUyArPSB1dGlt ZW5zLmMKCj09PSBhZGRlZCBmaWxlICdsaWIvcHV0ZW52LmMnCi0tLSBsaWIvcHV0ZW52LmMJ MTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgbGliL3B1dGVudi5jCTIwMTItMTItMDMg MjA6MDM6MjIgKzAwMDAKQEAgLTAsMCArMSwxMzQgQEAKKy8qIENvcHlyaWdodCAoQykgMTk5 MSwgMTk5NCwgMTk5Ny0xOTk4LCAyMDAwLCAyMDAzLTIwMTIgRnJlZSBTb2Z0d2FyZQorICAg Rm91bmRhdGlvbiwgSW5jLgorCisgICBOT1RFOiBUaGUgY2Fub25pY2FsIHNvdXJjZSBvZiB0 aGlzIGZpbGUgaXMgbWFpbnRhaW5lZCB3aXRoIHRoZSBHTlUgQworICAgTGlicmFyeS4gIEJ1 Z3MgY2FuIGJlIHJlcG9ydGVkIHRvIGJ1Zy1nbGliY0BwcmVwLmFpLm1pdC5lZHUuCisKKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyAgIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgYW55 CisgICBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVk ZSA8Y29uZmlnLmg+CisKKy8qIFNwZWNpZmljYXRpb24uICAqLworI2luY2x1ZGUgPHN0ZGxp Yi5oPgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKy8qIEluY2x1ZGUgZXJybm8uaCAqYWZ0 ZXIqIHN5cy90eXBlcy5oIHRvIHdvcmsgYXJvdW5kIGhlYWRlciBwcm9ibGVtcworICAgb24g QUlYIDMuMi41LiAgKi8KKyNpbmNsdWRlIDxlcnJuby5oPgorI2lmbmRlZiBfX3NldF9lcnJu bworIyBkZWZpbmUgX19zZXRfZXJybm8oZXYpICgoZXJybm8pID0gKGV2KSkKKyNlbmRpZgor CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpZiBfTElC QworIyBpZiBIQVZFX0dOVV9MRAorIyAgZGVmaW5lIGVudmlyb24gX19lbnZpcm9uCisjIGVs c2UKK2V4dGVybiBjaGFyICoqZW52aXJvbjsKKyMgZW5kaWYKKyNlbmRpZgorCisjaWYgX0xJ QkMKKy8qIFRoaXMgbG9jayBwcm90ZWN0cyBhZ2FpbnN0IHNpbXVsdGFuZW91cyBtb2RpZmlj YXRpb25zIG9mICdlbnZpcm9uJy4gICovCisjIGluY2x1ZGUgPGJpdHMvbGliYy1sb2NrLmg+ CitfX2xpYmNfbG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQgKHN0YXRpYywgZW52bG9jaykKKyMg ZGVmaW5lIExPQ0sgICBfX2xpYmNfbG9ja19sb2NrIChlbnZsb2NrKQorIyBkZWZpbmUgVU5M T0NLIF9fbGliY19sb2NrX3VubG9jayAoZW52bG9jaykKKyNlbHNlCisjIGRlZmluZSBMT0NL CisjIGRlZmluZSBVTkxPQ0sKKyNlbmRpZgorCitzdGF0aWMgaW50CitfdW5zZXRlbnYgKGNv bnN0IGNoYXIgKm5hbWUpCit7CisgIHNpemVfdCBsZW47CisgIGNoYXIgKiplcDsKKworICBp ZiAobmFtZSA9PSBOVUxMIHx8ICpuYW1lID09ICdcMCcgfHwgc3RyY2hyIChuYW1lLCAnPScp ICE9IE5VTEwpCisgICAgeworICAgICAgX19zZXRfZXJybm8gKEVJTlZBTCk7CisgICAgICBy ZXR1cm4gLTE7CisgICAgfQorCisgIGxlbiA9IHN0cmxlbiAobmFtZSk7CisKKyAgTE9DSzsK KworICBlcCA9IGVudmlyb247CisgIHdoaWxlICgqZXAgIT0gTlVMTCkKKyAgICBpZiAoIXN0 cm5jbXAgKCplcCwgbmFtZSwgbGVuKSAmJiAoKmVwKVtsZW5dID09ICc9JykKKyAgICAgIHsK KyAgICAgICAgLyogRm91bmQgaXQuICBSZW1vdmUgdGhpcyBwb2ludGVyIGJ5IG1vdmluZyBs YXRlciBvbmVzIGJhY2suICAqLworICAgICAgICBjaGFyICoqZHAgPSBlcDsKKworICAgICAg ICBkbworICAgICAgICAgIGRwWzBdID0gZHBbMV07CisgICAgICAgIHdoaWxlICgqZHArKyk7 CisgICAgICAgIC8qIENvbnRpbnVlIHRoZSBsb29wIGluIGNhc2UgTkFNRSBhcHBlYXJzIGFn YWluLiAgKi8KKyAgICAgIH0KKyAgICBlbHNlCisgICAgICArK2VwOworCisgIFVOTE9DSzsK KworICByZXR1cm4gMDsKK30KKworCisvKiBQdXQgU1RSSU5HLCB3aGljaCBpcyBvZiB0aGUg Zm9ybSAiTkFNRT1WQUxVRSIsIGluIHRoZSBlbnZpcm9ubWVudC4KKyAgIElmIFNUUklORyBj b250YWlucyBubyAnPScsIHRoZW4gcmVtb3ZlIFNUUklORyBmcm9tIHRoZSBlbnZpcm9ubWVu dC4gICovCitpbnQKK3B1dGVudiAoY2hhciAqc3RyaW5nKQoreworICBjb25zdCBjaGFyICpj b25zdCBuYW1lX2VuZCA9IHN0cmNociAoc3RyaW5nLCAnPScpOworICByZWdpc3RlciBzaXpl X3Qgc2l6ZTsKKyAgcmVnaXN0ZXIgY2hhciAqKmVwOworCisgIGlmIChuYW1lX2VuZCA9PSBO VUxMKQorICAgIHsKKyAgICAgIC8qIFJlbW92ZSB0aGUgdmFyaWFibGUgZnJvbSB0aGUgZW52 aXJvbm1lbnQuICAqLworICAgICAgcmV0dXJuIF91bnNldGVudiAoc3RyaW5nKTsKKyAgICB9 CisKKyAgc2l6ZSA9IDA7CisgIGZvciAoZXAgPSBlbnZpcm9uOyAqZXAgIT0gTlVMTDsgKytl cCkKKyAgICBpZiAoIXN0cm5jbXAgKCplcCwgc3RyaW5nLCBuYW1lX2VuZCAtIHN0cmluZykg JiYKKyAgICAgICAgKCplcClbbmFtZV9lbmQgLSBzdHJpbmddID09ICc9JykKKyAgICAgIGJy ZWFrOworICAgIGVsc2UKKyAgICAgICsrc2l6ZTsKKworICBpZiAoKmVwID09IE5VTEwpCisg ICAgeworICAgICAgc3RhdGljIGNoYXIgKipsYXN0X2Vudmlyb24gPSBOVUxMOworICAgICAg Y2hhciAqKm5ld19lbnZpcm9uID0gKGNoYXIgKiopIG1hbGxvYyAoKHNpemUgKyAyKSAqIHNp emVvZiAoY2hhciAqKSk7CisgICAgICBpZiAobmV3X2Vudmlyb24gPT0gTlVMTCkKKyAgICAg ICAgcmV0dXJuIC0xOworICAgICAgKHZvaWQpIG1lbWNweSAoKHZvaWQgKikgbmV3X2Vudmly b24sICh2b2lkICopIGVudmlyb24sCisgICAgICAgICAgICAgICAgICAgICBzaXplICogc2l6 ZW9mIChjaGFyICopKTsKKyAgICAgIG5ld19lbnZpcm9uW3NpemVdID0gKGNoYXIgKikgc3Ry aW5nOworICAgICAgbmV3X2Vudmlyb25bc2l6ZSArIDFdID0gTlVMTDsKKyAgICAgIGZyZWUg KGxhc3RfZW52aXJvbik7CisgICAgICBsYXN0X2Vudmlyb24gPSBuZXdfZW52aXJvbjsKKyAg ICAgIGVudmlyb24gPSBuZXdfZW52aXJvbjsKKyAgICB9CisgIGVsc2UKKyAgICAqZXAgPSBz dHJpbmc7CisKKyAgcmV0dXJuIDA7Cit9Cgo9PT0gYWRkZWQgZmlsZSAnbGliL3Vuc2V0ZW52 LmMnCi0tLSBsaWIvdW5zZXRlbnYuYwkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBs aWIvdW5zZXRlbnYuYwkyMDEyLTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0wLDAgKzEsMTI3 IEBACisvKiBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTUtMjAwMiwgMjAwNS0yMDEyIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IEdOVSBDIExpYnJhcnkuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRlIDxjb25maWcuaD4KKwor LyogRG9uJ3QgdXNlIF9fYXR0cmlidXRlX18gX19ub25udWxsX18gaW4gdGhpcyBjb21waWxh dGlvbiB1bml0LiAgT3RoZXJ3aXNlIGdjYworICAgb3B0aW1pemVzIGF3YXkgdGhlIG5hbWUg PT0gTlVMTCB0ZXN0IGJlbG93LiAgKi8KKyNkZWZpbmUgX0dMX0FSR19OT05OVUxMKHBhcmFt cykKKworLyogU3BlY2lmaWNhdGlvbi4gICovCisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNp bmNsdWRlIDxlcnJuby5oPgorI2lmICFfTElCQworIyBkZWZpbmUgX19zZXRfZXJybm8oZXYp ICgoZXJybm8pID0gKGV2KSkKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5j bHVkZSA8dW5pc3RkLmg+CisKKyNpZiAhX0xJQkMKKyMgZGVmaW5lIF9fZW52aXJvbiAgICAg IGVudmlyb24KKyNlbmRpZgorCisjaWYgX0xJQkMKKy8qIFRoaXMgbG9jayBwcm90ZWN0cyBh Z2FpbnN0IHNpbXVsdGFuZW91cyBtb2RpZmljYXRpb25zIG9mICdlbnZpcm9uJy4gICovCisj IGluY2x1ZGUgPGJpdHMvbGliYy1sb2NrLmg+CitfX2xpYmNfbG9ja19kZWZpbmVfaW5pdGlh bGl6ZWQgKHN0YXRpYywgZW52bG9jaykKKyMgZGVmaW5lIExPQ0sgICBfX2xpYmNfbG9ja19s b2NrIChlbnZsb2NrKQorIyBkZWZpbmUgVU5MT0NLIF9fbGliY19sb2NrX3VubG9jayAoZW52 bG9jaykKKyNlbHNlCisjIGRlZmluZSBMT0NLCisjIGRlZmluZSBVTkxPQ0sKKyNlbmRpZgor CisvKiBJbiB0aGUgR05VIEMgbGlicmFyeSB3ZSBtdXN0IGtlZXAgdGhlIG5hbWVzcGFjZSBj bGVhbi4gICovCisjaWZkZWYgX0xJQkMKKyMgZGVmaW5lIHVuc2V0ZW52IF9fdW5zZXRlbnYK KyNlbmRpZgorCisjaWYgX0xJQkMgfHwgIUhBVkVfVU5TRVRFTlYKKworaW50Cit1bnNldGVu diAoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgc2l6ZV90IGxlbjsKKyAgY2hhciAqKmVwOwor CisgIGlmIChuYW1lID09IE5VTEwgfHwgKm5hbWUgPT0gJ1wwJyB8fCBzdHJjaHIgKG5hbWUs ICc9JykgIT0gTlVMTCkKKyAgICB7CisgICAgICBfX3NldF9lcnJubyAoRUlOVkFMKTsKKyAg ICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgbGVuID0gc3RybGVuIChuYW1lKTsKKworICBM T0NLOworCisgIGVwID0gX19lbnZpcm9uOworICB3aGlsZSAoKmVwICE9IE5VTEwpCisgICAg aWYgKCFzdHJuY21wICgqZXAsIG5hbWUsIGxlbikgJiYgKCplcClbbGVuXSA9PSAnPScpCisg ICAgICB7CisgICAgICAgIC8qIEZvdW5kIGl0LiAgUmVtb3ZlIHRoaXMgcG9pbnRlciBieSBt b3ZpbmcgbGF0ZXIgb25lcyBiYWNrLiAgKi8KKyAgICAgICAgY2hhciAqKmRwID0gZXA7CisK KyAgICAgICAgZG8KKyAgICAgICAgICBkcFswXSA9IGRwWzFdOworICAgICAgICB3aGlsZSAo KmRwKyspOworICAgICAgICAvKiBDb250aW51ZSB0aGUgbG9vcCBpbiBjYXNlIE5BTUUgYXBw ZWFycyBhZ2Fpbi4gICovCisgICAgICB9CisgICAgZWxzZQorICAgICAgKytlcDsKKworICBV TkxPQ0s7CisKKyAgcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBfTElCQworIyB1bmRlZiB1bnNl dGVudgord2Vha19hbGlhcyAoX191bnNldGVudiwgdW5zZXRlbnYpCisjZW5kaWYKKworI2Vs c2UgLyogSEFWRV9VTlNFVEVOViAqLworCisjIHVuZGVmIHVuc2V0ZW52CisjIGlmICFIQVZF X0RFQ0xfVU5TRVRFTlYKKyMgIGlmIFZPSURfVU5TRVRFTlYKK2V4dGVybiB2b2lkIHVuc2V0 ZW52IChjb25zdCBjaGFyICopOworIyAgZWxzZQorZXh0ZXJuIGludCB1bnNldGVudiAoY29u c3QgY2hhciAqKTsKKyMgIGVuZGlmCisjIGVuZGlmCisKKy8qIENhbGwgdGhlIHVuZGVybHlp bmcgdW5zZXRlbnYsIGluIGNhc2UgdGhlcmUgaXMgaGlkZGVuIGJvb2trZWVwaW5nCisgICB0 aGF0IG5lZWRzIHVwZGF0aW5nIGJleW9uZCBqdXN0IG1vZGlmeWluZyBlbnZpcm9uLiAgKi8K K2ludAorcnBsX3Vuc2V0ZW52IChjb25zdCBjaGFyICpuYW1lKQoreworICBpbnQgcmVzdWx0 ID0gMDsKKyAgaWYgKCFuYW1lIHx8ICEqbmFtZSB8fCBzdHJjaHIgKG5hbWUsICc9JykpCisg ICAgeworICAgICAgZXJybm8gPSBFSU5WQUw7CisgICAgICByZXR1cm4gLTE7CisgICAgfQor ICB3aGlsZSAoZ2V0ZW52IChuYW1lKSkKKyMgaWYgIVZPSURfVU5TRVRFTlYKKyAgICByZXN1 bHQgPQorIyBlbmRpZgorICAgICAgdW5zZXRlbnYgKG5hbWUpOworICByZXR1cm4gcmVzdWx0 OworfQorCisjZW5kaWYgLyogSEFWRV9VTlNFVEVOViAqLwoKPT09IG1vZGlmaWVkIGZpbGUg J200L2dudWxpYi1jb21wLm00JwotLS0gbTQvZ251bGliLWNvbXAubTQJMjAxMi0xMi0wOCAw MjozMDo1MSArMDAwMAorKysgbTQvZ251bGliLWNvbXAubTQJMjAxMi0xMi0wOCAwMzo0Njo1 OSArMDAwMApAQCAtODUsNiArODUsNyBAQAogICAjIENvZGUgZnJvbSBtb2R1bGUgcGF0aG1h eDoKICAgIyBDb2RlIGZyb20gbW9kdWxlIHBzZWxlY3Q6CiAgICMgQ29kZSBmcm9tIG1vZHVs ZSBwdGhyZWFkX3NpZ21hc2s6CisgICMgQ29kZSBmcm9tIG1vZHVsZSBwdXRlbnY6CiAgICMg Q29kZSBmcm9tIG1vZHVsZSByZWFkbGluazoKICAgIyBDb2RlIGZyb20gbW9kdWxlIHJvb3Qt dWlkOgogICAjIENvZGUgZnJvbSBtb2R1bGUgc2lnMnN0cjoKQEAgLTEyNiw2ICsxMjcsNyBA QAogICAjIENvZGUgZnJvbSBtb2R1bGUgdGltZXNwZWMtc3ViOgogICAjIENvZGUgZnJvbSBt b2R1bGUgdTY0OgogICAjIENvZGUgZnJvbSBtb2R1bGUgdW5pc3RkOgorICAjIENvZGUgZnJv bSBtb2R1bGUgdW5zZXRlbnY6CiAgICMgQ29kZSBmcm9tIG1vZHVsZSB1dGltZW5zOgogICAj IENvZGUgZnJvbSBtb2R1bGUgdmVyaWZ5OgogICAjIENvZGUgZnJvbSBtb2R1bGUgd2Fybmlu Z3M6CkBAIC0yNDAsNiArMjQyLDExIEBACiAgICAgZ2xfUFJFUkVRX1BUSFJFQURfU0lHTUFT SwogICBmaQogICBnbF9TSUdOQUxfTU9EVUxFX0lORElDQVRPUihbcHRocmVhZF9zaWdtYXNr XSkKKyAgZ2xfRlVOQ19QVVRFTlYKKyAgaWYgdGVzdCAkUkVQTEFDRV9QVVRFTlYgPSAxOyB0 aGVuCisgICAgQUNfTElCT0JKKFtwdXRlbnZdKQorICBmaQorICBnbF9TVERMSUJfTU9EVUxF X0lORElDQVRPUihbcHV0ZW52XSkKICAgZ2xfRlVOQ19SRUFETElOSwogICBpZiB0ZXN0ICRI QVZFX1JFQURMSU5LID0gMCB8fCB0ZXN0ICRSRVBMQUNFX1JFQURMSU5LID0gMTsgdGhlbgog ICAgIEFDX0xJQk9CSihbcmVhZGxpbmtdKQpAQCAtMjk3LDYgKzMwNCwxMiBAQAogICBnbF9U SU1FUl9USU1FCiAgIGdsX1RJTUVTUEVDCiAgIGdsX1VOSVNURF9ICisgIGdsX0ZVTkNfVU5T RVRFTlYKKyAgaWYgdGVzdCAkSEFWRV9VTlNFVEVOViA9IDAgfHwgdGVzdCAkUkVQTEFDRV9V TlNFVEVOViA9IDE7IHRoZW4KKyAgICBBQ19MSUJPQkooW3Vuc2V0ZW52XSkKKyAgICBnbF9Q UkVSRVFfVU5TRVRFTlYKKyAgZmkKKyAgZ2xfU1RETElCX01PRFVMRV9JTkRJQ0FUT1IoW3Vu c2V0ZW52XSkKICAgZ2xfVVRJTUVOUwogICBnbF9nbnVsaWJfZW5hYmxlZF9kb3NuYW1lPWZh bHNlCiAgIGdsX2dudWxpYl9lbmFibGVkX2V1aWRhY2Nlc3M9ZmFsc2UKQEAgLTY3OSw2ICs2 OTIsNyBAQAogICBsaWIvcGF0aG1heC5oCiAgIGxpYi9wc2VsZWN0LmMKICAgbGliL3B0aHJl YWRfc2lnbWFzay5jCisgIGxpYi9wdXRlbnYuYwogICBsaWIvcmVhZGxpbmsuYwogICBsaWIv cm9vdC11aWQuaAogICBsaWIvc2hhMS5jCkBAIC03MjMsNiArNzM3LDcgQEAKICAgbGliL3U2 NC5oCiAgIGxpYi91bmlzdGQuYwogICBsaWIvdW5pc3RkLmluLmgKKyAgbGliL3Vuc2V0ZW52 LmMKICAgbGliL3V0aW1lbnMuYwogICBsaWIvdXRpbWVucy5oCiAgIGxpYi92ZXJpZnkuaApA QCAtNzY0LDcgKzc3OSw5IEBACiAgIG00L3BhdGhtYXgubTQKICAgbTQvcHNlbGVjdC5tNAog ICBtNC9wdGhyZWFkX3NpZ21hc2subTQKKyAgbTQvcHV0ZW52Lm00CiAgIG00L3JlYWRsaW5r Lm00CisgIG00L3NldGVudi5tNAogICBtNC9zaGExLm00CiAgIG00L3NoYTI1Ni5tNAogICBt NC9zaGE1MTIubTQKCj09PSBhZGRlZCBmaWxlICdtNC9wdXRlbnYubTQnCi0tLSBtNC9wdXRl bnYubTQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgbTQvcHV0ZW52Lm00CTIwMTIt MTItMDMgMjA6MDM6MjIgKzAwMDAKQEAgLTAsMCArMSw1MCBAQAorIyBwdXRlbnYubTQgc2Vy aWFsIDE5CitkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0 byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2Rp ZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5s IEZyb20gSmltIE1leWVyaW5nLgorZG5sCitkbmwgQ2hlY2sgd2hldGhlciBwdXRlbnYgKCJG T08iKSByZW1vdmVzIEZPTyBmcm9tIHRoZSBlbnZpcm9ubWVudC4KK2RubCBUaGUgcHV0ZW52 IGluIGxpYmMgb24gYXQgbGVhc3QgU3VuT1MgNC4xLjQgZG9lcyAqbm90KiBkbyB0aGF0Lgor CitBQ19ERUZVTihbZ2xfRlVOQ19QVVRFTlZdLAorWworICBBQ19SRVFVSVJFKFtnbF9TVERM SUJfSF9ERUZBVUxUU10pCisgIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkgZG5s IGZvciBjcm9zcy1jb21waWxlcworICBBQ19DQUNIRV9DSEVDSyhbZm9yIHB1dGVudiBjb21w YXRpYmxlIHdpdGggR05VIGFuZCBTVklEXSwKKyAgIFtnbF9jdl9mdW5jX3N2aWRfcHV0ZW52 XSwKKyAgIFtBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW0FDX0lOQ0xVREVTX0RF RkFVTFRdLFtbCisgICAgLyogUHV0IGl0IGluIGVudi4gICovCisgICAgaWYgKHB1dGVudiAo IkNPTkZURVNUX3B1dGVudj12YWwiKSkKKyAgICAgIHJldHVybiAxOworCisgICAgLyogVHJ5 IHRvIHJlbW92ZSBpdC4gICovCisgICAgaWYgKHB1dGVudiAoIkNPTkZURVNUX3B1dGVudiIp KQorICAgICAgcmV0dXJuIDI7CisKKyAgICAvKiBNYWtlIHN1cmUgaXQgd2FzIGRlbGV0ZWQu ICAqLworICAgIGlmIChnZXRlbnYgKCJDT05GVEVTVF9wdXRlbnYiKSAhPSAwKQorICAgICAg cmV0dXJuIDM7CisKKyAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAg ICAgICAgICBnbF9jdl9mdW5jX3N2aWRfcHV0ZW52PXllcywKKyAgICAgICAgICAgICBnbF9j dl9mdW5jX3N2aWRfcHV0ZW52PW5vLAorICAgICAgICAgICAgIGRubCBXaGVuIGNyb3NzY29t cGlsaW5nLCBhc3N1bWUgcHV0ZW52IGlzIGJyb2tlbi4KKyAgICAgICAgICAgICBbY2FzZSAi JGhvc3Rfb3MiIGluCisgICAgICAgICAgICAgICAgICAgICAgICAjIEd1ZXNzIHllcyBvbiBn bGliYyBzeXN0ZW1zLgorICAgICAgICAgICAgICAgICotZ251KikgZ2xfY3ZfZnVuY19zdmlk X3B1dGVudj0iZ3Vlc3NpbmcgeWVzIiA7OworICAgICAgICAgICAgICAgICAgICAgICAgIyBJ ZiB3ZSBkb24ndCBrbm93LCBhc3N1bWUgdGhlIHdvcnN0LgorICAgICAgICAgICAgICAgICop ICAgICAgZ2xfY3ZfZnVuY19zdmlkX3B1dGVudj0iZ3Vlc3Npbmcgbm8iIDs7CisgICAgICAg ICAgICAgIGVzYWMKKyAgICAgICAgICAgICBdKQorICAgXSkKKyAgY2FzZSAiJGdsX2N2X2Z1 bmNfc3ZpZF9wdXRlbnYiIGluCisgICAgKnllcykgOzsKKyAgICAqKQorICAgICAgUkVQTEFD RV9QVVRFTlY9MQorICAgICAgOzsKKyAgZXNhYworXSkKCj09PSBhZGRlZCBmaWxlICdtNC9z ZXRlbnYubTQnCi0tLSBtNC9zZXRlbnYubTQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAor KysgbTQvc2V0ZW52Lm00CTIwMTItMTItMDMgMjA6MDM6MjIgKzAwMDAKQEAgLTAsMCArMSwx NjAgQEAKKyMgc2V0ZW52Lm00IHNlcmlhbCAyNgorZG5sIENvcHlyaWdodCAoQykgMjAwMS0y MDA0LCAyMDA2LTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhp cyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24K K2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmli dXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFz IHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworQUNfREVGVU4oW2dsX0ZVTkNfU0VURU5W XSwKK1sKKyAgQUNfUkVRVUlSRShbZ2xfRlVOQ19TRVRFTlZfU0VQQVJBVEVdKQorICBBQ19S RVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pIGRubCBmb3IgY3Jvc3MtY29tcGlsZXMKKyAg aWYgdGVzdCAkYWNfY3ZfZnVuY19zZXRlbnYgPSBubzsgdGhlbgorICAgIEhBVkVfU0VURU5W PTAKKyAgZWxzZQorICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHNldGVudiB2YWxpZGF0 ZXMgYXJndW1lbnRzXSwKKyAgICAgIFtnbF9jdl9mdW5jX3NldGVudl93b3Jrc10sCisgICAg ICBbQUNfUlVOX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisgICAgICAgI2luY2x1ZGUg PHN0ZGxpYi5oPgorICAgICAgICNpbmNsdWRlIDxlcnJuby5oPgorICAgICAgICNpbmNsdWRl IDxzdHJpbmcuaD4KKyAgICAgIF1dLCBbWworICAgICAgIGludCByZXN1bHQgPSAwOworICAg ICAgIHsKKyAgICAgICAgIGlmIChzZXRlbnYgKCIiLCAiIiwgMCkgIT0gLTEpCisgICAgICAg ICAgIHJlc3VsdCB8PSAxOworICAgICAgICAgZWxzZSBpZiAoZXJybm8gIT0gRUlOVkFMKQor ICAgICAgICAgICByZXN1bHQgfD0gMjsKKyAgICAgICB9CisgICAgICAgeworICAgICAgICAg aWYgKHNldGVudiAoImEiLCAiPSIsIDEpICE9IDApCisgICAgICAgICAgIHJlc3VsdCB8PSA0 OworICAgICAgICAgZWxzZSBpZiAoc3RyY21wIChnZXRlbnYgKCJhIiksICI9IikgIT0gMCkK KyAgICAgICAgICAgcmVzdWx0IHw9IDg7CisgICAgICAgfQorICAgICAgIHJldHVybiByZXN1 bHQ7CisgICAgICBdXSldLAorICAgICAgW2dsX2N2X2Z1bmNfc2V0ZW52X3dvcmtzPXllc10s IFtnbF9jdl9mdW5jX3NldGVudl93b3Jrcz1ub10sCisgICAgICBbY2FzZSAiJGhvc3Rfb3Mi IGluCisgICAgICAgICAgICAgICAgICMgR3Vlc3MgeWVzIG9uIGdsaWJjIHN5c3RlbXMuCisg ICAgICAgICAqLWdudSopIGdsX2N2X2Z1bmNfc2V0ZW52X3dvcmtzPSJndWVzc2luZyB5ZXMi IDs7CisgICAgICAgICAgICAgICAgICMgSWYgd2UgZG9uJ3Qga25vdywgYXNzdW1lIHRoZSB3 b3JzdC4KKyAgICAgICAgICopICAgICAgZ2xfY3ZfZnVuY19zZXRlbnZfd29ya3M9Imd1ZXNz aW5nIG5vIiA7OworICAgICAgIGVzYWMKKyAgICAgIF0pXSkKKyAgICBjYXNlICIkZ2xfY3Zf ZnVuY19zZXRlbnZfd29ya3MiIGluCisgICAgICAqeWVzKSA7OworICAgICAgKikKKyAgICAg ICAgUkVQTEFDRV9TRVRFTlY9MQorICAgICAgICA7OworICAgIGVzYWMKKyAgZmkKK10pCisK KyMgTGlrZSBnbF9GVU5DX1NFVEVOViwgZXhjZXB0IHByZXBhcmUgZm9yIHNlcGFyYXRlIGNv bXBpbGF0aW9uCisjIChubyBSRVBMQUNFX1NFVEVOViwgbm8gQUNfTElCT0JKKS4KK0FDX0RF RlVOKFtnbF9GVU5DX1NFVEVOVl9TRVBBUkFURV0sCitbCisgIEFDX1JFUVVJUkUoW2dsX1NU RExJQl9IX0RFRkFVTFRTXSkKKyAgQUNfQ0hFQ0tfREVDTFNfT05DRShbc2V0ZW52XSkKKyAg aWYgdGVzdCAkYWNfY3ZfaGF2ZV9kZWNsX3NldGVudiA9IG5vOyB0aGVuCisgICAgSEFWRV9E RUNMX1NFVEVOVj0wCisgIGZpCisgIEFDX0NIRUNLX0ZVTkNTX09OQ0UoW3NldGVudl0pCisg IGdsX1BSRVJFUV9TRVRFTlYKK10pCisKK0FDX0RFRlVOKFtnbF9GVU5DX1VOU0VURU5WXSwK K1sKKyAgQUNfUkVRVUlSRShbZ2xfU1RETElCX0hfREVGQVVMVFNdKQorICBBQ19SRVFVSVJF KFtBQ19DQU5PTklDQUxfSE9TVF0pIGRubCBmb3IgY3Jvc3MtY29tcGlsZXMKKyAgQUNfQ0hF Q0tfREVDTFNfT05DRShbdW5zZXRlbnZdKQorICBpZiB0ZXN0ICRhY19jdl9oYXZlX2RlY2xf dW5zZXRlbnYgPSBubzsgdGhlbgorICAgIEhBVkVfREVDTF9VTlNFVEVOVj0wCisgIGZpCisg IEFDX0NIRUNLX0ZVTkNTKFt1bnNldGVudl0pCisgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfdW5z ZXRlbnYgPSBubzsgdGhlbgorICAgIEhBVkVfVU5TRVRFTlY9MAorICBlbHNlCisgICAgSEFW RV9VTlNFVEVOVj0xCisgICAgZG5sIFNvbWUgQlNEcyByZXR1cm4gdm9pZCwgZmFpbGluZyB0 byBkbyBlcnJvciBjaGVja2luZy4KKyAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIHVuc2V0ZW52 KCkgcmV0dXJuIHR5cGVdLCBbZ3RfY3ZfZnVuY191bnNldGVudl9yZXRdLAorICAgICAgW0FD X0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAg ICAgIFtbCisjdW5kZWYgX0JTRAorI2RlZmluZSBfQlNEIDEgLyogdW5oaWRlIHVuc2V0ZW52 IGRlY2xhcmF0aW9uIGluIE9TRi8xIDUuMSA8c3RkbGliLmg+ICovCisjaW5jbHVkZSA8c3Rk bGliLmg+CitleHRlcm4KKyNpZmRlZiBfX2NwbHVzcGx1cworIkMiCisjZW5kaWYKK2ludCB1 bnNldGVudiAoY29uc3QgY2hhciAqbmFtZSk7CisgICAgICAgICAgICBdXSwKKyAgICAgICAg ICAgIFtbXV0pXSwKKyAgICAgICAgIFtndF9jdl9mdW5jX3Vuc2V0ZW52X3JldD0naW50J10s CisgICAgICAgICBbZ3RfY3ZfZnVuY191bnNldGVudl9yZXQ9J3ZvaWQnXSldKQorICAgIGlm IHRlc3QgJGd0X2N2X2Z1bmNfdW5zZXRlbnZfcmV0ID0gJ3ZvaWQnOyB0aGVuCisgICAgICBB Q19ERUZJTkUoW1ZPSURfVU5TRVRFTlZdLCBbMV0sIFtEZWZpbmUgdG8gMSBpZiB1bnNldGVu diByZXR1cm5zIHZvaWQKKyAgICAgICBpbnN0ZWFkIG9mIGludC5dKQorICAgICAgUkVQTEFD RV9VTlNFVEVOVj0xCisgICAgZmkKKworICAgIGRubCBTb2xhcmlzIDEwIHVuc2V0ZW52IGRv ZXMgbm90IHJlbW92ZSBhbGwgY29waWVzIG9mIGEgbmFtZS4KKyAgICBkbmwgSGFpa3UgYWxw aGEgMiB1bnNldGVudiBnZXRzIGNvbmZ1c2VkIGJ5IGFzc2lnbm1lbnQgdG8gZW52aXJvbi4K KyAgICBkbmwgT3BlbkJTRCA0LjcgdW5zZXRlbnYoIiIpIGRvZXMgbm90IGZhaWwuCisgICAg QUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdW5zZXRlbnYgb2JleXMgUE9TSVhdLAorICAgICAg W2dsX2N2X2Z1bmNfdW5zZXRlbnZfd29ya3NdLAorICAgICAgW0FDX1JVTl9JRkVMU0UoW0FD X0xBTkdfUFJPR1JBTShbWworICAgICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAgICAgICAj aW5jbHVkZSA8ZXJybm8uaD4KKyAgICAgICBleHRlcm4gY2hhciAqKmVudmlyb247CisgICAg ICBdXSwgW1sKKyAgICAgICBjaGFyIGVudHJ5MVtdID0gImE9MSI7CisgICAgICAgY2hhciBl bnRyeTJbXSA9ICJiPTIiOworICAgICAgIGNoYXIgKmVudltdID0geyBlbnRyeTEsIGVudHJ5 MiwgTlVMTCB9OworICAgICAgIGlmIChwdXRlbnYgKChjaGFyICopICJhPTEiKSkgcmV0dXJu IDE7CisgICAgICAgaWYgKHB1dGVudiAoZW50cnkyKSkgcmV0dXJuIDI7CisgICAgICAgZW50 cnkyWzBdID0gJ2EnOworICAgICAgIHVuc2V0ZW52ICgiYSIpOworICAgICAgIGlmIChnZXRl bnYgKCJhIikpIHJldHVybiAzOworICAgICAgIGlmICghdW5zZXRlbnYgKCIiKSB8fCBlcnJu byAhPSBFSU5WQUwpIHJldHVybiA0OworICAgICAgIGVudHJ5MlswXSA9ICdiJzsKKyAgICAg ICBlbnZpcm9uID0gZW52OworICAgICAgIGlmICghZ2V0ZW52ICgiYSIpKSByZXR1cm4gNTsK KyAgICAgICBlbnRyeTJbMF0gPSAnYSc7CisgICAgICAgdW5zZXRlbnYgKCJhIik7CisgICAg ICAgaWYgKGdldGVudiAoImEiKSkgcmV0dXJuIDY7CisgICAgICBdXSldLAorICAgICAgW2ds X2N2X2Z1bmNfdW5zZXRlbnZfd29ya3M9eWVzXSwgW2dsX2N2X2Z1bmNfdW5zZXRlbnZfd29y a3M9bm9dLAorICAgICAgW2Nhc2UgIiRob3N0X29zIiBpbgorICAgICAgICAgICAgICAgICAj IEd1ZXNzIHllcyBvbiBnbGliYyBzeXN0ZW1zLgorICAgICAgICAgKi1nbnUqKSBnbF9jdl9m dW5jX3Vuc2V0ZW52X3dvcmtzPSJndWVzc2luZyB5ZXMiIDs7CisgICAgICAgICAgICAgICAg ICMgSWYgd2UgZG9uJ3Qga25vdywgYXNzdW1lIHRoZSB3b3JzdC4KKyAgICAgICAgICopICAg ICAgZ2xfY3ZfZnVuY191bnNldGVudl93b3Jrcz0iZ3Vlc3Npbmcgbm8iIDs7CisgICAgICAg ZXNhYworICAgICAgXSldKQorICAgIGNhc2UgIiRnbF9jdl9mdW5jX3Vuc2V0ZW52X3dvcmtz IiBpbgorICAgICAgKnllcykgOzsKKyAgICAgICopCisgICAgICAgIFJFUExBQ0VfVU5TRVRF TlY9MQorICAgICAgICA7OworICAgIGVzYWMKKyAgZmkKK10pCisKKyMgUHJlcmVxdWlzaXRl cyBvZiBsaWIvc2V0ZW52LmMuCitBQ19ERUZVTihbZ2xfUFJFUkVRX1NFVEVOVl0sCitbCisg IEFDX1JFUVVJUkUoW0FDX0ZVTkNfQUxMT0NBXSkKKyAgQUNfUkVRVUlSRShbZ2xfRU5WSVJP Tl0pCisgIEFDX0NIRUNLX0hFQURFUlNfT05DRShbdW5pc3RkLmhdKQorICBBQ19DSEVDS19I RUFERVJTKFtzZWFyY2guaF0pCisgIEFDX0NIRUNLX0ZVTkNTKFt0c2VhcmNoXSkKK10pCisK KyMgUHJlcmVxdWlzaXRlcyBvZiBsaWIvdW5zZXRlbnYuYy4KK0FDX0RFRlVOKFtnbF9QUkVS RVFfVU5TRVRFTlZdLAorWworICBBQ19SRVFVSVJFKFtnbF9FTlZJUk9OXSkKKyAgQUNfQ0hF Q0tfSEVBREVSU19PTkNFKFt1bmlzdGQuaF0pCitdKQoKPT09IG1vZGlmaWVkIGZpbGUgJ3Ny Yy9DaGFuZ2VMb2cnCi0tLSBzcmMvQ2hhbmdlTG9nCTIwMTItMTItMDggMDI6MzA6NTEgKzAw MDAKKysrIHNyYy9DaGFuZ2VMb2cJMjAxMi0xMi0wOCAwMzo0Njo1OSArMDAwMApAQCAtMSw1 ICsxLDI3IEBACiAyMDEyLTEyLTA4ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEBjcy51Y2xhLmVk dT4KIAorCVVzZSBwdXRlbnYrdW5zZXRlbnYgaW5zdGVhZCBvZiBtb2RpZnlpbmcgZW52aXJv biBkaXJlY3RseSAoQnVnIzEzMDcwKS4KKwkqIGFsbG9jLmMgKHhwdXRlbnYpOiBOZXcgZnVu Y3Rpb24uCisJKiBkYnVzYmluZC5jIChGZGJ1c19pbml0X2J1cyk6CisJKiBlbWFjcy5jICht YWluKToKKwkqIHh0ZXJtLmMgKHhfdGVybV9pbml0KToKKwlVc2UgeHB1dGVudiBpbnN0ZWFk IG9mIHNldGVudiBvciBwdXRlbnYsIHRvIGRldGVjdCBtZW1vcnkgZXhoYXVzdGlvbi4KKwkq IGVkaXRmbnMuYyAoaW5pdGlhbF90eik6IE1vdmUgc3RhdGljIHZhciBkZWNsIHVwLgorCSh0 enZhbGJ1Zl9pbl9lbnZpcm9uKTogTmV3IHN0YXRpYyB2YXIuCisJKGluaXRfZWRpdGZucyk6 CUluaXRpYWxpemUgdGhlc2UgdHdvIHN0YXRpYyB2YXJzLgorCShGZW5jb2RlX3RpbWUpOiBE b24ndCBhc3N1bWUgYXJiaXRyYXJ5IGxpbWl0IG9uIEVNQUNTX0lOVCB3aWR0aC4KKwlTYXZl IG9sZCBUWiB2YWx1ZSBvbiBzdGFjaywgaWYgaXQncyBzbWFsbC4KKwkoRmVuY29kZV90aW1l LCBzZXRfdGltZV96b25lX3J1bGUpOiBEb24ndCBtb2RpZnkgJ2Vudmlyb24nIGRpcmVjdGx5 OworCWluc3RlYWQsIHVzZSB4cHV0ZW52K3Vuc2V0ZW52IHRvIHNldCBhbmQgcmVzdG9yZSBU Wi4KKwkoZW52aXJvbmJ1Zik6IFJlbW92ZSBzdGF0aWMgdmFyLiAgQWxsIHVzZXMgcmVtb3Zl ZC4KKwkoRnNldF90aW1lX3pvbmVfcnVsZSk6IERvIG5vdCBzYXZlIFRaIGFuZCBlbnZpcm9u OyBubyBsb25nZXIgbmVlZGVkIGhlcmUuCisJKHNldF90aW1lX3pvbmVfcnVsZV90ejEsIHNl dF90aW1lX3pvbmVfcnVsZV90ejIpIFtMT0NBTFRJTUVfQ0FDSEVdOgorCU1vdmUgdG8gaW5z aWRlIHNldF90aW1lX3pvbmVfcnVsZTsgdGhleSBkb24ndCBuZWVkIGZpbGUgc2NvcGUgYW55 IG1vcmUuCisJKHNldF90aW1lX3pvbmVfcnVsZSk6IE1haW50YWluIHRoZSBUWj12YWx1ZSBz dHJpbmcgc2VwYXJhdGVseS4KKwkoc3ltc19vZl9lZGl0Zm5zKTogRG9uJ3QgaW5pdGlhbGl6 ZSBpbml0aWFsX3R6OyBpbml0X2VkaXRmbnMgbm93IGRvZXMgaXQuCisJKiBlbWFjcy5jIChk dW1wX3R6KSBbSEFWRV9UWlNFVF06IE5vdyBjb25zdC4KKwkqIGxpc3AuaCAoeHB1dGVudik6 IE5ldyBkZWNsLgorCiAJQXNzdW1lIFBPU0lYIDEwMDMuMS0xOTg4IG9yIGxhdGVyIGZvciBz aWduYWwuaCAoQnVnIzEzMDI2KS4KIAlFeGNlcHRpb25zOiBkbyBub3QgYXNzdW1lIFNJR0NP TlQsIFNJR1NUT1AsIFNJR1RTVFAsIFNJR1RUSU4sCiAJU0lHVFRPVSwgU0lHVVNSMSwgU0lH VVNSMiwgYXMgTWljcm9zb2Z0IHBsYXRmb3JtcyBsYWNrIHRoZXNlLgoKPT09IG1vZGlmaWVk IGZpbGUgJ3NyYy9hbGxvYy5jJwotLS0gc3JjL2FsbG9jLmMJMjAxMi0xMi0wMyAwODowNjow MiArMDAwMAorKysgc3JjL2FsbG9jLmMJMjAxMi0xMi0wMyAyMDowNzoxMyArMDAwMApAQCAt ODIwLDYgKzgyMCwxNSBAQAogICByZXR1cm4gcDsKIH0KIAorLyogTGlrZSBwdXRlbnYsIGJ1 dCAoMSkgdXNlIHRoZSBlcXVpdmFsZW50IG9mIHhtYWxsb2MgYW5kICgyKSB0aGUKKyAgIGFy Z3VtZW50IGlzIGEgY29uc3QgcG9pbnRlci4gICovCisKK3ZvaWQKK3hwdXRlbnYgKGNoYXIg Y29uc3QgKnN0cmluZykKK3sKKyAgaWYgKHB1dGVudiAoKGNoYXIgKikgc3RyaW5nKSAhPSAw KQorICAgIG1lbW9yeV9mdWxsICgwKTsKK30KIAogLyogVW53aW5kIGZvciBTQUZFX0FMTE9D QSAqLwogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL2RidXNiaW5kLmMnCi0tLSBzcmMvZGJ1 c2JpbmQuYwkyMDEyLTEwLTMxIDExOjQ1OjQwICswMDAwCisrKyBzcmMvZGJ1c2JpbmQuYwky MDEyLTEyLTAzIDIwOjAzOjIyICswMDAwCkBAIC0xMjAzLDcgKzEyMDMsNyBAQAogICAgICAg eGRfcmVnaXN0ZXJlZF9idXNlcyA9IEZjb25zIChGY29ucyAoYnVzLCB2YWwpLCB4ZF9yZWdp c3RlcmVkX2J1c2VzKTsKIAogICAgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gYWJvcnQuICAq LwotICAgICAgcHV0ZW52ICgoY2hhciAqKSAiREJVU19GQVRBTF9XQVJOSU5HUz0wIik7Cisg ICAgICB4cHV0ZW52ICgiREJVU19GQVRBTF9XQVJOSU5HUz0wIik7CiAKICAgICAgIC8qIENs ZWFudXAuICAqLwogICAgICAgZGJ1c19lcnJvcl9mcmVlICgmZGVycm9yKTsKCj09PSBtb2Rp ZmllZCBmaWxlICdzcmMvZWRpdGZucy5jJwotLS0gc3JjL2VkaXRmbnMuYwkyMDEyLTEyLTAz IDE0OjEzOjA2ICswMDAwCisrKyBzcmMvZWRpdGZucy5jCTIwMTItMTItMDMgMjA6MDc6MTMg KzAwMDAKQEAgLTc4LDYgKzc4LDE1IEBACiAKIHN0YXRpYyBMaXNwX09iamVjdCBRYm91bmRh cnk7CiAKKy8qIFRoZSBzdGFydHVwIHZhbHVlIG9mIHRoZSBUWiBlbnZpcm9ubWVudCB2YXJp YWJsZSBzbyBpdCBjYW4gYmUKKyAgIHJlc3RvcmVkIGlmIHRoZSB1c2VyIGNhbGxzIHNldC10 aW1lLXpvbmUtcnVsZSB3aXRoIGEgbmlsCisgICBhcmd1bWVudC4gIElmIG51bGwsIHRoZSBU WiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3YXMgdW5zZXQuICAqLworc3RhdGljIGNoYXIgY29u c3QgKmluaXRpYWxfdHo7CisKKy8qIFRydWUgaWYgdGhlIHN0YXRpYyB2YXJpYWJsZSB0enZh bGJ1ZiAoZGVmaW5lZCBpbgorICAgc2V0X3RpbWVfem9uZV9ydWxlKSBpcyBwYXJ0IG9mICdl bnZpcm9uJy4gICovCitzdGF0aWMgYm9vbCB0enZhbGJ1Zl9pbl9lbnZpcm9uOworCiAKIHZv aWQKIGluaXRfZWRpdGZucyAodm9pZCkKQEAgLTk2LDYgKzEwNSw5IEBACiAgICAgcmV0dXJu OwogI2VuZGlmIC8qIG5vdCBDQU5OT1RfRFVNUCAqLwogCisgIGluaXRpYWxfdHogPSBnZXRl bnYgKCJUWiIpOworICB0enZhbGJ1Zl9pbl9lbnZpcm9uID0gMDsKKwogICBwdyA9IGdldHB3 dWlkIChnZXR1aWQgKCkpOwogI2lmZGVmIE1TRE9TCiAgIC8qIFdlIGxldCB0aGUgcmVhbCB1 c2VyIG5hbWUgZGVmYXVsdCB0byAicm9vdCIgYmVjYXVzZSB0aGF0J3MgcXVpdGUKQEAgLTE5 MDAsOSArMTkxMiwxMSBAQAogICAgIH0KICAgZWxzZQogICAgIHsKLSAgICAgIGNoYXIgdHpi dWZbMTAwXTsKKyAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHR6YnVmX2Zvcm1hdFtdID0gIlhY WCVzJSJwSSJkOiUwMmQ6JTAyZCI7CisgICAgICBjaGFyIHR6YnVmW3NpemVvZiB0emJ1Zl9m b3JtYXQgKyBJTlRfU1RSTEVOX0JPVU5EIChFTUFDU19JTlQpXTsKKyAgICAgIGNoYXIgKm9s ZF90enN0cmluZzsKICAgICAgIGNvbnN0IGNoYXIgKnR6c3RyaW5nOwotICAgICAgY2hhciAq Km9sZGVudiA9IGVudmlyb24sICoqbmV3ZW52OworICAgICAgVVNFX1NBRkVfQUxMT0NBOwog CiAgICAgICBpZiAoRVEgKHpvbmUsIFF0KSkKIAl0enN0cmluZyA9ICJVVEMwIjsKQEAgLTE5 MTQsMTMgKzE5MjgsMjAgQEAKIAkgIEVNQUNTX0lOVCB6b25lX2hyID0gYWJzem9uZSAvICg2 MCo2MCk7CiAJICBpbnQgem9uZV9taW4gPSAoYWJzem9uZS82MCkgJSA2MDsKIAkgIGludCB6 b25lX3NlYyA9IGFic3pvbmUgJSA2MDsKLQkgIHNwcmludGYgKHR6YnVmLCAiWFhYJXMlInBJ ImQ6JTAyZDolMDJkIiwgIi0iICsgKFhJTlQgKHpvbmUpIDwgMCksCisJICBzcHJpbnRmICh0 emJ1ZiwgdHpidWZfZm9ybWF0LCAiLSIgKyAoWElOVCAoem9uZSkgPCAwKSwKIAkJICAgem9u ZV9ociwgem9uZV9taW4sIHpvbmVfc2VjKTsKIAkgIHR6c3RyaW5nID0gdHpidWY7CiAJfQog ICAgICAgZWxzZQogCWVycm9yICgiSW52YWxpZCB0aW1lIHpvbmUgc3BlY2lmaWNhdGlvbiIp OwogCisgICAgICBvbGRfdHpzdHJpbmcgPSBnZXRlbnYgKCJUWiIpOworICAgICAgaWYgKG9s ZF90enN0cmluZykKKwl7CisJICBjaGFyICpidWYgPSBTQUZFX0FMTE9DQSAoc3RybGVuIChv bGRfdHpzdHJpbmcpICsgMSk7CisJICBvbGRfdHpzdHJpbmcgPSBzdHJjcHkgKGJ1Ziwgb2xk X3R6c3RyaW5nKTsKKwl9CisKICAgICAgIGJsb2NrX2lucHV0ICgpOwogCiAgICAgICAvKiBT ZXQgVFogYmVmb3JlIGNhbGxpbmcgbWt0aW1lOyBtZXJlbHkgYWRqdXN0aW5nIG1rdGltZSdz IHJldHVybmVkCkBAIC0xOTI5LDE1ICsxOTUwLDEyIEBACiAKICAgICAgIHZhbHVlID0gbWt0 aW1lICgmdG0pOwogCi0gICAgICAvKiBSZXN0b3JlIFRaIHRvIHByZXZpb3VzIHZhbHVlLiAg Ki8KLSAgICAgIG5ld2VudiA9IGVudmlyb247Ci0gICAgICBlbnZpcm9uID0gb2xkZW52Owor ICAgICAgc2V0X3RpbWVfem9uZV9ydWxlIChvbGRfdHpzdHJpbmcpOwogI2lmZGVmIExPQ0FM VElNRV9DQUNIRQogICAgICAgdHpzZXQgKCk7CiAjZW5kaWYKICAgICAgIHVuYmxvY2tfaW5w dXQgKCk7Ci0KLSAgICAgIHhmcmVlIChuZXdlbnYpOworICAgICAgU0FGRV9GUkVFICgpOwog ICAgIH0KIAogICBpZiAodmFsdWUgPT0gKHRpbWVfdCkgLTEpCkBAIC0yMDY3LDE2ICsyMDg1 LDYgQEAKICAgcmV0dXJuIGxpc3QyICh6b25lX29mZnNldCwgem9uZV9uYW1lKTsKIH0KIAot LyogVGhpcyBob2xkcyB0aGUgdmFsdWUgb2YgYGVudmlyb24nIHByb2R1Y2VkIGJ5IHRoZSBw cmV2aW91cwotICAgY2FsbCB0byBGc2V0X3RpbWVfem9uZV9ydWxlLCBvciAwIGlmIEZzZXRf dGltZV96b25lX3J1bGUKLSAgIGhhcyBuZXZlciBiZWVuIGNhbGxlZC4gICovCi1zdGF0aWMg Y2hhciAqKmVudmlyb25idWY7Ci0KLS8qIFRoaXMgaG9sZHMgdGhlIHN0YXJ0dXAgdmFsdWUg b2YgdGhlIFRaIGVudmlyb25tZW50IHZhcmlhYmxlIHNvIGl0Ci0gICBjYW4gYmUgcmVzdG9y ZWQgaWYgdGhlIHVzZXIgY2FsbHMgc2V0LXRpbWUtem9uZS1ydWxlIHdpdGggYSBuaWwKLSAg IGFyZ3VtZW50LiAgKi8KLXN0YXRpYyBjaGFyICppbml0aWFsX3R6OwotCiBERUZVTiAoInNl dC10aW1lLXpvbmUtcnVsZSIsIEZzZXRfdGltZV96b25lX3J1bGUsIFNzZXRfdGltZV96b25l X3J1bGUsIDEsIDEsIDAsCiAgICAgICAgZG9jOiAvKiBTZXQgdGhlIGxvY2FsIHRpbWUgem9u ZSB1c2luZyBUWiwgYSBzdHJpbmcgc3BlY2lmeWluZyBhIHRpbWUgem9uZSBydWxlLgogSWYg VFogaXMgbmlsLCB1c2UgaW1wbGVtZW50YXRpb24tZGVmaW5lZCBkZWZhdWx0IHRpbWUgem9u ZSBpbmZvcm1hdGlvbi4KQEAgLTIwODksMTggKzIwOTcsMTAgQEAKICAgKExpc3BfT2JqZWN0 IHR6KQogewogICBjb25zdCBjaGFyICp0enN0cmluZzsKLSAgY2hhciAqKm9sZF9lbnZpcm9u YnVmOwogCiAgIGlmICghIChOSUxQICh0eikgfHwgRVEgKHR6LCBRdCkpKQogICAgIENIRUNL X1NUUklORyAodHopOwogCi0gIGJsb2NrX2lucHV0ICgpOwotCi0gIC8qIFdoZW4gY2FsbGVk IGZvciB0aGUgZmlyc3QgdGltZSwgc2F2ZSB0aGUgb3JpZ2luYWwgVFouICAqLwotICBvbGRf ZW52aXJvbmJ1ZiA9IGVudmlyb25idWY7Ci0gIGlmICghb2xkX2Vudmlyb25idWYpCi0gICAg aW5pdGlhbF90eiA9IChjaGFyICopIGdldGVudiAoIlRaIik7Ci0KICAgaWYgKE5JTFAgKHR6 KSkKICAgICB0enN0cmluZyA9IGluaXRpYWxfdHo7CiAgIGVsc2UgaWYgKEVRICh0eiwgUXQp KQpAQCAtMjEwOCwxMDYgKzIxMDgsOTcgQEAKICAgZWxzZQogICAgIHR6c3RyaW5nID0gU1NE QVRBICh0eik7CiAKKyAgYmxvY2tfaW5wdXQgKCk7CiAgIHNldF90aW1lX3pvbmVfcnVsZSAo dHpzdHJpbmcpOwotICBlbnZpcm9uYnVmID0gZW52aXJvbjsKLQogICB1bmJsb2NrX2lucHV0 ICgpOwogCi0gIHhmcmVlIChvbGRfZW52aXJvbmJ1Zik7CiAgIHJldHVybiBRbmlsOwogfQog Ci0jaWZkZWYgTE9DQUxUSU1FX0NBQ0hFCi0KLS8qIFRoZXNlIHR3byB2YWx1ZXMgYXJlIGtu b3duIHRvIGxvYWQgdHogZmlsZXMgaW4gYnVnZ3kgaW1wbGVtZW50YXRpb25zLAotICAgaS5l LiBTb2xhcmlzIDEgZXhlY3V0YWJsZXMgcnVubmluZyB1bmRlciBlaXRoZXIgU29sYXJpcyAx IG9yIFNvbGFyaXMgMi4KLSAgIFRoZWlyIHZhbHVlcyBzaG91bGRuJ3QgbWF0dGVyIGluIG5v bi1idWdneSBpbXBsZW1lbnRhdGlvbnMuCi0gICBXZSBkb24ndCB1c2Ugc3RyaW5nIGxpdGVy YWxzIGZvciB0aGVzZSBzdHJpbmdzLAotICAgc2luY2UgaWYgYSBzdHJpbmcgaW4gdGhlIGVu dmlyb25tZW50IGlzIGluIHJlYWRvbmx5Ci0gICBzdG9yYWdlLCBpdCBydW5zIGFmb3VsIG9m IGJ1Z3MgaW4gU1ZSNCBhbmQgU29sYXJpcyAyLjMuCi0gICBTZWUgU3VuIGJ1Z3MgMTExMzA5 NSBhbmQgMTExNDExNCwgYGBUaW1lem9uZSByb3V0aW5lcwotICAgaW1wcm9wZXJseSBtb2Rp ZnkgZW52aXJvbm1lbnQnJy4gICovCi0KLXN0YXRpYyBjaGFyIHNldF90aW1lX3pvbmVfcnVs ZV90ejFbXSA9ICJUWj1HTVQrMCI7Ci1zdGF0aWMgY2hhciBzZXRfdGltZV96b25lX3J1bGVf dHoyW10gPSAiVFo9R01UKzEiOwotCi0jZW5kaWYKLQogLyogU2V0IHRoZSBsb2NhbCB0aW1l IHpvbmUgcnVsZSB0byBUWlNUUklORy4KLSAgIFRoaXMgYWxsb2NhdGVzIG1lbW9yeSBpbnRv IGBlbnZpcm9uJywgd2hpY2ggaXQgaXMgdGhlIGNhbGxlcidzCi0gICByZXNwb25zaWJpbGl0 eSB0byBmcmVlLiAgKi8KKworICAgVGhpcyBmdW5jdGlvbiBpcyBub3QgdGhyZWFkLXNhZmUs IHBhcnRseSBiZWNhdXNlIHB1dGVudiwgdW5zZXRlbnYKKyAgIGFuZCB0enNldCBhcmUgbm90 LCBhbmQgcGFydGx5IGJlY2F1c2Ugb2YgdGhlIHN0YXRpYyBzdG9yYWdlIGl0CisgICB1cGRh dGVzLiAgT3RoZXIgdGhyZWFkcyB0aGF0IGludm9rZSBsb2NhbHRpbWUgZXRjLiBtYXkgYmUg YWR2ZXJzZWx5CisgICBhZmZlY3RlZCB3aGlsZSB0aGlzIGZ1bmN0aW9uIGlzIGV4ZWN1dGlu Zy4gICovCiAKIHZvaWQKIHNldF90aW1lX3pvbmVfcnVsZSAoY29uc3QgY2hhciAqdHpzdHJp bmcpCiB7Ci0gIHB0cmRpZmZfdCBlbnZwdHJzOwotICBjaGFyICoqZnJvbSwgKip0bywgKipu ZXdlbnY7Ci0KLSAgLyogTWFrZSB0aGUgRU5WSVJPTiB2ZWN0b3IgbG9uZ2VyIHdpdGggcm9v bSBmb3IgVFpTVFJJTkcuICAqLwotICBmb3IgKGZyb20gPSBlbnZpcm9uOyAqZnJvbTsgZnJv bSsrKQotICAgIGNvbnRpbnVlOwotICBlbnZwdHJzID0gZnJvbSAtIGVudmlyb24gKyAyOwot ICBuZXdlbnYgPSB0byA9IHhtYWxsb2MgKGVudnB0cnMgKiBzaXplb2YgKm5ld2VudgotCQkJ ICsgKHR6c3RyaW5nID8gc3RybGVuICh0enN0cmluZykgKyA0IDogMCkpOwotCi0gIC8qIEFk ZCBUWlNUUklORyB0byB0aGUgZW5kIG9mIGVudmlyb24sIGFzIGEgdmFsdWUgZm9yIFRaLiAg Ki8KKyAgLyogQSBidWZmZXIgaG9sZGluZyBhIHN0cmluZyBvZiB0aGUgZm9ybSAiVFo9dmFs dWUiLCBpbnRlbmRlZAorICAgICB0byBiZSBwYXJ0IG9mIHRoZSBlbnZpcm9ubWVudC4gICov CisgIHN0YXRpYyBjaGFyICp0enZhbGJ1ZjsKKyAgc3RhdGljIHB0cmRpZmZfdCB0enZhbGJ1 ZnNpemU7CisKKyAgaW50IHR6ZXFsZW4gPSBzaXplb2YgIlRaPSIgLSAxOworCisjaWZkZWYg TE9DQUxUSU1FX0NBQ0hFCisgIC8qIFRoZXNlIHR3byB2YWx1ZXMgYXJlIGtub3duIHRvIGxv YWQgdHogZmlsZXMgaW4gYnVnZ3kgaW1wbGVtZW50YXRpb25zLAorICAgICBpLmUuIFNvbGFy aXMgMSBleGVjdXRhYmxlcyBydW5uaW5nIHVuZGVyIGVpdGhlciBTb2xhcmlzIDEgb3IgU29s YXJpcyAyLgorICAgICBUaGVpciB2YWx1ZXMgc2hvdWxkbid0IG1hdHRlciBpbiBub24tYnVn Z3kgaW1wbGVtZW50YXRpb25zLgorICAgICBXZSBkb24ndCB1c2Ugc3RyaW5nIGxpdGVyYWxz IGZvciB0aGVzZSBzdHJpbmdzLAorICAgICBzaW5jZSBpZiBhIHN0cmluZyBpbiB0aGUgZW52 aXJvbm1lbnQgaXMgaW4gcmVhZG9ubHkKKyAgICAgc3RvcmFnZSwgaXQgcnVucyBhZm91bCBv ZiBidWdzIGluIFNWUjQgYW5kIFNvbGFyaXMgMi4zLgorICAgICBTZWUgU3VuIGJ1Z3MgMTEx MzA5NSBhbmQgMTExNDExNCwgYGBUaW1lem9uZSByb3V0aW5lcworICAgICBpbXByb3Blcmx5 IG1vZGlmeSBlbnZpcm9ubWVudCcnLiAgKi8KKworICBzdGF0aWMgY2hhciBzZXRfdGltZV96 b25lX3J1bGVfdHpbXVtzaXplb2YgIlRaPUdNVCswIl0KKyAgICA9IHsgIlRaPUdNVCswIiwg IlRaPUdNVCsxIiB9OworCisgIC8qIEluIFN1bk9TIDQuMS4zX1UxIGFuZCA0LjEuNCwgaWYg VFogaGFzIGEgdmFsdWUgbGlrZQorICAgICAiVVMvUGFjaWZpYyIgdGhhdCBsb2FkcyBhIHR6 IGZpbGUsIHRoZW4gY2hhbmdlcyB0byBhIHZhbHVlIGxpa2UKKyAgICAgIlhYWDAiIHRoYXQg ZG9lcyBub3QgbG9hZCBhIHR6IGZpbGUsIGFuZCB0aGVuIGNoYW5nZXMgYmFjayB0bworICAg ICBpdHMgb3JpZ2luYWwgdmFsdWUsIHRoZSBsYXN0IGNoYW5nZSBpcyAoaW5jb3JyZWN0bHkp IGlnbm9yZWQuCisgICAgIEFsc28sIGlmIFRaIGNoYW5nZXMgdHdpY2UgaW4gc3VjY2Vzc2lv biB0byB2YWx1ZXMgdGhhdCBkbworICAgICBub3QgbG9hZCBhIHR6IGZpbGUsIHR6c2V0IGNh biBkdW1wIGNvcmUgKHNlZSBTdW4gYnVnIzEyMjUxNzkpLgorICAgICBUaGUgZm9sbG93aW5n IGNvZGUgd29ya3MgYXJvdW5kIHRoZXNlIGJ1Z3MuICAqLworCiAgIGlmICh0enN0cmluZykK ICAgICB7Ci0gICAgICBjaGFyICp0ID0gKGNoYXIgKikgKHRvICsgZW52cHRycyk7Ci0gICAg ICBzdHJjcHkgKHQsICJUWj0iKTsKLSAgICAgIHN0cmNhdCAodCwgdHpzdHJpbmcpOwotICAg ICAgKnRvKysgPSB0OwotICAgIH0KLQotICAvKiBDb3B5IHRoZSBvbGQgZW52aXJvbiB2ZWN0 b3IgZWxlbWVudHMgaW50byBORVdFTlYsCi0gICAgIGJ1dCBkb24ndCBjb3B5IHRoZSBUWiB2 YXJpYWJsZS4KLSAgICAgU28gd2UgaGF2ZSBvbmx5IG9uZSBkZWZpbml0aW9uIG9mIFRaLCB3 aGljaCBjYW1lIGZyb20gVFpTVFJJTkcuICAqLwotICBmb3IgKGZyb20gPSBlbnZpcm9uOyAq ZnJvbTsgZnJvbSsrKQotICAgIGlmIChzdHJuY21wICgqZnJvbSwgIlRaPSIsIDMpICE9IDAp Ci0gICAgICAqdG8rKyA9ICpmcm9tOwotICAqdG8gPSAwOwotCi0gIGVudmlyb24gPSBuZXdl bnY7Ci0KLSAgLyogSWYgd2UgZG8gaGF2ZSBhIFRaU1RSSU5HLCBORVdFTlYgcG9pbnRzIHRv IHRoZSB2ZWN0b3Igc2xvdCB3aGVyZQotICAgICB0aGUgVFogdmFyaWFibGUgaXMgc3RvcmVk LiAgSWYgd2UgZG8gbm90IGhhdmUgYSBUWlNUUklORywKLSAgICAgVE8gcG9pbnRzIHRvIHRo ZSB2ZWN0b3Igc2xvdCB3aGljaCBoYXMgdGhlIHRlcm1pbmF0aW5nIG51bGwuICAqLworICAg ICAgLyogVGVtcG9yYXJpbHkgc2V0IFRaIHRvIGEgdmFsdWUgdGhhdCBsb2FkcyBhIHR6IGZp bGUKKwkgYW5kIHRoYXQgZGlmZmVycyBmcm9tIHR6c3RyaW5nLiAgKi8KKyAgICAgIGJvb2wg ZXEwID0gc3RyY21wICh0enN0cmluZywgc2V0X3RpbWVfem9uZV9ydWxlX3R6WzBdICsgdHpl cWxlbikgPT0gMDsKKyAgICAgIHhwdXRlbnYgKHNldF90aW1lX3pvbmVfcnVsZV90eltlcTBd KTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICAvKiBUaGUgaW1wbGllZCB0enN0cmlu ZyBpcyB1bmtub3duLCBzbyB0ZW1wb3JhcmlseSBzZXQgVFogdG8KKwkgdHdvIGRpZmZlcmVu dCB2YWx1ZXMgdGhhdCBlYWNoIGxvYWQgYSB0eiBmaWxlLiAgKi8KKyAgICAgIHhwdXRlbnYg KHNldF90aW1lX3pvbmVfcnVsZV90elswXSk7CisgICAgICB0enNldCAoKTsKKyAgICAgIHhw dXRlbnYgKHNldF90aW1lX3pvbmVfcnVsZV90elsxXSk7CisgICAgfQorICB0enNldCAoKTsK KyNlbmRpZgorCisgIGlmICghdHpzdHJpbmcpCisgICAgeworICAgICAgdW5zZXRlbnYgKCJU WiIpOworICAgICAgdHp2YWxidWZfaW5fZW52aXJvbiA9IDA7CisgICAgfQorICBlbHNlCisg ICAgeworICAgICAgcHRyZGlmZl90IHR6c3RyaW5nbGVuID0gc3RybGVuICh0enN0cmluZyk7 CisKKyAgICAgIGlmICh0enZhbGJ1ZnNpemUgPD0gdHplcWxlbiArIHR6c3RyaW5nbGVuKQor CXsKKwkgIHVuc2V0ZW52ICgiVFoiKTsKKwkgIHR6dmFsYnVmX2luX2Vudmlyb24gPSAwOwor CSAgdHp2YWxidWYgPSB4cGFsbG9jICh0enZhbGJ1ZiwgJnR6dmFsYnVmc2l6ZSwKKwkJCSAg ICAgIHR6ZXFsZW4gKyB0enN0cmluZ2xlbiAtIHR6dmFsYnVmc2l6ZSArIDEsIC0xLCAxKTsK KwkgIG1lbWNweSAodHp2YWxidWYsICJUWj0iLCB0emVxbGVuKTsKKwl9CisKKyAgICAgIHN0 cmNweSAodHp2YWxidWYgKyB0emVxbGVuLCB0enN0cmluZyk7CisKKyAgICAgIGlmICghdHp2 YWxidWZfaW5fZW52aXJvbikKKwl7CisJICB4cHV0ZW52ICh0enZhbGJ1Zik7CisJICB0enZh bGJ1Zl9pbl9lbnZpcm9uID0gMTsKKwl9CisgICAgfQogCiAjaWZkZWYgTE9DQUxUSU1FX0NB Q0hFCi0gIHsKLSAgICAvKiBJbiBTdW5PUyA0LjEuM19VMSBhbmQgNC4xLjQsIGlmIFRaIGhh cyBhIHZhbHVlIGxpa2UKLSAgICAgICAiVVMvUGFjaWZpYyIgdGhhdCBsb2FkcyBhIHR6IGZp bGUsIHRoZW4gY2hhbmdlcyB0byBhIHZhbHVlIGxpa2UKLSAgICAgICAiWFhYMCIgdGhhdCBk b2VzIG5vdCBsb2FkIGEgdHogZmlsZSwgYW5kIHRoZW4gY2hhbmdlcyBiYWNrIHRvCi0gICAg ICAgaXRzIG9yaWdpbmFsIHZhbHVlLCB0aGUgbGFzdCBjaGFuZ2UgaXMgKGluY29ycmVjdGx5 KSBpZ25vcmVkLgotICAgICAgIEFsc28sIGlmIFRaIGNoYW5nZXMgdHdpY2UgaW4gc3VjY2Vz c2lvbiB0byB2YWx1ZXMgdGhhdCBkbwotICAgICAgIG5vdCBsb2FkIGEgdHogZmlsZSwgdHpz ZXQgY2FuIGR1bXAgY29yZSAoc2VlIFN1biBidWcjMTIyNTE3OSkuCi0gICAgICAgVGhlIGZv bGxvd2luZyBjb2RlIHdvcmtzIGFyb3VuZCB0aGVzZSBidWdzLiAgKi8KLQotICAgIGlmICh0 enN0cmluZykKLSAgICAgIHsKLQkvKiBUZW1wb3JhcmlseSBzZXQgVFogdG8gYSB2YWx1ZSB0 aGF0IGxvYWRzIGEgdHogZmlsZQotCSAgIGFuZCB0aGF0IGRpZmZlcnMgZnJvbSB0enN0cmlu Zy4gICovCi0JY2hhciAqdHogPSAqbmV3ZW52OwotCSpuZXdlbnYgPSAoc3RyY21wICh0enN0 cmluZywgc2V0X3RpbWVfem9uZV9ydWxlX3R6MSArIDMpID09IDAKLQkJICAgPyBzZXRfdGlt ZV96b25lX3J1bGVfdHoyIDogc2V0X3RpbWVfem9uZV9ydWxlX3R6MSk7Ci0JdHpzZXQgKCk7 Ci0JKm5ld2VudiA9IHR6OwotICAgICAgfQotICAgIGVsc2UKLSAgICAgIHsKLQkvKiBUaGUg aW1wbGllZCB0enN0cmluZyBpcyB1bmtub3duLCBzbyB0ZW1wb3JhcmlseSBzZXQgVFogdG8K LQkgICB0d28gZGlmZmVyZW50IHZhbHVlcyB0aGF0IGVhY2ggbG9hZCBhIHR6IGZpbGUuICAq LwotCSp0byA9IHNldF90aW1lX3pvbmVfcnVsZV90ejE7Ci0JdG9bMV0gPSAwOwotCXR6c2V0 ICgpOwotCSp0byA9IHNldF90aW1lX3pvbmVfcnVsZV90ejI7Ci0JdHpzZXQgKCk7Ci0JKnRv ID0gMDsKLSAgICAgIH0KLQotICAgIC8qIE5vdyBUWiBoYXMgdGhlIGRlc2lyZWQgdmFsdWUs IGFuZCB0enNldCBjYW4gYmUgaW52b2tlZCBzYWZlbHkuICAqLwotICB9Ci0KICAgdHpzZXQg KCk7CiAjZW5kaWYKIH0KQEAgLTQ3OTksOSArNDc5MCw2IEBACiB2b2lkCiBzeW1zX29mX2Vk aXRmbnMgKHZvaWQpCiB7Ci0gIGVudmlyb25idWYgPSAwOwotICBpbml0aWFsX3R6ID0gMDsK LQogICBERUZTWU0gKFFidWZmZXJfYWNjZXNzX2ZvbnRpZnlfZnVuY3Rpb25zLCAiYnVmZmVy LWFjY2Vzcy1mb250aWZ5LWZ1bmN0aW9ucyIpOwogCiAgIERFRlZBUl9MSVNQICgiaW5oaWJp dC1maWVsZC10ZXh0LW1vdGlvbiIsIFZpbmhpYml0X2ZpZWxkX3RleHRfbW90aW9uLAoKPT09 IG1vZGlmaWVkIGZpbGUgJ3NyYy9lbWFjcy5jJwotLS0gc3JjL2VtYWNzLmMJMjAxMi0xMS0y MSAwNDo0Nzo1NSArMDAwMAorKysgc3JjL2VtYWNzLmMJMjAxMi0xMi0wMyAyMDowMzoyMiAr MDAwMApAQCAtNTM1LDcgKzUzNSw3IEBACiAjaWZkZWYgSEFWRV9UWlNFVAogLyogQSB2YWxp ZCBidXQgdW5saWtlbHkgdmFsdWUgZm9yIHRoZSBUWiBlbnZpcm9ubWVudCB2YWx1ZS4KICAg IEl0IGlzIE9LICh0aG91Z2ggYSBiaXQgc2xvd2VyKSBpZiB0aGUgdXNlciBhY3R1YWxseSBj aG9vc2VzIHRoaXMgdmFsdWUuICAqLwotc3RhdGljIGNoYXIgZHVtcF90eltdID0gIlV0QzAi Oworc3RhdGljIGNoYXIgY29uc3QgZHVtcF90eltdID0gIlV0QzAiOwogI2VuZGlmCiAKICNp Zm5kZWYgT1JESU5BUllfTElOSwpAQCAtNzE3LDcgKzcxNyw3IEBACiAKICNpZmRlZiBHX1NM SUNFX0FMV0FZU19NQUxMT0MKICAgLyogVGhpcyBpcyB1c2VkIGJ5IHRoZSBDeWd3aW4gYnVp bGQuICAqLwotICBzZXRlbnYgKCJHX1NMSUNFIiwgImFsd2F5cy1tYWxsb2MiLCAxKTsKKyAg eHB1dGVudiAoIkdfU0xJQ0U9YWx3YXlzLW1hbGxvYyIpOwogI2VuZGlmCiAKICNpZmRlZiBH TlVfTElOVVgKQEAgLTgwMyw5ICs4MDMsOCBAQAogI2lmZGVmIEhBVkVfUEVSU09OQUxJVFlf TElOVVgzMgogICBpZiAoZHVtcGluZyAmJiAhIGdldGVudiAoIkVNQUNTX0hFQVBfRVhFQyIp KQogICAgIHsKLSAgICAgIHN0YXRpYyBjaGFyIGhlYXBleGVjW10gPSAiRU1BQ1NfSEVBUF9F WEVDPXRydWUiOwogICAgICAgLyogU2V0IHRoaXMgc28gd2Ugb25seSBkbyB0aGlzIG9uY2Uu ICAqLwotICAgICAgcHV0ZW52IChoZWFwZXhlYyk7CisgICAgICB4cHV0ZW52ICgiRU1BQ1Nf SEVBUF9FWEVDPXRydWUiKTsKIAogICAgICAgLyogQSBmbGFnIHRvIHR1cm4gb2ZmIGFkZHJl c3MgcmFuZG9taXphdGlvbiB3aGljaCBpcyBpbnRyb2R1Y2VkCiAgICAgICAgICBpbiBsaW51 eCBrZXJuZWwgc2hpcHBlZCB3aXRoIGZlZG9yYSBjb3JlIDQgKi8KQEAgLTEzMDksNyArMTMw OCw3IEBACiAgICAgIGRvbid0IHBvbGx1dGUgVmdsb2JhbF9lbnZpcm9ubWVudC4gICovCiAg IC8qIFNldHRpbmcgTEFORyBoZXJlIHdpbGwgZGVmZWF0IHRoZSBzdGFydHVwIGxvY2FsZSBw cm9jZXNzaW5nLi4uICAqLwogI2lmZGVmIEFJWAotICBwdXRlbnYgKCJMQU5HPUMiKTsKKyAg eHB1dGVudiAoIkxBTkc9QyIpOwogI2VuZGlmCiAKICAgaW5pdF9idWZmZXIgKCk7CS8qIElu aXQgZGVmYXVsdCBkaXJlY3Rvcnkgb2YgbWFpbiBidWZmZXIuICAqLwoKPT09IG1vZGlmaWVk IGZpbGUgJ3NyYy9saXNwLmgnCi0tLSBzcmMvbGlzcC5oCTIwMTItMTItMDQgMTU6MTU6MzAg KzAwMDAKKysrIHNyYy9saXNwLmgJMjAxMi0xMi0wOCAwMzo0Njo1OSArMDAwMApAQCAtMzU5 NCw2ICszNTk0LDcgQEAKIGV4dGVybiB2b2lkICp4cGFsbG9jICh2b2lkICosIHB0cmRpZmZf dCAqLCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwgcHRyZGlmZl90KTsKIAogZXh0ZXJuIGNoYXIg KnhzdHJkdXAgKGNvbnN0IGNoYXIgKik7CitleHRlcm4gdm9pZCB4cHV0ZW52IChjb25zdCBj aGFyICopOwogCiBleHRlcm4gY2hhciAqZWdldGVudiAoY29uc3QgY2hhciAqKTsKIAoKPT09 IG1vZGlmaWVkIGZpbGUgJ3NyYy94dGVybS5jJwotLS0gc3JjL3h0ZXJtLmMJMjAxMi0xMi0w NCAxNToxNTozMCArMDAwMAorKysgc3JjL3h0ZXJtLmMJMjAxMi0xMi0wOCAwMzo0Njo1OSAr MDAwMApAQCAtOTkwOCwxMCArOTkwOCw3IEBACiAKICAgICAgICAgLyogRW1hY3MgY2FuIG9u bHkgaGFuZGxlIGNvcmUgaW5wdXQgZXZlbnRzLCBzbyBtYWtlIHN1cmUKICAgICAgICAgICAg R3RrIGRvZXNuJ3QgdXNlIFhpbnB1dCBvciBYaW5wdXQyIGV4dGVuc2lvbnMuICAqLwotICAg ICAgICB7Ci0gICAgICAgICAgc3RhdGljIGNoYXIgZml4X2V2ZW50c1tdID0gIkdES19DT1JF X0RFVklDRV9FVkVOVFM9MSI7Ci0gICAgICAgICAgcHV0ZW52IChmaXhfZXZlbnRzKTsKLSAg ICAgICAgfQorCXhwdXRlbnYgKCJHREtfQ09SRV9ERVZJQ0VfRVZFTlRTPTEiKTsKIAogICAg ICAgICAvKiBXb3JrIGFyb3VuZCBHTGliIGJ1ZyB0aGF0IG91dHB1dHMgYSBmYXVsdHkgd2Fy bmluZy4gU2VlCiAgICAgICAgICAgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3df YnVnLmNnaT9pZD01NjM2MjcuICAqLwoK --------------090204060905090807070004--