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 1r85ew-008A2k-RN for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Nov 2023 21:30:23 +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 1r85es-007Yhg-Gw for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Nov 2023 21:30:18 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r85er-007YhW-6o for pgsql-hackers@lists.postgresql.org; Tue, 28 Nov 2023 21:30:18 +0000 Received: from mail-ed1-x531.google.com ([2a00:1450:4864:20::531]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1r85eZ-007pSt-1Q for pgsql-hackers@lists.postgresql.org; Tue, 28 Nov 2023 21:30:15 +0000 Received: by mail-ed1-x531.google.com with SMTP id 4fb4d7f45d1cf-54b8a4d64b5so2942546a12.0 for ; Tue, 28 Nov 2023 13:29:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1701206997; x=1701811797; darn=lists.postgresql.org; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=o5TB0sfgqtDJvDHFQJqhDDIUC2Rdvsgb7IMXs+Hy5CU=; b=P7L6qSNj5dXRX2T+DVcdSeurxgDmSJ66XnNwa4DuPE2unCOfasnCBFedidwksUbw+A gHTHzCSrg7XGuiZQUZh2KClxQNiCNDYqIDiIwppxxeMZa95+NoiKxM0zhHbx7yyW98Kx ZZ8sdTd4RMVeGOyYZl5k8pEWg78z4oiKN7xRHmrbOLnSBSo0pcZCbLOWLJsMc4ncQ17m EHncz7bI74yty4cGvF5ycbsY7aWINGADeViZPXTRx9V2spoCb+896ccMxa4n5nXNDyg6 Josp3Sw7Mg2Pfp+HrezzoMbnNIzElD7x/pKzXaK/JnisOdlBTnfOgVIRkgx6NovOBEA8 uFeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701206997; x=1701811797; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=o5TB0sfgqtDJvDHFQJqhDDIUC2Rdvsgb7IMXs+Hy5CU=; b=sPC6oHL/pZQAfcL6MsGt8rcWhz2MIqvMpXn6rmqz7ZXlrbXal5APT3OrNEwtHlBuxS 0Cp9N8/GZ6Z2PUce85NEvIU3TG0JtsH5BTLX0Oeu1x5P1qs3SQzFbxQYV3sEMkWTOA73 A4w8yiTpucYOzZPoSitNGOWz23EkmDQu3ajMJpaGXWPWd8NX3CwHs4aWGv76HLB9f5Oc EMD4jxG4/AKtVFKI36KoiO+fdLKEqELd0OwgofmW7HBOffrn9jTv5OyB+HX416zye2gB AsQulI9YQ6r2+1Pf0Gshvb2drDoio7vAcFxtLS0MXL5RcKO1xNzoRbQSrWFDYV6Wpn0X 40PA== X-Gm-Message-State: AOJu0YwL3otdCPwWcLswKJSV+bvOfhwY/rAjdlj/VZJl3tdvyO5ZxOU2 z0qx8Vnw2UJwRd3EG7W5hbQ4kw== X-Google-Smtp-Source: AGHT+IFRdqMwL7Huf6Bj2UsDDZsBA3rLcer6/PRTNalPmQOBHQ/GdZFlGDU/4pydAqSk+fLfYZayCQ== X-Received: by 2002:a17:906:105c:b0:a03:ab97:3ea7 with SMTP id j28-20020a170906105c00b00a03ab973ea7mr11996709ejj.47.1701206996772; Tue, 28 Nov 2023 13:29:56 -0800 (PST) Received: from [10.137.0.17] (ip-86-49-229-30.bb.vodafone.cz. [86.49.229.30]) by smtp.gmail.com with ESMTPSA id g14-20020a170906594e00b009fc6ac28110sm7180321ejr.20.2023.11.28.13.29.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 28 Nov 2023 13:29:56 -0800 (PST) Content-Type: multipart/mixed; boundary="------------q81gMYy3cJrdUAqlWBWL0vlY" Message-ID: <4954a4f8-ba9d-d352-571b-7b94372ea5ae@enterprisedb.com> Date: Tue, 28 Nov 2023 22:29:54 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: logical decoding and replication of sequences, take 2 Content-Language: en-US From: Tomas Vondra To: Amit Kapila Cc: "Hayato Kuroda (Fujitsu)" , "Zhijie Hou (Fujitsu)" , Ashutosh Bapat , PostgreSQL Hackers , Masahiko Sawada , Peter Eisentraut , Dilip Kumar References: <5c1cdd43-9a00-db9d-9474-48e6ec985979@enterprisedb.com> <3c145928-9cf9-eb15-6b24-c84d791a12c0@enterprisedb.com> <28e0279f-d02a-f7d7-568d-13f70ee8f60b@enterprisedb.com> <652f6e81-f71b-b760-b1bb-ab078b8dbe53@enterprisedb.com> <36f3a200-f185-887c-da08-fdc866436e6c@enterprisedb.com> <195be236-7580-72c6-97c7-59f06c4e093c@enterprisedb.com> In-Reply-To: <195be236-7580-72c6-97c7-59f06c4e093c@enterprisedb.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------q81gMYy3cJrdUAqlWBWL0vlY Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, I have been hacking on improving the improvements outlined in my preceding e-mail, but I have some bad news - I ran into an issue that I don't know how to solve :-( Consider this transaction: BEGIN; ALTER SEQUENCE s RESTART 1000; SAVEPOINT s1; ALTER SEQUENCE s RESTART 2000; ROLLBACK TO s1; INSERT INTO seq_test SELECT nextval('s') FROM generate_series(1,40); COMMIT; If you try this with the approach relying on rd_newRelfilelocatorSubid and rd_createSubid, it fails like this on the subscriber: ERROR: could not map filenode "base/5/16394" to relation OID This happens because ReorderBufferQueueSequence tries to do this in the non-transactional branch: reloid = RelidByRelfilenumber(rlocator.spcOid, rlocator.relNumber); and the relfilenode is the one created by the first ALTER. But this is obviously wrong - the changes should have been treated as transactional, because they are tied to the first ALTER. So how did we get there? Well, the whole problem is that in case of abort, AtEOSubXact_cleanup resets the two fields to InvalidSubTransactionId. Which means the rollback in the above transaction also forgets about the first ALTER. Now that I look at the RelationData comments, it actually describes exactly this situation: * * rd_newRelfilelocatorSubid is the ID of the highest subtransaction * the most-recent relfilenumber change has survived into or zero if * not changed in the current transaction (or we have forgotten * changing it). This field is accurate when non-zero, but it can be * zero when a relation has multiple new relfilenumbers within a * single transaction, with one of them occurring in a subsequently * aborted subtransaction, e.g. * BEGIN; * TRUNCATE t; * SAVEPOINT save; * TRUNCATE t; * ROLLBACK TO save; * -- rd_newRelfilelocatorSubid is now forgotten * The root of this problem is that we'd need some sort of "history" for the field, so that when a subxact aborts, we can restore the previous value. But we obviously don't have that, and I doubt we want to add that to relcache - for example, it'd either need to impose some limit on the history (and thus a failure when we reach the limit), or it'd need to handle histories of arbitrary length. At this point I don't see a solution for this, which means the best way forward with the sequence decoding patch seems to be the original approach, on the decoding side. I'm attaching the patch with 0005 and 0006, adding two simple tests (no other changes compared to yesterday's version). regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------q81gMYy3cJrdUAqlWBWL0vlY Content-Type: text/x-patch; charset=UTF-8; name="v20231128-0001-Logical-decoding-of-sequences.patch" Content-Disposition: attachment; filename="v20231128-0001-Logical-decoding-of-sequences.patch" Content-Transfer-Encoding: base64 RnJvbSAwYTMzMzc1MWE1MzkwM2Q0YzA5ZDJlNzEzNzRmNWE4ZWM2YTJjM2U5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogVGh1LCAyIE5vdiAyMDIzIDE1OjAzOjEzICswMTAwClN1Ympl Y3Q6IFtQQVRDSCB2MjAyMzExMjggMS84XSBMb2dpY2FsIGRlY29kaW5nIG9mIHNlcXVlbmNl cwoKRXh0ZW5kIHRoZSBsb2dpY2FsIGRlY29kaW5nIHRvIGFsbG93IGRlY29kaW5nIHNlcXVl bmNlIGNoYW5nZXMuCgpFYWNoIHNlcXVlbmNlIGNoYW5nZSBpcyBlaXRoZXIgdHJhbnNhY3Rp b25hbCBvciBub24tdHJhbnNhY3Rpb25hbCwKZGVwZW5kaW5nIG9uIHdoYXQgd2hldGhlciB0 aGUgc2VxdWVuY2UgcmVsZmlsZW5vZGUgaXMgdmlzaWJsZSBvdXRzaWRlCnRoZSB0cmFuc2Fj dGlvbi4KCldoZW4gYSB0cmFuc2FjdGlvbiBjcmVhdGVzIGEgbmV3IHJlbGZpbGVub2RlIHRv IHRoZSBzZXF1ZW5jZSAodXN1YWxseQpiZWNhdXNlIG9mIENSRUFURSBTRVFVRU5DRSBvciBB TFRFUiBTRVFVRU5DRSksIGFsbCBzdWJzZXF1ZW50IHNlcXVlbmNlCmNoYW5nZXMgYXJlIHRy ZWF0ZWQgYXMgdHJhbnNhY3Rpb25hbCAtIHF1ZXVlZCBqdXN0IGxpa2Ugb3RoZXIgY2hhbmdl cyBpbgp0aGUgdHJhbnNhY3Rpb24sIGFuZCBlaXRoZXIgcmVwbGF5ZWQgYXQgY29tbWl0IHRp bWUgb3IgZGlzY2FyZGVkIGlmIHRoZQp0cmFuc2FjdGlvbiBhYm9ydHMuCgpBbGwgb3RoZXIg c2VxdWVuY2UgY2hhbmdlcywgcGVyZm9ybWVkIG9uIHNlcXVlbmNlcyAvIHJlbGZpbGVub2Rl cwpjcmVhdGVkIGJ5IGVhcmxpZXIgdHJhbnNhY3Rpb25zLCBhcmUgbm9uLXRyYW5zYWN0aW9u YWwuIFRoZXNlIGNoYW5nZXMKYXJlIG5vdCBxdWV1ZWQgYnV0IHJlcGxheWVkIGltbWVkaWF0 ZWx5IGFmdGVyIGRlY29kaW5nLiBUaGlzIGFsc28gbWVhbnMKdGhlc2UgY2hhbmdlcyBhcmUg bm90IHN1YmplY3QgdG8gYWJvcnQuCgpUaGlzIG1peGVkIGJlaGF2aW9yIGlzIG5lY2Vzc2Fy eSwgYW5kIGlzIGNvbnNpc3RlbnQgd2l0aCBob3cgc2VxdWVuY2VzCmJlaGF2ZSBpbiBnZW5l cmFsIC0gY2FsbGluZyBuZXh0dmFsKHMpIG1ha2VzIHRoZSBjaGFuZ2UgdmlzaWJsZSB0bwpj b25jdXJyZW50IHRyYW5zYWN0aW9ucywgYW5kIGNhbid0IGJlIHJvbGxlZCBiYWNrLiBCdXQg aWYgRERMIGlzCnBlcmZvcm1lZCBvbiBhIHNlcXVlbmNlLCBjaGFuZ2VzIGJlY29tZSB0cmFu c2FjdGlvbmFsIC0gaW52aXNpYmxlIHRvCmNvbmN1cnJlbnQgdHJhbnNhY3Rpb25zIHVudGls IGNvbW1pdCwgYW5kIHN1YmplY3QgdG8gYWJvcnQuCgpUbyBpZGVudGlmeSBjaGFuZ2VzIHRo YXQgbmVlZCB0cmFuc2FjdGlvbmFsIGhhbmRsaW5nLCBlYWNoIHRyYW5zYWN0aW9uCnRyYWNr cyByZWxmaWxlbm9kZXMgaXQgY3JlYXRlZCBpbiBhIGhhc2ggdGFibGUuIFRoZW4gd2hlbiBh IGNoYW5nZSBpcwpkZWNvZGVkLCB0aGlzIGhhc2ggdGFibGUgaXMgdXNlZCB0byBjaGVjayBp ZiB0aGUgcmVsZmlsZW5vZGUgaXMgbmV3LgoKRm9yIGVhY2ggcmVsZmlsZW5vZGUgd2UgdHJh Y2sgdGhlIFhJRCBvZiAoc3ViKXRyYW5zYWN0aW9uIHRoYXQgY3JlYXRlZAppdCwgd2hpY2gg aXMgbmVlZGVkIGZvciBjbGVhbnVwIGF0IHRoZSB0cmFuc2FjdGlvbiBlbmQuIFdlIGRvbid0 IG5lZWQgdG8KY2hlY2sgdGhlIFhJRCB0byBkZWNpZGUgaWYgYW4gaW5jcmVtZW50IGlzIHRy YW5zYWN0aW9uYWwgLSBpZiB3ZSBmaW5kIGEKbWF0Y2ggaW4gdGhlIGhhc2ggdGFibGUsIGl0 IGhhcyB0byBiZSB0aGUgc2FtZSB0cmFuc2FjdGlvbi4KClRoaXMgcmVxdWlyZXMgb25seSBt aW5vciBjaGFuZ2VzIHRvIFdBTC1sb2dnaW5nLiBXZSBuZWVkIHRvIGVuc3VyZSB0aGUKc2Vx dWVuY2UgcmVjb3JkIGlzIGFsd2F5cyBhc3NvY2lhdGVkIHdpdGggdGhlIHN1YnhhY3QgWElE IC0gdW50aWwgbm93CnRoZSBjaGFuZ2UgbWlnaHQgaGF2ZSBYSUQgMCBpZiBpdCB3YXMgdGhl IGZpcnN0IGNoYW5nZSBpbiBhIHN1YnhhY3QuIEJ1dAp0aGUgc2VxdWVuY2UgbWlnaHQgaGF2 ZSBiZWVuIGNyZWF0ZWQgaW4gdGhlIHNhbWUgdG9wLWxldmVsIHRyYW5zYWN0aW9uLAppbiB3 aGljaCBjYXNlIGl0IHN0aWxsIG5lZWRzIHRyYW5zYWN0aW9uYWwgdHJlYXRtZW50LiBTbyB3 ZSBlbnN1cmUgdGhlClhJRCBpcyBhc3NpZ25lZCB3aGVuIFdBTC1sb2dnaW5nIHNlcXVlbmNl IGNoYW5nZXMsIGlmIHdhbF9sZXZlbD1sb2dpY2FsLgoKQSBwYXRjaCBhZGRpbmcgZGVjb2Rp bmcgb2Ygc2VxdWVuY2VzIHdhcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCBieSBDYXJ5Ckh1YW5n LiBUaGlzIGNvbW1pdCByZXdvcmtzIG1hbnkgaW1wb3J0YW50IGFzcGVjdHMgKGUuZy4gdGhl IFdBTCBsb2dnaW5nCmFuZCB0cmFuc2FjdGlvbmFsL25vbi10cmFuc2FjdGlvbmFsIGhhbmRs aW5nKS4gSG93ZXZlciwgdGhlIG9yaWdpbmFsCnBhdGNoIGFuZCByZXZpZXdzIHdlcmUgdmVy eSB1c2VmdWwuCgpBdXRob3I6IFRvbWFzIFZvbmRyYSwgQ2FyeSBIdWFuZwpSZXZpZXdlZC1i eTogQXNodXRvc2ggQmFwYXQsIEFtaXQgS2FwaWxhLCBQZXRlciBFaXNlbnRyYXV0LCBIYW5u dQpLcm9zaW5nLCBBbmRyZXMgRnJldW5kLCBaaGlqaWUgSG91CkRpc2N1c3Npb246IGh0dHBz Oi8vcG9zdGdyLmVzL20vZDA0NWYzYzItNmNmYi0wNmQzLTU1NDAtZTYzYzMyMGRmOGJjQGVu dGVycHJpc2VkYi5jb20KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8xNzEwZWQ3 ZTEzYi5jZDcxNzc0NjE0MzA3NDYuMzM3MjI2NDU2MjU0MzYwNzc4MUBoaWdoZ28uY2EKRGlz Y3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS83NmU1ZmNkOC04MDcyLThlYTItZDM2MS0y ZTgxMTk0MTAwMGNAZW50ZXJwcmlzZWRiLmNvbQotLS0KIGRvYy9zcmMvc2dtbC9sb2dpY2Fs ZGVjb2Rpbmcuc2dtbCAgICAgICAgICAgICB8ICA2MiArLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvc2VxdWVuY2UuYyAgICAgICAgICAgICAgIHwgIDg5ICsrKwogc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyAgICAgIHwgMjMyICsrKysrLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMgICAgIHwgMTAwICsrLQogLi4uL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgICAgIHwgNzM3ICsrKysrKysr KysrKysrKysrLQogc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmggICAgICAgICAgICAg ICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZWNvZGUuaCAgICAgICAg ICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbC5oICAgICAg ICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL291dHB1dF9wbHVnaW4u aCAgICAgICB8ICAyMyArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVy LmggICAgICAgfCAgNDIgKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAg ICAgICAgICAgIHwgICAxICsKIDExIGZpbGVzIGNoYW5nZWQsIDEyODUgaW5zZXJ0aW9ucygr KSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWxk ZWNvZGluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sCmluZGV4 IGNkMTUyZDRjZWQ5Li5kYTNmNWE3NGE1NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xv Z2ljYWxkZWNvZGluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcu c2dtbApAQCAtNDg4LDYgKzQ4OCw3IEBAIHR5cGVkZWYgc3RydWN0IE91dHB1dFBsdWdpbkNh bGxiYWNrcwogICAgIExvZ2ljYWxEZWNvZGVUcnVuY2F0ZUNCIHRydW5jYXRlX2NiOwogICAg IExvZ2ljYWxEZWNvZGVDb21taXRDQiBjb21taXRfY2I7CiAgICAgTG9naWNhbERlY29kZU1l c3NhZ2VDQiBtZXNzYWdlX2NiOworICAgIExvZ2ljYWxEZWNvZGVTZXF1ZW5jZUNCIHNlcXVl bmNlX2NiOwogICAgIExvZ2ljYWxEZWNvZGVGaWx0ZXJCeU9yaWdpbkNCIGZpbHRlcl9ieV9v cmlnaW5fY2I7CiAgICAgTG9naWNhbERlY29kZVNodXRkb3duQ0Igc2h1dGRvd25fY2I7CiAg ICAgTG9naWNhbERlY29kZUZpbHRlclByZXBhcmVDQiBmaWx0ZXJfcHJlcGFyZV9jYjsKQEAg LTUwMiw2ICs1MDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBPdXRwdXRQbHVnaW5DYWxsYmFja3MK ICAgICBMb2dpY2FsRGVjb2RlU3RyZWFtQ29tbWl0Q0Igc3RyZWFtX2NvbW1pdF9jYjsKICAg ICBMb2dpY2FsRGVjb2RlU3RyZWFtQ2hhbmdlQ0Igc3RyZWFtX2NoYW5nZV9jYjsKICAgICBM b2dpY2FsRGVjb2RlU3RyZWFtTWVzc2FnZUNCIHN0cmVhbV9tZXNzYWdlX2NiOworICAgIExv Z2ljYWxEZWNvZGVTdHJlYW1TZXF1ZW5jZUNCIHN0cmVhbV9zZXF1ZW5jZV9jYjsKICAgICBM b2dpY2FsRGVjb2RlU3RyZWFtVHJ1bmNhdGVDQiBzdHJlYW1fdHJ1bmNhdGVfY2I7CiB9IE91 dHB1dFBsdWdpbkNhbGxiYWNrczsKIApAQCAtNTEwLDEwICs1MTIsMTMgQEAgdHlwZWRlZiB2 b2lkICgqTG9naWNhbE91dHB1dFBsdWdpbkluaXQpIChzdHJ1Y3QgT3V0cHV0UGx1Z2luQ2Fs bGJhY2tzICpjYik7CiAgICAgIFRoZSA8ZnVuY3Rpb24+YmVnaW5fY2I8L2Z1bmN0aW9uPiwg PGZ1bmN0aW9uPmNoYW5nZV9jYjwvZnVuY3Rpb24+CiAgICAgIGFuZCA8ZnVuY3Rpb24+Y29t bWl0X2NiPC9mdW5jdGlvbj4gY2FsbGJhY2tzIGFyZSByZXF1aXJlZCwKICAgICAgd2hpbGUg PGZ1bmN0aW9uPnN0YXJ0dXBfY2I8L2Z1bmN0aW9uPiwgPGZ1bmN0aW9uPnRydW5jYXRlX2Ni PC9mdW5jdGlvbj4sCi0gICAgIDxmdW5jdGlvbj5tZXNzYWdlX2NiPC9mdW5jdGlvbj4sIDxm dW5jdGlvbj5maWx0ZXJfYnlfb3JpZ2luX2NiPC9mdW5jdGlvbj4sCisgICAgIDxmdW5jdGlv bj5tZXNzYWdlX2NiPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5zZXF1ZW5jZV9jYjwvZnVuY3Rp b24+LAorICAgICA8ZnVuY3Rpb24+ZmlsdGVyX2J5X29yaWdpbl9jYjwvZnVuY3Rpb24+LAog ICAgICBhbmQgPGZ1bmN0aW9uPnNodXRkb3duX2NiPC9mdW5jdGlvbj4gYXJlIG9wdGlvbmFs LgogICAgICBJZiA8ZnVuY3Rpb24+dHJ1bmNhdGVfY2I8L2Z1bmN0aW9uPiBpcyBub3Qgc2V0 IGJ1dCBhCiAgICAgIDxjb21tYW5kPlRSVU5DQVRFPC9jb21tYW5kPiBpcyB0byBiZSBkZWNv ZGVkLCB0aGUgYWN0aW9uIHdpbGwgYmUgaWdub3JlZC4KKyAgICAgU2ltaWxhcmx5LCBpZiA8 ZnVuY3Rpb24+c2VxdWVuY2VfY2I8L2Z1bmN0aW9uPiBpcyBub3Qgc2V0IGFuZCBhIHNlcXVl bmNlCisgICAgIGNoYW5nZSBpcyB0byBiZSBkZWNvZGVkLCB0aGUgYWN0aW9uIHdpbGwgYmUg aWdub3JlZC4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KQEAgLTUyMSw3ICs1MjYsOCBA QCB0eXBlZGVmIHZvaWQgKCpMb2dpY2FsT3V0cHV0UGx1Z2luSW5pdCkgKHN0cnVjdCBPdXRw dXRQbHVnaW5DYWxsYmFja3MgKmNiKTsKICAgICAgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25z LiBUaGUgPGZ1bmN0aW9uPnN0cmVhbV9zdGFydF9jYjwvZnVuY3Rpb24+LAogICAgICA8ZnVu Y3Rpb24+c3RyZWFtX3N0b3BfY2I8L2Z1bmN0aW9uPiwgPGZ1bmN0aW9uPnN0cmVhbV9hYm9y dF9jYjwvZnVuY3Rpb24+LAogICAgICA8ZnVuY3Rpb24+c3RyZWFtX2NvbW1pdF9jYjwvZnVu Y3Rpb24+LCBhbmQgPGZ1bmN0aW9uPnN0cmVhbV9jaGFuZ2VfY2I8L2Z1bmN0aW9uPgotICAg ICBhcmUgcmVxdWlyZWQsIHdoaWxlIDxmdW5jdGlvbj5zdHJlYW1fbWVzc2FnZV9jYjwvZnVu Y3Rpb24+IGFuZAorICAgICBhcmUgcmVxdWlyZWQsIHdoaWxlIDxmdW5jdGlvbj5zdHJlYW1f bWVzc2FnZV9jYjwvZnVuY3Rpb24+LAorICAgICA8ZnVuY3Rpb24+c3RyZWFtX3NlcXVlbmNl X2NiPC9mdW5jdGlvbj4gYW5kCiAgICAgIDxmdW5jdGlvbj5zdHJlYW1fdHJ1bmNhdGVfY2I8 L2Z1bmN0aW9uPiBhcmUgb3B0aW9uYWwuIFRoZQogICAgICA8ZnVuY3Rpb24+c3RyZWFtX3By ZXBhcmVfY2I8L2Z1bmN0aW9uPiBpcyBhbHNvIHJlcXVpcmVkIGlmIHRoZSBvdXRwdXQKICAg ICAgcGx1Z2luIGFsc28gc3VwcG9ydCB0d28tcGhhc2UgY29tbWl0cy4KQEAgLTg0MCw2ICs4 NDYsMzUgQEAgdHlwZWRlZiB2b2lkICgqTG9naWNhbERlY29kZU1lc3NhZ2VDQikgKHN0cnVj dCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAgICAgIDwvcGFyYT4KICAgICA8L3Nl Y3QzPgogCisgICAgPHNlY3QzIGlkPSJsb2dpY2FsZGVjb2Rpbmctb3V0cHV0LXBsdWdpbi1z ZXF1ZW5jZSI+CisgICAgIDx0aXRsZT5TZXF1ZW5jZSBDYWxsYmFjazwvdGl0bGU+CisKKyAg ICAgPHBhcmE+CisgICAgICBUaGUgb3B0aW9uYWwgPGZ1bmN0aW9uPnNlcXVlbmNlX2NiPC9m dW5jdGlvbj4gY2FsbGJhY2sgaXMgY2FsbGVkIGZvcgorICAgICAgYWN0aW9ucyB0aGF0IHVw ZGF0ZSBhIHNlcXVlbmNlIHZhbHVlLgorPHByb2dyYW1saXN0aW5nPgordHlwZWRlZiB2b2lk ICgqTG9naWNhbERlY29kZVNlcXVlbmNlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS ZW9yZGVyQnVmZmVyVFhOICp0eG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNuLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbiByZWwsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdHJhbnNhY3Rpb25hbCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50NjQgdmFsdWUpOworPC9wcm9n cmFtbGlzdGluZz4KKyAgICAgIFRoZSA8cGFyYW1ldGVyPnR4bjwvcGFyYW1ldGVyPiBwYXJh bWV0ZXIgY29udGFpbnMgbWV0YSBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgdGhlIHRyYW5z YWN0aW9uIHRoZSBzZXF1ZW5jZSBjaGFuZ2UgaXMgcGFydCBvZi4gTm90ZSBob3dldmVyIHRo YXQgZm9yCisgICAgICBub24tdHJhbnNhY3Rpb25hbCB1cGRhdGVzLCB0aGUgdHJhbnNhY3Rp b24gbWF5IGJlIE5VTEwsIGRlcGVuZGluZyBvbgorICAgICAgaWYgdGhlIHRyYW5zYWN0aW9u IGFscmVhZHkgaGFzIGFuIFhJRCBhc3NpZ25lZC4KKyAgICAgIFRoZSA8cGFyYW1ldGVyPnNl cXVlbmNlX2xzbjwvcGFyYW1ldGVyPiBoYXMgdGhlIFdBTCBsb2NhdGlvbiBvZiB0aGUKKyAg ICAgIHNlcXVlbmNlIHVwZGF0ZS4gPHBhcmFtZXRlcj50cmFuc2FjdGlvbmFsPC9wYXJhbWV0 ZXI+IHNheXMgaWYgdGhlCisgICAgICBzZXF1ZW5jZSBoYXMgdG8gYmUgcmVwbGF5ZWQgYXMg cGFydCBvZiB0aGUgdHJhbnNhY3Rpb24gb3IgZGlyZWN0bHkuCisKKyAgICAgIFRoZSA8cGFy YW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+IHBhcmFtZXRlciBkZXNjcmliZXMgdGhlIHNlcXVl bmNlIGNoYW5nZS4KKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1heSBub3QgYmUgdGhlIHZhbHVl IG9idGFpbmVkIGJ5IHRoZSBwcm9jZXNzIHVwZGF0aW5nIHRoZQorICAgICAgcHJvY2Vzcywg YnV0IHRoZSBmdXR1cmUgc2VxdWVuY2UgdmFsdWUgd3JpdHRlbiB0byBXQUwgKHR5cGljYWxs eSBhYm91dAorICAgICAgMzIgdmFsdWVzIGFoZWFkKS4KKyAgICAgPC9wYXJhPgorICAgIDwv c2VjdDM+CisKICAgICA8c2VjdDMgaWQ9ImxvZ2ljYWxkZWNvZGluZy1vdXRwdXQtcGx1Z2lu LWZpbHRlci1wcmVwYXJlIj4KICAgICAgPHRpdGxlPlByZXBhcmUgRmlsdGVyIENhbGxiYWNr PC90aXRsZT4KIApAQCAtMTA1MSw2ICsxMDg2LDI0IEBAIHR5cGVkZWYgdm9pZCAoKkxvZ2lj YWxEZWNvZGVTdHJlYW1NZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4CiAgICAgIDwvcGFyYT4KICAgICA8L3NlY3QzPgogCisgICAgPHNlY3QzIGlkPSJs b2dpY2FsZGVjb2Rpbmctb3V0cHV0LXBsdWdpbi1zdHJlYW0tc2VxdWVuY2UiPgorICAgICA8 dGl0bGU+U3RyZWFtIFNlcXVlbmNlIENhbGxiYWNrPC90aXRsZT4KKyAgICAgPHBhcmE+Cisg ICAgICBUaGUgb3B0aW9uYWwgPGZ1bmN0aW9uPnN0cmVhbV9zZXF1ZW5jZV9jYjwvZnVuY3Rp b24+IGNhbGxiYWNrIGlzIGNhbGxlZAorICAgICAgZm9yIGFjdGlvbnMgdGhhdCBjaGFuZ2Ug YSBzZXF1ZW5jZSBpbiBhIGJsb2NrIG9mIHN0cmVhbWVkIGNoYW5nZXMKKyAgICAgIChkZW1h cmNhdGVkIGJ5IDxmdW5jdGlvbj5zdHJlYW1fc3RhcnRfY2I8L2Z1bmN0aW9uPiBhbmQKKyAg ICAgIDxmdW5jdGlvbj5zdHJlYW1fc3RvcF9jYjwvZnVuY3Rpb24+IGNhbGxzKS4KKzxwcm9n cmFtbGlzdGluZz4KK3R5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVTdHJlYW1TZXF1ZW5j ZUNCKSAoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVvcmRlckJ1ZmZlclRYTiAq dHhuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBY TG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUmVsYXRpb24gcmVsLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHRyYW5zYWN0aW9uYWwsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0IHZhbHVlKTsK KzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgIDwvcGFyYT4KKyAgICA8L3NlY3QzPgorCiAgICAg PHNlY3QzIGlkPSJsb2dpY2FsZGVjb2Rpbmctb3V0cHV0LXBsdWdpbi1zdHJlYW0tdHJ1bmNh dGUiPgogICAgICA8dGl0bGU+U3RyZWFtIFRydW5jYXRlIENhbGxiYWNrPC90aXRsZT4KICAg ICAgPHBhcmE+CkBAIC0xMjMwLDggKzEyODMsOSBAQCBPdXRwdXRQbHVnaW5Xcml0ZShjdHgs IHRydWUpOwogICAgIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gVGhlcmUgYXJlIG11bHRp cGxlIHJlcXVpcmVkIHN0cmVhbWluZyBjYWxsYmFja3MKICAgICAoPGZ1bmN0aW9uPnN0cmVh bV9zdGFydF9jYjwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+c3RyZWFtX3N0b3BfY2I8L2Z1bmN0 aW9uPiwKICAgICA8ZnVuY3Rpb24+c3RyZWFtX2Fib3J0X2NiPC9mdW5jdGlvbj4sIDxmdW5j dGlvbj5zdHJlYW1fY29tbWl0X2NiPC9mdW5jdGlvbj4KLSAgICBhbmQgPGZ1bmN0aW9uPnN0 cmVhbV9jaGFuZ2VfY2I8L2Z1bmN0aW9uPikgYW5kIHR3byBvcHRpb25hbCBjYWxsYmFja3MK LSAgICAoPGZ1bmN0aW9uPnN0cmVhbV9tZXNzYWdlX2NiPC9mdW5jdGlvbj4gYW5kIDxmdW5j dGlvbj5zdHJlYW1fdHJ1bmNhdGVfY2I8L2Z1bmN0aW9uPikuCisgICAgYW5kIDxmdW5jdGlv bj5zdHJlYW1fY2hhbmdlX2NiPC9mdW5jdGlvbj4pIGFuZCB0aHJlZSBvcHRpb25hbCBjYWxs YmFja3MKKyAgICAoPGZ1bmN0aW9uPnN0cmVhbV9tZXNzYWdlX2NiPC9mdW5jdGlvbj4sIDxm dW5jdGlvbj5zdHJlYW1fc2VxdWVuY2VfY2I8L2Z1bmN0aW9uPiwKKyAgICBhbmQgPGZ1bmN0 aW9uPnN0cmVhbV90cnVuY2F0ZV9jYjwvZnVuY3Rpb24+KS4KICAgICBBbHNvLCBpZiBzdHJl YW1pbmcgb2YgdHdvLXBoYXNlIGNvbW1hbmRzIGlzIHRvIGJlIHN1cHBvcnRlZCwgdGhlbiBh ZGRpdGlvbmFsCiAgICAgY2FsbGJhY2tzIG11c3QgYmUgcHJvdmlkZWQuIChTZWUgPHhyZWYg bGlua2VuZD0ibG9naWNhbGRlY29kaW5nLXR3by1waGFzZS1jb21taXRzIi8+CiAgICAgZm9y IGRldGFpbHMpLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2Uu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKaW5kZXggZGEyYWNlNzljY2Mu LjYxNmI4Njg1ZTM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5j ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTIwNCw2ICsy MDQsMTQgQEAgRGVmaW5lU2VxdWVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTZXFT dG10ICpzZXEpCiAJc3RtdC0+dGFibGVzcGFjZW5hbWUgPSBOVUxMOwogCXN0bXQtPmlmX25v dF9leGlzdHMgPSBzZXEtPmlmX25vdF9leGlzdHM7CiAKKwkvKgorCSAqIE1ha2Ugc3VyZSB0 aGUgcmVsZmlsZW5vZGUgY3JlYXRpb24gKGluIERlZmluZVJlbGF0aW9uKSBpcyBhc3NvY2lh dGVkCisJICogd2l0aCB0aGUgWElELCBzbyB0aGF0IGRlY29kaW5nIG9mIHNlcXVlbmNlcyBj YW4gaGFuZGxlIHRoaXMgYXMgYQorCSAqIHRyYW5zYWN0aW9uYWwgY2hhbmdlLgorCSAqLwor CWlmIChYTG9nTG9naWNhbEluZm9BY3RpdmUoKSkKKwkJR2V0Q3VycmVudFRyYW5zYWN0aW9u SWQoKTsKKwogCWFkZHJlc3MgPSBEZWZpbmVSZWxhdGlvbihzdG10LCBSRUxLSU5EX1NFUVVF TkNFLCBzZXEtPm93bmVySWQsIE5VTEwsIE5VTEwpOwogCXNlcW9pZCA9IGFkZHJlc3Mub2Jq ZWN0SWQ7CiAJQXNzZXJ0KHNlcW9pZCAhPSBJbnZhbGlkT2lkKTsKQEAgLTMwMiw2ICszMTAs MTMgQEAgUmVzZXRTZXF1ZW5jZShPaWQgc2VxX3JlbGlkKQogCXNlcS0+aXNfY2FsbGVkID0g ZmFsc2U7CiAJc2VxLT5sb2dfY250ID0gMDsKIAorCS8qCisJICogTWFrZSBzdXJlIHRoZSBy ZWxmaWxlbm9kZSBjcmVhdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIFhJRCwgc28gdGhh dAorCSAqIGRlY29kaW5nIG9mIHNlcXVlbmNlcyBjYW4gaGFuZGxlIHRoaXMgYXMgYSB0cmFu c2FjdGlvbmFsIGNoYW5nZS4KKwkgKi8KKwlpZiAoWExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkp CisJCUdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7CisKIAkvKgogCSAqIENyZWF0ZSBhIG5l dyBzdG9yYWdlIGZpbGUgZm9yIHRoZSBzZXF1ZW5jZS4KIAkgKi8KQEAgLTM5Miw4ICs0MDcs MTkgQEAgZmlsbF9zZXFfZm9ya193aXRoX2RhdGEoUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUg dHVwbGUsIEZvcmtOdW1iZXIgZm9ya051bSkKIAogCS8qIGNoZWNrIHRoZSBjb21tZW50IGFi b3ZlIG5leHR2YWxfaW50ZXJuYWwoKSdzIGVxdWl2YWxlbnQgY2FsbC4gKi8KIAlpZiAoUmVs YXRpb25OZWVkc1dBTChyZWwpKQorCXsKIAkJR2V0VG9wVHJhbnNhY3Rpb25JZCgpOwogCisJ CS8qCisJCSAqIE1ha2Ugc3VyZSB0aGUgc3VidHJhbnNhY3Rpb24gaGFzIGEgWElEIGFzc2ln bmVkLCBzbyB0aGF0IHRoZQorCQkgKiBzZXF1ZW5jZSBjaGFuZ2UgV0FMIHJlY29yZCBpcyBw cm9wZXJseSBhc3NvY2lhdGVkIHdpdGggaXQuIFRoaXMKKwkJICogbWF0dGVycyBmb3Igc2Vx dWVuY2VzIGNyZWF0ZWQvYWx0ZXJlZCBpbiBhIHRyYW5zYWN0aW9uIC0gdGhlCisJCSAqIHN1 YnNlcXVlbnQgY2hhbmdlcyBuZWVkIHRvIGJlIGhhbmRsZWQgYXMgdHJhbnNhY3Rpb25hbC4K KwkJICovCisJCWlmIChYTG9nTG9naWNhbEluZm9BY3RpdmUoKSkKKwkJCUdldEN1cnJlbnRU cmFuc2FjdGlvbklkKCk7CisJfQorCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKIAlNYXJr QnVmZmVyRGlydHkoYnVmKTsKQEAgLTQxNyw2ICs0NDMsOSBAQCBmaWxsX3NlcV9mb3JrX3dp dGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXBsZSwgRm9ya051bWJlciBmb3Jr TnVtKQogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopICZ4bHJlYywgc2l6ZW9mKHhsX3Nl cV9yZWMpKTsKIAkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSB0dXBsZS0+dF9kYXRhLCB0 dXBsZS0+dF9sZW4pOwogCisJCS8qIGFsbG93IGZpbHRlcmluZyBieSBvcmlnaW4gb24gYSBz ZXF1ZW5jZSB1cGRhdGUgKi8KKwkJWExvZ1NldFJlY29yZEZsYWdzKFhMT0dfSU5DTFVERV9P UklHSU4pOworCiAJCXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fU0VRX0lELCBYTE9HX1NFUV9M T0cpOwogCiAJCVBhZ2VTZXRMU04ocGFnZSwgcmVjcHRyKTsKQEAgLTQ5OSw2ICs1MjgsMTQg QEAgQWx0ZXJTZXF1ZW5jZShQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU2VxU3RtdCAqc3Rt dCkKIAkJaWYgKFJlbGF0aW9uTmVlZHNXQUwoc2VxcmVsKSkKIAkJCUdldFRvcFRyYW5zYWN0 aW9uSWQoKTsKIAorCQkvKgorCQkgKiBNYWtlIHN1cmUgdGhlIHJlbGZpbGVub2RlIGNyZWF0 aW9uIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgWElELCBzbworCQkgKiB0aGF0IGRlY29kaW5n IG9mIHNlcXVlbmNlcyBjYW4gaGFuZGxlIHRoaXMgYXMgYSB0cmFuc2FjdGlvbmFsCisJCSAq IGNoYW5nZS4KKwkJICovCisJCWlmIChYTG9nTG9naWNhbEluZm9BY3RpdmUoKSkKKwkJCUdl dEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7CisKIAkJLyoKIAkJICogQ3JlYXRlIGEgbmV3IHN0 b3JhZ2UgZmlsZSBmb3IgdGhlIHNlcXVlbmNlLCBtYWtpbmcgdGhlIHN0YXRlCiAJCSAqIGNo YW5nZXMgdHJhbnNhY3Rpb25hbC4KQEAgLTU0OCw4ICs1ODUsMTkgQEAgU2VxdWVuY2VDaGFu Z2VQZXJzaXN0ZW5jZShPaWQgcmVsaWQsIGNoYXIgbmV3cmVscGVyc2lzdGVuY2UpCiAKIAkv KiBjaGVjayB0aGUgY29tbWVudCBhYm92ZSBuZXh0dmFsX2ludGVybmFsKCkncyBlcXVpdmFs ZW50IGNhbGwuICovCiAJaWYgKFJlbGF0aW9uTmVlZHNXQUwoc2VxcmVsKSkKKwl7CiAJCUdl dFRvcFRyYW5zYWN0aW9uSWQoKTsKIAorCQkvKgorCQkgKiBNYWtlIHN1cmUgdGhlIHN1YnRy YW5zYWN0aW9uIGhhcyBhIFhJRCBhc3NpZ25lZCwgc28gdGhhdCB0aGUKKwkJICogc2VxdWVu Y2UgY2hhbmdlIFdBTCByZWNvcmQgaXMgcHJvcGVybHkgYXNzb2NpYXRlZCB3aXRoIGl0LiBU aGlzCisJCSAqIG1hdHRlcnMgZm9yIHNlcXVlbmNlcyBjcmVhdGVkL2FsdGVyZWQgaW4gYSB0 cmFuc2FjdGlvbiAtIHRoZQorCQkgKiBzdWJzZXF1ZW50IGNoYW5nZXMgbmVlZCB0byBiZSBo YW5kbGVkIGFzIHRyYW5zYWN0aW9uYWwuCisJCSAqLworCQlpZiAoWExvZ0xvZ2ljYWxJbmZv QWN0aXZlKCkpCisJCQlHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOworCX0KKwogCSh2b2lk KSByZWFkX3NlcV90dXBsZShzZXFyZWwsICZidWYsICZzZXFkYXRhdHVwbGUpOwogCVJlbGF0 aW9uU2V0TmV3UmVsZmlsZW51bWJlcihzZXFyZWwsIG5ld3JlbHBlcnNpc3RlbmNlKTsKIAlm aWxsX3NlcV93aXRoX2RhdGEoc2VxcmVsLCAmc2VxZGF0YXR1cGxlKTsKQEAgLTc5MiwxMCAr ODQwLDM0IEBAIG5leHR2YWxfaW50ZXJuYWwoT2lkIHJlbGlkLCBib29sIGNoZWNrX3Blcm1p c3Npb25zKQogCSAqIEl0J3Mgc3VmZmljaWVudCB0byBlbnN1cmUgdGhlIHRvcGxldmVsIHRy YW5zYWN0aW9uIGhhcyBhbiB4aWQsIG5vIG5lZWQKIAkgKiB0byBhc3NpZ24geGlkcyBzdWJ4 YWN0cywgdGhhdCdsbCBhbHJlYWR5IHRyaWdnZXIgYW4gYXBwcm9wcmlhdGUgd2FpdC4KIAkg KiAoSGF2ZSB0byBkbyB0aGF0IGhlcmUsIHNvIHdlJ3JlIG91dHNpZGUgdGhlIGNyaXRpY2Fs IHNlY3Rpb24pCisJICoKKwkgKiBXZSBoYXZlIHRvIGVuc3VyZSB3ZSBoYXZlIGEgcHJvcGVy IFhJRCwgd2hpY2ggd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUKKwkgKiBYTE9HIHJlY29yZCBi eSBYTG9nUmVjb3JkQXNzZW1ibGUuIE90aGVyd2lzZSB0aGUgZmlyc3QgbmV4dHZhbCgpIGlu IGEKKwkgKiBzdWJ4YWN0ICh3aXRob3V0IGFueSBwcmVjZWRpbmcgY2hhbmdlcykgd291bGQg Z2V0IFhJRCAwLCBhbmQgaXQgd291bGQKKwkgKiB0aGVuIGJlIGltcG9zc2libGUgdG8gZGVj aWRlIHdoaWNoIHRvcCB4YWN0IGl0IGJlbG9uZ3MgdG8uIEl0J2QgYWxzbworCSAqIHRyaWdn ZXIgYXNzZXJ0IGluIERlY29kZVNlcXVlbmNlLiBXZSBvbmx5IGRvIHRoYXQgd2l0aAorCSAq IHdhbF9sZXZlbD1sb2dpY2FsLCB0aG91Z2guCisJICoKKwkgKiBYWFggVGhpcyBtaWdodCBz ZWVtIHVubmVjZXNzYXJ5LCBiZWNhdXNlIGlmIHRoZXJlJ3Mgbm8gWElEIHRoZSB4YWN0CisJ ICogY291bGRuJ3QgaGF2ZSBkb25lIGFueXRoaW5nIGltcG9ydGFudCB5ZXQsIGUuZy4gaXQg Y291bGQgbm90IGhhdmUKKwkgKiBjcmVhdGVkIGEgc2VxdWVuY2UuIEJ1dCB0aGF0J3MgaW5j b3JyZWN0LCBiZWNhdXNlIG9mIHN1YnhhY3RzLiBUaGUKKwkgKiBjdXJyZW50IHN1YnRyYW5z YWN0aW9uIG1pZ2h0IG5vdCBoYXZlIGRvbmUgYW55dGhpbmcgeWV0ICh0aHVzIG5vIFhJRCks CisJICogYnV0IGFuIGVhcmxpZXIgb25lIG1pZ2h0IGhhdmUgY3JlYXRlZCB0aGUgc2VxdWVu Y2UuCiAJICovCiAJaWYgKGxvZ2l0ICYmIFJlbGF0aW9uTmVlZHNXQUwoc2VxcmVsKSkKKwl7 CiAJCUdldFRvcFRyYW5zYWN0aW9uSWQoKTsKIAorCQkvKgorCQkgKiBNYWtlIHN1cmUgdGhl IHN1YnRyYW5zYWN0aW9uIGhhcyBhIFhJRCBhc3NpZ25lZCwgc28gdGhhdCB0aGUKKwkJICog c2VxdWVuY2UgY2hhbmdlIFdBTCByZWNvcmQgaXMgcHJvcGVybHkgYXNzb2NpYXRlZCB3aXRo IGl0LiBUaGlzCisJCSAqIG1hdHRlcnMgZm9yIHNlcXVlbmNlcyBjcmVhdGVkL2FsdGVyZWQg aW4gYSB0cmFuc2FjdGlvbiAtIHRoZQorCQkgKiBzdWJzZXF1ZW50IGNoYW5nZXMgbmVlZCB0 byBiZSBoYW5kbGVkIGFzIHRyYW5zYWN0aW9uYWwuCisJCSAqLworCQlpZiAoWExvZ0xvZ2lj YWxJbmZvQWN0aXZlKCkpCisJCQlHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOworCX0KKwog CS8qIHJlYWR5IHRvIGNoYW5nZSB0aGUgb24tZGlzayAob3IgcmVhbGx5LCBpbi1idWZmZXIp IHR1cGxlICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKQEAgLTgzNSw2ICs5MDcsOSBA QCBuZXh0dmFsX2ludGVybmFsKE9pZCByZWxpZCwgYm9vbCBjaGVja19wZXJtaXNzaW9ucykK IAkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSAmeGxyZWMsIHNpemVvZih4bF9zZXFfcmVj KSk7CiAJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgc2VxZGF0YXR1cGxlLnRfZGF0YSwg c2VxZGF0YXR1cGxlLnRfbGVuKTsKIAorCQkvKiBhbGxvdyBmaWx0ZXJpbmcgYnkgb3JpZ2lu IG9uIGEgc2VxdWVuY2UgdXBkYXRlICovCisJCVhMb2dTZXRSZWNvcmRGbGFncyhYTE9HX0lO Q0xVREVfT1JJR0lOKTsKKwogCQlyZWNwdHIgPSBYTG9nSW5zZXJ0KFJNX1NFUV9JRCwgWExP R19TRVFfTE9HKTsKIAogCQlQYWdlU2V0TFNOKHBhZ2UsIHJlY3B0cik7CkBAIC05OTYsOCAr MTA3MSwxOSBAQCBkb19zZXR2YWwoT2lkIHJlbGlkLCBpbnQ2NCBuZXh0LCBib29sIGlzY2Fs bGVkKQogCiAJLyogY2hlY2sgdGhlIGNvbW1lbnQgYWJvdmUgbmV4dHZhbF9pbnRlcm5hbCgp J3MgZXF1aXZhbGVudCBjYWxsLiAqLwogCWlmIChSZWxhdGlvbk5lZWRzV0FMKHNlcXJlbCkp CisJewogCQlHZXRUb3BUcmFuc2FjdGlvbklkKCk7CiAKKwkJLyoKKwkJICogTWFrZSBzdXJl IHRoZSBzdWJ0cmFuc2FjdGlvbiBoYXMgYSBYSUQgYXNzaWduZWQsIHNvIHRoYXQgdGhlCisJ CSAqIHNlcXVlbmNlIGNoYW5nZSBXQUwgcmVjb3JkIGlzIHByb3Blcmx5IGFzc29jaWF0ZWQg d2l0aCBpdC4gVGhpcworCQkgKiBtYXR0ZXJzIGZvciBzZXF1ZW5jZXMgY3JlYXRlZC9hbHRl cmVkIGluIGEgdHJhbnNhY3Rpb24gLSB0aGUKKwkJICogc3Vic2VxdWVudCBjaGFuZ2VzIG5l ZWQgdG8gYmUgaGFuZGxlZCBhcyB0cmFuc2FjdGlvbmFsLgorCQkgKi8KKwkJaWYgKFhMb2dM b2dpY2FsSW5mb0FjdGl2ZSgpKQorCQkJR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKKwl9 CisKIAkvKiByZWFkeSB0byBjaGFuZ2UgdGhlIG9uLWRpc2sgKG9yIHJlYWxseSwgaW4tYnVm ZmVyKSB0dXBsZSAqLwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCkBAIC0xMDIxLDYgKzEx MDcsOSBAQCBkb19zZXR2YWwoT2lkIHJlbGlkLCBpbnQ2NCBuZXh0LCBib29sIGlzY2FsbGVk KQogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopICZ4bHJlYywgc2l6ZW9mKHhsX3NlcV9y ZWMpKTsKIAkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSBzZXFkYXRhdHVwbGUudF9kYXRh LCBzZXFkYXRhdHVwbGUudF9sZW4pOwogCisJCS8qIGFsbG93IGZpbHRlcmluZyBieSBvcmln aW4gb24gYSBzZXF1ZW5jZSB1cGRhdGUgKi8KKwkJWExvZ1NldFJlY29yZEZsYWdzKFhMT0df SU5DTFVERV9PUklHSU4pOworCiAJCXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fU0VRX0lELCBY TE9HX1NFUV9MT0cpOwogCiAJCVBhZ2VTZXRMU04ocGFnZSwgcmVjcHRyKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IDEyMzcxMThlODRmLi41 YWRlYmE0ZjcwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29k ZS5jCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvcmQuaCIK ICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19j b250cm9sLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdlX3hsb2cuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9kZWNvZGUuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fs LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbWVzc2FnZS5oIgpAQCAtNDIsNiArNDMsNyBA QAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCIKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi9zbmFwYnVpbGQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnkuaCIK KyNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgogCiAvKiBpbmRpdmlkdWFsIHJlY29y ZChncm91cCkncyBoYW5kbGVycyAqLwogc3RhdGljIHZvaWQgRGVjb2RlSW5zZXJ0KExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKTsKQEAgLTYz LDYgKzY1LDcgQEAgc3RhdGljIHZvaWQgRGVjb2RlUHJlcGFyZShMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZiwKIAogLyogY29tbW9uIGZ1bmN0 aW9uIHRvIGRlY29kZSB0dXBsZXMgKi8KIHN0YXRpYyB2b2lkIERlY29kZVhMb2dUdXBsZShj aGFyICpkYXRhLCBTaXplIGxlbiwgUmVvcmRlckJ1ZmZlclR1cGxlQnVmICp0dXBsZSk7Citz dGF0aWMgdm9pZCBEZWNvZGVTZXFUdXBsZShjaGFyICpkYXRhLCBTaXplIGxlbiwgUmVvcmRl ckJ1ZmZlclR1cGxlQnVmICp0dXBsZSk7CiAKIC8qIGhlbHBlciBmdW5jdGlvbnMgZm9yIGRl Y29kaW5nIHRyYW5zYWN0aW9ucyAqLwogc3RhdGljIGlubGluZSBib29sIEZpbHRlclByZXBh cmUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LApAQCAtNjI5LDcgKzYzMiw3IEBAIGxv Z2ljYWxtc2dfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29y ZEJ1ZmZlciAqYnVmKQogCQkgKiBXZSBuZWVkIHRvIHNldCBwcm9jZXNzaW5nX3JlcXVpcmVk IGZsYWcgdG8gbm90aWZ5IHRoZSBtZXNzYWdlJ3MKIAkJICogZXhpc3RlbmNlIHRvIHRoZSBj YWxsZXIuIFVzdWFsbHksIHRoZSBmbGFnIGlzIHNldCB3aGVuIGVpdGhlciB0aGUKIAkJICog Q09NTUlUIG9yIEFCT1JUIHJlY29yZHMgYXJlIGRlY29kZWQsIGJ1dCB0aGlzIG11c3QgYmUg dHVybmVkIG9uCi0JCSAqIGhlcmUgYmVjYXVzZSB0aGUgbm9uLXRyYW5zYWN0aW9uYWwgbG9n aWNhbCBtZXNzYWdlIGlzIGRlY29kZWQKKwkJICogaGVyZSBiZWNhdXNlIHRoZSBub24tdHJh bnNhY3Rpb25hbCBzZXF1ZW5jZSBjaGFuZ2UgaXMgZGVjb2RlZAogCQkgKiB3aXRob3V0IHdh aXRpbmcgZm9yIHRoZXNlIHJlY29yZHMuCiAJCSAqLwogCQlpZiAoIW1lc3NhZ2UtPnRyYW5z YWN0aW9uYWwpCkBAIC0xMzIwLDMgKzEzMjMsMjMwIEBAIERlY29kZVRYTk5lZWRTa2lwKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCiAJ cmV0dXJuIGZhbHNlOwogfQorCisvKgorICogRGVjb2RlU2VxVHVwbGUKKyAqCQlkZWNvZGUg dHVwbGUgZGVzY3JpYmluZyB0aGUgc2VxdWVuY2UgY2hhbmdlCisgKgorICogU2VxdWVuY2Vz IGFyZSByZXByZXNlbnRlZCBhcyBhIHRhYmxlIHdpdGggYSBzaW5nbGUgcm93LCB3aGljaCBn ZXRzIHVwZGF0ZWQgYnkKKyAqIG5leHR2YWwoKSBldGMuIFRoZSB0dXBsZSBpcyBzdG9yZWQg aW4gV0FMIHJpZ2h0IGFmdGVyIHRoZSB4bF9zZXFfcmVjLCBzbyB3ZQorICogc2ltcGx5IGNv cHkgaXQgaW50byB0aGUgdHVwbGVidWYgKHNpbWlsYXIgdG8gc2VxX3JlZG8pLgorICovCitz dGF0aWMgdm9pZAorRGVjb2RlU2VxVHVwbGUoY2hhciAqZGF0YSwgU2l6ZSBsZW4sIFJlb3Jk ZXJCdWZmZXJUdXBsZUJ1ZiAqdHVwbGUpCit7CisJaW50CQkJZGF0YWxlbiA9IGxlbiAtIHNp emVvZih4bF9zZXFfcmVjKSAtIFNpemVvZkhlYXBUdXBsZUhlYWRlcjsKKworCUFzc2VydChk YXRhbGVuID49IDApOworCisJdHVwbGUtPnR1cGxlLnRfbGVuID0gZGF0YWxlbiArIFNpemVv ZkhlYXBUdXBsZUhlYWRlcjsKKworCUl0ZW1Qb2ludGVyU2V0SW52YWxpZCgmdHVwbGUtPnR1 cGxlLnRfc2VsZik7CisKKwl0dXBsZS0+dHVwbGUudF90YWJsZU9pZCA9IEludmFsaWRPaWQ7 CisKKwltZW1jcHkoKChjaGFyICopIHR1cGxlLT50dXBsZS50X2RhdGEpLAorCQkgICBkYXRh ICsgc2l6ZW9mKHhsX3NlcV9yZWMpLAorCQkgICBTaXplb2ZIZWFwVHVwbGVIZWFkZXIpOwor CisJbWVtY3B5KCgoY2hhciAqKSB0dXBsZS0+dHVwbGUudF9kYXRhKSArIFNpemVvZkhlYXBU dXBsZUhlYWRlciwKKwkJICAgZGF0YSArIHNpemVvZih4bF9zZXFfcmVjKSArIFNpemVvZkhl YXBUdXBsZUhlYWRlciwKKwkJICAgZGF0YWxlbik7Cit9CisKKy8qCisgKiBIYW5kbGUgc2Vx dWVuY2UgZGVjb2RlCisgKgorICogRGVjb2Rpbmcgc2VxdWVuY2VzIGlzIGEgYml0IHRyaWNr eSwgYmVjYXVzZSB3aGlsZSBtb3N0IHNlcXVlbmNlIGFjdGlvbnMKKyAqIGFyZSBub24tdHJh bnNhY3Rpb25hbCAoaW1tZWRpYXRlbHkgdmlzaWJsZSBhbmQgbm90IHN1YmplY3QgdG8gcm9s bGJhY2spLAorICogc29tZSBuZWVkIHRvIGJlIGhhbmRsZWQgYXMgdHJhbnNhY3Rpb25hbCAo ZS5nLiBmb3Igc2VxdWVuY2VzIGNyZWF0ZWQgaW4KKyAqIGEgdHJhbnNhY3Rpb24gYXJlIGlu dmlzaWJsZSB1bnRpbCB0aGF0IHRyYW5zYWN0aW9uIGNvbW1pdHMpLgorICoKKyAqIEJ5IGRl ZmF1bHQsIGEgc2VxdWVuY2UgY2hhbmdlIGlzIG5vbi10cmFuc2FjdGlvbmFsIC0gd2UgbXVz dCBub3QgcXVldWUKKyAqIGl0IGluIGEgdHJhbnNhY3Rpb24gYXMgb3RoZXIgY2hhbmdlcywg YmVjYXVzZSB0aGUgdHJhbnNhY3Rpb24gbWlnaHQgZ2V0CisgKiByb2xsZWQgYmFjayBhbmQg d2UnZCBkaXNjYXJkIHRoZSBjaGFuZ2UuIEJ1dCB0aGF0J2QgYmUgaW5jb3JyZWN0LCBhcyB0 aGUKKyAqIGNoYW5nZSBpcyBhbHJlYWR5IHZpc2libGUgdG8gb3RoZXIgcHJvY2Vzc2VzIGFj Y2Vzc2luZyB0aGUgc2VxdWVuY2UuIElmCisgKiB3ZSBkaXNjYXJkIHRoZSBjaGFuZ2UsIHRo ZSBkb3duc3RyZWFtIHdpbGwgbm90IGJlIG5vdGlmaWVkIGFib3V0IHRoZQorICogY2hhbmdl LCBhbmQgbWF5IGZhbGwgYmVoaW5kLgorICoKKyAqIE9uIHRoZSBvdGhlciBoYW5kLCB0aGUg c2VxdWVuY2UgbWF5IGJlIGNyZWF0ZWQgaW4gYSB0cmFuc2FjdGlvbi4gSW4gdGhpcworICog Y2FzZSB3ZSAqaGF2ZSB0byogcXVldWUgaXQgaW4gdGhlIHRyYW5zYWN0aW9uIGp1c3QgbGlr ZSBvdGhlciBjaGFuZ2VzLAorICogYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIHByb2Nlc3Mg Y2hhbmdlcyBmb3Igc2VxdWVuY2VzIHRoYXQgbWF5IGJlIHVua25vd24KKyAqIG91dHNpZGUg dGhlIHRyYW5zYWN0aW9uIC0gdGhlIGRvd25zdHJlYW0gbWlnaHQgZ2V0IGNvbmZ1c2VkIGFi b3V0IHdoaWNoCisgKiBzZXF1ZW5jZSBpdCdzIHJlbGF0ZWQgdG8gZXRjLgorICovCit2b2lk CitzZXFfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1 ZmZlciAqYnVmKQoreworCVNuYXBCdWlsZCAgKmJ1aWxkZXIgPSBjdHgtPnNuYXBzaG90X2J1 aWxkZXI7CisJUmVvcmRlckJ1ZmZlclR1cGxlQnVmICp0dXBsZWJ1ZjsKKwlSZWxGaWxlTG9j YXRvciB0YXJnZXRfbG9jYXRvcjsKKwlYTG9nUmVhZGVyU3RhdGUgKnIgPSBidWYtPnJlY29y ZDsKKwljaGFyCSAgICp0dXBsZWRhdGEgPSBOVUxMOworCVNpemUJCXR1cGxlbGVuOworCVNp emUJCWRhdGFsZW4gPSAwOworCVRyYW5zYWN0aW9uSWQgeGlkID0gWExvZ1JlY0dldFhpZChy KTsKKwl1aW50OAkJaW5mbyA9IFhMb2dSZWNHZXRJbmZvKGJ1Zi0+cmVjb3JkKSAmIH5YTFJf SU5GT19NQVNLOworCVNuYXBzaG90CXNuYXBzaG90ID0gTlVMTDsKKwlSZXBPcmlnaW5JZCBv cmlnaW5faWQgPSBYTG9nUmVjR2V0T3JpZ2luKHIpOworCWJvb2wJCXRyYW5zYWN0aW9uYWw7 CisKKwkvKiBpZ25vcmUgc2VxdWVuY2VzIHdoZW4gdGhlIHBsdWdpbiBkb2VzIG5vdCBoYXZl IHRoZSBjYWxsYmFja3MgKi8KKwlpZiAoIWN0eC0+c2VxdWVuY2VzKQorCQlyZXR1cm47CisK KwkvKiBvbmx5IGRlY29kZSBjaGFuZ2VzIGZsYWdnZWQgd2l0aCBYTE9HX1NFUV9MT0cgKi8K KwlpZiAoaW5mbyAhPSBYTE9HX1NFUV9MT0cpCisJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVk IFJNX1NFUV9JRCByZWNvcmQgdHlwZTogJXUiLCBpbmZvKTsKKworCVJlb3JkZXJCdWZmZXJQ cm9jZXNzWGlkKGN0eC0+cmVvcmRlciwgWExvZ1JlY0dldFhpZChyKSwgYnVmLT5vcmlncHRy KTsKKworCS8qCisJICogSWYgd2UgZG9uJ3QgaGF2ZSBzbmFwc2hvdCBvciB3ZSBhcmUganVz dCBmYXN0LWZvcndhcmRpbmcsIHRoZXJlIGlzIG5vCisJICogcG9pbnQgaW4gZGVjb2Rpbmcg c2VxdWVuY2VzLgorCSAqLworCWlmIChTbmFwQnVpbGRDdXJyZW50U3RhdGUoYnVpbGRlcikg PCBTTkFQQlVJTERfRlVMTF9TTkFQU0hPVCkKKwkJcmV0dXJuOworCisJLyogb25seSBpbnRl cmVzdGVkIGluIG91ciBkYXRhYmFzZSAqLworCVhMb2dSZWNHZXRCbG9ja1RhZyhyLCAwLCAm dGFyZ2V0X2xvY2F0b3IsIE5VTEwsIE5VTEwpOworCWlmICh0YXJnZXRfbG9jYXRvci5kYk9p ZCAhPSBjdHgtPnNsb3QtPmRhdGEuZGF0YWJhc2UpCisJCXJldHVybjsKKworCS8qIG91dHB1 dCBwbHVnaW4gZG9lc24ndCBsb29rIGZvciB0aGlzIG9yaWdpbiwgbm8gbmVlZCB0byBxdWV1 ZSAqLworCWlmIChGaWx0ZXJCeU9yaWdpbihjdHgsIFhMb2dSZWNHZXRPcmlnaW4ocikpKQor CQlyZXR1cm47CisKKwkvKiB0aW1lIHRvIGRlY29kZSB0aGUgc2VxdWVuY2UgZGF0YSBmcm9t IHRoZSB0dXBsZSAqLworCXR1cGxlZGF0YSA9IFhMb2dSZWNHZXREYXRhKHIpOworCWRhdGFs ZW4gPSBYTG9nUmVjR2V0RGF0YUxlbihyKTsKKwl0dXBsZWxlbiA9IGRhdGFsZW4gLSBTaXpl T2ZIZWFwSGVhZGVyIC0gc2l6ZW9mKHhsX3NlcV9yZWMpOworCisJLyogdGhlIHNlcXVlbmNl IHNob3VsZCBub3QgaGF2ZSBjaGFuZ2VkIHdpdGhvdXQgZGF0YSAqLworCWlmICghZGF0YWxl biB8fCAhdHVwbGVkYXRhKQorCQllbG9nKEVSUk9SLCAic2VxdWVuY2UgZGVjb2RlIG1pc3Np bmcgdHVwbGUgZGF0YSIpOworCisJdHVwbGVidWYgPSBSZW9yZGVyQnVmZmVyR2V0VHVwbGVC dWYoY3R4LT5yZW9yZGVyLCB0dXBsZWxlbik7CisJRGVjb2RlU2VxVHVwbGUodHVwbGVkYXRh LCBkYXRhbGVuLCB0dXBsZWJ1Zik7CisKKwkvKgorCSAqIFNob3VsZCB3ZSBoYW5kbGUgdGhl IHNlcXVlbmNlIGNoYW5nZSBhcyB0cmFuc2FjdGlvbmFsIG9yIG5vdD8KKwkgKgorCSAqIElm IHRoZSByZWxmaWxlbm9kZSB3YXMgY3JlYXRlZCBpbiB0aGUgY3VycmVudCB0cmFuc2FjdGlv biwgdHJlYXQgdGhlCisJICogY2hhbmdlIGFzIHRyYW5zYWN0aW9uYWwgYW5kIHF1ZXVlIGl0 LiBPdGhlcndpc2UgaXQgbmVlZHMgdG8gYmUgdHJlYXRlZAorCSAqIGFzIG5vbi10cmFuc2Fj dGlvbmFsLCBpbiB3aGljaCBjYXNlIHdlIGp1c3Qgc2VuZCBpdCB0byB0aGUgcGx1Z2luIHJp Z2h0CisJICogYXdheS4KKwkgKi8KKwl0cmFuc2FjdGlvbmFsID0gUmVvcmRlckJ1ZmZlclNl cXVlbmNlSXNUcmFuc2FjdGlvbmFsKGN0eC0+cmVvcmRlciwKKwkJCQkJCQkJCQkJCQkJIHRh cmdldF9sb2NhdG9yLAorCQkJCQkJCQkJCQkJCQkgTlVMTCk7CisKKwkvKiBTa2lwIHRoZSBj aGFuZ2UgaWYgYWxyZWFkeSBwcm9jZXNzZWQgKHBlciB0aGUgc25hcHNob3QpLiAqLworCWlm ICh0cmFuc2FjdGlvbmFsICYmCisJCSFTbmFwQnVpbGRQcm9jZXNzQ2hhbmdlKGJ1aWxkZXIs IHhpZCwgYnVmLT5vcmlncHRyKSkKKwkJcmV0dXJuOworCWVsc2UgaWYgKCF0cmFuc2FjdGlv bmFsICYmCisJCQkgKFNuYXBCdWlsZEN1cnJlbnRTdGF0ZShidWlsZGVyKSAhPSBTTkFQQlVJ TERfQ09OU0lTVEVOVCB8fAorCQkJICBTbmFwQnVpbGRYYWN0TmVlZHNTa2lwKGJ1aWxkZXIs IGJ1Zi0+b3JpZ3B0cikpKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFdlIGFsc28gc2tpcCBk ZWNvZGluZyBpbiBmYXN0X2ZvcndhcmQgbW9kZS4gVGhpcyBjaGVjayBtdXN0IGJlIGxhc3QK KwkgKiBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gc2V0IHRoZSBwcm9jZXNzaW5nX3JlcXVp cmVkIGZsYWcgdW5sZXNzIHdlCisJICogaGF2ZSBhIGRlY29kYWJsZSBzZXF1ZW5jZSBjaGFu Z2UuCisJICovCisJaWYgKGN0eC0+ZmFzdF9mb3J3YXJkKQorCXsKKwkJLyoKKwkJICogV2Ug bmVlZCB0byBzZXQgcHJvY2Vzc2luZ19yZXF1aXJlZCBmbGFnIHRvIG5vdGlmeSB0aGUgc2Vx dWVuY2UKKwkJICogY2hhbmdlIGV4aXN0ZW5jZSB0byB0aGUgY2FsbGVyLiBVc3VhbGx5LCB0 aGUgZmxhZyBpcyBzZXQgd2hlbgorCQkgKiBlaXRoZXIgdGhlIENPTU1JVCBvciBBQk9SVCBy ZWNvcmRzIGFyZSBkZWNvZGVkLCBidXQgdGhpcyBtdXN0IGJlCisJCSAqIHR1cm5lZCBvbiBo ZXJlIGJlY2F1c2UgdGhlIG5vbi10cmFuc2FjdGlvbmFsIGxvZ2ljYWwgbWVzc2FnZSBpcwor CQkgKiBkZWNvZGVkIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlc2UgcmVjb3Jkcy4KKwkJICov CisJCWlmICghdHJhbnNhY3Rpb25hbCkKKwkJCWN0eC0+cHJvY2Vzc2luZ19yZXF1aXJlZCA9 IHRydWU7CisKKwkJcmV0dXJuOworCX0KKworCS8qCisJICogSWYgdGhpcyBpcyBhIG5vbi10 cmFuc2FjdGlvbmFsIGNoYW5nZSwgZ2V0IHRoZSBzbmFwc2hvdCB3ZSdyZSBleHBlY3RlZAor CSAqIHRvIHVzZS4gV2Ugb25seSBnZXQgaGVyZSB3aGVuIHRoZSBzbmFwc2hvdCBpcyBjb25z aXN0ZW50LCBhbmQgdGhlCisJICogY2hhbmdlIGlzIG5vdCBtZWFudCB0byBiZSBza2lwcGVk LgorCSAqCisJICogRm9yIHRyYW5zYWN0aW9uYWwgY2hhbmdlcyB3ZSBkb24ndCBuZWVkIGEg c25hcHNob3QsIHdlJ2xsIHVzZSB0aGUKKwkgKiByZWd1bGFyIHNuYXBzaG90IG1haW50YWlu ZWQgYnkgUmVvcmRlckJ1ZmZlci4gV2UganVzdCBsZWF2ZSBpdCBOVUxMLgorCSAqLworCWlm ICghdHJhbnNhY3Rpb25hbCkKKwkJc25hcHNob3QgPSBTbmFwQnVpbGRHZXRPckJ1aWxkU25h cHNob3QoYnVpbGRlcik7CisKKwkvKiBRdWV1ZSB0aGUgY2hhbmdlIChvciBzZW5kIGltbWVk aWF0ZWx5IGlmIG5vdCB0cmFuc2FjdGlvbmFsKS4gKi8KKwlSZW9yZGVyQnVmZmVyUXVldWVT ZXF1ZW5jZShjdHgtPnJlb3JkZXIsIHhpZCwgc25hcHNob3QsIGJ1Zi0+ZW5kcHRyLAorCQkJ CQkJCSAgIG9yaWdpbl9pZCwgdGFyZ2V0X2xvY2F0b3IsIHRyYW5zYWN0aW9uYWwsCisJCQkJ CQkJICAgdHVwbGVidWYpOworfQorCisvKgorICogRGVjb2RlIHJlbGZpbGVub2RlIGNoYW5n ZQorICoKKyAqIERlY29kZSBTTUdSIHJlY29yZHMsIHNvIHRoYXQgd2UgY2FuIGxhdGVyIGRl Y2lkZSB3aGljaCBzZXF1ZW5jZSBjaGFuZ2VzCisgKiBuZWVkIHRvIGJlIHRyZWF0ZWQgYXMg dHJhbnNhY3Rpb25hbC4gTW9zdCBzZXF1ZW5jZSBjaGFuZ2VzIGFyZSBnb2luZyB0bworICog YmUgbm9uLXRyYW5zYWN0aW9uYWwgKGFwcGxpZWQgYXMgaWYgb3V0c2lkZSB0aGUgZGVjb2Rl ZCB0cmFuc2FjdGlvbiwgbm90CisgKiBzdWJqZWN0IHRvIHJvbGxiYWNrLCBldGMuKS4gQ2hh bmdlcyBmb3Igc2VxdWVuY2VzIGNyZWF0ZWQvYWx0ZXJlZCBpbiB0aGUKKyAqIHRyYW5zYWN0 aW9uIG5lZWQgdG8gYmUgaGFuZGxlZCBhcyB0cmFuc2FjdGlvbmFsIChpLmUuIGFwcGxpZWQg YXMgcGFydCBvZgorICogdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24sIHNhbWUgYXMgYWxsIG90 aGVyIGNoYW5nZXMpLgorICoKKyAqIFRvIGRlY2lkZSB3aGljaCBvZiB0aG9zZSBjYXNlcyBp cyBpdCB3ZSBkZWNvZGUgWExPR19TTUdSX0NSRUFURSByZWNvcmRzCisgKiBhbmQgdHJhY2sg cmVsZmlsZW5vZGVzIGNyZWF0ZWQgaW4gZWFjaCAoc3ViKXRyYW5zYWN0aW9uLiBDaGFuZ2Vz IGZvcgorICogdGhlc2UgcmVsZmlsZW5vZGVzIGFyZSB0aGVuIHF1ZXVlZCBhbmQgdHJlYXRl ZCBhcyB0cmFuc2FjdGlvbmFsLCB3aGlsZQorICogcmVtYWluaW5nIGNoYW5nZXMgYXJlIHRy ZWF0ZWQgYXMgbm9uLXRyYW5zYWN0aW9uYWwuCisgKgorICogV2Ugb25seSBjYXJlIGFib3V0 IFhMT0dfU01HUl9DUkVBVEUgcmVjb3JkcyBmb3IgIm91ciIgZGF0YWJhc2UgKGxvZ2ljYWwK KyAqIGRlY29kaW5nIGlzIHJlc3RyaWN0ZWQgdG8gYSBzaW5nbGUgZGF0YWJhc2UpLCBhbmQg d2UgZG8gdGhlIGZpbHRlcmluZworICogYW5kIHNraXBwaW5nLCBhcyBhcHByb3ByaWF0ZS4K KyAqLwordm9pZAorc21ncl9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBY TG9nUmVjb3JkQnVmZmVyICpidWYpCit7CisJU25hcEJ1aWxkICAqYnVpbGRlciA9IGN0eC0+ c25hcHNob3RfYnVpbGRlcjsKKwlYTG9nUmVhZGVyU3RhdGUgKnIgPSBidWYtPnJlY29yZDsK KwlUcmFuc2FjdGlvbklkIHhpZCA9IFhMb2dSZWNHZXRYaWQocik7CisJdWludDgJCWluZm8g PSBYTG9nUmVjR2V0SW5mbyhidWYtPnJlY29yZCkgJiB+WExSX0lORk9fTUFTSzsKKwl4bF9z bWdyX2NyZWF0ZSAqeGxyZWM7CisKKwkvKgorCSAqIEJhaWwgb3V0IHdoZW4gbm90IGRlY29k aW5nIHNlcXVlbmNlcywgd2hpY2ggaXMgY3VycmVudGx5IHRoZSBvbmx5IGNhc2UKKwkgKiB3 aGVuIHdlIG5lZWQgdG8ga25vdyBhYm91dCByZWxmaWxlbm9kZXMgY3JlYXRlZCBpbiBhIHRy YW5zYWN0aW9uLgorCSAqLworCWlmICghY3R4LT5zZXF1ZW5jZXMpCisJCXJldHVybjsKKwor CS8qCisJICogV2Ugb25seSBjYXJlIGFib3V0IFhMT0dfU01HUl9DUkVBVEUsIGJlY2F1c2Ug dGhhdCdzIHdoYXQgZGV0ZXJtaW5lcyBpZgorCSAqIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2Ug Y2hhbmdlcyBhcmUgdHJhbnNhY3Rpb25hbC4KKwkgKi8KKwlpZiAoaW5mbyAhPSBYTE9HX1NN R1JfQ1JFQVRFKQorCQlyZXR1cm47CisKKwlSZW9yZGVyQnVmZmVyUHJvY2Vzc1hpZChjdHgt PnJlb3JkZXIsIFhMb2dSZWNHZXRYaWQociksIGJ1Zi0+b3JpZ3B0cik7CisKKwkvKgorCSAq IElmIHdlIGRvbid0IGhhdmUgc25hcHNob3Qgb3Igd2UgYXJlIGp1c3QgZmFzdC1mb3J3YXJk aW5nLCB0aGVyZSBpcyBubworCSAqIHBvaW50IGluIGRlY29kaW5nIHJlbGZpbGVub2RlIGlu Zm9ybWF0aW9uLgorCSAqLworCWlmIChTbmFwQnVpbGRDdXJyZW50U3RhdGUoYnVpbGRlcikg PCBTTkFQQlVJTERfRlVMTF9TTkFQU0hPVCB8fAorCQljdHgtPmZhc3RfZm9yd2FyZCkKKwkJ cmV0dXJuOworCisJLyogb25seSBpbnRlcmVzdGVkIGluIG91ciBkYXRhYmFzZSAqLworCXhs cmVjID0gKHhsX3NtZ3JfY3JlYXRlICopIFhMb2dSZWNHZXREYXRhKHIpOworCWlmICh4bHJl Yy0+cmxvY2F0b3IuZGJPaWQgIT0gY3R4LT5zbG90LT5kYXRhLmRhdGFiYXNlKQorCQlyZXR1 cm47CisKKwkvKiBvdXRwdXQgcGx1Z2luIGRvZXNuJ3QgbG9vayBmb3IgdGhpcyBvcmlnaW4s IG5vIG5lZWQgdG8gcXVldWUgKi8KKwlpZiAoRmlsdGVyQnlPcmlnaW4oY3R4LCBYTG9nUmVj R2V0T3JpZ2luKHIpKSkKKwkJcmV0dXJuOworCisJUmVvcmRlckJ1ZmZlckFkZFJlbEZpbGVM b2NhdG9yKGN0eC0+cmVvcmRlciwgeGlkLCBidWYtPmVuZHB0ciwgeGxyZWMtPnJsb2NhdG9y KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9n aWNhbC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKaW5k ZXggODI4OGRhNTI3N2YuLjNhN2IzYjliZTBjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xvZ2ljYWwuYwpAQCAtNzUsNiArNzUsOSBAQCBzdGF0aWMgdm9pZCB0 cnVuY2F0ZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVy VFhOICp0eG4sCiBzdGF0aWMgdm9pZCBtZXNzYWdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZl ciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJCQkgICBYTG9nUmVjUHRy IG1lc3NhZ2VfbHNuLCBib29sIHRyYW5zYWN0aW9uYWwsCiAJCQkJCQkJICAgY29uc3QgY2hh ciAqcHJlZml4LCBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7Citz dGF0aWMgdm9pZCBzZXF1ZW5jZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBS ZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCVhMb2dSZWNQdHIgc2VxdWVuY2VfbHNu LCBSZWxhdGlvbiByZWwsCisJCQkJCQkJCWJvb2wgdHJhbnNhY3Rpb25hbCwgaW50NjQgdmFs dWUpOwogCiAvKiBzdHJlYW1pbmcgY2FsbGJhY2tzICovCiBzdGF0aWMgdm9pZCBzdHJlYW1f c3RhcnRfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRY TiAqdHhuLApAQCAtOTIsNiArOTUsOSBAQCBzdGF0aWMgdm9pZCBzdHJlYW1fY2hhbmdlX2Ni X3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bgog c3RhdGljIHZvaWQgc3RyZWFtX21lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpj YWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkJCQkJICBYTG9nUmVjUHRyIG1l c3NhZ2VfbHNuLCBib29sIHRyYW5zYWN0aW9uYWwsCiAJCQkJCQkJCQkgIGNvbnN0IGNoYXIg KnByZWZpeCwgU2l6ZSBtZXNzYWdlX3NpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworc3Rh dGljIHZvaWQgc3RyZWFtX3NlcXVlbmNlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2Fj aGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCSAgIFhMb2dSZWNQdHIgc2Vx dWVuY2VfbHNuLCBSZWxhdGlvbiByZWwsCisJCQkJCQkJCQkgICBib29sIHRyYW5zYWN0aW9u YWwsIGludDY0IHZhbHVlKTsKIHN0YXRpYyB2b2lkIHN0cmVhbV90cnVuY2F0ZV9jYl93cmFw cGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJ CQkJCQkgICBpbnQgbnJlbGF0aW9ucywgUmVsYXRpb24gcmVsYXRpb25zW10sIFJlb3JkZXJC dWZmZXJDaGFuZ2UgKmNoYW5nZSk7CiAKQEAgLTIyMywxMyArMjI5LDE0IEBAIFN0YXJ0dXBE ZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0cHV0X3BsdWdpbl9vcHRpb25zLAogCWN0eC0+cmVv cmRlci0+YXBwbHlfdHJ1bmNhdGUgPSB0cnVuY2F0ZV9jYl93cmFwcGVyOwogCWN0eC0+cmVv cmRlci0+Y29tbWl0ID0gY29tbWl0X2NiX3dyYXBwZXI7CiAJY3R4LT5yZW9yZGVyLT5tZXNz YWdlID0gbWVzc2FnZV9jYl93cmFwcGVyOworCWN0eC0+cmVvcmRlci0+c2VxdWVuY2UgPSBz ZXF1ZW5jZV9jYl93cmFwcGVyOwogCiAJLyoKIAkgKiBUbyBzdXBwb3J0IHN0cmVhbWluZywg d2UgcmVxdWlyZSBzdGFydC9zdG9wL2Fib3J0L2NvbW1pdC9jaGFuZ2UKLQkgKiBjYWxsYmFj a3MuIFRoZSBtZXNzYWdlIGFuZCB0cnVuY2F0ZSBjYWxsYmFja3MgYXJlIG9wdGlvbmFsLCBz aW1pbGFyIHRvCi0JICogcmVndWxhciBvdXRwdXQgcGx1Z2lucy4gV2UgaG93ZXZlciBlbmFi bGUgc3RyZWFtaW5nIHdoZW4gYXQgbGVhc3Qgb25lCi0JICogb2YgdGhlIG1ldGhvZHMgaXMg ZW5hYmxlZCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWRlbnRpZnkgbWlzc2luZwotCSAqIG1l dGhvZHMuCisJICogY2FsbGJhY2tzLiBUaGUgbWVzc2FnZSwgc2VxdWVuY2UgYW5kIHRydW5j YXRlIGNhbGxiYWNrcyBhcmUgb3B0aW9uYWwsCisJICogc2ltaWxhciB0byByZWd1bGFyIG91 dHB1dCBwbHVnaW5zLiBXZSBob3dldmVyIGVuYWJsZSBzdHJlYW1pbmcgd2hlbiBhdAorCSAq IGxlYXN0IG9uZSBvZiB0aGUgbWV0aG9kcyBpcyBlbmFibGVkIHNvIHRoYXQgd2UgY2FuIGVh c2lseSBpZGVudGlmeQorCSAqIG1pc3NpbmcgbWV0aG9kcy4KIAkgKgogCSAqIFdlIGRlY2lk ZSBpdCBoZXJlLCBidXQgb25seSBjaGVjayBpdCBsYXRlciBpbiB0aGUgd3JhcHBlcnMuCiAJ ICovCkBAIC0yMzksNiArMjQ2LDcgQEAgU3RhcnR1cERlY29kaW5nQ29udGV4dChMaXN0ICpv dXRwdXRfcGx1Z2luX29wdGlvbnMsCiAJCShjdHgtPmNhbGxiYWNrcy5zdHJlYW1fY29tbWl0 X2NiICE9IE5VTEwpIHx8CiAJCShjdHgtPmNhbGxiYWNrcy5zdHJlYW1fY2hhbmdlX2NiICE9 IE5VTEwpIHx8CiAJCShjdHgtPmNhbGxiYWNrcy5zdHJlYW1fbWVzc2FnZV9jYiAhPSBOVUxM KSB8fAorCQkoY3R4LT5jYWxsYmFja3Muc3RyZWFtX3NlcXVlbmNlX2NiICE9IE5VTEwpIHx8 CiAJCShjdHgtPmNhbGxiYWNrcy5zdHJlYW1fdHJ1bmNhdGVfY2IgIT0gTlVMTCk7CiAKIAkv KgpAQCAtMjU2LDYgKzI2NCw3IEBAIFN0YXJ0dXBEZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0 cHV0X3BsdWdpbl9vcHRpb25zLAogCWN0eC0+cmVvcmRlci0+c3RyZWFtX2NvbW1pdCA9IHN0 cmVhbV9jb21taXRfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXItPnN0cmVhbV9jaGFuZ2Ug PSBzdHJlYW1fY2hhbmdlX2NiX3dyYXBwZXI7CiAJY3R4LT5yZW9yZGVyLT5zdHJlYW1fbWVz c2FnZSA9IHN0cmVhbV9tZXNzYWdlX2NiX3dyYXBwZXI7CisJY3R4LT5yZW9yZGVyLT5zdHJl YW1fc2VxdWVuY2UgPSBzdHJlYW1fc2VxdWVuY2VfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3Jk ZXItPnN0cmVhbV90cnVuY2F0ZSA9IHN0cmVhbV90cnVuY2F0ZV9jYl93cmFwcGVyOwogCiAK QEAgLTI4OSw2ICsyOTgsMTMgQEAgU3RhcnR1cERlY29kaW5nQ29udGV4dChMaXN0ICpvdXRw dXRfcGx1Z2luX29wdGlvbnMsCiAJICovCiAJY3R4LT5yZW9yZGVyLT51cGRhdGVfcHJvZ3Jl c3NfdHhuID0gdXBkYXRlX3Byb2dyZXNzX3R4bl9jYl93cmFwcGVyOwogCisJLyoKKwkgKiBU byBzdXBwb3J0IGxvZ2ljYWwgZGVjb2Rpbmcgb2Ygc2VxdWVuY2VzLCB3ZSByZXF1aXJlIHRo ZSBzZXF1ZW5jZQorCSAqIGNhbGxiYWNrLiBXZSBkZWNpZGUgaXQgaGVyZSwgYnV0IG9ubHkg Y2hlY2sgaXQgbGF0ZXIgaW4gdGhlIHdyYXBwZXJzLgorCSAqLworCWN0eC0+c2VxdWVuY2Vz ID0gKChjdHgtPmNhbGxiYWNrcy5zZXF1ZW5jZV9jYiAhPSBOVUxMKSB8fAorCQkJCQkgIChj dHgtPmNhbGxiYWNrcy5zdHJlYW1fc2VxdWVuY2VfY2IgIT0gTlVMTCkpOworCiAJY3R4LT5v dXQgPSBtYWtlU3RyaW5nSW5mbygpOwogCWN0eC0+cHJlcGFyZV93cml0ZSA9IHByZXBhcmVf d3JpdGU7CiAJY3R4LT53cml0ZSA9IGRvX3dyaXRlOwpAQCAtMTI2Miw2ICsxMjc4LDQyIEBA IG1lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91 czsKIH0KIAorc3RhdGljIHZvaWQKK3NlcXVlbmNlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZl ciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJWExvZ1JlY1B0ciBzZXF1 ZW5jZV9sc24sIFJlbGF0aW9uIHJlbCwgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQlpbnQ2 NCB2YWx1ZSkKK3sKKwlMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHggPSBjYWNoZS0+cHJp dmF0ZV9kYXRhOworCUxvZ2ljYWxFcnJvckNhbGxiYWNrU3RhdGUgc3RhdGU7CisJRXJyb3JD b250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisKKwlBc3NlcnQoIWN0eC0+ZmFzdF9mb3J3 YXJkKTsKKworCWlmIChjdHgtPmNhbGxiYWNrcy5zZXF1ZW5jZV9jYiA9PSBOVUxMKQorCQly ZXR1cm47CisKKwkvKiBQdXNoIGNhbGxiYWNrICsgaW5mbyBvbiB0aGUgZXJyb3IgY29udGV4 dCBzdGFjayAqLworCXN0YXRlLmN0eCA9IGN0eDsKKwlzdGF0ZS5jYWxsYmFja19uYW1lID0g InNlcXVlbmNlIjsKKwlzdGF0ZS5yZXBvcnRfbG9jYXRpb24gPSBzZXF1ZW5jZV9sc247CisJ ZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBvdXRwdXRfcGx1Z2luX2Vycm9yX2NhbGxiYWNrOwor CWVycmNhbGxiYWNrLmFyZyA9ICh2b2lkICopICZzdGF0ZTsKKwllcnJjYWxsYmFjay5wcmV2 aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZl cnJjYWxsYmFjazsKKworCS8qIHNldCBvdXRwdXQgc3RhdGUgKi8KKwljdHgtPmFjY2VwdF93 cml0ZXMgPSB0cnVlOworCWN0eC0+d3JpdGVfeGlkID0gdHhuICE9IE5VTEwgPyB0eG4tPnhp ZCA6IEludmFsaWRUcmFuc2FjdGlvbklkOworCWN0eC0+d3JpdGVfbG9jYXRpb24gPSBzZXF1 ZW5jZV9sc247CisKKwkvKiBkbyB0aGUgYWN0dWFsIHdvcms6IGNhbGwgY2FsbGJhY2sgKi8K KwljdHgtPmNhbGxiYWNrcy5zZXF1ZW5jZV9jYihjdHgsIHR4biwgc2VxdWVuY2VfbHNuLCBy ZWwsCisJCQkJCQkJICAgdHJhbnNhY3Rpb25hbCwgdmFsdWUpOworCisJLyogUG9wIHRoZSBl cnJvciBjb250ZXh0IHN0YWNrICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxi YWNrLnByZXZpb3VzOworfQorCiBzdGF0aWMgdm9pZAogc3RyZWFtX3N0YXJ0X2NiX3dyYXBw ZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJ CVhMb2dSZWNQdHIgZmlyc3RfbHNuKQpAQCAtMTU3Nyw2ICsxNjI5LDQ2IEBAIHN0cmVhbV9t ZXNzYWdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJU WE4gKnR4biwKIAllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7 CiB9CiAKK3N0YXRpYyB2b2lkCitzdHJlYW1fc2VxdWVuY2VfY2Jfd3JhcHBlcihSZW9yZGVy QnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJICAgWExvZ1Jl Y1B0ciBzZXF1ZW5jZV9sc24sIFJlbGF0aW9uIHJlbCwKKwkJCQkJCSAgIGJvb2wgdHJhbnNh Y3Rpb25hbCwgaW50NjQgdmFsdWUpCit7CisJTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 ID0gY2FjaGUtPnByaXZhdGVfZGF0YTsKKwlMb2dpY2FsRXJyb3JDYWxsYmFja1N0YXRlIHN0 YXRlOworCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxiYWNrOworCisJQXNzZXJ0KCFj dHgtPmZhc3RfZm9yd2FyZCk7CisKKwkvKiBXZSdyZSBvbmx5IHN1cHBvc2VkIHRvIGNhbGwg dGhpcyB3aGVuIHN0cmVhbWluZyBpcyBzdXBwb3J0ZWQuICovCisJQXNzZXJ0KGN0eC0+c3Ry ZWFtaW5nKTsKKworCS8qIHRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwgKi8KKwlpZiAoY3R4 LT5jYWxsYmFja3Muc3RyZWFtX3NlcXVlbmNlX2NiID09IE5VTEwpCisJCXJldHVybjsKKwor CS8qIFB1c2ggY2FsbGJhY2sgKyBpbmZvIG9uIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICov CisJc3RhdGUuY3R4ID0gY3R4OworCXN0YXRlLmNhbGxiYWNrX25hbWUgPSAic3RyZWFtX3Nl cXVlbmNlIjsKKwlzdGF0ZS5yZXBvcnRfbG9jYXRpb24gPSBzZXF1ZW5jZV9sc247CisJZXJy Y2FsbGJhY2suY2FsbGJhY2sgPSBvdXRwdXRfcGx1Z2luX2Vycm9yX2NhbGxiYWNrOworCWVy cmNhbGxiYWNrLmFyZyA9ICh2b2lkICopICZzdGF0ZTsKKwllcnJjYWxsYmFjay5wcmV2aW91 cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJj YWxsYmFjazsKKworCS8qIHNldCBvdXRwdXQgc3RhdGUgKi8KKwljdHgtPmFjY2VwdF93cml0 ZXMgPSB0cnVlOworCWN0eC0+d3JpdGVfeGlkID0gdHhuICE9IE5VTEwgPyB0eG4tPnhpZCA6 IEludmFsaWRUcmFuc2FjdGlvbklkOworCWN0eC0+d3JpdGVfbG9jYXRpb24gPSBzZXF1ZW5j ZV9sc247CisKKwkvKiBkbyB0aGUgYWN0dWFsIHdvcms6IGNhbGwgY2FsbGJhY2sgKi8KKwlj dHgtPmNhbGxiYWNrcy5zZXF1ZW5jZV9jYihjdHgsIHR4biwgc2VxdWVuY2VfbHNuLCByZWws CisJCQkJCQkJICAgdHJhbnNhY3Rpb25hbCwgdmFsdWUpOworCisJLyogUG9wIHRoZSBlcnJv ciBjb250ZXh0IHN0YWNrICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNr LnByZXZpb3VzOworfQorCiBzdGF0aWMgdm9pZAogc3RyZWFtX3RydW5jYXRlX2NiX3dyYXBw ZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJ CSAgIGludCBucmVsYXRpb25zLCBSZWxhdGlvbiByZWxhdGlvbnNbXSwKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggMTJl ZGM1NzcyYTkuLjVlZWYwZDg5YTk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwpAQCAtNzcsNiArNzcsNDEgQEAKICAqCSAg YSBiaXQgbW9yZSBtZW1vcnkgdG8gdGhlIG9sZGVzdCBzdWJ0cmFuc2FjdGlvbnMsIGJlY2F1 c2UgaXQncyBsaWtlbHkKICAqCSAgdGhleSBhcmUgdGhlIHNvdXJjZSBmb3IgdGhlIG5leHQg c2VxdWVuY2Ugb2YgY2hhbmdlcy4KICAqCisgKgkgIFdoZW4gZGVjb2Rpbmcgc2VxdWVuY2Vz LCB3ZSBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdHJhbnNhY3Rpb25hbCBhbmQKKyAqCSAgbm9u LXRyYW5zYWN0aW9uYWwgY2hhbmdlcy4gU2VxdWVuY2UgY2hhbmdlIGlzICJub24tdHJhbnNh Y3Rpb25hbCIgaWYKKyAqCSAgaXQgd2FzIHZpc2libGUgdG8gb3V0c2lkZSB0cmFuc2FjdGlv bnMgaW1tZWRpYXRlbHksIGFuZCB3b3VsZCBub3QgYmUKKyAqCSAgdW5kb25lIGJ5IGEgcm9s bGJhY2suIE1vc3Qgc2VxdWVuY2UgY2hhbmdlcyBhcmUgbm9uLXRyYW5zYWN0aW9uYWwsIGFz CisgKgkgIHRoZSBjaGFuZ2VzIHBlcmZvcm1lZCBieSBuZXh0dmFsKCkgYXJlIHZpc2libGUg YW5kIGNhbid0IGJlIHVuZG9uZS4KKyAqCSAgTm9uLXRyYW5zYWN0aW9uYWwgY2hhbmdlcyBh cmUgcmVwbGF5ZWQgaW1tZWRpYXRlbHksIGFzIGlmIG91dHNpZGUgYW55CisgKgkgIHRyYW5z YWN0aW9uIChhbmQgdGh1cyBhbHNvIG5vdCBzdWJqZWN0IHRvIHJvbGxiYWNrIGV0Yy4pLgor ICoKKyAqCSAgSG93ZXZlciwgaWYgYSB0cmFuc2FjdGlvbiBtb2RpZmllcyB0aGUgc2VxdWVu Y2UgaW4gYSB3YXkgdGhhdCBjcmVhdGVzCisgKgkgIGEgbmV3IHJlbGZpbGVub2RlIChlLmcu IGJ5IHJ1bm5pbmcgQUxURVIgU0VRVUVOQ0UpLCB3ZSBjb25zaWRlciB0aGUKKyAqCSAgc3Vi c2VxdWVudCBjaGFuZ2VzICJ0cmFuc2FjdGlvbmFsIiBhbmQgcXVldWUgdGhlbSBpbiB0aGUg dHJhbnNhY3Rpb24KKyAqCSAgdGhhdCBwZXJmb3JtZWQgdGhlbSwganVzdCBsaWtlIG90aGVy IGNoYW5nZXMuIElmIHRoYXQgdHJhbnNhY3Rpb24gcm9sbHMKKyAqCSAgYmFjaywgdGhlc2Ug c2VxdWVuY2UgY2hhbmdlcyBhcmUgZGlzY2FyZGVkIHRvbyAodG9nZXRoZXIgd2l0aCB0aGUK KyAqCSAgbmV3IHJlbGZpbGVub2RlKS4KKyAqCisgKgkgIFRoaXMgbWl4ZWQgYmVoYXZpb3Ig aXMgbmVjZXNzYXJ5IC0gc2VxdWVuY2VzIGFyZSBub24tdHJhbnNhY3Rpb25hbAorICoJICAo ZS5nLiBST0xMQkFDSyBkb2VzIG5vdCB1bmRvIHRoYXQgdGhlIHNlcXVlbmNlIG1vdmVkIGZv cndhcmQpLiBCdXQKKyAqCSAgY2hhbmdlcyBvbiBuZXcgcmVsZmlsZW5vZGVzIG5lZWQgdG8g YmUgaGFuZGxlZCBhcyB0cmFuc2FjdGlvbmFsLgorICoKKyAqCSAgVG8gZGVjaWRlIGlmIGEg c2VxdWVuY2UgY2hhbmdlIGlzIHRyYW5zYWN0aW9uYWwsIHdlIG1haW50YWluIGEgaGFzaAor ICoJICB0YWJsZSBvZiByZWxmaWxlbm9kZXMgY3JlYXRlZCBpbiBlYWNoIChzdWIpdHJhbnNh Y3Rpb25zLCBhbG9uZyB3aXRoCisgKgkgIHRoZSBYSUQgb2YgdGhlIChzdWIpdHJhbnNhY3Rp b24gdGhhdCBjcmVhdGVkIHRoZSByZWxmaWxlbm9kZS4gVGhlCisgKgkgIGVudHJpZXMgZnJv bSBzdWJzdHJhbnNhY3Rpb25zIGFyZSBjb3BpZWQgdG8gdGhlIHRvcC1sZXZlbCB0cmFuc2Fj dGlvbgorICoJICB0byBtYWtlIGNoZWNrcyBjaGVhcGVyLiBUaGUgaGFzaCB0YWJsZSBnZXRz IGNsZWFuZWQgdXAgd2hlbiB0aGUKKyAqCSAgdHJhbnNhY3Rpb24gY29tcGxldGVzIChjb21t aXQvYWJvcnQpLgorICoKKyAqCSAgVGhlIFhJRCBvZiB0aGUgc3VieGFjdCB0aGF0IGNyZWF0 ZWQgdGhlIHJlbGZpbGVub2RlIGlzIG5lY2Vzc2FyeSwgYXMKKyAqCSAgdGhhdCdzIHdoZXJl IHRoZSBzZXF1ZW5jZSBjaGFuZ2VzIG5lZWQgdG8gYmUgcXVldWVkIC0gaWYgdGhpcyBzdWJ4 YWN0CisgKgkgIHJvbGxzIGJhY2ssIHdlIHdhbnQgdG8gZGlzY2FyZCB0aGUgY2hhbmdlcyB0 aWVkIHRvIHRoaXMgcmVsZmlsZW5vZGUKKyAqCSAgKGV2ZW4gaWYgZG9uZSBpbiBzb21lIG90 aGVyIHN1YnRyYW5zYWN0aW9uKS4KKyAqCisgKgkgIFRoZSBYSUQgbWF5IGJlIHZhbGlkIGV2 ZW4gZm9yIG5vbi10cmFuc2FjdGlvbmFsIHNlcXVlbmNlcyAtIHdlIHNpbXBseQorICoJICBr ZWVwIHRoZSBYSUQgZGVjb2RlZCBmcm9tIFdBTCwgaXQncyB1cCB0byB0aGUgcmVvcmRlcmJ1 ZmZlciB0byBkZWNpZGUKKyAqCSAgaWYgdGhlIGNoYW5nZSBpcyB0cmFuc2FjdGlvbmFsLgor ICoKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogI2luY2x1ZGUgInBvc3RncmVzLmgi CkBAIC05MSw2ICsxMjYsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cu aCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgogI2luY2x1ZGUgImxpYi9iaW5h cnloZWFwLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0Lmgi CkBAIC0xMTYsNiArMTUyLDEzIEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUWE5C eUlkRW50CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogfSBSZW9yZGVyQnVmZmVyVFhOQnlJ ZEVudDsKIAorLyogZW50cnkgZm9yIGhhc2ggdGFibGUgd2UgdXNlIHRvIHRyYWNrIHNlcXVl bmNlcyBjcmVhdGVkIGluIHJ1bm5pbmcgeGFjdHMgKi8KK3R5cGVkZWYgc3RydWN0IFJlb3Jk ZXJCdWZmZXJTZXF1ZW5jZUVudAoreworCVJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yOworCVJl b3JkZXJCdWZmZXJUWE4gKnR4bjsKK30gUmVvcmRlckJ1ZmZlclNlcXVlbmNlRW50OworCiAv KiBkYXRhIHN0cnVjdHVyZXMgZm9yIChyZWxmaWxlbG9jYXRvciwgY3RpZCkgPT4gKGNtaW4s IGNtYXgpIG1hcHBpbmcgKi8KIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUdXBsZUNp ZEtleQogewpAQCAtMjI1LDYgKzI2OCw3IEBAIHN0YXRpYyB2b2lkIFJlb3JkZXJCdWZmZXJU cmFuc2ZlclNuYXBUb1BhcmVudChSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCQkJCQkJ CSAgUmVvcmRlckJ1ZmZlclRYTiAqc3VidHhuKTsKIAogc3RhdGljIHZvaWQgQXNzZXJ0VFhO THNuT3JkZXIoUmVvcmRlckJ1ZmZlciAqcmIpOworc3RhdGljIHZvaWQgQXNzZXJ0Q2hlY2tT ZXF1ZW5jZXMoUmVvcmRlckJ1ZmZlciAqcmIpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIHN1cHBvcnQgZnVuY3Rpb25zIGZvciBsc24tb3Jk ZXIgaXRlcmF0aW5nIG92ZXIgdGhlIC0+Y2hhbmdlcyBvZiBhCkBAIC00NTYsMTIgKzUwMCw0 OCBAQCBSZW9yZGVyQnVmZmVyUmV0dXJuVFhOKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVy QnVmZmVyVFhOICp0eG4pCiAJCXR4bi0+aW52YWxpZGF0aW9ucyA9IE5VTEw7CiAJfQogCisJ aWYgKHR4bi0+c2VxdWVuY2VzX2hhc2ggIT0gTlVMTCkKKwl7CisJCWhhc2hfZGVzdHJveSh0 eG4tPnNlcXVlbmNlc19oYXNoKTsKKwkJdHhuLT5zZXF1ZW5jZXNfaGFzaCA9IE5VTEw7CisJ fQorCiAJLyogUmVzZXQgdGhlIHRvYXN0IGhhc2ggKi8KIAlSZW9yZGVyQnVmZmVyVG9hc3RS ZXNldChyYiwgdHhuKTsKIAogCXBmcmVlKHR4bik7CiB9CiAKKy8qCisgKiBJbml0aWFsaXpl IGhhc2ggdGFibGUgb2YgcmVsZmlsZW5vZGVzIGNyZWF0ZWQgYnkgdGhlIHRyYW5zYWN0aW9u LgorICoKKyAqIEVhY2ggZW50cnkgbWFwcyB0aGUgcmVsZmlsZW5vZGUgdG8gdGhlIChzdWIp dHJhbnNhY3Rpb24gdGhhdCBjcmVhdGVkIHRoZQorICogcmVsZmlsZW5vZGUgLSB3aGljaCBp cyBhbHNvIHRoZSB0cmFuc2FjdGlvbiB0aGUgc2VxdWVuY2UgY2hhbmdlIG5lZWRzIHRvCisg KiBiZSBwYXJ0IG9mIChpbiB0cmFuc2FjdGlvbmFsIGNhc2UpLgorICoKKyAqIFdlIGRvbid0 IGRvIHRoaXMgaW4gUmVvcmRlckJ1ZmZlckdldFRYTiBiZWNhdXNlIHRoYXQnZCBhbGxvY2F0 ZSB0aGUgaGFzaAorICogZm9yIGFsbCB0cmFuc2FjdGlvbnMsIGFuZCB3ZSBleHBlY3QgbmV3 IHJlbGZpbGVub2RlcyB0byBiZSBmYWlybHkgcmFyZS4KKyAqIFNvIG9ubHkgZG8gdGhhdCB3 aGVuIGFkZGluZyB0aGUgZmlyc3QgZW50cnkuCisgKi8KK3N0YXRpYyB2b2lkCitSZW9yZGVy QnVmZmVyVFhOU2VxdWVuY2VzSW5pdChSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuKQoreworCUhBU0hDVEwJCWhhc2hfY3RsOworCisJLyogYmFpbCBvdXQgaWYg YWxyZWFkeSBpbml0aWFsaXplZCAqLworCWlmICh0eG4tPnNlcXVlbmNlc19oYXNoKQorCQly ZXR1cm47CisKKwkvKiBoYXNoIHRhYmxlIG9mIHNlcXVlbmNlcywgbWFwcGluZyByZWxmaWxl bG9jYXRvciB0byB0cmFuc2FjdGlvbiAqLworCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2Yo UmVsRmlsZUxvY2F0b3IpOworCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZW9yZGVy QnVmZmVyU2VxdWVuY2VFbnQpOworCWhhc2hfY3RsLmhjeHQgPSByYi0+Y29udGV4dDsKKwor CS8qIHdlIGV4cGVjdCByZWxmaWxlbm9kZXMgdG8gYmUgY3JlYXRlZCBvbmx5IHJhcmVseSwg c28gMzIgc2VlbXMgZW5vdWdoICovCisJdHhuLT5zZXF1ZW5jZXNfaGFzaCA9IGhhc2hfY3Jl YXRlKCJSZW9yZGVyQnVmZmVyVFhOU2VxdWVuY2VIYXNoIiwgMzIsICZoYXNoX2N0bCwKKwkJ CQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7Cit9CisK IC8qCiAgKiBHZXQgYSBmcmVzaCBSZW9yZGVyQnVmZmVyQ2hhbmdlLgogICovCkBAIC01MzYs NiArNjE2LDEzIEBAIFJlb3JkZXJCdWZmZXJSZXR1cm5DaGFuZ2UoUmVvcmRlckJ1ZmZlciAq cmIsIFJlb3JkZXJCdWZmZXJDaGFuZ2UgKmNoYW5nZSwKIAkJCQljaGFuZ2UtPmRhdGEudHJ1 bmNhdGUucmVsaWRzID0gTlVMTDsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFJFT1JERVJf QlVGRkVSX0NIQU5HRV9TRVFVRU5DRToKKwkJCWlmIChjaGFuZ2UtPmRhdGEuc2VxdWVuY2Uu dHVwbGUpCisJCQl7CisJCQkJUmVvcmRlckJ1ZmZlclJldHVyblR1cGxlQnVmKHJiLCBjaGFu Z2UtPmRhdGEuc2VxdWVuY2UudHVwbGUpOworCQkJCWNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50 dXBsZSA9IE5VTEw7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9D SEFOR0VfSU5URVJOQUxfU1BFQ19DT05GSVJNOgogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NI QU5HRV9JTlRFUk5BTF9TUEVDX0FCT1JUOgogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5H RV9JTlRFUk5BTF9DT01NQU5EX0lEOgpAQCAtODA0LDcgKzg5MSw4IEBAIFJlb3JkZXJCdWZm ZXJRdWV1ZUNoYW5nZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuLAogCQljaGFuZ2UtPmFjdGlvbiA9PSBSRU9SREVSX0JVRkZFUl9DSEFO R0VfREVMRVRFIHx8CiAJCWNoYW5nZS0+YWN0aW9uID09IFJFT1JERVJfQlVGRkVSX0NIQU5H RV9JTlRFUk5BTF9TUEVDX0lOU0VSVCB8fAogCQljaGFuZ2UtPmFjdGlvbiA9PSBSRU9SREVS X0JVRkZFUl9DSEFOR0VfVFJVTkNBVEUgfHwKLQkJY2hhbmdlLT5hY3Rpb24gPT0gUkVPUkRF Ul9CVUZGRVJfQ0hBTkdFX01FU1NBR0UpCisJCWNoYW5nZS0+YWN0aW9uID09IFJFT1JERVJf QlVGRkVSX0NIQU5HRV9NRVNTQUdFIHx8CisJCWNoYW5nZS0+YWN0aW9uID09IFJFT1JERVJf QlVGRkVSX0NIQU5HRV9TRVFVRU5DRSkKIAl7CiAJCVJlb3JkZXJCdWZmZXJUWE4gKnRvcHR4 biA9IHJidHhuX2dldF90b3B0eG4odHhuKTsKIApAQCAtODk1LDYgKzk4MywzNTEgQEAgUmVv cmRlckJ1ZmZlclF1ZXVlTWVzc2FnZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25J ZCB4aWQsCiAJfQogfQogCisvKgorICogVHJlYXQgdGhlIHNlcXVlbmNlIGNoYW5nZSBhcyB0 cmFuc2FjdGlvbmFsPworICoKKyAqIFRvIGRlY2lkZSBpZiBhIHNlcXVlbmNlIGNoYW5nZSBz aG91bGQgYmUgaGFuZGxlZCBhcyB0cmFuc2FjdGlvbmFsIG9yIGFwcGxpZWQKKyAqIGltbWVk aWF0ZWx5LCB3ZSBuZWVkIHRvIGRlY2lkZSBpZiB0aGUgcmVsZmlsZW5vZGUgd2FzIGNyZWF0 ZWQgYnkgYSBydW5uaW5nCisgKiB0cmFuc2FjdGlvbi4gRWFjaCB0cmFuc2FjdGlvbiBoYXMg YSBoYXNoIHRhYmxlIG9mIHN1Y2ggcmVsZmlsZW5vZGVzLgorICoKKyAqIEEgbmFpdmUgYXBw cm9hY2ggd291bGQgYmUgdG8ganVzdCBsb29wIHRocm91Z2ggYWxsIHRyYW5zYWN0aW9ucyBh bmQgY2hlY2sKKyAqIGVhY2ggb2YgdGhlbSwgYnV0IHRoZXJlIG1heSBiZSAoZWFzaWx5IHRo b3VzYW5kcykgb2Ygc3VidHJhbnNhY3Rpb25zLCBhbmQKKyAqIHRoZSBjaGVjayBoYXBwZW5z IGZvciBlYWNoIHNlcXVlbmNlIGNoYW5nZS4gU28gdGhpcyBjb3VsZCBiZSB2ZXJ5IGNvc3Rs eS4KKyAqCisgKiBUbyBsaW1pdCB0aGUgbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyB3ZSBuZWVk IHRvIGNoZWNrLCB3ZSB0cmFuc2ZlciB0aGUKKyAqIHJlbGZpbGVub2RlcyB0byB0aGUgdG9w LWxldmVsIHhhY3QsIHdoaWNoIGFsbG93cyB1cyB0byBjaGVjayBqdXN0IHRoZQorICogdG9w LWxldmVsIHhhY3RzIChhbmQgdGhlcmUgc2hvdWxkIGJlIGEgdmVyeSBsaW1pdGVkIG51bWJl ciBvZiB0aG9zZSkuIFdlCisgKiBleHBlY3QgcmVsZmlsZW5vZGUgY3JlYXRpb24gdG8gYmUg YSBxdWl0ZSByYXJlIHRoaW5nLCBzbyB0aGlzIHNob3VsZCBub3QKKyAqIHdhc3RlIHRvbyBt dWNoIG1lbW9yeS4gT1RPSCBzZXF1ZW5jZSBjaGFuZ2VzIGFyZSB2ZXJ5IGNvbW1vbiwgc28g bWFraW5nCisgKiB0aGUgY2hlY2sgY2hlYXBlciBzZWVtcyBsaWtlIGEgZ29vZCB0cmFkZSBv ZmYuCisgKgorICogUmV0dXJucyB0cnVlIGZvciB0cmFuc2FjdGlvbmFsIGNoYW5nZXMsIGZh bHNlIG90aGVyd2lzZS4KKyAqCisgKiBPcHRpb25hbHkgKHdoZW4gdGhlICJ4aWQiIHBhcmFt ZXRlciBpcyBzZXQpIHJldHVybnMgWElEIG9mIHRoZSAoc3ViKXhhY3QKKyAqIHRvIHVzZSBm b3IgcXVldWVpbmcgdHJhbnNhY3Rpb25hbCBjaGFuZ2VzLgorICoKKyAqIFhYWCBBcyBhbiBv cHRpbWl6YXRpb24sIG1heWJlIHdlIHNob3VsZCB0cnkgc2VhcmNoaW5nIHRoZSBjdXJyZW50 IHhhY3QgKG9yCisgKiBpdCdzIHRvcC1sZXZlbCB4YWN0KSBmaXJzdC4gSWYgdGhlIGNoYW5n ZSBpcyB0cmFuc2FjdGlvbmFsLCB3aGVyZSB3ZSdkCisgKiBmaW5kIHRoZSBtYXRjaC4KKyAq LworYm9vbAorUmVvcmRlckJ1ZmZlclNlcXVlbmNlSXNUcmFuc2FjdGlvbmFsKFJlb3JkZXJC dWZmZXIgKnJiLAorCQkJCQkJCQkJIFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLAorCQkJCQkJ CQkJIFRyYW5zYWN0aW9uSWQgKnhpZCkKK3sKKwlib29sCQlmb3VuZCA9IGZhbHNlOworCWRs aXN0X2l0ZXIJaXRlcjsKKworCUFzc2VydENoZWNrU2VxdWVuY2VzKHJiKTsKKworCS8qCisJ ICogV2FsayBhbGwgdG9wLWxldmVsIHRyYW5zYWN0aW9ucyAoc29tZSBvZiB3aGljaCBtYXkg YmUgc3VieGFjdHMsIGV4Y2VwdAorCSAqIHRoYXQgd2UgaGF2ZW4ndCBwcm9jZXNzZWQgdGhl IGFzc2lnbm1lbnRzIHlldCksIGFuZCBjaGVjayBpZiBhbnkgb2YKKwkgKiB0aGVtIGNyZWF0 ZWQgdGhlIHJlbGZpbGVub2RlLgorCSAqLworCWRsaXN0X2ZvcmVhY2goaXRlciwgJnJiLT50 b3BsZXZlbF9ieV9sc24pCisJeworCQlSZW9yZGVyQnVmZmVyU2VxdWVuY2VFbnQgKmVudHJ5 OworCQlSZW9yZGVyQnVmZmVyVFhOICp0eG4gPSBkbGlzdF9jb250YWluZXIoUmVvcmRlckJ1 ZmZlclRYTiwgbm9kZSwKKwkJCQkJCQkJCQkJCWl0ZXIuY3VyKTsKKworCQkvKiB0cmFuc2Fj dGlvbiBoYXMgbm8gcmVsZmlsZW5vZGVzIGF0IGFsbCAqLworCQlpZiAoIXR4bi0+c2VxdWVu Y2VzX2hhc2gpCisJCQljb250aW51ZTsKKworCQllbnRyeSA9IGhhc2hfc2VhcmNoKHR4bi0+ c2VxdWVuY2VzX2hhc2gsCisJCQkJCQkJKHZvaWQgKikgJnJsb2NhdG9yLAorCQkJCQkJCUhB U0hfRklORCwKKwkJCQkJCQkmZm91bmQpOworCisJCS8qCisJCSAqIElmIHdlIGZvdW5kIGFu IGVudHJ5IHdpdGggbWF0Y2hpbmcgcmVsZmlsZW5vZGUsIHdlJ3JlIGRvbmUgLSB3ZQorCQkg KiBoYXZlIHRvIHRyZWF0IHRoZSBzZXF1ZW5jZSBjaGFuZ2UgYXMgdHJhbnNhY3Rpb25hbCwg YW5kIHJlcGxheSBpdAorCQkgKiBpbiB0aGUgc2FtZSAoc3ViKXRyYW5zYWN0aW9uIGp1c3Qg bGlrZSBhbnkgb3RoZXIgY2hhbmdlLgorCQkgKgorCQkgKiBPcHRpb25hbGx5IHNldCBYSUQg b2YgdGhlIChzdWIpeGFjdCB0aGF0IGNyZWF0ZWQgdGhlIHJlbGZpbGVub2RlLgorCQkgKi8K KwkJaWYgKGZvdW5kKQorCQl7CisJCQlpZiAoeGlkKQorCQkJCSp4aWQgPSBlbnRyeS0+dHhu LT54aWQ7CisKKwkJCWJyZWFrOworCQl9CisJfQorCisJcmV0dXJuIGZvdW5kOworfQorCisv KgorICogQ2xlYW51cCBzZXF1ZW5jZXMgYWZ0ZXIgYSBzdWJ0cmFuc2FjdGlvbiBnb3QgYWJv cnRlZC4KKyAqCisgKiBUaGUgaGFzaCB0YWJsZSB3aWxsIGdldCBkZXN0cm95ZWQgaW4gUmVv cmRlckJ1ZmZlclJldHVyblRYTiwgc28gd2UgZG9uJ3QKKyAqIG5lZWQgdG8gd29ycnkgYWJv dXQgdGhhdC4gQnV0IHRoZSBlbnRyaWVzIHdlcmUgY29waWVkIHRvIHRoZSBwYXJlbnQgeGFj dCwKKyAqIGFuZCB0aGF0J3Mgc3RpbGwgYmVpbmcgZGVjb2RlZCAtIHdlIG1ha2Ugc3VyZSB0 byByZW1vdmUgdGhlIGVudHJpZXMgZnJvbQorICogdGhlIGFib3J0ZWQgb25lLgorICovCitz dGF0aWMgdm9pZAorUmVvcmRlckJ1ZmZlclNlcXVlbmNlQ2xlYW51cChSZW9yZGVyQnVmZmVy VFhOICp0eG4pCit7CisJSEFTSF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVzOworCVJlb3JkZXJC dWZmZXJTZXF1ZW5jZUVudCAqZW50OworCisJLyogQmFpbCBvdXQgaWYgbm90IGEgc3VieGFj dCwgb3IgaWYgdGhlcmUgYXJlIG5vIGVudHJpZXMuICovCisJaWYgKCFyYnR4bl9pc19rbm93 bl9zdWJ4YWN0KHR4bikpCisJCXJldHVybjsKKworCWlmICghdHhuLT5zZXF1ZW5jZXNfaGFz aCkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBTY2FuIHRoZSB0b3AtbGV2ZWwgdHJhbnNhY3Rp b24gaGFzaCBhbmQgcmVtb3ZlIHRoZSBlbnRyaWVzIGZyb20gaXQuIElmCisJICogd2UgaGF2 ZSBlbnRyaWVzIGZvciBzdWJ4YWN0LCB0aGUgdG9wLWxldmVsIGhhc2ggbXVzdCBoYXZlIGJl ZW4KKwkgKiBpbml0aWFsaXplZC4KKwkgKi8KKwloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1 cywgdHhuLT5zZXF1ZW5jZXNfaGFzaCk7CisJd2hpbGUgKChlbnQgPSAoUmVvcmRlckJ1ZmZl clNlcXVlbmNlRW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxM KQorCXsKKwkJKHZvaWQpIGhhc2hfc2VhcmNoKHR4bi0+dG9wdHhuLT5zZXF1ZW5jZXNfaGFz aCwKKwkJCQkJCSAgICh2b2lkICopICZlbnQtPnJsb2NhdG9yLAorCQkJCQkJICAgSEFTSF9S RU1PVkUsIE5VTEwpOworCX0KK30KKworLyoKKyAqIEEgdHJhbnNhY3Rpb25hbCBzZXF1ZW5j ZSBjaGFuZ2UgaXMgcXVldWVkIHRvIGJlIHByb2Nlc3NlZCB1cG9uIGNvbW1pdAorICogYW5k IGEgbm9uLXRyYW5zYWN0aW9uYWwgY2hhbmdlIGdldHMgcHJvY2Vzc2VkIGltbWVkaWF0ZWx5 LgorICoKKyAqIEEgc2VxdWVuY2UgdXBkYXRlIG1heSBiZSBib3RoIHRyYW5zYWN0aW9uYWwg YW5kIG5vbi10cmFuc2FjdGlvbmFsLiBXaGVuCisgKiBjcmVhdGVkIGluIGEgcnVubmluZyB0 cmFuc2FjdGlvbiwgdHJlYXQgaXQgYXMgdHJhbnNhY3Rpb25hbCBhbmQgcXVldWUKKyAqIHRo ZSBjaGFuZ2UgaW4gaXQuIE90aGVyd2lzZSB0cmVhdCBpdCBhcyBub24tdHJhbnNhY3Rpb25h bCwgc28gdGhhdCB3ZQorICogZG9uJ3QgZm9yZ2V0IHRoZSBjaGFuZ2UgaW4gY2FzZSBvZiBh IHJvbGxiYWNrLgorICovCit2b2lkCitSZW9yZGVyQnVmZmVyUXVldWVTZXF1ZW5jZShSZW9y ZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkgICBTbmFwc2hvdCBz bmFwc2hvdCwgWExvZ1JlY1B0ciBsc24sIFJlcE9yaWdpbklkIG9yaWdpbl9pZCwKKwkJCQkJ CSAgIFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJ CQkgICBSZW9yZGVyQnVmZmVyVHVwbGVCdWYgKnR1cGxlYnVmKQoreworCUFzc2VydENoZWNr U2VxdWVuY2VzKHJiKTsKKworCS8qCisJICogQ2hhbmdlIG5lZWRzIHRvIGJlIGhhbmRsZWQg YXMgdHJhbnNhY3Rpb25hbCwgYmVjYXVzZSB0aGUgc2VxdWVuY2Ugd2FzCisJICogY3JlYXRl ZCBpbiBhIHRyYW5zYWN0aW9uIHRoYXQgaXMgc3RpbGwgc2VlbiBhcyBydW5uaW5nLiBJbiB0 aGF0IGNhc2UKKwkgKiBhbGwgdGhlIGNoYW5nZXMgbmVlZCB0byBiZSBxdWV1ZWQgaW4gdGhh dCB0cmFuc2FjdGlvbiwgd2UgbXVzdCBub3Qgc2VuZAorCSAqIHRoZSBjaGFuZ2VzIHRvIHRo ZSBkb3duc3RyZWFtIHVudGlsIHRoZSB0cmFuc2FjdGlvbiBjb21taXRzLgorCSAqCisJICog VGhlcmUncyBhIGJpdCBvZiBhIHRyb3VibGUgd2l0aCBzdWJ0cmFuc2FjdGlvbnMgLSB3ZSBj YW4ndCBxdWV1ZSBpdAorCSAqIGludG8gdGhlIHN1YnhhY3QsIGJlY2F1c2UgaXQgbWlnaHQg YmUgcm9sbGVkIGJhY2sgYW5kIHdlJ2QgbG9zZSB0aGUKKwkgKiBjaGFuZ2UgKGFuZCB0aGF0 J2QgYmUgd3JvbmcsIGFzIHNlcXVlbmNlcyBhcmUgbm90IHRyYW5zYWN0aW9uYWwpLiBCdXQK KwkgKiB3ZSBhbHNvIGNhbid0IHF1ZXVlIGl0IGludG8gdGhlIHRvcC1sZXZlbCB0cmFuc2Fj dGlvbiwgYmVjYXVzZSB0aGUKKwkgKiByZWxmaWxlbm9kZSBjcmVhdGlvbiBpcyB0cmFuc2Fj dGlvbmFsIC0gaWYgdGhhdCBzdWJ4YWN0IGdldHMgYWJvcnRlZCwKKwkgKiB3ZSBtdXN0IHRo cm93IGF3YXkgdGhlIGNoYW5nZXMgdG9vLgorCSAqCisJICogU28gd2UgbmVlZCB0byBxdWV1 ZSBpdCBpbnRvIHRoZSBzYW1lIChzdWIpeGFjdCB0aGF0IGNyZWF0ZWQgdGhlIG5ldworCSAq IHNlcXVlbmNlIHJlbGZpbGVub2RlLCB3aGljaCBpcyB3aHkgd2UgaGF2ZSB0aGUgWElEIGlu IHRoZSBoYXNoIHRhYmxlLgorCSAqLworCWlmICh0cmFuc2FjdGlvbmFsKQorCXsKKwkJTWVt b3J5Q29udGV4dCBvbGRjb250ZXh0OworCQlSZW9yZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2U7 CisKKwkJLyogYWxsb2NhdGUgYW5kIHF1ZXVlIHRoZSB0cmFuc2FjdGlvbmFsIHNlcXVlbmNl IGNoYW5nZSAqLworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHJiLT5j b250ZXh0KTsKKworCQljaGFuZ2UgPSBSZW9yZGVyQnVmZmVyR2V0Q2hhbmdlKHJiKTsKKwor CQljaGFuZ2UtPmFjdGlvbiA9IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9TRVFVRU5DRTsKKwkJ Y2hhbmdlLT5vcmlnaW5faWQgPSBvcmlnaW5faWQ7CisKKwkJbWVtY3B5KCZjaGFuZ2UtPmRh dGEuc2VxdWVuY2UubG9jYXRvciwgJnJsb2NhdG9yLCBzaXplb2YoUmVsRmlsZUxvY2F0b3Ip KTsKKworCQljaGFuZ2UtPmRhdGEuc2VxdWVuY2UudHVwbGUgPSB0dXBsZWJ1ZjsKKworCQkv KiBsb29rdXAgdGhlIFhJRCBmb3IgdHJhbnNhY3Rpb24gdGhhdCBjcmVhdGVkIHRoZSByZWxm aWxlbm9kZSAqLworCQlSZW9yZGVyQnVmZmVyU2VxdWVuY2VJc1RyYW5zYWN0aW9uYWwocmIs IHJsb2NhdG9yLCAmeGlkKTsKKworCQkvKiB0aGUgWElEIHNob3VsZCBiZSB2YWxpZCBmb3Ig YSB0cmFuc2FjdGlvbmFsIGNoYW5nZSAqLworCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFs aWQoeGlkKSk7CisKKwkJLyogYWRkIGl0IHRvIHRoZSBzYW1lIChzdWIpeGFjdCB0aGF0IGNy ZWF0ZWQgdGhhdCByZWxmaWxlbm9kZSAqLworCQlSZW9yZGVyQnVmZmVyUXVldWVDaGFuZ2Uo cmIsIHhpZCwgbHNuLCBjaGFuZ2UsIGZhbHNlKTsKKworCQlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY29udGV4dCk7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIFRoaXMgY2hhbmdl IGlzIGZvciBhIHNlcXVlbmNlIHRoYXQgd2FzIG5vdCBjcmVhdGVkIGluIGFueSBydW5uaW5n CisJCSAqIHRyYW5zYWN0aW9uLCBzbyB3ZSB0cmVhdCBpdCBhcyBub24tdHJhbnNhY3Rpb25h bCBhbmQganVzdCBzZW5kIGl0CisJCSAqIHRvIHRoZSBvdXRwdXQgcGx1Z2luIGRpcmVjdGx5 LgorCQkgKi8KKwkJUmVvcmRlckJ1ZmZlclRYTiAqdHhuID0gTlVMTDsKKwkJdm9sYXRpbGUg U25hcHNob3Qgc25hcHNob3Rfbm93ID0gc25hcHNob3Q7CisJCWJvb2wJCXVzaW5nX3N1YnR4 bjsKKworCQkvKiBub24tdHJhbnNhY3Rpb25hbCBjaGFuZ2VzIHJlcXVpcmUgYSB2YWxpZCBz bmFwc2hvdCAqLworCQlBc3NlcnQoc25hcHNob3Rfbm93KTsKKworCQkvKiBNYWtlIHN1cmUg dGhlIHNlcXVlbmNlIGlzIG5vdCBpbiBhbnkgb2YgdGhlIGhhc2ggdGFibGVzICovCisJCUFz c2VydCghUmVvcmRlckJ1ZmZlclNlcXVlbmNlSXNUcmFuc2FjdGlvbmFsKHJiLCBybG9jYXRv ciwgTlVMTCkpOworCisJCWlmICh4aWQgIT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpCisJCQl0 eG4gPSBSZW9yZGVyQnVmZmVyVFhOQnlYaWQocmIsIHhpZCwgdHJ1ZSwgTlVMTCwgbHNuLCB0 cnVlKTsKKworCQkvKiBzZXR1cCBzbmFwc2hvdCB0byBhbGxvdyBjYXRhbG9nIGFjY2VzcyAq LworCQlTZXR1cEhpc3RvcmljU25hcHNob3Qoc25hcHNob3Rfbm93LCBOVUxMKTsKKworCQkv KgorCQkgKiBEZWNvZGluZyBuZWVkcyBhY2Nlc3MgdG8gc3lzY2FjaGVzIGV0IGFsLiwgd2hp Y2ggaW4gdHVybiB1c2UKKwkJICogaGVhdnl3ZWlnaHQgbG9ja3MgYW5kIHN1Y2guIFRodXMg d2UgbmVlZCB0byBoYXZlIGVub3VnaCBzdGF0ZQorCQkgKiBhcm91bmQgdG8ga2VlcCB0cmFj ayBvZiB0aG9zZS4gIFRoZSBlYXNpZXN0IHdheSBpcyB0byBzaW1wbHkgdXNlIGEKKwkJICog dHJhbnNhY3Rpb24gaW50ZXJuYWxseS4gIFRoYXQgYWxzbyBhbGxvd3MgdXMgdG8gZWFzaWx5 IGVuZm9yY2UgdGhhdAorCQkgKiBub3RoaW5nIHdyaXRlcyB0byB0aGUgZGF0YWJhc2UgYnkg Y2hlY2tpbmcgZm9yIHhpZCBhc3NpZ25tZW50cy4KKwkJICoKKwkJICogV2hlbiB3ZSdyZSBj YWxsZWQgdmlhIHRoZSBTUUwgU1JGIHRoZXJlJ3MgYWxyZWFkeSBhIHRyYW5zYWN0aW9uCisJ CSAqIHN0YXJ0ZWQsIHNvIHN0YXJ0IGFuIGV4cGxpY2l0IHN1YnRyYW5zYWN0aW9uIHRoZXJl LgorCQkgKi8KKwkJdXNpbmdfc3VidHhuID0gSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25C bG9jaygpOworCisJCVBHX1RSWSgpOworCQl7CisJCQlSZWxhdGlvbglyZWxhdGlvbjsKKwkJ CUhlYXBUdXBsZQl0dXBsZTsKKwkJCUZvcm1fcGdfc2VxdWVuY2VfZGF0YSBzZXE7CisJCQlP aWQJCQlyZWxvaWQ7CisJCQlpbnQ2NAkJdmFsdWU7CisKKwkJCWlmICh1c2luZ19zdWJ0eG4p CisJCQkJQmVnaW5JbnRlcm5hbFN1YlRyYW5zYWN0aW9uKCJzZXF1ZW5jZSIpOworCQkJZWxz ZQorCQkJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCXJlbG9pZCA9IFJlbGlk QnlSZWxmaWxlbnVtYmVyKHJsb2NhdG9yLnNwY09pZCwgcmxvY2F0b3IucmVsTnVtYmVyKTsK KworCQkJaWYgKHJlbG9pZCA9PSBJbnZhbGlkT2lkKQorCQkJCWVsb2coRVJST1IsICJjb3Vs ZCBub3QgbWFwIGZpbGVub2RlIFwiJXNcIiB0byByZWxhdGlvbiBPSUQiLAorCQkJCQkgcmVs cGF0aHBlcm0ocmxvY2F0b3IsCisJCQkJCQkJCSBNQUlOX0ZPUktOVU0pKTsKKworCQkJcmVs YXRpb24gPSBSZWxhdGlvbklkR2V0UmVsYXRpb24ocmVsb2lkKTsKKworCQkJaWYgKCFSZWxh dGlvbklzVmFsaWQocmVsYXRpb24pKQorCQkJCWVsb2coRVJST1IsICJjb3VsZCBub3Qgb3Bl biByZWxhdGlvbiB3aXRoIE9JRCAldSAoZm9yIGZpbGVub2RlIFwiJXNcIikiLAorCQkJCQkg cmVsb2lkLAorCQkJCQkgcmVscGF0aHBlcm0ocmxvY2F0b3IsIE1BSU5fRk9SS05VTSkpOwor CisJCQl0dXBsZSA9ICZ0dXBsZWJ1Zi0+dHVwbGU7CisJCQlzZXEgPSAoRm9ybV9wZ19zZXF1 ZW5jZV9kYXRhKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCQkvKgorCQkJICogQ2FsY3VsYXRl IHRoZSBmaXJzdCB2YWx1ZSBvZiB0aGUgbmV4dCBiYXRjaCAoYXQgd2hpY2ggcG9pbnQgd2UK KwkJCSAqIGdlbmVyYXRlIGFuZCBkZWNvZGUgYW5vdGhlciBXQUwgcmVjb3JkLgorCQkJICov CisJCQl2YWx1ZSA9IHNlcS0+bGFzdF92YWx1ZTsKKwkJCXZhbHVlICs9IChzZXEtPmlzX2Nh bGxlZCkgPyBzZXEtPmxvZ19jbnQgOiAwOworCisJCQlyYi0+c2VxdWVuY2UocmIsIHR4biwg bHNuLCByZWxhdGlvbiwgdHJhbnNhY3Rpb25hbCwgdmFsdWUpOworCisJCQlSZWxhdGlvbkNs b3NlKHJlbGF0aW9uKTsKKworCQkJVGVhcmRvd25IaXN0b3JpY1NuYXBzaG90KGZhbHNlKTsK KworCQkJQWJvcnRDdXJyZW50VHJhbnNhY3Rpb24oKTsKKworCQkJaWYgKHVzaW5nX3N1YnR4 bikKKwkJCQlSb2xsYmFja0FuZFJlbGVhc2VDdXJyZW50U3ViVHJhbnNhY3Rpb24oKTsKKwkJ fQorCQlQR19DQVRDSCgpOworCQl7CisJCQlUZWFyZG93bkhpc3RvcmljU25hcHNob3QodHJ1 ZSk7CisKKwkJCUFib3J0Q3VycmVudFRyYW5zYWN0aW9uKCk7CisKKwkJCWlmICh1c2luZ19z dWJ0eG4pCisJCQkJUm9sbGJhY2tBbmRSZWxlYXNlQ3VycmVudFN1YlRyYW5zYWN0aW9uKCk7 CisKKwkJCVBHX1JFX1RIUk9XKCk7CisJCX0KKwkJUEdfRU5EX1RSWSgpOworCX0KK30KKwor LyoKKyAqIFJlb3JkZXJCdWZmZXJBZGRSZWxGaWxlTG9jYXRvcgorICoJCUFkZCBuZXdseSBj cmVhdGVkIHJlbGZpbGVub2RlIHRvIHRoZSBoYXNoIHRhYmxlIGZvciB0cmFuc2FjdGlvbi4K KyAqCisgKiBJZiB0aGUgdHJhbnNhY3Rpb24gaXMgYWxyZWFkeSBrbm93biB0byBiZSBhIHN1 YnRyYW5zYWN0aW9uLCB3ZSBhZGQgdGhlIHNhbWUKKyAqIGVudHJ5IGludG8gdGhlIHBhcmVu dCB0cmFuc2FjdGlvbiAoYnV0IGl0IHN0aWxsIHBvaW50cyBhdCB0aGUgc3VieGFjdCwgc28K KyAqIHRoYXQgd2Uga25vdyB3aGVyZSB0byBxdWV1ZSBjaGFuZ2VzIG9yIHdoYXQgdG8gZGlz Y2FyZCBpbiBjYXNlIG9mIGFuIGFib3J0KS4KKyAqLwordm9pZAorUmVvcmRlckJ1ZmZlckFk ZFJlbEZpbGVMb2NhdG9yKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwK KwkJCQkJCQkgICBYTG9nUmVjUHRyIGxzbiwgUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IpCit7 CisJYm9vbAkJZm91bmQ7CisJUmVvcmRlckJ1ZmZlclNlcXVlbmNlRW50ICplbnRyeTsKKwlS ZW9yZGVyQnVmZmVyVFhOICp0eG47CisKKwlBc3NlcnRDaGVja1NlcXVlbmNlcyhyYik7CisK KwkvKgorCSAqIFdlIG9ubHkgY2FyZSBhYm91dCBzZXF1ZW5jZSByZWxmaWxlbm9kZXMgZm9y IG5vdywgYW5kIHRob3NlIGFsd2F5cyBoYXZlCisJICogYSBYSUQuIFNvIGlmIHRoZXJlJ3Mg bm8gWElELCBkb24ndCBib3RoZXIgYWRkaW5nIHRoZW0gdG8gdGhlIGhhc2guCisJICovCisJ aWYgKHhpZCA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCkKKwkJcmV0dXJuOworCisJLyoKKwkg KiBUaGlzIG1pZ2h0IGJlIHRoZSBmaXJzdCBjaGFuZ2UgZGVjb2RlZCBmb3IgdGhpcyB0cmFu c2FjdGlvbiwgc28gbWFrZQorCSAqIHN1cmUgd2UgY3JlYXRlIGl0IGlmIG5lZWRlZC4KKwkg Ki8KKwl0eG4gPSBSZW9yZGVyQnVmZmVyVFhOQnlYaWQocmIsIHhpZCwgdHJ1ZSwgTlVMTCwg bHNuLCB0cnVlKTsKKworCS8qCisJICogRmlyc3QgYWRkIGl0IHRvIHRoZSB0b3AtbGV2ZWwg dHJhbnNhY3Rpb24sIGJ1dCBtYWtlIHN1cmUgaXQgbGlua3MgdG8KKwkgKiB0aGUgY29ycmVj dCBzdWJ0cmFuc2FjdGlvbiAoc28gdGhhdCB3ZSBhZGQgbGF0ZXIgY2hhbmdlcyB0byBpdCku CisJICovCisJaWYgKHR4bi0+dG9wdHhuKQorCXsKKwkJLyogbWFrZSBzdXJlIHRoZSBoYXNo IHRhYmxlIGlzIGluaXRpYWxpemVkICovCisJCVJlb3JkZXJCdWZmZXJUWE5TZXF1ZW5jZXNJ bml0KHJiLCB0eG4tPnRvcHR4bik7CisKKwkJLyogc2VhcmNoIHRoZSBsb29rdXAgdGFibGUg Ki8KKwkJZW50cnkgPSBoYXNoX3NlYXJjaCh0eG4tPnRvcHR4bi0+c2VxdWVuY2VzX2hhc2gs CisJCQkJCQkJKHZvaWQgKikgJnJsb2NhdG9yLAorCQkJCQkJCUhBU0hfRU5URVIsCisJCQkJ CQkJJmZvdW5kKTsKKworCQkvKgorCQkgKiBXZSd2ZSBqdXN0IGRlY29kZWQgY3JlYXRpb24g b2YgdGhlIHJlbGZpbGVub2RlLCBzbyBpZiB3ZSBmb3VuZCBpdAorCQkgKiBpbiB0aGUgaGFz aCB0YWJsZSwgc29tZXRoaW5nIGlzIHdyb25nLgorCQkgKi8KKwkJQXNzZXJ0KCFmb3VuZCk7 CisKKwkJZW50cnktPnR4biA9IHR4bjsKKwl9CisKKwkvKiBtYWtlIHN1cmUgdGhlIGhhc2gg dGFibGUgaXMgaW5pdGlhbGl6ZWQgKi8KKwlSZW9yZGVyQnVmZmVyVFhOU2VxdWVuY2VzSW5p dChyYiwgdHhuKTsKKworCS8qIHNlYXJjaCB0aGUgbG9va3VwIHRhYmxlICovCisJZW50cnkg PSBoYXNoX3NlYXJjaCh0eG4tPnNlcXVlbmNlc19oYXNoLAorCQkJCQkJKHZvaWQgKikgJnJs b2NhdG9yLAorCQkJCQkJSEFTSF9FTlRFUiwKKwkJCQkJCSZmb3VuZCk7CisKKwkvKgorCSAq IFdlJ3ZlIGp1c3QgZGVjb2RlZCBjcmVhdGlvbiBvZiB0aGUgcmVsZmlsZW5vZGUsIHNvIGlm IHdlIGZvdW5kIGl0IGluCisJICogdGhlIGhhc2ggdGFibGUsIHNvbWV0aGluZyBpcyB3cm9u Zy4KKwkgKi8KKwlBc3NlcnQoIWZvdW5kKTsKKworCWVudHJ5LT50eG4gPSB0eG47CisKKwlB c3NlcnRDaGVja1NlcXVlbmNlcyhyYik7Cit9CisKIC8qCiAgKiBBc3NlcnRUWE5Mc25PcmRl cgogICoJCVZlcmlmeSBMU04gb3JkZXJpbmcgb2YgdHJhbnNhY3Rpb24gbGlzdHMgaW4gdGhl IHJlb3JkZXJidWZmZXIKQEAgLTk2OSw2ICsxNDAyLDE2MSBAQCBBc3NlcnRUWE5Mc25PcmRl cihSZW9yZGVyQnVmZmVyICpyYikKICNlbmRpZgogfQogCisvKgorICogQXNzZXJ0Q2hlY2tT ZXF1ZW5jZXMKKyAqCQlWZXJpZnkgY29uc2lzdGVuY3kgb2YgaGFzaCB0YWJsZXMgdHJhY2tp bmcgbmV3IHJlbGZpbGVub2Rlcy4KKyAqCisgKiBXZSBjaGVjayB0aGF0IHRoZSBoYXNoIHRh YmxlIGluIHRoZSB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24gaXMgY29uc2lzdGVudCB3aXRoCisg KiByZXNwZWN0IHRvIHRoZSBoYXNoIHRhYmxlcyBpbiBpdCdzIHN1YnhhY3RzLiBUaGF0IGlz LCBlYWNoIGVudHJ5IGhhcyB0byBiZQorICogZWl0aGVyIGZyb20gdGhlIHRvcC1sZXZlbCB4 YWN0IG9yIG9uZSBvZiBpdCdzIHN1YnRyYW5zYWN0aW9ucy4gTGlrZXdpc2UsIGVhY2gKKyAq IGVudHJ5IGluIHN1YnhhY3QgaGFzaCB0YWJsZSBoYXMgdG8gaGF2ZSBhIG1hdGNoIGluIHRo ZSB0b3AtbGV2ZWwgaGFzaCB0YWJsZS4KKyAqLworc3RhdGljIHZvaWQKK0Fzc2VydENoZWNr U2VxdWVuY2VzKFJlb3JkZXJCdWZmZXIgKnJiKQoreworI2lmZGVmIFVTRV9BU1NFUlRfQ0hF Q0tJTkcKKwlMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHggPSByYi0+cHJpdmF0ZV9kYXRh OworCWRsaXN0X2l0ZXIJaXRlcjsKKworCS8qCisJICogU2tpcCB0aGUgdmVyaWZpY2F0aW9u IGlmIHdlIGRvbid0IHJlYWNoIHRoZSBMU04gYXQgd2hpY2ggd2Ugc3RhcnQKKwkgKiBkZWNv ZGluZyB0aGUgY29udGVudHMgb2YgdHJhbnNhY3Rpb25zIHlldCBiZWNhdXNlIHVudGlsIHdl IHJlYWNoIHRoZQorCSAqIExTTiwgd2UgY291bGQgaGF2ZSB0cmFuc2FjdGlvbnMgdGhhdCBk b24ndCBoYXZlIHRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuCisJICogdGhlIHRvcC1sZXZlbCB0 cmFuc2FjdGlvbiBhbmQgc3VidHJhbnNhY3Rpb24geWV0IGFuZCBjb25zZXF1ZW50bHkgaGF2 ZQorCSAqIHRoZSBzYW1lIExTTi4gIFdlIGRvbid0IGd1YXJhbnRlZSB0aGlzIGFzc29jaWF0 aW9uIHVudGlsIHdlIHRyeSB0bworCSAqIGRlY29kZSB0aGUgYWN0dWFsIGNvbnRlbnRzIG9m IHRyYW5zYWN0aW9uLiBUaGUgb3JkZXJpbmcgb2YgdGhlIHJlY29yZHMKKwkgKiBwcmlvciB0 byB0aGUgc3RhcnRfZGVjb2RpbmdfYXQgTFNOIHNob3VsZCBoYXZlIGJlZW4gY2hlY2tlZCBi ZWZvcmUgdGhlCisJICogcmVzdGFydC4KKwkgKi8KKwlpZiAoU25hcEJ1aWxkWGFjdE5lZWRz U2tpcChjdHgtPnNuYXBzaG90X2J1aWxkZXIsIGN0eC0+cmVhZGVyLT5FbmRSZWNQdHIpKQor CQlyZXR1cm47CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB0aGUgcmVsZmlsZW5vZGVzIGZyb20g c3VieGFjdHMgYXJlIHByb3Blcmx5IHJlY29yZGVkIGluIHRoZQorCSAqIHRvcC1sZXZlbCB0 cmFuc2FjdGlvbiBoYXNoIHRhYmxlLgorCSAqLworCWRsaXN0X2ZvcmVhY2goaXRlciwgJnJi LT50b3BsZXZlbF9ieV9sc24pCisJeworCQlpbnQJCQluZW50cmllcyA9IDAsCisJCQkJCW5z dWJlbnRyaWVzID0gMDsKKwkJZGxpc3RfaXRlcglzdWJpdGVyOworCQlSZW9yZGVyQnVmZmVy VFhOICp0eG4gPSBkbGlzdF9jb250YWluZXIoUmVvcmRlckJ1ZmZlclRYTiwgbm9kZSwKKwkJ CQkJCQkJCQkJCWl0ZXIuY3VyKTsKKworCQkvKgorCQkgKiBXZSBkb24ndCBza2lwIHRvcC1s ZXZlbCB0cmFuc2FjdGlvbnMgd2l0aG91dCByZWxmaWxlbm9kZXMsIGJlY2F1c2UKKwkJICog dGhlcmUgbWlnaHQgYmUgYSBzdWJ0cmFuc2FjdGlvbiB3aXRoIHNvbWUsIGFuZCB3ZSB3YW50 IHRvIGRldGVjdAorCQkgKiBzdWNoIGNhc2VzIHRvby4KKwkJICovCisJCWlmICh0eG4tPnNl cXVlbmNlc19oYXNoKQorCQkJbmVudHJpZXMgPSBoYXNoX2dldF9udW1fZW50cmllcyh0eG4t PnNlcXVlbmNlc19oYXNoKTsKKworCQkvKiB3YWxrIGFsbCBzdWJ4YWN0cywgYW5kIGNoZWNr IHRoZSBoYXNoIHRhYmxlIGluIGVhY2ggb25lICovCisJCWRsaXN0X2ZvcmVhY2goc3ViaXRl ciwgJnR4bi0+c3VidHhucykKKwkJeworCQkJSEFTSF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVz OworCQkJUmVvcmRlckJ1ZmZlclNlcXVlbmNlRW50ICplbnRyeTsKKworCQkJUmVvcmRlckJ1 ZmZlclRYTiAqc3VidHhuID0gZGxpc3RfY29udGFpbmVyKFJlb3JkZXJCdWZmZXJUWE4sIG5v ZGUsCisJCQkJCQkJCQkJCQkJICAgc3ViaXRlci5jdXIpOworCisJCQkvKgorCQkJICogSWYg dGhpcyBzdWJ4YWN0IGhhcyBubyByZWxmaWxlbm9kZXMsIHNraXAgaXQuIFdlJ2xsIGRvIHRo ZQorCQkJICogY2hlY2sgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiAodGhhdCBhbGwgdG9w LWxldmVsCisJCQkgKiByZWxmaWxlbm9kZXMgYXJlIGluIHRoZSBjb3JyZWN0IHN1YnhhY3Qp IGxhdGVyLgorCQkJICovCisJCQlpZiAoIXN1YnR4bi0+c2VxdWVuY2VzX2hhc2gpCisJCQkJ Y29udGludWU7CisKKwkJCS8qIGFkZCBudW1iZXIgb2YgcmVsZmlsZW5vZGVzIGluIHRoaXMg c3VieGFjdCAqLworCQkJbnN1YmVudHJpZXMgKz0gaGFzaF9nZXRfbnVtX2VudHJpZXMoc3Vi dHhuLT5zZXF1ZW5jZXNfaGFzaCk7CisKKwkJCS8qCisJCQkgKiBDaGVjayB0aGF0IGFsbCBz dWJ4YWN0IHJlbGZpbGVub2RlcyBhcmUgaW4gdGhlIHRvcC1sZXZlbCB0eG4KKwkJCSAqIHRv bywgYW5kIGFyZSBwb2ludGluZyB0byB0aGlzIHN1YnRyYW5zYWN0aW9uLgorCQkJICovCisJ CQloYXNoX3NlcV9pbml0KCZzY2FuX3N0YXR1cywgc3VidHhuLT5zZXF1ZW5jZXNfaGFzaCk7 CisJCQl3aGlsZSAoKGVudHJ5ID0gKFJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAqKSBoYXNo X3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKKwkJCXsKKwkJCQlib29sCQlm b3VuZCA9IGZhbHNlOworCQkJCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAqc3ViZW50cnk7 CisKKwkJCQkvKiBzZWFyY2ggZm9yIHRoZSBzYW1lIHJlbGZpbGVub2RlIGluIHRoZSB0b3At bGV2ZWwgdHhuICovCisJCQkJc3ViZW50cnkgPSBoYXNoX3NlYXJjaCh0eG4tPnNlcXVlbmNl c19oYXNoLAorCQkJCQkJCQkJICAgKHZvaWQgKikgJmVudHJ5LT5ybG9jYXRvciwKKwkJCQkJ CQkJCSAgIEhBU0hfRklORCwKKwkJCQkJCQkJCSAgICZmb3VuZCk7CisKKwkJCQkvKgorCQkJ CSAqIFRoZSB0b3AtbGV2ZWwgdHhuIGhhc2ggc2hvdWxkIGhhdmUgdGhlIHJlbGZpbGVub2Rl IHRvbywgYW5kCisJCQkJICogaXQgc2hvdWxkIHBvaW50IHRvIHRoaXMgc3VieGFjdC4KKwkJ CQkgKi8KKwkJCQlBc3NlcnQoZm91bmQpOworCisJCQkJLyoKKwkJCQkgKiBUaGUgZW50cnkg aGFzIHRvIHBvaW50IHRvIHRoZSBzdWJ4YWN0IC0gdGhlcmUncyBubyBzdWJ4YWN0CisJCQkJ ICogImJlbG93IiB0aGlzIG9uZSB0byB3aGljaCB0aGUgcmVsZmlsZW5vZGUgY291bGQgYmVs b25nLgorCQkJCSAqLworCQkJCUFzc2VydChzdWJlbnRyeS0+dHhuID09IHN1YnR4bik7CisJ CQl9CisJCX0KKworCQkvKgorCQkgKiBXZSBzaG91bGRuJ3QgaGF2ZSBtb3JlIHJlbGZpbGVu b2RlcyBpbiBzdWJ0cmFuc2FjdGlvbnMgdGhhbiBpbiB0aGUKKwkJICogdG9wLWxldmVsIG9u ZS4gVGhlcmUgbWlnaHQgYmUgcmVsZmlsZW5vZGVzIGluIHRoZSB0b3AtbGV2ZWwgb25lCisJ CSAqIGRpcmVjdGx5LCBzbyB0aGlzIG5lZWRzIHRvIGJlIGluZXF1YWxpdHkuCisJCSAqLwor CQlBc3NlcnQobmVudHJpZXMgPj0gbnN1YmVudHJpZXMpOworCisJCS8qCisJCSAqIE5vdyBk byB0aGUgY2hlY2sgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiAtIGNoZWNrIHRoYXQgZXZl cnkgZW50cnkKKwkJICogaW4gdGhlIHRvcC1sZXZlbCB0eG4gKGV4Y2VwdCB0aG9zZSBwb2lu dGluZyB0byB0aGUgdG9wLWxldmVsIHR4bgorCQkgKiBpdHNlbGYpIHBvaW50IHRvIG9uZSBv ZiB0aGUgc3VieGFjdHMsIGFuZCB0aGVyZSdzIGFuIGVudHJ5IGluIHRoZQorCQkgKiBzdWJ4 YWN0IGhhc2guCisJCSAqLworCQlpZiAodHhuLT5zZXF1ZW5jZXNfaGFzaCkKKwkJeworCQkJ SEFTSF9TRVFfU1RBVFVTIHNjYW5fc3RhdHVzOworCQkJUmVvcmRlckJ1ZmZlclNlcXVlbmNl RW50ICplbnRyeTsKKworCQkJaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHR4bi0+c2Vx dWVuY2VzX2hhc2gpOworCQkJd2hpbGUgKChlbnRyeSA9IChSZW9yZGVyQnVmZmVyU2VxdWVu Y2VFbnQgKikgaGFzaF9zZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5VTEwpCisJCQl7 CisJCQkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJCQlSZW9yZGVyQnVmZmVyU2VxdWVuY2VF bnQgKnN1YmVudHJ5OworCisJCQkJLyogU2tpcCBlbnRyaWVzIGZvciB0aGUgdG9wLWxldmVs IHR4biBpdHNlbGYuICovCisJCQkJaWYgKGVudHJ5LT50eG4gPT0gdHhuKQorCQkJCQljb250 aW51ZTsKKworCQkJCS8qIElzIGl0IGEgc3VieGFjdCBvZiB0aGlzIHR4bj8gKi8KKwkJCQlB c3NlcnQocmJ0eG5faXNfa25vd25fc3VieGFjdChlbnRyeS0+dHhuKSk7CisJCQkJQXNzZXJ0 KGVudHJ5LT50eG4tPnRvcHR4biA9PSB0eG4pOworCisJCQkJLyoKKwkJCQkgKiBTZWFyY2gg Zm9yIHRoZSBzYW1lIHJlbGZpbGVub2RlIGluIHRoZSBzdWJ4YWN0IChpdCBzaG91bGQKKwkJ CQkgKiBiZSBpbml0aWFsaXplZCwgYXMgd2UgZXhwZWN0IGl0IHRvIGNvbnRhaW4gdGhlCisJ CQkJICogcmVsZmlsZW5vZGUpLgorCQkJCSAqLworCQkJCXN1YmVudHJ5ID0gaGFzaF9zZWFy Y2goZW50cnktPnR4bi0+c2VxdWVuY2VzX2hhc2gsCisJCQkJCQkJCQkgICAodm9pZCAqKSAm ZW50cnktPnJsb2NhdG9yLAorCQkJCQkJCQkJICAgSEFTSF9GSU5ELAorCQkJCQkJCQkJICAg JmZvdW5kKTsKKworCQkJCUFzc2VydChmb3VuZCk7CisKKwkJCQkvKgorCQkJCSAqIENoZWNr IHRoZSB0eG4gcG9pbnRlciBpbiB0aGUgdG9wLWxldmVsIGhhc2ggdGFibGUgZW50cnkgaXMK KwkJCQkgKiBjb25zaXN0ZW50IHdpdGggdGhlIHN1YnhhY3QgaGFzaCB0YWJsZSAod2UgYWxy ZWFkeSBjaGVja2VkCisJCQkJICogdGhlIHN1YnhhY3QgZW50cnkgcG9pbnRzIHRvIHRoZSBz dWJ4YWN0IGl0c2VsZikuCisJCQkJICovCisJCQkJQXNzZXJ0KHN1YmVudHJ5LT50eG4gPSBl bnRyeS0+dHhuKTsKKwkJCX0KKwkJfQorCX0KKyNlbmRpZgorfQorCiAvKgogICogQXNzZXJ0 Q2hhbmdlTHNuT3JkZXIKICAqCkBAIC0xMDk0LDYgKzE2ODIsOSBAQCBSZW9yZGVyQnVmZmVy QXNzaWduQ2hpbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCXN1 YnR4bi0+dG9wbGV2ZWxfeGlkID0geGlkOwogCUFzc2VydChzdWJ0eG4tPm5zdWJ0eG5zID09 IDApOwogCisJLyogVGhlcmUgc2hvdWxkIGJlIG5vIHNlcXVlbmNlIHJlbGZpbGVub2RlcyBp biB0aGUgc3VieGFjdCB5ZXQuICovCisJQXNzZXJ0KCFzdWJ0eG4tPnNlcXVlbmNlc19oYXNo KTsKKwogCS8qIHNldCB0aGUgcmVmZXJlbmNlIHRvIHRvcC1sZXZlbCB0cmFuc2FjdGlvbiAq LwogCXN1YnR4bi0+dG9wdHhuID0gdHhuOwogCkBAIC0xOTk3LDYgKzI1ODgsMzUgQEAgUmVv cmRlckJ1ZmZlckFwcGx5TWVzc2FnZShSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAogCQkJCQljaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2UpOwogfQogCisvKgor ICogSGVscGVyIGZ1bmN0aW9uIGZvciBSZW9yZGVyQnVmZmVyUHJvY2Vzc1RYTiBmb3IgYXBw bHlpbmcgc2VxdWVuY2VzLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK1Jlb3JkZXJCdWZm ZXJBcHBseVNlcXVlbmNlKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0 eG4sCisJCQkJCQkgICBSZWxhdGlvbiByZWxhdGlvbiwgUmVvcmRlckJ1ZmZlckNoYW5nZSAq Y2hhbmdlLAorCQkJCQkJICAgYm9vbCBzdHJlYW1pbmcpCit7CisJSGVhcFR1cGxlCXR1cGxl OworCUZvcm1fcGdfc2VxdWVuY2VfZGF0YSBzZXE7CisJaW50NjQJCXZhbHVlOworCisJdHVw bGUgPSAmY2hhbmdlLT5kYXRhLnNlcXVlbmNlLnR1cGxlLT50dXBsZTsKKwlzZXEgPSAoRm9y bV9wZ19zZXF1ZW5jZV9kYXRhKSBHRVRTVFJVQ1QodHVwbGUpOworCisJdmFsdWUgPSBzZXEt Pmxhc3RfdmFsdWU7CisJdmFsdWUgKz0gKHNlcS0+aXNfY2FsbGVkKSA/IHNlcS0+bG9nX2Nu dCA6IDA7CisKKwkvKgorCSAqIFdoZW4gY2FsbGVkIGZyb20gUmVvcmRlckJ1ZmZlckFwcGx5 U2VxdWVuY2UsIHdlJ3JlIGFwcGx5aW5nIGNoYW5nZXMKKwkgKiBhY2N1bXVsYXRlZCBpbiBh IFJlb3JkZXJCdWZmZXJUWE4sIHNvIGFsbCB0aG9zZSBhcmUgdHJhbnNhY3Rpb25hbAorCSAq IGNoYW5nZXMgb2Ygc2VxdWVuY2VzLgorCSAqLworCWlmIChzdHJlYW1pbmcpCisJCXJiLT5z dHJlYW1fc2VxdWVuY2UocmIsIHR4biwgY2hhbmdlLT5sc24sIHJlbGF0aW9uLCB0cnVlLCB2 YWx1ZSk7CisJZWxzZQorCQlyYi0+c2VxdWVuY2UocmIsIHR4biwgY2hhbmdlLT5sc24sIHJl bGF0aW9uLCB0cnVlLCB2YWx1ZSk7Cit9CisKIC8qCiAgKiBGdW5jdGlvbiB0byBzdG9yZSB0 aGUgY29tbWFuZCBpZCBhbmQgc25hcHNob3QgYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudAog ICogc3RyZWFtIHNvIHRoYXQgd2UgY2FuIHJldXNlIHRoZSBzYW1lIHdoaWxlIHNlbmRpbmcg dGhlIG5leHQgc3RyZWFtLgpAQCAtMjQ0Miw2ICszMDYyLDMxIEBAIFJlb3JkZXJCdWZmZXJQ cm9jZXNzVFhOKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJ CQkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5URVJOQUxfVFVQTEVDSUQ6CiAJCQkJ CWVsb2coRVJST1IsICJ0dXBsZWNpZCB2YWx1ZSBpbiBjaGFuZ2VxdWV1ZSIpOwogCQkJCQli cmVhazsKKworCQkJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1NFUVVFTkNFOgorCQkJ CQlBc3NlcnQoc25hcHNob3Rfbm93KTsKKworCQkJCQlyZWxvaWQgPSBSZWxpZEJ5UmVsZmls ZW51bWJlcihjaGFuZ2UtPmRhdGEuc2VxdWVuY2UubG9jYXRvci5zcGNPaWQsCisJCQkJCQkJ CQkJCQkgIGNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS5sb2NhdG9yLnJlbE51bWJlcik7CisKKwkJ CQkJaWYgKHJlbG9pZCA9PSBJbnZhbGlkT2lkKQorCQkJCQkJZWxvZyhFUlJPUiwgImNvdWxk IG5vdCBtYXAgZmlsZW5vZGUgXCIlc1wiIHRvIHJlbGF0aW9uIE9JRCIsCisJCQkJCQkJIHJl bHBhdGhwZXJtKGNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS5sb2NhdG9yLAorCQkJCQkJCQkJCSBN QUlOX0ZPUktOVU0pKTsKKworCQkJCQlyZWxhdGlvbiA9IFJlbGF0aW9uSWRHZXRSZWxhdGlv bihyZWxvaWQpOworCisJCQkJCWlmICghUmVsYXRpb25Jc1ZhbGlkKHJlbGF0aW9uKSkKKwkJ CQkJCWVsb2coRVJST1IsICJjb3VsZCBub3Qgb3BlbiByZWxhdGlvbiB3aXRoIE9JRCAldSAo Zm9yIGZpbGVub2RlIFwiJXNcIikiLAorCQkJCQkJCSByZWxvaWQsCisJCQkJCQkJIHJlbHBh dGhwZXJtKGNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS5sb2NhdG9yLAorCQkJCQkJCQkJCSBNQUlO X0ZPUktOVU0pKTsKKworCQkJCQlpZiAoUmVsYXRpb25Jc0xvZ2ljYWxseUxvZ2dlZChyZWxh dGlvbikpCisJCQkJCQlSZW9yZGVyQnVmZmVyQXBwbHlTZXF1ZW5jZShyYiwgdHhuLCByZWxh dGlvbiwgY2hhbmdlLCBzdHJlYW1pbmcpOworCisJCQkJCVJlbGF0aW9uQ2xvc2UocmVsYXRp b24pOworCQkJCQlicmVhazsKIAkJCX0KIAogCQkJLyoKQEAgLTI4NzIsNiArMzUxNywxMCBA QCBSZW9yZGVyQnVmZmVyRmluaXNoUHJlcGFyZWQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5z YWN0aW9uSWQgeGlkLAogCS8qIGNsZWFudXA6IG1ha2Ugc3VyZSB0aGVyZSdzIG5vIGNhY2hl IHBvbGx1dGlvbiAqLwogCVJlb3JkZXJCdWZmZXJFeGVjdXRlSW52YWxpZGF0aW9ucyh0eG4t Pm5pbnZhbGlkYXRpb25zLAogCQkJCQkJCQkJICB0eG4tPmludmFsaWRhdGlvbnMpOworCisJ LyogY2xlYW51cDogcmVtb3ZlIHNlcXVlbmNlIHJlbGZpbGVub2RlcyBmcm9tIHRoZSB0b3At bGV2ZWwgdHhuICovCisJUmVvcmRlckJ1ZmZlclNlcXVlbmNlQ2xlYW51cCh0eG4pOworCiAJ UmVvcmRlckJ1ZmZlckNsZWFudXBUWE4ocmIsIHR4bik7CiB9CiAKQEAgLTI5MjEsOCArMzU3 MCwxMyBAQCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0 aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKIAkvKiBjb3NtZXRpYy4uLiAqLwogCXR4bi0+ ZmluYWxfbHNuID0gbHNuOwogCisJLyogcmVtb3ZlIHNlcXVlbmNlIHJlbGZpbGVub2RlcyBm cm9tIHRoZSB0b3AtbGV2ZWwgdHhuICovCisJUmVvcmRlckJ1ZmZlclNlcXVlbmNlQ2xlYW51 cCh0eG4pOworCiAJLyogcmVtb3ZlIHBvdGVudGlhbCBvbi1kaXNrIGRhdGEsIGFuZCBkZWFs bG9jYXRlICovCiAJUmVvcmRlckJ1ZmZlckNsZWFudXBUWE4ocmIsIHR4bik7CisKKwlBc3Nl cnRDaGVja1NlcXVlbmNlcyhyYik7CiB9CiAKIC8qCkBAIC0yOTU4LDggKzM2MTIsMTMgQEAg UmVvcmRlckJ1ZmZlckFib3J0T2xkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklk IG9sZGVzdFJ1bm5pbmdYaWQpCiAJCQlpZiAocmJ0eG5faXNfc3RyZWFtZWQodHhuKSkKIAkJ CQlyYi0+c3RyZWFtX2Fib3J0KHJiLCB0eG4sIEludmFsaWRYTG9nUmVjUHRyKTsKIAorCQkJ LyogcmVtb3ZlIHNlcXVlbmNlIHJlbGZpbGVub2RlcyBmcm9tIHRoZSB0b3AtbGV2ZWwgdHhu ICovCisJCQlSZW9yZGVyQnVmZmVyU2VxdWVuY2VDbGVhbnVwKHR4bik7CisKIAkJCS8qIHJl bW92ZSBwb3RlbnRpYWwgb24tZGlzayBkYXRhLCBhbmQgZGVhbGxvY2F0ZSB0aGlzIHR4ICov CiAJCQlSZW9yZGVyQnVmZmVyQ2xlYW51cFRYTihyYiwgdHhuKTsKKworCQkJQXNzZXJ0Q2hl Y2tTZXF1ZW5jZXMocmIpOwogCQl9CiAJCWVsc2UKIAkJCXJldHVybjsKQEAgLTMwMDgsNiAr MzY2Nyw5IEBAIFJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5z YWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAllbHNlCiAJCUFzc2VydCh0eG4tPm5p bnZhbGlkYXRpb25zID09IDApOwogCisJLyogcmVtb3ZlIHNlcXVlbmNlIHJlbGZpbGVub2Rl cyBmcm9tIGEgdG9wLWxldmVsIHR4biAqLworCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUNsZWFu dXAodHhuKTsKKwogCS8qIHJlbW92ZSBwb3RlbnRpYWwgb24tZGlzayBkYXRhLCBhbmQgZGVh bGxvY2F0ZSAqLwogCVJlb3JkZXJCdWZmZXJDbGVhbnVwVFhOKHJiLCB0eG4pOwogfQpAQCAt MzkwOSw2ICs0NTcxLDM5IEBAIFJlb3JkZXJCdWZmZXJTZXJpYWxpemVDaGFuZ2UoUmVvcmRl ckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQltZW1jcHkoZGF0YSwg Y2hhbmdlLT5kYXRhLnRydW5jYXRlLnJlbGlkcywgc2l6ZSk7CiAJCQkJZGF0YSArPSBzaXpl OwogCisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1NF UVVFTkNFOgorCQkJeworCQkJCWNoYXIJICAgKmRhdGE7CisJCQkJUmVvcmRlckJ1ZmZlclR1 cGxlQnVmICp0dXA7CisJCQkJU2l6ZQkJbGVuID0gMDsKKworCQkJCXR1cCA9IGNoYW5nZS0+ ZGF0YS5zZXF1ZW5jZS50dXBsZTsKKworCQkJCWlmICh0dXApCisJCQkJeworCQkJCQlzeiAr PSBzaXplb2YoSGVhcFR1cGxlRGF0YSk7CisJCQkJCWxlbiA9IHR1cC0+dHVwbGUudF9sZW47 CisJCQkJCXN6ICs9IGxlbjsKKwkJCQl9CisKKwkJCQkvKiBtYWtlIHN1cmUgd2UgaGF2ZSBl bm91Z2ggc3BhY2UgKi8KKwkJCQlSZW9yZGVyQnVmZmVyU2VyaWFsaXplUmVzZXJ2ZShyYiwg c3opOworCisJCQkJZGF0YSA9ICgoY2hhciAqKSByYi0+b3V0YnVmKSArIHNpemVvZihSZW9y ZGVyQnVmZmVyRGlza0NoYW5nZSk7CisJCQkJLyogbWlnaHQgaGF2ZSBiZWVuIHJlYWxsb2Nh dGVkIGFib3ZlICovCisJCQkJb25kaXNrID0gKFJlb3JkZXJCdWZmZXJEaXNrQ2hhbmdlICop IHJiLT5vdXRidWY7CisKKwkJCQlpZiAobGVuKQorCQkJCXsKKwkJCQkJbWVtY3B5KGRhdGEs ICZ0dXAtPnR1cGxlLCBzaXplb2YoSGVhcFR1cGxlRGF0YSkpOworCQkJCQlkYXRhICs9IHNp emVvZihIZWFwVHVwbGVEYXRhKTsKKworCQkJCQltZW1jcHkoZGF0YSwgdHVwLT50dXBsZS50 X2RhdGEsIGxlbik7CisJCQkJCWRhdGEgKz0gbGVuOworCQkJCX0KKwogCQkJCWJyZWFrOwog CQkJfQogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRFUk5BTF9TUEVDX0NPTkZJ Uk06CkBAIC00MTczLDYgKzQ4NjgsMjIgQEAgUmVvcmRlckJ1ZmZlckNoYW5nZVNpemUoUmVv cmRlckJ1ZmZlckNoYW5nZSAqY2hhbmdlKQogCQkJewogCQkJCXN6ICs9IHNpemVvZihPaWQp ICogY2hhbmdlLT5kYXRhLnRydW5jYXRlLm5yZWxpZHM7CiAKKwkJCQlicmVhazsKKwkJCX0K KwkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfU0VRVUVOQ0U6CisJCQl7CisJCQkJUmVv cmRlckJ1ZmZlclR1cGxlQnVmICp0dXA7CisJCQkJU2l6ZQkJbGVuID0gMDsKKworCQkJCXR1 cCA9IGNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZTsKKworCQkJCWlmICh0dXApCisJCQkJ eworCQkJCQlzeiArPSBzaXplb2YoSGVhcFR1cGxlRGF0YSk7CisJCQkJCWxlbiA9IHR1cC0+ dHVwbGUudF9sZW47CisJCQkJCXN6ICs9IGxlbjsKKwkJCQl9CisKIAkJCQlicmVhazsKIAkJ CX0KIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5URVJOQUxfU1BFQ19DT05GSVJN OgpAQCAtNDQ3Niw2ICs1MTg3LDMwIEBAIFJlb3JkZXJCdWZmZXJSZXN0b3JlQ2hhbmdlKFJl b3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAKIAkJCQlicmVhazsK IAkJCX0KKworCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9TRVFVRU5DRToKKwkJCWlm IChjaGFuZ2UtPmRhdGEuc2VxdWVuY2UudHVwbGUpCisJCQl7CisJCQkJdWludDMyCQl0dXBs ZWxlbiA9ICgoSGVhcFR1cGxlKSBkYXRhKS0+dF9sZW47CisKKwkJCQljaGFuZ2UtPmRhdGEu c2VxdWVuY2UudHVwbGUgPQorCQkJCQlSZW9yZGVyQnVmZmVyR2V0VHVwbGVCdWYocmIsIHR1 cGxlbGVuIC0gU2l6ZW9mSGVhcFR1cGxlSGVhZGVyKTsKKworCQkJCS8qIHJlc3RvcmUgLT50 dXBsZSAqLworCQkJCW1lbWNweSgmY2hhbmdlLT5kYXRhLnNlcXVlbmNlLnR1cGxlLT50dXBs ZSwgZGF0YSwKKwkJCQkJICAgc2l6ZW9mKEhlYXBUdXBsZURhdGEpKTsKKwkJCQlkYXRhICs9 IHNpemVvZihIZWFwVHVwbGVEYXRhKTsKKworCQkJCS8qIHJlc2V0IHRfZGF0YSBwb2ludGVy IGludG8gdGhlIG5ldyB0dXBsZWJ1ZiAqLworCQkJCWNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50 dXBsZS0+dHVwbGUudF9kYXRhID0KKwkJCQkJUmVvcmRlckJ1ZmZlclR1cGxlQnVmRGF0YShj aGFuZ2UtPmRhdGEuc2VxdWVuY2UudHVwbGUpOworCisJCQkJLyogcmVzdG9yZSB0dXBsZSBk YXRhIGl0c2VsZiAqLworCQkJCW1lbWNweShjaGFuZ2UtPmRhdGEuc2VxdWVuY2UudHVwbGUt PnR1cGxlLnRfZGF0YSwgZGF0YSwgdHVwbGVsZW4pOworCQkJCWRhdGEgKz0gdHVwbGVsZW47 CisJCQl9CisJCQlicmVhazsKKwogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRF Uk5BTF9TUEVDX0NPTkZJUk06CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVEVS TkFMX1NQRUNfQUJPUlQ6CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVEVSTkFM X0NPTU1BTkRfSUQ6CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3Qu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5oCmluZGV4IDQ2M2JjYjY3YzU3Li4z MDVjYTQ5YTU1ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmgKQEAgLTI3LDcgKzI3LDcgQEAK IC8qIHN5bWJvbCBuYW1lLCB0ZXh0dWFsIG5hbWUsIHJlZG8sIGRlc2MsIGlkZW50aWZ5LCBz dGFydHVwLCBjbGVhbnVwLCBtYXNrLCBkZWNvZGUgKi8KIFBHX1JNR1IoUk1fWExPR19JRCwg IlhMT0ciLCB4bG9nX3JlZG8sIHhsb2dfZGVzYywgeGxvZ19pZGVudGlmeSwgTlVMTCwgTlVM TCwgTlVMTCwgeGxvZ19kZWNvZGUpCiBQR19STUdSKFJNX1hBQ1RfSUQsICJUcmFuc2FjdGlv biIsIHhhY3RfcmVkbywgeGFjdF9kZXNjLCB4YWN0X2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBO VUxMLCB4YWN0X2RlY29kZSkKLVBHX1JNR1IoUk1fU01HUl9JRCwgIlN0b3JhZ2UiLCBzbWdy X3JlZG8sIHNtZ3JfZGVzYywgc21ncl9pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVM TCkKK1BHX1JNR1IoUk1fU01HUl9JRCwgIlN0b3JhZ2UiLCBzbWdyX3JlZG8sIHNtZ3JfZGVz Yywgc21ncl9pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgc21ncl9kZWNvZGUpCiBQR19S TUdSKFJNX0NMT0dfSUQsICJDTE9HIiwgY2xvZ19yZWRvLCBjbG9nX2Rlc2MsIGNsb2dfaWRl bnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpCiBQR19STUdSKFJNX0RCQVNFX0lELCAi RGF0YWJhc2UiLCBkYmFzZV9yZWRvLCBkYmFzZV9kZXNjLCBkYmFzZV9pZGVudGlmeSwgTlVM TCwgTlVMTCwgTlVMTCwgTlVMTCkKIFBHX1JNR1IoUk1fVEJMU1BDX0lELCAiVGFibGVzcGFj ZSIsIHRibHNwY19yZWRvLCB0YmxzcGNfZGVzYywgdGJsc3BjX2lkZW50aWZ5LCBOVUxMLCBO VUxMLCBOVUxMLCBOVUxMKQpAQCAtNDAsNyArNDAsNyBAQCBQR19STUdSKFJNX0JUUkVFX0lE LCAiQnRyZWUiLCBidHJlZV9yZWRvLCBidHJlZV9kZXNjLCBidHJlZV9pZGVudGlmeSwgYnRy ZWVfeGxvZwogUEdfUk1HUihSTV9IQVNIX0lELCAiSGFzaCIsIGhhc2hfcmVkbywgaGFzaF9k ZXNjLCBoYXNoX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBoYXNoX21hc2ssIE5VTEwpCiBQR19S TUdSKFJNX0dJTl9JRCwgIkdpbiIsIGdpbl9yZWRvLCBnaW5fZGVzYywgZ2luX2lkZW50aWZ5 LCBnaW5feGxvZ19zdGFydHVwLCBnaW5feGxvZ19jbGVhbnVwLCBnaW5fbWFzaywgTlVMTCkK IFBHX1JNR1IoUk1fR0lTVF9JRCwgIkdpc3QiLCBnaXN0X3JlZG8sIGdpc3RfZGVzYywgZ2lz dF9pZGVudGlmeSwgZ2lzdF94bG9nX3N0YXJ0dXAsIGdpc3RfeGxvZ19jbGVhbnVwLCBnaXN0 X21hc2ssIE5VTEwpCi1QR19STUdSKFJNX1NFUV9JRCwgIlNlcXVlbmNlIiwgc2VxX3JlZG8s IHNlcV9kZXNjLCBzZXFfaWRlbnRpZnksIE5VTEwsIE5VTEwsIHNlcV9tYXNrLCBOVUxMKQor UEdfUk1HUihSTV9TRVFfSUQsICJTZXF1ZW5jZSIsIHNlcV9yZWRvLCBzZXFfZGVzYywgc2Vx X2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBzZXFfbWFzaywgc2VxX2RlY29kZSkKIFBHX1JNR1Io Uk1fU1BHSVNUX0lELCAiU1BHaXN0Iiwgc3BnX3JlZG8sIHNwZ19kZXNjLCBzcGdfaWRlbnRp ZnksIHNwZ194bG9nX3N0YXJ0dXAsIHNwZ194bG9nX2NsZWFudXAsIHNwZ19tYXNrLCBOVUxM KQogUEdfUk1HUihSTV9CUklOX0lELCAiQlJJTiIsIGJyaW5fcmVkbywgYnJpbl9kZXNjLCBi cmluX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBicmluX21hc2ssIE5VTEwpCiBQR19STUdSKFJN X0NPTU1JVF9UU19JRCwgIkNvbW1pdFRzIiwgY29tbWl0X3RzX3JlZG8sIGNvbW1pdF90c19k ZXNjLCBjb21taXRfdHNfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZWNvZGUuaCBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL2RlY29kZS5oCmluZGV4IDE0ZmE5MjFhYjQ3Li44ZDA2MjQ3MTY1YiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vZGVjb2RlLmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vZGVjb2RlLmgKQEAgLTI3LDYgKzI3LDggQEAgZXh0ZXJu IHZvaWQgaGVhcDJfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1Jl Y29yZEJ1ZmZlciAqYnVmKTsKIGV4dGVybiB2b2lkIHhhY3RfZGVjb2RlKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKTsKIGV4dGVybiB2b2lk IHN0YW5kYnlfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29y ZEJ1ZmZlciAqYnVmKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxtc2dfZGVjb2RlKExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKTsKK2V4dGVybiB2 b2lkIHNlcV9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3Jk QnVmZmVyICpidWYpOworZXh0ZXJuIHZvaWQgc21ncl9kZWNvZGUoTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogCiBleHRlcm4gdm9pZCBM b2dpY2FsRGVjb2RpbmdQcm9jZXNzUmVjb3JkKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0 eCwKIAkJCQkJCQkJCQkgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbC5oCmluZGV4IGRmZmMwZDE1NjQ4Li43MmExNzExMmVmZSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbC5oCisrKyBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWwuaApAQCAtOTAsNiArOTAsMTEgQEAgdHlwZWRlZiBz dHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dAogCSAqLwogCWJvb2wJCXR3b3BoYXNlOwog CisJLyoKKwkgKiBEb2VzIHRoZSBvdXRwdXQgcGx1Z2luZyBzdXBwb3J0IGRlY29kaW5nIG9m IHNlcXVlbmNlIGNoYW5nZXM/CisJICovCisJYm9vbAkJc2VxdWVuY2VzOworCiAJLyoKIAkg KiBJcyB0d28tcGhhc2Ugb3B0aW9uIGdpdmVuIGJ5IG91dHB1dCBwbHVnaW4/CiAJICoKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL291dHB1dF9wbHVnaW4uaCBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL291dHB1dF9wbHVnaW4uaAppbmRleCAyZmZjZjE3NTA1 Zi4uN2I1MDg1ZjdkMDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL291 dHB1dF9wbHVnaW4uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1 Z2luLmgKQEAgLTkwLDYgKzkwLDE2IEBAIHR5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVN ZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJ CQkJCVNpemUgbWVzc2FnZV9zaXplLAogCQkJCQkJCQkJCWNvbnN0IGNoYXIgKm1lc3NhZ2Up OwogCisvKgorICogQ2FsbGVkIGZvciB0aGUgZ2VuZXJpYyBsb2dpY2FsIGRlY29kaW5nIHNl cXVlbmNlcy4KKyAqLwordHlwZWRlZiB2b2lkICgqTG9naWNhbERlY29kZVNlcXVlbmNlQ0Ip IChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJCQkJCSBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJIFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNu LAorCQkJCQkJCQkJCSBSZWxhdGlvbiByZWwsCisJCQkJCQkJCQkJIGJvb2wgdHJhbnNhY3Rp b25hbCwKKwkJCQkJCQkJCQkgaW50NjQgdmFsdWUpOworCiAvKgogICogRmlsdGVyIGNoYW5n ZXMgYnkgb3JpZ2luLgogICovCkBAIC0yMDEsNiArMjExLDE3IEBAIHR5cGVkZWYgdm9pZCAo KkxvZ2ljYWxEZWNvZGVTdHJlYW1NZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4CiAJCQkJCQkJCQkJCSAgU2l6ZSBtZXNzYWdlX3NpemUsCiAJCQkJCQkJ CQkJCSAgY29uc3QgY2hhciAqbWVzc2FnZSk7CiAKKy8qCisgKiBDYWxsZWQgZm9yIHRoZSBz dHJlYW1pbmcgZ2VuZXJpYyBsb2dpY2FsIGRlY29kaW5nIHNlcXVlbmNlcyBmcm9tIGluLXBy b2dyZXNzCisgKiB0cmFuc2FjdGlvbnMuCisgKi8KK3R5cGVkZWYgdm9pZCAoKkxvZ2ljYWxE ZWNvZGVTdHJlYW1TZXF1ZW5jZUNCKSAoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwKKwkJCQkJCQkJCQkJICAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkJ CQkgICBYTG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwKKwkJCQkJCQkJCQkJICAgUmVsYXRpb24g cmVsLAorCQkJCQkJCQkJCQkgICBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkJCQkJCSAg IGludDY0IHZhbHVlKTsKKwogLyoKICAqIENhbGxiYWNrIGZvciBzdHJlYW1pbmcgdHJ1bmNh dGVzIGZyb20gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLgogICovCkBAIC0yMjEsNiArMjQy LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgT3V0cHV0UGx1Z2luQ2FsbGJhY2tzCiAJTG9naWNhbERl Y29kZVRydW5jYXRlQ0IgdHJ1bmNhdGVfY2I7CiAJTG9naWNhbERlY29kZUNvbW1pdENCIGNv bW1pdF9jYjsKIAlMb2dpY2FsRGVjb2RlTWVzc2FnZUNCIG1lc3NhZ2VfY2I7CisJTG9naWNh bERlY29kZVNlcXVlbmNlQ0Igc2VxdWVuY2VfY2I7CiAJTG9naWNhbERlY29kZUZpbHRlckJ5 T3JpZ2luQ0IgZmlsdGVyX2J5X29yaWdpbl9jYjsKIAlMb2dpY2FsRGVjb2RlU2h1dGRvd25D QiBzaHV0ZG93bl9jYjsKIApAQCAtMjM5LDYgKzI2MSw3IEBAIHR5cGVkZWYgc3RydWN0IE91 dHB1dFBsdWdpbkNhbGxiYWNrcwogCUxvZ2ljYWxEZWNvZGVTdHJlYW1Db21taXRDQiBzdHJl YW1fY29tbWl0X2NiOwogCUxvZ2ljYWxEZWNvZGVTdHJlYW1DaGFuZ2VDQiBzdHJlYW1fY2hh bmdlX2NiOwogCUxvZ2ljYWxEZWNvZGVTdHJlYW1NZXNzYWdlQ0Igc3RyZWFtX21lc3NhZ2Vf Y2I7CisJTG9naWNhbERlY29kZVN0cmVhbVNlcXVlbmNlQ0Igc3RyZWFtX3NlcXVlbmNlX2Ni OwogCUxvZ2ljYWxEZWNvZGVTdHJlYW1UcnVuY2F0ZUNCIHN0cmVhbV90cnVuY2F0ZV9jYjsK IH0gT3V0cHV0UGx1Z2luQ2FsbGJhY2tzOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9y ZW9yZGVyYnVmZmVyLmgKaW5kZXggZjk4NjEwMWU1MGQuLjU4YTk5Yjc0MDYwIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBAIC03NCw2ICs3NCw3IEBA IHR5cGVkZWYgZW51bSBSZW9yZGVyQnVmZmVyQ2hhbmdlVHlwZQogCVJFT1JERVJfQlVGRkVS X0NIQU5HRV9JTlRFUk5BTF9TUEVDX0NPTkZJUk0sCiAJUkVPUkRFUl9CVUZGRVJfQ0hBTkdF X0lOVEVSTkFMX1NQRUNfQUJPUlQsCiAJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1RSVU5DQVRF LAorCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9TRVFVRU5DRSwKIH0gUmVvcmRlckJ1ZmZlckNo YW5nZVR5cGU7CiAKIC8qIGZvcndhcmQgZGVjbGFyYXRpb24gKi8KQEAgLTE2Nyw2ICsxNjgs MTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlckNoYW5nZQogCQkJdWludDMyCQlu aW52YWxpZGF0aW9uczsgLyogTnVtYmVyIG9mIG1lc3NhZ2VzICovCiAJCQlTaGFyZWRJbnZh bGlkYXRpb25NZXNzYWdlICppbnZhbGlkYXRpb25zOwkvKiBpbnZhbGlkYXRpb24gbWVzc2Fn ZSAqLwogCQl9CQkJaW52YWw7CisKKwkJLyogQ29udGV4dCBkYXRhIGZvciBTZXF1ZW5jZSBj aGFuZ2VzICovCisJCXN0cnVjdAorCQl7CisJCQlSZWxGaWxlTG9jYXRvciBsb2NhdG9yOwor CQkJUmVvcmRlckJ1ZmZlclR1cGxlQnVmICp0dXBsZTsKKwkJfQkJCXNlcXVlbmNlOwogCX0J CQlkYXRhOwogCiAJLyoKQEAgLTM5Miw2ICs0MDAsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVv cmRlckJ1ZmZlclRYTgogCSAqLwogCUhUQUIJICAgKnRvYXN0X2hhc2g7CiAKKwkvKgorCSAq IFNlcXVlbmNlIHJlbGZpbGVub2RlcyBjcmVhdGVkIGluIHRoaXMgdHJhbnNhY3Rpb24gKGFs c28gaW5jbHVkZXMKKwkgKiBhbHRlcmVkIHNlcXVlbmNlcywgd2hpY2ggYXNzaWducyBuZXcg cmVsZmlsZW5vZGUpLgorCSAqLworCUhUQUIJICAgKnNlcXVlbmNlc19oYXNoOworCiAJLyoK IAkgKiBub24taGllcmFyY2hpY2FsIGxpc3Qgb2Ygc3VidHJhbnNhY3Rpb25zIHRoYXQgYXJl ICpub3QqIGFib3J0ZWQuIE9ubHkKIAkgKiB1c2VkIGluIHRvcGxldmVsIHRyYW5zYWN0aW9u cy4KQEAgLTQ3MCw2ICs0ODQsMTQgQEAgdHlwZWRlZiB2b2lkICgqUmVvcmRlckJ1ZmZlck1l c3NhZ2VDQikgKFJlb3JkZXJCdWZmZXIgKnJiLAogCQkJCQkJCQkJCWNvbnN0IGNoYXIgKnBy ZWZpeCwgU2l6ZSBzeiwKIAkJCQkJCQkJCQljb25zdCBjaGFyICptZXNzYWdlKTsKIAorLyog c2VxdWVuY2UgY2FsbGJhY2sgc2lnbmF0dXJlICovCit0eXBlZGVmIHZvaWQgKCpSZW9yZGVy QnVmZmVyU2VxdWVuY2VDQikgKFJlb3JkZXJCdWZmZXIgKnJiLAorCQkJCQkJCQkJCSBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJIFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNu LAorCQkJCQkJCQkJCSBSZWxhdGlvbiByZWwsCisJCQkJCQkJCQkJIGJvb2wgdHJhbnNhY3Rp b25hbCwKKwkJCQkJCQkJCQkgaW50NjQgdmFsdWUpOworCiAvKiBiZWdpbiBwcmVwYXJlIGNh bGxiYWNrIHNpZ25hdHVyZSAqLwogdHlwZWRlZiB2b2lkICgqUmVvcmRlckJ1ZmZlckJlZ2lu UHJlcGFyZUNCKSAoUmVvcmRlckJ1ZmZlciAqcmIsCiAJCQkJCQkJCQkJCSBSZW9yZGVyQnVm ZmVyVFhOICp0eG4pOwpAQCAtNTM2LDYgKzU1OCwxNCBAQCB0eXBlZGVmIHZvaWQgKCpSZW9y ZGVyQnVmZmVyU3RyZWFtTWVzc2FnZUNCKSAoCiAJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAq cHJlZml4LCBTaXplIHN6LAogCQkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwog CisvKiBzdHJlYW0gc2VxdWVuY2UgY2FsbGJhY2sgc2lnbmF0dXJlICovCit0eXBlZGVmIHZv aWQgKCpSZW9yZGVyQnVmZmVyU3RyZWFtU2VxdWVuY2VDQikgKFJlb3JkZXJCdWZmZXIgKnJi LAorCQkJCQkJCQkJCQkgICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJCSAg IFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNuLAorCQkJCQkJCQkJCQkgICBSZWxhdGlvbiByZWws CisJCQkJCQkJCQkJCSAgIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCQkJCQkJICAgaW50 NjQgdmFsdWUpOworCiAvKiBzdHJlYW0gdHJ1bmNhdGUgY2FsbGJhY2sgc2lnbmF0dXJlICov CiB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyU3RyZWFtVHJ1bmNhdGVDQikgKAogCQkJ CQkJCQkJCQkgICBSZW9yZGVyQnVmZmVyICpyYiwKQEAgLTU5Miw2ICs2MjIsNyBAQCBzdHJ1 Y3QgUmVvcmRlckJ1ZmZlcgogCVJlb3JkZXJCdWZmZXJBcHBseVRydW5jYXRlQ0IgYXBwbHlf dHJ1bmNhdGU7CiAJUmVvcmRlckJ1ZmZlckNvbW1pdENCIGNvbW1pdDsKIAlSZW9yZGVyQnVm ZmVyTWVzc2FnZUNCIG1lc3NhZ2U7CisJUmVvcmRlckJ1ZmZlclNlcXVlbmNlQ0Igc2VxdWVu Y2U7CiAKIAkvKgogCSAqIENhbGxiYWNrcyB0byBiZSBjYWxsZWQgd2hlbiBzdHJlYW1pbmcg YSB0cmFuc2FjdGlvbiBhdCBwcmVwYXJlIHRpbWUuCkBAIC02MTEsNiArNjQyLDcgQEAgc3Ry dWN0IFJlb3JkZXJCdWZmZXIKIAlSZW9yZGVyQnVmZmVyU3RyZWFtQ29tbWl0Q0Igc3RyZWFt X2NvbW1pdDsKIAlSZW9yZGVyQnVmZmVyU3RyZWFtQ2hhbmdlQ0Igc3RyZWFtX2NoYW5nZTsK IAlSZW9yZGVyQnVmZmVyU3RyZWFtTWVzc2FnZUNCIHN0cmVhbV9tZXNzYWdlOworCVJlb3Jk ZXJCdWZmZXJTdHJlYW1TZXF1ZW5jZUNCIHN0cmVhbV9zZXF1ZW5jZTsKIAlSZW9yZGVyQnVm ZmVyU3RyZWFtVHJ1bmNhdGVDQiBzdHJlYW1fdHJ1bmNhdGU7CiAKIAkvKgpAQCAtNjk2LDYg KzcyOCwxMCBAQCBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyUXVldWVNZXNzYWdlKFJlb3Jk ZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJCSAgU25hcHNob3Qg c25hcCwgWExvZ1JlY1B0ciBsc24sCiAJCQkJCQkJCQkgIGJvb2wgdHJhbnNhY3Rpb25hbCwg Y29uc3QgY2hhciAqcHJlZml4LAogCQkJCQkJCQkJICBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29u c3QgY2hhciAqbWVzc2FnZSk7CitleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyUXVldWVTZXF1 ZW5jZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJCQkg ICBTbmFwc2hvdCBzbmFwc2hvdCwgWExvZ1JlY1B0ciBsc24sIFJlcE9yaWdpbklkIG9yaWdp bl9pZCwKKwkJCQkJCQkJCSAgIFJlbEZpbGVMb2NhdG9yIGxvY2F0b3IsIGJvb2wgdHJhbnNh Y3Rpb25hbCwKKwkJCQkJCQkJCSAgIFJlb3JkZXJCdWZmZXJUdXBsZUJ1ZiAqdHVwbGVidWYp OwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckNvbW1pdChSZW9yZGVyQnVmZmVyICpyYiwg VHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCVhMb2dSZWNQdHIgY29tbWl0X2xzbiwgWExv Z1JlY1B0ciBlbmRfbHNuLAogCQkJCQkJCQlUaW1lc3RhbXBUeiBjb21taXRfdGltZSwgUmVw T3JpZ2luSWQgb3JpZ2luX2lkLCBYTG9nUmVjUHRyIG9yaWdpbl9sc24pOwpAQCAtNzUwLDQg Kzc4NiwxMCBAQCBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyU2V0UmVzdGFydFBvaW50KFJl b3JkZXJCdWZmZXIgKnJiLCBYTG9nUmVjUHRyIHB0cik7CiAKIGV4dGVybiB2b2lkIFN0YXJ0 dXBSZW9yZGVyQnVmZmVyKHZvaWQpOwogCitleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWRk UmVsRmlsZUxvY2F0b3IoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAor CQkJCQkJCQkJCSAgIFhMb2dSZWNQdHIgbHNuLCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcik7 CitleHRlcm4gYm9vbCBSZW9yZGVyQnVmZmVyU2VxdWVuY2VJc1RyYW5zYWN0aW9uYWwoUmVv cmRlckJ1ZmZlciAqcmIsCisJCQkJCQkJCQkJCQkgUmVsRmlsZUxvY2F0b3IgbG9jYXRvciwK KwkJCQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp4aWQpOworCiAjZW5kaWYKZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggODZhOTg4NmQ0ZjcuLjczYjdiMzdhNWVlIDEwMDY0 NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjMyOSw2ICsyMzI5LDcgQEAgUmVvcmRl ckJ1ZmZlckl0ZXJUWE5TdGF0ZQogUmVvcmRlckJ1ZmZlck1lc3NhZ2VDQgogUmVvcmRlckJ1 ZmZlclByZXBhcmVDQgogUmVvcmRlckJ1ZmZlclJvbGxiYWNrUHJlcGFyZWRDQgorUmVvcmRl ckJ1ZmZlclNlcXVlbmNlRW50CiBSZW9yZGVyQnVmZmVyU3RyZWFtQWJvcnRDQgogUmVvcmRl ckJ1ZmZlclN0cmVhbUNoYW5nZUNCCiBSZW9yZGVyQnVmZmVyU3RyZWFtQ29tbWl0Q0IKLS0g CjIuNDEuMAoK --------------q81gMYy3cJrdUAqlWBWL0vlY Content-Type: text/x-patch; charset=UTF-8; name="v20231128-0002-tweak-ReorderBufferSequenceIsTransactional.patch" Content-Disposition: attachment; filename*0="v20231128-0002-tweak-ReorderBufferSequenceIsTransactional.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiYjVkOWJmNzE2YjQwN2UwZGY2YjA2MmQ4ZTcyNzMwYjk3MjBkYWMwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogTW9uLCAyNyBOb3YgMjAyMyAwMTozOToxMyArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjMxMTI4IDIvOF0gdHdlYWsgUmVvcmRlckJ1ZmZlclNlcXVlbmNlSXNUcmFu c2FjdGlvbmFsCgotLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2Rl LmMgICAgICB8ICAyICstCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVy LmMgICAgICAgfCA2NiArKysrKysrKystLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9yZW9yZGVyYnVmZmVyLmggICAgICAgfCAgMyArLQogMyBmaWxlcyBjaGFuZ2VkLCAz NSBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRleCA1YWRlYmE0ZjcwYy4uMDI0OGFlZTgzZDcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtMTQz OSw3ICsxNDM5LDcgQEAgc2VxX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgs IFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKIAkgKi8KIAl0cmFuc2FjdGlvbmFsID0gUmVvcmRl ckJ1ZmZlclNlcXVlbmNlSXNUcmFuc2FjdGlvbmFsKGN0eC0+cmVvcmRlciwKIAkJCQkJCQkJ CQkJCQkJIHRhcmdldF9sb2NhdG9yLAotCQkJCQkJCQkJCQkJCQkgTlVMTCk7CisJCQkJCQkJ CQkJCQkJCSB4aWQsIE5VTEwpOwogCiAJLyogU2tpcCB0aGUgY2hhbmdlIGlmIGFscmVhZHkg cHJvY2Vzc2VkIChwZXIgdGhlIHNuYXBzaG90KS4gKi8KIAlpZiAodHJhbnNhY3Rpb25hbCAm JgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVy YnVmZmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZm ZXIuYwppbmRleCA1ZWVmMGQ4OWE5OC4uNjE3ODFiNjJiYjggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0xMDEzLDUw ICsxMDEzLDQ4IEBAIFJlb3JkZXJCdWZmZXJRdWV1ZU1lc3NhZ2UoUmVvcmRlckJ1ZmZlciAq cmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogYm9vbAogUmVvcmRlckJ1ZmZlclNlcXVlbmNlSXNU cmFuc2FjdGlvbmFsKFJlb3JkZXJCdWZmZXIgKnJiLAogCQkJCQkJCQkJIFJlbEZpbGVMb2Nh dG9yIHJsb2NhdG9yLAotCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnhpZCkKKwkJCQkJCQkJ CSBUcmFuc2FjdGlvbklkIHhpZGluLAorCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnhpZG91 dCkKIHsKIAlib29sCQlmb3VuZCA9IGZhbHNlOwotCWRsaXN0X2l0ZXIJaXRlcjsKKwlSZW9y ZGVyQnVmZmVyVFhOICAgKnR4bjsKKwlSZW9yZGVyQnVmZmVyU2VxdWVuY2VFbnQgKmVudHJ5 OwogCiAJQXNzZXJ0Q2hlY2tTZXF1ZW5jZXMocmIpOwogCiAJLyoKLQkgKiBXYWxrIGFsbCB0 b3AtbGV2ZWwgdHJhbnNhY3Rpb25zIChzb21lIG9mIHdoaWNoIG1heSBiZSBzdWJ4YWN0cywg ZXhjZXB0Ci0JICogdGhhdCB3ZSBoYXZlbid0IHByb2Nlc3NlZCB0aGUgYXNzaWdubWVudHMg eWV0KSwgYW5kIGNoZWNrIGlmIGFueSBvZgotCSAqIHRoZW0gY3JlYXRlZCB0aGUgcmVsZmls ZW5vZGUuCisJICogVHJ5IHRvIGxvb2t1cCB0cmFuc2FjdGlvbiB3aXRoIHRoZSBYSUQgb2Yg dGhlIGNoYW5nZS4gSWYgaXQgZXhpc3RzLCB0aGUKKwkgKiByZWxmaWxlbm9kZSB3b3VsZCBo YXZlIHRvIGJlIGVpdGhlciBpbiBpdCBvciB0aGUgdG9wLWxldmVsIHRyYW5zYWN0aW9uCisJ ICogKGlmIGl0IHdhcyBjcmVhdGVkIGluIHNvbWUgZWFybGllciBzdWJ0cmFuc2FjdGlvbiku CisJICoKKwkgKiBJZiB0aGlzIGlzIGEgc3VieGFjdCwgd2UnbGwgc2VhcmNoIGp1c3QgdGhl IHRvcC1sZXZlbCBoYXNoIHRhYmxlLiBUaGF0J3MKKwkgKiBzaW1wbGVyIGFuZCBsaWtlbHkg ZmFzdGVyIHRoYW4gaGF2aW5nIHRvIHNlYXJjaCB0d28gaGFzaCB0YWJsZXMuCiAJICovCi0J ZGxpc3RfZm9yZWFjaChpdGVyLCAmcmItPnRvcGxldmVsX2J5X2xzbikKLQl7Ci0JCVJlb3Jk ZXJCdWZmZXJTZXF1ZW5jZUVudCAqZW50cnk7Ci0JCVJlb3JkZXJCdWZmZXJUWE4gKnR4biA9 IGRsaXN0X2NvbnRhaW5lcihSZW9yZGVyQnVmZmVyVFhOLCBub2RlLAotCQkJCQkJCQkJCQkJ aXRlci5jdXIpOworCXR4biA9IFJlb3JkZXJCdWZmZXJUWE5CeVhpZChyYiwgeGlkaW4sIGZh bHNlLCBOVUxMLCBJbnZhbGlkWExvZ1JlY1B0ciwKKwkJCQkJCQkJZmFsc2UpOwogCi0JCS8q IHRyYW5zYWN0aW9uIGhhcyBubyByZWxmaWxlbm9kZXMgYXQgYWxsICovCi0JCWlmICghdHhu LT5zZXF1ZW5jZXNfaGFzaCkKLQkJCWNvbnRpbnVlOworCWlmICghdHhuKQorCQlyZXR1cm4g ZmFsc2U7CiAKLQkJZW50cnkgPSBoYXNoX3NlYXJjaCh0eG4tPnNlcXVlbmNlc19oYXNoLAot CQkJCQkJCSh2b2lkICopICZybG9jYXRvciwKLQkJCQkJCQlIQVNIX0ZJTkQsCi0JCQkJCQkJ JmZvdW5kKTsKKwkvKiBJZiB0aGVyZSdzIHRvcC1sZXZlbCB0cmFuc2FjdGlvbiwgc2VhcmNo IHRoYXQgb25lLiAqLworCXR4biA9ICh0eG4tPnRvcHR4bikgPyB0eG4tPnRvcHR4biA6IHR4 bjsKIAotCQkvKgotCQkgKiBJZiB3ZSBmb3VuZCBhbiBlbnRyeSB3aXRoIG1hdGNoaW5nIHJl bGZpbGVub2RlLCB3ZSdyZSBkb25lIC0gd2UKLQkJICogaGF2ZSB0byB0cmVhdCB0aGUgc2Vx dWVuY2UgY2hhbmdlIGFzIHRyYW5zYWN0aW9uYWwsIGFuZCByZXBsYXkgaXQKLQkJICogaW4g dGhlIHNhbWUgKHN1Yil0cmFuc2FjdGlvbiBqdXN0IGxpa2UgYW55IG90aGVyIGNoYW5nZS4K LQkJICoKLQkJICogT3B0aW9uYWxseSBzZXQgWElEIG9mIHRoZSAoc3ViKXhhY3QgdGhhdCBj cmVhdGVkIHRoZSByZWxmaWxlbm9kZS4KLQkJICovCi0JCWlmIChmb3VuZCkKLQkJewotCQkJ aWYgKHhpZCkKLQkJCQkqeGlkID0gZW50cnktPnR4bi0+eGlkOworCS8qIHRyYW5zYWN0aW9u IGhhcyBubyByZWxmaWxlbm9kZXMsIGNhbid0IGJlIHRyYW5zYWN0aW9uYWwgKi8KKwlpZiAo IXR4bi0+c2VxdWVuY2VzX2hhc2gpCisJCXJldHVybiBmYWxzZTsKIAotCQkJYnJlYWs7Ci0J CX0KLQl9CisJZW50cnkgPSBoYXNoX3NlYXJjaCh0eG4tPnNlcXVlbmNlc19oYXNoLAorCQkJ CQkJKHZvaWQgKikgJnJsb2NhdG9yLAorCQkJCQkJSEFTSF9GSU5ELAorCQkJCQkJJmZvdW5k KTsKIAotCXJldHVybiBmb3VuZDsKKwlpZiAoIWZvdW5kKQorCQlyZXR1cm4gZmFsc2U7CisK KwlpZiAoeGlkb3V0KQorCQkqeGlkb3V0ID0gZW50cnktPnR4bi0+eGlkOworCisJcmV0dXJu IHRydWU7CiB9CiAKIC8qCkBAIC0xMTQ1LDcgKzExNDMsNyBAQCBSZW9yZGVyQnVmZmVyUXVl dWVTZXF1ZW5jZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCWNo YW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZSA9IHR1cGxlYnVmOwogCiAJCS8qIGxvb2t1cCB0 aGUgWElEIGZvciB0cmFuc2FjdGlvbiB0aGF0IGNyZWF0ZWQgdGhlIHJlbGZpbGVub2RlICov Ci0JCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUlzVHJhbnNhY3Rpb25hbChyYiwgcmxvY2F0b3Is ICZ4aWQpOworCQlSZW9yZGVyQnVmZmVyU2VxdWVuY2VJc1RyYW5zYWN0aW9uYWwocmIsIHJs b2NhdG9yLCB4aWQsICZ4aWQpOwogCiAJCS8qIHRoZSBYSUQgc2hvdWxkIGJlIHZhbGlkIGZv ciBhIHRyYW5zYWN0aW9uYWwgY2hhbmdlICovCiAJCUFzc2VydChUcmFuc2FjdGlvbklkSXNW YWxpZCh4aWQpKTsKQEAgLTExNzAsNyArMTE2OCw3IEBAIFJlb3JkZXJCdWZmZXJRdWV1ZVNl cXVlbmNlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJQXNzZXJ0 KHNuYXBzaG90X25vdyk7CiAKIAkJLyogTWFrZSBzdXJlIHRoZSBzZXF1ZW5jZSBpcyBub3Qg aW4gYW55IG9mIHRoZSBoYXNoIHRhYmxlcyAqLwotCQlBc3NlcnQoIVJlb3JkZXJCdWZmZXJT ZXF1ZW5jZUlzVHJhbnNhY3Rpb25hbChyYiwgcmxvY2F0b3IsIE5VTEwpKTsKKwkJQXNzZXJ0 KCFSZW9yZGVyQnVmZmVyU2VxdWVuY2VJc1RyYW5zYWN0aW9uYWwocmIsIHJsb2NhdG9yLCB4 aWQsIE5VTEwpKTsKIAogCQlpZiAoeGlkICE9IEludmFsaWRUcmFuc2FjdGlvbklkKQogCQkJ dHhuID0gUmVvcmRlckJ1ZmZlclRYTkJ5WGlkKHJiLCB4aWQsIHRydWUsIE5VTEwsIGxzbiwg dHJ1ZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVm ZmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5kZXgg NThhOTliNzQwNjAuLmE0NGEwZjRkZmI5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v cmVvcmRlcmJ1ZmZlci5oCkBAIC03OTAsNiArNzkwLDcgQEAgZXh0ZXJuIHZvaWQgUmVvcmRl ckJ1ZmZlckFkZFJlbEZpbGVMb2NhdG9yKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlv bklkIHhpZCwKIAkJCQkJCQkJCQkgICBYTG9nUmVjUHRyIGxzbiwgUmVsRmlsZUxvY2F0b3Ig cmxvY2F0b3IpOwogZXh0ZXJuIGJvb2wgUmVvcmRlckJ1ZmZlclNlcXVlbmNlSXNUcmFuc2Fj dGlvbmFsKFJlb3JkZXJCdWZmZXIgKnJiLAogCQkJCQkJCQkJCQkJIFJlbEZpbGVMb2NhdG9y IGxvY2F0b3IsCi0JCQkJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqeGlkKTsKKwkJCQkJCQkJ CQkJCSBUcmFuc2FjdGlvbklkIHhpZGluLAorCQkJCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQg KnhpZG91dCk7CiAKICNlbmRpZgotLSAKMi40MS4wCgo= --------------q81gMYy3cJrdUAqlWBWL0vlY Content-Type: text/x-patch; charset=UTF-8; name="v20231128-0003-Add-decoding-of-sequences-to-test_decoding.patch" Content-Disposition: attachment; filename*0="v20231128-0003-Add-decoding-of-sequences-to-test_decoding.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5MmM3YmI2YWUyMjdmYTc5YWFjNDQ3ZTBjZTMxOTg4ZTgyYmZkZmZkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogRnJpLCAxMyBKYW4gMjAyMyAyMDozMjo0NCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjMxMTI4IDMvOF0gQWRkIGRlY29kaW5nIG9mIHNlcXVlbmNlcyB0byB0ZXN0 X2RlY29kaW5nCgpFeHRlbmRzIHRlc3RfZGVjb2Rpbmcgd2l0aCBjYWxsYmFja3MgdG8gZGVj b2RlIHNlcXVlbmNlcy4gVGhpcyBmZWF0dXJlCmlzIGRpc2FibGVkIGJ5IGRlZmF1bHQgKGku ZS4gc2VxdWVuY2UgY2hhbmdlcyBhcmUgb21pdHRlZCBmcm9tIHRoZQpvdXRwdXQpLCBidXQg bWF5IGJlIGVuYWJsZWQgYnkgcGFzc2luZyAnaW5jbHVkZS1zZXF1ZW5jZXMnIG9wdGlvbiB0 byB0aGUKdGVzdF9kZWNvZGluZyBwbHVnaW4uCgpBdXRob3I6IFRvbWFzIFZvbmRyYSwgQ2Fy eSBIdWFuZwpSZXZpZXdlZC1ieTogQXNodXRvc2ggQmFwYXQsIEFtaXQgS2FwaWxhLCBQZXRl ciBFaXNlbnRyYXV0LCBIYW5udQpLcm9zaW5nLCBBbmRyZXMgRnJldW5kLCBaaGlqaWUgSG91 CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZDA0NWYzYzItNmNmYi0wNmQzLTU1 NDAtZTYzYzMyMGRmOGJjQGVudGVycHJpc2VkYi5jb20KRGlzY3Vzc2lvbjogaHR0cHM6Ly9w b3N0Z3IuZXMvbS8xNzEwZWQ3ZTEzYi5jZDcxNzc0NjE0MzA3NDYuMzM3MjI2NDU2MjU0MzYw Nzc4MUBoaWdoZ28uY2EKLS0tCiBjb250cmliL3Rlc3RfZGVjb2RpbmcvTWFrZWZpbGUgICAg ICAgICAgICAgIHwgICAzICstCiBjb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvc2Vx dWVuY2Uub3V0IHwgMzI1ICsrKysrKysrKysrKysrKysrKysrCiBjb250cmliL3Rlc3RfZGVj b2Rpbmcvc3FsL3NlcXVlbmNlLnNxbCAgICAgIHwgMTE5ICsrKysrKysKIGNvbnRyaWIvdGVz dF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMgICAgICAgfCAgODcgKysrKysrCiA0IGZpbGVz IGNoYW5nZWQsIDUzMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL3NlcXVlbmNlLm91dAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvc2VxdWVuY2Uu c3FsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlIGIvY29u dHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlCmluZGV4IGM3Y2U2MDM3MDY0Li4wNWMwYzVh MmY4NiAxMDA2NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlCisrKyBi L2NvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZQpAQCAtNSw3ICs1LDggQEAgUEdGSUxF REVTQyA9ICJ0ZXN0X2RlY29kaW5nIC0gZXhhbXBsZSBvZiBhIGxvZ2ljYWwgZGVjb2Rpbmcg b3V0cHV0IHBsdWdpbiIKIAogUkVHUkVTUyA9IGRkbCB4YWN0IHJld3JpdGUgdG9hc3QgcGVy bWlzc2lvbnMgZGVjb2RpbmdfaW5feGFjdCBcCiAJZGVjb2RpbmdfaW50b19yZWwgYmluYXJ5 IHByZXBhcmVkIHJlcGxvcmlnaW4gdGltZSBtZXNzYWdlcyBcCi0Jc3BpbGwgc2xvdCB0cnVu Y2F0ZSBzdHJlYW0gc3RhdHMgdHdvcGhhc2UgdHdvcGhhc2Vfc3RyZWFtCisJc3BpbGwgc2xv dCB0cnVuY2F0ZSBzdHJlYW0gc3RhdHMgdHdvcGhhc2UgdHdvcGhhc2Vfc3RyZWFtIFwKKwlz ZXF1ZW5jZQogSVNPTEFUSU9OID0gbXhhY3QgZGVsYXllZF9zdGFydHVwIG9uZGlza19zdGFy dHVwIGNvbmN1cnJlbnRfZGRsX2RtbCBcCiAJb2xkZXN0X3htaW4gc25hcHNob3RfdHJhbnNm ZXIgc3VieGFjdF93aXRob3V0X3RvcCBjb25jdXJyZW50X3N0cmVhbSBcCiAJdHdvcGhhc2Vf c25hcHNob3Qgc2xvdF9jcmVhdGlvbl9lcnJvciBjYXRhbG9nX2NoYW5nZV9zbmFwc2hvdApk aWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL3NlcXVlbmNlLm91 dCBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9zZXF1ZW5jZS5vdXQKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjk4YThmMjVlNWFkCi0tLSAvZGV2 L251bGwKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL3NlcXVlbmNlLm91 dApAQCAtMCwwICsxLDMyNSBAQAorLS0gcHJlZGljdGFiaWxpdHkKK1NFVCBzeW5jaHJvbm91 c19jb21taXQgPSBvbjsKK1NFTEVDVCAnaW5pdCcgRlJPTSBwZ19jcmVhdGVfbG9naWNhbF9y ZXBsaWNhdGlvbl9zbG90KCdyZWdyZXNzaW9uX3Nsb3QnLCAndGVzdF9kZWNvZGluZycpOwor ID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGluaXQKKygxIHJvdykKKworQ1JFQVRFIFNFUVVF TkNFIHRlc3Rfc2VxdWVuY2U7CistLSB0ZXN0IHRoZSBzZXF1ZW5jZSBjaGFuZ2VzIGJ5IHNl dmVyYWwgbmV4dHZhbCgpIGNhbGxzCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScp OworIG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAgICAxCisoMSByb3cpCisKK1NFTEVDVCBu ZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0tLQorICAgICAg IDIKKygxIHJvdykKKworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0 dmFsIAorLS0tLS0tLS0tCisgICAgICAgMworKDEgcm93KQorCitTRUxFQ1QgbmV4dHZhbCgn dGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAgICA0CisoMSBy b3cpCisKKy0tIHRlc3QgdGhlIHNlcXVlbmNlIGNoYW5nZXMgYnkgc2V2ZXJhbCBBTFRFUiBj b21tYW5kcworQUxURVIgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZSBJTkNSRU1FTlQgQlkgMTA7 CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0t LS0KKyAgICAgIDE0CisoMSByb3cpCisKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2Ug U1RBUlQgV0lUSCAzMDAwOworQUxURVIgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZSBNQVhWQUxV RSAxMDAwMDsKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2UgUkVTVEFSVCBXSVRIIDQw MDA7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0t LS0tLS0KKyAgICA0MDAwCisoMSByb3cpCisKKy0tIHRlc3QgdGhlIHNlcXVlbmNlIGNoYW5n ZXMgYnkgc2V2ZXJhbCBzZXR2YWwoKSBjYWxscworU0VMRUNUIHNldHZhbCgndGVzdF9zZXF1 ZW5jZScsIDM1MDApOworIHNldHZhbCAKKy0tLS0tLS0tCisgICAzNTAwCisoMSByb3cpCisK K1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0t LQorICAgIDM1MTAKKygxIHJvdykKKworU0VMRUNUIHNldHZhbCgndGVzdF9zZXF1ZW5jZScs IDM1MDAsIHRydWUpOworIHNldHZhbCAKKy0tLS0tLS0tCisgICAzNTAwCisoMSByb3cpCisK K1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0t LQorICAgIDM1MTAKKygxIHJvdykKKworU0VMRUNUIHNldHZhbCgndGVzdF9zZXF1ZW5jZScs IDM1MDAsIGZhbHNlKTsKKyBzZXR2YWwgCistLS0tLS0tLQorICAgMzUwMAorKDEgcm93KQor CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0t LS0KKyAgICAzNTAwCisoMSByb3cpCisKKy0tIHNob3cgcmVzdWx0cyBhbmQgZHJvcCBzZXF1 ZW5jZQorU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3Jl Z3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lw LWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVkZS1zZXF1ZW5jZXMnLCAnMScpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIEJFR0lOCisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRy YW5zYWN0aW9uYWw6IDEgdmFsdWU6IDEKKyBDT01NSVQKKyBzZXF1ZW5jZSBwdWJsaWMudGVz dF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDogMCB2YWx1ZTogMzMKKyBCRUdJTgorIHNlcXVl bmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOiAxIHZhbHVlOiA0Cisg Q09NTUlUCisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6 IDAgdmFsdWU6IDMzNAorIEJFR0lOCisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6 IHRyYW5zYWN0aW9uYWw6IDEgdmFsdWU6IDQ2CisgQ09NTUlUCisgQkVHSU4KKyBzZXF1ZW5j ZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDogMSB2YWx1ZTogMTQKKyBD T01NSVQKKyBCRUdJTgorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2Fj dGlvbmFsOiAxIHZhbHVlOiA0MDAwCisgQ09NTUlUCisgc2VxdWVuY2UgcHVibGljLnRlc3Rf c2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6IDAgdmFsdWU6IDQzMjAKKyBzZXF1ZW5jZSBwdWJs aWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDogMCB2YWx1ZTogMzUwMAorIHNlcXVl bmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOiAwIHZhbHVlOiAzODMw Cisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6IDAgdmFs dWU6IDM1MDAKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25h bDogMCB2YWx1ZTogMzgzMAorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFu c2FjdGlvbmFsOiAwIHZhbHVlOiAzNTAwCisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVu Y2U6IHRyYW5zYWN0aW9uYWw6IDAgdmFsdWU6IDM4MjAKKygyNCByb3dzKQorCitEUk9QIFNF UVVFTkNFIHRlc3Rfc2VxdWVuY2U7CistLSByb2xsYmFjayBvbiBzZXF1ZW5jZSBjcmVhdGlv biBhbmQgdXBkYXRlCitCRUdJTjsKK0NSRUFURSBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlOwor Q1JFQVRFIFRBQkxFIHRlc3RfdGFibGUgKGEgSU5UKTsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0 X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0tLQorICAgICAgIDEKKygxIHJvdykK KworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0tLS0t LS0tCisgICAgICAgMgorKDEgcm93KQorCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5j ZScpOworIG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAgICAzCisoMSByb3cpCisKK1NFTEVD VCBzZXR2YWwoJ3Rlc3Rfc2VxdWVuY2UnLCAzMDAwKTsKKyBzZXR2YWwgCistLS0tLS0tLQor ICAgMzAwMAorKDEgcm93KQorCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOwor IG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAzMDAxCisoMSByb3cpCisKK1NFTEVDVCBuZXh0 dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0tLQorICAgIDMwMDIK KygxIHJvdykKKworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFs IAorLS0tLS0tLS0tCisgICAgMzAwMworKDEgcm93KQorCitBTFRFUiBTRVFVRU5DRSB0ZXN0 X3NlcXVlbmNlIFJFU1RBUlQgV0lUSCA2MDAwOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSBW QUxVRVMoIChTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpKSApOworU0VMRUNUIG5l eHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgNjAw MQorKDEgcm93KQorCitST0xMQkFDSzsKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9z bG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVk ZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJywgJ2luY2x1ZGUtc2VxdWVu Y2VzJywgJzEnKTsKKyBkYXRhIAorLS0tLS0tCisoMCByb3dzKQorCistLSByb2xsYmFjayBv biB0YWJsZSBjcmVhdGlvbiB3aXRoIHNlcmlhbCBjb2x1bW4KK0JFR0lOOworQ1JFQVRFIFRB QkxFIHRlc3RfdGFibGUgKGEgU0VSSUFMLCBiIElOVCk7CitJTlNFUlQgSU5UTyB0ZXN0X3Rh YmxlIChiKSBWQUxVRVMgKDEwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxV RVMgKDIwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDMwMCk7CitT RUxFQ1Qgc2V0dmFsKCd0ZXN0X3RhYmxlX2Ffc2VxJywgMzAwMCk7Cisgc2V0dmFsIAorLS0t LS0tLS0KKyAgIDMwMDAKKygxIHJvdykKKworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikg VkFMVUVTICg0MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg1MDAp OworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg2MDApOworQUxURVIgU0VR VUVOQ0UgdGVzdF90YWJsZV9hX3NlcSBSRVNUQVJUIFdJVEggNjAwMDsKK0lOU0VSVCBJTlRP IHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoNzAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUg KGIpIFZBTFVFUyAoODAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAo OTAwKTsKK1JPTExCQUNLOworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0 X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMn LCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVkZS1zZXF1ZW5jZXMnLCAn MScpOworIGRhdGEgCistLS0tLS0KKygwIHJvd3MpCisKKy0tIHJvbGxiYWNrIG9uIHRhYmxl IHdpdGggc2VyaWFsIGNvbHVtbgorQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGUgKGEgU0VSSUFM LCBiIElOVCk7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAo MTAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMjAwKTsKK0lOU0VS VCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMzAwKTsKK1NFTEVDVCBzZXR2YWwoJ3Rl c3RfdGFibGVfYV9zZXEnLCAzMDAwKTsKKyBzZXR2YWwgCistLS0tLS0tLQorICAgMzAwMAor KDEgcm93KQorCitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDQwMCk7CitJ TlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDUwMCk7CitJTlNFUlQgSU5UTyB0 ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDYwMCk7CitBTFRFUiBTRVFVRU5DRSB0ZXN0X3RhYmxl X2Ffc2VxIFJFU1RBUlQgV0lUSCA2MDAwOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikg VkFMVUVTICg3MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg4MDAp OworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg5MDApOworUk9MTEJBQ0s7 CistLSBjaGVjayB0YWJsZSBhbmQgc2VxdWVuY2UgdmFsdWVzIGFmdGVyIHJvbGxiYWNrCitT RUxFQ1QgKiBmcm9tIHRlc3RfdGFibGVfYV9zZXE7CisgbGFzdF92YWx1ZSB8IGxvZ19jbnQg fCBpc19jYWxsZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgICAg ICAgMzAwMyB8ICAgICAgMzAgfCB0CisoMSByb3cpCisKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0 X3RhYmxlX2Ffc2VxJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0tLQorICAgIDMwMDQKKygxIHJv dykKKworRFJPUCBUQUJMRSB0ZXN0X3RhYmxlOworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dp Y2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdp bmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVkZS1z ZXF1ZW5jZXMnLCAnMScpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEJFR0lOCisgc2Vx dWVuY2UgcHVibGljLnRlc3RfdGFibGVfYV9zZXE6IHRyYW5zYWN0aW9uYWw6IDEgdmFsdWU6 IDEKKyBDT01NSVQKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF90YWJsZV9hX3NlcTogdHJhbnNh Y3Rpb25hbDogMCB2YWx1ZTogMzMKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF90YWJsZV9hX3Nl cTogdHJhbnNhY3Rpb25hbDogMCB2YWx1ZTogMzAwMAorIHNlcXVlbmNlIHB1YmxpYy50ZXN0 X3RhYmxlX2Ffc2VxOiB0cmFuc2FjdGlvbmFsOiAwIHZhbHVlOiAzMDMzCisoNiByb3dzKQor CistLSBzYXZlcG9pbnQgdGVzdCBvbiB0YWJsZSB3aXRoIHNlcmlhbCBjb2x1bW4KK0JFR0lO OworQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGUgKGEgU0VSSUFMLCBiIElOVCk7CitJTlNFUlQg SU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDEwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3Rh YmxlIChiKSBWQUxVRVMgKDIwMCk7CitTQVZFUE9JTlQgYTsKK0lOU0VSVCBJTlRPIHRlc3Rf dGFibGUgKGIpIFZBTFVFUyAoMzAwKTsKK1JPTExCQUNLIFRPIFNBVkVQT0lOVCBhOworRFJP UCBUQUJMRSB0ZXN0X3RhYmxlOworQ09NTUlUOworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dp Y2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdp bmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVkZS1z ZXF1ZW5jZXMnLCAnMScpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQkVHSU4KKyBzZXF1ZW5j ZSBwdWJsaWMudGVzdF90YWJsZV9hX3NlcTogdHJhbnNhY3Rpb25hbDogMSB2YWx1ZTogMQor IHNlcXVlbmNlIHB1YmxpYy50ZXN0X3RhYmxlX2Ffc2VxOiB0cmFuc2FjdGlvbmFsOiAxIHZh bHVlOiAzMworIHRhYmxlIHB1YmxpYy50ZXN0X3RhYmxlOiBJTlNFUlQ6IGFbaW50ZWdlcl06 MSBiW2ludGVnZXJdOjEwMAorIHRhYmxlIHB1YmxpYy50ZXN0X3RhYmxlOiBJTlNFUlQ6IGFb aW50ZWdlcl06MiBiW2ludGVnZXJdOjIwMAorIENPTU1JVAorKDYgcm93cykKKworLS0gc2F2 ZXBvaW50IHRlc3Qgb24gdGFibGUgd2l0aCBzZXJpYWwgY29sdW1uCitCRUdJTjsKK0NSRUFU RSBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVu Y2UnKTsKKyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgICAgMQorKDEgcm93KQorCitTRUxF Q1Qgc2V0dmFsKCd0ZXN0X3NlcXVlbmNlJywgMzAwMCk7Cisgc2V0dmFsIAorLS0tLS0tLS0K KyAgIDMwMDAKKygxIHJvdykKKworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsK KyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgMzAwMQorKDEgcm93KQorCitTQVZFUE9JTlQg YTsKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2UgU1RBUlQgV0lUSCA3MDAwOworU0VM RUNUIHNldHZhbCgndGVzdF9zZXF1ZW5jZScsIDUwMDApOworIHNldHZhbCAKKy0tLS0tLS0t CisgICA1MDAwCisoMSByb3cpCisKK1JPTExCQUNLIFRPIFNBVkVQT0lOVCBhOworU0VMRUNU ICogRlJPTSB0ZXN0X3NlcXVlbmNlOworIGxhc3RfdmFsdWUgfCBsb2dfY250IHwgaXNfY2Fs bGVkIAorLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAgICAgIDMwMDEg fCAgICAgIDMyIHwgdAorKDEgcm93KQorCitEUk9QIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2U7 CitDT01NSVQ7CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdl cygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywg J3NraXAtZW1wdHkteGFjdHMnLCAnMScsICdpbmNsdWRlLXNlcXVlbmNlcycsICcxJyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgQkVHSU4KKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5j ZTogdHJhbnNhY3Rpb25hbDogMSB2YWx1ZTogMQorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3Nl cXVlbmNlOiB0cmFuc2FjdGlvbmFsOiAxIHZhbHVlOiAzMworIHNlcXVlbmNlIHB1YmxpYy50 ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOiAxIHZhbHVlOiAzMDAwCisgc2VxdWVuY2Ug cHVibGljLnRlc3Rfc2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6IDEgdmFsdWU6IDMwMzMKKyBD T01NSVQKKyg2IHJvd3MpCisKK1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3Jl Z3Jlc3Npb25fc2xvdCcpOworIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL2NvbnRyaWIv dGVzdF9kZWNvZGluZy9zcWwvc2VxdWVuY2Uuc3FsIGIvY29udHJpYi90ZXN0X2RlY29kaW5n L3NxbC9zZXF1ZW5jZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmMxOWE1ZDUwNzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi90ZXN0X2RlY29k aW5nL3NxbC9zZXF1ZW5jZS5zcWwKQEAgLTAsMCArMSwxMTkgQEAKKy0tIHByZWRpY3RhYmls aXR5CitTRVQgc3luY2hyb25vdXNfY29tbWl0ID0gb247CitTRUxFQ1QgJ2luaXQnIEZST00g cGdfY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lvbl9zbG90Jywg J3Rlc3RfZGVjb2RpbmcnKTsKKworQ1JFQVRFIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2U7CisK Ky0tIHRlc3QgdGhlIHNlcXVlbmNlIGNoYW5nZXMgYnkgc2V2ZXJhbCBuZXh0dmFsKCkgY2Fs bHMKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitTRUxFQ1QgbmV4dHZhbCgn dGVzdF9zZXF1ZW5jZScpOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKK1NF TEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisKKy0tIHRlc3QgdGhlIHNlcXVlbmNl IGNoYW5nZXMgYnkgc2V2ZXJhbCBBTFRFUiBjb21tYW5kcworQUxURVIgU0VRVUVOQ0UgdGVz dF9zZXF1ZW5jZSBJTkNSRU1FTlQgQlkgMTA7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1 ZW5jZScpOworCitBTFRFUiBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlIFNUQVJUIFdJVEggMzAw MDsKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2UgTUFYVkFMVUUgMTAwMDA7CitBTFRF UiBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlIFJFU1RBUlQgV0lUSCA0MDAwOworU0VMRUNUIG5l eHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKworLS0gdGVzdCB0aGUgc2VxdWVuY2UgY2hhbmdl cyBieSBzZXZlcmFsIHNldHZhbCgpIGNhbGxzCitTRUxFQ1Qgc2V0dmFsKCd0ZXN0X3NlcXVl bmNlJywgMzUwMCk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworU0VMRUNU IHNldHZhbCgndGVzdF9zZXF1ZW5jZScsIDM1MDAsIHRydWUpOworU0VMRUNUIG5leHR2YWwo J3Rlc3Rfc2VxdWVuY2UnKTsKK1NFTEVDVCBzZXR2YWwoJ3Rlc3Rfc2VxdWVuY2UnLCAzNTAw LCBmYWxzZSk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworCistLSBzaG93 IHJlc3VsdHMgYW5kIGRyb3Agc2VxdWVuY2UKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNh bF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5j bHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJywgJ2luY2x1ZGUtc2Vx dWVuY2VzJywgJzEnKTsKK0RST1AgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZTsKKworLS0gcm9s bGJhY2sgb24gc2VxdWVuY2UgY3JlYXRpb24gYW5kIHVwZGF0ZQorQkVHSU47CitDUkVBVEUg U0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZTsKK0NSRUFURSBUQUJMRSB0ZXN0X3RhYmxlIChhIElO VCk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworU0VMRUNUIG5leHR2YWwo J3Rlc3Rfc2VxdWVuY2UnKTsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitT RUxFQ1Qgc2V0dmFsKCd0ZXN0X3NlcXVlbmNlJywgMzAwMCk7CitTRUxFQ1QgbmV4dHZhbCgn dGVzdF9zZXF1ZW5jZScpOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKK1NF TEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitBTFRFUiBTRVFVRU5DRSB0ZXN0X3Nl cXVlbmNlIFJFU1RBUlQgV0lUSCA2MDAwOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSBWQUxV RVMoIChTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpKSApOworU0VMRUNUIG5leHR2 YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKK1JPTExCQUNLOworU0VMRUNUIGRhdGEgRlJPTSBwZ19s b2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEws ICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnaW5jbHVk ZS1zZXF1ZW5jZXMnLCAnMScpOworCistLSByb2xsYmFjayBvbiB0YWJsZSBjcmVhdGlvbiB3 aXRoIHNlcmlhbCBjb2x1bW4KK0JFR0lOOworQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGUgKGEg U0VSSUFMLCBiIElOVCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDEw MCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDIwMCk7CitJTlNFUlQg SU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDMwMCk7CitTRUxFQ1Qgc2V0dmFsKCd0ZXN0 X3RhYmxlX2Ffc2VxJywgMzAwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxV RVMgKDQwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDUwMCk7CitJ TlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDYwMCk7CitBTFRFUiBTRVFVRU5D RSB0ZXN0X3RhYmxlX2Ffc2VxIFJFU1RBUlQgV0lUSCA2MDAwOworSU5TRVJUIElOVE8gdGVz dF90YWJsZSAoYikgVkFMVUVTICg3MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikg VkFMVUVTICg4MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg5MDAp OworUk9MTEJBQ0s7CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hh bmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcw JywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScsICdpbmNsdWRlLXNlcXVlbmNlcycsICcxJyk7 CisKKy0tIHJvbGxiYWNrIG9uIHRhYmxlIHdpdGggc2VyaWFsIGNvbHVtbgorQ1JFQVRFIFRB QkxFIHRlc3RfdGFibGUgKGEgU0VSSUFMLCBiIElOVCk7CisKK0JFR0lOOworSU5TRVJUIElO VE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICgxMDApOworSU5TRVJUIElOVE8gdGVzdF90YWJs ZSAoYikgVkFMVUVTICgyMDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVT ICgzMDApOworU0VMRUNUIHNldHZhbCgndGVzdF90YWJsZV9hX3NlcScsIDMwMDApOworSU5T RVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg0MDApOworSU5TRVJUIElOVE8gdGVz dF90YWJsZSAoYikgVkFMVUVTICg1MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikg VkFMVUVTICg2MDApOworQUxURVIgU0VRVUVOQ0UgdGVzdF90YWJsZV9hX3NlcSBSRVNUQVJU IFdJVEggNjAwMDsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoNzAwKTsK K0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoODAwKTsKK0lOU0VSVCBJTlRP IHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoOTAwKTsKK1JPTExCQUNLOworCistLSBjaGVjayB0 YWJsZSBhbmQgc2VxdWVuY2UgdmFsdWVzIGFmdGVyIHJvbGxiYWNrCitTRUxFQ1QgKiBmcm9t IHRlc3RfdGFibGVfYV9zZXE7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF90YWJsZV9hX3NlcScp OworCitEUk9QIFRBQkxFIHRlc3RfdGFibGU7CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2lj YWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2lu Y2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScsICdpbmNsdWRlLXNl cXVlbmNlcycsICcxJyk7CisKKy0tIHNhdmVwb2ludCB0ZXN0IG9uIHRhYmxlIHdpdGggc2Vy aWFsIGNvbHVtbgorQkVHSU47CitDUkVBVEUgVEFCTEUgdGVzdF90YWJsZSAoYSBTRVJJQUws IGIgSU5UKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMTAwKTsKK0lO U0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMjAwKTsKK1NBVkVQT0lOVCBhOwor SU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICgzMDApOworUk9MTEJBQ0sgVE8g U0FWRVBPSU5UIGE7CitEUk9QIFRBQkxFIHRlc3RfdGFibGU7CitDT01NSVQ7CitTRUxFQ1Qg ZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90 JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMn LCAnMScsICdpbmNsdWRlLXNlcXVlbmNlcycsICcxJyk7CisKKy0tIHNhdmVwb2ludCB0ZXN0 IG9uIHRhYmxlIHdpdGggc2VyaWFsIGNvbHVtbgorQkVHSU47CitDUkVBVEUgU0VRVUVOQ0Ug dGVzdF9zZXF1ZW5jZTsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitTRUxF Q1Qgc2V0dmFsKCd0ZXN0X3NlcXVlbmNlJywgMzAwMCk7CitTRUxFQ1QgbmV4dHZhbCgndGVz dF9zZXF1ZW5jZScpOworU0FWRVBPSU5UIGE7CitBTFRFUiBTRVFVRU5DRSB0ZXN0X3NlcXVl bmNlIFNUQVJUIFdJVEggNzAwMDsKK1NFTEVDVCBzZXR2YWwoJ3Rlc3Rfc2VxdWVuY2UnLCA1 MDAwKTsKK1JPTExCQUNLIFRPIFNBVkVQT0lOVCBhOworU0VMRUNUICogRlJPTSB0ZXN0X3Nl cXVlbmNlOworRFJPUCBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlOworQ09NTUlUOworU0VMRUNU IGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xv dCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3Rz JywgJzEnLCAnaW5jbHVkZS1zZXF1ZW5jZXMnLCAnMScpOworCitTRUxFQ1QgcGdfZHJvcF9y ZXBsaWNhdGlvbl9zbG90KCdyZWdyZXNzaW9uX3Nsb3QnKTsKZGlmZiAtLWdpdCBhL2NvbnRy aWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMgYi9jb250cmliL3Rlc3RfZGVjb2Rp bmcvdGVzdF9kZWNvZGluZy5jCmluZGV4IDI4OGZkMGJiNGFiLi4wYTc4MWVkZmZjMSAxMDA2 NDQKLS0tIGEvY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYworKysgYi9j b250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jCkBAIC0yOSw2ICsyOSw3IEBA IHR5cGVkZWYgc3RydWN0CiAJTWVtb3J5Q29udGV4dCBjb250ZXh0OwogCWJvb2wJCWluY2x1 ZGVfeGlkczsKIAlib29sCQlpbmNsdWRlX3RpbWVzdGFtcDsKKwlib29sCQlpbmNsdWRlX3Nl cXVlbmNlczsKIAlib29sCQlza2lwX2VtcHR5X3hhY3RzOwogCWJvb2wJCW9ubHlfbG9jYWw7 CiB9IFRlc3REZWNvZGluZ0RhdGE7CkBAIC03Miw2ICs3MywxMCBAQCBzdGF0aWMgdm9pZCBw Z19kZWNvZGVfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJ ICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIgbHNuLAogCQkJCQkJCSAgYm9v bCB0cmFuc2FjdGlvbmFsLCBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkJCQkJICBTaXplIHN6 LCBjb25zdCBjaGFyICptZXNzYWdlKTsKK3N0YXRpYyB2b2lkIHBnX2RlY29kZV9zZXF1ZW5j ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJCQkJICAgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLCBYTG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwKKwkJCQkJCQkgICBSZWxhdGlv biByZWwsIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCQkgICBpbnQ2NCB2YWx1ZSk7CiBz dGF0aWMgYm9vbCBwZ19kZWNvZGVfZmlsdGVyX3ByZXBhcmUoTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAogCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJIGNv bnN0IGNoYXIgKmdpZCk7CkBAIC0xMTIsNiArMTE3LDEwIEBAIHN0YXRpYyB2b2lkIHBnX2Rl Y29kZV9zdHJlYW1fbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJ CQkJCQkgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRyIGxzbiwKIAkJCQkJCQkJ CSBib29sIHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJCQkJCQkJCSBT aXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdlKTsKK3N0YXRpYyB2b2lkIHBnX2RlY29kZV9z dHJlYW1fc2VxdWVuY2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJCQkJ ICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNuLAorCQkJ CQkJCQkJICBSZWxhdGlvbiByZWwsIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCQkJCSAg aW50NjQgdmFsdWUpOwogc3RhdGljIHZvaWQgcGdfZGVjb2RlX3N0cmVhbV90cnVuY2F0ZShM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJCQkgIFJlb3JkZXJCdWZmZXJU WE4gKnR4biwKIAkJCQkJCQkJCSAgaW50IG5yZWxhdGlvbnMsIFJlbGF0aW9uIHJlbGF0aW9u c1tdLApAQCAtMTM1LDYgKzE0NCw3IEBAIF9QR19vdXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0 UGx1Z2luQ2FsbGJhY2tzICpjYikKIAljYi0+ZmlsdGVyX2J5X29yaWdpbl9jYiA9IHBnX2Rl Y29kZV9maWx0ZXI7CiAJY2ItPnNodXRkb3duX2NiID0gcGdfZGVjb2RlX3NodXRkb3duOwog CWNiLT5tZXNzYWdlX2NiID0gcGdfZGVjb2RlX21lc3NhZ2U7CisJY2ItPnNlcXVlbmNlX2Ni ID0gcGdfZGVjb2RlX3NlcXVlbmNlOwogCWNiLT5maWx0ZXJfcHJlcGFyZV9jYiA9IHBnX2Rl Y29kZV9maWx0ZXJfcHJlcGFyZTsKIAljYi0+YmVnaW5fcHJlcGFyZV9jYiA9IHBnX2RlY29k ZV9iZWdpbl9wcmVwYXJlX3R4bjsKIAljYi0+cHJlcGFyZV9jYiA9IHBnX2RlY29kZV9wcmVw YXJlX3R4bjsKQEAgLTE0Nyw2ICsxNTcsNyBAQCBfUEdfb3V0cHV0X3BsdWdpbl9pbml0KE91 dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpCiAJY2ItPnN0cmVhbV9jb21taXRfY2IgPSBwZ19k ZWNvZGVfc3RyZWFtX2NvbW1pdDsKIAljYi0+c3RyZWFtX2NoYW5nZV9jYiA9IHBnX2RlY29k ZV9zdHJlYW1fY2hhbmdlOwogCWNiLT5zdHJlYW1fbWVzc2FnZV9jYiA9IHBnX2RlY29kZV9z dHJlYW1fbWVzc2FnZTsKKwljYi0+c3RyZWFtX3NlcXVlbmNlX2NiID0gcGdfZGVjb2RlX3N0 cmVhbV9zZXF1ZW5jZTsKIAljYi0+c3RyZWFtX3RydW5jYXRlX2NiID0gcGdfZGVjb2RlX3N0 cmVhbV90cnVuY2F0ZTsKIH0KIApAQCAtMTY4LDYgKzE3OSw3IEBAIHBnX2RlY29kZV9zdGFy dHVwKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAq b3B0LAogCWRhdGEtPmluY2x1ZGVfdGltZXN0YW1wID0gZmFsc2U7CiAJZGF0YS0+c2tpcF9l bXB0eV94YWN0cyA9IGZhbHNlOwogCWRhdGEtPm9ubHlfbG9jYWwgPSBmYWxzZTsKKwlkYXRh LT5pbmNsdWRlX3NlcXVlbmNlcyA9IGZhbHNlOwogCiAJY3R4LT5vdXRwdXRfcGx1Z2luX3By aXZhdGUgPSBkYXRhOwogCkBAIC0yNTksNiArMjcxLDE3IEBAIHBnX2RlY29kZV9zdGFydHVw KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0 LAogCQkJCQkJIGVycm1zZygiY291bGQgbm90IHBhcnNlIHZhbHVlIFwiJXNcIiBmb3IgcGFy YW1ldGVyIFwiJXNcIiIsCiAJCQkJCQkJCXN0clZhbChlbGVtLT5hcmcpLCBlbGVtLT5kZWZu YW1lKSkpOwogCQl9CisJCWVsc2UgaWYgKHN0cmNtcChlbGVtLT5kZWZuYW1lLCAiaW5jbHVk ZS1zZXF1ZW5jZXMiKSA9PSAwKQorCQl7CisKKwkJCWlmIChlbGVtLT5hcmcgPT0gTlVMTCkK KwkJCQlkYXRhLT5pbmNsdWRlX3NlcXVlbmNlcyA9IHRydWU7CisJCQllbHNlIGlmICghcGFy c2VfYm9vbChzdHJWYWwoZWxlbS0+YXJnKSwgJmRhdGEtPmluY2x1ZGVfc2VxdWVuY2VzKSkK KwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BB UkFNRVRFUl9WQUxVRSksCisJCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcGFyc2UgdmFsdWUg XCIlc1wiIGZvciBwYXJhbWV0ZXIgXCIlc1wiIiwKKwkJCQkJCQkJc3RyVmFsKGVsZW0tPmFy ZyksIGVsZW0tPmRlZm5hbWUpKSk7CisJCX0KIAkJZWxzZQogCQl7CiAJCQllcmVwb3J0KEVS Uk9SLApAQCAtNzYyLDYgKzc4NSwzOCBAQCBwZ19kZWNvZGVfbWVzc2FnZShMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIH0K IAorc3RhdGljIHZvaWQKK3BnX2RlY29kZV9zZXF1ZW5jZShMb2dpY2FsRGVjb2RpbmdDb250 ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkgICBYTG9nUmVjUHRyIHNl cXVlbmNlX2xzbiwgUmVsYXRpb24gcmVsLAorCQkJCSAgIGJvb2wgdHJhbnNhY3Rpb25hbCwK KwkJCQkgICBpbnQ2NCB2YWx1ZSkKK3sKKwlUZXN0RGVjb2RpbmdEYXRhICpkYXRhID0gY3R4 LT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CisJVGVzdERlY29kaW5nVHhuRGF0YSAqdHhuZGF0 YSA9IHR4bi0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCisJaWYgKCFkYXRhLT5pbmNsdWRl X3NlcXVlbmNlcykKKwkJcmV0dXJuOworCisJLyogb3V0cHV0IEJFR0lOIGlmIHdlIGhhdmVu J3QgeWV0LCBidXQgb25seSBmb3IgdGhlIHRyYW5zYWN0aW9uYWwgY2FzZSAqLworCWlmICh0 cmFuc2FjdGlvbmFsKQorCXsKKwkJaWYgKGRhdGEtPnNraXBfZW1wdHlfeGFjdHMgJiYgIXR4 bmRhdGEtPnhhY3Rfd3JvdGVfY2hhbmdlcykKKwkJeworCQkJcGdfb3V0cHV0X2JlZ2luKGN0 eCwgZGF0YSwgdHhuLCBmYWxzZSk7CisJCX0KKwkJdHhuZGF0YS0+eGFjdF93cm90ZV9jaGFu Z2VzID0gdHJ1ZTsKKwl9CisKKwlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVl KTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGN0eC0+b3V0LCAic2VxdWVuY2UgIik7CisJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjdHgtPm91dCwKKwkJCQkJCSAgIHF1b3RlX3F1YWxp ZmllZF9pZGVudGlmaWVyKGdldF9uYW1lc3BhY2VfbmFtZShnZXRfcmVsX25hbWVzcGFjZShS ZWxhdGlvbkdldFJlbGlkKHJlbCkpKSwKKwkJCQkJCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCkpKTsKKwlhcHBlbmRTdHJpbmdJbmZvKGN0eC0+b3V0LCAiOiB0cmFu c2FjdGlvbmFsOiAlZCB2YWx1ZTogIiBJTlQ2NF9GT1JNQVQsCisJCQkJCSB0cmFuc2FjdGlv bmFsLCB2YWx1ZSk7CisJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKK30KKwogc3Rh dGljIHZvaWQKIHBnX2RlY29kZV9zdHJlYW1fc3RhcnQoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LAogCQkJCQkgICBSZW9yZGVyQnVmZmVyVFhOICp0eG4pCkBAIC05NzQsNiArMTAy OSwzOCBAQCBwZ19kZWNvZGVfc3RyZWFtX21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LAogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiB9CiAKK3N0YXRpYyB2 b2lkCitwZ19kZWNvZGVfc3RyZWFtX3NlcXVlbmNlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJICBYTG9nUmVjUHRyIHNlcXVl bmNlX2xzbiwgUmVsYXRpb24gcmVsLAorCQkJCQkJICBib29sIHRyYW5zYWN0aW9uYWwsCisJ CQkJCQkgIGludDY0IHZhbHVlKQoreworCVRlc3REZWNvZGluZ0RhdGEgKmRhdGEgPSBjdHgt Pm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlUZXN0RGVjb2RpbmdUeG5EYXRhICp0eG5kYXRh ID0gdHhuLT5vdXRwdXRfcGx1Z2luX3ByaXZhdGU7CisKKwlpZiAoIWRhdGEtPmluY2x1ZGVf c2VxdWVuY2VzKQorCQlyZXR1cm47CisKKwkvKiBvdXRwdXQgQkVHSU4gaWYgd2UgaGF2ZW4n dCB5ZXQsIGJ1dCBvbmx5IGZvciB0aGUgdHJhbnNhY3Rpb25hbCBjYXNlICovCisJaWYgKHRy YW5zYWN0aW9uYWwpCisJeworCQlpZiAoZGF0YS0+c2tpcF9lbXB0eV94YWN0cyAmJiAhdHhu ZGF0YS0+eGFjdF93cm90ZV9jaGFuZ2VzKQorCQl7CisJCQlwZ19vdXRwdXRfc3RyZWFtX3N0 YXJ0KGN0eCwgZGF0YSwgdHhuLCBmYWxzZSk7CisJCX0KKwkJdHhuZGF0YS0+eGFjdF93cm90 ZV9jaGFuZ2VzID0gdHJ1ZTsKKwl9CisKKwlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4 LCB0cnVlKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGN0eC0+b3V0LCAic3RyZWFtaW5n IHNlcXVlbmNlICIpOworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoY3R4LT5vdXQsCisJCQkJ CQkgICBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihnZXRfbmFtZXNwYWNlX25hbWUoZ2V0 X3JlbF9uYW1lc3BhY2UoUmVsYXRpb25HZXRSZWxpZChyZWwpKSksCisJCQkJCQkJCQkJCQkJ ICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSk7CisJYXBwZW5kU3RyaW5nSW5mbyhj dHgtPm91dCwgIjogdHJhbnNhY3Rpb25hbDogJWQgdmFsdWU6ICIgSU5UNjRfRk9STUFULAor CQkJCQkgdHJhbnNhY3Rpb25hbCwgdmFsdWUpOworCU91dHB1dFBsdWdpbldyaXRlKGN0eCwg dHJ1ZSk7Cit9CisKIC8qCiAgKiBJbiBzdHJlYW1pbmcgbW9kZSwgd2UgZG9uJ3QgZGlzcGxh eSB0aGUgZGV0YWlsZWQgaW5mb3JtYXRpb24gb2YgVHJ1bmNhdGUuCiAgKiBTZWUgcGdfZGVj b2RlX3N0cmVhbV9jaGFuZ2UuCi0tIAoyLjQxLjAKCg== --------------q81gMYy3cJrdUAqlWBWL0vlY Content-Type: text/x-patch; charset=UTF-8; name="v20231128-0004-Add-decoding-of-sequences-to-built-in-repl.patch" Content-Disposition: attachment; filename*0="v20231128-0004-Add-decoding-of-sequences-to-built-in-repl.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlMjEwZWFjMWMzMzc0Y2E0OWZkY2QzZjAwNTNmNTgxNzU0ZmY5ZTM3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogU3VuLCAyNiBOb3YgMjAyMyAxNTo0MDoxNSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjMxMTI4IDQvOF0gQWRkIGRlY29kaW5nIG9mIHNlcXVlbmNlcyB0byBidWls dC1pbgogcmVwbGljYXRpb24KClRoaXMgY29tbWl0IGFkZHMgc3VwcG9ydCBmb3IgZGVjb2Rp bmcgb2Ygc2VxdWVuY2VzIHRvIHRoZSBidWlsdC1pbgpyZXBsaWNhdGlvbiAodGhlIGluZnJh c3RydWN0dXJlIHdhcyBhZGRlZCBieSBjb21taXQgMGRhOTJkYzUzMCkuCgpUaGUgc3ludGF4 IGFuZCBiZWhhdmlvciBtb3N0bHkgbWltaWNzIGhhbmRsaW5nIG9mIHRhYmxlcywgaS5lLiBh CnB1YmxpY2F0aW9uIG1heSBiZSBkZWZpbmVkIGFzIEZPUiBBTEwgU0VRVUVOQ0VTIChyZXBs aWNhdGluZyBhbGwKc2VxdWVuY2VzIGluIGEgZGF0YWJhc2UpLCBGT1IgQUxMIFNFUVVFTkNF UyBJTiBTQ0hFTUEgKHJlcGxpY2F0aW5nCmFsbCBzZXF1ZW5jZXMgaW4gYSBwYXJ0aWN1bGFy IHNjaGVtYSkgb3IgaW5kaXZpZHVhbCBzZXF1ZW5jZXMuCgpUbyBwdWJsaXNoIHNlcXVlbmNl IG1vZGlmaWNhdGlvbnMsIHRoZSBwdWJsaWNhdGlvbiBoYXMgdG8gaW5jbHVkZQonc2VxdWVu Y2UnIGFjdGlvbi4gVGhlIHByb3RvY29sIGlzIGV4dGVuZGVkIHdpdGggYSBuZXcgbWVzc2Fn ZSwKZGVzY3JpYmluZyBzZXF1ZW5jZSBpbmNyZW1lbnRzLgoKQSBuZXcgc3lzdGVtIHZpZXcg cGdfcHVibGljYXRpb25fc2VxdWVuY2VzIGxpc3RzIGFsbCB0aGUgc2VxdWVuY2VzCmFkZGVk IHRvIGEgcHVibGljYXRpb24sIGJvdGggZGlyZWN0bHkgYW5kIGluZGlyZWN0bHkuIFZhcmlv dXMgcHNxbApjb21tYW5kcyAoXGQgYW5kIFxkUnApIGFyZSBpbXByb3ZlZCB0byBhbHNvIGRp c3BsYXkgcHVibGljYXRpb25zCmluY2x1ZGluZyBhIGdpdmVuIHNlcXVlbmNlLCBvciBzZXF1 ZW5jZXMgaW5jbHVkZWQgaW4gYSBwdWJsaWNhdGlvbi4KCkF1dGhvcjogVG9tYXMgVm9uZHJh LCBDYXJ5IEh1YW5nLCBNYXNhaGlrbyBTYXdhZGEKUmV2aWV3ZWQtYnk6IEFzaHV0b3NoIEJh cGF0LCBBbWl0IEthcGlsYSwgUGV0ZXIgRWlzZW50cmF1dCwgQW1pdCBLYXBpbGEsCkhhbm51 IEtyb3NpbmcsIEFuZHJlcyBGcmV1bmQsIFBldHIgSmVsaW5laywgWmhpamllIEhvdQpEaXNj dXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2QwNDVmM2MyLTZjZmItMDZkMy01NTQwLWU2 M2MzMjBkZjhiY0BlbnRlcnByaXNlZGIuY29tCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdy LmVzL20vMTcxMGVkN2UxM2IuY2Q3MTc3NDYxNDMwNzQ2LjMzNzIyNjQ1NjI1NDM2MDc3ODFA aGlnaGdvLmNhCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FEMjFBb0R0S3Bk SmNIT0xqZlBRN1RtcEZxTkI1X18lM0RRX2cxZThPQlJyd1Q1TFAtJTNEZyU0MG1haWwuZ21h aWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAg ICAgIHwgICAxMCArCiBkb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCAgICAgICAgICAgICAg ICAgICAgfCAgIDgwICsrCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNn bWwgICAgICAgfCAgIDI1ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlv bi5zZ21sICAgICAgfCAgICA4ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNh dGlvbi5zZ21sICAgICAgfCAgIDUxICstCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNn bWwgICAgICAgICAgICAgICAgfCAgIDcxICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL29iamVj dGFkZHJlc3MuYyAgICAgICAgICAgfCAgIDQ1ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmMgICAgICAgICAgfCAgMzM2ICsrKysrLQogc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAxMCArCiBzcmMvYmFja2VuZC9j b21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICAgICAgfCAgNDIyICsrKysrLS0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgICAgICAgICAgICB8ICAyNDggKysrLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwgIDEwMSAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgICAgICAgIHwgICAg NCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwg ICA3MyArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICAg IHwgICA1NSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5j ICAgfCAgMTM1ICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YyAgICAgIHwgICA5NyArKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdv dXRwdXQuYyAgIHwgIDEwOCArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUu YyAgICAgICAgICAgIHwgICAyOCArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2Fj aGUuYyAgICAgICAgICAgIHwgICAgNSArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAg ICAgICAgICAgICAgICAgICAgIHwgICA2NCArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu aCAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJf cGdfZHVtcC5wbCAgICAgICAgICAgICAgfCAgIDQ3ICstCiBzcmMvYmluL3BzcWwvZGVzY3Jp YmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMjk3ICsrKy0tCiBzcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmMgICAgICAgICAgICAgICAgICAgfCAgIDM5ICstCiBzcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgIDEzICsKIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgICAgICB8ICAgMjYgKy0KIC4uLi9j YXRhbG9nL3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5oICAgICAgICB8ICAgMTAgKy0KIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggICAgICAgICAgICAgICB8ICAgIDEgKwog c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICAxMCAr LQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggICAgICAgIHwgICAx OSArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vYmplY3RfYWRkcmVzcy5vdXQgIHwg ICAyMCArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCAgICAgICAgICAg IHwgICAgNiArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQg ICAgIHwgMTA1NSArKysrKysrKysrKysrLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQgICAgICAgICAgIHwgICAgOCArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9v YmplY3RfYWRkcmVzcy5zcWwgICAgICAgfCAgICA1ICstCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9wdWJsaWNhdGlvbi5zcWwgICAgICAgICAgfCAgMjMxICsrKy0KIHNyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAzNF9zZXF1ZW5jZXMucGwgICAgICB8ICAyMDcgKysrKwogc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAgMSArCiAzOSBmaWxl cyBjaGFuZ2VkLCAzNDUyIGluc2VydGlvbnMoKyksIDUyMiBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzRfc2VxdWVuY2VzLnBs CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbAppbmRleCAzZWM3MzkxZWM1ZS4uZDYxZmEwMTQzMTYgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sCkBAIC02NDI1LDYgKzY0MjUsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVw bGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFj ZWFibGU+JmwKICAgICAgICBSZWZlcmVuY2UgdG8gc2NoZW1hCiAgICAgICA8L3BhcmE+PC9l bnRyeT4KICAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Cisg ICAgICAgPHN0cnVjdGZpZWxkPnBudHlwZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmNoYXI8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXRlcm1pbmVzIHdo aWNoIG9iamVjdCB0eXBlIGlzIGluY2x1ZGVkIGZyb20gdGhpcyBzY2hlbWEuCisgICAgICAg PGxpdGVyYWw+dDwvbGl0ZXJhbD4gZm9yIHRhYmxlcywgPGxpdGVyYWw+czwvbGl0ZXJhbD4g Zm9yIHNlcXVlbmNlcworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgogICAg IDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9wcm90b2NvbC5zZ21sIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKaW5k ZXggYWYzZjAxNmY3NDYuLmJmZmYxNWUwNDA3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cHJvdG9jb2wuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApAQCAtNjM3 Niw2ICs2Mzc2LDg2IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRh YmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFy bGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5IGlkPSJwcm90b2NvbC1sb2dpY2FscmVw LW1lc3NhZ2UtZm9ybWF0cy1TZXF1ZW5jZSI+CisgICAgPHRlcm0+U2VxdWVuY2U8L3Rlcm0+ CisgICAgPGxpc3RpdGVtPgorICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgICA8dGVybT5CeXRlMSgnWCcpPC90ZXJtPgorICAgICAgIDxsaXN0aXRl bT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBJZGVudGlmaWVzIHRoZSBtZXNzYWdlIGFz IGEgc2VxdWVuY2UgbWVzc2FnZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0 ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAg ICAgICA8dGVybT5JbnQzMiAoVHJhbnNhY3Rpb25JZCk8L3Rlcm0+CisgICAgICAgPGxpc3Rp dGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFhpZCBvZiB0aGUgdHJhbnNhY3Rpb24g KG9ubHkgcHJlc2VudCBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zKS4KKyAgICAgICAgIFRo aXMgZmllbGQgaXMgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24gMi4KKyAgICAg ICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4K KworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQ4ICgwKTwvdGVybT4K KyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgRmxhZ3M7IGN1 cnJlbnRseSB1bnVzZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgor ICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAg PHRlcm0+SW50NjQgKFhMb2dSZWNQdHIpPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAg ICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgTFNOIG9mIHRoZSBzZXF1ZW5jZSBpbmNyZW1l bnQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJs aXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+U3RyaW5n PC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBO YW1lc3BhY2UgKGVtcHR5IHN0cmluZyBmb3IgPGxpdGVyYWw+cGdfY2F0YWxvZzwvbGl0ZXJh bD4pLgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFy bGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPlN0cmlu ZzwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAg U2VxdWVuY2UgbmFtZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8 dGVybT5JbnQ4PC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+Cisg ICAgICAgICAxIGlmIHRoZSBzZXF1ZW5jZSB1cGRhdGUgaXMgdHJhbnNhY3Rpb25hbCwgMCBv dGhlcndpc2UuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAg PC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+ SW50NjQ8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAg ICAgIDxzdHJ1Y3RmaWVsZD52YWx1ZTwvc3RydWN0ZmllbGQ+IHZhbHVlIG9mIHRoZSBzZXF1 ZW5jZS4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zh cmxpc3RlbnRyeT4KKyAgICAgPC92YXJpYWJsZWxpc3Q+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5IGlkPSJwcm90b2NvbC1sb2dp Y2FscmVwLW1lc3NhZ2UtZm9ybWF0cy1UeXBlIj4KICAgICA8dGVybT5UeXBlPC90ZXJtPgog ICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVi bGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dt bAppbmRleCA0NGFlN2UwZTg3MS4uOGNhZjIxMzVmYzcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTMxLDcgKzMxLDkgQEAgQUxURVIgUFVCTElD QVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxl PiBSRU5BTUUgVE8gPHIKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3Bo cmFzZT4KIAogICAgIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkg XSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248 L3JlcGxhY2VhYmxlPiApIF0gWywgLi4uIF0KKyAgICBTRVFVRU5DRSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+c2VxdWVuY2VfbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBd CiAgICAgVEFCTEVTIElOIFNDSEVNQSB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9TQ0hFTUEgfSBbLCAuLi4g XQorICAgIFNFUVVFTkNFUyBJTiBTQ0hFTUEgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2VhYmxlPiB8IENVUlJFTlRfU0NIRU1BIH0gWywg Li4uIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KIApAQCAtNDQsMTMgKzQ2 LDEzIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgIDwvcGFyYT4KIAogICA8cGFy YT4KLSAgIFRoZSBmaXJzdCB0aHJlZSB2YXJpYW50cyBjaGFuZ2Ugd2hpY2ggdGFibGVzL3Nj aGVtYXMgYXJlIHBhcnQgb2YgdGhlCi0gICBwdWJsaWNhdGlvbi4gIFRoZSA8bGl0ZXJhbD5T RVQ8L2xpdGVyYWw+IGNsYXVzZSB3aWxsIHJlcGxhY2UgdGhlIGxpc3Qgb2YKLSAgIHRhYmxl cy9zY2hlbWFzIGluIHRoZSBwdWJsaWNhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbGlzdDsg dGhlIGV4aXN0aW5nCi0gICB0YWJsZXMvc2NoZW1hcyB0aGF0IHdlcmUgcHJlc2VudCBpbiB0 aGUgcHVibGljYXRpb24gd2lsbCBiZSByZW1vdmVkLiAgVGhlCi0gICA8bGl0ZXJhbD5BREQ8 L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5EUk9QPC9saXRlcmFsPiBjbGF1c2VzIHdpbGwgYWRk IGFuZAotICAgcmVtb3ZlIG9uZSBvciBtb3JlIHRhYmxlcy9zY2hlbWFzIGZyb20gdGhlIHB1 YmxpY2F0aW9uLiAgTm90ZSB0aGF0IGFkZGluZwotICAgdGFibGVzL3NjaGVtYXMgdG8gYSBw dWJsaWNhdGlvbiB0aGF0IGlzIGFscmVhZHkgc3Vic2NyaWJlZCB0byB3aWxsIHJlcXVpcmUg YW4KKyAgIFRoZSBmaXJzdCB0aHJlZSB2YXJpYW50cyBjaGFuZ2Ugd2hpY2ggb2JqZWN0cyAo dGFibGVzLCBzZXF1ZW5jZXMgb3Igc2NoZW1hcykKKyAgIGFyZSBwYXJ0IG9mIHRoZSBwdWJs aWNhdGlvbi4gIFRoZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IGNsYXVzZSB3aWxsIHJlcGxh Y2UKKyAgIHRoZSBsaXN0IG9mIG9iamVjdHMgaW4gdGhlIHB1YmxpY2F0aW9uIHdpdGggdGhl IHNwZWNpZmllZCBsaXN0OyB0aGUgZXhpc3RpbmcKKyAgIG9iamVjdHMgdGhhdCB3ZXJlIHBy ZXNlbnQgaW4gdGhlIHB1YmxpY2F0aW9uIHdpbGwgYmUgcmVtb3ZlZC4KKyAgIFRoZSA8bGl0 ZXJhbD5BREQ8L2xpdGVyYWw+IGFuZCA8bGl0ZXJhbD5EUk9QPC9saXRlcmFsPiBjbGF1c2Vz IHdpbGwgYWRkIGFuZAorICAgcmVtb3ZlIG9uZSBvciBtb3JlIG9iamVjdHMgZnJvbSB0aGUg cHVibGljYXRpb24uICBOb3RlIHRoYXQgYWRkaW5nIG9iamVjdHMKKyAgIHRvIGEgcHVibGlj YXRpb24gdGhhdCBpcyBhbHJlYWR5IHN1YnNjcmliZWQgdG8gd2lsbCByZXF1aXJlIGFuCiAg ICA8bGluayBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24tcGFyYW1zLXJlZnJlc2gt cHVibGljYXRpb24iPgogICAgPGxpdGVyYWw+QUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZS RVNIIFBVQkxJQ0FUSU9OPC9saXRlcmFsPjwvbGluaz4gYWN0aW9uIG9uIHRoZQogICAgc3Vi c2NyaWJpbmcgc2lkZSBpbiBvcmRlciB0byBiZWNvbWUgZWZmZWN0aXZlLiBOb3RlIGFsc28g dGhhdApAQCAtMTM4LDYgKzE0MCwxNSBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8cgog ICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRy eT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2VxdWVuY2Vf bmFtZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+ CisgICAgICBOYW1lIG9mIGFuIGV4aXN0aW5nIHNlcXVlbmNlLgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5 PgogICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFt ZTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDZkMzZmZjBkYzkwLi40NzllYzQ5 NTg5NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24u c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCkBA IC0xNTIsOCArMTUyLDggQEAgQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDwKICAgICA8bGlz dGl0ZW0+CiAgICAgIDxwYXJhPgogICAgICAgRmV0Y2ggbWlzc2luZyB0YWJsZSBpbmZvcm1h dGlvbiBmcm9tIHB1Ymxpc2hlci4gIFRoaXMgd2lsbCBzdGFydAotICAgICAgcmVwbGljYXRp b24gb2YgdGFibGVzIHRoYXQgd2VyZSBhZGRlZCB0byB0aGUgc3Vic2NyaWJlZC10byBwdWJs aWNhdGlvbnMKLSAgICAgIHNpbmNlIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3Jp cHRpb24iPgorICAgICAgcmVwbGljYXRpb24gb2YgdGFibGVzIGFuZCBzZXF1ZW5jZXMgdGhh dCB3ZXJlIGFkZGVkIHRvIHRoZSBzdWJzY3JpYmVkLXRvCisgICAgICBwdWJsaWNhdGlvbnMg c2luY2UgPGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbiI+CiAgICAgICA8 Y29tbWFuZD5DUkVBVEUgU1VCU0NSSVBUSU9OPC9jb21tYW5kPjwvbGluaz4gb3IKICAgICAg IHRoZSBsYXN0IGludm9jYXRpb24gb2YgPGNvbW1hbmQ+UkVGUkVTSCBQVUJMSUNBVElPTjwv Y29tbWFuZD4uCiAgICAgIDwvcGFyYT4KQEAgLTE3Miw4ICsxNzIsOCBAQCBBTFRFUiBTVUJT Q1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2Vh YmxlPiBSRU5BTUUgVE8gPAogICAgICAgICAgIFRoZSBkZWZhdWx0IGlzIDxsaXRlcmFsPnRy dWU8L2xpdGVyYWw+LgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+Ci0gICAg ICAgICAgUHJldmlvdXNseSBzdWJzY3JpYmVkIHRhYmxlcyBhcmUgbm90IGNvcGllZCwgZXZl biBpZiBhIHRhYmxlJ3Mgcm93Ci0gICAgICAgICAgZmlsdGVyIDxsaXRlcmFsPldIRVJFPC9s aXRlcmFsPiBjbGF1c2UgaGFzIHNpbmNlIGJlZW4gbW9kaWZpZWQuCisgICAgICAgICAgUHJl dmlvdXNseSBzdWJzY3JpYmVkIHRhYmxlcyBhbmQgc2VxdWVuY2VzIGFyZSBub3QgY29waWVk LCBldmVuIGlmIGEKKyAgICAgICAgICB0YWJsZSdzIHJvdyBmaWx0ZXIgPGxpdGVyYWw+V0hF UkU8L2xpdGVyYWw+IGNsYXVzZSBoYXMgc2luY2UgYmVlbiBtb2RpZmllZC4KICAgICAgICAg IDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgIFNlZSA8eHJlZiBsaW5rZW5k PSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLW5vdGVzIi8+IGZvciBkZXRhaWxzIG9mCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbAppbmRleCBmZDljNWRlYWM5 NS4uYmE1NzhlYjlhYTQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1 YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRp b24uc2dtbApAQCAtMjIsMTQgKzIyLDIxIEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgog IDxyZWZzeW5vcHNpc2Rpdj4KIDxzeW5vcHNpcz4KIENSRUFURSBQVUJMSUNBVElPTiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+Ci0gICAgWyBG T1IgQUxMIFRBQkxFUworICAgIFsgRk9SIEFMTCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+b2JqZWN0X3R5cGU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dCiAgICAgICB8IEZPUiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBs YWNlYWJsZT4gWywgLi4uIF0gXQogICAgIFsgV0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9wYXJhbWV0ZXI8L3JlcGxhY2VhYmxlPiBbPSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPl0gWywgLi4u IF0gKSBdCiAKKzxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm9iamVjdCB0eXBlPC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgorCisgICAg VEFCTEVTCisgICAgU0VRVUVOQ0VTCisKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+IGlzIG9u ZSBvZjo8L3BocmFzZT4KIAogICAgIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFss IC4uLiBdICkgXSBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4 cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIF0gWywgLi4uIF0KKyAgICBTRVFVRU5DRSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2VxdWVuY2VfbmFtZTwvcmVwbGFjZWFibGU+ IFsgKiBdIFssIC4uLiBdCiAgICAgVEFCTEVTIElOIFNDSEVNQSB7IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9T Q0hFTUEgfSBbLCAuLi4gXQorICAgIFNFUVVFTkNFUyBJTiBTQ0hFTUEgeyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2VhYmxlPiB8IENVUlJF TlRfU0NIRU1BIH0gWywgLi4uIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4K IApAQCAtMTE3LDIyICsxMjQsMzkgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICA8L2xpc3RpdGVt PgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVh dGVwdWJsaWNhdGlvbi1mb3Itc2VxdWVuY2UiPgorICAgIDx0ZXJtPjxsaXRlcmFsPkZPUiBT RVFVRU5DRTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIFNwZWNpZmllcyBhIGxpc3Qgb2Ygc2VxdWVuY2VzIHRvIGFkZCB0byB0aGUgcHVi bGljYXRpb24uCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4KKyAgICAgIFNwZWNpZnlp bmcgYSBzZXF1ZW5jZSB0aGF0IGlzIHBhcnQgb2YgYSBzY2hlbWEgc3BlY2lmaWVkIGJ5IDxs aXRlcmFsPkZPUgorICAgICAgQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IGlz IG5vdCBzdXBwb3J0ZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92 YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGVwdWJsaWNh dGlvbi1wYXJhbXMtZm9yLWFsbC10YWJsZXMiPgogICAgIDx0ZXJtPjxsaXRlcmFsPkZPUiBB TEwgVEFCTEVTPC9saXRlcmFsPjwvdGVybT4KKyAgICA8dGVybT48bGl0ZXJhbD5GT1IgQUxM IFNFUVVFTkNFUzwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFy YT4KLSAgICAgIE1hcmtzIHRoZSBwdWJsaWNhdGlvbiBhcyBvbmUgdGhhdCByZXBsaWNhdGVz IGNoYW5nZXMgZm9yIGFsbCB0YWJsZXMgaW4KLSAgICAgIHRoZSBkYXRhYmFzZSwgaW5jbHVk aW5nIHRhYmxlcyBjcmVhdGVkIGluIHRoZSBmdXR1cmUuCisgICAgICBNYXJrcyB0aGUgcHVi bGljYXRpb24gYXMgb25lIHRoYXQgcmVwbGljYXRlcyBjaGFuZ2VzIGZvciBhbGwgdGFibGVz IG9yCisgICAgICBzZXF1ZW5jZXMgaW4gdGhlIGRhdGFiYXNlLCBpbmNsdWRpbmcgdGFibGVz IGNyZWF0ZWQgaW4gdGhlIGZ1dHVyZS4KICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+ CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0 ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItdGFibGVzLWluLXNjaGVtYSI+CiAgICAgPHRlcm0+ PGxpdGVyYWw+Rk9SIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+PC90ZXJtPgorICAgIDx0 ZXJtPjxsaXRlcmFsPkZPUiBTRVFVRU5DRVMgSU4gU0NIRU1BPC9saXRlcmFsPjwvdGVybT4K ICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgotICAgICAgTWFya3MgdGhlIHB1YmxpY2F0 aW9uIGFzIG9uZSB0aGF0IHJlcGxpY2F0ZXMgY2hhbmdlcyBmb3IgYWxsIHRhYmxlcyBpbgot ICAgICAgdGhlIHNwZWNpZmllZCBsaXN0IG9mIHNjaGVtYXMsIGluY2x1ZGluZyB0YWJsZXMg Y3JlYXRlZCBpbiB0aGUgZnV0dXJlLgorICAgICAgTWFya3MgdGhlIHB1YmxpY2F0aW9uIGFz IG9uZSB0aGF0IHJlcGxpY2F0ZXMgY2hhbmdlcyBmb3IgYWxsIHRhYmxlcyBvcgorICAgICAg c2VxdWVuY2VzIGluIHRoZSBzcGVjaWZpZWQgbGlzdCBvZiBzY2hlbWFzLCBpbmNsdWRpbmcg dGFibGVzIG9yIHNlcXVlbmNlcworICAgICAgY3JlYXRlZCBpbiB0aGUgZnV0dXJlLgogICAg ICA8L3BhcmE+CiAKICAgICAgPHBhcmE+CkBAIC0yNDAsMTAgKzI2NCwxMiBAQCBDUkVBVEUg UFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxh Y2VhYmxlPgogICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgogCiAgIDxwYXJhPgotICAgSWYgPGxp dGVyYWw+Rk9SIFRBQkxFPC9saXRlcmFsPiwgPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xp dGVyYWw+IG9yCi0gICA8bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4g YXJlIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGhlCi0gICBwdWJsaWNhdGlvbiBzdGFydHMgb3V0 IHdpdGggYW4gZW1wdHkgc2V0IG9mIHRhYmxlcy4gIFRoYXQgaXMgdXNlZnVsIGlmCi0gICB0 YWJsZXMgb3Igc2NoZW1hcyBhcmUgdG8gYmUgYWRkZWQgbGF0ZXIuCisgICBJZiA8bGl0ZXJh bD5GT1IgVEFCTEU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5GT1IgU0VRVUVOQ0U8L2xpdGVyYWw+ LAorICAgPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+LCA8bGl0ZXJhbD5GT1Ig QUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4sCisgICA8bGl0ZXJhbD5GT1IgVEFCTEVTIElOIFND SEVNQTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+Rk9SIFNFUVVFTkNFUyBJTiBTQ0hFTUE8L2xp dGVyYWw+CisgICBhcmUgbm90IHNwZWNpZmllZCwgdGhlbiB0aGUgcHVibGljYXRpb24gc3Rh cnRzIG91dCB3aXRoIGFuIGVtcHR5IHNldAorICAgb2YgdGFibGVzL3NlcXVlbmNlcy4gIFRo YXQgaXMgdXNlZnVsIGlmIHRhYmxlcywgc2VxdWVuY2VzIG9yIHNjaGVtYXMKKyAgIGFyZSB0 byBiZSBhZGRlZCBsYXRlci4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpAQCAtMjU4LDkgKzI4 NCwxMCBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBUbyBh ZGQgYSB0YWJsZSB0byBhIHB1YmxpY2F0aW9uLCB0aGUgaW52b2tpbmcgdXNlciBtdXN0IGhh dmUgb3duZXJzaGlwCi0gICByaWdodHMgb24gdGhlIHRhYmxlLiAgVGhlIDxjb21tYW5kPkZP UiBBTEwgVEFCTEVTPC9jb21tYW5kPiBhbmQKLSAgIDxjb21tYW5kPkZPUiBUQUJMRVMgSU4g U0NIRU1BPC9jb21tYW5kPiBjbGF1c2VzIHJlcXVpcmUgdGhlIGludm9raW5nCisgICBUbyBh ZGQgYSB0YWJsZSBvciBhIHNlcXVlbmNlIHRvIGEgcHVibGljYXRpb24sIHRoZSBpbnZva2lu ZyB1c2VyIG11c3QKKyAgIGhhdmUgb3duZXJzaGlwIHJpZ2h0cyBvbiB0aGUgb2JqZWN0LiAg VGhlIDxjb21tYW5kPkZPUiBBTEwgVEFCTEVTPC9jb21tYW5kPiwKKyAgIDxjb21tYW5kPkZP UiBBTEwgU0VRVUVOQ0VTPC9jb21tYW5kPiwgPGNvbW1hbmQ+Rk9SIFRBQkxFUyBJTiBTQ0hF TUE8L2NvbW1hbmQ+CisgICBhbmQgPGNvbW1hbmQ+Rk9SIFNFUVVFTkNFUyBJTiBTQ0hFTUE8 L2NvbW1hbmQ+IGNsYXVzZXMgcmVxdWlyZSB0aGUgaW52b2tpbmcKICAgIHVzZXIgdG8gYmUg YSBzdXBlcnVzZXIuCiAgIDwvcGFyYT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5 c3RlbS12aWV3cy5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCmluZGV4 IDBlZjE3NDU2MzE4Li45MjUxMDVjZDU4OCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3N5 c3RlbS12aWV3cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbApA QCAtMTI2LDYgKzEyNiwxMSBAQAogICAgICAgPGVudHJ5PnByZXBhcmVkIHRyYW5zYWN0aW9u czwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxp bmsgbGlua2VuZD0idmlldy1wZy1wdWJsaWNhdGlvbi1zZXF1ZW5jZXMiPjxzdHJ1Y3RuYW1l PnBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczwvc3RydWN0bmFtZT48L2xpbms+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT5wdWJsaWNhdGlvbnMgYW5kIGluZm9ybWF0aW9uIG9mIHRoZWlyIGFz c29jaWF0ZWQgc2VxdWVuY2VzPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4K ICAgICAgIDxlbnRyeT48bGluayBsaW5rZW5kPSJ2aWV3LXBnLXB1YmxpY2F0aW9uLXRhYmxl cyI+PHN0cnVjdG5hbWU+cGdfcHVibGljYXRpb25fdGFibGVzPC9zdHJ1Y3RuYW1lPjwvbGlu az48L2VudHJ5PgogICAgICAgPGVudHJ5PnB1YmxpY2F0aW9ucyBhbmQgaW5mb3JtYXRpb24g b2YgdGhlaXIgYXNzb2NpYXRlZCB0YWJsZXM8L2VudHJ5PgpAQCAtMjEzOCw2ICsyMTQzLDcy IEBAIFNFTEVDVCAqIEZST00gcGdfbG9ja3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBhcmVkX3hh Y3RzIHBweAogCiAgPC9zZWN0MT4KIAorIDxzZWN0MSBpZD0idmlldy1wZy1wdWJsaWNhdGlv bi1zZXF1ZW5jZXMiPgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcHVibGljYXRpb25fc2Vx dWVuY2VzPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJ2aWV3 LXBnLXB1YmxpY2F0aW9uLXNlcXVlbmNlcyI+CisgICA8cHJpbWFyeT5wZ19wdWJsaWNhdGlv bl9zZXF1ZW5jZXM8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAg VGhlIHZpZXcgPHN0cnVjdG5hbWU+cGdfcHVibGljYXRpb25fc2VxdWVuY2VzPC9zdHJ1Y3Ru YW1lPiBwcm92aWRlcworICAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1hcHBpbmcgYmV0d2Vl biBwdWJsaWNhdGlvbnMgYW5kIGluZm9ybWF0aW9uIG9mCisgICBzZXF1ZW5jZXMgdGhleSBj b250YWluLiAgVW5saWtlIHRoZSB1bmRlcmx5aW5nIGNhdGFsb2cKKyAgIDxsaW5rIGxpbmtl bmQ9ImNhdGFsb2ctcGctcHVibGljYXRpb24tcmVsIj48c3RydWN0bmFtZT5wZ19wdWJsaWNh dGlvbl9yZWw8L3N0cnVjdG5hbWU+PC9saW5rPiwKKyAgIHRoaXMgdmlldyBleHBhbmRzIHB1 YmxpY2F0aW9ucyBkZWZpbmVkIGFzIDxsaXRlcmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9saXRl cmFsPgorICAgYW5kIDxsaXRlcmFsPkZPUiBTRVFVRU5DRVMgSU4gU0NIRU1BPC9saXRlcmFs Piwgc28gZm9yIHN1Y2ggcHVibGljYXRpb25zCisgICB0aGVyZSB3aWxsIGJlIGEgcm93IGZv ciBlYWNoIGVsaWdpYmxlIHNlcXVlbmNlLgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAg PHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczwvc3RydWN0bmFt ZT4gQ29sdW1uczwvdGl0bGU+CisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0aGVhZD4K KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5cGUKKyAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAgIDx0Ym9k eT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxk PnB1Ym5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT5uYW1lPC90eXBlPgorICAgICAgIChyZWZl cmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctcHVibGljYXRpb24iPjxzdHJ1Y3Ru YW1lPnBnX3B1YmxpY2F0aW9uPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPnB1 Ym5hbWU8L3N0cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIE5hbWUgb2YgcHVibGljYXRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVf ZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0 ZmllbGQ+c2NoZW1hbmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPm5hbWU8L3R5cGU+CisgICAg ICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1uYW1lc3BhY2UiPjxz dHJ1Y3RuYW1lPnBnX25hbWVzcGFjZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVs ZD5uc3BuYW1lPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4K KyAgICAgICBOYW1lIG9mIHNjaGVtYSBjb250YWluaW5nIHNlcXVlbmNlCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPnNlcXVlbmNlbmFtZTwvc3RydWN0ZmllbGQ+IDx0 eXBlPm5hbWU8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2VuZD0iY2F0 YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdfY2xhc3M8L3N0cnVjdG5hbWU+PC9saW5r Pi48c3RydWN0ZmllbGQ+cmVsbmFtZTwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiBzZXF1ZW5jZQorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAgPC90 YWJsZT4KKyA8L3NlY3QxPgorCiAgPHNlY3QxIGlkPSJ2aWV3LXBnLXB1YmxpY2F0aW9uLXRh YmxlcyI+CiAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wdWJsaWNhdGlvbl90YWJsZXM8L3N0 cnVjdG5hbWU+PC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9v YmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYwpp bmRleCBiYjRlZmNhZDIwMi4uYzE1NWNkNTdhNzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2Jq ZWN0YWRkcmVzcy5jCkBAIC0xOTY0LDEyICsxOTY0LDE0IEBAIGdldF9vYmplY3RfYWRkcmVz c19wdWJsaWNhdGlvbl9zY2hlbWEoTGlzdCAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spCiAJ Y2hhcgkgICAqcHVibmFtZTsKIAljaGFyCSAgICpzY2hlbWFuYW1lOwogCU9pZAkJCXNjaGVt YWlkOworCWNoYXIJICAgKm9ianR5cGU7CiAKIAlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3Ms IFB1YmxpY2F0aW9uTmFtZXNwYWNlUmVsYXRpb25JZCwgSW52YWxpZE9pZCk7CiAKIAkvKiBG ZXRjaCBzY2hlbWEgbmFtZSBhbmQgcHVibGljYXRpb24gbmFtZSBmcm9tIGlucHV0IGxpc3Qg Ki8KIAlzY2hlbWFuYW1lID0gc3RyVmFsKGxpbml0aWFsKG9iamVjdCkpOwogCXB1Ym5hbWUg PSBzdHJWYWwobHNlY29uZChvYmplY3QpKTsKKwlvYmp0eXBlID0gc3RyVmFsKGx0aGlyZChv YmplY3QpKTsKIAogCXNjaGVtYWlkID0gZ2V0X25hbWVzcGFjZV9vaWQoc2NoZW1hbmFtZSwg bWlzc2luZ19vayk7CiAJaWYgKCFPaWRJc1ZhbGlkKHNjaGVtYWlkKSkKQEAgLTE5ODIsMTAg KzE5ODQsMTIgQEAgZ2V0X29iamVjdF9hZGRyZXNzX3B1YmxpY2F0aW9uX3NjaGVtYShMaXN0 ICpvYmplY3QsIGJvb2wgbWlzc2luZ19vaykKIAogCS8qIEZpbmQgdGhlIHB1YmxpY2F0aW9u IHNjaGVtYSBtYXBwaW5nIGluIHN5c2NhY2hlICovCiAJYWRkcmVzcy5vYmplY3RJZCA9Ci0J CUdldFN5c0NhY2hlT2lkMihQVUJMSUNBVElPTk5BTUVTUEFDRU1BUCwKKwkJR2V0U3lzQ2Fj aGVPaWQzKFBVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAogCQkJCQkJQW51bV9wZ19wdWJsaWNh dGlvbl9uYW1lc3BhY2Vfb2lkLAogCQkJCQkJT2JqZWN0SWRHZXREYXR1bShzY2hlbWFpZCks Ci0JCQkJCQlPYmplY3RJZEdldERhdHVtKHB1Yi0+b2lkKSk7CisJCQkJCQlPYmplY3RJZEdl dERhdHVtKHB1Yi0+b2lkKSwKKwkJCQkJCUNoYXJHZXREYXR1bShvYmp0eXBlWzBdKSk7CisK IAlpZiAoIU9pZElzVmFsaWQoYWRkcmVzcy5vYmplY3RJZCkgJiYgIW1pc3Npbmdfb2spCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNU KSwKQEAgLTIyNjAsNyArMjI2NCw2IEBAIHBnX2dldF9vYmplY3RfYWRkcmVzcyhQR19GVU5D VElPTl9BUkdTKQogCSAqLwogCXN3aXRjaCAodHlwZSkKIAl7Ci0JCWNhc2UgT0JKRUNUX1BV QkxJQ0FUSU9OX05BTUVTUEFDRToKIAkJY2FzZSBPQkpFQ1RfVVNFUl9NQVBQSU5HOgogCQkJ aWYgKGxpc3RfbGVuZ3RoKG5hbWUpICE9IDEpCiAJCQkJZXJlcG9ydChFUlJPUiwKQEAgLTIy OTMsNiArMjI5Niw3IEBAIHBnX2dldF9vYmplY3RfYWRkcmVzcyhQR19GVU5DVElPTl9BUkdT KQogCQkJCQkJIGVycm1zZygibmFtZSBsaXN0IGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVk IiwgMykpKTsKIAkJCS8qIGZhbGwgdGhyb3VnaCB0byBjaGVjayBhcmdzIGxlbmd0aCAqLwog CQkJLyogRkFMTFRIUk9VR0ggKi8KKwkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFNRVNQ QUNFOgogCQljYXNlIE9CSkVDVF9PUEVSQVRPUjoKIAkJCWlmIChsaXN0X2xlbmd0aChhcmdz KSAhPSAyKQogCQkJCWVyZXBvcnQoRVJST1IsCkBAIC0yMzY1LDYgKzIzNjksOCBAQCBwZ19n ZXRfb2JqZWN0X2FkZHJlc3MoUEdfRlVOQ1RJT05fQVJHUykKIAkJCW9iam5vZGUgPSAoTm9k ZSAqKSBsaXN0X21ha2UyKG5hbWUsIGxpbml0aWFsKGFyZ3MpKTsKIAkJCWJyZWFrOwogCQlj YXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CisJCQlvYmpub2RlID0gKE5vZGUg KikgbGlzdF9tYWtlMyhsaW5pdGlhbChuYW1lKSwgbGluaXRpYWwoYXJncyksIGxzZWNvbmQo YXJncykpOworCQkJYnJlYWs7CiAJCWNhc2UgT0JKRUNUX1VTRVJfTUFQUElORzoKIAkJCW9i am5vZGUgPSAoTm9kZSAqKSBsaXN0X21ha2UyKGxpbml0aWFsKG5hbWUpLCBsaW5pdGlhbChh cmdzKSk7CiAJCQlicmVhazsKQEAgLTI4NjgsMTEgKzI4NzQsMTIgQEAgZ2V0X2NhdGFsb2df b2JqZWN0X2J5X29pZChSZWxhdGlvbiBjYXRhbG9nLCBBdHRyTnVtYmVyIG9pZGNvbCwgT2lk IG9iamVjdElkKQogICoKICAqIEdldCBwdWJsaWNhdGlvbiBuYW1lIGFuZCBzY2hlbWEgbmFt ZSBmcm9tIHRoZSBvYmplY3QgYWRkcmVzcyBpbnRvIHB1Ym5hbWUgYW5kCiAgKiBuc3BuYW1l LiBCb3RoIHB1Ym5hbWUgYW5kIG5zcG5hbWUgYXJlIHBhbGxvYydkIHN0cmluZ3Mgd2hpY2gg d2lsbCBiZSBmcmVlZCBieQotICogdGhlIGNhbGxlci4KKyAqIHRoZSBjYWxsZXIuIFRoZSBs YXN0IHBhcmFtZXRlciBzcGVjaWZpZXMgd2hpY2ggb2JqZWN0IHR5cGUgaXMgaW5jbHVkZWQg ZnJvbQorICogdGhlIHNjaGVtYS4KICAqLwogc3RhdGljIGJvb2wKIGdldFB1YmxpY2F0aW9u U2NoZW1hSW5mbyhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGJvb2wgbWlzc2luZ19v aywKLQkJCQkJCSBjaGFyICoqcHVibmFtZSwgY2hhciAqKm5zcG5hbWUpCisJCQkJCQkgY2hh ciAqKnB1Ym5hbWUsIGNoYXIgKipuc3BuYW1lLCBjaGFyICoqb2JqdHlwZSkKIHsKIAlIZWFw VHVwbGUJdHVwOwogCUZvcm1fcGdfcHVibGljYXRpb25fbmFtZXNwYWNlIHBuZm9ybTsKQEAg LTI5MDgsNiArMjkxNSwxNCBAQCBnZXRQdWJsaWNhdGlvblNjaGVtYUluZm8oY29uc3QgT2Jq ZWN0QWRkcmVzcyAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2ssCiAJCXJldHVybiBmYWxzZTsK IAl9CiAKKwkvKgorCSAqIFRoZSB0eXBlIGlzIGFsd2F5cyBhIHNpbmdsZSBjaGFyYWN0ZXIs IGJ1dCB3ZSBuZWVkIHRvIHBhc3MgaXQgYXMgYQorCSAqIHN0cmluZywgc28gYWxsb2NhdGUg dHdvIGNoYXJhdGVycyBhbmQgc2V0IHRoZSBmaXJzdCBvbmUuIFRoZSBzZWNvbmQgb25lCisJ ICogaXMgXDAuCisJICovCisJKm9ianR5cGUgPSBwYWxsb2MwKDIpOworCSpvYmp0eXBlWzBd ID0gcG5mb3JtLT5wbnR5cGU7CisKIAlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKIAlyZXR1cm4g dHJ1ZTsKIH0KQEAgLTM5NzgsMTUgKzM5OTMsMTcgQEAgZ2V0T2JqZWN0RGVzY3JpcHRpb24o Y29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spCiAJCQl7CiAJ CQkJY2hhcgkgICAqcHVibmFtZTsKIAkJCQljaGFyCSAgICpuc3BuYW1lOworCQkJCWNoYXIJ ICAgKm9ianR5cGU7CiAKIAkJCQlpZiAoIWdldFB1YmxpY2F0aW9uU2NoZW1hSW5mbyhvYmpl Y3QsIG1pc3Npbmdfb2ssCi0JCQkJCQkJCQkJCSAgJnB1Ym5hbWUsICZuc3BuYW1lKSkKKwkJ CQkJCQkJCQkJICAmcHVibmFtZSwgJm5zcG5hbWUsICZvYmp0eXBlKSkKIAkJCQkJYnJlYWs7 CiAKLQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInB1YmxpY2F0aW9uIG9mIHNj aGVtYSAlcyBpbiBwdWJsaWNhdGlvbiAlcyIpLAotCQkJCQkJCQkgbnNwbmFtZSwgcHVibmFt ZSk7CisJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVyLCBfKCJwdWJsaWNhdGlvbiBvZiBz Y2hlbWEgJXMgaW4gcHVibGljYXRpb24gJXMgdHlwZSAlcyIpLAorCQkJCQkJCQkgbnNwbmFt ZSwgcHVibmFtZSwgb2JqdHlwZSk7CiAJCQkJcGZyZWUocHVibmFtZSk7CiAJCQkJcGZyZWUo bnNwbmFtZSk7CisJCQkJcGZyZWUob2JqdHlwZSk7CiAJCQkJYnJlYWs7CiAJCQl9CiAKQEAg LTU4MzIsMTggKzU4NDksMjQgQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhjb25zdCBPYmpl Y3RBZGRyZXNzICpvYmplY3QsCiAJCQl7CiAJCQkJY2hhcgkgICAqcHVibmFtZTsKIAkJCQlj aGFyCSAgICpuc3BuYW1lOworCQkJCWNoYXIJICAgKm9ianR5cGU7CiAKIAkJCQlpZiAoIWdl dFB1YmxpY2F0aW9uU2NoZW1hSW5mbyhvYmplY3QsIG1pc3Npbmdfb2ssICZwdWJuYW1lLAot CQkJCQkJCQkJCQkgICZuc3BuYW1lKSkKKwkJCQkJCQkJCQkJICAmbnNwbmFtZSwgJm9ianR5 cGUpKQogCQkJCQlicmVhazsKLQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsICIlcyBp biBwdWJsaWNhdGlvbiAlcyIsCi0JCQkJCQkJCSBuc3BuYW1lLCBwdWJuYW1lKTsKKwkJCQlh cHBlbmRTdHJpbmdJbmZvKCZidWZmZXIsICIlcyBpbiBwdWJsaWNhdGlvbiAlcyB0eXBlICVz IiwKKwkJCQkJCQkJIG5zcG5hbWUsIHB1Ym5hbWUsIG9ianR5cGUpOwogCiAJCQkJaWYgKG9i amFyZ3MpCiAJCQkJCSpvYmphcmdzID0gbGlzdF9tYWtlMShwdWJuYW1lKTsKIAkJCQllbHNl CiAJCQkJCXBmcmVlKHB1Ym5hbWUpOwogCisJCQkJaWYgKG9iamFyZ3MpCisJCQkJCSpvYmph cmdzID0gbGFwcGVuZCgqb2JqYXJncywgb2JqdHlwZSk7CisJCQkJZWxzZQorCQkJCQlwZnJl ZShvYmp0eXBlKTsKKwogCQkJCWlmIChvYmpuYW1lKQogCQkJCQkqb2JqbmFtZSA9IGxpc3Rf bWFrZTEobnNwbmFtZSk7CiAJCQkJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5jCmluZGV4IGM0ODhiNjM3MGI2Li5iYmNiY2U2MTcxOCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtNjMsOSArNjMsMTAgQEAgc3RhdGljIHZvaWQg cHVibGljYXRpb25fdHJhbnNsYXRlX2NvbHVtbnMoUmVsYXRpb24gdGFyZ2V0cmVsLCBMaXN0 ICpjb2x1bW5zLAogc3RhdGljIHZvaWQKIGNoZWNrX3B1YmxpY2F0aW9uX2FkZF9yZWxhdGlv bihSZWxhdGlvbiB0YXJnZXRyZWwpCiB7Ci0JLyogTXVzdCBiZSBhIHJlZ3VsYXIgb3IgcGFy dGl0aW9uZWQgdGFibGUgKi8KKwkvKiBNdXN0IGJlIGEgcmVndWxhciBvciBwYXJ0aXRpb25l ZCB0YWJsZSwgb3IgYSBzZXF1ZW5jZSAqLwogCWlmIChSZWxhdGlvbkdldEZvcm0odGFyZ2V0 cmVsKS0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmCi0JCVJlbGF0aW9uR2V0Rm9y bSh0YXJnZXRyZWwpLT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJ CVJlbGF0aW9uR2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElU SU9ORURfVEFCTEUgJiYKKwkJUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQg IT0gUkVMS0lORF9TRVFVRU5DRSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNnKCJjYW5ub3Qg YWRkIHJlbGF0aW9uIFwiJXNcIiB0byBwdWJsaWNhdGlvbiIsCkBAIC0xNDIsNyArMTQzLDgg QEAgc3RhdGljIGJvb2wKIGlzX3B1Ymxpc2hhYmxlX2NsYXNzKE9pZCByZWxpZCwgRm9ybV9w Z19jbGFzcyByZWx0dXBsZSkKIHsKIAlyZXR1cm4gKHJlbHR1cGxlLT5yZWxraW5kID09IFJF TEtJTkRfUkVMQVRJT04gfHwKLQkJCXJlbHR1cGxlLT5yZWxraW5kID09IFJFTEtJTkRfUEFS VElUSU9ORURfVEFCTEUpICYmCisJCQlyZWx0dXBsZS0+cmVsa2luZCA9PSBSRUxLSU5EX1BB UlRJVElPTkVEX1RBQkxFIHx8CisJCQlyZWx0dXBsZS0+cmVsa2luZCA9PSBSRUxLSU5EX1NF UVVFTkNFKSAmJgogCQkhSXNDYXRhbG9nUmVsYXRpb25PaWQocmVsaWQpICYmCiAJCXJlbHR1 cGxlLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9QRVJNQU5FTlQgJiYKIAkJ cmVsaWQgPj0gRmlyc3ROb3JtYWxPYmplY3RJZDsKQEAgLTIzMyw2ICsyMzUsNTIgQEAgZmls dGVyX3BhcnRpdGlvbnMoTGlzdCAqdGFibGVfaW5mb3MpCiAJfQogfQogCisvKgorICogQ2hl Y2sgdGhlIGNoYXJhY3RlciBpcyBhIHZhbGlkIG9iamVjdCB0eXBlIGZvciBzY2hlbWEgcHVi bGljYXRpb24uCisgKgorICogVGhpcyByZWNvZ25pemVzIGVpdGhlciAndCcgZm9yIHRhYmxl cyBvciAncycgZm9yIHNlcXVlbmNlcy4gUGxhY2VzIHRoYXQKKyAqIG5lZWQgdG8gaGFuZGxl ICd1JyBmb3IgdW5zdXBwb3J0ZWQgcmVsa2luZHMgbmVlZCB0byBkbyB0aGF0IGV4cGxpY2l0 bHlsCisgKi8KK3N0YXRpYyB2b2lkCitBc3NlcnRPYmplY3RUeXBlVmFsaWQoY2hhciBvYmpl Y3RUeXBlKQoreworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlBc3NlcnQob2JqZWN0 VHlwZSA9PSBQVUJfT0JKVFlQRV9TRVFVRU5DRSB8fCBvYmplY3RUeXBlID09IFBVQl9PQkpU WVBFX1RBQkxFKTsKKyNlbmRpZgorfQorCisvKgorICogRGV0ZXJtaW5lIG9iamVjdCB0eXBl IG1hdGNoaW5nIGEgZ2l2ZW4gYSByZWxraW5kIHZhbHVlLgorICovCitjaGFyCitwdWJfZ2V0 X29iamVjdF90eXBlX2Zvcl9yZWxraW5kKGNoYXIgcmVsa2luZCkKK3sKKwkvKiBzZXF1ZW5j ZSBtYXBzIGRpcmVjdGx5IHRvIHNlcXVlbmNlIHJlbGtpbmQgKi8KKwlpZiAocmVsa2luZCA9 PSBSRUxLSU5EX1NFUVVFTkNFKQorCQlyZXR1cm4gUFVCX09CSlRZUEVfU0VRVUVOQ0U7CisK KwkvKiBmb3IgdGFibGUsIHdlIG1hdGNoIGVpdGhlciByZWd1bGFyIG9yIHBhcnRpdGlvbmVk IHRhYmxlICovCisJaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTiB8fAorCQlyZWxr aW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCXJldHVybiBQVUJfT0JKVFlQ RV9UQUJMRTsKKworCXJldHVybiBQVUJfT0JKVFlQRV9VTlNVUFBPUlRFRDsKK30KKworLyoK KyAqIERldGVybWluZSBpZiBwdWJsaWNhdGlvbiBvYmplY3QgdHlwZSBtYXRjaGVzIHRoZSBy ZWxraW5kLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcmVsYXRpb24gbWF0Y2hlcyBv YmplY3QgdHlwZSByZXBsaWNhdGVkIGJ5IHRoaXMgc2NoZW1hLAorICogZmFsc2Ugb3RoZXJ3 aXNlLgorICovCitzdGF0aWMgYm9vbAorcHViX29iamVjdF90eXBlX21hdGNoZXNfcmVsa2lu ZChjaGFyIG9iamVjdFR5cGUsIGNoYXIgcmVsa2luZCkKK3sKKwlBc3NlcnRPYmplY3RUeXBl VmFsaWQob2JqZWN0VHlwZSk7CisKKwlyZXR1cm4gKHB1Yl9nZXRfb2JqZWN0X3R5cGVfZm9y X3JlbGtpbmQocmVsa2luZCkgPT0gb2JqZWN0VHlwZSk7Cit9CisKIC8qCiAgKiBSZXR1cm5z IHRydWUgaWYgYW55IHNjaGVtYSBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHB1YmxpY2F0aW9u LCBmYWxzZSBpZiBubwogICogc2NoZW1hIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHVibGlj YXRpb24uCkBAIC0yNTMsNyArMzAxLDcgQEAgaXNfc2NoZW1hX3B1YmxpY2F0aW9uKE9pZCBw dWJpZCkKIAkJCQlPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CiAKIAlzY2FuID0gc3lzdGFi bGVfYmVnaW5zY2FuKHB1YnNjaHNyZWwsCi0JCQkJCQkJICBQdWJsaWNhdGlvbk5hbWVzcGFj ZVBubnNwaWRQbnB1YmlkSW5kZXhJZCwKKwkJCQkJCQkgIFB1YmxpY2F0aW9uTmFtZXNwYWNl UG5uc3BpZFBucHViaWRQbnR5cGVJbmRleElkLAogCQkJCQkJCSAgdHJ1ZSwgTlVMTCwgMSwg JnNjYW5rZXkpOwogCXR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2Nhbik7CiAJcmVzdWx0ID0g SGVhcFR1cGxlSXNWYWxpZCh0dXApOwpAQCAtMzM5LDcgKzM4Nyw5IEBAIEdldFRvcE1vc3RB bmNlc3RvckluUHVibGljYXRpb24oT2lkIHB1Ym9pZCwgTGlzdCAqYW5jZXN0b3JzLCBpbnQg KmFuY2VzdG9yX2xldmVsCiAJCX0KIAkJZWxzZQogCQl7Ci0JCQlhc2NoZW1hUHViaWRzID0g R2V0U2NoZW1hUHVibGljYXRpb25zKGdldF9yZWxfbmFtZXNwYWNlKGFuY2VzdG9yKSk7CisJ CQkvKiB3ZSBvbmx5IHNlYXJjaCBmb3IgYW5jZXN0b3JzIG9mIHRhYmxlcywgc28gUFVCX09C SlRZUEVfVEFCTEUgKi8KKwkJCWFzY2hlbWFQdWJpZHMgPSBHZXRTY2hlbWFQdWJsaWNhdGlv bnMoZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpLAorCQkJCQkJCQkJCQkJICBQVUJfT0JK VFlQRV9UQUJMRSk7CiAJCQlpZiAobGlzdF9tZW1iZXJfb2lkKGFzY2hlbWFQdWJpZHMsIHB1 Ym9pZCkpCiAJCQl7CiAJCQkJdG9wbW9zdF9yZWxpZCA9IGFuY2VzdG9yOwpAQCAtNjA4LDcg KzY1OCw3IEBAIHB1Yl9jb2xsaXN0X3RvX2JpdG1hcHNldChCaXRtYXBzZXQgKmNvbHVtbnMs IERhdHVtIHB1YmNvbHMsIE1lbW9yeUNvbnRleHQgbWN4dCkKICAqIEluc2VydCBuZXcgcHVi bGljYXRpb24gLyBzY2hlbWEgbWFwcGluZy4KICAqLwogT2JqZWN0QWRkcmVzcwotcHVibGlj YXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFpZCwgYm9vbCBpZl9ub3Rf ZXhpc3RzKQorcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFp ZCwgY2hhciBvYmplY3RUeXBlLCBib29sIGlmX25vdF9leGlzdHMpCiB7CiAJUmVsYXRpb24J cmVsOwogCUhlYXBUdXBsZQl0dXA7CkBAIC02MjAsNiArNjcwLDggQEAgcHVibGljYXRpb25f YWRkX3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFpZCwgYm9vbCBpZl9ub3RfZXhpc3Rz KQogCU9iamVjdEFkZHJlc3MgbXlzZWxmLAogCQkJCXJlZmVyZW5jZWQ7CiAKKwlBc3NlcnRP YmplY3RUeXBlVmFsaWQob2JqZWN0VHlwZSk7CisKIAlyZWwgPSB0YWJsZV9vcGVuKFB1Ymxp Y2F0aW9uTmFtZXNwYWNlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAkvKgpA QCAtNjI3LDkgKzY3OSwxMCBAQCBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwg T2lkIHNjaGVtYWlkLCBib29sIGlmX25vdF9leGlzdHMpCiAJICogZHVwbGljYXRlcywgaXQn cyBoZXJlIGp1c3QgdG8gcHJvdmlkZSBuaWNlciBlcnJvciBtZXNzYWdlIGluIGNvbW1vbgog CSAqIGNhc2UuIFRoZSByZWFsIHByb3RlY3Rpb24gaXMgdGhlIHVuaXF1ZSBrZXkgb24gdGhl IGNhdGFsb2cuCiAJICovCi0JaWYgKFNlYXJjaFN5c0NhY2hlRXhpc3RzMihQVUJMSUNBVElP Tk5BTUVTUEFDRU1BUCwKKwlpZiAoU2VhcmNoU3lzQ2FjaGVFeGlzdHMzKFBVQkxJQ0FUSU9O TkFNRVNQQUNFTUFQLAogCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShzY2hlbWFpZCksCi0J CQkJCQkJICBPYmplY3RJZEdldERhdHVtKHB1YmlkKSkpCisJCQkJCQkJICBPYmplY3RJZEdl dERhdHVtKHB1YmlkKSwKKwkJCQkJCQkgIENoYXJHZXREYXR1bShvYmplY3RUeXBlKSkpCiAJ ewogCQl0YWJsZV9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCkBAIC02NTUsNiAr NzA4LDggQEAgcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFp ZCwgYm9vbCBpZl9ub3RfZXhpc3RzKQogCQlPYmplY3RJZEdldERhdHVtKHB1YmlkKTsKIAl2 YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2VfcG5uc3BpZCAtIDFdID0KIAkJ T2JqZWN0SWRHZXREYXR1bShzY2hlbWFpZCk7CisJdmFsdWVzW0FudW1fcGdfcHVibGljYXRp b25fbmFtZXNwYWNlX3BudHlwZSAtIDFdID0KKwkJQ2hhckdldERhdHVtKG9iamVjdFR5cGUp OwogCiAJdHVwID0gaGVhcF9mb3JtX3R1cGxlKFJlbGF0aW9uR2V0RGVzY3IocmVsKSwgdmFs dWVzLCBudWxscyk7CiAKQEAgLTY4MCw3ICs3MzUsNyBAQCBwdWJsaWNhdGlvbl9hZGRfc2No ZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlkLCBib29sIGlmX25vdF9leGlzdHMpCiAJICog cHVibGljYXRpb25fYWRkX3JlbGF0aW9uIGZvciB3aHkgd2UgbmVlZCB0byBjb25zaWRlciBh bGwgdGhlCiAJICogcGFydGl0aW9ucy4KIAkgKi8KLQlzY2hlbWFSZWxzID0gR2V0U2NoZW1h UHVibGljYXRpb25SZWxhdGlvbnMoc2NoZW1haWQsCisJc2NoZW1hUmVscyA9IEdldFNjaGVt YVB1YmxpY2F0aW9uUmVsYXRpb25zKHNjaGVtYWlkLCBvYmplY3RUeXBlLAogCQkJCQkJCQkJ CQkgICBQVUJMSUNBVElPTl9QQVJUX0FMTCk7CiAJSW52YWxpZGF0ZVB1YmxpY2F0aW9uUmVs cyhzY2hlbWFSZWxzKTsKIApAQCAtNzE0LDExICs3NjksMTQgQEAgR2V0UmVsYXRpb25QdWJs aWNhdGlvbnMoT2lkIHJlbGlkKQogLyoKICAqIEdldHMgbGlzdCBvZiByZWxhdGlvbiBvaWRz IGZvciBhIHB1YmxpY2F0aW9uLgogICoKLSAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBG T1IgVEFCTEUgcHVibGljYXRpb25zLCB0aGUgRk9SIEFMTCBUQUJMRVMKLSAqIHNob3VsZCB1 c2UgR2V0QWxsVGFibGVzUHVibGljYXRpb25SZWxhdGlvbnMoKS4KKyAqIFRoaXMgc2hvdWxk IG9ubHkgYmUgdXNlZCBGT1IgVEFCTEUgLyBGT1IgU0VRVUVOQ0UgcHVibGljYXRpb25zLCB0 aGUgRk9SCisgKiBBTEwgVEFCTEVTIC8gU0VRVUVOQ0VTIHNob3VsZCB1c2UgR2V0QWxsVGFi bGVzUHVibGljYXRpb25SZWxhdGlvbnMoKQorICogYW5kIEdldEFsbFNlcXVlbmNlc1B1Ymxp Y2F0aW9uUmVsYXRpb25zKCkuCisgKgorICogWFhYIHB1Yl9wYXJ0b3B0IG9ubHkgbWF0dGVy cyBmb3IgdGFibGVzLCBub3Qgc2VxdWVuY2VzLgogICovCiBMaXN0ICoKLUdldFB1YmxpY2F0 aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0 KQorR2V0UHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIG9iamVjdFR5cGUs IFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIHsKIAlMaXN0CSAgICpyZXN1bHQ7 CiAJUmVsYXRpb24JcHVicmVsc3JlbDsKQEAgLTcyNiw2ICs3ODQsOCBAQCBHZXRQdWJsaWNh dGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9w dCkKIAlTeXNTY2FuRGVzYyBzY2FuOwogCUhlYXBUdXBsZQl0dXA7CiAKKwlBc3NlcnRPYmpl Y3RUeXBlVmFsaWQob2JqZWN0VHlwZSk7CisKIAkvKiBGaW5kIGFsbCBwdWJsaWNhdGlvbnMg YXNzb2NpYXRlZCB3aXRoIHRoZSByZWxhdGlvbi4gKi8KIAlwdWJyZWxzcmVsID0gdGFibGVf b3BlbihQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKQEAg LTc0MCwxMSArODAwLDI5IEBAIEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwg UHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCXJlc3VsdCA9IE5JTDsKIAl3aGls ZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKIAl7 CisJCWNoYXIJCXJlbGtpbmQ7CiAJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJlbDsK IAogCQlwdWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXAp OwotCQlyZXN1bHQgPSBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMocmVzdWx0LCBw dWJfcGFydG9wdCwKLQkJCQkJCQkJCQkJCXB1YnJlbC0+cHJyZWxpZCk7CisJCXJlbGtpbmQg PSBnZXRfcmVsX3JlbGtpbmQocHVicmVsLT5wcnJlbGlkKTsKKworCQkvKgorCQkgKiBJZiB0 aGUgcmVsa2luZCBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWVzdGVkIG9iamVjdCB0eXBlLCBp Z25vcmUgdGhlCisJCSAqIHJlbGF0aW9uLiBGb3IgZXhhbXBsZSB3ZSBtaWdodCBiZSBpbnRl cmVzdGVkIG9ubHkgaW4gc2VxdWVuY2VzLCBzbworCQkgKiB3ZSBpZ25vcmUgdGFibGVzLgor CQkgKi8KKwkJaWYgKCFwdWJfb2JqZWN0X3R5cGVfbWF0Y2hlc19yZWxraW5kKG9iamVjdFR5 cGUsIHJlbGtpbmQpKQorCQkJY29udGludWU7CisKKwkJLyoKKwkJICogV2UgZG9uJ3QgaGF2 ZSBwYXJ0aXRpb25lZCBzZXF1ZW5jZXMsIHNvIGp1c3QgYWRkIHRoZW0gdG8gdGhlIGxpc3Qu CisJCSAqIE90aGVyd2lzZSBjb25zaWRlciBhZGRpbmcgYWxsIGNoaWxkIHJlbGF0aW9ucywg aWYgcmVxdWVzdGVkLgorCQkgKi8KKwkJaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5D RSkKKwkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcHVicmVsLT5wcnJlbGlkKTsK KwkJZWxzZQorCQkJcmVzdWx0ID0gR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJl c3VsdCwgcHViX3BhcnRvcHQsCisJCQkJCQkJCQkJCQkJcHVicmVsLT5wcnJlbGlkKTsKIAl9 CiAKIAlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOwpAQCAtNzk0LDYgKzg3Miw0MyBAQCBHZXRB bGxUYWJsZXNQdWJsaWNhdGlvbnModm9pZCkKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgor ICogR2V0cyBsaXN0IG9mIHB1YmxpY2F0aW9uIG9pZHMgZm9yIHB1YmxpY2F0aW9ucyBtYXJr ZWQgYXMgRk9SIEFMTCBTRVFVRU5DRVMuCisgKi8KK0xpc3QgKgorR2V0QWxsU2VxdWVuY2Vz UHVibGljYXRpb25zKHZvaWQpCit7CisJTGlzdAkgICAqcmVzdWx0OworCVJlbGF0aW9uCXJl bDsKKwlTY2FuS2V5RGF0YSBzY2Fua2V5OworCVN5c1NjYW5EZXNjIHNjYW47CisJSGVhcFR1 cGxlCXR1cDsKKworCS8qIEZpbmQgYWxsIHB1YmxpY2F0aW9ucyB0aGF0IGFyZSBtYXJrZWQg YXMgZm9yIGFsbCBzZXF1ZW5jZXMuICovCisJcmVsID0gdGFibGVfb3BlbihQdWJsaWNhdGlv blJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2FuS2V5SW5pdCgmc2Nhbmtl eSwKKwkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmFsbHNlcXVlbmNlcywKKwkJCQlCVEVx dWFsU3RyYXRlZ3lOdW1iZXIsIEZfQk9PTEVRLAorCQkJCUJvb2xHZXREYXR1bSh0cnVlKSk7 CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHJlbCwgSW52YWxpZE9pZCwgZmFsc2Us CisJCQkJCQkJICBOVUxMLCAxLCAmc2NhbmtleSk7CisKKwlyZXN1bHQgPSBOSUw7CisJd2hp bGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJ eworCQlPaWQJCQlvaWQgPSAoKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXAp KS0+b2lkOworCisJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgb2lkKTsKKwl9CisK KwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKHJlbCwgQWNjZXNzU2hh cmVMb2NrKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAgKiBHZXRzIGxpc3Qgb2Yg YWxsIHJlbGF0aW9uIHB1Ymxpc2hlZCBieSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbihz KS4KICAqCkBAIC04NjAsMjggKzk3NSwzOCBAQCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvblJl bGF0aW9ucyhib29sIHB1YnZpYXJvb3QpCiAvKgogICogR2V0cyB0aGUgbGlzdCBvZiBzY2hl bWEgb2lkcyBmb3IgYSBwdWJsaWNhdGlvbi4KICAqCi0gKiBUaGlzIHNob3VsZCBvbmx5IGJl IHVzZWQgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHVibGljYXRpb25zLgorICogVGhpcyBzaG91 bGQgb25seSBiZSB1c2VkIEZPUiBUQUJMRVMgSU4gU0NIRU1BIGFuZCBGT1IgU0VRVUVOQ0VT IElOIFNDSEVNQQorICogcHVibGljYXRpb25zLgorICoKKyAqICdvYmplY3RUeXBlJyBkZXRl cm1pbmVzIHdoZXRoZXIgdG8gZ2V0IEZPUiBUQUJMRSBvciBGT1IgU0VRVUVOQ0VTIHNjaGVt YXMKICAqLwogTGlzdCAqCi1HZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkKQorR2V0 UHVibGljYXRpb25TY2hlbWFzKE9pZCBwdWJpZCwgY2hhciBvYmplY3RUeXBlKQogewogCUxp c3QJICAgKnJlc3VsdCA9IE5JTDsKIAlSZWxhdGlvbglwdWJzY2hzcmVsOwotCVNjYW5LZXlE YXRhIHNjYW5rZXk7CisJU2NhbktleURhdGEgc2NhbmtleVsyXTsKIAlTeXNTY2FuRGVzYyBz Y2FuOwogCUhlYXBUdXBsZQl0dXA7CiAKKwlBc3NlcnRPYmplY3RUeXBlVmFsaWQob2JqZWN0 VHlwZSk7CisKIAkvKiBGaW5kIGFsbCBzY2hlbWFzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHVi bGljYXRpb24gKi8KIAlwdWJzY2hzcmVsID0gdGFibGVfb3BlbihQdWJsaWNhdGlvbk5hbWVz cGFjZVJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKLQlTY2FuS2V5SW5pdCgmc2Nh bmtleSwKKwlTY2FuS2V5SW5pdCgmc2NhbmtleVswXSwKIAkJCQlBbnVtX3BnX3B1YmxpY2F0 aW9uX25hbWVzcGFjZV9wbnB1YmlkLAogCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9P SURFUSwKIAkJCQlPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CiAKKwlTY2FuS2V5SW5pdCgm c2NhbmtleVsxXSwKKwkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZV9wbnR5cGUs CisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX0NIQVJFUSwKKwkJCQlDaGFyR2V0RGF0 dW0ob2JqZWN0VHlwZSkpOworCiAJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwdWJzY2hz cmVsLAotCQkJCQkJCSAgUHVibGljYXRpb25OYW1lc3BhY2VQbm5zcGlkUG5wdWJpZEluZGV4 SWQsCi0JCQkJCQkJICB0cnVlLCBOVUxMLCAxLCAmc2NhbmtleSk7CisJCQkJCQkJICBQdWJs aWNhdGlvbk5hbWVzcGFjZVBubnNwaWRQbnB1YmlkUG50eXBlSW5kZXhJZCwKKwkJCQkJCQkg IHRydWUsIE5VTEwsIDIsIHNjYW5rZXkpOwogCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1 cCA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQogCXsKIAkJRm9ybV9wZ19wdWJsaWNhdGlv bl9uYW1lc3BhY2UgcHVic2NoOwpAQCAtODk5LDE0ICsxMDI0LDI2IEBAIEdldFB1YmxpY2F0 aW9uU2NoZW1hcyhPaWQgcHViaWQpCiAKIC8qCiAgKiBHZXRzIHRoZSBsaXN0IG9mIHB1Ymxp Y2F0aW9uIG9pZHMgYXNzb2NpYXRlZCB3aXRoIGEgc3BlY2lmaWVkIHNjaGVtYS4KKyAqCisg KiBvYmplY3RUeXBlIHNwZWNpZmllcyB3aGV0aGVyIHdlJ3JlIGxvb2tpbmcgZm9yIHNjaGVt YXMgaW5jbHVkaW5nIHRhYmxlcyBvcgorICogc2VxdWVuY2VzLgorICoKKyAqIE5vdGU6IHJl bGNhY2hlIGNhbGxzIHRoaXMgZm9yIGFsbCBvYmplY3QgdHlwZXMsIG5vdCBqdXN0IHRhYmxl cyBhbmQgc2VxdWVuY2VzLgorICogV2hpY2ggaXMgd2h5IHdlIGhhbmRsZSB0aGUgUFVCX09C SlRZUEVfVU5TVVBQT1JURUQgb2JqZWN0IHR5cGUgdG9vLgogICovCiBMaXN0ICoKLUdldFNj aGVtYVB1YmxpY2F0aW9ucyhPaWQgc2NoZW1haWQpCitHZXRTY2hlbWFQdWJsaWNhdGlvbnMo T2lkIHNjaGVtYWlkLCBjaGFyIG9iamVjdFR5cGUpCiB7CiAJTGlzdAkgICAqcmVzdWx0ID0g TklMOwogCUNhdENMaXN0ICAgKnB1YnNjaGxpc3Q7CiAJaW50CQkJaTsKIAorCS8qIHVuc3Vw cG9ydGVkIG9iamVjdCB0eXBlICovCisJaWYgKG9iamVjdFR5cGUgPT0gUFVCX09CSlRZUEVf VU5TVVBQT1JURUQpCisJCXJldHVybiByZXN1bHQ7CisKKwlBc3NlcnRPYmplY3RUeXBlVmFs aWQob2JqZWN0VHlwZSk7CisKIAkvKiBGaW5kIGFsbCBwdWJsaWNhdGlvbnMgYXNzb2NpYXRl ZCB3aXRoIHRoZSBzY2hlbWEgKi8KIAlwdWJzY2hsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0 MShQVUJMSUNBVElPTk5BTUVTUEFDRU1BUCwKIAkJCQkJCQkJCSBPYmplY3RJZEdldERhdHVt KHNjaGVtYWlkKSk7CkBAIC05MTQsNiArMTA1MSwxMSBAQCBHZXRTY2hlbWFQdWJsaWNhdGlv bnMoT2lkIHNjaGVtYWlkKQogCXsKIAkJSGVhcFR1cGxlCXR1cCA9ICZwdWJzY2hsaXN0LT5t ZW1iZXJzW2ldLT50dXBsZTsKIAkJT2lkCQkJcHViaWQgPSAoKEZvcm1fcGdfcHVibGljYXRp b25fbmFtZXNwYWNlKSBHRVRTVFJVQ1QodHVwKSktPnBucHViaWQ7CisJCWNoYXIJCXBudHlw ZSA9ICgoRm9ybV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UpIEdFVFNUUlVDVCh0dXApKS0+ cG50eXBlOworCisJCS8qIFNraXAgc2NoZW1hcyBwdWJsaXNoaW5nIGEgZGlmZmVyZW50IG9i amVjdCB0eXBlLiAqLworCQlpZiAocG50eXBlICE9IG9iamVjdFR5cGUpCisJCQljb250aW51 ZTsKIAogCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHB1YmlkKTsKIAl9CkBAIC05 MjUsOSArMTA2NywxMyBAQCBHZXRTY2hlbWFQdWJsaWNhdGlvbnMoT2lkIHNjaGVtYWlkKQog CiAvKgogICogR2V0IHRoZSBsaXN0IG9mIHB1Ymxpc2hhYmxlIHJlbGF0aW9uIG9pZHMgZm9y IGEgc3BlY2lmaWVkIHNjaGVtYS4KKyAqCisgKiBvYmplY3RUeXBlIHNwZWNpZmllcyB3aGV0 aGVyIHRoaXMgaXMgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIG9yIEZPUiBBTEwKKyAqIFNF UVVFTkNFUyBJTiBTQ0hFTUEKICAqLwogTGlzdCAqCi1HZXRTY2hlbWFQdWJsaWNhdGlvblJl bGF0aW9ucyhPaWQgc2NoZW1haWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkK K0dldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwgY2hhciBvYmpl Y3RUeXBlLAorCQkJCQkJCSAgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogewog CVJlbGF0aW9uCWNsYXNzUmVsOwogCVNjYW5LZXlEYXRhIGtleVsxXTsKQEAgLTkzNiw2ICsx MDgyLDcgQEAgR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHNjaGVtYWlkLCBQ dWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCiAJTGlzdAkgICAqcmVzdWx0ID0gTklM OwogCiAJQXNzZXJ0KE9pZElzVmFsaWQoc2NoZW1haWQpKTsKKwlBc3NlcnRPYmplY3RUeXBl VmFsaWQob2JqZWN0VHlwZSk7CiAKIAljbGFzc1JlbCA9IHRhYmxlX29wZW4oUmVsYXRpb25S ZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOwogCkBAIC05NTYsOSArMTEwMywxNyBAQCBH ZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgc2NoZW1haWQsIFB1YmxpY2F0aW9u UGFydE9wdCBwdWJfcGFydG9wdCkKIAkJCWNvbnRpbnVlOwogCiAJCXJlbGtpbmQgPSBnZXRf cmVsX3JlbGtpbmQocmVsaWQpOwotCQlpZiAocmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9O KQotCQkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0LCByZWxpZCk7Ci0JCWVsc2UgaWYg KHJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKworCQkvKiBTa2lwIGlm IHRoZSByZWxraW5kIGRvZXMgbm90IG1hdGNoIEZPUiBBTEwgVEFCTEVTIC8gU0VRVUVOQ0VT LiAqLworCQlpZiAoIXB1Yl9vYmplY3RfdHlwZV9tYXRjaGVzX3JlbGtpbmQob2JqZWN0VHlw ZSwgcmVsa2luZCkpCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBJZiB0aGUgb2JqZWN0 IGlzIGEgcGFydGl0aW9uZWQgdGFibGUsIGxvb2t1cCBhbGwgdGhlIGNoaWxkCisJCSAqIHJl bGF0aW9ucyAoaWYgcmVxdWVzdGVkKS4gT3RoZXJ3aXNlIGp1c3QgYWRkIHRoZSBvYmplY3Qg dG8gdGhlCisJCSAqIGxpc3QuCisJCSAqLworCQlpZiAocmVsa2luZCA9PSBSRUxLSU5EX1BB UlRJVElPTkVEX1RBQkxFKQogCQl7CiAJCQlMaXN0CSAgICpwYXJ0aXRpb25yZWxzID0gTklM OwogCkBAIC05NzEsNyArMTEyNiwxMSBAQCBHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9u cyhPaWQgc2NoZW1haWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIAkJCQkJ CQkJCQkJCQkJICAgcHViX3BhcnRvcHQsCiAJCQkJCQkJCQkJCQkJCSAgIHJlbEZvcm0tPm9p ZCk7CiAJCQlyZXN1bHQgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHJlc3VsdCwgcGFydGl0 aW9ucmVscyk7CisJCQljb250aW51ZTsKIAkJfQorCisJCS8qIG5vbi1wYXJ0aXRpb25lZCB0 YWJsZXMgYW5kIHNlcXVlbmNlcyAqLworCQlyZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQs IHJlbGlkKTsKIAl9CiAKIAl0YWJsZV9lbmRzY2FuKHNjYW4pOwpAQCAtOTgwLDI4ICsxMTM5 LDY4IEBAIEdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwgUHVi bGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogfQogCiAvKgotICogR2V0cyB0aGUgbGlz dCBvZiBhbGwgcmVsYXRpb25zIHB1Ymxpc2hlZCBieSBGT1IgVEFCTEVTIElOIFNDSEVNQQot ICogcHVibGljYXRpb24uCisgKiBHZXRzIHRoZSBsaXN0IG9mIGFsbCByZWxhdGlvbnMgcHVi bGlzaGVkIGJ5IEZPUiBUQUJMRVMgSU4gU0NIRU1BIG9yCisgKiBGT1IgU0VRVUVOQ0VTIElO IFNDSEVNQSBwdWJsaWNhdGlvbi4KICAqLwogTGlzdCAqCi1HZXRBbGxTY2hlbWFQdWJsaWNh dGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9w dCkKK0dldEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciBv YmplY3RUeXBlLAorCQkJCQkJCQkgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQog ewogCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKLQlMaXN0CSAgICpwdWJzY2hlbWFsaXN0ID0g R2V0UHVibGljYXRpb25TY2hlbWFzKHB1YmlkKTsKKwlMaXN0CSAgICpwdWJzY2hlbWFsaXN0 ID0gR2V0UHVibGljYXRpb25TY2hlbWFzKHB1YmlkLCBvYmplY3RUeXBlKTsKIAlMaXN0Q2Vs bCAgICpjZWxsOwogCisJQXNzZXJ0T2JqZWN0VHlwZVZhbGlkKG9iamVjdFR5cGUpOworCiAJ Zm9yZWFjaChjZWxsLCBwdWJzY2hlbWFsaXN0KQogCXsKIAkJT2lkCQkJc2NoZW1haWQgPSBs Zmlyc3Rfb2lkKGNlbGwpOwogCQlMaXN0CSAgICpzY2hlbWFSZWxzID0gTklMOwogCi0JCXNj aGVtYVJlbHMgPSBHZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhzY2hlbWFpZCwgcHVi X3BhcnRvcHQpOworCQlzY2hlbWFSZWxzID0gR2V0U2NoZW1hUHVibGljYXRpb25SZWxhdGlv bnMoc2NoZW1haWQsIG9iamVjdFR5cGUsCisJCQkJCQkJCQkJCQkgICBwdWJfcGFydG9wdCk7 CiAJCXJlc3VsdCA9IGxpc3RfY29uY2F0KHJlc3VsdCwgc2NoZW1hUmVscyk7CiAJfQogCiAJ cmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIEdldHMgbGlzdCBvZiBhbGwgcmVsYXRpb24g cHVibGlzaGVkIGJ5IEZPUiBBTEwgU0VRVUVOQ0VTIHB1YmxpY2F0aW9uKHMpLgorICovCitM aXN0ICoKK0dldEFsbFNlcXVlbmNlc1B1YmxpY2F0aW9uUmVsYXRpb25zKHZvaWQpCit7CisJ UmVsYXRpb24JY2xhc3NSZWw7CisJU2NhbktleURhdGEga2V5WzFdOworCVRhYmxlU2NhbkRl c2Mgc2NhbjsKKwlIZWFwVHVwbGUJdHVwbGU7CisJTGlzdAkgICAqcmVzdWx0ID0gTklMOwor CisJY2xhc3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hh cmVMb2NrKTsKKworCVNjYW5LZXlJbml0KCZrZXlbMF0sCisJCQkJQW51bV9wZ19jbGFzc19y ZWxraW5kLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9DSEFSRVEsCisJCQkJQ2hh ckdldERhdHVtKFJFTEtJTkRfU0VRVUVOQ0UpKTsKKworCXNjYW4gPSB0YWJsZV9iZWdpbnNj YW5fY2F0YWxvZyhjbGFzc1JlbCwgMSwga2V5KTsKKworCXdoaWxlICgodHVwbGUgPSBoZWFw X2dldG5leHQoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24pKSAhPSBOVUxMKQorCXsKKwkJ Rm9ybV9wZ19jbGFzcyByZWxGb3JtID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBs ZSk7CisJCU9pZAkJCXJlbGlkID0gcmVsRm9ybS0+b2lkOworCisJCWlmIChpc19wdWJsaXNo YWJsZV9jbGFzcyhyZWxpZCwgcmVsRm9ybSkpCisJCQlyZXN1bHQgPSBsYXBwZW5kX29pZChy ZXN1bHQsIHJlbGlkKTsKKwl9CisKKwl0YWJsZV9lbmRzY2FuKHNjYW4pOworCisJdGFibGVf Y2xvc2UoY2xhc3NSZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisJcmV0dXJuIHJlc3VsdDsKK30K KwogLyoKICAqIEdldCBwdWJsaWNhdGlvbiB1c2luZyBvaWQKICAqCkBAIC0xMDI0LDEwICsx MjIzLDEyIEBAIEdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCkKIAlwdWItPm9pZCA9IHB1Ymlk OwogCXB1Yi0+bmFtZSA9IHBzdHJkdXAoTmFtZVN0cihwdWJmb3JtLT5wdWJuYW1lKSk7CiAJ cHViLT5hbGx0YWJsZXMgPSBwdWJmb3JtLT5wdWJhbGx0YWJsZXM7CisJcHViLT5hbGxzZXF1 ZW5jZXMgPSBwdWJmb3JtLT5wdWJhbGxzZXF1ZW5jZXM7CiAJcHViLT5wdWJhY3Rpb25zLnB1 Ymluc2VydCA9IHB1YmZvcm0tPnB1Ymluc2VydDsKIAlwdWItPnB1YmFjdGlvbnMucHVidXBk YXRlID0gcHViZm9ybS0+cHVidXBkYXRlOwogCXB1Yi0+cHViYWN0aW9ucy5wdWJkZWxldGUg PSBwdWJmb3JtLT5wdWJkZWxldGU7CiAJcHViLT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0g cHViZm9ybS0+cHVidHJ1bmNhdGU7CisJcHViLT5wdWJhY3Rpb25zLnB1YnNlcXVlbmNlID0g cHViZm9ybS0+cHVic2VxdWVuY2U7CiAJcHViLT5wdWJ2aWFyb290ID0gcHViZm9ybS0+cHVi dmlhcm9vdDsKIAogCVJlbGVhc2VTeXNDYWNoZSh0dXApOwpAQCAtMTEwOCwxMCArMTMwOSwx MiBAQCBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQkJ CQkgICAqc2NoZW1hcmVsaWRzOwogCiAJCQkJcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxh dGlvbnMocHViX2VsZW0tPm9pZCwKKwkJCQkJCQkJCQkJCSBQVUJfT0JKVFlQRV9UQUJMRSwK IAkJCQkJCQkJCQkJCSBwdWJfZWxlbS0+cHVidmlhcm9vdCA/CiAJCQkJCQkJCQkJCQkgUFVC TElDQVRJT05fUEFSVF9ST09UIDoKIAkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0xF QUYpOwogCQkJCXNjaGVtYXJlbGlkcyA9IEdldEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRp b25zKHB1Yl9lbGVtLT5vaWQsCisJCQkJCQkJCQkJCQkJCQkJUFVCX09CSlRZUEVfVEFCTEUs CiAJCQkJCQkJCQkJCQkJCQkJcHViX2VsZW0tPnB1YnZpYXJvb3QgPwogCQkJCQkJCQkJCQkJ CQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6CiAJCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJ T05fUEFSVF9MRUFGKTsKQEAgLTExOTcsOSArMTQwMCwxMCBAQCBwZ19nZXRfcHVibGljYXRp b25fdGFibGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCSAqIEZPUiBUQUJMRVMgSU4gU0NIRU1B IHB1YmxpY2F0aW9ucy4KIAkJICovCiAJCWlmICghcHViLT5hbGx0YWJsZXMgJiYKLQkJCSFT ZWFyY2hTeXNDYWNoZUV4aXN0czIoUFVCTElDQVRJT05OQU1FU1BBQ0VNQVAsCisJCQkhU2Vh cmNoU3lzQ2FjaGVFeGlzdHMzKFBVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAogCQkJCQkJCQkg ICBPYmplY3RJZEdldERhdHVtKHNjaGVtYWlkKSwKLQkJCQkJCQkJICAgT2JqZWN0SWRHZXRE YXR1bShwdWItPm9pZCkpKQorCQkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHB1Yi0+b2lk KSwKKwkJCQkJCQkJICAgUFVCX09CSlRZUEVfVEFCTEUpKQogCQkJcHVidHVwbGUgPSBTZWFy Y2hTeXNDYWNoZUNvcHkyKFBVQkxJQ0FUSU9OUkVMTUFQLAogCQkJCQkJCQkJCSAgIE9iamVj dElkR2V0RGF0dW0ocmVsaWQpLAogCQkJCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocHVi LT5vaWQpKTsKQEAgLTEyNTksMyArMTQ2Myw3MSBAQCBwZ19nZXRfcHVibGljYXRpb25fdGFi bGVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7CiB9 CisKKy8qCisgKiBSZXR1cm5zIE9pZHMgb2Ygc2VxdWVuY2VzIGluIGEgcHVibGljYXRpb24u CisgKi8KK0RhdHVtCitwZ19nZXRfcHVibGljYXRpb25fc2VxdWVuY2VzKFBHX0ZVTkNUSU9O X0FSR1MpCit7CisJRnVuY0NhbGxDb250ZXh0ICpmdW5jY3R4OworCWNoYXIJICAgKnB1Ym5h bWUgPSB0ZXh0X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCVB1YmxpY2F0 aW9uICpwdWJsaWNhdGlvbjsKKwlMaXN0CSAgICpzZXF1ZW5jZXM7CisKKwkvKiBzdHVmZiBk b25lIG9ubHkgb24gdGhlIGZpcnN0IGNhbGwgb2YgdGhlIGZ1bmN0aW9uICovCisJaWYgKFNS Rl9JU19GSVJTVENBTEwoKSkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwor CQkvKiBjcmVhdGUgYSBmdW5jdGlvbiBjb250ZXh0IGZvciBjcm9zcy1jYWxsIHBlcnNpc3Rl bmNlICovCisJCWZ1bmNjdHggPSBTUkZfRklSU1RDQUxMX0lOSVQoKTsKKworCQkvKiBzd2l0 Y2ggdG8gbWVtb3J5IGNvbnRleHQgYXBwcm9wcmlhdGUgZm9yIG11bHRpcGxlIGZ1bmN0aW9u IGNhbGxzICovCisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZnVuY2N0 eC0+bXVsdGlfY2FsbF9tZW1vcnlfY3R4KTsKKworCQlwdWJsaWNhdGlvbiA9IEdldFB1Ymxp Y2F0aW9uQnlOYW1lKHB1Ym5hbWUsIGZhbHNlKTsKKworCQkvKgorCQkgKiBQdWJsaWNhdGlv bnMgc3VwcG9ydCBwYXJ0aXRpb25lZCB0YWJsZXMsIGFsdGhvdWdoIGFsbCBjaGFuZ2VzIGFy ZQorCQkgKiByZXBsaWNhdGVkIHVzaW5nIGxlYWYgcGFydGl0aW9uIGlkZW50aXR5IGFuZCBz Y2hlbWEsIHNvIHdlIG9ubHkKKwkJICogbmVlZCB0aG9zZS4KKwkJICovCisJCWlmIChwdWJs aWNhdGlvbi0+YWxsc2VxdWVuY2VzKQorCQkJc2VxdWVuY2VzID0gR2V0QWxsU2VxdWVuY2Vz UHVibGljYXRpb25SZWxhdGlvbnMoKTsKKwkJZWxzZQorCQl7CisJCQlMaXN0CSAgICpyZWxp ZHMsCisJCQkJCSAgICpzY2hlbWFyZWxpZHM7CisKKwkJCXJlbGlkcyA9IEdldFB1YmxpY2F0 aW9uUmVsYXRpb25zKHB1YmxpY2F0aW9uLT5vaWQsCisJCQkJCQkJCQkJCSBQVUJfT0JKVFlQ RV9TRVFVRU5DRSwKKwkJCQkJCQkJCQkJIHB1YmxpY2F0aW9uLT5wdWJ2aWFyb290ID8KKwkJ CQkJCQkJCQkJIFBVQkxJQ0FUSU9OX1BBUlRfUk9PVCA6CisJCQkJCQkJCQkJCSBQVUJMSUNB VElPTl9QQVJUX0xFQUYpOworCQkJc2NoZW1hcmVsaWRzID0gR2V0QWxsU2NoZW1hUHVibGlj YXRpb25SZWxhdGlvbnMocHVibGljYXRpb24tPm9pZCwKKwkJCQkJCQkJCQkJCQkJCVBVQl9P QkpUWVBFX1NFUVVFTkNFLAorCQkJCQkJCQkJCQkJCQkJcHVibGljYXRpb24tPnB1YnZpYXJv b3QgPworCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UIDoKKwkJCQkJCQkJ CQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfTEVBRik7CisJCQlzZXF1ZW5jZXMgPSBsaXN0X2Nv bmNhdF91bmlxdWVfb2lkKHJlbGlkcywgc2NoZW1hcmVsaWRzKTsKKwkJfQorCisJCWZ1bmNj dHgtPnVzZXJfZmN0eCA9ICh2b2lkICopIHNlcXVlbmNlczsKKworCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY29udGV4dCk7CisJfQorCisJLyogc3R1ZmYgZG9uZSBvbiBldmVyeSBj YWxsIG9mIHRoZSBmdW5jdGlvbiAqLworCWZ1bmNjdHggPSBTUkZfUEVSQ0FMTF9TRVRVUCgp OworCXNlcXVlbmNlcyA9IChMaXN0ICopIGZ1bmNjdHgtPnVzZXJfZmN0eDsKKworCWlmIChm dW5jY3R4LT5jYWxsX2NudHIgPCBsaXN0X2xlbmd0aChzZXF1ZW5jZXMpKQorCXsKKwkJT2lk CQkJcmVsaWQgPSBsaXN0X250aF9vaWQoc2VxdWVuY2VzLCBmdW5jY3R4LT5jYWxsX2NudHIp OworCisJCVNSRl9SRVRVUk5fTkVYVChmdW5jY3R4LCBPYmplY3RJZEdldERhdHVtKHJlbGlk KSk7CisJfQorCisJU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOworfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDExZDE4ZWQ5ZGQ2Li5iMjQyMjlkMjcwMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtNDAxLDYgKzQwMSwx NiBAQCBDUkVBVEUgVklFVyBwZ19wdWJsaWNhdGlvbl90YWJsZXMgQVMKICAgICAgICAgIHBn X2NsYXNzIEMgSk9JTiBwZ19uYW1lc3BhY2UgTiBPTiAoTi5vaWQgPSBDLnJlbG5hbWVzcGFj ZSkKICAgICBXSEVSRSBDLm9pZCA9IEdQVC5yZWxpZDsKIAorQ1JFQVRFIFZJRVcgcGdfcHVi bGljYXRpb25fc2VxdWVuY2VzIEFTCisgICAgU0VMRUNUCisgICAgICAgIFAucHVibmFtZSBB UyBwdWJuYW1lLAorICAgICAgICBOLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKKyAgICAgICAg Qy5yZWxuYW1lIEFTIHNlcXVlbmNlbmFtZQorICAgIEZST00gcGdfcHVibGljYXRpb24gUCwK KyAgICAgICAgIExBVEVSQUwgcGdfZ2V0X3B1YmxpY2F0aW9uX3NlcXVlbmNlcyhQLnB1Ym5h bWUpIEdQUywKKyAgICAgICAgIHBnX2NsYXNzIEMgSk9JTiBwZ19uYW1lc3BhY2UgTiBPTiAo Ti5vaWQgPSBDLnJlbG5hbWVzcGFjZSkKKyAgICBXSEVSRSBDLm9pZCA9IEdQUy5yZWxpZDsK KwogQ1JFQVRFIFZJRVcgcGdfbG9ja3MgQVMKICAgICBTRUxFQ1QgKiBGUk9NIHBnX2xvY2tf c3RhdHVzKCkgQVMgTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVi bGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMu YwppbmRleCBmNGJhNTcyNjk3YS4uZTdiMjY2N2Y2NGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJh Y2Nlc3MvZ2VuYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCisjaW5j bHVkZSAiYWNjZXNzL3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAj aW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIK QEAgLTY4LDE1ICs2OSwxNyBAQCB0eXBlZGVmIHN0cnVjdCByZl9jb250ZXh0CiAJT2lkCQkJ cGFyZW50aWQ7CQkvKiByZWxpZCBvZiB0aGUgcGFyZW50IHJlbGF0aW9uICovCiB9IHJmX2Nv bnRleHQ7CiAKLXN0YXRpYyBMaXN0ICpPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcyk7Ci1z dGF0aWMgdm9pZCBDbG9zZVRhYmxlTGlzdChMaXN0ICpyZWxzKTsKK3N0YXRpYyBMaXN0ICpP cGVuUmVsYXRpb25MaXN0KExpc3QgKnJlbHMsIGNoYXIgb2JqZWN0VHlwZSk7CitzdGF0aWMg dm9pZCBDbG9zZVJlbGF0aW9uTGlzdChMaXN0ICpyZWxzKTsKIHN0YXRpYyB2b2lkIExvY2tT Y2hlbWFMaXN0KExpc3QgKnNjaGVtYWxpc3QpOwotc3RhdGljIHZvaWQgUHVibGljYXRpb25B ZGRUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCi0J CQkJCQkJCSBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7Ci1zdGF0aWMgdm9pZCBQdWJs aWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIG1pc3Npbmdf b2spOwotc3RhdGljIHZvaWQgUHVibGljYXRpb25BZGRTY2hlbWFzKE9pZCBwdWJpZCwgTGlz dCAqc2NoZW1hcywgYm9vbCBpZl9ub3RfZXhpc3RzLAotCQkJCQkJCQkgIEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10KTsKLXN0YXRpYyB2b2lkIFB1YmxpY2F0aW9uRHJvcFNjaGVtYXMo T2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIG1pc3Npbmdfb2spOworc3RhdGljIHZv aWQgUHVibGljYXRpb25BZGRSZWxhdGlvbnMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29s IGlmX25vdF9leGlzdHMsCisJCQkJCQkJCQlBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCk7 CitzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkRyb3BSZWxhdGlvbnMoT2lkIHB1YmlkLCBMaXN0 ICpyZWxzLCBib29sIG1pc3Npbmdfb2spOworc3RhdGljIHZvaWQgUHVibGljYXRpb25BZGRT Y2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgY2hhciBvYmplY3RUeXBlLAorCQkJ CQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cywgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQp Oworc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9wU2NoZW1hcyhPaWQgcHViaWQsIExpc3Qg KnNjaGVtYXMsIGNoYXIgb2JqZWN0VHlwZSwKKwkJCQkJCQkJICAgYm9vbCBtaXNzaW5nX29r KTsKKwogCiAKIHN0YXRpYyB2b2lkCkBAIC05Nyw2ICsxMDAsNyBAQCBwYXJzZV9wdWJsaWNh dGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlwdWJhY3Rpb25zLT5wdWJ1cGRh dGUgPSB0cnVlOwogCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSA9IHRydWU7CiAJcHViYWN0aW9u cy0+cHVidHJ1bmNhdGUgPSB0cnVlOworCXB1YmFjdGlvbnMtPnB1YnNlcXVlbmNlID0gdHJ1 ZTsKIAkqcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBmYWxzZTsKIAogCS8qIFBhcnNl IG9wdGlvbnMgKi8KQEAgLTEyMSw2ICsxMjUsNyBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRp b25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCXB1YmFjdGlvbnMtPnB1YnVwZGF0ZSA9IGZh bHNlOwogCQkJcHViYWN0aW9ucy0+cHViZGVsZXRlID0gZmFsc2U7CiAJCQlwdWJhY3Rpb25z LT5wdWJ0cnVuY2F0ZSA9IGZhbHNlOworCQkJcHViYWN0aW9ucy0+cHVic2VxdWVuY2UgPSBm YWxzZTsKIAogCQkJKnB1Ymxpc2hfZ2l2ZW4gPSB0cnVlOwogCQkJcHVibGlzaCA9IGRlZkdl dFN0cmluZyhkZWZlbCk7CkBAIC0xNDQsNiArMTQ5LDggQEAgcGFyc2VfcHVibGljYXRpb25f b3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCXB1YmFjdGlvbnMtPnB1YmRlbGV0 ZSA9IHRydWU7CiAJCQkJZWxzZSBpZiAoc3RyY21wKHB1Ymxpc2hfb3B0LCAidHJ1bmNhdGUi KSA9PSAwKQogCQkJCQlwdWJhY3Rpb25zLT5wdWJ0cnVuY2F0ZSA9IHRydWU7CisJCQkJZWxz ZSBpZiAoc3RyY21wKHB1Ymxpc2hfb3B0LCAic2VxdWVuY2UiKSA9PSAwKQorCQkJCQlwdWJh Y3Rpb25zLT5wdWJzZXF1ZW5jZSA9IHRydWU7CiAJCQkJZWxzZQogCQkJCQllcmVwb3J0KEVS Uk9SLAogCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTE3MSw3 ICsxNzgsOCBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKICAqLwogc3RhdGljIHZvaWQKIE9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3Qg KnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJICAgTGlzdCAq KnJlbHMsIExpc3QgKipzY2hlbWFzKQorCQkJCQkJICAgTGlzdCAqKnRhYmxlcywgTGlzdCAq KnNlcXVlbmNlcywKKwkJCQkJCSAgIExpc3QgKip0YWJsZXNfc2NoZW1hcywgTGlzdCAqKnNl cXVlbmNlc19zY2hlbWFzKQogewogCUxpc3RDZWxsICAgKmNlbGw7CiAJUHVibGljYXRpb25P YmpTcGVjICpwdWJvYmo7CkBAIC0xODksMTMgKzE5NywyMiBAQCBPYmplY3RzSW5QdWJsaWNh dGlvblRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJc3dpdGNoIChwdWJvYmotPnB1Ym9ianR5cGUpCiAJCXsKIAkJCWNhc2UgUFVCTElDQVRJ T05PQkpfVEFCTEU6Ci0JCQkJKnJlbHMgPSBsYXBwZW5kKCpyZWxzLCBwdWJvYmotPnB1YnRh YmxlKTsKKwkJCQkqdGFibGVzID0gbGFwcGVuZCgqdGFibGVzLCBwdWJvYmotPnB1YnRhYmxl KTsKKwkJCQlicmVhazsKKwkJCWNhc2UgUFVCTElDQVRJT05PQkpfU0VRVUVOQ0U6CisJCQkJ KnNlcXVlbmNlcyA9IGxhcHBlbmQoKnNlcXVlbmNlcywgcHVib2JqLT5wdWJ0YWJsZSk7CiAJ CQkJYnJlYWs7CiAJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9TQ0hFTUE6CiAJ CQkJc2NoZW1haWQgPSBnZXRfbmFtZXNwYWNlX29pZChwdWJvYmotPm5hbWUsIGZhbHNlKTsK IAogCQkJCS8qIEZpbHRlciBvdXQgZHVwbGljYXRlcyBpZiB1c2VyIHNwZWNpZmllcyAic2No MSwgc2NoMSIgKi8KLQkJCQkqc2NoZW1hcyA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoKnNj aGVtYXMsIHNjaGVtYWlkKTsKKwkJCQkqdGFibGVzX3NjaGVtYXMgPSBsaXN0X2FwcGVuZF91 bmlxdWVfb2lkKCp0YWJsZXNfc2NoZW1hcywgc2NoZW1haWQpOworCQkJCWJyZWFrOworCQkJ Y2FzZSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRVNfSU5fU0NIRU1BOgorCQkJCXNjaGVtYWlk ID0gZ2V0X25hbWVzcGFjZV9vaWQocHVib2JqLT5uYW1lLCBmYWxzZSk7CisKKwkJCQkvKiBG aWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgdXNlciBzcGVjaWZpZXMgInNjaDEsIHNjaDEiICov CisJCQkJKnNlcXVlbmNlc19zY2hlbWFzID0gbGlzdF9hcHBlbmRfdW5pcXVlX29pZCgqc2Vx dWVuY2VzX3NjaGVtYXMsIHNjaGVtYWlkKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElD QVRJT05PQkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUE6CiAJCQkJc2VhcmNoX3BhdGggPSBmZXRj aF9zZWFyY2hfcGF0aChmYWxzZSk7CkBAIC0yMDgsNyArMjI1LDIwIEBAIE9iamVjdHNJblB1 YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCWxpc3RfZnJlZShzZWFyY2hfcGF0aCk7CiAKIAkJCQkvKiBGaWx0ZXIgb3V0 IGR1cGxpY2F0ZXMgaWYgdXNlciBzcGVjaWZpZXMgInNjaDEsIHNjaDEiICovCi0JCQkJKnNj aGVtYXMgPSBsaXN0X2FwcGVuZF91bmlxdWVfb2lkKCpzY2hlbWFzLCBzY2hlbWFpZCk7CisJ CQkJKnRhYmxlc19zY2hlbWFzID0gbGlzdF9hcHBlbmRfdW5pcXVlX29pZCgqdGFibGVzX3Nj aGVtYXMsIHNjaGVtYWlkKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgUFVCTElDQVRJT05PQkpf U0VRVUVOQ0VTX0lOX0NVUl9TQ0hFTUE6CisJCQkJc2VhcmNoX3BhdGggPSBmZXRjaF9zZWFy Y2hfcGF0aChmYWxzZSk7CisJCQkJaWYgKHNlYXJjaF9wYXRoID09IE5JTCkgLyogbm90aGlu ZyB2YWxpZCBpbiBzZWFyY2hfcGF0aD8gKi8KKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CQllcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX1NDSEVNQSksCisJCQkJCQkJZXJybXNnKCJu byBzY2hlbWEgaGFzIGJlZW4gc2VsZWN0ZWQgZm9yIENVUlJFTlRfU0NIRU1BIikpOworCisJ CQkJc2NoZW1haWQgPSBsaW5pdGlhbF9vaWQoc2VhcmNoX3BhdGgpOworCQkJCWxpc3RfZnJl ZShzZWFyY2hfcGF0aCk7CisKKwkJCQkvKiBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgdXNl ciBzcGVjaWZpZXMgInNjaDEsIHNjaDEiICovCisJCQkJKnNlcXVlbmNlc19zY2hlbWFzID0g bGlzdF9hcHBlbmRfdW5pcXVlX29pZCgqc2VxdWVuY2VzX3NjaGVtYXMsIHNjaGVtYWlkKTsK IAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogc2hvdWxkbid0IGhhcHBlbiAqLwpA QCAtNzM0LDYgKzc2NCw3IEBAIENoZWNrUHViUmVsYXRpb25Db2x1bW5MaXN0KGNoYXIgKnB1 Ym5hbWUsIExpc3QgKnRhYmxlcywKIE9iamVjdEFkZHJlc3MKIENyZWF0ZVB1YmxpY2F0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogewor CUxpc3RDZWxsICAgKmxjOwogCVJlbGF0aW9uCXJlbDsKIAlPYmplY3RBZGRyZXNzIG15c2Vs ZjsKIAlPaWQJCQlwdWJvaWQ7CkBAIC03NDUsOCArNzc2LDI3IEBAIENyZWF0ZVB1YmxpY2F0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQog CWJvb2wJCXB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVuOwogCWJvb2wJCXB1Ymxp c2hfdmlhX3BhcnRpdGlvbl9yb290OwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7Ci0JTGlzdAkg ICAqcmVsYXRpb25zID0gTklMOwotCUxpc3QJICAgKnNjaGVtYWlkbGlzdCA9IE5JTDsKKwlM aXN0CSAgICp0YWJsZXMgPSBOSUw7CisJTGlzdAkgICAqc2VxdWVuY2VzID0gTklMOworCUxp c3QJICAgKnRhYmxlc19zY2hlbWFpZGxpc3QgPSBOSUw7CisJTGlzdAkgICAqc2VxdWVuY2Vz X3NjaGVtYWlkbGlzdCA9IE5JTDsKKworCWJvb2wJCWZvcl9hbGxfdGFibGVzID0gZmFsc2U7 CisJYm9vbAkJZm9yX2FsbF9zZXF1ZW5jZXMgPSBmYWxzZTsKKworCS8qCisJICogVHJhbnNs YXRlIHRoZSBsaXN0IG9mIG9iamVjdCB0eXBlcyAocmVwcmVzZW50ZWQgYnkgc3RyaW5ncykg dG8gYm9vbAorCSAqIGZsYWdzLgorCSAqLworCWZvcmVhY2gobGMsIHN0bXQtPmZvcl9hbGxf b2JqZWN0cykKKwl7CisJCWNoYXIJICAgKnZhbCA9IHN0clZhbChsZmlyc3QobGMpKTsKKwor CQlpZiAoc3RyY21wKHZhbCwgInRhYmxlcyIpID09IDApCisJCQlmb3JfYWxsX3RhYmxlcyA9 IHRydWU7CisJCWVsc2UgaWYgKHN0cmNtcCh2YWwsICJzZXF1ZW5jZXMiKSA9PSAwKQorCQkJ Zm9yX2FsbF9zZXF1ZW5jZXMgPSB0cnVlOworCX0KIAogCS8qIG11c3QgaGF2ZSBDUkVBVEUg cHJpdmlsZWdlIG9uIGRhdGFiYXNlICovCiAJYWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNr KERhdGFiYXNlUmVsYXRpb25JZCwgTXlEYXRhYmFzZUlkLCBHZXRVc2VySWQoKSwgQUNMX0NS RUFURSk7CkBAIC03NTUsMTEgKzgwNSwxNyBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0 YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJCQkJICAgZ2V0 X2RhdGFiYXNlX25hbWUoTXlEYXRhYmFzZUlkKSk7CiAKIAkvKiBGT1IgQUxMIFRBQkxFUyBy ZXF1aXJlcyBzdXBlcnVzZXIgKi8KLQlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMgJiYgIXN1 cGVydXNlcigpKQorCWlmIChmb3JfYWxsX3RhYmxlcyAmJiAhc3VwZXJ1c2VyKCkpCiAJCWVy ZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklM RUdFKSwKIAkJCQkgZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciB0byBjcmVhdGUgRk9SIEFM TCBUQUJMRVMgcHVibGljYXRpb24iKSkpOwogCisJLyogRk9SIEFMTCBTRVFVRU5DRVMgcmVx dWlyZXMgc3VwZXJ1c2VyICovCisJaWYgKGZvcl9hbGxfc2VxdWVuY2VzICYmICFzdXBlcnVz ZXIoKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklD SUVOVF9QUklWSUxFR0UpLAorCQkJCSBlcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGNy ZWF0ZSBGT1IgQUxMIFNFUVVFTkNFUyBwdWJsaWNhdGlvbiIpKSk7CisKIAlyZWwgPSB0YWJs ZV9vcGVuKFB1YmxpY2F0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAkv KiBDaGVjayBpZiBuYW1lIGlzIHVzZWQgKi8KQEAgLTc4OSw3ICs4NDUsOSBAQCBDcmVhdGVQ dWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAq c3RtdCkKIAkJCQkJCQkJQW51bV9wZ19wdWJsaWNhdGlvbl9vaWQpOwogCXZhbHVlc1tBbnVt X3BnX3B1YmxpY2F0aW9uX29pZCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShwdWJvaWQpOwog CXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmFsbHRhYmxlcyAtIDFdID0KLQkJQm9v bEdldERhdHVtKHN0bXQtPmZvcl9hbGxfdGFibGVzKTsKKwkJQm9vbEdldERhdHVtKGZvcl9h bGxfdGFibGVzKTsKKwl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJhbGxzZXF1ZW5j ZXMgLSAxXSA9CisJCUJvb2xHZXREYXR1bShmb3JfYWxsX3NlcXVlbmNlcyk7CiAJdmFsdWVz W0FudW1fcGdfcHVibGljYXRpb25fcHViaW5zZXJ0IC0gMV0gPQogCQlCb29sR2V0RGF0dW0o cHViYWN0aW9ucy5wdWJpbnNlcnQpOwogCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1 YnVwZGF0ZSAtIDFdID0KQEAgLTc5OCw2ICs4NTYsOCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJQm9v bEdldERhdHVtKHB1YmFjdGlvbnMucHViZGVsZXRlKTsKIAl2YWx1ZXNbQW51bV9wZ19wdWJs aWNhdGlvbl9wdWJ0cnVuY2F0ZSAtIDFdID0KIAkJQm9vbEdldERhdHVtKHB1YmFjdGlvbnMu cHVidHJ1bmNhdGUpOworCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnNlcXVlbmNl IC0gMV0gPQorCQlCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJzZXF1ZW5jZSk7CiAJdmFs dWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVidmlhcm9vdCAtIDFdID0KIAkJQm9vbEdldERh dHVtKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKIApAQCAtODE1LDQ2ICs4NzUsODgg QEAgQ3JlYXRlUHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNh dGlvblN0bXQgKnN0bXQpCiAJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKIAogCS8qIEFz c29jaWF0ZSBvYmplY3RzIHdpdGggdGhlIHB1YmxpY2F0aW9uLiAqLwotCWlmIChzdG10LT5m b3JfYWxsX3RhYmxlcykKKwlpZiAoZm9yX2FsbF90YWJsZXMgfHwgZm9yX2FsbF9zZXF1ZW5j ZXMpCiAJewogCQkvKiBJbnZhbGlkYXRlIHJlbGNhY2hlIHNvIHRoYXQgcHVibGljYXRpb24g aW5mbyBpcyByZWJ1aWx0LiAqLwogCQlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUFsbCgpOwog CX0KLQllbHNlCisKKwkvKgorCSAqIElmIHRoZSBwdWJsaWNhdGlvbiBtaWdodCBoYXZlIGVp dGhlciB0YWJsZXMgb3Igc2VxdWVuY2VzIChkaXJlY3RseSBvcgorCSAqIHRocm91Z2ggYSBz Y2hlbWEpLCBwcm9jZXNzIHRoYXQuCisJICovCisJaWYgKCFmb3JfYWxsX3RhYmxlcyB8fCAh Zm9yX2FsbF9zZXF1ZW5jZXMpCiAJewotCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhz dG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCi0JCQkJCQkJCSAgICZzY2hl bWFpZGxpc3QpOworCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmpl Y3RzLCBwc3RhdGUsCisJCQkJCQkJCSAgICZ0YWJsZXMsICZzZXF1ZW5jZXMsCisJCQkJCQkJ CSAgICZ0YWJsZXNfc2NoZW1haWRsaXN0LAorCQkJCQkJCQkgICAmc2VxdWVuY2VzX3NjaGVt YWlkbGlzdCk7CiAKIAkJLyogRk9SIFRBQkxFUyBJTiBTQ0hFTUEgcmVxdWlyZXMgc3VwZXJ1 c2VyICovCi0JCWlmIChzY2hlbWFpZGxpc3QgIT0gTklMICYmICFzdXBlcnVzZXIoKSkKKwkJ aWYgKHRhYmxlc19zY2hlbWFpZGxpc3QgIT0gTklMICYmICFzdXBlcnVzZXIoKSkKIAkJCWVy ZXBvcnQoRVJST1IsCiAJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklM RUdFKSwKIAkJCQkJZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciB0byBjcmVhdGUgRk9SIFRB QkxFUyBJTiBTQ0hFTUEgcHVibGljYXRpb24iKSk7CiAKLQkJaWYgKHJlbGF0aW9ucyAhPSBO SUwpCisJCS8qIEZPUiBTRVFVRU5DRVMgSU4gU0NIRU1BIHJlcXVpcmVzIHN1cGVydXNlciAq LworCQlpZiAoc2VxdWVuY2VzX3NjaGVtYWlkbGlzdCAhPSBOSUwgJiYgIXN1cGVydXNlcigp KQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVO VF9QUklWSUxFR0UpLAorCQkJCQllcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGNyZWF0 ZSBGT1IgQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHVibGljYXRpb24iKSk7CisKKwkJLyog dGFibGVzIGFkZGVkIGRpcmVjdGx5ICovCisJCWlmICh0YWJsZXMgIT0gTklMKQogCQl7CiAJ CQlMaXN0CSAgICpyZWxzOwogCi0JCQlyZWxzID0gT3BlblRhYmxlTGlzdChyZWxhdGlvbnMp OworCQkJcmVscyA9IE9wZW5SZWxhdGlvbkxpc3QodGFibGVzLCBQVUJfT0JKVFlQRV9UQUJM RSk7CisKIAkJCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhyZWxzLCBwc3RhdGUtPnBfc291 cmNldGV4dCwKIAkJCQkJCQkJCSBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCk7CiAKIAkJ CUNoZWNrUHViUmVsYXRpb25Db2x1bW5MaXN0KHN0bXQtPnB1Ym5hbWUsIHJlbHMsCi0JCQkJ CQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklMLAorCQkJCQkJCQkJICAgdGFibGVzX3NjaGVt YWlkbGlzdCAhPSBOSUwsCiAJCQkJCQkJCQkgICBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9v dCk7CiAKLQkJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVM TCk7Ci0JCQlDbG9zZVRhYmxlTGlzdChyZWxzKTsKKwkJCVB1YmxpY2F0aW9uQWRkUmVsYXRp b25zKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7CisJCQlDbG9zZVJlbGF0aW9uTGlzdChy ZWxzKTsKKwkJfQorCisJCS8qIHNlcXVlbmNlcyBhZGRlZCBkaXJlY3RseSAqLworCQlpZiAo c2VxdWVuY2VzICE9IE5JTCkKKwkJeworCQkJTGlzdAkgICAqcmVsczsKKworCQkJcmVscyA9 IE9wZW5SZWxhdGlvbkxpc3Qoc2VxdWVuY2VzLCBQVUJfT0JKVFlQRV9TRVFVRU5DRSk7CisK KwkJCVB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCk7 CisJCQlDbG9zZVJlbGF0aW9uTGlzdChyZWxzKTsKIAkJfQogCi0JCWlmIChzY2hlbWFpZGxp c3QgIT0gTklMKQorCQkvKiB0YWJsZXMgYWRkZWQgdGhyb3VnaCBhIHNjaGVtYSAqLworCQlp ZiAodGFibGVzX3NjaGVtYWlkbGlzdCAhPSBOSUwpCiAJCXsKIAkJCS8qCiAJCQkgKiBTY2hl bWEgbG9jayBpcyBoZWxkIHVudGlsIHRoZSBwdWJsaWNhdGlvbiBpcyBjcmVhdGVkIHRvIHBy ZXZlbnQKIAkJCSAqIGNvbmN1cnJlbnQgc2NoZW1hIGRlbGV0aW9uLgogCQkJICovCi0JCQlM b2NrU2NoZW1hTGlzdChzY2hlbWFpZGxpc3QpOwotCQkJUHVibGljYXRpb25BZGRTY2hlbWFz KHB1Ym9pZCwgc2NoZW1haWRsaXN0LCB0cnVlLCBOVUxMKTsKKwkJCUxvY2tTY2hlbWFMaXN0 KHRhYmxlc19zY2hlbWFpZGxpc3QpOworCQkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1Ym9p ZCwKKwkJCQkJCQkJICB0YWJsZXNfc2NoZW1haWRsaXN0LCBQVUJfT0JKVFlQRV9UQUJMRSwK KwkJCQkJCQkJICB0cnVlLCBOVUxMKTsKKwkJfQorCisJCS8qIHNlcXVlbmNlcyBhZGRlZCB0 aHJvdWdoIGEgc2NoZW1hICovCisJCWlmIChzZXF1ZW5jZXNfc2NoZW1haWRsaXN0ICE9IE5J TCkKKwkJeworCQkJLyoKKwkJCSAqIFNjaGVtYSBsb2NrIGlzIGhlbGQgdW50aWwgdGhlIHB1 YmxpY2F0aW9uIGlzIGNyZWF0ZWQgdG8gcHJldmVudAorCQkJICogY29uY3VycmVudCBzY2hl bWEgZGVsZXRpb24uCisJCQkgKi8KKwkJCUxvY2tTY2hlbWFMaXN0KHNlcXVlbmNlc19zY2hl bWFpZGxpc3QpOworCQkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1Ym9pZCwKKwkJCQkJCQkJ ICBzZXF1ZW5jZXNfc2NoZW1haWRsaXN0LCBQVUJfT0JKVFlQRV9TRVFVRU5DRSwKKwkJCQkJ CQkJICB0cnVlLCBOVUxMKTsKIAkJfQogCX0KIApAQCAtOTE3LDYgKzEwMTksNyBAQCBBbHRl clB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LAogCQkJCQkJICAgQWNjZXNzU2hhcmVMb2NrKTsKIAogCQlyb290X3Jl bGlkcyA9IEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKKwkJCQkJCQkJ CQkJICBQVUJfT0JKVFlQRV9UQUJMRSwKIAkJCQkJCQkJCQkJICBQVUJMSUNBVElPTl9QQVJU X1JPT1QpOwogCiAJCWZvcmVhY2gobGMsIHJvb3RfcmVsaWRzKQpAQCAtOTk2LDYgKzEwOTks OSBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVy UHVibGljYXRpb25TdG10ICpzdG10LAogCiAJCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9u X3B1YnRydW5jYXRlIC0gMV0gPSBCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJ0cnVuY2F0 ZSk7CiAJCXJlcGxhY2VzW0FudW1fcGdfcHVibGljYXRpb25fcHVidHJ1bmNhdGUgLSAxXSA9 IHRydWU7CisKKwkJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVic2VxdWVuY2UgLSAx XSA9IEJvb2xHZXREYXR1bShwdWJhY3Rpb25zLnB1YnNlcXVlbmNlKTsKKwkJcmVwbGFjZXNb QW51bV9wZ19wdWJsaWNhdGlvbl9wdWJzZXF1ZW5jZSAtIDFdID0gdHJ1ZTsKIAl9CiAKIAlp ZiAocHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3RfZ2l2ZW4pCkBAIC0xMDE1LDcgKzExMjEs NyBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVy UHVibGljYXRpb25TdG10ICpzdG10LAogCXB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlv bikgR0VUU1RSVUNUKHR1cCk7CiAKIAkvKiBJbnZhbGlkYXRlIHRoZSByZWxjYWNoZS4gKi8K LQlpZiAocHViZm9ybS0+cHViYWxsdGFibGVzKQorCWlmIChwdWJmb3JtLT5wdWJhbGx0YWJs ZXMgfHwgcHViZm9ybS0+cHViYWxsc2VxdWVuY2VzKQogCXsKIAkJQ2FjaGVJbnZhbGlkYXRl UmVsY2FjaGVBbGwoKTsKIAl9CkBAIC0xMDMxLDYgKzExMzcsNyBAQCBBbHRlclB1YmxpY2F0 aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpz dG10LAogCQkgKi8KIAkJaWYgKHJvb3RfcmVsaWRzID09IE5JTCkKIAkJCXJlbGlkcyA9IEdl dFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmZvcm0tPm9pZCwKKwkJCQkJCQkJCQkJIFBVQl9P QkpUWVBFX1RBQkxFLAogCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9BTEwpOwogCQll bHNlCiAJCXsKQEAgLTEwNDQsNyArMTE1MSwyMCBAQCBBbHRlclB1YmxpY2F0aW9uT3B0aW9u cyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQkJ CQkJCQkJCQkJCQlsZmlyc3Rfb2lkKGxjKSk7CiAJCX0KIAorCQkvKiB0YWJsZXMgKi8KIAkJ c2NoZW1hcmVsaWRzID0gR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlvbnMocHViZm9y bS0+b2lkLAorCQkJCQkJCQkJCQkJCQlQVUJfT0JKVFlQRV9UQUJMRSwKKwkJCQkJCQkJCQkJ CQkJUFVCTElDQVRJT05fUEFSVF9BTEwpOworCQlyZWxpZHMgPSBsaXN0X2NvbmNhdF91bmlx dWVfb2lkKHJlbGlkcywgc2NoZW1hcmVsaWRzKTsKKworCQkvKiBzZXF1ZW5jZXMgKi8KKwkJ cmVsaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChyZWxpZHMsCisJCQkJCQkJCQkJR2V0 UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkJCQkJCVBV Ql9PQkpUWVBFX1NFUVVFTkNFLAorCQkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRf QUxMKSk7CisKKwkJc2NoZW1hcmVsaWRzID0gR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxh dGlvbnMocHViZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkJCQlQVUJfT0JKVFlQRV9TRVFVRU5D RSwKIAkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9BTEwpOwogCQlyZWxpZHMgPSBs aXN0X2NvbmNhdF91bmlxdWVfb2lkKHJlbGlkcywgc2NoZW1hcmVsaWRzKTsKIApAQCAtMTA5 OSw3ICsxMjE5LDcgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9u U3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAlpZiAoIXRhYmxlcyAmJiBzdG10LT5hY3Rp b24gIT0gQVBfU2V0T2JqZWN0cykKIAkJcmV0dXJuOwogCi0JcmVscyA9IE9wZW5UYWJsZUxp c3QodGFibGVzKTsKKwlyZWxzID0gT3BlblJlbGF0aW9uTGlzdCh0YWJsZXMsIFBVQl9PQkpU WVBFX1RBQkxFKTsKIAogCWlmIChzdG10LT5hY3Rpb24gPT0gQVBfQWRkT2JqZWN0cykKIAl7 CkBAIC0xMTEwLDEzICsxMjMwLDE0IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQ dWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCUNoZWNrUHViUmVsYXRp b25Db2x1bW5MaXN0KHN0bXQtPnB1Ym5hbWUsIHJlbHMsIHB1Ymxpc2hfc2NoZW1hLAogCQkJ CQkJCQkgICBwdWJmb3JtLT5wdWJ2aWFyb290KTsKIAotCQlQdWJsaWNhdGlvbkFkZFRhYmxl cyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQpOworCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9u cyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQpOwogCX0KIAllbHNlIGlmIChzdG10LT5hY3Rp b24gPT0gQVBfRHJvcE9iamVjdHMpCi0JCVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhwdWJpZCwg cmVscywgZmFsc2UpOworCQlQdWJsaWNhdGlvbkRyb3BSZWxhdGlvbnMocHViaWQsIHJlbHMs IGZhbHNlKTsKIAllbHNlCQkJCQkJLyogQVBfU2V0T2JqZWN0cyAqLwogCXsKIAkJTGlzdAkg ICAqb2xkcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCisJCQkJCQkJ CQkJCQkJCVBVQl9PQkpUWVBFX1RBQkxFLAogCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9Q QVJUX1JPT1QpOwogCQlMaXN0CSAgICpkZWxyZWxzID0gTklMOwogCQlMaXN0Q2VsbCAgICpv bGRsYzsKQEAgLTEyMzMsMTggKzEzNTQsMTggQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhB bHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJfQogCiAJCS8q IEFuZCBkcm9wIHRoZW0uICovCi0JCVB1YmxpY2F0aW9uRHJvcFRhYmxlcyhwdWJpZCwgZGVs cmVscywgdHJ1ZSk7CisJCVB1YmxpY2F0aW9uRHJvcFJlbGF0aW9ucyhwdWJpZCwgZGVscmVs cywgdHJ1ZSk7CiAKIAkJLyoKIAkJICogRG9uJ3QgYm90aGVyIGNhbGN1bGF0aW5nIHRoZSBk aWZmZXJlbmNlIGZvciBhZGRpbmcsIHdlJ2xsIGNhdGNoIGFuZAogCQkgKiBza2lwIGV4aXN0 aW5nIG9uZXMgd2hlbiBkb2luZyBjYXRhbG9nIHVwZGF0ZS4KIAkJICovCi0JCVB1YmxpY2F0 aW9uQWRkVGFibGVzKHB1YmlkLCByZWxzLCB0cnVlLCBzdG10KTsKKwkJUHVibGljYXRpb25B ZGRSZWxhdGlvbnMocHViaWQsIHJlbHMsIHRydWUsIHN0bXQpOwogCi0JCUNsb3NlVGFibGVM aXN0KGRlbHJlbHMpOworCQlDbG9zZVJlbGF0aW9uTGlzdChkZWxyZWxzKTsKIAl9CiAKLQlD bG9zZVRhYmxlTGlzdChyZWxzKTsKKwlDbG9zZVJlbGF0aW9uTGlzdChyZWxzKTsKIH0KIAog LyoKQEAgLTEyNTQsNyArMTM3NSw4IEBAIEFsdGVyUHVibGljYXRpb25UYWJsZXMoQWx0ZXJQ dWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAgKi8KIHN0YXRpYyB2b2lk CiBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwK LQkJCQkJCUhlYXBUdXBsZSB0dXAsIExpc3QgKnNjaGVtYWlkbGlzdCkKKwkJCQkJCUhlYXBU dXBsZSB0dXAsIExpc3QgKnNjaGVtYWlkbGlzdCwKKwkJCQkJCWNoYXIgb2JqZWN0VHlwZSkK IHsKIAlGb3JtX3BnX3B1YmxpY2F0aW9uIHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlv bikgR0VUU1RSVUNUKHR1cCk7CiAKQEAgLTEyNzYsNyArMTM5OCw3IEBAIEFsdGVyUHVibGlj YXRpb25TY2hlbWFzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAogCQlMaXN0Q2VsbCAg ICpsYzsKIAkJTGlzdAkgICAqcmVsb2lkczsKIAotCQlyZWxvaWRzID0gR2V0UHVibGljYXRp b25SZWxhdGlvbnMocHViZm9ybS0+b2lkLCBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQly ZWxvaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlvbnMocHViZm9ybS0+b2lkLCBvYmplY3RU eXBlLCBQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwogCiAJCWZvcmVhY2gobGMsIHJlbG9pZHMp CiAJCXsKQEAgLTEzMDMsMTMgKzE0MjUsMTMgQEAgQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMo QWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJCQlSZWxlYXNlU3lzQ2FjaGUoY29sdHVw bGUpOwogCQl9CiAKLQkJUHVibGljYXRpb25BZGRTY2hlbWFzKHB1YmZvcm0tPm9pZCwgc2No ZW1haWRsaXN0LCBmYWxzZSwgc3RtdCk7CisJCVB1YmxpY2F0aW9uQWRkU2NoZW1hcyhwdWJm b3JtLT5vaWQsIHNjaGVtYWlkbGlzdCwgb2JqZWN0VHlwZSwgZmFsc2UsIHN0bXQpOwogCX0K IAllbHNlIGlmIChzdG10LT5hY3Rpb24gPT0gQVBfRHJvcE9iamVjdHMpCi0JCVB1YmxpY2F0 aW9uRHJvcFNjaGVtYXMocHViZm9ybS0+b2lkLCBzY2hlbWFpZGxpc3QsIGZhbHNlKTsKKwkJ UHVibGljYXRpb25Ecm9wU2NoZW1hcyhwdWJmb3JtLT5vaWQsIHNjaGVtYWlkbGlzdCwgb2Jq ZWN0VHlwZSwgZmFsc2UpOwogCWVsc2UJCQkJCQkvKiBBUF9TZXRPYmplY3RzICovCiAJewot CQlMaXN0CSAgICpvbGRzY2hlbWFpZHMgPSBHZXRQdWJsaWNhdGlvblNjaGVtYXMocHViZm9y bS0+b2lkKTsKKwkJTGlzdAkgICAqb2xkc2NoZW1haWRzID0gR2V0UHVibGljYXRpb25TY2hl bWFzKHB1YmZvcm0tPm9pZCwgb2JqZWN0VHlwZSk7CiAJCUxpc3QJICAgKmRlbHNjaGVtYXMg PSBOSUw7CiAKIAkJLyogSWRlbnRpZnkgd2hpY2ggc2NoZW1hcyBzaG91bGQgYmUgZHJvcHBl ZCAqLwpAQCAtMTMyMiwxMyArMTQ0NCwxMyBAQCBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhB bHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwKIAkJTG9ja1NjaGVtYUxpc3QoZGVsc2NoZW1h cyk7CiAKIAkJLyogQW5kIGRyb3AgdGhlbSAqLwotCQlQdWJsaWNhdGlvbkRyb3BTY2hlbWFz KHB1YmZvcm0tPm9pZCwgZGVsc2NoZW1hcywgdHJ1ZSk7CisJCVB1YmxpY2F0aW9uRHJvcFNj aGVtYXMocHViZm9ybS0+b2lkLCBkZWxzY2hlbWFzLCBvYmplY3RUeXBlLCB0cnVlKTsKIAog CQkvKgogCQkgKiBEb24ndCBib3RoZXIgY2FsY3VsYXRpbmcgdGhlIGRpZmZlcmVuY2UgZm9y IGFkZGluZywgd2UnbGwgY2F0Y2ggYW5kCiAJCSAqIHNraXAgZXhpc3Rpbmcgb25lcyB3aGVu IGRvaW5nIGNhdGFsb2cgdXBkYXRlLgogCQkgKi8KLQkJUHVibGljYXRpb25BZGRTY2hlbWFz KHB1YmZvcm0tPm9pZCwgc2NoZW1haWRsaXN0LCB0cnVlLCBzdG10KTsKKwkJUHVibGljYXRp b25BZGRTY2hlbWFzKHB1YmZvcm0tPm9pZCwgc2NoZW1haWRsaXN0LCBvYmplY3RUeXBlLCB0 cnVlLCBzdG10KTsKIAl9CiB9CiAKQEAgLTEzMzgsMTIgKzE0NjAsMTMgQEAgQWx0ZXJQdWJs aWNhdGlvblNjaGVtYXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAgKi8KIHN0YXRp YyB2b2lkCiBDaGVja0FsdGVyUHVibGljYXRpb24oQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0 bXQsIEhlYXBUdXBsZSB0dXAsCi0JCQkJCSAgTGlzdCAqdGFibGVzLCBMaXN0ICpzY2hlbWFp ZGxpc3QpCisJCQkJCSAgTGlzdCAqdGFibGVzLCBMaXN0ICp0YWJsZXNfc2NoZW1haWRsaXN0 LAorCQkJCQkgIExpc3QgKnNlcXVlbmNlcywgTGlzdCAqc2VxdWVuY2VzX3NjaGVtYWlkbGlz dCkKIHsKIAlGb3JtX3BnX3B1YmxpY2F0aW9uIHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNh dGlvbikgR0VUU1RSVUNUKHR1cCk7CiAKIAlpZiAoKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRP YmplY3RzIHx8IHN0bXQtPmFjdGlvbiA9PSBBUF9TZXRPYmplY3RzKSAmJgotCQlzY2hlbWFp ZGxpc3QgJiYgIXN1cGVydXNlcigpKQorCQkodGFibGVzX3NjaGVtYWlkbGlzdCB8fCBzZXF1 ZW5jZXNfc2NoZW1haWRsaXN0KSAmJiAhc3VwZXJ1c2VyKCkpCiAJCWVyZXBvcnQoRVJST1Is CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKIAkJCQkg ZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciB0byBhZGQgb3Igc2V0IHNjaGVtYXMiKSkpOwpA QCAtMTM1MiwxMyArMTQ3NSwyNCBAQCBDaGVja0FsdGVyUHVibGljYXRpb24oQWx0ZXJQdWJs aWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJICogQ2hlY2sgdGhhdCB1c2Vy IGlzIGFsbG93ZWQgdG8gbWFuaXB1bGF0ZSB0aGUgcHVibGljYXRpb24gdGFibGVzIGluCiAJ ICogc2NoZW1hCiAJICovCi0JaWYgKHNjaGVtYWlkbGlzdCAmJiBwdWJmb3JtLT5wdWJhbGx0 YWJsZXMpCisJaWYgKHRhYmxlc19zY2hlbWFpZGxpc3QgJiYgcHViZm9ybS0+cHViYWxsdGFi bGVzKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCSBlcnJtc2coInB1YmxpY2F0aW9uIFwi JXNcIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTIiwKIAkJCQkJCU5hbWVTdHIocHVi Zm9ybS0+cHVibmFtZSkpLAogCQkJCSBlcnJkZXRhaWwoIlNjaGVtYXMgY2Fubm90IGJlIGFk ZGVkIHRvIG9yIGRyb3BwZWQgZnJvbSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuIikp KTsKIAorCS8qCisJICogQ2hlY2sgdGhhdCB1c2VyIGlzIGFsbG93ZWQgdG8gbWFuaXB1bGF0 ZSB0aGUgcHVibGljYXRpb24gc2VxdWVuY2VzIGluCisJICogc2NoZW1hCisJICovCisJaWYg KHNlcXVlbmNlc19zY2hlbWFpZGxpc3QgJiYgcHViZm9ybS0+cHViYWxsc2VxdWVuY2VzKQor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9Q UkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBp cyBkZWZpbmVkIGFzIEZPUiBBTEwgU0VRVUVOQ0VTIiwKKwkJCQkJCU5hbWVTdHIocHViZm9y bS0+cHVibmFtZSkpLAorCQkJCSBlcnJkZXRhaWwoIlNlcXVlbmNlcyBmcm9tIHNjaGVtYSBj YW5ub3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIEZPUiBBTEwgU0VR VUVOQ0VTIHB1YmxpY2F0aW9ucy4iKSkpOworCiAJLyogQ2hlY2sgdGhhdCB1c2VyIGlzIGFs bG93ZWQgdG8gbWFuaXB1bGF0ZSB0aGUgcHVibGljYXRpb24gdGFibGVzLiAqLwogCWlmICh0 YWJsZXMgJiYgcHViZm9ybS0+cHViYWxsdGFibGVzKQogCQllcmVwb3J0KEVSUk9SLApAQCAt MTM2Niw2ICsxNTAwLDEwNyBAQCBDaGVja0FsdGVyUHVibGljYXRpb24oQWx0ZXJQdWJsaWNh dGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAsCiAJCQkJIGVycm1zZygicHVibGljYXRp b24gXCIlc1wiIGlzIGRlZmluZWQgYXMgRk9SIEFMTCBUQUJMRVMiLAogCQkJCQkJTmFtZVN0 cihwdWJmb3JtLT5wdWJuYW1lKSksCiAJCQkJIGVycmRldGFpbCgiVGFibGVzIGNhbm5vdCBi ZSBhZGRlZCB0byBvciBkcm9wcGVkIGZyb20gRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb25z LiIpKSk7CisKKwkvKiBDaGVjayB0aGF0IHVzZXIgaXMgYWxsb3dlZCB0byBtYW5pcHVsYXRl IHRoZSBwdWJsaWNhdGlvbiBzZXF1ZW5jZXMuICovCisJaWYgKHNlcXVlbmNlcyAmJiBwdWJm b3JtLT5wdWJhbGxzZXF1ZW5jZXMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1z ZygicHVibGljYXRpb24gXCIlc1wiIGlzIGRlZmluZWQgYXMgRk9SIEFMTCBTRVFVRU5DRVMi LAorCQkJCQkJTmFtZVN0cihwdWJmb3JtLT5wdWJuYW1lKSksCisJCQkJIGVycmRldGFpbCgi U2VxdWVuY2VzIGNhbm5vdCBiZSBhZGRlZCB0byBvciBkcm9wcGVkIGZyb20gRk9SIEFMTCBT RVFVRU5DRVMgcHVibGljYXRpb25zLiIpKSk7Cit9CisKKy8qCisgKiBBZGQgb3IgcmVtb3Zl IHRhYmxlIHRvL2Zyb20gcHVibGljYXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCitBbHRlclB1 YmxpY2F0aW9uU2VxdWVuY2VzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVw bGUgdHVwLAorCQkJCQkJICBMaXN0ICpzZXF1ZW5jZXMpCit7CisJTGlzdAkgICAqcmVscyA9 IE5JTDsKKwlGb3JtX3BnX3B1YmxpY2F0aW9uIHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNh dGlvbikgR0VUU1RSVUNUKHR1cCk7CisJT2lkCQkJcHViaWQgPSBwdWJmb3JtLT5vaWQ7CisK KwkvKgorCSAqIE5vdGhpbmcgdG8gZG8gaWYgbm8gb2JqZWN0cywgZXhjZXB0IGluIFNFVDog Zm9yIHRoYXQgaXQgaXMgcXVpdGUKKwkgKiBwb3NzaWJsZSB0aGF0IHVzZXIgaGFzIG5vdCBz cGVjaWZpZWQgYW55IHRhYmxlcyBpbiB3aGljaCBjYXNlIHdlIG5lZWQKKwkgKiB0byByZW1v dmUgYWxsIHRoZSBleGlzdGluZyB0YWJsZXMuCisJICovCisJaWYgKCFzZXF1ZW5jZXMgJiYg c3RtdC0+YWN0aW9uICE9IEFQX1NldE9iamVjdHMpCisJCXJldHVybjsKKworCXJlbHMgPSBP cGVuUmVsYXRpb25MaXN0KHNlcXVlbmNlcywgUFVCX09CSlRZUEVfU0VRVUVOQ0UpOworCisJ aWYgKHN0bXQtPmFjdGlvbiA9PSBBUF9BZGRPYmplY3RzKQorCXsKKwkJUHVibGljYXRpb25B ZGRSZWxhdGlvbnMocHViaWQsIHJlbHMsIGZhbHNlLCBzdG10KTsKKwl9CisJZWxzZSBpZiAo c3RtdC0+YWN0aW9uID09IEFQX0Ryb3BPYmplY3RzKQorCQlQdWJsaWNhdGlvbkRyb3BSZWxh dGlvbnMocHViaWQsIHJlbHMsIGZhbHNlKTsKKwllbHNlCQkJCQkJLyogQVBfU2V0T2JqZWN0 cyAqLworCXsKKwkJTGlzdAkgICAqb2xkcmVsaWRzID0gR2V0UHVibGljYXRpb25SZWxhdGlv bnMocHViaWQsCisJCQkJCQkJCQkJCQkJCVBVQl9PQkpUWVBFX1NFUVVFTkNFLAorCQkJCQkJ CQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QpOworCQlMaXN0CSAgICpkZWxyZWxzID0g TklMOworCQlMaXN0Q2VsbCAgICpvbGRsYzsKKworCQkvKgorCQkgKiBUbyByZWNyZWF0ZSB0 aGUgcmVsYXRpb24gbGlzdCBmb3IgdGhlIHB1YmxpY2F0aW9uLCBsb29rIGZvcgorCQkgKiBl eGlzdGluZyByZWxhdGlvbnMgdGhhdCBkbyBub3QgbmVlZCB0byBiZSBkcm9wcGVkLgorCQkg Ki8KKwkJZm9yZWFjaChvbGRsYywgb2xkcmVsaWRzKQorCQl7CisJCQlPaWQJCQlvbGRyZWxp ZCA9IGxmaXJzdF9vaWQob2xkbGMpOworCQkJTGlzdENlbGwgICAqbmV3bGM7CisJCQlQdWJs aWNhdGlvblJlbEluZm8gKm9sZHJlbDsKKwkJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkJ CWZvcmVhY2gobmV3bGMsIHJlbHMpCisJCQl7CisJCQkJUHVibGljYXRpb25SZWxJbmZvICpu ZXdwdWJyZWw7CisKKwkJCQluZXdwdWJyZWwgPSAoUHVibGljYXRpb25SZWxJbmZvICopIGxm aXJzdChuZXdsYyk7CisKKwkJCQkvKgorCQkJCSAqIENoZWNrIGlmIGFueSBvZiB0aGUgbmV3 IHNldCBvZiByZWxhdGlvbnMgbWF0Y2hlcyB3aXRoIHRoZQorCQkJCSAqIGV4aXN0aW5nIHJl bGF0aW9ucyBpbiB0aGUgcHVibGljYXRpb24uCisJCQkJICovCisJCQkJaWYgKFJlbGF0aW9u R2V0UmVsaWQobmV3cHVicmVsLT5yZWxhdGlvbikgPT0gb2xkcmVsaWQpCisJCQkJeworCQkJ CQlmb3VuZCA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKworCQkJLyoKKwkJ CSAqIEFkZCB0aGUgbm9uLW1hdGNoZWQgcmVsYXRpb25zIHRvIGEgbGlzdCBzbyB0aGF0IHRo ZXkgY2FuIGJlCisJCQkgKiBkcm9wcGVkLgorCQkJICovCisJCQlpZiAoIWZvdW5kKQorCQkJ eworCQkJCW9sZHJlbCA9IHBhbGxvYyhzaXplb2YoUHVibGljYXRpb25SZWxJbmZvKSk7CisJ CQkJb2xkcmVsLT53aGVyZUNsYXVzZSA9IE5VTEw7CisJCQkJb2xkcmVsLT5jb2x1bW5zID0g TklMOworCQkJCW9sZHJlbC0+cmVsYXRpb24gPSB0YWJsZV9vcGVuKG9sZHJlbGlkLAorCQkJ CQkJCQkJCQkgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJCQkJZGVscmVscyA9IGxh cHBlbmQoZGVscmVscywgb2xkcmVsKTsKKwkJCX0KKwkJfQorCisJCS8qIEFuZCBkcm9wIHRo ZW0uICovCisJCVB1YmxpY2F0aW9uRHJvcFJlbGF0aW9ucyhwdWJpZCwgZGVscmVscywgdHJ1 ZSk7CisKKwkJLyoKKwkJICogRG9uJ3QgYm90aGVyIGNhbGN1bGF0aW5nIHRoZSBkaWZmZXJl bmNlIGZvciBhZGRpbmcsIHdlJ2xsIGNhdGNoIGFuZAorCQkgKiBza2lwIGV4aXN0aW5nIG9u ZXMgd2hlbiBkb2luZyBjYXRhbG9nIHVwZGF0ZS4KKwkJICovCisJCVB1YmxpY2F0aW9uQWRk UmVsYXRpb25zKHB1YmlkLCByZWxzLCB0cnVlLCBzdG10KTsKKworCQlDbG9zZVJlbGF0aW9u TGlzdChkZWxyZWxzKTsKKwl9CisKKwlDbG9zZVJlbGF0aW9uTGlzdChyZWxzKTsKIH0KIAog LyoKQEAgLTE0MDMsMTQgKzE2MzgsMjAgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRl ICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQogCQlBbHRlclB1YmxpY2F0 aW9uT3B0aW9ucyhwc3RhdGUsIHN0bXQsIHJlbCwgdHVwKTsKIAllbHNlCiAJewotCQlMaXN0 CSAgICpyZWxhdGlvbnMgPSBOSUw7Ci0JCUxpc3QJICAgKnNjaGVtYWlkbGlzdCA9IE5JTDsK KwkJTGlzdAkgICAqdGFibGVzID0gTklMOworCQlMaXN0CSAgICpzZXF1ZW5jZXMgPSBOSUw7 CisJCUxpc3QJICAgKnRhYmxlc19zY2hlbWFpZGxpc3QgPSBOSUw7CisJCUxpc3QJICAgKnNl cXVlbmNlc19zY2hlbWFpZGxpc3QgPSBOSUw7CiAJCU9pZAkJCXB1YmlkID0gcHViZm9ybS0+ b2lkOwogCi0JCU9iamVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9iamVjdHMs IHBzdGF0ZSwgJnJlbGF0aW9ucywKLQkJCQkJCQkJICAgJnNjaGVtYWlkbGlzdCk7CisJCU9i amVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwKKwkJ CQkJCQkJICAgJnRhYmxlcywgJnNlcXVlbmNlcywKKwkJCQkJCQkJICAgJnRhYmxlc19zY2hl bWFpZGxpc3QsCisJCQkJCQkJCSAgICZzZXF1ZW5jZXNfc2NoZW1haWRsaXN0KTsKIAotCQlD aGVja0FsdGVyUHVibGljYXRpb24oc3RtdCwgdHVwLCByZWxhdGlvbnMsIHNjaGVtYWlkbGlz dCk7CisJCUNoZWNrQWx0ZXJQdWJsaWNhdGlvbihzdG10LCB0dXAsCisJCQkJCQkJICB0YWJs ZXMsIHRhYmxlc19zY2hlbWFpZGxpc3QsCisJCQkJCQkJICBzZXF1ZW5jZXMsIHNlcXVlbmNl c19zY2hlbWFpZGxpc3QpOwogCiAJCWhlYXBfZnJlZXR1cGxlKHR1cCk7CiAKQEAgLTE0MzEs OSArMTY3MiwxNiBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCQkJCWVycm1zZygicHVibGljYXRpb24gXCIl c1wiIGRvZXMgbm90IGV4aXN0IiwKIAkJCQkJCSAgIHN0bXQtPnB1Ym5hbWUpKTsKIAotCQlB bHRlclB1YmxpY2F0aW9uVGFibGVzKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBwc3RhdGUtPnBf c291cmNldGV4dCwKLQkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0gTklMKTsKLQkJQWx0ZXJQ dWJsaWNhdGlvblNjaGVtYXMoc3RtdCwgdHVwLCBzY2hlbWFpZGxpc3QpOworCQlBbHRlclB1 YmxpY2F0aW9uVGFibGVzKHN0bXQsIHR1cCwgdGFibGVzLCBwc3RhdGUtPnBfc291cmNldGV4 dCwKKwkJCQkJCQkgICB0YWJsZXNfc2NoZW1haWRsaXN0ICE9IE5JTCk7CisKKwkJQWx0ZXJQ dWJsaWNhdGlvblNjaGVtYXMoc3RtdCwgdHVwLCB0YWJsZXNfc2NoZW1haWRsaXN0LAorCQkJ CQkJCQlQVUJfT0JKVFlQRV9UQUJMRSk7CisKKwkJQWx0ZXJQdWJsaWNhdGlvblNlcXVlbmNl cyhzdG10LCB0dXAsIHNlcXVlbmNlcyk7CisKKwkJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMo c3RtdCwgdHVwLCBzZXF1ZW5jZXNfc2NoZW1haWRsaXN0LAorCQkJCQkJCQlQVUJfT0JKVFlQ RV9TRVFVRU5DRSk7CiAJfQogCiAJLyogQ2xlYW51cC4gKi8KQEAgLTE1MDEsNyArMTc0OSw3 IEBAIFJlbW92ZVB1YmxpY2F0aW9uQnlJZChPaWQgcHViaWQpCiAJcHViZm9ybSA9IChGb3Jt X3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIAogCS8qIEludmFsaWRhdGUgcmVs Y2FjaGUgc28gdGhhdCBwdWJsaWNhdGlvbiBpbmZvIGlzIHJlYnVpbHQuICovCi0JaWYgKHB1 YmZvcm0tPnB1YmFsbHRhYmxlcykKKwlpZiAocHViZm9ybS0+cHViYWxsdGFibGVzIHx8IHB1 YmZvcm0tPnB1YmFsbHNlcXVlbmNlcykKIAkJQ2FjaGVJbnZhbGlkYXRlUmVsY2FjaGVBbGwo KTsKIAogCUNhdGFsb2dUdXBsZURlbGV0ZShyZWwsICZ0dXAtPnRfc2VsZik7CkBAIC0xNTM3 LDYgKzE3ODUsNyBAQCBSZW1vdmVQdWJsaWNhdGlvblNjaGVtYUJ5SWQoT2lkIHBzb2lkKQog CSAqIHBhcnRpdGlvbnMuCiAJICovCiAJc2NoZW1hUmVscyA9IEdldFNjaGVtYVB1YmxpY2F0 aW9uUmVsYXRpb25zKHB1YnNjaC0+cG5uc3BpZCwKKwkJCQkJCQkJCQkJICAgcHVic2NoLT5w bnR5cGUsCiAJCQkJCQkJCQkJCSAgIFBVQkxJQ0FUSU9OX1BBUlRfQUxMKTsKIAlJbnZhbGlk YXRlUHVibGljYXRpb25SZWxzKHNjaGVtYVJlbHMpOwogCkBAIC0xNTUzLDEwICsxODAyLDEw IEBAIFJlbW92ZVB1YmxpY2F0aW9uU2NoZW1hQnlJZChPaWQgcHNvaWQpCiAgKiBhZGQgdGhl bSB0byBhIHB1YmxpY2F0aW9uLgogICovCiBzdGF0aWMgTGlzdCAqCi1PcGVuVGFibGVMaXN0 KExpc3QgKnRhYmxlcykKK09wZW5SZWxhdGlvbkxpc3QoTGlzdCAqcmVscywgY2hhciBvYmpl Y3RUeXBlKQogewogCUxpc3QJICAgKnJlbGlkcyA9IE5JTDsKLQlMaXN0CSAgICpyZWxzID0g TklMOworCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKIAlMaXN0Q2VsbCAgICpsYzsKIAlMaXN0 CSAgICpyZWxpZHNfd2l0aF9yZiA9IE5JTDsKIAlMaXN0CSAgICpyZWxpZHNfd2l0aF9jb2xs aXN0ID0gTklMOwpAQCAtMTU2NCwxOSArMTgxMywzNSBAQCBPcGVuVGFibGVMaXN0KExpc3Qg KnRhYmxlcykKIAkvKgogCSAqIE9wZW4sIHNoYXJlLWxvY2ssIGFuZCBjaGVjayBhbGwgdGhl IGV4cGxpY2l0bHktc3BlY2lmaWVkIHJlbGF0aW9ucwogCSAqLwotCWZvcmVhY2gobGMsIHRh YmxlcykKKwlmb3JlYWNoKGxjLCByZWxzKQogCXsKIAkJUHVibGljYXRpb25UYWJsZSAqdCA9 IGxmaXJzdF9ub2RlKFB1YmxpY2F0aW9uVGFibGUsIGxjKTsKIAkJYm9vbAkJcmVjdXJzZSA9 IHQtPnJlbGF0aW9uLT5pbmg7CiAJCVJlbGF0aW9uCXJlbDsKIAkJT2lkCQkJbXlyZWxpZDsK IAkJUHVibGljYXRpb25SZWxJbmZvICpwdWJfcmVsOworCQljaGFyCQlteXJlbGtpbmQ7CiAK IAkJLyogQWxsb3cgcXVlcnkgY2FuY2VsIGluIGNhc2UgdGhpcyB0YWtlcyBhIGxvbmcgdGlt ZSAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCXJlbCA9IHRhYmxlX29wZW5y dih0LT5yZWxhdGlvbiwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAkJbXlyZWxpZCA9 IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKKwkJbXlyZWxraW5kID0gZ2V0X3JlbF9yZWxraW5k KG15cmVsaWQpOworCisJCS8qCisJCSAqIE1ha2Ugc3VyZSB0aGUgcmVsa2luZCBtYXRjaGVz IHRoZSBleHBlY3RlZCBvYmplY3QgdHlwZS4gVGhpcyBtYXkKKwkJICogaGFwcGVuIGUuZy4g d2hlbiBhZGRpbmcgYSBzZXF1ZW5jZSB1c2luZyBBREQgVEFCTEUgb3IgYSB0YWJsZSB1c2lu ZworCQkgKiBBREQgU0VRVUVOQ0UpLgorCQkgKgorCQkgKiBYWFggV2UgbGV0IHRocm91Z2gg dW5zdXBwb3J0ZWQgb2JqZWN0IHR5cGVzICh2aWV3cyBldGMuKS4gVGhvc2UKKwkJICogd2ls bCBiZSBjYXVnaHQgbGF0ZXIgaW4gY2hlY2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9uLgor CQkgKi8KKwkJaWYgKHB1Yl9nZXRfb2JqZWN0X3R5cGVfZm9yX3JlbGtpbmQobXlyZWxraW5k KSAhPSBQVUJfT0JKVFlQRV9VTlNVUFBPUlRFRCAmJgorCQkJcHViX2dldF9vYmplY3RfdHlw ZV9mb3JfcmVsa2luZChteXJlbGtpbmQpICE9IG9iamVjdFR5cGUpCisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAor CQkJCQllcnJtc2coIm9iamVjdCB0eXBlIGRvZXMgbm90IG1hdGNoIHR5cGUgZXhwZWN0ZWQg YnkgY29tbWFuZCIpKTsKIAogCQkvKgogCQkgKiBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYg dXNlciBzcGVjaWZpZXMgImZvbywgZm9vIi4KQEAgLTE2MDksNyArMTg3NCw3IEBAIE9wZW5U YWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCQlwdWJfcmVsLT5yZWxhdGlvbiA9IHJlbDsKIAkJ cHViX3JlbC0+d2hlcmVDbGF1c2UgPSB0LT53aGVyZUNsYXVzZTsKIAkJcHViX3JlbC0+Y29s dW1ucyA9IHQtPmNvbHVtbnM7Ci0JCXJlbHMgPSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwpOwor CQlyZXN1bHQgPSBsYXBwZW5kKHJlc3VsdCwgcHViX3JlbCk7CiAJCXJlbGlkcyA9IGxhcHBl bmRfb2lkKHJlbGlkcywgbXlyZWxpZCk7CiAKIAkJaWYgKHQtPndoZXJlQ2xhdXNlKQpAQCAt MTY3OCwxMCArMTk0Myw5IEBAIE9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQogCQkJCXB1 Yl9yZWwtPnJlbGF0aW9uID0gcmVsOwogCQkJCS8qIGNoaWxkIGluaGVyaXRzIFdIRVJFIGNs YXVzZSBmcm9tIHBhcmVudCAqLwogCQkJCXB1Yl9yZWwtPndoZXJlQ2xhdXNlID0gdC0+d2hl cmVDbGF1c2U7Ci0KIAkJCQkvKiBjaGlsZCBpbmhlcml0cyBjb2x1bW4gbGlzdCBmcm9tIHBh cmVudCAqLwogCQkJCXB1Yl9yZWwtPmNvbHVtbnMgPSB0LT5jb2x1bW5zOwotCQkJCXJlbHMg PSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwpOworCQkJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0 LCBwdWJfcmVsKTsKIAkJCQlyZWxpZHMgPSBsYXBwZW5kX29pZChyZWxpZHMsIGNoaWxkcmVs aWQpOwogCiAJCQkJaWYgKHQtPndoZXJlQ2xhdXNlKQpAQCAtMTY5NiwxNCArMTk2MCwxNCBA QCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAlsaXN0X2ZyZWUocmVsaWRzKTsKIAls aXN0X2ZyZWUocmVsaWRzX3dpdGhfcmYpOwogCi0JcmV0dXJuIHJlbHM7CisJcmV0dXJuIHJl c3VsdDsKIH0KIAogLyoKICAqIENsb3NlIGFsbCByZWxhdGlvbnMgaW4gdGhlIGxpc3QuCiAg Ki8KIHN0YXRpYyB2b2lkCi1DbG9zZVRhYmxlTGlzdChMaXN0ICpyZWxzKQorQ2xvc2VSZWxh dGlvbkxpc3QoTGlzdCAqcmVscykKIHsKIAlMaXN0Q2VsbCAgICpsYzsKIApAQCAtMTc1MSwx MiArMjAxNSwxMiBAQCBMb2NrU2NoZW1hTGlzdChMaXN0ICpzY2hlbWFsaXN0KQogICogQWRk IGxpc3RlZCB0YWJsZXMgdG8gdGhlIHB1YmxpY2F0aW9uLgogICovCiBzdGF0aWMgdm9pZAot UHVibGljYXRpb25BZGRUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25v dF9leGlzdHMsCi0JCQkJCSBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKK1B1YmxpY2F0 aW9uQWRkUmVsYXRpb25zKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhp c3RzLAorCQkJCQkJQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiB7CiAJTGlzdENlbGwg ICAqbGM7CiAKLQlBc3NlcnQoIXN0bXQgfHwgIXN0bXQtPmZvcl9hbGxfdGFibGVzKTsKKwlB c3NlcnQoIXN0bXQgfHwgIXN0bXQtPmZvcl9hbGxfb2JqZWN0cyk7CiAKIAlmb3JlYWNoKGxj LCByZWxzKQogCXsKQEAgLTE3ODUsNyArMjA0OSw3IEBAIFB1YmxpY2F0aW9uQWRkVGFibGVz KE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAogICogUmVtb3Zl IGxpc3RlZCB0YWJsZXMgZnJvbSB0aGUgcHVibGljYXRpb24uCiAgKi8KIHN0YXRpYyB2b2lk Ci1QdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIG1p c3Npbmdfb2spCitQdWJsaWNhdGlvbkRyb3BSZWxhdGlvbnMoT2lkIHB1YmlkLCBMaXN0ICpy ZWxzLCBib29sIG1pc3Npbmdfb2spCiB7CiAJT2JqZWN0QWRkcmVzcyBvYmo7CiAJTGlzdENl bGwgICAqbGM7CkBAIC0xODMwLDE5ICsyMDk0LDE5IEBAIFB1YmxpY2F0aW9uRHJvcFRhYmxl cyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vaykKICAqIEFkZCBsaXN0 ZWQgc2NoZW1hcyB0byB0aGUgcHVibGljYXRpb24uCiAgKi8KIHN0YXRpYyB2b2lkCi1QdWJs aWNhdGlvbkFkZFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIGlmX25v dF9leGlzdHMsCi0JCQkJCSAgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCitQdWJsaWNh dGlvbkFkZFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBjaGFyIG9iamVjdFR5 cGUsCisJCQkJCSAgYm9vbCBpZl9ub3RfZXhpc3RzLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAq c3RtdCkKIHsKIAlMaXN0Q2VsbCAgICpsYzsKIAotCUFzc2VydCghc3RtdCB8fCAhc3RtdC0+ Zm9yX2FsbF90YWJsZXMpOworCUFzc2VydCghc3RtdCB8fCAhc3RtdC0+Zm9yX2FsbF9vYmpl Y3RzKTsKIAogCWZvcmVhY2gobGMsIHNjaGVtYXMpCiAJewogCQlPaWQJCQlzY2hlbWFpZCA9 IGxmaXJzdF9vaWQobGMpOwogCQlPYmplY3RBZGRyZXNzIG9iajsKIAotCQlvYmogPSBwdWJs aWNhdGlvbl9hZGRfc2NoZW1hKHB1YmlkLCBzY2hlbWFpZCwgaWZfbm90X2V4aXN0cyk7CisJ CW9iaiA9IHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEocHViaWQsIHNjaGVtYWlkLCBvYmplY3RU eXBlLCBpZl9ub3RfZXhpc3RzKTsKIAkJaWYgKHN0bXQpCiAJCXsKIAkJCUV2ZW50VHJpZ2dl ckNvbGxlY3RTaW1wbGVDb21tYW5kKG9iaiwgSW52YWxpZE9iamVjdEFkZHJlc3MsCkBAIC0x ODU4LDcgKzIxMjIsNyBAQCBQdWJsaWNhdGlvbkFkZFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0 ICpzY2hlbWFzLCBib29sIGlmX25vdF9leGlzdHMsCiAgKiBSZW1vdmUgbGlzdGVkIHNjaGVt YXMgZnJvbSB0aGUgcHVibGljYXRpb24uCiAgKi8KIHN0YXRpYyB2b2lkCi1QdWJsaWNhdGlv bkRyb3BTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBtaXNzaW5nX29r KQorUHVibGljYXRpb25Ecm9wU2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGNo YXIgb2JqZWN0VHlwZSwgYm9vbCBtaXNzaW5nX29rKQogewogCU9iamVjdEFkZHJlc3Mgb2Jq OwogCUxpc3RDZWxsICAgKmxjOwpAQCAtMTg2OCwxMCArMjEzMiwxMSBAQCBQdWJsaWNhdGlv bkRyb3BTY2hlbWFzKE9pZCBwdWJpZCwgTGlzdCAqc2NoZW1hcywgYm9vbCBtaXNzaW5nX29r KQogCXsKIAkJT2lkCQkJc2NoZW1haWQgPSBsZmlyc3Rfb2lkKGxjKTsKIAotCQlwc2lkID0g R2V0U3lzQ2FjaGVPaWQyKFBVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAorCQlwc2lkID0gR2V0 U3lzQ2FjaGVPaWQzKFBVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQLAogCQkJCQkJCSAgIEFudW1f cGdfcHVibGljYXRpb25fbmFtZXNwYWNlX29pZCwKIAkJCQkJCQkgICBPYmplY3RJZEdldERh dHVtKHNjaGVtYWlkKSwKLQkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisJ CQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShwdWJpZCksCisJCQkJCQkJICAgQ2hhckdldERh dHVtKG9iamVjdFR5cGUpKTsKIAkJaWYgKCFPaWRJc1ZhbGlkKHBzaWQpKQogCQl7CiAJCQlp ZiAobWlzc2luZ19vaykKQEAgLTE5MjYsNiArMjE5MSwxMyBAQCBBbHRlclB1YmxpY2F0aW9u T3duZXJfaW50ZXJuYWwoUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUgdHVwLCBPaWQgbmV3T3du ZXJJZCkKIAkJCQkJCQlOYW1lU3RyKGZvcm0tPnB1Ym5hbWUpKSwKIAkJCQkJIGVycmhpbnQo IlRoZSBvd25lciBvZiBhIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uIG11c3QgYmUgYSBz dXBlcnVzZXIuIikpKTsKIAorCQlpZiAoZm9ybS0+cHViYWxsc2VxdWVuY2VzICYmICFzdXBl cnVzZXJfYXJnKG5ld093bmVySWQpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJIGVycm1zZygicGVy bWlzc2lvbiBkZW5pZWQgdG8gY2hhbmdlIG93bmVyIG9mIHB1YmxpY2F0aW9uIFwiJXNcIiIs CisJCQkJCQkJTmFtZVN0cihmb3JtLT5wdWJuYW1lKSksCisJCQkJCSBlcnJoaW50KCJUaGUg b3duZXIgb2YgYSBGT1IgQUxMIFNFUVVFTkNFUyBwdWJsaWNhdGlvbiBtdXN0IGJlIGEgc3Vw ZXJ1c2VyLiIpKSk7CisKIAkJaWYgKCFzdXBlcnVzZXJfYXJnKG5ld093bmVySWQpICYmIGlz X3NjaGVtYV9wdWJsaWNhdGlvbihmb3JtLT5vaWQpKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zZXF1ZW5jZS5jCmluZGV4IDYxNmI4Njg1ZTM5Li5kODQwNGE2Zjc1ZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zZXF1ZW5jZS5jCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAidXRp bHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGls cy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9wZ19sc24uaCIKICNpbmNsdWRlICJ1 dGlscy9yZXNvd25lci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVk ZSAidXRpbHMvdmFybGVuYS5oIgpAQCAtMTAxLDcgKzEwMiw4IEBAIHN0YXRpYyBSZWxhdGlv biBsb2NrX2FuZF9vcGVuX3NlcXVlbmNlKFNlcVRhYmxlIHNlcSk7CiBzdGF0aWMgdm9pZCBj cmVhdGVfc2VxX2hhc2h0YWJsZSh2b2lkKTsKIHN0YXRpYyB2b2lkIGluaXRfc2VxdWVuY2Uo T2lkIHJlbGlkLCBTZXFUYWJsZSAqcF9lbG0sIFJlbGF0aW9uICpwX3JlbCk7CiBzdGF0aWMg Rm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHJlYWRfc2VxX3R1cGxlKFJlbGF0aW9uIHJlbCwKLQkJ CQkJCQkJCQkJQnVmZmVyICpidWYsIEhlYXBUdXBsZSBzZXFkYXRhdHVwbGUpOworCQkJCQkJ CQkJCQlCdWZmZXIgKmJ1ZiwgSGVhcFR1cGxlIHNlcWRhdGF0dXBsZSwKKwkJCQkJCQkJCQkJ WExvZ1JlY1B0ciAqbHNuKTsKIHN0YXRpYyB2b2lkIGluaXRfcGFyYW1zKFBhcnNlU3RhdGUg KnBzdGF0ZSwgTGlzdCAqb3B0aW9ucywgYm9vbCBmb3JfaWRlbnRpdHksCiAJCQkJCQlib29s IGlzSW5pdCwKIAkJCQkJCUZvcm1fcGdfc2VxdWVuY2Ugc2VxZm9ybSwKQEAgLTI4NCw3ICsy ODYsNyBAQCBSZXNldFNlcXVlbmNlKE9pZCBzZXFfcmVsaWQpCiAJICogaW5kZWVkIGEgc2Vx dWVuY2UuCiAJICovCiAJaW5pdF9zZXF1ZW5jZShzZXFfcmVsaWQsICZlbG0sICZzZXFfcmVs KTsKLQkodm9pZCkgcmVhZF9zZXFfdHVwbGUoc2VxX3JlbCwgJmJ1ZiwgJnNlcWRhdGF0dXBs ZSk7CisJKHZvaWQpIHJlYWRfc2VxX3R1cGxlKHNlcV9yZWwsICZidWYsICZzZXFkYXRhdHVw bGUsIE5VTEwpOwogCiAJcGdzdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoU0VRUkVMSUQsIE9i amVjdElkR2V0RGF0dW0oc2VxX3JlbGlkKSk7CiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHBn c3R1cGxlKSkKQEAgLTM0Miw2ICszNDQsMTY2IEBAIFJlc2V0U2VxdWVuY2UoT2lkIHNlcV9y ZWxpZCkKIAlyZWxhdGlvbl9jbG9zZShzZXFfcmVsLCBOb0xvY2spOwogfQogCisvKgorICog VXBkYXRlIHRoZSBzZXF1ZW5jZSBzdGF0ZSBieSBtb2RpZnlpbmcgdGhlIGV4aXN0aW5nIHNl cXVlbmNlIGRhdGEgcm93LgorICoKKyAqIFRoaXMga2VlcHMgdGhlIHNhbWUgcmVsZmlsZW5v ZGUsIHNvIHRoZSBiZWhhdmlvciBpcyBub24tdHJhbnNhY3Rpb25hbC4KKyAqLworc3RhdGlj IHZvaWQKK1NldFNlcXVlbmNlX25vbl90cmFuc2FjdGlvbmFsKE9pZCBzZXFyZWxpZCwgaW50 NjQgdmFsdWUpCit7CisJU2VxVGFibGUJZWxtOworCVJlbGF0aW9uCXNlcXJlbDsKKwlCdWZm ZXIJCWJ1ZjsKKwlIZWFwVHVwbGVEYXRhIHNlcWRhdGF0dXBsZTsKKwlGb3JtX3BnX3NlcXVl bmNlX2RhdGEgc2VxOworCisJLyogb3BlbiBhbmQgbG9jayBzZXF1ZW5jZSAqLworCWluaXRf c2VxdWVuY2Uoc2VxcmVsaWQsICZlbG0sICZzZXFyZWwpOworCisJLyogbG9jayBwYWdlJyBi dWZmZXIgYW5kIHJlYWQgdHVwbGUgKi8KKwlzZXEgPSByZWFkX3NlcV90dXBsZShzZXFyZWws ICZidWYsICZzZXFkYXRhdHVwbGUsIE5VTEwpOworCisJLyogY2hlY2sgdGhlIGNvbW1lbnQg YWJvdmUgbmV4dHZhbF9pbnRlcm5hbCgpJ3MgZXF1aXZhbGVudCBjYWxsLiAqLworCWlmIChS ZWxhdGlvbk5lZWRzV0FMKHNlcXJlbCkpCisJeworCQlHZXRUb3BUcmFuc2FjdGlvbklkKCk7 CisKKwkJaWYgKFhMb2dMb2dpY2FsSW5mb0FjdGl2ZSgpKQorCQkJR2V0Q3VycmVudFRyYW5z YWN0aW9uSWQoKTsKKwl9CisKKwkvKiByZWFkeSB0byBjaGFuZ2UgdGhlIG9uLWRpc2sgKG9y IHJlYWxseSwgaW4tYnVmZmVyKSB0dXBsZSAqLworCVNUQVJUX0NSSVRfU0VDVElPTigpOwor CisJc2VxLT5sYXN0X3ZhbHVlID0gdmFsdWU7CisJc2VxLT5pc19jYWxsZWQgPSB0cnVlOwor CXNlcS0+bG9nX2NudCA9IDA7CisKKwlNYXJrQnVmZmVyRGlydHkoYnVmKTsKKworCS8qIFhM T0cgc3R1ZmYgKi8KKwlpZiAoUmVsYXRpb25OZWVkc1dBTChzZXFyZWwpKQorCXsKKwkJeGxf c2VxX3JlYwl4bHJlYzsKKwkJWExvZ1JlY1B0cglyZWNwdHI7CisJCVBhZ2UJCXBhZ2UgPSBC dWZmZXJHZXRQYWdlKGJ1Zik7CisKKwkJWExvZ0JlZ2luSW5zZXJ0KCk7CisJCVhMb2dSZWdp c3RlckJ1ZmZlcigwLCBidWYsIFJFR0JVRl9XSUxMX0lOSVQpOworCisJCXhscmVjLmxvY2F0 b3IgPSBzZXFyZWwtPnJkX2xvY2F0b3I7CisKKwkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAq KSAmeGxyZWMsIHNpemVvZih4bF9zZXFfcmVjKSk7CisJCVhMb2dSZWdpc3RlckRhdGEoKGNo YXIgKikgc2VxZGF0YXR1cGxlLnRfZGF0YSwgc2VxZGF0YXR1cGxlLnRfbGVuKTsKKworCQkv KiBhbGxvdyBmaWx0ZXJpbmcgYnkgb3JpZ2luIG9uIGEgc2VxdWVuY2UgdXBkYXRlICovCisJ CVhMb2dTZXRSZWNvcmRGbGFncyhYTE9HX0lOQ0xVREVfT1JJR0lOKTsKKworCQlyZWNwdHIg PSBYTG9nSW5zZXJ0KFJNX1NFUV9JRCwgWExPR19TRVFfTE9HKTsKKworCQlQYWdlU2V0TFNO KHBhZ2UsIHJlY3B0cik7CisJfQorCisJRU5EX0NSSVRfU0VDVElPTigpOworCisJVW5sb2Nr UmVsZWFzZUJ1ZmZlcihidWYpOworCisJLyogQ2xlYXIgbG9jYWwgY2FjaGUgc28gdGhhdCB3 ZSBkb24ndCB0aGluayB3ZSBoYXZlIGNhY2hlZCBudW1iZXJzICovCisJLyogTm90ZSB0aGF0 IHdlIGRvIG5vdCBjaGFuZ2UgdGhlIGN1cnJ2YWwoKSBzdGF0ZSAqLworCWVsbS0+Y2FjaGVk ID0gZWxtLT5sYXN0OworCisJcmVsYXRpb25fY2xvc2Uoc2VxcmVsLCBOb0xvY2spOworfQor CisvKgorICogVXBkYXRlIHRoZSBzZXF1ZW5jZSBzdGF0ZSBieSBjcmVhdGluZyBhIG5ldyBy ZWxmaWxlbm9kZS4KKyAqCisgKiBUaGlzIGNyZWF0ZXMgYSBuZXcgcmVsZmlsZW5vZGUsIHRv IGFsbG93IHRyYW5zYWN0aW9uYWwgYmVoYXZpb3IuCisgKi8KK3N0YXRpYyB2b2lkCitTZXRT ZXF1ZW5jZV90cmFuc2FjdGlvbmFsKE9pZCBzZXFfcmVsaWQsIGludDY0IHZhbHVlKQorewor CVNlcVRhYmxlCWVsbTsKKwlSZWxhdGlvbglzZXFyZWw7CisJQnVmZmVyCQlidWY7CisJSGVh cFR1cGxlRGF0YSBzZXFkYXRhdHVwbGU7CisJRm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHNlcTsK KwlIZWFwVHVwbGUJdHVwbGU7CisKKwkvKiBvcGVuIGFuZCBsb2NrIHNlcXVlbmNlICovCisJ aW5pdF9zZXF1ZW5jZShzZXFfcmVsaWQsICZlbG0sICZzZXFyZWwpOworCisJLyogbG9jayBw YWdlJyBidWZmZXIgYW5kIHJlYWQgdHVwbGUgKi8KKwlzZXEgPSByZWFkX3NlcV90dXBsZShz ZXFyZWwsICZidWYsICZzZXFkYXRhdHVwbGUsIE5VTEwpOworCisJLyogQ29weSB0aGUgZXhp c3Rpbmcgc2VxdWVuY2UgdHVwbGUuICovCisJdHVwbGUgPSBoZWFwX2NvcHl0dXBsZSgmc2Vx ZGF0YXR1cGxlKTsKKworCS8qIE5vdyB3ZSdyZSBkb25lIHdpdGggdGhlIG9sZCBwYWdlICov CisJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOworCisJLyoKKwkgKiBNb2RpZnkgdGhlIGNv cGllZCB0dXBsZSB0byB1cGRhdGUgdGhlIHNlcXVlbmNlIHN0YXRlIChzaW1pbGFyIHRvIHdo YXQKKwkgKiBSZXNldFNlcXVlbmNlIGRvZXMpLgorCSAqLworCXNlcSA9IChGb3JtX3BnX3Nl cXVlbmNlX2RhdGEpIEdFVFNUUlVDVCh0dXBsZSk7CisJc2VxLT5sYXN0X3ZhbHVlID0gdmFs dWU7CisJc2VxLT5pc19jYWxsZWQgPSB0cnVlOworCXNlcS0+bG9nX2NudCA9IDA7CisKKwkv KiBtYWtlIHN1cmUgdGhlIHJlbGZpbGVub2RlIGNyZWF0aW9uIGlzIGFzc29jaWF0ZWQgd2l0 aCB0aGUgWElEICovCisJaWYgKFhMb2dMb2dpY2FsSW5mb0FjdGl2ZSgpKQorCQlHZXRDdXJy ZW50VHJhbnNhY3Rpb25JZCgpOworCisJLyoKKwkgKiBDcmVhdGUgYSBuZXcgc3RvcmFnZSBm aWxlIGZvciB0aGUgc2VxdWVuY2UgLSB0aGlzIGlzIG5lZWRlZCBmb3IgdGhlCisJICogdHJh bnNhY3Rpb25hbCBiZWhhdmlvci4KKwkgKi8KKwlSZWxhdGlvblNldE5ld1JlbGZpbGVudW1i ZXIoc2VxcmVsLCBzZXFyZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpOworCisJLyoKKwkg KiBFbnN1cmUgc2VxdWVuY2UncyByZWxmcm96ZW54aWQgaXMgYXQgMCwgc2luY2UgaXQgd29u J3QgY29udGFpbiBhbnkKKwkgKiB1bmZyb3plbiBYSURzLiAgU2FtZSB3aXRoIHJlbG1pbm14 aWQsIHNpbmNlIGEgc2VxdWVuY2Ugd2lsbCBuZXZlcgorCSAqIGNvbnRhaW4gbXVsdGl4YWN0 cy4KKwkgKi8KKwlBc3NlcnQoc2VxcmVsLT5yZF9yZWwtPnJlbGZyb3plbnhpZCA9PSBJbnZh bGlkVHJhbnNhY3Rpb25JZCk7CisJQXNzZXJ0KHNlcXJlbC0+cmRfcmVsLT5yZWxtaW5teGlk ID09IEludmFsaWRNdWx0aVhhY3RJZCk7CisKKwkvKgorCSAqIEluc2VydCB0aGUgbW9kaWZp ZWQgdHVwbGUgaW50byB0aGUgbmV3IHN0b3JhZ2UgZmlsZS4gVGhpcyBkb2VzIGFsbCB0aGUK KwkgKiBuZWNlc3NhcnkgV0FMLWxvZ2dpbmcgZXRjLgorCSAqLworCWZpbGxfc2VxX3dpdGhf ZGF0YShzZXFyZWwsIHR1cGxlKTsKKworCS8qIENsZWFyIGxvY2FsIGNhY2hlIHNvIHRoYXQg d2UgZG9uJ3QgdGhpbmsgd2UgaGF2ZSBjYWNoZWQgbnVtYmVycyAqLworCS8qIE5vdGUgdGhh dCB3ZSBkbyBub3QgY2hhbmdlIHRoZSBjdXJydmFsKCkgc3RhdGUgKi8KKwllbG0tPmNhY2hl ZCA9IGVsbS0+bGFzdDsKKworCXJlbGF0aW9uX2Nsb3NlKHNlcXJlbCwgTm9Mb2NrKTsKK30K KworLyoKKyAqIFNldCBhIHNlcXVlbmNlIHRvIGEgc3BlY2lmaWVkIGludGVybmFsIHN0YXRl LgorICoKKyAqIFRoZSBjaGFuZ2UgaXMgbWFkZSB0cmFuc2FjdGlvbmFsbHksIHNvIHRoYXQg b24gZmFpbHVyZSBvZiB0aGUgY3VycmVudAorICogdHJhbnNhY3Rpb24sIHRoZSBzZXF1ZW5j ZSB3aWxsIGJlIHJlc3RvcmVkIHRvIGl0cyBwcmV2aW91cyBzdGF0ZS4KKyAqIFdlIGRvIHRo YXQgYnkgY3JlYXRpbmcgYSB3aG9sZSBuZXcgcmVsZmlsZW5vZGUgZm9yIHRoZSBzZXF1ZW5j ZTsgc28gdGhpcworICogd29ya3MgbXVjaCBsaWtlIHRoZSByZXdyaXRpbmcgZm9ybXMgb2Yg QUxURVIgVEFCTEUuCisgKgorICogQ2FsbGVyIGlzIGFzc3VtZWQgdG8gaGF2ZSBhY3F1aXJl ZCBBY2Nlc3NFeGNsdXNpdmVMb2NrIG9uIHRoZSBzZXF1ZW5jZSwKKyAqIHdoaWNoIG11c3Qg bm90IGJlIHJlbGVhc2VkIHVudGlsIGVuZCBvZiB0cmFuc2FjdGlvbi4gIENhbGxlciBpcyBh bHNvCisgKiByZXNwb25zaWJsZSBmb3IgcGVybWlzc2lvbnMgY2hlY2tpbmcuCisgKi8KK3Zv aWQKK1NldFNlcXVlbmNlKE9pZCBzZXFfcmVsaWQsIGJvb2wgdHJhbnNhY3Rpb25hbCwgaW50 NjQgdmFsdWUpCit7CisJaWYgKHRyYW5zYWN0aW9uYWwpCisJCVNldFNlcXVlbmNlX3RyYW5z YWN0aW9uYWwoc2VxX3JlbGlkLCB2YWx1ZSk7CisJZWxzZQorCQlTZXRTZXF1ZW5jZV9ub25f dHJhbnNhY3Rpb25hbChzZXFfcmVsaWQsIHZhbHVlKTsKK30KKwogLyoKICAqIEluaXRpYWxp emUgYSBzZXF1ZW5jZSdzIHJlbGF0aW9uIHdpdGggdGhlIHNwZWNpZmllZCB0dXBsZSBhcyBj b250ZW50CiAgKgpAQCAtNTA0LDcgKzY2Niw3IEBAIEFsdGVyU2VxdWVuY2UoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBBbHRlclNlcVN0bXQgKnN0bXQpCiAJc2VxZm9ybSA9IChGb3JtX3BnX3Nl cXVlbmNlKSBHRVRTVFJVQ1Qoc2VxdHVwbGUpOwogCiAJLyogbG9jayBwYWdlIGJ1ZmZlciBh bmQgcmVhZCB0dXBsZSBpbnRvIG5ldyBzZXF1ZW5jZSBzdHJ1Y3R1cmUgKi8KLQkodm9pZCkg cmVhZF9zZXFfdHVwbGUoc2VxcmVsLCAmYnVmLCAmZGF0YXR1cGxlKTsKKwkodm9pZCkgcmVh ZF9zZXFfdHVwbGUoc2VxcmVsLCAmYnVmLCAmZGF0YXR1cGxlLCBOVUxMKTsKIAogCS8qIGNv cHkgdGhlIGV4aXN0aW5nIHNlcXVlbmNlIGRhdGEgdHVwbGUsIHNvIGl0IGNhbiBiZSBtb2Rp ZmllZCBsb2NhbGx5ICovCiAJbmV3ZGF0YXR1cGxlID0gaGVhcF9jb3B5dHVwbGUoJmRhdGF0 dXBsZSk7CkBAIC01OTgsNyArNzYwLDcgQEAgU2VxdWVuY2VDaGFuZ2VQZXJzaXN0ZW5jZShP aWQgcmVsaWQsIGNoYXIgbmV3cmVscGVyc2lzdGVuY2UpCiAJCQlHZXRDdXJyZW50VHJhbnNh Y3Rpb25JZCgpOwogCX0KIAotCSh2b2lkKSByZWFkX3NlcV90dXBsZShzZXFyZWwsICZidWYs ICZzZXFkYXRhdHVwbGUpOworCSh2b2lkKSByZWFkX3NlcV90dXBsZShzZXFyZWwsICZidWYs ICZzZXFkYXRhdHVwbGUsIE5VTEwpOwogCVJlbGF0aW9uU2V0TmV3UmVsZmlsZW51bWJlcihz ZXFyZWwsIG5ld3JlbHBlcnNpc3RlbmNlKTsKIAlmaWxsX3NlcV93aXRoX2RhdGEoc2VxcmVs LCAmc2VxZGF0YXR1cGxlKTsKIAlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7CkBAIC03Mjcs NyArODg5LDcgQEAgbmV4dHZhbF9pbnRlcm5hbChPaWQgcmVsaWQsIGJvb2wgY2hlY2tfcGVy bWlzc2lvbnMpCiAJUmVsZWFzZVN5c0NhY2hlKHBnc3R1cGxlKTsKIAogCS8qIGxvY2sgcGFn ZSBidWZmZXIgYW5kIHJlYWQgdHVwbGUgKi8KLQlzZXEgPSByZWFkX3NlcV90dXBsZShzZXFy ZWwsICZidWYsICZzZXFkYXRhdHVwbGUpOworCXNlcSA9IHJlYWRfc2VxX3R1cGxlKHNlcXJl bCwgJmJ1ZiwgJnNlcWRhdGF0dXBsZSwgTlVMTCk7CiAJcGFnZSA9IEJ1ZmZlckdldFBhZ2Uo YnVmKTsKIAogCWVsbS0+aW5jcmVtZW50ID0gaW5jYnk7CkBAIC0xMDUwLDcgKzEyMTIsNyBA QCBkb19zZXR2YWwoT2lkIHJlbGlkLCBpbnQ2NCBuZXh0LCBib29sIGlzY2FsbGVkKQogCVBy ZXZlbnRDb21tYW5kSWZQYXJhbGxlbE1vZGUoInNldHZhbCgpIik7CiAKIAkvKiBsb2NrIHBh Z2UgYnVmZmVyIGFuZCByZWFkIHR1cGxlICovCi0Jc2VxID0gcmVhZF9zZXFfdHVwbGUoc2Vx cmVsLCAmYnVmLCAmc2VxZGF0YXR1cGxlKTsKKwlzZXEgPSByZWFkX3NlcV90dXBsZShzZXFy ZWwsICZidWYsICZzZXFkYXRhdHVwbGUsIE5VTEwpOwogCiAJaWYgKChuZXh0IDwgbWludikg fHwgKG5leHQgPiBtYXh2KSkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTEyNzAsMTEgKzE0MzIs MTMgQEAgaW5pdF9zZXF1ZW5jZShPaWQgcmVsaWQsIFNlcVRhYmxlICpwX2VsbSwgUmVsYXRp b24gKnBfcmVsKQogICogKmJ1ZiByZWNlaXZlcyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBwaW5u ZWQtYW5kLWV4LWxvY2tlZCBidWZmZXIKICAqICpzZXFkYXRhdHVwbGUgcmVjZWl2ZXMgdGhl IHJlZmVyZW5jZSB0byB0aGUgc2VxdWVuY2UgdHVwbGUgcHJvcGVyCiAgKgkJKHRoaXMgYXJn IHNob3VsZCBwb2ludCB0byBhIGxvY2FsIHZhcmlhYmxlIG9mIHR5cGUgSGVhcFR1cGxlRGF0 YSkKKyAqICpsc24gcmVjZWl2ZXMgTFNOIG9mIHRoZSBsYXN0IHNlcXVlbmNlIGNoYW5nZSAo cGFnZSBMU04pLCBvcHRpb25hbAogICoKICAqIEZ1bmN0aW9uJ3MgcmV0dXJuIHZhbHVlIHBv aW50cyB0byB0aGUgZGF0YSBwYXlsb2FkIG9mIHRoZSB0dXBsZQogICovCiBzdGF0aWMgRm9y bV9wZ19zZXF1ZW5jZV9kYXRhCi1yZWFkX3NlcV90dXBsZShSZWxhdGlvbiByZWwsIEJ1ZmZl ciAqYnVmLCBIZWFwVHVwbGUgc2VxZGF0YXR1cGxlKQorcmVhZF9zZXFfdHVwbGUoUmVsYXRp b24gcmVsLCBCdWZmZXIgKmJ1ZiwgSGVhcFR1cGxlIHNlcWRhdGF0dXBsZSwKKwkJCSAgIFhM b2dSZWNQdHIgKmxzbikKIHsKIAlQYWdlCQlwYWdlOwogCUl0ZW1JZAkJbHA7CkBAIC0xMjkx LDYgKzE0NTUsMTMgQEAgcmVhZF9zZXFfdHVwbGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgKmJ1 ZiwgSGVhcFR1cGxlIHNlcWRhdGF0dXBsZSkKIAkJZWxvZyhFUlJPUiwgImJhZCBtYWdpYyBu dW1iZXIgaW4gc2VxdWVuY2UgXCIlc1wiOiAlMDhYIiwKIAkJCSBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWwpLCBzbS0+bWFnaWMpOwogCisJLyoKKwkgKiBJZiB0aGUgY2FsbGVyIHJl cXVlc3RlZCBpdCwgc2V0IHRoZSBwYWdlIExTTi4gVGhpcyBhbGxvd3MgZGVjaWRpbmcKKwkg KiB3aGljaCBzZXF1ZW5jZSBjaGFuZ2VzIGFyZSBiZWZvcmUvYWZ0ZXIgdGhlIHJldHVybmVk IHNlcXVlbmNlIHN0YXRlLgorCSAqLworCWlmIChsc24pCisJCSpsc24gPSBQYWdlR2V0TFNO KHBhZ2UpOworCiAJbHAgPSBQYWdlR2V0SXRlbUlkKHBhZ2UsIEZpcnN0T2Zmc2V0TnVtYmVy KTsKIAlBc3NlcnQoSXRlbUlkSXNOb3JtYWwobHApKTsKIApAQCAtMTg4Niw3ICsyMDU3LDcg QEAgcGdfc2VxdWVuY2VfbGFzdF92YWx1ZShQR19GVU5DVElPTl9BUkdTKQogCQkJCSBlcnJt c2coInBlcm1pc3Npb24gZGVuaWVkIGZvciBzZXF1ZW5jZSAlcyIsCiAJCQkJCQlSZWxhdGlv bkdldFJlbGF0aW9uTmFtZShzZXFyZWwpKSkpOwogCi0Jc2VxID0gcmVhZF9zZXFfdHVwbGUo c2VxcmVsLCAmYnVmLCAmc2VxdHVwbGUpOworCXNlcSA9IHJlYWRfc2VxX3R1cGxlKHNlcXJl bCwgJmJ1ZiwgJnNlcXR1cGxlLCBOVUxMKTsKIAogCWlzX2NhbGxlZCA9IHNlcS0+aXNfY2Fs bGVkOwogCXJlc3VsdCA9IHNlcS0+bGFzdF92YWx1ZTsKQEAgLTE5MDAsNiArMjA3MSw2NyBA QCBwZ19zZXF1ZW5jZV9sYXN0X3ZhbHVlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVBHX1JFVFVS Tl9OVUxMKCk7CiB9CiAKKy8qCisgKiBSZXR1cm4gdGhlIGN1cnJlbnQgb24tZGlzayBzdGF0 ZSBvZiB0aGUgc2VxdWVuY2UuCisgKgorICogTm90ZTogVGhpcyBpcyByb3VnaGx5IGVxdWl2 YWxlbnQgdG8gc2VsZWN0aW5nIHRoZSBkYXRhIGZyb20gdGhlIHNlcXVlbmNlLAorICogZXhj ZXB0IHRoYXQgaXQgYWxzbyByZXR1cm5zIHRoZSBwYWdlIExTTi4KKyAqLworRGF0dW0KK3Bn X3NlcXVlbmNlX3N0YXRlKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJT2lkCQkJcmVsaWQgPSBQ R19HRVRBUkdfT0lEKDApOworCVNlcVRhYmxlCWVsbTsKKwlSZWxhdGlvbglzZXFyZWw7CisJ QnVmZmVyCQlidWY7CisJSGVhcFR1cGxlRGF0YSBzZXF0dXBsZTsKKwlGb3JtX3BnX3NlcXVl bmNlX2RhdGEgc2VxOworCURhdHVtCQlyZXN1bHQ7CisKKwlpbnQ2NAkJbGFzdF92YWx1ZTsK KwlpbnQ2NAkJbG9nX2NudDsKKwlib29sCQlpc19jYWxsZWQ7CisJWExvZ1JlY1B0cglsc247 CisKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlIZWFwVHVwbGUJdHVwbGU7CisJRGF0dW0JCXZh bHVlc1s0XTsKKwlib29sCQludWxsc1s0XTsKKworCWlmIChnZXRfY2FsbF9yZXN1bHRfdHlw ZShmY2luZm8sIE5VTEwsICZ0dXBkZXNjKSAhPSBUWVBFRlVOQ19DT01QT1NJVEUpCisJCWVs b2coRVJST1IsICJyZXR1cm4gdHlwZSBtdXN0IGJlIGEgcm93IHR5cGUiKTsKKworCS8qIG9w ZW4gYW5kIGxvY2sgc2VxdWVuY2UgKi8KKwlpbml0X3NlcXVlbmNlKHJlbGlkLCAmZWxtLCAm c2VxcmVsKTsKKworCWlmIChwZ19jbGFzc19hY2xjaGVjayhlbG0tPnJlbGlkLCBHZXRVc2Vy SWQoKSwKKwkJCQkJCSAgQUNMX1NFTEVDVCB8IEFDTF9VU0FHRSkgIT0gQUNMQ0hFQ0tfT0sp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRf UFJJVklMRUdFKSwKKwkJCQkgZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZCBmb3Igc2VxdWVu Y2UgJXMiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoc2VxcmVsKSkpKTsKKwor CXNlcSA9IHJlYWRfc2VxX3R1cGxlKHNlcXJlbCwgJmJ1ZiwgJnNlcXR1cGxlLCAmbHNuKTsK KworCWlzX2NhbGxlZCA9IHNlcS0+aXNfY2FsbGVkOworCWxhc3RfdmFsdWUgPSBzZXEtPmxh c3RfdmFsdWU7CisJbG9nX2NudCA9IHNlcS0+bG9nX2NudDsKKworCVVubG9ja1JlbGVhc2VC dWZmZXIoYnVmKTsKKwlyZWxhdGlvbl9jbG9zZShzZXFyZWwsIE5vTG9jayk7CisKKwl2YWx1 ZXNbMF0gPSBMU05HZXREYXR1bShsc24pOworCXZhbHVlc1sxXSA9IEludDY0R2V0RGF0dW0o bGFzdF92YWx1ZSk7CisJdmFsdWVzWzJdID0gSW50NjRHZXREYXR1bShsb2dfY250KTsKKwl2 YWx1ZXNbM10gPSBCb29sR2V0RGF0dW0oaXNfY2FsbGVkKTsKKworCW1lbXNldChudWxscywg MCwgc2l6ZW9mKG51bGxzKSk7CisKKwl0dXBsZSA9IGhlYXBfZm9ybV90dXBsZSh0dXBkZXNj LCB2YWx1ZXMsIG51bGxzKTsKKwlyZXN1bHQgPSBIZWFwVHVwbGVHZXREYXR1bSh0dXBsZSk7 CisKKwlQR19SRVRVUk5fREFUVU0ocmVzdWx0KTsKK30KIAogdm9pZAogc2VxX3JlZG8oWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRp b25jbWRzLmMKaW5kZXggZWRjODJjMTFiZWIuLjBlMDZiMzY2MTFmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC0xMDAsNiArMTAwLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgU3ViT3B0cwogfSBTdWJPcHRzOwogCiBzdGF0aWMgTGlzdCAqZmV0Y2hf dGFibGVfbGlzdChXYWxSZWNlaXZlckNvbm4gKndyY29ubiwgTGlzdCAqcHVibGljYXRpb25z KTsKK3N0YXRpYyBMaXN0ICpmZXRjaF9zZXF1ZW5jZV9saXN0KFdhbFJlY2VpdmVyQ29ubiAq d3Jjb25uLCBMaXN0ICpwdWJsaWNhdGlvbnMpOwogc3RhdGljIHZvaWQgY2hlY2tfcHVibGlj YXRpb25zX29yaWdpbihXYWxSZWNlaXZlckNvbm4gKndyY29ubiwKIAkJCQkJCQkJCSAgTGlz dCAqcHVibGljYXRpb25zLCBib29sIGNvcHlkYXRhLAogCQkJCQkJCQkJICBjaGFyICpvcmln aW4sIE9pZCAqc3VicmVsX2xvY2FsX29pZHMsCkBAIC03MzAsOSArNzMxLDkgQEAgQ3JlYXRl U3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3Rt dCAqc3RtdCwKIAl7CiAJCWNoYXIJICAgKmVycjsKIAkJV2FsUmVjZWl2ZXJDb25uICp3cmNv bm47Ci0JCUxpc3QJICAgKnRhYmxlczsKKwkJTGlzdAkgICAqcmVsYXRpb25zOwogCQlMaXN0 Q2VsbCAgICpsYzsKLQkJY2hhcgkJdGFibGVfc3RhdGU7CisJCWNoYXIJCXN5bmNfc3RhdGU7 CiAJCWJvb2wJCW11c3RfdXNlX3Bhc3N3b3JkOwogCiAJCS8qIFRyeSB0byBjb25uZWN0IHRv IHRoZSBwdWJsaXNoZXIuICovCkBAIC03NTQsMTQgKzc1NSwxNyBAQCBDcmVhdGVTdWJzY3Jp cHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10 LAogCQkJICogU2V0IHN5bmMgc3RhdGUgYmFzZWQgb24gaWYgd2Ugd2VyZSBhc2tlZCB0byBk byBkYXRhIGNvcHkgb3IKIAkJCSAqIG5vdC4KIAkJCSAqLwotCQkJdGFibGVfc3RhdGUgPSBv cHRzLmNvcHlfZGF0YSA/IFNVQlJFTF9TVEFURV9JTklUIDogU1VCUkVMX1NUQVRFX1JFQURZ OworCQkJc3luY19zdGF0ZSA9IG9wdHMuY29weV9kYXRhID8gU1VCUkVMX1NUQVRFX0lOSVQg OiBTVUJSRUxfU1RBVEVfUkVBRFk7CiAKIAkJCS8qCi0JCQkgKiBHZXQgdGhlIHRhYmxlIGxp c3QgZnJvbSBwdWJsaXNoZXIgYW5kIGJ1aWxkIGxvY2FsIHRhYmxlIHN0YXR1cwotCQkJICog aW5mby4KKwkJCSAqIEdldCB0aGUgdGFibGUgYW5kIHNlcXVlbmNlIGxpc3QgZnJvbSBwdWJs aXNoZXIgYW5kIGJ1aWxkIGxvY2FsCisJCQkgKiByZWxhdGlvbiBzeW5jIHN0YXR1cyBpbmZv LgogCQkJICovCi0JCQl0YWJsZXMgPSBmZXRjaF90YWJsZV9saXN0KHdyY29ubiwgcHVibGlj YXRpb25zKTsKLQkJCWZvcmVhY2gobGMsIHRhYmxlcykKKwkJCXJlbGF0aW9ucyA9IGZldGNo X3RhYmxlX2xpc3Qod3Jjb25uLCBwdWJsaWNhdGlvbnMpOworCQkJcmVsYXRpb25zID0gbGlz dF9jb25jYXQocmVsYXRpb25zLAorCQkJCQkJCQkJZmV0Y2hfc2VxdWVuY2VfbGlzdCh3cmNv bm4sIHB1YmxpY2F0aW9ucykpOworCisJCQlmb3JlYWNoKGxjLCByZWxhdGlvbnMpCiAJCQl7 CiAJCQkJUmFuZ2VWYXIgICAqcnYgPSAoUmFuZ2VWYXIgKikgbGZpcnN0KGxjKTsKIAkJCQlP aWQJCQlyZWxpZDsKQEAgLTc3Miw3ICs3NzYsNyBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFy c2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCUNo ZWNrU3Vic2NyaXB0aW9uUmVsa2luZChnZXRfcmVsX3JlbGtpbmQocmVsaWQpLAogCQkJCQkJ CQkJCSBydi0+c2NoZW1hbmFtZSwgcnYtPnJlbG5hbWUpOwogCi0JCQkJQWRkU3Vic2NyaXB0 aW9uUmVsU3RhdGUoc3ViaWQsIHJlbGlkLCB0YWJsZV9zdGF0ZSwKKwkJCQlBZGRTdWJzY3Jp cHRpb25SZWxTdGF0ZShzdWJpZCwgcmVsaWQsIHN5bmNfc3RhdGUsCiAJCQkJCQkJCQkJSW52 YWxpZFhMb2dSZWNQdHIpOwogCQkJfQogCkBAIC03OTgsMTIgKzgwMiwxMiBAQCBDcmVhdGVT dWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10 ICpzdG10LAogCQkJCSAqCiAJCQkJICogTm90ZSB0aGF0IGlmIHRhYmxlcyB3ZXJlIHNwZWNp ZmllZCBidXQgY29weV9kYXRhIGlzIGZhbHNlCiAJCQkJICogdGhlbiBpdCBpcyBzYWZlIHRv IGVuYWJsZSB0d29fcGhhc2UgdXAtZnJvbnQgYmVjYXVzZSB0aG9zZQotCQkJCSAqIHRhYmxl cyBhcmUgYWxyZWFkeSBpbml0aWFsbHkgaW4gUkVBRFkgc3RhdGUuIFdoZW4gdGhlCi0JCQkJ ICogc3Vic2NyaXB0aW9uIGhhcyBubyB0YWJsZXMsIHdlIGxlYXZlIHRoZSB0d29waGFzZSBz dGF0ZSBhcwotCQkJCSAqIFBFTkRJTkcsIHRvIGFsbG93IEFMVEVSIFNVQlNDUklQVElPTiAu Li4gUkVGUkVTSAorCQkJCSAqIHJlbGF0aW9ucyBhcmUgYWxyZWFkeSBpbml0aWFsbHkgaW4g UkVBRFkgc3RhdGUuIFdoZW4gdGhlCisJCQkJICogc3Vic2NyaXB0aW9uIGhhcyBubyByZWxh dGlvbnMsIHdlIGxlYXZlIHRoZSB0d29waGFzZSBzdGF0ZQorCQkJCSAqIGFzIFBFTkRJTkcs IHRvIGFsbG93IEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSAogCQkJCSAqIFBVQkxJ Q0FUSU9OIHRvIHdvcmsuCiAJCQkJICovCi0JCQkJaWYgKG9wdHMudHdvcGhhc2UgJiYgIW9w dHMuY29weV9kYXRhICYmIHRhYmxlcyAhPSBOSUwpCisJCQkJaWYgKG9wdHMudHdvcGhhc2Ug JiYgIW9wdHMuY29weV9kYXRhICYmIHJlbGF0aW9ucyAhPSBOSUwpCiAJCQkJCXR3b3BoYXNl X2VuYWJsZWQgPSB0cnVlOwogCiAJCQkJd2FscmN2X2NyZWF0ZV9zbG90KHdyY29ubiwgb3B0 cy5zbG90X25hbWUsIGZhbHNlLCB0d29waGFzZV9lbmFibGVkLApAQCAtODgyLDggKzg4Niwx MCBAQCBBbHRlclN1YnNjcmlwdGlvbl9yZWZyZXNoKFN1YnNjcmlwdGlvbiAqc3ViLCBib29s IGNvcHlfZGF0YSwKIAkJaWYgKHZhbGlkYXRlX3B1YmxpY2F0aW9ucykKIAkJCWNoZWNrX3B1 YmxpY2F0aW9ucyh3cmNvbm4sIHZhbGlkYXRlX3B1YmxpY2F0aW9ucyk7CiAKLQkJLyogR2V0 IHRoZSB0YWJsZSBsaXN0IGZyb20gcHVibGlzaGVyLiAqLworCQkvKiBHZXQgdGhlIGxpc3Qg b2YgcmVsYXRpb25zIGZyb20gcHVibGlzaGVyLiAqLwogCQlwdWJyZWxfbmFtZXMgPSBmZXRj aF90YWJsZV9saXN0KHdyY29ubiwgc3ViLT5wdWJsaWNhdGlvbnMpOworCQlwdWJyZWxfbmFt ZXMgPSBsaXN0X2NvbmNhdChwdWJyZWxfbmFtZXMsCisJCQkJCQkJCSAgIGZldGNoX3NlcXVl bmNlX2xpc3Qod3Jjb25uLCBzdWItPnB1YmxpY2F0aW9ucykpOwogCiAJCS8qIEdldCBsb2Nh bCB0YWJsZSBsaXN0LiAqLwogCQlzdWJyZWxfc3RhdGVzID0gR2V0U3Vic2NyaXB0aW9uUmVs YXRpb25zKHN1Yi0+b2lkLCBmYWxzZSk7CkBAIC0yMTUzLDYgKzIxNTksNzUgQEAgZmV0Y2hf dGFibGVfbGlzdChXYWxSZWNlaXZlckNvbm4gKndyY29ubiwgTGlzdCAqcHVibGljYXRpb25z KQogCXJldHVybiB0YWJsZWxpc3Q7CiB9CiAKKy8qCisgKiBHZXQgdGhlIGxpc3Qgb2Ygc2Vx dWVuY2VzIHdoaWNoIGJlbG9uZyB0byBzcGVjaWZpZWQgcHVibGljYXRpb25zIG9uIHRoZQor ICogcHVibGlzaGVyIGNvbm5lY3Rpb24uCisgKi8KK3N0YXRpYyBMaXN0ICoKK2ZldGNoX3Nl cXVlbmNlX2xpc3QoV2FsUmVjZWl2ZXJDb25uICp3cmNvbm4sIExpc3QgKnB1YmxpY2F0aW9u cykKK3sKKwlXYWxSY3ZFeGVjUmVzdWx0ICpyZXM7CisJU3RyaW5nSW5mb0RhdGEgY21kOwor CVR1cGxlVGFibGVTbG90ICpzbG90OworCU9pZAkJCXRhYmxlUm93WzJdID0ge1RFWFRPSUQs IFRFWFRPSUR9OworCUxpc3RDZWxsICAgKmxjOworCWJvb2wJCWZpcnN0OworCUxpc3QJICAg KnRhYmxlbGlzdCA9IE5JTDsKKworCUFzc2VydChsaXN0X2xlbmd0aChwdWJsaWNhdGlvbnMp ID4gMCk7CisKKwlpbml0U3RyaW5nSW5mbygmY21kKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZjbWQsICJTRUxFQ1QgRElTVElOQ1Qgcy5zY2hlbWFuYW1lLCBzLnNlcXVlbmNlbmFt ZVxuIgorCQkJCQkJICAgIiAgRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3NlcXVl bmNlcyBzXG4iCisJCQkJCQkgICAiIFdIRVJFIHMucHVibmFtZSBJTiAoIik7CisJZmlyc3Qg PSB0cnVlOworCWZvcmVhY2gobGMsIHB1YmxpY2F0aW9ucykKKwl7CisJCWNoYXIJICAgKnB1 Ym5hbWUgPSBzdHJWYWwobGZpcnN0KGxjKSk7CisKKwkJaWYgKGZpcnN0KQorCQkJZmlyc3Qg PSBmYWxzZTsKKwkJZWxzZQorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiLCAi KTsKKworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsIHF1b3RlX2xpdGVyYWxfY3N0 cihwdWJuYW1lKSk7CisJfQorCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZjbWQsICcpJyk7CisK KwlyZXMgPSB3YWxyY3ZfZXhlYyh3cmNvbm4sIGNtZC5kYXRhLCAyLCB0YWJsZVJvdyk7CisJ cGZyZWUoY21kLmRhdGEpOworCisJaWYgKHJlcy0+c3RhdHVzICE9IFdBTFJDVl9PS19UVVBM RVMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycm1zZygiY291bGQgbm90IHJlY2VpdmUg bGlzdCBvZiByZXBsaWNhdGVkIHNlcXVlbmNlcyBmcm9tIHRoZSBwdWJsaXNoZXI6ICVzIiwK KwkJCQkJCXJlcy0+ZXJyKSkpOworCisJLyogUHJvY2VzcyBzZXF1ZW5jZXMuICovCisJc2xv dCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdChyZXMtPnR1cGxlZGVzYywgJlRUU09wc01p bmltYWxUdXBsZSk7CisJd2hpbGUgKHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KHJlcy0+dHVw bGVzdG9yZSwgdHJ1ZSwgZmFsc2UsIHNsb3QpKQorCXsKKwkJY2hhcgkgICAqbnNwbmFtZTsK KwkJY2hhcgkgICAqcmVsbmFtZTsKKwkJYm9vbAkJaXNudWxsOworCQlSYW5nZVZhciAgICpy djsKKworCQluc3BuYW1lID0gVGV4dERhdHVtR2V0Q1N0cmluZyhzbG90X2dldGF0dHIoc2xv dCwgMSwgJmlzbnVsbCkpOworCQlBc3NlcnQoIWlzbnVsbCk7CisJCXJlbG5hbWUgPSBUZXh0 RGF0dW1HZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cihzbG90LCAyLCAmaXNudWxsKSk7CisJCUFz c2VydCghaXNudWxsKTsKKworCQlydiA9IG1ha2VSYW5nZVZhcihuc3BuYW1lLCByZWxuYW1l LCAtMSk7CisJCXRhYmxlbGlzdCA9IGxhcHBlbmQodGFibGVsaXN0LCBydik7CisKKwkJRXhl Y0NsZWFyVHVwbGUoc2xvdCk7CisJfQorCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qo c2xvdCk7CisKKwl3YWxyY3ZfY2xlYXJfcmVzdWx0KHJlcyk7CisKKwlyZXR1cm4gdGFibGVs aXN0OworfQorCiAvKgogICogVGhpcyBpcyB0byByZXBvcnQgdGhlIGNvbm5lY3Rpb24gZmFp bHVyZSB3aGlsZSBkcm9wcGluZyByZXBsaWNhdGlvbiBzbG90cy4KICAqIEhlcmUsIHdlIHJl cG9ydCB0aGUgV0FSTklORyBmb3IgYWxsIHRhYmxlc3luYyBzbG90cyBzbyB0aGF0IHVzZXIg Y2FuIGRyb3AKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNh dGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKaW5kZXgg ODFmMjcwNDJiYzQuLjFkNTYzOWI0N2ZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUmVwbGljYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UmVwbGljYXRpb24uYwpAQCAtNzQ1LDcgKzc0NSw5IEBAIHZvaWQKIENoZWNrU3Vic2NyaXB0 aW9uUmVsa2luZChjaGFyIHJlbGtpbmQsIGNvbnN0IGNoYXIgKm5zcG5hbWUsCiAJCQkJCQkg Y29uc3QgY2hhciAqcmVsbmFtZSkKIHsKLQlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1JFTEFU SU9OICYmIHJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwlpZiAocmVs a2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmCisJCXJlbGtpbmQgIT0gUkVMS0lORF9QQVJU SVRJT05FRF9UQUJMRSAmJgorCQlyZWxraW5kICE9IFJFTEtJTkRfU0VRVUVOQ0UpCiAJCWVy ZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSks CiAJCQkJIGVycm1zZygiY2Fubm90IHVzZSByZWxhdGlvbiBcIiVzLiVzXCIgYXMgbG9naWNh bCByZXBsaWNhdGlvbiB0YXJnZXQiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggZDYzMWFjODlhOTEu LjcwMDAyMGFhMjczIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55Cisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTQ1Miw3ICs0NTIsNyBAQCBzdGF0 aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAq YWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCQkJCXRyYW5zZm9ybV9lbGVtZW50X2xpc3QgdHJh bnNmb3JtX3R5cGVfbGlzdAogCQkJCVRyaWdnZXJUcmFuc2l0aW9ucyBUcmlnZ2VyUmVmZXJl bmNpbmcKIAkJCQl2YWN1dW1fcmVsYXRpb25fbGlzdCBvcHRfdmFjdXVtX3JlbGF0aW9uX2xp c3QKLQkJCQlkcm9wX29wdGlvbl9saXN0IHB1Yl9vYmpfbGlzdAorCQkJCWRyb3Bfb3B0aW9u X2xpc3QgcHViX29ial9saXN0IHB1Yl9vYmpfdHlwZV9saXN0CiAKICV0eXBlIDxub2RlPglv cHRfcm91dGluZV9ib2R5CiAldHlwZSA8Z3JvdXBjbGF1c2U+IGdyb3VwX2NsYXVzZQpAQCAt NTg2LDYgKzU4Niw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChj aGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bm9k ZT4JdmFyX3ZhbHVlIHpvbmVfdmFsdWUKICV0eXBlIDxyb2xlc3BlYz4gYXV0aF9pZGVudCBS b2xlU3BlYyBvcHRfZ3JhbnRlZF9ieQogJXR5cGUgPHB1YmxpY2F0aW9ub2JqZWN0c3BlYz4g UHVibGljYXRpb25PYmpTcGVjCisldHlwZSA8bm9kZT4JcHViX29ial90eXBlCiAKICV0eXBl IDxrZXl3b3JkPiB1bnJlc2VydmVkX2tleXdvcmQgdHlwZV9mdW5jX25hbWVfa2V5d29yZAog JXR5cGUgPGtleXdvcmQ+IGNvbF9uYW1lX2tleXdvcmQgcmVzZXJ2ZWRfa2V5d29yZApAQCAt MTA0MjcsMTIgKzEwNDI4LDE2IEBAIEFsdGVyT3duZXJTdG10OiBBTFRFUiBBR0dSRUdBVEUg YWdncmVnYXRlX3dpdGhfYXJndHlwZXMgT1dORVIgVE8gUm9sZVNwZWMKICAqCiAgKiBDUkVB VEUgUFVCTElDQVRJT04gRk9SIEFMTCBUQUJMRVMgW1dJVEggb3B0aW9uc10KICAqCisgKiBD UkVBVEUgUFVCTElDQVRJT04gRk9SIEFMTCBTRVFVRU5DRVMgW1dJVEggb3B0aW9uc10KKyAq CiAgKiBDUkVBVEUgUFVCTElDQVRJT04gRk9SIHB1Yl9vYmogWywgLi4uXSBbV0lUSCBvcHRp b25zXQogICoKICAqIHB1Yl9vYmogaXMgb25lIG9mOgogICoKICAqCQlUQUJMRSB0YWJsZSBb LCAuLi5dCisgKgkJU0VRVUVOQ0UgdGFibGUgWywgLi4uXQogICoJCVRBQkxFUyBJTiBTQ0hF TUEgc2NoZW1hIFssIC4uLl0KKyAqCQlTRVFVRU5DRVMgSU4gU0NIRU1BIHNjaGVtYSBbLCAu Li5dCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCkBAIC0xMDQ0NSwxMyArMTA0 NTAsMTMgQEAgQ3JlYXRlUHVibGljYXRpb25TdG10OgogCQkJCQluLT5vcHRpb25zID0gJDQ7 CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0JCQl8IENSRUFURSBQVUJMSUNBVElP TiBuYW1lIEZPUiBBTEwgVEFCTEVTIG9wdF9kZWZpbml0aW9uCisJCQl8IENSRUFURSBQVUJM SUNBVElPTiBuYW1lIEZPUiBBTEwgcHViX29ial90eXBlX2xpc3Qgb3B0X2RlZmluaXRpb24K IAkJCQl7CiAJCQkJCUNyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqbiA9IG1ha2VOb2RlKENyZWF0 ZVB1YmxpY2F0aW9uU3RtdCk7CiAKIAkJCQkJbi0+cHVibmFtZSA9ICQzOwogCQkJCQluLT5v cHRpb25zID0gJDc7Ci0JCQkJCW4tPmZvcl9hbGxfdGFibGVzID0gdHJ1ZTsKKwkJCQkJbi0+ Zm9yX2FsbF9vYmplY3RzID0gJDY7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CiAJ CQl8IENSRUFURSBQVUJMSUNBVElPTiBuYW1lIEZPUiBwdWJfb2JqX2xpc3Qgb3B0X2RlZmlu aXRpb24KQEAgLTEwNTAyLDYgKzEwNTA3LDI2IEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJ CQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9UQUJMRVNfSU5fQ1VSX1NDSEVN QTsKIAkJCQkJJCQtPmxvY2F0aW9uID0gQDQ7CiAJCQkJfQorCQkJfCBTRVFVRU5DRSByZWxh dGlvbl9leHByCisJCQkJeworCQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3Bl Yyk7CisJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpfU0VRVUVOQ0U7CisJ CQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOworCQkJCQkk JC0+cHVidGFibGUtPnJlbGF0aW9uID0gJDI7CisJCQkJfQorCQkJfCBTRVFVRU5DRVMgSU5f UCBTQ0hFTUEgQ29sSWQKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25P YmpTcGVjKTsKKwkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9TRVFVRU5D RVNfSU5fU0NIRU1BOworCQkJCQkkJC0+bmFtZSA9ICQ0OworCQkJCQkkJC0+bG9jYXRpb24g PSBANDsKKwkJCQl9CisJCQl8IFNFUVVFTkNFUyBJTl9QIFNDSEVNQSBDVVJSRU5UX1NDSEVN QQorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJ CQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1NFUVVFTkNFU19JTl9DVVJfU0NI RU1BOworCQkJCQkkJC0+bG9jYXRpb24gPSBANDsKKwkJCQl9CiAJCQl8IENvbElkIG9wdF9j b2x1bW5fbGlzdCBPcHRXaGVyZUNsYXVzZQogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQ dWJsaWNhdGlvbk9ialNwZWMpOwpAQCAtMTA1NjMsNiArMTA1ODgsMTkgQEAgcHViX29ial9s aXN0OglQdWJsaWNhdGlvbk9ialNwZWMKIAkJCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsg fQogCTsKIAorcHViX29ial90eXBlOglUQUJMRVMKKwkJCQkJeyAkJCA9IChOb2RlICopIG1h a2VTdHJpbmcoInRhYmxlcyIpOyB9CisJCQkJfCBTRVFVRU5DRVMKKwkJCQkJeyAkJCA9IChO b2RlICopIG1ha2VTdHJpbmcoInNlcXVlbmNlcyIpOyB9CisJOworCitwdWJfb2JqX3R5cGVf bGlzdDoJcHViX29ial90eXBlCisJCQkJCXsgJCQgPSBsaXN0X21ha2UxKCQxKTsgfQorCQkJ CXwgcHViX29ial90eXBlX2xpc3QgJywnIHB1Yl9vYmpfdHlwZQorCQkJCQl7ICQkID0gbGFw cGVuZCgkMSwgJDMpOyB9CisJOworCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoK ICAqIEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgU0VUICggb3B0aW9ucyApCkBAIC0xMDU3Niw3 ICsxMDYxNCw5IEBAIHB1Yl9vYmpfbGlzdDoJUHVibGljYXRpb25PYmpTcGVjCiAgKiBwdWJf b2JqIGlzIG9uZSBvZjoKICAqCiAgKgkJVEFCTEUgdGFibGVfbmFtZSBbLCAuLi5dCisgKgkJ U0VRVUVOQ0UgdGFibGVfbmFtZSBbLCAuLi5dCiAgKgkJVEFCTEVTIElOIFNDSEVNQSBzY2hl bWFfbmFtZSBbLCAuLi5dCisgKgkJU0VRVUVOQ0VTIElOIFNDSEVNQSBzY2hlbWFfbmFtZSBb LCAuLi5dCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCkBAIC0xODkzNiw3ICsx ODk3Niw4IEBAIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0 LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAkJaWYgKHB1Ym9iai0+cHVib2JqdHlwZSA9 PSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT04pCiAJCQlwdWJvYmotPnB1Ym9ianR5cGUg PSBwcmV2b2JqdHlwZTsKIAotCQlpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FU SU9OT0JKX1RBQkxFKQorCQlpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9O T0JKX1RBQkxFIHx8CisJCQlwdWJvYmotPnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpf U0VRVUVOQ0UpCiAJCXsKIAkJCS8qIHJlbGF0aW9uIG5hbWUgb3IgcHVidGFibGUgbXVzdCBi ZSBzZXQgZm9yIHRoaXMgdHlwZSBvZiBvYmplY3QgKi8KIAkJCWlmICghcHVib2JqLT5uYW1l ICYmICFwdWJvYmotPnB1YnRhYmxlKQpAQCAtMTg5ODcsNiArMTkwMjgsMzAgQEAgcHJlcHJv Y2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3Qg eXlzY2FubmVyKQogCQkJCQkJZXJybXNnKCJpbnZhbGlkIHNjaGVtYSBuYW1lIiksCiAJCQkJ CQlwYXJzZXJfZXJycG9zaXRpb24ocHVib2JqLT5sb2NhdGlvbikpOwogCQl9CisJCWVsc2Ug aWYgKHB1Ym9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRVNfSU5f U0NIRU1BIHx8CisJCQkJIHB1Ym9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9T RVFVRU5DRVNfSU5fQ1VSX1NDSEVNQSkKKwkJeworCQkJLyogV0hFUkUgY2xhdXNlIGlzIG5v dCBhbGxvd2VkIG9uIGEgc2NoZW1hIG9iamVjdCAqLworCQkJaWYgKHB1Ym9iai0+cHVidGFi bGUgJiYgcHVib2JqLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UpCisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJZXJybXNn KCJXSEVSRSBjbGF1c2Ugbm90IGFsbG93ZWQgZm9yIHNjaGVtYSIpLAorCQkJCQkJcGFyc2Vy X2VycnBvc2l0aW9uKHB1Ym9iai0+bG9jYXRpb24pKTsKKworCQkJLyoKKwkJCSAqIFdlIGNh biBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgdHlwZSBvZiBzY2hlbWEKKwkJ CSAqIG9iamVjdHMgYmFzZWQgb24gd2hldGhlciBuYW1lIGFuZCBwdWJ0YWJsZSBpcyBzZXQu CisJCQkgKi8KKwkJCWlmIChwdWJvYmotPm5hbWUpCisJCQkJcHVib2JqLT5wdWJvYmp0eXBl ID0gUFVCTElDQVRJT05PQkpfU0VRVUVOQ0VTX0lOX1NDSEVNQTsKKwkJCWVsc2UgaWYgKCFw dWJvYmotPm5hbWUgJiYgIXB1Ym9iai0+cHVidGFibGUpCisJCQkJcHVib2JqLT5wdWJvYmp0 eXBlID0gUFVCTElDQVRJT05PQkpfU0VRVUVOQ0VTX0lOX0NVUl9TQ0hFTUE7CisJCQllbHNl CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLAorCQkJCQkJZXJybXNnKCJpbnZhbGlkIHNjaGVtYSBuYW1lIGF0IG9yIG5lYXIiKSwK KwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwdWJvYmotPmxvY2F0aW9uKSk7CisJCX0KIAog CQlwcmV2b2JqdHlwZSA9IHB1Ym9iai0+cHVib2JqdHlwZTsKIAl9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggYWE0NzFkY2NkZjMuLjlkNGZiZTky Y2UwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3Rv LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCkBAIC02 NjMsNiArNjYzLDU5IEBAIGxvZ2ljYWxyZXBfd3JpdGVfbWVzc2FnZShTdHJpbmdJbmZvIG91 dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAogCXBxX3NlbmRieXRlcyhv dXQsIG1lc3NhZ2UsIHN6KTsKIH0KIAorLyoKKyAqIFdyaXRlIFNFUVVFTkNFIHRvIHN0cmVh bQorICovCit2b2lkCitsb2dpY2FscmVwX3dyaXRlX3NlcXVlbmNlKFN0cmluZ0luZm8gb3V0 LCBSZWxhdGlvbiByZWwsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJICBYTG9nUmVjUHRy IGxzbiwgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJICBpbnQ2NCB2YWx1ZSkKK3sKKwl1 aW50OAkJZmxhZ3MgPSAwOworCisJcHFfc2VuZGJ5dGUob3V0LCBMT0dJQ0FMX1JFUF9NU0df U0VRVUVOQ0UpOworCisJLyogdHJhbnNhY3Rpb24gSUQgKGlmIG5vdCB2YWxpZCwgd2UncmUg bm90IHN0cmVhbWluZykgKi8KKwlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwkJ cHFfc2VuZGludDMyKG91dCwgeGlkKTsKKworCXBxX3NlbmRpbnQ4KG91dCwgZmxhZ3MpOwor CisJLyogdXNlIE9pZCBhcyByZWxhdGlvbiBpZGVudGlmaWVyICovCisJcHFfc2VuZGludDMy KG91dCwgUmVsYXRpb25HZXRSZWxpZChyZWwpKTsKKworCS8qIHdyaXRlIHRoZSBMU04gb2Yg dGhlIHNlcXVlbmNlIGNoYW5nZSAqLworCXBxX3NlbmRpbnQ2NChvdXQsIGxzbik7CisKKwkv KiB3cml0ZSBzZXF1ZW5jZSBpbmZvICovCisJcHFfc2VuZGludDgob3V0LCB0cmFuc2FjdGlv bmFsKTsKKwlwcV9zZW5kaW50NjQob3V0LCB2YWx1ZSk7Cit9CisKKy8qCisgKiBSZWFkIFNF UVVFTkNFIGZyb20gdGhlIHN0cmVhbS4KKyAqLworTG9naWNhbFJlcFJlbElkCitsb2dpY2Fs cmVwX3JlYWRfc2VxdWVuY2UoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFNlcXVlbmNlICpz ZXFkYXRhKQoreworCUxvZ2ljYWxSZXBSZWxJZCByZWxpZDsKKworCS8qIFhYWCBza2lwcGlu ZyBmbGFncyAqLworCXBxX2dldG1zZ2ludChpbiwgMSk7CisKKwkvKiByZWFkIHRoZSByZWxh dGlvbiBpZCAqLworCXJlbGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKworCS8qIHJlYWQg dGhlIExTTiBvZiB0aGUgc2VxdWVuY2UgY2hhbmdlICovCisJc2VxZGF0YS0+bHNuID0gcHFf Z2V0bXNnaW50NjQoaW4pOworCisJLyogaW5mbyBhYm91dCB0aGUgc2VxdWVuY2UgY2hhbmdl ICovCisJc2VxZGF0YS0+dHJhbnNhY3Rpb25hbCA9IHBxX2dldG1zZ2ludChpbiwgMSk7CisJ c2VxZGF0YS0+dmFsdWUgPSBwcV9nZXRtc2dpbnQ2NChpbik7CisKKwlyZXR1cm4gcmVsaWQ7 Cit9CisKIC8qCiAgKiBXcml0ZSByZWxhdGlvbiBkZXNjcmlwdGlvbiB0byB0aGUgb3V0cHV0 IHN0cmVhbS4KICAqLwpAQCAtMTI1OCw2ICsxMzExLDggQEAgbG9naWNhbHJlcF9tZXNzYWdl X3R5cGUoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uKQogCQkJcmV0dXJuICJTVFJFQU0gQUJP UlQiOwogCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1fUFJFUEFSRToKIAkJCXJldHVy biAiU1RSRUFNIFBSRVBBUkUiOworCQljYXNlIExPR0lDQUxfUkVQX01TR19TRVFVRU5DRToK KwkJCXJldHVybiAiU0VRVUVOQ0UiOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCBkZjNjNDJlYjVkZS4uZjEzMTJi MmY2OWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFi bGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5 bmMuYwpAQCAtMTAwLDYgKzEwMCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3Jp cHRpb25fcmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvY29weS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5j bHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCkBAIC0xMTgsNiArMTE5LDcgQEAKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5o IgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcGdfbHNu LmgiCiAjaW5jbHVkZSAidXRpbHMvcmxzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5o IgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCkBAIC0xMjI5LDYgKzEyMzEsMTA2IEBA IGNvcHlfdGFibGUoUmVsYXRpb24gcmVsKQogCWxvZ2ljYWxyZXBfcmVsX2Nsb3NlKHJlbG1h cGVudHJ5LCBOb0xvY2spOwogfQogCisvKgorICogRmV0Y2ggc2VxdWVuY2UgZGF0YSAoY3Vy cmVudCBzdGF0ZSkgZnJvbSB0aGUgcmVtb3RlIG5vZGUsIGluY2x1ZGluZyB0aGUKKyAqIHBh Z2UgTFNOLgorICovCitzdGF0aWMgaW50NjQKK2ZldGNoX3NlcXVlbmNlX2RhdGEoT2lkIHJl bW90ZWlkLCBYTG9nUmVjUHRyICpsc24pCit7CisJV2FsUmN2RXhlY1Jlc3VsdCAqcmVzOwor CVN0cmluZ0luZm9EYXRhIGNtZDsKKwlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKKwlPaWQJCQl0 YWJsZVJvd1syXSA9IHtJTlQ4T0lELCBMU05PSUR9OworCWludDY0CQl2YWx1ZSA9IChEYXR1 bSkgMDsKKworCWluaXRTdHJpbmdJbmZvKCZjbWQpOworCWFwcGVuZFN0cmluZ0luZm8oJmNt ZCwgIlNFTEVDVCAobGFzdF92YWx1ZSArIGxvZ19jbnQpLCBwYWdlX2xzbiAiCisJCQkJCSAi RlJPTSBwZ19zZXF1ZW5jZV9zdGF0ZSglZCkiLCByZW1vdGVpZCk7CisKKwlyZXMgPSB3YWxy Y3ZfZXhlYyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uLCBjbWQuZGF0YSwgMiwgdGFibGVSb3cp OworCXBmcmVlKGNtZC5kYXRhKTsKKworCWlmIChyZXMtPnN0YXR1cyAhPSBXQUxSQ1ZfT0tf VFVQTEVTKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJtc2coImNvdWxkIG5vdCByZWNl aXZlIGxpc3Qgb2YgcmVwbGljYXRlZCB0YWJsZXMgZnJvbSB0aGUgcHVibGlzaGVyOiAlcyIs CisJCQkJCQlyZXMtPmVycikpKTsKKworCS8qIFByb2Nlc3MgdGhlIHNlcXVlbmNlLiAqLwor CXNsb3QgPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QocmVzLT50dXBsZWRlc2MsICZUVFNP cHNNaW5pbWFsVHVwbGUpOworCXdoaWxlICh0dXBsZXN0b3JlX2dldHR1cGxlc2xvdChyZXMt PnR1cGxlc3RvcmUsIHRydWUsIGZhbHNlLCBzbG90KSkKKwl7CisJCWJvb2wJCWlzbnVsbDsK KworCQl2YWx1ZSA9IERhdHVtR2V0SW50NjQoc2xvdF9nZXRhdHRyKHNsb3QsIDEsICZpc251 bGwpKTsKKwkJQXNzZXJ0KCFpc251bGwpOworCisJCSpsc24gPSBEYXR1bUdldEludDY0KHNs b3RfZ2V0YXR0cihzbG90LCAyLCAmaXNudWxsKSk7CisJCUFzc2VydCghaXNudWxsKTsKKwl9 CisKKwlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCisJd2FscmN2X2Ns ZWFyX3Jlc3VsdChyZXMpOworCisJcmV0dXJuIHZhbHVlOworfQorCisvKgorICogQ29weSBl eGlzdGluZyBkYXRhIG9mIGEgc2VxdWVuY2UgZnJvbSBwdWJsaXNoZXIuCisgKgorICogQ2Fs bGVyIGlzIHJlc3BvbnNpYmxlIGZvciBsb2NraW5nIHRoZSBsb2NhbCByZWxhdGlvbi4KKyAq Lworc3RhdGljIFhMb2dSZWNQdHIKK2NvcHlfc2VxdWVuY2UoUmVsYXRpb24gcmVsKQorewor CUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsbWFwZW50cnk7CisJTG9naWNhbFJlcFJlbGF0 aW9uIGxyZWw7CisJTGlzdAkgICAqcXVhbCA9IE5JTDsKKwlTdHJpbmdJbmZvRGF0YSBjbWQ7 CisJaW50NjQJCXNlcXVlbmNlX3ZhbHVlOworCVhMb2dSZWNQdHIJbHNuID0gSW52YWxpZFhM b2dSZWNQdHI7CisKKwkvKiBHZXQgdGhlIHB1Ymxpc2hlciByZWxhdGlvbiBpbmZvLiAqLwor CWZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGdldF9uYW1lc3BhY2VfbmFtZShSZWxhdGlvbkdl dE5hbWVzcGFjZShyZWwpKSwKKwkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp LCAmbHJlbCwgJnF1YWwpOworCisJLyogc2VxdWVuY2VzIGRvbid0IGhhdmUgcm93IGZpbHRl cnMgKi8KKwlBc3NlcnQoIXF1YWwpOworCisJLyogUHV0IHRoZSByZWxhdGlvbiBpbnRvIHJl bG1hcC4gKi8KKwlsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUoJmxyZWwpOworCisJLyogTWFw IHRoZSBwdWJsaXNoZXIgcmVsYXRpb24gdG8gbG9jYWwgb25lLiAqLworCXJlbG1hcGVudHJ5 ID0gbG9naWNhbHJlcF9yZWxfb3BlbihscmVsLnJlbW90ZWlkLCBOb0xvY2spOworCUFzc2Vy dChyZWwgPT0gcmVsbWFwZW50cnktPmxvY2FscmVsKTsKKworCS8qIFN0YXJ0IGNvcHkgb24g dGhlIHB1Ymxpc2hlci4gKi8KKwlpbml0U3RyaW5nSW5mbygmY21kKTsKKworCUFzc2VydChs cmVsLnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSk7CisKKwkvKgorCSAqIExvZ2ljYWwg cmVwbGljYXRpb24gb2Ygc2VxdWVuY2VzIGlzIGJhc2VkIG9uIGRlY29kaW5nIFdBTCByZWNv cmRzLAorCSAqIGRlc2NyaWJpbmcgdGhlICJuZXh0IiBzdGF0ZSBvZiB0aGUgc2VxdWVuY2Ug dGhlIGN1cnJlbnQgc3RhdGUgaW4gdGhlCisJICogcmVsZmlsZW5vZGUgaXMgeWV0IHRvIHJl YWNoLiBCdXQgZHVyaW5nIHRoZSBpbml0aWFsIHN5bmMgd2UgcmVhZCB0aGUKKwkgKiBjdXJy ZW50IHN0YXRlLCBzbyB3ZSBuZWVkIHRvIHJlY29uc3RydWN0IHRoZSBXQUwgcmVjb3JkIGxv Z2dlZCB3aGVuIHdlCisJICogc3RhcnRlZCB0aGUgY3VycmVudCBiYXRjaCBvZiBzZXF1ZW5j ZSB2YWx1ZXMuCisJICoKKwkgKiBPdGhlcndpc2Ugd2UgbWlnaHQgZ2V0IGR1cGxpY2F0ZSB2 YWx1ZXMgKG9uIHN1YnNjcmliZXIpIGlmIHdlIGZhaWxlZAorCSAqIG92ZXIgcmlnaHQgYWZ0 ZXIgdGhlIHN5bmMuCisJICovCisJc2VxdWVuY2VfdmFsdWUgPSBmZXRjaF9zZXF1ZW5jZV9k YXRhKGxyZWwucmVtb3RlaWQsICZsc24pOworCisJLyogdGFibGVzeW5jIHNldHMgdGhlIHNl cXVlbmNlcyBpbiBub24tdHJhbnNhY3Rpb25hbCB3YXkgKi8KKwlTZXRTZXF1ZW5jZShSZWxh dGlvbkdldFJlbGlkKHJlbCksIGZhbHNlLCBzZXF1ZW5jZV92YWx1ZSk7CisKKwlsb2dpY2Fs cmVwX3JlbF9jbG9zZShyZWxtYXBlbnRyeSwgTm9Mb2NrKTsKKworCS8qIHJldHVybiB0aGUg TFNOIHdoZW4gdGhlIHNlcXVlbmNlIHN0YXRlIHdhcyBzZXQgKi8KKwlyZXR1cm4gbHNuOwor fQorCiAvKgogICogRGV0ZXJtaW5lIHRoZSB0YWJsZXN5bmMgc2xvdCBuYW1lLgogICoKQEAg LTEyNzcsNiArMTM3OSw3IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVTdGFydChYTG9nUmVjUHRy ICpvcmlnaW5fc3RhcnRwb3MpCiAJVXNlckNvbnRleHQgdWN4dDsKIAlib29sCQltdXN0X3Vz ZV9wYXNzd29yZDsKIAlib29sCQlydW5fYXNfb3duZXI7CisJWExvZ1JlY1B0cglzZXF1ZW5j ZV9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAogCS8qIENoZWNrIHRoZSBzdGF0ZSBvZiB0 aGUgdGFibGUgc3luY2hyb25pemF0aW9uLiAqLwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5k KCk7CkBAIC0xNDg4LDEwICsxNTkxLDM0IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVTdGFydChY TG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJCQkJCQlHZXRVc2VyTmFtZUZyb21JZChH ZXRVc2VySWQoKSwgdHJ1ZSksCiAJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp KSkpOwogCi0JLyogTm93IGRvIHRoZSBpbml0aWFsIGRhdGEgY29weSAqLwotCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOwotCWNvcHlfdGFibGUocmVs KTsKLQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCS8qIERvIHRoZSByaWdodCBhY3Rpb24gZGVw ZW5kaW5nIG9uIHRoZSByZWxhdGlvbiBraW5kLiAqLworCWlmIChnZXRfcmVsX3JlbGtpbmQo UmVsYXRpb25HZXRSZWxpZChyZWwpKSA9PSBSRUxLSU5EX1NFUVVFTkNFKQorCXsKKwkJLyog Tm93IGRvIHRoZSBpbml0aWFsIHNlcXVlbmNlIGNvcHkgKi8KKwkJUHVzaEFjdGl2ZVNuYXBz aG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCXNlcXVlbmNlX2xzbiA9IGNvcHlf c2VxdWVuY2UocmVsKTsKKwkJUG9wQWN0aXZlU25hcHNob3QoKTsKKworCQkvKgorCQkgKiBT ZXF1ZW5jZXMgYXJlIG5vdCBjb25zaXN0ZW50IChpbiB0aGUgTVZDQyBzZW5zZSkgd2l0aCBy ZXNwZWN0IHRvCisJCSAqIHRoZSByZXBsaWNhdGlvbiBzbG90LCBzbyB0aGUgY29weSBtaWdo dCBoYXZlIHJlYWQgYSBtb3JlIHJlY2VudAorCQkgKiBzdGF0ZSB0aGFuIG9yaWdpbl9zdGFy dHBvcy4gVGhlIHNlcXVlbmNlX2xzbiBjb21lcyBmcm9tIHBhZ2UgTFNOCisJCSAqICh3aGlj aCBpcyBMU04gb2YgdGhlIGxhc3Qgc2VxdWVuY2UgY2hhbmdlKSwgc28gdGhhdCdzIHRoZSBy aWdodAorCQkgKiBwb3NpdGlvbiB3aGVyZSB0byBzdGFydCB3aXRoIHRoZSBjYXRjaHVwIGFw cGx5LgorCQkgKgorCQkgKiBJdCBtaWdodCBiZSBiZWZvcmUgdGhlIHNsb3QsIHRob3VnaCAo aWYgdGhlIHNlcXVlbmNlIHdhcyBub3QgdXNlZAorCQkgKiBzaW5jZSBiZXR3ZWVuIHRoZSBz bG90IGNyZWF0aW9uIGFuZCBjb3B5KSwgc28gbWFrZSBzdXJlIHRoZQorCQkgKiBwb3NpdGlv biBkb2VzIG5vdCBtb3ZlIGJhY2t3YXJkcy4KKwkJICovCisJCSpvcmlnaW5fc3RhcnRwb3Mg PSBNYXgoKm9yaWdpbl9zdGFydHBvcywgc2VxdWVuY2VfbHNuKTsKKwl9CisJZWxzZQorCXsK KwkJLyogTm93IGRvIHRoZSBpbml0aWFsIGRhdGEgY29weSAqLworCQlQdXNoQWN0aXZlU25h cHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJY29weV90YWJsZShyZWwpOwor CQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCX0KIAogCXJlcyA9IHdhbHJjdl9leGVjKExvZ1Jl cFdvcmtlcldhbFJjdkNvbm4sICJDT01NSVQiLCAwLCBOVUxMKTsKIAlpZiAocmVzLT5zdGF0 dXMgIT0gV0FMUkNWX09LX0NPTU1BTkQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYwppbmRleCAyMWFiZjM0ZWY3YS4uYTViNTJmNjBhNWEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMTU0LDYgKzE1NCw3 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Rh Ymxlc3BhY2UuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL3RhYmxlY21kcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2Uu aCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCkBAIC0xNDM3LDYgKzE0MzgsOTcg QEAgYXBwbHlfaGFuZGxlX29yaWdpbihTdHJpbmdJbmZvIHMpCiAJCQkJIGVycm1zZ19pbnRl cm5hbCgiT1JJR0lOIG1lc3NhZ2Ugc2VudCBvdXQgb2Ygb3JkZXIiKSkpOwogfQogCisvKgor ICogSGFuZGxlIFNFUVVFTkNFIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9o YW5kbGVfc2VxdWVuY2UoU3RyaW5nSW5mbyBzKQoreworCUxvZ2ljYWxSZXBTZXF1ZW5jZSBz ZXE7CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWw7CisJT2lkCQkJcmVsaWQ7CisJYm9v bAkJYWxyZWFkeV9pbl90cmFuc2FjdGlvbiBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisK KwlpZiAoaXNfc2tpcHBpbmdfY2hhbmdlcygpIHx8CisJCWhhbmRsZV9zdHJlYW1lZF90cmFu c2FjdGlvbihMT0dJQ0FMX1JFUF9NU0dfU0VRVUVOQ0UsIHMpKQorCQlyZXR1cm47CisKKwkv KgorCSAqIFJlbWVtYmVyIGlmIHdlJ3JlIGFscmVhZHkgaW4gdHJhbnNhY3Rpb24gKGJlZ2lu X3JlcGxpY2F0aW9uIHN0ZXAgc3RhcnRzCisJICogYSB0cmFuc2FjdGlvbiwgc28gd2UgY2Fu J3QgdXNlIElzVHJhbnNhY3Rpb25TdGF0ZSgpIGFmdGVyIHRoYXQgcG9pbnQuCisJICovCisJ YWxyZWFkeV9pbl90cmFuc2FjdGlvbiA9IElzVHJhbnNhY3Rpb25TdGF0ZSgpOworCisJLyoK KwkgKiBNYWtlIHN1cmUgd2UncmUgaW4gYSB0cmFuc2FjdGlvbiAobmVlZGVkIGJ5IFNldFNl cXVlbmNlKS4gRm9yCisJICogbm9uLXRyYW5zYWN0aW9uYWwgdXBkYXRlcyB3ZSdyZSBndWFy YW50ZWVkIHRvIHN0YXJ0IGEgbmV3IG9uZSwgYW5kCisJICogd2UnbGwgY29tbWl0IGl0IGF0 IHRoZSBlbmQuCisJICovCisJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCisJcmVsaWQg PSBsb2dpY2FscmVwX3JlYWRfc2VxdWVuY2UocywgJnNlcSk7CisKKwkvKgorCSAqIE5vbi10 cmFuc2FjdGlvbmFsIHNlcXVlbmNlIHVwZGF0ZXMgc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIGEg cmVtb3RlCisJICogdHJhbnNhY3Rpb24uIFRoZXJlIHNob3VsZCBub3QgYmUgYW55IHJ1bm5p bmcgdHJhbnNhY3Rpb24uCisJICovCisJQXNzZXJ0KCghc2VxLnRyYW5zYWN0aW9uYWwpIHx8 IGluX3JlbW90ZV90cmFuc2FjdGlvbik7CisJQXNzZXJ0KCEoIXNlcS50cmFuc2FjdGlvbmFs ICYmIGluX3JlbW90ZV90cmFuc2FjdGlvbikpOworCUFzc2VydCghKCFzZXEudHJhbnNhY3Rp b25hbCAmJiBhbHJlYWR5X2luX3RyYW5zYWN0aW9uKSk7CisKKwkvKiBsb2NrIHRoZSBzZXF1 ZW5jZSBpbiBBY2Nlc3NFeGNsdXNpdmVMb2NrLCBhcyBleHBlY3RlZCBieSBTZXRTZXF1ZW5j ZSAqLworCXJlbCA9IGxvZ2ljYWxyZXBfcmVsX29wZW4ocmVsaWQsIEFjY2Vzc0V4Y2x1c2l2 ZUxvY2spOworCWlmICghc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbChyZWwpKQorCXsK KwkJLyoKKwkJICogVGhlIHJlbGF0aW9uIGNhbid0IGJlY29tZSBpbnRlcmVzdGluZyBpbiB0 aGUgbWlkZGxlIG9mIHRoZQorCQkgKiB0cmFuc2FjdGlvbiBzbyBpdCdzIHNhZmUgdG8gdW5s b2NrIGl0LgorCQkgKi8KKwkJbG9naWNhbHJlcF9yZWxfY2xvc2UocmVsLCBBY2Nlc3NFeGNs dXNpdmVMb2NrKTsKKwkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCQkvKgorCQkgKiBD b21taXQgdGhlIHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKHdlIG9ubHkgZG8gdGhpcyB3aGVu IG5vdCBpbgorCQkgKiByZW1vdGUgdHJhbnNhY3Rpb24sIGkuZS4gZm9yIG5vbi10cmFuc2Fj dGlvbmFsIHNlcXVlbmNlIHVwZGF0ZXMuKQorCQkgKi8KKwkJaWYgKCFpbl9yZW1vdGVfdHJh bnNhY3Rpb24pCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlyZXR1cm47 CisJfQorCisJLyoKKwkgKiBhcHBseSB0aGUgc2VxdWVuY2UgY2hhbmdlCisJICoKKwkgKiBY WFggV2UgZG9uJ3QgbmVlZCB0byByZWNvbnN0cnVjdCB0aGUgdmFsdWUgZnJvbSBsYXN0X3Zh bHVlLCBsb2dfY250CisJICogZXRjLiBiZWNhdXNlIHRoYXQgaGFwcGVucyBvbiB0aGUgcHVi bGlzaGVyLgorCSAqLworCVNldFNlcXVlbmNlKHJlbC0+bG9jYWxyZWxvaWQsIHNlcS50cmFu c2FjdGlvbmFsLCBzZXEudmFsdWUpOworCisJbG9naWNhbHJlcF9yZWxfY2xvc2UocmVsLCBO b0xvY2spOworCisJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCS8qCisJICogQ29tbWl0 IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICh3ZSBvbmx5IGRvIHRoaXMgd2hlbiBub3Qg aW4gcmVtb3RlCisJICogdHJhbnNhY3Rpb24sIGkuZS4gZm9yIG5vbi10cmFuc2FjdGlvbmFs IHNlcXVlbmNlIHVwZGF0ZXMuKQorCSAqLworCWlmICghaW5fcmVtb3RlX3RyYW5zYWN0aW9u KQorCXsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJLyoKKwkJICogVXBk YXRlIG9yaWdpbiBzdGF0ZSBzbyB3ZSBkb24ndCB0cnkgYXBwbHlpbmcgdGhpcyBzZXF1ZW5j ZSBjaGFuZ2UKKwkJICogaW4gY2FzZSBvZiBjcmFzaC4gV2Ugb25seSBkbyB0aGlzIGZvciBu b24tdHJhc2FjdGlvbmFsIGNoYW5nZXMsCisJCSAqIHRoYXQgYXJlIHJlcGxheWVkIGRpcmVj dGx5LgorCQkgKgorCQkgKiBYWFggV2UgZG9uJ3QgaGF2ZSByZXBsb3JpZ2luX3Nlc3Npb25f b3JpZ2luX3RpbWVzdGFtcCwgYnV0IHdlIGNhbgorCQkgKiBqdXN0IGxlYXZlIHRoYXQgc2V0 IHRvIDAuCisJCSAqLworCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IHNlcS5s c247CisJfQorfQorCiAvKgogICogSW5pdGlhbGl6ZSBmaWxlc2V0IChpZiBub3QgYWxyZWFk eSBkb25lKS4KICAqCkBAIC0zMzQ3LDYgKzM0MzksMTAgQEAgYXBwbHlfZGlzcGF0Y2goU3Ry aW5nSW5mbyBzKQogCQkJICovCiAJCQlicmVhazsKIAorCQljYXNlIExPR0lDQUxfUkVQX01T R19TRVFVRU5DRToKKwkJCWFwcGx5X2hhbmRsZV9zZXF1ZW5jZShzKTsKKwkJCXJldHVybjsK KwogCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RBUlQ6CiAJCQlhcHBseV9oYW5k bGVfc3RyZWFtX3N0YXJ0KHMpOwogCQkJYnJlYWs7CkBAIC00MzY1LDYgKzQ0NjEsNyBAQCBz ZXRfc3RyZWFtX29wdGlvbnMoV2FsUmN2U3RyZWFtT3B0aW9ucyAqb3B0aW9ucywKIAogCXNl cnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJj dkNvbm4pOwogCW9wdGlvbnMtPnByb3RvLmxvZ2ljYWwucHJvdG9fdmVyc2lvbiA9CisJCXNl cnZlcl92ZXJzaW9uID49IDE3MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU0VRVUVOQ0VTX1ZF UlNJT05fTlVNIDoKIAkJc2VydmVyX3ZlcnNpb24gPj0gMTYwMDAwID8gTE9HSUNBTFJFUF9Q Uk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+ PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDoKIAkJ c2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVS U0lPTl9OVU0gOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRw dXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0 cHV0LmMKaW5kZXggZjllZDEwODNkZjcuLjUwODJhYjFmNDkyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE1LDYgKzE1LDcgQEAK ICNpbmNsdWRlICJhY2Nlc3MvdHVwY29udmVydC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGFy dGl0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb25fbmFtZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNj cmlwdGlvbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgpAQCAtNTUsNiArNTYs MTAgQEAgc3RhdGljIHZvaWQgcGdvdXRwdXRfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250 ZXh0ICpjdHgsCiAJCQkJCQkJIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBt ZXNzYWdlX2xzbiwKIAkJCQkJCQkgYm9vbCB0cmFuc2FjdGlvbmFsLCBjb25zdCBjaGFyICpw cmVmaXgsCiAJCQkJCQkJIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworc3RhdGlj IHZvaWQgcGdvdXRwdXRfc2VxdWVuY2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAor CQkJCQkJCSAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRyIHNlcXVlbmNlX2xz biwKKwkJCQkJCQkgIFJlbGF0aW9uIHJlbGF0aW9uLCBib29sIHRyYW5zYWN0aW9uYWwsCisJ CQkJCQkJICBpbnQ2NCB2YWx1ZSk7CiBzdGF0aWMgYm9vbCBwZ291dHB1dF9vcmlnaW5fZmls dGVyKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJCQkJICAgUmVwT3JpZ2lu SWQgb3JpZ2luX2lkKTsKIHN0YXRpYyB2b2lkIHBnb3V0cHV0X2JlZ2luX3ByZXBhcmVfdHhu KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKQEAgLTI1Miw2ICsyNTcsNyBAQCBfUEdf b3V0cHV0X3BsdWdpbl9pbml0KE91dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpCiAJY2ItPmNo YW5nZV9jYiA9IHBnb3V0cHV0X2NoYW5nZTsKIAljYi0+dHJ1bmNhdGVfY2IgPSBwZ291dHB1 dF90cnVuY2F0ZTsKIAljYi0+bWVzc2FnZV9jYiA9IHBnb3V0cHV0X21lc3NhZ2U7CisJY2It PnNlcXVlbmNlX2NiID0gcGdvdXRwdXRfc2VxdWVuY2U7CiAJY2ItPmNvbW1pdF9jYiA9IHBn b3V0cHV0X2NvbW1pdF90eG47CiAKIAljYi0+YmVnaW5fcHJlcGFyZV9jYiA9IHBnb3V0cHV0 X2JlZ2luX3ByZXBhcmVfdHhuOwpAQCAtMjY4LDYgKzI3NCw3IEBAIF9QR19vdXRwdXRfcGx1 Z2luX2luaXQoT3V0cHV0UGx1Z2luQ2FsbGJhY2tzICpjYikKIAljYi0+c3RyZWFtX2NvbW1p dF9jYiA9IHBnb3V0cHV0X3N0cmVhbV9jb21taXQ7CiAJY2ItPnN0cmVhbV9jaGFuZ2VfY2Ig PSBwZ291dHB1dF9jaGFuZ2U7CiAJY2ItPnN0cmVhbV9tZXNzYWdlX2NiID0gcGdvdXRwdXRf bWVzc2FnZTsKKwljYi0+c3RyZWFtX3NlcXVlbmNlX2NiID0gcGdvdXRwdXRfc2VxdWVuY2U7 CiAJY2ItPnN0cmVhbV90cnVuY2F0ZV9jYiA9IHBnb3V0cHV0X3RydW5jYXRlOwogCS8qIHRy YW5zYWN0aW9uIHN0cmVhbWluZyAtIHR3by1waGFzZSBjb21taXQgKi8KIAljYi0+c3RyZWFt X3ByZXBhcmVfY2IgPSBwZ291dHB1dF9zdHJlYW1fcHJlcGFyZV90eG47CkBAIC02NzMsNyAr NjgwLDcgQEAgcGdvdXRwdXRfcm9sbGJhY2tfcHJlcGFyZWRfdHhuKExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwKICAqLwogc3RhdGljIHZvaWQKIG1heWJlX3NlbmRfc2NoZW1hKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKLQkJCQkgIFJlb3JkZXJCdWZmZXJDaGFuZ2Ug KmNoYW5nZSwKKwkJCQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkgIFJlbGF0aW9u IHJlbGF0aW9uLCBSZWxhdGlvblN5bmNFbnRyeSAqcmVsZW50cnkpCiB7CiAJUEdPdXRwdXRE YXRhICpkYXRhID0gKFBHT3V0cHV0RGF0YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0 ZTsKQEAgLTY5MCwxMCArNjk3LDEwIEBAIG1heWJlX3NlbmRfc2NoZW1hKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwKIAkgKiB0aGUgd3JpdGUgbWV0aG9kcyB3aWxsIG5vdCBpbmNs dWRlIGl0LgogCSAqLwogCWlmIChkYXRhLT5pbl9zdHJlYW1pbmcpCi0JCXhpZCA9IGNoYW5n ZS0+dHhuLT54aWQ7CisJCXhpZCA9IHR4bi0+eGlkOwogCi0JaWYgKHJidHhuX2lzX3N1YnR4 bihjaGFuZ2UtPnR4bikpCi0JCXRvcHhpZCA9IHJidHhuX2dldF90b3B0eG4oY2hhbmdlLT50 eG4pLT54aWQ7CisJaWYgKHJidHhuX2lzX3N1YnR4bih0eG4pKQorCQl0b3B4aWQgPSByYnR4 bl9nZXRfdG9wdHhuKHR4biktPnhpZDsKIAllbHNlCiAJCXRvcHhpZCA9IHhpZDsKIApAQCAt OTAyLDkgKzkwOSwxMCBAQCBwZ291dHB1dF9yb3dfZmlsdGVyX2luaXQoUEdPdXRwdXREYXRh ICpkYXRhLCBMaXN0ICpwdWJsaWNhdGlvbnMsCiAJCSAqIChldmVuIGlmIG90aGVyIHB1Ymxp Y2F0aW9ucyBoYXZlIGEgcm93IGZpbHRlcikuCiAJCSAqLwogCQlpZiAoIXB1Yi0+YWxsdGFi bGVzICYmCi0JCQkhU2VhcmNoU3lzQ2FjaGVFeGlzdHMyKFBVQkxJQ0FUSU9OTkFNRVNQQUNF TUFQLAorCQkJIVNlYXJjaFN5c0NhY2hlRXhpc3RzMyhQVUJMSUNBVElPTk5BTUVTUEFDRU1B UCwKIAkJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShzY2hlbWFpZCksCi0JCQkJCQkJCSAg IE9iamVjdElkR2V0RGF0dW0ocHViLT5vaWQpKSkKKwkJCQkJCQkJICAgT2JqZWN0SWRHZXRE YXR1bShwdWItPm9pZCksCisJCQkJCQkJCSAgIFBVQl9PQkpUWVBFX1RBQkxFKSkKIAkJewog CQkJLyoKIAkJCSAqIENoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2YgYSByb3cgZmlsdGVyIGlu IHRoaXMgcHVibGljYXRpb24uCkBAIC0xNTE4LDcgKzE1MjYsNyBAQCBwZ291dHB1dF9jaGFu Z2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4s CiAJICogU2NoZW1hIHNob3VsZCBiZSBzZW50IHVzaW5nIHRoZSBvcmlnaW5hbCByZWxhdGlv biBiZWNhdXNlIGl0IGFsc28gc2VuZHMKIAkgKiB0aGUgYW5jZXN0b3IncyByZWxhdGlvbi4K IAkgKi8KLQltYXliZV9zZW5kX3NjaGVtYShjdHgsIGNoYW5nZSwgcmVsYXRpb24sIHJlbGVu dHJ5KTsKKwltYXliZV9zZW5kX3NjaGVtYShjdHgsIHR4biwgcmVsYXRpb24sIHJlbGVudHJ5 KTsKIAogCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOwogCkBAIC0xNjAz LDcgKzE2MTEsNyBAQCBwZ291dHB1dF90cnVuY2F0ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJaWYgKHR4bmRhdGEgJiYgIXR4bmRh dGEtPnNlbnRfYmVnaW5fdHhuKQogCQkJcGdvdXRwdXRfc2VuZF9iZWdpbihjdHgsIHR4bik7 CiAKLQkJbWF5YmVfc2VuZF9zY2hlbWEoY3R4LCBjaGFuZ2UsIHJlbGF0aW9uLCByZWxlbnRy eSk7CisJCW1heWJlX3NlbmRfc2NoZW1hKGN0eCwgY2hhbmdlLT50eG4sIHJlbGF0aW9uLCBy ZWxlbnRyeSk7CiAJfQogCiAJaWYgKG5yZWxpZHMgPiAwKQpAQCAtMTY2Myw2ICsxNjcxLDcw IEBAIHBnb3V0cHV0X21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIH0K IAorc3RhdGljIHZvaWQKK3Bnb3V0cHV0X3NlcXVlbmNlKExvZ2ljYWxEZWNvZGluZ0NvbnRl eHQgKmN0eCwKKwkJCQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBzZXF1 ZW5jZV9sc24sCisJCQkJICBSZWxhdGlvbiByZWxhdGlvbiwgYm9vbCB0cmFuc2FjdGlvbmFs LAorCQkJCSAgaW50NjQgdmFsdWUpCit7CisJUEdPdXRwdXREYXRhICpkYXRhID0gKFBHT3V0 cHV0RGF0YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlUcmFuc2FjdGlvbklk IHhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCVJlbGF0aW9uU3luY0VudHJ5ICpyZWxl bnRyeTsKKworCWlmICghaXNfcHVibGlzaGFibGVfcmVsYXRpb24ocmVsYXRpb24pKQorCQly ZXR1cm47CisKKwkvKgorCSAqIElmIHRoZSBuZWdvdGlhdGVkIHByb3RvY29sIHZlcnNpb24g ZG9lcyBub3Qgc3VwcG9ydCBzZXF1ZW5jZXMsIHlldCB3ZQorCSAqIGZvdW5kIGEgc2VxdWVu Y2UgaW4gdGhlIHB1YmxpY2F0aW9uLCBlcnJvciBvdXQuCisJICovCisJaWYgKGRhdGEtPnBy b3RvY29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NFUVVFTkNFU19WRVJTSU9OX05V TSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJIGVycm1zZygicHJvdG9jb2wgdmVyc2lvbiBkb2VzIG5vdCBzdXBwb3J0IHNl cXVlbmNlIHJlcGxpY2F0aW9uIikpKTsKKworCS8qCisJICogUmVtZW1iZXIgdGhlIHhpZCBm b3IgdGhlIG1lc3NhZ2UgaW4gc3RyZWFtaW5nIG1vZGUuIFNlZQorCSAqIHBnb3V0cHV0X2No YW5nZS4KKwkgKi8KKwlpZiAoZGF0YS0+aW5fc3RyZWFtaW5nKQorCQl4aWQgPSB0eG4tPnhp ZDsKKworCXJlbGVudHJ5ID0gZ2V0X3JlbF9zeW5jX2VudHJ5KGRhdGEsIHJlbGF0aW9uKTsK KworCS8qCisJICogRmlyc3QgY2hlY2sgdGhlIHNlcXVlbmNlIGZpbHRlci4KKwkgKgorCSAq IFdlIGhhbmRsZSBqdXN0IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9TRVFVRU5DRSBoZXJlLgor CSAqLworCWlmICghcmVsZW50cnktPnB1YmFjdGlvbnMucHVic2VxdWVuY2UpCisJCXJldHVy bjsKKworCS8qCisJICogT3V0cHV0IEJFR0lOIGlmIHdlIGhhdmVuJ3QgeWV0LiBBdm9pZCBm b3Igbm9uLXRyYW5zYWN0aW9uYWwgc2VxdWVuY2UKKwkgKiBjaGFuZ2VzLgorCSAqLworCWlm ICh0cmFuc2FjdGlvbmFsKQorCXsKKwkJUEdPdXRwdXRUeG5EYXRhICp0eG5kYXRhID0gKFBH T3V0cHV0VHhuRGF0YSAqKSB0eG4tPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKworCQkvKiBT ZW5kIEJFR0lOIGlmIHdlIGhhdmVuJ3QgeWV0ICovCisJCWlmICh0eG5kYXRhICYmICF0eG5k YXRhLT5zZW50X2JlZ2luX3R4bikKKwkJCXBnb3V0cHV0X3NlbmRfYmVnaW4oY3R4LCB0eG4p OworCX0KKworCW1heWJlX3NlbmRfc2NoZW1hKGN0eCwgdHhuLCByZWxhdGlvbiwgcmVsZW50 cnkpOworCisJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7CisJbG9naWNh bHJlcF93cml0ZV9zZXF1ZW5jZShjdHgtPm91dCwKKwkJCQkJCQkgIHJlbGF0aW9uLAorCQkJ CQkJCSAgeGlkLAorCQkJCQkJCSAgc2VxdWVuY2VfbHNuLAorCQkJCQkJCSAgdHJhbnNhY3Rp b25hbCwKKwkJCQkJCQkgIHZhbHVlKTsKKwlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUp OworfQorCiAvKgogICogUmV0dXJuIHRydWUgaWYgdGhlIGRhdGEgaXMgYXNzb2NpYXRlZCB3 aXRoIGFuIG9yaWdpbiBhbmQgdGhlIHVzZXIgaGFzCiAgKiByZXF1ZXN0ZWQgdGhlIGNoYW5n ZXMgdGhhdCBkb24ndCBoYXZlIGFuIG9yaWdpbiwgZmFsc2Ugb3RoZXJ3aXNlLgpAQCAtMTk3 OCw3ICsyMDUwLDggQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwg UmVsYXRpb24gcmVsYXRpb24pCiAJCWVudHJ5LT5zY2hlbWFfc2VudCA9IGZhbHNlOwogCQll bnRyeS0+c3RyZWFtZWRfdHhucyA9IE5JTDsKIAkJZW50cnktPnB1YmFjdGlvbnMucHViaW5z ZXJ0ID0gZW50cnktPnB1YmFjdGlvbnMucHVidXBkYXRlID0KLQkJCWVudHJ5LT5wdWJhY3Rp b25zLnB1YmRlbGV0ZSA9IGVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0gZmFsc2U7 CisJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZWxldGUgPSBlbnRyeS0+cHViYWN0aW9ucy5w dWJ0cnVuY2F0ZSA9CisJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJzZXF1ZW5jZSA9IGZhbHNl OwogCQllbnRyeS0+bmV3X3Nsb3QgPSBOVUxMOwogCQllbnRyeS0+b2xkX3Nsb3QgPSBOVUxM OwogCQltZW1zZXQoZW50cnktPmV4cHJzdGF0ZSwgMCwgc2l6ZW9mKGVudHJ5LT5leHByc3Rh dGUpKTsKQEAgLTE5OTMsMTggKzIwNjYsMTkgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0 cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24pCiAJewogCQlPaWQJCQlzY2hlbWFJ ZCA9IGdldF9yZWxfbmFtZXNwYWNlKHJlbGlkKTsKIAkJTGlzdAkgICAqcHViaWRzID0gR2V0 UmVsYXRpb25QdWJsaWNhdGlvbnMocmVsaWQpOworCQljaGFyCQlyZWxraW5kID0gZ2V0X3Jl bF9yZWxraW5kKHJlbGlkKTsKKwkJY2hhcgkJb2JqZWN0VHlwZSA9IHB1Yl9nZXRfb2JqZWN0 X3R5cGVfZm9yX3JlbGtpbmQocmVsa2luZCk7CiAKIAkJLyoKIAkJICogV2UgZG9uJ3QgYWNx dWlyZSBhIGxvY2sgb24gdGhlIG5hbWVzcGFjZSBzeXN0ZW0gdGFibGUgYXMgd2UgYnVpbGQK IAkJICogdGhlIGNhY2hlIGVudHJ5IHVzaW5nIGEgaGlzdG9yaWMgc25hcHNob3QgYW5kIGFs bCB0aGUgbGF0ZXIgY2hhbmdlcwogCQkgKiBhcmUgYWJzb3JiZWQgd2hpbGUgZGVjb2Rpbmcg V0FMLgogCQkgKi8KLQkJTGlzdAkgICAqc2NoZW1hUHViaWRzID0gR2V0U2NoZW1hUHVibGlj YXRpb25zKHNjaGVtYUlkKTsKKwkJTGlzdAkgICAqc2NoZW1hUHViaWRzID0gR2V0U2NoZW1h UHVibGljYXRpb25zKHNjaGVtYUlkLCBvYmplY3RUeXBlKTsKIAkJTGlzdENlbGwgICAqbGM7 CiAJCU9pZAkJCXB1Ymxpc2hfYXNfcmVsaWQgPSByZWxpZDsKIAkJaW50CQkJcHVibGlzaF9h bmNlc3Rvcl9sZXZlbCA9IDA7CiAJCWJvb2wJCWFtX3BhcnRpdGlvbiA9IGdldF9yZWxfcmVs aXNwYXJ0aXRpb24ocmVsaWQpOwotCQljaGFyCQlyZWxraW5kID0gZ2V0X3JlbF9yZWxraW5k KHJlbGlkKTsKIAkJTGlzdAkgICAqcmVsX3B1YmxpY2F0aW9ucyA9IE5JTDsKIAogCQkvKiBS ZWxvYWQgcHVibGljYXRpb25zIGlmIG5lZWRlZCBiZWZvcmUgdXNlLiAqLwpAQCAtMjAzNiw2 ICsyMTEwLDcgQEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVs YXRpb24gcmVsYXRpb24pCiAJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSA9IGZhbHNl OwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZWxldGUgPSBmYWxzZTsKIAkJZW50cnktPnB1 YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBmYWxzZTsKKwkJZW50cnktPnB1YmFjdGlvbnMucHVi c2VxdWVuY2UgPSBmYWxzZTsKIAogCQkvKgogCQkgKiBUdXBsZSBzbG90cyBjbGVhbnVwcy4g KFdpbGwgYmUgcmVidWlsdCBsYXRlciBpZiBuZWVkZWQpLgpAQCAtMjA4Myw5ICsyMTU4LDEx IEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJl bGF0aW9uKQogCiAJCQkvKgogCQkJICogSWYgdGhpcyBpcyBhIEZPUiBBTEwgVEFCTEVTIHB1 YmxpY2F0aW9uLCBwaWNrIHRoZSBwYXJ0aXRpb24KLQkJCSAqIHJvb3QgYW5kIHNldCB0aGUg YW5jZXN0b3IgbGV2ZWwgYWNjb3JkaW5nbHkuCisJCQkgKiByb290IGFuZCBzZXQgdGhlIGFu Y2VzdG9yIGxldmVsIGFjY29yZGluZ2x5LiBJZiB0aGlzIGlzIGEgRk9SCisJCQkgKiBBTEwg U0VRVUVOQ0VTIHB1YmxpY2F0aW9uLCB3ZSBwdWJsaXNoIGl0IHRvbyBidXQgd2UgZG9uJ3Qg bmVlZAorCQkJICogdG8gcGljayB0aGUgcGFydGl0aW9uIHJvb3QgZXRjLgogCQkJICovCi0J CQlpZiAocHViLT5hbGx0YWJsZXMpCisJCQlpZiAocHViLT5hbGx0YWJsZXMgJiYgKG9iamVj dFR5cGUgPT0gUFVCX09CSlRZUEVfVEFCTEUpKQogCQkJewogCQkJCXB1Ymxpc2ggPSB0cnVl OwogCQkJCWlmIChwdWItPnB1YnZpYXJvb3QgJiYgYW1fcGFydGl0aW9uKQpAQCAtMjA5Niw2 ICsyMTczLDEwIEBAIGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJl bGF0aW9uIHJlbGF0aW9uKQogCQkJCQlhbmNlc3Rvcl9sZXZlbCA9IGxpc3RfbGVuZ3RoKGFu Y2VzdG9ycyk7CiAJCQkJfQogCQkJfQorCQkJZWxzZSBpZiAocHViLT5hbGxzZXF1ZW5jZXMg JiYgKG9iamVjdFR5cGUgPT0gUFVCX09CSlRZUEVfU0VRVUVOQ0UpKQorCQkJeworCQkJCXB1 Ymxpc2ggPSB0cnVlOworCQkJfQogCiAJCQlpZiAoIXB1Ymxpc2gpCiAJCQl7CkBAIC0yMTQ5 LDYgKzIyMzAsNyBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBS ZWxhdGlvbiByZWxhdGlvbikKIAkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgfD0g cHViLT5wdWJhY3Rpb25zLnB1YnVwZGF0ZTsKIAkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJk ZWxldGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1YmRlbGV0ZTsKIAkJCQllbnRyeS0+cHViYWN0 aW9ucy5wdWJ0cnVuY2F0ZSB8PSBwdWItPnB1YmFjdGlvbnMucHVidHJ1bmNhdGU7CisJCQkJ ZW50cnktPnB1YmFjdGlvbnMucHVic2VxdWVuY2UgfD0gcHViLT5wdWJhY3Rpb25zLnB1YnNl cXVlbmNlOwogCiAJCQkJLyoKIAkJCQkgKiBXZSB3YW50IHRvIHB1Ymxpc2ggdGhlIGNoYW5n ZXMgYXMgdGhlIHRvcC1tb3N0IGFuY2VzdG9yCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2Fj aGUuYwppbmRleCBiM2ZhY2NiZWZlNS4uYTc5Nzc1NmIyNjIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvcmVsY2FjaGUuYwpAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfb3BjbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfcHVibGljYXRpb24uaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcmV3cml0ZS5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfc2hzZWNsYWJlbC5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfc3RhdGlzdGljX2V4dC5oIgpAQCAtNTcxNSw2ICs1NzE2LDggQEAgUmVsYXRpb25CdWls ZFB1YmxpY2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpw dWJkZXNjKQogCU9pZAkJCXNjaGVtYWlkOwogCUxpc3QJICAgKmFuY2VzdG9ycyA9IE5JTDsK IAlPaWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pOworCWNoYXIJCXJl bGtpbmQgPSByZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kOworCWNoYXIJCW9ialR5cGU7CiAK IAkvKgogCSAqIElmIG5vdCBwdWJsaXNoYWJsZSwgaXQgcHVibGlzaGVzIG5vIGFjdGlvbnMu ICAocGdvdXRwdXRfY2hhbmdlKCkgd2lsbApAQCAtNTc0NSw4ICs1NzQ4LDE1IEBAIFJlbGF0 aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9u RGVzYyAqcHViZGVzYykKIAkvKiBGZXRjaCB0aGUgcHVibGljYXRpb24gbWVtYmVyc2hpcCBp bmZvLiAqLwogCXB1Ym9pZHMgPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9ucyhyZWxpZCk7CiAJ c2NoZW1haWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWxhdGlvbik7Ci0JcHVib2lkcyA9 IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywgR2V0U2NoZW1hUHVibGljYXRpb25z KHNjaGVtYWlkKSk7CisJb2JqVHlwZSA9IHB1Yl9nZXRfb2JqZWN0X3R5cGVfZm9yX3JlbGtp bmQocmVsa2luZCk7CiAKKwlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJv aWRzLAorCQkJCQkJCQkJIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCwgb2JqVHlw ZSkpOworCisJLyoKKwkgKiBJZiB0aGlzIGlzIGEgcGFydGlvbiAoYW5kIHRodXMgYSB0YWJs ZSksIGxvb2t1cCBhbGwgYW5jZXN0b3JzIGFuZCB0cmFjaworCSAqIGFsbCBwdWJsaWNhdGlv bnMgdGhlbSB0b28uCisJICovCiAJaWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGlzcGFydGl0 aW9uKQogCXsKIAkJLyogQWRkIHB1YmxpY2F0aW9ucyB0aGF0IHRoZSBhbmNlc3RvcnMgYXJl IGluIHRvby4gKi8KQEAgLTU3NTgsMTIgKzU3NjgsMjMgQEAgUmVsYXRpb25CdWlsZFB1Ymxp Y2F0aW9uRGVzYyhSZWxhdGlvbiByZWxhdGlvbiwgUHVibGljYXRpb25EZXNjICpwdWJkZXNj KQogCiAJCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLAogCQkJ CQkJCQkJCQkgR2V0UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IpKTsKKworCQkJLyog aW5jbHVkZSBhbGwgcHVibGljYXRpb25zIHB1Ymxpc2hpbmcgc2NoZW1hIG9mIGFsbCBhbmNl c3RvcnMgKi8KIAkJCXNjaGVtYWlkID0gZ2V0X3JlbF9uYW1lc3BhY2UoYW5jZXN0b3IpOwog CQkJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lkcywKLQkJCQkJCQkJ CQkJIEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFpZCkpOworCQkJCQkJCQkJCQkgR2V0 U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkLAorCQkJCQkJCQkJCQkJCQkJCSAgIFBVQl9P QkpUWVBFX1RBQkxFKSk7CiAJCX0KIAl9Ci0JcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1 ZV9vaWQocHVib2lkcywgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKCkpOworCisJLyoKKwkg KiBDb25zaWRlciBhbHNvIEZPUiBBTEwgVEFCTEVTIGFuZCBGT1IgQUxMIFNFUVVFTkNFUyBw dWJsaWNhdGlvbnMsCisJICogZGVwZW5kaW5nIG9uIHRoZSByZWxraW5kIG9mIHRoZSByZWxh dGlvbi4KKwkgKi8KKwlpZiAocmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5E X1NFUVVFTkNFKQorCQlwdWJvaWRzID0gbGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRz LCBHZXRBbGxTZXF1ZW5jZXNQdWJsaWNhdGlvbnMoKSk7CisJZWxzZQorCQlwdWJvaWRzID0g bGlzdF9jb25jYXRfdW5pcXVlX29pZChwdWJvaWRzLCBHZXRBbGxUYWJsZXNQdWJsaWNhdGlv bnMoKSk7CiAKIAlmb3JlYWNoKGxjLCBwdWJvaWRzKQogCXsKQEAgLTU3ODIsNiArNTgwMyw3 IEBAIFJlbGF0aW9uQnVpbGRQdWJsaWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1 YmxpY2F0aW9uRGVzYyAqcHViZGVzYykKIAkJcHViZGVzYy0+cHViYWN0aW9ucy5wdWJ1cGRh dGUgfD0gcHViZm9ybS0+cHVidXBkYXRlOwogCQlwdWJkZXNjLT5wdWJhY3Rpb25zLnB1YmRl bGV0ZSB8PSBwdWJmb3JtLT5wdWJkZWxldGU7CiAJCXB1YmRlc2MtPnB1YmFjdGlvbnMucHVi dHJ1bmNhdGUgfD0gcHViZm9ybS0+cHVidHJ1bmNhdGU7CisJCXB1YmRlc2MtPnB1YmFjdGlv bnMucHVic2VxdWVuY2UgfD0gcHViZm9ybS0+cHVic2VxdWVuY2U7CiAKIAkJLyoKIAkJICog Q2hlY2sgaWYgYWxsIGNvbHVtbnMgcmVmZXJlbmNlZCBpbiB0aGUgZmlsdGVyIGV4cHJlc3Np b24gYXJlIHBhcnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3N5c2Nh Y2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCmluZGV4IDhkYmRh MDAyNGY5Li5hMDgwZDU4OGRiMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5j CkBAIC00NTAsOSArNDUwLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2FjaGVkZXNjIGNh Y2hlaW5mb1tdID0gewogCX0sCiAJW1BVQkxJQ0FUSU9OTkFNRVNQQUNFTUFQXSA9IHsKIAkJ UHVibGljYXRpb25OYW1lc3BhY2VSZWxhdGlvbklkLAotCQlQdWJsaWNhdGlvbk5hbWVzcGFj ZVBubnNwaWRQbnB1YmlkSW5kZXhJZCwKKwkJUHVibGljYXRpb25OYW1lc3BhY2VQbm5zcGlk UG5wdWJpZFBudHlwZUluZGV4SWQsCiAJCUtFWShBbnVtX3BnX3B1YmxpY2F0aW9uX25hbWVz cGFjZV9wbm5zcGlkLAotCQkJQW51bV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2VfcG5wdWJp ZCksCisJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZV9wbnB1YmlkLAorCQkJQW51 bV9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2VfcG50eXBlKSwKIAkJNjQKIAl9LAogCVtQVUJM SUNBVElPTk9JRF0gPSB7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCAzNGZkMGE4NmU5Yy4uYmJlMTVj NzQ3NDYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDA1OCwxMCArNDA1OCwxMiBAQCBnZXRQdWJs aWNhdGlvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1QdWJsaWNhdGlvbnMpCiAJaW50CQkJ aV9wdWJuYW1lOwogCWludAkJCWlfcHVib3duZXI7CiAJaW50CQkJaV9wdWJhbGx0YWJsZXM7 CisJaW50CQkJaV9wdWJhbGxzZXF1ZW5jZXM7CiAJaW50CQkJaV9wdWJpbnNlcnQ7CiAJaW50 CQkJaV9wdWJ1cGRhdGU7CiAJaW50CQkJaV9wdWJkZWxldGU7CiAJaW50CQkJaV9wdWJ0cnVu Y2F0ZTsKKwlpbnQJCQlpX3B1YnNlcXVlbmNlOwogCWludAkJCWlfcHVidmlhcm9vdDsKIAlp bnQJCQlpLAogCQkJCW50dXBzOwpAQCAtNDA3NywyMyArNDA3OSwyOSBAQCBnZXRQdWJsaWNh dGlvbnMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1QdWJsaWNhdGlvbnMpCiAJcmVzZXRQUUV4 cEJ1ZmZlcihxdWVyeSk7CiAKIAkvKiBHZXQgdGhlIHB1YmxpY2F0aW9ucy4gKi8KLQlpZiAo Zm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxMzAwMDApCisJaWYgKGZvdXQtPnJlbW90ZVZlcnNp b24gPj0gMTcwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkg IlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wdWJuYW1lLCAiCisJCQkJCQkJICJwLnB1 Ym93bmVyLCAiCisJCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgcC5wdWJhbGxzZXF1ZW5jZXMs IHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUs IHAucHVic2VxdWVuY2UsIHAucHVidmlhcm9vdCAiCisJCQkJCQkJICJGUk9NIHBnX3B1Ymxp Y2F0aW9uIHAiKTsKKwllbHNlIGlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDEzMDAwMCkK IAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICJTRUxFQ1QgcC50YWJs ZW9pZCwgcC5vaWQsIHAucHVibmFtZSwgIgogCQkJCQkJCSAicC5wdWJvd25lciwgIgotCQkJ CQkJCSAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJk ZWxldGUsIHAucHVidHJ1bmNhdGUsIHAucHVidmlhcm9vdCAiCisJCQkJCQkJICJwLnB1YmFs bHRhYmxlcywgZmFsc2UgYXMgcC5wdWJhbGxzZXF1ZW5jZXMsIHAucHViaW5zZXJ0LCBwLnB1 YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIGZhbHNlIGFzIHAucHVic2Vx dWVuY2UsIHAucHVidmlhcm9vdCAiCiAJCQkJCQkJICJGUk9NIHBnX3B1YmxpY2F0aW9uIHAi KTsKIAllbHNlIGlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDExMDAwMCkKIAkJYXBwZW5k UFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5v aWQsIHAucHVibmFtZSwgIgogCQkJCQkJCSAicC5wdWJvd25lciwgIgotCQkJCQkJCSAicC5w dWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAu cHVidHJ1bmNhdGUsIGZhbHNlIEFTIHB1YnZpYXJvb3QgIgorCQkJCQkJCSAicC5wdWJhbGx0 YWJsZXMsIGZhbHNlIGFzIHAucHViYWxsc2VxdWVuY2VzLCBwLnB1Ymluc2VydCwgcC5wdWJ1 cGRhdGUsIHAucHViZGVsZXRlLCBwLnB1YnRydW5jYXRlLCBmYWxzZSBBUyBwdWJzZXF1ZW5j ZSwgZmFsc2UgQVMgcHVidmlhcm9vdCAiCiAJCQkJCQkJICJGUk9NIHBnX3B1YmxpY2F0aW9u IHAiKTsKIAllbHNlCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAi U0VMRUNUIHAudGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKIAkJCQkJCQkgInAucHVi b3duZXIsICIKLQkJCQkJCQkgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1 cGRhdGUsIHAucHViZGVsZXRlLCBmYWxzZSBBUyBwdWJ0cnVuY2F0ZSwgZmFsc2UgQVMgcHVi dmlhcm9vdCAiCisJCQkJCQkJICJwLnB1YmFsbHRhYmxlcywgZmFsc2UgYXMgcC5wdWJhbGxz ZXF1ZW5jZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIGZhbHNl IEFTIHB1YnRydW5jYXRlLCBmYWxzZSBBUyBwdWJzZXF1ZW5jZSwgZmFsc2UgQVMgcHVidmlh cm9vdCAiCiAJCQkJCQkJICJGUk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKIAogCXJlcyA9IEV4 ZWN1dGVTcWxRdWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKQEAg LTQxMDUsMTAgKzQxMTMsMTIgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGlu dCAqbnVtUHVibGljYXRpb25zKQogCWlfcHVibmFtZSA9IFBRZm51bWJlcihyZXMsICJwdWJu YW1lIik7CiAJaV9wdWJvd25lciA9IFBRZm51bWJlcihyZXMsICJwdWJvd25lciIpOwogCWlf cHViYWxsdGFibGVzID0gUFFmbnVtYmVyKHJlcywgInB1YmFsbHRhYmxlcyIpOworCWlfcHVi YWxsc2VxdWVuY2VzID0gUFFmbnVtYmVyKHJlcywgInB1YmFsbHNlcXVlbmNlcyIpOwogCWlf cHViaW5zZXJ0ID0gUFFmbnVtYmVyKHJlcywgInB1Ymluc2VydCIpOwogCWlfcHVidXBkYXRl ID0gUFFmbnVtYmVyKHJlcywgInB1YnVwZGF0ZSIpOwogCWlfcHViZGVsZXRlID0gUFFmbnVt YmVyKHJlcywgInB1YmRlbGV0ZSIpOwogCWlfcHVidHJ1bmNhdGUgPSBQUWZudW1iZXIocmVz LCAicHVidHJ1bmNhdGUiKTsKKwlpX3B1YnNlcXVlbmNlID0gUFFmbnVtYmVyKHJlcywgInB1 YnNlcXVlbmNlIik7CiAJaV9wdWJ2aWFyb290ID0gUFFmbnVtYmVyKHJlcywgInB1YnZpYXJv b3QiKTsKIAogCXB1YmluZm8gPSBwZ19tYWxsb2MobnR1cHMgKiBzaXplb2YoUHVibGljYXRp b25JbmZvKSk7CkBAIC00MTI0LDYgKzQxMzQsOCBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2 ZSAqZm91dCwgaW50ICpudW1QdWJsaWNhdGlvbnMpCiAJCXB1YmluZm9baV0ucm9sbmFtZSA9 IGdldFJvbGVOYW1lKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1Ym93bmVyKSk7CiAJCXB1Ymlu Zm9baV0ucHViYWxsdGFibGVzID0KIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlf cHViYWxsdGFibGVzKSwgInQiKSA9PSAwKTsKKwkJcHViaW5mb1tpXS5wdWJhbGxzZXF1ZW5j ZXMgPQorCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJhbGxzZXF1ZW5jZXMp LCAidCIpID09IDApOwogCQlwdWJpbmZvW2ldLnB1Ymluc2VydCA9CiAJCQkoc3RyY21wKFBR Z2V0dmFsdWUocmVzLCBpLCBpX3B1Ymluc2VydCksICJ0IikgPT0gMCk7CiAJCXB1YmluZm9b aV0ucHVidXBkYXRlID0KQEAgLTQxMzIsNiArNDE0NCw4IEBAIGdldFB1YmxpY2F0aW9ucyhB cmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAkJCShzdHJjbXAoUFFnZXR2 YWx1ZShyZXMsIGksIGlfcHViZGVsZXRlKSwgInQiKSA9PSAwKTsKIAkJcHViaW5mb1tpXS5w dWJ0cnVuY2F0ZSA9CiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YnRydW5j YXRlKSwgInQiKSA9PSAwKTsKKwkJcHViaW5mb1tpXS5wdWJzZXF1ZW5jZSA9CisJCQkoc3Ry Y21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YnNlcXVlbmNlKSwgInQiKSA9PSAwKTsKIAkJ cHViaW5mb1tpXS5wdWJ2aWFyb290ID0KIAkJCShzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGks IGlfcHVidmlhcm9vdCksICJ0IikgPT0gMCk7CiAKQEAgLTQxNzcsNiArNDE5MSw5IEBAIGR1 bXBQdWJsaWNhdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvbkluZm8gKnB1 YmluZm8pCiAJaWYgKHB1YmluZm8tPnB1YmFsbHRhYmxlcykKIAkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksICIgRk9SIEFMTCBUQUJMRVMiKTsKIAorCWlmIChwdWJpbmZvLT5wdWJh bGxzZXF1ZW5jZXMpCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIEZPUiBBTEwg U0VRVUVOQ0VTIik7CisKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBXSVRIIChw dWJsaXNoID0gJyIpOwogCWlmIChwdWJpbmZvLT5wdWJpbnNlcnQpCiAJewpAQCAtNDIxMSw2 ICs0MjI4LDE1IEBAIGR1bXBQdWJsaWNhdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJs aWNhdGlvbkluZm8gKnB1YmluZm8pCiAJCWZpcnN0ID0gZmFsc2U7CiAJfQogCisJaWYgKHB1 YmluZm8tPnB1YnNlcXVlbmNlKQorCXsKKwkJaWYgKCFmaXJzdCkKKwkJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAiLCAiKTsKKworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwgInNlcXVlbmNlIik7CisJCWZpcnN0ID0gZmFsc2U7CisJfQorCiAJYXBwZW5kUFFFeHBC dWZmZXJDaGFyKHF1ZXJ5LCAnXCcnKTsKIAogCWlmIChwdWJpbmZvLT5wdWJ2aWFyb290KQpA QCAtNDI1Nyw2ICs0MjgzLDcgQEAgZ2V0UHVibGljYXRpb25OYW1lc3BhY2VzKEFyY2hpdmUg KmZvdXQpCiAJaW50CQkJaV9vaWQ7CiAJaW50CQkJaV9wbnB1YmlkOwogCWludAkJCWlfcG5u c3BpZDsKKwlpbnQJCQlpX3BudHlwZTsKIAlpbnQJCQlpLAogCQkJCWosCiAJCQkJbnR1cHM7 CkBAIC00MjY4LDcgKzQyOTUsNyBAQCBnZXRQdWJsaWNhdGlvbk5hbWVzcGFjZXMoQXJjaGl2 ZSAqZm91dCkKIAogCS8qIENvbGxlY3QgYWxsIHB1YmxpY2F0aW9uIG1lbWJlcnNoaXAgaW5m by4gKi8KIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCSAiU0VMRUNUIHRh Ymxlb2lkLCBvaWQsIHBucHViaWQsIHBubnNwaWQgIgorCQkJCQkJICJTRUxFQ1QgdGFibGVv aWQsIG9pZCwgcG5wdWJpZCwgcG5uc3BpZCwgcG50eXBlICIKIAkJCQkJCSAiRlJPTSBwZ19j YXRhbG9nLnBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSIpOwogCXJlcyA9IEV4ZWN1dGVTcWxR dWVyeShmb3V0LCBxdWVyeS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKIApAQCAtNDI3OCw2 ICs0MzA1LDcgQEAgZ2V0UHVibGljYXRpb25OYW1lc3BhY2VzKEFyY2hpdmUgKmZvdXQpCiAJ aV9vaWQgPSBQUWZudW1iZXIocmVzLCAib2lkIik7CiAJaV9wbnB1YmlkID0gUFFmbnVtYmVy KHJlcywgInBucHViaWQiKTsKIAlpX3BubnNwaWQgPSBQUWZudW1iZXIocmVzLCAicG5uc3Bp ZCIpOworCWlfcG50eXBlID0gUFFmbnVtYmVyKHJlcywgInBudHlwZSIpOwogCiAJLyogdGhp cyBhbGxvY2F0aW9uIG1heSBiZSBtb3JlIHRoYW4gd2UgbmVlZCAqLwogCXB1YnNpbmZvID0g cGdfbWFsbG9jKG50dXBzICogc2l6ZW9mKFB1YmxpY2F0aW9uU2NoZW1hSW5mbykpOwpAQCAt NDI4Nyw2ICs0MzE1LDcgQEAgZ2V0UHVibGljYXRpb25OYW1lc3BhY2VzKEFyY2hpdmUgKmZv dXQpCiAJewogCQlPaWQJCQlwbnB1YmlkID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBpLCBp X3BucHViaWQpKTsKIAkJT2lkCQkJcG5uc3BpZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywg aSwgaV9wbm5zcGlkKSk7CisJCWNoYXIJCXBudHlwZSA9IFBRZ2V0dmFsdWUocmVzLCBpLCBp X3BudHlwZSlbMF07CiAJCVB1YmxpY2F0aW9uSW5mbyAqcHViaW5mbzsKIAkJTmFtZXNwYWNl SW5mbyAqbnNwaW5mbzsKIApAQCAtNDMxOCw2ICs0MzQ3LDcgQEAgZ2V0UHVibGljYXRpb25O YW1lc3BhY2VzKEFyY2hpdmUgKmZvdXQpCiAJCXB1YnNpbmZvW2pdLmRvYmoubmFtZSA9IG5z cGluZm8tPmRvYmoubmFtZTsKIAkJcHVic2luZm9bal0ucHVibGljYXRpb24gPSBwdWJpbmZv OwogCQlwdWJzaW5mb1tqXS5wdWJzY2hlbWEgPSBuc3BpbmZvOworCQlwdWJzaW5mb1tqXS5w dWJ0eXBlID0gcG50eXBlOwogCiAJCS8qIERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gZHVt cCBpdCAqLwogCQlzZWxlY3REdW1wYWJsZVB1YmxpY2F0aW9uT2JqZWN0KCYocHVic2luZm9b al0uZG9iaiksIGZvdXQpOwpAQCAtNDQ4Myw3ICs0NTEzLDExIEBAIGR1bXBQdWJsaWNhdGlv bk5hbWVzcGFjZShBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvblNjaGVtYUluZm8g KnB1YnNpbmZvKQogCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKIAogCWFwcGVuZFBR RXhwQnVmZmVyKHF1ZXJ5LCAiQUxURVIgUFVCTElDQVRJT04gJXMgIiwgZm10SWQocHViaW5m by0+ZG9iai5uYW1lKSk7Ci0JYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJBREQgVEFCTEVT IElOIFNDSEVNQSAlcztcbiIsIGZtdElkKHNjaGVtYWluZm8tPmRvYmoubmFtZSkpOworCisJ aWYgKHB1YnNpbmZvLT5wdWJ0eXBlID09ICd0JykKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVl cnksICJBREQgVEFCTEVTIElOIFNDSEVNQSAlcztcbiIsIGZtdElkKHNjaGVtYWluZm8tPmRv YmoubmFtZSkpOworCWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJBREQgU0VR VUVOQ0VTIElOIFNDSEVNQSAlcztcbiIsIGZtdElkKHNjaGVtYWluZm8tPmRvYmoubmFtZSkp OwogCiAJLyoKIAkgKiBUaGVyZSBpcyBubyBwb2ludCBpbiBjcmVhdGluZyBkcm9wIHF1ZXJ5 IGFzIHRoZSBkcm9wIGlzIGRvbmUgYnkgc2NoZW1hCkBAIC00NTE2LDYgKzQ1NTAsNyBAQCBk dW1wUHVibGljYXRpb25UYWJsZShBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvblJl bEluZm8gKnB1YnJpbmZvKQogCVRhYmxlSW5mbyAgKnRiaW5mbyA9IHB1YnJpbmZvLT5wdWJ0 YWJsZTsKIAlQUUV4cEJ1ZmZlciBxdWVyeTsKIAljaGFyCSAgICp0YWc7CisJY2hhcgkgICAq ZGVzY3JpcHRpb247CiAKIAkvKiBEbyBub3RoaW5nIGluIGRhdGEtb25seSBkdW1wICovCiAJ aWYgKGRvcHQtPmRhdGFPbmx5KQpAQCAtNDUyNSw4ICs0NTYwLDE5IEBAIGR1bXBQdWJsaWNh dGlvblRhYmxlKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1YmxpY2F0aW9uUmVsSW5mbyAqcHVi cmluZm8pCiAKIAlxdWVyeSA9IGNyZWF0ZVBRRXhwQnVmZmVyKCk7CiAKLQlhcHBlbmRQUUV4 cEJ1ZmZlcihxdWVyeSwgIkFMVEVSIFBVQkxJQ0FUSU9OICVzIEFERCBUQUJMRSBPTkxZIiwK LQkJCQkJICBmbXRJZChwdWJpbmZvLT5kb2JqLm5hbWUpKTsKKwlpZiAodGJpbmZvLT5yZWxr aW5kID09IFJFTEtJTkRfU0VRVUVOQ0UpCisJeworCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVy eSwgIkFMVEVSIFBVQkxJQ0FUSU9OICVzIEFERCBTRVFVRU5DRSIsCisJCQkJCQkgIGZtdElk KHB1YmluZm8tPmRvYmoubmFtZSkpOworCQlkZXNjcmlwdGlvbiA9ICJQVUJMSUNBVElPTiBT RVFVRU5DRSI7CisJfQorCWVsc2UKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAi QUxURVIgUFVCTElDQVRJT04gJXMgQUREIFRBQkxFIE9OTFkiLAorCQkJCQkJICBmbXRJZChw dWJpbmZvLT5kb2JqLm5hbWUpKTsKKwkJZGVzY3JpcHRpb24gPSAiUFVCTElDQVRJT04gVEFC TEUiOworCX0KKwogCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiICVzIiwKIAkJCQkJICBm bXRRdWFsaWZpZWREdW1wYWJsZSh0YmluZm8pKTsKIApAQCAtNDU1Niw3ICs0NjAyLDcgQEAg ZHVtcFB1YmxpY2F0aW9uVGFibGUoQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25S ZWxJbmZvICpwdWJyaW5mbykKIAkJCQkJIEFSQ0hJVkVfT1BUUygudGFnID0gdGFnLAogCQkJ CQkJCQkgIC5uYW1lc3BhY2UgPSB0YmluZm8tPmRvYmoubmFtZXNwYWNlLT5kb2JqLm5hbWUs CiAJCQkJCQkJCSAgLm93bmVyID0gcHViaW5mby0+cm9sbmFtZSwKLQkJCQkJCQkJICAuZGVz Y3JpcHRpb24gPSAiUFVCTElDQVRJT04gVEFCTEUiLAorCQkJCQkJCQkgIC5kZXNjcmlwdGlv biA9IGRlc2NyaXB0aW9uLAogCQkJCQkJCQkgIC5zZWN0aW9uID0gU0VDVElPTl9QT1NUX0RB VEEsCiAJCQkJCQkJCSAgLmNyZWF0ZVN0bXQgPSBxdWVyeS0+ZGF0YSkpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuaAppbmRleCAyZmUzY2JlZDlhYy4uZjY1OTNiMGM0OTkgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApA QCAtNjIyLDEwICs2MjIsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgX1B1YmxpY2F0aW9uSW5mbwog CUR1bXBhYmxlT2JqZWN0IGRvYmo7CiAJY29uc3QgY2hhciAqcm9sbmFtZTsKIAlib29sCQlw dWJhbGx0YWJsZXM7CisJYm9vbAkJcHViYWxsc2VxdWVuY2VzOwogCWJvb2wJCXB1Ymluc2Vy dDsKIAlib29sCQlwdWJ1cGRhdGU7CiAJYm9vbAkJcHViZGVsZXRlOwogCWJvb2wJCXB1YnRy dW5jYXRlOworCWJvb2wJCXB1YnNlcXVlbmNlOwogCWJvb2wJCXB1YnZpYXJvb3Q7CiB9IFB1 YmxpY2F0aW9uSW5mbzsKIApAQCAtNjUxLDYgKzY1Myw3IEBAIHR5cGVkZWYgc3RydWN0IF9Q dWJsaWNhdGlvblNjaGVtYUluZm8KIAlEdW1wYWJsZU9iamVjdCBkb2JqOwogCVB1YmxpY2F0 aW9uSW5mbyAqcHVibGljYXRpb247CiAJTmFtZXNwYWNlSW5mbyAqcHVic2NoZW1hOworCWNo YXIJCXB1YnR5cGU7CiB9IFB1YmxpY2F0aW9uU2NoZW1hSW5mbzsKIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19kdW1w L3QvMDAyX3BnX2R1bXAucGwKaW5kZXggZWIzZWM1MzRiNGQuLjE3NTdkZWM4YzY1IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmlu L3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMjkyNyw3ICsyOTI3LDcgQEAgbXkgJXRl c3RzID0gKAogCQljcmVhdGVfb3JkZXIgPT4gNTAsCiAJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFU RSBQVUJMSUNBVElPTiBwdWIxOycsCiAJCXJlZ2V4cCA9PiBxci9eCi0JCQlcUUNSRUFURSBQ VUJMSUNBVElPTiBwdWIxIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0LCB1cGRhdGUsIGRlbGV0 ZSwgdHJ1bmNhdGUnKTtcRQorCQkJXFFDUkVBVEUgUFVCTElDQVRJT04gcHViMSBXSVRIIChw dWJsaXNoID0gJ2luc2VydCwgdXBkYXRlLCBkZWxldGUsIHRydW5jYXRlLCBzZXF1ZW5jZScp O1xFCiAJCQkveG0sCiAJCWxpa2UgPT4geyAlZnVsbF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0 YSA9PiAxLCB9LAogCX0sCkBAIC0yOTQ3LDcgKzI5NDcsNyBAQCBteSAldGVzdHMgPSAoCiAJ CWNyZWF0ZV9vcmRlciA9PiA1MCwKIAkJY3JlYXRlX3NxbCA9PiAnQ1JFQVRFIFBVQkxJQ0FU SU9OIHB1YjM7JywKIAkJcmVnZXhwID0+IHFyL14KLQkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9O IHB1YjMgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0 ZScpO1xFCisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIzIFdJVEggKHB1Ymxpc2ggPSAn aW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUsIHNlcXVlbmNlJyk7XEUKIAkJCS94 bSwKIAkJbGlrZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0s CiAJfSwKQEAgLTI5NTYsNyArMjk1NiwyNyBAQCBteSAldGVzdHMgPSAoCiAJCWNyZWF0ZV9v cmRlciA9PiA1MCwKIAkJY3JlYXRlX3NxbCA9PiAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjQ7 JywKIAkJcmVnZXhwID0+IHFyL14KLQkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjQgV0lU SCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZScpO1xFCisJ CQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWI0IFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0LCB1 cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUsIHNlcXVlbmNlJyk7XEUKKwkJCS94bSwKKwkJbGlr ZSA9PiB7ICVmdWxsX3J1bnMsIHNlY3Rpb25fcG9zdF9kYXRhID0+IDEsIH0sCisJfSwKKwor CSdDUkVBVEUgUFVCTElDQVRJT04gcHViNScgPT4geworCQljcmVhdGVfb3JkZXIgPT4gNTAs CisJCWNyZWF0ZV9zcWwgPT4gJ0NSRUFURSBQVUJMSUNBVElPTiBwdWI1CisJCQkJCQkgRk9S IEFMTCBTRVFVRU5DRVMKKwkJCQkJCSBXSVRIIChwdWJsaXNoID0gXCdcJyk7JywKKwkJcmVn ZXhwID0+IHFyL14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjUgRk9SIEFMTCBTRVFV RU5DRVMgV0lUSCAocHVibGlzaCA9ICcnKTtcRQorCQkJL3htLAorCQlsaWtlID0+IHsgJWZ1 bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAorCisJJ0NSRUFURSBQ VUJMSUNBVElPTiBwdWI2JyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA1MCwKKwkJY3JlYXRl X3NxbCA9PiAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjY7JywKKwkJcmVnZXhwID0+IHFyL14K KwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjYgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQs IHVwZGF0ZSwgZGVsZXRlLCB0cnVuY2F0ZSwgc2VxdWVuY2UnKTtcRQogCQkJL3htLAogCQls aWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKIAl9LApA QCAtMzEwMiw2ICszMTIyLDI3IEBAIG15ICV0ZXN0cyA9ICgKIAkJdW5saWtlID0+IHsgZXhj bHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEsIH0sCiAJICB9LAogCisJJ0FMVEVSIFBVQkxJ Q0FUSU9OIHB1YjMgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgZHVtcF90ZXN0JyA9PiB7CisJ CWNyZWF0ZV9vcmRlciA9PiA1MSwKKwkJY3JlYXRlX3NxbCA9PgorCQkgICdBTFRFUiBQVUJM SUNBVElPTiBwdWIzIEFERCBTRVFVRU5DRVMgSU4gU0NIRU1BIGR1bXBfdGVzdDsnLAorCQly ZWdleHAgPT4gcXIvXgorCQkJXFFBTFRFUiBQVUJMSUNBVElPTiBwdWIzIEFERCBTRVFVRU5D RVMgSU4gU0NIRU1BIGR1bXBfdGVzdDtcRQorCQkJL3htLAorCQlsaWtlICAgPT4geyAlZnVs bF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAorCQl1bmxpa2UgPT4geyBleGNs dWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwgfSwKKwl9LAorCisJJ0FMVEVSIFBVQkxJQ0FU SU9OIHB1YjMgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHVibGljJyA9PiB7CisJCWNyZWF0 ZV9vcmRlciA9PiA1MiwKKwkJY3JlYXRlX3NxbCA9PgorCQkgICdBTFRFUiBQVUJMSUNBVElP TiBwdWIzIEFERCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1YmxpYzsnLAorCQlyZWdleHAgPT4g cXIvXgorCQkJXFFBTFRFUiBQVUJMSUNBVElPTiBwdWIzIEFERCBTRVFVRU5DRVMgSU4gU0NI RU1BIHB1YmxpYztcRQorCQkJL3htLAorCQlsaWtlID0+IHsgJWZ1bGxfcnVucywgc2VjdGlv bl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAorCiAJJ0NSRUFURSBTQ0hFTUEgcHVibGljJyA9 PiB7CiAJCXJlZ2V4cCA9PiBxci9eQ1JFQVRFIFNDSEVNQSBwdWJsaWM7L20sCiAKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMKaW5kZXggNTA3N2U3YjM1ODEuLmUwZGM0ZGNmY2NkIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMTcx MSwyOCArMTcxMSwxOSBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpz Y2hlbWFuYW1lLAogCWlmICh0YWJsZWluZm8ucmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNF KQogCXsKIAkJUEdyZXN1bHQgICAqcmVzdWx0ID0gTlVMTDsKLQkJcHJpbnRRdWVyeU9wdCBt eW9wdCA9IHBzZXQucG9wdDsKLQkJY2hhcgkgICAqZm9vdGVyc1syXSA9IHtOVUxMLCBOVUxM fTsKIAogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxMDAwMDApCiAJCXsKIAkJCXByaW50ZlBR RXhwQnVmZmVyKCZidWYsCi0JCQkJCQkJICAiU0VMRUNUIHBnX2NhdGFsb2cuZm9ybWF0X3R5 cGUoc2VxdHlwaWQsIE5VTEwpIEFTIFwiJXNcIixcbiIKLQkJCQkJCQkgICIgICAgICAgc2Vx c3RhcnQgQVMgXCIlc1wiLFxuIgotCQkJCQkJCSAgIiAgICAgICBzZXFtaW4gQVMgXCIlc1wi LFxuIgotCQkJCQkJCSAgIiAgICAgICBzZXFtYXggQVMgXCIlc1wiLFxuIgotCQkJCQkJCSAg IiAgICAgICBzZXFpbmNyZW1lbnQgQVMgXCIlc1wiLFxuIgotCQkJCQkJCSAgIiAgICAgICBD QVNFIFdIRU4gc2VxY3ljbGUgVEhFTiAnJXMnIEVMU0UgJyVzJyBFTkQgQVMgXCIlc1wiLFxu IgotCQkJCQkJCSAgIiAgICAgICBzZXFjYWNoZSBBUyBcIiVzXCJcbiIsCi0JCQkJCQkJICBn ZXR0ZXh0X25vb3AoIlR5cGUiKSwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3RhcnQiKSwK LQkJCQkJCQkgIGdldHRleHRfbm9vcCgiTWluaW11bSIpLAotCQkJCQkJCSAgZ2V0dGV4dF9u b29wKCJNYXhpbXVtIiksCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIkluY3JlbWVudCIpLAor CQkJCQkJCSAgIlNFTEVDVCBwZ19jYXRhbG9nLmZvcm1hdF90eXBlKHNlcXR5cGlkLCBOVUxM KSxcbiIKKwkJCQkJCQkgICIgICAgICAgc2Vxc3RhcnQsXG4iCisJCQkJCQkJICAiICAgICAg IHNlcW1pbixcbiIKKwkJCQkJCQkgICIgICAgICAgc2VxbWF4LFxuIgorCQkJCQkJCSAgIiAg ICAgICBzZXFpbmNyZW1lbnQsXG4iCisJCQkJCQkJICAiICAgICAgIENBU0UgV0hFTiBzZXFj eWNsZSBUSEVOICclcycgRUxTRSAnJXMnIEVORCxcbiIKKwkJCQkJCQkgICIgICAgICAgc2Vx Y2FjaGVcbiIsCiAJCQkJCQkJICBnZXR0ZXh0X25vb3AoInllcyIpLAotCQkJCQkJCSAgZ2V0 dGV4dF9ub29wKCJubyIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJDeWNsZXM/IiksCi0J CQkJCQkJICBnZXR0ZXh0X25vb3AoIkNhY2hlIikpOworCQkJCQkJCSAgZ2V0dGV4dF9ub29w KCJubyIpKTsKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJICAiRlJPTSBw Z19jYXRhbG9nLnBnX3NlcXVlbmNlXG4iCiAJCQkJCQkJICAiV0hFUkUgc2VxcmVsaWQgPSAn JXMnOyIsCkBAIC0xNzQxLDIyICsxNzMyLDE1IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxz KGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCWVsc2UKIAkJewogCQkJcHJpbnRmUFFFeHBC dWZmZXIoJmJ1ZiwKLQkJCQkJCQkgICJTRUxFQ1QgJ2JpZ2ludCcgQVMgXCIlc1wiLFxuIgot CQkJCQkJCSAgIiAgICAgICBzdGFydF92YWx1ZSBBUyBcIiVzXCIsXG4iCi0JCQkJCQkJICAi ICAgICAgIG1pbl92YWx1ZSBBUyBcIiVzXCIsXG4iCi0JCQkJCQkJICAiICAgICAgIG1heF92 YWx1ZSBBUyBcIiVzXCIsXG4iCi0JCQkJCQkJICAiICAgICAgIGluY3JlbWVudF9ieSBBUyBc IiVzXCIsXG4iCi0JCQkJCQkJICAiICAgICAgIENBU0UgV0hFTiBpc19jeWNsZWQgVEhFTiAn JXMnIEVMU0UgJyVzJyBFTkQgQVMgXCIlc1wiLFxuIgotCQkJCQkJCSAgIiAgICAgICBjYWNo ZV92YWx1ZSBBUyBcIiVzXCJcbiIsCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIlR5cGUiKSwK LQkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3RhcnQiKSwKLQkJCQkJCQkgIGdldHRleHRfbm9v cCgiTWluaW11bSIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJNYXhpbXVtIiksCi0JCQkJ CQkJICBnZXR0ZXh0X25vb3AoIkluY3JlbWVudCIpLAorCQkJCQkJCSAgIlNFTEVDVCAnYmln aW50JyxcbiIKKwkJCQkJCQkgICIgICAgICAgc3RhcnRfdmFsdWUsXG4iCisJCQkJCQkJICAi ICAgICAgIG1pbl92YWx1ZSxcbiIKKwkJCQkJCQkgICIgICAgICAgbWF4X3ZhbHVlLFxuIgor CQkJCQkJCSAgIiAgICAgICBpbmNyZW1lbnRfYnksXG4iCisJCQkJCQkJICAiICAgICAgIENB U0UgV0hFTiBpc19jeWNsZWQgVEhFTiAnJXMnIEVMU0UgJyVzJyBFTkQsXG4iCisJCQkJCQkJ ICAiICAgICAgIGNhY2hlX3ZhbHVlXG4iLAogCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJ5ZXMi KSwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgibm8iKSwKLQkJCQkJCQkgIGdldHRleHRfbm9v cCgiQ3ljbGVzPyIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJDYWNoZSIpKTsKKwkJCQkJ CQkgIGdldHRleHRfbm9vcCgibm8iKSk7CiAJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAi RlJPTSAlcyIsIGZtdElkKHNjaGVtYW5hbWUpKTsKIAkJCS8qIG11c3QgYmUgc2VwYXJhdGUg YmVjYXVzZSBmbXRJZCBpc24ndCByZWVudHJhbnQgKi8KIAkJCWFwcGVuZFBRRXhwQnVmZmVy KCZidWYsICIuJXM7IiwgZm10SWQocmVsYXRpb25uYW1lKSk7CkBAIC0xNzY2LDYgKzE3NTAs NTkgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwK IAkJaWYgKCFyZXMpCiAJCQlnb3RvIGVycm9yX3JldHVybjsKIAorCQludW1yb3dzID0gUFFu dHVwbGVzKHJlcyk7CisKKwkJLyoKKwkJICogWFhYIHJlc2V0IHRvIHVzZSBleHBhbmRlZCBv dXRwdXQgZm9yIHNlcXVlbmNlcyAobWF5YmUgd2Ugc2hvdWxkCisJCSAqIGtlZXAgdGhpcyBk aXNhYmxlZCwganVzdCBsaWtlIGZvciB0YWJsZXM/KQorCQkgKi8KKwkJbXlvcHQuZXhwYW5k ZWQgPSBwc2V0LnBvcHQudG9wdC5leHBhbmRlZDsKKworCQlwcmludFRhYmxlSW5pdCgmY29u dCwgJm15b3B0LCB0aXRsZS5kYXRhLCA3LCBudW1yb3dzKTsKKwkJcHJpbnRUYWJsZUluaXRp YWxpemVkID0gdHJ1ZTsKKworCQlpZiAodGFibGVpbmZvLnJlbHBlcnNpc3RlbmNlID09ICd1 JykKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZ0aXRsZSwgXygiVW5sb2dnZWQgc2VxdWVuY2Ug XCIlcy4lc1wiIiksCisJCQkJCQkJICBzY2hlbWFuYW1lLCByZWxhdGlvbm5hbWUpOworCQll bHNlCisJCQlwcmludGZQUUV4cEJ1ZmZlcigmdGl0bGUsIF8oIlNlcXVlbmNlIFwiJXMuJXNc IiIpLAorCQkJCQkJCSAgc2NoZW1hbmFtZSwgcmVsYXRpb25uYW1lKTsKKworCQlwcmludFRh YmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIlR5cGUiKSwgdHJ1ZSwgJ2wnKTsK KwkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwgZ2V0dGV4dF9ub29wKCJTdGFydCIpLCB0 cnVlLCAncicpOworCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3Ao Ik1pbmltdW0iKSwgdHJ1ZSwgJ3InKTsKKwkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29udCwg Z2V0dGV4dF9ub29wKCJNYXhpbXVtIiksIHRydWUsICdyJyk7CisJCXByaW50VGFibGVBZGRI ZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiSW5jcmVtZW50IiksIHRydWUsICdyJyk7CisJ CXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiQ3ljbGVzPyIpLCB0 cnVlLCAnbCcpOworCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3Ao IkNhY2hlIiksIHRydWUsICdyJyk7CisKKwkJLyogR2VuZXJhdGUgdGFibGUgY2VsbHMgdG8g YmUgcHJpbnRlZCAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnVtcm93czsgaSsrKQorCQl7CisJ CQkvKiBUeXBlICovCisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShy ZXMsIGksIDApLCBmYWxzZSwgZmFsc2UpOworCisJCQkvKiBTdGFydCAqLworCQkJcHJpbnRU YWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAxKSwgZmFsc2UsIGZhbHNl KTsKKworCQkJLyogTWluaW11bSAqLworCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBR Z2V0dmFsdWUocmVzLCBpLCAyKSwgZmFsc2UsIGZhbHNlKTsKKworCQkJLyogTWF4aW11bSAq LworCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAzKSwg ZmFsc2UsIGZhbHNlKTsKKworCQkJLyogSW5jcmVtZW50ICovCisJCQlwcmludFRhYmxlQWRk Q2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDQpLCBmYWxzZSwgZmFsc2UpOworCisJ CQkvKiBDeWNsZXM/ICovCisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1 ZShyZXMsIGksIDUpLCBmYWxzZSwgZmFsc2UpOworCisJCQkvKiBDYWNoZSAqLworCQkJcHJp bnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA2KSwgZmFsc2UsIGZh bHNlKTsKKwkJfQorCisJCS8qIEZvb3RlciBpbmZvcm1hdGlvbiBhYm91dCBhIHNlcXVlbmNl ICovCisKIAkJLyogR2V0IHRoZSBjb2x1bW4gdGhhdCBvd25zIHRoaXMgc2VxdWVuY2UgKi8K IAkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCBwZ19jYXRhbG9nLnF1b3RlX2lk ZW50KG5zcG5hbWUpIHx8ICcuJyB8fCIKIAkJCQkJCSAgIlxuICAgcGdfY2F0YWxvZy5xdW90 ZV9pZGVudChyZWxuYW1lKSB8fCAnLicgfHwiCkBAIC0xNzk3LDMyICsxODM0LDYzIEBAIGRl c2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQlzd2l0 Y2ggKFBRZ2V0dmFsdWUocmVzdWx0LCAwLCAxKVswXSkKIAkJCXsKIAkJCQljYXNlICdhJzoK LQkJCQkJZm9vdGVyc1swXSA9IHBzcHJpbnRmKF8oIk93bmVkIGJ5OiAlcyIpLAotCQkJCQkJ CQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIDAsIDApKTsKKwkJCQkJcHJpbnRUYWJsZUFkZEZv b3RlcigmY29udCwKKwkJCQkJCQkJCQlwc3ByaW50ZihfKCJPd25lZCBieTogJXMiKSwKKwkJ CQkJCQkJCQkJCSBQUWdldHZhbHVlKHJlc3VsdCwgMCwgMCkpKTsKIAkJCQkJYnJlYWs7CiAJ CQkJY2FzZSAnaSc6Ci0JCQkJCWZvb3RlcnNbMF0gPSBwc3ByaW50ZihfKCJTZXF1ZW5jZSBm b3IgaWRlbnRpdHkgY29sdW1uOiAlcyIpLAotCQkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1 bHQsIDAsIDApKTsKKwkJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwKKwkJCQkJCQkJ CQlwc3ByaW50ZihfKCJTZXF1ZW5jZSBmb3IgaWRlbnRpdHkgY29sdW1uOiAlcyIpLAorCQkJ CQkJCQkJCQkJIFBRZ2V0dmFsdWUocmVzdWx0LCAwLCAwKSkpOwogCQkJCQlicmVhazsKIAkJ CX0KIAkJfQogCQlQUWNsZWFyKHJlc3VsdCk7CiAKLQkJaWYgKHRhYmxlaW5mby5yZWxwZXJz aXN0ZW5jZSA9PSAndScpCi0JCQlwcmludGZQUUV4cEJ1ZmZlcigmdGl0bGUsIF8oIlVubG9n Z2VkIHNlcXVlbmNlIFwiJXMuJXNcIiIpLAotCQkJCQkJCSAgc2NoZW1hbmFtZSwgcmVsYXRp b25uYW1lKTsKLQkJZWxzZQotCQkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJTZXF1 ZW5jZSBcIiVzLiVzXCIiKSwKLQkJCQkJCQkgIHNjaGVtYW5hbWUsIHJlbGF0aW9ubmFtZSk7 CisJCS8qIHByaW50IGFueSBwdWJsaWNhdGlvbnMgKi8KKwkJaWYgKHBzZXQuc3ZlcnNpb24g Pj0gMTcwMDAwKQorCQl7CisJCQlpbnQJCQl0dXBsZXMgPSAwOwogCi0JCW15b3B0LmZvb3Rl cnMgPSBmb290ZXJzOwotCQlteW9wdC50b3B0LmRlZmF1bHRfZm9vdGVyID0gZmFsc2U7Ci0J CW15b3B0LnRpdGxlID0gdGl0bGUuZGF0YTsKLQkJbXlvcHQudHJhbnNsYXRlX2hlYWRlciA9 IHRydWU7CisJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCSAgIlNFTEVDVCBw dWJuYW1lXG4iCisJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBc biIKKwkJCQkJCQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9uYW1lc3Bh Y2UgcG4gT04gcC5vaWQgPSBwbi5wbnB1YmlkXG4iCisJCQkJCQkJICAiCQlKT0lOIHBnX2Nh dGFsb2cucGdfY2xhc3MgcGMgT04gcGMucmVsbmFtZXNwYWNlID0gcG4ucG5uc3BpZFxuIgor CQkJCQkJCSAgIldIRVJFIHBjLm9pZCA9JyVzJyBhbmQgcG4ucG50eXBlID0gJ3MnIGFuZCBw Z19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hhYmxlKCclcycpXG4iCisJCQkJCQkJ ICAiVU5JT05cbiIKKwkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgorCQkJCQkJCSAgIkZS T00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCisJCQkJCQkJICAiCQlKT0lOIHBn X2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByIE9OIHAub2lkID0gcHIucHJwdWJpZFxu IgorCQkJCQkJCSAgIldIRVJFIHByLnBycmVsaWQgPSAnJXMnXG4iCisJCQkJCQkJICAiVU5J T05cbiIKKwkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgorCQkJCQkJCSAgIkZST00gcGdf Y2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCisJCQkJCQkJICAiV0hFUkUgcC5wdWJhbGxz ZXF1ZW5jZXMgQU5EIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoJyVz JylcbiIKKwkJCQkJCQkgICJPUkRFUiBCWSAxOyIsCisJCQkJCQkJICBvaWQsIG9pZCwgb2lk LCBvaWQpOwogCi0JCXByaW50UXVlcnkocmVzLCAmbXlvcHQsIHBzZXQucXVlcnlGb3V0LCBm YWxzZSwgcHNldC5sb2dmaWxlKTsKKwkJCXJlc3VsdCA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsK KwkJCWlmICghcmVzdWx0KQorCQkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQkJZWxzZQorCQkJ CXR1cGxlcyA9IFBRbnR1cGxlcyhyZXN1bHQpOworCisJCQlpZiAodHVwbGVzID4gMCkKKwkJ CQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBfKCJQdWJsaWNhdGlvbnM6IikpOworCisJ CQkvKiBNaWdodCBiZSBhbiBlbXB0eSBzZXQgLSB0aGF0J3Mgb2sgKi8KKwkJCWZvciAoaSA9 IDA7IGkgPCB0dXBsZXM7IGkrKykKKwkJCXsKKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVm LCAiICAgIFwiJXNcIiIsCisJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDApKTsK KworCQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIGJ1Zi5kYXRhKTsKKwkJCX0KKwkJ CVBRY2xlYXIocmVzdWx0KTsKKwkJfQogCi0JCWZyZWUoZm9vdGVyc1swXSk7CisJCXByaW50 VGFibGUoJmNvbnQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKIAog CQlyZXR2YWwgPSB0cnVlOwogCQlnb3RvIGVycm9yX3JldHVybjsJCS8qIG5vdCBhbiBlcnJv ciwganVzdCByZXR1cm4gZWFybHkgKi8KQEAgLTIwNDksNiArMjExNywxMSBAQCBkZXNjcmli ZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCWZvciAoaSA9IDA7 IGkgPCBjb2xzOyBpKyspCiAJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGhlYWRlcnNb aV0sIHRydWUsICdsJyk7CiAKKwlyZXMgPSBQU1FMZXhlYyhidWYuZGF0YSk7CisJaWYgKCFy ZXMpCisJCWdvdG8gZXJyb3JfcmV0dXJuOworCW51bXJvd3MgPSBQUW50dXBsZXMocmVzKTsK KwogCS8qIEdlbmVyYXRlIHRhYmxlIGNlbGxzIHRvIGJlIHByaW50ZWQgKi8KIAlmb3IgKGkg PSAwOyBpIDwgbnVtcm93czsgaSsrKQogCXsKQEAgLTI5NzQsNyArMzA0Nyw3IEBAIGRlc2Ny aWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJCQkJCSAg IkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCiAJCQkJCQkJCSAgIiAgICAg Sk9JTiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSBwbiBPTiBwLm9pZCA9 IHBuLnBucHViaWRcbiIKIAkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfY2xh c3MgcGMgT04gcGMucmVsbmFtZXNwYWNlID0gcG4ucG5uc3BpZFxuIgotCQkJCQkJCQkgICJX SEVSRSBwYy5vaWQgPSclcycgYW5kIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlz aGFibGUoJyVzJylcbiIKKwkJCQkJCQkJICAiV0hFUkUgcGMub2lkID0nJXMnIGFuZCBwbi5w bnR5cGUgPSAndCcgYW5kIHBnX2NhdGFsb2cucGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUo JyVzJylcbiIKIAkJCQkJCQkJICAiVU5JT05cbiIKIAkJCQkJCQkJICAiU0VMRUNUIHB1Ym5h bWVcbiIKIAkJCQkJCQkJICAiICAgICAsIHBnX2dldF9leHByKHByLnBycXVhbCwgYy5vaWQp XG4iCkBAIC01MTExLDcgKzUxODQsNyBAQCBsaXN0U2NoZW1hcyhjb25zdCBjaGFyICpwYXR0 ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5c3RlbSkKIAkJaW50CQkJaTsKIAogCQlw cmludGZQUUV4cEJ1ZmZlcigmYnVmLAotCQkJCQkJICAiU0VMRUNUIHB1Ym5hbWUgXG4iCisJ CQkJCQkgICJTRUxFQ1QgcHVibmFtZSwgKENBU0UgV0hFTiBwbnR5cGUgPSAndCcgVEhFTiAn dGFibGVzJyBFTFNFICdzZXF1ZW5jZXMnIEVORCkgQVMgcHVidHlwZVxuIgogCQkJCQkJICAi RlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHBcbiIKIAkJCQkJCSAgIiAgICAgSk9J TiBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSBwbiBPTiBwLm9pZCA9IHBu LnBucHViaWRcbiIKIAkJCQkJCSAgIiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFj ZSBuIE9OIG4ub2lkID0gcG4ucG5uc3BpZCBcbiIKQEAgLTUxMzcsOCArNTIxMCw5IEBAIGxp c3RTY2hlbWFzKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSwgYm9vbCBzaG93 U3lzdGVtKQogCQkJLyogTWlnaHQgYmUgYW4gZW1wdHkgc2V0IC0gdGhhdCdzIG9rICovCiAJ CQlmb3IgKGkgPSAwOyBpIDwgcHViX3NjaGVtYV90dXBsZXM7IGkrKykKIAkJCXsKLQkJCQlw cmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgIFwiJXNcIiIsCi0JCQkJCQkJCSAgUFFnZXR2 YWx1ZShyZXN1bHQsIGksIDApKTsKKwkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAg IFwiJXNcIiAoJXMpIiwKKwkJCQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMCksCisJ CQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDEpKTsKIAogCQkJCWZvb3RlcnNbaSAr IDFdID0gcGdfc3RyZHVwKGJ1Zi5kYXRhKTsKIAkJCX0KQEAgLTYyNTQsNyArNjMyOCw3IEBA IGxpc3RQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAlQUUV4cEJ1ZmZlckRh dGEgYnVmOwogCVBHcmVzdWx0ICAgKnJlczsKIAlwcmludFF1ZXJ5T3B0IG15b3B0ID0gcHNl dC5wb3B0OwotCXN0YXRpYyBjb25zdCBib29sIHRyYW5zbGF0ZV9jb2x1bW5zW10gPSB7ZmFs c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfTsK KwlzdGF0aWMgY29uc3QgYm9vbCB0cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxz ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZh bHNlfTsKIAogCWlmIChwc2V0LnN2ZXJzaW9uIDwgMTAwMDAwKQogCXsKQEAgLTYyNjgsMjMg KzYzNDIsNDUgQEAgbGlzdFB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCiAJ aW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCi0JcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKLQkJ CQkJICAiU0VMRUNUIHB1Ym5hbWUgQVMgXCIlc1wiLFxuIgotCQkJCQkgICIgIHBnX2NhdGFs b2cucGdfZ2V0X3VzZXJieWlkKHB1Ym93bmVyKSBBUyBcIiVzXCIsXG4iCi0JCQkJCSAgIiAg cHViYWxsdGFibGVzIEFTIFwiJXNcIixcbiIKLQkJCQkJICAiICBwdWJpbnNlcnQgQVMgXCIl c1wiLFxuIgotCQkJCQkgICIgIHB1YnVwZGF0ZSBBUyBcIiVzXCIsXG4iCi0JCQkJCSAgIiAg cHViZGVsZXRlIEFTIFwiJXNcIiIsCi0JCQkJCSAgZ2V0dGV4dF9ub29wKCJOYW1lIiksCi0J CQkJCSAgZ2V0dGV4dF9ub29wKCJPd25lciIpLAotCQkJCQkgIGdldHRleHRfbm9vcCgiQWxs IHRhYmxlcyIpLAotCQkJCQkgIGdldHRleHRfbm9vcCgiSW5zZXJ0cyIpLAotCQkJCQkgIGdl dHRleHRfbm9vcCgiVXBkYXRlcyIpLAotCQkJCQkgIGdldHRleHRfbm9vcCgiRGVsZXRlcyIp KTsKKwlpZiAocHNldC5zdmVyc2lvbiA+PSAxNzAwMDApCisJCXByaW50ZlBRRXhwQnVmZmVy KCZidWYsCisJCQkJCQkgICJTRUxFQ1QgcHVibmFtZSBBUyBcIiVzXCIsXG4iCisJCQkJCQkg ICIgIHBnX2NhdGFsb2cucGdfZ2V0X3VzZXJieWlkKHB1Ym93bmVyKSBBUyBcIiVzXCIsXG4i CisJCQkJCQkgICIgIHB1YmFsbHRhYmxlcyBBUyBcIiVzXCIsXG4iCisJCQkJCQkgICIgIHB1 YmFsbHNlcXVlbmNlcyBBUyBcIiVzXCIsXG4iCisJCQkJCQkgICIgIHB1Ymluc2VydCBBUyBc IiVzXCIsXG4iCisJCQkJCQkgICIgIHB1YnVwZGF0ZSBBUyBcIiVzXCIsXG4iCisJCQkJCQkg ICIgIHB1YmRlbGV0ZSBBUyBcIiVzXCIiLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIk5hbWUi KSwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJPd25lciIpLAorCQkJCQkJICBnZXR0ZXh0X25v b3AoIkFsbCB0YWJsZXMiKSwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJBbGwgc2VxdWVuY2Vz IiksCisJCQkJCQkgIGdldHRleHRfbm9vcCgiSW5zZXJ0cyIpLAorCQkJCQkJICBnZXR0ZXh0 X25vb3AoIlVwZGF0ZXMiKSwKKwkJCQkJCSAgZ2V0dGV4dF9ub29wKCJEZWxldGVzIikpOwor CWVsc2UKKwkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCSAgIlNFTEVDVCBwdWJu YW1lIEFTIFwiJXNcIixcbiIKKwkJCQkJCSAgIiAgcGdfY2F0YWxvZy5wZ19nZXRfdXNlcmJ5 aWQocHVib3duZXIpIEFTIFwiJXNcIixcbiIKKwkJCQkJCSAgIiAgcHViYWxsdGFibGVzIEFT IFwiJXNcIixcbiIKKwkJCQkJCSAgIiAgcHViaW5zZXJ0IEFTIFwiJXNcIixcbiIKKwkJCQkJ CSAgIiAgcHVidXBkYXRlIEFTIFwiJXNcIixcbiIKKwkJCQkJCSAgIiAgcHViZGVsZXRlIEFT IFwiJXNcIiIsCisJCQkJCQkgIGdldHRleHRfbm9vcCgiTmFtZSIpLAorCQkJCQkJICBnZXR0 ZXh0X25vb3AoIk93bmVyIiksCisJCQkJCQkgIGdldHRleHRfbm9vcCgiQWxsIHRhYmxlcyIp LAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIkluc2VydHMiKSwKKwkJCQkJCSAgZ2V0dGV4dF9u b29wKCJVcGRhdGVzIiksCisJCQkJCQkgIGdldHRleHRfbm9vcCgiRGVsZXRlcyIpKTsKKwog CWlmIChwc2V0LnN2ZXJzaW9uID49IDExMDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1 ZiwKIAkJCQkJCSAgIixcbiAgcHVidHJ1bmNhdGUgQVMgXCIlc1wiIiwKIAkJCQkJCSAgZ2V0 dGV4dF9ub29wKCJUcnVuY2F0ZXMiKSk7CisJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTcwMDAw KQorCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJICAiLFxuICBwdWJzZXF1ZW5j ZSBBUyBcIiVzXCIiLAorCQkJCQkJICBnZXR0ZXh0X25vb3AoIlNlcXVlbmNlcyIpKTsKIAlp ZiAocHNldC5zdmVyc2lvbiA+PSAxMzAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYs CiAJCQkJCQkgICIsXG4gIHB1YnZpYXJvb3QgQVMgXCIlc1wiIiwKQEAgLTYzNzgsNiArNjQ3 NCw3IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJUEdy ZXN1bHQgICAqcmVzOwogCWJvb2wJCWhhc19wdWJ0cnVuY2F0ZTsKIAlib29sCQloYXNfcHVi dmlhcm9vdDsKKwlib29sCQloYXNfcHVic2VxdWVuY2U7CiAKIAlQUUV4cEJ1ZmZlckRhdGEg dGl0bGU7CiAJcHJpbnRUYWJsZUNvbnRlbnQgY29udDsKQEAgLTYzOTQsNiArNjQ5MSw3IEBA IGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAKIAloYXNfcHVi dHJ1bmNhdGUgPSAocHNldC5zdmVyc2lvbiA+PSAxMTAwMDApOwogCWhhc19wdWJ2aWFyb290 ID0gKHBzZXQuc3ZlcnNpb24gPj0gMTMwMDAwKTsKKwloYXNfcHVic2VxdWVuY2UgPSAocHNl dC5zdmVyc2lvbiA+PSAxNzAwMDApOwogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCkBA IC02NDA3LDYgKzY1MDUsMTAgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAq cGF0dGVybikKIAlpZiAoaGFzX3B1YnZpYXJvb3QpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3Ry KCZidWYsCiAJCQkJCQkJICIsIHB1YnZpYXJvb3QiKTsKKwlpZiAoaGFzX3B1YnNlcXVlbmNl KQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAorCQkJCQkJCSAiLCBwdWJhbGxzZXF1 ZW5jZXMsIHB1YnNlcXVlbmNlIik7CisKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAog CQkJCQkJICJcbkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvblxuIik7CiAKQEAgLTY0 NTIsNiArNjU1NCw3IEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRl cm4pCiAJCWNoYXIJICAgKnB1YmlkID0gUFFnZXR2YWx1ZShyZXMsIGksIDApOwogCQljaGFy CSAgICpwdWJuYW1lID0gUFFnZXR2YWx1ZShyZXMsIGksIDEpOwogCQlib29sCQlwdWJhbGx0 YWJsZXMgPSBzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIDMpLCAidCIpID09IDA7CisJCWJv b2wJCXB1YmFsbHNlcXVlbmNlcyA9IHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgOSksICJ0 IikgPT0gMDsKIAkJcHJpbnRUYWJsZU9wdCBteW9wdCA9IHBzZXQucG9wdC50b3B0OwogCiAJ CWlmIChoYXNfcHVidHJ1bmNhdGUpCkBAIC02NDU5LDI5ICs2NTYyLDQzIEBAIGRlc2NyaWJl UHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4pCiAJCWlmIChoYXNfcHVidmlhcm9v dCkKIAkJCW5jb2xzKys7CiAKKwkJLyogc2VxdWVuY2VzIGhhdmUgdHdvIGV4dHJhIGNvbHVt bnMgKHB1YmFsbHNlcXVlbmNlcywgcHVic2VxdWVuY2VzKSAqLworCQlpZiAoaGFzX3B1YnNl cXVlbmNlKQorCQkJbmNvbHMgKz0gMjsKKwogCQlpbml0UFFFeHBCdWZmZXIoJnRpdGxlKTsK IAkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJQdWJsaWNhdGlvbiAlcyIpLCBwdWJu YW1lKTsKIAkJcHJpbnRUYWJsZUluaXQoJmNvbnQsICZteW9wdCwgdGl0bGUuZGF0YSwgbmNv bHMsIG5yb3dzKTsKIAogCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25v b3AoIk93bmVyIiksIHRydWUsIGFsaWduKTsKIAkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29u dCwgZ2V0dGV4dF9ub29wKCJBbGwgdGFibGVzIiksIHRydWUsIGFsaWduKTsKKwkJaWYgKGhh c19wdWJzZXF1ZW5jZSkKKwkJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRf bm9vcCgiQWxsIHNlcXVlbmNlcyIpLCB0cnVlLCBhbGlnbik7CiAJCXByaW50VGFibGVBZGRI ZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiSW5zZXJ0cyIpLCB0cnVlLCBhbGlnbik7CiAJ CXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiVXBkYXRlcyIpLCB0 cnVlLCBhbGlnbik7CiAJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9v cCgiRGVsZXRlcyIpLCB0cnVlLCBhbGlnbik7CiAJCWlmIChoYXNfcHVidHJ1bmNhdGUpCiAJ CQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIlRydW5jYXRlcyIp LCB0cnVlLCBhbGlnbik7CisJCWlmIChoYXNfcHVic2VxdWVuY2UpCisJCQlwcmludFRhYmxl QWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIlNlcXVlbmNlcyIpLCB0cnVlLCBhbGln bik7CiAJCWlmIChoYXNfcHVidmlhcm9vdCkKIAkJCXByaW50VGFibGVBZGRIZWFkZXIoJmNv bnQsIGdldHRleHRfbm9vcCgiVmlhIHJvb3QiKSwgdHJ1ZSwgYWxpZ24pOwogCi0JCXByaW50 VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgMiksIGZhbHNlLCBmYWxz ZSk7Ci0JCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgMyks IGZhbHNlLCBmYWxzZSk7Ci0JCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVl KHJlcywgaSwgNCksIGZhbHNlLCBmYWxzZSk7Ci0JCXByaW50VGFibGVBZGRDZWxsKCZjb250 LCBQUWdldHZhbHVlKHJlcywgaSwgNSksIGZhbHNlLCBmYWxzZSk7Ci0JCXByaW50VGFibGVB ZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgNiksIGZhbHNlLCBmYWxzZSk7CisJ CXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgMiksIGZhbHNl LCBmYWxzZSk7CS8qIG93bmVyICovCisJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdl dHZhbHVlKHJlcywgaSwgMyksIGZhbHNlLCBmYWxzZSk7CS8qIGFsbCB0YWJsZXMgKi8KKwor CQlpZiAoaGFzX3B1YnNlcXVlbmNlKQorCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBR Z2V0dmFsdWUocmVzLCBpLCA5KSwgZmFsc2UsIGZhbHNlKTsJLyogYWxsIHNlcXVlbmNlcyAq LworCisJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgNCks IGZhbHNlLCBmYWxzZSk7CS8qIGluc2VydCAqLworCQlwcmludFRhYmxlQWRkQ2VsbCgmY29u dCwgUFFnZXR2YWx1ZShyZXMsIGksIDUpLCBmYWxzZSwgZmFsc2UpOwkvKiB1cGRhdGUgKi8K KwkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBpLCA2KSwgZmFs c2UsIGZhbHNlKTsJLyogZGVsZXRlICovCiAJCWlmIChoYXNfcHVidHJ1bmNhdGUpCi0JCQlw cmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDcpLCBmYWxzZSwg ZmFsc2UpOworCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFsdWUocmVzLCBp LCA3KSwgZmFsc2UsIGZhbHNlKTsJLyogdHJ1bmNhdGUgKi8KKwkJaWYgKGhhc19wdWJzZXF1 ZW5jZSkKKwkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwg MTApLCBmYWxzZSwgZmFsc2UpOyAvKiBzZXF1ZW5jZSAqLwogCQlpZiAoaGFzX3B1YnZpYXJv b3QpCi0JCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDgp LCBmYWxzZSwgZmFsc2UpOworCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNvbnQsIFBRZ2V0dmFs dWUocmVzLCBpLCA4KSwgZmFsc2UsIGZhbHNlKTsJLyogdmlhIHJvb3QgKi8KIAogCQlpZiAo IXB1YmFsbHRhYmxlcykKIAkJewpAQCAtNjUxMiw2ICs2NjI5LDcgQEAgZGVzY3JpYmVQdWJs aWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJCQkJCQkgICJXSEVSRSBjLnJlbG5h bWVzcGFjZSA9IG4ub2lkXG4iCiAJCQkJCQkJICAiICBBTkQgYy5vaWQgPSBwci5wcnJlbGlk XG4iCiAJCQkJCQkJICAiICBBTkQgcHIucHJwdWJpZCA9ICclcydcbiIKKwkJCQkJCQkgICIg IEFORCBjLnJlbGtpbmQgIT0gJ1MnXG4iCS8qIGV4Y2x1ZGUgc2VxdWVuY2VzICovCiAJCQkJ CQkJICAiT1JERVIgQlkgMSwyIiwgcHViaWQpOwogCQkJaWYgKCFhZGRGb290ZXJUb1B1Ymxp Y2F0aW9uRGVzYygmYnVmLCBfKCJUYWJsZXM6IiksIGZhbHNlLCAmY29udCkpCiAJCQkJZ290 byBlcnJvcl9yZXR1cm47CkBAIC02NTIzLDcgKzY2NDEsNyBAQCBkZXNjcmliZVB1YmxpY2F0 aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1l XG4iCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgblxuIgogCQkJ CQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2Ug cG4gT04gbi5vaWQgPSBwbi5wbm5zcGlkXG4iCi0JCQkJCQkJCSAgIldIRVJFIHBuLnBucHVi aWQgPSAnJXMnXG4iCisJCQkJCQkJCSAgIldIRVJFIHBuLnBucHViaWQgPSAnJXMnIEFORCBw bi5wbnR5cGUgPSAndCdcbiIKIAkJCQkJCQkJICAiT1JERVIgQlkgMSIsIHB1YmlkKTsKIAkJ CQlpZiAoIWFkZEZvb3RlclRvUHVibGljYXRpb25EZXNjKCZidWYsIF8oIlRhYmxlcyBmcm9t IHNjaGVtYXM6IiksCiAJCQkJCQkJCQkJCQl0cnVlLCAmY29udCkpCkBAIC02NTMxLDYgKzY2 NDksMzcgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJ CX0KIAkJfQogCisJCWlmICghcHViYWxsc2VxdWVuY2VzKQorCQl7CisJCQkvKiBHZXQgdGhl IHNlcXVlbmNlcyBmb3IgdGhlIHNwZWNpZmllZCBwdWJsaWNhdGlvbiAqLworCQkJcHJpbnRm UFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lLCBjLnJlbG5h bWUsIE5VTEwsIE5VTExcbiIKKwkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3Mg YyxcbiIKKwkJCQkJCQkgICIgICAgIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4sXG4iCisJ CQkJCQkJICAiICAgICBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgorCQkJ CQkJCSAgIldIRVJFIGMucmVsbmFtZXNwYWNlID0gbi5vaWRcbiIKKwkJCQkJCQkgICIgIEFO RCBjLm9pZCA9IHByLnBycmVsaWRcbiIKKwkJCQkJCQkgICIgIEFORCBwci5wcnB1YmlkID0g JyVzJ1xuIgorCQkJCQkJCSAgIiAgQU5EIGMucmVsa2luZCA9ICdTJ1xuIiAvKiBvbmx5IHNl cXVlbmNlcyAqLworCQkJCQkJCSAgIk9SREVSIEJZIDEsMiIsIHB1YmlkKTsKKwkJCWlmICgh YWRkRm9vdGVyVG9QdWJsaWNhdGlvbkRlc2MoJmJ1ZiwgIlNlcXVlbmNlczoiLCBmYWxzZSwg JmNvbnQpKQorCQkJCWdvdG8gZXJyb3JfcmV0dXJuOworCisJCQlpZiAocHNldC5zdmVyc2lv biA+PSAxNTAwMDApCisJCQl7CisJCQkJLyogR2V0IHRoZSBzY2hlbWFzIGZvciB0aGUgc3Bl Y2lmaWVkIHB1YmxpY2F0aW9uICovCisJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJ CQkJCQkJICAiU0VMRUNUIG4ubnNwbmFtZVxuIgorCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFs b2cucGdfbmFtZXNwYWNlIG5cbiIKKwkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cu cGdfcHVibGljYXRpb25fbmFtZXNwYWNlIHBuIE9OIG4ub2lkID0gcG4ucG5uc3BpZFxuIgor CQkJCQkJCQkgICJXSEVSRSBwbi5wbnB1YmlkID0gJyVzJyBBTkQgcG4ucG50eXBlID0gJ3Mn XG4iCisJCQkJCQkJCSAgIk9SREVSIEJZIDEiLCBwdWJpZCk7CisJCQkJaWYgKCFhZGRGb290 ZXJUb1B1YmxpY2F0aW9uRGVzYygmYnVmLCAiU2VxdWVuY2VzIGZyb20gc2NoZW1hczoiLAor CQkJCQkJCQkJCQkJdHJ1ZSwgJmNvbnQpKQorCQkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJ CX0KKwkJfQorCiAJCXByaW50VGFibGUoJmNvbnQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwg cHNldC5sb2dmaWxlKTsKIAkJcHJpbnRUYWJsZUNsZWFudXAoJmNvbnQpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmMKaW5kZXggMDQ5ODAxMTg2YzMuLmIwNTQ1ZTllOTE3IDEwMDY0NAotLS0gYS9z cmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21w bGV0ZS5jCkBAIC0xODkwLDExICsxODkwLDE1IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBj aGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCUNPTVBMRVRFX1dJVEgoIkFERCIs ICJEUk9QIiwgIk9XTkVSIFRPIiwgIlJFTkFNRSBUTyIsICJTRVQiKTsKIAkvKiBBTFRFUiBQ VUJMSUNBVElPTiA8bmFtZT4gQUREICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAi UFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERCIpKQotCQlDT01QTEVURV9XSVRIKCJUQUJM RVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7CisJCUNPTVBMRVRFX1dJVEgoIlRBQkxFUyBJTiBT Q0hFTUEiLCAiVEFCTEUiLCAiU0VRVUVOQ0VTIElOIFNDSEVNQSIsICJTRVFVRU5DRSIpOwog CWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJB RER8U0VUIiwgIlRBQkxFIikgfHwKIAkJCSAoSGVhZE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VUIiwgIlRBQkxFIikgJiYKIAkJCSAgZW5kc193 aXRoKHByZXZfd2QsICcsJykpKQogCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVy eV9mb3JfbGlzdF9vZl90YWJsZXMpOworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBV QkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VUIiwgIlNFUVVFTkNFIikgfHwKKwkJCSAo SGVhZE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJBRER8U0VU IiwgIlNFUVVFTkNFIikgJiYKKwkJCSAgZW5kc193aXRoKHByZXZfd2QsICcsJykpKQorCQlD T01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9zZXF1ZW5jZXMp OwogCiAJLyoKIAkgKiAiQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IFNFVCBUQUJMRSA8bmFt ZT4gV0hFUkUgKCIgLSBjb21wbGV0ZSB3aXRoCkBAIC0xOTE0LDExICsxOTE4LDExIEBAIHBz cWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJ CUNPTVBMRVRFX1dJVEgoIiwiKTsKIAkvKiBBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gRFJP UCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hB bnksICJEUk9QIikpCi0JCUNPTVBMRVRFX1dJVEgoIlRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFC TEUiKTsKKwkJQ09NUExFVEVfV0lUSCgiVEFCTEVTIElOIFNDSEVNQSIsICJUQUJMRSIsICJT RVFVRU5DRVMgSU4gU0NIRU1BIiwgIlNFUVVFTkNFIik7CiAJLyogQUxURVIgUFVCTElDQVRJ T04gPG5hbWU+IFNFVCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FU SU9OIiwgTWF0Y2hBbnksICJTRVQiKSkKLQkJQ09NUExFVEVfV0lUSCgiKCIsICJUQUJMRVMg SU4gU0NIRU1BIiwgIlRBQkxFIik7Ci0JZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVC TElDQVRJT04iLCBNYXRjaEFueSwgIkFERHxEUk9QfFNFVCIsICJUQUJMRVMiLCAiSU4iLCAi U0NIRU1BIikpCisJCUNPTVBMRVRFX1dJVEgoIigiLCAiVEFCTEVTIElOIFNDSEVNQSIsICJU QUJMRSIsICJTRVFVRU5DRVMgSU4gU0NIRU1BIiwgIlNFUVVFTkNFIik7CisJZWxzZSBpZiAo TWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERHxEUk9QfFNF VCIsICJUQUJMRVN8U0VRVUVOQ0VTIiwgIklOIiwgIlNDSEVNQSIpKQogCQlDT01QTEVURV9X SVRIX1FVRVJZX1BMVVMoUXVlcnlfZm9yX2xpc3Rfb2Zfc2NoZW1hcwogCQkJCQkJCQkgIiBB TkQgbnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxcXF8lJSciLAogCQkJCQkJCQkgIkNVUlJFTlRf U0NIRU1BIik7CkBAIC0zMTIzLDI0ICszMTI3LDMxIEBAIHBzcWxfY29tcGxldGlvbihjb25z dCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAKIC8qIENSRUFURSBQVUJMSUNB VElPTiAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1h dGNoQW55KSkKLQkJQ09NUExFVEVfV0lUSCgiRk9SIFRBQkxFIiwgIkZPUiBBTEwgVEFCTEVT IiwgIkZPUiBUQUJMRVMgSU4gU0NIRU1BIiwgIldJVEggKCIpOworCQlDT01QTEVURV9XSVRI KCJGT1IgVEFCTEUiLCAiRk9SIEFMTCBUQUJMRVMiLCAiRk9SIFRBQkxFUyBJTiBTQ0hFTUEi LCAiRk9SIFNFUVVFTkNFIiwgIkZPUiBBTEwgU0VRVUVOQ0VTIiwgIkZPUiBTRVFVRU5DRVMg SU4gU0NIRU1BIiwgIldJVEggKCIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQ VUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIikpCi0JCUNPTVBMRVRFX1dJVEgoIlRBQkxF IiwgIkFMTCBUQUJMRVMiLCAiVEFCTEVTIElOIFNDSEVNQSIpOworCQlDT01QTEVURV9XSVRI KCJUQUJMRSIsICJBTEwgVEFCTEVTIiwgIlRBQkxFUyBJTiBTQ0hFTUEiLCAiU0VRVUVOQ0Ui LCAiQUxMIFNFUVVFTkNFUyIsICJTRVFVRU5DRVMgSU4gU0NIRU1BIik7CiAJZWxzZSBpZiAo TWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxM IikpCi0JCUNPTVBMRVRFX1dJVEgoIlRBQkxFUyIpOwotCWVsc2UgaWYgKE1hdGNoZXMoIkNS RUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJUQUJMRVMi KSkKKwkJQ09NUExFVEVfV0lUSCgiVEFCTEVTIiwgIlNFUVVFTkNFUyIpOworCWVsc2UgaWYg KE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFM TCIsICJUQUJMRVN8U0VRVUVOQ0VTIikpCiAJCUNPTVBMRVRFX1dJVEgoIldJVEggKCIpOwot CWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAi Rk9SIiwgIlRBQkxFUyIpKQorCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFU3xTRVFVRU5DRVMiKSkKIAkJQ09NUExF VEVfV0lUSCgiSU4gU0NIRU1BIik7Ci0JZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBV QkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEUiLCBNYXRjaEFueSkgJiYgIWVu ZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQ VUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFfFNFUVVFTkNFIiwgTWF0Y2hB bnkpICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKIAkJQ09NUExFVEVfV0lUSCgiV0hF UkUgKCIsICJXSVRIICgiKTsKIAkvKiBDb21wbGV0ZSAiQ1JFQVRFIFBVQkxJQ0FUSU9OIDxu YW1lPiBGT1IgVEFCTEUiIHdpdGggIjx0YWJsZT4sIC4uLiIgKi8KIAllbHNlIGlmIChNYXRj aGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRSIp KQogCQlDT01QTEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJs ZXMpOwogCiAJLyoKLQkgKiAiQ1JFQVRFIFBVQkxJQ0FUSU9OIDxuYW1lPiBGT1IgVEFCTEUg PG5hbWU+IFdIRVJFICgiIC0gY29tcGxldGUgd2l0aAotCSAqIHRhYmxlIGF0dHJpYnV0ZXMK KwkgKiBDb21wbGV0ZSAiQ1JFQVRFIFBVQkxJQ0FUSU9OIDxuYW1lPiBGT1IgU0VRVUVOQ0Ui IHdpdGggIjxzZXF1ZW5jZT4sCisJICogLi4uIgorCSAqLworCWVsc2UgaWYgKE1hdGNoZXMo IkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlNFUVVFTkNFIikp CisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3NlcXVl bmNlcyk7CisKKwkvKgorCSAqICJDUkVBVEUgUFVCTElDQVRJT04gPG5hbWU+IEZPUiBUQUJM RXxTRVFVRU5DRSA8bmFtZT4gV0hFUkUgKCIgLQorCSAqIGNvbXBsZXRlIHdpdGggdGFibGUg YXR0cmlidXRlcwogCSAqLwogCWVsc2UgaWYgKEhlYWRNYXRjaGVzKCJDUkVBVEUiLCAiUFVC TElDQVRJT04iLCBNYXRjaEFueSkgJiYgVGFpbE1hdGNoZXMoIldIRVJFIikpCiAJCUNPTVBM RVRFX1dJVEgoIigiKTsKQEAgLTMxNTIsMTEgKzMxNjMsMTEgQEAgcHNxbF9jb21wbGV0aW9u KGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkvKgogCSAqIENvbXBs ZXRlICJDUkVBVEUgUFVCTElDQVRJT04gPG5hbWU+IEZPUiBUQUJMRVMgSU4gU0NIRU1BIDxz Y2hlbWE+LCAuLi4iCiAJICovCi0JZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiVEFCTEVTIiwgIklOIiwgIlNDSEVNQSIpKQor CWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAi Rk9SIiwgIlRBQkxFU3xTRVFVRU5DRVMiLCAiSU4iLCAiU0NIRU1BIikpCiAJCUNPTVBMRVRF X1dJVEhfUVVFUllfUExVUyhRdWVyeV9mb3JfbGlzdF9vZl9zY2hlbWFzCiAJCQkJCQkJCSAi IEFORCBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXFxcXyUlJyIsCiAJCQkJCQkJCSAiQ1VSUkVO VF9TQ0hFTUEiKTsKLQllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04i LCBNYXRjaEFueSwgIkZPUiIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnkp ICYmICghZW5kc193aXRoKHByZXZfd2QsICcsJykpKQorCWVsc2UgaWYgKE1hdGNoZXMoIkNS RUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFU3xTRVFVRU5D RVMiLCAiSU4iLCAiU0NIRU1BIiwgTWF0Y2hBbnkpICYmICghZW5kc193aXRoKHByZXZfd2Qs ICcsJykpKQogCQlDT01QTEVURV9XSVRIKCJXSVRIICgiKTsKIAkvKiBDb21wbGV0ZSAiQ1JF QVRFIFBVQkxJQ0FUSU9OIDxuYW1lPiBbLi4uXSBXSVRIIiAqLwogCWVsc2UgaWYgKEhlYWRN YXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iKSAmJiBUYWlsTWF0Y2hlcygiV0lUSCIs ICIoIikpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBmYjU4ZGVlM2JjZC4uZjRh ZTBiZDRmYjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMzMyOSw2ICszMzI5 LDE0IEBACiAgIHByb25hbWUgPT4gJ3BnX3NlcXVlbmNlX2xhc3RfdmFsdWUnLCBwcm92b2xh dGlsZSA9PiAndicsIHByb3BhcmFsbGVsID0+ICd1JywKICAgcHJvcmV0dHlwZSA9PiAnaW50 OCcsIHByb2FyZ3R5cGVzID0+ICdyZWdjbGFzcycsCiAgIHByb3NyYyA9PiAncGdfc2VxdWVu Y2VfbGFzdF92YWx1ZScgfSwKK3sgb2lkID0+ICc2MzEyJywKKyAgZGVzY3IgPT4gJ2N1cnJl bnQgb24tZGlzayBzZXF1ZW5jZSBzdGF0ZScsCisgIHByb25hbWUgPT4gJ3BnX3NlcXVlbmNl X3N0YXRlJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICdyZWNvcmQn LCBwcm9hcmd0eXBlcyA9PiAncmVnY2xhc3MnLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne3Jl Z2NsYXNzLHBnX2xzbixpbnQ4LGludDgsYm9vbH0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ks byxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne3NlcV9vaWQscGFnZV9sc24sbGFzdF92 YWx1ZSxsb2dfY250LGlzX2NhbGxlZH0nLAorICBwcm9zcmMgPT4gJ3BnX3NlcXVlbmNlX3N0 YXRlJyB9LAogCiB7IG9pZCA9PiAnMjc1JywgZGVzY3IgPT4gJ3JldHVybiB0aGUgbmV4dCBv aWQgZm9yIGEgc3lzdGVtIHRhYmxlJywKICAgcHJvbmFtZSA9PiAncGdfbmV4dG9pZCcsIHBy b3ZvbGF0aWxlID0+ICd2JywgcHJvcGFyYWxsZWwgPT4gJ3UnLApAQCAtMTE4NzMsNiArMTE4 ODEsMTEgQEAKICAgcHJvYXJnbW9kZXMgPT4gJ3t2LG8sbyxvLG99JywKICAgcHJvYXJnbmFt ZXMgPT4gJ3twdWJuYW1lLHB1YmlkLHJlbGlkLGF0dHJzLHF1YWx9JywKICAgcHJvc3JjID0+ ICdwZ19nZXRfcHVibGljYXRpb25fdGFibGVzJyB9LAoreyBvaWQgPT4gJzgwMDAnLCBkZXNj ciA9PiAnZ2V0IE9JRHMgb2Ygc2VxdWVuY2VzIGluIGEgcHVibGljYXRpb24nLAorICBwcm9u YW1lID0+ICdwZ19nZXRfcHVibGljYXRpb25fc2VxdWVuY2VzJywgcHJvcm93cyA9PiAnMTAw MCcsIHByb3JldHNldCA9PiAndCcsCisgIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlw ZSA9PiAnb2lkJywgcHJvYXJndHlwZXMgPT4gJ3RleHQnLAorICBwcm9hbGxhcmd0eXBlcyA9 PiAne3RleHQsb2lkfScsIHByb2FyZ21vZGVzID0+ICd7aSxvfScsCisgIHByb2FyZ25hbWVz ID0+ICd7cHVibmFtZSxyZWxpZH0nLCBwcm9zcmMgPT4gJ3BnX2dldF9wdWJsaWNhdGlvbl9z ZXF1ZW5jZXMnIH0sCiB7IG9pZCA9PiAnNjEyMScsCiAgIGRlc2NyID0+ICdyZXR1cm5zIHdo ZXRoZXIgYSByZWxhdGlvbiBjYW4gYmUgcGFydCBvZiBhIHB1YmxpY2F0aW9uJywKICAgcHJv bmFtZSA9PiAncGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUnLCBwcm92b2xhdGlsZSA9PiAn cycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5kZXggZDkyOWM5YTE4 ODAuLmEyNmU0ZTUxY2EyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5o CkBAIC00MCw2ICs0MCwxMiBAQCBDQVRBTE9HKHBnX3B1YmxpY2F0aW9uLDYxMDQsUHVibGlj YXRpb25SZWxhdGlvbklkKQogCSAqLwogCWJvb2wJCXB1YmFsbHRhYmxlczsKIAorCS8qCisJ ICogaW5kaWNhdGVzIHRoYXQgdGhpcyBpcyBzcGVjaWFsIHB1YmxpY2F0aW9uIHdoaWNoIHNo b3VsZCBlbmNvbXBhc3MgYWxsCisJICogc2VxdWVuY2VzIGluIHRoZSBkYXRhYmFzZSAoZXhj ZXB0IGZvciB0aGUgdW5sb2dnZWQgYW5kIHRlbXAgb25lcykKKwkgKi8KKwlib29sCQlwdWJh bGxzZXF1ZW5jZXM7CisKIAkvKiB0cnVlIGlmIGluc2VydHMgYXJlIHB1Ymxpc2hlZCAqLwog CWJvb2wJCXB1Ymluc2VydDsKIApAQCAtNTIsNiArNTgsOSBAQCBDQVRBTE9HKHBnX3B1Ymxp Y2F0aW9uLDYxMDQsUHVibGljYXRpb25SZWxhdGlvbklkKQogCS8qIHRydWUgaWYgdHJ1bmNh dGVzIGFyZSBwdWJsaXNoZWQgKi8KIAlib29sCQlwdWJ0cnVuY2F0ZTsKIAorCS8qIHRydWUg aWYgc2VxdWVuY2VzIGFyZSBwdWJsaXNoZWQgKi8KKwlib29sCQlwdWJzZXF1ZW5jZTsKKwog CS8qIHRydWUgaWYgcGFydGl0aW9uIGNoYW5nZXMgYXJlIHB1Ymxpc2hlZCB1c2luZyByb290 IHNjaGVtYSAqLwogCWJvb2wJCXB1YnZpYXJvb3Q7CiB9IEZvcm1EYXRhX3BnX3B1YmxpY2F0 aW9uOwpAQCAtNzIsNiArODEsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbkFjdGlv bnMKIAlib29sCQlwdWJ1cGRhdGU7CiAJYm9vbAkJcHViZGVsZXRlOwogCWJvb2wJCXB1YnRy dW5jYXRlOworCWJvb2wJCXB1YnNlcXVlbmNlOwogfSBQdWJsaWNhdGlvbkFjdGlvbnM7CiAK IHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uRGVzYwpAQCAtOTksNiArMTA5LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgUHVibGljYXRpb24KIAlPaWQJCQlvaWQ7CiAJY2hhcgkgICAqbmFtZTsK IAlib29sCQlhbGx0YWJsZXM7CisJYm9vbAkJYWxsc2VxdWVuY2VzOwogCWJvb2wJCXB1YnZp YXJvb3Q7CiAJUHVibGljYXRpb25BY3Rpb25zIHB1YmFjdGlvbnM7CiB9IFB1YmxpY2F0aW9u OwpAQCAtMTMwLDE0ICsxNDEsMTUgQEAgdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uUGFydE9w dAogCVBVQkxJQ0FUSU9OX1BBUlRfQUxMLAogfSBQdWJsaWNhdGlvblBhcnRPcHQ7CiAKLWV4 dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0 aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CitleHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25S ZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIG9iamVjdFR5cGUsCisJCQkJCQkJCQkgUHVibGlj YXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKIGV4dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQ dWJsaWNhdGlvbnModm9pZCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsVGFibGVzUHVibGljYXRp b25SZWxhdGlvbnMoYm9vbCBwdWJ2aWFyb290KTsKLWV4dGVybiBMaXN0ICpHZXRQdWJsaWNh dGlvblNjaGVtYXMoT2lkIHB1YmlkKTsKLWV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNh dGlvbnMoT2lkIHNjaGVtYWlkKTsKLWV4dGVybiBMaXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlv blJlbGF0aW9ucyhPaWQgc2NoZW1haWQsCitleHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25T Y2hlbWFzKE9pZCBwdWJpZCwgY2hhciBvYmplY3RUeXBlKTsKK2V4dGVybiBMaXN0ICpHZXRT Y2hlbWFQdWJsaWNhdGlvbnMoT2lkIHNjaGVtYWlkLCBjaGFyIG9iamVjdFR5cGUpOworZXh0 ZXJuIExpc3QgKkdldFNjaGVtYVB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBzY2hlbWFpZCwg Y2hhciBvYmplY3RUeXBlLAogCQkJCQkJCQkJCSAgIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJf cGFydG9wdCk7Ci1leHRlcm4gTGlzdCAqR2V0QWxsU2NoZW1hUHVibGljYXRpb25SZWxhdGlv bnMoT2lkIHB1YmlkLAorZXh0ZXJuIExpc3QgKkdldEFsbFNjaGVtYVB1YmxpY2F0aW9uUmVs YXRpb25zKE9pZCBwdWJvaWQsIGNoYXIgb2JqZWN0VHlwZSwKIAkJCQkJCQkJCQkJICBQdWJs aWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOwogZXh0ZXJuIExpc3QgKkdldFB1YlBhcnRp dGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQsCiAJCQkJCQkJCQkJCVB1YmxpY2F0 aW9uUGFydE9wdCBwdWJfcGFydG9wdCwKQEAgLTE0NSwxMSArMTU3LDE1IEBAIGV4dGVybiBM aXN0ICpHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMoTGlzdCAqcmVzdWx0LAogZXh0 ZXJuIE9pZAlHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExp c3QgKmFuY2VzdG9ycywKIAkJCQkJCQkJCQkJaW50ICphbmNlc3Rvcl9sZXZlbCk7CiAKK2V4 dGVybiBMaXN0ICpHZXRBbGxTZXF1ZW5jZXNQdWJsaWNhdGlvbnModm9pZCk7CitleHRlcm4g TGlzdCAqR2V0QWxsU2VxdWVuY2VzUHVibGljYXRpb25SZWxhdGlvbnModm9pZCk7CisKIGV4 dGVybiBib29sIGlzX3B1Ymxpc2hhYmxlX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7CiBleHRl cm4gYm9vbCBpc19zY2hlbWFfcHVibGljYXRpb24oT2lkIHB1YmlkKTsKIGV4dGVybiBPYmpl Y3RBZGRyZXNzIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0 aW9uUmVsSW5mbyAqcHJpLAogCQkJCQkJCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cyk7CiBl eHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwg T2lkIHNjaGVtYWlkLAorCQkJCQkJCQkJCQljaGFyIG9iamVjdFR5cGUsCiAJCQkJCQkJCQkJ CWJvb2wgaWZfbm90X2V4aXN0cyk7CiAKIGV4dGVybiBCaXRtYXBzZXQgKnB1Yl9jb2xsaXN0 X3RvX2JpdG1hcHNldChCaXRtYXBzZXQgKmNvbHVtbnMsIERhdHVtIHB1YmNvbHMsCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UuaAppbmRl eCBiMzYxYzhhYjVlMC4uZjU4ZTY3MGJhN2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHVibGljYXRpb25fbmFtZXNwYWNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UuaApAQCAtMzIsNiArMzIsNyBAQCBDQVRB TE9HKHBnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSw2MjM3LFB1YmxpY2F0aW9uTmFtZXNwYWNl UmVsYXRpb25JZCkKIAlPaWQJCQlvaWQ7CQkJLyogb2lkICovCiAJT2lkCQkJcG5wdWJpZCBC S0lfTE9PS1VQKHBnX3B1YmxpY2F0aW9uKTsgLyogT2lkIG9mIHRoZSBwdWJsaWNhdGlvbiAq LwogCU9pZAkJCXBubnNwaWQgQktJX0xPT0tVUChwZ19uYW1lc3BhY2UpOwkvKiBPaWQgb2Yg dGhlIHNjaGVtYSAqLworCWNoYXIJCXBudHlwZTsJCQkvKiBvYmplY3QgdHlwZSB0byBpbmNs dWRlICovCiB9IEZvcm1EYXRhX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZTsKIAogLyogLS0t LS0tLS0tLS0tLS0tLQpAQCAtNDIsNiArNDMsMTMgQEAgQ0FUQUxPRyhwZ19wdWJsaWNhdGlv bl9uYW1lc3BhY2UsNjIzNyxQdWJsaWNhdGlvbk5hbWVzcGFjZVJlbGF0aW9uSWQpCiB0eXBl ZGVmIEZvcm1EYXRhX3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZSAqRm9ybV9wZ19wdWJsaWNh dGlvbl9uYW1lc3BhY2U7CiAKIERFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdfcHVibGlj YXRpb25fbmFtZXNwYWNlX29pZF9pbmRleCwgNjIzOCwgUHVibGljYXRpb25OYW1lc3BhY2VP YmplY3RJbmRleElkLCBwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UsIGJ0cmVlKG9pZCBvaWRf b3BzKSk7Ci1ERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2Vf cG5uc3BpZF9wbnB1YmlkX2luZGV4LCA2MjM5LCBQdWJsaWNhdGlvbk5hbWVzcGFjZVBubnNw aWRQbnB1YmlkSW5kZXhJZCwgcGdfcHVibGljYXRpb25fbmFtZXNwYWNlLCBidHJlZShwbm5z cGlkIG9pZF9vcHMsIHBucHViaWQgb2lkX29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgo cGdfcHVibGljYXRpb25fbmFtZXNwYWNlX3BubnNwaWRfcG5wdWJpZF9wbnR5cGVfaW5kZXgs IDg5MDMsIFB1YmxpY2F0aW9uTmFtZXNwYWNlUG5uc3BpZFBucHViaWRQbnR5cGVJbmRleElk LCBwZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UsIGJ0cmVlKHBubnNwaWQgb2lkX29wcywgcG5w dWJpZCBvaWRfb3BzLCBwbnR5cGUgY2hhcl9vcHMpKTsKKworLyogb2JqZWN0IHR5cGUgdG8g aW5jbHVkZSBmcm9tIGEgc2NoZW1hLCBtYXBzIHRvIHJlbGtpbmQgKi8KKyNkZWZpbmUJCVBV Ql9PQkpUWVBFX1RBQkxFCQkJJ3QnIC8qIHRhYmxlIChyZWd1bGFyIG9yIHBhcnRpdGlvbmVk KSAqLworI2RlZmluZQkJUFVCX09CSlRZUEVfU0VRVUVOQ0UJCSdzJyAvKiBzZXF1ZW5jZSBv YmplY3QgKi8KKyNkZWZpbmUJCVBVQl9PQkpUWVBFX1VOU1VQUE9SVEVECQkndScgLyogdXNl ZCBmb3Igbm9uLXJlcGxpY2F0ZWQgdHlwZXMgKi8KKworZXh0ZXJuIGNoYXIgcHViX2dldF9v YmplY3RfdHlwZV9mb3JfcmVsa2luZChjaGFyIHJlbGtpbmQpOwogCiAjZW5kaWYJCQkJCQkJ LyogUEdfUFVCTElDQVRJT05fTkFNRVNQQUNFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5j ZS5oCmluZGV4IDdkYjdiM2RhN2JjLi5mZTNjODEzZDk5MyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9z ZXF1ZW5jZS5oCkBAIC02MCw2ICs2MCw3IEBAIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVy U2VxdWVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclNlcVN0bXQgKnN0bXQpOwogZXh0 ZXJuIHZvaWQgU2VxdWVuY2VDaGFuZ2VQZXJzaXN0ZW5jZShPaWQgcmVsaWQsIGNoYXIgbmV3 cmVscGVyc2lzdGVuY2UpOwogZXh0ZXJuIHZvaWQgRGVsZXRlU2VxdWVuY2VUdXBsZShPaWQg cmVsaWQpOwogZXh0ZXJuIHZvaWQgUmVzZXRTZXF1ZW5jZShPaWQgc2VxX3JlbGlkKTsKK2V4 dGVybiB2b2lkIFNldFNlcXVlbmNlKE9pZCBzZXFfcmVsaWQsIGJvb2wgdHJhbnNhY3Rpb25h bCwgaW50NjQgdmFsdWUpOwogZXh0ZXJuIHZvaWQgUmVzZXRTZXF1ZW5jZUNhY2hlcyh2b2lk KTsKIAogZXh0ZXJuIHZvaWQgc2VxX3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGU0OTQzMDlkYThkLi4zNTZmODcyNGVjOSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMzk5MCw2ICszOTkwLDEwIEBAIHR5cGVk ZWYgZW51bSBQdWJsaWNhdGlvbk9ialNwZWNUeXBlCiAJUFVCTElDQVRJT05PQkpfVEFCTEVT X0lOX1NDSEVNQSwJLyogQWxsIHRhYmxlcyBpbiBzY2hlbWEgKi8KIAlQVUJMSUNBVElPTk9C Sl9UQUJMRVNfSU5fQ1VSX1NDSEVNQSwJLyogQWxsIHRhYmxlcyBpbiBmaXJzdCBlbGVtZW50 IG9mCiAJCQkJCQkJCQkJCSAqIHNlYXJjaF9wYXRoICovCisJUFVCTElDQVRJT05PQkpfU0VR VUVOQ0UsCS8qIFNlcXVlbmNlIHR5cGUgKi8KKwlQVUJMSUNBVElPTk9CSl9TRVFVRU5DRVNf SU5fU0NIRU1BLCAvKiBTZXF1ZW5jZXMgaW4gc2NoZW1hIHR5cGUgKi8KKwlQVUJMSUNBVElP Tk9CSl9TRVFVRU5DRVNfSU5fQ1VSX1NDSEVNQSwgLyogR2V0IHRoZSBmaXJzdCBlbGVtZW50 IG9mCisJCQkJCQkJCQkJCSAqIHNlYXJjaF9wYXRoICovCiAJUFVCTElDQVRJT05PQkpfQ09O VElOVUFUSU9OLAkvKiBDb250aW51YXRpb24gb2YgcHJldmlvdXMgdHlwZSAqLwogfSBQdWJs aWNhdGlvbk9ialNwZWNUeXBlOwogCkBAIC00MDA4LDcgKzQwMTIsOCBAQCB0eXBlZGVmIHN0 cnVjdCBDcmVhdGVQdWJsaWNhdGlvblN0bXQKIAljaGFyCSAgICpwdWJuYW1lOwkJLyogTmFt ZSBvZiB0aGUgcHVibGljYXRpb24gKi8KIAlMaXN0CSAgICpvcHRpb25zOwkJLyogTGlzdCBv ZiBEZWZFbGVtIG5vZGVzICovCiAJTGlzdAkgICAqcHVib2JqZWN0czsJCS8qIE9wdGlvbmFs IGxpc3Qgb2YgcHVibGljYXRpb24gb2JqZWN0cyAqLwotCWJvb2wJCWZvcl9hbGxfdGFibGVz OyAvKiBTcGVjaWFsIHB1YmxpY2F0aW9uIGZvciBhbGwgdGFibGVzIGluIGRiICovCisJTGlz dAkgICAqZm9yX2FsbF9vYmplY3RzOwkvKiBTcGVjaWFsIHB1YmxpY2F0aW9uIGZvciBhbGwg b2JqZWN0cyBpbgorCQkJCQkJCQkJICogZGIgKi8KIH0gQ3JlYXRlUHVibGljYXRpb25TdG10 OwogCiB0eXBlZGVmIGVudW0gQWx0ZXJQdWJsaWNhdGlvbkFjdGlvbgpAQCAtNDAzMSw3ICs0 MDM2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJQdWJsaWNhdGlvblN0bXQKIAkgKiBvYmpl Y3RzLgogCSAqLwogCUxpc3QJICAgKnB1Ym9iamVjdHM7CQkvKiBPcHRpb25hbCBsaXN0IG9m IHB1YmxpY2F0aW9uIG9iamVjdHMgKi8KLQlib29sCQlmb3JfYWxsX3RhYmxlczsgLyogU3Bl Y2lhbCBwdWJsaWNhdGlvbiBmb3IgYWxsIHRhYmxlcyBpbiBkYiAqLworCUxpc3QJICAgKmZv cl9hbGxfb2JqZWN0czsJLyogU3BlY2lhbCBwdWJsaWNhdGlvbiBmb3IgYWxsIG9iamVjdHMg aW4KKwkJCQkJCQkJCSAqIGRiICovCiAJQWx0ZXJQdWJsaWNhdGlvbkFjdGlvbiBhY3Rpb247 CS8qIFdoYXQgYWN0aW9uIHRvIHBlcmZvcm0gd2l0aCB0aGUgZ2l2ZW4KIAkJCQkJCQkJCSAq IG9iamVjdHMgKi8KIH0gQWx0ZXJQdWJsaWNhdGlvblN0bXQ7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2xvZ2ljYWxwcm90by5oCmluZGV4IDRiYjA0YzRlYWM4Li5mNmJiYjc0ZDc4MCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTQyLDcgKzQy LDggQEAKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gMgog I2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDMKICNkZWZp bmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gNAotI2Rl ZmluZSBMT0dJQ0FMUkVQX1BST1RPX01BWF9WRVJTSU9OX05VTSBMT0dJQ0FMUkVQX1BST1RP X1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTQorI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RP X1NFUVVFTkNFU19WRVJTSU9OX05VTSA1CisjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUFY X1ZFUlNJT05fTlVNIExPR0lDQUxSRVBfUFJPVE9fU0VRVUVOQ0VTX1ZFUlNJT05fTlVNCiAK IC8qCiAgKiBMb2dpY2FsIG1lc3NhZ2UgdHlwZXMKQEAgLTY2LDYgKzY3LDcgQEAgdHlwZWRl ZiBlbnVtIExvZ2ljYWxSZXBNc2dUeXBlCiAJTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OID0g J1InLAogCUxPR0lDQUxfUkVQX01TR19UWVBFID0gJ1knLAogCUxPR0lDQUxfUkVQX01TR19N RVNTQUdFID0gJ00nLAorCUxPR0lDQUxfUkVQX01TR19TRVFVRU5DRSA9ICdRJywKIAlMT0dJ Q0FMX1JFUF9NU0dfQkVHSU5fUFJFUEFSRSA9ICdiJywKIAlMT0dJQ0FMX1JFUF9NU0dfUFJF UEFSRSA9ICdQJywKIAlMT0dJQ0FMX1JFUF9NU0dfQ09NTUlUX1BSRVBBUkVEID0gJ0snLApA QCAtMTIzLDYgKzEyNSwxNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwVHlwCiAJY2hh cgkgICAqdHlwbmFtZTsJCS8qIG5hbWUgb2YgdGhlIHJlbW90ZSB0eXBlICovCiB9IExvZ2lj YWxSZXBUeXA7CiAKKy8qIFNlcXVlbmNlIGluZm8gKi8KK3R5cGVkZWYgc3RydWN0IExvZ2lj YWxSZXBTZXF1ZW5jZQoreworCVhMb2dSZWNQdHIJbHNuOwkJCS8qIExTTiBvZiB0aGUgc2Vx dWVuY2UgY2hhbmdlICovCisJT2lkCQkJcmVtb3RlaWQ7CQkvKiB1bmlxdWUgaWQgb2YgdGhl IHJlbW90ZSBzZXF1ZW5jZSAqLworCWNoYXIJICAgKm5zcG5hbWU7CQkvKiBzY2hlbWEgbmFt ZSBvZiByZW1vdGUgc2VxdWVuY2UgKi8KKwljaGFyCSAgICpzZXFuYW1lOwkJLyogbmFtZSBv ZiB0aGUgcmVtb3RlIHNlcXVlbmNlICovCisJYm9vbAkJdHJhbnNhY3Rpb25hbDsKKwlpbnQ2 NAkJdmFsdWU7Cit9IExvZ2ljYWxSZXBTZXF1ZW5jZTsKKwogLyogVHJhbnNhY3Rpb24gaW5m byAqLwogdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcEJlZ2luRGF0YQogewpAQCAtMjQ2LDYg KzI1OSwxMCBAQCBleHRlcm4gTGlzdCAqbG9naWNhbHJlcF9yZWFkX3RydW5jYXRlKFN0cmlu Z0luZm8gaW4sCiAJCQkJCQkJCQkgIGJvb2wgKmNhc2NhZGUsIGJvb2wgKnJlc3RhcnRfc2Vx cyk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX21lc3NhZ2UoU3RyaW5nSW5mbyBv dXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKIAkJCQkJCQkJCSBib29s IHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBzeiwgY29uc3QgY2hh ciAqbWVzc2FnZSk7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3NlcXVlbmNlKFN0 cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsCisJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQg eGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkJCSAgYm9vbCB0cmFuc2FjdGlvbmFsLCBp bnQ2NCB2YWx1ZSk7CitleHRlcm4gTG9naWNhbFJlcFJlbElkIGxvZ2ljYWxyZXBfcmVhZF9z ZXF1ZW5jZShTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwU2VxdWVuY2UgKnNlcWRhdGEpOwog ZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9yZWwoU3RyaW5nSW5mbyBvdXQsIFRyYW5z YWN0aW9uSWQgeGlkLAogCQkJCQkJCQkgUmVsYXRpb24gcmVsLCBCaXRtYXBzZXQgKmNvbHVt bnMpOwogZXh0ZXJuIExvZ2ljYWxSZXBSZWxhdGlvbiAqbG9naWNhbHJlcF9yZWFkX3JlbChT dHJpbmdJbmZvIGluKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv b2JqZWN0X2FkZHJlc3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vYmplY3Rf YWRkcmVzcy5vdXQKaW5kZXggZmM0MmQ0MThiZjEuLjlhZWMyNjEyZDAxIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29iamVjdF9hZGRyZXNzLm91dAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29iamVjdF9hZGRyZXNzLm91dApAQCAtNDcsNiAr NDcsNyBAQCBDUkVBVEUgVFJBTlNGT1JNIEZPUiBpbnQgTEFOR1VBR0UgU1FMICgKIFNFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiBhZGRy X3B1YiBGT1IgVEFCTEUgYWRkcl9uc3AuZ2VudGFibGU7CiBDUkVBVEUgUFVCTElDQVRJT04g YWRkcl9wdWJfc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIGFkZHJfbnNwOworQ1JFQVRF IFBVQkxJQ0FUSU9OIGFkZHJfcHViX3NjaGVtYTIgRk9SIFNFUVVFTkNFUyBJTiBTQ0hFTUEg YWRkcl9uc3A7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogQ1JFQVRFIFNVQlNDUklQ VElPTiByZWdyZXNzX2FkZHJfc3ViIENPTk5FQ1RJT04gJycgUFVCTElDQVRJT04gYmFyIFdJ VEggKGNvbm5lY3QgPSBmYWxzZSwgc2xvdF9uYW1lID0gTk9ORSk7CiBXQVJOSU5HOiAgc3Vi c2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZApAQCAtMzE1LDEy ICszMTYsMTIgQEAgV0FSTklORzogIGVycm9yIGZvciBmdW5jdGlvbiBvZiBhY2Nlc3MgbWV0 aG9kLHthZGRyX25zcCx6d2VpfSx7fTogbmFtZSBsaXN0IGxlbmcKIFdBUk5JTkc6ICBlcnJv ciBmb3IgZnVuY3Rpb24gb2YgYWNjZXNzIG1ldGhvZCx7YWRkcl9uc3AsendlaX0se2ludGVn ZXJ9OiBuYW1lIGxpc3QgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgMwogV0FSTklORzogIGVy cm9yIGZvciBmdW5jdGlvbiBvZiBhY2Nlc3MgbWV0aG9kLHtlaW5zLHp3ZWksZHJlaX0se306 IGFyZ3VtZW50IGxpc3QgbGVuZ3RoIG11c3QgYmUgZXhhY3RseSAyCiBXQVJOSU5HOiAgZXJy b3IgZm9yIGZ1bmN0aW9uIG9mIGFjY2VzcyBtZXRob2Qse2VpbnMsendlaSxkcmVpfSx7aW50 ZWdlcn06IGFyZ3VtZW50IGxpc3QgbGVuZ3RoIG11c3QgYmUgZXhhY3RseSAyCi1XQVJOSU5H OiAgZXJyb3IgZm9yIHB1YmxpY2F0aW9uIG5hbWVzcGFjZSx7ZWluc30se306IGFyZ3VtZW50 IGxpc3QgbGVuZ3RoIG11c3QgYmUgZXhhY3RseSAxCi1XQVJOSU5HOiAgZXJyb3IgZm9yIHB1 YmxpY2F0aW9uIG5hbWVzcGFjZSx7ZWluc30se2ludGVnZXJ9OiBzY2hlbWEgImVpbnMiIGRv ZXMgbm90IGV4aXN0Ci1XQVJOSU5HOiAgZXJyb3IgZm9yIHB1YmxpY2F0aW9uIG5hbWVzcGFj ZSx7YWRkcl9uc3AsendlaX0se306IG5hbWUgbGlzdCBsZW5ndGggbXVzdCBiZSBleGFjdGx5 IDEKLVdBUk5JTkc6ICBlcnJvciBmb3IgcHVibGljYXRpb24gbmFtZXNwYWNlLHthZGRyX25z cCx6d2VpfSx7aW50ZWdlcn06IG5hbWUgbGlzdCBsZW5ndGggbXVzdCBiZSBleGFjdGx5IDEK LVdBUk5JTkc6ICBlcnJvciBmb3IgcHVibGljYXRpb24gbmFtZXNwYWNlLHtlaW5zLHp3ZWks ZHJlaX0se306IG5hbWUgbGlzdCBsZW5ndGggbXVzdCBiZSBleGFjdGx5IDEKLVdBUk5JTkc6 ICBlcnJvciBmb3IgcHVibGljYXRpb24gbmFtZXNwYWNlLHtlaW5zLHp3ZWksZHJlaX0se2lu dGVnZXJ9OiBuYW1lIGxpc3QgbGVuZ3RoIG11c3QgYmUgZXhhY3RseSAxCitXQVJOSU5HOiAg ZXJyb3IgZm9yIHB1YmxpY2F0aW9uIG5hbWVzcGFjZSx7ZWluc30se306IGFyZ3VtZW50IGxp c3QgbGVuZ3RoIG11c3QgYmUgZXhhY3RseSAyCitXQVJOSU5HOiAgZXJyb3IgZm9yIHB1Ymxp Y2F0aW9uIG5hbWVzcGFjZSx7ZWluc30se2ludGVnZXJ9OiBhcmd1bWVudCBsaXN0IGxlbmd0 aCBtdXN0IGJlIGV4YWN0bHkgMgorV0FSTklORzogIGVycm9yIGZvciBwdWJsaWNhdGlvbiBu YW1lc3BhY2Use2FkZHJfbnNwLHp3ZWl9LHt9OiBhcmd1bWVudCBsaXN0IGxlbmd0aCBtdXN0 IGJlIGV4YWN0bHkgMgorV0FSTklORzogIGVycm9yIGZvciBwdWJsaWNhdGlvbiBuYW1lc3Bh Y2Use2FkZHJfbnNwLHp3ZWl9LHtpbnRlZ2VyfTogYXJndW1lbnQgbGlzdCBsZW5ndGggbXVz dCBiZSBleGFjdGx5IDIKK1dBUk5JTkc6ICBlcnJvciBmb3IgcHVibGljYXRpb24gbmFtZXNw YWNlLHtlaW5zLHp3ZWksZHJlaX0se306IGFyZ3VtZW50IGxpc3QgbGVuZ3RoIG11c3QgYmUg ZXhhY3RseSAyCitXQVJOSU5HOiAgZXJyb3IgZm9yIHB1YmxpY2F0aW9uIG5hbWVzcGFjZSx7 ZWlucyx6d2VpLGRyZWl9LHtpbnRlZ2VyfTogYXJndW1lbnQgbGlzdCBsZW5ndGggbXVzdCBi ZSBleGFjdGx5IDIKIFdBUk5JTkc6ICBlcnJvciBmb3IgcHVibGljYXRpb24gcmVsYXRpb24s e2VpbnN9LHt9OiBhcmd1bWVudCBsaXN0IGxlbmd0aCBtdXN0IGJlIGV4YWN0bHkgMQogV0FS TklORzogIGVycm9yIGZvciBwdWJsaWNhdGlvbiByZWxhdGlvbix7ZWluc30se2ludGVnZXJ9 OiByZWxhdGlvbiAiZWlucyIgZG9lcyBub3QgZXhpc3QKIFdBUk5JTkc6ICBlcnJvciBmb3Ig cHVibGljYXRpb24gcmVsYXRpb24se2FkZHJfbnNwLHp3ZWl9LHt9OiBhcmd1bWVudCBsaXN0 IGxlbmd0aCBtdXN0IGJlIGV4YWN0bHkgMQpAQCAtNDQxLDcgKzQ0Miw4IEBAIFdJVEggb2Jq ZWN0cyAodHlwZSwgbmFtZSwgYXJncykgQVMgKFZBTFVFUwogICAgICgndHJhbnNmb3JtJywg J3tpbnR9JywgJ3tzcWx9JyksCiAgICAgKCdhY2Nlc3MgbWV0aG9kJywgJ3tidHJlZX0nLCAn e30nKSwKICAgICAoJ3B1YmxpY2F0aW9uJywgJ3thZGRyX3B1Yn0nLCAne30nKSwKLSAgICAo J3B1YmxpY2F0aW9uIG5hbWVzcGFjZScsICd7YWRkcl9uc3B9JywgJ3thZGRyX3B1Yl9zY2hl bWF9JyksCisgICAgKCdwdWJsaWNhdGlvbiBuYW1lc3BhY2UnLCAne2FkZHJfbnNwfScsICd7 YWRkcl9wdWJfc2NoZW1hLCB0fScpLAorICAgICgncHVibGljYXRpb24gbmFtZXNwYWNlJywg J3thZGRyX25zcH0nLCAne2FkZHJfcHViX3NjaGVtYTIsIHN9JyksCiAgICAgKCdwdWJsaWNh dGlvbiByZWxhdGlvbicsICd7YWRkcl9uc3AsIGdlbnRhYmxlfScsICd7YWRkcl9wdWJ9Jyks CiAgICAgKCdzdWJzY3JpcHRpb24nLCAne3JlZ3Jlc3NfYWRkcl9zdWJ9JywgJ3t9JyksCiAg ICAgKCdzdGF0aXN0aWNzIG9iamVjdCcsICd7YWRkcl9uc3AsIGdlbnRhYmxlX3N0YXR9Jywg J3t9JykKQEAgLTUwNCw3ICs1MDYsOCBAQCB0ZXh0IHNlYXJjaCB0ZW1wbGF0ZXxhZGRyX25z cHxhZGRyX3RzX3RlbXB8YWRkcl9uc3AuYWRkcl90c190ZW1wfHQKIHN1YnNjcmlwdGlvbnxO VUxMfHJlZ3Jlc3NfYWRkcl9zdWJ8cmVncmVzc19hZGRyX3N1Ynx0CiBwdWJsaWNhdGlvbnxO VUxMfGFkZHJfcHVifGFkZHJfcHVifHQKIHB1YmxpY2F0aW9uIHJlbGF0aW9ufE5VTEx8TlVM THxhZGRyX25zcC5nZW50YWJsZSBpbiBwdWJsaWNhdGlvbiBhZGRyX3B1Ynx0Ci1wdWJsaWNh dGlvbiBuYW1lc3BhY2V8TlVMTHxOVUxMfGFkZHJfbnNwIGluIHB1YmxpY2F0aW9uIGFkZHJf cHViX3NjaGVtYXx0CitwdWJsaWNhdGlvbiBuYW1lc3BhY2V8TlVMTHxOVUxMfGFkZHJfbnNw IGluIHB1YmxpY2F0aW9uIGFkZHJfcHViX3NjaGVtYSB0eXBlIHR8dAorcHVibGljYXRpb24g bmFtZXNwYWNlfE5VTEx8TlVMTHxhZGRyX25zcCBpbiBwdWJsaWNhdGlvbiBhZGRyX3B1Yl9z Y2hlbWEyIHR5cGUgc3x0CiAtLS0KIC0tLSBDbGVhbnVwIHJlc291cmNlcwogLS0tCkBAIC01 MTYsNiArNTE5LDcgQEAgZHJvcCBjYXNjYWRlcyB0byBzZXJ2ZXIgaW50ZWdlcgogZHJvcCBj YXNjYWRlcyB0byB1c2VyIG1hcHBpbmcgZm9yIHJlZ3Jlc3NfYWRkcl91c2VyIG9uIHNlcnZl ciBpbnRlZ2VyCiBEUk9QIFBVQkxJQ0FUSU9OIGFkZHJfcHViOwogRFJPUCBQVUJMSUNBVElP TiBhZGRyX3B1Yl9zY2hlbWE7CitEUk9QIFBVQkxJQ0FUSU9OIGFkZHJfcHViX3NjaGVtYTI7 CiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX2FkZHJfc3ViOwogRFJPUCBTQ0hFTUEgYWRk cl9uc3AgQ0FTQ0FERTsKIE5PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gMTQgb3RoZXIgb2Jq ZWN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKaW5kZXggMTNlNGY2ZGI3YmEu LmJhYjVjMjc0MjJjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bz cWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKQEAgLTYy NDAsOSArNjI0MCw5IEBAIExpc3Qgb2Ygc2NoZW1hcwogKDAgcm93cykKIAogXGRScCAibm8u c3VjaC5wdWJsaWNhdGlvbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2YgcHVibGljYXRpb25zCi0gTmFtZSB8IE93bmVyIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyBOYW1lIHwgT3duZXIgfCBBbGwgdGFi bGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCiAoMCByb3dzKQogCiBcZFJzICJu by5zdWNoLnN1YnNjcmlwdGlvbiIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHVibGljYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJs aWNhdGlvbi5vdXQKaW5kZXggMTYzNjFhOTFmOWYuLjJmNWM3MmM5ZDJiIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMzAsMjAgKzMwLDIw IEBAIEVSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMKIExJTkUgMTog Li4udWJfeHh4IFdJVEggKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gJ3RydWUnLCBw dWJsaXNoX3ZpLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgogXGRScAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgICAgIE5h bWUgICAgICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSB0ZXN0cGliX2luc190cnVuY3QgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwg ZgotIHRlc3RwdWJfZGVmYXVsdCAgICB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBm CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucworICAgICAgICBOYW1lICAgICAgICB8ICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ZXN0cGli X2luc190cnVuY3QgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg ZiAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAg ICB8IGYgICAgICAgICB8IGYKKyB0ZXN0cHViX2RlZmF1bHQgICAgfCByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IGYgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgICB8IGYKICgyIHJvd3Mp CiAKLUFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGVmYXVsdCBTRVQgKHB1Ymxpc2ggPSAn aW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZScpOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9k ZWZhdWx0IFNFVCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCBzZXF1ZW5j ZScpOwogXGRScAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgICAgIE5hbWUgICAgICAgIHwgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0ZXN0cGliX2luc190 cnVuY3QgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgotIHRlc3RwdWJfZGVmYXVs dCAgICB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHB1 YmxpY2F0aW9ucworICAgICAgICBOYW1lICAgICAgICB8ICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyB0ZXN0cGliX2luc190cnVuY3QgfCByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgICB8IGYK KyB0ZXN0cHViX2RlZmF1bHQgICAgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgICB8IHQgICAgICAgICB8IGYKICgyIHJvd3MpCiAKIC0tLSBhZGRpbmcgdGFi bGVzCkBAIC02MSw2ICs2MSw5IEBAIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDIgKGlkIHNl cmlhbCBwcmltYXJ5IGtleSwgZGF0YSB0ZXh0KTsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yYWxsdGFibGVzIEFERCBUQUJMRSB0ZXN0cHViX3RibDI7CiBFUlJPUjogIHB1Ymxp Y2F0aW9uICJ0ZXN0cHViX2ZvcmFsbHRhYmxlcyIgaXMgZGVmaW5lZCBhcyBGT1IgQUxMIFRB QkxFUwogREVUQUlMOiAgVGFibGVzIGNhbm5vdCBiZSBhZGRlZCB0byBvciBkcm9wcGVkIGZy b20gRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb25zLgorLS0gZmFpbCAtIGNhbid0IGFkZCBh IHRhYmxlIHVzaW5nIEFERCBTRVFVRU5DRSBjb21tYW5kCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX2ZvcmFsbHRhYmxlcyBBREQgU0VRVUVOQ0UgdGVzdHB1Yl90YmwyOworRVJST1I6 ICBvYmplY3QgdHlwZSBkb2VzIG5vdCBtYXRjaCB0eXBlIGV4cGVjdGVkIGJ5IGNvbW1hbmQK IC0tIGZhaWwgLSBjYW4ndCBkcm9wIGZyb20gYWxsIHRhYmxlcyBwdWJsaWNhdGlvbgogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXMgRFJPUCBUQUJMRSB0ZXN0cHVi X3RibDI7CiBFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcmFsbHRhYmxlcyIgaXMg ZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUwpAQCAtODcsMTAgKzkwLDEwIEBAIFJFU0VUIGNs aWVudF9taW5fbWVzc2FnZXM7CiAtLSBzaG91bGQgYmUgYWJsZSB0byBhZGQgc2NoZW1hIHRv ICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnRhYmxlIEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogXGRScCsgdGVzdHB1Yl9m b3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAg ICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3Ri bDEiCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgpAQCAtOTksMjAgKzEwMiwyMCBAQCBUYWJsZXMg ZnJvbSBzY2hlbWFzOgogLS0gc2hvdWxkIGJlIGFibGUgdG8gZHJvcCBzY2hlbWEgZnJvbSAn Rk9SIFRBQkxFJyBwdWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0 YWJsZSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJwKyB0ZXN0cHViX2Zv cnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJs MSIKIAogLS0gc2hvdWxkIGJlIGFibGUgdG8gc2V0IHNjaGVtYSB0byAnRk9SIFRBQkxFJyBw dWJsaWNhdGlvbgogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQgVEFC TEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFxkUnArIHRlc3RwdWJfZm9ydGFibGUKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJs ZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg ICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAg ICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QiCiAKQEAgLTEy MywxMCArMTI2LDEwIEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBG T1IgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0 cHViX2Zvcl90Ymxfc2NoZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0LCBUQUJM RSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwog XGRScCsgdGVzdHB1Yl9mb3JfdGJsX3NjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2Zvcl90Ymxfc2NoZW1hCi0gICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf Zm9yX3RibF9zY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6 CkBAIC0xNDQsMTAgKzE0NywxMCBAQCBMSU5FIDE6IC4uLkNBVElPTiB0ZXN0cHViX3BhcnNl cnRzdCBGT1IgVEFCTEVTIElOIFNDSEVNQSBmb28sIHRlc3QuZm9vOwogLS0gc2hvdWxkIGJl IGFibGUgdG8gYWRkIGEgdGFibGUgb2YgdGhlIHNhbWUgc2NoZW1hIHRvIHRoZSBzY2hlbWEg cHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIEFERCBU QUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CiBcZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9y c2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0 ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKIFRh YmxlcyBmcm9tIHNjaGVtYXM6CkBAIC0xNTYsMTAgKzE1OSwxMCBAQCBUYWJsZXMgZnJvbSBz Y2hlbWFzOgogLS0gc2hvdWxkIGJlIGFibGUgdG8gZHJvcCB0aGUgdGFibGUKIEFMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIERST1AgVEFCTEUgcHViX3Rlc3QudGVzdHB1 Yl9ub3BrOwogXGRScCsgdGVzdHB1Yl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQotICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVi bGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVz IGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QiCiAKQEAgLTE3MCwxMCArMTczLDEwIEBA IEVSUk9SOiAgcmVsYXRpb24gInRlc3RwdWJfbm9wayIgaXMgbm90IHBhcnQgb2YgdGhlIHB1 YmxpY2F0aW9uCiAtLSBzaG91bGQgYmUgYWJsZSB0byBzZXQgdGFibGUgdG8gc2NoZW1hIHB1 YmxpY2F0aW9uCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgVEFC TEUgcHViX3Rlc3QudGVzdHB1Yl9ub3BrOwogXGRScCsgdGVzdHB1Yl9mb3JzY2hlbWEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnNj aGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAg ICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiAKQEAg LTE5NywxMCArMjAwLDEwIEBAIE5vdC1udWxsIGNvbnN0cmFpbnRzOgogICAgICJ0ZXN0cHVi X3RibDJfaWRfbm90X251bGwiIE5PVCBOVUxMICJpZCIKIAogXGRScCsgdGVzdHB1Yl9mb3Jh bGx0YWJsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWJfZm9yYWxsdGFibGVzCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBm ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFsbHRhYmxlcworICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlh IHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCB0ICAg ICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgICB8IGYgICAgICAgICB8IGYKICgxIHJvdykKIAogRFJPUCBUQUJMRSB0ZXN0 cHViX3RibDI7CkBAIC0yMTIsMjQgKzIxNSw1MjUgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWIzIEZPUiBUQUJMRSB0ZXN0cHViX3RibDM7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1YjQgRk9SIFRBQkxFIE9OTFkgdGVzdHB1Yl90YmwzOwogUkVTRVQgY2xpZW50X21pbl9t ZXNzYWdlczsKIFxkUnArIHRlc3RwdWIzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMwotICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjMKKyAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8 IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50 ZXN0cHViX3RibDMiCiAgICAgInB1YmxpYy50ZXN0cHViX3RibDNhIgogCiBcZFJwKyB0ZXN0 cHViNAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjQKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI0CisgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAg ICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwzIgogCiBEUk9Q IFRBQkxFIHRlc3RwdWJfdGJsMywgdGVzdHB1Yl90YmwzYTsKIERST1AgUFVCTElDQVRJT04g dGVzdHB1YjMsIHRlc3RwdWI0OworLS0tIGFkZGluZyBzZXF1ZW5jZXMKK0NSRUFURSBTRVFV RU5DRSB0ZXN0cHViX3NlcTA7CitDUkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QudGVzdHB1Yl9z ZXExOworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIEZPUiBBTEwgU0VRVUVOQ0VTIFdJVEgg KHB1Ymxpc2ggPSAnc2VxdWVuY2UnKTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyBTRVQgKHB1Ymxpc2gg PSAnaW5zZXJ0LCBzZXF1ZW5jZScpOworQ1JFQVRFIFNFUVVFTkNFIHRlc3RwdWJfc2VxMjsK Ky0tIGZhaWwgLSBjYW4ndCBhZGQgdG8gZm9yIGFsbCBzZXF1ZW5jZXMgcHVibGljYXRpb24K K0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIEFERCBTRVFVRU5D RSB0ZXN0cHViX3NlcTI7CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcmFsbHNl cXVlbmNlcyIgaXMgZGVmaW5lZCBhcyBGT1IgQUxMIFNFUVVFTkNFUworREVUQUlMOiAgU2Vx dWVuY2VzIGNhbm5vdCBiZSBhZGRlZCB0byBvciBkcm9wcGVkIGZyb20gRk9SIEFMTCBTRVFV RU5DRVMgcHVibGljYXRpb25zLgorLS0gZmFpbCAtIGNhbid0IGRyb3AgZnJvbSBhbGwgc2Vx dWVuY2VzIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHNl cXVlbmNlcyBEUk9QIFNFUVVFTkNFIHRlc3RwdWJfc2VxMjsKK0VSUk9SOiAgcHVibGljYXRp b24gInRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwgU0VR VUVOQ0VTCitERVRBSUw6ICBTZXF1ZW5jZXMgY2Fubm90IGJlIGFkZGVkIHRvIG9yIGRyb3Bw ZWQgZnJvbSBGT1IgQUxMIFNFUVVFTkNFUyBwdWJsaWNhdGlvbnMuCistLSBmYWlsIC0gY2Fu J3QgYWRkIHRvIGZvciBhbGwgc2VxdWVuY2VzIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyBTRVQgU0VRVUVOQ0UgcHViX3Rlc3QudGVz dHB1Yl9zZXExOworRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3JhbGxzZXF1ZW5j ZXMiIGlzIGRlZmluZWQgYXMgRk9SIEFMTCBTRVFVRU5DRVMKK0RFVEFJTDogIFNlcXVlbmNl cyBjYW5ub3QgYmUgYWRkZWQgdG8gb3IgZHJvcHBlZCBmcm9tIEZPUiBBTEwgU0VRVUVOQ0VT IHB1YmxpY2F0aW9ucy4KKy0tIGZhaWwgLSBjYW4ndCBhZGQgc2NoZW1hIHRvICdGT1IgQUxM IFNFUVVFTkNFUycgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9y YWxsc2VxdWVuY2VzIEFERCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworRVJST1I6 ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMiIGlzIGRlZmluZWQgYXMg Rk9SIEFMTCBTRVFVRU5DRVMKK0RFVEFJTDogIFNlcXVlbmNlcyBmcm9tIHNjaGVtYSBjYW5u b3QgYmUgYWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIEZPUiBBTEwgU0VRVUVO Q0VTIHB1YmxpY2F0aW9ucy4KKy0tIGZhaWwgLSBjYW4ndCBkcm9wIHNjaGVtYSBmcm9tICdG T1IgQUxMIFNFUVVFTkNFUycgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yYWxsc2VxdWVuY2VzIERST1AgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVzdDsK K0VSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIiBpcyBkZWZp bmVkIGFzIEZPUiBBTEwgU0VRVUVOQ0VTCitERVRBSUw6ICBTZXF1ZW5jZXMgZnJvbSBzY2hl bWEgY2Fubm90IGJlIGFkZGVkIHRvLCBkcm9wcGVkIGZyb20sIG9yIHNldCBvbiBGT1IgQUxM IFNFUVVFTkNFUyBwdWJsaWNhdGlvbnMuCistLSBmYWlsIC0gY2FuJ3Qgc2V0IHNjaGVtYSB0 byAnRk9SIEFMTCBTRVFVRU5DRVMnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyBTRVQgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVz dDsKK0VSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIiBpcyBk ZWZpbmVkIGFzIEZPUiBBTEwgU0VRVUVOQ0VTCitERVRBSUw6ICBTZXF1ZW5jZXMgZnJvbSBz Y2hlbWEgY2Fubm90IGJlIGFkZGVkIHRvLCBkcm9wcGVkIGZyb20sIG9yIHNldCBvbiBGT1Ig QUxMIFNFUVVFTkNFUyBwdWJsaWNhdGlvbnMuCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9 ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzZXF1ZW5jZSBGT1Ig U0VRVUVOQ0UgdGVzdHB1Yl9zZXEwOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKy0t IHNob3VsZCBiZSBhYmxlIHRvIGFkZCBzY2hlbWEgdG8gJ0ZPUiBTRVFVRU5DRScgcHVibGlj YXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2VxdWVuY2UgQUREIFNFUVVF TkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJwKyB0ZXN0cHViX2ZvcnNlcXVlbmNlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfZm9yc2VxdWVuY2UKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBm CitTZXF1ZW5jZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3NlcTAiCitTZXF1ZW5jZXMgZnJv bSBzY2hlbWFzOgorICAgICJwdWJfdGVzdCIKKworLS0gYWRkIHNlcXVlbmNlIGZyb20gdGhl IHNjaGVtYSB3ZSBhbHJlYWR5IGFkZGVkCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Zv cnNlcXVlbmNlIEFERCBTRVFVRU5DRSBwdWJfdGVzdC50ZXN0cHViX3NlcTE7CistLSBmYWls IC0gY2FuJ3QgYWRkIHNlcXVlbmNlIHVzaW5nIEFERCBUQUJMRSBjb21tYW5kCitBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNlcXVlbmNlIEFERCBUQUJMRSBwdWJfdGVzdC50ZXN0 cHViX3NlcTE7CitFUlJPUjogIG9iamVjdCB0eXBlIGRvZXMgbm90IG1hdGNoIHR5cGUgZXhw ZWN0ZWQgYnkgY29tbWFuZAorLS0gc2hvdWxkIGJlIGFibGUgdG8gZHJvcCBzY2hlbWEgZnJv bSAnRk9SIFNFUVVFTkNFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9mb3JzZXF1ZW5jZSBEUk9QIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJw KyB0ZXN0cHViX2ZvcnNlcXVlbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2VxdWVuY2UKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSBy b290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCB0ICAgICAgICAgfCBmCitTZXF1ZW5jZXM6CisgICAgInB1Yl90ZXN0LnRl c3RwdWJfc2VxMSIKKyAgICAicHVibGljLnRlc3RwdWJfc2VxMCIKKworLS0gc2hvdWxkIGJl IGFibGUgdG8gc2V0IHNjaGVtYSB0byAnRk9SIFNFUVVFTkNFJyBwdWJsaWNhdGlvbgorQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzZXF1ZW5jZSBTRVQgU0VRVUVOQ0VTIElOIFND SEVNQSBwdWJfdGVzdDsKK1xkUnArIHRlc3RwdWJfZm9yc2VxdWVuY2UKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9m b3JzZXF1ZW5jZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBB bGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1NlcXVlbmNl cyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorCitTRVQgY2xpZW50X21pbl9tZXNz YWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEg Rk9SIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitSRVNFVCBjbGllbnRfbWluX21l c3NhZ2VzOworLS0gc2hvdWxkIGJlIGFibGUgdG8gc2V0IHNlcXVlbmNlIHRvIHNjaGVtYSBw dWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEgU0VUIFNF UVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJfc2VxMTsKK1xkUnArIHRlc3RwdWJfZm9yc2NoZW1h CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8 IGYKK1NlcXVlbmNlczoKKyAgICAicHViX3Rlc3QudGVzdHB1Yl9zZXExIgorCitTRUxFQ1Qg cHVibmFtZSwgcHViYWxsdGFibGVzLCBwdWJhbGxzZXF1ZW5jZXMgRlJPTSBwZ19wdWJsaWNh dGlvbiBXSEVSRSBwdWJuYW1lID0gJ3Rlc3RwdWJfZm9yYWxsc2VxdWVuY2VzJzsKKyAgICAg ICAgIHB1Ym5hbWUgICAgICAgICB8IHB1YmFsbHRhYmxlcyB8IHB1YmFsbHNlcXVlbmNlcyAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0KKyB0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyB8IGYgICAgICAgICAgICB8IHQKKygx IHJvdykKKworXGQrIHB1Yl90ZXN0LnRlc3RwdWJfc2VxMQorICAgICAgICAgICAgICAgICAg ICAgICBTZXF1ZW5jZSAicHViX3Rlc3QudGVzdHB1Yl9zZXExIgorICBUeXBlICB8IFN0YXJ0 IHwgTWluaW11bSB8ICAgICAgIE1heGltdW0gICAgICAgfCBJbmNyZW1lbnQgfCBDeWNsZXM/ IHwgQ2FjaGUgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKyBiaWdpbnQgfCAgICAgMSB8 ICAgICAgIDEgfCA5MjIzMzcyMDM2ODU0Nzc1ODA3IHwgICAgICAgICAxIHwgbm8gICAgICB8 ICAgICAxCitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIgor ICAgICJ0ZXN0cHViX2ZvcnNjaGVtYSIKKyAgICAidGVzdHB1Yl9mb3JzZXF1ZW5jZSIKKwor XGRScCsgdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2Vz CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5j ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5j ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBm ICAgICAgIHwgZiAgICAgICAgIHwgdCAgICAgICAgIHwgZgorKDEgcm93KQorCitEUk9QIFNF UVVFTkNFIHRlc3RwdWJfc2VxMCwgcHViX3Rlc3QudGVzdHB1Yl9zZXExLCB0ZXN0cHViX3Nl cTI7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzLCB0ZXN0cHVi X2ZvcnNlcXVlbmNlLCB0ZXN0cHViX2ZvcnNjaGVtYTsKKy0tIHB1YmxpY2F0aW9uIHRlc3Rp bmcgbXVsdGlwbGUgc2VxdWVuY2VzIGF0IHRoZSBzYW1lIHRpbWUKK0NSRUFURSBTRVFVRU5D RSB0ZXN0cHViX3NlcTE7CitDUkVBVEUgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEyOworU0VUIGNs aWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfbXVsdGkgRk9SIFNFUVVFTkNFIHRlc3RwdWJfc2VxMSwgdGVzdHB1Yl9zZXEyOworUkVT RVQgY2xpZW50X21pbl9tZXNzYWdlczsKK1xkUnArIHRlc3RwdWJfbXVsdGkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9tdWx0aQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBB bGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1NlcXVlbmNl czoKKyAgICAicHVibGljLnRlc3RwdWJfc2VxMSIKKyAgICAicHVibGljLnRlc3RwdWJfc2Vx MiIKKworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX211bHRpOworRFJPUCBTRVFVRU5DRSB0 ZXN0cHViX3NlcTE7CitEUk9QIFNFUVVFTkNFIHRlc3RwdWJfc2VxMjsKKy0tIFB1YmxpY2F0 aW9uIG1peGluZyB0YWJsZXMgYW5kIHNlcXVlbmNlcworU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfbWl4OworUkVTRVQg Y2xpZW50X21pbl9tZXNzYWdlczsKK0NSRUFURSBTRVFVRU5DRSB0ZXN0cHViX3NlcTE7CitD UkVBVEUgU0VRVUVOQ0UgcHViX3Rlc3QudGVzdHB1Yl9zZXEyOworQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9taXggQUREIFNFUVVFTkNFIHRlc3RwdWJfc2VxMSwgVEFCTEUgdGVzdHB1 Yl90YmwxOworXGRScCsgdGVzdHB1Yl9taXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfbWl4CisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEg cm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgdCAgICAgICAgIHwgZgorVGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1 Yl90YmwxIgorU2VxdWVuY2VzOgorICAgICJwdWJsaWMudGVzdHB1Yl9zZXExIgorCitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX21peCBBREQgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJf dGVzdCwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1xkUnArIHRlc3RwdWJfbWl4Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX21peAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1Rh YmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKK1RhYmxlcyBmcm9tIHNjaGVtYXM6 CisgICAgInB1Yl90ZXN0IgorU2VxdWVuY2VzOgorICAgICJwdWJsaWMudGVzdHB1Yl9zZXEx IgorU2VxdWVuY2VzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QiCisKK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfbWl4IERST1AgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVz dDsKK1xkUnArIHRlc3RwdWJfbWl4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX21peAorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IHQgICAgICAgICB8IGYKK1RhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJs MSIKK1RhYmxlcyBmcm9tIHNjaGVtYXM6CisgICAgInB1Yl90ZXN0IgorU2VxdWVuY2VzOgor ICAgICJwdWJsaWMudGVzdHB1Yl9zZXExIgorCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi X21peCBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CitcZFJwKyB0ZXN0cHViX21p eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9taXgKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBm CitUYWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3RibDEiCitTZXF1ZW5jZXM6CisgICAg InB1YmxpYy50ZXN0cHViX3NlcTEiCisKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9taXg7 CitEUk9QIFNFUVVFTkNFIHRlc3RwdWJfc2VxMTsKK0RST1AgU0VRVUVOQ0UgcHViX3Rlc3Qu dGVzdHB1Yl9zZXEyOworLS0gbWFrZSBzdXJlIHdlIHJlcGxpY2F0ZSBvbmx5IHRoZSBjb3Jy ZWN0IHJlbGF0aW9uIHR5cGUKK0NSRUFURSBTQ0hFTUEgcHViX3Rlc3QxOworQ1JFQVRFIFNF UVVFTkNFIHB1Yl90ZXN0MS50ZXN0X3NlcTE7CitDUkVBVEUgVEFCTEUgcHViX3Rlc3QxLnRl c3RfdGJsMSAoYSBpbnQgcHJpbWFyeSBrZXksIGIgaW50KTsKK0NSRUFURSBTQ0hFTUEgcHVi X3Rlc3QyOworQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0Mi50ZXN0X3NlcTI7CitDUkVBVEUg VEFCTEUgcHViX3Rlc3QyLnRlc3RfdGJsMiAoYSBpbnQgcHJpbWFyeSBrZXksIGIgaW50KTsK K1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX3NjaGVtYXM7CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOworLS0gYWRk IHRhYmxlcyBmcm9tIG9uZSBzY2hlbWEsIHNlcXVlbmNlcyBmcm9tIHRoZSBvdGhlcgorQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFzIEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0MjsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hcyBBREQgU0VRVUVO Q0VTIElOIFNDSEVNQSBwdWJfdGVzdDE7CitcZFJwKyB0ZXN0cHViX3NjaGVtYXMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViX3NjaGVtYXMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCitUYWJs ZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdDIiCitTZXF1ZW5jZXMgZnJvbSBzY2hl bWFzOgorICAgICJwdWJfdGVzdDEiCisKK1xkbisgcHViX3Rlc3QxCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzY2hlbWFzCisgICBOYW1lICAgIHwgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWNjZXNzIHByaXZpbGVnZXMgfCBEZXNjcmlwdGlvbiAKKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLQorIHB1Yl90ZXN0MSB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8ICAgICAgICAgICAgICAgICAgIHwgCitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJf c2NoZW1hcyIgKHNlcXVlbmNlcykKKworXGRuKyBwdWJfdGVzdDIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHNjaGVtYXMKKyAgIE5hbWUgICAgfCAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBY2Nlc3MgcHJpdmlsZWdlcyB8IERlc2NyaXB0aW9uIAorLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tCisgcHViX3Rlc3QyIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgICAgICAgICAgICAgICAgICAgfCAKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9z Y2hlbWFzIiAodGFibGVzKQorCitcZCsgcHViX3Rlc3QxLnRlc3Rfc2VxMTsKKyAgICAgICAg ICAgICAgICAgICAgICAgIFNlcXVlbmNlICJwdWJfdGVzdDEudGVzdF9zZXExIgorICBUeXBl ICB8IFN0YXJ0IHwgTWluaW11bSB8ICAgICAgIE1heGltdW0gICAgICAgfCBJbmNyZW1lbnQg fCBDeWNsZXM/IHwgQ2FjaGUgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKyBiaWdpbnQg fCAgICAgMSB8ICAgICAgIDEgfCA5MjIzMzcyMDM2ODU0Nzc1ODA3IHwgICAgICAgICAxIHwg bm8gICAgICB8ICAgICAxCitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIK KworXGQrIHB1Yl90ZXN0MS50ZXN0X3RibDE7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVGFibGUgInB1Yl90ZXN0MS50ZXN0X3RibDEiCisgQ29sdW1uIHwgIFR5cGUgICB8 IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJn ZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAg fCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAK K0luZGV4ZXM6CisgICAgInRlc3RfdGJsMV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGEp CisKK1xkKyBwdWJfdGVzdDIudGVzdF9zZXEyOworICAgICAgICAgICAgICAgICAgICAgICAg U2VxdWVuY2UgInB1Yl90ZXN0Mi50ZXN0X3NlcTIiCisgIFR5cGUgIHwgU3RhcnQgfCBNaW5p bXVtIHwgICAgICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVudCB8IEN5Y2xlcz8gfCBDYWNo ZSAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLQorIGJpZ2ludCB8ICAgICAxIHwgICAgICAg MSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAgICAgICAgIDEgfCBubyAgICAgIHwgICAgIDEK KworXGQrIHB1Yl90ZXN0Mi50ZXN0X3RibDI7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVGFibGUgInB1Yl90ZXN0Mi50ZXN0X3RibDIiCisgQ29sdW1uIHwgIFR5cGUgICB8 IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3JhZ2UgfCBTdGF0cyB0YXJn ZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3QgbnVsbCB8ICAgICAgICAg fCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAK K0luZGV4ZXM6CisgICAgInRlc3RfdGJsMl9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGEp CitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIKKworLS0gYWRkIHRoZSBv dGhlciBvYmplY3QgdHlwZSBmcm9tIGVhY2ggc2NoZW1hCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX3NjaGVtYXMgQUREIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOworQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFzIEFERCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0MjsKK1xkUnArIHRlc3RwdWJfc2NoZW1hcworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc2NoZW1hcwor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2Vz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2Vz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKK1RhYmxlcyBmcm9tIHNjaGVtYXM6 CisgICAgInB1Yl90ZXN0MSIKKyAgICAicHViX3Rlc3QyIgorU2VxdWVuY2VzIGZyb20gc2No ZW1hczoKKyAgICAicHViX3Rlc3QxIgorICAgICJwdWJfdGVzdDIiCisKK1xkbisgcHViX3Rl c3QxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzY2hlbWFzCisgICBO YW1lICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWNjZXNzIHByaXZpbGVnZXMg fCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHB1Yl90ZXN0MSB8IHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8ICAgICAgICAgICAgICAgICAgIHwgCitQdWJsaWNhdGlv bnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIgKHNlcXVlbmNlcykKKyAgICAidGVzdHB1Yl9z Y2hlbWFzIiAodGFibGVzKQorCitcZG4rIHB1Yl90ZXN0MgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc2NoZW1hcworICAgTmFtZSAgICB8ICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFjY2VzcyBwcml2aWxlZ2VzIHwgRGVzY3JpcHRpb24gCistLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KKyBwdWJfdGVzdDIgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCAg ICAgICAgICAgICAgICAgICB8IAorUHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVt YXMiICh0YWJsZXMpCisgICAgInRlc3RwdWJfc2NoZW1hcyIgKHNlcXVlbmNlcykKKworXGQr IHB1Yl90ZXN0MS50ZXN0X3NlcTE7CisgICAgICAgICAgICAgICAgICAgICAgICBTZXF1ZW5j ZSAicHViX3Rlc3QxLnRlc3Rfc2VxMSIKKyAgVHlwZSAgfCBTdGFydCB8IE1pbmltdW0gfCAg ICAgICBNYXhpbXVtICAgICAgIHwgSW5jcmVtZW50IHwgQ3ljbGVzPyB8IENhY2hlIAorLS0t LS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tCisgYmlnaW50IHwgICAgIDEgfCAgICAgICAxIHwgOTIy MzM3MjAzNjg1NDc3NTgwNyB8ICAgICAgICAgMSB8IG5vICAgICAgfCAgICAgMQorUHVibGlj YXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMiCisKK1xkKyBwdWJfdGVzdDEudGVzdF90 YmwxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJfdGVzdDEu dGVzdF90YmwxIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8 IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24gCistLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwg ICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAg ICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAg ICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZXN0X3Ri bDFfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChhKQorUHVibGljYXRpb25zOgorICAgICJ0 ZXN0cHViX3NjaGVtYXMiCisKK1xkKyBwdWJfdGVzdDIudGVzdF9zZXEyOworICAgICAgICAg ICAgICAgICAgICAgICAgU2VxdWVuY2UgInB1Yl90ZXN0Mi50ZXN0X3NlcTIiCisgIFR5cGUg IHwgU3RhcnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVudCB8 IEN5Y2xlcz8gfCBDYWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLQorIGJpZ2ludCB8 ICAgICAxIHwgICAgICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAgICAgICAgIDEgfCBu byAgICAgIHwgICAgIDEKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFzIgor CitcZCsgcHViX3Rlc3QyLnRlc3RfdGJsMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUYWJsZSAicHViX3Rlc3QyLnRlc3RfdGJsMiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwg Q29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSB8IFN0YXRzIHRhcmdl dCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t CisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgICAgICAgICB8 IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBpbnRlZ2VyIHwgICAgICAg ICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAgICAgICAgICB8IAor SW5kZXhlczoKKyAgICAidGVzdF90YmwyX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoYSkK K1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFzIgorCistLSBub3cgZHJvcCB0 aGUgb2JqZWN0IHR5cGUgYWRkZWQgZmlyc3QKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJf c2NoZW1hcyBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QyOworQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9zY2hlbWFzIERST1AgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVz dDE7CitcZFJwKyB0ZXN0cHViX3NjaGVtYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3NjaGVtYXMKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZp YSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCitUYWJsZXMgZnJvbSBzY2hlbWFzOgorICAg ICJwdWJfdGVzdDEiCitTZXF1ZW5jZXMgZnJvbSBzY2hlbWFzOgorICAgICJwdWJfdGVzdDIi CisKK1xkbisgcHViX3Rlc3QxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzY2hlbWFzCisgICBOYW1lICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWNj ZXNzIHByaXZpbGVnZXMgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHB1 Yl90ZXN0MSB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8ICAgICAgICAgICAgICAgICAg IHwgCitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIgKHRhYmxlcykKKwor XGRuKyBwdWJfdGVzdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHNj aGVtYXMKKyAgIE5hbWUgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBY2Nlc3Mg cHJpdmlsZWdlcyB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcHViX3Rl c3QyIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgICAgICAgICAgICAgICAgICAgfCAK K1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1Yl9zY2hlbWFzIiAoc2VxdWVuY2VzKQorCitc ZCsgcHViX3Rlc3QxLnRlc3Rfc2VxMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFNlcXVl bmNlICJwdWJfdGVzdDEudGVzdF9zZXExIgorICBUeXBlICB8IFN0YXJ0IHwgTWluaW11bSB8 ICAgICAgIE1heGltdW0gICAgICAgfCBJbmNyZW1lbnQgfCBDeWNsZXM/IHwgQ2FjaGUgCist LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0KKyBiaWdpbnQgfCAgICAgMSB8ICAgICAgIDEgfCA5 MjIzMzcyMDM2ODU0Nzc1ODA3IHwgICAgICAgICAxIHwgbm8gICAgICB8ICAgICAxCisKK1xk KyBwdWJfdGVzdDEudGVzdF90YmwxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFRhYmxlICJwdWJfdGVzdDEudGVzdF90YmwxIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xs YXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwg RGVzY3JpcHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBh ICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxh aW4gICB8ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitJbmRl eGVzOgorICAgICJ0ZXN0X3RibDFfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChhKQorUHVi bGljYXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMiCisKK1xkKyBwdWJfdGVzdDIudGVz dF9zZXEyOworICAgICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2UgInB1Yl90ZXN0Mi50 ZXN0X3NlcTIiCisgIFR5cGUgIHwgU3RhcnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11bSAg ICAgICB8IEluY3JlbWVudCB8IEN5Y2xlcz8gfCBDYWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLQorIGJpZ2ludCB8ICAgICAxIHwgICAgICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4 MDcgfCAgICAgICAgIDEgfCBubyAgICAgIHwgICAgIDEKK1B1YmxpY2F0aW9uczoKKyAgICAi dGVzdHB1Yl9zY2hlbWFzIgorCitcZCsgcHViX3Rlc3QyLnRlc3RfdGJsMjsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUYWJsZSAicHViX3Rlc3QyLnRlc3RfdGJsMiIKKyBD b2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3Rv cmFnZSB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5v dCBudWxsIHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8 ICAgICAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVzdF90YmwyX3BrZXkiIFBSSU1B UlkgS0VZLCBidHJlZSAoYSkKKworLS0gYWRkIGEgZGlmZmVyZW50IHNjaGVtYSAobm90IGlu Y2x1ZGluZyB0aGUgYWxyZWFkeSBwdWJsaXNoZWQgc2VxdWVuY2VzKQorQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9zY2hlbWFzIEFERCBUQUJMRSBwdWJfdGVzdDIudGVzdF90YmwyOwor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFzIEFERCBTRVFVRU5DRSBwdWJfdGVz dDEudGVzdF9zZXExOworXGRScCsgdGVzdHB1Yl9zY2hlbWFzCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zY2hl bWFzCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1 ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1 ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgorVGFibGVzOgorICAgICJw dWJfdGVzdDIudGVzdF90YmwyIgorVGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rl c3QxIgorU2VxdWVuY2VzOgorICAgICJwdWJfdGVzdDEudGVzdF9zZXExIgorU2VxdWVuY2Vz IGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QyIgorCitcZCsgcHViX3Rlc3QxLnRlc3Rf c2VxMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFNlcXVlbmNlICJwdWJfdGVzdDEudGVz dF9zZXExIgorICBUeXBlICB8IFN0YXJ0IHwgTWluaW11bSB8ICAgICAgIE1heGltdW0gICAg ICAgfCBJbmNyZW1lbnQgfCBDeWNsZXM/IHwgQ2FjaGUgCistLS0tLS0tLSstLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0KKyBiaWdpbnQgfCAgICAgMSB8ICAgICAgIDEgfCA5MjIzMzcyMDM2ODU0Nzc1ODA3 IHwgICAgICAgICAxIHwgbm8gICAgICB8ICAgICAxCitQdWJsaWNhdGlvbnM6CisgICAgInRl c3RwdWJfc2NoZW1hcyIKKworXGQrIHB1Yl90ZXN0MS50ZXN0X3RibDE7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVGFibGUgInB1Yl90ZXN0MS50ZXN0X3RibDEiCisgQ29s dW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCB8IFN0b3Jh Z2UgfCBTdGF0cyB0YXJnZXQgfCBEZXNjcmlwdGlvbiAKKy0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCBub3Qg bnVsbCB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCisgYiAgICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgICAgICAgICB8IHBsYWluICAgfCAg ICAgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlc3RfdGJsMV9wa2V5IiBQUklNQVJZ IEtFWSwgYnRyZWUgKGEpCitQdWJsaWNhdGlvbnM6CisgICAgInRlc3RwdWJfc2NoZW1hcyIK KworXGQrIHB1Yl90ZXN0Mi50ZXN0X3NlcTI7CisgICAgICAgICAgICAgICAgICAgICAgICBT ZXF1ZW5jZSAicHViX3Rlc3QyLnRlc3Rfc2VxMiIKKyAgVHlwZSAgfCBTdGFydCB8IE1pbmlt dW0gfCAgICAgICBNYXhpbXVtICAgICAgIHwgSW5jcmVtZW50IHwgQ3ljbGVzPyB8IENhY2hl IAorLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tCisgYmlnaW50IHwgICAgIDEgfCAgICAgICAx IHwgOTIyMzM3MjAzNjg1NDc3NTgwNyB8ICAgICAgICAgMSB8IG5vICAgICAgfCAgICAgMQor UHVibGljYXRpb25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMiCisKK1xkKyBwdWJfdGVzdDIu dGVzdF90YmwyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJf dGVzdDIudGVzdF90YmwyIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxs YWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3JpcHRpb24g CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAg ICAgICAgICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8 ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0 ZXN0X3RibDJfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChhKQorUHVibGljYXRpb25zOgor ICAgICJ0ZXN0cHViX3NjaGVtYXMiCisKKy0tIG5vdyBkcm9wIHRoZSBleHBsaWNpdGx5IGFk ZGVkIG9iamVjdHMgYWdhaW4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2NoZW1hcyBE Uk9QIFRBQkxFIHB1Yl90ZXN0Mi50ZXN0X3RibDI7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX3NjaGVtYXMgRFJPUCBTRVFVRU5DRSBwdWJfdGVzdDEudGVzdF9zZXExOworXGRScCsg dGVzdHB1Yl9zY2hlbWFzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9zY2hlbWFzCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgdCAgICAgICAgIHwgZgorVGFibGVzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3Qx IgorU2VxdWVuY2VzIGZyb20gc2NoZW1hczoKKyAgICAicHViX3Rlc3QyIgorCitcZCsgcHVi X3Rlc3QxLnRlc3Rfc2VxMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFNlcXVlbmNlICJw dWJfdGVzdDEudGVzdF9zZXExIgorICBUeXBlICB8IFN0YXJ0IHwgTWluaW11bSB8ICAgICAg IE1heGltdW0gICAgICAgfCBJbmNyZW1lbnQgfCBDeWNsZXM/IHwgQ2FjaGUgCistLS0tLS0t LSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0KKyBiaWdpbnQgfCAgICAgMSB8ICAgICAgIDEgfCA5MjIzMzcy MDM2ODU0Nzc1ODA3IHwgICAgICAgICAxIHwgbm8gICAgICB8ICAgICAxCisKK1xkKyBwdWJf dGVzdDEudGVzdF90YmwxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxl ICJwdWJfdGVzdDEudGVzdF90YmwxIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24g fCBOdWxsYWJsZSB8IERlZmF1bHQgfCBTdG9yYWdlIHwgU3RhdHMgdGFyZ2V0IHwgRGVzY3Jp cHRpb24gCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyBhICAgICAg fCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAgICAgICAgIHwgcGxhaW4gICB8 ICAgICAgICAgICAgICB8IAorIGIgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAg ICAgICB8ICAgICAgICAgfCBwbGFpbiAgIHwgICAgICAgICAgICAgIHwgCitJbmRleGVzOgor ICAgICJ0ZXN0X3RibDFfcGtleSIgUFJJTUFSWSBLRVksIGJ0cmVlIChhKQorUHVibGljYXRp b25zOgorICAgICJ0ZXN0cHViX3NjaGVtYXMiCisKK1xkKyBwdWJfdGVzdDIudGVzdF9zZXEy OworICAgICAgICAgICAgICAgICAgICAgICAgU2VxdWVuY2UgInB1Yl90ZXN0Mi50ZXN0X3Nl cTIiCisgIFR5cGUgIHwgU3RhcnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11bSAgICAgICB8 IEluY3JlbWVudCB8IEN5Y2xlcz8gfCBDYWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LQorIGJpZ2ludCB8ICAgICAxIHwgICAgICAgMSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAg ICAgICAgIDEgfCBubyAgICAgIHwgICAgIDEKK1B1YmxpY2F0aW9uczoKKyAgICAidGVzdHB1 Yl9zY2hlbWFzIgorCitcZCsgcHViX3Rlc3QyLnRlc3RfdGJsMjsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBUYWJsZSAicHViX3Rlc3QyLnRlc3RfdGJsMiIKKyBDb2x1bW4g fCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IHwgU3RvcmFnZSB8 IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8IG5vdCBudWxs IHwgICAgICAgICB8IHBsYWluICAgfCAgICAgICAgICAgICAgfCAKKyBiICAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAgICAgICAgIHwgcGxhaW4gICB8ICAgICAg ICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVzdF90YmwyX3BrZXkiIFBSSU1BUlkgS0VZ LCBidHJlZSAoYSkKKworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXM7CitEUk9Q IFRBQkxFIHB1Yl90ZXN0MS50ZXN0X3RibDEsIHB1Yl90ZXN0Mi50ZXN0X3RibDI7CitEUk9Q IFNFUVVFTkNFIHB1Yl90ZXN0MS50ZXN0X3NlcTEsIHB1Yl90ZXN0Mi50ZXN0X3NlcTI7CitE Uk9QIFNDSEVNQSBwdWJfdGVzdDEsIHB1Yl90ZXN0MjsKIC0tIFRlc3RzIGZvciBwYXJ0aXRp b25lZCB0YWJsZXMKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnBhcnRlZDsKQEAgLTI0NSwxMCArNzQ5LDEwIEBA IFVQREFURSB0ZXN0cHViX3BhcnRlZDEgU0VUIGEgPSAxOwogLS0gb25seSBwYXJlbnQgaXMg bGlzdGVkIGFzIGJlaW5nIGluIHB1YmxpY2F0aW9uLCBub3QgdGhlIHBhcnRpdGlvbgogQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQgQUREIFRBQkxFIHRlc3RwdWJfcGFy dGVkOwogXGRScCsgdGVzdHB1Yl9mb3JwYXJ0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnBhcnRlZAotICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf Zm9ycGFydGVkCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFs bCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzOgog ICAgICJwdWJsaWMudGVzdHB1Yl9wYXJ0ZWQiCiAKQEAgLTI2MywxMCArNzY3LDEwIEBAIEFM VEVSIFRBQkxFIHRlc3RwdWJfcGFydGVkIERFVEFDSCBQQVJUSVRJT04gdGVzdHB1Yl9wYXJ0 ZWQxOwogVVBEQVRFIHRlc3RwdWJfcGFydGVkMSBTRVQgYSA9IDE7CiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2ZvcnBhcnRlZCBTRVQgKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290 ID0gdHJ1ZSk7CiBcZFJwKyB0ZXN0cHViX2ZvcnBhcnRlZAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCi0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9mb3JwYXJ0ZWQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCB0CiBUYWJs ZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3BhcnRlZCIKIApAQCAtMjk1LDEwICs3OTksMTAg QEAgU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWI1IEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIHRlc3RwdWJfcmZfdGJs MiBXSEVSRSAoYyA8PiAndGVzdCcgQU5EIGQgPCA1KSBXSVRIIChwdWJsaXNoID0gJ2luc2Vy dCcpOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWI1Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQot ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8 IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICAgfCBm CiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAgICAgInB1YmxpYy50 ZXN0cHViX3JmX3RibDIiIFdIRVJFICgoYyA8PiAndGVzdCc6OnRleHQpIEFORCAoZCA8IDUp KQpAQCAtMzExLDEwICs4MTUsMTAgQEAgVGFibGVzOgogCiBBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViNSBBREQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlID4gMTAwMCBBTkQg ZSA8IDIwMDApOwogXGRScCsgdGVzdHB1YjUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1Ci0gICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2Vz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2Vz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAg ICAgICB8IGYgICAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGlj LnRlc3RwdWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMiIgV0hFUkUg KChjIDw+ICd0ZXN0Jzo6dGV4dCkgQU5EIChkIDwgNSkpCkBAIC0zMzAsMTAgKzgzNCwxMCBA QCBQdWJsaWNhdGlvbnM6CiAKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IERST1AgVEFC TEUgdGVzdHB1Yl9yZl90YmwyOwogXGRScCsgdGVzdHB1YjUKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1Ci0gICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwg c2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg U2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAg ICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAg ICAicHVibGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJs MyIgV0hFUkUgKChlID4gMTAwMCkgQU5EIChlIDwgMjAwMCkpCkBAIC0zNDEsMTAgKzg0NSwx MCBAQCBUYWJsZXM6CiAtLSByZW1vdmUgdGVzdHB1Yl9yZl90YmwxIGFuZCBhZGQgdGVzdHB1 Yl9yZl90YmwzIGFnYWluIChhbm90aGVyIFdIRVJFIGV4cHJlc3Npb24pCiBBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViNSBTRVQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlID4g MzAwIEFORCBlIDwgNTAwKTsKIFxkUnArIHRlc3RwdWI1Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQotICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNl cXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNl cXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAg ICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAg InB1YmxpYy50ZXN0cHViX3JmX3RibDMiIFdIRVJFICgoZSA+IDMwMCkgQU5EIChlIDwgNTAw KSkKIApAQCAtMzc3LDEwICs4ODEsMTAgQEAgU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAn RVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc3ludGF4MSBGT1IgVEFCTEUg dGVzdHB1Yl9yZl90YmwxLCBPTkxZIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA8IDk5OSkg V0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7 CiBcZFJwKyB0ZXN0cHViX3N5bnRheDEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1Yl9zeW50YXgxCi0gICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc3ludGF4 MQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVu Y2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVu Y2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwg ZiAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVi bGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMyIgV0hF UkUgKGUgPCA5OTkpCkBAIC0zOTAsMTAgKzg5NCwxMCBAQCBTRVQgY2xpZW50X21pbl9tZXNz YWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgyIEZP UiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIHRlc3RwdWJfcmZfc2NoZW1hMS50ZXN0cHViX3Jm X3RibDUgV0hFUkUgKGggPCA5OTkpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1Yl9zeW50YXgyCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc3ludGF4Mgot ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8 IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViX3N5bnRheDIKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRl cyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICAg fCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAgICAgInRlc3Rw dWJfcmZfc2NoZW1hMS50ZXN0cHViX3JmX3RibDUiIFdIRVJFIChoIDwgOTk5KQpAQCAtNTA4 LDEwICsxMDEyLDEwIEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgVEFCTEVT IElOIFNDSEVNQSB0ZXN0cHViX3JmX3NjaGVtYTI7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViNiBTRVQgVEFCTEVTIElOIFNDSEVNQSB0ZXN0cHViX3JmX3NjaGVtYTIsIFRBQkxFIHRl c3RwdWJfcmZfc2NoZW1hMi50ZXN0cHViX3JmX3RibDYgV0hFUkUgKGkgPCA5OSk7CiBSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjYKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI2Ci0gICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViNgorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBB bGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoK ICAgICAidGVzdHB1Yl9yZl9zY2hlbWEyLnRlc3RwdWJfcmZfdGJsNiIgV0hFUkUgKGkgPCA5 OSkKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBAIC03MjUsMTAgKzEyMjksMTAgQEAgQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfdGFibGVfaW5zIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0 LCB0cnVuY2F0ZScpOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfdGFibGVfaW5zIEFERCBUQUJMRSB0ZXN0cHViX3RibDUgKGEpOwkJ LS0gb2sKIFxkUnArIHRlc3RwdWJfdGFibGVfaW5zCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl90YWJsZV9pbnMKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi X3RhYmxlX2lucworICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBB bGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCBm ICAgICAgIHwgZiAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoK ICAgICAicHVibGljLnRlc3RwdWJfdGJsNSIgKGEpCiAKQEAgLTkwMiwxMCArMTQwNiwxMCBA QCBDUkVBVEUgVEFCTEUgdGVzdHB1Yl90YmxfYm90aF9maWx0ZXJzIChhIGludCwgYiBpbnQs IGMgaW50LCBQUklNQVJZIEtFWSAoYSxjKSk7CiBBTFRFUiBUQUJMRSB0ZXN0cHViX3RibF9i b3RoX2ZpbHRlcnMgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCB0ZXN0cHViX3RibF9i b3RoX2ZpbHRlcnNfcGtleTsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfYm90aF9maWx0 ZXJzIEFERCBUQUJMRSB0ZXN0cHViX3RibF9ib3RoX2ZpbHRlcnMgKGEsYykgV0hFUkUgKGMg IT0gMSk7CiBcZFJwKyB0ZXN0cHViX2JvdGhfZmlsdGVycwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9ib3RoX2ZpbHRlcnMKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWJfYm90aF9maWx0ZXJzCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl90YmxfYm90aF9maWx0ZXJzIiAoYSwgYykg V0hFUkUgKGMgPD4gMSkKIApAQCAtMTExMCwxMCArMTYxNCwxMCBAQCBFUlJPUjogIHJlbGF0 aW9uICJ0ZXN0cHViX3RibDEiIGlzIGFscmVhZHkgbWVtYmVyIG9mIHB1YmxpY2F0aW9uICJ0 ZXN0cHViX2ZvcnRibAogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGJsIEZPUiBU QUJMRSB0ZXN0cHViX3RibDE7CiBFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnRi bCIgYWxyZWFkeSBleGlzdHMKIFxkUnArIHRlc3RwdWJfZm9ydGJsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRibAotICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1Yl9mb3J0YmwKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBU YWJsZXM6CiAgICAgInB1Yl90ZXN0LnRlc3RwdWJfbm9wayIKICAgICAicHVibGljLnRlc3Rw dWJfdGJsMSIKQEAgLTExNTMsMTAgKzE2NTcsMTAgQEAgTm90LW51bGwgY29uc3RyYWludHM6 CiAgICAgInRlc3RwdWJfdGJsMV9pZF9ub3RfbnVsbCIgTk9UIE5VTEwgImlkIgogCiBcZFJw KyB0ZXN0cHViX2RlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9kZWZhdWx0Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8 IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVsdAorICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IGYgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3Qu dGVzdHB1Yl9ub3BrIgogICAgICJwdWJsaWMudGVzdHB1Yl90YmwxIgpAQCAtMTIzNiwxMCAr MTc0MCwxMCBAQCBSRVZPS0UgQ1JFQVRFIE9OIERBVEFCQVNFIHJlZ3Jlc3Npb24gRlJPTSBy ZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwogRFJPUCBUQUJMRSB0ZXN0cHViX3BhcnRlZDsK IERST1AgVEFCTEUgdGVzdHB1Yl90YmwxOwogXGRScCsgdGVzdHB1Yl9kZWZhdWx0Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZGVmYXVs dAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAg ICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAg ICAgfCBmCiAoMSByb3cpCiAKIC0tIGZhaWwgLSBtdXN0IGJlIG93bmVyIG9mIHB1YmxpY2F0 aW9uCkBAIC0xMjQ5LDIwICsxNzUzLDIwIEBAIEVSUk9SOiAgbXVzdCBiZSBvd25lciBvZiBw dWJsaWNhdGlvbiB0ZXN0cHViX2RlZmF1bHQKIFJFU0VUIFJPTEU7CiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2RlZmF1bHQgUkVOQU1FIFRPIHRlc3RwdWJfZm9vOwogXGRScCB0ZXN0 cHViX2ZvbwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2YgcHVibGljYXRpb25zCi0gICAgTmFtZSAgICAgfCAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tCi0gdGVzdHB1Yl9mb28gfCByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAgICBOYW1lICAgICB8ICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwg VmlhIHJvb3QgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHRlc3RwdWJfZm9vIHwg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCB0ICAgICAgICAg fCBmCiAoMSByb3cpCiAKIC0tIHJlbmFtZSBiYWNrIHRvIGtlZXAgdGhlIHJlc3Qgc2ltcGxl CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvbyBSRU5BTUUgVE8gdGVzdHB1Yl9kZWZh dWx0OwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0IE9XTkVSIFRPIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlcjI7CiBcZFJwIHRlc3RwdWJfZGVmYXVsdAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlv bnMKLSAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gdGVzdHB1Yl9kZWZhdWx0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyMiB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAg ICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCisgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVu Y2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVu Y2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgdGVz dHB1Yl9kZWZhdWx0IHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMiB8IGYgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAg ICAgIHwgdCAgICAgICAgIHwgZgogKDEgcm93KQogCiAtLSBhZGRpbmcgc2NoZW1hcyBhbmQg dGFibGVzCkBAIC0xMjc4LDE5ICsxNzgyLDE5IEBAIENSRUFURSBUQUJMRSAiQ1VSUkVOVF9T Q0hFTUEiLiJDVVJSRU5UX1NDSEVNQSIoaWQgaW50KTsKIFNFVCBjbGllbnRfbWluX21lc3Nh Z2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEg Rk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1YjFfZm9yc2No ZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rl c3QxIgogCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjJfZm9yc2NoZW1hIEZPUiBUQUJM RVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwgcHViX3Rlc3QyLCBwdWJfdGVzdDM7CiBcZFJwKyB0 ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNl cyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFz OgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTEzMDQsNDQgKzE4MDgs NDQgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2X2ZvcnNjaGVtYSBGT1IgVEFCTEVT IElOIFNDSEVNQSAiQ1VSUkVOVF9TQ0hFTUEiLCBDVVIKIENSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViX2ZvcnRhYmxlIEZPUiBUQUJMRSAiQ1VSUkVOVF9TQ0hFTUEiLiJDVVJSRU5UX1ND SEVNQSI7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjNfZm9y c2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHVi bGljIgogCiBcZFJwKyB0ZXN0cHViNF9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNF9mb3JzY2hlbWEKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViNF9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogICAgICJDVVJSRU5UX1NDSEVNQSIKIAogXGRScCsgdGVzdHB1 YjVfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjVfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjVfZm9yc2NoZW1hCisgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBW aWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAg ICAiQ1VSUkVOVF9TQ0hFTUEiCiAgICAgInB1YmxpYyIKIAogXGRScCsgdGVzdHB1YjZfZm9y c2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjZfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjZfZm9yc2NoZW1hCisgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9v dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAiQ1VS UkVOVF9TQ0hFTUEiCiAgICAgInB1YmxpYyIKIAogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2Zv cnRhYmxlCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0 ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgIkNVUlJFTlRfU0NIRU1BLkNVUlJFTlRfU0NI RU1BIgogCkBAIC0xMzc1LDEwICsxODc5LDEwIEBAIEVSUk9SOiAgc2NoZW1hICJ0ZXN0cHVi X3ZpZXciIGRvZXMgbm90IGV4aXN0CiAtLSBkcm9wcGluZyB0aGUgc2NoZW1hIHNob3VsZCBy ZWZsZWN0IHRoZSBjaGFuZ2UgaW4gcHVibGljYXRpb24KIERST1AgU0NIRU1BIHB1Yl90ZXN0 MzsKIFxkUnArIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIy X2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBB bGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgU2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBm cm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTM4 NiwyMCArMTg5MCwyMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gcmVuYW1pbmcgdGhl IHNjaGVtYSBzaG91bGQgcmVmbGVjdCB0aGUgY2hhbmdlIGluIHB1YmxpY2F0aW9uCiBBTFRF UiBTQ0hFTUEgcHViX3Rlc3QxIFJFTkFNRSB0byBwdWJfdGVzdDFfcmVuYW1lZDsKIFxkUnAr IHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNjaGVt YQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVu Y2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVu Y2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVt YXM6CiAgICAgInB1Yl90ZXN0MV9yZW5hbWVkIgogICAgICJwdWJfdGVzdDIiCiAKIEFMVEVS IFNDSEVNQSBwdWJfdGVzdDFfcmVuYW1lZCBSRU5BTUUgdG8gcHViX3Rlc3QxOwogXGRScCsg dGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1h CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5j ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5j ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1h czoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDA3LDEwICsxOTEx LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBhbHRlciBwdWJsaWNhdGlvbiBhZGQg c2NoZW1hCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRBQkxF UyBJTiBTQ0hFTUEgcHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2No ZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAg ICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAg ICJwdWJfdGVzdDIiCkBAIC0xNDE5LDEwICsxOTIzLDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVt YXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRBQkxFUyBJ TiBTQ0hFTUEgbm9uX2V4aXN0ZW50X3NjaGVtYTsKIEVSUk9SOiAgc2NoZW1hICJub25fZXhp c3RlbnRfc2NoZW1hIiBkb2VzIG5vdCBleGlzdAogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1h Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFf Zm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBk YXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBm ICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3Qx IgogICAgICJwdWJfdGVzdDIiCkBAIC0xNDMxLDEwICsxOTM1LDEwIEBAIFRhYmxlcyBmcm9t IHNjaGVtYXM6CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgQUREIFRB QkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogRVJST1I6ICBzY2hlbWEgInB1Yl90ZXN0MSIg aXMgYWxyZWFkeSBtZW1iZXIgb2YgcHVibGljYXRpb24gInRlc3RwdWIxX2ZvcnNjaGVtYSIK IFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2Zv cnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwg c2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg U2VxdWVuY2VzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9t IHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtMTQ0Miwx MCArMTk0NiwxMCBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgogLS0gYWx0ZXIgcHVibGljYXRp b24gZHJvcCBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBE Uk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9yc2No ZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rl c3QxIgogCkBAIC0xNDUzLDEwICsxOTU3LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiBB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgRFJPUCBUQUJMRVMgSU4gU0NI RU1BIHB1Yl90ZXN0MjsKIEVSUk9SOiAgdGFibGVzIGZyb20gc2NoZW1hICJwdWJfdGVzdDIi IGFyZSBub3QgcGFydCBvZiB0aGUgcHVibGljYXRpb24KIFxkUnArIHRlc3RwdWIxX2ZvcnNj aGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90 ZXN0MSIKIApAQCAtMTQ2NCwyOSArMTk2OCwyOSBAQCBUYWJsZXMgZnJvbSBzY2hlbWFzOgog QUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1AgVEFCTEVTIElOIFND SEVNQSBub25fZXhpc3RlbnRfc2NoZW1hOwogRVJST1I6ICBzY2hlbWEgIm5vbl9leGlzdGVu dF9zY2hlbWEiIGRvZXMgbm90IGV4aXN0CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3Jz Y2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAg ICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0 ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAK IC0tIGRyb3AgYWxsIHNjaGVtYXMKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNj aGVtYSBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1YjFf Zm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEg cm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogKDEgcm93KQogCiAtLSBhbHRlciBwdWJsaWNh dGlvbiBzZXQgbXVsdGlwbGUgc2NoZW1hCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViMV9m b3JzY2hlbWEgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDI7CiBc ZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3Jz Y2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNl cXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFNl cXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBz Y2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE0OTUsMTAg KzE5OTksMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWIxX2ZvcnNjaGVtYSBTRVQgVEFCTEVTIElOIFNDSEVNQSBub25fZXhpc3RlbnRfc2No ZW1hOwogRVJST1I6ICBzY2hlbWEgIm5vbl9leGlzdGVudF9zY2hlbWEiIGRvZXMgbm90IGV4 aXN0CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHVi MV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg QWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFNlcXVlbmNlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCB0ICAgICAgICAgfCBmCiBUYWJsZXMg ZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTE1 MDcsMTAgKzIwMTEsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIHJlbW92aW5nIHRo ZSBkdXBsaWNhdGUgc2NoZW1hcwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2No ZW1hIFNFVCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MSwgcHViX3Rlc3QxOwogXGRScCsg dGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRl cyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1h CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5j ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5j ZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZyb20gc2NoZW1h czoKICAgICAicHViX3Rlc3QxIgogCkBAIC0xNTg5LDE4ICsyMDkzLDE4IEBAIFNFVCBjbGll bnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi M19mb3JzY2hlbWE7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1 YjNfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCisgICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBW aWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogKDEgcm93KQogCiBBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViM19mb3JzY2hlbWEgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Qx OwogXGRScCsgdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8 IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNf Zm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFs bCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgogVGFibGVzIGZy b20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCkBAIC0xNjEwLDIwICsyMTE0LDIwIEBA IENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0YWJsZSBGT1IgVEFC TEVTIElOIFNDSEVNQSBwdWJfdGVzdDEsIFRBCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9mb3J0YWJsZV9mb3JzY2hlbWEgRk9SIFRBQkxFIHB1Yl90ZXN0Mi50YmwxLCBUQUJMRVMg SU4gU0NIRU1BIHB1Yl90ZXN0MTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJw KyB0ZXN0cHViX2ZvcnNjaGVtYV9mb3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWFfZm9ydGFibGUKLSAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJf Zm9yc2NoZW1hX2ZvcnRhYmxlCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBTZXF1ZW5jZXMgfCBWaWEgcm9vdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgIHwgZgog VGFibGVzOgogICAgICJwdWJfdGVzdDIudGJsMSIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAg ICAgInB1Yl90ZXN0MSIKIAogXGRScCsgdGVzdHB1Yl9mb3J0YWJsZV9mb3JzY2hlbWEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGVf Zm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYQorICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgU2VxdWVuY2VzIHwgVmlhIHJvb3Qg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IHQgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QyLnRibDEiCiBU YWJsZXMgZnJvbSBzY2hlbWFzOgpAQCAtMTY2Nyw0MCArMjE3MSw4NSBAQCBDUkVBVEUgU0NI RU1BIHNjaDE7CiBDUkVBVEUgU0NIRU1BIHNjaDI7CiBDUkVBVEUgVEFCTEUgc2NoMS50Ymwx IChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOwogQ1JFQVRFIFRBQkxFIHNjaDIudGJs MV9wYXJ0MSBQQVJUSVRJT04gT0Ygc2NoMS50YmwxIEZPUiBWQUxVRVMgRlJPTSAoMSkgdG8g KDEwKTsKK0NSRUFURSBTRVFVRU5DRSBzY2gxLnNlcTE7CitDUkVBVEUgU0VRVUVOQ0Ugc2No Mi5zZXEyOwogLS0gU2NoZW1hIHB1YmxpY2F0aW9uIHRoYXQgZG9lcyBub3QgaW5jbHVkZSB0 aGUgc2NoZW1hIHRoYXQgaGFzIHRoZSBwYXJlbnQgdGFibGUKIENSRUFURSBQVUJMSUNBVElP TiBwdWIgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgc2NoMiBXSVRIIChQVUJMSVNIX1ZJQV9QQVJU SVRJT05fUk9PVD0xKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHB1YiBBREQgU0VRVUVOQ0VTIElO IFNDSEVNQSBzY2gyOwogU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CiAg cHVibmFtZSB8IHNjaGVtYW5hbWUgfCB0YWJsZW5hbWUgIHwgYXR0bmFtZXMgfCByb3dmaWx0 ZXIgCiAtLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tCiAgcHViICAgICB8IHNjaDIgICAgICAgfCB0YmwxX3BhcnQxIHwge2F9ICAg ICAgfCAKICgxIHJvdykKIAorU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5j ZXM7CisgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCBzZXF1ZW5jZW5hbWUgCistLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgcHViICAgICB8IHNjaDIgICAgICAgfCBz ZXEyCisoMSByb3cpCisKIERST1AgUFVCTElDQVRJT04gcHViOwogLS0gVGFibGUgcHVibGlj YXRpb24gdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBwYXJlbnQgdGFibGUKIENSRUFURSBQ VUJMSUNBVElPTiBwdWIgRk9SIFRBQkxFIHNjaDIudGJsMV9wYXJ0MSBXSVRIIChQVUJMSVNI X1ZJQV9QQVJUSVRJT05fUk9PVD0xKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHB1YiBBREQgU0VR VUVOQ0Ugc2NoMi5zZXEyOwogU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7 CiAgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCB0YWJsZW5hbWUgIHwgYXR0bmFtZXMgfCByb3dm aWx0ZXIgCiAtLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCiAgcHViICAgICB8IHNjaDIgICAgICAgfCB0YmwxX3BhcnQxIHwge2F9 ICAgICAgfCAKICgxIHJvdykKIAorU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1 ZW5jZXM7CisgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCBzZXF1ZW5jZW5hbWUgCistLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgcHViICAgICB8IHNjaDIgICAgICAg fCBzZXEyCisoMSByb3cpCisKIC0tIFRhYmxlIHB1YmxpY2F0aW9uIHRoYXQgaW5jbHVkZXMg Ym90aCB0aGUgcGFyZW50IHRhYmxlIGFuZCB0aGUgY2hpbGQgdGFibGUKIEFMVEVSIFBVQkxJ Q0FUSU9OIHB1YiBBREQgVEFCTEUgc2NoMS50YmwxOworQUxURVIgUFVCTElDQVRJT04gcHVi IEFERCBTRVFVRU5DRSBzY2gxLnNlcTE7CiBTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9u X3RhYmxlczsKICBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFtZSB8IGF0dG5hbWVz IHwgcm93ZmlsdGVyIAogLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tCiAgcHViICAgICB8IHNjaDEgICAgICAgfCB0YmwxICAgICAg fCB7YX0gICAgICB8IAogKDEgcm93KQogCitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9u X3NlcXVlbmNlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNlcXVlbmNlbmFtZSAKKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWIgICAgIHwgc2NoMSAg ICAgICB8IHNlcTEKKyBwdWIgICAgIHwgc2NoMiAgICAgICB8IHNlcTIKKygyIHJvd3MpCisK IERST1AgUFVCTElDQVRJT04gcHViOwogLS0gU2NoZW1hIHB1YmxpY2F0aW9uIHRoYXQgZG9l cyBub3QgaW5jbHVkZSB0aGUgc2NoZW1hIHRoYXQgaGFzIHRoZSBwYXJlbnQgdGFibGUKIENS RUFURSBQVUJMSUNBVElPTiBwdWIgRk9SIFRBQkxFUyBJTiBTQ0hFTUEgc2NoMiBXSVRIIChQ VUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0wKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHB1YiBB REQgU0VRVUVOQ0Ugc2NoMS5zZXExOwogU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90 YWJsZXM7CiAgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCB0YWJsZW5hbWUgIHwgYXR0bmFtZXMg fCByb3dmaWx0ZXIgCiAtLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tCiAgcHViICAgICB8IHNjaDIgICAgICAgfCB0YmwxX3BhcnQx IHwge2F9ICAgICAgfCAKICgxIHJvdykKIAorU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlv bl9zZXF1ZW5jZXM7CisgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCBzZXF1ZW5jZW5hbWUgCist LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgcHViICAgICB8IHNjaDEg ICAgICAgfCBzZXExCisoMSByb3cpCisKK0RST1AgUFVCTElDQVRJT04gcHViOworLS0gU2Vx dWVuY2UgcHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiBwdWIgRk9SIFNFUVVFTkNF IHNjaDIuc2VxMjsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOworIHB1 Ym5hbWUgfCBzY2hlbWFuYW1lIHwgdGFibGVuYW1lIHwgYXR0bmFtZXMgfCByb3dmaWx0ZXIg CistLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKygwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fc2VxdWVu Y2VzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgc2VxdWVuY2VuYW1lIAorLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHB1YiAgICAgfCBzY2gyICAgICAgIHwg c2VxMgorKDEgcm93KQorCiBEUk9QIFBVQkxJQ0FUSU9OIHB1YjsKIC0tIFRhYmxlIHB1Ymxp Y2F0aW9uIHRoYXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgcGFyZW50IHRhYmxlCiBDUkVBVEUg UFVCTElDQVRJT04gcHViIEZPUiBUQUJMRSBzY2gyLnRibDFfcGFydDEgV0lUSCAoUFVCTElT SF9WSUFfUEFSVElUSU9OX1JPT1Q9MCk7CkBAIC0xNzEwLDE0ICsyMjU5LDI2IEBAIFNFTEVD VCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOwogIHB1YiAgICAgfCBzY2gyICAgICAg IHwgdGJsMV9wYXJ0MSB8IHthfSAgICAgIHwgCiAoMSByb3cpCiAKK1NFTEVDVCAqIEZST00g cGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgc2Vx dWVuY2VuYW1lIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorKDAg cm93cykKKwogLS0gVGFibGUgcHVibGljYXRpb24gdGhhdCBpbmNsdWRlcyBib3RoIHRoZSBw YXJlbnQgdGFibGUgYW5kIHRoZSBjaGlsZCB0YWJsZQogQUxURVIgUFVCTElDQVRJT04gcHVi IEFERCBUQUJMRSBzY2gxLnRibDE7CitBTFRFUiBQVUJMSUNBVElPTiBwdWIgQUREIFNFUVVF TkNFUyBJTiBTQ0hFTUEgc2NoMjsKIFNFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFi bGVzOwogIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgdGFibGVuYW1lICB8IGF0dG5hbWVzIHwg cm93ZmlsdGVyIAogLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0tLQogIHB1YiAgICAgfCBzY2gyICAgICAgIHwgdGJsMV9wYXJ0MSB8 IHthfSAgICAgIHwgCiAoMSByb3cpCiAKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25f c2VxdWVuY2VzOworIHB1Ym5hbWUgfCBzY2hlbWFuYW1lIHwgc2VxdWVuY2VuYW1lIAorLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorIHB1YiAgICAgfCBzY2gyICAg ICAgIHwgc2VxMgorKDEgcm93KQorCiBEUk9QIFBVQkxJQ0FUSU9OIHB1YjsKIERST1AgVEFC TEUgc2NoMi50YmwxX3BhcnQxOwogRFJPUCBUQUJMRSBzY2gxLnRibDE7CkBAIC0xNzMzLDkg KzIyOTQsODEgQEAgU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CiAgcHVi ICAgICB8IHNjaDEgICAgICAgfCB0YmwxICAgICAgfCB7YX0gICAgICB8IAogKDEgcm93KQog CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKKyBwdWJuYW1lIHwg c2NoZW1hbmFtZSB8IHNlcXVlbmNlbmFtZSAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0KKygwIHJvd3MpCisKK0RST1AgUFVCTElDQVRJT04gcHViOworLS0gU2No ZW1hIHB1YmxpY2F0aW9uCitDUkVBVEUgUFVCTElDQVRJT04gcHViIEZPUiBTRVFVRU5DRSBz Y2gyLnNlcTI7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxlczsKKyBwdWJu YW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFtZSB8IGF0dG5hbWVzIHwgcm93ZmlsdGVyIAor LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNl czsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNlcXVlbmNlbmFtZSAKKy0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBwdWIgICAgIHwgc2NoMiAgICAgICB8IHNl cTIKKygxIHJvdykKKworRFJPUCBQVUJMSUNBVElPTiBwdWI7CistLSBTZXF1ZW5jZSBwdWJs aWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgU0VRVUVOQ0VTIElOIFNDSEVN QSBzY2gyOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CisgcHVibmFt ZSB8IHNjaGVtYW5hbWUgfCB0YWJsZW5hbWUgfCBhdHRuYW1lcyB8IHJvd2ZpbHRlciAKKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorKDAgcm93cykKKworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7 CisgcHVibmFtZSB8IHNjaGVtYW5hbWUgfCBzZXF1ZW5jZW5hbWUgCistLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgcHViICAgICB8IHNjaDIgICAgICAgfCBzZXEy CisoMSByb3cpCisKK0FMVEVSIFBVQkxJQ0FUSU9OIHB1YiBBREQgU0VRVUVOQ0Ugc2NoMS5z ZXExOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CisgcHVibmFtZSB8 IHNjaGVtYW5hbWUgfCB0YWJsZW5hbWUgfCBhdHRuYW1lcyB8IHJvd2ZpbHRlciAKKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor KDAgcm93cykKKworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7Cisg cHVibmFtZSB8IHNjaGVtYW5hbWUgfCBzZXF1ZW5jZW5hbWUgCistLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgcHViICAgICB8IHNjaDEgICAgICAgfCBzZXExCisg cHViICAgICB8IHNjaDIgICAgICAgfCBzZXEyCisoMiByb3dzKQorCitBTFRFUiBQVUJMSUNB VElPTiBwdWIgRFJPUCBTRVFVRU5DRSBzY2gxLnNlcTE7CitTRUxFQ1QgKiBGUk9NIHBnX3B1 YmxpY2F0aW9uX3RhYmxlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFtZSB8 IGF0dG5hbWVzIHwgcm93ZmlsdGVyIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHNl cXVlbmNlbmFtZSAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBw dWIgICAgIHwgc2NoMiAgICAgICB8IHNlcTIKKygxIHJvdykKKworQUxURVIgUFVCTElDQVRJ T04gcHViIEFERCBTRVFVRU5DRVMgSU4gU0NIRU1BIHNjaDE7CitTRUxFQ1QgKiBGUk9NIHBn X3B1YmxpY2F0aW9uX3RhYmxlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8IHRhYmxlbmFt ZSB8IGF0dG5hbWVzIHwgcm93ZmlsdGVyIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisoMCByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKKyBwdWJuYW1lIHwgc2NoZW1hbmFtZSB8 IHNlcXVlbmNlbmFtZSAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0K KyBwdWIgICAgIHwgc2NoMSAgICAgICB8IHNlcTEKKyBwdWIgICAgIHwgc2NoMiAgICAgICB8 IHNlcTIKKygyIHJvd3MpCisKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFBV QkxJQ0FUSU9OIHB1YjsKIERST1AgVEFCTEUgc2NoMS50YmwxOworRFJPUCBTRVFVRU5DRSBz Y2gxLnNlcTEsIHNjaDIuc2VxMjsKIERST1AgU0NIRU1BIHNjaDEgY2FzY2FkZTsKIERST1Ag U0NIRU1BIHNjaDIgY2FzY2FkZTsKIFJFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggMDUwNzAzOTNiOTkuLmM2MmRl YWQ5MmE3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTQ0MSw2 ICsxNDQxLDE0IEBAIHBnX3ByZXBhcmVkX3hhY3RzfCBTRUxFQ1QgcC50cmFuc2FjdGlvbiwK ICAgIEZST00gKChwZ19wcmVwYXJlZF94YWN0KCkgcCh0cmFuc2FjdGlvbiwgZ2lkLCBwcmVw YXJlZCwgb3duZXJpZCwgZGJpZCkKICAgICAgTEVGVCBKT0lOIHBnX2F1dGhpZCB1IE9OICgo cC5vd25lcmlkID0gdS5vaWQpKSkKICAgICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIGQgT04g KChwLmRiaWQgPSBkLm9pZCkpKTsKK3BnX3B1YmxpY2F0aW9uX3NlcXVlbmNlc3wgU0VMRUNU IHAucHVibmFtZSwKKyAgICBuLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKKyAgICBjLnJlbG5h bWUgQVMgc2VxdWVuY2VuYW1lCisgICBGUk9NIHBnX3B1YmxpY2F0aW9uIHAsCisgICAgTEFU RVJBTCBwZ19nZXRfcHVibGljYXRpb25fc2VxdWVuY2VzKChwLnB1Ym5hbWUpOjp0ZXh0KSBn cHMocmVsaWQpLAorICAgIChwZ19jbGFzcyBjCisgICAgIEpPSU4gcGdfbmFtZXNwYWNlIG4g T04gKChuLm9pZCA9IGMucmVsbmFtZXNwYWNlKSkpCisgIFdIRVJFIChjLm9pZCA9IGdwcy5y ZWxpZCk7CiBwZ19wdWJsaWNhdGlvbl90YWJsZXN8IFNFTEVDVCBwLnB1Ym5hbWUsCiAgICAg bi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCiAgICAgYy5yZWxuYW1lIEFTIHRhYmxlbmFtZSwK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29iamVjdF9hZGRyZXNzLnNxbCBi L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29iamVjdF9hZGRyZXNzLnNxbAppbmRleCAxYTZjNjFm NDlkNS4uNWM2Y2RlYjA1ZGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29i amVjdF9hZGRyZXNzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vYmplY3RfYWRk cmVzcy5zcWwKQEAgLTUwLDYgKzUwLDcgQEAgQ1JFQVRFIFRSQU5TRk9STSBGT1IgaW50IExB TkdVQUdFIFNRTCAoCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVB VEUgUFVCTElDQVRJT04gYWRkcl9wdWIgRk9SIFRBQkxFIGFkZHJfbnNwLmdlbnRhYmxlOwog Q1JFQVRFIFBVQkxJQ0FUSU9OIGFkZHJfcHViX3NjaGVtYSBGT1IgVEFCTEVTIElOIFNDSEVN QSBhZGRyX25zcDsKK0NSRUFURSBQVUJMSUNBVElPTiBhZGRyX3B1Yl9zY2hlbWEyIEZPUiBT RVFVRU5DRVMgSU4gU0NIRU1BIGFkZHJfbnNwOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdl czsKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc19hZGRyX3N1YiBDT05ORUNUSU9OICcn IFBVQkxJQ0FUSU9OIGJhciBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHNsb3RfbmFtZSA9IE5P TkUpOwogQ1JFQVRFIFNUQVRJU1RJQ1MgYWRkcl9uc3AuZ2VudGFibGVfc3RhdCBPTiBhLCBi IEZST00gYWRkcl9uc3AuZ2VudGFibGU7CkBAIC0yMDYsNyArMjA3LDggQEAgV0lUSCBvYmpl Y3RzICh0eXBlLCBuYW1lLCBhcmdzKSBBUyAoVkFMVUVTCiAgICAgKCd0cmFuc2Zvcm0nLCAn e2ludH0nLCAne3NxbH0nKSwKICAgICAoJ2FjY2VzcyBtZXRob2QnLCAne2J0cmVlfScsICd7 fScpLAogICAgICgncHVibGljYXRpb24nLCAne2FkZHJfcHVifScsICd7fScpLAotICAgICgn cHVibGljYXRpb24gbmFtZXNwYWNlJywgJ3thZGRyX25zcH0nLCAne2FkZHJfcHViX3NjaGVt YX0nKSwKKyAgICAoJ3B1YmxpY2F0aW9uIG5hbWVzcGFjZScsICd7YWRkcl9uc3B9JywgJ3th ZGRyX3B1Yl9zY2hlbWEsIHR9JyksCisgICAgKCdwdWJsaWNhdGlvbiBuYW1lc3BhY2UnLCAn e2FkZHJfbnNwfScsICd7YWRkcl9wdWJfc2NoZW1hMiwgc30nKSwKICAgICAoJ3B1YmxpY2F0 aW9uIHJlbGF0aW9uJywgJ3thZGRyX25zcCwgZ2VudGFibGV9JywgJ3thZGRyX3B1Yn0nKSwK ICAgICAoJ3N1YnNjcmlwdGlvbicsICd7cmVncmVzc19hZGRyX3N1Yn0nLCAne30nKSwKICAg ICAoJ3N0YXRpc3RpY3Mgb2JqZWN0JywgJ3thZGRyX25zcCwgZ2VudGFibGVfc3RhdH0nLCAn e30nKQpAQCAtMjI3LDYgKzIyOSw3IEBAIE9SREVSIEJZIGFkZHIxLmNsYXNzaWQsIGFkZHIx Lm9iamlkLCBhZGRyMS5vYmpzdWJpZDsKIERST1AgRk9SRUlHTiBEQVRBIFdSQVBQRVIgYWRk cl9mZHcgQ0FTQ0FERTsKIERST1AgUFVCTElDQVRJT04gYWRkcl9wdWI7CiBEUk9QIFBVQkxJ Q0FUSU9OIGFkZHJfcHViX3NjaGVtYTsKK0RST1AgUFVCTElDQVRJT04gYWRkcl9wdWJfc2No ZW1hMjsKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfYWRkcl9zdWI7CiAKIERST1AgU0NI RU1BIGFkZHJfbnNwIENBU0NBREU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5z cWwKaW5kZXggZDUwNTFhNWU3NDYuLjAxNmI1OGM2N2VjIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHVibGljYXRpb24uc3FsCkBAIC0yNyw3ICsyNyw3IEBAIENSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX3h4eCBXSVRIIChwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9ICd0cnVl JywgcHVibGlzCiAKIFxkUnAKIAotQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9kZWZhdWx0 IFNFVCAocHVibGlzaCA9ICdpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlJyk7CitBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2RlZmF1bHQgU0VUIChwdWJsaXNoID0gJ2luc2VydCwgdXBkYXRl LCBkZWxldGUsIHNlcXVlbmNlJyk7CiAKIFxkUnAKIApAQCAtNDYsNiArNDYsOCBAQCBBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlcyBTRVQgKHB1Ymxpc2ggPSAnaW5z ZXJ0LCB1cGRhdGUnKTsKIENSRUFURSBUQUJMRSB0ZXN0cHViX3RibDIgKGlkIHNlcmlhbCBw cmltYXJ5IGtleSwgZGF0YSB0ZXh0KTsKIC0tIGZhaWwgLSBjYW4ndCBhZGQgdG8gZm9yIGFs bCB0YWJsZXMgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxs dGFibGVzIEFERCBUQUJMRSB0ZXN0cHViX3RibDI7CistLSBmYWlsIC0gY2FuJ3QgYWRkIGEg dGFibGUgdXNpbmcgQUREIFNFUVVFTkNFIGNvbW1hbmQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9yYWxsdGFibGVzIEFERCBTRVFVRU5DRSB0ZXN0cHViX3RibDI7CiAtLSBmYWls IC0gY2FuJ3QgZHJvcCBmcm9tIGFsbCB0YWJsZXMgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzIERST1AgVEFCTEUgdGVzdHB1Yl90YmwyOwog LS0gZmFpbCAtIGNhbid0IGFkZCB0byBmb3IgYWxsIHRhYmxlcyBwdWJsaWNhdGlvbgpAQCAt MTE3LDYgKzExOSwxODggQEAgUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgVEFC TEUgdGVzdHB1Yl90YmwzLCB0ZXN0cHViX3RibDNhOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0 cHViMywgdGVzdHB1YjQ7CiAKKy0tLSBhZGRpbmcgc2VxdWVuY2VzCitDUkVBVEUgU0VRVUVO Q0UgdGVzdHB1Yl9zZXEwOworQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJfc2Vx MTsKKworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIEZPUiBBTEwgU0VRVUVOQ0VTIFdJVEgg KHB1Ymxpc2ggPSAnc2VxdWVuY2UnKTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyBTRVQgKHB1Ymxpc2gg PSAnaW5zZXJ0LCBzZXF1ZW5jZScpOworCitDUkVBVEUgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEy OworLS0gZmFpbCAtIGNhbid0IGFkZCB0byBmb3IgYWxsIHNlcXVlbmNlcyBwdWJsaWNhdGlv bgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1ZW5jZXMgQUREIFNFUVVF TkNFIHRlc3RwdWJfc2VxMjsKKy0tIGZhaWwgLSBjYW4ndCBkcm9wIGZyb20gYWxsIHNlcXVl bmNlcyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxzZXF1 ZW5jZXMgRFJPUCBTRVFVRU5DRSB0ZXN0cHViX3NlcTI7CistLSBmYWlsIC0gY2FuJ3QgYWRk IHRvIGZvciBhbGwgc2VxdWVuY2VzIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX2ZvcmFsbHNlcXVlbmNlcyBTRVQgU0VRVUVOQ0UgcHViX3Rlc3QudGVzdHB1Yl9z ZXExOworCistLSBmYWlsIC0gY2FuJ3QgYWRkIHNjaGVtYSB0byAnRk9SIEFMTCBTRVFVRU5D RVMnIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHNlcXVl bmNlcyBBREQgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVzdDsKKy0tIGZhaWwgLSBjYW4n dCBkcm9wIHNjaGVtYSBmcm9tICdGT1IgQUxMIFNFUVVFTkNFUycgcHVibGljYXRpb24KK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzIERST1AgU0VRVUVOQ0VT IElOIFNDSEVNQSBwdWJfdGVzdDsKKy0tIGZhaWwgLSBjYW4ndCBzZXQgc2NoZW1hIHRvICdG T1IgQUxMIFNFUVVFTkNFUycgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9yYWxsc2VxdWVuY2VzIFNFVCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0Owor CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJ T04gdGVzdHB1Yl9mb3JzZXF1ZW5jZSBGT1IgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEwOworUkVT RVQgY2xpZW50X21pbl9tZXNzYWdlczsKKy0tIHNob3VsZCBiZSBhYmxlIHRvIGFkZCBzY2hl bWEgdG8gJ0ZPUiBTRVFVRU5DRScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZm9yc2VxdWVuY2UgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7Citc ZFJwKyB0ZXN0cHViX2ZvcnNlcXVlbmNlCistLSBhZGQgc2VxdWVuY2UgZnJvbSB0aGUgc2No ZW1hIHdlIGFscmVhZHkgYWRkZWQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2Vx dWVuY2UgQUREIFNFUVVFTkNFIHB1Yl90ZXN0LnRlc3RwdWJfc2VxMTsKKy0tIGZhaWwgLSBj YW4ndCBhZGQgc2VxdWVuY2UgdXNpbmcgQUREIFRBQkxFIGNvbW1hbmQKK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfZm9yc2VxdWVuY2UgQUREIFRBQkxFIHB1Yl90ZXN0LnRlc3RwdWJf c2VxMTsKKy0tIHNob3VsZCBiZSBhYmxlIHRvIGRyb3Agc2NoZW1hIGZyb20gJ0ZPUiBTRVFV RU5DRScgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2VxdWVu Y2UgRFJPUCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9m b3JzZXF1ZW5jZQorLS0gc2hvdWxkIGJlIGFibGUgdG8gc2V0IHNjaGVtYSB0byAnRk9SIFNF UVVFTkNFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzZXF1 ZW5jZSBTRVQgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVzdDsKK1xkUnArIHRlc3RwdWJf Zm9yc2VxdWVuY2UKKworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIEZPUiBTRVFVRU5DRVMgSU4gU0NI RU1BIHB1Yl90ZXN0OworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKy0tIHNob3VsZCBi ZSBhYmxlIHRvIHNldCBzZXF1ZW5jZSB0byBzY2hlbWEgcHVibGljYXRpb24KK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hIFNFVCBTRVFVRU5DRSBwdWJfdGVzdC50ZXN0 cHViX3NlcTE7CitcZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYQorCitTRUxFQ1QgcHVibmFtZSwg cHViYWxsdGFibGVzLCBwdWJhbGxzZXF1ZW5jZXMgRlJPTSBwZ19wdWJsaWNhdGlvbiBXSEVS RSBwdWJuYW1lID0gJ3Rlc3RwdWJfZm9yYWxsc2VxdWVuY2VzJzsKK1xkKyBwdWJfdGVzdC50 ZXN0cHViX3NlcTEKK1xkUnArIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzCitEUk9QIFNFUVVF TkNFIHRlc3RwdWJfc2VxMCwgcHViX3Rlc3QudGVzdHB1Yl9zZXExLCB0ZXN0cHViX3NlcTI7 CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsc2VxdWVuY2VzLCB0ZXN0cHViX2Zv cnNlcXVlbmNlLCB0ZXN0cHViX2ZvcnNjaGVtYTsKKworCistLSBwdWJsaWNhdGlvbiB0ZXN0 aW5nIG11bHRpcGxlIHNlcXVlbmNlcyBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgU0VRVUVO Q0UgdGVzdHB1Yl9zZXExOworQ1JFQVRFIFNFUVVFTkNFIHRlc3RwdWJfc2VxMjsKKworU0VU IGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfbXVsdGkgRk9SIFNFUVVFTkNFIHRlc3RwdWJfc2VxMSwgdGVzdHB1Yl9zZXEyOwor UkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKworXGRScCsgdGVzdHB1Yl9tdWx0aQorCitE Uk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfbXVsdGk7CitEUk9QIFNFUVVFTkNFIHRlc3RwdWJf c2VxMTsKK0RST1AgU0VRVUVOQ0UgdGVzdHB1Yl9zZXEyOworCisKKy0tIFB1YmxpY2F0aW9u IG1peGluZyB0YWJsZXMgYW5kIHNlcXVlbmNlcworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMg PSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfbWl4OworUkVTRVQgY2xp ZW50X21pbl9tZXNzYWdlczsKKworQ1JFQVRFIFNFUVVFTkNFIHRlc3RwdWJfc2VxMTsKK0NS RUFURSBTRVFVRU5DRSBwdWJfdGVzdC50ZXN0cHViX3NlcTI7CisKK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfbWl4IEFERCBTRVFVRU5DRSB0ZXN0cHViX3NlcTEsIFRBQkxFIHRlc3Rw dWJfdGJsMTsKK1xkUnArIHRlc3RwdWJfbWl4CisKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfbWl4IEFERCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0LCBUQUJMRVMgSU4gU0NI RU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9taXgKKworQUxURVIgUFVCTElDQVRJT04g dGVzdHB1Yl9taXggRFJPUCBTRVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsg dGVzdHB1Yl9taXgKKworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9taXggRFJPUCBUQUJM RVMgSU4gU0NIRU1BIHB1Yl90ZXN0OworXGRScCsgdGVzdHB1Yl9taXgKKworRFJPUCBQVUJM SUNBVElPTiB0ZXN0cHViX21peDsKK0RST1AgU0VRVUVOQ0UgdGVzdHB1Yl9zZXExOworRFJP UCBTRVFVRU5DRSBwdWJfdGVzdC50ZXN0cHViX3NlcTI7CisKKworLS0gbWFrZSBzdXJlIHdl IHJlcGxpY2F0ZSBvbmx5IHRoZSBjb3JyZWN0IHJlbGF0aW9uIHR5cGUKK0NSRUFURSBTQ0hF TUEgcHViX3Rlc3QxOworQ1JFQVRFIFNFUVVFTkNFIHB1Yl90ZXN0MS50ZXN0X3NlcTE7CitD UkVBVEUgVEFCTEUgcHViX3Rlc3QxLnRlc3RfdGJsMSAoYSBpbnQgcHJpbWFyeSBrZXksIGIg aW50KTsKKworQ1JFQVRFIFNDSEVNQSBwdWJfdGVzdDI7CitDUkVBVEUgU0VRVUVOQ0UgcHVi X3Rlc3QyLnRlc3Rfc2VxMjsKK0NSRUFURSBUQUJMRSBwdWJfdGVzdDIudGVzdF90YmwyIChh IGludCBwcmltYXJ5IGtleSwgYiBpbnQpOworCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9 ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFzOworUkVTRVQg Y2xpZW50X21pbl9tZXNzYWdlczsKKworLS0gYWRkIHRhYmxlcyBmcm9tIG9uZSBzY2hlbWEs IHNlcXVlbmNlcyBmcm9tIHRoZSBvdGhlcgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9z Y2hlbWFzIEFERCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MjsKK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfc2NoZW1hcyBBREQgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVzdDE7 CisKK1xkUnArIHRlc3RwdWJfc2NoZW1hcworCitcZG4rIHB1Yl90ZXN0MQorXGRuKyBwdWJf dGVzdDIKKworXGQrIHB1Yl90ZXN0MS50ZXN0X3NlcTE7CitcZCsgcHViX3Rlc3QxLnRlc3Rf dGJsMTsKKworXGQrIHB1Yl90ZXN0Mi50ZXN0X3NlcTI7CitcZCsgcHViX3Rlc3QyLnRlc3Rf dGJsMjsKKworLS0gYWRkIHRoZSBvdGhlciBvYmplY3QgdHlwZSBmcm9tIGVhY2ggc2NoZW1h CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX3NjaGVtYXMgQUREIFRBQkxFUyBJTiBTQ0hF TUEgcHViX3Rlc3QxOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hlbWFzIEFERCBT RVFVRU5DRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MjsKKworXGRScCsgdGVzdHB1Yl9zY2hlbWFz CisKK1xkbisgcHViX3Rlc3QxCitcZG4rIHB1Yl90ZXN0MgorCitcZCsgcHViX3Rlc3QxLnRl c3Rfc2VxMTsKK1xkKyBwdWJfdGVzdDEudGVzdF90YmwxOworCitcZCsgcHViX3Rlc3QyLnRl c3Rfc2VxMjsKK1xkKyBwdWJfdGVzdDIudGVzdF90YmwyOworCistLSBub3cgZHJvcCB0aGUg b2JqZWN0IHR5cGUgYWRkZWQgZmlyc3QKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2No ZW1hcyBEUk9QIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QyOworQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1Yl9zY2hlbWFzIERST1AgU0VRVUVOQ0VTIElOIFNDSEVNQSBwdWJfdGVzdDE7 CisKK1xkUnArIHRlc3RwdWJfc2NoZW1hcworCitcZG4rIHB1Yl90ZXN0MQorXGRuKyBwdWJf dGVzdDIKKworXGQrIHB1Yl90ZXN0MS50ZXN0X3NlcTE7CitcZCsgcHViX3Rlc3QxLnRlc3Rf dGJsMTsKKworXGQrIHB1Yl90ZXN0Mi50ZXN0X3NlcTI7CitcZCsgcHViX3Rlc3QyLnRlc3Rf dGJsMjsKKworLS0gYWRkIGEgZGlmZmVyZW50IHNjaGVtYSAobm90IGluY2x1ZGluZyB0aGUg YWxyZWFkeSBwdWJsaXNoZWQgc2VxdWVuY2VzKQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 Yl9zY2hlbWFzIEFERCBUQUJMRSBwdWJfdGVzdDIudGVzdF90YmwyOworQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9zY2hlbWFzIEFERCBTRVFVRU5DRSBwdWJfdGVzdDEudGVzdF9zZXEx OworCitcZFJwKyB0ZXN0cHViX3NjaGVtYXMKKworXGQrIHB1Yl90ZXN0MS50ZXN0X3NlcTE7 CitcZCsgcHViX3Rlc3QxLnRlc3RfdGJsMTsKKworXGQrIHB1Yl90ZXN0Mi50ZXN0X3NlcTI7 CitcZCsgcHViX3Rlc3QyLnRlc3RfdGJsMjsKKworLS0gbm93IGRyb3AgdGhlIGV4cGxpY2l0 bHkgYWRkZWQgb2JqZWN0cyBhZ2FpbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9zY2hl bWFzIERST1AgVEFCTEUgcHViX3Rlc3QyLnRlc3RfdGJsMjsKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfc2NoZW1hcyBEUk9QIFNFUVVFTkNFIHB1Yl90ZXN0MS50ZXN0X3NlcTE7CisK K1xkUnArIHRlc3RwdWJfc2NoZW1hcworCitcZCsgcHViX3Rlc3QxLnRlc3Rfc2VxMTsKK1xk KyBwdWJfdGVzdDEudGVzdF90YmwxOworCitcZCsgcHViX3Rlc3QyLnRlc3Rfc2VxMjsKK1xk KyBwdWJfdGVzdDIudGVzdF90YmwyOworCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc2No ZW1hczsKK0RST1AgVEFCTEUgcHViX3Rlc3QxLnRlc3RfdGJsMSwgcHViX3Rlc3QyLnRlc3Rf dGJsMjsKK0RST1AgU0VRVUVOQ0UgcHViX3Rlc3QxLnRlc3Rfc2VxMSwgcHViX3Rlc3QyLnRl c3Rfc2VxMjsKK0RST1AgU0NIRU1BIHB1Yl90ZXN0MSwgcHViX3Rlc3QyOworCiAtLSBUZXN0 cyBmb3IgcGFydGl0aW9uZWQgdGFibGVzCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdF UlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQ7CkBAIC0xMDUy LDMyICsxMjM2LDUxIEBAIENSRUFURSBTQ0hFTUEgc2NoMTsKIENSRUFURSBTQ0hFTUEgc2No MjsKIENSRUFURSBUQUJMRSBzY2gxLnRibDEgKGEgaW50KSBQQVJUSVRJT04gQlkgUkFOR0Uo YSk7CiBDUkVBVEUgVEFCTEUgc2NoMi50YmwxX3BhcnQxIFBBUlRJVElPTiBPRiBzY2gxLnRi bDEgRk9SIFZBTFVFUyBGUk9NICgxKSB0byAoMTApOworQ1JFQVRFIFNFUVVFTkNFIHNjaDEu c2VxMTsKK0NSRUFURSBTRVFVRU5DRSBzY2gyLnNlcTI7CiAtLSBTY2hlbWEgcHVibGljYXRp b24gdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzY2hlbWEgdGhhdCBoYXMgdGhlIHBhcmVu dCB0YWJsZQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgVEFCTEVTIElOIFNDSEVNQSBz Y2gyIFdJVEggKFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UPTEpOworQUxURVIgUFVCTElD QVRJT04gcHViIEFERCBTRVFVRU5DRVMgSU4gU0NIRU1BIHNjaDI7CiBTRUxFQ1QgKiBGUk9N IHBnX3B1YmxpY2F0aW9uX3RhYmxlczsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25f c2VxdWVuY2VzOwogCiBEUk9QIFBVQkxJQ0FUSU9OIHB1YjsKIC0tIFRhYmxlIHB1YmxpY2F0 aW9uIHRoYXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgcGFyZW50IHRhYmxlCiBDUkVBVEUgUFVC TElDQVRJT04gcHViIEZPUiBUQUJMRSBzY2gyLnRibDFfcGFydDEgV0lUSCAoUFVCTElTSF9W SUFfUEFSVElUSU9OX1JPT1Q9MSk7CitBTFRFUiBQVUJMSUNBVElPTiBwdWIgQUREIFNFUVVF TkNFIHNjaDIuc2VxMjsKIFNFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOwor U0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CiAKIC0tIFRhYmxlIHB1 YmxpY2F0aW9uIHRoYXQgaW5jbHVkZXMgYm90aCB0aGUgcGFyZW50IHRhYmxlIGFuZCB0aGUg Y2hpbGQgdGFibGUKIEFMVEVSIFBVQkxJQ0FUSU9OIHB1YiBBREQgVEFCTEUgc2NoMS50Ymwx OworQUxURVIgUFVCTElDQVRJT04gcHViIEFERCBTRVFVRU5DRSBzY2gxLnNlcTE7CiBTRUxF Q1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxlczsKK1NFTEVDVCAqIEZST00gcGdfcHVi bGljYXRpb25fc2VxdWVuY2VzOwogCiBEUk9QIFBVQkxJQ0FUSU9OIHB1YjsKIC0tIFNjaGVt YSBwdWJsaWNhdGlvbiB0aGF0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHNjaGVtYSB0aGF0IGhh cyB0aGUgcGFyZW50IHRhYmxlCiBDUkVBVEUgUFVCTElDQVRJT04gcHViIEZPUiBUQUJMRVMg SU4gU0NIRU1BIHNjaDIgV0lUSCAoUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1Q9MCk7CitB TFRFUiBQVUJMSUNBVElPTiBwdWIgQUREIFNFUVVFTkNFIHNjaDEuc2VxMTsKK1NFTEVDVCAq IEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNh dGlvbl9zZXF1ZW5jZXM7CisKK0RST1AgUFVCTElDQVRJT04gcHViOworLS0gU2VxdWVuY2Ug cHVibGljYXRpb24KK0NSRUFURSBQVUJMSUNBVElPTiBwdWIgRk9SIFNFUVVFTkNFIHNjaDIu c2VxMjsKIFNFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fdGFibGVzOworU0VMRUNUICog RlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM7CiAKIERST1AgUFVCTElDQVRJT04gcHVi OwogLS0gVGFibGUgcHVibGljYXRpb24gdGhhdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBwYXJl bnQgdGFibGUKIENSRUFURSBQVUJMSUNBVElPTiBwdWIgRk9SIFRBQkxFIHNjaDIudGJsMV9w YXJ0MSBXSVRIIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0wKTsKIFNFTEVDVCAqIEZS T00gcGdfcHVibGljYXRpb25fdGFibGVzOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlv bl9zZXF1ZW5jZXM7CiAKIC0tIFRhYmxlIHB1YmxpY2F0aW9uIHRoYXQgaW5jbHVkZXMgYm90 aCB0aGUgcGFyZW50IHRhYmxlIGFuZCB0aGUgY2hpbGQgdGFibGUKIEFMVEVSIFBVQkxJQ0FU SU9OIHB1YiBBREQgVEFCTEUgc2NoMS50YmwxOworQUxURVIgUFVCTElDQVRJT04gcHViIEFE RCBTRVFVRU5DRVMgSU4gU0NIRU1BIHNjaDI7CiBTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0 aW9uX3RhYmxlczsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25fc2VxdWVuY2VzOwog CiBEUk9QIFBVQkxJQ0FUSU9OIHB1YjsKIERST1AgVEFCTEUgc2NoMi50YmwxX3BhcnQxOwpA QCAtMTA5MCwxMCArMTI5MywzNiBAQCBDUkVBVEUgVEFCTEUgc2NoMS50YmwxX3BhcnQzIChh IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOwogQUxURVIgVEFCTEUgc2NoMS50YmwxIEFU VEFDSCBQQVJUSVRJT04gc2NoMS50YmwxX3BhcnQzIEZPUiBWQUxVRVMgRlJPTSAoMjApIHRv ICgzMCk7CiBDUkVBVEUgUFVCTElDQVRJT04gcHViIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHNj aDEgV0lUSCAoUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1Q9MSk7CiBTRUxFQ1QgKiBGUk9N IHBnX3B1YmxpY2F0aW9uX3RhYmxlczsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25f c2VxdWVuY2VzOworCitEUk9QIFBVQkxJQ0FUSU9OIHB1YjsKKy0tIFNjaGVtYSBwdWJsaWNh dGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgU0VRVUVOQ0Ugc2NoMi5zZXEyOwor U0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJsZXM7CitTRUxFQ1QgKiBGUk9NIHBn X3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKKworRFJPUCBQVUJMSUNBVElPTiBwdWI7CistLSBT ZXF1ZW5jZSBwdWJsaWNhdGlvbgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YiBGT1IgU0VRVUVO Q0VTIElOIFNDSEVNQSBzY2gyOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl90YWJs ZXM7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3NlcXVlbmNlczsKKworQUxURVIg UFVCTElDQVRJT04gcHViIEFERCBTRVFVRU5DRSBzY2gxLnNlcTE7CitTRUxFQ1QgKiBGUk9N IHBnX3B1YmxpY2F0aW9uX3RhYmxlczsKK1NFTEVDVCAqIEZST00gcGdfcHVibGljYXRpb25f c2VxdWVuY2VzOworCitBTFRFUiBQVUJMSUNBVElPTiBwdWIgRFJPUCBTRVFVRU5DRSBzY2gx LnNlcTE7CitTRUxFQ1QgKiBGUk9NIHBnX3B1YmxpY2F0aW9uX3RhYmxlczsKK1NFTEVDVCAq IEZST00gcGdfcHVibGljYXRpb25fc2VxdWVuY2VzOworCitBTFRFUiBQVUJMSUNBVElPTiBw dWIgQUREIFNFUVVFTkNFUyBJTiBTQ0hFTUEgc2NoMTsKK1NFTEVDVCAqIEZST00gcGdfcHVi bGljYXRpb25fdGFibGVzOworU0VMRUNUICogRlJPTSBwZ19wdWJsaWNhdGlvbl9zZXF1ZW5j ZXM7CiAKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBEUk9QIFBVQkxJQ0FUSU9OIHB1 YjsKIERST1AgVEFCTEUgc2NoMS50YmwxOworRFJPUCBTRVFVRU5DRSBzY2gxLnNlcTEsIHNj aDIuc2VxMjsKIERST1AgU0NIRU1BIHNjaDEgY2FzY2FkZTsKIERST1AgU0NIRU1BIHNjaDIg Y2FzY2FkZTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM0X3Nl cXVlbmNlcy5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNF9zZXF1ZW5jZXMucGwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE3NDRhY2FkMjFkCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM0X3NlcXVlbmNl cy5wbApAQCAtMCwwICsxLDIwNyBAQAorCisjIENvcHlyaWdodCAoYykgMjAyMSwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUaGlzIHRlc3RzIHRoYXQgc2Vx dWVuY2VzIGFyZSByZXBsaWNhdGVkIGNvcnJlY3RseSBieSBsb2dpY2FsIHJlcGxpY2F0aW9u Cit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsK KworIyBJbml0aWFsaXplIHB1Ymxpc2hlciBub2RlCitteSAkbm9kZV9wdWJsaXNoZXIgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOworJG5vZGVfcHVi bGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3B1 Ymxpc2hlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVf c3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJl cicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dp Y2FsJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworIyBDcmVhdGUgc29tZSBwcmVl eGlzdGluZyBjb250ZW50IG9uIHB1Ymxpc2hlcgorbXkgJGRkbCA9IHFxKAorCUNSRUFURSBU QUJMRSBzZXFfdGVzdCAodiBCSUdJTlQpOworCUNSRUFURSBTRVFVRU5DRSBzOworKTsKKwor IyBTZXR1cCBzdHJ1Y3R1cmUgb24gdGhlIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgJGRkbCk7CisKKyMgQ3JlYXRlIHNvbWUgdGhlIHNhbWUg c3RydWN0dXJlIG9uIHN1YnNjcmliZXIsIGFuZCBhbiBleHRyYSBzZXF1ZW5jZSB0aGF0Cisj IHdlJ2xsIGNyZWF0ZSBvbiB0aGUgcHVibGlzaGVyIGxhdGVyCiskZGRsID0gcXEoCisJQ1JF QVRFIFRBQkxFIHNlcV90ZXN0ICh2IEJJR0lOVCk7CisJQ1JFQVRFIFNFUVVFTkNFIHM7CisJ Q1JFQVRFIFNFUVVFTkNFIHMyOworKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICRkZGwpOworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215 ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJu YW1lPXBvc3RncmVzJzsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkNSRUFURSBQVUJMSUNBVElPTiBzZXFfcHViIik7CisKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFBVQkxJQ0FUSU9OIHNlcV9wdWIgQURE IFNFUVVFTkNFIHMiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBTVUJTQ1JJUFRJT04gc2VxX3N1YiBDT05ORUNUSU9OICckcHVibGlz aGVyX2Nvbm5zdHInIFBVQkxJQ0FUSU9OIHNlcV9wdWIiCispOworCiskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJ3NlcV9zdWInKTsKKworIyBXYWl0IGZvciBpbml0aWFs IHN5bmMgdG8gZmluaXNoIGFzIHdlbGwKK215ICRzeW5jZWRfcXVlcnkgPQorICAiU0VMRUNU IGNvdW50KDEpID0gMCBGUk9NIHBnX3N1YnNjcmlwdGlvbl9yZWwgV0hFUkUgc3JzdWJzdGF0 ZSBOT1QgSU4gKCdzJywgJ3InKTsiOworJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91 bnRpbCgncG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQorICBvciBkaWUgIlRpbWVkIG91dCB3 aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5bmNocm9uaXplIGRhdGEiOworCisj IEluc2VydCBpbml0aWFsIHRlc3QgZGF0YQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJJ3Bvc3RncmVzJywgcXEoCisJLS0gZ2VuZXJhdGUgYSBudW1iZXIgb2YgdmFsdWVzIHVz aW5nIHRoZSBzZXF1ZW5jZQorCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFs KCdzJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworKSk7CisKKyRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRoZSBkYXRh IG9uIHN1YnNjcmliZXIKK215ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoCisJJ3Bvc3RncmVzJywgcXEoCisJU0VMRUNUICogRlJPTSBzOworKSk7CisKK2lzKCAk cmVzdWx0LCAnMTMyfDB8dCcsCisJJ2luaXRpYWwgdGVzdCBkYXRhIHJlcGxpY2F0ZWQnKTsK KworCisjIGFkdmFuY2UgdGhlIHNlcXVlbmNlIGluIGEgcm9sbGVkLWJhY2sgdHJhbnNhY3Rp b24gLSB0aGUgcm9sbGJhY2sKKyMgZG9lcyBub3Qgd2FpdCBmb3IgdGhlIHJlcGxpY2F0aW9u LCBzbyB3ZSBjb3VsZCBzZWUgYW55IGludGVybWVkaWF0ZSBzdGF0ZQorIyBzbyBkbyBzb21l dGhpbmcgZWxzZSBhZnRlciB0aGUgdGVzdCwgdG8gZW5zdXJlIHdlIHdhaXQgZm9yIGV2ZXJ5 dGhpbmcKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAor CUJFR0lOOworCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdzJykgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworCVJPTExCQUNLOworCUlOU0VSVCBJTlRPIHNl cV90ZXN0IFZBTFVFUyAoLTEpOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXIK KyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXEoCisJU0VMRUNUICogRlJPTSBzOworKSk7CisKK2lzKCAkcmVzdWx0LCAnMjMxfDB8dCcs CisJJ2FkdmFuY2Ugc2VxdWVuY2UgaW4gcm9sbGVkLWJhY2sgdHJhbnNhY3Rpb24nKTsKKwor CisjIGNyZWF0ZSBhIG5ldyBzZXF1ZW5jZSBhbmQgcm9sbCBpdCBiYWNrIC0gc2hvdWxkIG5v dCBiZSByZXBsaWNhdGVkLCBkdWUgdG8KKyMgdGhlIHRyYW5zYWN0aW9uYWwgYmVoYXZpb3IK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUJFR0lO OworCUNSRUFURSBTRVFVRU5DRSBzMjsKKwlBTFRFUiBQVUJMSUNBVElPTiBzZXFfcHViIEFE RCBTRVFVRU5DRSBzMjsKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgn czInKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJUk9MTEJBQ0s7CispKTsKKwor IyBSZWZyZXNoIHB1YmxpY2F0aW9uIGFmdGVyIHNlcXVlbmNlIGlzIGFkZGVkIHRvIHB1Ymxp Y2F0aW9uCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxKAorCUFMVEVSIFNVQlNDUklQVElPTiBzZXFfc3ViIFJFRlJFU0ggUFVCTElD QVRJT04KKykpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3NlcV9z dWInKTsKKworIyBDaGVjayB0aGUgZGF0YSBvbiBzdWJzY3JpYmVyCiskcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCVNFTEVDVCAq IEZST00gczI7CispKTsKKworaXMoICRyZXN1bHQsICcxfDB8ZicsCisJJ2NyZWF0ZSBuZXcg c2VxdWVuY2UgYW5kIHJvbGwgaXQgYmFjaycpOworCisKKyMgY3JlYXRlIGEgbmV3IHNlcXVl bmNlLCBhZHZhbmNlIGl0IGluIGEgcm9sbGVkLWJhY2sgdHJhbnNhY3Rpb24sIGJ1dCBjb21t aXQKKyMgdGhlIGNyZWF0ZSAtIHRoZSBhZHZhbmNlIHNob3VsZCBiZSByZXBsaWNhdGVkIG5l dmVydGhlbGVzcworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXEoCisJQkVHSU47CisJQUxURVIgU0VRVUVOQ0UgcyBSRVNUQVJUIFdJVEggMTAwMDsKKwlT QVZFUE9JTlQgc3AxOworCUlOU0VSVCBJTlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdz JykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworCVJPTExCQUNLIFRPIHNwMTsKKwlD T01NSVQ7CispKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzZXFf c3ViJyk7CisKKyMgV2FpdCBmb3Igc3luYyBvZiB0aGUgc2Vjb25kIHNlcXVlbmNlIHdlIGp1 c3QgYWRkZWQgdG8gZmluaXNoCiskc3luY2VkX3F1ZXJ5ID0KKyAgIlNFTEVDVCBjb3VudCgx KSA9IDAgRlJPTSBwZ19zdWJzY3JpcHRpb25fcmVsIFdIRVJFIHNyc3Vic3RhdGUgTk9UIElO ICgncycsICdyJyk7IjsKKyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bv c3RncmVzJywgJHN5bmNlZF9xdWVyeSkKKyAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2Fp dGluZyBmb3Igc3Vic2NyaWJlciB0byBzeW5jaHJvbml6ZSBkYXRhIjsKKworIyBDaGVjayB0 aGUgZGF0YSBvbiBzdWJzY3JpYmVyCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCVNFTEVDVCAqIEZST00gczsKKykpOworCitp cyggJHJlc3VsdCwgJzExMzF8MHx0JywKKwknY3JlYXRlIHNlcXVlbmNlLCBhZHZhbmNlIGl0 IGluIHJvbGxlZC1iYWNrIHRyYW5zYWN0aW9uLCBidXQgY29tbWl0IHRoZSBjcmVhdGUnKTsK KworCisjIGFkdmFuY2UgdGhlIG5ldyBzZXF1ZW5jZSBpbiBhIHRyYW5zYWN0aW9uLCBhbmQg cm9sbCBpdCBiYWNrIC0gdGhlIHJvbGxiYWNrCisjIGRvZXMgbm90IHdhaXQgZm9yIHRoZSBy ZXBsaWNhdGlvbiwgc28gd2UgY291bGQgc2VlIGFueSBpbnRlcm1lZGlhdGUgc3RhdGUKKyMg c28gZG8gc29tZXRoaW5nIGVsc2UgYWZ0ZXIgdGhlIHRlc3QsIHRvIGVuc3VyZSB3ZSB3YWl0 IGZvciBldmVyeXRoaW5nCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcSgKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBTRUxFQ1QgbmV4dHZh bCgncycpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKKwlST0xMQkFDSzsKKwlJTlNF UlQgSU5UTyBzZXFfdGVzdCBWQUxVRVMgKC0xKTsKKykpOworCiskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJ3NlcV9zdWInKTsKKworIyBDaGVjayB0aGUgZGF0YSBvbiBz dWJzY3JpYmVyCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxKAorCVNFTEVDVCAqIEZST00gczsKKykpOworCitpcyggJHJlc3VsdCwg JzEyMzB8MHx0JywKKwknYWR2YW5jZSB0aGUgbmV3IHNlcXVlbmNlIGluIGEgdHJhbnNhY3Rp b24gYW5kIHJvbGwgaXQgYmFjaycpOworCisKKyMgYWR2YW5jZSB0aGUgc2VxdWVuY2UgaW4g YSBzdWJ0cmFuc2FjdGlvbiAtIHRoZSBzdWJ0cmFuc2FjdGlvbiBnZXRzIHJvbGxlZAorIyBi YWNrLCBidXQgY29tbWl0IHRoZSBtYWluIG9uZSAtIHRoZSBjaGFuZ2VzIHNob3VsZCBzdGls bCBiZSByZXBsaWNhdGVkCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcSgKKwlCRUdJTjsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gc2VxX3Rl c3QgU0VMRUNUIG5leHR2YWwoJ3MnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJ Uk9MTEJBQ0sgVE8gczE7CisJQ09NTUlUOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNj cmliZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXEoCisJU0VMRUNUICogRlJPTSBzOworKSk7CisKK2lzKCAkcmVzdWx0LCAnMTMy OXwwfHQnLAorCSdhZHZhbmNlIHNlcXVlbmNlIGluIGEgc3VidHJhbnNhY3Rpb24nKTsKKwor Citkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNzNi N2IzN2E1ZWUuLjQyMzMxYjNkMzg0IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApA QCAtMTUwMCw2ICsxNTAwLDcgQEAgTG9naWNhbFJlcFJlbElkCiBMb2dpY2FsUmVwUmVsTWFw RW50cnkKIExvZ2ljYWxSZXBSZWxhdGlvbgogTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRU eG5EYXRhCitMb2dpY2FsUmVwU2VxdWVuY2UKIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEK IExvZ2ljYWxSZXBUdXBsZURhdGEKIExvZ2ljYWxSZXBUeXAKLS0gCjIuNDEuMAoK --------------q81gMYy3cJrdUAqlWBWL0vlY Content-Type: text/x-patch; charset=UTF-8; name="v20231128-0005-subxact-alter-rollback-test.patch" Content-Disposition: attachment; filename="v20231128-0005-subxact-alter-rollback-test.patch" Content-Transfer-Encoding: base64 RnJvbSAyYjYzYzFhMmQ3N2ExNDY3ZDk3YmQ3MjkyYTVmNmViODEwMjdlZmExIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogVHVlLCAyOCBOb3YgMjAyMyAyMToxMToyMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjMxMTI4IDUvOF0gc3VieGFjdCBhbHRlciArIHJvbGxiYWNrIHRlc3QKCi0t LQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM0X3NlcXVlbmNlcy5wbCB8IDIzICsrKysr KysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKQoK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNF9zZXF1ZW5jZXMucGwg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzRfc2VxdWVuY2VzLnBsCmluZGV4IDE3NDRh Y2FkMjFkLi5kNDI5MGMxYzY5YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDM0X3NlcXVlbmNlcy5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzRf c2VxdWVuY2VzLnBsCkBAIC0yMDQsNCArMjA0LDI3IEBAIGlzKCAkcmVzdWx0LCAnMTMyOXww fHQnLAogCSdhZHZhbmNlIHNlcXVlbmNlIGluIGEgc3VidHJhbnNhY3Rpb24nKTsKIAogCisj IGFsdGVyIHRoZSBzZXF1ZW5jZSB0d2ljZSBpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQkVHSU47CisJ QUxURVIgU0VRVUVOQ0UgcyBSRVNUQVJUIDEwMDA7CisJU0FWRVBPSU5UIHMxOworCUFMVEVS IFNFUVVFTkNFIHMgUkVTVEFSVCAyMDAwOworCVJPTExCQUNLIFRPIHMxOworCUlOU0VSVCBJ TlRPIHNlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdzJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSw0MCk7CisJQ09NTUlUOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXIKKyRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEo CisJU0VMRUNUICogRlJPTSBzOworKSk7CisKK2lzKCAkcmVzdWx0LCAnMTA5OHwwfHQnLAor CSdhbHRlciBzZXF1ZW5jZSB0d2ljZSBpbiBhIHN1YnRyYW5zYWN0aW9uJyk7CisKIGRvbmVf dGVzdGluZygpOwotLSAKMi40MS4wCgo= --------------q81gMYy3cJrdUAqlWBWL0vlY Content-Type: text/x-patch; charset=UTF-8; name="v20231128-0006-subxact-test.patch" Content-Disposition: attachment; filename="v20231128-0006-subxact-test.patch" Content-Transfer-Encoding: base64 RnJvbSBhZWJlNGZhMDg5M2Y4MDk0YzA3NDMxNzJjYzJkMTdlZmVjZTNkNDViIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogVHVlLCAyOCBOb3YgMjAyMyAyMToxMTowMCArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjMxMTI4IDYvOF0gc3VieGFjdCB0ZXN0CgotLS0KIHNyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAzNF9zZXF1ZW5jZXMucGwgfCAzNSArKysrKysrKysrKysrKysrKysrKysr KysKIDEgZmlsZSBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM0X3NlcXVlbmNlcy5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAzNF9zZXF1ZW5jZXMucGwKaW5kZXggZDQyOTBjMWM2OWIuLjRmYjY5ZDcx MjgyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzRfc2VxdWVuY2Vz LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNF9zZXF1ZW5jZXMucGwKQEAg LTQ1LDYgKzQ1LDE0IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJBTFRFUiBQVUJM SUNBVElPTiBzZXFfcHViIEFERCBTRVFVRU5DRSBzIik7CiAKKyMgZnVuY3Rpb24gdGhhdCBh bHRlcnMgdGhlIHNlcXVlbmNlIGluIGEgY29tcGxldGVkIHN1YnRyYW5zYWN0aW9uCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgRlVOQ1RJT04g cmVncmVzc19hbHRlcl9zZXF1ZW5jZShzIHJlZ2NsYXNzLCB2IGludGVnZXIpIFJFVFVSTlMg dm9pZCBhcyBcJFwkCitCRUdJTgorRVhFQ1VURSBmb3JtYXQoJ2FsdGVyIHNlcXVlbmNlICVz IHJlc3RhcnQgJXMnLCBzLCB2KTsKK0VYQ0VQVElPTiBXSEVOIG90aGVycyBUSEVOIE5VTEw7 CitFTkQ7IFwkXCQgTEFOR1VBR0UgcGxwZ3NxbCIpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiBzZXFfc3ViIENP Tk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gc2VxX3B1YiIKICk7 CkBAIC0yMjcsNCArMjM1LDMxIEBAICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoCiBpcyggJHJlc3VsdCwgJzEwOTh8MHx0JywKIAknYWx0ZXIgc2VxdWVuY2UgdHdp Y2UgaW4gYSBzdWJ0cmFuc2FjdGlvbicpOwogCisKKyMgYWx0ZXIgdGhlIHNlcXVlbmNlIGlu IGEgc3VidHJhbnNhY3Rpb24gdGhhdCBjb21taXRzLCBmb2xsb3dlZCBieSBhZHZhbmNpbmcK KyMgdGhlIHNlcXVlbmNlIGluIGEgc3VidHJhbnNhY3Rpb24gdGhhdCBnZXRzIHJvbGxlZCBi YWNrLCBidXQgdGhlbiB0aGUgbWFpbgorIyBvbmUgY29tbWl0cyAtIHRoZSBjaGFuZ2VzIHNo b3VsZCBzdGlsbCBiZSByZXBsaWNhdGVkLCBiZWNhdXNlIHRoZXkgYmVsb25nCisjIHRvIHRo ZSBhbHRlciwgd2hpY2ggd2FzIGluIHRoZSBjb21taXR0ZWQgcGFydAorJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQkVHSU47CisJU0VMRUNUIHJl Z3Jlc3NfYWx0ZXJfc2VxdWVuY2UoJ3MnLCAxMDAwKTsgLS0gcmVzZXQgdG8gMTAwMAorCVNB VkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyBzZXFfdGVzdCBTRUxFQ1QgbmV4dHZhbCgncycp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKKwlST0xMQkFDSyBUTyBzMTsKKwlDT01N SVQ7CispKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzZXFfc3Vi Jyk7CisKKyMgQ2hlY2sgdGhlIGRhdGEgb24gc3Vic2NyaWJlcgorJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlTRUxFQ1QgKiBG Uk9NIHM7CispKTsKKworaXMoICRyZXN1bHQsICcxMTMxfDB8dCcsCisJJ2FsdGVyIHNlcXVl bmNlIGluIGEgc3VidHJhbnNhY3Rpb24nKTsKKworCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIu NDEuMAoK --------------q81gMYy3cJrdUAqlWBWL0vlY Content-Type: text/x-patch; charset=UTF-8; name="v20231128-0007-WIP-add-is_transactional-attribute-in-xl_s.patch" Content-Disposition: attachment; filename*0="v20231128-0007-WIP-add-is_transactional-attribute-in-xl_s.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhY2U4ZTRmZTIzMDg5YmE5NDFmZmVlODcwYTU5Mzc1MmVmOTY1ZGJkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIYXlhdG8gS3Vyb2RhIDxrdXJvZGEuaGF5YXRvQGZ1 aml0c3UuY29tPgpEYXRlOiBNb24sIDI3IE5vdiAyMDIzIDEwOjE1OjAxICswMDAwClN1Ympl Y3Q6IFtQQVRDSCB2MjAyMzExMjggNy84XSAoV0lQKSBhZGQgaXNfdHJhbnNhY3Rpb25hbCBh dHRyaWJ1dGUgaW4KIHhsX3NlcV9yZWMKCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2Vx dWVuY2UuYyAgICAgICAgICAgICAgIHwgIDEyICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMgICAgICB8ICA3NSArLS0tCiAuLi4vcmVwbGljYXRpb24vbG9n aWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgICAgfCA0MDEgLS0tLS0tLS0tLS0tLS0tLS0tCiBz cmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaCAgICAgICAgICAgICAgICAgfCAgIDIgKy0K IHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nX2ludGVybmFsLmggICAgICAgICAgICB8ICAgMiAr LQogc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaCAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RlY29kZS5oICAgICAgICAgICAgICB8ICAg MSAtCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggICAgICAgfCAg MTMgLQogOCBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCA0ODggZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKaW5kZXggZDg0MDRhNmY3NWUuLjlkYTlj ODI3MGQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTExMiw2ICsxMTIsNyBA QCBzdGF0aWMgdm9pZCBpbml0X3BhcmFtcyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9w dGlvbnMsIGJvb2wgZm9yX2lkZW50aXR5LAogCQkJCQkJTGlzdCAqKm93bmVkX2J5KTsKIHN0 YXRpYyB2b2lkIGRvX3NldHZhbChPaWQgcmVsaWQsIGludDY0IG5leHQsIGJvb2wgaXNjYWxs ZWQpOwogc3RhdGljIHZvaWQgcHJvY2Vzc19vd25lZF9ieShSZWxhdGlvbiBzZXFyZWwsIExp c3QgKm93bmVkX2J5LCBib29sIGZvcl9pZGVudGl0eSk7CitzdGF0aWMgaW5saW5lIGJvb2wg aXNfc2VxdWVuY2VfdHJhbnNhY3Rpb25hbChSZWxhdGlvbiBzZXFyZWwpOwogCiAKIC8qCkBA IC0yNTUsNiArMjU2LDEzIEBAIERlZmluZVNlcXVlbmNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwg Q3JlYXRlU2VxU3RtdCAqc2VxKQogCXJldHVybiBhZGRyZXNzOwogfQogCitzdGF0aWMgaW5s aW5lIGJvb2wKK2lzX3NlcXVlbmNlX3RyYW5zYWN0aW9uYWwoUmVsYXRpb24gc2VxcmVsKQor eworCXJldHVybiAoc2VxcmVsLT5yZF9uZXdSZWxmaWxlbG9jYXRvclN1YmlkICE9IEludmFs aWRTdWJUcmFuc2FjdGlvbklkKSB8fAorCQkgICAoc2VxcmVsLT5yZF9jcmVhdGVTdWJpZCAh PSBJbnZhbGlkU3ViVHJhbnNhY3Rpb25JZCk7Cit9CisKIC8qCiAgKiBSZXNldCBhIHNlcXVl bmNlIHRvIGl0cyBpbml0aWFsIHZhbHVlLgogICoKQEAgLTYwMSw2ICs2MDksNyBAQCBmaWxs X3NlcV9mb3JrX3dpdGhfZGF0YShSZWxhdGlvbiByZWwsIEhlYXBUdXBsZSB0dXBsZSwgRm9y a051bWJlciBmb3JrTnVtKQogCQlYTG9nUmVnaXN0ZXJCdWZmZXIoMCwgYnVmLCBSRUdCVUZf V0lMTF9JTklUKTsKIAogCQl4bHJlYy5sb2NhdG9yID0gcmVsLT5yZF9sb2NhdG9yOworCQl4 bHJlYy5pc190cmFuc2FjdGlvbmFsID0gaXNfc2VxdWVuY2VfdHJhbnNhY3Rpb25hbChyZWwp OwogCiAJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgJnhscmVjLCBzaXplb2YoeGxfc2Vx X3JlYykpOwogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopIHR1cGxlLT50X2RhdGEsIHR1 cGxlLT50X2xlbik7CkBAIC0xMDY1LDYgKzEwNzQsNyBAQCBuZXh0dmFsX2ludGVybmFsKE9p ZCByZWxpZCwgYm9vbCBjaGVja19wZXJtaXNzaW9ucykKIAkJc2VxLT5sb2dfY250ID0gMDsK IAogCQl4bHJlYy5sb2NhdG9yID0gc2VxcmVsLT5yZF9sb2NhdG9yOworCQl4bHJlYy5pc190 cmFuc2FjdGlvbmFsID0gaXNfc2VxdWVuY2VfdHJhbnNhY3Rpb25hbChzZXFyZWwpOwogCiAJ CVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgJnhscmVjLCBzaXplb2YoeGxfc2VxX3JlYykp OwogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopIHNlcWRhdGF0dXBsZS50X2RhdGEsIHNl cWRhdGF0dXBsZS50X2xlbik7CkBAIC0xMjY2LDYgKzEyNzYsOCBAQCBkb19zZXR2YWwoT2lk IHJlbGlkLCBpbnQ2NCBuZXh0LCBib29sIGlzY2FsbGVkKQogCQlYTG9nUmVnaXN0ZXJCdWZm ZXIoMCwgYnVmLCBSRUdCVUZfV0lMTF9JTklUKTsKIAogCQl4bHJlYy5sb2NhdG9yID0gc2Vx cmVsLT5yZF9sb2NhdG9yOworCQl4bHJlYy5pc190cmFuc2FjdGlvbmFsID0gaXNfc2VxdWVu Y2VfdHJhbnNhY3Rpb25hbChzZXFyZWwpOworCiAJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIg KikgJnhscmVjLCBzaXplb2YoeGxfc2VxX3JlYykpOwogCQlYTG9nUmVnaXN0ZXJEYXRhKChj aGFyICopIHNlcWRhdGF0dXBsZS50X2RhdGEsIHNlcWRhdGF0dXBsZS50X2xlbik7CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IDAyNDhhZWU4 M2Q3Li5jNThiNWI0NWYyOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RlY29kZS5jCkBAIC0xMzkwLDYgKzEzOTAsNyBAQCBzZXFfZGVjb2RlKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCVNuYXBzaG90CXNu YXBzaG90ID0gTlVMTDsKIAlSZXBPcmlnaW5JZCBvcmlnaW5faWQgPSBYTG9nUmVjR2V0T3Jp Z2luKHIpOwogCWJvb2wJCXRyYW5zYWN0aW9uYWw7CisJeGxfc2VxX3JlYyAqeGxyZWM7CiAK IAkvKiBpZ25vcmUgc2VxdWVuY2VzIHdoZW4gdGhlIHBsdWdpbiBkb2VzIG5vdCBoYXZlIHRo ZSBjYWxsYmFja3MgKi8KIAlpZiAoIWN0eC0+c2VxdWVuY2VzKQpAQCAtMTQzMiwxNCArMTQz MywxMCBAQCBzZXFfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1Jl Y29yZEJ1ZmZlciAqYnVmKQogCS8qCiAJICogU2hvdWxkIHdlIGhhbmRsZSB0aGUgc2VxdWVu Y2UgY2hhbmdlIGFzIHRyYW5zYWN0aW9uYWwgb3Igbm90PwogCSAqCi0JICogSWYgdGhlIHJl bGZpbGVub2RlIHdhcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLCB0cmVh dCB0aGUKLQkgKiBjaGFuZ2UgYXMgdHJhbnNhY3Rpb25hbCBhbmQgcXVldWUgaXQuIE90aGVy d2lzZSBpdCBuZWVkcyB0byBiZSB0cmVhdGVkCi0JICogYXMgbm9uLXRyYW5zYWN0aW9uYWws IGluIHdoaWNoIGNhc2Ugd2UganVzdCBzZW5kIGl0IHRvIHRoZSBwbHVnaW4gcmlnaHQKLQkg KiBhd2F5LgorCSAqIFhYWDogY2FuIHhscmVjIGJlIGNvbWJpbmVkIHdpdGggdHVwbGVkYXRh PwogCSAqLwotCXRyYW5zYWN0aW9uYWwgPSBSZW9yZGVyQnVmZmVyU2VxdWVuY2VJc1RyYW5z YWN0aW9uYWwoY3R4LT5yZW9yZGVyLAotCQkJCQkJCQkJCQkJCQkgdGFyZ2V0X2xvY2F0b3Is Ci0JCQkJCQkJCQkJCQkJCSB4aWQsIE5VTEwpOworCXhscmVjID0gKHhsX3NlcV9yZWMgKikg WExvZ1JlY0dldERhdGEocik7CisJdHJhbnNhY3Rpb25hbCA9IHhscmVjLT5pc190cmFuc2Fj dGlvbmFsOwogCiAJLyogU2tpcCB0aGUgY2hhbmdlIGlmIGFscmVhZHkgcHJvY2Vzc2VkIChw ZXIgdGhlIHNuYXBzaG90KS4gKi8KIAlpZiAodHJhbnNhY3Rpb25hbCAmJgpAQCAtMTQ4Niw2 NyArMTQ4MywzIEBAIHNlcV9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBY TG9nUmVjb3JkQnVmZmVyICpidWYpCiAJCQkJCQkJICAgb3JpZ2luX2lkLCB0YXJnZXRfbG9j YXRvciwgdHJhbnNhY3Rpb25hbCwKIAkJCQkJCQkgICB0dXBsZWJ1Zik7CiB9Ci0KLS8qCi0g KiBEZWNvZGUgcmVsZmlsZW5vZGUgY2hhbmdlCi0gKgotICogRGVjb2RlIFNNR1IgcmVjb3Jk cywgc28gdGhhdCB3ZSBjYW4gbGF0ZXIgZGVjaWRlIHdoaWNoIHNlcXVlbmNlIGNoYW5nZXMK LSAqIG5lZWQgdG8gYmUgdHJlYXRlZCBhcyB0cmFuc2FjdGlvbmFsLiBNb3N0IHNlcXVlbmNl IGNoYW5nZXMgYXJlIGdvaW5nIHRvCi0gKiBiZSBub24tdHJhbnNhY3Rpb25hbCAoYXBwbGll ZCBhcyBpZiBvdXRzaWRlIHRoZSBkZWNvZGVkIHRyYW5zYWN0aW9uLCBub3QKLSAqIHN1Ympl Y3QgdG8gcm9sbGJhY2ssIGV0Yy4pLiBDaGFuZ2VzIGZvciBzZXF1ZW5jZXMgY3JlYXRlZC9h bHRlcmVkIGluIHRoZQotICogdHJhbnNhY3Rpb24gbmVlZCB0byBiZSBoYW5kbGVkIGFzIHRy YW5zYWN0aW9uYWwgKGkuZS4gYXBwbGllZCBhcyBwYXJ0IG9mCi0gKiB0aGUgZGVjb2RlZCB0 cmFuc2FjdGlvbiwgc2FtZSBhcyBhbGwgb3RoZXIgY2hhbmdlcykuCi0gKgotICogVG8gZGVj aWRlIHdoaWNoIG9mIHRob3NlIGNhc2VzIGlzIGl0IHdlIGRlY29kZSBYTE9HX1NNR1JfQ1JF QVRFIHJlY29yZHMKLSAqIGFuZCB0cmFjayByZWxmaWxlbm9kZXMgY3JlYXRlZCBpbiBlYWNo IChzdWIpdHJhbnNhY3Rpb24uIENoYW5nZXMgZm9yCi0gKiB0aGVzZSByZWxmaWxlbm9kZXMg YXJlIHRoZW4gcXVldWVkIGFuZCB0cmVhdGVkIGFzIHRyYW5zYWN0aW9uYWwsIHdoaWxlCi0g KiByZW1haW5pbmcgY2hhbmdlcyBhcmUgdHJlYXRlZCBhcyBub24tdHJhbnNhY3Rpb25hbC4K LSAqCi0gKiBXZSBvbmx5IGNhcmUgYWJvdXQgWExPR19TTUdSX0NSRUFURSByZWNvcmRzIGZv ciAib3VyIiBkYXRhYmFzZSAobG9naWNhbAotICogZGVjb2RpbmcgaXMgcmVzdHJpY3RlZCB0 byBhIHNpbmdsZSBkYXRhYmFzZSksIGFuZCB3ZSBkbyB0aGUgZmlsdGVyaW5nCi0gKiBhbmQg c2tpcHBpbmcsIGFzIGFwcHJvcHJpYXRlLgotICovCi12b2lkCi1zbWdyX2RlY29kZShMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKLXsKLQlT bmFwQnVpbGQgICpidWlsZGVyID0gY3R4LT5zbmFwc2hvdF9idWlsZGVyOwotCVhMb2dSZWFk ZXJTdGF0ZSAqciA9IGJ1Zi0+cmVjb3JkOwotCVRyYW5zYWN0aW9uSWQgeGlkID0gWExvZ1Jl Y0dldFhpZChyKTsKLQl1aW50OAkJaW5mbyA9IFhMb2dSZWNHZXRJbmZvKGJ1Zi0+cmVjb3Jk KSAmIH5YTFJfSU5GT19NQVNLOwotCXhsX3NtZ3JfY3JlYXRlICp4bHJlYzsKLQotCS8qCi0J ICogQmFpbCBvdXQgd2hlbiBub3QgZGVjb2Rpbmcgc2VxdWVuY2VzLCB3aGljaCBpcyBjdXJy ZW50bHkgdGhlIG9ubHkgY2FzZQotCSAqIHdoZW4gd2UgbmVlZCB0byBrbm93IGFib3V0IHJl bGZpbGVub2RlcyBjcmVhdGVkIGluIGEgdHJhbnNhY3Rpb24uCi0JICovCi0JaWYgKCFjdHgt PnNlcXVlbmNlcykKLQkJcmV0dXJuOwotCi0JLyoKLQkgKiBXZSBvbmx5IGNhcmUgYWJvdXQg WExPR19TTUdSX0NSRUFURSwgYmVjYXVzZSB0aGF0J3Mgd2hhdCBkZXRlcm1pbmVzIGlmCi0J ICogdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBjaGFuZ2VzIGFyZSB0cmFuc2FjdGlvbmFsLgot CSAqLwotCWlmIChpbmZvICE9IFhMT0dfU01HUl9DUkVBVEUpCi0JCXJldHVybjsKLQotCVJl b3JkZXJCdWZmZXJQcm9jZXNzWGlkKGN0eC0+cmVvcmRlciwgWExvZ1JlY0dldFhpZChyKSwg YnVmLT5vcmlncHRyKTsKLQotCS8qCi0JICogSWYgd2UgZG9uJ3QgaGF2ZSBzbmFwc2hvdCBv ciB3ZSBhcmUganVzdCBmYXN0LWZvcndhcmRpbmcsIHRoZXJlIGlzIG5vCi0JICogcG9pbnQg aW4gZGVjb2RpbmcgcmVsZmlsZW5vZGUgaW5mb3JtYXRpb24uCi0JICovCi0JaWYgKFNuYXBC dWlsZEN1cnJlbnRTdGF0ZShidWlsZGVyKSA8IFNOQVBCVUlMRF9GVUxMX1NOQVBTSE9UIHx8 Ci0JCWN0eC0+ZmFzdF9mb3J3YXJkKQotCQlyZXR1cm47Ci0KLQkvKiBvbmx5IGludGVyZXN0 ZWQgaW4gb3VyIGRhdGFiYXNlICovCi0JeGxyZWMgPSAoeGxfc21ncl9jcmVhdGUgKikgWExv Z1JlY0dldERhdGEocik7Ci0JaWYgKHhscmVjLT5ybG9jYXRvci5kYk9pZCAhPSBjdHgtPnNs b3QtPmRhdGEuZGF0YWJhc2UpCi0JCXJldHVybjsKLQotCS8qIG91dHB1dCBwbHVnaW4gZG9l c24ndCBsb29rIGZvciB0aGlzIG9yaWdpbiwgbm8gbmVlZCB0byBxdWV1ZSAqLwotCWlmIChG aWx0ZXJCeU9yaWdpbihjdHgsIFhMb2dSZWNHZXRPcmlnaW4ocikpKQotCQlyZXR1cm47Ci0K LQlSZW9yZGVyQnVmZmVyQWRkUmVsRmlsZUxvY2F0b3IoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1 Zi0+ZW5kcHRyLCB4bHJlYy0+cmxvY2F0b3IpOwotfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCA2MTc4MWI2MmJiOC4u NDEyMTI2OWEwOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0yNjgsNyArMjY4LDYgQEAgc3RhdGljIHZvaWQgUmVv cmRlckJ1ZmZlclRyYW5zZmVyU25hcFRvUGFyZW50KFJlb3JkZXJCdWZmZXJUWE4gKnR4biwK IAkJCQkJCQkJCQkJICBSZW9yZGVyQnVmZmVyVFhOICpzdWJ0eG4pOwogCiBzdGF0aWMgdm9p ZCBBc3NlcnRUWE5Mc25PcmRlcihSZW9yZGVyQnVmZmVyICpyYik7Ci1zdGF0aWMgdm9pZCBB c3NlcnRDaGVja1NlcXVlbmNlcyhSZW9yZGVyQnVmZmVyICpyYik7CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogc3VwcG9ydCBmdW5jdGlvbnMg Zm9yIGxzbi1vcmRlciBpdGVyYXRpbmcgb3ZlciB0aGUgLT5jaGFuZ2VzIG9mIGEKQEAgLTUw MCw0OCArNDk5LDEyIEBAIFJlb3JkZXJCdWZmZXJSZXR1cm5UWE4oUmVvcmRlckJ1ZmZlciAq cmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKIAkJdHhuLT5pbnZhbGlkYXRpb25zID0gTlVM TDsKIAl9CiAKLQlpZiAodHhuLT5zZXF1ZW5jZXNfaGFzaCAhPSBOVUxMKQotCXsKLQkJaGFz aF9kZXN0cm95KHR4bi0+c2VxdWVuY2VzX2hhc2gpOwotCQl0eG4tPnNlcXVlbmNlc19oYXNo ID0gTlVMTDsKLQl9Ci0KIAkvKiBSZXNldCB0aGUgdG9hc3QgaGFzaCAqLwogCVJlb3JkZXJC dWZmZXJUb2FzdFJlc2V0KHJiLCB0eG4pOwogCiAJcGZyZWUodHhuKTsKIH0KIAotLyoKLSAq IEluaXRpYWxpemUgaGFzaCB0YWJsZSBvZiByZWxmaWxlbm9kZXMgY3JlYXRlZCBieSB0aGUg dHJhbnNhY3Rpb24uCi0gKgotICogRWFjaCBlbnRyeSBtYXBzIHRoZSByZWxmaWxlbm9kZSB0 byB0aGUgKHN1Yil0cmFuc2FjdGlvbiB0aGF0IGNyZWF0ZWQgdGhlCi0gKiByZWxmaWxlbm9k ZSAtIHdoaWNoIGlzIGFsc28gdGhlIHRyYW5zYWN0aW9uIHRoZSBzZXF1ZW5jZSBjaGFuZ2Ug bmVlZHMgdG8KLSAqIGJlIHBhcnQgb2YgKGluIHRyYW5zYWN0aW9uYWwgY2FzZSkuCi0gKgot ICogV2UgZG9uJ3QgZG8gdGhpcyBpbiBSZW9yZGVyQnVmZmVyR2V0VFhOIGJlY2F1c2UgdGhh dCdkIGFsbG9jYXRlIHRoZSBoYXNoCi0gKiBmb3IgYWxsIHRyYW5zYWN0aW9ucywgYW5kIHdl IGV4cGVjdCBuZXcgcmVsZmlsZW5vZGVzIHRvIGJlIGZhaXJseSByYXJlLgotICogU28gb25s eSBkbyB0aGF0IHdoZW4gYWRkaW5nIHRoZSBmaXJzdCBlbnRyeS4KLSAqLwotc3RhdGljIHZv aWQKLVJlb3JkZXJCdWZmZXJUWE5TZXF1ZW5jZXNJbml0KFJlb3JkZXJCdWZmZXIgKnJiLCBS ZW9yZGVyQnVmZmVyVFhOICp0eG4pCi17Ci0JSEFTSENUTAkJaGFzaF9jdGw7Ci0KLQkvKiBi YWlsIG91dCBpZiBhbHJlYWR5IGluaXRpYWxpemVkICovCi0JaWYgKHR4bi0+c2VxdWVuY2Vz X2hhc2gpCi0JCXJldHVybjsKLQotCS8qIGhhc2ggdGFibGUgb2Ygc2VxdWVuY2VzLCBtYXBw aW5nIHJlbGZpbGVsb2NhdG9yIHRvIHRyYW5zYWN0aW9uICovCi0JaGFzaF9jdGwua2V5c2l6 ZSA9IHNpemVvZihSZWxGaWxlTG9jYXRvcik7Ci0JaGFzaF9jdGwuZW50cnlzaXplID0gc2l6 ZW9mKFJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCk7Ci0JaGFzaF9jdGwuaGN4dCA9IHJiLT5j b250ZXh0OwotCi0JLyogd2UgZXhwZWN0IHJlbGZpbGVub2RlcyB0byBiZSBjcmVhdGVkIG9u bHkgcmFyZWx5LCBzbyAzMiBzZWVtcyBlbm91Z2ggKi8KLQl0eG4tPnNlcXVlbmNlc19oYXNo ID0gaGFzaF9jcmVhdGUoIlJlb3JkZXJCdWZmZXJUWE5TZXF1ZW5jZUhhc2giLCAzMiwgJmhh c2hfY3RsLAotCQkJCQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05U RVhUKTsKLX0KLQogLyoKICAqIEdldCBhIGZyZXNoIFJlb3JkZXJCdWZmZXJDaGFuZ2UuCiAg Ki8KQEAgLTk4MywxMTUgKzk0Niw2IEBAIFJlb3JkZXJCdWZmZXJRdWV1ZU1lc3NhZ2UoUmVv cmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCX0KIH0KIAotLyoKLSAqIFRy ZWF0IHRoZSBzZXF1ZW5jZSBjaGFuZ2UgYXMgdHJhbnNhY3Rpb25hbD8KLSAqCi0gKiBUbyBk ZWNpZGUgaWYgYSBzZXF1ZW5jZSBjaGFuZ2Ugc2hvdWxkIGJlIGhhbmRsZWQgYXMgdHJhbnNh Y3Rpb25hbCBvciBhcHBsaWVkCi0gKiBpbW1lZGlhdGVseSwgd2UgbmVlZCB0byBkZWNpZGUg aWYgdGhlIHJlbGZpbGVub2RlIHdhcyBjcmVhdGVkIGJ5IGEgcnVubmluZwotICogdHJhbnNh Y3Rpb24uIEVhY2ggdHJhbnNhY3Rpb24gaGFzIGEgaGFzaCB0YWJsZSBvZiBzdWNoIHJlbGZp bGVub2Rlcy4KLSAqCi0gKiBBIG5haXZlIGFwcHJvYWNoIHdvdWxkIGJlIHRvIGp1c3QgbG9v cCB0aHJvdWdoIGFsbCB0cmFuc2FjdGlvbnMgYW5kIGNoZWNrCi0gKiBlYWNoIG9mIHRoZW0s IGJ1dCB0aGVyZSBtYXkgYmUgKGVhc2lseSB0aG91c2FuZHMpIG9mIHN1YnRyYW5zYWN0aW9u cywgYW5kCi0gKiB0aGUgY2hlY2sgaGFwcGVucyBmb3IgZWFjaCBzZXF1ZW5jZSBjaGFuZ2Uu IFNvIHRoaXMgY291bGQgYmUgdmVyeSBjb3N0bHkuCi0gKgotICogVG8gbGltaXQgdGhlIG51 bWJlciBvZiB0cmFuc2FjdGlvbnMgd2UgbmVlZCB0byBjaGVjaywgd2UgdHJhbnNmZXIgdGhl Ci0gKiByZWxmaWxlbm9kZXMgdG8gdGhlIHRvcC1sZXZlbCB4YWN0LCB3aGljaCBhbGxvd3Mg dXMgdG8gY2hlY2sganVzdCB0aGUKLSAqIHRvcC1sZXZlbCB4YWN0cyAoYW5kIHRoZXJlIHNo b3VsZCBiZSBhIHZlcnkgbGltaXRlZCBudW1iZXIgb2YgdGhvc2UpLiBXZQotICogZXhwZWN0 IHJlbGZpbGVub2RlIGNyZWF0aW9uIHRvIGJlIGEgcXVpdGUgcmFyZSB0aGluZywgc28gdGhp cyBzaG91bGQgbm90Ci0gKiB3YXN0ZSB0b28gbXVjaCBtZW1vcnkuIE9UT0ggc2VxdWVuY2Ug Y2hhbmdlcyBhcmUgdmVyeSBjb21tb24sIHNvIG1ha2luZwotICogdGhlIGNoZWNrIGNoZWFw ZXIgc2VlbXMgbGlrZSBhIGdvb2QgdHJhZGUgb2ZmLgotICoKLSAqIFJldHVybnMgdHJ1ZSBm b3IgdHJhbnNhY3Rpb25hbCBjaGFuZ2VzLCBmYWxzZSBvdGhlcndpc2UuCi0gKgotICogT3B0 aW9uYWx5ICh3aGVuIHRoZSAieGlkIiBwYXJhbWV0ZXIgaXMgc2V0KSByZXR1cm5zIFhJRCBv ZiB0aGUgKHN1Yil4YWN0Ci0gKiB0byB1c2UgZm9yIHF1ZXVlaW5nIHRyYW5zYWN0aW9uYWwg Y2hhbmdlcy4KLSAqCi0gKiBYWFggQXMgYW4gb3B0aW1pemF0aW9uLCBtYXliZSB3ZSBzaG91 bGQgdHJ5IHNlYXJjaGluZyB0aGUgY3VycmVudCB4YWN0IChvcgotICogaXQncyB0b3AtbGV2 ZWwgeGFjdCkgZmlyc3QuIElmIHRoZSBjaGFuZ2UgaXMgdHJhbnNhY3Rpb25hbCwgd2hlcmUg d2UnZAotICogZmluZCB0aGUgbWF0Y2guCi0gKi8KLWJvb2wKLVJlb3JkZXJCdWZmZXJTZXF1 ZW5jZUlzVHJhbnNhY3Rpb25hbChSZW9yZGVyQnVmZmVyICpyYiwKLQkJCQkJCQkJCSBSZWxG aWxlTG9jYXRvciBybG9jYXRvciwKLQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIHhpZGluLAot CQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnhpZG91dCkKLXsKLQlib29sCQlmb3VuZCA9IGZh bHNlOwotCVJlb3JkZXJCdWZmZXJUWE4gICAqdHhuOwotCVJlb3JkZXJCdWZmZXJTZXF1ZW5j ZUVudCAqZW50cnk7Ci0KLQlBc3NlcnRDaGVja1NlcXVlbmNlcyhyYik7Ci0KLQkvKgotCSAq IFRyeSB0byBsb29rdXAgdHJhbnNhY3Rpb24gd2l0aCB0aGUgWElEIG9mIHRoZSBjaGFuZ2Uu IElmIGl0IGV4aXN0cywgdGhlCi0JICogcmVsZmlsZW5vZGUgd291bGQgaGF2ZSB0byBiZSBl aXRoZXIgaW4gaXQgb3IgdGhlIHRvcC1sZXZlbCB0cmFuc2FjdGlvbgotCSAqIChpZiBpdCB3 YXMgY3JlYXRlZCBpbiBzb21lIGVhcmxpZXIgc3VidHJhbnNhY3Rpb24pLgotCSAqCi0JICog SWYgdGhpcyBpcyBhIHN1YnhhY3QsIHdlJ2xsIHNlYXJjaCBqdXN0IHRoZSB0b3AtbGV2ZWwg aGFzaCB0YWJsZS4gVGhhdCdzCi0JICogc2ltcGxlciBhbmQgbGlrZWx5IGZhc3RlciB0aGFu IGhhdmluZyB0byBzZWFyY2ggdHdvIGhhc2ggdGFibGVzLgotCSAqLwotCXR4biA9IFJlb3Jk ZXJCdWZmZXJUWE5CeVhpZChyYiwgeGlkaW4sIGZhbHNlLCBOVUxMLCBJbnZhbGlkWExvZ1Jl Y1B0ciwKLQkJCQkJCQkJZmFsc2UpOwotCi0JaWYgKCF0eG4pCi0JCXJldHVybiBmYWxzZTsK LQotCS8qIElmIHRoZXJlJ3MgdG9wLWxldmVsIHRyYW5zYWN0aW9uLCBzZWFyY2ggdGhhdCBv bmUuICovCi0JdHhuID0gKHR4bi0+dG9wdHhuKSA/IHR4bi0+dG9wdHhuIDogdHhuOwotCi0J LyogdHJhbnNhY3Rpb24gaGFzIG5vIHJlbGZpbGVub2RlcywgY2FuJ3QgYmUgdHJhbnNhY3Rp b25hbCAqLwotCWlmICghdHhuLT5zZXF1ZW5jZXNfaGFzaCkKLQkJcmV0dXJuIGZhbHNlOwot Ci0JZW50cnkgPSBoYXNoX3NlYXJjaCh0eG4tPnNlcXVlbmNlc19oYXNoLAotCQkJCQkJKHZv aWQgKikgJnJsb2NhdG9yLAotCQkJCQkJSEFTSF9GSU5ELAotCQkJCQkJJmZvdW5kKTsKLQot CWlmICghZm91bmQpCi0JCXJldHVybiBmYWxzZTsKLQotCWlmICh4aWRvdXQpCi0JCSp4aWRv dXQgPSBlbnRyeS0+dHhuLT54aWQ7Ci0KLQlyZXR1cm4gdHJ1ZTsKLX0KLQotLyoKLSAqIENs ZWFudXAgc2VxdWVuY2VzIGFmdGVyIGEgc3VidHJhbnNhY3Rpb24gZ290IGFib3J0ZWQuCi0g KgotICogVGhlIGhhc2ggdGFibGUgd2lsbCBnZXQgZGVzdHJveWVkIGluIFJlb3JkZXJCdWZm ZXJSZXR1cm5UWE4sIHNvIHdlIGRvbid0Ci0gKiBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoYXQu IEJ1dCB0aGUgZW50cmllcyB3ZXJlIGNvcGllZCB0byB0aGUgcGFyZW50IHhhY3QsCi0gKiBh bmQgdGhhdCdzIHN0aWxsIGJlaW5nIGRlY29kZWQgLSB3ZSBtYWtlIHN1cmUgdG8gcmVtb3Zl IHRoZSBlbnRyaWVzIGZyb20KLSAqIHRoZSBhYm9ydGVkIG9uZS4KLSAqLwotc3RhdGljIHZv aWQKLVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUNsZWFudXAoUmVvcmRlckJ1ZmZlclRYTiAqdHhu KQotewotCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKLQlSZW9yZGVyQnVmZmVyU2Vx dWVuY2VFbnQgKmVudDsKLQotCS8qIEJhaWwgb3V0IGlmIG5vdCBhIHN1YnhhY3QsIG9yIGlm IHRoZXJlIGFyZSBubyBlbnRyaWVzLiAqLwotCWlmICghcmJ0eG5faXNfa25vd25fc3VieGFj dCh0eG4pKQotCQlyZXR1cm47Ci0KLQlpZiAoIXR4bi0+c2VxdWVuY2VzX2hhc2gpCi0JCXJl dHVybjsKLQotCS8qCi0JICogU2NhbiB0aGUgdG9wLWxldmVsIHRyYW5zYWN0aW9uIGhhc2gg YW5kIHJlbW92ZSB0aGUgZW50cmllcyBmcm9tIGl0LiBJZgotCSAqIHdlIGhhdmUgZW50cmll cyBmb3Igc3VieGFjdCwgdGhlIHRvcC1sZXZlbCBoYXNoIG11c3QgaGF2ZSBiZWVuCi0JICog aW5pdGlhbGl6ZWQuCi0JICovCi0JaGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHR4bi0+ c2VxdWVuY2VzX2hhc2gpOwotCXdoaWxlICgoZW50ID0gKFJlb3JkZXJCdWZmZXJTZXF1ZW5j ZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3RhdHVzKSkgIT0gTlVMTCkKLQl7Ci0J CSh2b2lkKSBoYXNoX3NlYXJjaCh0eG4tPnRvcHR4bi0+c2VxdWVuY2VzX2hhc2gsCi0JCQkJ CQkgICAodm9pZCAqKSAmZW50LT5ybG9jYXRvciwKLQkJCQkJCSAgIEhBU0hfUkVNT1ZFLCBO VUxMKTsKLQl9Ci19Ci0KIC8qCiAgKiBBIHRyYW5zYWN0aW9uYWwgc2VxdWVuY2UgY2hhbmdl IGlzIHF1ZXVlZCB0byBiZSBwcm9jZXNzZWQgdXBvbiBjb21taXQKICAqIGFuZCBhIG5vbi10 cmFuc2FjdGlvbmFsIGNoYW5nZSBnZXRzIHByb2Nlc3NlZCBpbW1lZGlhdGVseS4KQEAgLTEx MDcsOCArOTYxLDYgQEAgUmVvcmRlckJ1ZmZlclF1ZXVlU2VxdWVuY2UoUmVvcmRlckJ1ZmZl ciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJICAgUmVsRmlsZUxvY2F0b3Igcmxv Y2F0b3IsIGJvb2wgdHJhbnNhY3Rpb25hbCwKIAkJCQkJCSAgIFJlb3JkZXJCdWZmZXJUdXBs ZUJ1ZiAqdHVwbGVidWYpCiB7Ci0JQXNzZXJ0Q2hlY2tTZXF1ZW5jZXMocmIpOwotCiAJLyoK IAkgKiBDaGFuZ2UgbmVlZHMgdG8gYmUgaGFuZGxlZCBhcyB0cmFuc2FjdGlvbmFsLCBiZWNh dXNlIHRoZSBzZXF1ZW5jZSB3YXMKIAkgKiBjcmVhdGVkIGluIGEgdHJhbnNhY3Rpb24gdGhh dCBpcyBzdGlsbCBzZWVuIGFzIHJ1bm5pbmcuIEluIHRoYXQgY2FzZQpAQCAtMTE0Miw5ICs5 OTQsNiBAQCBSZW9yZGVyQnVmZmVyUXVldWVTZXF1ZW5jZShSZW9yZGVyQnVmZmVyICpyYiwg VHJhbnNhY3Rpb25JZCB4aWQsCiAKIAkJY2hhbmdlLT5kYXRhLnNlcXVlbmNlLnR1cGxlID0g dHVwbGVidWY7CiAKLQkJLyogbG9va3VwIHRoZSBYSUQgZm9yIHRyYW5zYWN0aW9uIHRoYXQg Y3JlYXRlZCB0aGUgcmVsZmlsZW5vZGUgKi8KLQkJUmVvcmRlckJ1ZmZlclNlcXVlbmNlSXNU cmFuc2FjdGlvbmFsKHJiLCBybG9jYXRvciwgeGlkLCAmeGlkKTsKLQogCQkvKiB0aGUgWElE IHNob3VsZCBiZSB2YWxpZCBmb3IgYSB0cmFuc2FjdGlvbmFsIGNoYW5nZSAqLwogCQlBc3Nl cnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSk7CiAKQEAgLTExNjcsOSArMTAxNiw2IEBA IFJlb3JkZXJCdWZmZXJRdWV1ZVNlcXVlbmNlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2Fj dGlvbklkIHhpZCwKIAkJLyogbm9uLXRyYW5zYWN0aW9uYWwgY2hhbmdlcyByZXF1aXJlIGEg dmFsaWQgc25hcHNob3QgKi8KIAkJQXNzZXJ0KHNuYXBzaG90X25vdyk7CiAKLQkJLyogTWFr ZSBzdXJlIHRoZSBzZXF1ZW5jZSBpcyBub3QgaW4gYW55IG9mIHRoZSBoYXNoIHRhYmxlcyAq LwotCQlBc3NlcnQoIVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUlzVHJhbnNhY3Rpb25hbChyYiwg cmxvY2F0b3IsIHhpZCwgTlVMTCkpOwotCiAJCWlmICh4aWQgIT0gSW52YWxpZFRyYW5zYWN0 aW9uSWQpCiAJCQl0eG4gPSBSZW9yZGVyQnVmZmVyVFhOQnlYaWQocmIsIHhpZCwgdHJ1ZSwg TlVMTCwgbHNuLCB0cnVlKTsKIApAQCAtMTI1MSw4MCArMTA5Nyw3IEBAIFJlb3JkZXJCdWZm ZXJRdWV1ZVNlcXVlbmNlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwK IAl9CiB9CiAKLS8qCi0gKiBSZW9yZGVyQnVmZmVyQWRkUmVsRmlsZUxvY2F0b3IKLSAqCQlB ZGQgbmV3bHkgY3JlYXRlZCByZWxmaWxlbm9kZSB0byB0aGUgaGFzaCB0YWJsZSBmb3IgdHJh bnNhY3Rpb24uCi0gKgotICogSWYgdGhlIHRyYW5zYWN0aW9uIGlzIGFscmVhZHkga25vd24g dG8gYmUgYSBzdWJ0cmFuc2FjdGlvbiwgd2UgYWRkIHRoZSBzYW1lCi0gKiBlbnRyeSBpbnRv IHRoZSBwYXJlbnQgdHJhbnNhY3Rpb24gKGJ1dCBpdCBzdGlsbCBwb2ludHMgYXQgdGhlIHN1 YnhhY3QsIHNvCi0gKiB0aGF0IHdlIGtub3cgd2hlcmUgdG8gcXVldWUgY2hhbmdlcyBvciB3 aGF0IHRvIGRpc2NhcmQgaW4gY2FzZSBvZiBhbiBhYm9ydCkuCi0gKi8KLXZvaWQKLVJlb3Jk ZXJCdWZmZXJBZGRSZWxGaWxlTG9jYXRvcihSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rp b25JZCB4aWQsCi0JCQkJCQkJICAgWExvZ1JlY1B0ciBsc24sIFJlbEZpbGVMb2NhdG9yIHJs b2NhdG9yKQotewotCWJvb2wJCWZvdW5kOwotCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAq ZW50cnk7Ci0JUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwotCi0JQXNzZXJ0Q2hlY2tTZXF1ZW5j ZXMocmIpOwotCi0JLyoKLQkgKiBXZSBvbmx5IGNhcmUgYWJvdXQgc2VxdWVuY2UgcmVsZmls ZW5vZGVzIGZvciBub3csIGFuZCB0aG9zZSBhbHdheXMgaGF2ZQotCSAqIGEgWElELiBTbyBp ZiB0aGVyZSdzIG5vIFhJRCwgZG9uJ3QgYm90aGVyIGFkZGluZyB0aGVtIHRvIHRoZSBoYXNo LgotCSAqLwotCWlmICh4aWQgPT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpCi0JCXJldHVybjsK LQotCS8qCi0JICogVGhpcyBtaWdodCBiZSB0aGUgZmlyc3QgY2hhbmdlIGRlY29kZWQgZm9y IHRoaXMgdHJhbnNhY3Rpb24sIHNvIG1ha2UKLQkgKiBzdXJlIHdlIGNyZWF0ZSBpdCBpZiBu ZWVkZWQuCi0JICovCi0JdHhuID0gUmVvcmRlckJ1ZmZlclRYTkJ5WGlkKHJiLCB4aWQsIHRy dWUsIE5VTEwsIGxzbiwgdHJ1ZSk7Ci0KLQkvKgotCSAqIEZpcnN0IGFkZCBpdCB0byB0aGUg dG9wLWxldmVsIHRyYW5zYWN0aW9uLCBidXQgbWFrZSBzdXJlIGl0IGxpbmtzIHRvCi0JICog dGhlIGNvcnJlY3Qgc3VidHJhbnNhY3Rpb24gKHNvIHRoYXQgd2UgYWRkIGxhdGVyIGNoYW5n ZXMgdG8gaXQpLgotCSAqLwotCWlmICh0eG4tPnRvcHR4bikKLQl7Ci0JCS8qIG1ha2Ugc3Vy ZSB0aGUgaGFzaCB0YWJsZSBpcyBpbml0aWFsaXplZCAqLwotCQlSZW9yZGVyQnVmZmVyVFhO U2VxdWVuY2VzSW5pdChyYiwgdHhuLT50b3B0eG4pOwogCi0JCS8qIHNlYXJjaCB0aGUgbG9v a3VwIHRhYmxlICovCi0JCWVudHJ5ID0gaGFzaF9zZWFyY2godHhuLT50b3B0eG4tPnNlcXVl bmNlc19oYXNoLAotCQkJCQkJCSh2b2lkICopICZybG9jYXRvciwKLQkJCQkJCQlIQVNIX0VO VEVSLAotCQkJCQkJCSZmb3VuZCk7Ci0KLQkJLyoKLQkJICogV2UndmUganVzdCBkZWNvZGVk IGNyZWF0aW9uIG9mIHRoZSByZWxmaWxlbm9kZSwgc28gaWYgd2UgZm91bmQgaXQKLQkJICog aW4gdGhlIGhhc2ggdGFibGUsIHNvbWV0aGluZyBpcyB3cm9uZy4KLQkJICovCi0JCUFzc2Vy dCghZm91bmQpOwotCi0JCWVudHJ5LT50eG4gPSB0eG47Ci0JfQotCi0JLyogbWFrZSBzdXJl IHRoZSBoYXNoIHRhYmxlIGlzIGluaXRpYWxpemVkICovCi0JUmVvcmRlckJ1ZmZlclRYTlNl cXVlbmNlc0luaXQocmIsIHR4bik7Ci0KLQkvKiBzZWFyY2ggdGhlIGxvb2t1cCB0YWJsZSAq LwotCWVudHJ5ID0gaGFzaF9zZWFyY2godHhuLT5zZXF1ZW5jZXNfaGFzaCwKLQkJCQkJCSh2 b2lkICopICZybG9jYXRvciwKLQkJCQkJCUhBU0hfRU5URVIsCi0JCQkJCQkmZm91bmQpOwot Ci0JLyoKLQkgKiBXZSd2ZSBqdXN0IGRlY29kZWQgY3JlYXRpb24gb2YgdGhlIHJlbGZpbGVu b2RlLCBzbyBpZiB3ZSBmb3VuZCBpdCBpbgotCSAqIHRoZSBoYXNoIHRhYmxlLCBzb21ldGhp bmcgaXMgd3JvbmcuCi0JICovCi0JQXNzZXJ0KCFmb3VuZCk7Ci0KLQllbnRyeS0+dHhuID0g dHhuOwotCi0JQXNzZXJ0Q2hlY2tTZXF1ZW5jZXMocmIpOwotfQogCiAvKgogICogQXNzZXJ0 VFhOTHNuT3JkZXIKQEAgLTE0MDAsMTYxICsxMTczLDYgQEAgQXNzZXJ0VFhOTHNuT3JkZXIo UmVvcmRlckJ1ZmZlciAqcmIpCiAjZW5kaWYKIH0KIAotLyoKLSAqIEFzc2VydENoZWNrU2Vx dWVuY2VzCi0gKgkJVmVyaWZ5IGNvbnNpc3RlbmN5IG9mIGhhc2ggdGFibGVzIHRyYWNraW5n IG5ldyByZWxmaWxlbm9kZXMuCi0gKgotICogV2UgY2hlY2sgdGhhdCB0aGUgaGFzaCB0YWJs ZSBpbiB0aGUgdG9wLWxldmVsIHRyYW5zYWN0aW9uIGlzIGNvbnNpc3RlbnQgd2l0aAotICog cmVzcGVjdCB0byB0aGUgaGFzaCB0YWJsZXMgaW4gaXQncyBzdWJ4YWN0cy4gVGhhdCBpcywg ZWFjaCBlbnRyeSBoYXMgdG8gYmUKLSAqIGVpdGhlciBmcm9tIHRoZSB0b3AtbGV2ZWwgeGFj dCBvciBvbmUgb2YgaXQncyBzdWJ0cmFuc2FjdGlvbnMuIExpa2V3aXNlLCBlYWNoCi0gKiBl bnRyeSBpbiBzdWJ4YWN0IGhhc2ggdGFibGUgaGFzIHRvIGhhdmUgYSBtYXRjaCBpbiB0aGUg dG9wLWxldmVsIGhhc2ggdGFibGUuCi0gKi8KLXN0YXRpYyB2b2lkCi1Bc3NlcnRDaGVja1Nl cXVlbmNlcyhSZW9yZGVyQnVmZmVyICpyYikKLXsKLSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNL SU5HCi0JTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4ID0gcmItPnByaXZhdGVfZGF0YTsK LQlkbGlzdF9pdGVyCWl0ZXI7Ci0KLQkvKgotCSAqIFNraXAgdGhlIHZlcmlmaWNhdGlvbiBp ZiB3ZSBkb24ndCByZWFjaCB0aGUgTFNOIGF0IHdoaWNoIHdlIHN0YXJ0Ci0JICogZGVjb2Rp bmcgdGhlIGNvbnRlbnRzIG9mIHRyYW5zYWN0aW9ucyB5ZXQgYmVjYXVzZSB1bnRpbCB3ZSBy ZWFjaCB0aGUKLQkgKiBMU04sIHdlIGNvdWxkIGhhdmUgdHJhbnNhY3Rpb25zIHRoYXQgZG9u J3QgaGF2ZSB0aGUgYXNzb2NpYXRpb24gYmV0d2VlbgotCSAqIHRoZSB0b3AtbGV2ZWwgdHJh bnNhY3Rpb24gYW5kIHN1YnRyYW5zYWN0aW9uIHlldCBhbmQgY29uc2VxdWVudGx5IGhhdmUK LQkgKiB0aGUgc2FtZSBMU04uICBXZSBkb24ndCBndWFyYW50ZWUgdGhpcyBhc3NvY2lhdGlv biB1bnRpbCB3ZSB0cnkgdG8KLQkgKiBkZWNvZGUgdGhlIGFjdHVhbCBjb250ZW50cyBvZiB0 cmFuc2FjdGlvbi4gVGhlIG9yZGVyaW5nIG9mIHRoZSByZWNvcmRzCi0JICogcHJpb3IgdG8g dGhlIHN0YXJ0X2RlY29kaW5nX2F0IExTTiBzaG91bGQgaGF2ZSBiZWVuIGNoZWNrZWQgYmVm b3JlIHRoZQotCSAqIHJlc3RhcnQuCi0JICovCi0JaWYgKFNuYXBCdWlsZFhhY3ROZWVkc1Nr aXAoY3R4LT5zbmFwc2hvdF9idWlsZGVyLCBjdHgtPnJlYWRlci0+RW5kUmVjUHRyKSkKLQkJ cmV0dXJuOwotCi0JLyoKLQkgKiBNYWtlIHN1cmUgdGhlIHJlbGZpbGVub2RlcyBmcm9tIHN1 YnhhY3RzIGFyZSBwcm9wZXJseSByZWNvcmRlZCBpbiB0aGUKLQkgKiB0b3AtbGV2ZWwgdHJh bnNhY3Rpb24gaGFzaCB0YWJsZS4KLQkgKi8KLQlkbGlzdF9mb3JlYWNoKGl0ZXIsICZyYi0+ dG9wbGV2ZWxfYnlfbHNuKQotCXsKLQkJaW50CQkJbmVudHJpZXMgPSAwLAotCQkJCQluc3Vi ZW50cmllcyA9IDA7Ci0JCWRsaXN0X2l0ZXIJc3ViaXRlcjsKLQkJUmVvcmRlckJ1ZmZlclRY TiAqdHhuID0gZGxpc3RfY29udGFpbmVyKFJlb3JkZXJCdWZmZXJUWE4sIG5vZGUsCi0JCQkJ CQkJCQkJCQlpdGVyLmN1cik7Ci0KLQkJLyoKLQkJICogV2UgZG9uJ3Qgc2tpcCB0b3AtbGV2 ZWwgdHJhbnNhY3Rpb25zIHdpdGhvdXQgcmVsZmlsZW5vZGVzLCBiZWNhdXNlCi0JCSAqIHRo ZXJlIG1pZ2h0IGJlIGEgc3VidHJhbnNhY3Rpb24gd2l0aCBzb21lLCBhbmQgd2Ugd2FudCB0 byBkZXRlY3QKLQkJICogc3VjaCBjYXNlcyB0b28uCi0JCSAqLwotCQlpZiAodHhuLT5zZXF1 ZW5jZXNfaGFzaCkKLQkJCW5lbnRyaWVzID0gaGFzaF9nZXRfbnVtX2VudHJpZXModHhuLT5z ZXF1ZW5jZXNfaGFzaCk7Ci0KLQkJLyogd2FsayBhbGwgc3VieGFjdHMsIGFuZCBjaGVjayB0 aGUgaGFzaCB0YWJsZSBpbiBlYWNoIG9uZSAqLwotCQlkbGlzdF9mb3JlYWNoKHN1Yml0ZXIs ICZ0eG4tPnN1YnR4bnMpCi0JCXsKLQkJCUhBU0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsK LQkJCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAqZW50cnk7Ci0KLQkJCVJlb3JkZXJCdWZm ZXJUWE4gKnN1YnR4biA9IGRsaXN0X2NvbnRhaW5lcihSZW9yZGVyQnVmZmVyVFhOLCBub2Rl LAotCQkJCQkJCQkJCQkJCSAgIHN1Yml0ZXIuY3VyKTsKLQotCQkJLyoKLQkJCSAqIElmIHRo aXMgc3VieGFjdCBoYXMgbm8gcmVsZmlsZW5vZGVzLCBza2lwIGl0LiBXZSdsbCBkbyB0aGUK LQkJCSAqIGNoZWNrIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gKHRoYXQgYWxsIHRvcC1s ZXZlbAotCQkJICogcmVsZmlsZW5vZGVzIGFyZSBpbiB0aGUgY29ycmVjdCBzdWJ4YWN0KSBs YXRlci4KLQkJCSAqLwotCQkJaWYgKCFzdWJ0eG4tPnNlcXVlbmNlc19oYXNoKQotCQkJCWNv bnRpbnVlOwotCi0JCQkvKiBhZGQgbnVtYmVyIG9mIHJlbGZpbGVub2RlcyBpbiB0aGlzIHN1 YnhhY3QgKi8KLQkJCW5zdWJlbnRyaWVzICs9IGhhc2hfZ2V0X251bV9lbnRyaWVzKHN1YnR4 bi0+c2VxdWVuY2VzX2hhc2gpOwotCi0JCQkvKgotCQkJICogQ2hlY2sgdGhhdCBhbGwgc3Vi eGFjdCByZWxmaWxlbm9kZXMgYXJlIGluIHRoZSB0b3AtbGV2ZWwgdHhuCi0JCQkgKiB0b28s IGFuZCBhcmUgcG9pbnRpbmcgdG8gdGhpcyBzdWJ0cmFuc2FjdGlvbi4KLQkJCSAqLwotCQkJ aGFzaF9zZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHN1YnR4bi0+c2VxdWVuY2VzX2hhc2gpOwot CQkJd2hpbGUgKChlbnRyeSA9IChSZW9yZGVyQnVmZmVyU2VxdWVuY2VFbnQgKikgaGFzaF9z ZXFfc2VhcmNoKCZzY2FuX3N0YXR1cykpICE9IE5VTEwpCi0JCQl7Ci0JCQkJYm9vbAkJZm91 bmQgPSBmYWxzZTsKLQkJCQlSZW9yZGVyQnVmZmVyU2VxdWVuY2VFbnQgKnN1YmVudHJ5Owot Ci0JCQkJLyogc2VhcmNoIGZvciB0aGUgc2FtZSByZWxmaWxlbm9kZSBpbiB0aGUgdG9wLWxl dmVsIHR4biAqLwotCQkJCXN1YmVudHJ5ID0gaGFzaF9zZWFyY2godHhuLT5zZXF1ZW5jZXNf aGFzaCwKLQkJCQkJCQkJCSAgICh2b2lkICopICZlbnRyeS0+cmxvY2F0b3IsCi0JCQkJCQkJ CQkgICBIQVNIX0ZJTkQsCi0JCQkJCQkJCQkgICAmZm91bmQpOwotCi0JCQkJLyoKLQkJCQkg KiBUaGUgdG9wLWxldmVsIHR4biBoYXNoIHNob3VsZCBoYXZlIHRoZSByZWxmaWxlbm9kZSB0 b28sIGFuZAotCQkJCSAqIGl0IHNob3VsZCBwb2ludCB0byB0aGlzIHN1YnhhY3QuCi0JCQkJ ICovCi0JCQkJQXNzZXJ0KGZvdW5kKTsKLQotCQkJCS8qCi0JCQkJICogVGhlIGVudHJ5IGhh cyB0byBwb2ludCB0byB0aGUgc3VieGFjdCAtIHRoZXJlJ3Mgbm8gc3VieGFjdAotCQkJCSAq ICJiZWxvdyIgdGhpcyBvbmUgdG8gd2hpY2ggdGhlIHJlbGZpbGVub2RlIGNvdWxkIGJlbG9u Zy4KLQkJCQkgKi8KLQkJCQlBc3NlcnQoc3ViZW50cnktPnR4biA9PSBzdWJ0eG4pOwotCQkJ fQotCQl9Ci0KLQkJLyoKLQkJICogV2Ugc2hvdWxkbid0IGhhdmUgbW9yZSByZWxmaWxlbm9k ZXMgaW4gc3VidHJhbnNhY3Rpb25zIHRoYW4gaW4gdGhlCi0JCSAqIHRvcC1sZXZlbCBvbmUu IFRoZXJlIG1pZ2h0IGJlIHJlbGZpbGVub2RlcyBpbiB0aGUgdG9wLWxldmVsIG9uZQotCQkg KiBkaXJlY3RseSwgc28gdGhpcyBuZWVkcyB0byBiZSBpbmVxdWFsaXR5LgotCQkgKi8KLQkJ QXNzZXJ0KG5lbnRyaWVzID49IG5zdWJlbnRyaWVzKTsKLQotCQkvKgotCQkgKiBOb3cgZG8g dGhlIGNoZWNrIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gLSBjaGVjayB0aGF0IGV2ZXJ5 IGVudHJ5Ci0JCSAqIGluIHRoZSB0b3AtbGV2ZWwgdHhuIChleGNlcHQgdGhvc2UgcG9pbnRp bmcgdG8gdGhlIHRvcC1sZXZlbCB0eG4KLQkJICogaXRzZWxmKSBwb2ludCB0byBvbmUgb2Yg dGhlIHN1YnhhY3RzLCBhbmQgdGhlcmUncyBhbiBlbnRyeSBpbiB0aGUKLQkJICogc3VieGFj dCBoYXNoLgotCQkgKi8KLQkJaWYgKHR4bi0+c2VxdWVuY2VzX2hhc2gpCi0JCXsKLQkJCUhB U0hfU0VRX1NUQVRVUyBzY2FuX3N0YXR1czsKLQkJCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVu dCAqZW50cnk7Ci0KLQkJCWhhc2hfc2VxX2luaXQoJnNjYW5fc3RhdHVzLCB0eG4tPnNlcXVl bmNlc19oYXNoKTsKLQkJCXdoaWxlICgoZW50cnkgPSAoUmVvcmRlckJ1ZmZlclNlcXVlbmNl RW50ICopIGhhc2hfc2VxX3NlYXJjaCgmc2Nhbl9zdGF0dXMpKSAhPSBOVUxMKQotCQkJewot CQkJCWJvb2wJCWZvdW5kID0gZmFsc2U7Ci0JCQkJUmVvcmRlckJ1ZmZlclNlcXVlbmNlRW50 ICpzdWJlbnRyeTsKLQotCQkJCS8qIFNraXAgZW50cmllcyBmb3IgdGhlIHRvcC1sZXZlbCB0 eG4gaXRzZWxmLiAqLwotCQkJCWlmIChlbnRyeS0+dHhuID09IHR4bikKLQkJCQkJY29udGlu dWU7Ci0KLQkJCQkvKiBJcyBpdCBhIHN1YnhhY3Qgb2YgdGhpcyB0eG4/ICovCi0JCQkJQXNz ZXJ0KHJidHhuX2lzX2tub3duX3N1YnhhY3QoZW50cnktPnR4bikpOwotCQkJCUFzc2VydChl bnRyeS0+dHhuLT50b3B0eG4gPT0gdHhuKTsKLQotCQkJCS8qCi0JCQkJICogU2VhcmNoIGZv ciB0aGUgc2FtZSByZWxmaWxlbm9kZSBpbiB0aGUgc3VieGFjdCAoaXQgc2hvdWxkCi0JCQkJ ICogYmUgaW5pdGlhbGl6ZWQsIGFzIHdlIGV4cGVjdCBpdCB0byBjb250YWluIHRoZQotCQkJ CSAqIHJlbGZpbGVub2RlKS4KLQkJCQkgKi8KLQkJCQlzdWJlbnRyeSA9IGhhc2hfc2VhcmNo KGVudHJ5LT50eG4tPnNlcXVlbmNlc19oYXNoLAotCQkJCQkJCQkJICAgKHZvaWQgKikgJmVu dHJ5LT5ybG9jYXRvciwKLQkJCQkJCQkJCSAgIEhBU0hfRklORCwKLQkJCQkJCQkJCSAgICZm b3VuZCk7Ci0KLQkJCQlBc3NlcnQoZm91bmQpOwotCi0JCQkJLyoKLQkJCQkgKiBDaGVjayB0 aGUgdHhuIHBvaW50ZXIgaW4gdGhlIHRvcC1sZXZlbCBoYXNoIHRhYmxlIGVudHJ5IGlzCi0J CQkJICogY29uc2lzdGVudCB3aXRoIHRoZSBzdWJ4YWN0IGhhc2ggdGFibGUgKHdlIGFscmVh ZHkgY2hlY2tlZAotCQkJCSAqIHRoZSBzdWJ4YWN0IGVudHJ5IHBvaW50cyB0byB0aGUgc3Vi eGFjdCBpdHNlbGYpLgotCQkJCSAqLwotCQkJCUFzc2VydChzdWJlbnRyeS0+dHhuID0gZW50 cnktPnR4bik7Ci0JCQl9Ci0JCX0KLQl9Ci0jZW5kaWYKLX0KLQogLyoKICAqIEFzc2VydENo YW5nZUxzbk9yZGVyCiAgKgpAQCAtMTY4MCw5ICsxMjk4LDYgQEAgUmVvcmRlckJ1ZmZlckFz c2lnbkNoaWxkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAlzdWJ0 eG4tPnRvcGxldmVsX3hpZCA9IHhpZDsKIAlBc3NlcnQoc3VidHhuLT5uc3VidHhucyA9PSAw KTsKIAotCS8qIFRoZXJlIHNob3VsZCBiZSBubyBzZXF1ZW5jZSByZWxmaWxlbm9kZXMgaW4g dGhlIHN1YnhhY3QgeWV0LiAqLwotCUFzc2VydCghc3VidHhuLT5zZXF1ZW5jZXNfaGFzaCk7 Ci0KIAkvKiBzZXQgdGhlIHJlZmVyZW5jZSB0byB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24gKi8K IAlzdWJ0eG4tPnRvcHR4biA9IHR4bjsKIApAQCAtMzUxNiw5ICszMTMxLDYgQEAgUmVvcmRl ckJ1ZmZlckZpbmlzaFByZXBhcmVkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklk IHhpZCwKIAlSZW9yZGVyQnVmZmVyRXhlY3V0ZUludmFsaWRhdGlvbnModHhuLT5uaW52YWxp ZGF0aW9ucywKIAkJCQkJCQkJCSAgdHhuLT5pbnZhbGlkYXRpb25zKTsKIAotCS8qIGNsZWFu dXA6IHJlbW92ZSBzZXF1ZW5jZSByZWxmaWxlbm9kZXMgZnJvbSB0aGUgdG9wLWxldmVsIHR4 biAqLwotCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUNsZWFudXAodHhuKTsKLQogCVJlb3JkZXJC dWZmZXJDbGVhbnVwVFhOKHJiLCB0eG4pOwogfQogCkBAIC0zNTY4LDEzICszMTgwLDggQEAg UmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhp ZCwgWExvZ1JlY1B0ciBsc24sCiAJLyogY29zbWV0aWMuLi4gKi8KIAl0eG4tPmZpbmFsX2xz biA9IGxzbjsKIAotCS8qIHJlbW92ZSBzZXF1ZW5jZSByZWxmaWxlbm9kZXMgZnJvbSB0aGUg dG9wLWxldmVsIHR4biAqLwotCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUNsZWFudXAodHhuKTsK LQogCS8qIHJlbW92ZSBwb3RlbnRpYWwgb24tZGlzayBkYXRhLCBhbmQgZGVhbGxvY2F0ZSAq LwogCVJlb3JkZXJCdWZmZXJDbGVhbnVwVFhOKHJiLCB0eG4pOwotCi0JQXNzZXJ0Q2hlY2tT ZXF1ZW5jZXMocmIpOwogfQogCiAvKgpAQCAtMzYxMCwxMyArMzIxNyw4IEBAIFJlb3JkZXJC dWZmZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCBvbGRlc3RS dW5uaW5nWGlkKQogCQkJaWYgKHJidHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJCQkJcmItPnN0 cmVhbV9hYm9ydChyYiwgdHhuLCBJbnZhbGlkWExvZ1JlY1B0cik7CiAKLQkJCS8qIHJlbW92 ZSBzZXF1ZW5jZSByZWxmaWxlbm9kZXMgZnJvbSB0aGUgdG9wLWxldmVsIHR4biAqLwotCQkJ UmVvcmRlckJ1ZmZlclNlcXVlbmNlQ2xlYW51cCh0eG4pOwotCiAJCQkvKiByZW1vdmUgcG90 ZW50aWFsIG9uLWRpc2sgZGF0YSwgYW5kIGRlYWxsb2NhdGUgdGhpcyB0eCAqLwogCQkJUmVv cmRlckJ1ZmZlckNsZWFudXBUWE4ocmIsIHR4bik7Ci0KLQkJCUFzc2VydENoZWNrU2VxdWVu Y2VzKHJiKTsKIAkJfQogCQllbHNlCiAJCQlyZXR1cm47CkBAIC0zNjY1LDkgKzMyNjcsNiBA QCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklk IHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJZWxzZQogCQlBc3NlcnQodHhuLT5uaW52YWxpZGF0 aW9ucyA9PSAwKTsKIAotCS8qIHJlbW92ZSBzZXF1ZW5jZSByZWxmaWxlbm9kZXMgZnJvbSBh IHRvcC1sZXZlbCB0eG4gKi8KLQlSZW9yZGVyQnVmZmVyU2VxdWVuY2VDbGVhbnVwKHR4bik7 Ci0KIAkvKiByZW1vdmUgcG90ZW50aWFsIG9uLWRpc2sgZGF0YSwgYW5kIGRlYWxsb2NhdGUg Ki8KIAlSZW9yZGVyQnVmZmVyQ2xlYW51cFRYTihyYiwgdHhuKTsKIH0KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Jt Z3JsaXN0LmgKaW5kZXggMzA1Y2E0OWE1NWYuLmM3YzYwZmNiYzg4IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv cm1ncmxpc3QuaApAQCAtMjcsNyArMjcsNyBAQAogLyogc3ltYm9sIG5hbWUsIHRleHR1YWwg bmFtZSwgcmVkbywgZGVzYywgaWRlbnRpZnksIHN0YXJ0dXAsIGNsZWFudXAsIG1hc2ssIGRl Y29kZSAqLwogUEdfUk1HUihSTV9YTE9HX0lELCAiWExPRyIsIHhsb2dfcmVkbywgeGxvZ19k ZXNjLCB4bG9nX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCB4bG9nX2RlY29kZSkKIFBH X1JNR1IoUk1fWEFDVF9JRCwgIlRyYW5zYWN0aW9uIiwgeGFjdF9yZWRvLCB4YWN0X2Rlc2Ms IHhhY3RfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIHhhY3RfZGVjb2RlKQotUEdfUk1H UihSTV9TTUdSX0lELCAiU3RvcmFnZSIsIHNtZ3JfcmVkbywgc21ncl9kZXNjLCBzbWdyX2lk ZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBzbWdyX2RlY29kZSkKK1BHX1JNR1IoUk1fU01H Ul9JRCwgIlN0b3JhZ2UiLCBzbWdyX3JlZG8sIHNtZ3JfZGVzYywgc21ncl9pZGVudGlmeSwg TlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkKIFBHX1JNR1IoUk1fQ0xPR19JRCwgIkNMT0ciLCBj bG9nX3JlZG8sIGNsb2dfZGVzYywgY2xvZ19pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTCkKIFBHX1JNR1IoUk1fREJBU0VfSUQsICJEYXRhYmFzZSIsIGRiYXNlX3JlZG8sIGRi YXNlX2Rlc2MsIGRiYXNlX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQogUEdf Uk1HUihSTV9UQkxTUENfSUQsICJUYWJsZXNwYWNlIiwgdGJsc3BjX3JlZG8sIHRibHNwY19k ZXNjLCB0YmxzcGNfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ19pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUv YWNjZXNzL3hsb2dfaW50ZXJuYWwuaAppbmRleCBhNjM4MDkwNWZlNi4uYzU1OTc0ZjE2NGIg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nX2ludGVybmFsLmgKKysrIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dfaW50ZXJuYWwuaApAQCAtMzEsNyArMzEsNyBAQAog LyoKICAqIEVhY2ggcGFnZSBvZiBYTE9HIGZpbGUgaGFzIGEgaGVhZGVyIGxpa2UgdGhpczoK ICAqLwotI2RlZmluZSBYTE9HX1BBR0VfTUFHSUMgMHhEMTE0CS8qIGNhbiBiZSB1c2VkIGFz IFdBTCB2ZXJzaW9uIGluZGljYXRvciAqLworI2RlZmluZSBYTE9HX1BBR0VfTUFHSUMgMHhE MTE1CS8qIGNhbiBiZSB1c2VkIGFzIFdBTCB2ZXJzaW9uIGluZGljYXRvciAqLwogCiB0eXBl ZGVmIHN0cnVjdCBYTG9nUGFnZUhlYWRlckRhdGEKIHsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5j ZS5oCmluZGV4IGZlM2M4MTNkOTkzLi5iODYzZjljZGEzNiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9z ZXF1ZW5jZS5oCkBAIC00OCw2ICs0OCw3IEBAIHR5cGVkZWYgRm9ybURhdGFfcGdfc2VxdWVu Y2VfZGF0YSAqRm9ybV9wZ19zZXF1ZW5jZV9kYXRhOwogdHlwZWRlZiBzdHJ1Y3QgeGxfc2Vx X3JlYwogewogCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3I7CisJYm9vbAkJICAgaXNfdHJhbnNh Y3Rpb25hbDsKIAkvKiBTRVFVRU5DRSBUVVBMRSBEQVRBIEZPTExPV1MgQVQgVEhFIEVORCAq LwogfSB4bF9zZXFfcmVjOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9kZWNvZGUuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RlY29kZS5oCmluZGV4IDhk MDYyNDcxNjViLi4wZjhiODJjMDJkYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vZGVjb2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vZGVjb2RlLmgK QEAgLTI4LDcgKzI4LDYgQEAgZXh0ZXJuIHZvaWQgeGFjdF9kZWNvZGUoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogZXh0ZXJuIHZvaWQg c3RhbmRieV9kZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3Jk QnVmZmVyICpidWYpOwogZXh0ZXJuIHZvaWQgbG9naWNhbG1zZ19kZWNvZGUoTG9naWNhbERl Y29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpOwogZXh0ZXJuIHZv aWQgc2VxX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRC dWZmZXIgKmJ1Zik7Ci1leHRlcm4gdm9pZCBzbWdyX2RlY29kZShMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1Zik7CiAKIGV4dGVybiB2b2lkIExv Z2ljYWxEZWNvZGluZ1Byb2Nlc3NSZWNvcmQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 LAogCQkJCQkJCQkJCSBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5kZXggYTQ0YTBmNGRmYjkuLmE5ZTQxZjlh MjY4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVy LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBAIC00 MDAsMTIgKzQwMCw2IEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUWE4KIAkgKi8K IAlIVEFCCSAgICp0b2FzdF9oYXNoOwogCi0JLyoKLQkgKiBTZXF1ZW5jZSByZWxmaWxlbm9k ZXMgY3JlYXRlZCBpbiB0aGlzIHRyYW5zYWN0aW9uIChhbHNvIGluY2x1ZGVzCi0JICogYWx0 ZXJlZCBzZXF1ZW5jZXMsIHdoaWNoIGFzc2lnbnMgbmV3IHJlbGZpbGVub2RlKS4KLQkgKi8K LQlIVEFCCSAgICpzZXF1ZW5jZXNfaGFzaDsKLQogCS8qCiAJICogbm9uLWhpZXJhcmNoaWNh bCBsaXN0IG9mIHN1YnRyYW5zYWN0aW9ucyB0aGF0IGFyZSAqbm90KiBhYm9ydGVkLiBPbmx5 CiAJICogdXNlZCBpbiB0b3BsZXZlbCB0cmFuc2FjdGlvbnMuCkBAIC03ODYsMTEgKzc4MCw0 IEBAIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJTZXRSZXN0YXJ0UG9pbnQoUmVvcmRlckJ1 ZmZlciAqcmIsIFhMb2dSZWNQdHIgcHRyKTsKIAogZXh0ZXJuIHZvaWQgU3RhcnR1cFJlb3Jk ZXJCdWZmZXIodm9pZCk7CiAKLWV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBZGRSZWxGaWxl TG9jYXRvcihSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJ CQkJICAgWExvZ1JlY1B0ciBsc24sIFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKTsKLWV4dGVy biBib29sIFJlb3JkZXJCdWZmZXJTZXF1ZW5jZUlzVHJhbnNhY3Rpb25hbChSZW9yZGVyQnVm ZmVyICpyYiwKLQkJCQkJCQkJCQkJCSBSZWxGaWxlTG9jYXRvciBsb2NhdG9yLAotCQkJCQkJ CQkJCQkJIFRyYW5zYWN0aW9uSWQgeGlkaW4sCi0JCQkJCQkJCQkJCQkgVHJhbnNhY3Rpb25J ZCAqeGlkb3V0KTsKLQogI2VuZGlmCi0tIAoyLjQxLjAKCg== --------------q81gMYy3cJrdUAqlWBWL0vlY Content-Type: text/x-patch; charset=UTF-8; name="v20231128-0008-log-XID-instead-of-a-boolean-flag.patch" Content-Disposition: attachment; filename="v20231128-0008-log-XID-instead-of-a-boolean-flag.patch" Content-Transfer-Encoding: base64 RnJvbSA5NjFkYTNiZjY0YjZkOTE5NDlkYjgzYjlkZTcyZGNkNzJkZjlhYTdlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogTW9uLCAyNyBOb3YgMjAyMyAxODo0ODo0NSArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggdjIwMjMxMTI4IDgvOF0gbG9nIFhJRCBpbnN0ZWFkIG9mIGEgYm9vbGVh biBmbGFnCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9zZXFkZXNjLmMgICAg ICAgICB8ICA0ICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyAgICAg ICAgICAgICB8IDIwICsrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv c2VxdWVuY2UuYyAgICAgICAgICAgICAgIHwgMjEgKysrKysrKysrKysrLS0tLS0tLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyAgICAgIHwgMTEgKysrKysr KysrLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgICAgIHwg IDUgKysrKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy94YWN0LmggICAgICAgICAgICAgICAgICAg ICB8ICAxICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggICAgICAgICAgICAg ICB8ICAyICstCiA3IGZpbGVzIGNoYW5nZWQsIDUyIGluc2VydGlvbnMoKyksIDEyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9zZXFk ZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mvc2VxZGVzYy5jCmluZGV4IGJh NjA1NDQwODVlLi4yOTZmYTVkOTE2OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L3JtZ3JkZXNjL3NlcWRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv c2VxZGVzYy5jCkBAIC0yNSw5ICsyNSw5IEBAIHNlcV9kZXNjKFN0cmluZ0luZm8gYnVmLCBY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAl4bF9zZXFfcmVjICp4bHJlYyA9ICh4bF9zZXFf cmVjICopIHJlYzsKIAogCWlmIChpbmZvID09IFhMT0dfU0VRX0xPRykKLQkJYXBwZW5kU3Ry aW5nSW5mbyhidWYsICJyZWwgJXUvJXUvJXUiLAorCQlhcHBlbmRTdHJpbmdJbmZvKGJ1Ziwg InJlbCAldS8ldS8ldSB4aWQgJXUiLAogCQkJCQkJIHhscmVjLT5sb2NhdG9yLnNwY09pZCwg eGxyZWMtPmxvY2F0b3IuZGJPaWQsCi0JCQkJCQkgeGxyZWMtPmxvY2F0b3IucmVsTnVtYmVy KTsKKwkJCQkJCSB4bHJlYy0+bG9jYXRvci5yZWxOdW1iZXIsIHhscmVjLT54aWQpOwogfQog CiBjb25zdCBjaGFyICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwppbmRleCA1MzZl ZGIzNzkyZi4uYmEwNTIyZDE0YjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hhY3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMK QEAgLTgwNSw2ICs4MDUsMjYgQEAgU3ViVHJhbnNhY3Rpb25Jc0FjdGl2ZShTdWJUcmFuc2Fj dGlvbklkIHN1YnhpZCkKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKglTdWJUcmFuc2Fj dGlvbklzQWN0aXZlCisgKgorICogVGVzdCBpZiB0aGUgc3BlY2lmaWVkIHN1YnhhY3QgSUQg aXMgc3RpbGwgYWN0aXZlLiAgTm90ZSBjYWxsZXIgaXMKKyAqIHJlc3BvbnNpYmxlIGZvciBj aGVja2luZyB3aGV0aGVyIHRoaXMgSUQgaXMgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgeGFj dC4KKyAqLworVHJhbnNhY3Rpb25JZAorU3ViVHJhbnNhY3Rpb25HZXRYaWQoU3ViVHJhbnNh Y3Rpb25JZCBzdWJ4aWQpCit7CisJVHJhbnNhY3Rpb25TdGF0ZSBzOworCisJZm9yIChzID0g Q3VycmVudFRyYW5zYWN0aW9uU3RhdGU7IHMgIT0gTlVMTDsgcyA9IHMtPnBhcmVudCkKKwl7 CisJCWlmIChzLT5zdGF0ZSA9PSBUUkFOU19BQk9SVCkKKwkJCWNvbnRpbnVlOworCQlpZiAo cy0+c3ViVHJhbnNhY3Rpb25JZCA9PSBzdWJ4aWQpCisJCQlyZXR1cm4gWGlkRnJvbUZ1bGxU cmFuc2FjdGlvbklkKHMtPmZ1bGxUcmFuc2FjdGlvbklkKTsKKwl9CisJcmV0dXJuIEludmFs aWRUcmFuc2FjdGlvbklkOworfQogCiAvKgogICoJR2V0Q3VycmVudENvbW1hbmRJZApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3NlcXVlbmNlLmMKaW5kZXggOWRhOWM4MjcwZDkuLmYzZTFhN2E0NjJjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMg dm9pZCBpbml0X3BhcmFtcyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9wdGlvbnMsIGJv b2wgZm9yX2lkZW50aXR5LAogCQkJCQkJTGlzdCAqKm93bmVkX2J5KTsKIHN0YXRpYyB2b2lk IGRvX3NldHZhbChPaWQgcmVsaWQsIGludDY0IG5leHQsIGJvb2wgaXNjYWxsZWQpOwogc3Rh dGljIHZvaWQgcHJvY2Vzc19vd25lZF9ieShSZWxhdGlvbiBzZXFyZWwsIExpc3QgKm93bmVk X2J5LCBib29sIGZvcl9pZGVudGl0eSk7Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNfc2VxdWVu Y2VfdHJhbnNhY3Rpb25hbChSZWxhdGlvbiBzZXFyZWwpOworc3RhdGljIGlubGluZSBUcmFu c2FjdGlvbklkIHNlcXVlbmNlX3hpZChSZWxhdGlvbiBzZXFyZWwpOwogCiAKIC8qCkBAIC0y NTYsMTEgKzI1NiwxNiBAQCBEZWZpbmVTZXF1ZW5jZShQYXJzZVN0YXRlICpwc3RhdGUsIENy ZWF0ZVNlcVN0bXQgKnNlcSkKIAlyZXR1cm4gYWRkcmVzczsKIH0KIAotc3RhdGljIGlubGlu ZSBib29sCi1pc19zZXF1ZW5jZV90cmFuc2FjdGlvbmFsKFJlbGF0aW9uIHNlcXJlbCkKK3N0 YXRpYyBpbmxpbmUgVHJhbnNhY3Rpb25JZAorc2VxdWVuY2VfeGlkKFJlbGF0aW9uIHNlcXJl bCkKIHsKLQlyZXR1cm4gKHNlcXJlbC0+cmRfbmV3UmVsZmlsZWxvY2F0b3JTdWJpZCAhPSBJ bnZhbGlkU3ViVHJhbnNhY3Rpb25JZCkgfHwKLQkJICAgKHNlcXJlbC0+cmRfY3JlYXRlU3Vi aWQgIT0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQpOworCWlmIChzZXFyZWwtPnJkX25ld1Jl bGZpbGVsb2NhdG9yU3ViaWQgIT0gSW52YWxpZFN1YlRyYW5zYWN0aW9uSWQpCisJCXJldHVy biBTdWJUcmFuc2FjdGlvbkdldFhpZChzZXFyZWwtPnJkX25ld1JlbGZpbGVsb2NhdG9yU3Vi aWQpOworCisJaWYgKHNlcXJlbC0+cmRfY3JlYXRlU3ViaWQgIT0gSW52YWxpZFN1YlRyYW5z YWN0aW9uSWQpCisJCXJldHVybiBTdWJUcmFuc2FjdGlvbkdldFhpZChzZXFyZWwtPnJkX2Ny ZWF0ZVN1YmlkKTsKKworCXJldHVybiBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIH0KIAogLyoK QEAgLTYwOSw3ICs2MTQsNyBAQCBmaWxsX3NlcV9mb3JrX3dpdGhfZGF0YShSZWxhdGlvbiBy ZWwsIEhlYXBUdXBsZSB0dXBsZSwgRm9ya051bWJlciBmb3JrTnVtKQogCQlYTG9nUmVnaXN0 ZXJCdWZmZXIoMCwgYnVmLCBSRUdCVUZfV0lMTF9JTklUKTsKIAogCQl4bHJlYy5sb2NhdG9y ID0gcmVsLT5yZF9sb2NhdG9yOwotCQl4bHJlYy5pc190cmFuc2FjdGlvbmFsID0gaXNfc2Vx dWVuY2VfdHJhbnNhY3Rpb25hbChyZWwpOworCQl4bHJlYy54aWQgPSBzZXF1ZW5jZV94aWQo cmVsKTsKIAogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopICZ4bHJlYywgc2l6ZW9mKHhs X3NlcV9yZWMpKTsKIAkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSB0dXBsZS0+dF9kYXRh LCB0dXBsZS0+dF9sZW4pOwpAQCAtMTA3NCw3ICsxMDc5LDcgQEAgbmV4dHZhbF9pbnRlcm5h bChPaWQgcmVsaWQsIGJvb2wgY2hlY2tfcGVybWlzc2lvbnMpCiAJCXNlcS0+bG9nX2NudCA9 IDA7CiAKIAkJeGxyZWMubG9jYXRvciA9IHNlcXJlbC0+cmRfbG9jYXRvcjsKLQkJeGxyZWMu aXNfdHJhbnNhY3Rpb25hbCA9IGlzX3NlcXVlbmNlX3RyYW5zYWN0aW9uYWwoc2VxcmVsKTsK KwkJeGxyZWMueGlkID0gc2VxdWVuY2VfeGlkKHNlcXJlbCk7CiAKIAkJWExvZ1JlZ2lzdGVy RGF0YSgoY2hhciAqKSAmeGxyZWMsIHNpemVvZih4bF9zZXFfcmVjKSk7CiAJCVhMb2dSZWdp c3RlckRhdGEoKGNoYXIgKikgc2VxZGF0YXR1cGxlLnRfZGF0YSwgc2VxZGF0YXR1cGxlLnRf bGVuKTsKQEAgLTEyNzYsNyArMTI4MSw3IEBAIGRvX3NldHZhbChPaWQgcmVsaWQsIGludDY0 IG5leHQsIGJvb2wgaXNjYWxsZWQpCiAJCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCBidWYsIFJF R0JVRl9XSUxMX0lOSVQpOwogCiAJCXhscmVjLmxvY2F0b3IgPSBzZXFyZWwtPnJkX2xvY2F0 b3I7Ci0JCXhscmVjLmlzX3RyYW5zYWN0aW9uYWwgPSBpc19zZXF1ZW5jZV90cmFuc2FjdGlv bmFsKHNlcXJlbCk7CisJCXhscmVjLnhpZCA9IHNlcXVlbmNlX3hpZChzZXFyZWwpOwogCiAJ CVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgJnhscmVjLCBzaXplb2YoeGxfc2VxX3JlYykp OwogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopIHNlcWRhdGF0dXBsZS50X2RhdGEsIHNl cWRhdGF0dXBsZS50X2xlbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYwppbmRleCBjNThiNWI0NWYyOS4uZmYyZjNmNGUxYWEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtMTM5MCw2ICsxMzkwLDcgQEAg c2VxX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZm ZXIgKmJ1ZikKIAlTbmFwc2hvdAlzbmFwc2hvdCA9IE5VTEw7CiAJUmVwT3JpZ2luSWQgb3Jp Z2luX2lkID0gWExvZ1JlY0dldE9yaWdpbihyKTsKIAlib29sCQl0cmFuc2FjdGlvbmFsOwor CVRyYW5zYWN0aW9uSWQJc2VxdWVuY2VfeGlkOwogCXhsX3NlcV9yZWMgKnhscmVjOwogCiAJ LyogaWdub3JlIHNlcXVlbmNlcyB3aGVuIHRoZSBwbHVnaW4gZG9lcyBub3QgaGF2ZSB0aGUg Y2FsbGJhY2tzICovCkBAIC0xNDM2LDcgKzE0MzcsOCBAQCBzZXFfZGVjb2RlKExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCSAqIFhYWDog Y2FuIHhscmVjIGJlIGNvbWJpbmVkIHdpdGggdHVwbGVkYXRhPwogCSAqLwogCXhscmVjID0g KHhsX3NlcV9yZWMgKikgWExvZ1JlY0dldERhdGEocik7Ci0JdHJhbnNhY3Rpb25hbCA9IHhs cmVjLT5pc190cmFuc2FjdGlvbmFsOworCXNlcXVlbmNlX3hpZCA9IHhscmVjLT54aWQ7CisJ dHJhbnNhY3Rpb25hbCA9IFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNlcXVlbmNlX3hpZCk7CiAK IAkvKiBTa2lwIHRoZSBjaGFuZ2UgaWYgYWxyZWFkeSBwcm9jZXNzZWQgKHBlciB0aGUgc25h cHNob3QpLiAqLwogCWlmICh0cmFuc2FjdGlvbmFsICYmCkBAIC0xNDc4LDYgKzE0ODAsMTMg QEAgc2VxX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRC dWZmZXIgKmJ1ZikKIAlpZiAoIXRyYW5zYWN0aW9uYWwpCiAJCXNuYXBzaG90ID0gU25hcEJ1 aWxkR2V0T3JCdWlsZFNuYXBzaG90KGJ1aWxkZXIpOwogCisJLyoKKwkgKiBGSVhNRSBjYW4g d2Ugb3ZlcnJpZGUgdGhlIHhpZCBsaWtlIHRoaXM/IG9yIHNob3VsZCB3ZSBwYXNzIGJvdGgg dGhlCisJICogb3JpZ2luYWwgWElEIGFuZCB0aGUgWElEIHdlIHJlY29yZGVkLgorCSAqLwor CWlmICh0cmFuc2FjdGlvbmFsKQorCQl4aWQgPSBzZXF1ZW5jZV94aWQ7CisKIAkvKiBRdWV1 ZSB0aGUgY2hhbmdlIChvciBzZW5kIGltbWVkaWF0ZWx5IGlmIG5vdCB0cmFuc2FjdGlvbmFs KS4gKi8KIAlSZW9yZGVyQnVmZmVyUXVldWVTZXF1ZW5jZShjdHgtPnJlb3JkZXIsIHhpZCwg c25hcHNob3QsIGJ1Zi0+ZW5kcHRyLAogCQkJCQkJCSAgIG9yaWdpbl9pZCwgdGFyZ2V0X2xv Y2F0b3IsIHRyYW5zYWN0aW9uYWwsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCmluZGV4IDQxMjEyNjlhMDk3Li44MmZiZmNlODAz MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVy YnVmZmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVy YnVmZmVyLmMKQEAgLTEwMTYsNiArMTAxNiwxMSBAQCBSZW9yZGVyQnVmZmVyUXVldWVTZXF1 ZW5jZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCS8qIG5vbi10 cmFuc2FjdGlvbmFsIGNoYW5nZXMgcmVxdWlyZSBhIHZhbGlkIHNuYXBzaG90ICovCiAJCUFz c2VydChzbmFwc2hvdF9ub3cpOwogCisJCS8qCisJCSAqIEZJWE1FIGNhbiB0aGlzIGFjdHVh bGx5IGJlIEludmFsaWRUcmFuc2FjdGlvbklkPyBXZSBnZXQgdHhuPU5VTEwKKwkJICogYW5k IHRoZW4gcmItPnNlcXVlbmNlKCkgZmFpbHMgaW4gcGdvdXRwdXRfc2VxdWVuY2UoKSwgYXMg aXQgdHJpZXMKKwkJICogdG8gZG8gbWF5YmVfc2VuZF9zY2hlbWEoKS4KKwkJICovCiAJCWlm ICh4aWQgIT0gSW52YWxpZFRyYW5zYWN0aW9uSWQpCiAJCQl0eG4gPSBSZW9yZGVyQnVmZmVy VFhOQnlYaWQocmIsIHhpZCwgdHJ1ZSwgTlVMTCwgbHNuLCB0cnVlKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hhY3QuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94YWN0 LmgKaW5kZXggY2I5MGYyMjdjZWIuLmZkYjM4YzU5OGJjIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3MveGFjdC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94YWN0LmgKQEAg LTQ0NCw2ICs0NDQsNyBAQCBleHRlcm4gRnVsbFRyYW5zYWN0aW9uSWQgR2V0Q3VycmVudEZ1 bGxUcmFuc2FjdGlvbklkKHZvaWQpOwogZXh0ZXJuIEZ1bGxUcmFuc2FjdGlvbklkIEdldEN1 cnJlbnRGdWxsVHJhbnNhY3Rpb25JZElmQW55KHZvaWQpOwogZXh0ZXJuIHZvaWQgTWFya0N1 cnJlbnRUcmFuc2FjdGlvbklkTG9nZ2VkSWZBbnkodm9pZCk7CiBleHRlcm4gYm9vbCBTdWJU cmFuc2FjdGlvbklzQWN0aXZlKFN1YlRyYW5zYWN0aW9uSWQgc3VieGlkKTsKK2V4dGVybiBU cmFuc2FjdGlvbklkIFN1YlRyYW5zYWN0aW9uR2V0WGlkKFN1YlRyYW5zYWN0aW9uSWQgc3Vi eGlkKTsKIGV4dGVybiBDb21tYW5kSWQgR2V0Q3VycmVudENvbW1hbmRJZChib29sIHVzZWQp OwogZXh0ZXJuIHZvaWQgU2V0UGFyYWxsZWxTdGFydFRpbWVzdGFtcHMoVGltZXN0YW1wVHog eGFjdF90cywgVGltZXN0YW1wVHogc3RtdF90cyk7CiBleHRlcm4gVGltZXN0YW1wVHogR2V0 Q3VycmVudFRyYW5zYWN0aW9uU3RhcnRUaW1lc3RhbXAodm9pZCk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv c2VxdWVuY2UuaAppbmRleCBiODYzZjljZGEzNi4uMTFkZmU1N2YwNGIgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvc2VxdWVuY2UuaApAQCAtNDgsNyArNDgsNyBAQCB0eXBlZGVmIEZvcm1EYXRhX3Bn X3NlcXVlbmNlX2RhdGEgKkZvcm1fcGdfc2VxdWVuY2VfZGF0YTsKIHR5cGVkZWYgc3RydWN0 IHhsX3NlcV9yZWMKIHsKIAlSZWxGaWxlTG9jYXRvciBsb2NhdG9yOwotCWJvb2wJCSAgIGlz X3RyYW5zYWN0aW9uYWw7CisJVHJhbnNhY3Rpb25JZCAgeGlkOwkvKiB2YWxpZCBYSUQsIGlm IHRyYW5zYWN0aW9uYWwgKi8KIAkvKiBTRVFVRU5DRSBUVVBMRSBEQVRBIEZPTExPV1MgQVQg VEhFIEVORCAqLwogfSB4bF9zZXFfcmVjOwogCi0tIAoyLjQxLjAKCg== --------------q81gMYy3cJrdUAqlWBWL0vlY--