Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gx6Nf-000845-7u for pgsql-hackers@arkaria.postgresql.org; Fri, 22 Feb 2019 08:40:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1gx6Nd-0000GM-4i for pgsql-hackers@arkaria.postgresql.org; Fri, 22 Feb 2019 08:40:25 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gx6Nb-0000DN-Ko for pgsql-hackers@lists.postgresql.org; Fri, 22 Feb 2019 08:40:24 +0000 Received: from out2-smtp.messagingengine.com ([66.111.4.26]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1gx6NK-00043N-HC for pgsql-hackers@postgresql.org; Fri, 22 Feb 2019 08:40:22 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id B318D22164; Fri, 22 Feb 2019 03:40:04 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Fri, 22 Feb 2019 03:40:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=K4NAYo l7KGWczgd1+mIuHbz+T4of95k9g/PpjwK/jSE=; b=ljeDv6E3h1P8U7oKimP5cl EydfVpfZW7ENzS/zFUBQdDJon7DH9N1TZnlWUdp2eWqC37QjsmEh16w8p9Tcr8xG +hNJV/z0vHR0358yerFt+tRcapWfiv8jzPxUz3Ovp4nwLQBN3ulmXv7/a7vV11lg lxaMZ7XmRwP4oCSLEAfE8A3ZFEPZHmsIIqXPop8iB4Shrf39vzskQXPVpaY0pEuy Kjmk1jnvHScktGRQ+J7t60nCbvxOXVtvZvJtCM/8W3eG6z1XMV/Z3S8ydaUcK711 2RBHzIuvoJbP6A6P3BJEWFBZ9JWDUKqMB8LQKNsWr/LEWUtaGfPTOnct/V5cbHDw == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedutddrtdelgdduvdduucdltddurdegtdelrddttd dmucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfquhht necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefufhfvhfhokffffgggjggtsehmtderredtfeejnecuhfhrohhmpefrvght vghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnug hquhgrughrrghnthdrtghomheqnecuffhomhgrihhnpedvnhguqhhurggurhgrnhhtrdgt ohhmnecukfhppeelfedrvdegfedrjedvrdduudelnecurfgrrhgrmhepmhgrihhlfhhroh hmpehpvghtvghrrdgvihhsvghnthhrrghuthesvdhnughquhgrughrrghnthdrtghomhen ucevlhhushhtvghrufhiiigvpedt X-ME-Proxy: Received: from april.pezone.net (p5df34877.dip0.t-ipconnect.de [93.243.72.119]) by mail.messagingengine.com (Postfix) with ESMTPA id 96391100E5; Fri, 22 Feb 2019 03:40:00 -0500 (EST) Subject: Re: Unified logging system for command-line programs References: <6a609b43-4f57-7348-6480-bd022f924310@2ndquadrant.com> <21141.1546199123@sss.pgh.pa.us> <20181231155557.7mokxwg7fnvoxd4a@alap3.anarazel.de> <841dd9fb-3550-dce0-e9ff-8f64cac9f15d@2ndquadrant.com> <20190103180315.o4gh3id5quh5aebc@alap3.anarazel.de> <6174.1546549274@sss.pgh.pa.us> <4159.1546553023@sss.pgh.pa.us> <20190103220801.pi234uthwjguwrt3@alap3.anarazel.de> <38A737AF-9C4E-483F-B8DD-7B5E718B66C8@csumb.edu> <5BE33A5D-8B32-43E0-97C6-C30FC7AF9207@csumb.edu> Cc: Donald Dong , Andres Freund , Tom Lane To: pgsql-hackers From: Peter Eisentraut Openpgp: preference=signencrypt Autocrypt: addr=peter.eisentraut@2ndquadrant.com; prefer-encrypt=mutual; keydata= xsFNBFUUt6kBEADZd9NNTBJbHmAXXJgPGOdd6Q73l80oifIVgn2tRxP9dYkCfTlo/yLqbKTl JNqTcyM6XrJDnB2sMEUGYCewYZXl+9C4bBJWyNqcEI1ae9u71vEq/fknFLArJ+2wN+f7QuRx Q8d94ZJAiJQ5g3fNk2HVeedCQCKP5dCzU+ZLt2dbsx1PDZLjTO9gf+JswWuGFb5wY5PZVM5V hq66Xk7ZJzHuARacza2RT7J2fkMmQBY+kr7L98Perb0GhafnlhXB0PvUB+N3xpmggMfwuhTu BngS/G/r3GvemxJuFxouw8xsMqrsfdksJXA2gLXYtwRCssdPV3PO0rlD9twqDo8URfIJ5fb6 1g/MV8aTOKjg3Q8MpJPtkwJqN4o3PvbwYdedeFnOVkkYAJdu/aX1v1BeCBDu7Hy3sF52scD3 pQbyQSl9vUDpTLarASAxNbAV0NRJE8dp4vfW6AH1ccryGiFqw/czPK/iN0+MT8wsjAW6WW4w hvjm5UPA1KTwi3ZT8eT5uycuH7QpuNk7LnGGXQ6KaRALFywzkr0A0V0AvFNa+l4wstMaXaB6 dmMXyF0/hfryqyOeu1gAdq4q0/PNC2dPgb/6uoh4eMjN6A5GXcprilhz5DulmsilY21hfSoU S64ODed96pKhprsOxjZiDRsN1QM5MwB+uwVWUNfsX7fIxE0BrwARAQABzSdQZXRlciBFaXNl bnRyYXV0IDxwZXRlckBlaXNlbnRyYXV0Lm9yZz7CwXoEEwEIACQCGwMFCwkIBwMFFQoJCAsF FgIDAQACHgECF4AFAlUUuKQCGQEACgkQoZ8SQ+xBJp8llw//RbGoXnF72FZTlOFsnNyxnWbF vViPCfdAlZl1GGK9OYCvV1dp/956HuhB0wpaGQHiBmQfOPJf/jLOPjXFYm2iEChEycrBChuE j4TSYemMp5BSPILYk9Uwd16kVD/+U6fQfK6H5pOhfBvbM6asMnmpY2wQuvktxHvaGlytFw84 EzFWNZtAZfxkw28w3AhIQkKe9hJanfyDL750RcbyEr8AAHty5IErrvS7tM5vQwIeh5BF26ND CyKPRdZgOgMpcwFfROKBDpAt052CgWIpNdhBdfIKlkCs4/ILxmC3rT/Mb/qZiHcoMMwEu6k+ T7vRAFZZAk62Yrr/U8/vUGKlzRZQoo86fyojCfI0ibCIc0z8rwCVY9P40G9wD9BTCZS/z8Vh jjpBlNnIKw2hM6hbxavKndCJjFFJD08rXrTyrLF/of18xD37vNdYooP9VATB5QjOWFRrscSZ 4a89e+to3m7YVnd4xdXwGp47dYusoax84C8tg1gZrH38ol9dPmnKX6GZrXeS7tH9k8VeUpJ8 HQbRThQRWAT936QpYbLConBmOtmbLmjQOGtiXPo1oK57X/7U/WBja5vWmm2q+Yxtt+3uHGVg DdDU4CJpXo4lX0v2n3QV5EBSW9hjdF3bNfl6GFBb1pPEhqNcMDUc7zkx/2uENdAdk/BnqMgH umip7b0pVfvOwU0EVRS3qQEQAJf6p0P7D+hMYUgCPkvgrcz6OJYsAYdUMUmokfqmkKwK0oJM ew8TNGM53ocKAgQGma5f10rwbZNPlpVPNRX5hwUmwVlcwSut0oE+JfUBH7mpysWvpF05RKIy q9RCoJZrAbXS7Tig56A1QD8IcM00rERZMcCOlI1+q9m4u9AOI+0LyGGSH+VvoyDHD/Jew4R2 TmPEF8Pu7lYiNYK88Q6u0kBkc+Tz3BNlyc6fi3HxnFfp0b75HLXPSTu2SwA/0Q31wHZXwrEU BR9KgSn/qbgy8ydPc97i82fhiFE3cbGexfPrQSMYmDGi+dcQ0s+AMQwC3XyMC0JkHpYUuFkR QdlIvaIhgFUUN2Vr4xF2ADaNTNFc4DYaiPHFAgHZw+3pZWqS4uIiWgJynrEaHw4F3QWU8/JB iyEWDhNq4WBrRA0u914TCCAoFOOKMnRdl8eJrRQKM/5/lXbHFjjlI/LDKhLRFsuQsnJJ3331 RjCzpHPZG5/p5KR1RHiAXa0p/DW5lXyq21hS3kjDlleoHqOxCN/cy0Jgz7qLDq1vZoCl67Sy RAH60c2Xu4may9SVltmot0OzWVHdrfS+85FQGp9580DaeLio7YMFKy2bfEvwQJ/c9xD2QPB+ oSb3V8ueSznXBG5+dyfOsZFRPxceA0wA2rSWZSjxLdKxvyGTj9vsCjaDu13rABEBAAHCwV8E GAEIAAkFAlUUt6kCGwwACgkQoZ8SQ+xBJp+HJhAAxmSTsC5y7p9Zu+nnLpucv/h88oEx985e qWeXzQiwM3pfRZS+PdTH9TyzHK0KOgKoAiubk0vt+BrT91D9d0G5kVQaTctAErGBoMkTaZJT XVEcNphiPzysdSqvprjojMp1y7rG8AP+Xd6m0rE1LRnkRRm8HyI8vdXsuLQPITGWXDLMjaNq AOV3BUnzkgtjMuIYw7SCr+12ZOb5dEKvaG4kjC4kaJ/TLbuBhVANcXkC90yp0AOZLs/cB1Dj OAXno/RUUruJ3r27a+pFv768UAi9QWcdw58yPxreMNMLqAgsS9oTHwHfGNWcB2dJ4UW+GMLJ hTf9TjQ2f+N/sIx5XMQ9pYw6CAJMK29qPx6/ZayrPxf22EXf0D3zTwIEZgwfSkynFVwV25L7 awQq60fifdMYheSxq7GbhpsixmcD+e161cCmLIt75YDt5bQ0B1yf7EmxG8n7pGZAOM6LoNsU fkSldba5XVwh8LuN5mK0nQBELGW6Os4TDq4REggLpfcvFC215zpuo0iCGnmE/Bns4nowqUSP u4tkWL+nxW4qgv8wo8HJ52jd79EJ8iqfIBoidBfy9AIUiEUApGQzWPu6yWcI8fY0rN5D+tc+ Yw1Zt6Mm+huYJpgCRsTcfzEcahnBn521CWcWvhW1ff3KFileFMtNmnBBhMncmRKHphtTKEpN 3jI= Organization: 2ndQuadrant Message-ID: Date: Fri, 22 Feb 2019 09:39:59 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <5BE33A5D-8B32-43E0-97C6-C30FC7AF9207@csumb.edu> Content-Type: multipart/mixed; boundary="------------137A872C4D741CFEB627670A" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------137A872C4D741CFEB627670A Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Here is an updated patch. I've finished the functionality to the point where I'm content with it. I fixed up some of the remaining special cases in pg_dump that I hadn't sorted out last time. I also moved the scattered setvbuf(stderr, ...) handling (for Windows) into a central place. Colors can now be configured, too. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------137A872C4D741CFEB627670A Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v3-0001-Unified-logging-system-for-command-line-programs.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v3-0001-Unified-logging-system-for-command-line-programs.pat"; filename*1="ch" RnJvbSAzZTlhYWRmMDBhYjU4MmZlZDEzMmU0NWM1NzQ1YjFjMzhhNGY1OWM5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCAyMiBGZWIgMjAxOSAwOToxODo1NSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjNdIFVuaWZpZWQgbG9nZ2luZyBzeXN0ZW0gZm9yIGNvbW1hbmQtbGluZSBw cm9ncmFtcwoKVGhpcyB1bmlmaWVzIHRoZSB2YXJpb3VzIGFkIGhvYyBsb2dnaW5nIChtZXNz YWdlIHByaW50aW5nLCBlcnJvcgpwcmludGluZykgc3lzdGVtcyB1c2VkIHRocm91Z2hvdXQg dGhlIGNvbW1hbmQtbGluZSBwcm9ncmFtcy4KCkZlYXR1cmVzOgoKLSBQcm9ncmFtIG5hbWUg aXMgYXV0b21hdGljYWxseSBwcmVmaXhlZC4KCi0gTWVzc2FnZSBzdHJpbmcgZG9lcyBub3Qg ZW5kIHdpdGggbmV3bGluZS4gIFRoaXMgcmVtb3ZlcyBhIGNvbW1vbgogIHNvdXJjZSBvZiBp bmNvbnNpc3RlbmNpZXMgYW5kIG9taXNzaW9ucy4KCi0gQWRkaXRpb25hbGx5LCBhIGZpbmFs IG5ld2xpbmUgaXMgYXV0b21hdGljYWxseSBzdHJpcHBlZCwgc2ltcGxpZnlpbmcKICB1c2Ug b2YgUFFlcnJvck1lc3NhZ2UoKSBldGMuLCBhbm90aGVyIGNvbW1vbiBzb3VyY2Ugb2YgbWlz dGFrZXMuCgotIEkgY29udmVydGVkIGVycm9yIG1lc3NhZ2Ugc3RyaW5ncyB0byB1c2UgJW0g d2hlcmUgcG9zc2libGUuCgotIEFzIGEgcmVzdWx0IG9mIHRoZSBhYm92ZSBzZXZlcmFsIHBv aW50cywgbW9yZSB0cmFuc2xhdGFibGUgbWVzc2FnZQogIHN0cmluZ3MgY2FuIGJlIHNoYXJl ZCBiZXR3ZWVuIGRpZmZlcmVudCBjb21wb25lbnRzIGFuZCBiZXR3ZWVuCiAgZnJvbnRlbmRz IGFuZCBiYWNrZW5kLCB3aXRob3V0IGdyYXR1aXRvdXMgcHVuY3R1YXRpb24gb3Igd2hpdGVz cGFjZQogIGRpZmZlcmVuY2VzLgoKLSBUaGVyZSBpcyBzdXBwb3J0IGZvciBzZXR0aW5nIGEg ImxvZyBsZXZlbCIuICBUaGlzIGlzIG5vdCBtZWFudCB0byBiZQogIHVzZXItZmFjaW5nLCBi dXQgY2FuIGJlIHVzZWQgaW50ZXJuYWxseSB0byBpbXBsZW1lbnQgZGVidWcgb3IKICB2ZXJi b3NlIG1vZGVzLgoKLSBMYXp5IGFyZ3VtZW50IGV2YWx1YXRpb24sIHNvIG5vIHNpZ25pZmlj YW50IG92ZXJoZWFkIGlmIGxvZ2dpbmcgYXQKICBzb21lIGxldmVsIGlzIGRpc2FibGVkLgoK LSBTb21lIGNvbG9yIGluIHRoZSBtZXNzYWdlcywgc2ltaWxhciB0byBnY2MgYW5kIGNsYW5n LiAgU2V0CiAgUEdfQ09MT1I9YXV0byB0byB0cnkgaXQgb3V0LiAgU29tZSBjb2xvcnMgYXJl IHByZWRlZmluZWQsIGJ1dCBjYW4gYmUKICBjdXN0b21pemVkIGJ5IHNldHRpbmcgUEdfQ09M T1JTLgoKLSBDb21tb24gZmlsZXMgKGNvbW1vbi8sIGZlX3V0aWxzLywgZXRjLikgY2FuIGhh bmRsZSBsb2dnaW5nIG11Y2ggbW9yZQogIHNpbXBseSBieSBqdXN0IHVzaW5nIG9uZSBBUEkg d2l0aG91dCB3b3JyeWluZyB0b28gbXVjaCBhYm91dCB0aGUKICBjb250ZXh0IG9mIHRoZSBj YWxsaW5nIHByb2dyYW0sIHJlcXVpcmluZyBjYWxsYmFja3MsIG9yIGhhdmluZyB0bwogIHBh c3MgInByb2duYW1lIiBhcm91bmQgZXZlcnl3aGVyZS4KCi0gU29tZSBwcm9ncmFtcyBjYWxs ZWQgc2V0dmJ1ZigpIHRvIG1ha2Ugc3VyZSB0aGF0IHN0ZGVyciBpcwogIHVuYnVmZmVyZWQs IGV2ZW4gb24gV2luZG93cy4gIEJ1dCBub3QgYWxsIHByb2dyYW1zIGRpZCB0aGF0LiAgVGhp cwogIGlzIG5vdyBkb25lIGNlbnRyYWxseS4KClNvZnQgZ29hbHM6CgotIFJlZHVjZXMgdmVy dGljYWwgc3BhY2UgdXNlIGFuZCB2aXN1YWwgY29tcGxleGl0eSBvZiBlcnJvciByZXBvcnRp bmcKICBpbiB0aGUgc291cmNlIGNvZGUuCgotIEVuY291cmFnZXMgbW9yZSBkZWxpYmVyYXRl IGNsYXNzaWZpY2F0aW9uIG9mIG1lc3NhZ2VzLiAgRm9yIGV4YW1wbGUsCiAgaW4gc29tZSBj YXNlcyBpdCB3YXNuJ3QgY2xlYXIgd2l0aG91dCBhbmFseXppbmcgdGhlIHN1cnJvdW5kaW5n IGNvZGUKICB3aGV0aGVyIGEgbWVzc2FnZSB3YXMgbWVhbnQgYXMgYW4gZXJyb3Igb3IganVz dCBhbiBpbmZvLgoKLSBDb25jZXB0cyBhbmQgdGVybXMgYXJlIHZhZ3VlbHkgYWxpZ25lZCB3 aXRoIHBvcHVsYXIgbG9nZ2luZwogIGZyYW1ld29ya3Mgc3VjaCBhcyBsb2c0aiBhbmQgUHl0 aG9uIGxvZ2dpbmcuCgpUaGlzIGlzIGFsbCBqdXN0IGFib3V0IHByaW50aW5nIHN0dWZmIG91 dC4gIE5vdGhpbmcgYWZmZWN0cyBwcm9ncmFtCmZsb3cgKGUuZy4sIGZhdGFsIGV4aXRzKS4g IFRoZSB1c2VzIGFyZSBqdXN0IHRvbyB2YXJpZWQgdG8gZG8gdGhhdC4KU29tZSBleGlzdGlu ZyBjb2RlIGhhZCB3cmFwcGVycyB0aGF0IGRvIHNvbWUga2luZCBvZiBwcmludC1hbmQtZXhp dCwKYW5kIEkgYWRhcHRlZCB0aG9zZS4KCkkgdHJpZWQgdG8ga2VlcCB0aGUgb3V0cHV0IG1v c3RseSB0aGUgc2FtZSwgYnV0IHRoZXJlIGlzIGEgbG90IG9mCmhpc3RvcmljYWwgYmFnZ2Fn ZSB0byB1bndpbmQgYW5kIHNwZWNpYWwgY2FzZXMgdG8gY29uc2lkZXIsIGFuZCBJCm1pZ2h0 IG5vdCBhbHdheXMgaGF2ZSBzdWNjZWVkZWQuICBPbmUgc2lnbmlmaWNhbnQgY2hhbmdlIGlz IHRoYXQKcGdfcmV3aW5kIHVzZWQgdG8gd3JpdGUgYWxsIGVycm9yIG1lc3NhZ2VzIHRvIHN0 ZG91dC4gIFRoYXQgaXMgbm93CmNoYW5nZWQgdG8gc3RkZXJyLgoKRGlzY3Vzc2lvbjogaHR0 cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9mbGF0LzZhNjA5YjQzLTRmNTct NzM0OC02NDgwLWJkMDIyZjkyNDMxMEAybmRxdWFkcmFudC5jb20vCi0tLQogZG9jL3NyYy9z Z21sL3JlZi9jbHVzdGVyZGIuc2dtbCAgICAgICAgICAgICAgIHwgIDExICsKIGRvYy9zcmMv c2dtbC9yZWYvY3JlYXRlZGIuc2dtbCAgICAgICAgICAgICAgICB8ICAxMSArCiBkb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZXVzZXIuc2dtbCAgICAgICAgICAgICAgfCAgMTEgKwogZG9jL3Ny Yy9zZ21sL3JlZi9kcm9wZGIuc2dtbCAgICAgICAgICAgICAgICAgIHwgIDExICsKIGRvYy9z cmMvc2dtbC9yZWYvZHJvcHVzZXIuc2dtbCAgICAgICAgICAgICAgICB8ICAxMSArCiBkb2Mv c3JjL3NnbWwvcmVmL2luaXRkYi5zZ21sICAgICAgICAgICAgICAgICAgfCAgMTEgKwogZG9j L3NyYy9zZ21sL3JlZi9wZ19iYXNlYmFja3VwLnNnbWwgICAgICAgICAgIHwgICA2ICsKIGRv Yy9zcmMvc2dtbC9yZWYvcGdfY29udHJvbGRhdGEuc2dtbCAgICAgICAgICB8ICAxMSArCiBk b2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXAuc2dtbCAgICAgICAgICAgICAgICAgfCAgMTEgKwog ZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1wYWxsLnNnbWwgICAgICAgICAgICAgIHwgIDExICsK IGRvYy9zcmMvc2dtbC9yZWYvcGdfaXNyZWFkeS5zZ21sICAgICAgICAgICAgICB8ICAgNyAr CiBkb2Mvc3JjL3NnbWwvcmVmL3BnX3JlY2VpdmV3YWwuc2dtbCAgICAgICAgICAgfCAgIDYg KwogZG9jL3NyYy9zZ21sL3JlZi9wZ19yZWN2bG9naWNhbC5zZ21sICAgICAgICAgIHwgICA3 ICsKIGRvYy9zcmMvc2dtbC9yZWYvcGdfcmVzZXR3YWwuc2dtbCAgICAgICAgICAgICB8ICAx NyArCiBkb2Mvc3JjL3NnbWwvcmVmL3BnX3Jlc3RvcmUuc2dtbCAgICAgICAgICAgICAgfCAg MTEgKwogZG9jL3NyYy9zZ21sL3JlZi9wZ19yZXdpbmQuc2dtbCAgICAgICAgICAgICAgIHwg ICA3ICsKIGRvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5X2NoZWNrc3Vtcy5zZ21sICAgICB8 ICAxMSArCiBkb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbCAgICAgICAgICAgICAg fCAgMjYgKysKIGRvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCAgICAgICAgICAgICAg ICB8ICAxMSArCiBkb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXhkYi5zZ21sICAgICAgICAgICAg ICAgfCAgMTEgKwogZG9jL3NyYy9zZ21sL3JlZi92YWN1dW1kYi5zZ21sICAgICAgICAgICAg ICAgIHwgIDExICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcGdfY29udHJvbGRhdGEuYyAg ICAgICB8ICAgOCArLQogc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMgICAgICAgICAgICAgICAg ICAgICAgIHwgMjY1ICsrKysrLS0tLS0tCiBzcmMvYmluL2luaXRkYi9ubHMubWsgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAv TWFrZWZpbGUgICAgICAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51 cC9ubHMubWsgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmluL3BnX2FyY2hpdmVjbGVh bnVwL3BnX2FyY2hpdmVjbGVhbnVwLmMgfCAgNTMgKy0tCiBzcmMvYmluL3BnX2Jhc2ViYWNr dXAvbmxzLm1rICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iaW4vcGdfYmFzZWJh Y2t1cC9wZ19iYXNlYmFja3VwLmMgICAgICAgICB8IDQxMSArKysrKysrLS0tLS0tLS0tLS0K IHNyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19yZWNlaXZld2FsLmMgICAgICAgICB8IDEyNCAr KystLS0KIHNyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19yZWN2bG9naWNhbC5jICAgICAgICB8 IDE1NyArKystLS0tCiBzcmMvYmluL3BnX2Jhc2ViYWNrdXAvcmVjZWl2ZWxvZy5jICAgICAg ICAgICAgfCAyMTYgKysrKy0tLS0tCiBzcmMvYmluL3BnX2Jhc2ViYWNrdXAvc3RyZWFtdXRp bC5jICAgICAgICAgICAgfCAgOTcgKystLS0KIHNyYy9iaW4vcGdfYmFzZWJhY2t1cC93YWxt ZXRob2RzLmMgICAgICAgICAgICB8ICAxNiArLQogc3JjL2Jpbi9wZ19jb250cm9sZGF0YS9N YWtlZmlsZSAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmluL3BnX2NvbnRyb2xkYXRh L3BnX2NvbnRyb2xkYXRhLmMgICAgICAgfCAgMTEgKy0KIHNyYy9iaW4vcGdfY3RsL01ha2Vm aWxlICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ19jdGwvcGdf Y3RsLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmluL3BnX2R1bXAv Y29tbW9uLmMgICAgICAgICAgICAgICAgICAgICAgfCAxMjQgKystLS0tCiBzcmMvYmluL3Bn X2R1bXAvY29tcHJlc3NfaW8uYyAgICAgICAgICAgICAgICAgfCAgNDYgKy0KIHNyYy9iaW4v cGdfZHVtcC9ubHMubWsgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNiArLQogc3JjL2Jp bi9wZ19kdW1wL3BhcmFsbGVsLmMgICAgICAgICAgICAgICAgICAgIHwgIDYyICstLQogc3Jj L2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICAgICAgICAgIHwgMjQ2ICsrKysr LS0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmggICAgICAgICAg fCAgMTUgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfY3VzdG9tLmMgICAgICAgICAg ICB8ICA5MyArKy0tCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RiLmMgICAgICAgICAg ICAgICAgfCAgNTUgKystCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RpcmVjdG9yeS5j ICAgICAgICAgfCAgNzIgKystCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX251bGwuYyAg ICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdGFyLmMg ICAgICAgICAgICAgICB8ICA4OCArKy0tCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3V0 aWxzLmMgICAgICAgICAgICAgfCAgNTggKy0tCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3Vw X3V0aWxzLmggICAgICAgICAgICAgfCAgIDYgKy0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMgICAgICAgICAgICAgICAgICAgICB8IDMzMiArKysrKysrLS0tLS0tLQogc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgICAgIHwgICAxIC0KIHNyYy9iaW4v cGdfZHVtcC9wZ19kdW1wX3NvcnQuYyAgICAgICAgICAgICAgICB8ICAyNiArLQogc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXBhbGwuYyAgICAgICAgICAgICAgICAgIHwgMTE4ICsrKy0tCiBz cmMvYmluL3BnX2R1bXAvcGdfcmVzdG9yZS5jICAgICAgICAgICAgICAgICAgfCAgMzYgKy0K IHNyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbCAgICAgICAgICAgICAgICB8ICA1MiAr LS0KIHNyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsICAgICAgICAgICAgICB8ICAx NiArLQogc3JjL2Jpbi9wZ19yZXNldHdhbC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwg ICA0ICstCiBzcmMvYmluL3BnX3Jlc2V0d2FsL25scy5tayAgICAgICAgICAgICAgICAgICAg fCAgIDQgKy0KIHNyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYyAgICAgICAgICAg ICB8IDE4MSArKysrLS0tLQogc3JjL2Jpbi9wZ19yZXNldHdhbC90LzAwMl9jb3JydXB0ZWQu cGwgICAgICAgIHwgICA0ICstCiBzcmMvYmluL3BnX3Jld2luZC9NYWtlZmlsZSAgICAgICAg ICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iaW4vcGdfcmV3aW5kL2NvcHlfZmV0Y2guYyAg ICAgICAgICAgICAgICB8ICAzOCArLQogc3JjL2Jpbi9wZ19yZXdpbmQvZGF0YXBhZ2VtYXAu YyAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmluL3BnX3Jld2luZC9maWxlX29wcy5j ICAgICAgICAgICAgICAgICAgfCAgNjAgKy0tCiBzcmMvYmluL3BnX3Jld2luZC9maWxlbWFw LmMgICAgICAgICAgICAgICAgICAgfCAgMzQgKy0KIHNyYy9iaW4vcGdfcmV3aW5kL2xpYnBx X2ZldGNoLmMgICAgICAgICAgICAgICB8ICAzNiArLQogc3JjL2Jpbi9wZ19yZXdpbmQvbG9n Z2luZy5jICAgICAgICAgICAgICAgICAgIHwgIDY5ICstLQogc3JjL2Jpbi9wZ19yZXdpbmQv bG9nZ2luZy5oICAgICAgICAgICAgICAgICAgIHwgIDE4ICstCiBzcmMvYmluL3BnX3Jld2lu ZC9ubHMubWsgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9iaW4vcGdfcmV3 aW5kL3BhcnNleGxvZy5jICAgICAgICAgICAgICAgICB8ICAyMiArLQogc3JjL2Jpbi9wZ19y ZXdpbmQvcGdfcmV3aW5kLmMgICAgICAgICAgICAgICAgIHwgIDcwICstLQogc3JjL2Jpbi9w Z19yZXdpbmQvcGdfcmV3aW5kLmggICAgICAgICAgICAgICAgIHwgICAxIC0KIHNyYy9iaW4v cGdfcmV3aW5kL3RpbWVsaW5lLmMgICAgICAgICAgICAgICAgICB8ICAxNyArLQogc3JjL2Jp bi9wZ190ZXN0X2ZzeW5jL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMv YmluL3BnX3Rlc3RfZnN5bmMvcGdfdGVzdF9mc3luYy5jICAgICAgICAgfCAgMTkgKy0KIHNy Yy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMgICAgICAgICAgICAgICB8ICAgNCArLQog c3JjL2Jpbi9wZ192ZXJpZnlfY2hlY2tzdW1zL01ha2VmaWxlICAgICAgICAgIHwgICA0ICst CiBzcmMvYmluL3BnX3ZlcmlmeV9jaGVja3N1bXMvbmxzLm1rICAgICAgICAgICAgfCAgIDQg Ky0KIC4uLi9wZ192ZXJpZnlfY2hlY2tzdW1zL3BnX3ZlcmlmeV9jaGVja3N1bXMuYyB8ICA0 MyArLQogc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlICAgICAgICAgICAgICAgICAgIHwg ICAzICstCiBzcmMvYmluL3BnX3dhbGR1bXAvbmxzLm1rICAgICAgICAgICAgICAgICAgICAg fCAgIDYgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgICAgICAgICAgICAg ICB8ICA3MSArLS0KIHNyYy9iaW4vcGdiZW5jaC9wZ2JlbmNoLmMgICAgICAgICAgICAgICAg ICAgICB8ICAyMyArLQogc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyAgICAgICAgICAgICAgICAg ICAgICAgIHwgMTU3ICsrKy0tLS0KIHNyYy9iaW4vcHNxbC9jb21tb24uYyAgICAgICAgICAg ICAgICAgICAgICAgICB8ICA4MSArKy0tCiBzcmMvYmluL3BzcWwvY29tbW9uLmggICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDIgLQogc3JjL2Jpbi9wc3FsL2NvcHkuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDQyICstCiBzcmMvYmluL3BzcWwvY3Jvc3N0YWJ2aWV3 LmMgICAgICAgICAgICAgICAgICAgfCAgMTkgKy0KIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5j ICAgICAgICAgICAgICAgICAgICAgICB8ICA3NSArKy0tCiBzcmMvYmluL3BzcWwvaGVscC5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iaW4vcHNxbC9pbnB1 dC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNSArLQogc3JjL2Jpbi9wc3FsL2xh cmdlX29iai5jICAgICAgICAgICAgICAgICAgICAgIHwgIDE1ICstCiBzcmMvYmluL3BzcWwv bWFpbmxvb3AuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMTQgKy0KIHNyYy9iaW4vcHNx bC9ubHMubWsgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2Jpbi9w c3FsL3BzcWxzY2Fuc2xhc2gubCAgICAgICAgICAgICAgICAgIHwgIDExICstCiBzcmMvYmlu L3BzcWwvc3RhcnR1cC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDYgKy0KIHNyYy9i aW4vcHNxbC92YXJpYWJsZXMuYyAgICAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogc3Jj L2Jpbi9zY3JpcHRzL2NsdXN0ZXJkYi5jICAgICAgICAgICAgICAgICAgIHwgIDIwICstCiBz cmMvYmluL3NjcmlwdHMvY29tbW9uLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMzAgKy0K IHNyYy9iaW4vc2NyaXB0cy9jcmVhdGVkYi5jICAgICAgICAgICAgICAgICAgICB8ICAyMiAr LQogc3JjL2Jpbi9zY3JpcHRzL2NyZWF0ZXVzZXIuYyAgICAgICAgICAgICAgICAgIHwgIDEz ICstCiBzcmMvYmluL3NjcmlwdHMvZHJvcGRiLmMgICAgICAgICAgICAgICAgICAgICAgfCAg MTEgKy0KIHNyYy9iaW4vc2NyaXB0cy9kcm9wdXNlci5jICAgICAgICAgICAgICAgICAgICB8 ICAxMiArLQogc3JjL2Jpbi9zY3JpcHRzL25scy5tayAgICAgICAgICAgICAgICAgICAgICAg IHwgICA2ICstCiBzcmMvYmluL3NjcmlwdHMvcGdfaXNyZWFkeS5jICAgICAgICAgICAgICAg ICAgfCAgMTAgKy0KIHNyYy9iaW4vc2NyaXB0cy9yZWluZGV4ZGIuYyAgICAgICAgICAgICAg ICAgICB8ICA0MiArLQogc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWRiLmMgICAgICAgICAgICAg ICAgICAgIHwgIDY3ICsrLQogc3JjL2NvbW1vbi9jb250cm9sZGF0YV91dGlscy5jICAgICAg ICAgICAgICAgIHwgIDI2ICstCiBzcmMvY29tbW9uL2ZpbGVfdXRpbHMuYyAgICAgICAgICAg ICAgICAgICAgICAgfCAgODQgKystLQogc3JjL2NvbW1vbi9wZ2ZuYW1lcy5jICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDMxICstCiBzcmMvY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4u YyAgICAgICAgICAgICAgICAgfCAgMjMgKy0KIHNyYy9jb21tb24vcm10cmVlLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAyNyArLQogc3JjL2ZlX3V0aWxzL01ha2VmaWxlICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvZmVfdXRpbHMvbG9nZ2luZy5j ICAgICAgICAgICAgICAgICAgICAgICAgfCAyMjYgKysrKysrKysrKwogc3JjL2ZlX3V0aWxz L3BzcWxzY2FuLmwgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVk ZS9jb21tb24vY29udHJvbGRhdGFfdXRpbHMuaCAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNs dWRlL2NvbW1vbi9maWxlX3V0aWxzLmggICAgICAgICAgICAgICB8ICAxMyArLQogc3JjL2lu Y2x1ZGUvY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uaCAgICAgICAgIHwgICA0ICstCiBzcmMv aW5jbHVkZS9mZV91dGlscy9sb2dnaW5nLmggICAgICAgICAgICAgICAgfCAgOTUgKysrKwog c3JjL2luY2x1ZGUvZmVfdXRpbHMvcHNxbHNjYW4uaCAgICAgICAgICAgICAgIHwgICA3IC0K IHNyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMiAr CiBzcmMvbmxzLWdsb2JhbC5tayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDgg Kwogc3JjL3Rlc3QvaXNvbGF0aW9uL01ha2VmaWxlICAgICAgICAgICAgICAgICAgIHwgICAz ICstCiBzcmMvdGVzdC9yZWdyZXNzL0dOVW1ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAg IDQgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvcGdfcmVncmVzcy5jICAgICAgICAgICAgICAgICB8 ICAgNiArLQogMTI3IGZpbGVzIGNoYW5nZWQsIDI1MDUgaW5zZXJ0aW9ucygrKSwgMjYzNiBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvZmVfdXRpbHMvbG9nZ2luZy5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvZmVfdXRpbHMvbG9nZ2luZy5oCgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jbHVzdGVyZGIuc2dtbCBiL2RvYy9zcmMv c2dtbC9yZWYvY2x1c3RlcmRiLnNnbWwKaW5kZXggZWQzNDNkZDdkYS4uYjI1ODQ1ZmZjNiAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jbHVzdGVyZGIuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2NsdXN0ZXJkYi5zZ21sCkBAIC0yNzQsNiArMjc0LDE3IEBAIDx0aXRs ZT5FbnZpcm9ubWVudDwvdGl0bGU+CiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgog ICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGVu dmFyPlBHX0NPTE9SPC9lbnZhcj48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFy YT4KKyAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRvIHVzZSBjb2xvciBpbiBkaWFnbm9zdGlj cyBtZXNzYWdlcy4gIFBvc3NpYmxlIHZhbHVlcworICAgICAgYXJlIDxsaXRlcmFsPmFsd2F5 czwvbGl0ZXJhbD4sIDxsaXRlcmFsPmF1dG88L2xpdGVyYWw+LAorICAgICAgPGxpdGVyYWw+ bmV2ZXI8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgogICA8L3ZhcmlhYmxlbGlzdD4KIAogICA8cGFyYT4KZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlZGIuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlZGIuc2dtbAppbmRleCAyNjU4ZWZlYjFhLi44ZmM4MTI4YmY5IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZWRiLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVkYi5zZ21sCkBAIC0zMjIsNiArMzIyLDE3IEBAIDx0aXRsZT5FbnZpcm9ubWVu dDwvdGl0bGU+CiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGVudmFyPlBHX0NPTE9S PC9lbnZhcj48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFNw ZWNpZmllcyB3aGV0aGVyIHRvIHVzZSBjb2xvciBpbiBkaWFnbm9zdGljcyBtZXNzYWdlcy4g IFBvc3NpYmxlIHZhbHVlcworICAgICAgYXJlIDxsaXRlcmFsPmFsd2F5czwvbGl0ZXJhbD4s IDxsaXRlcmFsPmF1dG88L2xpdGVyYWw+LAorICAgICAgPGxpdGVyYWw+bmV2ZXI8L2xpdGVy YWw+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5 PgogICA8L3ZhcmlhYmxlbGlzdD4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRldXNlci5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGV1c2Vy LnNnbWwKaW5kZXggMjJlZTk5ZjJjYy4uYWJlMjVmMTdkMCAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGV1c2VyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGV1c2VyLnNnbWwKQEAgLTQwMCw2ICs0MDAsMTcgQEAgPHRpdGxlPkVudmlyb25tZW50PC90 aXRsZT4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRy eT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48ZW52YXI+UEdfQ09MT1I8L2Vu dmFyPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgU3BlY2lm aWVzIHdoZXRoZXIgdG8gdXNlIGNvbG9yIGluIGRpYWdub3N0aWNzIG1lc3NhZ2VzLiAgUG9z c2libGUgdmFsdWVzCisgICAgICBhcmUgPGxpdGVyYWw+YWx3YXlzPC9saXRlcmFsPiwgPGxp dGVyYWw+YXV0bzwvbGl0ZXJhbD4sCisgICAgICA8bGl0ZXJhbD5uZXZlcjwvbGl0ZXJhbD4u CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CiAg IDwvdmFyaWFibGVsaXN0PgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9kcm9wZGIuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvZHJvcGRiLnNnbWwKaW5kZXgg MzhmMzhmMDFjZS4uM2ZiZGIzMzcxNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9k cm9wZGIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3BkYi5zZ21sCkBAIC0yMjgs NiArMjI4LDE3IEBAIDx0aXRsZT5FbnZpcm9ubWVudDwvdGl0bGU+CiAgICAgIDwvcGFyYT4K ICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+PGVudmFyPlBHX0NPTE9SPC9lbnZhcj48L3Rlcm0+CisgICAgPGxp c3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRvIHVzZSBj b2xvciBpbiBkaWFnbm9zdGljcyBtZXNzYWdlcy4gIFBvc3NpYmxlIHZhbHVlcworICAgICAg YXJlIDxsaXRlcmFsPmFsd2F5czwvbGl0ZXJhbD4sIDxsaXRlcmFsPmF1dG88L2xpdGVyYWw+ LAorICAgICAgPGxpdGVyYWw+bmV2ZXI8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgogICA8L3ZhcmlhYmxlbGlzdD4KIAog ICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvZHJvcHVzZXIuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvZHJvcHVzZXIuc2dtbAppbmRleCAzZDRlNGIzN2IzLi43MmJi N2U4NTM1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Ryb3B1c2VyLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9kcm9wdXNlci5zZ21sCkBAIC0yMjAsNiArMjIwLDE3IEBA IDx0aXRsZT5FbnZpcm9ubWVudDwvdGl0bGU+CiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3Rp dGVtPgogICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+PGVudmFyPlBHX0NPTE9SPC9lbnZhcj48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAg ICA8cGFyYT4KKyAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRvIHVzZSBjb2xvciBpbiBkaWFn bm9zdGljcyBtZXNzYWdlcy4gIFBvc3NpYmxlIHZhbHVlcworICAgICAgYXJlIDxsaXRlcmFs PmFsd2F5czwvbGl0ZXJhbD4sIDxsaXRlcmFsPmF1dG88L2xpdGVyYWw+LAorICAgICAgPGxp dGVyYWw+bmV2ZXI8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgogICA8L3ZhcmlhYmxlbGlzdD4KIAogICA8cGFyYT4KZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvaW5pdGRiLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL2luaXRkYi5zZ21sCmluZGV4IDg0ZmIzN2MyOTMuLjdmMzIzMTAzMDggMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvaW5pdGRiLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9pbml0ZGIuc2dtbApAQCAtNDYxLDYgKzQ2MSwxNyBAQCA8dGl0bGU+RW52aXJvbm1lbnQ8 L3RpdGxlPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48ZW52YXI+UEdfQ09MT1I8L2VudmFyPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgU3BlY2lmaWVzIHdoZXRoZXIg dG8gdXNlIGNvbG9yIGluIGRpYWdub3N0aWNzIG1lc3NhZ2VzLiAgUG9zc2libGUgdmFsdWVz CisgICAgICBhcmUgPGxpdGVyYWw+YWx3YXlzPC9saXRlcmFsPiwgPGxpdGVyYWw+YXV0bzwv bGl0ZXJhbD4sCisgICAgICA8bGl0ZXJhbD5uZXZlcjwvbGl0ZXJhbD4uCisgICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0 ZW50cnk+CiAgICAgPHRlcm0+PGVudmFyPlRaPC9lbnZhcj48L3Rlcm0+CiAKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfYmFzZWJhY2t1cC5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi9wZ19iYXNlYmFja3VwLnNnbWwKaW5kZXggYzRmMzk1MGU1Yi4uZGQ2YmNlNTdkMiAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19iYXNlYmFja3VwLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9wZ19iYXNlYmFja3VwLnNnbWwKQEAgLTY4Nyw2ICs2ODcsMTIg QEAgPHRpdGxlPkVudmlyb25tZW50PC90aXRsZT4KICAgIChzZWUgPHhyZWYgbGlua2VuZD0i bGlicHEtZW52YXJzIi8+KS4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgVGhlIGVudmly b25tZW50IHZhcmlhYmxlIDxlbnZhcj5QR19DT0xPUjwvZW52YXI+IHNwZWNpZmllcyB3aGV0 aGVyIHRvIHVzZQorICAgY29sb3IgaW4gZGlhZ25vc3RpY3MgbWVzc2FnZXMuICBQb3NzaWJs ZSB2YWx1ZXMgYXJlCisgICA8bGl0ZXJhbD5hbHdheXM8L2xpdGVyYWw+LCA8bGl0ZXJhbD5h dXRvPC9saXRlcmFsPiwKKyAgIDxsaXRlcmFsPm5ldmVyPC9saXRlcmFsPi4KKyAgPC9wYXJh PgogIDwvcmVmc2VjdDE+CiAKICA8cmVmc2VjdDE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL3BnX2NvbnRyb2xkYXRhLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2NvbnRy b2xkYXRhLnNnbWwKaW5kZXggMzIwODFlOWI5MS4uYWJhYzU5YWE1MCAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9wZ19jb250cm9sZGF0YS5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9yZWYvcGdfY29udHJvbGRhdGEuc2dtbApAQCAtNjgsNiArNjgsMTcgQEAgPHRpdGxlPkVu dmlyb25tZW50PC90aXRsZT4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8 L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48ZW52YXI+ UEdfQ09MT1I8L2VudmFyPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgor ICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gdXNlIGNvbG9yIGluIGRpYWdub3N0aWNzIG1l c3NhZ2VzLiAgUG9zc2libGUgdmFsdWVzCisgICAgICBhcmUgPGxpdGVyYWw+YWx3YXlzPC9s aXRlcmFsPiwgPGxpdGVyYWw+YXV0bzwvbGl0ZXJhbD4sCisgICAgICA8bGl0ZXJhbD5uZXZl cjwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJs aXN0ZW50cnk+CiAgIDwvdmFyaWFibGVsaXN0PgogIDwvcmVmc2VjdDE+CiA8L3JlZmVudHJ5 PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1wLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL3BnX2R1bXAuc2dtbAppbmRleCAwMzNlYWU5YjQ2Li40Mzc4Mjc3NDFjIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXAuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcmVmL3BnX2R1bXAuc2dtbApAQCAtMTIxMCw2ICsxMjEwLDE3IEBAIDx0aXRsZT5F bnZpcm9ubWVudDwvdGl0bGU+CiAgICAgPC9saXN0aXRlbT4KIAogICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGVudmFyPlBHX0NPTE9SPC9l bnZhcj48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFNwZWNp ZmllcyB3aGV0aGVyIHRvIHVzZSBjb2xvciBpbiBkaWFnbm9zdGljcyBtZXNzYWdlcy4gIFBv c3NpYmxlIHZhbHVlcworICAgICAgYXJlIDxsaXRlcmFsPmFsd2F5czwvbGl0ZXJhbD4sIDxs aXRlcmFsPmF1dG88L2xpdGVyYWw+LAorICAgICAgPGxpdGVyYWw+bmV2ZXI8L2xpdGVyYWw+ LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgog ICA8L3ZhcmlhYmxlbGlzdD4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvcGdfZHVtcGFsbC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1wYWxsLnNn bWwKaW5kZXggYjMzNzJhNjQxZi4uMzc0ZjBlNjY3ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9wZ19kdW1wYWxsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ19kdW1w YWxsLnNnbWwKQEAgLTY3NCw2ICs2NzQsMTcgQEAgPHRpdGxlPkVudmlyb25tZW50PC90aXRs ZT4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4K KworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48ZW52YXI+UEdfQ09MT1I8L2VudmFy PjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgU3BlY2lmaWVz IHdoZXRoZXIgdG8gdXNlIGNvbG9yIGluIGRpYWdub3N0aWNzIG1lc3NhZ2VzLiAgUG9zc2li bGUgdmFsdWVzCisgICAgICBhcmUgPGxpdGVyYWw+YWx3YXlzPC9saXRlcmFsPiwgPGxpdGVy YWw+YXV0bzwvbGl0ZXJhbD4sCisgICAgICA8bGl0ZXJhbD5uZXZlcjwvbGl0ZXJhbD4uCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CiAgIDwv dmFyaWFibGVsaXN0PgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9wZ19pc3JlYWR5LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2lzcmVhZHkuc2dtbApp bmRleCA5NTY3YjU3ZWJlLi42ODQ0N2I1MDkzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL3BnX2lzcmVhZHkuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX2lzcmVhZHku c2dtbApAQCAtMTY0LDYgKzE2NCwxMyBAQCA8dGl0bGU+RW52aXJvbm1lbnQ8L3RpdGxlPgog ICAgYWxzbyB1c2VzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc3VwcG9ydGVkIGJ5IDxh cHBsaWNhdGlvbj5saWJwcTwvYXBwbGljYXRpb24+CiAgICAoc2VlIDx4cmVmIGxpbmtlbmQ9 ImxpYnBxLWVudmFycyIvPikuCiAgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFRoZSBlbnZp cm9ubWVudCB2YXJpYWJsZSA8ZW52YXI+UEdfQ09MT1I8L2VudmFyPiBzcGVjaWZpZXMgd2hl dGhlciB0byB1c2UKKyAgIGNvbG9yIGluIGRpYWdub3N0aWNzIG1lc3NhZ2VzLiAgUG9zc2li bGUgdmFsdWVzIGFyZQorICAgPGxpdGVyYWw+YWx3YXlzPC9saXRlcmFsPiwgPGxpdGVyYWw+ YXV0bzwvbGl0ZXJhbD4sCisgICA8bGl0ZXJhbD5uZXZlcjwvbGl0ZXJhbD4uCisgIDwvcGFy YT4KICA8L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxIGlkPSJhcHAtcGctaXNyZWFkeS1ub3Rl cyI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3JlY2VpdmV3YWwuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVjZWl2ZXdhbC5zZ21sCmluZGV4IGExOGRkZDRiZmYu LjA1MDYxMjBjMDAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVjZWl2ZXdh bC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVjZWl2ZXdhbC5zZ21sCkBAIC00 MDgsNiArNDA4LDEyIEBAIDx0aXRsZT5FbnZpcm9ubWVudDwvdGl0bGU+CiAgICAoc2VlIDx4 cmVmIGxpbmtlbmQ9ImxpYnBxLWVudmFycyIvPikuCiAgIDwvcGFyYT4KIAorICA8cGFyYT4K KyAgIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA8ZW52YXI+UEdfQ09MT1I8L2VudmFyPiBz cGVjaWZpZXMgd2hldGhlciB0byB1c2UKKyAgIGNvbG9yIGluIGRpYWdub3N0aWNzIG1lc3Nh Z2VzLiAgUG9zc2libGUgdmFsdWVzIGFyZQorICAgPGxpdGVyYWw+YWx3YXlzPC9saXRlcmFs PiwgPGxpdGVyYWw+YXV0bzwvbGl0ZXJhbD4sCisgICA8bGl0ZXJhbD5uZXZlcjwvbGl0ZXJh bD4uCisgIDwvcGFyYT4KICA8L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19yZWN2bG9naWNhbC5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi9wZ19yZWN2bG9naWNhbC5zZ21sCmluZGV4IDE0MWM1Y2RkY2UuLjRjNzlmOTA0MTQg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVjdmxvZ2ljYWwuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcmVmL3BnX3JlY3Zsb2dpY2FsLnNnbWwKQEAgLTM5Nyw2ICszOTcs MTMgQEAgPHRpdGxlPkVudmlyb25tZW50PC90aXRsZT4KICAgIHVzZXMgdGhlIGVudmlyb25t ZW50IHZhcmlhYmxlcyBzdXBwb3J0ZWQgYnkgPGFwcGxpY2F0aW9uPmxpYnBxPC9hcHBsaWNh dGlvbj4KICAgIChzZWUgPHhyZWYgbGlua2VuZD0ibGlicHEtZW52YXJzIi8+KS4KICAgPC9w YXJhPgorCisgIDxwYXJhPgorICAgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIDxlbnZhcj5Q R19DT0xPUjwvZW52YXI+IHNwZWNpZmllcyB3aGV0aGVyIHRvIHVzZQorICAgY29sb3IgaW4g ZGlhZ25vc3RpY3MgbWVzc2FnZXMuICBQb3NzaWJsZSB2YWx1ZXMgYXJlCisgICA8bGl0ZXJh bD5hbHdheXM8L2xpdGVyYWw+LCA8bGl0ZXJhbD5hdXRvPC9saXRlcmFsPiwKKyAgIDxsaXRl cmFsPm5ldmVyPC9saXRlcmFsPi4KKyAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CiAKICA8cmVm c2VjdDE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3Jlc2V0d2FsLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL3BnX3Jlc2V0d2FsLnNnbWwKaW5kZXggM2Y4ODViZGQ2Mi4u OGE5ZTIyZDA1MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19yZXNldHdhbC5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVzZXR3YWwuc2dtbApAQCAtMzIwLDYg KzMyMCwyMyBAQCA8dGl0bGU+T3B0aW9uczwvdGl0bGU+CiAgIDwvdmFyaWFibGVsaXN0Pgog IDwvcmVmc2VjdDE+CiAKKyA8cmVmc2VjdDE+CisgIDx0aXRsZT5FbnZpcm9ubWVudDwvdGl0 bGU+CisKKyAgPHZhcmlhYmxlbGlzdD4KKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ PGVudmFyPlBHX0NPTE9SPC9lbnZhcj48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8 cGFyYT4KKyAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRvIHVzZSBjb2xvciBpbiBkaWFnbm9z dGljcyBtZXNzYWdlcy4gIFBvc3NpYmxlIHZhbHVlcworICAgICAgYXJlIDxsaXRlcmFsPmFs d2F5czwvbGl0ZXJhbD4sIDxsaXRlcmFsPmF1dG88L2xpdGVyYWw+LAorICAgICAgPGxpdGVy YWw+bmV2ZXI8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCiAg PHJlZnNlY3QxPgogICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgogCmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL3BnX3Jlc3RvcmUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfcmVz dG9yZS5zZ21sCmluZGV4IDcyNWFjYjE5MmMuLmNmMzY5YTBmM2IgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9yZWYvcGdfcmVzdG9yZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv cGdfcmVzdG9yZS5zZ21sCkBAIC04MjIsNiArODIyLDE3IEBAIDx0aXRsZT5FbnZpcm9ubWVu dDwvdGl0bGU+CiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGVudmFyPlBHX0NPTE9S PC9lbnZhcj48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFNw ZWNpZmllcyB3aGV0aGVyIHRvIHVzZSBjb2xvciBpbiBkaWFnbm9zdGljcyBtZXNzYWdlcy4g IFBvc3NpYmxlIHZhbHVlcworICAgICAgYXJlIDxsaXRlcmFsPmFsd2F5czwvbGl0ZXJhbD4s IDxsaXRlcmFsPmF1dG88L2xpdGVyYWw+LAorICAgICAgPGxpdGVyYWw+bmV2ZXI8L2xpdGVy YWw+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5 PgogICA8L3ZhcmlhYmxlbGlzdD4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvcGdfcmV3aW5kLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX3Jld2luZC5z Z21sCmluZGV4IDUzYTY0ZWUyOWUuLmQ5ODQwNmM0MjAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvcGdfcmV3aW5kLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ19yZXdp bmQuc2dtbApAQCAtMjM0LDYgKzIzNCwxMyBAQCA8dGl0bGU+RW52aXJvbm1lbnQ8L3RpdGxl PgogICAgPGFwcGxpY2F0aW9uPnBnX3Jld2luZDwvYXBwbGljYXRpb24+IGFsc28gdXNlcyB0 aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgICBzdXBwb3J0ZWQgYnkgPGFwcGxpY2F0aW9u PmxpYnBxPC9hcHBsaWNhdGlvbj4gKHNlZSA8eHJlZiBsaW5rZW5kPSJsaWJwcS1lbnZhcnMi Lz4pLgogICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGUgZW52aXJvbm1lbnQgdmFyaWFi bGUgPGVudmFyPlBHX0NPTE9SPC9lbnZhcj4gc3BlY2lmaWVzIHdoZXRoZXIgdG8gdXNlCisg ICBjb2xvciBpbiBkaWFnbm9zdGljcyBtZXNzYWdlcy4gIFBvc3NpYmxlIHZhbHVlcyBhcmUK KyAgIDxsaXRlcmFsPmFsd2F5czwvbGl0ZXJhbD4sIDxsaXRlcmFsPmF1dG88L2xpdGVyYWw+ LAorICAgPGxpdGVyYWw+bmV2ZXI8L2xpdGVyYWw+LgorICA8L3BhcmE+CiAgPC9yZWZzZWN0 MT4KIAogIDxyZWZzZWN0MT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVy aWZ5X2NoZWNrc3Vtcy5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnlfY2hlY2tz dW1zLnNnbWwKaW5kZXggOTA1YjhmMTIyMi4uMmVhN2M2ZjY5YSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL3JlZi9wZ192ZXJpZnlfY2hlY2tzdW1zLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9wZ192ZXJpZnlfY2hlY2tzdW1zLnNnbWwKQEAgLTExNyw2ICsxMTcsMTcgQEAg PHRpdGxlPkVudmlyb25tZW50PC90aXRsZT4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0 ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVy bT48ZW52YXI+UEdfQ09MT1I8L2VudmFyPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAg IDxwYXJhPgorICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gdXNlIGNvbG9yIGluIGRpYWdu b3N0aWNzIG1lc3NhZ2VzLiAgUG9zc2libGUgdmFsdWVzCisgICAgICBhcmUgPGxpdGVyYWw+ YWx3YXlzPC9saXRlcmFsPiwgPGxpdGVyYWw+YXV0bzwvbGl0ZXJhbD4sCisgICAgICA8bGl0 ZXJhbD5uZXZlcjwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgor ICAgPC92YXJsaXN0ZW50cnk+CiAgIDwvdmFyaWFibGVsaXN0PgogIDwvcmVmc2VjdDE+CiA8 L3JlZmVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxkdW1wLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbAppbmRleCAzODljMzE0ZWYz Li4zMjljMTBlNDMwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbApAQCAtMjA2LDYg KzIwNiwzMiBAQCA8dGl0bGU+T3B0aW9uczwvdGl0bGU+CiAgICA8L3BhcmE+CiAgPC9yZWZz ZWN0MT4KIAorIDxyZWZzZWN0MT4KKyAgPHRpdGxlPkVudmlyb25tZW50PC90aXRsZT4KKwor ICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48ZW52YXI+ UEdEQVRBPC9lbnZhcj48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAg ICAgIERhdGEgZGlyZWN0b3J5OyBzZWUgYWxzbyB0aGUgPG9wdGlvbj4tcDwvb3B0aW9uPiBv cHRpb24uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGVudmFyPlBHX0NPTE9SPC9l bnZhcj48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFNwZWNp ZmllcyB3aGV0aGVyIHRvIHVzZSBjb2xvciBpbiBkaWFnbm9zdGljcyBtZXNzYWdlcy4gIFBv c3NpYmxlIHZhbHVlcworICAgICAgYXJlIDxsaXRlcmFsPmFsd2F5czwvbGl0ZXJhbD4sIDxs aXRlcmFsPmF1dG88L2xpdGVyYWw+LAorICAgICAgPGxpdGVyYWw+bmV2ZXI8L2xpdGVyYWw+ LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor ICA8L3ZhcmlhYmxlbGlzdD4KKyA8L3JlZnNlY3QxPgorCiAgPHJlZnNlY3QxPgogICA8dGl0 bGU+Tm90ZXM8L3RpdGxlPgogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvcHNxbC1yZWYuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbAppbmRl eCBkNzUzOWFlNzQzLi5jOGEyMGZjY2E3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L3BzcWwtcmVmLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCkBA IC00MzIyLDYgKzQzMjIsMTcgQEAgPHRpdGxlIGlkPSJhcHAtcHNxbC1lbnZpcm9ubWVudC10 aXRsZSI+RW52aXJvbm1lbnQ8L3RpdGxlPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxp c3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48ZW52YXI+UEdfQ09M T1I8L2VudmFyPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAg U3BlY2lmaWVzIHdoZXRoZXIgdG8gdXNlIGNvbG9yIGluIGRpYWdub3N0aWNzIG1lc3NhZ2Vz LiAgUG9zc2libGUgdmFsdWVzCisgICAgICBhcmUgPGxpdGVyYWw+YWx3YXlzPC9saXRlcmFs PiwgPGxpdGVyYWw+YXV0bzwvbGl0ZXJhbD4sCisgICAgICA8bGl0ZXJhbD5uZXZlcjwvbGl0 ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGVudmFyPlBTUUxfRURJVE9S PC9lbnZhcj48L3Rlcm0+CiAgICAgPHRlcm0+PGVudmFyPkVESVRPUjwvZW52YXI+PC90ZXJt PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4ZGIuc2dtbCBiL2RvYy9z cmMvc2dtbC9yZWYvcmVpbmRleGRiLnNnbWwKaW5kZXggMTI3M2RhZDgwNy4uMWI2OWJjNDMw NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4ZGIuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXhkYi5zZ21sCkBAIC0zNDIsNiArMzQyLDE3IEBAIDx0 aXRsZT5FbnZpcm9ubWVudDwvdGl0bGU+CiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVt PgogICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ PGVudmFyPlBHX0NPTE9SPC9lbnZhcj48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8 cGFyYT4KKyAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRvIHVzZSBjb2xvciBpbiBkaWFnbm9z dGljcyBtZXNzYWdlcy4gIFBvc3NpYmxlIHZhbHVlcworICAgICAgYXJlIDxsaXRlcmFsPmFs d2F5czwvbGl0ZXJhbD4sIDxsaXRlcmFsPmF1dG88L2xpdGVyYWw+LAorICAgICAgPGxpdGVy YWw+bmV2ZXI8L2xpdGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgogICA8L3ZhcmlhYmxlbGlzdD4KIAogICA8cGFyYT4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvdmFjdXVtZGIuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvdmFjdXVtZGIuc2dtbAppbmRleCA0MWM3ZjNkZjc5Li40N2Q5MzQ1NmY4IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3ZhY3V1bWRiLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi92YWN1dW1kYi5zZ21sCkBAIC00NTEsNiArNDUxLDE3IEBAIDx0aXRsZT5FbnZpcm9u bWVudDwvdGl0bGU+CiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJs aXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGVudmFyPlBHX0NP TE9SPC9lbnZhcj48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAg IFNwZWNpZmllcyB3aGV0aGVyIHRvIHVzZSBjb2xvciBpbiBkaWFnbm9zdGljcyBtZXNzYWdl cy4gIFBvc3NpYmxlIHZhbHVlcworICAgICAgYXJlIDxsaXRlcmFsPmFsd2F5czwvbGl0ZXJh bD4sIDxsaXRlcmFsPmF1dG88L2xpdGVyYWw+LAorICAgICAgPGxpdGVyYWw+bmV2ZXI8L2xp dGVyYWw+LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVu dHJ5PgogICA8L3ZhcmlhYmxlbGlzdD4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvcGdfY29udHJvbGRhdGEuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvcGdfY29udHJvbGRhdGEuYwppbmRleCBlNjc0MmRjMjRiLi5hZWQyOGQ1YmNhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3BnX2NvbnRyb2xkYXRhLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wZ19jb250cm9sZGF0YS5jCkBAIC01Myw3ICs1 Myw3IEBAIHBnX2NvbnRyb2xfc3lzdGVtKFBHX0ZVTkNUSU9OX0FSR1MpCiAJdHVwZGVzYyA9 IEJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOwogCiAJLyogcmVhZCB0aGUgY29udHJvbCBmaWxl ICovCi0JQ29udHJvbEZpbGUgPSBnZXRfY29udHJvbGZpbGUoRGF0YURpciwgTlVMTCwgJmNy Y19vayk7CisJQ29udHJvbEZpbGUgPSBnZXRfY29udHJvbGZpbGUoRGF0YURpciwgJmNyY19v ayk7CiAJaWYgKCFjcmNfb2spCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycm1zZygiY2Fs Y3VsYXRlZCBDUkMgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggdmFsdWUgc3RvcmVkIGluIGZp bGUiKSkpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHBnX2NvbnRyb2xfY2hlY2twb2ludChQR19G VU5DVElPTl9BUkdTKQogCXR1cGRlc2MgPSBCbGVzc1R1cGxlRGVzYyh0dXBkZXNjKTsKIAog CS8qIFJlYWQgdGhlIGNvbnRyb2wgZmlsZS4gKi8KLQlDb250cm9sRmlsZSA9IGdldF9jb250 cm9sZmlsZShEYXRhRGlyLCBOVUxMLCAmY3JjX29rKTsKKwlDb250cm9sRmlsZSA9IGdldF9j b250cm9sZmlsZShEYXRhRGlyLCAmY3JjX29rKTsKIAlpZiAoIWNyY19vaykKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQkoZXJybXNnKCJjYWxjdWxhdGVkIENSQyBjaGVja3N1bSBkb2VzIG5v dCBtYXRjaCB2YWx1ZSBzdG9yZWQgaW4gZmlsZSIpKSk7CkBAIC0yMzUsNyArMjM1LDcgQEAg cGdfY29udHJvbF9yZWNvdmVyeShQR19GVU5DVElPTl9BUkdTKQogCXR1cGRlc2MgPSBCbGVz c1R1cGxlRGVzYyh0dXBkZXNjKTsKIAogCS8qIHJlYWQgdGhlIGNvbnRyb2wgZmlsZSAqLwot CUNvbnRyb2xGaWxlID0gZ2V0X2NvbnRyb2xmaWxlKERhdGFEaXIsIE5VTEwsICZjcmNfb2sp OworCUNvbnRyb2xGaWxlID0gZ2V0X2NvbnRyb2xmaWxlKERhdGFEaXIsICZjcmNfb2spOwog CWlmICghY3JjX29rKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJtc2coImNhbGN1bGF0 ZWQgQ1JDIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHZhbHVlIHN0b3JlZCBpbiBmaWxlIikp KTsKQEAgLTMwMiw3ICszMDIsNyBAQCBwZ19jb250cm9sX2luaXQoUEdfRlVOQ1RJT05fQVJH UykKIAl0dXBkZXNjID0gQmxlc3NUdXBsZURlc2ModHVwZGVzYyk7CiAKIAkvKiByZWFkIHRo ZSBjb250cm9sIGZpbGUgKi8KLQlDb250cm9sRmlsZSA9IGdldF9jb250cm9sZmlsZShEYXRh RGlyLCBOVUxMLCAmY3JjX29rKTsKKwlDb250cm9sRmlsZSA9IGdldF9jb250cm9sZmlsZShE YXRhRGlyLCAmY3JjX29rKTsKIAlpZiAoIWNyY19vaykKIAkJZXJlcG9ydChFUlJPUiwKIAkJ CQkoZXJybXNnKCJjYWxjdWxhdGVkIENSQyBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCB2YWx1 ZSBzdG9yZWQgaW4gZmlsZSIpKSk7CmRpZmYgLS1naXQgYS9zcmMvYmluL2luaXRkYi9pbml0 ZGIuYyBiL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCmluZGV4IGZkNTBhODA5ZWEuLjgwOTJm NjJiYzEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vaW5pdGRiL2luaXRkYi5jCisrKyBiL3NyYy9i aW4vaW5pdGRiL2luaXRkYi5jCkBAIC02Nyw2ICs2Nyw3IEBACiAjaW5jbHVkZSAiY29tbW9u L2ZpbGVfdXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vcmVzdHJpY3RlZF90b2tlbi5oIgog I2luY2x1ZGUgImNvbW1vbi91c2VybmFtZS5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dp bmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKICNpbmNsdWRlICJn ZXRhZGRyaW5mby5oIgogI2luY2x1ZGUgImdldG9wdF9sb25nLmgiCkBAIC0xODQsNyArMTg1 LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmRlZmF1bHRfdGltZXpvbmUgPSBOVUxMOwogIiMg YWxsb3dzIGFueSBsb2NhbCB1c2VyIHRvIGNvbm5lY3QgYXMgYW55IFBvc3RncmVTUUwgdXNl ciwgaW5jbHVkaW5nXG4iIFwKICIjIHRoZSBkYXRhYmFzZSBzdXBlcnVzZXIuICBJZiB5b3Ug ZG8gbm90IHRydXN0IGFsbCB5b3VyIGxvY2FsIHVzZXJzLFxuIiBcCiAiIyB1c2UgYW5vdGhl ciBhdXRoZW50aWNhdGlvbiBtZXRob2QuXG4iCi1zdGF0aWMgY2hhciAqYXV0aHdhcm5pbmcg PSBOVUxMOworc3RhdGljIGJvb2wJYXV0aHdhcm5pbmcgPSBmYWxzZTsKIAogLyoKICAqIENl bnRyYWxpemVkIGtub3dsZWRnZSBvZiBzd2l0Y2hlcyB0byBwYXNzIHRvIGJhY2tlbmQKQEAg LTMzNSw3ICszMzYsNyBAQCBlc2NhcGVfcXVvdGVzKGNvbnN0IGNoYXIgKnNyYykKIAogCWlm ICghcmVzdWx0KQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBvdXQgb2YgbWVtb3J5 XG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm91dCBvZiBtZW1vcnkiKTsKIAkJ ZXhpdCgxKTsKIAl9CiAJcmV0dXJuIHJlc3VsdDsKQEAgLTQ5MSw4ICs0OTIsNyBAQCByZWFk ZmlsZShjb25zdCBjaGFyICpwYXRoKQogCiAJaWYgKChpbmZpbGUgPSBmb3BlbihwYXRoLCAi ciIpKSA9PSBOVUxMKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qg b3BlbiBmaWxlIFwiJXNcIiBmb3IgcmVhZGluZzogJXNcbiIpLAotCQkJCXByb2duYW1lLCBw YXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVu IGZpbGUgXCIlc1wiIGZvciByZWFkaW5nOiAlbSIsIHBhdGgpOwogCQlleGl0KDEpOwogCX0K IApAQCAtNTQ3LDI0ICs1NDcsMjEgQEAgd3JpdGVmaWxlKGNoYXIgKnBhdGgsIGNoYXIgKips aW5lcykKIAogCWlmICgob3V0X2ZpbGUgPSBmb3BlbihwYXRoLCAidyIpKSA9PSBOVUxMKQog CXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNc IiBmb3Igd3JpdGluZzogJXNcbiIpLAotCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihl cnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZv ciB3cml0aW5nOiAlbSIsIHBhdGgpOwogCQlleGl0KDEpOwogCX0KIAlmb3IgKGxpbmUgPSBs aW5lczsgKmxpbmUgIT0gTlVMTDsgbGluZSsrKQogCXsKIAkJaWYgKGZwdXRzKCpsaW5lLCBv dXRfZmlsZSkgPCAwKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5v dCB3cml0ZSBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwgcGF0aCwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHdyaXRlIGZpbGUg XCIlc1wiOiAlbSIsIHBhdGgpOwogCQkJZXhpdCgxKTsKIAkJfQogCQlmcmVlKCpsaW5lKTsK IAl9CiAJaWYgKGZjbG9zZShvdXRfZmlsZSkpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IGNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1l LCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCB3 cml0ZSBmaWxlIFwiJXNcIjogJW0iLCBwYXRoKTsKIAkJZXhpdCgxKTsKIAl9CiB9CkBAIC01 ODIsOCArNTc5LDcgQEAgcG9wZW5fY2hlY2soY29uc3QgY2hhciAqY29tbWFuZCwgY29uc3Qg Y2hhciAqbW9kZSkKIAllcnJubyA9IDA7CiAJY21kZmQgPSBwb3Blbihjb21tYW5kLCBtb2Rl KTsKIAlpZiAoY21kZmQgPT0gTlVMTCkKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3Vs ZCBub3QgZXhlY3V0ZSBjb21tYW5kIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBj b21tYW5kLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBl eGVjdXRlIGNvbW1hbmQgXCIlc1wiOiAlbSIsIGNvbW1hbmQpOwogCXJldHVybiBjbWRmZDsK IH0KIApAQCAtNjAxLDUyICs1OTcsNDEgQEAgY2xlYW51cF9kaXJlY3Rvcmllc19hdGV4aXQo dm9pZCkKIAl7CiAJCWlmIChtYWRlX25ld19wZ2RhdGEpCiAJCXsKLQkJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogcmVtb3ZpbmcgZGF0YSBkaXJlY3RvcnkgXCIlc1wiXG4iKSwKLQkJCQkJ cHJvZ25hbWUsIHBnX2RhdGEpOworCQkJcGdfbG9nX2luZm8oInJlbW92aW5nIGRhdGEgZGly ZWN0b3J5IFwiJXNcIiIsIHBnX2RhdGEpOwogCQkJaWYgKCFybXRyZWUocGdfZGF0YSwgdHJ1 ZSkpCi0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBmYWlsZWQgdG8gcmVtb3ZlIGRhdGEg ZGlyZWN0b3J5XG4iKSwKLQkJCQkJCXByb2duYW1lKTsKKwkJCQlwZ19sb2dfZXJyb3IoImZh aWxlZCB0byByZW1vdmUgZGF0YSBkaXJlY3RvcnkiKTsKIAkJfQogCQllbHNlIGlmIChmb3Vu ZF9leGlzdGluZ19wZ2RhdGEpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIl czogcmVtb3ZpbmcgY29udGVudHMgb2YgZGF0YSBkaXJlY3RvcnkgXCIlc1wiXG4iKSwKLQkJ CQkJcHJvZ25hbWUsIHBnX2RhdGEpOworCQkJcGdfbG9nX2luZm8oInJlbW92aW5nIGNvbnRl bnRzIG9mIGRhdGEgZGlyZWN0b3J5IFwiJXNcIiIsCisJCQkJCQlwZ19kYXRhKTsKIAkJCWlm ICghcm10cmVlKHBnX2RhdGEsIGZhbHNlKSkKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IGZhaWxlZCB0byByZW1vdmUgY29udGVudHMgb2YgZGF0YSBkaXJlY3RvcnlcbiIpLAotCQkJ CQkJcHJvZ25hbWUpOworCQkJCXBnX2xvZ19lcnJvcigiZmFpbGVkIHRvIHJlbW92ZSBjb250 ZW50cyBvZiBkYXRhIGRpcmVjdG9yeSIpOwogCQl9CiAKIAkJaWYgKG1hZGVfbmV3X3hsb2dk aXIpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogcmVtb3ZpbmcgV0FMIGRpcmVj dG9yeSBcIiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgeGxvZ19kaXIpOworCQkJcGdfbG9n X2luZm8oInJlbW92aW5nIFdBTCBkaXJlY3RvcnkgXCIlc1wiIiwgeGxvZ19kaXIpOwogCQkJ aWYgKCFybXRyZWUoeGxvZ19kaXIsIHRydWUpKQotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIl czogZmFpbGVkIHRvIHJlbW92ZSBXQUwgZGlyZWN0b3J5XG4iKSwKLQkJCQkJCXByb2duYW1l KTsKKwkJCQlwZ19sb2dfZXJyb3IoImZhaWxlZCB0byByZW1vdmUgV0FMIGRpcmVjdG9yeSIp OwogCQl9CiAJCWVsc2UgaWYgKGZvdW5kX2V4aXN0aW5nX3hsb2dkaXIpCiAJCXsKLQkJCWZw cmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogcmVtb3ZpbmcgY29udGVudHMgb2YgV0FMIGRp cmVjdG9yeSBcIiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgeGxvZ19kaXIpOworCQkJcGdf bG9nX2luZm8oInJlbW92aW5nIGNvbnRlbnRzIG9mIFdBTCBkaXJlY3RvcnkgXCIlc1wiIiwg eGxvZ19kaXIpOwogCQkJaWYgKCFybXRyZWUoeGxvZ19kaXIsIGZhbHNlKSkKLQkJCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IGZhaWxlZCB0byByZW1vdmUgY29udGVudHMgb2YgV0FMIGRp cmVjdG9yeVxuIiksCi0JCQkJCQlwcm9nbmFtZSk7CisJCQkJcGdfbG9nX2Vycm9yKCJmYWls ZWQgdG8gcmVtb3ZlIGNvbnRlbnRzIG9mIFdBTCBkaXJlY3RvcnkiKTsKIAkJfQogCQkvKiBv dGhlcndpc2UgZGllZCBkdXJpbmcgc3RhcnR1cCwgZG8gbm90aGluZyEgKi8KIAl9CiAJZWxz ZQogCXsKIAkJaWYgKG1hZGVfbmV3X3BnZGF0YSB8fCBmb3VuZF9leGlzdGluZ19wZ2RhdGEp Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGRhdGEgZGlyZWN0b3J5IFwiJXNc IiBub3QgcmVtb3ZlZCBhdCB1c2VyJ3MgcmVxdWVzdFxuIiksCi0JCQkJCXByb2duYW1lLCBw Z19kYXRhKTsKKwkJCXBnX2xvZ19pbmZvKCJkYXRhIGRpcmVjdG9yeSBcIiVzXCIgbm90IHJl bW92ZWQgYXQgdXNlcidzIHJlcXVlc3QiLAorCQkJCQkJcGdfZGF0YSk7CiAKIAkJaWYgKG1h ZGVfbmV3X3hsb2dkaXIgfHwgZm91bmRfZXhpc3RpbmdfeGxvZ2RpcikKLQkJCWZwcmludGYo c3RkZXJyLAotCQkJCQlfKCIlczogV0FMIGRpcmVjdG9yeSBcIiVzXCIgbm90IHJlbW92ZWQg YXQgdXNlcidzIHJlcXVlc3RcbiIpLAotCQkJCQlwcm9nbmFtZSwgeGxvZ19kaXIpOworCQkJ cGdfbG9nX2luZm8oIldBTCBkaXJlY3RvcnkgXCIlc1wiIG5vdCByZW1vdmVkIGF0IHVzZXIn cyByZXF1ZXN0IiwKKwkJCQkJCXhsb2dfZGlyKTsKIAl9CiB9CiAKQEAgLTY2MywxMiArNjQ4 LDEwIEBAIGdldF9pZCh2b2lkKQogI2lmbmRlZiBXSU4zMgogCWlmIChnZXRldWlkKCkgPT0g MCkJCQkvKiAwIGlzIHJvb3QncyB1aWQgKi8KIAl7CisJCXBnX2xvZ19lcnJvcigiY2Fubm90 IGJlIHJ1biBhcyByb290Iik7CiAJCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBjYW5u b3QgYmUgcnVuIGFzIHJvb3RcbiIKLQkJCQkgICJQbGVhc2UgbG9nIGluICh1c2luZywgZS5n LiwgXCJzdVwiKSBhcyB0aGUgIgotCQkJCSAgIih1bnByaXZpbGVnZWQpIHVzZXIgdGhhdCB3 aWxsXG4iCi0JCQkJICAib3duIHRoZSBzZXJ2ZXIgcHJvY2Vzcy5cbiIpLAotCQkJCXByb2du YW1lKTsKKwkJCQlfKCJQbGVhc2UgbG9nIGluICh1c2luZywgZS5nLiwgXCJzdVwiKSBhcyB0 aGUgKHVucHJpdmlsZWdlZCkgdXNlciB0aGF0IHdpbGxcbiIKKwkJCQkgICJvd24gdGhlIHNl cnZlciBwcm9jZXNzLlxuIikpOwogCQlleGl0KDEpOwogCX0KICNlbmRpZgpAQCAtNzAwLDgg KzY4Myw4IEBAIGdldF9lbmNvZGluZ19pZChjb25zdCBjaGFyICplbmNvZGluZ19uYW1lKQog CQlpZiAoKGVuYyA9IHBnX3ZhbGlkX3NlcnZlcl9lbmNvZGluZyhlbmNvZGluZ19uYW1lKSkg Pj0gMCkKIAkJCXJldHVybiBlbmM7CiAJfQotCWZwcmludGYoc3RkZXJyLCBfKCIlczogXCIl c1wiIGlzIG5vdCBhIHZhbGlkIHNlcnZlciBlbmNvZGluZyBuYW1lXG4iKSwKLQkJCXByb2du YW1lLCBlbmNvZGluZ19uYW1lID8gZW5jb2RpbmdfbmFtZSA6ICIobnVsbCkiKTsKKwlwZ19s b2dfZXJyb3IoIlwiJXNcIiBpcyBub3QgYSB2YWxpZCBzZXJ2ZXIgZW5jb2RpbmcgbmFtZSIs CisJCQkJIGVuY29kaW5nX25hbWUgPyBlbmNvZGluZ19uYW1lIDogIihudWxsKSIpOwogCWV4 aXQoMSk7CiB9CiAKQEAgLTgzMSwxNyArODE0LDE0IEBAIGNoZWNrX2lucHV0KGNoYXIgKnBh dGgpCiAJewogCQlpZiAoZXJybm8gPT0gRU5PRU5UKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVy ciwKLQkJCQkJXygiJXM6IGZpbGUgXCIlc1wiIGRvZXMgbm90IGV4aXN0XG4iKSwgcHJvZ25h bWUsIHBhdGgpOworCQkJcGdfbG9nX2Vycm9yKCJmaWxlIFwiJXNcIiBkb2VzIG5vdCBleGlz dCIsIHBhdGgpOwogCQkJZnByaW50ZihzdGRlcnIsCiAJCQkJCV8oIlRoaXMgbWlnaHQgbWVh biB5b3UgaGF2ZSBhIGNvcnJ1cHRlZCBpbnN0YWxsYXRpb24gb3IgaWRlbnRpZmllZFxuIgog CQkJCQkgICJ0aGUgd3JvbmcgZGlyZWN0b3J5IHdpdGggdGhlIGludm9jYXRpb24gb3B0aW9u IC1MLlxuIikpOwogCQl9CiAJCWVsc2UKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJ CV8oIiVzOiBjb3VsZCBub3QgYWNjZXNzIGZpbGUgXCIlc1wiOiAlc1xuIiksIHByb2duYW1l LCBwYXRoLAotCQkJCQlzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3Vs ZCBub3QgYWNjZXNzIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgpOwogCQkJZnByaW50ZihzdGRl cnIsCiAJCQkJCV8oIlRoaXMgbWlnaHQgbWVhbiB5b3UgaGF2ZSBhIGNvcnJ1cHRlZCBpbnN0 YWxsYXRpb24gb3IgaWRlbnRpZmllZFxuIgogCQkJCQkgICJ0aGUgd3JvbmcgZGlyZWN0b3J5 IHdpdGggdGhlIGludm9jYXRpb24gb3B0aW9uIC1MLlxuIikpOwpAQCAtODUwLDggKzgzMCw3 IEBAIGNoZWNrX2lucHV0KGNoYXIgKnBhdGgpCiAJfQogCWlmICghU19JU1JFRyhzdGF0YnVm LnN0X21vZGUpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IGZpbGUgXCIl c1wiIGlzIG5vdCBhIHJlZ3VsYXIgZmlsZVxuIiksIHByb2duYW1lLCBwYXRoKTsKKwkJcGdf bG9nX2Vycm9yKCJmaWxlIFwiJXNcIiBpcyBub3QgYSByZWd1bGFyIGZpbGUiLCBwYXRoKTsK IAkJZnByaW50ZihzdGRlcnIsCiAJCQkJXygiVGhpcyBtaWdodCBtZWFuIHlvdSBoYXZlIGEg Y29ycnVwdGVkIGluc3RhbGxhdGlvbiBvciBpZGVudGlmaWVkXG4iCiAJCQkJICAidGhlIHdy b25nIGRpcmVjdG9yeSB3aXRoIHRoZSBpbnZvY2F0aW9uIG9wdGlvbiAtTC5cbiIpKTsKQEAg LTg3NiwxNSArODU1LDEzIEBAIHdyaXRlX3ZlcnNpb25fZmlsZShjb25zdCBjaGFyICpleHRy YXBhdGgpCiAKIAlpZiAoKHZlcnNpb25fZmlsZSA9IGZvcGVuKHBhdGgsIFBHX0JJTkFSWV9X KSkgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IG9w ZW4gZmlsZSBcIiVzXCIgZm9yIHdyaXRpbmc6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgcGF0 aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBm aWxlIFwiJXNcIiBmb3Igd3JpdGluZzogJW0iLCBwYXRoKTsKIAkJZXhpdCgxKTsKIAl9CiAJ aWYgKGZwcmludGYodmVyc2lvbl9maWxlLCAiJXNcbiIsIFBHX01BSk9SVkVSU0lPTikgPCAw IHx8CiAJCWZjbG9zZSh2ZXJzaW9uX2ZpbGUpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFt ZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qg d3JpdGUgZmlsZSBcIiVzXCI6ICVtIiwgcGF0aCk7CiAJCWV4aXQoMSk7CiAJfQogCWZyZWUo cGF0aCk7CkBAIC05MDQsMTQgKzg4MSwxMiBAQCBzZXRfbnVsbF9jb25mKHZvaWQpCiAJY29u Zl9maWxlID0gZm9wZW4ocGF0aCwgUEdfQklOQVJZX1cpOwogCWlmIChjb25mX2ZpbGUgPT0g TlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IG9wZW4gZmls ZSBcIiVzXCIgZm9yIHdyaXRpbmc6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgcGF0aCwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwi JXNcIiBmb3Igd3JpdGluZzogJW0iLCBwYXRoKTsKIAkJZXhpdCgxKTsKIAl9CiAJaWYgKGZj bG9zZShjb25mX2ZpbGUpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBu b3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgcGF0aCwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgd3JpdGUgZmlsZSBc IiVzXCI6ICVtIiwgcGF0aCk7CiAJCWV4aXQoMSk7CiAJfQogCWZyZWUocGF0aCk7CkBAIC0x MjYxLDggKzEyMzYsNyBAQCBzZXR1cF9jb25maWcodm9pZCkKIAl3cml0ZWZpbGUocGF0aCwg Y29uZmxpbmVzKTsKIAlpZiAoY2htb2QocGF0aCwgcGdfZmlsZV9jcmVhdGVfbW9kZSkgIT0g MCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGNoYW5nZSBwZXJt aXNzaW9ucyBvZiBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgcGF0aCwgc3RyZXJy b3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2hhbmdlIHBlcm1pc3Np b25zIG9mIFwiJXNcIjogJW0iLCBwYXRoKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTEyODEs OCArMTI1NSw3IEBAIHNldHVwX2NvbmZpZyh2b2lkKQogCXdyaXRlZmlsZShwYXRoLCBhdXRv Y29uZmxpbmVzKTsKIAlpZiAoY2htb2QocGF0aCwgcGdfZmlsZV9jcmVhdGVfbW9kZSkgIT0g MCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGNoYW5nZSBwZXJt aXNzaW9ucyBvZiBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgcGF0aCwgc3RyZXJy b3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2hhbmdlIHBlcm1pc3Np b25zIG9mIFwiJXNcIjogJW0iLCBwYXRoKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTEzNjgs OCArMTM0MSw3IEBAIHNldHVwX2NvbmZpZyh2b2lkKQogCXdyaXRlZmlsZShwYXRoLCBjb25m bGluZXMpOwogCWlmIChjaG1vZChwYXRoLCBwZ19maWxlX2NyZWF0ZV9tb2RlKSAhPSAwKQog CXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY2hhbmdlIHBlcm1pc3Np b25zIG9mIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihl cnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjaGFuZ2UgcGVybWlzc2lvbnMg b2YgXCIlc1wiOiAlbSIsIHBhdGgpOwogCQlleGl0KDEpOwogCX0KIApAQCAtMTM4NCw4ICsx MzU2LDcgQEAgc2V0dXBfY29uZmlnKHZvaWQpCiAJd3JpdGVmaWxlKHBhdGgsIGNvbmZsaW5l cyk7CiAJaWYgKGNobW9kKHBhdGgsIHBnX2ZpbGVfY3JlYXRlX21vZGUpICE9IDApCiAJewot CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjaGFuZ2UgcGVybWlzc2lvbnMg b2YgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5v KSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNoYW5nZSBwZXJtaXNzaW9ucyBvZiBc IiVzXCI6ICVtIiwgcGF0aCk7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0xNDE5LDExICsxMzkw LDkgQEAgYm9vdHN0cmFwX3RlbXBsYXRlMSh2b2lkKQogCiAJaWYgKHN0cmNtcChoZWFkZXJs aW5lLCAqYmtpX2xpbmVzKSAhPSAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygi JXM6IGlucHV0IGZpbGUgXCIlc1wiIGRvZXMgbm90IGJlbG9uZyB0byBQb3N0Z3JlU1FMICVz XG4iCi0JCQkJICAiQ2hlY2sgeW91ciBpbnN0YWxsYXRpb24gb3Igc3BlY2lmeSB0aGUgY29y cmVjdCBwYXRoICIKLQkJCQkgICJ1c2luZyB0aGUgb3B0aW9uIC1MLlxuIiksCi0JCQkJcHJv Z25hbWUsIGJraV9maWxlLCBQR19WRVJTSU9OKTsKKwkJcGdfbG9nX2Vycm9yKCJpbnB1dCBm aWxlIFwiJXNcIiBkb2VzIG5vdCBiZWxvbmcgdG8gUG9zdGdyZVNRTCAlcyIsCisJCQkJCSBi a2lfZmlsZSwgUEdfVkVSU0lPTik7CisJCWZwcmludGYoc3RkZXJyLCBfKCJDaGVjayB5b3Vy IGluc3RhbGxhdGlvbiBvciBzcGVjaWZ5IHRoZSBjb3JyZWN0IHBhdGggdXNpbmcgdGhlIG9w dGlvbiAtTC5cbiIpKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTE1NjAsMTggKzE1MjksMTgg QEAgZ2V0X3N1X3B3ZCh2b2lkKQogCiAJCWlmICghcHdmKQogCQl7Ci0JCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciByZWFkaW5nOiAl c1xuIiksCi0JCQkJCXByb2duYW1lLCBwd2ZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOwor CQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiBmb3IgcmVhZGlu ZzogJW0iLAorCQkJCQkJIHB3ZmlsZW5hbWUpOwogCQkJZXhpdCgxKTsKIAkJfQogCQlpZiAo IWZnZXRzKHB3ZDEsIHNpemVvZihwd2QxKSwgcHdmKSkKIAkJewogCQkJaWYgKGZlcnJvcihw d2YpKQotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQgcGFzc3dv cmQgZnJvbSBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCQkJcHJvZ25hbWUsIHB3ZmlsZW5h bWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVh ZCBwYXNzd29yZCBmcm9tIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCQkJIHB3ZmlsZW5hbWUp OwogCQkJZWxzZQotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogcGFzc3dvcmQgZmlsZSBc IiVzXCIgaXMgZW1wdHlcbiIpLAotCQkJCQkJcHJvZ25hbWUsIHB3ZmlsZW5hbWUpOworCQkJ CXBnX2xvZ19lcnJvcigicGFzc3dvcmQgZmlsZSBcIiVzXCIgaXMgZW1wdHkiLAorCQkJCQkJ CSBwd2ZpbGVuYW1lKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAkJZmNsb3NlKHB3Zik7CkBAIC0y MjM3LDggKzIyMDYsNyBAQCBjaGVja19sb2NhbGVfbmFtZShpbnQgY2F0ZWdvcnksIGNvbnN0 IGNoYXIgKmxvY2FsZSwgY2hhciAqKmNhbm9ubmFtZSkKIAlzYXZlID0gc2V0bG9jYWxlKGNh dGVnb3J5LCBOVUxMKTsKIAlpZiAoIXNhdmUpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IHNldGxvY2FsZSgpIGZhaWxlZFxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2df ZXJyb3IoInNldGxvY2FsZSgpIGZhaWxlZCIpOwogCQlleGl0KDEpOwogCX0KIApAQCAtMjI1 OSw4ICsyMjI3LDcgQEAgY2hlY2tfbG9jYWxlX25hbWUoaW50IGNhdGVnb3J5LCBjb25zdCBj aGFyICpsb2NhbGUsIGNoYXIgKipjYW5vbm5hbWUpCiAJLyogcmVzdG9yZSBvbGQgdmFsdWUu ICovCiAJaWYgKCFzZXRsb2NhbGUoY2F0ZWdvcnksIHNhdmUpKQogCXsKLQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBmYWlsZWQgdG8gcmVzdG9yZSBvbGQgbG9jYWxlIFwiJXNcIlxuIiks Ci0JCQkJcHJvZ25hbWUsIHNhdmUpOworCQlwZ19sb2dfZXJyb3IoImZhaWxlZCB0byByZXN0 b3JlIG9sZCBsb2NhbGUgXCIlc1wiIiwgc2F2ZSk7CiAJCWV4aXQoMSk7CiAJfQogCWZyZWUo c2F2ZSk7CkBAIC0yMjY5LDggKzIyMzYsNyBAQCBjaGVja19sb2NhbGVfbmFtZShpbnQgY2F0 ZWdvcnksIGNvbnN0IGNoYXIgKmxvY2FsZSwgY2hhciAqKmNhbm9ubmFtZSkKIAlpZiAocmVz ID09IE5VTEwpCiAJewogCQlpZiAoKmxvY2FsZSkKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIl czogaW52YWxpZCBsb2NhbGUgbmFtZSBcIiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgbG9j YWxlKTsKKwkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBsb2NhbGUgbmFtZSBcIiVzXCIiLCBs b2NhbGUpOwogCQllbHNlCiAJCXsKIAkJCS8qCkBAIC0yMjgxLDggKzIyNDcsNyBAQCBjaGVj a19sb2NhbGVfbmFtZShpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmxvY2FsZSwgY2hhciAq KmNhbm9ubmFtZSkKIAkJCSAqIHNldGxvY2FsZSdzIGJlaGF2aW9yIGlzIGltcGxlbWVudGF0 aW9uLXNwZWNpZmljLCBpdCdzIGhhcmQgdG8KIAkJCSAqIGJlIHN1cmUgd2hhdCBpdCBkaWRu J3QgbGlrZS4gIFByaW50IGEgc2FmZSBnZW5lcmljIG1lc3NhZ2UuCiAJCQkgKi8KLQkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBsb2NhbGUgc2V0dGluZ3M7IGNoZWNrIExB TkcgYW5kIExDXyogZW52aXJvbm1lbnQgdmFyaWFibGVzXG4iKSwKLQkJCQkJcHJvZ25hbWUp OworCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGxvY2FsZSBzZXR0aW5nczsgY2hlY2sgTEFO RyBhbmQgTENfKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMiKTsKIAkJfQogCQlleGl0KDEpOwog CX0KQEAgLTIzMDksNyArMjI3NCw3IEBAIGNoZWNrX2xvY2FsZV9lbmNvZGluZyhjb25zdCBj aGFyICpsb2NhbGUsIGludCB1c2VyX2VuYykKICNlbmRpZgogCQkgIHVzZXJfZW5jID09IFBH X1NRTF9BU0NJSSkpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGVuY29kaW5nIG1p c21hdGNoXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoImVuY29kaW5nIG1pc21h dGNoIik7CiAJCWZwcmludGYoc3RkZXJyLAogCQkJCV8oIlRoZSBlbmNvZGluZyB5b3Ugc2Vs ZWN0ZWQgKCVzKSBhbmQgdGhlIGVuY29kaW5nIHRoYXQgdGhlXG4iCiAJCQkJICAic2VsZWN0 ZWQgbG9jYWxlIHVzZXMgKCVzKSBkbyBub3QgbWF0Y2guICBUaGlzIHdvdWxkIGxlYWQgdG9c biIKQEAgLTI0MjcsOSArMjM5Miw3IEBAIGNoZWNrX2F1dGhtZXRob2RfdW5zcGVjaWZpZWQo Y29uc3QgY2hhciAqKmF1dGhtZXRob2QpCiB7CiAJaWYgKCphdXRobWV0aG9kID09IE5VTEwp CiAJewotCQlhdXRod2FybmluZyA9IF8oIlxuV0FSTklORzogZW5hYmxpbmcgXCJ0cnVzdFwi IGF1dGhlbnRpY2F0aW9uIGZvciBsb2NhbCBjb25uZWN0aW9uc1xuIgotCQkJCQkJIllvdSBj YW4gY2hhbmdlIHRoaXMgYnkgZWRpdGluZyBwZ19oYmEuY29uZiBvciB1c2luZyB0aGUgb3B0 aW9uIC1BLCBvclxuIgotCQkJCQkJIi0tYXV0aC1sb2NhbCBhbmQgLS1hdXRoLWhvc3QsIHRo ZSBuZXh0IHRpbWUgeW91IHJ1biBpbml0ZGIuXG4iKTsKKwkJYXV0aHdhcm5pbmcgPSB0cnVl OwogCQkqYXV0aG1ldGhvZCA9ICJ0cnVzdCI7CiAJfQogfQpAQCAtMjQ0OSw4ICsyNDEyLDgg QEAgY2hlY2tfYXV0aG1ldGhvZF92YWxpZChjb25zdCBjaGFyICphdXRobWV0aG9kLCBjb25z dCBjaGFyICpjb25zdCAqdmFsaWRfbWV0aG9kcywKIAkJCQlyZXR1cm47CiAJfQogCi0JZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBcIiVz XCIgZm9yIFwiJXNcIiBjb25uZWN0aW9uc1xuIiksCi0JCQlwcm9nbmFtZSwgYXV0aG1ldGhv ZCwgY29ubnR5cGUpOworCXBnX2xvZ19lcnJvcigiaW52YWxpZCBhdXRoZW50aWNhdGlvbiBt ZXRob2QgXCIlc1wiIGZvciBcIiVzXCIgY29ubmVjdGlvbnMiLAorCQkJCSBhdXRobWV0aG9k LCBjb25udHlwZSk7CiAJZXhpdCgxKTsKIH0KIApAQCAtMjQ2NSw3ICsyNDI4LDcgQEAgY2hl Y2tfbmVlZF9wYXNzd29yZChjb25zdCBjaGFyICphdXRobWV0aG9kbG9jYWwsIGNvbnN0IGNo YXIgKmF1dGhtZXRob2Rob3N0KQogCQkgc3RyY21wKGF1dGhtZXRob2Rob3N0LCAic2NyYW0t c2hhLTI1NiIpID09IDApICYmCiAJCSEocHdwcm9tcHQgfHwgcHdmaWxlbmFtZSkpCiAJewot CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG11c3Qgc3BlY2lmeSBhIHBhc3N3b3JkIGZvciB0 aGUgc3VwZXJ1c2VyIHRvIGVuYWJsZSAlcyBhdXRoZW50aWNhdGlvblxuIiksIHByb2duYW1l LAorCQlwZ19sb2dfZXJyb3IoIm11c3Qgc3BlY2lmeSBhIHBhc3N3b3JkIGZvciB0aGUgc3Vw ZXJ1c2VyIHRvIGVuYWJsZSAlcyBhdXRoZW50aWNhdGlvbiIsCiAJCQkJKHN0cmNtcChhdXRo bWV0aG9kbG9jYWwsICJtZDUiKSA9PSAwIHx8CiAJCQkJIHN0cmNtcChhdXRobWV0aG9kbG9j YWwsICJwYXNzd29yZCIpID09IDAgfHwKIAkJCQkgc3RyY21wKGF1dGhtZXRob2Rsb2NhbCwg InNjcmFtLXNoYS0yNTYiKSA9PSAwKQpAQCAtMjQ5MiwxMiArMjQ1NSwxMSBAQCBzZXR1cF9w Z2RhdGEodm9pZCkKIAkJfQogCQllbHNlCiAJCXsKKwkJCXBnX2xvZ19lcnJvcigibm8gZGF0 YSBkaXJlY3Rvcnkgc3BlY2lmaWVkIik7CiAJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygi JXM6IG5vIGRhdGEgZGlyZWN0b3J5IHNwZWNpZmllZFxuIgotCQkJCQkgICJZb3UgbXVzdCBp ZGVudGlmeSB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBkYXRhIGZvciB0aGlzIGRhdGFiYXNl IHN5c3RlbVxuIgorCQkJCQlfKCJZb3UgbXVzdCBpZGVudGlmeSB0aGUgZGlyZWN0b3J5IHdo ZXJlIHRoZSBkYXRhIGZvciB0aGlzIGRhdGFiYXNlIHN5c3RlbVxuIgogCQkJCQkgICJ3aWxs IHJlc2lkZS4gIERvIHRoaXMgd2l0aCBlaXRoZXIgdGhlIGludm9jYXRpb24gb3B0aW9uIC1E IG9yIHRoZVxuIgotCQkJCQkgICJlbnZpcm9ubWVudCB2YXJpYWJsZSBQR0RBVEEuXG4iKSwK LQkJCQkJcHJvZ25hbWUpOworCQkJCQkgICJlbnZpcm9ubWVudCB2YXJpYWJsZSBQR0RBVEEu XG4iKSk7CiAJCQlleGl0KDEpOwogCQl9CiAJfQpAQCAtMjUzMCwxOCArMjQ5MiwxNSBAQCBz ZXR1cF9iaW5fcGF0aHMoY29uc3QgY2hhciAqYXJndjApCiAJCQlzdHJsY3B5KGZ1bGxfcGF0 aCwgcHJvZ25hbWUsIHNpemVvZihmdWxsX3BhdGgpKTsKIAogCQlpZiAocmV0ID09IC0xKQot CQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIlRoZSBwcm9ncmFtIFwicG9zdGdyZXNcIiBp cyBuZWVkZWQgYnkgJXMgIgotCQkJCQkgICJidXQgd2FzIG5vdCBmb3VuZCBpbiB0aGVcbiIK LQkJCQkJICAic2FtZSBkaXJlY3RvcnkgYXMgXCIlc1wiLlxuIgotCQkJCQkgICJDaGVjayB5 b3VyIGluc3RhbGxhdGlvbi5cbiIpLAotCQkJCQlwcm9nbmFtZSwgZnVsbF9wYXRoKTsKKwkJ CXBnX2xvZ19lcnJvcigiVGhlIHByb2dyYW0gXCJwb3N0Z3Jlc1wiIGlzIG5lZWRlZCBieSAl cyBidXQgd2FzIG5vdCBmb3VuZCBpbiB0aGVcbiIKKwkJCQkJCSAic2FtZSBkaXJlY3Rvcnkg YXMgXCIlc1wiLlxuIgorCQkJCQkJICJDaGVjayB5b3VyIGluc3RhbGxhdGlvbi4iLAorCQkJ CQkJIGZ1bGxfcGF0aCwgcHJvZ25hbWUpOwogCQllbHNlCi0JCQlmcHJpbnRmKHN0ZGVyciwK LQkJCQkJXygiVGhlIHByb2dyYW0gXCJwb3N0Z3Jlc1wiIHdhcyBmb3VuZCBieSBcIiVzXCJc biIKLQkJCQkJICAiYnV0IHdhcyBub3QgdGhlIHNhbWUgdmVyc2lvbiBhcyAlcy5cbiIKLQkJ CQkJICAiQ2hlY2sgeW91ciBpbnN0YWxsYXRpb24uXG4iKSwKLQkJCQkJZnVsbF9wYXRoLCBw cm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoIlRoZSBwcm9ncmFtIFwicG9zdGdyZXNcIiB3 YXMgZm91bmQgYnkgXCIlc1wiXG4iCisJCQkJCQkgImJ1dCB3YXMgbm90IHRoZSBzYW1lIHZl cnNpb24gYXMgJXMuXG4iCisJCQkJCQkgIkNoZWNrIHlvdXIgaW5zdGFsbGF0aW9uLiIsCisJ CQkJCQkgZnVsbF9wYXRoLCBwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0yNTU3 LDcgKzI1MTYsNyBAQCBzZXR1cF9iaW5fcGF0aHMoY29uc3QgY2hhciAqYXJndjApCiAJfQog CWVsc2UgaWYgKCFpc19hYnNvbHV0ZV9wYXRoKHNoYXJlX3BhdGgpKQogCXsKLQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBpbnB1dCBmaWxlIGxvY2F0aW9uIG11c3QgYmUgYW4gYWJzb2x1 dGUgcGF0aFxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJpbnB1dCBmaWxlIGxv Y2F0aW9uIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aCIpOwogCQlleGl0KDEpOwogCX0KIApA QCAtMjYwMSw4ICsyNTYwLDggQEAgc2V0dXBfbG9jYWxlX2VuY29kaW5nKHZvaWQpCiAJCWlm IChjdHlwZV9lbmMgPT0gLTEpCiAJCXsKIAkJCS8qIENvdWxkbid0IHJlY29nbml6ZSB0aGUg bG9jYWxlJ3MgY29kZXNldCAqLwotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBu b3QgZmluZCBzdWl0YWJsZSBlbmNvZGluZyBmb3IgbG9jYWxlIFwiJXNcIlxuIiksCi0JCQkJ CXByb2duYW1lLCBsY19jdHlwZSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBmaW5k IHN1aXRhYmxlIGVuY29kaW5nIGZvciBsb2NhbGUgXCIlc1wiIiwKKwkJCQkJCSBsY19jdHlw ZSk7CiAJCQlmcHJpbnRmKHN0ZGVyciwgXygiUmVydW4gJXMgd2l0aCB0aGUgLUUgb3B0aW9u LlxuIiksIHByb2duYW1lKTsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhl bHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCQlwcm9nbmFtZSk7CkBAIC0y NjIyLDkgKzI1ODEsOCBAQCBzZXR1cF9sb2NhbGVfZW5jb2Rpbmcodm9pZCkKIAkJCQkgICBw Z19lbmNvZGluZ190b19jaGFyKGN0eXBlX2VuYyksCiAJCQkJICAgcGdfZW5jb2RpbmdfdG9f Y2hhcihlbmNvZGluZ2lkKSk7CiAjZWxzZQotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8o IiVzOiBsb2NhbGUgXCIlc1wiIHJlcXVpcmVzIHVuc3VwcG9ydGVkIGVuY29kaW5nIFwiJXNc IlxuIiksCi0JCQkJCXByb2duYW1lLCBsY19jdHlwZSwgcGdfZW5jb2RpbmdfdG9fY2hhcihj dHlwZV9lbmMpKTsKKwkJCXBnX2xvZ19lcnJvcigibG9jYWxlIFwiJXNcIiByZXF1aXJlcyB1 bnN1cHBvcnRlZCBlbmNvZGluZyBcIiVzXCIiLAorCQkJCQkJIGxjX2N0eXBlLCBwZ19lbmNv ZGluZ190b19jaGFyKGN0eXBlX2VuYykpOwogCQkJZnByaW50ZihzdGRlcnIsCiAJCQkJCV8o IkVuY29kaW5nIFwiJXNcIiBpcyBub3QgYWxsb3dlZCBhcyBhIHNlcnZlci1zaWRlIGVuY29k aW5nLlxuIgogCQkJCQkgICJSZXJ1biAlcyB3aXRoIGEgZGlmZmVyZW50IGxvY2FsZSBzZWxl Y3Rpb24uXG4iKSwKQEAgLTI3NzQsOCArMjczMiw3IEBAIGNyZWF0ZV9kYXRhX2RpcmVjdG9y eSh2b2lkKQogCiAJCQlpZiAocGdfbWtkaXJfcChwZ19kYXRhLCBwZ19kaXJfY3JlYXRlX21v ZGUpICE9IDApCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qg Y3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBwZ19k YXRhLCBzdHJlcnJvcihlcnJubykpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNy ZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHBnX2RhdGEpOwogCQkJCWV4aXQoMSk7CiAJ CQl9CiAJCQllbHNlCkBAIC0yNzkyLDggKzI3NDksOCBAQCBjcmVhdGVfZGF0YV9kaXJlY3Rv cnkodm9pZCkKIAogCQkJaWYgKGNobW9kKHBnX2RhdGEsIHBnX2Rpcl9jcmVhdGVfbW9kZSkg IT0gMCkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjaGFu Z2UgcGVybWlzc2lvbnMgb2YgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCQkJcHJv Z25hbWUsIHBnX2RhdGEsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJj b3VsZCBub3QgY2hhbmdlIHBlcm1pc3Npb25zIG9mIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwK KwkJCQkJCQkgcGdfZGF0YSk7CiAJCQkJZXhpdCgxKTsKIAkJCX0KIAkJCWVsc2UKQEAgLTI4 MDYsOSArMjc2Myw3IEBAIGNyZWF0ZV9kYXRhX2RpcmVjdG9yeSh2b2lkKQogCQljYXNlIDM6 CiAJCWNhc2UgNDoKIAkJCS8qIFByZXNlbnQgYW5kIG5vdCBlbXB0eSAqLwotCQkJZnByaW50 ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBkaXJlY3RvcnkgXCIlc1wiIGV4aXN0cyBidXQgaXMg bm90IGVtcHR5XG4iKSwKLQkJCQkJcHJvZ25hbWUsIHBnX2RhdGEpOworCQkJcGdfbG9nX2Vy cm9yKCJkaXJlY3RvcnkgXCIlc1wiIGV4aXN0cyBidXQgaXMgbm90IGVtcHR5IiwgcGdfZGF0 YSk7CiAJCQlpZiAocmV0ICE9IDQpCiAJCQkJd2Fybl9vbl9tb3VudF9wb2ludChyZXQpOwog CQkJZWxzZQpAQCAtMjgyMSw4ICsyNzc2LDcgQEAgY3JlYXRlX2RhdGFfZGlyZWN0b3J5KHZv aWQpCiAKIAkJZGVmYXVsdDoKIAkJCS8qIFRyb3VibGUgYWNjZXNzaW5nIGRpcmVjdG9yeSAq LwotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgYWNjZXNzIGRpcmVjdG9y eSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHBnX2RhdGEsIHN0cmVycm9yKGVy cm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBhY2Nlc3MgZGlyZWN0b3J5IFwi JXNcIjogJW0iLCBwZ19kYXRhKTsKIAkJCWV4aXQoMSk7CiAJfQogfQpAQCAtMjg0NSw3ICsy Nzk5LDcgQEAgY3JlYXRlX3hsb2dfb3Jfc3ltbGluayh2b2lkKQogCQljYW5vbmljYWxpemVf cGF0aCh4bG9nX2Rpcik7CiAJCWlmICghaXNfYWJzb2x1dGVfcGF0aCh4bG9nX2RpcikpCiAJ CXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogV0FMIGRpcmVjdG9yeSBsb2NhdGlvbiBt dXN0IGJlIGFuIGFic29sdXRlIHBhdGhcbiIpLCBwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJy b3IoIldBTCBkaXJlY3RvcnkgbG9jYXRpb24gbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoIik7 CiAJCQlleGl0KDEpOwogCQl9CiAKQEAgLTI4NjAsOCArMjgxNCw4IEBAIGNyZWF0ZV94bG9n X29yX3N5bWxpbmsodm9pZCkKIAogCQkJCWlmIChwZ19ta2Rpcl9wKHhsb2dfZGlyLCBwZ19k aXJfY3JlYXRlX21vZGUpICE9IDApCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IGNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCQkJ CXByb2duYW1lLCB4bG9nX2Rpciwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkJ IHhsb2dfZGlyKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJZWxzZQpAQCAtMjg3OCw4 ICsyODMyLDggQEAgY3JlYXRlX3hsb2dfb3Jfc3ltbGluayh2b2lkKQogCiAJCQkJaWYgKGNo bW9kKHhsb2dfZGlyLCBwZ19kaXJfY3JlYXRlX21vZGUpICE9IDApCiAJCQkJewotCQkJCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjaGFuZ2UgcGVybWlzc2lvbnMgb2Yg ZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCQkJCXByb2duYW1lLCB4bG9nX2Rpciwg c3RyZXJyb3IoZXJybm8pKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2hhbmdl IHBlcm1pc3Npb25zIG9mIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkJIHhsb2df ZGlyKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJZWxzZQpAQCAtMjg5Miw5ICsyODQ2 LDcgQEAgY3JlYXRlX3hsb2dfb3Jfc3ltbGluayh2b2lkKQogCQkJY2FzZSAzOgogCQkJY2Fz ZSA0OgogCQkJCS8qIFByZXNlbnQgYW5kIG5vdCBlbXB0eSAqLwotCQkJCWZwcmludGYoc3Rk ZXJyLAotCQkJCQkJXygiJXM6IGRpcmVjdG9yeSBcIiVzXCIgZXhpc3RzIGJ1dCBpcyBub3Qg ZW1wdHlcbiIpLAotCQkJCQkJcHJvZ25hbWUsIHhsb2dfZGlyKTsKKwkJCQlwZ19sb2dfZXJy b3IoImRpcmVjdG9yeSBcIiVzXCIgZXhpc3RzIGJ1dCBpcyBub3QgZW1wdHkiLCB4bG9nX2Rp cik7CiAJCQkJaWYgKHJldCAhPSA0KQogCQkJCQl3YXJuX29uX21vdW50X3BvaW50KHJldCk7 CiAJCQkJZWxzZQpAQCAtMjkwNiwyMCArMjg1OCwxOSBAQCBjcmVhdGVfeGxvZ19vcl9zeW1s aW5rKHZvaWQpCiAKIAkJCWRlZmF1bHQ6CiAJCQkJLyogVHJvdWJsZSBhY2Nlc3NpbmcgZGly ZWN0b3J5ICovCi0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgYWNjZXNz IGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCB4bG9nX2Rpciwg c3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBhY2Nlc3Mg ZGlyZWN0b3J5IFwiJXNcIjogJW0iLCB4bG9nX2Rpcik7CiAJCQkJZXhpdCgxKTsKIAkJfQog CiAjaWZkZWYgSEFWRV9TWU1MSU5LCiAJCWlmIChzeW1saW5rKHhsb2dfZGlyLCBzdWJkaXJs b2MpICE9IDApCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGNy ZWF0ZSBzeW1ib2xpYyBsaW5rIFwiJXNcIjogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwgc3Vi ZGlybG9jLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qg Y3JlYXRlIHN5bWJvbGljIGxpbmsgXCIlc1wiOiAlbSIsCisJCQkJCQkgc3ViZGlybG9jKTsK IAkJCWV4aXQoMSk7CiAJCX0KICNlbHNlCi0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogc3lt bGlua3MgYXJlIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybVxuIiksIHByb2duYW1l KTsKKwkJcGdfbG9nX2Vycm9yKCJzeW1saW5rcyBhcmUgbm90IHN1cHBvcnRlZCBvbiB0aGlz IHBsYXRmb3JtIik7CiAJCWV4aXQoMSk7CiAjZW5kaWYKIAl9CkBAIC0yOTI4LDggKzI4Nzks OCBAQCBjcmVhdGVfeGxvZ19vcl9zeW1saW5rKHZvaWQpCiAJCS8qIFdpdGhvdXQgLVggb3B0 aW9uLCBqdXN0IG1ha2UgdGhlIHN1YmRpcmVjdG9yeSBub3JtYWxseSAqLwogCQlpZiAobWtk aXIoc3ViZGlybG9jLCBwZ19kaXJfY3JlYXRlX21vZGUpIDwgMCkKIAkJewotCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVz XG4iKSwKLQkJCQkJcHJvZ25hbWUsIHN1YmRpcmxvYywgc3RyZXJyb3IoZXJybm8pKTsKKwkJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIs CisJCQkJCQkgc3ViZGlybG9jKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAl9CkBAIC0yOTkwLDgg KzI5NDEsNyBAQCBpbml0aWFsaXplX2RhdGFfZGlyZWN0b3J5KHZvaWQpCiAJCSAqLwogCQlp ZiAobWtkaXIocGF0aCwgcGdfZGlyX2NyZWF0ZV9tb2RlKSA8IDApCiAJCXsKLQkJCWZwcmlu dGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAl c1xuIiksCi0JCQkJCXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdf bG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgcGF0 aCk7CiAJCQlleGl0KDEpOwogCQl9CiAKQEAgLTMxMTUsMTQgKzMwNjUsMTQgQEAgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCWNoYXIJCXBnX2N0bF9wYXRoW01BWFBHUEFUSF07 CiAKIAkvKgotCSAqIEVuc3VyZSB0aGF0IGJ1ZmZlcmluZyBiZWhhdmlvciBvZiBzdGRvdXQg YW5kIHN0ZGVyciBtYXRjaGVzIHdoYXQgaXQgaXMKKwkgKiBFbnN1cmUgdGhhdCBidWZmZXJp bmcgYmVoYXZpb3Igb2Ygc3Rkb3V0IG1hdGNoZXMgd2hhdCBpdCBpcwogCSAqIGluIGludGVy YWN0aXZlIHVzYWdlIChhdCBsZWFzdCBvbiBtb3N0IHBsYXRmb3JtcykuICBUaGlzIHByZXZl bnRzCiAJICogdW5leHBlY3RlZCBvdXRwdXQgb3JkZXJpbmcgd2hlbiwgZWcsIG91dHB1dCBp cyByZWRpcmVjdGVkIHRvIGEgZmlsZS4KIAkgKiBQT1NJWCBzYXlzIHdlIG11c3QgZG8gdGhp cyBiZWZvcmUgYW55IG90aGVyIHVzYWdlIG9mIHRoZXNlIGZpbGVzLgogCSAqLwogCXNldHZi dWYoc3Rkb3V0LCBOVUxMLCBQR19JT0xCRiwgMCk7Ci0Jc2V0dmJ1ZihzdGRlcnIsIE5VTEws IF9JT05CRiwgMCk7CiAKKwlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7CiAJcHJvZ25hbWUg PSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAJc2V0X3BnbG9jYWxlX3Bnc2VydmljZShhcmd2 WzBdLCBQR19URVhURE9NQUlOKCJpbml0ZGIiKSk7CiAKQEAgLTMyNjAsOCArMzIxMCw4IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWlmIChvcHRpbmQgPCBhcmdjKQog CXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0b28gbWFueSBjb21tYW5kLWxpbmUgYXJn dW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJCQlwcm9nbmFtZSwgYXJndltvcHRp bmRdKTsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRz IChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJIGFyZ3Zbb3B0aW5kXSk7CiAJCWZwcmludGYo c3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIp LAogCQkJCXByb2duYW1lKTsKIAkJZXhpdCgxKTsKQEAgLTMyNzcsMjEgKzMyMjcsMjAgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkvKiBtdXN0IGNoZWNrIHRoYXQgZGly ZWN0b3J5IGlzIHJlYWRhYmxlICovCiAJCWlmIChwZ19jaGVja19kaXIocGdfZGF0YSkgPD0g MCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgYWNjZXNzIGRp cmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHBnX2RhdGEsIHN0cmVy cm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBhY2Nlc3MgZGlyZWN0 b3J5IFwiJXNcIjogJW0iLCBwZ19kYXRhKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAogCQlmcHV0 cyhfKCJzeW5jaW5nIGRhdGEgdG8gZGlzayAuLi4gIiksIHN0ZG91dCk7CiAJCWZmbHVzaChz dGRvdXQpOwotCQlmc3luY19wZ2RhdGEocGdfZGF0YSwgcHJvZ25hbWUsIFBHX1ZFUlNJT05f TlVNKTsKKwkJZnN5bmNfcGdkYXRhKHBnX2RhdGEsIFBHX1ZFUlNJT05fTlVNKTsKIAkJY2hl Y2tfb2soKTsKIAkJcmV0dXJuIDA7CiAJfQogCiAJaWYgKHB3cHJvbXB0ICYmIHB3ZmlsZW5h bWUpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHBhc3N3b3JkIHByb21wdCBhbmQg cGFzc3dvcmQgZmlsZSBjYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyXG4iKSwgcHJvZ25h bWUpOworCQlwZ19sb2dfZXJyb3IoInBhc3N3b3JkIHByb21wdCBhbmQgcGFzc3dvcmQgZmls ZSBjYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIik7CiAJCWV4aXQoMSk7CiAJfQogCkBA IC0zMzE2LDIxICszMjY1LDE3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJ LyogdmVyaWZ5IHRoYXQgd2FsIHNlZ21lbnQgc2l6ZSBpcyB2YWxpZCAqLwogCQlpZiAoZW5k cHRyID09IHN0cl93YWxfc2VnbWVudF9zaXplX21iIHx8ICplbmRwdHIgIT0gJ1wwJykKIAkJ ewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBhcmd1bWVudCBvZiAtLXdhbC1z ZWdzaXplIG11c3QgYmUgYSBudW1iZXJcbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlwZ19s b2dfZXJyb3IoImFyZ3VtZW50IG9mIC0td2FsLXNlZ3NpemUgbXVzdCBiZSBhIG51bWJlciIp OwogCQkJZXhpdCgxKTsKIAkJfQogCQlpZiAoIUlzVmFsaWRXYWxTZWdTaXplKHdhbF9zZWdt ZW50X3NpemVfbWIgKiAxMDI0ICogMTAyNCkpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAot CQkJCQlfKCIlczogYXJndW1lbnQgb2YgLS13YWwtc2Vnc2l6ZSBtdXN0IGJlIGEgcG93ZXIg b2YgMiBiZXR3ZWVuIDEgYW5kIDEwMjRcbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlwZ19s b2dfZXJyb3IoImFyZ3VtZW50IG9mIC0td2FsLXNlZ3NpemUgbXVzdCBiZSBhIHBvd2VyIG9m IDIgYmV0d2VlbiAxIGFuZCAxMDI0Iik7CiAJCQlleGl0KDEpOwogCQl9CiAJfQogCi0JZ2V0 X3Jlc3RyaWN0ZWRfdG9rZW4ocHJvZ25hbWUpOworCWdldF9yZXN0cmljdGVkX3Rva2VuKCk7 CiAKIAlzZXR1cF9wZ2RhdGEoKTsKIApAQCAtMzM0Miw3ICszMjg3LDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCiAJaWYgKHN0cm5jbXAodXNlcm5hbWUsICJwZ18iLCAz KSA9PSAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBzdXBlcnVzZXIgbmFtZSBc IiVzXCIgaXMgZGlzYWxsb3dlZDsgcm9sZSBuYW1lcyBjYW5ub3QgYmVnaW4gd2l0aCBcInBn X1wiXG4iKSwgcHJvZ25hbWUsIHVzZXJuYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJzdXBlcnVz ZXIgbmFtZSBcIiVzXCIgaXMgZGlzYWxsb3dlZDsgcm9sZSBuYW1lcyBjYW5ub3QgYmVnaW4g d2l0aCBcInBnX1wiIiwgdXNlcm5hbWUpOwogCQlleGl0KDEpOwogCX0KIApAQCAtMzM3Nywx NCArMzMyMiwxOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJewogCQlmcHV0 cyhfKCJzeW5jaW5nIGRhdGEgdG8gZGlzayAuLi4gIiksIHN0ZG91dCk7CiAJCWZmbHVzaChz dGRvdXQpOwotCQlmc3luY19wZ2RhdGEocGdfZGF0YSwgcHJvZ25hbWUsIFBHX1ZFUlNJT05f TlVNKTsKKwkJZnN5bmNfcGdkYXRhKHBnX2RhdGEsIFBHX1ZFUlNJT05fTlVNKTsKIAkJY2hl Y2tfb2soKTsKIAl9CiAJZWxzZQogCQlwcmludGYoXygiXG5TeW5jIHRvIGRpc2sgc2tpcHBl ZC5cblRoZSBkYXRhIGRpcmVjdG9yeSBtaWdodCBiZWNvbWUgY29ycnVwdCBpZiB0aGUgb3Bl cmF0aW5nIHN5c3RlbSBjcmFzaGVzLlxuIikpOwogCi0JaWYgKGF1dGh3YXJuaW5nICE9IE5V TEwpCi0JCWZwcmludGYoc3RkZXJyLCAiJXMiLCBhdXRod2FybmluZyk7CisJaWYgKGF1dGh3 YXJuaW5nKQorCXsKKwkJcGdfbG9nX3dhcm5pbmcoImVuYWJsaW5nIFwidHJ1c3RcIiBhdXRo ZW50aWNhdGlvbiBmb3IgbG9jYWwgY29ubmVjdGlvbnMiKTsKKwkJZnByaW50ZihzdGRlcnIs IF8oIllvdSBjYW4gY2hhbmdlIHRoaXMgYnkgZWRpdGluZyBwZ19oYmEuY29uZiBvciB1c2lu ZyB0aGUgb3B0aW9uIC1BLCBvclxuIgorCQkJCQkJICAiLS1hdXRoLWxvY2FsIGFuZCAtLWF1 dGgtaG9zdCwgdGhlIG5leHQgdGltZSB5b3UgcnVuIGluaXRkYi5cbiIpKTsKKwl9CiAKIAkv KgogCSAqIEJ1aWxkIHVwIGEgc2hlbGwgY29tbWFuZCB0byB0ZWxsIHRoZSB1c2VyIGhvdyB0 byBzdGFydCB0aGUgc2VydmVyCmRpZmYgLS1naXQgYS9zcmMvYmluL2luaXRkYi9ubHMubWsg Yi9zcmMvYmluL2luaXRkYi9ubHMubWsKaW5kZXggYjBjZTYyOTgwYS4uODAzMzg4ZDRjNyAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9pbml0ZGIvbmxzLm1rCisrKyBiL3NyYy9iaW4vaW5pdGRi L25scy5tawpAQCAtMSw1ICsxLDYgQEAKICMgc3JjL2Jpbi9pbml0ZGIvbmxzLm1rCiBDQVRB TE9HX05BTUUgICAgID0gaW5pdGRiCiBBVkFJTF9MQU5HVUFHRVMgID0gY3MgZGUgZXMgZnIg aGUgaXQgamEga28gcGwgcHRfQlIgcnUgc3YgdHIgdmkgemhfQ04KLUdFVFRFWFRfRklMRVMg ICAgPSBmaW5kdGltZXpvbmUuYyBpbml0ZGIuYyAuLi8uLi9jb21tb24vZXhlYy5jIC4uLy4u L2NvbW1vbi9mZV9tZW11dGlscy5jIC4uLy4uL2NvbW1vbi9maWxlX3V0aWxzLmMgLi4vLi4v Y29tbW9uL3BnZm5hbWVzLmMgLi4vLi4vY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uYyAuLi8u Li9jb21tb24vcm10cmVlLmMgLi4vLi4vY29tbW9uL3VzZXJuYW1lLmMgLi4vLi4vY29tbW9u L3dhaXRfZXJyb3IuYyAuLi8uLi9wb3J0L2Rpcm1vZC5jCi1HRVRURVhUX1RSSUdHRVJTID0g c2ltcGxlX3Byb21wdAorR0VUVEVYVF9GSUxFUyAgICA9ICQoRlJPTlRFTkRfQ09NTU9OX0dF VFRFWFRfRklMRVMpIGZpbmR0aW1lem9uZS5jIGluaXRkYi5jIC4uLy4uL2NvbW1vbi9leGVj LmMgLi4vLi4vY29tbW9uL2ZlX21lbXV0aWxzLmMgLi4vLi4vY29tbW9uL2ZpbGVfdXRpbHMu YyAuLi8uLi9jb21tb24vcGdmbmFtZXMuYyAuLi8uLi9jb21tb24vcmVzdHJpY3RlZF90b2tl bi5jIC4uLy4uL2NvbW1vbi9ybXRyZWUuYyAuLi8uLi9jb21tb24vdXNlcm5hbWUuYyAuLi8u Li9jb21tb24vd2FpdF9lcnJvci5jIC4uLy4uL3BvcnQvZGlybW9kLmMKK0dFVFRFWFRfVFJJ R0dFUlMgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX1RSSUdHRVJTKSBzaW1wbGVfcHJv bXB0CitHRVRURVhUX0ZMQUdTICAgID0gJChGUk9OVEVORF9DT01NT05fR0VUVEVYVF9GTEFH UykKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvTWFrZWZpbGUgYi9z cmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL01ha2VmaWxlCmluZGV4IGM1YmY5OWRiMGYuLjE0 ZTgzNDY3N2IgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvTWFrZWZp bGUKKysrIGIvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9NYWtlZmlsZQpAQCAtNywxMSAr NywxMyBAQCBzdWJkaXIgPSBzcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwCiB0b3BfYnVpbGRk aXIgPSAuLi8uLi8uLgogaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmds b2JhbAogCitMREZMQUdTX0lOVEVSTkFMICs9IC1MJCh0b3BfYnVpbGRkaXIpL3NyYy9mZV91 dGlscyAtbHBnZmV1dGlscworCiBPQkpTCT0gcGdfYXJjaGl2ZWNsZWFudXAubyAkKFdJTjMy UkVTKQogCiBhbGw6IHBnX2FyY2hpdmVjbGVhbnVwCiAKLXBnX2FyY2hpdmVjbGVhbnVwOiAk KE9CSlMpIHwgc3VibWFrZS1saWJwZ3BvcnQKK3BnX2FyY2hpdmVjbGVhbnVwOiAkKE9CSlMp IHwgc3VibWFrZS1saWJwZ3BvcnQgc3VibWFrZS1saWJwZ2ZldXRpbHMKIAkkKENDKSAkKENG TEFHUykgJF4gJChMREZMQUdTKSAkKExERkxBR1NfRVgpICQoTElCUykgLW8gJEAkKFgpCiAK IGluc3RhbGw6IGFsbCBpbnN0YWxsZGlycwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19hcmNo aXZlY2xlYW51cC9ubHMubWsgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL25scy5tawpp bmRleCAyY2Q4MWQzMmE3Li5jMmQ2MjVjNTJmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Fy Y2hpdmVjbGVhbnVwL25scy5taworKysgYi9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVwL25s cy5tawpAQCAtMSw0ICsxLDYgQEAKICMgc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9ubHMu bWsKIENBVEFMT0dfTkFNRSAgICAgPSBwZ19hcmNoaXZlY2xlYW51cAogQVZBSUxfTEFOR1VB R0VTICA9ZGUgZXMgZnIgamEga28gcGwgcnUgc3YgdHIgdmkKLUdFVFRFWFRfRklMRVMgICAg PSBwZ19hcmNoaXZlY2xlYW51cC5jCitHRVRURVhUX0ZJTEVTICAgID0gJChGUk9OVEVORF9D T01NT05fR0VUVEVYVF9GSUxFUykgcGdfYXJjaGl2ZWNsZWFudXAuYworR0VUVEVYVF9UUklH R0VSUyA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfVFJJR0dFUlMpCitHRVRURVhUX0ZM QUdTICAgID0gJChGUk9OVEVORF9DT01NT05fR0VUVEVYVF9GTEFHUykKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfYXJjaGl2ZWNsZWFudXAvcGdfYXJjaGl2ZWNsZWFudXAuYyBiL3NyYy9i aW4vcGdfYXJjaGl2ZWNsZWFudXAvcGdfYXJjaGl2ZWNsZWFudXAuYwppbmRleCA0YzNhMmRl MDQ1Li5iMjk3ZjIxMGRmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2FyY2hpdmVjbGVhbnVw L3BnX2FyY2hpdmVjbGVhbnVwLmMKKysrIGIvc3JjL2Jpbi9wZ19hcmNoaXZlY2xlYW51cC9w Z19hcmNoaXZlY2xlYW51cC5jCkBAIC0xNywxOCArMTcsMTggQEAKIAogI2luY2x1ZGUgInBn X2dldG9wdC5oIgogCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgorCiAjaW5jbHVk ZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKIAogY29uc3QgY2hhciAqcHJvZ25hbWU7CiAK IC8qIE9wdGlvbnMgYW5kIGRlZmF1bHRzICovCi1ib29sCQlkZWJ1ZyA9IGZhbHNlOwkJLyog YXJlIHdlIGRlYnVnZ2luZz8gKi8KIGJvb2wJCWRyeXJ1biA9IGZhbHNlOwkJLyogYXJlIHdl IHBlcmZvcm1pbmcgYSBkcnktcnVuIG9wZXJhdGlvbj8gKi8KIGNoYXIJICAgKmFkZGl0aW9u YWxfZXh0ID0gTlVMTDsJLyogRXh0ZW5zaW9uIHRvIHJlbW92ZSBmcm9tIGZpbGVuYW1lcyAq LwogCiBjaGFyCSAgICphcmNoaXZlTG9jYXRpb247CS8qIHdoZXJlIHRvIGZpbmQgdGhlIGFy Y2hpdmU/ICovCiBjaGFyCSAgICpyZXN0YXJ0V0FMRmlsZU5hbWU7IC8qIHRoZSBmaWxlIGZy b20gd2hpY2ggd2UgY2FuIHJlc3RhcnQgcmVzdG9yZSAqLwotY2hhcgkJV0FMRmlsZVBhdGhb TUFYUEdQQVRIICogMl07IC8qIHRoZSBmaWxlIHBhdGggaW5jbHVkaW5nIGFyY2hpdmUgKi8K IGNoYXIJCWV4Y2x1c2l2ZUNsZWFudXBGaWxlTmFtZVtNQVhGTkFNRUxFTl07CS8qIHRoZSBv bGRlc3QgZmlsZSB3ZSB3YW50CiAJCQkJCQkJCQkJCQkJICogdG8gcmVtYWluIGluIGFyY2hp dmUgKi8KIApAQCAtNjUsOCArNjUsOCBAQCBJbml0aWFsaXplKHZvaWQpCiAJaWYgKHN0YXQo YXJjaGl2ZUxvY2F0aW9uLCAmc3RhdF9idWYpICE9IDAgfHwKIAkJIVNfSVNESVIoc3RhdF9i dWYuc3RfbW9kZSkpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGFyY2hpdmUgbG9j YXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0XG4iKSwKLQkJCQlwcm9nbmFtZSwgYXJjaGl2 ZUxvY2F0aW9uKTsKKwkJcGdfbG9nX2Vycm9yKCJhcmNoaXZlIGxvY2F0aW9uIFwiJXNcIiBk b2VzIG5vdCBleGlzdCIsCisJCQkJCSBhcmNoaXZlTG9jYXRpb24pOwogCQlleGl0KDIpOwog CX0KIH0KQEAgLTEyMyw2ICsxMjMsOCBAQCBDbGVhbnVwUHJpb3JXQUxGaWxlcyh2b2lkKQog CQkJaWYgKChJc1hMb2dGaWxlTmFtZSh3YWxmaWxlKSB8fCBJc1BhcnRpYWxYTG9nRmlsZU5h bWUod2FsZmlsZSkpICYmCiAJCQkJc3RyY21wKHdhbGZpbGUgKyA4LCBleGNsdXNpdmVDbGVh bnVwRmlsZU5hbWUgKyA4KSA8IDApCiAJCQl7CisJCQkJY2hhcgkJV0FMRmlsZVBhdGhbTUFY UEdQQVRIICogMl07IC8qIHRoZSBmaWxlIHBhdGggaW5jbHVkaW5nIGFyY2hpdmUgKi8KKwog CQkJCS8qCiAJCQkJICogVXNlIHRoZSBvcmlnaW5hbCBmaWxlIG5hbWUgYWdhaW4gbm93LCBp bmNsdWRpbmcgYW55CiAJCQkJICogZXh0ZW5zaW9uIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIGNo b3BwZWQgb2ZmIGJlZm9yZSB0ZXN0aW5nCkBAIC0xMzksMzcgKzE0MSwzMiBAQCBDbGVhbnVw UHJpb3JXQUxGaWxlcyh2b2lkKQogCQkJCQkgKiB1c2VyIGNhbiBwaXBlIHRoZSBvdXRwdXQg aW50byBzb21lIG90aGVyIHByb2dyYW0uCiAJCQkJCSAqLwogCQkJCQlwcmludGYoIiVzXG4i LCBXQUxGaWxlUGF0aCk7Ci0JCQkJCWlmIChkZWJ1ZykKLQkJCQkJCWZwcmludGYoc3RkZXJy LAotCQkJCQkJCQlfKCIlczogZmlsZSBcIiVzXCIgd291bGQgYmUgcmVtb3ZlZFxuIiksCi0J CQkJCQkJCXByb2duYW1lLCBXQUxGaWxlUGF0aCk7CisJCQkJCXBnX2xvZ19kZWJ1ZygiZmls ZSBcIiVzXCIgd291bGQgYmUgcmVtb3ZlZCIsIFdBTEZpbGVQYXRoKTsKIAkJCQkJY29udGlu dWU7CiAJCQkJfQogCi0JCQkJaWYgKGRlYnVnKQotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IHJlbW92aW5nIGZpbGUgXCIlc1wiXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwgV0FMRmls ZVBhdGgpOworCQkJCXBnX2xvZ19kZWJ1ZygicmVtb3ZpbmcgZmlsZSBcIiVzXCIiLCBXQUxG aWxlUGF0aCk7CiAKIAkJCQlyYyA9IHVubGluayhXQUxGaWxlUGF0aCk7CiAJCQkJaWYgKHJj ICE9IDApCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IEVSUk9SOiBjb3Vs ZCBub3QgcmVtb3ZlIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCQkJcHJvZ25hbWUsIFdB TEZpbGVQYXRoLCBzdHJlcnJvcihlcnJubykpOworCQkJCQlwZ19sb2dfZXJyb3IoImNvdWxk IG5vdCByZW1vdmUgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkJIFdBTEZpbGVQYXRoKTsK IAkJCQkJYnJlYWs7CiAJCQkJfQogCQkJfQogCQl9CiAKIAkJaWYgKGVycm5vKQotCQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcmVhZCBhcmNoaXZlIGxvY2F0aW9uIFwi JXNcIjogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwgYXJjaGl2ZUxvY2F0aW9uLCBzdHJlcnJv cihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBhcmNoaXZlIGxv Y2F0aW9uIFwiJXNcIjogJW0iLAorCQkJCQkJIGFyY2hpdmVMb2NhdGlvbik7CiAJCWlmIChj bG9zZWRpcih4bGRpcikpCi0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBj bG9zZSBhcmNoaXZlIGxvY2F0aW9uIFwiJXNcIjogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwg YXJjaGl2ZUxvY2F0aW9uLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJj b3VsZCBub3QgY2xvc2UgYXJjaGl2ZSBsb2NhdGlvbiBcIiVzXCI6ICVtIiwKKwkJCQkJCSBh cmNoaXZlTG9jYXRpb24pOwogCX0KIAllbHNlCi0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y291bGQgbm90IG9wZW4gYXJjaGl2ZSBsb2NhdGlvbiBcIiVzXCI6ICVzXG4iKSwKLQkJCQlw cm9nbmFtZSwgYXJjaGl2ZUxvY2F0aW9uLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCBvcGVuIGFyY2hpdmUgbG9jYXRpb24gXCIlc1wiOiAlbSIsCisJ CQkJCSBhcmNoaXZlTG9jYXRpb24pOwogfQogCiAvKgpAQCAtMjQxLDcgKzIzOCw3IEBAIFNl dFdBTEZpbGVOYW1lRm9yQ2xlYW51cCh2b2lkKQogCiAJaWYgKCFmbmFtZU9LKQogCXsKLQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIGZpbGUgbmFtZSBhcmd1bWVudFxuIiks IHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGZpbGUgbmFtZSBhcmd1bWVu dCIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUg aW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQlleGl0KDIpOwogCX0KQEAgLTI4Miw2 ICsyNzksNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKIAlpbnQJCQljOwog CisJcGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2Uo YXJndlswXSwgUEdfVEVYVERPTUFJTigicGdfYXJjaGl2ZWNsZWFudXAiKSk7CiAJcHJvZ25h bWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAKQEAgLTMwNCw3ICszMDIsNyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJc3dpdGNoIChjKQogCQl7CiAJCQljYXNlICdk JzoJCQkvKiBEZWJ1ZyBtb2RlICovCi0JCQkJZGVidWcgPSB0cnVlOworCQkJCXBnX2xvZ2dp bmdfc2V0X2xldmVsKFBHX0xPR19ERUJVRyk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICduJzoJ CQkvKiBEcnktUnVuIG1vZGUgKi8KIAkJCQlkcnlydW4gPSB0cnVlOwpAQCAtMzM0LDcgKzMz Miw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCX0KIAllbHNlCiAJewotCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IG11c3Qgc3BlY2lmeSBhcmNoaXZlIGxvY2F0aW9uXG4i KSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm11c3Qgc3BlY2lmeSBhcmNoaXZlIGxv Y2F0aW9uIik7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3Ig bW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCWV4aXQoMik7CiAJfQpAQCAt MzQ2LDE0ICszNDQsMTQgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJfQogCWVs c2UKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogbXVzdCBzcGVjaWZ5IG9sZGVzdCBr ZXB0IFdBTCBmaWxlXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm11c3Qgc3Bl Y2lmeSBvbGRlc3Qga2VwdCBXQUwgZmlsZSIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5 IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwog CQlleGl0KDIpOwogCX0KIAogCWlmIChvcHRpbmQgPCBhcmdjKQogCXsKLQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiB0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzXG4iKSwgcHJv Z25hbWUpOworCQlwZ19sb2dfZXJyb3IoInRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVu dHMiKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3Jl IGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJZXhpdCgyKTsKIAl9CkBAIC0zNjgs MTMgKzM2Niw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCSAqLwogCVNldFdB TEZpbGVOYW1lRm9yQ2xlYW51cCgpOwogCi0JaWYgKGRlYnVnKQotCXsKLQkJc25wcmludGYo V0FMRmlsZVBhdGgsIE1BWFBHUEFUSCwgIiVzLyVzIiwKKwlwZ19sb2dfZGVidWcoImtlZXBp bmcgV0FMIGZpbGUgXCIlcy8lc1wiIGFuZCBsYXRlciIsCiAJCQkJIGFyY2hpdmVMb2NhdGlv biwgZXhjbHVzaXZlQ2xlYW51cEZpbGVOYW1lKTsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBrZWVwaW5nIFdBTCBmaWxlIFwiJXNcIiBhbmQgbGF0ZXJcbiIpLAotCQkJCXByb2duYW1l LCBXQUxGaWxlUGF0aCk7Ci0JfQogCiAJLyoKIAkgKiBSZW1vdmUgV0FMIGZpbGVzIG9sZGVy IHRoYW4gY3V0LW9mZgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL25scy5t ayBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9ubHMubWsKaW5kZXggZjc2OTQzNDNmYy4uZmVj ZTU1NTFiZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL25scy5taworKysg Yi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvbmxzLm1rCkBAIC0xLDUgKzEsNiBAQAogIyBzcmMv YmluL3BnX2Jhc2ViYWNrdXAvbmxzLm1rCiBDQVRBTE9HX05BTUUgICAgID0gcGdfYmFzZWJh Y2t1cAogQVZBSUxfTEFOR1VBR0VTICA9IGRlIGVzIGZyIGhlIGl0IGphIGtvIHBsIHB0X0JS IHJ1IHN2IHRyIHZpIHpoX0NOCi1HRVRURVhUX0ZJTEVTICAgID0gcGdfYmFzZWJhY2t1cC5j IHBnX3JlY2VpdmV3YWwuYyBwZ19yZWN2bG9naWNhbC5jIHJlY2VpdmVsb2cuYyBzdHJlYW11 dGlsLmMgd2FsbWV0aG9kcy5jIC4uLy4uL2NvbW1vbi9mZV9tZW11dGlscy5jIC4uLy4uL2Nv bW1vbi9maWxlX3V0aWxzLmMKLUdFVFRFWFRfVFJJR0dFUlMgPSBzaW1wbGVfcHJvbXB0IHRh cl9zZXRfZXJyb3IKK0dFVFRFWFRfRklMRVMgICAgPSAkKEZST05URU5EX0NPTU1PTl9HRVRU RVhUX0ZJTEVTKSBwZ19iYXNlYmFja3VwLmMgcGdfcmVjZWl2ZXdhbC5jIHBnX3JlY3Zsb2dp Y2FsLmMgcmVjZWl2ZWxvZy5jIHN0cmVhbXV0aWwuYyB3YWxtZXRob2RzLmMgLi4vLi4vY29t bW9uL2ZlX21lbXV0aWxzLmMgLi4vLi4vY29tbW9uL2ZpbGVfdXRpbHMuYworR0VUVEVYVF9U UklHR0VSUyA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfVFJJR0dFUlMpIHNpbXBsZV9w cm9tcHQgdGFyX3NldF9lcnJvcgorR0VUVEVYVF9GTEFHUyAgICA9ICQoRlJPTlRFTkRfQ09N TU9OX0dFVFRFWFRfRkxBR1MpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAv cGdfYmFzZWJhY2t1cC5jIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAu YwppbmRleCAzZDJkNGNkMGI5Li4wZTM2YmM4MzM1IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X2Jhc2ViYWNrdXAvcGdfYmFzZWJhY2t1cC5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1 cC9wZ19iYXNlYmFja3VwLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJjb21tb24v ZmlsZV9wZXJtLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfdXRpbHMuaCIKICNpbmNsdWRl ICJjb21tb24vc3RyaW5nLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2lu Y2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogI2luY2x1ZGUgImdldG9wdF9sb25n LmgiCiAjaW5jbHVkZSAibGlicHEtZmUuaCIKQEAgLTE2Miw1NyArMTYzLDQxIEBAIGNsZWFu dXBfZGlyZWN0b3JpZXNfYXRleGl0KHZvaWQpCiAJewogCQlpZiAobWFkZV9uZXdfcGdkYXRh KQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHJlbW92aW5nIGRhdGEgZGlyZWN0 b3J5IFwiJXNcIlxuIiksCi0JCQkJCXByb2duYW1lLCBiYXNlZGlyKTsKKwkJCXBnX2xvZ19p bmZvKCJyZW1vdmluZyBkYXRhIGRpcmVjdG9yeSBcIiVzXCIiLCBiYXNlZGlyKTsKIAkJCWlm ICghcm10cmVlKGJhc2VkaXIsIHRydWUpKQotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczog ZmFpbGVkIHRvIHJlbW92ZSBkYXRhIGRpcmVjdG9yeVxuIiksCi0JCQkJCQlwcm9nbmFtZSk7 CisJCQkJcGdfbG9nX2Vycm9yKCJmYWlsZWQgdG8gcmVtb3ZlIGRhdGEgZGlyZWN0b3J5Iik7 CiAJCX0KIAkJZWxzZSBpZiAoZm91bmRfZXhpc3RpbmdfcGdkYXRhKQogCQl7Ci0JCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IHJlbW92aW5nIGNvbnRlbnRzIG9mIGRhdGEgZGly ZWN0b3J5IFwiJXNcIlxuIiksCi0JCQkJCXByb2duYW1lLCBiYXNlZGlyKTsKKwkJCXBnX2xv Z19pbmZvKCJyZW1vdmluZyBjb250ZW50cyBvZiBkYXRhIGRpcmVjdG9yeSBcIiVzXCIiLCBi YXNlZGlyKTsKIAkJCWlmICghcm10cmVlKGJhc2VkaXIsIGZhbHNlKSkKLQkJCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IGZhaWxlZCB0byByZW1vdmUgY29udGVudHMgb2YgZGF0YSBkaXJl Y3RvcnlcbiIpLAotCQkJCQkJcHJvZ25hbWUpOworCQkJCXBnX2xvZ19lcnJvcigiZmFpbGVk IHRvIHJlbW92ZSBjb250ZW50cyBvZiBkYXRhIGRpcmVjdG9yeSIpOwogCQl9CiAKIAkJaWYg KG1hZGVfbmV3X3hsb2dkaXIpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogcmVt b3ZpbmcgV0FMIGRpcmVjdG9yeSBcIiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgeGxvZ19k aXIpOworCQkJcGdfbG9nX2luZm8oInJlbW92aW5nIFdBTCBkaXJlY3RvcnkgXCIlc1wiIiwg eGxvZ19kaXIpOwogCQkJaWYgKCFybXRyZWUoeGxvZ19kaXIsIHRydWUpKQotCQkJCWZwcmlu dGYoc3RkZXJyLCBfKCIlczogZmFpbGVkIHRvIHJlbW92ZSBXQUwgZGlyZWN0b3J5XG4iKSwK LQkJCQkJCXByb2duYW1lKTsKKwkJCQlwZ19sb2dfZXJyb3IoImZhaWxlZCB0byByZW1vdmUg V0FMIGRpcmVjdG9yeSIpOwogCQl9CiAJCWVsc2UgaWYgKGZvdW5kX2V4aXN0aW5nX3hsb2dk aXIpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogcmVtb3ZpbmcgY29u dGVudHMgb2YgV0FMIGRpcmVjdG9yeSBcIiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgeGxv Z19kaXIpOworCQkJcGdfbG9nX2luZm8oInJlbW92aW5nIGNvbnRlbnRzIG9mIFdBTCBkaXJl Y3RvcnkgXCIlc1wiIiwgeGxvZ19kaXIpOwogCQkJaWYgKCFybXRyZWUoeGxvZ19kaXIsIGZh bHNlKSkKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGZhaWxlZCB0byByZW1vdmUgY29u dGVudHMgb2YgV0FMIGRpcmVjdG9yeVxuIiksCi0JCQkJCQlwcm9nbmFtZSk7CisJCQkJcGdf bG9nX2Vycm9yKCJmYWlsZWQgdG8gcmVtb3ZlIGNvbnRlbnRzIG9mIFdBTCBkaXJlY3Rvcnki KTsKIAkJfQogCX0KIAllbHNlCiAJewogCQlpZiAoKG1hZGVfbmV3X3BnZGF0YSB8fCBmb3Vu ZF9leGlzdGluZ19wZ2RhdGEpICYmICFjaGVja3N1bV9mYWlsdXJlKQotCQkJZnByaW50Zihz dGRlcnIsCi0JCQkJCV8oIiVzOiBkYXRhIGRpcmVjdG9yeSBcIiVzXCIgbm90IHJlbW92ZWQg YXQgdXNlcidzIHJlcXVlc3RcbiIpLAotCQkJCQlwcm9nbmFtZSwgYmFzZWRpcik7CisJCQlw Z19sb2dfaW5mbygiZGF0YSBkaXJlY3RvcnkgXCIlc1wiIG5vdCByZW1vdmVkIGF0IHVzZXIn cyByZXF1ZXN0IiwgYmFzZWRpcik7CiAKIAkJaWYgKG1hZGVfbmV3X3hsb2dkaXIgfHwgZm91 bmRfZXhpc3RpbmdfeGxvZ2RpcikKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczog V0FMIGRpcmVjdG9yeSBcIiVzXCIgbm90IHJlbW92ZWQgYXQgdXNlcidzIHJlcXVlc3RcbiIp LAotCQkJCQlwcm9nbmFtZSwgeGxvZ19kaXIpOworCQkJcGdfbG9nX2luZm8oIldBTCBkaXJl Y3RvcnkgXCIlc1wiIG5vdCByZW1vdmVkIGF0IHVzZXIncyByZXF1ZXN0IiwgeGxvZ19kaXIp OwogCX0KIAogCWlmICgobWFkZV90YWJsZXNwYWNlX2RpcnMgfHwgZm91bmRfdGFibGVzcGFj ZV9kaXJzKSAmJiAhY2hlY2tzdW1fZmFpbHVyZSkKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJ XygiJXM6IGNoYW5nZXMgdG8gdGFibGVzcGFjZSBkaXJlY3RvcmllcyB3aWxsIG5vdCBiZSB1 bmRvbmVcbiIpLAotCQkJCXByb2duYW1lKTsKKwkJcGdfbG9nX2luZm8oImNoYW5nZXMgdG8g dGFibGVzcGFjZSBkaXJlY3RvcmllcyB3aWxsIG5vdCBiZSB1bmRvbmUiKTsKIH0KIAogc3Rh dGljIHZvaWQKQEAgLTI1Myw3ICsyMzgsNyBAQCB0YWJsZXNwYWNlX2xpc3RfYXBwZW5kKGNv bnN0IGNoYXIgKmFyZykKIAl7CiAJCWlmIChkc3RfcHRyIC0gZHN0ID49IE1BWFBHUEFUSCkK IAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBkaXJlY3RvcnkgbmFtZSB0b28gbG9u Z1xuIiksIHByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiZGlyZWN0b3J5IG5hbWUgdG9v IGxvbmciKTsKIAkJCWV4aXQoMSk7CiAJCX0KIApAQCAtMjYzLDcgKzI0OCw3IEBAIHRhYmxl c3BhY2VfbGlzdF9hcHBlbmQoY29uc3QgY2hhciAqYXJnKQogCQl7CiAJCQlpZiAoKmNlbGwt Pm5ld19kaXIpCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBtdWx0aXBsZSBc Ij1cIiBzaWducyBpbiB0YWJsZXNwYWNlIG1hcHBpbmdcbiIpLCBwcm9nbmFtZSk7CisJCQkJ cGdfbG9nX2Vycm9yKCJtdWx0aXBsZSBcIj1cIiBzaWducyBpbiB0YWJsZXNwYWNlIG1hcHBp bmciKTsKIAkJCQlleGl0KDEpOwogCQkJfQogCQkJZWxzZQpAQCAtMjc1LDkgKzI2MCw3IEBA IHRhYmxlc3BhY2VfbGlzdF9hcHBlbmQoY29uc3QgY2hhciAqYXJnKQogCiAJaWYgKCEqY2Vs bC0+b2xkX2RpciB8fCAhKmNlbGwtPm5ld19kaXIpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwK LQkJCQlfKCIlczogaW52YWxpZCB0YWJsZXNwYWNlIG1hcHBpbmcgZm9ybWF0IFwiJXNcIiwg bXVzdCBiZSBcIk9MRERJUj1ORVdESVJcIlxuIiksCi0JCQkJcHJvZ25hbWUsIGFyZyk7CisJ CXBnX2xvZ19lcnJvcigiaW52YWxpZCB0YWJsZXNwYWNlIG1hcHBpbmcgZm9ybWF0IFwiJXNc IiwgbXVzdCBiZSBcIk9MRERJUj1ORVdESVJcIiIsIGFyZyk7CiAJCWV4aXQoMSk7CiAJfQog CkBAIC0yODksMTUgKzI3MiwxNSBAQCB0YWJsZXNwYWNlX2xpc3RfYXBwZW5kKGNvbnN0IGNo YXIgKmFyZykKIAkgKi8KIAlpZiAoIWlzX2Fic29sdXRlX3BhdGgoY2VsbC0+b2xkX2Rpcikp CiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG9sZCBkaXJlY3RvcnkgaXMgbm90IGFu IGFic29sdXRlIHBhdGggaW4gdGFibGVzcGFjZSBtYXBwaW5nOiAlc1xuIiksCi0JCQkJcHJv Z25hbWUsIGNlbGwtPm9sZF9kaXIpOworCQlwZ19sb2dfZXJyb3IoIm9sZCBkaXJlY3Rvcnkg aXMgbm90IGFuIGFic29sdXRlIHBhdGggaW4gdGFibGVzcGFjZSBtYXBwaW5nOiAlcyIsCisJ CQkJCSBjZWxsLT5vbGRfZGlyKTsKIAkJZXhpdCgxKTsKIAl9CiAKIAlpZiAoIWlzX2Fic29s dXRlX3BhdGgoY2VsbC0+bmV3X2RpcikpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IG5ldyBkaXJlY3RvcnkgaXMgbm90IGFuIGFic29sdXRlIHBhdGggaW4gdGFibGVzcGFjZSBt YXBwaW5nOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIGNlbGwtPm5ld19kaXIpOworCQlwZ19s b2dfZXJyb3IoIm5ldyBkaXJlY3RvcnkgaXMgbm90IGFuIGFic29sdXRlIHBhdGggaW4gdGFi bGVzcGFjZSBtYXBwaW5nOiAlcyIsCisJCQkJCSBjZWxsLT5uZXdfZGlyKTsKIAkJZXhpdCgx KTsKIAl9CiAKQEAgLTQyMCwxNiArNDAzLDE0IEBAIHJlYWNoZWRfZW5kX3Bvc2l0aW9uKFhM b2dSZWNQdHIgc2VnZW5kcG9zLCB1aW50MzIgdGltZWxpbmUsCiAJCQlyID0gcmVhZChiZ3Bp cGVbMF0sIHhsb2dlbmQsIHNpemVvZih4bG9nZW5kKSAtIDEpOwogCQkJaWYgKHIgPCAwKQog CQkJewotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQgZnJvbSBy ZWFkeSBwaXBlOiAlc1xuIiksCi0JCQkJCQlwcm9nbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsK KwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCByZWFkIGZyb20gcmVhZHkgcGlwZTogJW0i KTsKIAkJCQlleGl0KDEpOwogCQkJfQogCiAJCQlpZiAoc3NjYW5mKHhsb2dlbmQsICIlWC8l WCIsICZoaSwgJmxvKSAhPSAyKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJ XygiJXM6IGNvdWxkIG5vdCBwYXJzZSB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gXCIlc1wi XG4iKSwKLQkJCQkJCXByb2duYW1lLCB4bG9nZW5kKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCBwYXJzZSB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gXCIlc1wiIiwKKwkJCQkJ CQkgeGxvZ2VuZCk7CiAJCQkJZXhpdCgxKTsKIAkJCX0KIAkJCXhsb2dlbmRwdHIgPSAoKHVp bnQ2NCkgaGkpIDw8IDMyIHwgbG87CkBAIC01MjEsOSArNTAyLDcgQEAgTG9nU3RyZWFtZXJN YWluKGxvZ3N0cmVhbWVyX3BhcmFtICpwYXJhbSkKIAogCWlmICghc3RyZWFtLndhbG1ldGhv ZC0+ZmluaXNoKCkpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogY291bGQg bm90IGZpbmlzaCB3cml0aW5nIFdBTCBmaWxlczogJXNcbiIpLAotCQkJCXByb2duYW1lLCBz dHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBmaW5pc2ggd3Jp dGluZyBXQUwgZmlsZXM6ICVtIik7CiAJCXJldHVybiAxOwogCX0KIApAQCAtNTU4LDkgKzUz Nyw4IEBAIFN0YXJ0TG9nU3RyZWFtZXIoY2hhciAqc3RhcnRwb3MsIHVpbnQzMiB0aW1lbGlu ZSwgY2hhciAqc3lzaWRlbnRpZmllcikKIAkvKiBDb252ZXJ0IHRoZSBzdGFydGluZyBwb3Np dGlvbiAqLwogCWlmIChzc2NhbmYoc3RhcnRwb3MsICIlWC8lWCIsICZoaSwgJmxvKSAhPSAy KQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IGNvdWxkIG5vdCBwYXJzZSB3 cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gXCIlc1wiXG4iKSwKLQkJCQlwcm9nbmFtZSwgc3Rh cnRwb3MpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBwYXJzZSB3cml0ZS1haGVhZCBs b2cgbG9jYXRpb24gXCIlc1wiIiwKKwkJCQkJIHN0YXJ0cG9zKTsKIAkJZXhpdCgxKTsKIAl9 CiAJcGFyYW0tPnN0YXJ0cHRyID0gKCh1aW50NjQpIGhpKSA8PCAzMiB8IGxvOwpAQCAtNTcx LDkgKzU0OSw3IEBAIFN0YXJ0TG9nU3RyZWFtZXIoY2hhciAqc3RhcnRwb3MsIHVpbnQzMiB0 aW1lbGluZSwgY2hhciAqc3lzaWRlbnRpZmllcikKIAkvKiBDcmVhdGUgb3VyIGJhY2tncm91 bmQgcGlwZSAqLwogCWlmIChwaXBlKGJncGlwZSkgPCAwKQogCXsKLQkJZnByaW50ZihzdGRl cnIsCi0JCQkJXygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgcGlwZSBmb3IgYmFja2dyb3VuZCBw cm9jZXNzOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCXBn X2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0ZSBwaXBlIGZvciBiYWNrZ3JvdW5kIHByb2Nl c3M6ICVtIik7CiAJCWV4aXQoMSk7CiAJfQogI2VuZGlmCkBAIC02MDgsMTEgKzU4NCwxMSBA QCBTdGFydExvZ1N0cmVhbWVyKGNoYXIgKnN0YXJ0cG9zLCB1aW50MzIgdGltZWxpbmUsIGNo YXIgKnN5c2lkZW50aWZpZXIpCiAJCWlmICh2ZXJib3NlKQogCQl7CiAJCQlpZiAodGVtcF9y ZXBsaWNhdGlvbl9zbG90KQotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY3JlYXRlZCB0 ZW1wb3JhcnkgcmVwbGljYXRpb24gc2xvdCBcIiVzXCJcbiIpLAotCQkJCQkJcHJvZ25hbWUs IHJlcGxpY2F0aW9uX3Nsb3QpOworCQkJCXBnX2xvZ19pbmZvKCJjcmVhdGVkIHRlbXBvcmFy eSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsCisJCQkJCQkJcmVwbGljYXRpb25fc2xvdCk7 CiAJCQllbHNlCi0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjcmVhdGVkIHJlcGxpY2F0 aW9uIHNsb3QgXCIlc1wiXG4iKSwKLQkJCQkJCXByb2duYW1lLCByZXBsaWNhdGlvbl9zbG90 KTsKKwkJCQlwZ19sb2dfaW5mbygiY3JlYXRlZCByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIs CisJCQkJCQkJcmVwbGljYXRpb25fc2xvdCk7CiAJCX0KIAl9CiAKQEAgLTYzMSw5ICs2MDcs NyBAQCBTdGFydExvZ1N0cmVhbWVyKGNoYXIgKnN0YXJ0cG9zLCB1aW50MzIgdGltZWxpbmUs IGNoYXIgKnN5c2lkZW50aWZpZXIpCiAKIAkJaWYgKHBnX21rZGlyX3Aoc3RhdHVzZGlyLCBw Z19kaXJfY3JlYXRlX21vZGUpICE9IDAgJiYgZXJybm8gIT0gRUVYSVNUKQogCQl7Ci0JCQlm cHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5 IFwiJXNcIjogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwgc3RhdHVzZGlyLCBzdHJlcnJvcihl cnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBc IiVzXCI6ICVtIiwgc3RhdHVzZGlyKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAl9CkBAIC02NTEs OCArNjI1LDcgQEAgU3RhcnRMb2dTdHJlYW1lcihjaGFyICpzdGFydHBvcywgdWludDMyIHRp bWVsaW5lLCBjaGFyICpzeXNpZGVudGlmaWVyKQogCX0KIAllbHNlIGlmIChiZ2NoaWxkIDwg MCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGNyZWF0ZSBiYWNr Z3JvdW5kIHByb2Nlc3M6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgc3RyZXJyb3IoZXJybm8p KTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIGJhY2tncm91bmQgcHJvY2Vz czogJW0iKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTY2NCw4ICs2MzcsNyBAQCBTdGFydExv Z1N0cmVhbWVyKGNoYXIgKnN0YXJ0cG9zLCB1aW50MzIgdGltZWxpbmUsIGNoYXIgKnN5c2lk ZW50aWZpZXIpCiAJYmdjaGlsZCA9IF9iZWdpbnRocmVhZGV4KE5VTEwsIDAsICh2b2lkICop IExvZ1N0cmVhbWVyTWFpbiwgcGFyYW0sIDAsIE5VTEwpOwogCWlmIChiZ2NoaWxkID09IDAp CiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgYmFja2dy b3VuZCB0aHJlYWQ6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsK KwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIGJhY2tncm91bmQgdGhyZWFkOiAl bSIpOwogCQlleGl0KDEpOwogCX0KICNlbmRpZgpAQCAtNjg4LDkgKzY2MCw3IEBAIHZlcmlm eV9kaXJfaXNfZW1wdHlfb3JfY3JlYXRlKGNoYXIgKmRpcm5hbWUsIGJvb2wgKmNyZWF0ZWQs IGJvb2wgKmZvdW5kKQogCQkJICovCiAJCQlpZiAocGdfbWtkaXJfcChkaXJuYW1lLCBwZ19k aXJfY3JlYXRlX21vZGUpID09IC0xKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJ CQkJXygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAot CQkJCQkJcHJvZ25hbWUsIGRpcm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgZGlybmFt ZSk7CiAJCQkJZXhpdCgxKTsKIAkJCX0KIAkJCWlmIChjcmVhdGVkKQpAQCAtNzExLDE3ICs2 ODEsMTQgQEAgdmVyaWZ5X2Rpcl9pc19lbXB0eV9vcl9jcmVhdGUoY2hhciAqZGlybmFtZSwg Ym9vbCAqY3JlYXRlZCwgYm9vbCAqZm91bmQpCiAJCQkvKgogCQkJICogRXhpc3RzLCBub3Qg ZW1wdHkKIAkJCSAqLwotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBkaXJlY3Rv cnkgXCIlc1wiIGV4aXN0cyBidXQgaXMgbm90IGVtcHR5XG4iKSwKLQkJCQkJcHJvZ25hbWUs IGRpcm5hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJkaXJlY3RvcnkgXCIlc1wiIGV4aXN0cyBi dXQgaXMgbm90IGVtcHR5IiwgZGlybmFtZSk7CiAJCQlleGl0KDEpOwogCQljYXNlIC0xOgog CiAJCQkvKgogCQkJICogQWNjZXNzIHByb2JsZW0KIAkJCSAqLwotCQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBjb3VsZCBub3QgYWNjZXNzIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwK LQkJCQkJcHJvZ25hbWUsIGRpcm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCBhY2Nlc3MgZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBkaXJuYW1l KTsKIAkJCWV4aXQoMSk7CiAJfQogfQpAQCAtODM0LDE2ICs4MDEsMTIgQEAgcGFyc2VfbWF4 X3JhdGUoY2hhciAqc3JjKQogCXJlc3VsdCA9IHN0cnRvZChzcmMsICZhZnRlcl9udW0pOwog CWlmIChzcmMgPT0gYWZ0ZXJfbnVtKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygi JXM6IHRyYW5zZmVyIHJhdGUgXCIlc1wiIGlzIG5vdCBhIHZhbGlkIHZhbHVlXG4iKSwKLQkJ CQlwcm9nbmFtZSwgc3JjKTsKKwkJcGdfbG9nX2Vycm9yKCJ0cmFuc2ZlciByYXRlIFwiJXNc IiBpcyBub3QgYSB2YWxpZCB2YWx1ZSIsIHNyYyk7CiAJCWV4aXQoMSk7CiAJfQogCWlmIChl cnJubyAhPSAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IGludmFsaWQg dHJhbnNmZXIgcmF0ZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgc3JjLCBzdHJl cnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImludmFsaWQgdHJhbnNmZXIgcmF0ZSBc IiVzXCI6ICVtIiwgc3JjKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTg1Miw4ICs4MTUsNyBA QCBwYXJzZV9tYXhfcmF0ZShjaGFyICpzcmMpCiAJCS8qCiAJCSAqIFJlamVjdCBvYnZpb3Vz bHkgd3JvbmcgdmFsdWVzIGhlcmUuCiAJCSAqLwotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IHRyYW5zZmVyIHJhdGUgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyb1xuIiksCi0JCQkJcHJv Z25hbWUpOworCQlwZ19sb2dfZXJyb3IoInRyYW5zZmVyIHJhdGUgbXVzdCBiZSBncmVhdGVy IHRoYW4gemVybyIpOwogCQlleGl0KDEpOwogCX0KIApAQCAtODg1LDE4ICs4NDcsMTQgQEAg cGFyc2VfbWF4X3JhdGUoY2hhciAqc3JjKQogCiAJaWYgKCphZnRlcl9udW0gIT0gJ1wwJykK IAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBpbnZhbGlkIC0tbWF4LXJhdGUg dW5pdDogXCIlc1wiXG4iKSwKLQkJCQlwcm9nbmFtZSwgc3VmZml4KTsKKwkJcGdfbG9nX2Vy cm9yKCJpbnZhbGlkIC0tbWF4LXJhdGUgdW5pdDogXCIlc1wiIiwgc3VmZml4KTsKIAkJZXhp dCgxKTsKIAl9CiAKIAkvKiBWYWxpZCBpbnRlZ2VyPyAqLwogCWlmICgodWludDY0KSByZXN1 bHQgIT0gKHVpbnQ2NCkgKCh1aW50MzIpIHJlc3VsdCkpCiAJewotCQlmcHJpbnRmKHN0ZGVy ciwKLQkJCQlfKCIlczogdHJhbnNmZXIgcmF0ZSBcIiVzXCIgZXhjZWVkcyBpbnRlZ2VyIHJh bmdlXG4iKSwKLQkJCQlwcm9nbmFtZSwgc3JjKTsKKwkJcGdfbG9nX2Vycm9yKCJ0cmFuc2Zl ciByYXRlIFwiJXNcIiBleGNlZWRzIGludGVnZXIgcmFuZ2UiLCBzcmMpOwogCQlleGl0KDEp OwogCX0KIApAQCAtOTA2LDkgKzg2NCw3IEBAIHBhcnNlX21heF9yYXRlKGNoYXIgKnNyYykK IAkgKi8KIAlpZiAocmVzdWx0IDwgTUFYX1JBVEVfTE9XRVIgfHwgcmVzdWx0ID4gTUFYX1JB VEVfVVBQRVIpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogdHJhbnNmZXIg cmF0ZSBcIiVzXCIgaXMgb3V0IG9mIHJhbmdlXG4iKSwKLQkJCQlwcm9nbmFtZSwgc3JjKTsK KwkJcGdfbG9nX2Vycm9yKCJ0cmFuc2ZlciByYXRlIFwiJXNcIiBpcyBvdXQgb2YgcmFuZ2Ui LCBzcmMpOwogCQlleGl0KDEpOwogCX0KIApAQCAtOTMwLDkgKzg4Niw4IEBAIHdyaXRlVGFy RGF0YSgKIAl7CiAJCWlmIChnendyaXRlKHp0YXJmaWxlLCBidWYsIHIpICE9IHIpCiAJCXsK LQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogY291bGQgbm90IHdyaXRlIHRvIGNv bXByZXNzZWQgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIGN1cnJlbnRf ZmlsZSwgZ2V0X2d6X2Vycm9yKHp0YXJmaWxlKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxk IG5vdCB3cml0ZSB0byBjb21wcmVzc2VkIGZpbGUgXCIlc1wiOiAlcyIsCisJCQkJCQkgY3Vy cmVudF9maWxlLCBnZXRfZ3pfZXJyb3IoenRhcmZpbGUpKTsKIAkJCWV4aXQoMSk7CiAJCX0K IAl9CkBAIC05NDEsOCArODk2LDcgQEAgd3JpdGVUYXJEYXRhKAogCXsKIAkJaWYgKGZ3cml0 ZShidWYsIHIsIDEsIHRhcmZpbGUpICE9IDEpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBf KCIlczogY291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCXBy b2duYW1lLCBjdXJyZW50X2ZpbGUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNcIjogJW0iLCBjdXJyZW50X2ZpbGUp OwogCQkJZXhpdCgxKTsKIAkJfQogCX0KQEAgLTEwMDIsOSArOTU2LDggQEAgUmVjZWl2ZVRh ckZpbGUoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCQkJCWlm IChnenNldHBhcmFtcyh6dGFyZmlsZSwgY29tcHJlc3NsZXZlbCwKIAkJCQkJCQkJWl9ERUZB VUxUX1NUUkFURUdZKSAhPSBaX09LKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsCi0J CQkJCQkJXygiJXM6IGNvdWxkIG5vdCBzZXQgY29tcHJlc3Npb24gbGV2ZWwgJWQ6ICVzXG4i KSwKLQkJCQkJCQlwcm9nbmFtZSwgY29tcHJlc3NsZXZlbCwgZ2V0X2d6X2Vycm9yKHp0YXJm aWxlKSk7CisJCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNldCBjb21wcmVzc2lvbiBs ZXZlbCAlZDogJXMiLAorCQkJCQkJCQkgY29tcHJlc3NsZXZlbCwgZ2V0X2d6X2Vycm9yKHp0 YXJmaWxlKSk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJfQpAQCAtMTAyMyw5ICs5NzYs OCBAQCBSZWNlaXZlVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMsIGludCBy b3dudW0pCiAJCQkJaWYgKGd6c2V0cGFyYW1zKHp0YXJmaWxlLCBjb21wcmVzc2xldmVsLAog CQkJCQkJCQlaX0RFRkFVTFRfU1RSQVRFR1kpICE9IFpfT0spCiAJCQkJewotCQkJCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQkJCQlfKCIlczogY291bGQgbm90IHNldCBjb21wcmVzc2lvbiBs ZXZlbCAlZDogJXNcbiIpLAotCQkJCQkJCXByb2duYW1lLCBjb21wcmVzc2xldmVsLCBnZXRf Z3pfZXJyb3IoenRhcmZpbGUpKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc2V0 IGNvbXByZXNzaW9uIGxldmVsICVkOiAlcyIsCisJCQkJCQkJCSBjb21wcmVzc2xldmVsLCBn ZXRfZ3pfZXJyb3IoenRhcmZpbGUpKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQl9CkBA IC0xMDUxLDkgKzEwMDMsOCBAQCBSZWNlaXZlVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVz dWx0ICpyZXMsIGludCByb3dudW0pCiAJCQlpZiAoZ3pzZXRwYXJhbXMoenRhcmZpbGUsIGNv bXByZXNzbGV2ZWwsCiAJCQkJCQkJWl9ERUZBVUxUX1NUUkFURUdZKSAhPSBaX09LKQogCQkJ ewotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJXygiJXM6IGNvdWxkIG5vdCBzZXQgY29t cHJlc3Npb24gbGV2ZWwgJWQ6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBjb21wcmVzc2xl dmVsLCBnZXRfZ3pfZXJyb3IoenRhcmZpbGUpKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNvdWxk IG5vdCBzZXQgY29tcHJlc3Npb24gbGV2ZWwgJWQ6ICVzIiwKKwkJCQkJCQkgY29tcHJlc3Ns ZXZlbCwgZ2V0X2d6X2Vycm9yKHp0YXJmaWxlKSk7CiAJCQkJZXhpdCgxKTsKIAkJCX0KIAkJ fQpAQCAtMTA3Miw5ICsxMDIzLDggQEAgUmVjZWl2ZVRhckZpbGUoUEdjb25uICpjb25uLCBQ R3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCQlpZiAoIXp0YXJmaWxlKQogCQl7CiAJCQkv KiBDb21wcmVzc2lvbiBpcyBpbiB1c2UgKi8KLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlf KCIlczogY291bGQgbm90IGNyZWF0ZSBjb21wcmVzc2VkIGZpbGUgXCIlc1wiOiAlc1xuIiks Ci0JCQkJCXByb2duYW1lLCBmaWxlbmFtZSwgZ2V0X2d6X2Vycm9yKHp0YXJmaWxlKSk7CisJ CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgY29tcHJlc3NlZCBmaWxlIFwiJXNc IjogJXMiLAorCQkJCQkJIGZpbGVuYW1lLCBnZXRfZ3pfZXJyb3IoenRhcmZpbGUpKTsKIAkJ CWV4aXQoMSk7CiAJCX0KIAl9CkBAIC0xMDg0LDggKzEwMzQsNyBAQCBSZWNlaXZlVGFyRmls ZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMsIGludCByb3dudW0pCiAJCS8qIEVpdGhl ciBubyB6bGliIHN1cHBvcnQsIG9yIHpsaWIgc3VwcG9ydCBidXQgY29tcHJlc3NsZXZlbCA9 IDAgKi8KIAkJaWYgKCF0YXJmaWxlKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IGNvdWxkIG5vdCBjcmVhdGUgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUs IGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBu b3QgY3JlYXRlIGZpbGUgXCIlc1wiOiAlbSIsIGZpbGVuYW1lKTsKIAkJCWV4aXQoMSk7CiAJ CX0KIAl9CkBAIC0xMDk2LDggKzEwNDUsOCBAQCBSZWNlaXZlVGFyRmlsZShQR2Nvbm4gKmNv bm4sIFBHcmVzdWx0ICpyZXMsIGludCByb3dudW0pCiAJcmVzID0gUFFnZXRSZXN1bHQoY29u bik7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09QWV9PVVQpCiAJewot CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBnZXQgQ09QWSBkYXRhIHN0cmVh bTogJXMiKSwKLQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19s b2dfZXJyb3IoImNvdWxkIG5vdCBnZXQgQ09QWSBkYXRhIHN0cmVhbTogJXMiLAorCQkJCQkg UFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQlleGl0KDEpOwogCX0KIApAQCAtMTE2NCw5ICsx MTEzLDggQEAgUmVjZWl2ZVRhckZpbGUoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVzLCBp bnQgcm93bnVtKQogCQkJewogCQkJCWlmIChnemNsb3NlKHp0YXJmaWxlKSAhPSAwKQogCQkJ CXsKLQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJXygiJXM6IGNvdWxkIG5vdCBjbG9z ZSBjb21wcmVzc2VkIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCQkJcHJvZ25hbWUsIGZp bGVuYW1lLCBnZXRfZ3pfZXJyb3IoenRhcmZpbGUpKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJj b3VsZCBub3QgY2xvc2UgY29tcHJlc3NlZCBmaWxlIFwiJXNcIjogJXMiLAorCQkJCQkJCQkg ZmlsZW5hbWUsIGdldF9nel9lcnJvcih6dGFyZmlsZSkpOwogCQkJCQlleGl0KDEpOwogCQkJ CX0KIAkJCX0KQEAgLTExNzcsOSArMTEyNSw4IEBAIFJlY2VpdmVUYXJGaWxlKFBHY29ubiAq Y29ubiwgUEdyZXN1bHQgKnJlcywgaW50IHJvd251bSkKIAkJCQl7CiAJCQkJCWlmIChmY2xv c2UodGFyZmlsZSkgIT0gMCkKIAkJCQkJewotCQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJ CQkJCV8oIiVzOiBjb3VsZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJ CQkJcHJvZ25hbWUsIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJCQkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkJCSBm aWxlbmFtZSk7CiAJCQkJCQlleGl0KDEpOwogCQkJCQl9CiAJCQkJfQpAQCAtMTE4OSw4ICsx MTM2LDggQEAgUmVjZWl2ZVRhckZpbGUoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVzLCBp bnQgcm93bnVtKQogCQl9CiAJCWVsc2UgaWYgKHIgPT0gLTIpCiAJCXsKLQkJCWZwcmludGYo c3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQgQ09QWSBkYXRhOiAlcyIpLAotCQkJCQlw cm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQkJcGdfbG9nX2Vycm9yKCJjb3Vs ZCBub3QgcmVhZCBDT1BZIGRhdGE6ICVzIiwKKwkJCQkJCSBQUWVycm9yTWVzc2FnZShjb25u KSk7CiAJCQlleGl0KDEpOwogCQl9CiAKQEAgLTEzNjQsNyArMTMxMSw3IEBAIFJlY2VpdmVU YXJGaWxlKFBHY29ubiAqY29ubiwgUEdyZXN1bHQgKnJlcywgaW50IHJvd251bSkKIAogCS8q IHN5bmMgdGhlIHJlc3VsdGluZyB0YXIgZmlsZSwgZXJyb3JzIGFyZSBub3QgY29uc2lkZXJl ZCBmYXRhbCAqLwogCWlmIChkb19zeW5jICYmIHN0cmNtcChiYXNlZGlyLCAiLSIpICE9IDAp Ci0JCSh2b2lkKSBmc3luY19mbmFtZShmaWxlbmFtZSwgZmFsc2UsIHByb2duYW1lKTsKKwkJ KHZvaWQpIGZzeW5jX2ZuYW1lKGZpbGVuYW1lLCBmYWxzZSk7CiB9CiAKIApAQCAtMTQyNSw4 ICsxMzcyLDggQEAgUmVjZWl2ZUFuZFVucGFja1RhckZpbGUoUEdjb25uICpjb25uLCBQR3Jl c3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbm4pOwogCWlm IChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPUFlfT1VUKQogCXsKLQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgZ2V0IENPUFkgZGF0YSBzdHJlYW06ICVzIiks Ci0JCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3QgZ2V0IENPUFkgZGF0YSBzdHJlYW06ICVzIiwKKwkJCQkJIFBRZXJyb3JN ZXNzYWdlKGNvbm4pKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTE0NTQsOCArMTQwMSw4IEBA IFJlY2VpdmVBbmRVbnBhY2tUYXJGaWxlKFBHY29ubiAqY29ubiwgUEdyZXN1bHQgKnJlcywg aW50IHJvd251bSkKIAkJfQogCQllbHNlIGlmIChyID09IC0yKQogCQl7Ci0JCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZWFkIENPUFkgZGF0YTogJXMiKSwKLQkJCQkJ cHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291 bGQgbm90IHJlYWQgQ09QWSBkYXRhOiAlcyIsCisJCQkJCQkgUFFlcnJvck1lc3NhZ2UoY29u bikpOwogCQkJZXhpdCgxKTsKIAkJfQogCkBAIC0xNDY4LDggKzE0MTUsNyBAQCBSZWNlaXZl QW5kVW5wYWNrVGFyRmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMsIGludCByb3du dW0pCiAJCQkgKi8KIAkJCWlmIChyICE9IDUxMikKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IGludmFsaWQgdGFyIGJsb2NrIGhlYWRlciBzaXplOiAlZFxuIiksCi0JCQkJ CQlwcm9nbmFtZSwgcik7CisJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIHRhciBibG9jayBo ZWFkZXIgc2l6ZTogJWQiLCByKTsKIAkJCQlleGl0KDEpOwogCQkJfQogCQkJdG90YWxkb25l ICs9IDUxMjsKQEAgLTE1MTcsMTcgKzE0NjMsMTUgQEAgUmVjZWl2ZUFuZFVucGFja1RhckZp bGUoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCQkJCQkJCSAg IHBnX3N0cl9lbmRzd2l0aChmaWxlbmFtZSwgIi9hcmNoaXZlX3N0YXR1cyIpKSAmJgogCQkJ CQkJCSAgZXJybm8gPT0gRUVYSVNUKSkKIAkJCQkJCXsKLQkJCQkJCQlmcHJpbnRmKHN0ZGVy ciwKLQkJCQkJCQkJCV8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6 ICVzXG4iKSwKLQkJCQkJCQkJCXByb2duYW1lLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8p KTsKKwkJCQkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgZGlyZWN0b3J5IFwi JXNcIjogJW0iLAorCQkJCQkJCQkJCSBmaWxlbmFtZSk7CiAJCQkJCQkJZXhpdCgxKTsKIAkJ CQkJCX0KIAkJCQkJfQogI2lmbmRlZiBXSU4zMgogCQkJCQlpZiAoY2htb2QoZmlsZW5hbWUs IChtb2RlX3QpIGZpbGVtb2RlKSkKLQkJCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJCQlf KCIlczogY291bGQgbm90IHNldCBwZXJtaXNzaW9ucyBvbiBkaXJlY3RvcnkgXCIlc1wiOiAl c1xuIiksCi0JCQkJCQkJCXByb2duYW1lLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsK KwkJCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNldCBwZXJtaXNzaW9ucyBvbiBkaXJl Y3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJCQkJCQkgZmlsZW5hbWUpOwogI2VuZGlmCiAJCQkJ fQogCQkJCWVsc2UgaWYgKGNvcHlidWZbMTU2XSA9PSAnMicpCkBAIC0xNTQ5LDE4ICsxNDkz LDE1IEBAIFJlY2VpdmVBbmRVbnBhY2tUYXJGaWxlKFBHY29ubiAqY29ubiwgUEdyZXN1bHQg KnJlcywgaW50IHJvd251bSkKIAkJCQkJbWFwcGVkX3RibHNwY19wYXRoID0gZ2V0X3RhYmxl c3BhY2VfbWFwcGluZygmY29weWJ1ZlsxNTddKTsKIAkJCQkJaWYgKHN5bWxpbmsobWFwcGVk X3RibHNwY19wYXRoLCBmaWxlbmFtZSkgIT0gMCkKIAkJCQkJewotCQkJCQkJZnByaW50Zihz dGRlcnIsCi0JCQkJCQkJCV8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIHN5bWJvbGljIGxpbmsg ZnJvbSBcIiVzXCIgdG8gXCIlc1wiOiAlc1xuIiksCi0JCQkJCQkJCXByb2duYW1lLCBmaWxl bmFtZSwgbWFwcGVkX3RibHNwY19wYXRoLAotCQkJCQkJCQlzdHJlcnJvcihlcnJubykpOwor CQkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIHN5bWJvbGljIGxpbmsgZnJv bSBcIiVzXCIgdG8gXCIlc1wiOiAlbSIsCisJCQkJCQkJCQkgZmlsZW5hbWUsIG1hcHBlZF90 YmxzcGNfcGF0aCk7CiAJCQkJCQlleGl0KDEpOwogCQkJCQl9CiAJCQkJfQogCQkJCWVsc2UK IAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJCV8oIiVzOiB1bnJlY29nbml6 ZWQgbGluayBpbmRpY2F0b3IgXCIlY1wiXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwgY29weWJ1 ZlsxNTZdKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJ1bnJlY29nbml6ZWQgbGluayBpbmRpY2F0 b3IgXCIlY1wiIiwKKwkJCQkJCQkJIGNvcHlidWZbMTU2XSk7CiAJCQkJCWV4aXQoMSk7CiAJ CQkJfQogCQkJCWNvbnRpbnVlOwkJLyogZGlyZWN0b3J5IG9yIGxpbmsgaGFuZGxlZCAqLwpA QCAtMTU3MiwxNSArMTUxMywxNCBAQCBSZWNlaXZlQW5kVW5wYWNrVGFyRmlsZShQR2Nvbm4g KmNvbm4sIFBHcmVzdWx0ICpyZXMsIGludCByb3dudW0pCiAJCQlmaWxlID0gZm9wZW4oZmls ZW5hbWUsICJ3YiIpOwogCQkJaWYgKCFmaWxlKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJy LCBfKCIlczogY291bGQgbm90IGNyZWF0ZSBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCQkJ cHJvZ25hbWUsIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IGNyZWF0ZSBmaWxlIFwiJXNcIjogJW0iLCBmaWxlbmFtZSk7CiAJCQkJ ZXhpdCgxKTsKIAkJCX0KIAogI2lmbmRlZiBXSU4zMgogCQkJaWYgKGNobW9kKGZpbGVuYW1l LCAobW9kZV90KSBmaWxlbW9kZSkpCi0JCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3Vs ZCBub3Qgc2V0IHBlcm1pc3Npb25zIG9uIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCQlw cm9nbmFtZSwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3Qgc2V0IHBlcm1pc3Npb25zIG9uIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJ CQkJIGZpbGVuYW1lKTsKICNlbmRpZgogCiAJCQlpZiAoY3VycmVudF9sZW5fbGVmdCA9PSAw KQpAQCAtMTYxMiw4ICsxNTUyLDcgQEAgUmVjZWl2ZUFuZFVucGFja1RhckZpbGUoUEdjb25u ICpjb25uLCBQR3Jlc3VsdCAqcmVzLCBpbnQgcm93bnVtKQogCiAJCQlpZiAoZndyaXRlKGNv cHlidWYsIHIsIDEsIGZpbGUpICE9IDEpCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBjb3VsZCBub3Qgd3JpdGUgdG8gZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXBy b2duYW1lLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3Io ImNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNcIjogJW0iLCBmaWxlbmFtZSk7CiAJCQkJ ZXhpdCgxKTsKIAkJCX0KIAkJCXRvdGFsZG9uZSArPSByOwpAQCAtMTYzNyw5ICsxNTc2LDcg QEAgUmVjZWl2ZUFuZFVucGFja1RhckZpbGUoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVz LCBpbnQgcm93bnVtKQogCiAJaWYgKGZpbGUgIT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3Rk ZXJyLAotCQkJCV8oIiVzOiBDT1BZIHN0cmVhbSBlbmRlZCBiZWZvcmUgbGFzdCBmaWxlIHdh cyBmaW5pc2hlZFxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIkNPUFkg c3RyZWFtIGVuZGVkIGJlZm9yZSBsYXN0IGZpbGUgd2FzIGZpbmlzaGVkIik7CiAJCWV4aXQo MSk7CiAJfQogCkBAIC0xNjY2LDcgKzE2MDMsNyBAQCBlc2NhcGVfcXVvdGVzKGNvbnN0IGNo YXIgKnNyYykKIAogCWlmICghcmVzdWx0KQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBvdXQgb2YgbWVtb3J5XG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm91dCBv ZiBtZW1vcnkiKTsKIAkJZXhpdCgxKTsKIAl9CiAJcmV0dXJuIHJlc3VsdDsKQEAgLTE2ODYs MTQgKzE2MjMsMTQgQEAgR2VuZXJhdGVSZWNvdmVyeUNvbmYoUEdjb25uICpjb25uKQogCXJl Y292ZXJ5Y29uZmNvbnRlbnRzID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKIAlpZiAoIXJlY292 ZXJ5Y29uZmNvbnRlbnRzKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBvdXQgb2Yg bWVtb3J5XG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm91dCBvZiBtZW1vcnki KTsKIAkJZXhpdCgxKTsKIAl9CiAKIAljb25uT3B0aW9ucyA9IFBRY29ubmluZm8oY29ubik7 CiAJaWYgKGNvbm5PcHRpb25zID09IE5VTEwpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IG91dCBvZiBtZW1vcnlcbiIpLCBwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigib3V0 IG9mIG1lbW9yeSIpOwogCQlleGl0KDEpOwogCX0KIApAQCAtMTc0NCw3ICsxNjgxLDcgQEAg R2VuZXJhdGVSZWNvdmVyeUNvbmYoUEdjb25uICpjb25uKQogCWlmIChQUUV4cEJ1ZmZlckJy b2tlbihyZWNvdmVyeWNvbmZjb250ZW50cykgfHwKIAkJUFFFeHBCdWZmZXJEYXRhQnJva2Vu KGNvbm5pbmZvX2J1ZikpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG91dCBvZiBt ZW1vcnlcbiIpLCBwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigib3V0IG9mIG1lbW9yeSIp OwogCQlleGl0KDEpOwogCX0KIApAQCAtMTc3MCwxNSArMTcwNywxMyBAQCBXcml0ZVJlY292 ZXJ5Q29uZih2b2lkKQogCWNmID0gZm9wZW4oZmlsZW5hbWUsICJhIik7CiAJaWYgKGNmID09 IE5VTEwpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIGZp bGUgXCIlc1wiOiAlc1xuIiksIHByb2duYW1lLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8p KTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJW0iLCBm aWxlbmFtZSk7CiAJCWV4aXQoMSk7CiAJfQogCiAJaWYgKGZ3cml0ZShyZWNvdmVyeWNvbmZj b250ZW50cy0+ZGF0YSwgcmVjb3Zlcnljb25mY29udGVudHMtPmxlbiwgMSwgY2YpICE9IDEp CiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogY291bGQgbm90IHdyaXRlIHRv IGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIGZpbGVuYW1lLCBzdHJlcnJv cihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwi JXNcIjogJW0iLCBmaWxlbmFtZSk7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0xNzg4LDcgKzE3 MjMsNyBAQCBXcml0ZVJlY292ZXJ5Q29uZih2b2lkKQogCWNmID0gZm9wZW4oZmlsZW5hbWUs ICJ3Iik7CiAJaWYgKGNmID09IE5VTEwpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IGNvdWxkIG5vdCBjcmVhdGUgZmlsZSBcIiVzXCI6ICVzXG4iKSwgcHJvZ25hbWUsIGZpbGVu YW1lLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVh dGUgZmlsZSBcIiVzXCI6ICVtIiwgZmlsZW5hbWUpOwogCQlleGl0KDEpOwogCX0KIApAQCAt MTgyOCw4ICsxNzYzLDggQEAgQmFzZUJhY2t1cCh2b2lkKQogCXsKIAkJY29uc3QgY2hhciAq c2VydmVydmVyID0gUFFwYXJhbWV0ZXJTdGF0dXMoY29ubiwgInNlcnZlcl92ZXJzaW9uIik7 CiAKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbmNvbXBhdGlibGUgc2VydmVyIHZlcnNp b24gJXNcbiIpLAotCQkJCXByb2duYW1lLCBzZXJ2ZXJ2ZXIgPyBzZXJ2ZXJ2ZXIgOiAiJ3Vu a25vd24nIik7CisJCXBnX2xvZ19lcnJvcigiaW5jb21wYXRpYmxlIHNlcnZlciB2ZXJzaW9u ICVzIiwKKwkJCQkJIHNlcnZlcnZlciA/IHNlcnZlcnZlciA6ICIndW5rbm93biciKTsKIAkJ ZXhpdCgxKTsKIAl9CiAKQEAgLTE4NDMsNyArMTc3OCw3IEBAIEJhc2VCYWNrdXAodm9pZCkK IAkJICogRXJyb3IgbWVzc2FnZSBhbHJlYWR5IHdyaXR0ZW4gaW4gQ2hlY2tTZXJ2ZXJWZXJz aW9uRm9yU3RyZWFtaW5nKCksCiAJCSAqIGJ1dCBhZGQgYSBoaW50IGFib3V0IHVzaW5nIC1Y IG5vbmUuCiAJCSAqLwotCQlmcHJpbnRmKHN0ZGVyciwgXygiSElOVDogdXNlIC1YIG5vbmUg b3IgLVggZmV0Y2ggdG8gZGlzYWJsZSBsb2cgc3RyZWFtaW5nXG4iKSk7CisJCXBnX2xvZ19p bmZvKCJISU5UOiB1c2UgLVggbm9uZSBvciAtWCBmZXRjaCB0byBkaXNhYmxlIGxvZyBzdHJl YW1pbmciKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTE4NjgsOSArMTgwMyw3IEBAIEJhc2VC YWNrdXAodm9pZCkKIAkJbWF4cmF0ZV9jbGF1c2UgPSBwc3ByaW50ZigiTUFYX1JBVEUgJXUi LCBtYXhyYXRlKTsKIAogCWlmICh2ZXJib3NlKQotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlf KCIlczogaW5pdGlhdGluZyBiYXNlIGJhY2t1cCwgd2FpdGluZyBmb3IgY2hlY2twb2ludCB0 byBjb21wbGV0ZVxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfaW5mbygiaW5pdGlh dGluZyBiYXNlIGJhY2t1cCwgd2FpdGluZyBmb3IgY2hlY2twb2ludCB0byBjb21wbGV0ZSIp OwogCiAJaWYgKHNob3dwcm9ncmVzcyAmJiAhdmVyYm9zZSkKIAl7CkBAIC0xODk0LDggKzE4 MjcsOCBAQCBCYXNlQmFja3VwKHZvaWQpCiAKIAlpZiAoUFFzZW5kUXVlcnkoY29ubiwgYmFz ZWJrcCkgPT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHNl bmQgcmVwbGljYXRpb24gY29tbWFuZCBcIiVzXCI6ICVzIiksCi0JCQkJcHJvZ25hbWUsICJC QVNFX0JBQ0tVUCIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJj b3VsZCBub3Qgc2VuZCByZXBsaWNhdGlvbiBjb21tYW5kIFwiJXNcIjogJXMiLAorCQkJCQkg IkJBU0VfQkFDS1VQIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQlleGl0KDEpOwogCX0K IApAQCAtMTkwNSwyMiArMTgzOCwyMSBAQCBCYXNlQmFja3VwKHZvaWQpCiAJcmVzID0gUFFn ZXRSZXN1bHQoY29ubik7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQ TEVTX09LKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgaW5pdGlh dGUgYmFzZSBiYWNrdXA6ICVzIiksCi0JCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNv bm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgaW5pdGlhdGUgYmFzZSBiYWNrdXA6 ICVzIiwKKwkJCQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJZXhpdCgxKTsKIAl9CiAJ aWYgKFBRbnR1cGxlcyhyZXMpICE9IDEpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlf KCIlczogc2VydmVyIHJldHVybmVkIHVuZXhwZWN0ZWQgcmVzcG9uc2UgdG8gQkFTRV9CQUNL VVAgY29tbWFuZDsgZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93 cyBhbmQgJWQgZmllbGRzXG4iKSwKLQkJCQlwcm9nbmFtZSwgUFFudHVwbGVzKHJlcyksIFBR bmZpZWxkcyhyZXMpLCAxLCAyKTsKKwkJcGdfbG9nX2Vycm9yKCJzZXJ2ZXIgcmV0dXJuZWQg dW5leHBlY3RlZCByZXNwb25zZSB0byBCQVNFX0JBQ0tVUCBjb21tYW5kOyBnb3QgJWQgcm93 cyBhbmQgJWQgZmllbGRzLCBleHBlY3RlZCAlZCByb3dzIGFuZCAlZCBmaWVsZHMiLAorCQkJ CQkgUFFudHVwbGVzKHJlcyksIFBRbmZpZWxkcyhyZXMpLCAxLCAyKTsKIAkJZXhpdCgxKTsK IAl9CiAKIAlzdHJsY3B5KHhsb2dzdGFydCwgUFFnZXR2YWx1ZShyZXMsIDAsIDApLCBzaXpl b2YoeGxvZ3N0YXJ0KSk7CiAKIAlpZiAodmVyYm9zZSkKLQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBjaGVja3BvaW50IGNvbXBsZXRlZFxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2lu Zm8oImNoZWNrcG9pbnQgY29tcGxldGVkIik7CiAKIAkvKgogCSAqIDkuMyBhbmQgbGF0ZXIg c2VuZHMgdGhlIFRMSSBvZiB0aGUgc3RhcnRpbmcgcG9pbnQuIFdpdGggb2xkZXIgc2VydmVy cywKQEAgLTE5MzUsOCArMTg2Nyw4IEBAIEJhc2VCYWNrdXAodm9pZCkKIAlNZW1TZXQoeGxv Z2VuZCwgMCwgc2l6ZW9mKHhsb2dlbmQpKTsKIAogCWlmICh2ZXJib3NlICYmIGluY2x1ZGV3 YWwgIT0gTk9fV0FMKQotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHdyaXRlLWFoZWFkIGxv ZyBzdGFydCBwb2ludDogJXMgb24gdGltZWxpbmUgJXVcbiIpLAotCQkJCXByb2duYW1lLCB4 bG9nc3RhcnQsIHN0YXJ0dGxpKTsKKwkJcGdfbG9nX2luZm8oIndyaXRlLWFoZWFkIGxvZyBz dGFydCBwb2ludDogJXMgb24gdGltZWxpbmUgJXUiLAorCQkJCQl4bG9nc3RhcnQsIHN0YXJ0 dGxpKTsKIAogCS8qCiAJICogR2V0IHRoZSBoZWFkZXIKQEAgLTE5NDQsMTMgKzE4NzYsMTMg QEAgQmFzZUJhY2t1cCh2b2lkKQogCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbm4pOwogCWlmIChQ UXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKIAl7Ci0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogY291bGQgbm90IGdldCBiYWNrdXAgaGVhZGVyOiAlcyIpLAotCQkJ CXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiY291 bGQgbm90IGdldCBiYWNrdXAgaGVhZGVyOiAlcyIsCisJCQkJCSBQUWVycm9yTWVzc2FnZShj b25uKSk7CiAJCWV4aXQoMSk7CiAJfQogCWlmIChQUW50dXBsZXMocmVzKSA8IDEpCiAJewot CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG5vIGRhdGEgcmV0dXJuZWQgZnJvbSBzZXJ2ZXJc biIpLCBwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigibm8gZGF0YSByZXR1cm5lZCBmcm9t IHNlcnZlciIpOwogCQlleGl0KDEpOwogCX0KIApAQCAtMTk4MSw5ICsxOTEzLDggQEAgQmFz ZUJhY2t1cCh2b2lkKQogCSAqLwogCWlmIChmb3JtYXQgPT0gJ3QnICYmIHN0cmNtcChiYXNl ZGlyLCAiLSIpID09IDAgJiYgUFFudHVwbGVzKHJlcykgPiAxKQogCXsKLQkJZnByaW50Zihz dGRlcnIsCi0JCQkJXygiJXM6IGNhbiBvbmx5IHdyaXRlIHNpbmdsZSB0YWJsZXNwYWNlIHRv IHN0ZG91dCwgZGF0YWJhc2UgaGFzICVkXG4iKSwKLQkJCQlwcm9nbmFtZSwgUFFudHVwbGVz KHJlcykpOworCQlwZ19sb2dfZXJyb3IoImNhbiBvbmx5IHdyaXRlIHNpbmdsZSB0YWJsZXNw YWNlIHRvIHN0ZG91dCwgZGF0YWJhc2UgaGFzICVkIiwKKwkJCQkJIFBRbnR1cGxlcyhyZXMp KTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTE5OTQsOCArMTkyNSw3IEBAIEJhc2VCYWNrdXAo dm9pZCkKIAlpZiAoaW5jbHVkZXdhbCA9PSBTVFJFQU1fV0FMKQogCXsKIAkJaWYgKHZlcmJv c2UpCi0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHN0YXJ0aW5nIGJhY2tncm91bmQgV0FM IHJlY2VpdmVyXG4iKSwKLQkJCQkJcHJvZ25hbWUpOworCQkJcGdfbG9nX2luZm8oInN0YXJ0 aW5nIGJhY2tncm91bmQgV0FMIHJlY2VpdmVyIik7CiAJCVN0YXJ0TG9nU3RyZWFtZXIoeGxv Z3N0YXJ0LCBzdGFydHRsaSwgc3lzaWRlbnRpZmllcik7CiAJfQogCkBAIC0yMDI1LDIxICsx OTU1LDE4IEBAIEJhc2VCYWNrdXAodm9pZCkKIAlyZXMgPSBQUWdldFJlc3VsdChjb25uKTsK IAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCiAJewotCQlm cHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogY291bGQgbm90IGdldCB3cml0ZS1haGVhZCBs b2cgZW5kIHBvc2l0aW9uIGZyb20gc2VydmVyOiAlcyIpLAotCQkJCXByb2duYW1lLCBQUWVy cm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGdldCB3cml0 ZS1haGVhZCBsb2cgZW5kIHBvc2l0aW9uIGZyb20gc2VydmVyOiAlcyIsCisJCQkJCSBQUWVy cm9yTWVzc2FnZShjb25uKSk7CiAJCWV4aXQoMSk7CiAJfQogCWlmIChQUW50dXBsZXMocmVz KSAhPSAxKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IG5vIHdyaXRlLWFo ZWFkIGxvZyBlbmQgcG9zaXRpb24gcmV0dXJuZWQgZnJvbSBzZXJ2ZXJcbiIpLAotCQkJCXBy b2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJubyB3cml0ZS1haGVhZCBsb2cgZW5kIHBvc2l0 aW9uIHJldHVybmVkIGZyb20gc2VydmVyIik7CiAJCWV4aXQoMSk7CiAJfQogCXN0cmxjcHko eGxvZ2VuZCwgUFFnZXR2YWx1ZShyZXMsIDAsIDApLCBzaXplb2YoeGxvZ2VuZCkpOwogCWlm ICh2ZXJib3NlICYmIGluY2x1ZGV3YWwgIT0gTk9fV0FMKQotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IHdyaXRlLWFoZWFkIGxvZyBlbmQgcG9pbnQ6ICVzXG4iKSwgcHJvZ25hbWUsIHhs b2dlbmQpOworCQlwZ19sb2dfaW5mbygid3JpdGUtYWhlYWQgbG9nIGVuZCBwb2ludDogJXMi LCB4bG9nZW5kKTsKIAlQUWNsZWFyKHJlcyk7CiAKIAlyZXMgPSBQUWdldFJlc3VsdChjb25u KTsKQEAgLTIwNTAsMTQgKzE5NzcsMTMgQEAgQmFzZUJhY2t1cCh2b2lkKQogCQlpZiAoc3Fs c3RhdGUgJiYKIAkJCXN0cmNtcChzcWxzdGF0ZSwgRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCkg PT0gMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjaGVja3N1bSBlcnJvciBv Y2N1cnJlZFxuIiksCi0JCQkJCXByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiY2hlY2tz dW0gZXJyb3Igb2NjdXJyZWQiKTsKIAkJCWNoZWNrc3VtX2ZhaWx1cmUgPSB0cnVlOwogCQl9 CiAJCWVsc2UKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBmaW5hbCByZWNlaXZl IGZhaWxlZDogJXMiKSwKLQkJCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsK KwkJCXBnX2xvZ19lcnJvcigiZmluYWwgcmVjZWl2ZSBmYWlsZWQ6ICVzIiwKKwkJCQkJCSBQ UWVycm9yTWVzc2FnZShjb25uKSk7CiAJCX0KIAkJZXhpdCgxKTsKIAl9CkBAIC0yMDgwLDE1 ICsyMDA2LDEyIEBAIEJhc2VCYWNrdXAodm9pZCkKICNlbmRpZgogCiAJCWlmICh2ZXJib3Nl KQotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiB3YWl0aW5nIGZvciBiYWNrZ3Jv dW5kIHByb2Nlc3MgdG8gZmluaXNoIHN0cmVhbWluZyAuLi5cbiIpLCBwcm9nbmFtZSk7CisJ CQlwZ19sb2dfaW5mbygid2FpdGluZyBmb3IgYmFja2dyb3VuZCBwcm9jZXNzIHRvIGZpbmlz aCBzdHJlYW1pbmcgLi4uIik7CiAKICNpZm5kZWYgV0lOMzIKIAkJaWYgKHdyaXRlKGJncGlw ZVsxXSwgeGxvZ2VuZCwgc3RybGVuKHhsb2dlbmQpKSAhPSBzdHJsZW4oeGxvZ2VuZCkpCiAJ CXsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogY291bGQgbm90IHNlbmQgY29t bWFuZCB0byBiYWNrZ3JvdW5kIHBpcGU6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHN0cmVy cm9yKGVycm5vKSk7CisJCQlwZ19sb2dfaW5mbygiY291bGQgbm90IHNlbmQgY29tbWFuZCB0 byBiYWNrZ3JvdW5kIHBpcGU6ICVtIik7CiAJCQlleGl0KDEpOwogCQl9CiAKQEAgLTIwOTYs MjAgKzIwMTksMTcgQEAgQmFzZUJhY2t1cCh2b2lkKQogCQlyID0gd2FpdHBpZChiZ2NoaWxk LCAmc3RhdHVzLCAwKTsKIAkJaWYgKHIgPT0gKHBpZF90KSAtMSkKIAkJewotCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgd2FpdCBmb3IgY2hpbGQgcHJvY2VzczogJXNc biIpLAotCQkJCQlwcm9nbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IHdhaXQgZm9yIGNoaWxkIHByb2Nlc3M6ICVtIik7CiAJCQlleGl0KDEp OwogCQl9CiAJCWlmIChyICE9IGJnY2hpbGQpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBf KCIlczogY2hpbGQgJWQgZGllZCwgZXhwZWN0ZWQgJWRcbiIpLAotCQkJCQlwcm9nbmFtZSwg KGludCkgciwgKGludCkgYmdjaGlsZCk7CisJCQlwZ19sb2dfZXJyb3IoImNoaWxkICVkIGRp ZWQsIGV4cGVjdGVkICVkIiwgKGludCkgciwgKGludCkgYmdjaGlsZCk7CiAJCQlleGl0KDEp OwogCQl9CiAJCWlmIChzdGF0dXMgIT0gMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsICIl czogJXNcbiIsCi0JCQkJCXByb2duYW1lLCB3YWl0X3Jlc3VsdF90b19zdHIoc3RhdHVzKSk7 CisJCQlwZ19sb2dfZXJyb3IoIiVzIiwgd2FpdF9yZXN1bHRfdG9fc3RyKHN0YXR1cykpOwog CQkJZXhpdCgxKTsKIAkJfQogCQkvKiBFeGl0ZWQgbm9ybWFsbHksIHdlJ3JlIGhhcHB5ISAq LwpAQCAtMjEyMiw5ICsyMDQyLDggQEAgQmFzZUJhY2t1cCh2b2lkKQogCQkgKi8KIAkJaWYg KHNzY2FuZih4bG9nZW5kLCAiJVgvJVgiLCAmaGksICZsbykgIT0gMikKIAkJewotCQkJZnBy aW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBjb3VsZCBub3QgcGFyc2Ugd3JpdGUtYWhlYWQg bG9nIGxvY2F0aW9uIFwiJXNcIlxuIiksCi0JCQkJCXByb2duYW1lLCB4bG9nZW5kKTsKKwkJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IHBhcnNlIHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlv biBcIiVzXCIiLAorCQkJCQkJIHhsb2dlbmQpOwogCQkJZXhpdCgxKTsKIAkJfQogCQl4bG9n ZW5kcHRyID0gKCh1aW50NjQpIGhpKSA8PCAzMiB8IGxvOwpAQCAtMjEzNSwyMSArMjA1NCwx OSBAQCBCYXNlQmFja3VwKHZvaWQpCiAJCQlXQUlUX09CSkVDVF8wKQogCQl7CiAJCQlfZG9z bWFwZXJyKEdldExhc3RFcnJvcigpKTsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291 bGQgbm90IHdhaXQgZm9yIGNoaWxkIHRocmVhZDogJXNcbiIpLAotCQkJCQlwcm9nbmFtZSwg c3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHdhaXQgZm9y IGNoaWxkIHRocmVhZDogJW0iKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAkJaWYgKEdldEV4aXRD b2RlVGhyZWFkKChIQU5ETEUpIGJnY2hpbGRfaGFuZGxlLCAmc3RhdHVzKSA9PSAwKQogCQl7 CiAJCQlfZG9zbWFwZXJyKEdldExhc3RFcnJvcigpKTsKLQkJCWZwcmludGYoc3RkZXJyLCBf KCIlczogY291bGQgbm90IGdldCBjaGlsZCB0aHJlYWQgZXhpdCBzdGF0dXM6ICVzXG4iKSwK LQkJCQkJcHJvZ25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCBnZXQgY2hpbGQgdGhyZWFkIGV4aXQgc3RhdHVzOiAlbSIpOwogCQkJZXhpdCgx KTsKIAkJfQogCQlpZiAoc3RhdHVzICE9IDApCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBf KCIlczogY2hpbGQgdGhyZWFkIGV4aXRlZCB3aXRoIGVycm9yICV1XG4iKSwKLQkJCQkJcHJv Z25hbWUsICh1bnNpZ25lZCBpbnQpIHN0YXR1cyk7CisJCQlwZ19sb2dfZXJyb3IoImNoaWxk IHRocmVhZCBleGl0ZWQgd2l0aCBlcnJvciAldSIsCisJCQkJCQkgKHVuc2lnbmVkIGludCkg c3RhdHVzKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAkJLyogRXhpdGVkIG5vcm1hbGx5LCB3ZSdy ZSBoYXBweSAqLwpAQCAtMjE3NiwyMSArMjA5MywyMCBAQCBCYXNlQmFja3VwKHZvaWQpCiAJ aWYgKGRvX3N5bmMpCiAJewogCQlpZiAodmVyYm9zZSkKLQkJCWZwcmludGYoc3RkZXJyLAot CQkJCQlfKCIlczogc3luY2luZyBkYXRhIHRvIGRpc2sgLi4uXG4iKSwgcHJvZ25hbWUpOwor CQkJcGdfbG9nX2luZm8oInN5bmNpbmcgZGF0YSB0byBkaXNrIC4uLiIpOwogCQlpZiAoZm9y bWF0ID09ICd0JykKIAkJewogCQkJaWYgKHN0cmNtcChiYXNlZGlyLCAiLSIpICE9IDApCi0J CQkJKHZvaWQpIGZzeW5jX2ZuYW1lKGJhc2VkaXIsIHRydWUsIHByb2duYW1lKTsKKwkJCQko dm9pZCkgZnN5bmNfZm5hbWUoYmFzZWRpciwgdHJ1ZSk7CiAJCX0KIAkJZWxzZQogCQl7Ci0J CQkodm9pZCkgZnN5bmNfcGdkYXRhKGJhc2VkaXIsIHByb2duYW1lLCBzZXJ2ZXJWZXJzaW9u KTsKKwkJCSh2b2lkKSBmc3luY19wZ2RhdGEoYmFzZWRpciwgc2VydmVyVmVyc2lvbik7CiAJ CX0KIAl9CiAKIAlpZiAodmVyYm9zZSkKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBiYXNl IGJhY2t1cCBjb21wbGV0ZWRcbiIpLCBwcm9nbmFtZSk7CisJCXBnX2xvZ19pbmZvKCJiYXNl IGJhY2t1cCBjb21wbGV0ZWQiKTsKIH0KIAogCkBAIC0yMjMyLDYgKzIxNDgsNyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCWludAkJCW9wdGlvbl9pbmRleDsKIAorCXBn X2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKIAlwcm9nbmFtZSA9IGdldF9wcm9nbmFtZShhcmd2 WzBdKTsKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4o InBnX2Jhc2ViYWNrdXAiKSk7CiAKQEAgLTIyNzAsOSArMjE4Nyw4IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCQkJCQlmb3JtYXQgPSAndCc7CiAJCQkJZWxzZQogCQkJCXsK LQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJXygiJXM6IGludmFsaWQgb3V0cHV0IGZv cm1hdCBcIiVzXCIsIG11c3QgYmUgXCJwbGFpblwiIG9yIFwidGFyXCJcbiIpLAotCQkJCQkJ CXByb2duYW1lLCBvcHRhcmcpOworCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgb3V0cHV0 IGZvcm1hdCBcIiVzXCIsIG11c3QgYmUgXCJwbGFpblwiIG9yIFwidGFyXCJcbiIsCisJCQkJ CQkJCSBvcHRhcmcpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTIz MTUsOSArMjIzMSw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCX0KIAkJ CQllbHNlCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCQlfKCIlczogaW52 YWxpZCB3YWwtbWV0aG9kIG9wdGlvbiBcIiVzXCIsIG11c3QgYmUgXCJmZXRjaFwiLCBcInN0 cmVhbVwiLCBvciBcIm5vbmVcIlxuIiksCi0JCQkJCQkJcHJvZ25hbWUsIG9wdGFyZyk7CisJ CQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCB3YWwtbWV0aG9kIG9wdGlvbiBcIiVzXCIsIG11 c3QgYmUgXCJmZXRjaFwiLCBcInN0cmVhbVwiLCBvciBcIm5vbmVcIiIsCisJCQkJCQkJCSBv cHRhcmcpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTIzNDQsOCAr MjI1OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWNvbXByZXNzbGV2 ZWwgPSBhdG9pKG9wdGFyZyk7CiAJCQkJaWYgKGNvbXByZXNzbGV2ZWwgPCAwIHx8IGNvbXBy ZXNzbGV2ZWwgPiA5KQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZh bGlkIGNvbXByZXNzaW9uIGxldmVsIFwiJXNcIlxuIiksCi0JCQkJCQkJcHJvZ25hbWUsIG9w dGFyZyk7CisJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCBc IiVzXCJcbiIsIG9wdGFyZyk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCWJyZWFrOwpA QCAtMjM1Niw4ICsyMjcwLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJ CWZhc3RjaGVja3BvaW50ID0gZmFsc2U7CiAJCQkJZWxzZQogCQkJCXsKLQkJCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIGNoZWNrcG9pbnQgYXJndW1lbnQgXCIlc1wiLCBt dXN0IGJlIFwiZmFzdFwiIG9yIFwic3ByZWFkXCJcbiIpLAotCQkJCQkJCXByb2duYW1lLCBv cHRhcmcpOworCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgY2hlY2twb2ludCBhcmd1bWVu dCBcIiVzXCIsIG11c3QgYmUgXCJmYXN0XCIgb3IgXCJzcHJlYWRcIiIsCisJCQkJCQkJCSBv cHRhcmcpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTIzODMsOCAr MjI5Nyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCXN0YW5kYnlfbWVz c2FnZV90aW1lb3V0ID0gYXRvaShvcHRhcmcpICogMTAwMDsKIAkJCQlpZiAoc3RhbmRieV9t ZXNzYWdlX3RpbWVvdXQgPCAwKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBpbnZhbGlkIHN0YXR1cyBpbnRlcnZhbCBcIiVzXCJcbiIpLAotCQkJCQkJCXByb2duYW1l LCBvcHRhcmcpOworCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgc3RhdHVzIGludGVydmFs IFwiJXNcIiIsIG9wdGFyZyk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCWJyZWFrOwpA QCAtMjQxMyw5ICsyMzI2LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJICov CiAJaWYgKG9wdGluZCA8IGFyZ2MpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIl czogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKVxu IiksCi0JCQkJcHJvZ25hbWUsIGFyZ3Zbb3B0aW5kXSk7CisJCXBnX2xvZ19lcnJvcigidG9v IG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIsCisJCQkJ CSBhcmd2W29wdGluZF0pOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxw XCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQo MSk7CkBAIC0yNDI2LDcgKzIzMzgsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAkgKi8KIAlpZiAoYmFzZWRpciA9PSBOVUxMKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBubyB0YXJnZXQgZGlyZWN0b3J5IHNwZWNpZmllZFxuIiksIHByb2duYW1lKTsKKwkJ cGdfbG9nX2Vycm9yKCJubyB0YXJnZXQgZGlyZWN0b3J5IHNwZWNpZmllZCIpOwogCQlmcHJp bnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24u XG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CkBAIC0yNDM3LDkgKzIzNDksNyBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkgKi8KIAlpZiAoZm9ybWF0ID09ICdw JyAmJiBjb21wcmVzc2xldmVsICE9IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlf KCIlczogb25seSB0YXIgbW9kZSBiYWNrdXBzIGNhbiBiZSBjb21wcmVzc2VkXG4iKSwKLQkJ CQlwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigib25seSB0YXIgbW9kZSBiYWNrdXBzIGNh biBiZSBjb21wcmVzc2VkIik7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhl bHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCXByb2duYW1lKTsKIAkJZXhp dCgxKTsKQEAgLTI0NDcsOSArMjM1Nyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogCiAJaWYgKGZvcm1hdCA9PSAndCcgJiYgaW5jbHVkZXdhbCA9PSBTVFJFQU1fV0FMICYm IHN0cmNtcChiYXNlZGlyLCAiLSIpID09IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJ CQlfKCIlczogY2Fubm90IHN0cmVhbSB3cml0ZS1haGVhZCBsb2dzIGluIHRhciBtb2RlIHRv IHN0ZG91dFxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoImNhbm5vdCBz dHJlYW0gd3JpdGUtYWhlYWQgbG9ncyBpbiB0YXIgbW9kZSB0byBzdGRvdXQiKTsKIAkJZnBy aW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9u LlxuIiksCiAJCQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwpAQCAtMjQ1Nyw5ICsyMzY1LDcg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAocmVwbGljYXRpb25fc2xv dCAmJiBpbmNsdWRld2FsICE9IFNUUkVBTV9XQUwpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwK LQkJCQlfKCIlczogcmVwbGljYXRpb24gc2xvdHMgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFdB TCBzdHJlYW1pbmdcbiIpLAotCQkJCXByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJyZXBs aWNhdGlvbiBzbG90cyBjYW4gb25seSBiZSB1c2VkIHdpdGggV0FMIHN0cmVhbWluZyIpOwog CQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3Jt YXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CkBAIC0yNDY5LDkgKzIz NzUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAl7CiAJCWlmIChyZXBsaWNh dGlvbl9zbG90KQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IC0tbm8t c2xvdCBjYW5ub3QgYmUgdXNlZCB3aXRoIHNsb3QgbmFtZVxuIiksCi0JCQkJCXByb2duYW1l KTsKKwkJCXBnX2xvZ19lcnJvcigiLS1uby1zbG90IGNhbm5vdCBiZSB1c2VkIHdpdGggc2xv dCBuYW1lIik7CiAJCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9y IG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQkJcHJvZ25hbWUpOwogCQkJZXhpdCgxKTsK QEAgLTI0ODMsOSArMjM4Nyw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCXsK IAkJaWYgKCFyZXBsaWNhdGlvbl9zbG90KQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJ CQkJXygiJXM6ICVzIG5lZWRzIGEgc2xvdCB0byBiZSBzcGVjaWZpZWQgdXNpbmcgLS1zbG90 XG4iKSwKLQkJCQkJcHJvZ25hbWUsICItLWNyZWF0ZS1zbG90Iik7CisJCQlwZ19sb2dfZXJy b3IoIiVzIG5lZWRzIGEgc2xvdCB0byBiZSBzcGVjaWZpZWQgdXNpbmcgLS1zbG90IiwKKwkJ CQkJCSAiLS1jcmVhdGUtc2xvdCIpOwogCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVz IC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJCXByb2duYW1lKTsK IAkJCWV4aXQoMSk7CkBAIC0yNDkzLDkgKzIzOTYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAogCQlpZiAobm9fc2xvdCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0J CQkJCV8oIiVzOiAtLWNyZWF0ZS1zbG90IGFuZCAtLW5vLXNsb3QgYXJlIGluY29tcGF0aWJs ZSBvcHRpb25zXG4iKSwKLQkJCQkJcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCItLWNy ZWF0ZS1zbG90IGFuZCAtLW5vLXNsb3QgYXJlIGluY29tcGF0aWJsZSBvcHRpb25zIik7CiAJ CQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3Jt YXRpb24uXG4iKSwKIAkJCQkJcHJvZ25hbWUpOwogCQkJZXhpdCgxKTsKQEAgLTI1MDYsOSAr MjQwNyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCXsKIAkJaWYgKGZvcm1h dCAhPSAncCcpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogV0FMIGRp cmVjdG9yeSBsb2NhdGlvbiBjYW4gb25seSBiZSBzcGVjaWZpZWQgaW4gcGxhaW4gbW9kZVxu IiksCi0JCQkJCXByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiV0FMIGRpcmVjdG9yeSBs b2NhdGlvbiBjYW4gb25seSBiZSBzcGVjaWZpZWQgaW4gcGxhaW4gbW9kZSIpOwogCQkJZnBy aW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9u LlxuIiksCiAJCQkJCXByb2duYW1lKTsKIAkJCWV4aXQoMSk7CkBAIC0yNTE4LDggKzI0MTcs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJY2Fub25pY2FsaXplX3BhdGgo eGxvZ19kaXIpOwogCQlpZiAoIWlzX2Fic29sdXRlX3BhdGgoeGxvZ19kaXIpKQogCQl7Ci0J CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IFdBTCBkaXJlY3RvcnkgbG9jYXRpb24gbXVzdCBi ZSAiCi0JCQkJCQkJICAiYW4gYWJzb2x1dGUgcGF0aFxuIiksIHByb2duYW1lKTsKKwkJCXBn X2xvZ19lcnJvcigiV0FMIGRpcmVjdG9yeSBsb2NhdGlvbiBtdXN0IGJlIGFuIGFic29sdXRl IHBhdGgiKTsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3Ig bW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCQlwcm9nbmFtZSk7CiAJCQlleGl0KDEpOwpA QCAtMjUyOSw5ICsyNDI3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAjaWZu ZGVmIEhBVkVfTElCWgogCWlmIChjb21wcmVzc2xldmVsICE9IDApCiAJewotCQlmcHJpbnRm KHN0ZGVyciwKLQkJCQlfKCIlczogdGhpcyBidWlsZCBkb2VzIG5vdCBzdXBwb3J0IGNvbXBy ZXNzaW9uXG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigidGhpcyBidWls ZCBkb2VzIG5vdCBzdXBwb3J0IGNvbXByZXNzaW9uIik7CiAJCWV4aXQoMSk7CiAJfQogI2Vu ZGlmCkBAIC0yNTg1LDEyICsyNDgxLDExIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogI2lmZGVmIEhBVkVfU1lNTElOSwogCQlpZiAoc3ltbGluayh4bG9nX2RpciwgbGlua2xv YykgIT0gMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY3Jl YXRlIHN5bWJvbGljIGxpbmsgXCIlc1wiOiAlc1xuIiksCi0JCQkJCXByb2duYW1lLCBsaW5r bG9jLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3Jl YXRlIHN5bWJvbGljIGxpbmsgXCIlc1wiOiAlbSIsIGxpbmtsb2MpOwogCQkJZXhpdCgxKTsK IAkJfQogI2Vsc2UKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBzeW1saW5rcyBhcmUgbm90 IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2df ZXJyb3IoInN5bWxpbmtzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iKTsK IAkJZXhpdCgxKTsKICNlbmRpZgogCQlmcmVlKGxpbmtsb2MpOwpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19iYXNlYmFja3VwL3BnX3JlY2VpdmV3YWwuYyBiL3NyYy9iaW4vcGdfYmFzZWJh Y2t1cC9wZ19yZWNlaXZld2FsLmMKaW5kZXggYWExMTRmMTU2My4uOGNmODdlNTg1MyAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX3JlY2VpdmV3YWwuYworKysgYi9z cmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfcmVjZWl2ZXdhbC5jCkBAIC0yMCw2ICsyMCw3IEBA CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgi CisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImxpYnBxLWZlLmgi CiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJnZXRvcHRf bG9uZy5oIgpAQCAtMTE0LDE2ICsxMTUsMTYgQEAgc3RvcF9zdHJlYW1pbmcoWExvZ1JlY1B0 ciB4bG9ncG9zLCB1aW50MzIgdGltZWxpbmUsIGJvb2wgc2VnbWVudF9maW5pc2hlZCkKIAog CS8qIHdlIGFzc3VtZSB0aGF0IHdlIGdldCBjYWxsZWQgb25jZSBhdCB0aGUgZW5kIG9mIGVh Y2ggc2VnbWVudCAqLwogCWlmICh2ZXJib3NlICYmIHNlZ21lbnRfZmluaXNoZWQpCi0JCWZw cmludGYoc3RkZXJyLCBfKCIlczogZmluaXNoZWQgc2VnbWVudCBhdCAlWC8lWCAodGltZWxp bmUgJXUpXG4iKSwKLQkJCQlwcm9nbmFtZSwgKHVpbnQzMikgKHhsb2dwb3MgPj4gMzIpLCAo dWludDMyKSB4bG9ncG9zLAotCQkJCXRpbWVsaW5lKTsKKwkJcGdfbG9nX2luZm8oImZpbmlz aGVkIHNlZ21lbnQgYXQgJVgvJVggKHRpbWVsaW5lICV1KSIsCisJCQkJCSh1aW50MzIpICh4 bG9ncG9zID4+IDMyKSwgKHVpbnQzMikgeGxvZ3BvcywKKwkJCQkJdGltZWxpbmUpOwogCiAJ aWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKGVuZHBvcykgJiYgZW5kcG9zIDwgeGxvZ3BvcykK IAl7CiAJCWlmICh2ZXJib3NlKQotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBzdG9wcGVk IGxvZyBzdHJlYW1pbmcgYXQgJVgvJVggKHRpbWVsaW5lICV1KVxuIiksCi0JCQkJCXByb2du YW1lLCAodWludDMyKSAoeGxvZ3BvcyA+PiAzMiksICh1aW50MzIpIHhsb2dwb3MsCi0JCQkJ CXRpbWVsaW5lKTsKKwkJCXBnX2xvZ19pbmZvKCJzdG9wcGVkIGxvZyBzdHJlYW1pbmcgYXQg JVgvJVggKHRpbWVsaW5lICV1KSIsCisJCQkJCQkodWludDMyKSAoeGxvZ3BvcyA+PiAzMiks ICh1aW50MzIpIHhsb2dwb3MsCisJCQkJCQl0aW1lbGluZSk7CiAJCXRpbWVfdG9fc3RvcCA9 IHRydWU7CiAJCXJldHVybiB0cnVlOwogCX0KQEAgLTEzNyw5ICsxMzgsOSBAQCBzdG9wX3N0 cmVhbWluZyhYTG9nUmVjUHRyIHhsb2dwb3MsIHVpbnQzMiB0aW1lbGluZSwgYm9vbCBzZWdt ZW50X2ZpbmlzaGVkKQogCSAqIHRpbWVsaW5lLCBidXQgaXQncyBjbG9zZSBlbm91Z2ggZm9y IHJlcG9ydGluZyBwdXJwb3Nlcy4KIAkgKi8KIAlpZiAodmVyYm9zZSAmJiBwcmV2dGltZWxp bmUgIT0gMCAmJiBwcmV2dGltZWxpbmUgIT0gdGltZWxpbmUpCi0JCWZwcmludGYoc3RkZXJy LCBfKCIlczogc3dpdGNoZWQgdG8gdGltZWxpbmUgJXUgYXQgJVgvJVhcbiIpLAotCQkJCXBy b2duYW1lLCB0aW1lbGluZSwKLQkJCQkodWludDMyKSAocHJldnBvcyA+PiAzMiksICh1aW50 MzIpIHByZXZwb3MpOworCQlwZ19sb2dfaW5mbygic3dpdGNoZWQgdG8gdGltZWxpbmUgJXUg YXQgJVgvJVgiLAorCQkJCQl0aW1lbGluZSwKKwkJCQkJKHVpbnQzMikgKHByZXZwb3MgPj4g MzIpLCAodWludDMyKSBwcmV2cG9zKTsKIAogCXByZXZ0aW1lbGluZSA9IHRpbWVsaW5lOwog CXByZXZwb3MgPSB4bG9ncG9zOwpAQCAtMTQ3LDggKzE0OCw3IEBAIHN0b3Bfc3RyZWFtaW5n KFhMb2dSZWNQdHIgeGxvZ3BvcywgdWludDMyIHRpbWVsaW5lLCBib29sIHNlZ21lbnRfZmlu aXNoZWQpCiAJaWYgKHRpbWVfdG9fc3RvcCkKIAl7CiAJCWlmICh2ZXJib3NlKQotCQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiByZWNlaXZlZCBpbnRlcnJ1cHQgc2lnbmFsLCBleGl0aW5n XG4iKSwKLQkJCQkJcHJvZ25hbWUpOworCQkJcGdfbG9nX2luZm8oInJlY2VpdmVkIGludGVy cnVwdCBzaWduYWwsIGV4aXRpbmciKTsKIAkJcmV0dXJuIHRydWU7CiAJfQogCXJldHVybiBm YWxzZTsKQEAgLTE2Nyw4ICsxNjcsNyBAQCBnZXRfZGVzdGluYXRpb25fZGlyKGNoYXIgKmRl c3RfZm9sZGVyKQogCWRpciA9IG9wZW5kaXIoZGVzdF9mb2xkZXIpOwogCWlmIChkaXIgPT0g TlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IG9wZW4gZGly ZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBiYXNlZGlyLCBzdHJlcnJv cihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBc IiVzXCI6ICVtIiwgYmFzZWRpcik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0xODUsOCArMTg0 LDcgQEAgY2xvc2VfZGVzdGluYXRpb25fZGlyKERJUiAqZGVzdF9kaXIsIGNoYXIgKmRlc3Rf Zm9sZGVyKQogCUFzc2VydChkZXN0X2RpciAhPSBOVUxMICYmIGRlc3RfZm9sZGVyICE9IE5V TEwpOwogCWlmIChjbG9zZWRpcihkZXN0X2RpcikpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNvdWxkIG5vdCBjbG9zZSBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJ cHJvZ25hbWUsIGRlc3RfZm9sZGVyLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCBjbG9zZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIGRlc3RfZm9sZGVy KTsKIAkJZXhpdCgxKTsKIAl9CiB9CkBAIC0yNjYsMTYgKzI2NCwxNCBAQCBGaW5kU3RyZWFt aW5nU3RhcnQodWludDMyICp0bGkpCiAJCQlzbnByaW50ZihmdWxscGF0aCwgc2l6ZW9mKGZ1 bGxwYXRoKSwgIiVzLyVzIiwgYmFzZWRpciwgZGlyZW50LT5kX25hbWUpOwogCQkJaWYgKHN0 YXQoZnVsbHBhdGgsICZzdGF0YnVmKSAhPSAwKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJy LCBfKCIlczogY291bGQgbm90IHN0YXQgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXBy b2duYW1lLCBmdWxscGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3Io ImNvdWxkIG5vdCBzdGF0IGZpbGUgXCIlc1wiOiAlbSIsIGZ1bGxwYXRoKTsKIAkJCQlleGl0 KDEpOwogCQkJfQogCiAJCQlpZiAoc3RhdGJ1Zi5zdF9zaXplICE9IFdhbFNlZ1N6KQogCQkJ ewotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJXygiJXM6IHNlZ21lbnQgZmlsZSBcIiVz XCIgaGFzIGluY29ycmVjdCBzaXplICVkLCBza2lwcGluZ1xuIiksCi0JCQkJCQlwcm9nbmFt ZSwgZGlyZW50LT5kX25hbWUsIChpbnQpIHN0YXRidWYuc3Rfc2l6ZSk7CisJCQkJcGdfbG9n X3dhcm5pbmcoInNlZ21lbnQgZmlsZSBcIiVzXCIgaGFzIGluY29ycmVjdCBzaXplICVkLCBz a2lwcGluZyIsCisJCQkJCQkJICAgZGlyZW50LT5kX25hbWUsIChpbnQpIHN0YXRidWYuc3Rf c2l6ZSk7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCX0KQEAgLTI5MiwyNSArMjg4LDI1IEBA IEZpbmRTdHJlYW1pbmdTdGFydCh1aW50MzIgKnRsaSkKIAkJCWZkID0gb3BlbihmdWxscGF0 aCwgT19SRE9OTFkgfCBQR19CSU5BUlksIDApOwogCQkJaWYgKGZkIDwgMCkKIAkJCXsKLQkJ CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIGNvbXByZXNzZWQgZmls ZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBmdWxscGF0aCwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGNvbXByZXNzZWQg ZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkgZnVsbHBhdGgpOwogCQkJCWV4aXQoMSk7CiAJ CQl9CiAJCQlpZiAobHNlZWsoZmQsIChvZmZfdCkgKC00KSwgU0VFS19FTkQpIDwgMCkKIAkJ CXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBzZWVrIGluIGNvbXBy ZXNzZWQgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBmdWxscGF0aCwg c3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBzZWVrIGlu IGNvbXByZXNzZWQgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkgZnVsbHBhdGgpOwogCQkJ CWV4aXQoMSk7CiAJCQl9CiAJCQlyID0gcmVhZChmZCwgKGNoYXIgKikgYnVmLCBzaXplb2Yo YnVmKSk7CiAJCQlpZiAociAhPSBzaXplb2YoYnVmKSkKIAkJCXsKIAkJCQlpZiAociA8IDAp Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQgY29tcHJlc3Nl ZCBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCQkJCXByb2duYW1lLCBmdWxscGF0aCwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBjb21w cmVzc2VkIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCQkJCSBmdWxscGF0aCk7CiAJCQkJZWxz ZQotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZWFkIGNvbXByZXNz ZWQgZmlsZSBcIiVzXCI6IHJlYWQgJWQgb2YgJXp1XG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwg ZnVsbHBhdGgsIHIsIHNpemVvZihidWYpKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBu b3QgcmVhZCBjb21wcmVzc2VkIGZpbGUgXCIlc1wiOiByZWFkICVkIG9mICV6dSIsCisJCQkJ CQkJCSBmdWxscGF0aCwgciwgc2l6ZW9mKGJ1ZikpOwogCQkJCWV4aXQoMSk7CiAJCQl9CiAK QEAgLTMyMCw5ICszMTYsOCBAQCBGaW5kU3RyZWFtaW5nU3RhcnQodWludDMyICp0bGkpCiAK IAkJCWlmIChieXRlc19vdXQgIT0gV2FsU2VnU3opCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRl cnIsCi0JCQkJCQlfKCIlczogY29tcHJlc3NlZCBzZWdtZW50IGZpbGUgXCIlc1wiIGhhcyBp bmNvcnJlY3QgdW5jb21wcmVzc2VkIHNpemUgJWQsIHNraXBwaW5nXG4iKSwKLQkJCQkJCXBy b2duYW1lLCBkaXJlbnQtPmRfbmFtZSwgYnl0ZXNfb3V0KTsKKwkJCQlwZ19sb2dfd2Fybmlu ZygiY29tcHJlc3NlZCBzZWdtZW50IGZpbGUgXCIlc1wiIGhhcyBpbmNvcnJlY3QgdW5jb21w cmVzc2VkIHNpemUgJWQsIHNraXBwaW5nIiwKKwkJCQkJCQkgICBkaXJlbnQtPmRfbmFtZSwg Ynl0ZXNfb3V0KTsKIAkJCQljb250aW51ZTsKIAkJCX0KIAkJfQpAQCAtMzQwLDggKzMzNSw3 IEBAIEZpbmRTdHJlYW1pbmdTdGFydCh1aW50MzIgKnRsaSkKIAogCWlmIChlcnJubykKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQgZGlyZWN0b3J5IFwi JXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBiYXNlZGlyLCBzdHJlcnJvcihlcnJubykp OworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6ICVt IiwgYmFzZWRpcik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC00MjYsMTAgKzQyMCw5IEBAIFN0 cmVhbUxvZyh2b2lkKQogCSAqIFN0YXJ0IHRoZSByZXBsaWNhdGlvbgogCSAqLwogCWlmICh2 ZXJib3NlKQotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogc3RhcnRpbmcgbG9nIHN0 cmVhbWluZyBhdCAlWC8lWCAodGltZWxpbmUgJXUpXG4iKSwKLQkJCQlwcm9nbmFtZSwgKHVp bnQzMikgKHN0cmVhbS5zdGFydHBvcyA+PiAzMiksICh1aW50MzIpIHN0cmVhbS5zdGFydHBv cywKLQkJCQlzdHJlYW0udGltZWxpbmUpOworCQlwZ19sb2dfaW5mbygic3RhcnRpbmcgbG9n IHN0cmVhbWluZyBhdCAlWC8lWCAodGltZWxpbmUgJXUpIiwKKwkJCQkJKHVpbnQzMikgKHN0 cmVhbS5zdGFydHBvcyA+PiAzMiksICh1aW50MzIpIHN0cmVhbS5zdGFydHBvcywKKwkJCQkJ c3RyZWFtLnRpbWVsaW5lKTsKIAogCXN0cmVhbS5zdHJlYW1fc3RvcCA9IHN0b3Bfc3RyZWFt aW5nOwogCXN0cmVhbS5zdG9wX3NvY2tldCA9IFBHSU5WQUxJRF9TT0NLRVQ7CkBAIC00NDYs OSArNDM5LDcgQEAgU3RyZWFtTG9nKHZvaWQpCiAKIAlpZiAoIXN0cmVhbS53YWxtZXRob2Qt PmZpbmlzaCgpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IGNvdWxkIG5v dCBmaW5pc2ggd3JpdGluZyBXQUwgZmlsZXM6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2luZm8oImNvdWxkIG5vdCBmaW5pc2ggd3JpdGlu ZyBXQUwgZmlsZXM6ICVtIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTUwOCw2ICs0OTksNyBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAl1aW50MzIJCWhpLAogCQkJCWxvOwog CisJcGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOwogCXByb2duYW1lID0gZ2V0X3Byb2duYW1l KGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlswXSwgUEdfVEVYVERP TUFJTigicGdfYmFzZWJhY2t1cCIpKTsKIApAQCAtNTQzLDggKzUzNSw3IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJY2FzZSAncCc6CiAJCQkJaWYgKGF0b2kob3B0YXJn KSA8PSAwKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIHBv cnQgbnVtYmVyIFwiJXNcIlxuIiksCi0JCQkJCQkJcHJvZ25hbWUsIG9wdGFyZyk7CisJCQkJ CXBnX2xvZ19lcnJvcigiaW52YWxpZCBwb3J0IG51bWJlciBcIiVzXCIiLCBvcHRhcmcpOwog CQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlkYnBvcnQgPSBwZ19zdHJkdXAob3B0YXJnKTsK QEAgLTU2Miw4ICs1NTMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQlz dGFuZGJ5X21lc3NhZ2VfdGltZW91dCA9IGF0b2kob3B0YXJnKSAqIDEwMDA7CiAJCQkJaWYg KHN0YW5kYnlfbWVzc2FnZV90aW1lb3V0IDwgMCkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogaW52YWxpZCBzdGF0dXMgaW50ZXJ2YWwgXCIlc1wiXG4iKSwKLQkJCQkJ CQlwcm9nbmFtZSwgb3B0YXJnKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIHN0YXR1 cyBpbnRlcnZhbCBcIiVzXCIiLCBvcHRhcmcpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJ CQlicmVhazsKQEAgLTU3Myw5ICs1NjMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKIAkJCWNhc2UgJ0UnOgogCQkJCWlmIChzc2NhbmYob3B0YXJnLCAiJVgvJVgiLCAmaGks ICZsbykgIT0gMikKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJCV8oIiVz OiBjb3VsZCBub3QgcGFyc2UgZW5kIHBvc2l0aW9uIFwiJXNcIlxuIiksCi0JCQkJCQkJcHJv Z25hbWUsIG9wdGFyZyk7CisJCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHBhcnNlIGVu ZCBwb3NpdGlvbiBcIiVzXCIiLCBvcHRhcmcpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJ CQllbmRwb3MgPSAoKHVpbnQ2NCkgaGkpIDw8IDMyIHwgbG87CkBAIC01OTAsOCArNTc4LDcg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJY29tcHJlc3NsZXZlbCA9IGF0 b2kob3B0YXJnKTsKIAkJCQlpZiAoY29tcHJlc3NsZXZlbCA8IDAgfHwgY29tcHJlc3NsZXZl bCA+IDkpCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGludmFsaWQgY29t cHJlc3Npb24gbGV2ZWwgXCIlc1wiXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwgb3B0YXJnKTsK KwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsIFwiJXNcIiIs IG9wdGFyZyk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAtNjI3LDkg KzYxNCw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCSAqLwogCWlmIChvcHRp bmQgPCBhcmdjKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IHRvbyBtYW55 IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIilcbiIpLAotCQkJCXBy b2duYW1lLCBhcmd2W29wdGluZF0pOworCQlwZ19sb2dfZXJyb3IoInRvbyBtYW55IGNvbW1h bmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIikiLAorCQkJCQkgYXJndltvcHRp bmRdKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3Jl IGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwpAQCAtNjM3 LDcgKzYyMyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKGRvX2Ry b3Bfc2xvdCAmJiBkb19jcmVhdGVfc2xvdCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIl czogY2Fubm90IHVzZSAtLWNyZWF0ZS1zbG90IHRvZ2V0aGVyIHdpdGggLS1kcm9wLXNsb3Rc biIpLCBwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigiY2Fubm90IHVzZSAtLWNyZWF0ZS1z bG90IHRvZ2V0aGVyIHdpdGggLS1kcm9wLXNsb3QiKTsKIAkJZnByaW50ZihzdGRlcnIsIF8o IlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJv Z25hbWUpOwogCQlleGl0KDEpOwpAQCAtNjQ2LDggKzYzMiw4IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCWlmIChyZXBsaWNhdGlvbl9zbG90ID09IE5VTEwgJiYgKGRvX2Ry b3Bfc2xvdCB8fCBkb19jcmVhdGVfc2xvdCkpCiAJewogCQkvKiB0cmFuc2xhdG9yOiBzZWNv bmQgJXMgaXMgYW4gb3B0aW9uIG5hbWUgKi8KLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiAl cyBuZWVkcyBhIHNsb3QgdG8gYmUgc3BlY2lmaWVkIHVzaW5nIC0tc2xvdFxuIiksIHByb2du YW1lLAotCQkJCWRvX2Ryb3Bfc2xvdCA/ICItLWRyb3Atc2xvdCIgOiAiLS1jcmVhdGUtc2xv dCIpOworCQlwZ19sb2dfZXJyb3IoIiVzIG5lZWRzIGEgc2xvdCB0byBiZSBzcGVjaWZpZWQg dXNpbmcgLS1zbG90IiwKKwkJCQkJIGRvX2Ryb3Bfc2xvdCA/ICItLWRyb3Atc2xvdCIgOiAi LS1jcmVhdGUtc2xvdCIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxw XCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQo MSk7CkBAIC02NTUsNyArNjQxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAK IAlpZiAoc3luY2hyb25vdXMgJiYgIWRvX3N5bmMpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNhbm5vdCB1c2UgLS1zeW5jaHJvbm91cyB0b2dldGhlciB3aXRoIC0tbm8tc3lu Y1xuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgdXNlIC0tc3luY2hy b25vdXMgdG9nZXRoZXIgd2l0aCAtLW5vLXN5bmMiKTsKIAkJZnByaW50ZihzdGRlcnIsIF8o IlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJv Z25hbWUpOwogCQlleGl0KDEpOwpAQCAtNjY2LDcgKzY1Miw3IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCSAqLwogCWlmIChiYXNlZGlyID09IE5VTEwgJiYgIWRvX2Ryb3Bf c2xvdCAmJiAhZG9fY3JlYXRlX3Nsb3QpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IG5vIHRhcmdldCBkaXJlY3Rvcnkgc3BlY2lmaWVkXG4iKSwgcHJvZ25hbWUpOworCQlwZ19s b2dfZXJyb3IoIm5vIHRhcmdldCBkaXJlY3Rvcnkgc3BlY2lmaWVkIik7CiAJCWZwcmludGYo c3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIp LAogCQkJCXByb2duYW1lKTsKIAkJZXhpdCgxKTsKQEAgLTY3NSw5ICs2NjEsNyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKICNpZm5kZWYgSEFWRV9MSUJaCiAJaWYgKGNvbXBy ZXNzbGV2ZWwgIT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiB0aGlz IGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgY29tcHJlc3Npb25cbiIpLAotCQkJCXByb2duYW1l KTsKKwkJcGdfbG9nX2Vycm9yKCJ0aGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgY29tcHJl c3Npb24iKTsKIAkJZXhpdCgxKTsKIAl9CiAjZW5kaWYKQEAgLTczMyw5ICs3MTcsOCBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkgKi8KIAlpZiAoZGJfbmFtZSkKIAl7Ci0J CWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiByZXBsaWNhdGlvbiBjb25uZWN0aW9uIHVz aW5nIHNsb3QgXCIlc1wiIGlzIHVuZXhwZWN0ZWRseSBkYXRhYmFzZSBzcGVjaWZpY1xuIiks Ci0JCQkJcHJvZ25hbWUsIHJlcGxpY2F0aW9uX3Nsb3QpOworCQlwZ19sb2dfZXJyb3IoInJl cGxpY2F0aW9uIGNvbm5lY3Rpb24gdXNpbmcgc2xvdCBcIiVzXCIgaXMgdW5leHBlY3RlZGx5 IGRhdGFiYXNlIHNwZWNpZmljIiwKKwkJCQkJIHJlcGxpY2F0aW9uX3Nsb3QpOwogCQlleGl0 KDEpOwogCX0KIApAQCAtNzQ1LDkgKzcyOCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCWlmIChkb19kcm9wX3Nsb3QpCiAJewogCQlpZiAodmVyYm9zZSkKLQkJCWZwcmlu dGYoc3RkZXJyLAotCQkJCQlfKCIlczogZHJvcHBpbmcgcmVwbGljYXRpb24gc2xvdCBcIiVz XCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgcmVwbGljYXRpb25fc2xvdCk7CisJCQlwZ19sb2df aW5mbygiZHJvcHBpbmcgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLAlyZXBsaWNhdGlvbl9z bG90KTsKIAogCQlpZiAoIURyb3BSZXBsaWNhdGlvblNsb3QoY29ubiwgcmVwbGljYXRpb25f c2xvdCkpCiAJCQlleGl0KDEpOwpAQCAtNzU4LDkgKzczOSw3IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCWlmIChkb19jcmVhdGVfc2xvdCkKIAl7CiAJCWlmICh2ZXJib3Nl KQotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBjcmVhdGluZyByZXBsaWNhdGlv biBzbG90IFwiJXNcIlxuIiksCi0JCQkJCXByb2duYW1lLCByZXBsaWNhdGlvbl9zbG90KTsK KwkJCXBnX2xvZ19pbmZvKCJjcmVhdGluZyByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIsIHJl cGxpY2F0aW9uX3Nsb3QpOwogCiAJCWlmICghQ3JlYXRlUmVwbGljYXRpb25TbG90KGNvbm4s IHJlcGxpY2F0aW9uX3Nsb3QsIE5VTEwsIGZhbHNlLCB0cnVlLCBmYWxzZSwKIAkJCQkJCQkJ ICAgc2xvdF9leGlzdHNfb2spKQpAQCAtNzg2LDE1ICs3NjUsMTQgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAJCX0KIAkJZWxzZSBpZiAobm9sb29wKQogCQl7Ci0JCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IGRpc2Nvbm5lY3RlZFxuIiksIHByb2duYW1lKTsKKwkJCXBn X2xvZ19lcnJvcigiZGlzY29ubmVjdGVkIik7CiAJCQlleGl0KDEpOwogCQl9CiAJCWVsc2UK IAkJewotCQkJZnByaW50ZihzdGRlcnIsCiAJCQkvKiB0cmFuc2xhdG9yOiBjaGVjayBzb3Vy Y2UgZm9yIHZhbHVlIGZvciAlZCAqLwotCQkJCQlfKCIlczogZGlzY29ubmVjdGVkOyB3YWl0 aW5nICVkIHNlY29uZHMgdG8gdHJ5IGFnYWluXG4iKSwKLQkJCQkJcHJvZ25hbWUsIFJFQ09O TkVDVF9TTEVFUF9USU1FKTsKKwkJCXBnX2xvZ19pbmZvKCJkaXNjb25uZWN0ZWQ7IHdhaXRp bmcgJWQgc2Vjb25kcyB0byB0cnkgYWdhaW4iLAorCQkJCQkJUkVDT05ORUNUX1NMRUVQX1RJ TUUpOwogCQkJcGdfdXNsZWVwKFJFQ09OTkVDVF9TTEVFUF9USU1FICogMTAwMDAwMCk7CiAJ CX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfcmVjdmxvZ2lj YWwuYyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19yZWN2bG9naWNhbC5jCmluZGV4IDEw NDI5YTUyOWQuLjM0YWZkNDNjZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1 cC9wZ19yZWN2bG9naWNhbC5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19yZWN2 bG9naWNhbC5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50 ZXJuYWwuaCIKICNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCiAjaW5jbHVkZSAiY29t bW9uL2ZlX21lbXV0aWxzLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2lu Y2x1ZGUgImdldG9wdF9sb25nLmgiCiAjaW5jbHVkZSAibGlicHEtZmUuaCIKICNpbmNsdWRl ICJsaWJwcS9wcXNpZ25hbC5oIgpAQCAtMTMxLDEyICsxMzIsMTAgQEAgc2VuZEZlZWRiYWNr KFBHY29ubiAqY29ubiwgVGltZXN0YW1wVHogbm93LCBib29sIGZvcmNlLCBib29sIHJlcGx5 UmVxdWVzdGVkKQogCQlyZXR1cm4gdHJ1ZTsKIAogCWlmICh2ZXJib3NlKQotCQlmcHJpbnRm KHN0ZGVyciwKLQkJCQlfKCIlczogY29uZmlybWluZyB3cml0ZSB1cCB0byAlWC8lWCwgZmx1 c2ggdG8gJVgvJVggKHNsb3QgJXMpXG4iKSwKLQkJCQlwcm9nbmFtZSwKLQkJCQkodWludDMy KSAob3V0cHV0X3dyaXR0ZW5fbHNuID4+IDMyKSwgKHVpbnQzMikgb3V0cHV0X3dyaXR0ZW5f bHNuLAotCQkJCSh1aW50MzIpIChvdXRwdXRfZnN5bmNfbHNuID4+IDMyKSwgKHVpbnQzMikg b3V0cHV0X2ZzeW5jX2xzbiwKLQkJCQlyZXBsaWNhdGlvbl9zbG90KTsKKwkJcGdfbG9nX2lu Zm8oImNvbmZpcm1pbmcgd3JpdGUgdXAgdG8gJVgvJVgsIGZsdXNoIHRvICVYLyVYIChzbG90 ICVzKSIsCisJCQkJCSh1aW50MzIpIChvdXRwdXRfd3JpdHRlbl9sc24gPj4gMzIpLCAodWlu dDMyKSBvdXRwdXRfd3JpdHRlbl9sc24sCisJCQkJCSh1aW50MzIpIChvdXRwdXRfZnN5bmNf bHNuID4+IDMyKSwgKHVpbnQzMikgb3V0cHV0X2ZzeW5jX2xzbiwKKwkJCQkJcmVwbGljYXRp b25fc2xvdCk7CiAKIAlyZXBseWJ1ZltsZW5dID0gJ3InOwogCWxlbiArPSAxOwpAQCAtMTU3 LDggKzE1Niw4IEBAIHNlbmRGZWVkYmFjayhQR2Nvbm4gKmNvbm4sIFRpbWVzdGFtcFR6IG5v dywgYm9vbCBmb3JjZSwgYm9vbCByZXBseVJlcXVlc3RlZCkKIAogCWlmIChQUXB1dENvcHlE YXRhKGNvbm4sIHJlcGx5YnVmLCBsZW4pIDw9IDAgfHwgUFFmbHVzaChjb25uKSkKIAl7Ci0J CWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHNlbmQgZmVlZGJhY2sgcGFja2V0 OiAlcyIpLAotCQkJCXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xv Z19lcnJvcigiY291bGQgbm90IHNlbmQgZmVlZGJhY2sgcGFja2V0OiAlcyIsCisJCQkJCSBQ UWVycm9yTWVzc2FnZShjb25uKSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTE5Myw5 ICsxOTIsNyBAQCBPdXRwdXRGc3luYyhUaW1lc3RhbXBUeiBub3cpCiAKIAlpZiAoZnN5bmMo b3V0ZmQpICE9IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogY291bGQg bm90IGZzeW5jIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIG91dGZpbGUs IHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGZzeW5jIGZp bGUgXCIlc1wiOiAlbSIsIG91dGZpbGUpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC0y MzIsMTAgKzIyOSw5IEBAIFN0cmVhbUxvZ2ljYWxMb2codm9pZCkKIAkgKiBTdGFydCB0aGUg cmVwbGljYXRpb24KIAkgKi8KIAlpZiAodmVyYm9zZSkKLQkJZnByaW50ZihzdGRlcnIsCi0J CQkJXygiJXM6IHN0YXJ0aW5nIGxvZyBzdHJlYW1pbmcgYXQgJVgvJVggKHNsb3QgJXMpXG4i KSwKLQkJCQlwcm9nbmFtZSwgKHVpbnQzMikgKHN0YXJ0cG9zID4+IDMyKSwgKHVpbnQzMikg c3RhcnRwb3MsCi0JCQkJcmVwbGljYXRpb25fc2xvdCk7CisJCXBnX2xvZ19pbmZvKCJzdGFy dGluZyBsb2cgc3RyZWFtaW5nIGF0ICVYLyVYIChzbG90ICVzKSIsCisJCQkJCSh1aW50MzIp IChzdGFydHBvcyA+PiAzMiksICh1aW50MzIpIHN0YXJ0cG9zLAorCQkJCQlyZXBsaWNhdGlv bl9zbG90KTsKIAogCS8qIEluaXRpYXRlIHRoZSByZXBsaWNhdGlvbiBzdHJlYW0gYXQgc3Bl Y2lmaWVkIGxvY2F0aW9uICovCiAJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJTVEFSVF9S RVBMSUNBVElPTiBTTE9UIFwiJXNcIiBMT0dJQ0FMICVYLyVYIiwKQEAgLTI2NSw4ICsyNjEs OCBAQCBTdHJlYW1Mb2dpY2FsTG9nKHZvaWQpCiAJcmVzID0gUFFleGVjKGNvbm4sIHF1ZXJ5 LT5kYXRhKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT1BZX0JPVEgp CiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0 aW9uIGNvbW1hbmQgXCIlc1wiOiAlcyIpLAotCQkJCXByb2duYW1lLCBxdWVyeS0+ZGF0YSwg UFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90 IHNlbmQgcmVwbGljYXRpb24gY29tbWFuZCBcIiVzXCI6ICVzIiwKKwkJCQkJIHF1ZXJ5LT5k YXRhLCBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKIAkJUFFjbGVhcihyZXMpOwogCQln b3RvIGVycm9yOwogCX0KQEAgLTI3NCw5ICsyNzAsNyBAQCBTdHJlYW1Mb2dpY2FsTG9nKHZv aWQpCiAJcmVzZXRQUUV4cEJ1ZmZlcihxdWVyeSk7CiAKIAlpZiAodmVyYm9zZSkKLQkJZnBy aW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IHN0cmVhbWluZyBpbml0aWF0ZWRcbiIpLAotCQkJ CXByb2duYW1lKTsKKwkJcGdfbG9nX2luZm8oInN0cmVhbWluZyBpbml0aWF0ZWQiKTsKIAog CXdoaWxlICghdGltZV90b19hYm9ydCkKIAl7CkBAIC0zNDAsMTYgKzMzNCwxMiBAQCBTdHJl YW1Mb2dpY2FsTG9nKHZvaWQpCiAJCQkJCQkJIFNfSVJVU1IgfCBTX0lXVVNSKTsKIAkJCWlm IChvdXRmZCA9PSAtMSkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCV8oIiVz OiBjb3VsZCBub3Qgb3BlbiBsb2cgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2du YW1lLCBvdXRmaWxlLCBzdHJlcnJvcihlcnJubykpOworCQkJCXBnX2xvZ19lcnJvcigiY291 bGQgbm90IG9wZW4gbG9nIGZpbGUgXCIlc1wiOiAlbSIsIG91dGZpbGUpOwogCQkJCWdvdG8g ZXJyb3I7CiAJCQl9CiAKIAkJCWlmIChmc3RhdChvdXRmZCwgJnN0YXRidWYpICE9IDApCi0J CQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQlfKCIlczogY291bGQgbm90IHN0YXQgZmlsZSBc IiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2duYW1lLCBvdXRmaWxlLCBzdHJlcnJvcihlcnJu bykpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHN0YXQgZmlsZSBcIiVzXCI6ICVt Iiwgb3V0ZmlsZSk7CiAKIAkJCW91dHB1dF9pc2ZpbGUgPSBTX0lTUkVHKHN0YXRidWYuc3Rf bW9kZSkgJiYgIWlzYXR0eShvdXRmZCk7CiAJCX0KQEAgLTM3MCw5ICszNjAsNyBAQCBTdHJl YW1Mb2dpY2FsTG9nKHZvaWQpCiAKIAkJCWlmIChQUXNvY2tldChjb25uKSA8IDApCiAJCQl7 Ci0JCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQlfKCIlczogaW52YWxpZCBzb2NrZXQ6ICVz IiksCi0JCQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQkJCXBnX2xv Z19lcnJvcigiaW52YWxpZCBzb2NrZXQ6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwog CQkJCWdvdG8gZXJyb3I7CiAJCQl9CiAKQEAgLTQyNSwxNyArNDEzLDE1IEBAIFN0cmVhbUxv Z2ljYWxMb2codm9pZCkKIAkJCX0KIAkJCWVsc2UgaWYgKHIgPCAwKQogCQkJewotCQkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogc2VsZWN0KCkgZmFpbGVkOiAlc1xuIiksCi0JCQkJCQlw cm9nbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoInNlbGVjdCgp IGZhaWxlZDogJW0iKTsKIAkJCQlnb3RvIGVycm9yOwogCQkJfQogCiAJCQkvKiBFbHNlIHRo ZXJlIGlzIGFjdHVhbGx5IGRhdGEgb24gdGhlIHNvY2tldCAqLwogCQkJaWYgKFBRY29uc3Vt ZUlucHV0KGNvbm4pID09IDApCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQlf KCIlczogY291bGQgbm90IHJlY2VpdmUgZGF0YSBmcm9tIFdBTCBzdHJlYW06ICVzIiksCi0J CQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQkJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IHJlY2VpdmUgZGF0YSBmcm9tIFdBTCBzdHJlYW06ICVzIiwKKwkJCQkJ CQkgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQkJCWdvdG8gZXJyb3I7CiAJCQl9CiAJCQlj b250aW51ZTsKQEAgLTQ0OCw4ICs0MzQsOCBAQCBTdHJlYW1Mb2dpY2FsTG9nKHZvaWQpCiAJ CS8qIEZhaWx1cmUgd2hpbGUgcmVhZGluZyB0aGUgY29weSBzdHJlYW0gKi8KIAkJaWYgKHIg PT0gLTIpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQg Q09QWSBkYXRhOiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikp OworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBDT1BZIGRhdGE6ICVzIiwKKwkJ CQkJCSBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCQlnb3RvIGVycm9yOwogCQl9CiAKQEAg LTQ3Niw4ICs0NjIsNyBAQCBTdHJlYW1Mb2dpY2FsTG9nKHZvaWQpCiAKIAkJCWlmIChyIDwg cG9zICsgMSkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHN0cmVhbWluZyBo ZWFkZXIgdG9vIHNtYWxsOiAlZFxuIiksCi0JCQkJCQlwcm9nbmFtZSwgcik7CisJCQkJcGdf bG9nX2Vycm9yKCJzdHJlYW1pbmcgaGVhZGVyIHRvbyBzbWFsbDogJWQiLCByKTsKIAkJCQln b3RvIGVycm9yOwogCQkJfQogCQkJcmVwbHlSZXF1ZXN0ZWQgPSBjb3B5YnVmW3Bvc107CkBA IC01MTIsOCArNDk3LDggQEAgU3RyZWFtTG9naWNhbExvZyh2b2lkKQogCQl9CiAJCWVsc2Ug aWYgKGNvcHlidWZbMF0gIT0gJ3cnKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IHVucmVjb2duaXplZCBzdHJlYW1pbmcgaGVhZGVyOiBcIiVjXCJcbiIpLAotCQkJCQlwcm9n bmFtZSwgY29weWJ1ZlswXSk7CisJCQlwZ19sb2dfZXJyb3IoInVucmVjb2duaXplZCBzdHJl YW1pbmcgaGVhZGVyOiBcIiVjXCIiLAorCQkJCQkJIGNvcHlidWZbMF0pOwogCQkJZ290byBl cnJvcjsKIAkJfQogCkBAIC01MjgsOCArNTEzLDcgQEAgU3RyZWFtTG9naWNhbExvZyh2b2lk KQogCQloZHJfbGVuICs9IDg7CQkJLyogc2VuZFRpbWUgKi8KIAkJaWYgKHIgPCBoZHJfbGVu ICsgMSkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBzdHJlYW1pbmcgaGVhZGVy IHRvbyBzbWFsbDogJWRcbiIpLAotCQkJCQlwcm9nbmFtZSwgcik7CisJCQlwZ19sb2dfZXJy b3IoInN0cmVhbWluZyBoZWFkZXIgdG9vIHNtYWxsOiAlZCIsIHIpOwogCQkJZ290byBlcnJv cjsKIAkJfQogCkBAIC01NjcsMTAgKzU1MSw4IEBAIFN0cmVhbUxvZ2ljYWxMb2codm9pZCkK IAogCQkJaWYgKHJldCA8IDApCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQlf KCIlczogY291bGQgbm90IHdyaXRlICV1IGJ5dGVzIHRvIGxvZyBmaWxlIFwiJXNcIjogJXNc biIpLAotCQkJCQkJcHJvZ25hbWUsIGJ5dGVzX2xlZnQsIG91dGZpbGUsCi0JCQkJCQlzdHJl cnJvcihlcnJubykpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHdyaXRlICV1IGJ5 dGVzIHRvIGxvZyBmaWxlIFwiJXNcIjogJW0iLAorCQkJCQkJCSBieXRlc19sZWZ0LCBvdXRm aWxlKTsKIAkJCQlnb3RvIGVycm9yOwogCQkJfQogCkBAIC01ODEsMTAgKzU2Myw4IEBAIFN0 cmVhbUxvZ2ljYWxMb2codm9pZCkKIAogCQlpZiAod3JpdGUob3V0ZmQsICJcbiIsIDEpICE9 IDEpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogY291bGQgbm90IHdy aXRlICV1IGJ5dGVzIHRvIGxvZyBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCQlwcm9nbmFt ZSwgMSwgb3V0ZmlsZSwKLQkJCQkJc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IHdyaXRlICV1IGJ5dGVzIHRvIGxvZyBmaWxlIFwiJXNcIjogJW0iLAor CQkJCQkJIDEsIG91dGZpbGUpOwogCQkJZ290byBlcnJvcjsKIAkJfQogCkBAIC02MTEsOSAr NTkxLDggQEAgU3RyZWFtTG9naWNhbExvZyh2b2lkKQogCX0KIAllbHNlIGlmIChQUXJlc3Vs dFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJewotCQlmcHJpbnRmKHN0ZGVy ciwKLQkJCQlfKCIlczogdW5leHBlY3RlZCB0ZXJtaW5hdGlvbiBvZiByZXBsaWNhdGlvbiBz dHJlYW06ICVzIiksCi0JCQkJcHJvZ25hbWUsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykp OworCQlwZ19sb2dfZXJyb3IoInVuZXhwZWN0ZWQgdGVybWluYXRpb24gb2YgcmVwbGljYXRp b24gc3RyZWFtOiAlcyIsCisJCQkJCSBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKIAkJ Z290byBlcnJvcjsKIAl9CiAJUFFjbGVhcihyZXMpOwpAQCAtNjI2LDggKzYwNSw3IEBAIFN0 cmVhbUxvZ2ljYWxMb2codm9pZCkKIAkJT3V0cHV0RnN5bmModCk7CiAKIAkJaWYgKGNsb3Nl KG91dGZkKSAhPSAwKQotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY2xv c2UgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIG91dGZpbGUsIHN0cmVy cm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBmaWxlIFwi JXNcIjogJW0iLCBvdXRmaWxlKTsKIAl9CiAJb3V0ZmQgPSAtMTsKIGVycm9yOgpAQCAtNzA1 LDYgKzY4Myw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWxvOwogCWNo YXIJICAgKmRiX25hbWU7CiAKKwlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7CiAJcHJvZ25h bWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAJc2V0X3BnbG9jYWxlX3Bnc2VydmljZShh cmd2WzBdLCBQR19URVhURE9NQUlOKCJwZ19iYXNlYmFja3VwIikpOwogCkBAIC03MzYsOCAr NzE1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJZnN5bmNfaW50ZXJ2 YWwgPSBhdG9pKG9wdGFyZykgKiAxMDAwOwogCQkJCWlmIChmc3luY19pbnRlcnZhbCA8IDAp CiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGludmFsaWQgZnN5bmMgaW50 ZXJ2YWwgXCIlc1wiXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwgb3B0YXJnKTsKKwkJCQkJcGdf bG9nX2Vycm9yKCJpbnZhbGlkIGZzeW5jIGludGVydmFsIFwiJXNcIiIsIG9wdGFyZyk7CiAJ CQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAtNzU3LDggKzczNSw3IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJY2FzZSAncCc6CiAJCQkJaWYgKGF0b2ko b3B0YXJnKSA8PSAwKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZh bGlkIHBvcnQgbnVtYmVyIFwiJXNcIlxuIiksCi0JCQkJCQkJcHJvZ25hbWUsIG9wdGFyZyk7 CisJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBwb3J0IG51bWJlciBcIiVzXCIiLCBvcHRh cmcpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlkYnBvcnQgPSBwZ19zdHJkdXAob3B0 YXJnKTsKQEAgLTc3Niw5ICs3NTMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAkJCWNhc2UgJ0knOgogCQkJCWlmIChzc2NhbmYob3B0YXJnLCAiJVgvJVgiLCAmaGksICZs bykgIT0gMikKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJCV8oIiVzOiBj b3VsZCBub3QgcGFyc2Ugc3RhcnQgcG9zaXRpb24gXCIlc1wiXG4iKSwKLQkJCQkJCQlwcm9n bmFtZSwgb3B0YXJnKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcGFyc2Ugc3Rh cnQgcG9zaXRpb24gXCIlc1wiIiwgb3B0YXJnKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJ CQkJc3RhcnRwb3MgPSAoKHVpbnQ2NCkgaGkpIDw8IDMyIHwgbG87CkBAIC03ODYsOSArNzYx LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQljYXNlICdFJzoKIAkJCQlp ZiAoc3NjYW5mKG9wdGFyZywgIiVYLyVYIiwgJmhpLCAmbG8pICE9IDIpCiAJCQkJewotCQkJ CQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCQlfKCIlczogY291bGQgbm90IHBhcnNlIGVuZCBw b3NpdGlvbiBcIiVzXCJcbiIpLAotCQkJCQkJCXByb2duYW1lLCBvcHRhcmcpOworCQkJCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCBwYXJzZSBlbmQgcG9zaXRpb24gXCIlc1wiIiwgb3B0 YXJnKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJZW5kcG9zID0gKCh1aW50NjQpIGhp KSA8PCAzMiB8IGxvOwpAQCAtODIwLDggKzc5Myw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCQkJCXN0YW5kYnlfbWVzc2FnZV90aW1lb3V0ID0gYXRvaShvcHRhcmcpICog MTAwMDsKIAkJCQlpZiAoc3RhbmRieV9tZXNzYWdlX3RpbWVvdXQgPCAwKQogCQkJCXsKLQkJ CQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIHN0YXR1cyBpbnRlcnZhbCBcIiVz XCJcbiIpLAotCQkJCQkJCXByb2duYW1lLCBvcHRhcmcpOworCQkJCQlwZ19sb2dfZXJyb3Io ImludmFsaWQgc3RhdHVzIGludGVydmFsIFwiJXNcIiIsIG9wdGFyZyk7CiAJCQkJCWV4aXQo MSk7CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAtODU4LDkgKzgzMCw4IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCSAqLwogCWlmIChvcHRpbmQgPCBhcmdjKQogCXsKLQkJZnBy aW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVu dHMgKGZpcnN0IGlzIFwiJXNcIilcbiIpLAotCQkJCXByb2duYW1lLCBhcmd2W29wdGluZF0p OworCQlwZ19sb2dfZXJyb3IoInRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZp cnN0IGlzIFwiJXNcIikiLAorCQkJCQkgYXJndltvcHRpbmRdKTsKIAkJZnByaW50ZihzdGRl cnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJ CQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwpAQCAtODcxLDcgKzg0Miw3IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCSAqLwogCWlmIChyZXBsaWNhdGlvbl9zbG90ID09IE5V TEwpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG5vIHNsb3Qgc3BlY2lmaWVkXG4i KSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm5vIHNsb3Qgc3BlY2lmaWVkIik7CiAJ CWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1h dGlvbi5cbiIpLAogCQkJCXByb2duYW1lKTsKIAkJZXhpdCgxKTsKQEAgLTg3OSw3ICs4NTAs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCWlmIChkb19zdGFydF9zbG90 ICYmIG91dGZpbGUgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogbm8g dGFyZ2V0IGZpbGUgc3BlY2lmaWVkXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3Io Im5vIHRhcmdldCBmaWxlIHNwZWNpZmllZCIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5 IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFt ZSk7CiAJCWV4aXQoMSk7CkBAIC04ODcsNyArODU4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAKIAlpZiAoIWRvX2Ryb3Bfc2xvdCAmJiBkYm5hbWUgPT0gTlVMTCkKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogbm8gZGF0YWJhc2Ugc3BlY2lmaWVkXG4iKSwg cHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm5vIGRhdGFiYXNlIHNwZWNpZmllZCIpOwog CQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3Jt YXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CkBAIC04OTUsNyArODY2 LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAoIWRvX2Ryb3Bfc2xv dCAmJiAhZG9fY3JlYXRlX3Nsb3QgJiYgIWRvX3N0YXJ0X3Nsb3QpCiAJewotCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IGF0IGxlYXN0IG9uZSBhY3Rpb24gbmVlZHMgdG8gYmUgc3BlY2lm aWVkXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoImF0IGxlYXN0IG9uZSBhY3Rp b24gbmVlZHMgdG8gYmUgc3BlY2lmaWVkIik7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkg XCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCXByb2duYW1l KTsKIAkJZXhpdCgxKTsKQEAgLTkwMyw3ICs4NzQsNyBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAogCWlmIChkb19kcm9wX3Nsb3QgJiYgKGRvX2NyZWF0ZV9zbG90IHx8IGRv X3N0YXJ0X3Nsb3QpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgdXNl IC0tY3JlYXRlLXNsb3Qgb3IgLS1zdGFydCB0b2dldGhlciB3aXRoIC0tZHJvcC1zbG90XG4i KSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoImNhbm5vdCB1c2UgLS1jcmVhdGUtc2xv dCBvciAtLXN0YXJ0IHRvZ2V0aGVyIHdpdGggLS1kcm9wLXNsb3QiKTsKIAkJZnByaW50Zihz dGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiks CiAJCQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwpAQCAtOTExLDcgKzg4Miw3IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKHN0YXJ0cG9zICE9IEludmFsaWRYTG9n UmVjUHRyICYmIChkb19jcmVhdGVfc2xvdCB8fCBkb19kcm9wX3Nsb3QpKQogCXsKLQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgdXNlIC0tY3JlYXRlLXNsb3Qgb3IgLS1kcm9w LXNsb3QgdG9nZXRoZXIgd2l0aCAtLXN0YXJ0cG9zXG4iKSwgcHJvZ25hbWUpOworCQlwZ19s b2dfZXJyb3IoImNhbm5vdCB1c2UgLS1jcmVhdGUtc2xvdCBvciAtLWRyb3Atc2xvdCB0b2dl dGhlciB3aXRoIC0tc3RhcnRwb3MiKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVz IC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUpOwog CQlleGl0KDEpOwpAQCAtOTE5LDkgKzg5MCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCiAJaWYgKGVuZHBvcyAhPSBJbnZhbGlkWExvZ1JlY1B0ciAmJiAhZG9fc3RhcnRf c2xvdCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiAtLWVuZHBvcyBtYXkg b25seSBiZSBzcGVjaWZpZWQgd2l0aCAtLXN0YXJ0XG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJ CXBnX2xvZ19lcnJvcigiLS1lbmRwb3MgbWF5IG9ubHkgYmUgc3BlY2lmaWVkIHdpdGggLS1z dGFydCIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1v cmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CkBAIC05 NTIsOSArOTIxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpZiAoZGJf bmFtZSA9PSBOVUxMKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IGNvdWxk IG5vdCBlc3RhYmxpc2ggZGF0YWJhc2Utc3BlY2lmaWMgcmVwbGljYXRpb24gY29ubmVjdGlv blxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBlc3Rh Ymxpc2ggZGF0YWJhc2Utc3BlY2lmaWMgcmVwbGljYXRpb24gY29ubmVjdGlvbiIpOwogCQll eGl0KDEpOwogCX0KIApAQCAtOTcyLDkgKzkzOSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCWlmIChkb19kcm9wX3Nsb3QpCiAJewogCQlpZiAodmVyYm9zZSkKLQkJCWZw cmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogZHJvcHBpbmcgcmVwbGljYXRpb24gc2xvdCBc IiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgcmVwbGljYXRpb25fc2xvdCk7CisJCQlwZ19s b2dfaW5mbygiZHJvcHBpbmcgcmVwbGljYXRpb24gc2xvdCBcIiVzXCIiLCByZXBsaWNhdGlv bl9zbG90KTsKIAogCQlpZiAoIURyb3BSZXBsaWNhdGlvblNsb3QoY29ubiwgcmVwbGljYXRp b25fc2xvdCkpCiAJCQlleGl0KDEpOwpAQCAtOTg0LDkgKzk0OSw3IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCWlmIChkb19jcmVhdGVfc2xvdCkKIAl7CiAJCWlmICh2ZXJi b3NlKQotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBjcmVhdGluZyByZXBsaWNh dGlvbiBzbG90IFwiJXNcIlxuIiksCi0JCQkJCXByb2duYW1lLCByZXBsaWNhdGlvbl9zbG90 KTsKKwkJCXBnX2xvZ19pbmZvKCJjcmVhdGluZyByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiIs IHJlcGxpY2F0aW9uX3Nsb3QpOwogCiAJCWlmICghQ3JlYXRlUmVwbGljYXRpb25TbG90KGNv bm4sIHJlcGxpY2F0aW9uX3Nsb3QsIHBsdWdpbiwgZmFsc2UsCiAJCQkJCQkJCSAgIGZhbHNl LCBmYWxzZSwgc2xvdF9leGlzdHNfb2spKQpAQCAtMTAxMSwxNSArOTc0LDE0IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl9CiAJCWVsc2UgaWYgKG5vbG9vcCkKIAkJewot CQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBkaXNjb25uZWN0ZWRcbiIpLCBwcm9nbmFtZSk7 CisJCQlwZ19sb2dfZXJyb3IoImRpc2Nvbm5lY3RlZCIpOwogCQkJZXhpdCgxKTsKIAkJfQog CQllbHNlCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLAogCQkJLyogdHJhbnNsYXRvcjogY2hl Y2sgc291cmNlIGZvciB2YWx1ZSBmb3IgJWQgKi8KLQkJCQkJXygiJXM6IGRpc2Nvbm5lY3Rl ZDsgd2FpdGluZyAlZCBzZWNvbmRzIHRvIHRyeSBhZ2FpblxuIiksCi0JCQkJCXByb2duYW1l LCBSRUNPTk5FQ1RfU0xFRVBfVElNRSk7CisJCQlwZ19sb2dfaW5mbygiZGlzY29ubmVjdGVk OyB3YWl0aW5nICVkIHNlY29uZHMgdG8gdHJ5IGFnYWluIiwKKwkJCQkJCVJFQ09OTkVDVF9T TEVFUF9USU1FKTsKIAkJCXBnX3VzbGVlcChSRUNPTk5FQ1RfU0xFRVBfVElNRSAqIDEwMDAw MDApOwogCQl9CiAJfQpAQCAtMTA1OCwxMyArMTAyMCwxMiBAQCBwcmVwYXJlVG9UZXJtaW5h dGUoUEdjb25uICpjb25uLCBYTG9nUmVjUHRyIGVuZHBvcywgYm9vbCBrZWVwYWxpdmUsIFhM b2dSZWNQdHIgbAogCWlmICh2ZXJib3NlKQogCXsKIAkJaWYgKGtlZXBhbGl2ZSkKLQkJCWZw cmludGYoc3RkZXJyLCAiJXM6IGVuZHBvcyAlWC8lWCByZWFjaGVkIGJ5IGtlZXBhbGl2ZVxu IiwKLQkJCQkJcHJvZ25hbWUsCi0JCQkJCSh1aW50MzIpIChlbmRwb3MgPj4gMzIpLCAodWlu dDMyKSBlbmRwb3MpOworCQkJcGdfbG9nX2luZm8oImVuZHBvcyAlWC8lWCByZWFjaGVkIGJ5 IGtlZXBhbGl2ZSIsCisJCQkJCQkodWludDMyKSAoZW5kcG9zID4+IDMyKSwgKHVpbnQzMikg ZW5kcG9zKTsKIAkJZWxzZQotCQkJZnByaW50ZihzdGRlcnIsICIlczogZW5kcG9zICVYLyVY IHJlYWNoZWQgYnkgcmVjb3JkIGF0ICVYLyVYXG4iLAotCQkJCQlwcm9nbmFtZSwgKHVpbnQz MikgKGVuZHBvcyA+PiAzMiksICh1aW50MzIpIChlbmRwb3MpLAotCQkJCQkodWludDMyKSAo bHNuID4+IDMyKSwgKHVpbnQzMikgbHNuKTsKKwkJCXBnX2xvZ19pbmZvKCJlbmRwb3MgJVgv JVggcmVhY2hlZCBieSByZWNvcmQgYXQgJVgvJVgiLAorCQkJCQkJKHVpbnQzMikgKGVuZHBv cyA+PiAzMiksICh1aW50MzIpIChlbmRwb3MpLAorCQkJCQkJKHVpbnQzMikgKGxzbiA+PiAz MiksICh1aW50MzIpIGxzbik7CiAKIAl9CiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jh c2ViYWNrdXAvcmVjZWl2ZWxvZy5jIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3JlY2VpdmVs b2cuYwppbmRleCA2OTJkMTM3MTZlLi44Mzg0ZjU3OTFjIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2Jhc2ViYWNrdXAvcmVjZWl2ZWxvZy5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1 cC9yZWNlaXZlbG9nLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJsaWJwcS1mZS5o IgogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFsLmgiCiAjaW5jbHVkZSAiY29tbW9u L2ZpbGVfdXRpbHMuaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAKIAogLyog ZmQgYW5kIGZpbGVuYW1lIGZvciBjdXJyZW50bHkgb3BlbiBXQUwgZmlsZSAqLwpAQCAtNjgs OCArNjksOCBAQCBtYXJrX2ZpbGVfYXNfYXJjaGl2ZWQoU3RyZWFtQ3RsICpzdHJlYW0sIGNv bnN0IGNoYXIgKmZuYW1lKQogCWYgPSBzdHJlYW0tPndhbG1ldGhvZC0+b3Blbl9mb3Jfd3Jp dGUodG1wcGF0aCwgTlVMTCwgMCk7CiAJaWYgKGYgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogY291bGQgbm90IGNyZWF0ZSBhcmNoaXZlIHN0YXR1cyBmaWxlIFwi JXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCB0bXBwYXRoLCBzdHJlYW0tPndhbG1ldGhv ZC0+Z2V0bGFzdGVycm9yKCkpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUg YXJjaGl2ZSBzdGF0dXMgZmlsZSBcIiVzXCI6ICVzIiwKKwkJCQkJIHRtcHBhdGgsIHN0cmVh bS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAK QEAgLTExNSw5ICsxMTYsOCBAQCBvcGVuX3dhbGZpbGUoU3RyZWFtQ3RsICpzdHJlYW0sIFhM b2dSZWNQdHIgc3RhcnRwb2ludCkKIAkJc2l6ZSA9IHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRf ZmlsZV9zaXplKGZuKTsKIAkJaWYgKHNpemUgPCAwKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVy ciwKLQkJCQkJXygiJXM6IGNvdWxkIG5vdCBnZXQgc2l6ZSBvZiB3cml0ZS1haGVhZCBsb2cg ZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIGZuLCBzdHJlYW0tPndhbG1l dGhvZC0+Z2V0bGFzdGVycm9yKCkpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZ2V0 IHNpemUgb2Ygd3JpdGUtYWhlYWQgbG9nIGZpbGUgXCIlc1wiOiAlcyIsCisJCQkJCQkgZm4s IHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CiAJCQlyZXR1cm4gZmFsc2U7 CiAJCX0KIAkJaWYgKHNpemUgPT0gV2FsU2VnU3opCkBAIC0xMjYsMTggKzEyNiwxNiBAQCBv cGVuX3dhbGZpbGUoU3RyZWFtQ3RsICpzdHJlYW0sIFhMb2dSZWNQdHIgc3RhcnRwb2ludCkK IAkJCWYgPSBzdHJlYW0tPndhbG1ldGhvZC0+b3Blbl9mb3Jfd3JpdGUoY3VycmVudF93YWxm aWxlX25hbWUsIHN0cmVhbS0+cGFydGlhbF9zdWZmaXgsIDApOwogCQkJaWYgKGYgPT0gTlVM TCkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCV8oIiVzOiBjb3VsZCBub3Qg b3BlbiBleGlzdGluZyB3cml0ZS1haGVhZCBsb2cgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJ CQkJCXByb2duYW1lLCBmbiwgc3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3RlcnJvcigpKTsK KwkJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGV4aXN0aW5nIHdyaXRlLWFoZWFk IGxvZyBmaWxlIFwiJXNcIjogJXMiLAorCQkJCQkJCSBmbiwgc3RyZWFtLT53YWxtZXRob2Qt PmdldGxhc3RlcnJvcigpKTsKIAkJCQlyZXR1cm4gZmFsc2U7CiAJCQl9CiAKIAkJCS8qIGZz eW5jIGZpbGUgaW4gY2FzZSBvZiBhIHByZXZpb3VzIGNyYXNoICovCiAJCQlpZiAoc3RyZWFt LT53YWxtZXRob2QtPnN5bmMoZikgIT0gMCkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwK LQkJCQkJCV8oIiVzOiBjb3VsZCBub3QgZnN5bmMgZXhpc3Rpbmcgd3JpdGUtYWhlYWQgbG9n IGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCQlwcm9nbmFtZSwgZm4sIHN0cmVhbS0+d2Fs bWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qg ZnN5bmMgZXhpc3Rpbmcgd3JpdGUtYWhlYWQgbG9nIGZpbGUgXCIlc1wiOiAlcyIsCisJCQkJ CQkJIGZuLCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOwogCQkJCXN0cmVh bS0+d2FsbWV0aG9kLT5jbG9zZShmLCBDTE9TRV9VTkxJTkspOwogCQkJCXJldHVybiBmYWxz ZTsKIAkJCX0KQEAgLTE1MCwxMSArMTQ4LDEwIEBAIG9wZW5fd2FsZmlsZShTdHJlYW1DdGwg KnN0cmVhbSwgWExvZ1JlY1B0ciBzdGFydHBvaW50KQogCQkJLyogaWYgd3JpdGUgZGlkbid0 IHNldCBlcnJubywgYXNzdW1lIHByb2JsZW0gaXMgbm8gZGlzayBzcGFjZSAqLwogCQkJaWYg KGVycm5vID09IDApCiAJCQkJZXJybm8gPSBFTk9TUEM7Ci0JCQlmcHJpbnRmKHN0ZGVyciwK LQkJCQkJbmdldHRleHQoIiVzOiB3cml0ZS1haGVhZCBsb2cgZmlsZSBcIiVzXCIgaGFzICVk IGJ5dGUsIHNob3VsZCBiZSAwIG9yICVkXG4iLAotCQkJCQkJCSAiJXM6IHdyaXRlLWFoZWFk IGxvZyBmaWxlIFwiJXNcIiBoYXMgJWQgYnl0ZXMsIHNob3VsZCBiZSAwIG9yICVkXG4iLAot CQkJCQkJCSBzaXplKSwKLQkJCQkJcHJvZ25hbWUsIGZuLCAoaW50KSBzaXplLCBXYWxTZWdT eik7CisJCQlwZ19sb2dfZXJyb3IobmdldHRleHQoIndyaXRlLWFoZWFkIGxvZyBmaWxlIFwi JXNcIiBoYXMgJWQgYnl0ZSwgc2hvdWxkIGJlIDAgb3IgJWQiLAorCQkJCQkJCQkgICJ3cml0 ZS1haGVhZCBsb2cgZmlsZSBcIiVzXCIgaGFzICVkIGJ5dGVzLCBzaG91bGQgYmUgMCBvciAl ZCIsCisJCQkJCQkJCSAgc2l6ZSksCisJCQkJCQkgZm4sIChpbnQpIHNpemUsIFdhbFNlZ1N6 KTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCQkvKiBGaWxlIGV4aXN0ZWQgYW5kIHdhcyBl bXB0eSwgc28gZmFsbCB0aHJvdWdoIGFuZCBvcGVuICovCkBAIC0xNjYsOSArMTYzLDggQEAg b3Blbl93YWxmaWxlKFN0cmVhbUN0bCAqc3RyZWFtLCBYTG9nUmVjUHRyIHN0YXJ0cG9pbnQp CiAJCQkJCQkJCQkJICBzdHJlYW0tPnBhcnRpYWxfc3VmZml4LCBXYWxTZWdTeik7CiAJaWYg KGYgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBjb3VsZCBu b3Qgb3BlbiB3cml0ZS1haGVhZCBsb2cgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9n bmFtZSwgZm4sIHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CisJCXBnX2xv Z19lcnJvcigiY291bGQgbm90IG9wZW4gd3JpdGUtYWhlYWQgbG9nIGZpbGUgXCIlc1wiOiAl cyIsCisJCQkJCSBmbiwgc3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3RlcnJvcigpKTsKIAkJ cmV0dXJuIGZhbHNlOwogCX0KIApAQCAtMTkzLDkgKzE4OSw4IEBAIGNsb3NlX3dhbGZpbGUo U3RyZWFtQ3RsICpzdHJlYW0sIFhMb2dSZWNQdHIgcG9zKQogCWN1cnJwb3MgPSBzdHJlYW0t PndhbG1ldGhvZC0+Z2V0X2N1cnJlbnRfcG9zKHdhbGZpbGUpOwogCWlmIChjdXJycG9zID09 IC0xKQogCXsKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IGNvdWxkIG5vdCBkZXRl cm1pbmUgc2VlayBwb3NpdGlvbiBpbiBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2du YW1lLCBjdXJyZW50X3dhbGZpbGVfbmFtZSwgc3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3Rl cnJvcigpKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZGV0ZXJtaW5lIHNlZWsgcG9z aXRpb24gaW4gZmlsZSBcIiVzXCI6ICVzIiwKKwkJCQkJIGN1cnJlbnRfd2FsZmlsZV9uYW1l LCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOwogCQlzdHJlYW0tPndhbG1l dGhvZC0+Y2xvc2Uod2FsZmlsZSwgQ0xPU0VfVU5MSU5LKTsKIAkJd2FsZmlsZSA9IE5VTEw7 CiAKQEAgLTIwOCw5ICsyMDMsOCBAQCBjbG9zZV93YWxmaWxlKFN0cmVhbUN0bCAqc3RyZWFt LCBYTG9nUmVjUHRyIHBvcykKIAkJCXIgPSBzdHJlYW0tPndhbG1ldGhvZC0+Y2xvc2Uod2Fs ZmlsZSwgQ0xPU0VfTk9STUFMKTsKIAkJZWxzZQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwK LQkJCQkJXygiJXM6IG5vdCByZW5hbWluZyBcIiVzJXNcIiwgc2VnbWVudCBpcyBub3QgY29t cGxldGVcbiIpLAotCQkJCQlwcm9nbmFtZSwgY3VycmVudF93YWxmaWxlX25hbWUsIHN0cmVh bS0+cGFydGlhbF9zdWZmaXgpOworCQkJcGdfbG9nX2luZm8oIm5vdCByZW5hbWluZyBcIiVz JXNcIiwgc2VnbWVudCBpcyBub3QgY29tcGxldGUiLAorCQkJCQkJY3VycmVudF93YWxmaWxl X25hbWUsIHN0cmVhbS0+cGFydGlhbF9zdWZmaXgpOwogCQkJciA9IHN0cmVhbS0+d2FsbWV0 aG9kLT5jbG9zZSh3YWxmaWxlLCBDTE9TRV9OT19SRU5BTUUpOwogCQl9CiAJfQpAQCAtMjIx LDggKzIxNSw4IEBAIGNsb3NlX3dhbGZpbGUoU3RyZWFtQ3RsICpzdHJlYW0sIFhMb2dSZWNQ dHIgcG9zKQogCiAJaWYgKHIgIT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIGN1 cnJlbnRfd2FsZmlsZV9uYW1lLCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkp OworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBmaWxlIFwiJXNcIjogJXMiLAor CQkJCQkgY3VycmVudF93YWxmaWxlX25hbWUsIHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0 ZXJyb3IoKSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTI3OCwyMyArMjcyLDIzIEBA IHdyaXRlVGltZUxpbmVIaXN0b3J5RmlsZShTdHJlYW1DdGwgKnN0cmVhbSwgY2hhciAqZmls ZW5hbWUsIGNoYXIgKmNvbnRlbnQpCiAJVExIaXN0b3J5RmlsZU5hbWUoaGlzdGZuYW1lLCBz dHJlYW0tPnRpbWVsaW5lKTsKIAlpZiAoc3RyY21wKGhpc3RmbmFtZSwgZmlsZW5hbWUpICE9 IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHNlcnZlciByZXBvcnRlZCB1bmV4 cGVjdGVkIGhpc3RvcnkgZmlsZSBuYW1lIGZvciB0aW1lbGluZSAldTogJXNcbiIpLAotCQkJ CXByb2duYW1lLCBzdHJlYW0tPnRpbWVsaW5lLCBmaWxlbmFtZSk7CisJCXBnX2xvZ19lcnJv cigic2VydmVyIHJlcG9ydGVkIHVuZXhwZWN0ZWQgaGlzdG9yeSBmaWxlIG5hbWUgZm9yIHRp bWVsaW5lICV1OiAlcyIsCisJCQkJCSBzdHJlYW0tPnRpbWVsaW5lLCBmaWxlbmFtZSk7CiAJ CXJldHVybiBmYWxzZTsKIAl9CiAKIAlmID0gc3RyZWFtLT53YWxtZXRob2QtPm9wZW5fZm9y X3dyaXRlKGhpc3RmbmFtZSwgIi50bXAiLCAwKTsKIAlpZiAoZiA9PSBOVUxMKQogCXsKLQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY3JlYXRlIHRpbWVsaW5lIGhpc3Rv cnkgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgaGlzdGZuYW1lLCBzdHJl YW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOworCQlwZ19sb2dfZXJyb3IoImNvdWxk IG5vdCBjcmVhdGUgdGltZWxpbmUgaGlzdG9yeSBmaWxlIFwiJXNcIjogJXMiLAorCQkJCQkg aGlzdGZuYW1lLCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOwogCQlyZXR1 cm4gZmFsc2U7CiAJfQogCiAJaWYgKChpbnQpIHN0cmVhbS0+d2FsbWV0aG9kLT53cml0ZShm LCBjb250ZW50LCBzaXplKSAhPSBzaXplKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBjb3VsZCBub3Qgd3JpdGUgdGltZWxpbmUgaGlzdG9yeSBmaWxlIFwiJXNcIjogJXNcbiIp LAotCQkJCXByb2duYW1lLCBoaXN0Zm5hbWUsIHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0 ZXJyb3IoKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHdyaXRlIHRpbWVsaW5lIGhp c3RvcnkgZmlsZSBcIiVzXCI6ICVzIiwKKwkJCQkJIGhpc3RmbmFtZSwgc3RyZWFtLT53YWxt ZXRob2QtPmdldGxhc3RlcnJvcigpKTsKIAogCQkvKgogCQkgKiBJZiB3ZSBmYWlsIHRvIG1h a2UgdGhlIGZpbGUsIGRlbGV0ZSBpdCB0byByZWxlYXNlIGRpc2sgc3BhY2UKQEAgLTMwNiw4 ICszMDAsOCBAQCB3cml0ZVRpbWVMaW5lSGlzdG9yeUZpbGUoU3RyZWFtQ3RsICpzdHJlYW0s IGNoYXIgKmZpbGVuYW1lLCBjaGFyICpjb250ZW50KQogCiAJaWYgKHN0cmVhbS0+d2FsbWV0 aG9kLT5jbG9zZShmLCBDTE9TRV9OT1JNQUwpICE9IDApCiAJewotCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IGNvdWxkIG5vdCBjbG9zZSBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXBy b2duYW1lLCBoaXN0Zm5hbWUsIHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7 CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlcyIsCisJ CQkJCSBoaXN0Zm5hbWUsIHN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJyb3IoKSk7CiAJ CXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTM0OSw4ICszNDMsOCBAQCBzZW5kRmVlZGJhY2so UEdjb25uICpjb25uLCBYTG9nUmVjUHRyIGJsb2NrcG9zLCBUaW1lc3RhbXBUeiBub3csIGJv b2wgcmVwbHlSZXF1ZQogCiAJaWYgKFBRcHV0Q29weURhdGEoY29ubiwgcmVwbHlidWYsIGxl bikgPD0gMCB8fCBQUWZsdXNoKGNvbm4pKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBjb3VsZCBub3Qgc2VuZCBmZWVkYmFjayBwYWNrZXQ6ICVzIiksCi0JCQkJcHJvZ25hbWUs IFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc2Vu ZCBmZWVkYmFjayBwYWNrZXQ6ICVzIiwKKwkJCQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsK IAkJcmV0dXJuIGZhbHNlOwogCX0KIApAQCAtMzgzLDIwICszNzcsMTggQEAgQ2hlY2tTZXJ2 ZXJWZXJzaW9uRm9yU3RyZWFtaW5nKFBHY29ubiAqY29ubikKIAl7CiAJCWNvbnN0IGNoYXIg KnNlcnZlcnZlciA9IFBRcGFyYW1ldGVyU3RhdHVzKGNvbm4sICJzZXJ2ZXJfdmVyc2lvbiIp OwogCi0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW5jb21wYXRpYmxlIHNlcnZlciB2ZXJz aW9uICVzOyBjbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBzdHJlYW1pbmcgZnJvbSBzZXJ2ZXIg dmVyc2lvbnMgb2xkZXIgdGhhbiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsCi0JCQkJc2VydmVy dmVyID8gc2VydmVydmVyIDogIid1bmtub3duJyIsCi0JCQkJIjkuMyIpOworCQlwZ19sb2df ZXJyb3IoImluY29tcGF0aWJsZSBzZXJ2ZXIgdmVyc2lvbiAlczsgY2xpZW50IGRvZXMgbm90 IHN1cHBvcnQgc3RyZWFtaW5nIGZyb20gc2VydmVyIHZlcnNpb25zIG9sZGVyIHRoYW4gJXMi LAorCQkJCQkgc2VydmVydmVyID8gc2VydmVydmVyIDogIid1bmtub3duJyIsCisJCQkJCSAi OS4zIik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAJZWxzZSBpZiAoc2VydmVyTWFqb3IgPiBt YXhTZXJ2ZXJNYWpvcikKIAl7CiAJCWNvbnN0IGNoYXIgKnNlcnZlcnZlciA9IFBRcGFyYW1l dGVyU3RhdHVzKGNvbm4sICJzZXJ2ZXJfdmVyc2lvbiIpOwogCi0JCWZwcmludGYoc3RkZXJy LCBfKCIlczogaW5jb21wYXRpYmxlIHNlcnZlciB2ZXJzaW9uICVzOyBjbGllbnQgZG9lcyBu b3Qgc3VwcG9ydCBzdHJlYW1pbmcgZnJvbSBzZXJ2ZXIgdmVyc2lvbnMgbmV3ZXIgdGhhbiAl c1xuIiksCi0JCQkJcHJvZ25hbWUsCi0JCQkJc2VydmVydmVyID8gc2VydmVydmVyIDogIid1 bmtub3duJyIsCi0JCQkJUEdfVkVSU0lPTik7CisJCXBnX2xvZ19lcnJvcigiaW5jb21wYXRp YmxlIHNlcnZlciB2ZXJzaW9uICVzOyBjbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBzdHJlYW1p bmcgZnJvbSBzZXJ2ZXIgdmVyc2lvbnMgbmV3ZXIgdGhhbiAlcyIsCisJCQkJCSBzZXJ2ZXJ2 ZXIgPyBzZXJ2ZXJ2ZXIgOiAiJ3Vua25vd24nIiwKKwkJCQkJIFBHX1ZFUlNJT04pOwogCQly ZXR1cm4gZmFsc2U7CiAJfQogCXJldHVybiB0cnVlOwpAQCAtNDg5LDMzICs0ODEsMjggQEAg UmVjZWl2ZVhsb2dTdHJlYW0oUEdjb25uICpjb25uLCBTdHJlYW1DdGwgKnN0cmVhbSkKIAkJ cmVzID0gUFFleGVjKGNvbm4sICJJREVOVElGWV9TWVNURU0iKTsKIAkJaWYgKFBRcmVzdWx0 U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVy ciwKLQkJCQkJXygiJXM6IGNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIl c1wiOiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgIklERU5USUZZX1NZU1RFTSIsIFBRZXJyb3JN ZXNzYWdlKGNvbm4pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNlbmQgcmVwbGlj YXRpb24gY29tbWFuZCBcIiVzXCI6ICVzIiwKKwkJCQkJCSAiSURFTlRJRllfU1lTVEVNIiwg UFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQkJUFFjbGVhcihyZXMpOwogCQkJcmV0dXJuIGZh bHNlOwogCQl9CiAJCWlmIChQUW50dXBsZXMocmVzKSAhPSAxIHx8IFBRbmZpZWxkcyhyZXMp IDwgMykKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBjb3VsZCBub3Qg aWRlbnRpZnkgc3lzdGVtOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3RlZCAl ZCByb3dzIGFuZCAlZCBvciBtb3JlIGZpZWxkc1xuIiksCi0JCQkJCXByb2duYW1lLCBQUW50 dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDEsIDMpOworCQkJcGdfbG9nX2Vycm9yKCJj b3VsZCBub3QgaWRlbnRpZnkgc3lzdGVtOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBl eHBlY3RlZCAlZCByb3dzIGFuZCAlZCBvciBtb3JlIGZpZWxkcyIsCisJCQkJCQkgUFFudHVw bGVzKHJlcyksIFBRbmZpZWxkcyhyZXMpLCAxLCAzKTsKIAkJCVBRY2xlYXIocmVzKTsKIAkJ CXJldHVybiBmYWxzZTsKIAkJfQogCQlpZiAoc3RyY21wKHN0cmVhbS0+c3lzaWRlbnRpZmll ciwgUFFnZXR2YWx1ZShyZXMsIDAsIDApKSAhPSAwKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVy ciwKLQkJCQkJXygiJXM6IHN5c3RlbSBpZGVudGlmaWVyIGRvZXMgbm90IG1hdGNoIGJldHdl ZW4gYmFzZSBiYWNrdXAgYW5kIHN0cmVhbWluZyBjb25uZWN0aW9uXG4iKSwKLQkJCQkJcHJv Z25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJzeXN0ZW0gaWRlbnRpZmllciBkb2VzIG5vdCBt YXRjaCBiZXR3ZWVuIGJhc2UgYmFja3VwIGFuZCBzdHJlYW1pbmcgY29ubmVjdGlvbiIpOwog CQkJUFFjbGVhcihyZXMpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJCWlmIChzdHJlYW0t PnRpbWVsaW5lID4gYXRvaShQUWdldHZhbHVlKHJlcywgMCwgMSkpKQogCQl7Ci0JCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IHN0YXJ0aW5nIHRpbWVsaW5lICV1IGlzIG5vdCBw cmVzZW50IGluIHRoZSBzZXJ2ZXJcbiIpLAotCQkJCQlwcm9nbmFtZSwgc3RyZWFtLT50aW1l bGluZSk7CisJCQlwZ19sb2dfZXJyb3IoInN0YXJ0aW5nIHRpbWVsaW5lICV1IGlzIG5vdCBw cmVzZW50IGluIHRoZSBzZXJ2ZXIiLAorCQkJCQkJIHN0cmVhbS0+dGltZWxpbmUpOwogCQkJ UFFjbGVhcihyZXMpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CkBAIC01NDMsOCArNTMwLDgg QEAgUmVjZWl2ZVhsb2dTdHJlYW0oUEdjb25uICpjb25uLCBTdHJlYW1DdGwgKnN0cmVhbSkK IAkJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKIAkJCXsK IAkJCQkvKiBGSVhNRTogd2UgbWlnaHQgc2VuZCBpdCBvaywgYnV0IGdldCBhbiBlcnJvciAq LwotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHNlbmQgcmVwbGljYXRp b24gY29tbWFuZCBcIiVzXCI6ICVzIiksCi0JCQkJCQlwcm9nbmFtZSwgIlRJTUVMSU5FX0hJ U1RPUlkiLCBQUXJlc3VsdEVycm9yTWVzc2FnZShyZXMpKTsKKwkJCQlwZ19sb2dfZXJyb3Io ImNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAlcyIsCisJCQkJ CQkJICJUSU1FTElORV9ISVNUT1JZIiwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CiAJ CQkJUFFjbGVhcihyZXMpOwogCQkJCXJldHVybiBmYWxzZTsKIAkJCX0KQEAgLTU1NSw5ICs1 NDIsOCBAQCBSZWNlaXZlWGxvZ1N0cmVhbShQR2Nvbm4gKmNvbm4sIFN0cmVhbUN0bCAqc3Ry ZWFtKQogCQkJICovCiAJCQlpZiAoUFFuZmllbGRzKHJlcykgIT0gMiB8fCBQUW50dXBsZXMo cmVzKSAhPSAxKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJXygiJXM6IHVu ZXhwZWN0ZWQgcmVzcG9uc2UgdG8gVElNRUxJTkVfSElTVE9SWSBjb21tYW5kOiBnb3QgJWQg cm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3RlZCAlZCByb3dzIGFuZCAlZCBmaWVsZHNcbiIp LAotCQkJCQkJcHJvZ25hbWUsIFBRbnR1cGxlcyhyZXMpLCBQUW5maWVsZHMocmVzKSwgMSwg Mik7CisJCQkJcGdfbG9nX3dhcm5pbmcoInVuZXhwZWN0ZWQgcmVzcG9uc2UgdG8gVElNRUxJ TkVfSElTVE9SWSBjb21tYW5kOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3Rl ZCAlZCByb3dzIGFuZCAlZCBmaWVsZHMiLAorCQkJCQkJCSAgIFBRbnR1cGxlcyhyZXMpLCBQ UW5maWVsZHMocmVzKSwgMSwgMik7CiAJCQl9CiAKIAkJCS8qIFdyaXRlIHRoZSBoaXN0b3J5 IGZpbGUgdG8gZGlzayAqLwpAQCAtNTgzLDggKzU2OSw4IEBAIFJlY2VpdmVYbG9nU3RyZWFt KFBHY29ubiAqY29ubiwgU3RyZWFtQ3RsICpzdHJlYW0pCiAJCXJlcyA9IFBRZXhlYyhjb25u LCBxdWVyeSk7CiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPUFlfQk9U SCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgc2VuZCByZXBs aWNhdGlvbiBjb21tYW5kIFwiJXNcIjogJXMiKSwKLQkJCQkJcHJvZ25hbWUsICJTVEFSVF9S RVBMSUNBVElPTiIsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3Qgc2VuZCByZXBsaWNhdGlvbiBjb21tYW5kIFwiJXNcIjogJXMiLAor CQkJCQkJICJTVEFSVF9SRVBMSUNBVElPTiIsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykp OwogCQkJUFFjbGVhcihyZXMpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CkBAIC02MjcsMTgg KzYxMywxNSBAQCBSZWNlaXZlWGxvZ1N0cmVhbShQR2Nvbm4gKmNvbm4sIFN0cmVhbUN0bCAq c3RyZWFtKQogCQkJLyogU2FuaXR5IGNoZWNrIHRoZSB2YWx1ZXMgdGhlIHNlcnZlciBnYXZl IHVzICovCiAJCQlpZiAobmV3dGltZWxpbmUgPD0gc3RyZWFtLT50aW1lbGluZSkKIAkJCXsK LQkJCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJCV8oIiVzOiBzZXJ2ZXIgcmVwb3J0ZWQgdW5l eHBlY3RlZCBuZXh0IHRpbWVsaW5lICV1LCBmb2xsb3dpbmcgdGltZWxpbmUgJXVcbiIpLAot CQkJCQkJcHJvZ25hbWUsIG5ld3RpbWVsaW5lLCBzdHJlYW0tPnRpbWVsaW5lKTsKKwkJCQlw Z19sb2dfZXJyb3IoInNlcnZlciByZXBvcnRlZCB1bmV4cGVjdGVkIG5leHQgdGltZWxpbmUg JXUsIGZvbGxvd2luZyB0aW1lbGluZSAldSIsCisJCQkJCQkJIG5ld3RpbWVsaW5lLCBzdHJl YW0tPnRpbWVsaW5lKTsKIAkJCQlnb3RvIGVycm9yOwogCQkJfQogCQkJaWYgKHN0cmVhbS0+ c3RhcnRwb3MgPiBzdG9wcG9zKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJ XygiJXM6IHNlcnZlciBzdG9wcGVkIHN0cmVhbWluZyB0aW1lbGluZSAldSBhdCAlWC8lWCwg YnV0IHJlcG9ydGVkIG5leHQgdGltZWxpbmUgJXUgdG8gYmVnaW4gYXQgJVgvJVhcbiIpLAot CQkJCQkJcHJvZ25hbWUsCi0JCQkJCQlzdHJlYW0tPnRpbWVsaW5lLCAodWludDMyKSAoc3Rv cHBvcyA+PiAzMiksICh1aW50MzIpIHN0b3Bwb3MsCi0JCQkJCQluZXd0aW1lbGluZSwgKHVp bnQzMikgKHN0cmVhbS0+c3RhcnRwb3MgPj4gMzIpLCAodWludDMyKSBzdHJlYW0tPnN0YXJ0 cG9zKTsKKwkJCQlwZ19sb2dfZXJyb3IoInNlcnZlciBzdG9wcGVkIHN0cmVhbWluZyB0aW1l bGluZSAldSBhdCAlWC8lWCwgYnV0IHJlcG9ydGVkIG5leHQgdGltZWxpbmUgJXUgdG8gYmVn aW4gYXQgJVgvJVgiLAorCQkJCQkJCSBzdHJlYW0tPnRpbWVsaW5lLCAodWludDMyKSAoc3Rv cHBvcyA+PiAzMiksICh1aW50MzIpIHN0b3Bwb3MsCisJCQkJCQkJIG5ld3RpbWVsaW5lLCAo dWludDMyKSAoc3RyZWFtLT5zdGFydHBvcyA+PiAzMiksICh1aW50MzIpIHN0cmVhbS0+c3Rh cnRwb3MpOwogCQkJCWdvdG8gZXJyb3I7CiAJCQl9CiAKQEAgLTY0Niw5ICs2MjksOCBAQCBS ZWNlaXZlWGxvZ1N0cmVhbShQR2Nvbm4gKmNvbm4sIFN0cmVhbUN0bCAqc3RyZWFtKQogCQkJ cmVzID0gUFFnZXRSZXN1bHQoY29ubik7CiAJCQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAh PSBQR1JFU19DT01NQU5EX09LKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJ XygiJXM6IHVuZXhwZWN0ZWQgdGVybWluYXRpb24gb2YgcmVwbGljYXRpb24gc3RyZWFtOiAl cyIpLAotCQkJCQkJcHJvZ25hbWUsIFBRcmVzdWx0RXJyb3JNZXNzYWdlKHJlcykpOworCQkJ CXBnX2xvZ19lcnJvcigidW5leHBlY3RlZCB0ZXJtaW5hdGlvbiBvZiByZXBsaWNhdGlvbiBz dHJlYW06ICVzIiwKKwkJCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CiAJCQkJ UFFjbGVhcihyZXMpOwogCQkJCWdvdG8gZXJyb3I7CiAJCQl9CkBAIC02NzcsMTcgKzY1OSwx NSBAQCBSZWNlaXZlWGxvZ1N0cmVhbShQR2Nvbm4gKmNvbm4sIFN0cmVhbUN0bCAqc3RyZWFt KQogCQkJCXJldHVybiB0cnVlOwogCQkJZWxzZQogCQkJewotCQkJCWZwcmludGYoc3RkZXJy LCBfKCIlczogcmVwbGljYXRpb24gc3RyZWFtIHdhcyB0ZXJtaW5hdGVkIGJlZm9yZSBzdG9w IHBvaW50XG4iKSwKLQkJCQkJCXByb2duYW1lKTsKKwkJCQlwZ19sb2dfZXJyb3IoInJlcGxp Y2F0aW9uIHN0cmVhbSB3YXMgdGVybWluYXRlZCBiZWZvcmUgc3RvcCBwb2ludCIpOwogCQkJ CWdvdG8gZXJyb3I7CiAJCQl9CiAJCX0KIAkJZWxzZQogCQl7CiAJCQkvKiBTZXJ2ZXIgcmV0 dXJuZWQgYW4gZXJyb3IuICovCi0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IHVu ZXhwZWN0ZWQgdGVybWluYXRpb24gb2YgcmVwbGljYXRpb24gc3RyZWFtOiAlcyIpLAotCQkJ CQlwcm9nbmFtZSwgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CisJCQlwZ19sb2dfZXJy b3IoInVuZXhwZWN0ZWQgdGVybWluYXRpb24gb2YgcmVwbGljYXRpb24gc3RyZWFtOiAlcyIs CisJCQkJCQkgUFFyZXN1bHRFcnJvck1lc3NhZ2UocmVzKSk7CiAJCQlQUWNsZWFyKHJlcyk7 CiAJCQlnb3RvIGVycm9yOwogCQl9CkBAIC02OTUsOCArNjc1LDggQEAgUmVjZWl2ZVhsb2dT dHJlYW0oUEdjb25uICpjb25uLCBTdHJlYW1DdGwgKnN0cmVhbSkKIAogZXJyb3I6CiAJaWYg KHdhbGZpbGUgIT0gTlVMTCAmJiBzdHJlYW0tPndhbG1ldGhvZC0+Y2xvc2Uod2FsZmlsZSwg Q0xPU0VfTk9fUkVOQU1FKSAhPSAwKQotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxk IG5vdCBjbG9zZSBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBjdXJyZW50 X3dhbGZpbGVfbmFtZSwgc3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3RlcnJvcigpKTsKKwkJ cGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6ICVzIiwKKwkJCQkJ IGN1cnJlbnRfd2FsZmlsZV9uYW1lLCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9y KCkpOwogCXdhbGZpbGUgPSBOVUxMOwogCXJldHVybiBmYWxzZTsKIH0KQEAgLTcyNSw5ICs3 MDUsOCBAQCBSZWFkRW5kT2ZTdHJlYW1pbmdSZXN1bHQoUEdyZXN1bHQgKnJlcywgWExvZ1Jl Y1B0ciAqc3RhcnRwb3MsIHVpbnQzMiAqdGltZWxpbmUpCiAJICovCiAJaWYgKFBRbmZpZWxk cyhyZXMpIDwgMiB8fCBQUW50dXBsZXMocmVzKSAhPSAxKQogCXsKLQkJZnByaW50ZihzdGRl cnIsCi0JCQkJXygiJXM6IHVuZXhwZWN0ZWQgcmVzdWx0IHNldCBhZnRlciBlbmQtb2YtdGlt ZWxpbmU6IGdvdCAlZCByb3dzIGFuZCAlZCBmaWVsZHMsIGV4cGVjdGVkICVkIHJvd3MgYW5k ICVkIGZpZWxkc1xuIiksCi0JCQkJcHJvZ25hbWUsIFBRbnR1cGxlcyhyZXMpLCBQUW5maWVs ZHMocmVzKSwgMSwgMik7CisJCXBnX2xvZ19lcnJvcigidW5leHBlY3RlZCByZXN1bHQgc2V0 IGFmdGVyIGVuZC1vZi10aW1lbGluZTogZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhw ZWN0ZWQgJWQgcm93cyBhbmQgJWQgZmllbGRzIiwKKwkJCQkJIFBRbnR1cGxlcyhyZXMpLCBQ UW5maWVsZHMocmVzKSwgMSwgMik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTczNSw5 ICs3MTQsOCBAQCBSZWFkRW5kT2ZTdHJlYW1pbmdSZXN1bHQoUEdyZXN1bHQgKnJlcywgWExv Z1JlY1B0ciAqc3RhcnRwb3MsIHVpbnQzMiAqdGltZWxpbmUpCiAJaWYgKHNzY2FuZihQUWdl dHZhbHVlKHJlcywgMCwgMSksICIlWC8lWCIsICZzdGFydHBvc194bG9naWQsCiAJCQkgICAm c3RhcnRwb3NfeHJlY29mZikgIT0gMikKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8o IiVzOiBjb3VsZCBub3QgcGFyc2UgbmV4dCB0aW1lbGluZSdzIHN0YXJ0aW5nIHBvaW50IFwi JXNcIlxuIiksCi0JCQkJcHJvZ25hbWUsIFBRZ2V0dmFsdWUocmVzLCAwLCAxKSk7CisJCXBn X2xvZ19lcnJvcigiY291bGQgbm90IHBhcnNlIG5leHQgdGltZWxpbmUncyBzdGFydGluZyBw b2ludCBcIiVzXCIiLAorCQkJCQkgUFFnZXR2YWx1ZShyZXMsIDAsIDEpKTsKIAkJcmV0dXJu IGZhbHNlOwogCX0KIAkqc3RhcnRwb3MgPSAoKHVpbnQ2NCkgc3RhcnRwb3NfeGxvZ2lkIDw8 IDMyKSB8IHN0YXJ0cG9zX3hyZWNvZmY7CkBAIC03ODUsOCArNzYzLDggQEAgSGFuZGxlQ29w eVN0cmVhbShQR2Nvbm4gKmNvbm4sIFN0cmVhbUN0bCAqc3RyZWFtLAogCQl7CiAJCQlpZiAo c3RyZWFtLT53YWxtZXRob2QtPnN5bmMod2FsZmlsZSkgIT0gMCkKIAkJCXsKLQkJCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBmc3luYyBmaWxlIFwiJXNcIjogJXNcbiIp LAotCQkJCQkJcHJvZ25hbWUsIGN1cnJlbnRfd2FsZmlsZV9uYW1lLCBzdHJlYW0tPndhbG1l dGhvZC0+Z2V0bGFzdGVycm9yKCkpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGZz eW5jIGZpbGUgXCIlc1wiOiAlcyIsCisJCQkJCQkJIGN1cnJlbnRfd2FsZmlsZV9uYW1lLCBz dHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOwogCQkJCWdvdG8gZXJyb3I7CiAJ CQl9CiAJCQlsYXN0Rmx1c2hQb3NpdGlvbiA9IGJsb2NrcG9zOwpAQCAtODU1LDggKzgzMyw4 IEBAIEhhbmRsZUNvcHlTdHJlYW0oUEdjb25uICpjb25uLCBTdHJlYW1DdGwgKnN0cmVhbSwK IAkJCX0KIAkJCWVsc2UKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHVucmVj b2duaXplZCBzdHJlYW1pbmcgaGVhZGVyOiBcIiVjXCJcbiIpLAotCQkJCQkJcHJvZ25hbWUs IGNvcHlidWZbMF0pOworCQkJCXBnX2xvZ19lcnJvcigidW5yZWNvZ25pemVkIHN0cmVhbWlu ZyBoZWFkZXI6IFwiJWNcIiIsCisJCQkJCQkJIGNvcHlidWZbMF0pOwogCQkJCWdvdG8gZXJy b3I7CiAJCQl9CiAKQEAgLTg5NSw4ICs4NzMsNyBAQCBDb3B5U3RyZWFtUG9sbChQR2Nvbm4g KmNvbm4sIGxvbmcgdGltZW91dF9tcywgcGdzb2NrZXQgc3RvcF9zb2NrZXQpCiAJY29ubnNv Y2tldCA9IFBRc29ja2V0KGNvbm4pOwogCWlmIChjb25uc29ja2V0IDwgMCkKIAl7Ci0JCWZw cmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBzb2NrZXQ6ICVzIiksIHByb2duYW1lLAot CQkJCVBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIHNv Y2tldDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCXJldHVybiAtMTsKIAl9CiAK QEAgLTkyNCw4ICs5MDEsNyBAQCBDb3B5U3RyZWFtUG9sbChQR2Nvbm4gKmNvbm4sIGxvbmcg dGltZW91dF9tcywgcGdzb2NrZXQgc3RvcF9zb2NrZXQpCiAJewogCQlpZiAoZXJybm8gPT0g RUlOVFIpCiAJCQlyZXR1cm4gMDsJCQkvKiBHb3QgYSBzaWduYWwsIHNvIG5vdCBhbiBlcnJv ciAqLwotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHNlbGVjdCgpIGZhaWxlZDogJXNcbiIp LAotCQkJCXByb2duYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoInNl bGVjdCgpIGZhaWxlZDogJW0iKTsKIAkJcmV0dXJuIC0xOwogCX0KIAlpZiAocmV0ID4gMCAm JiBGRF9JU1NFVChjb25uc29ja2V0LCAmaW5wdXRfbWFzaykpCkBAIC05NzUsOSArOTUxLDgg QEAgQ29weVN0cmVhbVJlY2VpdmUoUEdjb25uICpjb25uLCBsb25nIHRpbWVvdXQsIHBnc29j a2V0IHN0b3Bfc29ja2V0LAogCQkvKiBOb3cgdGhlcmUgaXMgYWN0dWFsbHkgZGF0YSBvbiB0 aGUgc29ja2V0ICovCiAJCWlmIChQUWNvbnN1bWVJbnB1dChjb25uKSA9PSAwKQogCQl7Ci0J CQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGNvdWxkIG5vdCByZWNlaXZlIGRhdGEg ZnJvbSBXQUwgc3RyZWFtOiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVjZWl2ZSBkYXRhIGZyb20g V0FMIHN0cmVhbTogJXMiLAorCQkJCQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJCXJl dHVybiAtMTsKIAkJfQogCkBAIC05OTAsOCArOTY1LDcgQEAgQ29weVN0cmVhbVJlY2VpdmUo UEdjb25uICpjb25uLCBsb25nIHRpbWVvdXQsIHBnc29ja2V0IHN0b3Bfc29ja2V0LAogCQly ZXR1cm4gLTI7CiAJaWYgKHJhd2xlbiA9PSAtMikKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBf KCIlczogY291bGQgbm90IHJlYWQgQ09QWSBkYXRhOiAlcyIpLAotCQkJCXByb2duYW1lLCBQ UWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHJlYWQg Q09QWSBkYXRhOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJcmV0dXJuIC0xOwog CX0KIApAQCAtMTAyMSw4ICs5OTUsNyBAQCBQcm9jZXNzS2VlcGFsaXZlTXNnKFBHY29ubiAq Y29ubiwgU3RyZWFtQ3RsICpzdHJlYW0sIGNoYXIgKmNvcHlidWYsIGludCBsZW4sCiAKIAlp ZiAobGVuIDwgcG9zICsgMSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogc3RyZWFt aW5nIGhlYWRlciB0b28gc21hbGw6ICVkXG4iKSwKLQkJCQlwcm9nbmFtZSwgbGVuKTsKKwkJ cGdfbG9nX2Vycm9yKCJzdHJlYW1pbmcgaGVhZGVyIHRvbyBzbWFsbDogJWQiLCBsZW4pOwog CQlyZXR1cm4gZmFsc2U7CiAJfQogCXJlcGx5UmVxdWVzdGVkID0gY29weWJ1Zltwb3NdOwpA QCAtMTA0Miw4ICsxMDE1LDggQEAgUHJvY2Vzc0tlZXBhbGl2ZU1zZyhQR2Nvbm4gKmNvbm4s IFN0cmVhbUN0bCAqc3RyZWFtLCBjaGFyICpjb3B5YnVmLCBpbnQgbGVuLAogCQkJICovCiAJ CQlpZiAoc3RyZWFtLT53YWxtZXRob2QtPnN5bmMod2FsZmlsZSkgIT0gMCkKIAkJCXsKLQkJ CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBmc3luYyBmaWxlIFwiJXNcIjog JXNcbiIpLAotCQkJCQkJcHJvZ25hbWUsIGN1cnJlbnRfd2FsZmlsZV9uYW1lLCBzdHJlYW0t PndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQg bm90IGZzeW5jIGZpbGUgXCIlc1wiOiAlcyIsCisJCQkJCQkJIGN1cnJlbnRfd2FsZmlsZV9u YW1lLCBzdHJlYW0tPndhbG1ldGhvZC0+Z2V0bGFzdGVycm9yKCkpOwogCQkJCXJldHVybiBm YWxzZTsKIAkJCX0KIAkJCWxhc3RGbHVzaFBvc2l0aW9uID0gYmxvY2twb3M7CkBAIC0xMDg4 LDggKzEwNjEsNyBAQCBQcm9jZXNzWExvZ0RhdGFNc2coUEdjb25uICpjb25uLCBTdHJlYW1D dGwgKnN0cmVhbSwgY2hhciAqY29weWJ1ZiwgaW50IGxlbiwKIAloZHJfbGVuICs9IDg7CQkJ CS8qIHNlbmRUaW1lICovCiAJaWYgKGxlbiA8IGhkcl9sZW4pCiAJewotCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IHN0cmVhbWluZyBoZWFkZXIgdG9vIHNtYWxsOiAlZFxuIiksCi0JCQkJ cHJvZ25hbWUsIGxlbik7CisJCXBnX2xvZ19lcnJvcigic3RyZWFtaW5nIGhlYWRlciB0b28g c21hbGw6ICVkIiwgbGVuKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAkqYmxvY2twb3MgPSBm ZV9yZWN2aW50NjQoJmNvcHlidWZbMV0pOwpAQCAtMTEwNiw5ICsxMDc4LDggQEAgUHJvY2Vz c1hMb2dEYXRhTXNnKFBHY29ubiAqY29ubiwgU3RyZWFtQ3RsICpzdHJlYW0sIGNoYXIgKmNv cHlidWYsIGludCBsZW4sCiAJCS8qIE5vIGZpbGUgb3BlbiB5ZXQgKi8KIAkJaWYgKHhsb2dv ZmYgIT0gMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiByZWNlaXZl ZCB3cml0ZS1haGVhZCBsb2cgcmVjb3JkIGZvciBvZmZzZXQgJXUgd2l0aCBubyBmaWxlIG9w ZW5cbiIpLAotCQkJCQlwcm9nbmFtZSwgeGxvZ29mZik7CisJCQlwZ19sb2dfZXJyb3IoInJl Y2VpdmVkIHdyaXRlLWFoZWFkIGxvZyByZWNvcmQgZm9yIG9mZnNldCAldSB3aXRoIG5vIGZp bGUgb3BlbiIsCisJCQkJCQkgeGxvZ29mZik7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAl9 CkBAIC0xMTE3LDkgKzEwODgsOCBAQCBQcm9jZXNzWExvZ0RhdGFNc2coUEdjb25uICpjb25u LCBTdHJlYW1DdGwgKnN0cmVhbSwgY2hhciAqY29weWJ1ZiwgaW50IGxlbiwKIAkJLyogTW9y ZSBkYXRhIGluIGV4aXN0aW5nIHNlZ21lbnQgKi8KIAkJaWYgKHN0cmVhbS0+d2FsbWV0aG9k LT5nZXRfY3VycmVudF9wb3Mod2FsZmlsZSkgIT0geGxvZ29mZikKIAkJewotCQkJZnByaW50 ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBnb3QgV0FMIGRhdGEgb2Zmc2V0ICUwOHgsIGV4cGVj dGVkICUwOHhcbiIpLAotCQkJCQlwcm9nbmFtZSwgeGxvZ29mZiwgKGludCkgc3RyZWFtLT53 YWxtZXRob2QtPmdldF9jdXJyZW50X3Bvcyh3YWxmaWxlKSk7CisJCQlwZ19sb2dfZXJyb3Io ImdvdCBXQUwgZGF0YSBvZmZzZXQgJTA4eCwgZXhwZWN0ZWQgJTA4eCIsCisJCQkJCQkgeGxv Z29mZiwgKGludCkgc3RyZWFtLT53YWxtZXRob2QtPmdldF9jdXJyZW50X3Bvcyh3YWxmaWxl KSk7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAl9CkBAIC0xMTUyLDEwICsxMTIyLDkgQEAg UHJvY2Vzc1hMb2dEYXRhTXNnKFBHY29ubiAqY29ubiwgU3RyZWFtQ3RsICpzdHJlYW0sIGNo YXIgKmNvcHlidWYsIGludCBsZW4sCiAJCWlmIChzdHJlYW0tPndhbG1ldGhvZC0+d3JpdGUo d2FsZmlsZSwgY29weWJ1ZiArIGhkcl9sZW4gKyBieXRlc193cml0dGVuLAogCQkJCQkJCQkJ IGJ5dGVzX3RvX3dyaXRlKSAhPSBieXRlc190b193cml0ZSkKIAkJewotCQkJZnByaW50Zihz dGRlcnIsCi0JCQkJCV8oIiVzOiBjb3VsZCBub3Qgd3JpdGUgJXUgYnl0ZXMgdG8gV0FMIGZp bGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJCXByb2duYW1lLCBieXRlc190b193cml0ZSwgY3Vy cmVudF93YWxmaWxlX25hbWUsCi0JCQkJCXN0cmVhbS0+d2FsbWV0aG9kLT5nZXRsYXN0ZXJy b3IoKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCB3cml0ZSAldSBieXRlcyB0byBX QUwgZmlsZSBcIiVzXCI6ICVzIiwKKwkJCQkJCSBieXRlc190b193cml0ZSwgY3VycmVudF93 YWxmaWxlX25hbWUsCisJCQkJCQkgc3RyZWFtLT53YWxtZXRob2QtPmdldGxhc3RlcnJvcigp KTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCkBAIC0xMTc4LDggKzExNDcsOCBAQCBQcm9j ZXNzWExvZ0RhdGFNc2coUEdjb25uICpjb25uLCBTdHJlYW1DdGwgKnN0cmVhbSwgY2hhciAq Y29weWJ1ZiwgaW50IGxlbiwKIAkJCXsKIAkJCQlpZiAoUFFwdXRDb3B5RW5kKGNvbm4sIE5V TEwpIDw9IDAgfHwgUFFmbHVzaChjb25uKSkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJy LCBfKCIlczogY291bGQgbm90IHNlbmQgY29weS1lbmQgcGFja2V0OiAlcyIpLAotCQkJCQkJ CXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCQkJCXBnX2xvZ19lcnJvcigi Y291bGQgbm90IHNlbmQgY29weS1lbmQgcGFja2V0OiAlcyIsCisJCQkJCQkJCSBQUWVycm9y TWVzc2FnZShjb25uKSk7CiAJCQkJCXJldHVybiBmYWxzZTsKIAkJCQl9CiAJCQkJc3RpbGxf c2VuZGluZyA9IGZhbHNlOwpAQCAtMTIxOCw5ICsxMTg3LDggQEAgSGFuZGxlRW5kT2ZDb3B5 U3RyZWFtKFBHY29ubiAqY29ubiwgU3RyZWFtQ3RsICpzdHJlYW0sIGNoYXIgKmNvcHlidWYs CiAJCXsKIAkJCWlmIChQUXB1dENvcHlFbmQoY29ubiwgTlVMTCkgPD0gMCB8fCBQUWZsdXNo KGNvbm4pKQogCQkJewotCQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQkJXygiJXM6IGNvdWxk IG5vdCBzZW5kIGNvcHktZW5kIHBhY2tldDogJXMiKSwKLQkJCQkJCXByb2duYW1lLCBQUWVy cm9yTWVzc2FnZShjb25uKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc2VuZCBj b3B5LWVuZCBwYWNrZXQ6ICVzIiwKKwkJCQkJCQkgUFFlcnJvck1lc3NhZ2UoY29ubikpOwog CQkJCVBRY2xlYXIocmVzKTsKIAkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KQEAgLTEyNTAsOCAr MTIxOCw4IEBAIENoZWNrQ29weVN0cmVhbVN0b3AoUEdjb25uICpjb25uLCBTdHJlYW1DdGwg KnN0cmVhbSwgWExvZ1JlY1B0ciBibG9ja3BvcywKIAkJfQogCQlpZiAoUFFwdXRDb3B5RW5k KGNvbm4sIE5VTEwpIDw9IDAgfHwgUFFmbHVzaChjb25uKSkKIAkJewotCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgc2VuZCBjb3B5LWVuZCBwYWNrZXQ6ICVzIiksCi0J CQkJCXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCQlwZ19sb2dfZXJyb3Io ImNvdWxkIG5vdCBzZW5kIGNvcHktZW5kIHBhY2tldDogJXMiLAorCQkJCQkJIFBRZXJyb3JN ZXNzYWdlKGNvbm4pKTsKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCQlzdGlsbF9zZW5kaW5n ID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvc3RyZWFtdXRp bC5jIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3N0cmVhbXV0aWwuYwppbmRleCA3ZTg2ODMw YWQ4Li5hYjJlNTVkNjk1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvc3Ry ZWFtdXRpbC5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9zdHJlYW11dGlsLmMKQEAg LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCiAjaW5jbHVk ZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvY29ubmVjdC5o IgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJwb3J0L3BnX2Jz d2FwLmgiCiAjaW5jbHVkZSAicHFleHBidWZmZXIuaCIKIApAQCAtOTAsNyArOTEsNyBAQCBH ZXRDb25uZWN0aW9uKHZvaWQpCiAJCWNvbm5fb3B0cyA9IFBRY29ubmluZm9QYXJzZShjb25u ZWN0aW9uX3N0cmluZywgJmVycl9tc2cpOwogCQlpZiAoY29ubl9vcHRzID09IE5VTEwpCiAJ CXsKLQkJCWZwcmludGYoc3RkZXJyLCAiJXM6ICVzIiwgcHJvZ25hbWUsIGVycl9tc2cpOwor CQkJcGdfbG9nX2Vycm9yKCIlcyIsIGVycl9tc2cpOwogCQkJZXhpdCgxKTsKIAkJfQogCkBA IC0xODMsOCArMTg0LDcgQEAgR2V0Q29ubmVjdGlvbih2b2lkKQogCQkgKi8KIAkJaWYgKCF0 bXBjb25uKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjb25u ZWN0IHRvIHNlcnZlclxuIiksCi0JCQkJCXByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigi Y291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVyIik7CiAJCQlleGl0KDEpOwogCQl9CiAKQEAg LTIwMSw4ICsyMDEsOCBAQCBHZXRDb25uZWN0aW9uKHZvaWQpCiAKIAlpZiAoUFFzdGF0dXMo dG1wY29ubikgIT0gQ09OTkVDVElPTl9PSykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIl czogY291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVyOiAlcyIpLAotCQkJCXByb2duYW1lLCBQ UWVycm9yTWVzc2FnZSh0bXBjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNv bm5lY3QgdG8gc2VydmVyOiAlcyIsCisJCQkJCSBQUWVycm9yTWVzc2FnZSh0bXBjb25uKSk7 CiAJCVBRZmluaXNoKHRtcGNvbm4pOwogCQlmcmVlKHZhbHVlcyk7CiAJCWZyZWUoa2V5d29y ZHMpOwpAQCAtMjMwLDggKzIzMCw4IEBAIEdldENvbm5lY3Rpb24odm9pZCkKIAkJcmVzID0g UFFleGVjKHRtcGNvbm4sIEFMV0FZU19TRUNVUkVfU0VBUkNIX1BBVEhfU1FMKTsKIAkJaWYg KFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQogCQl7Ci0JCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjbGVhciBzZWFyY2hfcGF0aDogJXMiKSwK LQkJCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKHRtcGNvbm4pKTsKKwkJCXBnX2xvZ19l cnJvcigiY291bGQgbm90IGNsZWFyIHNlYXJjaF9wYXRoOiAlcyIsCisJCQkJCQkgUFFlcnJv ck1lc3NhZ2UodG1wY29ubikpOwogCQkJUFFjbGVhcihyZXMpOwogCQkJUFFmaW5pc2godG1w Y29ubik7CiAJCQlleGl0KDEpOwpAQCAtMjQ2LDE4ICsyNDYsMTQgQEAgR2V0Q29ubmVjdGlv bih2b2lkKQogCXRtcHBhcmFtID0gUFFwYXJhbWV0ZXJTdGF0dXModG1wY29ubiwgImludGVn ZXJfZGF0ZXRpbWVzIik7CiAJaWYgKCF0bXBwYXJhbSkKIAl7Ci0JCWZwcmludGYoc3RkZXJy LAotCQkJCV8oIiVzOiBjb3VsZCBub3QgZGV0ZXJtaW5lIHNlcnZlciBzZXR0aW5nIGZvciBp bnRlZ2VyX2RhdGV0aW1lc1xuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3Io ImNvdWxkIG5vdCBkZXRlcm1pbmUgc2VydmVyIHNldHRpbmcgZm9yIGludGVnZXJfZGF0ZXRp bWVzIik7CiAJCVBRZmluaXNoKHRtcGNvbm4pOwogCQlleGl0KDEpOwogCX0KIAogCWlmIChz dHJjbXAodG1wcGFyYW0sICJvbiIpICE9IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJ CQlfKCIlczogaW50ZWdlcl9kYXRldGltZXMgY29tcGlsZSBmbGFnIGRvZXMgbm90IG1hdGNo IHNlcnZlclxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoImludGVnZXJf ZGF0ZXRpbWVzIGNvbXBpbGUgZmxhZyBkb2VzIG5vdCBtYXRjaCBzZXJ2ZXIiKTsKIAkJUFFm aW5pc2godG1wY29ubik7CiAJCWV4aXQoMSk7CiAJfQpAQCAtMzAwLDE3ICsyOTYsMTYgQEAg UmV0cmlldmVXYWxTZWdTaXplKFBHY29ubiAqY29ubikKIAlyZXMgPSBQUWV4ZWMoY29ubiwg IlNIT1cgd2FsX3NlZ21lbnRfc2l6ZSIpOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9 IFBHUkVTX1RVUExFU19PSykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQg bm90IHNlbmQgcmVwbGljYXRpb24gY29tbWFuZCBcIiVzXCI6ICVzIiksCi0JCQkJcHJvZ25h bWUsICJTSE9XIHdhbF9zZWdtZW50X3NpemUiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNlbmQgcmVwbGljYXRpb24gY29tbWFuZCBcIiVz XCI6ICVzIiwKKwkJCQkJICJTSE9XIHdhbF9zZWdtZW50X3NpemUiLCBQUWVycm9yTWVzc2Fn ZShjb25uKSk7CiAKIAkJUFFjbGVhcihyZXMpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCWlm IChQUW50dXBsZXMocmVzKSAhPSAxIHx8IFBRbmZpZWxkcyhyZXMpIDwgMSkKIAl7Ci0JCWZw cmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBjb3VsZCBub3QgZmV0Y2ggV0FMIHNlZ21lbnQg c2l6ZTogZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93cyBhbmQg JWQgb3IgbW9yZSBmaWVsZHNcbiIpLAotCQkJCXByb2duYW1lLCBQUW50dXBsZXMocmVzKSwg UFFuZmllbGRzKHJlcyksIDEsIDEpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBmZXRj aCBXQUwgc2VnbWVudCBzaXplOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3Rl ZCAlZCByb3dzIGFuZCAlZCBvciBtb3JlIGZpZWxkcyIsCisJCQkJCSBQUW50dXBsZXMocmVz KSwgUFFuZmllbGRzKHJlcyksIDEsIDEpOwogCiAJCVBRY2xlYXIocmVzKTsKIAkJcmV0dXJu IGZhbHNlOwpAQCAtMzE5LDggKzMxNCw3IEBAIFJldHJpZXZlV2FsU2VnU2l6ZShQR2Nvbm4g KmNvbm4pCiAJLyogZmV0Y2ggeGxvZyB2YWx1ZSBhbmQgdW5pdCBmcm9tIHRoZSByZXN1bHQg Ki8KIAlpZiAoc3NjYW5mKFBRZ2V0dmFsdWUocmVzLCAwLCAwKSwgIiVkJXMiLCAmeGxvZ192 YWwsIHhsb2dfdW5pdCkgIT0gMikKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogV0FM IHNlZ21lbnQgc2l6ZSBjb3VsZCBub3QgYmUgcGFyc2VkXG4iKSwKLQkJCQlwcm9nbmFtZSk7 CisJCXBnX2xvZ19lcnJvcigiV0FMIHNlZ21lbnQgc2l6ZSBjb3VsZCBub3QgYmUgcGFyc2Vk Iik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTMzNSwxMSArMzI5LDEwIEBAIFJldHJp ZXZlV2FsU2VnU2l6ZShQR2Nvbm4gKmNvbm4pCiAKIAlpZiAoIUlzVmFsaWRXYWxTZWdTaXpl KFdhbFNlZ1N6KSkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCW5nZXR0ZXh0KCIlczog V0FMIHNlZ21lbnQgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIGJldHdlZW4gMSBNQiBh bmQgMSBHQiwgYnV0IHRoZSByZW1vdGUgc2VydmVyIHJlcG9ydGVkIGEgdmFsdWUgb2YgJWQg Ynl0ZVxuIiwKLQkJCQkJCSAiJXM6IFdBTCBzZWdtZW50IHNpemUgbXVzdCBiZSBhIHBvd2Vy IG9mIHR3byBiZXR3ZWVuIDEgTUIgYW5kIDEgR0IsIGJ1dCB0aGUgcmVtb3RlIHNlcnZlciBy ZXBvcnRlZCBhIHZhbHVlIG9mICVkIGJ5dGVzXG4iLAotCQkJCQkJIFdhbFNlZ1N6KSwKLQkJ CQlwcm9nbmFtZSwgV2FsU2VnU3opOworCQlwZ19sb2dfZXJyb3IobmdldHRleHQoIldBTCBz ZWdtZW50IHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3byBiZXR3ZWVuIDEgTUIgYW5kIDEg R0IsIGJ1dCB0aGUgcmVtb3RlIHNlcnZlciByZXBvcnRlZCBhIHZhbHVlIG9mICVkIGJ5dGUi LAorCQkJCQkJCSAgIldBTCBzZWdtZW50IHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3byBi ZXR3ZWVuIDEgTUIgYW5kIDEgR0IsIGJ1dCB0aGUgcmVtb3RlIHNlcnZlciByZXBvcnRlZCBh IHZhbHVlIG9mICVkIGJ5dGVzIiwKKwkJCQkJCQkgIFdhbFNlZ1N6KSwKKwkJCQkJIFdhbFNl Z1N6KTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIApAQCAtMzc0LDE3ICszNjcsMTYgQEAgUmV0 cmlldmVEYXRhRGlyQ3JlYXRlUGVybShQR2Nvbm4gKmNvbm4pCiAJcmVzID0gUFFleGVjKGNv bm4sICJTSE9XIGRhdGFfZGlyZWN0b3J5X21vZGUiKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMo cmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IGNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIlc1wiOiAlcyIpLAotCQkJ CXByb2duYW1lLCAiU0hPVyBkYXRhX2RpcmVjdG9yeV9tb2RlIiwgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNv bW1hbmQgXCIlc1wiOiAlcyIsCisJCQkJCSAiU0hPVyBkYXRhX2RpcmVjdG9yeV9tb2RlIiwg UFFlcnJvck1lc3NhZ2UoY29ubikpOwogCiAJCVBRY2xlYXIocmVzKTsKIAkJcmV0dXJuIGZh bHNlOwogCX0KIAlpZiAoUFFudHVwbGVzKHJlcykgIT0gMSB8fCBQUW5maWVsZHMocmVzKSA8 IDEpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQlfKCIlczogY291bGQgbm90IGZldGNo IGdyb3VwIGFjY2VzcyBmbGFnOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3Rl ZCAlZCByb3dzIGFuZCAlZCBvciBtb3JlIGZpZWxkc1xuIiksCi0JCQkJcHJvZ25hbWUsIFBR bnR1cGxlcyhyZXMpLCBQUW5maWVsZHMocmVzKSwgMSwgMSk7CisJCXBnX2xvZ19lcnJvcigi Y291bGQgbm90IGZldGNoIGdyb3VwIGFjY2VzcyBmbGFnOiBnb3QgJWQgcm93cyBhbmQgJWQg ZmllbGRzLCBleHBlY3RlZCAlZCByb3dzIGFuZCAlZCBvciBtb3JlIGZpZWxkcyIsCisJCQkJ CSBQUW50dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDEsIDEpOwogCiAJCVBRY2xlYXIo cmVzKTsKIAkJcmV0dXJuIGZhbHNlOwpAQCAtMzkyLDggKzM4NCw4IEBAIFJldHJpZXZlRGF0 YURpckNyZWF0ZVBlcm0oUEdjb25uICpjb25uKQogCiAJaWYgKHNzY2FuZihQUWdldHZhbHVl KHJlcywgMCwgMCksICIlbyIsICZkYXRhX2RpcmVjdG9yeV9tb2RlKSAhPSAxKQogCXsKLQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBncm91cCBhY2Nlc3MgZmxhZyBjb3VsZCBub3QgYmUg cGFyc2VkOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIFBRZ2V0dmFsdWUocmVzLCAwLCAwKSk7 CisJCXBnX2xvZ19lcnJvcigiZ3JvdXAgYWNjZXNzIGZsYWcgY291bGQgbm90IGJlIHBhcnNl ZDogJXMiLAorCQkJCQkgUFFnZXR2YWx1ZShyZXMsIDAsIDApKTsKIAogCQlQUWNsZWFyKHJl cyk7CiAJCXJldHVybiBmYWxzZTsKQEAgLTQyNywxNyArNDE5LDE2IEBAIFJ1bklkZW50aWZ5 U3lzdGVtKFBHY29ubiAqY29ubiwgY2hhciAqKnN5c2lkLCBUaW1lTGluZUlEICpzdGFydHRs aSwKIAlyZXMgPSBQUWV4ZWMoY29ubiwgIklERU5USUZZX1NZU1RFTSIpOwogCWlmIChQUXJl c3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKIAl7Ci0JCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IHNlbmQgcmVwbGljYXRpb24gY29tbWFuZCBcIiVzXCI6 ICVzIiksCi0JCQkJcHJvZ25hbWUsICJJREVOVElGWV9TWVNURU0iLCBQUWVycm9yTWVzc2Fn ZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNlbmQgcmVwbGljYXRpb24g Y29tbWFuZCBcIiVzXCI6ICVzIiwKKwkJCQkJICJJREVOVElGWV9TWVNURU0iLCBQUWVycm9y TWVzc2FnZShjb25uKSk7CiAKIAkJUFFjbGVhcihyZXMpOwogCQlyZXR1cm4gZmFsc2U7CiAJ fQogCWlmIChQUW50dXBsZXMocmVzKSAhPSAxIHx8IFBRbmZpZWxkcyhyZXMpIDwgMykKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLAotCQkJCV8oIiVzOiBjb3VsZCBub3QgaWRlbnRpZnkgc3lz dGVtOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3RlZCAlZCByb3dzIGFuZCAl ZCBvciBtb3JlIGZpZWxkc1xuIiksCi0JCQkJcHJvZ25hbWUsIFBRbnR1cGxlcyhyZXMpLCBQ UW5maWVsZHMocmVzKSwgMSwgMyk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGlkZW50 aWZ5IHN5c3RlbTogZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93 cyBhbmQgJWQgb3IgbW9yZSBmaWVsZHMiLAorCQkJCQkgUFFudHVwbGVzKHJlcyksIFBRbmZp ZWxkcyhyZXMpLCAxLCAzKTsKIAogCQlQUWNsZWFyKHJlcyk7CiAJCXJldHVybiBmYWxzZTsK QEAgLTQ1Niw5ICs0NDcsOCBAQCBSdW5JZGVudGlmeVN5c3RlbShQR2Nvbm4gKmNvbm4sIGNo YXIgKipzeXNpZCwgVGltZUxpbmVJRCAqc3RhcnR0bGksCiAJewogCQlpZiAoc3NjYW5mKFBR Z2V0dmFsdWUocmVzLCAwLCAyKSwgIiVYLyVYIiwgJmhpLCAmbG8pICE9IDIpCiAJCXsKLQkJ CWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogY291bGQgbm90IHBhcnNlIHdyaXRlLWFo ZWFkIGxvZyBsb2NhdGlvbiBcIiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgUFFnZXR2YWx1 ZShyZXMsIDAsIDIpKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHBhcnNlIHdyaXRl LWFoZWFkIGxvZyBsb2NhdGlvbiBcIiVzXCIiLAorCQkJCQkJIFBRZ2V0dmFsdWUocmVzLCAw LCAyKSk7CiAKIAkJCVBRY2xlYXIocmVzKTsKIAkJCXJldHVybiBmYWxzZTsKQEAgLTQ3NCw5 ICs0NjQsOCBAQCBSdW5JZGVudGlmeVN5c3RlbShQR2Nvbm4gKmNvbm4sIGNoYXIgKipzeXNp ZCwgVGltZUxpbmVJRCAqc3RhcnR0bGksCiAJCXsKIAkJCWlmIChQUW5maWVsZHMocmVzKSA8 IDQpCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQlfKCIlczogY291bGQgbm90 IGlkZW50aWZ5IHN5c3RlbTogZ290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQg JWQgcm93cyBhbmQgJWQgb3IgbW9yZSBmaWVsZHNcbiIpLAotCQkJCQkJcHJvZ25hbWUsIFBR bnR1cGxlcyhyZXMpLCBQUW5maWVsZHMocmVzKSwgMSwgNCk7CisJCQkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3QgaWRlbnRpZnkgc3lzdGVtOiBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRz LCBleHBlY3RlZCAlZCByb3dzIGFuZCAlZCBvciBtb3JlIGZpZWxkcyIsCisJCQkJCQkJIFBR bnR1cGxlcyhyZXMpLCBQUW5maWVsZHMocmVzKSwgMSwgNCk7CiAKIAkJCQlQUWNsZWFyKHJl cyk7CiAJCQkJcmV0dXJuIGZhbHNlOwpAQCAtNTQxLDggKzUzMCw4IEBAIENyZWF0ZVJlcGxp Y2F0aW9uU2xvdChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnNsb3RfbmFtZSwgY29uc3Qg Y2hhciAqcGx1Z2luLAogCQl9CiAJCWVsc2UKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBjb3VsZCBub3Qgc2VuZCByZXBsaWNhdGlvbiBjb21tYW5kIFwiJXNcIjogJXMiKSwK LQkJCQkJcHJvZ25hbWUsIHF1ZXJ5LT5kYXRhLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJ CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBzZW5kIHJlcGxpY2F0aW9uIGNvbW1hbmQgXCIl c1wiOiAlcyIsCisJCQkJCQkgcXVlcnktPmRhdGEsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsK IAogCQkJZGVzdHJveVBRRXhwQnVmZmVyKHF1ZXJ5KTsKIAkJCVBRY2xlYXIocmVzKTsKQEAg LTU1MiwxMCArNTQxLDkgQEAgQ3JlYXRlUmVwbGljYXRpb25TbG90KFBHY29ubiAqY29ubiwg Y29uc3QgY2hhciAqc2xvdF9uYW1lLCBjb25zdCBjaGFyICpwbHVnaW4sCiAKIAlpZiAoUFFu dHVwbGVzKHJlcykgIT0gMSB8fCBQUW5maWVsZHMocmVzKSAhPSA0KQogCXsKLQkJZnByaW50 ZihzdGRlcnIsCi0JCQkJXygiJXM6IGNvdWxkIG5vdCBjcmVhdGUgcmVwbGljYXRpb24gc2xv dCBcIiVzXCI6IGdvdCAlZCByb3dzIGFuZCAlZCBmaWVsZHMsIGV4cGVjdGVkICVkIHJvd3Mg YW5kICVkIGZpZWxkc1xuIiksCi0JCQkJcHJvZ25hbWUsIHNsb3RfbmFtZSwKLQkJCQlQUW50 dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDEsIDQpOworCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCBjcmVhdGUgcmVwbGljYXRpb24gc2xvdCBcIiVzXCI6IGdvdCAlZCByb3dzIGFu ZCAlZCBmaWVsZHMsIGV4cGVjdGVkICVkIHJvd3MgYW5kICVkIGZpZWxkcyIsCisJCQkJCSBz bG90X25hbWUsCisJCQkJCSBQUW50dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDEsIDQp OwogCiAJCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7CiAJCVBRY2xlYXIocmVzKTsKQEAg LTU4Nyw4ICs1NzUsOCBAQCBEcm9wUmVwbGljYXRpb25TbG90KFBHY29ubiAqY29ubiwgY29u c3QgY2hhciAqc2xvdF9uYW1lKQogCXJlcyA9IFBRZXhlYyhjb25uLCBxdWVyeS0+ZGF0YSk7 CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKIAl7Ci0J CWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHNlbmQgcmVwbGljYXRpb24gY29t bWFuZCBcIiVzXCI6ICVzIiksCi0JCQkJcHJvZ25hbWUsIHF1ZXJ5LT5kYXRhLCBQUWVycm9y TWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNlbmQgcmVwbGlj YXRpb24gY29tbWFuZCBcIiVzXCI6ICVzIiwKKwkJCQkJIHF1ZXJ5LT5kYXRhLCBQUWVycm9y TWVzc2FnZShjb25uKSk7CiAKIAkJZGVzdHJveVBRRXhwQnVmZmVyKHF1ZXJ5KTsKIAkJUFFj bGVhcihyZXMpOwpAQCAtNTk3LDEwICs1ODUsOSBAQCBEcm9wUmVwbGljYXRpb25TbG90KFBH Y29ubiAqY29ubiwgY29uc3QgY2hhciAqc2xvdF9uYW1lKQogCiAJaWYgKFBRbnR1cGxlcyhy ZXMpICE9IDAgfHwgUFFuZmllbGRzKHJlcykgIT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJy LAotCQkJCV8oIiVzOiBjb3VsZCBub3QgZHJvcCByZXBsaWNhdGlvbiBzbG90IFwiJXNcIjog Z290ICVkIHJvd3MgYW5kICVkIGZpZWxkcywgZXhwZWN0ZWQgJWQgcm93cyBhbmQgJWQgZmll bGRzXG4iKSwKLQkJCQlwcm9nbmFtZSwgc2xvdF9uYW1lLAotCQkJCVBRbnR1cGxlcyhyZXMp LCBQUW5maWVsZHMocmVzKSwgMCwgMCk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGRy b3AgcmVwbGljYXRpb24gc2xvdCBcIiVzXCI6IGdvdCAlZCByb3dzIGFuZCAlZCBmaWVsZHMs IGV4cGVjdGVkICVkIHJvd3MgYW5kICVkIGZpZWxkcyIsCisJCQkJCSBzbG90X25hbWUsCisJ CQkJCSBQUW50dXBsZXMocmVzKSwgUFFuZmllbGRzKHJlcyksIDAsIDApOwogCiAJCWRlc3Ry b3lQUUV4cEJ1ZmZlcihxdWVyeSk7CiAJCVBRY2xlYXIocmVzKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfYmFzZWJhY2t1cC93YWxtZXRob2RzLmMgYi9zcmMvYmluL3BnX2Jhc2ViYWNr dXAvd2FsbWV0aG9kcy5jCmluZGV4IDE2NWIzYTFlODkuLjgzYjUyMDg5OGIgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC93YWxtZXRob2RzLmMKKysrIGIvc3JjL2Jpbi9w Z19iYXNlYmFja3VwL3dhbG1ldGhvZHMuYwpAQCAtMTU1LDggKzE1NSw4IEBAIGRpcl9vcGVu X2Zvcl93cml0ZShjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3QgY2hhciAqdGVtcF9zdWZm aXgsIHNpemVfdCBwYWRfdG9fCiAJICovCiAJaWYgKGRpcl9kYXRhLT5zeW5jKQogCXsKLQkJ aWYgKGZzeW5jX2ZuYW1lKHRtcHBhdGgsIGZhbHNlLCBwcm9nbmFtZSkgIT0gMCB8fAotCQkJ ZnN5bmNfcGFyZW50X3BhdGgodG1wcGF0aCwgcHJvZ25hbWUpICE9IDApCisJCWlmIChmc3lu Y19mbmFtZSh0bXBwYXRoLCBmYWxzZSkgIT0gMCB8fAorCQkJZnN5bmNfcGFyZW50X3BhdGgo dG1wcGF0aCkgIT0gMCkKIAkJewogI2lmZGVmIEhBVkVfTElCWgogCQkJaWYgKGRpcl9kYXRh LT5jb21wcmVzc2lvbiA+IDApCkBAIC0yNDQsNyArMjQ0LDcgQEAgZGlyX2Nsb3NlKFdhbGZp bGUgZiwgV2FsQ2xvc2VNZXRob2QgbWV0aG9kKQogCQkJc25wcmludGYodG1wcGF0aDIsIHNp emVvZih0bXBwYXRoMiksICIlcy8lcyVzIiwKIAkJCQkJIGRpcl9kYXRhLT5iYXNlZGlyLCBk Zi0+cGF0aG5hbWUsCiAJCQkJCSBkaXJfZGF0YS0+Y29tcHJlc3Npb24gPiAwID8gIi5neiIg OiAiIik7Ci0JCQlyID0gZHVyYWJsZV9yZW5hbWUodG1wcGF0aCwgdG1wcGF0aDIsIHByb2du YW1lKTsKKwkJCXIgPSBkdXJhYmxlX3JlbmFtZSh0bXBwYXRoLCB0bXBwYXRoMik7CiAJCX0K IAkJZWxzZSBpZiAobWV0aG9kID09IENMT1NFX1VOTElOSykKIAkJewpAQCAtMjY0LDkgKzI2 NCw5IEBAIGRpcl9jbG9zZShXYWxmaWxlIGYsIFdhbENsb3NlTWV0aG9kIG1ldGhvZCkKIAkJ CSAqLwogCQkJaWYgKGRpcl9kYXRhLT5zeW5jKQogCQkJewotCQkJCXIgPSBmc3luY19mbmFt ZShkZi0+ZnVsbHBhdGgsIGZhbHNlLCBwcm9nbmFtZSk7CisJCQkJciA9IGZzeW5jX2ZuYW1l KGRmLT5mdWxscGF0aCwgZmFsc2UpOwogCQkJCWlmIChyID09IDApCi0JCQkJCXIgPSBmc3lu Y19wYXJlbnRfcGF0aChkZi0+ZnVsbHBhdGgsIHByb2duYW1lKTsKKwkJCQkJciA9IGZzeW5j X3BhcmVudF9wYXRoKGRmLT5mdWxscGF0aCk7CiAJCQl9CiAJCX0KIAl9CkBAIC0zMzksNyAr MzM5LDcgQEAgZGlyX2ZpbmlzaCh2b2lkKQogCQkgKiBGaWxlcyBhcmUgZnN5bmNlZCB3aGVu IHRoZXkgYXJlIGNsb3NlZCwgYnV0IHdlIG5lZWQgdG8gZnN5bmMgdGhlCiAJCSAqIGRpcmVj dG9yeSBlbnRyeSBoZXJlIGFzIHdlbGwuCiAJCSAqLwotCQlpZiAoZnN5bmNfZm5hbWUoZGly X2RhdGEtPmJhc2VkaXIsIHRydWUsIHByb2duYW1lKSAhPSAwKQorCQlpZiAoZnN5bmNfZm5h bWUoZGlyX2RhdGEtPmJhc2VkaXIsIHRydWUpICE9IDApCiAJCQlyZXR1cm4gZmFsc2U7CiAJ fQogCXJldHVybiB0cnVlOwpAQCAtOTcwLDkgKzk3MCw5IEBAIHRhcl9maW5pc2godm9pZCkK IAogCWlmICh0YXJfZGF0YS0+c3luYykKIAl7Ci0JCWlmIChmc3luY19mbmFtZSh0YXJfZGF0 YS0+dGFyZmlsZW5hbWUsIGZhbHNlLCBwcm9nbmFtZSkgIT0gMCkKKwkJaWYgKGZzeW5jX2Zu YW1lKHRhcl9kYXRhLT50YXJmaWxlbmFtZSwgZmFsc2UpICE9IDApCiAJCQlyZXR1cm4gZmFs c2U7Ci0JCWlmIChmc3luY19wYXJlbnRfcGF0aCh0YXJfZGF0YS0+dGFyZmlsZW5hbWUsIHBy b2duYW1lKSAhPSAwKQorCQlpZiAoZnN5bmNfcGFyZW50X3BhdGgodGFyX2RhdGEtPnRhcmZp bGVuYW1lKSAhPSAwKQogCQkJcmV0dXJuIGZhbHNlOwogCX0KIApkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19jb250cm9sZGF0YS9NYWtlZmlsZSBiL3NyYy9iaW4vcGdfY29udHJvbGRhdGEv TWFrZWZpbGUKaW5kZXggMmQ1YzU2MjEzMS4uNGQ5YzEzNzBmZSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19jb250cm9sZGF0YS9NYWtlZmlsZQorKysgYi9zcmMvYmluL3BnX2NvbnRyb2xk YXRhL01ha2VmaWxlCkBAIC0xNSwxMSArMTUsMTMgQEAgc3ViZGlyID0gc3JjL2Jpbi9wZ19j b250cm9sZGF0YQogdG9wX2J1aWxkZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVp bGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIAorTERGTEFHU19JTlRFUk5BTCArPSAtTCQo dG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMgLWxwZ2ZldXRpbHMKKwogT0JKUz0gcGdfY29u dHJvbGRhdGEubyAkKFdJTjMyUkVTKQogCiBhbGw6IHBnX2NvbnRyb2xkYXRhCiAKLXBnX2Nv bnRyb2xkYXRhOiAkKE9CSlMpIHwgc3VibWFrZS1saWJwZ3BvcnQKK3BnX2NvbnRyb2xkYXRh OiAkKE9CSlMpIHwgc3VibWFrZS1saWJwZ3BvcnQgc3VibWFrZS1saWJwZ2ZldXRpbHMKIAkk KENDKSAkKENGTEFHUykgJF4gJChMREZMQUdTKSAkKExERkxBR1NfRVgpICQoTElCUykgLW8g JEAkKFgpCiAKIGluc3RhbGw6IGFsbCBpbnN0YWxsZGlycwpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19jb250cm9sZGF0YS9wZ19jb250cm9sZGF0YS5jIGIvc3JjL2Jpbi9wZ19jb250cm9s ZGF0YS9wZ19jb250cm9sZGF0YS5jCmluZGV4IDFhYTFkYjIxOGEuLjY5NDIwZmZjYzAgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfY29udHJvbGRhdGEvcGdfY29udHJvbGRhdGEuYworKysg Yi9zcmMvYmluL3BnX2NvbnRyb2xkYXRhL3BnX2NvbnRyb2xkYXRhLmMKQEAgLTI0LDYgKzI0 LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ19pbnRlcm5hbC5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfY29udHJvbC5oIgogI2luY2x1ZGUgImNvbW1vbi9jb250cm9sZGF0YV91dGls cy5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJwZ19nZXRv cHQuaCIKICNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgogCkBAIC0xMDYsOCArMTA3LDggQEAg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWludAkJCWk7CiAJaW50CQkJV2FsU2Vn U3o7CiAKKwlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7CiAJc2V0X3BnbG9jYWxlX3Bnc2Vy dmljZShhcmd2WzBdLCBQR19URVhURE9NQUlOKCJwZ19jb250cm9sZGF0YSIpKTsKLQogCXBy b2duYW1lID0gZ2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwogCiAJaWYgKGFyZ2MgPiAxKQpAQCAt MTQ5LDggKzE1MCw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKiBDb21w bGFpbiBpZiBhbnkgYXJndW1lbnRzIHJlbWFpbiAqLwogCWlmIChvcHRpbmQgPCBhcmdjKQog CXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0b28gbWFueSBjb21tYW5kLWxpbmUgYXJn dW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJCQlwcm9nbmFtZSwgYXJndltvcHRp bmRdKTsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRz IChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJIGFyZ3Zbb3B0aW5kXSk7CiAJCWZwcmludGYo c3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIp LAogCQkJCXByb2duYW1lKTsKIAkJZXhpdCgxKTsKQEAgLTE1OCwxMyArMTU5LDEzIEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWlmIChEYXRhRGlyID09IE5VTEwpCiAJ ewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG5vIGRhdGEgZGlyZWN0b3J5IHNwZWNpZmll ZFxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJubyBkYXRhIGRpcmVjdG9yeSBz cGVjaWZpZWQiKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZv ciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJZXhpdCgxKTsKIAl9CiAK IAkvKiBnZXQgYSBjb3B5IG9mIHRoZSBjb250cm9sIGZpbGUgKi8KLQlDb250cm9sRmlsZSA9 IGdldF9jb250cm9sZmlsZShEYXRhRGlyLCBwcm9nbmFtZSwgJmNyY19vayk7CisJQ29udHJv bEZpbGUgPSBnZXRfY29udHJvbGZpbGUoRGF0YURpciwgJmNyY19vayk7CiAJaWYgKCFjcmNf b2spCiAJCXByaW50ZihfKCJXQVJOSU5HOiBDYWxjdWxhdGVkIENSQyBjaGVja3N1bSBkb2Vz IG5vdCBtYXRjaCB2YWx1ZSBzdG9yZWQgaW4gZmlsZS5cbiIKIAkJCQkgIkVpdGhlciB0aGUg ZmlsZSBpcyBjb3JydXB0LCBvciBpdCBoYXMgYSBkaWZmZXJlbnQgbGF5b3V0IHRoYW4gdGhp cyBwcm9ncmFtXG4iCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2N0bC9NYWtlZmlsZSBiL3Ny Yy9iaW4vcGdfY3RsL01ha2VmaWxlCmluZGV4IDgzY2JmOTdlZDguLmI5MzFiMTRhM2YgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfY3RsL01ha2VmaWxlCisrKyBiL3NyYy9iaW4vcGdfY3Rs L01ha2VmaWxlCkBAIC0xNiw2ICsxNiw4IEBAIHN1YmRpciA9IHNyYy9iaW4vcGdfY3RsCiB0 b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgogaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01h a2VmaWxlLmdsb2JhbAogCitMREZMQUdTX0lOVEVSTkFMICs9IC1MJCh0b3BfYnVpbGRkaXIp L3NyYy9mZV91dGlscyAtbHBnZmV1dGlscworCiAjIE9uIFdpbmRvd3MsIHdlIG5lZWQgdG8g bGluayB3aXRoIGxpYnBxLCBqdXN0IGZvciB1c2Ugb2YgcHFleHBidWZmZXI7CiAjIGJ1dCBs ZXQncyBub3QgcHVsbCB0aGF0IGluIG9uIHBsYXRmb3JtcyB3aGVyZSB3ZSBkb24ndCBuZWVk IGl0LgogaWZlcSAoJChQT1JUTkFNRSksIHdpbjMyKQpAQCAtMjgsNyArMzAsNyBAQCBPQkpT PQlwZ19jdGwubyAkKFdJTjMyUkVTKQogCiBhbGw6IHBnX2N0bAogCi1wZ19jdGw6ICQoT0JK UykgfCBzdWJtYWtlLWxpYnBncG9ydCAkKFNVQk1BS0VfTElCUFEpCitwZ19jdGw6ICQoT0JK UykgfCBzdWJtYWtlLWxpYnBncG9ydCBzdWJtYWtlLWxpYnBnZmV1dGlscyAkKFNVQk1BS0Vf TElCUFEpCiAJJChDQykgJChDRkxBR1MpICQoT0JKUykgJChMREZMQUdTKSAkKExERkxBR1Nf RVgpICQoTElCUykgLW8gJEAkKFgpCiAKIGluc3RhbGw6IGFsbCBpbnN0YWxsZGlycwpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19jdGwvcGdfY3RsLmMgYi9zcmMvYmluL3BnX2N0bC9wZ19j dGwuYwppbmRleCBjODJhNzAyZmZhLi5mZWJiMDc2ZWU2IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2N0bC9wZ19jdGwuYworKysgYi9zcmMvYmluL3BnX2N0bC9wZ19jdGwuYwpAQCAtMjYs NiArMjYsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29udHJvbC5oIgogI2luY2x1ZGUg ImNvbW1vbi9jb250cm9sZGF0YV91dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9maWxlX3Bl cm0uaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZ2V0b3B0 X2xvbmcuaCIKICNpbmNsdWRlICJ1dGlscy9waWRmaWxlLmgiCiAKQEAgLTIyMzEsNyArMjIz Miw3IEBAIGdldF9jb250cm9sX2Ric3RhdGUodm9pZCkKIHsKIAlEQlN0YXRlCQlyZXQ7CiAJ Ym9vbAkJY3JjX29rOwotCUNvbnRyb2xGaWxlRGF0YSAqY29udHJvbF9maWxlX2RhdGEgPSBn ZXRfY29udHJvbGZpbGUocGdfZGF0YSwgcHJvZ25hbWUsICZjcmNfb2spOworCUNvbnRyb2xG aWxlRGF0YSAqY29udHJvbF9maWxlX2RhdGEgPSBnZXRfY29udHJvbGZpbGUocGdfZGF0YSwg JmNyY19vayk7CiAKIAlpZiAoIWNyY19vaykKIAl7CkBAIC0yMjY4LDEwICsyMjY5LDcgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJaW50CQkJYzsKIAlwZ3BpZF90CQlraWxs cHJvYyA9IDA7CiAKLSNpZmRlZiBXSU4zMgotCXNldHZidWYoc3RkZXJyLCBOVUxMLCBfSU9O QkYsIDApOwotI2VuZGlmCi0KKwlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7CiAJcHJvZ25h bWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAJc2V0X3BnbG9jYWxlX3Bnc2VydmljZShh cmd2WzBdLCBQR19URVhURE9NQUlOKCJwZ19jdGwiKSk7CiAJc3RhcnRfdGltZSA9IHRpbWUo TlVMTCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvY29tbW9uLmMgYi9zcmMvYmlu L3BnX2R1bXAvY29tbW9uLmMKaW5kZXggMjQ5NzA2ZmU1Ny4uNTk1OGY0MmE4NCAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL2NvbW1vbi5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9j b21tb24uYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKICNpbmNs dWRlICJjYXRhbG9nL3BnX2NsYXNzX2QuaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5n LmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvc3RyaW5nX3V0aWxzLmgiCiAKIApAQCAtMTIwLDE3 ICsxMjEsMTQgQEAgZ2V0U2NoZW1hRGF0YShBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxl c1B0cikKIAkgKiBleHRlbnNpb24gbWVtYmVyc2hpcCBuZWVkcyB0byBiZSBjb25zdWx0YWJs ZSBkdXJpbmcgZGVjaXNpb25zIGFib3V0CiAJICogd2hldGhlciBvdGhlciBvYmplY3RzIGFy ZSB0byBiZSBkdW1wZWQuCiAJICovCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5V TEwsICJyZWFkaW5nIGV4dGVuc2lvbnNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIGV4 dGVuc2lvbnMiKTsKIAlleHRpbmZvID0gZ2V0RXh0ZW5zaW9ucyhmb3V0LCAmbnVtRXh0ZW5z aW9ucyk7CiAJZXh0aW5mb2luZGV4ID0gYnVpbGRJbmRleEFycmF5KGV4dGluZm8sIG51bUV4 dGVuc2lvbnMsIHNpemVvZihFeHRlbnNpb25JbmZvKSk7CiAKLQlpZiAoZ192ZXJib3NlKQot CQl3cml0ZV9tc2coTlVMTCwgImlkZW50aWZ5aW5nIGV4dGVuc2lvbiBtZW1iZXJzXG4iKTsK KwlwZ19sb2dfaW5mbygiaWRlbnRpZnlpbmcgZXh0ZW5zaW9uIG1lbWJlcnMiKTsKIAlnZXRF eHRlbnNpb25NZW1iZXJzaGlwKGZvdXQsIGV4dGluZm8sIG51bUV4dGVuc2lvbnMpOwogCi0J aWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHNjaGVtYXNcbiIp OworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHNjaGVtYXMiKTsKIAluc3BpbmZvID0gZ2V0TmFt ZXNwYWNlcyhmb3V0LCAmbnVtTmFtZXNwYWNlcyk7CiAJbnNwaW5mb2luZGV4ID0gYnVpbGRJ bmRleEFycmF5KG5zcGluZm8sIG51bU5hbWVzcGFjZXMsIHNpemVvZihOYW1lc3BhY2VJbmZv KSk7CiAKQEAgLTE0MCwxNjAgKzEzOCwxMjQgQEAgZ2V0U2NoZW1hRGF0YShBcmNoaXZlICpm b3V0LCBpbnQgKm51bVRhYmxlc1B0cikKIAkgKiBIb3dldmVyLCB3ZSBoYXZlIHRvIGRvIGdl dE5hbWVzcGFjZXMgZmlyc3QgYmVjYXVzZSB0aGUgdGFibGVzIGdldAogCSAqIGxpbmtlZCB0 byB0aGVpciBjb250YWluaW5nIG5hbWVzcGFjZXMgZHVyaW5nIGdldFRhYmxlcy4KIAkgKi8K LQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgdXNlci1kZWZp bmVkIHRhYmxlc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdXNlci1kZWZpbmVkIHRh YmxlcyIpOwogCXRibGluZm8gPSBnZXRUYWJsZXMoZm91dCwgJm51bVRhYmxlcyk7CiAJdGJs aW5mb2luZGV4ID0gYnVpbGRJbmRleEFycmF5KHRibGluZm8sIG51bVRhYmxlcywgc2l6ZW9m KFRhYmxlSW5mbykpOwogCiAJLyogRG8gdGhpcyBhZnRlciB3ZSd2ZSBidWlsdCB0YmxpbmZv aW5kZXggKi8KIAlnZXRPd25lZFNlcXMoZm91dCwgdGJsaW5mbywgbnVtVGFibGVzKTsKIAot CWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB1c2VyLWRlZmlu ZWQgZnVuY3Rpb25zXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyB1c2VyLWRlZmluZWQg ZnVuY3Rpb25zIik7CiAJZnVuaW5mbyA9IGdldEZ1bmNzKGZvdXQsICZudW1GdW5jcyk7CiAJ ZnVuaW5mb2luZGV4ID0gYnVpbGRJbmRleEFycmF5KGZ1bmluZm8sIG51bUZ1bmNzLCBzaXpl b2YoRnVuY0luZm8pKTsKIAogCS8qIHRoaXMgbXVzdCBiZSBhZnRlciBnZXRUYWJsZXMgYW5k IGdldEZ1bmNzICovCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFk aW5nIHVzZXItZGVmaW5lZCB0eXBlc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdXNl ci1kZWZpbmVkIHR5cGVzIik7CiAJdHlwaW5mbyA9IGdldFR5cGVzKGZvdXQsICZudW1UeXBl cyk7CiAJdHlwaW5mb2luZGV4ID0gYnVpbGRJbmRleEFycmF5KHR5cGluZm8sIG51bVR5cGVz LCBzaXplb2YoVHlwZUluZm8pKTsKIAogCS8qIHRoaXMgbXVzdCBiZSBhZnRlciBnZXRGdW5j cywgdG9vICovCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5n IHByb2NlZHVyYWwgbGFuZ3VhZ2VzXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyBwcm9j ZWR1cmFsIGxhbmd1YWdlcyIpOwogCWdldFByb2NMYW5ncyhmb3V0LCAmbnVtUHJvY0xhbmdz KTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB1c2Vy LWRlZmluZWQgYWdncmVnYXRlIGZ1bmN0aW9uc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRp bmcgdXNlci1kZWZpbmVkIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMiKTsKIAlnZXRBZ2dyZWdhdGVz KGZvdXQsICZudW1BZ2dyZWdhdGVzKTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21z ZyhOVUxMLCAicmVhZGluZyB1c2VyLWRlZmluZWQgb3BlcmF0b3JzXG4iKTsKKwlwZ19sb2df aW5mbygicmVhZGluZyB1c2VyLWRlZmluZWQgb3BlcmF0b3JzIik7CiAJb3ByaW5mbyA9IGdl dE9wZXJhdG9ycyhmb3V0LCAmbnVtT3BlcmF0b3JzKTsKIAlvcHJpbmZvaW5kZXggPSBidWls ZEluZGV4QXJyYXkob3ByaW5mbywgbnVtT3BlcmF0b3JzLCBzaXplb2YoT3BySW5mbykpOwog Ci0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHVzZXItZGVm aW5lZCBhY2Nlc3MgbWV0aG9kc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdXNlci1k ZWZpbmVkIGFjY2VzcyBtZXRob2RzIik7CiAJZ2V0QWNjZXNzTWV0aG9kcyhmb3V0LCAmbnVt QWNjZXNzTWV0aG9kcyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwg InJlYWRpbmcgdXNlci1kZWZpbmVkIG9wZXJhdG9yIGNsYXNzZXNcbiIpOworCXBnX2xvZ19p bmZvKCJyZWFkaW5nIHVzZXItZGVmaW5lZCBvcGVyYXRvciBjbGFzc2VzIik7CiAJZ2V0T3Bj bGFzc2VzKGZvdXQsICZudW1PcGNsYXNzZXMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3Jp dGVfbXNnKE5VTEwsICJyZWFkaW5nIHVzZXItZGVmaW5lZCBvcGVyYXRvciBmYW1pbGllc1xu Iik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdXNlci1kZWZpbmVkIG9wZXJhdG9yIGZhbWls aWVzIik7CiAJZ2V0T3BmYW1pbGllcyhmb3V0LCAmbnVtT3BmYW1pbGllcyk7CiAKLQlpZiAo Z192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgdXNlci1kZWZpbmVkIHRl eHQgc2VhcmNoIHBhcnNlcnNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHVzZXItZGVm aW5lZCB0ZXh0IHNlYXJjaCBwYXJzZXJzIik7CiAJZ2V0VFNQYXJzZXJzKGZvdXQsICZudW1U U1BhcnNlcnMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFk aW5nIHVzZXItZGVmaW5lZCB0ZXh0IHNlYXJjaCB0ZW1wbGF0ZXNcbiIpOworCXBnX2xvZ19p bmZvKCJyZWFkaW5nIHVzZXItZGVmaW5lZCB0ZXh0IHNlYXJjaCB0ZW1wbGF0ZXMiKTsKIAln ZXRUU1RlbXBsYXRlcyhmb3V0LCAmbnVtVFNUZW1wbGF0ZXMpOwogCi0JaWYgKGdfdmVyYm9z ZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHVzZXItZGVmaW5lZCB0ZXh0IHNlYXJj aCBkaWN0aW9uYXJpZXNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHVzZXItZGVmaW5l ZCB0ZXh0IHNlYXJjaCBkaWN0aW9uYXJpZXMiKTsKIAlnZXRUU0RpY3Rpb25hcmllcyhmb3V0 LCAmbnVtVFNEaWN0cyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwg InJlYWRpbmcgdXNlci1kZWZpbmVkIHRleHQgc2VhcmNoIGNvbmZpZ3VyYXRpb25zXG4iKTsK KwlwZ19sb2dfaW5mbygicmVhZGluZyB1c2VyLWRlZmluZWQgdGV4dCBzZWFyY2ggY29uZmln dXJhdGlvbnMiKTsKIAlnZXRUU0NvbmZpZ3VyYXRpb25zKGZvdXQsICZudW1UU0NvbmZpZ3Mp OwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHVzZXIt ZGVmaW5lZCBmb3JlaWduLWRhdGEgd3JhcHBlcnNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFk aW5nIHVzZXItZGVmaW5lZCBmb3JlaWduLWRhdGEgd3JhcHBlcnMiKTsKIAlnZXRGb3JlaWdu RGF0YVdyYXBwZXJzKGZvdXQsICZudW1Gb3JlaWduRGF0YVdyYXBwZXJzKTsKIAotCWlmIChn X3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB1c2VyLWRlZmluZWQgZm9y ZWlnbiBzZXJ2ZXJzXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyB1c2VyLWRlZmluZWQg Zm9yZWlnbiBzZXJ2ZXJzIik7CiAJZ2V0Rm9yZWlnblNlcnZlcnMoZm91dCwgJm51bUZvcmVp Z25TZXJ2ZXJzKTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVh ZGluZyBkZWZhdWx0IHByaXZpbGVnZXNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIGRl ZmF1bHQgcHJpdmlsZWdlcyIpOwogCWdldERlZmF1bHRBQ0xzKGZvdXQsICZudW1EZWZhdWx0 QUNMcyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcg dXNlci1kZWZpbmVkIGNvbGxhdGlvbnNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHVz ZXItZGVmaW5lZCBjb2xsYXRpb25zIik7CiAJY29sbGluZm8gPSBnZXRDb2xsYXRpb25zKGZv dXQsICZudW1Db2xsYXRpb25zKTsKIAljb2xsaW5mb2luZGV4ID0gYnVpbGRJbmRleEFycmF5 KGNvbGxpbmZvLCBudW1Db2xsYXRpb25zLCBzaXplb2YoQ29sbEluZm8pKTsKIAotCWlmIChn X3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB1c2VyLWRlZmluZWQgY29u dmVyc2lvbnNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHVzZXItZGVmaW5lZCBjb252 ZXJzaW9ucyIpOwogCWdldENvbnZlcnNpb25zKGZvdXQsICZudW1Db252ZXJzaW9ucyk7CiAK LQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgdHlwZSBjYXN0 c1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdHlwZSBjYXN0cyIpOwogCWdldENhc3Rz KGZvdXQsICZudW1DYXN0cyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVM TCwgInJlYWRpbmcgdHJhbnNmb3Jtc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdHJh bnNmb3JtcyIpOwogCWdldFRyYW5zZm9ybXMoZm91dCwgJm51bVRyYW5zZm9ybXMpOwogCi0J aWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHRhYmxlIGluaGVy aXRhbmNlIGluZm9ybWF0aW9uXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyB0YWJsZSBp bmhlcml0YW5jZSBpbmZvcm1hdGlvbiIpOwogCWluaGluZm8gPSBnZXRJbmhlcml0cyhmb3V0 LCAmbnVtSW5oZXJpdHMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEws ICJyZWFkaW5nIGV2ZW50IHRyaWdnZXJzXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyBl dmVudCB0cmlnZ2VycyIpOwogCWdldEV2ZW50VHJpZ2dlcnMoZm91dCwgJm51bUV2ZW50VHJp Z2dlcnMpOwogCiAJLyogSWRlbnRpZnkgZXh0ZW5zaW9uIGNvbmZpZ3VyYXRpb24gdGFibGVz IHRoYXQgc2hvdWxkIGJlIGR1bXBlZCAqLwotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21z ZyhOVUxMLCAiZmluZGluZyBleHRlbnNpb24gdGFibGVzXG4iKTsKKwlwZ19sb2dfaW5mbygi ZmluZGluZyBleHRlbnNpb24gdGFibGVzIik7CiAJcHJvY2Vzc0V4dGVuc2lvblRhYmxlcyhm b3V0LCBleHRpbmZvLCBudW1FeHRlbnNpb25zKTsKIAogCS8qIExpbmsgdGFibGVzIHRvIHBh cmVudHMsIG1hcmsgcGFyZW50cyBvZiB0YXJnZXQgdGFibGVzIGludGVyZXN0aW5nICovCi0J aWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJmaW5kaW5nIGluaGVyaXRhbmNl IHJlbGF0aW9uc2hpcHNcbiIpOworCXBnX2xvZ19pbmZvKCJmaW5kaW5nIGluaGVyaXRhbmNl IHJlbGF0aW9uc2hpcHMiKTsKIAlmbGFnSW5oVGFibGVzKGZvdXQsIHRibGluZm8sIG51bVRh YmxlcywgaW5oaW5mbywgbnVtSW5oZXJpdHMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3Jp dGVfbXNnKE5VTEwsICJyZWFkaW5nIGNvbHVtbiBpbmZvIGZvciBpbnRlcmVzdGluZyB0YWJs ZXNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIGNvbHVtbiBpbmZvIGZvciBpbnRlcmVz dGluZyB0YWJsZXMiKTsKIAlnZXRUYWJsZUF0dHJzKGZvdXQsIHRibGluZm8sIG51bVRhYmxl cyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgImZsYWdnaW5nIGlu aGVyaXRlZCBjb2x1bW5zIGluIHN1YnRhYmxlc1xuIik7CisJcGdfbG9nX2luZm8oImZsYWdn aW5nIGluaGVyaXRlZCBjb2x1bW5zIGluIHN1YnRhYmxlcyIpOwogCWZsYWdJbmhBdHRycyhm b3V0LT5kb3B0LCB0YmxpbmZvLCBudW1UYWJsZXMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJ d3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIGluZGV4ZXNcbiIpOworCXBnX2xvZ19pbmZvKCJy ZWFkaW5nIGluZGV4ZXMiKTsKIAlnZXRJbmRleGVzKGZvdXQsIHRibGluZm8sIG51bVRhYmxl cyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgImZsYWdnaW5nIGlu ZGV4ZXMgaW4gcGFydGl0aW9uZWQgdGFibGVzXG4iKTsKKwlwZ19sb2dfaW5mbygiZmxhZ2dp bmcgaW5kZXhlcyBpbiBwYXJ0aXRpb25lZCB0YWJsZXMiKTsKIAlmbGFnSW5oSW5kZXhlcyhm b3V0LCB0YmxpbmZvLCBudW1UYWJsZXMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVf bXNnKE5VTEwsICJyZWFkaW5nIGV4dGVuZGVkIHN0YXRpc3RpY3NcbiIpOworCXBnX2xvZ19p bmZvKCJyZWFkaW5nIGV4dGVuZGVkIHN0YXRpc3RpY3MiKTsKIAlnZXRFeHRlbmRlZFN0YXRp c3RpY3MoZm91dCk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJl YWRpbmcgY29uc3RyYWludHNcbiIpOworCXBnX2xvZ19pbmZvKCJyZWFkaW5nIGNvbnN0cmFp bnRzIik7CiAJZ2V0Q29uc3RyYWludHMoZm91dCwgdGJsaW5mbywgbnVtVGFibGVzKTsKIAot CWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAicmVhZGluZyB0cmlnZ2Vyc1xu Iik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgdHJpZ2dlcnMiKTsKIAlnZXRUcmlnZ2Vycyhm b3V0LCB0YmxpbmZvLCBudW1UYWJsZXMpOwogCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVf bXNnKE5VTEwsICJyZWFkaW5nIHJld3JpdGUgcnVsZXNcbiIpOworCXBnX2xvZ19pbmZvKCJy ZWFkaW5nIHJld3JpdGUgcnVsZXMiKTsKIAlnZXRSdWxlcyhmb3V0LCAmbnVtUnVsZXMpOwog Ci0JaWYgKGdfdmVyYm9zZSkKLQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIHBvbGljaWVz XG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyBwb2xpY2llcyIpOwogCWdldFBvbGljaWVz KGZvdXQsIHRibGluZm8sIG51bVRhYmxlcyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0 ZV9tc2coTlVMTCwgInJlYWRpbmcgcHVibGljYXRpb25zXG4iKTsKKwlwZ19sb2dfaW5mbygi cmVhZGluZyBwdWJsaWNhdGlvbnMiKTsKIAlnZXRQdWJsaWNhdGlvbnMoZm91dCk7CiAKLQlp ZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcgcHVibGljYXRpb24g bWVtYmVyc2hpcFxuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgcHVibGljYXRpb24gbWVt YmVyc2hpcCIpOwogCWdldFB1YmxpY2F0aW9uVGFibGVzKGZvdXQsIHRibGluZm8sIG51bVRh Ymxlcyk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRpbmcg c3Vic2NyaXB0aW9uc1xuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgc3Vic2NyaXB0aW9u cyIpOwogCWdldFN1YnNjcmlwdGlvbnMoZm91dCk7CiAKIAkqbnVtVGFibGVzUHRyID0gbnVt VGFibGVzOwpAQCAtMTA1OSw3ICsxMDIxLDcgQEAgZmluZFBhcmVudHNCeU9pZChUYWJsZUlu Zm8gKnNlbGYsCiAJCQkJcGFyZW50ID0gZmluZFRhYmxlQnlPaWQoaW5oaW5mb1tpXS5pbmhw YXJlbnQpOwogCQkJCWlmIChwYXJlbnQgPT0gTlVMTCkKIAkJCQl7Ci0JCQkJCXdyaXRlX21z ZyhOVUxMLCAiZmFpbGVkIHNhbml0eSBjaGVjaywgcGFyZW50IE9JRCAldSBvZiB0YWJsZSBc IiVzXCIgKE9JRCAldSkgbm90IGZvdW5kXG4iLAorCQkJCQlwZ19sb2dfZXJyb3IoImZhaWxl ZCBzYW5pdHkgY2hlY2ssIHBhcmVudCBPSUQgJXUgb2YgdGFibGUgXCIlc1wiIChPSUQgJXUp IG5vdCBmb3VuZCIsCiAJCQkJCQkJICBpbmhpbmZvW2ldLmluaHBhcmVudCwKIAkJCQkJCQkg IHNlbGYtPmRvYmoubmFtZSwKIAkJCQkJCQkgIG9pZCk7CkBAIC0xMTAxLDcgKzEwNjMsNyBA QCBwYXJzZU9pZEFycmF5KGNvbnN0IGNoYXIgKnN0ciwgT2lkICphcnJheSwgaW50IGFycmF5 c2l6ZSkKIAkJCXsKIAkJCQlpZiAoYXJnTnVtID49IGFycmF5c2l6ZSkKIAkJCQl7Ci0JCQkJ CXdyaXRlX21zZyhOVUxMLCAiY291bGQgbm90IHBhcnNlIG51bWVyaWMgYXJyYXkgXCIlc1wi OiB0b28gbWFueSBudW1iZXJzXG4iLCBzdHIpOworCQkJCQlwZ19sb2dfZXJyb3IoImNvdWxk IG5vdCBwYXJzZSBudW1lcmljIGFycmF5IFwiJXNcIjogdG9vIG1hbnkgbnVtYmVycyIsIHN0 cik7CiAJCQkJCWV4aXRfbmljZWx5KDEpOwogCQkJCX0KIAkJCQl0ZW1wW2pdID0gJ1wwJzsK QEAgLTExMTYsNyArMTA3OCw3IEBAIHBhcnNlT2lkQXJyYXkoY29uc3QgY2hhciAqc3RyLCBP aWQgKmFycmF5LCBpbnQgYXJyYXlzaXplKQogCQkJaWYgKCEoaXNkaWdpdCgodW5zaWduZWQg Y2hhcikgcykgfHwgcyA9PSAnLScpIHx8CiAJCQkJaiA+PSBzaXplb2YodGVtcCkgLSAxKQog CQkJewotCQkJCXdyaXRlX21zZyhOVUxMLCAiY291bGQgbm90IHBhcnNlIG51bWVyaWMgYXJy YXkgXCIlc1wiOiBpbnZhbGlkIGNoYXJhY3RlciBpbiBudW1iZXJcbiIsIHN0cik7CisJCQkJ cGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcGFyc2UgbnVtZXJpYyBhcnJheSBcIiVzXCI6IGlu dmFsaWQgY2hhcmFjdGVyIGluIG51bWJlciIsIHN0cik7CiAJCQkJZXhpdF9uaWNlbHkoMSk7 CiAJCQl9CiAJCQl0ZW1wW2orK10gPSBzOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1w L2NvbXByZXNzX2lvLmMgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uYwppbmRleCBk OTA0ZWM2MmFkLi5hMGQ3NjQ0YThhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvY29t cHJlc3NfaW8uYworKysgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uYwpAQCAtNzQs OSArNzQsNiBAQCBzdHJ1Y3QgQ29tcHJlc3NvclN0YXRlCiAjZW5kaWYKIH07CiAKLS8qIHRy YW5zbGF0b3I6IHRoaXMgaXMgYSBtb2R1bGUgbmFtZSAqLwotc3RhdGljIGNvbnN0IGNoYXIg Km1vZHVsZW5hbWUgPSBnZXR0ZXh0X25vb3AoImNvbXByZXNzX2lvIik7Ci0KIHN0YXRpYyB2 b2lkIFBhcnNlQ29tcHJlc3Npb25PcHRpb24oaW50IGNvbXByZXNzaW9uLCBDb21wcmVzc2lv bkFsZ29yaXRobSAqYWxnLAogCQkJCQkgICBpbnQgKmxldmVsKTsKIApAQCAtMTExLDggKzEw OCw3IEBAIFBhcnNlQ29tcHJlc3Npb25PcHRpb24oaW50IGNvbXByZXNzaW9uLCBDb21wcmVz c2lvbkFsZ29yaXRobSAqYWxnLCBpbnQgKmxldmVsKQogCQkqYWxnID0gQ09NUFJfQUxHX05P TkU7CiAJZWxzZQogCXsKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiaW52YWxpZCBj b21wcmVzc2lvbiBjb2RlOiAlZFxuIiwKLQkJCQkJICBjb21wcmVzc2lvbik7CisJCWZhdGFs KCJpbnZhbGlkIGNvbXByZXNzaW9uIGNvZGU6ICVkIiwgY29tcHJlc3Npb24pOwogCQkqYWxn ID0gQ09NUFJfQUxHX05PTkU7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIAl9CiAKQEAg LTEzNSw3ICsxMzEsNyBAQCBBbGxvY2F0ZUNvbXByZXNzb3IoaW50IGNvbXByZXNzaW9uLCBX cml0ZUZ1bmMgd3JpdGVGKQogCiAjaWZuZGVmIEhBVkVfTElCWgogCWlmIChhbGcgPT0gQ09N UFJfQUxHX0xJQlopCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgIm5vdCBidWlsdCB3 aXRoIHpsaWIgc3VwcG9ydFxuIik7CisJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1 cHBvcnQiKTsKICNlbmRpZgogCiAJY3MgPSAoQ29tcHJlc3NvclN0YXRlICopIHBnX21hbGxv YzAoc2l6ZW9mKENvbXByZXNzb3JTdGF0ZSkpOwpAQCAtMTcxLDcgKzE2Nyw3IEBAIFJlYWRE YXRhRnJvbUFyY2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgsIGludCBjb21wcmVzc2lvbiwgUmVh ZEZ1bmMgcmVhZEYpCiAjaWZkZWYgSEFWRV9MSUJaCiAJCVJlYWREYXRhRnJvbUFyY2hpdmVa bGliKEFILCByZWFkRik7CiAjZWxzZQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJu b3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnRcbiIpOworCQlmYXRhbCgibm90IGJ1aWx0IHdp dGggemxpYiBzdXBwb3J0Iik7CiAjZW5kaWYKIAl9CiB9CkBAIC0xODksNyArMTg1LDcgQEAg V3JpdGVEYXRhVG9BcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFILCBDb21wcmVzc29yU3RhdGUg KmNzLAogI2lmZGVmIEhBVkVfTElCWgogCQkJV3JpdGVEYXRhVG9BcmNoaXZlWmxpYihBSCwg Y3MsIGRhdGEsIGRMZW4pOwogI2Vsc2UKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwg Im5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydFxuIik7CisJCQlmYXRhbCgibm90IGJ1aWx0 IHdpdGggemxpYiBzdXBwb3J0Iik7CiAjZW5kaWYKIAkJCWJyZWFrOwogCQljYXNlIENPTVBS X0FMR19OT05FOgpAQCAtMjM4LDggKzIzNCw3IEBAIEluaXRDb21wcmVzc29yWmxpYihDb21w cmVzc29yU3RhdGUgKmNzLCBpbnQgbGV2ZWwpCiAJY3MtPnpsaWJPdXRTaXplID0gWkxJQl9P VVRfU0laRTsKIAogCWlmIChkZWZsYXRlSW5pdCh6cCwgbGV2ZWwpICE9IFpfT0spCi0JCWV4 aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJICAiY291bGQgbm90IGluaXRpYWxpemUg Y29tcHJlc3Npb24gbGlicmFyeTogJXNcbiIsCisJCWZhdGFsKCJjb3VsZCBub3QgaW5pdGlh bGl6ZSBjb21wcmVzc2lvbiBsaWJyYXJ5OiAlcyIsCiAJCQkJCSAgenAtPm1zZyk7CiAKIAkv KiBKdXN0IGJlIHBhcmFub2lkIC0gbWF5YmUgRW5kIGlzIGNhbGxlZCBhZnRlciBTdGFydCwg d2l0aCBubyBXcml0ZSAqLwpAQCAtMjU5LDggKzI1NCw3IEBAIEVuZENvbXByZXNzb3JabGli KEFyY2hpdmVIYW5kbGUgKkFILCBDb21wcmVzc29yU3RhdGUgKmNzKQogCURlZmxhdGVDb21w cmVzc29yWmxpYihBSCwgY3MsIHRydWUpOwogCiAJaWYgKGRlZmxhdGVFbmQoenApICE9IFpf T0spCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJICAiY291bGQgbm90IGNs b3NlIGNvbXByZXNzaW9uIHN0cmVhbTogJXNcbiIsIHpwLT5tc2cpOworCQlmYXRhbCgiY291 bGQgbm90IGNsb3NlIGNvbXByZXNzaW9uIHN0cmVhbTogJXMiLCB6cC0+bXNnKTsKIAogCWZy ZWUoY3MtPnpsaWJPdXQpOwogCWZyZWUoY3MtPnpwKTsKQEAgLTI3Nyw4ICsyNzEsNyBAQCBE ZWZsYXRlQ29tcHJlc3NvclpsaWIoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0 ZSAqY3MsIGJvb2wgZmx1c2gpCiAJewogCQlyZXMgPSBkZWZsYXRlKHpwLCBmbHVzaCA/IFpf RklOSVNIIDogWl9OT19GTFVTSCk7CiAJCWlmIChyZXMgPT0gWl9TVFJFQU1fRVJST1IpCi0J CQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCQkgICJjb3VsZCBub3QgY29tcHJl c3MgZGF0YTogJXNcbiIsIHpwLT5tc2cpOworCQkJZmF0YWwoImNvdWxkIG5vdCBjb21wcmVz cyBkYXRhOiAlcyIsIHpwLT5tc2cpOwogCQlpZiAoKGZsdXNoICYmICh6cC0+YXZhaWxfb3V0 IDwgY3MtPnpsaWJPdXRTaXplKSkKIAkJCXx8ICh6cC0+YXZhaWxfb3V0ID09IDApCiAJCQl8 fCAoenAtPmF2YWlsX2luICE9IDApCkBAIC0zNDAsOCArMzMzLDcgQEAgUmVhZERhdGFGcm9t QXJjaGl2ZVpsaWIoQXJjaGl2ZUhhbmRsZSAqQUgsIFJlYWRGdW5jIHJlYWRGKQogCW91dCA9 IHBnX21hbGxvYyhaTElCX09VVF9TSVpFICsgMSk7CiAKIAlpZiAoaW5mbGF0ZUluaXQoenAp ICE9IFpfT0spCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJICAiY291bGQg bm90IGluaXRpYWxpemUgY29tcHJlc3Npb24gbGlicmFyeTogJXNcbiIsCisJCWZhdGFsKCJj b3VsZCBub3QgaW5pdGlhbGl6ZSBjb21wcmVzc2lvbiBsaWJyYXJ5OiAlcyIsCiAJCQkJCSAg enAtPm1zZyk7CiAKIAkvKiBubyBtaW5pbWFsIGNodW5rIHNpemUgZm9yIHpsaWIgKi8KQEAg LTM1Nyw4ICszNDksNyBAQCBSZWFkRGF0YUZyb21BcmNoaXZlWmxpYihBcmNoaXZlSGFuZGxl ICpBSCwgUmVhZEZ1bmMgcmVhZEYpCiAKIAkJCXJlcyA9IGluZmxhdGUoenAsIDApOwogCQkJ aWYgKHJlcyAhPSBaX09LICYmIHJlcyAhPSBaX1NUUkVBTV9FTkQpCi0JCQkJZXhpdF9ob3Jy aWJseShtb2R1bGVuYW1lLAotCQkJCQkJCSAgImNvdWxkIG5vdCB1bmNvbXByZXNzIGRhdGE6 ICVzXG4iLCB6cC0+bXNnKTsKKwkJCQlmYXRhbCgiY291bGQgbm90IHVuY29tcHJlc3MgZGF0 YTogJXMiLCB6cC0+bXNnKTsKIAogCQkJb3V0W1pMSUJfT1VUX1NJWkUgLSB6cC0+YXZhaWxf b3V0XSA9ICdcMCc7CiAJCQlhaHdyaXRlKG91dCwgMSwgWkxJQl9PVVRfU0laRSAtIHpwLT5h dmFpbF9vdXQsIEFIKTsKQEAgLTM3MywxNiArMzY0LDE0IEBAIFJlYWREYXRhRnJvbUFyY2hp dmVabGliKEFyY2hpdmVIYW5kbGUgKkFILCBSZWFkRnVuYyByZWFkRikKIAkJenAtPmF2YWls X291dCA9IFpMSUJfT1VUX1NJWkU7CiAJCXJlcyA9IGluZmxhdGUoenAsIDApOwogCQlpZiAo cmVzICE9IFpfT0sgJiYgcmVzICE9IFpfU1RSRUFNX0VORCkKLQkJCWV4aXRfaG9ycmlibHko bW9kdWxlbmFtZSwKLQkJCQkJCSAgImNvdWxkIG5vdCB1bmNvbXByZXNzIGRhdGE6ICVzXG4i LCB6cC0+bXNnKTsKKwkJCWZhdGFsKCJjb3VsZCBub3QgdW5jb21wcmVzcyBkYXRhOiAlcyIs IHpwLT5tc2cpOwogCiAJCW91dFtaTElCX09VVF9TSVpFIC0genAtPmF2YWlsX291dF0gPSAn XDAnOwogCQlhaHdyaXRlKG91dCwgMSwgWkxJQl9PVVRfU0laRSAtIHpwLT5hdmFpbF9vdXQs IEFIKTsKIAl9CiAKIAlpZiAoaW5mbGF0ZUVuZCh6cCkgIT0gWl9PSykKLQkJZXhpdF9ob3Jy aWJseShtb2R1bGVuYW1lLAotCQkJCQkgICJjb3VsZCBub3QgY2xvc2UgY29tcHJlc3Npb24g bGlicmFyeTogJXNcbiIsIHpwLT5tc2cpOworCQlmYXRhbCgiY291bGQgbm90IGNsb3NlIGNv bXByZXNzaW9uIGxpYnJhcnk6ICVzIiwgenAtPm1zZyk7CiAKIAlmcmVlKGJ1Zik7CiAJZnJl ZShvdXQpOwpAQCAtNTE2LDcgKzUwNSw3IEBAIGNmb3Blbl93cml0ZShjb25zdCBjaGFyICpw YXRoLCBjb25zdCBjaGFyICptb2RlLCBpbnQgY29tcHJlc3Npb24pCiAJCWZwID0gY2ZvcGVu KGZuYW1lLCBtb2RlLCBjb21wcmVzc2lvbik7CiAJCWZyZWVfa2VlcF9lcnJubyhmbmFtZSk7 CiAjZWxzZQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJub3QgYnVpbHQgd2l0aCB6 bGliIHN1cHBvcnRcbiIpOworCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0 Iik7CiAJCWZwID0gTlVMTDsJCQkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwogI2VuZGlm CiAJfQpAQCAtNTU5LDcgKzU0OCw3IEBAIGNmb3Blbihjb25zdCBjaGFyICpwYXRoLCBjb25z dCBjaGFyICptb2RlLCBpbnQgY29tcHJlc3Npb24pCiAJCQlmcCA9IE5VTEw7CiAJCX0KICNl bHNlCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgIm5vdCBidWlsdCB3aXRoIHpsaWIg c3VwcG9ydFxuIik7CisJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsK ICNlbmRpZgogCX0KIAllbHNlCkBAIC01OTYsOCArNTg1LDcgQEAgY2ZyZWFkKHZvaWQgKnB0 ciwgaW50IHNpemUsIGNmcCAqZnApCiAJCQlpbnQJCQllcnJudW07CiAJCQljb25zdCBjaGFy ICplcnJtc2cgPSBnemVycm9yKGZwLT5jb21wcmVzc2VkZnAsICZlcnJudW0pOwogCi0JCQll eGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCQkgICJjb3VsZCBub3QgcmVhZCBmcm9t IGlucHV0IGZpbGU6ICVzXG4iLAorCQkJZmF0YWwoImNvdWxkIG5vdCByZWFkIGZyb20gaW5w dXQgZmlsZTogJXMiLAogCQkJCQkJICBlcnJudW0gPT0gWl9FUlJOTyA/IHN0cmVycm9yKGVy cm5vKSA6IGVycm1zZyk7CiAJCX0KIAl9CkBAIC02MzQsMTEgKzYyMiw5IEBAIGNmZ2V0Yyhj ZnAgKmZwKQogCQlpZiAocmV0ID09IEVPRikKIAkJewogCQkJaWYgKCFnemVvZihmcC0+Y29t cHJlc3NlZGZwKSkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCQkJICAi Y291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8p KTsKKwkJCQlmYXRhbCgiY291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiAlcyIsIHN0 cmVycm9yKGVycm5vKSk7CiAJCQllbHNlCi0JCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1l LAotCQkJCQkJCSAgImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogZW5kIG9mIGZp bGVcbiIpOworCQkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6IGVu ZCBvZiBmaWxlIik7CiAJCX0KIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL25scy5tayBiL3NyYy9iaW4vcGdfZHVtcC9ubHMubWsKaW5kZXggMzcyMzQ3MTdjYi4u OGE1M2FkMDhkZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL25scy5taworKysgYi9z cmMvYmluL3BnX2R1bXAvbmxzLm1rCkBAIC0xLDcgKzEsOCBAQAogIyBzcmMvYmluL3BnX2R1 bXAvbmxzLm1rCiBDQVRBTE9HX05BTUUgICAgID0gcGdfZHVtcAogQVZBSUxfTEFOR1VBR0VT ICA9IGNzIGRlIGVzIGZyIGhlIGl0IGphIGtvIHBsIHB0X0JSIHJ1IHN2IHRyIHpoX0NOCi1H RVRURVhUX0ZJTEVTICAgID0gcGdfYmFja3VwX2FyY2hpdmVyLmMgcGdfYmFja3VwX2RiLmMg cGdfYmFja3VwX2N1c3RvbS5jIFwKK0dFVFRFWFRfRklMRVMgICAgPSAkKEZST05URU5EX0NP TU1PTl9HRVRURVhUX0ZJTEVTKSBcCisgICAgICAgICAgICAgICAgICAgcGdfYmFja3VwX2Fy Y2hpdmVyLmMgcGdfYmFja3VwX2RiLmMgcGdfYmFja3VwX2N1c3RvbS5jIFwKICAgICAgICAg ICAgICAgICAgICBwZ19iYWNrdXBfbnVsbC5jIHBnX2JhY2t1cF90YXIuYyBcCiAgICAgICAg ICAgICAgICAgICAgcGdfYmFja3VwX2RpcmVjdG9yeS5jIGR1bXB1dGlscy5jIGNvbXByZXNz X2lvLmMgXAogICAgICAgICAgICAgICAgICAgIHBnX2R1bXAuYyBjb21tb24uYyBwZ19kdW1w X3NvcnQuYyBcCkBAIC05LDEwICsxMCw5IEBAIEdFVFRFWFRfRklMRVMgICAgPSBwZ19iYWNr dXBfYXJjaGl2ZXIuYyBwZ19iYWNrdXBfZGIuYyBwZ19iYWNrdXBfY3VzdG9tLmMgXAogICAg ICAgICAgICAgICAgICAgIHBhcmFsbGVsLmMgcGFyYWxsZWwuaCBwZ19iYWNrdXBfdXRpbHMu YyBwZ19iYWNrdXBfdXRpbHMuaCBcCiAgICAgICAgICAgICAgICAgICAgLi4vLi4vY29tbW9u L2V4ZWMuYyAuLi8uLi9jb21tb24vZmVfbWVtdXRpbHMuYyBcCiAgICAgICAgICAgICAgICAg ICAgLi4vLi4vY29tbW9uL3dhaXRfZXJyb3IuYwotR0VUVEVYVF9UUklHR0VSUyA9IHdyaXRl X21zZzoyIGV4aXRfaG9ycmlibHk6MiBzaW1wbGVfcHJvbXB0IFwKLSAgICAgICAgICAgICAg ICAgICBFeGVjdXRlU3FsQ29tbWFuZDozIGFobG9nOjMgd2Fybl9vcl9leGl0X2hvcnJpYmx5 OjMKLUdFVFRFWFRfRkxBR1MgID0gXAotICAgIHdyaXRlX21zZzoyOmMtZm9ybWF0IFwKLSAg ICBleGl0X2hvcnJpYmx5OjI6Yy1mb3JtYXQgXAotICAgIGFobG9nOjM6Yy1mb3JtYXQgXAot ICAgIHdhcm5fb3JfZXhpdF9ob3JyaWJseTozOmMtZm9ybWF0CitHRVRURVhUX1RSSUdHRVJT ID0gJChGUk9OVEVORF9DT01NT05fR0VUVEVYVF9UUklHR0VSUykgXAorICAgICAgICAgICAg ICAgICAgIGZhdGFsIHNpbXBsZV9wcm9tcHQgXAorICAgICAgICAgICAgICAgICAgIEV4ZWN1 dGVTcWxDb21tYW5kOjMgd2Fybl9vcl9leGl0X2hvcnJpYmx5OjMKK0dFVFRFWFRfRkxBR1Mg ICAgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX0ZMQUdTKSBcCisgICAgZmF0YWw6MTpj LWZvcm1hdCBcCisgICAgd2Fybl9vcl9leGl0X2hvcnJpYmx5OjI6Yy1mb3JtYXQKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wYXJhbGxlbC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3Bh cmFsbGVsLmMKaW5kZXggOTZiMmMwYmU1MC4uNzI3NDRmZWFjYyAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL3BhcmFsbGVsLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BhcmFsbGVs LmMKQEAgLTE5Nyw4ICsxOTcsNiBAQCBib29sCQlwYXJhbGxlbF9pbml0X2RvbmUgPSBmYWxz ZTsKIERXT1JECQltYWluVGhyZWFkSWQ7CiAjZW5kaWYJCQkJCQkJLyogV0lOMzIgKi8KIAot c3RhdGljIGNvbnN0IGNoYXIgKm1vZHVsZW5hbWUgPSBnZXR0ZXh0X25vb3AoInBhcmFsbGVs IGFyY2hpdmVyIik7Ci0KIC8qIExvY2FsIGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KIHN0YXRp YyBQYXJhbGxlbFNsb3QgKkdldE15UFNsb3QoUGFyYWxsZWxTdGF0ZSAqcHN0YXRlKTsKIHN0 YXRpYyB2b2lkIGFyY2hpdmVfY2xvc2VfY29ubmVjdGlvbihpbnQgY29kZSwgdm9pZCAqYXJn KTsKQEAgLTI2NCw3ICsyNjIsNyBAQCBpbml0X3BhcmFsbGVsX2R1bXBfdXRpbHModm9pZCkK IAkJZXJyID0gV1NBU3RhcnR1cChNQUtFV09SRCgyLCAyKSwgJndzYURhdGEpOwogCQlpZiAo ZXJyICE9IDApCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogV1NBU3RhcnR1cCBm YWlsZWQ6ICVkXG4iKSwgcHJvZ25hbWUsIGVycik7CisJCQlwZ19sb2dfZXJyb3IoIldTQVN0 YXJ0dXAgZmFpbGVkOiAlZCIsIGVycik7CiAJCQlleGl0X25pY2VseSgxKTsKIAkJfQogCQkv KiAuLi4gYW5kIGFycmFuZ2UgdG8gc2h1dCBpdCBkb3duIGF0IGV4aXQgKi8KQEAgLTQwNiw4 ICs0MDQsOCBAQCBhcmNoaXZlX2Nsb3NlX2Nvbm5lY3Rpb24oaW50IGNvZGUsIHZvaWQgKmFy ZykKICAqIEZvcmNpYmx5IHNodXQgZG93biBhbnkgcmVtYWluaW5nIHdvcmtlcnMsIHdhaXRp bmcgZm9yIHRoZW0gdG8gZmluaXNoLgogICoKICAqIE5vdGUgdGhhdCB3ZSBkb24ndCBleHBl Y3QgdG8gY29tZSBoZXJlIGR1cmluZyBub3JtYWwgZXhpdCAodGhlIHdvcmtlcnMKLSAqIHNo b3VsZCBiZSBsb25nIGdvbmUsIGFuZCB0aGUgUGFyYWxsZWxTdGF0ZSB0b28pLiAgV2UncmUg b25seSBoZXJlIGluIGFuCi0gKiBleGl0X2hvcnJpYmx5KCkgc2l0dWF0aW9uLCBzbyBpbnRl cnZlbmluZyB0byBjYW5jZWwgYWN0aXZlIGNvbW1hbmRzIGlzCisgKiBzaG91bGQgYmUgbG9u ZyBnb25lLCBhbmQgdGhlIFBhcmFsbGVsU3RhdGUgdG9vKS4gIFdlJ3JlIG9ubHkgaGVyZSBp biBhCisgKiBmYXRhbCgpIHNpdHVhdGlvbiwgc28gaW50ZXJ2ZW5pbmcgdG8gY2FuY2VsIGFj dGl2ZSBjb21tYW5kcyBpcwogICogYXBwcm9wcmlhdGUuCiAgKi8KIHN0YXRpYyB2b2lkCkBA IC02OTksNyArNjk3LDcgQEAgY29uc29sZUhhbmRsZXIoRFdPUkQgZHdDdHJsVHlwZSkKIAog CQkvKgogCQkgKiBSZXBvcnQgd2UncmUgcXVpdHRpbmcsIHVzaW5nIG5vdGhpbmcgbW9yZSBj b21wbGljYXRlZCB0aGFuCi0JCSAqIHdyaXRlKDIpLiAgKFdlIG1pZ2h0IGJlIGFibGUgdG8g Z2V0IGF3YXkgd2l0aCB1c2luZyB3cml0ZV9tc2coKQorCQkgKiB3cml0ZSgyKS4gIChXZSBt aWdodCBiZSBhYmxlIHRvIGdldCBhd2F5IHdpdGggdXNpbmcgcGdfbG9nXyooKQogCQkgKiBo ZXJlLCBidXQgc2luY2Ugd2UgdGVybWluYXRlZCBvdGhlciB0aHJlYWRzIHVuY2xlYW5seSBh Ym92ZSwgaXQKIAkJICogc2VlbXMgYmV0dGVyIHRvIGFzc3VtZSBhcyBsaXR0bGUgYXMgcG9z c2libGUuKQogCQkgKi8KQEAgLTk2OSw5ICs5NjcsNyBAQCBQYXJhbGxlbEJhY2t1cFN0YXJ0 KEFyY2hpdmVIYW5kbGUgKkFIKQogCiAJCS8qIENyZWF0ZSBjb21tdW5pY2F0aW9uIHBpcGVz IGZvciB0aGlzIHdvcmtlciAqLwogCQlpZiAocGdwaXBlKHBpcGVNVykgPCAwIHx8IHBncGlw ZShwaXBlV00pIDwgMCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJCSAg ImNvdWxkIG5vdCBjcmVhdGUgY29tbXVuaWNhdGlvbiBjaGFubmVsczogJXNcbiIsCi0JCQkJ CQkgIHN0cmVycm9yKGVycm5vKSk7CisJCQlmYXRhbCgiY291bGQgbm90IGNyZWF0ZSBjb21t dW5pY2F0aW9uIGNoYW5uZWxzOiAlbSIpOwogCiAJCXBzdGF0ZS0+dGVbaV0gPSBOVUxMOwkv KiBqdXN0IGZvciBzYWZldHkgKi8KIApAQCAtMTAzNCw5ICsxMDMwLDcgQEAgUGFyYWxsZWxC YWNrdXBTdGFydChBcmNoaXZlSGFuZGxlICpBSCkKIAkJZWxzZSBpZiAocGlkIDwgMCkKIAkJ ewogCQkJLyogZm9yayBmYWlsZWQgKi8KLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwK LQkJCQkJCSAgImNvdWxkIG5vdCBjcmVhdGUgd29ya2VyIHByb2Nlc3M6ICVzXG4iLAotCQkJ CQkJICBzdHJlcnJvcihlcnJubykpOworCQkJZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgd29y a2VyIHByb2Nlc3M6ICVtIik7CiAJCX0KIAogCQkvKiBJbiBNYXN0ZXIgYWZ0ZXIgc3VjY2Vz c2Z1bCBmb3JrICovCkBAIC0xMTY1LDggKzExNTksNyBAQCBwYXJzZVdvcmtlckNvbW1hbmQo QXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICoqdGUsIFRfQWN0aW9uICphY3QsCiAJCUFz c2VydCgqdGUgIT0gTlVMTCk7CiAJfQogCWVsc2UKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVu YW1lLAotCQkJCQkgICJ1bnJlY29nbml6ZWQgY29tbWFuZCByZWNlaXZlZCBmcm9tIG1hc3Rl cjogXCIlc1wiXG4iLAorCQlmYXRhbCgidW5yZWNvZ25pemVkIGNvbW1hbmQgcmVjZWl2ZWQg ZnJvbSBtYXN0ZXI6IFwiJXNcIiIsCiAJCQkJCSAgbXNnKTsKIH0KIApAQCAtMTIwOSw4ICsx MjAyLDcgQEAgcGFyc2VXb3JrZXJSZXNwb25zZShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50 cnkgKnRlLAogCQlBSC0+cHVibGljLm5fZXJyb3JzICs9IG5fZXJyb3JzOwogCX0KIAllbHNl Ci0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJICAiaW52YWxpZCBtZXNzYWdl IHJlY2VpdmVkIGZyb20gd29ya2VyOiBcIiVzXCJcbiIsCisJCWZhdGFsKCJpbnZhbGlkIG1l c3NhZ2UgcmVjZWl2ZWQgZnJvbSB3b3JrZXI6IFwiJXNcIiIsCiAJCQkJCSAgbXNnKTsKIAog CXJldHVybiBzdGF0dXM7CkBAIC0xMzQyLDExICsxMzM0LDEwIEBAIGxvY2tUYWJsZUZvcldv cmtlcihBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogCXJlcyA9IFBRZXhlYyhB SC0+Y29ubmVjdGlvbiwgcXVlcnktPmRhdGEpOwogCiAJaWYgKCFyZXMgfHwgUFFyZXN1bHRT dGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQotCQlleGl0X2hvcnJpYmx5KG1vZHVs ZW5hbWUsCi0JCQkJCSAgImNvdWxkIG5vdCBvYnRhaW4gbG9jayBvbiByZWxhdGlvbiBcIiVz XCJcbiIKLQkJCQkJICAiVGhpcyB1c3VhbGx5IG1lYW5zIHRoYXQgc29tZW9uZSByZXF1ZXN0 ZWQgYW4gQUNDRVNTIEVYQ0xVU0lWRSBsb2NrICIKLQkJCQkJICAib24gdGhlIHRhYmxlIGFm dGVyIHRoZSBwZ19kdW1wIHBhcmVudCBwcm9jZXNzIGhhZCBnb3R0ZW4gdGhlICIKLQkJCQkJ ICAiaW5pdGlhbCBBQ0NFU1MgU0hBUkUgbG9jayBvbiB0aGUgdGFibGUuXG4iLCBxdWFsSWQp OworCQlmYXRhbCgiY291bGQgbm90IG9idGFpbiBsb2NrIG9uIHJlbGF0aW9uIFwiJXNcIlxu IgorCQkJICAiVGhpcyB1c3VhbGx5IG1lYW5zIHRoYXQgc29tZW9uZSByZXF1ZXN0ZWQgYW4g QUNDRVNTIEVYQ0xVU0lWRSBsb2NrICIKKwkJCSAgIm9uIHRoZSB0YWJsZSBhZnRlciB0aGUg cGdfZHVtcCBwYXJlbnQgcHJvY2VzcyBoYWQgZ290dGVuIHRoZSAiCisJCQkgICJpbml0aWFs IEFDQ0VTUyBTSEFSRSBsb2NrIG9uIHRoZSB0YWJsZS4iLCBxdWFsSWQpOwogCiAJUFFjbGVh cihyZXMpOwogCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxdWVyeSk7CkBAIC0xNDMyLDcgKzE0MjMs NyBAQCBMaXN0ZW5Ub1dvcmtlcnMoQXJjaGl2ZUhhbmRsZSAqQUgsIFBhcmFsbGVsU3RhdGUg KnBzdGF0ZSwgYm9vbCBkb193YWl0KQogCXsKIAkJLyogSWYgZG9fd2FpdCBpcyB0cnVlLCB3 ZSBtdXN0IGhhdmUgZGV0ZWN0ZWQgRU9GIG9uIHNvbWUgc29ja2V0ICovCiAJCWlmIChkb193 YWl0KQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiYSB3b3JrZXIgcHJvY2VzcyBk aWVkIHVuZXhwZWN0ZWRseVxuIik7CisJCQlmYXRhbCgiYSB3b3JrZXIgcHJvY2VzcyBkaWVk IHVuZXhwZWN0ZWRseSIpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC0xNDQ5LDggKzE0 NDAsNyBAQCBMaXN0ZW5Ub1dvcmtlcnMoQXJjaGl2ZUhhbmRsZSAqQUgsIFBhcmFsbGVsU3Rh dGUgKnBzdGF0ZSwgYm9vbCBkb193YWl0KQogCQlwc3RhdGUtPnRlW3dvcmtlcl0gPSBOVUxM OwogCX0KIAllbHNlCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJICAiaW52 YWxpZCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gd29ya2VyOiBcIiVzXCJcbiIsCisJCWZhdGFs KCJpbnZhbGlkIG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSB3b3JrZXI6IFwiJXNcIiIsCiAJCQkJ CSAgbXNnKTsKIAogCS8qIEZyZWUgdGhlIHN0cmluZyByZXR1cm5lZCBmcm9tIGdldE1lc3Nh Z2VGcm9tV29ya2VyICovCkBAIC0xNTU1LDkgKzE1NDUsNyBAQCBzZW5kTWVzc2FnZVRvTWFz dGVyKGludCBwaXBlZmRbMl0sIGNvbnN0IGNoYXIgKnN0cikKIAlpbnQJCQlsZW4gPSBzdHJs ZW4oc3RyKSArIDE7CiAKIAlpZiAocGlwZXdyaXRlKHBpcGVmZFtQSVBFX1dSSVRFXSwgc3Ry LCBsZW4pICE9IGxlbikKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkgICJj b3VsZCBub3Qgd3JpdGUgdG8gdGhlIGNvbW11bmljYXRpb24gY2hhbm5lbDogJXNcbiIsCi0J CQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKKwkJZmF0YWwoImNvdWxkIG5vdCB3cml0ZSB0byB0 aGUgY29tbXVuaWNhdGlvbiBjaGFubmVsOiAlbSIpOwogfQogCiAvKgpAQCAtMTYzNCw3ICsx NjIyLDcgQEAgZ2V0TWVzc2FnZUZyb21Xb3JrZXIoUGFyYWxsZWxTdGF0ZSAqcHN0YXRlLCBi b29sIGRvX3dhaXQsIGludCAqd29ya2VyKQogCX0KIAogCWlmIChpIDwgMCkKLQkJZXhpdF9o b3JyaWJseShtb2R1bGVuYW1lLCAic2VsZWN0KCkgZmFpbGVkOiAlc1xuIiwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJZmF0YWwoInNlbGVjdCgpIGZhaWxlZDogJW0iKTsKIAogCWZvciAoaSA9 IDA7IGkgPCBwc3RhdGUtPm51bVdvcmtlcnM7IGkrKykKIAl7CkBAIC0xNjczLDkgKzE2NjEs NyBAQCBzZW5kTWVzc2FnZVRvV29ya2VyKFBhcmFsbGVsU3RhdGUgKnBzdGF0ZSwgaW50IHdv cmtlciwgY29uc3QgY2hhciAqc3RyKQogCiAJaWYgKHBpcGV3cml0ZShwc3RhdGUtPnBhcmFs bGVsU2xvdFt3b3JrZXJdLnBpcGVXcml0ZSwgc3RyLCBsZW4pICE9IGxlbikKIAl7Ci0JCWV4 aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJICAiY291bGQgbm90IHdyaXRlIHRvIHRo ZSBjb21tdW5pY2F0aW9uIGNoYW5uZWw6ICVzXG4iLAotCQkJCQkgIHN0cmVycm9yKGVycm5v KSk7CisJCWZhdGFsKCJjb3VsZCBub3Qgd3JpdGUgdG8gdGhlIGNvbW11bmljYXRpb24gY2hh bm5lbDogJW0iKTsKIAl9CiB9CiAKQEAgLTE3NTksNyArMTc0NSw3IEBAIHBncGlwZShpbnQg aGFuZGxlc1syXSkKIAkgKi8KIAlpZiAoKHMgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19TVFJF QU0sIDApKSA9PSBQR0lOVkFMSURfU09DS0VUKQogCXsKLQkJd3JpdGVfbXNnKG1vZHVsZW5h bWUsICJwZ3BpcGU6IGNvdWxkIG5vdCBjcmVhdGUgc29ja2V0OiBlcnJvciBjb2RlICVkXG4i LAorCQlwZ19sb2dfZXJyb3IoInBncGlwZTogY291bGQgbm90IGNyZWF0ZSBzb2NrZXQ6IGVy cm9yIGNvZGUgJWQiLAogCQkJCSAgV1NBR2V0TGFzdEVycm9yKCkpOwogCQlyZXR1cm4gLTE7 CiAJfQpAQCAtMTc3MCwyMSArMTc1NiwyMSBAQCBwZ3BpcGUoaW50IGhhbmRsZXNbMl0pCiAJ c2Vydl9hZGRyLnNpbl9hZGRyLnNfYWRkciA9IHBnX2h0b24zMihJTkFERFJfTE9PUEJBQ0sp OwogCWlmIChiaW5kKHMsIChTT0NLQUREUiAqKSAmc2Vydl9hZGRyLCBsZW4pID09IFNPQ0tF VF9FUlJPUikKIAl7Ci0JCXdyaXRlX21zZyhtb2R1bGVuYW1lLCAicGdwaXBlOiBjb3VsZCBu b3QgYmluZDogZXJyb3IgY29kZSAlZFxuIiwKKwkJcGdfbG9nX2Vycm9yKCJwZ3BpcGU6IGNv dWxkIG5vdCBiaW5kOiBlcnJvciBjb2RlICVkIiwKIAkJCQkgIFdTQUdldExhc3RFcnJvcigp KTsKIAkJY2xvc2Vzb2NrZXQocyk7CiAJCXJldHVybiAtMTsKIAl9CiAJaWYgKGxpc3Rlbihz LCAxKSA9PSBTT0NLRVRfRVJST1IpCiAJewotCQl3cml0ZV9tc2cobW9kdWxlbmFtZSwgInBn cGlwZTogY291bGQgbm90IGxpc3RlbjogZXJyb3IgY29kZSAlZFxuIiwKKwkJcGdfbG9nX2Vy cm9yKCJwZ3BpcGU6IGNvdWxkIG5vdCBsaXN0ZW46IGVycm9yIGNvZGUgJWQiLAogCQkJCSAg V1NBR2V0TGFzdEVycm9yKCkpOwogCQljbG9zZXNvY2tldChzKTsKIAkJcmV0dXJuIC0xOwog CX0KIAlpZiAoZ2V0c29ja25hbWUocywgKFNPQ0tBRERSICopICZzZXJ2X2FkZHIsICZsZW4p ID09IFNPQ0tFVF9FUlJPUikKIAl7Ci0JCXdyaXRlX21zZyhtb2R1bGVuYW1lLCAicGdwaXBl OiBnZXRzb2NrbmFtZSgpIGZhaWxlZDogZXJyb3IgY29kZSAlZFxuIiwKKwkJcGdfbG9nX2Vy cm9yKCJwZ3BpcGU6IGdldHNvY2tuYW1lKCkgZmFpbGVkOiBlcnJvciBjb2RlICVkIiwKIAkJ CQkgIFdTQUdldExhc3RFcnJvcigpKTsKIAkJY2xvc2Vzb2NrZXQocyk7CiAJCXJldHVybiAt MTsKQEAgLTE3OTUsNyArMTc4MSw3IEBAIHBncGlwZShpbnQgaGFuZGxlc1syXSkKIAkgKi8K IAlpZiAoKHRtcF9zb2NrID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKSkgPT0g UEdJTlZBTElEX1NPQ0tFVCkKIAl7Ci0JCXdyaXRlX21zZyhtb2R1bGVuYW1lLCAicGdwaXBl OiBjb3VsZCBub3QgY3JlYXRlIHNlY29uZCBzb2NrZXQ6IGVycm9yIGNvZGUgJWRcbiIsCisJ CXBnX2xvZ19lcnJvcigicGdwaXBlOiBjb3VsZCBub3QgY3JlYXRlIHNlY29uZCBzb2NrZXQ6 IGVycm9yIGNvZGUgJWQiLAogCQkJCSAgV1NBR2V0TGFzdEVycm9yKCkpOwogCQljbG9zZXNv Y2tldChzKTsKIAkJcmV0dXJuIC0xOwpAQCAtMTgwNCw3ICsxNzkwLDcgQEAgcGdwaXBlKGlu dCBoYW5kbGVzWzJdKQogCiAJaWYgKGNvbm5lY3QoaGFuZGxlc1sxXSwgKFNPQ0tBRERSICop ICZzZXJ2X2FkZHIsIGxlbikgPT0gU09DS0VUX0VSUk9SKQogCXsKLQkJd3JpdGVfbXNnKG1v ZHVsZW5hbWUsICJwZ3BpcGU6IGNvdWxkIG5vdCBjb25uZWN0IHNvY2tldDogZXJyb3IgY29k ZSAlZFxuIiwKKwkJcGdfbG9nX2Vycm9yKCJwZ3BpcGU6IGNvdWxkIG5vdCBjb25uZWN0IHNv Y2tldDogZXJyb3IgY29kZSAlZCIsCiAJCQkJICBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJCWNs b3Nlc29ja2V0KGhhbmRsZXNbMV0pOwogCQloYW5kbGVzWzFdID0gLTE7CkBAIC0xODEzLDcg KzE3OTksNyBAQCBwZ3BpcGUoaW50IGhhbmRsZXNbMl0pCiAJfQogCWlmICgodG1wX3NvY2sg PSBhY2NlcHQocywgKFNPQ0tBRERSICopICZzZXJ2X2FkZHIsICZsZW4pKSA9PSBQR0lOVkFM SURfU09DS0VUKQogCXsKLQkJd3JpdGVfbXNnKG1vZHVsZW5hbWUsICJwZ3BpcGU6IGNvdWxk IG5vdCBhY2NlcHQgY29ubmVjdGlvbjogZXJyb3IgY29kZSAlZFxuIiwKKwkJcGdfbG9nX2Vy cm9yKCJwZ3BpcGU6IGNvdWxkIG5vdCBhY2NlcHQgY29ubmVjdGlvbjogZXJyb3IgY29kZSAl ZCIsCiAJCQkJICBXU0FHZXRMYXN0RXJyb3IoKSk7CiAJCWNsb3Nlc29ja2V0KGhhbmRsZXNb MV0pOwogCQloYW5kbGVzWzFdID0gLTE7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hp dmVyLmMKaW5kZXggOGI1NWY1OTUyYy4uNDA0MzZjZTk5YiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19iYWNrdXBfYXJjaGl2ZXIuYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgInBnX2Jh Y2t1cF9kYi5oIgogI2luY2x1ZGUgInBnX2JhY2t1cF91dGlscy5oIgogI2luY2x1ZGUgImR1 bXB1dGlscy5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJm ZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKIAogI2luY2x1ZGUgImxpYnBxL2xpYnBxLWZzLmgi CkBAIC02Nyw5ICs2OCw2IEBAIHR5cGVkZWYgc3RydWN0IF9wYXJhbGxlbFJlYWR5TGlzdAog CWJvb2wJCXNvcnRlZDsJCQkvKiBhcmUgdmFsaWQgZW50cmllcyBjdXJyZW50bHkgc29ydGVk PyAqLwogfSBQYXJhbGxlbFJlYWR5TGlzdDsKIAotLyogdHJhbnNsYXRvcjogdGhpcyBpcyBh IG1vZHVsZSBuYW1lICovCi1zdGF0aWMgY29uc3QgY2hhciAqbW9kdWxlbmFtZSA9IGdldHRl eHRfbm9vcCgiYXJjaGl2ZXIiKTsKLQogCiBzdGF0aWMgQXJjaGl2ZUhhbmRsZSAqX2FsbG9j QUgoY29uc3QgY2hhciAqRmlsZVNwZWMsIGNvbnN0IEFyY2hpdmVGb3JtYXQgZm10LAogCQkg Y29uc3QgaW50IGNvbXByZXNzaW9uLCBib29sIGRvc3luYywgQXJjaGl2ZU1vZGUgbW9kZSwK QEAgLTI3MSw4ICsyNjksNyBAQCBDbG9zZUFyY2hpdmUoQXJjaGl2ZSAqQUhYKQogCQlyZXMg PSBmY2xvc2UoQUgtPk9GKTsKIAogCWlmIChyZXMgIT0gMCkKLQkJZXhpdF9ob3JyaWJseSht b2R1bGVuYW1lLCAiY291bGQgbm90IGNsb3NlIG91dHB1dCBmaWxlOiAlc1xuIiwKLQkJCQkJ ICBzdHJlcnJvcihlcnJubykpOworCQlmYXRhbCgiY291bGQgbm90IGNsb3NlIG91dHB1dCBm aWxlOiAlbSIpOwogfQogCiAvKiBQdWJsaWMgKi8KQEAgLTMxNiwxOSArMzEzLDE3IEBAIFBy b2Nlc3NBcmNoaXZlUmVzdG9yZU9wdGlvbnMoQXJjaGl2ZSAqQUhYKQogCQkJCQlicmVhazsK IAkJCQljYXNlIFNFQ1RJT05fUFJFX0RBVEE6CiAJCQkJCWlmIChjdXJTZWN0aW9uICE9IFNF Q1RJT05fUFJFX0RBVEEpCi0JCQkJCQl3cml0ZV9tc2cobW9kdWxlbmFtZSwKLQkJCQkJCQkJ ICAiV0FSTklORzogYXJjaGl2ZSBpdGVtcyBub3QgaW4gY29ycmVjdCBzZWN0aW9uIG9yZGVy XG4iKTsKKwkJCQkJCXBnX2xvZ193YXJuaW5nKCJhcmNoaXZlIGl0ZW1zIG5vdCBpbiBjb3Jy ZWN0IHNlY3Rpb24gb3JkZXIiKTsKIAkJCQkJYnJlYWs7CiAJCQkJY2FzZSBTRUNUSU9OX0RB VEE6CiAJCQkJCWlmIChjdXJTZWN0aW9uID09IFNFQ1RJT05fUE9TVF9EQVRBKQotCQkJCQkJ d3JpdGVfbXNnKG1vZHVsZW5hbWUsCi0JCQkJCQkJCSAgIldBUk5JTkc6IGFyY2hpdmUgaXRl bXMgbm90IGluIGNvcnJlY3Qgc2VjdGlvbiBvcmRlclxuIik7CisJCQkJCQlwZ19sb2dfd2Fy bmluZygiYXJjaGl2ZSBpdGVtcyBub3QgaW4gY29ycmVjdCBzZWN0aW9uIG9yZGVyIik7CiAJ CQkJCWJyZWFrOwogCQkJCWNhc2UgU0VDVElPTl9QT1NUX0RBVEE6CiAJCQkJCS8qIG9rIG5v IG1hdHRlciB3aGljaCBzZWN0aW9uIHdlIHdlcmUgaW4gKi8KIAkJCQkJYnJlYWs7CiAJCQkJ ZGVmYXVsdDoKLQkJCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAidW5leHBlY3RlZCBz ZWN0aW9uIGNvZGUgJWRcbiIsCisJCQkJCWZhdGFsKCJ1bmV4cGVjdGVkIHNlY3Rpb24gY29k ZSAlZCIsCiAJCQkJCQkJCSAgKGludCkgdGUtPnNlY3Rpb24pOwogCQkJCQlicmVhazsKIAkJ CX0KQEAgLTM2NSwxMSArMzYwLDExIEBAIFJlc3RvcmVBcmNoaXZlKEFyY2hpdmUgKkFIWCkK IAl7CiAJCS8qIFdlIGhhdmVuJ3QgZ290IHJvdW5kIHRvIG1ha2luZyB0aGlzIHdvcmsgZm9y IGFsbCBhcmNoaXZlIGZvcm1hdHMgKi8KIAkJaWYgKEFILT5DbG9uZVB0ciA9PSBOVUxMIHx8 IEFILT5SZW9wZW5QdHIgPT0gTlVMTCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwg InBhcmFsbGVsIHJlc3RvcmUgaXMgbm90IHN1cHBvcnRlZCB3aXRoIHRoaXMgYXJjaGl2ZSBm aWxlIGZvcm1hdFxuIik7CisJCQlmYXRhbCgicGFyYWxsZWwgcmVzdG9yZSBpcyBub3Qgc3Vw cG9ydGVkIHdpdGggdGhpcyBhcmNoaXZlIGZpbGUgZm9ybWF0Iik7CiAKIAkJLyogRG9lc24n dCB3b3JrIGlmIHRoZSBhcmNoaXZlIHJlcHJlc2VudHMgZGVwZW5kZW5jaWVzIGFzIE9JRHMg Ki8KIAkJaWYgKEFILT52ZXJzaW9uIDwgS19WRVJTXzFfOCkKLQkJCWV4aXRfaG9ycmlibHko bW9kdWxlbmFtZSwgInBhcmFsbGVsIHJlc3RvcmUgaXMgbm90IHN1cHBvcnRlZCB3aXRoIGFy Y2hpdmVzIG1hZGUgYnkgcHJlLTguMCBwZ19kdW1wXG4iKTsKKwkJCWZhdGFsKCJwYXJhbGxl bCByZXN0b3JlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBhcmNoaXZlcyBtYWRlIGJ5IHByZS04 LjAgcGdfZHVtcCIpOwogCiAJCS8qCiAJCSAqIEl0J3MgYWxzbyBub3QgZ29ubmEgd29yayBp ZiB3ZSBjYW4ndCByZW9wZW4gdGhlIGlucHV0IGZpbGUsIHNvCkBAIC0zODcsNyArMzgyLDcg QEAgUmVzdG9yZUFyY2hpdmUoQXJjaGl2ZSAqQUhYKQogCQlmb3IgKHRlID0gQUgtPnRvYy0+ bmV4dDsgdGUgIT0gQUgtPnRvYzsgdGUgPSB0ZS0+bmV4dCkKIAkJewogCQkJaWYgKHRlLT5o YWREdW1wZXIgJiYgKHRlLT5yZXFzICYgUkVRX0RBVEEpICE9IDApCi0JCQkJZXhpdF9ob3Jy aWJseShtb2R1bGVuYW1lLCAiY2Fubm90IHJlc3RvcmUgZnJvbSBjb21wcmVzc2VkIGFyY2hp dmUgKGNvbXByZXNzaW9uIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBpbnN0YWxsYXRpb24pXG4i KTsKKwkJCQlmYXRhbCgiY2Fubm90IHJlc3RvcmUgZnJvbSBjb21wcmVzc2VkIGFyY2hpdmUg KGNvbXByZXNzaW9uIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBpbnN0YWxsYXRpb24pIik7CiAJ CX0KIAl9CiAjZW5kaWYKQEAgLTQwNCw5ICszOTksOSBAQCBSZXN0b3JlQXJjaGl2ZShBcmNo aXZlICpBSFgpCiAJICovCiAJaWYgKHJvcHQtPnVzZURCKQogCXsKLQkJYWhsb2coQUgsIDEs ICJjb25uZWN0aW5nIHRvIGRhdGFiYXNlIGZvciByZXN0b3JlXG4iKTsKKwkJcGdfbG9nX2lu Zm8oImNvbm5lY3RpbmcgdG8gZGF0YWJhc2UgZm9yIHJlc3RvcmUiKTsKIAkJaWYgKEFILT52 ZXJzaW9uIDwgS19WRVJTXzFfMykKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImRp cmVjdCBkYXRhYmFzZSBjb25uZWN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBpbiBwcmUtMS4z IGFyY2hpdmVzXG4iKTsKKwkJCWZhdGFsKCJkaXJlY3QgZGF0YWJhc2UgY29ubmVjdGlvbnMg YXJlIG5vdCBzdXBwb3J0ZWQgaW4gcHJlLTEuMyBhcmNoaXZlcyIpOwogCiAJCS8qCiAJCSAq IFdlIGRvbid0IHdhbnQgdG8gZ3Vlc3MgYXQgd2hldGhlciB0aGUgZHVtcCB3aWxsIHN1Y2Nl c3NmdWxseQpAQCAtNDUxLDcgKzQ0Niw3IEBAIFJlc3RvcmVBcmNoaXZlKEFyY2hpdmUgKkFI WCkKIAkJaWYgKGltcGxpZWREYXRhT25seSkKIAkJewogCQkJcm9wdC0+ZGF0YU9ubHkgPSBp bXBsaWVkRGF0YU9ubHk7Ci0JCQlhaGxvZyhBSCwgMSwgImltcGxpZWQgZGF0YS1vbmx5IHJl c3RvcmVcbiIpOworCQkJcGdfbG9nX2luZm8oImltcGxpZWQgZGF0YS1vbmx5IHJlc3RvcmUi KTsKIAkJfQogCX0KIApAQCAtNTE3LDcgKzUxMiw3IEBAIFJlc3RvcmVBcmNoaXZlKEFyY2hp dmUgKkFIWCkKIAkJCS8qIE90aGVyd2lzZSwgZHJvcCBhbnl0aGluZyB0aGF0J3Mgc2VsZWN0 ZWQgYW5kIGhhcyBhIGRyb3BTdG10ICovCiAJCQlpZiAoKCh0ZS0+cmVxcyAmIChSRVFfU0NI RU1BIHwgUkVRX0RBVEEpKSAhPSAwKSAmJiB0ZS0+ZHJvcFN0bXQpCiAJCQl7Ci0JCQkJYWhs b2coQUgsIDEsICJkcm9wcGluZyAlcyAlc1xuIiwgdGUtPmRlc2MsIHRlLT50YWcpOworCQkJ CXBnX2xvZ19pbmZvKCJkcm9wcGluZyAlcyAlcyIsIHRlLT5kZXNjLCB0ZS0+dGFnKTsKIAkJ CQkvKiBTZWxlY3Qgb3duZXIgYW5kIHNjaGVtYSBhcyBuZWNlc3NhcnkgKi8KIAkJCQlfYmVj b21lT3duZXIoQUgsIHRlKTsKIAkJCQlfc2VsZWN0T3V0cHV0U2NoZW1hKEFILCB0ZS0+bmFt ZXNwYWNlKTsKQEAgLTYxMiw4ICs2MDcsNyBAQCBSZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpB SFgpCiAJCQkJCQkJCWVsc2UKIAkJCQkJCQkJewogCQkJCQkJCQkJLyogY29tcGxhaW4gYW5k IGVtaXQgdW5tb2RpZmllZCBjb21tYW5kICovCi0JCQkJCQkJCQl3cml0ZV9tc2cobW9kdWxl bmFtZSwKLQkJCQkJCQkJCQkJICAiV0FSTklORzogY291bGQgbm90IGZpbmQgd2hlcmUgdG8g aW5zZXJ0IElGIEVYSVNUUyBpbiBzdGF0ZW1lbnQgXCIlc1wiXG4iLAorCQkJCQkJCQkJcGdf bG9nX3dhcm5pbmcoImNvdWxkIG5vdCBmaW5kIHdoZXJlIHRvIGluc2VydCBJRiBFWElTVFMg aW4gc3RhdGVtZW50IFwiJXNcIiIsCiAJCQkJCQkJCQkJCSAgZHJvcFN0bXRPcmlnKTsKIAkJ CQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKGZ0U3RtdCwgZHJvcFN0bXQpOwogCQkJCQkJ CQl9CkBAIC03NjksOSArNzYzLDkgQEAgcmVzdG9yZV90b2NfZW50cnkoQXJjaGl2ZUhhbmRs ZSAqQUgsIFRvY0VudHJ5ICp0ZSwgYm9vbCBpc19wYXJhbGxlbCkKIAlpZiAoIXJvcHQtPnN1 cHByZXNzRHVtcFdhcm5pbmdzICYmIHN0cmNtcCh0ZS0+ZGVzYywgIldBUk5JTkciKSA9PSAw KQogCXsKIAkJaWYgKCFyb3B0LT5kYXRhT25seSAmJiB0ZS0+ZGVmbiAhPSBOVUxMICYmIHN0 cmxlbih0ZS0+ZGVmbikgIT0gMCkKLQkJCXdyaXRlX21zZyhtb2R1bGVuYW1lLCAid2Fybmlu ZyBmcm9tIG9yaWdpbmFsIGR1bXAgZmlsZTogJXNcbiIsIHRlLT5kZWZuKTsKKwkJCXBnX2xv Z193YXJuaW5nKCJ3YXJuaW5nIGZyb20gb3JpZ2luYWwgZHVtcCBmaWxlOiAlcyIsIHRlLT5k ZWZuKTsKIAkJZWxzZSBpZiAodGUtPmNvcHlTdG10ICE9IE5VTEwgJiYgc3RybGVuKHRlLT5j b3B5U3RtdCkgIT0gMCkKLQkJCXdyaXRlX21zZyhtb2R1bGVuYW1lLCAid2FybmluZyBmcm9t IG9yaWdpbmFsIGR1bXAgZmlsZTogJXNcbiIsIHRlLT5jb3B5U3RtdCk7CisJCQlwZ19sb2df d2FybmluZygid2FybmluZyBmcm9tIG9yaWdpbmFsIGR1bXAgZmlsZTogJXMiLCB0ZS0+Y29w eVN0bXQpOwogCX0KIAogCS8qIFdvcmsgb3V0IHdoYXQsIGlmIGFueXRoaW5nLCB3ZSB3YW50 IGZyb20gdGhpcyBlbnRyeSAqLwpAQCAtNzg2LDEwICs3ODAsMTEgQEAgcmVzdG9yZV90b2Nf ZW50cnkoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgYm9vbCBpc19wYXJhbGxl bCkKIAl7CiAJCS8qIFNob3cgbmFtZXNwYWNlIGluIGxvZyBtZXNzYWdlIGlmIGF2YWlsYWJs ZSAqLwogCQlpZiAodGUtPm5hbWVzcGFjZSkKLQkJCWFobG9nKEFILCAxLCAiY3JlYXRpbmcg JXMgXCIlcy4lc1wiXG4iLAotCQkJCSAgdGUtPmRlc2MsIHRlLT5uYW1lc3BhY2UsIHRlLT50 YWcpOworCQkJcGdfbG9nX2luZm8oImNyZWF0aW5nICVzIFwiJXMuJXNcIiIsCisJCQkJCQl0 ZS0+ZGVzYywgdGUtPm5hbWVzcGFjZSwgdGUtPnRhZyk7CiAJCWVsc2UKLQkJCWFobG9nKEFI LCAxLCAiY3JlYXRpbmcgJXMgXCIlc1wiXG4iLCB0ZS0+ZGVzYywgdGUtPnRhZyk7CisJCQlw Z19sb2dfaW5mbygiY3JlYXRpbmcgJXMgXCIlc1wiIiwKKwkJCQkJCXRlLT5kZXNjLCB0ZS0+ dGFnKTsKIAogCQlfcHJpbnRUb2NFbnRyeShBSCwgdGUsIGZhbHNlKTsKIAkJZGVmbkR1bXBl ZCA9IHRydWU7CkBAIC04NDUsNyArODQwLDcgQEAgcmVzdG9yZV90b2NfZW50cnkoQXJjaGl2 ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgYm9vbCBpc19wYXJhbGxlbCkKIAkJCWFwcGVu ZENvbm5TdHJWYWwoJmNvbm5zdHIsIHRlLT50YWcpOwogCQkJLyogQWJhbmRvbiBzdHJ1Y3Qs IGJ1dCBrZWVwIGl0cyBidWZmZXIgdW50aWwgcHJvY2VzcyBleGl0LiAqLwogCi0JCQlhaGxv ZyhBSCwgMSwgImNvbm5lY3RpbmcgdG8gbmV3IGRhdGFiYXNlIFwiJXNcIlxuIiwgdGUtPnRh Zyk7CisJCQlwZ19sb2dfaW5mbygiY29ubmVjdGluZyB0byBuZXcgZGF0YWJhc2UgXCIlc1wi IiwgdGUtPnRhZyk7CiAJCQlfcmVjb25uZWN0VG9EQihBSCwgdGUtPnRhZyk7CiAJCQlyb3B0 LT5kYm5hbWUgPSBjb25uc3RyLmRhdGE7CiAJCX0KQEAgLTg3Myw3ICs4NjgsNyBAQCByZXN0 b3JlX3RvY19lbnRyeShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBib29sIGlz X3BhcmFsbGVsKQogCQkJCWlmIChzdHJjbXAodGUtPmRlc2MsICJCTE9CUyIpID09IDAgfHwK IAkJCQkJc3RyY21wKHRlLT5kZXNjLCAiQkxPQiBDT01NRU5UUyIpID09IDApCiAJCQkJewot CQkJCQlhaGxvZyhBSCwgMSwgInByb2Nlc3NpbmcgJXNcbiIsIHRlLT5kZXNjKTsKKwkJCQkJ cGdfbG9nX2luZm8oInByb2Nlc3NpbmcgJXMiLCB0ZS0+ZGVzYyk7CiAKIAkJCQkJX3NlbGVj dE91dHB1dFNjaGVtYShBSCwgInBnX2NhdGFsb2ciKTsKIApAQCAtODkzLDcgKzg4OCw3IEBA IHJlc3RvcmVfdG9jX2VudHJ5KEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUsIGJv b2wgaXNfcGFyYWxsZWwpCiAJCQkJCV9iZWNvbWVPd25lcihBSCwgdGUpOwogCQkJCQlfc2Vs ZWN0T3V0cHV0U2NoZW1hKEFILCB0ZS0+bmFtZXNwYWNlKTsKIAotCQkJCQlhaGxvZyhBSCwg MSwgInByb2Nlc3NpbmcgZGF0YSBmb3IgdGFibGUgXCIlcy4lc1wiXG4iLAorCQkJCQlwZ19s b2dfaW5mbygicHJvY2Vzc2luZyBkYXRhIGZvciB0YWJsZSBcIiVzLiVzXCIiLAogCQkJCQkJ ICB0ZS0+bmFtZXNwYWNlLCB0ZS0+dGFnKTsKIAogCQkJCQkvKgpAQCAtOTU1LDcgKzk1MCw3 IEBAIHJlc3RvcmVfdG9jX2VudHJ5KEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUs IGJvb2wgaXNfcGFyYWxsZWwpCiAJCWVsc2UgaWYgKCFkZWZuRHVtcGVkKQogCQl7CiAJCQkv KiBJZiB3ZSBoYXZlbid0IGFscmVhZHkgZHVtcGVkIHRoZSBkZWZuIHBhcnQsIGRvIHNvIG5v dyAqLwotCQkJYWhsb2coQUgsIDEsICJleGVjdXRpbmcgJXMgJXNcbiIsIHRlLT5kZXNjLCB0 ZS0+dGFnKTsKKwkJCXBnX2xvZ19pbmZvKCJleGVjdXRpbmcgJXMgJXMiLCB0ZS0+ZGVzYywg dGUtPnRhZyk7CiAJCQlfcHJpbnRUb2NFbnRyeShBSCwgdGUsIGZhbHNlKTsKIAkJfQogCX0K QEAgLTk5NCw3ICs5ODksNyBAQCBfZGlzYWJsZVRyaWdnZXJzSWZOZWNlc3NhcnkoQXJjaGl2 ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAlpZiAoIXJvcHQtPmRhdGFPbmx5IHx8ICFy b3B0LT5kaXNhYmxlX3RyaWdnZXJzKQogCQlyZXR1cm47CiAKLQlhaGxvZyhBSCwgMSwgImRp c2FibGluZyB0cmlnZ2VycyBmb3IgJXNcbiIsIHRlLT50YWcpOworCXBnX2xvZ19pbmZvKCJk aXNhYmxpbmcgdHJpZ2dlcnMgZm9yICVzIiwgdGUtPnRhZyk7CiAKIAkvKgogCSAqIEJlY29t ZSBzdXBlcnVzZXIgaWYgcG9zc2libGUsIHNpbmNlIHRoZXkgYXJlIHRoZSBvbmx5IG9uZXMg d2hvIGNhbgpAQCAtMTAyMCw3ICsxMDE1LDcgQEAgX2VuYWJsZVRyaWdnZXJzSWZOZWNlc3Nh cnkoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAlpZiAoIXJvcHQtPmRhdGFP bmx5IHx8ICFyb3B0LT5kaXNhYmxlX3RyaWdnZXJzKQogCQlyZXR1cm47CiAKLQlhaGxvZyhB SCwgMSwgImVuYWJsaW5nIHRyaWdnZXJzIGZvciAlc1xuIiwgdGUtPnRhZyk7CisJcGdfbG9n X2luZm8oImVuYWJsaW5nIHRyaWdnZXJzIGZvciAlcyIsIHRlLT50YWcpOwogCiAJLyoKIAkg KiBCZWNvbWUgc3VwZXJ1c2VyIGlmIHBvc3NpYmxlLCBzaW5jZSB0aGV5IGFyZSB0aGUgb25s eSBvbmVzIHdobyBjYW4KQEAgLTEwNDgsNyArMTA0Myw3IEBAIFdyaXRlRGF0YShBcmNoaXZl ICpBSFgsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBkTGVuKQogCUFyY2hpdmVIYW5kbGUg KkFIID0gKEFyY2hpdmVIYW5kbGUgKikgQUhYOwogCiAJaWYgKCFBSC0+Y3VyclRvYykKLQkJ ZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiaW50ZXJuYWwgZXJyb3IgLS0gV3JpdGVEYXRh IGNhbm5vdCBiZSBjYWxsZWQgb3V0c2lkZSB0aGUgY29udGV4dCBvZiBhIERhdGFEdW1wZXIg cm91dGluZVxuIik7CisJCWZhdGFsKCJpbnRlcm5hbCBlcnJvciAtLSBXcml0ZURhdGEgY2Fu bm90IGJlIGNhbGxlZCBvdXRzaWRlIHRoZSBjb250ZXh0IG9mIGEgRGF0YUR1bXBlciByb3V0 aW5lIik7CiAKIAlBSC0+V3JpdGVEYXRhUHRyKEFILCBkYXRhLCBkTGVuKTsKIApAQCAtMTIz Miw3ICsxMjI3LDcgQEAgU3RhcnRCbG9iKEFyY2hpdmUgKkFIWCwgT2lkIG9pZCkKIAlBcmNo aXZlSGFuZGxlICpBSCA9IChBcmNoaXZlSGFuZGxlICopIEFIWDsKIAogCWlmICghQUgtPlN0 YXJ0QmxvYlB0cikKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAibGFyZ2Utb2JqZWN0 IG91dHB1dCBub3Qgc3VwcG9ydGVkIGluIGNob3NlbiBmb3JtYXRcbiIpOworCQlmYXRhbCgi bGFyZ2Utb2JqZWN0IG91dHB1dCBub3Qgc3VwcG9ydGVkIGluIGNob3NlbiBmb3JtYXQiKTsK IAogCUFILT5TdGFydEJsb2JQdHIoQUgsIEFILT5jdXJyVG9jLCBvaWQpOwogCkBAIC0xMjkw LDggKzEyODUsOCBAQCBFbmRSZXN0b3JlQmxvYnMoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCQlh aHByaW50ZihBSCwgIkNPTU1JVDtcblxuIik7CiAJfQogCi0JYWhsb2coQUgsIDEsIG5nZXR0 ZXh0KCJyZXN0b3JlZCAlZCBsYXJnZSBvYmplY3RcbiIsCi0JCQkJCQkgICJyZXN0b3JlZCAl ZCBsYXJnZSBvYmplY3RzXG4iLAorCXBnX2xvZ19pbmZvKG5nZXR0ZXh0KCJyZXN0b3JlZCAl ZCBsYXJnZSBvYmplY3QiLAorCQkJCQkJICJyZXN0b3JlZCAlZCBsYXJnZSBvYmplY3RzIiwK IAkJCQkJCSAgQUgtPmJsb2JDb3VudCksCiAJCSAgQUgtPmJsb2JDb3VudCk7CiB9CkBAIC0x MzExLDcgKzEzMDYsNyBAQCBTdGFydFJlc3RvcmVCbG9iKEFyY2hpdmVIYW5kbGUgKkFILCBP aWQgb2lkLCBib29sIGRyb3ApCiAJLyogSW5pdGlhbGl6ZSB0aGUgTE8gQnVmZmVyICovCiAJ QUgtPmxvX2J1Zl91c2VkID0gMDsKIAotCWFobG9nKEFILCAxLCAicmVzdG9yaW5nIGxhcmdl IG9iamVjdCB3aXRoIE9JRCAldVxuIiwgb2lkKTsKKwlwZ19sb2dfaW5mbygicmVzdG9yaW5n IGxhcmdlIG9iamVjdCB3aXRoIE9JRCAldSIsIG9pZCk7CiAKIAkvKiBXaXRoIGFuIG9sZCBh cmNoaXZlIHdlIG11c3QgZG8gZHJvcCBhbmQgY3JlYXRlIGxvZ2ljIGhlcmUgKi8KIAlpZiAo b2xkX2Jsb2Jfc3R5bGUgJiYgZHJvcCkKQEAgLTEzMjMsMTIgKzEzMTgsMTIgQEAgU3RhcnRS ZXN0b3JlQmxvYihBcmNoaXZlSGFuZGxlICpBSCwgT2lkIG9pZCwgYm9vbCBkcm9wKQogCQl7 CiAJCQlsb09pZCA9IGxvX2NyZWF0ZShBSC0+Y29ubmVjdGlvbiwgb2lkKTsKIAkJCWlmIChs b09pZCA9PSAwIHx8IGxvT2lkICE9IG9pZCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5h bWUsICJjb3VsZCBub3QgY3JlYXRlIGxhcmdlIG9iamVjdCAldTogJXMiLAorCQkJCWZhdGFs KCJjb3VsZCBub3QgY3JlYXRlIGxhcmdlIG9iamVjdCAldTogJXMiLAogCQkJCQkJCSAgb2lk LCBQUWVycm9yTWVzc2FnZShBSC0+Y29ubmVjdGlvbikpOwogCQl9CiAJCUFILT5sb0ZkID0g bG9fb3BlbihBSC0+Y29ubmVjdGlvbiwgb2lkLCBJTlZfV1JJVEUpOwogCQlpZiAoQUgtPmxv RmQgPT0gLTEpCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3Bl biBsYXJnZSBvYmplY3QgJXU6ICVzIiwKKwkJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBsYXJn ZSBvYmplY3QgJXU6ICVzIiwKIAkJCQkJCSAgb2lkLCBQUWVycm9yTWVzc2FnZShBSC0+Y29u bmVjdGlvbikpOwogCX0KIAllbHNlCkBAIC0xMzg2LDggKzEzODEsNyBAQCBTb3J0VG9jRnJv bUZpbGUoQXJjaGl2ZSAqQUhYKQogCS8qIFNldHVwIHRoZSBmaWxlICovCiAJZmggPSBmb3Bl bihyb3B0LT50b2NGaWxlLCBQR19CSU5BUllfUik7CiAJaWYgKCFmaCkKLQkJZXhpdF9ob3Jy aWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IG9wZW4gVE9DIGZpbGUgXCIlc1wiOiAlc1xu IiwKLQkJCQkJICByb3B0LT50b2NGaWxlLCBzdHJlcnJvcihlcnJubykpOworCQlmYXRhbCgi Y291bGQgbm90IG9wZW4gVE9DIGZpbGUgXCIlc1wiOiAlbSIsIHJvcHQtPnRvY0ZpbGUpOwog CiAJaW5jb21wbGV0ZV9saW5lID0gZmFsc2U7CiAJd2hpbGUgKGZnZXRzKGJ1Ziwgc2l6ZW9m KGJ1ZiksIGZoKSAhPSBOVUxMKQpAQCAtMTQyNywxNCArMTQyMSwxNCBAQCBTb3J0VG9jRnJv bUZpbGUoQXJjaGl2ZSAqQUhYKQogCQlpZiAoZW5kcHRyID09IGJ1ZiB8fCBpZCA8PSAwIHx8 IGlkID4gQUgtPm1heER1bXBJZCB8fAogCQkJcm9wdC0+aWRXYW50ZWRbaWQgLSAxXSkKIAkJ ewotCQkJd3JpdGVfbXNnKG1vZHVsZW5hbWUsICJXQVJOSU5HOiBsaW5lIGlnbm9yZWQ6ICVz XG4iLCBidWYpOworCQkJcGdfbG9nX3dhcm5pbmcoImxpbmUgaWdub3JlZDogJXMiLCBidWYp OwogCQkJY29udGludWU7CiAJCX0KIAogCQkvKiBGaW5kIFRPQyBlbnRyeSAqLwogCQl0ZSA9 IGdldFRvY0VudHJ5QnlEdW1wSWQoQUgsIGlkKTsKIAkJaWYgKCF0ZSkKLQkJCWV4aXRfaG9y cmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBmaW5kIGVudHJ5IGZvciBJRCAlZFxuIiwK KwkJCWZhdGFsKCJjb3VsZCBub3QgZmluZCBlbnRyeSBmb3IgSUQgJWQiLAogCQkJCQkJICBp ZCk7CiAKIAkJLyogTWFyayBpdCB3YW50ZWQgKi8KQEAgLTE0NTUsOCArMTQ0OSw3IEBAIFNv cnRUb2NGcm9tRmlsZShBcmNoaXZlICpBSFgpCiAJfQogCiAJaWYgKGZjbG9zZShmaCkgIT0g MCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGNsb3NlIFRPQyBm aWxlOiAlc1xuIiwKLQkJCQkJICBzdHJlcnJvcihlcnJubykpOworCQlmYXRhbCgiY291bGQg bm90IGNsb3NlIFRPQyBmaWxlOiAlbSIpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioq KgpAQCAtMTU2NiwxMSArMTU1OSw5IEBAIFNldE91dHB1dChBcmNoaXZlSGFuZGxlICpBSCwg Y29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBjb21wcmVzc2lvbikKIAlpZiAoIUFILT5PRikK IAl7CiAJCWlmIChmaWxlbmFtZSkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNv dWxkIG5vdCBvcGVuIG91dHB1dCBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJCQkgIGZpbGVu YW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIG91dHB1 dCBmaWxlIFwiJXNcIjogJW0iLCBmaWxlbmFtZSk7CiAJCWVsc2UKLQkJCWV4aXRfaG9ycmli bHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBvcGVuIG91dHB1dCBmaWxlOiAlc1xuIiwKLQkJ CQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBvdXRw dXQgZmlsZTogJW0iKTsKIAl9CiB9CiAKQEAgLTE1OTYsOCArMTU4Nyw3IEBAIFJlc3RvcmVP dXRwdXQoQXJjaGl2ZUhhbmRsZSAqQUgsIE91dHB1dENvbnRleHQgc2F2ZWRDb250ZXh0KQog CQlyZXMgPSBmY2xvc2UoQUgtPk9GKTsKIAogCWlmIChyZXMgIT0gMCkKLQkJZXhpdF9ob3Jy aWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGNsb3NlIG91dHB1dCBmaWxlOiAlc1xuIiwK LQkJCQkJICBzdHJlcnJvcihlcnJubykpOworCQlmYXRhbCgiY291bGQgbm90IGNsb3NlIG91 dHB1dCBmaWxlOiAlbSIpOwogCiAJQUgtPmd6T3V0ID0gc2F2ZWRDb250ZXh0Lmd6T3V0Owog CUFILT5PRiA9IHNhdmVkQ29udGV4dC5PRjsKQEAgLTE2NDIsMTkgKzE2MzIsNiBAQCBhaHBy aW50ZihBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqZm10LC4uLikKIAlyZXR1cm4g KGludCkgY250OwogfQogCi12b2lkCi1haGxvZyhBcmNoaXZlSGFuZGxlICpBSCwgaW50IGxl dmVsLCBjb25zdCBjaGFyICpmbXQsLi4uKQotewotCXZhX2xpc3QJCWFwOwotCi0JaWYgKEFI LT5kZWJ1Z0xldmVsIDwgbGV2ZWwgJiYgKCFBSC0+cHVibGljLnZlcmJvc2UgfHwgbGV2ZWwg PiAxKSkKLQkJcmV0dXJuOwotCi0JdmFfc3RhcnQoYXAsIGZtdCk7Ci0JdndyaXRlX21zZyhO VUxMLCBmbXQsIGFwKTsKLQl2YV9lbmQoYXApOwotfQotCiAvKgogICogU2luZ2xlIHBsYWNl IGZvciBsb2dpYyB3aGljaCBzYXlzICdXZSBhcmUgcmVzdG9yaW5nIHRvIGEgZGlyZWN0IERC IGNvbm5lY3Rpb24nLgogICovCkBAIC0xNjc3LDEzICsxNjU0LDEyIEBAIGR1bXBfbG9fYnVm KEFyY2hpdmVIYW5kbGUgKkFIKQogCQlzaXplX3QJCXJlczsKIAogCQlyZXMgPSBsb193cml0 ZShBSC0+Y29ubmVjdGlvbiwgQUgtPmxvRmQsIEFILT5sb19idWYsIEFILT5sb19idWZfdXNl ZCk7Ci0JCWFobG9nKEFILCA1LCBuZ2V0dGV4dCgid3JvdGUgJWx1IGJ5dGUgb2YgbGFyZ2Ug b2JqZWN0IGRhdGEgKHJlc3VsdCA9ICVsdSlcbiIsCisJCXBnX2xvZ19kZWJ1ZyhuZ2V0dGV4 dCgid3JvdGUgJWx1IGJ5dGUgb2YgbGFyZ2Ugb2JqZWN0IGRhdGEgKHJlc3VsdCA9ICVsdSlc biIsCiAJCQkJCQkJICAid3JvdGUgJWx1IGJ5dGVzIG9mIGxhcmdlIG9iamVjdCBkYXRhIChy ZXN1bHQgPSAlbHUpXG4iLAogCQkJCQkJCSAgQUgtPmxvX2J1Zl91c2VkKSwKIAkJCSAgKHVu c2lnbmVkIGxvbmcpIEFILT5sb19idWZfdXNlZCwgKHVuc2lnbmVkIGxvbmcpIHJlcyk7CiAJ CWlmIChyZXMgIT0gQUgtPmxvX2J1Zl91c2VkKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVu YW1lLAotCQkJCQkJICAiY291bGQgbm90IHdyaXRlIHRvIGxhcmdlIG9iamVjdCAocmVzdWx0 OiAlbHUsIGV4cGVjdGVkOiAlbHUpXG4iLAorCQkJZmF0YWwoImNvdWxkIG5vdCB3cml0ZSB0 byBsYXJnZSBvYmplY3QgKHJlc3VsdDogJWx1LCBleHBlY3RlZDogJWx1KSIsCiAJCQkJCQkg ICh1bnNpZ25lZCBsb25nKSByZXMsICh1bnNpZ25lZCBsb25nKSBBSC0+bG9fYnVmX3VzZWQp OwogCX0KIAllbHNlCkBAIC0xNzYyLDggKzE3MzgsNyBAQCBhaHdyaXRlKGNvbnN0IHZvaWQg KnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgQXJjaGl2ZUhhbmRsZSAqQUgpCiAK IC8qIG9uIHNvbWUgZXJyb3IsIHdlIG1heSBkZWNpZGUgdG8gZ28gb24uLi4gKi8KIHZvaWQK LXdhcm5fb3JfZXhpdF9ob3JyaWJseShBcmNoaXZlSGFuZGxlICpBSCwKLQkJCQkJICBjb25z dCBjaGFyICptb2R1bGVuYW1lLCBjb25zdCBjaGFyICpmbXQsLi4uKQord2Fybl9vcl9leGl0 X2hvcnJpYmx5KEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmbXQsLi4uKQogewog CXZhX2xpc3QJCWFwOwogCkBAIC0xNzc2LDIyICsxNzUxLDIyIEBAIHdhcm5fb3JfZXhpdF9o b3JyaWJseShBcmNoaXZlSGFuZGxlICpBSCwKIAogCQljYXNlIFNUQUdFX0lOSVRJQUxJWklO RzoKIAkJCWlmIChBSC0+c3RhZ2UgIT0gQUgtPmxhc3RFcnJvclN0YWdlKQotCQkJCXdyaXRl X21zZyhtb2R1bGVuYW1lLCAiRXJyb3Igd2hpbGUgSU5JVElBTElaSU5HOlxuIik7CisJCQkJ cGdfbG9nX2dlbmVyaWMoUEdfTE9HX0lORk8sICJ3aGlsZSBJTklUSUFMSVpJTkc6Iik7CiAJ CQlicmVhazsKIAogCQljYXNlIFNUQUdFX1BST0NFU1NJTkc6CiAJCQlpZiAoQUgtPnN0YWdl ICE9IEFILT5sYXN0RXJyb3JTdGFnZSkKLQkJCQl3cml0ZV9tc2cobW9kdWxlbmFtZSwgIkVy cm9yIHdoaWxlIFBST0NFU1NJTkcgVE9DOlxuIik7CisJCQkJcGdfbG9nX2dlbmVyaWMoUEdf TE9HX0lORk8sICJ3aGlsZSBQUk9DRVNTSU5HIFRPQzoiKTsKIAkJCWJyZWFrOwogCiAJCWNh c2UgU1RBR0VfRklOQUxJWklORzoKIAkJCWlmIChBSC0+c3RhZ2UgIT0gQUgtPmxhc3RFcnJv clN0YWdlKQotCQkJCXdyaXRlX21zZyhtb2R1bGVuYW1lLCAiRXJyb3Igd2hpbGUgRklOQUxJ WklORzpcbiIpOworCQkJCXBnX2xvZ19nZW5lcmljKFBHX0xPR19JTkZPLCAid2hpbGUgRklO QUxJWklORzoiKTsKIAkJCWJyZWFrOwogCX0KIAlpZiAoQUgtPmN1cnJlbnRURSAhPSBOVUxM ICYmIEFILT5jdXJyZW50VEUgIT0gQUgtPmxhc3RFcnJvclRFKQogCXsKLQkJd3JpdGVfbXNn KG1vZHVsZW5hbWUsICJFcnJvciBmcm9tIFRPQyBlbnRyeSAlZDsgJXUgJXUgJXMgJXMgJXNc biIsCisJCXBnX2xvZ19nZW5lcmljKFBHX0xPR19JTkZPLCAiZnJvbSBUT0MgZW50cnkgJWQ7 ICV1ICV1ICVzICVzICVzIiwKIAkJCQkgIEFILT5jdXJyZW50VEUtPmR1bXBJZCwKIAkJCQkg IEFILT5jdXJyZW50VEUtPmNhdGFsb2dJZC50YWJsZW9pZCwKIAkJCQkgIEFILT5jdXJyZW50 VEUtPmNhdGFsb2dJZC5vaWQsCkBAIC0xODAzLDcgKzE3NzgsNyBAQCB3YXJuX29yX2V4aXRf aG9ycmlibHkoQXJjaGl2ZUhhbmRsZSAqQUgsCiAJQUgtPmxhc3RFcnJvclRFID0gQUgtPmN1 cnJlbnRURTsKIAogCXZhX3N0YXJ0KGFwLCBmbXQpOwotCXZ3cml0ZV9tc2cobW9kdWxlbmFt ZSwgZm10LCBhcCk7CisJcGdfbG9nX2dlbmVyaWNfdihQR19MT0dfRVJST1IsIGZtdCwgYXAp OwogCXZhX2VuZChhcCk7CiAKIAlpZiAoQUgtPnB1YmxpYy5leGl0X29uX2Vycm9yKQpAQCAt MTg2Nyw3ICsxODQyLDcgQEAgYnVpbGRUb2NFbnRyeUFycmF5cyhBcmNoaXZlSGFuZGxlICpB SCkKIAl7CiAJCS8qIHRoaXMgY2hlY2sgaXMgcHVyZWx5IHBhcmFub2lhLCBtYXhEdW1wSWQg c2hvdWxkIGJlIGNvcnJlY3QgKi8KIAkJaWYgKHRlLT5kdW1wSWQgPD0gMCB8fCB0ZS0+ZHVt cElkID4gbWF4RHVtcElkKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiYmFkIGR1 bXBJZFxuIik7CisJCQlmYXRhbCgiYmFkIGR1bXBJZCIpOwogCiAJCS8qIHRvY3NCeUR1bXBJ ZCBpbmRleGVzIGFsbCBUT0NzIGJ5IHRoZWlyIGR1bXAgSUQgKi8KIAkJQUgtPnRvY3NCeUR1 bXBJZFt0ZS0+ZHVtcElkXSA9IHRlOwpAQCAtMTg4OCw3ICsxODYzLDcgQEAgYnVpbGRUb2NF bnRyeUFycmF5cyhBcmNoaXZlSGFuZGxlICpBSCkKIAkJCSAqIGl0ZW0ncyBkdW1wIElELCBz byB0aGVyZSBzaG91bGQgYmUgYSBwbGFjZSBmb3IgaXQgaW4gdGhlIGFycmF5LgogCQkJICov CiAJCQlpZiAodGFibGVJZCA8PSAwIHx8IHRhYmxlSWQgPiBtYXhEdW1wSWQpCi0JCQkJZXhp dF9ob3JyaWJseShtb2R1bGVuYW1lLCAiYmFkIHRhYmxlIGR1bXBJZCBmb3IgVEFCTEUgREFU QSBpdGVtXG4iKTsKKwkJCQlmYXRhbCgiYmFkIHRhYmxlIGR1bXBJZCBmb3IgVEFCTEUgREFU QSBpdGVtIik7CiAKIAkJCUFILT50YWJsZURhdGFJZFt0YWJsZUlkXSA9IHRlLT5kdW1wSWQ7 CiAJCX0KQEAgLTE5ODAsNyArMTk1NSw3IEBAIFJlYWRPZmZzZXQoQXJjaGl2ZUhhbmRsZSAq QUgsIHBnb2ZmX3QgKiBvKQogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKLQkJCWV4aXRfaG9y cmlibHkobW9kdWxlbmFtZSwgInVuZXhwZWN0ZWQgZGF0YSBvZmZzZXQgZmxhZyAlZFxuIiwg b2Zmc2V0RmxnKTsKKwkJCWZhdGFsKCJ1bmV4cGVjdGVkIGRhdGEgb2Zmc2V0IGZsYWcgJWQi LCBvZmZzZXRGbGcpOwogCX0KIAogCS8qCkBAIC0xOTkzLDcgKzE5NjgsNyBAQCBSZWFkT2Zm c2V0KEFyY2hpdmVIYW5kbGUgKkFILCBwZ29mZl90ICogbykKIAkJZWxzZQogCQl7CiAJCQlp ZiAoQUgtPlJlYWRCeXRlUHRyKEFIKSAhPSAwKQotCQkJCWV4aXRfaG9ycmlibHkobW9kdWxl bmFtZSwgImZpbGUgb2Zmc2V0IGluIGR1bXAgZmlsZSBpcyB0b28gbGFyZ2VcbiIpOworCQkJ CWZhdGFsKCJmaWxlIG9mZnNldCBpbiBkdW1wIGZpbGUgaXMgdG9vIGxhcmdlIik7CiAJCX0K IAl9CiAKQEAgLTIxMDUsOSArMjA4MCw3IEBAIF9kaXNjb3ZlckFyY2hpdmVGb3JtYXQoQXJj aGl2ZUhhbmRsZSAqQUgpCiAJc2l6ZV90CQljbnQ7CiAJaW50CQkJd2FudENsb3NlID0gMDsK IAotI2lmIDAKLQl3cml0ZV9tc2cobW9kdWxlbmFtZSwgImF0dGVtcHRpbmcgdG8gYXNjZXJ0 YWluIGFyY2hpdmUgZm9ybWF0XG4iKTsKLSNlbmRpZgorCXBnX2xvZ19kZWJ1ZygiYXR0ZW1w dGluZyB0byBhc2NlcnRhaW4gYXJjaGl2ZSBmb3JtYXQiKTsKIAogCWlmIChBSC0+bG9va2Fo ZWFkKQogCQlmcmVlKEFILT5sb29rYWhlYWQpOwpAQCAtMjEzMiw3ICsyMTA1LDcgQEAgX2Rp c2NvdmVyQXJjaGl2ZUZvcm1hdChBcmNoaXZlSGFuZGxlICpBSCkKIAkJCWNoYXIJCWJ1ZltN QVhQR1BBVEhdOwogCiAJCQlpZiAoc25wcmludGYoYnVmLCBNQVhQR1BBVEgsICIlcy90b2Mu ZGF0IiwgQUgtPmZTcGVjKSA+PSBNQVhQR1BBVEgpCi0JCQkJZXhpdF9ob3JyaWJseShtb2R1 bGVuYW1lLCAiZGlyZWN0b3J5IG5hbWUgdG9vIGxvbmc6IFwiJXNcIlxuIiwKKwkJCQlmYXRh bCgiZGlyZWN0b3J5IG5hbWUgdG9vIGxvbmc6IFwiJXNcIiIsCiAJCQkJCQkJICBBSC0+ZlNw ZWMpOwogCQkJaWYgKHN0YXQoYnVmLCAmc3QpID09IDAgJiYgU19JU1JFRyhzdC5zdF9tb2Rl KSkKIAkJCXsKQEAgLTIxNDIsNyArMjExNSw3IEBAIF9kaXNjb3ZlckFyY2hpdmVGb3JtYXQo QXJjaGl2ZUhhbmRsZSAqQUgpCiAKICNpZmRlZiBIQVZFX0xJQloKIAkJCWlmIChzbnByaW50 ZihidWYsIE1BWFBHUEFUSCwgIiVzL3RvYy5kYXQuZ3oiLCBBSC0+ZlNwZWMpID49IE1BWFBH UEFUSCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJkaXJlY3RvcnkgbmFtZSB0 b28gbG9uZzogXCIlc1wiXG4iLAorCQkJCWZhdGFsKCJkaXJlY3RvcnkgbmFtZSB0b28gbG9u ZzogXCIlc1wiIiwKIAkJCQkJCQkgIEFILT5mU3BlYyk7CiAJCQlpZiAoc3RhdChidWYsICZz dCkgPT0gMCAmJiBTX0lTUkVHKHN0LnN0X21vZGUpKQogCQkJewpAQCAtMjE1MCw3ICsyMTIz LDcgQEAgX2Rpc2NvdmVyQXJjaGl2ZUZvcm1hdChBcmNoaXZlSGFuZGxlICpBSCkKIAkJCQly ZXR1cm4gQUgtPmZvcm1hdDsKIAkJCX0KICNlbmRpZgotCQkJZXhpdF9ob3JyaWJseShtb2R1 bGVuYW1lLCAiZGlyZWN0b3J5IFwiJXNcIiBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSB2YWxp ZCBhcmNoaXZlIChcInRvYy5kYXRcIiBkb2VzIG5vdCBleGlzdClcbiIsCisJCQlmYXRhbCgi ZGlyZWN0b3J5IFwiJXNcIiBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSB2YWxpZCBhcmNoaXZl IChcInRvYy5kYXRcIiBkb2VzIG5vdCBleGlzdCkiLAogCQkJCQkJICBBSC0+ZlNwZWMpOwog CQkJZmggPSBOVUxMOwkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KIAkJfQpAQCAtMjE1 OCwyNCArMjEzMSwyMiBAQCBfZGlzY292ZXJBcmNoaXZlRm9ybWF0KEFyY2hpdmVIYW5kbGUg KkFIKQogCQl7CiAJCQlmaCA9IGZvcGVuKEFILT5mU3BlYywgUEdfQklOQVJZX1IpOwogCQkJ aWYgKCFmaCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3Bl biBpbnB1dCBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJCQkJICBBSC0+ZlNwZWMsIHN0cmVy cm9yKGVycm5vKSk7CisJCQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIGlucHV0IGZpbGUgXCIl c1wiOiAlbSIsIEFILT5mU3BlYyk7CiAJCX0KIAl9CiAJZWxzZQogCXsKIAkJZmggPSBzdGRp bjsKIAkJaWYgKCFmaCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5v dCBvcGVuIGlucHV0IGZpbGU6ICVzXG4iLAotCQkJCQkJICBzdHJlcnJvcihlcnJubykpOwor CQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIGlucHV0IGZpbGU6ICVtIik7CiAJfQogCiAJaWYg KChjbnQgPSBmcmVhZChzaWcsIDEsIDUsIGZoKSkgIT0gNSkKIAl7CiAJCWlmIChmZXJyb3Io ZmgpKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IHJlYWQgaW5w dXQgZmlsZTogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisJCQlmYXRhbCgiY291bGQgbm90 IHJlYWQgaW5wdXQgZmlsZTogJW0iKTsKIAkJZWxzZQotCQkJZXhpdF9ob3JyaWJseShtb2R1 bGVuYW1lLCAiaW5wdXQgZmlsZSBpcyB0b28gc2hvcnQgKHJlYWQgJWx1LCBleHBlY3RlZCA1 KVxuIiwKKwkJCWZhdGFsKCJpbnB1dCBmaWxlIGlzIHRvbyBzaG9ydCAocmVhZCAlbHUsIGV4 cGVjdGVkIDUpIiwKIAkJCQkJCSAgKHVuc2lnbmVkIGxvbmcpIGNudCk7CiAJfQogCkBAIC0y MjYwLDE5ICsyMjMxLDE5IEBAIF9kaXNjb3ZlckFyY2hpdmVGb3JtYXQoQXJjaGl2ZUhhbmRs ZSAqQUgpCiAJCQkgKiBsb29rcyBsaWtlIGl0J3MgcHJvYmFibHkgYSB0ZXh0IGZvcm1hdCBk dW1wLiBzbyBzdWdnZXN0IHRoZXkKIAkJCSAqIHRyeSBwc3FsCiAJCQkgKi8KLQkJCWV4aXRf aG9ycmlibHkobW9kdWxlbmFtZSwgImlucHV0IGZpbGUgYXBwZWFycyB0byBiZSBhIHRleHQg Zm9ybWF0IGR1bXAuIFBsZWFzZSB1c2UgcHNxbC5cbiIpOworCQkJZmF0YWwoImlucHV0IGZp bGUgYXBwZWFycyB0byBiZSBhIHRleHQgZm9ybWF0IGR1bXAuIFBsZWFzZSB1c2UgcHNxbC4i KTsKIAkJfQogCiAJCWlmIChBSC0+bG9va2FoZWFkTGVuICE9IDUxMikKIAkJewogCQkJaWYg KGZlb2YoZmgpKQotCQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImlucHV0IGZpbGUg ZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgdmFsaWQgYXJjaGl2ZSAodG9vIHNob3J0PylcbiIp OworCQkJCWZhdGFsKCJpbnB1dCBmaWxlIGRvZXMgbm90IGFwcGVhciB0byBiZSBhIHZhbGlk IGFyY2hpdmUgKHRvbyBzaG9ydD8pIik7CiAJCQllbHNlCiAJCQkJUkVBRF9FUlJPUl9FWElU KGZoKTsKIAkJfQogCiAJCWlmICghaXNWYWxpZFRhckhlYWRlcihBSC0+bG9va2FoZWFkKSkK LQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImlucHV0IGZpbGUgZG9lcyBub3QgYXBw ZWFyIHRvIGJlIGEgdmFsaWQgYXJjaGl2ZVxuIik7CisJCQlmYXRhbCgiaW5wdXQgZmlsZSBk b2VzIG5vdCBhcHBlYXIgdG8gYmUgYSB2YWxpZCBhcmNoaXZlIik7CiAKIAkJQUgtPmZvcm1h dCA9IGFyY2hUYXI7CiAJfQpAQCAtMjI5Miw4ICsyMjYzLDcgQEAgX2Rpc2NvdmVyQXJjaGl2 ZUZvcm1hdChBcmNoaXZlSGFuZGxlICpBSCkKIAkvKiBDbG9zZSB0aGUgZmlsZSAqLwogCWlm ICh3YW50Q2xvc2UpCiAJCWlmIChmY2xvc2UoZmgpICE9IDApCi0JCQlleGl0X2hvcnJpYmx5 KG1vZHVsZW5hbWUsICJjb3VsZCBub3QgY2xvc2UgaW5wdXQgZmlsZTogJXNcbiIsCi0JCQkJ CQkgIHN0cmVycm9yKGVycm5vKSk7CisJCQlmYXRhbCgiY291bGQgbm90IGNsb3NlIGlucHV0 IGZpbGU6ICVtIik7CiAKIAlyZXR1cm4gQUgtPmZvcm1hdDsKIH0KQEAgLTIzMDksMTQgKzIy NzksMTAgQEAgX2FsbG9jQUgoY29uc3QgY2hhciAqRmlsZVNwZWMsIGNvbnN0IEFyY2hpdmVG b3JtYXQgZm10LAogewogCUFyY2hpdmVIYW5kbGUgKkFIOwogCi0jaWYgMAotCXdyaXRlX21z Zyhtb2R1bGVuYW1lLCAiYWxsb2NhdGluZyBBSCBmb3IgJXMsIGZvcm1hdCAlZFxuIiwgRmls ZVNwZWMsIGZtdCk7Ci0jZW5kaWYKKwlwZ19sb2dfZGVidWcoImFsbG9jYXRpbmcgQUggZm9y ICVzLCBmb3JtYXQgJWQiLCBGaWxlU3BlYywgZm10KTsKIAogCUFIID0gKEFyY2hpdmVIYW5k bGUgKikgcGdfbWFsbG9jMChzaXplb2YoQXJjaGl2ZUhhbmRsZSkpOwogCi0JLyogQUgtPmRl YnVnTGV2ZWwgPSAxMDA7ICovCi0KIAlBSC0+dmVyc2lvbiA9IEtfVkVSU19TRUxGOwogCiAJ LyogaW5pdGlhbGl6ZSBmb3IgYmFja3dhcmRzIGNvbXBhdGlibGUgc3RyaW5nIHByb2Nlc3Np bmcgKi8KQEAgLTI0MTAsNyArMjM3Niw3IEBAIF9hbGxvY0FIKGNvbnN0IGNoYXIgKkZpbGVT cGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCwKIAkJCWJyZWFrOwogCiAJCWRlZmF1bHQ6 Ci0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJ1bnJlY29nbml6ZWQgZmlsZSBmb3Jt YXQgXCIlZFwiXG4iLCBmbXQpOworCQkJZmF0YWwoInVucmVjb2duaXplZCBmaWxlIGZvcm1h dCBcIiVkXCIiLCBmbXQpOwogCX0KIAogCXJldHVybiBBSDsKQEAgLTI0OTIsMTEgKzI0NTgs MTEgQEAgbWFya19kdW1wX2pvYl9kb25lKEFyY2hpdmVIYW5kbGUgKkFILAogCQkJCSAgIGlu dCBzdGF0dXMsCiAJCQkJICAgdm9pZCAqY2FsbGJhY2tfZGF0YSkKIHsKLQlhaGxvZyhBSCwg MSwgImZpbmlzaGVkIGl0ZW0gJWQgJXMgJXNcbiIsCisJcGdfbG9nX2luZm8oImZpbmlzaGVk IGl0ZW0gJWQgJXMgJXMiLAogCQkgIHRlLT5kdW1wSWQsIHRlLT5kZXNjLCB0ZS0+dGFnKTsK IAogCWlmIChzdGF0dXMgIT0gMCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAid29y a2VyIHByb2Nlc3MgZmFpbGVkOiBleGl0IGNvZGUgJWRcbiIsCisJCWZhdGFsKCJ3b3JrZXIg cHJvY2VzcyBmYWlsZWQ6IGV4aXQgY29kZSAlZCIsCiAJCQkJCSAgc3RhdHVzKTsKIH0KIApA QCAtMjYxNSw4ICsyNTgxLDcgQEAgUmVhZFRvYyhBcmNoaXZlSGFuZGxlICpBSCkKIAogCQkv KiBTYW5pdHkgY2hlY2sgKi8KIAkJaWYgKHRlLT5kdW1wSWQgPD0gMCkKLQkJCWV4aXRfaG9y cmlibHkobW9kdWxlbmFtZSwKLQkJCQkJCSAgImVudHJ5IElEICVkIG91dCBvZiByYW5nZSAt LSBwZXJoYXBzIGEgY29ycnVwdCBUT0NcbiIsCisJCQlmYXRhbCgiZW50cnkgSUQgJWQgb3V0 IG9mIHJhbmdlIC0tIHBlcmhhcHMgYSBjb3JydXB0IFRPQyIsCiAJCQkJCQkgIHRlLT5kdW1w SWQpOwogCiAJCXRlLT5oYWREdW1wZXIgPSBSZWFkSW50KEFIKTsKQEAgLTI2ODAsOCArMjY0 NSw3IEBAIFJlYWRUb2MoQXJjaGl2ZUhhbmRsZSAqQUgpCiAKIAkJdGUtPm93bmVyID0gUmVh ZFN0cihBSCk7CiAJCWlmIChBSC0+dmVyc2lvbiA8IEtfVkVSU18xXzkgfHwgc3RyY21wKFJl YWRTdHIoQUgpLCAidHJ1ZSIpID09IDApCi0JCQl3cml0ZV9tc2cobW9kdWxlbmFtZSwKLQkJ CQkJICAiV0FSTklORzogcmVzdG9yaW5nIHRhYmxlcyBXSVRIIE9JRFMgaXMgbm90IHN1cHBv cnRlZCBhbnltb3JlXG4iKTsKKwkJCXBnX2xvZ193YXJuaW5nKCJyZXN0b3JpbmcgdGFibGVz IFdJVEggT0lEUyBpcyBub3Qgc3VwcG9ydGVkIGFueW1vcmUiKTsKIAogCQkvKiBSZWFkIFRP QyBlbnRyeSBkZXBlbmRlbmNpZXMgKi8KIAkJaWYgKEFILT52ZXJzaW9uID49IEtfVkVSU18x XzUpCkBAIC0yNzI3LDcgKzI2OTEsNyBAQCBSZWFkVG9jKEFyY2hpdmVIYW5kbGUgKkFIKQog CQlpZiAoQUgtPlJlYWRFeHRyYVRvY1B0cikKIAkJCUFILT5SZWFkRXh0cmFUb2NQdHIoQUgs IHRlKTsKIAotCQlhaGxvZyhBSCwgMywgInJlYWQgVE9DIGVudHJ5ICVkIChJRCAlZCkgZm9y ICVzICVzXG4iLAorCQlwZ19sb2dfZGVidWcoInJlYWQgVE9DIGVudHJ5ICVkIChJRCAlZCkg Zm9yICVzICVzIiwKIAkJCSAgaSwgdGUtPmR1bXBJZCwgdGUtPmRlc2MsIHRlLT50YWcpOwog CiAJCS8qIGxpbmsgY29tcGxldGVkIGVudHJ5IGludG8gVE9DIGNpcmN1bGFyIGxpc3QgKi8K QEAgLTI3NjMsMTIgKzI3MjcsMTIgQEAgcHJvY2Vzc0VuY29kaW5nRW50cnkoQXJjaGl2ZUhh bmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAkJKnB0cjIgPSAnXDAnOwogCQllbmNvZGluZyA9 IHBnX2NoYXJfdG9fZW5jb2RpbmcocHRyMSk7CiAJCWlmIChlbmNvZGluZyA8IDApCi0JCQll eGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJ1bnJlY29nbml6ZWQgZW5jb2RpbmcgXCIlc1wi XG4iLAorCQkJZmF0YWwoInVucmVjb2duaXplZCBlbmNvZGluZyBcIiVzXCIiLAogCQkJCQkJ ICBwdHIxKTsKIAkJQUgtPnB1YmxpYy5lbmNvZGluZyA9IGVuY29kaW5nOwogCX0KIAllbHNl Ci0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImludmFsaWQgRU5DT0RJTkcgaXRlbTog JXNcbiIsCisJCWZhdGFsKCJpbnZhbGlkIEVOQ09ESU5HIGl0ZW06ICVzIiwKIAkJCQkJICB0 ZS0+ZGVmbik7CiAKIAlmcmVlKGRlZm4pOwpAQCAtMjc4Niw3ICsyNzUwLDcgQEAgcHJvY2Vz c1N0ZFN0cmluZ3NFbnRyeShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogCWVs c2UgaWYgKHB0cjEgJiYgc3RybmNtcChwdHIxLCAiJ29mZiciLCA1KSA9PSAwKQogCQlBSC0+ cHVibGljLnN0ZF9zdHJpbmdzID0gZmFsc2U7CiAJZWxzZQotCQlleGl0X2hvcnJpYmx5KG1v ZHVsZW5hbWUsICJpbnZhbGlkIFNURFNUUklOR1MgaXRlbTogJXNcbiIsCisJCWZhdGFsKCJp bnZhbGlkIFNURFNUUklOR1MgaXRlbTogJXMiLAogCQkJCQkgIHRlLT5kZWZuKTsKIH0KIApA QCAtMjgxMSwzNSArMjc3NSwzNSBAQCBTdHJpY3ROYW1lc0NoZWNrKFJlc3RvcmVPcHRpb25z ICpyb3B0KQogCXsKIAkJbWlzc2luZ19uYW1lID0gc2ltcGxlX3N0cmluZ19saXN0X25vdF90 b3VjaGVkKCZyb3B0LT5zY2hlbWFOYW1lcyk7CiAJCWlmIChtaXNzaW5nX25hbWUgIT0gTlVM TCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgInNjaGVtYSBcIiVzXCIgbm90IGZv dW5kXG4iLCBtaXNzaW5nX25hbWUpOworCQkJZmF0YWwoInNjaGVtYSBcIiVzXCIgbm90IGZv dW5kIiwgbWlzc2luZ19uYW1lKTsKIAl9CiAKIAlpZiAocm9wdC0+dGFibGVOYW1lcy5oZWFk ICE9IE5VTEwpCiAJewogCQltaXNzaW5nX25hbWUgPSBzaW1wbGVfc3RyaW5nX2xpc3Rfbm90 X3RvdWNoZWQoJnJvcHQtPnRhYmxlTmFtZXMpOwogCQlpZiAobWlzc2luZ19uYW1lICE9IE5V TEwpCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJ0YWJsZSBcIiVzXCIgbm90IGZv dW5kXG4iLCBtaXNzaW5nX25hbWUpOworCQkJZmF0YWwoInRhYmxlIFwiJXNcIiBub3QgZm91 bmQiLCBtaXNzaW5nX25hbWUpOwogCX0KIAogCWlmIChyb3B0LT5pbmRleE5hbWVzLmhlYWQg IT0gTlVMTCkKIAl7CiAJCW1pc3NpbmdfbmFtZSA9IHNpbXBsZV9zdHJpbmdfbGlzdF9ub3Rf dG91Y2hlZCgmcm9wdC0+aW5kZXhOYW1lcyk7CiAJCWlmIChtaXNzaW5nX25hbWUgIT0gTlVM TCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImluZGV4IFwiJXNcIiBub3QgZm91 bmRcbiIsIG1pc3NpbmdfbmFtZSk7CisJCQlmYXRhbCgiaW5kZXggXCIlc1wiIG5vdCBmb3Vu ZCIsIG1pc3NpbmdfbmFtZSk7CiAJfQogCiAJaWYgKHJvcHQtPmZ1bmN0aW9uTmFtZXMuaGVh ZCAhPSBOVUxMKQogCXsKIAkJbWlzc2luZ19uYW1lID0gc2ltcGxlX3N0cmluZ19saXN0X25v dF90b3VjaGVkKCZyb3B0LT5mdW5jdGlvbk5hbWVzKTsKIAkJaWYgKG1pc3NpbmdfbmFtZSAh PSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiZnVuY3Rpb24gXCIlc1wi IG5vdCBmb3VuZFxuIiwgbWlzc2luZ19uYW1lKTsKKwkJCWZhdGFsKCJmdW5jdGlvbiBcIiVz XCIgbm90IGZvdW5kIiwgbWlzc2luZ19uYW1lKTsKIAl9CiAKIAlpZiAocm9wdC0+dHJpZ2dl ck5hbWVzLmhlYWQgIT0gTlVMTCkKIAl7CiAJCW1pc3NpbmdfbmFtZSA9IHNpbXBsZV9zdHJp bmdfbGlzdF9ub3RfdG91Y2hlZCgmcm9wdC0+dHJpZ2dlck5hbWVzKTsKIAkJaWYgKG1pc3Np bmdfbmFtZSAhPSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAidHJpZ2dl ciBcIiVzXCIgbm90IGZvdW5kXG4iLCBtaXNzaW5nX25hbWUpOworCQkJZmF0YWwoInRyaWdn ZXIgXCIlc1wiIG5vdCBmb3VuZCIsIG1pc3NpbmdfbmFtZSk7CiAJfQogfQogCkBAIC0zMjE1 LDcgKzMxNzksNyBAQCBfZG9TZXRTZXNzaW9uQXV0aChBcmNoaXZlSGFuZGxlICpBSCwgY29u c3QgY2hhciAqdXNlcikKIAogCQlpZiAoIXJlcyB8fCBQUXJlc3VsdFN0YXR1cyhyZXMpICE9 IFBHUkVTX0NPTU1BTkRfT0spCiAJCQkvKiBOT1Qgd2Fybl9vcl9leGl0X2hvcnJpYmx5Li4u IHVzZSAtTyBpbnN0ZWFkIHRvIHNraXAgdGhpcy4gKi8KLQkJCWV4aXRfaG9ycmlibHkobW9k dWxlbmFtZSwgImNvdWxkIG5vdCBzZXQgc2Vzc2lvbiB1c2VyIHRvIFwiJXNcIjogJXMiLAor CQkJZmF0YWwoImNvdWxkIG5vdCBzZXQgc2Vzc2lvbiB1c2VyIHRvIFwiJXNcIjogJXMiLAog CQkJCQkJICB1c2VyLCBQUWVycm9yTWVzc2FnZShBSC0+Y29ubmVjdGlvbikpOwogCiAJCVBR Y2xlYXIocmVzKTsKQEAgLTMzNTMsNyArMzMxNyw3IEBAIF9zZWxlY3RPdXRwdXRTY2hlbWEo QXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKnNjaGVtYU5hbWUpCiAJCXJlcyA9IFBR ZXhlYyhBSC0+Y29ubmVjdGlvbiwgcXJ5LT5kYXRhKTsKIAogCQlpZiAoIXJlcyB8fCBQUXJl c3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCi0JCQl3YXJuX29yX2V4aXRf aG9ycmlibHkoQUgsIG1vZHVsZW5hbWUsCisJCQl3YXJuX29yX2V4aXRfaG9ycmlibHkoQUgs CiAJCQkJCQkJCSAgImNvdWxkIG5vdCBzZXQgc2VhcmNoX3BhdGggdG8gXCIlc1wiOiAlcyIs CiAJCQkJCQkJCSAgc2NoZW1hTmFtZSwgUFFlcnJvck1lc3NhZ2UoQUgtPmNvbm5lY3Rpb24p KTsKIApAQCAtMzQxNSw3ICszMzc5LDcgQEAgX3NlbGVjdFRhYmxlc3BhY2UoQXJjaGl2ZUhh bmRsZSAqQUgsIGNvbnN0IGNoYXIgKnRhYmxlc3BhY2UpCiAJCXJlcyA9IFBRZXhlYyhBSC0+ Y29ubmVjdGlvbiwgcXJ5LT5kYXRhKTsKIAogCQlpZiAoIXJlcyB8fCBQUXJlc3VsdFN0YXR1 cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCi0JCQl3YXJuX29yX2V4aXRfaG9ycmlibHko QUgsIG1vZHVsZW5hbWUsCisJCQl3YXJuX29yX2V4aXRfaG9ycmlibHkoQUgsCiAJCQkJCQkJ CSAgImNvdWxkIG5vdCBzZXQgZGVmYXVsdF90YWJsZXNwYWNlIHRvICVzOiAlcyIsCiAJCQkJ CQkJCSAgZm10SWQod2FudCksIFBRZXJyb3JNZXNzYWdlKEFILT5jb25uZWN0aW9uKSk7CiAK QEAgLTM1MTAsNyArMzQ3NCw3IEBAIF9nZXRPYmplY3REZXNjcmlwdGlvbihQUUV4cEJ1ZmZl ciBidWYsIFRvY0VudHJ5ICp0ZSwgQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCXJldHVybjsKIAl9 CiAKLQl3cml0ZV9tc2cobW9kdWxlbmFtZSwgIldBUk5JTkc6IGRvbid0IGtub3cgaG93IHRv IHNldCBvd25lciBmb3Igb2JqZWN0IHR5cGUgXCIlc1wiXG4iLAorCXBnX2xvZ193YXJuaW5n KCJkb24ndCBrbm93IGhvdyB0byBzZXQgb3duZXIgZm9yIG9iamVjdCB0eXBlIFwiJXNcIiIs CiAJCQkgIHR5cGUpOwogfQogCkBAIC0zNjY3LDcgKzM2MzEsNyBAQCBfcHJpbnRUb2NFbnRy eShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBib29sIGlzRGF0YSkKIAkJfQog CQllbHNlCiAJCXsKLQkJCXdyaXRlX21zZyhtb2R1bGVuYW1lLCAiV0FSTklORzogZG9uJ3Qg a25vdyBob3cgdG8gc2V0IG93bmVyIGZvciBvYmplY3QgdHlwZSBcIiVzXCJcbiIsCisJCQlw Z19sb2dfd2FybmluZygiZG9uJ3Qga25vdyBob3cgdG8gc2V0IG93bmVyIGZvciBvYmplY3Qg dHlwZSBcIiVzXCIiLAogCQkJCQkgIHRlLT5kZXNjKTsKIAkJfQogCX0KQEAgLTM3NzEsNyAr MzczNSw3IEBAIFJlYWRIZWFkKEFyY2hpdmVIYW5kbGUgKkFIKQogCQlBSC0+UmVhZEJ1ZlB0 cihBSCwgdG1wTWFnLCA1KTsKIAogCQlpZiAoc3RybmNtcCh0bXBNYWcsICJQR0RNUCIsIDUp ICE9IDApCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJkaWQgbm90IGZpbmQgbWFn aWMgc3RyaW5nIGluIGZpbGUgaGVhZGVyXG4iKTsKKwkJCWZhdGFsKCJkaWQgbm90IGZpbmQg bWFnaWMgc3RyaW5nIGluIGZpbGUgaGVhZGVyIik7CiAKIAkJdm1haiA9IEFILT5SZWFkQnl0 ZVB0cihBSCk7CiAJCXZtaW4gPSBBSC0+UmVhZEJ5dGVQdHIoQUgpOwpAQCAtMzc4NCwxNiAr Mzc0OCwxNiBAQCBSZWFkSGVhZChBcmNoaXZlSGFuZGxlICpBSCkKIAkJQUgtPnZlcnNpb24g PSBNQUtFX0FSQ0hJVkVfVkVSU0lPTih2bWFqLCB2bWluLCB2cmV2KTsKIAogCQlpZiAoQUgt PnZlcnNpb24gPCBLX1ZFUlNfMV8wIHx8IEFILT52ZXJzaW9uID4gS19WRVJTX01BWCkKLQkJ CWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgInVuc3VwcG9ydGVkIHZlcnNpb24gKCVkLiVk KSBpbiBmaWxlIGhlYWRlclxuIiwKKwkJCWZhdGFsKCJ1bnN1cHBvcnRlZCB2ZXJzaW9uICgl ZC4lZCkgaW4gZmlsZSBoZWFkZXIiLAogCQkJCQkJICB2bWFqLCB2bWluKTsKIAogCQlBSC0+ aW50U2l6ZSA9IEFILT5SZWFkQnl0ZVB0cihBSCk7CiAJCWlmIChBSC0+aW50U2l6ZSA+IDMy KQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAic2FuaXR5IGNoZWNrIG9uIGludGVn ZXIgc2l6ZSAoJWx1KSBmYWlsZWRcbiIsCisJCQlmYXRhbCgic2FuaXR5IGNoZWNrIG9uIGlu dGVnZXIgc2l6ZSAoJWx1KSBmYWlsZWQiLAogCQkJCQkJICAodW5zaWduZWQgbG9uZykgQUgt PmludFNpemUpOwogCiAJCWlmIChBSC0+aW50U2l6ZSA+IHNpemVvZihpbnQpKQotCQkJd3Jp dGVfbXNnKG1vZHVsZW5hbWUsICJXQVJOSU5HOiBhcmNoaXZlIHdhcyBtYWRlIG9uIGEgbWFj aGluZSB3aXRoIGxhcmdlciBpbnRlZ2Vycywgc29tZSBvcGVyYXRpb25zIG1pZ2h0IGZhaWxc biIpOworCQkJcGdfbG9nX3dhcm5pbmcoImFyY2hpdmUgd2FzIG1hZGUgb24gYSBtYWNoaW5l IHdpdGggbGFyZ2VyIGludGVnZXJzLCBzb21lIG9wZXJhdGlvbnMgbWlnaHQgZmFpbCIpOwog CiAJCWlmIChBSC0+dmVyc2lvbiA+PSBLX1ZFUlNfMV83KQogCQkJQUgtPm9mZlNpemUgPSBB SC0+UmVhZEJ5dGVQdHIoQUgpOwpAQCAtMzgwMyw3ICszNzY3LDcgQEAgUmVhZEhlYWQoQXJj aGl2ZUhhbmRsZSAqQUgpCiAJCWZtdCA9IEFILT5SZWFkQnl0ZVB0cihBSCk7CiAKIAkJaWYg KEFILT5mb3JtYXQgIT0gZm10KQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiZXhw ZWN0ZWQgZm9ybWF0ICglZCkgZGlmZmVycyBmcm9tIGZvcm1hdCBmb3VuZCBpbiBmaWxlICgl ZClcbiIsCisJCQlmYXRhbCgiZXhwZWN0ZWQgZm9ybWF0ICglZCkgZGlmZmVycyBmcm9tIGZv cm1hdCBmb3VuZCBpbiBmaWxlICglZCkiLAogCQkJCQkJICBBSC0+Zm9ybWF0LCBmbXQpOwog CX0KIApAQCAtMzgxOSw3ICszNzgzLDcgQEAgUmVhZEhlYWQoQXJjaGl2ZUhhbmRsZSAqQUgp CiAKICNpZm5kZWYgSEFWRV9MSUJaCiAJaWYgKEFILT5jb21wcmVzc2lvbiAhPSAwKQotCQl3 cml0ZV9tc2cobW9kdWxlbmFtZSwgIldBUk5JTkc6IGFyY2hpdmUgaXMgY29tcHJlc3NlZCwg YnV0IHRoaXMgaW5zdGFsbGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgY29tcHJlc3Npb24gLS0g bm8gZGF0YSB3aWxsIGJlIGF2YWlsYWJsZVxuIik7CisJCXBnX2xvZ193YXJuaW5nKCJhcmNo aXZlIGlzIGNvbXByZXNzZWQsIGJ1dCB0aGlzIGluc3RhbGxhdGlvbiBkb2VzIG5vdCBzdXBw b3J0IGNvbXByZXNzaW9uIC0tIG5vIGRhdGEgd2lsbCBiZSBhdmFpbGFibGUiKTsKICNlbmRp ZgogCiAJaWYgKEFILT52ZXJzaW9uID49IEtfVkVSU18xXzQpCkBAIC0zODM3LDcgKzM4MDEs NyBAQCBSZWFkSGVhZChBcmNoaXZlSGFuZGxlICpBSCkKIAkJQUgtPmNyZWF0ZURhdGUgPSBt a3RpbWUoJmNydG0pOwogCiAJCWlmIChBSC0+Y3JlYXRlRGF0ZSA9PSAodGltZV90KSAtMSkK LQkJCXdyaXRlX21zZyhtb2R1bGVuYW1lLCAiV0FSTklORzogaW52YWxpZCBjcmVhdGlvbiBk YXRlIGluIGhlYWRlclxuIik7CisJCQlwZ19sb2dfd2FybmluZygiaW52YWxpZCBjcmVhdGlv biBkYXRlIGluIGhlYWRlciIpOwogCX0KIAogCWlmIChBSC0+dmVyc2lvbiA+PSBLX1ZFUlNf MV8xMCkKQEAgLTM5MTAsNyArMzg3NCw3IEBAIHJlc3RvcmVfdG9jX2VudHJpZXNfcHJlZm9y ayhBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnBlbmRpbmdfbGlzdCkKIAlib29sCQlz a2lwcGVkX3NvbWU7CiAJVG9jRW50cnkgICAqbmV4dF93b3JrX2l0ZW07CiAKLQlhaGxvZyhB SCwgMiwgImVudGVyaW5nIHJlc3RvcmVfdG9jX2VudHJpZXNfcHJlZm9ya1xuIik7CisJcGdf bG9nX2RlYnVnKCJlbnRlcmluZyByZXN0b3JlX3RvY19lbnRyaWVzX3ByZWZvcmsiKTsKIAog CS8qIEFkanVzdCBkZXBlbmRlbmN5IGluZm9ybWF0aW9uICovCiAJZml4X2RlcGVuZGVuY2ll cyhBSCk7CkBAIC0zOTc0LDcgKzM5MzgsNyBAQCByZXN0b3JlX3RvY19lbnRyaWVzX3ByZWZv cmsoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICpwZW5kaW5nX2xpc3QpCiAJCWlmIChk b19ub3cpCiAJCXsKIAkJCS8qIE9LLCByZXN0b3JlIHRoZSBpdGVtIGFuZCB1cGRhdGUgaXRz IGRlcGVuZGVuY2llcyAqLwotCQkJYWhsb2coQUgsIDEsICJwcm9jZXNzaW5nIGl0ZW0gJWQg JXMgJXNcbiIsCisJCQlwZ19sb2dfaW5mbygicHJvY2Vzc2luZyBpdGVtICVkICVzICVzIiwK IAkJCQkgIG5leHRfd29ya19pdGVtLT5kdW1wSWQsCiAJCQkJICBuZXh0X3dvcmtfaXRlbS0+ ZGVzYywgbmV4dF93b3JrX2l0ZW0tPnRhZyk7CiAKQEAgLTQwMjcsNyArMzk5MSw3IEBAIHJl c3RvcmVfdG9jX2VudHJpZXNfcGFyYWxsZWwoQXJjaGl2ZUhhbmRsZSAqQUgsIFBhcmFsbGVs U3RhdGUgKnBzdGF0ZSwKIAlQYXJhbGxlbFJlYWR5TGlzdCByZWFkeV9saXN0OwogCVRvY0Vu dHJ5ICAgKm5leHRfd29ya19pdGVtOwogCi0JYWhsb2coQUgsIDIsICJlbnRlcmluZyByZXN0 b3JlX3RvY19lbnRyaWVzX3BhcmFsbGVsXG4iKTsKKwlwZ19sb2dfZGVidWcoImVudGVyaW5n IHJlc3RvcmVfdG9jX2VudHJpZXNfcGFyYWxsZWwiKTsKIAogCS8qIFNldCB1cCByZWFkeV9s aXN0IHdpdGggZW5vdWdoIHJvb20gZm9yIGFsbCBrbm93biBUb2NFbnRyeXMgKi8KIAlyZWFk eV9saXN0X2luaXQoJnJlYWR5X2xpc3QsIEFILT50b2NDb3VudCk7CkBAIC00MDUwLDcgKzQw MTQsNyBAQCByZXN0b3JlX3RvY19lbnRyaWVzX3BhcmFsbGVsKEFyY2hpdmVIYW5kbGUgKkFI LCBQYXJhbGxlbFN0YXRlICpwc3RhdGUsCiAJICogbGVmdCB0byBiZSBkb25lLiAgTm90ZSBp bnZhcmlhbnQ6IGF0IHRvcCBvZiBsb29wLCB0aGVyZSBzaG91bGQgYWx3YXlzCiAJICogYmUg YXQgbGVhc3Qgb25lIHdvcmtlciBhdmFpbGFibGUgdG8gZGlzcGF0Y2ggYSBqb2IgdG8uCiAJ ICovCi0JYWhsb2coQUgsIDEsICJlbnRlcmluZyBtYWluIHBhcmFsbGVsIGxvb3BcbiIpOwor CXBnX2xvZ19pbmZvKCJlbnRlcmluZyBtYWluIHBhcmFsbGVsIGxvb3AiKTsKIAogCWZvciAo OzspCiAJewpAQCAtNDA2MSw3ICs0MDI1LDcgQEAgcmVzdG9yZV90b2NfZW50cmllc19wYXJh bGxlbChBcmNoaXZlSGFuZGxlICpBSCwgUGFyYWxsZWxTdGF0ZSAqcHN0YXRlLAogCQkJLyog SWYgbm90IHRvIGJlIHJlc3RvcmVkLCBkb24ndCB3YXN0ZSB0aW1lIGxhdW5jaGluZyBhIHdv cmtlciAqLwogCQkJaWYgKChuZXh0X3dvcmtfaXRlbS0+cmVxcyAmIChSRVFfU0NIRU1BIHwg UkVRX0RBVEEpKSA9PSAwKQogCQkJewotCQkJCWFobG9nKEFILCAxLCAic2tpcHBpbmcgaXRl bSAlZCAlcyAlc1xuIiwKKwkJCQlwZ19sb2dfaW5mbygic2tpcHBpbmcgaXRlbSAlZCAlcyAl cyIsCiAJCQkJCSAgbmV4dF93b3JrX2l0ZW0tPmR1bXBJZCwKIAkJCQkJICBuZXh0X3dvcmtf aXRlbS0+ZGVzYywgbmV4dF93b3JrX2l0ZW0tPnRhZyk7CiAJCQkJLyogVXBkYXRlIGl0cyBk ZXBlbmRlbmNpZXMgYXMgdGhvdWdoIHdlJ2QgY29tcGxldGVkIGl0ICovCkBAIC00MDcwLDcg KzQwMzQsNyBAQCByZXN0b3JlX3RvY19lbnRyaWVzX3BhcmFsbGVsKEFyY2hpdmVIYW5kbGUg KkFILCBQYXJhbGxlbFN0YXRlICpwc3RhdGUsCiAJCQkJY29udGludWU7CiAJCQl9CiAKLQkJ CWFobG9nKEFILCAxLCAibGF1bmNoaW5nIGl0ZW0gJWQgJXMgJXNcbiIsCisJCQlwZ19sb2df aW5mbygibGF1bmNoaW5nIGl0ZW0gJWQgJXMgJXMiLAogCQkJCSAgbmV4dF93b3JrX2l0ZW0t PmR1bXBJZCwKIAkJCQkgIG5leHRfd29ya19pdGVtLT5kZXNjLCBuZXh0X3dvcmtfaXRlbS0+ dGFnKTsKIApAQCAtNDEyNCw3ICs0MDg4LDcgQEAgcmVzdG9yZV90b2NfZW50cmllc19wYXJh bGxlbChBcmNoaXZlSGFuZGxlICpBSCwgUGFyYWxsZWxTdGF0ZSAqcHN0YXRlLAogCiAJcmVh ZHlfbGlzdF9mcmVlKCZyZWFkeV9saXN0KTsKIAotCWFobG9nKEFILCAxLCAiZmluaXNoZWQg bWFpbiBwYXJhbGxlbCBsb29wXG4iKTsKKwlwZ19sb2dfaW5mbygiZmluaXNoZWQgbWFpbiBw YXJhbGxlbCBsb29wIik7CiB9CiAKIC8qCkBAIC00MTQyLDcgKzQxMDYsNyBAQCByZXN0b3Jl X3RvY19lbnRyaWVzX3Bvc3Rmb3JrKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqcGVu ZGluZ19saXN0KQogCVJlc3RvcmVPcHRpb25zICpyb3B0ID0gQUgtPnB1YmxpYy5yb3B0Owog CVRvY0VudHJ5ICAgKnRlOwogCi0JYWhsb2coQUgsIDIsICJlbnRlcmluZyByZXN0b3JlX3Rv Y19lbnRyaWVzX3Bvc3Rmb3JrXG4iKTsKKwlwZ19sb2dfZGVidWcoImVudGVyaW5nIHJlc3Rv cmVfdG9jX2VudHJpZXNfcG9zdGZvcmsiKTsKIAogCS8qCiAJICogTm93IHJlY29ubmVjdCB0 aGUgc2luZ2xlIHBhcmVudCBjb25uZWN0aW9uLgpAQCAtNDE2Miw3ICs0MTI2LDcgQEAgcmVz dG9yZV90b2NfZW50cmllc19wb3N0Zm9yayhBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkg KnBlbmRpbmdfbGlzdCkKIAkgKi8KIAlmb3IgKHRlID0gcGVuZGluZ19saXN0LT5wZW5kaW5n X25leHQ7IHRlICE9IHBlbmRpbmdfbGlzdDsgdGUgPSB0ZS0+cGVuZGluZ19uZXh0KQogCXsK LQkJYWhsb2coQUgsIDEsICJwcm9jZXNzaW5nIG1pc3NlZCBpdGVtICVkICVzICVzXG4iLAor CQlwZ19sb2dfaW5mbygicHJvY2Vzc2luZyBtaXNzZWQgaXRlbSAlZCAlcyAlcyIsCiAJCQkg IHRlLT5kdW1wSWQsIHRlLT5kZXNjLCB0ZS0+dGFnKTsKIAkJKHZvaWQpIHJlc3RvcmVfdG9j X2VudHJ5KEFILCB0ZSwgZmFsc2UpOwogCX0KQEAgLTQ0MDQsNyArNDM2OCw3IEBAIHBvcF9u ZXh0X3dvcmtfaXRlbShBcmNoaXZlSGFuZGxlICpBSCwgUGFyYWxsZWxSZWFkeUxpc3QgKnJl YWR5X2xpc3QsCiAJCXJldHVybiB0ZTsKIAl9CiAKLQlhaGxvZyhBSCwgMiwgIm5vIGl0ZW0g cmVhZHlcbiIpOworCXBnX2xvZ19kZWJ1Zygibm8gaXRlbSByZWFkeSIpOwogCXJldHVybiBO VUxMOwogfQogCkBAIC00NDQ4LDcgKzQ0MTIsNyBAQCBtYXJrX3Jlc3RvcmVfam9iX2RvbmUo QXJjaGl2ZUhhbmRsZSAqQUgsCiB7CiAJUGFyYWxsZWxSZWFkeUxpc3QgKnJlYWR5X2xpc3Qg PSAoUGFyYWxsZWxSZWFkeUxpc3QgKikgY2FsbGJhY2tfZGF0YTsKIAotCWFobG9nKEFILCAx LCAiZmluaXNoZWQgaXRlbSAlZCAlcyAlc1xuIiwKKwlwZ19sb2dfaW5mbygiZmluaXNoZWQg aXRlbSAlZCAlcyAlcyIsCiAJCSAgdGUtPmR1bXBJZCwgdGUtPmRlc2MsIHRlLT50YWcpOwog CiAJaWYgKHN0YXR1cyA9PSBXT1JLRVJfQ1JFQVRFX0RPTkUpCkBAIC00NDYxLDcgKzQ0MjUs NyBAQCBtYXJrX3Jlc3RvcmVfam9iX2RvbmUoQXJjaGl2ZUhhbmRsZSAqQUgsCiAJZWxzZSBp ZiAoc3RhdHVzID09IFdPUktFUl9JR05PUkVEX0VSUk9SUykKIAkJQUgtPnB1YmxpYy5uX2Vy cm9ycysrOwogCWVsc2UgaWYgKHN0YXR1cyAhPSAwKQotCQlleGl0X2hvcnJpYmx5KG1vZHVs ZW5hbWUsICJ3b3JrZXIgcHJvY2VzcyBmYWlsZWQ6IGV4aXQgY29kZSAlZFxuIiwKKwkJZmF0 YWwoIndvcmtlciBwcm9jZXNzIGZhaWxlZDogZXhpdCBjb2RlICVkIiwKIAkJCQkJICBzdGF0 dXMpOwogCiAJcmVkdWNlX2RlcGVuZGVuY2llcyhBSCwgdGUsIHJlYWR5X2xpc3QpOwpAQCAt NDYzMyw3ICs0NTk3LDcgQEAgcmVwb2ludF90YWJsZV9kZXBlbmRlbmNpZXMoQXJjaGl2ZUhh bmRsZSAqQUgpCiAKIAkJCQl0ZS0+ZGVwZW5kZW5jaWVzW2ldID0gdGFibGVkYXRhaWQ7CiAJ CQkJdGUtPmRhdGFMZW5ndGggPSBNYXgodGUtPmRhdGFMZW5ndGgsIHRhYmxlZGF0YXRlLT5k YXRhTGVuZ3RoKTsKLQkJCQlhaGxvZyhBSCwgMiwgInRyYW5zZmVycmluZyBkZXBlbmRlbmN5 ICVkIC0+ICVkIHRvICVkXG4iLAorCQkJCXBnX2xvZ19kZWJ1ZygidHJhbnNmZXJyaW5nIGRl cGVuZGVuY3kgJWQgLT4gJWQgdG8gJWQiLAogCQkJCQkgIHRlLT5kdW1wSWQsIG9sZGRlcCwg dGFibGVkYXRhaWQpOwogCQkJfQogCQl9CkBAIC00NzE1LDcgKzQ2NzksNyBAQCByZWR1Y2Vf ZGVwZW5kZW5jaWVzKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUsCiB7CiAJaW50 CQkJaTsKIAotCWFobG9nKEFILCAyLCAicmVkdWNpbmcgZGVwZW5kZW5jaWVzIGZvciAlZFxu IiwgdGUtPmR1bXBJZCk7CisJcGdfbG9nX2RlYnVnKCJyZWR1Y2luZyBkZXBlbmRlbmNpZXMg Zm9yICVkIiwgdGUtPmR1bXBJZCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgdGUtPm5SZXZEZXBz OyBpKyspCiAJewpAQCAtNDc2Nyw3ICs0NzMxLDcgQEAgbWFya19jcmVhdGVfZG9uZShBcmNo aXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogc3RhdGljIHZvaWQKIGluaGliaXRfZGF0 YV9mb3JfZmFpbGVkX3RhYmxlKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUpCiB7 Ci0JYWhsb2coQUgsIDEsICJ0YWJsZSBcIiVzXCIgY291bGQgbm90IGJlIGNyZWF0ZWQsIHdp bGwgbm90IHJlc3RvcmUgaXRzIGRhdGFcbiIsCisJcGdfbG9nX2luZm8oInRhYmxlIFwiJXNc IiBjb3VsZCBub3QgYmUgY3JlYXRlZCwgd2lsbCBub3QgcmVzdG9yZSBpdHMgZGF0YSIsCiAJ CSAgdGUtPnRhZyk7CiAKIAlpZiAoQUgtPnRhYmxlRGF0YUlkW3RlLT5kdW1wSWRdICE9IDAp CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmggYi9z cmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmgKaW5kZXggNGQ4ZjQ5OTI0Ny4u OWI2YTdiODQ2ZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNo aXZlci5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuaApAQCAt MTI2LDE3ICsxMjYsMTQgQEAgc3RydWN0IFBhcmFsbGVsU3RhdGU7CiAjZGVmaW5lIFJFQURf RVJST1JfRVhJVChmZCkgXAogCWRvIHsgXAogCQlpZiAoZmVvZihmZCkpIFwKLQkJCWV4aXRf aG9ycmlibHkobW9kdWxlbmFtZSwgXAotCQkJCQkJICAiY291bGQgbm90IHJlYWQgZnJvbSBp bnB1dCBmaWxlOiBlbmQgb2YgZmlsZVxuIik7IFwKKwkJCWZhdGFsKCJjb3VsZCBub3QgcmVh ZCBmcm9tIGlucHV0IGZpbGU6IGVuZCBvZiBmaWxlIik7IFwKIAkJZWxzZSBcCi0JCQlleGl0 X2hvcnJpYmx5KG1vZHVsZW5hbWUsIFwKLQkJCQkJImNvdWxkIG5vdCByZWFkIGZyb20gaW5w dXQgZmlsZTogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7IFwKKwkJCWZhdGFsKCJjb3VsZCBu b3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6ICVtIik7IFwKIAl9IHdoaWxlICgwKQogCiAjZGVm aW5lIFdSSVRFX0VSUk9SX0VYSVQgXAogCWRvIHsgXAotCQlleGl0X2hvcnJpYmx5KG1vZHVs ZW5hbWUsICJjb3VsZCBub3Qgd3JpdGUgdG8gb3V0cHV0IGZpbGU6ICVzXG4iLCBcCi0JCQkJ CSAgc3RyZXJyb3IoZXJybm8pKTsgXAorCQlmYXRhbCgiY291bGQgbm90IHdyaXRlIHRvIG91 dHB1dCBmaWxlOiAlbSIpOyBcCiAJfSB3aGlsZSAoMCkKIAogdHlwZWRlZiBlbnVtIFRfQWN0 aW9uCkBAIC0yNDYsOCArMjQzLDYgQEAgc3RydWN0IF9hcmNoaXZlSGFuZGxlCiAJY2hhcgkg ICAqYXJjaGl2ZUR1bXBWZXJzaW9uOyAvKiBXaGVuIHJlYWRpbmcgYW4gYXJjaGl2ZSwgdGhl IHZlcnNpb24gb2YKIAkJCQkJCQkJCSAqIHRoZSBkdW1wZXIgKi8KIAotCWludAkJCWRlYnVn TGV2ZWw7CQkvKiBVc2VkIGZvciBsb2dnaW5nIChjdXJyZW50bHkgb25seSBieQotCQkJCQkJ CQkgKiAtLXZlcmJvc2UpICovCiAJc2l6ZV90CQlpbnRTaXplOwkJLyogU2l6ZSBvZiBhbiBp bnRlZ2VyIGluIHRoZSBhcmNoaXZlICovCiAJc2l6ZV90CQlvZmZTaXplOwkJLyogU2l6ZSBv ZiBhIGZpbGUgb2Zmc2V0IGluIHRoZSBhcmNoaXZlIC0KIAkJCQkJCQkJICogQWRkZWQgVjEu NyAqLwpAQCAtNDAzLDcgKzM5OCw3IEBAIHN0cnVjdCBfdG9jRW50cnkKIGV4dGVybiBpbnQJ cGFyYWxsZWxfcmVzdG9yZShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKTsKIGV4 dGVybiB2b2lkIG9uX2V4aXRfY2xvc2VfYXJjaGl2ZShBcmNoaXZlICpBSFgpOwogCi1leHRl cm4gdm9pZCB3YXJuX29yX2V4aXRfaG9ycmlibHkoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0 IGNoYXIgKm1vZHVsZW5hbWUsIGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBnX2F0dHJpYnV0ZV9w cmludGYoMywgNCk7CitleHRlcm4gdm9pZCB3YXJuX29yX2V4aXRfaG9ycmlibHkoQXJjaGl2 ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBnX2F0dHJpYnV0ZV9wcmludGYo MiwgMyk7CiAKIC8qIE9wdGlvbnMgZm9yIEFyY2hpdmVFbnRyeSAqLwogdHlwZWRlZiBzdHJ1 Y3QgX2FyY2hpdmVPcHRzCkBAIC00NzgsNiArNDczLDQgQEAgZXh0ZXJuIHZvaWQgRHJvcEJs b2JJZkV4aXN0cyhBcmNoaXZlSGFuZGxlICpBSCwgT2lkIG9pZCk7CiB2b2lkCQlhaHdyaXRl KGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgQXJjaGl2ZUhh bmRsZSAqQUgpOwogaW50CQkJYWhwcmludGYoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNo YXIgKmZtdCwuLi4pIHBnX2F0dHJpYnV0ZV9wcmludGYoMiwgMyk7CiAKLXZvaWQJCWFobG9n KEFyY2hpdmVIYW5kbGUgKkFILCBpbnQgbGV2ZWwsIGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBn X2F0dHJpYnV0ZV9wcmludGYoMywgNCk7Ci0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2JhY2t1cF9jdXN0b20uYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNr dXBfY3VzdG9tLmMKaW5kZXggOTZmNDRlODhiMS4uZTgxMWM2YzkxYSAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9jdXN0b20uYworKysgYi9zcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwX2N1c3RvbS5jCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAicGFy YWxsZWwuaCIKICNpbmNsdWRlICJwZ19iYWNrdXBfdXRpbHMuaCIKICNpbmNsdWRlICJjb21t b24vZmlsZV91dGlscy5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKIAogLyot LS0tLS0tLQogICogUm91dGluZXMgaW4gdGhlIGZvcm1hdCBpbnRlcmZhY2UKQEAgLTkxLDkg KzkyLDYgQEAgc3RhdGljIHBnb2ZmX3QgX2dldEZpbGVQb3MoQXJjaGl2ZUhhbmRsZSAqQUgs IGxjbENvbnRleHQgKmN0eCk7CiBzdGF0aWMgdm9pZCBfQ3VzdG9tV3JpdGVGdW5jKEFyY2hp dmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4pOwogc3RhdGljIHNp emVfdCBfQ3VzdG9tUmVhZEZ1bmMoQXJjaGl2ZUhhbmRsZSAqQUgsIGNoYXIgKipidWYsIHNp emVfdCAqYnVmbGVuKTsKIAotLyogdHJhbnNsYXRvcjogdGhpcyBpcyBhIG1vZHVsZSBuYW1l ICovCi1zdGF0aWMgY29uc3QgY2hhciAqbW9kdWxlbmFtZSA9IGdldHRleHRfbm9vcCgiY3Vz dG9tIGFyY2hpdmVyIik7Ci0KIAogCiAvKgpAQCAtMTU5LDE1ICsxNTcsMTMgQEAgSW5pdEFy Y2hpdmVGbXRfQ3VzdG9tKEFyY2hpdmVIYW5kbGUgKkFIKQogCQl7CiAJCQlBSC0+RkggPSBm b3BlbihBSC0+ZlNwZWMsIFBHX0JJTkFSWV9XKTsKIAkJCWlmICghQUgtPkZIKQotCQkJCWV4 aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBvcGVuIG91dHB1dCBmaWxlIFwi JXNcIjogJXNcbiIsCi0JCQkJCQkJICBBSC0+ZlNwZWMsIHN0cmVycm9yKGVycm5vKSk7CisJ CQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIG91dHB1dCBmaWxlIFwiJXNcIjogJW0iLCBBSC0+ ZlNwZWMpOwogCQl9CiAJCWVsc2UKIAkJewogCQkJQUgtPkZIID0gc3Rkb3V0OwogCQkJaWYg KCFBSC0+RkgpCi0JCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IG9w ZW4gb3V0cHV0IGZpbGU6ICVzXG4iLAotCQkJCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKKwkJ CQlmYXRhbCgiY291bGQgbm90IG9wZW4gb3V0cHV0IGZpbGU6ICVtIik7CiAJCX0KIAogCQlj dHgtPmhhc1NlZWsgPSBjaGVja1NlZWsoQUgtPkZIKTsKQEAgLTE3OCwxNSArMTc0LDEzIEBA IEluaXRBcmNoaXZlRm10X0N1c3RvbShBcmNoaXZlSGFuZGxlICpBSCkKIAkJewogCQkJQUgt PkZIID0gZm9wZW4oQUgtPmZTcGVjLCBQR19CSU5BUllfUik7CiAJCQlpZiAoIUFILT5GSCkK LQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3BlbiBpbnB1dCBm aWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJCQkJICBBSC0+ZlNwZWMsIHN0cmVycm9yKGVycm5v KSk7CisJCQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIGlucHV0IGZpbGUgXCIlc1wiOiAlbSIs IEFILT5mU3BlYyk7CiAJCX0KIAkJZWxzZQogCQl7CiAJCQlBSC0+RkggPSBzdGRpbjsKIAkJ CWlmICghQUgtPkZIKQotCQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5v dCBvcGVuIGlucHV0IGZpbGU6ICVzXG4iLAotCQkJCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsK KwkJCQlmYXRhbCgiY291bGQgbm90IG9wZW4gaW5wdXQgZmlsZTogJW0iKTsKIAkJfQogCiAJ CWN0eC0+aGFzU2VlayA9IGNoZWNrU2VlayhBSC0+RkgpOwpAQCAtMzgxLDcgKzM3NSw3IEBA IF9TdGFydEJsb2IoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgT2lkIG9pZCkK IAlsY2xDb250ZXh0ICpjdHggPSAobGNsQ29udGV4dCAqKSBBSC0+Zm9ybWF0RGF0YTsKIAog CWlmIChvaWQgPT0gMCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiaW52YWxpZCBP SUQgZm9yIGxhcmdlIG9iamVjdFxuIik7CisJCWZhdGFsKCJpbnZhbGlkIE9JRCBmb3IgbGFy Z2Ugb2JqZWN0Iik7CiAKIAlXcml0ZUludChBSCwgb2lkKTsKIApAQCAtNDUxLDggKzQ0NSw3 IEBAIF9QcmludFRvY0RhdGEoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAkJ CQkJYnJlYWs7CiAKIAkJCQlkZWZhdWx0OgkJLyogQWx3YXlzIGhhdmUgYSBkZWZhdWx0ICov Ci0JCQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJCQkJICAidW5yZWNvZ25p emVkIGRhdGEgYmxvY2sgdHlwZSAoJWQpIHdoaWxlIHNlYXJjaGluZyBhcmNoaXZlXG4iLAor CQkJCQlmYXRhbCgidW5yZWNvZ25pemVkIGRhdGEgYmxvY2sgdHlwZSAoJWQpIHdoaWxlIHNl YXJjaGluZyBhcmNoaXZlIiwKIAkJCQkJCQkJICBibGtUeXBlKTsKIAkJCQkJYnJlYWs7CiAJ CQl9CkBAIC00NjMsOCArNDU2LDcgQEAgX1ByaW50VG9jRGF0YShBcmNoaXZlSGFuZGxlICpB SCwgVG9jRW50cnkgKnRlKQogCXsKIAkJLyogV2UgY2FuIGp1c3Qgc2VlayB0byB0aGUgcGxh Y2Ugd2UgbmVlZCB0byBiZS4gKi8KIAkJaWYgKGZzZWVrbyhBSC0+RkgsIHRjdHgtPmRhdGFQ b3MsIFNFRUtfU0VUKSAhPSAwKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiZXJy b3IgZHVyaW5nIGZpbGUgc2VlazogJXNcbiIsCi0JCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7 CisJCQlmYXRhbCgiZXJyb3IgZHVyaW5nIGZpbGUgc2VlazogJW0iKTsKIAogCQlfcmVhZEJs b2NrSGVhZGVyKEFILCAmYmxrVHlwZSwgJmlkKTsKIAl9CkBAIC00NzMsMjQgKzQ2NSwyNCBA QCBfUHJpbnRUb2NEYXRhKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUpCiAJaWYg KGJsa1R5cGUgPT0gRU9GKQogCXsKIAkJaWYgKHRjdHgtPmRhdGFTdGF0ZSA9PSBLX09GRlNF VF9QT1NfTk9UX1NFVCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5v dCBmaW5kIGJsb2NrIElEICVkIGluIGFyY2hpdmUgLS0gIgotCQkJCQkJICAicG9zc2libHkg ZHVlIHRvIG91dC1vZi1vcmRlciByZXN0b3JlIHJlcXVlc3QsICIKLQkJCQkJCSAgIndoaWNo IGNhbm5vdCBiZSBoYW5kbGVkIGR1ZSB0byBsYWNrIG9mIGRhdGEgb2Zmc2V0cyBpbiBhcmNo aXZlXG4iLAotCQkJCQkJICB0ZS0+ZHVtcElkKTsKKwkJCWZhdGFsKCJjb3VsZCBub3QgZmlu ZCBibG9jayBJRCAlZCBpbiBhcmNoaXZlIC0tICIKKwkJCQkgICJwb3NzaWJseSBkdWUgdG8g b3V0LW9mLW9yZGVyIHJlc3RvcmUgcmVxdWVzdCwgIgorCQkJCSAgIndoaWNoIGNhbm5vdCBi ZSBoYW5kbGVkIGR1ZSB0byBsYWNrIG9mIGRhdGEgb2Zmc2V0cyBpbiBhcmNoaXZlIiwKKwkJ CQkgIHRlLT5kdW1wSWQpOwogCQllbHNlIGlmICghY3R4LT5oYXNTZWVrKQotCQkJZXhpdF9o b3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGZpbmQgYmxvY2sgSUQgJWQgaW4gYXJj aGl2ZSAtLSAiCi0JCQkJCQkgICJwb3NzaWJseSBkdWUgdG8gb3V0LW9mLW9yZGVyIHJlc3Rv cmUgcmVxdWVzdCwgIgotCQkJCQkJICAid2hpY2ggY2Fubm90IGJlIGhhbmRsZWQgZHVlIHRv IG5vbi1zZWVrYWJsZSBpbnB1dCBmaWxlXG4iLAotCQkJCQkJICB0ZS0+ZHVtcElkKTsKKwkJ CWZhdGFsKCJjb3VsZCBub3QgZmluZCBibG9jayBJRCAlZCBpbiBhcmNoaXZlIC0tICIKKwkJ CQkgICJwb3NzaWJseSBkdWUgdG8gb3V0LW9mLW9yZGVyIHJlc3RvcmUgcmVxdWVzdCwgIgor CQkJCSAgIndoaWNoIGNhbm5vdCBiZSBoYW5kbGVkIGR1ZSB0byBub24tc2Vla2FibGUgaW5w dXQgZmlsZSIsCisJCQkJICB0ZS0+ZHVtcElkKTsKIAkJZWxzZQkJCQkJLyogaHVoLCB0aGUg ZGF0YVBvcyBsZWQgdXMgdG8gRU9GPyAqLwotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1l LCAiY291bGQgbm90IGZpbmQgYmxvY2sgSUQgJWQgaW4gYXJjaGl2ZSAtLSAiCi0JCQkJCQkg ICJwb3NzaWJseSBjb3JydXB0IGFyY2hpdmVcbiIsCi0JCQkJCQkgIHRlLT5kdW1wSWQpOwor CQkJZmF0YWwoImNvdWxkIG5vdCBmaW5kIGJsb2NrIElEICVkIGluIGFyY2hpdmUgLS0gIgor CQkJCSAgInBvc3NpYmx5IGNvcnJ1cHQgYXJjaGl2ZSIsCisJCQkJICB0ZS0+ZHVtcElkKTsK IAl9CiAKIAkvKiBBcmUgd2Ugc2FuZT8gKi8KIAlpZiAoaWQgIT0gdGUtPmR1bXBJZCkKLQkJ ZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiZm91bmQgdW5leHBlY3RlZCBibG9jayBJRCAo JWQpIHdoZW4gcmVhZGluZyBkYXRhIC0tIGV4cGVjdGVkICVkXG4iLAorCQlmYXRhbCgiZm91 bmQgdW5leHBlY3RlZCBibG9jayBJRCAoJWQpIHdoZW4gcmVhZGluZyBkYXRhIC0tIGV4cGVj dGVkICVkIiwKIAkJCQkJICBpZCwgdGUtPmR1bXBJZCk7CiAKIAlzd2l0Y2ggKGJsa1R5cGUp CkBAIC01MDQsNyArNDk2LDcgQEAgX1ByaW50VG9jRGF0YShBcmNoaXZlSGFuZGxlICpBSCwg VG9jRW50cnkgKnRlKQogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoJCQkJLyogQWx3YXlzIGhh dmUgYSBkZWZhdWx0ICovCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJ1bnJlY29n bml6ZWQgZGF0YSBibG9jayB0eXBlICVkIHdoaWxlIHJlc3RvcmluZyBhcmNoaXZlXG4iLAor CQkJZmF0YWwoInVucmVjb2duaXplZCBkYXRhIGJsb2NrIHR5cGUgJWQgd2hpbGUgcmVzdG9y aW5nIGFyY2hpdmUiLAogCQkJCQkJICBibGtUeXBlKTsKIAkJCWJyZWFrOwogCX0KQEAgLTU4 NCwxMSArNTc2LDkgQEAgX3NraXBEYXRhKEFyY2hpdmVIYW5kbGUgKkFIKQogCQlpZiAoKGNu dCA9IGZyZWFkKGJ1ZiwgMSwgYmxrTGVuLCBBSC0+RkgpKSAhPSBibGtMZW4pCiAJCXsKIAkJ CWlmIChmZW9mKEFILT5GSCkpCi0JCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJ CQkJCSAgImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogZW5kIG9mIGZpbGVcbiIp OworCQkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6IGVuZCBvZiBm aWxlIik7CiAJCQllbHNlCi0JCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkJ CSAgImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogJXNcbiIsIHN0cmVycm9yKGVy cm5vKSk7CisJCQkJZmF0YWwoImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogJW0i KTsKIAkJfQogCiAJCWN0eC0+ZmlsZVBvcyArPSBibGtMZW47CkBAIC03MDYsOCArNjk2LDcg QEAgX0Nsb3NlQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCkKIAkJLyogUmVtZW1iZXIgVE9D J3Mgc2VlayBwb3NpdGlvbiBmb3IgdXNlIGJlbG93ICovCiAJCXRwb3MgPSBmdGVsbG8oQUgt PkZIKTsKIAkJaWYgKHRwb3MgPCAwICYmIGN0eC0+aGFzU2VlaykKLQkJCWV4aXRfaG9ycmli bHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBkZXRlcm1pbmUgc2VlayBwb3NpdGlvbiBpbiBh cmNoaXZlIGZpbGU6ICVzXG4iLAotCQkJCQkJICBzdHJlcnJvcihlcnJubykpOworCQkJZmF0 YWwoImNvdWxkIG5vdCBkZXRlcm1pbmUgc2VlayBwb3NpdGlvbiBpbiBhcmNoaXZlIGZpbGU6 ICVtIik7CiAJCVdyaXRlVG9jKEFIKTsKIAkJY3R4LT5kYXRhU3RhcnQgPSBfZ2V0RmlsZVBv cyhBSCwgY3R4KTsKIAkJV3JpdGVEYXRhQ2h1bmtzKEFILCBOVUxMKTsKQEAgLTcyNCwxMSAr NzEzLDExIEBAIF9DbG9zZUFyY2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJfQogCiAJaWYg KGZjbG9zZShBSC0+RkgpICE9IDApCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNv dWxkIG5vdCBjbG9zZSBhcmNoaXZlIGZpbGU6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwor CQlmYXRhbCgiY291bGQgbm90IGNsb3NlIGFyY2hpdmUgZmlsZTogJW0iKTsKIAogCS8qIFN5 bmMgdGhlIG91dHB1dCBmaWxlIGlmIG9uZSBpcyBkZWZpbmVkICovCiAJaWYgKEFILT5kb3N5 bmMgJiYgQUgtPm1vZGUgPT0gYXJjaE1vZGVXcml0ZSAmJiBBSC0+ZlNwZWMpCi0JCSh2b2lk KSBmc3luY19mbmFtZShBSC0+ZlNwZWMsIGZhbHNlLCBwcm9nbmFtZSk7CisJCSh2b2lkKSBm c3luY19mbmFtZShBSC0+ZlNwZWMsIGZhbHNlKTsKIAogCUFILT5GSCA9IE5VTEw7CiB9CkBA IC03NDcsMzYgKzczNiwzMiBAQCBfUmVvcGVuQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCkK IAlwZ29mZl90CQl0cG9zOwogCiAJaWYgKEFILT5tb2RlID09IGFyY2hNb2RlV3JpdGUpCi0J CWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNhbiBvbmx5IHJlb3BlbiBpbnB1dCBhcmNo aXZlc1xuIik7CisJCWZhdGFsKCJjYW4gb25seSByZW9wZW4gaW5wdXQgYXJjaGl2ZXMiKTsK IAogCS8qCiAJICogVGhlc2UgdHdvIGNhc2VzIGFyZSB1c2VyLWZhY2luZyBlcnJvcnMgc2lu Y2UgdGhleSByZXByZXNlbnQgdW5zdXBwb3J0ZWQKIAkgKiAoYnV0IG5vdCBpbnZhbGlkKSB1 c2UtY2FzZXMuICBXb3JkIHRoZSBlcnJvciBtZXNzYWdlcyBhcHByb3ByaWF0ZWx5LgogCSAq LwogCWlmIChBSC0+ZlNwZWMgPT0gTlVMTCB8fCBzdHJjbXAoQUgtPmZTcGVjLCAiIikgPT0g MCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAicGFyYWxsZWwgcmVzdG9yZSBmcm9t IHN0YW5kYXJkIGlucHV0IGlzIG5vdCBzdXBwb3J0ZWRcbiIpOworCQlmYXRhbCgicGFyYWxs ZWwgcmVzdG9yZSBmcm9tIHN0YW5kYXJkIGlucHV0IGlzIG5vdCBzdXBwb3J0ZWQiKTsKIAlp ZiAoIWN0eC0+aGFzU2VlaykKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAicGFyYWxs ZWwgcmVzdG9yZSBmcm9tIG5vbi1zZWVrYWJsZSBmaWxlIGlzIG5vdCBzdXBwb3J0ZWRcbiIp OworCQlmYXRhbCgicGFyYWxsZWwgcmVzdG9yZSBmcm9tIG5vbi1zZWVrYWJsZSBmaWxlIGlz IG5vdCBzdXBwb3J0ZWQiKTsKIAogCXRwb3MgPSBmdGVsbG8oQUgtPkZIKTsKIAlpZiAodHBv cyA8IDApCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBkZXRlcm1p bmUgc2VlayBwb3NpdGlvbiBpbiBhcmNoaXZlIGZpbGU6ICVzXG4iLAotCQkJCQkgIHN0cmVy cm9yKGVycm5vKSk7CisJCWZhdGFsKCJjb3VsZCBub3QgZGV0ZXJtaW5lIHNlZWsgcG9zaXRp b24gaW4gYXJjaGl2ZSBmaWxlOiAlbSIpOwogCiAjaWZuZGVmIFdJTjMyCiAJaWYgKGZjbG9z ZShBSC0+RkgpICE9IDApCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5v dCBjbG9zZSBhcmNoaXZlIGZpbGU6ICVzXG4iLAotCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7 CisJCWZhdGFsKCJjb3VsZCBub3QgY2xvc2UgYXJjaGl2ZSBmaWxlOiAlbSIpOwogI2VuZGlm CiAKIAlBSC0+RkggPSBmb3BlbihBSC0+ZlNwZWMsIFBHX0JJTkFSWV9SKTsKIAlpZiAoIUFI LT5GSCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IG9wZW4gaW5w dXQgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCQkgIEFILT5mU3BlYywgc3RyZXJyb3IoZXJy bm8pKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIGlucHV0IGZpbGUgXCIlc1wiOiAlbSIs IEFILT5mU3BlYyk7CiAKIAlpZiAoZnNlZWtvKEFILT5GSCwgdHBvcywgU0VFS19TRVQpICE9 IDApCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBzZXQgc2VlayBw b3NpdGlvbiBpbiBhcmNoaXZlIGZpbGU6ICVzXG4iLAotCQkJCQkgIHN0cmVycm9yKGVycm5v KSk7CisJCWZhdGFsKCJjb3VsZCBub3Qgc2V0IHNlZWsgcG9zaXRpb24gaW4gYXJjaGl2ZSBm aWxlOiAlbSIpOwogfQogCiAvKgpAQCAtODMxLDggKzgxNiw3IEBAIF9QcmVwUGFyYWxsZWxS ZXN0b3JlKEFyY2hpdmVIYW5kbGUgKkFIKQogCQlwZ29mZl90CQllbmRwb3M7CiAKIAkJaWYg KGZzZWVrbyhBSC0+RkgsIDAsIFNFRUtfRU5EKSAhPSAwKQotCQkJZXhpdF9ob3JyaWJseSht b2R1bGVuYW1lLCAiZXJyb3IgZHVyaW5nIGZpbGUgc2VlazogJXNcbiIsCi0JCQkJCQkgIHN0 cmVycm9yKGVycm5vKSk7CisJCQlmYXRhbCgiZXJyb3IgZHVyaW5nIGZpbGUgc2VlazogJW0i KTsKIAkJZW5kcG9zID0gZnRlbGxvKEFILT5GSCk7CiAJCWlmIChlbmRwb3MgPiBwcmV2X3Rj dHgtPmRhdGFQb3MpCiAJCQlwcmV2X3RlLT5kYXRhTGVuZ3RoID0gZW5kcG9zIC0gcHJldl90 Y3R4LT5kYXRhUG9zOwpAQCAtODUzLDcgKzgzNyw3IEBAIF9DbG9uZShBcmNoaXZlSGFuZGxl ICpBSCkKIAogCS8qIHNhbml0eSBjaGVjaywgc2hvdWxkbid0IGhhcHBlbiAqLwogCWlmIChj dHgtPmNzICE9IE5VTEwpCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvbXByZXNz b3IgYWN0aXZlXG4iKTsKKwkJZmF0YWwoImNvbXByZXNzb3IgYWN0aXZlIik7CiAKIAkvKgog CSAqIE5vdGU6IHdlIGRvIG5vdCBtYWtlIGEgbG9jYWwgbG9fYnVmIGJlY2F1c2Ugd2UgZXhw ZWN0IGF0IG1vc3Qgb25lIEJMT0JTCkBAIC05MDUsMTEgKzg4OSwxMCBAQCBfZ2V0RmlsZVBv cyhBcmNoaXZlSGFuZGxlICpBSCwgbGNsQ29udGV4dCAqY3R4KQogCQkgKi8KIAkJcG9zID0g ZnRlbGxvKEFILT5GSCk7CiAJCWlmIChwb3MgPCAwKQotCQkJZXhpdF9ob3JyaWJseShtb2R1 bGVuYW1lLCAiY291bGQgbm90IGRldGVybWluZSBzZWVrIHBvc2l0aW9uIGluIGFyY2hpdmUg ZmlsZTogJXNcbiIsCi0JCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7CisJCQlmYXRhbCgiY291 bGQgbm90IGRldGVybWluZSBzZWVrIHBvc2l0aW9uIGluIGFyY2hpdmUgZmlsZTogJW0iKTsK IAogCQlpZiAocG9zICE9IGN0eC0+ZmlsZVBvcykKLQkJCXdyaXRlX21zZyhtb2R1bGVuYW1l LCAiV0FSTklORzogZnRlbGwgbWlzbWF0Y2ggd2l0aCBleHBlY3RlZCBwb3NpdGlvbiAtLSBm dGVsbCB1c2VkXG4iKTsKKwkJCXBnX2xvZ193YXJuaW5nKCJmdGVsbCBtaXNtYXRjaCB3aXRo IGV4cGVjdGVkIHBvc2l0aW9uIC0tIGZ0ZWxsIHVzZWQiKTsKIAl9CiAJZWxzZQogCQlwb3Mg PSBjdHgtPmZpbGVQb3M7CkBAIC05MjgsNyArOTExLDcgQEAgX3JlYWRCbG9ja0hlYWRlcihB cmNoaXZlSGFuZGxlICpBSCwgaW50ICp0eXBlLCBpbnQgKmlkKQogCWludAkJCWJ5dDsKIAog CS8qCi0JICogTm90ZTogaWYgd2UgYXJlIGF0IEVPRiB3aXRoIGEgcHJlLTEuMyBpbnB1dCBm aWxlLCB3ZSdsbCBleGl0X2hvcnJpYmx5CisJICogTm90ZTogaWYgd2UgYXJlIGF0IEVPRiB3 aXRoIGEgcHJlLTEuMyBpbnB1dCBmaWxlLCB3ZSdsbCBmYXRhbCgpCiAJICogaW5zaWRlIFJl YWRJbnQgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIEVPRi4gIEl0IGRvZXNuJ3Qgc2VlbSB3b3J0 aAogCSAqIGp1bXBpbmcgdGhyb3VnaCBob29wcyB0byBkZWFsIHdpdGggdGhhdCBjYXNlIGJl dHRlciwgYmVjYXVzZSBubyBzdWNoCiAJICogZmlsZXMgYXJlIGxpa2VseSB0byBleGlzdCBp biB0aGUgd2lsZDogb25seSBzb21lIDcuMSBkZXZlbG9wbWVudApkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kYi5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1 cF9kYi5jCmluZGV4IDVlMzJlZThhNWIuLjFkNjM2ZGFjMTkgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXBfZGIuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFj a3VwX2RiLmMKQEAgLTEzLDYgKzEzLDcgQEAKIAogI2luY2x1ZGUgImR1bXB1dGlscy5oIgog I2luY2x1ZGUgImZlX3V0aWxzL2Nvbm5lY3QuaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dn aW5nLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvc3RyaW5nX3V0aWxzLmgiCiAjaW5jbHVkZSAi cGFyYWxsZWwuaCIKICNpbmNsdWRlICJwZ19iYWNrdXBfYXJjaGl2ZXIuaCIKQEAgLTI2LDkg KzI3LDYgQEAKICNlbmRpZgogCiAKLS8qIHRyYW5zbGF0b3I6IHRoaXMgaXMgYSBtb2R1bGUg bmFtZSAqLwotc3RhdGljIGNvbnN0IGNoYXIgKm1vZHVsZW5hbWUgPSBnZXR0ZXh0X25vb3Ao ImFyY2hpdmVyIChkYikiKTsKLQogc3RhdGljIHZvaWQgX2NoZWNrX2RhdGFiYXNlX3ZlcnNp b24oQXJjaGl2ZUhhbmRsZSAqQUgpOwogc3RhdGljIFBHY29ubiAqX2Nvbm5lY3REQihBcmNo aXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqbmV3ZGJuYW1lLCBjb25zdCBjaGFyICpuZXdV c2VyKTsKIHN0YXRpYyB2b2lkIG5vdGljZV9wcm9jZXNzb3Iodm9pZCAqYXJnLCBjb25zdCBj aGFyICptZXNzYWdlKTsKQEAgLTQzLDcgKzQxLDcgQEAgX2NoZWNrX2RhdGFiYXNlX3ZlcnNp b24oQXJjaGl2ZUhhbmRsZSAqQUgpCiAJcmVtb3RldmVyc2lvbl9zdHIgPSBQUXBhcmFtZXRl clN0YXR1cyhBSC0+Y29ubmVjdGlvbiwgInNlcnZlcl92ZXJzaW9uIik7CiAJcmVtb3RldmVy c2lvbiA9IFBRc2VydmVyVmVyc2lvbihBSC0+Y29ubmVjdGlvbik7CiAJaWYgKHJlbW90ZXZl cnNpb24gPT0gMCB8fCAhcmVtb3RldmVyc2lvbl9zdHIpCi0JCWV4aXRfaG9ycmlibHkobW9k dWxlbmFtZSwgImNvdWxkIG5vdCBnZXQgc2VydmVyX3ZlcnNpb24gZnJvbSBsaWJwcVxuIik7 CisJCWZhdGFsKCJjb3VsZCBub3QgZ2V0IHNlcnZlcl92ZXJzaW9uIGZyb20gbGlicHEiKTsK IAogCUFILT5wdWJsaWMucmVtb3RlVmVyc2lvblN0ciA9IHBnX3N0cmR1cChyZW1vdGV2ZXJz aW9uX3N0cik7CiAJQUgtPnB1YmxpYy5yZW1vdGVWZXJzaW9uID0gcmVtb3RldmVyc2lvbjsK QEAgLTU0LDkgKzUyLDkgQEAgX2NoZWNrX2RhdGFiYXNlX3ZlcnNpb24oQXJjaGl2ZUhhbmRs ZSAqQUgpCiAJCSYmIChyZW1vdGV2ZXJzaW9uIDwgQUgtPnB1YmxpYy5taW5SZW1vdGVWZXJz aW9uIHx8CiAJCQlyZW1vdGV2ZXJzaW9uID4gQUgtPnB1YmxpYy5tYXhSZW1vdGVWZXJzaW9u KSkKIAl7Ci0JCXdyaXRlX21zZyhOVUxMLCAic2VydmVyIHZlcnNpb246ICVzOyAlcyB2ZXJz aW9uOiAlc1xuIiwKKwkJcGdfbG9nX2Vycm9yKCJzZXJ2ZXIgdmVyc2lvbjogJXM7ICVzIHZl cnNpb246ICVzIiwKIAkJCQkgIHJlbW90ZXZlcnNpb25fc3RyLCBwcm9nbmFtZSwgUEdfVkVS U0lPTik7Ci0JCWV4aXRfaG9ycmlibHkoTlVMTCwgImFib3J0aW5nIGJlY2F1c2Ugb2Ygc2Vy dmVyIHZlcnNpb24gbWlzbWF0Y2hcbiIpOworCQlmYXRhbCgiYWJvcnRpbmcgYmVjYXVzZSBv ZiBzZXJ2ZXIgdmVyc2lvbiBtaXNtYXRjaCIpOwogCX0KIAogCS8qCkBAIC0xMzksNyArMTM3 LDcgQEAgX2Nvbm5lY3REQihBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqcmVxZGIs IGNvbnN0IGNoYXIgKnJlcXVzZXIpCiAJZWxzZQogCQluZXd1c2VyID0gcmVxdXNlcjsKIAot CWFobG9nKEFILCAxLCAiY29ubmVjdGluZyB0byBkYXRhYmFzZSBcIiVzXCIgYXMgdXNlciBc IiVzXCJcbiIsCisJcGdfbG9nX2luZm8oImNvbm5lY3RpbmcgdG8gZGF0YWJhc2UgXCIlc1wi IGFzIHVzZXIgXCIlc1wiIiwKIAkJICBuZXdkYiwgbmV3dXNlcik7CiAKIAlwYXNzd29yZCA9 IEFILT5zYXZlZFBhc3N3b3JkOwpAQCAtMTc4LDEyICsxNzYsMTIgQEAgX2Nvbm5lY3REQihB cmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqcmVxZGIsIGNvbnN0IGNoYXIgKnJlcXVz ZXIpCiAJCW5ld0Nvbm4gPSBQUWNvbm5lY3RkYlBhcmFtcyhrZXl3b3JkcywgdmFsdWVzLCB0 cnVlKTsKIAogCQlpZiAoIW5ld0Nvbm4pCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUs ICJmYWlsZWQgdG8gcmVjb25uZWN0IHRvIGRhdGFiYXNlXG4iKTsKKwkJCWZhdGFsKCJmYWls ZWQgdG8gcmVjb25uZWN0IHRvIGRhdGFiYXNlIik7CiAKIAkJaWYgKFBRc3RhdHVzKG5ld0Nv bm4pID09IENPTk5FQ1RJT05fQkFEKQogCQl7CiAJCQlpZiAoIVBRY29ubmVjdGlvbk5lZWRz UGFzc3dvcmQobmV3Q29ubikpCi0JCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291 bGQgbm90IHJlY29ubmVjdCB0byBkYXRhYmFzZTogJXMiLAorCQkJCWZhdGFsKCJjb3VsZCBu b3QgcmVjb25uZWN0IHRvIGRhdGFiYXNlOiAlcyIsCiAJCQkJCQkJICBQUWVycm9yTWVzc2Fn ZShuZXdDb25uKSk7CiAJCQlQUWZpbmlzaChuZXdDb25uKTsKIApAQCAtMTk5LDcgKzE5Nyw3 IEBAIF9jb25uZWN0REIoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKnJlcWRiLCBj b25zdCBjaGFyICpyZXF1c2VyKQogCQkJCXBhc3N3b3JkID0gcGFzc2J1ZjsKIAkJCX0KIAkJ CWVsc2UKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb25uZWN0aW9uIG5lZWRz IHBhc3N3b3JkXG4iKTsKKwkJCQlmYXRhbCgiY29ubmVjdGlvbiBuZWVkcyBwYXNzd29yZCIp OwogCiAJCQluZXdfcGFzcyA9IHRydWU7CiAJCX0KQEAgLTI1MCw3ICsyNDgsNyBAQCBDb25u ZWN0RGF0YWJhc2UoQXJjaGl2ZSAqQUhYLAogCWJvb2wJCW5ld19wYXNzOwogCiAJaWYgKEFI LT5jb25uZWN0aW9uKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJhbHJlYWR5IGNv bm5lY3RlZCB0byBhIGRhdGFiYXNlXG4iKTsKKwkJZmF0YWwoImFscmVhZHkgY29ubmVjdGVk IHRvIGEgZGF0YWJhc2UiKTsKIAogCXBhc3N3b3JkID0gQUgtPnNhdmVkUGFzc3dvcmQ7CiAK QEAgLTI4OSw3ICsyODcsNyBAQCBDb25uZWN0RGF0YWJhc2UoQXJjaGl2ZSAqQUhYLAogCQlB SC0+Y29ubmVjdGlvbiA9IFBRY29ubmVjdGRiUGFyYW1zKGtleXdvcmRzLCB2YWx1ZXMsIHRy dWUpOwogCiAJCWlmICghQUgtPmNvbm5lY3Rpb24pCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVs ZW5hbWUsICJmYWlsZWQgdG8gY29ubmVjdCB0byBkYXRhYmFzZVxuIik7CisJCQlmYXRhbCgi ZmFpbGVkIHRvIGNvbm5lY3QgdG8gZGF0YWJhc2UiKTsKIAogCQlpZiAoUFFzdGF0dXMoQUgt PmNvbm5lY3Rpb24pID09IENPTk5FQ1RJT05fQkFEICYmCiAJCQlQUWNvbm5lY3Rpb25OZWVk c1Bhc3N3b3JkKEFILT5jb25uZWN0aW9uKSAmJgpAQCAtMzA1LDcgKzMwMyw3IEBAIENvbm5l Y3REYXRhYmFzZShBcmNoaXZlICpBSFgsCiAKIAkvKiBjaGVjayB0byBzZWUgdGhhdCB0aGUg YmFja2VuZCBjb25uZWN0aW9uIHdhcyBzdWNjZXNzZnVsbHkgbWFkZSAqLwogCWlmIChQUXN0 YXR1cyhBSC0+Y29ubmVjdGlvbikgPT0gQ09OTkVDVElPTl9CQUQpCi0JCWV4aXRfaG9ycmli bHkobW9kdWxlbmFtZSwgImNvbm5lY3Rpb24gdG8gZGF0YWJhc2UgXCIlc1wiIGZhaWxlZDog JXMiLAorCQlmYXRhbCgiY29ubmVjdGlvbiB0byBkYXRhYmFzZSBcIiVzXCIgZmFpbGVkOiAl cyIsCiAJCQkJCSAgUFFkYihBSC0+Y29ubmVjdGlvbikgPyBQUWRiKEFILT5jb25uZWN0aW9u KSA6ICIiLAogCQkJCQkgIFBRZXJyb3JNZXNzYWdlKEFILT5jb25uZWN0aW9uKSk7CiAKQEAg LTM1MSw3ICszNDksNyBAQCBEaXNjb25uZWN0RGF0YWJhc2UoQXJjaGl2ZSAqQUhYKQogCQkv KgogCQkgKiBJZiB3ZSBoYXZlIGFuIGFjdGl2ZSBxdWVyeSwgc2VuZCBhIGNhbmNlbCBiZWZv cmUgY2xvc2luZywgaWdub3JpbmcKIAkJICogYW55IGVycm9ycy4gIFRoaXMgaXMgb2Ygbm8g dXNlIGZvciBhIG5vcm1hbCBleGl0LCBidXQgbWlnaHQgYmUKLQkJICogaGVscGZ1bCBkdXJp bmcgZXhpdF9ob3JyaWJseSgpLgorCQkgKiBoZWxwZnVsIGR1cmluZyBmYXRhbCgpLgogCQkg Ki8KIAkJaWYgKFBRdHJhbnNhY3Rpb25TdGF0dXMoQUgtPmNvbm5lY3Rpb24pID09IFBRVFJB TlNfQUNUSVZFKQogCQkJKHZvaWQpIFBRY2FuY2VsKEFILT5jb25uQ2FuY2VsLCBlcnJidWYs IHNpemVvZihlcnJidWYpKTsKQEAgLTM3NywxNiArMzc1LDE2IEBAIEdldENvbm5lY3Rpb24o QXJjaGl2ZSAqQUhYKQogc3RhdGljIHZvaWQKIG5vdGljZV9wcm9jZXNzb3Iodm9pZCAqYXJn LCBjb25zdCBjaGFyICptZXNzYWdlKQogewotCXdyaXRlX21zZyhOVUxMLCAiJXMiLCBtZXNz YWdlKTsKKwlwZ19sb2dfZ2VuZXJpYyhQR19MT0dfSU5GTywgIiVzIiwgbWVzc2FnZSk7CiB9 CiAKLS8qIExpa2UgZXhpdF9ob3JyaWJseSgpLCBidXQgd2l0aCBhIGNvbXBsYWludCBhYm91 dCBhIHBhcnRpY3VsYXIgcXVlcnkuICovCisvKiBMaWtlIGV4aXRfZmF0YWwoKSwgYnV0IHdp dGggYSBjb21wbGFpbnQgYWJvdXQgYSBwYXJ0aWN1bGFyIHF1ZXJ5LiAqLwogc3RhdGljIHZv aWQKLWRpZV9vbl9xdWVyeV9mYWlsdXJlKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFy ICptb2R1bGVuYW1lLCBjb25zdCBjaGFyICpxdWVyeSkKK2RpZV9vbl9xdWVyeV9mYWlsdXJl KEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpxdWVyeSkKIHsKLQl3cml0ZV9tc2co bW9kdWxlbmFtZSwgInF1ZXJ5IGZhaWxlZDogJXMiLAorCXBnX2xvZ19lcnJvcigicXVlcnkg ZmFpbGVkOiAlcyIsCiAJCQkgIFBRZXJyb3JNZXNzYWdlKEFILT5jb25uZWN0aW9uKSk7Ci0J ZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAicXVlcnkgd2FzOiAlc1xuIiwgcXVlcnkpOwor CWZhdGFsKCJxdWVyeSB3YXM6ICVzIiwgcXVlcnkpOwogfQogCiB2b2lkCkBAIC0zOTcsNyAr Mzk1LDcgQEAgRXhlY3V0ZVNxbFN0YXRlbWVudChBcmNoaXZlICpBSFgsIGNvbnN0IGNoYXIg KnF1ZXJ5KQogCiAJcmVzID0gUFFleGVjKEFILT5jb25uZWN0aW9uLCBxdWVyeSk7CiAJaWYg KFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKLQkJZGllX29uX3F1 ZXJ5X2ZhaWx1cmUoQUgsIG1vZHVsZW5hbWUsIHF1ZXJ5KTsKKwkJZGllX29uX3F1ZXJ5X2Zh aWx1cmUoQUgsIHF1ZXJ5KTsKIAlQUWNsZWFyKHJlcyk7CiB9CiAKQEAgLTQwOSw3ICs0MDcs NyBAQCBFeGVjdXRlU3FsUXVlcnkoQXJjaGl2ZSAqQUhYLCBjb25zdCBjaGFyICpxdWVyeSwg RXhlY1N0YXR1c1R5cGUgc3RhdHVzKQogCiAJcmVzID0gUFFleGVjKEFILT5jb25uZWN0aW9u LCBxdWVyeSk7CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gc3RhdHVzKQotCQlkaWVf b25fcXVlcnlfZmFpbHVyZShBSCwgbW9kdWxlbmFtZSwgcXVlcnkpOworCQlkaWVfb25fcXVl cnlfZmFpbHVyZShBSCwgcXVlcnkpOwogCXJldHVybiByZXM7CiB9CiAKQEAgLTQyNyw5ICs0 MjUsOCBAQCBFeGVjdXRlU3FsUXVlcnlGb3JTaW5nbGVSb3coQXJjaGl2ZSAqZm91dCwgY29u c3QgY2hhciAqcXVlcnkpCiAJLyogRXhwZWN0aW5nIGEgc2luZ2xlIHJlc3VsdCBvbmx5ICov CiAJbnR1cHMgPSBQUW50dXBsZXMocmVzKTsKIAlpZiAobnR1cHMgIT0gMSkKLQkJZXhpdF9o b3JyaWJseShOVUxMLAotCQkJCQkgIG5nZXR0ZXh0KCJxdWVyeSByZXR1cm5lZCAlZCByb3cg aW5zdGVhZCBvZiBvbmU6ICVzXG4iLAotCQkJCQkJCSAgICJxdWVyeSByZXR1cm5lZCAlZCBy b3dzIGluc3RlYWQgb2Ygb25lOiAlc1xuIiwKKwkJZmF0YWwobmdldHRleHQoInF1ZXJ5IHJl dHVybmVkICVkIHJvdyBpbnN0ZWFkIG9mIG9uZTogJXMiLAorCQkJCQkgICAicXVlcnkgcmV0 dXJuZWQgJWQgcm93cyBpbnN0ZWFkIG9mIG9uZTogJXMiLAogCQkJCQkJCSAgIG50dXBzKSwK IAkJCQkJICBudHVwcywgcXVlcnkpOwogCkBAIC00NjQsNyArNDYxLDcgQEAgRXhlY3V0ZVNx bENvbW1hbmQoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKnFyeSwgY29uc3QgY2hh ciAqZGVzYykKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJLyogdHJvdWJsZSAqLwotCQkJ d2Fybl9vcl9leGl0X2hvcnJpYmx5KEFILCBtb2R1bGVuYW1lLCAiJXM6ICVzICAgIENvbW1h bmQgd2FzOiAlc1xuIiwKKwkJCXdhcm5fb3JfZXhpdF9ob3JyaWJseShBSCwgIiVzOiAlc0Nv bW1hbmQgd2FzOiAlcyIsCiAJCQkJCQkJCSAgZGVzYywgUFFlcnJvck1lc3NhZ2UoY29ubiks IHFyeSk7CiAJCQlicmVhazsKIAl9CkBAIC01NzMsNyArNTcwLDcgQEAgRXhlY3V0ZVNxbENv bW1hbmRCdWYoQXJjaGl2ZSAqQUhYLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBidWZMZW4p CiAJCSAqLwogCQlpZiAoQUgtPnBnQ29weUluICYmCiAJCQlQUXB1dENvcHlEYXRhKEFILT5j b25uZWN0aW9uLCBidWYsIGJ1ZkxlbikgPD0gMCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxl bmFtZSwgImVycm9yIHJldHVybmVkIGJ5IFBRcHV0Q29weURhdGE6ICVzIiwKKwkJCWZhdGFs KCJlcnJvciByZXR1cm5lZCBieSBQUXB1dENvcHlEYXRhOiAlcyIsCiAJCQkJCQkgIFBRZXJy b3JNZXNzYWdlKEFILT5jb25uZWN0aW9uKSk7CiAJfQogCWVsc2UgaWYgKEFILT5vdXRwdXRL aW5kID09IE9VVFBVVF9PVEhFUkRBVEEpCkBAIC02MjIsMTkgKzYxOSwxOSBAQCBFbmREQkNv cHlNb2RlKEFyY2hpdmUgKkFIWCwgY29uc3QgY2hhciAqdG9jRW50cnlUYWcpCiAJCVBHcmVz dWx0ICAgKnJlczsKIAogCQlpZiAoUFFwdXRDb3B5RW5kKEFILT5jb25uZWN0aW9uLCBOVUxM KSA8PSAwKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiZXJyb3IgcmV0dXJuZWQg YnkgUFFwdXRDb3B5RW5kOiAlcyIsCisJCQlmYXRhbCgiZXJyb3IgcmV0dXJuZWQgYnkgUFFw dXRDb3B5RW5kOiAlcyIsCiAJCQkJCQkgIFBRZXJyb3JNZXNzYWdlKEFILT5jb25uZWN0aW9u KSk7CiAKIAkJLyogQ2hlY2sgY29tbWFuZCBzdGF0dXMgYW5kIHJldHVybiB0byBub3JtYWwg bGlicHEgc3RhdGUgKi8KIAkJcmVzID0gUFFnZXRSZXN1bHQoQUgtPmNvbm5lY3Rpb24pOwog CQlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQotCQkJd2Fy bl9vcl9leGl0X2hvcnJpYmx5KEFILCBtb2R1bGVuYW1lLCAiQ09QWSBmYWlsZWQgZm9yIHRh YmxlIFwiJXNcIjogJXMiLAorCQkJd2Fybl9vcl9leGl0X2hvcnJpYmx5KEFILCAiQ09QWSBm YWlsZWQgZm9yIHRhYmxlIFwiJXNcIjogJXMiLAogCQkJCQkJCQkgIHRvY0VudHJ5VGFnLCBQ UWVycm9yTWVzc2FnZShBSC0+Y29ubmVjdGlvbikpOwogCQlQUWNsZWFyKHJlcyk7CiAKIAkJ LyogRG8gdGhpcyB0byBlbnN1cmUgd2UndmUgcHVtcGVkIGxpYnBxIGJhY2sgdG8gaWRsZSBz dGF0ZSAqLwogCQlpZiAoUFFnZXRSZXN1bHQoQUgtPmNvbm5lY3Rpb24pICE9IE5VTEwpCi0J CQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IHVuZXhwZWN0ZWQgZXh0cmEgcmVzdWx0cyBk dXJpbmcgQ09QWSBvZiB0YWJsZSBcIiVzXCJcbiIsCisJCQlwZ19sb2dfd2FybmluZygidW5l eHBlY3RlZCBleHRyYSByZXN1bHRzIGR1cmluZyBDT1BZIG9mIHRhYmxlIFwiJXNcIiIsCiAJ CQkJCSAgdG9jRW50cnlUYWcpOwogCiAJCUFILT5wZ0NvcHlJbiA9IGZhbHNlOwpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kaXJlY3RvcnkuYyBiL3NyYy9iaW4v cGdfZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMKaW5kZXggZTYyNjEyNTJjNy4uNzBlY2E4 MmM5MSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kaXJlY3Rvcnku YworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RpcmVjdG9yeS5jCkBAIC02MSw5 ICs2MSw2IEBAIHR5cGVkZWYgc3RydWN0CiAJY2hhcgkgICAqZmlsZW5hbWU7CQkvKiBmaWxl bmFtZSBleGNsdWRpbmcgdGhlIGRpcmVjdG9yeSAoYmFzZW5hbWUpICovCiB9IGxjbFRvY0Vu dHJ5OwogCi0vKiB0cmFuc2xhdG9yOiB0aGlzIGlzIGEgbW9kdWxlIG5hbWUgKi8KLXN0YXRp YyBjb25zdCBjaGFyICptb2R1bGVuYW1lID0gZ2V0dGV4dF9ub29wKCJkaXJlY3RvcnkgYXJj aGl2ZXIiKTsKLQogLyogcHJvdG90eXBlcyBmb3IgcHJpdmF0ZSBmdW5jdGlvbnMgKi8KIHN0 YXRpYyB2b2lkIF9BcmNoaXZlRW50cnkoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0 ZSk7CiBzdGF0aWMgdm9pZCBfU3RhcnREYXRhKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRy eSAqdGUpOwpAQCAtMTU2LDcgKzE1Myw3IEBAIEluaXRBcmNoaXZlRm10X0RpcmVjdG9yeShB cmNoaXZlSGFuZGxlICpBSCkKIAkgKi8KIAogCWlmICghQUgtPmZTcGVjIHx8IHN0cmNtcChB SC0+ZlNwZWMsICIiKSA9PSAwKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJubyBv dXRwdXQgZGlyZWN0b3J5IHNwZWNpZmllZFxuIik7CisJCWZhdGFsKCJubyBvdXRwdXQgZGly ZWN0b3J5IHNwZWNpZmllZCIpOwogCiAJY3R4LT5kaXJlY3RvcnkgPSBBSC0+ZlNwZWM7CiAK QEAgLTE4NSwxOCArMTgyLDE4IEBAIEluaXRBcmNoaXZlRm10X0RpcmVjdG9yeShBcmNoaXZl SGFuZGxlICpBSCkKIAkJCQl9CiAKIAkJCQlpZiAoZXJybm8pCi0JCQkJCWV4aXRfaG9ycmli bHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4i LAotCQkJCQkJCQkgIGN0eC0+ZGlyZWN0b3J5LCBzdHJlcnJvcihlcnJubykpOworCQkJCQlm YXRhbCgiY291bGQgbm90IHJlYWQgZGlyZWN0b3J5IFwiJXNcIjogJW0iLAorCQkJCQkJICBj dHgtPmRpcmVjdG9yeSk7CiAKIAkJCQlpZiAoY2xvc2VkaXIoZGlyKSkKLQkJCQkJZXhpdF9o b3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGNsb3NlIGRpcmVjdG9yeSBcIiVzXCI6 ICVzXG4iLAotCQkJCQkJCQkgIGN0eC0+ZGlyZWN0b3J5LCBzdHJlcnJvcihlcnJubykpOwor CQkJCQlmYXRhbCgiY291bGQgbm90IGNsb3NlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJ CQkJCSAgY3R4LT5kaXJlY3RvcnkpOwogCQkJfQogCQl9CiAKIAkJaWYgKCFpc19lbXB0eSAm JiBta2RpcihjdHgtPmRpcmVjdG9yeSwgMDcwMCkgPCAwKQotCQkJZXhpdF9ob3JyaWJseSht b2R1bGVuYW1lLCAiY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiwK LQkJCQkJCSAgY3R4LT5kaXJlY3RvcnksIHN0cmVycm9yKGVycm5vKSk7CisJCQlmYXRhbCgi Y291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJICBjdHgtPmRp cmVjdG9yeSk7CiAJfQogCWVsc2UKIAl7CQkJCQkJCS8qIFJlYWQgTW9kZSAqLwpAQCAtMjA3 LDkgKzIwNCw3IEBAIEluaXRBcmNoaXZlRm10X0RpcmVjdG9yeShBcmNoaXZlSGFuZGxlICpB SCkKIAogCQl0b2NGSCA9IGNmb3Blbl9yZWFkKGZuYW1lLCBQR19CSU5BUllfUik7CiAJCWlm ICh0b2NGSCA9PSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkJ ICAiY291bGQgbm90IG9wZW4gaW5wdXQgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCQkJICBm bmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBpbnB1 dCBmaWxlIFwiJXNcIjogJW0iLCBmbmFtZSk7CiAKIAkJY3R4LT5kYXRhRkggPSB0b2NGSDsK IApAQCAtMjI0LDggKzIxOSw3IEBAIEluaXRBcmNoaXZlRm10X0RpcmVjdG9yeShBcmNoaXZl SGFuZGxlICpBSCkKIAogCQkvKiBOb3RoaW5nIGVsc2UgaW4gdGhlIGZpbGUsIHNvIGNsb3Nl IGl0IGFnYWluLi4uICovCiAJCWlmIChjZmNsb3NlKHRvY0ZIKSAhPSAwKQotCQkJZXhpdF9o b3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGNsb3NlIFRPQyBmaWxlOiAlc1xuIiwK LQkJCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWZhdGFsKCJjb3VsZCBub3QgY2xvc2Ug VE9DIGZpbGU6ICVtIik7CiAJCWN0eC0+ZGF0YUZIID0gTlVMTDsKIAl9CiB9CkBAIC0zMzUs OCArMzI5LDcgQEAgX1N0YXJ0RGF0YShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRl KQogCiAJY3R4LT5kYXRhRkggPSBjZm9wZW5fd3JpdGUoZm5hbWUsIFBHX0JJTkFSWV9XLCBB SC0+Y29tcHJlc3Npb24pOwogCWlmIChjdHgtPmRhdGFGSCA9PSBOVUxMKQotCQlleGl0X2hv cnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmlsZSBcIiVzXCI6 ICVzXG4iLAotCQkJCQkgIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlmYXRhbCgiY291 bGQgbm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIH0KIAogLyoK QEAgLTM1NCw3ICszNDcsNyBAQCBfV3JpdGVEYXRhKEFyY2hpdmVIYW5kbGUgKkFILCBjb25z dCB2b2lkICpkYXRhLCBzaXplX3QgZExlbikKIAlsY2xDb250ZXh0ICpjdHggPSAobGNsQ29u dGV4dCAqKSBBSC0+Zm9ybWF0RGF0YTsKIAogCWlmIChkTGVuID4gMCAmJiBjZndyaXRlKGRh dGEsIGRMZW4sIGN0eC0+ZGF0YUZIKSAhPSBkTGVuKQotCQlleGl0X2hvcnJpYmx5KG1vZHVs ZW5hbWUsICJjb3VsZCBub3Qgd3JpdGUgdG8gb3V0cHV0IGZpbGU6ICVzXG4iLAorCQlmYXRh bCgiY291bGQgbm90IHdyaXRlIHRvIG91dHB1dCBmaWxlOiAlcyIsCiAJCQkJCSAgZ2V0X2Nm cF9lcnJvcihjdHgtPmRhdGFGSCkpOwogCiAKQEAgLTM5NSw4ICszODgsNyBAQCBfUHJpbnRG aWxlRGF0YShBcmNoaXZlSGFuZGxlICpBSCwgY2hhciAqZmlsZW5hbWUpCiAJY2ZwID0gY2Zv cGVuX3JlYWQoZmlsZW5hbWUsIFBHX0JJTkFSWV9SKTsKIAogCWlmICghY2ZwKQotCQlleGl0 X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3BlbiBpbnB1dCBmaWxlIFwiJXNc IjogJXNcbiIsCi0JCQkJCSAgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCWZhdGFs KCJjb3VsZCBub3Qgb3BlbiBpbnB1dCBmaWxlIFwiJXNcIjogJW0iLCBmaWxlbmFtZSk7CiAK IAlidWYgPSBwZ19tYWxsb2MoWkxJQl9PVVRfU0laRSk7CiAJYnVmbGVuID0gWkxJQl9PVVRf U0laRTsKQEAgLTQwOCw4ICs0MDAsNyBAQCBfUHJpbnRGaWxlRGF0YShBcmNoaXZlSGFuZGxl ICpBSCwgY2hhciAqZmlsZW5hbWUpCiAKIAlmcmVlKGJ1Zik7CiAJaWYgKGNmY2xvc2UoY2Zw KSAhPTApCi0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBjbG9zZSBk YXRhIGZpbGU6ICVzXG4iLAotCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7CisJCWZhdGFsKCJj b3VsZCBub3QgY2xvc2UgZGF0YSBmaWxlOiAlbSIpOwogfQogCiAvKgpAQCAtNDQ5LDggKzQ0 MCw4IEBAIF9Mb2FkQmxvYnMoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJY3R4LT5ibG9ic1RvY0ZI ID0gY2ZvcGVuX3JlYWQoZm5hbWUsIFBHX0JJTkFSWV9SKTsKIAogCWlmIChjdHgtPmJsb2Jz VG9jRkggPT0gTlVMTCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90 IG9wZW4gbGFyZ2Ugb2JqZWN0IFRPQyBmaWxlIFwiJXNcIiBmb3IgaW5wdXQ6ICVzXG4iLAot CQkJCQkgIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlmYXRhbCgiY291bGQgbm90IG9w ZW4gbGFyZ2Ugb2JqZWN0IFRPQyBmaWxlIFwiJXNcIiBmb3IgaW5wdXQ6ICVtIiwKKwkJCSAg Zm5hbWUpOwogCiAJLyogUmVhZCB0aGUgYmxvYnMgVE9DIGZpbGUgbGluZS1ieS1saW5lLCBh bmQgcHJvY2VzcyBlYWNoIGJsb2IgKi8KIAl3aGlsZSAoKGNmZ2V0cyhjdHgtPmJsb2JzVG9j RkgsIGxpbmUsIE1BWFBHUEFUSCkpICE9IE5VTEwpCkBAIC00NjAsNyArNDUxLDcgQEAgX0xv YWRCbG9icyhBcmNoaXZlSGFuZGxlICpBSCkKIAogCQkvKiBDYW4ndCBvdmVyZmxvdyBiZWNh dXNlIGxpbmUgYW5kIGZuYW1lIGFyZSB0aGUgc2FtZSBsZW5ndGguICovCiAJCWlmIChzc2Nh bmYobGluZSwgIiV1ICVzXG4iLCAmb2lkLCBmbmFtZSkgIT0gMikKLQkJCWV4aXRfaG9ycmli bHkobW9kdWxlbmFtZSwgImludmFsaWQgbGluZSBpbiBsYXJnZSBvYmplY3QgVE9DIGZpbGUg XCIlc1wiOiBcIiVzXCJcbiIsCisJCQlmYXRhbCgiaW52YWxpZCBsaW5lIGluIGxhcmdlIG9i amVjdCBUT0MgZmlsZSBcIiVzXCI6IFwiJXNcIiIsCiAJCQkJCQkgIGZuYW1lLCBsaW5lKTsK IAogCQlTdGFydFJlc3RvcmVCbG9iKEFILCBvaWQsIEFILT5wdWJsaWMucm9wdC0+ZHJvcFNj aGVtYSk7CkBAIC00NjksMTIgKzQ2MCwxMiBAQCBfTG9hZEJsb2JzKEFyY2hpdmVIYW5kbGUg KkFIKQogCQlFbmRSZXN0b3JlQmxvYihBSCwgb2lkKTsKIAl9CiAJaWYgKCFjZmVvZihjdHgt PmJsb2JzVG9jRkgpKQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJlcnJvciByZWFk aW5nIGxhcmdlIG9iamVjdCBUT0MgZmlsZSBcIiVzXCJcbiIsCisJCWZhdGFsKCJlcnJvciBy ZWFkaW5nIGxhcmdlIG9iamVjdCBUT0MgZmlsZSBcIiVzXCIiLAogCQkJCQkgIGZuYW1lKTsK IAogCWlmIChjZmNsb3NlKGN0eC0+YmxvYnNUb2NGSCkgIT0gMCkKLQkJZXhpdF9ob3JyaWJs eShtb2R1bGVuYW1lLCAiY291bGQgbm90IGNsb3NlIGxhcmdlIG9iamVjdCBUT0MgZmlsZSBc IiVzXCI6ICVzXG4iLAotCQkJCQkgIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlmYXRh bCgiY291bGQgbm90IGNsb3NlIGxhcmdlIG9iamVjdCBUT0MgZmlsZSBcIiVzXCI6ICVtIiwK KwkJCSAgZm5hbWUpOwogCiAJY3R4LT5ibG9ic1RvY0ZIID0gTlVMTDsKIApAQCAtNDk0LDcg KzQ4NSw3IEBAIF9Xcml0ZUJ5dGUoQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGludCBpKQog CWxjbENvbnRleHQgKmN0eCA9IChsY2xDb250ZXh0ICopIEFILT5mb3JtYXREYXRhOwogCiAJ aWYgKGNmd3JpdGUoJmMsIDEsIGN0eC0+ZGF0YUZIKSAhPSAxKQotCQlleGl0X2hvcnJpYmx5 KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgd3JpdGUgdG8gb3V0cHV0IGZpbGU6ICVzXG4iLAor CQlmYXRhbCgiY291bGQgbm90IHdyaXRlIHRvIG91dHB1dCBmaWxlOiAlcyIsCiAJCQkJCSAg Z2V0X2NmcF9lcnJvcihjdHgtPmRhdGFGSCkpOwogCiAJcmV0dXJuIDE7CkBAIC01MjQsNyAr NTE1LDcgQEAgX1dyaXRlQnVmKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCB2b2lkICpidWYs IHNpemVfdCBsZW4pCiAJbGNsQ29udGV4dCAqY3R4ID0gKGxjbENvbnRleHQgKikgQUgtPmZv cm1hdERhdGE7CiAKIAlpZiAoY2Z3cml0ZShidWYsIGxlbiwgY3R4LT5kYXRhRkgpICE9IGxl bikKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IHdyaXRlIHRvIG91 dHB1dCBmaWxlOiAlc1xuIiwKKwkJZmF0YWwoImNvdWxkIG5vdCB3cml0ZSB0byBvdXRwdXQg ZmlsZTogJXMiLAogCQkJCQkgIGdldF9jZnBfZXJyb3IoY3R4LT5kYXRhRkgpKTsKIAogCXJl dHVybjsKQEAgLTU0NSw4ICs1MzYsNyBAQCBfUmVhZEJ1ZihBcmNoaXZlSGFuZGxlICpBSCwg dm9pZCAqYnVmLCBzaXplX3QgbGVuKQogCSAqIGV4aXQgb24gc2hvcnQgcmVhZHMuCiAJICov CiAJaWYgKGNmcmVhZChidWYsIGxlbiwgY3R4LT5kYXRhRkgpICE9IGxlbikKLQkJZXhpdF9o b3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkgICJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0 IGZpbGU6IGVuZCBvZiBmaWxlXG4iKTsKKwkJZmF0YWwoImNvdWxkIG5vdCByZWFkIGZyb20g aW5wdXQgZmlsZTogZW5kIG9mIGZpbGUiKTsKIAogCXJldHVybjsKIH0KQEAgLTU4MSw4ICs1 NzEsNyBAQCBfQ2xvc2VBcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFIKQogCQkvKiBUaGUgVE9D IGlzIGFsd2F5cyBjcmVhdGVkIHVuY29tcHJlc3NlZCAqLwogCQl0b2NGSCA9IGNmb3Blbl93 cml0ZShmbmFtZSwgUEdfQklOQVJZX1csIDApOwogCQlpZiAodG9jRkggPT0gTlVMTCkKLQkJ CWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBvcGVuIG91dHB1dCBmaWxl IFwiJXNcIjogJXNcbiIsCi0JCQkJCQkgIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJ ZmF0YWwoImNvdWxkIG5vdCBvcGVuIG91dHB1dCBmaWxlIFwiJXNcIjogJW0iLCBmbmFtZSk7 CiAJCWN0eC0+ZGF0YUZIID0gdG9jRkg7CiAKIAkJLyoKQEAgLTU5NSw4ICs1ODQsNyBAQCBf Q2xvc2VBcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFIKQogCQlBSC0+Zm9ybWF0ID0gYXJjaERp cmVjdG9yeTsKIAkJV3JpdGVUb2MoQUgpOwogCQlpZiAoY2ZjbG9zZSh0b2NGSCkgIT0gMCkK LQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBjbG9zZSBUT0MgZmls ZTogJXNcbiIsCi0JCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7CisJCQlmYXRhbCgiY291bGQg bm90IGNsb3NlIFRPQyBmaWxlOiAlbSIpOwogCQlXcml0ZURhdGFDaHVua3MoQUgsIGN0eC0+ cHN0YXRlKTsKIAogCQlQYXJhbGxlbEJhY2t1cEVuZChBSCwgY3R4LT5wc3RhdGUpOwpAQCAt NjA2LDcgKzU5NCw3IEBAIF9DbG9zZUFyY2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCSAq IGluZGl2aWR1YWxseS4gSnVzdCByZWN1cnNlIG9uY2UgdGhyb3VnaCBhbGwgdGhlIGZpbGVz IGdlbmVyYXRlZC4KIAkJICovCiAJCWlmIChBSC0+ZG9zeW5jKQotCQkJZnN5bmNfZGlyX3Jl Y3Vyc2UoY3R4LT5kaXJlY3RvcnksIHByb2duYW1lKTsKKwkJCWZzeW5jX2Rpcl9yZWN1cnNl KGN0eC0+ZGlyZWN0b3J5KTsKIAl9CiAJQUgtPkZIID0gTlVMTDsKIH0KQEAgLTY0Niw4ICs2 MzQsNyBAQCBfU3RhcnRCbG9icyhBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQog CS8qIFRoZSBibG9iIFRPQyBmaWxlIGlzIG5ldmVyIGNvbXByZXNzZWQgKi8KIAljdHgtPmJs b2JzVG9jRkggPSBjZm9wZW5fd3JpdGUoZm5hbWUsICJhYiIsIDApOwogCWlmIChjdHgtPmJs b2JzVG9jRkggPT0gTlVMTCkKLQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQg bm90IG9wZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlc1xuIiwKLQkJCQkJICBmbmFtZSwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIG91dHB1dCBmaWxlIFwi JXNcIjogJW0iLCBmbmFtZSk7CiB9CiAKIC8qCkBAIC02NjYsOCArNjUzLDcgQEAgX1N0YXJ0 QmxvYihBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBPaWQgb2lkKQogCWN0eC0+ ZGF0YUZIID0gY2ZvcGVuX3dyaXRlKGZuYW1lLCBQR19CSU5BUllfVywgQUgtPmNvbXByZXNz aW9uKTsKIAogCWlmIChjdHgtPmRhdGFGSCA9PSBOVUxMKQotCQlleGl0X2hvcnJpYmx5KG1v ZHVsZW5hbWUsICJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmlsZSBcIiVzXCI6ICVzXG4iLAot CQkJCQkgIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlmYXRhbCgiY291bGQgbm90IG9w ZW4gb3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIH0KIAogLyoKQEAgLTY4OSw3 ICs2NzUsNyBAQCBfRW5kQmxvYihBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlLCBP aWQgb2lkKQogCS8qIHJlZ2lzdGVyIHRoZSBibG9iIGluIGJsb2JzLnRvYyAqLwogCWxlbiA9 IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIldSBibG9iXyV1LmRhdFxuIiwgb2lkLCBv aWQpOwogCWlmIChjZndyaXRlKGJ1ZiwgbGVuLCBjdHgtPmJsb2JzVG9jRkgpICE9IGxlbikK LQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IHdyaXRlIHRvIGJsb2Jz IFRPQyBmaWxlXG4iKTsKKwkJZmF0YWwoImNvdWxkIG5vdCB3cml0ZSB0byBibG9icyBUT0Mg ZmlsZSIpOwogfQogCiAvKgpAQCAtNzIxLDcgKzcwNyw3IEBAIHNldEZpbGVQYXRoKEFyY2hp dmVIYW5kbGUgKkFILCBjaGFyICpidWYsIGNvbnN0IGNoYXIgKnJlbGF0aXZlRmlsZW5hbWUp CiAJZG5hbWUgPSBjdHgtPmRpcmVjdG9yeTsKIAogCWlmIChzdHJsZW4oZG5hbWUpICsgMSAr IHN0cmxlbihyZWxhdGl2ZUZpbGVuYW1lKSArIDEgPiBNQVhQR1BBVEgpCi0JCWV4aXRfaG9y cmlibHkobW9kdWxlbmFtZSwgImZpbGUgbmFtZSB0b28gbG9uZzogXCIlc1wiXG4iLCBkbmFt ZSk7CisJCWZhdGFsKCJmaWxlIG5hbWUgdG9vIGxvbmc6IFwiJXNcIiIsIGRuYW1lKTsKIAog CXN0cmNweShidWYsIGRuYW1lKTsKIAlzdHJjYXQoYnVmLCAiLyIpOwpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9udWxsLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwX251bGwuYwppbmRleCA2MmY2ZTYyNGYwLi5mMzNmN2JhNDIxIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX251bGwuYworKysgYi9zcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwX251bGwuYwpAQCAtNzIsNyArNzIsNyBAQCBJbml0QXJjaGl2ZUZtdF9O dWxsKEFyY2hpdmVIYW5kbGUgKkFIKQogCSAqIE5vdyBwcmV2ZW50IHJlYWRpbmcuLi4KIAkg Ki8KIAlpZiAoQUgtPm1vZGUgPT0gYXJjaE1vZGVSZWFkKQotCQlleGl0X2hvcnJpYmx5KE5V TEwsICJ0aGlzIGZvcm1hdCBjYW5ub3QgYmUgcmVhZFxuIik7CisJCWZhdGFsKCJ0aGlzIGZv cm1hdCBjYW5ub3QgYmUgcmVhZCIpOwogfQogCiAvKgpAQCAtMTQ3LDcgKzE0Nyw3IEBAIF9T dGFydEJsb2IoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgT2lkIG9pZCkKIAli b29sCQlvbGRfYmxvYl9zdHlsZSA9IChBSC0+dmVyc2lvbiA8IEtfVkVSU18xXzEyKTsKIAog CWlmIChvaWQgPT0gMCkKLQkJZXhpdF9ob3JyaWJseShOVUxMLCAiaW52YWxpZCBPSUQgZm9y IGxhcmdlIG9iamVjdFxuIik7CisJCWZhdGFsKCJpbnZhbGlkIE9JRCBmb3IgbGFyZ2Ugb2Jq ZWN0Iik7CiAKIAkvKiBXaXRoIGFuIG9sZCBhcmNoaXZlIHdlIG11c3QgZG8gZHJvcCBhbmQg Y3JlYXRlIGxvZ2ljIGhlcmUgKi8KIAlpZiAob2xkX2Jsb2Jfc3R5bGUgJiYgQUgtPnB1Ymxp Yy5yb3B0LT5kcm9wU2NoZW1hKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2Jh Y2t1cF90YXIuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdGFyLmMKaW5kZXggNDA3 YTU2ZDhkNC4uYjUyNTkzYzNjMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2Jh Y2t1cF90YXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3Rhci5jCkBAIC05 OSw5ICs5OSw2IEBAIHR5cGVkZWYgc3RydWN0CiAJY2hhcgkgICAqZmlsZW5hbWU7CiB9IGxj bFRvY0VudHJ5OwogCi0vKiB0cmFuc2xhdG9yOiB0aGlzIGlzIGEgbW9kdWxlIG5hbWUgKi8K LXN0YXRpYyBjb25zdCBjaGFyICptb2R1bGVuYW1lID0gZ2V0dGV4dF9ub29wKCJ0YXIgYXJj aGl2ZXIiKTsKLQogc3RhdGljIHZvaWQgX0xvYWRCbG9icyhBcmNoaXZlSGFuZGxlICpBSCk7 CiAKIHN0YXRpYyBUQVJfTUVNQkVSICp0YXJPcGVuKEFyY2hpdmVIYW5kbGUgKkFILCBjb25z dCBjaGFyICpmaWxlbmFtZSwgY2hhciBtb2RlKTsKQEAgLTE3NywxNyArMTc0LDE0IEBAIElu aXRBcmNoaXZlRm10X1RhcihBcmNoaXZlSGFuZGxlICpBSCkKIAkJewogCQkJY3R4LT50YXJG SCA9IGZvcGVuKEFILT5mU3BlYywgUEdfQklOQVJZX1cpOwogCQkJaWYgKGN0eC0+dGFyRkgg PT0gTlVMTCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0JCQkJCQkJICAiY291 bGQgbm90IG9wZW4gVE9DIGZpbGUgXCIlc1wiIGZvciBvdXRwdXQ6ICVzXG4iLAotCQkJCQkJ CSAgQUgtPmZTcGVjLCBzdHJlcnJvcihlcnJubykpOworCQkJCWZhdGFsKCJjb3VsZCBub3Qg b3BlbiBUT0MgZmlsZSBcIiVzXCIgZm9yIG91dHB1dDogJW0iLAorCQkJCQkgIEFILT5mU3Bl Yyk7CiAJCX0KIAkJZWxzZQogCQl7CiAJCQljdHgtPnRhckZIID0gc3Rkb3V0OwogCQkJaWYg KGN0eC0+dGFyRkggPT0gTlVMTCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsCi0J CQkJCQkJICAiY291bGQgbm90IG9wZW4gVE9DIGZpbGUgZm9yIG91dHB1dDogJXNcbiIsCi0J CQkJCQkJICBzdHJlcnJvcihlcnJubykpOworCQkJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBU T0MgZmlsZSBmb3Igb3V0cHV0OiAlbSIpOwogCQl9CiAKIAkJY3R4LT50YXJGSHBvcyA9IDA7 CkBAIC0yMDYsOCArMjAwLDcgQEAgSW5pdEFyY2hpdmVGbXRfVGFyKEFyY2hpdmVIYW5kbGUg KkFIKQogCQkgKiBwb3NpdGlvbmluZy4KIAkJICovCiAJCWlmIChBSC0+Y29tcHJlc3Npb24g IT0gMCkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJCSAgImNvbXByZXNz aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGFyIGFyY2hpdmUgZm9ybWF0XG4iKTsKKwkJCWZh dGFsKCJjb21wcmVzc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRhciBhcmNoaXZlIGZvcm1h dCIpOwogCX0KIAllbHNlCiAJewkJCQkJCQkvKiBSZWFkIE1vZGUgKi8KQEAgLTIxNSwxNSAr MjA4LDE0IEBAIEluaXRBcmNoaXZlRm10X1RhcihBcmNoaXZlSGFuZGxlICpBSCkKIAkJewog CQkJY3R4LT50YXJGSCA9IGZvcGVuKEFILT5mU3BlYywgUEdfQklOQVJZX1IpOwogCQkJaWYg KGN0eC0+dGFyRkggPT0gTlVMTCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJj b3VsZCBub3Qgb3BlbiBUT0MgZmlsZSBcIiVzXCIgZm9yIGlucHV0OiAlc1xuIiwKLQkJCQkJ CQkgIEFILT5mU3BlYywgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlmYXRhbCgiY291bGQgbm90 IG9wZW4gVE9DIGZpbGUgXCIlc1wiIGZvciBpbnB1dDogJW0iLAorCQkJCQkgIEFILT5mU3Bl Yyk7CiAJCX0KIAkJZWxzZQogCQl7CiAJCQljdHgtPnRhckZIID0gc3RkaW47CiAJCQlpZiAo Y3R4LT50YXJGSCA9PSBOVUxMKQotCQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNv dWxkIG5vdCBvcGVuIFRPQyBmaWxlIGZvciBpbnB1dDogJXNcbiIsCi0JCQkJCQkJICBzdHJl cnJvcihlcnJubykpOworCQkJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBUT0MgZmlsZSBmb3Ig aW5wdXQ6ICVtIik7CiAJCX0KIAogCQkvKgpAQCAtMzQ5LDcgKzM0MSw3IEBAIHRhck9wZW4o QXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjaGFyIG1vZGUpCiAJ CQkJICogQ291bGRuJ3QgZmluZCB0aGUgcmVxdWVzdGVkIGZpbGUuIEZ1dHVyZTogZG8gU0VF SygwKSBhbmQKIAkJCQkgKiByZXRyeS4KIAkJCQkgKi8KLQkJCQlleGl0X2hvcnJpYmx5KG1v ZHVsZW5hbWUsICJjb3VsZCBub3QgZmluZCBmaWxlIFwiJXNcIiBpbiBhcmNoaXZlXG4iLCBm aWxlbmFtZSk7CisJCQkJZmF0YWwoImNvdWxkIG5vdCBmaW5kIGZpbGUgXCIlc1wiIGluIGFy Y2hpdmUiLCBmaWxlbmFtZSk7CiAJCQl9CiAJCQllbHNlCiAJCQl7CkBAIC0zNjMsNyArMzU1 LDcgQEAgdGFyT3BlbihBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqZmlsZW5hbWUs IGNoYXIgbW9kZSkKIAkJaWYgKEFILT5jb21wcmVzc2lvbiA9PSAwKQogCQkJdG0tPm5GSCA9 IGN0eC0+dGFyRkg7CiAJCWVsc2UKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNv bXByZXNzaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGFyIGFyY2hpdmUgZm9ybWF0XG4iKTsK KwkJCWZhdGFsKCJjb21wcmVzc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRhciBhcmNoaXZl IGZvcm1hdCIpOwogCQkvKiB0bS0+ekZIID0gZ3pkb3BlbihkdXAoZmlsZW5vKGN0eC0+dGFy RkgpKSwgInJiIik7ICovCiAjZWxzZQogCQl0bS0+bkZIID0gY3R4LT50YXJGSDsKQEAgLTQx NSw3ICs0MDcsNyBAQCB0YXJPcGVuKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpm aWxlbmFtZSwgY2hhciBtb2RlKQogI2VuZGlmCiAKIAkJaWYgKHRtLT50bXBGSCA9PSBOVUxM KQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90IGdlbmVyYXRlIHRl bXBvcmFyeSBmaWxlIG5hbWU6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworCQkJZmF0YWwo ImNvdWxkIG5vdCBnZW5lcmF0ZSB0ZW1wb3JhcnkgZmlsZSBuYW1lOiAlbSIpOwogCiAJCXVt YXNrKG9sZF91bWFzayk7CiAKQEAgLTQyNiw3ICs0MTgsNyBAQCB0YXJPcGVuKEFyY2hpdmVI YW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwgY2hhciBtb2RlKQogCQkJc3ByaW50 ZihmbW9kZSwgIndiJWQiLCBBSC0+Y29tcHJlc3Npb24pOwogCQkJdG0tPnpGSCA9IGd6ZG9w ZW4oZHVwKGZpbGVubyh0bS0+dG1wRkgpKSwgZm1vZGUpOwogCQkJaWYgKHRtLT56RkggPT0g TlVMTCkKLQkJCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3Qgb3BlbiB0 ZW1wb3JhcnkgZmlsZVxuIik7CisJCQkJZmF0YWwoImNvdWxkIG5vdCBvcGVuIHRlbXBvcmFy eSBmaWxlIik7CiAJCX0KIAkJZWxzZQogCQkJdG0tPm5GSCA9IHRtLT50bXBGSDsKQEAgLTQ1 Myw3ICs0NDUsNyBAQCB0YXJDbG9zZShBcmNoaXZlSGFuZGxlICpBSCwgVEFSX01FTUJFUiAq dGgpCiAJICovCiAJaWYgKEFILT5jb21wcmVzc2lvbiAhPSAwKQogCQlpZiAoR1pDTE9TRSh0 aC0+ekZIKSAhPSAwKQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiY291bGQgbm90 IGNsb3NlIHRhciBtZW1iZXJcbiIpOworCQkJZmF0YWwoImNvdWxkIG5vdCBjbG9zZSB0YXIg bWVtYmVyIik7CiAKIAlpZiAodGgtPm1vZGUgPT0gJ3cnKQogCQlfdGFyQWRkRmlsZShBSCwg dGgpOwkvKiBUaGlzIHdpbGwgY2xvc2UgdGhlIHRlbXAgZmlsZSAqLwpAQCAtNTYwLDEyICs1 NTIsMTAgQEAgX3RhclJlYWRSYXcoQXJjaGl2ZUhhbmRsZSAqQUgsIHZvaWQgKmJ1Ziwgc2l6 ZV90IGxlbiwgVEFSX01FTUJFUiAqdGgsIEZJTEUgKmZoKQogCQkJCQlpbnQJCQllcnJudW07 CiAJCQkJCWNvbnN0IGNoYXIgKmVycm1zZyA9IGd6ZXJyb3IodGgtPnpGSCwgJmVycm51bSk7 CiAKLQkJCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAotCQkJCQkJCQkgICJjb3VsZCBu b3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6ICVzXG4iLAorCQkJCQlmYXRhbCgiY291bGQgbm90 IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiAlcyIsCiAJCQkJCQkJCSAgZXJybnVtID09IFpfRVJS Tk8gPyBzdHJlcnJvcihlcnJubykgOiBlcnJtc2cpOwogI2Vsc2UKLQkJCQkJZXhpdF9ob3Jy aWJseShtb2R1bGVuYW1lLAotCQkJCQkJCQkgICJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0 IGZpbGU6ICVzXG4iLAorCQkJCQlmYXRhbCgiY291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBm aWxlOiAlcyIsCiAJCQkJCQkJCSAgc3RyZXJyb3IoZXJybm8pKTsKICNlbmRpZgogCQkJCX0K QEAgLTU3OCw3ICs1NjgsNyBAQCBfdGFyUmVhZFJhdyhBcmNoaXZlSGFuZGxlICpBSCwgdm9p ZCAqYnVmLCBzaXplX3QgbGVuLCBUQVJfTUVNQkVSICp0aCwgRklMRSAqZmgpCiAJCQl9CiAJ CX0KIAkJZWxzZQotCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLCAiaW50ZXJuYWwgZXJy b3IgLS0gbmVpdGhlciB0aCBub3IgZmggc3BlY2lmaWVkIGluIHRhclJlYWRSYXcoKVxuIik7 CisJCQlmYXRhbCgiaW50ZXJuYWwgZXJyb3IgLS0gbmVpdGhlciB0aCBub3IgZmggc3BlY2lm aWVkIGluIHRhclJlYWRSYXcoKVxuIik7CiAJfQogCiAJY3R4LT50YXJGSHBvcyArPSByZXMg KyB1c2VkOwpAQCAtNzAwLDggKzY5MCw3IEBAIF9QcmludFRvY0RhdGEoQXJjaGl2ZUhhbmRs ZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAkJCXBvczEgPSAoaW50KSBzdHJsZW4odGUtPmNvcHlT dG10KSAtIDEzOwogCQkJaWYgKHBvczEgPCA2IHx8IHN0cm5jbXAodGUtPmNvcHlTdG10LCAi Q09QWSAiLCA1KSAhPSAwIHx8CiAJCQkJc3RyY21wKHRlLT5jb3B5U3RtdCArIHBvczEsICIg RlJPTSBzdGRpbjtcbiIpICE9IDApCi0JCQkJZXhpdF9ob3JyaWJseShtb2R1bGVuYW1lLAot CQkJCQkJCSAgInVuZXhwZWN0ZWQgQ09QWSBzdGF0ZW1lbnQgc3ludGF4OiBcIiVzXCJcbiIs CisJCQkJZmF0YWwoInVuZXhwZWN0ZWQgQ09QWSBzdGF0ZW1lbnQgc3ludGF4OiBcIiVzXCIi LAogCQkJCQkJCSAgdGUtPmNvcHlTdG10KTsKIAogCQkJLyogRW1pdCBhbGwgYnV0IHRoZSBG Uk9NIHBhcnQgLi4uICovCkBAIC03NDYsNyArNzM1LDcgQEAgX0xvYWRCbG9icyhBcmNoaXZl SGFuZGxlICpBSCkKIAkJCW9pZCA9IGF0b29pZCgmdGgtPnRhcmdldEZpbGVbNV0pOwogCQkJ aWYgKG9pZCAhPSAwKQogCQkJewotCQkJCWFobG9nKEFILCAxLCAicmVzdG9yaW5nIGxhcmdl IG9iamVjdCB3aXRoIE9JRCAldVxuIiwgb2lkKTsKKwkJCQlwZ19sb2dfaW5mbygicmVzdG9y aW5nIGxhcmdlIG9iamVjdCB3aXRoIE9JRCAldSIsIG9pZCk7CiAKIAkJCQlTdGFydFJlc3Rv cmVCbG9iKEFILCBvaWQsIEFILT5wdWJsaWMucm9wdC0+ZHJvcFNjaGVtYSk7CiAKQEAgLTgw Myw4ICs3OTIsNyBAQCBfUmVhZEJ5dGUoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJcmVzID0gdGFy UmVhZCgmYywgMSwgY3R4LT5GSCk7CiAJaWYgKHJlcyAhPSAxKQogCQkvKiBXZSBhbHJlYWR5 IHdvdWxkIGhhdmUgZXhpdGVkIGZvciBlcnJvcnMgb24gcmVhZHMsIG11c3QgYmUgRU9GICov Ci0JCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJICAiY291bGQgbm90IHJlYWQg ZnJvbSBpbnB1dCBmaWxlOiBlbmQgb2YgZmlsZVxuIik7CisJCWZhdGFsKCJjb3VsZCBub3Qg cmVhZCBmcm9tIGlucHV0IGZpbGU6IGVuZCBvZiBmaWxlIik7CiAJY3R4LT5maWxlUG9zICs9 IDE7CiAJcmV0dXJuIGM7CiB9CkBAIC04MjcsOCArODE1LDcgQEAgX1JlYWRCdWYoQXJjaGl2 ZUhhbmRsZSAqQUgsIHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikKIAogCWlmICh0YXJSZWFkKGJ1 ZiwgbGVuLCBjdHgtPkZIKSAhPSBsZW4pCiAJCS8qIFdlIGFscmVhZHkgd291bGQgaGF2ZSBl eGl0ZWQgZm9yIGVycm9ycyBvbiByZWFkcywgbXVzdCBiZSBFT0YgKi8KLQkJZXhpdF9ob3Jy aWJseShtb2R1bGVuYW1lLAotCQkJCQkgICJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZp bGU6IGVuZCBvZiBmaWxlXG4iKTsKKwkJZmF0YWwoImNvdWxkIG5vdCByZWFkIGZyb20gaW5w dXQgZmlsZTogZW5kIG9mIGZpbGUiKTsKIAogCWN0eC0+ZmlsZVBvcyArPSBsZW47CiAJcmV0 dXJuOwpAQCAtOTE3LDcgKzkwNCw3IEBAIF9DbG9zZUFyY2hpdmUoQXJjaGl2ZUhhbmRsZSAq QUgpCiAKIAkJLyogU3luYyB0aGUgb3V0cHV0IGZpbGUgaWYgb25lIGlzIGRlZmluZWQgKi8K IAkJaWYgKEFILT5kb3N5bmMgJiYgQUgtPmZTcGVjKQotCQkJKHZvaWQpIGZzeW5jX2ZuYW1l KEFILT5mU3BlYywgZmFsc2UsIHByb2duYW1lKTsKKwkJCSh2b2lkKSBmc3luY19mbmFtZShB SC0+ZlNwZWMsIGZhbHNlKTsKIAl9CiAKIAlBSC0+RkggPSBOVUxMOwpAQCAtOTcxLDcgKzk1 OCw3IEBAIF9TdGFydEJsb2IoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgT2lk IG9pZCkKIAljaGFyCSAgICpzZng7CiAKIAlpZiAob2lkID09IDApCi0JCWV4aXRfaG9ycmli bHkobW9kdWxlbmFtZSwgImludmFsaWQgT0lEIGZvciBsYXJnZSBvYmplY3QgKCV1KVxuIiwg b2lkKTsKKwkJZmF0YWwoImludmFsaWQgT0lEIGZvciBsYXJnZSBvYmplY3QgKCV1KSIsIG9p ZCk7CiAKIAlpZiAoQUgtPmNvbXByZXNzaW9uICE9IDApCiAJCXNmeCA9ICIuZ3oiOwpAQCAt MTEwMSw4ICsxMDg4LDcgQEAgX3RhckFkZEZpbGUoQXJjaGl2ZUhhbmRsZSAqQUgsIFRBUl9N RU1CRVIgKnRoKQogCWZzZWVrbyh0bXAsIDAsIFNFRUtfRU5EKTsKIAl0aC0+ZmlsZUxlbiA9 IGZ0ZWxsbyh0bXApOwogCWlmICh0aC0+ZmlsZUxlbiA8IDApCi0JCWV4aXRfaG9ycmlibHko bW9kdWxlbmFtZSwgImNvdWxkIG5vdCBkZXRlcm1pbmUgc2VlayBwb3NpdGlvbiBpbiBhcmNo aXZlIGZpbGU6ICVzXG4iLAotCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7CisJCWZhdGFsKCJj b3VsZCBub3QgZGV0ZXJtaW5lIHNlZWsgcG9zaXRpb24gaW4gYXJjaGl2ZSBmaWxlOiAlbSIp OwogCWZzZWVrbyh0bXAsIDAsIFNFRUtfU0VUKTsKIAogCV90YXJXcml0ZUhlYWRlcih0aCk7 CkBAIC0xMTE3LDggKzExMDMsNyBAQCBfdGFyQWRkRmlsZShBcmNoaXZlSGFuZGxlICpBSCwg VEFSX01FTUJFUiAqdGgpCiAJCVJFQURfRVJST1JfRVhJVCh0bXApOwogCiAJaWYgKGZjbG9z ZSh0bXApICE9IDApCQkvKiBUaGlzICpzaG91bGQqIGRlbGV0ZSBpdC4uLiAqLwotCQlleGl0 X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3QgY2xvc2UgdGVtcG9yYXJ5IGZpbGU6 ICVzXG4iLAotCQkJCQkgIHN0cmVycm9yKGVycm5vKSk7CisJCWZhdGFsKCJjb3VsZCBub3Qg Y2xvc2UgdGVtcG9yYXJ5IGZpbGU6ICVtIik7CiAKIAlpZiAobGVuICE9IHRoLT5maWxlTGVu KQogCXsKQEAgLTExMjcsNyArMTExMiw3IEBAIF90YXJBZGRGaWxlKEFyY2hpdmVIYW5kbGUg KkFILCBUQVJfTUVNQkVSICp0aCkKIAogCQlzbnByaW50ZihidWYxLCBzaXplb2YoYnVmMSks IElOVDY0X0ZPUk1BVCwgKGludDY0KSBsZW4pOwogCQlzbnByaW50ZihidWYyLCBzaXplb2Yo YnVmMiksIElOVDY0X0ZPUk1BVCwgKGludDY0KSB0aC0+ZmlsZUxlbik7Ci0JCWV4aXRfaG9y cmlibHkobW9kdWxlbmFtZSwgImFjdHVhbCBmaWxlIGxlbmd0aCAoJXMpIGRvZXMgbm90IG1h dGNoIGV4cGVjdGVkICglcylcbiIsCisJCWZhdGFsKCJhY3R1YWwgZmlsZSBsZW5ndGggKCVz KSBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCAoJXMpIiwKIAkJCQkJICBidWYxLCBidWYyKTsK IAl9CiAKQEAgLTExNjQsNyArMTE0OSw3IEBAIF90YXJQb3NpdGlvblRvKEFyY2hpdmVIYW5k bGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIAogCQlzbnByaW50ZihidWYxLCBzaXpl b2YoYnVmMSksIElOVDY0X0ZPUk1BVCwgKGludDY0KSBjdHgtPnRhckZIcG9zKTsKIAkJc25w cmludGYoYnVmMiwgc2l6ZW9mKGJ1ZjIpLCBJTlQ2NF9GT1JNQVQsIChpbnQ2NCkgY3R4LT50 YXJOZXh0TWVtYmVyKTsKLQkJYWhsb2coQUgsIDQsICJtb3ZpbmcgZnJvbSBwb3NpdGlvbiAl cyB0byBuZXh0IG1lbWJlciBhdCBmaWxlIHBvc2l0aW9uICVzXG4iLAorCQlwZ19sb2dfZGVi dWcoIm1vdmluZyBmcm9tIHBvc2l0aW9uICVzIHRvIG5leHQgbWVtYmVyIGF0IGZpbGUgcG9z aXRpb24gJXMiLAogCQkJICBidWYxLCBidWYyKTsKIAogCQl3aGlsZSAoY3R4LT50YXJGSHBv cyA8IGN0eC0+dGFyTmV4dE1lbWJlcikKQEAgLTExNzUsNyArMTE2MCw3IEBAIF90YXJQb3Np dGlvblRvKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIAkJY2hh cgkJYnVmWzEwMF07CiAKIAkJc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgSU5UNjRfRk9S TUFULCAoaW50NjQpIGN0eC0+dGFyRkhwb3MpOwotCQlhaGxvZyhBSCwgNCwgIm5vdyBhdCBm aWxlIHBvc2l0aW9uICVzXG4iLCBidWYpOworCQlwZ19sb2dfZGVidWcoIm5vdyBhdCBmaWxl IHBvc2l0aW9uICVzIiwgYnVmKTsKIAl9CiAKIAkvKiBXZSBhcmUgYXQgdGhlIHN0YXJ0IG9m IHRoZSBmaWxlLCBvciBhdCB0aGUgbmV4dCBtZW1iZXIgKi8KQEAgLTExODQsNyArMTE2OSw3 IEBAIF90YXJQb3NpdGlvblRvKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxl bmFtZSkKIAlpZiAoIV90YXJHZXRIZWFkZXIoQUgsIHRoKSkKIAl7CiAJCWlmIChmaWxlbmFt ZSkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxkIG5vdCBmaW5kIGhlYWRl ciBmb3IgZmlsZSBcIiVzXCIgaW4gdGFyIGFyY2hpdmVcbiIsIGZpbGVuYW1lKTsKKwkJCWZh dGFsKCJjb3VsZCBub3QgZmluZCBoZWFkZXIgZm9yIGZpbGUgXCIlc1wiIGluIHRhciBhcmNo aXZlIiwgZmlsZW5hbWUpOwogCQllbHNlCiAJCXsKIAkJCS8qCkBAIC0xMTk4LDEyICsxMTgz LDEyIEBAIF90YXJQb3NpdGlvblRvKEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpm aWxlbmFtZSkKIAogCXdoaWxlIChmaWxlbmFtZSAhPSBOVUxMICYmIHN0cmNtcCh0aC0+dGFy Z2V0RmlsZSwgZmlsZW5hbWUpICE9IDApCiAJewotCQlhaGxvZyhBSCwgNCwgInNraXBwaW5n IHRhciBtZW1iZXIgJXNcbiIsIHRoLT50YXJnZXRGaWxlKTsKKwkJcGdfbG9nX2RlYnVnKCJz a2lwcGluZyB0YXIgbWVtYmVyICVzIiwgdGgtPnRhcmdldEZpbGUpOwogCiAJCWlkID0gYXRv aSh0aC0+dGFyZ2V0RmlsZSk7CiAJCWlmICgoVG9jSURSZXF1aXJlZChBSCwgaWQpICYgUkVR X0RBVEEpICE9IDApCi0JCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJyZXN0b3Jpbmcg ZGF0YSBvdXQgb2Ygb3JkZXIgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGFyY2hpdmUgZm9y bWF0OiAiCi0JCQkJCQkgICJcIiVzXCIgaXMgcmVxdWlyZWQsIGJ1dCBjb21lcyBiZWZvcmUg XCIlc1wiIGluIHRoZSBhcmNoaXZlIGZpbGUuXG4iLAorCQkJZmF0YWwoInJlc3RvcmluZyBk YXRhIG91dCBvZiBvcmRlciBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYXJjaGl2ZSBmb3Jt YXQ6ICIKKwkJCQkJCSAgIlwiJXNcIiBpcyByZXF1aXJlZCwgYnV0IGNvbWVzIGJlZm9yZSBc IiVzXCIgaW4gdGhlIGFyY2hpdmUgZmlsZS4iLAogCQkJCQkJICB0aC0+dGFyZ2V0RmlsZSwg ZmlsZW5hbWUpOwogCiAJCS8qIEhlYWRlciBkb2Vzbid0IG1hdGNoLCBzbyByZWFkIHRvIG5l eHQgaGVhZGVyICovCkBAIC0xMjE0LDcgKzExOTksNyBAQCBfdGFyUG9zaXRpb25UbyhBcmNo aXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiAJCQlfdGFyUmVhZFJhdyhB SCwgJmhlYWRlclswXSwgNTEyLCBOVUxMLCBjdHgtPnRhckZIKTsKIAogCQlpZiAoIV90YXJH ZXRIZWFkZXIoQUgsIHRoKSkKLQkJCWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwgImNvdWxk IG5vdCBmaW5kIGhlYWRlciBmb3IgZmlsZSBcIiVzXCIgaW4gdGFyIGFyY2hpdmVcbiIsIGZp bGVuYW1lKTsKKwkJCWZhdGFsKCJjb3VsZCBub3QgZmluZCBoZWFkZXIgZm9yIGZpbGUgXCIl c1wiIGluIHRhciBhcmNoaXZlIiwgZmlsZW5hbWUpOwogCX0KIAogCWN0eC0+dGFyTmV4dE1l bWJlciA9IGN0eC0+dGFyRkhwb3MgKyAoKHRoLT5maWxlTGVuICsgNTExKSAmIH41MTEpOwpA QCAtMTI0Nyw5ICsxMjMyLDggQEAgX3RhckdldEhlYWRlcihBcmNoaXZlSGFuZGxlICpBSCwg VEFSX01FTUJFUiAqdGgpCiAJCQlyZXR1cm4gMDsKIAogCQlpZiAobGVuICE9IDUxMikKLQkJ CWV4aXRfaG9ycmlibHkobW9kdWxlbmFtZSwKLQkJCQkJCSAgbmdldHRleHQoImluY29tcGxl dGUgdGFyIGhlYWRlciBmb3VuZCAoJWx1IGJ5dGUpXG4iLAotCQkJCQkJCQkgICAiaW5jb21w bGV0ZSB0YXIgaGVhZGVyIGZvdW5kICglbHUgYnl0ZXMpXG4iLAorCQkJZmF0YWwobmdldHRl eHQoImluY29tcGxldGUgdGFyIGhlYWRlciBmb3VuZCAoJWx1IGJ5dGUpIiwKKwkJCQkJCSAg ICJpbmNvbXBsZXRlIHRhciBoZWFkZXIgZm91bmQgKCVsdSBieXRlcykiLAogCQkJCQkJCQkg ICBsZW4pLAogCQkJCQkJICAodW5zaWduZWQgbG9uZykgbGVuKTsKIApAQCAtMTI4OSw3ICsx MjczLDcgQEAgX3RhckdldEhlYWRlcihBcmNoaXZlSGFuZGxlICpBSCwgVEFSX01FTUJFUiAq dGgpCiAKIAkJc25wcmludGYocG9zYnVmLCBzaXplb2YocG9zYnVmKSwgVUlOVDY0X0ZPUk1B VCwgKHVpbnQ2NCkgaFBvcyk7CiAJCXNucHJpbnRmKGxlbmJ1Ziwgc2l6ZW9mKGxlbmJ1Ziks IFVJTlQ2NF9GT1JNQVQsICh1aW50NjQpIGxlbik7Ci0JCWFobG9nKEFILCAzLCAiVE9DIEVu dHJ5ICVzIGF0ICVzIChsZW5ndGggJXMsIGNoZWNrc3VtICVkKVxuIiwKKwkJcGdfbG9nX2Rl YnVnKCJUT0MgRW50cnkgJXMgYXQgJXMgKGxlbmd0aCAlcywgY2hlY2tzdW0gJWQpIiwKIAkJ CSAgdGFnLCBwb3NidWYsIGxlbmJ1Ziwgc3VtKTsKIAl9CiAKQEAgLTEyOTksOSArMTI4Myw3 IEBAIF90YXJHZXRIZWFkZXIoQXJjaGl2ZUhhbmRsZSAqQUgsIFRBUl9NRU1CRVIgKnRoKQog CiAJCXNucHJpbnRmKHBvc2J1Ziwgc2l6ZW9mKHBvc2J1ZiksIFVJTlQ2NF9GT1JNQVQsCiAJ CQkJICh1aW50NjQpIGZ0ZWxsbyhjdHgtPnRhckZIKSk7Ci0JCWV4aXRfaG9ycmlibHkobW9k dWxlbmFtZSwKLQkJCQkJICAiY29ycnVwdCB0YXIgaGVhZGVyIGZvdW5kIGluICVzICIKLQkJ CQkJICAiKGV4cGVjdGVkICVkLCBjb21wdXRlZCAlZCkgZmlsZSBwb3NpdGlvbiAlc1xuIiwK KwkJZmF0YWwoImNvcnJ1cHQgdGFyIGhlYWRlciBmb3VuZCBpbiAlcyAoZXhwZWN0ZWQgJWQs IGNvbXB1dGVkICVkKSBmaWxlIHBvc2l0aW9uICVzIiwKIAkJCQkJICB0YWcsIHN1bSwgY2hr LCBwb3NidWYpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1 cF91dGlscy5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF91dGlscy5jCmluZGV4IDFi ZGNlNjhmZjkuLjZmODdjNmQ2ODQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19i YWNrdXBfdXRpbHMuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3V0aWxzLmMK QEAgLTUxLDggKzUxLDcgQEAgc2V0X2R1bXBfc2VjdGlvbihjb25zdCBjaGFyICphcmcsIGlu dCAqZHVtcFNlY3Rpb25zKQogCQkqZHVtcFNlY3Rpb25zIHw9IERVTVBfUE9TVF9EQVRBOwog CWVsc2UKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogdW5yZWNvZ25pemVkIHNlY3Rp b24gbmFtZTogXCIlc1wiXG4iKSwKLQkJCQlwcm9nbmFtZSwgYXJnKTsKKwkJcGdfbG9nX2Vy cm9yKCJ1bnJlY29nbml6ZWQgc2VjdGlvbiBuYW1lOiBcIiVzXCIiLCBhcmcpOwogCQlmcHJp bnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24u XG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXRfbmljZWx5KDEpOwpAQCAtNjAsNjIgKzU5 LDE1IEBAIHNldF9kdW1wX3NlY3Rpb24oY29uc3QgY2hhciAqYXJnLCBpbnQgKmR1bXBTZWN0 aW9ucykKIH0KIAogCi0vKgotICogV3JpdGUgYSBwcmludGYtc3R5bGUgbWVzc2FnZSB0byBz dGRlcnIuCi0gKgotICogVGhlIHByb2dyYW0gbmFtZSBpcyBwcmVwZW5kZWQsIGlmICJwcm9n bmFtZSIgaGFzIGJlZW4gc2V0LgotICogQWxzbywgaWYgbW9kdWxlbmFtZSBpc24ndCBOVUxM LCB0aGF0J3MgaW5jbHVkZWQgdG9vLgotICogTm90ZSB0aGF0IHdlJ2xsIHRyeSB0byB0cmFu c2xhdGUgdGhlIG1vZHVsZW5hbWUgYW5kIHRoZSBmbXQgc3RyaW5nLgotICovCi12b2lkCi13 cml0ZV9tc2coY29uc3QgY2hhciAqbW9kdWxlbmFtZSwgY29uc3QgY2hhciAqZm10LC4uLikK LXsKLQl2YV9saXN0CQlhcDsKLQotCXZhX3N0YXJ0KGFwLCBmbXQpOwotCXZ3cml0ZV9tc2co bW9kdWxlbmFtZSwgZm10LCBhcCk7Ci0JdmFfZW5kKGFwKTsKLX0KLQotLyoKLSAqIEFzIHdy aXRlX21zZywgYnV0IHBhc3MgYSB2YV9saXN0IG5vdCB2YXJpYWJsZSBhcmd1bWVudHMuCi0g Ki8KLXZvaWQKLXZ3cml0ZV9tc2coY29uc3QgY2hhciAqbW9kdWxlbmFtZSwgY29uc3QgY2hh ciAqZm10LCB2YV9saXN0IGFwKQotewotCWlmIChwcm9nbmFtZSkKLQl7Ci0JCWlmIChtb2R1 bGVuYW1lKQotCQkJZnByaW50ZihzdGRlcnIsICIlczogWyVzXSAiLCBwcm9nbmFtZSwgXyht b2R1bGVuYW1lKSk7Ci0JCWVsc2UKLQkJCWZwcmludGYoc3RkZXJyLCAiJXM6ICIsIHByb2du YW1lKTsKLQl9Ci0JdmZwcmludGYoc3RkZXJyLCBfKGZtdCksIGFwKTsKLX0KLQotLyoKLSAq IEZhaWwgYW5kIGRpZSwgd2l0aCBhIG1lc3NhZ2UgdG8gc3RkZXJyLiAgUGFyYW1ldGVycyBh cyBmb3Igd3JpdGVfbXNnLgotICoKLSAqIE5vdGUgdGhhdCBvbl9leGl0X25pY2VseSBjYWxs YmFja3Mgd2lsbCBnZXQgcnVuLgotICovCi12b2lkCi1leGl0X2hvcnJpYmx5KGNvbnN0IGNo YXIgKm1vZHVsZW5hbWUsIGNvbnN0IGNoYXIgKmZtdCwuLi4pCi17Ci0JdmFfbGlzdAkJYXA7 Ci0KLQl2YV9zdGFydChhcCwgZm10KTsKLQl2d3JpdGVfbXNnKG1vZHVsZW5hbWUsIGZtdCwg YXApOwotCXZhX2VuZChhcCk7Ci0KLQlleGl0X25pY2VseSgxKTsKLX0KLQogLyogUmVnaXN0 ZXIgYSBjYWxsYmFjayB0byBiZSBydW4gd2hlbiBleGl0X25pY2VseSBpcyBpbnZva2VkLiAq Lwogdm9pZAogb25fZXhpdF9uaWNlbHkob25fZXhpdF9uaWNlbHlfY2FsbGJhY2sgZnVuY3Rp b24sIHZvaWQgKmFyZykKIHsKIAlpZiAob25fZXhpdF9uaWNlbHlfaW5kZXggPj0gTUFYX09O X0VYSVRfTklDRUxZKQotCQlleGl0X2hvcnJpYmx5KE5VTEwsICJvdXQgb2Ygb25fZXhpdF9u aWNlbHkgc2xvdHNcbiIpOworCXsKKwkJcGdfbG9nX2ZhdGFsKCJvdXQgb2Ygb25fZXhpdF9u aWNlbHkgc2xvdHMiKTsKKwkJZXhpdF9uaWNlbHkoMSk7CisJfQogCW9uX2V4aXRfbmljZWx5 X2xpc3Rbb25fZXhpdF9uaWNlbHlfaW5kZXhdLmZ1bmN0aW9uID0gZnVuY3Rpb247CiAJb25f ZXhpdF9uaWNlbHlfbGlzdFtvbl9leGl0X25pY2VseV9pbmRleF0uYXJnID0gYXJnOwogCW9u X2V4aXRfbmljZWx5X2luZGV4Kys7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwX3V0aWxzLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3V0aWxzLmgKaW5k ZXggN2RiZjNjOWZlYi4uYzQ3YzE5YWY2YyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2JhY2t1cF91dGlscy5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfdXRp bHMuaApAQCAtMTUsNiArMTUsOCBAQAogI2lmbmRlZiBQR19CQUNLVVBfVVRJTFNfSAogI2Rl ZmluZSBQR19CQUNLVVBfVVRJTFNfSAogCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5o IgorCiB0eXBlZGVmIGVudW0JCQkJCS8qIGJpdHMgcmV0dXJuZWQgYnkgc2V0X2R1bXBfc2Vj dGlvbiAqLwogewogCURVTVBfUFJFX0RBVEEgPSAweDAxLApAQCAtMjgsMTEgKzMwLDkgQEAg dHlwZWRlZiB2b2lkICgqb25fZXhpdF9uaWNlbHlfY2FsbGJhY2spIChpbnQgY29kZSwgdm9p ZCAqYXJnKTsKIGV4dGVybiBjb25zdCBjaGFyICpwcm9nbmFtZTsKIAogZXh0ZXJuIHZvaWQg c2V0X2R1bXBfc2VjdGlvbihjb25zdCBjaGFyICphcmcsIGludCAqZHVtcFNlY3Rpb25zKTsK LWV4dGVybiB2b2lkIHdyaXRlX21zZyhjb25zdCBjaGFyICptb2R1bGVuYW1lLCBjb25zdCBj aGFyICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDIsIDMpOwotZXh0ZXJuIHZvaWQg dndyaXRlX21zZyhjb25zdCBjaGFyICptb2R1bGVuYW1lLCBjb25zdCBjaGFyICpmbXQsIHZh X2xpc3QgYXApIHBnX2F0dHJpYnV0ZV9wcmludGYoMiwgMCk7CiBleHRlcm4gdm9pZCBvbl9l eGl0X25pY2VseShvbl9leGl0X25pY2VseV9jYWxsYmFjayBmdW5jdGlvbiwgdm9pZCAqYXJn KTsKIGV4dGVybiB2b2lkIGV4aXRfbmljZWx5KGludCBjb2RlKSBwZ19hdHRyaWJ1dGVfbm9y ZXR1cm4oKTsKIAotZXh0ZXJuIHZvaWQgZXhpdF9ob3JyaWJseShjb25zdCBjaGFyICptb2R1 bGVuYW1lLCBjb25zdCBjaGFyICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDIsIDMp IHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOworI2RlZmluZSBmYXRhbCguLi4pIGRvIHsgcGdf bG9nX2Vycm9yKF9fVkFfQVJHU19fKTsgZXhpdF9uaWNlbHkoMSk7IH0gd2hpbGUoMCkKIAog I2VuZGlmCQkJCQkJCS8qIFBHX0JBQ0tVUF9VVElMU19IICovCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRl eCBhMDhiYzRlY2FlLi44NDMxYWM4YjliIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTYyLDYgKzYy LDcgQEAKICNpbmNsdWRlICJwZ19iYWNrdXBfdXRpbHMuaCIKICNpbmNsdWRlICJwZ19kdW1w LmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvY29ubmVjdC5oIgorI2luY2x1ZGUgImZlX3V0aWxz L2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKIAogCkBA IC05MSw4ICs5Miw2IEBAIHR5cGVkZWYgZW51bSBPaWRPcHRpb25zCiB9IE9pZE9wdGlvbnM7 CiAKIC8qIGdsb2JhbCBkZWNscyAqLwotYm9vbAkJZ192ZXJib3NlOwkJCS8qIFVzZXIgd2Fu dHMgdmVyYm9zZSBuYXJyYXRpb24gb2Ygb3VyCi0JCQkJCQkJCSAqIGFjdGl2aXRpZXMuICov CiBzdGF0aWMgYm9vbCBkb3N5bmMgPSB0cnVlOwkJLyogSXNzdWUgZnN5bmMoKSB0byBtYWtl IGR1bXAgZHVyYWJsZSBvbiBkaXNrLiAqLwogCiAvKiBzdWJxdWVyeSB1c2VkIHRvIGNvbnZl cnQgdXNlciBJRCAoZWcsIGRhdGRiYSkgdG8gdXNlciBuYW1lICovCkBAIC0zMDgsNiArMzA3 LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJaW50CQkJb3B0aW5kZXg7CiAJ UmVzdG9yZU9wdGlvbnMgKnJvcHQ7CiAJQXJjaGl2ZSAgICAqZm91dDsJCQkvKiB0aGUgc2Ny aXB0IGZpbGUgKi8KKwlib29sCQlnX3ZlcmJvc2UgPSBmYWxzZTsKIAljb25zdCBjaGFyICpk dW1wZW5jb2RpbmcgPSBOVUxMOwogCWNvbnN0IGNoYXIgKmR1bXBzbmFwc2hvdCA9IE5VTEw7 CiAJY2hhcgkgICAqdXNlX3JvbGUgPSBOVUxMOwpAQCAtMzg2LDYgKzM4Niw4IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9OwogCisJ cGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOworCXBnX2xvZ2dpbmdfc2V0X2xldmVsKFBHX0xP R19XQVJOSU5HKTsKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRE T01BSU4oInBnX2R1bXAiKSk7CiAKIAkvKgpAQCAtMzk0LDggKzM5Niw2IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCSAqLwogCWluaXRfcGFyYWxsZWxfZHVtcF91dGlscygp OwogCi0JZ192ZXJib3NlID0gZmFsc2U7Ci0KIAlzdHJjcHkoZ19jb21tZW50X3N0YXJ0LCAi LS0gIik7CiAJZ19jb21tZW50X2VuZFswXSA9ICdcMCc7CiAJc3RyY3B5KGdfb3BhcXVlX3R5 cGUsICJvcGFxdWUiKTsKQEAgLTUxMSw2ICs1MTEsNyBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAogCQkJY2FzZSAndic6CQkJLyogdmVyYm9zZSAqLwogCQkJCWdfdmVyYm9z ZSA9IHRydWU7CisJCQkJcGdfbG9nZ2luZ19zZXRfbGV2ZWwoUEdfTE9HX0lORk8pOwogCQkJ CWJyZWFrOwogCiAJCQljYXNlICd3JzoKQEAgLTUyOSw3ICs1MzAsNyBAQCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKIAkJCQljb21wcmVzc0xldmVsID0gYXRvaShvcHRhcmcpOwog CQkJCWlmIChjb21wcmVzc0xldmVsIDwgMCB8fCBjb21wcmVzc0xldmVsID4gOSkKIAkJCQl7 Ci0JCQkJCXdyaXRlX21zZyhOVUxMLCAiY29tcHJlc3Npb24gbGV2ZWwgbXVzdCBiZSBpbiBy YW5nZSAwLi45XG4iKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJjb21wcmVzc2lvbiBsZXZlbCBt dXN0IGJlIGluIHJhbmdlIDAuLjkiKTsKIAkJCQkJZXhpdF9uaWNlbHkoMSk7CiAJCQkJfQog CQkJCWJyZWFrOwpAQCAtNTY3LDcgKzU2OCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCQkJCWV4dHJhX2Zsb2F0X2RpZ2l0cyA9IGF0b2kob3B0YXJnKTsKIAkJCQlpZiAo ZXh0cmFfZmxvYXRfZGlnaXRzIDwgLTE1IHx8IGV4dHJhX2Zsb2F0X2RpZ2l0cyA+IDMpCiAJ CQkJewotCQkJCQl3cml0ZV9tc2coTlVMTCwgImV4dHJhX2Zsb2F0X2RpZ2l0cyBtdXN0IGJl IGluIHJhbmdlIC0xNS4uM1xuIik7CisJCQkJCXBnX2xvZ19lcnJvcigiZXh0cmFfZmxvYXRf ZGlnaXRzIG11c3QgYmUgaW4gcmFuZ2UgLTE1Li4zIik7CiAJCQkJCWV4aXRfbmljZWx5KDEp OwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTU4OCw4ICs1ODksOCBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAkvKiBDb21wbGFpbiBpZiBhbnkgYXJndW1lbnRzIHJlbWFpbiAq LwogCWlmIChvcHRpbmQgPCBhcmdjKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0 b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwK LQkJCQlwcm9nbmFtZSwgYXJndltvcHRpbmRdKTsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFu eSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJIGFy Z3Zbb3B0aW5kXSk7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBm b3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCXByb2duYW1lKTsKIAkJZXhpdF9uaWNl bHkoMSk7CkBAIC02MDksMjEgKzYxMCwyMSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKIAogCWlmIChkb3B0LmRhdGFPbmx5ICYmIGRvcHQuc2NoZW1hT25seSkKIAl7Ci0JCXdy aXRlX21zZyhOVUxMLCAib3B0aW9ucyAtcy8tLXNjaGVtYS1vbmx5IGFuZCAtYS8tLWRhdGEt b25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxuIik7CisJCXBnX2xvZ19lcnJvcigib3B0 aW9ucyAtcy8tLXNjaGVtYS1vbmx5IGFuZCAtYS8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNl ZCB0b2dldGhlciIpOwogCQlleGl0X25pY2VseSgxKTsKIAl9CiAKIAlpZiAoZG9wdC5kYXRh T25seSAmJiBkb3B0Lm91dHB1dENsZWFuKQogCXsKLQkJd3JpdGVfbXNnKE5VTEwsICJvcHRp b25zIC1jLy0tY2xlYW4gYW5kIC1hLy0tZGF0YS1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0 aGVyXG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJvcHRpb25zIC1jLy0tY2xlYW4gYW5kIC1hLy0t ZGF0YS1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIik7CiAJCWV4aXRfbmljZWx5KDEp OwogCX0KIAogCWlmIChkb3B0LmlmX2V4aXN0cyAmJiAhZG9wdC5vdXRwdXRDbGVhbikKLQkJ ZXhpdF9ob3JyaWJseShOVUxMLCAib3B0aW9uIC0taWYtZXhpc3RzIHJlcXVpcmVzIG9wdGlv biAtYy8tLWNsZWFuXG4iKTsKKwkJZmF0YWwoIm9wdGlvbiAtLWlmLWV4aXN0cyByZXF1aXJl cyBvcHRpb24gLWMvLS1jbGVhbiIpOwogCiAJaWYgKGRvcHQuZG9fbm90aGluZyAmJiAhKGRv cHQuZHVtcF9pbnNlcnRzIHx8IGRvcHQuY29sdW1uX2luc2VydHMpKQotCQlleGl0X2hvcnJp Ymx5KE5VTEwsICJvcHRpb24gLS1vbi1jb25mbGljdC1kby1ub3RoaW5nIHJlcXVpcmVzIG9w dGlvbiAtLWluc2VydHMgb3IgLS1jb2x1bW4taW5zZXJ0c1xuIik7CisJCWZhdGFsKCJvcHRp b24gLS1vbi1jb25mbGljdC1kby1ub3RoaW5nIHJlcXVpcmVzIG9wdGlvbiAtLWluc2VydHMg b3IgLS1jb2x1bW4taW5zZXJ0cyIpOwogCiAJLyogSWRlbnRpZnkgYXJjaGl2ZSBmb3JtYXQg dG8gZW1pdCAqLwogCWFyY2hpdmVGb3JtYXQgPSBwYXJzZUFyY2hpdmVGb3JtYXQoZm9ybWF0 LCAmYXJjaGl2ZU1vZGUpOwpAQCAtNjQ1LDggKzY0Niw3IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCiAjaWZuZGVmIEhBVkVfTElCWgogCWlmIChjb21wcmVzc0xldmVsICE9 IDApCi0JCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzogcmVxdWVzdGVkIGNvbXByZXNzaW9u IG5vdCBhdmFpbGFibGUgaW4gdGhpcyAiCi0JCQkJICAiaW5zdGFsbGF0aW9uIC0tIGFyY2hp dmUgd2lsbCBiZSB1bmNvbXByZXNzZWRcbiIpOworCQlwZ19sb2dfd2FybmluZygicmVxdWVz dGVkIGNvbXByZXNzaW9uIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBpbnN0YWxsYXRpb24gLS0g YXJjaGl2ZSB3aWxsIGJlIHVuY29tcHJlc3NlZCIpOwogCWNvbXByZXNzTGV2ZWwgPSAwOwog I2VuZGlmCiAKQEAgLTY2NywxMSArNjY3LDExIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCQl8fCBudW1Xb3JrZXJzID4gTUFYSU1VTV9XQUlUX09CSkVDVFMKICNlbmRpZgog CQkpCi0JCWV4aXRfaG9ycmlibHkoTlVMTCwgImludmFsaWQgbnVtYmVyIG9mIHBhcmFsbGVs IGpvYnNcbiIpOworCQlmYXRhbCgiaW52YWxpZCBudW1iZXIgb2YgcGFyYWxsZWwgam9icyIp OwogCiAJLyogUGFyYWxsZWwgYmFja3VwIG9ubHkgaW4gdGhlIGRpcmVjdG9yeSBhcmNoaXZl IGZvcm1hdCBzbyBmYXIgKi8KIAlpZiAoYXJjaGl2ZUZvcm1hdCAhPSBhcmNoRGlyZWN0b3J5 ICYmIG51bVdvcmtlcnMgPiAxKQotCQlleGl0X2hvcnJpYmx5KE5VTEwsICJwYXJhbGxlbCBi YWNrdXAgb25seSBzdXBwb3J0ZWQgYnkgdGhlIGRpcmVjdG9yeSBmb3JtYXRcbiIpOworCQlm YXRhbCgicGFyYWxsZWwgYmFja3VwIG9ubHkgc3VwcG9ydGVkIGJ5IHRoZSBkaXJlY3Rvcnkg Zm9ybWF0Iik7CiAKIAkvKiBPcGVuIHRoZSBvdXRwdXQgZmlsZSAqLwogCWZvdXQgPSBDcmVh dGVBcmNoaXZlKGZpbGVuYW1lLCBhcmNoaXZlRm9ybWF0LCBjb21wcmVzc0xldmVsLCBkb3N5 bmMsCkBAIC02ODYsNiArNjg2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJ LyogTGV0IHRoZSBhcmNoaXZlciBrbm93IGhvdyBub2lzeSB0byBiZSAqLwogCWZvdXQtPnZl cmJvc2UgPSBnX3ZlcmJvc2U7CiAKKwogCS8qCiAJICogV2UgYWxsb3cgdGhlIHNlcnZlciB0 byBiZSBiYWNrIHRvIDguMCwgYW5kIHVwIHRvIGFueSBtaW5vciByZWxlYXNlIG9mCiAJICog b3VyIG93biBtYWpvciB2ZXJzaW9uLiAgKFNlZSBhbHNvIHZlcnNpb24gY2hlY2sgaW4gcGdf ZHVtcGFsbC5jLikKQEAgLTcyNSwxNSArNzI2LDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCS8qIGNoZWNrIHRoZSB2ZXJzaW9uIGZvciB0aGUgc3luY2hyb25pemVkIHNu YXBzaG90cyBmZWF0dXJlICovCiAJaWYgKG51bVdvcmtlcnMgPiAxICYmIGZvdXQtPnJlbW90 ZVZlcnNpb24gPCA5MDIwMAogCQkmJiAhZG9wdC5ub19zeW5jaHJvbml6ZWRfc25hcHNob3Rz KQotCQlleGl0X2hvcnJpYmx5KE5VTEwsCi0JCQkJCSAgIlN5bmNocm9uaXplZCBzbmFwc2hv dHMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBzZXJ2ZXIgdmVyc2lvbi5cbiIKLQkJCQkJ ICAiUnVuIHdpdGggLS1uby1zeW5jaHJvbml6ZWQtc25hcHNob3RzIGluc3RlYWQgaWYgeW91 IGRvIG5vdCBuZWVkXG4iCi0JCQkJCSAgInN5bmNocm9uaXplZCBzbmFwc2hvdHMuXG4iKTsK KwkJZmF0YWwoIlN5bmNocm9uaXplZCBzbmFwc2hvdHMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkg dGhpcyBzZXJ2ZXIgdmVyc2lvbi5cbiIKKwkJCSAgIlJ1biB3aXRoIC0tbm8tc3luY2hyb25p emVkLXNuYXBzaG90cyBpbnN0ZWFkIGlmIHlvdSBkbyBub3QgbmVlZFxuIgorCQkJICAic3lu Y2hyb25pemVkIHNuYXBzaG90cy4iKTsKIAogCS8qIGNoZWNrIHRoZSB2ZXJzaW9uIHdoZW4g YSBzbmFwc2hvdCBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCBieSB1c2VyICovCiAJaWYgKGR1 bXBzbmFwc2hvdCAmJiBmb3V0LT5yZW1vdGVWZXJzaW9uIDwgOTAyMDApCi0JCWV4aXRfaG9y cmlibHkoTlVMTCwKLQkJCQkJICAiRXhwb3J0ZWQgc25hcHNob3RzIGFyZSBub3Qgc3VwcG9y dGVkIGJ5IHRoaXMgc2VydmVyIHZlcnNpb24uXG4iKTsKKwkJZmF0YWwoIkV4cG9ydGVkIHNu YXBzaG90cyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIHNlcnZlciB2ZXJzaW9uLiIpOwog CiAJLyoKIAkgKiBGaW5kIHRoZSBsYXN0IGJ1aWx0LWluIE9JRCwgaWYgbmVlZGVkIChwcmlv ciB0byA4LjEpCkBAIC03NDUsOCArNzQ0LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJZWxzZQogCQlnX2xhc3RfYnVpbHRpbl9vaWQgPSBGaXJzdE5vcm1hbE9iamVjdElk IC0gMTsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21zZyhOVUxMLCAibGFzdCBidWls dC1pbiBPSUQgaXMgJXVcbiIsIGdfbGFzdF9idWlsdGluX29pZCk7CisJcGdfbG9nX2luZm8o Imxhc3QgYnVpbHQtaW4gT0lEIGlzICV1IiwgZ19sYXN0X2J1aWx0aW5fb2lkKTsKIAogCS8q IEV4cGFuZCBzY2hlbWEgc2VsZWN0aW9uIHBhdHRlcm5zIGludG8gT0lEIGxpc3RzICovCiAJ aWYgKHNjaGVtYV9pbmNsdWRlX3BhdHRlcm5zLmhlYWQgIT0gTlVMTCkKQEAgLTc1NSw3ICs3 NTMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQkJCQkJCSZzY2hlbWFf aW5jbHVkZV9vaWRzLAogCQkJCQkJCQkJc3RyaWN0X25hbWVzKTsKIAkJaWYgKHNjaGVtYV9p bmNsdWRlX29pZHMuaGVhZCA9PSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseShOVUxMLCAibm8g bWF0Y2hpbmcgc2NoZW1hcyB3ZXJlIGZvdW5kXG4iKTsKKwkJCWZhdGFsKCJubyBtYXRjaGlu ZyBzY2hlbWFzIHdlcmUgZm91bmQiKTsKIAl9CiAJZXhwYW5kX3NjaGVtYV9uYW1lX3BhdHRl cm5zKGZvdXQsICZzY2hlbWFfZXhjbHVkZV9wYXR0ZXJucywKIAkJCQkJCQkJJnNjaGVtYV9l eGNsdWRlX29pZHMsCkBAIC03NjksNyArNzY3LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJCQkJCQkJCSAgICZ0YWJsZV9pbmNsdWRlX29pZHMsCiAJCQkJCQkJCSAgIHN0 cmljdF9uYW1lcyk7CiAJCWlmICh0YWJsZV9pbmNsdWRlX29pZHMuaGVhZCA9PSBOVUxMKQot CQkJZXhpdF9ob3JyaWJseShOVUxMLCAibm8gbWF0Y2hpbmcgdGFibGVzIHdlcmUgZm91bmRc biIpOworCQkJZmF0YWwoIm5vIG1hdGNoaW5nIHRhYmxlcyB3ZXJlIGZvdW5kIik7CiAJfQog CWV4cGFuZF90YWJsZV9uYW1lX3BhdHRlcm5zKGZvdXQsICZ0YWJsZV9leGNsdWRlX3BhdHRl cm5zLAogCQkJCQkJCSAgICZ0YWJsZV9leGNsdWRlX29pZHMsCkBAIC0xMDMyLDggKzEwMzAs OCBAQCBzZXR1cF9jb25uZWN0aW9uKEFyY2hpdmUgKkFILCBjb25zdCBjaGFyICpkdW1wZW5j b2RpbmcsCiAJaWYgKGR1bXBlbmNvZGluZykKIAl7CiAJCWlmIChQUXNldENsaWVudEVuY29k aW5nKGNvbm4sIGR1bXBlbmNvZGluZykgPCAwKQotCQkJZXhpdF9ob3JyaWJseShOVUxMLCAi aW52YWxpZCBjbGllbnQgZW5jb2RpbmcgXCIlc1wiIHNwZWNpZmllZFxuIiwKLQkJCQkJCSAg ZHVtcGVuY29kaW5nKTsKKwkJCWZhdGFsKCJpbnZhbGlkIGNsaWVudCBlbmNvZGluZyBcIiVz XCIgc3BlY2lmaWVkIiwKKwkJCQkgIGR1bXBlbmNvZGluZyk7CiAJfQogCiAJLyoKQEAgLTEx NzcsMTAgKzExNzUsOSBAQCBzZXR1cF9jb25uZWN0aW9uKEFyY2hpdmUgKkFILCBjb25zdCBj aGFyICpkdW1wZW5jb2RpbmcsCiAJCQkgIWRvcHQtPm5vX3N5bmNocm9uaXplZF9zbmFwc2hv dHMpCiAJewogCQlpZiAoQUgtPmlzU3RhbmRieSAmJiBBSC0+cmVtb3RlVmVyc2lvbiA8IDEw MDAwMCkKLQkJCWV4aXRfaG9ycmlibHkoTlVMTCwKLQkJCQkJCSAgIlN5bmNocm9uaXplZCBz bmFwc2hvdHMgb24gc3RhbmRieSBzZXJ2ZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMg c2VydmVyIHZlcnNpb24uXG4iCi0JCQkJCQkgICJSdW4gd2l0aCAtLW5vLXN5bmNocm9uaXpl ZC1zbmFwc2hvdHMgaW5zdGVhZCBpZiB5b3UgZG8gbm90IG5lZWRcbiIKLQkJCQkJCSAgInN5 bmNocm9uaXplZCBzbmFwc2hvdHMuXG4iKTsKKwkJCWZhdGFsKCJTeW5jaHJvbml6ZWQgc25h cHNob3RzIG9uIHN0YW5kYnkgc2VydmVycyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIHNl cnZlciB2ZXJzaW9uLlxuIgorCQkJCSAgIlJ1biB3aXRoIC0tbm8tc3luY2hyb25pemVkLXNu YXBzaG90cyBpbnN0ZWFkIGlmIHlvdSBkbyBub3QgbmVlZFxuIgorCQkJCSAgInN5bmNocm9u aXplZCBzbmFwc2hvdHMuIik7CiAKIAogCQlBSC0+c3luY19zbmFwc2hvdF9pZCA9IGdldF9z eW5jaHJvbml6ZWRfc25hcHNob3QoQUgpOwpAQCAtMTI0Nyw3ICsxMjQ0LDcgQEAgcGFyc2VB cmNoaXZlRm9ybWF0KGNvbnN0IGNoYXIgKmZvcm1hdCwgQXJjaGl2ZU1vZGUgKm1vZGUpCiAJ ZWxzZSBpZiAocGdfc3RyY2FzZWNtcChmb3JtYXQsICJ0YXIiKSA9PSAwKQogCQlhcmNoaXZl Rm9ybWF0ID0gYXJjaFRhcjsKIAllbHNlCi0JCWV4aXRfaG9ycmlibHkoTlVMTCwgImludmFs aWQgb3V0cHV0IGZvcm1hdCBcIiVzXCIgc3BlY2lmaWVkXG4iLCBmb3JtYXQpOworCQlmYXRh bCgiaW52YWxpZCBvdXRwdXQgZm9ybWF0IFwiJXNcIiBzcGVjaWZpZWQiLCBmb3JtYXQpOwog CXJldHVybiBhcmNoaXZlRm9ybWF0OwogfQogCkBAIC0xMjg1LDcgKzEyODIsNyBAQCBleHBh bmRfc2NoZW1hX25hbWVfcGF0dGVybnMoQXJjaGl2ZSAqZm91dCwKIAogCQlyZXMgPSBFeGVj dXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CiAJCWlm IChzdHJpY3RfbmFtZXMgJiYgUFFudHVwbGVzKHJlcykgPT0gMCkKLQkJCWV4aXRfaG9ycmli bHkoTlVMTCwgIm5vIG1hdGNoaW5nIHNjaGVtYXMgd2VyZSBmb3VuZCBmb3IgcGF0dGVybiBc IiVzXCJcbiIsIGNlbGwtPnZhbCk7CisJCQlmYXRhbCgibm8gbWF0Y2hpbmcgc2NoZW1hcyB3 ZXJlIGZvdW5kIGZvciBwYXR0ZXJuIFwiJXNcIiIsIGNlbGwtPnZhbCk7CiAKIAkJZm9yIChp ID0gMDsgaSA8IFBRbnR1cGxlcyhyZXMpOyBpKyspCiAJCXsKQEAgLTEzNDksNyArMTM0Niw3 IEBAIGV4cGFuZF90YWJsZV9uYW1lX3BhdHRlcm5zKEFyY2hpdmUgKmZvdXQsCiAJCVBRY2xl YXIoRXhlY3V0ZVNxbFF1ZXJ5Rm9yU2luZ2xlUm93KGZvdXQsCiAJCQkJCQkJCQkJCUFMV0FZ U19TRUNVUkVfU0VBUkNIX1BBVEhfU1FMKSk7CiAJCWlmIChzdHJpY3RfbmFtZXMgJiYgUFFu dHVwbGVzKHJlcykgPT0gMCkKLQkJCWV4aXRfaG9ycmlibHkoTlVMTCwgIm5vIG1hdGNoaW5n IHRhYmxlcyB3ZXJlIGZvdW5kIGZvciBwYXR0ZXJuIFwiJXNcIlxuIiwgY2VsbC0+dmFsKTsK KwkJCWZhdGFsKCJubyBtYXRjaGluZyB0YWJsZXMgd2VyZSBmb3VuZCBmb3IgcGF0dGVybiBc IiVzXCIiLCBjZWxsLT52YWwpOwogCiAJCWZvciAoaSA9IDA7IGkgPCBQUW50dXBsZXMocmVz KTsgaSsrKQogCQl7CkBAIC0xNzYzLDkgKzE3NjAsOCBAQCBkdW1wVGFibGVEYXRhX2NvcHko QXJjaGl2ZSAqZm91dCwgdm9pZCAqZGNvbnRleHQpCiAJY2hhcgkgICAqY29weWJ1ZjsKIAlj b25zdCBjaGFyICpjb2x1bW5fbGlzdDsKIAotCWlmIChnX3ZlcmJvc2UpCi0JCXdyaXRlX21z ZyhOVUxMLCAiZHVtcGluZyBjb250ZW50cyBvZiB0YWJsZSBcIiVzLiVzXCJcbiIsCi0JCQkJ ICB0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUsIGNsYXNzbmFtZSk7CisJcGdf bG9nX2luZm8oImR1bXBpbmcgY29udGVudHMgb2YgdGFibGUgXCIlcy4lc1wiIiwKKwkJCQl0 YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUsIGNsYXNzbmFtZSk7CiAKIAkvKgog CSAqIFNwZWNpZnkgdGhlIGNvbHVtbiBsaXN0IGV4cGxpY2l0bHkgc28gdGhhdCB3ZSBoYXZl IG5vIHBvc3NpYmlsaXR5IG9mCkBAIC0xODY1LDkgKzE4NjEsOSBAQCBkdW1wVGFibGVEYXRh X2NvcHkoQXJjaGl2ZSAqZm91dCwgdm9pZCAqZGNvbnRleHQpCiAJaWYgKHJldCA9PSAtMikK IAl7CiAJCS8qIGNvcHkgZGF0YSB0cmFuc2ZlciBmYWlsZWQgKi8KLQkJd3JpdGVfbXNnKE5V TEwsICJEdW1waW5nIHRoZSBjb250ZW50cyBvZiB0YWJsZSBcIiVzXCIgZmFpbGVkOiBQUWdl dENvcHlEYXRhKCkgZmFpbGVkLlxuIiwgY2xhc3NuYW1lKTsKLQkJd3JpdGVfbXNnKE5VTEws ICJFcnJvciBtZXNzYWdlIGZyb20gc2VydmVyOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4p KTsKLQkJd3JpdGVfbXNnKE5VTEwsICJUaGUgY29tbWFuZCB3YXM6ICVzXG4iLCBxLT5kYXRh KTsKKwkJcGdfbG9nX2Vycm9yKCJEdW1waW5nIHRoZSBjb250ZW50cyBvZiB0YWJsZSBcIiVz XCIgZmFpbGVkOiBQUWdldENvcHlEYXRhKCkgZmFpbGVkLiIsIGNsYXNzbmFtZSk7CisJCXBn X2xvZ19lcnJvcigiRXJyb3IgbWVzc2FnZSBmcm9tIHNlcnZlcjogJXMiLCBQUWVycm9yTWVz c2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiVGhlIGNvbW1hbmQgd2FzOiAlcyIsIHEt PmRhdGEpOwogCQlleGl0X25pY2VseSgxKTsKIAl9CiAKQEAgLTE4NzUsMTYgKzE4NzEsMTYg QEAgZHVtcFRhYmxlRGF0YV9jb3B5KEFyY2hpdmUgKmZvdXQsIHZvaWQgKmRjb250ZXh0KQog CXJlcyA9IFBRZ2V0UmVzdWx0KGNvbm4pOwogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9 IFBHUkVTX0NPTU1BTkRfT0spCiAJewotCQl3cml0ZV9tc2coTlVMTCwgIkR1bXBpbmcgdGhl IGNvbnRlbnRzIG9mIHRhYmxlIFwiJXNcIiBmYWlsZWQ6IFBRZ2V0UmVzdWx0KCkgZmFpbGVk LlxuIiwgY2xhc3NuYW1lKTsKLQkJd3JpdGVfbXNnKE5VTEwsICJFcnJvciBtZXNzYWdlIGZy b20gc2VydmVyOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKLQkJd3JpdGVfbXNnKE5V TEwsICJUaGUgY29tbWFuZCB3YXM6ICVzXG4iLCBxLT5kYXRhKTsKKwkJcGdfbG9nX2Vycm9y KCJEdW1waW5nIHRoZSBjb250ZW50cyBvZiB0YWJsZSBcIiVzXCIgZmFpbGVkOiBQUWdldFJl c3VsdCgpIGZhaWxlZC4iLCBjbGFzc25hbWUpOworCQlwZ19sb2dfZXJyb3IoIkVycm9yIG1l c3NhZ2UgZnJvbSBzZXJ2ZXI6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19s b2dfZXJyb3IoIlRoZSBjb21tYW5kIHdhczogJXMiLCBxLT5kYXRhKTsKIAkJZXhpdF9uaWNl bHkoMSk7CiAJfQogCVBRY2xlYXIocmVzKTsKIAogCS8qIERvIHRoaXMgdG8gZW5zdXJlIHdl J3ZlIHB1bXBlZCBsaWJwcSBiYWNrIHRvIGlkbGUgc3RhdGUgKi8KIAlpZiAoUFFnZXRSZXN1 bHQoY29ubikgIT0gTlVMTCkKLQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiB1bmV4cGVj dGVkIGV4dHJhIHJlc3VsdHMgZHVyaW5nIENPUFkgb2YgdGFibGUgXCIlc1wiXG4iLAorCQlw Z19sb2dfd2FybmluZygidW5leHBlY3RlZCBleHRyYSByZXN1bHRzIGR1cmluZyBDT1BZIG9m IHRhYmxlIFwiJXNcIiIsCiAJCQkJICBjbGFzc25hbWUpOwogCiAJZGVzdHJveVBRRXhwQnVm ZmVyKHEpOwpAQCAtMjU4NCw4ICsyNTgwLDcgQEAgZHVtcERhdGFiYXNlKEFyY2hpdmUgKmZv dXQpCiAJCQkJbWlubXhpZDsKIAljaGFyCSAgICpxZGF0bmFtZTsKIAotCWlmIChnX3ZlcmJv c2UpCi0JCXdyaXRlX21zZyhOVUxMLCAic2F2aW5nIGRhdGFiYXNlIGRlZmluaXRpb25cbiIp OworCXBnX2xvZ19pbmZvKCJzYXZpbmcgZGF0YWJhc2UgZGVmaW5pdGlvbiIpOwogCiAJLyog RmV0Y2ggdGhlIGRhdGFiYXNlLWxldmVsIHByb3BlcnRpZXMgZm9yIHRoaXMgZGF0YWJhc2Ug Ki8KIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSA5MDYwMCkKQEAgLTMwMjgsOCArMzAy Myw3IEBAIGR1bXBFbmNvZGluZyhBcmNoaXZlICpBSCkKIAljb25zdCBjaGFyICplbmNuYW1l ID0gcGdfZW5jb2RpbmdfdG9fY2hhcihBSC0+ZW5jb2RpbmcpOwogCVBRRXhwQnVmZmVyIHFy eSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9t c2coTlVMTCwgInNhdmluZyBlbmNvZGluZyA9ICVzXG4iLCBlbmNuYW1lKTsKKwlwZ19sb2df aW5mbygic2F2aW5nIGVuY29kaW5nID0gJXMiLCBlbmNuYW1lKTsKIAogCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHFyeSwgIlNFVCBjbGllbnRfZW5jb2RpbmcgPSAiKTsKIAlhcHBlbmRTdHJp bmdMaXRlcmFsQUgocXJ5LCBlbmNuYW1lLCBBSCk7CkBAIC0zMDU0LDkgKzMwNDgsOCBAQCBk dW1wU3RkU3RyaW5ncyhBcmNoaXZlICpBSCkKIAljb25zdCBjaGFyICpzdGRzdHJpbmdzID0g QUgtPnN0ZF9zdHJpbmdzID8gIm9uIiA6ICJvZmYiOwogCVBRRXhwQnVmZmVyIHFyeSA9IGNy ZWF0ZVBRRXhwQnVmZmVyKCk7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVM TCwgInNhdmluZyBzdGFuZGFyZF9jb25mb3JtaW5nX3N0cmluZ3MgPSAlc1xuIiwKLQkJCQkg IHN0ZHN0cmluZ3MpOworCXBnX2xvZ19pbmZvKCJzYXZpbmcgc3RhbmRhcmRfY29uZm9ybWlu Z19zdHJpbmdzID0gJXMiLAorCQkJCXN0ZHN0cmluZ3MpOwogCiAJYXBwZW5kUFFFeHBCdWZm ZXIocXJ5LCAiU0VUIHN0YW5kYXJkX2NvbmZvcm1pbmdfc3RyaW5ncyA9ICclcyc7XG4iLAog CQkJCQkgIHN0ZHN0cmluZ3MpOwpAQCAtMzA5NCw3ICszMDg3LDcgQEAgZHVtcFNlYXJjaFBh dGgoQXJjaGl2ZSAqQUgpCiAJCQkJCQkJCQkgICJTRUxFQ1QgcGdfY2F0YWxvZy5jdXJyZW50 X3NjaGVtYXMoZmFsc2UpIik7CiAKIAlpZiAoIXBhcnNlUEdBcnJheShQUWdldHZhbHVlKHJl cywgMCwgMCksICZzY2hlbWFuYW1lcywgJm5zY2hlbWFuYW1lcykpCi0JCWV4aXRfaG9ycmli bHkoTlVMTCwgImNvdWxkIG5vdCBwYXJzZSByZXN1bHQgb2YgY3VycmVudF9zY2hlbWFzKClc biIpOworCQlmYXRhbCgiY291bGQgbm90IHBhcnNlIHJlc3VsdCBvZiBjdXJyZW50X3NjaGVt YXMoKSIpOwogCiAJLyoKIAkgKiBXZSB1c2Ugc2V0X2NvbmZpZygpLCBub3QgYSBzaW1wbGUg IlNFVCBzZWFyY2hfcGF0aCIgY29tbWFuZCwgYmVjYXVzZQpAQCAtMzExMyw4ICszMTA2LDcg QEAgZHVtcFNlYXJjaFBhdGgoQXJjaGl2ZSAqQUgpCiAJYXBwZW5kU3RyaW5nTGl0ZXJhbEFI KHFyeSwgcGF0aC0+ZGF0YSwgQUgpOwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHFyeSwgIiwg ZmFsc2UpO1xuIik7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInNh dmluZyBzZWFyY2hfcGF0aCA9ICVzXG4iLCBwYXRoLT5kYXRhKTsKKwlwZ19sb2dfaW5mbygi c2F2aW5nIHNlYXJjaF9wYXRoID0gJXMiLCBwYXRoLT5kYXRhKTsKIAogCUFyY2hpdmVFbnRy eShBSCwgbmlsQ2F0YWxvZ0lkLCBjcmVhdGVEdW1wSWQoKSwKIAkJCQkgQVJDSElWRV9PUFRT KC50YWcgPSAiU0VBUkNIUEFUSCIsCkBAIC0zMTU0LDkgKzMxNDYsNyBAQCBnZXRCbG9icyhB cmNoaXZlICpmb3V0KQogCWludAkJCWlfaW5pdGxvbWFjbDsKIAlpbnQJCQlpX2luaXRybG9t YWNsOwogCi0JLyogVmVyYm9zZSBtZXNzYWdlICovCi0JaWYgKGdfdmVyYm9zZSkKLQkJd3Jp dGVfbXNnKE5VTEwsICJyZWFkaW5nIGxhcmdlIG9iamVjdHNcbiIpOworCXBnX2xvZ19pbmZv KCJyZWFkaW5nIGxhcmdlIG9iamVjdHMiKTsKIAogCS8qIEZldGNoIEJMT0IgT0lEcywgYW5k IG93bmVyL0FDTCBkYXRhIGlmID49IDkuMCAqLwogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9u ID49IDkwNjAwKQpAQCAtMzMzOCw4ICszMzI4LDcgQEAgZHVtcEJsb2JzKEFyY2hpdmUgKmZv dXQsIHZvaWQgKmFyZykKIAlpbnQJCQlpOwogCWludAkJCWNudDsKIAotCWlmIChnX3ZlcmJv c2UpCi0JCXdyaXRlX21zZyhOVUxMLCAic2F2aW5nIGxhcmdlIG9iamVjdHNcbiIpOworCXBn X2xvZ19pbmZvKCJzYXZpbmcgbGFyZ2Ugb2JqZWN0cyIpOwogCiAJLyoKIAkgKiBDdXJyZW50 bHksIHdlIHJlLWZldGNoIGFsbCBCTE9CIE9JRHMgdXNpbmcgYSBjdXJzb3IuICBDb25zaWRl ciBzY2FubmluZwpAQCAtMzM3NSw3ICszMzY0LDcgQEAgZHVtcEJsb2JzKEFyY2hpdmUgKmZv dXQsIHZvaWQgKmFyZykKIAkJCS8qIE9wZW4gdGhlIEJMT0IgKi8KIAkJCWxvRmQgPSBsb19v cGVuKGNvbm4sIGJsb2JPaWQsIElOVl9SRUFEKTsKIAkJCWlmIChsb0ZkID09IC0xKQotCQkJ CWV4aXRfaG9ycmlibHkoTlVMTCwgImNvdWxkIG5vdCBvcGVuIGxhcmdlIG9iamVjdCAldTog JXMiLAorCQkJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBsYXJnZSBvYmplY3QgJXU6ICVzIiwK IAkJCQkJCQkgIGJsb2JPaWQsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAogCQkJU3RhcnRC bG9iKGZvdXQsIGJsb2JPaWQpOwpAQCAtMzM4NSw3ICszMzc0LDcgQEAgZHVtcEJsb2JzKEFy Y2hpdmUgKmZvdXQsIHZvaWQgKmFyZykKIAkJCXsKIAkJCQljbnQgPSBsb19yZWFkKGNvbm4s IGxvRmQsIGJ1ZiwgTE9CQlVGU0laRSk7CiAJCQkJaWYgKGNudCA8IDApCi0JCQkJCWV4aXRf aG9ycmlibHkoTlVMTCwgImVycm9yIHJlYWRpbmcgbGFyZ2Ugb2JqZWN0ICV1OiAlcyIsCisJ CQkJCWZhdGFsKCJlcnJvciByZWFkaW5nIGxhcmdlIG9iamVjdCAldTogJXMiLAogCQkJCQkJ CQkgIGJsb2JPaWQsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAogCQkJCVdyaXRlRGF0YShm b3V0LCBidWYsIGNudCk7CkBAIC0zNDM3LDEwICszNDI2LDkgQEAgZ2V0UG9saWNpZXMoQXJj aGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJaWYg KCEodGJpbmZvLT5kb2JqLmR1bXAgJiBEVU1QX0NPTVBPTkVOVF9QT0xJQ1kpKQogCQkJY29u dGludWU7CiAKLQkJaWYgKGdfdmVyYm9zZSkKLQkJCXdyaXRlX21zZyhOVUxMLCAicmVhZGlu ZyByb3cgc2VjdXJpdHkgZW5hYmxlZCBmb3IgdGFibGUgXCIlcy4lc1wiXG4iLAotCQkJCQkg IHRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKLQkJCQkJICB0YmluZm8tPmRv YmoubmFtZSk7CisJCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHJvdyBzZWN1cml0eSBlbmFibGVk IGZvciB0YWJsZSBcIiVzLiVzXCIiLAorCQkJCQl0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5k b2JqLm5hbWUsCisJCQkJCXRiaW5mby0+ZG9iai5uYW1lKTsKIAogCQkvKgogCQkgKiBHZXQg cm93IHNlY3VyaXR5IGVuYWJsZWQgaW5mb3JtYXRpb24gZm9yIHRoZSB0YWJsZS4gV2UgcmVw cmVzZW50CkBAIC0zNDY5LDEwICszNDU3LDkgQEAgZ2V0UG9saWNpZXMoQXJjaGl2ZSAqZm91 dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJCXBvbGluZm8tPnBv bHdpdGhjaGVjayA9IE5VTEw7CiAJCX0KIAotCQlpZiAoZ192ZXJib3NlKQotCQkJd3JpdGVf bXNnKE5VTEwsICJyZWFkaW5nIHBvbGljaWVzIGZvciB0YWJsZSBcIiVzLiVzXCJcbiIsCi0J CQkJCSAgdGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLAotCQkJCQkgIHRiaW5m by0+ZG9iai5uYW1lKTsKKwkJcGdfbG9nX2luZm8oInJlYWRpbmcgcG9saWNpZXMgZm9yIHRh YmxlIFwiJXMuJXNcIiIsCisJCQkJCXRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFt ZSwKKwkJCQkJdGJpbmZvLT5kb2JqLm5hbWUpOwogCiAJCXJlc2V0UFFFeHBCdWZmZXIocXVl cnkpOwogCkBAIC0zNjIwLDcgKzM2MDcsNyBAQCBkdW1wUG9saWN5KEFyY2hpdmUgKmZvdXQs IFBvbGljeUluZm8gKnBvbGluZm8pCiAJCWNtZCA9ICIgRk9SIERFTEVURSI7CiAJZWxzZQog CXsKLQkJd3JpdGVfbXNnKE5VTEwsICJ1bmV4cGVjdGVkIHBvbGljeSBjb21tYW5kIHR5cGU6 ICVjXG4iLAorCQlwZ19sb2dfZXJyb3IoInVuZXhwZWN0ZWQgcG9saWN5IGNvbW1hbmQgdHlw ZTogJWMiLAogCQkJCSAgcG9saW5mby0+cG9sY21kKTsKIAkJZXhpdF9uaWNlbHkoMSk7CiAJ fQpAQCAtMzc0Nyw3ICszNzM0LDcgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQp CiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YnRydW5jYXRlKSwgInQiKSA9 PSAwKTsKIAogCQlpZiAoc3RybGVuKHB1YmluZm9baV0ucm9sbmFtZSkgPT0gMCkKLQkJCXdy aXRlX21zZyhOVUxMLCAiV0FSTklORzogb3duZXIgb2YgcHVibGljYXRpb24gXCIlc1wiIGFw cGVhcnMgdG8gYmUgaW52YWxpZFxuIiwKKwkJCXBnX2xvZ193YXJuaW5nKCJvd25lciBvZiBw dWJsaWNhdGlvbiBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlkIiwKIAkJCQkJICBwdWJp bmZvW2ldLmRvYmoubmFtZSk7CiAKIAkJLyogRGVjaWRlIHdoZXRoZXIgd2Ugd2FudCB0byBk dW1wIGl0ICovCkBAIC0zODg0LDEwICszODcxLDkgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMo QXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJ aWYgKCEodGJpbmZvLT5kb2JqLmR1bXAgJiBEVU1QX0NPTVBPTkVOVF9ERUZJTklUSU9OKSkK IAkJCWNvbnRpbnVlOwogCi0JCWlmIChnX3ZlcmJvc2UpCi0JCQl3cml0ZV9tc2coTlVMTCwg InJlYWRpbmcgcHVibGljYXRpb24gbWVtYmVyc2hpcCBmb3IgdGFibGUgXCIlcy4lc1wiXG4i LAotCQkJCQkgIHRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKLQkJCQkJICB0 YmluZm8tPmRvYmoubmFtZSk7CisJCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHB1YmxpY2F0aW9u IG1lbWJlcnNoaXAgZm9yIHRhYmxlIFwiJXMuJXNcIiIsCisJCQkJCXRiaW5mby0+ZG9iai5u YW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJdGJpbmZvLT5kb2JqLm5hbWUpOwogCiAJCXJl c2V0UFFFeHBCdWZmZXIocXVlcnkpOwogCkBAIC00MDI4LDcgKzQwMTQsNyBAQCBnZXRTdWJz Y3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJCQkJCQkJICBQR1JFU19UVVBMRVNfT0spOwog CQluID0gYXRvaShQUWdldHZhbHVlKHJlcywgMCwgMCkpOwogCQlpZiAobiA+IDApCi0JCQl3 cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IHN1YnNjcmlwdGlvbnMgbm90IGR1bXBlZCBiZWNh dXNlIGN1cnJlbnQgdXNlciBpcyBub3QgYSBzdXBlcnVzZXJcbiIpOworCQkJcGdfbG9nX3dh cm5pbmcoInN1YnNjcmlwdGlvbnMgbm90IGR1bXBlZCBiZWNhdXNlIGN1cnJlbnQgdXNlciBp cyBub3QgYSBzdXBlcnVzZXIiKTsKIAkJUFFjbGVhcihyZXMpOwogCQlyZXR1cm47CiAJfQpA QCAtNDA4Miw3ICs0MDY4LDcgQEAgZ2V0U3Vic2NyaXB0aW9ucyhBcmNoaXZlICpmb3V0KQog CQkJcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3N1YnB1YmxpY2F0aW9ucykpOwog CiAJCWlmIChzdHJsZW4oc3ViaW5mb1tpXS5yb2xuYW1lKSA9PSAwKQotCQkJd3JpdGVfbXNn KE5VTEwsICJXQVJOSU5HOiBvd25lciBvZiBzdWJzY3JpcHRpb24gXCIlc1wiIGFwcGVhcnMg dG8gYmUgaW52YWxpZFxuIiwKKwkJCXBnX2xvZ193YXJuaW5nKCJvd25lciBvZiBzdWJzY3Jp cHRpb24gXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZCIsCiAJCQkJCSAgc3ViaW5mb1tp XS5kb2JqLm5hbWUpOwogCiAJCS8qIERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBp dCAqLwpAQCAtNDEyNiw4ICs0MTEyLDcgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpm b3V0LCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQogCS8qIEJ1aWxkIGxpc3Qgb2YgcXVv dGVkIHB1YmxpY2F0aW9ucyBhbmQgYXBwZW5kIHRoZW0gdG8gcXVlcnkuICovCiAJaWYgKCFw YXJzZVBHQXJyYXkoc3ViaW5mby0+c3VicHVibGljYXRpb25zLCAmcHVibmFtZXMsICZucHVi bmFtZXMpKQogCXsKLQkJd3JpdGVfbXNnKE5VTEwsCi0JCQkJICAiV0FSTklORzogY291bGQg bm90IHBhcnNlIHN1YnB1YmxpY2F0aW9ucyBhcnJheVxuIik7CisJCXBnX2xvZ193YXJuaW5n KCJjb3VsZCBub3QgcGFyc2Ugc3VicHVibGljYXRpb25zIGFycmF5Iik7CiAJCWlmIChwdWJu YW1lcykKIAkJCWZyZWUocHVibmFtZXMpOwogCQlwdWJuYW1lcyA9IE5VTEw7CkBAIC00Mzkz LDcgKzQzNzgsNyBAQCBiaW5hcnlfdXBncmFkZV9leHRlbnNpb25fbWVtYmVyKFBRRXhwQnVm ZmVyIHVwZ3JhZGVfYnVmZmVyLAogCQlleHRvYmogPSBOVUxMOwogCX0KIAlpZiAoZXh0b2Jq ID09IE5VTEwpCi0JCWV4aXRfaG9ycmlibHkoTlVMTCwgImNvdWxkIG5vdCBmaW5kIHBhcmVu dCBleHRlbnNpb24gZm9yICVzICVzXG4iLAorCQlmYXRhbCgiY291bGQgbm90IGZpbmQgcGFy ZW50IGV4dGVuc2lvbiBmb3IgJXMgJXMiLAogCQkJCQkgIG9ianR5cGUsIG9iam5hbWUpOwog CiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIodXBncmFkZV9idWZmZXIsCkBAIC00NTI1LDcgKzQ1 MTAsNyBAQCBnZXROYW1lc3BhY2VzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtTmFtZXNwYWNl cykKIAkJCW5zaW5mb1tpXS5kb2JqLmR1bXAgJj0gfkRVTVBfQ09NUE9ORU5UX0FDTDsKIAog CQlpZiAoc3RybGVuKG5zaW5mb1tpXS5yb2xuYW1lKSA9PSAwKQotCQkJd3JpdGVfbXNnKE5V TEwsICJXQVJOSU5HOiBvd25lciBvZiBzY2hlbWEgXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52 YWxpZFxuIiwKKwkJCXBnX2xvZ193YXJuaW5nKCJvd25lciBvZiBzY2hlbWEgXCIlc1wiIGFw cGVhcnMgdG8gYmUgaW52YWxpZCIsCiAJCQkJCSAgbnNpbmZvW2ldLmRvYmoubmFtZSk7CiAJ fQogCkBAIC00NTQ4LDcgKzQ1MzMsNyBAQCBmaW5kTmFtZXNwYWNlKEFyY2hpdmUgKmZvdXQs IE9pZCBuc29pZCkKIAogCW5zaW5mbyA9IGZpbmROYW1lc3BhY2VCeU9pZChuc29pZCk7CiAJ aWYgKG5zaW5mbyA9PSBOVUxMKQotCQlleGl0X2hvcnJpYmx5KE5VTEwsICJzY2hlbWEgd2l0 aCBPSUQgJXUgZG9lcyBub3QgZXhpc3RcbiIsIG5zb2lkKTsKKwkJZmF0YWwoInNjaGVtYSB3 aXRoIE9JRCAldSBkb2VzIG5vdCBleGlzdCIsIG5zb2lkKTsKIAlyZXR1cm4gbnNpbmZvOwog fQogCkBAIC00ODczLDcgKzQ4NTgsNyBAQCBnZXRUeXBlcyhBcmNoaXZlICpmb3V0LCBpbnQg Km51bVR5cGVzKQogCQl9CiAKIAkJaWYgKHN0cmxlbih0eWluZm9baV0ucm9sbmFtZSkgPT0g MCkKLQkJCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzogb3duZXIgb2YgZGF0YSB0eXBlIFwi JXNcIiBhcHBlYXJzIHRvIGJlIGludmFsaWRcbiIsCisJCQlwZ19sb2dfd2FybmluZygib3du ZXIgb2YgZGF0YSB0eXBlIFwiJXNcIiBhcHBlYXJzIHRvIGJlIGludmFsaWQiLAogCQkJCQkg IHR5aW5mb1tpXS5kb2JqLm5hbWUpOwogCX0KIApAQCAtNDk1OCw3ICs0OTQzLDcgQEAgZ2V0 T3BlcmF0b3JzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtT3BycykKIAkJb3ByaW5mb1tpXS5k b2JqLmR1bXAgJj0gfkRVTVBfQ09NUE9ORU5UX0FDTDsKIAogCQlpZiAoc3RybGVuKG9wcmlu Zm9baV0ucm9sbmFtZSkgPT0gMCkKLQkJCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzogb3du ZXIgb2Ygb3BlcmF0b3IgXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZFxuIiwKKwkJCXBn X2xvZ193YXJuaW5nKCJvd25lciBvZiBvcGVyYXRvciBcIiVzXCIgYXBwZWFycyB0byBiZSBp bnZhbGlkIiwKIAkJCQkJICBvcHJpbmZvW2ldLmRvYmoubmFtZSk7CiAJfQogCkBAIC01MjYw LDcgKzUyNDUsNyBAQCBnZXRPcGNsYXNzZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1PcGNs YXNzZXMpCiAJCW9wY2luZm9baV0uZG9iai5kdW1wICY9IH5EVU1QX0NPTVBPTkVOVF9BQ0w7 CiAKIAkJaWYgKHN0cmxlbihvcGNpbmZvW2ldLnJvbG5hbWUpID09IDApCi0JCQl3cml0ZV9t c2coTlVMTCwgIldBUk5JTkc6IG93bmVyIG9mIG9wZXJhdG9yIGNsYXNzIFwiJXNcIiBhcHBl YXJzIHRvIGJlIGludmFsaWRcbiIsCisJCQlwZ19sb2dfd2FybmluZygib3duZXIgb2Ygb3Bl cmF0b3IgY2xhc3MgXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZCIsCiAJCQkJCSAgb3Bj aW5mb1tpXS5kb2JqLm5hbWUpOwogCX0KIApAQCAtNTM0NCw3ICs1MzI5LDcgQEAgZ2V0T3Bm YW1pbGllcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bU9wZmFtaWxpZXMpCiAJCW9wZmluZm9b aV0uZG9iai5kdW1wICY9IH5EVU1QX0NPTVBPTkVOVF9BQ0w7CiAKIAkJaWYgKHN0cmxlbihv cGZpbmZvW2ldLnJvbG5hbWUpID09IDApCi0JCQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6 IG93bmVyIG9mIG9wZXJhdG9yIGZhbWlseSBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlk XG4iLAorCQkJcGdfbG9nX3dhcm5pbmcoIm93bmVyIG9mIG9wZXJhdG9yIGZhbWlseSBcIiVz XCIgYXBwZWFycyB0byBiZSBpbnZhbGlkIiwKIAkJCQkJICBvcGZpbmZvW2ldLmRvYmoubmFt ZSk7CiAJfQogCkBAIC01NTEzLDcgKzU0OTgsNyBAQCBnZXRBZ2dyZWdhdGVzKEFyY2hpdmUg KmZvdXQsIGludCAqbnVtQWdncykKIAkJCQkJCSAgYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBp LCBpX2FnZ25hbWVzcGFjZSkpKTsKIAkJYWdnaW5mb1tpXS5hZ2dmbi5yb2xuYW1lID0gcGdf c3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JvbG5hbWUpKTsKIAkJaWYgKHN0cmxlbihh Z2dpbmZvW2ldLmFnZ2ZuLnJvbG5hbWUpID09IDApCi0JCQl3cml0ZV9tc2coTlVMTCwgIldB Uk5JTkc6IG93bmVyIG9mIGFnZ3JlZ2F0ZSBmdW5jdGlvbiBcIiVzXCIgYXBwZWFycyB0byBi ZSBpbnZhbGlkXG4iLAorCQkJcGdfbG9nX3dhcm5pbmcoIm93bmVyIG9mIGFnZ3JlZ2F0ZSBm dW5jdGlvbiBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlkIiwKIAkJCQkJICBhZ2dpbmZv W2ldLmFnZ2ZuLmRvYmoubmFtZSk7CiAJCWFnZ2luZm9baV0uYWdnZm4ubGFuZyA9IEludmFs aWRPaWQ7IC8qIG5vdCBjdXJyZW50bHkgaW50ZXJlc3RpbmcgKi8KIAkJYWdnaW5mb1tpXS5h Z2dmbi5wcm9yZXR0eXBlID0gSW52YWxpZE9pZDsJLyogbm90IHNhdmVkICovCkBAIC01Nzcz LDggKzU3NTgsNyBAQCBnZXRGdW5jcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bUZ1bmNzKQog CQkJZmluZm9baV0uZG9iai5kdW1wICY9IH5EVU1QX0NPTVBPTkVOVF9BQ0w7CiAKIAkJaWYg KHN0cmxlbihmaW5mb1tpXS5yb2xuYW1lKSA9PSAwKQotCQkJd3JpdGVfbXNnKE5VTEwsCi0J CQkJCSAgIldBUk5JTkc6IG93bmVyIG9mIGZ1bmN0aW9uIFwiJXNcIiBhcHBlYXJzIHRvIGJl IGludmFsaWRcbiIsCisJCQlwZ19sb2dfd2FybmluZygib3duZXIgb2YgZnVuY3Rpb24gXCIl c1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZCIsCiAJCQkJCSAgZmluZm9baV0uZG9iai5uYW1l KTsKIAl9CiAKQEAgLTY1NTgsNyArNjU0Miw3IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0 LCBpbnQgKm51bVRhYmxlcykKIAogCQkvKiBFbWl0IG5vdGljZSBpZiBqb2luIGZvciBvd25l ciBmYWlsZWQgKi8KIAkJaWYgKHN0cmxlbih0YmxpbmZvW2ldLnJvbG5hbWUpID09IDApCi0J CQl3cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IG93bmVyIG9mIHRhYmxlIFwiJXNcIiBhcHBl YXJzIHRvIGJlIGludmFsaWRcbiIsCisJCQlwZ19sb2dfd2FybmluZygib3duZXIgb2YgdGFi bGUgXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZCIsCiAJCQkJCSAgdGJsaW5mb1tpXS5k b2JqLm5hbWUpOwogCX0KIApAQCAtNjYwMCw3ICs2NTg0LDcgQEAgZ2V0T3duZWRTZXFzKEFy Y2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAKIAkJ b3duaW5nX3RhYiA9IGZpbmRUYWJsZUJ5T2lkKHNlcWluZm8tPm93bmluZ190YWIpOwogCQlp ZiAob3duaW5nX3RhYiA9PSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseShOVUxMLCAiZmFpbGVk IHNhbml0eSBjaGVjaywgcGFyZW50IHRhYmxlIHdpdGggT0lEICV1IG9mIHNlcXVlbmNlIHdp dGggT0lEICV1IG5vdCBmb3VuZFxuIiwKKwkJCWZhdGFsKCJmYWlsZWQgc2FuaXR5IGNoZWNr LCBwYXJlbnQgdGFibGUgd2l0aCBPSUQgJXUgb2Ygc2VxdWVuY2Ugd2l0aCBPSUQgJXUgbm90 IGZvdW5kIiwKIAkJCQkJCSAgc2VxaW5mby0+b3duaW5nX3RhYiwgc2VxaW5mby0+ZG9iai5j YXRJZC5vaWQpOwogCiAJCS8qCkBAIC02NzQ0LDEwICs2NzI4LDkgQEAgZ2V0SW5kZXhlcyhB cmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJ IXRiaW5mby0+aW50ZXJlc3RpbmcpCiAJCQljb250aW51ZTsKIAotCQlpZiAoZ192ZXJib3Nl KQotCQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5nIGluZGV4ZXMgZm9yIHRhYmxlIFwiJXMu JXNcIlxuIiwKLQkJCQkJICB0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUsCi0J CQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUpOworCQlwZ19sb2dfaW5mbygicmVhZGluZyBpbmRl eGVzIGZvciB0YWJsZSBcIiVzLiVzXCIiLAorCQkJCQl0YmluZm8tPmRvYmoubmFtZXNwYWNl LT5kb2JqLm5hbWUsCisJCQkJCXRiaW5mby0+ZG9iai5uYW1lKTsKIAogCQkvKgogCQkgKiBU aGUgcG9pbnQgb2YgdGhlIG1lc3N5LWxvb2tpbmcgb3V0ZXIgam9pbiBpcyB0byBmaW5kIGEg Y29uc3RyYWludApAQCAtNzE0NiwxMCArNzEyOSw5IEBAIGdldENvbnN0cmFpbnRzKEFyY2hp dmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJCQkhKHRi aW5mby0+ZG9iai5kdW1wICYgRFVNUF9DT01QT05FTlRfREVGSU5JVElPTikpCiAJCQljb250 aW51ZTsKIAotCQlpZiAoZ192ZXJib3NlKQotCQkJd3JpdGVfbXNnKE5VTEwsICJyZWFkaW5n IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzIGZvciB0YWJsZSBcIiVzLiVzXCJcbiIsCi0JCQkJ CSAgdGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLAotCQkJCQkgIHRiaW5mby0+ ZG9iai5uYW1lKTsKKwkJcGdfbG9nX2luZm8oInJlYWRpbmcgZm9yZWlnbiBrZXkgY29uc3Ry YWludHMgZm9yIHRhYmxlIFwiJXMuJXNcIiIsCisJCQkJCXRiaW5mby0+ZG9iai5uYW1lc3Bh Y2UtPmRvYmoubmFtZSwKKwkJCQkJdGJpbmZvLT5kb2JqLm5hbWUpOwogCiAJCXJlc2V0UFFF eHBCdWZmZXIocXVlcnkpOwogCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxMTAwMDAp CkBAIC03MzY2LDcgKzczNDgsNyBAQCBnZXRSdWxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51 bVJ1bGVzKQogCQlydWxldGFibGVvaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGksIGlf cnVsZXRhYmxlKSk7CiAJCXJ1bGVpbmZvW2ldLnJ1bGV0YWJsZSA9IGZpbmRUYWJsZUJ5T2lk KHJ1bGV0YWJsZW9pZCk7CiAJCWlmIChydWxlaW5mb1tpXS5ydWxldGFibGUgPT0gTlVMTCkK LQkJCWV4aXRfaG9ycmlibHkoTlVMTCwgImZhaWxlZCBzYW5pdHkgY2hlY2ssIHBhcmVudCB0 YWJsZSB3aXRoIE9JRCAldSBvZiBwZ19yZXdyaXRlIGVudHJ5IHdpdGggT0lEICV1IG5vdCBm b3VuZFxuIiwKKwkJCWZhdGFsKCJmYWlsZWQgc2FuaXR5IGNoZWNrLCBwYXJlbnQgdGFibGUg d2l0aCBPSUQgJXUgb2YgcGdfcmV3cml0ZSBlbnRyeSB3aXRoIE9JRCAldSBub3QgZm91bmQi LAogCQkJCQkJICBydWxldGFibGVvaWQsIHJ1bGVpbmZvW2ldLmRvYmouY2F0SWQub2lkKTsK IAkJcnVsZWluZm9baV0uZG9iai5uYW1lc3BhY2UgPSBydWxlaW5mb1tpXS5ydWxldGFibGUt PmRvYmoubmFtZXNwYWNlOwogCQlydWxlaW5mb1tpXS5kb2JqLmR1bXAgPSBydWxlaW5mb1tp XS5ydWxldGFibGUtPmRvYmouZHVtcDsKQEAgLTc0NDksMTAgKzc0MzEsOSBAQCBnZXRUcmln Z2VycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVz KQogCQkJISh0YmluZm8tPmRvYmouZHVtcCAmIERVTVBfQ09NUE9ORU5UX0RFRklOSVRJT04p KQogCQkJY29udGludWU7CiAKLQkJaWYgKGdfdmVyYm9zZSkKLQkJCXdyaXRlX21zZyhOVUxM LCAicmVhZGluZyB0cmlnZ2VycyBmb3IgdGFibGUgXCIlcy4lc1wiXG4iLAotCQkJCQkgIHRi aW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKLQkJCQkJICB0YmluZm8tPmRvYmou bmFtZSk7CisJCXBnX2xvZ19pbmZvKCJyZWFkaW5nIHRyaWdnZXJzIGZvciB0YWJsZSBcIiVz LiVzXCIiLAorCQkJCQl0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUsCisJCQkJ CXRiaW5mby0+ZG9iai5uYW1lKTsKIAogCQlyZXNldFBRRXhwQnVmZmVyKHF1ZXJ5KTsKIAkJ aWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gOTAwMDApCkBAIC03NTgzLDcgKzc1NjQsNyBA QCBnZXRUcmlnZ2VycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQg bnVtVGFibGVzKQogCQkJCQlpZiAoT2lkSXNWYWxpZCh0Z2luZm9bal0udGdjb25zdHJyZWxp ZCkpCiAJCQkJCXsKIAkJCQkJCWlmIChQUWdldGlzbnVsbChyZXMsIGosIGlfdGdjb25zdHJy ZWxuYW1lKSkKLQkJCQkJCQlleGl0X2hvcnJpYmx5KE5VTEwsICJxdWVyeSBwcm9kdWNlZCBu dWxsIHJlZmVyZW5jZWQgdGFibGUgbmFtZSBmb3IgZm9yZWlnbiBrZXkgdHJpZ2dlciBcIiVz XCIgb24gdGFibGUgXCIlc1wiIChPSUQgb2YgdGFibGU6ICV1KVxuIiwKKwkJCQkJCQlmYXRh bCgicXVlcnkgcHJvZHVjZWQgbnVsbCByZWZlcmVuY2VkIHRhYmxlIG5hbWUgZm9yIGZvcmVp Z24ga2V5IHRyaWdnZXIgXCIlc1wiIG9uIHRhYmxlIFwiJXNcIiAoT0lEIG9mIHRhYmxlOiAl dSkiLAogCQkJCQkJCQkJCSAgdGdpbmZvW2pdLmRvYmoubmFtZSwKIAkJCQkJCQkJCQkgIHRi aW5mby0+ZG9iai5uYW1lLAogCQkJCQkJCQkJCSAgdGdpbmZvW2pdLnRnY29uc3RycmVsaWQp OwpAQCAtODEzNywxMCArODExOCw5IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwg VGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkgKiB3ZSBtdXN0IHJlYWQg dGhlIGF0dHJpYnV0ZSBuYW1lcyBpbiBhdHRyaWJ1dGUgbnVtYmVyIG9yZGVyISBiZWNhdXNl CiAJCSAqIHdlIHdpbGwgdXNlIHRoZSBhdHRudW0gdG8gaW5kZXggaW50byB0aGUgYXR0bmFt ZXMgYXJyYXkgbGF0ZXIuCiAJCSAqLwotCQlpZiAoZ192ZXJib3NlKQotCQkJd3JpdGVfbXNn KE5VTEwsICJmaW5kaW5nIHRoZSBjb2x1bW5zIGFuZCB0eXBlcyBvZiB0YWJsZSBcIiVzLiVz XCJcbiIsCi0JCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLAotCQkJ CQkgIHRiaW5mby0+ZG9iai5uYW1lKTsKKwkJcGdfbG9nX2luZm8oImZpbmRpbmcgdGhlIGNv bHVtbnMgYW5kIHR5cGVzIG9mIHRhYmxlIFwiJXMuJXNcIiIsCisJCQkJCXRiaW5mby0+ZG9i ai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJdGJpbmZvLT5kb2JqLm5hbWUpOwogCiAJ CXJlc2V0UFFFeHBCdWZmZXIocSk7CiAKQEAgLTgyNjUsOCArODI0NSw3IEBAIGdldFRhYmxl QXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVz KQogCQlmb3IgKGogPSAwOyBqIDwgbnR1cHM7IGorKykKIAkJewogCQkJaWYgKGogKyAxICE9 IGF0b2koUFFnZXR2YWx1ZShyZXMsIGosIGlfYXR0bnVtKSkpCi0JCQkJZXhpdF9ob3JyaWJs eShOVUxMLAotCQkJCQkJCSAgImludmFsaWQgY29sdW1uIG51bWJlcmluZyBpbiB0YWJsZSBc IiVzXCJcbiIsCisJCQkJZmF0YWwoImludmFsaWQgY29sdW1uIG51bWJlcmluZyBpbiB0YWJs ZSBcIiVzXCIiLAogCQkJCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUpOwogCQkJdGJpbmZvLT5h dHRuYW1lc1tqXSA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwgaV9hdHRuYW1lKSk7 CiAJCQl0YmluZm8tPmF0dHR5cG5hbWVzW2pdID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVz LCBqLCBpX2F0dHR5cG5hbWUpKTsKQEAgLTgzMDIsMTAgKzgyODEsOSBAQCBnZXRUYWJsZUF0 dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykK IAkJCUF0dHJEZWZJbmZvICphdHRyZGVmczsKIAkJCWludAkJCW51bURlZmF1bHRzOwogCi0J CQlpZiAoZ192ZXJib3NlKQotCQkJCXdyaXRlX21zZyhOVUxMLCAiZmluZGluZyBkZWZhdWx0 IGV4cHJlc3Npb25zIG9mIHRhYmxlIFwiJXMuJXNcIlxuIiwKLQkJCQkJCSAgdGJpbmZvLT5k b2JqLm5hbWVzcGFjZS0+ZG9iai5uYW1lLAotCQkJCQkJICB0YmluZm8tPmRvYmoubmFtZSk7 CisJCQlwZ19sb2dfaW5mbygiZmluZGluZyBkZWZhdWx0IGV4cHJlc3Npb25zIG9mIHRhYmxl IFwiJXMuJXNcIiIsCisJCQkJCQl0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUs CisJCQkJCQl0YmluZm8tPmRvYmoubmFtZSk7CiAKIAkJCXByaW50ZlBRRXhwQnVmZmVyKHEs ICJTRUxFQ1QgdGFibGVvaWQsIG9pZCwgYWRudW0sICIKIAkJCQkJCQkgICJwZ19jYXRhbG9n LnBnX2dldF9leHByKGFkYmluLCBhZHJlbGlkKSBBUyBhZHNyYyAiCkBAIC04MzI1LDggKzgz MDMsNyBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5m bywgaW50IG51bVRhYmxlcykKIAkJCQlhZG51bSA9IGF0b2koUFFnZXR2YWx1ZShyZXMsIGos IDIpKTsKIAogCQkJCWlmIChhZG51bSA8PSAwIHx8IGFkbnVtID4gbnR1cHMpCi0JCQkJCWV4 aXRfaG9ycmlibHkoTlVMTCwKLQkJCQkJCQkJICAiaW52YWxpZCBhZG51bSB2YWx1ZSAlZCBm b3IgdGFibGUgXCIlc1wiXG4iLAorCQkJCQlmYXRhbCgiaW52YWxpZCBhZG51bSB2YWx1ZSAl ZCBmb3IgdGFibGUgXCIlc1wiIiwKIAkJCQkJCQkJICBhZG51bSwgdGJpbmZvLT5kb2JqLm5h bWUpOwogCiAJCQkJLyoKQEAgLTgzOTEsMTAgKzgzNjgsOSBAQCBnZXRUYWJsZUF0dHJzKEFy Y2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJCUNv bnN0cmFpbnRJbmZvICpjb25zdHJzOwogCQkJaW50CQkJbnVtQ29uc3RyczsKIAotCQkJaWYg KGdfdmVyYm9zZSkKLQkJCQl3cml0ZV9tc2coTlVMTCwgImZpbmRpbmcgY2hlY2sgY29uc3Ry YWludHMgZm9yIHRhYmxlIFwiJXMuJXNcIlxuIiwKLQkJCQkJCSAgdGJpbmZvLT5kb2JqLm5h bWVzcGFjZS0+ZG9iai5uYW1lLAotCQkJCQkJICB0YmluZm8tPmRvYmoubmFtZSk7CisJCQlw Z19sb2dfaW5mbygiZmluZGluZyBjaGVjayBjb25zdHJhaW50cyBmb3IgdGFibGUgXCIlcy4l c1wiIiwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJ CXRiaW5mby0+ZG9iai5uYW1lKTsKIAogCQkJcmVzZXRQUUV4cEJ1ZmZlcihxKTsKIAkJCWlm IChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDkwMjAwKQpAQCAtODQ0MSwxMSArODQxNywxMSBA QCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50 IG51bVRhYmxlcykKIAkJCW51bUNvbnN0cnMgPSBQUW50dXBsZXMocmVzKTsKIAkJCWlmIChu dW1Db25zdHJzICE9IHRiaW5mby0+bmNoZWNrKQogCQkJewotCQkJCXdyaXRlX21zZyhOVUxM LCBuZ2V0dGV4dCgiZXhwZWN0ZWQgJWQgY2hlY2sgY29uc3RyYWludCBvbiB0YWJsZSBcIiVz XCIgYnV0IGZvdW5kICVkXG4iLAotCQkJCQkJCQkJCSAiZXhwZWN0ZWQgJWQgY2hlY2sgY29u c3RyYWludHMgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZFxuIiwKLQkJCQkJCQkJCQkg dGJpbmZvLT5uY2hlY2spLAorCQkJCXBnX2xvZ19lcnJvcihuZ2V0dGV4dCgiZXhwZWN0ZWQg JWQgY2hlY2sgY29uc3RyYWludCBvbiB0YWJsZSBcIiVzXCIgYnV0IGZvdW5kICVkIiwKKwkJ CQkJCQkJCSAgImV4cGVjdGVkICVkIGNoZWNrIGNvbnN0cmFpbnRzIG9uIHRhYmxlIFwiJXNc IiBidXQgZm91bmQgJWQiLAorCQkJCQkJCQkJICB0YmluZm8tPm5jaGVjayksCiAJCQkJCQkg IHRiaW5mby0+bmNoZWNrLCB0YmluZm8tPmRvYmoubmFtZSwgbnVtQ29uc3Rycyk7Ci0JCQkJ d3JpdGVfbXNnKE5VTEwsICIoVGhlIHN5c3RlbSBjYXRhbG9ncyBtaWdodCBiZSBjb3JydXB0 ZWQuKVxuIik7CisJCQkJcGdfbG9nX2Vycm9yKCIoVGhlIHN5c3RlbSBjYXRhbG9ncyBtaWdo dCBiZSBjb3JydXB0ZWQuKSIpOwogCQkJCWV4aXRfbmljZWx5KDEpOwogCQkJfQogCkBAIC0x MDAyMSw3ICs5OTk3LDcgQEAgZHVtcFR5cGUoQXJjaGl2ZSAqZm91dCwgVHlwZUluZm8gKnR5 aW5mbykKIAllbHNlIGlmICh0eWluZm8tPnR5cHR5cGUgPT0gVFlQVFlQRV9QU0VVRE8gJiYg IXR5aW5mby0+aXNEZWZpbmVkKQogCQlkdW1wVW5kZWZpbmVkVHlwZShmb3V0LCB0eWluZm8p OwogCWVsc2UKLQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiB0eXB0eXBlIG9mIGRhdGEg dHlwZSBcIiVzXCIgYXBwZWFycyB0byBiZSBpbnZhbGlkXG4iLAorCQlwZ19sb2dfd2Fybmlu ZygidHlwdHlwZSBvZiBkYXRhIHR5cGUgXCIlc1wiIGFwcGVhcnMgdG8gYmUgaW52YWxpZCIs CiAJCQkJICB0eWluZm8tPmRvYmoubmFtZSk7CiB9CiAKQEAgLTExMzc1LDcgKzExMzUxLDcg QEAgZm9ybWF0X2Z1bmN0aW9uX2FyZ3VtZW50c19vbGQoQXJjaGl2ZSAqZm91dCwKIAkJCQkJ YXJnbW9kZSA9ICJJTk9VVCAiOwogCQkJCQlicmVhazsKIAkJCQlkZWZhdWx0OgotCQkJCQl3 cml0ZV9tc2coTlVMTCwgIldBUk5JTkc6IGJvZ3VzIHZhbHVlIGluIHByb2FyZ21vZGVzIGFy cmF5XG4iKTsKKwkJCQkJcGdfbG9nX3dhcm5pbmcoImJvZ3VzIHZhbHVlIGluIHByb2FyZ21v ZGVzIGFycmF5Iik7CiAJCQkJCWFyZ21vZGUgPSAiIjsKIAkJCQkJYnJlYWs7CiAJCQl9CkBA IC0xMTc0Nyw3ICsxMTcyMyw3IEBAIGR1bXBGdW5jKEFyY2hpdmUgKmZvdXQsIEZ1bmNJbmZv ICpmaW5mbykKIAkJaWYgKCFwYXJzZVBHQXJyYXkocHJvYWxsYXJndHlwZXMsICZhbGxhcmd0 eXBlcywgJm5pdGVtcykgfHwKIAkJCW5pdGVtcyA8IGZpbmZvLT5uYXJncykKIAkJewotCQkJ d3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiBjb3VsZCBub3QgcGFyc2UgcHJvYWxsYXJndHlw ZXMgYXJyYXlcbiIpOworCQkJcGdfbG9nX3dhcm5pbmcoImNvdWxkIG5vdCBwYXJzZSBwcm9h bGxhcmd0eXBlcyBhcnJheSIpOwogCQkJaWYgKGFsbGFyZ3R5cGVzKQogCQkJCWZyZWUoYWxs YXJndHlwZXMpOwogCQkJYWxsYXJndHlwZXMgPSBOVUxMOwpAQCAtMTE3NjMsNyArMTE3Mzks NyBAQCBkdW1wRnVuYyhBcmNoaXZlICpmb3V0LCBGdW5jSW5mbyAqZmluZm8pCiAJCWlmICgh cGFyc2VQR0FycmF5KHByb2FyZ21vZGVzLCAmYXJnbW9kZXMsICZuaXRlbXMpIHx8CiAJCQlu aXRlbXMgIT0gbmFsbGFyZ3MpCiAJCXsKLQkJCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzog Y291bGQgbm90IHBhcnNlIHByb2FyZ21vZGVzIGFycmF5XG4iKTsKKwkJCXBnX2xvZ193YXJu aW5nKCJjb3VsZCBub3QgcGFyc2UgcHJvYXJnbW9kZXMgYXJyYXkiKTsKIAkJCWlmIChhcmdt b2RlcykKIAkJCQlmcmVlKGFyZ21vZGVzKTsKIAkJCWFyZ21vZGVzID0gTlVMTDsKQEAgLTEx Nzc3LDcgKzExNzUzLDcgQEAgZHVtcEZ1bmMoQXJjaGl2ZSAqZm91dCwgRnVuY0luZm8gKmZp bmZvKQogCQlpZiAoIXBhcnNlUEdBcnJheShwcm9hcmduYW1lcywgJmFyZ25hbWVzLCAmbml0 ZW1zKSB8fAogCQkJbml0ZW1zICE9IG5hbGxhcmdzKQogCQl7Ci0JCQl3cml0ZV9tc2coTlVM TCwgIldBUk5JTkc6IGNvdWxkIG5vdCBwYXJzZSBwcm9hcmduYW1lcyBhcnJheVxuIik7CisJ CQlwZ19sb2dfd2FybmluZygiY291bGQgbm90IHBhcnNlIHByb2FyZ25hbWVzIGFycmF5Iik7 CiAJCQlpZiAoYXJnbmFtZXMpCiAJCQkJZnJlZShhcmduYW1lcyk7CiAJCQlhcmduYW1lcyA9 IE5VTEw7CkBAIC0xMTc4OCw3ICsxMTc2NCw3IEBAIGR1bXBGdW5jKEFyY2hpdmUgKmZvdXQs IEZ1bmNJbmZvICpmaW5mbykKIAl7CiAJCWlmICghcGFyc2VQR0FycmF5KHByb2NvbmZpZywg JmNvbmZpZ2l0ZW1zLCAmbmNvbmZpZ2l0ZW1zKSkKIAkJewotCQkJd3JpdGVfbXNnKE5VTEws ICJXQVJOSU5HOiBjb3VsZCBub3QgcGFyc2UgcHJvY29uZmlnIGFycmF5XG4iKTsKKwkJCXBn X2xvZ193YXJuaW5nKCJjb3VsZCBub3QgcGFyc2UgcHJvY29uZmlnIGFycmF5Iik7CiAJCQlp ZiAoY29uZmlnaXRlbXMpCiAJCQkJZnJlZShjb25maWdpdGVtcyk7CiAJCQljb25maWdpdGVt cyA9IE5VTEw7CkBAIC0xMTg2OCw3ICsxMTg0NCw3IEBAIGR1bXBGdW5jKEFyY2hpdmUgKmZv dXQsIEZ1bmNJbmZvICpmaW5mbykKIAkJZWxzZSBpZiAocHJvdm9sYXRpbGVbMF0gPT0gUFJP Vk9MQVRJTEVfU1RBQkxFKQogCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIiBTVEFCTEUi KTsKIAkJZWxzZSBpZiAocHJvdm9sYXRpbGVbMF0gIT0gUFJPVk9MQVRJTEVfVk9MQVRJTEUp Ci0JCQlleGl0X2hvcnJpYmx5KE5VTEwsICJ1bnJlY29nbml6ZWQgcHJvdm9sYXRpbGUgdmFs dWUgZm9yIGZ1bmN0aW9uIFwiJXNcIlxuIiwKKwkJCWZhdGFsKCJ1bnJlY29nbml6ZWQgcHJv dm9sYXRpbGUgdmFsdWUgZm9yIGZ1bmN0aW9uIFwiJXNcIiIsCiAJCQkJCQkgIGZpbmZvLT5k b2JqLm5hbWUpOwogCX0KIApAQCAtMTE5MTgsNyArMTE4OTQsNyBAQCBkdW1wRnVuYyhBcmNo aXZlICpmb3V0LCBGdW5jSW5mbyAqZmluZm8pCiAJCWVsc2UgaWYgKHByb3BhcmFsbGVsWzBd ID09IFBST1BBUkFMTEVMX1JFU1RSSUNURUQpCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx LCAiIFBBUkFMTEVMIFJFU1RSSUNURUQiKTsKIAkJZWxzZSBpZiAocHJvcGFyYWxsZWxbMF0g IT0gUFJPUEFSQUxMRUxfVU5TQUZFKQotCQkJZXhpdF9ob3JyaWJseShOVUxMLCAidW5yZWNv Z25pemVkIHByb3BhcmFsbGVsIHZhbHVlIGZvciBmdW5jdGlvbiBcIiVzXCJcbiIsCisJCQlm YXRhbCgidW5yZWNvZ25pemVkIHByb3BhcmFsbGVsIHZhbHVlIGZvciBmdW5jdGlvbiBcIiVz XCIiLAogCQkJCQkJICBmaW5mby0+ZG9iai5uYW1lKTsKIAl9CiAKQEAgLTEyMDUxLDcgKzEy MDI3LDcgQEAgZHVtcENhc3QoQXJjaGl2ZSAqZm91dCwgQ2FzdEluZm8gKmNhc3QpCiAJewog CQlmdW5jSW5mbyA9IGZpbmRGdW5jQnlPaWQoY2FzdC0+Y2FzdGZ1bmMpOwogCQlpZiAoZnVu Y0luZm8gPT0gTlVMTCkKLQkJCWV4aXRfaG9ycmlibHkoTlVMTCwgImNvdWxkIG5vdCBmaW5k IGZ1bmN0aW9uIGRlZmluaXRpb24gZm9yIGZ1bmN0aW9uIHdpdGggT0lEICV1XG4iLAorCQkJ ZmF0YWwoImNvdWxkIG5vdCBmaW5kIGZ1bmN0aW9uIGRlZmluaXRpb24gZm9yIGZ1bmN0aW9u IHdpdGggT0lEICV1IiwKIAkJCQkJCSAgY2FzdC0+Y2FzdGZ1bmMpOwogCX0KIApAQCAtMTIw OTAsMTAgKzEyMDY2LDEwIEBAIGR1bXBDYXN0KEFyY2hpdmUgKmZvdXQsIENhc3RJbmZvICpj YXN0KQogCQkJCWZyZWUoZnNpZyk7CiAJCQl9CiAJCQllbHNlCi0JCQkJd3JpdGVfbXNnKE5V TEwsICJXQVJOSU5HOiBib2d1cyB2YWx1ZSBpbiBwZ19jYXN0LmNhc3RmdW5jIG9yIHBnX2Nh c3QuY2FzdG1ldGhvZCBmaWVsZFxuIik7CisJCQkJcGdfbG9nX3dhcm5pbmcoImJvZ3VzIHZh bHVlIGluIHBnX2Nhc3QuY2FzdGZ1bmMgb3IgcGdfY2FzdC5jYXN0bWV0aG9kIGZpZWxkIik7 CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKLQkJCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzog Ym9ndXMgdmFsdWUgaW4gcGdfY2FzdC5jYXN0bWV0aG9kIGZpZWxkXG4iKTsKKwkJCXBnX2xv Z193YXJuaW5nKCJib2d1cyB2YWx1ZSBpbiBwZ19jYXN0LmNhc3RtZXRob2QgZmllbGQiKTsK IAl9CiAKIAlpZiAoY2FzdC0+Y2FzdGNvbnRleHQgPT0gJ2EnKQpAQCAtMTIxNjAsMTQgKzEy MTM2LDE0IEBAIGR1bXBUcmFuc2Zvcm0oQXJjaGl2ZSAqZm91dCwgVHJhbnNmb3JtSW5mbyAq dHJhbnNmb3JtKQogCXsKIAkJZnJvbXNxbEZ1bmNJbmZvID0gZmluZEZ1bmNCeU9pZCh0cmFu c2Zvcm0tPnRyZmZyb21zcWwpOwogCQlpZiAoZnJvbXNxbEZ1bmNJbmZvID09IE5VTEwpCi0J CQlleGl0X2hvcnJpYmx5KE5VTEwsICJjb3VsZCBub3QgZmluZCBmdW5jdGlvbiBkZWZpbml0 aW9uIGZvciBmdW5jdGlvbiB3aXRoIE9JRCAldVxuIiwKKwkJCWZhdGFsKCJjb3VsZCBub3Qg ZmluZCBmdW5jdGlvbiBkZWZpbml0aW9uIGZvciBmdW5jdGlvbiB3aXRoIE9JRCAldSIsCiAJ CQkJCQkgIHRyYW5zZm9ybS0+dHJmZnJvbXNxbCk7CiAJfQogCWlmIChPaWRJc1ZhbGlkKHRy YW5zZm9ybS0+dHJmdG9zcWwpKQogCXsKIAkJdG9zcWxGdW5jSW5mbyA9IGZpbmRGdW5jQnlP aWQodHJhbnNmb3JtLT50cmZ0b3NxbCk7CiAJCWlmICh0b3NxbEZ1bmNJbmZvID09IE5VTEwp Ci0JCQlleGl0X2hvcnJpYmx5KE5VTEwsICJjb3VsZCBub3QgZmluZCBmdW5jdGlvbiBkZWZp bml0aW9uIGZvciBmdW5jdGlvbiB3aXRoIE9JRCAldVxuIiwKKwkJCWZhdGFsKCJjb3VsZCBu b3QgZmluZCBmdW5jdGlvbiBkZWZpbml0aW9uIGZvciBmdW5jdGlvbiB3aXRoIE9JRCAldSIs CiAJCQkJCQkgIHRyYW5zZm9ybS0+dHJmdG9zcWwpOwogCX0KIApAQCAtMTIxODYsNyArMTIx NjIsNyBAQCBkdW1wVHJhbnNmb3JtKEFyY2hpdmUgKmZvdXQsIFRyYW5zZm9ybUluZm8gKnRy YW5zZm9ybSkKIAkJCQkJICB0cmFuc2Zvcm1UeXBlLCBsYW5uYW1lKTsKIAogCWlmICghdHJh bnNmb3JtLT50cmZmcm9tc3FsICYmICF0cmFuc2Zvcm0tPnRyZnRvc3FsKQotCQl3cml0ZV9t c2coTlVMTCwgIldBUk5JTkc6IGJvZ3VzIHRyYW5zZm9ybSBkZWZpbml0aW9uLCBhdCBsZWFz dCBvbmUgb2YgdHJmZnJvbXNxbCBhbmQgdHJmdG9zcWwgc2hvdWxkIGJlIG5vbnplcm9cbiIp OworCQlwZ19sb2dfd2FybmluZygiYm9ndXMgdHJhbnNmb3JtIGRlZmluaXRpb24sIGF0IGxl YXN0IG9uZSBvZiB0cmZmcm9tc3FsIGFuZCB0cmZ0b3NxbCBzaG91bGQgYmUgbm9uemVybyIp OwogCiAJaWYgKHRyYW5zZm9ybS0+dHJmZnJvbXNxbCkKIAl7CkBAIC0xMjIwMyw3ICsxMjE3 OSw3IEBAIGR1bXBUcmFuc2Zvcm0oQXJjaGl2ZSAqZm91dCwgVHJhbnNmb3JtSW5mbyAqdHJh bnNmb3JtKQogCQkJZnJlZShmc2lnKTsKIAkJfQogCQllbHNlCi0JCQl3cml0ZV9tc2coTlVM TCwgIldBUk5JTkc6IGJvZ3VzIHZhbHVlIGluIHBnX3RyYW5zZm9ybS50cmZmcm9tc3FsIGZp ZWxkXG4iKTsKKwkJCXBnX2xvZ193YXJuaW5nKCJib2d1cyB2YWx1ZSBpbiBwZ190cmFuc2Zv cm0udHJmZnJvbXNxbCBmaWVsZCIpOwogCX0KIAogCWlmICh0cmFuc2Zvcm0tPnRyZnRvc3Fs KQpAQCAtMTIyMjQsNyArMTIyMDAsNyBAQCBkdW1wVHJhbnNmb3JtKEFyY2hpdmUgKmZvdXQs IFRyYW5zZm9ybUluZm8gKnRyYW5zZm9ybSkKIAkJCWZyZWUoZnNpZyk7CiAJCX0KIAkJZWxz ZQotCQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiBib2d1cyB2YWx1ZSBpbiBwZ190cmFu c2Zvcm0udHJmdG9zcWwgZmllbGRcbiIpOworCQkJcGdfbG9nX3dhcm5pbmcoImJvZ3VzIHZh bHVlIGluIHBnX3RyYW5zZm9ybS50cmZ0b3NxbCBmaWVsZCIpOwogCX0KIAogCWFwcGVuZFBR RXhwQnVmZmVyKGRlZnFyeSwgIik7XG4iKTsKQEAgLTEyNTQwLDcgKzEyNTE2LDcgQEAgZ2V0 Rm9ybWF0dGVkT3BlcmF0b3JOYW1lKEFyY2hpdmUgKmZvdXQsIGNvbnN0IGNoYXIgKm9wcm9p ZCkKIAlvcHJJbmZvID0gZmluZE9wckJ5T2lkKGF0b29pZChvcHJvaWQpKTsKIAlpZiAob3By SW5mbyA9PSBOVUxMKQogCXsKLQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiBjb3VsZCBu b3QgZmluZCBvcGVyYXRvciB3aXRoIE9JRCAlc1xuIiwKKwkJcGdfbG9nX3dhcm5pbmcoImNv dWxkIG5vdCBmaW5kIG9wZXJhdG9yIHdpdGggT0lEICVzIiwKIAkJCQkgIG9wcm9pZCk7CiAJ CXJldHVybiBOVUxMOwogCX0KQEAgLTEyNjA1LDcgKzEyNTgxLDcgQEAgZHVtcEFjY2Vzc01l dGhvZChBcmNoaXZlICpmb3V0LCBBY2Nlc3NNZXRob2RJbmZvICphbWluZm8pCiAJCQlhcHBl bmRQUUV4cEJ1ZmZlcihxLCAiVFlQRSBJTkRFWCAiKTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0 OgotCQkJd3JpdGVfbXNnKE5VTEwsICJXQVJOSU5HOiBpbnZhbGlkIHR5cGUgXCIlY1wiIG9m IGFjY2VzcyBtZXRob2QgXCIlc1wiXG4iLAorCQkJcGdfbG9nX3dhcm5pbmcoImludmFsaWQg dHlwZSBcIiVjXCIgb2YgYWNjZXNzIG1ldGhvZCBcIiVzXCIiLAogCQkJCQkgIGFtaW5mby0+ YW10eXBlLCBxYW1uYW1lKTsKIAkJCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxKTsKIAkJCWRlc3Ry b3lQUUV4cEJ1ZmZlcihkZWxxKTsKQEAgLTEzMzUxLDggKzEzMzI3LDcgQEAgZHVtcENvbGxh dGlvbihBcmNoaXZlICpmb3V0LCBDb2xsSW5mbyAqY29sbGluZm8pCiAJCS8qIHRvIGFsbG93 IGR1bXBpbmcgcGdfY2F0YWxvZzsgbm90IGFjY2VwdGVkIG9uIGlucHV0ICovCiAJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKHEsICJkZWZhdWx0Iik7CiAJZWxzZQotCQlleGl0X2hvcnJpYmx5 KE5VTEwsCi0JCQkJCSAgInVucmVjb2duaXplZCBjb2xsYXRpb24gcHJvdmlkZXI6ICVzXG4i LAorCQlmYXRhbCgidW5yZWNvZ25pemVkIGNvbGxhdGlvbiBwcm92aWRlcjogJXNcbiIsCiAJ CQkJCSAgY29sbHByb3ZpZGVyKTsKIAogCWlmIChzdHJjbXAoY29sbGNvbGxhdGUsIGNvbGxj dHlwZSkgPT0gMCkKQEAgLTEzODIxLDcgKzEzNzk2LDcgQEAgZHVtcEFnZyhBcmNoaXZlICpm b3V0LCBBZ2dJbmZvICphZ2dpbmZvKQogCiAJaWYgKCFjb252ZXJ0b2spCiAJewotCQl3cml0 ZV9tc2coTlVMTCwgIldBUk5JTkc6IGFnZ3JlZ2F0ZSBmdW5jdGlvbiAlcyBjb3VsZCBub3Qg YmUgZHVtcGVkIGNvcnJlY3RseSBmb3IgdGhpcyBkYXRhYmFzZSB2ZXJzaW9uOyBpZ25vcmVk XG4iLAorCQlwZ19sb2dfd2FybmluZygiYWdncmVnYXRlIGZ1bmN0aW9uICVzIGNvdWxkIG5v dCBiZSBkdW1wZWQgY29ycmVjdGx5IGZvciB0aGlzIGRhdGFiYXNlIHZlcnNpb247IGlnbm9y ZWQiLAogCQkJCSAgYWdnc2lnKTsKIAogCQlpZiAoYWdnZnVsbHNpZykKQEAgLTEzODc2LDcg KzEzODUxLDcgQEAgZHVtcEFnZyhBcmNoaXZlICpmb3V0LCBBZ2dJbmZvICphZ2dpbmZvKQog CQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihkZXRhaWxzLCAiLFxuICAgIEZJTkFMRlVOQ19N T0RJRlkgPSBSRUFEX1dSSVRFIik7CiAJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6Ci0JCQkJ CWV4aXRfaG9ycmlibHkoTlVMTCwgInVucmVjb2duaXplZCBhZ2dmaW5hbG1vZGlmeSB2YWx1 ZSBmb3IgYWdncmVnYXRlIFwiJXNcIlxuIiwKKwkJCQkJZmF0YWwoInVucmVjb2duaXplZCBh Z2dmaW5hbG1vZGlmeSB2YWx1ZSBmb3IgYWdncmVnYXRlIFwiJXNcIiIsCiAJCQkJCQkJCSAg YWdnaW5mby0+YWdnZm4uZG9iai5uYW1lKTsKIAkJCQkJYnJlYWs7CiAJCQl9CkBAIC0xMzkz Miw3ICsxMzkwNyw3IEBAIGR1bXBBZ2coQXJjaGl2ZSAqZm91dCwgQWdnSW5mbyAqYWdnaW5m bykKIAkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoZGV0YWlscywgIixcbiAgICBNRklOQUxG VU5DX01PRElGWSA9IFJFQURfV1JJVEUiKTsKIAkJCQkJYnJlYWs7CiAJCQkJZGVmYXVsdDoK LQkJCQkJZXhpdF9ob3JyaWJseShOVUxMLCAidW5yZWNvZ25pemVkIGFnZ21maW5hbG1vZGlm eSB2YWx1ZSBmb3IgYWdncmVnYXRlIFwiJXNcIlxuIiwKKwkJCQkJZmF0YWwoInVucmVjb2du aXplZCBhZ2dtZmluYWxtb2RpZnkgdmFsdWUgZm9yIGFnZ3JlZ2F0ZSBcIiVzXCIiLAogCQkJ CQkJCQkgIGFnZ2luZm8tPmFnZ2ZuLmRvYmoubmFtZSk7CiAJCQkJCWJyZWFrOwogCQkJfQpA QCAtMTM5NTcsNyArMTM5MzIsNyBAQCBkdW1wQWdnKEFyY2hpdmUgKmZvdXQsIEFnZ0luZm8g KmFnZ2luZm8pCiAJCWVsc2UgaWYgKHByb3BhcmFsbGVsWzBdID09IFBST1BBUkFMTEVMX1JF U1RSSUNURUQpCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihkZXRhaWxzLCAiLFxuICAgIFBB UkFMTEVMID0gcmVzdHJpY3RlZCIpOwogCQllbHNlIGlmIChwcm9wYXJhbGxlbFswXSAhPSBQ Uk9QQVJBTExFTF9VTlNBRkUpCi0JCQlleGl0X2hvcnJpYmx5KE5VTEwsICJ1bnJlY29nbml6 ZWQgcHJvcGFyYWxsZWwgdmFsdWUgZm9yIGZ1bmN0aW9uIFwiJXNcIlxuIiwKKwkJCWZhdGFs KCJ1bnJlY29nbml6ZWQgcHJvcGFyYWxsZWwgdmFsdWUgZm9yIGZ1bmN0aW9uIFwiJXNcIiIs CiAJCQkJCQkgIGFnZ2luZm8tPmFnZ2ZuLmRvYmoubmFtZSk7CiAJfQogCkBAIC0xNDY1NCw4 ICsxNDYyOSw3IEBAIGR1bXBEZWZhdWx0QUNMKEFyY2hpdmUgKmZvdXQsIERlZmF1bHRBQ0xJ bmZvICpkYWNsaW5mbykKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJLyogc2hvdWxkbid0 IGdldCBoZXJlICovCi0JCQlleGl0X2hvcnJpYmx5KE5VTEwsCi0JCQkJCQkgICJ1bnJlY29n bml6ZWQgb2JqZWN0IHR5cGUgaW4gZGVmYXVsdCBwcml2aWxlZ2VzOiAlZFxuIiwKKwkJCWZh dGFsKCJ1bnJlY29nbml6ZWQgb2JqZWN0IHR5cGUgaW4gZGVmYXVsdCBwcml2aWxlZ2VzOiAl ZCIsCiAJCQkJCQkgIChpbnQpIGRhY2xpbmZvLT5kZWZhY2xvYmp0eXBlKTsKIAkJCXR5cGUg PSAiIjsJCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCiAJfQpAQCAtMTQ2NzMsNyArMTQ2 NDcsNyBAQCBkdW1wRGVmYXVsdEFDTChBcmNoaXZlICpmb3V0LCBEZWZhdWx0QUNMSW5mbyAq ZGFjbGluZm8pCiAJCQkJCQkJCSBkYWNsaW5mby0+ZGVmYWNscm9sZSwKIAkJCQkJCQkJIGZv dXQtPnJlbW90ZVZlcnNpb24sCiAJCQkJCQkJCSBxKSkKLQkJZXhpdF9ob3JyaWJseShOVUxM LCAiY291bGQgbm90IHBhcnNlIGRlZmF1bHQgQUNMIGxpc3QgKCVzKVxuIiwKKwkJZmF0YWwo ImNvdWxkIG5vdCBwYXJzZSBkZWZhdWx0IEFDTCBsaXN0ICglcykiLAogCQkJCQkgIGRhY2xp bmZvLT5kZWZhY2xhY2wpOwogCiAJaWYgKGRhY2xpbmZvLT5kb2JqLmR1bXAgJiBEVU1QX0NP TVBPTkVOVF9BQ0wpCkBAIC0xNDc1Myw4ICsxNDcyNyw3IEBAIGR1bXBBQ0woQXJjaGl2ZSAq Zm91dCwgQ2F0YWxvZ0lkIG9iakNhdElkLCBEdW1wSWQgb2JqRHVtcElkLAogCQlpZiAoIWJ1 aWxkQUNMQ29tbWFuZHMobmFtZSwgc3VibmFtZSwgbnNwbmFtZSwgdHlwZSwKIAkJCQkJCQkg IGluaXRhY2xzLCBpbml0cmFjbHMsIG93bmVyLAogCQkJCQkJCSAgIiIsIGZvdXQtPnJlbW90 ZVZlcnNpb24sIHNxbCkpCi0JCQlleGl0X2hvcnJpYmx5KE5VTEwsCi0JCQkJCQkgICJjb3Vs ZCBub3QgcGFyc2UgaW5pdGlhbCBHUkFOVCBBQ0wgbGlzdCAoJXMpIG9yIGluaXRpYWwgUkVW T0tFIEFDTCBsaXN0ICglcykgZm9yIG9iamVjdCBcIiVzXCIgKCVzKVxuIiwKKwkJCWZhdGFs KCJjb3VsZCBub3QgcGFyc2UgaW5pdGlhbCBHUkFOVCBBQ0wgbGlzdCAoJXMpIG9yIGluaXRp YWwgUkVWT0tFIEFDTCBsaXN0ICglcykgZm9yIG9iamVjdCBcIiVzXCIgKCVzKSIsCiAJCQkJ CQkgIGluaXRhY2xzLCBpbml0cmFjbHMsIG5hbWUsIHR5cGUpOwogCQlhcHBlbmRQUUV4cEJ1 ZmZlcihzcWwsICJTRUxFQ1QgcGdfY2F0YWxvZy5iaW5hcnlfdXBncmFkZV9zZXRfcmVjb3Jk X2luaXRfcHJpdnMoZmFsc2UpO1xuIik7CiAJfQpAQCAtMTQ3NjIsOCArMTQ3MzUsNyBAQCBk dW1wQUNMKEFyY2hpdmUgKmZvdXQsIENhdGFsb2dJZCBvYmpDYXRJZCwgRHVtcElkIG9iakR1 bXBJZCwKIAlpZiAoIWJ1aWxkQUNMQ29tbWFuZHMobmFtZSwgc3VibmFtZSwgbnNwbmFtZSwg dHlwZSwKIAkJCQkJCSAgYWNscywgcmFjbHMsIG93bmVyLAogCQkJCQkJICAiIiwgZm91dC0+ cmVtb3RlVmVyc2lvbiwgc3FsKSkKLQkJZXhpdF9ob3JyaWJseShOVUxMLAotCQkJCQkgICJj b3VsZCBub3QgcGFyc2UgR1JBTlQgQUNMIGxpc3QgKCVzKSBvciBSRVZPS0UgQUNMIGxpc3Qg KCVzKSBmb3Igb2JqZWN0IFwiJXNcIiAoJXMpXG4iLAorCQlmYXRhbCgiY291bGQgbm90IHBh cnNlIEdSQU5UIEFDTCBsaXN0ICglcykgb3IgUkVWT0tFIEFDTCBsaXN0ICglcykgZm9yIG9i amVjdCBcIiVzXCIgKCVzKSIsCiAJCQkJCSAgYWNscywgcmFjbHMsIG5hbWUsIHR5cGUpOwog CiAJaWYgKHNxbC0+bGVuID4gMCkKQEAgLTE1MjYyLDE3ICsxNTIzNCwxNyBAQCBjcmVhdGVW aWV3QXNDbGF1c2UoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmluZm8pCiAJaWYgKFBR bnR1cGxlcyhyZXMpICE9IDEpCiAJewogCQlpZiAoUFFudHVwbGVzKHJlcykgPCAxKQotCQkJ ZXhpdF9ob3JyaWJseShOVUxMLCAicXVlcnkgdG8gb2J0YWluIGRlZmluaXRpb24gb2Ygdmll dyBcIiVzXCIgcmV0dXJuZWQgbm8gZGF0YVxuIiwKKwkJCWZhdGFsKCJxdWVyeSB0byBvYnRh aW4gZGVmaW5pdGlvbiBvZiB2aWV3IFwiJXNcIiByZXR1cm5lZCBubyBkYXRhIiwKIAkJCQkJ CSAgdGJpbmZvLT5kb2JqLm5hbWUpOwogCQllbHNlCi0JCQlleGl0X2hvcnJpYmx5KE5VTEws ICJxdWVyeSB0byBvYnRhaW4gZGVmaW5pdGlvbiBvZiB2aWV3IFwiJXNcIiByZXR1cm5lZCBt b3JlIHRoYW4gb25lIGRlZmluaXRpb25cbiIsCisJCQlmYXRhbCgicXVlcnkgdG8gb2J0YWlu IGRlZmluaXRpb24gb2YgdmlldyBcIiVzXCIgcmV0dXJuZWQgbW9yZSB0aGFuIG9uZSBkZWZp bml0aW9uIiwKIAkJCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUpOwogCX0KIAogCWxlbiA9IFBR Z2V0bGVuZ3RoKHJlcywgMCwgMCk7CiAKIAlpZiAobGVuID09IDApCi0JCWV4aXRfaG9ycmli bHkoTlVMTCwgImRlZmluaXRpb24gb2YgdmlldyBcIiVzXCIgYXBwZWFycyB0byBiZSBlbXB0 eSAobGVuZ3RoIHplcm8pXG4iLAorCQlmYXRhbCgiZGVmaW5pdGlvbiBvZiB2aWV3IFwiJXNc IiBhcHBlYXJzIHRvIGJlIGVtcHR5IChsZW5ndGggemVybykiLAogCQkJCQkgIHRiaW5mby0+ ZG9iai5uYW1lKTsKIAogCS8qIFN0cmlwIG9mZiB0aGUgdHJhaWxpbmcgc2VtaWNvbG9uIHNv IHRoYXQgb3RoZXIgdGhpbmdzIG1heSBmb2xsb3cuICovCkBAIC0xNTM1NCw4ICsxNTMyNiw3 IEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRiaW5mbykK IAogCiAJaWYgKHRiaW5mby0+aGFzb2lkcykKLQkJd3JpdGVfbXNnKE5VTEwsCi0JCQkJICAi V0FSTklORzogV0lUSCBPSURTIGlzIG5vdCBzdXBwb3J0ZWQgYW55bW9yZSAodGFibGUgXCIl c1wiKVxuIiwKKwkJcGdfbG9nX3dhcm5pbmcoIldJVEggT0lEUyBpcyBub3Qgc3VwcG9ydGVk IGFueW1vcmUgKHRhYmxlIFwiJXNcIikiLAogCQkJCSAgcXJlbG5hbWUpOwogCiAJaWYgKGRv cHQtPmJpbmFyeV91cGdyYWRlKQpAQCAtMTU0ODIsNyArMTU0NTMsNyBAQCBkdW1wVGFibGVT Y2hlbWEoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmluZm8pCiAJCQkgKiBwYXJlbnQu CiAJCQkgKi8KIAkJCWlmICh0YmluZm8tPm51bVBhcmVudHMgIT0gMSkKLQkJCQlleGl0X2hv cnJpYmx5KE5VTEwsICJpbnZhbGlkIG51bWJlciBvZiBwYXJlbnRzICVkIGZvciB0YWJsZSBc IiVzXCJcbiIsCisJCQkJZmF0YWwoImludmFsaWQgbnVtYmVyIG9mIHBhcmVudHMgJWQgZm9y IHRhYmxlIFwiJXNcIiIsCiAJCQkJCQkJICB0YmluZm8tPm51bVBhcmVudHMsIHRiaW5mby0+ ZG9iai5uYW1lKTsKIAogCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiBQQVJUSVRJT04gT0Yg JXMiLApAQCAtMTYxNTQsNyArMTYxMjUsNyBAQCBnZXRBdHRyTmFtZShpbnQgYXR0cm51bSwg VGFibGVJbmZvICp0YmxJbmZvKQogCQljYXNlIFRhYmxlT2lkQXR0cmlidXRlTnVtYmVyOgog CQkJcmV0dXJuICJ0YWJsZW9pZCI7CiAJfQotCWV4aXRfaG9ycmlibHkoTlVMTCwgImludmFs aWQgY29sdW1uIG51bWJlciAlZCBmb3IgdGFibGUgXCIlc1wiXG4iLAorCWZhdGFsKCJpbnZh bGlkIGNvbHVtbiBudW1iZXIgJWQgZm9yIHRhYmxlIFwiJXNcIiIsCiAJCQkJICBhdHRybnVt LCB0YmxJbmZvLT5kb2JqLm5hbWUpOwogCXJldHVybiBOVUxMOwkJCQkvKiBrZWVwIGNvbXBp bGVyIHF1aWV0ICovCiB9CkBAIC0xNjQxNiw3ICsxNjM4Nyw3IEBAIGR1bXBDb25zdHJhaW50 KEFyY2hpdmUgKmZvdXQsIENvbnN0cmFpbnRJbmZvICpjb25pbmZvKQogCQlpbmR4aW5mbyA9 IChJbmR4SW5mbyAqKSBmaW5kT2JqZWN0QnlEdW1wSWQoY29uaW5mby0+Y29uaW5kZXgpOwog CiAJCWlmIChpbmR4aW5mbyA9PSBOVUxMKQotCQkJZXhpdF9ob3JyaWJseShOVUxMLCAibWlz c2luZyBpbmRleCBmb3IgY29uc3RyYWludCBcIiVzXCJcbiIsCisJCQlmYXRhbCgibWlzc2lu ZyBpbmRleCBmb3IgY29uc3RyYWludCBcIiVzXCIiLAogCQkJCQkJICBjb25pbmZvLT5kb2Jq Lm5hbWUpOwogCiAJCWlmIChkb3B0LT5iaW5hcnlfdXBncmFkZSkKQEAgLTE2NjM2LDcgKzE2 NjA3LDcgQEAgZHVtcENvbnN0cmFpbnQoQXJjaGl2ZSAqZm91dCwgQ29uc3RyYWludEluZm8g KmNvbmluZm8pCiAJfQogCWVsc2UKIAl7Ci0JCWV4aXRfaG9ycmlibHkoTlVMTCwgInVucmVj b2duaXplZCBjb25zdHJhaW50IHR5cGU6ICVjXG4iLAorCQlmYXRhbCgidW5yZWNvZ25pemVk IGNvbnN0cmFpbnQgdHlwZTogJWMiLAogCQkJCQkgIGNvbmluZm8tPmNvbnR5cGUpOwogCX0K IApAQCAtMTY3NjgsOCArMTY3MzksOCBAQCBkdW1wU2VxdWVuY2UoQXJjaGl2ZSAqZm91dCwg VGFibGVJbmZvICp0YmluZm8pCiAKIAlpZiAoUFFudHVwbGVzKHJlcykgIT0gMSkKIAl7Ci0J CXdyaXRlX21zZyhOVUxMLCBuZ2V0dGV4dCgicXVlcnkgdG8gZ2V0IGRhdGEgb2Ygc2VxdWVu Y2UgXCIlc1wiIHJldHVybmVkICVkIHJvdyAoZXhwZWN0ZWQgMSlcbiIsCi0JCQkJCQkJCSAi cXVlcnkgdG8gZ2V0IGRhdGEgb2Ygc2VxdWVuY2UgXCIlc1wiIHJldHVybmVkICVkIHJvd3Mg KGV4cGVjdGVkIDEpXG4iLAorCQlwZ19sb2dfZXJyb3IobmdldHRleHQoInF1ZXJ5IHRvIGdl dCBkYXRhIG9mIHNlcXVlbmNlIFwiJXNcIiByZXR1cm5lZCAlZCByb3cgKGV4cGVjdGVkIDEp IiwKKwkJCQkJCQkgICJxdWVyeSB0byBnZXQgZGF0YSBvZiBzZXF1ZW5jZSBcIiVzXCIgcmV0 dXJuZWQgJWQgcm93cyAoZXhwZWN0ZWQgMSkiLAogCQkJCQkJCQkgUFFudHVwbGVzKHJlcykp LAogCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUsIFBRbnR1cGxlcyhyZXMpKTsKIAkJZXhpdF9u aWNlbHkoMSk7CkBAIC0xNjgwMiw3ICsxNjc3Myw3IEBAIGR1bXBTZXF1ZW5jZShBcmNoaXZl ICpmb3V0LCBUYWJsZUluZm8gKnRiaW5mbykKIAl9CiAJZWxzZQogCXsKLQkJZXhpdF9ob3Jy aWJseShOVUxMLCAidW5yZWNvZ25pemVkIHNlcXVlbmNlIHR5cGU6ICVzXG4iLCBzZXF0eXBl KTsKKwkJZmF0YWwoInVucmVjb2duaXplZCBzZXF1ZW5jZSB0eXBlOiAlcyIsIHNlcXR5cGUp OwogCQlkZWZhdWx0X21pbnYgPSBkZWZhdWx0X21heHYgPSAwOwkvKiBrZWVwIGNvbXBpbGVy IHF1aWV0ICovCiAJfQogCkBAIC0xNjkyMyw3ICsxNjg5NCw3IEBAIGR1bXBTZXF1ZW5jZShB cmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRiaW5mbykKIAkJVGFibGVJbmZvICAqb3duaW5n X3RhYiA9IGZpbmRUYWJsZUJ5T2lkKHRiaW5mby0+b3duaW5nX3RhYik7CiAKIAkJaWYgKG93 bmluZ190YWIgPT0gTlVMTCkKLQkJCWV4aXRfaG9ycmlibHkoTlVMTCwgImZhaWxlZCBzYW5p dHkgY2hlY2ssIHBhcmVudCB0YWJsZSB3aXRoIE9JRCAldSBvZiBzZXF1ZW5jZSB3aXRoIE9J RCAldSBub3QgZm91bmRcbiIsCisJCQlmYXRhbCgiZmFpbGVkIHNhbml0eSBjaGVjaywgcGFy ZW50IHRhYmxlIHdpdGggT0lEICV1IG9mIHNlcXVlbmNlIHdpdGggT0lEICV1IG5vdCBmb3Vu ZCIsCiAJCQkJCQkgIHRiaW5mby0+b3duaW5nX3RhYiwgdGJpbmZvLT5kb2JqLmNhdElkLm9p ZCk7CiAKIAkJaWYgKG93bmluZ190YWItPmRvYmouZHVtcCAmIERVTVBfQ09NUE9ORU5UX0RF RklOSVRJT04pCkBAIC0xNjk4OCw4ICsxNjk1OSw4IEBAIGR1bXBTZXF1ZW5jZURhdGEoQXJj aGl2ZSAqZm91dCwgVGFibGVEYXRhSW5mbyAqdGRpbmZvKQogCiAJaWYgKFBRbnR1cGxlcyhy ZXMpICE9IDEpCiAJewotCQl3cml0ZV9tc2coTlVMTCwgbmdldHRleHQoInF1ZXJ5IHRvIGdl dCBkYXRhIG9mIHNlcXVlbmNlIFwiJXNcIiByZXR1cm5lZCAlZCByb3cgKGV4cGVjdGVkIDEp XG4iLAotCQkJCQkJCQkgInF1ZXJ5IHRvIGdldCBkYXRhIG9mIHNlcXVlbmNlIFwiJXNcIiBy ZXR1cm5lZCAlZCByb3dzIChleHBlY3RlZCAxKVxuIiwKKwkJcGdfbG9nX2Vycm9yKG5nZXR0 ZXh0KCJxdWVyeSB0byBnZXQgZGF0YSBvZiBzZXF1ZW5jZSBcIiVzXCIgcmV0dXJuZWQgJWQg cm93IChleHBlY3RlZCAxKSIsCisJCQkJCQkJICAicXVlcnkgdG8gZ2V0IGRhdGEgb2Ygc2Vx dWVuY2UgXCIlc1wiIHJldHVybmVkICVkIHJvd3MgKGV4cGVjdGVkIDEpIiwKIAkJCQkJCQkJ IFBRbnR1cGxlcyhyZXMpKSwKIAkJCQkgIHRiaW5mby0+ZG9iai5uYW1lLCBQUW50dXBsZXMo cmVzKSk7CiAJCWV4aXRfbmljZWx5KDEpOwpAQCAtMTcwODQsNyArMTcwNTUsNyBAQCBkdW1w VHJpZ2dlcihBcmNoaXZlICpmb3V0LCBUcmlnZ2VySW5mbyAqdGdpbmZvKQogCQkJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksICJJTlNURUFEIE9GIik7CiAJCWVsc2UKIAkJewotCQkJ d3JpdGVfbXNnKE5VTEwsICJ1bmV4cGVjdGVkIHRndHlwZSB2YWx1ZTogJWRcbiIsIHRnaW5m by0+dGd0eXBlKTsKKwkJCXBnX2xvZ19lcnJvcigidW5leHBlY3RlZCB0Z3R5cGUgdmFsdWU6 ICVkIiwgdGdpbmZvLT50Z3R5cGUpOwogCQkJZXhpdF9uaWNlbHkoMSk7CiAJCX0KIApAQCAt MTcxNTgsNyArMTcxMjksNyBAQCBkdW1wVHJpZ2dlcihBcmNoaXZlICpmb3V0LCBUcmlnZ2Vy SW5mbyAqdGdpbmZvKQogCQkJaWYgKHAgKyB0bGVuID49IHRnYXJncyArIGxlbnRnYXJncykK IAkJCXsKIAkJCQkvKiBobSwgbm90IGZvdW5kIGJlZm9yZSBlbmQgb2YgYnl0ZWEgdmFsdWUu Li4gKi8KLQkJCQl3cml0ZV9tc2coTlVMTCwgImludmFsaWQgYXJndW1lbnQgc3RyaW5nICgl cykgZm9yIHRyaWdnZXIgXCIlc1wiIG9uIHRhYmxlIFwiJXNcIlxuIiwKKwkJCQlwZ19sb2df ZXJyb3IoImludmFsaWQgYXJndW1lbnQgc3RyaW5nICglcykgZm9yIHRyaWdnZXIgXCIlc1wi IG9uIHRhYmxlIFwiJXNcIiIsCiAJCQkJCQkgIHRnaW5mby0+dGdhcmdzLAogCQkJCQkJICB0 Z2luZm8tPmRvYmoubmFtZSwKIAkJCQkJCSAgdGJpbmZvLT5kb2JqLm5hbWUpOwpAQCAtMTcz ODcsNyArMTczNTgsNyBAQCBkdW1wUnVsZShBcmNoaXZlICpmb3V0LCBSdWxlSW5mbyAqcmlu Zm8pCiAKIAkJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEpCiAJCXsKLQkJCXdyaXRlX21zZyhO VUxMLCAicXVlcnkgdG8gZ2V0IHJ1bGUgXCIlc1wiIGZvciB0YWJsZSBcIiVzXCIgZmFpbGVk OiB3cm9uZyBudW1iZXIgb2Ygcm93cyByZXR1cm5lZFxuIiwKKwkJCXBnX2xvZ19lcnJvcigi cXVlcnkgdG8gZ2V0IHJ1bGUgXCIlc1wiIGZvciB0YWJsZSBcIiVzXCIgZmFpbGVkOiB3cm9u ZyBudW1iZXIgb2Ygcm93cyByZXR1cm5lZCIsCiAJCQkJCSAgcmluZm8tPmRvYmoubmFtZSwg dGJpbmZvLT5kb2JqLm5hbWUpOwogCQkJZXhpdF9uaWNlbHkoMSk7CiAJCX0KQEAgLTE3NTQ5 LDcgKzE3NTIwLDcgQEAgZ2V0RXh0ZW5zaW9uTWVtYmVyc2hpcChBcmNoaXZlICpmb3V0LCBF eHRlbnNpb25JbmZvIGV4dGluZm9bXSwKIAkJaWYgKGV4dCA9PSBOVUxMKQogCQl7CiAJCQkv KiBzaG91bGRuJ3QgaGFwcGVuICovCi0JCQlmcHJpbnRmKHN0ZGVyciwgImNvdWxkIG5vdCBm aW5kIHJlZmVyZW5jZWQgZXh0ZW5zaW9uICV1XG4iLCBleHRJZCk7CisJCQlwZ19sb2dfd2Fy bmluZygiY291bGQgbm90IGZpbmQgcmVmZXJlbmNlZCBleHRlbnNpb24gJXUiLCBleHRJZCk7 CiAJCQljb250aW51ZTsKIAkJfQogCkBAIC0xNzc2MSw4ICsxNzczMiw3IEBAIGdldERlcGVu ZGVuY2llcyhBcmNoaXZlICpmb3V0KQogCUR1bXBhYmxlT2JqZWN0ICpkb2JqLAogCQkJICAg KnJlZmRvYmo7CiAKLQlpZiAoZ192ZXJib3NlKQotCQl3cml0ZV9tc2coTlVMTCwgInJlYWRp bmcgZGVwZW5kZW5jeSBkYXRhXG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGluZyBkZXBlbmRl bmN5IGRhdGEiKTsKIAogCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKIApAQCAtMTc4 MTcsNyArMTc3ODcsNyBAQCBnZXREZXBlbmRlbmNpZXMoQXJjaGl2ZSAqZm91dCkKIAkJaWYg KGRvYmogPT0gTlVMTCkKIAkJewogI2lmZGVmIE5PVF9VU0VECi0JCQlmcHJpbnRmKHN0ZGVy ciwgIm5vIHJlZmVyZW5jaW5nIG9iamVjdCAldSAldVxuIiwKKwkJCXBnX2xvZ193YXJuaW5n KCJubyByZWZlcmVuY2luZyBvYmplY3QgJXUgJXUiLAogCQkJCQlvYmpJZC50YWJsZW9pZCwg b2JqSWQub2lkKTsKICNlbmRpZgogCQkJY29udGludWU7CkBAIC0xNzgyOCw3ICsxNzc5OCw3 IEBAIGdldERlcGVuZGVuY2llcyhBcmNoaXZlICpmb3V0KQogCQlpZiAocmVmZG9iaiA9PSBO VUxMKQogCQl7CiAjaWZkZWYgTk9UX1VTRUQKLQkJCWZwcmludGYoc3RkZXJyLCAibm8gcmVm ZXJlbmNlZCBvYmplY3QgJXUgJXVcbiIsCisJCQlwZ19sb2dfd2FybmluZygibm8gcmVmZXJl bmNlZCBvYmplY3QgJXUgJXUiLAogCQkJCQlyZWZvYmpJZC50YWJsZW9pZCwgcmVmb2JqSWQu b2lkKTsKICNlbmRpZgogCQkJY29udGludWU7CkBAIC0xODE5Myw1ICsxODE2Myw1IEBAIGFw cGVuZFJlbG9wdGlvbnNBcnJheUFIKFBRRXhwQnVmZmVyIGJ1ZmZlciwgY29uc3QgY2hhciAq cmVsb3B0aW9ucywKIAlyZXMgPSBhcHBlbmRSZWxvcHRpb25zQXJyYXkoYnVmZmVyLCByZWxv cHRpb25zLCBwcmVmaXgsIGZvdXQtPmVuY29kaW5nLAogCQkJCQkJCQlmb3V0LT5zdGRfc3Ry aW5ncyk7CiAJaWYgKCFyZXMpCi0JCXdyaXRlX21zZyhOVUxMLCAiV0FSTklORzogY291bGQg bm90IHBhcnNlIHJlbG9wdGlvbnMgYXJyYXlcbiIpOworCQlwZ19sb2dfd2FybmluZygiY291 bGQgbm90IHBhcnNlIHJlbG9wdGlvbnMgYXJyYXkiKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4 IDIxZDJhYjA1YjAuLmM1NDZiNzUyZjggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjM3LDcgKzYz Nyw2IEBAIHR5cGVkZWYgc3RydWN0IF9leHRlbnNpb25NZW1iZXJJZAogCiAvKiBnbG9iYWwg ZGVjbHMgKi8KIGV4dGVybiBib29sIGZvcmNlX3F1b3RlczsJCS8qIGRvdWJsZS1xdW90ZXMg Zm9yIGlkZW50aWZpZXJzIGZsYWcgKi8KLWV4dGVybiBib29sIGdfdmVyYm9zZTsJCQkvKiB2 ZXJib3NlIGZsYWcgKi8KIAogLyogcGxhY2Vob2xkZXJzIGZvciBjb21tZW50IHN0YXJ0aW5n IGFuZCBlbmRpbmcgZGVsaW1pdGVycyAqLwogZXh0ZXJuIGNoYXIgZ19jb21tZW50X3N0YXJ0 WzEwXTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwppbmRleCBiYjEyOGM4OWYzLi5jNmUzNTI2 YmYzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKKysrIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jCkBAIC0yMCw5ICsyMCw3IEBACiAjaW5j bHVkZSAicGdfZHVtcC5oIgogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzc19kLmgiCi0K LS8qIHRyYW5zbGF0b3I6IHRoaXMgaXMgYSBtb2R1bGUgbmFtZSAqLwotc3RhdGljIGNvbnN0 IGNoYXIgKm1vZHVsZW5hbWUgPSBnZXR0ZXh0X25vb3AoInNvcnRlciIpOworI2luY2x1ZGUg ImZlX3V0aWxzL2xvZ2dpbmcuaCIKIAogLyoKICAqIFNvcnQgcHJpb3JpdHkgZm9yIGRhdGFi YXNlIG9iamVjdCB0eXBlcy4KQEAgLTMyOCwxMyArMzI2LDEzIEBAIFRvcG9Tb3J0KER1bXBh YmxlT2JqZWN0ICoqb2JqcywKIAkJb2JqID0gb2Jqc1tpXTsKIAkJaiA9IG9iai0+ZHVtcElk OwogCQlpZiAoaiA8PSAwIHx8IGogPiBtYXhEdW1wSWQpCi0JCQlleGl0X2hvcnJpYmx5KG1v ZHVsZW5hbWUsICJpbnZhbGlkIGR1bXBJZCAlZFxuIiwgaik7CisJCQlmYXRhbCgiaW52YWxp ZCBkdW1wSWQgJWQiLCBqKTsKIAkJaWRNYXBbal0gPSBpOwogCQlmb3IgKGogPSAwOyBqIDwg b2JqLT5uRGVwczsgaisrKQogCQl7CiAJCQlrID0gb2JqLT5kZXBlbmRlbmNpZXNbal07CiAJ CQlpZiAoayA8PSAwIHx8IGsgPiBtYXhEdW1wSWQpCi0JCQkJZXhpdF9ob3JyaWJseShtb2R1 bGVuYW1lLCAiaW52YWxpZCBkZXBlbmRlbmN5ICVkXG4iLCBrKTsKKwkJCQlmYXRhbCgiaW52 YWxpZCBkZXBlbmRlbmN5ICVkIiwgayk7CiAJCQliZWZvcmVDb25zdHJhaW50c1trXSsrOwog CQl9CiAJfQpAQCAtNTY3LDcgKzU2NSw3IEBAIGZpbmREZXBlbmRlbmN5TG9vcHMoRHVtcGFi bGVPYmplY3QgKipvYmpzLCBpbnQgbk9ianMsIGludCB0b3RPYmpzKQogCiAJLyogV2UnZCBi ZXR0ZXIgaGF2ZSBmaXhlZCBhdCBsZWFzdCBvbmUgbG9vcCAqLwogCWlmICghZml4ZWRsb29w KQotCQlleGl0X2hvcnJpYmx5KG1vZHVsZW5hbWUsICJjb3VsZCBub3QgaWRlbnRpZnkgZGVw ZW5kZW5jeSBsb29wXG4iKTsKKwkJZmF0YWwoImNvdWxkIG5vdCBpZGVudGlmeSBkZXBlbmRl bmN5IGxvb3AiKTsKIAogCWZyZWUod29ya3NwYWNlKTsKIAlmcmVlKHNlYXJjaEZhaWxlZCk7 CkBAIC0xMTIwLDEzICsxMTE4LDEzIEBAIHJlcGFpckRlcGVuZGVuY3lMb29wKER1bXBhYmxl T2JqZWN0ICoqbG9vcCwKIAl9CiAJaWYgKGkgPj0gbkxvb3ApCiAJewotCQl3cml0ZV9tc2co TlVMTCwgbmdldHRleHQoIk5PVElDRTogdGhlcmUgYXJlIGNpcmN1bGFyIGZvcmVpZ24ta2V5 IGNvbnN0cmFpbnRzIG9uIHRoaXMgdGFibGU6XG4iLAotCQkJCQkJCQkgIk5PVElDRTogdGhl cmUgYXJlIGNpcmN1bGFyIGZvcmVpZ24ta2V5IGNvbnN0cmFpbnRzIGFtb25nIHRoZXNlIHRh YmxlczpcbiIsCi0JCQkJCQkJCSBuTG9vcCkpOworCQlwZ19sb2dfd2FybmluZyhuZ2V0dGV4 dCgidGhlcmUgYXJlIGNpcmN1bGFyIGZvcmVpZ24ta2V5IGNvbnN0cmFpbnRzIG9uIHRoaXMg dGFibGU6IiwKKwkJCQkJCQkJInRoZXJlIGFyZSBjaXJjdWxhciBmb3JlaWduLWtleSBjb25z dHJhaW50cyBhbW9uZyB0aGVzZSB0YWJsZXM6IiwKKwkJCQkJCQkJbkxvb3ApKTsKIAkJZm9y IChpID0gMDsgaSA8IG5Mb29wOyBpKyspCi0JCQl3cml0ZV9tc2coTlVMTCwgIiAgJXNcbiIs IGxvb3BbaV0tPm5hbWUpOwotCQl3cml0ZV9tc2coTlVMTCwgIllvdSBtaWdodCBub3QgYmUg YWJsZSB0byByZXN0b3JlIHRoZSBkdW1wIHdpdGhvdXQgdXNpbmcgLS1kaXNhYmxlLXRyaWdn ZXJzIG9yIHRlbXBvcmFyaWx5IGRyb3BwaW5nIHRoZSBjb25zdHJhaW50cy5cbiIpOwotCQl3 cml0ZV9tc2coTlVMTCwgIkNvbnNpZGVyIHVzaW5nIGEgZnVsbCBkdW1wIGluc3RlYWQgb2Yg YSAtLWRhdGEtb25seSBkdW1wIHRvIGF2b2lkIHRoaXMgcHJvYmxlbS5cbiIpOworCQkJcGdf bG9nX3dhcm5pbmcoIiAgJXMiLCBsb29wW2ldLT5uYW1lKTsKKwkJcGdfbG9nX3dhcm5pbmco IllvdSBtaWdodCBub3QgYmUgYWJsZSB0byByZXN0b3JlIHRoZSBkdW1wIHdpdGhvdXQgdXNp bmcgLS1kaXNhYmxlLXRyaWdnZXJzIG9yIHRlbXBvcmFyaWx5IGRyb3BwaW5nIHRoZSBjb25z dHJhaW50cy4iKTsKKwkJcGdfbG9nX3dhcm5pbmcoIkNvbnNpZGVyIHVzaW5nIGEgZnVsbCBk dW1wIGluc3RlYWQgb2YgYSAtLWRhdGEtb25seSBkdW1wIHRvIGF2b2lkIHRoaXMgcHJvYmxl bS4iKTsKIAkJaWYgKG5Mb29wID4gMSkKIAkJCXJlbW92ZU9iamVjdERlcGVuZGVuY3kobG9v cFswXSwgbG9vcFsxXS0+ZHVtcElkKTsKIAkJZWxzZQkJCQkJLyogbXVzdCBiZSBhIHNlbGYt ZGVwZW5kZW5jeSAqLwpAQCAtMTEzOCwxMyArMTEzNiwxMyBAQCByZXBhaXJEZXBlbmRlbmN5 TG9vcChEdW1wYWJsZU9iamVjdCAqKmxvb3AsCiAJICogSWYgd2UgY2FuJ3QgZmluZCBhIHBy aW5jaXBsZWQgd2F5IHRvIGJyZWFrIHRoZSBsb29wLCBjb21wbGFpbiBhbmQgYnJlYWsKIAkg KiBpdCBpbiBhbiBhcmJpdHJhcnkgZmFzaGlvbi4KIAkgKi8KLQl3cml0ZV9tc2cobW9kdWxl bmFtZSwgIldBUk5JTkc6IGNvdWxkIG5vdCByZXNvbHZlIGRlcGVuZGVuY3kgbG9vcCBhbW9u ZyB0aGVzZSBpdGVtczpcbiIpOworCXBnX2xvZ193YXJuaW5nKCJjb3VsZCBub3QgcmVzb2x2 ZSBkZXBlbmRlbmN5IGxvb3AgYW1vbmcgdGhlc2UgaXRlbXM6Iik7CiAJZm9yIChpID0gMDsg aSA8IG5Mb29wOyBpKyspCiAJewogCQljaGFyCQlidWZbMTAyNF07CiAKIAkJZGVzY3JpYmVE dW1wYWJsZU9iamVjdChsb29wW2ldLCBidWYsIHNpemVvZihidWYpKTsKLQkJd3JpdGVfbXNn KG1vZHVsZW5hbWUsICIgICVzXG4iLCBidWYpOworCQlwZ19sb2dfd2FybmluZygiICAlcyIs IGJ1Zik7CiAJfQogCiAJaWYgKG5Mb29wID4gMSkKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wYWxsLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcGFsbC5jCmluZGV4 IDQ0YzMzNTA4ODcuLjQ2ZDA4OGY2M2EgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wYWxsLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBhbGwuYwpAQCAtMjQs NiArMjQsNyBAQAogI2luY2x1ZGUgInBnX2JhY2t1cC5oIgogI2luY2x1ZGUgImNvbW1vbi9m aWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvY29ubmVjdC5oIgorI2luY2x1ZGUg ImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMu aCIKIAogLyogdmVyc2lvbiBzdHJpbmcgd2UgZXhwZWN0IGJhY2sgZnJvbSBwZ19kdW1wICov CkBAIC0xNjIsOCArMTYzLDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJ CXJldDsKIAlpbnQJCQlvcHRpbmRleDsKIAorCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsK KwlwZ19sb2dnaW5nX3NldF9sZXZlbChQR19MT0dfV0FSTklORyk7CiAJc2V0X3BnbG9jYWxl X3Bnc2VydmljZShhcmd2WzBdLCBQR19URVhURE9NQUlOKCJwZ19kdW1wIikpOwotCiAJcHJv Z25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAKIAlpZiAoYXJnYyA+IDEpCkBAIC0x ODksMTggKzE5MSwxNSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQlzdHJs Y3B5KGZ1bGxfcGF0aCwgcHJvZ25hbWUsIHNpemVvZihmdWxsX3BhdGgpKTsKIAogCQlpZiAo cmV0ID09IC0xKQotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIlRoZSBwcm9ncmFtIFwi cGdfZHVtcFwiIGlzIG5lZWRlZCBieSAlcyAiCi0JCQkJCSAgImJ1dCB3YXMgbm90IGZvdW5k IGluIHRoZVxuIgotCQkJCQkgICJzYW1lIGRpcmVjdG9yeSBhcyBcIiVzXCIuXG4iCi0JCQkJ CSAgIkNoZWNrIHlvdXIgaW5zdGFsbGF0aW9uLlxuIiksCi0JCQkJCXByb2duYW1lLCBmdWxs X3BhdGgpOworCQkJcGdfbG9nX2Vycm9yKCJUaGUgcHJvZ3JhbSBcInBnX2R1bXBcIiBpcyBu ZWVkZWQgYnkgJXMgYnV0IHdhcyBub3QgZm91bmQgaW4gdGhlXG4iCisJCQkJCQkgInNhbWUg ZGlyZWN0b3J5IGFzIFwiJXNcIi5cbiIKKwkJCQkJCSAiQ2hlY2sgeW91ciBpbnN0YWxsYXRp b24uIiwKKwkJCQkJCSBwcm9nbmFtZSwgZnVsbF9wYXRoKTsKIAkJZWxzZQotCQkJZnByaW50 ZihzdGRlcnIsCi0JCQkJCV8oIlRoZSBwcm9ncmFtIFwicGdfZHVtcFwiIHdhcyBmb3VuZCBi eSBcIiVzXCJcbiIKLQkJCQkJICAiYnV0IHdhcyBub3QgdGhlIHNhbWUgdmVyc2lvbiBhcyAl cy5cbiIKLQkJCQkJICAiQ2hlY2sgeW91ciBpbnN0YWxsYXRpb24uXG4iKSwKLQkJCQkJZnVs bF9wYXRoLCBwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoIlRoZSBwcm9ncmFtIFwicGdf ZHVtcFwiIHdhcyBmb3VuZCBieSBcIiVzXCJcbiIKKwkJCQkJCSAiYnV0IHdhcyBub3QgdGhl IHNhbWUgdmVyc2lvbiBhcyAlcy5cbiIKKwkJCQkJCSAiQ2hlY2sgeW91ciBpbnN0YWxsYXRp b24uIiwKKwkJCQkJCSBmdWxsX3BhdGgsIHByb2duYW1lKTsKIAkJZXhpdF9uaWNlbHkoMSk7 CiAJfQogCkBAIC0yODIsNiArMjgxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQogCiAJCQljYXNlICd2JzoKIAkJCQl2ZXJib3NlID0gdHJ1ZTsKKwkJCQlwZ19sb2dnaW5n X3NldF9sZXZlbChQR19MT0dfSU5GTyk7CiAJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocGdk dW1wb3B0cywgIiAtdiIpOwogCQkJCWJyZWFrOwogCkBAIC0zMzMsOCArMzMzLDggQEAgbWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qIENvbXBsYWluIGlmIGFueSBhcmd1bWVu dHMgcmVtYWluICovCiAJaWYgKG9wdGluZCA8IGFyZ2MpCiAJewotCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwi JXNcIilcbiIpLAotCQkJCXByb2duYW1lLCBhcmd2W29wdGluZF0pOworCQlwZ19sb2dfZXJy b3IoInRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIiki LAorCQkJCQkgYXJndltvcHRpbmRdKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVz IC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksCiAJCQkJcHJvZ25hbWUpOwog CQlleGl0X25pY2VseSgxKTsKQEAgLTM0Myw4ICszNDMsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJLyogTWFrZSBzdXJlIHRoZSB1c2VyIGhhc24ndCBzcGVjaWZpZWQg YSBtaXggb2YgZ2xvYmFscy1vbmx5IG9wdGlvbnMgKi8KIAlpZiAoZ2xvYmFsc19vbmx5ICYm IHJvbGVzX29ubHkpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG9wdGlvbnMgLWcv LS1nbG9iYWxzLW9ubHkgYW5kIC1yLy0tcm9sZXMtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dl dGhlclxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm9wdGlvbnMgLWcv LS1nbG9iYWxzLW9ubHkgYW5kIC1yLy0tcm9sZXMtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dl dGhlciIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1v cmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXRfbmljZWx5KDEp OwpAQCAtMzUyLDggKzM1MSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAog CWlmIChnbG9iYWxzX29ubHkgJiYgdGFibGVzcGFjZXNfb25seSkKIAl7Ci0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogb3B0aW9ucyAtZy8tLWdsb2JhbHMtb25seSBhbmQgLXQvLS10YWJs ZXNwYWNlcy1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXG4iKSwKLQkJCQlwcm9nbmFt ZSk7CisJCXBnX2xvZ19lcnJvcigib3B0aW9ucyAtZy8tLWdsb2JhbHMtb25seSBhbmQgLXQv LS10YWJsZXNwYWNlcy1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIik7CiAJCWZwcmlu dGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5c biIpLAogCQkJCXByb2duYW1lKTsKIAkJZXhpdF9uaWNlbHkoMSk7CkBAIC0zNjEsMTUgKzM1 OSwxMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAlpZiAoaWZfZXhpc3Rz ICYmICFvdXRwdXRfY2xlYW4pCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG9wdGlv biAtLWlmLWV4aXN0cyByZXF1aXJlcyBvcHRpb24gLWMvLS1jbGVhblxuIiksCi0JCQkJcHJv Z25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm9wdGlvbiAtLWlmLWV4aXN0cyByZXF1aXJlcyBv cHRpb24gLWMvLS1jbGVhbiIpOwogCQlleGl0X25pY2VseSgxKTsKIAl9CiAKIAlpZiAocm9s ZXNfb25seSAmJiB0YWJsZXNwYWNlc19vbmx5KQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBvcHRpb25zIC1yLy0tcm9sZXMtb25seSBhbmQgLXQvLS10YWJsZXNwYWNlcy1vbmx5 IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXG4iKSwKLQkJCQlwcm9nbmFtZSk7CisJCXBnX2xv Z19lcnJvcigib3B0aW9ucyAtci8tLXJvbGVzLW9ubHkgYW5kIC10Ly0tdGFibGVzcGFjZXMt b25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygi VHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9n bmFtZSk7CiAJCWV4aXRfbmljZWx5KDEpOwpAQCAtNDMwLDggKzQyNiw3IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCQlpZiAoIWNvbm4pCiAJCXsKLQkJCWZwcmludGYo c3RkZXJyLCBfKCIlczogY291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UgXCIlc1wiXG4i KSwKLQkJCQkJcHJvZ25hbWUsIHBnZGIpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qg Y29ubmVjdCB0byBkYXRhYmFzZSBcIiVzXCIiLCBwZ2RiKTsKIAkJCWV4aXRfbmljZWx5KDEp OwogCQl9CiAJfQpAQCAtNDQ1LDkgKzQ0MCw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKIAogCQlpZiAoIWNvbm4pCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2VzIFwicG9zdGdyZXNcIiBvciBcInRlbXBs YXRlMVwiXG4iCi0JCQkJCQkJICAiUGxlYXNlIHNwZWNpZnkgYW4gYWx0ZXJuYXRpdmUgZGF0 YWJhc2UuXG4iKSwKLQkJCQkJcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBu b3QgY29ubmVjdCB0byBkYXRhYmFzZXMgXCJwb3N0Z3Jlc1wiIG9yIFwidGVtcGxhdGUxXCJc biIKKwkJCQkJCSAiUGxlYXNlIHNwZWNpZnkgYW4gYWx0ZXJuYXRpdmUgZGF0YWJhc2UuIik7 CiAJCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5m b3JtYXRpb24uXG4iKSwKIAkJCQkJcHJvZ25hbWUpOwogCQkJZXhpdF9uaWNlbHkoMSk7CkBA IC00NjIsOCArNDU2LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlPUEYg PSBmb3BlbihmaWxlbmFtZSwgUEdfQklOQVJZX1cpOwogCQlpZiAoIU9QRikKIAkJewotCQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgb3BlbiB0aGUgb3V0cHV0IGZpbGUg XCIlc1wiOiAlc1xuIiksCi0JCQkJCXByb2duYW1lLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJy bm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9wZW4gdGhlIG91dHB1dCBmaWxl IFwiJXNcIjogJW0iLAorCQkJCQkJIGZpbGVuYW1lKTsKIAkJCWV4aXRfbmljZWx5KDEpOwog CQl9CiAJfQpAQCAtNDc3LDggKzQ3MSw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3Zb XSkKIAl7CiAJCWlmIChQUXNldENsaWVudEVuY29kaW5nKGNvbm4sIGR1bXBlbmNvZGluZykg PCAwKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGludmFsaWQgY2xpZW50IGVu Y29kaW5nIFwiJXNcIiBzcGVjaWZpZWRcbiIpLAotCQkJCQlwcm9nbmFtZSwgZHVtcGVuY29k aW5nKTsKKwkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBjbGllbnQgZW5jb2RpbmcgXCIlc1wi IHNwZWNpZmllZCIsCisJCQkJCQkgZHVtcGVuY29kaW5nKTsKIAkJCWV4aXRfbmljZWx5KDEp OwogCQl9CiAJfQpAQCAtNTg0LDcgKzU3OCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKIAogCQkvKiBzeW5jIHRoZSByZXN1bHRpbmcgZmlsZSwgZXJyb3JzIGFyZSBub3Qg ZmF0YWwgKi8KIAkJaWYgKGRvc3luYykKLQkJCSh2b2lkKSBmc3luY19mbmFtZShmaWxlbmFt ZSwgZmFsc2UsIHByb2duYW1lKTsKKwkJCSh2b2lkKSBmc3luY19mbmFtZShmaWxlbmFtZSwg ZmFsc2UpOwogCX0KIAogCWV4aXRfbmljZWx5KDApOwpAQCAtODUzLDggKzg0Nyw4IEBAIGR1 bXBSb2xlcyhQR2Nvbm4gKmNvbm4pCiAKIAkJaWYgKHN0cm5jbXAocm9sZW5hbWUsICJwZ18i LCAzKSA9PSAwKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHJvbGUgbmFtZSBz dGFydGluZyB3aXRoIFwicGdfXCIgc2tpcHBlZCAoJXMpXG4iKSwKLQkJCQkJcHJvZ25hbWUs IHJvbGVuYW1lKTsKKwkJCXBnX2xvZ193YXJuaW5nKCJyb2xlIG5hbWUgc3RhcnRpbmcgd2l0 aCBcInBnX1wiIHNraXBwZWQgKCVzKSIsCisJCQkJCQkgICByb2xlbmFtZSk7CiAJCQljb250 aW51ZTsKIAkJfQogCkBAIC0xMjM1LDggKzEyMjksOCBAQCBkdW1wVGFibGVzcGFjZXMoUEdj b25uICpjb25uKQogCQkJCQkJCSAgc3BjYWNsLCByc3BjYWNsLAogCQkJCQkJCSAgc3Bjb3du ZXIsICIiLCBzZXJ2ZXJfdmVyc2lvbiwgYnVmKSkKIAkJewotCQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBjb3VsZCBub3QgcGFyc2UgQUNMIGxpc3QgKCVzKSBmb3IgdGFibGVzcGFjZSBc IiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwgc3BjYWNsLCBzcGNuYW1lKTsKKwkJCXBnX2xv Z19lcnJvcigiY291bGQgbm90IHBhcnNlIEFDTCBsaXN0ICglcykgZm9yIHRhYmxlc3BhY2Ug XCIlc1wiIiwKKwkJCQkJCSBzcGNhY2wsIHNwY25hbWUpOwogCQkJUFFmaW5pc2goY29ubik7 CiAJCQlleGl0X25pY2VseSgxKTsKIAkJfQpAQCAtMTM5NSw4ICsxMzg5LDcgQEAgZHVtcERh dGFiYXNlcyhQR2Nvbm4gKmNvbm4pCiAJCWlmIChzdHJjbXAoZGJuYW1lLCAidGVtcGxhdGUw IikgPT0gMCkKIAkJCWNvbnRpbnVlOwogCi0JCWlmICh2ZXJib3NlKQotCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBkdW1waW5nIGRhdGFiYXNlIFwiJXNcIi4uLlxuIiksIHByb2duYW1l LCBkYm5hbWUpOworCQlwZ19sb2dfaW5mbygiZHVtcGluZyBkYXRhYmFzZSBcIiVzXCIuLi4i LCBkYm5hbWUpOwogCiAJCS8qCiAJCSAqIFdlIGFzc3VtZSB0aGF0ICJ0ZW1wbGF0ZTEiIGFu ZCAicG9zdGdyZXMiIGFscmVhZHkgZXhpc3QgaW4gdGhlCkBAIC0xNDI2LDcgKzE0MTksNyBA QCBkdW1wRGF0YWJhc2VzKFBHY29ubiAqY29ubikKIAkJcmV0ID0gcnVuUGdEdW1wKGRibmFt ZSwgY3JlYXRlX29wdHMpOwogCQlpZiAocmV0ICE9IDApCiAJCXsKLQkJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogcGdfZHVtcCBmYWlsZWQgb24gZGF0YWJhc2UgXCIlc1wiLCBleGl0aW5n XG4iKSwgcHJvZ25hbWUsIGRibmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoInBnX2R1bXAgZmFp bGVkIG9uIGRhdGFiYXNlIFwiJXNcIiwgZXhpdGluZyIsIGRibmFtZSk7CiAJCQlleGl0X25p Y2VseSgxKTsKIAkJfQogCkBAIC0xNDM1LDggKzE0MjgsOCBAQCBkdW1wRGF0YWJhc2VzKFBH Y29ubiAqY29ubikKIAkJCU9QRiA9IGZvcGVuKGZpbGVuYW1lLCBQR19CSU5BUllfQSk7CiAJ CQlpZiAoIU9QRikKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5v dCByZS1vcGVuIHRoZSBvdXRwdXQgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXByb2du YW1lLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCByZS1vcGVuIHRoZSBvdXRwdXQgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkg ZmlsZW5hbWUpOwogCQkJCWV4aXRfbmljZWx5KDEpOwogCQkJfQogCQl9CkBAIC0xNDc5LDgg KzE0NzIsNyBAQCBydW5QZ0R1bXAoY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpj cmVhdGVfb3B0cykKIAogCWFwcGVuZFNoZWxsU3RyaW5nKGNtZCwgY29ubnN0cmJ1Zi0+ZGF0 YSk7CiAKLQlpZiAodmVyYm9zZSkKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBydW5uaW5n IFwiJXNcIlxuIiksIHByb2duYW1lLCBjbWQtPmRhdGEpOworCXBnX2xvZ19pbmZvKCJydW5u aW5nIFwiJXNcIiIsIGNtZC0+ZGF0YSk7CiAKIAlmZmx1c2goc3Rkb3V0KTsKIAlmZmx1c2go c3RkZXJyKTsKQEAgLTE1ODAsNyArMTU3Miw3IEBAIGNvbm5lY3REYXRhYmFzZShjb25zdCBj aGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKmNvbm5lY3Rpb25fc3RyaW5nLAogCQkJY29ubl9v cHRzID0gUFFjb25uaW5mb1BhcnNlKGNvbm5lY3Rpb25fc3RyaW5nLCAmZXJyX21zZyk7CiAJ CQlpZiAoY29ubl9vcHRzID09IE5VTEwpCiAJCQl7Ci0JCQkJZnByaW50ZihzdGRlcnIsICIl czogJXMiLCBwcm9nbmFtZSwgZXJyX21zZyk7CisJCQkJcGdfbG9nX2Vycm9yKCIlcyIsIGVy cl9tc2cpOwogCQkJCWV4aXRfbmljZWx5KDEpOwogCQkJfQogCkBAIC0xNjUwLDggKzE2NDIs NyBAQCBjb25uZWN0RGF0YWJhc2UoY29uc3QgY2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpj b25uZWN0aW9uX3N0cmluZywKIAogCQlpZiAoIWNvbm4pCiAJCXsKLQkJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UgXCIlc1wiXG4iKSwK LQkJCQkJcHJvZ25hbWUsIGRibmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBj b25uZWN0IHRvIGRhdGFiYXNlIFwiJXNcIiIsIGRibmFtZSk7CiAJCQlleGl0X25pY2VseSgx KTsKIAkJfQogCkBAIC0xNjcyLDkgKzE2NjMsOCBAQCBjb25uZWN0RGF0YWJhc2UoY29uc3Qg Y2hhciAqZGJuYW1lLCBjb25zdCBjaGFyICpjb25uZWN0aW9uX3N0cmluZywKIAl7CiAJCWlm IChmYWlsX29uX2Vycm9yKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6 IGNvdWxkIG5vdCBjb25uZWN0IHRvIGRhdGFiYXNlIFwiJXNcIjogJXMiKSwKLQkJCQkJcHJv Z25hbWUsIGRibmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQkJcGdfbG9nX2Vycm9y KCJjb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSBcIiVzXCI6ICVzIiwKKwkJCQkJCSBk Ym5hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJCWV4aXRfbmljZWx5KDEpOwogCQl9 CiAJCWVsc2UKQEAgLTE3MDMsMTQgKzE2OTMsMTQgQEAgY29ubmVjdERhdGFiYXNlKGNvbnN0 IGNoYXIgKmRibmFtZSwgY29uc3QgY2hhciAqY29ubmVjdGlvbl9zdHJpbmcsCiAJcmVtb3Rl dmVyc2lvbl9zdHIgPSBQUXBhcmFtZXRlclN0YXR1cyhjb25uLCAic2VydmVyX3ZlcnNpb24i KTsKIAlpZiAoIXJlbW90ZXZlcnNpb25fc3RyKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBjb3VsZCBub3QgZ2V0IHNlcnZlciB2ZXJzaW9uXG4iKSwgcHJvZ25hbWUpOworCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCBnZXQgc2VydmVyIHZlcnNpb24iKTsKIAkJZXhpdF9u aWNlbHkoMSk7CiAJfQogCXNlcnZlcl92ZXJzaW9uID0gUFFzZXJ2ZXJWZXJzaW9uKGNvbm4p OwogCWlmIChzZXJ2ZXJfdmVyc2lvbiA9PSAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBjb3VsZCBub3QgcGFyc2Ugc2VydmVyIHZlcnNpb24gXCIlc1wiXG4iKSwKLQkJCQlw cm9nbmFtZSwgcmVtb3RldmVyc2lvbl9zdHIpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5v dCBwYXJzZSBzZXJ2ZXIgdmVyc2lvbiBcIiVzXCIiLAorCQkJCQkgcmVtb3RldmVyc2lvbl9z dHIpOwogCQlleGl0X25pY2VseSgxKTsKIAl9CiAKQEAgLTE3MjQsOSArMTcxNCw5IEBAIGNv bm5lY3REYXRhYmFzZShjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKmNvbm5lY3Rp b25fc3RyaW5nLAogCQkmJiAoc2VydmVyX3ZlcnNpb24gPCA4MDAwMCB8fAogCQkJKHNlcnZl cl92ZXJzaW9uIC8gMTAwKSA+IChteV92ZXJzaW9uIC8gMTAwKSkpCiAJewotCQlmcHJpbnRm KHN0ZGVyciwgXygic2VydmVyIHZlcnNpb246ICVzOyAlcyB2ZXJzaW9uOiAlc1xuIiksCi0J CQkJcmVtb3RldmVyc2lvbl9zdHIsIHByb2duYW1lLCBQR19WRVJTSU9OKTsKLQkJZnByaW50 ZihzdGRlcnIsIF8oImFib3J0aW5nIGJlY2F1c2Ugb2Ygc2VydmVyIHZlcnNpb24gbWlzbWF0 Y2hcbiIpKTsKKwkJcGdfbG9nX2Vycm9yKCJzZXJ2ZXIgdmVyc2lvbjogJXM7ICVzIHZlcnNp b246ICVzIiwKKwkJCQkJIHJlbW90ZXZlcnNpb25fc3RyLCBwcm9nbmFtZSwgUEdfVkVSU0lP Tik7CisJCXBnX2xvZ19lcnJvcigiYWJvcnRpbmcgYmVjYXVzZSBvZiBzZXJ2ZXIgdmVyc2lv biBtaXNtYXRjaCIpOwogCQlleGl0X25pY2VseSgxKTsKIAl9CiAKQEAgLTE3ODEsMTcgKzE3 NzEsMTQgQEAgZXhlY3V0ZVF1ZXJ5KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVlcnkp CiB7CiAJUEdyZXN1bHQgICAqcmVzOwogCi0JaWYgKHZlcmJvc2UpCi0JCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogZXhlY3V0aW5nICVzXG4iKSwgcHJvZ25hbWUsIHF1ZXJ5KTsKKwlwZ19s b2dfaW5mbygiZXhlY3V0aW5nICVzIiwgcXVlcnkpOwogCiAJcmVzID0gUFFleGVjKGNvbm4s IHF1ZXJ5KTsKIAlpZiAoIXJlcyB8fAogCQlQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVT X1RVUExFU19PSykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogcXVlcnkgZmFpbGVk OiAlcyIpLAotCQkJCXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7Ci0JCWZwcmlu dGYoc3RkZXJyLCBfKCIlczogcXVlcnkgd2FzOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIHF1 ZXJ5KTsKKwkJcGdfbG9nX2Vycm9yKCJxdWVyeSBmYWlsZWQ6ICVzIiwgUFFlcnJvck1lc3Nh Z2UoY29ubikpOworCQlwZ19sb2dfZXJyb3IoInF1ZXJ5IHdhczogJXMiLCBxdWVyeSk7CiAJ CVBRZmluaXNoKGNvbm4pOwogCQlleGl0X25pY2VseSgxKTsKIAl9CkBAIC0xODA3LDE3ICsx Nzk0LDE0IEBAIGV4ZWN1dGVDb21tYW5kKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcXVl cnkpCiB7CiAJUEdyZXN1bHQgICAqcmVzOwogCi0JaWYgKHZlcmJvc2UpCi0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogZXhlY3V0aW5nICVzXG4iKSwgcHJvZ25hbWUsIHF1ZXJ5KTsKKwlw Z19sb2dfaW5mbygiZXhlY3V0aW5nICVzIiwgcXVlcnkpOwogCiAJcmVzID0gUFFleGVjKGNv bm4sIHF1ZXJ5KTsKIAlpZiAoIXJlcyB8fAogCQlQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBH UkVTX0NPTU1BTkRfT0spCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHF1ZXJ5IGZh aWxlZDogJXMiKSwKLQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwotCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IHF1ZXJ5IHdhczogJXNcbiIpLAotCQkJCXByb2duYW1l LCBxdWVyeSk7CisJCXBnX2xvZ19lcnJvcigicXVlcnkgZmFpbGVkOiAlcyIsIFBRZXJyb3JN ZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJxdWVyeSB3YXM6ICVzIiwgcXVlcnkp OwogCQlQUWZpbmlzaChjb25uKTsKIAkJZXhpdF9uaWNlbHkoMSk7CiAJfQpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19y ZXN0b3JlLmMKaW5kZXggNDI4ZTA0MGFjYi4uMGE3ZWI0NmY1YiAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX3Jlc3RvcmUuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfcmVz dG9yZS5jCkBAIC01MSw2ICs1MSw4IEBACiAjaW5jbHVkZSAicGFyYWxsZWwuaCIKICNpbmNs dWRlICJwZ19iYWNrdXBfdXRpbHMuaCIKIAorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcu aCIKKwogCiBzdGF0aWMgdm9pZCB1c2FnZShjb25zdCBjaGFyICpwcm9nbmFtZSk7CiAKQEAg LTEyOCw2ICsxMzAsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJe05VTEws IDAsIE5VTEwsIDB9CiAJfTsKIAorCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKIAlzZXRf cGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4oInBnX2R1bXAiKSk7 CiAKIAlpbml0X3BhcmFsbGVsX2R1bXBfdXRpbHMoKTsKQEAgLTI5Niw4ICsyOTksOCBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkvKiBDb21wbGFpbiBpZiBhbnkgYXJndW1l bnRzIHJlbWFpbiAqLwogCWlmIChvcHRpbmQgPCBhcmdjKQogCXsKLQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiB0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyBc IiVzXCIpXG4iKSwKLQkJCQlwcm9nbmFtZSwgYXJndltvcHRpbmRdKTsKKwkJcGdfbG9nX2Vy cm9yKCJ0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIp IiwKKwkJCQkJIGFyZ3Zbb3B0aW5kXSk7CiAJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIl cyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCXByb2duYW1lKTsK IAkJZXhpdF9uaWNlbHkoMSk7CkBAIC0zMDgsOCArMzExLDcgQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAJewogCQlpZiAob3B0cy0+ZmlsZW5hbWUpCiAJCXsKLQkJCWZwcmlu dGYoc3RkZXJyLCBfKCIlczogb3B0aW9ucyAtZC8tLWRibmFtZSBhbmQgLWYvLS1maWxlIGNh bm5vdCBiZSB1c2VkIHRvZ2V0aGVyXG4iKSwKLQkJCQkJcHJvZ25hbWUpOworCQkJcGdfbG9n X2Vycm9yKCJvcHRpb25zIC1kLy0tZGJuYW1lIGFuZCAtZi8tLWZpbGUgY2Fubm90IGJlIHVz ZWQgdG9nZXRoZXIiKTsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBc IiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLAogCQkJCQlwcm9nbmFtZSk7CiAJCQlleGl0 X25pY2VseSgxKTsKQEAgLTMxOSwxNSArMzIxLDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCiAJaWYgKG9wdHMtPmRhdGFPbmx5ICYmIG9wdHMtPnNjaGVtYU9ubHkpCiAJ ewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG9wdGlvbnMgLXMvLS1zY2hlbWEtb25seSBh bmQgLWEvLS1kYXRhLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJcbiIpLAotCQkJCXBy b2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJvcHRpb25zIC1zLy0tc2NoZW1hLW9ubHkgYW5k IC1hLy0tZGF0YS1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIik7CiAJCWV4aXRfbmlj ZWx5KDEpOwogCX0KIAogCWlmIChvcHRzLT5kYXRhT25seSAmJiBvcHRzLT5kcm9wU2NoZW1h KQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBvcHRpb25zIC1jLy0tY2xlYW4gYW5k IC1hLy0tZGF0YS1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXG4iKSwKLQkJCQlwcm9n bmFtZSk7CisJCXBnX2xvZ19lcnJvcigib3B0aW9ucyAtYy8tLWNsZWFuIGFuZCAtYS8tLWRh dGEtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIpOwogCQlleGl0X25pY2VseSgxKTsK IAl9CiAKQEAgLTMzNywxNCArMzM3LDEzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQogCSAqLwogCWlmIChvcHRzLT5jcmVhdGVEQiAmJiBvcHRzLT5zaW5nbGVfdHhuKQogCXsK LQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBvcHRpb25zIC1DLy0tY3JlYXRlIGFuZCAtMS8t LXNpbmdsZS10cmFuc2FjdGlvbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxuIiksCi0JCQkJ cHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm9wdGlvbnMgLUMvLS1jcmVhdGUgYW5kIC0x Ly0tc2luZ2xlLXRyYW5zYWN0aW9uIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIik7CiAJCWV4 aXRfbmljZWx5KDEpOwogCX0KIAogCWlmIChudW1Xb3JrZXJzIDw9IDApCiAJewotCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IGludmFsaWQgbnVtYmVyIG9mIHBhcmFsbGVsIGpvYnNcbiIp LCBwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBudW1iZXIgb2YgcGFyYWxs ZWwgam9icyIpOwogCQlleGl0KDEpOwogCX0KIApAQCAtMzUyLDggKzM1MSw4IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogI2lmZGVmIFdJTjMyCiAJaWYgKG51bVdvcmtlcnMg PiBNQVhJTVVNX1dBSVRfT0JKRUNUUykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog bWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgam9icyBpcyAlZFxuIiksCi0JCQkJcHJvZ25h bWUsIE1BWElNVU1fV0FJVF9PQkpFQ1RTKTsKKwkJcGdfbG9nX2Vycm9yKCJtYXhpbXVtIG51 bWJlciBvZiBwYXJhbGxlbCBqb2JzIGlzICVkIiwKKwkJCQkJIE1BWElNVU1fV0FJVF9PQkpF Q1RTKTsKIAkJZXhpdCgxKTsKIAl9CiAjZW5kaWYKQEAgLTM2MSw4ICszNjAsNyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAkvKiBDYW4ndCBkbyBzaW5nbGUtdHhuIG1vZGUg d2l0aCBtdWx0aXBsZSBjb25uZWN0aW9ucyAqLwogCWlmIChvcHRzLT5zaW5nbGVfdHhuICYm IG51bVdvcmtlcnMgPiAxKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3Qg c3BlY2lmeSBib3RoIC0tc2luZ2xlLXRyYW5zYWN0aW9uIGFuZCBtdWx0aXBsZSBqb2JzXG4i KSwKLQkJCQlwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigiY2Fubm90IHNwZWNpZnkgYm90 aCAtLXNpbmdsZS10cmFuc2FjdGlvbiBhbmQgbXVsdGlwbGUgam9icyIpOwogCQlleGl0X25p Y2VseSgxKTsKIAl9CiAKQEAgLTM3OCw4ICszNzYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAogCWlmIChpZl9leGlzdHMgJiYgIW9wdHMtPmRyb3BTY2hlbWEpCiAJewot CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG9wdGlvbiAtLWlmLWV4aXN0cyByZXF1aXJlcyBv cHRpb24gLWMvLS1jbGVhblxuIiksCi0JCQkJcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3Io Im9wdGlvbiAtLWlmLWV4aXN0cyByZXF1aXJlcyBvcHRpb24gLWMvLS1jbGVhbiIpOwogCQll eGl0X25pY2VseSgxKTsKIAl9CiAJb3B0cy0+aWZfZXhpc3RzID0gaWZfZXhpc3RzOwpAQCAt NDA1LDcgKzQwMiw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWJyZWFr OwogCiAJCQlkZWZhdWx0OgotCQkJCXdyaXRlX21zZyhOVUxMLCAidW5yZWNvZ25pemVkIGFy Y2hpdmUgZm9ybWF0IFwiJXNcIjsgcGxlYXNlIHNwZWNpZnkgXCJjXCIsIFwiZFwiLCBvciBc InRcIlxuIiwKKwkJCQlwZ19sb2dfZXJyb3IoInVucmVjb2duaXplZCBhcmNoaXZlIGZvcm1h dCBcIiVzXCI7IHBsZWFzZSBzcGVjaWZ5IFwiY1wiLCBcImRcIiwgb3IgXCJ0XCIiLAogCQkJ CQkJICBvcHRzLT5mb3JtYXROYW1lKTsKIAkJCQlleGl0X25pY2VseSgxKTsKIAkJfQpAQCAt NDQ1LDggKzQ0Miw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJLyogZG9u ZSwgcHJpbnQgYSBzdW1tYXJ5IG9mIGlnbm9yZWQgZXJyb3JzICovCiAJaWYgKEFILT5uX2Vy cm9ycykKLQkJZnByaW50ZihzdGRlcnIsIF8oIldBUk5JTkc6IGVycm9ycyBpZ25vcmVkIG9u IHJlc3RvcmU6ICVkXG4iKSwKLQkJCQlBSC0+bl9lcnJvcnMpOworCQlwZ19sb2dfd2Fybmlu ZygiZXJyb3JzIGlnbm9yZWQgb24gcmVzdG9yZTogJWQiLCBBSC0+bl9lcnJvcnMpOwogCiAJ LyogQUggbWF5IGJlIGZyZWVkIGluIENsb3NlQXJjaGl2ZT8gKi8KIAlleGl0X2NvZGUgPSBB SC0+bl9lcnJvcnMgPyAxIDogMDsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAw MV9iYXNpYy5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5wbAppbmRleCBhODc1 ZDU0MGI4Li44N2QyNTA5OWFjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDFf YmFzaWMucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsCkBAIC0zMCwx MjMgKzMwLDEyMyBAQAogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcCcsICdx cXEnLCAnYWJjJyBdLAotCXFyL1xRcGdfZHVtcDogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFy Z3VtZW50cyAoZmlyc3QgaXMgImFiYyIpXEUvLAotCSdwZ19kdW1wOiB0b28gbWFueSBjb21t YW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyAiYXNkIiknKTsKKwlxci9cUXBnX2R1bXA6 IGVycm9yOiB0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyAiYWJj IilcRS8sCisJJ3BnX2R1bXA6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMnKTsK IAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX3Jlc3RvcmUnLCAncXFxJywgJ2FiYycg XSwKLQlxci9cUXBnX3Jlc3RvcmU6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMg KGZpcnN0IGlzICJhYmMiKVxFLywKLQkncGdfcmVzdG9yZSB0b28gbWFueSBjb21tYW5kLWxp bmUgYXJndW1lbnRzIChmaXJzdCBpcyAiYWJjIiknKTsKKwlxci9cUXBnX3Jlc3RvcmU6IGVy cm9yOiB0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyAiYWJjIilc RS8sCisJJ3BnX3Jlc3RvcmU6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMnKTsK IAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1bXBhbGwnLCAncXFxJywgJ2FiYycg XSwKLQlxci9cUXBnX2R1bXBhbGw6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMg KGZpcnN0IGlzICJxcXEiKVxFLywKLQkncGdfZHVtcGFsbDogdG9vIG1hbnkgY29tbWFuZC1s aW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgInFxcSIpJyk7CisJcXIvXFFwZ19kdW1wYWxsOiBl cnJvcjogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgInFxcSIp XEUvLAorCSdwZ19kdW1wYWxsOiB0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzJyk7 CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19kdW1wJywgJy1zJywgJy1hJyBdLAot CXFyL1xRcGdfZHVtcDogb3B0aW9ucyAtc1wvLS1zY2hlbWEtb25seSBhbmQgLWFcLy0tZGF0 YS1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXEUvLAorCXFyL1xRcGdfZHVtcDogZXJy b3I6IG9wdGlvbnMgLXNcLy0tc2NoZW1hLW9ubHkgYW5kIC1hXC8tLWRhdGEtb25seSBjYW5u b3QgYmUgdXNlZCB0b2dldGhlclxFLywKIAkncGdfZHVtcDogb3B0aW9ucyAtcy8tLXNjaGVt YS1vbmx5IGFuZCAtYS8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlcicKICk7 CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19yZXN0b3JlJywgJy1zJywgJy1hJyBd LAotCXFyL1xRcGdfcmVzdG9yZTogb3B0aW9ucyAtc1wvLS1zY2hlbWEtb25seSBhbmQgLWFc Ly0tZGF0YS1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXEUvLAorCXFyL1xRcGdfcmVz dG9yZTogZXJyb3I6IG9wdGlvbnMgLXNcLy0tc2NoZW1hLW9ubHkgYW5kIC1hXC8tLWRhdGEt b25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxFLywKIAkncGdfcmVzdG9yZTogb3B0aW9u cyAtcy8tLXNjaGVtYS1vbmx5IGFuZCAtYS8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNlZCB0 b2dldGhlcicKICk7CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19yZXN0b3JlJywg Jy1kJywgJ3h4eCcsICctZicsICd4eHgnIF0sCi0JcXIvXFFwZ19yZXN0b3JlOiBvcHRpb25z IC1kXC8tLWRibmFtZSBhbmQgLWZcLy0tZmlsZSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxF LywKKwlxci9cUXBnX3Jlc3RvcmU6IGVycm9yOiBvcHRpb25zIC1kXC8tLWRibmFtZSBhbmQg LWZcLy0tZmlsZSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxFLywKIAkncGdfcmVzdG9yZTog b3B0aW9ucyAtZC8tLWRibmFtZSBhbmQgLWYvLS1maWxlIGNhbm5vdCBiZSB1c2VkIHRvZ2V0 aGVyJyk7CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19kdW1wJywgJy1jJywgJy1h JyBdLAotCXFyL1xRcGdfZHVtcDogb3B0aW9ucyAtY1wvLS1jbGVhbiBhbmQgLWFcLy0tZGF0 YS1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXEUvLAorCXFyL1xRcGdfZHVtcDogZXJy b3I6IG9wdGlvbnMgLWNcLy0tY2xlYW4gYW5kIC1hXC8tLWRhdGEtb25seSBjYW5ub3QgYmUg dXNlZCB0b2dldGhlclxFLywKIAkncGdfZHVtcDogb3B0aW9ucyAtYy8tLWNsZWFuIGFuZCAt YS8tLWRhdGEtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlcicpOwogCiBjb21tYW5kX2Zh aWxzX2xpa2UoCiAJWyAncGdfcmVzdG9yZScsICctYycsICctYScgXSwKLQlxci9cUXBnX3Jl c3RvcmU6IG9wdGlvbnMgLWNcLy0tY2xlYW4gYW5kIC1hXC8tLWRhdGEtb25seSBjYW5ub3Qg YmUgdXNlZCB0b2dldGhlclxFLywKKwlxci9cUXBnX3Jlc3RvcmU6IGVycm9yOiBvcHRpb25z IC1jXC8tLWNsZWFuIGFuZCAtYVwvLS1kYXRhLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRo ZXJcRS8sCiAJJ3BnX3Jlc3RvcmU6IG9wdGlvbnMgLWMvLS1jbGVhbiBhbmQgLWEvLS1kYXRh LW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXInCiApOwogCiBjb21tYW5kX2ZhaWxzX2xp a2UoCiAJWyAncGdfZHVtcCcsICctLWlmLWV4aXN0cycgXSwKLQlxci9cUXBnX2R1bXA6IG9w dGlvbiAtLWlmLWV4aXN0cyByZXF1aXJlcyBvcHRpb24gLWNcLy0tY2xlYW5cRS8sCisJcXIv XFFwZ19kdW1wOiBlcnJvcjogb3B0aW9uIC0taWYtZXhpc3RzIHJlcXVpcmVzIG9wdGlvbiAt Y1wvLS1jbGVhblxFLywKIAkncGdfZHVtcDogb3B0aW9uIC0taWYtZXhpc3RzIHJlcXVpcmVz IG9wdGlvbiAtYy8tLWNsZWFuJyk7CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19k dW1wJywgJy1qMycgXSwKLQlxci9cUXBnX2R1bXA6IHBhcmFsbGVsIGJhY2t1cCBvbmx5IHN1 cHBvcnRlZCBieSB0aGUgZGlyZWN0b3J5IGZvcm1hdFxFLywKKwlxci9cUXBnX2R1bXA6IGVy cm9yOiBwYXJhbGxlbCBiYWNrdXAgb25seSBzdXBwb3J0ZWQgYnkgdGhlIGRpcmVjdG9yeSBm b3JtYXRcRS8sCiAJJ3BnX2R1bXA6IHBhcmFsbGVsIGJhY2t1cCBvbmx5IHN1cHBvcnRlZCBi eSB0aGUgZGlyZWN0b3J5IGZvcm1hdCcpOwogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAn cGdfZHVtcCcsICctaicsICctMScgXSwKLQlxci9cUXBnX2R1bXA6IGludmFsaWQgbnVtYmVy IG9mIHBhcmFsbGVsIGpvYnNcRS8sCisJcXIvXFFwZ19kdW1wOiBlcnJvcjogaW52YWxpZCBu dW1iZXIgb2YgcGFyYWxsZWwgam9ic1xFLywKIAkncGdfZHVtcDogaW52YWxpZCBudW1iZXIg b2YgcGFyYWxsZWwgam9icycpOwogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVt cCcsICctRicsICdnYXJiYWdlJyBdLAotCXFyL1xRcGdfZHVtcDogaW52YWxpZCBvdXRwdXQg Zm9ybWF0XEUvLAorCXFyL1xRcGdfZHVtcDogZXJyb3I6IGludmFsaWQgb3V0cHV0IGZvcm1h dFxFLywKIAkncGdfZHVtcDogaW52YWxpZCBvdXRwdXQgZm9ybWF0Jyk7CiAKIGNvbW1hbmRf ZmFpbHNfbGlrZSgKIAlbICdwZ19yZXN0b3JlJywgJy1qJywgJy0xJyBdLAotCXFyL1xRcGdf cmVzdG9yZTogaW52YWxpZCBudW1iZXIgb2YgcGFyYWxsZWwgam9ic1xFLywKKwlxci9cUXBn X3Jlc3RvcmU6IGVycm9yOiBpbnZhbGlkIG51bWJlciBvZiBwYXJhbGxlbCBqb2JzXEUvLAog CSdwZ19yZXN0b3JlOiBpbnZhbGlkIG51bWJlciBvZiBwYXJhbGxlbCBqb2JzJyk7CiAKIGNv bW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19yZXN0b3JlJywgJy0tc2luZ2xlLXRyYW5zYWN0 aW9uJywgJy1qMycgXSwKLQlxci9cUXBnX3Jlc3RvcmU6IGNhbm5vdCBzcGVjaWZ5IGJvdGgg LS1zaW5nbGUtdHJhbnNhY3Rpb24gYW5kIG11bHRpcGxlIGpvYnNcRS8sCisJcXIvXFFwZ19y ZXN0b3JlOiBlcnJvcjogY2Fubm90IHNwZWNpZnkgYm90aCAtLXNpbmdsZS10cmFuc2FjdGlv biBhbmQgbXVsdGlwbGUgam9ic1xFLywKIAkncGdfcmVzdG9yZTogY2Fubm90IHNwZWNpZnkg Ym90aCAtLXNpbmdsZS10cmFuc2FjdGlvbiBhbmQgbXVsdGlwbGUgam9icycpOwogCiBjb21t YW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcCcsICctWicsICctMScgXSwKLQlxci9cUXBn X2R1bXA6IGNvbXByZXNzaW9uIGxldmVsIG11c3QgYmUgaW4gcmFuZ2UgMC4uOVxFLywKKwlx ci9cUXBnX2R1bXA6IGVycm9yOiBjb21wcmVzc2lvbiBsZXZlbCBtdXN0IGJlIGluIHJhbmdl IDAuLjlcRS8sCiAJJ3BnX2R1bXA6IGNvbXByZXNzaW9uIGxldmVsIG11c3QgYmUgaW4gcmFu Z2UgMC4uOScpOwogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfcmVzdG9yZScsICct LWlmLWV4aXN0cycgXSwKLQlxci9cUXBnX3Jlc3RvcmU6IG9wdGlvbiAtLWlmLWV4aXN0cyBy ZXF1aXJlcyBvcHRpb24gLWNcLy0tY2xlYW5cRS8sCisJcXIvXFFwZ19yZXN0b3JlOiBlcnJv cjogb3B0aW9uIC0taWYtZXhpc3RzIHJlcXVpcmVzIG9wdGlvbiAtY1wvLS1jbGVhblxFLywK IAkncGdfcmVzdG9yZTogb3B0aW9uIC0taWYtZXhpc3RzIHJlcXVpcmVzIG9wdGlvbiAtYy8t LWNsZWFuJyk7CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19yZXN0b3JlJywgJy1G JywgJ2dhcmJhZ2UnIF0sCi0JcXIvXFFwZ19yZXN0b3JlOiB1bnJlY29nbml6ZWQgYXJjaGl2 ZSBmb3JtYXQgImdhcmJhZ2UiO1xFLywKKwlxci9cUXBnX3Jlc3RvcmU6IGVycm9yOiB1bnJl Y29nbml6ZWQgYXJjaGl2ZSBmb3JtYXQgImdhcmJhZ2UiO1xFLywKIAkncGdfZHVtcDogdW5y ZWNvZ25pemVkIGFyY2hpdmUgZm9ybWF0Jyk7CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlb ICdwZ19kdW1wJywgJy0tb24tY29uZmxpY3QtZG8tbm90aGluZycgXSwKLQlxci9cUXBnX2R1 bXA6IG9wdGlvbiAtLW9uLWNvbmZsaWN0LWRvLW5vdGhpbmcgcmVxdWlyZXMgb3B0aW9uIC0t aW5zZXJ0cyBvciAtLWNvbHVtbi1pbnNlcnRzXEUvLAorCXFyL1xRcGdfZHVtcDogZXJyb3I6 IG9wdGlvbiAtLW9uLWNvbmZsaWN0LWRvLW5vdGhpbmcgcmVxdWlyZXMgb3B0aW9uIC0taW5z ZXJ0cyBvciAtLWNvbHVtbi1pbnNlcnRzXEUvLAogCSdwZ19kdW1wOiBvcHRpb24gLS1vbi1j b25mbGljdC1kby1ub3RoaW5nIHJlcXVpcmVzIG9wdGlvbiAtLWluc2VydHMgb3IgLS1jb2x1 bW4taW5zZXJ0cycpOwogCiAjIHBnX2R1bXBhbGwgY29tbWFuZC1saW5lIGFyZ3VtZW50IGNo ZWNrcwogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1bXBhbGwnLCAnLWcnLCAnLXIn IF0sCi0JcXIvXFFwZ19kdW1wYWxsOiBvcHRpb25zIC1nXC8tLWdsb2JhbHMtb25seSBhbmQg LXJcLy0tcm9sZXMtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxFLywKKwlxci9cUXBn X2R1bXBhbGw6IGVycm9yOiBvcHRpb25zIC1nXC8tLWdsb2JhbHMtb25seSBhbmQgLXJcLy0t cm9sZXMtb25seSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlclxFLywKIAkncGdfZHVtcGFsbDog b3B0aW9ucyAtZy8tLWdsb2JhbHMtb25seSBhbmQgLXIvLS1yb2xlcy1vbmx5IGNhbm5vdCBi ZSB1c2VkIHRvZ2V0aGVyJwogKTsKIAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1 bXBhbGwnLCAnLWcnLCAnLXQnIF0sCi0JcXIvXFFwZ19kdW1wYWxsOiBvcHRpb25zIC1nXC8t LWdsb2JhbHMtb25seSBhbmQgLXRcLy0tdGFibGVzcGFjZXMtb25seSBjYW5ub3QgYmUgdXNl ZCB0b2dldGhlclxFLywKKwlxci9cUXBnX2R1bXBhbGw6IGVycm9yOiBvcHRpb25zIC1nXC8t LWdsb2JhbHMtb25seSBhbmQgLXRcLy0tdGFibGVzcGFjZXMtb25seSBjYW5ub3QgYmUgdXNl ZCB0b2dldGhlclxFLywKIAkncGdfZHVtcGFsbDogb3B0aW9ucyAtZy8tLWdsb2JhbHMtb25s eSBhbmQgLXQvLS10YWJsZXNwYWNlcy1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyJwog KTsKIAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1bXBhbGwnLCAnLXInLCAnLXQn IF0sCi0JcXIvXFFwZ19kdW1wYWxsOiBvcHRpb25zIC1yXC8tLXJvbGVzLW9ubHkgYW5kIC10 XC8tLXRhYmxlc3BhY2VzLW9ubHkgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXJcRS8sCisJcXIv XFFwZ19kdW1wYWxsOiBlcnJvcjogb3B0aW9ucyAtclwvLS1yb2xlcy1vbmx5IGFuZCAtdFwv LS10YWJsZXNwYWNlcy1vbmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyXEUvLAogCSdwZ19k dW1wYWxsOiBvcHRpb25zIC1yLy0tcm9sZXMtb25seSBhbmQgLXQvLS10YWJsZXNwYWNlcy1v bmx5IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyJwogKTsKIAogY29tbWFuZF9mYWlsc19saWtl KAogCVsgJ3BnX2R1bXBhbGwnLCAnLS1pZi1leGlzdHMnIF0sCi0JcXIvXFFwZ19kdW1wYWxs OiBvcHRpb24gLS1pZi1leGlzdHMgcmVxdWlyZXMgb3B0aW9uIC1jXC8tLWNsZWFuXEUvLAor CXFyL1xRcGdfZHVtcGFsbDogZXJyb3I6IG9wdGlvbiAtLWlmLWV4aXN0cyByZXF1aXJlcyBv cHRpb24gLWNcLy0tY2xlYW5cRS8sCiAJJ3BnX2R1bXBhbGw6IG9wdGlvbiAtLWlmLWV4aXN0 cyByZXF1aXJlcyBvcHRpb24gLWMvLS1jbGVhbicpOwogCiBjb21tYW5kX2ZhaWxzX2xpa2Uo CiAJWyAncGdfcmVzdG9yZScsICctQycsICctMScgXSwKLQlxci9cUXBnX3Jlc3RvcmU6IG9w dGlvbnMgLUNcLy0tY3JlYXRlIGFuZCAtMVwvLS1zaW5nbGUtdHJhbnNhY3Rpb24gY2Fubm90 IGJlIHVzZWQgdG9nZXRoZXJcRS8sCisJcXIvXFFwZ19yZXN0b3JlOiBlcnJvcjogb3B0aW9u cyAtQ1wvLS1jcmVhdGUgYW5kIC0xXC8tLXNpbmdsZS10cmFuc2FjdGlvbiBjYW5ub3QgYmUg dXNlZCB0b2dldGhlclxFLywKIAkncGdfcmVzdG9yZTogb3B0aW9ucyAtQ1wvLS1jcmVhdGUg YW5kIC0xXC8tLXNpbmdsZS10cmFuc2FjdGlvbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlcicK ICk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3Ny Yy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IDAyMzNmY2I0N2YuLjZjYmI3 ODQyNTYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisr KyBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC0zMjE1LDggKzMyMTUs OCBAQAogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJWyAncGdfZHVtcCcsICctcCcsICIkcG9y dCIsICdxcXEnIF0sCi0JcXIvXFFwZ19kdW1wOiBbYXJjaGl2ZXIgKGRiKV0gY29ubmVjdGlv biB0byBkYXRhYmFzZSAicXFxIiBmYWlsZWQ6IEZBVEFMOiAgZGF0YWJhc2UgInFxcSIgZG9l cyBub3QgZXhpc3RcRS8sCi0JJ3BnX2R1bXA6IFthcmNoaXZlciAoZGIpXSBjb25uZWN0aW9u IHRvIGRhdGFiYXNlICJxcXEiIGZhaWxlZDogRkFUQUw6ICBkYXRhYmFzZSAicXFxIiBkb2Vz IG5vdCBleGlzdCcKKwlxci9cUXBnX2R1bXA6IGVycm9yOiBjb25uZWN0aW9uIHRvIGRhdGFi YXNlICJxcXEiIGZhaWxlZDogRkFUQUw6ICBkYXRhYmFzZSAicXFxIiBkb2VzIG5vdCBleGlz dFxFLywKKwkncGdfZHVtcDogZXJyb3I6IGNvbm5lY3Rpb24gdG8gZGF0YWJhc2UgInFxcSIg ZmFpbGVkOiBGQVRBTDogIGRhdGFiYXNlICJxcXEiIGRvZXMgbm90IGV4aXN0JwogKTsKIAog IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTMyMjQsMzAg KzMyMjQsMzAgQEAKIAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1bXAnLCAnLXAn LCAiJHBvcnQiLCAnLS1yb2xlPXJlZ3Jlc3NfZHVtcF90ZXN0X3JvbGUnIF0sCi0JcXIvXFFw Z19kdW1wOiBbYXJjaGl2ZXIgKGRiKV0gcXVlcnkgZmFpbGVkOiBFUlJPUjogIHBlcm1pc3Np b24gZGVuaWVkIGZvclxFLywKLQkncGdfZHVtcDogW2FyY2hpdmVyIChkYildIHF1ZXJ5IGZh aWxlZDogRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3InKTsKKwlxci9cUXBnX2R1bXA6 IGVycm9yOiBxdWVyeSBmYWlsZWQ6IEVSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yXEUv LAorCSdwZ19kdW1wOiBlcnJvcjogcXVlcnkgZmFpbGVkOiBFUlJPUjogIHBlcm1pc3Npb24g ZGVuaWVkIGZvcicpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogIyBUZXN0IGR1bXBpbmcgYSBub24tZXhpc3RlbnQgc2NoZW1hLCB0YWJsZSwgYW5k IHBhdHRlcm5zIHdpdGggLS1zdHJpY3QtbmFtZXMKIAogY29tbWFuZF9mYWlsc19saWtlKAog CVsgJ3BnX2R1bXAnLCAnLXAnLCAiJHBvcnQiLCAnLW4nLCAnbm9uZXhpc3RhbnQnIF0sCi0J cXIvXFFwZ19kdW1wOiBubyBtYXRjaGluZyBzY2hlbWFzIHdlcmUgZm91bmRcRS8sCisJcXIv XFFwZ19kdW1wOiBlcnJvcjogbm8gbWF0Y2hpbmcgc2NoZW1hcyB3ZXJlIGZvdW5kXEUvLAog CSdwZ19kdW1wOiBubyBtYXRjaGluZyBzY2hlbWFzIHdlcmUgZm91bmQnKTsKIAogY29tbWFu ZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1bXAnLCAnLXAnLCAiJHBvcnQiLCAnLXQnLCAnbm9u ZXhpc3RhbnQnIF0sCi0JcXIvXFFwZ19kdW1wOiBubyBtYXRjaGluZyB0YWJsZXMgd2VyZSBm b3VuZFxFLywKKwlxci9cUXBnX2R1bXA6IGVycm9yOiBubyBtYXRjaGluZyB0YWJsZXMgd2Vy ZSBmb3VuZFxFLywKIAkncGdfZHVtcDogbm8gbWF0Y2hpbmcgdGFibGVzIHdlcmUgZm91bmQn KTsKIAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1bXAnLCAnLXAnLCAiJHBvcnQi LCAnLS1zdHJpY3QtbmFtZXMnLCAnLW4nLCAnbm9uZXhpc3RhbnQqJyBdLAotCXFyL1xRcGdf ZHVtcDogbm8gbWF0Y2hpbmcgc2NoZW1hcyB3ZXJlIGZvdW5kIGZvciBwYXR0ZXJuXEUvLAor CXFyL1xRcGdfZHVtcDogZXJyb3I6IG5vIG1hdGNoaW5nIHNjaGVtYXMgd2VyZSBmb3VuZCBm b3IgcGF0dGVyblxFLywKIAkncGdfZHVtcDogbm8gbWF0Y2hpbmcgc2NoZW1hcyB3ZXJlIGZv dW5kIGZvciBwYXR0ZXJuJyk7CiAKIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19kdW1w JywgJy1wJywgIiRwb3J0IiwgJy0tc3RyaWN0LW5hbWVzJywgJy10JywgJ25vbmV4aXN0YW50 KicgXSwKLQlxci9cUXBnX2R1bXA6IG5vIG1hdGNoaW5nIHRhYmxlcyB3ZXJlIGZvdW5kIGZv ciBwYXR0ZXJuXEUvLAorCXFyL1xRcGdfZHVtcDogZXJyb3I6IG5vIG1hdGNoaW5nIHRhYmxl cyB3ZXJlIGZvdW5kIGZvciBwYXR0ZXJuXEUvLAogCSdwZ19kdW1wOiBubyBtYXRjaGluZyB0 YWJsZXMgd2VyZSBmb3VuZCBmb3IgcGF0dGVybicpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNldHdh bC9NYWtlZmlsZSBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvTWFrZWZpbGUKaW5kZXggMmEzODM1 NjkxZi4uMDllZGUxZWZkMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9NYWtl ZmlsZQorKysgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL01ha2VmaWxlCkBAIC0xNSwxMSArMTUs MTMgQEAgc3ViZGlyID0gc3JjL2Jpbi9wZ19yZXNldHdhbAogdG9wX2J1aWxkZGlyID0gLi4v Li4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIAor TERGTEFHU19JTlRFUk5BTCArPSAtTCQodG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMgLWxw Z2ZldXRpbHMKKwogT0JKUz0gcGdfcmVzZXR3YWwubyAkKFdJTjMyUkVTKQogCiBhbGw6IHBn X3Jlc2V0d2FsCiAKLXBnX3Jlc2V0d2FsOiAkKE9CSlMpIHwgc3VibWFrZS1saWJwZ3BvcnQK K3BnX3Jlc2V0d2FsOiAkKE9CSlMpIHwgc3VibWFrZS1saWJwZ3BvcnQgc3VibWFrZS1saWJw Z2ZldXRpbHMKIAkkKENDKSAkKENGTEFHUykgJF4gJChMREZMQUdTKSAkKExERkxBR1NfRVgp ICQoTElCUykgLW8gJEAkKFgpCiAKIGluc3RhbGw6IGFsbCBpbnN0YWxsZGlycwpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9ubHMubWsgYi9zcmMvYmluL3BnX3Jlc2V0d2Fs L25scy5tawppbmRleCA4MmVjNGY3NDNjLi5jYzQwODc1YjQ4IDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX3Jlc2V0d2FsL25scy5taworKysgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL25scy5t awpAQCAtMSw0ICsxLDYgQEAKICMgc3JjL2Jpbi9wZ19yZXNldHdhbC9ubHMubWsKIENBVEFM T0dfTkFNRSAgICAgPSBwZ19yZXNldHdhbAogQVZBSUxfTEFOR1VBR0VTICA9IGNzIGRlIGVz IGZyIGl0IGphIGtvIHBsIHB0X0JSIHJ1IHN2IHRyIHpoX0NOCi1HRVRURVhUX0ZJTEVTICAg ID0gcGdfcmVzZXR3YWwuYyAuLi8uLi9jb21tb24vcmVzdHJpY3RlZF90b2tlbi5jCitHRVRU RVhUX0ZJTEVTICAgID0gJChGUk9OVEVORF9DT01NT05fR0VUVEVYVF9GSUxFUykgcGdfcmVz ZXR3YWwuYyAuLi8uLi9jb21tb24vcmVzdHJpY3RlZF90b2tlbi5jCitHRVRURVhUX1RSSUdH RVJTID0gJChGUk9OVEVORF9DT01NT05fR0VUVEVYVF9UUklHR0VSUykKK0dFVFRFWFRfRkxB R1MgICAgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX0ZMQUdTKQpkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jIGIvc3JjL2Jpbi9wZ19yZXNldHdh bC9wZ19yZXNldHdhbC5jCmluZGV4IDJhZjg3MTMyMTYuLjgyNWEyMGE4ZGUgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYworKysgYi9zcmMvYmluL3Bn X3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJj b21tb24vZmVfbWVtdXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCiAj aW5jbHVkZSAiY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uaCIKKyNpbmNsdWRlICJmZV91dGls cy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sYXJnZV9vYmplY3QuaCIKICNpbmNs dWRlICJwZ19nZXRvcHQuaCIKICNpbmNsdWRlICJnZXRvcHRfbG9uZy5oIgpAQCAtMTE2LDgg KzExNyw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAljaGFyCSAgICpsb2df Zm5hbWUgPSBOVUxMOwogCWludAkJCWZkOwogCisJcGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0p OwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlswXSwgUEdfVEVYVERPTUFJTigicGdf cmVzZXR3YWwiKSk7Ci0KIAlwcm9nbmFtZSA9IGdldF9wcm9nbmFtZShhcmd2WzBdKTsKIAog CWlmIChhcmdjID4gMSkKQEAgLTE1NywxMyArMTU4LDEzIEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKIAkJCQl7CiAJCQkJCS8qLS0tLS0tCiAJCQkJCSAgdHJhbnNsYXRvcjog dGhlIHNlY29uZCAlcyBpcyBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCAoLWUsIGV0YykgKi8K LQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIGFyZ3VtZW50IGZvciBvcHRp b24gJXNcbiIpLCBwcm9nbmFtZSwgIi1lIik7CisJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxp ZCBhcmd1bWVudCBmb3Igb3B0aW9uICVzIiwgIi1lIik7CiAJCQkJCWZwcmludGYoc3RkZXJy LCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9n bmFtZSk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCWlmIChzZXRfeGlkX2Vwb2NoID09 IC0xKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0cmFuc2FjdGlvbiBJ RCBlcG9jaCAoLWUpIG11c3Qgbm90IGJlIC0xXG4iKSwgcHJvZ25hbWUpOworCQkJCQlwZ19s b2dfZXJyb3IoInRyYW5zYWN0aW9uIElEIGVwb2NoICgtZSkgbXVzdCBub3QgYmUgLTEiKTsK IAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJYnJlYWs7CkBAIC0xNzIsMTMgKzE3MywxMyBA QCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJc2V0X3hpZCA9IHN0cnRvdWwo b3B0YXJnLCAmZW5kcHRyLCAwKTsKIAkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5k cHRyICE9ICdcMCcpCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGludmFs aWQgYXJndW1lbnQgZm9yIG9wdGlvbiAlc1xuIiksIHByb2duYW1lLCAiLXgiKTsKKwkJCQkJ cGdfbG9nX2Vycm9yKCJpbnZhbGlkIGFyZ3VtZW50IGZvciBvcHRpb24gJXMiLCAiLXgiKTsK IAkJCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGlu Zm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJ aWYgKHNldF94aWQgPT0gMCkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczog dHJhbnNhY3Rpb24gSUQgKC14KSBtdXN0IG5vdCBiZSAwXG4iKSwgcHJvZ25hbWUpOworCQkJ CQlwZ19sb2dfZXJyb3IoInRyYW5zYWN0aW9uIElEICgteCkgbXVzdCBub3QgYmUgMCIpOwog CQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTE4NywxNCArMTg4LDE0IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQlzZXRfb2xkZXN0X2NvbW1pdF90 c194aWQgPSBzdHJ0b3VsKG9wdGFyZywgJmVuZHB0ciwgMCk7CiAJCQkJaWYgKGVuZHB0ciA9 PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAnLCcpCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IGludmFsaWQgYXJndW1lbnQgZm9yIG9wdGlvbiAlc1xuIiksIHByb2duYW1l LCAiLWMiKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGFyZ3VtZW50IGZvciBvcHRp b24gJXMiLCAiLWMiKTsKIAkJCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVs cFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJCQkJZXhpdCgx KTsKIAkJCQl9CiAJCQkJc2V0X25ld2VzdF9jb21taXRfdHNfeGlkID0gc3RydG91bChlbmRw dHIgKyAxLCAmZW5kcHRyMiwgMCk7CiAJCQkJaWYgKGVuZHB0cjIgPT0gZW5kcHRyICsgMSB8 fCAqZW5kcHRyMiAhPSAnXDAnKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBpbnZhbGlkIGFyZ3VtZW50IGZvciBvcHRpb24gJXNcbiIpLCBwcm9nbmFtZSwgIi1jIik7 CisJCQkJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBhcmd1bWVudCBmb3Igb3B0aW9uICVzIiwg Ii1jIik7CiAJCQkJCWZwcmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3Ig bW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJ fQpAQCAtMjAyLDE0ICsyMDMsMTQgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog CQkJCWlmIChzZXRfb2xkZXN0X2NvbW1pdF90c194aWQgPCAyICYmCiAJCQkJCXNldF9vbGRl c3RfY29tbWl0X3RzX3hpZCAhPSAwKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiB0cmFuc2FjdGlvbiBJRCAoLWMpIG11c3QgYmUgZWl0aGVyIDAgb3IgZ3JlYXRlciB0 aGFuIG9yIGVxdWFsIHRvIDJcbiIpLCBwcm9nbmFtZSk7CisJCQkJCXBnX2xvZ19lcnJvcigi dHJhbnNhY3Rpb24gSUQgKC1jKSBtdXN0IGJlIGVpdGhlciAwIG9yIGdyZWF0ZXIgdGhhbiBv ciBlcXVhbCB0byAyIik7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCiAJCQkJaWYgKHNldF9u ZXdlc3RfY29tbWl0X3RzX3hpZCA8IDIgJiYKIAkJCQkJc2V0X25ld2VzdF9jb21taXRfdHNf eGlkICE9IDApCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHRyYW5zYWN0 aW9uIElEICgtYykgbXVzdCBiZSBlaXRoZXIgMCBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwg dG8gMlxuIiksIHByb2duYW1lKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJ0cmFuc2FjdGlvbiBJ RCAoLWMpIG11c3QgYmUgZWl0aGVyIDAgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDIi KTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJYnJlYWs7CkBAIC0yMTgsMTMgKzIxOSwx MyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJc2V0X29pZCA9IHN0cnRv dWwob3B0YXJnLCAmZW5kcHRyLCAwKTsKIAkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAq ZW5kcHRyICE9ICdcMCcpCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGlu dmFsaWQgYXJndW1lbnQgZm9yIG9wdGlvbiAlc1xuIiksIHByb2duYW1lLCAiLW8iKTsKKwkJ CQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGFyZ3VtZW50IGZvciBvcHRpb24gJXMiLCAiLW8i KTsKIAkJCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3Jl IGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJ CQkJaWYgKHNldF9vaWQgPT0gMCkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIl czogT0lEICgtbykgbXVzdCBub3QgYmUgMFxuIiksIHByb2duYW1lKTsKKwkJCQkJcGdfbG9n X2Vycm9yKCJPSUQgKC1vKSBtdXN0IG5vdCBiZSAwIik7CiAJCQkJCWV4aXQoMSk7CiAJCQkJ fQogCQkJCWJyZWFrOwpAQCAtMjMzLDcgKzIzNCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAkJCQlzZXRfbXhpZCA9IHN0cnRvdWwob3B0YXJnLCAmZW5kcHRyLCAwKTsK IAkJCQlpZiAoZW5kcHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICcsJykKIAkJCQl7Ci0J CQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogaW52YWxpZCBhcmd1bWVudCBmb3Igb3B0aW9u ICVzXG4iKSwgcHJvZ25hbWUsICItbSIpOworCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQg YXJndW1lbnQgZm9yIG9wdGlvbiAlcyIsICItbSIpOwogCQkJCQlmcHJpbnRmKHN0ZGVyciwg XygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25h bWUpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KQEAgLTI0MSwxMyArMjQyLDEzIEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQlzZXRfb2xkZXN0bXhpZCA9IHN0cnRvdWwo ZW5kcHRyICsgMSwgJmVuZHB0cjIsIDApOwogCQkJCWlmIChlbmRwdHIyID09IGVuZHB0ciAr IDEgfHwgKmVuZHB0cjIgIT0gJ1wwJykKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBf KCIlczogaW52YWxpZCBhcmd1bWVudCBmb3Igb3B0aW9uICVzXG4iKSwgcHJvZ25hbWUsICIt bSIpOworCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgYXJndW1lbnQgZm9yIG9wdGlvbiAl cyIsICItbSIpOwogCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIg Zm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQkJCQlleGl0KDEpOwog CQkJCX0KIAkJCQlpZiAoc2V0X214aWQgPT0gMCkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogbXVsdGl0cmFuc2FjdGlvbiBJRCAoLW0pIG11c3Qgbm90IGJlIDBcbiIp LCBwcm9nbmFtZSk7CisJCQkJCXBnX2xvZ19lcnJvcigibXVsdGl0cmFuc2FjdGlvbiBJRCAo LW0pIG11c3Qgbm90IGJlIDAiKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAKQEAgLTI1Nyw4 ICsyNTgsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJICovCiAJCQkJ aWYgKHNldF9vbGRlc3RteGlkID09IDApCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IG9sZGVzdCBtdWx0aXRyYW5zYWN0aW9uIElEICgtbSkgbXVzdCBub3QgYmUgMFxu IiksCi0JCQkJCQkJcHJvZ25hbWUpOworCQkJCQlwZ19sb2dfZXJyb3IoIm9sZGVzdCBtdWx0 aXRyYW5zYWN0aW9uIElEICgtbSkgbXVzdCBub3QgYmUgMCIpOwogCQkJCQlleGl0KDEpOwog CQkJCX0KIAkJCQlicmVhazsKQEAgLTI2NywxMyArMjY3LDEzIEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKIAkJCQlzZXRfbXhvZmYgPSBzdHJ0b3VsKG9wdGFyZywgJmVuZHB0 ciwgMCk7CiAJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAnXDAnKQog CQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIGFyZ3VtZW50IGZv ciBvcHRpb24gJXNcbiIpLCBwcm9nbmFtZSwgIi1PIik7CisJCQkJCXBnX2xvZ19lcnJvcigi aW52YWxpZCBhcmd1bWVudCBmb3Igb3B0aW9uICVzIiwgIi1PIik7CiAJCQkJCWZwcmludGYo c3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIp LCBwcm9nbmFtZSk7CiAJCQkJCWV4aXQoMSk7CiAJCQkJfQogCQkJCWlmIChzZXRfbXhvZmYg PT0gLTEpCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG11bHRpdHJhbnNh Y3Rpb24gb2Zmc2V0ICgtTykgbXVzdCBub3QgYmUgLTFcbiIpLCBwcm9nbmFtZSk7CisJCQkJ CXBnX2xvZ19lcnJvcigibXVsdGl0cmFuc2FjdGlvbiBvZmZzZXQgKC1PKSBtdXN0IG5vdCBi ZSAtMSIpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTI4MSw3ICsy ODEsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQljYXNlICdsJzoKIAkJ CQlpZiAoc3Ryc3BuKG9wdGFyZywgIjAxMjM0NTY3ODkwQUJDREVGYWJjZGVmIikgIT0gWExP R19GTkFNRV9MRU4pCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGludmFs aWQgYXJndW1lbnQgZm9yIG9wdGlvbiAlc1xuIiksIHByb2duYW1lLCAiLWwiKTsKKwkJCQkJ cGdfbG9nX2Vycm9yKCJpbnZhbGlkIGFyZ3VtZW50IGZvciBvcHRpb24gJXMiLCAiLWwiKTsK IAkJCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGlu Zm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CkBAIC0y OTcsMTYgKzI5NywxMiBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJc2V0 X3dhbF9zZWdzaXplID0gc3RydG9sKG9wdGFyZywgJmVuZHB0ciwgMTApICogMTAyNCAqIDEw MjQ7CiAJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcgfHwgKmVuZHB0ciAhPSAnXDAnKQogCQkJ CXsKLQkJCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCQkJXygiJXM6IGFyZ3VtZW50IG9mIC0t d2FsLXNlZ3NpemUgbXVzdCBiZSBhIG51bWJlclxuIiksCi0JCQkJCQkJcHJvZ25hbWUpOwor CQkJCQlwZ19sb2dfZXJyb3IoImFyZ3VtZW50IG9mIC0td2FsLXNlZ3NpemUgbXVzdCBiZSBh IG51bWJlciIpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlpZiAoIUlzVmFsaWRXYWxT ZWdTaXplKHNldF93YWxfc2Vnc2l6ZSkpCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwK LQkJCQkJCQlfKCIlczogYXJndW1lbnQgb2YgLS13YWwtc2Vnc2l6ZSBtdXN0IGJlIGEgcG93 ZXIgb2YgMiBiZXR3ZWVuIDEgYW5kIDEwMjRcbiIpLAotCQkJCQkJCXByb2duYW1lKTsKKwkJ CQkJcGdfbG9nX2Vycm9yKCJhcmd1bWVudCBvZiAtLXdhbC1zZWdzaXplIG11c3QgYmUgYSBw b3dlciBvZiAyIGJldHdlZW4gMSBhbmQgMTAyNCIpOwogCQkJCQlleGl0KDEpOwogCQkJCX0K IAkJCQlicmVhazsKQEAgLTMyMyw4ICszMTksOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICph cmd2W10pCiAJLyogQ29tcGxhaW4gaWYgYW55IGFyZ3VtZW50cyByZW1haW4gKi8KIAlpZiAo b3B0aW5kIDwgYXJnYykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogdG9vIG1hbnkg Y29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKVxuIiksCi0JCQkJcHJv Z25hbWUsIGFyZ3Zbb3B0aW5kXSk7CisJCXBnX2xvZ19lcnJvcigidG9vIG1hbnkgY29tbWFu ZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIsCisJCQkJCSBhcmd2W29wdGlu ZF0pOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUg aW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CkBAIC0zMzIs NyArMzI4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJaWYgKERhdGFE aXIgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogbm8gZGF0YSBkaXJl Y3Rvcnkgc3BlY2lmaWVkXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm5vIGRh dGEgZGlyZWN0b3J5IHNwZWNpZmllZCIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwi JXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQll eGl0KDEpOwogCX0KQEAgLTM0NiwyMSArMzQyLDIwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKICNpZm5kZWYgV0lOMzIKIAlpZiAoZ2V0ZXVpZCgpID09IDApCiAJewotCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNhbm5vdCBiZSBleGVjdXRlZCBieSBcInJvb3RcIlxu IiksCi0JCQkJcHJvZ25hbWUpOwotCQlmcHJpbnRmKHN0ZGVyciwgXygiWW91IG11c3QgcnVu ICVzIGFzIHRoZSBQb3N0Z3JlU1FMIHN1cGVydXNlci5cbiIpLAotCQkJCXByb2duYW1lKTsK KwkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgYmUgZXhlY3V0ZWQgYnkgXCJyb290XCIiKTsKKwkJ cGdfbG9nX2luZm8oIllvdSBtdXN0IHJ1biAlcyBhcyB0aGUgUG9zdGdyZVNRTCBzdXBlcnVz ZXIuIiwKKwkJCQkJcHJvZ25hbWUpOwogCQlleGl0KDEpOwogCX0KICNlbmRpZgogCi0JZ2V0 X3Jlc3RyaWN0ZWRfdG9rZW4ocHJvZ25hbWUpOworCWdldF9yZXN0cmljdGVkX3Rva2VuKCk7 CiAKIAkvKiBTZXQgbWFzayBiYXNlZCBvbiBQR0RBVEEgcGVybWlzc2lvbnMgKi8KIAlpZiAo IUdldERhdGFEaXJlY3RvcnlDcmVhdGVQZXJtKERhdGFEaXIpKQogCXsKLQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcmVhZCBwZXJtaXNzaW9ucyBvZiBkaXJlY3Rvcnkg XCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIERhdGFEaXIsIHN0cmVycm9yKGVycm5v KSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHJlYWQgcGVybWlzc2lvbnMgb2YgZGly ZWN0b3J5IFwiJXNcIjogJW0iLAorCQkJCQkgRGF0YURpcik7CiAJCWV4aXQoMSk7CiAJfQog CkBAIC0zNjgsOCArMzYzLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJ aWYgKGNoZGlyKERhdGFEaXIpIDwgMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y291bGQgbm90IGNoYW5nZSBkaXJlY3RvcnkgdG8gXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJv Z25hbWUsIERhdGFEaXIsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291 bGQgbm90IGNoYW5nZSBkaXJlY3RvcnkgdG8gXCIlc1wiOiAlbSIsCisJCQkJCSBEYXRhRGly KTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTM4NCwxNiArMzc5LDE1IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAl7CiAJCWlmIChlcnJubyAhPSBFTk9FTlQpCiAJCXsKLQkJ CWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9y IHJlYWRpbmc6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsICJwb3N0bWFzdGVyLnBpZCIsIHN0 cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGZpbGUg XCIlc1wiIGZvciByZWFkaW5nOiAlbSIsCisJCQkJCQkgInBvc3RtYXN0ZXIucGlkIik7CiAJ CQlleGl0KDEpOwogCQl9CiAJfQogCWVsc2UKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIl czogbG9jayBmaWxlIFwiJXNcIiBleGlzdHNcbiIKLQkJCQkJCSAgIklzIGEgc2VydmVyIHJ1 bm5pbmc/ICBJZiBub3QsIGRlbGV0ZSB0aGUgbG9jayBmaWxlIGFuZCB0cnkgYWdhaW4uXG4i KSwKLQkJCQlwcm9nbmFtZSwgInBvc3RtYXN0ZXIucGlkIik7CisJCXBnX2xvZ19lcnJvcigi bG9jayBmaWxlIFwiJXNcIiBleGlzdHMiLCAicG9zdG1hc3Rlci5waWQiKTsKKwkJcGdfbG9n X2luZm8oIklzIGEgc2VydmVyIHJ1bm5pbmc/ICBJZiBub3QsIGRlbGV0ZSB0aGUgbG9jayBm aWxlIGFuZCB0cnkgYWdhaW4uIik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC01NDUsOCArNTM5 LDggQEAgQ2hlY2tEYXRhVmVyc2lvbih2b2lkKQogCiAJaWYgKCh2ZXJfZmQgPSBmb3Blbih2 ZXJfZmlsZSwgInIiKSkgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmc6ICVzXG4iKSwKLQkJCQlw cm9nbmFtZSwgdmVyX2ZpbGUsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigi Y291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmc6ICVtIiwKKwkJCQkJIHZl cl9maWxlKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTU1NCwxNSArNTQ4LDkgQEAgQ2hlY2tE YXRhVmVyc2lvbih2b2lkKQogCWlmICghZmdldHMocmF3bGluZSwgc2l6ZW9mKHJhd2xpbmUp LCB2ZXJfZmQpKQogCXsKIAkJaWYgKCFmZXJyb3IodmVyX2ZkKSkKLQkJewotCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiB1bmV4cGVjdGVkIGVtcHR5IGZpbGUgXCIlc1wiXG4iKSwKLQkJ CQkJcHJvZ25hbWUsIHZlcl9maWxlKTsKLQkJfQorCQkJcGdfbG9nX2Vycm9yKCJ1bmV4cGVj dGVkIGVtcHR5IGZpbGUgXCIlc1wiIiwgdmVyX2ZpbGUpOwogCQllbHNlCi0JCXsKLQkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6ICVzXG4i KSwKLQkJCQkJcHJvZ25hbWUsIHZlcl9maWxlLCBzdHJlcnJvcihlcnJubykpOwotCQl9CisJ CQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIsIHZlcl9m aWxlKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTU3Nyw5ICs1NjUsOSBAQCBDaGVja0RhdGFW ZXJzaW9uKHZvaWQpCiAKIAlpZiAoc3RyY21wKHJhd2xpbmUsIFBHX01BSk9SVkVSU0lPTikg IT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogZGF0YSBkaXJlY3RvcnkgaXMg b2Ygd3JvbmcgdmVyc2lvblxuIgotCQkJCQkJICAiRmlsZSBcIiVzXCIgY29udGFpbnMgXCIl c1wiLCB3aGljaCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoaXMgcHJvZ3JhbSdzIHZlcnNp b24gXCIlc1wiLlxuIiksCi0JCQkJcHJvZ25hbWUsIHZlcl9maWxlLCByYXdsaW5lLCBQR19N QUpPUlZFUlNJT04pOworCQlwZ19sb2dfZXJyb3IoImRhdGEgZGlyZWN0b3J5IGlzIG9mIHdy b25nIHZlcnNpb24iKTsKKwkJcGdfbG9nX2luZm8oIkZpbGUgXCIlc1wiIGNvbnRhaW5zIFwi JXNcIiwgd2hpY2ggaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGlzIHByb2dyYW0ncyB2ZXJz aW9uIFwiJXNcIi4iLAorCQkJCQl2ZXJfZmlsZSwgcmF3bGluZSwgUEdfTUFKT1JWRVJTSU9O KTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTYwOCwxMyArNTk2LDEzIEBAIFJlYWRDb250cm9s RmlsZSh2b2lkKQogCQkgKiBhcmUgd2UndmUgYmVlbiBoYW5kZWQgYSBiYWQgRGF0YURpciBw YXRoLCBzbyBnaXZlIHVwLiBVc2VyIGNhbiBkbwogCQkgKiAidG91Y2ggcGdfY29udHJvbCIg dG8gZm9yY2UgdXMgdG8gcHJvY2VlZC4KIAkJICovCi0JCWZwcmludGYoc3RkZXJyLCBfKCIl czogY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmc6ICVzXG4iKSwKLQkJ CQlwcm9nbmFtZSwgWExPR19DT05UUk9MX0ZJTEUsIHN0cmVycm9yKGVycm5vKSk7CisJCXBn X2xvZ19lcnJvcigiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmc6ICVt IiwKKwkJCQkJIFhMT0dfQ09OVFJPTF9GSUxFKTsKIAkJaWYgKGVycm5vID09IEVOT0VOVCkK LQkJCWZwcmludGYoc3RkZXJyLCBfKCJJZiB5b3UgYXJlIHN1cmUgdGhlIGRhdGEgZGlyZWN0 b3J5IHBhdGggaXMgY29ycmVjdCwgZXhlY3V0ZVxuIgotCQkJCQkJCSAgIiAgdG91Y2ggJXNc biIKLQkJCQkJCQkgICJhbmQgdHJ5IGFnYWluLlxuIiksCi0JCQkJCVhMT0dfQ09OVFJPTF9G SUxFKTsKKwkJCXBnX2xvZ19pbmZvKCJJZiB5b3UgYXJlIHN1cmUgdGhlIGRhdGEgZGlyZWN0 b3J5IHBhdGggaXMgY29ycmVjdCwgZXhlY3V0ZVxuIgorCQkJCQkJIiAgdG91Y2ggJXNcbiIK KwkJCQkJCSJhbmQgdHJ5IGFnYWluLiIsCisJCQkJCQlYTE9HX0NPTlRST0xfRklMRSk7CiAJ CWV4aXQoMSk7CiAJfQogCkBAIC02MjQsOCArNjEyLDcgQEAgUmVhZENvbnRyb2xGaWxlKHZv aWQpCiAJbGVuID0gcmVhZChmZCwgYnVmZmVyLCBQR19DT05UUk9MX0ZJTEVfU0laRSk7CiAJ aWYgKGxlbiA8IDApCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBy ZWFkIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIFhMT0dfQ09OVFJPTF9G SUxFLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCByZWFk IGZpbGUgXCIlc1wiOiAlbSIsIFhMT0dfQ09OVFJPTF9GSUxFKTsKIAkJZXhpdCgxKTsKIAl9 CiAJY2xvc2UoZmQpOwpAQCAtNjQzLDkgKzYzMCw3IEBAIFJlYWRDb250cm9sRmlsZSh2b2lk KQogCQlpZiAoIUVRX0NSQzMyQyhjcmMsICgoQ29udHJvbEZpbGVEYXRhICopIGJ1ZmZlcikt PmNyYykpCiAJCXsKIAkJCS8qIFdlIHdpbGwgdXNlIHRoZSBkYXRhIGJ1dCB0cmVhdCBpdCBh cyBndWVzc2VkLiAqLwotCQkJZnByaW50ZihzdGRlcnIsCi0JCQkJCV8oIiVzOiBwZ19jb250 cm9sIGV4aXN0cyBidXQgaGFzIGludmFsaWQgQ1JDOyBwcm9jZWVkIHdpdGggY2F1dGlvblxu IiksCi0JCQkJCXByb2duYW1lKTsKKwkJCXBnX2xvZ193YXJuaW5nKCJwZ19jb250cm9sIGV4 aXN0cyBidXQgaGFzIGludmFsaWQgQ1JDOyBwcm9jZWVkIHdpdGggY2F1dGlvbiIpOwogCQkJ Z3Vlc3NlZCA9IHRydWU7CiAJCX0KIApAQCAtNjU0LDExICs2MzksMTAgQEAgUmVhZENvbnRy b2xGaWxlKHZvaWQpCiAJCS8qIHJldHVybiBmYWxzZSBpZiBXQUwgc2VnbWVudCBzaXplIGlz IG5vdCB2YWxpZCAqLwogCQlpZiAoIUlzVmFsaWRXYWxTZWdTaXplKENvbnRyb2xGaWxlLnhs b2dfc2VnX3NpemUpKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJbmdldHRleHQo IiVzOiBwZ19jb250cm9sIHNwZWNpZmllcyBpbnZhbGlkIFdBTCBzZWdtZW50IHNpemUgKCVk IGJ5dGUpOyBwcm9jZWVkIHdpdGggY2F1dGlvblxuIiwKLQkJCQkJCQkgIiVzOiBwZ19jb250 cm9sIHNwZWNpZmllcyBpbnZhbGlkIFdBTCBzZWdtZW50IHNpemUgKCVkIGJ5dGVzKTsgcHJv Y2VlZCB3aXRoIGNhdXRpb25cbiIsCi0JCQkJCQkJIENvbnRyb2xGaWxlLnhsb2dfc2VnX3Np emUpLAotCQkJCQlwcm9nbmFtZSwgQ29udHJvbEZpbGUueGxvZ19zZWdfc2l6ZSk7CisJCQlw Z19sb2dfd2FybmluZyhuZ2V0dGV4dCgicGdfY29udHJvbCBzcGVjaWZpZXMgaW52YWxpZCBX QUwgc2VnbWVudCBzaXplICglZCBieXRlKTsgcHJvY2VlZCB3aXRoIGNhdXRpb24iLAorCQkJ CQkJCQkJInBnX2NvbnRyb2wgc3BlY2lmaWVzIGludmFsaWQgV0FMIHNlZ21lbnQgc2l6ZSAo JWQgYnl0ZXMpOyBwcm9jZWVkIHdpdGggY2F1dGlvbiIsCisJCQkJCQkJCQlDb250cm9sRmls ZS54bG9nX3NlZ19zaXplKSwKKwkJCQkJCSAgIENvbnRyb2xGaWxlLnhsb2dfc2VnX3NpemUp OwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKQEAgLTY2Niw4ICs2NTAsNyBAQCBSZWFkQ29u dHJvbEZpbGUodm9pZCkKIAl9CiAKIAkvKiBMb29rcyBsaWtlIGl0J3MgYSBtZXNzLiAqLwot CWZwcmludGYoc3RkZXJyLCBfKCIlczogcGdfY29udHJvbCBleGlzdHMgYnV0IGlzIGJyb2tl biBvciB3cm9uZyB2ZXJzaW9uOyBpZ25vcmluZyBpdFxuIiksCi0JCQlwcm9nbmFtZSk7CisJ cGdfbG9nX3dhcm5pbmcoInBnX2NvbnRyb2wgZXhpc3RzIGJ1dCBpcyBicm9rZW4gb3Igd3Jv bmcgdmVyc2lvbjsgaWdub3JpbmcgaXQiKTsKIAlyZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTk4 NSw4ICs5NjgsNyBAQCBSZXdyaXRlQ29udHJvbEZpbGUodm9pZCkKIAkJCSAgcGdfZmlsZV9j cmVhdGVfbW9kZSk7CiAJaWYgKGZkIDwgMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIl czogY291bGQgbm90IGNyZWF0ZSBwZ19jb250cm9sIGZpbGU6ICVzXG4iKSwKLQkJCQlwcm9n bmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3Jl YXRlIHBnX2NvbnRyb2wgZmlsZTogJW0iKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTk5Niwx NCArOTc4LDEzIEBAIFJld3JpdGVDb250cm9sRmlsZSh2b2lkKQogCQkvKiBpZiB3cml0ZSBk aWRuJ3Qgc2V0IGVycm5vLCBhc3N1bWUgcHJvYmxlbSBpcyBubyBkaXNrIHNwYWNlICovCiAJ CWlmIChlcnJubyA9PSAwKQogCQkJZXJybm8gPSBFTk9TUEM7Ci0JCWZwcmludGYoc3RkZXJy LCBfKCIlczogY291bGQgbm90IHdyaXRlIHBnX2NvbnRyb2wgZmlsZTogJXNcbiIpLAotCQkJ CXByb2duYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5v dCB3cml0ZSBwZ19jb250cm9sIGZpbGU6ICVtIik7CiAJCWV4aXQoMSk7CiAJfQogCiAJaWYg KGZzeW5jKGZkKSAhPSAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBmc3luYyBl cnJvcjogJXNcbiIpLCBwcm9nbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vy cm9yKCJmc3luYyBlcnJvcjogJW0iKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTEwNDMsOCAr MTAyNCw3IEBAIEZpbmRFbmRPZlhMT0codm9pZCkKIAl4bGRpciA9IG9wZW5kaXIoWExPR0RJ Uik7CiAJaWYgKHhsZGlyID09IE5VTEwpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6 IGNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFt ZSwgWExPR0RJUiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBu b3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIFhMT0dESVIpOwogCQlleGl0KDEpOwog CX0KIApAQCAtMTA3OSwxNSArMTA1OSwxMyBAQCBGaW5kRW5kT2ZYTE9HKHZvaWQpCiAKIAlp ZiAoZXJybm8pCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZWFk IGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwgWExPR0RJUiwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBkaXJlY3Rv cnkgXCIlc1wiOiAlbSIsIFhMT0dESVIpOwogCQlleGl0KDEpOwogCX0KIAogCWlmIChjbG9z ZWRpcih4bGRpcikpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBj bG9zZSBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIFhMT0dESVIs IHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNsb3NlIGRp cmVjdG9yeSBcIiVzXCI6ICVtIiwgWExPR0RJUik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0x MTE0LDggKzEwOTIsNyBAQCBLaWxsRXhpc3RpbmdYTE9HKHZvaWQpCiAJeGxkaXIgPSBvcGVu ZGlyKFhMT0dESVIpOwogCWlmICh4bGRpciA9PSBOVUxMKQogCXsKLQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0J CQkJcHJvZ25hbWUsIFhMT0dESVIsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBYTE9HRElSKTsKIAkJ ZXhpdCgxKTsKIAl9CiAKQEAgLTExMjcsOCArMTEwNCw3IEBAIEtpbGxFeGlzdGluZ1hMT0co dm9pZCkKIAkJCXNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgIiVzLyVzIiwgWExPR0RJ UiwgeGxkZS0+ZF9uYW1lKTsKIAkJCWlmICh1bmxpbmsocGF0aCkgPCAwKQogCQkJewotCQkJ CWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGRlbGV0ZSBmaWxlIFwiJXNcIjog JXNcbiIpLAotCQkJCQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJ cGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZGVsZXRlIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgp OwogCQkJCWV4aXQoMSk7CiAJCQl9CiAJCX0KQEAgLTExMzYsMTUgKzExMTIsMTMgQEAgS2ls bEV4aXN0aW5nWExPRyh2b2lkKQogCiAJaWYgKGVycm5vKQogCXsKLQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiBjb3VsZCBub3QgcmVhZCBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0J CQkJcHJvZ25hbWUsIFhMT0dESVIsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IHJlYWQgZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBYTE9HRElSKTsKIAkJ ZXhpdCgxKTsKIAl9CiAKIAlpZiAoY2xvc2VkaXIoeGxkaXIpKQogCXsKLQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgY2xvc2UgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIp LAotCQkJCXByb2duYW1lLCBYTE9HRElSLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIFhMT0dESVIp OwogCQlleGl0KDEpOwogCX0KIH0KQEAgLTExNjUsOCArMTEzOSw3IEBAIEtpbGxFeGlzdGlu Z0FyY2hpdmVTdGF0dXModm9pZCkKIAl4bGRpciA9IG9wZW5kaXIoQVJDSFNUQVRESVIpOwog CWlmICh4bGRpciA9PSBOVUxMKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3Vs ZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIEFS Q0hTVEFURElSLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5v dCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgQVJDSFNUQVRESVIpOwogCQlleGl0KDEp OwogCX0KIApAQCAtMTE4MSw4ICsxMTU0LDcgQEAgS2lsbEV4aXN0aW5nQXJjaGl2ZVN0YXR1 cyh2b2lkKQogCQkJc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLCAiJXMvJXMiLCBBUkNI U1RBVERJUiwgeGxkZS0+ZF9uYW1lKTsKIAkJCWlmICh1bmxpbmsocGF0aCkgPCAwKQogCQkJ ewotCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IGRlbGV0ZSBmaWxlIFwi JXNcIjogJXNcbiIpLAotCQkJCQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7 CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZGVsZXRlIGZpbGUgXCIlc1wiOiAlbSIs IHBhdGgpOwogCQkJCWV4aXQoMSk7CiAJCQl9CiAJCX0KQEAgLTExOTAsMTUgKzExNjIsMTMg QEAgS2lsbEV4aXN0aW5nQXJjaGl2ZVN0YXR1cyh2b2lkKQogCiAJaWYgKGVycm5vKQogCXsK LQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcmVhZCBkaXJlY3RvcnkgXCIl c1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIEFSQ0hTVEFURElSLCBzdHJlcnJvcihlcnJu bykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6 ICVtIiwgQVJDSFNUQVRESVIpOwogCQlleGl0KDEpOwogCX0KIAogCWlmIChjbG9zZWRpcih4 bGRpcikpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBjbG9zZSBk aXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIEFSQ0hTVEFURElSLCBz dHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBkaXJl Y3RvcnkgXCIlc1wiOiAlbSIsIEFSQ0hTVEFURElSKTsKIAkJZXhpdCgxKTsKIAl9CiB9CkBA IC0xMjY1LDggKzEyMzUsNyBAQCBXcml0ZUVtcHR5WExPRyh2b2lkKQogCQkJICBwZ19maWxl X2NyZWF0ZV9tb2RlKTsKIAlpZiAoZmQgPCAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1l LCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBv cGVuIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgpOwogCQlleGl0KDEpOwogCX0KIApAQCAtMTI3 Niw4ICsxMjQ1LDcgQEAgV3JpdGVFbXB0eVhMT0codm9pZCkKIAkJLyogaWYgd3JpdGUgZGlk bid0IHNldCBlcnJubywgYXNzdW1lIHByb2JsZW0gaXMgbm8gZGlzayBzcGFjZSAqLwogCQlp ZiAoZXJybm8gPT0gMCkKIAkJCWVycm5vID0gRU5PU1BDOwotCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2du YW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5v dCB3cml0ZSBmaWxlIFwiJXNcIjogJW0iLCBwYXRoKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAg LTEyOTAsMTUgKzEyNTgsMTQgQEAgV3JpdGVFbXB0eVhMT0codm9pZCkKIAkJewogCQkJaWYg KGVycm5vID09IDApCiAJCQkJZXJybm8gPSBFTk9TUEM7Ci0JCQlmcHJpbnRmKHN0ZGVyciwg XygiJXM6IGNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCQlwcm9n bmFtZSwgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQg bm90IHdyaXRlIGZpbGUgXCIlc1wiOiAlbSIsIHBhdGgpOwogCQkJZXhpdCgxKTsKIAkJfQog CX0KIAogCWlmIChmc3luYyhmZCkgIT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIl czogZnN5bmMgZXJyb3I6ICVzXG4iKSwgcHJvZ25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJ CXBnX2xvZ19lcnJvcigiZnN5bmMgZXJyb3I6ICVtIik7CiAJCWV4aXQoMSk7CiAJfQogCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAyX2NvcnJ1cHRlZC5wbCBiL3Ny Yy9iaW4vcGdfcmVzZXR3YWwvdC8wMDJfY29ycnVwdGVkLnBsCmluZGV4IDAwMjJkY2I4ZmYu LmY5OTQwZDdmYzUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDJfY29y cnVwdGVkLnBsCisrKyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDJfY29ycnVwdGVkLnBs CkBAIC0zMiw3ICszMiw3IEBACiAJMCwKIAlbcXIvcGdfY29udHJvbCB2ZXJzaW9uIG51bWJl ci9dLAogCVsKLQkJcXIvcGdfcmVzZXR3YWw6IHBnX2NvbnRyb2wgZXhpc3RzIGJ1dCBpcyBi cm9rZW4gb3Igd3JvbmcgdmVyc2lvbjsgaWdub3JpbmcgaXQvCisJCXFyL3BnX3Jlc2V0d2Fs OiB3YXJuaW5nOiBwZ19jb250cm9sIGV4aXN0cyBidXQgaXMgYnJva2VuIG9yIHdyb25nIHZl cnNpb247IGlnbm9yaW5nIGl0LwogCV0sCiAJJ3Byb2Nlc3NlcyBjb3JydXB0ZWQgcGdfY29u dHJvbCBhbGwgemVyb2VzJyk7CiAKQEAgLTQ4LDYgKzQ4LDYgQEAKIAkwLAogCVtxci9wZ19j b250cm9sIHZlcnNpb24gbnVtYmVyL10sCiAJWwotCQlxci9cUXBnX3Jlc2V0d2FsOiBwZ19j b250cm9sIHNwZWNpZmllcyBpbnZhbGlkIFdBTCBzZWdtZW50IHNpemUgKDAgYnl0ZXMpOyBw cm9jZWVkIHdpdGggY2F1dGlvblxFLworCQlxci9cUXBnX3Jlc2V0d2FsOiB3YXJuaW5nOiBw Z19jb250cm9sIHNwZWNpZmllcyBpbnZhbGlkIFdBTCBzZWdtZW50IHNpemUgKDAgYnl0ZXMp OyBwcm9jZWVkIHdpdGggY2F1dGlvblxFLwogCV0sCiAJJ3Byb2Nlc3NlcyB6ZXJvIFdBTCBz ZWdtZW50IHNpemUnKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmV3aW5kL01ha2VmaWxl IGIvc3JjL2Jpbi9wZ19yZXdpbmQvTWFrZWZpbGUKaW5kZXggMDRmM2I4ZjUyMC4uMDE5ZTE5 OTg2ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXdpbmQvTWFrZWZpbGUKKysrIGIvc3Jj L2Jpbi9wZ19yZXdpbmQvTWFrZWZpbGUKQEAgLTE2LDcgKzE2LDcgQEAgdG9wX2J1aWxkZGly ID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9i YWwKIAogb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkkKGxpYnBxX3NyY2RpcikgLURGUk9OVEVO RCAkKENQUEZMQUdTKQotTERGTEFHU19JTlRFUk5BTCArPSAkKGxpYnBxX3BncG9ydCkKK0xE RkxBR1NfSU5URVJOQUwgKz0gLUwkKHRvcF9idWlsZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdm ZXV0aWxzICQobGlicHFfcGdwb3J0KQogCiBPQkpTCT0gcGdfcmV3aW5kLm8gcGFyc2V4bG9n Lm8geGxvZ3JlYWRlci5vIGRhdGFwYWdlbWFwLm8gdGltZWxpbmUubyBcCiAJZmV0Y2gubyBm aWxlX29wcy5vIGNvcHlfZmV0Y2gubyBsaWJwcV9mZXRjaC5vIGZpbGVtYXAubyBsb2dnaW5n Lm8gXApAQCAtMjYsNyArMjYsNyBAQCBFWFRSQV9DTEVBTiA9IHhsb2dyZWFkZXIuYwogCiBh bGw6IHBnX3Jld2luZAogCi1wZ19yZXdpbmQ6ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBxIHN1 Ym1ha2UtbGlicGdwb3J0CitwZ19yZXdpbmQ6ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBxIHN1 Ym1ha2UtbGlicGdwb3J0IHN1Ym1ha2UtbGlicGdmZXV0aWxzCiAJJChDQykgJChDRkxBR1Mp ICReICQoTERGTEFHUykgJChMREZMQUdTX0VYKSAkKExJQlMpIC1vICRAJChYKQogCiB4bG9n cmVhZGVyLmM6ICUgOiAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft LyUKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmV3aW5kL2NvcHlfZmV0Y2guYyBiL3NyYy9i aW4vcGdfcmV3aW5kL2NvcHlfZmV0Y2guYwppbmRleCBhMjgzNDA1ZjZjLi4zZmQwNDA0ZGRm IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jld2luZC9jb3B5X2ZldGNoLmMKKysrIGIvc3Jj L2Jpbi9wZ19yZXdpbmQvY29weV9mZXRjaC5jCkBAIC01Nyw4ICs1Nyw4IEBAIHJlY3Vyc2Vf ZGlyKGNvbnN0IGNoYXIgKmRhdGFkaXIsIGNvbnN0IGNoYXIgKnBhcmVudHBhdGgsCiAKIAl4 bGRpciA9IG9wZW5kaXIoZnVsbHBhcmVudHBhdGgpOwogCWlmICh4bGRpciA9PSBOVUxMKQot CQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIsCi0J CQkJIGZ1bGxwYXJlbnRwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19mYXRhbCgiY291 bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJW0iLAorCQkJCSBmdWxscGFyZW50cGF0 aCk7CiAKIAl3aGlsZSAoZXJybm8gPSAwLCAoeGxkZSA9IHJlYWRkaXIoeGxkaXIpKSAhPSBO VUxMKQogCXsKQEAgLTg2LDggKzg2LDggQEAgcmVjdXJzZV9kaXIoY29uc3QgY2hhciAqZGF0 YWRpciwgY29uc3QgY2hhciAqcGFyZW50cGF0aCwKIAkJCQkgKi8KIAkJCX0KIAkJCWVsc2UK LQkJCQlwZ19mYXRhbCgiY291bGQgbm90IHN0YXQgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJ CQkJIGZ1bGxwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQkJCXBnX2ZhdGFsKCJjb3VsZCBu b3Qgc3RhdCBmaWxlIFwiJXNcIjogJW0iLAorCQkJCQkJIGZ1bGxwYXRoKTsKIAkJfQogCiAJ CWlmIChwYXJlbnRwYXRoKQpAQCAtMTE1LDEwICsxMTUsMTAgQEAgcmVjdXJzZV9kaXIoY29u c3QgY2hhciAqZGF0YWRpciwgY29uc3QgY2hhciAqcGFyZW50cGF0aCwKIAogCQkJbGVuID0g cmVhZGxpbmsoZnVsbHBhdGgsIGxpbmtfdGFyZ2V0LCBzaXplb2YobGlua190YXJnZXQpKTsK IAkJCWlmIChsZW4gPCAwKQotCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBzeW1ib2xp YyBsaW5rIFwiJXNcIjogJXNcbiIsCi0JCQkJCQkgZnVsbHBhdGgsIHN0cmVycm9yKGVycm5v KSk7CisJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIHN5bWJvbGljIGxpbmsgXCIlc1wi OiAlbSIsCisJCQkJCQkgZnVsbHBhdGgpOwogCQkJaWYgKGxlbiA+PSBzaXplb2YobGlua190 YXJnZXQpKQotCQkJCXBnX2ZhdGFsKCJzeW1ib2xpYyBsaW5rIFwiJXNcIiB0YXJnZXQgaXMg dG9vIGxvbmdcbiIsCisJCQkJcGdfZmF0YWwoInN5bWJvbGljIGxpbmsgXCIlc1wiIHRhcmdl dCBpcyB0b28gbG9uZyIsCiAJCQkJCQkgZnVsbHBhdGgpOwogCQkJbGlua190YXJnZXRbbGVu XSA9ICdcMCc7CiAKQEAgLTEzMywxOSArMTMzLDE5IEBAIHJlY3Vyc2VfZGlyKGNvbnN0IGNo YXIgKmRhdGFkaXIsIGNvbnN0IGNoYXIgKnBhcmVudHBhdGgsCiAJCQkJc3RyY21wKHBhdGgs ICJwZ193YWwiKSA9PSAwKQogCQkJCXJlY3Vyc2VfZGlyKGRhdGFkaXIsIHBhdGgsIGNhbGxi YWNrKTsKICNlbHNlCi0JCQlwZ19mYXRhbCgiXCIlc1wiIGlzIGEgc3ltYm9saWMgbGluaywg YnV0IHN5bWJvbGljIGxpbmtzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm1c biIsCisJCQlwZ19mYXRhbCgiXCIlc1wiIGlzIGEgc3ltYm9saWMgbGluaywgYnV0IHN5bWJv bGljIGxpbmtzIGFyZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0iLAogCQkJCQkg ZnVsbHBhdGgpOwogI2VuZGlmCQkJCQkJCS8qIEhBVkVfUkVBRExJTksgKi8KIAkJfQogCX0K IAogCWlmIChlcnJubykKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSBc IiVzXCI6ICVzXG4iLAotCQkJCSBmdWxscGFyZW50cGF0aCwgc3RyZXJyb3IoZXJybm8pKTsK KwkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJ CQkgZnVsbHBhcmVudHBhdGgpOwogCiAJaWYgKGNsb3NlZGlyKHhsZGlyKSkKLQkJcGdfZmF0 YWwoImNvdWxkIG5vdCBjbG9zZSBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiwKLQkJCQkgZnVs bHBhcmVudHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qg Y2xvc2UgZGlyZWN0b3J5IFwiJXNcIjogJW0iLAorCQkJCSBmdWxscGFyZW50cGF0aCk7CiB9 CiAKIC8qCkBAIC0xNjQsMTEgKzE2NCwxMSBAQCByZXdpbmRfY29weV9maWxlX3JhbmdlKGNv bnN0IGNoYXIgKnBhdGgsIG9mZl90IGJlZ2luLCBvZmZfdCBlbmQsIGJvb2wgdHJ1bmMpCiAK IAlzcmNmZCA9IG9wZW4oc3JjcGF0aCwgT19SRE9OTFkgfCBQR19CSU5BUlksIDApOwogCWlm IChzcmNmZCA8IDApCi0JCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBzb3VyY2UgZmlsZSBc IiVzXCI6ICVzXG4iLAotCQkJCSBzcmNwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19m YXRhbCgiY291bGQgbm90IG9wZW4gc291cmNlIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJIHNy Y3BhdGgpOwogCiAJaWYgKGxzZWVrKHNyY2ZkLCBiZWdpbiwgU0VFS19TRVQpID09IC0xKQot CQlwZ19mYXRhbCgiY291bGQgbm90IHNlZWsgaW4gc291cmNlIGZpbGU6ICVzXG4iLCBzdHJl cnJvcihlcnJubykpOworCQlwZ19mYXRhbCgiY291bGQgbm90IHNlZWsgaW4gc291cmNlIGZp bGU6ICVtIik7CiAKIAlvcGVuX3RhcmdldF9maWxlKHBhdGgsIHRydW5jKTsKIApAQCAtMTg1 LDE3ICsxODUsMTcgQEAgcmV3aW5kX2NvcHlfZmlsZV9yYW5nZShjb25zdCBjaGFyICpwYXRo LCBvZmZfdCBiZWdpbiwgb2ZmX3QgZW5kLCBib29sIHRydW5jKQogCQlyZWFkbGVuID0gcmVh ZChzcmNmZCwgYnVmLmRhdGEsIGxlbik7CiAKIAkJaWYgKHJlYWRsZW4gPCAwKQotCQkJcGdf ZmF0YWwoImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlc1xuIiwKLQkJCQkJIHNyY3Bh dGgsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQgZmls ZSBcIiVzXCI6ICVtIiwKKwkJCQkJIHNyY3BhdGgpOwogCQllbHNlIGlmIChyZWFkbGVuID09 IDApCi0JCQlwZ19mYXRhbCgidW5leHBlY3RlZCBFT0Ygd2hpbGUgcmVhZGluZyBmaWxlIFwi JXNcIlxuIiwgc3JjcGF0aCk7CisJCQlwZ19mYXRhbCgidW5leHBlY3RlZCBFT0Ygd2hpbGUg cmVhZGluZyBmaWxlIFwiJXNcIiIsIHNyY3BhdGgpOwogCiAJCXdyaXRlX3RhcmdldF9yYW5n ZShidWYuZGF0YSwgYmVnaW4sIHJlYWRsZW4pOwogCQliZWdpbiArPSByZWFkbGVuOwogCX0K IAogCWlmIChjbG9zZShzcmNmZCkgIT0gMCkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBjbG9z ZSBmaWxlIFwiJXNcIjogJXNcbiIsIHNyY3BhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCXBn X2ZhdGFsKCJjb3VsZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6ICVtIiwgc3JjcGF0aCk7CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jld2luZC9kYXRhcGFnZW1hcC5jIGIv c3JjL2Jpbi9wZ19yZXdpbmQvZGF0YXBhZ2VtYXAuYwppbmRleCA2MjYyZjFmODcwLi5mYzcw ZmU1NzA2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jld2luZC9kYXRhcGFnZW1hcC5jCisr KyBiL3NyYy9iaW4vcGdfcmV3aW5kL2RhdGFwYWdlbWFwLmMKQEAgLTEzLDcgKzEzLDggQEAK ICNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgogCiAjaW5jbHVkZSAiZGF0YXBhZ2VtYXAuaCIK LSNpbmNsdWRlICJsb2dnaW5nLmgiCisKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgi CiAKIHN0cnVjdCBkYXRhcGFnZW1hcF9pdGVyYXRvcgogewpAQCAtMTIxLDcgKzEyMiw3IEBA IGRhdGFwYWdlbWFwX3ByaW50KGRhdGFwYWdlbWFwX3QgKm1hcCkKIAogCWl0ZXIgPSBkYXRh cGFnZW1hcF9pdGVyYXRlKG1hcCk7CiAJd2hpbGUgKGRhdGFwYWdlbWFwX25leHQoaXRlciwg JmJsb2NrbnVtKSkKLQkJcGdfbG9nKFBHX0RFQlVHLCAiICBibG9jayAldVxuIiwgYmxvY2tu dW0pOworCQlwZ19sb2dfZGVidWcoImJsb2NrICV1IiwgYmxvY2tudW0pOwogCiAJcGdfZnJl ZShpdGVyKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmV3aW5kL2ZpbGVfb3BzLmMg Yi9zcmMvYmluL3BnX3Jld2luZC9maWxlX29wcy5jCmluZGV4IGJiZGNiZTQ0YWMuLmU0NDJm OTM1NTUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmV3aW5kL2ZpbGVfb3BzLmMKKysrIGIv c3JjL2Jpbi9wZ19yZXdpbmQvZmlsZV9vcHMuYwpAQCAtNjAsOCArNjAsOCBAQCBvcGVuX3Rh cmdldF9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIGJvb2wgdHJ1bmMpCiAJCW1vZGUgfD0gT19U UlVOQzsKIAlkc3RmZCA9IG9wZW4oZHN0cGF0aCwgbW9kZSwgcGdfZmlsZV9jcmVhdGVfbW9k ZSk7CiAJaWYgKGRzdGZkIDwgMCkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIHRhcmdl dCBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJIGRzdHBhdGgsIHN0cmVycm9yKGVycm5vKSk7 CisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiB0YXJnZXQgZmlsZSBcIiVzXCI6ICVtIiwK KwkJCQkgZHN0cGF0aCk7CiB9CiAKIC8qCkBAIC03NCw4ICs3NCw4IEBAIGNsb3NlX3Rhcmdl dF9maWxlKHZvaWQpCiAJCXJldHVybjsKIAogCWlmIChjbG9zZShkc3RmZCkgIT0gMCkKLQkJ cGdfZmF0YWwoImNvdWxkIG5vdCBjbG9zZSB0YXJnZXQgZmlsZSBcIiVzXCI6ICVzXG4iLAot CQkJCSBkc3RwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19mYXRhbCgiY291bGQgbm90 IGNsb3NlIHRhcmdldCBmaWxlIFwiJXNcIjogJW0iLAorCQkJCSBkc3RwYXRoKTsKIAogCWRz dGZkID0gLTE7CiB9CkBAIC05NCw4ICs5NCw4IEBAIHdyaXRlX3RhcmdldF9yYW5nZShjaGFy ICpidWYsIG9mZl90IGJlZ2luLCBzaXplX3Qgc2l6ZSkKIAkJcmV0dXJuOwogCiAJaWYgKGxz ZWVrKGRzdGZkLCBiZWdpbiwgU0VFS19TRVQpID09IC0xKQotCQlwZ19mYXRhbCgiY291bGQg bm90IHNlZWsgaW4gdGFyZ2V0IGZpbGUgXCIlc1wiOiAlc1xuIiwKLQkJCQkgZHN0cGF0aCwg c3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBzZWVrIGluIHRhcmdl dCBmaWxlIFwiJXNcIjogJW0iLAorCQkJCSBkc3RwYXRoKTsKIAogCXdyaXRlbGVmdCA9IHNp emU7CiAJcCA9IGJ1ZjsKQEAgLTExMCw4ICsxMTAsOCBAQCB3cml0ZV90YXJnZXRfcmFuZ2Uo Y2hhciAqYnVmLCBvZmZfdCBiZWdpbiwgc2l6ZV90IHNpemUpCiAJCQkvKiBpZiB3cml0ZSBk aWRuJ3Qgc2V0IGVycm5vLCBhc3N1bWUgcHJvYmxlbSBpcyBubyBkaXNrIHNwYWNlICovCiAJ CQlpZiAoZXJybm8gPT0gMCkKIAkJCQllcnJubyA9IEVOT1NQQzsKLQkJCXBnX2ZhdGFsKCJj b3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCQkgZHN0cGF0aCwgc3Ry ZXJyb3IoZXJybm8pKTsKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgd3JpdGUgZmlsZSBcIiVz XCI6ICVtIiwKKwkJCQkJIGRzdHBhdGgpOwogCQl9CiAKIAkJcCArPSB3cml0ZWxlbjsKQEAg LTE2MCw3ICsxNjAsNyBAQCBjcmVhdGVfdGFyZ2V0KGZpbGVfZW50cnlfdCAqZW50cnkpCiAK IAkJY2FzZSBGSUxFX1RZUEVfUkVHVUxBUjoKIAkJCS8qIGNhbid0IGhhcHBlbi4gUmVndWxh ciBmaWxlcyBhcmUgY3JlYXRlZCB3aXRoIG9wZW5fdGFyZ2V0X2ZpbGUuICovCi0JCQlwZ19m YXRhbCgiaW52YWxpZCBhY3Rpb24gKENSRUFURSkgZm9yIHJlZ3VsYXIgZmlsZVxuIik7CisJ CQlwZ19mYXRhbCgiaW52YWxpZCBhY3Rpb24gKENSRUFURSkgZm9yIHJlZ3VsYXIgZmlsZSIp OwogCQkJYnJlYWs7CiAJfQogfQpAQCAtMTgzLDggKzE4Myw4IEBAIHJlbW92ZV90YXJnZXRf ZmlsZShjb25zdCBjaGFyICpwYXRoLCBib29sIG1pc3Npbmdfb2spCiAJCWlmIChlcnJubyA9 PSBFTk9FTlQgJiYgbWlzc2luZ19vaykKIAkJCXJldHVybjsKIAotCQlwZ19mYXRhbCgiY291 bGQgbm90IHJlbW92ZSBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJIGRzdHBhdGgsIHN0cmVy cm9yKGVycm5vKSk7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVtb3ZlIGZpbGUgXCIlc1wi OiAlbSIsCisJCQkJIGRzdHBhdGgpOwogCX0KIH0KIApAQCAtMjAxLDEyICsyMDEsMTIgQEAg dHJ1bmNhdGVfdGFyZ2V0X2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgb2ZmX3QgbmV3c2l6ZSkK IAogCWZkID0gb3Blbihkc3RwYXRoLCBPX1dST05MWSwgcGdfZmlsZV9jcmVhdGVfbW9kZSk7 CiAJaWYgKGZkIDwgMCkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wi IGZvciB0cnVuY2F0aW9uOiAlc1xuIiwKLQkJCQkgZHN0cGF0aCwgc3RyZXJyb3IoZXJybm8p KTsKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciB0cnVuY2F0 aW9uOiAlbSIsCisJCQkJIGRzdHBhdGgpOwogCiAJaWYgKGZ0cnVuY2F0ZShmZCwgbmV3c2l6 ZSkgIT0gMCkKLQkJcGdfZmF0YWwoImNvdWxkIG5vdCB0cnVuY2F0ZSBmaWxlIFwiJXNcIiB0 byAldTogJXNcbiIsCi0JCQkJIGRzdHBhdGgsICh1bnNpZ25lZCBpbnQpIG5ld3NpemUsIHN0 cmVycm9yKGVycm5vKSk7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgdHJ1bmNhdGUgZmlsZSBc IiVzXCIgdG8gJXU6ICVtIiwKKwkJCQkgZHN0cGF0aCwgKHVuc2lnbmVkIGludCkgbmV3c2l6 ZSk7CiAKIAljbG9zZShmZCk7CiB9CkBAIC0yMjEsOCArMjIxLDggQEAgY3JlYXRlX3Rhcmdl dF9kaXIoY29uc3QgY2hhciAqcGF0aCkKIAogCXNucHJpbnRmKGRzdHBhdGgsIHNpemVvZihk c3RwYXRoKSwgIiVzLyVzIiwgZGF0YWRpcl90YXJnZXQsIHBhdGgpOwogCWlmIChta2Rpcihk c3RwYXRoLCBwZ19kaXJfY3JlYXRlX21vZGUpICE9IDApCi0JCXBnX2ZhdGFsKCJjb3VsZCBu b3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iLAotCQkJCSBkc3RwYXRoLCBzdHJl cnJvcihlcnJubykpOworCQlwZ19mYXRhbCgiY291bGQgbm90IGNyZWF0ZSBkaXJlY3Rvcnkg XCIlc1wiOiAlbSIsCisJCQkJIGRzdHBhdGgpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjM1 LDggKzIzNSw4IEBAIHJlbW92ZV90YXJnZXRfZGlyKGNvbnN0IGNoYXIgKnBhdGgpCiAKIAlz bnByaW50Zihkc3RwYXRoLCBzaXplb2YoZHN0cGF0aCksICIlcy8lcyIsIGRhdGFkaXJfdGFy Z2V0LCBwYXRoKTsKIAlpZiAocm1kaXIoZHN0cGF0aCkgIT0gMCkKLQkJcGdfZmF0YWwoImNv dWxkIG5vdCByZW1vdmUgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIsCi0JCQkJIGRzdHBhdGgs IHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVtb3ZlIGRpcmVj dG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkgZHN0cGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBA IC0yNDksOCArMjQ5LDggQEAgY3JlYXRlX3RhcmdldF9zeW1saW5rKGNvbnN0IGNoYXIgKnBh dGgsIGNvbnN0IGNoYXIgKmxpbmspCiAKIAlzbnByaW50Zihkc3RwYXRoLCBzaXplb2YoZHN0 cGF0aCksICIlcy8lcyIsIGRhdGFkaXJfdGFyZ2V0LCBwYXRoKTsKIAlpZiAoc3ltbGluayhs aW5rLCBkc3RwYXRoKSAhPSAwKQotCQlwZ19mYXRhbCgiY291bGQgbm90IGNyZWF0ZSBzeW1i b2xpYyBsaW5rIGF0IFwiJXNcIjogJXNcbiIsCi0JCQkJIGRzdHBhdGgsIHN0cmVycm9yKGVy cm5vKSk7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY3JlYXRlIHN5bWJvbGljIGxpbmsgYXQg XCIlc1wiOiAlbSIsCisJCQkJIGRzdHBhdGgpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjYz LDggKzI2Myw4IEBAIHJlbW92ZV90YXJnZXRfc3ltbGluayhjb25zdCBjaGFyICpwYXRoKQog CiAJc25wcmludGYoZHN0cGF0aCwgc2l6ZW9mKGRzdHBhdGgpLCAiJXMvJXMiLCBkYXRhZGly X3RhcmdldCwgcGF0aCk7CiAJaWYgKHVubGluayhkc3RwYXRoKSAhPSAwKQotCQlwZ19mYXRh bCgiY291bGQgbm90IHJlbW92ZSBzeW1ib2xpYyBsaW5rIFwiJXNcIjogJXNcbiIsCi0JCQkJ IGRzdHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVt b3ZlIHN5bWJvbGljIGxpbmsgXCIlc1wiOiAlbSIsCisJCQkJIGRzdHBhdGgpOwogfQogCiAK QEAgLTI5NCwxMiArMjk0LDEyIEBAIHNsdXJwRmlsZShjb25zdCBjaGFyICpkYXRhZGlyLCBj b25zdCBjaGFyICpwYXRoLCBzaXplX3QgKmZpbGVzaXplKQogCXNucHJpbnRmKGZ1bGxwYXRo LCBzaXplb2YoZnVsbHBhdGgpLCAiJXMvJXMiLCBkYXRhZGlyLCBwYXRoKTsKIAogCWlmICgo ZmQgPSBvcGVuKGZ1bGxwYXRoLCBPX1JET05MWSB8IFBHX0JJTkFSWSwgMCkpID09IC0xKQot CQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmc6ICVz XG4iLAotCQkJCSBmdWxscGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfZmF0YWwoImNv dWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciByZWFkaW5nOiAlbSIsCisJCQkJIGZ1bGxw YXRoKTsKIAogCWlmIChmc3RhdChmZCwgJnN0YXRidWYpIDwgMCkKLQkJcGdfZmF0YWwoImNv dWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciByZWFkaW5nOiAlc1xuIiwKLQkJCQkgZnVs bHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBm aWxlIFwiJXNcIiBmb3IgcmVhZGluZzogJW0iLAorCQkJCSBmdWxscGF0aCk7CiAKIAlsZW4g PSBzdGF0YnVmLnN0X3NpemU7CiAKQEAgLTMwOSwxMCArMzA5LDEwIEBAIHNsdXJwRmlsZShj b25zdCBjaGFyICpkYXRhZGlyLCBjb25zdCBjaGFyICpwYXRoLCBzaXplX3QgKmZpbGVzaXpl KQogCWlmIChyICE9IGxlbikKIAl7CiAJCWlmIChyIDwgMCkKLQkJCXBnX2ZhdGFsKCJjb3Vs ZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJCSBmdWxscGF0aCwgc3RyZXJy b3IoZXJybm8pKTsKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjog JW0iLAorCQkJCQkgZnVsbHBhdGgpOwogCQllbHNlCi0JCQlwZ19mYXRhbCgiY291bGQgbm90 IHJlYWQgZmlsZSBcIiVzXCI6IHJlYWQgJWQgb2YgJXp1XG4iLAorCQkJcGdfZmF0YWwoImNv dWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiByZWFkICVkIG9mICV6dSIsCiAJCQkJCSBmdWxs cGF0aCwgciwgKFNpemUpIGxlbik7CiAJfQogCWNsb3NlKGZkKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfcmV3aW5kL2ZpbGVtYXAuYyBiL3NyYy9iaW4vcGdfcmV3aW5kL2ZpbGVtYXAu YwppbmRleCBiYjRmZmQwZTM4Li4xNzBkYzY0ZGRhIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X3Jld2luZC9maWxlbWFwLmMKKysrIGIvc3JjL2Jpbi9wZ19yZXdpbmQvZmlsZW1hcC5jCkBA IC0yMCw2ICsyMCw3IEBACiAKICNpbmNsdWRlICJjb21tb24vc3RyaW5nLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlX2QuaCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dn aW5nLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogCiBmaWxlbWFwX3QgICpmaWxlbWFw ID0gTlVMTDsKQEAgLTE3NCw3ICsxNzUsNyBAQCBwcm9jZXNzX3NvdXJjZV9maWxlKGNvbnN0 IGNoYXIgKnBhdGgsIGZpbGVfdHlwZV90IHR5cGUsIHNpemVfdCBuZXdzaXplLAogCSAqIHJl Z3VsYXIgZmlsZQogCSAqLwogCWlmICh0eXBlICE9IEZJTEVfVFlQRV9SRUdVTEFSICYmIGlz UmVsRGF0YUZpbGUocGF0aCkpCi0JCXBnX2ZhdGFsKCJkYXRhIGZpbGUgXCIlc1wiIGluIHNv dXJjZSBpcyBub3QgYSByZWd1bGFyIGZpbGVcbiIsIHBhdGgpOworCQlwZ19mYXRhbCgiZGF0 YSBmaWxlIFwiJXNcIiBpbiBzb3VyY2UgaXMgbm90IGEgcmVndWxhciBmaWxlIiwgcGF0aCk7 CiAKIAlzbnByaW50Zihsb2NhbHBhdGgsIHNpemVvZihsb2NhbHBhdGgpLCAiJXMvJXMiLCBk YXRhZGlyX3RhcmdldCwgcGF0aCk7CiAKQEAgLTE4Miw4ICsxODMsOCBAQCBwcm9jZXNzX3Nv dXJjZV9maWxlKGNvbnN0IGNoYXIgKnBhdGgsIGZpbGVfdHlwZV90IHR5cGUsIHNpemVfdCBu ZXdzaXplLAogCWlmIChsc3RhdChsb2NhbHBhdGgsICZzdGF0YnVmKSA8IDApCiAJewogCQlp ZiAoZXJybm8gIT0gRU5PRU5UKQotCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBzdGF0IGZpbGUg XCIlc1wiOiAlc1xuIiwKLQkJCQkJIGxvY2FscGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJ CXBnX2ZhdGFsKCJjb3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJW0iLAorCQkJCQkgbG9j YWxwYXRoKTsKIAogCQlleGlzdHMgPSBmYWxzZTsKIAl9CkBAIC0xOTYsNyArMTk3LDcgQEAg cHJvY2Vzc19zb3VyY2VfZmlsZShjb25zdCBjaGFyICpwYXRoLCBmaWxlX3R5cGVfdCB0eXBl LCBzaXplX3QgbmV3c2l6ZSwKIAkJCWlmIChleGlzdHMgJiYgIVNfSVNESVIoc3RhdGJ1Zi5z dF9tb2RlKSAmJiBzdHJjbXAocGF0aCwgInBnX3dhbCIpICE9IDApCiAJCQl7CiAJCQkJLyog aXQncyBhIGRpcmVjdG9yeSBpbiBzb3VyY2UsIGJ1dCBub3QgaW4gdGFyZ2V0LiBTdHJhbmdl Li4gKi8KLQkJCQlwZ19mYXRhbCgiXCIlc1wiIGlzIG5vdCBhIGRpcmVjdG9yeVxuIiwgbG9j YWxwYXRoKTsKKwkJCQlwZ19mYXRhbCgiXCIlc1wiIGlzIG5vdCBhIGRpcmVjdG9yeSIsIGxv Y2FscGF0aCk7CiAJCQl9CiAKIAkJCWlmICghZXhpc3RzKQpAQCAtMjE5LDcgKzIyMCw3IEBA IHByb2Nlc3Nfc291cmNlX2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgZmlsZV90eXBlX3QgdHlw ZSwgc2l6ZV90IG5ld3NpemUsCiAJCQkJICogSXQncyBhIHN5bWJvbGljIGxpbmsgaW4gc291 cmNlLCBidXQgbm90IGluIHRhcmdldC4KIAkJCQkgKiBTdHJhbmdlLi4KIAkJCQkgKi8KLQkJ CQlwZ19mYXRhbCgiXCIlc1wiIGlzIG5vdCBhIHN5bWJvbGljIGxpbmtcbiIsIGxvY2FscGF0 aCk7CisJCQkJcGdfZmF0YWwoIlwiJXNcIiBpcyBub3QgYSBzeW1ib2xpYyBsaW5rIiwgbG9j YWxwYXRoKTsKIAkJCX0KIAogCQkJaWYgKCFleGlzdHMpCkBAIC0yMzEsNyArMjMyLDcgQEAg cHJvY2Vzc19zb3VyY2VfZmlsZShjb25zdCBjaGFyICpwYXRoLCBmaWxlX3R5cGVfdCB0eXBl LCBzaXplX3QgbmV3c2l6ZSwKIAogCQljYXNlIEZJTEVfVFlQRV9SRUdVTEFSOgogCQkJaWYg KGV4aXN0cyAmJiAhU19JU1JFRyhzdGF0YnVmLnN0X21vZGUpKQotCQkJCXBnX2ZhdGFsKCJc IiVzXCIgaXMgbm90IGEgcmVndWxhciBmaWxlXG4iLCBsb2NhbHBhdGgpOworCQkJCXBnX2Zh dGFsKCJcIiVzXCIgaXMgbm90IGEgcmVndWxhciBmaWxlIiwgbG9jYWxwYXRoKTsKIAogCQkJ aWYgKCFleGlzdHMgfHwgIWlzUmVsRGF0YUZpbGUocGF0aCkpCiAJCQl7CkBAIC0zNDUsOCAr MzQ2LDggQEAgcHJvY2Vzc190YXJnZXRfZmlsZShjb25zdCBjaGFyICpwYXRoLCBmaWxlX3R5 cGVfdCB0eXBlLCBzaXplX3Qgb2xkc2l6ZSwKIAlpZiAobHN0YXQobG9jYWxwYXRoLCAmc3Rh dGJ1ZikgPCAwKQogCXsKIAkJaWYgKGVycm5vICE9IEVOT0VOVCkKLQkJCXBnX2ZhdGFsKCJj b3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJCSBsb2NhbHBhdGgsIHN0 cmVycm9yKGVycm5vKSk7CisJCQlwZ19mYXRhbCgiY291bGQgbm90IHN0YXQgZmlsZSBcIiVz XCI6ICVtIiwKKwkJCQkJIGxvY2FscGF0aCk7CiAKIAkJZXhpc3RzID0gZmFsc2U7CiAJfQpA QCAtMzU3LDcgKzM1OCw3IEBAIHByb2Nlc3NfdGFyZ2V0X2ZpbGUoY29uc3QgY2hhciAqcGF0 aCwgZmlsZV90eXBlX3QgdHlwZSwgc2l6ZV90IG9sZHNpemUsCiAJCWlmIChtYXAtPm5saXN0 ID09IDApCiAJCXsKIAkJCS8qIHNob3VsZCBub3QgaGFwcGVuICovCi0JCQlwZ19mYXRhbCgi c291cmNlIGZpbGUgbGlzdCBpcyBlbXB0eVxuIik7CisJCQlwZ19mYXRhbCgic291cmNlIGZp bGUgbGlzdCBpcyBlbXB0eSIpOwogCQl9CiAKIAkJZmlsZW1hcF9saXN0X3RvX2FycmF5KG1h cCk7CkBAIC00NzIsNyArNDczLDcgQEAgcHJvY2Vzc19ibG9ja19jaGFuZ2UoRm9ya051bWJl ciBmb3JrbnVtLCBSZWxGaWxlTm9kZSBybm9kZSwgQmxvY2tOdW1iZXIgYmxrbm8pCiAJCQkJ YnJlYWs7CiAKIAkJCWNhc2UgRklMRV9BQ1RJT05fQ1JFQVRFOgotCQkJCXBnX2ZhdGFsKCJ1 bmV4cGVjdGVkIHBhZ2UgbW9kaWZpY2F0aW9uIGZvciBkaXJlY3Rvcnkgb3Igc3ltYm9saWMg bGluayBcIiVzXCJcbiIsIGVudHJ5LT5wYXRoKTsKKwkJCQlwZ19mYXRhbCgidW5leHBlY3Rl ZCBwYWdlIG1vZGlmaWNhdGlvbiBmb3IgZGlyZWN0b3J5IG9yIHN5bWJvbGljIGxpbmsgXCIl c1wiIiwgZW50cnktPnBhdGgpOwogCQl9CiAJfQogCWVsc2UKQEAgLTUwNywxMCArNTA4LDEw IEBAIGNoZWNrX2ZpbGVfZXhjbHVkZWQoY29uc3QgY2hhciAqcGF0aCwgYm9vbCBpc19zb3Vy Y2UpCiAJCWlmIChzdHJjbXAoZmlsZW5hbWUsIGV4Y2x1ZGVGaWxlc1tleGNsdWRlSWR4XSkg PT0gMCkKIAkJewogCQkJaWYgKGlzX3NvdXJjZSkKLQkJCQlwZ19sb2coUEdfREVCVUcsICJl bnRyeSBcIiVzXCIgZXhjbHVkZWQgZnJvbSBzb3VyY2UgZmlsZSBsaXN0XG4iLAorCQkJCXBn X2xvZ19kZWJ1ZygiZW50cnkgXCIlc1wiIGV4Y2x1ZGVkIGZyb20gc291cmNlIGZpbGUgbGlz dCIsCiAJCQkJCSAgIHBhdGgpOwogCQkJZWxzZQotCQkJCXBnX2xvZyhQR19ERUJVRywgImVu dHJ5IFwiJXNcIiBleGNsdWRlZCBmcm9tIHRhcmdldCBmaWxlIGxpc3RcbiIsCisJCQkJcGdf bG9nX2RlYnVnKCJlbnRyeSBcIiVzXCIgZXhjbHVkZWQgZnJvbSB0YXJnZXQgZmlsZSBsaXN0 IiwKIAkJCQkJICAgcGF0aCk7CiAJCQlyZXR1cm4gdHJ1ZTsKIAkJfQpAQCAtNTI3LDEwICs1 MjgsMTAgQEAgY2hlY2tfZmlsZV9leGNsdWRlZChjb25zdCBjaGFyICpwYXRoLCBib29sIGlz X3NvdXJjZSkKIAkJaWYgKHN0cnN0cihwYXRoLCBsb2NhbHBhdGgpID09IHBhdGgpCiAJCXsK IAkJCWlmIChpc19zb3VyY2UpCi0JCQkJcGdfbG9nKFBHX0RFQlVHLCAiZW50cnkgXCIlc1wi IGV4Y2x1ZGVkIGZyb20gc291cmNlIGZpbGUgbGlzdFxuIiwKKwkJCQlwZ19sb2dfZGVidWco ImVudHJ5IFwiJXNcIiBleGNsdWRlZCBmcm9tIHNvdXJjZSBmaWxlIGxpc3QiLAogCQkJCQkg ICBwYXRoKTsKIAkJCWVsc2UKLQkJCQlwZ19sb2coUEdfREVCVUcsICJlbnRyeSBcIiVzXCIg ZXhjbHVkZWQgZnJvbSB0YXJnZXQgZmlsZSBsaXN0XG4iLAorCQkJCXBnX2xvZ19kZWJ1Zygi ZW50cnkgXCIlc1wiIGV4Y2x1ZGVkIGZyb20gdGFyZ2V0IGZpbGUgbGlzdCIsCiAJCQkJCSAg IHBhdGgpOwogCQkJcmV0dXJuIHRydWU7CiAJCX0KQEAgLTY1OCwxMCArNjU5LDcgQEAgcHJp bnRfZmlsZW1hcCh2b2lkKQogCQlpZiAoZW50cnktPmFjdGlvbiAhPSBGSUxFX0FDVElPTl9O T05FIHx8CiAJCQllbnRyeS0+cGFnZW1hcC5iaXRtYXBzaXplID4gMCkKIAkJewotCQkJcGdf bG9nKFBHX0RFQlVHLAotCQkJLyotLS0tLS0KLQkJCSAgIHRyYW5zbGF0b3I6IGZpcnN0ICVz IGlzIGEgZmlsZSBwYXRoLCBzZWNvbmQgaXMgYSBrZXl3b3JkIHN1Y2ggYXMgQ09QWSAqLwot CQkJCSAgICIlcyAoJXMpXG4iLCBlbnRyeS0+cGF0aCwKKwkJCXBnX2xvZ19kZWJ1ZygiJXMg KCVzKSIsIGVudHJ5LT5wYXRoLAogCQkJCSAgIGFjdGlvbl90b19zdHIoZW50cnktPmFjdGlv bikpOwogCiAJCQlpZiAoZW50cnktPnBhZ2VtYXAuYml0bWFwc2l6ZSA+IDApCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3Jld2luZC9saWJwcV9mZXRjaC5jIGIvc3JjL2Jpbi9wZ19yZXdp bmQvbGlicHFfZmV0Y2guYwppbmRleCBkMDZlMjc3NDMyLi5jNzU2YjcwMTljIDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX3Jld2luZC9saWJwcV9mZXRjaC5jCisrKyBiL3NyYy9iaW4vcGdf cmV3aW5kL2xpYnBxX2ZldGNoLmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJsaWJw cS1mZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZV9kLmgiCiAjaW5jbHVkZSAiZmVf dXRpbHMvY29ubmVjdC5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNs dWRlICJwb3J0L3BnX2Jzd2FwLmgiCiAKIHN0YXRpYyBQR2Nvbm4gKmNvbm4gPSBOVUxMOwpA QCAtNTIsNyArNTMsNyBAQCBsaWJwcUNvbm5lY3QoY29uc3QgY2hhciAqY29ubnN0cikKIAkJ cGdfZmF0YWwoImNvdWxkIG5vdCBjb25uZWN0IHRvIHNlcnZlcjogJXMiLAogCQkJCSBQUWVy cm9yTWVzc2FnZShjb25uKSk7CiAKLQlwZ19sb2coUEdfUFJPR1JFU1MsICJjb25uZWN0ZWQg dG8gc2VydmVyXG4iKTsKKwlwZ19sb2dfaW5mbygiY29ubmVjdGVkIHRvIHNlcnZlciIpOwog CiAJcmVzID0gUFFleGVjKGNvbm4sIEFMV0FZU19TRUNVUkVfU0VBUkNIX1BBVEhfU1FMKTsK IAlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCkBAIC02OCw3 ICs2OSw3IEBAIGxpYnBxQ29ubmVjdChjb25zdCBjaGFyICpjb25uc3RyKQogCSAqLwogCXN0 ciA9IHJ1bl9zaW1wbGVfcXVlcnkoIlNFTEVDVCBwZ19pc19pbl9yZWNvdmVyeSgpIik7CiAJ aWYgKHN0cmNtcChzdHIsICJmIikgIT0gMCkKLQkJcGdfZmF0YWwoInNvdXJjZSBzZXJ2ZXIg bXVzdCBub3QgYmUgaW4gcmVjb3ZlcnkgbW9kZVxuIik7CisJCXBnX2ZhdGFsKCJzb3VyY2Ug c2VydmVyIG11c3Qgbm90IGJlIGluIHJlY292ZXJ5IG1vZGUiKTsKIAlwZ19mcmVlKHN0cik7 CiAKIAkvKgpAQCAtNzgsNyArNzksNyBAQCBsaWJwcUNvbm5lY3QoY29uc3QgY2hhciAqY29u bnN0cikKIAkgKi8KIAlzdHIgPSBydW5fc2ltcGxlX3F1ZXJ5KCJTSE9XIGZ1bGxfcGFnZV93 cml0ZXMiKTsKIAlpZiAoc3RyY21wKHN0ciwgIm9uIikgIT0gMCkKLQkJcGdfZmF0YWwoImZ1 bGxfcGFnZV93cml0ZXMgbXVzdCBiZSBlbmFibGVkIGluIHRoZSBzb3VyY2Ugc2VydmVyXG4i KTsKKwkJcGdfZmF0YWwoImZ1bGxfcGFnZV93cml0ZXMgbXVzdCBiZSBlbmFibGVkIGluIHRo ZSBzb3VyY2Ugc2VydmVyIik7CiAJcGdfZnJlZShzdHIpOwogCiAJLyoKQEAgLTExMyw3ICsx MTQsNyBAQCBydW5fc2ltcGxlX3F1ZXJ5KGNvbnN0IGNoYXIgKnNxbCkKIAogCS8qIHNhbml0 eSBjaGVjayB0aGUgcmVzdWx0IHNldCAqLwogCWlmIChQUW5maWVsZHMocmVzKSAhPSAxIHx8 IFBRbnR1cGxlcyhyZXMpICE9IDEgfHwgUFFnZXRpc251bGwocmVzLCAwLCAwKSkKLQkJcGdf ZmF0YWwoInVuZXhwZWN0ZWQgcmVzdWx0IHNldCBmcm9tIHF1ZXJ5XG4iKTsKKwkJcGdfZmF0 YWwoInVuZXhwZWN0ZWQgcmVzdWx0IHNldCBmcm9tIHF1ZXJ5Iik7CiAKIAlyZXN1bHQgPSBw Z19zdHJkdXAoUFFnZXR2YWx1ZShyZXMsIDAsIDApKTsKIApAQCAtMTM2LDcgKzEzNyw3IEBA IGxpYnBxR2V0Q3VycmVudFhsb2dJbnNlcnRMb2NhdGlvbih2b2lkKQogCXZhbCA9IHJ1bl9z aW1wbGVfcXVlcnkoIlNFTEVDVCBwZ19jdXJyZW50X3dhbF9pbnNlcnRfbHNuKCkiKTsKIAog CWlmIChzc2NhbmYodmFsLCAiJVgvJVgiLCAmaGksICZsbykgIT0gMikKLQkJcGdfZmF0YWwo InVucmVjb2duaXplZCByZXN1bHQgXCIlc1wiIGZvciBjdXJyZW50IFdBTCBpbnNlcnQgbG9j YXRpb25cbiIsIHZhbCk7CisJCXBnX2ZhdGFsKCJ1bnJlY29nbml6ZWQgcmVzdWx0IFwiJXNc IiBmb3IgY3VycmVudCBXQUwgaW5zZXJ0IGxvY2F0aW9uIiwgdmFsKTsKIAogCXJlc3VsdCA9 ICgodWludDY0KSBoaSkgPDwgMzIgfCBsbzsKIApAQCAtMTkxLDcgKzE5Miw3IEBAIGxpYnBx UHJvY2Vzc0ZpbGVMaXN0KHZvaWQpCiAKIAkvKiBzYW5pdHkgY2hlY2sgdGhlIHJlc3VsdCBz ZXQgKi8KIAlpZiAoUFFuZmllbGRzKHJlcykgIT0gNCkKLQkJcGdfZmF0YWwoInVuZXhwZWN0 ZWQgcmVzdWx0IHNldCB3aGlsZSBmZXRjaGluZyBmaWxlIGxpc3RcbiIpOworCQlwZ19mYXRh bCgidW5leHBlY3RlZCByZXN1bHQgc2V0IHdoaWxlIGZldGNoaW5nIGZpbGUgbGlzdCIpOwog CiAJLyogUmVhZCByZXN1bHQgdG8gbG9jYWwgdmFyaWFibGVzICovCiAJZm9yIChpID0gMDsg aSA8IFBRbnR1cGxlcyhyZXMpOyBpKyspCkBAIC0yNDEsMTAgKzI0MiwxMCBAQCByZWNlaXZl RmlsZUNodW5rcyhjb25zdCBjaGFyICpzcWwpCiAJaWYgKFBRc2VuZFF1ZXJ5UGFyYW1zKGNv bm4sIHNxbCwgMCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgMSkgIT0gMSkKIAkJcGdfZmF0 YWwoImNvdWxkIG5vdCBzZW5kIHF1ZXJ5OiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsK IAotCXBnX2xvZyhQR19ERUJVRywgImdldHRpbmcgZmlsZSBjaHVua3NcbiIpOworCXBnX2xv Z19kZWJ1ZygiZ2V0dGluZyBmaWxlIGNodW5rcyIpOwogCiAJaWYgKFBRc2V0U2luZ2xlUm93 TW9kZShjb25uKSAhPSAxKQotCQlwZ19mYXRhbCgiY291bGQgbm90IHNldCBsaWJwcSBjb25u ZWN0aW9uIHRvIHNpbmdsZSByb3cgbW9kZVxuIik7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qg c2V0IGxpYnBxIGNvbm5lY3Rpb24gdG8gc2luZ2xlIHJvdyBtb2RlIik7CiAKIAl3aGlsZSAo KHJlcyA9IFBRZ2V0UmVzdWx0KGNvbm4pKSAhPSBOVUxMKQogCXsKQEAgLTI3MSwxMyArMjcy LDEzIEBAIHJlY2VpdmVGaWxlQ2h1bmtzKGNvbnN0IGNoYXIgKnNxbCkKIAogCQkvKiBzYW5p dHkgY2hlY2sgdGhlIHJlc3VsdCBzZXQgKi8KIAkJaWYgKFBRbmZpZWxkcyhyZXMpICE9IDMg fHwgUFFudHVwbGVzKHJlcykgIT0gMSkKLQkJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIHJlc3Vs dCBzZXQgc2l6ZSB3aGlsZSBmZXRjaGluZyByZW1vdGUgZmlsZXNcbiIpOworCQkJcGdfZmF0 YWwoInVuZXhwZWN0ZWQgcmVzdWx0IHNldCBzaXplIHdoaWxlIGZldGNoaW5nIHJlbW90ZSBm aWxlcyIpOwogCiAJCWlmIChQUWZ0eXBlKHJlcywgMCkgIT0gVEVYVE9JRCB8fAogCQkJUFFm dHlwZShyZXMsIDEpICE9IElOVDhPSUQgfHwKIAkJCVBRZnR5cGUocmVzLCAyKSAhPSBCWVRF QU9JRCkKIAkJewotCQkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgZGF0YSB0eXBlcyBpbiByZXN1 bHQgc2V0IHdoaWxlIGZldGNoaW5nIHJlbW90ZSBmaWxlczogJXUgJXUgJXVcbiIsCisJCQlw Z19mYXRhbCgidW5leHBlY3RlZCBkYXRhIHR5cGVzIGluIHJlc3VsdCBzZXQgd2hpbGUgZmV0 Y2hpbmcgcmVtb3RlIGZpbGVzOiAldSAldSAldSIsCiAJCQkJCSBQUWZ0eXBlKHJlcywgMCks IFBRZnR5cGUocmVzLCAxKSwgUFFmdHlwZShyZXMsIDIpKTsKIAkJfQogCkBAIC0yODUsMTcg KzI4NiwxNyBAQCByZWNlaXZlRmlsZUNodW5rcyhjb25zdCBjaGFyICpzcWwpCiAJCQlQUWZm b3JtYXQocmVzLCAxKSAhPSAxICYmCiAJCQlQUWZmb3JtYXQocmVzLCAyKSAhPSAxKQogCQl7 Ci0JCQlwZ19mYXRhbCgidW5leHBlY3RlZCByZXN1bHQgZm9ybWF0IHdoaWxlIGZldGNoaW5n IHJlbW90ZSBmaWxlc1xuIik7CisJCQlwZ19mYXRhbCgidW5leHBlY3RlZCByZXN1bHQgZm9y bWF0IHdoaWxlIGZldGNoaW5nIHJlbW90ZSBmaWxlcyIpOwogCQl9CiAKIAkJaWYgKFBRZ2V0 aXNudWxsKHJlcywgMCwgMCkgfHwKIAkJCVBRZ2V0aXNudWxsKHJlcywgMCwgMSkpCiAJCXsK LQkJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIG51bGwgdmFsdWVzIGluIHJlc3VsdCB3aGlsZSBm ZXRjaGluZyByZW1vdGUgZmlsZXNcbiIpOworCQkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgbnVs bCB2YWx1ZXMgaW4gcmVzdWx0IHdoaWxlIGZldGNoaW5nIHJlbW90ZSBmaWxlcyIpOwogCQl9 CiAKIAkJaWYgKFBRZ2V0bGVuZ3RoKHJlcywgMCwgMSkgIT0gc2l6ZW9mKGludDY0KSkKLQkJ CXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIHJlc3VsdCBsZW5ndGggd2hpbGUgZmV0Y2hpbmcgcmVt b3RlIGZpbGVzXG4iKTsKKwkJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIHJlc3VsdCBsZW5ndGgg d2hpbGUgZmV0Y2hpbmcgcmVtb3RlIGZpbGVzIik7CiAKIAkJLyogUmVhZCByZXN1bHQgc2V0 IHRvIGxvY2FsIHZhcmlhYmxlcyAqLwogCQltZW1jcHkoJmNodW5rb2ZmLCBQUWdldHZhbHVl KHJlcywgMCwgMSksIHNpemVvZihpbnQ2NCkpOwpAQCAtMzE5LDggKzMyMCw3IEBAIHJlY2Vp dmVGaWxlQ2h1bmtzKGNvbnN0IGNoYXIgKnNxbCkKIAkJICovCiAJCWlmIChQUWdldGlzbnVs bChyZXMsIDAsIDIpKQogCQl7Ci0JCQlwZ19sb2coUEdfREVCVUcsCi0JCQkJICAgInJlY2Vp dmVkIG51bGwgdmFsdWUgZm9yIGNodW5rIGZvciBmaWxlIFwiJXNcIiwgZmlsZSBoYXMgYmVl biBkZWxldGVkXG4iLAorCQkJcGdfbG9nX2RlYnVnKCJyZWNlaXZlZCBudWxsIHZhbHVlIGZv ciBjaHVuayBmb3IgZmlsZSBcIiVzXCIsIGZpbGUgaGFzIGJlZW4gZGVsZXRlZCIsCiAJCQkJ ICAgZmlsZW5hbWUpOwogCQkJcmVtb3ZlX3RhcmdldF9maWxlKGZpbGVuYW1lLCB0cnVlKTsK IAkJCXBnX2ZyZWUoZmlsZW5hbWUpOwpAQCAtMzMzLDcgKzMzMyw3IEBAIHJlY2VpdmVGaWxl Q2h1bmtzKGNvbnN0IGNoYXIgKnNxbCkKIAkJICogdHJhbnNsYXRhYmxlIHN0cmluZ3MuCiAJ CSAqLwogCQlzbnByaW50ZihjaHVua29mZl9zdHIsIHNpemVvZihjaHVua29mZl9zdHIpLCBJ TlQ2NF9GT1JNQVQsIGNodW5rb2ZmKTsKLQkJcGdfbG9nKFBHX0RFQlVHLCAicmVjZWl2ZWQg Y2h1bmsgZm9yIGZpbGUgXCIlc1wiLCBvZmZzZXQgJXMsIHNpemUgJWRcbiIsCisJCXBnX2xv Z19kZWJ1ZygicmVjZWl2ZWQgY2h1bmsgZm9yIGZpbGUgXCIlc1wiLCBvZmZzZXQgJXMsIHNp emUgJWQiLAogCQkJICAgZmlsZW5hbWUsIGNodW5rb2ZmX3N0ciwgY2h1bmtzaXplKTsKIAog CQlvcGVuX3RhcmdldF9maWxlKGZpbGVuYW1lLCBmYWxzZSk7CkBAIC0zNjcsNyArMzY3LDcg QEAgbGlicHFHZXRGaWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzaXplX3QgKmZpbGVzaXpl KQogCiAJLyogc2FuaXR5IGNoZWNrIHRoZSByZXN1bHQgc2V0ICovCiAJaWYgKFBRbnR1cGxl cyhyZXMpICE9IDEgfHwgUFFnZXRpc251bGwocmVzLCAwLCAwKSkKLQkJcGdfZmF0YWwoInVu ZXhwZWN0ZWQgcmVzdWx0IHNldCB3aGlsZSBmZXRjaGluZyByZW1vdGUgZmlsZSBcIiVzXCJc biIsCisJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIHJlc3VsdCBzZXQgd2hpbGUgZmV0Y2hpbmcg cmVtb3RlIGZpbGUgXCIlc1wiIiwKIAkJCQkgZmlsZW5hbWUpOwogCiAJLyogUmVhZCByZXN1 bHQgdG8gbG9jYWwgdmFyaWFibGVzICovCkBAIC0zNzgsNyArMzc4LDcgQEAgbGlicHFHZXRG aWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzaXplX3QgKmZpbGVzaXplKQogCiAJUFFjbGVh cihyZXMpOwogCi0JcGdfbG9nKFBHX0RFQlVHLCAiZmV0Y2hlZCBmaWxlIFwiJXNcIiwgbGVu Z3RoICVkXG4iLCBmaWxlbmFtZSwgbGVuKTsKKwlwZ19sb2dfZGVidWcoImZldGNoZWQgZmls ZSBcIiVzXCIsIGxlbmd0aCAlZCIsIGZpbGVuYW1lLCBsZW4pOwogCiAJaWYgKGZpbGVzaXpl KQogCQkqZmlsZXNpemUgPSBsZW47CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jld2luZC9s b2dnaW5nLmMgYi9zcmMvYmluL3BnX3Jld2luZC9sb2dnaW5nLmMKaW5kZXggNTcyYTc1OTkz Ny4uODVmMjU2NzQ0MSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXdpbmQvbG9nZ2luZy5j CisrKyBiL3NyYy9iaW4vcGdfcmV3aW5kL2xvZ2dpbmcuYwpAQCAtMjMsNzIgKzIzLDYgQEAg dWludDY0CQlmZXRjaF9kb25lOwogCiBzdGF0aWMgcGdfdGltZV90IGxhc3RfcHJvZ3Jlc3Nf cmVwb3J0ID0gMDsKIAotI2RlZmluZSBRVUVSWV9BTExPQwkJCTgxOTIKLQotc3RhdGljCi1w Z19hdHRyaWJ1dGVfcHJpbnRmKDIsIDApCi12b2lkCi1wZ19sb2dfdihlTG9nVHlwZSB0eXBl LCBjb25zdCBjaGFyICpmbXQsIHZhX2xpc3QgYXApCi17Ci0JY2hhcgkJbWVzc2FnZVtRVUVS WV9BTExPQ107Ci0KLQl2c25wcmludGYobWVzc2FnZSwgc2l6ZW9mKG1lc3NhZ2UpLCBfKGZt dCksIGFwKTsKLQotCXN3aXRjaCAodHlwZSkKLQl7Ci0JCWNhc2UgUEdfREVCVUc6Ci0JCQlp ZiAoZGVidWcpCi0JCQkJcHJpbnRmKCIlcyIsIG1lc3NhZ2UpOwotCQkJYnJlYWs7Ci0KLQkJ Y2FzZSBQR19QUk9HUkVTUzoKLQkJCWlmIChzaG93cHJvZ3Jlc3MpCi0JCQkJcHJpbnRmKCIl cyIsIG1lc3NhZ2UpOwotCQkJYnJlYWs7Ci0KLQkJY2FzZSBQR19XQVJOSU5HOgotCQkJcHJp bnRmKCIlcyIsIG1lc3NhZ2UpOwotCQkJYnJlYWs7Ci0KLQkJY2FzZSBQR19GQVRBTDoKLQkJ CXByaW50ZigiXG4lcyIsIG1lc3NhZ2UpOwotCQkJcHJpbnRmKCIlcyIsIF8oIkZhaWx1cmUs IGV4aXRpbmdcbiIpKTsKLQkJCWV4aXQoMSk7Ci0JCQlicmVhazsKLQotCQlkZWZhdWx0Ogot CQkJYnJlYWs7Ci0JfQotCWZmbHVzaChzdGRvdXQpOwotfQotCi0KLXZvaWQKLXBnX2xvZyhl TG9nVHlwZSB0eXBlLCBjb25zdCBjaGFyICpmbXQsLi4uKQotewotCXZhX2xpc3QJCWFyZ3M7 Ci0KLQl2YV9zdGFydChhcmdzLCBmbXQpOwotCXBnX2xvZ192KHR5cGUsIGZtdCwgYXJncyk7 Ci0JdmFfZW5kKGFyZ3MpOwotfQotCi0KLS8qCi0gKiBQcmludCBhbiBlcnJvciBtZXNzYWdl LCBhbmQgZXhpdC4KLSAqLwotdm9pZAotcGdfZmF0YWwoY29uc3QgY2hhciAqZm10LC4uLikK LXsKLQl2YV9saXN0CQlhcmdzOwotCi0JdmFfc3RhcnQoYXJncywgZm10KTsKLQlwZ19sb2df dihQR19GQVRBTCwgZm10LCBhcmdzKTsKLQl2YV9lbmQoYXJncyk7Ci0JLyogc2hvdWxkIG5v dCBnZXQgaGVyZSwgcGdfbG9nX3YoKSBleGl0ZWQgYWxyZWFkeSAqLwotCWV4aXQoMSk7Ci19 Ci0KIAogLyoKICAqIFByaW50IGEgcHJvZ3Jlc3MgcmVwb3J0IGJhc2VkIG9uIHRoZSBnbG9i YWwgdmFyaWFibGVzLgpAQCAtMTM1LDggKzY5LDkgQEAgcHJvZ3Jlc3NfcmVwb3J0KGJvb2wg Zm9yY2UpCiAJc25wcmludGYoZmV0Y2hfc2l6ZV9zdHIsIHNpemVvZihmZXRjaF9zaXplX3N0 ciksIElOVDY0X0ZPUk1BVCwKIAkJCSBmZXRjaF9zaXplIC8gMTAyNCk7CiAKLQlwZ19sb2co UEdfUFJPR1JFU1MsICIlKnMvJXMga0IgKCVkJSUpIGNvcGllZCIsCisJcHJpbnRmKF8oIiUq cy8lcyBrQiAoJWQlJSkgY29waWVkIiksCiAJCSAgIChpbnQpIHN0cmxlbihmZXRjaF9zaXpl X3N0ciksIGZldGNoX2RvbmVfc3RyLCBmZXRjaF9zaXplX3N0ciwKIAkJICAgcGVyY2VudCk7 CiAJcHJpbnRmKCJcciIpOworCWZmbHVzaChzdGRvdXQpOwogfQpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19yZXdpbmQvbG9nZ2luZy5oIGIvc3JjL2Jpbi9wZ19yZXdpbmQvbG9nZ2luZy5o CmluZGV4IDVjMDMxZTE4MjEuLjgxZTE3YWMxZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf cmV3aW5kL2xvZ2dpbmcuaAorKysgYi9zcmMvYmluL3BnX3Jld2luZC9sb2dnaW5nLmgKQEAg LTEyLDI0ICsxMiwxNCBAQAogI2lmbmRlZiBQR19SRVdJTkRfTE9HR0lOR19ICiAjZGVmaW5l IFBHX1JFV0lORF9MT0dHSU5HX0gKIAorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIK KwogLyogcHJvZ3Jlc3MgY291bnRlcnMgKi8KIGV4dGVybiB1aW50NjQgZmV0Y2hfc2l6ZTsK IGV4dGVybiB1aW50NjQgZmV0Y2hfZG9uZTsKIAotLyoKLSAqIEVudW1lcmF0aW9uIHRvIGRl bm90ZSBwZ19sb2cgbW9kZXMKLSAqLwotdHlwZWRlZiBlbnVtCi17Ci0JUEdfREVCVUcsCi0J UEdfUFJPR1JFU1MsCi0JUEdfV0FSTklORywKLQlQR19GQVRBTAotfSBlTG9nVHlwZTsKLQot ZXh0ZXJuIHZvaWQgcGdfbG9nKGVMb2dUeXBlIHR5cGUsIGNvbnN0IGNoYXIgKmZtdCwuLi4p IHBnX2F0dHJpYnV0ZV9wcmludGYoMiwgMyk7Ci1leHRlcm4gdm9pZCBwZ19mYXRhbChjb25z dCBjaGFyICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDEsIDIpIHBnX2F0dHJpYnV0 ZV9ub3JldHVybigpOwotCiBleHRlcm4gdm9pZCBwcm9ncmVzc19yZXBvcnQoYm9vbCBmb3Jj ZSk7CiAKKyNkZWZpbmUgcGdfZmF0YWwoLi4uKSBkbyB7IHBnX2xvZ19mYXRhbChfX1ZBX0FS R1NfXyk7IGV4aXQoMSk7IH0gd2hpbGUoMCkKKwogI2VuZGlmCQkJCQkJCS8qIFBHX1JFV0lO RF9MT0dHSU5HX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmV3aW5kL25scy5tayBi L3NyYy9iaW4vcGdfcmV3aW5kL25scy5tawppbmRleCAyZmI2M2JlYWQ4Li41OGM5ZWRlNTQ4 IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jld2luZC9ubHMubWsKKysrIGIvc3JjL2Jpbi9w Z19yZXdpbmQvbmxzLm1rCkBAIC0xLDkgKzEsOCBAQAogIyBzcmMvYmluL3BnX3Jld2luZC9u bHMubWsKIENBVEFMT0dfTkFNRSAgICAgPSBwZ19yZXdpbmQKIEFWQUlMX0xBTkdVQUdFUyAg PWRlIGVzIGZyIGl0IGphIGtvIHBsIHB0X0JSIHJ1IHN2IHRyIHpoX0NOCi1HRVRURVhUX0ZJ TEVTICAgID0gY29weV9mZXRjaC5jIGRhdGFwYWdlbWFwLmMgZmV0Y2guYyBmaWxlX29wcy5j IGZpbGVtYXAuYyBsaWJwcV9mZXRjaC5jIGxvZ2dpbmcuYyBwYXJzZXhsb2cuYyBwZ19yZXdp bmQuYyB0aW1lbGluZS5jIC4uLy4uL2NvbW1vbi9mZV9tZW11dGlscy5jIC4uLy4uL2NvbW1v bi9yZXN0cmljdGVkX3Rva2VuLmMgeGxvZ3JlYWRlci5jCi0KLUdFVFRFWFRfVFJJR0dFUlMg PSBwZ19sb2c6MiBwZ19mYXRhbCByZXBvcnRfaW52YWxpZF9yZWNvcmQ6MgotR0VUVEVYVF9G TEFHUyAgICA9IHBnX2xvZzoyOmMtZm9ybWF0IFwKK0dFVFRFWFRfRklMRVMgICAgPSAkKEZS T05URU5EX0NPTU1PTl9HRVRURVhUX0ZJTEVTKSBjb3B5X2ZldGNoLmMgZGF0YXBhZ2VtYXAu YyBmZXRjaC5jIGZpbGVfb3BzLmMgZmlsZW1hcC5jIGxpYnBxX2ZldGNoLmMgbG9nZ2luZy5j IHBhcnNleGxvZy5jIHBnX3Jld2luZC5jIHRpbWVsaW5lLmMgLi4vLi4vY29tbW9uL2ZlX21l bXV0aWxzLmMgLi4vLi4vY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uYyB4bG9ncmVhZGVyLmMK K0dFVFRFWFRfVFJJR0dFUlMgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX1RSSUdHRVJT KSBwZ19mYXRhbCByZXBvcnRfaW52YWxpZF9yZWNvcmQ6MgorR0VUVEVYVF9GTEFHUyAgICA9 ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfRkxBR1MpIFwKICAgICBwZ19mYXRhbDoxOmMt Zm9ybWF0IFwKICAgICByZXBvcnRfaW52YWxpZF9yZWNvcmQ6MjpjLWZvcm1hdApkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ19yZXdpbmQvcGFyc2V4bG9nLmMgYi9zcmMvYmluL3BnX3Jld2lu ZC9wYXJzZXhsb2cuYwppbmRleCBlMTljMjY1Y2JiLi44NDFlMDY5NGIzIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX3Jld2luZC9wYXJzZXhsb2cuYworKysgYi9zcmMvYmluL3BnX3Jld2lu ZC9wYXJzZXhsb2cuYwpAQCAtNzIsNyArNzIsNyBAQCBleHRyYWN0UGFnZU1hcChjb25zdCBj aGFyICpkYXRhZGlyLCBYTG9nUmVjUHRyIHN0YXJ0cG9pbnQsIGludCB0bGlJbmRleCwKIAl4 bG9ncmVhZGVyID0gWExvZ1JlYWRlckFsbG9jYXRlKFdhbFNlZ1N6LCAmU2ltcGxlWExvZ1Bh Z2VSZWFkLAogCQkJCQkJCQkJJnByaXZhdGUpOwogCWlmICh4bG9ncmVhZGVyID09IE5VTEwp Ci0JCXBnX2ZhdGFsKCJvdXQgb2YgbWVtb3J5XG4iKTsKKwkJcGdfZmF0YWwoIm91dCBvZiBt ZW1vcnkiKTsKIAogCWRvCiAJewpAQCAtODUsMTEgKzg1LDExIEBAIGV4dHJhY3RQYWdlTWFw KGNvbnN0IGNoYXIgKmRhdGFkaXIsIFhMb2dSZWNQdHIgc3RhcnRwb2ludCwgaW50IHRsaUlu ZGV4LAogCQkJZXJycHRyID0gc3RhcnRwb2ludCA/IHN0YXJ0cG9pbnQgOiB4bG9ncmVhZGVy LT5FbmRSZWNQdHI7CiAKIAkJCWlmIChlcnJvcm1zZykKLQkJCQlwZ19mYXRhbCgiY291bGQg bm90IHJlYWQgV0FMIHJlY29yZCBhdCAlWC8lWDogJXNcbiIsCisJCQkJcGdfZmF0YWwoImNv dWxkIG5vdCByZWFkIFdBTCByZWNvcmQgYXQgJVgvJVg6ICVzIiwKIAkJCQkJCSAodWludDMy KSAoZXJycHRyID4+IDMyKSwgKHVpbnQzMikgKGVycnB0ciksCiAJCQkJCQkgZXJyb3Jtc2cp OwogCQkJZWxzZQotCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBXQUwgcmVjb3JkIGF0 ICVYLyVYXG4iLAorCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBXQUwgcmVjb3JkIGF0 ICVYLyVYIiwKIAkJCQkJCSAodWludDMyKSAoc3RhcnRwb2ludCA+PiAzMiksCiAJCQkJCQkg KHVpbnQzMikgKHN0YXJ0cG9pbnQpKTsKIAkJfQpAQCAtMTI2LDE2ICsxMjYsMTYgQEAgcmVh ZE9uZVJlY29yZChjb25zdCBjaGFyICpkYXRhZGlyLCBYTG9nUmVjUHRyIHB0ciwgaW50IHRs aUluZGV4KQogCXhsb2dyZWFkZXIgPSBYTG9nUmVhZGVyQWxsb2NhdGUoV2FsU2VnU3osICZT aW1wbGVYTG9nUGFnZVJlYWQsCiAJCQkJCQkJCQkmcHJpdmF0ZSk7CiAJaWYgKHhsb2dyZWFk ZXIgPT0gTlVMTCkKLQkJcGdfZmF0YWwoIm91dCBvZiBtZW1vcnlcbiIpOworCQlwZ19mYXRh bCgib3V0IG9mIG1lbW9yeSIpOwogCiAJcmVjb3JkID0gWExvZ1JlYWRSZWNvcmQoeGxvZ3Jl YWRlciwgcHRyLCAmZXJyb3Jtc2cpOwogCWlmIChyZWNvcmQgPT0gTlVMTCkKIAl7CiAJCWlm IChlcnJvcm1zZykKLQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBXQUwgcmVjb3JkIGF0 ICVYLyVYOiAlc1xuIiwKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBXQUwgcmVjb3Jk IGF0ICVYLyVYOiAlcyIsCiAJCQkJCSAodWludDMyKSAocHRyID4+IDMyKSwgKHVpbnQzMikg KHB0ciksIGVycm9ybXNnKTsKIAkJZWxzZQotCQkJcGdfZmF0YWwoImNvdWxkIG5vdCByZWFk IFdBTCByZWNvcmQgYXQgJVgvJVhcbiIsCisJCQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQg V0FMIHJlY29yZCBhdCAlWC8lWCIsCiAJCQkJCSAodWludDMyKSAocHRyID4+IDMyKSwgKHVp bnQzMikgKHB0cikpOwogCX0KIAllbmRwdHIgPSB4bG9ncmVhZGVyLT5FbmRSZWNQdHI7CkBA IC0xODQsNyArMTg0LDcgQEAgZmluZExhc3RDaGVja3BvaW50KGNvbnN0IGNoYXIgKmRhdGFk aXIsIFhMb2dSZWNQdHIgZm9ya3B0ciwgaW50IHRsaUluZGV4LAogCXhsb2dyZWFkZXIgPSBY TG9nUmVhZGVyQWxsb2NhdGUoV2FsU2VnU3osICZTaW1wbGVYTG9nUGFnZVJlYWQsCiAJCQkJ CQkJCQkmcHJpdmF0ZSk7CiAJaWYgKHhsb2dyZWFkZXIgPT0gTlVMTCkKLQkJcGdfZmF0YWwo Im91dCBvZiBtZW1vcnlcbiIpOworCQlwZ19mYXRhbCgib3V0IG9mIG1lbW9yeSIpOwogCiAJ c2VhcmNocHRyID0gZm9ya3B0cjsKIAlmb3IgKDs7KQpAQCAtMTk2LDExICsxOTYsMTEgQEAg ZmluZExhc3RDaGVja3BvaW50KGNvbnN0IGNoYXIgKmRhdGFkaXIsIFhMb2dSZWNQdHIgZm9y a3B0ciwgaW50IHRsaUluZGV4LAogCQlpZiAocmVjb3JkID09IE5VTEwpCiAJCXsKIAkJCWlm IChlcnJvcm1zZykKLQkJCQlwZ19mYXRhbCgiY291bGQgbm90IGZpbmQgcHJldmlvdXMgV0FM IHJlY29yZCBhdCAlWC8lWDogJXNcbiIsCisJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBmaW5k IHByZXZpb3VzIFdBTCByZWNvcmQgYXQgJVgvJVg6ICVzIiwKIAkJCQkJCSAodWludDMyKSAo c2VhcmNocHRyID4+IDMyKSwgKHVpbnQzMikgKHNlYXJjaHB0ciksCiAJCQkJCQkgZXJyb3Jt c2cpOwogCQkJZWxzZQotCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgZmluZCBwcmV2aW91cyBX QUwgcmVjb3JkIGF0ICVYLyVYXG4iLAorCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgZmluZCBw cmV2aW91cyBXQUwgcmVjb3JkIGF0ICVYLyVYIiwKIAkJCQkJCSAodWludDMyKSAoc2VhcmNo cHRyID4+IDMyKSwgKHVpbnQzMikgKHNlYXJjaHB0cikpOwogCQl9CiAKQEAgLTM4Nyw4ICsz ODcsOCBAQCBleHRyYWN0UGFnZUluZm8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCSAq IHdlIGRvbid0IHJlY29nbml6ZSB0aGUgdHlwZS4gVGhhdCdzIGJhZCAtIHdlIGRvbid0IGtu b3cgaG93IHRvCiAJCSAqIHRyYWNrIHRoYXQgY2hhbmdlLgogCQkgKi8KLQkJcGdfZmF0YWwo IldBTCByZWNvcmQgbW9kaWZpZXMgYSByZWxhdGlvbiwgYnV0IHJlY29yZCB0eXBlIGlzIG5v dCByZWNvZ25pemVkXG4iCi0JCQkJICJsc246ICVYLyVYLCBybWdyOiAlcywgaW5mbzogJTAy WFxuIiwKKwkJcGdfZmF0YWwoIldBTCByZWNvcmQgbW9kaWZpZXMgYSByZWxhdGlvbiwgYnV0 IHJlY29yZCB0eXBlIGlzIG5vdCByZWNvZ25pemVkOiAiCisJCQkJICJsc246ICVYLyVYLCBy bWdyOiAlcywgaW5mbzogJTAyWCIsCiAJCQkJICh1aW50MzIpIChyZWNvcmQtPlJlYWRSZWNQ dHIgPj4gMzIpLCAodWludDMyKSAocmVjb3JkLT5SZWFkUmVjUHRyKSwKIAkJCQkgUm1nck5h bWVzW3JtaWRdLCBpbmZvKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jld2luZC9w Z19yZXdpbmQuYyBiL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5jCmluZGV4IDdjY2Rl NWM4N2YuLmJlZWM2ZjY3OTcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jl d2luZC5jCisrKyBiL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5jCkBAIC0yNyw2ICsy Nyw3IEBACiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfcGVybS5oIgogI2luY2x1ZGUgImNvbW1v bi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uaCIK KyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZ2V0b3B0X2xvbmcu aCIKICNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKIApAQCAtNTMsNyArNTQsNyBAQCBj aGFyCSAgICpkYXRhZGlyX3RhcmdldCA9IE5VTEw7CiBjaGFyCSAgICpkYXRhZGlyX3NvdXJj ZSA9IE5VTEw7CiBjaGFyCSAgICpjb25uc3RyX3NvdXJjZSA9IE5VTEw7CiAKLWJvb2wJCWRl YnVnID0gZmFsc2U7CitzdGF0aWMgYm9vbAlkZWJ1ZyA9IGZhbHNlOwogYm9vbAkJc2hvd3By b2dyZXNzID0gZmFsc2U7CiBib29sCQlkcnlfcnVuID0gZmFsc2U7CiBib29sCQlkb19zeW5j ID0gdHJ1ZTsKQEAgLTExMSw2ICsxMTIsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKIAlUaW1lTGluZUlECWVuZHRsaTsKIAlDb250cm9sRmlsZURhdGEgQ29udHJvbEZpbGVf bmV3OwogCisJcGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOworCXBnX2xvZ2dpbmdfc2V0X2xl dmVsKFBHX0xPR19XQVJOSU5HKTsKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0s IFBHX1RFWFRET01BSU4oInBnX3Jld2luZCIpKTsKIAlwcm9nbmFtZSA9IGdldF9wcm9nbmFt ZShhcmd2WzBdKTsKIApAQCAtMTM5LDYgKzE0Miw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCiAJCQljYXNlICdQJzoKIAkJCQlzaG93cHJvZ3Jlc3MgPSB0cnVlOworCQkJ CXBnX2xvZ2dpbmdfc2V0X2xldmVsKFBHX0xPR19JTkZPKTsKIAkJCQlicmVhazsKIAogCQkJ Y2FzZSAnbic6CkBAIC0xNTEsNiArMTU1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAKIAkJCWNhc2UgMzoKIAkJCQlkZWJ1ZyA9IHRydWU7CisJCQkJcGdfbG9nZ2luZ19z ZXRfbGV2ZWwoUEdfTE9HX0RFQlVHKTsKIAkJCQlicmVhazsKIAogCQkJY2FzZSAnRCc6CQkJ LyogLUQgb3IgLS10YXJnZXQtcGdkYXRhICovCkBAIC0xNjgsMjkgKzE3MywyOSBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCWlmIChkYXRhZGlyX3NvdXJjZSA9PSBOVUxM ICYmIGNvbm5zdHJfc291cmNlID09IE5VTEwpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygi JXM6IG5vIHNvdXJjZSBzcGVjaWZpZWQgKC0tc291cmNlLXBnZGF0YSBvciAtLXNvdXJjZS1z ZXJ2ZXIpXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm5vIHNvdXJjZSBzcGVj aWZpZWQgKC0tc291cmNlLXBnZGF0YSBvciAtLXNvdXJjZS1zZXJ2ZXIpIik7CiAJCWZwcmlu dGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5c biIpLCBwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CiAJfQogCiAJaWYgKGRhdGFkaXJfc291cmNl ICE9IE5VTEwgJiYgY29ubnN0cl9zb3VyY2UgIT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogb25seSBvbmUgb2YgLS1zb3VyY2UtcGdkYXRhIG9yIC0tc291cmNlLXNl cnZlciBjYW4gYmUgc3BlY2lmaWVkXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3Io Im9ubHkgb25lIG9mIC0tc291cmNlLXBnZGF0YSBvciAtLXNvdXJjZS1zZXJ2ZXIgY2FuIGJl IHNwZWNpZmllZCIpOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIg Zm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQlleGl0KDEpOwogCX0K IAogCWlmIChkYXRhZGlyX3RhcmdldCA9PSBOVUxMKQogCXsKLQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBubyB0YXJnZXQgZGF0YSBkaXJlY3Rvcnkgc3BlY2lmaWVkICgtLXRhcmdldC1w Z2RhdGEpXG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfZXJyb3IoIm5vIHRhcmdldCBkYXRh IGRpcmVjdG9yeSBzcGVjaWZpZWQgKC0tdGFyZ2V0LXBnZGF0YSkiKTsKIAkJZnByaW50Zihz dGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiks IHByb2duYW1lKTsKIAkJZXhpdCgxKTsKIAl9CiAKIAlpZiAob3B0aW5kIDwgYXJnYykKIAl7 Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3Vt ZW50cyAoZmlyc3QgaXMgXCIlc1wiKVxuIiksCi0JCQkJcHJvZ25hbWUsIGFyZ3Zbb3B0aW5k XSk7CisJCXBnX2xvZ19lcnJvcigidG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAo Zmlyc3QgaXMgXCIlc1wiKSIsCisJCQkJCSBhcmd2W29wdGluZF0pOwogCQlmcHJpbnRmKHN0 ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwg cHJvZ25hbWUpOwogCQlleGl0KDEpOwogCX0KQEAgLTIwNCwyMCArMjA5LDIwIEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogI2lmbmRlZiBXSU4zMgogCWlmIChnZXRldWlkKCkg PT0gMCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCJjYW5ub3QgYmUgZXhlY3V0ZWQgYnkg XCJyb290XCJcbiIpKTsKKwkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgYmUgZXhlY3V0ZWQgYnkg XCJyb290XCIiKTsKIAkJZnByaW50ZihzdGRlcnIsIF8oIllvdSBtdXN0IHJ1biAlcyBhcyB0 aGUgUG9zdGdyZVNRTCBzdXBlcnVzZXIuXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4aXQo MSk7CiAJfQogI2VuZGlmCiAKLQlnZXRfcmVzdHJpY3RlZF90b2tlbihwcm9nbmFtZSk7CisJ Z2V0X3Jlc3RyaWN0ZWRfdG9rZW4oKTsKIAogCS8qIFNldCBtYXNrIGJhc2VkIG9uIFBHREFU QSBwZXJtaXNzaW9ucyAqLwogCWlmICghR2V0RGF0YURpcmVjdG9yeUNyZWF0ZVBlcm0oZGF0 YWRpcl90YXJnZXQpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qg cmVhZCBwZXJtaXNzaW9ucyBvZiBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJv Z25hbWUsIGRhdGFkaXJfdGFyZ2V0LCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCByZWFkIHBlcm1pc3Npb25zIG9mIGRpcmVjdG9yeSBcIiVzXCI6ICVt IiwKKwkJCQkJIGRhdGFkaXJfdGFyZ2V0KTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTMwNSw5 ICszMTAsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkgKiBCdWlsZCB0aGUg ZmlsZW1hcCwgYnkgY29tcGFyaW5nIHRoZSBzb3VyY2UgYW5kIHRhcmdldCBkYXRhIGRpcmVj dG9yaWVzLgogCSAqLwogCWZpbGVtYXBfY3JlYXRlKCk7Ci0JcGdfbG9nKFBHX1BST0dSRVNT LCAicmVhZGluZyBzb3VyY2UgZmlsZSBsaXN0XG4iKTsKKwlwZ19sb2dfaW5mbygicmVhZGlu ZyBzb3VyY2UgZmlsZSBsaXN0Iik7CiAJZmV0Y2hTb3VyY2VGaWxlTGlzdCgpOwotCXBnX2xv ZyhQR19QUk9HUkVTUywgInJlYWRpbmcgdGFyZ2V0IGZpbGUgbGlzdFxuIik7CisJcGdfbG9n X2luZm8oInJlYWRpbmcgdGFyZ2V0IGZpbGUgbGlzdCIpOwogCXRyYXZlcnNlX2RhdGFkaXIo ZGF0YWRpcl90YXJnZXQsICZwcm9jZXNzX3RhcmdldF9maWxlKTsKIAogCS8qCkBAIC0zMTcs NyArMzIyLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJICogWFhYOiBJZiB3 ZSBzdXBwb3J0ZWQgcmV3aW5kaW5nIGEgc2VydmVyIHRoYXQgd2FzIG5vdCBzaHV0IGRvd24g Y2xlYW5seSwKIAkgKiB3ZSB3b3VsZCBuZWVkIHRvIHJlcGxheSB1bnRpbCB0aGUgZW5kIG9m IFdBTCBoZXJlLgogCSAqLwotCXBnX2xvZyhQR19QUk9HUkVTUywgInJlYWRpbmcgV0FMIGlu IHRhcmdldFxuIik7CisJcGdfbG9nX2luZm8oInJlYWRpbmcgV0FMIGluIHRhcmdldCIpOwog CWV4dHJhY3RQYWdlTWFwKGRhdGFkaXJfdGFyZ2V0LCBjaGtwdHJlYywgbGFzdGNvbW1vbnRs aUluZGV4LAogCQkJCSAgIENvbnRyb2xGaWxlX3RhcmdldC5jaGVja1BvaW50KTsKIAlmaWxl bWFwX2ZpbmFsaXplKCk7CkBAIC0zMzQsNyArMzM5LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJICovCiAJaWYgKHNob3dwcm9ncmVzcykKIAl7Ci0JCXBnX2xvZyhQR19Q Uk9HUkVTUywgIm5lZWQgdG8gY29weSAlbHUgTUIgKHRvdGFsIHNvdXJjZSBkaXJlY3Rvcnkg c2l6ZSBpcyAlbHUgTUIpXG4iLAorCQlwZ19sb2dfaW5mbygibmVlZCB0byBjb3B5ICVsdSBN QiAodG90YWwgc291cmNlIGRpcmVjdG9yeSBzaXplIGlzICVsdSBNQikiLAogCQkJICAgKHVu c2lnbmVkIGxvbmcpIChmaWxlbWFwLT5mZXRjaF9zaXplIC8gKDEwMjQgKiAxMDI0KSksCiAJ CQkgICAodW5zaWduZWQgbG9uZykgKGZpbGVtYXAtPnRvdGFsX3NpemUgLyAoMTAyNCAqIDEw MjQpKSk7CiAKQEAgLTM1MCw4ICszNTUsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKIAlleGVjdXRlRmlsZU1hcCgpOwogCiAJcHJvZ3Jlc3NfcmVwb3J0KHRydWUpOworCXBy aW50ZigiXG4iKTsKIAotCXBnX2xvZyhQR19QUk9HUkVTUywgIlxuY3JlYXRpbmcgYmFja3Vw IGxhYmVsIGFuZCB1cGRhdGluZyBjb250cm9sIGZpbGVcbiIpOworCXBnX2xvZ19pbmZvKCJj cmVhdGluZyBiYWNrdXAgbGFiZWwgYW5kIHVwZGF0aW5nIGNvbnRyb2wgZmlsZSIpOwogCWNy ZWF0ZUJhY2t1cExhYmVsKGNoa3B0cmVkbywgY2hrcHR0bGksIGNoa3B0cmVjKTsKIAogCS8q CkBAIC0zNzksNyArMzg1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJQ29u dHJvbEZpbGVfbmV3LnN0YXRlID0gREJfSU5fQVJDSElWRV9SRUNPVkVSWTsKIAl1cGRhdGVD b250cm9sRmlsZSgmQ29udHJvbEZpbGVfbmV3KTsKIAotCXBnX2xvZyhQR19QUk9HUkVTUywg InN5bmNpbmcgdGFyZ2V0IGRhdGEgZGlyZWN0b3J5XG4iKTsKKwlwZ19sb2dfaW5mbygic3lu Y2luZyB0YXJnZXQgZGF0YSBkaXJlY3RvcnkiKTsKIAlzeW5jVGFyZ2V0RGlyZWN0b3J5KGFy Z3ZbMF0pOwogCiAJcHJpbnRmKF8oIkRvbmUhXG4iKSk7CkBAIC0zOTQsNyArNDAwLDcgQEAg c2FuaXR5Q2hlY2tzKHZvaWQpCiAKIAkvKiBDaGVjayBzeXN0ZW1faWQgbWF0Y2ggKi8KIAlp ZiAoQ29udHJvbEZpbGVfdGFyZ2V0LnN5c3RlbV9pZGVudGlmaWVyICE9IENvbnRyb2xGaWxl X3NvdXJjZS5zeXN0ZW1faWRlbnRpZmllcikKLQkJcGdfZmF0YWwoInNvdXJjZSBhbmQgdGFy Z2V0IGNsdXN0ZXJzIGFyZSBmcm9tIGRpZmZlcmVudCBzeXN0ZW1zXG4iKTsKKwkJcGdfZmF0 YWwoInNvdXJjZSBhbmQgdGFyZ2V0IGNsdXN0ZXJzIGFyZSBmcm9tIGRpZmZlcmVudCBzeXN0 ZW1zIik7CiAKIAkvKiBjaGVjayB2ZXJzaW9uICovCiAJaWYgKENvbnRyb2xGaWxlX3Rhcmdl dC5wZ19jb250cm9sX3ZlcnNpb24gIT0gUEdfQ09OVFJPTF9WRVJTSU9OIHx8CkBAIC00MDIs NyArNDA4LDcgQEAgc2FuaXR5Q2hlY2tzKHZvaWQpCiAJCUNvbnRyb2xGaWxlX3RhcmdldC5j YXRhbG9nX3ZlcnNpb25fbm8gIT0gQ0FUQUxPR19WRVJTSU9OX05PIHx8CiAJCUNvbnRyb2xG aWxlX3NvdXJjZS5jYXRhbG9nX3ZlcnNpb25fbm8gIT0gQ0FUQUxPR19WRVJTSU9OX05PKQog CXsKLQkJcGdfZmF0YWwoImNsdXN0ZXJzIGFyZSBub3QgY29tcGF0aWJsZSB3aXRoIHRoaXMg dmVyc2lvbiBvZiBwZ19yZXdpbmRcbiIpOworCQlwZ19mYXRhbCgiY2x1c3RlcnMgYXJlIG5v dCBjb21wYXRpYmxlIHdpdGggdGhpcyB2ZXJzaW9uIG9mIHBnX3Jld2luZCIpOwogCX0KIAog CS8qCkBAIC00MTIsNyArNDE4LDcgQEAgc2FuaXR5Q2hlY2tzKHZvaWQpCiAJaWYgKENvbnRy b2xGaWxlX3RhcmdldC5kYXRhX2NoZWNrc3VtX3ZlcnNpb24gIT0gUEdfREFUQV9DSEVDS1NV TV9WRVJTSU9OICYmCiAJCSFDb250cm9sRmlsZV90YXJnZXQud2FsX2xvZ19oaW50cykKIAl7 Ci0JCXBnX2ZhdGFsKCJ0YXJnZXQgc2VydmVyIG5lZWRzIHRvIHVzZSBlaXRoZXIgZGF0YSBj aGVja3N1bXMgb3IgXCJ3YWxfbG9nX2hpbnRzID0gb25cIlxuIik7CisJCXBnX2ZhdGFsKCJ0 YXJnZXQgc2VydmVyIG5lZWRzIHRvIHVzZSBlaXRoZXIgZGF0YSBjaGVja3N1bXMgb3IgXCJ3 YWxfbG9nX2hpbnRzID0gb25cIiIpOwogCX0KIAogCS8qCkBAIC00MjMsNyArNDI5LDcgQEAg c2FuaXR5Q2hlY2tzKHZvaWQpCiAJICovCiAJaWYgKENvbnRyb2xGaWxlX3RhcmdldC5zdGF0 ZSAhPSBEQl9TSFVURE9XTkVEICYmCiAJCUNvbnRyb2xGaWxlX3RhcmdldC5zdGF0ZSAhPSBE Ql9TSFVURE9XTkVEX0lOX1JFQ09WRVJZKQotCQlwZ19mYXRhbCgidGFyZ2V0IHNlcnZlciBt dXN0IGJlIHNodXQgZG93biBjbGVhbmx5XG4iKTsKKwkJcGdfZmF0YWwoInRhcmdldCBzZXJ2 ZXIgbXVzdCBiZSBzaHV0IGRvd24gY2xlYW5seSIpOwogCiAJLyoKIAkgKiBXaGVuIHRoZSBz b3VyY2UgaXMgYSBkYXRhIGRpcmVjdG9yeSwgYWxzbyByZXF1aXJlIHRoYXQgdGhlIHNvdXJj ZQpAQCAtNDMzLDcgKzQzOSw3IEBAIHNhbml0eUNoZWNrcyh2b2lkKQogCWlmIChkYXRhZGly X3NvdXJjZSAmJgogCQlDb250cm9sRmlsZV9zb3VyY2Uuc3RhdGUgIT0gREJfU0hVVERPV05F RCAmJgogCQlDb250cm9sRmlsZV9zb3VyY2Uuc3RhdGUgIT0gREJfU0hVVERPV05FRF9JTl9S RUNPVkVSWSkKLQkJcGdfZmF0YWwoInNvdXJjZSBkYXRhIGRpcmVjdG9yeSBtdXN0IGJlIHNo dXQgZG93biBjbGVhbmx5XG4iKTsKKwkJcGdfZmF0YWwoInNvdXJjZSBkYXRhIGRpcmVjdG9y eSBtdXN0IGJlIHNodXQgZG93biBjbGVhbmx5Iik7CiB9CiAKIC8qCkBAIC00OTksOSArNTA1 LDkgQEAgZ2V0VGltZWxpbmVIaXN0b3J5KENvbnRyb2xGaWxlRGF0YSAqY29udHJvbEZpbGUs IGludCAqbmVudHJpZXMpCiAJCWludAkJCWk7CiAKIAkJaWYgKGNvbnRyb2xGaWxlID09ICZD b250cm9sRmlsZV9zb3VyY2UpCi0JCQlwZ19sb2coUEdfREVCVUcsICJTb3VyY2UgdGltZWxp bmUgaGlzdG9yeTpcbiIpOworCQkJcGdfbG9nX2RlYnVnKCJTb3VyY2UgdGltZWxpbmUgaGlz dG9yeToiKTsKIAkJZWxzZSBpZiAoY29udHJvbEZpbGUgPT0gJkNvbnRyb2xGaWxlX3Rhcmdl dCkKLQkJCXBnX2xvZyhQR19ERUJVRywgIlRhcmdldCB0aW1lbGluZSBoaXN0b3J5OlxuIik7 CisJCQlwZ19sb2dfZGVidWcoIlRhcmdldCB0aW1lbGluZSBoaXN0b3J5OiIpOwogCQllbHNl CiAJCQlBc3NlcnQoZmFsc2UpOwogCkBAIC01MTMsOSArNTE5LDcgQEAgZ2V0VGltZWxpbmVI aXN0b3J5KENvbnRyb2xGaWxlRGF0YSAqY29udHJvbEZpbGUsIGludCAqbmVudHJpZXMpCiAJ CQlUaW1lTGluZUhpc3RvcnlFbnRyeSAqZW50cnk7CiAKIAkJCWVudHJ5ID0gJmhpc3Rvcnlb aV07Ci0JCQlwZ19sb2coUEdfREVCVUcsCi0JCQkvKiB0cmFuc2xhdG9yOiAlZCBpcyBhIHRp bWVsaW5lIG51bWJlciwgb3RoZXJzIGFyZSBMU04gcG9zaXRpb25zICovCi0JCQkJICAgIiVk OiAlWC8lWCAtICVYLyVYXG4iLCBlbnRyeS0+dGxpLAorCQkJcGdfbG9nX2RlYnVnKCIlZDog JVgvJVggLSAlWC8lWCIsIGVudHJ5LT50bGksCiAJCQkJICAgKHVpbnQzMikgKGVudHJ5LT5i ZWdpbiA+PiAzMiksICh1aW50MzIpIChlbnRyeS0+YmVnaW4pLAogCQkJCSAgICh1aW50MzIp IChlbnRyeS0+ZW5kID4+IDMyKSwgKHVpbnQzMikgKGVudHJ5LT5lbmQpKTsKIAkJfQpAQCAt NTc0LDcgKzU3OCw3IEBAIGZpbmRDb21tb25BbmNlc3RvclRpbWVsaW5lKFhMb2dSZWNQdHIg KnJlY3B0ciwgaW50ICp0bGlJbmRleCkKIAl9CiAJZWxzZQogCXsKLQkJcGdfZmF0YWwoImNv dWxkIG5vdCBmaW5kIGNvbW1vbiBhbmNlc3RvciBvZiB0aGUgc291cmNlIGFuZCB0YXJnZXQg Y2x1c3RlcidzIHRpbWVsaW5lc1xuIik7CisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgZmluZCBj b21tb24gYW5jZXN0b3Igb2YgdGhlIHNvdXJjZSBhbmQgdGFyZ2V0IGNsdXN0ZXIncyB0aW1l bGluZXMiKTsKIAl9CiB9CiAKQEAgLTYxNSw3ICs2MTksNyBAQCBjcmVhdGVCYWNrdXBMYWJl bChYTG9nUmVjUHRyIHN0YXJ0cG9pbnQsIFRpbWVMaW5lSUQgc3RhcnR0bGksIFhMb2dSZWNQ dHIgY2hlY2twbwogCQkJCSAgICh1aW50MzIpIChjaGVja3BvaW50bG9jID4+IDMyKSwgKHVp bnQzMikgY2hlY2twb2ludGxvYywKIAkJCQkgICBzdHJmYnVmKTsKIAlpZiAobGVuID49IHNp emVvZihidWYpKQotCQlwZ19mYXRhbCgiYmFja3VwIGxhYmVsIGJ1ZmZlciB0b28gc21hbGxc biIpOwkvKiBzaG91bGRuJ3QgaGFwcGVuICovCisJCXBnX2ZhdGFsKCJiYWNrdXAgbGFiZWwg YnVmZmVyIHRvbyBzbWFsbCIpOwkvKiBzaG91bGRuJ3QgaGFwcGVuICovCiAKIAkvKiBUT0RP OiBtb3ZlIG9sZCBmaWxlIG91dCBvZiB0aGUgd2F5LCBpZiBhbnkuICovCiAJb3Blbl90YXJn ZXRfZmlsZSgiYmFja3VwX2xhYmVsIiwgdHJ1ZSk7IC8qIEJBQ0tVUF9MQUJFTF9GSUxFICov CkBAIC02MzgsNyArNjQyLDcgQEAgY2hlY2tDb250cm9sRmlsZShDb250cm9sRmlsZURhdGEg KkNvbnRyb2xGaWxlKQogCiAJLyogQW5kIHNpbXBseSBjb21wYXJlIGl0ICovCiAJaWYgKCFF UV9DUkMzMkMoY3JjLCBDb250cm9sRmlsZS0+Y3JjKSkKLQkJcGdfZmF0YWwoInVuZXhwZWN0 ZWQgY29udHJvbCBmaWxlIENSQ1xuIik7CisJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIGNvbnRy b2wgZmlsZSBDUkMiKTsKIH0KIAogLyoKQEAgLTY0OCw3ICs2NTIsNyBAQCBzdGF0aWMgdm9p ZAogZGlnZXN0Q29udHJvbEZpbGUoQ29udHJvbEZpbGVEYXRhICpDb250cm9sRmlsZSwgY2hh ciAqc3JjLCBzaXplX3Qgc2l6ZSkKIHsKIAlpZiAoc2l6ZSAhPSBQR19DT05UUk9MX0ZJTEVf U0laRSkKLQkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgY29udHJvbCBmaWxlIHNpemUgJWQsIGV4 cGVjdGVkICVkXG4iLAorCQlwZ19mYXRhbCgidW5leHBlY3RlZCBjb250cm9sIGZpbGUgc2l6 ZSAlZCwgZXhwZWN0ZWQgJWQiLAogCQkJCSAoaW50KSBzaXplLCBQR19DT05UUk9MX0ZJTEVf U0laRSk7CiAKIAltZW1jcHkoQ29udHJvbEZpbGUsIHNyYywgc2l6ZW9mKENvbnRyb2xGaWxl RGF0YSkpOwpAQCAtNjU3LDggKzY2MSw4IEBAIGRpZ2VzdENvbnRyb2xGaWxlKENvbnRyb2xG aWxlRGF0YSAqQ29udHJvbEZpbGUsIGNoYXIgKnNyYywgc2l6ZV90IHNpemUpCiAJV2FsU2Vn U3ogPSBDb250cm9sRmlsZS0+eGxvZ19zZWdfc2l6ZTsKIAogCWlmICghSXNWYWxpZFdhbFNl Z1NpemUoV2FsU2VnU3opKQotCQlwZ19mYXRhbChuZ2V0dGV4dCgiV0FMIHNlZ21lbnQgc2l6 ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIGJldHdlZW4gMSBNQiBhbmQgMSBHQiwgYnV0IHRo ZSBjb250cm9sIGZpbGUgc3BlY2lmaWVzICVkIGJ5dGVcbiIsCi0JCQkJCQkgICJXQUwgc2Vn bWVudCBzaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28gYmV0d2VlbiAxIE1CIGFuZCAxIEdC LCBidXQgdGhlIGNvbnRyb2wgZmlsZSBzcGVjaWZpZXMgJWQgYnl0ZXNcbiIsCisJCXBnX2Zh dGFsKG5nZXR0ZXh0KCJXQUwgc2VnbWVudCBzaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28g YmV0d2VlbiAxIE1CIGFuZCAxIEdCLCBidXQgdGhlIGNvbnRyb2wgZmlsZSBzcGVjaWZpZXMg JWQgYnl0ZSIsCisJCQkJCQkgICJXQUwgc2VnbWVudCBzaXplIG11c3QgYmUgYSBwb3dlciBv ZiB0d28gYmV0d2VlbiAxIE1CIGFuZCAxIEdCLCBidXQgdGhlIGNvbnRyb2wgZmlsZSBzcGVj aWZpZXMgJWQgYnl0ZXMiLAogCQkJCQkJICBXYWxTZWdTeiksCiAJCQkJIFdhbFNlZ1N6KTsK IApAQCAtNzIwLDUgKzcyNCw1IEBAIHN5bmNUYXJnZXREaXJlY3RvcnkoY29uc3QgY2hhciAq YXJndjApCiAJaWYgKCFkb19zeW5jIHx8IGRyeV9ydW4pCiAJCXJldHVybjsKIAotCWZzeW5j X3BnZGF0YShkYXRhZGlyX3RhcmdldCwgcHJvZ25hbWUsIFBHX1ZFUlNJT05fTlVNKTsKKwlm c3luY19wZ2RhdGEoZGF0YWRpcl90YXJnZXQsIFBHX1ZFUlNJT05fTlVNKTsKIH0KZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5oIGIvc3JjL2Jpbi9wZ19yZXdp bmQvcGdfcmV3aW5kLmgKaW5kZXggODNiMjg5OGI4Yi4uZjJjYzI4MDBhYSAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19yZXdpbmQvcGdfcmV3aW5kLmgKKysrIGIvc3JjL2Jpbi9wZ19yZXdp bmQvcGdfcmV3aW5kLmgKQEAgLTIxLDcgKzIxLDYgQEAKIGV4dGVybiBjaGFyICpkYXRhZGly X3RhcmdldDsKIGV4dGVybiBjaGFyICpkYXRhZGlyX3NvdXJjZTsKIGV4dGVybiBjaGFyICpj b25uc3RyX3NvdXJjZTsKLWV4dGVybiBib29sIGRlYnVnOwogZXh0ZXJuIGJvb2wgc2hvd3By b2dyZXNzOwogZXh0ZXJuIGJvb2wgZHJ5X3J1bjsKIGV4dGVybiBpbnQJV2FsU2VnU3o7CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jld2luZC90aW1lbGluZS5jIGIvc3JjL2Jpbi9wZ19y ZXdpbmQvdGltZWxpbmUuYwppbmRleCAxZDM0M2RlNTJiLi4xMmIxOWIzNTNjIDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX3Jld2luZC90aW1lbGluZS5jCisrKyBiL3NyYy9iaW4vcGdfcmV3 aW5kL3RpbWVsaW5lLmMKQEAgLTEzLDYgKzEzLDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy90 aW1lbGluZS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nX2ludGVybmFsLmgiCisjaW5jbHVk ZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogCiAvKgogICogVGhpcyBpcyBjb3B5LXBhc3RlZCBm cm9tIHRoZSBiYWNrZW5kIHJlYWRUaW1lTGluZUhpc3RvcnksIG1vZGlmaWVkIHRvCkBAIC03 MywyMCArNzQsMjAgQEAgcmV3aW5kX3BhcnNlVGltZUxpbmVIaXN0b3J5KGNoYXIgKmJ1ZmZl ciwgVGltZUxpbmVJRCB0YXJnZXRUTEksIGludCAqbmVudHJpZXMpCiAJCWlmIChuZmllbGRz IDwgMSkKIAkJewogCQkJLyogZXhwZWN0IGEgbnVtZXJpYyB0aW1lbGluZSBJRCBhcyBmaXJz dCBmaWVsZCBvZiBsaW5lICovCi0JCQlmcHJpbnRmKHN0ZGVyciwgXygic3ludGF4IGVycm9y IGluIGhpc3RvcnkgZmlsZTogJXNcbiIpLCBmbGluZSk7Ci0JCQlmcHJpbnRmKHN0ZGVyciwg XygiRXhwZWN0ZWQgYSBudW1lcmljIHRpbWVsaW5lIElELlxuIikpOworCQkJcGdfbG9nX2Vy cm9yKCJzeW50YXggZXJyb3IgaW4gaGlzdG9yeSBmaWxlOiAlcyIsIGZsaW5lKTsKKwkJCXBn X2xvZ19lcnJvcigiRXhwZWN0ZWQgYSBudW1lcmljIHRpbWVsaW5lIElELiIpOwogCQkJZXhp dCgxKTsKIAkJfQogCQlpZiAobmZpZWxkcyAhPSAzKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVy ciwgXygic3ludGF4IGVycm9yIGluIGhpc3RvcnkgZmlsZTogJXNcbiIpLCBmbGluZSk7Ci0J CQlmcHJpbnRmKHN0ZGVyciwgXygiRXhwZWN0ZWQgYSB3cml0ZS1haGVhZCBsb2cgc3dpdGNo cG9pbnQgbG9jYXRpb24uXG4iKSk7CisJCQlwZ19sb2dfZXJyb3IoInN5bnRheCBlcnJvciBp biBoaXN0b3J5IGZpbGU6ICVzIiwgZmxpbmUpOworCQkJcGdfbG9nX2Vycm9yKCJFeHBlY3Rl ZCBhIHdyaXRlLWFoZWFkIGxvZyBzd2l0Y2hwb2ludCBsb2NhdGlvbi4iKTsKIAkJCWV4aXQo MSk7CiAJCX0KIAkJaWYgKGVudHJpZXMgJiYgdGxpIDw9IGxhc3R0bGkpCiAJCXsKLQkJCWZw cmludGYoc3RkZXJyLCBfKCJpbnZhbGlkIGRhdGEgaW4gaGlzdG9yeSBmaWxlOiAlc1xuIiks IGZsaW5lKTsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCJUaW1lbGluZSBJRHMgbXVzdCBiZSBp biBpbmNyZWFzaW5nIHNlcXVlbmNlLlxuIikpOworCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlk IGRhdGEgaW4gaGlzdG9yeSBmaWxlOiAlcyIsIGZsaW5lKTsKKwkJCXBnX2xvZ19lcnJvcigi VGltZWxpbmUgSURzIG11c3QgYmUgaW4gaW5jcmVhc2luZyBzZXF1ZW5jZS4iKTsKIAkJCWV4 aXQoMSk7CiAJCX0KIApAQCAtMTA2LDggKzEwNyw4IEBAIHJld2luZF9wYXJzZVRpbWVMaW5l SGlzdG9yeShjaGFyICpidWZmZXIsIFRpbWVMaW5lSUQgdGFyZ2V0VExJLCBpbnQgKm5lbnRy aWVzKQogCiAJaWYgKGVudHJpZXMgJiYgdGFyZ2V0VExJIDw9IGxhc3R0bGkpCiAJewotCQlm cHJpbnRmKHN0ZGVyciwgXygiaW52YWxpZCBkYXRhIGluIGhpc3RvcnkgZmlsZVxuIikpOwot CQlmcHJpbnRmKHN0ZGVyciwgXygiVGltZWxpbmUgSURzIG11c3QgYmUgbGVzcyB0aGFuIGNo aWxkIHRpbWVsaW5lJ3MgSUQuXG4iKSk7CisJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBkYXRh IGluIGhpc3RvcnkgZmlsZSIpOworCQlwZ19sb2dfZXJyb3IoIlRpbWVsaW5lIElEcyBtdXN0 IGJlIGxlc3MgdGhhbiBjaGlsZCB0aW1lbGluZSdzIElELiIpOwogCQlleGl0KDEpOwogCX0K IApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ190ZXN0X2ZzeW5jL01ha2VmaWxlIGIvc3JjL2Jp bi9wZ190ZXN0X2ZzeW5jL01ha2VmaWxlCmluZGV4IDkwNDk2ZGY1NjYuLjc2OWRhZWNmMmIg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdGVzdF9mc3luYy9NYWtlZmlsZQorKysgYi9zcmMv YmluL3BnX3Rlc3RfZnN5bmMvTWFrZWZpbGUKQEAgLTcsMTEgKzcsMTMgQEAgc3ViZGlyID0g c3JjL2Jpbi9wZ190ZXN0X2ZzeW5jCiB0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgogaW5jbHVk ZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCitMREZMQUdTX0lOVEVS TkFMICs9IC1MJCh0b3BfYnVpbGRkaXIpL3NyYy9mZV91dGlscyAtbHBnZmV1dGlscworCiBP QkpTID0gcGdfdGVzdF9mc3luYy5vICQoV0lOMzJSRVMpCiAKIGFsbDogcGdfdGVzdF9mc3lu YwogCi1wZ190ZXN0X2ZzeW5jOiAkKE9CSlMpIHwgc3VibWFrZS1saWJwZ3BvcnQKK3BnX3Rl c3RfZnN5bmM6ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBncG9ydCBzdWJtYWtlLWxpYnBnZmV1 dGlscwogCSQoQ0MpICQoQ0ZMQUdTKSAkXiAkKExERkxBR1MpICQoTERGTEFHU19FWCkgJChM SUJTKSAtbyAkQCQoWCkKIAogaW5zdGFsbDogYWxsIGluc3RhbGxkaXJzCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX3Rlc3RfZnN5bmMvcGdfdGVzdF9mc3luYy5jIGIvc3JjL2Jpbi9wZ190 ZXN0X2ZzeW5jL3BnX3Rlc3RfZnN5bmMuYwppbmRleCBlNmY3ZWY4NTU3Li5mNzAyMTAxNzQy IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Rlc3RfZnN5bmMvcGdfdGVzdF9mc3luYy5jCisr KyBiL3NyYy9iaW4vcGdfdGVzdF9mc3luYy9wZ190ZXN0X2ZzeW5jLmMKQEAgLTE0LDYgKzE0 LDcgQEAKIAogI2luY2x1ZGUgImdldG9wdF9sb25nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hs b2dkZWZzLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogCiAKIC8qCkBAIC00 Niw3ICs0Nyw3IEBAIGRvIHsgXAogCWlmIChDcmVhdGVUaHJlYWQoTlVMTCwgMCwgcHJvY2Vz c19hbGFybSwgTlVMTCwgMCwgTlVMTCkgPT0gXAogCQlJTlZBTElEX0hBTkRMRV9WQUxVRSkg XAogCXsgXAotCQlmcHJpbnRmKHN0ZGVyciwgXygiQ291bGQgbm90IGNyZWF0ZSB0aHJlYWQg Zm9yIGFsYXJtXG4iKSk7IFwKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY3JlYXRlIHRo cmVhZCBmb3IgYWxhcm0iKTsgXAogCQlleGl0KDEpOyBcCiAJfSBcCiAJZ2V0dGltZW9mZGF5 KCZzdGFydF90LCBOVUxMKTsgXApAQCAtOTIsMTIgKzkzLDE0IEBAIHN0YXRpYyB2b2lkIHNp Z25hbF9jbGVhbnVwKGludCBzaWcpOwogc3RhdGljIGludAlwZ19mc3luY193cml0ZXRocm91 Z2goaW50IGZkKTsKICNlbmRpZgogc3RhdGljIHZvaWQgcHJpbnRfZWxhcHNlKHN0cnVjdCB0 aW1ldmFsIHN0YXJ0X3QsIHN0cnVjdCB0aW1ldmFsIHN0b3BfdCwgaW50IG9wcyk7Ci1zdGF0 aWMgdm9pZCBkaWUoY29uc3QgY2hhciAqc3RyKTsKKworI2RlZmluZSBkaWUobXNnKSBkbyB7 IHBnX2xvZ19lcnJvcigiJXM6ICVtIiwgXyhtc2cpKTsgZXhpdCgxKTsgfSB3aGlsZSgwKQog CiAKIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogeworCXBnX2xvZ2dpbmdf aW5pdChhcmd2WzBdKTsKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RF WFRET01BSU4oInBnX3Rlc3RfZnN5bmMiKSk7CiAJcHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUo YXJndlswXSk7CiAKQEAgLTE4NCw5ICsxODcsOCBAQCBoYW5kbGVfYXJncyhpbnQgYXJnYywg Y2hhciAqYXJndltdKQogCiAJaWYgKGFyZ2MgPiBvcHRpbmQpCiAJewotCQlmcHJpbnRmKHN0 ZGVyciwKLQkJCQlfKCIlczogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmly c3QgaXMgXCIlc1wiKVxuIiksCi0JCQkJcHJvZ25hbWUsIGFyZ3Zbb3B0aW5kXSk7CisJCXBn X2xvZ19lcnJvcigidG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMg XCIlc1wiKSIsCisJCQkJCSBhcmd2W29wdGluZF0pOwogCQlmcHJpbnRmKHN0ZGVyciwgXygi VHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9n bmFtZSk7CiAJCWV4aXQoMSk7CkBAIC02MDEsMTAgKzYwMywzIEBAIHByb2Nlc3NfYWxhcm0o TFBWT0lEIHBhcmFtKQogCUV4aXRUaHJlYWQoMCk7CiB9CiAjZW5kaWYKLQotc3RhdGljIHZv aWQKLWRpZShjb25zdCBjaGFyICpzdHIpCi17Ci0JZnByaW50ZihzdGRlcnIsIF8oIiVzOiAl c1xuIiksIF8oc3RyKSwgc3RyZXJyb3IoZXJybm8pKTsKLQlleGl0KDEpOwotfQpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYyBiL3NyYy9iaW4vcGdfdXBn cmFkZS9wZ191cGdyYWRlLmMKaW5kZXggOTJkODk0MGE5Zi4uMGIzMDRiYmQ1NiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYworKysgYi9zcmMvYmluL3Bn X3VwZ3JhZGUvcGdfdXBncmFkZS5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19jbGFzc19kLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfcGVybS5oIgogI2lu Y2x1ZGUgImNvbW1vbi9yZXN0cmljdGVkX3Rva2VuLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMv bG9nZ2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogCiAjaWZk ZWYgSEFWRV9MQU5HSU5GT19ICkBAIC03OCw2ICs3OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNo YXIgKiphcmd2KQogCWNoYXIJICAgKmRlbGV0aW9uX3NjcmlwdF9maWxlX25hbWUgPSBOVUxM OwogCWJvb2wJCWxpdmVfY2hlY2sgPSBmYWxzZTsKIAorCXBnX2xvZ2dpbmdfaW5pdChhcmd2 WzBdKTsKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4o InBnX3VwZ3JhZGUiKSk7CiAKIAkvKiBTZXQgZGVmYXVsdCByZXN0cmljdGl2ZSBtYXNrIHVu dGlsIG5ldyBjbHVzdGVyIHBlcm1pc3Npb25zIGFyZSByZWFkICovCkBAIC04NSw3ICs4Nyw3 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJcGFyc2VDb21tYW5kTGluZShh cmdjLCBhcmd2KTsKIAotCWdldF9yZXN0cmljdGVkX3Rva2VuKG9zX2luZm8ucHJvZ25hbWUp OworCWdldF9yZXN0cmljdGVkX3Rva2VuKCk7CiAKIAlhZGp1c3RfZGF0YV9kaXIoJm9sZF9j bHVzdGVyKTsKIAlhZGp1c3RfZGF0YV9kaXIoJm5ld19jbHVzdGVyKTsKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfdmVyaWZ5X2NoZWNrc3Vtcy9NYWtlZmlsZSBiL3NyYy9iaW4vcGdfdmVy aWZ5X2NoZWNrc3Vtcy9NYWtlZmlsZQppbmRleCBhYjZkM2VhOWUyLi4yN2ZhMzNhZWE0IDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX3ZlcmlmeV9jaGVja3N1bXMvTWFrZWZpbGUKKysrIGIv c3JjL2Jpbi9wZ192ZXJpZnlfY2hlY2tzdW1zL01ha2VmaWxlCkBAIC0xNSwxMSArMTUsMTMg QEAgc3ViZGlyID0gc3JjL2Jpbi9wZ192ZXJpZnlfY2hlY2tzdW1zCiB0b3BfYnVpbGRkaXIg PSAuLi8uLi8uLgogaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2Jh bAogCitMREZMQUdTX0lOVEVSTkFMICs9IC1MJCh0b3BfYnVpbGRkaXIpL3NyYy9mZV91dGls cyAtbHBnZmV1dGlscworCiBPQkpTPSBwZ192ZXJpZnlfY2hlY2tzdW1zLm8gJChXSU4zMlJF UykKIAogYWxsOiBwZ192ZXJpZnlfY2hlY2tzdW1zCiAKLXBnX3ZlcmlmeV9jaGVja3N1bXM6 ICQoT0JKUykgfCBzdWJtYWtlLWxpYnBncG9ydAorcGdfdmVyaWZ5X2NoZWNrc3VtczogJChP QkpTKSB8IHN1Ym1ha2UtbGlicGdwb3J0IHN1Ym1ha2UtbGlicGdmZXV0aWxzCiAJJChDQykg JChDRkxBR1MpICReICQoTERGTEFHUykgJChMREZMQUdTX0VYKSAkKExJQlMpIC1vICRAJChY KQogCiBpbnN0YWxsOiBhbGwgaW5zdGFsbGRpcnMKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf dmVyaWZ5X2NoZWNrc3Vtcy9ubHMubWsgYi9zcmMvYmluL3BnX3ZlcmlmeV9jaGVja3N1bXMv bmxzLm1rCmluZGV4IDg5M2VmYWYwZjAuLjllMWZhOTlkM2YgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfdmVyaWZ5X2NoZWNrc3Vtcy9ubHMubWsKKysrIGIvc3JjL2Jpbi9wZ192ZXJpZnlf Y2hlY2tzdW1zL25scy5tawpAQCAtMSw0ICsxLDYgQEAKICMgc3JjL2Jpbi9wZ192ZXJpZnlf Y2hlY2tzdW1zL25scy5tawogQ0FUQUxPR19OQU1FICAgICA9IHBnX3ZlcmlmeV9jaGVja3N1 bXMKIEFWQUlMX0xBTkdVQUdFUyAgPQotR0VUVEVYVF9GSUxFUyAgICA9IHBnX3ZlcmlmeV9j aGVja3N1bXMuYworR0VUVEVYVF9GSUxFUyAgICA9ICQoRlJPTlRFTkRfQ09NTU9OX0dFVFRF WFRfRklMRVMpIHBnX3ZlcmlmeV9jaGVja3N1bXMuYworR0VUVEVYVF9UUklHR0VSUyA9ICQo RlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfVFJJR0dFUlMpCitHRVRURVhUX0ZMQUdTICAgID0g JChGUk9OVEVORF9DT01NT05fR0VUVEVYVF9GTEFHUykKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfdmVyaWZ5X2NoZWNrc3Vtcy9wZ192ZXJpZnlfY2hlY2tzdW1zLmMgYi9zcmMvYmluL3Bn X3ZlcmlmeV9jaGVja3N1bXMvcGdfdmVyaWZ5X2NoZWNrc3Vtcy5jCmluZGV4IDUxMTI2MmFi NWYuLmZkOTk1MGVlNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5X2NoZWNrc3Vt cy9wZ192ZXJpZnlfY2hlY2tzdW1zLmMKKysrIGIvc3JjL2Jpbi9wZ192ZXJpZnlfY2hlY2tz dW1zL3BnX3ZlcmlmeV9jaGVja3N1bXMuYwpAQCAtMTUsNiArMTUsNyBAQAogCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAiY29tbW9uL2NvbnRyb2xkYXRh X3V0aWxzLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImdl dG9wdF9sb25nLmgiCiAjaW5jbHVkZSAicGdfZ2V0b3B0LmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9idWZwYWdlLmgiCkBAIC05MCw4ICs5MSw3IEBAIHNjYW5fZmlsZShjb25zdCBjaGFyICpm biwgQmxvY2tOdW1iZXIgc2VnbWVudG5vKQogCWYgPSBvcGVuKGZuLCBPX1JET05MWSB8IFBH X0JJTkFSWSwgMCk7CiAJaWYgKGYgPCAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBm biwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBm aWxlIFwiJXNcIjogJW0iLCBmbik7CiAJCWV4aXQoMSk7CiAJfQogCkBAIC0xMDYsOCArMTA2 LDggQEAgc2Nhbl9maWxlKGNvbnN0IGNoYXIgKmZuLCBCbG9ja051bWJlciBzZWdtZW50bm8p CiAJCQlicmVhazsKIAkJaWYgKHIgIT0gQkxDS1NaKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IGNvdWxkIG5vdCByZWFkIGJsb2NrICV1IGluIGZpbGUgXCIlc1wiOiByZWFk ICVkIG9mICVkXG4iKSwKLQkJCQkJcHJvZ25hbWUsIGJsb2Nrbm8sIGZuLCByLCBCTENLU1op OworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBibG9jayAldSBpbiBmaWxlIFwi JXNcIjogcmVhZCAlZCBvZiAlZCIsCisJCQkJCQkgYmxvY2tubywgZm4sIHIsIEJMQ0tTWik7 CiAJCQlleGl0KDEpOwogCQl9CiAJCWJsb2NrcysrOwpAQCAtMTIwLDE1ICsxMjAsMTQgQEAg c2Nhbl9maWxlKGNvbnN0IGNoYXIgKmZuLCBCbG9ja051bWJlciBzZWdtZW50bm8pCiAJCWlm IChjc3VtICE9IGhlYWRlci0+cGRfY2hlY2tzdW0pCiAJCXsKIAkJCWlmIChDb250cm9sRmls ZS0+ZGF0YV9jaGVja3N1bV92ZXJzaW9uID09IFBHX0RBVEFfQ0hFQ0tTVU1fVkVSU0lPTikK LQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNoZWNrc3VtIHZlcmlmaWNhdGlvbiBmYWls ZWQgaW4gZmlsZSBcIiVzXCIsIGJsb2NrICV1OiBjYWxjdWxhdGVkIGNoZWNrc3VtICVYIGJ1 dCBibG9jayBjb250YWlucyAlWFxuIiksCi0JCQkJCQlwcm9nbmFtZSwgZm4sIGJsb2Nrbm8s IGNzdW0sIGhlYWRlci0+cGRfY2hlY2tzdW0pOworCQkJCXBnX2xvZ19lcnJvcigiY2hlY2tz dW0gdmVyaWZpY2F0aW9uIGZhaWxlZCBpbiBmaWxlIFwiJXNcIiwgYmxvY2sgJXU6IGNhbGN1 bGF0ZWQgY2hlY2tzdW0gJVggYnV0IGJsb2NrIGNvbnRhaW5zICVYIiwKKwkJCQkJCQkgZm4s IGJsb2Nrbm8sIGNzdW0sIGhlYWRlci0+cGRfY2hlY2tzdW0pOwogCQkJYmFkYmxvY2tzKys7 CiAJCX0KIAl9CiAKIAlpZiAodmVyYm9zZSkKLQkJZnByaW50ZihzdGRlcnIsCi0JCQkJXygi JXM6IGNoZWNrc3VtcyB2ZXJpZmllZCBpbiBmaWxlIFwiJXNcIlxuIiksIHByb2duYW1lLCBm bik7CisJCXBnX2xvZ19pbmZvKCJjaGVja3N1bXMgdmVyaWZpZWQgaW4gZmlsZSBcIiVzXCIi LCBmbik7CiAKIAljbG9zZShmKTsKIH0KQEAgLTE0NCw4ICsxNDMsNyBAQCBzY2FuX2RpcmVj dG9yeShjb25zdCBjaGFyICpiYXNlZGlyLCBjb25zdCBjaGFyICpzdWJkaXIpCiAJZGlyID0g b3BlbmRpcihwYXRoKTsKIAlpZiAoIWRpcikKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIl czogY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2du YW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5v dCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgcGF0aCk7CiAJCWV4aXQoMSk7CiAJfQog CXdoaWxlICgoZGUgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpCkBAIC0xNzIsOCArMTcwLDcg QEAgc2Nhbl9kaXJlY3RvcnkoY29uc3QgY2hhciAqYmFzZWRpciwgY29uc3QgY2hhciAqc3Vi ZGlyKQogCQlzbnByaW50Zihmbiwgc2l6ZW9mKGZuKSwgIiVzLyVzIiwgcGF0aCwgZGUtPmRf bmFtZSk7CiAJCWlmIChsc3RhdChmbiwgJnN0KSA8IDApCiAJCXsKLQkJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IHN0YXQgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJ cHJvZ25hbWUsIGZuLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJjb3Vs ZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJW0iLCBmbik7CiAJCQlleGl0KDEpOwogCQl9CiAJ CWlmIChTX0lTUkVHKHN0LnN0X21vZGUpKQpAQCAtMjAwLDggKzE5Nyw4IEBAIHNjYW5fZGly ZWN0b3J5KGNvbnN0IGNoYXIgKmJhc2VkaXIsIGNvbnN0IGNoYXIgKnN1YmRpcikKIAkJCQlz ZWdtZW50bm8gPSBhdG9pKHNlZ21lbnRwYXRoKTsKIAkJCQlpZiAoc2VnbWVudG5vID09IDAp CiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGludmFsaWQgc2VnbWVudCBu dW1iZXIgJWQgaW4gZmlsZSBuYW1lIFwiJXNcIlxuIiksCi0JCQkJCQkJcHJvZ25hbWUsIHNl Z21lbnRubywgZm4pOworCQkJCQlwZ19sb2dfZXJyb3IoImludmFsaWQgc2VnbWVudCBudW1i ZXIgJWQgaW4gZmlsZSBuYW1lIFwiJXNcIiIsCisJCQkJCQkJCSBzZWdtZW50bm8sIGZuKTsK IAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQl9CkBAIC0yNDAsOCArMjM3LDggQEAgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogCWludAkJCW9wdGlvbl9pbmRleDsKIAlib29sCQlj cmNfb2s7CiAKKwlwZ19sb2dnaW5nX2luaXQoYXJndlswXSk7CiAJc2V0X3BnbG9jYWxlX3Bn c2VydmljZShhcmd2WzBdLCBQR19URVhURE9NQUlOKCJwZ192ZXJpZnlfY2hlY2tzdW1zIikp OwotCiAJcHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAKIAlpZiAoYXJnYyA+ IDEpCkBAIC0yNzEsNyArMjY4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog CQkJY2FzZSAncic6CiAJCQkJaWYgKGF0b2kob3B0YXJnKSA9PSAwKQogCQkJCXsKLQkJCQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBpbnZhbGlkIHJlbGZpbGVub2RlIHNwZWNpZmljYXRp b24sIG11c3QgYmUgbnVtZXJpYzogJXNcbiIpLCBwcm9nbmFtZSwgb3B0YXJnKTsKKwkJCQkJ cGdfbG9nX2Vycm9yKCJpbnZhbGlkIHJlbGZpbGVub2RlIHNwZWNpZmljYXRpb24sIG11c3Qg YmUgbnVtZXJpYzogJXMiLCBvcHRhcmcpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlv bmx5X3JlbGZpbGVub2RlID0gcHN0cmR1cChvcHRhcmcpOwpAQCAtMjkyLDcgKzI4OSw3IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJLyogSWYgbm8gRGF0YURpciB3YXMg c3BlY2lmaWVkLCBhbmQgbm9uZSBjb3VsZCBiZSBmb3VuZCwgZXJyb3Igb3V0ICovCiAJCWlm IChEYXRhRGlyID09IE5VTEwpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogbm8g ZGF0YSBkaXJlY3Rvcnkgc3BlY2lmaWVkXG4iKSwgcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vy cm9yKCJubyBkYXRhIGRpcmVjdG9yeSBzcGVjaWZpZWQiKTsKIAkJCWZwcmludGYoc3RkZXJy LCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9n bmFtZSk7CiAJCQlleGl0KDEpOwogCQl9CkBAIC0zMDEsMzEgKzI5OCwzMSBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAJLyogQ29tcGxhaW4gaWYgYW55IGFyZ3VtZW50cyBy ZW1haW4gKi8KIAlpZiAob3B0aW5kIDwgYXJnYykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBf KCIlczogdG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wi KVxuIiksCi0JCQkJcHJvZ25hbWUsIGFyZ3Zbb3B0aW5kXSk7CisJCXBnX2xvZ19lcnJvcigi dG9vIG1hbnkgY29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIsCisJ CQkJCSBhcmd2W29wdGluZF0pOwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1o ZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwKIAkJCQlwcm9nbmFtZSk7CiAJCWV4 aXQoMSk7CiAJfQogCiAJLyogQ2hlY2sgaWYgY2x1c3RlciBpcyBydW5uaW5nICovCi0JQ29u dHJvbEZpbGUgPSBnZXRfY29udHJvbGZpbGUoRGF0YURpciwgcHJvZ25hbWUsICZjcmNfb2sp OworCUNvbnRyb2xGaWxlID0gZ2V0X2NvbnRyb2xmaWxlKERhdGFEaXIsICZjcmNfb2spOwog CWlmICghY3JjX29rKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBwZ19jb250cm9s IENSQyB2YWx1ZSBpcyBpbmNvcnJlY3RcbiIpLCBwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJv cigicGdfY29udHJvbCBDUkMgdmFsdWUgaXMgaW5jb3JyZWN0Iik7CiAJCWV4aXQoMSk7CiAJ fQogCiAJaWYgKENvbnRyb2xGaWxlLT5zdGF0ZSAhPSBEQl9TSFVURE9XTkVEICYmCiAJCUNv bnRyb2xGaWxlLT5zdGF0ZSAhPSBEQl9TSFVURE9XTkVEX0lOX1JFQ09WRVJZKQogCXsKLQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjbHVzdGVyIG11c3QgYmUgc2h1dCBkb3duIHRvIHZl cmlmeSBjaGVja3N1bXNcbiIpLCBwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigiY2x1c3Rl ciBtdXN0IGJlIHNodXQgZG93biB0byB2ZXJpZnkgY2hlY2tzdW1zIik7CiAJCWV4aXQoMSk7 CiAJfQogCiAJaWYgKENvbnRyb2xGaWxlLT5kYXRhX2NoZWNrc3VtX3ZlcnNpb24gPT0gMCkK IAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogZGF0YSBjaGVja3N1bXMgYXJlIG5vdCBl bmFibGVkIGluIGNsdXN0ZXJcbiIpLCBwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigiZGF0 YSBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkIGluIGNsdXN0ZXIiKTsKIAkJZXhpdCgxKTsK IAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZSBiL3NyYy9i aW4vcGdfd2FsZHVtcC9NYWtlZmlsZQppbmRleCBmNTk1N2JkNzVhLi5iZmU5NDk4YjgwIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvTWFrZWZpbGUKKysrIGIvc3JjL2Jpbi9w Z193YWxkdW1wL01ha2VmaWxlCkBAIC0xMSw2ICsxMSw3IEBAIE9CSlMgPSBwZ193YWxkdW1w Lm8gY29tcGF0Lm8geGxvZ3JlYWRlci5vIHJtZ3JkZXNjLm8gXAogCSQoUk1HUkRFU0NPQkpT KSAkKFdJTjMyUkVTKQogCiBvdmVycmlkZSBDUFBGTEFHUyA6PSAtREZST05URU5EICQoQ1BQ RkxBR1MpCitMREZMQUdTX0lOVEVSTkFMICs9IC1MJCh0b3BfYnVpbGRkaXIpL3NyYy9mZV91 dGlscyAtbHBnZmV1dGlscwogCiBSTUdSREVTQ1NPVVJDRVMgPSAkKHNvcnQgJChub3RkaXIg JCh3aWxkY2FyZCAkKHRvcF9zcmNkaXIpL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy8q ZGVzYy5jKSkpCiBSTUdSREVTQ09CSlMgPSAkKHBhdHN1YnN0ICUuYywlLm8sJChSTUdSREVT Q1NPVVJDRVMpKQpAQCAtMTgsNyArMTksNyBAQCBSTUdSREVTQ09CSlMgPSAkKHBhdHN1YnN0 ICUuYywlLm8sJChSTUdSREVTQ1NPVVJDRVMpKQogCiBhbGw6IHBnX3dhbGR1bXAKIAotcGdf d2FsZHVtcDogJChPQkpTKSB8IHN1Ym1ha2UtbGlicGdwb3J0CitwZ193YWxkdW1wOiAkKE9C SlMpIHwgc3VibWFrZS1saWJwZ3BvcnQgc3VibWFrZS1saWJwZ2ZldXRpbHMKIAkkKENDKSAk KENGTEFHUykgJF4gJChMREZMQUdTKSAkKExERkxBR1NfRVgpICQoTElCUykgLW8gJEAkKFgp CiAKIHhsb2dyZWFkZXIuYzogJSA6ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0vJQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL25scy5tayBiL3Ny Yy9iaW4vcGdfd2FsZHVtcC9ubHMubWsKaW5kZXggYzYxOGY5MzE0NS4uMmVlMmRhNzkwMSAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL25scy5taworKysgYi9zcmMvYmluL3Bn X3dhbGR1bXAvbmxzLm1rCkBAIC0xLDYgKzEsNiBAQAogIyBzcmMvYmluL3BnX3dhbGR1bXAv bmxzLm1rCiBDQVRBTE9HX05BTUUgICAgID0gcGdfd2FsZHVtcAogQVZBSUxfTEFOR1VBR0VT ICA9IGRlIGVzIGZyIGphIGtvIHJ1IHN2IHRyIHZpCi1HRVRURVhUX0ZJTEVTICAgID0gcGdf d2FsZHVtcC5jCi1HRVRURVhUX1RSSUdHRVJTID0gZmF0YWxfZXJyb3IKLUdFVFRFWFRfRkxB R1MgICAgPSBmYXRhbF9lcnJvcjoxOmMtZm9ybWF0CitHRVRURVhUX0ZJTEVTICAgID0gJChG Uk9OVEVORF9DT01NT05fR0VUVEVYVF9GSUxFUykgcGdfd2FsZHVtcC5jCitHRVRURVhUX1RS SUdHRVJTID0gJChGUk9OVEVORF9DT01NT05fR0VUVEVYVF9UUklHR0VSUykgZmF0YWxfZXJy b3IKK0dFVFRFWFRfRkxBR1MgICAgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX0ZMQUdT KSBmYXRhbF9lcnJvcjoxOmMtZm9ybWF0CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1 bXAvcGdfd2FsZHVtcC5jIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYwppbmRl eCAxZTUzNzllYjNlLi42NmY5MDUyOTM5IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1 bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMK QEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ19pbnRlcm5hbC5oIgog I2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiY29tbW9uL2ZlX21lbXV0 aWxzLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImdldG9w dF9sb25nLmgiCiAjaW5jbHVkZSAicm1ncmRlc2MuaCIKIApAQCAtNzAsMjYgKzcxLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgWExvZ0R1bXBTdGF0cwogCVN0YXRzCQlyZWNvcmRfc3RhdHNbUk1f TkVYVF9JRF1bTUFYX1hMSU5GT19UWVBFU107CiB9IFhMb2dEdW1wU3RhdHM7CiAKLXN0YXRp YyB2b2lkIGZhdGFsX2Vycm9yKGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBnX2F0dHJpYnV0ZV9w cmludGYoMSwgMik7Ci0KLS8qCi0gKiBCaWcgcmVkIGJ1dHRvbiB0byBwdXNoIHdoZW4gdGhp bmdzIGdvIGhvcnJpYmx5IHdyb25nLgotICovCi1zdGF0aWMgdm9pZAotZmF0YWxfZXJyb3Io Y29uc3QgY2hhciAqZm10LC4uLikKLXsKLQl2YV9saXN0CQlhcmdzOwotCi0JZmZsdXNoKHN0 ZG91dCk7Ci0KLQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IEZBVEFMOiAgIiksIHByb2duYW1l KTsKLQl2YV9zdGFydChhcmdzLCBmbXQpOwotCXZmcHJpbnRmKHN0ZGVyciwgXyhmbXQpLCBh cmdzKTsKLQl2YV9lbmQoYXJncyk7Ci0JZnB1dGMoJ1xuJywgc3RkZXJyKTsKLQotCWV4aXQo RVhJVF9GQUlMVVJFKTsKLX0KKyNkZWZpbmUgZmF0YWxfZXJyb3IoLi4uKSBkbyB7IHBnX2xv Z19lcnJvcihfX1ZBX0FSR1NfXyk7IGV4aXQoRVhJVF9GQUlMVVJFKTsgfSB3aGlsZSgwKQog CiBzdGF0aWMgdm9pZAogcHJpbnRfcm1ncl9saXN0KHZvaWQpCkBAIC04NTgsNiArODQwLDcg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJaW50CQkJb3B0aW9uOwogCWludAkJ CW9wdGluZGV4ID0gMDsKIAorCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKIAlzZXRfcGds b2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4oInBnX3dhbGR1bXAiKSk7 CiAJcHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAKQEAgLTg4Miw3ICs4NjUs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCWlmIChhcmdjIDw9IDEpCiAJ ewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG5vIGFyZ3VtZW50cyBzcGVjaWZpZWRcbiIp LCBwcm9nbmFtZSk7CisJCXBnX2xvZ19lcnJvcigibm8gYXJndW1lbnRzIHNwZWNpZmllZCIp OwogCQlnb3RvIGJhZF9hcmd1bWVudDsKIAl9CiAKQEAgLTg5Nyw4ICs4ODAsOCBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCWNhc2UgJ2UnOgogCQkJCWlmIChzc2NhbmYo b3B0YXJnLCAiJVgvJVgiLCAmeGxvZ2lkLCAmeHJlY29mZikgIT0gMikKIAkJCQl7Ci0JCQkJ CWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHBhcnNlIGVuZCBXQUwgbG9jYXRp b24gXCIlc1wiXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwgb3B0YXJnKTsKKwkJCQkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3QgcGFyc2UgZW5kIFdBTCBsb2NhdGlvbiBcIiVzXCIiLAorCQkJ CQkJCQkgb3B0YXJnKTsKIAkJCQkJZ290byBiYWRfYXJndW1lbnQ7CiAJCQkJfQogCQkJCXBy aXZhdGUuZW5kcHRyID0gKHVpbnQ2NCkgeGxvZ2lkIDw8IDMyIHwgeHJlY29mZjsKQEAgLTkx Myw4ICs4OTYsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCWNhc2UgJ24n OgogCQkJCWlmIChzc2NhbmYob3B0YXJnLCAiJWQiLCAmY29uZmlnLnN0b3BfYWZ0ZXJfcmVj b3JkcykgIT0gMSkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY291bGQg bm90IHBhcnNlIGxpbWl0IFwiJXNcIlxuIiksCi0JCQkJCQkJcHJvZ25hbWUsIG9wdGFyZyk7 CisJCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHBhcnNlIGxpbWl0IFwiJXNcIiIsIG9w dGFyZyk7CiAJCQkJCWdvdG8gYmFkX2FyZ3VtZW50OwogCQkJCX0KIAkJCQlicmVhazsKQEAg LTk0Miw4ICs5MjQsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCQkJCQlp ZiAoY29uZmlnLmZpbHRlcl9ieV9ybWdyID09IC0xKQogCQkJCQl7Ci0JCQkJCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IHJlc291cmNlIG1hbmFnZXIgXCIlc1wiIGRvZXMgbm90IGV4aXN0 XG4iKSwKLQkJCQkJCQkJcHJvZ25hbWUsIG9wdGFyZyk7CisJCQkJCQlwZ19sb2dfZXJyb3Io InJlc291cmNlIG1hbmFnZXIgXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQkJCSBv cHRhcmcpOwogCQkJCQkJZ290byBiYWRfYXJndW1lbnQ7CiAJCQkJCX0KIAkJCQl9CkBAIC05 NTEsOCArOTMzLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQljYXNlICdz JzoKIAkJCQlpZiAoc3NjYW5mKG9wdGFyZywgIiVYLyVYIiwgJnhsb2dpZCwgJnhyZWNvZmYp ICE9IDIpCiAJCQkJewotCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBw YXJzZSBzdGFydCBXQUwgbG9jYXRpb24gXCIlc1wiXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwg b3B0YXJnKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcGFyc2Ugc3RhcnQgV0FM IGxvY2F0aW9uIFwiJXNcIiIsCisJCQkJCQkJCSBvcHRhcmcpOwogCQkJCQlnb3RvIGJhZF9h cmd1bWVudDsKIAkJCQl9CiAJCQkJZWxzZQpAQCAtOTYxLDggKzk0Myw3IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJY2FzZSAndCc6CiAJCQkJaWYgKHNzY2FuZihvcHRh cmcsICIlZCIsICZwcml2YXRlLnRpbWVsaW5lKSAhPSAxKQogCQkJCXsKLQkJCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcGFyc2UgdGltZWxpbmUgXCIlc1wiXG4iKSwK LQkJCQkJCQlwcm9nbmFtZSwgb3B0YXJnKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBu b3QgcGFyc2UgdGltZWxpbmUgXCIlc1wiIiwgb3B0YXJnKTsKIAkJCQkJZ290byBiYWRfYXJn dW1lbnQ7CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAtOTczLDggKzk1NCw4IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJY2FzZSAneCc6CiAJCQkJaWYgKHNzY2FuZihvcHRh cmcsICIldSIsICZjb25maWcuZmlsdGVyX2J5X3hpZCkgIT0gMSkKIAkJCQl7Ci0JCQkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogY291bGQgbm90IHBhcnNlIFwiJXNcIiBhcyBhIHRyYW5z YWN0aW9uIElEXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwgb3B0YXJnKTsKKwkJCQkJcGdfbG9n X2Vycm9yKCJjb3VsZCBub3QgcGFyc2UgXCIlc1wiIGFzIGEgdHJhbnNhY3Rpb24gSUQiLAor CQkJCQkJCQkgb3B0YXJnKTsKIAkJCQkJZ290byBiYWRfYXJndW1lbnQ7CiAJCQkJfQogCQkJ CWNvbmZpZy5maWx0ZXJfYnlfeGlkX2VuYWJsZWQgPSB0cnVlOwpAQCAtOTg4LDggKzk2OSw4 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCQkJY29uZmlnLnN0YXRzX3Bl cl9yZWNvcmQgPSB0cnVlOwogCQkJCQllbHNlIGlmIChzdHJjbXAob3B0YXJnLCAicm1nciIp ICE9IDApCiAJCQkJCXsKLQkJCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogdW5yZWNvZ25p emVkIGFyZ3VtZW50IHRvIC0tc3RhdHM6ICVzXG4iKSwKLQkJCQkJCQkJcHJvZ25hbWUsIG9w dGFyZyk7CisJCQkJCQlwZ19sb2dfZXJyb3IoInVucmVjb2duaXplZCBhcmd1bWVudCB0byAt LXN0YXRzOiAlcyIsCisJCQkJCQkJCQkgb3B0YXJnKTsKIAkJCQkJCWdvdG8gYmFkX2FyZ3Vt ZW50OwogCQkJCQl9CiAJCQkJfQpAQCAtMTAwMSw5ICs5ODIsOCBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAogCWlmICgob3B0aW5kICsgMikgPCBhcmdjKQogCXsKLQkJZnBy aW50ZihzdGRlcnIsCi0JCQkJXygiJXM6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVu dHMgKGZpcnN0IGlzIFwiJXNcIilcbiIpLAotCQkJCXByb2duYW1lLCBhcmd2W29wdGluZCAr IDJdKTsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRz IChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJIGFyZ3Zbb3B0aW5kICsgMl0pOwogCQlnb3Rv IGJhZF9hcmd1bWVudDsKIAl9CiAKQEAgLTEwMTIsOSArOTkyLDggQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAJCS8qIHZhbGlkYXRlIHBhdGggcG9pbnRzIHRvIGRpcmVjdG9y eSAqLwogCQlpZiAoIXZlcmlmeV9kaXJlY3RvcnkocHJpdmF0ZS5pbnBhdGgpKQogCQl7Ci0J CQlmcHJpbnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IHBhdGggXCIlc1wiIGNvdWxkIG5vdCBi ZSBvcGVuZWQ6ICVzXG4iKSwKLQkJCQkJcHJvZ25hbWUsIHByaXZhdGUuaW5wYXRoLCBzdHJl cnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCJwYXRoIFwiJXNcIiBjb3VsZCBub3Qg YmUgb3BlbmVkOiAlcyIsCisJCQkJCQkgcHJpdmF0ZS5pbnBhdGgsIHN0cmVycm9yKGVycm5v KSk7CiAJCQlnb3RvIGJhZF9hcmd1bWVudDsKIAkJfQogCX0KQEAgLTEwNTEsOSArMTAzMCw3 IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJWExvZ1NlZ05vT2Zmc2V0VG9S ZWNQdHIoc2Vnbm8sIDAsIFdhbFNlZ1N6LCBwcml2YXRlLnN0YXJ0cHRyKTsKIAkJZWxzZSBp ZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuc3RhcnRwdHIsIHNlZ25vLCBXYWxTZWdTeikpCiAJ CXsKLQkJCWZwcmludGYoc3RkZXJyLAotCQkJCQlfKCIlczogc3RhcnQgV0FMIGxvY2F0aW9u ICVYLyVYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCJcbiIpLAotCQkJCQlwcm9nbmFtZSwK KwkJCXBnX2xvZ19lcnJvcigic3RhcnQgV0FMIGxvY2F0aW9uICVYLyVYIGlzIG5vdCBpbnNp ZGUgZmlsZSBcIiVzXCIiLAogCQkJCQkodWludDMyKSAocHJpdmF0ZS5zdGFydHB0ciA+PiAz MiksCiAJCQkJCSh1aW50MzIpIHByaXZhdGUuc3RhcnRwdHIsCiAJCQkJCWZuYW1lKTsKQEAg LTEwOTYsOSArMTA3Myw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQlpZiAo IVhMQnl0ZUluU2VnKHByaXZhdGUuZW5kcHRyLCBzZWdubywgV2FsU2VnU3opICYmCiAJCQlw cml2YXRlLmVuZHB0ciAhPSAoc2Vnbm8gKyAxKSAqIFdhbFNlZ1N6KQogCQl7Ci0JCQlmcHJp bnRmKHN0ZGVyciwKLQkJCQkJXygiJXM6IGVuZCBXQUwgbG9jYXRpb24gJVgvJVggaXMgbm90 IGluc2lkZSBmaWxlIFwiJXNcIlxuIiksCi0JCQkJCXByb2duYW1lLAorCQkJcGdfbG9nX2Vy cm9yKCJlbmQgV0FMIGxvY2F0aW9uICVYLyVYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIi LAogCQkJCQkodWludDMyKSAocHJpdmF0ZS5lbmRwdHIgPj4gMzIpLAogCQkJCQkodWludDMy KSBwcml2YXRlLmVuZHB0ciwKIAkJCQkJYXJndlthcmdjIC0gMV0pOwpAQCAtMTExMSw3ICsx MDg2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJLyogd2UgZG9uJ3Qga25v dyB3aGF0IHRvIHByaW50ICovCiAJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQocHJpdmF0ZS5z dGFydHB0cikpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG5vIHN0YXJ0IFdBTCBs b2NhdGlvbiBnaXZlblxuIiksIHByb2duYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJubyBzdGFy dCBXQUwgbG9jYXRpb24gZ2l2ZW4iKTsKIAkJZ290byBiYWRfYXJndW1lbnQ7CiAJfQogCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jpbi9wZ2JlbmNo L3BnYmVuY2guYwppbmRleCAxOTUzMmNmYjU0Li44YWRkYzNkODcwIDEwMDY0NAotLS0gYS9z cmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9iaW4vcGdiZW5jaC9wZ2JlbmNo LmMKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgogI2luY2x1 ZGUgImNvbW1vbi9pbnQuaCIKICNpbmNsdWRlICJmZV91dGlscy9jb25kaXRpb25hbC5oIgor I2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJnZXRvcHRfbG9uZy5o IgogI2luY2x1ZGUgImxpYnBxLWZlLmgiCiAjaW5jbHVkZSAicG9ydGFiaWxpdHkvaW5zdHJf dGltZS5oIgpAQCAtNjEzLDcgKzYxNCw2IEBAIHN0YXRpYyB2b2lkIGRvTG9nKFRTdGF0ZSAq dGhyZWFkLCBDU3RhdGUgKnN0LAogCSAgU3RhdHNEYXRhICphZ2csIGJvb2wgc2tpcHBlZCwg ZG91YmxlIGxhdGVuY3ksIGRvdWJsZSBsYWcpOwogc3RhdGljIHZvaWQgcHJvY2Vzc1hhY3RT dGF0cyhUU3RhdGUgKnRocmVhZCwgQ1N0YXRlICpzdCwgaW5zdHJfdGltZSAqbm93LAogCQkJ CSBib29sIHNraXBwZWQsIFN0YXRzRGF0YSAqYWdnKTsKLXN0YXRpYyB2b2lkIHBnYmVuY2hf ZXJyb3IoY29uc3QgY2hhciAqZm10LC4uLikgcGdfYXR0cmlidXRlX3ByaW50ZigxLCAyKTsK IHN0YXRpYyB2b2lkIGFsbG9jYXRlX2NvbW1hbmRfdmFycHJlZml4KENvbW1hbmQgKmNtZCwg aW50IHRvdGFscXVlcmllcyk7CiBzdGF0aWMgdm9pZCBhZGRTY3JpcHQoUGFyc2VkU2NyaXB0 IHNjcmlwdCk7CiBzdGF0aWMgdm9pZCAqdGhyZWFkUnVuKHZvaWQgKmFyZyk7CkBAIC02MzAs NyArNjMwLDYgQEAgc3RhdGljIGJvb2wgc29ja2V0X2hhc19pbnB1dChzb2NrZXRfc2V0ICpz YSwgaW50IGZkLCBpbnQgaWR4KTsKIC8qIGNhbGxiYWNrIGZ1bmN0aW9ucyBmb3Igb3VyIGZs ZXggbGV4ZXIgKi8KIHN0YXRpYyBjb25zdCBQc3FsU2NhbkNhbGxiYWNrcyBwZ2JlbmNoX2Nh bGxiYWNrcyA9IHsKIAlOVUxMLAkJCQkJCS8qIGRvbid0IG5lZWQgZ2V0X3ZhcmlhYmxlIGZ1 bmN0aW9uYWxpdHkgKi8KLQlwZ2JlbmNoX2Vycm9yCiB9OwogCiAKQEAgLTQxNTQsMjAgKzQx NTMsNiBAQCBwYXJzZVF1ZXJ5KENvbW1hbmQgKmNtZCkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAot LyoKLSAqIFNpbXBsZSBlcnJvci1wcmludGluZyBmdW5jdGlvbiwgbWlnaHQgYmUgbmVlZGVk IGJ5IGxleGVyCi0gKi8KLXN0YXRpYyB2b2lkCi1wZ2JlbmNoX2Vycm9yKGNvbnN0IGNoYXIg KmZtdCwuLi4pCi17Ci0JdmFfbGlzdAkJYXA7Ci0KLQlmZmx1c2goc3Rkb3V0KTsKLQl2YV9z dGFydChhcCwgZm10KTsKLQl2ZnByaW50ZihzdGRlcnIsIF8oZm10KSwgYXApOwotCXZhX2Vu ZChhcCk7Ci19Ci0KIC8qCiAgKiBzeW50YXggZXJyb3Igd2hpbGUgcGFyc2luZyBhIHNjcmlw dCAoaW4gcHJhY3RpY2UsIHdoaWxlIHBhcnNpbmcgYQogICogYmFja3NsYXNoIGNvbW1hbmQs IGJlY2F1c2Ugd2UgZG9uJ3QgZGV0ZWN0IHN5bnRheCBlcnJvcnMgaW4gU1FMKQpAQCAtNTI3 NCw2ICs1MjU5LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlpbnQJCQll eGl0X2NvZGUgPSAwOwogCisJcGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOwogCXByb2duYW1l ID0gZ2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwogCiAJaWYgKGFyZ2MgPiAxKQpAQCAtNTI5MCwx MSArNTI3Niw2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl9CiAJfQogCi0j aWZkZWYgV0lOMzIKLQkvKiBzdGRlcnIgaXMgYnVmZmVyZWQgb24gV2luMzIuICovCi0Jc2V0 dmJ1ZihzdGRlcnIsIE5VTEwsIF9JT05CRiwgMCk7Ci0jZW5kaWYKLQogCWlmICgoZW52ID0g Z2V0ZW52KCJQR0hPU1QiKSkgIT0gTlVMTCAmJiAqZW52ICE9ICdcMCcpCiAJCXBnaG9zdCA9 IGVudjsKIAlpZiAoKGVudiA9IGdldGVudigiUEdQT1JUIikpICE9IE5VTEwgJiYgKmVudiAh PSAnXDAnKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYyBiL3NyYy9iaW4v cHNxbC9jb21tYW5kLmMKaW5kZXggYWIyNTljNDczYS4uZWE0ODBiZWVmOSAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wc3FsL2NvbW1hbmQuYworKysgYi9zcmMvYmluL3BzcWwvY29tbWFuZC5j CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJsaWJwcS1mZS5oIgogI2luY2x1ZGUg InBxZXhwYnVmZmVyLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1 ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogCiAjaW5jbHVkZSAiY29tbW9uLmgiCkBA IC0yMTYsMTAgKzIxNyw5IEBAIEhhbmRsZVNsYXNoQ21kcyhQc3FsU2NhblN0YXRlIHNjYW5f c3RhdGUsCiAKIAlpZiAoc3RhdHVzID09IFBTUUxfQ01EX1VOS05PV04pCiAJeworCQlwZ19s b2dfZXJyb3IoImludmFsaWQgY29tbWFuZCBcXCVzIiwgY21kKTsKIAkJaWYgKHBzZXQuY3Vy X2NtZF9pbnRlcmFjdGl2ZSkKLQkJCXBzcWxfZXJyb3IoIkludmFsaWQgY29tbWFuZCBcXCVz LiBUcnkgXFw/IGZvciBoZWxwLlxuIiwgY21kKTsKLQkJZWxzZQotCQkJcHNxbF9lcnJvcigi aW52YWxpZCBjb21tYW5kIFxcJXNcbiIsIGNtZCk7CisJCQlwZ19sb2dfaW5mbygiVHJ5IFxc PyBmb3IgaGVscC4iKTsKIAkJc3RhdHVzID0gUFNRTF9DTURfRVJST1I7CiAJfQogCkBAIC0y MzcsNyArMjM3LDcgQEAgSGFuZGxlU2xhc2hDbWRzKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0 ZSwKIAkJCQkJCQkJCQkJIE9UX05PUk1BTCwgTlVMTCwgZmFsc2UpKSkKIAkJewogCQkJaWYg KGFjdGl2ZV9icmFuY2gpCi0JCQkJcHNxbF9lcnJvcigiXFwlczogZXh0cmEgYXJndW1lbnQg XCIlc1wiIGlnbm9yZWRcbiIsIGNtZCwgYXJnKTsKKwkJCQlwZ19sb2dfd2FybmluZygiXFwl czogZXh0cmEgYXJndW1lbnQgXCIlc1wiIGlnbm9yZWQiLCBjbWQsIGFyZyk7CiAJCQlmcmVl KGFyZyk7CiAJCX0KIAkJY29uZGl0aW9uYWxfc3RhY2tfcG9wKGNzdGFjayk7CkBAIC0yODks NyArMjg5LDcgQEAgZXhlY19jb21tYW5kKGNvbnN0IGNoYXIgKmNtZCwKIAlpZiAocHNldC5j dXJfY21kX2ludGVyYWN0aXZlICYmICFhY3RpdmVfYnJhbmNoICYmCiAJCSFpc19icmFuY2hp bmdfY29tbWFuZChjbWQpKQogCXsKLQkJcHNxbF9lcnJvcigiXFwlcyBjb21tYW5kIGlnbm9y ZWQ7IHVzZSBcXGVuZGlmIG9yIEN0cmwtQyB0byBleGl0IGN1cnJlbnQgXFxpZiBibG9ja1xu IiwKKwkJcGdfbG9nX3dhcm5pbmcoIlxcJXMgY29tbWFuZCBpZ25vcmVkOyB1c2UgXFxlbmRp ZiBvciBDdHJsLUMgdG8gZXhpdCBjdXJyZW50IFxcaWYgYmxvY2siLAogCQkJCSAgIGNtZCk7 CiAJfQogCkBAIC01NDksNyArNTQ5LDcgQEAgZXhlY19jb21tYW5kX2NkKFBzcWxTY2FuU3Rh dGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLCBjb25zdCBjaGFyICpjbWQpCiAJ CQlwdyA9IGdldHB3dWlkKHVzZXJfaWQpOwogCQkJaWYgKCFwdykKIAkJCXsKLQkJCQlwc3Fs X2Vycm9yKCJjb3VsZCBub3QgZ2V0IGhvbWUgZGlyZWN0b3J5IGZvciB1c2VyIElEICVsZDog JXNcbiIsCisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgZ2V0IGhvbWUgZGlyZWN0b3J5 IGZvciB1c2VyIElEICVsZDogJXMiLAogCQkJCQkJICAgKGxvbmcpIHVzZXJfaWQsCiAJCQkJ CQkgICBlcnJubyA/IHN0cmVycm9yKGVycm5vKSA6IF8oInVzZXIgZG9lcyBub3QgZXhpc3Qi KSk7CiAJCQkJZXhpdChFWElUX0ZBSUxVUkUpOwpAQCAtNTY3LDggKzU2Nyw4IEBAIGV4ZWNf Y29tbWFuZF9jZChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5j aCwgY29uc3QgY2hhciAqY21kKQogCiAJCWlmIChjaGRpcihkaXIpID09IC0xKQogCQl7Ci0J CQlwc3FsX2Vycm9yKCJcXCVzOiBjb3VsZCBub3QgY2hhbmdlIGRpcmVjdG9yeSB0byBcIiVz XCI6ICVzXG4iLAotCQkJCQkgICBjbWQsIGRpciwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBn X2xvZ19lcnJvcigiXFwlczogY291bGQgbm90IGNoYW5nZSBkaXJlY3RvcnkgdG8gXCIlc1wi OiAlbSIsCisJCQkJCQkgY21kLCBkaXIpOwogCQkJc3VjY2VzcyA9IGZhbHNlOwogCQl9CiAK QEAgLTkwOCw3ICs5MDgsNyBAQCBleGVjX2NvbW1hbmRfZWRpdChQc3FsU2NhblN0YXRlIHNj YW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAl7CiAJCWlmICghcXVlcnlfYnVmKQog CQl7Ci0JCQlwc3FsX2Vycm9yKCJubyBxdWVyeSBidWZmZXJcbiIpOworCQkJcGdfbG9nX2Vy cm9yKCJubyBxdWVyeSBidWZmZXIiKTsKIAkJCXN0YXR1cyA9IFBTUUxfQ01EX0VSUk9SOwog CQl9CiAJCWVsc2UKQEAgLTk0MSw3ICs5NDEsNyBAQCBleGVjX2NvbW1hbmRfZWRpdChQc3Fs U2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAkJCQlsaW5lbm8g PSBhdG9pKGxuKTsKIAkJCQlpZiAobGluZW5vIDwgMSkKIAkJCQl7Ci0JCQkJCXBzcWxfZXJy b3IoImludmFsaWQgbGluZSBudW1iZXI6ICVzXG4iLCBsbik7CisJCQkJCXBnX2xvZ19lcnJv cigiaW52YWxpZCBsaW5lIG51bWJlcjogJXMiLCBsbik7CiAJCQkJCXN0YXR1cyA9IFBTUUxf Q01EX0VSUk9SOwogCQkJCX0KIAkJCX0KQEAgLTk5NSwxNiArOTk1LDE2IEBAIGV4ZWNfY29t bWFuZF9lZl9ldihQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5j aCwKIAkJCWZvcm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxzZSwKIAkJ CQkJCQkJICBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpOwogCQkJaWYgKGlzX2Z1bmMpCi0J CQkJcHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9y dCBlZGl0aW5nIGZ1bmN0aW9uIHNvdXJjZS5cbiIsCisJCQkJcGdfbG9nX2Vycm9yKCJUaGUg c2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGVkaXRpbmcgZnVuY3Rpb24g c291cmNlLiIsCiAJCQkJCQkgICBzdmVyYnVmKTsKIAkJCWVsc2UKLQkJCQlwc3FsX2Vycm9y KCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGVkaXRpbmcgdmll dyBkZWZpbml0aW9ucy5cbiIsCisJCQkJcGdfbG9nX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJz aW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGVkaXRpbmcgdmlldyBkZWZpbml0aW9ucy4iLAog CQkJCQkJICAgc3ZlcmJ1Zik7CiAJCQlzdGF0dXMgPSBQU1FMX0NNRF9FUlJPUjsKIAkJfQog CQllbHNlIGlmICghcXVlcnlfYnVmKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJubyBxdWVyeSBi dWZmZXJcbiIpOworCQkJcGdfbG9nX2Vycm9yKCJubyBxdWVyeSBidWZmZXIiKTsKIAkJCXN0 YXR1cyA9IFBTUUxfQ01EX0VSUk9SOwogCQl9CiAJCWVsc2UKQEAgLTExNTcsNyArMTE1Nyw3 IEBAIGV4ZWNfY29tbWFuZF9lbmNvZGluZyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJv b2wgYWN0aXZlX2JyYW5jaCkKIAkJewogCQkJLyogc2V0IGVuY29kaW5nICovCiAJCQlpZiAo UFFzZXRDbGllbnRFbmNvZGluZyhwc2V0LmRiLCBlbmNvZGluZykgPT0gLTEpCi0JCQkJcHNx bF9lcnJvcigiJXM6IGludmFsaWQgZW5jb2RpbmcgbmFtZSBvciBjb252ZXJzaW9uIHByb2Nl ZHVyZSBub3QgZm91bmRcbiIsIGVuY29kaW5nKTsKKwkJCQlwZ19sb2dfZXJyb3IoIiVzOiBp bnZhbGlkIGVuY29kaW5nIG5hbWUgb3IgY29udmVyc2lvbiBwcm9jZWR1cmUgbm90IGZvdW5k IiwgZW5jb2RpbmcpOwogCQkJZWxzZQogCQkJewogCQkJCS8qIHNhdmUgZW5jb2RpbmcgaW5m byBpbnRvIHBzcWwgaW50ZXJuYWwgZGF0YSAqLwpAQCAtMTE5Miw3ICsxMTkyLDcgQEAgZXhl Y19jb21tYW5kX2VycnZlcmJvc2UoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFj dGl2ZV9icmFuY2gpCiAJCQkJCQkJCQkJCSAgUFFTSE9XX0NPTlRFWFRfQUxXQVlTKTsKIAkJ CWlmIChtc2cpCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigiJXMiLCBtc2cpOworCQkJCXBnX2xv Z19lcnJvcigiJXMiLCBtc2cpOwogCQkJCVBRZnJlZW1lbShtc2cpOwogCQkJfQogCQkJZWxz ZQpAQCAtMTM4Nyw3ICsxMzg3LDcgQEAgZXhlY19jb21tYW5kX2luY2x1ZGUoUHNxbFNjYW5T dGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsIGNvbnN0IGNoYXIgKmMKIAog CQlpZiAoIWZuYW1lKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXCVzOiBtaXNzaW5nIHJlcXVp cmVkIGFyZ3VtZW50XG4iLCBjbWQpOworCQkJcGdfbG9nX2Vycm9yKCJcXCVzOiBtaXNzaW5n IHJlcXVpcmVkIGFyZ3VtZW50IiwgY21kKTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJfQog CQllbHNlCkBAIC0xNTE4LDEyICsxNTE4LDEyIEBAIGV4ZWNfY29tbWFuZF9lbGlmKFBzcWxT Y2FuU3RhdGUgc2Nhbl9zdGF0ZSwgQ29uZGl0aW9uYWxTdGFjayBjc3RhY2ssCiAJCQlicmVh azsKIAkJY2FzZSBJRlNUQVRFX0VMU0VfVFJVRToKIAkJY2FzZSBJRlNUQVRFX0VMU0VfRkFM U0U6Ci0JCQlwc3FsX2Vycm9yKCJcXGVsaWY6IGNhbm5vdCBvY2N1ciBhZnRlciBcXGVsc2Vc biIpOworCQkJcGdfbG9nX2Vycm9yKCJcXGVsaWY6IGNhbm5vdCBvY2N1ciBhZnRlciBcXGVs c2UiKTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCWJyZWFrOwogCQljYXNlIElGU1RBVEVf Tk9ORToKIAkJCS8qIG5vIFxpZiB0byBlbGlmIGZyb20gKi8KLQkJCXBzcWxfZXJyb3IoIlxc ZWxpZjogbm8gbWF0Y2hpbmcgXFxpZlxuIik7CisJCQlwZ19sb2dfZXJyb3IoIlxcZWxpZjog bm8gbWF0Y2hpbmcgXFxpZiIpOwogCQkJc3VjY2VzcyA9IGZhbHNlOwogCQkJYnJlYWs7CiAJ fQpAQCAtMTU4NywxMiArMTU4NywxMiBAQCBleGVjX2NvbW1hbmRfZWxzZShQc3FsU2NhblN0 YXRlIHNjYW5fc3RhdGUsIENvbmRpdGlvbmFsU3RhY2sgY3N0YWNrLAogCQkJYnJlYWs7CiAJ CWNhc2UgSUZTVEFURV9FTFNFX1RSVUU6CiAJCWNhc2UgSUZTVEFURV9FTFNFX0ZBTFNFOgot CQkJcHNxbF9lcnJvcigiXFxlbHNlOiBjYW5ub3Qgb2NjdXIgYWZ0ZXIgXFxlbHNlXG4iKTsK KwkJCXBnX2xvZ19lcnJvcigiXFxlbHNlOiBjYW5ub3Qgb2NjdXIgYWZ0ZXIgXFxlbHNlIik7 CiAJCQlzdWNjZXNzID0gZmFsc2U7CiAJCQlicmVhazsKIAkJY2FzZSBJRlNUQVRFX05PTkU6 CiAJCQkvKiBubyBcaWYgdG8gZWxzZSBmcm9tICovCi0JCQlwc3FsX2Vycm9yKCJcXGVsc2U6 IG5vIG1hdGNoaW5nIFxcaWZcbiIpOworCQkJcGdfbG9nX2Vycm9yKCJcXGVsc2U6IG5vIG1h dGNoaW5nIFxcaWYiKTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCWJyZWFrOwogCX0KQEAg LTE2MzIsNyArMTYzMiw3IEBAIGV4ZWNfY29tbWFuZF9lbmRpZihQc3FsU2NhblN0YXRlIHNj YW5fc3RhdGUsIENvbmRpdGlvbmFsU3RhY2sgY3N0YWNrLAogCQkJYnJlYWs7CiAJCWNhc2Ug SUZTVEFURV9OT05FOgogCQkJLyogbm8gXGlmIHRvIGVuZCAqLwotCQkJcHNxbF9lcnJvcigi XFxlbmRpZjogbm8gbWF0Y2hpbmcgXFxpZlxuIik7CisJCQlwZ19sb2dfZXJyb3IoIlxcZW5k aWY6IG5vIG1hdGNoaW5nIFxcaWYiKTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCWJyZWFr OwogCX0KQEAgLTE2OTIsNyArMTY5Miw3IEBAIGV4ZWNfY29tbWFuZF9sbyhQc3FsU2NhblN0 YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3QgY2hhciAqY21kKQog CQl7CiAJCQlpZiAoIW9wdDIpCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigiXFwlczogbWlzc2lu ZyByZXF1aXJlZCBhcmd1bWVudFxuIiwgY21kKTsKKwkJCQlwZ19sb2dfZXJyb3IoIlxcJXM6 IG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBjbWQpOwogCQkJCXN1Y2Nlc3MgPSBmYWxz ZTsKIAkJCX0KIAkJCWVsc2UKQEAgLTE3MDYsNyArMTcwNiw3IEBAIGV4ZWNfY29tbWFuZF9s byhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwgY29uc3Qg Y2hhciAqY21kKQogCQl7CiAJCQlpZiAoIW9wdDEpCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigi XFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudFxuIiwgY21kKTsKKwkJCQlwZ19sb2df ZXJyb3IoIlxcJXM6IG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBjbWQpOwogCQkJCXN1 Y2Nlc3MgPSBmYWxzZTsKIAkJCX0KIAkJCWVsc2UKQEAgLTE3MjMsNyArMTcyMyw3IEBAIGV4 ZWNfY29tbWFuZF9sbyhQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2Jy YW5jaCwgY29uc3QgY2hhciAqY21kKQogCQl7CiAJCQlpZiAoIW9wdDEpCiAJCQl7Ci0JCQkJ cHNxbF9lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudFxuIiwgY21kKTsK KwkJCQlwZ19sb2dfZXJyb3IoIlxcJXM6IG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBj bWQpOwogCQkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCX0KIAkJCWVsc2UKQEAgLTE4MTQsNyAr MTgxNCw3IEBAIGV4ZWNfY29tbWFuZF9wYXNzd29yZChQc3FsU2NhblN0YXRlIHNjYW5fc3Rh dGUsIGJvb2wgYWN0aXZlX2JyYW5jaCkKIAogCQlpZiAoc3RyY21wKHB3MSwgcHcyKSAhPSAw KQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJQYXNzd29yZHMgZGlkbid0IG1hdGNoLlxuIik7CisJ CQlwZ19sb2dfZXJyb3IoIlBhc3N3b3JkcyBkaWRuJ3QgbWF0Y2guIik7CiAJCQlzdWNjZXNz ID0gZmFsc2U7CiAJCX0KIAkJZWxzZQpAQCAtMTgzMSw3ICsxODMxLDcgQEAgZXhlY19jb21t YW5kX3Bhc3N3b3JkKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJh bmNoKQogCiAJCQlpZiAoIWVuY3J5cHRlZF9wYXNzd29yZCkKIAkJCXsKLQkJCQlwc3FsX2Vy cm9yKCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKKwkJCQlwZ19sb2dfZXJyb3Io IiVzIiwgUFFlcnJvck1lc3NhZ2UocHNldC5kYikpOwogCQkJCXN1Y2Nlc3MgPSBmYWxzZTsK IAkJCX0KIAkJCWVsc2UKQEAgLTE4ODMsNyArMTg4Myw3IEBAIGV4ZWNfY29tbWFuZF9wcm9t cHQoUHNxbFNjYW5TdGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsCiAKIAkJ aWYgKCFhcmcxKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXCVzOiBtaXNzaW5nIHJlcXVpcmVk IGFyZ3VtZW50XG4iLCBjbWQpOworCQkJcGdfbG9nX2Vycm9yKCJcXCVzOiBtaXNzaW5nIHJl cXVpcmVkIGFyZ3VtZW50IiwgY21kKTsKIAkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJfQogCQll bHNlCkBAIC0xOTEzLDcgKzE5MTMsNyBAQCBleGVjX2NvbW1hbmRfcHJvbXB0KFBzcWxTY2Fu U3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCQkJCXJlc3VsdCA9IGdl dHNfZnJvbUZpbGUoc3RkaW4pOwogCQkJCWlmICghcmVzdWx0KQogCQkJCXsKLQkJCQkJcHNx bF9lcnJvcigiXFwlczogY291bGQgbm90IHJlYWQgdmFsdWUgZm9yIHZhcmlhYmxlXG4iLAor CQkJCQlwZ19sb2dfZXJyb3IoIlxcJXM6IGNvdWxkIG5vdCByZWFkIHZhbHVlIGZvciB2YXJp YWJsZSIsCiAJCQkJCQkJICAgY21kKTsKIAkJCQkJc3VjY2VzcyA9IGZhbHNlOwogCQkJCX0K QEAgLTIxMjAsMTIgKzIxMjAsMTIgQEAgZXhlY19jb21tYW5kX3NldGVudihQc3FsU2NhblN0 YXRlIHNjYW5fc3RhdGUsIGJvb2wgYWN0aXZlX2JyYW5jaCwKIAogCQlpZiAoIWVudnZhcikK IAkJewotCQkJcHNxbF9lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudFxu IiwgY21kKTsKKwkJCXBnX2xvZ19lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1 bWVudCIsIGNtZCk7CiAJCQlzdWNjZXNzID0gZmFsc2U7CiAJCX0KIAkJZWxzZSBpZiAoc3Ry Y2hyKGVudnZhciwgJz0nKSAhPSBOVUxMKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXCVzOiBl bnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIG11c3Qgbm90IGNvbnRhaW4gXCI9XCJcbiIsCisJ CQlwZ19sb2dfZXJyb3IoIlxcJXM6IGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUgbXVzdCBu b3QgY29udGFpbiBcIj1cIiIsCiAJCQkJCSAgIGNtZCk7CiAJCQlzdWNjZXNzID0gZmFsc2U7 CiAJCX0KQEAgLTIxODYsMTkgKzIxODYsMTkgQEAgZXhlY19jb21tYW5kX3NmX3N2KFBzcWxT Y2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCQkJZm9ybWF0UEdW ZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkgIHN2ZXJidWYs IHNpemVvZihzdmVyYnVmKSk7CiAJCQlpZiAoaXNfZnVuYykKLQkJCQlwc3FsX2Vycm9yKCJU aGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IHNob3dpbmcgZnVuY3Rp b24gc291cmNlLlxuIiwKKwkJCQlwZ19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24g JXMpIGRvZXMgbm90IHN1cHBvcnQgc2hvd2luZyBmdW5jdGlvbiBzb3VyY2UuIiwKIAkJCQkJ CSAgIHN2ZXJidWYpOwogCQkJZWxzZQotCQkJCXBzcWxfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZl cnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgc2hvd2luZyB2aWV3IGRlZmluaXRpb25zLlxu IiwKKwkJCQlwZ19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90 IHN1cHBvcnQgc2hvd2luZyB2aWV3IGRlZmluaXRpb25zLiIsCiAJCQkJCQkgICBzdmVyYnVm KTsKIAkJCXN0YXR1cyA9IFBTUUxfQ01EX0VSUk9SOwogCQl9CiAJCWVsc2UgaWYgKCFvYmpf ZGVzYykKIAkJewogCQkJaWYgKGlzX2Z1bmMpCi0JCQkJcHNxbF9lcnJvcigiZnVuY3Rpb24g bmFtZSBpcyByZXF1aXJlZFxuIik7CisJCQkJcGdfbG9nX2Vycm9yKCJmdW5jdGlvbiBuYW1l IGlzIHJlcXVpcmVkIik7CiAJCQllbHNlCi0JCQkJcHNxbF9lcnJvcigidmlldyBuYW1lIGlz IHJlcXVpcmVkXG4iKTsKKwkJCQlwZ19sb2dfZXJyb3IoInZpZXcgbmFtZSBpcyByZXF1aXJl ZCIpOwogCQkJc3RhdHVzID0gUFNRTF9DTURfRVJST1I7CiAJCX0KIAkJZWxzZSBpZiAoIWxv b2t1cF9vYmplY3Rfb2lkKGVvdCwgb2JqX2Rlc2MsICZvYmpfb2lkKSkKQEAgLTIzNTYsNyAr MjM1Niw3IEBAIGV4ZWNfY29tbWFuZF91bnNldChQc3FsU2NhblN0YXRlIHNjYW5fc3RhdGUs IGJvb2wgYWN0aXZlX2JyYW5jaCwKIAogCQlpZiAoIW9wdCkKIAkJewotCQkJcHNxbF9lcnJv cigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudFxuIiwgY21kKTsKKwkJCXBnX2xv Z19lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCIsIGNtZCk7CiAJCQlz dWNjZXNzID0gZmFsc2U7CiAJCX0KIAkJZWxzZSBpZiAoIVNldFZhcmlhYmxlKHBzZXQudmFy cywgb3B0LCBOVUxMKSkKQEAgLTIzODksMTQgKzIzODksMTQgQEAgZXhlY19jb21tYW5kX3dy aXRlKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9vbCBhY3RpdmVfYnJhbmNoLAogCiAJ CWlmICghcXVlcnlfYnVmKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJubyBxdWVyeSBidWZmZXJc biIpOworCQkJcGdfbG9nX2Vycm9yKCJubyBxdWVyeSBidWZmZXIiKTsKIAkJCXN0YXR1cyA9 IFBTUUxfQ01EX0VSUk9SOwogCQl9CiAJCWVsc2UKIAkJewogCQkJaWYgKCFmbmFtZSkKIAkJ CXsKLQkJCQlwc3FsX2Vycm9yKCJcXCVzOiBtaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50XG4i LCBjbWQpOworCQkJCXBnX2xvZ19lcnJvcigiXFwlczogbWlzc2luZyByZXF1aXJlZCBhcmd1 bWVudCIsIGNtZCk7CiAJCQkJc3RhdHVzID0gUFNRTF9DTURfRVJST1I7CiAJCQl9CiAJCQll bHNlCkBAIC0yNDE1LDcgKzI0MTUsNyBAQCBleGVjX2NvbW1hbmRfd3JpdGUoUHNxbFNjYW5T dGF0ZSBzY2FuX3N0YXRlLCBib29sIGFjdGl2ZV9icmFuY2gsCiAJCQkJfQogCQkJCWlmICgh ZmQpCiAJCQkJewotCQkJCQlwc3FsX2Vycm9yKCIlczogJXNcbiIsIGZuYW1lLCBzdHJlcnJv cihlcnJubykpOworCQkJCQlwZ19sb2dfZXJyb3IoIiVzOiAlbSIsIGZuYW1lKTsKIAkJCQkJ c3RhdHVzID0gUFNRTF9DTURfRVJST1I7CiAJCQkJfQogCQkJfQpAQCAtMjQ0Myw3ICsyNDQz LDcgQEAgZXhlY19jb21tYW5kX3dyaXRlKFBzcWxTY2FuU3RhdGUgc2Nhbl9zdGF0ZSwgYm9v bCBhY3RpdmVfYnJhbmNoLAogCiAJCQlpZiAocmVzdWx0ID09IEVPRikKIAkJCXsKLQkJCQlw c3FsX2Vycm9yKCIlczogJXNcbiIsIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJCXBn X2xvZ19lcnJvcigiJXM6ICVtIiwgZm5hbWUpOwogCQkJCXN0YXR1cyA9IFBTUUxfQ01EX0VS Uk9SOwogCQkJfQogCQl9CkBAIC0yODgzLDggKzI4ODMsOCBAQCBkb19jb25uZWN0KGVudW0g dHJpdmFsdWUgcmV1c2VfcHJldmlvdXNfc3BlY2lmaWNhdGlvbiwKIAkJICogY29ubmVjdCB0 byB0aGUgd3JvbmcgZGF0YWJhc2UgYnkgdXNpbmcgZGVmYXVsdHMsIHNvIHJlcXVpcmUgYWxs CiAJCSAqIHBhcmFtZXRlcnMgdG8gYmUgc3BlY2lmaWVkLgogCQkgKi8KLQkJcHNxbF9lcnJv cigiQWxsIGNvbm5lY3Rpb24gcGFyYW1ldGVycyBtdXN0IGJlIHN1cHBsaWVkIGJlY2F1c2Ug bm8gIgotCQkJCSAgICJkYXRhYmFzZSBjb25uZWN0aW9uIGV4aXN0c1xuIik7CisJCXBnX2xv Z19lcnJvcigiQWxsIGNvbm5lY3Rpb24gcGFyYW1ldGVycyBtdXN0IGJlIHN1cHBsaWVkIGJl Y2F1c2Ugbm8gIgorCQkJCQkgImRhdGFiYXNlIGNvbm5lY3Rpb24gZXhpc3RzIik7CiAJCXJl dHVybiBmYWxzZTsKIAl9CiAKQEAgLTMwNjcsMTUgKzMwNjcsMTUgQEAgZG9fY29ubmVjdChl bnVtIHRyaXZhbHVlIHJldXNlX3ByZXZpb3VzX3NwZWNpZmljYXRpb24sCiAJCSAqLwogCQlp ZiAocHNldC5jdXJfY21kX2ludGVyYWN0aXZlKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCIlcyIs IFBRZXJyb3JNZXNzYWdlKG5fY29ubikpOworCQkJcGdfbG9nX2Vycm9yKCIlcyIsIFBRZXJy b3JNZXNzYWdlKG5fY29ubikpOwogCiAJCQkvKiBwc2V0LmRiIGlzIGxlZnQgdW5tb2RpZmll ZCAqLwogCQkJaWYgKG9fY29ubikKLQkJCQlwc3FsX2Vycm9yKCJQcmV2aW91cyBjb25uZWN0 aW9uIGtlcHRcbiIpOworCQkJCXBnX2xvZ19lcnJvcigiUHJldmlvdXMgY29ubmVjdGlvbiBr ZXB0Iik7CiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXGNvbm5lY3Q6ICVz IiwgUFFlcnJvck1lc3NhZ2Uobl9jb25uKSk7CisJCQlwZ19sb2dfZXJyb3IoIlxcY29ubmVj dDogJXMiLCBQUWVycm9yTWVzc2FnZShuX2Nvbm4pKTsKIAkJCWlmIChvX2Nvbm4pCiAJCQl7 CiAJCQkJUFFmaW5pc2gob19jb25uKTsKQEAgLTMzMzcsNyArMzMzNyw3IEBAIGVkaXRGaWxl KGNvbnN0IGNoYXIgKmZuYW1lLCBpbnQgbGluZW5vKQogI2VuZGlmCiAJCWlmICghZWRpdG9y X2xpbmVub19hcmcpCiAJCXsKLQkJCXBzcWxfZXJyb3IoImVudmlyb25tZW50IHZhcmlhYmxl IFBTUUxfRURJVE9SX0xJTkVOVU1CRVJfQVJHIG11c3QgYmUgc2V0IHRvIHNwZWNpZnkgYSBs aW5lIG51bWJlclxuIik7CisJCQlwZ19sb2dfZXJyb3IoImVudmlyb25tZW50IHZhcmlhYmxl IFBTUUxfRURJVE9SX0xJTkVOVU1CRVJfQVJHIG11c3QgYmUgc2V0IHRvIHNwZWNpZnkgYSBs aW5lIG51bWJlciIpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQpAQCAtMzM2Niw5ICsz MzY2LDkgQEAgZWRpdEZpbGUoY29uc3QgY2hhciAqZm5hbWUsIGludCBsaW5lbm8pCiAjZW5k aWYKIAlyZXN1bHQgPSBzeXN0ZW0oc3lzKTsKIAlpZiAocmVzdWx0ID09IC0xKQotCQlwc3Fs X2Vycm9yKCJjb3VsZCBub3Qgc3RhcnQgZWRpdG9yIFwiJXNcIlxuIiwgZWRpdG9yTmFtZSk7 CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHN0YXJ0IGVkaXRvciBcIiVzXCIiLCBlZGl0 b3JOYW1lKTsKIAllbHNlIGlmIChyZXN1bHQgPT0gMTI3KQotCQlwc3FsX2Vycm9yKCJjb3Vs ZCBub3Qgc3RhcnQgL2Jpbi9zaFxuIik7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHN0 YXJ0IC9iaW4vc2giKTsKIAlmcmVlKHN5cyk7CiAKIAlyZXR1cm4gcmVzdWx0ID09IDA7CkBA IC0zNDA2LDcgKzM0MDYsNyBAQCBkb19lZGl0KGNvbnN0IGNoYXIgKmZpbGVuYW1lX2FyZywg UFFFeHBCdWZmZXIgcXVlcnlfYnVmLAogCQlyZXQgPSBHZXRUZW1wUGF0aChNQVhQR1BBVEgs IHRtcGRpcik7CiAJCWlmIChyZXQgPT0gMCB8fCByZXQgPiBNQVhQR1BBVEgpCiAJCXsKLQkJ CXBzcWxfZXJyb3IoImNvdWxkIG5vdCBsb2NhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeTogJXNc biIsCisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBsb2NhdGUgdGVtcG9yYXJ5IGRpcmVj dG9yeTogJXMiLAogCQkJCQkgICAhcmV0ID8gc3RyZXJyb3IoZXJybm8pIDogIiIpOwogCQkJ cmV0dXJuIGZhbHNlOwogCQl9CkBAIC0zNDMzLDcgKzM0MzMsNyBAQCBkb19lZGl0KGNvbnN0 IGNoYXIgKmZpbGVuYW1lX2FyZywgUFFFeHBCdWZmZXIgcXVlcnlfYnVmLAogCiAJCWlmIChm ZCA9PSAtMSB8fCAhc3RyZWFtKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJjb3VsZCBub3Qgb3Bl biB0ZW1wb3JhcnkgZmlsZSBcIiVzXCI6ICVzXG4iLCBmbmFtZSwgc3RyZXJyb3IoZXJybm8p KTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9wZW4gdGVtcG9yYXJ5IGZpbGUgXCIl c1wiOiAlbSIsIGZuYW1lKTsKIAkJCWVycm9yID0gdHJ1ZTsKIAkJfQogCQllbHNlCkBAIC0z NDQ4LDIxICszNDQ4LDIxIEBAIGRvX2VkaXQoY29uc3QgY2hhciAqZmlsZW5hbWVfYXJnLCBQ UUV4cEJ1ZmZlciBxdWVyeV9idWYsCiAKIAkJCWlmIChmd3JpdGUocXVlcnlfYnVmLT5kYXRh LCAxLCBxbCwgc3RyZWFtKSAhPSBxbCkKIAkJCXsKLQkJCQlwc3FsX2Vycm9yKCIlczogJXNc biIsIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJCXBnX2xvZ19lcnJvcigiJXM6ICVt IiwgZm5hbWUpOwogCiAJCQkJaWYgKGZjbG9zZShzdHJlYW0pICE9IDApCi0JCQkJCXBzcWxf ZXJyb3IoIiVzOiAlc1xuIiwgZm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJCXBnX2xv Z19lcnJvcigiJXM6ICVtIiwgZm5hbWUpOwogCiAJCQkJaWYgKHJlbW92ZShmbmFtZSkgIT0g MCkKLQkJCQkJcHNxbF9lcnJvcigiJXM6ICVzXG4iLCBmbmFtZSwgc3RyZXJyb3IoZXJybm8p KTsKKwkJCQkJcGdfbG9nX2Vycm9yKCIlczogJW0iLCBmbmFtZSk7CiAKIAkJCQllcnJvciA9 IHRydWU7CiAJCQl9CiAJCQllbHNlIGlmIChmY2xvc2Uoc3RyZWFtKSAhPSAwKQogCQkJewot CQkJCXBzcWxfZXJyb3IoIiVzOiAlc1xuIiwgZm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJ CQkJcGdfbG9nX2Vycm9yKCIlczogJW0iLCBmbmFtZSk7CiAJCQkJaWYgKHJlbW92ZShmbmFt ZSkgIT0gMCkKLQkJCQkJcHNxbF9lcnJvcigiJXM6ICVzXG4iLCBmbmFtZSwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJCQkJcGdfbG9nX2Vycm9yKCIlczogJW0iLCBmbmFtZSk7CiAJCQkJZXJy b3IgPSB0cnVlOwogCQkJfQogCQl9CkBAIC0zNDcwLDcgKzM0NzAsNyBAQCBkb19lZGl0KGNv bnN0IGNoYXIgKmZpbGVuYW1lX2FyZywgUFFFeHBCdWZmZXIgcXVlcnlfYnVmLAogCiAJaWYg KCFlcnJvciAmJiBzdGF0KGZuYW1lLCAmYmVmb3JlKSAhPSAwKQogCXsKLQkJcHNxbF9lcnJv cigiJXM6ICVzXG4iLCBmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9y KCIlczogJW0iLCBmbmFtZSk7CiAJCWVycm9yID0gdHJ1ZTsKIAl9CiAKQEAgLTM0ODAsNyAr MzQ4MCw3IEBAIGRvX2VkaXQoY29uc3QgY2hhciAqZmlsZW5hbWVfYXJnLCBQUUV4cEJ1ZmZl ciBxdWVyeV9idWYsCiAKIAlpZiAoIWVycm9yICYmIHN0YXQoZm5hbWUsICZhZnRlcikgIT0g MCkKIAl7Ci0JCXBzcWxfZXJyb3IoIiVzOiAlc1xuIiwgZm5hbWUsIHN0cmVycm9yKGVycm5v KSk7CisJCXBnX2xvZ19lcnJvcigiJXM6ICVtIiwgZm5hbWUpOwogCQllcnJvciA9IHRydWU7 CiAJfQogCkBAIC0zNDg5LDcgKzM0ODksNyBAQCBkb19lZGl0KGNvbnN0IGNoYXIgKmZpbGVu YW1lX2FyZywgUFFFeHBCdWZmZXIgcXVlcnlfYnVmLAogCQlzdHJlYW0gPSBmb3BlbihmbmFt ZSwgUEdfQklOQVJZX1IpOwogCQlpZiAoIXN0cmVhbSkKIAkJewotCQkJcHNxbF9lcnJvcigi JXM6ICVzXG4iLCBmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigi JXM6ICVtIiwgZm5hbWUpOwogCQkJZXJyb3IgPSB0cnVlOwogCQl9CiAJCWVsc2UKQEAgLTM1 MDMsNyArMzUwMyw3IEBAIGRvX2VkaXQoY29uc3QgY2hhciAqZmlsZW5hbWVfYXJnLCBQUUV4 cEJ1ZmZlciBxdWVyeV9idWYsCiAKIAkJCWlmIChmZXJyb3Ioc3RyZWFtKSkKIAkJCXsKLQkJ CQlwc3FsX2Vycm9yKCIlczogJXNcbiIsIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJ CXBnX2xvZ19lcnJvcigiJXM6ICVtIiwgZm5hbWUpOwogCQkJCWVycm9yID0gdHJ1ZTsKIAkJ CX0KIAkJCWVsc2UgaWYgKGVkaXRlZCkKQEAgLTM1MjAsNyArMzUyMCw3IEBAIGRvX2VkaXQo Y29uc3QgY2hhciAqZmlsZW5hbWVfYXJnLCBQUUV4cEJ1ZmZlciBxdWVyeV9idWYsCiAJewog CQlpZiAocmVtb3ZlKGZuYW1lKSA9PSAtMSkKIAkJewotCQkJcHNxbF9lcnJvcigiJXM6ICVz XG4iLCBmbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiJXM6ICVt IiwgZm5hbWUpOwogCQkJZXJyb3IgPSB0cnVlOwogCQl9CiAJfQpAQCAtMzU3OCw3ICszNTc4 LDcgQEAgcHJvY2Vzc19maWxlKGNoYXIgKmZpbGVuYW1lLCBib29sIHVzZV9yZWxhdGl2ZV9w YXRoKQogCiAJCWlmICghZmQpCiAJCXsKLQkJCXBzcWxfZXJyb3IoIiVzOiAlc1xuIiwgZmls ZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJyb3IoIiVzOiAlbSIsIGZp bGVuYW1lKTsKIAkJCXJldHVybiBFWElUX0ZBSUxVUkU7CiAJCX0KIAl9CkBAIC0zNTkxLDEy ICszNTkxLDE3IEBAIHByb2Nlc3NfZmlsZShjaGFyICpmaWxlbmFtZSwgYm9vbCB1c2VfcmVs YXRpdmVfcGF0aCkKIAlvbGRmaWxlbmFtZSA9IHBzZXQuaW5wdXRmaWxlOwogCXBzZXQuaW5w dXRmaWxlID0gZmlsZW5hbWU7CiAKKwlwZ19sb2dnaW5nX2NvbmZpZyhwc2V0LmlucHV0Zmls ZSA/IDAgOiBQR19MT0dfRkxBR19URVJTRSk7CisKIAlyZXN1bHQgPSBNYWluTG9vcChmZCk7 CiAKIAlpZiAoZmQgIT0gc3RkaW4pCiAJCWZjbG9zZShmZCk7CiAKIAlwc2V0LmlucHV0Zmls ZSA9IG9sZGZpbGVuYW1lOworCisJcGdfbG9nZ2luZ19jb25maWcocHNldC5pbnB1dGZpbGUg PyAwIDogUEdfTE9HX0ZMQUdfVEVSU0UpOworCiAJcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAt MzcyMSw3ICszNzI2LDcgQEAgZG9fcHNldChjb25zdCBjaGFyICpwYXJhbSwgY29uc3QgY2hh ciAqdmFsdWUsIHByaW50UXVlcnlPcHQgKnBvcHQsIGJvb2wgcXVpZXQpCiAJCQkJCQltYXRj aF9wb3MgPSBpOwogCQkJCQllbHNlCiAJCQkJCXsKLQkJCQkJCXBzcWxfZXJyb3IoIlxccHNl dDogYW1iaWd1b3VzIGFiYnJldmlhdGlvbiBcIiVzXCIgbWF0Y2hlcyBib3RoIFwiJXNcIiBh bmQgXCIlc1wiXG4iLAorCQkJCQkJcGdfbG9nX2Vycm9yKCJcXHBzZXQ6IGFtYmlndW91cyBh YmJyZXZpYXRpb24gXCIlc1wiIG1hdGNoZXMgYm90aCBcIiVzXCIgYW5kIFwiJXNcIiIsCiAJ CQkJCQkJCSAgIHZhbHVlLAogCQkJCQkJCQkgICBmb3JtYXRzW21hdGNoX3Bvc10ubmFtZSwg Zm9ybWF0c1tpXS5uYW1lKTsKIAkJCQkJCXJldHVybiBmYWxzZTsKQEAgLTM3NDEsNyArMzc0 Niw3IEBAIGRvX3BzZXQoY29uc3QgY2hhciAqcGFyYW0sIGNvbnN0IGNoYXIgKnZhbHVlLCBw cmludFF1ZXJ5T3B0ICpwb3B0LCBib29sIHF1aWV0KQogCQkJfQogCQkJZWxzZQogCQkJewot CQkJCXBzcWxfZXJyb3IoIlxccHNldDogYWxsb3dlZCBmb3JtYXRzIGFyZSBhbGlnbmVkLCBh c2NpaWRvYywgY3N2LCBodG1sLCBsYXRleCwgbGF0ZXgtbG9uZ3RhYmxlLCB0cm9mZi1tcywg dW5hbGlnbmVkLCB3cmFwcGVkXG4iKTsKKwkJCQlwZ19sb2dfZXJyb3IoIlxccHNldDogYWxs b3dlZCBmb3JtYXRzIGFyZSBhbGlnbmVkLCBhc2NpaWRvYywgY3N2LCBodG1sLCBsYXRleCwg bGF0ZXgtbG9uZ3RhYmxlLCB0cm9mZi1tcywgdW5hbGlnbmVkLCB3cmFwcGVkIik7CiAJCQkJ cmV0dXJuIGZhbHNlOwogCQkJfQogCQl9CkBAIC0zNzYwLDcgKzM3NjUsNyBAQCBkb19wc2V0 KGNvbnN0IGNoYXIgKnBhcmFtLCBjb25zdCBjaGFyICp2YWx1ZSwgcHJpbnRRdWVyeU9wdCAq cG9wdCwgYm9vbCBxdWlldCkKIAkJCXBvcHQtPnRvcHQubGluZV9zdHlsZSA9ICZwZ191dGY4 Zm9ybWF0OwogCQllbHNlCiAJCXsKLQkJCXBzcWxfZXJyb3IoIlxccHNldDogYWxsb3dlZCBs aW5lIHN0eWxlcyBhcmUgYXNjaWksIG9sZC1hc2NpaSwgdW5pY29kZVxuIik7CisJCQlwZ19s b2dfZXJyb3IoIlxccHNldDogYWxsb3dlZCBsaW5lIHN0eWxlcyBhcmUgYXNjaWksIG9sZC1h c2NpaSwgdW5pY29kZSIpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQpAQCAtMzc3NSw3 ICszNzgwLDcgQEAgZG9fcHNldChjb25zdCBjaGFyICpwYXJhbSwgY29uc3QgY2hhciAqdmFs dWUsIHByaW50UXVlcnlPcHQgKnBvcHQsIGJvb2wgcXVpZXQpCiAJCQlyZWZyZXNoX3V0Zjhm b3JtYXQoJihwb3B0LT50b3B0KSk7CiAJCWVsc2UKIAkJewotCQkJcHNxbF9lcnJvcigiXFxw c2V0OiBhbGxvd2VkIFVuaWNvZGUgYm9yZGVyIGxpbmUgc3R5bGVzIGFyZSBzaW5nbGUsIGRv dWJsZVxuIik7CisJCQlwZ19sb2dfZXJyb3IoIlxccHNldDogYWxsb3dlZCBVbmljb2RlIGJv cmRlciBsaW5lIHN0eWxlcyBhcmUgc2luZ2xlLCBkb3VibGUiKTsKIAkJCXJldHVybiBmYWxz ZTsKIAkJfQogCX0KQEAgLTM3OTAsNyArMzc5NSw3IEBAIGRvX3BzZXQoY29uc3QgY2hhciAq cGFyYW0sIGNvbnN0IGNoYXIgKnZhbHVlLCBwcmludFF1ZXJ5T3B0ICpwb3B0LCBib29sIHF1 aWV0KQogCQkJcmVmcmVzaF91dGY4Zm9ybWF0KCYocG9wdC0+dG9wdCkpOwogCQllbHNlCiAJ CXsKLQkJCXBzcWxfZXJyb3IoIlxccHNldDogYWxsb3dlZCBVbmljb2RlIGNvbHVtbiBsaW5l IHN0eWxlcyBhcmUgc2luZ2xlLCBkb3VibGVcbiIpOworCQkJcGdfbG9nX2Vycm9yKCJcXHBz ZXQ6IGFsbG93ZWQgVW5pY29kZSBjb2x1bW4gbGluZSBzdHlsZXMgYXJlIHNpbmdsZSwgZG91 YmxlIik7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAl9CkBAIC0zODA1LDcgKzM4MTAsNyBA QCBkb19wc2V0KGNvbnN0IGNoYXIgKnBhcmFtLCBjb25zdCBjaGFyICp2YWx1ZSwgcHJpbnRR dWVyeU9wdCAqcG9wdCwgYm9vbCBxdWlldCkKIAkJCXJlZnJlc2hfdXRmOGZvcm1hdCgmKHBv cHQtPnRvcHQpKTsKIAkJZWxzZQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJcXHBzZXQ6IGFsbG93 ZWQgVW5pY29kZSBoZWFkZXIgbGluZSBzdHlsZXMgYXJlIHNpbmdsZSwgZG91YmxlXG4iKTsK KwkJCXBnX2xvZ19lcnJvcigiXFxwc2V0OiBhbGxvd2VkIFVuaWNvZGUgaGVhZGVyIGxpbmUg c3R5bGVzIGFyZSBzaW5nbGUsIGRvdWJsZSIpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJ fQpAQCAtMzg0OCwxMiArMzg1MywxMiBAQCBkb19wc2V0KGNvbnN0IGNoYXIgKnBhcmFtLCBj b25zdCBjaGFyICp2YWx1ZSwgcHJpbnRRdWVyeU9wdCAqcG9wdCwgYm9vbCBxdWlldCkKIAkJ CS8qIENTViBzZXBhcmF0b3IgaGFzIHRvIGJlIGEgb25lLWJ5dGUgY2hhcmFjdGVyICovCiAJ CQlpZiAoc3RybGVuKHZhbHVlKSAhPSAxKQogCQkJewotCQkJCXBzcWxfZXJyb3IoIlxccHNl dDogY3N2X2ZpZWxkc2VwIG11c3QgYmUgYSBzaW5nbGUgb25lLWJ5dGUgY2hhcmFjdGVyXG4i KTsKKwkJCQlwZ19sb2dfZXJyb3IoIlxccHNldDogY3N2X2ZpZWxkc2VwIG11c3QgYmUgYSBz aW5nbGUgb25lLWJ5dGUgY2hhcmFjdGVyIik7CiAJCQkJcmV0dXJuIGZhbHNlOwogCQkJfQog CQkJaWYgKHZhbHVlWzBdID09ICciJyB8fCB2YWx1ZVswXSA9PSAnXG4nIHx8IHZhbHVlWzBd ID09ICdccicpCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigiXFxwc2V0OiBjc3ZfZmllbGRzZXAg Y2Fubm90IGJlIGEgZG91YmxlIHF1b3RlLCBhIG5ld2xpbmUsIG9yIGEgY2FycmlhZ2UgcmV0 dXJuXG4iKTsKKwkJCQlwZ19sb2dfZXJyb3IoIlxccHNldDogY3N2X2ZpZWxkc2VwIGNhbm5v dCBiZSBhIGRvdWJsZSBxdW90ZSwgYSBuZXdsaW5lLCBvciBhIGNhcnJpYWdlIHJldHVybiIp OwogCQkJCXJldHVybiBmYWxzZTsKIAkJCX0KIAkJCXBvcHQtPnRvcHQuY3N2RmllbGRTZXBb MF0gPSB2YWx1ZVswXTsKQEAgLTM5OTAsNyArMzk5NSw3IEBAIGRvX3BzZXQoY29uc3QgY2hh ciAqcGFyYW0sIGNvbnN0IGNoYXIgKnZhbHVlLCBwcmludFF1ZXJ5T3B0ICpwb3B0LCBib29s IHF1aWV0KQogCX0KIAllbHNlCiAJewotCQlwc3FsX2Vycm9yKCJcXHBzZXQ6IHVua25vd24g b3B0aW9uOiAlc1xuIiwgcGFyYW0pOworCQlwZ19sb2dfZXJyb3IoIlxccHNldDogdW5rbm93 biBvcHRpb246ICVzIiwgcGFyYW0pOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC00MTc2 LDcgKzQxODEsNyBAQCBwcmludFBzZXRJbmZvKGNvbnN0IGNoYXIgKnBhcmFtLCBzdHJ1Y3Qg cHJpbnRRdWVyeU9wdCAqcG9wdCkKIAogCWVsc2UKIAl7Ci0JCXBzcWxfZXJyb3IoIlxccHNl dDogdW5rbm93biBvcHRpb246ICVzXG4iLCBwYXJhbSk7CisJCXBnX2xvZ19lcnJvcigiXFxw c2V0OiB1bmtub3duIG9wdGlvbjogJXMiLCBwYXJhbSk7CiAJCXJldHVybiBmYWxzZTsKIAl9 CiAKQEAgLTQzMzIsNyArNDMzNyw3IEBAIGRvX3NoZWxsKGNvbnN0IGNoYXIgKmNvbW1hbmQp CiAKIAlpZiAocmVzdWx0ID09IDEyNyB8fCByZXN1bHQgPT0gLTEpCiAJewotCQlwc3FsX2Vy cm9yKCJcXCE6IGZhaWxlZFxuIik7CisJCXBnX2xvZ19lcnJvcigiXFwhOiBmYWlsZWQiKTsK IAkJcmV0dXJuIGZhbHNlOwogCX0KIAlyZXR1cm4gdHJ1ZTsKQEAgLTQzNTcsNyArNDM2Miw3 IEBAIGRvX3dhdGNoKFBRRXhwQnVmZmVyIHF1ZXJ5X2J1ZiwgZG91YmxlIHNsZWVwKQogCiAJ aWYgKCFxdWVyeV9idWYgfHwgcXVlcnlfYnVmLT5sZW4gPD0gMCkKIAl7Ci0JCXBzcWxfZXJy b3IoIlxcd2F0Y2ggY2Fubm90IGJlIHVzZWQgd2l0aCBhbiBlbXB0eSBxdWVyeVxuIik7CisJ CXBnX2xvZ19lcnJvcigiXFx3YXRjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIGFuIGVtcHR5IHF1 ZXJ5Iik7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTQ2NTQsNyArNDY1OSw3IEBAIGdl dF9jcmVhdGVfb2JqZWN0X2NtZChFZGl0YWJsZU9iamVjdFR5cGUgb2JqX3R5cGUsIE9pZCBv aWQsCiAJCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoYnVmLCAiQ1JFQVRFIE9SIFJFUExB Q0UgVklFVyAiKTsKIAkJCQkJCQlicmVhazsKIAkJCQkJCWRlZmF1bHQ6Ci0JCQkJCQkJcHNx bF9lcnJvcigiXCIlcy4lc1wiIGlzIG5vdCBhIHZpZXdcbiIsCisJCQkJCQkJcGdfbG9nX2Vy cm9yKCJcIiVzLiVzXCIgaXMgbm90IGEgdmlldyIsCiAJCQkJCQkJCQkgICBuc3BuYW1lLCBy ZWxuYW1lKTsKIAkJCQkJCQlyZXN1bHQgPSBmYWxzZTsKIAkJCQkJCQlicmVhazsKQEAgLTQ2 NzAsNyArNDY3NSw3IEBAIGdldF9jcmVhdGVfb2JqZWN0X2NtZChFZGl0YWJsZU9iamVjdFR5 cGUgb2JqX3R5cGUsIE9pZCBvaWQsCiAJCQkJCQkJCQkJCQkgICBwc2V0LmVuY29kaW5nLAog CQkJCQkJCQkJCQkJICAgc3RhbmRhcmRfc3RyaW5ncygpKSkKIAkJCQkJCXsKLQkJCQkJCQlw c3FsX2Vycm9yKCJjb3VsZCBub3QgcGFyc2UgcmVsb3B0aW9ucyBhcnJheVxuIik7CisJCQkJ CQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcGFyc2UgcmVsb3B0aW9ucyBhcnJheSIpOwog CQkJCQkJCXJlc3VsdCA9IGZhbHNlOwogCQkJCQkJfQogCQkJCQkJYXBwZW5kUFFFeHBCdWZm ZXJDaGFyKGJ1ZiwgJyknKTsKQEAgLTQ3NTksNyArNDc2NCw3IEBAIHN0cmlwX2xpbmVub19m cm9tX29iamRlc2MoY2hhciAqb2JqKQogCWxpbmVubyA9IGF0b2koYyk7CiAJaWYgKGxpbmVu byA8IDEpCiAJewotCQlwc3FsX2Vycm9yKCJpbnZhbGlkIGxpbmUgbnVtYmVyOiAlc1xuIiwg Yyk7CisJCXBnX2xvZ19lcnJvcigiaW52YWxpZCBsaW5lIG51bWJlcjogJXMiLCBjKTsKIAkJ cmV0dXJuIDA7CiAJfQogCkBAIC00ODYxLDcgKzQ4NjYsNyBAQCBtaW5pbWFsX2Vycm9yX21l c3NhZ2UoUEdyZXN1bHQgKnJlcykKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIobXNnLCAiKG5v dCBhdmFpbGFibGUpIik7CiAJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKG1zZywgJ1xuJyk7CiAK LQlwc3FsX2Vycm9yKCIlcyIsIG1zZy0+ZGF0YSk7CisJcGdfbG9nX2Vycm9yKCIlcyIsIG1z Zy0+ZGF0YSk7CiAKIAlkZXN0cm95UFFFeHBCdWZmZXIobXNnKTsKIH0KZGlmZiAtLWdpdCBh L3NyYy9iaW4vcHNxbC9jb21tb24uYyBiL3NyYy9iaW4vcHNxbC9jb21tb24uYwppbmRleCA1 ZDg2MzRkODE4Li5mM2QzZDBiYzRjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvY29tbW9u LmMKKysrIGIvc3JjL2Jpbi9wc3FsL2NvbW1vbi5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5j bHVkZSA8d2luMzIuaD4KICNlbmRpZgogCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5o IgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogI2luY2x1ZGUgInBvcnRh YmlsaXR5L2luc3RyX3RpbWUuaCIKIApAQCAtNjcsNyArNjgsNyBAQCBvcGVuUXVlcnlPdXRw dXRGaWxlKGNvbnN0IGNoYXIgKmZuYW1lLCBGSUxFICoqZm91dCwgYm9vbCAqaXNfcGlwZSkK IAogCWlmICgqZm91dCA9PSBOVUxMKQogCXsKLQkJcHNxbF9lcnJvcigiJXM6ICVzXG4iLCBm bmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCIlczogJW0iLCBmbmFt ZSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTE1Niw3ICsxNTcsNyBAQCBwc3FsX2dl dF92YXJpYWJsZShjb25zdCBjaGFyICp2YXJuYW1lLCBQc3FsU2NhblF1b3RlVHlwZSBxdW90 ZSwKIAogCQkJCWlmICghcHNldC5kYikKIAkJCQl7Ci0JCQkJCXBzcWxfZXJyb3IoImNhbm5v dCBlc2NhcGUgd2l0aG91dCBhY3RpdmUgY29ubmVjdGlvblxuIik7CisJCQkJCXBnX2xvZ19l cnJvcigiY2Fubm90IGVzY2FwZSB3aXRob3V0IGFjdGl2ZSBjb25uZWN0aW9uIik7CiAJCQkJ CXJldHVybiBOVUxMOwogCQkJCX0KIApAQCAtMTcxLDcgKzE3Miw3IEBAIHBzcWxfZ2V0X3Zh cmlhYmxlKGNvbnN0IGNoYXIgKnZhcm5hbWUsIFBzcWxTY2FuUXVvdGVUeXBlIHF1b3RlLAog CQkJCXsKIAkJCQkJY29uc3QgY2hhciAqZXJyb3IgPSBQUWVycm9yTWVzc2FnZShwc2V0LmRi KTsKIAotCQkJCQlwc3FsX2Vycm9yKCIlcyIsIGVycm9yKTsKKwkJCQkJcGdfbG9nX2Vycm9y KCIlcyIsIGVycm9yKTsKIAkJCQkJcmV0dXJuIE5VTEw7CiAJCQkJfQogCkBAIC0xOTcsNyAr MTk4LDcgQEAgcHNxbF9nZXRfdmFyaWFibGUoY29uc3QgY2hhciAqdmFybmFtZSwgUHNxbFNj YW5RdW90ZVR5cGUgcXVvdGUsCiAJCQkJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCQkJCWlm ICghYXBwZW5kU2hlbGxTdHJpbmdOb0Vycm9yKCZidWYsIHZhbHVlKSkKIAkJCQl7Ci0JCQkJ CXBzcWxfZXJyb3IoInNoZWxsIGNvbW1hbmQgYXJndW1lbnQgY29udGFpbnMgYSBuZXdsaW5l IG9yIGNhcnJpYWdlIHJldHVybjogXCIlc1wiXG4iLAorCQkJCQlwZ19sb2dfZXJyb3IoInNo ZWxsIGNvbW1hbmQgYXJndW1lbnQgY29udGFpbnMgYSBuZXdsaW5lIG9yIGNhcnJpYWdlIHJl dHVybjogXCIlc1wiIiwKIAkJCQkJCQkgICB2YWx1ZSk7CiAJCQkJCWZyZWUoYnVmLmRhdGEp OwogCQkJCQlyZXR1cm4gTlVMTDsKQEAgLTIxMywyOCArMjE0LDYgQEAgcHNxbF9nZXRfdmFy aWFibGUoY29uc3QgY2hhciAqdmFybmFtZSwgUHNxbFNjYW5RdW90ZVR5cGUgcXVvdGUsCiB9 CiAKIAotLyoKLSAqIEVycm9yIHJlcG9ydGluZyBmb3Igc2NyaXB0cy4gRXJyb3JzIHNob3Vs ZCBsb29rIGxpa2UKLSAqCSBwc3FsOmZpbGVuYW1lOmxpbmVubzogbWVzc2FnZQotICovCi12 b2lkCi1wc3FsX2Vycm9yKGNvbnN0IGNoYXIgKmZtdCwuLi4pCi17Ci0JdmFfbGlzdAkJYXA7 Ci0KLQlmZmx1c2goc3Rkb3V0KTsKLQlpZiAocHNldC5xdWVyeUZvdXQgJiYgcHNldC5xdWVy eUZvdXQgIT0gc3Rkb3V0KQotCQlmZmx1c2gocHNldC5xdWVyeUZvdXQpOwotCi0JaWYgKHBz ZXQuaW5wdXRmaWxlKQotCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiVzOiIgVUlOVDY0X0ZPUk1B VCAiOiAiLCBwc2V0LnByb2duYW1lLCBwc2V0LmlucHV0ZmlsZSwgcHNldC5saW5lbm8pOwot CXZhX3N0YXJ0KGFwLCBmbXQpOwotCXZmcHJpbnRmKHN0ZGVyciwgXyhmbXQpLCBhcCk7Ci0J dmFfZW5kKGFwKTsKLX0KLQotCi0KIC8qCiAgKiBmb3IgYmFja2VuZCBOb3RpY2UgbWVzc2Fn ZXMgKElORk8sIFdBUk5JTkcsIGV0YykKICAqLwpAQCAtMjQyLDcgKzIyMSw3IEBAIHZvaWQK IE5vdGljZVByb2Nlc3Nvcih2b2lkICphcmcsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7CiAJ KHZvaWQpIGFyZzsJCQkJCS8qIG5vdCB1c2VkICovCi0JcHNxbF9lcnJvcigiJXMiLCBtZXNz YWdlKTsKKwlwZ19sb2dfaW5mbygiJXMiLCBtZXNzYWdlKTsKIH0KIAogCkBAIC00MTMsMjMg KzM5MiwyMyBAQCBDaGVja0Nvbm5lY3Rpb24odm9pZCkKIAl7CiAJCWlmICghcHNldC5jdXJf Y21kX2ludGVyYWN0aXZlKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJjb25uZWN0aW9uIHRvIHNl cnZlciB3YXMgbG9zdFxuIik7CisJCQlwZ19sb2dfZmF0YWwoImNvbm5lY3Rpb24gdG8gc2Vy dmVyIHdhcyBsb3N0Iik7CiAJCQlleGl0KEVYSVRfQkFEQ09OTik7CiAJCX0KIAotCQlwc3Fs X2Vycm9yKCJUaGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIHdhcyBsb3N0LiBBdHRlbXB0 aW5nIHJlc2V0OiAiKTsKKwkJZnByaW50ZihzdGRlcnIsIF8oIlRoZSBjb25uZWN0aW9uIHRv IHRoZSBzZXJ2ZXIgd2FzIGxvc3QuIEF0dGVtcHRpbmcgcmVzZXQ6ICIpKTsKIAkJUFFyZXNl dChwc2V0LmRiKTsKIAkJT0sgPSBDb25uZWN0aW9uVXAoKTsKIAkJaWYgKCFPSykKIAkJewot CQkJcHNxbF9lcnJvcigiRmFpbGVkLlxuIik7CisJCQlmcHJpbnRmKHN0ZGVyciwgXygiRmFp bGVkLlxuIikpOwogCQkJUFFmaW5pc2gocHNldC5kYik7CiAJCQlwc2V0LmRiID0gTlVMTDsK IAkJCVJlc2V0Q2FuY2VsQ29ubigpOwogCQkJVW5zeW5jVmFyaWFibGVzKCk7CiAJCX0KIAkJ ZWxzZQotCQkJcHNxbF9lcnJvcigiU3VjY2VlZGVkLlxuIik7CisJCQlmcHJpbnRmKHN0ZGVy ciwgXygiU3VjY2VlZGVkLlxuIikpOwogCX0KIAogCXJldHVybiBPSzsKQEAgLTUyOSw3ICs1 MDgsNyBAQCBBY2NlcHRSZXN1bHQoY29uc3QgUEdyZXN1bHQgKnJlc3VsdCkKIAogCQkJZGVm YXVsdDoKIAkJCQlPSyA9IGZhbHNlOwotCQkJCXBzcWxfZXJyb3IoInVuZXhwZWN0ZWQgUFFy ZXN1bHRTdGF0dXM6ICVkXG4iLAorCQkJCXBnX2xvZ19lcnJvcigidW5leHBlY3RlZCBQUXJl c3VsdFN0YXR1czogJWQiLAogCQkJCQkJICAgUFFyZXN1bHRTdGF0dXMocmVzdWx0KSk7CiAJ CQkJYnJlYWs7CiAJCX0KQEAgLTUzOSw3ICs1MTgsNyBAQCBBY2NlcHRSZXN1bHQoY29uc3Qg UEdyZXN1bHQgKnJlc3VsdCkKIAkJY29uc3QgY2hhciAqZXJyb3IgPSBQUWVycm9yTWVzc2Fn ZShwc2V0LmRiKTsKIAogCQlpZiAoc3RybGVuKGVycm9yKSkKLQkJCXBzcWxfZXJyb3IoIiVz IiwgZXJyb3IpOworCQkJcGdfbG9nX2Vycm9yKCIlcyIsIGVycm9yKTsKIAogCQlDaGVja0Nv bm5lY3Rpb24oKTsKIAl9CkBAIC02OTMsNyArNjcyLDcgQEAgUFNRTGV4ZWMoY29uc3QgY2hh ciAqcXVlcnkpCiAKIAlpZiAoIXBzZXQuZGIpCiAJewotCQlwc3FsX2Vycm9yKCJZb3UgYXJl IGN1cnJlbnRseSBub3QgY29ubmVjdGVkIHRvIGEgZGF0YWJhc2UuXG4iKTsKKwkJcGdfbG9n X2Vycm9yKCJZb3UgYXJlIGN1cnJlbnRseSBub3QgY29ubmVjdGVkIHRvIGEgZGF0YWJhc2Uu Iik7CiAJCXJldHVybiBOVUxMOwogCX0KIApAQCAtNzUxLDcgKzczMCw3IEBAIFBTUUxleGVj V2F0Y2goY29uc3QgY2hhciAqcXVlcnksIGNvbnN0IHByaW50UXVlcnlPcHQgKm9wdCkKIAog CWlmICghcHNldC5kYikKIAl7Ci0JCXBzcWxfZXJyb3IoIllvdSBhcmUgY3VycmVudGx5IG5v dCBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZS5cbiIpOworCQlwZ19sb2dfZXJyb3IoIllvdSBh cmUgY3VycmVudGx5IG5vdCBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZS4iKTsKIAkJcmV0dXJu IDA7CiAJfQogCkBAIC03OTksMTkgKzc3OCwxOSBAQCBQU1FMZXhlY1dhdGNoKGNvbnN0IGNo YXIgKnF1ZXJ5LCBjb25zdCBwcmludFF1ZXJ5T3B0ICpvcHQpCiAJCQlicmVhazsKIAogCQlj YXNlIFBHUkVTX0VNUFRZX1FVRVJZOgotCQkJcHNxbF9lcnJvcigiXFx3YXRjaCBjYW5ub3Qg YmUgdXNlZCB3aXRoIGFuIGVtcHR5IHF1ZXJ5XG4iKTsKKwkJCXBnX2xvZ19lcnJvcigiXFx3 YXRjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIGFuIGVtcHR5IHF1ZXJ5Iik7CiAJCQlQUWNsZWFy KHJlcyk7CiAJCQlyZXR1cm4gLTE7CiAKIAkJY2FzZSBQR1JFU19DT1BZX09VVDoKIAkJY2Fz ZSBQR1JFU19DT1BZX0lOOgogCQljYXNlIFBHUkVTX0NPUFlfQk9USDoKLQkJCXBzcWxfZXJy b3IoIlxcd2F0Y2ggY2Fubm90IGJlIHVzZWQgd2l0aCBDT1BZXG4iKTsKKwkJCXBnX2xvZ19l cnJvcigiXFx3YXRjaCBjYW5ub3QgYmUgdXNlZCB3aXRoIENPUFkiKTsKIAkJCVBRY2xlYXIo cmVzKTsKIAkJCXJldHVybiAtMTsKIAogCQlkZWZhdWx0OgotCQkJcHNxbF9lcnJvcigidW5l eHBlY3RlZCByZXN1bHQgc3RhdHVzIGZvciBcXHdhdGNoXG4iKTsKKwkJCXBnX2xvZ19lcnJv cigidW5leHBlY3RlZCByZXN1bHQgc3RhdHVzIGZvciBcXHdhdGNoIik7CiAJCQlQUWNsZWFy KHJlcyk7CiAJCQlyZXR1cm4gLTE7CiAJfQpAQCAtOTA3LDEyICs4ODYsMTIgQEAgU3RvcmVR dWVyeVR1cGxlKGNvbnN0IFBHcmVzdWx0ICpyZXN1bHQpCiAKIAlpZiAoUFFudHVwbGVzKHJl c3VsdCkgPCAxKQogCXsKLQkJcHNxbF9lcnJvcigibm8gcm93cyByZXR1cm5lZCBmb3IgXFxn c2V0XG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJubyByb3dzIHJldHVybmVkIGZvciBcXGdzZXQi KTsKIAkJc3VjY2VzcyA9IGZhbHNlOwogCX0KIAllbHNlIGlmIChQUW50dXBsZXMocmVzdWx0 KSA+IDEpCiAJewotCQlwc3FsX2Vycm9yKCJtb3JlIHRoYW4gb25lIHJvdyByZXR1cm5lZCBm b3IgXFxnc2V0XG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJtb3JlIHRoYW4gb25lIHJvdyByZXR1 cm5lZCBmb3IgXFxnc2V0Iik7CiAJCXN1Y2Nlc3MgPSBmYWxzZTsKIAl9CiAJZWxzZQpAQCAt MTA4MSw3ICsxMDYwLDcgQEAgUHJvY2Vzc1Jlc3VsdChQR3Jlc3VsdCAqKnJlc3VsdHMpCiAJ CQlkZWZhdWx0OgogCQkJCS8qIEFjY2VwdFJlc3VsdCgpIHNob3VsZCBoYXZlIGNhdWdodCBh bnl0aGluZyBlbHNlLiAqLwogCQkJCWlzX2NvcHkgPSBmYWxzZTsKLQkJCQlwc3FsX2Vycm9y KCJ1bmV4cGVjdGVkIFBRcmVzdWx0U3RhdHVzOiAlZFxuIiwgcmVzdWx0X3N0YXR1cyk7CisJ CQkJcGdfbG9nX2Vycm9yKCJ1bmV4cGVjdGVkIFBRcmVzdWx0U3RhdHVzOiAlZCIsIHJlc3Vs dF9zdGF0dXMpOwogCQkJCWJyZWFrOwogCQl9CiAKQEAgLTEyOTgsNyArMTI3Nyw3IEBAIFBy aW50UXVlcnlSZXN1bHRzKFBHcmVzdWx0ICpyZXN1bHRzKQogCiAJCWRlZmF1bHQ6CiAJCQlz dWNjZXNzID0gZmFsc2U7Ci0JCQlwc3FsX2Vycm9yKCJ1bmV4cGVjdGVkIFBRcmVzdWx0U3Rh dHVzOiAlZFxuIiwKKwkJCXBnX2xvZ19lcnJvcigidW5leHBlY3RlZCBQUXJlc3VsdFN0YXR1 czogJWQiLAogCQkJCQkgICBQUXJlc3VsdFN0YXR1cyhyZXN1bHRzKSk7CiAJCQlicmVhazsK IAl9CkBAIC0xMzM0LDcgKzEzMTMsNyBAQCBTZW5kUXVlcnkoY29uc3QgY2hhciAqcXVlcnkp CiAKIAlpZiAoIXBzZXQuZGIpCiAJewotCQlwc3FsX2Vycm9yKCJZb3UgYXJlIGN1cnJlbnRs eSBub3QgY29ubmVjdGVkIHRvIGEgZGF0YWJhc2UuXG4iKTsKKwkJcGdfbG9nX2Vycm9yKCJZ b3UgYXJlIGN1cnJlbnRseSBub3QgY29ubmVjdGVkIHRvIGEgZGF0YWJhc2UuIik7CiAJCWdv dG8gc2VuZHF1ZXJ5X2NsZWFudXA7CiAJfQogCkBAIC0xMzgwLDcgKzEzNTksNyBAQCBTZW5k UXVlcnkoY29uc3QgY2hhciAqcXVlcnkpCiAJCXJlc3VsdHMgPSBQUWV4ZWMocHNldC5kYiwg IkJFR0lOIik7CiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1bHRzKSAhPSBQR1JFU19DT01N QU5EX09LKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQu ZGIpKTsKKwkJCXBnX2xvZ19lcnJvcigiJXMiLCBQUWVycm9yTWVzc2FnZShwc2V0LmRiKSk7 CiAJCQlDbGVhck9yU2F2ZVJlc3VsdChyZXN1bHRzKTsKIAkJCVJlc2V0Q2FuY2VsQ29ubigp OwogCQkJZ290byBzZW5kcXVlcnlfY2xlYW51cDsKQEAgLTEzOTgsNyArMTM3Nyw3IEBAIFNl bmRRdWVyeShjb25zdCBjaGFyICpxdWVyeSkKIAkJewogCQkJY2hhcgkJc3ZlcmJ1ZlszMl07 CiAKLQkJCXBzcWxfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1 cHBvcnQgc2F2ZXBvaW50cyBmb3IgT05fRVJST1JfUk9MTEJBQ0suXG4iLAorCQkJcGdfbG9n X3dhcm5pbmcoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgc2F2 ZXBvaW50cyBmb3IgT05fRVJST1JfUk9MTEJBQ0suIiwKIAkJCQkJICAgZm9ybWF0UEdWZXJz aW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCQkgc3ZlcmJ1Ziwg c2l6ZW9mKHN2ZXJidWYpKSk7CiAJCQlvbl9lcnJvcl9yb2xsYmFja193YXJuaW5nID0gdHJ1 ZTsKQEAgLTE0MDgsNyArMTM4Nyw3IEBAIFNlbmRRdWVyeShjb25zdCBjaGFyICpxdWVyeSkK IAkJCXJlc3VsdHMgPSBQUWV4ZWMocHNldC5kYiwgIlNBVkVQT0lOVCBwZ19wc3FsX3RlbXBv cmFyeV9zYXZlcG9pbnQiKTsKIAkJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1bHRzKSAhPSBQ R1JFU19DT01NQU5EX09LKQogCQkJewotCQkJCXBzcWxfZXJyb3IoIiVzIiwgUFFlcnJvck1l c3NhZ2UocHNldC5kYikpOworCQkJCXBnX2xvZ19lcnJvcigiJXMiLCBQUWVycm9yTWVzc2Fn ZShwc2V0LmRiKSk7CiAJCQkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0cyk7CiAJCQkJUmVz ZXRDYW5jZWxDb25uKCk7CiAJCQkJZ290byBzZW5kcXVlcnlfY2xlYW51cDsKQEAgLTE0NjEs NyArMTQ0MCw3IEBAIFNlbmRRdWVyeShjb25zdCBjaGFyICpxdWVyeSkKIAl9CiAKIAlpZiAo IU9LICYmIHBzZXQuZWNobyA9PSBQU1FMX0VDSE9fRVJST1JTKQotCQlwc3FsX2Vycm9yKCJT VEFURU1FTlQ6ICAlc1xuIiwgcXVlcnkpOworCQlwZ19sb2dfaW5mbygiU1RBVEVNRU5UOiAg JXMiLCBxdWVyeSk7CiAKIAkvKiBJZiB3ZSBtYWRlIGEgdGVtcG9yYXJ5IHNhdmVwb2ludCwg cG9zc2libHkgcmVsZWFzZS9yb2xsYmFjayAqLwogCWlmIChvbl9lcnJvcl9yb2xsYmFja19z YXZlcG9pbnQpCkBAIC0xNTA0LDcgKzE0ODMsNyBAQCBTZW5kUXVlcnkoY29uc3QgY2hhciAq cXVlcnkpCiAJCQkJT0sgPSBmYWxzZTsKIAkJCQkvKiBQUVRSQU5TX1VOS05PV04gaXMgZXhw ZWN0ZWQgZ2l2ZW4gYSBicm9rZW4gY29ubmVjdGlvbi4gKi8KIAkJCQlpZiAodHJhbnNhY3Rp b25fc3RhdHVzICE9IFBRVFJBTlNfVU5LTk9XTiB8fCBDb25uZWN0aW9uVXAoKSkKLQkJCQkJ cHNxbF9lcnJvcigidW5leHBlY3RlZCB0cmFuc2FjdGlvbiBzdGF0dXMgKCVkKVxuIiwKKwkJ CQkJcGdfbG9nX2Vycm9yKCJ1bmV4cGVjdGVkIHRyYW5zYWN0aW9uIHN0YXR1cyAoJWQpIiwK IAkJCQkJCQkgICB0cmFuc2FjdGlvbl9zdGF0dXMpOwogCQkJCWJyZWFrOwogCQl9CkBAIC0x NTE2LDcgKzE0OTUsNyBAQCBTZW5kUXVlcnkoY29uc3QgY2hhciAqcXVlcnkpCiAJCQlzdnB0 cmVzID0gUFFleGVjKHBzZXQuZGIsIHN2cHRjbWQpOwogCQkJaWYgKFBRcmVzdWx0U3RhdHVz KHN2cHRyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigi JXMiLCBQUWVycm9yTWVzc2FnZShwc2V0LmRiKSk7CisJCQkJcGdfbG9nX2Vycm9yKCIlcyIs IFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKIAkJCQlDbGVhck9yU2F2ZVJlc3VsdChzdnB0 cmVzKTsKIAkJCQlPSyA9IGZhbHNlOwogCkBAIC0xNjE5LDcgKzE1OTgsNyBAQCBEZXNjcmli ZVF1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5LCBkb3VibGUgKmVsYXBzZWRfbXNlYykKIAlyZXN1 bHRzID0gUFFwcmVwYXJlKHBzZXQuZGIsICIiLCBxdWVyeSwgMCwgTlVMTCk7CiAJaWYgKFBR cmVzdWx0U3RhdHVzKHJlc3VsdHMpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJewotCQlwc3Fs X2Vycm9yKCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKKwkJcGdfbG9nX2Vycm9y KCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKIAkJU2V0UmVzdWx0VmFyaWFibGVz KHJlc3VsdHMsIGZhbHNlKTsKIAkJQ2xlYXJPclNhdmVSZXN1bHQocmVzdWx0cyk7CiAJCXJl dHVybiBmYWxzZTsKQEAgLTE2NTcsNyArMTYzNiw3IEBAIERlc2NyaWJlUXVlcnkoY29uc3Qg Y2hhciAqcXVlcnksIGRvdWJsZSAqZWxhcHNlZF9tc2VjKQogCiAJCQkJaWYgKGVzY25hbWUg PT0gTlVMTCkKIAkJCQl7Ci0JCQkJCXBzcWxfZXJyb3IoIiVzIiwgUFFlcnJvck1lc3NhZ2Uo cHNldC5kYikpOworCQkJCQlwZ19sb2dfZXJyb3IoIiVzIiwgUFFlcnJvck1lc3NhZ2UocHNl dC5kYikpOwogCQkJCQlQUWNsZWFyKHJlc3VsdHMpOwogCQkJCQl0ZXJtUFFFeHBCdWZmZXIo JmJ1Zik7CiAJCQkJCXJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9j b21tb24uaCBiL3NyYy9iaW4vcHNxbC9jb21tb24uaAppbmRleCAxZjJhNGJmMWFlLi40NzM5 YjhlZTMzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvY29tbW9uLmgKKysrIGIvc3JjL2Jp bi9wc3FsL2NvbW1vbi5oCkBAIC0yMCw4ICsyMCw2IEBAIGV4dGVybiBib29sIHNldFFGb3V0 KGNvbnN0IGNoYXIgKmZuYW1lKTsKIGV4dGVybiBjaGFyICpwc3FsX2dldF92YXJpYWJsZShj b25zdCBjaGFyICp2YXJuYW1lLCBQc3FsU2NhblF1b3RlVHlwZSBxdW90ZSwKIAkJCQkgIHZv aWQgKnBhc3N0aHJvdWdoKTsKIAotZXh0ZXJuIHZvaWQgcHNxbF9lcnJvcihjb25zdCBjaGFy ICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDEsIDIpOwotCiBleHRlcm4gdm9pZCBO b3RpY2VQcm9jZXNzb3Iodm9pZCAqYXJnLCBjb25zdCBjaGFyICptZXNzYWdlKTsKIAogZXh0 ZXJuIHZvbGF0aWxlIGJvb2wgc2lnaW50X2ludGVycnVwdF9lbmFibGVkOwpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wc3FsL2NvcHkuYyBiL3NyYy9iaW4vcHNxbC9jb3B5LmMKaW5kZXggMThh OGM4ZWViYi4uYzg0MDk5ZjBkNiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2NvcHkuYwor KysgYi9zcmMvYmluL3BzcWwvY29weS5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAi cHJvbXB0LmgiCiAjaW5jbHVkZSAic3RyaW5ndXRpbHMuaCIKIAorI2luY2x1ZGUgImZlX3V0 aWxzL2xvZ2dpbmcuaCIKIAogLyoKICAqIHBhcnNlX3NsYXNoX2NvcHkKQEAgLTk2LDcgKzk3 LDcgQEAgcGFyc2Vfc2xhc2hfY29weShjb25zdCBjaGFyICphcmdzKQogCiAJaWYgKCFhcmdz KQogCXsKLQkJcHNxbF9lcnJvcigiXFxjb3B5OiBhcmd1bWVudHMgcmVxdWlyZWRcbiIpOwor CQlwZ19sb2dfZXJyb3IoIlxcY29weTogYXJndW1lbnRzIHJlcXVpcmVkIik7CiAJCXJldHVy biBOVUxMOwogCX0KIApAQCAtMjUxLDkgKzI1Miw5IEBAIHBhcnNlX3NsYXNoX2NvcHkoY29u c3QgY2hhciAqYXJncykKIAogZXJyb3I6CiAJaWYgKHRva2VuKQotCQlwc3FsX2Vycm9yKCJc XGNvcHk6IHBhcnNlIGVycm9yIGF0IFwiJXNcIlxuIiwgdG9rZW4pOworCQlwZ19sb2dfZXJy b3IoIlxcY29weTogcGFyc2UgZXJyb3IgYXQgXCIlc1wiIiwgdG9rZW4pOwogCWVsc2UKLQkJ cHNxbF9lcnJvcigiXFxjb3B5OiBwYXJzZSBlcnJvciBhdCBlbmQgb2YgbGluZVxuIik7CisJ CXBnX2xvZ19lcnJvcigiXFxjb3B5OiBwYXJzZSBlcnJvciBhdCBlbmQgb2YgbGluZSIpOwog CWZyZWVfY29weV9vcHRpb25zKHJlc3VsdCk7CiAKIAlyZXR1cm4gTlVMTDsKQEAgLTMyNiwx MSArMzI3LDExIEBAIGRvX2NvcHkoY29uc3QgY2hhciAqYXJncykKIAlpZiAoIWNvcHlzdHJl YW0pCiAJewogCQlpZiAob3B0aW9ucy0+cHJvZ3JhbSkKLQkJCXBzcWxfZXJyb3IoImNvdWxk IG5vdCBleGVjdXRlIGNvbW1hbmQgXCIlc1wiOiAlc1xuIiwKLQkJCQkJICAgb3B0aW9ucy0+ ZmlsZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGV4 ZWN1dGUgY29tbWFuZCBcIiVzXCI6ICVtIiwKKwkJCQkJCSBvcHRpb25zLT5maWxlKTsKIAkJ ZWxzZQotCQkJcHNxbF9lcnJvcigiJXM6ICVzXG4iLAotCQkJCQkgICBvcHRpb25zLT5maWxl LCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vycm9yKCIlczogJW0iLAorCQkJCQkJ IG9wdGlvbnMtPmZpbGUpOwogCQlmcmVlX2NvcHlfb3B0aW9ucyhvcHRpb25zKTsKIAkJcmV0 dXJuIGZhbHNlOwogCX0KQEAgLTM0MiwxMiArMzQzLDEyIEBAIGRvX2NvcHkoY29uc3QgY2hh ciAqYXJncykKIAogCQkvKiBtYWtlIHN1cmUgdGhlIHNwZWNpZmllZCBmaWxlIGlzIG5vdCBh IGRpcmVjdG9yeSAqLwogCQlpZiAoKHJlc3VsdCA9IGZzdGF0KGZpbGVubyhjb3B5c3RyZWFt KSwgJnN0KSkgPCAwKQotCQkJcHNxbF9lcnJvcigiY291bGQgbm90IHN0YXQgZmlsZSBcIiVz XCI6ICVzXG4iLAotCQkJCQkgICBvcHRpb25zLT5maWxlLCBzdHJlcnJvcihlcnJubykpOwor CQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJW0iLAorCQkJ CQkJIG9wdGlvbnMtPmZpbGUpOwogCiAJCWlmIChyZXN1bHQgPT0gMCAmJiBTX0lTRElSKHN0 LnN0X21vZGUpKQotCQkJcHNxbF9lcnJvcigiJXM6IGNhbm5vdCBjb3B5IGZyb20vdG8gYSBk aXJlY3RvcnlcbiIsCi0JCQkJCSAgIG9wdGlvbnMtPmZpbGUpOworCQkJcGdfbG9nX2Vycm9y KCIlczogY2Fubm90IGNvcHkgZnJvbS90byBhIGRpcmVjdG9yeSIsCisJCQkJCQkgb3B0aW9u cy0+ZmlsZSk7CiAKIAkJaWYgKHJlc3VsdCA8IDAgfHwgU19JU0RJUihzdC5zdF9tb2RlKSkK IAkJewpAQCAtMzgzLDEzICszODQsMTIgQEAgZG9fY29weShjb25zdCBjaGFyICphcmdzKQog CQkJaWYgKHBjbG9zZV9yYyAhPSAwKQogCQkJewogCQkJCWlmIChwY2xvc2VfcmMgPCAwKQot CQkJCQlwc3FsX2Vycm9yKCJjb3VsZCBub3QgY2xvc2UgcGlwZSB0byBleHRlcm5hbCBjb21t YW5kOiAlc1xuIiwKLQkJCQkJCQkgICBzdHJlcnJvcihlcnJubykpOworCQkJCQlwZ19sb2df ZXJyb3IoImNvdWxkIG5vdCBjbG9zZSBwaXBlIHRvIGV4dGVybmFsIGNvbW1hbmQ6ICVtIik7 CiAJCQkJZWxzZQogCQkJCXsKIAkJCQkJY2hhcgkgICAqcmVhc29uID0gd2FpdF9yZXN1bHRf dG9fc3RyKHBjbG9zZV9yYyk7CiAKLQkJCQkJcHNxbF9lcnJvcigiJXM6ICVzXG4iLCBvcHRp b25zLT5maWxlLAorCQkJCQlwZ19sb2dfZXJyb3IoIiVzOiAlcyIsIG9wdGlvbnMtPmZpbGUs CiAJCQkJCQkJICAgcmVhc29uID8gcmVhc29uIDogIiIpOwogCQkJCQlpZiAocmVhc29uKQog CQkJCQkJZnJlZShyZWFzb24pOwpAQCAtNDAyLDcgKzQwMiw3IEBAIGRvX2NvcHkoY29uc3Qg Y2hhciAqYXJncykKIAkJewogCQkJaWYgKGZjbG9zZShjb3B5c3RyZWFtKSAhPSAwKQogCQkJ ewotCQkJCXBzcWxfZXJyb3IoIiVzOiAlc1xuIiwgb3B0aW9ucy0+ZmlsZSwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJCQlwZ19sb2dfZXJyb3IoIiVzOiAlbSIsIG9wdGlvbnMtPmZpbGUpOwog CQkJCXN1Y2Nlc3MgPSBmYWxzZTsKIAkJCX0KIAkJfQpAQCAtNDUyLDggKzQ1Miw3IEBAIGhh bmRsZUNvcHlPdXQoUEdjb25uICpjb25uLCBGSUxFICpjb3B5c3RyZWFtLCBQR3Jlc3VsdCAq KnJlcykKIAkJewogCQkJaWYgKE9LICYmIGNvcHlzdHJlYW0gJiYgZndyaXRlKGJ1ZiwgMSwg cmV0LCBjb3B5c3RyZWFtKSAhPSByZXQpCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigiY291bGQg bm90IHdyaXRlIENPUFkgZGF0YTogJXNcbiIsCi0JCQkJCQkgICBzdHJlcnJvcihlcnJubykp OworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHdyaXRlIENPUFkgZGF0YTogJW0iKTsK IAkJCQkvKiBjb21wbGFpbiBvbmx5IG9uY2UsIGtlZXAgcmVhZGluZyBkYXRhIGZyb20gc2Vy dmVyICovCiAJCQkJT0sgPSBmYWxzZTsKIAkJCX0KQEAgLTQ2MywxNCArNDYyLDEzIEBAIGhh bmRsZUNvcHlPdXQoUEdjb25uICpjb25uLCBGSUxFICpjb3B5c3RyZWFtLCBQR3Jlc3VsdCAq KnJlcykKIAogCWlmIChPSyAmJiBjb3B5c3RyZWFtICYmIGZmbHVzaChjb3B5c3RyZWFtKSkK IAl7Ci0JCXBzcWxfZXJyb3IoImNvdWxkIG5vdCB3cml0ZSBDT1BZIGRhdGE6ICVzXG4iLAot CQkJCSAgIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHdy aXRlIENPUFkgZGF0YTogJW0iKTsKIAkJT0sgPSBmYWxzZTsKIAl9CiAKIAlpZiAocmV0ID09 IC0yKQogCXsKLQkJcHNxbF9lcnJvcigiQ09QWSBkYXRhIHRyYW5zZmVyIGZhaWxlZDogJXMi LCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigiQ09QWSBkYXRhIHRy YW5zZmVyIGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCU9LID0gZmFs c2U7CiAJfQogCkBAIC00ODksNyArNDg3LDcgQEAgaGFuZGxlQ29weU91dChQR2Nvbm4gKmNv bm4sIEZJTEUgKmNvcHlzdHJlYW0sIFBHcmVzdWx0ICoqcmVzKQogCSpyZXMgPSBQUWdldFJl c3VsdChjb25uKTsKIAlpZiAoUFFyZXN1bHRTdGF0dXMoKnJlcykgIT0gUEdSRVNfQ09NTUFO RF9PSykKIAl7Ci0JCXBzcWxfZXJyb3IoIiVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwor CQlwZ19sb2dfZXJyb3IoIiVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQlPSyA9IGZh bHNlOwogCX0KIApAQCAtNzA4LDcgKzcwNiw3IEBAIGhhbmRsZUNvcHlJbihQR2Nvbm4gKmNv bm4sIEZJTEUgKmNvcHlzdHJlYW0sIGJvb2wgaXNiaW5hcnksIFBHcmVzdWx0ICoqcmVzKQog CX0KIAlpZiAoUFFyZXN1bHRTdGF0dXMoKnJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKIAl7 Ci0JCXBzcWxfZXJyb3IoIiVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19sb2df ZXJyb3IoIiVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQlPSyA9IGZhbHNlOwogCX0K IApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Nyb3NzdGFidmlldy5jIGIvc3JjL2Jpbi9w c3FsL2Nyb3NzdGFidmlldy5jCmluZGV4IGZiNzdjZTcwMzMuLjZhZmQzZTA5MzkgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC9jcm9zc3RhYnZpZXcuYworKysgYi9zcmMvYmluL3BzcWwv Y3Jvc3N0YWJ2aWV3LmMKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlICJwc3Fsc2NhbnNs YXNoLmgiCiAjaW5jbHVkZSAic2V0dGluZ3MuaCIKIAorI2luY2x1ZGUgImZlX3V0aWxzL2xv Z2dpbmcuaCIKIAogLyoKICAqIFZhbHVlL3Bvc2l0aW9uIGZyb20gdGhlIHJlc3VsdHNldCB0 aGF0IGdvZXMgaW50byB0aGUgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbApAQCAtMTIwLDEzICsx MjEsMTMgQEAgUHJpbnRSZXN1bHRzSW5Dcm9zc3RhYihjb25zdCBQR3Jlc3VsdCAqcmVzKQog CiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQogCXsKLQkJ cHNxbF9lcnJvcigiXFxjcm9zc3RhYnZpZXc6IHN0YXRlbWVudCBkaWQgbm90IHJldHVybiBh IHJlc3VsdCBzZXRcbiIpOworCQlwZ19sb2dfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3OiBzdGF0 ZW1lbnQgZGlkIG5vdCByZXR1cm4gYSByZXN1bHQgc2V0Iik7CiAJCWdvdG8gZXJyb3JfcmV0 dXJuOwogCX0KIAogCWlmIChQUW5maWVsZHMocmVzKSA8IDMpCiAJewotCQlwc3FsX2Vycm9y KCJcXGNyb3NzdGFidmlldzogcXVlcnkgbXVzdCByZXR1cm4gYXQgbGVhc3QgdGhyZWUgY29s dW1uc1xuIik7CisJCXBnX2xvZ19lcnJvcigiXFxjcm9zc3RhYnZpZXc6IHF1ZXJ5IG11c3Qg cmV0dXJuIGF0IGxlYXN0IHRocmVlIGNvbHVtbnMiKTsKIAkJZ290byBlcnJvcl9yZXR1cm47 CiAJfQogCkBAIC0xNTMsNyArMTU0LDcgQEAgUHJpbnRSZXN1bHRzSW5Dcm9zc3RhYihjb25z dCBQR3Jlc3VsdCAqcmVzKQogCS8qIEluc2lzdCB0aGF0IGhlYWRlciBjb2x1bW5zIGJlIGRp c3RpbmN0ICovCiAJaWYgKGZpZWxkX2Zvcl9jb2x1bW5zID09IGZpZWxkX2Zvcl9yb3dzKQog CXsKLQkJcHNxbF9lcnJvcigiXFxjcm9zc3RhYnZpZXc6IHZlcnRpY2FsIGFuZCBob3Jpem9u dGFsIGhlYWRlcnMgbXVzdCBiZSBkaWZmZXJlbnQgY29sdW1uc1xuIik7CisJCXBnX2xvZ19l cnJvcigiXFxjcm9zc3RhYnZpZXc6IHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIGhlYWRlcnMg bXVzdCBiZSBkaWZmZXJlbnQgY29sdW1ucyIpOwogCQlnb3RvIGVycm9yX3JldHVybjsKIAl9 CiAKQEAgLTE2OSw3ICsxNzAsNyBAQCBQcmludFJlc3VsdHNJbkNyb3NzdGFiKGNvbnN0IFBH cmVzdWx0ICpyZXMpCiAJCSAqLwogCQlpZiAoUFFuZmllbGRzKHJlcykgIT0gMykKIAkJewot CQkJcHNxbF9lcnJvcigiXFxjcm9zc3RhYnZpZXc6IGRhdGEgY29sdW1uIG11c3QgYmUgc3Bl Y2lmaWVkIHdoZW4gcXVlcnkgcmV0dXJucyBtb3JlIHRoYW4gdGhyZWUgY29sdW1uc1xuIik7 CisJCQlwZ19sb2dfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3OiBkYXRhIGNvbHVtbiBtdXN0IGJl IHNwZWNpZmllZCB3aGVuIHF1ZXJ5IHJldHVybnMgbW9yZSB0aGFuIHRocmVlIGNvbHVtbnMi KTsKIAkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQl9CiAKQEAgLTIyNSw3ICsyMjYsNyBAQCBQ cmludFJlc3VsdHNJbkNyb3NzdGFiKGNvbnN0IFBHcmVzdWx0ICpyZXMpCiAKIAkJaWYgKHBp dl9jb2x1bW5zLmNvdW50ID4gQ1JPU1NUQUJWSUVXX01BWF9DT0xVTU5TKQogCQl7Ci0JCQlw c3FsX2Vycm9yKCJcXGNyb3NzdGFidmlldzogbWF4aW11bSBudW1iZXIgb2YgY29sdW1ucyAo JWQpIGV4Y2VlZGVkXG4iLAorCQkJcGdfbG9nX2Vycm9yKCJcXGNyb3NzdGFidmlldzogbWF4 aW11bSBudW1iZXIgb2YgY29sdW1ucyAoJWQpIGV4Y2VlZGVkIiwKIAkJCQkJICAgQ1JPU1NU QUJWSUVXX01BWF9DT0xVTU5TKTsKIAkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQl9CkBAIC0z OTQsNyArMzk1LDcgQEAgcHJpbnRDcm9zc3RhYihjb25zdCBQR3Jlc3VsdCAqcmVzdWx0cywK IAkJCSAqLwogCQkJaWYgKGNvbnQuY2VsbHNbaWR4XSAhPSBOVUxMKQogCQkJewotCQkJCXBz cWxfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3OiBxdWVyeSByZXN1bHQgY29udGFpbnMgbXVsdGlw bGUgZGF0YSB2YWx1ZXMgZm9yIHJvdyBcIiVzXCIsIGNvbHVtbiBcIiVzXCJcbiIsCisJCQkJ cGdfbG9nX2Vycm9yKCJcXGNyb3NzdGFidmlldzogcXVlcnkgcmVzdWx0IGNvbnRhaW5zIG11 bHRpcGxlIGRhdGEgdmFsdWVzIGZvciByb3cgXCIlc1wiLCBjb2x1bW4gXCIlc1wiIiwKIAkJ CQkJCSAgIHJwLT5uYW1lID8gcnAtPm5hbWUgOgogCQkJCQkJICAgKHBvcHQubnVsbFByaW50 ID8gcG9wdC5udWxsUHJpbnQgOiAiKG51bGwpIiksCiAJCQkJCQkgICBjcC0+bmFtZSA/IGNw LT5uYW1lIDoKQEAgLTY0Miw3ICs2NDMsNyBAQCBpbmRleE9mQ29sdW1uKGNoYXIgKmFyZywg Y29uc3QgUEdyZXN1bHQgKnJlcykKIAkJaWR4ID0gYXRvaShhcmcpIC0gMTsKIAkJaWYgKGlk eCA8IDAgfHwgaWR4ID49IFBRbmZpZWxkcyhyZXMpKQogCQl7Ci0JCQlwc3FsX2Vycm9yKCJc XGNyb3NzdGFidmlldzogY29sdW1uIG51bWJlciAlZCBpcyBvdXQgb2YgcmFuZ2UgMS4uJWRc biIsCisJCQlwZ19sb2dfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3OiBjb2x1bW4gbnVtYmVyICVk IGlzIG91dCBvZiByYW5nZSAxLi4lZCIsCiAJCQkJCSAgIGlkeCArIDEsIFBRbmZpZWxkcyhy ZXMpKTsKIAkJCXJldHVybiAtMTsKIAkJfQpAQCAtNjY3LDcgKzY2OCw3IEBAIGluZGV4T2ZD b2x1bW4oY2hhciAqYXJnLCBjb25zdCBQR3Jlc3VsdCAqcmVzKQogCQkJCWlmIChpZHggPj0g MCkKIAkJCQl7CiAJCQkJCS8qIGFub3RoZXIgaWR4IHdhcyBhbHJlYWR5IGZvdW5kIGZvciB0 aGUgc2FtZSBuYW1lICovCi0JCQkJCXBzcWxfZXJyb3IoIlxcY3Jvc3N0YWJ2aWV3OiBhbWJp Z3VvdXMgY29sdW1uIG5hbWU6IFwiJXNcIlxuIiwgYXJnKTsKKwkJCQkJcGdfbG9nX2Vycm9y KCJcXGNyb3NzdGFidmlldzogYW1iaWd1b3VzIGNvbHVtbiBuYW1lOiBcIiVzXCIiLCBhcmcp OwogCQkJCQlyZXR1cm4gLTE7CiAJCQkJfQogCQkJCWlkeCA9IGk7CkBAIC02NzUsNyArNjc2 LDcgQEAgaW5kZXhPZkNvbHVtbihjaGFyICphcmcsIGNvbnN0IFBHcmVzdWx0ICpyZXMpCiAJ CX0KIAkJaWYgKGlkeCA9PSAtMSkKIAkJewotCQkJcHNxbF9lcnJvcigiXFxjcm9zc3RhYnZp ZXc6IGNvbHVtbiBuYW1lIG5vdCBmb3VuZDogXCIlc1wiXG4iLCBhcmcpOworCQkJcGdfbG9n X2Vycm9yKCJcXGNyb3NzdGFidmlldzogY29sdW1uIG5hbWUgbm90IGZvdW5kOiBcIiVzXCIi LCBhcmcpOwogCQkJcmV0dXJuIC0xOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA0ZGE2NzE5 Y2U3Li43ZjZiY2JhMDhkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwor KysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1 ZGUgImNhdGFsb2cvcGdfY2FzdF9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzc19k LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kZWZhdWx0X2FjbF9kLmgiCisjaW5jbHVkZSAi ZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5o IgogCiAjaW5jbHVkZSAiY29tbW9uLmgiCkBAIC0xNTcsNyArMTU4LDcgQEAgZGVzY3JpYmVB Y2Nlc3NNZXRob2RzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAl7CiAJ CWNoYXIJCXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNp b24gJXMpIGRvZXMgbm90IHN1cHBvcnQgYWNjZXNzIG1ldGhvZHMuXG4iLAorCQlwZ19sb2df ZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgYWNjZXNz IG1ldGhvZHMuIiwKIAkJCQkgICBmb3JtYXRQR1ZlcnNpb25OdW1iZXIocHNldC5zdmVyc2lv biwgZmFsc2UsCiAJCQkJCQkJCQkJIHN2ZXJidWYsIHNpemVvZihzdmVyYnVmKSkpOwogCQly ZXR1cm4gdHJ1ZTsKQEAgLTIyNCw3ICsyMjUsNyBAQCBkZXNjcmliZVRhYmxlc3BhY2VzKGNv bnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAl7CiAJCWNoYXIJCXN2ZXJidWZb MzJdOwogCi0JCXBzcWxfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90 IHN1cHBvcnQgdGFibGVzcGFjZXMuXG4iLAorCQlwZ19sb2dfaW5mbygiVGhlIHNlcnZlciAo dmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCB0YWJsZXNwYWNlcy4iLAogCQkJCSAgIGZv cm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxzZSwKIAkJCQkJCQkJCQkg c3ZlcmJ1Ziwgc2l6ZW9mKHN2ZXJidWYpKSk7CiAJCXJldHVybiB0cnVlOwpAQCAtMzI3LDcg KzMyOCw3IEBAIGRlc2NyaWJlRnVuY3Rpb25zKGNvbnN0IGNoYXIgKmZ1bmN0eXBlcywgY29u c3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sCiAKIAlpZiAoc3RybGVuKGZ1 bmN0eXBlcykgIT0gc3Ryc3BuKGZ1bmN0eXBlcywgImFucHR3UysiKSkKIAl7Ci0JCXBzcWxf ZXJyb3IoIlxcZGYgb25seSB0YWtlcyBbYW5wdHdTK10gYXMgb3B0aW9uc1xuIik7CisJCXBn X2xvZ19lcnJvcigiXFxkZiBvbmx5IHRha2VzIFthbnB0d1MrXSBhcyBvcHRpb25zIik7CiAJ CXJldHVybiB0cnVlOwogCX0KIApAQCAtMzM1LDcgKzMzNiw3IEBAIGRlc2NyaWJlRnVuY3Rp b25zKGNvbnN0IGNoYXIgKmZ1bmN0eXBlcywgY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2 ZXJib3NlLCBib29sCiAJewogCQljaGFyCQlzdmVyYnVmWzMyXTsKIAotCQlwc3FsX2Vycm9y KCJcXGRmIGRvZXMgbm90IHRha2UgYSBcIiVjXCIgb3B0aW9uIHdpdGggc2VydmVyIHZlcnNp b24gJXNcbiIsCisJCXBnX2xvZ19lcnJvcigiXFxkZiBkb2VzIG5vdCB0YWtlIGEgXCIlY1wi IG9wdGlvbiB3aXRoIHNlcnZlciB2ZXJzaW9uICVzIiwKIAkJCQkgICAncCcsCiAJCQkJICAg Zm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJ CSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpKTsKQEAgLTM0Niw3ICszNDcsNyBAQCBkZXNj cmliZUZ1bmN0aW9ucyhjb25zdCBjaGFyICpmdW5jdHlwZXMsIGNvbnN0IGNoYXIgKnBhdHRl cm4sIGJvb2wgdmVyYm9zZSwgYm9vbAogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJ cHNxbF9lcnJvcigiXFxkZiBkb2VzIG5vdCB0YWtlIGEgXCIlY1wiIG9wdGlvbiB3aXRoIHNl cnZlciB2ZXJzaW9uICVzXG4iLAorCQlwZ19sb2dfZXJyb3IoIlxcZGYgZG9lcyBub3QgdGFr ZSBhIFwiJWNcIiBvcHRpb24gd2l0aCBzZXJ2ZXIgdmVyc2lvbiAlcyIsCiAJCQkJICAgJ3cn LAogCQkJCSAgIGZvcm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxzZSwK IAkJCQkJCQkJCQkgc3ZlcmJ1Ziwgc2l6ZW9mKHN2ZXJidWYpKSk7CkBAIC0xMDk1LDcgKzEw OTYsNyBAQCBsaXN0RGVmYXVsdEFDTHMoY29uc3QgY2hhciAqcGF0dGVybikKIAl7CiAJCWNo YXIJCXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24g JXMpIGRvZXMgbm90IHN1cHBvcnQgYWx0ZXJpbmcgZGVmYXVsdCBwcml2aWxlZ2VzLlxuIiwK KwkJcGdfbG9nX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBw b3J0IGFsdGVyaW5nIGRlZmF1bHQgcHJpdmlsZWdlcy4iLAogCQkJCSAgIGZvcm1hdFBHVmVy c2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxzZSwKIAkJCQkJCQkJCQkgc3ZlcmJ1Ziwg c2l6ZW9mKHN2ZXJidWYpKSk7CiAJCXJldHVybiB0cnVlOwpAQCAtMTM5NiwxMCArMTM5Nywx MCBAQCBkZXNjcmliZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZl cmJvc2UsIGJvb2wgc2hvd1N5c3RlbSkKIAkJaWYgKCFwc2V0LnF1aWV0KQogCQl7CiAJCQlp ZiAocGF0dGVybikKLQkJCQlwc3FsX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHJlbGF0aW9u IG5hbWVkIFwiJXNcIi5cbiIsCisJCQkJcGdfbG9nX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55 IHJlbGF0aW9uIG5hbWVkIFwiJXNcIi4iLAogCQkJCQkJICAgcGF0dGVybik7CiAJCQllbHNl Ci0JCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5kIGFueSByZWxhdGlvbnMuXG4iKTsKKwkJ CQlwZ19sb2dfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgcmVsYXRpb25zLiIpOwogCQl9CiAJ CVBRY2xlYXIocmVzKTsKIAkJcmV0dXJuIGZhbHNlOwpAQCAtMTYzMyw3ICsxNjM0LDcgQEAg ZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAlpZiAo UFFudHVwbGVzKHJlcykgPT0gMCkKIAl7CiAJCWlmICghcHNldC5xdWlldCkKLQkJCXBzcWxf ZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgcmVsYXRpb24gd2l0aCBPSUQgJXMuXG4iLCBvaWQp OworCQkJcGdfbG9nX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHJlbGF0aW9uIHdpdGggT0lE ICVzLiIsIG9pZCk7CiAJCWdvdG8gZXJyb3JfcmV0dXJuOwogCX0KIApAQCAtMzQyNyw3ICsz NDI4LDcgQEAgbGlzdERiUm9sZVNldHRpbmdzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGNvbnN0 IGNoYXIgKnBhdHRlcm4yKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJcHNxbF9l cnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBwZXItZGF0 YWJhc2Ugcm9sZSBzZXR0aW5ncy5cbiIsCisJCXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAo dmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBwZXItZGF0YWJhc2Ugcm9sZSBzZXR0aW5n cy4iLAogCQkJCSAgIGZvcm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxz ZSwKIAkJCQkJCQkJCQkgc3ZlcmJ1Ziwgc2l6ZW9mKHN2ZXJidWYpKSk7CiAJCXJldHVybiB0 cnVlOwpAQCAtMzQ2MywxMyArMzQ2NCwxMyBAQCBsaXN0RGJSb2xlU2V0dGluZ3MoY29uc3Qg Y2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqcGF0dGVybjIpCiAJaWYgKFBRbnR1cGxlcyhy ZXMpID09IDAgJiYgIXBzZXQucXVpZXQpCiAJewogCQlpZiAocGF0dGVybiAmJiBwYXR0ZXJu MikKLQkJCXBzcWxfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgc2V0dGluZ3MgZm9yIHJvbGUg XCIlc1wiIGFuZCBkYXRhYmFzZSBcIiVzXCIuXG4iLAorCQkJcGdfbG9nX2Vycm9yKCJEaWQg bm90IGZpbmQgYW55IHNldHRpbmdzIGZvciByb2xlIFwiJXNcIiBhbmQgZGF0YWJhc2UgXCIl c1wiLiIsCiAJCQkJCSAgIHBhdHRlcm4sIHBhdHRlcm4yKTsKIAkJZWxzZSBpZiAocGF0dGVy bikKLQkJCXBzcWxfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgc2V0dGluZ3MgZm9yIHJvbGUg XCIlc1wiLlxuIiwKKwkJCXBnX2xvZ19lcnJvcigiRGlkIG5vdCBmaW5kIGFueSBzZXR0aW5n cyBmb3Igcm9sZSBcIiVzXCIuIiwKIAkJCQkJICAgcGF0dGVybik7CiAJCWVsc2UKLQkJCXBz cWxfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgc2V0dGluZ3MuXG4iKTsKKwkJCXBnX2xvZ19l cnJvcigiRGlkIG5vdCBmaW5kIGFueSBzZXR0aW5ncy4iKTsKIAl9CiAJZWxzZQogCXsKQEAg LTM2MzksMTAgKzM2NDAsMTAgQEAgbGlzdFRhYmxlcyhjb25zdCBjaGFyICp0YWJ0eXBlcywg Y29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlLCBib29sIHNob3dTeXMKIAlpZiAo UFFudHVwbGVzKHJlcykgPT0gMCAmJiAhcHNldC5xdWlldCkKIAl7CiAJCWlmIChwYXR0ZXJu KQotCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5kIGFueSByZWxhdGlvbiBuYW1lZCBcIiVz XCIuXG4iLAorCQkJcGdfbG9nX2Vycm9yKCJEaWQgbm90IGZpbmQgYW55IHJlbGF0aW9uIG5h bWVkIFwiJXNcIi4iLAogCQkJCQkgICBwYXR0ZXJuKTsKIAkJZWxzZQotCQkJcHNxbF9lcnJv cigiRGlkIG5vdCBmaW5kIGFueSByZWxhdGlvbnMuXG4iKTsKKwkJCXBnX2xvZ19lcnJvcigi RGlkIG5vdCBmaW5kIGFueSByZWxhdGlvbnMuIik7CiAJfQogCWVsc2UKIAl7CkBAIC00MDk4 LDcgKzQwOTksNyBAQCBsaXN0Q29sbGF0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29s IHZlcmJvc2UsIGJvb2wgc2hvd1N5c3RlbSkKIAl7CiAJCWNoYXIJCXN2ZXJidWZbMzJdOwog Ci0JCXBzcWxfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBv cnQgY29sbGF0aW9ucy5cbiIsCisJCXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAodmVyc2lv biAlcykgZG9lcyBub3Qgc3VwcG9ydCBjb2xsYXRpb25zLiIsCiAJCQkJICAgZm9ybWF0UEdW ZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVm LCBzaXplb2Yoc3ZlcmJ1ZikpKTsKIAkJcmV0dXJuIHRydWU7CkBAIC00MjM4LDcgKzQyMzks NyBAQCBsaXN0VFNQYXJzZXJzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkK IAl7CiAJCWNoYXIJCXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJyb3IoIlRoZSBzZXJ2ZXIg KHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZnVsbCB0ZXh0IHNlYXJjaC5cbiIsCisJ CXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9y dCBmdWxsIHRleHQgc2VhcmNoLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBz ZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1 ZikpKTsKIAkJcmV0dXJuIHRydWU7CkBAIC00MzE4LDEwICs0MzE5LDEwIEBAIGxpc3RUU1Bh cnNlcnNWZXJib3NlKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCWlmICghcHNldC5xdWlldCkK IAkJewogCQkJaWYgKHBhdHRlcm4pCi0JCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5kIGFu eSB0ZXh0IHNlYXJjaCBwYXJzZXIgbmFtZWQgXCIlc1wiLlxuIiwKKwkJCQlwZ19sb2dfZXJy b3IoIkRpZCBub3QgZmluZCBhbnkgdGV4dCBzZWFyY2ggcGFyc2VyIG5hbWVkIFwiJXNcIi4i LAogCQkJCQkJICAgcGF0dGVybik7CiAJCQllbHNlCi0JCQkJcHNxbF9lcnJvcigiRGlkIG5v dCBmaW5kIGFueSB0ZXh0IHNlYXJjaCBwYXJzZXJzLlxuIik7CisJCQkJcGdfbG9nX2Vycm9y KCJEaWQgbm90IGZpbmQgYW55IHRleHQgc2VhcmNoIHBhcnNlcnMuIik7CiAJCX0KIAkJUFFj bGVhcihyZXMpOwogCQlyZXR1cm4gZmFsc2U7CkBAIC00NDg1LDcgKzQ0ODYsNyBAQCBsaXN0 VFNEaWN0aW9uYXJpZXMoY29uc3QgY2hhciAqcGF0dGVybiwgYm9vbCB2ZXJib3NlKQogCXsK IAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJcHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVy c2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBmdWxsIHRleHQgc2VhcmNoLlxuIiwKKwkJcGdf bG9nX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGZ1 bGwgdGV4dCBzZWFyY2guIiwKIAkJCQkgICBmb3JtYXRQR1ZlcnNpb25OdW1iZXIocHNldC5z dmVyc2lvbiwgZmFsc2UsCiAJCQkJCQkJCQkJIHN2ZXJidWYsIHNpemVvZihzdmVyYnVmKSkp OwogCQlyZXR1cm4gdHJ1ZTsKQEAgLTQ1NTYsNyArNDU1Nyw3IEBAIGxpc3RUU1RlbXBsYXRl cyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJewogCQljaGFyCQlzdmVy YnVmWzMyXTsKIAotCQlwc3FsX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2Vz IG5vdCBzdXBwb3J0IGZ1bGwgdGV4dCBzZWFyY2guXG4iLAorCQlwZ19sb2dfZXJyb3IoIlRo ZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZnVsbCB0ZXh0IHNlYXJj aC4iLAogCQkJCSAgIGZvcm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxz ZSwKIAkJCQkJCQkJCQkgc3ZlcmJ1Ziwgc2l6ZW9mKHN2ZXJidWYpKSk7CiAJCXJldHVybiB0 cnVlOwpAQCAtNDYyNyw3ICs0NjI4LDcgQEAgbGlzdFRTQ29uZmlncyhjb25zdCBjaGFyICpw YXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJewogCQljaGFyCQlzdmVyYnVmWzMyXTsKIAotCQlw c3FsX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGZ1 bGwgdGV4dCBzZWFyY2guXG4iLAorCQlwZ19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNp b24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZnVsbCB0ZXh0IHNlYXJjaC4iLAogCQkJCSAgIGZv cm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxzZSwKIAkJCQkJCQkJCQkg c3ZlcmJ1Ziwgc2l6ZW9mKHN2ZXJidWYpKSk7CiAJCXJldHVybiB0cnVlOwpAQCAtNDcwOCwx MCArNDcwOSwxMCBAQCBsaXN0VFNDb25maWdzVmVyYm9zZShjb25zdCBjaGFyICpwYXR0ZXJu KQogCQlpZiAoIXBzZXQucXVpZXQpCiAJCXsKIAkJCWlmIChwYXR0ZXJuKQotCQkJCXBzcWxf ZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgdGV4dCBzZWFyY2ggY29uZmlndXJhdGlvbiBuYW1l ZCBcIiVzXCIuXG4iLAorCQkJCXBnX2xvZ19lcnJvcigiRGlkIG5vdCBmaW5kIGFueSB0ZXh0 IHNlYXJjaCBjb25maWd1cmF0aW9uIG5hbWVkIFwiJXNcIi4iLAogCQkJCQkJICAgcGF0dGVy bik7CiAJCQllbHNlCi0JCQkJcHNxbF9lcnJvcigiRGlkIG5vdCBmaW5kIGFueSB0ZXh0IHNl YXJjaCBjb25maWd1cmF0aW9ucy5cbiIpOworCQkJCXBnX2xvZ19lcnJvcigiRGlkIG5vdCBm aW5kIGFueSB0ZXh0IHNlYXJjaCBjb25maWd1cmF0aW9ucy4iKTsKIAkJfQogCQlQUWNsZWFy KHJlcyk7CiAJCXJldHVybiBmYWxzZTsKQEAgLTQ4MzMsNyArNDgzNCw3IEBAIGxpc3RGb3Jl aWduRGF0YVdyYXBwZXJzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAl7 CiAJCWNoYXIJCXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZl cnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZm9yZWlnbi1kYXRhIHdyYXBwZXJzLlxuIiwK KwkJcGdfbG9nX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBw b3J0IGZvcmVpZ24tZGF0YSB3cmFwcGVycy4iLAogCQkJCSAgIGZvcm1hdFBHVmVyc2lvbk51 bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxzZSwKIAkJCQkJCQkJCQkgc3ZlcmJ1Ziwgc2l6ZW9m KHN2ZXJidWYpKSk7CiAJCXJldHVybiB0cnVlOwpAQCAtNDkxNiw3ICs0OTE3LDcgQEAgbGlz dEZvcmVpZ25TZXJ2ZXJzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAl7 CiAJCWNoYXIJCXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZl cnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZm9yZWlnbiBzZXJ2ZXJzLlxuIiwKKwkJcGdf bG9nX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBzdXBwb3J0IGZv cmVpZ24gc2VydmVycy4iLAogCQkJCSAgIGZvcm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2 ZXJzaW9uLCBmYWxzZSwKIAkJCQkJCQkJCQkgc3ZlcmJ1Ziwgc2l6ZW9mKHN2ZXJidWYpKSk7 CiAJCXJldHVybiB0cnVlOwpAQCAtNDk5OCw3ICs0OTk5LDcgQEAgbGlzdFVzZXJNYXBwaW5n cyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJewogCQljaGFyCQlzdmVy YnVmWzMyXTsKIAotCQlwc3FsX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2Vz IG5vdCBzdXBwb3J0IHVzZXIgbWFwcGluZ3MuXG4iLAorCQlwZ19sb2dfZXJyb3IoIlRoZSBz ZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgdXNlciBtYXBwaW5ncy4iLAog CQkJCSAgIGZvcm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxzZSwKIAkJ CQkJCQkJCQkgc3ZlcmJ1Ziwgc2l6ZW9mKHN2ZXJidWYpKSk7CiAJCXJldHVybiB0cnVlOwpA QCAtNTA1OSw3ICs1MDYwLDcgQEAgbGlzdEZvcmVpZ25UYWJsZXMoY29uc3QgY2hhciAqcGF0 dGVybiwgYm9vbCB2ZXJib3NlKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJcHNx bF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBmb3Jl aWduIHRhYmxlcy5cbiIsCisJCXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAl cykgZG9lcyBub3Qgc3VwcG9ydCBmb3JlaWduIHRhYmxlcy4iLAogCQkJCSAgIGZvcm1hdFBH VmVyc2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxzZSwKIAkJCQkJCQkJCQkgc3ZlcmJ1 Ziwgc2l6ZW9mKHN2ZXJidWYpKSk7CiAJCXJldHVybiB0cnVlOwpAQCAtNTEzNyw3ICs1MTM4 LDcgQEAgbGlzdEV4dGVuc2lvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAl7CiAJCWNoYXIJ CXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMp IGRvZXMgbm90IHN1cHBvcnQgZXh0ZW5zaW9ucy5cbiIsCisJCXBnX2xvZ19lcnJvcigiVGhl IHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBleHRlbnNpb25zLiIsCiAJ CQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJ CQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpKTsKIAkJcmV0dXJuIHRydWU7CkBA IC01MTk0LDcgKzUxOTUsNyBAQCBsaXN0RXh0ZW5zaW9uQ29udGVudHMoY29uc3QgY2hhciAq cGF0dGVybikKIAl7CiAJCWNoYXIJCXN2ZXJidWZbMzJdOwogCi0JCXBzcWxfZXJyb3IoIlRo ZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgZXh0ZW5zaW9ucy5cbiIs CisJCXBnX2xvZ19lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3Vw cG9ydCBleHRlbnNpb25zLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQu c3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1Zikp KTsKIAkJcmV0dXJuIHRydWU7CkBAIC01MjIyLDEwICs1MjIzLDEwIEBAIGxpc3RFeHRlbnNp b25Db250ZW50cyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQlpZiAoIXBzZXQucXVpZXQpCiAJ CXsKIAkJCWlmIChwYXR0ZXJuKQotCQkJCXBzcWxfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkg ZXh0ZW5zaW9uIG5hbWVkIFwiJXNcIi5cbiIsCisJCQkJcGdfbG9nX2Vycm9yKCJEaWQgbm90 IGZpbmQgYW55IGV4dGVuc2lvbiBuYW1lZCBcIiVzXCIuIiwKIAkJCQkJCSAgIHBhdHRlcm4p OwogCQkJZWxzZQotCQkJCXBzcWxfZXJyb3IoIkRpZCBub3QgZmluZCBhbnkgZXh0ZW5zaW9u cy5cbiIpOworCQkJCXBnX2xvZ19lcnJvcigiRGlkIG5vdCBmaW5kIGFueSBleHRlbnNpb25z LiIpOwogCQl9CiAJCVBRY2xlYXIocmVzKTsKIAkJcmV0dXJuIGZhbHNlOwpAQCAtNTMwOCw3 ICs1MzA5LDcgQEAgbGlzdFB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCXsK IAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJcHNxbF9lcnJvcigiVGhlIHNlcnZlciAodmVy c2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBwdWJsaWNhdGlvbnMuXG4iLAorCQlwZ19sb2df ZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgcHVibGlj YXRpb25zLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJzaW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24s IGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBzaXplb2Yoc3ZlcmJ1ZikpKTsKIAkJcmV0 dXJuIHRydWU7CkBAIC01Mzc5LDcgKzUzODAsNyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhj b25zdCBjaGFyICpwYXR0ZXJuKQogCXsKIAkJY2hhcgkJc3ZlcmJ1ZlszMl07CiAKLQkJcHNx bF9lcnJvcigiVGhlIHNlcnZlciAodmVyc2lvbiAlcykgZG9lcyBub3Qgc3VwcG9ydCBwdWJs aWNhdGlvbnMuXG4iLAorCQlwZ19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIgKHZlcnNpb24gJXMp IGRvZXMgbm90IHN1cHBvcnQgcHVibGljYXRpb25zLiIsCiAJCQkJICAgZm9ybWF0UEdWZXJz aW9uTnVtYmVyKHBzZXQuc3ZlcnNpb24sIGZhbHNlLAogCQkJCQkJCQkJCSBzdmVyYnVmLCBz aXplb2Yoc3ZlcmJ1ZikpKTsKIAkJcmV0dXJuIHRydWU7CkBAIC01NDE3LDEwICs1NDE4LDEw IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCWlmICgh cHNldC5xdWlldCkKIAkJewogCQkJaWYgKHBhdHRlcm4pCi0JCQkJcHNxbF9lcnJvcigiRGlk IG5vdCBmaW5kIGFueSBwdWJsaWNhdGlvbiBuYW1lZCBcIiVzXCIuXG4iLAorCQkJCXBnX2xv Z19lcnJvcigiRGlkIG5vdCBmaW5kIGFueSBwdWJsaWNhdGlvbiBuYW1lZCBcIiVzXCIuIiwK IAkJCQkJCSAgIHBhdHRlcm4pOwogCQkJZWxzZQotCQkJCXBzcWxfZXJyb3IoIkRpZCBub3Qg ZmluZCBhbnkgcHVibGljYXRpb25zLlxuIik7CisJCQkJcGdfbG9nX2Vycm9yKCJEaWQgbm90 IGZpbmQgYW55IHB1YmxpY2F0aW9ucy4iKTsKIAkJfQogCiAJCXRlcm1QUUV4cEJ1ZmZlcigm YnVmKTsKQEAgLTU1MzUsNyArNTUzNiw3IEBAIGRlc2NyaWJlU3Vic2NyaXB0aW9ucyhjb25z dCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJewogCQljaGFyCQlzdmVyYnVmWzMy XTsKIAotCQlwc3FsX2Vycm9yKCJUaGUgc2VydmVyICh2ZXJzaW9uICVzKSBkb2VzIG5vdCBz dXBwb3J0IHN1YnNjcmlwdGlvbnMuXG4iLAorCQlwZ19sb2dfZXJyb3IoIlRoZSBzZXJ2ZXIg KHZlcnNpb24gJXMpIGRvZXMgbm90IHN1cHBvcnQgc3Vic2NyaXB0aW9ucy4iLAogCQkJCSAg IGZvcm1hdFBHVmVyc2lvbk51bWJlcihwc2V0LnN2ZXJzaW9uLCBmYWxzZSwKIAkJCQkJCQkJ CQkgc3ZlcmJ1Ziwgc2l6ZW9mKHN2ZXJidWYpKSk7CiAJCXJldHVybiB0cnVlOwpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wc3FsL2hlbHAuYyBiL3NyYy9iaW4vcHNxbC9oZWxwLmMKaW5kZXgg N2M2ZmEyYzU5MC4uMmZjZjE0OTRmMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2hlbHAu YworKysgYi9zcmMvYmluL3BzcWwvaGVscC5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk ZSAic2V0dGluZ3MuaCIKICNpbmNsdWRlICJzcWxfaGVscC5oIgogCisjaW5jbHVkZSAiZmVf dXRpbHMvbG9nZ2luZy5oIgogCiAvKgogICogUExFQVNFOgpAQCAtNTksNyArNjAsNyBAQCB1 c2FnZSh1bnNpZ25lZCBzaG9ydCBpbnQgcGFnZXIpCiAJCXVzZXIgPSBnZXRfdXNlcl9uYW1l KCZlcnJzdHIpOwogCQlpZiAoIXVzZXIpCiAJCXsKLQkJCXBzcWxfZXJyb3IoIiVzXG4iLCBl cnJzdHIpOworCQkJcGdfbG9nX2ZhdGFsKCIlcyIsIGVycnN0cik7CiAJCQlleGl0KEVYSVRf RkFJTFVSRSk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvaW5wdXQuYyBi L3NyYy9iaW4vcHNxbC9pbnB1dC5jCmluZGV4IDA4MzBiN2JiMDkuLjkzYzBkNGM0OWUgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9pbnB1dC5jCisrKyBiL3NyYy9iaW4vcHNxbC9pbnB1 dC5jCkBAIC0xOCw2ICsxOCw4IEBACiAjaW5jbHVkZSAidGFiLWNvbXBsZXRlLmgiCiAjaW5j bHVkZSAiY29tbW9uLmgiCiAKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCisKICNp Zm5kZWYgV0lOMzIKICNkZWZpbmUgUFNRTEhJU1RPUlkgIi5wc3FsX2hpc3RvcnkiCiAjZWxz ZQpAQCAtMjEzLDggKzIxNSw3IEBAIGdldHNfZnJvbUZpbGUoRklMRSAqc291cmNlKQogCQl7 CiAJCQlpZiAoZmVycm9yKHNvdXJjZSkpCiAJCQl7Ci0JCQkJcHNxbF9lcnJvcigiY291bGQg bm90IHJlYWQgZnJvbSBpbnB1dCBmaWxlOiAlc1xuIiwKLQkJCQkJCSAgIHN0cmVycm9yKGVy cm5vKSk7CisJCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZp bGU6ICVtIik7CiAJCQkJcmV0dXJuIE5VTEw7CiAJCQl9CiAJCQlicmVhazsKQEAgLTIyNCw3 ICsyMjUsNyBAQCBnZXRzX2Zyb21GaWxlKEZJTEUgKnNvdXJjZSkKIAogCQlpZiAoUFFFeHBC dWZmZXJCcm9rZW4oYnVmZmVyKSkKIAkJewotCQkJcHNxbF9lcnJvcigib3V0IG9mIG1lbW9y eVxuIik7CisJCQlwZ19sb2dfZXJyb3IoIm91dCBvZiBtZW1vcnkiKTsKIAkJCXJldHVybiBO VUxMOwogCQl9CiAKQEAgLTQ2OCw4ICs0NjksNyBAQCBzYXZlSGlzdG9yeShjaGFyICpmbmFt ZSwgaW50IG1heF9saW5lcykKIAkJfQogI2VuZGlmCiAKLQkJcHNxbF9lcnJvcigiY291bGQg bm90IHNhdmUgaGlzdG9yeSB0byBmaWxlIFwiJXNcIjogJXNcbiIsCi0JCQkJICAgZm5hbWUs IHN0cmVycm9yKGVycm51bSkpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBzYXZlIGhp c3RvcnkgdG8gZmlsZSBcIiVzXCI6ICVtIiwgZm5hbWUpOwogCX0KIAlyZXR1cm4gZmFsc2U7 CiB9CkBAIC01MDcsOCArNTA3LDcgQEAgcHJpbnRIaXN0b3J5KGNvbnN0IGNoYXIgKmZuYW1l LCB1bnNpZ25lZCBzaG9ydCBpbnQgcGFnZXIpCiAJCW91dHB1dCA9IGZvcGVuKGZuYW1lLCAi dyIpOwogCQlpZiAob3V0cHV0ID09IE5VTEwpCiAJCXsKLQkJCXBzcWxfZXJyb3IoImNvdWxk IG5vdCBzYXZlIGhpc3RvcnkgdG8gZmlsZSBcIiVzXCI6ICVzXG4iLAotCQkJCQkgICBmbmFt ZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHNhdmUg aGlzdG9yeSB0byBmaWxlIFwiJXNcIjogJW0iLCBmbmFtZSk7CiAJCQlyZXR1cm4gZmFsc2U7 CiAJCX0KIAkJaXNfcGFnZXIgPSBmYWxzZTsKQEAgLTUyNyw3ICs1MjYsNyBAQCBwcmludEhp c3RvcnkoY29uc3QgY2hhciAqZm5hbWUsIHVuc2lnbmVkIHNob3J0IGludCBwYWdlcikKIAog CXJldHVybiB0cnVlOwogI2Vsc2UKLQlwc3FsX2Vycm9yKCJoaXN0b3J5IGlzIG5vdCBzdXBw b3J0ZWQgYnkgdGhpcyBpbnN0YWxsYXRpb25cbiIpOworCXBnX2xvZ19lcnJvcigiaGlzdG9y eSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgaW5zdGFsbGF0aW9uIik7CiAJcmV0dXJuIGZh bHNlOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvbGFyZ2Vfb2JqLmMg Yi9zcmMvYmluL3BzcWwvbGFyZ2Vfb2JqLmMKaW5kZXggMjA0NzM5MzQ0MS4uN2RjMmUxZWRj NCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2xhcmdlX29iai5jCisrKyBiL3NyYy9iaW4v cHNxbC9sYXJnZV9vYmouYwpAQCAtOCwxMCArOCwxMSBAQAogI2luY2x1ZGUgInBvc3RncmVz X2ZlLmgiCiAjaW5jbHVkZSAibGFyZ2Vfb2JqLmgiCiAKLQogI2luY2x1ZGUgInNldHRpbmdz LmgiCiAjaW5jbHVkZSAiY29tbW9uLmgiCiAKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5n LmgiCisKIHN0YXRpYyB2b2lkIHByaW50X2xvX3Jlc3VsdChjb25zdCBjaGFyICpmbXQsLi4u KSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDEsIDIpOwogCiBzdGF0aWMgdm9pZApAQCAtNjEsNyAr NjIsNyBAQCBzdGFydF9sb194YWN0KGNvbnN0IGNoYXIgKm9wZXJhdGlvbiwgYm9vbCAqb3du X3RyYW5zYWN0aW9uKQogCiAJaWYgKCFwc2V0LmRiKQogCXsKLQkJcHNxbF9lcnJvcigiJXM6 IG5vdCBjb25uZWN0ZWQgdG8gYSBkYXRhYmFzZVxuIiwgb3BlcmF0aW9uKTsKKwkJcGdfbG9n X2Vycm9yKCIlczogbm90IGNvbm5lY3RlZCB0byBhIGRhdGFiYXNlIiwgb3BlcmF0aW9uKTsK IAkJcmV0dXJuIGZhbHNlOwogCX0KIApAQCAtODAsMTAgKzgxLDEwIEBAIHN0YXJ0X2xvX3hh Y3QoY29uc3QgY2hhciAqb3BlcmF0aW9uLCBib29sICpvd25fdHJhbnNhY3Rpb24pCiAJCQkv KiB1c2UgdGhlIGV4aXN0aW5nIHhhY3QgKi8KIAkJCWJyZWFrOwogCQljYXNlIFBRVFJBTlNf SU5FUlJPUjoKLQkJCXBzcWxfZXJyb3IoIiVzOiBjdXJyZW50IHRyYW5zYWN0aW9uIGlzIGFi b3J0ZWRcbiIsIG9wZXJhdGlvbik7CisJCQlwZ19sb2dfZXJyb3IoIiVzOiBjdXJyZW50IHRy YW5zYWN0aW9uIGlzIGFib3J0ZWQiLCBvcGVyYXRpb24pOwogCQkJcmV0dXJuIGZhbHNlOwog CQlkZWZhdWx0OgotCQkJcHNxbF9lcnJvcigiJXM6IHVua25vd24gdHJhbnNhY3Rpb24gc3Rh dHVzXG4iLCBvcGVyYXRpb24pOworCQkJcGdfbG9nX2Vycm9yKCIlczogdW5rbm93biB0cmFu c2FjdGlvbiBzdGF0dXMiLCBvcGVyYXRpb24pOwogCQkJcmV0dXJuIGZhbHNlOwogCX0KIApA QCAtMTUzLDcgKzE1NCw3IEBAIGRvX2xvX2V4cG9ydChjb25zdCBjaGFyICpsb2lkX2FyZywg Y29uc3QgY2hhciAqZmlsZW5hbWVfYXJnKQogCS8qIG9mIGNvdXJzZSB0aGlzIHN0YXR1cyBp cyBkb2N1bWVudGVkIG5vd2hlcmUgOiggKi8KIAlpZiAoc3RhdHVzICE9IDEpCiAJewotCQlw c3FsX2Vycm9yKCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKKwkJcGdfbG9nX2Vy cm9yKCIlcyIsIFBRZXJyb3JNZXNzYWdlKHBzZXQuZGIpKTsKIAkJcmV0dXJuIGZhaWxfbG9f eGFjdCgiXFxsb19leHBvcnQiLCBvd25fdHJhbnNhY3Rpb24pOwogCX0KIApAQCAtMTg4LDcg KzE4OSw3IEBAIGRvX2xvX2ltcG9ydChjb25zdCBjaGFyICpmaWxlbmFtZV9hcmcsIGNvbnN0 IGNoYXIgKmNvbW1lbnRfYXJnKQogCiAJaWYgKGxvaWQgPT0gSW52YWxpZE9pZCkKIAl7Ci0J CXBzcWxfZXJyb3IoIiVzIiwgUFFlcnJvck1lc3NhZ2UocHNldC5kYikpOworCQlwZ19sb2df ZXJyb3IoIiVzIiwgUFFlcnJvck1lc3NhZ2UocHNldC5kYikpOwogCQlyZXR1cm4gZmFpbF9s b194YWN0KCJcXGxvX2ltcG9ydCIsIG93bl90cmFuc2FjdGlvbik7CiAJfQogCkBAIC0yNTAs NyArMjUxLDcgQEAgZG9fbG9fdW5saW5rKGNvbnN0IGNoYXIgKmxvaWRfYXJnKQogCiAJaWYg KHN0YXR1cyA9PSAtMSkKIAl7Ci0JCXBzcWxfZXJyb3IoIiVzIiwgUFFlcnJvck1lc3NhZ2Uo cHNldC5kYikpOworCQlwZ19sb2dfZXJyb3IoIiVzIiwgUFFlcnJvck1lc3NhZ2UocHNldC5k YikpOwogCQlyZXR1cm4gZmFpbF9sb194YWN0KCJcXGxvX3VubGluayIsIG93bl90cmFuc2Fj dGlvbik7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvbWFpbmxvb3AuYyBiL3Ny Yy9iaW4vcHNxbC9tYWlubG9vcC5jCmluZGV4IDQ4MWQwMTJmYjAuLjNhZTQ0NzA0MWYgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9tYWlubG9vcC5jCisrKyBiL3NyYy9iaW4vcHNxbC9t YWlubG9vcC5jCkBAIC0xNCwxMyArMTQsMTMgQEAKICNpbmNsdWRlICJwcm9tcHQuaCIKICNp bmNsdWRlICJzZXR0aW5ncy5oIgogCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgog I2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCiAKIAogLyogY2FsbGJhY2sgZnVuY3Rpb25zIGZv ciBvdXIgZmxleCBsZXhlciAqLwogY29uc3QgUHNxbFNjYW5DYWxsYmFja3MgcHNxbHNjYW5f Y2FsbGJhY2tzID0gewogCXBzcWxfZ2V0X3ZhcmlhYmxlLAotCXBzcWxfZXJyb3IKIH07CiAK IApAQCAtNzksNyArNzksNyBAQCBNYWluTG9vcChGSUxFICpzb3VyY2UpCiAJCVBRRXhwQnVm ZmVyQnJva2VuKHByZXZpb3VzX2J1ZikgfHwKIAkJUFFFeHBCdWZmZXJCcm9rZW4oaGlzdG9y eV9idWYpKQogCXsKLQkJcHNxbF9lcnJvcigib3V0IG9mIG1lbW9yeVxuIik7CisJCXBnX2xv Z19lcnJvcigib3V0IG9mIG1lbW9yeSIpOwogCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJfQog CkBAIC0xMzMsNyArMTMzLDcgQEAgTWFpbkxvb3AoRklMRSAqc291cmNlKQogCQkJCSAqLwog CQkJCWlmICghY29uZGl0aW9uYWxfc3RhY2tfZW1wdHkoY29uZF9zdGFjaykpCiAJCQkJewot CQkJCQlwc3FsX2Vycm9yKCJcXGlmOiBlc2NhcGVkXG4iKTsKKwkJCQkJcGdfbG9nX2Vycm9y KCJcXGlmOiBlc2NhcGVkIik7CiAJCQkJCWNvbmRpdGlvbmFsX3N0YWNrX3BvcChjb25kX3N0 YWNrKTsKIAkJCQl9CiAJCQl9CkBAIC0zODMsNyArMzgzLDcgQEAgTWFpbkxvb3AoRklMRSAq c291cmNlKQogCiAJCQlpZiAoUFFFeHBCdWZmZXJCcm9rZW4ocXVlcnlfYnVmKSkKIAkJCXsK LQkJCQlwc3FsX2Vycm9yKCJvdXQgb2YgbWVtb3J5XG4iKTsKKwkJCQlwZ19sb2dfZXJyb3Io Im91dCBvZiBtZW1vcnkiKTsKIAkJCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJCQl9CiAKQEAg LTQ0Niw3ICs0NDYsNyBAQCBNYWluTG9vcChGSUxFICpzb3VyY2UpCiAJCQkJewogCQkJCQkv KiBpZiBpbnRlcmFjdGl2ZSwgd2FybiBhYm91dCBub24tZXhlY3V0ZWQgcXVlcnkgKi8KIAkJ CQkJaWYgKHBzZXQuY3VyX2NtZF9pbnRlcmFjdGl2ZSkKLQkJCQkJCXBzcWxfZXJyb3IoInF1 ZXJ5IGlnbm9yZWQ7IHVzZSBcXGVuZGlmIG9yIEN0cmwtQyB0byBleGl0IGN1cnJlbnQgXFxp ZiBibG9ja1xuIik7CisJCQkJCQlwZ19sb2dfZXJyb3IoInF1ZXJ5IGlnbm9yZWQ7IHVzZSBc XGVuZGlmIG9yIEN0cmwtQyB0byBleGl0IGN1cnJlbnQgXFxpZiBibG9jayIpOwogCQkJCQkv KiBmYWtlIGFuIE9LIHJlc3VsdCBmb3IgcHVycG9zZXMgb2YgbG9vcCBjaGVja3MgKi8KIAkJ CQkJc3VjY2VzcyA9IHRydWU7CiAJCQkJCXNsYXNoQ21kU3RhdHVzID0gUFNRTF9DTURfU0VO RDsKQEAgLTU4OCw3ICs1ODgsNyBAQCBNYWluTG9vcChGSUxFICpzb3VyY2UpCiAJCWVsc2UK IAkJewogCQkJaWYgKHBzZXQuY3VyX2NtZF9pbnRlcmFjdGl2ZSkKLQkJCQlwc3FsX2Vycm9y KCJxdWVyeSBpZ25vcmVkOyB1c2UgXFxlbmRpZiBvciBDdHJsLUMgdG8gZXhpdCBjdXJyZW50 IFxcaWYgYmxvY2tcbiIpOworCQkJCXBnX2xvZ19lcnJvcigicXVlcnkgaWdub3JlZDsgdXNl IFxcZW5kaWYgb3IgQ3RybC1DIHRvIGV4aXQgY3VycmVudCBcXGlmIGJsb2NrIik7CiAJCQlz dWNjZXNzID0gdHJ1ZTsKIAkJfQogCkBAIC02MDYsNyArNjA2LDcgQEAgTWFpbkxvb3AoRklM RSAqc291cmNlKQogCQlzdWNjZXNzUmVzdWx0ICE9IEVYSVRfVVNFUiAmJgogCQkhY29uZGl0 aW9uYWxfc3RhY2tfZW1wdHkoY29uZF9zdGFjaykpCiAJewotCQlwc3FsX2Vycm9yKCJyZWFj aGVkIEVPRiB3aXRob3V0IGZpbmRpbmcgY2xvc2luZyBcXGVuZGlmKHMpXG4iKTsKKwkJcGdf bG9nX2Vycm9yKCJyZWFjaGVkIEVPRiB3aXRob3V0IGZpbmRpbmcgY2xvc2luZyBcXGVuZGlm KHMpIik7CiAJCWlmIChkaWVfb25fZXJyb3IgJiYgIXBzZXQuY3VyX2NtZF9pbnRlcmFjdGl2 ZSkKIAkJCXN1Y2Nlc3NSZXN1bHQgPSBFWElUX1VTRVI7CiAJfQpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wc3FsL25scy5tayBiL3NyYy9iaW4vcHNxbC9ubHMubWsKaW5kZXggZTM1NWYyMTli OS4uMmU3MDdmNDQxYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL25scy5taworKysgYi9z cmMvYmluL3BzcWwvbmxzLm1rCkBAIC0xLDEyICsxLDE0IEBACiAjIHNyYy9iaW4vcHNxbC9u bHMubWsKIENBVEFMT0dfTkFNRSAgICAgPSBwc3FsCiBBVkFJTF9MQU5HVUFHRVMgID0gY3Mg ZGUgZXMgZnIgaGUgaXQgamEga28gcGwgcHRfQlIgcnUgc3YgemhfQ04gemhfVFcKLUdFVFRF WFRfRklMRVMgICAgPSBjb21tYW5kLmMgY29tbW9uLmMgY29weS5jIGNyb3NzdGFidmlldy5j IGhlbHAuYyBpbnB1dC5jIGxhcmdlX29iai5jIFwKK0dFVFRFWFRfRklMRVMgICAgPSAkKEZS T05URU5EX0NPTU1PTl9HRVRURVhUX0ZJTEVTKSBcCisgICAgICAgICAgICAgICAgICAgY29t bWFuZC5jIGNvbW1vbi5jIGNvcHkuYyBjcm9zc3RhYnZpZXcuYyBoZWxwLmMgaW5wdXQuYyBs YXJnZV9vYmouYyBcCiAgICAgICAgICAgICAgICAgICAgbWFpbmxvb3AuYyBwc3Fsc2NhbnNs YXNoLmMgc3RhcnR1cC5jIFwKICAgICAgICAgICAgICAgICAgICBkZXNjcmliZS5jIHNxbF9o ZWxwLmggc3FsX2hlbHAuYyBcCiAgICAgICAgICAgICAgICAgICAgdGFiLWNvbXBsZXRlLmMg dmFyaWFibGVzLmMgXAogICAgICAgICAgICAgICAgICAgIC4uLy4uL2ZlX3V0aWxzL3ByaW50 LmMgLi4vLi4vZmVfdXRpbHMvcHNxbHNjYW4uYyBcCiAgICAgICAgICAgICAgICAgICAgLi4v Li4vY29tbW9uL2V4ZWMuYyAuLi8uLi9jb21tb24vZmVfbWVtdXRpbHMuYyAuLi8uLi9jb21t b24vdXNlcm5hbWUuYyBcCiAgICAgICAgICAgICAgICAgICAgLi4vLi4vY29tbW9uL3dhaXRf ZXJyb3IuYwotR0VUVEVYVF9UUklHR0VSUyA9IE5fIHBzcWxfZXJyb3Igc2ltcGxlX3Byb21w dCB3cml0ZV9lcnJvcgotR0VUVEVYVF9GTEFHUyAgICA9IHBzcWxfZXJyb3I6MTpjLWZvcm1h dCB3cml0ZV9lcnJvcjoxOmMtZm9ybWF0CitHRVRURVhUX1RSSUdHRVJTID0gJChGUk9OVEVO RF9DT01NT05fR0VUVEVYVF9UUklHR0VSUykgXAorICAgICAgICAgICAgICAgICAgIE5fIHNp bXBsZV9wcm9tcHQKK0dFVFRFWFRfRkxBR1MgICAgPSAkKEZST05URU5EX0NPTU1PTl9HRVRU RVhUX0ZMQUdTKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3BzcWxzY2Fuc2xhc2gubCBi L3NyYy9iaW4vcHNxbC9wc3Fsc2NhbnNsYXNoLmwKaW5kZXggMTUxNGFhNzRkMy4uZjc4MThl NmU2MCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3BzcWxzY2Fuc2xhc2gubAorKysgYi9z cmMvYmluL3BzcWwvcHNxbHNjYW5zbGFzaC5sCkBAIC0yMCw2ICsyMCw3IEBACiAKICNpbmNs dWRlICJwc3Fsc2NhbnNsYXNoLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvY29uZGl0aW9uYWwu aCIKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAKICNpbmNsdWRlICJsaWJwcS1m ZS5oIgogfQpAQCAtNjMzLDcgKzYzNCw3IEBAIHBzcWxfc2Nhbl9zbGFzaF9vcHRpb24oUHNx bFNjYW5TdGF0ZSBzdGF0ZSwKIAkJY2FzZSB4c2xhc2hiYWNrcXVvdGU6CiAJCWNhc2UgeHNs YXNoZHF1b3RlOgogCQkJLyogbXVzdCBoYXZlIGhpdCBFT0wgaW5zaWRlIHF1b3RlcyAqLwot CQkJc3RhdGUtPmNhbGxiYWNrcy0+d3JpdGVfZXJyb3IoInVudGVybWluYXRlZCBxdW90ZWQg c3RyaW5nXG4iKTsKKwkJCXBnX2xvZ19lcnJvcigidW50ZXJtaW5hdGVkIHF1b3RlZCBzdHJp bmciKTsKIAkJCXRlcm1QUUV4cEJ1ZmZlcigmbXlidWYpOwogCQkJcmV0dXJuIE5VTEw7CiAJ CWNhc2UgeHNsYXNod2hvbGVsaW5lOgpAQCAtNzc5LDcgKzc4MCw3IEBAIGV2YWx1YXRlX2Jh Y2t0aWNrKFBzcWxTY2FuU3RhdGUgc3RhdGUpCiAJZmQgPSBwb3BlbihjbWQsIFBHX0JJTkFS WV9SKTsKIAlpZiAoIWZkKQogCXsKLQkJc3RhdGUtPmNhbGxiYWNrcy0+d3JpdGVfZXJyb3Io IiVzOiAlc1xuIiwgY21kLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoIiVz OiAlbSIsIGNtZCk7CiAJCWVycm9yID0gdHJ1ZTsKIAl9CiAKQEAgLTc5MCw3ICs3OTEsNyBA QCBldmFsdWF0ZV9iYWNrdGljayhQc3FsU2NhblN0YXRlIHN0YXRlKQogCQkJcmVzdWx0ID0g ZnJlYWQoYnVmLCAxLCBzaXplb2YoYnVmKSwgZmQpOwogCQkJaWYgKGZlcnJvcihmZCkpCiAJ CQl7Ci0JCQkJc3RhdGUtPmNhbGxiYWNrcy0+d3JpdGVfZXJyb3IoIiVzOiAlc1xuIiwgY21k LCBzdHJlcnJvcihlcnJubykpOworCQkJCXBnX2xvZ19lcnJvcigiJXM6ICVtIiwgY21kKTsK IAkJCQllcnJvciA9IHRydWU7CiAJCQkJYnJlYWs7CiAJCQl9CkBAIC04MDAsMTMgKzgwMSwx MyBAQCBldmFsdWF0ZV9iYWNrdGljayhQc3FsU2NhblN0YXRlIHN0YXRlKQogCiAJaWYgKGZk ICYmIHBjbG9zZShmZCkgPT0gLTEpCiAJewotCQlzdGF0ZS0+Y2FsbGJhY2tzLT53cml0ZV9l cnJvcigiJXM6ICVzXG4iLCBjbWQsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJv cigiJXM6ICVtIiwgY21kKTsKIAkJZXJyb3IgPSB0cnVlOwogCX0KIAogCWlmIChQUUV4cEJ1 ZmZlckRhdGFCcm9rZW4oY21kX291dHB1dCkpCiAJewotCQlzdGF0ZS0+Y2FsbGJhY2tzLT53 cml0ZV9lcnJvcigiJXM6IG91dCBvZiBtZW1vcnlcbiIsIGNtZCk7CisJCXBnX2xvZ19lcnJv cigiJXM6IG91dCBvZiBtZW1vcnkiLCBjbWQpOwogCQllcnJvciA9IHRydWU7CiAJfQogCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvc3RhcnR1cC5jIGIvc3JjL2Jpbi9wc3FsL3N0YXJ0 dXAuYwppbmRleCBmM2NlZWZkYTliLi40NTk1MjQxMzY3IDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvc3RhcnR1cC5jCisrKyBiL3NyYy9iaW4vcHNxbC9zdGFydHVwLmMKQEAgLTIyLDYg KzIyLDcgQEAKICNpbmNsdWRlICJoZWxwLmgiCiAjaW5jbHVkZSAiaW5wdXQuaCIKICNpbmNs dWRlICJtYWlubG9vcC5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNs dWRlICJmZV91dGlscy9wcmludC5oIgogI2luY2x1ZGUgInNldHRpbmdzLmgiCiAKQEAgLTg5 LDYgKzkwLDI4IEBAIHN0YXRpYyB2b2lkIEVzdGFibGlzaFZhcmlhYmxlU3BhY2Uodm9pZCk7 CiAKICNkZWZpbmUgTk9QQUdFUgkJMAogCitzdGF0aWMgdm9pZAorbG9nX3ByZV9jYWxsYmFj ayh2b2lkKQoreworCWlmIChwc2V0LnF1ZXJ5Rm91dCAmJiBwc2V0LnF1ZXJ5Rm91dCAhPSBz dGRvdXQpCisJCWZmbHVzaChwc2V0LnF1ZXJ5Rm91dCk7Cit9CisKK3N0YXRpYyB2b2lkCits b2dfbG9jdXNfY2FsbGJhY2soY29uc3QgY2hhciAqKmZpbGVuYW1lLCB1aW50NjQgKmxpbmVu bykKK3sKKwlpZiAocHNldC5pbnB1dGZpbGUpCisJeworCQkqZmlsZW5hbWUgPSBwc2V0Lmlu cHV0ZmlsZTsKKwkJKmxpbmVubyA9ICBwc2V0LmxpbmVubzsKKwl9CisJZWxzZQorCXsKKwkJ KmZpbGVuYW1lID0gTlVMTDsKKwkJKmxpbmVubyA9IDA7CisJfQorfQorCiAvKgogICoKICAq IG1haW4KQEAgLTEwMyw2ICsxMjYsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p CiAJY2hhcgkJcGFzc3dvcmRbMTAwXTsKIAlib29sCQluZXdfcGFzczsKIAorCXBnX2xvZ2dp bmdfaW5pdChhcmd2WzBdKTsKKwlwZ19sb2dnaW5nX3NldF9wcmVfY2FsbGJhY2sobG9nX3By ZV9jYWxsYmFjayk7CisJcGdfbG9nZ2luZ19zZXRfbG9jdXNfY2FsbGJhY2sobG9nX2xvY3Vz X2NhbGxiYWNrKTsKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRE T01BSU4oInBzcWwiKSk7CiAKIAlpZiAoYXJnYyA+IDEpCkBAIC0xMTksMTAgKzE0NSw2IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJfQogCX0KIAotI2lmZGVmIFdJTjMy Ci0Jc2V0dmJ1ZihzdGRlcnIsIE5VTEwsIF9JT05CRiwgMCk7Ci0jZW5kaWYKLQogCXBzZXQu cHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7CiAKIAlwc2V0LmRiID0gTlVMTDsK QEAgLTE5MCw3ICsyMTIsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJLyog QmFpbCBvdXQgaWYgLTEgd2FzIHNwZWNpZmllZCBidXQgd2lsbCBiZSBpZ25vcmVkLiAqLwog CWlmIChvcHRpb25zLnNpbmdsZV90eG4gJiYgb3B0aW9ucy5hY3Rpb25zLmhlYWQgPT0gTlVM TCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogLTEgY2FuIG9ubHkgYmUgdXNlZCBp biBub24taW50ZXJhY3RpdmUgbW9kZVxuIiksIHBzZXQucHJvZ25hbWUpOworCQlwZ19sb2df ZmF0YWwoIi0xIGNhbiBvbmx5IGJlIHVzZWQgaW4gbm9uLWludGVyYWN0aXZlIG1vZGUiKTsK IAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KIApAQCAtMjc3LDcgKzI5OSw3IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWlmIChQUXN0YXR1cyhwc2V0LmRiKSA9PSBD T05ORUNUSU9OX0JBRCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCAiJXM6ICVzIiwgcHNldC5w cm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UocHNldC5kYikpOworCQlwZ19sb2dfZmF0YWwoIiVz IiwgUFFlcnJvck1lc3NhZ2UocHNldC5kYikpOwogCQlQUWZpbmlzaChwc2V0LmRiKTsKIAkJ ZXhpdChFWElUX0JBRENPTk4pOwogCX0KQEAgLTMwNSw4ICszMjcsOCBAQCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJCXBzZXQubG9nZmlsZSA9IGZvcGVuKG9wdGlvbnMubG9n ZmlsZW5hbWUsICJhIik7CiAJCWlmICghcHNldC5sb2dmaWxlKQogCQl7Ci0JCQlmcHJpbnRm KHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIGxvZyBmaWxlIFwiJXNcIjogJXNcbiIp LAotCQkJCQlwc2V0LnByb2duYW1lLCBvcHRpb25zLmxvZ2ZpbGVuYW1lLCBzdHJlcnJvcihl cnJubykpOworCQkJcGdfbG9nX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBsb2cgZmlsZSBcIiVz XCI6ICVtIiwKKwkJCQkJCSBvcHRpb25zLmxvZ2ZpbGVuYW1lKTsKIAkJCWV4aXQoRVhJVF9G QUlMVVJFKTsKIAkJfQogCX0KQEAgLTU2Miw3ICs1ODQsNyBAQCBwYXJzZV9wc3FsX29wdGlv bnMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgc3RydWN0IGFkaG9jX29wdHMgKm9wdGlvbnMp CiAKIAkJCQkJaWYgKCFyZXN1bHQpCiAJCQkJCXsKLQkJCQkJCWZwcmludGYoc3RkZXJyLCBf KCIlczogY291bGQgbm90IHNldCBwcmludGluZyBwYXJhbWV0ZXIgXCIlc1wiXG4iKSwgcHNl dC5wcm9nbmFtZSwgdmFsdWUpOworCQkJCQkJcGdfbG9nX2ZhdGFsKCJjb3VsZCBub3Qgc2V0 IHByaW50aW5nIHBhcmFtZXRlciBcIiVzXCIiLCB2YWx1ZSk7CiAJCQkJCQlleGl0KEVYSVRf RkFJTFVSRSk7CiAJCQkJCX0KIApAQCAtNjg0LDggKzcwNiw4IEBAIHBhcnNlX3BzcWxfb3B0 aW9ucyhpbnQgYXJnYywgY2hhciAqYXJndltdLCBzdHJ1Y3QgYWRob2Nfb3B0cyAqb3B0aW9u cykKIAkJZWxzZSBpZiAoIW9wdGlvbnMtPnVzZXJuYW1lKQogCQkJb3B0aW9ucy0+dXNlcm5h bWUgPSBhcmd2W29wdGluZF07CiAJCWVsc2UgaWYgKCFwc2V0LnF1aWV0KQotCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiB3YXJuaW5nOiBleHRyYSBjb21tYW5kLWxpbmUgYXJndW1lbnQg XCIlc1wiIGlnbm9yZWRcbiIpLAotCQkJCQlwc2V0LnByb2duYW1lLCBhcmd2W29wdGluZF0p OworCQkJcGdfbG9nX3dhcm5pbmcoImV4dHJhIGNvbW1hbmQtbGluZSBhcmd1bWVudCBcIiVz XCIgaWdub3JlZCIsCisJCQkJCQkgICBhcmd2W29wdGluZF0pOwogCiAJCW9wdGluZCsrOwog CX0KQEAgLTczMyw3ICs3NTUsNyBAQCBwcm9jZXNzX3BzcWxyYyhjaGFyICphcmd2MCkKIAog CWlmIChmaW5kX215X2V4ZWMoYXJndjAsIG15X2V4ZWNfcGF0aCkgPCAwKQogCXsKLQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgZmluZCBvd24gcHJvZ3JhbSBleGVjdXRh YmxlXG4iKSwgYXJndjApOworCQlwZ19sb2dfZmF0YWwoImNvdWxkIG5vdCBmaW5kIG93biBw cm9ncmFtIGV4ZWN1dGFibGUiKTsKIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KIApkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3ZhcmlhYmxlcy5jIGIvc3JjL2Jpbi9wc3FsL3Zhcmlh Ymxlcy5jCmluZGV4IDcyZmRkZjI1NmMuLjVkNDdkNWE4YWIgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcHNxbC92YXJpYWJsZXMuYworKysgYi9zcmMvYmluL3BzcWwvdmFyaWFibGVzLmMKQEAg LTEwLDYgKzEwLDggQEAKICNpbmNsdWRlICJjb21tb24uaCIKICNpbmNsdWRlICJ2YXJpYWJs ZXMuaCIKIAorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKKwogCiAvKgogICogQ2hl Y2sgd2hldGhlciBhIHZhcmlhYmxlJ3MgbmFtZSBpcyBhbGxvd2VkLgpAQCAtMTM2LDcgKzEz OCw3IEBAIFBhcnNlVmFyaWFibGVCb29sKGNvbnN0IGNoYXIgKnZhbHVlLCBjb25zdCBjaGFy ICpuYW1lLCBib29sICpyZXN1bHQpCiAJewogCQkvKiBzdHJpbmcgaXMgbm90IHJlY29nbml6 ZWQ7IGRvbid0IGNsb2JiZXIgKnJlc3VsdCAqLwogCQlpZiAobmFtZSkKLQkJCXBzcWxfZXJy b3IoInVucmVjb2duaXplZCB2YWx1ZSBcIiVzXCIgZm9yIFwiJXNcIjogQm9vbGVhbiBleHBl Y3RlZFxuIiwKKwkJCXBnX2xvZ19lcnJvcigidW5yZWNvZ25pemVkIHZhbHVlIFwiJXNcIiBm b3IgXCIlc1wiOiBCb29sZWFuIGV4cGVjdGVkIiwKIAkJCQkJICAgdmFsdWUsIG5hbWUpOwog CQl2YWxpZCA9IGZhbHNlOwogCX0KQEAgLTE3Myw3ICsxNzUsNyBAQCBQYXJzZVZhcmlhYmxl TnVtKGNvbnN0IGNoYXIgKnZhbHVlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgKnJlc3VsdCkK IAl7CiAJCS8qIHN0cmluZyBpcyBub3QgcmVjb2duaXplZDsgZG9uJ3QgY2xvYmJlciAqcmVz dWx0ICovCiAJCWlmIChuYW1lKQotCQkJcHNxbF9lcnJvcigiaW52YWxpZCB2YWx1ZSBcIiVz XCIgZm9yIFwiJXNcIjogaW50ZWdlciBleHBlY3RlZFxuIiwKKwkJCXBnX2xvZ19lcnJvcigi aW52YWxpZCB2YWx1ZSBcIiVzXCIgZm9yIFwiJXNcIjogaW50ZWdlciBleHBlY3RlZCIsCiAJ CQkJCSAgIHZhbHVlLCBuYW1lKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KQEAgLTIyMSw3ICsy MjMsNyBAQCBTZXRWYXJpYWJsZShWYXJpYWJsZVNwYWNlIHNwYWNlLCBjb25zdCBjaGFyICpu YW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKIAkJLyogRGVsZXRpb24gb2Ygbm9uLWV4aXN0ZW50 IHZhcmlhYmxlIGlzIG5vdCBhbiBlcnJvciAqLwogCQlpZiAoIXZhbHVlKQogCQkJcmV0dXJu IHRydWU7Ci0JCXBzcWxfZXJyb3IoImludmFsaWQgdmFyaWFibGUgbmFtZTogXCIlc1wiXG4i LCBuYW1lKTsKKwkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIHZhcmlhYmxlIG5hbWU6IFwiJXNc IiIsIG5hbWUpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC0zOTAsNiArMzkyLDcgQEAg RGVsZXRlVmFyaWFibGUoVmFyaWFibGVTcGFjZSBzcGFjZSwgY29uc3QgY2hhciAqbmFtZSkK IHZvaWQKIFBzcWxWYXJFbnVtRXJyb3IoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAq dmFsdWUsIGNvbnN0IGNoYXIgKnN1Z2dlc3Rpb25zKQogewotCXBzcWxfZXJyb3IoInVucmVj b2duaXplZCB2YWx1ZSBcIiVzXCIgZm9yIFwiJXNcIlxuQXZhaWxhYmxlIHZhbHVlcyBhcmU6 ICVzLlxuIiwKKwlwZ19sb2dfZXJyb3IoInVucmVjb2duaXplZCB2YWx1ZSBcIiVzXCIgZm9y IFwiJXNcIlxuIgorCQkJCSAiQXZhaWxhYmxlIHZhbHVlcyBhcmU6ICVzLiIsCiAJCQkgICB2 YWx1ZSwgbmFtZSwgc3VnZ2VzdGlvbnMpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3Jp cHRzL2NsdXN0ZXJkYi5jIGIvc3JjL2Jpbi9zY3JpcHRzL2NsdXN0ZXJkYi5jCmluZGV4IGNj NmVmY2U1OTYuLmRkMGJhNjg4NjQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vc2NyaXB0cy9jbHVz dGVyZGIuYworKysgYi9zcmMvYmluL3NjcmlwdHMvY2x1c3RlcmRiLmMKQEAgLTExLDYgKzEx LDcgQEAKIAogI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCiAjaW5jbHVkZSAiY29tbW9uLmgi CisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3Np bXBsZV9saXN0LmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvc3RyaW5nX3V0aWxzLmgiCiAKQEAg LTYyLDYgKzYzLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWJvb2wJCXZl cmJvc2UgPSBmYWxzZTsKIAlTaW1wbGVTdHJpbmdMaXN0IHRhYmxlcyA9IHtOVUxMLCBOVUxM fTsKIAorCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKIAlwcm9nbmFtZSA9IGdldF9wcm9n bmFtZShhcmd2WzBdKTsKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RF WFRET01BSU4oInBnc2NyaXB0cyIpKTsKIApAQCAtMTI1LDggKzEyNyw4IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWlmIChvcHRpbmQgPCBhcmdjKQogCXsKLQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiB0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChm aXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJCQlwcm9nbmFtZSwgYXJndltvcHRpbmRdKTsKKwkJ cGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBp cyBcIiVzXCIpIiwKKwkJCQkJIGFyZ3Zbb3B0aW5kXSk7CiAJCWZwcmludGYoc3RkZXJyLCBf KCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFt ZSk7CiAJCWV4aXQoMSk7CiAJfQpAQCAtMTM3LDE1ICsxMzksMTMgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCXsKIAkJaWYgKGRibmFtZSkKIAkJewotCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjYW5ub3QgY2x1c3RlciBhbGwgZGF0YWJhc2VzIGFuZCBhIHNwZWNp ZmljIG9uZSBhdCB0aGUgc2FtZSB0aW1lXG4iKSwKLQkJCQkJcHJvZ25hbWUpOworCQkJcGdf bG9nX2Vycm9yKCJjYW5ub3QgY2x1c3RlciBhbGwgZGF0YWJhc2VzIGFuZCBhIHNwZWNpZmlj IG9uZSBhdCB0aGUgc2FtZSB0aW1lIik7CiAJCQlleGl0KDEpOwogCQl9CiAKIAkJaWYgKHRh Ymxlcy5oZWFkICE9IE5VTEwpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY2Fu bm90IGNsdXN0ZXIgc3BlY2lmaWMgdGFibGUocykgaW4gYWxsIGRhdGFiYXNlc1xuIiksCi0J CQkJCXByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiY2Fubm90IGNsdXN0ZXIgc3BlY2lm aWMgdGFibGUocykgaW4gYWxsIGRhdGFiYXNlcyIpOwogCQkJZXhpdCgxKTsKIAkJfQogCkBA IC0yMTMsMTEgKzIxMywxMSBAQCBjbHVzdGVyX29uZV9kYXRhYmFzZShjb25zdCBjaGFyICpk Ym5hbWUsIGJvb2wgdmVyYm9zZSwgY29uc3QgY2hhciAqdGFibGUsCiAJaWYgKCFleGVjdXRl TWFpbnRlbmFuY2VDb21tYW5kKGNvbm4sIHNxbC5kYXRhLCBlY2hvKSkKIAl7CiAJCWlmICh0 YWJsZSkKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY2x1c3RlcmluZyBvZiB0YWJsZSBc IiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIGZhaWxlZDogJXMiKSwKLQkJCQkJcHJvZ25hbWUs IHRhYmxlLCBQUWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCQlwZ19sb2df ZXJyb3IoImNsdXN0ZXJpbmcgb2YgdGFibGUgXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiBm YWlsZWQ6ICVzIiwKKwkJCQkJCSB0YWJsZSwgUFFkYihjb25uKSwgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOwogCQllbHNlCi0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNsdXN0ZXJpbmcg b2YgZGF0YWJhc2UgXCIlc1wiIGZhaWxlZDogJXMiKSwKLQkJCQkJcHJvZ25hbWUsIFBRZGIo Y29ubiksIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJCXBnX2xvZ19lcnJvcigiY2x1c3Rl cmluZyBvZiBkYXRhYmFzZSBcIiVzXCIgZmFpbGVkOiAlcyIsCisJCQkJCQkgUFFkYihjb25u KSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQlQUWZpbmlzaChjb25uKTsKIAkJZXhpdCgx KTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3NjcmlwdHMvY29tbW9uLmMgYi9zcmMvYmlu L3NjcmlwdHMvY29tbW9uLmMKaW5kZXggNzEzOWI3YzY2Ny4uYTY2MTU1NmJhOSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9zY3JpcHRzL2NvbW1vbi5jCisrKyBiL3NyYy9iaW4vc2NyaXB0cy9j b21tb24uYwpAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAiY29tbW9uLmgiCiAjaW5j bHVkZSAiZmVfdXRpbHMvY29ubmVjdC5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcu aCIKICNpbmNsdWRlICJmZV91dGlscy9zdHJpbmdfdXRpbHMuaCIKIAogCkBAIC0xMTMsOCAr MTE0LDggQEAgY29ubmVjdERhdGFiYXNlKGNvbnN0IGNoYXIgKmRibmFtZSwgY29uc3QgY2hh ciAqcGdob3N0LAogCiAJCWlmICghY29ubikKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiBjb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSAlczogb3V0IG9mIG1lbW9yeVxu IiksCi0JCQkJCXByb2duYW1lLCBkYm5hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBu b3QgY29ubmVjdCB0byBkYXRhYmFzZSAlczogb3V0IG9mIG1lbW9yeSIsCisJCQkJCQkgZGJu YW1lKTsKIAkJCWV4aXQoMSk7CiAJCX0KIApAQCAtMTQwLDggKzE0MSw4IEBAIGNvbm5lY3RE YXRhYmFzZShjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKnBnaG9zdCwKIAkJCVBR ZmluaXNoKGNvbm4pOwogCQkJcmV0dXJuIE5VTEw7CiAJCX0KLQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBjb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSAlczogJXMiKSwKLQkJCQlw cm9nbmFtZSwgZGJuYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UgJXM6ICVzIiwKKwkJCQkJIGRibmFt ZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQlleGl0KDEpOwogCX0KIApAQCAtMTkzLDEw ICsxOTQsOCBAQCBleGVjdXRlUXVlcnkoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpxdWVy eSwgY29uc3QgY2hhciAqcHJvZ25hbWUsIGJvb2wgZWNobykKIAlpZiAoIXJlcyB8fAogCQlQ UXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKIAl7Ci0JCWZwcmludGYo c3RkZXJyLCBfKCIlczogcXVlcnkgZmFpbGVkOiAlcyIpLAotCQkJCXByb2duYW1lLCBQUWVy cm9yTWVzc2FnZShjb25uKSk7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogcXVlcnkgd2Fz OiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIHF1ZXJ5KTsKKwkJcGdfbG9nX2Vycm9yKCJxdWVy eSBmYWlsZWQ6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19sb2dfaW5mbygi cXVlcnkgd2FzOiAlcyIsIHF1ZXJ5KTsKIAkJUFFmaW5pc2goY29ubik7CiAJCWV4aXQoMSk7 CiAJfQpAQCAtMjIxLDEwICsyMjAsOCBAQCBleGVjdXRlQ29tbWFuZChQR2Nvbm4gKmNvbm4s IGNvbnN0IGNoYXIgKnF1ZXJ5LAogCWlmICghcmVzIHx8CiAJCVBRcmVzdWx0U3RhdHVzKHJl cykgIT0gUEdSRVNfQ09NTUFORF9PSykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog cXVlcnkgZmFpbGVkOiAlcyIpLAotCQkJCXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25u KSk7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogcXVlcnkgd2FzOiAlc1xuIiksCi0JCQkJ cHJvZ25hbWUsIHF1ZXJ5KTsKKwkJcGdfbG9nX2Vycm9yKCJxdWVyeSBmYWlsZWQ6ICVzIiwg UFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19sb2dfaW5mbygicXVlcnkgd2FzOiAlcyIs IHF1ZXJ5KTsKIAkJUFFmaW5pc2goY29ubik7CiAJCWV4aXQoMSk7CiAJfQpAQCAtMzQ3LDEx ICszNDQsMTAgQEAgYXBwZW5kUXVhbGlmaWVkUmVsYXRpb24oUFFFeHBCdWZmZXIgYnVmLCBj b25zdCBjaGFyICpzcGVjLAogCW50dXBzID0gUFFudHVwbGVzKHJlcyk7CiAJaWYgKG50dXBz ICE9IDEpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwKLQkJCQluZ2V0dGV4dCgiJXM6IHF1ZXJ5 IHJldHVybmVkICVkIHJvdyBpbnN0ZWFkIG9mIG9uZTogJXNcbiIsCi0JCQkJCQkgIiVzOiBx dWVyeSByZXR1cm5lZCAlZCByb3dzIGluc3RlYWQgb2Ygb25lOiAlc1xuIiwKLQkJCQkJCSBu dHVwcyksCi0JCQkJcHJvZ25hbWUsIG50dXBzLCBzcWwuZGF0YSk7CisJCXBnX2xvZ19lcnJv cihuZ2V0dGV4dCgicXVlcnkgcmV0dXJuZWQgJWQgcm93IGluc3RlYWQgb2Ygb25lOiAlcyIs CisJCQkJCQkJICAicXVlcnkgcmV0dXJuZWQgJWQgcm93cyBpbnN0ZWFkIG9mIG9uZTogJXMi LAorCQkJCQkJCSAgbnR1cHMpLAorCQkJCQkgbnR1cHMsIHNxbC5kYXRhKTsKIAkJUFFmaW5p c2goY29ubik7CiAJCWV4aXQoMSk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRz L2NyZWF0ZWRiLmMgYi9zcmMvYmluL3NjcmlwdHMvY3JlYXRlZGIuYwppbmRleCBiNDBlZWE0 MzY1Li5lNGI0OTc4NTliIDEwMDY0NAotLS0gYS9zcmMvYmluL3NjcmlwdHMvY3JlYXRlZGIu YworKysgYi9zcmMvYmluL3NjcmlwdHMvY3JlYXRlZGIuYwpAQCAtMTIsNiArMTIsNyBAQAog I2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCiAKICNpbmNsdWRlICJjb21tb24uaCIKKyNpbmNs dWRlICJmZV91dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvc3RyaW5nX3V0 aWxzLmgiCiAKIApAQCAtNjQsNiArNjUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJUEdjb25uCSAgICpjb25uOwogCVBHcmVzdWx0ICAgKnJlc3VsdDsKIAorCXBnX2xv Z2dpbmdfaW5pdChhcmd2WzBdKTsKIAlwcm9nbmFtZSA9IGdldF9wcm9nbmFtZShhcmd2WzBd KTsKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4oInBn c2NyaXB0cyIpKTsKIApAQCAtMTMzLDggKzEzNSw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAkJCWNvbW1lbnQgPSBhcmd2W29wdGluZCArIDFdOwogCQkJYnJlYWs7CiAJ CWRlZmF1bHQ6Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHRvbyBtYW55IGNvbW1hbmQt bGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIilcbiIpLAotCQkJCQlwcm9nbmFtZSwg YXJndltvcHRpbmQgKyAyXSk7CisJCQlwZ19sb2dfZXJyb3IoInRvbyBtYW55IGNvbW1hbmQt bGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwiJXNcIikiLAorCQkJCQkJIGFyZ3Zbb3B0aW5k ICsgMl0pOwogCQkJZnByaW50ZihzdGRlcnIsIF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBt b3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1lKTsKIAkJCWV4aXQoMSk7CiAJfQpAQCAt MTQzLDE0ICsxNDUsMTIgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCXsKIAkJ aWYgKGxjX2N0eXBlKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG9ubHkgb25l IG9mIC0tbG9jYWxlIGFuZCAtLWxjLWN0eXBlIGNhbiBiZSBzcGVjaWZpZWRcbiIpLAotCQkJ CQlwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoIm9ubHkgb25lIG9mIC0tbG9jYWxlIGFu ZCAtLWxjLWN0eXBlIGNhbiBiZSBzcGVjaWZpZWQiKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAkJ aWYgKGxjX2NvbGxhdGUpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogb25seSBv bmUgb2YgLS1sb2NhbGUgYW5kIC0tbGMtY29sbGF0ZSBjYW4gYmUgc3BlY2lmaWVkXG4iKSwK LQkJCQkJcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJvbmx5IG9uZSBvZiAtLWxvY2Fs ZSBhbmQgLS1sYy1jb2xsYXRlIGNhbiBiZSBzcGVjaWZpZWQiKTsKIAkJCWV4aXQoMSk7CiAJ CX0KIAkJbGNfY3R5cGUgPSBsb2NhbGU7CkBAIC0xNjEsOCArMTYxLDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCXsKIAkJaWYgKHBnX2NoYXJfdG9fZW5jb2RpbmcoZW5j b2RpbmcpIDwgMCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBcIiVzXCIgaXMg bm90IGEgdmFsaWQgZW5jb2RpbmcgbmFtZVxuIiksCi0JCQkJCXByb2duYW1lLCBlbmNvZGlu Zyk7CisJCQlwZ19sb2dfZXJyb3IoIlwiJXNcIiBpcyBub3QgYSB2YWxpZCBlbmNvZGluZyBu YW1lIiwgZW5jb2RpbmcpOwogCQkJZXhpdCgxKTsKIAkJfQogCX0KQEAgLTIxMCw4ICsyMDks NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAlpZiAoUFFyZXN1bHRTdGF0 dXMocmVzdWx0KSAhPSBQR1JFU19DT01NQU5EX09LKQogCXsKLQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBkYXRhYmFzZSBjcmVhdGlvbiBmYWlsZWQ6ICVzIiksCi0JCQkJcHJvZ25hbWUs IFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9yKCJkYXRhYmFzZSBjcmVh dGlvbiBmYWlsZWQ6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQlQUWZpbmlzaChj b25uKTsKIAkJZXhpdCgxKTsKIAl9CkBAIC0yMzAsOCArMjI4LDggQEAgbWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCiAJCWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1bHQpICE9IFBH UkVTX0NPTU1BTkRfT0spCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY29tbWVu dCBjcmVhdGlvbiBmYWlsZWQgKGRhdGFiYXNlIHdhcyBjcmVhdGVkKTogJXMiKSwKLQkJCQkJ cHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJCXBnX2xvZ19lcnJvcigiY29t bWVudCBjcmVhdGlvbiBmYWlsZWQgKGRhdGFiYXNlIHdhcyBjcmVhdGVkKTogJXMiLAorCQkJ CQkJIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJCVBRZmluaXNoKGNvbm4pOwogCQkJZXhp dCgxKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRzL2NyZWF0ZXVzZXIuYyBi L3NyYy9iaW4vc2NyaXB0cy9jcmVhdGV1c2VyLmMKaW5kZXggYWU1NDZjNzBmYi4uNmRiMGRi ZjJhMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL2NyZWF0ZXVzZXIuYworKysgYi9z cmMvYmluL3NjcmlwdHMvY3JlYXRldXNlci5jCkBAIC0xMiw2ICsxMiw3IEBACiAKICNpbmNs dWRlICJwb3N0Z3Jlc19mZS5oIgogI2luY2x1ZGUgImNvbW1vbi5oIgorI2luY2x1ZGUgImZl X3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9zaW1wbGVfbGlzdC5oIgog I2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogCkBAIC04MSw2ICs4Miw3IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlQR2Nvbm4JICAgKmNvbm47CiAJUEdy ZXN1bHQgICAqcmVzdWx0OwogCisJcGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOwogCXByb2du YW1lID0gZ2V0X3Byb2duYW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2Uo YXJndlswXSwgUEdfVEVYVERPTUFJTigicGdzY3JpcHRzIikpOwogCkBAIC0xNzYsOCArMTc4 LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJbmV3dXNlciA9IGFyZ3Zb b3B0aW5kXTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgotCQkJZnByaW50ZihzdGRlcnIsIF8o IiVzOiB0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIp XG4iKSwKLQkJCQkJcHJvZ25hbWUsIGFyZ3Zbb3B0aW5kICsgMV0pOworCQkJcGdfbG9nX2Vy cm9yKCJ0b28gbWFueSBjb21tYW5kLWxpbmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIp IiwKKwkJCQkJCSBhcmd2W29wdGluZCArIDFdKTsKIAkJCWZwcmludGYoc3RkZXJyLCBfKCJU cnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBwcm9nbmFtZSk7 CiAJCQlleGl0KDEpOwogCX0KQEAgLTI2OSw4ICsyNzEsOCBAQCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJCQkJCQkJCQkJCQkgICBOVUxMKTsKIAkJaWYgKCFlbmNyeXB0ZWRf cGFzc3dvcmQpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogcGFzc3dvcmQgZW5j cnlwdGlvbiBmYWlsZWQ6ICVzIiksCi0JCQkJCXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShj b25uKSk7CisJCQlwZ19sb2dfZXJyb3IoInBhc3N3b3JkIGVuY3J5cHRpb24gZmFpbGVkOiAl cyIsCisJCQkJCQkgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQkJZXhpdCgxKTsKIAkJfQog CQlhcHBlbmRTdHJpbmdMaXRlcmFsQ29ubigmc3FsLCBlbmNyeXB0ZWRfcGFzc3dvcmQsIGNv bm4pOwpAQCAtMzI0LDggKzMyNiw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkK IAogCWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1bHQpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJ ewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNyZWF0aW9uIG9mIG5ldyByb2xlIGZhaWxl ZDogJXMiKSwKLQkJCQlwcm9nbmFtZSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19s b2dfZXJyb3IoImNyZWF0aW9uIG9mIG5ldyByb2xlIGZhaWxlZDogJXMiLCBQUWVycm9yTWVz c2FnZShjb25uKSk7CiAJCVBRZmluaXNoKGNvbm4pOwogCQlleGl0KDEpOwogCX0KZGlmZiAt LWdpdCBhL3NyYy9iaW4vc2NyaXB0cy9kcm9wZGIuYyBiL3NyYy9iaW4vc2NyaXB0cy9kcm9w ZGIuYwppbmRleCBkZjc4MjNkZjk5Li40MmE5YmQ0Njg2IDEwMDY0NAotLS0gYS9zcmMvYmlu L3NjcmlwdHMvZHJvcGRiLmMKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL2Ryb3BkYi5jCkBAIC0x Miw2ICsxMiw3IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgogI2luY2x1ZGUgImNv bW1vbi5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91 dGlscy9zdHJpbmdfdXRpbHMuaCIKIAogCkBAIC01NCw2ICs1NSw3IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAlQR2Nvbm4JICAgKmNvbm47CiAJUEdyZXN1bHQgICAqcmVz dWx0OwogCisJcGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOwogCXByb2duYW1lID0gZ2V0X3By b2duYW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlswXSwgUEdf VEVYVERPTUFJTigicGdzY3JpcHRzIikpOwogCkBAIC05OSwxNSArMTAxLDE1IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAlzd2l0Y2ggKGFyZ2MgLSBvcHRpbmQpCiAJewog CQljYXNlIDA6Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IG1pc3NpbmcgcmVxdWlyZWQg YXJndW1lbnQgZGF0YWJhc2UgbmFtZVxuIiksIHByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJv cigibWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCBkYXRhYmFzZSBuYW1lIik7CiAJCQlmcHJp bnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24u XG4iKSwgcHJvZ25hbWUpOwogCQkJZXhpdCgxKTsKIAkJY2FzZSAxOgogCQkJZGJuYW1lID0g YXJndltvcHRpbmRdOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0JCQlmcHJpbnRmKHN0ZGVy ciwgXygiJXM6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwi JXNcIilcbiIpLAotCQkJCQlwcm9nbmFtZSwgYXJndltvcHRpbmQgKyAxXSk7CisJCQlwZ19s b2dfZXJyb3IoInRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlzIFwi JXNcIikiLAorCQkJCQkJIGFyZ3Zbb3B0aW5kICsgMV0pOwogCQkJZnByaW50ZihzdGRlcnIs IF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2du YW1lKTsKIAkJCWV4aXQoMSk7CiAJfQpAQCAtMTM3LDggKzEzOSw3IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAlyZXN1bHQgPSBQUWV4ZWMoY29ubiwgc3FsLmRhdGEpOwog CWlmIChQUXJlc3VsdFN0YXR1cyhyZXN1bHQpICE9IFBHUkVTX0NPTU1BTkRfT0spCiAJewot CQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGRhdGFiYXNlIHJlbW92YWwgZmFpbGVkOiAlcyIp LAotCQkJCXByb2duYW1lLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJv cigiZGF0YWJhc2UgcmVtb3ZhbCBmYWlsZWQ6ICVzIiwgUFFlcnJvck1lc3NhZ2UoY29ubikp OwogCQlQUWZpbmlzaChjb25uKTsKIAkJZXhpdCgxKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMv YmluL3NjcmlwdHMvZHJvcHVzZXIuYyBiL3NyYy9iaW4vc2NyaXB0cy9kcm9wdXNlci5jCmlu ZGV4IDYyOTcxMTMxYzUuLjgzMTI0MzgxNWEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vc2NyaXB0 cy9kcm9wdXNlci5jCisrKyBiL3NyYy9iaW4vc2NyaXB0cy9kcm9wdXNlci5jCkBAIC0xMiw2 ICsxMiw3IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgogI2luY2x1ZGUgImNvbW1v bi5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKICNpbmNsdWRlICJmZV91dGls cy9zdHJpbmdfdXRpbHMuaCIKIAogCkBAIC01Myw2ICs1NCw3IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKIAlQR2Nvbm4JICAgKmNvbm47CiAJUEdyZXN1bHQgICAqcmVzdWx0 OwogCisJcGdfbG9nZ2luZ19pbml0KGFyZ3ZbMF0pOwogCXByb2duYW1lID0gZ2V0X3Byb2du YW1lKGFyZ3ZbMF0pOwogCXNldF9wZ2xvY2FsZV9wZ3NlcnZpY2UoYXJndlswXSwgUEdfVEVY VERPTUFJTigicGdzY3JpcHRzIikpOwogCkBAIC0xMDAsOCArMTAyLDggQEAgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCQkJZHJvcHVzZXIgPSBhcmd2W29wdGluZF07CiAJCQli cmVhazsKIAkJZGVmYXVsdDoKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogdG9vIG1hbnkg Y29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKVxuIiksCi0JCQkJCXBy b2duYW1lLCBhcmd2W29wdGluZCArIDFdKTsKKwkJCXBnX2xvZ19lcnJvcigidG9vIG1hbnkg Y29tbWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIsCisJCQkJCQkgYXJn dltvcHRpbmQgKyAxXSk7CiAJCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxw XCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQkJZXhpdCgxKTsK IAl9CkBAIC0xMTYsNyArMTE4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog CQl9CiAJCWVsc2UKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBtaXNzaW5nIHJl cXVpcmVkIGFyZ3VtZW50IHJvbGUgbmFtZVxuIiksIHByb2duYW1lKTsKKwkJCXBnX2xvZ19l cnJvcigibWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCByb2xlIG5hbWUiKTsKIAkJCWZwcmlu dGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5c biIpLCBwcm9nbmFtZSk7CiAJCQlleGl0KDEpOwogCQl9CkBAIC0xNDIsOCArMTQ0LDggQEAg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJaWYgKFBRcmVzdWx0U3RhdHVzKHJl c3VsdCkgIT0gUEdSRVNfQ09NTUFORF9PSykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIl czogcmVtb3ZhbCBvZiByb2xlIFwiJXNcIiBmYWlsZWQ6ICVzIiksCi0JCQkJcHJvZ25hbWUs IGRyb3B1c2VyLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJCXBnX2xvZ19lcnJvcigicmVt b3ZhbCBvZiByb2xlIFwiJXNcIiBmYWlsZWQ6ICVzIiwKKwkJCQkJIGRyb3B1c2VyLCBQUWVy cm9yTWVzc2FnZShjb25uKSk7CiAJCVBRZmluaXNoKGNvbm4pOwogCQlleGl0KDEpOwogCX0K ZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0cy9ubHMubWsgYi9zcmMvYmluL3NjcmlwdHMv bmxzLm1rCmluZGV4IDQwMzhjZGIzYjYuLjJjOTlhNmE0NjEgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vc2NyaXB0cy9ubHMubWsKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL25scy5tawpAQCAtMSwx MSArMSwxMyBAQAogIyBzcmMvYmluL3NjcmlwdHMvbmxzLm1rCiBDQVRBTE9HX05BTUUgICAg ID0gcGdzY3JpcHRzCiBBVkFJTF9MQU5HVUFHRVMgID0gY3MgZGUgZXMgZnIgaGUgaXQgamEg a28gcGwgcHRfQlIgcnUgc3YgdHIgemhfQ04KLUdFVFRFWFRfRklMRVMgICAgPSBjcmVhdGVk Yi5jIGNyZWF0ZXVzZXIuYyBcCitHRVRURVhUX0ZJTEVTICAgID0gJChGUk9OVEVORF9DT01N T05fR0VUVEVYVF9GSUxFUykgXAorICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRiLmMgY3Jl YXRldXNlci5jIFwKICAgICAgICAgICAgICAgICAgICBkcm9wZGIuYyBkcm9wdXNlci5jIFwK ICAgICAgICAgICAgICAgICAgICBjbHVzdGVyZGIuYyB2YWN1dW1kYi5jIHJlaW5kZXhkYi5j IFwKICAgICAgICAgICAgICAgICAgICBwZ19pc3JlYWR5LmMgXAogICAgICAgICAgICAgICAg ICAgIGNvbW1vbi5jIFwKICAgICAgICAgICAgICAgICAgICAuLi8uLi9mZV91dGlscy9wcmlu dC5jIFwKICAgICAgICAgICAgICAgICAgICAuLi8uLi9jb21tb24vZmVfbWVtdXRpbHMuYyAu Li8uLi9jb21tb24vdXNlcm5hbWUuYwotR0VUVEVYVF9UUklHR0VSUyA9IHNpbXBsZV9wcm9t cHQgeWVzbm9fcHJvbXB0CitHRVRURVhUX1RSSUdHRVJTID0gJChGUk9OVEVORF9DT01NT05f R0VUVEVYVF9UUklHR0VSUykgc2ltcGxlX3Byb21wdCB5ZXNub19wcm9tcHQKK0dFVFRFWFRf RkxBR1MgICAgPSAkKEZST05URU5EX0NPTU1PTl9HRVRURVhUX0ZMQUdTKQpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9zY3JpcHRzL3BnX2lzcmVhZHkuYyBiL3NyYy9iaW4vc2NyaXB0cy9wZ19p c3JlYWR5LmMKaW5kZXggMjZiMjFkY2JiMC4uZmUxNTUwN2NhZiAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9zY3JpcHRzL3BnX2lzcmVhZHkuYworKysgYi9zcmMvYmluL3NjcmlwdHMvcGdfaXNy ZWFkeS5jCkBAIC0xMSw2ICsxMSw3IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgog I2luY2x1ZGUgImNvbW1vbi5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dpbmcuaCIKIAog I2RlZmluZSBERUZBVUxUX0NPTk5FQ1RfVElNRU9VVCAiMyIKIApAQCAtNjMsNiArNjQsNyBA QCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJe05VTEwsIDAsIE5VTEwsIDB9CiAJ fTsKIAorCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKIAlwcm9nbmFtZSA9IGdldF9wcm9n bmFtZShhcmd2WzBdKTsKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RF WFRET01BSU4oInBnc2NyaXB0cyIpKTsKIAloYW5kbGVfaGVscF92ZXJzaW9uX29wdHMoYXJn YywgYXJndiwgcHJvZ25hbWUsIGhlbHApOwpAQCAtMTAyLDggKzEwNCw4IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKG9wdGluZCA8IGFyZ2MpCiAJewotCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IHRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZp cnN0IGlzIFwiJXNcIilcbiIpLAotCQkJCXByb2duYW1lLCBhcmd2W29wdGluZF0pOworCQlw Z19sb2dfZXJyb3IoInRvbyBtYW55IGNvbW1hbmQtbGluZSBhcmd1bWVudHMgKGZpcnN0IGlz IFwiJXNcIikiLAorCQkJCQkgYXJndltvcHRpbmRdKTsKIAkJZnByaW50ZihzdGRlcnIsIF8o IlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2duYW1l KTsKIAogCQkvKgpAQCAtMTM5LDcgKzE0MSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCQlvcHRzID0gUFFjb25uaW5mb1BhcnNlKHBnZGJuYW1lLCAmZXJybXNnKTsKIAkJ aWYgKG9wdHMgPT0gTlVMTCkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiAlcyIp LCBwcm9nbmFtZSwgZXJybXNnKTsKKwkJCXBnX2xvZ19lcnJvcigiJXMiLCBlcnJtc2cpOwog CQkJZXhpdChQUVBJTkdfTk9fQVRURU1QVCk7CiAJCX0KIAl9CkBAIC0xNDcsNyArMTQ5LDcg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJZGVmcyA9IFBRY29ubmRlZmF1bHRz KCk7CiAJaWYgKGRlZnMgPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczog Y291bGQgbm90IGZldGNoIGRlZmF1bHQgb3B0aW9uc1xuIiksIHByb2duYW1lKTsKKwkJcGdf bG9nX2Vycm9yKCJjb3VsZCBub3QgZmV0Y2ggZGVmYXVsdCBvcHRpb25zIik7CiAJCWV4aXQo UFFQSU5HX05PX0FUVEVNUFQpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRz L3JlaW5kZXhkYi5jIGIvc3JjL2Jpbi9zY3JpcHRzL3JlaW5kZXhkYi5jCmluZGV4IDFjZDFj Y2M5NTEuLmU5ZDljNDVlYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vc2NyaXB0cy9yZWluZGV4 ZGIuYworKysgYi9zcmMvYmluL3NjcmlwdHMvcmVpbmRleGRiLmMKQEAgLTExLDYgKzExLDcg QEAKIAogI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCiAjaW5jbHVkZSAiY29tbW9uLmgiCisj aW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3NpbXBs ZV9saXN0LmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvc3RyaW5nX3V0aWxzLmgiCiAKQEAgLTcy LDYgKzczLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCVNpbXBsZVN0cmlu Z0xpc3QgdGFibGVzID0ge05VTEwsIE5VTEx9OwogCVNpbXBsZVN0cmluZ0xpc3Qgc2NoZW1h cyA9IHtOVUxMLCBOVUxMfTsKIAorCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKIAlwcm9n bmFtZSA9IGdldF9wcm9nbmFtZShhcmd2WzBdKTsKIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNl KGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4oInBnc2NyaXB0cyIpKTsKIApAQCAtMTQ1LDggKzE0 Nyw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCWlmIChvcHRpbmQgPCBh cmdjKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0b28gbWFueSBjb21tYW5kLWxp bmUgYXJndW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpXG4iKSwKLQkJCQlwcm9nbmFtZSwgYXJn dltvcHRpbmRdKTsKKwkJcGdfbG9nX2Vycm9yKCJ0b28gbWFueSBjb21tYW5kLWxpbmUgYXJn dW1lbnRzIChmaXJzdCBpcyBcIiVzXCIpIiwKKwkJCQkJIGFyZ3Zbb3B0aW5kXSk7CiAJCWZw cmludGYoc3RkZXJyLCBfKCJUcnkgXCIlcyAtLWhlbHBcIiBmb3IgbW9yZSBpbmZvcm1hdGlv bi5cbiIpLCBwcm9nbmFtZSk7CiAJCWV4aXQoMSk7CiAJfQpAQCAtMTU3LDI3ICsxNTksMjcg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCXsKIAkJaWYgKGRibmFtZSkKIAkJ ewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgcmVpbmRleCBhbGwgZGF0YWJh c2VzIGFuZCBhIHNwZWNpZmljIG9uZSBhdCB0aGUgc2FtZSB0aW1lXG4iKSwgcHJvZ25hbWUp OworCQkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgcmVpbmRleCBhbGwgZGF0YWJhc2VzIGFuZCBh IHNwZWNpZmljIG9uZSBhdCB0aGUgc2FtZSB0aW1lIik7CiAJCQlleGl0KDEpOwogCQl9CiAJ CWlmIChzeXNjYXRhbG9nKQogCQl7Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNhbm5v dCByZWluZGV4IGFsbCBkYXRhYmFzZXMgYW5kIHN5c3RlbSBjYXRhbG9ncyBhdCB0aGUgc2Ft ZSB0aW1lXG4iKSwgcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgcmVpbmRl eCBhbGwgZGF0YWJhc2VzIGFuZCBzeXN0ZW0gY2F0YWxvZ3MgYXQgdGhlIHNhbWUgdGltZSIp OwogCQkJZXhpdCgxKTsKIAkJfQogCQlpZiAoc2NoZW1hcy5oZWFkICE9IE5VTEwpCiAJCXsK LQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY2Fubm90IHJlaW5kZXggc3BlY2lmaWMgc2No ZW1hKHMpIGluIGFsbCBkYXRhYmFzZXNcbiIpLCBwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJy b3IoImNhbm5vdCByZWluZGV4IHNwZWNpZmljIHNjaGVtYShzKSBpbiBhbGwgZGF0YWJhc2Vz Iik7CiAJCQlleGl0KDEpOwogCQl9CiAJCWlmICh0YWJsZXMuaGVhZCAhPSBOVUxMKQogCQl7 Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNhbm5vdCByZWluZGV4IHNwZWNpZmljIHRh YmxlKHMpIGluIGFsbCBkYXRhYmFzZXNcbiIpLCBwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJy b3IoImNhbm5vdCByZWluZGV4IHNwZWNpZmljIHRhYmxlKHMpIGluIGFsbCBkYXRhYmFzZXMi KTsKIAkJCWV4aXQoMSk7CiAJCX0KIAkJaWYgKGluZGV4ZXMuaGVhZCAhPSBOVUxMKQogCQl7 Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNhbm5vdCByZWluZGV4IHNwZWNpZmljIGlu ZGV4KGVzKSBpbiBhbGwgZGF0YWJhc2VzXG4iKSwgcHJvZ25hbWUpOworCQkJcGdfbG9nX2Vy cm9yKCJjYW5ub3QgcmVpbmRleCBzcGVjaWZpYyBpbmRleChlcykgaW4gYWxsIGRhdGFiYXNl cyIpOwogCQkJZXhpdCgxKTsKIAkJfQogCkBAIC0xODgsMTcgKzE5MCwxNyBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAJewogCQlpZiAoc2NoZW1hcy5oZWFkICE9IE5VTEwp CiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY2Fubm90IHJlaW5kZXggc3BlY2lm aWMgc2NoZW1hKHMpIGFuZCBzeXN0ZW0gY2F0YWxvZ3MgYXQgdGhlIHNhbWUgdGltZVxuIiks IHByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJvcigiY2Fubm90IHJlaW5kZXggc3BlY2lmaWMg c2NoZW1hKHMpIGFuZCBzeXN0ZW0gY2F0YWxvZ3MgYXQgdGhlIHNhbWUgdGltZSIpOwogCQkJ ZXhpdCgxKTsKIAkJfQogCQlpZiAodGFibGVzLmhlYWQgIT0gTlVMTCkKIAkJewotCQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgcmVpbmRleCBzcGVjaWZpYyB0YWJsZShzKSBh bmQgc3lzdGVtIGNhdGFsb2dzIGF0IHRoZSBzYW1lIHRpbWVcbiIpLCBwcm9nbmFtZSk7CisJ CQlwZ19sb2dfZXJyb3IoImNhbm5vdCByZWluZGV4IHNwZWNpZmljIHRhYmxlKHMpIGFuZCBz eXN0ZW0gY2F0YWxvZ3MgYXQgdGhlIHNhbWUgdGltZSIpOwogCQkJZXhpdCgxKTsKIAkJfQog CQlpZiAoaW5kZXhlcy5oZWFkICE9IE5VTEwpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBf KCIlczogY2Fubm90IHJlaW5kZXggc3BlY2lmaWMgaW5kZXgoZXMpIGFuZCBzeXN0ZW0gY2F0 YWxvZ3MgYXQgdGhlIHNhbWUgdGltZVxuIiksIHByb2duYW1lKTsKKwkJCXBnX2xvZ19lcnJv cigiY2Fubm90IHJlaW5kZXggc3BlY2lmaWMgaW5kZXgoZXMpIGFuZCBzeXN0ZW0gY2F0YWxv Z3MgYXQgdGhlIHNhbWUgdGltZSIpOwogCQkJZXhpdCgxKTsKIAkJfQogCkBAIC0zMDUsMTcg KzMwNywxNyBAQCByZWluZGV4X29uZV9kYXRhYmFzZShjb25zdCBjaGFyICpuYW1lLCBjb25z dCBjaGFyICpkYm5hbWUsIGNvbnN0IGNoYXIgKnR5cGUsCiAJaWYgKCFleGVjdXRlTWFpbnRl bmFuY2VDb21tYW5kKGNvbm4sIHNxbC5kYXRhLCBlY2hvKSkKIAl7CiAJCWlmIChzdHJjbXAo dHlwZSwgIlRBQkxFIikgPT0gMCkKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogcmVpbmRl eGluZyBvZiB0YWJsZSBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIGZhaWxlZDogJXMiKSwK LQkJCQkJcHJvZ25hbWUsIG5hbWUsIFBRZGIoY29ubiksIFBRZXJyb3JNZXNzYWdlKGNvbm4p KTsKKwkJCXBnX2xvZ19lcnJvcigicmVpbmRleGluZyBvZiB0YWJsZSBcIiVzXCIgaW4gZGF0 YWJhc2UgXCIlc1wiIGZhaWxlZDogJXMiLAorCQkJCQkJIG5hbWUsIFBRZGIoY29ubiksIFBR ZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJaWYgKHN0cmNtcCh0eXBlLCAiSU5ERVgiKSA9PSAw KQotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiByZWluZGV4aW5nIG9mIGluZGV4IFwiJXNc IiBpbiBkYXRhYmFzZSBcIiVzXCIgZmFpbGVkOiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgbmFt ZSwgUFFkYihjb25uKSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQkJcGdfbG9nX2Vycm9y KCJyZWluZGV4aW5nIG9mIGluZGV4IFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIgZmFpbGVk OiAlcyIsCisJCQkJCQkgbmFtZSwgUFFkYihjb25uKSwgUFFlcnJvck1lc3NhZ2UoY29ubikp OwogCQlpZiAoc3RyY21wKHR5cGUsICJTQ0hFTUEiKSA9PSAwKQotCQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiByZWluZGV4aW5nIG9mIHNjaGVtYSBcIiVzXCIgaW4gZGF0YWJhc2UgXCIl c1wiIGZhaWxlZDogJXMiKSwKLQkJCQkJcHJvZ25hbWUsIG5hbWUsIFBRZGIoY29ubiksIFBR ZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJCXBnX2xvZ19lcnJvcigicmVpbmRleGluZyBvZiBz Y2hlbWEgXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiBmYWlsZWQ6ICVzIiwKKwkJCQkJCSBu YW1lLCBQUWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAJCWVsc2UKLQkJCWZw cmludGYoc3RkZXJyLCBfKCIlczogcmVpbmRleGluZyBvZiBkYXRhYmFzZSBcIiVzXCIgZmFp bGVkOiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgUFFkYihjb25uKSwgUFFlcnJvck1lc3NhZ2Uo Y29ubikpOworCQkJcGdfbG9nX2Vycm9yKCJyZWluZGV4aW5nIG9mIGRhdGFiYXNlIFwiJXNc IiBmYWlsZWQ6ICVzIiwKKwkJCQkJCSBQUWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShjb25u KSk7CiAJCVBRZmluaXNoKGNvbm4pOwogCQlleGl0KDEpOwogCX0KQEAgLTM4Niw4ICszODgs OCBAQCByZWluZGV4X3N5c3RlbV9jYXRhbG9ncyhjb25zdCBjaGFyICpkYm5hbWUsIGNvbnN0 IGNoYXIgKmhvc3QsIGNvbnN0IGNoYXIgKnBvcnQsCiAKIAlpZiAoIWV4ZWN1dGVNYWludGVu YW5jZUNvbW1hbmQoY29ubiwgc3FsLmRhdGEsIGVjaG8pKQogCXsKLQkJZnByaW50ZihzdGRl cnIsIF8oIiVzOiByZWluZGV4aW5nIG9mIHN5c3RlbSBjYXRhbG9ncyBmYWlsZWQ6ICVzIiks Ci0JCQkJcHJvZ25hbWUsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwkJcGdfbG9nX2Vycm9y KCJyZWluZGV4aW5nIG9mIHN5c3RlbSBjYXRhbG9ncyBmYWlsZWQ6ICVzIiwKKwkJCQkJIFBR ZXJyb3JNZXNzYWdlKGNvbm4pKTsKIAkJUFFmaW5pc2goY29ubik7CiAJCWV4aXQoMSk7CiAJ fQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9zY3JpcHRzL3ZhY3V1bWRiLmMgYi9zcmMvYmluL3Nj cmlwdHMvdmFjdXVtZGIuYwppbmRleCA1YWM0MWVhNzU3Li4yNWZmMTllMGExIDEwMDY0NAot LS0gYS9zcmMvYmluL3NjcmlwdHMvdmFjdXVtZGIuYworKysgYi9zcmMvYmluL3NjcmlwdHMv dmFjdXVtZGIuYwpAQCAtMjAsNiArMjAsNyBAQAogCiAjaW5jbHVkZSAiY29tbW9uLmgiCiAj aW5jbHVkZSAiZmVfdXRpbHMvY29ubmVjdC5oIgorI2luY2x1ZGUgImZlX3V0aWxzL2xvZ2dp bmcuaCIKICNpbmNsdWRlICJmZV91dGlscy9zaW1wbGVfbGlzdC5oIgogI2luY2x1ZGUgImZl X3V0aWxzL3N0cmluZ191dGlscy5oIgogCkBAIC0xNDEsOCArMTQyLDggQEAgbWFpbihpbnQg YXJnYywgY2hhciAqYXJndltdKQogCS8qIGluaXRpYWxpemUgb3B0aW9ucyB0byBhbGwgZmFs c2UgKi8KIAltZW1zZXQoJnZhY29wdHMsIDAsIHNpemVvZih2YWNvcHRzKSk7CiAKKwlwZ19s b2dnaW5nX2luaXQoYXJndlswXSk7CiAJcHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlsw XSk7Ci0KIAlzZXRfcGdsb2NhbGVfcGdzZXJ2aWNlKGFyZ3ZbMF0sIFBHX1RFWFRET01BSU4o InBnc2NyaXB0cyIpKTsKIAogCWhhbmRsZV9oZWxwX3ZlcnNpb25fb3B0cyhhcmdjLCBhcmd2 LCAidmFjdXVtZGIiLCBoZWxwKTsKQEAgLTIwMywxNCArMjA0LDEzIEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQljb25jdXJyZW50Q29ucyA9IGF0b2kob3B0YXJnKTsK IAkJCQlpZiAoY29uY3VycmVudENvbnMgPD0gMCkKIAkJCQl7Ci0JCQkJCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogbnVtYmVyIG9mIHBhcmFsbGVsIGpvYnMgbXVzdCBiZSBhdCBsZWFzdCAx XG4iKSwKLQkJCQkJCQlwcm9nbmFtZSk7CisJCQkJCXBnX2xvZ19lcnJvcigibnVtYmVyIG9m IHBhcmFsbGVsIGpvYnMgbXVzdCBiZSBhdCBsZWFzdCAxIik7CiAJCQkJCWV4aXQoMSk7CiAJ CQkJfQogCQkJCWlmIChjb25jdXJyZW50Q29ucyA+IEZEX1NFVFNJWkUgLSAxKQogCQkJCXsK LQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0b28gbWFueSBwYXJhbGxlbCBqb2JzIHJl cXVlc3RlZCAobWF4aW11bTogJWQpXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSwgRkRfU0VUU0la RSAtIDEpOworCQkJCQlwZ19sb2dfZXJyb3IoInRvbyBtYW55IHBhcmFsbGVsIGpvYnMgcmVx dWVzdGVkIChtYXhpbXVtOiAlZCkiLAorCQkJCQkJCQkgRkRfU0VUU0laRSAtIDEpOwogCQkJ CQlleGl0KDEpOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTIzMCw4ICsyMzAsNyBAQCBtYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQkJdmFjb3B0cy5taW5feGlkX2FnZSA9IGF0 b2kob3B0YXJnKTsKIAkJCQlpZiAodmFjb3B0cy5taW5feGlkX2FnZSA8PSAwKQogCQkJCXsK LQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBtaW5pbXVtIHRyYW5zYWN0aW9uIElEIGFn ZSBtdXN0IGJlIGF0IGxlYXN0IDFcbiIpLAotCQkJCQkJCXByb2duYW1lKTsKKwkJCQkJcGdf bG9nX2Vycm9yKCJtaW5pbXVtIHRyYW5zYWN0aW9uIElEIGFnZSBtdXN0IGJlIGF0IGxlYXN0 IDEiKTsKIAkJCQkJZXhpdCgxKTsKIAkJCQl9CiAJCQkJYnJlYWs7CkBAIC0yMzksOCArMjM4 LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCXZhY29wdHMubWluX214 aWRfYWdlID0gYXRvaShvcHRhcmcpOwogCQkJCWlmICh2YWNvcHRzLm1pbl9teGlkX2FnZSA8 PSAwKQogCQkJCXsKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBtaW5pbXVtIG11bHRp eGFjdCBJRCBhZ2UgbXVzdCBiZSBhdCBsZWFzdCAxXG4iKSwKLQkJCQkJCQlwcm9nbmFtZSk7 CisJCQkJCXBnX2xvZ19lcnJvcigibWluaW11bSBtdWx0aXhhY3QgSUQgYWdlIG11c3QgYmUg YXQgbGVhc3QgMSIpOwogCQkJCQlleGl0KDEpOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTI2 Miw4ICsyNjAsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAKIAlpZiAob3B0 aW5kIDwgYXJnYykKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogdG9vIG1hbnkgY29t bWFuZC1saW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKVxuIiksCi0JCQkJcHJvZ25h bWUsIGFyZ3Zbb3B0aW5kXSk7CisJCXBnX2xvZ19lcnJvcigidG9vIG1hbnkgY29tbWFuZC1s aW5lIGFyZ3VtZW50cyAoZmlyc3QgaXMgXCIlc1wiKSIsCisJCQkJCSBhcmd2W29wdGluZF0p OwogCQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5IFwiJXMgLS1oZWxwXCIgZm9yIG1vcmUgaW5m b3JtYXRpb24uXG4iKSwgcHJvZ25hbWUpOwogCQlleGl0KDEpOwogCX0KQEAgLTI3MiwyMCAr MjcwLDIwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl7CiAJCWlmICh2YWNv cHRzLmZ1bGwpCiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY2Fubm90IHVzZSB0 aGUgXCIlc1wiIG9wdGlvbiB3aGVuIHBlcmZvcm1pbmcgb25seSBhbmFseXplXG4iKSwKLQkJ CQkJcHJvZ25hbWUsICJmdWxsIik7CisJCQlwZ19sb2dfZXJyb3IoImNhbm5vdCB1c2UgdGhl IFwiJXNcIiBvcHRpb24gd2hlbiBwZXJmb3JtaW5nIG9ubHkgYW5hbHl6ZSIsCisJCQkJCQkg ImZ1bGwiKTsKIAkJCWV4aXQoMSk7CiAJCX0KIAkJaWYgKHZhY29wdHMuZnJlZXplKQogCQl7 Ci0JCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNhbm5vdCB1c2UgdGhlIFwiJXNcIiBvcHRp b24gd2hlbiBwZXJmb3JtaW5nIG9ubHkgYW5hbHl6ZVxuIiksCi0JCQkJCXByb2duYW1lLCAi ZnJlZXplIik7CisJCQlwZ19sb2dfZXJyb3IoImNhbm5vdCB1c2UgdGhlIFwiJXNcIiBvcHRp b24gd2hlbiBwZXJmb3JtaW5nIG9ubHkgYW5hbHl6ZSIsCisJCQkJCQkgImZyZWV6ZSIpOwog CQkJZXhpdCgxKTsKIAkJfQogCQlpZiAodmFjb3B0cy5kaXNhYmxlX3BhZ2Vfc2tpcHBpbmcp CiAJCXsKLQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogY2Fubm90IHVzZSB0aGUgXCIlc1wi IG9wdGlvbiB3aGVuIHBlcmZvcm1pbmcgb25seSBhbmFseXplXG4iKSwKLQkJCQkJcHJvZ25h bWUsICJkaXNhYmxlLXBhZ2Utc2tpcHBpbmciKTsKKwkJCXBnX2xvZ19lcnJvcigiY2Fubm90 IHVzZSB0aGUgXCIlc1wiIG9wdGlvbiB3aGVuIHBlcmZvcm1pbmcgb25seSBhbmFseXplIiwK KwkJCQkJCSAiZGlzYWJsZS1wYWdlLXNraXBwaW5nIik7CiAJCQlleGl0KDEpOwogCQl9CiAJ CS8qIGFsbG93ICdhbmRfYW5hbHl6ZScgd2l0aCAnYW5hbHl6ZV9vbmx5JyAqLwpAQCAtMzAx LDE0ICsyOTksMTIgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCXsKIAkJaWYg KGRibmFtZSkKIAkJewotCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgdmFjdXVt IGFsbCBkYXRhYmFzZXMgYW5kIGEgc3BlY2lmaWMgb25lIGF0IHRoZSBzYW1lIHRpbWVcbiIp LAotCQkJCQlwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3IoImNhbm5vdCB2YWN1dW0gYWxs IGRhdGFiYXNlcyBhbmQgYSBzcGVjaWZpYyBvbmUgYXQgdGhlIHNhbWUgdGltZSIpOwogCQkJ ZXhpdCgxKTsKIAkJfQogCQlpZiAodGFibGVzLmhlYWQgIT0gTlVMTCkKIAkJewotCQkJZnBy aW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgdmFjdXVtIHNwZWNpZmljIHRhYmxlKHMpIGlu IGFsbCBkYXRhYmFzZXNcbiIpLAotCQkJCQlwcm9nbmFtZSk7CisJCQlwZ19sb2dfZXJyb3Io ImNhbm5vdCB2YWN1dW0gc3BlY2lmaWMgdGFibGUocykgaW4gYWxsIGRhdGFiYXNlcyIpOwog CQkJZXhpdCgxKTsKIAkJfQogCkBAIC00MTMsMzAgKzQwOSwzMCBAQCB2YWN1dW1fb25lX2Rh dGFiYXNlKGNvbnN0IGNoYXIgKmRibmFtZSwgdmFjdXVtaW5nT3B0aW9ucyAqdmFjb3B0cywK IAlpZiAodmFjb3B0cy0+ZGlzYWJsZV9wYWdlX3NraXBwaW5nICYmIFBRc2VydmVyVmVyc2lv bihjb25uKSA8IDkwNjAwKQogCXsKIAkJUFFmaW5pc2goY29ubik7Ci0JCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY2Fubm90IHVzZSB0aGUgXCIlc1wiIG9wdGlvbiBvbiBzZXJ2ZXIgdmVy c2lvbnMgb2xkZXIgdGhhbiBQb3N0Z3JlU1FMIDkuNlxuIiksCi0JCQkJcHJvZ25hbWUsICJk aXNhYmxlLXBhZ2Utc2tpcHBpbmciKTsKKwkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgdXNlIHRo ZSBcIiVzXCIgb3B0aW9uIG9uIHNlcnZlciB2ZXJzaW9ucyBvbGRlciB0aGFuIFBvc3RncmVT UUwgOS42IiwKKwkJCQkJICJkaXNhYmxlLXBhZ2Utc2tpcHBpbmciKTsKIAkJZXhpdCgxKTsK IAl9CiAKIAlpZiAodmFjb3B0cy0+c2tpcF9sb2NrZWQgJiYgUFFzZXJ2ZXJWZXJzaW9uKGNv bm4pIDwgMTIwMDAwKQogCXsKIAkJUFFmaW5pc2goY29ubik7Ci0JCWZwcmludGYoc3RkZXJy LCBfKCIlczogY2Fubm90IHVzZSB0aGUgXCIlc1wiIG9wdGlvbiBvbiBzZXJ2ZXIgdmVyc2lv bnMgb2xkZXIgdGhhbiBQb3N0Z3JlU1FMIDEyXG4iKSwKLQkJCQlwcm9nbmFtZSwgInNraXAt bG9ja2VkIik7CisJCXBnX2xvZ19lcnJvcigiY2Fubm90IHVzZSB0aGUgXCIlc1wiIG9wdGlv biBvbiBzZXJ2ZXIgdmVyc2lvbnMgb2xkZXIgdGhhbiBQb3N0Z3JlU1FMIDEyIiwKKwkJCQkJ ICJza2lwLWxvY2tlZCIpOwogCQlleGl0KDEpOwogCX0KIAogCWlmICh2YWNvcHRzLT5taW5f eGlkX2FnZSAhPSAwICYmIFBRc2VydmVyVmVyc2lvbihjb25uKSA8IDkwNjAwKQogCXsKLQkJ ZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgdXNlIHRoZSBcIiVzXCIgb3B0aW9uIG9u IHNlcnZlciB2ZXJzaW9ucyBvbGRlciB0aGFuIFBvc3RncmVTUUwgOS42XG4iKSwKLQkJCQlw cm9nbmFtZSwgIi0tbWluLXhpZC1hZ2UiKTsKKwkJcGdfbG9nX2Vycm9yKCJjYW5ub3QgdXNl IHRoZSBcIiVzXCIgb3B0aW9uIG9uIHNlcnZlciB2ZXJzaW9ucyBvbGRlciB0aGFuIFBvc3Rn cmVTUUwgOS42IiwKKwkJCQkJICItLW1pbi14aWQtYWdlIik7CiAJCWV4aXQoMSk7CiAJfQog CiAJaWYgKHZhY29wdHMtPm1pbl9teGlkX2FnZSAhPSAwICYmIFBRc2VydmVyVmVyc2lvbihj b25uKSA8IDkwNjAwKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjYW5ub3QgdXNl IHRoZSBcIiVzXCIgb3B0aW9uIG9uIHNlcnZlciB2ZXJzaW9ucyBvbGRlciB0aGFuIFBvc3Rn cmVTUUwgOS42XG4iKSwKLQkJCQlwcm9nbmFtZSwgIi0tbWluLW14aWQtYWdlIik7CisJCXBn X2xvZ19lcnJvcigiY2Fubm90IHVzZSB0aGUgXCIlc1wiIG9wdGlvbiBvbiBzZXJ2ZXIgdmVy c2lvbnMgb2xkZXIgdGhhbiBQb3N0Z3JlU1FMIDkuNiIsCisJCQkJCSAiLS1taW4tbXhpZC1h Z2UiKTsKIAkJZXhpdCgxKTsKIAl9CiAKQEAgLTk0MCwxMiArOTM2LDExIEBAIHJ1bl92YWN1 dW1fY29tbWFuZChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnNxbCwgYm9vbCBlY2hvLAog CWlmICghc3RhdHVzKQogCXsKIAkJaWYgKHRhYmxlKQotCQkJZnByaW50ZihzdGRlcnIsCi0J CQkJCV8oIiVzOiB2YWN1dW1pbmcgb2YgdGFibGUgXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNc IiBmYWlsZWQ6ICVzIiksCi0JCQkJCXByb2duYW1lLCB0YWJsZSwgUFFkYihjb25uKSwgUFFl cnJvck1lc3NhZ2UoY29ubikpOworCQkJcGdfbG9nX2Vycm9yKCJ2YWN1dW1pbmcgb2YgdGFi bGUgXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiBmYWlsZWQ6ICVzIiwKKwkJCQkJCSB0YWJs ZSwgUFFkYihjb25uKSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOwogCQllbHNlCi0JCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IHZhY3V1bWluZyBvZiBkYXRhYmFzZSBcIiVzXCIgZmFpbGVk OiAlcyIpLAotCQkJCQlwcm9nbmFtZSwgUFFkYihjb25uKSwgUFFlcnJvck1lc3NhZ2UoY29u bikpOworCQkJcGdfbG9nX2Vycm9yKCJ2YWN1dW1pbmcgb2YgZGF0YWJhc2UgXCIlc1wiIGZh aWxlZDogJXMiLAorCQkJCQkJIFBRZGIoY29ubiksIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsK IAogCQlpZiAoIWFzeW5jKQogCQl7CkBAIC0xMDc5LDggKzEwNzQsOCBAQCBQcm9jZXNzUXVl cnlSZXN1bHQoUEdjb25uICpjb25uLCBQR3Jlc3VsdCAqcmVzdWx0LCBjb25zdCBjaGFyICpw cm9nbmFtZSkKIAl7CiAJCWNoYXIJICAgKnNxbFN0YXRlID0gUFFyZXN1bHRFcnJvckZpZWxk KHJlc3VsdCwgUEdfRElBR19TUUxTVEFURSk7CiAKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiB2YWN1dW1pbmcgb2YgZGF0YWJhc2UgXCIlc1wiIGZhaWxlZDogJXMiKSwKLQkJCQlwcm9n bmFtZSwgUFFkYihjb25uKSwgUFFlcnJvck1lc3NhZ2UoY29ubikpOworCQlwZ19sb2dfZXJy b3IoInZhY3V1bWluZyBvZiBkYXRhYmFzZSBcIiVzXCIgZmFpbGVkOiAlcyIsCisJCQkJCSBQ UWRiKGNvbm4pLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CiAKIAkJaWYgKHNxbFN0YXRlICYm IHN0cmNtcChzcWxTdGF0ZSwgRVJSQ09ERV9VTkRFRklORURfVEFCTEUpICE9IDApCiAJCXsK ZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vY29udHJvbGRhdGFfdXRpbHMuYyBiL3NyYy9jb21t b24vY29udHJvbGRhdGFfdXRpbHMuYwppbmRleCBhYmZlNzA2NWY1Li4xNzk5OGE5ZjM5IDEw MDY0NAotLS0gYS9zcmMvY29tbW9uL2NvbnRyb2xkYXRhX3V0aWxzLmMKKysrIGIvc3JjL2Nv bW1vbi9jb250cm9sZGF0YV91dGlscy5jCkBAIC0yNiwxMCArMjYsMTMgQEAKIAogI2luY2x1 ZGUgImNhdGFsb2cvcGdfY29udHJvbC5oIgogI2luY2x1ZGUgImNvbW1vbi9jb250cm9sZGF0 YV91dGlscy5oIgorI2lmZGVmIEZST05URU5ECisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2lu Zy5oIgorI2VuZGlmCiAjaW5jbHVkZSAicG9ydC9wZ19jcmMzMmMuaCIKIAogLyoKLSAqIGdl dF9jb250cm9sZmlsZShjaGFyICpEYXRhRGlyLCBjb25zdCBjaGFyICpwcm9nbmFtZSwgYm9v bCAqY3JjX29rX3ApCisgKiBnZXRfY29udHJvbGZpbGUoY2hhciAqRGF0YURpciwgYm9vbCAq Y3JjX29rX3ApCiAgKgogICogR2V0IGNvbnRyb2xmaWxlIHZhbHVlcy4gIFRoZSByZXN1bHQg aXMgcmV0dXJuZWQgYXMgYSBwYWxsb2MnZCBjb3B5IG9mIHRoZQogICogY29udHJvbCBmaWxl IGRhdGEuCkBAIC0zOCw3ICs0MSw3IEBACiAgKiBmaWxlIGRhdGEgaXMgY29ycmVjdC4KICAq LwogQ29udHJvbEZpbGVEYXRhICoKLWdldF9jb250cm9sZmlsZShjb25zdCBjaGFyICpEYXRh RGlyLCBjb25zdCBjaGFyICpwcm9nbmFtZSwgYm9vbCAqY3JjX29rX3ApCitnZXRfY29udHJv bGZpbGUoY29uc3QgY2hhciAqRGF0YURpciwgYm9vbCAqY3JjX29rX3ApCiB7CiAJQ29udHJv bEZpbGVEYXRhICpDb250cm9sRmlsZTsKIAlpbnQJCQlmZDsKQEAgLTU5LDggKzYyLDggQEAg Z2V0X2NvbnRyb2xmaWxlKGNvbnN0IGNoYXIgKkRhdGFEaXIsIGNvbnN0IGNoYXIgKnByb2du YW1lLCBib29sICpjcmNfb2tfcCkKIAkJCQkJCUNvbnRyb2xGaWxlUGF0aCkpKTsKICNlbHNl CiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBvcGVuIGZpbGUgXCIl c1wiIGZvciByZWFkaW5nOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIENvbnRyb2xGaWxlUGF0 aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcGdfbG9nX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBm aWxlIFwiJXNcIiBmb3IgcmVhZGluZzogJW0iLAorCQkJCQkgQ29udHJvbEZpbGVQYXRoKTsK IAkJZXhpdChFWElUX0ZBSUxVUkUpOwogCX0KICNlbmRpZgpAQCAtNzUsOCArNzgsNyBAQCBn ZXRfY29udHJvbGZpbGUoY29uc3QgY2hhciAqRGF0YURpciwgY29uc3QgY2hhciAqcHJvZ25h bWUsIGJvb2wgKmNyY19va19wKQogCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcmVhZCBmaWxl IFwiJXNcIjogJW0iLCBDb250cm9sRmlsZVBhdGgpKSk7CiAjZWxzZQogCQl7Ci0JCQlmcHJp bnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlc1xuIiks Ci0JCQkJCXByb2duYW1lLCBDb250cm9sRmlsZVBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJ CQlwZ19sb2dfZmF0YWwoImNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiAlbSIsIENvbnRy b2xGaWxlUGF0aCk7CiAJCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAJCX0KICNlbmRpZgpAQCAt ODgsOCArOTAsOCBAQCBnZXRfY29udHJvbGZpbGUoY29uc3QgY2hhciAqRGF0YURpciwgY29u c3QgY2hhciAqcHJvZ25hbWUsIGJvb2wgKmNyY19va19wKQogCQkJCQkJCUNvbnRyb2xGaWxl UGF0aCwgciwgc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpKSk7CiAjZWxzZQogCQl7Ci0JCQlm cHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCByZWFkIGZpbGUgXCIlc1wiOiByZWFk ICVkIG9mICV6dVxuIiksCi0JCQkJCXByb2duYW1lLCBDb250cm9sRmlsZVBhdGgsIHIsIHNp emVvZihDb250cm9sRmlsZURhdGEpKTsKKwkJCXBnX2xvZ19mYXRhbCgiY291bGQgbm90IHJl YWQgZmlsZSBcIiVzXCI6IHJlYWQgJWQgb2YgJXp1IiwKKwkJCQkJCSBDb250cm9sRmlsZVBh dGgsIHIsIHNpemVvZihDb250cm9sRmlsZURhdGEpKTsKIAkJCWV4aXQoRVhJVF9GQUlMVVJF KTsKIAkJfQogI2VuZGlmCkBAIC0xMTIsMTAgKzExNCwxMCBAQCBnZXRfY29udHJvbGZpbGUo Y29uc3QgY2hhciAqRGF0YURpciwgY29uc3QgY2hhciAqcHJvZ25hbWUsIGJvb2wgKmNyY19v a19wKQogI2lmbmRlZiBGUk9OVEVORAogCQllbG9nKEVSUk9SLCBfKCJieXRlIG9yZGVyaW5n IG1pc21hdGNoIikpOwogI2Vsc2UKLQkJcHJpbnRmKF8oIldBUk5JTkc6IHBvc3NpYmxlIGJ5 dGUgb3JkZXJpbmcgbWlzbWF0Y2hcbiIKLQkJCQkgIlRoZSBieXRlIG9yZGVyaW5nIHVzZWQg dG8gc3RvcmUgdGhlIHBnX2NvbnRyb2wgZmlsZSBtaWdodCBub3QgbWF0Y2ggdGhlIG9uZVxu IgotCQkJCSAidXNlZCBieSB0aGlzIHByb2dyYW0uICBJbiB0aGF0IGNhc2UgdGhlIHJlc3Vs dHMgYmVsb3cgd291bGQgYmUgaW5jb3JyZWN0LCBhbmRcbiIKLQkJCQkgInRoZSBQb3N0Z3Jl U1FMIGluc3RhbGxhdGlvbiB3b3VsZCBiZSBpbmNvbXBhdGlibGUgd2l0aCB0aGlzIGRhdGEg ZGlyZWN0b3J5LlxuIikpOworCQlwZ19sb2dfd2FybmluZygicG9zc2libGUgYnl0ZSBvcmRl cmluZyBtaXNtYXRjaFxuIgorCQkJCQkgICAiVGhlIGJ5dGUgb3JkZXJpbmcgdXNlZCB0byBz dG9yZSB0aGUgcGdfY29udHJvbCBmaWxlIG1pZ2h0IG5vdCBtYXRjaCB0aGUgb25lXG4iCisJ CQkJCSAgICJ1c2VkIGJ5IHRoaXMgcHJvZ3JhbS4gIEluIHRoYXQgY2FzZSB0aGUgcmVzdWx0 cyBiZWxvdyB3b3VsZCBiZSBpbmNvcnJlY3QsIGFuZFxuIgorCQkJCQkgICAidGhlIFBvc3Rn cmVTUUwgaW5zdGFsbGF0aW9uIHdvdWxkIGJlIGluY29tcGF0aWJsZSB3aXRoIHRoaXMgZGF0 YSBkaXJlY3RvcnkuIik7CiAjZW5kaWYKIAogCXJldHVybiBDb250cm9sRmlsZTsKZGlmZiAt LWdpdCBhL3NyYy9jb21tb24vZmlsZV91dGlscy5jIGIvc3JjL2NvbW1vbi9maWxlX3V0aWxz LmMKaW5kZXggNGJjYjljMWUwNS4uZTQ1YjBkOGUwZSAxMDA2NDQKLS0tIGEvc3JjL2NvbW1v bi9maWxlX3V0aWxzLmMKKysrIGIvc3JjL2NvbW1vbi9maWxlX3V0aWxzLmMKQEAgLTIwLDYg KzIwLDcgQEAKICNpbmNsdWRlIDx1bmlzdGQuaD4KIAogI2luY2x1ZGUgImNvbW1vbi9maWxl X3V0aWxzLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgogCiAKIC8qIERlZmlu ZSBQR19GTFVTSF9EQVRBX1dPUktTIGlmIHdlIGhhdmUgYW4gaW1wbGVtZW50YXRpb24gZm9y IHBnX2ZsdXNoX2RhdGEgKi8KQEAgLTM1LDEyICszNiwxMSBAQAogI2RlZmluZSBNSU5JTVVN X1ZFUlNJT05fRk9SX1BHX1dBTAkxMDAwMDAKIAogI2lmZGVmIFBHX0ZMVVNIX0RBVEFfV09S S1MKLXN0YXRpYyBpbnQgcHJlX3N5bmNfZm5hbWUoY29uc3QgY2hhciAqZm5hbWUsIGJvb2wg aXNkaXIsCi0JCQkgICBjb25zdCBjaGFyICpwcm9nbmFtZSk7CitzdGF0aWMgaW50IHByZV9z eW5jX2ZuYW1lKGNvbnN0IGNoYXIgKmZuYW1lLCBib29sIGlzZGlyKTsKICNlbmRpZgogc3Rh dGljIHZvaWQgd2Fsa2Rpcihjb25zdCBjaGFyICpwYXRoLAotCQlpbnQgKCphY3Rpb24pIChj b25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2RpciwgY29uc3QgY2hhciAqcHJvZ25hbWUpLAot CQlib29sIHByb2Nlc3Nfc3ltbGlua3MsIGNvbnN0IGNoYXIgKnByb2duYW1lKTsKKwkJaW50 ICgqYWN0aW9uKSAoY29uc3QgY2hhciAqZm5hbWUsIGJvb2wgaXNkaXIpLAorCQlib29sIHBy b2Nlc3Nfc3ltbGlua3MpOwogCiAvKgogICogSXNzdWUgZnN5bmMgcmVjdXJzaXZlbHkgb24g UEdEQVRBIGFuZCBhbGwgaXRzIGNvbnRlbnRzLgpAQCAtNTYsNyArNTYsNiBAQCBzdGF0aWMg dm9pZCB3YWxrZGlyKGNvbnN0IGNoYXIgKnBhdGgsCiAgKi8KIHZvaWQKIGZzeW5jX3BnZGF0 YShjb25zdCBjaGFyICpwZ19kYXRhLAotCQkJIGNvbnN0IGNoYXIgKnByb2duYW1lLAogCQkJ IGludCBzZXJ2ZXJWZXJzaW9uKQogewogCWJvb2wJCXhsb2dfaXNfc3ltbGluazsKQEAgLTc5 LDggKzc4LDcgQEAgZnN5bmNfcGdkYXRhKGNvbnN0IGNoYXIgKnBnX2RhdGEsCiAJCXN0cnVj dCBzdGF0IHN0OwogCiAJCWlmIChsc3RhdChwZ193YWwsICZzdCkgPCAwKQotCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJXNcbiIpLAot CQkJCQlwcm9nbmFtZSwgcGdfd2FsLCBzdHJlcnJvcihlcnJubykpOworCQkJcGdfbG9nX2Vy cm9yKCJjb3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJW0iLCBwZ193YWwpOwogCQllbHNl IGlmIChTX0lTTE5LKHN0LnN0X21vZGUpKQogCQkJeGxvZ19pc19zeW1saW5rID0gdHJ1ZTsK IAl9CkBAIC05NCwxMCArOTIsMTAgQEAgZnN5bmNfcGdkYXRhKGNvbnN0IGNoYXIgKnBnX2Rh dGEsCiAJICogZGlyZWN0b3J5IGFuZCBpdHMgY29udGVudHMuCiAJICovCiAjaWZkZWYgUEdf RkxVU0hfREFUQV9XT1JLUwotCXdhbGtkaXIocGdfZGF0YSwgcHJlX3N5bmNfZm5hbWUsIGZh bHNlLCBwcm9nbmFtZSk7CisJd2Fsa2RpcihwZ19kYXRhLCBwcmVfc3luY19mbmFtZSwgZmFs c2UpOwogCWlmICh4bG9nX2lzX3N5bWxpbmspCi0JCXdhbGtkaXIocGdfd2FsLCBwcmVfc3lu Y19mbmFtZSwgZmFsc2UsIHByb2duYW1lKTsKLQl3YWxrZGlyKHBnX3RibHNwYywgcHJlX3N5 bmNfZm5hbWUsIHRydWUsIHByb2duYW1lKTsKKwkJd2Fsa2RpcihwZ193YWwsIHByZV9zeW5j X2ZuYW1lLCBmYWxzZSk7CisJd2Fsa2RpcihwZ190YmxzcGMsIHByZV9zeW5jX2ZuYW1lLCB0 cnVlKTsKICNlbmRpZgogCiAJLyoKQEAgLTEwOSwxMCArMTA3LDEwIEBAIGZzeW5jX3BnZGF0 YShjb25zdCBjaGFyICpwZ19kYXRhLAogCSAqIGluIHBnX3RibHNwYywgdGhleSdsbCBnZXQg ZnN5bmMnZCB0d2ljZS4gIFRoYXQncyBub3QgYW4gZXhwZWN0ZWQgY2FzZQogCSAqIHNvIHdl IGRvbid0IHdvcnJ5IGFib3V0IG9wdGltaXppbmcgaXQuCiAJICovCi0Jd2Fsa2RpcihwZ19k YXRhLCBmc3luY19mbmFtZSwgZmFsc2UsIHByb2duYW1lKTsKKwl3YWxrZGlyKHBnX2RhdGEs IGZzeW5jX2ZuYW1lLCBmYWxzZSk7CiAJaWYgKHhsb2dfaXNfc3ltbGluaykKLQkJd2Fsa2Rp cihwZ193YWwsIGZzeW5jX2ZuYW1lLCBmYWxzZSwgcHJvZ25hbWUpOwotCXdhbGtkaXIocGdf dGJsc3BjLCBmc3luY19mbmFtZSwgdHJ1ZSwgcHJvZ25hbWUpOworCQl3YWxrZGlyKHBnX3dh bCwgZnN5bmNfZm5hbWUsIGZhbHNlKTsKKwl3YWxrZGlyKHBnX3RibHNwYywgZnN5bmNfZm5h bWUsIHRydWUpOwogfQogCiAvKgpAQCAtMTIxLDE3ICsxMTksMTcgQEAgZnN5bmNfcGdkYXRh KGNvbnN0IGNoYXIgKnBnX2RhdGEsCiAgKiBUaGlzIGlzIGEgY29udmVuaWVudCB3cmFwcGVy IG9uIHRvcCBvZiB3YWxrZGlyKCkuCiAgKi8KIHZvaWQKLWZzeW5jX2Rpcl9yZWN1cnNlKGNv bnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqcHJvZ25hbWUpCitmc3luY19kaXJfcmVjdXJz ZShjb25zdCBjaGFyICpkaXIpCiB7CiAJLyoKIAkgKiBJZiBwb3NzaWJsZSwgaGludCB0byB0 aGUga2VybmVsIHRoYXQgd2UncmUgc29vbiBnb2luZyB0byBmc3luYyB0aGUgZGF0YQogCSAq IGRpcmVjdG9yeSBhbmQgaXRzIGNvbnRlbnRzLgogCSAqLwogI2lmZGVmIFBHX0ZMVVNIX0RB VEFfV09SS1MKLQl3YWxrZGlyKGRpciwgcHJlX3N5bmNfZm5hbWUsIGZhbHNlLCBwcm9nbmFt ZSk7CisJd2Fsa2RpcihkaXIsIHByZV9zeW5jX2ZuYW1lLCBmYWxzZSk7CiAjZW5kaWYKIAot CXdhbGtkaXIoZGlyLCBmc3luY19mbmFtZSwgZmFsc2UsIHByb2duYW1lKTsKKwl3YWxrZGly KGRpciwgZnN5bmNfZm5hbWUsIGZhbHNlKTsKIH0KIAogLyoKQEAgLTE1MCw4ICsxNDgsOCBA QCBmc3luY19kaXJfcmVjdXJzZShjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKnByb2du YW1lKQogICovCiBzdGF0aWMgdm9pZAogd2Fsa2Rpcihjb25zdCBjaGFyICpwYXRoLAotCQlp bnQgKCphY3Rpb24pIChjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2RpciwgY29uc3QgY2hh ciAqcHJvZ25hbWUpLAotCQlib29sIHByb2Nlc3Nfc3ltbGlua3MsIGNvbnN0IGNoYXIgKnBy b2duYW1lKQorCQlpbnQgKCphY3Rpb24pIChjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2Rp ciksCisJCWJvb2wgcHJvY2Vzc19zeW1saW5rcykKIHsKIAlESVIJCSAgICpkaXI7CiAJc3Ry dWN0IGRpcmVudCAqZGU7CkBAIC0xNTksOCArMTU3LDcgQEAgd2Fsa2Rpcihjb25zdCBjaGFy ICpwYXRoLAogCWRpciA9IG9wZW5kaXIocGF0aCk7CiAJaWYgKGRpciA9PSBOVUxMKQogCXsK LQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIl c1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJ CXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBw YXRoKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMTgzLDIwICsxODAsMTggQEAgd2Fsa2Rpcihj b25zdCBjaGFyICpwYXRoLAogCiAJCWlmIChzcmV0IDwgMCkKIAkJewotCQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgc3RhdCBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJ CQlwcm9nbmFtZSwgc3VicGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IHN0YXQgZmlsZSBcIiVzXCI6ICVtIiwgc3VicGF0aCk7CiAJCQljb250 aW51ZTsKIAkJfQogCiAJCWlmIChTX0lTUkVHKGZzdC5zdF9tb2RlKSkKLQkJCSgqYWN0aW9u KSAoc3VicGF0aCwgZmFsc2UsIHByb2duYW1lKTsKKwkJCSgqYWN0aW9uKSAoc3VicGF0aCwg ZmFsc2UpOwogCQllbHNlIGlmIChTX0lTRElSKGZzdC5zdF9tb2RlKSkKLQkJCXdhbGtkaXIo c3VicGF0aCwgYWN0aW9uLCBmYWxzZSwgcHJvZ25hbWUpOworCQkJd2Fsa2RpcihzdWJwYXRo LCBhY3Rpb24sIGZhbHNlKTsKIAl9CiAKIAlpZiAoZXJybm8pCi0JCWZwcmludGYoc3RkZXJy LCBfKCIlczogY291bGQgbm90IHJlYWQgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJ CXByb2duYW1lLCBwYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgcGF0aCk7CiAKIAkodm9pZCkg Y2xvc2VkaXIoZGlyKTsKIApAQCAtMjA2LDcgKzIwMSw3IEBAIHdhbGtkaXIoY29uc3QgY2hh ciAqcGF0aCwKIAkgKiBzeW5jZWQuICBSZWNlbnQgdmVyc2lvbnMgb2YgZXh0NCBoYXZlIG1h ZGUgdGhlIHdpbmRvdyBtdWNoIHdpZGVyIGJ1dAogCSAqIGl0J3MgYmVlbiBhbiBpc3N1ZSBm b3IgZXh0MyBhbmQgb3RoZXIgZmlsZXN5c3RlbXMgaW4gdGhlIHBhc3QuCiAJICovCi0JKCph Y3Rpb24pIChwYXRoLCB0cnVlLCBwcm9nbmFtZSk7CisJKCphY3Rpb24pIChwYXRoLCB0cnVl KTsKIH0KIAogLyoKQEAgLTIxOCw3ICsyMTMsNyBAQCB3YWxrZGlyKGNvbnN0IGNoYXIgKnBh dGgsCiAjaWZkZWYgUEdfRkxVU0hfREFUQV9XT1JLUwogCiBzdGF0aWMgaW50Ci1wcmVfc3lu Y19mbmFtZShjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2RpciwgY29uc3QgY2hhciAqcHJv Z25hbWUpCitwcmVfc3luY19mbmFtZShjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2RpcikK IHsKIAlpbnQJCQlmZDsKIApAQCAtMjI4LDggKzIyMyw3IEBAIHByZV9zeW5jX2ZuYW1lKGNv bnN0IGNoYXIgKmZuYW1lLCBib29sIGlzZGlyLCBjb25zdCBjaGFyICpwcm9nbmFtZSkKIAl7 CiAJCWlmIChlcnJubyA9PSBFQUNDRVMgfHwgKGlzZGlyICYmIGVycm5vID09IEVJU0RJUikp CiAJCQlyZXR1cm4gMDsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3Qgb3Bl biBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJCXByb2duYW1lLCBmbmFtZSwgc3RyZXJyb3Io ZXJybm8pKTsKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjog JW0iLCBmbmFtZSk7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTI2MCw3ICsyNTQsNyBAQCBw cmVfc3luY19mbmFtZShjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2RpciwgY29uc3QgY2hh ciAqcHJvZ25hbWUpCiAgKiBvdGhlciBlcnJvcnMgbm9uLWZhdGFsbHkuCiAgKi8KIGludAot ZnN5bmNfZm5hbWUoY29uc3QgY2hhciAqZm5hbWUsIGJvb2wgaXNkaXIsIGNvbnN0IGNoYXIg KnByb2duYW1lKQorZnN5bmNfZm5hbWUoY29uc3QgY2hhciAqZm5hbWUsIGJvb2wgaXNkaXIp CiB7CiAJaW50CQkJZmQ7CiAJaW50CQkJZmxhZ3M7CkBAIC0yODgsOCArMjgyLDcgQEAgZnN5 bmNfZm5hbWUoY29uc3QgY2hhciAqZm5hbWUsIGJvb2wgaXNkaXIsIGNvbnN0IGNoYXIgKnBy b2duYW1lKQogCXsKIAkJaWYgKGVycm5vID09IEVBQ0NFUyB8fCAoaXNkaXIgJiYgZXJybm8g PT0gRUlTRElSKSkKIAkJCXJldHVybiAwOwotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNv dWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlc1xuIiksCi0JCQkJcHJvZ25hbWUsIGZuYW1l LCBzdHJlcnJvcihlcnJubykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVuIGZp bGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIAkJcmV0dXJuIC0xOwogCX0KIApAQCAtMzAxLDgg KzI5NCw3IEBAIGZzeW5jX2ZuYW1lKGNvbnN0IGNoYXIgKmZuYW1lLCBib29sIGlzZGlyLCBj b25zdCBjaGFyICpwcm9nbmFtZSkKIAkgKi8KIAlpZiAocmV0dXJuY29kZSAhPSAwICYmICEo aXNkaXIgJiYgZXJybm8gPT0gRUJBREYpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVz OiBjb3VsZCBub3QgZnN5bmMgZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJCQlwcm9nbmFtZSwg Zm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGZz eW5jIGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIAkJKHZvaWQpIGNsb3NlKGZkKTsKIAkJ cmV0dXJuIC0xOwogCX0KQEAgLTMxOCw3ICszMTAsNyBAQCBmc3luY19mbmFtZShjb25zdCBj aGFyICpmbmFtZSwgYm9vbCBpc2RpciwgY29uc3QgY2hhciAqcHJvZ25hbWUpCiAgKiBhbiBP UyBjcmFzaCBvciBwb3dlciBmYWlsdXJlLgogICovCiBpbnQKLWZzeW5jX3BhcmVudF9wYXRo KGNvbnN0IGNoYXIgKmZuYW1lLCBjb25zdCBjaGFyICpwcm9nbmFtZSkKK2ZzeW5jX3BhcmVu dF9wYXRoKGNvbnN0IGNoYXIgKmZuYW1lKQogewogCWNoYXIJCXBhcmVudHBhdGhbTUFYUEdQ QVRIXTsKIApAQCAtMzMzLDcgKzMyNSw3IEBAIGZzeW5jX3BhcmVudF9wYXRoKGNvbnN0IGNo YXIgKmZuYW1lLCBjb25zdCBjaGFyICpwcm9nbmFtZSkKIAlpZiAoc3RybGVuKHBhcmVudHBh dGgpID09IDApCiAJCXN0cmxjcHkocGFyZW50cGF0aCwgIi4iLCBNQVhQR1BBVEgpOwogCi0J aWYgKGZzeW5jX2ZuYW1lKHBhcmVudHBhdGgsIHRydWUsIHByb2duYW1lKSAhPSAwKQorCWlm IChmc3luY19mbmFtZShwYXJlbnRwYXRoLCB0cnVlKSAhPSAwKQogCQlyZXR1cm4gLTE7CiAK IAlyZXR1cm4gMDsKQEAgLTM0NSw3ICszMzcsNyBAQCBmc3luY19wYXJlbnRfcGF0aChjb25z dCBjaGFyICpmbmFtZSwgY29uc3QgY2hhciAqcHJvZ25hbWUpCiAgKiBXcmFwcGVyIGFyb3Vu ZCByZW5hbWUsIHNpbWlsYXIgdG8gdGhlIGJhY2tlbmQgdmVyc2lvbi4KICAqLwogaW50Ci1k dXJhYmxlX3JlbmFtZShjb25zdCBjaGFyICpvbGRmaWxlLCBjb25zdCBjaGFyICpuZXdmaWxl LCBjb25zdCBjaGFyICpwcm9nbmFtZSkKK2R1cmFibGVfcmVuYW1lKGNvbnN0IGNoYXIgKm9s ZGZpbGUsIGNvbnN0IGNoYXIgKm5ld2ZpbGUpCiB7CiAJaW50CQkJZmQ7CiAKQEAgLTM1Niw3 ICszNDgsNyBAQCBkdXJhYmxlX3JlbmFtZShjb25zdCBjaGFyICpvbGRmaWxlLCBjb25zdCBj aGFyICpuZXdmaWxlLCBjb25zdCBjaGFyICpwcm9nbmFtZSkKIAkgKiBiZWNhdXNlIGl0J3Mg dGhlbiBndWFyYW50ZWVkIHRoYXQgZWl0aGVyIHNvdXJjZSBvciB0YXJnZXQgZmlsZSBleGlz dHMKIAkgKiBhZnRlciBhIGNyYXNoLgogCSAqLwotCWlmIChmc3luY19mbmFtZShvbGRmaWxl LCBmYWxzZSwgcHJvZ25hbWUpICE9IDApCisJaWYgKGZzeW5jX2ZuYW1lKG9sZGZpbGUsIGZh bHNlKSAhPSAwKQogCQlyZXR1cm4gLTE7CiAKIAlmZCA9IG9wZW4obmV3ZmlsZSwgUEdfQklO QVJZIHwgT19SRFdSLCAwKTsKQEAgLTM2NCw4ICszNTYsNyBAQCBkdXJhYmxlX3JlbmFtZShj b25zdCBjaGFyICpvbGRmaWxlLCBjb25zdCBjaGFyICpuZXdmaWxlLCBjb25zdCBjaGFyICpw cm9nbmFtZSkKIAl7CiAJCWlmIChlcnJubyAhPSBFTk9FTlQpCiAJCXsKLQkJCWZwcmludGYo c3RkZXJyLCBfKCIlczogY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVzXG4iKSwKLQkJ CQkJcHJvZ25hbWUsIG5ld2ZpbGUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlwZ19sb2dfZXJy b3IoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiOiAlbSIsIG5ld2ZpbGUpOwogCQkJcmV0 dXJuIC0xOwogCQl9CiAJfQpAQCAtMzczLDggKzM2NCw3IEBAIGR1cmFibGVfcmVuYW1lKGNv bnN0IGNoYXIgKm9sZGZpbGUsIGNvbnN0IGNoYXIgKm5ld2ZpbGUsIGNvbnN0IGNoYXIgKnBy b2duYW1lKQogCXsKIAkJaWYgKGZzeW5jKGZkKSAhPSAwKQogCQl7Ci0JCQlmcHJpbnRmKHN0 ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBmc3luYyBmaWxlIFwiJXNcIjogJXNcbiIpLAotCQkJ CQlwcm9nbmFtZSwgbmV3ZmlsZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXBnX2xvZ19lcnJv cigiY291bGQgbm90IGZzeW5jIGZpbGUgXCIlc1wiOiAlbSIsIG5ld2ZpbGUpOwogCQkJY2xv c2UoZmQpOwogCQkJcmV0dXJuIC0xOwogCQl9CkBAIC0zODQsOCArMzc0LDggQEAgZHVyYWJs ZV9yZW5hbWUoY29uc3QgY2hhciAqb2xkZmlsZSwgY29uc3QgY2hhciAqbmV3ZmlsZSwgY29u c3QgY2hhciAqcHJvZ25hbWUpCiAJLyogVGltZSB0byBkbyB0aGUgcmVhbCBkZWFsLi4uICov CiAJaWYgKHJlbmFtZShvbGRmaWxlLCBuZXdmaWxlKSAhPSAwKQogCXsKLQkJZnByaW50Zihz dGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcmVuYW1lIGZpbGUgXCIlc1wiIHRvIFwiJXNcIjog JXNcbiIpLAotCQkJCXByb2duYW1lLCBvbGRmaWxlLCBuZXdmaWxlLCBzdHJlcnJvcihlcnJu bykpOworCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCByZW5hbWUgZmlsZSBcIiVzXCIgdG8g XCIlc1wiOiAlbSIsCisJCQkJCSBvbGRmaWxlLCBuZXdmaWxlKTsKIAkJcmV0dXJuIC0xOwog CX0KIApAQCAtMzkzLDEwICszODMsMTAgQEAgZHVyYWJsZV9yZW5hbWUoY29uc3QgY2hhciAq b2xkZmlsZSwgY29uc3QgY2hhciAqbmV3ZmlsZSwgY29uc3QgY2hhciAqcHJvZ25hbWUpCiAJ ICogVG8gZ3VhcmFudGVlIHJlbmFtaW5nIHRoZSBmaWxlIGlzIHBlcnNpc3RlbnQsIGZzeW5j IHRoZSBmaWxlIHdpdGggaXRzCiAJICogbmV3IG5hbWUsIGFuZCBpdHMgY29udGFpbmluZyBk aXJlY3RvcnkuCiAJICovCi0JaWYgKGZzeW5jX2ZuYW1lKG5ld2ZpbGUsIGZhbHNlLCBwcm9n bmFtZSkgIT0gMCkKKwlpZiAoZnN5bmNfZm5hbWUobmV3ZmlsZSwgZmFsc2UpICE9IDApCiAJ CXJldHVybiAtMTsKIAotCWlmIChmc3luY19wYXJlbnRfcGF0aChuZXdmaWxlLCBwcm9nbmFt ZSkgIT0gMCkKKwlpZiAoZnN5bmNfcGFyZW50X3BhdGgobmV3ZmlsZSkgIT0gMCkKIAkJcmV0 dXJuIC0xOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9zcmMvY29tbW9uL3BnZm5hbWVz LmMgYi9zcmMvY29tbW9uL3BnZm5hbWVzLmMKaW5kZXggZjllMGE2OWJlMC4uOTViMTdlNDdk OCAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9wZ2ZuYW1lcy5jCisrKyBiL3NyYy9jb21tb24v cGdmbmFtZXMuYwpAQCAtMjAsNiArMjAsMTIgQEAKIAogI2luY2x1ZGUgPGRpcmVudC5oPgog CisjaWZuZGVmIEZST05URU5ECisjZGVmaW5lIHBnX2xvZ193YXJuaW5nKC4uLikgZWxvZyhX QVJOSU5HLCBfX1ZBX0FSR1NfXykKKyNlbHNlCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2lu Zy5oIgorI2VuZGlmCisKIC8qCiAgKiBwZ2ZuYW1lcwogICoKQEAgLTM5LDEyICs0NSw3IEBA IHBnZm5hbWVzKGNvbnN0IGNoYXIgKnBhdGgpCiAJZGlyID0gb3BlbmRpcihwYXRoKTsKIAlp ZiAoZGlyID09IE5VTEwpCiAJewotI2lmbmRlZiBGUk9OVEVORAotCQllbG9nKFdBUk5JTkcs ICJjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHBhdGgpOwotI2Vsc2UK LQkJZnByaW50ZihzdGRlcnIsIF8oImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6 ICVzXG4iKSwKLQkJCQlwYXRoLCBzdHJlcnJvcihlcnJubykpOwotI2VuZGlmCisJCXBnX2xv Z193YXJuaW5nKCJjb3VsZCBub3Qgb3BlbiBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHBhdGgp OwogCQlyZXR1cm4gTlVMTDsKIAl9CiAKQEAgLTY1LDI2ICs2NiwxMiBAQCBwZ2ZuYW1lcyhj b25zdCBjaGFyICpwYXRoKQogCX0KIAogCWlmIChlcnJubykKLQl7Ci0jaWZuZGVmIEZST05U RU5ECi0JCWVsb2coV0FSTklORywgImNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSBcIiVzXCI6 ICVtIiwgcGF0aCk7Ci0jZWxzZQotCQlmcHJpbnRmKHN0ZGVyciwgXygiY291bGQgbm90IHJl YWQgZGlyZWN0b3J5IFwiJXNcIjogJXNcbiIpLAotCQkJCXBhdGgsIHN0cmVycm9yKGVycm5v KSk7Ci0jZW5kaWYKLQl9CisJCXBnX2xvZ193YXJuaW5nKCJjb3VsZCBub3QgcmVhZCBkaXJl Y3RvcnkgXCIlc1wiOiAlbSIsIHBhdGgpOwogCiAJZmlsZW5hbWVzW251bW5hbWVzXSA9IE5V TEw7CiAKIAlpZiAoY2xvc2VkaXIoZGlyKSkKLQl7Ci0jaWZuZGVmIEZST05URU5ECi0JCWVs b2coV0FSTklORywgImNvdWxkIG5vdCBjbG9zZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHBh dGgpOwotI2Vsc2UKLQkJZnByaW50ZihzdGRlcnIsIF8oImNvdWxkIG5vdCBjbG9zZSBkaXJl Y3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKLSNl bmRpZgotCX0KKwkJcGdfbG9nX3dhcm5pbmcoImNvdWxkIG5vdCBjbG9zZSBkaXJlY3Rvcnkg XCIlc1wiOiAlbSIsIHBhdGgpOwogCiAJcmV0dXJuIGZpbGVuYW1lczsKIH0KZGlmZiAtLWdp dCBhL3NyYy9jb21tb24vcmVzdHJpY3RlZF90b2tlbi5jIGIvc3JjL2NvbW1vbi9yZXN0cmlj dGVkX3Rva2VuLmMKaW5kZXggYzRjY2MwZTU1Yy4uM2Y1N2ZmOGI0MCAxMDA2NDQKLS0tIGEv c3JjL2NvbW1vbi9yZXN0cmljdGVkX3Rva2VuLmMKKysrIGIvc3JjL2NvbW1vbi9yZXN0cmlj dGVkX3Rva2VuLmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlc19mZS5o IgogCiAjaW5jbHVkZSAiY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uaCIKKyNpbmNsdWRlICJm ZV91dGlscy9sb2dnaW5nLmgiCiAKICNpZmRlZiBXSU4zMgogCkBAIC00Myw3ICs0NCw3IEBA IHR5cGVkZWYgQk9PTCAoV0lOQVBJICogX19DcmVhdGVSZXN0cmljdGVkVG9rZW4pIChIQU5E TEUsIERXT1JELCBEV09SRCwgUFNJRF9BTkRfCiAgKiBOT1QgZXhlY3V0ZSBhbnl0aGluZy4K ICAqLwogSEFORExFCi1DcmVhdGVSZXN0cmljdGVkUHJvY2VzcyhjaGFyICpjbWQsIFBST0NF U1NfSU5GT1JNQVRJT04gKnByb2Nlc3NJbmZvLCBjb25zdCBjaGFyICpwcm9nbmFtZSkKK0Ny ZWF0ZVJlc3RyaWN0ZWRQcm9jZXNzKGNoYXIgKmNtZCwgUFJPQ0VTU19JTkZPUk1BVElPTiAq cHJvY2Vzc0luZm8pCiB7CiAJQk9PTAkJYjsKIAlTVEFSVFVQSU5GTyBzaTsKQEAgLTY1LDcg KzY2LDcgQEAgQ3JlYXRlUmVzdHJpY3RlZFByb2Nlc3MoY2hhciAqY21kLCBQUk9DRVNTX0lO Rk9STUFUSU9OICpwcm9jZXNzSW5mbywgY29uc3QgY2hhcgogCiAJaWYgKF9DcmVhdGVSZXN0 cmljdGVkVG9rZW4gPT0gTlVMTCkKIAl7Ci0JCWZwcmludGYoc3RkZXJyLCBfKCIlczogV0FS TklORzogY2Fubm90IGNyZWF0ZSByZXN0cmljdGVkIHRva2VucyBvbiB0aGlzIHBsYXRmb3Jt XG4iKSwgcHJvZ25hbWUpOworCQlwZ19sb2dfd2FybmluZygiY2Fubm90IGNyZWF0ZSByZXN0 cmljdGVkIHRva2VucyBvbiB0aGlzIHBsYXRmb3JtIik7CiAJCWlmIChBZHZhcGkzMkhhbmRs ZSAhPSBOVUxMKQogCQkJRnJlZUxpYnJhcnkoQWR2YXBpMzJIYW5kbGUpOwogCQlyZXR1cm4g MDsKQEAgLTc0LDcgKzc1LDcgQEAgQ3JlYXRlUmVzdHJpY3RlZFByb2Nlc3MoY2hhciAqY21k LCBQUk9DRVNTX0lORk9STUFUSU9OICpwcm9jZXNzSW5mbywgY29uc3QgY2hhcgogCS8qIE9w ZW4gdGhlIGN1cnJlbnQgdG9rZW4gdG8gdXNlIGFzIGEgYmFzZSBmb3IgdGhlIHJlc3RyaWN0 ZWQgb25lICovCiAJaWYgKCFPcGVuUHJvY2Vzc1Rva2VuKEdldEN1cnJlbnRQcm9jZXNzKCks IFRPS0VOX0FMTF9BQ0NFU1MsICZvcmlnVG9rZW4pKQogCXsKLQkJZnByaW50ZihzdGRlcnIs IF8oIiVzOiBjb3VsZCBub3Qgb3BlbiBwcm9jZXNzIHRva2VuOiBlcnJvciBjb2RlICVsdVxu IiksIHByb2duYW1lLCBHZXRMYXN0RXJyb3IoKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQg bm90IG9wZW4gcHJvY2VzcyB0b2tlbjogZXJyb3IgY29kZSAlbHUiLCBHZXRMYXN0RXJyb3Io KSk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtODcsOCArODgsNyBAQCBDcmVhdGVSZXN0cmlj dGVkUHJvY2VzcyhjaGFyICpjbWQsIFBST0NFU1NfSU5GT1JNQVRJT04gKnByb2Nlc3NJbmZv LCBjb25zdCBjaGFyCiAJCQkJCQkJCSAgU0VDVVJJVFlfQlVJTFRJTl9ET01BSU5fUklELCBE T01BSU5fQUxJQVNfUklEX1BPV0VSX1VTRVJTLCAwLCAwLCAwLCAwLCAwLAogCQkJCQkJCQkg IDAsICZkcm9wU2lkc1sxXS5TaWQpKQogCXsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBj b3VsZCBub3QgYWxsb2NhdGUgU0lEczogZXJyb3IgY29kZSAlbHVcbiIpLAotCQkJCXByb2du YW1lLCBHZXRMYXN0RXJyb3IoKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGFsbG9j YXRlIFNJRHM6IGVycm9yIGNvZGUgJWx1IiwgR2V0TGFzdEVycm9yKCkpOwogCQlyZXR1cm4g MDsKIAl9CiAKQEAgLTEwNyw4ICsxMDcsNyBAQCBDcmVhdGVSZXN0cmljdGVkUHJvY2Vzcyhj aGFyICpjbWQsIFBST0NFU1NfSU5GT1JNQVRJT04gKnByb2Nlc3NJbmZvLCBjb25zdCBjaGFy CiAKIAlpZiAoIWIpCiAJewotCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBj cmVhdGUgcmVzdHJpY3RlZCB0b2tlbjogZXJyb3IgY29kZSAlbHVcbiIpLAotCQkJCXByb2du YW1lLCBHZXRMYXN0RXJyb3IoKSk7CisJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGNyZWF0 ZSByZXN0cmljdGVkIHRva2VuOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RFcnJvcigpKTsK IAkJcmV0dXJuIDA7CiAJfQogCkBAIC0xMjksNyArMTI4LDcgQEAgQ3JlYXRlUmVzdHJpY3Rl ZFByb2Nlc3MoY2hhciAqY21kLCBQUk9DRVNTX0lORk9STUFUSU9OICpwcm9jZXNzSW5mbywg Y29uc3QgY2hhcgogCQkJCQkJCSBwcm9jZXNzSW5mbykpCiAKIAl7Ci0JCWZwcmludGYoc3Rk ZXJyLCBfKCIlczogY291bGQgbm90IHN0YXJ0IHByb2Nlc3MgZm9yIGNvbW1hbmQgXCIlc1wi OiBlcnJvciBjb2RlICVsdVxuIiksIHByb2duYW1lLCBjbWQsIEdldExhc3RFcnJvcigpKTsK KwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgc3RhcnQgcHJvY2VzcyBmb3IgY29tbWFuZCBc IiVzXCI6IGVycm9yIGNvZGUgJWx1IiwgY21kLCBHZXRMYXN0RXJyb3IoKSk7CiAJCXJldHVy biAwOwogCX0KIApAQCAtMTQzLDcgKzE0Miw3IEBAIENyZWF0ZVJlc3RyaWN0ZWRQcm9jZXNz KGNoYXIgKmNtZCwgUFJPQ0VTU19JTkZPUk1BVElPTiAqcHJvY2Vzc0luZm8sIGNvbnN0IGNo YXIKICAqIE9uIG90aGVyIHBsYXRmb3JtcyBkbyBub3RoaW5nLgogICovCiB2b2lkCi1nZXRf cmVzdHJpY3RlZF90b2tlbihjb25zdCBjaGFyICpwcm9nbmFtZSkKK2dldF9yZXN0cmljdGVk X3Rva2VuKHZvaWQpCiB7CiAjaWZkZWYgV0lOMzIKIAlIQU5ETEUJCXJlc3RyaWN0ZWRUb2tl bjsKQEAgLTE2NSw5ICsxNjQsOSBAQCBnZXRfcmVzdHJpY3RlZF90b2tlbihjb25zdCBjaGFy ICpwcm9nbmFtZSkKIAogCQlwdXRlbnYoIlBHX1JFU1RSSUNUX0VYRUM9MSIpOwogCi0JCWlm ICgocmVzdHJpY3RlZFRva2VuID0gQ3JlYXRlUmVzdHJpY3RlZFByb2Nlc3MoY21kbGluZSwg JnBpLCBwcm9nbmFtZSkpID09IDApCisJCWlmICgocmVzdHJpY3RlZFRva2VuID0gQ3JlYXRl UmVzdHJpY3RlZFByb2Nlc3MoY21kbGluZSwgJnBpKSkgPT0gMCkKIAkJewotCQkJZnByaW50 ZihzdGRlcnIsIF8oIiVzOiBjb3VsZCBub3QgcmUtZXhlY3V0ZSB3aXRoIHJlc3RyaWN0ZWQg dG9rZW46IGVycm9yIGNvZGUgJWx1XG4iKSwgcHJvZ25hbWUsIEdldExhc3RFcnJvcigpKTsK KwkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IHJlLWV4ZWN1dGUgd2l0aCByZXN0cmljdGVk IHRva2VuOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RFcnJvcigpKTsKIAkJfQogCQllbHNl CiAJCXsKQEAgLTE4Myw3ICsxODIsNyBAQCBnZXRfcmVzdHJpY3RlZF90b2tlbihjb25zdCBj aGFyICpwcm9nbmFtZSkKIAogCQkJaWYgKCFHZXRFeGl0Q29kZVByb2Nlc3MocGkuaFByb2Nl c3MsICZ4KSkKIAkJCXsKLQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IGNvdWxkIG5vdCBn ZXQgZXhpdCBjb2RlIGZyb20gc3VicHJvY2VzczogZXJyb3IgY29kZSAlbHVcbiIpLCBwcm9n bmFtZSwgR2V0TGFzdEVycm9yKCkpOworCQkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IGdl dCBleGl0IGNvZGUgZnJvbSBzdWJwcm9jZXNzOiBlcnJvciBjb2RlICVsdSIsIEdldExhc3RF cnJvcigpKTsKIAkJCQlleGl0KDEpOwogCQkJfQogCQkJZXhpdCh4KTsKZGlmZiAtLWdpdCBh L3NyYy9jb21tb24vcm10cmVlLmMgYi9zcmMvY29tbW9uL3JtdHJlZS5jCmluZGV4IDU3MTY0 ZDQ1ZDYuLjMwNTJkMDEzZWUgMTAwNjQ0Ci0tLSBhL3NyYy9jb21tb24vcm10cmVlLmMKKysr IGIvc3JjL2NvbW1vbi9ybXRyZWUuYwpAQCAtMjAsNiArMjAsMTIgQEAKICNpbmNsdWRlIDx1 bmlzdGQuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogCisjaWZuZGVmIEZST05URU5ECisj ZGVmaW5lIHBnX2xvZ193YXJuaW5nKC4uLikgZWxvZyhXQVJOSU5HLCBfX1ZBX0FSR1NfXykK KyNlbHNlCisjaW5jbHVkZSAiZmVfdXRpbHMvbG9nZ2luZy5oIgorI2VuZGlmCisKIAogLyoK ICAqCXJtdHJlZQpAQCAtNzAsMTMgKzc2LDggQEAgcm10cmVlKGNvbnN0IGNoYXIgKnBhdGgs IGJvb2wgcm10b3BkaXIpCiAJCXsKIAkJCWlmIChlcnJubyAhPSBFTk9FTlQpCiAJCQl7Ci0j aWZuZGVmIEZST05URU5ECi0JCQkJZWxvZyhXQVJOSU5HLCAiY291bGQgbm90IHN0YXQgZmls ZSBvciBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJcGdfbG9nX3dhcm5pbmcoImNvdWxk IG5vdCBzdGF0IGZpbGUgb3IgZGlyZWN0b3J5IFwiJXNcIjogJW0iLAogCQkJCQkgcGF0aGJ1 Zik7Ci0jZWxzZQotCQkJCWZwcmludGYoc3RkZXJyLCBfKCJjb3VsZCBub3Qgc3RhdCBmaWxl IG9yIGRpcmVjdG9yeSBcIiVzXCI6ICVzXG4iKSwKLQkJCQkJCXBhdGhidWYsIHN0cmVycm9y KGVycm5vKSk7Ci0jZW5kaWYKIAkJCQlyZXN1bHQgPSBmYWxzZTsKIAkJCX0KIAkJCWNvbnRp bnVlOwpAQCAtOTcsMTMgKzk4LDggQEAgcm10cmVlKGNvbnN0IGNoYXIgKnBhdGgsIGJvb2wg cm10b3BkaXIpCiAJCQl7CiAJCQkJaWYgKGVycm5vICE9IEVOT0VOVCkKIAkJCQl7Ci0jaWZu ZGVmIEZST05URU5ECi0JCQkJCWVsb2coV0FSTklORywgImNvdWxkIG5vdCByZW1vdmUgZmls ZSBvciBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJCXBnX2xvZ193YXJuaW5nKCJjb3Vs ZCBub3QgcmVtb3ZlIGZpbGUgb3IgZGlyZWN0b3J5IFwiJXNcIjogJW0iLAogCQkJCQkJIHBh dGhidWYpOwotI2Vsc2UKLQkJCQkJZnByaW50ZihzdGRlcnIsIF8oImNvdWxkIG5vdCByZW1v dmUgZmlsZSBvciBkaXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJCQkJcGF0aGJ1Ziwg c3RyZXJyb3IoZXJybm8pKTsKLSNlbmRpZgogCQkJCQlyZXN1bHQgPSBmYWxzZTsKIAkJCQl9 CiAJCQl9CkBAIC0xMTQsMTMgKzExMCw4IEBAIHJtdHJlZShjb25zdCBjaGFyICpwYXRoLCBi b29sIHJtdG9wZGlyKQogCXsKIAkJaWYgKHJtZGlyKHBhdGgpICE9IDApCiAJCXsKLSNpZm5k ZWYgRlJPTlRFTkQKLQkJCWVsb2coV0FSTklORywgImNvdWxkIG5vdCByZW1vdmUgZmlsZSBv ciBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQlwZ19sb2dfd2FybmluZygiY291bGQgbm90 IHJlbW92ZSBmaWxlIG9yIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKIAkJCQkgcGF0aCk7Ci0j ZWxzZQotCQkJZnByaW50ZihzdGRlcnIsIF8oImNvdWxkIG5vdCByZW1vdmUgZmlsZSBvciBk aXJlY3RvcnkgXCIlc1wiOiAlc1xuIiksCi0JCQkJCXBhdGgsIHN0cmVycm9yKGVycm5vKSk7 Ci0jZW5kaWYKIAkJCXJlc3VsdCA9IGZhbHNlOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3Jj L2ZlX3V0aWxzL01ha2VmaWxlIGIvc3JjL2ZlX3V0aWxzL01ha2VmaWxlCmluZGV4IDdkNzM4 MDAzMjMuLjk2MGVjZjBiNmEgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9NYWtlZmlsZQor KysgYi9zcmMvZmVfdXRpbHMvTWFrZWZpbGUKQEAgLTE5LDcgKzE5LDcgQEAgaW5jbHVkZSAk KHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCiBvdmVycmlkZSBDUFBGTEFH UyA6PSAtREZST05URU5EIC1JJChsaWJwcV9zcmNkaXIpICQoQ1BQRkxBR1MpCiAKLU9CSlMg PSBtYnByaW50Lm8gcHJpbnQubyBwc3Fsc2Nhbi5vIHNpbXBsZV9saXN0Lm8gc3RyaW5nX3V0 aWxzLm8gY29uZGl0aW9uYWwubworT0JKUyA9IGxvZ2dpbmcubyBtYnByaW50Lm8gcHJpbnQu byBwc3Fsc2Nhbi5vIHNpbXBsZV9saXN0Lm8gc3RyaW5nX3V0aWxzLm8gY29uZGl0aW9uYWwu bwogCiBhbGw6IGxpYnBnZmV1dGlscy5hCiAKZGlmZiAtLWdpdCBhL3NyYy9mZV91dGlscy9s b2dnaW5nLmMgYi9zcmMvZmVfdXRpbHMvbG9nZ2luZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjUyOGViZmUwNGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv ZmVfdXRpbHMvbG9nZ2luZy5jCkBAIC0wLDAgKzEsMjI2IEBACisvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqIExvZ2dpbmcgZnJhbWV3b3JrIGZvciBmcm9udGVuZCBwcm9ncmFtcworICoK KyAqIENvcHlyaWdodCAoYykgMjAxOCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKyAqCisgKiBzcmMvZmVfdXRpbHMvbG9nZ2luZy5jCisgKgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorCisjaW5jbHVkZSA8 dW5pc3RkLmg+CisKKyNpbmNsdWRlICJmZV91dGlscy9sb2dnaW5nLmgiCisKK3N0YXRpYyBj b25zdCBjaGFyICpwcm9nbmFtZTsKKworZW51bSBwZ19sb2dfbGV2ZWwgX19wZ19sb2dfbGV2 ZWw7CitzdGF0aWMgaW50IGxvZ19mbGFnczsKK3ZvaWQgKCpsb2dfcHJlX2NhbGxiYWNrKSh2 b2lkKTsKK3ZvaWQgKCpsb2dfbG9jdXNfY2FsbGJhY2spKGNvbnN0IGNoYXIgKiosIHVpbnQ2 NCAqKTsKKworc3RhdGljIGNvbnN0IGNoYXIgKnNncl9lcnJvciA9IE5VTEw7CitzdGF0aWMg Y29uc3QgY2hhciAqc2dyX3dhcm5pbmcgPSBOVUxMOworc3RhdGljIGNvbnN0IGNoYXIgKnNn cl9sb2N1cyA9IE5VTEw7CisKKyNkZWZpbmUgU0dSX0VSUk9SX0RFRkFVTFQgIjAxOzMxIgor I2RlZmluZSBTR1JfV0FSTklOR19ERUZBVUxUICIwMTszNSIKKyNkZWZpbmUgU0dSX0xPQ1VT X0RFRkFVTFQgIjAxIgorCisjZGVmaW5lIEFOU0lfRVNDQVBFX0ZNVCAiXHgxYlslc20iCisj ZGVmaW5lIEFOU0lfRVNDQVBFX1JFU0VUICJceDFiWzBtIgorCisvKgorICogVGhpcyBzaG91 bGQgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3V0cHV0IGhhcHBlbnMuCisgKi8KK3ZvaWQKK3Bn X2xvZ2dpbmdfaW5pdChjb25zdCBjaGFyICphcmd2MCkKK3sKKwljb25zdCBjaGFyICpwZ19j b2xvcl9lbnYgPSBnZXRlbnYoIlBHX0NPTE9SIik7CisJYm9vbAkJbG9nX2NvbG9yID0gZmFs c2U7CisKKwkvKiB1c3VhbGx5IHRoZSBkZWZhdWx0LCBidXQgbm90IG9uIFdpbmRvd3MgKi8K KwlzZXR2YnVmKHN0ZGVyciwgTlVMTCwgX0lPTkJGLCAwKTsKKworCXByb2duYW1lID0gZ2V0 X3Byb2duYW1lKGFyZ3YwKTsKKwlfX3BnX2xvZ19sZXZlbCA9IFBHX0xPR19JTkZPOworCisJ aWYgKHBnX2NvbG9yX2VudikKKwl7CisJCWlmIChzdHJjbXAocGdfY29sb3JfZW52LCAiYWx3 YXlzIikgPT0gMCB8fAorCQkJKHN0cmNtcChwZ19jb2xvcl9lbnYsICJhdXRvIikgPT0gMCAm JiBpc2F0dHkoZmlsZW5vKHN0ZGVycikpKSkKKwkJCWxvZ19jb2xvciA9IHRydWU7CisJfQor CisJaWYgKGxvZ19jb2xvcikKKwl7CisJCWNvbnN0IGNoYXIgKnBnX2NvbG9yc19lbnYgPSBn ZXRlbnYoIlBHX0NPTE9SUyIpOworCisJCWlmIChwZ19jb2xvcnNfZW52KQorCQl7CisJCQlj aGFyCSAqY29sb3JzID0gc3RyZHVwKHBnX2NvbG9yc19lbnYpOworCisJCQlpZiAoY29sb3Jz KQorCQkJeworCQkJCWNoYXIJICAgKnRva2VuID0gc3RydG9rKGNvbG9ycywgIjoiKTsKKwor CQkJCXdoaWxlICh0b2tlbikKKwkJCQl7CisJCQkJCWNoYXIgKmUgPSBzdHJjaHIodG9rZW4s ICc9Jyk7CisJCQkJCWlmIChlKQorCQkJCQl7CisJCQkJCQljaGFyCSAgICpuYW1lOworCQkJ CQkJY2hhcgkgICAqdmFsdWU7CisKKwkJCQkJCSplID0gJ1wwJzsKKwkJCQkJCW5hbWUgPSB0 b2tlbjsKKwkJCQkJCXZhbHVlID0gZSArIDE7CisKKwkJCQkJCWlmIChzdHJjbXAobmFtZSwg ImVycm9yIikgPT0gMCkKKwkJCQkJCQlzZ3JfZXJyb3IgPSBzdHJkdXAodmFsdWUpOworCQkJ CQkJaWYgKHN0cmNtcChuYW1lLCAid2FybmluZyIpID09IDApCisJCQkJCQkJc2dyX3dhcm5p bmcgPSBzdHJkdXAodmFsdWUpOworCQkJCQkJaWYgKHN0cmNtcChuYW1lLCAibG9jdXMiKSA9 PSAwKQorCQkJCQkJCXNncl9sb2N1cyA9IHN0cmR1cCh2YWx1ZSk7CisJCQkJCX0KKwkJCQkJ dG9rZW4gPSBzdHJ0b2soTlVMTCwgIjoiKTsKKwkJCQl9CisKKwkJCQlmcmVlKGNvbG9ycyk7 CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQlzZ3JfZXJyb3IgPSBTR1JfRVJST1JfREVG QVVMVDsKKwkJCXNncl93YXJuaW5nID0gU0dSX1dBUk5JTkdfREVGQVVMVDsKKwkJCXNncl9s b2N1cyA9IFNHUl9MT0NVU19ERUZBVUxUOworCQl9CisJfQorfQorCit2b2lkCitwZ19sb2dn aW5nX2NvbmZpZyhpbnQgbmV3X2ZsYWdzKQoreworCWxvZ19mbGFncyA9IG5ld19mbGFnczsK K30KKwordm9pZAorcGdfbG9nZ2luZ19zZXRfbGV2ZWwoZW51bSBwZ19sb2dfbGV2ZWwgbmV3 X2xldmVsKQoreworCV9fcGdfbG9nX2xldmVsID0gbmV3X2xldmVsOworfQorCit2b2lkCitw Z19sb2dnaW5nX3NldF9wcmVfY2FsbGJhY2sodm9pZCAoKmNiKSh2b2lkKSkKK3sKKwlsb2df cHJlX2NhbGxiYWNrID0gY2I7Cit9CisKK3ZvaWQKK3BnX2xvZ2dpbmdfc2V0X2xvY3VzX2Nh bGxiYWNrKHZvaWQgKCpjYikoY29uc3QgY2hhciAqKmZpbGVuYW1lLCB1aW50NjQgKmxpbmVu bykpCit7CisJbG9nX2xvY3VzX2NhbGxiYWNrID0gY2I7Cit9CisKK3ZvaWQKK3BnX2xvZ19n ZW5lcmljKGVudW0gcGdfbG9nX2xldmVsIGxldmVsLCBjb25zdCBjaGFyICogcGdfcmVzdHJp Y3QgZm10LCAuLi4pCit7CisJdmFfbGlzdAkJYXA7CisKKwl2YV9zdGFydChhcCwgZm10KTsK KwlwZ19sb2dfZ2VuZXJpY192KGxldmVsLCBmbXQsIGFwKTsKKwl2YV9lbmQoYXApOworfQor Cit2b2lkCitwZ19sb2dfZ2VuZXJpY192KGVudW0gcGdfbG9nX2xldmVsIGxldmVsLCBjb25z dCBjaGFyICogcGdfcmVzdHJpY3QgZm10LCB2YV9saXN0IGFwKQoreworCWludAkJCXNhdmVf ZXJybm8gPSBlcnJubzsKKwljb25zdCBjaGFyICpmaWxlbmFtZSA9IE5VTEw7CisJdWludDY0 CQlsaW5lbm8gPSAwOworCXZhX2xpc3QJCWFwMjsKKwlzaXplX3QJCXJlcXVpcmVkX2xlbjsK KwljaGFyCSAgICpidWY7CisKKwlBc3NlcnQocHJvZ25hbWUpOworCUFzc2VydChsZXZlbCk7 CisJQXNzZXJ0KGZtdCk7CisJQXNzZXJ0KGZtdFtzdHJsZW4oZm10KSAtIDFdICE9ICdcbicp OworCisJZmZsdXNoKHN0ZG91dCk7CisJaWYgKGxvZ19wcmVfY2FsbGJhY2spCisJCWxvZ19w cmVfY2FsbGJhY2soKTsKKworCWlmIChsb2dfbG9jdXNfY2FsbGJhY2spCisJCWxvZ19sb2N1 c19jYWxsYmFjaygmZmlsZW5hbWUsICZsaW5lbm8pOworCisJZm10ID0gXyhmbXQpOworCisJ aWYgKHNncl9sb2N1cykKKwkJZnByaW50ZihzdGRlcnIsIEFOU0lfRVNDQVBFX0ZNVCwgc2dy X2xvY3VzKTsKKwlpZiAoIShsb2dfZmxhZ3MgJiBQR19MT0dfRkxBR19URVJTRSkpCisJCWZw cmludGYoc3RkZXJyLCAiJXM6IiwgcHJvZ25hbWUpOworCWlmIChmaWxlbmFtZSkKKwl7CisJ CWZwcmludGYoc3RkZXJyLCAiJXM6IiwgZmlsZW5hbWUpOworCQlpZiAobGluZW5vID4gMCkK KwkJCWZwcmludGYoc3RkZXJyLCBVSU5UNjRfRk9STUFUICI6IiwgbGluZW5vKTsKKwl9CisJ aWYgKCEobG9nX2ZsYWdzICYgUEdfTE9HX0ZMQUdfVEVSU0UpIHx8IGZpbGVuYW1lKQorCQlm cHJpbnRmKHN0ZGVyciwgIiAiKTsKKwlpZiAoc2dyX2xvY3VzKQorCQlmcHJpbnRmKHN0ZGVy ciwgQU5TSV9FU0NBUEVfUkVTRVQpOworCisJaWYgKCEobG9nX2ZsYWdzICYgUEdfTE9HX0ZM QUdfVEVSU0UpKQorCXN3aXRjaCAobGV2ZWwpCisJeworCQljYXNlIFBHX0xPR19GQVRBTDoK KwkJCWlmIChzZ3JfZXJyb3IpCisJCQkJZnByaW50ZihzdGRlcnIsIEFOU0lfRVNDQVBFX0ZN VCwgc2dyX2Vycm9yKTsKKwkJCWZwcmludGYoc3RkZXJyLCBfKCJmYXRhbDogIikpOworCQkJ aWYgKHNncl9lcnJvcikKKwkJCQlmcHJpbnRmKHN0ZGVyciwgQU5TSV9FU0NBUEVfUkVTRVQp OworCQkJYnJlYWs7CisJCWNhc2UgUEdfTE9HX0VSUk9SOgorCQkJaWYgKHNncl9lcnJvcikK KwkJCQlmcHJpbnRmKHN0ZGVyciwgQU5TSV9FU0NBUEVfRk1ULCBzZ3JfZXJyb3IpOworCQkJ ZnByaW50ZihzdGRlcnIsIF8oImVycm9yOiAiKSk7CisJCQlpZiAoc2dyX2Vycm9yKQorCQkJ CWZwcmludGYoc3RkZXJyLCBBTlNJX0VTQ0FQRV9SRVNFVCk7CisJCQlicmVhazsKKwkJY2Fz ZSBQR19MT0dfV0FSTklORzoKKwkJCWlmIChzZ3Jfd2FybmluZykKKwkJCQlmcHJpbnRmKHN0 ZGVyciwgQU5TSV9FU0NBUEVfRk1ULCBzZ3Jfd2FybmluZyk7CisJCQlmcHJpbnRmKHN0ZGVy ciwgXygid2FybmluZzogIikpOworCQkJaWYgKHNncl93YXJuaW5nKQorCQkJCWZwcmludGYo c3RkZXJyLCBBTlNJX0VTQ0FQRV9SRVNFVCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJ CWJyZWFrOworCX0KKworCWVycm5vID0gc2F2ZV9lcnJubzsKKworCXZhX2NvcHkoYXAyLCBh cCk7CisJcmVxdWlyZWRfbGVuID0gdnNucHJpbnRmKE5VTEwsIDAsIGZtdCwgYXAyKSArIDE7 CisJdmFfZW5kKGFwMik7CisKKwlidWYgPSBwZ19tYWxsb2NfZXh0ZW5kZWQocmVxdWlyZWRf bGVuLCBNQ1hUX0FMTE9DX05PX09PTSk7CisKKwlpZiAoIWJ1ZikKKwl7CisJCS8qIG1lbW9y eSB0cm91YmxlLCBqdXN0IHByaW50IHdoYXQgd2UgY2FuIGFuZCBnZXQgb3V0IG9mIGhlcmUg Ki8KKwkJdmZwcmludGYoc3RkZXJyLCBmbXQsIGFwKTsKKwkJcmV0dXJuOworCX0KKworCXZz bnByaW50ZihidWYsIHJlcXVpcmVkX2xlbiwgZm10LCBhcCk7CisKKwkvKiBzdHJpcCBvbmUg bmV3bGluZSwgZm9yIFBRZXJyb3JNZXNzYWdlKCkgKi8KKwlpZiAoYnVmW3JlcXVpcmVkX2xl biAtIDJdID09ICdcbicpCisJCWJ1ZltyZXF1aXJlZF9sZW4gLSAyXSA9ICdcMCc7CisKKwlm cHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBidWYpOworCWZyZWUoYnVmKTsKK30KZGlmZiAtLWdp dCBhL3NyYy9mZV91dGlscy9wc3Fsc2Nhbi5sIGIvc3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwK aW5kZXggMzIxNzQ0Y2RkYi4uZWUzMjU0Nzg5NyAxMDA2NDQKLS0tIGEvc3JjL2ZlX3V0aWxz L3BzcWxzY2FuLmwKKysrIGIvc3JjL2ZlX3V0aWxzL3BzcWxzY2FuLmwKQEAgLTM0LDYgKzM0 LDcgQEAKICAqLwogI2luY2x1ZGUgInBvc3RncmVzX2ZlLmgiCiAKKyNpbmNsdWRlICJmZV91 dGlscy9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMvcHNxbHNjYW4uaCIKIAogI2lu Y2x1ZGUgImxpYnBxLWZlLmgiCkBAIC03MzIsNyArNzMzLDcgQEAgb3RoZXIJCQkuCiAJCQkJ CQlpZiAocHNxbHNjYW5fdmFyX2lzX2N1cnJlbnRfc291cmNlKGN1cl9zdGF0ZSwgdmFybmFt ZSkpCiAJCQkJCQl7CiAJCQkJCQkJLyogUmVjdXJzaXZlIGV4cGFuc2lvbiAtLS0gZG9uJ3Qg Z28gdGhlcmUgKi8KLQkJCQkJCQljdXJfc3RhdGUtPmNhbGxiYWNrcy0+d3JpdGVfZXJyb3Io InNraXBwaW5nIHJlY3Vyc2l2ZSBleHBhbnNpb24gb2YgdmFyaWFibGUgXCIlc1wiXG4iLAor CQkJCQkJCXBnX2xvZ193YXJuaW5nKCJza2lwcGluZyByZWN1cnNpdmUgZXhwYW5zaW9uIG9m IHZhcmlhYmxlIFwiJXNcIiIsCiAJCQkJCQkJCQkJCQkJCQkgIHZhcm5hbWUpOwogCQkJCQkJ CS8qIEluc3RlYWQgY29weSB0aGUgc3RyaW5nIGFzIGlzICovCiAJCQkJCQkJRUNITzsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1vbi9jb250cm9sZGF0YV91dGlscy5oIGIvc3Jj L2luY2x1ZGUvY29tbW9uL2NvbnRyb2xkYXRhX3V0aWxzLmgKaW5kZXggMGZmYTIwMDBmYy4u ZDQ5YzdiMGIwMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbW9uL2NvbnRyb2xkYXRh X3V0aWxzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbW9uL2NvbnRyb2xkYXRhX3V0aWxzLmgK QEAgLTEyLDYgKzEyLDYgQEAKIAogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29udHJvbC5oIgog Ci1leHRlcm4gQ29udHJvbEZpbGVEYXRhICpnZXRfY29udHJvbGZpbGUoY29uc3QgY2hhciAq RGF0YURpciwgY29uc3QgY2hhciAqcHJvZ25hbWUsIGJvb2wgKmNyY19va19wKTsKK2V4dGVy biBDb250cm9sRmlsZURhdGEgKmdldF9jb250cm9sZmlsZShjb25zdCBjaGFyICpEYXRhRGly LCBib29sICpjcmNfb2tfcCk7CiAKICNlbmRpZgkJCQkJCQkvKiBDT01NT05fQ09OVFJPTERB VEFfVVRJTFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbW9uL2ZpbGVfdXRp bHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1vbi9maWxlX3V0aWxzLmgKaW5kZXggYjFmMWEzYTFj MS4uNWNiMWZkM2EwMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbW9uL2ZpbGVfdXRp bHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tb24vZmlsZV91dGlscy5oCkBAIC0xNSwxMyAr MTUsMTAgQEAKICNpZm5kZWYgRklMRV9VVElMU19ICiAjZGVmaW5lIEZJTEVfVVRJTFNfSAog Ci1leHRlcm4gaW50IGZzeW5jX2ZuYW1lKGNvbnN0IGNoYXIgKmZuYW1lLCBib29sIGlzZGly LAotCQkJY29uc3QgY2hhciAqcHJvZ25hbWUpOwotZXh0ZXJuIHZvaWQgZnN5bmNfcGdkYXRh KGNvbnN0IGNoYXIgKnBnX2RhdGEsIGNvbnN0IGNoYXIgKnByb2duYW1lLAotCQkJIGludCBz ZXJ2ZXJWZXJzaW9uKTsKLWV4dGVybiB2b2lkIGZzeW5jX2Rpcl9yZWN1cnNlKGNvbnN0IGNo YXIgKmRpciwgY29uc3QgY2hhciAqcHJvZ25hbWUpOwotZXh0ZXJuIGludCBkdXJhYmxlX3Jl bmFtZShjb25zdCBjaGFyICpvbGRmaWxlLCBjb25zdCBjaGFyICpuZXdmaWxlLAotCQkJICAg Y29uc3QgY2hhciAqcHJvZ25hbWUpOwotZXh0ZXJuIGludAlmc3luY19wYXJlbnRfcGF0aChj b25zdCBjaGFyICpmbmFtZSwgY29uc3QgY2hhciAqcHJvZ25hbWUpOworZXh0ZXJuIGludCBm c3luY19mbmFtZShjb25zdCBjaGFyICpmbmFtZSwgYm9vbCBpc2Rpcik7CitleHRlcm4gdm9p ZCBmc3luY19wZ2RhdGEoY29uc3QgY2hhciAqcGdfZGF0YSwgaW50IHNlcnZlclZlcnNpb24p OworZXh0ZXJuIHZvaWQgZnN5bmNfZGlyX3JlY3Vyc2UoY29uc3QgY2hhciAqZGlyKTsKK2V4 dGVybiBpbnQgZHVyYWJsZV9yZW5hbWUoY29uc3QgY2hhciAqb2xkZmlsZSwgY29uc3QgY2hh ciAqbmV3ZmlsZSk7CitleHRlcm4gaW50CWZzeW5jX3BhcmVudF9wYXRoKGNvbnN0IGNoYXIg KmZuYW1lKTsKIAogI2VuZGlmCQkJCQkJCS8qIEZJTEVfVVRJTFNfSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uaCBiL3NyYy9pbmNsdWRl L2NvbW1vbi9yZXN0cmljdGVkX3Rva2VuLmgKaW5kZXggZDcxNDk5ZDA3ZS4uMDc4Mzg1YzZh MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbW9uL3Jlc3RyaWN0ZWRfdG9rZW4uaAor KysgYi9zcmMvaW5jbHVkZS9jb21tb24vcmVzdHJpY3RlZF90b2tlbi5oCkBAIC0xNCwxMSAr MTQsMTEgQEAKICAqIE9uIFdpbmRvd3MgbWFrZSBzdXJlIHRoYXQgd2UgYXJlIHJ1bm5pbmcg d2l0aCBhIHJlc3RyaWN0ZWQgdG9rZW4sCiAgKiBPbiBvdGhlciBwbGF0Zm9ybXMgZG8gbm90 aGluZy4KICAqLwotdm9pZAkJZ2V0X3Jlc3RyaWN0ZWRfdG9rZW4oY29uc3QgY2hhciAqcHJv Z25hbWUpOwordm9pZAkJZ2V0X3Jlc3RyaWN0ZWRfdG9rZW4odm9pZCk7CiAKICNpZmRlZiBX SU4zMgogLyogQ3JlYXRlIGEgcmVzdHJpY3RlZCB0b2tlbiBhbmQgZXhlY3V0ZSB0aGUgc3Bl Y2lmaWVkIHByb2Nlc3Mgd2l0aCBpdC4gKi8KLUhBTkRMRQkJQ3JlYXRlUmVzdHJpY3RlZFBy b2Nlc3MoY2hhciAqY21kLCBQUk9DRVNTX0lORk9STUFUSU9OICpwcm9jZXNzSW5mbywgY29u c3QgY2hhciAqcHJvZ25hbWUpOworSEFORExFCQlDcmVhdGVSZXN0cmljdGVkUHJvY2Vzcyhj aGFyICpjbWQsIFBST0NFU1NfSU5GT1JNQVRJT04gKnByb2Nlc3NJbmZvKTsKICNlbmRpZgog CiAjZW5kaWYJCQkJCQkJLyogQ09NTU9OX1JFU1RSSUNURURfVE9LRU5fSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvZmVfdXRpbHMvbG9nZ2luZy5oIGIvc3JjL2luY2x1ZGUvZmVf dXRpbHMvbG9nZ2luZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmI1ZjBkZGM4MzQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9mZV91dGlscy9s b2dnaW5nLmgKQEAgLTAsMCArMSw5NSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBM b2dnaW5nIGZyYW1ld29yayBmb3IgZnJvbnRlbmQgcHJvZ3JhbXMKKyAqCisgKiBDb3B5cmln aHQgKGMpIDIwMTgsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgor ICogc3JjL2luY2x1ZGUvZmVfdXRpbHMvbG9nZ2luZy5oCisgKgorICotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKyNpZm5kZWYgRkVfVVRJTFNfTE9HR0lOR19ICisjZGVmaW5lIEZFX1VU SUxTX0xPR0dJTkdfSAorCisvKgorICogTG9nIGxldmVscyBhcmUgaW5mb3JtYXRpb25hbCBv bmx5LiAgVGhleSBkbyBub3QgYWZmZWN0IHByb2dyYW0gZmxvdy4KKyAqLworZW51bSBwZ19s b2dfbGV2ZWwKK3sKKwkvKgorCSAqIE5vdCBpbml0aWFsaXplZCB5ZXQKKwkgKi8KKwlQR19M T0dfTk9UU0VUID0gMCwKKworCS8qCisJICogTG93IGxldmVsIG1lc3NhZ2VzIHRoYXQgYXJl IG5vcm1hbGx5IG9mZiBieSBkZWZhdWx0LgorCSAqLworCVBHX0xPR19ERUJVRywKKworCS8q CisJICogQW55IHByb2dyYW0gbWVzc2FnZXMgdGhhdCBnbyB0byBzdGRlcnIsIHNob3duIGJ5 IGRlZmF1bHQuICAoVGhlCisJICogcHJvZ3JhbSdzIG5vcm1hbCBvdXRwdXQgc2hvdWxkIGdv IHRvIHN0ZG91dCBhbmQgbm90IHVzZSB0aGUgbG9nZ2luZworCSAqIHN5c3RlbS4pCisJICov CisJUEdfTE9HX0lORk8sCisKKwkvKgorCSAqIFdhcm5pbmdzIGFuZCAiYWxtb3N0IiBlcnJv cnMsIGRlcGVuZHMgb24gdGhlIHByb2dyYW0KKwkgKi8KKwlQR19MT0dfV0FSTklORywKKwor CS8qCisJICogRXJyb3JzCisJICovCisJUEdfTE9HX0VSUk9SLAorCisJLyoKKwkgKiBTZXZl cmUgZXJyb3JzIHRoYXQgY2F1c2UgcHJvZ3JhbSB0ZXJtaW5hdGlvbi4gIChPbmUtc2hvdCBw cm9ncmFtcyBtYXkKKwkgKiBjaG9zZSB0byBsYWJlbCBldmVuIGZhdGFsIGVycm9ycyBhcyBt ZXJlbHkgImVycm9ycyIuICBUaGUgZGlzdGluY3Rpb24KKwkgKiBpcyB1cCB0byB0aGUgcHJv Z3JhbS4pCisJICovCisJUEdfTE9HX0ZBVEFMLAorCisJLyoKKwkgKiBUdXJuIGFsbCBsb2dn aW5nIG9mZi4KKwkgKi8KKwlQR19MT0dfT0ZGLAorfTsKKworZXh0ZXJuIGVudW0gcGdfbG9n X2xldmVsIF9fcGdfbG9nX2xldmVsOworCisvKgorICogS2luZCBvZiBhIGhhY2sgdG8gYmUg YWJsZSB0byBwcm9kdWNlIHRoZSBwc3FsIG91dHB1dCBleGFjdGx5IGFzIHJlcXVpcmVkIGJ5 CisgKiB0aGUgcmVncmVzc2lvbiB0ZXN0cy4KKyAqLworI2RlZmluZSBQR19MT0dfRkxBR19U RVJTRQkxCisKK3ZvaWQgcGdfbG9nZ2luZ19pbml0KGNvbnN0IGNoYXIgKmFyZ3YwKTsKK3Zv aWQgcGdfbG9nZ2luZ19jb25maWcoaW50IG5ld19mbGFncyk7Cit2b2lkIHBnX2xvZ2dpbmdf c2V0X2xldmVsKGVudW0gcGdfbG9nX2xldmVsIG5ld19sZXZlbCk7Cit2b2lkIHBnX2xvZ2dp bmdfc2V0X3ByZV9jYWxsYmFjayh2b2lkICgqY2IpKHZvaWQpKTsKK3ZvaWQgcGdfbG9nZ2lu Z19zZXRfbG9jdXNfY2FsbGJhY2sodm9pZCAoKmNiKShjb25zdCBjaGFyICoqZmlsZW5hbWUs IHVpbnQ2NCAqbGluZW5vKSk7CisKK3ZvaWQgcGdfbG9nX2dlbmVyaWMoZW51bSBwZ19sb2df bGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIgKiBwZ19yZXN0cmljdCBmbXQsIC4uLikgcGdfYXR0 cmlidXRlX3ByaW50ZigyLCAzKTsKK3ZvaWQgcGdfbG9nX2dlbmVyaWNfdihlbnVtIHBnX2xv Z19sZXZlbCBsZXZlbCwgY29uc3QgY2hhciAqIHBnX3Jlc3RyaWN0IGZtdCwgdmFfbGlzdCBh cCkgcGdfYXR0cmlidXRlX3ByaW50ZigyLCAwKTsKKworI2RlZmluZSBwZ19sb2dfZmF0YWwo Li4uKSBkbyB7IFwKKwkJaWYgKGxpa2VseShfX3BnX2xvZ19sZXZlbCA8PSBQR19MT0dfRkFU QUwpKSBwZ19sb2dfZ2VuZXJpYyhQR19MT0dfRkFUQUwsIF9fVkFfQVJHU19fKTsgXAorCX0g d2hpbGUoMCkKKworI2RlZmluZSBwZ19sb2dfZXJyb3IoLi4uKSBkbyB7IFwKKwkJaWYgKGxp a2VseShfX3BnX2xvZ19sZXZlbCA8PSBQR19MT0dfRVJST1IpKSBwZ19sb2dfZ2VuZXJpYyhQ R19MT0dfRVJST1IsIF9fVkFfQVJHU19fKTsgXAorCX0gd2hpbGUoMCkKKworI2RlZmluZSBw Z19sb2dfd2FybmluZyguLi4pIGRvIHsgXAorCQlpZiAobGlrZWx5KF9fcGdfbG9nX2xldmVs IDw9IFBHX0xPR19XQVJOSU5HKSkgcGdfbG9nX2dlbmVyaWMoUEdfTE9HX1dBUk5JTkcsIF9f VkFfQVJHU19fKTsgXAorCX0gd2hpbGUoMCkKKworI2RlZmluZSBwZ19sb2dfaW5mbyguLi4p IGRvIHsgXAorCQlpZiAobGlrZWx5KF9fcGdfbG9nX2xldmVsIDw9IFBHX0xPR19JTkZPKSkg cGdfbG9nX2dlbmVyaWMoUEdfTE9HX0lORk8sIF9fVkFfQVJHU19fKTsgXAorCX0gd2hpbGUo MCkKKworI2RlZmluZSBwZ19sb2dfZGVidWcoLi4uKSBkbyB7IFwKKwkJaWYgKHVubGlrZWx5 KF9fcGdfbG9nX2xldmVsIDw9IFBHX0xPR19ERUJVRykpIHBnX2xvZ19nZW5lcmljKFBHX0xP R19ERUJVRywgX19WQV9BUkdTX18pOyBcCisJfSB3aGlsZSgwKQorCisjZW5kaWYJLyogRkVf VVRJTFNfTE9HR0lOR19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9mZV91dGlscy9w c3Fsc2Nhbi5oIGIvc3JjL2luY2x1ZGUvZmVfdXRpbHMvcHNxbHNjYW4uaAppbmRleCBkNmZl ZjlmZjc3Li4zOTVhYzc4YzU5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9mZV91dGlscy9w c3Fsc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2ZlX3V0aWxzL3BzcWxzY2FuLmgKQEAgLTY0 LDEzICs2NCw2IEBAIHR5cGVkZWYgc3RydWN0IFBzcWxTY2FuQ2FsbGJhY2tzCiAJLyogVGhp cyBwb2ludGVyIGNhbiBiZSBOVUxMIGlmIG5vIHZhcmlhYmxlIHN1YnN0aXR1dGlvbiBpcyB3 YW50ZWQgKi8KIAljaGFyCSAgICooKmdldF92YXJpYWJsZSkgKGNvbnN0IGNoYXIgKnZhcm5h bWUsIFBzcWxTY2FuUXVvdGVUeXBlIHF1b3RlLAogCQkJCQkJCQkgdm9pZCAqcGFzc3Rocm91 Z2gpOwotCS8qIFByaW50IGFuIGVycm9yIG1lc3NhZ2Ugc29tZXBsYWNlIGFwcHJvcHJpYXRl ICovCi0JLyogKHZlcnkgb2xkIGdjYyB2ZXJzaW9ucyBkb24ndCBzdXBwb3J0IGF0dHJpYnV0 ZXMgb24gZnVuY3Rpb24gcG9pbnRlcnMpICovCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYg X19HTlVDX18gPCA0Ci0Jdm9pZAkJKCp3cml0ZV9lcnJvcikgKGNvbnN0IGNoYXIgKmZtdCwu Li4pOwotI2Vsc2UKLQl2b2lkCQkoKndyaXRlX2Vycm9yKSAoY29uc3QgY2hhciAqZm10LC4u LikgcGdfYXR0cmlidXRlX3ByaW50ZigxLCAyKTsKLSNlbmRpZgogfSBQc3FsU2NhbkNhbGxi YWNrczsKIAogCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvTWFrZWZp bGUgYi9zcmMvaW50ZXJmYWNlcy9lY3BnL3Rlc3QvTWFrZWZpbGUKaW5kZXggYmU1M2I3Yjk0 ZC4uZTZkNmY4MGVlZiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvZWNwZy90ZXN0L01h a2VmaWxlCisrKyBiL3NyYy9pbnRlcmZhY2VzL2VjcGcvdGVzdC9NYWtlZmlsZQpAQCAtMTUs NiArMTUsOCBAQCBvdmVycmlkZSBDUFBGTEFHUyA6PSBcCiAJJy1ERExTVUZGSVg9IiQoRExT VUZGSVgpIicgXAogCSQoQ1BQRkxBR1MpCiAKK0xERkxBR1NfSU5URVJOQUwgKz0gLUwkKHRv cF9idWlsZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzCisKICMgZGVmYXVsdCBlbmNv ZGluZyBmb3IgcmVncmVzc2lvbiB0ZXN0cwogRU5DT0RJTkcgPSBTUUxfQVNDSUkKIApkaWZm IC0tZ2l0IGEvc3JjL25scy1nbG9iYWwubWsgYi9zcmMvbmxzLWdsb2JhbC5tawppbmRleCBh YTQwNThmNzY2Li42NmUxOTA0MTJiIDEwMDY0NAotLS0gYS9zcmMvbmxzLWdsb2JhbC5tawor KysgYi9zcmMvbmxzLWdsb2JhbC5tawpAQCAtNjcsNiArNjcsMTQgQEAgQkFDS0VORF9DT01N T05fR0VUVEVYVF9GTEFHUyA9IFwKICAgICBlcnJoaW50OjE6Yy1mb3JtYXQgXAogICAgIGVy cmNvbnRleHQ6MTpjLWZvcm1hdAogCitGUk9OVEVORF9DT01NT05fR0VUVEVYVF9GSUxFUyA9 ICQodG9wX3NyY2Rpcikvc3JjL2ZlX3V0aWxzL2xvZ2dpbmcuYworCitGUk9OVEVORF9DT01N T05fR0VUVEVYVF9UUklHR0VSUyA9IFwKKyAgICBwZ19sb2dfZmF0YWwgcGdfbG9nX2Vycm9y IHBnX2xvZ193YXJuaW5nIHBnX2xvZ19pbmZvIHBnX2xvZ19nZW5lcmljIHBnX2xvZ19nZW5l cmljX3YKKworRlJPTlRFTkRfQ09NTU9OX0dFVFRFWFRfRkxBR1MgPSBcCisgICAgcGdfbG9n X2ZhdGFsOjE6Yy1mb3JtYXQgcGdfbG9nX2Vycm9yOjE6Yy1mb3JtYXQgcGdfbG9nX3dhcm5p bmc6MTpjLWZvcm1hdCBwZ19sb2dfaW5mbzoxOmMtZm9ybWF0IHBnX2xvZ19nZW5lcmljOjI6 Yy1mb3JtYXQgcGdfbG9nX2dlbmVyaWNfdjoyOmMtZm9ybWF0CisKIAogYWxsLXBvOiAkKE1P X0ZJTEVTKQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vTWFrZWZpbGUgYi9z cmMvdGVzdC9pc29sYXRpb24vTWFrZWZpbGUKaW5kZXggYzNjODI4MGVhMi4uZmJiYmNhMDVj NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL01ha2VmaWxlCisrKyBiL3NyYy90 ZXN0L2lzb2xhdGlvbi9NYWtlZmlsZQpAQCAtMTAsNiArMTAsNyBAQCB0b3BfYnVpbGRkaXIg PSAuLi8uLi8uLgogaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2Jh bAogCiBvdmVycmlkZSBDUFBGTEFHUyA6PSAtSSQoc3JjZGlyKSAtSSQobGlicHFfc3JjZGly KSAtSSQoc3JjZGlyKS8uLi9yZWdyZXNzICQoQ1BQRkxBR1MpCitMREZMQUdTX0lOVEVSTkFM ICs9IC1MJCh0b3BfYnVpbGRkaXIpL3NyYy9mZV91dGlscyAtbHBnZmV1dGlscwogCiBPQkpT ID0gIHNwZWNwYXJzZS5vIGlzb2xhdGlvbnRlc3Rlci5vICQoV0lOMzJSRVMpCiAKQEAgLTMx LDcgKzMyLDcgQEAgcGdfcmVncmVzcy5vOiB8IHN1Ym1ha2UtcmVncmVzcwogcGdfaXNvbGF0 aW9uX3JlZ3Jlc3MkKFgpOiBpc29sYXRpb25fbWFpbi5vIHBnX3JlZ3Jlc3MubyAkKFdJTjMy UkVTKQogCSQoQ0MpICQoQ0ZMQUdTKSAkXiAkKExERkxBR1MpICQoTERGTEFHU19FWCkgJChM SUJTKSAtbyAkQAogCi1pc29sYXRpb250ZXN0ZXIkKFgpOiAkKE9CSlMpIHwgc3VibWFrZS1s aWJwcSBzdWJtYWtlLWxpYnBncG9ydAoraXNvbGF0aW9udGVzdGVyJChYKTogJChPQkpTKSB8 IHN1Ym1ha2UtbGlicHEgc3VibWFrZS1saWJwZ3BvcnQgc3VibWFrZS1saWJwZ2ZldXRpbHMK IAkkKENDKSAkKENGTEFHUykgJF4gJChsaWJwcV9wZ3BvcnQpICQoTERGTEFHUykgJChMREZM QUdTX0VYKSAkKExJQlMpIC1vICRACiAKIGRpc3RwcmVwOiBzcGVjcGFyc2UuYyBzcGVjc2Nh bm5lci5jCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL0dOVW1ha2VmaWxlIGIvc3Jj L3Rlc3QvcmVncmVzcy9HTlVtYWtlZmlsZQppbmRleCBhMjRjZmQ0ZTAxLi4zOGZkMjVlNTY5 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL0dOVW1ha2VmaWxlCisrKyBiL3NyYy90 ZXN0L3JlZ3Jlc3MvR05VbWFrZWZpbGUKQEAgLTIzLDYgKzIzLDggQEAgaWZkZWYgTUFYX0NP Tk5FQ1RJT05TCiBNQVhDT05OT1BUICs9IC0tbWF4LWNvbm5lY3Rpb25zPSQoTUFYX0NPTk5F Q1RJT05TKQogZW5kaWYKIAorTERGTEFHU19JTlRFUk5BTCArPSAtTCQodG9wX2J1aWxkZGly KS9zcmMvZmVfdXRpbHMgLWxwZ2ZldXRpbHMKKwogIyBzdHVmZiB0byBwYXNzIGludG8gYnVp bGQgb2YgcGdfcmVncmVzcwogRVhUUkFERUZTID0gJy1ESE9TVF9UVVBMRT0iJChob3N0X3R1 cGxlKSInIFwKIAknLURTSEVMTFBST0c9IiQoU0hFTEwpIicgXApAQCAtMzYsNyArMzgsNyBA QCBFWFRSQURFRlMgPSAnLURIT1NUX1RVUExFPSIkKGhvc3RfdHVwbGUpIicgXAogCiBhbGw6 IHBnX3JlZ3Jlc3MkKFgpCiAKLXBnX3JlZ3Jlc3MkKFgpOiBwZ19yZWdyZXNzLm8gcGdfcmVn cmVzc19tYWluLm8gJChXSU4zMlJFUykgfCBzdWJtYWtlLWxpYnBncG9ydAorcGdfcmVncmVz cyQoWCk6IHBnX3JlZ3Jlc3MubyBwZ19yZWdyZXNzX21haW4ubyAkKFdJTjMyUkVTKSB8IHN1 Ym1ha2UtbGlicGdwb3J0IHN1Ym1ha2UtbGlicGdmZXV0aWxzCiAJJChDQykgJChDRkxBR1Mp ICReICQoTERGTEFHUykgJChMREZMQUdTX0VYKSAkKExJQlMpIC1vICRACiAKICMgZGVwZW5k ZW5jaWVzIGVuc3VyZSB0aGF0IHBhdGggY2hhbmdlcyBwcm9wYWdhdGUKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvcGdfcmVncmVzcy5jIGIvc3JjL3Rlc3QvcmVncmVzcy9wZ19y ZWdyZXNzLmMKaW5kZXggYzI4YTc4MDE2Yi4uYzRiMzU2MzhhMyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9wZ19yZWdyZXNzLmMKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wZ19y ZWdyZXNzLmMKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgImNvbW1vbi9yZXN0cmlj dGVkX3Rva2VuLmgiCiAjaW5jbHVkZSAiY29tbW9uL3VzZXJuYW1lLmgiCisjaW5jbHVkZSAi ZmVfdXRpbHMvbG9nZ2luZy5oIgogI2luY2x1ZGUgImdldG9wdF9sb25nLmgiCiAjaW5jbHVk ZSAibGlicHEvcHFjb21tLmgiCQkvKiBuZWVkZWQgZm9yIFVOSVhTT0NLX1BBVEgoKSAqLwog I2luY2x1ZGUgInBnX2NvbmZpZ19wYXRocy5oIgpAQCAtMTE3NCw3ICsxMTc1LDcgQEAgc3Bh d25fcHJvY2Vzcyhjb25zdCBjaGFyICpjbWRsaW5lKQogCWNtZGxpbmUyID0gcHNwcmludGYo ImNtZCAvYyBcIiVzXCIiLCBjbWRsaW5lKTsKIAogCWlmICgocmVzdHJpY3RlZFRva2VuID0K LQkJIENyZWF0ZVJlc3RyaWN0ZWRQcm9jZXNzKGNtZGxpbmUyLCAmcGksIHByb2duYW1lKSkg PT0gMCkKKwkJIENyZWF0ZVJlc3RyaWN0ZWRQcm9jZXNzKGNtZGxpbmUyLCAmcGkpKSA9PSAw KQogCQlleGl0KDIpOwogCiAJQ2xvc2VIYW5kbGUocGkuaFRocmVhZCk7CkBAIC0yMDk1LDEw ICsyMDk2LDExIEBAIHJlZ3Jlc3Npb25fbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdLCBp bml0X2Z1bmN0aW9uIGlmdW5jLCB0ZXN0X2Z1bmN0aW9uIHRmdW5jCiAJY2hhcgkJYnVmW01B WFBHUEFUSCAqIDRdOwogCWNoYXIJCWJ1ZjJbTUFYUEdQQVRIICogNF07CiAKKwlwZ19sb2dn aW5nX2luaXQoYXJndlswXSk7CiAJcHJvZ25hbWUgPSBnZXRfcHJvZ25hbWUoYXJndlswXSk7 CiAJc2V0X3BnbG9jYWxlX3Bnc2VydmljZShhcmd2WzBdLCBQR19URVhURE9NQUlOKCJwZ19y ZWdyZXNzIikpOwogCi0JZ2V0X3Jlc3RyaWN0ZWRfdG9rZW4ocHJvZ25hbWUpOworCWdldF9y ZXN0cmljdGVkX3Rva2VuKCk7CiAKIAlhdGV4aXQoc3RvcF9wb3N0bWFzdGVyKTsKIAoKYmFz ZS1jb21taXQ6IDU1NGNhNjk1NGVjYmZjNTRlNzE1OWE2MDliNWZmYzc5MjE2NzAxODUKLS0g CjIuMjAuMQoK --------------137A872C4D741CFEB627670A--