From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Pip Cet Newsgroups: gmane.emacs.bugs Subject: bug#36649: 27.0.50; pure space and pdumper Date: Wed, 3 Mar 2021 15:34:40 +0000 Message-ID: References: <87a6yo5fgy.fsf@gnus.org> <83d03kaz6f.fsf@gnu.org> <87h7svc87d.fsf@igel.home> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000000cb70a05bca3990a" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38007"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 36649@debbugs.gnu.org, larsi@gnus.org, eggert@cs.ucla.edu, Andreas Schwab , Andrea Corallo To: Stefan Kangas Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Mar 03 16:36:12 2021 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 1lHTXo-0009g2-6q for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 03 Mar 2021 16:36:12 +0100 Original-Received: from localhost ([::1]:48904 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lHTXm-0000rM-Vo for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 03 Mar 2021 10:36:11 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:54024) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lHTXe-0000r3-2n for bug-gnu-emacs@gnu.org; Wed, 03 Mar 2021 10:36:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:45147) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lHTXd-0001Wd-Rp for bug-gnu-emacs@gnu.org; Wed, 03 Mar 2021 10:36:01 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lHTXd-0003JO-PI for bug-gnu-emacs@gnu.org; Wed, 03 Mar 2021 10:36:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Pip Cet Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 03 Mar 2021 15:36:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 36649 X-GNU-PR-Package: emacs Original-Received: via spool by 36649-submit@debbugs.gnu.org id=B36649.161478572312681 (code B ref 36649); Wed, 03 Mar 2021 15:36:01 +0000 Original-Received: (at 36649) by debbugs.gnu.org; 3 Mar 2021 15:35:23 +0000 Original-Received: from localhost ([127.0.0.1]:56694 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHTX1-0003IT-Oe for submit@debbugs.gnu.org; Wed, 03 Mar 2021 10:35:23 -0500 Original-Received: from mail-ot1-f46.google.com ([209.85.210.46]:33326) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lHTX0-0003IG-Iq for 36649@debbugs.gnu.org; Wed, 03 Mar 2021 10:35:22 -0500 Original-Received: by mail-ot1-f46.google.com with SMTP id 40so15554833otu.0 for <36649@debbugs.gnu.org>; Wed, 03 Mar 2021 07:35:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=X+LAUXe/ZYlg1KvN8zA3eTjYSwnDhSaU5+62PZEKViM=; b=TtN9iSH64MriuwxwdGZs/h9+D+Qj2+IeMpM/oNRN6KFsxHt4/kwXDXhFl9prwak6c7 GiQpU3JDsSsxiKEQDgSAl+e0E+oy4j9InMiT+8QpNkxxUAl0wPqcN3JLIEippAbJi6nK NP07wgxFhCcH7Ep2iOxwQPk7tu8aKycOW8FnT1krBTZnXufFY9EDydvhRcITmbAy246u fWuM4a0bVTacr90n7n8FDE0PGaUlnJhniAdhh4LLjZAXF+PjE8Wv1kdGaovI9u7iHXgU UAwQzTcMqbdDeH0z7DeZrhww20yn/VnAztnzwBuxdlE3dzCh6A9Meo1O2qbhWLAhnxKA WC6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=X+LAUXe/ZYlg1KvN8zA3eTjYSwnDhSaU5+62PZEKViM=; b=jemNcsV1dv0zqdhUnIx07oy6e7bxEofji7LVt7aNNzIMRm55KGcVLrCJxjy5AJEv/J LMZ+8t2b7JX1zZ/B7hrAVam8d4B9HUyoFfNq5C66+i9gLKc1SGe9OiqraBTegcTiiqkw C/sOzRHDSgwUcgJMD743dpznSNE4LAOajkwAqFZwf1NuGpxY2L1rtf4Xm4MzBBVR7BX0 nuc8eC1xIqGjhi5GK7PfDBxBUdPt8/jN8a6xr5zBiGKZUAfoNcywbkbsr4gXNPeMHl8g zPEhyBM83A6zY38OSIO8JnOAlUSlcYGte/SIdFKXjucCZJPjQBXTapES65dGo2p5uX5N K2Zw== X-Gm-Message-State: AOAM5318emw8Uw2hXQoPGRGUYWfUnRubhuxtgqkZpgBfSfiOkRI4SB9e 4fN/r/LbKVVt1xmsxerFtSbFR/q4fhAj7ftJnDY= X-Google-Smtp-Source: ABdhPJwCq0YJ3n1O1h3i5SNbtgnf6o/AiRvhiba3IIaNmZ9A6S0ysJqoFKpMeSaLKnsBffzgCRWPDXcfPgalcnpq+JE= X-Received: by 2002:a05:6830:1682:: with SMTP id k2mr23048200otr.154.1614785716978; Wed, 03 Mar 2021 07:35:16 -0800 (PST) In-Reply-To: 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:201284 Archived-At: --0000000000000cb70a05bca3990a Content-Type: text/plain; charset="UTF-8" On Sun, Nov 15, 2020 at 3:19 PM Stefan Kangas wrote: > Pip Cet writes: > > On Sat, Aug 22, 2020 at 9:59 AM Andreas Schwab wrote: > >> On Aug 22 2020, Pip Cet wrote: > > > > So my suggestion would be to apply this patch first (removing the C > > parts of pure space), then remove unexec, then turn purecopy into an > > alias for identity and remove as many instances of it as possible. > > > > Just as a reminder, we're still putting a 3 MB block of zero bytes > > into every emacs binary... > > To me, the above sounds like a reasonable plan, given the discussion in > this thread and lack of any objections. Thanks. > > Should this be discussed on emacs-devel? > > Bringing this up on emacs-devel could perhaps get a few more eyes on > this before it lands on master. At the very least, it would inform > everyone about the planned change. So why not proceed to do that? I have time for that now, so here's a revised patch as a first step. --0000000000000cb70a05bca3990a Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Remove-pure-space-Bug-36649.patch" Content-Disposition: attachment; filename="0001-Remove-pure-space-Bug-36649.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kltlnrga0 RnJvbSA3MmZhOTE5YzdjYzE1ZjdjNGY1MGM5MDA2ZjA4YTc3M2JmMTUwMzExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQaXAgQ2V0IDxwaXBjZXRAZ21haWwuY29tPgpEYXRlOiBXZWQs IDMgTWFyIDIwMjEgMTU6Mjc6MDIgKzAwMDAKU3ViamVjdDogW1BBVENIXSBSZW1vdmUgcHVyZSBz cGFjZSAoQnVnIzM2NjQ5KQoKKiBzcmMvbGlzcC5oIChzdHJ1Y3QgTGlzcF9TeW1ib2wpOiBSZW1v dmUgYHBpbm5lZCcgZmxhZy4KKGJ1aWxkX3B1cmVfY19zdHJpbmcsIHB1cmVfbGlzdG4pOiBSZW1v dmUuICBBbGwgY2FsbHMgcmVtb3ZlZC4KKiBzcmMvcHVyZXNpemUuaDogUmVtb3ZlIGZpbGUuCiog c3JjL2Zucy5jIChGbWFrZV9oYXNoX3RhYmxlKTogSWdub3JlIGA6cHVyZWNvcHknIGFyZ3VtZW50 LgoqIHNyYy9kb2MuYyAoc3RvcmVfZnVuY3Rpb25fZG9jc3RyaW5nKTogUmVtb3ZlIGNvbW1lbnQg YWJvdXQgcHVyZQpzcGFjZS4KKiBzcmMvZGF0YS5jIChwdXJlX3dyaXRlX2Vycm9yKTogUmVtb3Zl LiAgQWxsIGNhbGxzIHJlbW92ZWQuCiogc3JjL2NvbmZfcG9zdC5oIChTWVNURU1fUFVSRVNJWkVf RVhUUkEpOiBSZW1vdmUuCiogc3JjL2Zucy5jIChtYWtlX2hhc2hfdGFibGUpOiBEcm9wIGBwdXJl Y29weScgYXJndW1lbnQuICBBbGwKY2FsbGVycyBjaGFuZ2VkIHRvIHJlbW92ZSBhcmd1bWVudC4K KiBzcmMvYWxsb2MuYyAobWFrZV9wdXJlX3N0cmluZywgbWFrZV9wdXJlX2Nfc3RyaW5nLCBwdXJl X2NvbnMpCihwdXJlX2xpc3QpOiBSZW1vdmUuICBBbGwgY2FsbHMgcmVtb3ZlZC4KKGNoZWNrX3B1 cmVfc2l6ZSk6IFJlbW92ZS4gIEFsbCBjYWxscyByZW1vdmVkLgooY29uc19saXN0bik6IFNpbXBs aWZ5LgooRm1ha2VfYnl0ZV9jb2RlKTogUmVtb3ZlIGNvbW1lbnQgYWJvdXQgcHVyZSBzcGFjZS4K KHBvaW50ZXJfYWxpZ24pOiBNb3ZlIGRlZmluaXRpb24gdG8gYXZvaWQgd2FybmluZy4KKiBzcmMv TWFrZWZpbGUuaW46IFJlbW92ZSBjb21tZW50IGFib3V0IHB1cmUgc3BhY2UuCi0tLQogc3JjL01h a2VmaWxlLmluICAgIHwgICAyIC0KIHNyYy9hbGxvYy5jICAgICAgICB8IDU0NSArKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9idWZmZXIuYyAgICAgICB8 ICAxNiArLQogc3JjL2NhbGxpbnQuYyAgICAgIHwgICA4ICstCiBzcmMvY2F0ZWdvcnkuYyAgICAg fCAgIDQgKy0KIHNyYy9jb2RpbmcuYyAgICAgICB8ICAxOCArLQogc3JjL2NvbmZfcG9zdC5oICAg IHwgIDMzIC0tLQogc3JjL2RhdGEuYyAgICAgICAgIHwgIDI5ICstLQogc3JjL2RidXNiaW5kLmMg ICAgIHwgICA0ICstCiBzcmMvZGVwcy5tayAgICAgICAgfCAgMTAgKy0KIHNyYy9kb2MuYyAgICAg ICAgICB8ICAgMyAtCiBzcmMvZW1hY3MtbW9kdWxlLmMgfCAgMjggKy0tCiBzcmMvZW1hY3MuYyAg ICAgICAgfCAgIDUgKy0KIHNyYy9ldmFsLmMgICAgICAgICB8ICAxMiArLQogc3JjL2ZpbGVpby5j ICAgICAgIHwgIDIyICstCiBzcmMvZm5zLmMgICAgICAgICAgfCAgMzIgKy0tCiBzcmMvZm9udHNl dC5jICAgICAgfCAgIDQgKy0KIHNyYy9mcmFtZS5jICAgICAgICB8ICAgMiArLQogc3JjL2ltYWdl LmMgICAgICAgIHwgICAyICstCiBzcmMvaW50ZXJ2YWxzLmMgICAgfCAgIDIgLQogc3JjL2pzb24u YyAgICAgICAgIHwgICA0ICstCiBzcmMva2V5Ym9hcmQuYyAgICAgfCAgIDggKy0KIHNyYy9rZXlt YXAuYyAgICAgICB8ICAzNCArKy0KIHNyYy9saXNwLmggICAgICAgICB8ICA0MSArLS0tCiBzcmMv bHJlYWQuYyAgICAgICAgfCAgNTMgKystLS0KIHNyYy9wZHVtcGVyLmMgICAgICB8ICAgNSArLQog c3JjL3ByaW50LmMgICAgICAgIHwgICA2IC0KIHNyYy9wcm9jZXNzLmMgICAgICB8ICAgNCArLQog c3JjL3Byb2ZpbGVyLmMgICAgIHwgICAyICstCiBzcmMvcHVyZXNpemUuaCAgICAgfCAxMTUgLS0t LS0tLS0tLQogc3JjL3NlYXJjaC5jICAgICAgIHwgIDEyICstCiBzcmMvc3ludGF4LmMgICAgICAg fCAgIDQgKy0KIHNyYy93MzJmbnMuYyAgICAgICB8ICAgNCArLQogc3JjL3hkaXNwLmMgICAgICAg IHwgIDE4ICstCiBzcmMveGZhY2VzLmMgICAgICAgfCAgIDIgKy0KIHNyYy94Zm5zLmMgICAgICAg ICB8ICAgOSArLQogc3JjL3h0ZXJtLmMgICAgICAgIHwgICA0ICstCiAzNyBmaWxlcyBjaGFuZ2Vk LCAxOTMgaW5zZXJ0aW9ucygrKSwgOTEzIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0 IHNyYy9wdXJlc2l6ZS5oCgpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmluIGIvc3JjL01ha2Vm aWxlLmluCmluZGV4IDQxMDBlZGY0NzEyZmUuLjAzMzBiMmQzNTRiMTggMTAwNjQ0Ci0tLSBhL3Ny Yy9NYWtlZmlsZS5pbgorKysgYi9zcmMvTWFrZWZpbGUuaW4KQEAgLTQwNiw4ICs0MDYsNiBAQCAu Yy5vOgogLm0ubzoKIAkkKEFNX1ZfQ0MpJChDQykgLWMgJChDUFBGTEFHUykgJChBTExfT0JKQ19D RkxBR1MpICQoUFJPRklMSU5HX0NGTEFHUykgJDwKIAotIyMgbGFzdGZpbGUgbXVzdCBmb2xsb3cg YWxsIGZpbGVzIHdob3NlIGluaXRpYWxpemVkIGRhdGEgYXJlYXMgc2hvdWxkCi0jIyBiZSBkdW1w ZWQgYXMgcHVyZSBieSBkdW1wLWVtYWNzLgogYmFzZV9vYmogPSBkaXNwbmV3Lm8gZnJhbWUubyBz Y3JvbGwubyB4ZGlzcC5vIG1lbnUubyAkKFhNRU5VX09CSikgd2luZG93Lm8gXAogCWNoYXJzZXQu byBjb2RpbmcubyBjYXRlZ29yeS5vIGNjbC5vIGNoYXJhY3Rlci5vIGNoYXJ0YWIubyBiaWRpLm8g XAogCSQoQ01fT0JKKSB0ZXJtLm8gdGVybWluYWwubyB4ZmFjZXMubyAkKFhPQkopICQoR1RLX09C SikgJChEQlVTX09CSikgXApkaWZmIC0tZ2l0IGEvc3JjL2FsbG9jLmMgYi9zcmMvYWxsb2MuYwpp bmRleCBlNzJmYzRjNDMzMmRlLi40ZmEwN2M3ZTU5ODNmIDEwMDY0NAotLS0gYS9zcmMvYWxsb2Mu YworKysgYi9zcmMvYWxsb2MuYwpAQCAtMzQsNyArMzQsNiBAQCBDb3B5cmlnaHQgKEMpIDE5ODUt MTk4NiwgMTk4OCwgMTk5My0xOTk1LCAxOTk3LTIwMjEgRnJlZSBTb2Z0d2FyZQogI2luY2x1ZGUg ImJpZ251bS5oIgogI2luY2x1ZGUgImRpc3BleHRlcm4uaCIKICNpbmNsdWRlICJpbnRlcnZhbHMu aCIKLSNpbmNsdWRlICJwdXJlc2l6ZS5oIgogI2luY2x1ZGUgInNoZWFwLmgiCiAjaW5jbHVkZSAi c3lzc3RkaW8uaCIKICNpbmNsdWRlICJzeXN0aW1lLmgiCkBAIC0zMzMsMzMgKzMzMiw2IEBAICNk ZWZpbmUgSElfVEhSRVNIT0xEIChFTUFDU19JTlRfTUFYIC8gMikKIAogI2RlZmluZSBTUEFSRV9N RU1PUlkgKDEgPDwgMTQpCiAKLS8qIEluaXRpYWxpemUgaXQgdG8gYSBub256ZXJvIHZhbHVlIHRv IGZvcmNlIGl0IGludG8gZGF0YSBzcGFjZQotICAgKHJhdGhlciB0aGFuIGJzcyBzcGFjZSkuICBU aGF0IHdheSB1bmV4ZWMgd2lsbCByZW1hcCBpdCBpbnRvIHRleHQKLSAgIHNwYWNlIChwdXJlKSwg b24gc29tZSBzeXN0ZW1zLiAgV2UgaGF2ZSBub3QgaW1wbGVtZW50ZWQgdGhlCi0gICByZW1hcHBp bmcgb24gbW9yZSByZWNlbnQgc3lzdGVtcyBiZWNhdXNlIHRoaXMgaXMgbGVzcyBpbXBvcnRhbnQK LSAgIG5vd2FkYXlzIHRoYW4gaW4gdGhlIGRheXMgb2Ygc21hbGwgbWVtb3JpZXMgYW5kIHRpbWVz aGFyaW5nLiAgKi8KLQotRU1BQ1NfSU5UIHB1cmVbKFBVUkVTSVpFICsgc2l6ZW9mIChFTUFDU19J TlQpIC0gMSkgLyBzaXplb2YgKEVNQUNTX0lOVCldID0gezEsfTsKLSNkZWZpbmUgUFVSRUJFRyAo Y2hhciAqKSBwdXJlCi0KLS8qIFBvaW50ZXIgdG8gdGhlIHB1cmUgYXJlYSwgYW5kIGl0cyBzaXpl LiAgKi8KLQotc3RhdGljIGNoYXIgKnB1cmViZWc7Ci1zdGF0aWMgcHRyZGlmZl90IHB1cmVfc2l6 ZTsKLQotLyogTnVtYmVyIG9mIGJ5dGVzIG9mIHB1cmUgc3RvcmFnZSB1c2VkIGJlZm9yZSBwdXJl IHN0b3JhZ2Ugb3ZlcmZsb3dlZC4KLSAgIElmIHRoaXMgaXMgbm9uLXplcm8sIHRoaXMgaW1wbGll cyB0aGF0IGFuIG92ZXJmbG93IG9jY3VycmVkLiAgKi8KLQotc3RhdGljIHB0cmRpZmZfdCBwdXJl X2J5dGVzX3VzZWRfYmVmb3JlX292ZXJmbG93OwotCi0vKiBJbmRleCBpbiBwdXJlIGF0IHdoaWNo IG5leHQgcHVyZSBMaXNwIG9iamVjdCB3aWxsIGJlIGFsbG9jYXRlZC4uICAqLwotCi1zdGF0aWMg cHRyZGlmZl90IHB1cmVfYnl0ZXNfdXNlZF9saXNwOwotCi0vKiBOdW1iZXIgb2YgYnl0ZXMgYWxs b2NhdGVkIGZvciBub24tTGlzcCBvYmplY3RzIGluIHB1cmUgc3RvcmFnZS4gICovCi0KLXN0YXRp YyBwdHJkaWZmX3QgcHVyZV9ieXRlc191c2VkX25vbl9saXNwOwotCiAvKiBJZiBwb3NpdGl2ZSwg Z2FyYmFnZSBjb2xsZWN0aW9uIGlzIGluaGliaXRlZC4gIE90aGVyd2lzZSwgemVyby4gICovCiAK IHN0YXRpYyBpbnRwdHJfdCBnYXJiYWdlX2NvbGxlY3Rpb25faW5oaWJpdGVkOwpAQCAtNDM0LDcg KzQwNiw2IEBAIG5vX3Nhbml0aXplX21lbWNweSAodm9pZCAqZGVzdCwgdm9pZCBjb25zdCAqc3Jj LCBzaXplX3Qgc2l6ZSkKIHN0YXRpYyB2b2lkIHVuY2hhaW5fZmluYWxpemVyIChzdHJ1Y3QgTGlz cF9GaW5hbGl6ZXIgKik7CiBzdGF0aWMgdm9pZCBtYXJrX3Rlcm1pbmFscyAodm9pZCk7CiBzdGF0 aWMgdm9pZCBnY19zd2VlcCAodm9pZCk7Ci1zdGF0aWMgTGlzcF9PYmplY3QgbWFrZV9wdXJlX3Zl Y3RvciAocHRyZGlmZl90KTsKIHN0YXRpYyB2b2lkIG1hcmtfYnVmZmVyIChzdHJ1Y3QgYnVmZmVy ICopOwogCiAjaWYgIWRlZmluZWQgUkVMX0FMTE9DIHx8IGRlZmluZWQgU1lTVEVNX01BTExPQyB8 fCBkZWZpbmVkIEhZQlJJRF9NQUxMT0MKQEAgLTU3NiwxNiArNTQ3LDYgQEAgI2RlZmluZSBNRU1f TklMICZtZW1fegogCiBpbnQgc3RhdGljaWR4OwogCi1zdGF0aWMgdm9pZCAqcHVyZV9hbGxvYyAo c2l6ZV90LCBpbnQpOwotCi0vKiBSZXR1cm4gUFRSIHJvdW5kZWQgdXAgdG8gdGhlIG5leHQgbXVs dGlwbGUgb2YgQUxJR05NRU5ULiAgKi8KLQotc3RhdGljIHZvaWQgKgotcG9pbnRlcl9hbGlnbiAo dm9pZCAqcHRyLCBpbnQgYWxpZ25tZW50KQotewotICByZXR1cm4gKHZvaWQgKikgUk9VTkRVUCAo KHVpbnRwdHJfdCkgcHRyLCBhbGlnbm1lbnQpOwotfQotCiAvKiBFeHRyYWN0IHRoZSBwb2ludGVy IGhpZGRlbiB3aXRoaW4gTy4gICovCiAKIHN0YXRpYyBBVFRSSUJVVEVfTk9fU0FOSVRJWkVfVU5E RUZJTkVEIHZvaWQgKgpAQCAtMTA3NSw2ICsxMDM2LDE1IEBAIHZlcmlmeSAoUE9XRVJfT0ZfMiAo QkxPQ0tfQUxJR04pKTsKICMgZWxpZiAhZGVmaW5lZCBIWUJSSURfTUFMTE9DICYmIGRlZmluZWQg SEFWRV9QT1NJWF9NRU1BTElHTgogIyAgZGVmaW5lIFVTRV9BTElHTkVEX0FMTE9DIDEKICMgIGRl ZmluZSBhbGlnbmVkX2FsbG9jIG15X2FsaWduZWRfYWxsb2MgLyogQXZvaWQgY29sbGlzaW9uIHdp dGggbGlzcC5oLiAgKi8KKworLyogUmV0dXJuIFBUUiByb3VuZGVkIHVwIHRvIHRoZSBuZXh0IG11 bHRpcGxlIG9mIEFMSUdOTUVOVC4gICovCisKK3N0YXRpYyB2b2lkICoKK3BvaW50ZXJfYWxpZ24g KHZvaWQgKnB0ciwgaW50IGFsaWdubWVudCkKK3sKKyAgcmV0dXJuICh2b2lkICopIFJPVU5EVVAg KCh1aW50cHRyX3QpIHB0ciwgYWxpZ25tZW50KTsKK30KKwogc3RhdGljIHZvaWQgKgogYWxpZ25l ZF9hbGxvYyAoc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCiB7CkBAIC0xNjc5LDkgKzE2 NDksOSBAQCAjZGVmaW5lIEdDX1NUUklOR19FWFRSQSBHQ19TVFJJTkdfT1ZFUlJVTl9DT09LSUVf U0laRQogc3RhdGljIHZvaWQKIGluaXRfc3RyaW5ncyAodm9pZCkKIHsKLSAgZW1wdHlfdW5pYnl0 ZV9zdHJpbmcgPSBtYWtlX3B1cmVfc3RyaW5nICgiIiwgMCwgMCwgMCk7CisgIGVtcHR5X3VuaWJ5 dGVfc3RyaW5nID0gbWFrZV9zcGVjaWZpZWRfc3RyaW5nICgiIiwgMCwgMCwgZmFsc2UpOwogICBz dGF0aWNwcm8gKCZlbXB0eV91bmlieXRlX3N0cmluZyk7Ci0gIGVtcHR5X211bHRpYnl0ZV9zdHJp bmcgPSBtYWtlX3B1cmVfc3RyaW5nICgiIiwgMCwgMCwgMSk7CisgIGVtcHR5X211bHRpYnl0ZV9z dHJpbmcgPSBtYWtlX3NwZWNpZmllZF9zdHJpbmcgKCIiLCAwLCAwLCB0cnVlKTsKICAgc3RhdGlj cHJvICgmZW1wdHlfbXVsdGlieXRlX3N0cmluZyk7CiB9CiAKQEAgLTE2OTksNyArMTY2OSw3IEBA IHN0cmluZ19ieXRlcyAoc3RydWN0IExpc3BfU3RyaW5nICpzKQogICBwdHJkaWZmX3QgbmJ5dGVz ID0KICAgICAocy0+dS5zLnNpemVfYnl0ZSA8IDAgPyBzLT51LnMuc2l6ZSAmIH5BUlJBWV9NQVJL X0ZMQUcgOiBzLT51LnMuc2l6ZV9ieXRlKTsKIAotICBpZiAoIVBVUkVfUCAocykgJiYgIXBkdW1w ZXJfb2JqZWN0X3AgKHMpICYmIHMtPnUucy5kYXRhCisgIGlmICghcGR1bXBlcl9vYmplY3RfcCAo cykgJiYgcy0+dS5zLmRhdGEKICAgICAgICYmIG5ieXRlcyAhPSBTREFUQV9OQllURVMgKFNEQVRB X09GX1NUUklORyAocykpKQogICAgIGVtYWNzX2Fib3J0ICgpOwogICByZXR1cm4gbmJ5dGVzOwpA QCAtMjQxNSw3ICsyMzg1LDcgQEAgbWFrZV9zcGVjaWZpZWRfc3RyaW5nIChjb25zdCBjaGFyICpj b250ZW50cywKIHsKICAgTGlzcF9PYmplY3QgdmFsOwogCi0gIGlmIChuY2hhcnMgPCAwKQorICBp ZiAobmNoYXJzIDw9IDApCiAgICAgewogICAgICAgaWYgKG11bHRpYnl0ZSkKIAluY2hhcnMgPSBt dWx0aWJ5dGVfY2hhcnNfaW5fdGV4dCAoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgY29udGVudHMs CkBAIC0yNDY5LDggKzI0MzksNiBAQCBtYWtlX2NsZWFyX211bHRpYnl0ZV9zdHJpbmcgKEVNQUNT X0lOVCBuY2hhcnMsIEVNQUNTX0lOVCBuYnl0ZXMsIGJvb2wgY2xlYXJpdCkKIAogICBpZiAobmNo YXJzIDwgMCkKICAgICBlbWFjc19hYm9ydCAoKTsKLSAgaWYgKCFuYnl0ZXMpCi0gICAgcmV0dXJu IGVtcHR5X211bHRpYnl0ZV9zdHJpbmc7CiAKICAgcyA9IGFsbG9jYXRlX3N0cmluZyAoKTsKICAg cy0+dS5zLmludGVydmFscyA9IE5VTEw7CkBAIC0yNzUxLDE3ICsyNzE5LDE2IEBAIGxpc3Q1IChM aXNwX09iamVjdCBhcmcxLCBMaXNwX09iamVjdCBhcmcyLCBMaXNwX09iamVjdCBhcmczLCBMaXNw X09iamVjdCBhcmc0LAogfQogCiAvKiBNYWtlIGEgbGlzdCBvZiBDT1VOVCBMaXNwX09iamVjdHMs IHdoZXJlIEFSRyBpcyB0aGUgZmlyc3Qgb25lLgotICAgVXNlIENPTlMgdG8gY29uc3RydWN0IHRo ZSBwYWlycy4gIEFQIGhhcyBhbnkgcmVtYWluaW5nIGFyZ3MuICAqLworICAgQVAgaGFzIGFueSBy ZW1haW5pbmcgYXJncy4gICovCiBzdGF0aWMgTGlzcF9PYmplY3QKLWNvbnNfbGlzdG4gKHB0cmRp ZmZfdCBjb3VudCwgTGlzcF9PYmplY3QgYXJnLAotCSAgICBMaXNwX09iamVjdCAoKmNvbnMpIChM aXNwX09iamVjdCwgTGlzcF9PYmplY3QpLCB2YV9saXN0IGFwKQorY29uc19saXN0biAocHRyZGlm Zl90IGNvdW50LCBMaXNwX09iamVjdCBhcmcsIHZhX2xpc3QgYXApCiB7CiAgIGVhc3N1bWUgKDAg PCBjb3VudCk7Ci0gIExpc3BfT2JqZWN0IHZhbCA9IGNvbnMgKGFyZywgUW5pbCk7CisgIExpc3Bf T2JqZWN0IHZhbCA9IEZjb25zIChhcmcsIFFuaWwpOwogICBMaXNwX09iamVjdCB0YWlsID0gdmFs OwogICBmb3IgKHB0cmRpZmZfdCBpID0gMTsgaSA8IGNvdW50OyBpKyspCiAgICAgewotICAgICAg TGlzcF9PYmplY3QgZWxlbSA9IGNvbnMgKHZhX2FyZyAoYXAsIExpc3BfT2JqZWN0KSwgUW5pbCk7 CisgICAgICBMaXNwX09iamVjdCBlbGVtID0gRmNvbnMgKHZhX2FyZyAoYXAsIExpc3BfT2JqZWN0 KSwgUW5pbCk7CiAgICAgICBYU0VUQ0RSICh0YWlsLCBlbGVtKTsKICAgICAgIHRhaWwgPSBlbGVt OwogICAgIH0KQEAgLTI3NzQsMTggKzI3NDEsNyBAQCBsaXN0biAocHRyZGlmZl90IGNvdW50LCBM aXNwX09iamVjdCBhcmcxLCAuLi4pCiB7CiAgIHZhX2xpc3QgYXA7CiAgIHZhX3N0YXJ0IChhcCwg YXJnMSk7Ci0gIExpc3BfT2JqZWN0IHZhbCA9IGNvbnNfbGlzdG4gKGNvdW50LCBhcmcxLCBGY29u cywgYXApOwotICB2YV9lbmQgKGFwKTsKLSAgcmV0dXJuIHZhbDsKLX0KLQotLyogTWFrZSBhIHB1 cmUgbGlzdCBvZiBDT1VOVCBMaXNwX09iamVjdHMsIHdoZXJlIEFSRzEgaXMgdGhlIGZpcnN0IG9u ZS4gICovCi1MaXNwX09iamVjdAotcHVyZV9saXN0biAocHRyZGlmZl90IGNvdW50LCBMaXNwX09i amVjdCBhcmcxLCAuLi4pCi17Ci0gIHZhX2xpc3QgYXA7Ci0gIHZhX3N0YXJ0IChhcCwgYXJnMSk7 Ci0gIExpc3BfT2JqZWN0IHZhbCA9IGNvbnNfbGlzdG4gKGNvdW50LCBhcmcxLCBwdXJlX2NvbnMs IGFwKTsKKyAgTGlzcF9PYmplY3QgdmFsID0gY29uc19saXN0biAoY291bnQsIGFyZzEsIGFwKTsK ICAgdmFfZW5kIChhcCk7CiAgIHJldHVybiB2YWw7CiB9CkBAIC0yOTUxLDcgKzI5MDcsNyBAQCBs YXJnZV92ZWN0b3JfdmVjIChzdHJ1Y3QgbGFyZ2VfdmVjdG9yICpwKQogCiBzdGF0aWMgc3RydWN0 IGxhcmdlX3ZlY3RvciAqbGFyZ2VfdmVjdG9yczsKIAotLyogVGhlIG9ubHkgdmVjdG9yIHdpdGgg MCBzbG90cywgYWxsb2NhdGVkIGZyb20gcHVyZSBzcGFjZS4gICovCisvKiBUaGUgb25seSB2ZWN0 b3Igd2l0aCAwIHNsb3RzLiAgKi8KIAogTGlzcF9PYmplY3QgemVyb192ZWN0b3I7CiAKQEAgLTI5 ODcsMTUgKzI5NDMsNiBAQCBhbGxvY2F0ZV92ZWN0b3JfYmxvY2sgKHZvaWQpCiAgIHJldHVybiBi bG9jazsKIH0KIAotLyogQ2FsbGVkIG9uY2UgdG8gaW5pdGlhbGl6ZSB2ZWN0b3IgYWxsb2NhdGlv bi4gICovCi0KLXN0YXRpYyB2b2lkCi1pbml0X3ZlY3RvcnMgKHZvaWQpCi17Ci0gIHplcm9fdmVj dG9yID0gbWFrZV9wdXJlX3ZlY3RvciAoMCk7Ci0gIHN0YXRpY3BybyAoJnplcm9fdmVjdG9yKTsK LX0KLQogLyogQWxsb2NhdGUgdmVjdG9yIGZyb20gYSB2ZWN0b3IgYmxvY2suICAqLwogCiBzdGF0 aWMgc3RydWN0IExpc3BfVmVjdG9yICoKQEAgLTMyNjgsNyArMzIxNSw3IEBAICNkZWZpbmUgVkVD VE9SX0VMVFNfTUFYIFwKIHN0YXRpYyBzdHJ1Y3QgTGlzcF9WZWN0b3IgKgogYWxsb2NhdGVfdmVj dG9ybGlrZSAocHRyZGlmZl90IGxlbiwgYm9vbCBjbGVhcml0KQogewotICBlYXNzZXJ0ICgwIDwg bGVuICYmIGxlbiA8PSBWRUNUT1JfRUxUU19NQVgpOworICBlYXNzZXJ0ICgwIDw9IGxlbiAmJiBs ZW4gPD0gVkVDVE9SX0VMVFNfTUFYKTsKICAgcHRyZGlmZl90IG5ieXRlcyA9IGhlYWRlcl9zaXpl ICsgbGVuICogd29yZF9zaXplOwogICBzdHJ1Y3QgTGlzcF9WZWN0b3IgKnA7CiAKQEAgLTMzNDMs NiArMzI5MCwxNyBAQCBhbGxvY2F0ZV9uaWxfdmVjdG9yIChwdHJkaWZmX3QgbGVuKQogfQogCiAK Ky8qIENhbGxlZCBvbmNlIHRvIGluaXRpYWxpemUgdmVjdG9yIGFsbG9jYXRpb24uICAqLworCitz dGF0aWMgdm9pZAoraW5pdF92ZWN0b3JzICh2b2lkKQoreworICB6ZXJvX3ZlY3RvciA9CisgICAg bWFrZV9saXNwX3B0ciAoYWxsb2NhdGVfdmVjdG9ybGlrZSAoMCwgdHJ1ZSksIExpc3BfVmVjdG9y bGlrZSk7CisgIFhWRUNUT1IgKHplcm9fdmVjdG9yKS0+aGVhZGVyLnNpemUgPSAwOworICBzdGF0 aWNwcm8gKCZ6ZXJvX3ZlY3Rvcik7Cit9CisKIC8qIEFsbG9jYXRlIG90aGVyIHZlY3Rvci1saWtl IHN0cnVjdHVyZXMuICAqLwogCiBzdHJ1Y3QgTGlzcF9WZWN0b3IgKgpAQCAtMzU1NSwxMyArMzUx Myw2IEBAICNkZWZpbmUgU1lNQk9MX0JMT0NLX1NJWkUgXAogCiBzdGF0aWMgc3RydWN0IHN5bWJv bF9ibG9jayAqc3ltYm9sX2Jsb2NrOwogc3RhdGljIGludCBzeW1ib2xfYmxvY2tfaW5kZXggPSBT WU1CT0xfQkxPQ0tfU0laRTsKLS8qIFBvaW50ZXIgdG8gdGhlIGZpcnN0IHN5bWJvbF9ibG9jayB0 aGF0IGNvbnRhaW5zIHBpbm5lZCBzeW1ib2xzLgotICAgVGVzdHMgZm9yIDI0LjQgc2hvd2VkIHRo YXQgYXQgZHVtcC10aW1lLCBFbWFjcyBjb250YWlucyBhYm91dCAxNUsgc3ltYm9scywKLSAgIDEw SyBvZiB3aGljaCBhcmUgcGlubmVkIChhbmQgYWxsIGJ1dCAyNTAgb2YgdGhlbSBhcmUgaW50ZXJu ZWQgaW4gb2JhcnJheSksCi0gICB3aGVyZWFzIGEgInR5cGljYWwgc2Vzc2lvbiIgaGFzIGluIHRo ZSBvcmRlciBvZiAzMEsgc3ltYm9scy4KLSAgIGBzeW1ib2xfYmxvY2tfcGlubmVkJyBsZXRzIG1h cmtfcGlubmVkX3N5bWJvbHMgc2NhbiBvbmx5IDE1SyBzeW1ib2xzIHJhdGhlcgotICAgdGhhbiAz MEsgdG8gZmluZCB0aGUgMTBLIHN5bWJvbHMgd2UgbmVlZCB0byBtYXJrLiAgKi8KLXN0YXRpYyBz dHJ1Y3Qgc3ltYm9sX2Jsb2NrICpzeW1ib2xfYmxvY2tfcGlubmVkOwogCiAvKiBMaXN0IG9mIGZy ZWUgc3ltYm9scy4gICovCiAKQEAgLTM1ODcsNyArMzUzOCw2IEBAIGluaXRfc3ltYm9sIChMaXNw X09iamVjdCB2YWwsIExpc3BfT2JqZWN0IG5hbWUpCiAgIHAtPnUucy5pbnRlcm5lZCA9IFNZTUJP TF9VTklOVEVSTkVEOwogICBwLT51LnMudHJhcHBlZF93cml0ZSA9IFNZTUJPTF9VTlRSQVBQRURf V1JJVEU7CiAgIHAtPnUucy5kZWNsYXJlZF9zcGVjaWFsID0gZmFsc2U7Ci0gIHAtPnUucy5waW5u ZWQgPSBmYWxzZTsKIH0KIAogREVGVU4gKCJtYWtlLXN5bWJvbCIsIEZtYWtlX3N5bWJvbCwgU21h a2Vfc3ltYm9sLCAxLCAxLCAwLApAQCAtNTE1MSw4ICs1MTAxLDYgQEAgdmFsaWRfbGlzcF9vYmpl Y3RfcCAoTGlzcF9PYmplY3Qgb2JqKQogICAgIHJldHVybiAxOwogCiAgIHZvaWQgKnAgPSBYUE5U UiAob2JqKTsKLSAgaWYgKFBVUkVfUCAocCkpCi0gICAgcmV0dXJuIDE7CiAKICAgaWYgKFNZTUJP TFAgKG9iaikgJiYgY19zeW1ib2xfcCAocCkpCiAgICAgcmV0dXJuICgoY2hhciAqKSBwIC0gKGNo YXIgKikgbGlzcHN5bSkgJSBzaXplb2YgbGlzcHN5bVswXSA9PSAwOwpAQCAtNTIwOCwyOTYgKzUx NTYsOCBAQCB2YWxpZF9saXNwX29iamVjdF9wIChMaXNwX09iamVjdCBvYmopCiAgIHJldHVybiAw OwogfQogCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKLQkJICAgICAgIFB1cmUgU3RvcmFnZSBNYW5hZ2VtZW50 Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCi0KLS8qIEFsbG9jYXRlIHJvb20gZm9yIFNJWkUgYnl0ZXMgZnJv bSBwdXJlIExpc3Agc3RvcmFnZSBhbmQgcmV0dXJuIGEKLSAgIHBvaW50ZXIgdG8gaXQuICBUWVBF IGlzIHRoZSBMaXNwIHR5cGUgZm9yIHdoaWNoIHRoZSBtZW1vcnkgaXMKLSAgIGFsbG9jYXRlZC4g IFRZUEUgPCAwIG1lYW5zIGl0J3Mgbm90IHVzZWQgZm9yIGEgTGlzcCBvYmplY3QsCi0gICBhbmQg dGhhdCB0aGUgcmVzdWx0IHNob3VsZCBoYXZlIGFuIGFsaWdubWVudCBvZiAtVFlQRS4KLQotICAg VGhlIGJ5dGVzIGFyZSBpbml0aWFsbHkgemVyby4KLQotICAgSWYgcHVyZSBzcGFjZSBpcyBleGhh dXN0ZWQsIGFsbG9jYXRlIHNwYWNlIGZyb20gdGhlIGhlYXAuICBUaGlzIGlzCi0gICBtZXJlbHkg YW4gZXhwZWRpZW50IHRvIGxldCBFbWFjcyB3YXJuIHRoYXQgcHVyZSBzcGFjZSB3YXMgZXhoYXVz dGVkCi0gICBhbmQgdGhhdCBFbWFjcyBzaG91bGQgYmUgcmVidWlsdCB3aXRoIGEgbGFyZ2VyIHB1 cmUgc3BhY2UuICAqLwotCi1zdGF0aWMgdm9pZCAqCi1wdXJlX2FsbG9jIChzaXplX3Qgc2l6ZSwg aW50IHR5cGUpCi17Ci0gIHZvaWQgKnJlc3VsdDsKLQotIGFnYWluOgotICBpZiAodHlwZSA+PSAw KQotICAgIHsKLSAgICAgIC8qIEFsbG9jYXRlIHNwYWNlIGZvciBhIExpc3Agb2JqZWN0IGZyb20g dGhlIGJlZ2lubmluZyBvZiB0aGUgZnJlZQotCSBzcGFjZSB3aXRoIHRha2luZyBhY2NvdW50IG9m IGFsaWdubWVudC4gICovCi0gICAgICByZXN1bHQgPSBwb2ludGVyX2FsaWduIChwdXJlYmVnICsg cHVyZV9ieXRlc191c2VkX2xpc3AsIExJU1BfQUxJR05NRU5UKTsKLSAgICAgIHB1cmVfYnl0ZXNf dXNlZF9saXNwID0gKChjaGFyICopcmVzdWx0IC0gKGNoYXIgKilwdXJlYmVnKSArIHNpemU7Ci0g ICAgfQotICBlbHNlCi0gICAgewotICAgICAgLyogQWxsb2NhdGUgc3BhY2UgZm9yIGEgbm9uLUxp c3Agb2JqZWN0IGZyb20gdGhlIGVuZCBvZiB0aGUgZnJlZQotCSBzcGFjZS4gICovCi0gICAgICBw dHJkaWZmX3QgdW5hbGlnbmVkX25vbl9saXNwID0gcHVyZV9ieXRlc191c2VkX25vbl9saXNwICsg c2l6ZTsKLSAgICAgIGNoYXIgKnVuYWxpZ25lZCA9IHB1cmViZWcgKyBwdXJlX3NpemUgLSB1bmFs aWduZWRfbm9uX2xpc3A7Ci0gICAgICBpbnQgZGVjciA9IChpbnRwdHJfdCkgdW5hbGlnbmVkICYg KC0xIC0gdHlwZSk7Ci0gICAgICBwdXJlX2J5dGVzX3VzZWRfbm9uX2xpc3AgPSB1bmFsaWduZWRf bm9uX2xpc3AgKyBkZWNyOwotICAgICAgcmVzdWx0ID0gdW5hbGlnbmVkIC0gZGVjcjsKLSAgICB9 Ci0gIHB1cmVfYnl0ZXNfdXNlZCA9IHB1cmVfYnl0ZXNfdXNlZF9saXNwICsgcHVyZV9ieXRlc191 c2VkX25vbl9saXNwOwotCi0gIGlmIChwdXJlX2J5dGVzX3VzZWQgPD0gcHVyZV9zaXplKQotICAg IHJldHVybiByZXN1bHQ7Ci0KLSAgLyogRG9uJ3QgYWxsb2NhdGUgYSBsYXJnZSBhbW91bnQgaGVy ZSwKLSAgICAgYmVjYXVzZSBpdCBtaWdodCBnZXQgbW1hcCdkIGFuZCB0aGVuIGl0cyBhZGRyZXNz Ci0gICAgIG1pZ2h0IG5vdCBiZSB1c2FibGUuICAqLwotICBpbnQgc21hbGxfYW1vdW50ID0gMTAw MDA7Ci0gIGVhc3NlcnQgKHNpemUgPD0gc21hbGxfYW1vdW50IC0gTElTUF9BTElHTk1FTlQpOwot ICBwdXJlYmVnID0geHphbGxvYyAoc21hbGxfYW1vdW50KTsKLSAgcHVyZV9zaXplID0gc21hbGxf YW1vdW50OwotICBwdXJlX2J5dGVzX3VzZWRfYmVmb3JlX292ZXJmbG93ICs9IHB1cmVfYnl0ZXNf dXNlZCAtIHNpemU7Ci0gIHB1cmVfYnl0ZXNfdXNlZCA9IDA7Ci0gIHB1cmVfYnl0ZXNfdXNlZF9s aXNwID0gcHVyZV9ieXRlc191c2VkX25vbl9saXNwID0gMDsKLQotICAvKiBDYW4ndCBHQyBpZiBw dXJlIHN0b3JhZ2Ugb3ZlcmZsb3dlZCBiZWNhdXNlIHdlIGNhbid0IGRldGVybWluZQotICAgICBp ZiBzb21ldGhpbmcgaXMgYSBwdXJlIG9iamVjdCBvciBub3QuICAqLwotICBnYXJiYWdlX2NvbGxl Y3Rpb25faW5oaWJpdGVkKys7Ci0gIGdvdG8gYWdhaW47Ci19Ci0KLQotI2lmZGVmIEhBVkVfVU5F WEVDCi0KLS8qIFByaW50IGEgd2FybmluZyBpZiBQVVJFU0laRSBpcyB0b28gc21hbGwuICAqLwot Ci12b2lkCi1jaGVja19wdXJlX3NpemUgKHZvaWQpCi17Ci0gIGlmIChwdXJlX2J5dGVzX3VzZWRf YmVmb3JlX292ZXJmbG93KQotICAgIG1lc3NhZ2UgKCgiZW1hY3M6MDpQdXJlIExpc3Agc3RvcmFn ZSBvdmVyZmxvdyAoYXBwcm94LiAlInBJImQiCi0JICAgICAgIiBieXRlcyBuZWVkZWQpIiksCi0J ICAgICBwdXJlX2J5dGVzX3VzZWQgKyBwdXJlX2J5dGVzX3VzZWRfYmVmb3JlX292ZXJmbG93KTsK LX0KLSNlbmRpZgotCi0KLS8qIEZpbmQgdGhlIGJ5dGUgc2VxdWVuY2Uge0RBVEFbMF0sIC4uLiwg REFUQVtOQllURVMtMV0sICdcMCd9IGZyb20KLSAgIHRoZSBub24tTGlzcCBkYXRhIHBvb2wgb2Yg dGhlIHB1cmUgc3RvcmFnZSwgYW5kIHJldHVybiBpdHMgc3RhcnQKLSAgIGFkZHJlc3MuICBSZXR1 cm4gTlVMTCBpZiBub3QgZm91bmQuICAqLwotCi1zdGF0aWMgY2hhciAqCi1maW5kX3N0cmluZ19k YXRhX2luX3B1cmUgKGNvbnN0IGNoYXIgKmRhdGEsIHB0cmRpZmZfdCBuYnl0ZXMpCi17Ci0gIGlu dCBpOwotICBwdHJkaWZmX3Qgc2tpcCwgYm1fc2tpcFsyNTZdLCBsYXN0X2NoYXJfc2tpcCwgaW5m aW5pdHksIHN0YXJ0LCBzdGFydF9tYXg7Ci0gIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnA7Ci0gIGNo YXIgKm5vbl9saXNwX2JlZzsKLQotICBpZiAocHVyZV9ieXRlc191c2VkX25vbl9saXNwIDw9IG5i eXRlcykKLSAgICByZXR1cm4gTlVMTDsKLQotICAvKiBTZXQgdXAgdGhlIEJveWVyLU1vb3JlIHRh YmxlLiAgKi8KLSAgc2tpcCA9IG5ieXRlcyArIDE7Ci0gIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkr KykKLSAgICBibV9za2lwW2ldID0gc2tpcDsKLQotICBwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIg KikgZGF0YTsKLSAgd2hpbGUgKC0tc2tpcCA+IDApCi0gICAgYm1fc2tpcFsqcCsrXSA9IHNraXA7 Ci0KLSAgbGFzdF9jaGFyX3NraXAgPSBibV9za2lwWydcMCddOwotCi0gIG5vbl9saXNwX2JlZyA9 IHB1cmViZWcgKyBwdXJlX3NpemUgLSBwdXJlX2J5dGVzX3VzZWRfbm9uX2xpc3A7Ci0gIHN0YXJ0 X21heCA9IHB1cmVfYnl0ZXNfdXNlZF9ub25fbGlzcCAtIChuYnl0ZXMgKyAxKTsKLQotICAvKiBT ZWUgdGhlIGNvbW1lbnRzIGluIHRoZSBmdW5jdGlvbiBgYm95ZXJfbW9vcmUnIChzZWFyY2guYykg Zm9yIHRoZQotICAgICB1c2Ugb2YgYGluZmluaXR5Jy4gICovCi0gIGluZmluaXR5ID0gcHVyZV9i eXRlc191c2VkX25vbl9saXNwICsgMTsKLSAgYm1fc2tpcFsnXDAnXSA9IGluZmluaXR5OwotCi0g IHAgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBub25fbGlzcF9iZWcgKyBuYnl0ZXM7Ci0gIHN0 YXJ0ID0gMDsKLSAgZG8KLSAgICB7Ci0gICAgICAvKiBDaGVjayB0aGUgbGFzdCBjaGFyYWN0ZXIg KD09ICdcMCcpLiAgKi8KLSAgICAgIGRvCi0JewotCSAgc3RhcnQgKz0gYm1fc2tpcFsqKHAgKyBz dGFydCldOwotCX0KLSAgICAgIHdoaWxlIChzdGFydCA8PSBzdGFydF9tYXgpOwotCi0gICAgICBp ZiAoc3RhcnQgPCBpbmZpbml0eSkKLQkvKiBDb3VsZG4ndCBmaW5kIHRoZSBsYXN0IGNoYXJhY3Rl ci4gICovCi0JcmV0dXJuIE5VTEw7Ci0KLSAgICAgIC8qIE5vIGxlc3MgdGhhbiBgaW5maW5pdHkn IG1lYW5zIHdlIGNvdWxkIGZpbmQgdGhlIGxhc3QKLQkgY2hhcmFjdGVyIGF0IGBwW3N0YXJ0IC0g aW5maW5pdHldJy4gICovCi0gICAgICBzdGFydCAtPSBpbmZpbml0eTsKLQotICAgICAgLyogQ2hl Y2sgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzLiAgKi8KLSAgICAgIGlmIChtZW1jbXAgKGRhdGEs IG5vbl9saXNwX2JlZyArIHN0YXJ0LCBuYnl0ZXMpID09IDApCi0JLyogRm91bmQuICAqLwotCXJl dHVybiBub25fbGlzcF9iZWcgKyBzdGFydDsKLQotICAgICAgc3RhcnQgKz0gbGFzdF9jaGFyX3Nr aXA7Ci0gICAgfQotICB3aGlsZSAoc3RhcnQgPD0gc3RhcnRfbWF4KTsKLQotICByZXR1cm4gTlVM TDsKLX0KLQotCi0vKiBSZXR1cm4gYSBzdHJpbmcgYWxsb2NhdGVkIGluIHB1cmUgc3BhY2UuICBE QVRBIGlzIGEgYnVmZmVyIGhvbGRpbmcKLSAgIE5DSEFSUyBjaGFyYWN0ZXJzLCBhbmQgTkJZVEVT IGJ5dGVzIG9mIHN0cmluZyBkYXRhLiAgTVVMVElCWVRFCi0gICBtZWFucyBtYWtlIHRoZSByZXN1 bHQgc3RyaW5nIG11bHRpYnl0ZS4KLQotICAgTXVzdCBnZXQgYW4gZXJyb3IgaWYgcHVyZSBzdG9y YWdlIGlzIGZ1bGwsIHNpbmNlIGlmIGl0IGNhbm5vdCBob2xkCi0gICBhIGxhcmdlIHN0cmluZyBp dCBtYXkgYmUgYWJsZSB0byBob2xkIGNvbnNlcyB0aGF0IHBvaW50IHRvIHRoYXQKLSAgIHN0cmlu ZzsgdGhlbiB0aGUgc3RyaW5nIGlzIG5vdCBwcm90ZWN0ZWQgZnJvbSBnYy4gICovCi0KLUxpc3Bf T2JqZWN0Ci1tYWtlX3B1cmVfc3RyaW5nIChjb25zdCBjaGFyICpkYXRhLAotCQkgIHB0cmRpZmZf dCBuY2hhcnMsIHB0cmRpZmZfdCBuYnl0ZXMsIGJvb2wgbXVsdGlieXRlKQotewotICBMaXNwX09i amVjdCBzdHJpbmc7Ci0gIHN0cnVjdCBMaXNwX1N0cmluZyAqcyA9IHB1cmVfYWxsb2MgKHNpemVv ZiAqcywgTGlzcF9TdHJpbmcpOwotICBzLT51LnMuZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIGZp bmRfc3RyaW5nX2RhdGFfaW5fcHVyZSAoZGF0YSwgbmJ5dGVzKTsKLSAgaWYgKHMtPnUucy5kYXRh ID09IE5VTEwpCi0gICAgewotICAgICAgcy0+dS5zLmRhdGEgPSBwdXJlX2FsbG9jIChuYnl0ZXMg KyAxLCAtMSk7Ci0gICAgICBtZW1jcHkgKHMtPnUucy5kYXRhLCBkYXRhLCBuYnl0ZXMpOwotICAg ICAgcy0+dS5zLmRhdGFbbmJ5dGVzXSA9ICdcMCc7Ci0gICAgfQotICBzLT51LnMuc2l6ZSA9IG5j aGFyczsKLSAgcy0+dS5zLnNpemVfYnl0ZSA9IG11bHRpYnl0ZSA/IG5ieXRlcyA6IC0xOwotICBz LT51LnMuaW50ZXJ2YWxzID0gTlVMTDsKLSAgWFNFVFNUUklORyAoc3RyaW5nLCBzKTsKLSAgcmV0 dXJuIHN0cmluZzsKLX0KLQotLyogUmV0dXJuIGEgc3RyaW5nIGFsbG9jYXRlZCBpbiBwdXJlIHNw YWNlLiAgRG8gbm90Ci0gICBhbGxvY2F0ZSB0aGUgc3RyaW5nIGRhdGEsIGp1c3QgcG9pbnQgdG8g REFUQS4gICovCi0KLUxpc3BfT2JqZWN0Ci1tYWtlX3B1cmVfY19zdHJpbmcgKGNvbnN0IGNoYXIg KmRhdGEsIHB0cmRpZmZfdCBuY2hhcnMpCi17Ci0gIExpc3BfT2JqZWN0IHN0cmluZzsKLSAgc3Ry dWN0IExpc3BfU3RyaW5nICpzID0gcHVyZV9hbGxvYyAoc2l6ZW9mICpzLCBMaXNwX1N0cmluZyk7 Ci0gIHMtPnUucy5zaXplID0gbmNoYXJzOwotICBzLT51LnMuc2l6ZV9ieXRlID0gLTI7Ci0gIHMt PnUucy5kYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgZGF0YTsKLSAgcy0+dS5zLmludGVydmFscyA9 IE5VTEw7Ci0gIFhTRVRTVFJJTkcgKHN0cmluZywgcyk7Ci0gIHJldHVybiBzdHJpbmc7Ci19Ci0K LXN0YXRpYyBMaXNwX09iamVjdCBwdXJlY29weSAoTGlzcF9PYmplY3Qgb2JqKTsKLQotLyogUmV0 dXJuIGEgY29ucyBhbGxvY2F0ZWQgZnJvbSBwdXJlIHNwYWNlLiAgR2l2ZSBpdCBwdXJlIGNvcGll cwotICAgb2YgQ0FSIGFzIGNhciBhbmQgQ0RSIGFzIGNkci4gICovCi0KLUxpc3BfT2JqZWN0Ci1w dXJlX2NvbnMgKExpc3BfT2JqZWN0IGNhciwgTGlzcF9PYmplY3QgY2RyKQotewotICBMaXNwX09i amVjdCBuZXc7Ci0gIHN0cnVjdCBMaXNwX0NvbnMgKnAgPSBwdXJlX2FsbG9jIChzaXplb2YgKnAs IExpc3BfQ29ucyk7Ci0gIFhTRVRDT05TIChuZXcsIHApOwotICBYU0VUQ0FSIChuZXcsIHB1cmVj b3B5IChjYXIpKTsKLSAgWFNFVENEUiAobmV3LCBwdXJlY29weSAoY2RyKSk7Ci0gIHJldHVybiBu ZXc7Ci19Ci0KLQotLyogVmFsdWUgaXMgYSBmbG9hdCBvYmplY3Qgd2l0aCB2YWx1ZSBOVU0gYWxs b2NhdGVkIGZyb20gcHVyZSBzcGFjZS4gICovCi0KIHN0YXRpYyBMaXNwX09iamVjdAotbWFrZV9w dXJlX2Zsb2F0IChkb3VibGUgbnVtKQotewotICBMaXNwX09iamVjdCBuZXc7Ci0gIHN0cnVjdCBM aXNwX0Zsb2F0ICpwID0gcHVyZV9hbGxvYyAoc2l6ZW9mICpwLCBMaXNwX0Zsb2F0KTsKLSAgWFNF VEZMT0FUIChuZXcsIHApOwotICBYRkxPQVRfSU5JVCAobmV3LCBudW0pOwotICByZXR1cm4gbmV3 OwotfQotCi0vKiBWYWx1ZSBpcyBhIGJpZ251bSBvYmplY3Qgd2l0aCB2YWx1ZSBWQUxVRSBhbGxv Y2F0ZWQgZnJvbSBwdXJlCi0gICBzcGFjZS4gICovCi0KLXN0YXRpYyBMaXNwX09iamVjdAotbWFr ZV9wdXJlX2JpZ251bSAoTGlzcF9PYmplY3QgdmFsdWUpCi17Ci0gIG1wel90IGNvbnN0ICpuID0g eGJpZ251bV92YWwgKHZhbHVlKTsKLSAgc2l6ZV90IGksIG5saW1icyA9IG1wel9zaXplICgqbik7 Ci0gIHNpemVfdCBuYnl0ZXMgPSBubGltYnMgKiBzaXplb2YgKG1wX2xpbWJfdCk7Ci0gIG1wX2xp bWJfdCAqcHVyZV9saW1iczsKLSAgbXBfc2l6ZV90IG5ld19zaXplOwotCi0gIHN0cnVjdCBMaXNw X0JpZ251bSAqYiA9IHB1cmVfYWxsb2MgKHNpemVvZiAqYiwgTGlzcF9WZWN0b3JsaWtlKTsKLSAg WFNFVFBWRUNUWVBFU0laRSAoYiwgUFZFQ19CSUdOVU0sIDAsIFZFQ1NJWkUgKHN0cnVjdCBMaXNw X0JpZ251bSkpOwotCi0gIGludCBsaW1iX2FsaWdubWVudCA9IGFsaWdub2YgKG1wX2xpbWJfdCk7 Ci0gIHB1cmVfbGltYnMgPSBwdXJlX2FsbG9jIChuYnl0ZXMsIC0gbGltYl9hbGlnbm1lbnQpOwot ICBmb3IgKGkgPSAwOyBpIDwgbmxpbWJzOyArK2kpCi0gICAgcHVyZV9saW1ic1tpXSA9IG1wel9n ZXRsaW1ibiAoKm4sIGkpOwotCi0gIG5ld19zaXplID0gbmxpbWJzOwotICBpZiAobXB6X3NnbiAo Km4pIDwgMCkKLSAgICBuZXdfc2l6ZSA9IC1uZXdfc2l6ZTsKLQotICBtcHpfcm9pbml0X24gKGIt PnZhbHVlLCBwdXJlX2xpbWJzLCBuZXdfc2l6ZSk7Ci0KLSAgcmV0dXJuIG1ha2VfbGlzcF9wdHIg KGIsIExpc3BfVmVjdG9ybGlrZSk7Ci19Ci0KLS8qIFJldHVybiBhIHZlY3RvciB3aXRoIHJvb20g Zm9yIExFTiBMaXNwX09iamVjdHMgYWxsb2NhdGVkIGZyb20KLSAgIHB1cmUgc3BhY2UuICAqLwot Ci1zdGF0aWMgTGlzcF9PYmplY3QKLW1ha2VfcHVyZV92ZWN0b3IgKHB0cmRpZmZfdCBsZW4pCi17 Ci0gIExpc3BfT2JqZWN0IG5ldzsKLSAgc2l6ZV90IHNpemUgPSBoZWFkZXJfc2l6ZSArIGxlbiAq IHdvcmRfc2l6ZTsKLSAgc3RydWN0IExpc3BfVmVjdG9yICpwID0gcHVyZV9hbGxvYyAoc2l6ZSwg TGlzcF9WZWN0b3JsaWtlKTsKLSAgWFNFVFZFQ1RPUiAobmV3LCBwKTsKLSAgWFZFQ1RPUiAobmV3 KS0+aGVhZGVyLnNpemUgPSBsZW47Ci0gIHJldHVybiBuZXc7Ci19Ci0KLS8qIENvcHkgYWxsIGNv bnRlbnRzIGFuZCBwYXJhbWV0ZXJzIG9mIFRBQkxFIHRvIGEgbmV3IHRhYmxlIGFsbG9jYXRlZAot ICAgZnJvbSBwdXJlIHNwYWNlLCByZXR1cm4gdGhlIHB1cmlmaWVkIHRhYmxlLiAgKi8KLXN0YXRp YyBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICoKLXB1cmVjb3B5X2hhc2hfdGFibGUgKHN0cnVjdCBM aXNwX0hhc2hfVGFibGUgKnRhYmxlKQotewotICBlYXNzZXJ0IChOSUxQICh0YWJsZS0+d2Vhaykp OwotICBlYXNzZXJ0ICh0YWJsZS0+cHVyZWNvcHkpOwotCi0gIHN0cnVjdCBMaXNwX0hhc2hfVGFi bGUgKnB1cmUgPSBwdXJlX2FsbG9jIChzaXplb2YgKnB1cmUsIExpc3BfVmVjdG9ybGlrZSk7Ci0g IHN0cnVjdCBoYXNoX3RhYmxlX3Rlc3QgcHVyZV90ZXN0ID0gdGFibGUtPnRlc3Q7Ci0KLSAgLyog UHVyZWNvcHkgdGhlIGhhc2ggdGFibGUgdGVzdC4gICovCi0gIHB1cmVfdGVzdC5uYW1lID0gcHVy ZWNvcHkgKHRhYmxlLT50ZXN0Lm5hbWUpOwotICBwdXJlX3Rlc3QudXNlcl9oYXNoX2Z1bmN0aW9u ID0gcHVyZWNvcHkgKHRhYmxlLT50ZXN0LnVzZXJfaGFzaF9mdW5jdGlvbik7Ci0gIHB1cmVfdGVz dC51c2VyX2NtcF9mdW5jdGlvbiA9IHB1cmVjb3B5ICh0YWJsZS0+dGVzdC51c2VyX2NtcF9mdW5j dGlvbik7Ci0KLSAgcHVyZS0+aGVhZGVyID0gdGFibGUtPmhlYWRlcjsKLSAgcHVyZS0+d2VhayA9 IHB1cmVjb3B5IChRbmlsKTsKLSAgcHVyZS0+aGFzaCA9IHB1cmVjb3B5ICh0YWJsZS0+aGFzaCk7 Ci0gIHB1cmUtPm5leHQgPSBwdXJlY29weSAodGFibGUtPm5leHQpOwotICBwdXJlLT5pbmRleCA9 IHB1cmVjb3B5ICh0YWJsZS0+aW5kZXgpOwotICBwdXJlLT5jb3VudCA9IHRhYmxlLT5jb3VudDsK LSAgcHVyZS0+bmV4dF9mcmVlID0gdGFibGUtPm5leHRfZnJlZTsKLSAgcHVyZS0+cHVyZWNvcHkg PSB0YWJsZS0+cHVyZWNvcHk7Ci0gIGVhc3NlcnQgKCFwdXJlLT5tdXRhYmxlKTsKLSAgcHVyZS0+ cmVoYXNoX3RocmVzaG9sZCA9IHRhYmxlLT5yZWhhc2hfdGhyZXNob2xkOwotICBwdXJlLT5yZWhh c2hfc2l6ZSA9IHRhYmxlLT5yZWhhc2hfc2l6ZTsKLSAgcHVyZS0+a2V5X2FuZF92YWx1ZSA9IHB1 cmVjb3B5ICh0YWJsZS0+a2V5X2FuZF92YWx1ZSk7Ci0gIHB1cmUtPnRlc3QgPSBwdXJlX3Rlc3Q7 Ci0KLSAgcmV0dXJuIHB1cmU7Ci19CitwdXJlY29weSAoTGlzcF9PYmplY3Qgb2JqKTsKIAogREVG VU4gKCJwdXJlY29weSIsIEZwdXJlY29weSwgU3B1cmVjb3B5LCAxLCAxLCAwLAogICAgICAgIGRv YzogLyogTWFrZSBhIGNvcHkgb2Ygb2JqZWN0IE9CSiBpbiBwdXJlIHN0b3JhZ2UuCkBAIC01NTE0 LDEwMCArNTE3NCwyMyBAQCBERUZVTiAoInB1cmVjb3B5IiwgRnB1cmVjb3B5LCBTcHVyZWNvcHks IDEsIDEsIDAsCiAgICAgcmV0dXJuIHB1cmVjb3B5IChvYmopOwogfQogCi0vKiBQaW5uZWQgb2Jq ZWN0cyBhcmUgbWFya2VkIGJlZm9yZSBldmVyeSBHQyBjeWNsZS4gICovCi1zdGF0aWMgc3RydWN0 IHBpbm5lZF9vYmplY3QKLXsKLSAgTGlzcF9PYmplY3Qgb2JqZWN0OwotICBzdHJ1Y3QgcGlubmVk X29iamVjdCAqbmV4dDsKLX0gKnBpbm5lZF9vYmplY3RzOwotCiBzdGF0aWMgTGlzcF9PYmplY3QK IHB1cmVjb3B5IChMaXNwX09iamVjdCBvYmopCiB7Ci0gIGlmIChGSVhOVU1QIChvYmopCi0gICAg ICB8fCAoISBTWU1CT0xQIChvYmopICYmIFBVUkVfUCAoWFBOVFIgKG9iaikpKQotICAgICAgfHwg U1VCUlAgKG9iaikpCisgIGlmIChGSVhOVU1QIChvYmopIHx8IFNVQlJQIChvYmopKQogICAgIHJl dHVybiBvYmo7ICAgIC8qIEFscmVhZHkgcHVyZS4gICovCiAKLSAgaWYgKFNUUklOR1AgKG9iaikg JiYgWFNUUklORyAob2JqKS0+dS5zLmludGVydmFscykKLSAgICBtZXNzYWdlX3dpdGhfc3RyaW5n ICgiRHJvcHBpbmcgdGV4dC1wcm9wZXJ0aWVzIHdoaWxlIG1ha2luZyBzdHJpbmcgYCVzJyBwdXJl IiwKLQkJCSBvYmosIHRydWUpOwotCiAgIGlmIChIQVNIX1RBQkxFX1AgKFZwdXJpZnlfZmxhZykp IC8qIEhhc2ggY29uc2luZy4gICovCiAgICAgewogICAgICAgTGlzcF9PYmplY3QgdG1wID0gRmdl dGhhc2ggKG9iaiwgVnB1cmlmeV9mbGFnLCBRbmlsKTsKICAgICAgIGlmICghTklMUCAodG1wKSkK IAlyZXR1cm4gdG1wOworICAgICAgRnB1dGhhc2ggKG9iaiwgb2JqLCBWcHVyaWZ5X2ZsYWcpOwog ICAgIH0KIAotICBpZiAoQ09OU1AgKG9iaikpCi0gICAgb2JqID0gcHVyZV9jb25zIChYQ0FSIChv YmopLCBYQ0RSIChvYmopKTsKLSAgZWxzZSBpZiAoRkxPQVRQIChvYmopKQotICAgIG9iaiA9IG1h a2VfcHVyZV9mbG9hdCAoWEZMT0FUX0RBVEEgKG9iaikpOwotICBlbHNlIGlmIChTVFJJTkdQIChv YmopKQotICAgIG9iaiA9IG1ha2VfcHVyZV9zdHJpbmcgKFNTREFUQSAob2JqKSwgU0NIQVJTIChv YmopLAotCQkJICAgIFNCWVRFUyAob2JqKSwKLQkJCSAgICBTVFJJTkdfTVVMVElCWVRFIChvYmop KTsKLSAgZWxzZSBpZiAoSEFTSF9UQUJMRV9QIChvYmopKQotICAgIHsKLSAgICAgIHN0cnVjdCBM aXNwX0hhc2hfVGFibGUgKnRhYmxlID0gWEhBU0hfVEFCTEUgKG9iaik7Ci0gICAgICAvKiBEbyBu b3QgcHVyaWZ5IGhhc2ggdGFibGVzIHdoaWNoIGhhdmVuJ3QgYmVlbiBkZWZpbmVkIHdpdGgKLSAg ICAgICAgIDpwdXJlY29weSBhcyBub24tbmlsIG9yIGFyZSB3ZWFrIC0gdGhleSBhcmVuJ3QgZ3Vh cmFudGVlZCB0bwotICAgICAgICAgbm90IGNoYW5nZS4gICovCi0gICAgICBpZiAoIU5JTFAgKHRh YmxlLT53ZWFrKSB8fCAhdGFibGUtPnB1cmVjb3B5KQotICAgICAgICB7Ci0gICAgICAgICAgLyog SW5zdGVhZCwgYWRkIHRoZSBoYXNoIHRhYmxlIHRvIHRoZSBsaXN0IG9mIHBpbm5lZCBvYmplY3Rz LAotICAgICAgICAgICAgIHNvIHRoYXQgaXQgd2lsbCBiZSBtYXJrZWQgZHVyaW5nIEdDLiAgKi8K LSAgICAgICAgICBzdHJ1Y3QgcGlubmVkX29iamVjdCAqbyA9IHhtYWxsb2MgKHNpemVvZiAqbyk7 Ci0gICAgICAgICAgby0+b2JqZWN0ID0gb2JqOwotICAgICAgICAgIG8tPm5leHQgPSBwaW5uZWRf b2JqZWN0czsKLSAgICAgICAgICBwaW5uZWRfb2JqZWN0cyA9IG87Ci0gICAgICAgICAgcmV0dXJu IG9iajsgLyogRG9uJ3QgaGFzaCBjb25zIGl0LiAgKi8KLSAgICAgICAgfQotCi0gICAgICBzdHJ1 Y3QgTGlzcF9IYXNoX1RhYmxlICpoID0gcHVyZWNvcHlfaGFzaF90YWJsZSAodGFibGUpOwotICAg ICAgWFNFVF9IQVNIX1RBQkxFIChvYmosIGgpOwotICAgIH0KLSAgZWxzZSBpZiAoQ09NUElMRURQ IChvYmopIHx8IFZFQ1RPUlAgKG9iaikgfHwgUkVDT1JEUCAob2JqKSkKLSAgICB7Ci0gICAgICBz dHJ1Y3QgTGlzcF9WZWN0b3IgKm9ianAgPSBYVkVDVE9SIChvYmopOwotICAgICAgcHRyZGlmZl90 IG5ieXRlcyA9IHZlY3Rvcl9uYnl0ZXMgKG9ianApOwotICAgICAgc3RydWN0IExpc3BfVmVjdG9y ICp2ZWMgPSBwdXJlX2FsbG9jIChuYnl0ZXMsIExpc3BfVmVjdG9ybGlrZSk7Ci0gICAgICByZWdp c3RlciBwdHJkaWZmX3QgaTsKLSAgICAgIHB0cmRpZmZfdCBzaXplID0gQVNJWkUgKG9iaik7Ci0g ICAgICBpZiAoc2l6ZSAmIFBTRVVET1ZFQ1RPUl9GTEFHKQotCXNpemUgJj0gUFNFVURPVkVDVE9S X1NJWkVfTUFTSzsKLSAgICAgIG1lbWNweSAodmVjLCBvYmpwLCBuYnl0ZXMpOwotICAgICAgZm9y IChpID0gMDsgaSA8IHNpemU7IGkrKykKLQl2ZWMtPmNvbnRlbnRzW2ldID0gcHVyZWNvcHkgKHZl Yy0+Y29udGVudHNbaV0pOwotICAgICAgWFNFVFZFQ1RPUiAob2JqLCB2ZWMpOwotICAgIH0KLSAg ZWxzZSBpZiAoU1lNQk9MUCAob2JqKSkKLSAgICB7Ci0gICAgICBpZiAoIVhTWU1CT0wgKG9iaikt PnUucy5waW5uZWQgJiYgIWNfc3ltYm9sX3AgKFhTWU1CT0wgKG9iaikpKQotCXsgLyogV2UgY2Fu J3QgcHVyaWZ5IHRoZW0sIGJ1dCB0aGV5IGFwcGVhciBpbiBtYW55IHB1cmUgb2JqZWN0cy4KLQkg ICAgIE1hcmsgdGhlbSBhcyBgcGlubmVkJyBzbyB3ZSBrbm93IHRvIG1hcmsgdGhlbSBhdCBldmVy eSBHQyBjeWNsZS4gICovCi0JICBYU1lNQk9MIChvYmopLT51LnMucGlubmVkID0gdHJ1ZTsKLQkg IHN5bWJvbF9ibG9ja19waW5uZWQgPSBzeW1ib2xfYmxvY2s7Ci0JfQotICAgICAgLyogRG9uJ3Qg aGFzaC1jb25zIGl0LiAgKi8KLSAgICAgIHJldHVybiBvYmo7Ci0gICAgfQotICBlbHNlIGlmIChC SUdOVU1QIChvYmopKQotICAgIG9iaiA9IG1ha2VfcHVyZV9iaWdudW0gKG9iaik7Ci0gIGVsc2UK LSAgICB7Ci0gICAgICBBVVRPX1NUUklORyAoZm10LCAiRG9uJ3Qga25vdyBob3cgdG8gcHVyaWZ5 OiAlUyIpOwotICAgICAgRnNpZ25hbCAoUWVycm9yLCBsaXN0MSAoQ0FMTE4gKEZmb3JtYXQsIGZt dCwgb2JqKSkpOwotICAgIH0KLQotICBpZiAoSEFTSF9UQUJMRV9QIChWcHVyaWZ5X2ZsYWcpKSAv KiBIYXNoIGNvbnNpbmcuICAqLwotICAgIEZwdXRoYXNoIChvYmosIG9iaiwgVnB1cmlmeV9mbGFn KTsKLQogICByZXR1cm4gb2JqOwogfQogCi0KIAwKIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCQkJICBQcm90 ZWN0aW9uIGZyb20gR0MKQEAgLTU3OTgsMzEgKzUzODEsNiBAQCBjb21wYWN0X3VuZG9fbGlzdCAo TGlzcF9PYmplY3QgbGlzdCkKICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYyB2b2lkCi1tYXJr X3Bpbm5lZF9vYmplY3RzICh2b2lkKQotewotICBmb3IgKHN0cnVjdCBwaW5uZWRfb2JqZWN0ICpw b2JqID0gcGlubmVkX29iamVjdHM7IHBvYmo7IHBvYmogPSBwb2JqLT5uZXh0KQotICAgIG1hcmtf b2JqZWN0IChwb2JqLT5vYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZAotbWFya19waW5uZWRfc3lt Ym9scyAodm9pZCkKLXsKLSAgc3RydWN0IHN5bWJvbF9ibG9jayAqc2JsazsKLSAgaW50IGxpbSA9 IChzeW1ib2xfYmxvY2tfcGlubmVkID09IHN5bWJvbF9ibG9jawotCSAgICAgPyBzeW1ib2xfYmxv Y2tfaW5kZXggOiBTWU1CT0xfQkxPQ0tfU0laRSk7Ci0KLSAgZm9yIChzYmxrID0gc3ltYm9sX2Js b2NrX3Bpbm5lZDsgc2Jsazsgc2JsayA9IHNibGstPm5leHQpCi0gICAgewotICAgICAgc3RydWN0 IExpc3BfU3ltYm9sICpzeW0gPSBzYmxrLT5zeW1ib2xzLCAqZW5kID0gc3ltICsgbGltOwotICAg ICAgZm9yICg7IHN5bSA8IGVuZDsgKytzeW0pCi0JaWYgKHN5bS0+dS5zLnBpbm5lZCkKLQkgIG1h cmtfb2JqZWN0IChtYWtlX2xpc3Bfc3ltYm9sIChzeW0pKTsKLQotICAgICAgbGltID0gU1lNQk9M X0JMT0NLX1NJWkU7Ci0gICAgfQotfQotCiBzdGF0aWMgdm9pZAogdmlzaXRfdmVjdG9ybGlrZV9y b290IChzdHJ1Y3QgZ2Nfcm9vdF92aXNpdG9yIHZpc2l0b3IsCiAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBMaXNwX1ZlY3RvciAqcHRyLApAQCAtNjA4Myw4ICs1NjQxLDYgQEAgZ2FyYmFn ZV9jb2xsZWN0ICh2b2lkKQogICBzdHJ1Y3QgZ2Nfcm9vdF92aXNpdG9yIHZpc2l0b3IgPSB7IC52 aXNpdCA9IG1hcmtfb2JqZWN0X3Jvb3RfdmlzaXRvciB9OwogICB2aXNpdF9zdGF0aWNfZ2Nfcm9v dHMgKHZpc2l0b3IpOwogCi0gIG1hcmtfcGlubmVkX29iamVjdHMgKCk7Ci0gIG1hcmtfcGlubmVk X3N5bWJvbHMgKCk7CiAgIG1hcmtfdGVybWluYWxzICgpOwogICBtYXJrX2tib2FyZHMgKCk7CiAg IG1hcmtfdGhyZWFkcyAoKTsKQEAgLTYxOTMsMTAgKzU3NDksNiBAQCBERUZVTiAoImdhcmJhZ2Ut Y29sbGVjdCIsIEZnYXJiYWdlX2NvbGxlY3QsIFNnYXJiYWdlX2NvbGxlY3QsIDAsIDAsICIiLAog ICBrZWVwcyBhcm91bmQgZm9yIGZ1dHVyZSBhbGxvY2F0aW9ucyAobWF5YmUgYmVjYXVzZSBpdCBk b2VzIG5vdCBrbm93IGhvdwogICB0byByZXR1cm4gdGhlbSB0byB0aGUgT1MpLgogCi1Ib3dldmVy LCBpZiB0aGVyZSB3YXMgb3ZlcmZsb3cgaW4gcHVyZSBzcGFjZSwgYW5kIEVtYWNzIHdhcyBkdW1w ZWQKLXVzaW5nIHRoZSAndW5leGVjJyBtZXRob2QsIGBnYXJiYWdlLWNvbGxlY3QnIHJldHVybnMg bmlsLCBiZWNhdXNlCi1yZWFsIEdDIGNhbid0IGJlIGRvbmUuCi0KIE5vdGUgdGhhdCBjYWxsaW5n IHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgYWJzb2x1dGVseSBhbGwKIHVu cmVhY2hhYmxlIG9iamVjdHMgd2lsbCBiZSBnYXJiYWdlLWNvbGxlY3RlZC4gIEVtYWNzIHVzZXMg YQogbWFyay1hbmQtc3dlZXAgZ2FyYmFnZSBjb2xsZWN0b3IsIGJ1dCBpcyBjb25zZXJ2YXRpdmUg d2hlbiBpdCBjb21lcyB0bwpAQCAtNjU2Niw3ICs2MTE4LDYgQEAgbWFya19vYmplY3RzIChMaXNw X09iamVjdCAqb2JqLCBwdHJkaWZmX3QgbikKIG1hcmtfb2JqZWN0IChMaXNwX09iamVjdCBhcmcp CiB7CiAgIHJlZ2lzdGVyIExpc3BfT2JqZWN0IG9iajsKLSAgdm9pZCAqcG87CiAjaWYgR0NfQ0hF Q0tfTUFSS0VEX09CSkVDVFMKICAgc3RydWN0IG1lbV9ub2RlICptID0gTlVMTDsKICNlbmRpZgpA QCAtNjU3NSwxMCArNjEyNiw2IEBAIG1hcmtfb2JqZWN0IChMaXNwX09iamVjdCBhcmcpCiAgIG9i aiA9IGFyZzsKICBsb29wOgogCi0gIHBvID0gWFBOVFIgKG9iaik7Ci0gIGlmIChQVVJFX1AgKHBv KSkKLSAgICByZXR1cm47Ci0KICAgbGFzdF9tYXJrZWRbbGFzdF9tYXJrZWRfaW5kZXgrK10gPSBv Ymo7CiAgIGxhc3RfbWFya2VkX2luZGV4ICY9IExBU1RfTUFSS0VEX1NJWkUgLSAxOwogCkBAIC02 NzcxLDExICs2MzE4LDEwIEBAICNkZWZpbmUgQ0hFQ0tfQUxMT0NBVEVEX0FORF9MSVZFX1NZTUJP TCgpCQkoKHZvaWQpIDApCiAJICAgIGJyZWFrOwogCSAgZGVmYXVsdDogZW1hY3NfYWJvcnQgKCk7 CiAJICB9Ci0JaWYgKCFQVVJFX1AgKFhTVFJJTkcgKHB0ci0+dS5zLm5hbWUpKSkKLSAgICAgICAg ICBzZXRfc3RyaW5nX21hcmtlZCAoWFNUUklORyAocHRyLT51LnMubmFtZSkpOworCXNldF9zdHJp bmdfbWFya2VkIChYU1RSSU5HIChwdHItPnUucy5uYW1lKSk7CiAgICAgICAgIG1hcmtfaW50ZXJ2 YWxfdHJlZSAoc3RyaW5nX2ludGVydmFscyAocHRyLT51LnMubmFtZSkpOwogCS8qIElubmVyIGxv b3AgdG8gbWFyayBuZXh0IHN5bWJvbCBpbiB0aGlzIGJ1Y2tldCwgaWYgYW55LiAgKi8KLQlwbyA9 IHB0ciA9IHB0ci0+dS5zLm5leHQ7CisJcHRyID0gcHRyLT51LnMubmV4dDsKIAlpZiAocHRyKQog CSAgZ290byBuZXh0c3ltOwogICAgICAgfQpAQCAtNjg4Niw3ICs2NDMyLDcgQEAgc3Vydml2ZXNf Z2NfcCAoTGlzcF9PYmplY3Qgb2JqKQogICAgICAgZW1hY3NfYWJvcnQgKCk7CiAgICAgfQogCi0g IHJldHVybiBzdXJ2aXZlc19wIHx8IFBVUkVfUCAoWFBOVFIgKG9iaikpOworICByZXR1cm4gc3Vy dml2ZXNfcDsKIH0KIAogCkBAIC03NDc0LDggKzcwMjAsNiBAQCBpbml0X2FsbG9jX29uY2UgKHZv aWQpCiBzdGF0aWMgdm9pZAogaW5pdF9hbGxvY19vbmNlX2Zvcl9wZHVtcGVyICh2b2lkKQogewot ICBwdXJlYmVnID0gUFVSRUJFRzsKLSAgcHVyZV9zaXplID0gUFVSRVNJWkU7CiAgIG1lbV9pbml0 ICgpOwogCiAjaWZkZWYgRE9VR19MRUFfTUFMTE9DCkBAIC03NTE5LDcgKzcwNjMsNyBAQCBzeW1z X29mX2FsbG9jICh2b2lkKQogICBWZ2NfY29uc19wZXJjZW50YWdlID0gbWFrZV9mbG9hdCAoMC4x KTsKIAogICBERUZWQVJfSU5UICgicHVyZS1ieXRlcy11c2VkIiwgcHVyZV9ieXRlc191c2VkLAot CSAgICAgIGRvYzogLyogTnVtYmVyIG9mIGJ5dGVzIG9mIHNoYXJlYWJsZSBMaXNwIGRhdGEgYWxs b2NhdGVkIHNvIGZhci4gICovKTsKKwkgICAgICBkb2M6IC8qIE5vIGxvbmdlciB1c2VkLiAgKi8p OwogCiAgIERFRlZBUl9JTlQgKCJjb25zLWNlbGxzLWNvbnNlZCIsIGNvbnNfY2VsbHNfY29uc2Vk LAogCSAgICAgIGRvYzogLyogTnVtYmVyIG9mIGNvbnMgY2VsbHMgdGhhdCBoYXZlIGJlZW4gY29u c2VkIHNvIGZhci4gICovKTsKQEAgLTc1NDQsMTAgKzcwODgsNyBAQCBzeW1zX29mX2FsbG9jICh2 b2lkKQogCSAgICAgIGRvYzogLyogTnVtYmVyIG9mIHN0cmluZ3MgdGhhdCBoYXZlIGJlZW4gY29u c2VkIHNvIGZhci4gICovKTsKIAogICBERUZWQVJfTElTUCAoInB1cmlmeS1mbGFnIiwgVnB1cmlm eV9mbGFnLAotCSAgICAgICBkb2M6IC8qIE5vbi1uaWwgbWVhbnMgbG9hZGluZyBMaXNwIGNvZGUg aW4gb3JkZXIgdG8gZHVtcCBhbiBleGVjdXRhYmxlLgotVGhpcyBtZWFucyB0aGF0IGNlcnRhaW4g b2JqZWN0cyBzaG91bGQgYmUgYWxsb2NhdGVkIGluIHNoYXJlZCAocHVyZSkgc3BhY2UuCi1JdCBj YW4gYWxzbyBiZSBzZXQgdG8gYSBoYXNoLXRhYmxlLCBpbiB3aGljaCBjYXNlIHRoaXMgdGFibGUg aXMgdXNlZCB0bwotZG8gaGFzaC1jb25zaW5nIG9mIHRoZSBvYmplY3RzIGFsbG9jYXRlZCB0byBw dXJlIHNwYWNlLiAgKi8pOworCSAgICAgICBkb2M6IC8qIE5vIGxvbmdlciB1c2VkLiAgKi8pOwog CiAgIERFRlZBUl9CT09MICgiZ2FyYmFnZS1jb2xsZWN0aW9uLW1lc3NhZ2VzIiwgZ2FyYmFnZV9j b2xsZWN0aW9uX21lc3NhZ2VzLAogCSAgICAgICBkb2M6IC8qIE5vbi1uaWwgbWVhbnMgZGlzcGxh eSBtZXNzYWdlcyBhdCBzdGFydCBhbmQgZW5kIG9mIGdhcmJhZ2UgY29sbGVjdGlvbi4gICovKTsK QEAgLTc1NjMsMTAgKzcxMDQsMTAgQEAgc3ltc19vZl9hbGxvYyAodm9pZCkKICAgLyogV2UgYnVp bGQgdGhpcyBpbiBhZHZhbmNlIGJlY2F1c2UgaWYgd2Ugd2FpdCB1bnRpbCB3ZSBuZWVkIGl0LCB3 ZSBtaWdodAogICAgICBub3QgYmUgYWJsZSB0byBhbGxvY2F0ZSB0aGUgbWVtb3J5IHRvIGhvbGQg aXQuICAqLwogICBWbWVtb3J5X3NpZ25hbF9kYXRhCi0gICAgPSBwdXJlX2xpc3QgKFFlcnJvciwK LQkJIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJNZW1vcnkgZXhoYXVzdGVkLS11c2UiCi0JCQkJICAg ICAgIiBNLXggc2F2ZS1zb21lLWJ1ZmZlcnMgdGhlbiIKLQkJCQkgICAgICAiIGV4aXQgYW5kIHJl c3RhcnQgRW1hY3MiKSk7CisgICAgPSBsaXN0IChRZXJyb3IsCisJICAgIGJ1aWxkX3N0cmluZyAo Ik1lbW9yeSBleGhhdXN0ZWQtLXVzZSIKKwkJCSAgIiBNLXggc2F2ZS1zb21lLWJ1ZmZlcnMgdGhl biIKKwkJCSAgIiBleGl0IGFuZCByZXN0YXJ0IEVtYWNzIikpOwogCiAgIERFRlZBUl9MSVNQICgi bWVtb3J5LWZ1bGwiLCBWbWVtb3J5X2Z1bGwsCiAJICAgICAgIGRvYzogLyogTm9uLW5pbCBtZWFu cyBFbWFjcyBjYW5ub3QgZ2V0IG11Y2ggbW9yZSBMaXNwIG1lbW9yeS4gICovKTsKZGlmZiAtLWdp dCBhL3NyYy9idWZmZXIuYyBiL3NyYy9idWZmZXIuYwppbmRleCA1YmQ5YjM3NzAyZjNmLi42OWNi MWE4ZTkwNGE0IDEwMDY0NAotLS0gYS9zcmMvYnVmZmVyLmMKKysrIGIvc3JjL2J1ZmZlci5jCkBA IC01MjY2LDggKzUyNjYsOCBAQCBpbml0X2J1ZmZlcl9vbmNlICh2b2lkKQogICBzZXRfYnVmZmVy X2ludGVydmFscyAoJmJ1ZmZlcl9kZWZhdWx0cywgTlVMTCk7CiAgIHNldF9idWZmZXJfaW50ZXJ2 YWxzICgmYnVmZmVyX2xvY2FsX3N5bWJvbHMsIE5VTEwpOwogICAvKiBUaGlzIGlzIG5vdCBzdHJp Y3RseSBuZWNlc3NhcnksIGJ1dCBsZXQncyBtYWtlIHRoZW0gaW5pdGlhbGl6ZWQuICAqLwotICBi c2V0X25hbWUgKCZidWZmZXJfZGVmYXVsdHMsIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIgKmJ1ZmZl ci1kZWZhdWx0cyoiKSk7Ci0gIGJzZXRfbmFtZSAoJmJ1ZmZlcl9sb2NhbF9zeW1ib2xzLCBidWls ZF9wdXJlX2Nfc3RyaW5nICgiICpidWZmZXItbG9jYWwtc3ltYm9scyoiKSk7CisgIGJzZXRfbmFt ZSAoJmJ1ZmZlcl9kZWZhdWx0cywgYnVpbGRfc3RyaW5nICgiICpidWZmZXItZGVmYXVsdHMqIikp OworICBic2V0X25hbWUgKCZidWZmZXJfbG9jYWxfc3ltYm9scywgYnVpbGRfc3RyaW5nICgiICpi dWZmZXItbG9jYWwtc3ltYm9scyoiKSk7CiAgIEJVRkZFUl9QVkVDX0lOSVQgKCZidWZmZXJfZGVm YXVsdHMpOwogICBCVUZGRVJfUFZFQ19JTklUICgmYnVmZmVyX2xvY2FsX3N5bWJvbHMpOwogCkBA IC01Mjc1LDcgKzUyNzUsNyBAQCBpbml0X2J1ZmZlcl9vbmNlICh2b2lkKQogICAvKiBNdXN0IGRv IHRoZXNlIGJlZm9yZSBtYWtpbmcgdGhlIGZpcnN0IGJ1ZmZlciEgKi8KIAogICAvKiByZWFsIHNl dHVwIGlzIGRvbmUgaW4gYmluZGluZ3MuZWwgKi8KLSAgYnNldF9tb2RlX2xpbmVfZm9ybWF0ICgm YnVmZmVyX2RlZmF1bHRzLCBidWlsZF9wdXJlX2Nfc3RyaW5nICgiJS0iKSk7CisgIGJzZXRfbW9k ZV9saW5lX2Zvcm1hdCAoJmJ1ZmZlcl9kZWZhdWx0cywgYnVpbGRfc3RyaW5nICgiJS0iKSk7CiAg IGJzZXRfaGVhZGVyX2xpbmVfZm9ybWF0ICgmYnVmZmVyX2RlZmF1bHRzLCBRbmlsKTsKICAgYnNl dF90YWJfbGluZV9mb3JtYXQgKCZidWZmZXJfZGVmYXVsdHMsIFFuaWwpOwogICBic2V0X2FiYnJl dl9tb2RlICgmYnVmZmVyX2RlZmF1bHRzLCBRbmlsKTsKQEAgLTUzNDIsNyArNTM0Miw3IEBAIGlu aXRfYnVmZmVyX29uY2UgKHZvaWQpCiAgIGN1cnJlbnRfYnVmZmVyID0gMDsKICAgcGR1bXBlcl9y ZW1lbWJlcl9sdl9wdHJfcmF3ICgmY3VycmVudF9idWZmZXIsIExpc3BfVmVjdG9ybGlrZSk7CiAK LSAgUVNGdW5kYW1lbnRhbCA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJGdW5kYW1lbnRhbCIpOwor ICBRU0Z1bmRhbWVudGFsID0gYnVpbGRfc3RyaW5nICgiRnVuZGFtZW50YWwiKTsKIAogICBERUZT WU0gKFFmdW5kYW1lbnRhbF9tb2RlLCAiZnVuZGFtZW50YWwtbW9kZSIpOwogICBic2V0X21ham9y X21vZGUgKCZidWZmZXJfZGVmYXVsdHMsIFFmdW5kYW1lbnRhbF9tb2RlKTsKQEAgLTUzNTYsMTAg KzUzNTYsMTAgQEAgaW5pdF9idWZmZXJfb25jZSAodm9pZCkKIAogICAvKiBTdXBlci1tYWdpYyBp bnZpc2libGUgYnVmZmVyLiAgKi8KICAgVnByaW4xX3RvX3N0cmluZ19idWZmZXIgPQotICAgIEZn ZXRfYnVmZmVyX2NyZWF0ZSAoYnVpbGRfcHVyZV9jX3N0cmluZyAoIiBwcmluMSIpLCBRdCk7Cisg ICAgRmdldF9idWZmZXJfY3JlYXRlIChidWlsZF9zdHJpbmcgKCIgcHJpbjEiKSwgUXQpOwogICBW YnVmZmVyX2FsaXN0ID0gUW5pbDsKIAotICBGc2V0X2J1ZmZlciAoRmdldF9idWZmZXJfY3JlYXRl IChidWlsZF9wdXJlX2Nfc3RyaW5nICgiKnNjcmF0Y2gqIiksIFFuaWwpKTsKKyAgRnNldF9idWZm ZXIgKEZnZXRfYnVmZmVyX2NyZWF0ZSAoYnVpbGRfc3RyaW5nICgiKnNjcmF0Y2gqIiksIFFuaWwp KTsKIAogICBpbmhpYml0X21vZGlmaWNhdGlvbl9ob29rcyA9IDA7CiB9CkBAIC01NTM0LDkgKzU1 MzQsOSBAQCBzeW1zX29mX2J1ZmZlciAodm9pZCkKIAkgICAgICAgUW92ZXJ3cml0ZV9tb2RlX2Jp bmFyeSkpOwogCiAgIEZwdXQgKFFwcm90ZWN0ZWRfZmllbGQsIFFlcnJvcl9jb25kaXRpb25zLAot CXB1cmVfbGlzdCAoUXByb3RlY3RlZF9maWVsZCwgUWVycm9yKSk7CisJbGlzdCAoUXByb3RlY3Rl ZF9maWVsZCwgUWVycm9yKSk7CiAgIEZwdXQgKFFwcm90ZWN0ZWRfZmllbGQsIFFlcnJvcl9tZXNz YWdlLAotCWJ1aWxkX3B1cmVfY19zdHJpbmcgKCJBdHRlbXB0IHRvIG1vZGlmeSBhIHByb3RlY3Rl ZCBmaWVsZCIpKTsKKwlidWlsZF9zdHJpbmcgKCJBdHRlbXB0IHRvIG1vZGlmeSBhIHByb3RlY3Rl ZCBmaWVsZCIpKTsKIAogICBERUZWQVJfUEVSX0JVRkZFUiAoInRhYi1saW5lLWZvcm1hdCIsCiAJ CSAgICAgJkJWQVIgKGN1cnJlbnRfYnVmZmVyLCB0YWJfbGluZV9mb3JtYXQpLApkaWZmIC0tZ2l0 IGEvc3JjL2NhbGxpbnQuYyBiL3NyYy9jYWxsaW50LmMKaW5kZXggMTg2MjQ2Mzc4NDNmMi4uOGY4 YTc3MTMxMDU1NyAxMDA2NDQKLS0tIGEvc3JjL2NhbGxpbnQuYworKysgYi9zcmMvY2FsbGludC5j CkBAIC04MjQsMTAgKzgyNCwxMCBAQCBzeW1zX29mX2NhbGxpbnQgKHZvaWQpCiAgIGNhbGxpbnRf bWVzc2FnZSA9IFFuaWw7CiAgIHN0YXRpY3BybyAoJmNhbGxpbnRfbWVzc2FnZSk7CiAKLSAgcHJl c2VydmVkX2ZucyA9IHB1cmVfbGlzdCAoaW50ZXJuX2Nfc3RyaW5nICgicmVnaW9uLWJlZ2lubmlu ZyIpLAotCQkJICAgICBpbnRlcm5fY19zdHJpbmcgKCJyZWdpb24tZW5kIiksCi0JCQkgICAgIGlu dGVybl9jX3N0cmluZyAoInBvaW50IiksCi0JCQkgICAgIGludGVybl9jX3N0cmluZyAoIm1hcmsi KSk7CisgIHByZXNlcnZlZF9mbnMgPSBsaXN0IChpbnRlcm5fY19zdHJpbmcgKCJyZWdpb24tYmVn aW5uaW5nIiksCisJCQlpbnRlcm5fY19zdHJpbmcgKCJyZWdpb24tZW5kIiksCisJCQlpbnRlcm5f Y19zdHJpbmcgKCJwb2ludCIpLAorCQkJaW50ZXJuX2Nfc3RyaW5nICgibWFyayIpKTsKICAgc3Rh dGljcHJvICgmcHJlc2VydmVkX2Zucyk7CiAKICAgREVGU1lNIChRbGlzdCwgImxpc3QiKTsKZGlm ZiAtLWdpdCBhL3NyYy9jYXRlZ29yeS5jIGIvc3JjL2NhdGVnb3J5LmMKaW5kZXggZWM4ZjYxZjdm MDAyZi4uOTA3ZGIxNDU1Nzc4YiAxMDA2NDQKLS0tIGEvc3JjL2NhdGVnb3J5LmMKKysrIGIvc3Jj L2NhdGVnb3J5LmMKQEAgLTUzLDcgKzUzLDcgQEAgaGFzaF9nZXRfY2F0ZWdvcnlfc2V0IChMaXNw X09iamVjdCB0YWJsZSwgTGlzcF9PYmplY3QgY2F0ZWdvcnlfc2V0KQogICAgICAgKHRhYmxlLCAx LAogICAgICAgIG1ha2VfaGFzaF90YWJsZSAoaGFzaHRlc3RfZXF1YWwsIERFRkFVTFRfSEFTSF9T SVpFLAogCQkJREVGQVVMVF9SRUhBU0hfU0laRSwgREVGQVVMVF9SRUhBU0hfVEhSRVNIT0xELAot CQkJUW5pbCwgZmFsc2UpKTsKKwkJCVFuaWwpKTsKICAgc3RydWN0IExpc3BfSGFzaF9UYWJsZSAq aCA9IFhIQVNIX1RBQkxFIChYQ0hBUl9UQUJMRSAodGFibGUpLT5leHRyYXNbMV0pOwogICBMaXNw X09iamVjdCBoYXNoOwogICBwdHJkaWZmX3QgaSA9IGhhc2hfbG9va3VwIChoLCBjYXRlZ29yeV9z ZXQsICZoYXNoKTsKQEAgLTEyMCw4ICsxMjAsNiBAQCBERUZVTiAoImRlZmluZS1jYXRlZ29yeSIs IEZkZWZpbmVfY2F0ZWdvcnksIFNkZWZpbmVfY2F0ZWdvcnksIDIsIDMsIDAsCiAKICAgaWYgKCFO SUxQIChDQVRFR09SWV9ET0NTVFJJTkcgKHRhYmxlLCBYRklYTkFUIChjYXRlZ29yeSkpKSkKICAg ICBlcnJvciAoIkNhdGVnb3J5IGAlYycgaXMgYWxyZWFkeSBkZWZpbmVkIiwgKGludCkgWEZJWE5B VCAoY2F0ZWdvcnkpKTsKLSAgaWYgKCFOSUxQIChWcHVyaWZ5X2ZsYWcpKQotICAgIGRvY3N0cmlu ZyA9IEZwdXJlY29weSAoZG9jc3RyaW5nKTsKICAgU0VUX0NBVEVHT1JZX0RPQ1NUUklORyAodGFi bGUsIFhGSVhOQVQgKGNhdGVnb3J5KSwgZG9jc3RyaW5nKTsKIAogICByZXR1cm4gUW5pbDsKZGlm ZiAtLWdpdCBhL3NyYy9jb2RpbmcuYyBiL3NyYy9jb2RpbmcuYwppbmRleCA3MzlkZDZhZGNiNWZj Li5iZjdkNDkyZjU0NmM3IDEwMDY0NAotLS0gYS9zcmMvY29kaW5nLmMKKysrIGIvc3JjL2NvZGlu Zy5jCkBAIC0xMTY1MCw3ICsxMTY1MCw3IEBAIHN5bXNfb2ZfY29kaW5nICh2b2lkKQogICBWY29k ZV9jb252ZXJzaW9uX3JldXNlZF93b3JrYnVmID0gUW5pbDsKIAogICBzdGF0aWNwcm8gKCZWY29k ZV9jb252ZXJzaW9uX3dvcmtidWZfbmFtZSk7Ci0gIFZjb2RlX2NvbnZlcnNpb25fd29ya2J1Zl9u YW1lID0gYnVpbGRfcHVyZV9jX3N0cmluZyAoIiAqY29kZS1jb252ZXJzaW9uLXdvcmsqIik7Cisg IFZjb2RlX2NvbnZlcnNpb25fd29ya2J1Zl9uYW1lID0gYnVpbGRfc3RyaW5nICgiICpjb2RlLWNv bnZlcnNpb24td29yayoiKTsKIAogICByZXVzZWRfd29ya2J1Zl9pbl91c2UgPSBmYWxzZTsKICAg UERVTVBFUl9SRU1FTUJFUl9TQ0FMQVIgKHJldXNlZF93b3JrYnVmX2luX3VzZSk7CkBAIC0xMTcx NCw5ICsxMTcxNCw5IEBAIHN5bXNfb2ZfY29kaW5nICh2b2lkKQogICAvKiBFcnJvciBzaWduYWxl ZCB3aGVuIHRoZXJlJ3MgYSBwcm9ibGVtIHdpdGggZGV0ZWN0aW5nIGEgY29kaW5nIHN5c3RlbS4g ICovCiAgIERFRlNZTSAoUWNvZGluZ19zeXN0ZW1fZXJyb3IsICJjb2Rpbmctc3lzdGVtLWVycm9y Iik7CiAgIEZwdXQgKFFjb2Rpbmdfc3lzdGVtX2Vycm9yLCBRZXJyb3JfY29uZGl0aW9ucywKLQlw dXJlX2xpc3QgKFFjb2Rpbmdfc3lzdGVtX2Vycm9yLCBRZXJyb3IpKTsKKwlsaXN0IChRY29kaW5n X3N5c3RlbV9lcnJvciwgUWVycm9yKSk7CiAgIEZwdXQgKFFjb2Rpbmdfc3lzdGVtX2Vycm9yLCBR ZXJyb3JfbWVzc2FnZSwKLQlidWlsZF9wdXJlX2Nfc3RyaW5nICgiSW52YWxpZCBjb2Rpbmcgc3lz dGVtIikpOworCWJ1aWxkX3N0cmluZyAoIkludmFsaWQgY29kaW5nIHN5c3RlbSIpKTsKIAogICBE RUZTWU0gKFF0cmFuc2xhdGlvbl90YWJsZSwgInRyYW5zbGF0aW9uLXRhYmxlIik7CiAgIEZwdXQg KFF0cmFuc2xhdGlvbl90YWJsZSwgUWNoYXJfdGFibGVfZXh0cmFfc2xvdHMsIG1ha2VfZml4bnVt ICgyKSk7CkBAIC0xMTk5MSwyMiArMTE5OTEsMjIgQEAgc3ltc19vZl9jb2RpbmcgKHZvaWQpCiAg IERFRlZBUl9MSVNQICgiZW9sLW1uZW1vbmljLXVuaXgiLCBlb2xfbW5lbW9uaWNfdW5peCwKIAkg ICAgICAgZG9jOiAvKgogU3RyaW5nIGRpc3BsYXllZCBpbiBtb2RlIGxpbmUgZm9yIFVOSVgtbGlr ZSAoTEYpIGVuZC1vZi1saW5lIGZvcm1hdC4gICovKTsKLSAgZW9sX21uZW1vbmljX3VuaXggPSBi dWlsZF9wdXJlX2Nfc3RyaW5nICgiOiIpOworICBlb2xfbW5lbW9uaWNfdW5peCA9IGJ1aWxkX3N0 cmluZyAoIjoiKTsKIAogICBERUZWQVJfTElTUCAoImVvbC1tbmVtb25pYy1kb3MiLCBlb2xfbW5l bW9uaWNfZG9zLAogCSAgICAgICBkb2M6IC8qCiBTdHJpbmcgZGlzcGxheWVkIGluIG1vZGUgbGlu ZSBmb3IgRE9TLWxpa2UgKENSTEYpIGVuZC1vZi1saW5lIGZvcm1hdC4gICovKTsKLSAgZW9sX21u ZW1vbmljX2RvcyA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJcXCIpOworICBlb2xfbW5lbW9uaWNf ZG9zID0gYnVpbGRfc3RyaW5nICgiXFwiKTsKIAogICBERUZWQVJfTElTUCAoImVvbC1tbmVtb25p Yy1tYWMiLCBlb2xfbW5lbW9uaWNfbWFjLAogCSAgICAgICBkb2M6IC8qCiBTdHJpbmcgZGlzcGxh eWVkIGluIG1vZGUgbGluZSBmb3IgTUFDLWxpa2UgKENSKSBlbmQtb2YtbGluZSBmb3JtYXQuICAq Lyk7Ci0gIGVvbF9tbmVtb25pY19tYWMgPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiLyIpOworICBl b2xfbW5lbW9uaWNfbWFjID0gYnVpbGRfc3RyaW5nICgiLyIpOwogCiAgIERFRlZBUl9MSVNQICgi ZW9sLW1uZW1vbmljLXVuZGVjaWRlZCIsIGVvbF9tbmVtb25pY191bmRlY2lkZWQsCiAJICAgICAg IGRvYzogLyoKIFN0cmluZyBkaXNwbGF5ZWQgaW4gbW9kZSBsaW5lIHdoZW4gZW5kLW9mLWxpbmUg Zm9ybWF0IGlzIG5vdCB5ZXQgZGV0ZXJtaW5lZC4gICovKTsKLSAgZW9sX21uZW1vbmljX3VuZGVj aWRlZCA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCI6Iik7CisgIGVvbF9tbmVtb25pY191bmRlY2lk ZWQgPSBidWlsZF9zdHJpbmcgKCI6Iik7CiAKICAgREVGVkFSX0xJU1AgKCJlbmFibGUtY2hhcmFj dGVyLXRyYW5zbGF0aW9uIiwgVmVuYWJsZV9jaGFyYWN0ZXJfdHJhbnNsYXRpb24sCiAJICAgICAg IGRvYzogLyoKQEAgLTEyMTQ2LDcgKzEyMTQ2LDcgQEAgc3lzdGVtIChlLmcuIGBpc28tMjAyMi03 Yml0JykuCiAgICAgICBpbnRlcm5fY19zdHJpbmcgKCI6Zm9yLXVuaWJ5dGUiKSwKICAgICAgIGFy Z3NbY29kaW5nX2FyZ19mb3JfdW5pYnl0ZV0gPSBRdCwKICAgICAgIGludGVybl9jX3N0cmluZyAo Ijpkb2NzdHJpbmciKSwKLSAgICAgIChidWlsZF9wdXJlX2Nfc3RyaW5nCisgICAgICAoYnVpbGRf c3RyaW5nCiAgICAgICAgKCJEbyBubyBjb252ZXJzaW9uLlxuIgogCSJcbiIKIAkiV2hlbiB5b3Ug dmlzaXQgYSBmaWxlIHdpdGggdGhpcyBjb2RpbmcsIHRoZSBmaWxlIGlzIHJlYWQgaW50byBhXG4i CkBAIC0xMjE2Niw3ICsxMjE2Niw3IEBAIHN5c3RlbSAoZS5nLiBgaXNvLTIwMjItN2JpdCcpLgog ICBwbGlzdFs4XSA9IGludGVybl9jX3N0cmluZyAoIjpjaGFyc2V0LWxpc3QiKTsKICAgcGxpc3Rb OV0gPSBhcmdzW2NvZGluZ19hcmdfY2hhcnNldF9saXN0XSA9IGxpc3QxIChRYXNjaWkpOwogICBw bGlzdFsxMV0gPSBhcmdzW2NvZGluZ19hcmdfZm9yX3VuaWJ5dGVdID0gUW5pbDsKLSAgcGxpc3Rb MTNdID0gYnVpbGRfcHVyZV9jX3N0cmluZyAoIk5vIGNvbnZlcnNpb24gb24gZW5jb2RpbmcsICIK KyAgcGxpc3RbMTNdID0gYnVpbGRfc3RyaW5nICgiTm8gY29udmVyc2lvbiBvbiBlbmNvZGluZywg IgogCQkJCSAgICJhdXRvbWF0aWMgY29udmVyc2lvbiBvbiBkZWNvZGluZy4iKTsKICAgcGxpc3Rb MTVdID0gYXJnc1tjb2RpbmdfYXJnX2VvbF90eXBlXSA9IFFuaWw7CiAgIGFyZ3NbY29kaW5nX2Fy Z19wbGlzdF0gPSBDQUxMTUFOWSAoRmxpc3QsIHBsaXN0KTsKZGlmZiAtLWdpdCBhL3NyYy9jb25m X3Bvc3QuaCBiL3NyYy9jb25mX3Bvc3QuaAppbmRleCAxNzZhYjI4YjIxYWIyLi5kYTU1YTFmYjU0 YWJjIDEwMDY0NAotLS0gYS9zcmMvY29uZl9wb3N0LmgKKysrIGIvc3JjL2NvbmZfcG9zdC5oCkBA IC0xNjMsNDEgKzE2Myw4IEBAICNkZWZpbmUgZW1hY3NfcmFpc2Uoc2lnKSBtc2Rvc19mYXRhbF9z aWduYWwgKHNpZykKIAogLyogREFUQV9TVEFSVCBpcyBuZWVkZWQgYnkgdm0tbGltaXQuYyBhbmQg dW5leGNvZmYuYy4gKi8KICNkZWZpbmUgREFUQV9TVEFSVCAoJmV0ZXh0ICsgMSkKLQotLyogRGVm aW5lIG9uZSBvZiB0aGVzZSBmb3IgZWFzaWVyIGNvbmRpdGlvbmFscy4gICovCi0jaWZkZWYgSEFW RV9YX1dJTkRPV1MKLS8qIFdlIG5lZWQgYSBsaXR0bGUgZXh0cmEgc3BhY2UsIHNlZSAuLi8uLi9s aXNwL2xvYWR1cC5lbCBhbmQgdGhlCi0gICBjb21tZW50YXJ5IGJlbG93LCBpbiB0aGUgbm9uLVgg YnJhbmNoLiAgVGhlIDE0MEtCIG51bWJlciB3YXMKLSAgIG1lYXN1cmVkIG9uIEdOVS9MaW51eCBh bmQgb24gTVMtV2luZG93cy4gICovCi0jZGVmaW5lIFNZU1RFTV9QVVJFU0laRV9FWFRSQSAoLTE3 MDAwMCsxNDAwMDApCi0jZWxzZQotLyogV2UgbmVlZCBhIGxpdHRsZSBleHRyYSBzcGFjZSwgc2Vl IC4uLy4uL2xpc3AvbG9hZHVwLmVsLgotICAgQXMgb2YgMjAwOTEwMjQsIERPUy1zcGVjaWZpYyBm aWxlcyB1c2UgdXAgNjJLQiBvZiBwdXJlIHNwYWNlLiAgQnV0Ci0gICBvdmVyYWxsLCB3ZSBlbmQg dXAgd2FzdGluZyAxMzBLQiBvZiBwdXJlIHNwYWNlLCBiZWNhdXNlCi0gICBCQVNFX1BVUkVTSVpF IHN0YXJ0cyBhdCAxLjQ3TUIsIHdoaWxlIHdlIG5lZWQgb25seSAxLjNNQiAoaW5jbHVkaW5nCi0g ICBub24tRE9TIHNwZWNpZmljIGZpbGVzIGFuZCBsb2FkIGhpc3Rvcnk7IHRoZSBsYXR0ZXIgaXMg YWJvdXQgNTVLLAotICAgYnV0IGRlcGVuZHMgb24gdGhlIGRlcHRoIG9mIHRoZSB0b3AtbGV2ZWwg RW1hY3MgZGlyZWN0b3J5IGluIHRoZQotICAgZGlyZWN0b3J5IHRyZWUpLiAgR2l2ZW4gdGhlIHVu a25vd24gcG9saWN5IG9mIGRpZmZlcmVudCBEUE1JCi0gICBob3N0cyByZWdhcmRpbmcgbG9hZGlu ZyBvZiB1bnRvdWNoZWQgcGFnZXMsIEknbSBub3QgZ29pbmcgdG8gcmlzawotICAgZW5sYXJnaW5n IEVtYWNzIGZvb3RwcmludCBieSBhbm90aGVyIDEwMCsgS0J5dGVzLiAgKi8KLSNkZWZpbmUgU1lT VEVNX1BVUkVTSVpFX0VYVFJBICgtMTcwMDAwKzkwMDAwKQotI2VuZGlmCiAjZW5kaWYgIC8qIE1T RE9TICovCiAKLS8qIG1hY09TIC8gR05Vc3RlcCBuZWVkIGEgYml0IG1vcmUgcHVyZSBtZW1vcnku ICBPZiB0aGUgZXhpc3Rpbmcga25vYnMsCi0gICBTWVNURU1fUFVSRVNJWkVfRVhUUkEgc2VlbXMg bGlrZSB0aGUgbGVhc3QgbGlrZWx5IHRvIGNhdXNlIHByb2JsZW1zLiAgKi8KLSNpZmRlZiBIQVZF X05TCi0jaWYgZGVmaW5lZCBOU19JTVBMX0dOVVNURVAKLSMgIGRlZmluZSBTWVNURU1fUFVSRVNJ WkVfRVhUUkEgMzAwMDAKLSNlbGlmIGRlZmluZWQgREFSV0lOX09TCi0jICBkZWZpbmUgU1lTVEVN X1BVUkVTSVpFX0VYVFJBIDIwMDAwMAotI2VuZGlmCi0jZW5kaWYKLQotI2lmZGVmIENZR1dJTgot I2RlZmluZSBTWVNURU1fUFVSRVNJWkVfRVhUUkEgNTAwMDAKLSNlbmRpZgotCiAjaWYgZGVmaW5l ZCBIQVZFX05UR1VJICYmICFkZWZpbmVkIERlYlByaW50CiAjIGlmZGVmIEVNQUNTREVCVUcKIGV4 dGVybiB2b2lkIF9EZWJQcmludCAoY29uc3QgY2hhciAqZm10LCAuLi4pOwpkaWZmIC0tZ2l0IGEv c3JjL2RhdGEuYyBiL3NyYy9kYXRhLmMKaW5kZXggMGZhNDkxYjE3YTExNC4uMmE4YzcyNDZmYWU2 NSAxMDA2NDQKLS0tIGEvc3JjL2RhdGEuYworKysgYi9zcmMvZGF0YS5jCkBAIC0zMCw3ICszMCw2 IEBACiAKICNpbmNsdWRlICJsaXNwLmgiCiAjaW5jbHVkZSAiYmlnbnVtLmgiCi0jaW5jbHVkZSAi cHVyZXNpemUuaCIKICNpbmNsdWRlICJjaGFyYWN0ZXIuaCIKICNpbmNsdWRlICJidWZmZXIuaCIK ICNpbmNsdWRlICJrZXlib2FyZC5oIgpAQCAtMTQ5LDEyICsxNDgsNiBAQCB3cm9uZ190eXBlX2Fy Z3VtZW50IChMaXNwX09iamVjdCBwcmVkaWNhdGUsIExpc3BfT2JqZWN0IHZhbHVlKQogICB4c2ln bmFsMiAoUXdyb25nX3R5cGVfYXJndW1lbnQsIHByZWRpY2F0ZSwgdmFsdWUpOwogfQogCi12b2lk Ci1wdXJlX3dyaXRlX2Vycm9yIChMaXNwX09iamVjdCBvYmopCi17Ci0gIHhzaWduYWwyIChRZXJy b3IsIGJ1aWxkX3N0cmluZyAoIkF0dGVtcHQgdG8gbW9kaWZ5IHJlYWQtb25seSBvYmplY3QiKSwg b2JqKTsKLX0KLQogdm9pZAogYXJnc19vdXRfb2ZfcmFuZ2UgKExpc3BfT2JqZWN0IGExLCBMaXNw X09iamVjdCBhMikKIHsKQEAgLTYyNSw3ICs2MTgsNiBAQCBERUZVTiAoInNldGNhciIsIEZzZXRj YXIsIFNzZXRjYXIsIDIsIDIsIDAsCiAgIChyZWdpc3RlciBMaXNwX09iamVjdCBjZWxsLCBMaXNw X09iamVjdCBuZXdjYXIpCiB7CiAgIENIRUNLX0NPTlMgKGNlbGwpOwotICBDSEVDS19JTVBVUkUg KGNlbGwsIFhDT05TIChjZWxsKSk7CiAgIFhTRVRDQVIgKGNlbGwsIG5ld2Nhcik7CiAgIHJldHVy biBuZXdjYXI7CiB9CkBAIC02MzUsNyArNjI3LDYgQEAgREVGVU4gKCJzZXRjZHIiLCBGc2V0Y2Ry LCBTc2V0Y2RyLCAyLCAyLCAwLAogICAocmVnaXN0ZXIgTGlzcF9PYmplY3QgY2VsbCwgTGlzcF9P YmplY3QgbmV3Y2RyKQogewogICBDSEVDS19DT05TIChjZWxsKTsKLSAgQ0hFQ0tfSU1QVVJFIChj ZWxsLCBYQ09OUyAoY2VsbCkpOwogICBYU0VUQ0RSIChjZWxsLCBuZXdjZHIpOwogICByZXR1cm4g bmV3Y2RyOwogfQpAQCAtNzk4LDEwICs3ODksNiBAQCBERUZVTiAoImRlZmFsaWFzIiwgRmRlZmFs aWFzLCBTZGVmYWxpYXMsIDIsIDMsIDAsCiAgIChyZWdpc3RlciBMaXNwX09iamVjdCBzeW1ib2ws IExpc3BfT2JqZWN0IGRlZmluaXRpb24sIExpc3BfT2JqZWN0IGRvY3N0cmluZykKIHsKICAgQ0hF Q0tfU1lNQk9MIChzeW1ib2wpOwotICBpZiAoIU5JTFAgKFZwdXJpZnlfZmxhZykKLSAgICAgIC8q IElmIGBkZWZpbml0aW9uJyBpcyBhIGtleW1hcCwgaW1tdXRhYmxlIChhbmQgY29weWluZykgaXMg d3JvbmcuICAqLwotICAgICAgJiYgIUtFWU1BUFAgKGRlZmluaXRpb24pKQotICAgIGRlZmluaXRp b24gPSBGcHVyZWNvcHkgKGRlZmluaXRpb24pOwogCiAgIHsKICAgICBib29sIGF1dG9sb2FkID0g QVVUT0xPQURQIChkZWZpbml0aW9uKTsKQEAgLTIzNzUsNyArMjM2Miw2IEBAIERFRlVOICgiYXNl dCIsIEZhc2V0LCBTYXNldCwgMywgMywgMCwKIAogICBpZiAoVkVDVE9SUCAoYXJyYXkpKQogICAg IHsKLSAgICAgIENIRUNLX0lNUFVSRSAoYXJyYXksIFhWRUNUT1IgKGFycmF5KSk7CiAgICAgICBp ZiAoaWR4dmFsIDwgMCB8fCBpZHh2YWwgPj0gQVNJWkUgKGFycmF5KSkKIAlhcmdzX291dF9vZl9y YW5nZSAoYXJyYXksIGlkeCk7CiAgICAgICBBU0VUIChhcnJheSwgaWR4dmFsLCBuZXdlbHQpOwpA QCAtMjM5OSw3ICsyMzg1LDYgQEAgREVGVU4gKCJhc2V0IiwgRmFzZXQsIFNhc2V0LCAzLCAzLCAw LAogICAgIH0KICAgZWxzZSAvKiBTVFJJTkdQICovCiAgICAgewotICAgICAgQ0hFQ0tfSU1QVVJF IChhcnJheSwgWFNUUklORyAoYXJyYXkpKTsKICAgICAgIGlmIChpZHh2YWwgPCAwIHx8IGlkeHZh bCA+PSBTQ0hBUlMgKGFycmF5KSkKIAlhcmdzX291dF9vZl9yYW5nZSAoYXJyYXksIGlkeCk7CiAg ICAgICBDSEVDS19DSEFSQUNURVIgKG5ld2VsdCk7CkBAIC0zODgxLDcgKzM4NjYsNyBAQCBzeW1z X29mX2RhdGEgKHZvaWQpCiAKICAgREVGU1lNIChRY2RyLCAiY2RyIik7CiAKLSAgZXJyb3JfdGFp bCA9IHB1cmVfY29ucyAoUWVycm9yLCBRbmlsKTsKKyAgZXJyb3JfdGFpbCA9IEZjb25zIChRZXJy b3IsIFFuaWwpOwogCiAgIC8qIEVSUk9SIGlzIHVzZWQgYXMgYSBzaWduYWxlciBmb3IgcmFuZG9t IGVycm9ycyBmb3Igd2hpY2ggbm90aGluZyBlbHNlIGlzCiAgICAgIHJpZ2h0LiAgKi8KQEAgLTM4 ODksMTEgKzM4NzQsMTEgQEAgc3ltc19vZl9kYXRhICh2b2lkKQogICBGcHV0IChRZXJyb3IsIFFl cnJvcl9jb25kaXRpb25zLAogCWVycm9yX3RhaWwpOwogICBGcHV0IChRZXJyb3IsIFFlcnJvcl9t ZXNzYWdlLAotCWJ1aWxkX3B1cmVfY19zdHJpbmcgKCJlcnJvciIpKTsKKwlidWlsZF9zdHJpbmcg KCJlcnJvciIpKTsKIAogI2RlZmluZSBQVVRfRVJST1Ioc3ltLCB0YWlsLCBtc2cpCQkJXAotICBG cHV0IChzeW0sIFFlcnJvcl9jb25kaXRpb25zLCBwdXJlX2NvbnMgKHN5bSwgdGFpbCkpOyBcCi0g IEZwdXQgKHN5bSwgUWVycm9yX21lc3NhZ2UsIGJ1aWxkX3B1cmVfY19zdHJpbmcgKG1zZykpCisg IEZwdXQgKHN5bSwgUWVycm9yX2NvbmRpdGlvbnMsIEZjb25zIChzeW0sIHRhaWwpKTsgXAorICBG cHV0IChzeW0sIFFlcnJvcl9tZXNzYWdlLCBidWlsZF9zdHJpbmcgKG1zZykpCiAKICAgUFVUX0VS Uk9SIChRcXVpdCwgUW5pbCwgIlF1aXQiKTsKIApAQCAtMzkyMSwxNCArMzkwNiwxNCBAQCAjZGVm aW5lIFBVVF9FUlJPUihzeW0sIHRhaWwsIG1zZykJCQlcCiAgIFBVVF9FUlJPUiAoUW5vX2NhdGNo LCBlcnJvcl90YWlsLCAiTm8gY2F0Y2ggZm9yIHRhZyIpOwogICBQVVRfRVJST1IgKFFlbmRfb2Zf ZmlsZSwgZXJyb3JfdGFpbCwgIkVuZCBvZiBmaWxlIGR1cmluZyBwYXJzaW5nIik7CiAKLSAgYXJp dGhfdGFpbCA9IHB1cmVfY29ucyAoUWFyaXRoX2Vycm9yLCBlcnJvcl90YWlsKTsKKyAgYXJpdGhf dGFpbCA9IEZjb25zIChRYXJpdGhfZXJyb3IsIGVycm9yX3RhaWwpOwogICBGcHV0IChRYXJpdGhf ZXJyb3IsIFFlcnJvcl9jb25kaXRpb25zLCBhcml0aF90YWlsKTsKLSAgRnB1dCAoUWFyaXRoX2Vy cm9yLCBRZXJyb3JfbWVzc2FnZSwgYnVpbGRfcHVyZV9jX3N0cmluZyAoIkFyaXRobWV0aWMgZXJy b3IiKSk7CisgIEZwdXQgKFFhcml0aF9lcnJvciwgUWVycm9yX21lc3NhZ2UsIGJ1aWxkX3N0cmlu ZyAoIkFyaXRobWV0aWMgZXJyb3IiKSk7CiAKICAgUFVUX0VSUk9SIChRYmVnaW5uaW5nX29mX2J1 ZmZlciwgZXJyb3JfdGFpbCwgIkJlZ2lubmluZyBvZiBidWZmZXIiKTsKICAgUFVUX0VSUk9SIChR ZW5kX29mX2J1ZmZlciwgZXJyb3JfdGFpbCwgIkVuZCBvZiBidWZmZXIiKTsKICAgUFVUX0VSUk9S IChRYnVmZmVyX3JlYWRfb25seSwgZXJyb3JfdGFpbCwgIkJ1ZmZlciBpcyByZWFkLW9ubHkiKTsK LSAgUFVUX0VSUk9SIChRdGV4dF9yZWFkX29ubHksIHB1cmVfY29ucyAoUWJ1ZmZlcl9yZWFkX29u bHksIGVycm9yX3RhaWwpLAorICBQVVRfRVJST1IgKFF0ZXh0X3JlYWRfb25seSwgRmNvbnMgKFFi dWZmZXJfcmVhZF9vbmx5LCBlcnJvcl90YWlsKSwKIAkgICAgICJUZXh0IGlzIHJlYWQtb25seSIp OwogICBQVVRfRVJST1IgKFFpbmhpYml0ZWRfaW50ZXJhY3Rpb24sIGVycm9yX3RhaWwsCiAJICAg ICAiVXNlciBpbnRlcmFjdGlvbiB3aGlsZSBpbmhpYml0ZWQiKTsKZGlmZiAtLWdpdCBhL3NyYy9k YnVzYmluZC5jIGIvc3JjL2RidXNiaW5kLmMKaW5kZXggYzAwNTQ3NGQ0NDA5Zi4uMjM4MTQyYjk1 NjA2YyAxMDA2NDQKLS0tIGEvc3JjL2RidXNiaW5kLmMKKysrIGIvc3JjL2RidXNiaW5kLmMKQEAg LTE4NjgsNyArMTg2OCw3IEBAIHN5bXNfb2ZfZGJ1c2JpbmQgKHZvaWQpCiAgIEZwdXQgKFFkYnVz X2Vycm9yLCBRZXJyb3JfY29uZGl0aW9ucywKIAlsaXN0MiAoUWRidXNfZXJyb3IsIFFlcnJvcikp OwogICBGcHV0IChRZGJ1c19lcnJvciwgUWVycm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0 cmluZyAoIkQtQnVzIGVycm9yIikpOworCWJ1aWxkX3N0cmluZyAoIkQtQnVzIGVycm9yIikpOwog CiAgIC8qIExpc3Agc3ltYm9scyBvZiB0aGUgc3lzdGVtIGFuZCBzZXNzaW9uIGJ1c2VzLiAgKi8K ICAgREVGU1lNIChRQ3N5c3RlbSwgIjpzeXN0ZW0iKTsKQEAgLTE5MTEsNyArMTkxMSw3IEBAIHN5 bXNfb2ZfZGJ1c2JpbmQgKHZvaWQpCiAJICAgICAgIFZkYnVzX2NvbXBpbGVkX3ZlcnNpb24sCiAg ICAgZG9jOiAvKiBUaGUgdmVyc2lvbiBvZiBELUJ1cyBFbWFjcyBpcyBjb21waWxlZCBhZ2FpbnN0 LiAgKi8pOwogI2lmZGVmIERCVVNfVkVSU0lPTl9TVFJJTkcKLSAgVmRidXNfY29tcGlsZWRfdmVy c2lvbiA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKERCVVNfVkVSU0lPTl9TVFJJTkcpOworICBWZGJ1 c19jb21waWxlZF92ZXJzaW9uID0gYnVpbGRfc3RyaW5nIChEQlVTX1ZFUlNJT05fU1RSSU5HKTsK ICNlbHNlCiAgIFZkYnVzX2NvbXBpbGVkX3ZlcnNpb24gPSBRbmlsOwogI2VuZGlmCmRpZmYgLS1n aXQgYS9zcmMvZGVwcy5tayBiL3NyYy9kZXBzLm1rCmluZGV4IGVkYTJlZDYzMzgyNTIuLjMyOTJj ZjIwMWNmNzQgMTAwNjQ0Ci0tLSBhL3NyYy9kZXBzLm1rCisrKyBiL3NyYy9kZXBzLm1rCkBAIC0x MzIsMTAgKzEzMiwxMCBAQCBpbnNkZWwubzoKIGtleWJvYXJkLm86IGtleWJvYXJkLmMgdGVybWNo YXIuaCB0ZXJtaG9va3MuaCB0ZXJtb3B0cy5oIGJ1ZmZlci5oIGNoYXJhY3Rlci5oIFwKICAgIGNv bW1hbmRzLmggZnJhbWUuaCB3aW5kb3cuaCBtYWNyb3MuaCBkaXNwdGFiLmgga2V5Ym9hcmQuaCBz eXNzaWduYWwuaCBcCiAgICBzeXN0aW1lLmggc3ludGF4LmggJChJTlRFUlZBTFNfSCkgYmxvY2tp bnB1dC5oIGF0aW1lci5oIGNvbXBvc2l0ZS5oIFwKLSAgIHh0ZXJtLmggcHVyZXNpemUuaCBtc2Rv cy5oIGtleW1hcC5oIHczMnRlcm0uaCBuc3Rlcm0uaCBuc2d1aS5oIGNvZGluZy5oIFwKKyAgIHh0 ZXJtLmggbXNkb3MuaCBrZXltYXAuaCB3MzJ0ZXJtLmggbnN0ZXJtLmggbnNndWkuaCBjb2Rpbmcu aCBcCiAgICBwcm9jZXNzLmggLi4vbGliL3VuaXN0ZC5oIGdudXRscy5oIGxpc3AuaCBnbG9iYWxz LmggJChjb25maWdfaCkKIGtleW1hcC5vOiBrZXltYXAuYyBidWZmZXIuaCBjb21tYW5kcy5oIGtl eWJvYXJkLmggdGVybWhvb2tzLmggYmxvY2tpbnB1dC5oIFwKLSAgIGF0aW1lci5oIHN5c3RpbWUu aCBwdXJlc2l6ZS5oIGNoYXJhY3Rlci5oIGNoYXJzZXQuaCAkKElOVEVSVkFMU19IKSBcCisgICBh dGltZXIuaCBzeXN0aW1lLmggY2hhcmFjdGVyLmggY2hhcnNldC5oICQoSU5URVJWQUxTX0gpIFwK ICAgIGtleW1hcC5oIHdpbmRvdy5oIGNvZGluZy5oIGZyYW1lLmggbGlzcC5oIGdsb2JhbHMuaCAk KGNvbmZpZ19oKQogbGFzdGZpbGUubzogbGFzdGZpbGUuYyAkKGNvbmZpZ19oKQogbWFjcm9zLm86 IG1hY3Jvcy5jIHdpbmRvdy5oIGJ1ZmZlci5oIGNvbW1hbmRzLmggbWFjcm9zLmgga2V5Ym9hcmQu aCBtc2Rvcy5oIFwKQEAgLTI2NywxMiArMjY3LDEyIEBAIHhzZXR0aW5ncy5vOgogICAgYXRpbWVy LmggdGVybW9wdHMuaCBnbG9iYWxzLmgKIAogIyMgVGhlIGZpbGVzIG9mIExpc3AgcHJvcGVyLgot YWxsb2MubzogYWxsb2MuYyBwcm9jZXNzLmggZnJhbWUuaCB3aW5kb3cuaCBidWZmZXIuaCAgcHVy ZXNpemUuaCBzeXNzaWduYWwuaCBcCithbGxvYy5vOiBhbGxvYy5jIHByb2Nlc3MuaCBmcmFtZS5o IHdpbmRvdy5oIGJ1ZmZlci5oIHN5c3NpZ25hbC5oIFwKICAgIGtleWJvYXJkLmggYmxvY2tpbnB1 dC5oIGF0aW1lci5oIHN5c3RpbWUuaCBjaGFyYWN0ZXIuaCBsaXNwLmggJChjb25maWdfaCkgXAog ICAgJChJTlRFUlZBTFNfSCkgdGVybWhvb2tzLmggZ251dGxzLmggY29kaW5nLmggLi4vbGliL3Vu aXN0ZC5oIGdsb2JhbHMuaAogYnl0ZWNvZGUubzogYnl0ZWNvZGUuYyBidWZmZXIuaCBzeW50YXgu aCBjaGFyYWN0ZXIuaCB3aW5kb3cuaCBkaXNwZXh0ZXJuLmggXAogICBsaXNwLmggZ2xvYmFscy5o ICQoY29uZmlnX2gpIG1zZG9zLmgKLWRhdGEubzogZGF0YS5jIGJ1ZmZlci5oIHB1cmVzaXplLmgg Y2hhcmFjdGVyLmggc3lzc2lnbmFsLmgga2V5Ym9hcmQuaCBmcmFtZS5oIFwKK2RhdGEubzogZGF0 YS5jIGJ1ZmZlci5oIGNoYXJhY3Rlci5oIHN5c3NpZ25hbC5oIGtleWJvYXJkLmggZnJhbWUuaCBc CiAgICB0ZXJtaG9va3MuaCBzeXN0aW1lLmggY29kaW5nLmggY29tcG9zaXRlLmggZGlzcGV4dGVy bi5oIGZvbnQuaCBjY2wuaCBcCiAgICBsaXNwLmggZ2xvYmFscy5oICQoY29uZmlnX2gpIG1zZG9z LmgKIGV2YWwubzogZXZhbC5jIGNvbW1hbmRzLmgga2V5Ym9hcmQuaCBibG9ja2lucHV0LmggYXRp bWVyLmggc3lzdGltZS5oIGZyYW1lLmggXApAQCAtMjk1LDcgKzI5NSw3IEBAIGxyZWFkLm86CiBj b21wb3NpdGUubzogY29tcG9zaXRlLmMgY29tcG9zaXRlLmggYnVmZmVyLmggY2hhcmFjdGVyLmgg Y29kaW5nLmggZm9udC5oIFwKICAgIGNjbC5oIGZyYW1lLmggdGVybWhvb2tzLmggJChJTlRFUlZB TFNfSCkgd2luZG93LmggXAogICAgbGlzcC5oIGdsb2JhbHMuaCAkKGNvbmZpZ19oKQotaW50ZXJ2 YWxzLm86IGludGVydmFscy5jIGJ1ZmZlci5oICQoSU5URVJWQUxTX0gpIGtleWJvYXJkLmggcHVy ZXNpemUuaCBcCitpbnRlcnZhbHMubzogaW50ZXJ2YWxzLmMgYnVmZmVyLmggJChJTlRFUlZBTFNf SCkga2V5Ym9hcmQuaCBcCiAgICBrZXltYXAuaCBsaXNwLmggZ2xvYmFscy5oICQoY29uZmlnX2gp IHN5c3RpbWUuaCBjb2RpbmcuaAogdGV4dHByb3AubzogdGV4dHByb3AuYyBidWZmZXIuaCB3aW5k b3cuaCAkKElOVEVSVkFMU19IKSBcCiAgICBsaXNwLmggZ2xvYmFscy5oICQoY29uZmlnX2gpCmRp ZmYgLS1naXQgYS9zcmMvZG9jLmMgYi9zcmMvZG9jLmMKaW5kZXggMTMwN2FhNWVlOTIzMy4uMjEz NmY5MTQyOTdkZCAxMDA2NDQKLS0tIGEvc3JjL2RvYy5jCisrKyBiL3NyYy9kb2MuYwpAQCAtNDkw LDggKzQ5MCw2IEBAIHN0b3JlX2Z1bmN0aW9uX2RvY3N0cmluZyAoTGlzcF9PYmplY3Qgb2JqLCBF TUFDU19JTlQgb2Zmc2V0KQogCXsKIAkgIHRlbSA9IEZjZHIgKEZjZHIgKGZ1bikpOwogCSAgaWYg KENPTlNQICh0ZW0pICYmIEZJWE5VTVAgKFhDQVIgKHRlbSkpKQotCSAgICAvKiBGSVhNRTogVGhp cyBtb2RpZmllcyB0eXBpY2FsbHkgcHVyZSBoYXNoLWNvbnMnZCBkYXRhLCBzbyBpdHMKLQkgICAg ICAgY29ycmVjdG5lc3MgaXMgcXVpdGUgZGVsaWNhdGUuICAqLwogCSAgICBYU0VUQ0FSICh0ZW0s IG1ha2VfZml4bnVtIChvZmZzZXQpKTsKIAl9CiAgICAgfQpAQCAtNTc1LDcgKzU3Myw2IEBAIERF RlVOICgiU25hcmYtZG9jdW1lbnRhdGlvbiIsIEZzbmFyZl9kb2N1bWVudGF0aW9uLCBTc25hcmZf ZG9jdW1lbnRhdGlvbiwKICAgICAgIGludCBpID0gQVJSQVlFTFRTIChidWlsZG9iaik7CiAgICAg ICB3aGlsZSAoMCA8PSAtLWkpCiAJVmJ1aWxkX2ZpbGVzID0gRmNvbnMgKGJ1aWxkX3N0cmluZyAo YnVpbGRvYmpbaV0pLCBWYnVpbGRfZmlsZXMpOwotICAgICAgVmJ1aWxkX2ZpbGVzID0gRnB1cmVj b3B5IChWYnVpbGRfZmlsZXMpOwogICAgIH0KIAogICBmZCA9IGVtYWNzX29wZW4gKG5hbWUsIE9f UkRPTkxZLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9lbWFjcy1tb2R1bGUuYyBiL3NyYy9lbWFjcy1t b2R1bGUuYwppbmRleCBmOGZiNTRjMDcyODIzLi44OTZhZTY1Njg1ZTg0IDEwMDY0NAotLS0gYS9z cmMvZW1hY3MtbW9kdWxlLmMKKysrIGIvc3JjL2VtYWNzLW1vZHVsZS5jCkBAIC0xNjAwLDQ0ICsx NjAwLDQ0IEBAIHN5bXNfb2ZfbW9kdWxlICh2b2lkKQogICBWbW9kdWxlX3JlZnNfaGFzaAogICAg ID0gbWFrZV9oYXNoX3RhYmxlIChoYXNodGVzdF9lcSwgREVGQVVMVF9IQVNIX1NJWkUsCiAJCSAg ICAgICBERUZBVUxUX1JFSEFTSF9TSVpFLCBERUZBVUxUX1JFSEFTSF9USFJFU0hPTEQsCi0JCSAg ICAgICBRbmlsLCBmYWxzZSk7CisJCSAgICAgICBRbmlsKTsKIAogICBERUZTWU0gKFFtb2R1bGVf bG9hZF9mYWlsZWQsICJtb2R1bGUtbG9hZC1mYWlsZWQiKTsKICAgRnB1dCAoUW1vZHVsZV9sb2Fk X2ZhaWxlZCwgUWVycm9yX2NvbmRpdGlvbnMsCi0JcHVyZV9saXN0IChRbW9kdWxlX2xvYWRfZmFp bGVkLCBRZXJyb3IpKTsKKwlsaXN0IChRbW9kdWxlX2xvYWRfZmFpbGVkLCBRZXJyb3IpKTsKICAg RnB1dCAoUW1vZHVsZV9sb2FkX2ZhaWxlZCwgUWVycm9yX21lc3NhZ2UsCi0gICAgICAgIGJ1aWxk X3B1cmVfY19zdHJpbmcgKCJNb2R1bGUgbG9hZCBmYWlsZWQiKSk7CisgICAgICAgIGJ1aWxkX3N0 cmluZyAoIk1vZHVsZSBsb2FkIGZhaWxlZCIpKTsKIAogICBERUZTWU0gKFFtb2R1bGVfb3Blbl9m YWlsZWQsICJtb2R1bGUtb3Blbi1mYWlsZWQiKTsKICAgRnB1dCAoUW1vZHVsZV9vcGVuX2ZhaWxl ZCwgUWVycm9yX2NvbmRpdGlvbnMsCi0JcHVyZV9saXN0IChRbW9kdWxlX29wZW5fZmFpbGVkLCBR bW9kdWxlX2xvYWRfZmFpbGVkLCBRZXJyb3IpKTsKKwlsaXN0IChRbW9kdWxlX29wZW5fZmFpbGVk LCBRbW9kdWxlX2xvYWRfZmFpbGVkLCBRZXJyb3IpKTsKICAgRnB1dCAoUW1vZHVsZV9vcGVuX2Zh aWxlZCwgUWVycm9yX21lc3NhZ2UsCi0gICAgICAgIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJNb2R1 bGUgY291bGQgbm90IGJlIG9wZW5lZCIpKTsKKyAgICAgICAgYnVpbGRfc3RyaW5nICgiTW9kdWxl IGNvdWxkIG5vdCBiZSBvcGVuZWQiKSk7CiAKICAgREVGU1lNIChRbW9kdWxlX25vdF9ncGxfY29t cGF0aWJsZSwgIm1vZHVsZS1ub3QtZ3BsLWNvbXBhdGlibGUiKTsKICAgRnB1dCAoUW1vZHVsZV9u b3RfZ3BsX2NvbXBhdGlibGUsIFFlcnJvcl9jb25kaXRpb25zLAotCXB1cmVfbGlzdCAoUW1vZHVs ZV9ub3RfZ3BsX2NvbXBhdGlibGUsIFFtb2R1bGVfbG9hZF9mYWlsZWQsIFFlcnJvcikpOworCWxp c3QgKFFtb2R1bGVfbm90X2dwbF9jb21wYXRpYmxlLCBRbW9kdWxlX2xvYWRfZmFpbGVkLCBRZXJy b3IpKTsKICAgRnB1dCAoUW1vZHVsZV9ub3RfZ3BsX2NvbXBhdGlibGUsIFFlcnJvcl9tZXNzYWdl LAotICAgICAgICBidWlsZF9wdXJlX2Nfc3RyaW5nICgiTW9kdWxlIGlzIG5vdCBHUEwgY29tcGF0 aWJsZSIpKTsKKyAgICAgICAgYnVpbGRfc3RyaW5nICgiTW9kdWxlIGlzIG5vdCBHUEwgY29tcGF0 aWJsZSIpKTsKIAogICBERUZTWU0gKFFtaXNzaW5nX21vZHVsZV9pbml0X2Z1bmN0aW9uLCAibWlz c2luZy1tb2R1bGUtaW5pdC1mdW5jdGlvbiIpOwogICBGcHV0IChRbWlzc2luZ19tb2R1bGVfaW5p dF9mdW5jdGlvbiwgUWVycm9yX2NvbmRpdGlvbnMsCi0JcHVyZV9saXN0IChRbWlzc2luZ19tb2R1 bGVfaW5pdF9mdW5jdGlvbiwgUW1vZHVsZV9sb2FkX2ZhaWxlZCwKLQkJICAgUWVycm9yKSk7CisJ bGlzdCAoUW1pc3NpbmdfbW9kdWxlX2luaXRfZnVuY3Rpb24sIFFtb2R1bGVfbG9hZF9mYWlsZWQs CisJICAgICAgUWVycm9yKSk7CiAgIEZwdXQgKFFtaXNzaW5nX21vZHVsZV9pbml0X2Z1bmN0aW9u LCBRZXJyb3JfbWVzc2FnZSwKLSAgICAgICAgYnVpbGRfcHVyZV9jX3N0cmluZyAoIk1vZHVsZSBk b2VzIG5vdCBleHBvcnQgYW4gIgorICAgICAgICBidWlsZF9zdHJpbmcgKCJNb2R1bGUgZG9lcyBu b3QgZXhwb3J0IGFuICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluaXRpYWxpemF0 aW9uIGZ1bmN0aW9uIikpOwogCiAgIERFRlNZTSAoUW1vZHVsZV9pbml0X2ZhaWxlZCwgIm1vZHVs ZS1pbml0LWZhaWxlZCIpOwogICBGcHV0IChRbW9kdWxlX2luaXRfZmFpbGVkLCBRZXJyb3JfY29u ZGl0aW9ucywKLQlwdXJlX2xpc3QgKFFtb2R1bGVfaW5pdF9mYWlsZWQsIFFtb2R1bGVfbG9hZF9m YWlsZWQsIFFlcnJvcikpOworCWxpc3QgKFFtb2R1bGVfaW5pdF9mYWlsZWQsIFFtb2R1bGVfbG9h ZF9mYWlsZWQsIFFlcnJvcikpOwogICBGcHV0IChRbW9kdWxlX2luaXRfZmFpbGVkLCBRZXJyb3Jf bWVzc2FnZSwKLSAgICAgICAgYnVpbGRfcHVyZV9jX3N0cmluZyAoIk1vZHVsZSBpbml0aWFsaXph dGlvbiBmYWlsZWQiKSk7CisgICAgICAgIGJ1aWxkX3N0cmluZyAoIk1vZHVsZSBpbml0aWFsaXph dGlvbiBmYWlsZWQiKSk7CiAKICAgREVGU1lNIChRaW52YWxpZF9hcml0eSwgImludmFsaWQtYXJp dHkiKTsKLSAgRnB1dCAoUWludmFsaWRfYXJpdHksIFFlcnJvcl9jb25kaXRpb25zLCBwdXJlX2xp c3QgKFFpbnZhbGlkX2FyaXR5LCBRZXJyb3IpKTsKKyAgRnB1dCAoUWludmFsaWRfYXJpdHksIFFl cnJvcl9jb25kaXRpb25zLCBsaXN0IChRaW52YWxpZF9hcml0eSwgUWVycm9yKSk7CiAgIEZwdXQg KFFpbnZhbGlkX2FyaXR5LCBRZXJyb3JfbWVzc2FnZSwKLSAgICAgICAgYnVpbGRfcHVyZV9jX3N0 cmluZyAoIkludmFsaWQgZnVuY3Rpb24gYXJpdHkiKSk7CisgICAgICAgIGJ1aWxkX3N0cmluZyAo IkludmFsaWQgZnVuY3Rpb24gYXJpdHkiKSk7CiAKICAgREVGU1lNIChRbW9kdWxlX2Z1bmN0aW9u X3AsICJtb2R1bGUtZnVuY3Rpb24tcCIpOwogICBERUZTWU0gKFF1bmljb2RlX3N0cmluZ19wLCAi dW5pY29kZS1zdHJpbmctcCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2VtYWNzLmMgYi9zcmMvZW1hY3Mu YwppbmRleCBmZDA4NjY3ZjNmZDRmLi4wM2VjNjM0NjRkYWY1IDEwMDY0NAotLS0gYS9zcmMvZW1h Y3MuYworKysgYi9zcmMvZW1hY3MuYwpAQCAtODgsNyArODgsNiBAQCAjZGVmaW5lIE1BSU5fUFJP R1JBTQogI2luY2x1ZGUgInN5bnRheC5oIgogI2luY2x1ZGUgInN5c3NlbGVjdC5oIgogI2luY2x1 ZGUgInN5c3RpbWUuaCIKLSNpbmNsdWRlICJwdXJlc2l6ZS5oIgogCiAjaW5jbHVkZSAiZ2V0cGFn ZXNpemUuaCIKICNpbmNsdWRlICJnbnV0bHMuaCIKQEAgLTE1NDQsNyArMTU0Myw5IEBAIG1haW4g KGludCBhcmdjLCBjaGFyICoqYXJndikKICAgaWYgKCFpbml0aWFsaXplZCkKICAgICB7CiAgICAg ICBpbml0X2FsbG9jX29uY2UgKCk7CisjaWZkZWYgSEFWRV9QRFVNUEVSCiAgICAgICBpbml0X3Bk dW1wZXJfb25jZSAoKTsKKyNlbmRpZgogICAgICAgaW5pdF9vYmFycmF5X29uY2UgKCk7CiAgICAg ICBpbml0X2V2YWxfb25jZSAoKTsKICAgICAgIGluaXRfY2hhcnNldF9vbmNlICgpOwpAQCAtMjUw OCw4ICsyNTA5LDYgQEAgREVGVU4gKCJkdW1wLWVtYWNzIiwgRmR1bXBfZW1hY3MsIFNkdW1wX2Vt YWNzLCAyLCAyLCAwLAogICBMaXNwX09iamVjdCBzeW1ib2w7CiAgIHB0cmRpZmZfdCBjb3VudCA9 IFNQRUNQRExfSU5ERVggKCk7CiAKLSAgY2hlY2tfcHVyZV9zaXplICgpOwotCiAgIGlmICghIG5v bmludGVyYWN0aXZlKQogICAgIGVycm9yICgiRHVtcGluZyBFbWFjcyB3b3JrcyBvbmx5IGluIGJh dGNoIG1vZGUiKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2V2YWwuYyBiL3NyYy9ldmFsLmMKaW5kZXgg ZGRhYThlZGQ4MTcwNi4uYzA3MTdmOGNmMTI0ZCAxMDA2NDQKLS0tIGEvc3JjL2V2YWwuYworKysg Yi9zcmMvZXZhbC5jCkBAIC03ODUsOCArNzg1LDYgQEAgREVGVU4gKCJpbnRlcm5hbC0tZGVmaW5l LXVuaW5pdGlhbGl6ZWQtdmFyaWFibGUiLAogICBYU1lNQk9MIChzeW1ib2wpLT51LnMuZGVjbGFy ZWRfc3BlY2lhbCA9IHRydWU7CiAgIGlmICghTklMUCAoZG9jKSkKICAgICB7Ci0gICAgICBpZiAo IU5JTFAgKFZwdXJpZnlfZmxhZykpCi0JZG9jID0gRnB1cmVjb3B5IChkb2MpOwogICAgICAgRnB1 dCAoc3ltYm9sLCBRdmFyaWFibGVfZG9jdW1lbnRhdGlvbiwgZG9jKTsKICAgICB9CiAgIExPQURI SVNUX0FUVEFDSCAoc3ltYm9sKTsKQEAgLTkwMyw4ICs5MDEsNiBAQCBERUZVTiAoImRlZmNvbnN0 IiwgRmRlZmNvbnN0LCBTZGVmY29uc3QsIDIsIFVORVZBTExFRCwgMCwKIAogICBGaW50ZXJuYWxf X2RlZmluZV91bmluaXRpYWxpemVkX3ZhcmlhYmxlIChzeW0sIGRvY3N0cmluZyk7CiAgIHRlbSA9 IGV2YWxfc3ViIChYQ0FSIChYQ0RSIChhcmdzKSkpOwotICBpZiAoIU5JTFAgKFZwdXJpZnlfZmxh ZykpCi0gICAgdGVtID0gRnB1cmVjb3B5ICh0ZW0pOwogICBGc2V0X2RlZmF1bHQgKHN5bSwgdGVt KTsgICAgICAvKiBGSVhNRTogc2V0LWRlZmF1bHQtdG9wbGV2ZWwtdmFsdWU/ICovCiAgIEZwdXQg KHN5bSwgUXJpc2t5X2xvY2FsX3ZhcmlhYmxlLCBRdCk7IC8qIEZJWE1FOiBXaHk/ICAqLwogICBy ZXR1cm4gc3ltOwpAQCAtMjEwNywxMiArMjEwMyw2IEBAIERFRlVOICgiYXV0b2xvYWQiLCBGYXV0 b2xvYWQsIFNhdXRvbG9hZCwgMiwgNSwgMCwKICAgICAgICYmICFBVVRPTE9BRFAgKFhTWU1CT0wg KGZ1bmN0aW9uKS0+dS5zLmZ1bmN0aW9uKSkKICAgICByZXR1cm4gUW5pbDsKIAotICBpZiAoIU5J TFAgKFZwdXJpZnlfZmxhZykgJiYgRVEgKGRvY3N0cmluZywgbWFrZV9maXhudW0gKDApKSkKLSAg ICAvKiBgcmVhZDEnIGluIGxyZWFkLmMgaGFzIGZvdW5kIHRoZSBkb2NzdHJpbmcgc3RhcnRpbmcg d2l0aCAiXAotICAgICAgIGFuZCBhc3N1bWVkIHRoZSBkb2NzdHJpbmcgd2lsbCBiZSBwcm92aWRl ZCBieSBTbmFyZi1kb2N1bWVudGF0aW9uLCBzbyBpdAotICAgICAgIHBhc3NlZCB1cyAwIGluc3Rl YWQuICBCdXQgdGhhdCBsZWFkcyB0byBhY2NpZGVudGFsIHNoYXJpbmcgaW4gcHVyZWNvcHkncwot ICAgICAgIGhhc2gtY29uc2luZywgc28gd2UgdXNlIGEgKGhvcGVmdWxseSkgdW5pcXVlIGludGVn ZXIgaW5zdGVhZC4gICovCi0gICAgZG9jc3RyaW5nID0gbWFrZV91Zml4bnVtIChYSEFTSCAoZnVu Y3Rpb24pKTsKICAgcmV0dXJuIEZkZWZhbGlhcyAoZnVuY3Rpb24sCiAJCSAgICBsaXN0NSAoUWF1 dG9sb2FkLCBmaWxlLCBkb2NzdHJpbmcsIGludGVyYWN0aXZlLCB0eXBlKSwKIAkJICAgIFFuaWwp OwpAQCAtNDM1NCw3ICs0MzQ0LDcgQEAgc3ltc19vZl9ldmFsICh2b2lkKQogICAgICBhbHNvIHVz ZSBzb21ldGhpbmcgbGlrZSBGY29ucyAoUW5pbCwgUW5pbCksIGJ1dCBqc29uLmMgdHJlYXRzIGFu eQogICAgICBjb25zIGNlbGwgYXMgZXJyb3IgZGF0YSwgc28gdXNlIGFuIHVuaW50ZXJuZWQgc3lt Ym9sIGluc3RlYWQuICAqLwogICBRY2F0Y2hfYWxsX21lbW9yeV9mdWxsCi0gICAgPSBGbWFrZV9z eW1ib2wgKGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJjYXRjaC1hbGwtbWVtb3J5LWZ1bGwiKSk7Cisg ICAgPSBGbWFrZV9zeW1ib2wgKGJ1aWxkX3N0cmluZyAoImNhdGNoLWFsbC1tZW1vcnktZnVsbCIp KTsKIAogICBkZWZzdWJyICgmU29yKTsKICAgZGVmc3ViciAoJlNhbmQpOwpkaWZmIC0tZ2l0IGEv c3JjL2ZpbGVpby5jIGIvc3JjL2ZpbGVpby5jCmluZGV4IDc0MWUyOTdkMjljMmMuLjVkNDM4ODY1 ZTIwOTIgMTAwNjQ0Ci0tLSBhL3NyYy9maWxlaW8uYworKysgYi9zcmMvZmlsZWlvLmMKQEAgLTYy OTQsMzQgKzYyOTQsMzQgQEAgc3ltc19vZl9maWxlaW8gKHZvaWQpCiAgIERFRlNZTSAoUWNhcl9s ZXNzX3RoYW5fY2FyLCAiY2FyLWxlc3MtdGhhbi1jYXIiKTsKIAogICBGcHV0IChRZmlsZV9lcnJv ciwgUWVycm9yX2NvbmRpdGlvbnMsCi0JRnB1cmVjb3B5IChsaXN0MiAoUWZpbGVfZXJyb3IsIFFl cnJvcikpKTsKKwlsaXN0MiAoUWZpbGVfZXJyb3IsIFFlcnJvcikpOwogICBGcHV0IChRZmlsZV9l cnJvciwgUWVycm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAoIkZpbGUgZXJyb3Ii KSk7CisJYnVpbGRfc3RyaW5nICgiRmlsZSBlcnJvciIpKTsKIAogICBGcHV0IChRZmlsZV9hbHJl YWR5X2V4aXN0cywgUWVycm9yX2NvbmRpdGlvbnMsCi0JRnB1cmVjb3B5IChsaXN0MyAoUWZpbGVf YWxyZWFkeV9leGlzdHMsIFFmaWxlX2Vycm9yLCBRZXJyb3IpKSk7CisJbGlzdDMgKFFmaWxlX2Fs cmVhZHlfZXhpc3RzLCBRZmlsZV9lcnJvciwgUWVycm9yKSk7CiAgIEZwdXQgKFFmaWxlX2FscmVh ZHlfZXhpc3RzLCBRZXJyb3JfbWVzc2FnZSwKLQlidWlsZF9wdXJlX2Nfc3RyaW5nICgiRmlsZSBh bHJlYWR5IGV4aXN0cyIpKTsKKwlidWlsZF9zdHJpbmcgKCJGaWxlIGFscmVhZHkgZXhpc3RzIikp OwogCiAgIEZwdXQgKFFmaWxlX2RhdGVfZXJyb3IsIFFlcnJvcl9jb25kaXRpb25zLAotCUZwdXJl Y29weSAobGlzdDMgKFFmaWxlX2RhdGVfZXJyb3IsIFFmaWxlX2Vycm9yLCBRZXJyb3IpKSk7CisJ bGlzdDMgKFFmaWxlX2RhdGVfZXJyb3IsIFFmaWxlX2Vycm9yLCBRZXJyb3IpKTsKICAgRnB1dCAo UWZpbGVfZGF0ZV9lcnJvciwgUWVycm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAo IkNhbm5vdCBzZXQgZmlsZSBkYXRlIikpOworCWJ1aWxkX3N0cmluZyAoIkNhbm5vdCBzZXQgZmls ZSBkYXRlIikpOwogCiAgIEZwdXQgKFFmaWxlX21pc3NpbmcsIFFlcnJvcl9jb25kaXRpb25zLAot CUZwdXJlY29weSAobGlzdDMgKFFmaWxlX21pc3NpbmcsIFFmaWxlX2Vycm9yLCBRZXJyb3IpKSk7 CisJbGlzdDMgKFFmaWxlX21pc3NpbmcsIFFmaWxlX2Vycm9yLCBRZXJyb3IpKTsKICAgRnB1dCAo UWZpbGVfbWlzc2luZywgUWVycm9yX21lc3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAoIkZp bGUgaXMgbWlzc2luZyIpKTsKKwlidWlsZF9zdHJpbmcgKCJGaWxlIGlzIG1pc3NpbmciKSk7CiAK ICAgRnB1dCAoUWZpbGVfbm90aWZ5X2Vycm9yLCBRZXJyb3JfY29uZGl0aW9ucywKLQlGcHVyZWNv cHkgKGxpc3QzIChRZmlsZV9ub3RpZnlfZXJyb3IsIFFmaWxlX2Vycm9yLCBRZXJyb3IpKSk7CisJ bGlzdDMgKFFmaWxlX25vdGlmeV9lcnJvciwgUWZpbGVfZXJyb3IsIFFlcnJvcikpOwogICBGcHV0 IChRZmlsZV9ub3RpZnlfZXJyb3IsIFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVfY19zdHJp bmcgKCJGaWxlIG5vdGlmaWNhdGlvbiBlcnJvciIpKTsKKwlidWlsZF9zdHJpbmcgKCJGaWxlIG5v dGlmaWNhdGlvbiBlcnJvciIpKTsKIAogICBGcHV0IChRcmVtb3RlX2ZpbGVfZXJyb3IsIFFlcnJv cl9jb25kaXRpb25zLAogCUZwdXJlY29weSAobGlzdDMgKFFyZW1vdGVfZmlsZV9lcnJvciwgUWZp bGVfZXJyb3IsIFFlcnJvcikpKTsKICAgRnB1dCAoUXJlbW90ZV9maWxlX2Vycm9yLCBRZXJyb3Jf bWVzc2FnZSwKLQlidWlsZF9wdXJlX2Nfc3RyaW5nICgiUmVtb3RlIGZpbGUgZXJyb3IiKSk7CisJ YnVpbGRfc3RyaW5nICgiUmVtb3RlIGZpbGUgZXJyb3IiKSk7CiAKICAgREVGVkFSX0xJU1AgKCJm aWxlLW5hbWUtaGFuZGxlci1hbGlzdCIsIFZmaWxlX25hbWVfaGFuZGxlcl9hbGlzdCwKIAkgICAg ICAgZG9jOiAvKiBBbGlzdCBvZiBlbGVtZW50cyAoUkVHRVhQIC4gSEFORExFUikgZm9yIGZpbGUg bmFtZXMgaGFuZGxlZCBzcGVjaWFsbHkuCmRpZmYgLS1naXQgYS9zcmMvZm5zLmMgYi9zcmMvZm5z LmMKaW5kZXggNzkxNGJkNDc3OTBhOS4uYTIyYjYzM2VjNzM4NiAxMDA2NDQKLS0tIGEvc3JjL2Zu cy5jCisrKyBiL3NyYy9mbnMuYwpAQCAtMzYsNyArMzYsNiBAQCBDb3B5cmlnaHQgKEMpIDE5ODUt MTk4NywgMTk5My0xOTk1LCAxOTk3LTIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAogI2lu Y2x1ZGUgImJ1ZmZlci5oIgogI2luY2x1ZGUgImludGVydmFscy5oIgogI2luY2x1ZGUgIndpbmRv dy5oIgotI2luY2x1ZGUgInB1cmVzaXplLmgiCiAjaW5jbHVkZSAiZ251dGxzLmgiCiAKIHN0YXRp YyB2b2lkIHNvcnRfdmVjdG9yX2NvcHkgKExpc3BfT2JqZWN0LCBwdHJkaWZmX3QsCkBAIC0yNjAy LDcgKzI2MDEsNiBAQCBERUZVTiAoImZpbGxhcnJheSIsIEZmaWxsYXJyYXksIFNmaWxsYXJyYXks IDIsIDIsIDAsCiAgICAgICBzaXplID0gU0NIQVJTIChhcnJheSk7CiAgICAgICBpZiAoc2l6ZSAh PSAwKQogCXsKLQkgIENIRUNLX0lNUFVSRSAoYXJyYXksIFhTVFJJTkcgKGFycmF5KSk7CiAJICB1 bnNpZ25lZCBjaGFyIHN0cltNQVhfTVVMVElCWVRFX0xFTkdUSF07CiAJICBpbnQgbGVuOwogCSAg aWYgKFNUUklOR19NVUxUSUJZVEUgKGFycmF5KSkKQEAgLTI2NDQsNyArMjY0Miw2IEBAIERFRlVO ICgiY2xlYXItc3RyaW5nIiwgRmNsZWFyX3N0cmluZywgU2NsZWFyX3N0cmluZywKICAgcHRyZGlm Zl90IGxlbiA9IFNCWVRFUyAoc3RyaW5nKTsKICAgaWYgKGxlbiAhPSAwIHx8IFNUUklOR19NVUxU SUJZVEUgKHN0cmluZykpCiAgICAgewotICAgICAgQ0hFQ0tfSU1QVVJFIChzdHJpbmcsIFhTVFJJ TkcgKHN0cmluZykpOwogICAgICAgbWVtc2V0IChTREFUQSAoc3RyaW5nKSwgMCwgbGVuKTsKICAg ICAgIFNUUklOR19TRVRfQ0hBUlMgKHN0cmluZywgbGVuKTsKICAgICAgIFNUUklOR19TRVRfVU5J QllURSAoc3RyaW5nKTsKQEAgLTQxNzksMTYgKzQxNzYsMTIgQEAgaGFzaF9pbmRleF9zaXplIChz dHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoLCBwdHJkaWZmX3Qgc2l6ZSkKICAgIHNpemUgZXhjZWVk cyBSRUhBU0hfVEhSRVNIT0xELgogCiAgICBXRUFLIHNwZWNpZmllcyB0aGUgd2Vha25lc3Mgb2Yg dGhlIHRhYmxlLiAgSWYgbm9uLW5pbCwgaXQgbXVzdCBiZQotICAgb25lIG9mIHRoZSBzeW1ib2xz IGBrZXknLCBgdmFsdWUnLCBga2V5LW9yLXZhbHVlJywgb3IgYGtleS1hbmQtdmFsdWUnLgotCi0g ICBJZiBQVVJFQ09QWSBpcyBub24tbmlsLCB0aGUgdGFibGUgY2FuIGJlIGNvcGllZCB0byBwdXJl IHN0b3JhZ2UgdmlhCi0gICBgcHVyZWNvcHknIHdoZW4gRW1hY3MgaXMgYmVpbmcgZHVtcGVkLiBT dWNoIHRhYmxlcyBjYW4gbm8gbG9uZ2VyIGJlCi0gICBjaGFuZ2VkIGFmdGVyIHB1cmVjb3B5LiAg Ki8KKyAgIG9uZSBvZiB0aGUgc3ltYm9scyBga2V5JywgYHZhbHVlJywgYGtleS1vci12YWx1ZScs IG9yIGBrZXktYW5kLXZhbHVlJy4gKi8KIAogTGlzcF9PYmplY3QKIG1ha2VfaGFzaF90YWJsZSAo c3RydWN0IGhhc2hfdGFibGVfdGVzdCB0ZXN0LCBFTUFDU19JTlQgc2l6ZSwKIAkJIGZsb2F0IHJl aGFzaF9zaXplLCBmbG9hdCByZWhhc2hfdGhyZXNob2xkLAotCQkgTGlzcF9PYmplY3Qgd2Vhaywg Ym9vbCBwdXJlY29weSkKKwkJIExpc3BfT2JqZWN0IHdlYWspCiB7CiAgIHN0cnVjdCBMaXNwX0hh c2hfVGFibGUgKmg7CiAgIExpc3BfT2JqZWN0IHRhYmxlOwpAQCAtNDIxNyw3ICs0MjEwLDYgQEAg bWFrZV9oYXNoX3RhYmxlIChzdHJ1Y3QgaGFzaF90YWJsZV90ZXN0IHRlc3QsIEVNQUNTX0lOVCBz aXplLAogICBoLT5uZXh0ID0gbWFrZV92ZWN0b3IgKHNpemUsIG1ha2VfZml4bnVtICgtMSkpOwog ICBoLT5pbmRleCA9IG1ha2VfdmVjdG9yIChoYXNoX2luZGV4X3NpemUgKGgsIHNpemUpLCBtYWtl X2ZpeG51bSAoLTEpKTsKICAgaC0+bmV4dF93ZWFrID0gTlVMTDsKLSAgaC0+cHVyZWNvcHkgPSBw dXJlY29weTsKICAgaC0+bXV0YWJsZSA9IHRydWU7CiAKICAgLyogU2V0IHVwIHRoZSBmcmVlIGxp c3QuICAqLwpAQCAtNDMxOCwxMSArNDMxMCw2IEBAIG1heWJlX3Jlc2l6ZV9oYXNoX3RhYmxlIChz dHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoKQogCSAgICBzZXRfaGFzaF9uZXh0X3Nsb3QgKGgsIGks IEhBU0hfSU5ERVggKGgsIHN0YXJ0X29mX2J1Y2tldCkpOwogCSAgICBzZXRfaGFzaF9pbmRleF9z bG90IChoLCBzdGFydF9vZl9idWNrZXQsIGkpOwogCSAgfQotCi0jaWZkZWYgRU5BQkxFX0NIRUNL SU5HCi0gICAgICBpZiAoSEFTSF9UQUJMRV9QIChWcHVyaWZ5X2ZsYWcpICYmIFhIQVNIX1RBQkxF IChWcHVyaWZ5X2ZsYWcpID09IGgpCi0JbWVzc2FnZSAoIkdyb3dpbmcgaGFzaCB0YWJsZSB0bzog JSJwRCJkIiwgbmV4dF9zaXplKTsKLSNlbmRpZgogICAgIH0KIH0KIApAQCAtNDM4NSw3ICs0Mzcy LDYgQEAgY2hlY2tfbXV0YWJsZV9oYXNoX3RhYmxlIChMaXNwX09iamVjdCBvYmosIHN0cnVjdCBM aXNwX0hhc2hfVGFibGUgKmgpCiB7CiAgIGlmICghaC0+bXV0YWJsZSkKICAgICBzaWduYWxfZXJy b3IgKCJoYXNoIHRhYmxlIHRlc3QgbW9kaWZpZXMgdGFibGUiLCBvYmopOwotICBlYXNzZXJ0ICgh UFVSRV9QIChoKSk7CiB9CiAKIC8qIFB1dCBhbiBlbnRyeSBpbnRvIGhhc2ggdGFibGUgSCB0aGF0 IGFzc29jaWF0ZXMgS0VZIHdpdGggVkFMVUUuCkBAIC00ODc2LDE2ICs0ODYyLDEwIEBAIERFRlVO ICgibWFrZS1oYXNoLXRhYmxlIiwgRm1ha2VfaGFzaF90YWJsZSwgU21ha2VfaGFzaF90YWJsZSwg MCwgTUFOWSwgMCwKIFdFQUsuICBXRUFLIHQgaXMgZXF1aXZhbGVudCB0byBga2V5LWFuZC12YWx1 ZScuICBEZWZhdWx0IHZhbHVlIG9mIFdFQUsKIGlzIG5pbC4KIAotOnB1cmVjb3B5IFBVUkVDT1BZ IC0tIElmIFBVUkVDT1BZIGlzIG5vbi1uaWwsIHRoZSB0YWJsZSBjYW4gYmUgY29waWVkCi10byBw dXJlIHN0b3JhZ2Ugd2hlbiBFbWFjcyBpcyBiZWluZyBkdW1wZWQsIG1ha2luZyB0aGUgY29udGVu dHMgb2YgdGhlCi10YWJsZSByZWFkIG9ubHkuIEFueSBmdXJ0aGVyIGNoYW5nZXMgdG8gcHVyaWZp ZWQgdGFibGVzIHdpbGwgcmVzdWx0Ci1pbiBhbiBlcnJvci4KLQogdXNhZ2U6IChtYWtlLWhhc2gt dGFibGUgJnJlc3QgS0VZV09SRC1BUkdTKSAgKi8pCiAgIChwdHJkaWZmX3QgbmFyZ3MsIExpc3Bf T2JqZWN0ICphcmdzKQogewogICBMaXNwX09iamVjdCB0ZXN0LCB3ZWFrOwotICBib29sIHB1cmVj b3B5OwogICBzdHJ1Y3QgaGFzaF90YWJsZV90ZXN0IHRlc3RkZXNjOwogICBwdHJkaWZmX3QgaTsK ICAgVVNFX1NBRkVfQUxMT0NBOwpAQCAtNDkxOSw5ICs0ODk5LDggQEAgREVGVU4gKCJtYWtlLWhh c2gtdGFibGUiLCBGbWFrZV9oYXNoX3RhYmxlLCBTbWFrZV9oYXNoX3RhYmxlLCAwLCBNQU5ZLCAw LAogICAgICAgdGVzdGRlc2MuY21wZm4gPSBjbXBmbl91c2VyX2RlZmluZWQ7CiAgICAgfQogCi0g IC8qIFNlZSBpZiB0aGVyZSdzIGEgYDpwdXJlY29weSBQVVJFQ09QWScgYXJndW1lbnQuICAqLwot ICBpID0gZ2V0X2tleV9hcmcgKFFDcHVyZWNvcHksIG5hcmdzLCBhcmdzLCB1c2VkKTsKLSAgcHVy ZWNvcHkgPSBpICYmICFOSUxQIChhcmdzW2ldKTsKKyAgLyogSWdub3JlIGEgYDpwdXJlY29weSBQ VVJFQ09QWScgYXJndW1lbnQuICAqLworICBnZXRfa2V5X2FyZyAoUUNwdXJlY29weSwgbmFyZ3Ms IGFyZ3MsIHVzZWQpOwogICAvKiBTZWUgaWYgdGhlcmUncyBhIGA6c2l6ZSBTSVpFJyBhcmd1bWVu dC4gICovCiAgIGkgPSBnZXRfa2V5X2FyZyAoUUNzaXplLCBuYXJncywgYXJncywgdXNlZCk7CiAg IExpc3BfT2JqZWN0IHNpemVfYXJnID0gaSA/IGFyZ3NbaV0gOiBRbmlsOwpAQCAtNDk3MSw4ICs0 OTUwLDcgQEAgREVGVU4gKCJtYWtlLWhhc2gtdGFibGUiLCBGbWFrZV9oYXNoX3RhYmxlLCBTbWFr ZV9oYXNoX3RhYmxlLCAwLCBNQU5ZLCAwLAogICAgICAgc2lnbmFsX2Vycm9yICgiSW52YWxpZCBh cmd1bWVudCBsaXN0IiwgYXJnc1tpXSk7CiAKICAgU0FGRV9GUkVFICgpOwotICByZXR1cm4gbWFr ZV9oYXNoX3RhYmxlICh0ZXN0ZGVzYywgc2l6ZSwgcmVoYXNoX3NpemUsIHJlaGFzaF90aHJlc2hv bGQsIHdlYWssCi0JCQkgIHB1cmVjb3B5KTsKKyAgcmV0dXJuIG1ha2VfaGFzaF90YWJsZSAodGVz dGRlc2MsIHNpemUsIHJlaGFzaF9zaXplLCByZWhhc2hfdGhyZXNob2xkLCB3ZWFrKTsKIH0KIAog CmRpZmYgLS1naXQgYS9zcmMvZm9udHNldC5jIGIvc3JjL2ZvbnRzZXQuYwppbmRleCAzMzJiZTZj MzlkMTFmLi4wNDIxY2E0OWM3MzYxIDEwMDY0NAotLS0gYS9zcmMvZm9udHNldC5jCisrKyBiL3Ny Yy9mb250c2V0LmMKQEAgLTIxMjksNyArMjEyOSw3IEBAIHN5bXNfb2ZfZm9udHNldCAodm9pZCkK ICAgc2V0X2ZvbnRzZXRfaWQgKFZkZWZhdWx0X2ZvbnRzZXQsIG1ha2VfZml4bnVtICgwKSk7CiAg IHNldF9mb250c2V0X25hbWUKICAgICAoVmRlZmF1bHRfZm9udHNldCwKLSAgICAgYnVpbGRfcHVy ZV9jX3N0cmluZyAoIi0qLSotKi0qLSotKi0qLSotKi0qLSotKi1mb250c2V0LWRlZmF1bHQiKSk7 CisgICAgIGJ1aWxkX3N0cmluZyAoIi0qLSotKi0qLSotKi0qLSotKi0qLSotKi1mb250c2V0LWRl ZmF1bHQiKSk7CiAgIEFTRVQgKFZmb250c2V0X3RhYmxlLCAwLCBWZGVmYXVsdF9mb250c2V0KTsK ICAgbmV4dF9mb250c2V0X2lkID0gMTsKICAgUERVTVBFUl9SRU1FTUJFUl9TQ0FMQVIgKG5leHRf Zm9udHNldF9pZCk7CkBAIC0yMTg3LDcgKzIxODcsNyBAQCBzeW1zX29mX2ZvbnRzZXQgKHZvaWQp CiAJICAgICAgIGRvYzogLyogQWxpc3Qgb2YgZm9udHNldCBuYW1lcyB2cyB0aGUgYWxpYXNlcy4g ICovKTsKICAgVmZvbnRzZXRfYWxpYXNfYWxpc3QKICAgICA9IGxpc3QxIChGY29ucyAoRk9OVFNF VF9OQU1FIChWZGVmYXVsdF9mb250c2V0KSwKLQkJICAgIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJm b250c2V0LWRlZmF1bHQiKSkpOworCQkgICAgYnVpbGRfc3RyaW5nICgiZm9udHNldC1kZWZhdWx0 IikpKTsKIAogICBERUZWQVJfTElTUCAoInZlcnRpY2FsLWNlbnRlcmluZy1mb250LXJlZ2V4cCIs CiAJICAgICAgIFZ2ZXJ0aWNhbF9jZW50ZXJpbmdfZm9udF9yZWdleHAsCmRpZmYgLS1naXQgYS9z cmMvZnJhbWUuYyBiL3NyYy9mcmFtZS5jCmluZGV4IGE2MjM0N2MxZmIyYTkuLjY1MmQyNjY1NDM5 MGQgMTAwNjQ0Ci0tLSBhL3NyYy9mcmFtZS5jCisrKyBiL3NyYy9mcmFtZS5jCkBAIC0xMTA4LDcg KzExMDgsNyBAQCBtYWtlX2luaXRpYWxfZnJhbWUgKHZvaWQpCiAgIFZmcmFtZV9saXN0ID0gRmNv bnMgKGZyYW1lLCBWZnJhbWVfbGlzdCk7CiAKICAgdHR5X2ZyYW1lX2NvdW50ID0gMTsKLSAgZnNl dF9uYW1lIChmLCBidWlsZF9wdXJlX2Nfc3RyaW5nICgiRjEiKSk7CisgIGZzZXRfbmFtZSAoZiwg YnVpbGRfc3RyaW5nICgiRjEiKSk7CiAKICAgU0VUX0ZSQU1FX1ZJU0lCTEUgKGYsIDEpOwogCmRp ZmYgLS1naXQgYS9zcmMvaW1hZ2UuYyBiL3NyYy9pbWFnZS5jCmluZGV4IDgxMzdkYmVhOGQ3ZWMu LmM3Mzg1NDhkMzgyYTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbWFnZS5jCisrKyBiL3NyYy9pbWFnZS5j CkBAIC00ODA4LDcgKzQ4MDgsNyBAQCB4cG1fbWFrZV9jb2xvcl90YWJsZV9oICh2b2lkICgqKnB1 dF9mdW5jKSAoTGlzcF9PYmplY3QsIGNvbnN0IGNoYXIgKiwgaW50LAogICAqZ2V0X2Z1bmMgPSB4 cG1fZ2V0X2NvbG9yX3RhYmxlX2g7CiAgIHJldHVybiBtYWtlX2hhc2hfdGFibGUgKGhhc2h0ZXN0 X2VxdWFsLCBERUZBVUxUX0hBU0hfU0laRSwKIAkJCSAgREVGQVVMVF9SRUhBU0hfU0laRSwgREVG QVVMVF9SRUhBU0hfVEhSRVNIT0xELAotCQkJICBRbmlsLCBmYWxzZSk7CisJCQkgIFFuaWwpOwog fQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2ludGVydmFscy5jIGIvc3JjL2ludGVy dmFscy5jCmluZGV4IGY4OGE0MWYyNTQ5MTcuLjViNjlhZjI0NDlhNjggMTAwNjQ0Ci0tLSBhL3Ny Yy9pbnRlcnZhbHMuYworKysgYi9zcmMvaW50ZXJ2YWxzLmMKQEAgLTQ0LDcgKzQ0LDYgQEAKICNp bmNsdWRlICJsaXNwLmgiCiAjaW5jbHVkZSAiaW50ZXJ2YWxzLmgiCiAjaW5jbHVkZSAiYnVmZmVy LmgiCi0jaW5jbHVkZSAicHVyZXNpemUuaCIKICNpbmNsdWRlICJrZXltYXAuaCIKIAogLyogVGVz dCBmb3IgbWVtYmVyc2hpcCwgYWxsb3dpbmcgZm9yIHQgKGFjdHVhbGx5IGFueSBub24tY29ucykg dG8gbWVhbiB0aGUKQEAgLTEwMSw3ICsxMDAsNiBAQCBjcmVhdGVfcm9vdF9pbnRlcnZhbCAoTGlz cF9PYmplY3QgcGFyZW50KQogICAgIH0KICAgZWxzZQogICAgIHsKLSAgICAgIENIRUNLX0lNUFVS RSAocGFyZW50LCBYU1RSSU5HIChwYXJlbnQpKTsKICAgICAgIG5ldy0+dG90YWxfbGVuZ3RoID0g U0NIQVJTIChwYXJlbnQpOwogICAgICAgZWFzc2VydCAoVE9UQUxfTEVOR1RIIChuZXcpID49IDAp OwogICAgICAgc2V0X3N0cmluZ19pbnRlcnZhbHMgKHBhcmVudCwgbmV3KTsKZGlmZiAtLWdpdCBh L3NyYy9qc29uLmMgYi9zcmMvanNvbi5jCmluZGV4IDNmMWQyN2FkN2ZiN2YuLmNjYjA0MDVjNGUw NjkgMTAwNjQ0Ci0tLSBhL3NyYy9qc29uLmMKKysrIGIvc3JjL2pzb24uYwpAQCAtMTExMCw4ICsx MTEwLDggQEAgZGVmaW5lX2Vycm9yIChMaXNwX09iamVjdCBuYW1lLCBjb25zdCBjaGFyICptZXNz YWdlLCBMaXNwX09iamVjdCBwYXJlbnQpCiAgIGVhc3NlcnQgKENPTlNQIChwYXJlbnRfY29uZGl0 aW9ucykpOwogICBlYXNzZXJ0ICghTklMUCAoRm1lbXEgKHBhcmVudCwgcGFyZW50X2NvbmRpdGlv bnMpKSk7CiAgIGVhc3NlcnQgKE5JTFAgKEZtZW1xIChuYW1lLCBwYXJlbnRfY29uZGl0aW9ucykp KTsKLSAgRnB1dCAobmFtZSwgUWVycm9yX2NvbmRpdGlvbnMsIHB1cmVfY29ucyAobmFtZSwgcGFy ZW50X2NvbmRpdGlvbnMpKTsKLSAgRnB1dCAobmFtZSwgUWVycm9yX21lc3NhZ2UsIGJ1aWxkX3B1 cmVfY19zdHJpbmcgKG1lc3NhZ2UpKTsKKyAgRnB1dCAobmFtZSwgUWVycm9yX2NvbmRpdGlvbnMs IEZjb25zIChuYW1lLCBwYXJlbnRfY29uZGl0aW9ucykpOworICBGcHV0IChuYW1lLCBRZXJyb3Jf bWVzc2FnZSwgYnVpbGRfc3RyaW5nIChtZXNzYWdlKSk7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBh L3NyYy9rZXlib2FyZC5jIGIvc3JjL2tleWJvYXJkLmMKaW5kZXggOWVlNGM0ZjZkNjgzOS4uMWM4 NjJhMTU3NTlhZiAxMDA2NDQKLS0tIGEvc3JjL2tleWJvYXJkLmMKKysrIGIvc3JjL2tleWJvYXJk LmMKQEAgLTExMDksOCArMTEwOSw2IEBAIHRvcF9sZXZlbF8xIChMaXNwX09iamVjdCBpZ25vcmUp CiAgIC8qIE9uIGVudHJ5IHRvIHRoZSBvdXRlciBsZXZlbCwgcnVuIHRoZSBzdGFydHVwIGZpbGUu ICAqLwogICBpZiAoIU5JTFAgKFZ0b3BfbGV2ZWwpKQogICAgIGludGVybmFsX2NvbmRpdGlvbl9j YXNlICh0b3BfbGV2ZWxfMiwgUWVycm9yLCBjbWRfZXJyb3IpOwotICBlbHNlIGlmICghTklMUCAo VnB1cmlmeV9mbGFnKSkKLSAgICBtZXNzYWdlMSAoIkJhcmUgaW1wdXJlIEVtYWNzIChzdGFuZGFy ZCBMaXNwIGNvZGUgbm90IGxvYWRlZCkiKTsKICAgZWxzZQogICAgIG1lc3NhZ2UxICgiQmFyZSBF bWFjcyAoc3RhbmRhcmQgTGlzcCBjb2RlIG5vdCBsb2FkZWQpIik7CiAgIHJldHVybiBRbmlsOwpA QCAtMTE0NTgsMTQgKzExNDU2LDE0IEBAIHN5bXNfb2Zfa2V5Ym9hcmQgKHZvaWQpCiAgIHBlbmRp bmdfZnVuY2FsbHMgPSBRbmlsOwogICBzdGF0aWNwcm8gKCZwZW5kaW5nX2Z1bmNhbGxzKTsKIAot ICBWbGlzcHlfbW91c2Vfc3RlbSA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJtb3VzZSIpOworICBW bGlzcHlfbW91c2Vfc3RlbSA9IGJ1aWxkX3N0cmluZyAoIm1vdXNlIik7CiAgIHN0YXRpY3BybyAo JlZsaXNweV9tb3VzZV9zdGVtKTsKIAotICByZWd1bGFyX3RvcF9sZXZlbF9tZXNzYWdlID0gYnVp bGRfcHVyZV9jX3N0cmluZyAoIkJhY2sgdG8gdG9wIGxldmVsIik7CisgIHJlZ3VsYXJfdG9wX2xl dmVsX21lc3NhZ2UgPSBidWlsZF9zdHJpbmcgKCJCYWNrIHRvIHRvcCBsZXZlbCIpOwogICBzdGF0 aWNwcm8gKCZyZWd1bGFyX3RvcF9sZXZlbF9tZXNzYWdlKTsKICNpZmRlZiBIQVZFX1NUQUNLX09W RVJGTE9XX0hBTkRMSU5HCiAgIHJlY292ZXJfdG9wX2xldmVsX21lc3NhZ2UKLSAgICA9IGJ1aWxk X3B1cmVfY19zdHJpbmcgKCJSZS1lbnRlcmluZyB0b3AgbGV2ZWwgYWZ0ZXIgQyBzdGFjayBvdmVy ZmxvdyIpOworICAgID0gYnVpbGRfc3RyaW5nICgiUmUtZW50ZXJpbmcgdG9wIGxldmVsIGFmdGVy IEMgc3RhY2sgb3ZlcmZsb3ciKTsKICAgc3RhdGljcHJvICgmcmVjb3Zlcl90b3BfbGV2ZWxfbWVz c2FnZSk7CiAjZW5kaWYKICAgREVGVkFSX0xJU1AgKCJpbnRlcm5hbC0tdG9wLWxldmVsLW1lc3Nh Z2UiLCBWaW50ZXJuYWxfX3RvcF9sZXZlbF9tZXNzYWdlLApkaWZmIC0tZ2l0IGEvc3JjL2tleW1h cC5jIGIvc3JjL2tleW1hcC5jCmluZGV4IDc4MjkzMWZhZGZmNmEuLmRjYTRmY2U5YjEzZjggMTAw NjQ0Ci0tLSBhL3NyYy9rZXltYXAuYworKysgYi9zcmMva2V5bWFwLmMKQEAgLTUwLDcgKzUwLDYg QEAKICNpbmNsdWRlICJrZXlib2FyZC5oIgogI2luY2x1ZGUgInRlcm1ob29rcy5oIgogI2luY2x1 ZGUgImJsb2NraW5wdXQuaCIKLSNpbmNsdWRlICJwdXJlc2l6ZS5oIgogI2luY2x1ZGUgImludGVy dmFscy5oIgogI2luY2x1ZGUgImtleW1hcC5oIgogI2luY2x1ZGUgIndpbmRvdy5oIgpAQCAtMTE3 LDggKzExNiw2IEBAIERFRlVOICgibWFrZS1zcGFyc2Uta2V5bWFwIiwgRm1ha2Vfc3BhcnNlX2tl eW1hcCwgU21ha2Vfc3BhcnNlX2tleW1hcCwgMCwgMSwgMCwKIHsKICAgaWYgKCFOSUxQIChzdHJp bmcpKQogICAgIHsKLSAgICAgIGlmICghTklMUCAoVnB1cmlmeV9mbGFnKSkKLQlzdHJpbmcgPSBG cHVyZWNvcHkgKHN0cmluZyk7CiAgICAgICByZXR1cm4gbGlzdDIgKFFrZXltYXAsIHN0cmluZyk7 CiAgICAgfQogICByZXR1cm4gbGlzdDEgKFFrZXltYXApOwpAQCAtMjk2LDcgKzI5Myw2IEBAIERF RlVOICgic2V0LWtleW1hcC1wYXJlbnQiLCBGc2V0X2tleW1hcF9wYXJlbnQsIFNzZXRfa2V5bWFw X3BhcmVudCwgMiwgMiwgMCwKIAkgSWYgd2UgY2FtZSB0byB0aGUgZW5kLCBhZGQgdGhlIHBhcmVu dCBpbiBQUkVWLiAgKi8KICAgICAgIGlmICghQ09OU1AgKGxpc3QpIHx8IEtFWU1BUFAgKGxpc3Qp KQogCXsKLQkgIENIRUNLX0lNUFVSRSAocHJldiwgWENPTlMgKHByZXYpKTsKIAkgIFhTRVRDRFIg KHByZXYsIHBhcmVudCk7CiAJICByZXR1cm4gcGFyZW50OwogCX0KQEAgLTczNCw3ICs3MzAsNyBA QCBzdG9yZV9pbl9rZXltYXAgKExpc3BfT2JqZWN0IGtleW1hcCwgcmVnaXN0ZXIgTGlzcF9PYmpl Y3QgaWR4LCBMaXNwX09iamVjdCBkZWYpCiAKICAgLyogSWYgd2UgYXJlIHByZXBhcmluZyB0byBk dW1wLCBhbmQgREVGIGlzIGEgbWVudSBlbGVtZW50CiAgICAgIHdpdGggYSBtZW51IGl0ZW0gaW5k aWNhdG9yLCBjb3B5IGl0IHRvIGVuc3VyZSBpdCBpcyBub3QgcHVyZS4gICovCi0gIGlmIChDT05T UCAoZGVmKSAmJiBQVVJFX1AgKFhDT05TIChkZWYpKQorICBpZiAoQ09OU1AgKGRlZikKICAgICAg ICYmIChFUSAoWENBUiAoZGVmKSwgUW1lbnVfaXRlbSkgfHwgU1RSSU5HUCAoWENBUiAoZGVmKSkp KQogICAgIGRlZiA9IEZjb25zIChYQ0FSIChkZWYpLCBYQ0RSIChkZWYpKTsKIApAQCAtNzc4LDcg Kzc3NCw2IEBAIHN0b3JlX2luX2tleW1hcCAoTGlzcF9PYmplY3Qga2V5bWFwLCByZWdpc3RlciBM aXNwX09iamVjdCBpZHgsIExpc3BfT2JqZWN0IGRlZikKIAkgIHsKIAkgICAgaWYgKEZJWE5BVFAg KGlkeCkgJiYgWEZJWE5BVCAoaWR4KSA8IEFTSVpFIChlbHQpKQogCSAgICAgIHsKLQkJQ0hFQ0tf SU1QVVJFIChlbHQsIFhWRUNUT1IgKGVsdCkpOwogCQlBU0VUIChlbHQsIFhGSVhOQVQgKGlkeCks IGRlZik7CiAJCXJldHVybiBkZWY7CiAJICAgICAgfQpAQCAtODMxLDcgKzgyNiw2IEBAIHN0b3Jl X2luX2tleW1hcCAoTGlzcF9PYmplY3Qga2V5bWFwLCByZWdpc3RlciBMaXNwX09iamVjdCBpZHgs IExpc3BfT2JqZWN0IGRlZikKIAkgICAgICB9CiAJICAgIGVsc2UgaWYgKEVRIChpZHgsIFhDQVIg KGVsdCkpKQogCSAgICAgIHsKLQkJQ0hFQ0tfSU1QVVJFIChlbHQsIFhDT05TIChlbHQpKTsKIAkJ WFNFVENEUiAoZWx0LCBkZWYpOwogCQlyZXR1cm4gZGVmOwogCSAgICAgIH0KQEAgLTg3Nyw3ICs4 NzEsNiBAQCBzdG9yZV9pbl9rZXltYXAgKExpc3BfT2JqZWN0IGtleW1hcCwgcmVnaXN0ZXIgTGlz cF9PYmplY3QgaWR4LCBMaXNwX09iamVjdCBkZWYpCiAJfQogICAgICAgZWxzZQogCWVsdCA9IEZj b25zIChpZHgsIGRlZik7Ci0gICAgICBDSEVDS19JTVBVUkUgKGluc2VydGlvbl9wb2ludCwgWENP TlMgKGluc2VydGlvbl9wb2ludCkpOwogICAgICAgWFNFVENEUiAoaW5zZXJ0aW9uX3BvaW50LCBG Y29ucyAoZWx0LCBYQ0RSIChpbnNlcnRpb25fcG9pbnQpKSk7CiAgICAgfQogICB9CkBAIC0zMTIx LDEyICszMTE0LDEyIEBAIHN5bXNfb2Zfa2V5bWFwICh2b2lkKQogICBjdXJyZW50X2dsb2JhbF9t YXAgPSBRbmlsOwogICBzdGF0aWNwcm8gKCZjdXJyZW50X2dsb2JhbF9tYXApOwogCi0gIGV4Y2x1 ZGVfa2V5cyA9IHB1cmVfbGlzdAotICAgIChwdXJlX2NvbnMgKGJ1aWxkX3B1cmVfY19zdHJpbmcg KCJERUwiKSwgYnVpbGRfcHVyZV9jX3N0cmluZyAoIlxcZCIpKSwKLSAgICAgcHVyZV9jb25zIChi dWlsZF9wdXJlX2Nfc3RyaW5nICgiVEFCIiksIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJcXHQiKSks Ci0gICAgIHB1cmVfY29ucyAoYnVpbGRfcHVyZV9jX3N0cmluZyAoIlJFVCIpLCBidWlsZF9wdXJl X2Nfc3RyaW5nICgiXFxyIikpLAotICAgICBwdXJlX2NvbnMgKGJ1aWxkX3B1cmVfY19zdHJpbmcg KCJFU0MiKSwgYnVpbGRfcHVyZV9jX3N0cmluZyAoIlxcZSIpKSwKLSAgICAgcHVyZV9jb25zIChi dWlsZF9wdXJlX2Nfc3RyaW5nICgiU1BDIiksIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIgIikpKTsK KyAgZXhjbHVkZV9rZXlzID0gbGlzdAorICAgIChGY29ucyAoYnVpbGRfc3RyaW5nICgiREVMIiks IGJ1aWxkX3N0cmluZyAoIlxcZCIpKSwKKyAgICAgRmNvbnMgKGJ1aWxkX3N0cmluZyAoIlRBQiIp LCBidWlsZF9zdHJpbmcgKCJcXHQiKSksCisgICAgIEZjb25zIChidWlsZF9zdHJpbmcgKCJSRVQi KSwgYnVpbGRfc3RyaW5nICgiXFxyIikpLAorICAgICBGY29ucyAoYnVpbGRfc3RyaW5nICgiRVND IiksIGJ1aWxkX3N0cmluZyAoIlxcZSIpKSwKKyAgICAgRmNvbnMgKGJ1aWxkX3N0cmluZyAoIlNQ QyIpLCBidWlsZF9zdHJpbmcgKCIgIikpKTsKICAgc3RhdGljcHJvICgmZXhjbHVkZV9rZXlzKTsK IAogICBERUZWQVJfTElTUCAoIm1pbmlidWZmZXItbG9jYWwtbWFwIiwgVm1pbmlidWZmZXJfbG9j YWxfbWFwLApAQCAtMzE3NiwxMyArMzE2OSwxMiBAQCBzeW1zX29mX2tleW1hcCAodm9pZCkKICAg REVGU1lNIChRbW9kZV9saW5lLCAibW9kZS1saW5lIik7CiAKICAgc3RhdGljcHJvICgmVm1vdXNl X2V2ZW50cyk7Ci0gIFZtb3VzZV9ldmVudHMgPSBwdXJlX2xpc3QgKFFtZW51X2JhciwgUXRhYl9i YXIsIFF0b29sX2JhciwKLQkJCSAgICAgUXRhYl9saW5lLCBRaGVhZGVyX2xpbmUsIFFtb2RlX2xp bmUsCi0JCQkgICAgIGludGVybl9jX3N0cmluZyAoIm1vdXNlLTEiKSwKLQkJCSAgICAgaW50ZXJu X2Nfc3RyaW5nICgibW91c2UtMiIpLAotCQkJICAgICBpbnRlcm5fY19zdHJpbmcgKCJtb3VzZS0z IiksCi0JCQkgICAgIGludGVybl9jX3N0cmluZyAoIm1vdXNlLTQiKSwKLQkJCSAgICAgaW50ZXJu X2Nfc3RyaW5nICgibW91c2UtNSIpKTsKKyAgVm1vdXNlX2V2ZW50cyA9IGxpc3QgKFFtZW51X2Jh ciwgUXRvb2xfYmFyLCBRaGVhZGVyX2xpbmUsIFFtb2RlX2xpbmUsCisJCQlpbnRlcm5fY19zdHJp bmcgKCJtb3VzZS0xIiksCisJCQlpbnRlcm5fY19zdHJpbmcgKCJtb3VzZS0yIiksCisJCQlpbnRl cm5fY19zdHJpbmcgKCJtb3VzZS0zIiksCisJCQlpbnRlcm5fY19zdHJpbmcgKCJtb3VzZS00Iiks CisJCQlpbnRlcm5fY19zdHJpbmcgKCJtb3VzZS01IikpOwogCiAgIC8qIEtleW1hcCB1c2VkIGZv ciBtaW5pYnVmZmVycyB3aGVuIGRvaW5nIGNvbXBsZXRpb24uICAqLwogICAvKiBLZXltYXAgdXNl ZCBmb3IgbWluaWJ1ZmZlcnMgd2hlbiBkb2luZyBjb21wbGV0aW9uIGFuZCByZXF1aXJlIGEgbWF0 Y2guICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2xpc3AuaCBiL3NyYy9saXNwLmgKaW5kZXggYjk1ZjM4 OWI4OTAyNC4uNzU4MDI3MmU1YzdmMyAxMDA2NDQKLS0tIGEvc3JjL2xpc3AuaAorKysgYi9zcmMv bGlzcC5oCkBAIC04MjMsOSArODIzLDYgQEAgI2RlZmluZSBYVU5UQUcoYSwgdHlwZSwgY3R5cGUp ICgoY3R5cGUgKikgXAogCSBzcGVjaWFsICh3aXRoIGBkZWZ2YXInIGV0YyksIGFuZCBzaG91bGRu J3QgYmUgbGV4aWNhbGx5IGJvdW5kLiAgKi8KICAgICAgIGJvb2xfYmYgZGVjbGFyZWRfc3BlY2lh bCA6IDE7CiAKLSAgICAgIC8qIFRydWUgaWYgcG9pbnRlZCB0byBmcm9tIHB1cmVzcGFjZSBhbmQg aGVuY2UgY2FuJ3QgYmUgR0MnZC4gICovCi0gICAgICBib29sX2JmIHBpbm5lZCA6IDE7Ci0KICAg ICAgIC8qIFRoZSBzeW1ib2wncyBuYW1lLCBhcyBhIExpc3Agc3RyaW5nLiAgKi8KICAgICAgIExp c3BfT2JqZWN0IG5hbWU7CiAKQEAgLTE1MzQsMjAgKzE1MzEsMTQgQEAgI2RlZmluZSBTVFJJTkdf QllURVNfQk9VTkQgIFwKIC8qIE1hcmsgU1RSIGFzIGEgdW5pYnl0ZSBzdHJpbmcuICAqLwogI2Rl ZmluZSBTVFJJTkdfU0VUX1VOSUJZVEUoU1RSKQkJCQlcCiAgIGRvIHsJCQkJCQkJXAotICAgIGlm IChYU1RSSU5HIChTVFIpLT51LnMuc2l6ZSA9PSAwKQkJCVwKLSAgICAgIChTVFIpID0gZW1wdHlf dW5pYnl0ZV9zdHJpbmc7CQkJXAotICAgIGVsc2UJCQkJCQlcCi0gICAgICBYU1RSSU5HIChTVFIp LT51LnMuc2l6ZV9ieXRlID0gLTE7CQlcCisgICAgWFNUUklORyAoU1RSKS0+dS5zLnNpemVfYnl0 ZSA9IC0xOwkJCVwKICAgfSB3aGlsZSAoZmFsc2UpCiAKIC8qIE1hcmsgU1RSIGFzIGEgbXVsdGli eXRlIHN0cmluZy4gIEFzc3VyZSB0aGF0IFNUUiBjb250YWlucyBvbmx5CiAgICBBU0NJSSBjaGFy YWN0ZXJzIGluIGFkdmFuY2UuICAqLwotI2RlZmluZSBTVFJJTkdfU0VUX01VTFRJQllURShTVFIp CQkJXAotICBkbyB7CQkJCQkJCVwKLSAgICBpZiAoWFNUUklORyAoU1RSKS0+dS5zLnNpemUgPT0g MCkJCQlcCi0gICAgICAoU1RSKSA9IGVtcHR5X211bHRpYnl0ZV9zdHJpbmc7CQkJXAotICAgIGVs c2UJCQkJCQlcCi0gICAgICBYU1RSSU5HIChTVFIpLT51LnMuc2l6ZV9ieXRlID0gWFNUUklORyAo U1RSKS0+dS5zLnNpemU7IFwKKyNkZWZpbmUgU1RSSU5HX1NFVF9NVUxUSUJZVEUoU1RSKQkJCQlc CisgIGRvIHsJCQkJCQkJCVwKKyAgICBYU1RSSU5HIChTVFIpLT51LnMuc2l6ZV9ieXRlID0gWFNU UklORyAoU1RSKS0+dS5zLnNpemU7CVwKICAgfSB3aGlsZSAoZmFsc2UpCiAKIC8qIENvbnZlbmll bmNlIGZ1bmN0aW9ucyBmb3IgZGVhbGluZyB3aXRoIExpc3Agc3RyaW5ncy4gICovCkBAIC0yMzAx LDEyICsyMjkyLDggQEAgI2RlZmluZSBERUZTWU0oc3ltLCBuYW1lKSAvKiBlbXB0eSAqLwogICAv KiBJbmRleCBvZiBmaXJzdCBmcmVlIGVudHJ5IGluIGZyZWUgbGlzdCwgb3IgLTEgaWYgbm9uZS4g ICovCiAgIHB0cmRpZmZfdCBuZXh0X2ZyZWU7CiAKLSAgLyogVHJ1ZSBpZiB0aGUgdGFibGUgY2Fu IGJlIHB1cmVjb3BpZWQuICBUaGUgdGFibGUgY2Fubm90IGJlCi0gICAgIGNoYW5nZWQgYWZ0ZXJ3 YXJkcy4gICovCi0gIGJvb2wgcHVyZWNvcHk7Ci0KICAgLyogVHJ1ZSBpZiB0aGUgdGFibGUgaXMg bXV0YWJsZS4gIE9yZGluYXJpbHkgdGFibGVzIGFyZSBtdXRhYmxlLCBidXQKLSAgICAgcHVyZSB0 YWJsZXMgYXJlIG5vdCwgYW5kIHdoaWxlIGEgdGFibGUgaXMgYmVpbmcgbXV0YXRlZCBpdCBpcwor ICAgICBzb21lIHRhYmxlcyBhcmUgbm90LCBhbmQgd2hpbGUgYSB0YWJsZSBpcyBiZWluZyBtdXRh dGVkIGl0IGlzCiAgICAgIGltbXV0YWJsZSBmb3IgcmVjdXJzaXZlIGF0dGVtcHRzIHRvIG11dGF0 ZSBpdC4gICovCiAgIGJvb2wgbXV0YWJsZTsKIApAQCAtMzU5OSw3ICszNTg2LDcgQEAgI2RlZmlu ZSBDT05TX1RPX0lOVEVHRVIoY29ucywgdHlwZSwgdmFyKQkJCQlcCiBMaXNwX09iamVjdCBoYXNo Zm5fZXF1YWwgKExpc3BfT2JqZWN0LCBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICopOwogTGlzcF9P YmplY3QgaGFzaGZuX3VzZXJfZGVmaW5lZCAoTGlzcF9PYmplY3QsIHN0cnVjdCBMaXNwX0hhc2hf VGFibGUgKik7CiBMaXNwX09iamVjdCBtYWtlX2hhc2hfdGFibGUgKHN0cnVjdCBoYXNoX3RhYmxl X3Rlc3QsIEVNQUNTX0lOVCwgZmxvYXQsIGZsb2F0LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXNwX09iamVjdCwgYm9vbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3BfT2JqZWN0KTsKIHB0cmRpZmZfdCBoYXNoX2xvb2t1cCAoc3RydWN0IExpc3BfSGFzaF9UYWJs ZSAqLCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QgKik7CiBwdHJkaWZmX3QgaGFzaF9wdXQgKHN0 cnVjdCBMaXNwX0hhc2hfVGFibGUgKiwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LAogCQkgICAg TGlzcF9PYmplY3QpOwpAQCAtMzc1NSw3ICszNzQyLDYgQEAgdmVyaWZ5IChGTFRfUkFESVggPT0g MiB8fCBGTFRfUkFESVggPT0gMTYpOwogCiAvKiBEZWZpbmVkIGluIGFsbG9jLmMuICAqLwogZXh0 ZXJuIHZvaWQgKm15X2hlYXBfc3RhcnQgKHZvaWQpOwotZXh0ZXJuIHZvaWQgY2hlY2tfcHVyZV9z aXplICh2b2lkKTsKIHVuc2lnbmVkIGNoYXIgKnJlc2l6ZV9zdHJpbmdfZGF0YSAoTGlzcF9PYmpl Y3QsIHB0cmRpZmZfdCwgaW50LCBpbnQpOwogZXh0ZXJuIHZvaWQgbWFsbG9jX3dhcm5pbmcgKGNv bnN0IGNoYXIgKik7CiBleHRlcm4gQVZPSUQgbWVtb3J5X2Z1bGwgKHNpemVfdCk7CkBAIC0zODEz LDExICszNzk5LDggQEAgZmx1c2hfc3RhY2tfY2FsbF9mdW5jICh2b2lkICgqZnVuYykgKHZvaWQg KmFyZyksIHZvaWQgKmFyZykKIGV4dGVybiBMaXNwX09iamVjdCBsaXN0NSAoTGlzcF9PYmplY3Qs IExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsCiAJCQkgIExpc3BfT2JqZWN0 KTsKIGV4dGVybiBMaXNwX09iamVjdCBsaXN0biAocHRyZGlmZl90LCBMaXNwX09iamVjdCwgLi4u KTsKLWV4dGVybiBMaXNwX09iamVjdCBwdXJlX2xpc3RuIChwdHJkaWZmX3QsIExpc3BfT2JqZWN0 LCAuLi4pOwogI2RlZmluZSBsaXN0KC4uLikgXAogICBsaXN0biAoQVJSQVlFTFRTICgoKExpc3Bf T2JqZWN0IFtdKSB7X19WQV9BUkdTX199KSksIF9fVkFfQVJHU19fKQotI2RlZmluZSBwdXJlX2xp c3QoLi4uKSBcCi0gIHB1cmVfbGlzdG4gKEFSUkFZRUxUUyAoKChMaXNwX09iamVjdCBbXSkge19f VkFfQVJHU19ffSkpLCBfX1ZBX0FSR1NfXykKIAogZW51bSBnY19yb290X3R5cGUKIHsKQEAgLTM4 OTAsMTcgKzM4NzMsNiBAQCBidWlsZF91bmlieXRlX3N0cmluZyAoY29uc3QgY2hhciAqc3RyKQog ZXh0ZXJuIExpc3BfT2JqZWN0IG1ha2Vfc3RyaW5nX2Zyb21fYnl0ZXMgKGNvbnN0IGNoYXIgKiwg cHRyZGlmZl90LCBwdHJkaWZmX3QpOwogZXh0ZXJuIExpc3BfT2JqZWN0IG1ha2Vfc3BlY2lmaWVk X3N0cmluZyAoY29uc3QgY2hhciAqLAogCQkJCQkgIHB0cmRpZmZfdCwgcHRyZGlmZl90LCBib29s KTsKLWV4dGVybiBMaXNwX09iamVjdCBtYWtlX3B1cmVfc3RyaW5nIChjb25zdCBjaGFyICosIHB0 cmRpZmZfdCwgcHRyZGlmZl90LCBib29sKTsKLWV4dGVybiBMaXNwX09iamVjdCBtYWtlX3B1cmVf Y19zdHJpbmcgKGNvbnN0IGNoYXIgKiwgcHRyZGlmZl90KTsKLQotLyogTWFrZSBhIHN0cmluZyBh bGxvY2F0ZWQgaW4gcHVyZSBzcGFjZSwgdXNlIFNUUiBhcyBzdHJpbmcgZGF0YS4gICovCi0KLUlO TElORSBMaXNwX09iamVjdAotYnVpbGRfcHVyZV9jX3N0cmluZyAoY29uc3QgY2hhciAqc3RyKQot ewotICByZXR1cm4gbWFrZV9wdXJlX2Nfc3RyaW5nIChzdHIsIHN0cmxlbiAoc3RyKSk7Ci19Ci0K IC8qIE1ha2UgYSBzdHJpbmcgZnJvbSB0aGUgZGF0YSBhdCBTVFIsIHRyZWF0aW5nIGl0IGFzIG11 bHRpYnl0ZSBpZiB0aGUKICAgIGRhdGEgd2FycmFudHMuICAqLwogCkBAIC0zOTEwLDcgKzM4ODIs NiBAQCBidWlsZF9zdHJpbmcgKGNvbnN0IGNoYXIgKnN0cikKICAgcmV0dXJuIG1ha2Vfc3RyaW5n IChzdHIsIHN0cmxlbiAoc3RyKSk7CiB9CiAKLWV4dGVybiBMaXNwX09iamVjdCBwdXJlX2NvbnMg KExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCk7CiBleHRlcm4gTGlzcF9PYmplY3QgbWFrZV92ZWN0 b3IgKHB0cmRpZmZfdCwgTGlzcF9PYmplY3QpOwogZXh0ZXJuIHN0cnVjdCBMaXNwX1ZlY3RvciAq YWxsb2NhdGVfbmlsX3ZlY3RvciAocHRyZGlmZl90KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2xyZWFk LmMgYi9zcmMvbHJlYWQuYwppbmRleCBkZWExYjIzMmZmZjgzLi4wMzNlOWJhNDFhZjE2IDEwMDY0 NAotLS0gYS9zcmMvbHJlYWQuYworKysgYi9zcmMvbHJlYWQuYwpAQCAtMjA5OCwxMyArMjA5OCwx MyBAQCByZWFkZXZhbGxvb3AgKExpc3BfT2JqZWN0IHJlYWRjaGFyZnVuLAogCXJlYWRfb2JqZWN0 c19tYXAKIAkgID0gbWFrZV9oYXNoX3RhYmxlIChoYXNodGVzdF9lcSwgREVGQVVMVF9IQVNIX1NJ WkUsCiAJCQkgICAgIERFRkFVTFRfUkVIQVNIX1NJWkUsIERFRkFVTFRfUkVIQVNIX1RIUkVTSE9M RCwKLQkJCSAgICAgUW5pbCwgZmFsc2UpOworCQkJICAgICBRbmlsKTsKICAgICAgIGlmICghIEhB U0hfVEFCTEVfUCAocmVhZF9vYmplY3RzX2NvbXBsZXRlZCkKIAkgIHx8IFhIQVNIX1RBQkxFIChy ZWFkX29iamVjdHNfY29tcGxldGVkKS0+Y291bnQpCiAJcmVhZF9vYmplY3RzX2NvbXBsZXRlZAog CSAgPSBtYWtlX2hhc2hfdGFibGUgKGhhc2h0ZXN0X2VxLCBERUZBVUxUX0hBU0hfU0laRSwKIAkJ CSAgICAgREVGQVVMVF9SRUhBU0hfU0laRSwgREVGQVVMVF9SRUhBU0hfVEhSRVNIT0xELAotCQkJ ICAgICBRbmlsLCBmYWxzZSk7CisJCQkgICAgIFFuaWwpOwogICAgICAgaWYgKCFOSUxQIChWcHVy aWZ5X2ZsYWcpICYmIGMgPT0gJygnKQogCXsKIAkgIHZhbCA9IHJlYWRfbGlzdCAoMCwgcmVhZGNo YXJmdW4pOwpAQCAtMjMyMSwxMiArMjMyMSwxMiBAQCByZWFkX2ludGVybmFsX3N0YXJ0IChMaXNw X09iamVjdCBzdHJlYW0sIExpc3BfT2JqZWN0IHN0YXJ0LCBMaXNwX09iamVjdCBlbmQpCiAgICAg ICB8fCBYSEFTSF9UQUJMRSAocmVhZF9vYmplY3RzX21hcCktPmNvdW50KQogICAgIHJlYWRfb2Jq ZWN0c19tYXAKICAgICAgID0gbWFrZV9oYXNoX3RhYmxlIChoYXNodGVzdF9lcSwgREVGQVVMVF9I QVNIX1NJWkUsIERFRkFVTFRfUkVIQVNIX1NJWkUsCi0JCQkgREVGQVVMVF9SRUhBU0hfVEhSRVNI T0xELCBRbmlsLCBmYWxzZSk7CisJCQkgREVGQVVMVF9SRUhBU0hfVEhSRVNIT0xELCBRbmlsKTsK ICAgaWYgKCEgSEFTSF9UQUJMRV9QIChyZWFkX29iamVjdHNfY29tcGxldGVkKQogICAgICAgfHwg WEhBU0hfVEFCTEUgKHJlYWRfb2JqZWN0c19jb21wbGV0ZWQpLT5jb3VudCkKICAgICByZWFkX29i amVjdHNfY29tcGxldGVkCiAgICAgICA9IG1ha2VfaGFzaF90YWJsZSAoaGFzaHRlc3RfZXEsIERF RkFVTFRfSEFTSF9TSVpFLCBERUZBVUxUX1JFSEFTSF9TSVpFLAotCQkJIERFRkFVTFRfUkVIQVNI X1RIUkVTSE9MRCwgUW5pbCwgZmFsc2UpOworCQkJIERFRkFVTFRfUkVIQVNIX1RIUkVTSE9MRCwg UW5pbCk7CiAgIGlmIChFUSAoVnJlYWRfd2l0aF9zeW1ib2xfcG9zaXRpb25zLCBRdCkKICAgICAg IHx8IEVRIChWcmVhZF93aXRoX3N5bWJvbF9wb3NpdGlvbnMsIHN0cmVhbSkpCiAgICAgVnJlYWRf c3ltYm9sX3Bvc2l0aW9uc19saXN0ID0gUW5pbDsKQEAgLTI4OTYsMTEgKzI4OTYsNiBAQCByZWFk MSAoTGlzcF9PYmplY3QgcmVhZGNoYXJmdW4sIGludCAqcGNoLCBib29sIGZpcnN0X2luX2xpc3Qp CiAJICAgICAgaWYgKCFOSUxQIChwYXJhbXNbcGFyYW1fY291bnQgKyAxXSkpCiAJCXBhcmFtX2Nv dW50ICs9IDI7CiAKLSAgICAgICAgICAgICAgcGFyYW1zW3BhcmFtX2NvdW50XSA9IFFDcHVyZWNv cHk7Ci0gICAgICAgICAgICAgIHBhcmFtc1twYXJhbV9jb3VudCArIDFdID0gRnBsaXN0X2dldCAo dG1wLCBRcHVyZWNvcHkpOwotICAgICAgICAgICAgICBpZiAoIU5JTFAgKHBhcmFtc1twYXJhbV9j b3VudCArIDFdKSkKLSAgICAgICAgICAgICAgICBwYXJhbV9jb3VudCArPSAyOwotCiAJICAgICAg LyogVGhpcyBpcyB0aGUgaGFzaCB0YWJsZSBkYXRhLiAgKi8KIAkgICAgICBkYXRhID0gRnBsaXN0 X2dldCAodG1wLCBRZGF0YSk7CiAKQEAgLTMyMTAsMTMgKzMyMDUsMTMgQEAgcmVhZDEgKExpc3Bf T2JqZWN0IHJlYWRjaGFyZnVuLCBpbnQgKnBjaCwgYm9vbCBmaXJzdF9pbl9saXN0KQogCSAgICAg IC8qIE5vIHN5bWJvbCBjaGFyYWN0ZXIgZm9sbG93cywgdGhpcyBpcyB0aGUgZW1wdHkKIAkJIHN5 bWJvbC4gICovCiAJICAgICAgVU5SRUFEIChjKTsKLQkgICAgICByZXR1cm4gRm1ha2Vfc3ltYm9s IChlbXB0eV91bmlieXRlX3N0cmluZyk7CisJICAgICAgcmV0dXJuIEZtYWtlX3N5bWJvbCAoYnVp bGRfc3RyaW5nICgiIikpOwogCSAgICB9CiAJICBnb3RvIHJlYWRfc3ltYm9sOwogCX0KICAgICAg IC8qICMjIGlzIHRoZSBlbXB0eSBzeW1ib2wuICAqLwogICAgICAgaWYgKGMgPT0gJyMnKQotCXJl dHVybiBGaW50ZXJuIChlbXB0eV91bmlieXRlX3N0cmluZywgUW5pbCk7CisJcmV0dXJuIEZpbnRl cm4gKGJ1aWxkX3N0cmluZyAoIiIpLCBRbmlsKTsKIAogICAgICAgaWYgKGMgPj0gJzAnICYmIGMg PD0gJzknKQogCXsKQEAgLTM2MTIsOSArMzYwNyw4IEBAIHJlYWQxIChMaXNwX09iamVjdCByZWFk Y2hhcmZ1biwgaW50ICpwY2gsIGJvb2wgZmlyc3RfaW5fbGlzdCkKIAkgIGlmICh1bmludGVybmVk X3N5bWJvbCkKIAkgICAgewogCSAgICAgIExpc3BfT2JqZWN0IG5hbWUKLQkJPSAoKCEgTklMUCAo VnB1cmlmeV9mbGFnKQotCQkgICAgPyBtYWtlX3B1cmVfc3RyaW5nIDogbWFrZV9zcGVjaWZpZWRf c3RyaW5nKQotCQkgICAocmVhZF9idWZmZXIsIG5jaGFycywgbmJ5dGVzLCBtdWx0aWJ5dGUpKTsK KwkJPSBtYWtlX3NwZWNpZmllZF9zdHJpbmcgKHJlYWRfYnVmZmVyLCBuY2hhcnMsIG5ieXRlcywK KwkJCQkJIG11bHRpYnl0ZSk7CiAJICAgICAgcmVzdWx0ID0gRm1ha2Vfc3ltYm9sIChuYW1lKTsK IAkgICAgfQogCSAgZWxzZQpAQCAtNDIwNCwxMCArNDE5OCw4IEBAIGludGVybl9jX3N0cmluZ18x IChjb25zdCBjaGFyICpzdHIsIHB0cmRpZmZfdCBsZW4pCiAKICAgaWYgKCFTWU1CT0xQICh0ZW0p KQogICAgIHsKLSAgICAgIC8qIENyZWF0aW5nIGEgbm9uLXB1cmUgc3RyaW5nIGZyb20gYSBzdHJp bmcgbGl0ZXJhbCBub3QgaW1wbGVtZW50ZWQgeWV0LgotCSBXZSBjb3VsZCBqdXN0IHVzZSBtYWtl X3N0cmluZyBoZXJlIGFuZCBsaXZlIHdpdGggdGhlIGV4dHJhIGNvcHkuICAqLwogICAgICAgZWFz c2VydCAoIU5JTFAgKFZwdXJpZnlfZmxhZykpOwotICAgICAgdGVtID0gaW50ZXJuX2RyaXZlciAo bWFrZV9wdXJlX2Nfc3RyaW5nIChzdHIsIGxlbiksIG9iYXJyYXksIHRlbSk7CisgICAgICB0ZW0g PSBpbnRlcm5fZHJpdmVyIChtYWtlX3N0cmluZyAoc3RyLCBsZW4pLCBvYmFycmF5LCB0ZW0pOwog ICAgIH0KICAgcmV0dXJuIHRlbTsKIH0KQEAgLTQyMTYsNyArNDIwOCw3IEBAIGludGVybl9jX3N0 cmluZ18xIChjb25zdCBjaGFyICpzdHIsIHB0cmRpZmZfdCBsZW4pCiBkZWZpbmVfc3ltYm9sIChM aXNwX09iamVjdCBzeW0sIGNoYXIgY29uc3QgKnN0cikKIHsKICAgcHRyZGlmZl90IGxlbiA9IHN0 cmxlbiAoc3RyKTsKLSAgTGlzcF9PYmplY3Qgc3RyaW5nID0gbWFrZV9wdXJlX2Nfc3RyaW5nIChz dHIsIGxlbik7CisgIExpc3BfT2JqZWN0IHN0cmluZyA9IG1ha2Vfc3RyaW5nIChzdHIsIGxlbik7 CiAgIGluaXRfc3ltYm9sIChzeW0sIHN0cmluZyk7CiAKICAgLyogUXVuYm91bmQgaXMgdW5pbnRl cm5lZCwgc28gdGhhdCBpdCdzIG5vdCBjb25mdXNlZCB3aXRoIGFueSBzeW1ib2wKQEAgLTQyNDMs OCArNDIzNSw3IEBAIERFRlVOICgiaW50ZXJuIiwgRmludGVybiwgU2ludGVybiwgMSwgMiwgMCwK IAogICB0ZW0gPSBvYmxvb2t1cCAob2JhcnJheSwgU1NEQVRBIChzdHJpbmcpLCBTQ0hBUlMgKHN0 cmluZyksIFNCWVRFUyAoc3RyaW5nKSk7CiAgIGlmICghU1lNQk9MUCAodGVtKSkKLSAgICB0ZW0g PSBpbnRlcm5fZHJpdmVyIChOSUxQIChWcHVyaWZ5X2ZsYWcpID8gc3RyaW5nIDogRnB1cmVjb3B5 IChzdHJpbmcpLAotCQkJIG9iYXJyYXksIHRlbSk7CisgICAgdGVtID0gaW50ZXJuX2RyaXZlciAo c3RyaW5nLCBvYmFycmF5LCB0ZW0pOwogICByZXR1cm4gdGVtOwogfQogCkBAIC00ODkzLDIzICs0 ODg0LDIzIEBAIHN5bXNfb2ZfbHJlYWQgKHZvaWQpCiB0byB0aGUgc3BlY2lmaWVkIGZpbGUgbmFt ZSBpZiBhIHN1ZmZpeCBpcyBhbGxvd2VkIG9yIHJlcXVpcmVkLiAgKi8pOwogI2lmZGVmIEhBVkVf TU9EVUxFUwogI2lmZGVmIE1PRFVMRVNfU0VDT05EQVJZX1NVRkZJWAotICBWbG9hZF9zdWZmaXhl cyA9IGxpc3Q0IChidWlsZF9wdXJlX2Nfc3RyaW5nICgiLmVsYyIpLAotCQkJICBidWlsZF9wdXJl X2Nfc3RyaW5nICgiLmVsIiksCi0JCQkgIGJ1aWxkX3B1cmVfY19zdHJpbmcgKE1PRFVMRVNfU1VG RklYKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfcHVyZV9jX3N0cmluZyAoTU9E VUxFU19TRUNPTkRBUllfU1VGRklYKSk7CisgIFZsb2FkX3N1ZmZpeGVzID0gbGlzdDQgKGJ1aWxk X3N0cmluZyAoIi5lbGMiKSwKKwkJCSAgYnVpbGRfc3RyaW5nICgiLmVsIiksCisJCQkgIGJ1aWxk X3N0cmluZyAoTU9EVUxFU19TVUZGSVgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBidWls ZF9zdHJpbmcgKE1PRFVMRVNfU0VDT05EQVJZX1NVRkZJWCkpOwogI2Vsc2UKLSAgVmxvYWRfc3Vm Zml4ZXMgPSBsaXN0MyAoYnVpbGRfcHVyZV9jX3N0cmluZyAoIi5lbGMiKSwKLQkJCSAgYnVpbGRf cHVyZV9jX3N0cmluZyAoIi5lbCIpLAotCQkJICBidWlsZF9wdXJlX2Nfc3RyaW5nIChNT0RVTEVT X1NVRkZJWCkpOworICBWbG9hZF9zdWZmaXhlcyA9IGxpc3QzIChidWlsZF9zdHJpbmcgKCIuZWxj IiksCisJCQkgIGJ1aWxkX3N0cmluZyAoIi5lbCIpLAorCQkJICBidWlsZF9zdHJpbmcgKE1PRFVM RVNfU1VGRklYKSk7CiAjZW5kaWYKICNlbHNlCi0gIFZsb2FkX3N1ZmZpeGVzID0gbGlzdDIgKGJ1 aWxkX3B1cmVfY19zdHJpbmcgKCIuZWxjIiksCi0JCQkgIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCIu ZWwiKSk7CisgIFZsb2FkX3N1ZmZpeGVzID0gbGlzdDIgKGJ1aWxkX3N0cmluZyAoIi5lbGMiKSwK KwkJCSAgYnVpbGRfc3RyaW5nICgiLmVsIikpOwogI2VuZGlmCiAgIERFRlZBUl9MSVNQICgibW9k dWxlLWZpbGUtc3VmZml4IiwgVm1vZHVsZV9maWxlX3N1ZmZpeCwKIAkgICAgICAgZG9jOiAvKiBT dWZmaXggb2YgbG9hZGFibGUgbW9kdWxlIGZpbGUsIG9yIG5pbCBpZiBtb2R1bGVzIGFyZSBub3Qg c3VwcG9ydGVkLiAgKi8pOwogI2lmZGVmIEhBVkVfTU9EVUxFUwotICBWbW9kdWxlX2ZpbGVfc3Vm Zml4ID0gYnVpbGRfcHVyZV9jX3N0cmluZyAoTU9EVUxFU19TVUZGSVgpOworICBWbW9kdWxlX2Zp bGVfc3VmZml4ID0gYnVpbGRfc3RyaW5nIChNT0RVTEVTX1NVRkZJWCk7CiAjZWxzZQogICBWbW9k dWxlX2ZpbGVfc3VmZml4ID0gUW5pbDsKICNlbmRpZgpAQCAtNTA1Miw3ICs1MDQzLDcgQEAgc3lt c19vZl9scmVhZCAodm9pZCkKIFdoZW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGVzLCB0 aGUgZmlsZSBpcyBjb25zaWRlcmVkIHRvIGJlIHNhZmUKIHRvIGxvYWQuICAqLyk7CiAgIFZieXRl Y29tcF92ZXJzaW9uX3JlZ2V4cAotICAgID0gYnVpbGRfcHVyZV9jX3N0cmluZyAoIl47OzsuXFwo aW4gRW1hY3MgdmVyc2lvblxcfGJ5dGVjb21wIHZlcnNpb24gRlNGXFwpIik7CisgICAgPSBidWls ZF9zdHJpbmcgKCJeOzs7LlxcKGluIEVtYWNzIHZlcnNpb25cXHxieXRlY29tcCB2ZXJzaW9uIEZT RlxcKSIpOwogCiAgIERFRlNZTSAoUWxleGljYWxfYmluZGluZywgImxleGljYWwtYmluZGluZyIp OwogICBERUZWQVJfTElTUCAoImxleGljYWwtYmluZGluZyIsIFZsZXhpY2FsX2JpbmRpbmcsCmRp ZmYgLS1naXQgYS9zcmMvcGR1bXBlci5jIGIvc3JjL3BkdW1wZXIuYwppbmRleCAzMzc3NDJmZGE0 YWRlLi5hOGZiYWMxNjFhOGNmIDEwMDY0NAotLS0gYS9zcmMvcGR1bXBlci5jCisrKyBiL3NyYy9w ZHVtcGVyLmMKQEAgLTI0NDAsNyArMjQ0MCw2IEBAIGR1bXBfc3ltYm9sIChzdHJ1Y3QgZHVtcF9j b250ZXh0ICpjdHgsCiAgIERVTVBfRklFTERfQ09QWSAoJm91dCwgc3ltYm9sLCB1LnMudHJhcHBl ZF93cml0ZSk7CiAgIERVTVBfRklFTERfQ09QWSAoJm91dCwgc3ltYm9sLCB1LnMuaW50ZXJuZWQp OwogICBEVU1QX0ZJRUxEX0NPUFkgKCZvdXQsIHN5bWJvbCwgdS5zLmRlY2xhcmVkX3NwZWNpYWwp OwotICBEVU1QX0ZJRUxEX0NPUFkgKCZvdXQsIHN5bWJvbCwgdS5zLnBpbm5lZCk7CiAgIGR1bXBf ZmllbGRfbHYgKGN0eCwgJm91dCwgc3ltYm9sLCAmc3ltYm9sLT51LnMubmFtZSwgV0VJR0hUX1NU Uk9ORyk7CiAgIHN3aXRjaCAoc3ltYm9sLT51LnMucmVkaXJlY3QpCiAgICAgewpAQCAtMjY3Myw3 ICsyNjcyLDYgQEAgZHVtcF9oYXNoX3RhYmxlIChzdHJ1Y3QgZHVtcF9jb250ZXh0ICpjdHgsCiAg ICAgIHRoZW0gYXMgY2xvc2UgdG8gdGhlIGhhc2ggdGFibGUgYXMgcG9zc2libGUuICAqLwogICBE VU1QX0ZJRUxEX0NPUFkgKG91dCwgaGFzaCwgY291bnQpOwogICBEVU1QX0ZJRUxEX0NPUFkgKG91 dCwgaGFzaCwgbmV4dF9mcmVlKTsKLSAgRFVNUF9GSUVMRF9DT1BZIChvdXQsIGhhc2gsIHB1cmVj b3B5KTsKICAgRFVNUF9GSUVMRF9DT1BZIChvdXQsIGhhc2gsIG11dGFibGUpOwogICBEVU1QX0ZJ RUxEX0NPUFkgKG91dCwgaGFzaCwgcmVoYXNoX3RocmVzaG9sZCk7CiAgIERVTVBfRklFTERfQ09Q WSAob3V0LCBoYXNoLCByZWhhc2hfc2l6ZSk7CkBAIC01NDY3LDggKzU0NjUsNiBAQCBERUZVTiAo InBkdW1wZXItc3RhdHMiLCBGcGR1bXBlcl9zdGF0cywgU3BkdW1wZXJfc3RhdHMsIDAsIDAsIDAs CiAJCUZjb25zIChRZHVtcF9maWxlX25hbWUsIGR1bXBfZm4pKTsKIH0KIAotI2VuZGlmIC8qIEhB VkVfUERVTVBFUiAqLwotCiAMCiBzdGF0aWMgdm9pZAogdGhhd19oYXNoX3RhYmxlcyAodm9pZCkK QEAgLTU0ODMsNiArNTQ3OSw3IEBAIGluaXRfcGR1bXBlcl9vbmNlICh2b2lkKQogewogICBwZHVt cGVyX2RvX25vd19hbmRfYWZ0ZXJfbG9hZCAodGhhd19oYXNoX3RhYmxlcyk7CiB9CisjZW5kaWYg LyogSEFWRV9QRFVNUEVSICovCiAKIHZvaWQKIHN5bXNfb2ZfcGR1bXBlciAodm9pZCkKZGlmZiAt LWdpdCBhL3NyYy9wcmludC5jIGIvc3JjL3ByaW50LmMKaW5kZXggMTRhZjkxOTU0NzVlZi4uZGYw MDhjZjNiMTI5NiAxMDA2NDQKLS0tIGEvc3JjL3ByaW50LmMKKysrIGIvc3JjL3ByaW50LmMKQEAg LTE1ODEsMTIgKzE1ODEsNiBAQCBwcmludF92ZWN0b3JsaWtlIChMaXNwX09iamVjdCBvYmosIExp c3BfT2JqZWN0IHByaW50Y2hhcmZ1biwgYm9vbCBlc2NhcGVmbGFnLAogCXByaW50X29iamVjdCAo Rmhhc2hfdGFibGVfcmVoYXNoX3RocmVzaG9sZCAob2JqKSwKIAkJICAgICAgcHJpbnRjaGFyZnVu LCBlc2NhcGVmbGFnKTsKIAotCWlmIChoLT5wdXJlY29weSkKLQkgIHsKLQkgICAgcHJpbnRfY19z dHJpbmcgKCIgcHVyZWNvcHkgIiwgcHJpbnRjaGFyZnVuKTsKLQkgICAgcHJpbnRfb2JqZWN0ICho LT5wdXJlY29weSA/IFF0IDogUW5pbCwgcHJpbnRjaGFyZnVuLCBlc2NhcGVmbGFnKTsKLQkgIH0K LQogCXByaW50X2Nfc3RyaW5nICgiIGRhdGEgIiwgcHJpbnRjaGFyZnVuKTsKIAogCS8qIFByaW50 IHRoZSBkYXRhIGhlcmUgYXMgYSBwbGlzdC4gKi8KZGlmZiAtLWdpdCBhL3NyYy9wcm9jZXNzLmMg Yi9zcmMvcHJvY2Vzcy5jCmluZGV4IGI5OGJjMjk3YTNmM2YuLjkwYTExNDFhYjY1NjQgMTAwNjQ0 Ci0tLSBhL3NyYy9wcm9jZXNzLmMKKysrIGIvc3JjL3Byb2Nlc3MuYwpAQCAtODU2Niw3ICs4NTY2 LDcgQEAgc3ltc19vZl9wcm9jZXNzICh2b2lkKQogICAgY29uc3Qgc3RydWN0IHNvY2tldF9vcHRp b25zICpzb3B0OwogCiAjZGVmaW5lIEFERF9TVUJGRUFUVVJFKGtleSwgdmFsKSBcCi0gIHN1YmZl YXR1cmVzID0gcHVyZV9jb25zIChwdXJlX2NvbnMgKGtleSwgcHVyZV9jb25zICh2YWwsIFFuaWwp KSwgc3ViZmVhdHVyZXMpCisgIHN1YmZlYXR1cmVzID0gRmNvbnMgKEZjb25zIChrZXksIEZjb25z ICh2YWwsIFFuaWwpKSwgc3ViZmVhdHVyZXMpCiAKICAgIEFERF9TVUJGRUFUVVJFIChRQ25vd2Fp dCwgUXQpOwogI2lmZGVmIERBVEFHUkFNX1NPQ0tFVFMKQEAgLTg1ODgsNyArODU4OCw3IEBAICNk ZWZpbmUgQUREX1NVQkZFQVRVUkUoa2V5LCB2YWwpIFwKICAgIEFERF9TVUJGRUFUVVJFIChRQ3Nl cnZlciwgUXQpOwogCiAgICBmb3IgKHNvcHQgPSBzb2NrZXRfb3B0aW9uczsgc29wdC0+bmFtZTsg c29wdCsrKQotICAgICBzdWJmZWF0dXJlcyA9IHB1cmVfY29ucyAoaW50ZXJuX2Nfc3RyaW5nIChz b3B0LT5uYW1lKSwgc3ViZmVhdHVyZXMpOworICAgICBzdWJmZWF0dXJlcyA9IEZjb25zIChpbnRl cm5fY19zdHJpbmcgKHNvcHQtPm5hbWUpLCBzdWJmZWF0dXJlcyk7CiAKICAgIEZwcm92aWRlIChp bnRlcm5fY19zdHJpbmcgKCJtYWtlLW5ldHdvcmstcHJvY2VzcyIpLCBzdWJmZWF0dXJlcyk7CiAg fQpkaWZmIC0tZ2l0IGEvc3JjL3Byb2ZpbGVyLmMgYi9zcmMvcHJvZmlsZXIuYwppbmRleCAyMWFl MjQ0N2FhNGVlLi40NGJmNTdlYmEyMDc4IDEwMDY0NAotLS0gYS9zcmMvcHJvZmlsZXIuYworKysg Yi9zcmMvcHJvZmlsZXIuYwpAQCAtNjMsNyArNjMsNyBAQCBtYWtlX2xvZyAodm9pZCkKICAgTGlz cF9PYmplY3QgbG9nID0gbWFrZV9oYXNoX3RhYmxlIChoYXNodGVzdF9wcm9maWxlciwgaGVhcF9z aXplLAogCQkJCSAgICAgREVGQVVMVF9SRUhBU0hfU0laRSwKIAkJCQkgICAgIERFRkFVTFRfUkVI QVNIX1RIUkVTSE9MRCwKLQkJCQkgICAgIFFuaWwsIGZhbHNlKTsKKwkJCQkgICAgIFFuaWwpOwog ICBzdHJ1Y3QgTGlzcF9IYXNoX1RhYmxlICpoID0gWEhBU0hfVEFCTEUgKGxvZyk7CiAKICAgLyog V2hhdCBpcyBzcGVjaWFsIGFib3V0IG91ciBoYXNoLXRhYmxlcyBpcyB0aGF0IHRoZSB2YWx1ZXMg YXJlIHByZS1maWxsZWQKZGlmZiAtLWdpdCBhL3NyYy9wdXJlc2l6ZS5oIGIvc3JjL3B1cmVzaXpl LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxMWQwYjRkMzY5NTIuLjAwMDAwMDAw MDAwMDAKLS0tIGEvc3JjL3B1cmVzaXplLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBA QAotLyogSG93IG11Y2ggcmVhZC1vbmx5IExpc3Agc3RvcmFnZSBhIGR1bXBlZCBFbWFjcyBuZWVk cy4KLSAgIENvcHlyaWdodCAoQykgMTk5MywgMjAwMS0yMDIxIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotCi1UaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCi0KLUdOVSBFbWFj cyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci1pdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0Ci15b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0KLUdOVSBFbWFjcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLU1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0KLVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi1hbG9uZyB3aXRoIEdOVSBFbWFjcy4gIElmIG5vdCwg c2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotCi0jaWZuZGVmIEVNQUNT X1BVUkVTSVpFX0gKLSNkZWZpbmUgRU1BQ1NfUFVSRVNJWkVfSAotCi0jaW5jbHVkZSAibGlzcC5o IgotCi1JTkxJTkVfSEVBREVSX0JFR0lOCi0KLS8qIERlZmluZSBQVVJFU0laRSwgdGhlIG51bWJl ciBvZiBieXRlcyBvZiBwdXJlIExpc3AgY29kZSB0byBsZWF2ZSBzcGFjZSBmb3IuCi0KLSAgIEF0 IG9uZSBwb2ludCwgdGhpcyB3YXMgZGVmaW5lZCBpbiBjb25maWcuaCwgbWVhbmluZyB0aGF0IGNo YW5naW5nCi0gICBQVVJFU0laRSB3b3VsZCBtYWtlIE1ha2UgcmVjb21waWxlIGFsbCBvZiBFbWFj cy4gIEJ1dCBvbmx5IGEgZmV3Ci0gICBmaWxlcyBhY3R1YWxseSB1c2UgUFVSRVNJWkUsIHNvIHdl IHNwbGl0IGl0IG91dCB0byBpdHMgb3duIC5oIGZpbGUuCi0KLSAgIE1ha2Ugc3VyZSB0byBpbmNs dWRlIHRoaXMgZmlsZSBhZnRlciBjb25maWcuaCwgc2luY2UgdGhhdCB0ZWxscyB1cwotICAgd2hl dGhlciB3ZSBhcmUgcnVubmluZyBYIHdpbmRvd3MsIHdoaWNoIHRlbGxzIHVzIGhvdyBtdWNoIHB1 cmUKLSAgIHN0b3JhZ2UgdG8gYWxsb2NhdGUuICAqLwotCi0vKiBGaXJzdCBkZWZpbmUgYSBtZWFz dXJlIG9mIHRoZSBhbW91bnQgb2YgZGF0YSB3ZSBoYXZlLiAgKi8KLQotLyogQSBzeXN0ZW0gY29u ZmlndXJhdGlvbiBmaWxlIG1heSBzZXQgdGhpcyB0byByZXF1ZXN0IGEgY2VydGFpbiBleHRyYQot ICAgYW1vdW50IG9mIHN0b3JhZ2UuICBUaGlzIGlzIGEgbG90IG1vcmUgdXBkYXRlLXJvYnVzdCB0 aGF0IGRlZmluaW5nCi0gICBCQVNFX1BVUkVTSVpFIG9yIGV2ZW4gUFVSRVNJWkUgZGlyZWN0bHku ICAqLwotI2lmbmRlZiBTWVNURU1fUFVSRVNJWkVfRVhUUkEKLSNkZWZpbmUgU1lTVEVNX1BVUkVT SVpFX0VYVFJBIDAKLSNlbmRpZgotCi0jaWZuZGVmIFNJVEVMT0FEX1BVUkVTSVpFX0VYVFJBCi0j ZGVmaW5lIFNJVEVMT0FEX1BVUkVTSVpFX0VYVFJBIDAKLSNlbmRpZgotCi0jaWZuZGVmIEJBU0Vf UFVSRVNJWkUKLSNkZWZpbmUgQkFTRV9QVVJFU0laRSAoMjAwMDAwMCArIFNZU1RFTV9QVVJFU0la RV9FWFRSQSArIFNJVEVMT0FEX1BVUkVTSVpFX0VYVFJBKQotI2VuZGlmCi0KLS8qIEluY3JlYXNl IEJBU0VfUFVSRVNJWkUgYnkgYSByYXRpbyBkZXBlbmRpbmcgb24gdGhlIG1hY2hpbmUncyB3b3Jk IHNpemUuICAqLwotI2lmbmRlZiBQVVJFU0laRV9SQVRJTwotI2lmIEVNQUNTX0lOVF9NQVggPj4g MzEgIT0gMAotI2lmIFBUUkRJRkZfTUFYID4+IDMxICE9IDAKLSNkZWZpbmUgUFVSRVNJWkVfUkFU SU8gMTAgLyA2CS8qIERvbid0IHN1cnJvdW5kIHdpdGggYCgpJy4gICovCi0jZWxzZQotI2RlZmlu ZSBQVVJFU0laRV9SQVRJTyA4IC8gNgkvKiBEb24ndCBzdXJyb3VuZCB3aXRoIGAoKScuICAqLwot I2VuZGlmCi0jZWxzZQotI2RlZmluZSBQVVJFU0laRV9SQVRJTyAxCi0jZW5kaWYKLSNlbmRpZgot Ci0jaWZkZWYgRU5BQkxFX0NIRUNLSU5HCi0vKiBFTkFCTEVfQ0hFQ0tJTkcgc29tZWhvdyBpbmNy ZWFzZXMgdGhlIHB1cmVzcGFjZSB1c2VkLCBwcm9iYWJseSBiZWNhdXNlCi0gICBpdCB0ZW5kcyB0 byBjYXVzZSBzb21lIG1hY3JvIGFyZ3VtZW50cyB0byBiZSBldmFsdWF0ZWQgdHdpY2UuICBUaGlz IGlzCi0gICBhIGJ1ZywgYnV0IGl0J3MgZGlmZmljdWx0IHRvIHRyYWNrIGl0IGRvd24uICAqLwot I2RlZmluZSBQVVJFU0laRV9DSEVDS0lOR19SQVRJTyAxMiAvIDEwCS8qIERvbid0IHN1cnJvdW5k IHdpdGggYCgpJy4gICovCi0jZWxzZQotI2RlZmluZSBQVVJFU0laRV9DSEVDS0lOR19SQVRJTyAx Ci0jZW5kaWYKLQotLyogVGhpcyBpcyB0aGUgYWN0dWFsIHNpemUgaW4gYnl0ZXMgdG8gYWxsb2Nh dGUuICAqLwotI2lmbmRlZiBQVVJFU0laRQotI2RlZmluZSBQVVJFU0laRSAgKEJBU0VfUFVSRVNJ WkUgKiBQVVJFU0laRV9SQVRJTyAqIFBVUkVTSVpFX0NIRUNLSU5HX1JBVElPKQotI2VuZGlmCi0K LWV4dGVybiBBVk9JRCBwdXJlX3dyaXRlX2Vycm9yIChMaXNwX09iamVjdCk7Ci0KLWV4dGVybiBF TUFDU19JTlQgcHVyZVtdOwotCi0vKiBUaGUgcHVyZXNpemVfaF8qIG1hY3JvcyBhcmUgcHJpdmF0 ZSB0byB0aGlzIGluY2x1ZGUgZmlsZS4gICovCi0KLS8qIFRydWUgaWYgUFRSIGlzIHB1cmUuICAq LwotCi0jZGVmaW5lIHB1cmVzaXplX2hfUFVSRV9QKHB0cikgXAotICAoKHVpbnRwdHJfdCkgKHB0 cikgLSAodWludHB0cl90KSBwdXJlIDw9IFBVUkVTSVpFKQotCi1JTkxJTkUgYm9vbAotUFVSRV9Q ICh2b2lkICpwdHIpCi17Ci0gIHJldHVybiBwdXJlc2l6ZV9oX1BVUkVfUCAocHRyKTsKLX0KLQot LyogU2lnbmFsIGFuIGVycm9yIGlmIE9CSiBpcyBwdXJlLiAgUFRSIGlzIE9CSiB1bnRhZ2dlZC4g ICovCi0KLSNkZWZpbmUgcHVyZXNpemVfaF9DSEVDS19JTVBVUkUob2JqLCBwdHIpIFwKLSAgKFBV UkVfUCAocHRyKSA/IHB1cmVfd3JpdGVfZXJyb3IgKG9iaikgOiAodm9pZCkgMCkKLQotSU5MSU5F IHZvaWQKLUNIRUNLX0lNUFVSRSAoTGlzcF9PYmplY3Qgb2JqLCB2b2lkICpwdHIpCi17Ci0gIHB1 cmVzaXplX2hfQ0hFQ0tfSU1QVVJFIChvYmosIHB0cik7Ci19Ci0KLSNpZiBERUZJTkVfS0VZX09Q U19BU19NQUNST1MKLSMgZGVmaW5lIFBVUkVfUChwdHIpIHB1cmVzaXplX2hfUFVSRV9QIChwdHIp Ci0jIGRlZmluZSBDSEVDS19JTVBVUkUob2JqLCBwdHIpIHB1cmVzaXplX2hfQ0hFQ0tfSU1QVVJF IChvYmosIHB0cikKLSNlbmRpZgotCi1JTkxJTkVfSEVBREVSX0VORAotCi0jZW5kaWYgLyogRU1B Q1NfUFVSRVNJWkVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3NlYXJjaC5jIGIvc3JjL3NlYXJjaC5j CmluZGV4IGM3NTdiZjNkMWYyODEuLjVhMjE0ZGIwMDkyZDIgMTAwNjQ0Ci0tLSBhL3NyYy9zZWFy Y2guYworKysgYi9zcmMvc2VhcmNoLmMKQEAgLTMzNTQsMTkgKzMzNTQsMTkgQEAgc3ltc19vZl9z ZWFyY2ggKHZvaWQpCiAgIERFRlNZTSAoUWludmFsaWRfcmVnZXhwLCAiaW52YWxpZC1yZWdleHAi KTsKIAogICBGcHV0IChRc2VhcmNoX2ZhaWxlZCwgUWVycm9yX2NvbmRpdGlvbnMsCi0JcHVyZV9s aXN0IChRc2VhcmNoX2ZhaWxlZCwgUWVycm9yKSk7CisJbGlzdCAoUXNlYXJjaF9mYWlsZWQsIFFl cnJvcikpOwogICBGcHV0IChRc2VhcmNoX2ZhaWxlZCwgUWVycm9yX21lc3NhZ2UsCi0JYnVpbGRf cHVyZV9jX3N0cmluZyAoIlNlYXJjaCBmYWlsZWQiKSk7CisJYnVpbGRfc3RyaW5nICgiU2VhcmNo IGZhaWxlZCIpKTsKIAogICBGcHV0IChRdXNlcl9zZWFyY2hfZmFpbGVkLCBRZXJyb3JfY29uZGl0 aW9ucywKLQlwdXJlX2xpc3QgKFF1c2VyX3NlYXJjaF9mYWlsZWQsIFF1c2VyX2Vycm9yLCBRc2Vh cmNoX2ZhaWxlZCwgUWVycm9yKSk7CisJbGlzdCAoUXVzZXJfc2VhcmNoX2ZhaWxlZCwgUXVzZXJf ZXJyb3IsIFFzZWFyY2hfZmFpbGVkLCBRZXJyb3IpKTsKICAgRnB1dCAoUXVzZXJfc2VhcmNoX2Zh aWxlZCwgUWVycm9yX21lc3NhZ2UsCi0gICAgICAgIGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJTZWFy Y2ggZmFpbGVkIikpOworICAgICAgICBidWlsZF9zdHJpbmcgKCJTZWFyY2ggZmFpbGVkIikpOwog CiAgIEZwdXQgKFFpbnZhbGlkX3JlZ2V4cCwgUWVycm9yX2NvbmRpdGlvbnMsCi0JcHVyZV9saXN0 IChRaW52YWxpZF9yZWdleHAsIFFlcnJvcikpOworCWxpc3QgKFFpbnZhbGlkX3JlZ2V4cCwgUWVy cm9yKSk7CiAgIEZwdXQgKFFpbnZhbGlkX3JlZ2V4cCwgUWVycm9yX21lc3NhZ2UsCi0JYnVpbGRf cHVyZV9jX3N0cmluZyAoIkludmFsaWQgcmVnZXhwIikpOworCWJ1aWxkX3N0cmluZyAoIkludmFs aWQgcmVnZXhwIikpOwogCiAgIHJlX21hdGNoX29iamVjdCA9IFFuaWw7CiAgIHN0YXRpY3BybyAo JnJlX21hdGNoX29iamVjdCk7CmRpZmYgLS1naXQgYS9zcmMvc3ludGF4LmMgYi9zcmMvc3ludGF4 LmMKaW5kZXggOWZiZjg4NTM1ZjNlYy4uOTkzZjkxYWYxOWFjMCAxMDA2NDQKLS0tIGEvc3JjL3N5 bnRheC5jCisrKyBiL3NyYy9zeW50YXguYwpAQCAtMzcxOSw5ICszNzE5LDkgQEAgc3ltc19vZl9z eW50YXggKHZvaWQpCiAKICAgREVGU1lNIChRc2Nhbl9lcnJvciwgInNjYW4tZXJyb3IiKTsKICAg RnB1dCAoUXNjYW5fZXJyb3IsIFFlcnJvcl9jb25kaXRpb25zLAotCXB1cmVfbGlzdCAoUXNjYW5f ZXJyb3IsIFFlcnJvcikpOworCWxpc3QgKFFzY2FuX2Vycm9yLCBRZXJyb3IpKTsKICAgRnB1dCAo UXNjYW5fZXJyb3IsIFFlcnJvcl9tZXNzYWdlLAotCWJ1aWxkX3B1cmVfY19zdHJpbmcgKCJTY2Fu IGVycm9yIikpOworCWJ1aWxkX3N0cmluZyAoIlNjYW4gZXJyb3IiKSk7CiAKICAgREVGVkFSX0JP T0wgKCJwYXJzZS1zZXhwLWlnbm9yZS1jb21tZW50cyIsIHBhcnNlX3NleHBfaWdub3JlX2NvbW1l bnRzLAogCSAgICAgICBkb2M6IC8qIE5vbi1uaWwgbWVhbnMgYGZvcndhcmQtc2V4cCcsIGV0Yy4s IHNob3VsZCB0cmVhdCBjb21tZW50cyBhcyB3aGl0ZXNwYWNlLiAgKi8pOwpkaWZmIC0tZ2l0IGEv c3JjL3czMmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4IDlkYjM2N2JmYWZlNzUuLjNiM2FkMmY1 NWI5YWEgMTAwNjQ0Ci0tLSBhL3NyYy93MzJmbnMuYworKysgYi9zcmMvdzMyZm5zLmMKQEAgLTEw MzkwLDkgKzEwMzkwLDkgQEAgc3ltc19vZl93MzJmbnMgKHZvaWQpCiAgIERFRlNZTSAoUWpzb24s ICJqc29uIik7CiAKICAgRnB1dCAoUXVuZGVmaW5lZF9jb2xvciwgUWVycm9yX2NvbmRpdGlvbnMs Ci0JcHVyZV9saXN0IChRdW5kZWZpbmVkX2NvbG9yLCBRZXJyb3IpKTsKKwlsaXN0IChRdW5kZWZp bmVkX2NvbG9yLCBRZXJyb3IpKTsKICAgRnB1dCAoUXVuZGVmaW5lZF9jb2xvciwgUWVycm9yX21l c3NhZ2UsCi0JYnVpbGRfcHVyZV9jX3N0cmluZyAoIlVuZGVmaW5lZCBjb2xvciIpKTsKKwlidWls ZF9zdHJpbmcgKCJVbmRlZmluZWQgY29sb3IiKSk7CiAKICAgc3RhdGljcHJvICgmdzMyX2dyYWJi ZWRfa2V5cyk7CiAgIHczMl9ncmFiYmVkX2tleXMgPSBRbmlsOwpkaWZmIC0tZ2l0IGEvc3JjL3hk aXNwLmMgYi9zcmMveGRpc3AuYwppbmRleCBjYzBhNjg5YmEzMmU5Li4zODA5OTM1MGQ2NzYxIDEw MDY0NAotLS0gYS9zcmMveGRpc3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAtMzQ4NjIsNyArMzQ4 NjIsNyBAQCBzeW1zX29mX3hkaXNwICh2b2lkKQogICBzdGF0aWNwcm8gKCZlY2hvX2FyZWFfYnVm ZmVyWzBdKTsKICAgc3RhdGljcHJvICgmZWNob19hcmVhX2J1ZmZlclsxXSk7CiAKLSAgVm1lc3Nh Z2VzX2J1ZmZlcl9uYW1lID0gYnVpbGRfcHVyZV9jX3N0cmluZyAoIipNZXNzYWdlcyoiKTsKKyAg Vm1lc3NhZ2VzX2J1ZmZlcl9uYW1lID0gYnVpbGRfc3RyaW5nICgiKk1lc3NhZ2VzKiIpOwogICBz dGF0aWNwcm8gKCZWbWVzc2FnZXNfYnVmZmVyX25hbWUpOwogCiAgIG1vZGVfbGluZV9wcm9wdHJh bnNfYWxpc3QgPSBRbmlsOwpAQCAtMzQ5NTQsNyArMzQ5NTQsNyBAQCBzeW1zX29mX3hkaXNwICh2 b2lkKQogICBERUZWQVJfTElTUCAoIm92ZXJsYXktYXJyb3ctc3RyaW5nIiwgVm92ZXJsYXlfYXJy b3dfc3RyaW5nLAogICAgIGRvYzogLyogU3RyaW5nIHRvIGRpc3BsYXkgYXMgYW4gYXJyb3cgaW4g bm9uLXdpbmRvdyBmcmFtZXMuCiBTZWUgYWxzbyBgb3ZlcmxheS1hcnJvdy1wb3NpdGlvbicuICAq Lyk7Ci0gIFZvdmVybGF5X2Fycm93X3N0cmluZyA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCI9PiIp OworICBWb3ZlcmxheV9hcnJvd19zdHJpbmcgPSBidWlsZF9zdHJpbmcgKCI9PiIpOwogCiAgIERF RlZBUl9MSVNQICgib3ZlcmxheS1hcnJvdy12YXJpYWJsZS1saXN0IiwgVm92ZXJsYXlfYXJyb3df dmFyaWFibGVfbGlzdCwKICAgICBkb2M6IC8qIExpc3Qgb2YgdmFyaWFibGVzIChzeW1ib2xzKSB3 aGljaCBob2xkIG1hcmtlcnMgZm9yIG92ZXJsYXkgYXJyb3dzLgpAQCAtMzUwNzksMTcgKzM1MDc5 LDE3IEBAIHN5bXNfb2ZfeGRpc3AgKHZvaWQpCiBUaGlzIHZhcmlhYmxlIGhhcyB0aGUgc2FtZSBz dHJ1Y3R1cmUgYXMgYG1vZGUtbGluZS1mb3JtYXQnICh3aGljaCBzZWUpLAogYW5kIGlzIHVzZWQg b25seSBvbiBmcmFtZXMgZm9yIHdoaWNoIG5vIGV4cGxpY2l0IG5hbWUgaGFzIGJlZW4gc2V0CiBc KHNlZSBgbW9kaWZ5LWZyYW1lLXBhcmFtZXRlcnMnKS4gICovKTsKLSAgLyogRG8gbm90IG5lc3Qg Y2FsbHMgdG8gcHVyZV9saXN0LiAgVGhpcyB3b3JrcyBhcm91bmQgYSBidWcgaW4KKyAgLyogRG8g bm90IG5lc3QgY2FsbHMgdG8gbGlzdC4gIFRoaXMgd29ya3MgYXJvdW5kIGEgYnVnIGluCiAgICAg IE9yYWNsZSBEZXZlbG9wZXIgU3R1ZGlvIDEyLjYuICAqLwogICBMaXNwX09iamVjdCBpY29uX3Rp dGxlX25hbWVfZm9ybWF0Ci0gICAgPSBwdXJlX2xpc3QgKGVtcHR5X3VuaWJ5dGVfc3RyaW5nLAot CQkgYnVpbGRfcHVyZV9jX3N0cmluZyAoIiViIC0gR05VIEVtYWNzIGF0ICIpLAotCQkgaW50ZXJu X2Nfc3RyaW5nICgic3lzdGVtLW5hbWUiKSk7CisgICAgPSBsaXN0IChlbXB0eV91bmlieXRlX3N0 cmluZywKKwkgICAgYnVpbGRfc3RyaW5nICgiJWIgLSBHTlUgRW1hY3MgYXQgIiksCisJICAgIGlu dGVybl9jX3N0cmluZyAoInN5c3RlbS1uYW1lIikpOwogICBWaWNvbl90aXRsZV9mb3JtYXQKICAg ICA9IFZmcmFtZV90aXRsZV9mb3JtYXQKLSAgICA9IHB1cmVfbGlzdCAoaW50ZXJuX2Nfc3RyaW5n ICgibXVsdGlwbGUtZnJhbWVzIiksCi0JCSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiJWIiKSwKLQkJ IGljb25fdGl0bGVfbmFtZV9mb3JtYXQpOworICAgID0gbGlzdCAoaW50ZXJuX2Nfc3RyaW5nICgi bXVsdGlwbGUtZnJhbWVzIiksCisJICAgIGJ1aWxkX3N0cmluZyAoIiViIiksCisJICAgIGljb25f dGl0bGVfbmFtZV9mb3JtYXQpOwogCiAgIERFRlZBUl9MSVNQICgibWVzc2FnZS1sb2ctbWF4Iiwg Vm1lc3NhZ2VfbG9nX21heCwKICAgICBkb2M6IC8qIE1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRv IGtlZXAgaW4gdGhlIG1lc3NhZ2UgbG9nIGJ1ZmZlci4KZGlmZiAtLWdpdCBhL3NyYy94ZmFjZXMu YyBiL3NyYy94ZmFjZXMuYwppbmRleCBhYjQ0NDBmNDZhZDBkLi42Y2IwOGIwNDc1Y2JhIDEwMDY0 NAotLS0gYS9zcmMveGZhY2VzLmMKKysrIGIvc3JjL3hmYWNlcy5jCkBAIC03MDQ0LDcgKzcwNDQs NyBAQCBzeW1zX29mX3hmYWNlcyAodm9pZCkKIFRoaXMgc3RpcHBsZSBwYXR0ZXJuIGlzIHVzZWQg b24gbW9ub2Nocm9tZSBkaXNwbGF5cwogaW5zdGVhZCBvZiBzaGFkZXMgb2YgZ3JheSBmb3IgYSBm YWNlIGJhY2tncm91bmQgY29sb3IuCiBTZWUgYHNldC1mYWNlLXN0aXBwbGUnIGZvciBwb3NzaWJs ZSB2YWx1ZXMgZm9yIHRoaXMgdmFyaWFibGUuICAqLyk7Ci0gIFZmYWNlX2RlZmF1bHRfc3RpcHBs ZSA9IGJ1aWxkX3B1cmVfY19zdHJpbmcgKCJncmF5MyIpOworICBWZmFjZV9kZWZhdWx0X3N0aXBw bGUgPSBidWlsZF9zdHJpbmcgKCJncmF5MyIpOwogCiAgIERFRlZBUl9MSVNQICgidHR5LWRlZmlu ZWQtY29sb3ItYWxpc3QiLCBWdHR5X2RlZmluZWRfY29sb3JfYWxpc3QsCiAgICBkb2M6IC8qIEFu IGFsaXN0IG9mIGRlZmluZWQgdGVybWluYWwgY29sb3JzIGFuZCB0aGVpciBSR0IgdmFsdWVzLgpk aWZmIC0tZ2l0IGEvc3JjL3hmbnMuYyBiL3NyYy94Zm5zLmMKaW5kZXggZDkwNjQ0ODE5YjZmNS4u ZTllYWQzNWNjY2NiNSAxMDA2NDQKLS0tIGEvc3JjL3hmbnMuYworKysgYi9zcmMveGZucy5jCkBA IC03ODc4LDkgKzc4NzgsOSBAQCBzeW1zX29mX3hmbnMgKHZvaWQpCiAjZW5kaWYKIAogICBGcHV0 IChRdW5kZWZpbmVkX2NvbG9yLCBRZXJyb3JfY29uZGl0aW9ucywKLQlwdXJlX2xpc3QgKFF1bmRl ZmluZWRfY29sb3IsIFFlcnJvcikpOworCWxpc3QgKFF1bmRlZmluZWRfY29sb3IsIFFlcnJvcikp OwogICBGcHV0IChRdW5kZWZpbmVkX2NvbG9yLCBRZXJyb3JfbWVzc2FnZSwKLQlidWlsZF9wdXJl X2Nfc3RyaW5nICgiVW5kZWZpbmVkIGNvbG9yIikpOworCWJ1aWxkX3N0cmluZyAoIlVuZGVmaW5l ZCBjb2xvciIpKTsKIAogICBERUZWQVJfTElTUCAoIngtcG9pbnRlci1zaGFwZSIsIFZ4X3BvaW50 ZXJfc2hhcGUsCiAgICAgZG9jOiAvKiBUaGUgc2hhcGUgb2YgdGhlIHBvaW50ZXIgd2hlbiBvdmVy IHRleHQuCkBAIC04MDkxLDcgKzgwOTEsNyBAQCBzeW1zX29mX3hmbnMgKHZvaWQpCiAgICAgY2hh ciBndGtfdmVyc2lvbltzaXplb2YgIi4uIiArIDMgKiBJTlRfU1RSTEVOX0JPVU5EIChpbnQpXTsK ICAgICBpbnQgbGVuID0gc3ByaW50ZiAoZ3RrX3ZlcnNpb24sICIlZC4lZC4lZCIsCiAJCSAgICAg ICBHVEtfTUFKT1JfVkVSU0lPTiwgR1RLX01JTk9SX1ZFUlNJT04sIEdUS19NSUNST19WRVJTSU9O KTsKLSAgICBWZ3RrX3ZlcnNpb25fc3RyaW5nID0gbWFrZV9wdXJlX3N0cmluZyAoZ3RrX3ZlcnNp b24sIGxlbiwgbGVuLCBmYWxzZSk7CisgICAgVmd0a192ZXJzaW9uX3N0cmluZyA9IG1ha2Vfc3Bl Y2lmaWVkX3N0cmluZyAoZ3RrX3ZlcnNpb24sIGxlbiwgbGVuLCBmYWxzZSk7CiAgIH0KICNlbmRp ZiAvKiBVU0VfR1RLICovCiAKQEAgLTgxMDUsNyArODEwNSw4IEBAIHN5bXNfb2ZfeGZucyAodm9p ZCkKICAgICBpbnQgbGVuID0gc3ByaW50ZiAoY2Fpcm9fdmVyc2lvbiwgIiVkLiVkLiVkIiwKIAkJ ICAgICAgIENBSVJPX1ZFUlNJT05fTUFKT1IsIENBSVJPX1ZFUlNJT05fTUlOT1IsCiAgICAgICAg ICAgICAgICAgICAgICAgIENBSVJPX1ZFUlNJT05fTUlDUk8pOwotICAgIFZjYWlyb192ZXJzaW9u X3N0cmluZyA9IG1ha2VfcHVyZV9zdHJpbmcgKGNhaXJvX3ZlcnNpb24sIGxlbiwgbGVuLCBmYWxz ZSk7CisgICAgVmNhaXJvX3ZlcnNpb25fc3RyaW5nID0gbWFrZV9zcGVjaWZpZWRfc3RyaW5nIChj YWlyb192ZXJzaW9uLCBsZW4sIGxlbiwKKwkJCQkJCSAgIGZhbHNlKTsKICAgfQogI2VuZGlmCiAK ZGlmZiAtLWdpdCBhL3NyYy94dGVybS5jIGIvc3JjL3h0ZXJtLmMKaW5kZXggNzQ0YjgwYzY4YTAw Mi4uNDM3YzA4YjUyNmY2MCAxMDA2NDQKLS0tIGEvc3JjL3h0ZXJtLmMKKysrIGIvc3JjL3h0ZXJt LmMKQEAgLTEzNjQ5LDcgKzEzNjQ5LDcgQEAgc3ltc19vZl94dGVybSAodm9pZCkKICAgREVGU1lN IChRbGF0aW5fMSwgImxhdGluLTEiKTsKIAogI2lmZGVmIFVTRV9HVEsKLSAgeGdfZGVmYXVsdF9p Y29uX2ZpbGUgPSBidWlsZF9wdXJlX2Nfc3RyaW5nICgiaWNvbnMvaGljb2xvci9zY2FsYWJsZS9h cHBzL2VtYWNzLnN2ZyIpOworICB4Z19kZWZhdWx0X2ljb25fZmlsZSA9IGJ1aWxkX3N0cmluZyAo Imljb25zL2hpY29sb3Ivc2NhbGFibGUvYXBwcy9lbWFjcy5zdmciKTsKICAgc3RhdGljcHJvICgm eGdfZGVmYXVsdF9pY29uX2ZpbGUpOwogCiAgIERFRlNZTSAoUXhfZ3RrX21hcF9zdG9jaywgIngt Z3RrLW1hcC1zdG9jayIpOwpAQCAtMTM3NzAsNyArMTM3NzAsNyBAQCBzeW1zX29mX3h0ZXJtICh2 b2lkKQogICBWeF9rZXlzeW1fdGFibGUgPSBtYWtlX2hhc2hfdGFibGUgKGhhc2h0ZXN0X2VxbCwg OTAwLAogCQkJCSAgICAgREVGQVVMVF9SRUhBU0hfU0laRSwKIAkJCQkgICAgIERFRkFVTFRfUkVI QVNIX1RIUkVTSE9MRCwKLQkJCQkgICAgIFFuaWwsIGZhbHNlKTsKKwkJCQkgICAgIFFuaWwpOwog CiAgIERFRlZBUl9CT09MICgieC1mcmFtZS1ub3JtYWxpemUtYmVmb3JlLW1heGltaXplIiwKIAkg ICAgICAgeF9mcmFtZV9ub3JtYWxpemVfYmVmb3JlX21heGltaXplLAotLSAKMi4zMC4xCgo= --0000000000000cb70a05bca3990a--