Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uABj0-00BwcS-AH for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Apr 2025 18:00:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uABiy-00FNER-BE for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Apr 2025 18:00:01 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uABix-00FNE6-Qe for pgsql-hackers@lists.postgresql.org; Wed, 30 Apr 2025 18:00:01 +0000 Received: from mail-qv1-xf2e.google.com ([2607:f8b0:4864:20::f2e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uABiv-000Os8-1B for pgsql-hackers@postgresql.org; Wed, 30 Apr 2025 17:59:59 +0000 Received: by mail-qv1-xf2e.google.com with SMTP id 6a1803df08f44-6ecfa716ec1so2415466d6.2 for ; Wed, 30 Apr 2025 10:59:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1746035994; x=1746640794; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=oJdqCxWGRPiJSG+tf4cEu7hozJB1bfOh/nkUJE/5d0c=; b=PwJjf/cmInptYQUBARxgzAp6gmNi0e5tZAGgN7MOQ2Y2q7o+8RWvDYcE7jTbi2tI1G ptoi9ztGFrgVXC4008tyAzawFnLHkk7diV+riHiIqfB0Ptr3xlwynNEYtKbFpXCFtXVU P6seH1QkaP5OQQrADitrcxElZ2kAiU937BAz8ukgXDyGdrSGk1abhnTUF3EUWPtnGgJc d+yAppxG03BNWVWdZ9X9OJXFzdaQWdyEOM7iyEcahECJZ/6iO/Y7+xIxqkKTa/MVjs9m 89n/tXW8gTdjWbS/dyBqbBR3zRiC5Ir5hBjyx4LTznCxHpAMnIDe8Cm+EW3HyS0inBPK 2TGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746035994; x=1746640794; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=oJdqCxWGRPiJSG+tf4cEu7hozJB1bfOh/nkUJE/5d0c=; b=Wd6MiI0WZPsaNRkbRX2OZlfKmm0lPgbyz0ZrDdDthpTAIy4mxpOWJz7+WhH/WWLVao +aG577duR+90MaBsfPPVPTqPdJI2Ya1UFZ9RjjIoPW8EhSrlFb9Af0HwgINonMbnL2d6 vcx8cqkBgPw6ue5giAMbm6XKvf6Xa5X5JVbeiTLYiz0TR6jl534O7f9i/aFUkXi8JfdD IYwkTpLAlwnaDmEet0kk51qdEuphVb07e1xI64F9R3mQNn+m1NRk3VHlMi5ORcLRUpza ZxanZo2RlWUAJV0dLLaI5Ln4mZIo67WhCutt3tjucttXYDVMZZPTdjyCX3Nta0aLhWvp mlvQ== X-Forwarded-Encrypted: i=1; AJvYcCU+E28a39MW7OFd30pY9THYNYwVv1775Mlrnq9P1u6uduwdanHOR9wfZ+Qh+7ym7aSblk3dvUuD3JWjRI2E@postgresql.org X-Gm-Message-State: AOJu0YzzRsr0nbh3ltSd9ODywkgAwS+nUyzpqBxcgeqR8OzAX0mD79yQ cVhm9zF+iHvvMtlLdyYmnBF3+J3QqXuT9jQCBoBYpYJkkhmEAAV0mMR/wUtUdgad/ERc7p67GdH yRfs2QqZICKusoOOkMG+5Q+DruBYg6QVE2+YM X-Gm-Gg: ASbGncspW6RODuQwTjztBvibzhYs1njd1CPvoTAXQWcYPaEtzagkU8VmJ9KIRseFu/Z o29cFkLT+uQftn86xYrnB3SdfjLbuBNCq4B/YXd4PeCpth7bRz8AiVmmvB/Hm2GNUkSqEk3wcgd eQgM3hOaIkXUjw2KRIZv/0 X-Google-Smtp-Source: AGHT+IE9ab7K/RABaS1euglw1RTunfZiOjzUctmAjx/vrfBstQn6p2Sz3GoQnI9QCSkc4MmRo1KRxpJROmeaitXjcIA= X-Received: by 2002:a05:6214:226c:b0:6e8:fb94:b9bf with SMTP id 6a1803df08f44-6f4fe03a2dcmr60383136d6.4.1746035994530; Wed, 30 Apr 2025 10:59:54 -0700 (PDT) MIME-Version: 1.0 References: <8210C830-DDBB-4CD7-AB39-F5F59C36D547@yesql.se> In-Reply-To: <8210C830-DDBB-4CD7-AB39-F5F59C36D547@yesql.se> From: Jacob Champion Date: Wed, 30 Apr 2025 10:59:43 -0700 X-Gm-Features: ATxdqUEPXXmI7tsM0lml9rL7HkpuAbT0LzAlz5Tjwq9Px6UMtiIRt1O5-90r5Us Message-ID: Subject: Re: [PoC] Federated Authn/z with OAUTHBEARER To: Daniel Gustafsson Cc: Christoph Berg , Jelte Fennema-Nio , Peter Eisentraut , Andres Freund , Tom Lane , Bruce Momjian , PostgreSQL Hackers , Thomas Munro , Nazir Bilal Yavuz , Antonin Houska , Wolfgang Walther , =?UTF-8?B?RGV2cmltIEfDvG5kw7x6?= Content-Type: multipart/mixed; boundary="0000000000003853ec063402afc2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000003853ec063402afc2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Apr 30, 2025 at 5:55=E2=80=AFAM Daniel Gustafsson = wrote: > > To keep things moving: I assume this is unacceptable. So v10 redirects > > every access to a PGconn struct member through a shim, similarly to > > how conn->errorMessage was translated in v9. This adds plenty of new > > boilerplate, but not a whole lot of complexity. To try to keep us > > honest, libpq-int.h has been removed from the libpq-oauth includes. > > That admittedly seems like a win regardless. Yeah, it moves us much closer to the long-term goal. > We should either clarify that it was never shipped as part of libpq core,= or > remove this altogether. Done in v11, with your suggested wording. > I think this explanatory paragraph should come before the function protot= ype. Done. > Nitpick, but it won't be .so everywhere. Would this be clearar if spelle= d out > with something like "do not rely on libpq-int.h when building libpq-oauth= as > dynamic shared lib"? I went with "do not rely on libpq-int.h in dynamic builds of libpq-oauth", since devs are hopefully going to be the only people who see it. I've also fixed up an errant #endif label right above it. I'd ideally like to get a working split in for beta. Barring objections, I plan to get this pushed tomorrow so that the buildfarm has time to highlight any corner cases well before the Saturday freeze. I still see the choice of naming (with its forced-ABI break every major version) as needing more scrutiny, and probably worth a Revisit entry. The CI still looks happy, and I will spend today with VMs and more testing on the Autoconf side. I'll try to peer at Alpine and musl libc, too; dogfish and basilisk are the Curl-enabled animals that caught my attention most. Thanks! --Jacob --0000000000003853ec063402afc2 Content-Type: text/plain; charset="US-ASCII"; name="since-v10.diff.txt" Content-Disposition: attachment; filename="since-v10.diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma48n12n0 MTogIGU4NmU5M2Y3YWM4ICEgMTogIDVhMWQxMzQ1OTE5IG9hdXRoOiBNb3ZlIHRoZSBidWlsdGlu IGZsb3cgaW50byBhIHNlcGFyYXRlIG1vZHVsZQogICAgQEAgQ29tbWl0IG1lc3NhZ2UKICAgICAK ICAgICAgICAgUGVyIHJlcXVlc3QgZnJvbSBUb20gTGFuZSBhbmQgQnJ1Y2UgTW9tamlhbi4gQmFz ZWQgb24gYW4gaW5pdGlhbCBwYXRjaAogICAgICAgICBieSBEYW5pZWwgR3VzdGFmc3Nvbiwgd2hv IGFsc28gY29udHJpYnV0ZWQgZG9jcyBjaGFuZ2VzLiBUaGUgImJhcmUiCiAgICAtICAgIGRsb3Bl bigpIGNvbmNlcHQgY2FtZSBmcm9tIFRob21hcyBNdW5yby4gTWFueSBtYW55IHBlb3BsZSByZXZp ZXdlZCB0aGUKICAgIC0gICAgZGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbjsgdGhhbmsgeW91IQog ICAgKyAgICBkbG9wZW4oKSBjb25jZXB0IGNhbWUgZnJvbSBUaG9tYXMgTXVucm8uIE1hbnkgcGVv cGxlIHJldmlld2VkIHRoZSBkZXNpZ24KICAgICsgICAgYW5kIGltcGxlbWVudGF0aW9uOyB0aGFu ayB5b3UhCiAgICAgCiAgICAgICAgIENvLWF1dGhvcmVkLWJ5OiBEYW5pZWwgR3VzdGFmc3NvbiA8 ZGFuaWVsQHllc3FsLnNlPgogICAgICAgICBSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5k cmVzQGFuYXJhemVsLmRlPgogICAgICAgICBSZXZpZXdlZC1ieTogQ2hyaXN0b3BoIEJlcmcgPG15 b25AZGViaWFuLm9yZz4KICAgICsgICAgUmV2aWV3ZWQtYnk6IERhbmllbCBHdXN0YWZzc29uIDxk YW5pZWxAeWVzcWwuc2U+CiAgICAgICAgIFJldmlld2VkLWJ5OiBKZWx0ZSBGZW5uZW1hLU5pbyA8 cG9zdGdyZXNAamVsdGVmLm5sPgogICAgICAgICBSZXZpZXdlZC1ieTogUGV0ZXIgRWlzZW50cmF1 dCA8cGV0ZXJAZWlzZW50cmF1dC5vcmc+CiAgICAgICAgIFJldmlld2VkLWJ5OiBXb2xmZ2FuZyBX YWx0aGVyIDx3YWx0aGVyQHRlY2hub3dsZWRneS5kZT4KICAgIEBAIHNyYy9pbnRlcmZhY2VzL2xp YnBxLW9hdXRoL01ha2VmaWxlIChuZXcpCiAgICAgICMjIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9h dXRoL1JFQURNRSAobmV3KSAjIwogICAgIEBACiAgICAgK2xpYnBxLW9hdXRoIGlzIGFuIG9wdGlv bmFsIG1vZHVsZSBpbXBsZW1lbnRpbmcgdGhlIERldmljZSBBdXRob3JpemF0aW9uIGZsb3cgZm9y CiAgICAtK09BdXRoIGNsaWVudHMgKFJGQyA4NjI4KS4gSXQgd2FzIG9yaWdpbmFsbHkgZGV2ZWxv cGVkIGFzIHBhcnQgb2YgbGlicHEgY29yZSBhbmQKICAgIC0rbGF0ZXIgc3BsaXQgb3V0IGFzIGl0 cyBvd24gc2hhcmVkIGxpYnJhcnkgaW4gb3JkZXIgdG8gaXNvbGF0ZSBpdHMgZGVwZW5kZW5jeSBv bgogICAgLStsaWJjdXJsLiAoRW5kIHVzZXJzIHdobyBkb24ndCB3YW50IHRoZSBDdXJsIGRlcGVu ZGVuY3kgY2FuIHNpbXBseSBjaG9vc2Ugbm90IHRvCiAgICAtK2luc3RhbGwgdGhpcyBtb2R1bGUu KQogICAgKytPQXV0aCBjbGllbnRzIChSRkMgODYyOCkuIEl0IGlzIG1haW50YWluZWQgYXMgaXRz IG93biBzaGFyZWQgbGlicmFyeSBpbiBvcmRlciB0bwogICAgKytpc29sYXRlIGl0cyBkZXBlbmRl bmN5IG9uIGxpYmN1cmwuIChFbmQgdXNlcnMgd2hvIGRvbid0IHdhbnQgdGhlIEN1cmwgZGVwZW5k ZW5jeQogICAgKytjYW4gc2ltcGx5IGNob29zZSBub3QgdG8gaW5zdGFsbCB0aGlzIG1vZHVsZS4p CiAgICAgKwogICAgICtJZiBhIGNvbm5lY3Rpb24gc3RyaW5nIGFsbG93cyB0aGUgdXNlIG9mIE9B dXRoLCBhbmQgdGhlIHNlcnZlciBhc2tzIGZvciBpdCwgYW5kCiAgICAgK2EgbGlicHEgY2xpZW50 IGhhcyBub3QgaW5zdGFsbGVkIGl0cyBvd24gY3VzdG9tIE9BdXRoIGZsb3csIGxpYnBxIHdpbGwg YXR0ZW1wdAogICAgQEAgc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvUkVBRE1FIChuZXcpCiAg ICAgK3BnX2ZlX3J1bl9vYXV0aF9mbG93IGFuZCBwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3cgYXJl IGltcGxlbWVudGF0aW9ucyBvZgogICAgICtjb25uLT5hc3luY19hdXRoIGFuZCBjb25uLT5jbGVh bnVwX2FzeW5jX2F1dGgsIHJlc3BlY3RpdmVseS4KICAgICArCiAgICArK0F0IHRoZSBtb21lbnQs IHBnX2ZlX3J1bl9vYXV0aF9mbG93KCkgcmVsaWVzIG9uIGxpYnBxJ3MgcGdfZ190aHJlYWRsb2Nr IGFuZAogICAgKytsaWJwcV9nZXR0ZXh0KCksIHdoaWNoIG11c3QgYmUgaW5qZWN0ZWQgYnkgbGli cHEgdXNpbmcgdGhpcyBpbml0aWFsaXphdGlvbgogICAgKytmdW5jdGlvbiBiZWZvcmUgdGhlIGZs b3cgaXMgcnVuOgogICAgKysKICAgICArLSB2b2lkIGxpYnBxX29hdXRoX2luaXQocGd0aHJlYWRs b2NrX3QgdGhyZWFkbG9jaywKICAgICArCQkJCQkJbGlicHFfZ2V0dGV4dF9mdW5jIGdldHRleHRf aW1wbCwKICAgICArCQkJCQkJY29ubl9lcnJvck1lc3NhZ2VfZnVuYyBlcnJtc2dfaW1wbCwKICAg IEBAIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL1JFQURNRSAobmV3KQogICAgICsJCQkJCQlz ZXRfY29ubl9hbHRzb2NrX2Z1bmMgc2V0YWx0c29ja19pbXBsLAogICAgICsJCQkJCQlzZXRfY29u bl9vYXV0aF90b2tlbl9mdW5jIHNldHRva2VuX2ltcGwpOwogICAgICsKICAgIC0rQXQgdGhlIG1v bWVudCwgcGdfZmVfcnVuX29hdXRoX2Zsb3coKSByZWxpZXMgb24gbGlicHEncyBwZ19nX3RocmVh ZGxvY2sgYW5kCiAgICAtK2xpYnBxX2dldHRleHQoKSwgd2hpY2ggbXVzdCBiZSBpbmplY3RlZCBi eSBsaWJwcSB1c2luZyB0aGlzIGluaXRpYWxpemF0aW9uCiAgICAtK2Z1bmN0aW9uIGJlZm9yZSB0 aGUgZmxvdyBpcyBydW4uCiAgICAtKwogICAgICtJdCBhbHNvIHJlbGllcyBvbiBhY2Nlc3MgdG8g c2V2ZXJhbCBtZW1iZXJzIG9mIHRoZSBQR2Nvbm4gc3RydWN0LiBOb3Qgb25seSBjYW4KICAgICAr dGhlc2UgY2hhbmdlIHBvc2l0aW9ucyBhY3Jvc3MgbWlub3IgdmVyc2lvbnMsIGJ1dCB0aGUgb2Zm c2V0cyBhcmVuJ3QgbmVjZXNzYXJpbHkKICAgICArc3RhYmxlIHdpdGhpbiBhIHNpbmdsZSBtaW5v ciByZWxlYXNlIChjb25uLT5lcnJvck1lc3NhZ2UsIGZvciBpbnN0YW5jZSwgY2FuCiAgICBAQCBz cmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLWN1cmwuYyA9PiBzcmMvaW50ZXJmYWNl cy9saWJwcS1vYXV0aC9vYXV0aC1jdQogICAgICsjZGVmaW5lIHNldF9jb25uX2FsdHNvY2soQ09O TiwgVkFMKSBkbyB7IENPTk4tPmFsdHNvY2sgPSBWQUw7IH0gd2hpbGUgKDApCiAgICAgKyNkZWZp bmUgc2V0X2Nvbm5fb2F1dGhfdG9rZW4oQ09OTiwgVkFMKSBkbyB7IENPTk4tPm9hdXRoX3Rva2Vu ID0gVkFMOyB9IHdoaWxlICgwKQogICAgICsKICAgIC0rI2VuZGlmCQkJCQkJCS8qICFVU0VfRFlO QU1JQ19PQVVUSCAqLwogICAgKysjZW5kaWYJCQkJCQkJLyogVVNFX0RZTkFNSUNfT0FVVEggKi8K ICAgICArCiAgICAgKy8qIE9uZSBmaW5hbCBndWFyZHJhaWwgYWdhaW5zdCBhY2NpZGVudGFsIGlu Y2x1c2lvbi4uLiAqLwogICAgICsjaWYgZGVmaW5lZChVU0VfRFlOQU1JQ19PQVVUSCkgJiYgZGVm aW5lZChMSUJQUV9JTlRfSCkKICAgIC0rI2Vycm9yIGRvIG5vdCByZWx5IG9uIGxpYnBxLWludC5o IGluIGxpYnBxLW9hdXRoLnNvCiAgICArKyNlcnJvciBkbyBub3QgcmVseSBvbiBsaWJwcS1pbnQu aCBpbiBkeW5hbWljIGJ1aWxkcyBvZiBsaWJwcS1vYXV0aAogICAgICsjZW5kaWYKICAgICAgCiAg ICAgIC8qCiAgICBAQCBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11dGlscy5jIChu ZXcpCiAgICAgKyNlbmRpZgogICAgICsKICAgICArI2lmZGVmIExJQlBRX0lOVF9ICiAgICAtKyNl cnJvciBkbyBub3QgcmVseSBvbiBsaWJwcS1pbnQuaCBpbiBsaWJwcS1vYXV0aAogICAgKysjZXJy b3IgZG8gbm90IHJlbHkgb24gbGlicHEtaW50LmggaW4gZHluYW1pYyBidWlsZHMgb2YgbGlicHEt b2F1dGgKICAgICArI2VuZGlmCiAgICAgKwogICAgICsvKgo= --0000000000003853ec063402afc2 Content-Type: application/octet-stream; name="v11-0001-oauth-Move-the-builtin-flow-into-a-separate-modu.patch" Content-Disposition: attachment; filename="v11-0001-oauth-Move-the-builtin-flow-into-a-separate-modu.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ma48n7201 RnJvbSA1YTFkMTM0NTkxOTc2ZGRiMjM1YWE0YzA3N2IyZWE2MjNmMzY4ZjBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAyNiBNYXIgMjAyNSAxMDo1NToyOCAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjExXSBvYXV0aDogTW92ZSB0aGUgYnVpbHRpbiBmbG93IGludG8gYSBzZXBhcmF0 ZSBtb2R1bGUKClRoZSBhZGRpdGlvbmFsIHBhY2thZ2luZyBmb290cHJpbnQgb2YgdGhlIE9BdXRo IEN1cmwgZGVwZW5kZW5jeSwgYXMgd2VsbAphcyB0aGUgZXhpc3RlbmNlIG9mIGxpYmN1cmwgaW4g dGhlIGFkZHJlc3Mgc3BhY2UgZXZlbiBpZiBPQXV0aCBpc24ndApldmVyIHVzZWQgYnkgYSBjbGll bnQsIGhhcyByYWlzZWQgc29tZSBjb25jZXJucy4gU3BsaXQgb2ZmIHRoaXMKZGVwZW5kZW5jeSBp bnRvIGEgc2VwYXJhdGUgbG9hZGFibGUgbW9kdWxlIGNhbGxlZCBsaWJwcS1vYXV0aC4KCldoZW4g Y29uZmlndXJlZCB1c2luZyAtLXdpdGgtbGliY3VybCwgbGlicHEuc28gc2VhcmNoZXMgZm9yIHRo aXMgbmV3Cm1vZHVsZSB2aWEgZGxvcGVuKCkuIEVuZCB1c2VycyBtYXkgY2hvb3NlIG5vdCB0byBp bnN0YWxsIHRoZSBsaWJwcS1vYXV0aAptb2R1bGUsIGluIHdoaWNoIGNhc2UgdGhlIGRlZmF1bHQg ZmxvdyBpcyBkaXNhYmxlZC4KCkZvciBzdGF0aWMgYXBwbGljYXRpb25zIHVzaW5nIGxpYnBxLmEs IHRoZSBsaWJwcS1vYXV0aCBzdGF0aWNsaWIgaXMgYQptYW5kYXRvcnkgbGluay10aW1lIGRlcGVu ZGVuY3kgZm9yIC0td2l0aC1saWJjdXJsIGJ1aWxkcy4gbGlicHEucGMgaGFzCmJlZW4gdXBkYXRl ZCBhY2NvcmRpbmdseS4KClRoZSBkZWZhdWx0IGZsb3cgcmVsaWVzIG9uIHNvbWUgbGlicHEgaW50 ZXJuYWxzLiBTb21lIG9mIHRoZXNlIGNhbiBiZQpzYWZlbHkgZHVwbGljYXRlZCAoc3VjaCBhcyB0 aGUgU0lHUElQRSBoYW5kbGVycyksIGJ1dCBvdGhlcnMgbmVlZCB0byBiZQpzaGFyZWQgYmV0d2Vl biBsaWJwcSBhbmQgbGlicHEtb2F1dGggZm9yIHRocmVhZC1zYWZldHkuIFRvIGF2b2lkCmV4cG9y dGluZyB0aGVzZSBpbnRlcm5hbHMgdG8gYWxsIGxpYnBxIGNsaWVudHMgZm9yZXZlciwgdGhlc2UK ZGVwZW5kZW5jaWVzIGFyZSBpbnN0ZWFkIGluamVjdGVkIGZyb20gdGhlIGxpYnBxIHNpZGUgdmlh IGFuCmluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiBUaGlzIGFsc28gbGV0cyBsaWJwcSBjb21tdW5p Y2F0ZSB0aGUgb2Zmc2V0cyBvZgpQR2Nvbm4gc3RydWN0IG1lbWJlcnMgdG8gbGlicHEtb2F1dGgs IHNvIHRoYXQgd2UgY2FuIGZ1bmN0aW9uIHdpdGhvdXQKY3Jhc2hpbmcgaWYgdGhlIG1vZHVsZSBv biB0aGUgc2VhcmNoIHBhdGggY2FtZSBmcm9tIGEgZGlmZmVyZW50IGJ1aWxkIG9mClBvc3RncmVz LiAoQSBtaW5vci12ZXJzaW9uIHVwZ3JhZGUgY291bGQgc3dhcCB0aGUgbGlicHEtb2F1dGggbW9k dWxlIG91dApmcm9tIHVuZGVyIGEgbG9uZy1ydW5uaW5nIGxpYnBxIGNsaWVudCBiZWZvcmUgaXQg ZG9lcyBpdHMgZmlyc3QgbG9hZCBvZgp0aGUgT0F1dGggZmxvdy4pCgpUaGlzIEFCSSBpcyBjb25z aWRlcmVkICJwcml2YXRlIi4gVGhlIG1vZHVsZSBoYXMgbm8gU09OQU1FIG9yIHZlcnNpb24Kc3lt bGlua3MsIGFuZCBpdCdzIG5hbWVkIGxpYnBxLW9hdXRoLTxtYWpvcj4uc28gdG8gYXZvaWQgbWl4 aW5nIGFuZAptYXRjaGluZyBhY3Jvc3MgUG9zdGdyZXMgdmVyc2lvbnMuIChGdXR1cmUgaW1wcm92 ZW1lbnRzIG1heSBwcm9tb3RlIHRoaXMKIk9BdXRoIGZsb3cgcGx1Z2luIiB0byBhIGZpcnN0LWNs YXNzIGNvbmNlcHQsIGF0IHdoaWNoIHBvaW50IHdlIHdvdWxkCm5lZWQgYSBwdWJsaWMgQVBJIHRv IHJlcGxhY2UgdGhpcyBhbnl3YXkuKQoKQWRkaXRpb25hbGx5LCBOTFMgc3VwcG9ydCBmb3IgZXJy b3IgbWVzc2FnZXMgaW4gYjNmMGJlNzg4YSB3YXMKaW5jb21wbGV0ZSwgYmVjYXVzZSB0aGUgbmV3 IGVycm9yIG1hY3JvcyB3ZXJlbid0IGJlaW5nIHNjYW5uZWQgYnkKeGdldHRleHQuIEZpeCB0aGF0 IG5vdy4KClBlciByZXF1ZXN0IGZyb20gVG9tIExhbmUgYW5kIEJydWNlIE1vbWppYW4uIEJhc2Vk IG9uIGFuIGluaXRpYWwgcGF0Y2gKYnkgRGFuaWVsIEd1c3RhZnNzb24sIHdobyBhbHNvIGNvbnRy aWJ1dGVkIGRvY3MgY2hhbmdlcy4gVGhlICJiYXJlIgpkbG9wZW4oKSBjb25jZXB0IGNhbWUgZnJv bSBUaG9tYXMgTXVucm8uIE1hbnkgcGVvcGxlIHJldmlld2VkIHRoZSBkZXNpZ24KYW5kIGltcGxl bWVudGF0aW9uOyB0aGFuayB5b3UhCgpDby1hdXRob3JlZC1ieTogRGFuaWVsIEd1c3RhZnNzb24g PGRhbmllbEB5ZXNxbC5zZT4KUmV2aWV3ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFy YXplbC5kZT4KUmV2aWV3ZWQtYnk6IENocmlzdG9waCBCZXJnIDxteW9uQGRlYmlhbi5vcmc+ClJl dmlld2VkLWJ5OiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpSZXZpZXdlZC1i eTogSmVsdGUgRmVubmVtYS1OaW8gPHBvc3RncmVzQGplbHRlZi5ubD4KUmV2aWV3ZWQtYnk6IFBl dGVyIEVpc2VudHJhdXQgPHBldGVyQGVpc2VudHJhdXQub3JnPgpSZXZpZXdlZC1ieTogV29sZmdh bmcgV2FsdGhlciA8d2FsdGhlckB0ZWNobm93bGVkZ3kuZGU+CkRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vNjQxNjg3LjE3NDIzNjAyNDklNDBzc3MucGdoLnBhLnVzCi0tLQogY29uZmln L3Byb2dyYW1zLm00ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE3ICstCiBjb25maWd1 cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTAgKysrLQogY29uZmln dXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDI2ICstCiBkb2Mvc3Jj L3NnbWwvaW5zdGFsbGF0aW9uLnNnbWwgICAgICAgICAgICAgICAgfCAgIDggKwogZG9jL3NyYy9z Z21sL2xpYnBxLnNnbWwgICAgICAgICAgICAgICAgICAgICAgIHwgIDMwICsrLQogbWVzb24uYnVp bGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMyICsrLQogc3JjL01ha2Vm aWxlLmdsb2JhbC5pbiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9pbnRlcmZh Y2VzL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArCiBzcmMvaW50ZXJmYWNl cy9saWJwcS1vYXV0aC9NYWtlZmlsZSAgICAgICAgICAgfCAgODMgKysrKysrKwogc3JjL2ludGVy ZmFjZXMvbGlicHEtb2F1dGgvUkVBRE1FICAgICAgICAgICAgIHwgIDU3ICsrKysrCiBzcmMvaW50 ZXJmYWNlcy9saWJwcS1vYXV0aC9leHBvcnRzLnR4dCAgICAgICAgfCAgIDQgKwogc3JjL2ludGVy ZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQgICAgICAgIHwgIDQ1ICsrKysKIC4uLi9vYXV0 aC1jdXJsLmN9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE4MCArKysrKysrKy0tLS0t LQogc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5oICAgICAgIHwgIDI0ICsr CiBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11dGlscy5jICAgICAgfCAyMzMgKysr KysrKysrKysrKysrKysrCiBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11dGlscy5o ICAgICAgfCAgOTQgKysrKysrKwogc3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUgICAgICAg ICAgICAgICAgIHwgIDM2ICsrLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGguYyAg ICAgICAgICB8IDIyOSArKysrKysrKysrKysrKysrLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt YXV0aC1vYXV0aC5oICAgICAgICAgIHwgIDEyICstCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNv bi5idWlsZCAgICAgICAgICAgICAgfCAgMjUgKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL25scy5t ayAgICAgICAgICAgICAgICAgICB8ICAxMiArLQogc3JjL21ha2VmaWxlcy9tZXNvbi5idWlsZCAg ICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRh dG9yL21lc29uLmJ1aWxkICB8ICAgMiArLQogLi4uL21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3Qv MDAyX2NsaWVudC5wbCAgIHwgICAyICstCiAyNSBmaWxlcyBjaGFuZ2VkLCAxMDc5IGluc2VydGlv bnMoKyksIDE0MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNl cy9saWJwcS1vYXV0aC9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2Vz L2xpYnBxLW9hdXRoL1JFQURNRQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2xp YnBxLW9hdXRoL2V4cG9ydHMudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2ludGVyZmFjZXMv bGlicHEtb2F1dGgvbWVzb24uYnVpbGQKIHJlbmFtZSBzcmMvaW50ZXJmYWNlcy97bGlicHEvZmUt YXV0aC1vYXV0aC1jdXJsLmMgPT4gbGlicHEtb2F1dGgvb2F1dGgtY3VybC5jfSAoOTQlKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxz LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC11 dGlscy5oCgpkaWZmIC0tZ2l0IGEvY29uZmlnL3Byb2dyYW1zLm00IGIvY29uZmlnL3Byb2dyYW1z Lm00CmluZGV4IDBhMDdmZWIzN2NjLi4wYWQxZTU4YjQ4ZCAxMDA2NDQKLS0tIGEvY29uZmlnL3By b2dyYW1zLm00CisrKyBiL2NvbmZpZy9wcm9ncmFtcy5tNApAQCAtMjg2LDkgKzI4NiwyMCBAQCBB Q19ERUZVTihbUEdBQ19DSEVDS19MSUJDVVJMXSwKIFsKICAgQUNfQ0hFQ0tfSEVBREVSKGN1cmwv Y3VybC5oLCBbXSwKIAkJCQkgIFtBQ19NU0dfRVJST1IoW2hlYWRlciBmaWxlIDxjdXJsL2N1cmwu aD4gaXMgcmVxdWlyZWQgZm9yIC0td2l0aC1saWJjdXJsXSldKQotICBBQ19DSEVDS19MSUIoY3Vy bCwgY3VybF9tdWx0aV9pbml0LCBbXSwKKyAgQUNfQ0hFQ0tfTElCKGN1cmwsIGN1cmxfbXVsdGlf aW5pdCwgWworCQkJCSBBQ19ERUZJTkUoW0hBVkVfTElCQ1VSTF0sIFsxXSwgW0RlZmluZSB0byAx IGlmIHlvdSBoYXZlIHRoZSBgY3VybCcgbGlicmFyeSAoLWxjdXJsKS5dKQorCQkJCSBBQ19TVUJT VChMSUJDVVJMX0xETElCUywgLWxjdXJsKQorCQkJICAgXSwKIAkJCSAgIFtBQ19NU0dfRVJST1Io W2xpYnJhcnkgJ2N1cmwnIGRvZXMgbm90IHByb3ZpZGUgY3VybF9tdWx0aV9pbml0XSldKQogCisg IHBnYWNfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKKyAgcGdhY19zYXZlX0xERkxBR1M9JExERkxB R1MKKyAgcGdhY19zYXZlX0xJQlM9JExJQlMKKworICBDUFBGTEFHUz0iJExJQkNVUkxfQ1BQRkxB R1MgJENQUEZMQUdTIgorICBMREZMQUdTPSIkTElCQ1VSTF9MREZMQUdTICRMREZMQUdTIgorICBM SUJTPSIkTElCQ1VSTF9MRExJQlMgJExJQlMiCisKICAgIyBDaGVjayB0byBzZWUgd2hldGhlciB0 aGUgY3VycmVudCBwbGF0Zm9ybSBzdXBwb3J0cyB0aHJlYWRzYWZlIEN1cmwKICAgIyBpbml0aWFs aXphdGlvbi4KICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBjdXJsX2dsb2JhbF9pbml0IHRocmVhZCBz YWZldHldLCBbcGdhY19jdl9fbGliY3VybF90aHJlYWRzYWZlX2luaXRdLApAQCAtMzM4LDQgKzM0 OSw4IEBAIEFDX0RFRlVOKFtQR0FDX0NIRUNLX0xJQkNVUkxdLAogKioqIGxvb2t1cHMuIFJlYnVp bGQgbGliY3VybCB3aXRoIHRoZSBBc3luY2hETlMgZmVhdHVyZSBlbmFibGVkIGluIG9yZGVyCiAq KiogdG8gdXNlIGl0IHdpdGggbGlicHEuXSkKICAgZmkKKworICBDUFBGTEFHUz0kcGdhY19zYXZl X0NQUEZMQUdTCisgIExERkxBR1M9JHBnYWNfc2F2ZV9MREZMQUdTCisgIExJQlM9JHBnYWNfc2F2 ZV9MSUJTCiBdKSMgUEdBQ19DSEVDS19MSUJDVVJMCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9j b25maWd1cmUKaW5kZXggMDkzNjAxMDcxOGQuLmE0YzRiY2I0MGVhIDEwMDc1NQotLS0gYS9jb25m aWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC02NTUsNiArNjU1LDcgQEAgVVVJRF9MSUJTCiBMREFQ X0xJQlNfQkUKIExEQVBfTElCU19GRQogd2l0aF9zc2wKK0xJQkNVUkxfTERMSUJTCiBQVEhSRUFE X0NGTEFHUwogUFRIUkVBRF9MSUJTCiBQVEhSRUFEX0NDCkBAIC03MTEsNiArNzEyLDggQEAgd2l0 aF9saWJ4bWwKIExJQk5VTUFfTElCUwogTElCTlVNQV9DRkxBR1MKIHdpdGhfbGlibnVtYQorTElC Q1VSTF9MREZMQUdTCitMSUJDVVJMX0NQUEZMQUdTCiBMSUJDVVJMX0xJQlMKIExJQkNVUkxfQ0ZM QUdTCiB3aXRoX2xpYmN1cmwKQEAgLTkwNTMsMTkgKzkwNTYsMjcgQEAgJGFzX2VjaG8gInllcyIg PiY2OyB9CiAKIGZpCiAKLSAgIyBXZSBvbmx5IGNhcmUgYWJvdXQgLUksIC1ELCBhbmQgLUwgc3dp dGNoZXM7Ci0gICMgbm90ZSB0aGF0IC1sY3VybCB3aWxsIGJlIGFkZGVkIGJ5IFBHQUNfQ0hFQ0tf TElCQ1VSTCBiZWxvdy4KKyAgIyBDdXJsJ3MgZmxhZ3MgYXJlIGtlcHQgc2VwYXJhdGUgZnJvbSB0 aGUgc3RhbmRhcmQgQ1BQRkxBR1MvTERGTEFHUy4gV2UgdXNlCisgICMgdGhlbSBvbmx5IGZvciBs aWJwcS1vYXV0aC4KKyAgTElCQ1VSTF9DUFBGTEFHUz0KKyAgTElCQ1VSTF9MREZMQUdTPQorCisg ICMgV2Ugb25seSBjYXJlIGFib3V0IC1JLCAtRCwgYW5kIC1MIHN3aXRjaGVzLiBOb3RlIHRoYXQg LWxjdXJsIHdpbGwgYmUgYWRkZWQKKyAgIyB0byBMSUJDVVJMX0xETElCUyBieSBQR0FDX0NIRUNL X0xJQkNVUkwsIGJlbG93LgogICBmb3IgcGdhY19vcHRpb24gaW4gJExJQkNVUkxfQ0ZMQUdTOyBk bwogICAgIGNhc2UgJHBnYWNfb3B0aW9uIGluCi0gICAgICAtSSp8LUQqKSBDUFBGTEFHUz0iJENQ UEZMQUdTICRwZ2FjX29wdGlvbiI7OworICAgICAgLUkqfC1EKikgTElCQ1VSTF9DUFBGTEFHUz0i JExJQkNVUkxfQ1BQRkxBR1MgJHBnYWNfb3B0aW9uIjs7CiAgICAgZXNhYwogICBkb25lCiAgIGZv ciBwZ2FjX29wdGlvbiBpbiAkTElCQ1VSTF9MSUJTOyBkbwogICAgIGNhc2UgJHBnYWNfb3B0aW9u IGluCi0gICAgICAtTCopIExERkxBR1M9IiRMREZMQUdTICRwZ2FjX29wdGlvbiI7OworICAgICAg LUwqKSBMSUJDVVJMX0xERkxBR1M9IiRMSUJDVVJMX0xERkxBR1MgJHBnYWNfb3B0aW9uIjs7CiAg ICAgZXNhYwogICBkb25lCiAKKworCisKICAgIyBPQXV0aCByZXF1aXJlcyBweXRob24gZm9yIHRl c3RpbmcKICAgaWYgdGVzdCAiJHdpdGhfcHl0aG9uIiAhPSB5ZXM7IHRoZW4KICAgICB7ICRhc19l Y2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICoqKiBPQXV0aCBzdXBw b3J0IHRlc3RzIHJlcXVpcmUgLS13aXRoLXB5dGhvbiB0byBydW4iID4mNQpAQCAtMTI3MDQsOSAr MTI3MTUsNiBAQCBmaQogCiBmaQogCi0jIFhYWCBsaWJjdXJsIG11c3QgbGluayBhZnRlciBsaWJn c3NhcGlfa3JiNSBvbiBGcmVlQlNEIHRvIGF2b2lkIHNlZ2ZhdWx0cwotIyBkdXJpbmcgZ3NzX2Fj cXVpcmVfY3JlZCgpLiBUaGlzIGlzIHBvc3NpYmx5IHJlbGF0ZWQgdG8gQ3VybCdzIEhlaW1kYWwK LSMgZGVwZW5kZW5jeSBvbiB0aGF0IHBsYXRmb3JtPwogaWYgdGVzdCAiJHdpdGhfbGliY3VybCIg PSB5ZXMgOyB0aGVuCiAKICAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIg ImN1cmwvY3VybC5oIiAiYWNfY3ZfaGVhZGVyX2N1cmxfY3VybF9oIiAiJGFjX2luY2x1ZGVzX2Rl ZmF1bHQiCkBAIC0xMjc1NCwxNyArMTI3NjIsMjYgQEAgZmkKIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2N1cmxfY3VybF9tdWx0aV9p bml0IiA+JjUKICRhc19lY2hvICIkYWNfY3ZfbGliX2N1cmxfY3VybF9tdWx0aV9pbml0IiA+JjY7 IH0KIGlmIHRlc3QgIngkYWNfY3ZfbGliX2N1cmxfY3VybF9tdWx0aV9pbml0IiA9IHh5ZXM7IHRo ZW4gOgotICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIEhBVkVfTElCQ1VSTCAx Ci1fQUNFT0YKIAotICBMSUJTPSItbGN1cmwgJExJQlMiCisKKyRhc19lY2hvICIjZGVmaW5lIEhB VkVfTElCQ1VSTCAxIiA+PmNvbmZkZWZzLmgKKworCQkJCSBMSUJDVVJMX0xETElCUz0tbGN1cmwK KwogCiBlbHNlCiAgIGFzX2ZuX2Vycm9yICQ/ICJsaWJyYXJ5ICdjdXJsJyBkb2VzIG5vdCBwcm92 aWRlIGN1cmxfbXVsdGlfaW5pdCIgIiRMSU5FTk8iIDUKIGZpCiAKIAorICBwZ2FjX3NhdmVfQ1BQ RkxBR1M9JENQUEZMQUdTCisgIHBnYWNfc2F2ZV9MREZMQUdTPSRMREZMQUdTCisgIHBnYWNfc2F2 ZV9MSUJTPSRMSUJTCisKKyAgQ1BQRkxBR1M9IiRMSUJDVVJMX0NQUEZMQUdTICRDUFBGTEFHUyIK KyAgTERGTEFHUz0iJExJQkNVUkxfTERGTEFHUyAkTERGTEFHUyIKKyAgTElCUz0iJExJQkNVUkxf TERMSUJTICRMSUJTIgorCiAgICMgQ2hlY2sgdG8gc2VlIHdoZXRoZXIgdGhlIGN1cnJlbnQgcGxh dGZvcm0gc3VwcG9ydHMgdGhyZWFkc2FmZSBDdXJsCiAgICMgaW5pdGlhbGl6YXRpb24uCiAgIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGN1cmxf Z2xvYmFsX2luaXQgdGhyZWFkIHNhZmV0eSIgPiY1CkBAIC0xMjg2OCw2ICsxMjg4NSwxMCBAQCAk YXNfZWNobyAiJHBnYWNfY3ZfX2xpYmN1cmxfYXN5bmNfZG5zIiA+JjY7IH0KICoqKiB0byB1c2Ug aXQgd2l0aCBsaWJwcS4iICIkTElORU5PIiA1CiAgIGZpCiAKKyAgQ1BQRkxBR1M9JHBnYWNfc2F2 ZV9DUFBGTEFHUworICBMREZMQUdTPSRwZ2FjX3NhdmVfTERGTEFHUworICBMSUJTPSRwZ2FjX3Nh dmVfTElCUworCiBmaQogCiBpZiB0ZXN0ICIkd2l0aF9nc3NhcGkiID0geWVzIDsgdGhlbgpAQCAt MTQ1MTYsNiArMTQ1MzcsMTMgQEAgZG9uZQogCiBmaQogCitpZiB0ZXN0ICIkd2l0aF9saWJjdXJs IiA9IHllcyA7IHRoZW4KKyAgIyBFcnJvciBvdXQgZWFybHkgaWYgdGhpcyBwbGF0Zm9ybSBjYW4n dCBzdXBwb3J0IGxpYnBxLW9hdXRoLgorICBpZiB0ZXN0ICIkYWNfY3ZfaGVhZGVyX3N5c19ldmVu dF9oIiAhPSB5ZXMgLWEgIiRhY19jdl9oZWFkZXJfc3lzX2Vwb2xsX2giICE9IHllczsgdGhlbgor ICAgIGFzX2ZuX2Vycm9yICQ/ICJjbGllbnQgT0F1dGggaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlz IHBsYXRmb3JtIiAiJExJTkVOTyIgNQorICBmaQorZmkKKwogIyMKICMjIFR5cGVzLCBzdHJ1Y3R1 cmVzLCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MKICMjCmRpZmYgLS1naXQgYS9jb25maWd1cmUu YWMgYi9jb25maWd1cmUuYWMKaW5kZXggMmE3OGNkZGQ4MjUuLmMwNDcxMDMwZTkwIDEwMDY0NAot LS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0xMDMzLDE5ICsxMDMzLDI3 IEBAIGlmIHRlc3QgIiR3aXRoX2xpYmN1cmwiID0geWVzIDsgdGhlbgogICAjIHRvIGV4cGxpY2l0 bHkgc2V0IFRMUyAxLjMgY2lwaGVyc3VpdGVzKS4KICAgUEtHX0NIRUNLX01PRFVMRVMoTElCQ1VS TCwgW2xpYmN1cmwgPj0gNy42MS4wXSkKIAotICAjIFdlIG9ubHkgY2FyZSBhYm91dCAtSSwgLUQs IGFuZCAtTCBzd2l0Y2hlczsKLSAgIyBub3RlIHRoYXQgLWxjdXJsIHdpbGwgYmUgYWRkZWQgYnkg UEdBQ19DSEVDS19MSUJDVVJMIGJlbG93LgorICAjIEN1cmwncyBmbGFncyBhcmUga2VwdCBzZXBh cmF0ZSBmcm9tIHRoZSBzdGFuZGFyZCBDUFBGTEFHUy9MREZMQUdTLiBXZSB1c2UKKyAgIyB0aGVt IG9ubHkgZm9yIGxpYnBxLW9hdXRoLgorICBMSUJDVVJMX0NQUEZMQUdTPQorICBMSUJDVVJMX0xE RkxBR1M9CisKKyAgIyBXZSBvbmx5IGNhcmUgYWJvdXQgLUksIC1ELCBhbmQgLUwgc3dpdGNoZXMu IE5vdGUgdGhhdCAtbGN1cmwgd2lsbCBiZSBhZGRlZAorICAjIHRvIExJQkNVUkxfTERMSUJTIGJ5 IFBHQUNfQ0hFQ0tfTElCQ1VSTCwgYmVsb3cuCiAgIGZvciBwZ2FjX29wdGlvbiBpbiAkTElCQ1VS TF9DRkxBR1M7IGRvCiAgICAgY2FzZSAkcGdhY19vcHRpb24gaW4KLSAgICAgIC1JKnwtRCopIENQ UEZMQUdTPSIkQ1BQRkxBR1MgJHBnYWNfb3B0aW9uIjs7CisgICAgICAtSSp8LUQqKSBMSUJDVVJM X0NQUEZMQUdTPSIkTElCQ1VSTF9DUFBGTEFHUyAkcGdhY19vcHRpb24iOzsKICAgICBlc2FjCiAg IGRvbmUKICAgZm9yIHBnYWNfb3B0aW9uIGluICRMSUJDVVJMX0xJQlM7IGRvCiAgICAgY2FzZSAk cGdhY19vcHRpb24gaW4KLSAgICAgIC1MKikgTERGTEFHUz0iJExERkxBR1MgJHBnYWNfb3B0aW9u Ijs7CisgICAgICAtTCopIExJQkNVUkxfTERGTEFHUz0iJExJQkNVUkxfTERGTEFHUyAkcGdhY19v cHRpb24iOzsKICAgICBlc2FjCiAgIGRvbmUKIAorICBBQ19TVUJTVChMSUJDVVJMX0NQUEZMQUdT KQorICBBQ19TVUJTVChMSUJDVVJMX0xERkxBR1MpCisKICAgIyBPQXV0aCByZXF1aXJlcyBweXRo b24gZm9yIHRlc3RpbmcKICAgaWYgdGVzdCAiJHdpdGhfcHl0aG9uIiAhPSB5ZXM7IHRoZW4KICAg ICBBQ19NU0dfV0FSTihbKioqIE9BdXRoIHN1cHBvcnQgdGVzdHMgcmVxdWlyZSAtLXdpdGgtcHl0 aG9uIHRvIHJ1bl0pCkBAIC0xMzU0LDkgKzEzNjIsNiBAQCBmYWlsdXJlLiAgSXQgaXMgcG9zc2li bGUgdGhlIGNvbXBpbGVyIGlzbid0IGxvb2tpbmcgaW4gdGhlIHByb3BlciBkaXJlY3RvcnkuCiBV c2UgLS13aXRob3V0LXpsaWIgdG8gZGlzYWJsZSB6bGliIHN1cHBvcnQuXSldKQogZmkKIAotIyBY WFggbGliY3VybCBtdXN0IGxpbmsgYWZ0ZXIgbGliZ3NzYXBpX2tyYjUgb24gRnJlZUJTRCB0byBh dm9pZCBzZWdmYXVsdHMKLSMgZHVyaW5nIGdzc19hY3F1aXJlX2NyZWQoKS4gVGhpcyBpcyBwb3Nz aWJseSByZWxhdGVkIHRvIEN1cmwncyBIZWltZGFsCi0jIGRlcGVuZGVuY3kgb24gdGhhdCBwbGF0 Zm9ybT8KIGlmIHRlc3QgIiR3aXRoX2xpYmN1cmwiID0geWVzIDsgdGhlbgogICBQR0FDX0NIRUNL X0xJQkNVUkwKIGZpCkBAIC0xNjU0LDYgKzE2NTksMTMgQEAgaWYgdGVzdCAiJFBPUlROQU1FIiA9 ICJ3aW4zMiIgOyB0aGVuCiAgICBBQ19DSEVDS19IRUFERVJTKGNydGRlZnMuaCkKIGZpCiAKK2lm IHRlc3QgIiR3aXRoX2xpYmN1cmwiID0geWVzIDsgdGhlbgorICAjIEVycm9yIG91dCBlYXJseSBp ZiB0aGlzIHBsYXRmb3JtIGNhbid0IHN1cHBvcnQgbGlicHEtb2F1dGguCisgIGlmIHRlc3QgIiRh Y19jdl9oZWFkZXJfc3lzX2V2ZW50X2giICE9IHllcyAtYSAiJGFjX2N2X2hlYWRlcl9zeXNfZXBv bGxfaCIgIT0geWVzOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFtjbGllbnQtc2lkZSBPQXV0aCBp cyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm1dKQorICBmaQorZmkKKwogIyMKICMjIFR5 cGVzLCBzdHJ1Y3R1cmVzLCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MKICMjCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvaW5zdGFsbGF0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvaW5zdGFsbGF0 aW9uLnNnbWwKaW5kZXggZTdmZmI5NDJiYmQuLjYwNDE5MzEyMTEzIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvaW5zdGFsbGF0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2luc3RhbGxhdGlv bi5zZ21sCkBAIC0zMTMsNiArMzEzLDE0IEBACiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVt PgogCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFlvdSBuZWVkIDxwcm9kdWN0 bmFtZT5DdXJsPC9wcm9kdWN0bmFtZT4gdG8gYnVpbGQgYW4gb3B0aW9uYWwgbW9kdWxlCisgICAg ICB3aGljaCBpbXBsZW1lbnRzIHRoZSA8bGluayBsaW5rZW5kPSJsaWJwcS1vYXV0aCI+T0F1dGgg RGV2aWNlCisgICAgICBBdXRob3JpemF0aW9uIGZsb3c8L2xpbms+IGZvciBjbGllbnQgYXBwbGlj YXRpb25zLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKwogICAgIDxsaXN0aXRlbT4K ICAgICAgPHBhcmE+CiAgICAgICBZb3UgbmVlZCA8cHJvZHVjdG5hbWU+TFo0PC9wcm9kdWN0bmFt ZT4sIGlmIHlvdSB3YW50IHRvIHN1cHBvcnQKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9saWJw cS5zZ21sIGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKaW5kZXggOGNkZDI5OTdkNDMuLjY5NWZl OTU4YzNlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvbGlicHEuc2dtbApAQCAtMTAyMjYsMTUgKzEwMjI2LDIwIEBAIHZvaWQgUFFpbml0U1NM KGludCBkb19zc2wpOwogICA8dGl0bGU+T0F1dGggU3VwcG9ydDwvdGl0bGU+CiAKICAgPHBhcmE+ Ci0gICBsaWJwcSBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIHRoZSBPQXV0aCB2MiBEZXZpY2UgQXV0 aG9yaXphdGlvbiBjbGllbnQgZmxvdywKKyAgIDxhcHBsaWNhdGlvbj5saWJwcTwvYXBwbGljYXRp b24+IGltcGxlbWVudHMgc3VwcG9ydCBmb3IgdGhlIE9BdXRoIHYyIERldmljZSBBdXRob3JpemF0 aW9uIGNsaWVudCBmbG93LAogICAgZG9jdW1lbnRlZCBpbgogICAgPHVsaW5rIHVybD0iaHR0cHM6 Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM4NjI4Ij5SRkMgODYyODwvdWxpbms+ LAotICAgd2hpY2ggaXQgd2lsbCBhdHRlbXB0IHRvIHVzZSBieSBkZWZhdWx0IGlmIHRoZSBzZXJ2 ZXIKKyAgIGFzIGFuIG9wdGlvbmFsIG1vZHVsZS4gU2VlIHRoZSA8bGluayBsaW5rZW5kPSJjb25m aWd1cmUtb3B0aW9uLXdpdGgtbGliY3VybCI+CisgICBpbnN0YWxsYXRpb24gZG9jdW1lbnRhdGlv bjwvbGluaz4gZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBlbmFibGUgc3VwcG9ydAorICAgZm9y IERldmljZSBBdXRob3JpemF0aW9uIGFzIGEgYnVpbHRpbiBmbG93LgorICA8L3BhcmE+CisgIDxw YXJhPgorICAgV2hlbiBzdXBwb3J0IGlzIGVuYWJsZWQgYW5kIHRoZSBvcHRpb25hbCBtb2R1bGUg aW5zdGFsbGVkLCA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9uPgorICAgd2lsbCB1c2Ug dGhlIGJ1aWx0aW4gZmxvdyBieSBkZWZhdWx0IGlmIHRoZSBzZXJ2ZXIKICAgIDxsaW5rIGxpbmtl bmQ9ImF1dGgtb2F1dGgiPnJlcXVlc3RzIGEgYmVhcmVyIHRva2VuPC9saW5rPiBkdXJpbmcKICAg IGF1dGhlbnRpY2F0aW9uLiBUaGlzIGZsb3cgY2FuIGJlIHV0aWxpemVkIGV2ZW4gaWYgdGhlIHN5 c3RlbSBydW5uaW5nIHRoZQogICAgY2xpZW50IGFwcGxpY2F0aW9uIGRvZXMgbm90IGhhdmUgYSB1 c2FibGUgd2ViIGJyb3dzZXIsIGZvciBleGFtcGxlIHdoZW4KLSAgIHJ1bm5pbmcgYSBjbGllbnQg dmlhIDxhcHBsaWNhdGlvbj5TU0g8L2FwcGxpY2F0aW9uPi4gQ2xpZW50IGFwcGxpY2F0aW9ucyBt YXkgaW1wbGVtZW50IHRoZWlyIG93biBmbG93cwotICAgaW5zdGVhZDsgc2VlIDx4cmVmIGxpbmtl bmQ9ImxpYnBxLW9hdXRoLWF1dGhkYXRhLWhvb2tzIi8+LgorICAgcnVubmluZyBhIGNsaWVudCB2 aWEgPGFjcm9ueW0+U1NIPC9hY3JvbnltPi4KICAgPC9wYXJhPgogICA8cGFyYT4KICAgIFRoZSBi dWlsdGluIGZsb3cgd2lsbCwgYnkgZGVmYXVsdCwgcHJpbnQgYSBVUkwgdG8gdmlzaXQgYW5kIGEg dXNlciBjb2RlIHRvCkBAIC0xMDI1MSw2ICsxMDI1NiwxMSBAQCBWaXNpdCBodHRwczovL2V4YW1w bGUuY29tL2RldmljZSBhbmQgZW50ZXIgdGhlIGNvZGU6IEFCQ0QtRUZHSAogICAgdGhleSBtYXRj aCBleHBlY3RhdGlvbnMsIGJlZm9yZSBjb250aW51aW5nLiBQZXJtaXNzaW9ucyBzaG91bGQgbm90 IGJlIGdpdmVuCiAgICB0byB1bnRydXN0ZWQgdGhpcmQgcGFydGllcy4KICAgPC9wYXJhPgorICA8 cGFyYT4KKyAgIENsaWVudCBhcHBsaWNhdGlvbnMgbWF5IGltcGxlbWVudCB0aGVpciBvd24gZmxv d3MgdG8gY3VzdG9taXplIGludGVyYWN0aW9uCisgICBhbmQgaW50ZWdyYXRpb24gd2l0aCBhcHBs aWNhdGlvbnMuIFNlZSA8eHJlZiBsaW5rZW5kPSJsaWJwcS1vYXV0aC1hdXRoZGF0YS1ob29rcyIv PgorICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IGFkZCBhIGN1c3RvbSBmbG93IHRvIDxh cHBsaWNhdGlvbj5saWJwcTwvYXBwbGljYXRpb24+LgorICA8L3BhcmE+CiAgIDxwYXJhPgogICAg Rm9yIGFuIE9BdXRoIGNsaWVudCBmbG93IHRvIGJlIHVzYWJsZSwgdGhlIGNvbm5lY3Rpb24gc3Ry aW5nIG11c3QgYXQgbWluaW11bQogICAgY29udGFpbiA8eHJlZiBsaW5rZW5kPSJsaWJwcS1jb25u ZWN0LW9hdXRoLWlzc3VlciIvPiBhbmQKQEAgLTEwMzY2LDcgKzEwMzc2LDkgQEAgdHlwZWRlZiBz dHJ1Y3QgX1BHcHJvbXB0T0F1dGhEZXZpY2UKIDwvc3lub3BzaXM+CiAgICAgICAgIDwvcGFyYT4K ICAgICAgICAgPHBhcmE+Ci0gICAgICAgICBUaGUgT0F1dGggRGV2aWNlIEF1dGhvcml6YXRpb24g ZmxvdyBpbmNsdWRlZCBpbiA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9uPgorICAgICAg ICAgVGhlIE9BdXRoIERldmljZSBBdXRob3JpemF0aW9uIGZsb3cgd2hpY2gKKyAgICAgICAgIDxs aW5rIGxpbmtlbmQ9ImNvbmZpZ3VyZS1vcHRpb24td2l0aC1saWJjdXJsIj5jYW4gYmUgaW5jbHVk ZWQ8L2xpbms+CisgICAgICAgICBpbiA8YXBwbGljYXRpb24+bGlicHE8L2FwcGxpY2F0aW9uPgog ICAgICAgICAgcmVxdWlyZXMgdGhlIGVuZCB1c2VyIHRvIHZpc2l0IGEgVVJMIHdpdGggYSBicm93 c2VyLCB0aGVuIGVudGVyIGEgY29kZQogICAgICAgICAgd2hpY2ggcGVybWl0cyA8YXBwbGljYXRp b24+bGlicHE8L2FwcGxpY2F0aW9uPiB0byBjb25uZWN0IHRvIHRoZSBzZXJ2ZXIKICAgICAgICAg IG9uIHRoZWlyIGJlaGFsZi4gVGhlIGRlZmF1bHQgcHJvbXB0IHNpbXBseSBwcmludHMgdGhlCkBA IC0xMDM3OCw3ICsxMDM5MCw4IEBAIHR5cGVkZWYgc3RydWN0IF9QR3Byb21wdE9BdXRoRGV2aWNl CiAgICAgICAgICBUaGlzIGNhbGxiYWNrIGlzIG9ubHkgaW52b2tlZCBkdXJpbmcgdGhlIGJ1aWx0 aW4gZGV2aWNlCiAgICAgICAgICBhdXRob3JpemF0aW9uIGZsb3cuIElmIHRoZSBhcHBsaWNhdGlv biBpbnN0YWxscyBhCiAgICAgICAgICA8bGluayBsaW5rZW5kPSJsaWJwcS1vYXV0aC1hdXRoZGF0 YS1vYXV0aC1iZWFyZXItdG9rZW4iPmN1c3RvbSBPQXV0aAotICAgICAgICAgZmxvdzwvbGluaz4s IHRoaXMgYXV0aGRhdGEgdHlwZSB3aWxsIG5vdCBiZSB1c2VkLgorICAgICAgICAgZmxvdzwvbGlu az4sIG9yIDxhcHBsaWNhdGlvbj5saWJwcTwvYXBwbGljYXRpb24+IHdhcyBub3QgYnVpbHQgd2l0 aAorICAgICAgICAgc3VwcG9ydCBmb3IgdGhlIGJ1aWx0aW4gZmxvdywgdGhpcyBhdXRoZGF0YSB0 eXBlIHdpbGwgbm90IGJlIHVzZWQuCiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPHBhcmE+CiAg ICAgICAgICBJZiBhIG5vbi1OVUxMIDxzdHJ1Y3RmaWVsZD52ZXJpZmljYXRpb25fdXJpX2NvbXBs ZXRlPC9zdHJ1Y3RmaWVsZD4gaXMKQEAgLTEwNDAwLDggKzEwNDEzLDkgQEAgdHlwZWRlZiBzdHJ1 Y3QgX1BHcHJvbXB0T0F1dGhEZXZpY2UKICAgICAgICA8L3Rlcm0+CiAgICAgICAgPGxpc3RpdGVt PgogICAgICAgICA8cGFyYT4KLSAgICAgICAgIFJlcGxhY2VzIHRoZSBlbnRpcmUgT0F1dGggZmxv dyB3aXRoIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uLiBUaGUgaG9vawotICAgICAgICAgc2hvdWxk IGVpdGhlciBkaXJlY3RseSByZXR1cm4gYSBCZWFyZXIgdG9rZW4gZm9yIHRoZSBjdXJyZW50Cisg ICAgICAgICBBZGRzIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uIG9mIGEgZmxvdywgcmVwbGFjaW5n IHRoZSBidWlsdGluIGZsb3cgaWYKKyAgICAgICAgIGl0IGlzIDxsaW5rIGxpbmtlbmQ9ImNvbmZp Z3VyZS1vcHRpb24td2l0aC1saWJjdXJsIj5pbnN0YWxsZWQ8L2xpbms+LgorICAgICAgICAgVGhl IGhvb2sgc2hvdWxkIGVpdGhlciBkaXJlY3RseSByZXR1cm4gYSBCZWFyZXIgdG9rZW4gZm9yIHRo ZSBjdXJyZW50CiAgICAgICAgICB1c2VyL2lzc3Vlci9zY29wZSBjb21iaW5hdGlvbiwgaWYgb25l IGlzIGF2YWlsYWJsZSB3aXRob3V0IGJsb2NraW5nLCBvcgogICAgICAgICAgZWxzZSBzZXQgdXAg YW4gYXN5bmNocm9ub3VzIGNhbGxiYWNrIHRvIHJldHJpZXZlIG9uZS4KICAgICAgICAgPC9wYXJh PgpkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAppbmRleCBhMTUxNmU1NDUy OS4uMjlkNDZjOGFkMDEgMTAwNjQ0Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBiL21lc29uLmJ1aWxk CkBAIC0xMDcsNiArMTA3LDcgQEAgb3NfZGVwcyA9IFtdCiBiYWNrZW5kX2JvdGhfZGVwcyA9IFtd CiBiYWNrZW5kX2RlcHMgPSBbXQogbGlicHFfZGVwcyA9IFtdCitsaWJwcV9vYXV0aF9kZXBzID0g W10KIAogcGdfc3lzcm9vdCA9ICcnCiAKQEAgLTg2MCwxMyArODYxLDEzIEBAIGVuZGlmCiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKIAogbGliY3VybG9wdCA9IGdldF9vcHRpb24oJ2xpYmN1cmwnKQorb2F1dGhfZmxvd19zdXBw b3J0ZWQgPSBmYWxzZQorCiBpZiBub3QgbGliY3VybG9wdC5kaXNhYmxlZCgpCiAgICMgQ2hlY2sg Zm9yIGxpYmN1cmwgNy42MS4wIG9yIGhpZ2hlciAoY29ycmVzcG9uZGluZyB0byBSSEVMOCBhbmQg dGhlIGFiaWxpdHkKICAgIyB0byBleHBsaWNpdGx5IHNldCBUTFMgMS4zIGNpcGhlcnN1aXRlcyku CiAgIGxpYmN1cmwgPSBkZXBlbmRlbmN5KCdsaWJjdXJsJywgdmVyc2lvbjogJz49IDcuNjEuMCcs IHJlcXVpcmVkOiBsaWJjdXJsb3B0KQogICBpZiBsaWJjdXJsLmZvdW5kKCkKLSAgICBjZGF0YS5z ZXQoJ1VTRV9MSUJDVVJMJywgMSkKLQogICAgICMgQ2hlY2sgdG8gc2VlIHdoZXRoZXIgdGhlIGN1 cnJlbnQgcGxhdGZvcm0gc3VwcG9ydHMgdGhyZWFkLXNhZmUgQ3VybAogICAgICMgaW5pdGlhbGl6 YXRpb24uCiAgICAgbGliY3VybF90aHJlYWRzYWZlX2luaXQgPSBmYWxzZQpAQCAtOTM4LDYgKzkz OSwyMiBAQCBpZiBub3QgbGliY3VybG9wdC5kaXNhYmxlZCgpCiAgICAgZW5kaWYKICAgZW5kaWYK IAorICAjIENoZWNrIHRoYXQgdGhlIGN1cnJlbnQgcGxhdGZvcm0gc3VwcG9ydHMgb3VyIGJ1aWx0 aW4gZmxvdy4gVGhpcyByZXF1aXJlcworICAjIGxpYmN1cmwgYW5kIG9uZSBvZiBlaXRoZXIgZXBv bGwgb3Iga3F1ZXVlLgorICBvYXV0aF9mbG93X3N1cHBvcnRlZCA9ICgKKyAgICBsaWJjdXJsLmZv dW5kKCkKKyAgICBhbmQgKGNjLmNoZWNrX2hlYWRlcignc3lzL2V2ZW50LmgnLCByZXF1aXJlZDog ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgYXJnczogdGVzdF9jX2FyZ3MsIGluY2x1 ZGVfZGlyZWN0b3JpZXM6IHBvc3RncmVzX2luYykKKyAgICAgICAgIG9yIGNjLmNoZWNrX2hlYWRl cignc3lzL2Vwb2xsLmgnLCByZXF1aXJlZDogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXJnczogdGVzdF9jX2FyZ3MsIGluY2x1ZGVfZGlyZWN0b3JpZXM6IHBvc3RncmVzX2lu YykpCisgICkKKworICBpZiBvYXV0aF9mbG93X3N1cHBvcnRlZAorICAgIGNkYXRhLnNldCgnVVNF X0xJQkNVUkwnLCAxKQorICBlbGlmIGxpYmN1cmxvcHQuZW5hYmxlZCgpCisgICAgZXJyb3IoJ2Ns aWVudC1zaWRlIE9BdXRoIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybScpCisgIGVu ZGlmCisKIGVsc2UKICAgbGliY3VybCA9IG5vdF9mb3VuZF9kZXAKIGVuZGlmCkBAIC0zMjcyLDE3 ICszMjg5LDE4IEBAIGxpYnBxX2RlcHMgKz0gWwogCiAgIGdzc2FwaSwKICAgbGRhcF9yLAotICAj IFhYWCBsaWJjdXJsIG11c3QgbGluayBhZnRlciBsaWJnc3NhcGlfa3JiNSBvbiBGcmVlQlNEIHRv IGF2b2lkIHNlZ2ZhdWx0cwotICAjIGR1cmluZyBnc3NfYWNxdWlyZV9jcmVkKCkuIFRoaXMgaXMg cG9zc2libHkgcmVsYXRlZCB0byBDdXJsJ3MgSGVpbWRhbAotICAjIGRlcGVuZGVuY3kgb24gdGhh dCBwbGF0Zm9ybT8KLSAgbGliY3VybCwKICAgbGliaW50bCwKICAgc3NsLAogXQogCitsaWJwcV9v YXV0aF9kZXBzICs9IFsKKyAgbGliY3VybCwKK10KKwogc3ViZGlyKCdzcmMvaW50ZXJmYWNlcy9s aWJwcScpCi0jIGZlX3V0aWxzIGRlcGVuZHMgb24gbGlicHEKKyMgZmVfdXRpbHMgYW5kIGxpYnBx LW9hdXRoIGRlcGVuZHMgb24gbGlicHEKIHN1YmRpcignc3JjL2ZlX3V0aWxzJykKK3N1YmRpcign c3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgnKQogCiAjIGZvciBmcm9udGVuZCBiaW5hcmllcwog ZnJvbnRlbmRfY29kZSA9IGRlY2xhcmVfZGVwZW5kZW5jeSgKZGlmZiAtLWdpdCBhL3NyYy9NYWtl ZmlsZS5nbG9iYWwuaW4gYi9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluCmluZGV4IDY3MjJmYmRmMzY1 Li4wNDk1MmI1MzNkZSAxMDA2NDQKLS0tIGEvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgorKysgYi9z cmMvTWFrZWZpbGUuZ2xvYmFsLmluCkBAIC0zNDcsNiArMzQ3LDkgQEAgcGVybF9lbWJlZF9sZGZs YWdzCT0gQHBlcmxfZW1iZWRfbGRmbGFnc0AKIAogQVdLCT0gQEFXS0AKIExOX1MJPSBATE5fU0AK K0xJQkNVUkxfQ1BQRkxBR1MgPSBATElCQ1VSTF9DUFBGTEFHU0AKK0xJQkNVUkxfTERGTEFHUyA9 IEBMSUJDVVJMX0xERkxBR1NACitMSUJDVVJMX0xETElCUyA9IEBMSUJDVVJMX0xETElCU0AKIE1T R0ZNVCAgPSBATVNHRk1UQAogTVNHRk1UX0ZMQUdTID0gQE1TR0ZNVF9GTEFHU0AKIE1TR01FUkdF ID0gQE1TR01FUkdFQApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvTWFrZWZpbGUgYi9zcmMv aW50ZXJmYWNlcy9NYWtlZmlsZQppbmRleCA3ZDU2YjI5ZDI4Zi4uZTY4MjJjYWEyMDYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL01ha2VmaWxlCisrKyBiL3NyYy9pbnRlcmZhY2VzL01ha2Vm aWxlCkBAIC0xNCw3ICsxNCwxOSBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZp bGUuZ2xvYmFsCiAKIFNVQkRJUlMgPSBsaWJwcSBlY3BnCiAKK2lmZXEgKCQod2l0aF9saWJjdXJs KSwgeWVzKQorU1VCRElSUyArPSBsaWJwcS1vYXV0aAorZWxzZQorQUxXQVlTX1NVQkRJUlMgKz0g bGlicHEtb2F1dGgKK2VuZGlmCisKICQocmVjdXJzZSkKKyQocmVjdXJzZV9hbHdheXMpCiAKIGFs bC1lY3BnLXJlY3Vyc2U6IGFsbC1saWJwcS1yZWN1cnNlCiBpbnN0YWxsLWVjcGctcmVjdXJzZTog aW5zdGFsbC1saWJwcS1yZWN1cnNlCisKK2lmZXEgKCQod2l0aF9saWJjdXJsKSwgeWVzKQorYWxs LWxpYnBxLW9hdXRoLXJlY3Vyc2U6IGFsbC1saWJwcS1yZWN1cnNlCitpbnN0YWxsLWxpYnBxLW9h dXRoLXJlY3Vyc2U6IGluc3RhbGwtbGlicHEtcmVjdXJzZQorZW5kaWYKZGlmZiAtLWdpdCBhL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL01ha2VmaWxlIGIvc3JjL2ludGVyZmFjZXMvbGlicHEt b2F1dGgvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNl NGIzNDE0MmUwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgv TWFrZWZpbGUKQEAgLTAsMCArMSw4MyBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgTWFrZWZp bGUgZm9yIGxpYnBxLW9hdXRoCisjCisjIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI1 LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorIyBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorIwor IyBzcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9NYWtlZmlsZQorIworIy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKworc3ViZGlyID0gc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgKK3RvcF9idWlsZGRpciA9 IC4uLy4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCisK K1BHRklMRURFU0MgPSAibGlicHEtb2F1dGggLSBkZXZpY2UgYXV0aG9yaXphdGlvbiBPQXV0aCBz dXBwb3J0IgorCisjIFRoaXMgaXMgYW4gaW50ZXJuYWwgbW9kdWxlOyB3ZSBkb24ndCB3YW50IGFu IFNPTkFNRSBhbmQgdGhlcmVmb3JlIGRvIG5vdCBzZXQKKyMgU09fTUFKT1JfVkVSU0lPTi4KK05B TUUgPSBwcS1vYXV0aC0kKE1BSk9SVkVSU0lPTikKKworIyBGb3JjZSB0aGUgbmFtZSAibGlicHEt b2F1dGgiIGZvciBib3RoIHRoZSBzdGF0aWMgYW5kIHNoYXJlZCBsaWJyYXJpZXMuIFRoZQorIyBz dGF0aWNsaWIgZG9lc24ndCBuZWVkIHZlcnNpb24gaW5mb3JtYXRpb24gaW4gaXRzIG5hbWUuCitv dmVycmlkZSBzaGxpYiA6PSBsaWIkKE5BTUUpJChETFNVRkZJWCkKK292ZXJyaWRlIHN0bGliIDo9 IGxpYnBxLW9hdXRoLmEKKworb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkkKGxpYnBxX3NyY2Rpcikg LUkkKHRvcF9idWlsZGRpcikvc3JjL3BvcnQgJChMSUJDVVJMX0NQUEZMQUdTKSAkKENQUEZMQUdT KQorCitPQkpTID0gXAorCSQoV0lOMzJSRVMpCisKK09CSlNfU1RBVElDID0gb2F1dGgtY3VybC5v CisKKyMgVGhlIHNoYXJlZCBsaWJyYXJ5IG5lZWRzIGFkZGl0aW9uYWwgZ2x1ZSBzeW1ib2xzLgor T0JKU19TSExJQiA9IFwKKwlvYXV0aC1jdXJsX3NobGliLm8gXAorCW9hdXRoLXV0aWxzLm8gXAor CitvYXV0aC11dGlscy5vOiBvdmVycmlkZSBDUFBGTEFHUyArPSAtRFVTRV9EWU5BTUlDX09BVVRI CitvYXV0aC1jdXJsX3NobGliLm86IG92ZXJyaWRlIENQUEZMQUdTX1NITElCICs9IC1EVVNFX0RZ TkFNSUNfT0FVVEgKKworIyBBZGQgc2hsaWItL3N0bGliLXNwZWNpZmljIG9iamVjdHMuCiskKHNo bGliKTogb3ZlcnJpZGUgT0JKUyArPSAkKE9CSlNfU0hMSUIpCiskKHNobGliKTogJChPQkpTX1NI TElCKQorCiskKHN0bGliKTogb3ZlcnJpZGUgT0JKUyArPSAkKE9CSlNfU1RBVElDKQorJChzdGxp Yik6ICQoT0JKU19TVEFUSUMpCisKK1NITElCX0xJTktfSU5URVJOQUwgPSAkKGxpYnBxX3BncG9y dF9zaGxpYikKK1NITElCX0xJTksgPSAkKExJQkNVUkxfTERGTEFHUykgJChMSUJDVVJMX0xETElC UykKK1NITElCX1BSRVJFUVMgPSBzdWJtYWtlLWxpYnBxCitTSExJQl9FWFBPUlRTID0gZXhwb3J0 cy50eHQKKworIyBEaXNhYmxlIC1idW5kbGVfbG9hZGVyIG9uIG1hY09TLgorQkVfRExMTElCUyA9 CisKKyMgQnkgZGVmYXVsdCwgYSBsaWJyYXJ5IHdpdGhvdXQgYW4gU09OQU1FIGRvZXNuJ3QgZ2V0 IGEgc3RhdGljIGxpYnJhcnksIHNvIHdlCisjIGFkZCBpdCB0byB0aGUgYnVpbGQgZXhwbGljaXRs eS4KK2FsbDogYWxsLWxpYiBhbGwtc3RhdGljLWxpYgorCisjIFNoYXJlZCBsaWJyYXJ5IHN0dWZm CitpbmNsdWRlICQodG9wX3NyY2Rpcikvc3JjL01ha2VmaWxlLnNobGliCisKKyMgVXNlIHNyYy9j b21tb24vTWFrZWZpbGUncyB0cmljayBmb3IgdHJhY2tpbmcgZGVwZW5kZW5jaWVzIG9mIHNobGli LXNwZWNpZmljCisjIG9iamVjdHMuCislX3NobGliLm86ICUuYyAlLm8KKwkkKENDKSAkKENGTEFH UykgJChDRkxBR1NfU0wpICQoQ1BQRkxBR1MpICQoQ1BQRkxBR1NfU0hMSUIpIC1jICQ8IC1vICRA CisKKyMgSWdub3JlIHRoZSBzdGFuZGFyZCBydWxlcyBmb3IgU09OQU1FLWxlc3MgaW5zdGFsbGF0 aW9uOyB3ZSB3YW50IGJvdGggdGhlCisjIHN0YXRpYyBhbmQgc2hhcmVkIGxpYnJhcmllcyB0byBn byBpbnRvIGxpYmRpci4KK2luc3RhbGw6IGFsbCBpbnN0YWxsZGlycyAkKHN0bGliKSAkKHNobGli KQorCSQoSU5TVEFMTF9TSExJQikgJChzaGxpYikgJyQoREVTVERJUikkKGxpYmRpcikvJChzaGxp YiknCisJJChJTlNUQUxMX1NUTElCKSAkKHN0bGliKSAnJChERVNURElSKSQobGliZGlyKS8kKHN0 bGliKScKKworaW5zdGFsbGRpcnM6CisJJChNS0RJUl9QKSAnJChERVNURElSKSQobGliZGlyKScK KwordW5pbnN0YWxsOgorCXJtIC1mICckKERFU1RESVIpJChsaWJkaXIpLyQoc3RsaWIpJworCXJt IC1mICckKERFU1RESVIpJChsaWJkaXIpLyQoc2hsaWIpJworCitjbGVhbiBkaXN0Y2xlYW46IGNs ZWFuLWxpYgorCXJtIC1mICQoT0JKUykgJChPQkpTX1NUQVRJQykgJChPQkpTX1NITElCKQpkaWZm IC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvUkVBRE1FIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEtb2F1dGgvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi41NTM5NjJkNjQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx LW9hdXRoL1JFQURNRQpAQCAtMCwwICsxLDU3IEBACitsaWJwcS1vYXV0aCBpcyBhbiBvcHRpb25h bCBtb2R1bGUgaW1wbGVtZW50aW5nIHRoZSBEZXZpY2UgQXV0aG9yaXphdGlvbiBmbG93IGZvcgor T0F1dGggY2xpZW50cyAoUkZDIDg2MjgpLiBJdCBpcyBtYWludGFpbmVkIGFzIGl0cyBvd24gc2hh cmVkIGxpYnJhcnkgaW4gb3JkZXIgdG8KK2lzb2xhdGUgaXRzIGRlcGVuZGVuY3kgb24gbGliY3Vy bC4gKEVuZCB1c2VycyB3aG8gZG9uJ3Qgd2FudCB0aGUgQ3VybCBkZXBlbmRlbmN5CitjYW4gc2lt cGx5IGNob29zZSBub3QgdG8gaW5zdGFsbCB0aGlzIG1vZHVsZS4pCisKK0lmIGEgY29ubmVjdGlv biBzdHJpbmcgYWxsb3dzIHRoZSB1c2Ugb2YgT0F1dGgsIGFuZCB0aGUgc2VydmVyIGFza3MgZm9y IGl0LCBhbmQKK2EgbGlicHEgY2xpZW50IGhhcyBub3QgaW5zdGFsbGVkIGl0cyBvd24gY3VzdG9t IE9BdXRoIGZsb3csIGxpYnBxIHdpbGwgYXR0ZW1wdAordG8gZGVsYXktbG9hZCB0aGlzIG1vZHVs ZSB1c2luZyBkbG9wZW4oKSBhbmQgdGhlIGZvbGxvd2luZyBBQkkuIEZhaWx1cmUgdG8gbG9hZAor cmVzdWx0cyBpbiBhIGZhaWxlZCBjb25uZWN0aW9uLgorCis9IExvYWQtVGltZSBBQkkgPQorCitU aGlzIG1vZHVsZSBBQkkgaXMgYW4gaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlsLCBzbyBp dCdzIHN1YmplY3QgdG8gY2hhbmdlCithY3Jvc3MgbWFqb3IgcmVsZWFzZXM7IHRoZSBuYW1lIG9m IHRoZSBtb2R1bGUgKGxpYnBxLW9hdXRoLU1BSk9SKSByZWZsZWN0cyB0aGlzLgorVGhlIG1vZHVs ZSBleHBvcnRzIHRoZSBmb2xsb3dpbmcgc3ltYm9sczoKKworLSBQb3N0Z3Jlc1BvbGxpbmdTdGF0 dXNUeXBlIHBnX2ZlX3J1bl9vYXV0aF9mbG93KFBHY29ubiAqY29ubik7CistIHZvaWQgcGdfZmVf Y2xlYW51cF9vYXV0aF9mbG93KFBHY29ubiAqY29ubik7CisKK3BnX2ZlX3J1bl9vYXV0aF9mbG93 IGFuZCBwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3cgYXJlIGltcGxlbWVudGF0aW9ucyBvZgorY29u bi0+YXN5bmNfYXV0aCBhbmQgY29ubi0+Y2xlYW51cF9hc3luY19hdXRoLCByZXNwZWN0aXZlbHku CisKK0F0IHRoZSBtb21lbnQsIHBnX2ZlX3J1bl9vYXV0aF9mbG93KCkgcmVsaWVzIG9uIGxpYnBx J3MgcGdfZ190aHJlYWRsb2NrIGFuZAorbGlicHFfZ2V0dGV4dCgpLCB3aGljaCBtdXN0IGJlIGlu amVjdGVkIGJ5IGxpYnBxIHVzaW5nIHRoaXMgaW5pdGlhbGl6YXRpb24KK2Z1bmN0aW9uIGJlZm9y ZSB0aGUgZmxvdyBpcyBydW46CisKKy0gdm9pZCBsaWJwcV9vYXV0aF9pbml0KHBndGhyZWFkbG9j a190IHRocmVhZGxvY2ssCisJCQkJCQlsaWJwcV9nZXR0ZXh0X2Z1bmMgZ2V0dGV4dF9pbXBsLAor CQkJCQkJY29ubl9lcnJvck1lc3NhZ2VfZnVuYyBlcnJtc2dfaW1wbCwKKwkJCQkJCWNvbm5fb2F1 dGhfY2xpZW50X2lkX2Z1bmMgY2xpZW50aWRfaW1wbCwKKwkJCQkJCWNvbm5fb2F1dGhfY2xpZW50 X3NlY3JldF9mdW5jIGNsaWVudHNlY3JldF9pbXBsLAorCQkJCQkJY29ubl9vYXV0aF9kaXNjb3Zl cnlfdXJpX2Z1bmMgZGlzY292ZXJ5dXJpX2ltcGwsCisJCQkJCQljb25uX29hdXRoX2lzc3Vlcl9p ZF9mdW5jIGlzc3VlcmlkX2ltcGwsCisJCQkJCQljb25uX29hdXRoX3Njb3BlX2Z1bmMgc2NvcGVf aW1wbCwKKwkJCQkJCWNvbm5fc2FzbF9zdGF0ZV9mdW5jIHNhc2xzdGF0ZV9pbXBsLAorCQkJCQkJ c2V0X2Nvbm5fYWx0c29ja19mdW5jIHNldGFsdHNvY2tfaW1wbCwKKwkJCQkJCXNldF9jb25uX29h dXRoX3Rva2VuX2Z1bmMgc2V0dG9rZW5faW1wbCk7CisKK0l0IGFsc28gcmVsaWVzIG9uIGFjY2Vz cyB0byBzZXZlcmFsIG1lbWJlcnMgb2YgdGhlIFBHY29ubiBzdHJ1Y3QuIE5vdCBvbmx5IGNhbgor dGhlc2UgY2hhbmdlIHBvc2l0aW9ucyBhY3Jvc3MgbWlub3IgdmVyc2lvbnMsIGJ1dCB0aGUgb2Zm c2V0cyBhcmVuJ3QgbmVjZXNzYXJpbHkKK3N0YWJsZSB3aXRoaW4gYSBzaW5nbGUgbWlub3IgcmVs ZWFzZSAoY29ubi0+ZXJyb3JNZXNzYWdlLCBmb3IgaW5zdGFuY2UsIGNhbgorY2hhbmdlIG9mZnNl dHMgZGVwZW5kaW5nIG9uIGNvbmZpZ3VyZS10aW1lIG9wdGlvbnMpLiBUaGVyZWZvcmUgdGhlIG5l Y2Vzc2FyeQorYWNjZXNzb3JzIChuYW1lZCBjb25uXyopIGFuZCBtdXRhdG9ycyAoc2V0X2Nvbm5f KikgYXJlIGluamVjdGVkIGhlcmUuIFdpdGggdGhpcworYXBwcm9hY2gsIHdlIGNhbiBzYWZlbHkg c2VhcmNoIHRoZSBzdGFuZGFyZCBkbG9wZW4oKSBwYXRocyAoZS5nLiBSUEFUSCwKK0xEX0xJQlJB UllfUEFUSCwgdGhlIFNPIGNhY2hlKSBmb3IgYW4gaW1wbGVtZW50YXRpb24gbW9kdWxlIHRvIHVz ZSwgZXZlbiBpZiB0aGF0Cittb2R1bGUgd2Fzbid0IGNvbXBpbGVkIGF0IHRoZSBzYW1lIHRpbWUg YXMgbGlicHEgLS0gd2hpY2ggYmVjb21lcyBlc3BlY2lhbGx5CitpbXBvcnRhbnQgZHVyaW5nICJs aXZlIHVwZ3JhZGUiIHNpdHVhdGlvbnMgd2hlcmUgYSBydW5uaW5nIGxpYnBxIGFwcGxpY2F0aW9u IGhhcwordGhlIGxpYnBxLW9hdXRoIG1vZHVsZSB1cGRhdGVkIG91dCBmcm9tIHVuZGVyIGl0IGJl Zm9yZSBpdCdzIGZpcnN0IGxvYWRlZCBmcm9tCitkaXNrLgorCis9IFN0YXRpYyBCdWlsZCA9CisK K1RoZSBzdGF0aWMgbGlicmFyeSBsaWJwcS5hIGRvZXMgbm90IHBlcmZvcm0gYW55IGR5bmFtaWMg bG9hZGluZy4gSWYgdGhlIGJ1aWx0aW4KK2Zsb3cgaXMgZW5hYmxlZCwgdGhlIGFwcGxpY2F0aW9u IGlzIGV4cGVjdGVkIHRvIGxpbmsgYWdhaW5zdCBsaWJwcS1vYXV0aC5hCitkaXJlY3RseSB0byBw cm92aWRlIHRoZSBuZWNlc3Nhcnkgc3ltYm9scy4gKGxpYnBxLmEgYW5kIGxpYnBxLW9hdXRoLmEg bXVzdCBiZQorcGFydCBvZiB0aGUgc2FtZSBidWlsZC4gVW5saWtlIHRoZSBkeW5hbWljIG1vZHVs ZSwgdGhlcmUgYXJlIG5vIHRyYW5zbGF0aW9uCitzaGltcyBwcm92aWRlZC4pCmRpZmYgLS1naXQg YS9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9leHBvcnRzLnR4dCBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxLW9hdXRoL2V4cG9ydHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi42ODkxYTgzZGJmOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xp YnBxLW9hdXRoL2V4cG9ydHMudHh0CkBAIC0wLDAgKzEsNCBAQAorIyBzcmMvaW50ZXJmYWNlcy9s aWJwcS1vYXV0aC9leHBvcnRzLnR4dAorbGlicHFfb2F1dGhfaW5pdCAgICAgICAgICAxCitwZ19m ZV9ydW5fb2F1dGhfZmxvdyAgICAgIDIKK3BnX2ZlX2NsZWFudXBfb2F1dGhfZmxvdyAgMwpkaWZm IC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvbWVzb24uYnVpbGQgYi9zcmMvaW50 ZXJmYWNlcy9saWJwcS1vYXV0aC9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uOWU3MzAxYTdmNjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS1vYXV0aC9tZXNvbi5idWlsZApAQCAtMCwwICsxLDQ1IEBACisjIENvcHlyaWdo dCAoYykgMjAyMi0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitp ZiBub3Qgb2F1dGhfZmxvd19zdXBwb3J0ZWQKKyAgc3ViZGlyX2RvbmUoKQorZW5kaWYKKworbGli cHFfb2F1dGhfc291cmNlcyA9IGZpbGVzKAorICAnb2F1dGgtY3VybC5jJywKKykKKworIyBUaGUg c2hhcmVkIGxpYnJhcnkgbmVlZHMgYWRkaXRpb25hbCBnbHVlIHN5bWJvbHMuCitsaWJwcV9vYXV0 aF9zb19zb3VyY2VzID0gZmlsZXMoCisgICdvYXV0aC11dGlscy5jJywKKykKK2xpYnBxX29hdXRo X3NvX2NfYXJncyA9IFsnLURVU0VfRFlOQU1JQ19PQVVUSCddCisKK2V4cG9ydF9maWxlID0gY3Vz dG9tX3RhcmdldCgnbGlicHEtb2F1dGguZXhwb3J0cycsCisgIGt3YXJnczogZ2VuX2V4cG9ydF9r d2FyZ3MsCispCisKKyMgcG9ydCBuZWVkcyB0byBiZSBpbiBpbmNsdWRlIHBhdGggZHVlIHRvIHB0 aHJlYWQtd2luMzIuaAorbGlicHFfb2F1dGhfaW5jID0gaW5jbHVkZV9kaXJlY3RvcmllcygnLics ICcuLi9saWJwcScsICcuLi8uLi9wb3J0JykKKworbGlicHFfb2F1dGhfc3QgPSBzdGF0aWNfbGli cmFyeSgnbGlicHEtb2F1dGgnLAorICBsaWJwcV9vYXV0aF9zb3VyY2VzLAorICBpbmNsdWRlX2Rp cmVjdG9yaWVzOiBbbGlicHFfb2F1dGhfaW5jLCBwb3N0Z3Jlc19pbmNdLAorICBjX3BjaDogcGNo X3Bvc3RncmVzX2ZlX2gsCisgIGRlcGVuZGVuY2llczogW2Zyb250ZW5kX3N0bGliX2NvZGUsIGxp YnBxX29hdXRoX2RlcHNdLAorICBrd2FyZ3M6IGRlZmF1bHRfbGliX2FyZ3MsCispCisKKyMgVGhp cyBpcyBhbiBpbnRlcm5hbCBtb2R1bGU7IHdlIGRvbid0IHdhbnQgYW4gU09OQU1FIGFuZCB0aGVy ZWZvcmUgZG8gbm90IHNldAorIyBTT19NQUpPUl9WRVJTSU9OLgorbGlicHFfb2F1dGhfbmFtZSA9 ICdsaWJwcS1vYXV0aC1AMEAnLmZvcm1hdChwZ192ZXJzaW9uX21ham9yKQorCitsaWJwcV9vYXV0 aF9zbyA9IHNoYXJlZF9tb2R1bGUobGlicHFfb2F1dGhfbmFtZSwKKyAgbGlicHFfb2F1dGhfc291 cmNlcyArIGxpYnBxX29hdXRoX3NvX3NvdXJjZXMsCisgIGluY2x1ZGVfZGlyZWN0b3JpZXM6IFts aWJwcV9vYXV0aF9pbmMsIHBvc3RncmVzX2luY10sCisgIGNfYXJnczogbGlicHFfc29fY19hcmdz LAorICBjX3BjaDogcGNoX3Bvc3RncmVzX2ZlX2gsCisgIGRlcGVuZGVuY2llczogW2Zyb250ZW5k X3NobGliX2NvZGUsIGxpYnBxLCBsaWJwcV9vYXV0aF9kZXBzXSwKKyAgbGlua19kZXBlbmRzOiBl eHBvcnRfZmlsZSwKKyAgbGlua19hcmdzOiBleHBvcnRfZm10LmZvcm1hdChleHBvcnRfZmlsZS5m dWxsX3BhdGgoKSksCisgIGt3YXJnczogZGVmYXVsdF9saWJfYXJncywKKykKZGlmZiAtLWdpdCBh L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGgtY3VybC5jIGIvc3JjL2ludGVyZmFj ZXMvbGlicHEtb2F1dGgvb2F1dGgtY3VybC5jCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBm cm9tIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtb2F1dGgtY3VybC5jCnJlbmFtZSB0byBz cmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmMKaW5kZXggYzE5NWUwMGNkMjgu LmQxM2I5Y2JhYmI0IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9h dXRoLWN1cmwuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1vYXV0aC9vYXV0aC1jdXJsLmMK QEAgLTEsNiArMSw2IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCi0gKiBmZS1hdXRoLW9hdXRo LWN1cmwuYworICogb2F1dGgtY3VybC5jCiAgKgkgICBUaGUgbGliY3VybCBpbXBsZW1lbnRhdGlv biBvZiBPQXV0aC9PSURDIGF1dGhlbnRpY2F0aW9uLCB1c2luZyB0aGUKICAqCSAgIE9BdXRoIERl dmljZSBBdXRob3JpemF0aW9uIEdyYW50IChSRkMgODYyOCkuCiAgKgpAQCAtOCw3ICs4LDcgQEAK ICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0 eSBvZiBDYWxpZm9ybmlhCiAgKgogICogSURFTlRJRklDQVRJT04KLSAqCSAgc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtYXV0aC1vYXV0aC1jdXJsLmMKKyAqCSAgc3JjL2ludGVyZmFjZXMvbGlicHEt b2F1dGgvb2F1dGgtY3VybC5jCiAgKgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KQEAgLTE3LDIw ICsxNyw1NiBAQAogCiAjaW5jbHVkZSA8Y3VybC9jdXJsLmg+CiAjaW5jbHVkZSA8bWF0aC5oPgot I2lmZGVmIEhBVkVfU1lTX0VQT0xMX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2lmIGRlZmlu ZWQoSEFWRV9TWVNfRVBPTExfSCkKICNpbmNsdWRlIDxzeXMvZXBvbGwuaD4KICNpbmNsdWRlIDxz eXMvdGltZXJmZC5oPgotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfRVZFTlRfSAorI2VsaWYgZGVm aW5lZChIQVZFX1NZU19FVkVOVF9IKQogI2luY2x1ZGUgPHN5cy9ldmVudC5oPgorI2Vsc2UKKyNl cnJvciBsaWJwcS1vYXV0aCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0KICNlbmRp ZgotI2luY2x1ZGUgPHVuaXN0ZC5oPgogCiAjaW5jbHVkZSAiY29tbW9uL2pzb25hcGkuaCIKLSNp bmNsdWRlICJmZS1hdXRoLmgiCiAjaW5jbHVkZSAiZmUtYXV0aC1vYXV0aC5oIgotI2luY2x1ZGUg ImxpYnBxLWludC5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCisjaW5jbHVkZSAib2F1dGgt Y3VybC5oIgorCisjaWZkZWYgVVNFX0RZTkFNSUNfT0FVVEgKKworLyoKKyAqIFRoZSBtb2R1bGUg YnVpbGQgaXMgZGVjb3VwbGVkIGZyb20gbGlicHEtaW50LmgsIHRvIHRyeSB0byBhdm9pZCBpbmFk dmVydGVudAorICogQUJJIGJyZWFrcyBkdXJpbmcgbWlub3IgdmVyc2lvbiBidW1wcy4gUmVwbGFj ZW1lbnRzIGZvciB0aGUgbWlzc2luZyBpbnRlcm5hbHMKKyAqIGFyZSBwcm92aWRlZCBieSBvYXV0 aC11dGlscy4KKyAqLworI2luY2x1ZGUgIm9hdXRoLXV0aWxzLmgiCisKKyNlbHNlCQkJCQkJCS8q ICFVU0VfRFlOQU1JQ19PQVVUSCAqLworCisvKgorICogU3RhdGljIGJ1aWxkcyBtYXkgcmVseSBv biBQR2Nvbm4gb2Zmc2V0cyBkaXJlY3RseS4gS2VlcCB0aGVzZSBhbGlnbmVkIHdpdGgKKyAqIHRo ZSBiYW5rIG9mIGNhbGxiYWNrcyBpbiBvYXV0aC11dGlscy5oLgorICovCisjaW5jbHVkZSAibGli cHEtaW50LmgiCisKKyNkZWZpbmUgY29ubl9lcnJvck1lc3NhZ2UoQ09OTikgKCZDT05OLT5lcnJv ck1lc3NhZ2UpCisjZGVmaW5lIGNvbm5fb2F1dGhfY2xpZW50X2lkKENPTk4pIChDT05OLT5vYXV0 aF9jbGllbnRfaWQpCisjZGVmaW5lIGNvbm5fb2F1dGhfY2xpZW50X3NlY3JldChDT05OKSAoQ09O Ti0+b2F1dGhfY2xpZW50X3NlY3JldCkKKyNkZWZpbmUgY29ubl9vYXV0aF9kaXNjb3ZlcnlfdXJp KENPTk4pIChDT05OLT5vYXV0aF9kaXNjb3ZlcnlfdXJpKQorI2RlZmluZSBjb25uX29hdXRoX2lz c3Vlcl9pZChDT05OKSAoQ09OTi0+b2F1dGhfaXNzdWVyX2lkKQorI2RlZmluZSBjb25uX29hdXRo X3Njb3BlKENPTk4pIChDT05OLT5vYXV0aF9zY29wZSkKKyNkZWZpbmUgY29ubl9zYXNsX3N0YXRl KENPTk4pIChDT05OLT5zYXNsX3N0YXRlKQorCisjZGVmaW5lIHNldF9jb25uX2FsdHNvY2soQ09O TiwgVkFMKSBkbyB7IENPTk4tPmFsdHNvY2sgPSBWQUw7IH0gd2hpbGUgKDApCisjZGVmaW5lIHNl dF9jb25uX29hdXRoX3Rva2VuKENPTk4sIFZBTCkgZG8geyBDT05OLT5vYXV0aF90b2tlbiA9IFZB TDsgfSB3aGlsZSAoMCkKKworI2VuZGlmCQkJCQkJCS8qIFVTRV9EWU5BTUlDX09BVVRIICovCisK Ky8qIE9uZSBmaW5hbCBndWFyZHJhaWwgYWdhaW5zdCBhY2NpZGVudGFsIGluY2x1c2lvbi4uLiAq LworI2lmIGRlZmluZWQoVVNFX0RZTkFNSUNfT0FVVEgpICYmIGRlZmluZWQoTElCUFFfSU5UX0gp CisjZXJyb3IgZG8gbm90IHJlbHkgb24gbGlicHEtaW50LmggaW4gZHluYW1pYyBidWlsZHMgb2Yg bGlicHEtb2F1dGgKKyNlbmRpZgogCiAvKgogICogSXQncyBnZW5lcmFsbHkgcHJ1ZGVudCB0byBz ZXQgYSBtYXhpbXVtIHJlc3BvbnNlIHNpemUgdG8gYnVmZmVyIGluIG1lbW9yeSwKQEAgLTMwMyw3 ICszMzksNyBAQCBmcmVlX2FzeW5jX2N0eChQR2Nvbm4gKmNvbm4sIHN0cnVjdCBhc3luY19jdHgg KmFjdHgpCiB2b2lkCiBwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3coUEdjb25uICpjb25uKQogewot CWZlX29hdXRoX3N0YXRlICpzdGF0ZSA9IGNvbm4tPnNhc2xfc3RhdGU7CisJZmVfb2F1dGhfc3Rh dGUgKnN0YXRlID0gY29ubl9zYXNsX3N0YXRlKGNvbm4pOwogCiAJaWYgKHN0YXRlLT5hc3luY19j dHgpCiAJewpAQCAtMzExLDcgKzM0Nyw3IEBAIHBnX2ZlX2NsZWFudXBfb2F1dGhfZmxvdyhQR2Nv bm4gKmNvbm4pCiAJCXN0YXRlLT5hc3luY19jdHggPSBOVUxMOwogCX0KIAotCWNvbm4tPmFsdHNv Y2sgPSBQR0lOVkFMSURfU09DS0VUOworCXNldF9jb25uX2FsdHNvY2soY29ubiwgUEdJTlZBTElE X1NPQ0tFVCk7CiB9CiAKIC8qCkBAIC0xMTEwLDcgKzExNDYsNyBAQCBwYXJzZV9hY2Nlc3NfdG9r ZW4oc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgc3RydWN0IHRva2VuICp0b2spCiBzdGF0aWMgYm9v bAogc2V0dXBfbXVsdGlwbGV4ZXIoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCkKIHsKLSNpZmRlZiBI QVZFX1NZU19FUE9MTF9ICisjaWYgZGVmaW5lZChIQVZFX1NZU19FUE9MTF9IKQogCXN0cnVjdCBl cG9sbF9ldmVudCBldiA9IHsuZXZlbnRzID0gRVBPTExJTn07CiAKIAlhY3R4LT5tdXggPSBlcG9s bF9jcmVhdGUxKEVQT0xMX0NMT0VYRUMpOwpAQCAtMTEzNCw4ICsxMTcwLDcgQEAgc2V0dXBfbXVs dGlwbGV4ZXIoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCkKIAl9CiAKIAlyZXR1cm4gdHJ1ZTsKLSNl bmRpZgotI2lmZGVmIEhBVkVfU1lTX0VWRU5UX0gKKyNlbGlmIGRlZmluZWQoSEFWRV9TWVNfRVZF TlRfSCkKIAlhY3R4LT5tdXggPSBrcXVldWUoKTsKIAlpZiAoYWN0eC0+bXV4IDwgMCkKIAl7CkBA IC0xMTU4LDEwICsxMTkzLDkgQEAgc2V0dXBfbXVsdGlwbGV4ZXIoc3RydWN0IGFzeW5jX2N0eCAq YWN0eCkKIAl9CiAKIAlyZXR1cm4gdHJ1ZTsKKyNlbHNlCisjZXJyb3Igc2V0dXBfbXVsdGlwbGV4 ZXIgaXMgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgcGxhdGZvcm0KICNlbmRpZgotCi0JYWN0eF9l cnJvcihhY3R4LCAibGlicHEgZG9lcyBub3Qgc3VwcG9ydCB0aGUgRGV2aWNlIEF1dGhvcml6YXRp b24gZmxvdyBvbiB0aGlzIHBsYXRmb3JtIik7Ci0JcmV0dXJuIGZhbHNlOwogfQogCiAvKgpAQCAt MTE3NCw3ICsxMjA4LDcgQEAgcmVnaXN0ZXJfc29ja2V0KENVUkwgKmN1cmwsIGN1cmxfc29ja2V0 X3Qgc29ja2V0LCBpbnQgd2hhdCwgdm9pZCAqY3R4LAogewogCXN0cnVjdCBhc3luY19jdHggKmFj dHggPSBjdHg7CiAKLSNpZmRlZiBIQVZFX1NZU19FUE9MTF9ICisjaWYgZGVmaW5lZChIQVZFX1NZ U19FUE9MTF9IKQogCXN0cnVjdCBlcG9sbF9ldmVudCBldiA9IHswfTsKIAlpbnQJCQlyZXM7CiAJ aW50CQkJb3AgPSBFUE9MTF9DVExfQUREOwpAQCAtMTIzMCw4ICsxMjY0LDcgQEAgcmVnaXN0ZXJf c29ja2V0KENVUkwgKmN1cmwsIGN1cmxfc29ja2V0X3Qgc29ja2V0LCBpbnQgd2hhdCwgdm9pZCAq Y3R4LAogCX0KIAogCXJldHVybiAwOwotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfRVZFTlRfSAor I2VsaWYgZGVmaW5lZChIQVZFX1NZU19FVkVOVF9IKQogCXN0cnVjdCBrZXZlbnQgZXZbMl0gPSB7 MH07CiAJc3RydWN0IGtldmVudCBldl9vdXRbMl07CiAJc3RydWN0IHRpbWVzcGVjIHRpbWVvdXQg PSB7MH07CkBAIC0xMzEyLDEwICsxMzQ1LDkgQEAgcmVnaXN0ZXJfc29ja2V0KENVUkwgKmN1cmws IGN1cmxfc29ja2V0X3Qgc29ja2V0LCBpbnQgd2hhdCwgdm9pZCAqY3R4LAogCX0KIAogCXJldHVy biAwOworI2Vsc2UKKyNlcnJvciByZWdpc3Rlcl9zb2NrZXQgaXMgbm90IGltcGxlbWVudGVkIG9u IHRoaXMgcGxhdGZvcm0KICNlbmRpZgotCi0JYWN0eF9lcnJvcihhY3R4LCAibGlicHEgZG9lcyBu b3Qgc3VwcG9ydCBtdWx0aXBsZXhlciBzb2NrZXRzIG9uIHRoaXMgcGxhdGZvcm0iKTsKLQlyZXR1 cm4gLTE7CiB9CiAKIC8qCkBAIC0xMzM0LDcgKzEzNjYsNyBAQCByZWdpc3Rlcl9zb2NrZXQoQ1VS TCAqY3VybCwgY3VybF9zb2NrZXRfdCBzb2NrZXQsIGludCB3aGF0LCB2b2lkICpjdHgsCiBzdGF0 aWMgYm9vbAogc2V0X3RpbWVyKHN0cnVjdCBhc3luY19jdHggKmFjdHgsIGxvbmcgdGltZW91dCkK IHsKLSNpZiBIQVZFX1NZU19FUE9MTF9ICisjaWYgZGVmaW5lZChIQVZFX1NZU19FUE9MTF9IKQog CXN0cnVjdCBpdGltZXJzcGVjIHNwZWMgPSB7MH07CiAKIAlpZiAodGltZW91dCA8IDApCkBAIC0x MzYzLDggKzEzOTUsNyBAQCBzZXRfdGltZXIoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgbG9uZyB0 aW1lb3V0KQogCX0KIAogCXJldHVybiB0cnVlOwotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfRVZF TlRfSAorI2VsaWYgZGVmaW5lZChIQVZFX1NZU19FVkVOVF9IKQogCXN0cnVjdCBrZXZlbnQgZXY7 CiAKICNpZmRlZiBfX05ldEJTRF9fCkBAIC0xNDE5LDEwICsxNDUwLDkgQEAgc2V0X3RpbWVyKHN0 cnVjdCBhc3luY19jdHggKmFjdHgsIGxvbmcgdGltZW91dCkKIAl9CiAKIAlyZXR1cm4gdHJ1ZTsK KyNlbHNlCisjZXJyb3Igc2V0X3RpbWVyIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiB0aGlzIHBsYXRm b3JtCiAjZW5kaWYKLQotCWFjdHhfZXJyb3IoYWN0eCwgImxpYnBxIGRvZXMgbm90IHN1cHBvcnQg dGltZXJzIG9uIHRoaXMgcGxhdGZvcm0iKTsKLQlyZXR1cm4gZmFsc2U7CiB9CiAKIC8qCkBAIC0x NDMzLDcgKzE0NjMsNyBAQCBzZXRfdGltZXIoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgbG9uZyB0 aW1lb3V0KQogc3RhdGljIGludAogdGltZXJfZXhwaXJlZChzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4 KQogewotI2lmIEhBVkVfU1lTX0VQT0xMX0gKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX0VQT0xMX0gp CiAJc3RydWN0IGl0aW1lcnNwZWMgc3BlYyA9IHswfTsKIAogCWlmICh0aW1lcmZkX2dldHRpbWUo YWN0eC0+dGltZXJmZCwgJnNwZWMpIDwgMCkKQEAgLTE0NTMsOCArMTQ4Myw3IEBAIHRpbWVyX2V4 cGlyZWQoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCkKIAkvKiBJZiB0aGUgcmVtYWluaW5nIHRpbWUg dG8gZXhwaXJhdGlvbiBpcyB6ZXJvLCB3ZSdyZSBkb25lLiAqLwogCXJldHVybiAoc3BlYy5pdF92 YWx1ZS50dl9zZWMgPT0gMAogCQkJJiYgc3BlYy5pdF92YWx1ZS50dl9uc2VjID09IDApOwotI2Vu ZGlmCi0jaWZkZWYgSEFWRV9TWVNfRVZFTlRfSAorI2VsaWYgZGVmaW5lZChIQVZFX1NZU19FVkVO VF9IKQogCWludAkJCXJlczsKIAogCS8qIElzIHRoZSB0aW1lciBxdWV1ZSByZWFkeT8gKi8KQEAg LTE0NjYsMTAgKzE0OTUsOSBAQCB0aW1lcl9leHBpcmVkKHN0cnVjdCBhc3luY19jdHggKmFjdHgp CiAJfQogCiAJcmV0dXJuIChyZXMgPiAwKTsKKyNlbHNlCisjZXJyb3IgdGltZXJfZXhwaXJlZCBp cyBub3QgaW1wbGVtZW50ZWQgb24gdGhpcyBwbGF0Zm9ybQogI2VuZGlmCi0KLQlhY3R4X2Vycm9y KGFjdHgsICJsaWJwcSBkb2VzIG5vdCBzdXBwb3J0IHRpbWVycyBvbiB0aGlzIHBsYXRmb3JtIik7 Ci0JcmV0dXJuIC0xOwogfQogCiAvKgpAQCAtMjA3MCw4ICsyMDk4LDkgQEAgc3RhdGljIGJvb2wK IGNoZWNrX2lzc3VlcihzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4LCBQR2Nvbm4gKmNvbm4pCiB7CiAJ Y29uc3Qgc3RydWN0IHByb3ZpZGVyICpwcm92aWRlciA9ICZhY3R4LT5wcm92aWRlcjsKKwljb25z dCBjaGFyICpvYXV0aF9pc3N1ZXJfaWQgPSBjb25uX29hdXRoX2lzc3Vlcl9pZChjb25uKTsKIAot CUFzc2VydChjb25uLT5vYXV0aF9pc3N1ZXJfaWQpOwkvKiBlbnN1cmVkIGJ5IHNldHVwX29hdXRo X3BhcmFtZXRlcnMoKSAqLworCUFzc2VydChvYXV0aF9pc3N1ZXJfaWQpOwkvKiBlbnN1cmVkIGJ5 IHNldHVwX29hdXRoX3BhcmFtZXRlcnMoKSAqLwogCUFzc2VydChwcm92aWRlci0+aXNzdWVyKTsJ LyogZW5zdXJlZCBieSBwYXJzZV9wcm92aWRlcigpICovCiAKIAkvKi0tLQpAQCAtMjA5MSwxMSAr MjEyMCwxMSBAQCBjaGVja19pc3N1ZXIoc3RydWN0IGFzeW5jX2N0eCAqYWN0eCwgUEdjb25uICpj b25uKQogCSAqICAgIHNlbnQgdG8uIFRoaXMgY29tcGFyaXNvbiBNVVNUIHVzZSBzaW1wbGUgc3Ry aW5nIGNvbXBhcmlzb24gYXMgZGVmaW5lZAogCSAqICAgIGluIFNlY3Rpb24gNi4yLjEgb2YgW1JG QzM5ODZdLgogCSAqLwotCWlmIChzdHJjbXAoY29ubi0+b2F1dGhfaXNzdWVyX2lkLCBwcm92aWRl ci0+aXNzdWVyKSAhPSAwKQorCWlmIChzdHJjbXAob2F1dGhfaXNzdWVyX2lkLCBwcm92aWRlci0+ aXNzdWVyKSAhPSAwKQogCXsKIAkJYWN0eF9lcnJvcihhY3R4LAogCQkJCSAgICJ0aGUgaXNzdWVy IGlkZW50aWZpZXIgKCVzKSBkb2VzIG5vdCBtYXRjaCBvYXV0aF9pc3N1ZXIgKCVzKSIsCi0JCQkJ ICAgcHJvdmlkZXItPmlzc3VlciwgY29ubi0+b2F1dGhfaXNzdWVyX2lkKTsKKwkJCQkgICBwcm92 aWRlci0+aXNzdWVyLCBvYXV0aF9pc3N1ZXJfaWQpOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBA IC0yMTcyLDExICsyMjAxLDE0IEBAIGNoZWNrX2Zvcl9kZXZpY2VfZmxvdyhzdHJ1Y3QgYXN5bmNf Y3R4ICphY3R4KQogc3RhdGljIGJvb2wKIGFkZF9jbGllbnRfaWRlbnRpZmljYXRpb24oc3RydWN0 IGFzeW5jX2N0eCAqYWN0eCwgUFFFeHBCdWZmZXIgcmVxYm9keSwgUEdjb25uICpjb25uKQogewor CWNvbnN0IGNoYXIgKm9hdXRoX2NsaWVudF9pZCA9IGNvbm5fb2F1dGhfY2xpZW50X2lkKGNvbm4p OworCWNvbnN0IGNoYXIgKm9hdXRoX2NsaWVudF9zZWNyZXQgPSBjb25uX29hdXRoX2NsaWVudF9z ZWNyZXQoY29ubik7CisKIAlib29sCQlzdWNjZXNzID0gZmFsc2U7CiAJY2hhcgkgICAqdXNlcm5h bWUgPSBOVUxMOwogCWNoYXIJICAgKnBhc3N3b3JkID0gTlVMTDsKIAotCWlmIChjb25uLT5vYXV0 aF9jbGllbnRfc2VjcmV0KQkvKiBaZXJvLWxlbmd0aCBzZWNyZXRzIGFyZSBwZXJtaXR0ZWQhICov CisJaWYgKG9hdXRoX2NsaWVudF9zZWNyZXQpCS8qIFplcm8tbGVuZ3RoIHNlY3JldHMgYXJlIHBl cm1pdHRlZCEgKi8KIAl7CiAJCS8qLS0tLQogCQkgKiBVc2UgSFRUUCBCYXNpYyBhdXRoIHRvIHNl bmQgdGhlIGNsaWVudF9pZCBhbmQgc2VjcmV0LiBQZXIgUkZDIDY3NDksCkBAIC0yMjA0LDggKzIy MzYsOCBAQCBhZGRfY2xpZW50X2lkZW50aWZpY2F0aW9uKHN0cnVjdCBhc3luY19jdHggKmFjdHgs IFBRRXhwQnVmZmVyIHJlcWJvZHksIFBHY29ubiAqYwogCQkgKiB3b3VsZCBpdCBiZSByZWR1bmRh bnQsIGJ1dCBzb21lIHByb3ZpZGVycyBpbiB0aGUgd2lsZCAoZS5nLiBPa3RhKQogCQkgKiByZWZ1 c2UgdG8gYWNjZXB0IGl0LgogCQkgKi8KLQkJdXNlcm5hbWUgPSB1cmxlbmNvZGUoY29ubi0+b2F1 dGhfY2xpZW50X2lkKTsKLQkJcGFzc3dvcmQgPSB1cmxlbmNvZGUoY29ubi0+b2F1dGhfY2xpZW50 X3NlY3JldCk7CisJCXVzZXJuYW1lID0gdXJsZW5jb2RlKG9hdXRoX2NsaWVudF9pZCk7CisJCXBh c3N3b3JkID0gdXJsZW5jb2RlKG9hdXRoX2NsaWVudF9zZWNyZXQpOwogCiAJCWlmICghdXNlcm5h bWUgfHwgIXBhc3N3b3JkKQogCQl7CkBAIC0yMjI1LDcgKzIyNTcsNyBAQCBhZGRfY2xpZW50X2lk ZW50aWZpY2F0aW9uKHN0cnVjdCBhc3luY19jdHggKmFjdHgsIFBRRXhwQnVmZmVyIHJlcWJvZHks IFBHY29ubiAqYwogCQkgKiBJZiB3ZSdyZSBub3Qgb3RoZXJ3aXNlIGF1dGhlbnRpY2F0aW5nLCBj bGllbnRfaWQgaXMgUkVRVUlSRUQgaW4gdGhlCiAJCSAqIHJlcXVlc3QgYm9keS4KIAkJICovCi0J CWJ1aWxkX3VybGVuY29kZWQocmVxYm9keSwgImNsaWVudF9pZCIsIGNvbm4tPm9hdXRoX2NsaWVu dF9pZCk7CisJCWJ1aWxkX3VybGVuY29kZWQocmVxYm9keSwgImNsaWVudF9pZCIsIG9hdXRoX2Ns aWVudF9pZCk7CiAKIAkJQ0hFQ0tfU0VUT1BUKGFjdHgsIENVUkxPUFRfSFRUUEFVVEgsIENVUkxB VVRIX05PTkUsIGdvdG8gY2xlYW51cCk7CiAJCWFjdHgtPnVzZWRfYmFzaWNfYXV0aCA9IGZhbHNl OwpAQCAtMjI1MywxNiArMjI4NSwxNyBAQCBjbGVhbnVwOgogc3RhdGljIGJvb2wKIHN0YXJ0X2Rl dmljZV9hdXRoeihzdHJ1Y3QgYXN5bmNfY3R4ICphY3R4LCBQR2Nvbm4gKmNvbm4pCiB7CisJY29u c3QgY2hhciAqb2F1dGhfc2NvcGUgPSBjb25uX29hdXRoX3Njb3BlKGNvbm4pOwogCWNvbnN0IGNo YXIgKmRldmljZV9hdXRoel91cmkgPSBhY3R4LT5wcm92aWRlci5kZXZpY2VfYXV0aG9yaXphdGlv bl9lbmRwb2ludDsKIAlQUUV4cEJ1ZmZlciB3b3JrX2J1ZmZlciA9ICZhY3R4LT53b3JrX2RhdGE7 CiAKLQlBc3NlcnQoY29ubi0+b2F1dGhfY2xpZW50X2lkKTsJLyogZW5zdXJlZCBieSBzZXR1cF9v YXV0aF9wYXJhbWV0ZXJzKCkgKi8KKwlBc3NlcnQoY29ubl9vYXV0aF9jbGllbnRfaWQoY29ubikp OyAvKiBlbnN1cmVkIGJ5IHNldHVwX29hdXRoX3BhcmFtZXRlcnMoKSAqLwogCUFzc2VydChkZXZp Y2VfYXV0aHpfdXJpKTsJLyogZW5zdXJlZCBieSBjaGVja19mb3JfZGV2aWNlX2Zsb3coKSAqLwog CiAJLyogQ29uc3RydWN0IG91ciByZXF1ZXN0IGJvZHkuICovCiAJcmVzZXRQUUV4cEJ1ZmZlcih3 b3JrX2J1ZmZlcik7Ci0JaWYgKGNvbm4tPm9hdXRoX3Njb3BlICYmIGNvbm4tPm9hdXRoX3Njb3Bl WzBdKQotCQlidWlsZF91cmxlbmNvZGVkKHdvcmtfYnVmZmVyLCAic2NvcGUiLCBjb25uLT5vYXV0 aF9zY29wZSk7CisJaWYgKG9hdXRoX3Njb3BlICYmIG9hdXRoX3Njb3BlWzBdKQorCQlidWlsZF91 cmxlbmNvZGVkKHdvcmtfYnVmZmVyLCAic2NvcGUiLCBvYXV0aF9zY29wZSk7CiAKIAlpZiAoIWFk ZF9jbGllbnRfaWRlbnRpZmljYXRpb24oYWN0eCwgd29ya19idWZmZXIsIGNvbm4pKQogCQlyZXR1 cm4gZmFsc2U7CkBAIC0yMzQ0LDcgKzIzNzcsNyBAQCBzdGFydF90b2tlbl9yZXF1ZXN0KHN0cnVj dCBhc3luY19jdHggKmFjdHgsIFBHY29ubiAqY29ubikKIAljb25zdCBjaGFyICpkZXZpY2VfY29k ZSA9IGFjdHgtPmF1dGh6LmRldmljZV9jb2RlOwogCVBRRXhwQnVmZmVyIHdvcmtfYnVmZmVyID0g JmFjdHgtPndvcmtfZGF0YTsKIAotCUFzc2VydChjb25uLT5vYXV0aF9jbGllbnRfaWQpOwkvKiBl bnN1cmVkIGJ5IHNldHVwX29hdXRoX3BhcmFtZXRlcnMoKSAqLworCUFzc2VydChjb25uX29hdXRo X2NsaWVudF9pZChjb25uKSk7IC8qIGVuc3VyZWQgYnkgc2V0dXBfb2F1dGhfcGFyYW1ldGVycygp ICovCiAJQXNzZXJ0KHRva2VuX3VyaSk7CQkJLyogZW5zdXJlZCBieSBwYXJzZV9wcm92aWRlcigp ICovCiAJQXNzZXJ0KGRldmljZV9jb2RlKTsJCS8qIGVuc3VyZWQgYnkgcGFyc2VfZGV2aWNlX2F1 dGh6KCkgKi8KIApAQCAtMjQ4Nyw4ICsyNTIwLDkgQEAgcHJvbXB0X3VzZXIoc3RydWN0IGFzeW5j X2N0eCAqYWN0eCwgUEdjb25uICpjb25uKQogCQkudmVyaWZpY2F0aW9uX3VyaV9jb21wbGV0ZSA9 IGFjdHgtPmF1dGh6LnZlcmlmaWNhdGlvbl91cmlfY29tcGxldGUsCiAJCS5leHBpcmVzX2luID0g YWN0eC0+YXV0aHouZXhwaXJlc19pbiwKIAl9OworCVBRYXV0aERhdGFIb29rX3R5cGUgaG9vayA9 IFBRZ2V0QXV0aERhdGFIb29rKCk7CiAKLQlyZXMgPSBQUWF1dGhEYXRhSG9vayhQUUFVVEhEQVRB X1BST01QVF9PQVVUSF9ERVZJQ0UsIGNvbm4sICZwcm9tcHQpOworCXJlcyA9IGhvb2soUFFBVVRI REFUQV9QUk9NUFRfT0FVVEhfREVWSUNFLCBjb25uLCAmcHJvbXB0KTsKIAogCWlmICghcmVzKQog CXsKQEAgLTI2MzMsOCArMjY2NywxMCBAQCBkb25lOgogc3RhdGljIFBvc3RncmVzUG9sbGluZ1N0 YXR1c1R5cGUKIHBnX2ZlX3J1bl9vYXV0aF9mbG93X2ltcGwoUEdjb25uICpjb25uKQogewotCWZl X29hdXRoX3N0YXRlICpzdGF0ZSA9IGNvbm4tPnNhc2xfc3RhdGU7CisJZmVfb2F1dGhfc3RhdGUg KnN0YXRlID0gY29ubl9zYXNsX3N0YXRlKGNvbm4pOwogCXN0cnVjdCBhc3luY19jdHggKmFjdHg7 CisJY2hhcgkgICAqb2F1dGhfdG9rZW4gPSBOVUxMOworCVBRRXhwQnVmZmVyIGVycmJ1ZjsKIAog CWlmICghaW5pdGlhbGl6ZV9jdXJsKGNvbm4pKQogCQlyZXR1cm4gUEdSRVNfUE9MTElOR19GQUlM RUQ7CkBAIC0yNjc2LDcgKzI3MTIsNyBAQCBwZ19mZV9ydW5fb2F1dGhfZmxvd19pbXBsKFBHY29u biAqY29ubikKIAlkbwogCXsKIAkJLyogQnkgZGVmYXVsdCwgdGhlIG11bHRpcGxleGVyIGlzIHRo ZSBhbHRzb2NrLiBSZWFzc2lnbiBhcyBkZXNpcmVkLiAqLwotCQljb25uLT5hbHRzb2NrID0gYWN0 eC0+bXV4OworCQlzZXRfY29ubl9hbHRzb2NrKGNvbm4sIGFjdHgtPm11eCk7CiAKIAkJc3dpdGNo IChhY3R4LT5zdGVwKQogCQl7CkBAIC0yNzEyLDcgKzI3NDgsNyBAQCBwZ19mZV9ydW5fb2F1dGhf Zmxvd19pbXBsKFBHY29ubiAqY29ubikKIAkJCQkgKi8KIAkJCQlpZiAoIXRpbWVyX2V4cGlyZWQo YWN0eCkpCiAJCQkJewotCQkJCQljb25uLT5hbHRzb2NrID0gYWN0eC0+dGltZXJmZDsKKwkJCQkJ c2V0X2Nvbm5fYWx0c29jayhjb25uLCBhY3R4LT50aW1lcmZkKTsKIAkJCQkJcmV0dXJuIFBHUkVT X1BPTExJTkdfUkVBRElORzsKIAkJCQl9CiAKQEAgLTI3MzIsNyArMjc2OCw3IEBAIHBnX2ZlX3J1 bl9vYXV0aF9mbG93X2ltcGwoUEdjb25uICpjb25uKQogCQl7CiAJCQljYXNlIE9BVVRIX1NURVBf SU5JVDoKIAkJCQlhY3R4LT5lcnJjdHggPSAiZmFpbGVkIHRvIGZldGNoIE9wZW5JRCBkaXNjb3Zl cnkgZG9jdW1lbnQiOwotCQkJCWlmICghc3RhcnRfZGlzY292ZXJ5KGFjdHgsIGNvbm4tPm9hdXRo X2Rpc2NvdmVyeV91cmkpKQorCQkJCWlmICghc3RhcnRfZGlzY292ZXJ5KGFjdHgsIGNvbm5fb2F1 dGhfZGlzY292ZXJ5X3VyaShjb25uKSkpCiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCiAJCQkJ YWN0eC0+c3RlcCA9IE9BVVRIX1NURVBfRElTQ09WRVJZOwpAQCAtMjc2OCw5ICsyODA0LDE1IEBA IHBnX2ZlX3J1bl9vYXV0aF9mbG93X2ltcGwoUEdjb25uICpjb25uKQogCQkJCWJyZWFrOwogCiAJ CQljYXNlIE9BVVRIX1NURVBfVE9LRU5fUkVRVUVTVDoKLQkJCQlpZiAoIWhhbmRsZV90b2tlbl9y ZXNwb25zZShhY3R4LCAmY29ubi0+b2F1dGhfdG9rZW4pKQorCQkJCWlmICghaGFuZGxlX3Rva2Vu X3Jlc3BvbnNlKGFjdHgsICZvYXV0aF90b2tlbikpCiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwog CisJCQkJLyoKKwkJCQkgKiBIb29rIGFueSBvYXV0aF90b2tlbiBpbnRvIHRoZSBQR2Nvbm4gaW1t ZWRpYXRlbHkgc28gdGhhdAorCQkJCSAqIHRoZSBhbGxvY2F0aW9uIGlzbid0IGxvc3QgaW4gY2Fz ZSBvZiBhbiBlcnJvci4KKwkJCQkgKi8KKwkJCQlzZXRfY29ubl9vYXV0aF90b2tlbihjb25uLCBv YXV0aF90b2tlbik7CisKIAkJCQlpZiAoIWFjdHgtPnVzZXJfcHJvbXB0ZWQpCiAJCQkJewogCQkJ CQkvKgpAQCAtMjc4Myw3ICsyODI1LDcgQEAgcGdfZmVfcnVuX29hdXRoX2Zsb3dfaW1wbChQR2Nv bm4gKmNvbm4pCiAJCQkJCWFjdHgtPnVzZXJfcHJvbXB0ZWQgPSB0cnVlOwogCQkJCX0KIAotCQkJ CWlmIChjb25uLT5vYXV0aF90b2tlbikKKwkJCQlpZiAob2F1dGhfdG9rZW4pCiAJCQkJCWJyZWFr OwkJLyogZG9uZSEgKi8KIAogCQkJCS8qCkBAIC0yNzk4LDcgKzI4NDAsNyBAQCBwZ19mZV9ydW5f b2F1dGhfZmxvd19pbXBsKFBHY29ubiAqY29ubikKIAkJCQkgKiB0aGUgY2xpZW50IHdhaXQgZGly ZWN0bHkgb24gdGhlIHRpbWVyZmQgcmF0aGVyIHRoYW4gdGhlCiAJCQkJICogbXVsdGlwbGV4ZXIu CiAJCQkJICovCi0JCQkJY29ubi0+YWx0c29jayA9IGFjdHgtPnRpbWVyZmQ7CisJCQkJc2V0X2Nv bm5fYWx0c29jayhjb25uLCBhY3R4LT50aW1lcmZkKTsKIAogCQkJCWFjdHgtPnN0ZXAgPSBPQVVU SF9TVEVQX1dBSVRfSU5URVJWQUw7CiAJCQkJYWN0eC0+cnVubmluZyA9IDE7CkBAIC0yODE4LDQ4 ICsyODYwLDQwIEBAIHBnX2ZlX3J1bl9vYXV0aF9mbG93X2ltcGwoUEdjb25uICpjb25uKQogCQkg KiBwb2ludCwgYWN0eC0+cnVubmluZyB3aWxsIGJlIHNldC4gQnV0IHRoZXJlIGFyZSBzb21lIGNv cm5lciBjYXNlcwogCQkgKiB3aGVyZSB3ZSBjYW4gaW1tZWRpYXRlbHkgbG9vcCBiYWNrIGFyb3Vu ZDsgc2VlIHN0YXJ0X3JlcXVlc3QoKS4KIAkJICovCi0JfSB3aGlsZSAoIWNvbm4tPm9hdXRoX3Rv a2VuICYmICFhY3R4LT5ydW5uaW5nKTsKKwl9IHdoaWxlICghb2F1dGhfdG9rZW4gJiYgIWFjdHgt PnJ1bm5pbmcpOwogCiAJLyogSWYgd2UndmUgc3RvcmVkIGEgdG9rZW4sIHdlJ3JlIGRvbmUuIE90 aGVyd2lzZSBjb21lIGJhY2sgbGF0ZXIuICovCi0JcmV0dXJuIGNvbm4tPm9hdXRoX3Rva2VuID8g UEdSRVNfUE9MTElOR19PSyA6IFBHUkVTX1BPTExJTkdfUkVBRElORzsKKwlyZXR1cm4gb2F1dGhf dG9rZW4gPyBQR1JFU19QT0xMSU5HX09LIDogUEdSRVNfUE9MTElOR19SRUFESU5HOwogCiBlcnJv cl9yZXR1cm46CisJZXJyYnVmID0gY29ubl9lcnJvck1lc3NhZ2UoY29ubik7CiAKIAkvKgogCSAq IEFzc2VtYmxlIHRoZSB0aHJlZSBwYXJ0cyBvZiBvdXIgZXJyb3I6IGNvbnRleHQsIGJvZHksIGFu ZCBkZXRhaWwuIFNlZQogCSAqIGFsc28gdGhlIGRvY3VtZW50YXRpb24gZm9yIHN0cnVjdCBhc3lu Y19jdHguCiAJICovCiAJaWYgKGFjdHgtPmVycmN0eCkKLQl7Ci0JCWFwcGVuZFBRRXhwQnVmZmVy U3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJIGxpYnBxX2dldHRleHQoYWN0eC0+ZXJy Y3R4KSk7Ci0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsICI6ICIp OwotCX0KKwkJYXBwZW5kUFFFeHBCdWZmZXIoZXJyYnVmLCAiJXM6ICIsIGxpYnBxX2dldHRleHQo YWN0eC0+ZXJyY3R4KSk7CiAKIAlpZiAoUFFFeHBCdWZmZXJEYXRhQnJva2VuKGFjdHgtPmVycmJ1 ZikpCi0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsCi0JCQkJCQkJ IGxpYnBxX2dldHRleHQoIm91dCBvZiBtZW1vcnkiKSk7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KGVycmJ1ZiwgbGlicHFfZ2V0dGV4dCgib3V0IG9mIG1lbW9yeSIpKTsKIAllbHNlCi0JCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZjb25uLT5lcnJvck1lc3NhZ2UsIGFjdHgtPmVycmJ1Zi5kYXRhKTsK KwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoZXJyYnVmLCBhY3R4LT5lcnJidWYuZGF0YSk7CiAKIAlp ZiAoYWN0eC0+Y3VybF9lcnJbMF0pCiAJewotCQlzaXplX3QJCWxlbjsKLQotCQlhcHBlbmRQUUV4 cEJ1ZmZlcigmY29ubi0+ZXJyb3JNZXNzYWdlLAotCQkJCQkJICAiIChsaWJjdXJsOiAlcykiLCBh Y3R4LT5jdXJsX2Vycik7CisJCWFwcGVuZFBRRXhwQnVmZmVyKGVycmJ1ZiwgIiAobGliY3VybDog JXMpIiwgYWN0eC0+Y3VybF9lcnIpOwogCiAJCS8qIFNvbWV0aW1lcyBsaWJjdXJsIGFkZHMgYSBu ZXdsaW5lIHRvIHRoZSBlcnJvciBidWZmZXIuIDooICovCi0JCWxlbiA9IGNvbm4tPmVycm9yTWVz c2FnZS5sZW47Ci0JCWlmIChsZW4gPj0gMiAmJiBjb25uLT5lcnJvck1lc3NhZ2UuZGF0YVtsZW4g LSAyXSA9PSAnXG4nKQorCQlpZiAoZXJyYnVmLT5sZW4gPj0gMiAmJiBlcnJidWYtPmRhdGFbZXJy YnVmLT5sZW4gLSAyXSA9PSAnXG4nKQogCQl7Ci0JCQljb25uLT5lcnJvck1lc3NhZ2UuZGF0YVts ZW4gLSAyXSA9ICcpJzsKLQkJCWNvbm4tPmVycm9yTWVzc2FnZS5kYXRhW2xlbiAtIDFdID0gJ1ww JzsKLQkJCWNvbm4tPmVycm9yTWVzc2FnZS5sZW4tLTsKKwkJCWVycmJ1Zi0+ZGF0YVtlcnJidWYt PmxlbiAtIDJdID0gJyknOworCQkJZXJyYnVmLT5kYXRhW2VycmJ1Zi0+bGVuIC0gMV0gPSAnXDAn OworCQkJZXJyYnVmLT5sZW4tLTsKIAkJfQogCX0KIAotCWFwcGVuZFBRRXhwQnVmZmVyQ2hhcigm Y29ubi0+ZXJyb3JNZXNzYWdlLCAnXG4nKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIoZXJyYnVm LCAnXG4nKTsKIAogCXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKIH0KZGlmZiAtLWdpdCBh L3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuaCBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uMjQ4ZDA0MjRhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS1vYXV0aC9vYXV0aC1jdXJsLmgKQEAgLTAsMCArMSwyNCBAQAorLyotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgKgorICogb2F1dGgtY3VybC5oCisgKgorICoJICBEZWZpbml0aW9ucyBmb3IgT0F1dGgg RGV2aWNlIEF1dGhvcml6YXRpb24gbW9kdWxlCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk2LTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0 aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2Fs aWZvcm5pYQorICoKKyAqIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuaAor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpZm5kZWYgT0FVVEhfQ1VSTF9ICisjZGVm aW5lIE9BVVRIX0NVUkxfSAorCisjaW5jbHVkZSAibGlicHEtZmUuaCIKKworLyogRXhwb3J0ZWQg YXN5bmMtYXV0aCBjYWxsYmFja3MuICovCitleHRlcm4gUEdETExFWFBPUlQgUG9zdGdyZXNQb2xs aW5nU3RhdHVzVHlwZSBwZ19mZV9ydW5fb2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pOworZXh0ZXJu IFBHRExMRVhQT1JUIHZvaWQgcGdfZmVfY2xlYW51cF9vYXV0aF9mbG93KFBHY29ubiAqY29ubik7 CisKKyNlbmRpZgkJCQkJCQkvKiBPQVVUSF9DVVJMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbnRl cmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS1v YXV0aC9vYXV0aC11dGlscy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li40NWZkYzc1NzlmMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9h dXRoL29hdXRoLXV0aWxzLmMKQEAgLTAsMCArMSwyMzMgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICoKKyAqIG9hdXRoLXV0aWxzLmMKKyAqCisgKgkgICJHbHVlIiBoZWxwZXJzIHByb3ZpZGluZyBh IGNvcHkgb2Ygc29tZSBpbnRlcm5hbCBBUElzIGZyb20gbGlicHEuIEF0CisgKgkgIHNvbWUgcG9p bnQgaW4gdGhlIGZ1dHVyZSwgd2UgbWlnaHQgYmUgYWJsZSB0byBkZWR1cGxpY2F0ZS4KKyAqCisg KiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBv ZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04KKyAq CSAgc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuYworICoKKyAqLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlc19mZS5oIgorCisjaW5jbHVkZSA8 c2lnbmFsLmg+CisKKyNpbmNsdWRlICJvYXV0aC11dGlscy5oIgorCisjaWZuZGVmIFVTRV9EWU5B TUlDX09BVVRICisjZXJyb3Igb2F1dGgtdXRpbHMuYyBpcyBub3Qgc3VwcG9ydGVkIGluIHN0YXRp YyBidWlsZHMKKyNlbmRpZgorCisjaWZkZWYgTElCUFFfSU5UX0gKKyNlcnJvciBkbyBub3QgcmVs eSBvbiBsaWJwcS1pbnQuaCBpbiBkeW5hbWljIGJ1aWxkcyBvZiBsaWJwcS1vYXV0aAorI2VuZGlm CisKKy8qCisgKiBGdW5jdGlvbiBwb2ludGVycyBzZXQgYnkgbGlicHFfb2F1dGhfaW5pdCgpLgor ICovCisKK3BndGhyZWFkbG9ja190IHBnX2dfdGhyZWFkbG9jazsKK3N0YXRpYyBsaWJwcV9nZXR0 ZXh0X2Z1bmMgbGlicHFfZ2V0dGV4dF9pbXBsOworCitjb25uX2Vycm9yTWVzc2FnZV9mdW5jIGNv bm5fZXJyb3JNZXNzYWdlOworY29ubl9vYXV0aF9jbGllbnRfaWRfZnVuYyBjb25uX29hdXRoX2Ns aWVudF9pZDsKK2Nvbm5fb2F1dGhfY2xpZW50X3NlY3JldF9mdW5jIGNvbm5fb2F1dGhfY2xpZW50 X3NlY3JldDsKK2Nvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaV9mdW5jIGNvbm5fb2F1dGhfZGlzY292 ZXJ5X3VyaTsKK2Nvbm5fb2F1dGhfaXNzdWVyX2lkX2Z1bmMgY29ubl9vYXV0aF9pc3N1ZXJfaWQ7 Citjb25uX29hdXRoX3Njb3BlX2Z1bmMgY29ubl9vYXV0aF9zY29wZTsKK2Nvbm5fc2FzbF9zdGF0 ZV9mdW5jIGNvbm5fc2FzbF9zdGF0ZTsKKworc2V0X2Nvbm5fYWx0c29ja19mdW5jIHNldF9jb25u X2FsdHNvY2s7CitzZXRfY29ubl9vYXV0aF90b2tlbl9mdW5jIHNldF9jb25uX29hdXRoX3Rva2Vu OworCisvKi0KKyAqIEluaXRpYWxpemVzIGxpYnBxLW9hdXRoIGJ5IHNldHRpbmcgbmVjZXNzYXJ5 IGNhbGxiYWNrcy4KKyAqCisgKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiByZWxpZXMgb24g dGhlIGZvbGxvd2luZyBwcml2YXRlIGltcGxlbWVudGF0aW9uCisgKiBkZXRhaWxzIG9mIGxpYnBx OgorICoKKyAqIC0gcGdfZ190aHJlYWRsb2NrOiBwcm90ZWN0cyBsaWJjdXJsIGluaXRpYWxpemF0 aW9uIGlmIHRoZSB1bmRlcmx5aW5nIEN1cmwKKyAqICAgaW5zdGFsbGF0aW9uIGlzIG5vdCB0aHJl YWRzYWZlCisgKgorICogLSBsaWJwcV9nZXR0ZXh0OiB0cmFuc2xhdGVzIGVycm9yIG1lc3NhZ2Vz IHVzaW5nIGxpYnBxJ3MgbWVzc2FnZSBkb21haW4KKyAqCisgKiBUaGUgaW1wbGVtZW50YXRpb24g YWxzbyBuZWVkcyBhY2Nlc3MgdG8gc2V2ZXJhbCBtZW1iZXJzIG9mIHRoZSBQR2Nvbm4gc3RydWN0 LAorICogd2hpY2ggYXJlIG5vdCBndWFyYW50ZWVkIHRvIHN0YXkgaW4gcGxhY2UgYWNyb3NzIG1p bm9yIHZlcnNpb25zLiBBY2Nlc3NvcnMKKyAqIChuYW1lZCBjb25uXyopIGFuZCBtdXRhdG9ycyAo bmFtZWQgc2V0X2Nvbm5fKikgYXJlIGluamVjdGVkIGhlcmUuCisgKi8KK3ZvaWQKK2xpYnBxX29h dXRoX2luaXQocGd0aHJlYWRsb2NrX3QgdGhyZWFkbG9ja19pbXBsLAorCQkJCSBsaWJwcV9nZXR0 ZXh0X2Z1bmMgZ2V0dGV4dF9pbXBsLAorCQkJCSBjb25uX2Vycm9yTWVzc2FnZV9mdW5jIGVycm1z Z19pbXBsLAorCQkJCSBjb25uX29hdXRoX2NsaWVudF9pZF9mdW5jIGNsaWVudGlkX2ltcGwsCisJ CQkJIGNvbm5fb2F1dGhfY2xpZW50X3NlY3JldF9mdW5jIGNsaWVudHNlY3JldF9pbXBsLAorCQkJ CSBjb25uX29hdXRoX2Rpc2NvdmVyeV91cmlfZnVuYyBkaXNjb3Zlcnl1cmlfaW1wbCwKKwkJCQkg Y29ubl9vYXV0aF9pc3N1ZXJfaWRfZnVuYyBpc3N1ZXJpZF9pbXBsLAorCQkJCSBjb25uX29hdXRo X3Njb3BlX2Z1bmMgc2NvcGVfaW1wbCwKKwkJCQkgY29ubl9zYXNsX3N0YXRlX2Z1bmMgc2FzbHN0 YXRlX2ltcGwsCisJCQkJIHNldF9jb25uX2FsdHNvY2tfZnVuYyBzZXRhbHRzb2NrX2ltcGwsCisJ CQkJIHNldF9jb25uX29hdXRoX3Rva2VuX2Z1bmMgc2V0dG9rZW5faW1wbCkKK3sKKwlwZ19nX3Ro cmVhZGxvY2sgPSB0aHJlYWRsb2NrX2ltcGw7CisJbGlicHFfZ2V0dGV4dF9pbXBsID0gZ2V0dGV4 dF9pbXBsOworCWNvbm5fZXJyb3JNZXNzYWdlID0gZXJybXNnX2ltcGw7CisJY29ubl9vYXV0aF9j bGllbnRfaWQgPSBjbGllbnRpZF9pbXBsOworCWNvbm5fb2F1dGhfY2xpZW50X3NlY3JldCA9IGNs aWVudHNlY3JldF9pbXBsOworCWNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaSA9IGRpc2NvdmVyeXVy aV9pbXBsOworCWNvbm5fb2F1dGhfaXNzdWVyX2lkID0gaXNzdWVyaWRfaW1wbDsKKwljb25uX29h dXRoX3Njb3BlID0gc2NvcGVfaW1wbDsKKwljb25uX3Nhc2xfc3RhdGUgPSBzYXNsc3RhdGVfaW1w bDsKKwlzZXRfY29ubl9hbHRzb2NrID0gc2V0YWx0c29ja19pbXBsOworCXNldF9jb25uX29hdXRo X3Rva2VuID0gc2V0dG9rZW5faW1wbDsKK30KKworLyoKKyAqIEFwcGVuZCBhIGZvcm1hdHRlZCBz dHJpbmcgdG8gdGhlIGVycm9yIG1lc3NhZ2UgYnVmZmVyIG9mIHRoZSBnaXZlbgorICogY29ubmVj dGlvbiwgYWZ0ZXIgdHJhbnNsYXRpbmcgaXQuICBUaGlzIGlzIGEgY29weSBvZiBsaWJwcSdzIGlu dGVybmFsIEFQSS4KKyAqLwordm9pZAorbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoUEdjb25uICpj b25uLCBjb25zdCBjaGFyICpmbXQsLi4uKQoreworCWludAkJCXNhdmVfZXJybm8gPSBlcnJubzsK Kwlib29sCQlkb25lOworCXZhX2xpc3QJCWFyZ3M7CisJUFFFeHBCdWZmZXIgZXJyb3JNZXNzYWdl ID0gY29ubl9lcnJvck1lc3NhZ2UoY29ubik7CisKKwlBc3NlcnQoZm10W3N0cmxlbihmbXQpIC0g MV0gIT0gJ1xuJyk7CisKKwlpZiAoUFFFeHBCdWZmZXJCcm9rZW4oZXJyb3JNZXNzYWdlKSkKKwkJ cmV0dXJuOwkJCQkJLyogYWxyZWFkeSBmYWlsZWQgKi8KKworCS8qIExvb3AgaW4gY2FzZSB3ZSBo YXZlIHRvIHJldHJ5IGFmdGVyIGVubGFyZ2luZyB0aGUgYnVmZmVyLiAqLworCWRvCisJeworCQll cnJubyA9IHNhdmVfZXJybm87CisJCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisJCWRvbmUgPSBhcHBl bmRQUUV4cEJ1ZmZlclZBKGVycm9yTWVzc2FnZSwgbGlicHFfZ2V0dGV4dChmbXQpLCBhcmdzKTsK KwkJdmFfZW5kKGFyZ3MpOworCX0gd2hpbGUgKCFkb25lKTsKKworCWFwcGVuZFBRRXhwQnVmZmVy Q2hhcihlcnJvck1lc3NhZ2UsICdcbicpOworfQorCisjaWZkZWYgRU5BQkxFX05MUworCisvKgor ICogQSBzaGltIHRoYXQgZGVmZXJzIHRvIHRoZSBhY3R1YWwgbGlicHFfZ2V0dGV4dCgpLgorICov CitjaGFyICoKK2xpYnBxX2dldHRleHQoY29uc3QgY2hhciAqbXNnaWQpCit7CisJaWYgKCFsaWJw cV9nZXR0ZXh0X2ltcGwpCisJeworCQkvKgorCQkgKiBQb3NzaWJsZSBpZiB0aGUgbGlicHEgYnVp bGQgZGlkbid0IGVuYWJsZSBOTFMgYnV0IHRoZSBsaWJwcS1vYXV0aAorCQkgKiBidWlsZCBkaWQu IFRoYXQncyBhbiBvZGQgbWlzbWF0Y2gsIGJ1dCB3ZSBjYW4gaGFuZGxlIGl0LgorCQkgKgorCQkg KiBOb3RlIHRoYXQgY2FsbGVycyBvZiBsaWJwcV9nZXR0ZXh0KCkgaGF2ZSB0byB0cmVhdCB0aGUg cmV0dXJuIHZhbHVlCisJCSAqIGFzIGlmIGl0IHdlcmUgY29uc3QsIGJlY2F1c2UgYnVpbGRzIHdp dGhvdXQgTkxTIHNpbXBseSBwYXNzIHRocm91Z2gKKwkJICogdGhlaXIgYXJndW1lbnQuCisJCSAq LworCQlyZXR1cm4gdW5jb25zdGlmeShjaGFyICosIG1zZ2lkKTsKKwl9CisKKwlyZXR1cm4gbGli cHFfZ2V0dGV4dF9pbXBsKG1zZ2lkKTsKK30KKworI2VuZGlmCQkJCQkJCS8qIEVOQUJMRV9OTFMg Ki8KKworLyoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgUEdPQVVUSERFQlVHPVVOU0FGRSBmbGFn IGlzIHNldCBpbiB0aGUgZW52aXJvbm1lbnQuCisgKi8KK2Jvb2wKK29hdXRoX3Vuc2FmZV9kZWJ1 Z2dpbmdfZW5hYmxlZCh2b2lkKQoreworCWNvbnN0IGNoYXIgKmVudiA9IGdldGVudigiUEdPQVVU SERFQlVHIik7CisKKwlyZXR1cm4gKGVudiAmJiBzdHJjbXAoZW52LCAiVU5TQUZFIikgPT0gMCk7 Cit9CisKKy8qCisgKiBEdXBsaWNhdGUgU09DS19FUlJOTyogZGVmaW5pdGlvbnMgZnJvbSBsaWJw cS1pbnQuaCwgZm9yIHVzZSBieQorICogcHFfYmxvY2svcmVzZXRfc2lncGlwZSgpLgorICovCisj aWZkZWYgV0lOMzIKKyNkZWZpbmUgU09DS19FUlJOTyAoV1NBR2V0TGFzdEVycm9yKCkpCisjZGVm aW5lIFNPQ0tfRVJSTk9fU0VUKGUpIFdTQVNldExhc3RFcnJvcihlKQorI2Vsc2UKKyNkZWZpbmUg U09DS19FUlJOTyBlcnJubworI2RlZmluZSBTT0NLX0VSUk5PX1NFVChlKSAoZXJybm8gPSAoZSkp CisjZW5kaWYKKworLyoKKyAqCUJsb2NrIFNJR1BJUEUgZm9yIHRoaXMgdGhyZWFkLiBUaGlzIGlz IGEgY29weSBvZiBsaWJwcSdzIGludGVybmFsIEFQSS4KKyAqLworaW50CitwcV9ibG9ja19zaWdw aXBlKHNpZ3NldF90ICpvc2lnc2V0LCBib29sICpzaWdwaXBlX3BlbmRpbmcpCit7CisJc2lnc2V0 X3QJc2lncGlwZV9zaWdzZXQ7CisJc2lnc2V0X3QJc2lnc2V0OworCisJc2lnZW1wdHlzZXQoJnNp Z3BpcGVfc2lnc2V0KTsKKwlzaWdhZGRzZXQoJnNpZ3BpcGVfc2lnc2V0LCBTSUdQSVBFKTsKKwor CS8qIEJsb2NrIFNJR1BJUEUgYW5kIHNhdmUgcHJldmlvdXMgbWFzayBmb3IgbGF0ZXIgcmVzZXQg Ki8KKwlTT0NLX0VSUk5PX1NFVChwdGhyZWFkX3NpZ21hc2soU0lHX0JMT0NLLCAmc2lncGlwZV9z aWdzZXQsIG9zaWdzZXQpKTsKKwlpZiAoU09DS19FUlJOTykKKwkJcmV0dXJuIC0xOworCisJLyog V2UgY2FuIGhhdmUgYSBwZW5kaW5nIFNJR1BJUEUgb25seSBpZiBpdCB3YXMgYmxvY2tlZCBiZWZv cmUgKi8KKwlpZiAoc2lnaXNtZW1iZXIob3NpZ3NldCwgU0lHUElQRSkpCisJeworCQkvKiBJcyB0 aGVyZSBhIHBlbmRpbmcgU0lHUElQRT8gKi8KKwkJaWYgKHNpZ3BlbmRpbmcoJnNpZ3NldCkgIT0g MCkKKwkJCXJldHVybiAtMTsKKworCQlpZiAoc2lnaXNtZW1iZXIoJnNpZ3NldCwgU0lHUElQRSkp CisJCQkqc2lncGlwZV9wZW5kaW5nID0gdHJ1ZTsKKwkJZWxzZQorCQkJKnNpZ3BpcGVfcGVuZGlu ZyA9IGZhbHNlOworCX0KKwllbHNlCisJCSpzaWdwaXBlX3BlbmRpbmcgPSBmYWxzZTsKKworCXJl dHVybiAwOworfQorCisvKgorICoJRGlzY2FyZCBhbnkgcGVuZGluZyBTSUdQSVBFIGFuZCByZXNl dCB0aGUgc2lnbmFsIG1hc2suIFRoaXMgaXMgYSBjb3B5IG9mCisgKglsaWJwcSdzIGludGVybmFs IEFQSS4KKyAqLwordm9pZAorcHFfcmVzZXRfc2lncGlwZShzaWdzZXRfdCAqb3NpZ3NldCwgYm9v bCBzaWdwaXBlX3BlbmRpbmcsIGJvb2wgZ290X2VwaXBlKQoreworCWludAkJCXNhdmVfZXJybm8g PSBTT0NLX0VSUk5POworCWludAkJCXNpZ25vOworCXNpZ3NldF90CXNpZ3NldDsKKworCS8qIENs ZWFyIFNJR1BJUEUgb25seSBpZiBub25lIHdhcyBwZW5kaW5nICovCisJaWYgKGdvdF9lcGlwZSAm JiAhc2lncGlwZV9wZW5kaW5nKQorCXsKKwkJaWYgKHNpZ3BlbmRpbmcoJnNpZ3NldCkgPT0gMCAm JgorCQkJc2lnaXNtZW1iZXIoJnNpZ3NldCwgU0lHUElQRSkpCisJCXsKKwkJCXNpZ3NldF90CXNp Z3BpcGVfc2lnc2V0OworCisJCQlzaWdlbXB0eXNldCgmc2lncGlwZV9zaWdzZXQpOworCQkJc2ln YWRkc2V0KCZzaWdwaXBlX3NpZ3NldCwgU0lHUElQRSk7CisKKwkJCXNpZ3dhaXQoJnNpZ3BpcGVf c2lnc2V0LCAmc2lnbm8pOworCQl9CisJfQorCisJLyogUmVzdG9yZSBzYXZlZCBibG9jayBtYXNr ICovCisJcHRocmVhZF9zaWdtYXNrKFNJR19TRVRNQVNLLCBvc2lnc2V0LCBOVUxMKTsKKworCVNP Q0tfRVJSTk9fU0VUKHNhdmVfZXJybm8pOworfQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMv bGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuaCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29h dXRoLXV0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY0ZmZl ZmVmMjA4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEtb2F1dGgvb2F1 dGgtdXRpbHMuaApAQCAtMCwwICsxLDk0IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBv YXV0aC11dGlscy5oCisgKgorICoJICBEZWZpbml0aW9ucyBwcm92aWRpbmcgbWlzc2luZyBsaWJw cSBpbnRlcm5hbCBBUElzCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjUs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmln aHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoK KyAqIHNyYy9pbnRlcmZhY2VzL2xpYnBxLW9hdXRoL29hdXRoLXV0aWxzLmgKKyAqCisgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLworCisjaWZuZGVmIE9BVVRIX1VUSUxTX0gKKyNkZWZpbmUgT0FVVEhf VVRJTFNfSAorCisjaW5jbHVkZSAiZmUtYXV0aC1vYXV0aC5oIgorI2luY2x1ZGUgImxpYnBxLWZl LmgiCisjaW5jbHVkZSAicHFleHBidWZmZXIuaCIKKworLyoKKyAqIEEgYmFuayBvZiBjYWxsYmFj a3MgdG8gc2FmZWx5IGFjY2VzcyBtZW1iZXJzIG9mIFBHY29ubiwgd2hpY2ggYXJlIGFsbCBwYXNz ZWQKKyAqIHRvIGxpYnBxX29hdXRoX2luaXQoKSBieSBsaWJwcS4KKyAqCisgKiBLZWVwIHRoZXNl IGFsaWduZWQgd2l0aCB0aGUgZGVmaW5pdGlvbnMgaW4gZmUtYXV0aC1vYXV0aC5jIGFzIHdlbGwg YXMgdGhlCisgKiBzdGF0aWMgZGVjbGFyYXRpb25zIGluIG9hdXRoLWN1cmwuYy4KKyAqLworI2Rl ZmluZSBERUNMQVJFX0dFVFRFUihUWVBFLCBNRU1CRVIpIFwKKwl0eXBlZGVmIFRZUEUgKCpjb25u XyAjIyBNRU1CRVIgIyMgX2Z1bmMpIChQR2Nvbm4gKmNvbm4pOyBcCisJZXh0ZXJuIGNvbm5fICMj IE1FTUJFUiAjIyBfZnVuYyBjb25uXyAjIyBNRU1CRVI7CisKKyNkZWZpbmUgREVDTEFSRV9TRVRU RVIoVFlQRSwgTUVNQkVSKSBcCisJdHlwZWRlZiB2b2lkICgqc2V0X2Nvbm5fICMjIE1FTUJFUiAj IyBfZnVuYykgKFBHY29ubiAqY29ubiwgVFlQRSB2YWwpOyBcCisJZXh0ZXJuIHNldF9jb25uXyAj IyBNRU1CRVIgIyMgX2Z1bmMgc2V0X2Nvbm5fICMjIE1FTUJFUjsKKworREVDTEFSRV9HRVRURVIo UFFFeHBCdWZmZXIsIGVycm9yTWVzc2FnZSk7CitERUNMQVJFX0dFVFRFUihjaGFyICosIG9hdXRo X2NsaWVudF9pZCk7CitERUNMQVJFX0dFVFRFUihjaGFyICosIG9hdXRoX2NsaWVudF9zZWNyZXQp OworREVDTEFSRV9HRVRURVIoY2hhciAqLCBvYXV0aF9kaXNjb3ZlcnlfdXJpKTsKK0RFQ0xBUkVf R0VUVEVSKGNoYXIgKiwgb2F1dGhfaXNzdWVyX2lkKTsKK0RFQ0xBUkVfR0VUVEVSKGNoYXIgKiwg b2F1dGhfc2NvcGUpOworREVDTEFSRV9HRVRURVIoZmVfb2F1dGhfc3RhdGUgKiwgc2FzbF9zdGF0 ZSk7CisKK0RFQ0xBUkVfU0VUVEVSKHBnc29ja2V0LCBhbHRzb2NrKTsKK0RFQ0xBUkVfU0VUVEVS KGNoYXIgKiwgb2F1dGhfdG9rZW4pOworCisjdW5kZWYgREVDTEFSRV9HRVRURVIKKyN1bmRlZiBE RUNMQVJFX1NFVFRFUgorCit0eXBlZGVmIGNoYXIgKigqbGlicHFfZ2V0dGV4dF9mdW5jKSAoY29u c3QgY2hhciAqbXNnaWQpOworCisvKiBJbml0aWFsaXplcyBsaWJwcS1vYXV0aC4gKi8KK2V4dGVy biBQR0RMTEVYUE9SVCB2b2lkIGxpYnBxX29hdXRoX2luaXQocGd0aHJlYWRsb2NrX3QgdGhyZWFk bG9jaywKKwkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4dF9mdW5jIGdldHRleHRfaW1wbCwKKwkJCQkJ CQkJCQkgY29ubl9lcnJvck1lc3NhZ2VfZnVuYyBlcnJtc2dfaW1wbCwKKwkJCQkJCQkJCQkgY29u bl9vYXV0aF9jbGllbnRfaWRfZnVuYyBjbGllbnRpZF9pbXBsLAorCQkJCQkJCQkJCSBjb25uX29h dXRoX2NsaWVudF9zZWNyZXRfZnVuYyBjbGllbnRzZWNyZXRfaW1wbCwKKwkJCQkJCQkJCQkgY29u bl9vYXV0aF9kaXNjb3ZlcnlfdXJpX2Z1bmMgZGlzY292ZXJ5dXJpX2ltcGwsCisJCQkJCQkJCQkJ IGNvbm5fb2F1dGhfaXNzdWVyX2lkX2Z1bmMgaXNzdWVyaWRfaW1wbCwKKwkJCQkJCQkJCQkgY29u bl9vYXV0aF9zY29wZV9mdW5jIHNjb3BlX2ltcGwsCisJCQkJCQkJCQkJIGNvbm5fc2FzbF9zdGF0 ZV9mdW5jIHNhc2xzdGF0ZV9pbXBsLAorCQkJCQkJCQkJCSBzZXRfY29ubl9hbHRzb2NrX2Z1bmMg c2V0YWx0c29ja19pbXBsLAorCQkJCQkJCQkJCSBzZXRfY29ubl9vYXV0aF90b2tlbl9mdW5jIHNl dHRva2VuX2ltcGwpOworCisvKgorICogRHVwbGljYXRlZCBBUElzLCBjb3BpZWQgZnJvbSBsaWJw cSAocHJpbWFyaWx5IGxpYnBxLWludC5oLCB3aGljaCB3ZSBjYW5ub3QKKyAqIGRlcGVuZCBvbiBo ZXJlKS4KKyAqLworCit0eXBlZGVmIGVudW0KK3sKKwlQR19CT09MX1VOS05PV04gPSAwLAkJLyog Q3VycmVudGx5IHVua25vd24gKi8KKwlQR19CT09MX1lFUywJCQkJLyogWWVzICh0cnVlKSAqLwor CVBHX0JPT0xfTk8JCQkJCS8qIE5vIChmYWxzZSkgKi8KK30gUEdUZXJuYXJ5Qm9vbDsKKworZXh0 ZXJuIHZvaWQgbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoUEdjb25uICpjb25uLCBjb25zdCBjaGFy ICpmbXQsLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDIsIDMpOworZXh0ZXJuIGJvb2wgb2F1dGhf dW5zYWZlX2RlYnVnZ2luZ19lbmFibGVkKHZvaWQpOworZXh0ZXJuIGludAlwcV9ibG9ja19zaWdw aXBlKHNpZ3NldF90ICpvc2lnc2V0LCBib29sICpzaWdwaXBlX3BlbmRpbmcpOworZXh0ZXJuIHZv aWQgcHFfcmVzZXRfc2lncGlwZShzaWdzZXRfdCAqb3NpZ3NldCwgYm9vbCBzaWdwaXBlX3BlbmRp bmcsIGJvb2wgZ290X2VwaXBlKTsKKworI2lmZGVmIEVOQUJMRV9OTFMKK2V4dGVybiBjaGFyICps aWJwcV9nZXR0ZXh0KGNvbnN0IGNoYXIgKm1zZ2lkKSBwZ19hdHRyaWJ1dGVfZm9ybWF0X2FyZygx KTsKKyNlbHNlCisjZGVmaW5lIGxpYnBxX2dldHRleHQoeCkgKHgpCisjZW5kaWYKKworZXh0ZXJu IHBndGhyZWFkbG9ja190IHBnX2dfdGhyZWFkbG9jazsKKworI2RlZmluZSBwZ2xvY2tfdGhyZWFk KCkJCXBnX2dfdGhyZWFkbG9jayh0cnVlKQorI2RlZmluZSBwZ3VubG9ja190aHJlYWQoKQlwZ19n X3RocmVhZGxvY2soZmFsc2UpCisKKyNlbmRpZgkJCQkJCQkvKiBPQVVUSF9VVElMU19IICovCmRp ZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZSBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL01ha2VmaWxlCmluZGV4IDkwYjBiNjVkYjZmLi5jNmZlNWZlYzdmNiAxMDA2NDQKLS0t IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUKKysrIGIvc3JjL2ludGVyZmFjZXMvbGli cHEvTWFrZWZpbGUKQEAgLTMxLDcgKzMxLDYgQEAgZW5kaWYKIAogT0JKUyA9IFwKIAkkKFdJTjMy UkVTKSBcCi0JZmUtYXV0aC1vYXV0aC5vIFwKIAlmZS1hdXRoLXNjcmFtLm8gXAogCWZlLWNhbmNl bC5vIFwKIAlmZS1jb25uZWN0Lm8gXApAQCAtNjQsOSArNjMsMTEgQEAgT0JKUyArPSBcCiAJZmUt c2VjdXJlLWdzc2FwaS5vCiBlbmRpZgogCi1pZmVxICgkKHdpdGhfbGliY3VybCkseWVzKQotT0JK UyArPSBmZS1hdXRoLW9hdXRoLWN1cmwubwotZW5kaWYKKyMgVGhlIE9BdXRoIGltcGxlbWVudGF0 aW9uIGRpZmZlcnMgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGxpYnJhcnkgYmVpbmcgYnVpbHQu CitPQkpTX1NUQVRJQyA9IGZlLWF1dGgtb2F1dGgubworCitmZS1hdXRoLW9hdXRoX3NobGliLm86 IG92ZXJyaWRlIENQUEZMQUdTX1NITElCICs9IC1EVVNFX0RZTkFNSUNfT0FVVEgKK09CSlNfU0hM SUIgPSBmZS1hdXRoLW9hdXRoX3NobGliLm8KIAogaWZlcSAoJChQT1JUTkFNRSksIGN5Z3dpbikK IG92ZXJyaWRlIHNobGliID0gY3lnJChOQU1FKSQoRExTVUZGSVgpCkBAIC04Niw3ICs4Nyw3IEBA IGVuZGlmCiAjIHRoYXQgYXJlIGJ1aWx0IGNvcnJlY3RseSBmb3IgdXNlIGluIGEgc2hsaWIuCiBT SExJQl9MSU5LX0lOVEVSTkFMID0gLWxwZ2NvbW1vbl9zaGxpYiAtbHBncG9ydF9zaGxpYgogaWZu ZXEgKCQoUE9SVE5BTUUpLCB3aW4zMikKLVNITElCX0xJTksgKz0gJChmaWx0ZXIgLWxjcnlwdCAt bGRlcyAtbGNvbV9lcnIgLWxjcnlwdG8gLWxrNWNyeXB0byAtbGtyYjUgLWxnc3NhcGlfa3JiNSAt bGdzcyAtbGdzc2FwaSAtbHNzbCAtbGN1cmwgLWxzb2NrZXQgLWxuc2wgLWxyZXNvbHYgLWxpbnRs IC1sbSwgJChMSUJTKSkgJChMREFQX0xJQlNfRkUpICQoUFRIUkVBRF9MSUJTKQorU0hMSUJfTElO SyArPSAkKGZpbHRlciAtbGNyeXB0IC1sZGVzIC1sY29tX2VyciAtbGNyeXB0byAtbGs1Y3J5cHRv IC1sa3JiNSAtbGdzc2FwaV9rcmI1IC1sZ3NzIC1sZ3NzYXBpIC1sc3NsIC1sc29ja2V0IC1sbnNs IC1scmVzb2x2IC1saW50bCAtbG0sICQoTElCUykpICQoTERBUF9MSUJTX0ZFKSAkKFBUSFJFQURf TElCUykKIGVsc2UKIFNITElCX0xJTksgKz0gJChmaWx0ZXIgLWxjcnlwdCAtbGRlcyAtbGNvbV9l cnIgLWxjcnlwdG8gLWxrNWNyeXB0byAtbGtyYjUgLWxnc3NhcGkzMiAtbHNzbCAtbHNvY2tldCAt bG5zbCAtbHJlc29sdiAtbGludGwgLWxtICQoUFRIUkVBRF9MSUJTKSwgJChMSUJTKSkgJChMREFQ X0xJQlNfRkUpCiBlbmRpZgpAQCAtMTAxLDEyICsxMDIsMjYgQEAgaWZlcSAoJCh3aXRoX3NzbCks b3BlbnNzbCkKIFBLR19DT05GSUdfUkVRVUlSRVNfUFJJVkFURSA9IGxpYnNzbCwgbGliY3J5cHRv CiBlbmRpZgogCitpZmVxICgkKHdpdGhfbGliY3VybCkseWVzKQorIyBsaWJwcS5zbyBkb2Vzbid0 IGxpbmsgYWdhaW5zdCBsaWJjdXJsLCBidXQgbGlicHEuYSBuZWVkcyBsaWJwcS1vYXV0aCwgYW5k CisjIGxpYnBxLW9hdXRoIG5lZWRzIGxpYmN1cmwuIFB1dCBib3RoIGludG8gKi5wcml2YXRlLgor UEtHX0NPTkZJR19SRVFVSVJFU19QUklWQVRFICs9IGxpYmN1cmwKKyUucGM6IG92ZXJyaWRlIFNI TElCX0xJTktfSU5URVJOQUwgKz0gLWxwcS1vYXV0aAorZW5kaWYKKwogYWxsOiBhbGwtbGliIGxp YnBxLXJlZnMtc3RhbXAKIAogIyBTaGFyZWQgbGlicmFyeSBzdHVmZgogaW5jbHVkZSAkKHRvcF9z cmNkaXIpL3NyYy9NYWtlZmlsZS5zaGxpYgogYmFja2VuZF9zcmMgPSAkKHRvcF9zcmNkaXIpL3Ny Yy9iYWNrZW5kCiAKKyMgQWRkIHNobGliLS9zdGxpYi1zcGVjaWZpYyBvYmplY3RzLgorJChzaGxp Yik6IG92ZXJyaWRlIE9CSlMgKz0gJChPQkpTX1NITElCKQorJChzaGxpYik6ICQoT0JKU19TSExJ QikKKworJChzdGxpYik6IG92ZXJyaWRlIE9CSlMgKz0gJChPQkpTX1NUQVRJQykKKyQoc3RsaWIp OiAkKE9CSlNfU1RBVElDKQorCiAjIENoZWNrIGZvciBmdW5jdGlvbnMgdGhhdCBsaWJwcSBtdXN0 IG5vdCBjYWxsLCBjdXJyZW50bHkganVzdCBleGl0KCkuCiAjIChJZGVhbGx5IHdlJ2QgcmVqZWN0 IGFib3J0KCkgdG9vLCBidXQgdGhlcmUgYXJlIHZhcmlvdXMgc2NlbmFyaW9zIHdoZXJlCiAjIGJ1 aWxkIHRvb2xjaGFpbnMgaW5zZXJ0IGFib3J0KCkgY2FsbHMsIGUuZy4gdG8gaW1wbGVtZW50IGFz c2VydCgpLikKQEAgLTExNSw4ICsxMzAsNiBAQCBiYWNrZW5kX3NyYyA9ICQodG9wX3NyY2Rpcikv c3JjL2JhY2tlbmQKICMgd2hpY2ggc2VlbXMgdG8gaW5zZXJ0IHJlZmVyZW5jZXMgdG8gdGhhdCBl dmVuIGluIHB1cmUgQyBjb2RlLiBFeGNsdWRpbmcKICMgX190c2FuX2Z1bmNfZXhpdCBpcyBuZWNl c3Nhcnkgd2hlbiB1c2luZyBUaHJlYWRTYW5pdGl6ZXIgZGF0YSByYWNlIGRldGVjdG9yCiAjIHdo aWNoIHVzZSB0aGlzIGZ1bmN0aW9uIGZvciBpbnN0cnVtZW50YXRpb24gb2YgZnVuY3Rpb24gZXhp dC4KLSMgbGliY3VybCByZWdpc3RlcnMgYW4gZXhpdCBoYW5kbGVyIGluIHRoZSBtZW1vcnkgZGVi dWdnaW5nIGNvZGUgd2hlbiBydW5uaW5nCi0jIHdpdGggTGVha1Nhbml0aXplci4KICMgU2tpcCB0 aGUgdGVzdCB3aGVuIHByb2ZpbGluZywgYXMgZ2NjIG1heSBpbnNlcnQgZXhpdCgpIGNhbGxzIGZv ciB0aGF0LgogIyBBbHNvIHNraXAgdGhlIHRlc3Qgb24gcGxhdGZvcm1zIHdoZXJlIGxpYnBxIGlu ZnJhc3RydWN0dXJlIG1heSBiZSBwcm92aWRlZAogIyBieSBzdGF0aWNhbGx5LWxpbmtlZCBsaWJy YXJpZXMsIGFzIHdlIGNhbid0IGV4cGVjdCB0aGVtIHRvIGhvbm9yIHRoaXMKQEAgLTEyNCw3ICsx MzcsNyBAQCBiYWNrZW5kX3NyYyA9ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQKIGxpYnBxLXJl ZnMtc3RhbXA6ICQoc2hsaWIpCiBpZm5lcSAoJChlbmFibGVfY292ZXJhZ2UpLCB5ZXMpCiBpZmVx ICgsJChmaWx0ZXIgc29sYXJpcywkKFBPUlROQU1FKSkpCi0JQGlmIG5tIC1BIC11ICQ8IDI+L2Rl di9udWxsIHwgZ3JlcCAtdiAtZSBfX2N4YV9hdGV4aXQgLWUgX190c2FuX2Z1bmNfZXhpdCAtZSBf YXRleGl0IHwgZ3JlcCBleGl0OyB0aGVuIFwKKwlAaWYgbm0gLUEgLXUgJDwgMj4vZGV2L251bGwg fCBncmVwIC12IC1lIF9fY3hhX2F0ZXhpdCAtZSBfX3RzYW5fZnVuY19leGl0IHwgZ3JlcCBleGl0 OyB0aGVuIFwKIAkJZWNobyAnbGlicHEgbXVzdCBub3QgYmUgY2FsbGluZyBhbnkgZnVuY3Rpb24g d2hpY2ggaW52b2tlcyBleGl0JzsgZXhpdCAxOyBcCiAJZmkKIGVuZGlmCkBAIC0xMzgsNiArMTUx LDExIEBAIGZlLW1pc2MubzogZmUtbWlzYy5jICQodG9wX2J1aWxkZGlyKS9zcmMvcG9ydC9wZ19j b25maWdfcGF0aHMuaAogJCh0b3BfYnVpbGRkaXIpL3NyYy9wb3J0L3BnX2NvbmZpZ19wYXRocy5o OgogCSQoTUFLRSkgLUMgJCh0b3BfYnVpbGRkaXIpL3NyYy9wb3J0IHBnX2NvbmZpZ19wYXRocy5o CiAKKyMgVXNlIHNyYy9jb21tb24vTWFrZWZpbGUncyB0cmljayBmb3IgdHJhY2tpbmcgZGVwZW5k ZW5jaWVzIG9mIHNobGliLXNwZWNpZmljCisjIG9iamVjdHMuCislX3NobGliLm86ICUuYyAlLm8K KwkkKENDKSAkKENGTEFHUykgJChDRkxBR1NfU0wpICQoQ1BQRkxBR1MpICQoQ1BQRkxBR1NfU0hM SUIpIC1jICQ8IC1vICRACisKIGluc3RhbGw6IGFsbCBpbnN0YWxsZGlycyBpbnN0YWxsLWxpYgog CSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvbGlicHEtZmUuaCAnJChERVNURElSKSQoaW5jbHVk ZWRpciknCiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9saWJwcS1ldmVudHMuaCAnJChERVNU RElSKSQoaW5jbHVkZWRpciknCkBAIC0xNzEsNiArMTg5LDYgQEAgdW5pbnN0YWxsOiB1bmluc3Rh bGwtbGliCiBjbGVhbiBkaXN0Y2xlYW46IGNsZWFuLWxpYgogCSQoTUFLRSkgLUMgdGVzdCAkQAog CXJtIC1yZiB0bXBfY2hlY2sKLQlybSAtZiAkKE9CSlMpIHB0aHJlYWQuaCBsaWJwcS1yZWZzLXN0 YW1wCisJcm0gLWYgJChPQkpTKSAkKE9CSlNfU0hMSUIpICQoT0JKU19TVEFUSUMpIHB0aHJlYWQu aCBsaWJwcS1yZWZzLXN0YW1wCiAjIE1pZ2h0IGJlIGxlZnQgb3ZlciBmcm9tIGEgV2luMzIgY2xp ZW50LW9ubHkgYnVpbGQKIAlybSAtZiBwZ19jb25maWdfcGF0aHMuaApkaWZmIC0tZ2l0IGEvc3Jj L2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBv cnRzLnR4dAppbmRleCBkNTE0Mzc2Njg1OC4uMDYyNWNmMzllOWEgMTAwNjQ0Ci0tLSBhL3NyYy9p bnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0CisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4 cG9ydHMudHh0CkBAIC0yMTAsMyArMjEwLDQgQEAgUFFzZXRBdXRoRGF0YUhvb2sgICAgICAgICAy MDcKIFBRZ2V0QXV0aERhdGFIb29rICAgICAgICAgMjA4CiBQUWRlZmF1bHRBdXRoRGF0YUhvb2sg ICAgIDIwOQogUFFmdWxsUHJvdG9jb2xWZXJzaW9uICAgICAyMTAKK2FwcGVuZFBRRXhwQnVmZmVy VkEgICAgICAgMjExCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9h dXRoLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmMKaW5kZXggYWI2YTQ1 ZTJhYmEuLjlmYmZmODlhMjFkIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1h dXRoLW9hdXRoLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5jCkBA IC0xNSw2ICsxNSwxMCBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKIAorI2lmZGVmIFVT RV9EWU5BTUlDX09BVVRICisjaW5jbHVkZSA8ZGxmY24uaD4KKyNlbmRpZgorCiAjaW5jbHVkZSAi Y29tbW9uL2Jhc2U2NC5oIgogI2luY2x1ZGUgImNvbW1vbi9obWFjLmgiCiAjaW5jbHVkZSAiY29t bW9uL2pzb25hcGkuaCIKQEAgLTIyLDYgKzI2LDcgQEAKICNpbmNsdWRlICJmZS1hdXRoLmgiCiAj aW5jbHVkZSAiZmUtYXV0aC1vYXV0aC5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCisjaW5j bHVkZSAicGdfY29uZmlnX3BhdGhzLmgiCiAKIC8qIFRoZSBleHBvcnRlZCBPQXV0aCBjYWxsYmFj ayBtZWNoYW5pc20uICovCiBzdGF0aWMgdm9pZCAqb2F1dGhfaW5pdChQR2Nvbm4gKmNvbm4sIGNv bnN0IGNoYXIgKnBhc3N3b3JkLApAQCAtNzIxLDYgKzcyNiwyMTggQEAgY2xlYW51cF91c2VyX29h dXRoX2Zsb3coUEdjb25uICpjb25uKQogCXN0YXRlLT5hc3luY19jdHggPSBOVUxMOwogfQogCisv Ki0tLS0tLS0tLS0tLS0KKyAqIEJ1aWx0aW4gRmxvdworICoKKyAqIFRoZXJlIGFyZSB0aHJlZSBw b3RlbnRpYWwgaW1wbGVtZW50YXRpb25zIG9mIHVzZV9idWlsdGluX2Zsb3c6CisgKgorICogMSkg SWYgdGhlIE9BdXRoIGNsaWVudCBpcyBkaXNhYmxlZCBhdCBjb25maWd1cmF0aW9uIHRpbWUsIHJl dHVybiBmYWxzZS4KKyAqICAgIERlcGVuZGVudCBjbGllbnRzIG11c3QgcHJvdmlkZSB0aGVpciBv d24gZmxvdy4KKyAqIDIpIElmIHRoZSBPQXV0aCBjbGllbnQgaXMgZW5hYmxlZCBhbmQgVVNFX0RZ TkFNSUNfT0FVVEggaXMgZGVmaW5lZCwgZGxvcGVuKCkKKyAqICAgIHRoZSBsaWJwcS1vYXV0aCBw bHVnaW4gYW5kIHVzZSBpdHMgaW1wbGVtZW50YXRpb24uCisgKiAzKSBPdGhlcndpc2UsIHVzZSBm bG93IGNhbGxiYWNrcyB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZQorICogICAg ZXhlY3V0YWJsZS4KKyAqLworCisjaWYgIWRlZmluZWQoVVNFX0xJQkNVUkwpCisKKy8qCisgKiBU aGlzIGNvbmZpZ3VyYXRpb24gZG9lc24ndCBzdXBwb3J0IHRoZSBidWlsdGluIGZsb3cuCisgKi8K KworYm9vbAordXNlX2J1aWx0aW5fZmxvdyhQR2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpz dGF0ZSkKK3sKKwlyZXR1cm4gZmFsc2U7Cit9CisKKyNlbGlmIGRlZmluZWQoVVNFX0RZTkFNSUNf T0FVVEgpCisKKy8qCisgKiBVc2UgdGhlIGJ1aWx0aW4gZmxvdyBpbiB0aGUgbGlicHEtb2F1dGgg cGx1Z2luLCB3aGljaCBpcyBsb2FkZWQgYXQgcnVudGltZS4KKyAqLworCit0eXBlZGVmIGNoYXIg KigqbGlicHFfZ2V0dGV4dF9mdW5jKSAoY29uc3QgY2hhciAqbXNnaWQpOworCisvKgorICogRGVm aW5lIGFjY2Vzc29yL211dGF0b3Igc2hpbXMgdG8gaW5qZWN0IGludG8gbGlicHEtb2F1dGgsIHNv IHRoYXQgaXQgZG9lc24ndAorICogZGVwZW5kIG9uIHRoZSBvZmZzZXRzIHdpdGhpbiBQR2Nvbm4u IChUaGVzZSBoYXZlIGNoYW5nZWQgZHVyaW5nIG1pbm9yIHZlcnNpb24KKyAqIHVwZGF0ZXMgaW4g dGhlIHBhc3QuKQorICovCisKKyNkZWZpbmUgREVGSU5FX0dFVFRFUihUWVBFLCBNRU1CRVIpIFwK Kwl0eXBlZGVmIFRZUEUgKCpjb25uXyAjIyBNRU1CRVIgIyMgX2Z1bmMpIChQR2Nvbm4gKmNvbm4p OyBcCisJc3RhdGljIFRZUEUgY29ubl8gIyMgTUVNQkVSKFBHY29ubiAqY29ubikgeyByZXR1cm4g Y29ubi0+TUVNQkVSOyB9CisKKy8qIExpa2UgREVGSU5FX0dFVFRFUiwgYnV0IHJldHVybnMgYSBw b2ludGVyIHRvIHRoZSBtZW1iZXIuICovCisjZGVmaW5lIERFRklORV9HRVRURVJfUChUWVBFLCBN RU1CRVIpIFwKKwl0eXBlZGVmIFRZUEUgKCpjb25uXyAjIyBNRU1CRVIgIyMgX2Z1bmMpIChQR2Nv bm4gKmNvbm4pOyBcCisJc3RhdGljIFRZUEUgY29ubl8gIyMgTUVNQkVSKFBHY29ubiAqY29ubikg eyByZXR1cm4gJmNvbm4tPk1FTUJFUjsgfQorCisjZGVmaW5lIERFRklORV9TRVRURVIoVFlQRSwg TUVNQkVSKSBcCisJdHlwZWRlZiB2b2lkICgqc2V0X2Nvbm5fICMjIE1FTUJFUiAjIyBfZnVuYykg KFBHY29ubiAqY29ubiwgVFlQRSB2YWwpOyBcCisJc3RhdGljIHZvaWQgc2V0X2Nvbm5fICMjIE1F TUJFUihQR2Nvbm4gKmNvbm4sIFRZUEUgdmFsKSB7IGNvbm4tPk1FTUJFUiA9IHZhbDsgfQorCitE RUZJTkVfR0VUVEVSX1AoUFFFeHBCdWZmZXIsIGVycm9yTWVzc2FnZSk7CitERUZJTkVfR0VUVEVS KGNoYXIgKiwgb2F1dGhfY2xpZW50X2lkKTsKK0RFRklORV9HRVRURVIoY2hhciAqLCBvYXV0aF9j bGllbnRfc2VjcmV0KTsKK0RFRklORV9HRVRURVIoY2hhciAqLCBvYXV0aF9kaXNjb3ZlcnlfdXJp KTsKK0RFRklORV9HRVRURVIoY2hhciAqLCBvYXV0aF9pc3N1ZXJfaWQpOworREVGSU5FX0dFVFRF UihjaGFyICosIG9hdXRoX3Njb3BlKTsKK0RFRklORV9HRVRURVIoZmVfb2F1dGhfc3RhdGUgKiwg c2FzbF9zdGF0ZSk7CisKK0RFRklORV9TRVRURVIocGdzb2NrZXQsIGFsdHNvY2spOworREVGSU5F X1NFVFRFUihjaGFyICosIG9hdXRoX3Rva2VuKTsKKworLyoKKyAqIExvYWRzIHRoZSBsaWJwcS1v YXV0aCBwbHVnaW4gdmlhIGRsb3BlbigpLCBpbml0aWFsaXplcyBpdCwgYW5kIHBsdWdzIGl0cwor ICogY2FsbGJhY2tzIGludG8gdGhlIGNvbm5lY3Rpb24ncyBhc3luYyBhdXRoIGhhbmRsZXJzLgor ICoKKyAqIEZhaWx1cmUgdG8gbG9hZCBoZXJlIHJlc3VsdHMgaW4gYSByZWxhdGl2ZWx5IHF1aWV0 IGNvbm5lY3Rpb24gZXJyb3IsIHRvCisgKiBoYW5kbGUgdGhlIHVzZSBjYXNlIHdoZXJlIHRoZSBi dWlsZCBzdXBwb3J0cyBsb2FkaW5nIGEgZmxvdyBidXQgYSB1c2VyIGRvZXMKKyAqIG5vdCB3YW50 IHRvIGluc3RhbGwgaXQuIFRyb3VibGVzaG9vdGluZyBvZiBsaW5rZXIvbG9hZGVyIGZhaWx1cmVz IGNhbiBiZSBkb25lCisgKiB2aWEgUEdPQVVUSERFQlVHLgorICovCitib29sCit1c2VfYnVpbHRp bl9mbG93KFBHY29ubiAqY29ubiwgZmVfb2F1dGhfc3RhdGUgKnN0YXRlKQoreworCXN0YXRpYyBi b29sIGluaXRpYWxpemVkID0gZmFsc2U7CisJc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBpbml0X211 dGV4ID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKKwlpbnQJCQlsb2NrZXJyOworCisJdm9p ZAkJKCppbml0KSAocGd0aHJlYWRsb2NrX3QgdGhyZWFkbG9jaywKKwkJCQkJCSBsaWJwcV9nZXR0 ZXh0X2Z1bmMgZ2V0dGV4dF9pbXBsLAorCQkJCQkJIGNvbm5fZXJyb3JNZXNzYWdlX2Z1bmMgZXJy bXNnX2ltcGwsCisJCQkJCQkgY29ubl9vYXV0aF9jbGllbnRfaWRfZnVuYyBjbGllbnRpZF9pbXBs LAorCQkJCQkJIGNvbm5fb2F1dGhfY2xpZW50X3NlY3JldF9mdW5jIGNsaWVudHNlY3JldF9pbXBs LAorCQkJCQkJIGNvbm5fb2F1dGhfZGlzY292ZXJ5X3VyaV9mdW5jIGRpc2NvdmVyeXVyaV9pbXBs LAorCQkJCQkJIGNvbm5fb2F1dGhfaXNzdWVyX2lkX2Z1bmMgaXNzdWVyaWRfaW1wbCwKKwkJCQkJ CSBjb25uX29hdXRoX3Njb3BlX2Z1bmMgc2NvcGVfaW1wbCwKKwkJCQkJCSBjb25uX3Nhc2xfc3Rh dGVfZnVuYyBzYXNsc3RhdGVfaW1wbCwKKwkJCQkJCSBzZXRfY29ubl9hbHRzb2NrX2Z1bmMgc2V0 YWx0c29ja19pbXBsLAorCQkJCQkJIHNldF9jb25uX29hdXRoX3Rva2VuX2Z1bmMgc2V0dG9rZW5f aW1wbCk7CisJUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZSAoKmZsb3cpIChQR2Nvbm4gKmNvbm4p OworCXZvaWQJCSgqY2xlYW51cCkgKFBHY29ubiAqY29ubik7CisKKwkvKgorCSAqIE9uIG1hY09T IG9ubHksIGxvYWQgdGhlIG1vZHVsZSB1c2luZyBpdHMgYWJzb2x1dGUgaW5zdGFsbCBwYXRoOyB0 aGUKKwkgKiBzdGFuZGFyZCBzZWFyY2ggYmVoYXZpb3IgaXMgbm90IHZlcnkgaGVscGZ1bCBmb3Ig dGhpcyB1c2UgY2FzZS4gVW5saWtlCisJICogb24gb3RoZXIgcGxhdGZvcm1zLCBEWUxEX0xJQlJB UllfUEFUSCBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZXZlbiB3aXRoCisJICogYWJzb2x1dGUgcGF0 aHMgKG1vZHVsbyBTSVAgZWZmZWN0cyksIHNvIHRlc3RzIGNhbiBjb250aW51ZSB0byB3b3JrLgor CSAqCisJICogT24gdGhlIG90aGVyIHBsYXRmb3JtcywgbG9hZCB0aGUgbW9kdWxlIHVzaW5nIG9u bHkgdGhlIGJhc2VuYW1lLCB0bworCSAqIHJlbHkgb24gdGhlIHJ1bnRpbWUgbGlua2VyJ3Mgc3Rh bmRhcmQgc2VhcmNoIGJlaGF2aW9yLgorCSAqLworCWNvbnN0IGNoYXIgKmNvbnN0IG1vZHVsZV9u YW1lID0KKyNpZiBkZWZpbmVkKF9fZGFyd2luX18pCisJCUxJQkRJUiAiL2xpYnBxLW9hdXRoLSIg UEdfTUFKT1JWRVJTSU9OIERMU1VGRklYOworI2Vsc2UKKwkJImxpYnBxLW9hdXRoLSIgUEdfTUFK T1JWRVJTSU9OIERMU1VGRklYOworI2VuZGlmCisKKwlzdGF0ZS0+YnVpbHRpbl9mbG93ID0gZGxv cGVuKG1vZHVsZV9uYW1lLCBSVExEX05PVyB8IFJUTERfTE9DQUwpOworCWlmICghc3RhdGUtPmJ1 aWx0aW5fZmxvdykKKwl7CisJCS8qCisJCSAqIEZvciBlbmQgdXNlcnMsIHRoaXMgcHJvYmFibHkg aXNuJ3QgYW4gZXJyb3IgY29uZGl0aW9uLCBpdCBqdXN0CisJCSAqIG1lYW5zIHRoZSBmbG93IGlz bid0IGluc3RhbGxlZC4gRGV2ZWxvcGVycyBhbmQgcGFja2FnZSBtYWludGFpbmVycworCQkgKiBt YXkgd2FudCB0byBkZWJ1ZyB0aGlzIHZpYSB0aGUgUEdPQVVUSERFQlVHIGVudnZhciwgdGhvdWdo LgorCQkgKgorCQkgKiBOb3RlIHRoYXQgUE9TSVggZGxlcnJvcigpIGlzbid0IGd1YXJhbnRlZWQg dG8gYmUgdGhyZWFkc2FmZS4KKwkJICovCisJCWlmIChvYXV0aF91bnNhZmVfZGVidWdnaW5nX2Vu YWJsZWQoKSkKKwkJCWZwcmludGYoc3RkZXJyLCAiZmFpbGVkIGRsb3BlbiBmb3IgbGlicHEtb2F1 dGg6ICVzXG4iLCBkbGVycm9yKCkpOworCisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAoKGlu aXQgPSBkbHN5bShzdGF0ZS0+YnVpbHRpbl9mbG93LCAibGlicHFfb2F1dGhfaW5pdCIpKSA9PSBO VUxMCisJCXx8IChmbG93ID0gZGxzeW0oc3RhdGUtPmJ1aWx0aW5fZmxvdywgInBnX2ZlX3J1bl9v YXV0aF9mbG93IikpID09IE5VTEwKKwkJfHwgKGNsZWFudXAgPSBkbHN5bShzdGF0ZS0+YnVpbHRp bl9mbG93LCAicGdfZmVfY2xlYW51cF9vYXV0aF9mbG93IikpID09IE5VTEwpCisJeworCQkvKgor CQkgKiBUaGlzIGlzIG1vcmUgb2YgYW4gZXJyb3IgY29uZGl0aW9uIHRoYW4gdGhlIG9uZSBhYm92 ZSwgYnV0IGR1ZSB0bworCQkgKiB0aGUgZGxlcnJvcigpIHRocmVhZHNhZmV0eSBpc3N1ZSwgbG9j ayBpdCBiZWhpbmQgUEdPQVVUSERFQlVHIHRvby4KKwkJICovCisJCWlmIChvYXV0aF91bnNhZmVf ZGVidWdnaW5nX2VuYWJsZWQoKSkKKwkJCWZwcmludGYoc3RkZXJyLCAiZmFpbGVkIGRsc3ltIGZv ciBsaWJwcS1vYXV0aDogJXNcbiIsIGRsZXJyb3IoKSk7CisKKwkJZGxjbG9zZShzdGF0ZS0+YnVp bHRpbl9mbG93KTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qCisJICogUGFzdCB0aGlzIHBv aW50LCB3ZSBkbyBub3QgdW5sb2FkIHRoZSBtb2R1bGUuIEl0IHN0YXlzIGluIHRoZSBwcm9jZXNz CisJICogcGVybWFuZW50bHkuCisJICovCisKKwkvKgorCSAqIFdlIG5lZWQgdG8gaW5qZWN0IG5l Y2Vzc2FyeSBmdW5jdGlvbiBwb2ludGVycyBpbnRvIHRoZSBtb2R1bGUuIFRoaXMKKwkgKiBvbmx5 IG5lZWRzIHRvIGJlIGRvbmUgb25jZSAtLSBldmVuIGlmIHRoZSBwb2ludGVycyBhcmUgY29uc3Rh bnQsCisJICogYXNzaWduaW5nIHRoZW0gd2hpbGUgYW5vdGhlciB0aHJlYWQgaXMgZXhlY3V0aW5n IHRoZSBmbG93cyBmZWVscyBsaWtlCisJICogdGVtcHRpbmcgZmF0ZS4KKwkgKi8KKwlpZiAoKGxv Y2tlcnIgPSBwdGhyZWFkX211dGV4X2xvY2soJmluaXRfbXV0ZXgpKSAhPSAwKQorCXsKKwkJLyog U2hvdWxkIG5vdCBoYXBwZW4uLi4gYnV0IGRvbid0IGNvbnRpbnVlIGlmIGl0IGRvZXMuICovCisJ CUFzc2VydChmYWxzZSk7CisKKwkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImZhaWxl ZCB0byBsb2NrIG11dGV4ICglZCkiLCBsb2NrZXJyKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwor CWlmICghaW5pdGlhbGl6ZWQpCisJeworCQlpbml0KHBnX2dfdGhyZWFkbG9jaywKKyNpZmRlZiBF TkFCTEVfTkxTCisJCQkgbGlicHFfZ2V0dGV4dCwKKyNlbHNlCisJCQkgTlVMTCwKKyNlbmRpZgor CQkJIGNvbm5fZXJyb3JNZXNzYWdlLAorCQkJIGNvbm5fb2F1dGhfY2xpZW50X2lkLAorCQkJIGNv bm5fb2F1dGhfY2xpZW50X3NlY3JldCwKKwkJCSBjb25uX29hdXRoX2Rpc2NvdmVyeV91cmksCisJ CQkgY29ubl9vYXV0aF9pc3N1ZXJfaWQsCisJCQkgY29ubl9vYXV0aF9zY29wZSwKKwkJCSBjb25u X3Nhc2xfc3RhdGUsCisJCQkgc2V0X2Nvbm5fYWx0c29jaywKKwkJCSBzZXRfY29ubl9vYXV0aF90 b2tlbik7CisKKwkJaW5pdGlhbGl6ZWQgPSB0cnVlOworCX0KKworCXB0aHJlYWRfbXV0ZXhfdW5s b2NrKCZpbml0X211dGV4KTsKKworCS8qIFNldCBvdXIgYXN5bmNocm9ub3VzIGNhbGxiYWNrcy4g Ki8KKwljb25uLT5hc3luY19hdXRoID0gZmxvdzsKKwljb25uLT5jbGVhbnVwX2FzeW5jX2F1dGgg PSBjbGVhbnVwOworCisJcmV0dXJuIHRydWU7Cit9CisKKyNlbHNlCisKKy8qCisgKiBVc2UgdGhl IGJ1aWx0aW4gZmxvdyBpbiBsaWJwcS1vYXV0aC5hIChzZWUgbGlicHEtb2F1dGgvb2F1dGgtY3Vy bC5oKS4KKyAqLworCitleHRlcm4gUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZSBwZ19mZV9ydW5f b2F1dGhfZmxvdyhQR2Nvbm4gKmNvbm4pOworZXh0ZXJuIHZvaWQgcGdfZmVfY2xlYW51cF9vYXV0 aF9mbG93KFBHY29ubiAqY29ubik7CisKK2Jvb2wKK3VzZV9idWlsdGluX2Zsb3coUEdjb25uICpj b25uLCBmZV9vYXV0aF9zdGF0ZSAqc3RhdGUpCit7CisJLyogU2V0IG91ciBhc3luY2hyb25vdXMg Y2FsbGJhY2tzLiAqLworCWNvbm4tPmFzeW5jX2F1dGggPSBwZ19mZV9ydW5fb2F1dGhfZmxvdzsK Kwljb25uLT5jbGVhbnVwX2FzeW5jX2F1dGggPSBwZ19mZV9jbGVhbnVwX29hdXRoX2Zsb3c7CisK KwlyZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlmCQkJCQkJCS8qIFVTRV9MSUJDVVJMICovCisKKwog LyoKICAqIENob29zZXMgYW4gT0F1dGggY2xpZW50IGZsb3cgZm9yIHRoZSBjb25uZWN0aW9uLCB3 aGljaCB3aWxsIHJldHJpZXZlIGEgQmVhcmVyCiAgKiB0b2tlbiBmb3IgcHJlc2VudGF0aW9uIHRv IHRoZSBzZXJ2ZXIuCkBAIC03OTIsMTggKzEwMDksMTAgQEAgc2V0dXBfdG9rZW5fcmVxdWVzdChQ R2Nvbm4gKmNvbm4sIGZlX29hdXRoX3N0YXRlICpzdGF0ZSkKIAkJbGlicHFfYXBwZW5kX2Nvbm5f ZXJyb3IoY29ubiwgInVzZXItZGVmaW5lZCBPQXV0aCBmbG93IGZhaWxlZCIpOwogCQlnb3RvIGZh aWw7CiAJfQotCWVsc2UKKwllbHNlIGlmICghdXNlX2J1aWx0aW5fZmxvdyhjb25uLCBzdGF0ZSkp CiAJewotI2lmIFVTRV9MSUJDVVJMCi0JCS8qIEhhbmQgb2ZmIHRvIG91ciBidWlsdC1pbiBPQXV0 aCBmbG93LiAqLwotCQljb25uLT5hc3luY19hdXRoID0gcGdfZmVfcnVuX29hdXRoX2Zsb3c7Ci0J CWNvbm4tPmNsZWFudXBfYXN5bmNfYXV0aCA9IHBnX2ZlX2NsZWFudXBfb2F1dGhfZmxvdzsKLQot I2Vsc2UKLQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm5vIGN1c3RvbSBPQXV0aCBm bG93cyBhcmUgYXZhaWxhYmxlLCBhbmQgbGlicHEgd2FzIG5vdCBidWlsdCB3aXRoIGxpYmN1cmwg c3VwcG9ydCIpOworCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAibm8gT0F1dGggZmxv d3MgYXJlIGF2YWlsYWJsZSAodHJ5IGluc3RhbGxpbmcgdGhlIGxpYnBxLW9hdXRoIHBhY2thZ2Up Iik7CiAJCWdvdG8gZmFpbDsKLQotI2VuZGlmCiAJfQogCiAJcmV0dXJuIHRydWU7CmRpZmYgLS1n aXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmggYi9zcmMvaW50ZXJmYWNl cy9saWJwcS9mZS1hdXRoLW9hdXRoLmgKaW5kZXggM2YxYTc1MDNhMDEuLjBkNTllOTE2MDViIDEw MDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLW9hdXRoLmgKKysrIGIvc3Jj L2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1vYXV0aC5oCkBAIC0xNSw4ICsxNSw4IEBACiAjaWZu ZGVmIEZFX0FVVEhfT0FVVEhfSAogI2RlZmluZSBGRV9BVVRIX09BVVRIX0gKIAorI2luY2x1ZGUg ImZlLWF1dGgtc2FzbC5oIgogI2luY2x1ZGUgImxpYnBxLWZlLmgiCi0jaW5jbHVkZSAibGlicHEt aW50LmgiCiAKIAogZW51bSBmZV9vYXV0aF9zdGVwCkBAIC0yNywxOCArMjcsMjQgQEAgZW51bSBm ZV9vYXV0aF9zdGVwCiAJRkVfT0FVVEhfU0VSVkVSX0VSUk9SLAogfTsKIAorLyoKKyAqIFRoaXMg c3RydWN0IGlzIGV4cG9ydGVkIHRvIHRoZSBsaWJwcS1vYXV0aCBtb2R1bGUuIElmIGNoYW5nZXMg YXJlIG5lZWRlZAorICogZHVyaW5nIGJhY2twb3J0cyB0byBzdGFibGUgYnJhbmNoZXMsIHBsZWFz ZSBrZWVwIEFCSSBjb21wYXRpYmlsaXR5IChubworICogY2hhbmdlcyB0byBleGlzdGluZyBtZW1i ZXJzLCBhZGQgbmV3IG1lbWJlcnMgYXQgdGhlIGVuZCwgZXRjLikuCisgKi8KIHR5cGVkZWYgc3Ry dWN0CiB7CiAJZW51bSBmZV9vYXV0aF9zdGVwIHN0ZXA7CiAKIAlQR2Nvbm4JICAgKmNvbm47CiAJ dm9pZAkgICAqYXN5bmNfY3R4OworCisJdm9pZAkgICAqYnVpbHRpbl9mbG93OwogfSBmZV9vYXV0 aF9zdGF0ZTsKIAotZXh0ZXJuIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUgcGdfZmVfcnVuX29h dXRoX2Zsb3coUEdjb25uICpjb25uKTsKLWV4dGVybiB2b2lkIHBnX2ZlX2NsZWFudXBfb2F1dGhf ZmxvdyhQR2Nvbm4gKmNvbm4pOwogZXh0ZXJuIHZvaWQgcHFDbGVhck9BdXRoVG9rZW4oUEdjb25u ICpjb25uKTsKIGV4dGVybiBib29sIG9hdXRoX3Vuc2FmZV9kZWJ1Z2dpbmdfZW5hYmxlZCh2b2lk KTsKK2V4dGVybiBib29sIHVzZV9idWlsdGluX2Zsb3coUEdjb25uICpjb25uLCBmZV9vYXV0aF9z dGF0ZSAqc3RhdGUpOwogCiAvKiBNZWNoYW5pc21zIGluIGZlLWF1dGgtb2F1dGguYyAqLwogZXh0 ZXJuIGNvbnN0IHBnX2ZlX3Nhc2xfbWVjaCBwZ19vYXV0aF9tZWNoOwpkaWZmIC0tZ2l0IGEvc3Jj L2ludGVyZmFjZXMvbGlicHEvbWVzb24uYnVpbGQgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNv bi5idWlsZAppbmRleCAyOTJmZWNmMzMyMC4uYTc0ZTg4NWIxNjkgMTAwNjQ0Ci0tLSBhL3NyYy9p bnRlcmZhY2VzL2xpYnBxL21lc29uLmJ1aWxkCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL21l c29uLmJ1aWxkCkBAIC0zOCwxMCArMzgsNiBAQCBpZiBnc3NhcGkuZm91bmQoKQogICApCiBlbmRp ZgogCi1pZiBsaWJjdXJsLmZvdW5kKCkKLSAgbGlicHFfc291cmNlcyArPSBmaWxlcygnZmUtYXV0 aC1vYXV0aC1jdXJsLmMnKQotZW5kaWYKLQogZXhwb3J0X2ZpbGUgPSBjdXN0b21fdGFyZ2V0KCds aWJwcS5leHBvcnRzJywKICAga3dhcmdzOiBnZW5fZXhwb3J0X2t3YXJncywKICkKQEAgLTUwLDYg KzQ2LDkgQEAgZXhwb3J0X2ZpbGUgPSBjdXN0b21fdGFyZ2V0KCdsaWJwcS5leHBvcnRzJywKIGxp YnBxX2luYyA9IGluY2x1ZGVfZGlyZWN0b3JpZXMoJy4nLCAnLi4vLi4vcG9ydCcpCiBsaWJwcV9j X2FyZ3MgPSBbJy1EU09fTUFKT1JfVkVSU0lPTj01J10KIAorIyBUaGUgT0F1dGggaW1wbGVtZW50 YXRpb24gZGlmZmVycyBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgbGlicmFyeSBiZWluZyBidWls dC4KK2xpYnBxX3NvX2NfYXJncyA9IFsnLURVU0VfRFlOQU1JQ19PQVVUSCddCisKICMgTm90IHVz aW5nIGJvdGhfbGlicmFyaWVzKCkgaGVyZSBhcwogIyAxKSByZXNvdXJjZSBmaWxlcyBzaG91bGQg b25seSBiZSBpbiB0aGUgc2hhcmVkIGxpYnJhcnkKICMgMikgd2Ugd2FudCB0aGUgLnBjIGZpbGUg dG8gaW5jbHVkZSBhIGRlcGVuZGVuY3kgdG8ge3BncG9ydCxjb21tb259X3N0YXRpYyBmb3IKQEAg LTcwLDcgKzY5LDcgQEAgbGlicHFfc3QgPSBzdGF0aWNfbGlicmFyeSgnbGlicHEnLAogbGlicHFf c28gPSBzaGFyZWRfbGlicmFyeSgnbGlicHEnLAogICBsaWJwcV9zb3VyY2VzICsgbGlicHFfc29f c291cmNlcywKICAgaW5jbHVkZV9kaXJlY3RvcmllczogW2xpYnBxX2luYywgcG9zdGdyZXNfaW5j XSwKLSAgY19hcmdzOiBsaWJwcV9jX2FyZ3MsCisgIGNfYXJnczogbGlicHFfY19hcmdzICsgbGli cHFfc29fY19hcmdzLAogICBjX3BjaDogcGNoX3Bvc3RncmVzX2ZlX2gsCiAgIHZlcnNpb246ICc1 LicgKyBwZ192ZXJzaW9uX21ham9yLnRvX3N0cmluZygpLAogICBzb3ZlcnNpb246IGhvc3Rfc3lz dGVtICE9ICd3aW5kb3dzJyA/ICc1JyA6ICcnLApAQCAtODYsMTIgKzg1LDI2IEBAIGxpYnBxID0g ZGVjbGFyZV9kZXBlbmRlbmN5KAogICBpbmNsdWRlX2RpcmVjdG9yaWVzOiBbaW5jbHVkZV9kaXJl Y3RvcmllcygnLicpXQogKQogCitwcml2YXRlX2RlcHMgPSBbCisgIGZyb250ZW5kX3N0bGliX2Nv ZGUsCisgIGxpYnBxX2RlcHMsCitdCisKK2lmIG9hdXRoX2Zsb3dfc3VwcG9ydGVkCisgICMgbGli cHEuc28gZG9lc24ndCBsaW5rIGFnYWluc3QgbGliY3VybCwgYnV0IGxpYnBxLmEgbmVlZHMgbGli cHEtb2F1dGgsIGFuZAorICAjIGxpYnBxLW9hdXRoIG5lZWRzIGxpYmN1cmwuIFB1dCBib3RoIGlu dG8gKi5wcml2YXRlLgorICBwcml2YXRlX2RlcHMgKz0gWworICAgIGxpYnBxX29hdXRoX2RlcHMs CisgICAgJy1scHEtb2F1dGgnLAorICBdCitlbmRpZgorCiBwa2djb25maWcuZ2VuZXJhdGUoCiAg IG5hbWU6ICdsaWJwcScsCiAgIGRlc2NyaXB0aW9uOiAnUG9zdGdyZVNRTCBsaWJwcSBsaWJyYXJ5 JywKICAgdXJsOiBwZ191cmwsCiAgIGxpYnJhcmllczogbGlicHEsCi0gIGxpYnJhcmllc19wcml2 YXRlOiBbZnJvbnRlbmRfc3RsaWJfY29kZSwgbGlicHFfZGVwc10sCisgIGxpYnJhcmllc19wcml2 YXRlOiBwcml2YXRlX2RlcHMsCiApCiAKIGluc3RhbGxfaGVhZGVycygKZGlmZiAtLWdpdCBhL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL25scy5tayBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL25scy5tawpp bmRleCBhZTc2MTI2NTg1Mi4uYjg3ZGYyNzdkOTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL25scy5taworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9ubHMubWsKQEAgLTEzLDE1 ICsxMywyMSBAQCBHRVRURVhUX0ZJTEVTICAgID0gZmUtYXV0aC5jIFwKICAgICAgICAgICAgICAg ICAgICBmZS1zZWN1cmUtY29tbW9uLmMgXAogICAgICAgICAgICAgICAgICAgIGZlLXNlY3VyZS1n c3NhcGkuYyBcCiAgICAgICAgICAgICAgICAgICAgZmUtc2VjdXJlLW9wZW5zc2wuYyBcCi0gICAg ICAgICAgICAgICAgICAgd2luMzIuYwotR0VUVEVYVF9UUklHR0VSUyA9IGxpYnBxX2FwcGVuZF9j b25uX2Vycm9yOjIgXAorICAgICAgICAgICAgICAgICAgIHdpbjMyLmMgXAorICAgICAgICAgICAg ICAgICAgIC4uL2xpYnBxLW9hdXRoL29hdXRoLWN1cmwuYyBcCisgICAgICAgICAgICAgICAgICAg Li4vbGlicHEtb2F1dGgvb2F1dGgtdXRpbHMuYworR0VUVEVYVF9UUklHR0VSUyA9IGFjdHhfZXJy b3I6MiBcCisgICAgICAgICAgICAgICAgICAgbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3I6MiBcCiAg ICAgICAgICAgICAgICAgICAgbGlicHFfYXBwZW5kX2Vycm9yOjIgXAogICAgICAgICAgICAgICAg ICAgIGxpYnBxX2dldHRleHQgXAogICAgICAgICAgICAgICAgICAgIGxpYnBxX25nZXR0ZXh0OjEs MiBcCisgICAgICAgICAgICAgICAgICAgb2F1dGhfcGFyc2Vfc2V0X2Vycm9yOjIgXAogICAgICAg ICAgICAgICAgICAgIHBxSW50ZXJuYWxOb3RpY2U6MgotR0VUVEVYVF9GTEFHUyAgICA9IGxpYnBx X2FwcGVuZF9jb25uX2Vycm9yOjI6Yy1mb3JtYXQgXAorR0VUVEVYVF9GTEFHUyAgICA9IGFjdHhf ZXJyb3I6MjpjLWZvcm1hdCBcCisgICAgICAgICAgICAgICAgICAgbGlicHFfYXBwZW5kX2Nvbm5f ZXJyb3I6MjpjLWZvcm1hdCBcCiAgICAgICAgICAgICAgICAgICAgbGlicHFfYXBwZW5kX2Vycm9y OjI6Yy1mb3JtYXQgXAogICAgICAgICAgICAgICAgICAgIGxpYnBxX2dldHRleHQ6MTpwYXNzLWMt Zm9ybWF0IFwKICAgICAgICAgICAgICAgICAgICBsaWJwcV9uZ2V0dGV4dDoxOnBhc3MtYy1mb3Jt YXQgXAogICAgICAgICAgICAgICAgICAgIGxpYnBxX25nZXR0ZXh0OjI6cGFzcy1jLWZvcm1hdCBc CisgICAgICAgICAgICAgICAgICAgb2F1dGhfcGFyc2Vfc2V0X2Vycm9yOjI6Yy1mb3JtYXQgXAog ICAgICAgICAgICAgICAgICAgIHBxSW50ZXJuYWxOb3RpY2U6MjpjLWZvcm1hdApkaWZmIC0tZ2l0 IGEvc3JjL21ha2VmaWxlcy9tZXNvbi5idWlsZCBiL3NyYy9tYWtlZmlsZXMvbWVzb24uYnVpbGQK aW5kZXggNTVkYTY3OGVjMjcuLjkxYThkZTFlZTliIDEwMDY0NAotLS0gYS9zcmMvbWFrZWZpbGVz L21lc29uLmJ1aWxkCisrKyBiL3NyYy9tYWtlZmlsZXMvbWVzb24uYnVpbGQKQEAgLTIwMyw2ICsy MDMsOCBAQCBwZ3hzX2VtcHR5ID0gWwogICAnTElCTlVNQV9DRkxBR1MnLCAnTElCTlVNQV9MSUJT JywKIAogICAnTElCVVJJTkdfQ0ZMQUdTJywgJ0xJQlVSSU5HX0xJQlMnLAorCisgICdMSUJDVVJM X0NQUEZMQUdTJywgJ0xJQkNVUkxfTERGTEFHUycsICdMSUJDVVJMX0xETElCUycsCiBdCiAKIGlm IGhvc3Rfc3lzdGVtID09ICd3aW5kb3dzJyBhbmQgY2MuZ2V0X2FyZ3VtZW50X3N5bnRheCgpICE9 ICdtc3ZjJwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvbWVz b24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL29hdXRoX3ZhbGlkYXRvci9tZXNvbi5idWlsZApp bmRleCAzNmQxYjI2MzY5Zi4uZTE5MGY5Y2YxNWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVs ZXMvb2F1dGhfdmFsaWRhdG9yL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvb2F1 dGhfdmFsaWRhdG9yL21lc29uLmJ1aWxkCkBAIC03OCw3ICs3OCw3IEBAIHRlc3RzICs9IHsKICAg ICBdLAogICAgICdlbnYnOiB7CiAgICAgICAnUFlUSE9OJzogcHl0aG9uLnBhdGgoKSwKLSAgICAg ICd3aXRoX2xpYmN1cmwnOiBsaWJjdXJsLmZvdW5kKCkgPyAneWVzJyA6ICdubycsCisgICAgICAn d2l0aF9saWJjdXJsJzogb2F1dGhfZmxvd19zdXBwb3J0ZWQgPyAneWVzJyA6ICdubycsCiAgICAg ICAnd2l0aF9weXRob24nOiAneWVzJywKICAgICB9LAogICB9LApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDJfY2xpZW50LnBsIGIvc3JjL3Rlc3QvbW9k dWxlcy9vYXV0aF92YWxpZGF0b3IvdC8wMDJfY2xpZW50LnBsCmluZGV4IDhkZDUwMmY0MWUxLi4y MWQ0YWNjMTkyNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9vYXV0aF92YWxpZGF0b3Iv dC8wMDJfY2xpZW50LnBsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvb2F1dGhfdmFsaWRhdG9yL3Qv MDAyX2NsaWVudC5wbApAQCAtMTEwLDcgKzExMCw3IEBAIGlmICgkRU5We3dpdGhfbGliY3VybH0g bmUgJ3llcycpCiAJCSJmYWlscyB3aXRob3V0IGN1c3RvbSBob29rIGluc3RhbGxlZCIsCiAJCWZs YWdzID0+IFsiLS1uby1ob29rIl0sCiAJCWV4cGVjdGVkX3N0ZGVyciA9PgotCQkgIHFyL25vIGN1 c3RvbSBPQXV0aCBmbG93cyBhcmUgYXZhaWxhYmxlLCBhbmQgbGlicHEgd2FzIG5vdCBidWlsdCB3 aXRoIGxpYmN1cmwgc3VwcG9ydC8KKwkJICBxci9ubyBPQXV0aCBmbG93cyBhcmUgYXZhaWxhYmxl IFwodHJ5IGluc3RhbGxpbmcgdGhlIGxpYnBxLW9hdXRoIHBhY2thZ2VcKS8KIAkpOwogfQogCi0t IAoyLjM0LjEKCg== --0000000000003853ec063402afc2--