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 1i3mHz-00077G-KF for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Aug 2019 19:10: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 1i3mHx-0006mE-38 for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Aug 2019 19:10: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 1i3mHv-0006j2-SG for pgsql-hackers@lists.postgresql.org; Fri, 30 Aug 2019 19:10:24 +0000 Received: from out1-smtp.messagingengine.com ([66.111.4.25]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1i3mHq-0007DH-FP for pgsql-hackers@postgresql.org; Fri, 30 Aug 2019 19:10:23 +0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id 99FB021F8A for ; Fri, 30 Aug 2019 15:10:15 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Fri, 30 Aug 2019 15:10:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=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=fm3; bh=FMXCm+ Dnpsm/VlCIeu5IIcsrtkCz8h/Uad/8uA2XhL8=; b=xyLdq4brUQrawSm9PwLS8J W+8voLndoj20LwAT86AuFGO0IAU6vm/Hl/gkPjtleFh2jiCuPzZ8x86YJJLmHcl4 KiWNjHOFjE95rpwCM7BK6z0s3b1MMhyCvHg3LalUSFAYfHpYjdP9ggJYd/v5Gag0 8k+O256f0dp0h6onX39iycLyDZD85sAHMXzTQNT1JAEpFPNnpUreUB6YIBKGgSOj d+KBZm/z7cXsNf1vTicaFJcEblDVjeoRSu/FuO5o8W71Sh5kdJzPXVcGYgdyvXDV XOSYDZgq1jKeazIp28yIcWc4Ky0/vk4iK8D2WevKEHPua7vgHR8KBgt8OFVM7hBQ == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduvddrudeigedgudefhecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurhepuffhvfhfohfkffgfgggjtgesmh dtreertdefjeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgv rhdrvghishgvnhhtrhgruhhtsedvnhguqhhurggurhgrnhhtrdgtohhmqeenucffohhmrg hinhepvdhnughquhgrughrrghnthdrtghomhenucfkphepleefrddvgedvrdegtddrvddt vdenucfrrghrrghmpehmrghilhhfrhhomhepphgvthgvrhdrvghishgvnhhtrhgruhhtse dvnhguqhhurggurhgrnhhtrdgtohhmnecuvehluhhsthgvrhfuihiivgeptd X-ME-Proxy: Received: from april.pezone.net (p5df228ca.dip0.t-ipconnect.de [93.242.40.202]) by mail.messagingengine.com (Postfix) with ESMTPA id E7D48D6005A for ; Fri, 30 Aug 2019 15:10:12 -0400 (EDT) Subject: Re: base backup client as auxiliary backend process From: Peter Eisentraut To: pgsql-hackers References: <61b8d18d-c922-ac99-b990-a31ba63cdcbb@2ndquadrant.com> Openpgp: preference=signencrypt Autocrypt: addr=peter.eisentraut@2ndquadrant.com; prefer-encrypt=mutual; keydata= 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 3jI= Organization: 2ndQuadrant Message-ID: <62e860f2-ae4b-67a1-b65d-04c3d1bf6aff@2ndquadrant.com> Date: Fri, 30 Aug 2019 21:10:10 +0200 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: <61b8d18d-c922-ac99-b990-a31ba63cdcbb@2ndquadrant.com> Content-Type: multipart/mixed; boundary="------------BB0518755382B79C7068A625" 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. --------------BB0518755382B79C7068A625 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit > Attached is a very hackish patch to implement this. It works like this: > > # (assuming you have a primary already running somewhere) > initdb -D data2 --replica > $EDITOR data2/postgresql.conf # set primary_conninfo > pg_ctl -D data2 start Attached is an updated patch for this. I have changed the initdb option name per suggestion. The WAL receiver is now started concurrently with the base backup. There is progress reporting (ps display), fsyncing. Configuration files are not copied anymore. There is a simple test suite. Tablespace support is still missing, but it would be straightforward. It's still all to be considered experimental, but it's taking shape and working pretty well. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services --------------BB0518755382B79C7068A625 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v2-0001-Base-backup-client-as-auxiliary-backend-process.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v2-0001-Base-backup-client-as-auxiliary-backend-process.patc"; filename*1="h" RnJvbSBhYWU0NjQwYWNiYjJhMWFlNGZmNWQyZTgwYWJjZTA3OTg3OTlmZTczIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogRnJpLCAzMCBBdWcgMjAxOSAyMDo0Mjo1MSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggdjJdIEJhc2UgYmFja3VwIGNsaWVudCBhcyBhdXhpbGlhcnkgYmFja2VuZCBw cm9jZXNzCgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdl LWlkL2ZsYXQvNjFiOGQxOGQtYzkyMi1hYzk5LWI5OTAtYTMxYmE2M2NkY2JiQDJuZHF1YWRy YW50LmNvbQotLS0KIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAgICAgICAg ICAgICB8ICAxMiArLQogZG9jL3NyYy9zZ21sL3JlZi9pbml0ZGIuc2dtbCAgICAgICAgICAg ICAgICAgIHwgIDE3ICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICAg ICAgICAgICB8ICA4NCArKy0tCiBzcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFwLmMg ICAgICAgICAgICAgfCAgIDkgKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYyAg ICAgICAgICAgICAgIHwgICA2ICsKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rl ci5jICAgICAgICAgICB8IDExNCArKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFz ZWJhY2t1cC5jICAgICAgICAgIHwgIDY4ICsrKwogLi4uL2xpYnBxd2FscmVjZWl2ZXIvbGli cHF3YWxyZWNlaXZlci5jICAgICAgIHwgNDE5ICsrKysrKysrKysrKysrKysrKwogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcmVwbF9ncmFtLnkgICAgICAgICAgIHwgICA5ICstCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9yZXBsX3NjYW5uZXIubCAgICAgICAgfCAgIDEgKwogc3Jj L2Jpbi9pbml0ZGIvaW5pdGRiLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDM5ICstCiBz cmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwog c3JjL2luY2x1ZGUvbWlzY2FkbWluLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsK IHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9iYXNlYmFja3VwLmggICAgICAgICAgfCAgIDIg Kwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCAgICAgICAgIHwgICA0 ICsKIHNyYy9pbmNsdWRlL3V0aWxzL2d1Yy5oICAgICAgICAgICAgICAgICAgICAgICB8ICAg MiArLQogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMThfYmFzZWJhY2t1cC5wbCAgICAgICAgIHwg IDI5ICsrCiAxOCBmaWxlcyBjaGFuZ2VkLCA3NjggaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMThfYmFz ZWJhY2t1cC5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKaW5kZXggYjIwZjE2OTBhNy4uODFmNDNiNWMw MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3Byb3RvY29sLnNnbWwKQEAgLTI0NjYsNyArMjQ2Niw3IEBAIDx0aXRsZT5TdHJl YW1pbmcgUmVwbGljYXRpb24gUHJvdG9jb2w8L3RpdGxlPgogICA8L3Zhcmxpc3RlbnRyeT4K IAogICA8dmFybGlzdGVudHJ5PgotICAgIDx0ZXJtPjxsaXRlcmFsPkJBU0VfQkFDS1VQPC9s aXRlcmFsPiBbIDxsaXRlcmFsPkxBQkVMPC9saXRlcmFsPiA8cmVwbGFjZWFibGU+J2xhYmVs JzwvcmVwbGFjZWFibGU+IF0gWyA8bGl0ZXJhbD5QUk9HUkVTUzwvbGl0ZXJhbD4gXSBbIDxs aXRlcmFsPkZBU1Q8L2xpdGVyYWw+IF0gWyA8bGl0ZXJhbD5XQUw8L2xpdGVyYWw+IF0gWyA8 bGl0ZXJhbD5OT1dBSVQ8L2xpdGVyYWw+IF0gWyA8bGl0ZXJhbD5NQVhfUkFURTwvbGl0ZXJh bD4gPHJlcGxhY2VhYmxlPnJhdGU8L3JlcGxhY2VhYmxlPiBdIFsgPGxpdGVyYWw+VEFCTEVT UEFDRV9NQVA8L2xpdGVyYWw+IF0gWyA8bGl0ZXJhbD5OT1ZFUklGWV9DSEVDS1NVTVM8L2xp dGVyYWw+IF0KKyAgICA8dGVybT48bGl0ZXJhbD5CQVNFX0JBQ0tVUDwvbGl0ZXJhbD4gWyA8 bGl0ZXJhbD5MQUJFTDwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlPidsYWJlbCc8L3JlcGxhY2Vh YmxlPiBdIFsgPGxpdGVyYWw+UFJPR1JFU1M8L2xpdGVyYWw+IF0gWyA8bGl0ZXJhbD5GQVNU PC9saXRlcmFsPiBdIFsgPGxpdGVyYWw+V0FMPC9saXRlcmFsPiBdIFsgPGxpdGVyYWw+Tk9X QUlUPC9saXRlcmFsPiBdIFsgPGxpdGVyYWw+TUFYX1JBVEU8L2xpdGVyYWw+IDxyZXBsYWNl YWJsZT5yYXRlPC9yZXBsYWNlYWJsZT4gXSBbIDxsaXRlcmFsPlRBQkxFU1BBQ0VfTUFQPC9s aXRlcmFsPiBdIFsgPGxpdGVyYWw+Tk9WRVJJRllfQ0hFQ0tTVU1TPC9saXRlcmFsPiBdIFsg PGxpdGVyYWw+RVhDTFVERV9DT05GPC9saXRlcmFsPiBdCiAgICAgIDxpbmRleHRlcm0+PHBy aW1hcnk+QkFTRV9CQUNLVVA8L3ByaW1hcnk+PC9pbmRleHRlcm0+CiAgICAgPC90ZXJtPgog ICAgIDxsaXN0aXRlbT4KQEAgLTI1NzYsNiArMjU3NiwxNiBAQCA8dGl0bGU+U3RyZWFtaW5n IFJlcGxpY2F0aW9uIFByb3RvY29sPC90aXRsZT4KICAgICAgICAgIDwvcGFyYT4KICAgICAg ICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgIDx2YXJs aXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPkVYQ0xVREVfQ09ORjwvbGl0ZXJh bD48L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAg ICAgIERvIG5vdCBjb3B5IGNvbmZpZ3VyYXRpb24gZmlsZXMsIHRoYXQgaXMsIGZpbGVzIHRo YXQgZW5kIGluCisgICAgICAgICAgPGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4uCisgICAg ICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPC92YXJsaXN0ZW50 cnk+CiAgICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4K ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvaW5pdGRiLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL2luaXRkYi5zZ21sCmluZGV4IGRhNWM4ZjUzMDcuLjEyNjFlMDJkNTkgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvaW5pdGRiLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9pbml0ZGIuc2dtbApAQCAtMjg2LDYgKzI4NiwyMyBAQCA8dGl0bGU+T3B0aW9uczwv dGl0bGU+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAg ICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PG9wdGlvbj4tcjwvb3B0aW9uPjwvdGVy bT4KKyAgICAgIDx0ZXJtPjxvcHRpb24+LS1yZXBsaWNhPC9vcHRpb24+PC90ZXJtPgorICAg ICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBJbml0aWFsaXplIGEgZGF0 YSBkaXJlY3RvcnkgZm9yIGEgcGh5c2ljYWwgcmVwbGljYXRpb24gcmVwbGljYS4gIFRoZQor ICAgICAgICBkYXRhIGRpcmVjdG9yeSB3aWxsIG5vdCBiZSBpbml0aWFsaXplZCB3aXRoIGEg ZnVsbCBkYXRhYmFzZSBzeXN0ZW0sCisgICAgICAgIGJ1dCB3aWxsIGluc3RlYWQgb25seSBj b250YWluIGEgbWluaW1hbCBzZXQgb2YgZmlsZXMuICBBIHNlcnZlciB0aGF0CisgICAgICAg IGlzIHN0YXJ0ZWQgb24gdGhpcyBkYXRhIGRpcmVjdG9yeSB3aWxsIGZpcnN0IGZldGNoIGEg YmFzZSBiYWNrdXAgYW5kCisgICAgICAgIHRoZW4gc3dpdGNoIHRvIHN0YW5kYnkgbW9kZS4g IFRoZSBjb25uZWN0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgYmFzZQorICAgICAgICBiYWNr dXAgaGFzIHRvIGJlIGNvbmZpZ3VyZWQgYnkgc2V0dGluZyA8eHJlZgorICAgICAgICBsaW5r ZW5kPSJndWMtcHJpbWFyeS1jb25uaW5mbyIvPiwgYW5kIG90aGVyIHBhcmFtZXRlcnMgYXMg ZGVzaXJlZCwKKyAgICAgICAgYmVmb3JlIHRoZSBzZXJ2ZXIgaXMgc3RhcnRlZC4KKyAgICAg ICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwog ICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgPHRlcm0+PG9wdGlvbj4tUzwvb3B0aW9uPjwv dGVybT4KICAgICAgIDx0ZXJtPjxvcHRpb24+LS1zeW5jLW9ubHk8L29wdGlvbj48L3Rlcm0+ CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggZTY1MWE4NDFiYi4uN2FiOGFi NDVmNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtOTA1LDggKzkwNSw2 IEBAIHN0YXRpYyB2b2lkIENoZWNrUmVjb3ZlcnlDb25zaXN0ZW5jeSh2b2lkKTsKIHN0YXRp YyBYTG9nUmVjb3JkICpSZWFkQ2hlY2twb2ludFJlY29yZChYTG9nUmVhZGVyU3RhdGUgKnhs b2dyZWFkZXIsCiAJCQkJCQkJCQkJWExvZ1JlY1B0ciBSZWNQdHIsIGludCB3aGljaENoa3B0 LCBib29sIHJlcG9ydCk7CiBzdGF0aWMgYm9vbCByZXNjYW5MYXRlc3RUaW1lTGluZSh2b2lk KTsKLXN0YXRpYyB2b2lkIFdyaXRlQ29udHJvbEZpbGUodm9pZCk7Ci1zdGF0aWMgdm9pZCBS ZWFkQ29udHJvbEZpbGUodm9pZCk7CiBzdGF0aWMgY2hhciAqc3RyX3RpbWUocGdfdGltZV90 IHRub3cpOwogc3RhdGljIGJvb2wgQ2hlY2tGb3JTdGFuZGJ5VHJpZ2dlcih2b2lkKTsKIApA QCAtNDQ4MSw3ICs0NDc5LDcgQEAgcmVzY2FuTGF0ZXN0VGltZUxpbmUodm9pZCkKICAqIFJl YWRDb250cm9sRmlsZSgpIHZlcmlmaWVzIHRoZXkgYXJlIGNvcnJlY3QuICBXZSBjb3VsZCBz cGxpdCBvdXQgdGhlCiAgKiBJL08gYW5kIGNvbXBhdGliaWxpdHktY2hlY2sgZnVuY3Rpb25z LCBidXQgdGhlcmUgc2VlbXMgbm8gbmVlZCBjdXJyZW50bHkuCiAgKi8KLXN0YXRpYyB2b2lk Cit2b2lkCiBXcml0ZUNvbnRyb2xGaWxlKHZvaWQpCiB7CiAJaW50CQkJZmQ7CkBAIC00NTcz LDcgKzQ1NzEsNyBAQCBXcml0ZUNvbnRyb2xGaWxlKHZvaWQpCiAJCQkJCQlYTE9HX0NPTlRS T0xfRklMRSkpKTsKIH0KIAotc3RhdGljIHZvaWQKK3ZvaWQKIFJlYWRDb250cm9sRmlsZSh2 b2lkKQogewogCXBnX2NyYzMyYwljcmM7CkBAIC01MDc5LDYgKzUwNzcsNDEgQEAgWExPR1No bWVtSW5pdCh2b2lkKQogCUluaXRTaGFyZWRMYXRjaCgmWExvZ0N0bC0+cmVjb3ZlcnlXYWtl dXBMYXRjaCk7CiB9CiAKK3ZvaWQKK0luaXRDb250cm9sRmlsZSh1aW50NjQgc3lzaWRlbnRp ZmllcikKK3sKKwljaGFyCQltb2NrX2F1dGhfbm9uY2VbTU9DS19BVVRIX05PTkNFX0xFTl07 CisKKwkvKgorCSAqIEdlbmVyYXRlIGEgcmFuZG9tIG5vbmNlLiBUaGlzIGlzIHVzZWQgZm9y IGF1dGhlbnRpY2F0aW9uIHJlcXVlc3RzIHRoYXQKKwkgKiB3aWxsIGZhaWwgYmVjYXVzZSB0 aGUgdXNlciBkb2VzIG5vdCBleGlzdC4gVGhlIG5vbmNlIGlzIHVzZWQgdG8gY3JlYXRlCisJ ICogYSBnZW51aW5lLWxvb2tpbmcgcGFzc3dvcmQgY2hhbGxlbmdlIGZvciB0aGUgbm9uLWV4 aXN0ZW50IHVzZXIsIGluIGxpZXUKKwkgKiBvZiBhbiBhY3R1YWwgc3RvcmVkIHBhc3N3b3Jk LgorCSAqLworCWlmICghcGdfc3Ryb25nX3JhbmRvbShtb2NrX2F1dGhfbm9uY2UsIE1PQ0tf QVVUSF9OT05DRV9MRU4pKQorCQllcmVwb3J0KFBBTklDLAorCQkJCShlcnJjb2RlKEVSUkNP REVfSU5URVJOQUxfRVJST1IpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBnZW5lcmF0ZSBz ZWNyZXQgYXV0aG9yaXphdGlvbiB0b2tlbiIpKSk7CisKKwltZW1zZXQoQ29udHJvbEZpbGUs IDAsIHNpemVvZihDb250cm9sRmlsZURhdGEpKTsKKwkvKiBJbml0aWFsaXplIHBnX2NvbnRy b2wgc3RhdHVzIGZpZWxkcyAqLworCUNvbnRyb2xGaWxlLT5zeXN0ZW1faWRlbnRpZmllciA9 IHN5c2lkZW50aWZpZXI7CisJbWVtY3B5KENvbnRyb2xGaWxlLT5tb2NrX2F1dGhlbnRpY2F0 aW9uX25vbmNlLCBtb2NrX2F1dGhfbm9uY2UsIE1PQ0tfQVVUSF9OT05DRV9MRU4pOworCUNv bnRyb2xGaWxlLT5zdGF0ZSA9IERCX1NIVVRET1dORUQ7CisJQ29udHJvbEZpbGUtPnVubG9n Z2VkTFNOID0gRmlyc3ROb3JtYWxVbmxvZ2dlZExTTjsKKworCS8qIFNldCBpbXBvcnRhbnQg cGFyYW1ldGVyIHZhbHVlcyBmb3IgdXNlIHdoZW4gcmVwbGF5aW5nIFdBTCAqLworCUNvbnRy b2xGaWxlLT5NYXhDb25uZWN0aW9ucyA9IE1heENvbm5lY3Rpb25zOworCUNvbnRyb2xGaWxl LT5tYXhfd29ya2VyX3Byb2Nlc3NlcyA9IG1heF93b3JrZXJfcHJvY2Vzc2VzOworCUNvbnRy b2xGaWxlLT5tYXhfd2FsX3NlbmRlcnMgPSBtYXhfd2FsX3NlbmRlcnM7CisJQ29udHJvbEZp bGUtPm1heF9wcmVwYXJlZF94YWN0cyA9IG1heF9wcmVwYXJlZF94YWN0czsKKwlDb250cm9s RmlsZS0+bWF4X2xvY2tzX3Blcl94YWN0ID0gbWF4X2xvY2tzX3Blcl94YWN0OworCUNvbnRy b2xGaWxlLT53YWxfbGV2ZWwgPSB3YWxfbGV2ZWw7CisJQ29udHJvbEZpbGUtPndhbF9sb2df aGludHMgPSB3YWxfbG9nX2hpbnRzOworCUNvbnRyb2xGaWxlLT50cmFja19jb21taXRfdGlt ZXN0YW1wID0gdHJhY2tfY29tbWl0X3RpbWVzdGFtcDsKKwlDb250cm9sRmlsZS0+ZGF0YV9j aGVja3N1bV92ZXJzaW9uID0gYm9vdHN0cmFwX2RhdGFfY2hlY2tzdW1fdmVyc2lvbjsKK30K KwogLyoKICAqIFRoaXMgZnVuYyBtdXN0IGJlIGNhbGxlZCBPTkNFIG9uIHN5c3RlbSBpbnN0 YWxsLiAgSXQgY3JlYXRlcyBwZ19jb250cm9sCiAgKiBhbmQgdGhlIGluaXRpYWwgWExPRyBz ZWdtZW50LgpAQCAtNTA5NCw3ICs1MTI3LDYgQEAgQm9vdFN0cmFwWExPRyh2b2lkKQogCWNo YXIJICAgKnJlY3B0cjsKIAlib29sCQl1c2VfZXhpc3RlbnQ7CiAJdWludDY0CQlzeXNpZGVu dGlmaWVyOwotCWNoYXIJCW1vY2tfYXV0aF9ub25jZVtNT0NLX0FVVEhfTk9OQ0VfTEVOXTsK IAlzdHJ1Y3QgdGltZXZhbCB0djsKIAlwZ19jcmMzMmMJY3JjOwogCkBAIC01MTE1LDE3ICs1 MTQ3LDYgQEAgQm9vdFN0cmFwWExPRyh2b2lkKQogCXN5c2lkZW50aWZpZXIgfD0gKCh1aW50 NjQpIHR2LnR2X3VzZWMpIDw8IDEyOwogCXN5c2lkZW50aWZpZXIgfD0gZ2V0cGlkKCkgJiAw eEZGRjsKIAotCS8qCi0JICogR2VuZXJhdGUgYSByYW5kb20gbm9uY2UuIFRoaXMgaXMgdXNl ZCBmb3IgYXV0aGVudGljYXRpb24gcmVxdWVzdHMgdGhhdAotCSAqIHdpbGwgZmFpbCBiZWNh dXNlIHRoZSB1c2VyIGRvZXMgbm90IGV4aXN0LiBUaGUgbm9uY2UgaXMgdXNlZCB0byBjcmVh dGUKLQkgKiBhIGdlbnVpbmUtbG9va2luZyBwYXNzd29yZCBjaGFsbGVuZ2UgZm9yIHRoZSBu b24tZXhpc3RlbnQgdXNlciwgaW4gbGlldQotCSAqIG9mIGFuIGFjdHVhbCBzdG9yZWQgcGFz c3dvcmQuCi0JICovCi0JaWYgKCFwZ19zdHJvbmdfcmFuZG9tKG1vY2tfYXV0aF9ub25jZSwg TU9DS19BVVRIX05PTkNFX0xFTikpCi0JCWVyZXBvcnQoUEFOSUMsCi0JCQkJKGVycmNvZGUo RVJSQ09ERV9JTlRFUk5BTF9FUlJPUiksCi0JCQkJIGVycm1zZygiY291bGQgbm90IGdlbmVy YXRlIHNlY3JldCBhdXRob3JpemF0aW9uIHRva2VuIikpKTsKLQogCS8qIEZpcnN0IHRpbWVs aW5lIElEIGlzIGFsd2F5cyAxICovCiAJVGhpc1RpbWVMaW5lSUQgPSAxOwogCkBAIC01MjMz LDMwICs1MjU0LDEyIEBAIEJvb3RTdHJhcFhMT0codm9pZCkKIAlvcGVuTG9nRmlsZSA9IC0x OwogCiAJLyogTm93IGNyZWF0ZSBwZ19jb250cm9sICovCi0KLQltZW1zZXQoQ29udHJvbEZp bGUsIDAsIHNpemVvZihDb250cm9sRmlsZURhdGEpKTsKLQkvKiBJbml0aWFsaXplIHBnX2Nv bnRyb2wgc3RhdHVzIGZpZWxkcyAqLwotCUNvbnRyb2xGaWxlLT5zeXN0ZW1faWRlbnRpZmll ciA9IHN5c2lkZW50aWZpZXI7Ci0JbWVtY3B5KENvbnRyb2xGaWxlLT5tb2NrX2F1dGhlbnRp Y2F0aW9uX25vbmNlLCBtb2NrX2F1dGhfbm9uY2UsIE1PQ0tfQVVUSF9OT05DRV9MRU4pOwot CUNvbnRyb2xGaWxlLT5zdGF0ZSA9IERCX1NIVVRET1dORUQ7CisJSW5pdENvbnRyb2xGaWxl KHN5c2lkZW50aWZpZXIpOwogCUNvbnRyb2xGaWxlLT50aW1lID0gY2hlY2tQb2ludC50aW1l OwogCUNvbnRyb2xGaWxlLT5jaGVja1BvaW50ID0gY2hlY2tQb2ludC5yZWRvOwogCUNvbnRy b2xGaWxlLT5jaGVja1BvaW50Q29weSA9IGNoZWNrUG9pbnQ7Ci0JQ29udHJvbEZpbGUtPnVu bG9nZ2VkTFNOID0gRmlyc3ROb3JtYWxVbmxvZ2dlZExTTjsKLQotCS8qIFNldCBpbXBvcnRh bnQgcGFyYW1ldGVyIHZhbHVlcyBmb3IgdXNlIHdoZW4gcmVwbGF5aW5nIFdBTCAqLwotCUNv bnRyb2xGaWxlLT5NYXhDb25uZWN0aW9ucyA9IE1heENvbm5lY3Rpb25zOwotCUNvbnRyb2xG aWxlLT5tYXhfd29ya2VyX3Byb2Nlc3NlcyA9IG1heF93b3JrZXJfcHJvY2Vzc2VzOwotCUNv bnRyb2xGaWxlLT5tYXhfd2FsX3NlbmRlcnMgPSBtYXhfd2FsX3NlbmRlcnM7Ci0JQ29udHJv bEZpbGUtPm1heF9wcmVwYXJlZF94YWN0cyA9IG1heF9wcmVwYXJlZF94YWN0czsKLQlDb250 cm9sRmlsZS0+bWF4X2xvY2tzX3Blcl94YWN0ID0gbWF4X2xvY2tzX3Blcl94YWN0OwotCUNv bnRyb2xGaWxlLT53YWxfbGV2ZWwgPSB3YWxfbGV2ZWw7Ci0JQ29udHJvbEZpbGUtPndhbF9s b2dfaGludHMgPSB3YWxfbG9nX2hpbnRzOwotCUNvbnRyb2xGaWxlLT50cmFja19jb21taXRf dGltZXN0YW1wID0gdHJhY2tfY29tbWl0X3RpbWVzdGFtcDsKLQlDb250cm9sRmlsZS0+ZGF0 YV9jaGVja3N1bV92ZXJzaW9uID0gYm9vdHN0cmFwX2RhdGFfY2hlY2tzdW1fdmVyc2lvbjsK IAogCS8qIHNvbWUgYWRkaXRpb25hbCBDb250cm9sRmlsZSBmaWVsZHMgYXJlIHNldCBpbiBX cml0ZUNvbnRyb2xGaWxlKCkgKi8KLQogCVdyaXRlQ29udHJvbEZpbGUoKTsKIAogCS8qIEJv b3RzdHJhcCB0aGUgY29tbWl0IGxvZywgdG9vICovCkBAIC02MjI1LDEzICs2MjI4LDExIEBA IFN0YXJ0dXBYTE9HKHZvaWQpCiAJQ3VycmVudFJlc291cmNlT3duZXIgPSBBdXhQcm9jZXNz UmVzb3VyY2VPd25lcjsKIAogCS8qCi0JICogVmVyaWZ5IFhMT0cgc3RhdHVzIGxvb2tzIHZh bGlkLgorCSAqIENoZWNrIHRoYXQgY29udGVudHMgbG9vayB2YWxpZC4KIAkgKi8KLQlpZiAo Q29udHJvbEZpbGUtPnN0YXRlIDwgREJfU0hVVERPV05FRCB8fAotCQlDb250cm9sRmlsZS0+ c3RhdGUgPiBEQl9JTl9QUk9EVUNUSU9OIHx8Ci0JCSFYUmVjT2ZmSXNWYWxpZChDb250cm9s RmlsZS0+Y2hlY2tQb2ludCkpCisJaWYgKCFYUmVjT2ZmSXNWYWxpZChDb250cm9sRmlsZS0+ Y2hlY2tQb2ludCkpCiAJCWVyZXBvcnQoRkFUQUwsCi0JCQkJKGVycm1zZygiY29udHJvbCBm aWxlIGNvbnRhaW5zIGludmFsaWQgZGF0YSIpKSk7CisJCQkJKGVycm1zZygiY29udHJvbCBm aWxlIGNvbnRhaW5zIGludmFsaWQgY2hlY2twb2ludCBsb2NhdGlvbiIpKSk7CiAKIAlpZiAo Q29udHJvbEZpbGUtPnN0YXRlID09IERCX1NIVVRET1dORUQpCiAJewpAQCAtNjI2NCw2ICs2 MjY1LDkgQEAgU3RhcnR1cFhMT0codm9pZCkKIAkJZXJlcG9ydChMT0csCiAJCQkJKGVycm1z ZygiZGF0YWJhc2Ugc3lzdGVtIHdhcyBpbnRlcnJ1cHRlZDsgbGFzdCBrbm93biB1cCBhdCAl cyIsCiAJCQkJCQlzdHJfdGltZShDb250cm9sRmlsZS0+dGltZSkpKSk7CisJZWxzZQorCQll cmVwb3J0KEZBVEFMLAorCQkJCShlcnJtc2coImNvbnRyb2wgZmlsZSBjb250YWlucyBpbnZh bGlkIGRhdGFiYXNlIGNsdXN0ZXIgc3RhdGUiKSkpOwogCiAJLyogVGhpcyBpcyBqdXN0IHRv IGFsbG93IGF0dGFjaGluZyB0byBzdGFydHVwIHByb2Nlc3Mgd2l0aCBhIGRlYnVnZ2VyICov CiAjaWZkZWYgWExPR19SRVBMQVlfREVMQVkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Jv b3RzdHJhcC9ib290c3RyYXAuYyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAu YwppbmRleCA5MjM4ZmJlOThkLi5hOGIxZmZkMDhhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9ib290c3RyYXAvYm9vdHN0cmFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jv b3RzdHJhcC5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dy aXRlci5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvc3RhcnR1cC5oIgogI2luY2x1ZGUgInBv c3RtYXN0ZXIvd2Fsd3JpdGVyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vYmFzZWJhY2t1 cC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKQEAgLTMy Niw2ICszMjcsOSBAQCBBdXhpbGlhcnlQcm9jZXNzTWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCQkJY2FzZSBTdGFydHVwUHJvY2VzczoKIAkJCQlzdGF0bXNnID0gcGdzdGF0X2dl dF9iYWNrZW5kX2Rlc2MoQl9TVEFSVFVQKTsKIAkJCQlicmVhazsKKwkJCWNhc2UgQmFzZUJh Y2t1cFByb2Nlc3M6CisJCQkJc3RhdG1zZyA9IHBnc3RhdF9nZXRfYmFja2VuZF9kZXNjKEJf QkFTRV9CQUNLVVApOworCQkJCWJyZWFrOwogCQkJY2FzZSBCZ1dyaXRlclByb2Nlc3M6CiAJ CQkJc3RhdG1zZyA9IHBnc3RhdF9nZXRfYmFja2VuZF9kZXNjKEJfQkdfV1JJVEVSKTsKIAkJ CQlicmVhazsKQEAgLTQ1MSw2ICs0NTUsMTEgQEAgQXV4aWxpYXJ5UHJvY2Vzc01haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCVN0YXJ0dXBQcm9jZXNzTWFpbigpOwogCQkJcHJv Y19leGl0KDEpOwkJLyogc2hvdWxkIG5ldmVyIHJldHVybiAqLwogCisJCWNhc2UgQmFzZUJh Y2t1cFByb2Nlc3M6CisJCQkvKiBkb24ndCBzZXQgc2lnbmFscywgYmFzZWJhY2t1cCBoYXMg aXRzIG93biBhZ2VuZGEgKi8KKwkJCUJhc2VCYWNrdXBNYWluKCk7CisJCQlwcm9jX2V4aXQo MSk7CQkvKiBzaG91bGQgbmV2ZXIgcmV0dXJuICovCisKIAkJY2FzZSBCZ1dyaXRlclByb2Nl c3M6CiAJCQkvKiBkb24ndCBzZXQgc2lnbmFscywgYmd3cml0ZXIgaGFzIGl0cyBvd24gYWdl bmRhICovCiAJCQlCYWNrZ3JvdW5kV3JpdGVyTWFpbigpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdz dGF0LmMKaW5kZXggZDM2MmU3ZjdkNy4uNzk0NjUzMzNiYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L3Bnc3RhdC5jCkBAIC0yOTM0LDYgKzI5MzQsOSBAQCBwZ3N0YXRfYmVzdGFydCh2b2lkKQog CQkJY2FzZSBTdGFydHVwUHJvY2VzczoKIAkJCQlsYmVlbnRyeS5zdF9iYWNrZW5kVHlwZSA9 IEJfU1RBUlRVUDsKIAkJCQlicmVhazsKKwkJCWNhc2UgQmFzZUJhY2t1cFByb2Nlc3M6CisJ CQkJbGJlZW50cnkuc3RfYmFja2VuZFR5cGUgPSBCX0JBU0VfQkFDS1VQOworCQkJCWJyZWFr OwogCQkJY2FzZSBCZ1dyaXRlclByb2Nlc3M6CiAJCQkJbGJlZW50cnkuc3RfYmFja2VuZFR5 cGUgPSBCX0JHX1dSSVRFUjsKIAkJCQlicmVhazsKQEAgLTQyODksNiArNDI5Miw5IEBAIHBn c3RhdF9nZXRfYmFja2VuZF9kZXNjKEJhY2tlbmRUeXBlIGJhY2tlbmRUeXBlKQogCQljYXNl IEJfQkdfV09SS0VSOgogCQkJYmFja2VuZERlc2MgPSAiYmFja2dyb3VuZCB3b3JrZXIiOwog CQkJYnJlYWs7CisJCWNhc2UgQl9CQVNFX0JBQ0tVUDoKKwkJCWJhY2tlbmREZXNjID0gImJh c2UgYmFja3VwIjsKKwkJCWJyZWFrOwogCQljYXNlIEJfQkdfV1JJVEVSOgogCQkJYmFja2Vu ZERlc2MgPSAiYmFja2dyb3VuZCB3cml0ZXIiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvcG9zdG1hc3Rlci5jCmluZGV4IDYyZGM5M2Q1NmIuLjMwOTZlNmVmMzMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC0xMTYsNiArMTE2LDcgQEAKICNp bmNsdWRlICJwb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVy L3N5c2xvZ2dlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5o IgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAicmVw bGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCkBAIC0yNDgsNiArMjQ5LDcgQEAgYm9vbAkJcmVzdGFydF9h ZnRlcl9jcmFzaCA9IHRydWU7CiAKIC8qIFBJRHMgb2Ygc3BlY2lhbCBjaGlsZCBwcm9jZXNz ZXM7IDAgd2hlbiBub3QgcnVubmluZyAqLwogc3RhdGljIHBpZF90IFN0YXJ0dXBQSUQgPSAw LAorCQkJQmFzZUJhY2t1cFBJRCA9IDAsCiAJCQlCZ1dyaXRlclBJRCA9IDAsCiAJCQlDaGVj a3BvaW50ZXJQSUQgPSAwLAogCQkJV2FsV3JpdGVyUElEID0gMCwKQEAgLTUzOSw2ICs1NDEs NyBAQCBzdGF0aWMgdm9pZCBTaG1lbUJhY2tlbmRBcnJheVJlbW92ZShCYWNrZW5kICpibik7 CiAjZW5kaWYJCQkJCQkJLyogRVhFQ19CQUNLRU5EICovCiAKICNkZWZpbmUgU3RhcnR1cERh dGFCYXNlKCkJCVN0YXJ0Q2hpbGRQcm9jZXNzKFN0YXJ0dXBQcm9jZXNzKQorI2RlZmluZSBT dGFydEJhc2VCYWNrdXAoKQkJU3RhcnRDaGlsZFByb2Nlc3MoQmFzZUJhY2t1cFByb2Nlc3Mp CiAjZGVmaW5lIFN0YXJ0QmFja2dyb3VuZFdyaXRlcigpIFN0YXJ0Q2hpbGRQcm9jZXNzKEJn V3JpdGVyUHJvY2VzcykKICNkZWZpbmUgU3RhcnRDaGVja3BvaW50ZXIoKQkJU3RhcnRDaGls ZFByb2Nlc3MoQ2hlY2twb2ludGVyUHJvY2VzcykKICNkZWZpbmUgU3RhcnRXYWxXcml0ZXIo KQkJU3RhcnRDaGlsZFByb2Nlc3MoV2FsV3JpdGVyUHJvY2VzcykKQEAgLTU3Miw2ICs1NzUs OCBAQCBQb3N0bWFzdGVyTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCWJvb2wJCWxp c3Rlbl9hZGRyX3NhdmVkID0gZmFsc2U7CiAJaW50CQkJaTsKIAljaGFyCSAgICpvdXRwdXRf Y29uZmlnX3ZhcmlhYmxlID0gTlVMTDsKKwlzdHJ1Y3Qgc3RhdCBzdGF0X2J1ZjsKKwlib29s CQliYXNlYmFja3VwX3NpZ25hbF9maWxlX2ZvdW5kID0gZmFsc2U7CiAKIAlJbml0UHJvY2Vz c0dsb2JhbHMoKTsKIApAQCAtODc3LDEyICs4ODIsMjcgQEAgUG9zdG1hc3Rlck1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkvKiBWZXJpZnkgdGhhdCBEYXRhRGlyIGxvb2tzIHJl YXNvbmFibGUgKi8KIAljaGVja0RhdGFEaXIoKTsKIAotCS8qIENoZWNrIHRoYXQgcGdfY29u dHJvbCBleGlzdHMgKi8KLQljaGVja0NvbnRyb2xGaWxlKCk7Ci0KIAkvKiBBbmQgc3dpdGNo IHdvcmtpbmcgZGlyZWN0b3J5IGludG8gaXQgKi8KIAlDaGFuZ2VUb0RhdGFEaXIoKTsKIAor CWlmIChzdGF0KEJBU0VCQUNLVVBfU0lHTkFMX0ZJTEUsICZzdGF0X2J1ZikgPT0gMCkKKwl7 CisJCWludCAgICAgICAgIGZkOworCisJCWZkID0gQmFzaWNPcGVuRmlsZVBlcm0oU1RBTkRC WV9TSUdOQUxfRklMRSwgT19SRFdSIHwgUEdfQklOQVJZLAorCQkJCQkJCSAgIFNfSVJVU1Ig fCBTX0lXVVNSKTsKKwkJaWYgKGZkID49IDApCisJCXsKKwkJCSh2b2lkKSBwZ19mc3luYyhm ZCk7CisJCQljbG9zZShmZCk7CisJCX0KKwkJYmFzZWJhY2t1cF9zaWduYWxfZmlsZV9mb3Vu ZCA9IHRydWU7CisJfQorCisJLyogQ2hlY2sgdGhhdCBwZ19jb250cm9sIGV4aXN0cyAqLwor CWlmICghYmFzZWJhY2t1cF9zaWduYWxfZmlsZV9mb3VuZCkKKwkJY2hlY2tDb250cm9sRmls ZSgpOworCiAJLyoKIAkgKiBDaGVjayBmb3IgaW52YWxpZCBjb21iaW5hdGlvbnMgb2YgR1VD IHNldHRpbmdzLgogCSAqLwpAQCAtOTYxLDcgKzk4MSw4IEBAIFBvc3RtYXN0ZXJNYWluKGlu dCBhcmdjLCBjaGFyICphcmd2W10pCiAJICogcHJvY2Vzc2VzIHdpbGwgaW5oZXJpdCB0aGUg Y29ycmVjdCBmdW5jdGlvbiBwb2ludGVyIGFuZCBub3QgbmVlZCB0bwogCSAqIHJlcGVhdCB0 aGUgdGVzdC4KIAkgKi8KLQlMb2NhbFByb2Nlc3NDb250cm9sRmlsZShmYWxzZSk7CisJaWYg KCFiYXNlYmFja3VwX3NpZ25hbF9maWxlX2ZvdW5kKQorCQlMb2NhbFByb2Nlc3NDb250cm9s RmlsZShmYWxzZSk7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgU1NMIGxpYnJhcnksIGlmIHNw ZWNpZmllZC4KQEAgLTEzNjMsNiArMTM4NCwzOSBAQCBQb3N0bWFzdGVyTWFpbihpbnQgYXJn YywgY2hhciAqYXJndltdKQogCSAqLwogCUFkZFRvRGF0YURpckxvY2tGaWxlKExPQ0tfRklM RV9MSU5FX1BNX1NUQVRVUywgUE1fU1RBVFVTX1NUQVJUSU5HKTsKIAorCWlmIChiYXNlYmFj a3VwX3NpZ25hbF9maWxlX2ZvdW5kKQorCXsKKwkJQmFzZUJhY2t1cFBJRCA9IFN0YXJ0QmFz ZUJhY2t1cCgpOworCisJCS8qCisJCSAqIFdhaXQgdW50aWwgZG9uZS4gIFN0YXJ0IFdBTCBy ZWNlaXZlciBpbiB0aGUgbWVhbnRpbWUsIG9uY2UgYmFzZQorCQkgKiBiYWNrdXAgaGFzIHJl Y2VpdmVkIHRoZSBzdGFydGluZyBwb3NpdGlvbi4KKwkJICovCisJCXdoaWxlIChCYXNlQmFj a3VwUElEICE9IDApCisJCXsKKwkJCVBHX1NFVE1BU0soJlVuQmxvY2tTaWcpOworCQkJcGdf dXNsZWVwKDEwMDAwMDBMKTsKKwkJCVBHX1NFVE1BU0soJkJsb2NrU2lnKTsKKwkJCU1heWJl U3RhcnRXYWxSZWNlaXZlcigpOworCQl9CisKKwkJLyoKKwkJICogWFhYIFNodXQgZG93biBX QUwgcmVjZWl2ZXIuICBJdCB3aWxsIGJlIHJlc3RhcnRlZCBsYXRlciBpbiB4bG9nLmMsCisJ CSAqIGFuZCB0aGF0IHdpbGwgY29tcGxhaW4gaWYgaXQncyBhbHJlYWR5IHJ1bm5pbmcuCisJ CSAqLworCQlTaHV0ZG93bldhbFJjdigpOworCisJCS8qCisJCSAqIEJhc2UgYmFja3VwIGRv bmUsIG5vdyBzaWduYWwgc3RhbmRieSBtb2RlLgorCQkgKi8KKwkJZHVyYWJsZV9yZW5hbWUo QkFTRUJBQ0tVUF9TSUdOQUxfRklMRSwgU1RBTkRCWV9TSUdOQUxfRklMRSwgRkFUQUwpOwor CisJCS8qCisJCSAqIFJlcmVhZCB0aGUgY29udHJvbCBmaWxlIHRoYXQgY2FtZSBpbiB3aXRo IHRoZSBiYXNlIGJhY2t1cC4KKwkJICovCisJCVJlYWRDb250cm9sRmlsZSgpOworCX0KKwog CS8qCiAJICogV2UncmUgcmVhZHkgdG8gcm9jayBhbmQgcm9sbC4uLgogCSAqLwpAQCAtMjYz MSw2ICsyNjg1LDggQEAgU0lHSFVQX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAJCVNpZ25hbENo aWxkcmVuKFNJR0hVUCk7CiAJCWlmIChTdGFydHVwUElEICE9IDApCiAJCQlzaWduYWxfY2hp bGQoU3RhcnR1cFBJRCwgU0lHSFVQKTsKKwkJaWYgKEJhc2VCYWNrdXBQSUQgIT0gMCkKKwkJ CXNpZ25hbF9jaGlsZChCYXNlQmFja3VwUElELCBTSUdIVVApOwogCQlpZiAoQmdXcml0ZXJQ SUQgIT0gMCkKIAkJCXNpZ25hbF9jaGlsZChCZ1dyaXRlclBJRCwgU0lHSFVQKTsKIAkJaWYg KENoZWNrcG9pbnRlclBJRCAhPSAwKQpAQCAtMjc4Miw2ICsyODM4LDggQEAgcG1kaWUoU0lH TkFMX0FSR1MpCiAKIAkJCWlmIChTdGFydHVwUElEICE9IDApCiAJCQkJc2lnbmFsX2NoaWxk KFN0YXJ0dXBQSUQsIFNJR1RFUk0pOworCQkJaWYgKEJhc2VCYWNrdXBQSUQgIT0gMCkKKwkJ CQlzaWduYWxfY2hpbGQoQmFzZUJhY2t1cFBJRCwgU0lHVEVSTSk7CiAJCQlpZiAoQmdXcml0 ZXJQSUQgIT0gMCkKIAkJCQlzaWduYWxfY2hpbGQoQmdXcml0ZXJQSUQsIFNJR1RFUk0pOwog CQkJaWYgKFdhbFJlY2VpdmVyUElEICE9IDApCkBAIC0zMDEyLDYgKzMwNzAsMjMgQEAgcmVh cGVyKFNJR05BTF9BUkdTKQogCQkJY29udGludWU7CiAJCX0KIAorCQkvKgorCQkgKiBXYXMg aXQgdGhlIGJhc2UgYmFja3VwIHByb2Nlc3M/CisJCSAqLworCQlpZiAocGlkID09IEJhc2VC YWNrdXBQSUQpCisJCXsKKwkJCUJhc2VCYWNrdXBQSUQgPSAwOworCQkJaWYgKEVYSVRfU1RB VFVTXzAoZXhpdHN0YXR1cykpCisJCQkJOworCQkJZWxzZSBpZiAoRVhJVF9TVEFUVVNfMShl eGl0c3RhdHVzKSkKKwkJCQllcmVwb3J0KEZBVEFMLAorCQkJCQkJKGVycm1zZygiYmFzZSBi YWNrdXAgZmFpbGVkIikpKTsKKwkJCWVsc2UKKwkJCQlIYW5kbGVDaGlsZENyYXNoKHBpZCwg ZXhpdHN0YXR1cywKKwkJCQkJCQkJIF8oImJhc2UgYmFja3VwIHByb2Nlc3MiKSk7CisJCQlj b250aW51ZTsKKwkJfQorCiAJCS8qCiAJCSAqIFdhcyBpdCB0aGUgYmd3cml0ZXI/ICBOb3Jt YWwgZXhpdCBjYW4gYmUgaWdub3JlZDsgd2UnbGwgc3RhcnQgYSBuZXcKIAkJICogb25lIGF0 IHRoZSBuZXh0IGl0ZXJhdGlvbiBvZiB0aGUgcG9zdG1hc3RlcidzIG1haW4gbG9vcCwgaWYK QEAgLTM1MzEsNiArMzYwNiwxOCBAQCBIYW5kbGVDaGlsZENyYXNoKGludCBwaWQsIGludCBl eGl0c3RhdHVzLCBjb25zdCBjaGFyICpwcm9jbmFtZSkKIAkJU3RhcnR1cFN0YXR1cyA9IFNU QVJUVVBfU0lHTkFMRUQ7CiAJfQogCisJLyogVGFrZSBjYXJlIG9mIHRoZSBiYXNlIGJhY2t1 cCBwcm9jZXNzIHRvbyAqLworCWlmIChwaWQgPT0gQmFzZUJhY2t1cFBJRCkKKwkJQmFzZUJh Y2t1cFBJRCA9IDA7CisJZWxzZSBpZiAoQmFzZUJhY2t1cFBJRCAhPSAwICYmIHRha2VfYWN0 aW9uKQorCXsKKwkJZXJlcG9ydChERUJVRzIsCisJCQkJKGVycm1zZ19pbnRlcm5hbCgic2Vu ZGluZyAlcyB0byBwcm9jZXNzICVkIiwKKwkJCQkJCQkJIChTZW5kU3RvcCA/ICJTSUdTVE9Q IiA6ICJTSUdRVUlUIiksCisJCQkJCQkJCSAoaW50KSBCYXNlQmFja3VwUElEKSkpOworCQlz aWduYWxfY2hpbGQoQmFzZUJhY2t1cFBJRCwgKFNlbmRTdG9wID8gU0lHU1RPUCA6IFNJR1FV SVQpKTsKKwl9CisKIAkvKiBUYWtlIGNhcmUgb2YgdGhlIGJnd3JpdGVyIHRvbyAqLwogCWlm IChwaWQgPT0gQmdXcml0ZXJQSUQpCiAJCUJnV3JpdGVyUElEID0gMDsKQEAgLTM3NjUsNiAr Mzg1Miw3IEBAIFBvc3RtYXN0ZXJTdGF0ZU1hY2hpbmUodm9pZCkKIAkJaWYgKENvdW50Q2hp bGRyZW4oQkFDS0VORF9UWVBFX05PUk1BTCB8IEJBQ0tFTkRfVFlQRV9XT1JLRVIpID09IDAg JiYKIAkJCVN0YXJ0dXBQSUQgPT0gMCAmJgogCQkJV2FsUmVjZWl2ZXJQSUQgPT0gMCAmJgor CQkJQmFzZUJhY2t1cFBJRCA9PSAwICYmCiAJCQlCZ1dyaXRlclBJRCA9PSAwICYmCiAJCQko Q2hlY2twb2ludGVyUElEID09IDAgfHwKIAkJCSAoIUZhdGFsRXJyb3IgJiYgU2h1dGRvd24g PCBJbW1lZGlhdGVTaHV0ZG93bikpICYmCkBAIC0zODU5LDYgKzM5NDcsNyBAQCBQb3N0bWFz dGVyU3RhdGVNYWNoaW5lKHZvaWQpCiAJCQkvKiBUaGVzZSBvdGhlciBndXlzIHNob3VsZCBi ZSBkZWFkIGFscmVhZHkgKi8KIAkJCUFzc2VydChTdGFydHVwUElEID09IDApOwogCQkJQXNz ZXJ0KFdhbFJlY2VpdmVyUElEID09IDApOworCQkJQXNzZXJ0KEJhc2VCYWNrdXBQSUQgPT0g MCk7CiAJCQlBc3NlcnQoQmdXcml0ZXJQSUQgPT0gMCk7CiAJCQlBc3NlcnQoQ2hlY2twb2lu dGVyUElEID09IDApOwogCQkJQXNzZXJ0KFdhbFdyaXRlclBJRCA9PSAwKTsKQEAgLTQwNDIs NiArNDEzMSw4IEBAIFRlcm1pbmF0ZUNoaWxkcmVuKGludCBzaWduYWwpCiAJCWlmIChzaWdu YWwgPT0gU0lHUVVJVCB8fCBzaWduYWwgPT0gU0lHS0lMTCkKIAkJCVN0YXJ0dXBTdGF0dXMg PSBTVEFSVFVQX1NJR05BTEVEOwogCX0KKwlpZiAoQmFzZUJhY2t1cFBJRCAhPSAwKQorCQlz aWduYWxfY2hpbGQoQmdXcml0ZXJQSUQsIHNpZ25hbCk7CiAJaWYgKEJnV3JpdGVyUElEICE9 IDApCiAJCXNpZ25hbF9jaGlsZChCZ1dyaXRlclBJRCwgc2lnbmFsKTsKIAlpZiAoQ2hlY2tw b2ludGVyUElEICE9IDApCkBAIC00ODY3LDYgKzQ5NTgsNyBAQCBTdWJQb3N0bWFzdGVyTWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQlzdHJjbXAoYXJndlsxXSwgIi0tZm9ya2F2 bGF1bmNoZXIiKSA9PSAwIHx8CiAJCXN0cmNtcChhcmd2WzFdLCAiLS1mb3JrYXZ3b3JrZXIi KSA9PSAwIHx8CiAJCXN0cmNtcChhcmd2WzFdLCAiLS1mb3JrYm9vdCIpID09IDAgfHwKKwkJ c3RyY21wKGFyZ3ZbMV0sICItLWZvcmtiYXNlYmFja3VwIikgPT0gMCB8fAogCQlzdHJuY21w KGFyZ3ZbMV0sICItLWZvcmtiZ3dvcmtlcj0iLCAxNSkgPT0gMCkKIAkJUEdTaGFyZWRNZW1v cnlSZUF0dGFjaCgpOwogCWVsc2UKQEAgLTQ5MDYsNyArNDk5OCw4IEBAIFN1YlBvc3RtYXN0 ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICogKHJlLSlyZWFkIGNvbnRyb2wg ZmlsZSwgYXMgaXQgY29udGFpbnMgY29uZmlnLiBUaGUgcG9zdG1hc3RlciB3aWxsCiAJICog YWxyZWFkeSBoYXZlIHJlYWQgdGhpcywgYnV0IHRoaXMgcHJvY2VzcyBkb2Vzbid0IGtub3cg YWJvdXQgdGhhdC4KIAkgKi8KLQlMb2NhbFByb2Nlc3NDb250cm9sRmlsZShmYWxzZSk7CisJ aWYgKHN0cmNtcChhcmd2WzFdLCAiLS1mb3JrYmFzZWJhY2t1cCIpICE9IDApCisJCUxvY2Fs UHJvY2Vzc0NvbnRyb2xGaWxlKGZhbHNlKTsKIAogCS8qCiAJICogUmVsb2FkIGFueSBsaWJy YXJpZXMgdGhhdCB3ZXJlIHByZWxvYWRlZCBieSB0aGUgcG9zdG1hc3Rlci4gIFNpbmNlIHdl CkBAIC00OTY3LDcgKzUwNjAsOCBAQCBTdWJQb3N0bWFzdGVyTWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQogCQkvKiBBbmQgcnVuIHRoZSBiYWNrZW5kICovCiAJCUJhY2tlbmRSdW4o JnBvcnQpOwkJLyogZG9lcyBub3QgcmV0dXJuICovCiAJfQotCWlmIChzdHJjbXAoYXJndlsx XSwgIi0tZm9ya2Jvb3QiKSA9PSAwKQorCWlmIChzdHJjbXAoYXJndlsxXSwgIi0tZm9ya2Jv b3QiKSA9PSAwIHx8CisJCXN0cmNtcChhcmd2WzFdLCAiLS1mb3JrYmFzZWJhY2t1cCIpID09 IDApCiAJewogCQkvKiBSZXN0b3JlIGJhc2ljIHNoYXJlZCBtZW1vcnkgcG9pbnRlcnMgKi8K IAkJSW5pdFNobWVtQWNjZXNzKFVzZWRTaG1lbVNlZ0FkZHIpOwpAQCAtNTM3MSw3ICs1NDY1 LDcgQEAgU3RhcnRDaGlsZFByb2Nlc3MoQXV4UHJvY1R5cGUgdHlwZSkKIAlhdlthYysrXSA9 ICJwb3N0Z3JlcyI7CiAKICNpZmRlZiBFWEVDX0JBQ0tFTkQKLQlhdlthYysrXSA9ICItLWZv cmtib290IjsKKwlhdlthYysrXSA9ICh0eXBlID09IEJhc2VCYWNrdXBQcm9jZXNzKSA/ICIt LWZvcmtiYXNlYmFja3VwIiA6ICItLWZvcmtib290IjsKIAlhdlthYysrXSA9IE5VTEw7CQkJ LyogZmlsbGVkIGluIGJ5IHBvc3RtYXN0ZXJfZm9ya2V4ZWMgKi8KICNlbmRpZgogCkBAIC01 NDE1LDYgKzU1MDksMTAgQEAgU3RhcnRDaGlsZFByb2Nlc3MoQXV4UHJvY1R5cGUgdHlwZSkK IAkJCQllcmVwb3J0KExPRywKIAkJCQkJCShlcnJtc2coImNvdWxkIG5vdCBmb3JrIHN0YXJ0 dXAgcHJvY2VzczogJW0iKSkpOwogCQkJCWJyZWFrOworCQkJY2FzZSBCYXNlQmFja3VwUHJv Y2VzczoKKwkJCQllcmVwb3J0KExPRywKKwkJCQkJCShlcnJtc2coImNvdWxkIG5vdCBmb3Jr IGJhc2UgYmFja3VwIHByb2Nlc3M6ICVtIikpKTsKKwkJCQlicmVhazsKIAkJCWNhc2UgQmdX cml0ZXJQcm9jZXNzOgogCQkJCWVyZXBvcnQoTE9HLAogCQkJCQkJKGVycm1zZygiY291bGQg bm90IGZvcmsgYmFja2dyb3VuZCB3cml0ZXIgcHJvY2VzczogJW0iKSkpOwpAQCAtNTU1Niw3 ICs1NjU0LDcgQEAgc3RhdGljIHZvaWQKIE1heWJlU3RhcnRXYWxSZWNlaXZlcih2b2lkKQog ewogCWlmIChXYWxSZWNlaXZlclBJRCA9PSAwICYmCi0JCShwbVN0YXRlID09IFBNX1NUQVJU VVAgfHwgcG1TdGF0ZSA9PSBQTV9SRUNPVkVSWSB8fAorCQkocG1TdGF0ZSA9PSBQTV9JTklU IHx8IHBtU3RhdGUgPT0gUE1fU1RBUlRVUCB8fCBwbVN0YXRlID09IFBNX1JFQ09WRVJZIHx8 CiAJCSBwbVN0YXRlID09IFBNX0hPVF9TVEFOREJZIHx8IHBtU3RhdGUgPT0gUE1fV0FJVF9S RUFET05MWSkgJiYKIAkJU2h1dGRvd24gPT0gTm9TaHV0ZG93bikKIAl7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9iYXNlYmFja3VwLmMKaW5kZXggYzkxZjY2ZGNiZS4uZmNhYzE5MmQwYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cC5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuYwpAQCAtMjksNiArMjksNyBA QAogI2luY2x1ZGUgInBvcnQuaCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3N5c2xvZ2dlci5o IgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuaCIKKyNpbmNsdWRlICJyZXBs aWNhdGlvbi93YWxyZWNlaXZlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRl ci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlcl9wcml2YXRlLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9idWZwYWdlLmgiCkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSAi c3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3JlaW5pdC5oIgogI2luY2x1ZGUg InV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAi dXRpbHMvcHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIKICNpbmNs dWRlICJ1dGlscy90aW1lc3RhbXAuaCIKQEAgLTExMSw2ICsxMTMsOSBAQCBzdGF0aWMgbG9u ZyBsb25nIGludCB0b3RhbF9jaGVja3N1bV9mYWlsdXJlczsKIC8qIERvIG5vdCB2ZXJpZnkg Y2hlY2tzdW1zLiAqLwogc3RhdGljIGJvb2wgbm92ZXJpZnlfY2hlY2tzdW1zID0gZmFsc2U7 CiAKKy8qIERvIG5vdCBjb3B5IGNvbmZpZyBmaWxlcy4gKi8KK3N0YXRpYyBib29sIGV4Y2x1 ZGVfY29uZiA9IGZhbHNlOworCiAvKgogICogVGhlIGNvbnRlbnRzIG9mIHRoZXNlIGRpcmVj dG9yaWVzIGFyZSByZW1vdmVkIG9yIHJlY3JlYXRlZCBkdXJpbmcgc2VydmVyCiAgKiBzdGFy dCBzbyB0aGV5IGFyZSBub3QgaW5jbHVkZWQgaW4gYmFja3Vwcy4gIFRoZSBkaXJlY3Rvcmll cyB0aGVtc2VsdmVzIGFyZQpAQCAtNjM4LDYgKzY0Myw3IEBAIHBhcnNlX2Jhc2ViYWNrdXBf b3B0aW9ucyhMaXN0ICpvcHRpb25zLCBiYXNlYmFja3VwX29wdGlvbnMgKm9wdCkKIAlib29s CQlvX21heHJhdGUgPSBmYWxzZTsKIAlib29sCQlvX3RhYmxlc3BhY2VfbWFwID0gZmFsc2U7 CiAJYm9vbAkJb19ub3ZlcmlmeV9jaGVja3N1bXMgPSBmYWxzZTsKKwlib29sCQlvX2V4Y2x1 ZGVfY29uZiA9IGZhbHNlOwogCiAJTWVtU2V0KG9wdCwgMCwgc2l6ZW9mKCpvcHQpKTsKIAlm b3JlYWNoKGxvcHQsIG9wdGlvbnMpCkBAIC03MjYsNiArNzMyLDE1IEBAIHBhcnNlX2Jhc2Vi YWNrdXBfb3B0aW9ucyhMaXN0ICpvcHRpb25zLCBiYXNlYmFja3VwX29wdGlvbnMgKm9wdCkK IAkJCW5vdmVyaWZ5X2NoZWNrc3VtcyA9IHRydWU7CiAJCQlvX25vdmVyaWZ5X2NoZWNrc3Vt cyA9IHRydWU7CiAJCX0KKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAiZXhj bHVkZV9jb25mIikgPT0gMCkKKwkJeworCQkJaWYgKG9fZXhjbHVkZV9jb25mKQorCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CQkJCQkgZXJybXNnKCJkdXBsaWNhdGUgb3B0aW9uIFwiJXNcIiIsIGRlZmVsLT5kZWZuYW1l KSkpOworCQkJZXhjbHVkZV9jb25mID0gdHJ1ZTsKKwkJCW9fZXhjbHVkZV9jb25mID0gdHJ1 ZTsKKwkJfQogCQllbHNlCiAJCQllbG9nKEVSUk9SLCAib3B0aW9uIFwiJXNcIiBub3QgcmVj b2duaXplZCIsCiAJCQkJIGRlZmVsLT5kZWZuYW1lKTsKQEAgLTExMzUsNiArMTE1MCwxOCBA QCBzZW5kRGlyKGNvbnN0IGNoYXIgKnBhdGgsIGludCBiYXNlcGF0aGxlbiwgYm9vbCBzaXpl b25seSwgTGlzdCAqdGFibGVzcGFjZXMsCiAJCQljb250aW51ZTsKIAkJfQogCisJCWlmIChl eGNsdWRlX2NvbmYpCisJCXsKKwkJCWNoYXIJICAgKmRvdCA9IHN0cnJjaHIoZGUtPmRfbmFt ZSwgJy4nKTsKKwkJCWlmIChkb3QgJiYgc3RyY21wKGRvdCwgIi5jb25mIikgPT0gMCkKKwkJ CXsKKwkJCQllbG9nKERFQlVHMiwKKwkJCQkJICJjb25maWd1cmF0aW9uIGZpbGUgXCIlc1wi IGV4Y2x1ZGVkIGZyb20gYmFja3VwIiwKKwkJCQkJIGRlLT5kX25hbWUpOworCQkJCWNvbnRp bnVlOworCQkJfQorCQl9CisKIAkJc25wcmludGYocGF0aGJ1Ziwgc2l6ZW9mKHBhdGhidWYp LCAiJXMvJXMiLCBwYXRoLCBkZS0+ZF9uYW1lKTsKIAogCQkvKiBTa2lwIHBnX2NvbnRyb2wg aGVyZSB0byBiYWNrIHVwIGl0IGxhc3QgKi8KQEAgLTE3MTEsMyArMTczOCw0NCBAQCB0aHJv dHRsZShzaXplX3QgaW5jcmVtZW50KQogCSAqLwogCXRocm90dGxlZF9sYXN0ID0gR2V0Q3Vy cmVudFRpbWVzdGFtcCgpOwogfQorCisKKy8qCisgKiBiYXNlIGJhY2t1cCB3b3JrZXIgcHJv Y2VzcyAoY2xpZW50KSBtYWluIGZ1bmN0aW9uCisgKi8KK3ZvaWQKK0Jhc2VCYWNrdXBNYWlu KHZvaWQpCit7CisJV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4gPSBOVUxMOworCWNoYXIJICAg KmVycjsKKwlUaW1lTGluZUlECXByaW1hcnlUTEk7CisJdWludDY0CQlwcmltYXJ5X3N5c2lk OworCisJLyogTG9hZCB0aGUgbGlicHEtc3BlY2lmaWMgZnVuY3Rpb25zICovCisJbG9hZF9m aWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOworCWlmIChXYWxSZWNlaXZlckZ1bmN0 aW9ucyA9PSBOVUxMKQorCQllbG9nKEVSUk9SLCAibGlicHF3YWxyZWNlaXZlciBkaWRuJ3Qg aW5pdGlhbGl6ZSBjb3JyZWN0bHkiKTsKKworCS8qIEVzdGFibGlzaCB0aGUgY29ubmVjdGlv biB0byB0aGUgcHJpbWFyeSAqLworCXdyY29ubiA9IHdhbHJjdl9jb25uZWN0KFByaW1hcnlD b25uSW5mbywgZmFsc2UsIGNsdXN0ZXJfbmFtZVswXSA/IGNsdXN0ZXJfbmFtZSA6ICJiYXNl YmFja3VwIiwgJmVycik7CisJaWYgKCF3cmNvbm4pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycm1zZygiY291bGQgbm90IGNvbm5lY3QgdG8gdGhlIHByaW1hcnkgc2VydmVyOiAlcyIs IGVycikpKTsKKworCS8qCisJICogR2V0IHRoZSByZW1vdGUgc3lzaWQgYW5kIHN0aWNrIGl0 IGludG8gdGhlIGxvY2FsIGNvbnRyb2wgZmlsZSwgc28gdGhhdAorCSAqIHRoZSB3YWxyZWNl aXZlciBpcyBoYXBweS4gIFRoZSBjb250cm9sIGZpbGUgd2lsbCBsYXRlciBiZSBvdmVyd3Jp dHRlbgorCSAqIGJ5IHRoZSBiYXNlIGJhY2t1cC4KKwkgKi8KKwlwcmltYXJ5X3N5c2lkID0g c3RydG91bGwod2FscmN2X2lkZW50aWZ5X3N5c3RlbSh3cmNvbm4sICZwcmltYXJ5VExJKSwg TlVMTCwgMTApOworCUluaXRDb250cm9sRmlsZShwcmltYXJ5X3N5c2lkKTsKKwlXcml0ZUNv bnRyb2xGaWxlKCk7CisKKwl3YWxyY3ZfYmFzZV9iYWNrdXAod3Jjb25uKTsKKworCXdhbHJj dl9kaXNjb25uZWN0KHdyY29ubik7CisKKwllcmVwb3J0KExPRywKKwkJCShlcnJtc2coImJh c2UgYmFja3VwIGNvbXBsZXRlZCIpKSk7CisJcHJvY19leGl0KDApOworfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJl Y2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xp YnBxd2FscmVjZWl2ZXIuYwppbmRleCA2ZWJhMDhhOTIwLi42ZDQ0OGFjYWNmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2Fs cmVjZWl2ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2Vp dmVyL2xpYnBxd2FscmVjZWl2ZXIuYwpAQCAtMTcsOCArMTcsMTQgQEAKICNpbmNsdWRlICJw b3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQu aD4KICNpbmNsdWRlIDxzeXMvdGltZS5oPgogCisjaWZkZWYgVVNFX1NZU1RFTUQKKyNpbmNs dWRlIDxzeXN0ZW1kL3NkLWRhZW1vbi5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJjb21tb24v c3RyaW5nLmgiCiAjaW5jbHVkZSAibGlicHEtZmUuaCIKICNpbmNsdWRlICJwcWV4cGJ1ZmZl ci5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCkBAIC0yNywxMCArMzMsMTMgQEAKICNp bmNsdWRlICJtYi9wZ193Y2hhci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1 ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInBndGFyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vd2FscmVjZWl2ZXIuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1 ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVk ZSAidXRpbHMvcGdfbHNuLmgiCisjaW5jbHVkZSAidXRpbHMvcHNfc3RhdHVzLmgiCiAjaW5j bHVkZSAidXRpbHMvdHVwbGVzdG9yZS5oIgogCiBQR19NT0RVTEVfTUFHSUM7CkBAIC02MSw2 ICs3MCw3IEBAIHN0YXRpYyBpbnQJbGlicHFyY3Zfc2VydmVyX3ZlcnNpb24oV2FsUmVjZWl2 ZXJDb25uICpjb25uKTsKIHN0YXRpYyB2b2lkIGxpYnBxcmN2X3JlYWR0aW1lbGluZWhpc3Rv cnlmaWxlKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwKIAkJCQkJCQkJCQkJIFRpbWVMaW5lSUQg dGxpLCBjaGFyICoqZmlsZW5hbWUsCiAJCQkJCQkJCQkJCSBjaGFyICoqY29udGVudCwgaW50 ICpsZW4pOworc3RhdGljIHZvaWQgbGlicHFyY3ZfYmFzZV9iYWNrdXAoV2FsUmVjZWl2ZXJD b25uICpjb25uKTsKIHN0YXRpYyBib29sIGxpYnBxcmN2X3N0YXJ0c3RyZWFtaW5nKFdhbFJl Y2VpdmVyQ29ubiAqY29ubiwKIAkJCQkJCQkJCWNvbnN0IFdhbFJjdlN0cmVhbU9wdGlvbnMg Km9wdGlvbnMpOwogc3RhdGljIHZvaWQgbGlicHFyY3ZfZW5kc3RyZWFtaW5nKFdhbFJlY2Vp dmVyQ29ubiAqY29ubiwKQEAgLTg4LDYgKzk4LDcgQEAgc3RhdGljIFdhbFJlY2VpdmVyRnVu Y3Rpb25zVHlwZSBQUVdhbFJlY2VpdmVyRnVuY3Rpb25zID0gewogCWxpYnBxcmN2X2lkZW50 aWZ5X3N5c3RlbSwKIAlsaWJwcXJjdl9zZXJ2ZXJfdmVyc2lvbiwKIAlsaWJwcXJjdl9yZWFk dGltZWxpbmVoaXN0b3J5ZmlsZSwKKwlsaWJwcXJjdl9iYXNlX2JhY2t1cCwKIAlsaWJwcXJj dl9zdGFydHN0cmVhbWluZywKIAlsaWJwcXJjdl9lbmRzdHJlYW1pbmcsCiAJbGlicHFyY3Zf cmVjZWl2ZSwKQEAgLTM1Niw2ICszNjcsNDE0IEBAIGxpYnBxcmN2X3NlcnZlcl92ZXJzaW9u KFdhbFJlY2VpdmVyQ29ubiAqY29ubikKIAlyZXR1cm4gUFFzZXJ2ZXJWZXJzaW9uKGNvbm4t PnN0cmVhbUNvbm4pOwogfQogCisvKgorICogWFhYIGNvcGllZCBmcm9tIHBnX2Jhc2ViYWNr dXAuYworICovCisKK3Vuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbGRvbmU7Cit1bnNpZ25lZCBs b25nIGxvbmcgdG90YWxzaXplX2tiOworaW50IHRhYmxlc3BhY2VudW07CitpbnQgdGFibGVz cGFjZWNvdW50OworCitzdGF0aWMgdm9pZAorYmFzZV9iYWNrdXBfcmVwb3J0X3Byb2dyZXNz KHZvaWQpCit7CisJaW50CQkJcGVyY2VudDsKKwljaGFyCSAgICpwcm9ncmVzczsKKworCXBl cmNlbnQgPSB0b3RhbHNpemVfa2IgPyAoaW50KSAoKHRvdGFsZG9uZSAvIDEwMjQpICogMTAw IC8gdG90YWxzaXplX2tiKSA6IDA7CisKKwkvKgorCSAqIEF2b2lkIG92ZXJmbG93aW5nIHBh c3QgMTAwJSBvciB0aGUgZnVsbCBzaXplLiBUaGlzIG1heSBtYWtlIHRoZSB0b3RhbAorCSAq IHNpemUgbnVtYmVyIGNoYW5nZSBhcyB3ZSBhcHByb2FjaCB0aGUgZW5kIG9mIHRoZSBiYWNr dXAgKHRoZSBlc3RpbWF0ZQorCSAqIHdpbGwgYWx3YXlzIGJlIHdyb25nIGlmIFdBTCBpcyBp bmNsdWRlZCksIGJ1dCB0aGF0J3MgYmV0dGVyIHRoYW4gaGF2aW5nCisJICogdGhlIGRvbmUg Y29sdW1uIGJlIGJpZ2dlciB0aGFuIHRoZSB0b3RhbC4KKwkgKi8KKwlpZiAocGVyY2VudCA+ IDEwMCkKKwkJcGVyY2VudCA9IDEwMDsKKwlpZiAodG90YWxkb25lIC8gMTAyNCA+IHRvdGFs c2l6ZV9rYikKKwkJdG90YWxzaXplX2tiID0gdG90YWxkb25lIC8gMTAyNDsKKworCS8qIE5v dGU6IG5vIHRyYW5zbGF0aW9uIG9mIHBzIHN0YXR1cyAqLworCXByb2dyZXNzID0gcHNwcmlu dGYoKHRhYmxlc3BhY2Vjb3VudCA9PSAxID8KKwkJCQkJCSAiJWxsdS8lbGx1IGtCICglZCUl KSwgJWQvJWQgdGFibGVzcGFjZSIgOgorCQkJCQkJICIlbGx1LyVsbHUga0IgKCVkJSUpLCAl ZC8lZCB0YWJsZXNwYWNlcyIpLAorCQkJCQkJdG90YWxkb25lIC8gMTAyNCwKKwkJCQkJCXRv dGFsc2l6ZV9rYiwKKwkJCQkJCXBlcmNlbnQsCisJCQkJCQl0YWJsZXNwYWNlbnVtLAorCQkJ CQkJdGFibGVzcGFjZWNvdW50KTsKKworCXNldF9wc19kaXNwbGF5KHByb2dyZXNzLCBmYWxz ZSk7CisjaWZkZWYgVVNFX1NZU1RFTUQKKwlzZF9waWRfbm90aWZ5ZihQb3N0bWFzdGVyUGlk LCAwLCAiU1RBVFVTPWJhc2UgYmFja3VwICVzIiwgcHJvZ3Jlc3MpOworI2VuZGlmCisKKwlw ZnJlZShwcm9ncmVzcyk7Cit9CisKK3N0YXRpYyB2b2lkCitSZWNlaXZlQW5kVW5wYWNrVGFy RmlsZShQR2Nvbm4gKmNvbm4sIFBHcmVzdWx0ICpyZXMpCit7CisJY2hhcgkJY3VycmVudF9w YXRoW01BWFBHUEFUSF07CisJY2hhcgkJZmlsZW5hbWVbTUFYUEdQQVRIXTsKKwlwZ29mZl90 CQljdXJyZW50X2xlbl9sZWZ0ID0gMDsKKwlpbnQJCQljdXJyZW50X3BhZGRpbmcgPSAwOwor CWNoYXIJICAgKmNvcHlidWYgPSBOVUxMOworCUZJTEUJICAgKmZpbGUgPSBOVUxMOworCW9m Zl90CQlmbHVzaF9vZmZzZXQ7CisKKwlzdHJsY3B5KGN1cnJlbnRfcGF0aCwgRGF0YURpciwg c2l6ZW9mKGN1cnJlbnRfcGF0aCkpOworCisJLyoKKwkgKiBHZXQgdGhlIENPUFkgZGF0YQor CSAqLworCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbm4pOworCWlmIChQUXJlc3VsdFN0YXR1cyhy ZXMpICE9IFBHUkVTX0NPUFlfT1VUKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJtc2co ImNvdWxkIG5vdCBnZXQgQ09QWSBkYXRhIHN0cmVhbTogJXMiLAorCQkJCQkJUFFlcnJvck1l c3NhZ2UoY29ubikpKSk7CisKKwl3aGlsZSAoMSkKKwl7CisJCWludAkJCXI7CisKKwkJaWYg KGNvcHlidWYgIT0gTlVMTCkKKwkJeworCQkJUFFmcmVlbWVtKGNvcHlidWYpOworCQkJY29w eWJ1ZiA9IE5VTEw7CisJCX0KKworCQlyID0gUFFnZXRDb3B5RGF0YShjb25uLCAmY29weWJ1 ZiwgMCk7CisKKwkJaWYgKHIgPT0gLTEpCisJCXsKKwkJCS8qCisJCQkgKiBFbmQgb2YgY2h1 bmsKKwkJCSAqLworCQkJaWYgKGZpbGUpCisJCQkJZmNsb3NlKGZpbGUpOworCisJCQlicmVh azsKKwkJfQorCQllbHNlIGlmIChyID09IC0yKQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJybXNnKCJjb3VsZCBub3QgcmVhZCBDT1BZIGRhdGE6ICVzIiwKKwkJCQkJCQlQ UWVycm9yTWVzc2FnZShjb25uKSkpKTsKKwkJfQorCisJCWlmIChmaWxlID09IE5VTEwpCisJ CXsKKwkJCWludAkJCWZpbGVtb2RlOworCisJCQkvKgorCQkJICogTm8gY3VycmVudCBmaWxl LCBzbyB0aGlzIG11c3QgYmUgdGhlIGhlYWRlciBmb3IgYSBuZXcgZmlsZQorCQkJICovCisJ CQlpZiAociAhPSA1MTIpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJtc2coImlu dmFsaWQgdGFyIGJsb2NrIGhlYWRlciBzaXplOiAlZCIsIHIpKSk7CisKKwkJCWN1cnJlbnRf bGVuX2xlZnQgPSByZWFkX3Rhcl9udW1iZXIoJmNvcHlidWZbMTI0XSwgMTIpOworCisJCQkv KiBTZXQgcGVybWlzc2lvbnMgb24gdGhlIGZpbGUgKi8KKwkJCWZpbGVtb2RlID0gcmVhZF90 YXJfbnVtYmVyKCZjb3B5YnVmWzEwMF0sIDgpOworCisJCQkvKgorCQkJICogQWxsIGZpbGVz IGFyZSBwYWRkZWQgdXAgdG8gNTEyIGJ5dGVzCisJCQkgKi8KKwkJCWN1cnJlbnRfcGFkZGlu ZyA9CisJCQkJKChjdXJyZW50X2xlbl9sZWZ0ICsgNTExKSAmIH41MTEpIC0gY3VycmVudF9s ZW5fbGVmdDsKKworCQkJLyoKKwkJCSAqIEZpcnN0IHBhcnQgb2YgaGVhZGVyIGlzIHplcm8g dGVybWluYXRlZCBmaWxlbmFtZQorCQkJICovCisJCQlzbnByaW50ZihmaWxlbmFtZSwgc2l6 ZW9mKGZpbGVuYW1lKSwgIiVzLyVzIiwgY3VycmVudF9wYXRoLAorCQkJCQkgY29weWJ1Zik7 CisJCQlpZiAoZmlsZW5hbWVbc3RybGVuKGZpbGVuYW1lKSAtIDFdID09ICcvJykKKwkJCXsK KwkJCQkvKgorCQkJCSAqIEVuZHMgaW4gYSBzbGFzaCBtZWFucyBkaXJlY3Rvcnkgb3Igc3lt bGluayB0byBkaXJlY3RvcnkKKwkJCQkgKi8KKwkJCQlpZiAoY29weWJ1ZlsxNTZdID09ICc1 JykKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIERpcmVjdG9yeQorCQkJCQkgKi8KKwkJCQkJ ZmlsZW5hbWVbc3RybGVuKGZpbGVuYW1lKSAtIDFdID0gJ1wwJzsJLyogUmVtb3ZlIHRyYWls aW5nIHNsYXNoICovCisJCQkJCWlmIChNYWtlUEdEaXJlY3RvcnkoZmlsZW5hbWUpICE9IDAp CisJCQkJCXsKKwkJCQkJCWlmIChlcnJubyAhPSBFRVhJU1QpCisJCQkJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCQkJCQkJ IGVycm1zZygiY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsCisJCQkJ CQkJCQkJCWZpbGVuYW1lKSkpOworCQkJCQl9CisjaWZuZGVmIFdJTjMyCisJCQkJCWlmIChj aG1vZChmaWxlbmFtZSwgKG1vZGVfdCkgZmlsZW1vZGUpKQorCQkJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJCQkJCQkJCSBlcnJt c2coImNvdWxkIG5vdCBzZXQgcGVybWlzc2lvbnMgb24gZGlyZWN0b3J5IFwiJXNcIjogJW0i LAorCQkJCQkJCQkJCWZpbGVuYW1lKSkpOworI2VuZGlmCisJCQkJCWZzeW5jX2ZuYW1lKGZp bGVuYW1lLCB0cnVlKTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoY29weWJ1ZlsxNTZdID09ICcy JykKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIFN5bWJvbGljIGxpbmsKKwkJCQkJICoKKwkJ CQkJICogSXQncyBtb3N0IGxpa2VseSBhIGxpbmsgaW4gcGdfdGJsc3BjIGRpcmVjdG9yeSwg dG8gdGhlCisJCQkJCSAqIGxvY2F0aW9uIG9mIGEgdGFibGVzcGFjZS4gQXBwbHkgYW55IHRh Ymxlc3BhY2UgbWFwcGluZworCQkJCQkgKiBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lICgt LXRhYmxlc3BhY2UtbWFwcGluZykuIChXZQorCQkJCQkgKiBibGluZGx5IGFwcGx5IHRoZSBt YXBwaW5nIHdpdGhvdXQgY2hlY2tpbmcgdGhhdCB0aGUKKwkJCQkJICogbGluayByZWFsbHkg aXMgaW5zaWRlIHBnX3RibHNwYy4gV2UgZG9uJ3QgZXhwZWN0IHRoZXJlCisJCQkJCSAqIHRv IGJlIG90aGVyIHN5bWxpbmtzIGluIGEgZGF0YSBkaXJlY3RvcnksIGJ1dCBpZiB0aGVyZQor CQkJCQkgKiBhcmUsIHlvdSBjYW4gY2FsbCBpdCBhbiB1bmRvY3VtZW50ZWQgZmVhdHVyZSB0 aGF0IHlvdQorCQkJCQkgKiBjYW4gbWFwIHRoZW0gdG9vLikKKwkJCQkJICovCisjaWZkZWYg VE9ETworCQkJCQlmaWxlbmFtZVtzdHJsZW4oZmlsZW5hbWUpIC0gMV0gPSAnXDAnOwkvKiBS ZW1vdmUgdHJhaWxpbmcgc2xhc2ggKi8KKworCQkJCQltYXBwZWRfdGJsc3BjX3BhdGggPSBn ZXRfdGFibGVzcGFjZV9tYXBwaW5nKCZjb3B5YnVmWzE1N10pOworCQkJCQlpZiAoc3ltbGlu ayhtYXBwZWRfdGJsc3BjX3BhdGgsIGZpbGVuYW1lKSAhPSAwKQorCQkJCQl7CisJCQkJCQlw Z19sb2dfZXJyb3IoImNvdWxkIG5vdCBjcmVhdGUgc3ltYm9saWMgbGluayBmcm9tIFwiJXNc IiB0byBcIiVzXCI6ICVtIiwKKwkJCQkJCQkJCSBmaWxlbmFtZSwgbWFwcGVkX3RibHNwY19w YXRoKTsKKwkJCQkJCWV4aXQoMSk7CisJCQkJCX0KKwkJCQkJZnN5bmNfZm5hbWUoZmlsZW5h bWUsIGZhbHNlKTsKKyNlbmRpZgorCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCShlcnJtc2coInVucmVjb2duaXplZCBsaW5rIGluZGljYXRv ciBcIiVjXCIiLAorCQkJCQkJCQkJY29weWJ1ZlsxNTZdKSkpOworCQkJCX0KKwkJCQljb250 aW51ZTsJCS8qIGRpcmVjdG9yeSBvciBsaW5rIGhhbmRsZWQgKi8KKwkJCX0KKworCQkJLyoK KwkJCSAqIHJlZ3VsYXIgZmlsZQorCQkJICovCisJCQlmaWxlID0gZm9wZW4oZmlsZW5hbWUs ICJ3YiIpOworCQkJaWYgKCFmaWxlKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJy Y29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKKwkJCQkJCSAoZXJybXNnKCJjb3VsZCBub3QgY3Jl YXRlIGZpbGUgXCIlc1wiOiAlbSIsIGZpbGVuYW1lKSkpKTsKKworCQkJZmx1c2hfb2Zmc2V0 ID0gMDsKKworI2lmbmRlZiBXSU4zMgorCQkJaWYgKGNobW9kKGZpbGVuYW1lLCAobW9kZV90 KSBmaWxlbW9kZSkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlX2Zvcl9m aWxlX2FjY2VzcygpLAorCQkJCQkJIChlcnJtc2coImNvdWxkIG5vdCBzZXQgcGVybWlzc2lv bnMgb24gZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkJCQkJIGZpbGVuYW1lKSkpKTsKKyNlbmRp ZgorCisJCQlpZiAoY3VycmVudF9sZW5fbGVmdCA9PSAwKQorCQkJeworCQkJCS8qCisJCQkJ ICogRG9uZSB3aXRoIHRoaXMgZmlsZSwgbmV4dCBvbmUgd2lsbCBiZSBhIG5ldyB0YXIgaGVh ZGVyCisJCQkJICovCisJCQkJcGdfZnN5bmMoZmlsZW5vKGZpbGUpKTsKKwkJCQlmY2xvc2Uo ZmlsZSk7CisJCQkJZmlsZSA9IE5VTEw7CisJCQkJY29udGludWU7CisJCQl9CisJCX0JCQkJ CQkvKiBuZXcgZmlsZSAqLworCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBDb250aW51aW5n IGJsb2NrcyBpbiBleGlzdGluZyBmaWxlCisJCQkgKi8KKwkJCWlmIChjdXJyZW50X2xlbl9s ZWZ0ID09IDAgJiYgciA9PSBjdXJyZW50X3BhZGRpbmcpCisJCQl7CisJCQkJLyoKKwkJCQkg KiBSZWNlaXZlZCB0aGUgcGFkZGluZyBibG9jayBmb3IgdGhpcyBmaWxlLCBpZ25vcmUgaXQg YW5kCisJCQkJICogY2xvc2UgdGhlIGZpbGUsIHRoZW4gbW92ZSBvbiB0byB0aGUgbmV4dCB0 YXIgaGVhZGVyLgorCQkJCSAqLworCQkJCXBnX2ZzeW5jKGZpbGVubyhmaWxlKSk7CisJCQkJ ZmNsb3NlKGZpbGUpOworCQkJCWZpbGUgPSBOVUxMOworCQkJCWNvbnRpbnVlOworCQkJfQor CisJCQlpZiAoZndyaXRlKGNvcHlidWYsIHIsIDEsIGZpbGUpICE9IDEpCisJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAorCQkJCQkJIGVy cm1zZygiY291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wiOiAlbSIsIGZpbGVuYW1lKSkp OworCisJCQlwZ19mbHVzaF9kYXRhKGZpbGVubyhmaWxlKSwgZmx1c2hfb2Zmc2V0LCByKTsK KwkJCWZsdXNoX29mZnNldCArPSByOworCQkJdG90YWxkb25lICs9IHI7CisJCQliYXNlX2Jh Y2t1cF9yZXBvcnRfcHJvZ3Jlc3MoKTsKKworCQkJY3VycmVudF9sZW5fbGVmdCAtPSByOwor CQkJaWYgKGN1cnJlbnRfbGVuX2xlZnQgPT0gMCAmJiBjdXJyZW50X3BhZGRpbmcgPT0gMCkK KwkJCXsKKwkJCQkvKgorCQkJCSAqIFJlY2VpdmVkIHRoZSBsYXN0IGJsb2NrLCBhbmQgdGhl cmUgaXMgbm8gcGFkZGluZyB0byBiZQorCQkJCSAqIGV4cGVjdGVkLiBDbG9zZSB0aGUgZmls ZSBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCB0YXIKKwkJCQkgKiBoZWFkZXIuCisJCQkJICov CisJCQkJcGdfZnN5bmMoZmlsZW5vKGZpbGUpKTsKKwkJCQlmY2xvc2UoZmlsZSk7CisJCQkJ ZmlsZSA9IE5VTEw7CisJCQkJY29udGludWU7CisJCQl9CisJCX0JCQkJCQkvKiBjb250aW51 aW5nIGRhdGEgaW4gZXhpc3RpbmcgZmlsZSAqLworCX0JCQkJCQkJLyogbG9vcCBvdmVyIGFs bCBkYXRhIGJsb2NrcyAqLworCWJhc2VfYmFja3VwX3JlcG9ydF9wcm9ncmVzcygpOworCisJ aWYgKGZpbGUgIT0gTlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJDT1BZ IHN0cmVhbSBlbmRlZCBiZWZvcmUgbGFzdCBmaWxlIHdhcyBmaW5pc2hlZCIpKSk7CisKKwlp ZiAoY29weWJ1ZiAhPSBOVUxMKQorCQlQUWZyZWVtZW0oY29weWJ1Zik7Cit9CisKKy8qCisg KiBNYWtlIGJhc2UgYmFja3VwIGZyb20gcmVtb3RlIGFuZCB3cml0ZSB0byBsb2NhbCBkaXNr LgorICovCitzdGF0aWMgdm9pZAorbGlicHFyY3ZfYmFzZV9iYWNrdXAoV2FsUmVjZWl2ZXJD b25uICpjb25uKQoreworCVN0cmluZ0luZm9EYXRhIHN0bXQ7CisJUEdyZXN1bHQgICAqcmVz OworCWNoYXIJCXhsb2dzdGFydFs2NF07CisJVGltZUxpbmVJRAlzdGFydHRsaTsKKwlYTG9n UmVjUHRyCXJlY3B0cjsKKwlib29sCQllcnJvcjsKKworCWVyZXBvcnQoTE9HLAorCQkJKGVy cm1zZygiaW5pdGlhdGluZyBiYXNlIGJhY2t1cCwgd2FpdGluZyBmb3IgcmVtb3RlIGNoZWNr cG9pbnQgdG8gY29tcGxldGUiKSkpOworCXNldF9wc19kaXNwbGF5KCJ3YWl0aW5nIGZvciBj aGVja3BvaW50IiwgZmFsc2UpOworCisJaW5pdFN0cmluZ0luZm8oJnN0bXQpOworCWFwcGVu ZFN0cmluZ0luZm8oJnN0bXQsICJCQVNFX0JBQ0tVUCBQUk9HUkVTUyBOT1dBSVQgRVhDTFVE RV9DT05GIik7CisJaWYgKGNsdXN0ZXJfbmFtZSAmJiBjbHVzdGVyX25hbWVbMF0pCisJCWFw cGVuZFN0cmluZ0luZm8oJnN0bXQsICIgTEFCRUwgJXMiLCBxdW90ZV9saXRlcmFsX2NzdHIo Y2x1c3Rlcl9uYW1lKSk7CisKKwlpZiAoUFFzZW5kUXVlcnkoY29ubi0+c3RyZWFtQ29ubiwg c3RtdC5kYXRhKSA9PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJtc2coImNvdWxk IG5vdCBzdGFydCBiYXNlIGJhY2t1cCBvbiByZW1vdGUgc2VydmVyOiAlcyIsCisJCQkJCQlw Y2hvbXAoUFFlcnJvck1lc3NhZ2UoY29ubi0+c3RyZWFtQ29ubikpKSkpOworCisJLyoKKwkg KiBGaXJzdCByZXN1bHQgc2V0OiBXQUwgc3RhcnQgcG9zaXRpb24gYW5kIHRpbWVsaW5lIElE CisJICovCisJcmVzID0gUFFnZXRSZXN1bHQoY29ubi0+c3RyZWFtQ29ubik7CisJaWYgKFBR cmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfVFVQTEVTX09LKQorCXsKKwkJUFFjbGVhcihy ZXMpOworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJtc2coImNvdWxkIG5vdCBzdGFydCBi YXNlIGJhY2t1cCBvbiByZW1vdGUgc2VydmVyOiAlcyIsCisJCQkJCQlwY2hvbXAoUFFlcnJv ck1lc3NhZ2UoY29ubi0+c3RyZWFtQ29ubikpKSkpOworCX0KKwlpZiAoUFFudHVwbGVzKHJl cykgIT0gMSkKKwl7CisJCVBRY2xlYXIocmVzKTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQko ZXJybXNnKCJzZXJ2ZXIgcmV0dXJuZWQgdW5leHBlY3RlZCByZXNwb25zZSB0byBCQVNFX0JB Q0tVUCBjb21tYW5kOyBnb3QgJWQgcm93cyBhbmQgJWQgZmllbGRzLCBleHBlY3RlZCAlZCBy b3dzIGFuZCAlZCBmaWVsZHMiLAorCQkJCQkJUFFudHVwbGVzKHJlcyksIFBRbmZpZWxkcyhy ZXMpLCAxLCAyKSkpOworCX0KKworCWVyZXBvcnQoTE9HLAorCQkJKGVycm1zZygicmVtb3Rl IGNoZWNrcG9pbnQgY29tcGxldGVkIikpKTsKKworCXN0cmxjcHkoeGxvZ3N0YXJ0LCBQUWdl dHZhbHVlKHJlcywgMCwgMCksIHNpemVvZih4bG9nc3RhcnQpKTsKKwlzdGFydHRsaSA9IGF0 b2koUFFnZXR2YWx1ZShyZXMsIDAsIDEpKTsKKwlQUWNsZWFyKHJlcyk7CisJZWxvZyhERUJV RzEsICJ3cml0ZS1haGVhZCBsb2cgc3RhcnQgcG9pbnQ6ICVzIG9uIHRpbWVsaW5lICV1IiwK KwkJIHhsb2dzdGFydCwgc3RhcnR0bGkpOworCXJlY3B0ciA9IHBnX2xzbl9pbl9pbnRlcm5h bCh4bG9nc3RhcnQsICZlcnJvcik7CisJaWYgKGVycm9yKQorCQllbG9nKEVSUk9SLCAiaW52 YWxpZCBMU04gcmVjZWl2ZWQ6ICVzIiwgeGxvZ3N0YXJ0KTsKKworCS8qCisJICogU2Vjb25k IHJlc3VsdCBzZXQ6IHRhYmxlc3BhY2UgaW5mb3JtYXRpb24KKwkgKi8KKwlyZXMgPSBQUWdl dFJlc3VsdChjb25uLT5zdHJlYW1Db25uKTsKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAh PSBQR1JFU19UVVBMRVNfT0spCisJeworCQlQUWNsZWFyKHJlcyk7CisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycm1zZygiY291bGQgbm90IGdldCBiYWNrdXAgaGVhZGVyOiAlcyIsCisJ CQkJCQlwY2hvbXAoUFFlcnJvck1lc3NhZ2UoY29ubi0+c3RyZWFtQ29ubikpKSkpOworCX0K KwlpZiAoUFFudHVwbGVzKHJlcykgPCAxKQorCXsKKwkJUFFjbGVhcihyZXMpOworCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJtc2coIm5vIGRhdGEgcmV0dXJuZWQgZnJvbSBzZXJ2ZXIi KSkpOworCX0KKworCXRvdGFsc2l6ZV9rYiA9IHRvdGFsZG9uZSA9IDA7CisJdGFibGVzcGFj ZWNvdW50ID0gUFFudHVwbGVzKHJlcyk7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBQUW50dXBs ZXMocmVzKTsgaSsrKQorCXsKKwkJdG90YWxzaXplX2tiICs9IGF0b2woUFFnZXR2YWx1ZShy ZXMsIGksIDIpKTsKKwl9CisKKwlSZXF1ZXN0WExvZ1N0cmVhbWluZyhzdGFydHRsaSwgcmVj cHRyLCBQcmltYXJ5Q29ubkluZm8sIFByaW1hcnlTbG90TmFtZSk7CisKKwkvKgorCSAqIFN0 YXJ0IHJlY2VpdmluZyBjaHVua3MKKwkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IFBRbnR1 cGxlcyhyZXMpOyBpKyspCisJeworCQl0YWJsZXNwYWNlbnVtID0gaTsKKwkJUmVjZWl2ZUFu ZFVucGFja1RhckZpbGUoY29ubi0+c3RyZWFtQ29ubiwgcmVzKTsKKwl9CisJdGFibGVzcGFj ZW51bSsrOworCWJhc2VfYmFja3VwX3JlcG9ydF9wcm9ncmVzcygpOworCisJUFFjbGVhcihy ZXMpOworCisJLyoKKwkgKiBGaW5hbCByZXN1bHQgc2V0OiBXQUwgZW5kIHBvc2l0aW9uIGFu ZCB0aW1lbGluZSBJRAorCSAqLworCXJlcyA9IFBRZ2V0UmVzdWx0KGNvbm4tPnN0cmVhbUNv bm4pOworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKKwl7 CisJCVBRY2xlYXIocmVzKTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJjb3Vs ZCBub3QgZ2V0IHdyaXRlLWFoZWFkIGxvZyBlbmQgcG9zaXRpb24gZnJvbSBzZXJ2ZXI6ICVz IiwKKwkJCQkJCXBjaG9tcChQUWVycm9yTWVzc2FnZShjb25uLT5zdHJlYW1Db25uKSkpKSk7 CisJfQorCWlmIChQUW50dXBsZXMocmVzKSAhPSAxKQorCXsKKwkJUFFjbGVhcihyZXMpOwor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJtc2coIm5vIHdyaXRlLWFoZWFkIGxvZyBlbmQg cG9zaXRpb24gcmV0dXJuZWQgZnJvbSBzZXJ2ZXIiKSkpOworCX0KKwlQUWNsZWFyKHJlcyk7 CisKKwlyZXMgPSBQUWdldFJlc3VsdChjb25uLT5zdHJlYW1Db25uKTsKKwlpZiAoUFFyZXN1 bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT01NQU5EX09LKQorCXsKKyNpZmRlZiBUT0RPCisJ CWNvbnN0IGNoYXIgKnNxbHN0YXRlID0gUFFyZXN1bHRFcnJvckZpZWxkKHJlcywgUEdfRElB R19TUUxTVEFURSk7CisKKwkJaWYgKHNxbHN0YXRlICYmCisJCQlzdHJjbXAoc3Fsc3RhdGUs IEVSUkNPREVfREFUQV9DT1JSVVBURUQpID09IDApCisJCXsKKwkJCWVsb2coRVJST1IsICJj aGVja3N1bSBlcnJvciBvY2N1cnJlZCIpOworCQl9CisJCWVsc2UKKyNlbmRpZgorCQl7CisJ CQllbG9nKEVSUk9SLCAiZmluYWwgcmVjZWl2ZSBmYWlsZWQ6ICVzIiwKKwkJCQkgcGNob21w KFBRZXJyb3JNZXNzYWdlKGNvbm4tPnN0cmVhbUNvbm4pKSk7CisJCX0KKwl9CisJUFFjbGVh cihyZXMpOworfQorCiAvKgogICogU3RhcnQgc3RyZWFtaW5nIFdBTCBkYXRhIGZyb20gZ2l2 ZW4gc3RyZWFtaW5nIG9wdGlvbnMuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vcmVwbF9ncmFtLnkgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9yZXBsX2dy YW0ueQppbmRleCBjNGUxMWNjNGU4Li44Yzk2MmJjNzExIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9yZXBsX2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9yZXBsX2dyYW0ueQpAQCAtNzgsNiArNzgsNyBAQCBzdGF0aWMgU1FMQ21kICptYWtl X3NxbGNtZCh2b2lkKTsKICV0b2tlbiBLX1dBTAogJXRva2VuIEtfVEFCTEVTUEFDRV9NQVAK ICV0b2tlbiBLX05PVkVSSUZZX0NIRUNLU1VNUworJXRva2VuIEtfRVhDTFVERV9DT05GCiAl dG9rZW4gS19USU1FTElORQogJXRva2VuIEtfUEhZU0lDQUwKICV0b2tlbiBLX0xPR0lDQUwK QEAgLTE1NCw4ICsxNTUsNyBAQCB2YXJfbmFtZToJSURFTlQJeyAkJCA9ICQxOyB9CiAJCTsK IAogLyoKLSAqIEJBU0VfQkFDS1VQIFtMQUJFTCAnPGxhYmVsPiddIFtQUk9HUkVTU10gW0ZB U1RdIFtXQUxdIFtOT1dBSVRdCi0gKiBbTUFYX1JBVEUgJWRdIFtUQUJMRVNQQUNFX01BUF0g W05PVkVSSUZZX0NIRUNLU1VNU10KKyAqIEJBU0VfQkFDS1VQIFtvcHRpb25dLi4uCiAgKi8K IGJhc2VfYmFja3VwOgogCQkJS19CQVNFX0JBQ0tVUCBiYXNlX2JhY2t1cF9vcHRfbGlzdApA QCAtMjE0LDYgKzIxNCwxMSBAQCBiYXNlX2JhY2t1cF9vcHQ6CiAJCQkJICAkJCA9IG1ha2VE ZWZFbGVtKCJub3ZlcmlmeV9jaGVja3N1bXMiLAogCQkJCQkJCQkgICAoTm9kZSAqKW1ha2VJ bnRlZ2VyKHRydWUpLCAtMSk7CiAJCQkJfQorCQkJfCBLX0VYQ0xVREVfQ09ORgorCQkJCXsK KwkJCQkgICQkID0gbWFrZURlZkVsZW0oImV4Y2x1ZGVfY29uZiIsCisJCQkJCQkJCSAgIChO b2RlICopbWFrZUludGVnZXIodHJ1ZSksIC0xKTsKKwkJCQl9CiAJCQk7CiAKIGNyZWF0ZV9y ZXBsaWNhdGlvbl9zbG90OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v cmVwbF9zY2FubmVyLmwgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9yZXBsX3NjYW5uZXIu bAppbmRleCAzODBmYWViNWY2Li42YTJkOGQxNDJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9yZXBsX3NjYW5uZXIubAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9yZXBsX3NjYW5uZXIubApAQCAtOTMsNiArOTMsNyBAQCBNQVhfUkFURQkJeyByZXR1 cm4gS19NQVhfUkFURTsgfQogV0FMCQkJeyByZXR1cm4gS19XQUw7IH0KIFRBQkxFU1BBQ0Vf TUFQCQkJeyByZXR1cm4gS19UQUJMRVNQQUNFX01BUDsgfQogTk9WRVJJRllfQ0hFQ0tTVU1T CXsgcmV0dXJuIEtfTk9WRVJJRllfQ0hFQ0tTVU1TOyB9CitFWENMVURFX0NPTkYJCQl7IHJl dHVybiBLX0VYQ0xVREVfQ09ORjsgfQogVElNRUxJTkUJCQl7IHJldHVybiBLX1RJTUVMSU5F OyB9CiBTVEFSVF9SRVBMSUNBVElPTgl7IHJldHVybiBLX1NUQVJUX1JFUExJQ0FUSU9OOyB9 CiBDUkVBVEVfUkVQTElDQVRJT05fU0xPVAkJeyByZXR1cm4gS19DUkVBVEVfUkVQTElDQVRJ T05fU0xPVDsgfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9pbml0ZGIvaW5pdGRiLmMgYi9zcmMv YmluL2luaXRkYi9pbml0ZGIuYwppbmRleCA4OGEyNjFkOWJkLi40NzIyYWQyMTA3IDEwMDY0 NAotLS0gYS9zcmMvYmluL2luaXRkYi9pbml0ZGIuYworKysgYi9zcmMvYmluL2luaXRkYi9p bml0ZGIuYwpAQCAtMTM2LDYgKzEzNiw3IEBAIHN0YXRpYyBjaGFyICpwd2ZpbGVuYW1lID0g TlVMTDsKIHN0YXRpYyBjaGFyICpzdXBlcnVzZXJfcGFzc3dvcmQgPSBOVUxMOwogc3RhdGlj IGNvbnN0IGNoYXIgKmF1dGhtZXRob2Rob3N0ID0gTlVMTDsKIHN0YXRpYyBjb25zdCBjaGFy ICphdXRobWV0aG9kbG9jYWwgPSBOVUxMOworc3RhdGljIGJvb2wgcmVwbGljYSA9IGZhbHNl Owogc3RhdGljIGJvb2wgZGVidWcgPSBmYWxzZTsKIHN0YXRpYyBib29sIG5vY2xlYW4gPSBm YWxzZTsKIHN0YXRpYyBib29sIGRvX3N5bmMgPSB0cnVlOwpAQCAtMjkzOCw2ICsyOTM5LDIy IEBAIGluaXRpYWxpemVfZGF0YV9kaXJlY3Rvcnkodm9pZCkKIAkvKiBOb3cgY3JlYXRlIGFs bCB0aGUgdGV4dCBjb25maWcgZmlsZXMgKi8KIAlzZXR1cF9jb25maWcoKTsKIAorCS8qCisJ ICogSWYgZGF0YSBkaXJlY3RvcnkgZm9yIHJlcGxpY2EgcmVxdWVzdGVkLCB3cml0ZSBiYXNl YmFja3VwLnNpZ25hbCwgYW5kCisJICogdGhlbiB3ZSBhcmUgZG9uZSBoZXJlLgorCSAqLwor CWlmIChyZXBsaWNhKQorCXsKKwkJY2hhcgkgICAqcGF0aDsKKwkJY2hhcgkgICAqbGluZXNb MV0gPSB7TlVMTH07CisKKwkJcGF0aCA9IHBzcHJpbnRmKCIlcy9iYXNlYmFja3VwLnNpZ25h bCIsIHBnX2RhdGEpOworCQl3cml0ZWZpbGUocGF0aCwgbGluZXMpOworCQlmcmVlKHBhdGgp OworCisJCXJldHVybjsKKwl9CisKIAkvKiBCb290c3RyYXAgdGVtcGxhdGUxICovCiAJYm9v dHN0cmFwX3RlbXBsYXRlMSgpOwogCkBAIC0zMDI5LDYgKzMwNDYsNyBAQCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJCXsid2FsLXNlZ3NpemUiLCByZXF1aXJlZF9hcmd1bWVu dCwgTlVMTCwgMTJ9LAogCQl7ImRhdGEtY2hlY2tzdW1zIiwgbm9fYXJndW1lbnQsIE5VTEws ICdrJ30sCiAJCXsiYWxsb3ctZ3JvdXAtYWNjZXNzIiwgbm9fYXJndW1lbnQsIE5VTEwsICdn J30sCisJCXsicmVwbGljYSIsIG5vX2FyZ3VtZW50LCBOVUxMLCAncid9LAogCQl7TlVMTCwg MCwgTlVMTCwgMH0KIAl9OwogCkBAIC0zMDcwLDcgKzMwODgsNyBAQCBtYWluKGludCBhcmdj LCBjaGFyICphcmd2W10pCiAKIAkvKiBwcm9jZXNzIGNvbW1hbmQtbGluZSBvcHRpb25zICov CiAKLQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiZEQ6RTprTDpuTlU6 V0E6c1NUOlg6ZyIsIGxvbmdfb3B0aW9ucywgJm9wdGlvbl9pbmRleCkpICE9IC0xKQorCXdo aWxlICgoYyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJkRDpFOmtMOm5OclU6V0E6c1NU Olg6ZyIsIGxvbmdfb3B0aW9ucywgJm9wdGlvbl9pbmRleCkpICE9IC0xKQogCXsKIAkJc3dp dGNoIChjKQogCQl7CkBAIC0zMTE2LDYgKzMxMzQsOSBAQCBtYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pCiAJCQljYXNlICdOJzoKIAkJCQlkb19zeW5jID0gZmFsc2U7CiAJCQkJYnJl YWs7CisJCQljYXNlICdyJzoKKwkJCQlyZXBsaWNhID0gdHJ1ZTsKKwkJCQlicmVhazsKIAkJ CWNhc2UgJ1MnOgogCQkJCXN5bmNfb25seSA9IHRydWU7CiAJCQkJYnJlYWs7CkBAIC0zMzM3 LDkgKzMzNTgsMTkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCS8qIHRyYW5z bGF0b3I6IFRoaXMgaXMgYSBwbGFjZWhvbGRlciBpbiBhIHNoZWxsIGNvbW1hbmQuICovCiAJ YXBwZW5kUFFFeHBCdWZmZXIoc3RhcnRfZGJfY21kLCAiIC1sICVzIHN0YXJ0IiwgXygibG9n ZmlsZSIpKTsKIAotCXByaW50ZihfKCJcblN1Y2Nlc3MuIFlvdSBjYW4gbm93IHN0YXJ0IHRo ZSBkYXRhYmFzZSBzZXJ2ZXIgdXNpbmc6XG5cbiIKLQkJCSAiICAgICVzXG5cbiIpLAotCQkg ICBzdGFydF9kYl9jbWQtPmRhdGEpOworCWlmICghcmVwbGljYSkKKwl7CisJCXByaW50Zihf KCJcblN1Y2Nlc3MuIFlvdSBjYW4gbm93IHN0YXJ0IHRoZSBkYXRhYmFzZSBzZXJ2ZXIgdXNp bmc6XG5cbiIKKwkJCQkgIiAgICAlc1xuXG4iKSwKKwkJCSAgIHN0YXJ0X2RiX2NtZC0+ZGF0 YSk7CisJfQorCWVsc2UKKwl7CisJCXByaW50ZihfKCJcblNvIGZhciBzbyBnb29kLiBOb3cg Y29uZmlndXJlIHRoZSByZXBsaWNhdGlvbiBjb25uZWN0aW9uIGluXG4iCisJCQkJICJwb3N0 Z3Jlc3FsLmNvbmYsIGFuZCB0aGVuIHN0YXJ0IHRoZSBkYXRhYmFzZSBzZXJ2ZXIgdXNpbmc6 XG5cbiIKKwkJCQkgIiAgICAlc1xuXG4iKSwKKwkJCSAgIHN0YXJ0X2RiX2NtZC0+ZGF0YSk7 CisJfQogCiAJZGVzdHJveVBRRXhwQnVmZmVyKHN0YXJ0X2RiX2NtZCk7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxv Zy5oCmluZGV4IGQ1MTkyNTJhYWQuLjY3OTZjY2UwZWIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaApAQCAt Mjk5LDYgKzI5OSwxMSBAQCBleHRlcm4gU2l6ZSBYTE9HU2htZW1TaXplKHZvaWQpOwogZXh0 ZXJuIHZvaWQgWExPR1NobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIEJvb3RTdHJhcFhM T0codm9pZCk7CiBleHRlcm4gdm9pZCBMb2NhbFByb2Nlc3NDb250cm9sRmlsZShib29sIHJl c2V0KTsKKyNpZm5kZWYgRlJPTlRFTkQKK2V4dGVybiB2b2lkIEluaXRDb250cm9sRmlsZSh1 aW50NjQgc3lzaWRlbnRpZmllcik7CitleHRlcm4gdm9pZCBXcml0ZUNvbnRyb2xGaWxlKHZv aWQpOworZXh0ZXJuIHZvaWQgUmVhZENvbnRyb2xGaWxlKHZvaWQpOworI2VuZGlmCiBleHRl cm4gdm9pZCBTdGFydHVwWExPRyh2b2lkKTsKIGV4dGVybiB2b2lkIFNodXRkb3duWExPRyhp bnQgY29kZSwgRGF0dW0gYXJnKTsKIGV4dGVybiB2b2lkIEluaXRYTE9HQWNjZXNzKHZvaWQp OwpAQCAtMzU0LDYgKzM1OSw3IEBAIGV4dGVybiB2b2lkIGRvX3BnX2Fib3J0X2JhY2t1cCh2 b2lkKTsKIGV4dGVybiBTZXNzaW9uQmFja3VwU3RhdGUgZ2V0X2JhY2t1cF9zdGF0dXModm9p ZCk7CiAKIC8qIEZpbGUgcGF0aCBuYW1lcyAoYWxsIHJlbGF0aXZlIHRvICRQR0RBVEEpICov CisjZGVmaW5lIEJBU0VCQUNLVVBfU0lHTkFMX0ZJTEUJImJhc2ViYWNrdXAuc2lnbmFsIgog I2RlZmluZSBSRUNPVkVSWV9TSUdOQUxfRklMRQkicmVjb3Zlcnkuc2lnbmFsIgogI2RlZmlu ZSBTVEFOREJZX1NJR05BTF9GSUxFCQkic3RhbmRieS5zaWduYWwiCiAjZGVmaW5lIEJBQ0tV UF9MQUJFTF9GSUxFCQkiYmFja3VwX2xhYmVsIgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bWlzY2FkbWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCBiYzZlMDNmYmM3 Li43NWVmYzNjZjVmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAorKysg Yi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaApAQCAtMzk4LDYgKzM5OCw3IEBAIHR5cGVkZWYg ZW51bQogCUNoZWNrZXJQcm9jZXNzID0gMCwKIAlCb290c3RyYXBQcm9jZXNzLAogCVN0YXJ0 dXBQcm9jZXNzLAorCUJhc2VCYWNrdXBQcm9jZXNzLAogCUJnV3JpdGVyUHJvY2VzcywKIAlD aGVja3BvaW50ZXJQcm9jZXNzLAogCVdhbFdyaXRlclByb2Nlc3MsCkBAIC00MTAsNiArNDEx LDcgQEAgZXh0ZXJuIEF1eFByb2NUeXBlIE15QXV4UHJvY1R5cGU7CiAKICNkZWZpbmUgQW1C b290c3RyYXBQcm9jZXNzKCkJCShNeUF1eFByb2NUeXBlID09IEJvb3RzdHJhcFByb2Nlc3Mp CiAjZGVmaW5lIEFtU3RhcnR1cFByb2Nlc3MoKQkJCShNeUF1eFByb2NUeXBlID09IFN0YXJ0 dXBQcm9jZXNzKQorI2RlZmluZSBBbUJhc2VCYWNrdXBQcm9jZXNzKCkJCShNeUF1eFByb2NU eXBlID09IEJhc2VCYWNrdXBQcm9jZXNzKQogI2RlZmluZSBBbUJhY2tncm91bmRXcml0ZXJQ cm9jZXNzKCkgKE15QXV4UHJvY1R5cGUgPT0gQmdXcml0ZXJQcm9jZXNzKQogI2RlZmluZSBB bUNoZWNrcG9pbnRlclByb2Nlc3MoKQkJKE15QXV4UHJvY1R5cGUgPT0gQ2hlY2twb2ludGVy UHJvY2VzcykKICNkZWZpbmUgQW1XYWxXcml0ZXJQcm9jZXNzKCkJCShNeUF1eFByb2NUeXBl ID09IFdhbFdyaXRlclByb2Nlc3MpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ3N0YXQu aCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmluZGV4IGZlMDc2ZDgyM2QuLjZiNmEwNmNlZDgg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bn c3RhdC5oCkBAIC03MjEsNiArNzIxLDcgQEAgdHlwZWRlZiBlbnVtIEJhY2tlbmRUeXBlCiAJ Ql9BVVRPVkFDX0xBVU5DSEVSLAogCUJfQVVUT1ZBQ19XT1JLRVIsCiAJQl9CQUNLRU5ELAor CUJfQkFTRV9CQUNLVVAsCiAJQl9CR19XT1JLRVIsCiAJQl9CR19XUklURVIsCiAJQl9DSEVD S1BPSU5URVIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9iYXNlYmFj a3VwLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9iYXNlYmFja3VwLmgKaW5kZXggNTAz YTViOWYwYi4uNDgwMTY1YzUxYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vYmFzZWJhY2t1cC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2Jhc2ViYWNr dXAuaApAQCAtMzMsNCArMzMsNiBAQCBleHRlcm4gdm9pZCBTZW5kQmFzZUJhY2t1cChCYXNl QmFja3VwQ21kICpjbWQpOwogCiBleHRlcm4gaW50NjQgc2VuZFRhYmxlc3BhY2UoY2hhciAq cGF0aCwgYm9vbCBzaXplb25seSk7CiAKK2V4dGVybiB2b2lkIEJhc2VCYWNrdXBNYWluKHZv aWQpOworCiAjZW5kaWYJCQkJCQkJLyogX0JBU0VCQUNLVVBfSCAqLwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKaW5kZXggZTEyYTkzNDk2Ni4uODM1YzBiODIxNCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaAorKysg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCkBAIC0yMTQsNiArMjE0 LDcgQEAgdHlwZWRlZiB2b2lkICgqd2FscmN2X3JlYWR0aW1lbGluZWhpc3RvcnlmaWxlX2Zu KSAoV2FsUmVjZWl2ZXJDb25uICpjb25uLAogCQkJCQkJCQkJCQkJICAgVGltZUxpbmVJRCB0 bGksCiAJCQkJCQkJCQkJCQkgICBjaGFyICoqZmlsZW5hbWUsCiAJCQkJCQkJCQkJCQkgICBj aGFyICoqY29udGVudCwgaW50ICpzaXplKTsKK3R5cGVkZWYgdm9pZCAoKndhbHJjdl9iYXNl X2JhY2t1cF9mbikgKFdhbFJlY2VpdmVyQ29ubiAqY29ubik7CiB0eXBlZGVmIGJvb2wgKCp3 YWxyY3Zfc3RhcnRzdHJlYW1pbmdfZm4pIChXYWxSZWNlaXZlckNvbm4gKmNvbm4sCiAJCQkJ CQkJCQkJICBjb25zdCBXYWxSY3ZTdHJlYW1PcHRpb25zICpvcHRpb25zKTsKIHR5cGVkZWYg dm9pZCAoKndhbHJjdl9lbmRzdHJlYW1pbmdfZm4pIChXYWxSZWNlaXZlckNvbm4gKmNvbm4s CkBAIC0yNDEsNiArMjQyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgV2FsUmVjZWl2ZXJGdW5jdGlv bnNUeXBlCiAJd2FscmN2X2lkZW50aWZ5X3N5c3RlbV9mbiB3YWxyY3ZfaWRlbnRpZnlfc3lz dGVtOwogCXdhbHJjdl9zZXJ2ZXJfdmVyc2lvbl9mbiB3YWxyY3Zfc2VydmVyX3ZlcnNpb247 CiAJd2FscmN2X3JlYWR0aW1lbGluZWhpc3RvcnlmaWxlX2ZuIHdhbHJjdl9yZWFkdGltZWxp bmVoaXN0b3J5ZmlsZTsKKwl3YWxyY3ZfYmFzZV9iYWNrdXBfZm4gd2FscmN2X2Jhc2VfYmFj a3VwOwogCXdhbHJjdl9zdGFydHN0cmVhbWluZ19mbiB3YWxyY3Zfc3RhcnRzdHJlYW1pbmc7 CiAJd2FscmN2X2VuZHN0cmVhbWluZ19mbiB3YWxyY3ZfZW5kc3RyZWFtaW5nOwogCXdhbHJj dl9yZWNlaXZlX2ZuIHdhbHJjdl9yZWNlaXZlOwpAQCAtMjY2LDYgKzI2OCw4IEBAIGV4dGVy biBQR0RMTElNUE9SVCBXYWxSZWNlaXZlckZ1bmN0aW9uc1R5cGUgKldhbFJlY2VpdmVyRnVu Y3Rpb25zOwogCVdhbFJlY2VpdmVyRnVuY3Rpb25zLT53YWxyY3Zfc2VydmVyX3ZlcnNpb24o Y29ubikKICNkZWZpbmUgd2FscmN2X3JlYWR0aW1lbGluZWhpc3RvcnlmaWxlKGNvbm4sIHRs aSwgZmlsZW5hbWUsIGNvbnRlbnQsIHNpemUpIFwKIAlXYWxSZWNlaXZlckZ1bmN0aW9ucy0+ d2FscmN2X3JlYWR0aW1lbGluZWhpc3RvcnlmaWxlKGNvbm4sIHRsaSwgZmlsZW5hbWUsIGNv bnRlbnQsIHNpemUpCisjZGVmaW5lIHdhbHJjdl9iYXNlX2JhY2t1cChjb25uKSBcCisJV2Fs UmVjZWl2ZXJGdW5jdGlvbnMtPndhbHJjdl9iYXNlX2JhY2t1cChjb25uKQogI2RlZmluZSB3 YWxyY3Zfc3RhcnRzdHJlYW1pbmcoY29ubiwgb3B0aW9ucykgXAogCVdhbFJlY2VpdmVyRnVu Y3Rpb25zLT53YWxyY3Zfc3RhcnRzdHJlYW1pbmcoY29ubiwgb3B0aW9ucykKICNkZWZpbmUg d2FscmN2X2VuZHN0cmVhbWluZyhjb25uLCBuZXh0X3RsaSkgXApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdXRpbHMvZ3VjLmggYi9zcmMvaW5jbHVkZS91dGlscy9ndWMuaAppbmRleCA2 NzkxZTBjYmMyLi4yZTEyMzMwYjAwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9n dWMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9ndWMuaApAQCAtMjU5LDcgKzI1OSw3IEBA IGV4dGVybiBpbnQJdGVtcF9maWxlX2xpbWl0OwogCiBleHRlcm4gaW50CW51bV90ZW1wX2J1 ZmZlcnM7CiAKLWV4dGVybiBjaGFyICpjbHVzdGVyX25hbWU7CitleHRlcm4gUEdETExJTVBP UlQgY2hhciAqY2x1c3Rlcl9uYW1lOwogZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKkNvbmZp Z0ZpbGVOYW1lOwogZXh0ZXJuIGNoYXIgKkhiYUZpbGVOYW1lOwogZXh0ZXJuIGNoYXIgKklk ZW50RmlsZU5hbWU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOF9iYXNl YmFja3VwLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMThfYmFzZWJhY2t1cC5wbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi45OTczMWZjMzg4Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMThfYmFzZWJhY2t1cC5wbApAQCAt MCwwICsxLDI5IEBACisjIFRlc3QgYmFzZWJhY2t1cCB3b3JrZXIgZnVuY3Rpb25hbGl0eQor dXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3Jlc05vZGU7Cit1c2UgVGVz dExpYjsKK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+IDI7CisKK215ICRub2RlMSA9IGdldF9u ZXdfbm9kZSgnbm9kZTEnKTsKKyRub2RlMS0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+IDEp OworJG5vZGUxLT5zdGFydDsKKworJG5vZGUxLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ CQkgICJDUkVBVEUgVEFCTEUgdGFiX2ludCBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEs MTAwMCkgQVMgYSIpOworCitteSAkbm9kZTIgPSBnZXRfbmV3X25vZGUoJ25vZGUyJyk7Cisk bm9kZTItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAxLCBleHRyYSA9PiBbICctLXJlcGxp Y2EnIF0pOworJG5vZGUyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgInByaW1h cnlfY29ubmluZm8gPSAnIiAuICRub2RlMS0+Y29ubnN0ciAuICInIik7CitteSAkb2xkX210 aW1lID0gKHN0YXQoJG5vZGUyLT5kYXRhX2RpciAuICcvcG9zdGdyZXNxbC5jb25mJykpWzld OworJG5vZGUyLT5zdGFydDsKKworJG5vZGUxLT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlMiwg J3JlcGxheScsICRub2RlMS0+bHNuKCdpbnNlcnQnKSk7CisKK2lzKCRub2RlMi0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0YWJfaW50IiksCisgICBx cSgxMDAwKSwKKyAgICdjaGVjayBjb250ZW50IG9mIHN0YW5kYnknKTsKKworbXkgJG5ld19t dGltZSA9IChzdGF0KCRub2RlMi0+ZGF0YV9kaXIgLiAnL3Bvc3RncmVzcWwuY29uZicpKVs5 XTsKK2lzKCRuZXdfbXRpbWUsICRvbGRfbXRpbWUsCisgICAnY29uZmlndXJhdGlvbiBmaWxl cyB3ZXJlIG5vdCBjb3BpZWQnKTsKCmJhc2UtY29tbWl0OiA5Njg0ZTQyNjk1NDkyMWU4YjJi ZmEzNjdmOWU2YTRjYmJmNGNlNWZmCi0tIAoyLjIyLjAKCg== --------------BB0518755382B79C7068A625--