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 1tdmRc-009R5a-N0 for pgsql-hackers@arkaria.postgresql.org; Fri, 31 Jan 2025 08:32:09 +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 1tdmRb-00GQpv-L1 for pgsql-hackers@arkaria.postgresql.org; Fri, 31 Jan 2025 08:32:07 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tdmRb-00GQpm-3R for pgsql-hackers@lists.postgresql.org; Fri, 31 Jan 2025 08:32:07 +0000 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tdmRX-002U8V-05 for pgsql-hackers@postgresql.org; Fri, 31 Jan 2025 08:32:06 +0000 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-2f83a8afcbbso2553019a91.1 for ; Fri, 31 Jan 2025 00:32:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738312321; x=1738917121; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=kl/NWqGbFL3UkzbRZXQdjtqVFNwR26jratSNqBV/w3w=; b=aWGc0apYYZHrAVkSTqFCFQXXWFS3AM0+6AzPvY6OdXRhedzXrY2xK0jkg6e49GHIHu GnHhiLnaQVuEm0DbgAoWvE5QthLVaQwgdtz3xNVD2ti7qEubyS5hz5bDP4V1hqCjNyf3 sauZ+51MPOdnaL6YjgH+gZu3dQh0Ty0vBVDOE/ULEdKUhPCAhyaAsxGam8SOTRTfjqrG ZnZEiCULvClwWgGwL0MrggW5S/hrGm97TICHEab/mxgrQkS914ETMCbb3E4JSeK2jZs4 XX8Y2ZfeOa2/f2WTnP5W6WsamAGekBVd4RHuiWrvEdrkh7E+wq7C7AJdyCu5pXXcXtvS k8bQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738312321; x=1738917121; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=kl/NWqGbFL3UkzbRZXQdjtqVFNwR26jratSNqBV/w3w=; b=cx8jE9fXjYeRvGiQznULuOanc+tIZe/o4VsLa173mQXaSn21/SLJJl5MUDfVUEYWdD 16a8D5A1El2HeaOiexcBOKgXzBmTaqTxzdt6aUmmCsOEF+C3MGe6iMEESS7X7JYYRfGq rd8qRKDF/SR99VydYztvyBFv8vKLiJyFN4ZX7hFdJmp0lMHu/A0LFftQsHGOLUicfPw/ aMvoRCZrgE3lzc5TsQoT6zWnwMp3m54bcIjQLcKsULo+ZdcPOSTHq/Kwa9io7RmyfRzk kaTImaYbDXafuIuveyXBd0MUFN0WnYHBfIbmWx5TlTqPj7kGFoyW4ymXKSSriahL2CyX I6dA== X-Forwarded-Encrypted: i=1; AJvYcCWoYHsEuF7xIehT1oe+ANNeCtMe/RLMxcW9my0p75YeneKGaaNW3g7ouPEqLqiyI1gddd86V6N/VoWzO3uN@postgresql.org X-Gm-Message-State: AOJu0YzwbNYnBKlguoYr3nS3PSVHwmWbkPIRGdc9OfeXXiCXxrw+k3qF 5kQViKF5fyE3GXLFkXAUP6EU5JWRcWFegI3v7S1Y2W8jVMk1JwENd2fqIFqWHFn+cWk+fQhf5+K /ErPLhD+2sQUQ96kH0zOeMtJyvmQ= X-Gm-Gg: ASbGncvYZtiqAPVYIjH5jyKXD4xXHkobh+rslenLjJ9oU6m/2tFTOEfafE+9GON9e84 QLkpO0Hco4Od++Bh0JHuB2o4N+6vFkZuHeKrLo5JIcPWxP9eyXGhmAumMqNjkbBXe0M3oPAoM/w == X-Google-Smtp-Source: AGHT+IFq6Y7JWbyTSuXNvar2s8Oh97jEbVVaaGQgz7ifJpRlXHbdHQpRLiM68GZQs21uEbPI3Awe1WjWrqCAbvwJ/Ko= X-Received: by 2002:a17:90a:f944:b0:2ef:949c:6f6b with SMTP id 98e67ed59e1d1-2f994f500f8mr4011881a91.13.1738312321514; Fri, 31 Jan 2025 00:32:01 -0800 (PST) MIME-Version: 1.0 References: <54c35fb9-da3a-4754-ab8c-46ed0b612465@vondra.me> <684c70d7-180e-461d-9377-600c2db581ba@vondra.me> In-Reply-To: From: Amit Langote Date: Fri, 31 Jan 2025 17:31:44 +0900 X-Gm-Features: AWEUYZldAs_Wu5g2COOAPhisHKf7CnKJ37V8sdVtXPYBmfkHDEKlFn3mweT-f1E Message-ID: Subject: Re: generic plans and "initial" pruning To: Tomas Vondra Cc: Robert Haas , Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="0000000000006edbff062cfc6023" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006edbff062cfc6023 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Jan 23, 2025 at 4:15=E2=80=AFPM Amit Langote wrote: > I=E2=80=99ve rebased over recent changes to setrefs.c (commit bf826ea0629= ). > During the rebase, I realized that the patch > 0002-Initialize-PartitionPruneContexts-lazily wasn=E2=80=99t a good idea = after > all. > > The test case added by bf826ea0629 highlighted an issue: initializing > pruning expressions lazily during execution could leave the > Append/MergeAppend node=E2=80=99s PlanState.subPlan uninitialized at > ExecInitNode() time. Initially, I thought this would have only > cosmetic consequences -- such as changes in test case output where > SubPlans referenced in "exec" pruning expressions wouldn=E2=80=99t appear= -- > but I may have underestimated the problem. As a result, I=E2=80=99ve aban= doned > that approach and the patch in favor of initializing all pruning > expressions during plan initialization. > > Additionally, I revisited the impact of the main patch on > ExecutorStart_hooks. It seems better to change the return type from > void to bool, returning the result of > ExecPlanStillValid(queryDesc->estate). This change has the added > benefit of breaking extensions that use ExecutorStart_hook at compile > time, encouraging authors to update their code. The updated commit > message includes details on additional checks extensions must > implement, particularly for cases where they might access pruned and > thus unlocked relations. > > I've stared at the refactoring patches 0001 and 0002 for long enough > at this point that I'd like to commit them early next week, barring > further comments or objections. I'll keep staring at 0003. I have now pushed 0001 and 0002. I broke 0003 into two patches: Patch to track unpruned relations in the executor, allowing the overhead of processing pruned partitions to be skipped during plan initialization. This is particularly relevant for top-level nodes such as ModifyTable and LockRows, which -- unlike Append / MergeAppend -- do not ignore initially pruned partitions. Since initial pruning is now performed separately from plan initialization and earlier in InitPlan(), we can fix this by checking whether a given child result relation or RowMark belongs to a pruned partition and skipping it. Patch to defer locking of prunable relations from GetCachedPlan() to InitPlan(), preventing partitions pruned by initial pruning from being locked unnecessarily. With the attached 0001, I can see that saving the overhead of initializing ResultRelInfos for pruned partitions in ExecInitModifyTable() results in a noticeable speedup for pgbench -Mprepared with partitions, especially at higher partition counts where the overhead is more significant. The numbers I have here are a bit noisy, but they provide a general idea of the performance benefit of skipping initially pruned partitions during plan initialization. Setup: plan_cache_mode =3D force_generic_plan max_locks_per_transaction =3D 1000 for i in 100 200 500 1000 2000; do echo -ne "$i\t" pgbench -i --partitions=3D$i > /dev/null 2>&1; pgbench -n -Mprepared -T 10 | grep tps; done With master: 100 tps =3D 2837.095192 (without initial connection time) 200 tps =3D 2614.143255 (without initial connection time) 500 tps =3D 1960.666074 (without initial connection time) 1000 tps =3D 1390.691229 (without initial connection time) 2000 tps =3D 884.882656 (without initial connection time) With 0001: 100 tps =3D 2889.600827 (without initial connection time) 200 tps =3D 2720.895632 (without initial connection time) 500 tps =3D 2096.177756 (without initial connection time) 1000 tps =3D 1659.265873 (without initial connection time) 2000 tps =3D 1148.976177 (without initial connection time) With 0002: 100 tps =3D 3070.137629 (without initial connection time) 200 tps =3D 4589.336857 (without initial connection time) 500 tps =3D 2977.339119 (without initial connection time) 1000 tps =3D 2885.417560 (without initial connection time) 2000 tps =3D 3832.111167 (without initial connection time) --=20 Thanks, Amit Langote --0000000000006edbff062cfc6023 Content-Type: application/octet-stream; name="v61-0001-Track-unpruned-relids-to-avoid-processing-pruned.patch" Content-Disposition: attachment; filename="v61-0001-Track-unpruned-relids-to-avoid-processing-pruned.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6ki10mr0 RnJvbSA5NzBjMDNkYmM1ODdiYWZjN2NjYjU3NjllODFhYTE0OTZhZDkyMzE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMzEgSmFuIDIwMjUgMTU6NTg6MTggKzA5MDAKU3ViamVjdDogW1BBVENIIHY2 MSAxLzJdIFRyYWNrIHVucHJ1bmVkIHJlbGlkcyB0byBhdm9pZCBwcm9jZXNzaW5nIHBydW5lZAog cmVsYXRpb25zCgpUaGlzIGNvbW1pdCBpbnRyb2R1Y2VzIGNoYW5nZXMgdG8gdHJhY2sgdW5wcnVu ZWQgcmVsYXRpb25zIGV4cGxpY2l0bHksCmVuc3VyaW5nIHRoYXQgdG9wLWxldmVsIHBsYW4gbm9k ZXMsIHN1Y2ggYXMgTW9kaWZ5VGFibGUgYW5kIExvY2tSb3dzLApkbyBub3QgcHJvY2VzcyBwYXJ0 aXRpb25zIHBydW5lZCB3aXRoICJpbml0aWFsIiBwcnVuaW5nLiBTY2FuLWxldmVsCm5vZGVzLCBz dWNoIGFzIEFwcGVuZCwgYWxyZWFkeSBoYW5kbGUgdGhpcyBjb3JyZWN0bHkgYnkgcHJvY2Vzc2lu Zwpvbmx5IHVucHJ1bmVkIHJlbGF0aW9ucy4KClRoZSBleGVjdXRvciBpbnRyb2R1Y2VzIGEgbmV3 IGVzX3VucHJ1bmVkX3JlbGlkcyBmaWVsZCBpbiBFU3RhdGUsCndoaWNoIHRyYWNrcyB0aGUgc2V0 IG9mIHVucHJ1bmVkIHJlbGF0aW9ucyBhdCBwbGFuIGluaXRpYWxpemF0aW9uCnRvIGVuc3VyZSBv bmx5IHVucHJ1bmVkIHJlbGF0aW9ucyBhcmUgcHJvY2Vzc2VkIGR1cmluZyBleGVjdXRpb24uClRo aXMgZmllbGQgaXMgaW5pdGlhbGl6ZWQgd2l0aCBQbGFubmVkU3RtdC51bnBydW5hYmxlUmVsaWRz LCBhIG5ldwpmaWVsZCB0aGF0IHRyYWNrcyByZWxhdGlvbnMgdGhhdCBjYW5ub3QgYmUgcHJ1bmVk IGR1cmluZyBydW50aW1lCnBydW5pbmcuIFRoZXNlIGluY2x1ZGUgcmVsYXRpb25zIG5vdCBzdWJq ZWN0IHRvIHBhcnRpdGlvbiBwcnVuaW5nIGFuZAp0aG9zZSByZXF1aXJlZCBmb3IgZXhlY3V0aW9u IHJlZ2FyZGxlc3Mgb2YgcHJ1bmluZy4KRXhlY0RvSW5pdGlhbFBydW5pbmcoKSB1cGRhdGVzIGVz X3VucHJ1bmVkX3JlbGlkcyBieSBhZGRpbmcgcGFydGl0aW9ucwp0aGF0IHN1cnZpdmUgaW5pdGlh bCBwcnVuaW5nLgoKUGxhbm5lZFN0bXQudW5wcnVuYWJsZVJlbGlkcyBpcyBjb21wdXRlZCBkdXJp bmcgc2V0X3BsYW5fcmVmcygpIGJ5CnJlbW92aW5nIHRoZSBSVCBpbmRleGVzIG9mIHJ1bnRpbWUt cHJ1bmFibGUgcmVsYXRpb25zLCBpZGVudGlmaWVkCmZyb20gUGFydGl0aW9uUHJ1bmVJbmZvcywg ZnJvbSB0aGUgZnVsbCBzZXQgb2YgcmVsYXRpb24gUlQgaW5kZXhlcy4KClRvIHN1cHBvcnQgdGhp cywgUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gYW5kIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEK bm93IGluY2x1ZGUgYSBsZWFmcGFydF9ydGlfbWFwW10gYXJyYXkgdGhhdCBtYXBzIHBhcnRpdGlv biBpbmRleGVzCmZyb20gZ2V0X21hdGNoaW5nX3BhcnRpdGlvbnMoKSB0byB0aGVpciBjb3JyZXNw b25kaW5nIFJUIGluZGV4ZXMuIFRoaXMKbWFwcGluZyBpcyB1c2VkIGluIEV4ZWNEb0luaXRpYWxQ cnVuaW5nKCkgdG8gY29udmVydCBwYXJ0aXRpb24gaW5kZXhlcwppbnRvIFJUIGluZGV4ZXMsIHdo aWNoIGFyZSB0aGVuIGFkZGVkIHRvIGVzX3VucHJ1bmVkX3JlbGlkcy4KClRoZXNlIGNoYW5nZXMg ZW5zdXJlIHRoYXQgdG9wLWxldmVsIHBsYW4gbm9kZXMsIHN1Y2ggYXMgTW9kaWZ5VGFibGUKYW5k IExvY2tSb3dzLCBwcm9jZXNzIG9ubHkgcmVsYXRpb25zIHRoYXQgcmVtYWluIHVucHJ1bmVkIGFm dGVyCmluaXRpYWwgcHJ1bmluZy4gRXhlY0luaXRNb2RpZnlUYWJsZSgpIHRyaW1zIGxpc3RzLCBz dWNoIGFzCnJlc3VsdFJlbGF0aW9ucywgd2l0aENoZWNrT3B0aW9uTGlzdHMsIHJldHVybmluZ0xp c3RzLCBhbmQKdXBkYXRlQ29sbm9zTGlzdHMsIHRvIGluY2x1ZGUgb25seSB1bnBydW5lZCBwYXJ0 aXRpb25zIGFuZCBjcmVhdGVzClJlc3VsdFJlbEluZm8gc3RydWN0cyBvbmx5IGZvciB0aGVzZSBw YXJ0aXRpb25zLiBTaW1pbGFybHksIGNoaWxkClJvd01hcmtzIGZvciBwcnVuZWQgcmVsYXRpb25z IGFyZSBza2lwcGVkLiBCeSBhdm9pZGluZyB1bm5lY2Vzc2FyeQppbml0aWFsaXphdGlvbiBvZiBz dHJ1Y3R1cmVzIGZvciBwcnVuZWQgcGFydGl0aW9ucywgdGhlc2UgY2hhbmdlcwppbXByb3ZlIHRo ZSBwZXJmb3JtYW5jZSBvZiB1cGRhdGVzIGFuZCBkZWxldGVzIG9uIHBhcnRpdGlvbmVkIHRhYmxl cwp3aXRoIGluaXRpYWwgcnVudGltZSBwcnVuaW5nLgoKRHVlIHRvIEV4ZWNJbml0TW9kaWZ5VGFi bGUoKSBjaGFuZ2VzIGFzIGRlc2NyaWJlZCBhYm92ZSwgRVhQTEFJTgpvbiBhIHBsYW4gZm9yIFVQ REFURSBhbmQgREVMRVRFIHRoYXQgY2FuIHVzZSBydW50aW1lIGluaXRpYWwgcHJ1bmluZwpubyBs b25nZXIgc2hvd3MgdGhlICJpbml0aWFsbHkiIHBydW5lZCBwYXJ0aXRpb25zIGluIHRoZSBsaXN0 IG9mCnJlbGF0aW9ucyB0byBiZSB1cGRhdGVkIG9yIGRlbGV0ZWQgZnJvbS4KClJldmlld2VkLWJ5 OiBSb2JlcnQgSGFhcyAoZWFybGllciB2ZXJzaW9ucykKUmV2aWV3ZWQtYnk6IFRvbWFzIFZvbmRy YQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBK0hpd3FGR2tNU2dlNlRnQzlLUXpk ZTBvaHBBeWNMUXVWN29vaXRFRXBiS0IwT19tZ0BtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgICAgICAgICAgICAgICB8ICAzICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAxOSArKysrLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgICAgICAgIHwgODIgKysrKysrKysrKysrKysrKy0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgICAgICAgICAgICAgIHwgMTkgKysr Ky0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICAgICAgICB8ICA4ICst CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYyAgICAgICAgICAgfCAgOSArLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgICAgICAgIHwgIDIgKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDcwICsrKysrKysr KysrKystLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgICAgICAgICB8 ICAyICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAgICAgICAgICB8IDI5 ICsrKysrKy0KIHNyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyAgICAgICAgICB8 IDE1ICsrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8 ICAzICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAgfCAg MyArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oICAgICAgICAgIHwgIDYg Ky0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAgICB8ICAzICst CiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAxMCArKysK IHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICAgICAgICB8ICA4ICsrCiBz cmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgNyArKwogc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0IHwgNDQgKysrKysrKysr Kwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbCAgICAgIHwgMTggKysr KwogMjEgZmlsZXMgY2hhbmdlZCwgMzIyIGluc2VydGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5ZnJvbS5jCmluZGV4IDBjYmQwNWY1NjAyLi5kYTFlOGRkYzVhMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5ZnJvbS5jCkBAIC03NjgsNyArNzY4LDggQEAgQ29weUZyb20oQ29weUZy b21TdGF0ZSBjc3RhdGUpCiAJICogaW5kZXgtZW50cnktbWFraW5nIG1hY2hpbmVyeS4gIChUaGVy ZSB1c2VkIHRvIGJlIGEgaHVnZSBhbW91bnQgb2YgY29kZQogCSAqIGhlcmUgdGhhdCBiYXNpY2Fs bHkgZHVwbGljYXRlZCBleGVjVXRpbHMuYyAuLi4pCiAJICovCi0JRXhlY0luaXRSYW5nZVRhYmxl KGVzdGF0ZSwgY3N0YXRlLT5yYW5nZV90YWJsZSwgY3N0YXRlLT5ydGVwZXJtaW5mb3MpOworCUV4 ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIGNzdGF0ZS0+cmFuZ2VfdGFibGUsIGNzdGF0ZS0+cnRl cGVybWluZm9zLAorCQkJCQkgICBibXNfbWFrZV9zaW5nbGV0b24oMSkpOwogCXJlc3VsdFJlbElu Zm8gPSB0YXJnZXRfcmVzdWx0UmVsSW5mbyA9IG1ha2VOb2RlKFJlc3VsdFJlbEluZm8pOwogCUV4 ZWNJbml0UmVzdWx0UmVsYXRpb24oZXN0YXRlLCByZXN1bHRSZWxJbmZvLCAxKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKaW5kZXggNjA0Y2IwNjI1YjguLjViOTg5MDc0MjAzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKQEAgLTg1MSw3ICs4NTEsOCBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncykKIAkvKgogCSAqIGluaXRpYWxpemUgdGhlIG5vZGUncyBleGVj dXRpb24gc3RhdGUKIAkgKi8KLQlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCByYW5nZVRhYmxl LCBwbGFubmVkc3RtdC0+cGVybUluZm9zKTsKKwlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCBy YW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+cGVybUluZm9zLAorCQkJCQkgICBibXNfY29weShwbGFu bmVkc3RtdC0+dW5wcnVuYWJsZVJlbGlkcykpOwogCiAJZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9 IHBsYW5uZWRzdG10OwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBsYW5uZWRzdG10 LT5wYXJ0UHJ1bmVJbmZvczsKQEAgLTg4MSw4ICs4ODIsMTMgQEAgSW5pdFBsYW4oUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQlSZWxhdGlvbglyZWxhdGlvbjsKIAkJCUV4ZWNS b3dNYXJrICplcm07CiAKLQkJCS8qIGlnbm9yZSAicGFyZW50IiByb3dtYXJrczsgdGhleSBhcmUg aXJyZWxldmFudCBhdCBydW50aW1lICovCi0JCQlpZiAocmMtPmlzUGFyZW50KQorCQkJLyoKKwkJ CSAqIElnbm9yZSAicGFyZW50IiByb3dtYXJrcywgYmVjYXVzZSB0aGV5IGFyZSBpcnJlbGV2YW50 IGF0CisJCQkgKiBydW50aW1lLiAgQWxzbyBpZ25vcmUgdGhlIHJvd21hcmtzIGJlbG9uZ2luZyB0 byBjaGlsZCB0YWJsZXMKKwkJCSAqIHRoYXQgaGF2ZSBiZWVuIHBydW5lZCBpbiBFeGVjRG9Jbml0 aWFsUHJ1bmluZygpLgorCQkJICovCisJCQlpZiAocmMtPmlzUGFyZW50IHx8CisJCQkJIWJtc19p c19tZW1iZXIocmMtPnJ0aSwgZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMpKQogCQkJCWNvbnRp bnVlOwogCiAJCQkvKiBnZXQgcmVsYXRpb24ncyBPSUQgKHdpbGwgcHJvZHVjZSBJbnZhbGlkT2lk IGlmIHN1YnF1ZXJ5KSAqLwpAQCAtMjkzMyw2ICsyOTM5LDEzIEBAIEV2YWxQbGFuUXVhbFN0YXJ0 KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJCX0KIAl9CiAKKwkvKgorCSAq IENvcHkgZXNfdW5wcnVuZWRfcmVsaWRzIHNvIHRoYXQgUm93TWFya3Mgb2YgcHJ1bmVkIHJlbGF0 aW9ucyBhcmUKKwkgKiBpZ25vcmVkIGluIEV4ZWNJbml0TG9ja1Jvd3MoKSBhbmQgRXhlY0luaXRN b2RpZnlUYWJsZSgpIHdoZW4KKwkgKiBpbml0aWFsaXppbmcgdGhlIHBsYW4gdHJlZXMgYmVsb3cu CisJICovCisJcmNlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcyA9IHBhcmVudGVzdGF0ZS0+ZXNf dW5wcnVuZWRfcmVsaWRzOworCiAJLyoKIAkgKiBJbml0aWFsaXplIHByaXZhdGUgc3RhdGUgaW5m b3JtYXRpb24gZm9yIGVhY2ggU3ViUGxhbi4gIFdlIG11c3QgZG8gdGhpcwogCSAqIGJlZm9yZSBy dW5uaW5nIEV4ZWNJbml0Tm9kZSBvbiB0aGUgbWFpbiBxdWVyeSB0cmVlLCBzaW5jZQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCA5YzMxM2Q4MTMxNS4uMTM0ZmY2MmY1Y2IgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC0xODMsNiArMTgzLDcgQEAgRXhlY1Nl cmlhbGl6ZVBsYW4oUGxhbiAqcGxhbiwgRVN0YXRlICplc3RhdGUpCiAJcHN0bXQtPnBsYW5UcmVl ID0gcGxhbjsKIAlwc3RtdC0+cGFydFBydW5lSW5mb3MgPSBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVf aW5mb3M7CiAJcHN0bXQtPnJ0YWJsZSA9IGVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGU7CisJcHN0bXQt PnVucHJ1bmFibGVSZWxpZHMgPSBlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkczsKIAlwc3RtdC0+ cGVybUluZm9zID0gZXN0YXRlLT5lc19ydGVwZXJtaW5mb3M7CiAJcHN0bXQtPnJlc3VsdFJlbGF0 aW9ucyA9IE5JTDsKIAlwc3RtdC0+YXBwZW5kUmVsYXRpb25zID0gTklMOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDRlOWMzMmNlZjE2Li43YWRhMjZhNTQxYyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTgyLDcgKzE4Miw4IEBAIHN0YXRpYyBj aGFyICpFeGVjQnVpbGRTbG90UGFydGl0aW9uS2V5RGVzY3JpcHRpb24oUmVsYXRpb24gcmVsLAog c3RhdGljIExpc3QgKmFkanVzdF9wYXJ0aXRpb25fY29sbm9zKExpc3QgKmNvbG5vcywgUmVzdWx0 UmVsSW5mbyAqbGVhZl9wYXJ0X3JyaSk7CiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9j b2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCk7CiBzdGF0aWMg UGFydGl0aW9uUHJ1bmVTdGF0ZSAqQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVz dGF0ZSwKLQkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKTsKKwkJ CQkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJCQkJCQkJ CSAgQml0bWFwc2V0ICoqYWxsX2xlYWZwYXJ0X3J0aXMpOwogc3RhdGljIHZvaWQgSW5pdFBhcnRp dGlvblBydW5lQ29udGV4dChQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJ CQkgIExpc3QgKnBydW5pbmdfc3RlcHMsCiAJCQkJCQkJCQkgIFBhcnRpdGlvbkRlc2MgcGFydGRl c2MsCkBAIC0xOTYsNyArMTk3LDggQEAgc3RhdGljIHZvaWQgSW5pdEV4ZWNQYXJ0aXRpb25QcnVu ZUNvbnRleHRzKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5zdGF0ZSwKIHN0YXRpYyB2b2lkIGZp bmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVk YXRhLAogCQkJCQkJCQkJCSAgIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgKnBwcnVuZSwKIAkJ CQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUsCi0JCQkJCQkJCQkJICAgQml0bWFwc2V0ICoq dmFsaWRzdWJwbGFucyk7CisJCQkJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucywK KwkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5fcnRpcyk7CiAKIAogLyoKQEAg LTE4MjAsOSArMTgyMiwxMiBAQCBFeGVjRG9Jbml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkK IAkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8gPSBsZmlyc3Rfbm9kZShQYXJ0aXRpb25Q cnVuZUluZm8sIGxjKTsKIAkJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIAkJQml0 bWFwc2V0ICAqdmFsaWRzdWJwbGFucyA9IE5VTEw7CisJCUJpdG1hcHNldCAgKmFsbF9sZWFmcGFy dF9ydGlzID0gTlVMTDsKKwkJQml0bWFwc2V0ICAqdmFsaWRzdWJwbGFuX3J0aXMgPSBOVUxMOwog CiAJCS8qIENyZWF0ZSBhbmQgc2F2ZSB0aGUgUGFydGl0aW9uUHJ1bmVTdGF0ZS4gKi8KLQkJcHJ1 bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoZXN0YXRlLCBwcnVuZWluZm8pOwor CQlwcnVuZXN0YXRlID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShlc3RhdGUsIHBydW5laW5m bywKKwkJCQkJCQkJCQkJICAgJmFsbF9sZWFmcGFydF9ydGlzKTsKIAkJZXN0YXRlLT5lc19wYXJ0 X3BydW5lX3N0YXRlcyA9IGxhcHBlbmQoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcywKIAkJ CQkJCQkJCQkJICAgcHJ1bmVzdGF0ZSk7CiAKQEAgLTE4MzEsNyArMTgzNiwxMyBAQCBFeGVjRG9J bml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKIAkJICogYml0bWFwc2V0IG9yIE5VTEwgYXMg ZGVzY3JpYmVkIGluIHRoZSBoZWFkZXIgY29tbWVudC4KIAkJICovCiAJCWlmIChwcnVuZXN0YXRl LT5kb19pbml0aWFsX3BydW5lKQotCQkJdmFsaWRzdWJwbGFucyA9IEV4ZWNGaW5kTWF0Y2hpbmdT dWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlKTsKKwkJCXZhbGlkc3VicGxhbnMgPSBFeGVjRmluZE1h dGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQkgJnZhbGlkc3Vi cGxhbl9ydGlzKTsKKwkJZWxzZQorCQkJdmFsaWRzdWJwbGFuX3J0aXMgPSBhbGxfbGVhZnBhcnRf cnRpczsKKworCQllc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcyA9IGJtc19hZGRfbWVtYmVycyhl c3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcywKKwkJCQkJCQkJCQkJCQkgdmFsaWRzdWJwbGFuX3J0 aXMpOwogCQllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyA9IGxhcHBlbmQoZXN0YXRlLT5l c19wYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkJCQkJCQkJCQl2YWxpZHN1YnBsYW5zKTsKIAl9CkBA IC0xOTQ0LDkgKzE5NTUsMTUgQEAgRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZyhQbGFuU3Rh dGUgKnBsYW5zdGF0ZSwKICAqIGluaXRpYWxpemVkIGhlcmUuIFRob3NlIHJlcXVpcmVkIGZvciBl eGVjIHBydW5pbmcgYXJlIGluaXRpYWxpemVkIGxhdGVyIGluCiAgKiBFeGVjSW5pdFBhcnRpdGlv bkV4ZWNQcnVuaW5nKCksIGFzIHRoZXkgZGVwZW5kIG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhl CiAgKiBwYXJlbnQgcGxhbiBub2RlJ3MgUGxhblN0YXRlLgorICoKKyAqIE9uIHJldHVybiwgKmFs bF9sZWFmcGFydF9ydGlzIHdpbGwgY29udGFpbiB0aGUgUlQgaW5kZXhlcyBvZiBhbGwgbGVhZgor ICogcGFydGl0aW9ucyBpZiBpbml0aWFsIHBydW5pbmcgc3RlcHMgYXJlIHNraXBwZWQgKGUuZy4s IGR1cmluZyBFWFBMQUlOCisgKiAoR0VORVJJQ19QTEFOKSkuIFRoZSBjYWxsZXIgaXMgcmVzcG9u c2libGUgZm9yIGFkZGluZyB0aGVzZSBSVCBpbmRleGVzCisgKiB0byBlc3RhdGUtPmVzX3VucHJ1 bmVkX3JlbGlkcy4KICAqLwogc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKgotQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVu ZWluZm8pCitDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRp b25QcnVuZUluZm8gKnBydW5laW5mbywKKwkJCQkJCSAgQml0bWFwc2V0ICoqYWxsX2xlYWZwYXJ0 X3J0aXMpCiB7CiAJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIAlpbnQJCQluX3Bh cnRfaGllcmFyY2hpZXM7CkBAIC0yMDM5LDggKzIwNTYsOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVu ZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJ CSAqIFRoZSBzZXQgb2YgcGFydGl0aW9ucyB0aGF0IGV4aXN0IG5vdyBtaWdodCBub3QgYmUgdGhl IHNhbWUgdGhhdAogCQkJICogZXhpc3RlZCB3aGVuIHRoZSBwbGFuIHdhcyBtYWRlLiAgVGhlIG5v cm1hbCBjYXNlIGlzIHRoYXQgaXQgaXM7CiAJCQkgKiBvcHRpbWl6ZSBmb3IgdGhhdCBjYXNlIHdp dGggYSBxdWljayBjb21wYXJpc29uLCBhbmQganVzdCBjb3B5Ci0JCQkgKiB0aGUgc3VicGxhbl9t YXAgYW5kIG1ha2Ugc3VicGFydF9tYXAgcG9pbnQgdG8gdGhlIG9uZSBpbgotCQkJICogUHJ1bmVJ bmZvLgorCQkJICogdGhlIHN1YnBsYW5fbWFwIGFuZCBtYWtlIHN1YnBhcnRfbWFwLCBsZWFmcGFy dF9ydGlfbWFwIHBvaW50IHRvCisJCQkgKiB0aGUgb25lcyBpbiBQcnVuZUluZm8uCiAJCQkgKgog CQkJICogRm9yIHRoZSBjYXNlIHdoZXJlIHRoZXkgYXJlbid0IGlkZW50aWNhbCwgd2UgY291bGQg aGF2ZSBtb3JlCiAJCQkgKiBwYXJ0aXRpb25zIG9uIGVpdGhlciBzaWRlOyBvciBldmVuIGV4YWN0 bHkgdGhlIHNhbWUgbnVtYmVyIG9mCkBAIC0yMDU5LDYgKzIwNzYsNyBAQCBDcmVhdGVQYXJ0aXRp b25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5m bykKIAkJCQkJICAgc2l6ZW9mKGludCkgKiBwYXJ0ZGVzYy0+bnBhcnRzKSA9PSAwKQogCQkJewog CQkJCXBwcnVuZS0+c3VicGFydF9tYXAgPSBwaW5mby0+c3VicGFydF9tYXA7CisJCQkJcHBydW5l LT5sZWFmcGFydF9ydGlfbWFwID0gcGluZm8tPmxlYWZwYXJ0X3J0aV9tYXA7CiAJCQkJbWVtY3B5 KHBwcnVuZS0+c3VicGxhbl9tYXAsIHBpbmZvLT5zdWJwbGFuX21hcCwKIAkJCQkJICAgc2l6ZW9m KGludCkgKiBwaW5mby0+bnBhcnRzKTsKIAkJCX0KQEAgLTIwNzksNiArMjA5Nyw3IEBAIENyZWF0 ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAq cHJ1bmVpbmZvKQogCQkJCSAqIG1pc21hdGNoZXMuCiAJCQkJICovCiAJCQkJcHBydW5lLT5zdWJw YXJ0X21hcCA9IHBhbGxvYyhzaXplb2YoaW50KSAqIHBhcnRkZXNjLT5ucGFydHMpOworCQkJCXBw cnVuZS0+bGVhZnBhcnRfcnRpX21hcCA9IHBhbGxvYyhzaXplb2YoaW50KSAqIHBhcnRkZXNjLT5u cGFydHMpOwogCiAJCQkJZm9yIChwcF9pZHggPSAwOyBwcF9pZHggPCBwYXJ0ZGVzYy0+bnBhcnRz OyBwcF9pZHgrKykKIAkJCQl7CkBAIC0yMDk2LDYgKzIxMTUsOCBAQCBDcmVhdGVQYXJ0aXRpb25Q cnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykK IAkJCQkJCQlwaW5mby0+c3VicGxhbl9tYXBbcGRfaWR4XTsKIAkJCQkJCXBwcnVuZS0+c3VicGFy dF9tYXBbcHBfaWR4XSA9CiAJCQkJCQkJcGluZm8tPnN1YnBhcnRfbWFwW3BkX2lkeF07CisJCQkJ CQlwcHJ1bmUtPmxlYWZwYXJ0X3J0aV9tYXBbcHBfaWR4XSA9CisJCQkJCQkJcGluZm8tPmxlYWZw YXJ0X3J0aV9tYXBbcGRfaWR4XTsKIAkJCQkJCXBkX2lkeCsrOwogCQkJCQkJY29udGludWU7CiAJ CQkJCX0KQEAgLTIxMzMsNiArMjE1NCw3IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0 YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCiAJCQkJCXBwcnVu ZS0+c3VicGFydF9tYXBbcHBfaWR4XSA9IC0xOwogCQkJCQlwcHJ1bmUtPnN1YnBsYW5fbWFwW3Bw X2lkeF0gPSAtMTsKKwkJCQkJcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwW3BwX2lkeF0gPSAwOwog CQkJCX0KIAkJCX0KIApAQCAtMjE3NCw2ICsyMTk2LDI1IEBAIENyZWF0ZVBhcnRpdGlvblBydW5l U3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogCQkJ cHJ1bmVzdGF0ZS0+ZXhlY3BhcmFtaWRzID0gYm1zX2FkZF9tZW1iZXJzKHBydW5lc3RhdGUtPmV4 ZWNwYXJhbWlkcywKIAkJCQkJCQkJCQkJCQkgICBwaW5mby0+ZXhlY3BhcmFtaWRzKTsKIAorCQkJ LyoKKwkJCSAqIFJldHVybiBhbGwgbGVhZiBwYXJ0aXRpb24gaW5kZXhlcyBpZiB3ZSdyZSBza2lw cGluZyBwcnVuaW5nIGluCisJCQkgKiB0aGUgRVhQTEFJTiAoR0VORVJJQ19QTEFOKSBjYXNlLgor CQkJICovCisJCQlpZiAocGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcyAmJiAhcHJ1bmVzdGF0 ZS0+ZG9faW5pdGlhbF9wcnVuZSkKKwkJCXsKKwkJCQlpbnQJCQlwYXJ0X2luZGV4ID0gLTE7CisK KwkJCQl3aGlsZSAoKHBhcnRfaW5kZXggPSBibXNfbmV4dF9tZW1iZXIocHBydW5lLT5wcmVzZW50 X3BhcnRzLAorCQkJCQkJCQkJCQkJCSBwYXJ0X2luZGV4KSkgPj0gMCkKKwkJCQl7CisJCQkJCUlu ZGV4CQlydGluZGV4ID0gcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwW3BhcnRfaW5kZXhdOworCisJ CQkJCWlmIChydGluZGV4KQorCQkJCQkJKmFsbF9sZWFmcGFydF9ydGlzID0gYm1zX2FkZF9tZW1i ZXIoKmFsbF9sZWFmcGFydF9ydGlzLAorCQkJCQkJCQkJCQkJCQkJcnRpbmRleCk7CisJCQkJfQor CQkJfQorCiAJCQlqKys7CiAJCX0KIAkJaSsrOwpAQCAtMjQzOSwxMCArMjQ4MCwxNSBAQCBJbml0 RXhlY1BhcnRpdGlvblBydW5lQ29udGV4dHMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0 ZSwKICAqIFBhc3MgaW5pdGlhbF9wcnVuZSBpZiBQQVJBTV9FWEVDIFBhcmFtcyBjYW5ub3QgeWV0 IGJlIGV2YWx1YXRlZC4gIFRoaXMKICAqIGRpZmZlcmVudGlhdGVzIHRoZSBpbml0aWFsIGV4ZWN1 dG9yLXRpbWUgcHJ1bmluZyBzdGVwIGZyb20gbGF0ZXIKICAqIHJ1bnRpbWUgcHJ1bmluZy4KKyAq CisgKiBUaGUgY2FsbGVyIG11c3QgcGFzcyBhIG5vbi1OVUxMIHZhbGlkc3VicGxhbl9ydGlzIGR1 cmluZyBpbml0aWFsIHBydW5pbmcKKyAqIHRvIGNvbGxlY3QgdGhlIFJUIGluZGV4ZXMgb2YgbGVh ZiBwYXJ0aXRpb25zIHdob3NlIHN1Ym5vZGVzIHdpbGwgYmUKKyAqIGV4ZWN1dGVkLiAgVGhlc2Ug UlQgaW5kZXhlcyBhcmUgbGF0ZXIgYWRkZWQgdG8gRVN0YXRlLmVzX3VucHJ1bmVkX3JlbGlkcy4K ICAqLwogQml0bWFwc2V0ICoKIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVu ZVN0YXRlICpwcnVuZXN0YXRlLAotCQkJCQkJIGJvb2wgaW5pdGlhbF9wcnVuZSkKKwkJCQkJCSBi b29sIGluaXRpYWxfcHJ1bmUsCisJCQkJCQkgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFuX3J0aXMp CiB7CiAJQml0bWFwc2V0ICAqcmVzdWx0ID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRl eHQ7CkBAIC0yNDU0LDYgKzI1MDAsNyBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0 aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkgKiBldmFsdWF0ZWQgKmFuZCogdGhlcmUgYXJl IHN0ZXBzIGluIHdoaWNoIHRvIGRvIHNvLgogCSAqLwogCUFzc2VydChpbml0aWFsX3BydW5lIHx8 IHBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUpOworCUFzc2VydCh2YWxpZHN1YnBsYW5fcnRpcyAh PSBOVUxMIHx8ICFpbml0aWFsX3BydW5lKTsKIAogCS8qCiAJICogU3dpdGNoIHRvIGEgdGVtcCBj b250ZXh0IHRvIGF2b2lkIGxlYWtpbmcgbWVtb3J5IGluIHRoZSBleGVjdXRvcidzCkBAIC0yNDc3 LDcgKzI1MjQsNyBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0 ZSAqcHJ1bmVzdGF0ZSwKIAkJICovCiAJCXBwcnVuZSA9ICZwcnVuZWRhdGEtPnBhcnRyZWxwcnVu ZWRhdGFbMF07CiAJCWZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShwcnVuZWRhdGEsIHBw cnVuZSwgaW5pdGlhbF9wcnVuZSwKLQkJCQkJCQkJCSAgICZyZXN1bHQpOworCQkJCQkJCQkJICAg JnJlc3VsdCwgdmFsaWRzdWJwbGFuX3J0aXMpOwogCiAJCS8qCiAJCSAqIEV4cHJlc3Npb24gZXZh bCBtYXkgaGF2ZSB1c2VkIHNwYWNlIGluIEV4cHJDb250ZXh0IHRvby4KQEAgLTI0OTUsNiArMjU0 Miw4IEBAIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVu ZXN0YXRlLAogCiAJLyogQ29weSByZXN1bHQgb3V0IG9mIHRoZSB0ZW1wIGNvbnRleHQgYmVmb3Jl IHdlIHJlc2V0IGl0ICovCiAJcmVzdWx0ID0gYm1zX2NvcHkocmVzdWx0KTsKKwlpZiAodmFsaWRz dWJwbGFuX3J0aXMpCisJCSp2YWxpZHN1YnBsYW5fcnRpcyA9IGJtc19jb3B5KCp2YWxpZHN1YnBs YW5fcnRpcyk7CiAKIAlNZW1vcnlDb250ZXh0UmVzZXQocHJ1bmVzdGF0ZS0+cHJ1bmVfY29udGV4 dCk7CiAKQEAgLTI1MDUsMTMgKzI1NTQsMTYgQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBh cnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAgKiBmaW5kX21hdGNoaW5nX3N1YnBsYW5z X3JlY3Vyc2UKICAqCQlSZWN1cnNpdmUgd29ya2VyIGZ1bmN0aW9uIGZvciBFeGVjRmluZE1hdGNo aW5nU3ViUGxhbnMKICAqCi0gKiBBZGRzIHZhbGlkIChub24tcHJ1bmFibGUpIHN1YnBsYW4gSURz IHRvICp2YWxpZHN1YnBsYW5zCisgKiBBZGRzIHZhbGlkIChub24tcHJ1bmFibGUpIHN1YnBsYW4g SURzIHRvICp2YWxpZHN1YnBsYW5zIGFuZCB0aGUgUlQgaW5kZXhlcworICogb2YgdGhlaXIgY29y cmVzcG9uZGluZyBsZWFmIHBhcnRpdGlvbnMgdG8gKnZhbGlkc3VicGxhbl9ydGlzIGlmCisgKiBp dCdzIG5vbi1OVUxMLgogICovCiBzdGF0aWMgdm9pZAogZmluZF9tYXRjaGluZ19zdWJwbGFuc19y ZWN1cnNlKFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJICAgUGFydGl0 aW9uZWRSZWxQcnVuaW5nRGF0YSAqcHBydW5lLAogCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVu ZSwKLQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zKQorCQkJCQkJCSAgIEJpdG1h cHNldCAqKnZhbGlkc3VicGxhbnMsCisJCQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFu X3J0aXMpCiB7CiAJQml0bWFwc2V0ICAqcGFydHNldDsKIAlpbnQJCQlpOwpAQCAtMjUzOCw4ICsy NTkwLDEzIEBAIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQYXJ0aXRpb25QcnVuaW5n RGF0YSAqcHJ1bmVkYXRhLAogCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihwYXJ0c2V0LCBp KSkgPj0gMCkKIAl7CiAJCWlmIChwcHJ1bmUtPnN1YnBsYW5fbWFwW2ldID49IDApCisJCXsKIAkJ CSp2YWxpZHN1YnBsYW5zID0gYm1zX2FkZF9tZW1iZXIoKnZhbGlkc3VicGxhbnMsCiAJCQkJCQkJ CQkJCXBwcnVuZS0+c3VicGxhbl9tYXBbaV0pOworCQkJaWYgKHZhbGlkc3VicGxhbl9ydGlzKQor CQkJCSp2YWxpZHN1YnBsYW5fcnRpcyA9IGJtc19hZGRfbWVtYmVyKCp2YWxpZHN1YnBsYW5fcnRp cywKKwkJCQkJCQkJCQkJCQlwcHJ1bmUtPmxlYWZwYXJ0X3J0aV9tYXBbaV0pOworCQl9CiAJCWVs c2UKIAkJewogCQkJaW50CQkJcGFydGlkeCA9IHBwcnVuZS0+c3VicGFydF9tYXBbaV07CkBAIC0y NTQ3LDcgKzI2MDQsOCBAQCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9u UHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwKIAkJCWlmIChwYXJ0aWR4ID49IDApCiAJCQkJZmluZF9t YXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBydW5lZGF0YSwKIAkJCQkJCQkJCQkJICAgJnBydW5l ZGF0YS0+cGFydHJlbHBydW5lZGF0YVtwYXJ0aWR4XSwKLQkJCQkJCQkJCQkJICAgaW5pdGlhbF9w cnVuZSwgdmFsaWRzdWJwbGFucyk7CisJCQkJCQkJCQkJCSAgIGluaXRpYWxfcHJ1bmUsIHZhbGlk c3VicGxhbnMsCisJCQkJCQkJCQkJCSAgIHZhbGlkc3VicGxhbl9ydGlzKTsKIAkJCWVsc2UKIAkJ CXsKIAkJCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCA2YWFjNmYzYTg3Mi4uMTc5 MmM0MGE1Y2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC03NzEsNyArNzcxLDggQEAg RXhlY09wZW5TY2FuUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHNjYW5yZWxpZCwgaW50 IGVmbGFncykKICAqIGluZGV4ZWQgYnkgcmFuZ2V0YWJsZSBpbmRleC4KICAqLwogdm9pZAotRXhl Y0luaXRSYW5nZVRhYmxlKEVTdGF0ZSAqZXN0YXRlLCBMaXN0ICpyYW5nZVRhYmxlLCBMaXN0ICpw ZXJtSW5mb3MpCitFeGVjSW5pdFJhbmdlVGFibGUoRVN0YXRlICplc3RhdGUsIExpc3QgKnJhbmdl VGFibGUsIExpc3QgKnBlcm1JbmZvcywKKwkJCQkgICBCaXRtYXBzZXQgKnVucHJ1bmVkX3JlbGlk cykKIHsKIAkvKiBSZW1lbWJlciB0aGUgcmFuZ2UgdGFibGUgTGlzdCBhcy1pcyAqLwogCWVzdGF0 ZS0+ZXNfcmFuZ2VfdGFibGUgPSByYW5nZVRhYmxlOwpAQCAtNzgyLDYgKzc4MywxNSBAQCBFeGVj SW5pdFJhbmdlVGFibGUoRVN0YXRlICplc3RhdGUsIExpc3QgKnJhbmdlVGFibGUsIExpc3QgKnBl cm1JbmZvcykKIAkvKiBTZXQgc2l6ZSBvZiBhc3NvY2lhdGVkIGFycmF5cyAqLwogCWVzdGF0ZS0+ ZXNfcmFuZ2VfdGFibGVfc2l6ZSA9IGxpc3RfbGVuZ3RoKHJhbmdlVGFibGUpOwogCisJLyoKKwkg KiBJbml0aWFsaXplIHRoZSBiaXRtYXBzZXQgb2YgUlQgaW5kZXhlcyAoZXNfdW5wcnVuZWRfcmVs aWRzKQorCSAqIHJlcHJlc2VudGluZyByZWxhdGlvbnMgdGhhdCB3aWxsIGJlIHNjYW5uZWQgZHVy aW5nIGV4ZWN1dGlvbi4gVGhpcyBzZXQKKwkgKiBpcyBpbml0aWFsbHkgcG9wdWxhdGVkIGJ5IHRo ZSBjYWxsZXIgYW5kIG1heSBiZSBleHRlbmRlZCBsYXRlciBieQorCSAqIEV4ZWNEb0luaXRpYWxQ cnVuaW5nKCkgdG8gaW5jbHVkZSBSVCBpbmRleGVzIG9mIHVucHJ1bmVkIGxlYWYKKwkgKiBwYXJ0 aXRpb25zLgorCSAqLworCWVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzID0gdW5wcnVuZWRfcmVs aWRzOworCiAJLyoKIAkgKiBBbGxvY2F0ZSBhbiBhcnJheSB0byBzdG9yZSBhbiBvcGVuIFJlbGF0 aW9uIGNvcnJlc3BvbmRpbmcgdG8gZWFjaAogCSAqIHJhbmdldGFibGUgZW50cnksIGFuZCBpbml0 aWFsaXplIGVudHJpZXMgdG8gTlVMTC4gIFJlbGF0aW9ucyBhcmUgb3BlbmVkCkBAIC04MDMsNiAr ODEzLDEwIEBAIEV4ZWNJbml0UmFuZ2VUYWJsZShFU3RhdGUgKmVzdGF0ZSwgTGlzdCAqcmFuZ2VU YWJsZSwgTGlzdCAqcGVybUluZm9zKQogICoJCU9wZW4gdGhlIFJlbGF0aW9uIGZvciBhIHJhbmdl IHRhYmxlIGVudHJ5LCBpZiBub3QgYWxyZWFkeSBkb25lCiAgKgogICogVGhlIFJlbGF0aW9ucyB3 aWxsIGJlIGNsb3NlZCBpbiBFeGVjRW5kUGxhbigpLgorICoKKyAqIE5vdGU6IFRoZSBjYWxsZXIg bXVzdCBlbnN1cmUgdGhhdCAncnRpJyByZWZlcnMgdG8gYW4gdW5wcnVuZWQgcmVsYXRpb24KKyAq IChpLmUuLCBpdCBpcyBhIG1lbWJlciBvZiBlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcykgYmVm b3JlIGNhbGxpbmcgdGhpcworICogZnVuY3Rpb24uIEF0dGVtcHRpbmcgdG8gb3BlbiBhIHBydW5l ZCByZWxhdGlvbiB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvci4KICAqLwogUmVsYXRpb24KIEV4ZWNH ZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSkKQEAgLTgxMSw2 ICs4MjUsOSBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRl eCBydGkpCiAKIAlBc3NlcnQocnRpID4gMCAmJiBydGkgPD0gZXN0YXRlLT5lc19yYW5nZV90YWJs ZV9zaXplKTsKIAorCWlmICghYm1zX2lzX21lbWJlcihydGksIGVzdGF0ZS0+ZXNfdW5wcnVuZWRf cmVsaWRzKSkKKwkJZWxvZyhFUlJPUiwgInRyeWluZyB0byBvcGVuIGEgcHJ1bmVkIHJlbGF0aW9u Iik7CisKIAlyZWwgPSBlc3RhdGUtPmVzX3JlbGF0aW9uc1tydGkgLSAxXTsKIAlpZiAocmVsID09 IE5VTEwpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IDIzOTdlNWUxN2IwLi4x NWM0MjI3Y2M2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtNTk1LDcgKzU5NSw3 IEBAIGNob29zZV9uZXh0X3N1YnBsYW5fbG9jYWxseShBcHBlbmRTdGF0ZSAqbm9kZSkKIAkJZWxz ZSBpZiAoIW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpCiAJCXsKIAkJCW5vZGUt PmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+ YXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9k ZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBs YW5zX2lkZW50aWZpZWQgPSB0cnVlOwogCQl9CiAKQEAgLTY2Miw3ICs2NjIsNyBAQCBjaG9vc2Vf bmV4dF9zdWJwbGFuX2Zvcl9sZWFkZXIoQXBwZW5kU3RhdGUgKm5vZGUpCiAJCWlmICghbm9kZS0+ YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkKIAkJewogCQkJbm9kZS0+YXNfdmFsaWRfc3Vi cGxhbnMgPQotCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0 ZSwgZmFsc2UpOworCQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9z dGF0ZSwgZmFsc2UsIE5VTEwpOwogCQkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmll ZCA9IHRydWU7CiAKIAkJCS8qCkBAIC03MzgsNyArNzM4LDcgQEAgY2hvb3NlX25leHRfc3VicGxh bl9mb3Jfd29ya2VyKEFwcGVuZFN0YXRlICpub2RlKQogCWVsc2UgaWYgKCFub2RlLT5hc192YWxp ZF9zdWJwbGFuc19pZGVudGlmaWVkKQogCXsKIAkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQot CQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSk7 CisJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNl LCBOVUxMKTsKIAkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CiAK IAkJbWFya19pbnZhbGlkX3N1YnBsYW5zX2FzX2ZpbmlzaGVkKG5vZGUpOwpAQCAtODkxLDcgKzg5 MSw3IEBAIEV4ZWNBcHBlbmRBc3luY0JlZ2luKEFwcGVuZFN0YXRlICpub2RlKQogCWlmICghbm9k ZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCkKIAl7CiAJCW5vZGUtPmFzX3ZhbGlkX3N1 YnBsYW5zID0KLQkJCUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0 ZSwgZmFsc2UpOworCQkJRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0 YXRlLCBmYWxzZSwgTlVMTCk7CiAJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQg PSB0cnVlOwogCiAJCWNsYXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKG5vZGUpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTG9ja1Jvd3MuYwppbmRleCA0ZTRlM2RiMGIzOC4uYThhZmJmOTNiNDggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCkBAIC0zNDcsOCArMzQ3LDEzIEBAIEV4ZWNJbml0 TG9ja1Jvd3MoTG9ja1Jvd3MgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlF eGVjUm93TWFyayAqZXJtOwogCQlFeGVjQXV4Um93TWFyayAqYWVybTsKIAotCQkvKiBpZ25vcmUg InBhcmVudCIgcm93bWFya3M7IHRoZXkgYXJlIGlycmVsZXZhbnQgYXQgcnVudGltZSAqLwotCQlp ZiAocmMtPmlzUGFyZW50KQorCQkvKgorCQkgKiBJZ25vcmUgInBhcmVudCIgcm93bWFya3MsIGJl Y2F1c2UgdGhleSBhcmUgaXJyZWxldmFudCBhdCBydW50aW1lLgorCQkgKiBBbHNvIGlnbm9yZSB0 aGUgcm93bWFya3MgYmVsb25naW5nIHRvIGNoaWxkIHRhYmxlcyB0aGF0IGhhdmUgYmVlbgorCQkg KiBwcnVuZWQgaW4gRXhlY0RvSW5pdGlhbFBydW5pbmcoKS4KKwkJICovCisJCWlmIChyYy0+aXNQ YXJlbnQgfHwKKwkJCSFibXNfaXNfbWVtYmVyKHJjLT5ydGksIGVzdGF0ZS0+ZXNfdW5wcnVuZWRf cmVsaWRzKSkKIAkJCWNvbnRpbnVlOwogCiAJCS8qIGZpbmQgRXhlY1Jvd01hcmsgYW5kIGJ1aWxk IEV4ZWNBdXhSb3dNYXJrICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVyZ2VBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmlu ZGV4IGIyZGM2NjI2Yzk5Li40MDVlOGY5NDI4NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlQXBwZW5kLmMKQEAgLTIzMyw3ICsyMzMsNyBAQCBFeGVjTWVyZ2VBcHBlbmQoUGxhblN0YXRl ICpwc3RhdGUpCiAJCSAqLwogCQlpZiAobm9kZS0+bXNfdmFsaWRfc3VicGxhbnMgPT0gTlVMTCkK IAkJCW5vZGUtPm1zX3ZhbGlkX3N1YnBsYW5zID0KLQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxh bnMobm9kZS0+bXNfcHJ1bmVfc3RhdGUsIGZhbHNlKTsKKwkJCQlFeGVjRmluZE1hdGNoaW5nU3Vi UGxhbnMobm9kZS0+bXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAogCQkvKgogCQkgKiBG aXJzdCB0aW1lIHRocm91Z2g6IHB1bGwgdGhlIGZpcnN0IHR1cGxlIGZyb20gZWFjaCB2YWxpZCBz dWJwbGFuLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCBiYzgyZTAz NWJhMi4uMzQ5ZWQyZDZkMmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN b2RpZnlUYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j CkBAIC02OTAsNyArNjkwLDcgQEAgRXhlY0luaXRVcGRhdGVQcm9qZWN0aW9uKE1vZGlmeVRhYmxl U3RhdGUgKm10c3RhdGUsCiAJCUFzc2VydCh3aGljaHJlbCA+PSAwICYmIHdoaWNocmVsIDwgbXRz dGF0ZS0+bXRfbnJlbHMpOwogCX0KIAotCXVwZGF0ZUNvbG5vcyA9IChMaXN0ICopIGxpc3RfbnRo KG5vZGUtPnVwZGF0ZUNvbG5vc0xpc3RzLCB3aGljaHJlbCk7CisJdXBkYXRlQ29sbm9zID0gKExp c3QgKikgbGlzdF9udGgobXRzdGF0ZS0+bXRfdXBkYXRlQ29sbm9zTGlzdHMsIHdoaWNocmVsKTsK IAogCS8qCiAJICogRm9yIFVQREFURSwgd2UgdXNlIHRoZSBvbGQgdHVwbGUgdG8gZmlsbCB1cCBt aXNzaW5nIHZhbHVlcyBpbiB0aGUgdHVwbGUKQEAgLTQ0NTMsNyArNDQ1MywxMSBAQCBFeGVjSW5p dE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAlNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlOwogCVBsYW4JICAgKnN1YnBsYW4gPSBvdXRl clBsYW4obm9kZSk7CiAJQ21kVHlwZQkJb3BlcmF0aW9uID0gbm9kZS0+b3BlcmF0aW9uOwotCWlu dAkJCW5yZWxzID0gbGlzdF9sZW5ndGgobm9kZS0+cmVzdWx0UmVsYXRpb25zKTsKKwlpbnQJCQlu cmVsczsKKwlMaXN0CSAgICpyZXN1bHRSZWxhdGlvbnMgPSBOSUw7CisJTGlzdAkgICAqd2l0aENo ZWNrT3B0aW9uTGlzdHMgPSBOSUw7CisJTGlzdAkgICAqcmV0dXJuaW5nTGlzdHMgPSBOSUw7CisJ TGlzdAkgICAqdXBkYXRlQ29sbm9zTGlzdHMgPSBOSUw7CiAJUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbzsKIAlMaXN0CSAgICphcm93bWFya3M7CiAJTGlzdENlbGwgICAqbDsKQEAgLTQ0NjMs NiArNDQ2Nyw0NSBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkvKiBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgZmxhZ3Mg Ki8KIAlBc3NlcnQoIShlZmxhZ3MgJiAoRVhFQ19GTEFHX0JBQ0tXQVJEIHwgRVhFQ19GTEFHX01B UkspKSk7CiAKKwkvKgorCSAqIE9ubHkgY29uc2lkZXIgdW5wcnVuZWQgcmVsYXRpb25zIGZvciBp bml0aWFsaXppbmcgdGhlaXIgUmVzdWx0UmVsSW5mbworCSAqIHN0cnVjdCBhbmQgb3RoZXIgZmll bGRzIHN1Y2ggYXMgd2l0aENoZWNrT3B0aW9ucywgZXRjLgorCSAqLworCWkgPSAwOworCWZvcmVh Y2gobCwgbm9kZS0+cmVzdWx0UmVsYXRpb25zKQorCXsKKwkJSW5kZXgJCXJ0aSA9IGxmaXJzdF9p bnQobCk7CisKKwkJaWYgKGJtc19pc19tZW1iZXIocnRpLCBlc3RhdGUtPmVzX3VucHJ1bmVkX3Jl bGlkcykpCisJCXsKKwkJCXJlc3VsdFJlbGF0aW9ucyA9IGxhcHBlbmRfaW50KHJlc3VsdFJlbGF0 aW9ucywgcnRpKTsKKwkJCWlmIChub2RlLT53aXRoQ2hlY2tPcHRpb25MaXN0cykKKwkJCXsKKwkJ CQlMaXN0CSAgICp3aXRoQ2hlY2tPcHRpb25zID0gbGlzdF9udGhfbm9kZShMaXN0LAorCQkJCQkJ CQkJCQkJCQkJIG5vZGUtPndpdGhDaGVja09wdGlvbkxpc3RzLAorCQkJCQkJCQkJCQkJCQkJIGkp OworCisJCQkJd2l0aENoZWNrT3B0aW9uTGlzdHMgPSBsYXBwZW5kKHdpdGhDaGVja09wdGlvbkxp c3RzLCB3aXRoQ2hlY2tPcHRpb25zKTsKKwkJCX0KKwkJCWlmIChub2RlLT5yZXR1cm5pbmdMaXN0 cykKKwkJCXsKKwkJCQlMaXN0CSAgICpyZXR1cm5pbmdMaXN0ID0gbGlzdF9udGhfbm9kZShMaXN0 LAorCQkJCQkJCQkJCQkJCQkgIG5vZGUtPnJldHVybmluZ0xpc3RzLAorCQkJCQkJCQkJCQkJCQkg IGkpOworCisJCQkJcmV0dXJuaW5nTGlzdHMgPSBsYXBwZW5kKHJldHVybmluZ0xpc3RzLCByZXR1 cm5pbmdMaXN0KTsKKwkJCX0KKwkJCWlmIChub2RlLT51cGRhdGVDb2xub3NMaXN0cykKKwkJCXsK KwkJCQlMaXN0CSAgICp1cGRhdGVDb2xub3NMaXN0ID0gbGlzdF9udGgobm9kZS0+dXBkYXRlQ29s bm9zTGlzdHMsIGkpOworCisJCQkJdXBkYXRlQ29sbm9zTGlzdHMgPSBsYXBwZW5kKHVwZGF0ZUNv bG5vc0xpc3RzLCB1cGRhdGVDb2xub3NMaXN0KTsKKwkJCX0KKwkJfQorCQlpKys7CisJfQorCW5y ZWxzID0gbGlzdF9sZW5ndGgocmVzdWx0UmVsYXRpb25zKTsKKwogCS8qCiAJICogY3JlYXRlIHN0 YXRlIHN0cnVjdHVyZQogCSAqLwpAQCAtNDQ4Myw2ICs0NTI2LDcgQEAgRXhlY0luaXRNb2RpZnlU YWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJbXRz dGF0ZS0+bXRfbWVyZ2VfaW5zZXJ0ZWQgPSAwOwogCW10c3RhdGUtPm10X21lcmdlX3VwZGF0ZWQg PSAwOwogCW10c3RhdGUtPm10X21lcmdlX2RlbGV0ZWQgPSAwOworCW10c3RhdGUtPm10X3VwZGF0 ZUNvbG5vc0xpc3RzID0gdXBkYXRlQ29sbm9zTGlzdHM7CiAKIAkvKi0tLS0tLS0tLS0KIAkgKiBS ZXNvbHZlIHRoZSB0YXJnZXQgcmVsYXRpb24uIFRoaXMgaXMgdGhlIHNhbWUgYXM6CkBAIC00NTAw LDYgKzQ1NDQsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKi8KIAlpZiAobm9kZS0+cm9vdFJlbGF0aW9uID4g MCkKIAl7CisJCUFzc2VydChibXNfaXNfbWVtYmVyKG5vZGUtPnJvb3RSZWxhdGlvbiwgZXN0YXRl LT5lc191bnBydW5lZF9yZWxpZHMpKTsKIAkJbXRzdGF0ZS0+cm9vdFJlc3VsdFJlbEluZm8gPSBt YWtlTm9kZShSZXN1bHRSZWxJbmZvKTsKIAkJRXhlY0luaXRSZXN1bHRSZWxhdGlvbihlc3RhdGUs IG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvLAogCQkJCQkJCSAgIG5vZGUtPnJvb3RSZWxhdGlv bik7CkBAIC00NTE0LDcgKzQ1NTksNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxl ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCS8qIHNldCB1cCBlcHFzdGF0 ZSB3aXRoIGR1bW15IHN1YnBsYW4gZGF0YSBmb3IgdGhlIG1vbWVudCAqLwogCUV2YWxQbGFuUXVh bEluaXQoJm10c3RhdGUtPm10X2VwcXN0YXRlLCBlc3RhdGUsIE5VTEwsIE5JTCwKLQkJCQkJIG5v ZGUtPmVwcVBhcmFtLCBub2RlLT5yZXN1bHRSZWxhdGlvbnMpOworCQkJCQkgbm9kZS0+ZXBxUGFy YW0sIHJlc3VsdFJlbGF0aW9ucyk7CiAJbXRzdGF0ZS0+ZmlyZUJTVHJpZ2dlcnMgPSB0cnVlOwog CiAJLyoKQEAgLTQ1MzIsNyArNDU3Nyw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFi bGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCXJlc3VsdFJlbElu Zm8gPSBtdHN0YXRlLT5yZXN1bHRSZWxJbmZvOwogCWkgPSAwOwotCWZvcmVhY2gobCwgbm9kZS0+ cmVzdWx0UmVsYXRpb25zKQorCWZvcmVhY2gobCwgcmVzdWx0UmVsYXRpb25zKQogCXsKIAkJSW5k ZXgJCXJlc3VsdFJlbGF0aW9uID0gbGZpcnN0X2ludChsKTsKIAkJTGlzdAkgICAqbWVyZ2VBY3Rp b25zID0gTklMOwpAQCAtNDY3Niw3ICs0NzIxLDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2Rp ZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogSW5pdGlhbGl6 ZSBhbnkgV0lUSCBDSEVDSyBPUFRJT04gY29uc3RyYWludHMgaWYgbmVlZGVkLgogCSAqLwogCXJl c3VsdFJlbEluZm8gPSBtdHN0YXRlLT5yZXN1bHRSZWxJbmZvOwotCWZvcmVhY2gobCwgbm9kZS0+ d2l0aENoZWNrT3B0aW9uTGlzdHMpCisJZm9yZWFjaChsLCB3aXRoQ2hlY2tPcHRpb25MaXN0cykK IAl7CiAJCUxpc3QJICAgKndjb0xpc3QgPSAoTGlzdCAqKSBsZmlyc3QobCk7CiAJCUxpc3QJICAg Kndjb0V4cHJzID0gTklMOwpAQCAtNDY5OSw3ICs0NzQ0LDcgQEAgRXhlY0luaXRNb2RpZnlUYWJs ZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJLyoKIAkg KiBJbml0aWFsaXplIFJFVFVSTklORyBwcm9qZWN0aW9ucyBpZiBuZWVkZWQuCiAJICovCi0JaWYg KG5vZGUtPnJldHVybmluZ0xpc3RzKQorCWlmIChyZXR1cm5pbmdMaXN0cykKIAl7CiAJCVR1cGxl VGFibGVTbG90ICpzbG90OwogCQlFeHByQ29udGV4dCAqZWNvbnRleHQ7CkBAIC00NzA4LDcgKzQ3 NTMsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAkJICogSW5pdGlhbGl6ZSByZXN1bHQgdHVwbGUgc2xvdCBhbmQg YXNzaWduIGl0cyByb3d0eXBlIHVzaW5nIHRoZSBmaXJzdAogCQkgKiBSRVRVUk5JTkcgbGlzdC4g IFdlIGFzc3VtZSB0aGUgcmVzdCB3aWxsIGxvb2sgdGhlIHNhbWUuCiAJCSAqLwotCQltdHN0YXRl LT5wcy5wbGFuLT50YXJnZXRsaXN0ID0gKExpc3QgKikgbGluaXRpYWwobm9kZS0+cmV0dXJuaW5n TGlzdHMpOworCQltdHN0YXRlLT5wcy5wbGFuLT50YXJnZXRsaXN0ID0gKExpc3QgKikgbGluaXRp YWwocmV0dXJuaW5nTGlzdHMpOwogCiAJCS8qIFNldCB1cCBhIHNsb3QgZm9yIHRoZSBvdXRwdXQg b2YgdGhlIFJFVFVSTklORyBwcm9qZWN0aW9uKHMpICovCiAJCUV4ZWNJbml0UmVzdWx0VHVwbGVT bG90VEwoJm10c3RhdGUtPnBzLCAmVFRTT3BzVmlydHVhbCk7CkBAIC00NzIzLDcgKzQ3NjgsNyBA QCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkJICogQnVpbGQgYSBwcm9qZWN0aW9uIGZvciBlYWNoIHJlc3VsdCByZWwu CiAJCSAqLwogCQlyZXN1bHRSZWxJbmZvID0gbXRzdGF0ZS0+cmVzdWx0UmVsSW5mbzsKLQkJZm9y ZWFjaChsLCBub2RlLT5yZXR1cm5pbmdMaXN0cykKKwkJZm9yZWFjaChsLCByZXR1cm5pbmdMaXN0 cykKIAkJewogCQkJTGlzdAkgICAqcmxpc3QgPSAoTGlzdCAqKSBsZmlyc3QobCk7CiAKQEAgLTQ4 MjQsOCArNDg2OSwxMyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY1Jvd01hcmsgKmVybTsKIAkJRXhlY0F1 eFJvd01hcmsgKmFlcm07CiAKLQkJLyogaWdub3JlICJwYXJlbnQiIHJvd21hcmtzOyB0aGV5IGFy ZSBpcnJlbGV2YW50IGF0IHJ1bnRpbWUgKi8KLQkJaWYgKHJjLT5pc1BhcmVudCkKKwkJLyoKKwkJ ICogSWdub3JlICJwYXJlbnQiIHJvd21hcmtzLCBiZWNhdXNlIHRoZXkgYXJlIGlycmVsZXZhbnQg YXQgcnVudGltZS4KKwkJICogQWxzbyBpZ25vcmUgdGhlIHJvd21hcmtzIGJlbG9uZ2luZyB0byBj aGlsZCB0YWJsZXMgdGhhdCBoYXZlIGJlZW4KKwkJICogcHJ1bmVkIGluIEV4ZWNEb0luaXRpYWxQ cnVuaW5nKCkuCisJCSAqLworCQlpZiAocmMtPmlzUGFyZW50IHx8CisJCQkhYm1zX2lzX21lbWJl cihyYy0+cnRpLCBlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcykpCiAJCQljb250aW51ZTsKIAog CQkvKiBGaW5kIEV4ZWNSb3dNYXJrIGFuZCBidWlsZCBFeGVjQXV4Um93TWFyayAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDhhNDc0YTUwYmU3Li5lNWUwMmU4NmIyNCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTU3LDYgKzU1Nyw4IEBAIHN0 YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsIGlu dCBjdXJzb3JPcHRpb25zLAogCXJlc3VsdC0+cGxhblRyZWUgPSB0b3BfcGxhbjsKIAlyZXN1bHQt PnBhcnRQcnVuZUluZm9zID0gZ2xvYi0+cGFydFBydW5lSW5mb3M7CiAJcmVzdWx0LT5ydGFibGUg PSBnbG9iLT5maW5hbHJ0YWJsZTsKKwlyZXN1bHQtPnVucHJ1bmFibGVSZWxpZHMgPSBibXNfZGlm ZmVyZW5jZShnbG9iLT5hbGxSZWxpZHMsCisJCQkJCQkJCQkJCSAgZ2xvYi0+cHJ1bmFibGVSZWxp ZHMpOwogCXJlc3VsdC0+cGVybUluZm9zID0gZ2xvYi0+ZmluYWxydGVwZXJtaW5mb3M7CiAJcmVz dWx0LT5yZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRSZWxhdGlvbnM7CiAJcmVzdWx0LT5h cHBlbmRSZWxhdGlvbnMgPSBnbG9iLT5hcHBlbmRSZWxhdGlvbnM7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9zZXRyZWZzLmMKaW5kZXggMDg2ODI0OWJlOTQuLjk5OWE1YThhYjVhIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC01NjQsNyArNTY0LDkgQEAgYWRkX3J0ZV90b19m bGF0X3J0YWJsZShQbGFubmVyR2xvYmFsICpnbG9iLCBMaXN0ICpydGVwZXJtaW5mb3MsCiAKIAkv KgogCSAqIElmIGl0J3MgYSBwbGFpbiByZWxhdGlvbiBSVEUgKG9yIGEgc3VicXVlcnkgdGhhdCB3 YXMgb25jZSBhIHZpZXcKLQkgKiByZWZlcmVuY2UpLCBhZGQgdGhlIHJlbGF0aW9uIE9JRCB0byBy ZWxhdGlvbk9pZHMuCisJICogcmVmZXJlbmNlKSwgYWRkIHRoZSByZWxhdGlvbiBPSUQgdG8gcmVs YXRpb25PaWRzLiAgQWxzbyBhZGQgaXRzIG5ldyBSVAorCSAqIGluZGV4IHRvIHRoZSBzZXQgb2Yg cmVsYXRpb25zIHRvIGJlIHBvdGVudGlhbGx5IGFjY2Vzc2VkIGR1cmluZworCSAqIGV4ZWN1dGlv bi4KIAkgKgogCSAqIFdlIGRvIHRoaXMgZXZlbiB0aG91Z2ggdGhlIFJURSBtaWdodCBiZSB1bnJl ZmVyZW5jZWQgaW4gdGhlIHBsYW4gdHJlZTsKIAkgKiB0aGlzIHdvdWxkIGNvcnJlc3BvbmQgdG8g Y2FzZXMgc3VjaCBhcyB2aWV3cyB0aGF0IHdlcmUgZXhwYW5kZWQsIGNoaWxkCkBAIC01NzYsNyAr NTc4LDExIEBAIGFkZF9ydGVfdG9fZmxhdF9ydGFibGUoUGxhbm5lckdsb2JhbCAqZ2xvYiwgTGlz dCAqcnRlcGVybWluZm9zLAogCSAqLwogCWlmIChuZXdydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFU SU9OIHx8CiAJCShuZXdydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmIE9pZElzVmFsaWQo bmV3cnRlLT5yZWxpZCkpKQorCXsKIAkJZ2xvYi0+cmVsYXRpb25PaWRzID0gbGFwcGVuZF9vaWQo Z2xvYi0+cmVsYXRpb25PaWRzLCBuZXdydGUtPnJlbGlkKTsKKwkJZ2xvYi0+YWxsUmVsaWRzID0g Ym1zX2FkZF9tZW1iZXIoZ2xvYi0+YWxsUmVsaWRzLAorCQkJCQkJCQkJCSBsaXN0X2xlbmd0aChn bG9iLT5maW5hbHJ0YWJsZSkpOworCX0KIAogCS8qCiAJICogQWRkIGEgY29weSBvZiB0aGUgUlRF UGVybWlzc2lvbkluZm8sIGlmIGFueSwgY29ycmVzcG9uZGluZyB0byB0aGlzIFJURQpAQCAtMTc0 MCw2ICsxNzQ2LDEwIEBAIHNldF9jdXN0b21zY2FuX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJv b3QsCiAgKgogICogQWxzbyB1cGRhdGUgdGhlIFJUIGluZGV4ZXMgcHJlc2VudCBpbiBQYXJ0aXRp b25lZFJlbFBydW5lSW5mb3MgdG8gYWRkIHRoZQogICogb2Zmc2V0LgorICoKKyAqIEZpbmFsbHks IGlmIHRoZXJlIGFyZSBpbml0aWFsIHBydW5pbmcgc3RlcHMsIGFkZCB0aGUgUlQgaW5kZXhlcyBv ZiB0aGUKKyAqIGxlYWYgcGFydGl0aW9ucyB0byB0aGUgc2V0IG9mIHJlbGF0aW9ucyB0aGF0IGFy ZSBwcnVuYWJsZSBhdCBleGVjdXRpb24KKyAqIHN0YXJ0dXAgdGltZS4KICAqLwogc3RhdGljIGlu dAogcmVnaXN0ZXJfcGFydHBydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgaW50IHBhcnRfcHJ1 bmVfaW5kZXgsIGludCBydG9mZnNldCkKQEAgLTE3NjIsNiArMTc3Miw3IEBAIHJlZ2lzdGVyX3Bh cnRwcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIGludCBwYXJ0X3BydW5lX2luZGV4LCBpbnQg cnRvZmZzZXQpCiAJCWZvcmVhY2gobDIsIHBydW5lX2luZm9zKQogCQl7CiAJCQlQYXJ0aXRpb25l ZFJlbFBydW5lSW5mbyAqcHJlbGluZm8gPSBsZmlyc3QobDIpOworCQkJaW50CQkJaTsKIAogCQkJ cHJlbGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7CiAJCQlwcmVsaW5mby0+aW5pdGlhbF9wcnVu aW5nX3N0ZXBzID0KQEAgLTE3NzAsNiArMTc4MSwyMiBAQCByZWdpc3Rlcl9wYXJ0cHJ1bmVpbmZv KFBsYW5uZXJJbmZvICpyb290LCBpbnQgcGFydF9wcnVuZV9pbmRleCwgaW50IHJ0b2Zmc2V0KQog CQkJcHJlbGluZm8tPmV4ZWNfcHJ1bmluZ19zdGVwcyA9CiAJCQkJZml4X3NjYW5fbGlzdChyb290 LCBwcmVsaW5mby0+ZXhlY19wcnVuaW5nX3N0ZXBzLAogCQkJCQkJCSAgcnRvZmZzZXQsIDEpOwor CisJCQlmb3IgKGkgPSAwOyBpIDwgcHJlbGluZm8tPm5wYXJ0czsgaSsrKQorCQkJeworCQkJCS8q CisJCQkJICogTm9uLWxlYWYgcGFydGl0aW9ucyBhbmQgcGFydGl0aW9ucyB0aGF0IGRvIG5vdCBo YXZlIGEKKwkJCQkgKiBzdWJwbGFuIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhpcyBtYXAgYXMgbWVu dGlvbmVkIGluCisJCQkJICogbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oKS4KKwkJCQkg Ki8KKwkJCQlpZiAocHJlbGluZm8tPmxlYWZwYXJ0X3J0aV9tYXBbaV0pCisJCQkJeworCQkJCQlw cmVsaW5mby0+bGVhZnBhcnRfcnRpX21hcFtpXSArPSBydG9mZnNldDsKKwkJCQkJaWYgKHByZWxp bmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMpCisJCQkJCQlnbG9iLT5wcnVuYWJsZVJlbGlkcyA9 IGJtc19hZGRfbWVtYmVyKGdsb2ItPnBydW5hYmxlUmVsaWRzLAorCQkJCQkJCQkJCQkJCQkJICBw cmVsaW5mby0+bGVhZnBhcnRfcnRpX21hcFtpXSk7CisJCQkJfQorCQkJfQogCQl9CiAJfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgYi9zcmMvYmFj a2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKaW5kZXggNDY5M2VlZjBjNTguLmZmOTI2NzMy ZjM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCkBAIC02NDUsNiArNjQ1LDcg QEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnBhcmVudHJlbCwKIAkJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJCWludAkJICAgKnN1 YnBhcnRfbWFwOwogCQlPaWQJCSAgICpyZWxpZF9tYXA7CisJCWludAkJICAgKmxlYWZwYXJ0X3J0 aV9tYXA7CiAKIAkJLyoKIAkJICogQ29uc3RydWN0IHRoZSBzdWJwbGFuIGFuZCBzdWJwYXJ0IG1h cHMgZm9yIHRoaXMgcGFydGl0aW9uaW5nIGxldmVsLgpAQCAtNjU3LDYgKzY1OCw3IEBAIG1ha2Vf cGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpw YXJlbnRyZWwsCiAJCXN1YnBhcnRfbWFwID0gKGludCAqKSBwYWxsb2MobnBhcnRzICogc2l6ZW9m KGludCkpOwogCQltZW1zZXQoc3VicGFydF9tYXAsIC0xLCBucGFydHMgKiBzaXplb2YoaW50KSk7 CiAJCXJlbGlkX21hcCA9IChPaWQgKikgcGFsbG9jMChucGFydHMgKiBzaXplb2YoT2lkKSk7CisJ CWxlYWZwYXJ0X3J0aV9tYXAgPSAoaW50ICopIHBhbGxvYzAobnBhcnRzICogc2l6ZW9mKGludCkp OwogCQlwcmVzZW50X3BhcnRzID0gTlVMTDsKIAogCQlpID0gLTE7CkBAIC02NzEsOSArNjczLDIx IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxP cHRJbmZvICpwYXJlbnRyZWwsCiAJCQlzdWJwbGFuX21hcFtpXSA9IHN1YnBsYW5pZHggPSByZWxp ZF9zdWJwbGFuX21hcFtwYXJ0cmVsLT5yZWxpZF0gLSAxOwogCQkJc3VicGFydF9tYXBbaV0gPSBz dWJwYXJ0aWR4ID0gcmVsaWRfc3VicGFydF9tYXBbcGFydHJlbC0+cmVsaWRdIC0gMTsKIAkJCXJl bGlkX21hcFtpXSA9IHBsYW5uZXJfcnRfZmV0Y2gocGFydHJlbC0+cmVsaWQsIHJvb3QpLT5yZWxp ZDsKKworCQkJLyoKKwkJCSAqIFRyYWNrIHRoZSBSVCBpbmRleGVzIG9mICJsZWFmIiBwYXJ0aXRp b25zIHNvIHRoZXkgY2FuIGJlCisJCQkgKiBpbmNsdWRlZCBpbiB0aGUgUGxhbm5lckdsb2JhbC5w cnVuYWJsZVJlbGlkcyBzZXQsIGluZGljYXRpbmcKKwkJCSAqIHJlbGF0aW9ucyB0aGF0IG1heSBi ZSBwcnVuZWQgZHVyaW5nIGV4ZWN1dG9yIHN0YXJ0dXAuCisJCQkgKgorCQkJICogT25seSBsZWFm IHBhcnRpdGlvbnMgd2l0aCBhIHZhbGlkIHN1YnBsYW4gdGhhdCBhcmUgcHJ1bmFibGUKKwkJCSAq IHVzaW5nIGluaXRpYWwgcHJ1bmluZyBhcmUgYWRkZWQgdG8gcHJ1bmFibGVSZWxpZHMuIFNvCisJ CQkgKiBwYXJ0aXRpb25zIHdpdGhvdXQgYSBzdWJwbGFuIGR1ZSB0byBjb25zdHJhaW50IGV4Y2x1 c2lvbiB3aWxsCisJCQkgKiByZW1haW4gaW4gUGxhbm5lZFN0bXQudW5wcnVuYWJsZVJlbGlkcy4K KwkJCSAqLwogCQkJaWYgKHN1YnBsYW5pZHggPj0gMCkKIAkJCXsKIAkJCQlwcmVzZW50X3BhcnRz ID0gYm1zX2FkZF9tZW1iZXIocHJlc2VudF9wYXJ0cywgaSk7CisJCQkJbGVhZnBhcnRfcnRpX21h cFtpXSA9IChpbnQpIHBhcnRyZWwtPnJlbGlkOwogCiAJCQkJLyogUmVjb3JkIGZpbmRpbmcgdGhp cyBzdWJwbGFuICAqLwogCQkJCXN1YnBsYW5zZm91bmQgPSBibXNfYWRkX21lbWJlcihzdWJwbGFu c2ZvdW5kLCBzdWJwbGFuaWR4KTsKQEAgLTY5NSw2ICs3MDksNyBAQCBtYWtlX3BhcnRpdGlvbmVk cmVsX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAog CQlwaW5mby0+c3VicGxhbl9tYXAgPSBzdWJwbGFuX21hcDsKIAkJcGluZm8tPnN1YnBhcnRfbWFw ID0gc3VicGFydF9tYXA7CiAJCXBpbmZvLT5yZWxpZF9tYXAgPSByZWxpZF9tYXA7CisJCXBpbmZv LT5sZWFmcGFydF9ydGlfbWFwID0gbGVhZnBhcnRfcnRpX21hcDsKIAl9CiAKIAlwZnJlZShyZWxp ZF9zdWJwYXJ0X21hcCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpp bmRleCA2OTY2MDM3ZDJlZi4uZjA5YWI0MWM2MDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYwpAQCAtNjY4LDcgKzY2OCw4IEBAIGNyZWF0ZV9lZGF0YV9mb3JfcmVs YXRpb24oTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpCiAKIAlhZGRSVEVQZXJtaXNzaW9uSW5m bygmcGVybWluZm9zLCBydGUpOwogCi0JRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgbGlzdF9t YWtlMShydGUpLCBwZXJtaW5mb3MpOworCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIGxpc3Rf bWFrZTEocnRlKSwgcGVybWluZm9zLAorCQkJCQkgICBibXNfbWFrZV9zaW5nbGV0b24oMSkpOwog CiAJZWRhdGEtPnRhcmdldFJlbEluZm8gPSByZXN1bHRSZWxJbmZvID0gbWFrZU5vZGUoUmVzdWx0 UmVsSW5mbyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5j CmluZGV4IDAyMjdmY2JjYTNkLi4yZjg5OTk2YTc1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC04MjAsNyArODIwLDggQEAgY3JlYXRlX2VzdGF0 ZV9mb3JfcmVsYXRpb24oUmVsYXRpb24gcmVsKQogCiAJYWRkUlRFUGVybWlzc2lvbkluZm8oJnBl cm1pbmZvcywgcnRlKTsKIAotCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIGxpc3RfbWFrZTEo cnRlKSwgcGVybWluZm9zKTsKKwlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCBsaXN0X21ha2Ux KHJ0ZSksIHBlcm1pbmZvcywKKwkJCQkJICAgYm1zX21ha2Vfc2luZ2xldG9uKDEpKTsKIAogCWVz dGF0ZS0+ZXNfb3V0cHV0X2NpZCA9IEdldEN1cnJlbnRDb21tYW5kSWQoZmFsc2UpOwogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmggYi9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKaW5kZXggODU1ZmVkNGZlYTUuLjk1MTAwOWNmNDZj IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKKysrIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCkBAIC00OCw2ICs0OCw4IEBAIGV4 dGVybiB2b2lkIEV4ZWNDbGVhbnVwVHVwbGVSb3V0aW5nKE1vZGlmeVRhYmxlU3RhdGUgKm10c3Rh dGUsCiAgKiBucGFydHMJCQkJCQlMZW5ndGggb2Ygc3VicGxhbl9tYXBbXSBhbmQgc3VicGFydF9t YXBbXS4KICAqIHN1YnBsYW5fbWFwCQkJCQlTdWJwbGFuIGluZGV4IGJ5IHBhcnRpdGlvbiBpbmRl eCwgb3IgLTEuCiAgKiBzdWJwYXJ0X21hcAkJCQkJU3VicGFydCBpbmRleCBieSBwYXJ0aXRpb24g aW5kZXgsIG9yIC0xLgorICogbGVhZnBhcnRfcnRpX21hcAkJCQlSVCBpbmRleCBieSBwYXJ0aXRp b24gaW5kZXgsIG9yIDAgaWYgbm90IGEgbGVhZgorICogCQkJCQkJCQlwYXJ0aXRpb24uCiAgKiBw cmVzZW50X3BhcnRzCQkJCUEgQml0bWFwc2V0IG9mIHRoZSBwYXJ0aXRpb24gaW5kZXhlcyB0aGF0 IHdlCiAgKgkJCQkJCQkJaGF2ZSBzdWJwbGFucyBvciBzdWJwYXJ0cyBmb3IuCiAgKiBpbml0aWFs X3BydW5pbmdfc3RlcHMJCUxpc3Qgb2YgUGFydGl0aW9uUHJ1bmVTdGVwcyB1c2VkIHRvCkBAIC02 NSw2ICs2Nyw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEKIAlp bnQJCQlucGFydHM7CiAJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJaW50CQkgICAqc3VicGFydF9t YXA7CisJaW50CQkgICAqbGVhZnBhcnRfcnRpX21hcDsKIAlCaXRtYXBzZXQgICpwcmVzZW50X3Bh cnRzOwogCUxpc3QJICAgKmluaXRpYWxfcHJ1bmluZ19zdGVwczsKIAlMaXN0CSAgICpleGVjX3By dW5pbmdfc3RlcHM7CkBAIC0xMzUsNiArMTM4LDcgQEAgZXh0ZXJuIFBhcnRpdGlvblBydW5lU3Rh dGUgKkV4ZWNJbml0UGFydGl0aW9uRXhlY1BydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJ CQkJCQkJCQkJCQkJCSBCaXRtYXBzZXQgKnJlbGlkcywKIAkJCQkJCQkJCQkJCQkJIEJpdG1hcHNl dCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyk7CiBleHRlcm4gQml0bWFwc2V0ICpFeGVjRmlu ZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKLQkJCQkJ CQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUpOworCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9w cnVuZSwKKwkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5fcnRpcyk7CiAKICNl bmRpZgkJCQkJCQkvKiBFWEVDUEFSVElUSU9OX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmlu ZGV4IGM3ZGI2ZGVmZDNlLi5lOWNjYzQzOGNkZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBA IC01OTUsNyArNTk1LDggQEAgZXh0ZXJuIGJvb2wgRXhlY1JlbGF0aW9uSXNUYXJnZXRSZWxhdGlv bihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggc2NhbnJlbGlkKTsKIAogZXh0ZXJuIFJlbGF0aW9uIEV4 ZWNPcGVuU2NhblJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBzY2FucmVsaWQsIGludCBl ZmxhZ3MpOwogCi1leHRlcm4gdm9pZCBFeGVjSW5pdFJhbmdlVGFibGUoRVN0YXRlICplc3RhdGUs IExpc3QgKnJhbmdlVGFibGUsIExpc3QgKnBlcm1JbmZvcyk7CitleHRlcm4gdm9pZCBFeGVjSW5p dFJhbmdlVGFibGUoRVN0YXRlICplc3RhdGUsIExpc3QgKnJhbmdlVGFibGUsIExpc3QgKnBlcm1J bmZvcywKKwkJCQkJCQkgICBCaXRtYXBzZXQgKnVucHJ1bmVkX3JlbGlkcyk7CiBleHRlcm4gdm9p ZCBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiB2 b2lkIEV4ZWNDbG9zZVJlc3VsdFJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSk7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKaW5kZXggYWNhMTVmNzcxYTIuLmEyY2JhOTdlM2Q1IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaApAQCAtNjU4LDYgKzY1OCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAlMaXN0CSAg ICplc19wYXJ0X3BydW5lX2luZm9zOwkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyAqLwog CUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfc3RhdGVzOwkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5l U3RhdGUgKi8KIAlMaXN0CSAgICplc19wYXJ0X3BydW5lX3Jlc3VsdHM7CS8qIExpc3Qgb2YgQml0 bWFwc2V0ICovCisJQml0bWFwc2V0ICAqZXNfdW5wcnVuZWRfcmVsaWRzOyAvKiBQbGFubmVkU3Rt dC51bnBydW5hYmxlUmVsaWRzICsgUlQKKwkJCQkJCQkJCSAqIGluZGV4ZXMgb2YgbGVhZiBwYXJ0 aXRpb25zIHRoYXQgc3Vydml2ZQorCQkJCQkJCQkJICogaW5pdGlhbCBwcnVuaW5nOyBzZWUKKwkJ CQkJCQkJCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgKi8KIAljb25zdCBjaGFyICplc19zb3Vy Y2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAqLwogCiAJSnVua0ZpbHRlciAq ZXNfanVua0ZpbHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8KQEAgLTE0 NDAsNiArMTQ0NCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJsZVN0YXRlCiAJZG91Ymxl CQltdF9tZXJnZV9pbnNlcnRlZDsKIAlkb3VibGUJCW10X21lcmdlX3VwZGF0ZWQ7CiAJZG91Ymxl CQltdF9tZXJnZV9kZWxldGVkOworCisJLyoKKwkgKiBMaXN0IG9mIHZhbGlkIHVwZGF0ZUNvbG5v c0xpc3RzLiAgQ29udGFpbnMgb25seSB0aG9zZSBiZWxvbmdpbmcgdG8KKwkgKiB1bnBydW5lZCBy ZWxhdGlvbnMgZnJvbSBNb2RpZnlUYWJsZS51cGRhdGVDb2xub3NMaXN0cy4KKwkgKi8KKwlMaXN0 CSAgICptdF91cGRhdGVDb2xub3NMaXN0czsKIH0gTW9kaWZ5VGFibGVTdGF0ZTsKIAogLyogLS0t LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCA1MmQ0NGY0MzAyMS4uMmZlNTE3 OWNhNzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0xMTYsNiArMTE2LDE0IEBAIHR5cGVkZWYg c3RydWN0IFBsYW5uZXJHbG9iYWwKIAkvKiAiZmxhdCIgcmFuZ2V0YWJsZSBmb3IgZXhlY3V0b3Ig Ki8KIAlMaXN0CSAgICpmaW5hbHJ0YWJsZTsKIAorCS8qCisJICogUlQgaW5kZXhlcyBvZiBhbGwg cmVsYXRpb24gUlRFcyBpbiBmaW5hbHJ0YWJsZSAoUlRFX1JFTEFUSU9OIGFuZAorCSAqIFJURV9T VUJRVUVSWSBSVEVzIG9mIHZpZXdzKSBhbmQgb2YgdGhvc2UgdGhhdCBhcmUgc3ViamVjdCB0byBy dW50aW1lCisJICogcHJ1bmluZyBhdCBwbGFuIGluaXRpYWxpemF0aW9uIHRpbWUgKCJpbml0aWFs IiBwcnVuaW5nKS4KKwkgKi8KKwlCaXRtYXBzZXQgICphbGxSZWxpZHM7CisJQml0bWFwc2V0ICAq cHJ1bmFibGVSZWxpZHM7CisKIAkvKiAiZmxhdCIgbGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mb3Mg Ki8KIAlMaXN0CSAgICpmaW5hbHJ0ZXBlcm1pbmZvczsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRl eCAwNmQ5NTU5ZWJiOS4uNGFiZWZhN2JlYzAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC03NCw2 ICs3NCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVkU3RtdAogCiAJTGlzdAkgICAqcnRhYmxl OwkJCS8qIGxpc3Qgb2YgUmFuZ2VUYmxFbnRyeSBub2RlcyAqLwogCisJQml0bWFwc2V0ICAqdW5w cnVuYWJsZVJlbGlkczsJLyogUlQgaW5kZXhlcyBvZiByZWxhdGlvbnMgdGhhdCBhcmUgbm90CisJ CQkJCQkJCQkgKiBzdWJqZWN0IHRvIHJ1bnRpbWUgcHJ1bmluZzsgc2V0IGZvcgorCQkJCQkJCQkJ ICogQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKS4gKi8KKwogCUxpc3QJICAgKnBlcm1JbmZvczsJCS8q IGxpc3Qgb2YgUlRFUGVybWlzc2lvbkluZm8gbm9kZXMgZm9yIHJ0YWJsZQogCQkJCQkJCQkgKiBl bnRyaWVzIG5lZWRpbmcgb25lICovCiAKQEAgLTE0ODMsNiArMTQ4Nyw5IEBAIHR5cGVkZWYgc3Ry dWN0IFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvCiAJLyogc3VicGFydCBpbmRleCBieSBwYXJ0aXRp b24gaW5kZXgsIG9yIC0xICovCiAJaW50CQkgICAqc3VicGFydF9tYXAgcGdfbm9kZV9hdHRyKGFy cmF5X3NpemUobnBhcnRzKSk7CiAKKwkvKiBSVCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9y IDAgaWYgbm90IGEgbGVhZiBwYXJ0aXRpb24gKi8KKwlpbnQJCSAgICpsZWFmcGFydF9ydGlfbWFw IHBnX25vZGVfYXR0cihhcnJheV9zaXplKG5wYXJ0cykpOworCiAJLyogcmVsYXRpb24gT0lEIGJ5 IHBhcnRpdGlvbiBpbmRleCwgb3IgMCAqLwogCU9pZAkJICAgKnJlbGlkX21hcCBwZ19ub2RlX2F0 dHIoYXJyYXlfc2l6ZShucGFydHMpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w YXJ0aXRpb25fcHJ1bmUub3V0CmluZGV4IGYwNzA3ZTdmN2VhLi43YzBjNDAxMTdhZSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dApAQCAtNDQ2OSwz ICs0NDY5LDQ3IEBAIGRyb3AgdGFibGUgaHBfY29udHJhZGljdF90ZXN0OwogZHJvcCBvcGVyYXRv ciBjbGFzcyBwYXJ0X3Rlc3RfaW50NF9vcHMyIHVzaW5nIGhhc2g7CiBkcm9wIG9wZXJhdG9yID09 PShpbnQ0LCBpbnQ0KTsKIGRyb3AgZnVuY3Rpb24gZXhwbGFpbl9hbmFseXplKHRleHQpOworLS0g UnVudGltZSBwcnVuaW5nIG9uIFVQREFURSB1c2luZyBXSVRIIENIRUNLIE9QVElPTlMgYW5kIFJF VFVSTklORworY3JlYXRlIHRhYmxlIHBhcnRfYWJjIChhIGludCwgYiB0ZXh0LCBjIGJvb2wpIHBh cnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0X2FiY18xIChiIHRleHQsIGEg aW50LCBjIGJvb2wpOworY3JlYXRlIHRhYmxlIHBhcnRfYWJjXzIgKGEgaW50LCBjIGJvb2wsIGIg dGV4dCk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2ggcGFydGl0aW9uIHBhcnRfYWJjXzEg Zm9yIHZhbHVlcyBpbiAoMSk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2ggcGFydGl0aW9u IHBhcnRfYWJjXzIgZm9yIHZhbHVlcyBpbiAoMik7CitpbnNlcnQgaW50byBwYXJ0X2FiYyB2YWx1 ZXMgKDEsICdiJywgdHJ1ZSk7CitpbnNlcnQgaW50byBwYXJ0X2FiYyB2YWx1ZXMgKDIsICdjJywg dHJ1ZSk7CitjcmVhdGUgdmlldyBwYXJ0X2FiY192aWV3IGFzIHNlbGVjdCAqIGZyb20gcGFydF9h YmMgd2hlcmUgYiA8PiAnYScgd2l0aCBjaGVjayBvcHRpb247CitwcmVwYXJlIHVwZGF0ZV9wYXJ0 X2FiY192aWV3IGFzIHVwZGF0ZSBwYXJ0X2FiY192aWV3IHNldCBiID0gJDIgd2hlcmUgYSA9ICQx IHJldHVybmluZyAqOworZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHVwZGF0ZV9wYXJ0X2Fi Y192aWV3ICgxLCAnZCcpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBwYXJ0X2FiYworICAgVXBkYXRlIG9uIHBhcnRf YWJjXzEKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEKKyAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwYXJ0X2FiY18xCisgICAgICAgICAgICAgICBGaWx0ZXI6ICgo YiA8PiAnYSc6OnRleHQpIEFORCAoYSA9ICQxKSkKKyg2IHJvd3MpCisKK2V4ZWN1dGUgdXBkYXRl X3BhcnRfYWJjX3ZpZXcgKDEsICdkJyk7CisgYSB8IGIgfCBjIAorLS0tKy0tLSstLS0KKyAxIHwg ZCB8IHQKKygxIHJvdykKKworZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHVwZGF0ZV9wYXJ0 X2FiY192aWV3ICgyLCAnYScpOworICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBwYXJ0X2FiYworICAgVXBkYXRlIG9uIHBh cnRfYWJjXzIgcGFydF9hYmNfMQorICAgLT4gIEFwcGVuZAorICAgICAgICAgU3VicGxhbnMgUmVt b3ZlZDogMQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBhcnRfYWJjXzIgcGFydF9hYmNfMQor ICAgICAgICAgICAgICAgRmlsdGVyOiAoKGIgPD4gJ2EnOjp0ZXh0KSBBTkQgKGEgPSAkMSkpCiso NiByb3dzKQorCitleGVjdXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3ICgyLCAnYScpOworRVJST1I6 ICBuZXcgcm93IHZpb2xhdGVzIGNoZWNrIG9wdGlvbiBmb3IgdmlldyAicGFydF9hYmNfdmlldyIK K0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgyLCBhLCB0KS4KK2RlYWxsb2NhdGUgdXBk YXRlX3BhcnRfYWJjX3ZpZXc7Citkcm9wIHZpZXcgcGFydF9hYmNfdmlldzsKK2Ryb3AgdGFibGUg cGFydF9hYmM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1 bmUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbAppbmRleCBl YTlhNGZlNGEyMy4uMDY2MjA2NDBmODcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3BhcnRpdGlvbl9wcnVuZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9u X3BydW5lLnNxbApAQCAtMTM1NCwzICsxMzU0LDIxIEBAIGRyb3Agb3BlcmF0b3IgY2xhc3MgcGFy dF90ZXN0X2ludDRfb3BzMiB1c2luZyBoYXNoOwogZHJvcCBvcGVyYXRvciA9PT0oaW50NCwgaW50 NCk7CiAKIGRyb3AgZnVuY3Rpb24gZXhwbGFpbl9hbmFseXplKHRleHQpOworCistLSBSdW50aW1l IHBydW5pbmcgb24gVVBEQVRFIHVzaW5nIFdJVEggQ0hFQ0sgT1BUSU9OUyBhbmQgUkVUVVJOSU5H CitjcmVhdGUgdGFibGUgcGFydF9hYmMgKGEgaW50LCBiIHRleHQsIGMgYm9vbCkgcGFydGl0aW9u IGJ5IGxpc3QgKGEpOworY3JlYXRlIHRhYmxlIHBhcnRfYWJjXzEgKGIgdGV4dCwgYSBpbnQsIGMg Ym9vbCk7CitjcmVhdGUgdGFibGUgcGFydF9hYmNfMiAoYSBpbnQsIGMgYm9vbCwgYiB0ZXh0KTsK K2FsdGVyIHRhYmxlIHBhcnRfYWJjIGF0dGFjaCBwYXJ0aXRpb24gcGFydF9hYmNfMSBmb3IgdmFs dWVzIGluICgxKTsKK2FsdGVyIHRhYmxlIHBhcnRfYWJjIGF0dGFjaCBwYXJ0aXRpb24gcGFydF9h YmNfMiBmb3IgdmFsdWVzIGluICgyKTsKK2luc2VydCBpbnRvIHBhcnRfYWJjIHZhbHVlcyAoMSwg J2InLCB0cnVlKTsKK2luc2VydCBpbnRvIHBhcnRfYWJjIHZhbHVlcyAoMiwgJ2MnLCB0cnVlKTsK K2NyZWF0ZSB2aWV3IHBhcnRfYWJjX3ZpZXcgYXMgc2VsZWN0ICogZnJvbSBwYXJ0X2FiYyB3aGVy ZSBiIDw+ICdhJyB3aXRoIGNoZWNrIG9wdGlvbjsKK3ByZXBhcmUgdXBkYXRlX3BhcnRfYWJjX3Zp ZXcgYXMgdXBkYXRlIHBhcnRfYWJjX3ZpZXcgc2V0IGIgPSAkMiB3aGVyZSBhID0gJDEgcmV0dXJu aW5nICo7CitleHBsYWluIChjb3N0cyBvZmYpIGV4ZWN1dGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXcg KDEsICdkJyk7CitleGVjdXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3ICgxLCAnZCcpOworZXhwbGFp biAoY29zdHMgb2ZmKSBleGVjdXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3ICgyLCAnYScpOworZXhl Y3V0ZSB1cGRhdGVfcGFydF9hYmNfdmlldyAoMiwgJ2EnKTsKK2RlYWxsb2NhdGUgdXBkYXRlX3Bh cnRfYWJjX3ZpZXc7Citkcm9wIHZpZXcgcGFydF9hYmNfdmlldzsKK2Ryb3AgdGFibGUgcGFydF9h YmM7Ci0tIAoyLjQzLjAKCg== --0000000000006edbff062cfc6023 Content-Type: application/octet-stream; name="v61-0002-Defer-locking-of-runtime-prunable-relations-in-c.patch" Content-Disposition: attachment; filename="v61-0002-Defer-locking-of-runtime-prunable-relations-in-c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m6ki10mv1 RnJvbSBiODdkNDdjMWE2MmY4ZWYzZTRiYmVlMTllMDU4Mjk4MTFmODEzMjI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMjggSmFuIDIwMjUgMjA6MDM6MDMgKzA5MDAKU3ViamVjdDogW1BBVENIIHY2 MSAyLzJdIERlZmVyIGxvY2tpbmcgb2YgcnVudGltZS1wcnVuYWJsZSByZWxhdGlvbnMgaW4gY2Fj aGVkCiBwbGFucwoKQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBpbiBwbGFuY2FjaGUuYyBsb2NrcyBh bGwgcmVsYXRpb25zIGluIGEgcGxhbidzCnJhbmdlIHRhYmxlIHRvIGVuc3VyZSB0aGUgcGxhbiBp cyBzYWZlIGZvciBleGVjdXRpb24uIEhvd2V2ZXIsIHRoaXMKbG9ja3MgcnVudGltZS1wcnVuYWJs ZSByZWxhdGlvbnMgdGhhdCB3aWxsIGxhdGVyIGJlIHBydW5lZCBkdXJpbmcKImluaXRpYWwiIHJ1 bnRpbWUgcHJ1bmluZywgaW50cm9kdWNpbmcgdW5uZWNlc3Nhcnkgb3ZlcmhlYWQuIFRoaXMKY29t bWl0IGRlZmVycyBsb2NraW5nIGZvciBzdWNoIHJlbGF0aW9ucyBhbmQgZW5zdXJlcyB0aGF0IGFu eQppbnZhbGlkYXRpb24gY2F1c2VkIGJ5IHRoaXMgZGVmZXJyYWwgdHJpZ2dlcnMgcmVwbGFubmlu ZyB3aGVuIG5lZWRlZC4KCkFjcXVpcmVFeGVjdXRvckxvY2tzKCkgbm93IGxvY2tzIG9ubHkgdW5w cnVuYWJsZSByZWxhdGlvbnMgdG8gYXZvaWQKbG9ja2luZyBydW50aW1lLXBydW5hYmxlIHBhcnRp dGlvbnMgdW5uZWNlc3NhcmlseS4gVGhpcyBkZWZlcnJhbCBvZgpsb2NrcyBlbnN1cmVzIHRoYXQg cnVudGltZS1wcnVuYWJsZSByZWxhdGlvbnMgYXJlIGhhbmRsZWQgbGF0ZXIgZHVyaW5nCmV4ZWN1 dG9yIHN0YXJ0dXAsIG1pbmltaXppbmcgb3ZlcmhlYWQgYW5kIHJlZHVjaW5nIGNvbnRlbnRpb24g aW4Kd29ya2xvYWRzIGludm9sdmluZyBwYXJ0aXRpb25lZCB0YWJsZXMuCgpUaGlzIHJlc3VsdHMg aW4gc2lnbmlmaWNhbnQgc3BlZWR1cHMgZm9yIGdlbmVyaWMgcGxhbnMgd2l0aCBtYW55CnJ1bnRp bWUtcHJ1bmFibGUgcGFydGl0aW9ucy4KCkV4ZWNDaGVja1Blcm1pc3Npb25zKCkgbm93IGluY2x1 ZGVzIGFuIEFzc2VydCB0byB2ZXJpZnkgdGhhdCBhbGwKcmVsYXRpb25zIHVuZGVyZ29pbmcgcGVy bWlzc2lvbiBjaGVja3MgYXJlIHByb3Blcmx5IGxvY2tlZC4KCiogUGxhbiBpbnZhbGlkYXRpb24g aGFuZGxpbmc6CgpEZWZlcnJpbmcgbG9ja3MgaW50cm9kdWNlcyBhIHdpbmRvdyB3aGVyZSBwcnVu YWJsZSByZWxhdGlvbnMgbWF5IGJlCmFsdGVyZWQgYnkgY29uY3VycmVudCBEREwsIGludmFsaWRh dGluZyB0aGUgcGxhbi4gQSBuZXcgZnVuY3Rpb24sCkV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKCks IHdyYXBzIEV4ZWN1dG9yU3RhcnQoKSB0byBkZXRlY3QgYW5kCmhhbmRsZSBpbnZhbGlkYXRpb24g Y2F1c2VkIGJ5IGRlZmVycmVkIGxvY2tpbmcuIElmIGludmFsaWRhdGlvbgpvY2N1cnMsIEV4ZWN1 dG9yU3RhcnRDYWNoZWRQbGFuKCkgdXBkYXRlcyBDYWNoZWRQbGFuIHVzaW5nIHRoZSBuZXcKVXBk YXRlQ2FjaGVkUGxhbigpIGZ1bmN0aW9uIGFuZCByZXRyaWVzIGV4ZWN1dGlvbiB3aXRoIHRoZSBy ZWZyZXNoZWQKcGxhbi4KClVwZGF0ZUNhY2hlZFBsYW4oKSByZXBsYWNlcyBzdGFsZSBwbGFucyBp biBDYWNoZWRQbGFuLnN0bXRfbGlzdC4gQQpuZXcgQ2FjaGVkUGxhbi5zdG10X2NvbnRleHQsIGFz IGEgY2hpbGQgb2YgQ2FjaGVkUGxhbi5jb250ZXh0LAphbGxvd3MgZnJlZWluZyBvbGQgUGxhbm5l ZFN0bXRzIHdoaWxlIHByZXNlcnZpbmcgdGhlIENhY2hlZFBsYW4Kc3RydWN0dXJlIGFuZCBzdGF0 ZW1lbnRzIGxpc3QuCgpFeGVjdXRvclN0YXJ0KCkgYW5kIEV4ZWN1dG9yU3RhcnRfaG9vayBub3cg cmV0dXJuIGEgYm9vbGVhbiB2YWx1ZQppbmRpY2F0aW5nIHdoZXRoZXIgcGxhbiBpbml0aWFsaXph dGlvbiBzdWNjZWVkZWQgd2l0aCBhIHZhbGlkClBsYW5TdGF0ZSB0cmVlIGluIFF1ZXJ5RGVzYy5w bGFuc3RhdGUuCgoqIFRlc3Rpbmc6CgpUaGUgZGVsYXlfZXhlY3V0aW9uIG1vZHVsZSB0ZXN0cyBz Y2VuYXJpb3Mgd2hlcmUgY2FjaGVkIHBsYW5zIGJlY29tZQppbnZhbGlkIGR1ZSB0byBjaGFuZ2Vz IGluIHBydW5hYmxlIHJlbGF0aW9ucyBhZnRlciBkZWZlcnJlZCBsb2Nrcy4KCiogTm90ZSB0byBl eHRlbnNpb24gYXV0aG9yczoKCkV4ZWN1dG9yU3RhcnRfaG9vayBpbXBsZW1lbnRhdGlvbnMgbXVz dCB2ZXJpZnkgcGxhbiB2YWxpZGl0eSBhZnRlcgpjYWxsaW5nIHN0YW5kYXJkX0V4ZWN1dG9yU3Rh cnQoKS4gRm9yIGV4YW1wbGU6CgogICAgaWYgKHByZXZfRXhlY3V0b3JTdGFydCkKICAgICAgICBw bGFuX3ZhbGlkID0gcHJldl9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKICAgIGVs c2UKICAgICAgICBwbGFuX3ZhbGlkID0gc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2Ms IGVmbGFncyk7CgogICAgaWYgKCFwbGFuX3ZhbGlkKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAg ICA8ZXh0ZW5zaW9uLWNvZGU+CgogICAgcmV0dXJuIHRydWU7CgpFeHRlbnNpb25zIGluc3BlY3Rp bmcgUlQgaW5kZXhlcyBtdXN0IGVuc3VyZSB0aGUgcmVsYXRpb24gaXMgbG9ja2VkCmJlZm9yZSBw cm9jZXNzaW5nIGl0LiBGb3IgZXhhbXBsZSwgc2VlIGhvdyBJbml0UGxhbigpIHByb2Nlc3NlcwpQ bGFubmVkU3RtdC5yb3dNYXJrcy4KClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyAoZWFybGllciB2 ZXJzaW9ucykKUmV2aWV3ZWQtYnk6IERhdmlkIFJvd2xleSAoZWFybGllciB2ZXJzaW9ucykKUmV2 aWV3ZWQtYnk6IFRvbWFzIFZvbmRyYQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NB K0hpd3FGR2tNU2dlNlRnQzlLUXpkZTBvaHBBeWNMUXVWN29vaXRFRXBiS0IwT19tZ0BtYWlsLmdt YWlsLmNvbQotLS0KIGNvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jICAgICAgICAg ICB8ICAxNiArLQogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAg IHwgIDE2ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgICAgICAgICAgICAg fCAgIDUgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgICAgICAgICAgICAgICB8 ICAgNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgIHwg IDIyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyAgICAgICAgICAgICAgfCAg IDQgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyAgICAgICAgICAgICAgICB8ICAg NSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8ICAgOSAr LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAgICAgICAgICAgICAgIHwgIDE0ICsK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAgICAgICAgICAgICAgICAgICB8ICAzNSArKy0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgICB8IDEzMCArKysr KysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgICAgIHwgIDEy ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgICAgICAgICAgfCAgMzgg KystCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwgICA0ICst CiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgICAgICAgICAgICAgfCAgMjkgKy0K IHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8ICAgNCArLQog c3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwgIDUxICsrKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8IDIwNCArKysr KysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jICAgICAgICAgICAg fCAgIDQgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAgICAgICAgICB8 ICAgNiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oICAgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggICAgICAgICAgICAgICB8ICAg MiArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgICAgfCAgMzQg KystCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDMg Kwogc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgICAgICAgIHwgIDUwICsr Ky0KIHNyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oICAgICAgICAgICAgICAgICAgICB8ICAgNCAr LQogc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUgICAgIHwgICAzICst CiAuLi4vbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMgfCAgNjcgKysr Ky0KIC4uLi9leHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQgICAgICAgICAgICB8IDI4MiAr KysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21lc29u LmJ1aWxkICB8ICAgMSArCiAuLi4vc3BlY3MvY2FjaGVkLXBsYW4taW52YWwuc3BlYyAgICAgICAg ICAgICAgfCAgODAgKysrKysKIDMzIGZpbGVzIGNoYW5nZWQsIDEwNDMgaW5zZXJ0aW9ucygrKSwg OTkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9kZWxh eV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0CiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4t aW52YWwuc3BlYwoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFp bi5jIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKaW5kZXggZjFhZDg3NmU4 MjEuLjgyYzE3YzBhMjhhIDEwMDY0NAotLS0gYS9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4 cGxhaW4uYworKysgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwpAQCAtNzYs NyArNzYsNyBAQCBzdGF0aWMgRXhlY3V0b3JSdW5faG9va190eXBlIHByZXZfRXhlY3V0b3JSdW4g PSBOVUxMOwogc3RhdGljIEV4ZWN1dG9yRmluaXNoX2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yRmlu aXNoID0gTlVMTDsKIHN0YXRpYyBFeGVjdXRvckVuZF9ob29rX3R5cGUgcHJldl9FeGVjdXRvckVu ZCA9IE5VTEw7CiAKLXN0YXRpYyB2b2lkIGV4cGxhaW5fRXhlY3V0b3JTdGFydChRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CitzdGF0aWMgYm9vbCBleHBsYWluX0V4ZWN1dG9yU3Rh cnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogc3RhdGljIHZvaWQgZXhwbGFp bl9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCQkJU2NhbkRpcmVjdGlv biBkaXJlY3Rpb24sCiAJCQkJCQkJCXVpbnQ2NCBjb3VudCk7CkBAIC0yNTYsOSArMjU2LDExIEBA IF9QR19pbml0KHZvaWQpCiAvKgogICogRXhlY3V0b3JTdGFydCBob29rOiBzdGFydCB1cCBsb2dn aW5nIGlmIG5lZWRlZAogICovCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIGV4cGxhaW5fRXhl Y3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKKwlib29sCQlw bGFuX3ZhbGlkOworCiAJLyoKIAkgKiBBdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggdG9wLWxldmVs IHN0YXRlbWVudCwgZGVjaWRlIHdoZXRoZXIgd2UnbGwKIAkgKiBzYW1wbGUgdGhpcyBzdGF0ZW1l bnQuICBJZiBuZXN0ZWQtc3RhdGVtZW50IGV4cGxhaW5pbmcgaXMgZW5hYmxlZCwKQEAgLTI5NCw5 ICsyOTYsMTMgQEAgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBp bnQgZWZsYWdzKQogCX0KIAogCWlmIChwcmV2X0V4ZWN1dG9yU3RhcnQpCi0JCXByZXZfRXhlY3V0 b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSBwcmV2X0V4ZWN1dG9y U3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCWVsc2UKLQkJc3RhbmRhcmRfRXhlY3V0b3JTdGFy dChxdWVyeURlc2MsIGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSBzdGFuZGFyZF9FeGVjdXRvclN0 YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKworCS8qIFRoZSBwbGFuIG1heSBoYXZlIGJlY29tZSBp bnZhbGlkIGR1cmluZyBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KCkgKi8KKwlpZiAoIXBsYW5fdmFs aWQpCisJCXJldHVybiBmYWxzZTsKIAogCWlmIChhdXRvX2V4cGxhaW5fZW5hYmxlZCgpKQogCXsK QEAgLTMxNCw2ICszMjAsOCBAQCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVy eURlc2MsIGludCBlZmxhZ3MpCiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAkJ fQogCX0KKworCXJldHVybiB0cnVlOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19z dGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgYi9jb250cmliL3BnX3N0YXRfc3Rh dGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwppbmRleCBiZWJmODEzNGViMC4uYjczNTM4MWNi MGIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVt ZW50cy5jCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50 cy5jCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIFBsYW5uZWRTdG10ICpwZ3NzX3BsYW5uZXIo UXVlcnkgKnBhcnNlLAogCQkJCQkJCQkgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAogCQkJCQkJ CQkgaW50IGN1cnNvck9wdGlvbnMsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1z KTsKLXN0YXRpYyB2b2lkIHBnc3NfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywg aW50IGVmbGFncyk7CitzdGF0aWMgYm9vbCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpx dWVyeURlc2MsIGludCBlZmxhZ3MpOwogc3RhdGljIHZvaWQgcGdzc19FeGVjdXRvclJ1bihRdWVy eURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCQkgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sCiAJCQkJ CQkJIHVpbnQ2NCBjb3VudCk7CkBAIC05ODYsMTMgKzk4NiwxOSBAQCBwZ3NzX3BsYW5uZXIoUXVl cnkgKnBhcnNlLAogLyoKICAqIEV4ZWN1dG9yU3RhcnQgaG9vazogc3RhcnQgdXAgdHJhY2tpbmcg aWYgbmVlZGVkCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogcGdzc19FeGVjdXRvclN0 YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogeworCWJvb2wJCXBsYW5fdmFs aWQ7CisKIAlpZiAocHJldl9FeGVjdXRvclN0YXJ0KQotCQlwcmV2X0V4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBlZmxhZ3MpOworCQlwbGFuX3ZhbGlkID0gcHJldl9FeGVjdXRvclN0YXJ0KHF1ZXJ5 RGVzYywgZWZsYWdzKTsKIAllbHNlCi0JCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNj LCBlZmxhZ3MpOworCQlwbGFuX3ZhbGlkID0gc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURl c2MsIGVmbGFncyk7CisKKwkvKiBUaGUgcGxhbiBtYXkgaGF2ZSBiZWNvbWUgaW52YWxpZCBkdXJp bmcgc3RhbmRhcmRfRXhlY3V0b3JTdGFydCgpICovCisJaWYgKCFwbGFuX3ZhbGlkKQorCQlyZXR1 cm4gZmFsc2U7CiAKIAkvKgogCSAqIElmIHF1ZXJ5IGhhcyBxdWVyeUlkIHplcm8sIGRvbid0IHRy YWNrIGl0LiAgVGhpcyBwcmV2ZW50cyBkb3VibGUKQEAgLTEwMTUsNiArMTAyMSw4IEBAIHBnc3Nf RXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCQl9CiAJfQorCisJcmV0dXJuIHRydWU7CiB9CiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHl0by5jCmluZGV4IDk5Y2IyM2NiMzQ3Li4wOTFmYmMxMmNjNSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMKQEAgLTU1Niw3ICs1NTYsNyBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCSgoRFJfY29weSAqKSBkZXN0KS0+Y3N0YXRlID0gY3N0YXRlOwogCiAJ CS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyByZXF1ZXN0aW5nIG5vIG91dHB1dCAqLwotCQljc3RhdGUt PnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwK KwkJY3N0YXRlLT5xdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcHN0YXRl LT5wX3NvdXJjZXRleHQsCiAJCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJ CQkJCUludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CkBA IC01NjYsNyArNTY2LDggQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkgKgog CQkgKiBFeGVjdXRvclN0YXJ0IGNvbXB1dGVzIGEgcmVzdWx0IHR1cGRlc2MgZm9yIHVzCiAJCSAq LwotCQlFeGVjdXRvclN0YXJ0KGNzdGF0ZS0+cXVlcnlEZXNjLCAwKTsKKwkJaWYgKCFFeGVjdXRv clN0YXJ0KGNzdGF0ZS0+cXVlcnlEZXNjLCAwKSkKKwkJCWVsb2coRVJST1IsICJFeGVjdXRvclN0 YXJ0KCkgZmFpbGVkIHVuZXhwZWN0ZWRseSIpOwogCiAJCXR1cERlc2MgPSBjc3RhdGUtPnF1ZXJ5 RGVzYy0+dHVwRGVzYzsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVh dGVhcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwppbmRleCAyM2NlY2Q5OWM5 ZS4uNDRiNDY2NWNjZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFz LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwpAQCAtMzMyLDEyICszMzIs MTMgQEAgRXhlY0NyZWF0ZVRhYmxlQXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVUYWJsZUFz U3RtdCAqc3RtdCwKIAkJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCQkvKiBD cmVhdGUgYSBRdWVyeURlc2MsIHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2 ZXIgKi8KLQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3Vy Y2V0ZXh0LAorCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcHN0YXRl LT5wX3NvdXJjZXRleHQsCiAJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25h cHNob3QsCiAJCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIAogCQkvKiBjYWxs IEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCi0JCUV4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBHZXRJbnRvUmVsRUZsYWdzKGludG8pKTsKKwkJaWYgKCFF eGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgR2V0SW50b1JlbEVGbGFncyhpbnRvKSkpCisJCQllbG9n KEVSUk9SLCAiRXhlY3V0b3JTdGFydCgpIGZhaWxlZCB1bmV4cGVjdGVkbHkiKTsKIAogCQkvKiBy dW4gdGhlIHBsYW4gdG8gY29tcGxldGlvbiAqLwogCQlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZv cndhcmRTY2FuRGlyZWN0aW9uLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBjMjRlNjZm ODJlMS4uYWYyNWMxNmQyMTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTUxOSw3ICs1MTks OCBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0 aW9ucywKIAl9CiAKIAkvKiBydW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICov Ci0JRXhwbGFpbk9uZVBsYW4ocGxhbiwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1 ZXJ5RW52LAorCUV4cGxhaW5PbmVQbGFuKHBsYW4sIE5VTEwsIE5VTEwsIC0xLCBpbnRvLCBlcywg cXVlcnlTdHJpbmcsIHBhcmFtcywKKwkJCQkgICBxdWVyeUVudiwKIAkJCQkgICAmcGxhbmR1cmF0 aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSwKIAkJCQkgICBlcy0+bWVtb3J5 ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogfQpAQCAtNjQxLDcgKzY0Miw5IEBAIEV4cGxhaW5P bmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3Rh dGUgKmVzLAogICogdG8gY2FsbCBpdC4KICAqLwogdm9pZAotRXhwbGFpbk9uZVBsYW4oUGxhbm5l ZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAor RXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBDYWNoZWRQbGFuICpjcGxh biwKKwkJCSAgIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIGludCBxdWVyeV9pbmRleCwK KwkJCSAgIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCQkgICBjb25zdCBj aGFyICpxdWVyeVN0cmluZywgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkgICBRdWVyeUVudmly b25tZW50ICpxdWVyeUVudiwgY29uc3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0aW9uLAogCQkJICAg Y29uc3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLApAQCAtNjk3LDcgKzcwMCw3IEBAIEV4cGxhaW5P bmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFp blN0YXRlICplcywKIAkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CiAKIAkvKiBDcmVhdGUgYSBRdWVy eURlc2MgZm9yIHRoZSBxdWVyeSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFu bmVkc3RtdCwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5u ZWRzdG10LCBjcGxhbiwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCks IEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1 bWVudF9vcHRpb24pOwogCkBAIC03MTEsOCArNzE0LDE3IEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5u ZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywK IAlpZiAoaW50bykKIAkJZWZsYWdzIHw9IEdldEludG9SZWxFRmxhZ3MoaW50byk7CiAKLQkvKiBj YWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCi0J RXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJLyogUHJlcGFyZSB0aGUgcGxhbiBm b3IgZXhlY3V0aW9uLiAqLworCWlmIChxdWVyeURlc2MtPmNwbGFuKQorCXsKKwkJRXhlY3V0b3JT dGFydENhY2hlZFBsYW4ocXVlcnlEZXNjLCBlZmxhZ3MsIHBsYW5zb3VyY2UsIHF1ZXJ5X2luZGV4 KTsKKwkJQXNzZXJ0KHF1ZXJ5RGVzYy0+cGxhbnN0YXRlKTsKKwl9CisJZWxzZQorCXsKKwkJaWYg KCFFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKSkKKwkJCWVsb2coRVJST1IsICJFeGVj dXRvclN0YXJ0KCkgZmFpbGVkIHVuZXhwZWN0ZWRseSIpOworCX0KIAogCS8qIEV4ZWN1dGUgdGhl IHBsYW4gZm9yIHN0YXRpc3RpY3MgaWYgYXNrZWQgZm9yICovCiAJaWYgKGVzLT5hbmFseXplKQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHRlbnNpb24uYwppbmRleCBiYTU0MGUzZGU1Yi4uMWIyOGQyMDQxMmUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBAIC05MDcsMTEgKzkwNywxMyBAQCBleGVjdXRlX3Nx bF9zdHJpbmcoY29uc3QgY2hhciAqc3FsLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIAkJCQlRdWVy eURlc2MgICpxZGVzYzsKIAogCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJ CQkJCQkJTlVMTCwKIAkJCQkJCQkJCQlzcWwsCiAJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3Qo KSwgTlVMTCwKIAkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKIAotCQkJCUV4ZWN1dG9y U3RhcnQocWRlc2MsIDApOworCQkJCWlmICghRXhlY3V0b3JTdGFydChxZGVzYywgMCkpCisJCQkJ CWVsb2coRVJST1IsICJFeGVjdXRvclN0YXJ0KCkgZmFpbGVkIHVuZXhwZWN0ZWRseSIpOwogCQkJ CUV4ZWN1dG9yUnVuKHFkZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMCk7CiAJCQkJRXhlY3V0 b3JGaW5pc2gocWRlc2MpOwogCQkJCUV4ZWN1dG9yRW5kKHFkZXNjKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZp ZXcuYwppbmRleCBjMTI4MTcwOTFlZC4uMGJmYmM1Y2E2ZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL21hdHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3 LmMKQEAgLTQzOCwxMiArNDM4LDEzIEBAIHJlZnJlc2hfbWF0dmlld19kYXRhZmlsbChEZXN0UmVj ZWl2ZXIgKmRlc3QsIFF1ZXJ5ICpxdWVyeSwKIAlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJ ZCgpOwogCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBvdXRwdXQgdG8gb3Vy IHR1cGxlIHJlY2VpdmVyICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHF1 ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBxdWVy eVN0cmluZywKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAog CQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKIAogCS8qIGNhbGwgRXhlY3V0b3JTdGFydCB0 byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24gKi8KLQlFeGVjdXRvclN0YXJ0KHF1ZXJ5 RGVzYywgMCk7CisJaWYgKCFFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCkpCisJCWVsb2coRVJS T1IsICJFeGVjdXRvclN0YXJ0KCkgZmFpbGVkIHVuZXhwZWN0ZWRseSIpOwogCiAJLyogcnVuIHRo ZSBwbGFuICovCiAJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwg MCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKaW5kZXggZTdjODE3MWMxMDIuLjRjMmFjMDQ1 MjI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCkBAIC0xMTcsNiArMTE3LDcgQEAgUGVy Zm9ybUN1cnNvck9wZW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWNsYXJlQ3Vyc29yU3RtdCAqY3N0 bXQsIFBhcmFtTGlzdEluZm8gcGEKIAkJCQkJICBxdWVyeVN0cmluZywKIAkJCQkJICBDTURUQUdf U0VMRUNULAkvKiBjdXJzb3IncyBxdWVyeSBpcyBhbHdheXMgYSBTRUxFQ1QgKi8KIAkJCQkJICBs aXN0X21ha2UxKHBsYW4pLAorCQkJCQkgIE5VTEwsCiAJCQkJCSAgTlVMTCk7CiAKIAkvKi0tLS0t LS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCA4OTg5YzBjODgyZC4uYzAyNWIxZjlmOGMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTIwMiw3ICsyMDIsOCBAQCBFeGVjdXRlUXVlcnko UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJICBlbnRyeS0+ cGxhbnNvdXJjZS0+Y29tbWFuZFRhZywKIAkJCQkJICBwbGFuX2xpc3QsCi0JCQkJCSAgY3BsYW4p OworCQkJCQkgIGNwbGFuLAorCQkJCQkgIGVudHJ5LT5wbGFuc291cmNlKTsKIAogCS8qCiAJICog Rm9yIENSRUFURSBUQUJMRSAuLi4gQVMgRVhFQ1VURSwgd2UgbXVzdCB2ZXJpZnkgdGhhdCB0aGUg cHJlcGFyZWQKQEAgLTU4Miw2ICs1ODMsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVT dG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlNZW1v cnlDb250ZXh0Q291bnRlcnMgbWVtX2NvdW50ZXJzOwogCU1lbW9yeUNvbnRleHQgcGxhbm5lcl9j dHggPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgc2F2ZWRfY3R4ID0gTlVMTDsKKwlpbnQJCQlxdWVy eV9pbmRleCA9IDA7CiAKIAlpZiAoZXMtPm1lbW9yeSkKIAl7CkBAIC02NTQsNyArNjU2LDggQEAg RXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2Rl KFBsYW5uZWRTdG10LCBwKTsKIAogCQlpZiAocHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElM SVRZKQotCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBh cmFtTEksIHBzdGF0ZS0+cF9xdWVyeUVudiwKKwkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBjcGxh biwgZW50cnktPnBsYW5zb3VyY2UsIHF1ZXJ5X2luZGV4LAorCQkJCQkJICAgaW50bywgZXMsIHF1 ZXJ5X3N0cmluZywgcGFyYW1MSSwgcHN0YXRlLT5wX3F1ZXJ5RW52LAogCQkJCQkJICAgJnBsYW5k dXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJCQkgICBlcy0+ bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogCQllbHNlCkBAIC02NjUsNiArNjY4LDgg QEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2Ug KmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCS8qIFNlcGFyYXRlIHBsYW5zIHdpdGggYW4gYXBw cm9wcmlhdGUgc2VwYXJhdG9yICovCiAJCWlmIChsbmV4dChwbGFuX2xpc3QsIHApICE9IE5VTEwp CiAJCQlFeHBsYWluU2VwYXJhdGVQbGFucyhlcyk7CisKKwkJcXVlcnlfaW5kZXgrKzsKIAl9CiAK IAlpZiAoZXN0YXRlKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IDdhNWZmZTMyZjYwLi5jNDBi YjBmZGM5ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwpAQCAtNTE0Myw2ICs1MTQzLDIwIEBAIEFm dGVyVHJpZ2dlckVuZFF1ZXJ5KEVTdGF0ZSAqZXN0YXRlKQogCWFmdGVyVHJpZ2dlcnMucXVlcnlf ZGVwdGgtLTsKIH0KIAorLyogLS0tLS0tLS0tLQorICogQWZ0ZXJUcmlnZ2VyQWJvcnRRdWVyeSgp CisgKgorICogQ2FsbGVkIGJ5IEV4ZWN1dG9yRW5kKCkgaWYgdGhlIHF1ZXJ5IGV4ZWN1dGlvbiB3 YXMgYWJvcnRlZCBkdWUgdG8gdGhlCisgKiBwbGFuIGJlY29taW5nIGludmFsaWQgZHVyaW5nIGlu aXRpYWxpemF0aW9uLgorICogLS0tLS0tLS0tLQorICovCit2b2lkCitBZnRlclRyaWdnZXJBYm9y dFF1ZXJ5KHZvaWQpCit7CisJLyogUmV2ZXJ0IHRoZSBhY3Rpb25zIG9mIEFmdGVyVHJpZ2dlckJl Z2luUXVlcnkoKS4gKi8KKwlhZnRlclRyaWdnZXJzLnF1ZXJ5X2RlcHRoLS07Cit9CisKIAogLyoK ICAqIEFmdGVyVHJpZ2dlckZyZWVRdWVyeQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvUkVBRE1FIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCmluZGV4IDY0MmQ2M2JlNjEz Li40NDljNjA2OGFlOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQpAQCAtMjgwLDYgKzI4MCwyOCBAQCBhcmUg dHlwaWNhbGx5IHJlc2V0IHRvIGVtcHR5IG9uY2UgcGVyIHR1cGxlLiAgUGVyLXR1cGxlIGNvbnRl eHRzIGFyZSB1c3VhbGx5CiBhc3NvY2lhdGVkIHdpdGggRXhwckNvbnRleHRzLCBhbmQgY29tbW9u bHkgZWFjaCBQbGFuU3RhdGUgbm9kZSBoYXMgaXRzIG93bgogRXhwckNvbnRleHQgdG8gZXZhbHVh dGUgaXRzIHF1YWwgYW5kIHRhcmdldGxpc3QgZXhwcmVzc2lvbnMgaW4uCiAKK1JlbGF0aW9uIExv Y2tpbmcKKy0tLS0tLS0tLS0tLS0tLS0KKworVHlwaWNhbGx5LCB3aGVuIHRoZSBleGVjdXRvciBp bml0aWFsaXplcyBhIHBsYW4gdHJlZSBmb3IgZXhlY3V0aW9uLCBpdCBkb2Vzbid0Citsb2NrIG5v bi1pbmRleCByZWxhdGlvbnMgaWYgdGhlIHBsYW4gdHJlZSBpcyBmcmVzaGx5IGdlbmVyYXRlZCBh bmQgbm90IGRlcml2ZWQKK2Zyb20gYSBDYWNoZWRQbGFuLiBUaGlzIGlzIGJlY2F1c2Ugc3VjaCBs b2NrcyBoYXZlIGFscmVhZHkgYmVlbiBlc3RhYmxpc2hlZAorZHVyaW5nIHRoZSBxdWVyeSdzIHBh cnNpbmcsIHJld3JpdGluZywgYW5kIHBsYW5uaW5nIHBoYXNlcy4gSG93ZXZlciwgd2l0aCBhCitj YWNoZWQgcGxhbiB0cmVlLCBzb21lIHJlbGF0aW9ucyBtYXkgcmVtYWluIHVubG9ja2VkLiBUaGUg ZnVuY3Rpb24KK0FjcXVpcmVFeGVjdXRvckxvY2tzKCkgb25seSBsb2NrcyB1bnBydW5hYmxlIHJl bGF0aW9ucyBpbiB0aGUgcGxhbiwgZGVmZXJyaW5nCit0aGUgbG9ja2luZyBvZiBwcnVuYWJsZSBv bmVzIHRvIGV4ZWN1dG9yIGluaXRpYWxpemF0aW9uLiBUaGlzIGF2b2lkcwordW5uZWNlc3Nhcnkg bG9ja2luZyBvZiByZWxhdGlvbnMgdGhhdCB3aWxsIGJlIHBydW5lZCBkdXJpbmcgImluaXRpYWwi IHJ1bnRpbWUKK3BydW5pbmcgaW4gRXhlY0RvSW5pdGlhbFBydW5pbmcoKS4KKworVGhpcyBhcHBy b2FjaCBjcmVhdGVzIGEgd2luZG93IHdoZXJlIGEgY2FjaGVkIHBsYW4gdHJlZSB3aXRoIGNoaWxk IHRhYmxlcworY291bGQgYmVjb21lIG91dGRhdGVkIGlmIGFub3RoZXIgYmFja2VuZCBtb2RpZmll cyB0aGVzZSB0YWJsZXMgYmVmb3JlCitFeGVjRG9Jbml0aWFsUHJ1bmluZygpIGxvY2tzIHRoZW0u IEFzIGEgcmVzdWx0LCB0aGUgZXhlY3V0b3IgaGFzIHRoZSBhZGRlZCBkdXR5Cit0byB2ZXJpZnkg dGhlIHBsYW4gdHJlZSdzIHZhbGlkaXR5IHdoZW5ldmVyIGl0IGxvY2tzIGEgY2hpbGQgdGFibGUg YWZ0ZXIKK2RvaW5nIGluaXRpYWwgcHJ1bmluZy4gVGhpcyB2YWxpZGF0aW9uIGlzIGRvbmUgYnkg Y2hlY2tpbmcgdGhlIENhY2hlZFBsYW4uaXNfdmFsaWQKK2ZsYWcuIElmIHRoZSBwbGFuIHRyZWUg aXMgb3V0ZGF0ZWQgKGlzX3ZhbGlkID0gZmFsc2UpLCB0aGUgZXhlY3V0b3Igc3RvcHMKK2Z1cnRo ZXIgaW5pdGlhbGl6YXRpb24sIGNsZWFucyB1cCBhbnl0aGluZyBpbiBFU3RhdGUgdGhhdCB3b3Vs ZCBoYXZlIGJlZW4KK2FsbG9jYXRlZCB1cCB0byB0aGF0IHBvaW50LCBhbmQgcmV0cmllcyBleGVj dXRpb24gYWZ0ZXIgcmVjcmVhdGluZyB0aGUKK2ludmFsaWQgcGxhbiBpbiB0aGUgQ2FjaGVkUGxh bi4KIAogUXVlcnkgUHJvY2Vzc2luZyBDb250cm9sIEZsb3cKIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCkBAIC0yODgsMTEgKzMxMCwxMyBAQCBUaGlzIGlzIGEgc2tldGNoIG9mIGNvbnRy b2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9jZXNzaW5nOgogCiAJQ3JlYXRlUXVlcnlEZXNjCiAK LQlFeGVjdXRvclN0YXJ0CisJRXhlY3V0b3JTdGFydCBvciBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxh bgogCQlDcmVhdGVFeGVjdXRvclN0YXRlCiAJCQljcmVhdGVzIHBlci1xdWVyeSBjb250ZXh0Ci0J CXN3aXRjaCB0byBwZXItcXVlcnkgY29udGV4dCB0byBydW4gRXhlY0luaXROb2RlCisJCXN3aXRj aCB0byBwZXItcXVlcnkgY29udGV4dCB0byBydW4gRXhlY0RvSW5pdGlhbFBydW5pbmcgYW5kIEV4 ZWNJbml0Tm9kZQogCQlBZnRlclRyaWdnZXJCZWdpblF1ZXJ5CisJCUV4ZWNEb0luaXRpYWxQcnVu aW5nCisJCQlkb2VzIGluaXRpYWwgcHJ1bmluZyBhbmQgbG9ja3Mgc3Vydml2aW5nIHBhcnRpdGlv bnMgaWYgbmVlZGVkCiAJCUV4ZWNJbml0Tm9kZSAtLS0gcmVjdXJzaXZlbHkgc2NhbnMgcGxhbiB0 cmVlCiAJCQlFeGVjSW5pdE5vZGUKIAkJCQlyZWN1cnNlIGludG8gc3Vic2lkaWFyeSBub2RlcwpA QCAtMzE2LDcgKzM0MCwxMiBAQCBUaGlzIGlzIGEgc2tldGNoIG9mIGNvbnRyb2wgZmxvdyBmb3Ig ZnVsbCBxdWVyeSBwcm9jZXNzaW5nOgogCiAJRnJlZVF1ZXJ5RGVzYwogCi1QZXIgYWJvdmUgY29t bWVudHMsIGl0J3Mgbm90IHJlYWxseSBjcml0aWNhbCBmb3IgRXhlY0VuZE5vZGUgdG8gZnJlZSBh bnkKK0FzIG1lbnRpb25lZCBpbiB0aGUgIlJlbGF0aW9uIExvY2tpbmciIHNlY3Rpb24sIGlmIHRo ZSBwbGFuIHRyZWUgaXMgZm91bmQgdG8KK2JlIHN0YWxlIGFmdGVyIGxvY2tpbmcgcGFydGl0aW9u cyBpbiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpLCB0aGUgY29udHJvbCBpcworaW1tZWRpYXRlbHkg cmV0dXJuZWQgdG8gRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oKSwgd2hpY2ggd2lsbCBjcmVhdGUg YSBuZXcgcGxhbgordHJlZSBhbmQgcGVyZm9ybSB0aGUgc3RlcHMgc3RhcnRpbmcgZnJvbSBDcmVh dGVFeGVjdXRvclN0YXRlKCkgYWdhaW4uCisKK1BlciBhYm92ZSBjb21tZW50cywgaXQncyBub3Qg cmVhbGx5IGNyaXRpY2FsIGZvciBFeGVjRW5kUGxhbiB0byBmcmVlIGFueQogbWVtb3J5OyBpdCds bCBhbGwgZ28gYXdheSBpbiBGcmVlRXhlY3V0b3JTdGF0ZSBhbnl3YXkuICBIb3dldmVyLCB3ZSBk byBuZWVkIHRvCiBiZSBjYXJlZnVsIHRvIGNsb3NlIHJlbGF0aW9ucywgZHJvcCBidWZmZXIgcGlu cywgZXRjLCBzbyB3ZSBkbyBuZWVkIHRvIHNjYW4KIHRoZSBwbGFuIHN0YXRlIHRyZWUgdG8gZmlu ZCB0aGVzZSBzb3J0cyBvZiByZXNvdXJjZXMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCA1 Yjk4OTA3NDIwMy4uZWMyMzg3ZDdmMWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNTUs MTEgKzU1LDEzIEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVk ZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInRjb3AvdXRpbGl0eS5oIgogI2luY2x1ZGUg InV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgiCiAjaW5jbHVk ZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcGFydGNhY2hlLmgiCisjaW5j bHVkZSAidXRpbHMvcGxhbmNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmxzLmgiCiAjaW5jbHVk ZSAidXRpbHMvc25hcG1nci5oIgogCkBAIC0xMTQsMTEgKzExNiwxNiBAQCBzdGF0aWMgdm9pZCBF dmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKTsKICAq IGdldCBjb250cm9sIHdoZW4gRXhlY3V0b3JTdGFydCBpcyBjYWxsZWQuICBTdWNoIGEgcGx1Z2lu IHdvdWxkCiAgKiBub3JtYWxseSBjYWxsIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoKS4KICAqCisg KiBSZXR1cm4gdmFsdWUgaW5kaWNhdGVzIGlmIHRoZSBwbGFuIGhhcyBiZWVuIGluaXRpYWxpemVk IHN1Y2Nlc3NmdWxseSBzbworICogdGhhdCBxdWVyeURlc2MtPnBsYW5zdGF0ZSBjb250YWlucyBh IHZhbGlkIFBsYW5TdGF0ZSB0cmVlLiAgSXQgbWF5IG5vdAorICogaWYgdGhlIHBsYW4gZ290IGlu dmFsaWRhdGVkIGR1cmluZyBJbml0UGxhbigpLgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCi12b2lkCitib29s CiBFeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogeworCWJv b2wJCXBsYW5fdmFsaWQ7CisKIAkvKgogCSAqIEluIHNvbWUgY2FzZXMgKGUuZy4gYW4gRVhFQ1VU RSBzdGF0ZW1lbnQgb3IgYW4gZXhlY3V0ZSBtZXNzYWdlIHdpdGggdGhlCiAJICogZXh0ZW5kZWQg cXVlcnkgcHJvdG9jb2wpIHRoZSBxdWVyeV9pZCB3b24ndCBiZSByZXBvcnRlZCwgc28gZG8gaXQg bm93LgpAQCAtMTMwLDEyICsxMzcsMTQgQEAgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncykKIAlwZ3N0YXRfcmVwb3J0X3F1ZXJ5X2lkKHF1ZXJ5RGVzYy0+cGxh bm5lZHN0bXQtPnF1ZXJ5SWQsIGZhbHNlKTsKIAogCWlmIChFeGVjdXRvclN0YXJ0X2hvb2spCi0J CSgqRXhlY3V0b3JTdGFydF9ob29rKSAocXVlcnlEZXNjLCBlZmxhZ3MpOworCQlwbGFuX3ZhbGlk ID0gKCpFeGVjdXRvclN0YXJ0X2hvb2spIChxdWVyeURlc2MsIGVmbGFncyk7CiAJZWxzZQotCQlz dGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxpZCA9 IHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCisJcmV0dXJuIHBs YW5fdmFsaWQ7CiB9CiAKLXZvaWQKK2Jvb2wKIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CiAJRVN0YXRlCSAgICplc3RhdGU7CkBAIC0y NTksNiArMjY4LDY0IEBAIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MpCiAJSW5pdFBsYW4ocXVlcnlEZXNjLCBlZmxhZ3MpOwogCiAJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJcmV0dXJuIEV4ZWNQbGFuU3RpbGxWYWxp ZChxdWVyeURlc2MtPmVzdGF0ZSk7Cit9CisKKy8qCisgKiBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxh bgorICoJCVN0YXJ0IGV4ZWN1dGlvbiBmb3IgYSBnaXZlbiBxdWVyeSBpbiB0aGUgQ2FjaGVkUGxh blNvdXJjZSwgcmVwbGFubmluZworICoJCWlmIHRoZSBwbGFuIGlzIGludmFsaWRhdGVkIGR1ZSB0 byBkZWZlcnJlZCBsb2NrcyB0YWtlbiBkdXJpbmcgdGhlCisgKgkJcGxhbidzIGluaXRpYWxpemF0 aW9uCisgKgorICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIGNhc2VzIHdoZXJlIHRoZSBDYWNoZWRQ bGFuIGdpdmVuIGluIHF1ZXJ5RGVzYy0+Y3BsYW4KKyAqIG1pZ2h0IGJlY29tZSBpbnZhbGlkIGR1 cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBsYW4gZ2l2ZW4gaW4KKyAqIHF1ZXJ5RGVz Yy0+cGxhbm5lZHN0bXQsIHBhcnRpY3VsYXJseSB3aGVuIHBydW5hYmxlIHJlbGF0aW9ucyBpbiBp dCBhcmUKKyAqIGxvY2tlZCBhZnRlciBwZXJmb3JtaW5nIGluaXRpYWwgcHJ1bmluZy4gSWYgdGhl IGxvY2tzIGludmFsaWRhdGUgdGhlIHBsYW4sCisgKiB0aGUgZnVuY3Rpb24gY2FsbHMgVXBkYXRl Q2FjaGVkUGxhbigpIHRvIHJlcGxhbiBhbGwgcXVlcmllcyBpbiB0aGUKKyAqIENhY2hlZFBsYW4s IGFuZCB0aGVuIHJldHJpZXMgaW5pdGlhbGl6YXRpb24uCisgKgorICogVGhlIGZ1bmN0aW9uIHJl cGVhdHMgdGhlIHByb2Nlc3MgdW50aWwgRXhlY3V0b3JTdGFydCgpIHN1Y2Nlc3NmdWxseQorICog aW5pdGlhbGl6ZXMgdGhlIHBsYW4sIHRoYXQgaXMgd2l0aG91dCB0aGUgQ2FjaGVkUGxhbiBiZWNv bWluZyBpbnZhbGlkLgorICovCit2b2lkCitFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbihRdWVyeURl c2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncywKKwkJCQkJCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5z b3VyY2UsCisJCQkJCQlpbnQgcXVlcnlfaW5kZXgpCit7CisJaWYgKHVubGlrZWx5KHF1ZXJ5RGVz Yy0+Y3BsYW4gPT0gTlVMTCkpCisJCWVsb2coRVJST1IsICJFeGVjdXRvclN0YXJ0Q2FjaGVkUGxh bigpOiBtaXNzaW5nIENhY2hlZFBsYW4iKTsKKwlpZiAodW5saWtlbHkocGxhbnNvdXJjZSA9PSBO VUxMKSkKKwkJZWxvZyhFUlJPUiwgIkV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKCk6IG1pc3Npbmcg Q2FjaGVkUGxhblNvdXJjZSIpOworCisJLyoKKwkgKiBMb29wIGFuZCByZXRyeSB3aXRoIGFuIHVw ZGF0ZWQgcGxhbiB1bnRpbCBubyBmdXJ0aGVyIGludmFsaWRhdGlvbgorCSAqIG9jY3Vycy4KKwkg Ki8KKwl3aGlsZSAoMSkKKwl7CisJCWlmICghRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFn cykpCisJCXsKKwkJCS8qCisJCQkgKiBDbGVhbiB1cCB0aGUgY3VycmVudCBleGVjdXRpb24gc3Rh dGUgYmVmb3JlIGNyZWF0aW5nIHRoZSBuZXcKKwkJCSAqIHBsYW4gdG8gcmV0cnkgRXhlY3V0b3JT dGFydCgpLiAgTWFyayBleGVjdXRpb24gYXMgYWJvcnRlZCB0bworCQkJICogZW5zdXJlIHRoYXQg QUZURVIgdHJpZ2dlciBzdGF0ZSBpcyBwcm9wZXJseSByZXNldC4KKwkJCSAqLworCQkJcXVlcnlE ZXNjLT5lc3RhdGUtPmVzX2Fib3J0ZWQgPSB0cnVlOworCQkJRXhlY3V0b3JFbmQocXVlcnlEZXNj KTsKKworCQkJLyogUmV0cnkgRXhlY3V0b3JTdGFydCgpIHdpdGggYW4gdXBkYXRlZCBwbGFuIHRy ZWUuICovCisJCQlxdWVyeURlc2MtPnBsYW5uZWRzdG10ID0gVXBkYXRlQ2FjaGVkUGxhbihwbGFu c291cmNlLCBxdWVyeV9pbmRleCwKKwkJCQkJCQkJCQkJCQkgIHF1ZXJ5RGVzYy0+cXVlcnlFbnYp OworCQl9CisJCWVsc2UKKworCQkJLyoKKwkJCSAqIEV4aXQgdGhlIGxvb3AgaWYgdGhlIHBsYW4g aXMgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5IGFuZCBubworCQkJICogc2ludmFsIG1lc3NhZ2Vz IHdlcmUgcmVjZWl2ZWQgdGhhdCBpbnZhbGlkYXRlZCB0aGUgQ2FjaGVkUGxhbi4KKwkJCSAqLwor CQkJYnJlYWs7CisJfQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zMTcsNiArMzg0LDcgQEAgc3RhbmRh cmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJZXN0YXRlID0gcXVlcnlEZXNj LT5lc3RhdGU7CiAKIAlBc3NlcnQoZXN0YXRlICE9IE5VTEwpOworCUFzc2VydCghZXN0YXRlLT5l c19hYm9ydGVkKTsKIAlBc3NlcnQoIShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdf RVhQTEFJTl9PTkxZKSk7CiAKIAkvKiBjYWxsZXIgbXVzdCBlbnN1cmUgdGhlIHF1ZXJ5J3Mgc25h cHNob3QgaXMgYWN0aXZlICovCkBAIC00MjMsOCArNDkxLDExIEBAIHN0YW5kYXJkX0V4ZWN1dG9y RmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCUFzc2VydChlc3RhdGUgIT0gTlVMTCk7CiAJ QXNzZXJ0KCEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYgRVhFQ19GTEFHX0VYUExBSU5fT05MWSkp OwogCi0JLyogVGhpcyBzaG91bGQgYmUgcnVuIG9uY2UgYW5kIG9ubHkgb25jZSBwZXIgRXhlY3V0 b3IgaW5zdGFuY2UgKi8KLQlBc3NlcnQoIWVzdGF0ZS0+ZXNfZmluaXNoZWQpOworCS8qCisJICog VGhpcyBzaG91bGQgYmUgcnVuIG9uY2UgYW5kIG9ubHkgb25jZSBwZXIgRXhlY3V0b3IgaW5zdGFu Y2UgYW5kIG5ldmVyCisJICogaWYgdGhlIGV4ZWN1dGlvbiB3YXMgYWJvcnRlZC4KKwkgKi8KKwlB c3NlcnQoIWVzdGF0ZS0+ZXNfZmluaXNoZWQgJiYgIWVzdGF0ZS0+ZXNfYWJvcnRlZCk7CiAKIAkv KiBTd2l0Y2ggaW50byBwZXItcXVlcnkgbWVtb3J5IGNvbnRleHQgKi8KIAlvbGRjb250ZXh0ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKQEAgLTQ4NywxMSAr NTU4LDEwIEBAIHN0YW5kYXJkX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCQkJ CQkJCQkJCQkgKFBnU3RhdF9Db3VudGVyKSBlc3RhdGUtPmVzX3BhcmFsbGVsX3dvcmtlcnNfbGF1 bmNoZWQpOwogCiAJLyoKLQkgKiBDaGVjayB0aGF0IEV4ZWN1dG9yRmluaXNoIHdhcyBjYWxsZWQs IHVubGVzcyBpbiBFWFBMQUlOLW9ubHkgbW9kZS4gVGhpcwotCSAqIEFzc2VydCBpcyBuZWVkZWQg YmVjYXVzZSBFeGVjdXRvckZpbmlzaCBpcyBuZXcgYXMgb2YgOS4xLCBhbmQgY2FsbGVycwotCSAq IG1pZ2h0IGZvcmdldCB0byBjYWxsIGl0LgorCSAqIENoZWNrIHRoYXQgRXhlY3V0b3JGaW5pc2gg d2FzIGNhbGxlZCwgdW5sZXNzIGluIEVYUExBSU4tb25seSBtb2RlIG9yIGlmCisJICogZXhlY3V0 aW9uIHdhcyBhYm9ydGVkLgogCSAqLwotCUFzc2VydChlc3RhdGUtPmVzX2ZpbmlzaGVkIHx8CisJ QXNzZXJ0KGVzdGF0ZS0+ZXNfZmluaXNoZWQgfHwgZXN0YXRlLT5lc19hYm9ydGVkIHx8CiAJCSAg IChlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSk7CiAKIAkv KgpAQCAtNTA1LDYgKzU3NSwxNCBAQCBzdGFuZGFyZF9FeGVjdXRvckVuZChRdWVyeURlc2MgKnF1 ZXJ5RGVzYykKIAlVbnJlZ2lzdGVyU25hcHNob3QoZXN0YXRlLT5lc19zbmFwc2hvdCk7CiAJVW5y ZWdpc3RlclNuYXBzaG90KGVzdGF0ZS0+ZXNfY3Jvc3NjaGVja19zbmFwc2hvdCk7CiAKKwkvKgor CSAqIFJlc2V0IEFGVEVSIHRyaWdnZXIgbW9kdWxlIGlmIHRoZSBxdWVyeSBleGVjdXRpb24gd2Fz IGFib3J0ZWQuCisJICovCisJaWYgKGVzdGF0ZS0+ZXNfYWJvcnRlZCAmJgorCQkhKGVzdGF0ZS0+ ZXNfdG9wX2VmbGFncyAmCisJCSAgKEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTIHwgRVhFQ19GTEFH X0VYUExBSU5fT05MWSkpKQorCQlBZnRlclRyaWdnZXJBYm9ydFF1ZXJ5KCk7CisKIAkvKgogCSAq IE11c3Qgc3dpdGNoIG91dCBvZiBjb250ZXh0IGJlZm9yZSBkZXN0cm95aW5nIGl0CiAJICovCkBA IC02MDMsNiArNjgxLDIxIEBAIEV4ZWNDaGVja1Blcm1pc3Npb25zKExpc3QgKnJhbmdlVGFibGUs IExpc3QgKnJ0ZXBlcm1pbmZvcywKIAkJCQkgICAocnRlLT5ydGVraW5kID09IFJURV9TVUJRVUVS WSAmJgogCQkJCQlydGUtPnJlbGtpbmQgPT0gUkVMS0lORF9WSUVXKSk7CiAKKwkJCS8qCisJCQkg KiBFbnN1cmUgdGhhdCB3ZSBoYXZlIGF0IGxlYXN0IGFuIEFjY2Vzc1NoYXJlTG9jayBvbiByZWxh dGlvbnMKKwkJCSAqIHdob3NlIHBlcm1pc3Npb25zIG5lZWQgdG8gYmUgY2hlY2tlZC4KKwkJCSAq CisJCQkgKiBTa2lwIHRoaXMgY2hlY2sgaW4gYSBwYXJhbGxlbCB3b3JrZXIgYmVjYXVzZSBsb2Nr cyB3b24ndCBiZQorCQkJICogdGFrZW4gdW50aWwgRXhlY0luaXROb2RlKCkgcGVyZm9ybXMgcGxh biBpbml0aWFsaXphdGlvbi4KKwkJCSAqCisJCQkgKiBYWFg6IEV4ZWNDaGVja1Blcm1pc3Npb25z KCkgaW4gYSBwYXJhbGxlbCB3b3JrZXIgbWF5IGJlCisJCQkgKiByZWR1bmRhbnQgd2l0aCB0aGUg Y2hlY2tzIGRvbmUgaW4gdGhlIGxlYWRlciBwcm9jZXNzLCBzbyB0aGlzCisJCQkgKiBzaG91bGQg YmUgcmV2aWV3ZWQgdG8gZW5zdXJlIGl04oCZcyBuZWNlc3NhcnkuCisJCQkgKi8KKwkJCUFzc2Vy dChJc1BhcmFsbGVsV29ya2VyKCkgfHwKKwkJCQkgICBDaGVja1JlbGF0aW9uT2lkTG9ja2VkQnlN ZShydGUtPnJlbGlkLCBBY2Nlc3NTaGFyZUxvY2ssCisJCQkJCQkJCQkJCSAgdHJ1ZSkpOworCiAJ CQkodm9pZCkgZ2V0UlRFUGVybWlzc2lvbkluZm8ocnRlcGVybWluZm9zLCBydGUpOwogCQkJLyog TWFueS10by1vbmUgbWFwcGluZyBub3QgYWxsb3dlZCAqLwogCQkJQXNzZXJ0KCFibXNfaXNfbWVt YmVyKHJ0ZS0+cGVybWluZm9pbmRleCwgaW5kZXhzZXQpKTsKQEAgLTgyOCw2ICs5MjEsMTIgQEAg RXhlY0NoZWNrWGFjdFJlYWRPbmx5KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCkKICAqCiAgKgkJ SW5pdGlhbGl6ZXMgdGhlIHF1ZXJ5IHBsYW46IG9wZW4gZmlsZXMsIGFsbG9jYXRlIHN0b3JhZ2UK ICAqCQlhbmQgc3RhcnQgdXAgdGhlIHJ1bGUgbWFuYWdlcgorICoKKyAqCQlJZiB0aGUgcGxhbiBv cmlnaW5hdGVzIGZyb20gYSBDYWNoZWRQbGFuIChnaXZlbiBpbiBxdWVyeURlc2MtPmNwbGFuKSwK KyAqCQlpdCBjYW4gYmVjb21lIGludmFsaWQgZHVyaW5nIHJ1bnRpbWUgImluaXRpYWwiIHBydW5p bmcgd2hlbiB0aGUKKyAqCQlyZW1haW5pbmcgc2V0IG9mIGxvY2tzIGlzIHRha2VuLiAgVGhlIGZ1 bmN0aW9uIHJldHVybnMgZWFybHkgaW4gdGhhdAorICoJCWNhc2Ugd2l0aG91dCBpbml0aWFsaXpp bmcgdGhlIHBsYW4sIGFuZCB0aGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvCisgKgkJcmV0cnkgd2l0 aCBhIG5ldyB2YWxpZCBwbGFuLgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBzdGF0aWMgdm9pZApAQCAtODM1 LDYgKzkzNCw3IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQog ewogCUNtZFR5cGUJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3BlcmF0aW9uOwogCVBsYW5uZWRT dG10ICpwbGFubmVkc3RtdCA9IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQ7CisJQ2FjaGVkUGxhbiAq Y2FjaGVkcGxhbiA9IHF1ZXJ5RGVzYy0+Y3BsYW47CiAJUGxhbgkgICAqcGxhbiA9IHBsYW5uZWRz dG10LT5wbGFuVHJlZTsKIAlMaXN0CSAgICpyYW5nZVRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJs ZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0YXRlOwpAQCAtODU1LDYgKzk1 NSw3IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJCQkg ICBibXNfY29weShwbGFubmVkc3RtdC0+dW5wcnVuYWJsZVJlbGlkcykpOwogCiAJZXN0YXRlLT5l c19wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OworCWVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiA9IGNh Y2hlZHBsYW47CiAJZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zID0gcGxhbm5lZHN0bXQtPnBh cnRQcnVuZUluZm9zOwogCiAJLyoKQEAgLTg2NSw5ICs5NjYsMTUgQEAgSW5pdFBsYW4oUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJICogZXhlY3V0ZWQsIGFyZSBzYXZlZCBpbiBl c19wYXJ0X3BydW5lX3Jlc3VsdHMuICBUaGVzZSByZXN1bHRzIGNvcnJlc3BvbmQKIAkgKiB0byBl YWNoIFBhcnRpdGlvblBydW5lSW5mbyBlbnRyeSwgYW5kIHRoZSBlc19wYXJ0X3BydW5lX3Jlc3Vs dHMgbGlzdCBpcwogCSAqIHBhcmFsbGVsIHRvIGVzX3BhcnRfcHJ1bmVfaW5mb3MuCisJICoKKwkg KiBUaGlzIHdpbGwgYWxzbyBhZGQgdGhlIFJUIGluZGV4ZXMgb2Ygc3Vydml2aW5nIGxlYWYgcGFy dGl0aW9ucyB0bworCSAqIGVzX3VucHJ1bmVkX3JlbGlkcy4KIAkgKi8KIAlFeGVjRG9Jbml0aWFs UHJ1bmluZyhlc3RhdGUpOwogCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJ cmV0dXJuOworCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJv bSB0aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4KIAkgKi8KQEAgLTI4NjgsNiArMjk3NSw5IEBA IEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJ ICogdGhlIHNuYXBzaG90LCByYW5nZXRhYmxlLCBhbmQgZXh0ZXJuYWwgUGFyYW0gaW5mby4gIFRo ZXkgbmVlZCB0aGVpciBvd24KIAkgKiBjb3BpZXMgb2YgbG9jYWwgc3RhdGUsIGluY2x1ZGluZyBh IHR1cGxlIHRhYmxlLCBlc19wYXJhbV9leGVjX3ZhbHMsCiAJICogcmVzdWx0LXJlbCBpbmZvLCBl dGMuCisJICoKKwkgKiBlc19jYWNoZWRwbGFuIGlzIG5vdCBjb3BpZWQgYmVjYXVzZSBFUFEgcGxh biBleGVjdXRpb24gZG9lcyBub3QgYWNxdWlyZQorCSAqIGFueSBuZXcgbG9ja3MgdGhhdCBjb3Vs ZCBpbnZhbGlkYXRlIHRoZSBDYWNoZWRQbGFuLgogCSAqLwogCXJjZXN0YXRlLT5lc19kaXJlY3Rp b24gPSBGb3J3YXJkU2NhbkRpcmVjdGlvbjsKIAlyY2VzdGF0ZS0+ZXNfc25hcHNob3QgPSBwYXJl bnRlc3RhdGUtPmVzX3NuYXBzaG90OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRl eCAxMzRmZjYyZjVjYi4uMWJlZGI4MDgzNjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNQYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxl bC5jCkBAIC0xMjU4LDggKzEyNTgsMTUgQEAgRXhlY1BhcmFsbGVsR2V0UXVlcnlEZXNjKHNobV90 b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwKIAlwYXJhbXNwYWNlID0gc2htX3RvY19s b29rdXAodG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgZmFsc2UpOwogCXBhcmFtTEkg PSBSZXN0b3JlUGFyYW1MaXN0KCZwYXJhbXNwYWNlKTsKIAotCS8qIENyZWF0ZSBhIFF1ZXJ5RGVz YyBmb3IgdGhlIHF1ZXJ5LiAqLworCS8qCisJICogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUg cXVlcnkuICBXZSBwYXNzIE5VTEwgZm9yIGNhY2hlZHBsYW4sIGJlY2F1c2UKKwkgKiB3ZSBkb24n dCBoYXZlIGEgcG9pbnRlciB0byB0aGUgQ2FjaGVkUGxhbiBpbiB0aGUgbGVhZGVyJ3MgcHJvY2Vz cy4gSXQncworCSAqIGZpbmUgYmVjYXVzZSB0aGUgb25seSByZWFzb24gdGhlIGV4ZWN1dG9yIG5l ZWRzIHRvIHNlZSBpdCBpcyB0byBkZWNpZGUKKwkgKiBpZiBpdCBzaG91bGQgdGFrZSBsb2NrcyBv biBjZXJ0YWluIHJlbGF0aW9ucywgYnV0IHBhcmFsbGVsIHdvcmtlcnMKKwkgKiBhbHdheXMgdGFr ZSBsb2NrcyBhbnl3YXkuCisJICovCiAJcmV0dXJuIENyZWF0ZVF1ZXJ5RGVzYyhwc3RtdCwKKwkJ CQkJCSAgIE5VTEwsCiAJCQkJCQkgICBxdWVyeVN0cmluZywKIAkJCQkJCSAgIEdldEFjdGl2ZVNu YXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCSAgIHJlY2VpdmVyLCBwYXJhbUxJLCBO VUxMLCBpbnN0cnVtZW50X29wdGlvbnMpOwpAQCAtMTQ0MCw3ICsxNDQ3LDggQEAgUGFyYWxsZWxR dWVyeU1haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCiAJLyogU3RhcnQgdXAg dGhlIGV4ZWN1dG9yICovCiAJcXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+aml0RmxhZ3MgPSBmcGVz LT5qaXRfZmxhZ3M7Ci0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGZwZXMtPmVmbGFncyk7CisJ aWYgKCFFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZnBlcy0+ZWZsYWdzKSkKKwkJZWxvZyhFUlJP UiwgIkV4ZWN1dG9yU3RhcnQoKSBmYWlsZWQgdW5leHBlY3RlZGx5Iik7CiAKIAkvKiBTcGVjaWFs IGV4ZWN1dG9yIGluaXRpYWxpemF0aW9uIHN0ZXBzIGZvciBwYXJhbGxlbCB3b3JrZXJzICovCiAJ cXVlcnlEZXNjLT5wbGFuc3RhdGUtPnN0YXRlLT5lc19xdWVyeV9kc2EgPSBhcmVhOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDdhZGEyNmE1NDFjLi44ZWI5NWU5MjgxNiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMjYsNiArMjYsNyBAQAogI2lu Y2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0ZGVzYy5oIgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9w YXJ0cHJ1bmUuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgorI2luY2x1ZGUg InN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxz L2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3BhcnRjYWNoZS5oIgpAQCAtMTc2OCw3ICsx NzY5LDggQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywg QXR0ck1hcCAqYXR0ck1hcCkKICAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nOgogICoJCVBlcmZvcm0g cnVudGltZSAiaW5pdGlhbCIgcHJ1bmluZywgaWYgbmVjZXNzYXJ5LCB0byBkZXRlcm1pbmUgdGhl IHNldAogICoJCW9mIGNoaWxkIHN1Ym5vZGVzIHRoYXQgbmVlZCB0byBiZSBpbml0aWFsaXplZCBk dXJpbmcgRXhlY0luaXROb2RlKCkgZm9yCi0gKgkJYWxsIHBsYW4gbm9kZXMgdGhhdCBjb250YWlu IGEgUGFydGl0aW9uUHJ1bmVJbmZvLgorICoJCWFsbCBwbGFuIG5vZGVzIHRoYXQgY29udGFpbiBh IFBhcnRpdGlvblBydW5lSW5mby4gIFRoaXMgYWxzbyBsb2NrcyB0aGUKKyAqCQlsZWFmIHBhcnRp dGlvbnMgd2hvc2Ugc3Vibm9kZXMgd2lsbCBiZSBpbml0aWFsaXplZCBpZiBuZWVkZWQuCiAgKgog ICogRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZzoKICAqCQlVcGRhdGVzIHRoZSBQYXJ0aXRp b25QcnVuZVN0YXRlIGZvdW5kIGF0IGdpdmVuIHBhcnRfcHJ1bmVfaW5kZXggaW4KQEAgLTE3ODks MTEgKzE3OTEsMTMgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNv bG5vcywgQXR0ck1hcCAqYXR0ck1hcCkKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKKwogLyoK ICAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nCiAgKgkJUGVyZm9ybSBydW50aW1lICJpbml0aWFsIiBw cnVuaW5nLCBpZiBuZWNlc3NhcnksIHRvIGRldGVybWluZSB0aGUgc2V0CiAgKgkJb2YgY2hpbGQg c3Vibm9kZXMgdGhhdCBuZWVkIHRvIGJlIGluaXRpYWxpemVkIGR1cmluZyBFeGVjSW5pdE5vZGUo KSBmb3IKLSAqCQlwbGFuIG5vZGVzIHRoYXQgc3VwcG9ydCBwYXJ0aXRpb24gcHJ1bmluZy4KKyAq CQlwbGFuIG5vZGVzIHRoYXQgc3VwcG9ydCBwYXJ0aXRpb24gcHJ1bmluZy4gIFRoaXMgYWxzbyBs b2NrcyB0aGUgbGVhZgorICoJCXBhcnRpdGlvbnMgd2hvc2Ugc3Vibm9kZXMgd2lsbCBiZSBpbml0 aWFsaXplZCBpZiBuZWVkZWQuCiAgKgogICogVGhpcyBmdW5jdGlvbiBpdGVyYXRlcyBvdmVyIGVh Y2ggUGFydGl0aW9uUHJ1bmVJbmZvIGVudHJ5IGluCiAgKiBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVf aW5mb3MuIEZvciBlYWNoIGVudHJ5LCBpdCBjcmVhdGVzIGEgUGFydGl0aW9uUHJ1bmVTdGF0ZQpA QCAtMTgxNiw2ICsxODIwLDcgQEAgdm9pZAogRXhlY0RvSW5pdGlhbFBydW5pbmcoRVN0YXRlICpl c3RhdGUpCiB7CiAJTGlzdENlbGwgICAqbGM7CisJTGlzdAkgICAqbG9ja2VkX3JlbGlkcyA9IE5J TDsKIAogCWZvcmVhY2gobGMsIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcykKIAl7CkBAIC0x ODQxLDExICsxODQ2LDQwIEBAIEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKQog CQllbHNlCiAJCQl2YWxpZHN1YnBsYW5fcnRpcyA9IGFsbF9sZWFmcGFydF9ydGlzOwogCisJCWlm IChFeGVjU2hvdWxkTG9ja1JlbGF0aW9ucyhlc3RhdGUpKQorCQl7CisJCQlpbnQJCQlydGluZGV4 ID0gLTE7CisKKwkJCXdoaWxlICgocnRpbmRleCA9IGJtc19uZXh0X21lbWJlcih2YWxpZHN1YnBs YW5fcnRpcywKKwkJCQkJCQkJCQkJICBydGluZGV4KSkgPj0gMCkKKwkJCXsKKwkJCQlSYW5nZVRi bEVudHJ5ICpydGUgPSBleGVjX3J0X2ZldGNoKHJ0aW5kZXgsIGVzdGF0ZSk7CisKKwkJCQlBc3Nl cnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiAmJgorCQkJCQkgICBydGUtPnJlbGxvY2tt b2RlICE9IE5vTG9jayk7CisJCQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVs bG9ja21vZGUpOworCQkJCWxvY2tlZF9yZWxpZHMgPSBsYXBwZW5kX2ludChsb2NrZWRfcmVsaWRz LCBydGluZGV4KTsKKwkJCX0KKwkJfQogCQllc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcyA9IGJt c19hZGRfbWVtYmVycyhlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcywKIAkJCQkJCQkJCQkJCQkg dmFsaWRzdWJwbGFuX3J0aXMpOwogCQllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyA9IGxh cHBlbmQoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMsCiAJCQkJCQkJCQkJCQl2YWxpZHN1 YnBsYW5zKTsKIAl9CisKKwkvKgorCSAqIFJlbGVhc2UgdGhlIHVzZWxlc3MgbG9ja3MgaWYgdGhl IHBsYW4gd29uJ3QgYmUgZXhlY3V0ZWQuICBUaGlzIGlzIHRoZQorCSAqIHNhbWUgYXMgd2hhdCBD aGVja0NhY2hlZFBsYW4oKSBpbiBwbGFuY2FjaGUuYyBkb2VzLgorCSAqLworCWlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJeworCQlmb3JlYWNoKGxjLCBsb2NrZWRfcmVsaWRzKQor CQl7CisJCQlSYW5nZVRibEVudHJ5ICpydGUgPSBleGVjX3J0X2ZldGNoKGxmaXJzdF9pbnQobGMp LCBlc3RhdGUpOworCisJCQlVbmxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxv Y2ttb2RlKTsKKwkJfQorCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKaW5kZXgg MTc5MmM0MGE1Y2IuLjY3OTI2MTc4NzU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwpAQCAt MTQ3LDYgKzE0Nyw3IEBAIENyZWF0ZUV4ZWN1dG9yU3RhdGUodm9pZCkKIAllc3RhdGUtPmVzX3Rv cF9lZmxhZ3MgPSAwOwogCWVzdGF0ZS0+ZXNfaW5zdHJ1bWVudCA9IDA7CiAJZXN0YXRlLT5lc19m aW5pc2hlZCA9IGZhbHNlOworCWVzdGF0ZS0+ZXNfYWJvcnRlZCA9IGZhbHNlOwogCiAJZXN0YXRl LT5lc19leHByY29udGV4dHMgPSBOSUw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2Z1bmN0aW9ucy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXgg NzU3ZjgwNjhlMjEuLjZhYThlOWM0ZDhhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9mdW5jdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAt ODQwLDYgKzg0MCw3IEBAIHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1 bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCWVzLT5x ZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+c3RtdCwKKwkJCQkJCQkgTlVMTCwKIAkJCQkJCQkgZmNh Y2hlLT5zcmMsCiAJCQkJCQkJIEdldEFjdGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJIEludmFsaWRT bmFwc2hvdCwKQEAgLTg2NCw3ICs4NjUsOCBAQCBwb3N0cXVlbF9zdGFydChleGVjdXRpb25fc3Rh dGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAkJCWVmbGFncyA9IEVYRUNfRkxB R19TS0lQX1RSSUdHRVJTOwogCQllbHNlCiAJCQllZmxhZ3MgPSAwOwkJCS8qIGRlZmF1bHQgcnVu LXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KLQkJRXhlY3V0b3JTdGFydChlcy0+cWQsIGVmbGFncyk7 CisJCWlmICghRXhlY3V0b3JTdGFydChlcy0+cWQsIGVmbGFncykpCisJCQllbG9nKEVSUk9SLCAi RXhlY3V0b3JTdGFydCgpIGZhaWxlZCB1bmV4cGVjdGVkbHkiKTsKIAl9CiAKIAllcy0+c3RhdHVz ID0gRl9FWEVDX1JVTjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5kZXggZWNiMmU0Y2NhYTEuLjMyODgzOTZkZWYz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9zcGkuYwpAQCAtNzAsNyArNzAsOCBAQCBzdGF0aWMgaW50CV9TUElfZXhlY3V0 ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMs CiBzdGF0aWMgUGFyYW1MaXN0SW5mbyBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lk ICphcmd0eXBlcywKIAkJCQkJCQkJCQkgRGF0dW0gKlZhbHVlcywgY29uc3QgY2hhciAqTnVsbHMp OwogCi1zdGF0aWMgaW50CV9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29sIGZp cmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpOworc3RhdGljIGludAlfU1BJX3BxdWVyeShRdWVy eURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50LAorCQkJ CQkJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgaW50IHF1ZXJ5X2luZGV4KTsKIAogc3Rh dGljIHZvaWQgX1NQSV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwogCkBAIC0xNjg1LDcgKzE2 ODYsOCBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxh blB0ciBwbGFuLAogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJICBwbGFuc291cmNlLT5jb21t YW5kVGFnLAogCQkJCQkgIHN0bXRfbGlzdCwKLQkJCQkJICBjcGxhbik7CisJCQkJCSAgY3BsYW4s CisJCQkJCSAgcGxhbnNvdXJjZSk7CiAKIAkvKgogCSAqIFNldCB1cCBvcHRpb25zIGZvciBwb3J0 YWwuICBEZWZhdWx0IFNDUk9MTCB0eXBlIGlzIGNob3NlbiB0aGUgc2FtZSB3YXkKQEAgLTI1MDAs NiArMjUwMiw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJ RXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2Ug PSAoQ2FjaGVkUGxhblNvdXJjZSAqKSBsZmlyc3QobGMxKTsKIAkJTGlzdAkgICAqc3RtdF9saXN0 OwogCQlMaXN0Q2VsbCAgICpsYzI7CisJCWludAkJCXF1ZXJ5X2luZGV4ID0gMDsKIAogCQlzcGlj YWxsYmFja2FyZy5xdWVyeSA9IHBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZzsKIApAQCAtMjY5MCwx NCArMjY5MywxNiBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQ SUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJCQlzbmFwID0gSW52YWxpZFNuYXBzaG90Owog CiAJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwKKwkJCQkJCQkJCQljcGxhbiwKIAkJ CQkJCQkJCQlwbGFuc291cmNlLT5xdWVyeV9zdHJpbmcsCiAJCQkJCQkJCQkJc25hcCwgY3Jvc3Nj aGVja19zbmFwc2hvdCwKIAkJCQkJCQkJCQlkZXN0LAogCQkJCQkJCQkJCW9wdGlvbnMtPnBhcmFt cywKIAkJCQkJCQkJCQlfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52LAogCQkJCQkJCQkJCTApOwotCQkJ CXJlcyA9IF9TUElfcHF1ZXJ5KHFkZXNjLCBmaXJlX3RyaWdnZXJzLAotCQkJCQkJCQkgIGNhblNl dFRhZyA/IG9wdGlvbnMtPnRjb3VudCA6IDApOworCisJCQkJcmVzID0gX1NQSV9wcXVlcnkocWRl c2MsIGZpcmVfdHJpZ2dlcnMsIGNhblNldFRhZyA/IG9wdGlvbnMtPnRjb3VudCA6IDAsCisJCQkJ CQkJCSAgcGxhbnNvdXJjZSwgcXVlcnlfaW5kZXgpOwogCQkJCUZyZWVRdWVyeURlc2MocWRlc2Mp OwogCQkJfQogCQkJZWxzZQpAQCAtMjc5NCw2ICsyNzk5LDggQEAgX1NQSV9leGVjdXRlX3BsYW4o U1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQlt eV9yZXMgPSByZXM7CiAJCQkJZ290byBmYWlsOwogCQkJfQorCisJCQlxdWVyeV9pbmRleCsrOwog CQl9CiAKIAkJLyogRG9uZSB3aXRoIHRoaXMgcGxhbiwgc28gcmVsZWFzZSByZWZjb3VudCAqLwpA QCAtMjg3MSw3ICsyODc4LDggQEAgX1NQSV9jb252ZXJ0X3BhcmFtcyhpbnQgbmFyZ3MsIE9pZCAq YXJndHlwZXMsCiB9CiAKIHN0YXRpYyBpbnQKLV9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpCitfU1BJX3BxdWVyeShRdWVy eURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50LAorCQkJ Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgaW50IHF1ZXJ5X2luZGV4KQogewogCWludAkJ CW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3BlcmF0aW9uOwogCWludAkJCWVmbGFnczsKQEAgLTI5 MjcsNyArMjkzNSwxNiBAQCBfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBm aXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQogCWVsc2UKIAkJZWZsYWdzID0gRVhFQ19GTEFH X1NLSVBfVFJJR0dFUlM7CiAKLQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwlp ZiAocXVlcnlEZXNjLT5jcGxhbikKKwl7CisJCUV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKHF1ZXJ5 RGVzYywgZWZsYWdzLCBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7CisJCUFzc2VydChxdWVyeURl c2MtPnBsYW5zdGF0ZSk7CisJfQorCWVsc2UKKwl7CisJCWlmICghRXhlY3V0b3JTdGFydChxdWVy eURlc2MsIGVmbGFncykpCisJCQllbG9nKEVSUk9SLCAiRXhlY3V0b3JTdGFydCgpIGZhaWxlZCB1 bmV4cGVjdGVkbHkiKTsKKwl9CiAKIAlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRTY2Fu RGlyZWN0aW9uLCB0Y291bnQpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggNTY1NTM0OGEyZTIuLmY2 MGYyNzg1YmMxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIv c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0xMjI0LDYgKzEyMjQsNyBAQCBleGVjX3Np bXBsZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcpCiAJCQkJCQkgIHF1ZXJ5X3N0cmlu ZywKIAkJCQkJCSAgY29tbWFuZFRhZywKIAkJCQkJCSAgcGxhbnRyZWVfbGlzdCwKKwkJCQkJCSAg TlVMTCwKIAkJCQkJCSAgTlVMTCk7CiAKIAkJLyoKQEAgLTIwMjUsNyArMjAyNiw4IEBAIGV4ZWNf YmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkJCQkJICBxdWVyeV9zdHJp bmcsCiAJCQkJCSAgcHNyYy0+Y29tbWFuZFRhZywKIAkJCQkJICBjcGxhbi0+c3RtdF9saXN0LAot CQkJCQkgIGNwbGFuKTsKKwkJCQkJICBjcGxhbiwKKwkJCQkJICBwc3JjKTsKIAogCS8qIERvbmUg d2l0aCB0aGUgc25hcHNob3QgdXNlZCBmb3IgcGFyYW1ldGVyIEkvTyBhbmQgcGFyc2luZy9wbGFu bmluZyAqLwogCWlmIChzbmFwc2hvdF9zZXQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29w L3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwppbmRleCA2ZjIyNDk2MzA1YS4u ZGVhMjQ0NTNhNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIv c3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAi YWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCisjaW5jbHVkZSAi ZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJleGVjdXRvci90c3RvcmVSZWNlaXZlci5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCkBAIC0zNiw2 ICszNyw5IEBAIFBvcnRhbAkJQWN0aXZlUG9ydGFsID0gTlVMTDsKIAogCiBzdGF0aWMgdm9pZCBQ cm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJCQkJCQkgQ2FjaGVkUGxhbiAqY3BsYW4s CisJCQkJCQkgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKKwkJCQkJCSBpbnQgcXVlcnlf aW5kZXgsCiAJCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCSBQYXJhbUxpc3RJ bmZvIHBhcmFtcywKIAkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTY1LDYg KzY5LDcgQEAgc3RhdGljIHZvaWQgRG9Qb3J0YWxSZXdpbmQoUG9ydGFsIHBvcnRhbCk7CiAgKi8K IFF1ZXJ5RGVzYyAqCiBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LAor CQkJCUNhY2hlZFBsYW4gKmNwbGFuLAogCQkJCWNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJ U25hcHNob3Qgc25hcHNob3QsCiAJCQkJU25hcHNob3QgY3Jvc3NjaGVja19zbmFwc2hvdCwKQEAg LTc3LDYgKzgyLDcgQEAgQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwK IAogCXFkLT5vcGVyYXRpb24gPSBwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGU7CS8qIG9wZXJhdGlv biAqLwogCXFkLT5wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwkvKiBwbGFuICovCisJcWQtPmNw bGFuID0gY3BsYW47CQkJLyogQ2FjaGVkUGxhbiBzdXBwbHlpbmcgdGhlIHBsYW5uZWRzdG10ICov CiAJcWQtPnNvdXJjZVRleHQgPSBzb3VyY2VUZXh0OwkvKiBxdWVyeSB0ZXh0ICovCiAJcWQtPnNu YXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CS8qIHNuYXBzaG90ICovCiAJLyog UkkgY2hlY2sgc25hcHNob3QgKi8KQEAgLTEyMiw2ICsxMjgsOSBAQCBGcmVlUXVlcnlEZXNjKFF1 ZXJ5RGVzYyAqcWRlc2MpCiAgKgkJUE9SVEFMX09ORV9SRVRVUk5JTkcsIG9yIFBPUlRBTF9PTkVf TU9EX1dJVEggcG9ydGFsCiAgKgogICoJcGxhbjogdGhlIHBsYW4gdHJlZSBmb3IgdGhlIHF1ZXJ5 CisgKgljcGxhbjogQ2FjaGVkUGxhbiBzdXBwbHlpbmcgdGhlIHBsYW4KKyAqCXBsYW5zb3VyY2U6 IENhY2hlZFBsYW5Tb3VyY2Ugc3VwcGx5aW5nIHRoZSBjcGxhbgorICoJcXVlcnlfaW5kZXg6IGlu ZGV4IG9mIHRoZSBxdWVyeSBpbiBwbGFuc291cmNlLT5xdWVyeV9saXN0CiAgKglzb3VyY2VUZXh0 OiB0aGUgc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5CiAgKglwYXJhbXM6IGFueSBwYXJhbWV0ZXJz IG5lZWRlZAogICoJZGVzdDogd2hlcmUgdG8gc2VuZCByZXN1bHRzCkBAIC0xMzQsNiArMTQzLDkg QEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQogICovCiBzdGF0aWMgdm9pZAogUHJv Y2Vzc1F1ZXJ5KFBsYW5uZWRTdG10ICpwbGFuLAorCQkJIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJ IENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCisJCQkgaW50IHF1ZXJ5X2luZGV4LAogCQkJ IGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkg UXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCkBAIC0xNDUsMTQgKzE1NywyMyBAQCBQcm9jZXNz UXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCiAJLyoKIAkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYyBv YmplY3QKIAkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgc291cmNlVGV4 dCwKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgY3BsYW4sIHNvdXJjZVRleHQs CiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJ ZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7CiAKIAkvKgotCSAqIENhbGwgRXhlY3V0b3JTdGFy dCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KKwkgKiBQcmVwYXJlIHRoZSBwbGFu IGZvciBleGVjdXRpb24KIAkgKi8KLQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7CisJaWYg KHF1ZXJ5RGVzYy0+Y3BsYW4pCisJeworCQlFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbihxdWVyeURl c2MsIDAsIHBsYW5zb3VyY2UsIHF1ZXJ5X2luZGV4KTsKKwkJQXNzZXJ0KHF1ZXJ5RGVzYy0+cGxh bnN0YXRlKTsKKwl9CisJZWxzZQorCXsKKwkJaWYgKCFFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywg MCkpCisJCQllbG9nKEVSUk9SLCAiRXhlY3V0b3JTdGFydCgpIGZhaWxlZCB1bmV4cGVjdGVkbHki KTsKKwl9CiAKIAkvKgogCSAqIFJ1biB0aGUgcGxhbiB0byBjb21wbGV0aW9uLgpAQCAtNDkzLDYg KzUxNCw3IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1z LAogCQkJCSAqIHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkgKi8KIAkJCQlxdWVy eURlc2MgPSBDcmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFs LT5zdG10cyksCisJCQkJCQkJCQkJCXBvcnRhbC0+Y3BsYW4sCiAJCQkJCQkJCQkJCXBvcnRhbC0+ c291cmNlVGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJ SW52YWxpZFNuYXBzaG90LApAQCAtNTEyLDkgKzUzNCwxOSBAQCBQb3J0YWxTdGFydChQb3J0YWwg cG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJbXllZmxhZ3MgPSBlZmxhZ3M7CiAK IAkJCQkvKgotCQkJCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZv ciBleGVjdXRpb24KKwkJCQkgKiBQcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24uCiAJCQkJ ICovCi0JCQkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKTsKKwkJCQlpZiAocG9y dGFsLT5jcGxhbikKKwkJCQl7CisJCQkJCUV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKHF1ZXJ5RGVz YywgbXllZmxhZ3MsCisJCQkJCQkJCQkJCXBvcnRhbC0+cGxhbnNvdXJjZSwgMCk7CisJCQkJCUFz c2VydChxdWVyeURlc2MtPnBsYW5zdGF0ZSk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJ CWlmICghRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKSkKKwkJCQkJCWVsb2coRVJS T1IsICJFeGVjdXRvclN0YXJ0KCkgZmFpbGVkIHVuZXhwZWN0ZWRseSIpOworCQkJCX0KIAogCQkJ CS8qCiAJCQkJICogVGhpcyB0ZWxscyBQb3J0YWxDbGVhbnVwIHRvIHNodXQgZG93biB0aGUgZXhl Y3V0b3IKQEAgLTExODgsNiArMTIyMCw3IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWws CiB7CiAJYm9vbAkJYWN0aXZlX3NuYXBzaG90X3NldCA9IGZhbHNlOwogCUxpc3RDZWxsICAgKnN0 bXRsaXN0X2l0ZW07CisJaW50CQkJcXVlcnlfaW5kZXggPSAwOwogCiAJLyoKIAkgKiBJZiB0aGUg ZGVzdGluYXRpb24gaXMgRGVzdFJlbW90ZUV4ZWN1dGUsIGNoYW5nZSB0byBEZXN0Tm9uZS4gIFRo ZQpAQCAtMTI2OSw2ICsxMzAyLDkgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJ CXsKIAkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5nICovCiAJCQkJUHJvY2Vzc1F1 ZXJ5KHBzdG10LAorCQkJCQkJCSBwb3J0YWwtPmNwbGFuLAorCQkJCQkJCSBwb3J0YWwtPnBsYW5z b3VyY2UsCisJCQkJCQkJIHF1ZXJ5X2luZGV4LAogCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQs CiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52 LApAQCAtMTI3OCw2ICsxMzE0LDkgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJ CXsKIAkJCQkvKiBzdG10IGFkZGVkIGJ5IHJld3JpdGUgY2Fubm90IHNldCB0YWcgKi8KIAkJCQlQ cm9jZXNzUXVlcnkocHN0bXQsCisJCQkJCQkJIHBvcnRhbC0+Y3BsYW4sCisJCQkJCQkJIHBvcnRh bC0+cGxhbnNvdXJjZSwKKwkJCQkJCQkgcXVlcnlfaW5kZXgsCiAJCQkJCQkJIHBvcnRhbC0+c291 cmNlVGV4dCwKIAkJCQkJCQkgcG9ydGFsLT5wb3J0YWxQYXJhbXMsCiAJCQkJCQkJIHBvcnRhbC0+ cXVlcnlFbnYsCkBAIC0xMzQyLDYgKzEzODEsOCBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9y dGFsLAogCQkgKi8KIAkJaWYgKGxuZXh0KHBvcnRhbC0+c3RtdHMsIHN0bXRsaXN0X2l0ZW0pICE9 IE5VTEwpCiAJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJCXF1ZXJ5X2luZGV4Kys7 CiAJfQogCiAJLyogUG9wIHRoZSBzbmFwc2hvdCBpZiB3ZSBwdXNoZWQgb25lLiAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCA1NWRiOGY1MzcwNS4uNzE4MzlkY2ExMDggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBAIC0xMDEsNyArMTAxLDggQEAgc3RhdGlj IGRsaXN0X2hlYWQgY2FjaGVkX2V4cHJlc3Npb25fbGlzdCA9IERMSVNUX1NUQVRJQ19JTklUKGNh Y2hlZF9leHByZXNzaW9uX2wKIAogc3RhdGljIHZvaWQgUmVsZWFzZUdlbmVyaWNQbGFuKENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogc3RhdGljIExpc3QgKlJldmFsaWRhdGVDYWNoZWRR dWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAotCQkJCQkJCQkgICBRdWVyeUVudmly b25tZW50ICpxdWVyeUVudik7CisJCQkJCQkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52 LAorCQkJCQkJCQkgICBib29sIHJlbGVhc2VfZ2VuZXJpYyk7CiBzdGF0aWMgYm9vbCBDaGVja0Nh Y2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgQ2FjaGVkUGxh biAqQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFs aXN0LAogCQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudik7CkBAIC01NzgsMTAgKzU3OSwxNyBAQCBSZWxlYXNlR2VuZXJpY1BsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKICAqIFRoZSByZXN1bHQgdmFsdWUgaXMgdGhl IHRyYW5zaWVudCBhbmFseXplZC1hbmQtcmV3cml0dGVuIHF1ZXJ5IHRyZWUgaWYgd2UKICAqIGhh ZCB0byBkbyByZS1hbmFseXNpcywgYW5kIE5JTCBvdGhlcndpc2UuICAoVGhpcyBpcyByZXR1cm5l ZCBqdXN0IHRvIHNhdmUKICAqIGEgdHJlZSBjb3B5aW5nIHN0ZXAgaW4gYSBzdWJzZXF1ZW50IEJ1 aWxkQ2FjaGVkUGxhbiBjYWxsLikKKyAqCisgKiBUaGlzIGFsc28gcmVsZWFzZXMgYW5kIGRyb3Bz IHRoZSBnZW5lcmljIHBsYW4gKHBsYW5zb3VyY2UtPmdwbGFuKSwgaWYgYW55LAorICogYXMgbW9z dCBjYWxsZXJzIHdpbGwgdHlwaWNhbGx5IGJ1aWxkIGEgbmV3IENhY2hlZFBsYW4gZm9yIHRoZSBw bGFuc291cmNlCisgKiByaWdodCBhZnRlciB0aGlzLiBIb3dldmVyLCB3aGVuIGNhbGxlZCBmcm9t IFVwZGF0ZUNhY2hlZFBsYW4oKSwgdGhlCisgKiBmdW5jdGlvbiBkb2VzIG5vdCByZWxlYXNlIHRo ZSBnZW5lcmljIHBsYW4sIGFzIFVwZGF0ZUNhY2hlZFBsYW4oKSB1cGRhdGVzCisgKiBhbiBleGlz dGluZyBDYWNoZWRQbGFuIGluIHBsYWNlLgogICovCiBzdGF0aWMgTGlzdCAqCiBSZXZhbGlkYXRl Q2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKLQkJCQkJICBRdWVyeUVu dmlyb25tZW50ICpxdWVyeUVudikKKwkJCQkJICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwK KwkJCQkJICBib29sIHJlbGVhc2VfZ2VuZXJpYykKIHsKIAlib29sCQlzbmFwc2hvdF9zZXQ7CiAJ UmF3U3RtdCAgICAqcmF3dHJlZTsKQEAgLTY3OCw4ICs2ODYsOSBAQCBSZXZhbGlkYXRlQ2FjaGVk UXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJTWVtb3J5Q29udGV4dERlbGV0 ZShxY3h0KTsKIAl9CiAKLQkvKiBEcm9wIHRoZSBnZW5lcmljIHBsYW4gcmVmZXJlbmNlIGlmIGFu eSAqLwotCVJlbGVhc2VHZW5lcmljUGxhbihwbGFuc291cmNlKTsKKwkvKiBEcm9wIHRoZSBnZW5l cmljIHBsYW4gcmVmZXJlbmNlLCBpZiBhbnksIGFuZCBpZiByZXF1ZXN0ZWQgKi8KKwlpZiAocmVs ZWFzZV9nZW5lcmljKQorCQlSZWxlYXNlR2VuZXJpY1BsYW4ocGxhbnNvdXJjZSk7CiAKIAkvKgog CSAqIE5vdyByZS1kbyBwYXJzZSBhbmFseXNpcyBhbmQgcmV3cml0ZS4gIFRoaXMgbm90IGluY2lk ZW50YWxseSBhY3F1aXJlcwpAQCAtODE1LDggKzgyNCwxMSBAQCBSZXZhbGlkYXRlQ2FjaGVkUXVl cnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKICAqIENhbGxlciBtdXN0IGhhdmUgYWxy ZWFkeSBjYWxsZWQgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5IHRvIHZlcmlmeSB0aGF0IHRoZQogICog cXVlcnl0cmVlIGlzIHVwIHRvIGRhdGUuCiAgKgotICogT24gYSAidHJ1ZSIgcmV0dXJuLCB3ZSBo YXZlIGFjcXVpcmVkIHRoZSBsb2NrcyBuZWVkZWQgdG8gcnVuIHRoZSBwbGFuLgotICogKFdlIG11 c3QgZG8gdGhpcyBmb3IgdGhlICJ0cnVlIiByZXN1bHQgdG8gYmUgcmFjZS1jb25kaXRpb24tZnJl ZS4pCisgKiBPbiBhICJ0cnVlIiByZXR1cm4sIHdlIGhhdmUgYWNxdWlyZWQgbG9ja3Mgb24gdGhl ICJ1bnBydW5hYmxlUmVsaWRzIiBzZXQKKyAqIGZvciBhbGwgcGxhbnMgaW4gcGxhbnNvdXJjZS0+ c3RtdF9saXN0LiBIb3dldmVyLCB0aGUgcGxhbnMgYXJlIG5vdCBmdWxseQorICogcmFjZS1jb25k aXRpb24tZnJlZSB1bnRpbCB0aGUgZXhlY3V0b3IgYWNxdWlyZXMgbG9ja3Mgb24gdGhlIHBydW5h YmxlCisgKiByZWxhdGlvbnMgdGhhdCBzdXJ2aXZlIGluaXRpYWwgcnVudGltZSBwcnVuaW5nIGR1 cmluZyBleGVjdXRvcgorICogaW5pdGlhbGl6YXRpb24uCiAgKi8KIHN0YXRpYyBib29sCiBDaGVj a0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKQEAgLTg3MCw3ICs4ODIs MTEgQEAgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAJCSAq LwogCQlpZiAocGxhbi0+aXNfdmFsaWQpCiAJCXsKLQkJCS8qIFN1Y2Nlc3NmdWxseSByZXZhbGlk YXRlZCBhbmQgbG9ja2VkIHRoZSBxdWVyeS4gKi8KKwkJCS8qCisJCQkgKiBTdWNjZXNzZnVsbHkg cmV2YWxpZGF0ZWQgYW5kIGxvY2tlZCB0aGUgcXVlcnkuICBTZXQgaXNfcmV1c2VkCisJCQkgKiB0 byB0cnVlIHNvIHRoYXQgQ2FjaGVkUGxhblJlcXVpcmVzTG9ja2luZygpIHJldHVybnMgdHJ1ZS4K KwkJCSAqLworCQkJcGxhbi0+aXNfcmV1c2VkID0gdHJ1ZTsKIAkJCXJldHVybiB0cnVlOwogCQl9 CiAKQEAgLTg5NSwxMiArOTExLDE0IEBAIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlKQogICogVG8gYnVpbGQgYSBnZW5lcmljLCBwYXJhbWV0ZXItdmFsdWUtaW5k ZXBlbmRlbnQgcGxhbiwgcGFzcyBOVUxMIGZvcgogICogYm91bmRQYXJhbXMuICBUbyBidWlsZCBh IGN1c3RvbSBwbGFuLCBwYXNzIHRoZSBhY3R1YWwgcGFyYW1ldGVyIHZhbHVlcyB2aWEKICAqIGJv dW5kUGFyYW1zLiAgRm9yIGJlc3QgZWZmZWN0LCB0aGUgUEFSQU1fRkxBR19DT05TVCBmbGFnIHNo b3VsZCBiZSBzZXQgb24KLSAqIGVhY2ggcGFyYW1ldGVyIHZhbHVlOyBvdGhlcndpc2UgdGhlIHBs YW5uZXIgd2lsbCB0cmVhdCB0aGUgdmFsdWUgYXMgYQotICogaGludCByYXRoZXIgdGhhbiBhIGhh cmQgY29uc3RhbnQuCisgKiBlYWNoIHBhcmFtZXRlciB2YWx1ZTsgb3RoZXJ3aXNlIHRoZSBwbGFu bmVyIHdpbGwgdHJlYXQgdGhlIHZhbHVlIGFzIGEgaGludAorICogcmF0aGVyIHRoYW4gYSBoYXJk IGNvbnN0YW50LgogICoKICAqIFBsYW5uaW5nIHdvcmsgaXMgZG9uZSBpbiB0aGUgY2FsbGVyJ3Mg bWVtb3J5IGNvbnRleHQuICBUaGUgZmluaXNoZWQgcGxhbgogICogaXMgaW4gYSBjaGlsZCBtZW1v cnkgY29udGV4dCwgd2hpY2ggdHlwaWNhbGx5IHNob3VsZCBnZXQgcmVwYXJlbnRlZAogICogKHVu bGVzcyB0aGlzIGlzIGEgb25lLXNob3QgcGxhbiwgaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCBjb3B5 IHRoZSBwbGFuKS4KKyAqCisgKiBOb3RlOiBXaGVuIGNoYW5naW5nIHRoaXMsIHlvdSBzaG91bGQg YWxzbyBsb29rIGF0IFVwZGF0ZUNhY2hlZFBsYW4oKS4KICAqLwogc3RhdGljIENhY2hlZFBsYW4g KgogQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFs aXN0LApAQCAtOTExLDYgKzkyOSw3IEBAIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAlib29sCQlzbmFwc2hvdF9zZXQ7CiAJYm9vbAkJ aXNfdHJhbnNpZW50OwogCU1lbW9yeUNvbnRleHQgcGxhbl9jb250ZXh0OworCU1lbW9yeUNvbnRl eHQgc3RtdF9jb250ZXh0ID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dCA9IEN1cnJlbnRN ZW1vcnlDb250ZXh0OwogCUxpc3RDZWxsICAgKmxjOwogCkBAIC05MjgsNyArOTQ3LDcgQEAgQnVp bGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAog CSAqIGxldCdzIHRyZWF0IGl0IGFzIHJlYWwgYW5kIHJlZG8gdGhlIFJldmFsaWRhdGVDYWNoZWRR dWVyeSBjYWxsLgogCSAqLwogCWlmICghcGxhbnNvdXJjZS0+aXNfdmFsaWQpCi0JCXFsaXN0ID0g UmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KHBsYW5zb3VyY2UsIHF1ZXJ5RW52KTsKKwkJcWxpc3QgPSBS ZXZhbGlkYXRlQ2FjaGVkUXVlcnkocGxhbnNvdXJjZSwgcXVlcnlFbnYsIHRydWUpOwogCiAJLyoK IAkgKiBJZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgYSBjb3B5IG9mIHRoZSBxdWVyeXRyZWUgbGlz dCB0aGF0IGNhbiBiZQpAQCAtOTY3LDEwICs5ODYsMTkgQEAgQnVpbGRDYWNoZWRQbGFuKENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCQlQb3BBY3RpdmVTbmFwc2hv dCgpOwogCiAJLyoKLQkgKiBOb3JtYWxseSB3ZSBtYWtlIGEgZGVkaWNhdGVkIG1lbW9yeSBjb250 ZXh0IGZvciB0aGUgQ2FjaGVkUGxhbiBhbmQgaXRzCi0JICogc3Vic2lkaWFyeSBkYXRhLiAgKEl0 J3MgcHJvYmFibHkgbm90IGdvaW5nIHRvIGJlIGxhcmdlLCBidXQganVzdCBpbgotCSAqIGNhc2Us IGFsbG93IGl0IHRvIGdyb3cgbGFyZ2UuICBJdCdzIHRyYW5zaWVudCBmb3IgdGhlIG1vbWVudC4p ICBCdXQgZm9yCi0JICogYSBvbmUtc2hvdCBwbGFuLCB3ZSBqdXN0IGxlYXZlIGl0IGluIHRoZSBj YWxsZXIncyBtZW1vcnkgY29udGV4dC4KKwkgKiBOb3JtYWxseSwgd2UgY3JlYXRlIGEgZGVkaWNh dGVkIG1lbW9yeSBjb250ZXh0IGZvciB0aGUgQ2FjaGVkUGxhbiBhbmQKKwkgKiBpdHMgc3Vic2lk aWFyeSBkYXRhLiBBbHRob3VnaCBpdCdzIHVzdWFsbHkgbm90IHZlcnkgbGFyZ2UsIHRoZSBjb250 ZXh0CisJICogaXMgZGVzaWduZWQgdG8gYWxsb3cgZ3Jvd3RoIGlmIG5lY2Vzc2FyeS4KKwkgKgor CSAqIFRoZSBQbGFubmVkU3RtdHMgYXJlIHN0b3JlZCBpbiBhIHNlcGFyYXRlIGNoaWxkIGNvbnRl eHQgKHN0bXRfY29udGV4dCkKKwkgKiBvZiB0aGUgQ2FjaGVkUGxhbidzIG1lbW9yeSBjb250ZXh0 LiBUaGlzIHNlcGFyYXRpb24gYWxsb3dzCisJICogVXBkYXRlQ2FjaGVkUGxhbigpIHRvIGZyZWUg YW5kIHJlcGxhY2UgdGhlIFBsYW5uZWRTdG10cyB3aXRob3V0CisJICogYWZmZWN0aW5nIHRoZSBD YWNoZWRQbGFuIHN0cnVjdHVyZSBvciBpdHMgc3RtdF9saXN0IExpc3QuCisJICoKKwkgKiBGb3Ig b25lLXNob3QgcGxhbnMsIHdlIGluc3RlYWQgdXNlIHRoZSBjYWxsZXIncyBtZW1vcnkgY29udGV4 dCwgYXMgdGhlCisJICogQ2FjaGVkUGxhbiB3aWxsIG5vdCBwZXJzaXN0LiAgc3RtdF9jb250ZXh0 IHdpbGwgYmUgc2V0IHRvIE5VTEwgaW4gdGhpcworCSAqIGNhc2UsIGJlY2F1c2UgVXBkYXRlQ2Fj aGVkUGxhbigpIHNob3VsZCBuZXZlciBnZXQgY2FsbGVkIG9uIGEgb25lLXNob3QKKwkgKiBwbGFu LgogCSAqLwogCWlmICghcGxhbnNvdXJjZS0+aXNfb25lc2hvdCkKIAl7CkBAIC05NzksMTIgKzEw MDcsMTcgQEAgQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExp c3QgKnFsaXN0LAogCQkJCQkJCQkJCQkgQUxMT0NTRVRfU1RBUlRfU01BTExfU0laRVMpOwogCQlN ZW1vcnlDb250ZXh0Q29weUFuZFNldElkZW50aWZpZXIocGxhbl9jb250ZXh0LCBwbGFuc291cmNl LT5xdWVyeV9zdHJpbmcpOwogCi0JCS8qCi0JCSAqIENvcHkgcGxhbiBpbnRvIHRoZSBuZXcgY29u dGV4dC4KLQkJICovCi0JCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwbGFuX2NvbnRleHQpOworCQlz dG10X2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQ3VycmVudE1lbW9yeUNvbnRleHQs CisJCQkJCQkJCQkJCSAiQ2FjaGVkUGxhbiBQbGFubmVkU3RtdHMiLAorCQkJCQkJCQkJCQkgQUxM T0NTRVRfU1RBUlRfU01BTExfU0laRVMpOworCQlNZW1vcnlDb250ZXh0Q29weUFuZFNldElkZW50 aWZpZXIoc3RtdF9jb250ZXh0LCBwbGFuc291cmNlLT5xdWVyeV9zdHJpbmcpOworCQlNZW1vcnlD b250ZXh0U2V0UGFyZW50KHN0bXRfY29udGV4dCwgcGxhbl9jb250ZXh0KTsKIAorCQlNZW1vcnlD b250ZXh0U3dpdGNoVG8oc3RtdF9jb250ZXh0KTsKIAkJcGxpc3QgPSBjb3B5T2JqZWN0KHBsaXN0 KTsKKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxhbl9jb250ZXh0KTsKKwkJcGxpc3QgPSBs aXN0X2NvcHkocGxpc3QpOwogCX0KIAllbHNlCiAJCXBsYW5fY29udGV4dCA9IEN1cnJlbnRNZW1v cnlDb250ZXh0OwpAQCAtMTAyNSw4ICsxMDU4LDEwIEBAIEJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAkJcGxhbi0+c2F2ZWRfeG1pbiA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwogCXBsYW4tPnJlZmNvdW50ID0gMDsKIAlwbGFuLT5jb250 ZXh0ID0gcGxhbl9jb250ZXh0OworCXBsYW4tPnN0bXRfY29udGV4dCA9IHN0bXRfY29udGV4dDsK IAlwbGFuLT5pc19vbmVzaG90ID0gcGxhbnNvdXJjZS0+aXNfb25lc2hvdDsKIAlwbGFuLT5pc19z YXZlZCA9IGZhbHNlOworCXBsYW4tPmlzX3JldXNlZCA9IGZhbHNlOwogCXBsYW4tPmlzX3ZhbGlk ID0gdHJ1ZTsKIAogCS8qIGFzc2lnbiBnZW5lcmF0aW9uIG51bWJlciB0byBuZXcgcGxhbiAqLwpA QCAtMTE1Myw4ICsxMTg4LDExIEBAIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwg Ym9vbCBpbmNsdWRlX3BsYW5uZXIpCiAgKiBwbGFuIG9yIGEgY3VzdG9tIHBsYW4gZm9yIHRoZSBn aXZlbiBwYXJhbWV0ZXJzOiB0aGUgY2FsbGVyIGRvZXMgbm90IGtub3cKICAqIHdoaWNoIGl0IHdp bGwgZ2V0LgogICoKLSAqIE9uIHJldHVybiwgdGhlIHBsYW4gaXMgdmFsaWQgYW5kIHdlIGhhdmUg c3VmZmljaWVudCBsb2NrcyB0byBiZWdpbgotICogZXhlY3V0aW9uLgorICogT24gcmV0dXJuLCB0 aGUgcGxhbiBpcyB2YWxpZCwgYnV0IG5vdCBhbGwgbG9ja3MgYXJlIGFjcXVpcmVkIGlmIHRoZQor ICogcmV0dXJuZWQgcGxhbiBpcyBhIHJldXNlZCBnZW5lcmljIHBsYW4uICBJbiBzdWNoIGNhc2Vz LCBsb2NrcyBvbiByZWxhdGlvbnMKKyAqIHN1YmplY3QgdG8gaW5pdGlhbCBydW50aW1lIHBydW5p bmcgYXJlIG5vdCB0YWtlbiBieSBDaGVja0NhY2hlZFBsYW4oKSBidXQKKyAqIGRlZmVycmVkIHVu dGlsIHRoZSBleGVjdXRpb24gc3RhcnR1cCBwaGFzZSwgc3BlY2lmaWNhbGx5IHdoZW4KKyAqIEV4 ZWNEb0luaXRpYWxQcnVuaW5nKCkgcGVyZm9ybXMgaW5pdGlhbCBwcnVuaW5nLgogICoKICAqIE9u IHJldHVybiwgdGhlIHJlZmNvdW50IG9mIHRoZSBwbGFuIGhhcyBiZWVuIGluY3JlbWVudGVkOyBh IGxhdGVyCiAgKiBSZWxlYXNlQ2FjaGVkUGxhbigpIGNhbGwgaXMgZXhwZWN0ZWQuICBJZiAib3du ZXIiIGlzIG5vdCBOVUxMIHRoZW4KQEAgLTExODAsNyArMTIxOCw3IEBAIEdldENhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywK IAkJZWxvZyhFUlJPUiwgImNhbm5vdCBhcHBseSBSZXNvdXJjZU93bmVyIHRvIG5vbi1zYXZlZCBj YWNoZWQgcGxhbiIpOwogCiAJLyogTWFrZSBzdXJlIHRoZSBxdWVyeXRyZWUgbGlzdCBpcyB2YWxp ZCBhbmQgd2UgaGF2ZSBwYXJzZS10aW1lIGxvY2tzICovCi0JcWxpc3QgPSBSZXZhbGlkYXRlQ2Fj aGVkUXVlcnkocGxhbnNvdXJjZSwgcXVlcnlFbnYpOworCXFsaXN0ID0gUmV2YWxpZGF0ZUNhY2hl ZFF1ZXJ5KHBsYW5zb3VyY2UsIHF1ZXJ5RW52LCB0cnVlKTsKIAogCS8qIERlY2lkZSB3aGV0aGVy IHRvIHVzZSBhIGN1c3RvbSBwbGFuICovCiAJY3VzdG9tcGxhbiA9IGNob29zZV9jdXN0b21fcGxh bihwbGFuc291cmNlLCBib3VuZFBhcmFtcyk7CkBAIC0xMjc2LDYgKzEzMTQsMTEzIEBAIEdldENh Y2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3Vu ZFBhcmFtcywKIAlyZXR1cm4gcGxhbjsKIH0KIAorLyoKKyAqIFVwZGF0ZUNhY2hlZFBsYW4KKyAq CQlDcmVhdGUgZnJlc2ggcGxhbnMgZm9yIGFsbCBxdWVyaWVzIGluIHRoZSBDYWNoZWRQbGFuU291 cmNlLCByZXBsYWNpbmcKKyAqCQl0aG9zZSBpbiB0aGUgZ2VuZXJpYyBwbGFuJ3Mgc3RtdF9saXN0 LCBhbmQgcmV0dXJuIHRoZSBwbGFuIGZvciB0aGUKKyAqCQlxdWVyeV9pbmRleCd0aCBxdWVyeS4K KyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHByaW1hcmlseSB1c2VkIGJ5IEV4ZWN1dG9yU3RhcnRD YWNoZWRQbGFuKCkgdG8gaGFuZGxlCisgKiBjYXNlcyB3aGVyZSB0aGUgb3JpZ2luYWwgZ2VuZXJp YyBDYWNoZWRQbGFuIGJlY29tZXMgaW52YWxpZC4gU3VjaAorICogaW52YWxpZGF0aW9uIG1heSBv Y2N1ciB3aGVuIHBydW5hYmxlIHJlbGF0aW9ucyBpbiB0aGUgb2xkIHBsYW4gZm9yIHRoZQorICog cXVlcnlfaW5kZXgndGggcXVlcnkgYXJlIGxvY2tlZCBpbiBwcmVwYXJhdGlvbiBmb3IgZXhlY3V0 aW9uLgorICoKKyAqIE5vdGUgdGhhdCBpbnZhbGlkYXRpb25zIHJlY2VpdmVkIGR1cmluZyB0aGUg ZXhlY3V0aW9uIG9mIHRoZSBxdWVyeV9pbmRleCd0aAorICogcXVlcnkgY2FuIGFmZmVjdCBib3Ro IHRoZSBxdWVyaWVzIHRoYXQgaGF2ZSBhbHJlYWR5IGZpbmlzaGVkIGV4ZWN1dGlvbgorICogKGUu Zy4sIGR1ZSB0byBjb25jdXJyZW50IG1vZGlmaWNhdGlvbnMgb24gcHJ1bmFibGUgcmVsYXRpb25z IHRoYXQgd2VyZSBub3QKKyAqIGxvY2tlZCBkdXJpbmcgdGhlaXIgZXhlY3V0aW9uKSBhbmQgYWxz byB0aGUgcXVlcmllcyB0aGF0IGhhdmUgbm90IHlldCBiZWVuCisgKiBleGVjdXRlZC4gIEFzIGEg cmVzdWx0LCB0aGlzIGZ1bmN0aW9uIHVwZGF0ZXMgYWxsIHBsYW5zIHRvIGVuc3VyZQorICogQ2Fj aGVkUGxhbi5pc192YWxpZCBpcyBzYWZlbHkgc2V0IHRvIHRydWUuCisgKgorICogVGhlIG9sZCBQ bGFubmVkU3RtdHMgaW4gcGxhbnNvdXJjZS0+Z3BsYW4tPnN0bXRfbGlzdCBhcmUgZnJlZWQgaGVy ZSwgc28KKyAqIHRoZSBjYWxsZXIgYW5kIGFueSBvZiBpdHMgY2FsbGVycyBtdXN0IG5vdCByZWx5 IG9uIHRoZW0gcmVtYWluaW5nIGFjY2Vzc2libGUKKyAqIGFmdGVyIHRoaXMgZnVuY3Rpb24gaXMg Y2FsbGVkLgorICovCitQbGFubmVkU3RtdCAqCitVcGRhdGVDYWNoZWRQbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UsIGludCBxdWVyeV9pbmRleCwKKwkJCQkgUXVlcnlFbnZpcm9ubWVu dCAqcXVlcnlFbnYpCit7CisJTGlzdAkgICAqcXVlcnlfbGlzdCA9IHBsYW5zb3VyY2UtPnF1ZXJ5 X2xpc3QsCisJCQkgICAqcGxhbl9saXN0OworCUxpc3RDZWxsICAgKmwxLAorCQkJICAgKmwyOwor CUNhY2hlZFBsYW4gKnBsYW4gPSBwbGFuc291cmNlLT5ncGxhbjsKKwlNZW1vcnlDb250ZXh0IG9s ZGN4dDsKKworCUFzc2VydChBY3RpdmVTbmFwc2hvdFNldCgpKTsKKworCS8qIFNhbml0eSBjaGVj a3MgKi8KKwlpZiAocGxhbiA9PSBOVUxMKQorCQllbG9nKEVSUk9SLCAiVXBkYXRlQ2FjaGVkUGxh bigpIGNhbGxlZCBpbiB0aGUgd3JvbmcgY29udGV4dDogcGxhbnNvdXJjZS0+Z3BsYW4gaXMgTlVM TCIpOworCWVsc2UgaWYgKHBsYW4tPmlzX3ZhbGlkKQorCQllbG9nKEVSUk9SLCAiVXBkYXRlQ2Fj aGVkUGxhbigpIGNhbGxlZCBpbiB0aGUgd3JvbmcgY29udGV4dDogcGxhbnNvdXJjZS0+Z3BsYW4t PmlzX3ZhbGlkIGlzIHRydWUiKTsKKwllbHNlIGlmIChwbGFuLT5pc19vbmVzaG90KQorCQllbG9n KEVSUk9SLCAiVXBkYXRlQ2FjaGVkUGxhbigpIGNhbGxlZCBpbiB0aGUgd3JvbmcgY29udGV4dDog cGxhbnNvdXJjZS0+Z3BsYW4tPmlzX29uZXNob3QgaXMgdHJ1ZSIpOworCisJLyoKKwkgKiBUaGUg cGxhbnNvdXJjZSBtaWdodCBoYXZlIGJlY29tZSBpbnZhbGlkIHNpbmNlIEdldENhY2hlZFBsYW4o KSByZXR1cm5lZAorCSAqIHRoZSBDYWNoZWRQbGFuLiBTZWUgdGhlIGNvbW1lbnQgaW4gQnVpbGRD YWNoZWRQbGFuKCkgZm9yIGRldGFpbHMgb24gd2h5CisJICogdGhpcyBtaWdodCBoYXBwZW4uICBB bHRob3VnaCBpbnZhbGlkYXRpb24gaXMgbGlrZWx5IGEgZmFsc2UgcG9zaXRpdmUgYXMKKwkgKiBz dGF0ZWQgdGhlcmUsIHdlIG1ha2UgdGhlIHBsYW4gdmFsaWQgdG8gZW5zdXJlIHRoZSBxdWVyeSBs aXN0IHVzZWQgZm9yCisJICogcGxhbm5pbmcgaXMgdXAgdG8gZGF0ZS4KKwkgKgorCSAqIFRoZSBy aXNrIG9mIGNhdGNoaW5nIGFuIGludmFsaWRhdGlvbiBpcyBoaWdoZXIgaGVyZSB0aGFuIHdoZW4K KwkgKiBCdWlsZENhY2hlZFBsYW4oKSBpcyBjYWxsZWQgZnJvbSBHZXRDYWNoZWRQbGFuKCksIGJl Y2F1c2UgdGhpcyBmdW5jdGlvbgorCSAqIGlzIG5vcm1hbGx5IGNhbGxlZCBsb25nIGFmdGVyIEdl dENhY2hlZFBsYW4oKSByZXR1cm5zIHRoZSBDYWNoZWRQbGFuLAorCSAqIHNvIG11Y2ggbW9yZSBw cm9jZXNzaW5nIGNvdWxkIGhhdmUgb2NjdXJyZWQgaW5jbHVkaW5nIHRoaW5ncyB0aGF0IG1hcmsK KwkgKiB0aGUgQ2FjaGVkUGxhblNvdXJjZSBpbnZhbGlkLgorCSAqCisJICogTm90ZTogRG8gbm90 IHJlbGVhc2UgcGxhbnNvdXJjZS0+Z3BsYW4sIGJlY2F1c2UgdGhlIHVwc3RyZWFtIGNhbGxlcnMK KwkgKiAoc3VjaCBhcyB0aGUgY2FsbGVycyBvZiBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpKSB3 b3VsZCBzdGlsbCBiZQorCSAqIHJlZmVyZW5jaW5nIGl0LgorCSAqLworCWlmICghcGxhbnNvdXJj ZS0+aXNfdmFsaWQpCisJCXF1ZXJ5X2xpc3QgPSBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkocGxhbnNv dXJjZSwgcXVlcnlFbnYsIGZhbHNlKTsKKwlBc3NlcnQocXVlcnlfbGlzdCAhPSBOSUwpOworCisJ LyoKKwkgKiBCdWlsZCBhIG5ldyBnZW5lcmljIHBsYW4gZm9yIGFsbCB0aGUgcXVlcmllcyBhZnRl ciBtYWtpbmcgYSBjb3B5IHRvIGJlCisJICogc2NyaWJibGVkIG9uIGJ5IHRoZSBwbGFubmVyLgor CSAqLworCXF1ZXJ5X2xpc3QgPSBjb3B5T2JqZWN0KHF1ZXJ5X2xpc3QpOworCisJLyoKKwkgKiBQ bGFubmluZyB3b3JrIGlzIGRvbmUgaW4gdGhlIGNhbGxlcidzIG1lbW9yeSBjb250ZXh0LiAgVGhl IHJlc3VsdGluZworCSAqIFBsYW5uZWRTdG10IGlzIHRoZW4gY29waWVkIGludG8gcGxhbi0+c3Rt dF9jb250ZXh0IGFmdGVyIHRocm93aW5nIGF3YXkKKwkgKiB0aGUgb2xkIG9uZXMuCisJICovCisJ cGxhbl9saXN0ID0gcGdfcGxhbl9xdWVyaWVzKHF1ZXJ5X2xpc3QsIHBsYW5zb3VyY2UtPnF1ZXJ5 X3N0cmluZywKKwkJCQkJCQkJcGxhbnNvdXJjZS0+Y3Vyc29yX29wdGlvbnMsIE5VTEwpOworCUFz c2VydChsaXN0X2xlbmd0aChwbGFuX2xpc3QpID09IGxpc3RfbGVuZ3RoKHBsYW4tPnN0bXRfbGlz dCkpOworCisJTWVtb3J5Q29udGV4dFJlc2V0KHBsYW4tPnN0bXRfY29udGV4dCk7CisJb2xkY3h0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBsYW4tPnN0bXRfY29udGV4dCk7CisJZm9yYm90aChs MSwgcGxhbl9saXN0LCBsMiwgcGxhbi0+c3RtdF9saXN0KQorCXsKKwkJUGxhbm5lZFN0bXQgKnBs YW5uZWRzdG10ID0gbGZpcnN0KGwxKTsKKworCQlsZmlyc3QobDIpID0gY29weU9iamVjdChwbGFu bmVkc3RtdCk7CisJfQorCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCisJLyoKKwkg KiBYWFggU2hvdWxkIHRoaXMgYWxzbyAocmUpc2V0IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBDYWNo ZWRQbGFuIHRoYXQgYXJlCisJICogc2V0IGluIEJ1aWxkQ2FjaGVkUGxhbigpIGFmdGVyIGNyZWF0 aW5nIHRoZSBmcmVzaCBwbGFucyBzdWNoIGFzCisJICogcGxhblJvbGVJZCwgZGVwZW5kc09uUm9s ZSwgYW5kIHNhdmVfeG1pbj8KKwkgKi8KKworCS8qCisJICogV2UndmUgdXBkYXRlZCBhbGwgdGhl IHBsYW5zIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIGludmFsaWRhdGVkLCBzbyBtYXJrCisJICogdGhl IENhY2hlZFBsYW4gYXMgdmFsaWQuCisJICovCisJcGxhbi0+aXNfdmFsaWQgPSB0cnVlOworCisJ LyogQWxzbyB1cGRhdGUgZ2VuZXJpY19jb3N0IGJlY2F1c2Ugd2UganVzdCBjcmVhdGVkIGEgbmV3 IGdlbmVyaWMgcGxhbi4gKi8KKwlwbGFuc291cmNlLT5nZW5lcmljX2Nvc3QgPSBjYWNoZWRfcGxh bl9jb3N0KHBsYW4sIGZhbHNlKTsKKworCXJldHVybiBsaXN0X250aF9ub2RlKFBsYW5uZWRTdG10 LCBwbGFuLT5zdG10X2xpc3QsIHF1ZXJ5X2luZGV4KTsKK30KKwogLyoKICAqIFJlbGVhc2VDYWNo ZWRQbGFuOiByZWxlYXNlIGFjdGl2ZSB1c2Ugb2YgYSBjYWNoZWQgcGxhbi4KICAqCkBAIC0xNjU0 LDcgKzE3OTksNyBAQCBDYWNoZWRQbGFuR2V0VGFyZ2V0TGlzdChDYWNoZWRQbGFuU291cmNlICpw bGFuc291cmNlLAogCQlyZXR1cm4gTklMOwogCiAJLyogTWFrZSBzdXJlIHRoZSBxdWVyeXRyZWUg bGlzdCBpcyB2YWxpZCBhbmQgd2UgaGF2ZSBwYXJzZS10aW1lIGxvY2tzICovCi0JUmV2YWxpZGF0 ZUNhY2hlZFF1ZXJ5KHBsYW5zb3VyY2UsIHF1ZXJ5RW52KTsKKwlSZXZhbGlkYXRlQ2FjaGVkUXVl cnkocGxhbnNvdXJjZSwgcXVlcnlFbnYsIHRydWUpOwogCiAJLyogR2V0IHRoZSBwcmltYXJ5IHN0 YXRlbWVudCBhbmQgZmluZCBvdXQgd2hhdCBpdCByZXR1cm5zICovCiAJcHN0bXQgPSBRdWVyeUxp c3RHZXRQcmltYXJ5U3RtdChwbGFuc291cmNlLT5xdWVyeV9saXN0KTsKQEAgLTE3NzYsNyArMTky MSw3IEBAIEFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJl KQogCWZvcmVhY2gobGMxLCBzdG10X2xpc3QpCiAJewogCQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0 bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMxKTsKLQkJTGlzdENlbGwgICAqbGMyOwor CQlpbnQJCQlydGluZGV4OwogCiAJCWlmIChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01E X1VUSUxJVFkpCiAJCXsKQEAgLTE3OTQsMTMgKzE5MzksMTYgQEAgQWNxdWlyZUV4ZWN1dG9yTG9j a3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiAJCQljb250aW51ZTsKIAkJfQogCi0J CWZvcmVhY2gobGMyLCBwbGFubmVkc3RtdC0+cnRhYmxlKQorCQlydGluZGV4ID0gLTE7CisJCXdo aWxlICgocnRpbmRleCA9IGJtc19uZXh0X21lbWJlcihwbGFubmVkc3RtdC0+dW5wcnVuYWJsZVJl bGlkcywKKwkJCQkJCQkJCQkgIHJ0aW5kZXgpKSA+PSAwKQogCQl7Ci0JCQlSYW5nZVRibEVudHJ5 ICpydGUgPSAoUmFuZ2VUYmxFbnRyeSAqKSBsZmlyc3QobGMyKTsKKwkJCVJhbmdlVGJsRW50cnkg KnJ0ZSA9IGxpc3RfbnRoX25vZGUoUmFuZ2VUYmxFbnRyeSwKKwkJCQkJCQkJCQkJICAgcGxhbm5l ZHN0bXQtPnJ0YWJsZSwKKwkJCQkJCQkJCQkJICAgcnRpbmRleCAtIDEpOwogCi0JCQlpZiAoIShy dGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OIHx8Ci0JCQkJICAocnRlLT5ydGVraW5kID09IFJU RV9TVUJRVUVSWSAmJiBPaWRJc1ZhbGlkKHJ0ZS0+cmVsaWQpKSkpCi0JCQkJY29udGludWU7CisJ CQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8fAorCQkJCSAgIChydGUtPnJ0 ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmIE9pZElzVmFsaWQocnRlLT5yZWxpZCkpKTsKIAogCQkJ LyoKIAkJCSAqIEFjcXVpcmUgdGhlIGFwcHJvcHJpYXRlIHR5cGUgb2YgbG9jayBvbiBlYWNoIHJl bGF0aW9uIE9JRC4gTm90ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0 YWxtZW0uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKaW5kZXggMGJlMWMy YjBmZmYuLmUzNTI2ZTc4MDY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3Bv cnRhbG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKQEAgLTI4 NCw3ICsyODQsOCBAQCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwgcG9ydGFsLAogCQkJCSAgY29u c3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkgIENvbW1hbmRUYWcgY29tbWFuZFRhZywKIAkJCQkg IExpc3QgKnN0bXRzLAotCQkJCSAgQ2FjaGVkUGxhbiAqY3BsYW4pCisJCQkJICBDYWNoZWRQbGFu ICpjcGxhbiwKKwkJCQkgIENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiB7CiAJQXNzZXJ0 KFBvcnRhbElzVmFsaWQocG9ydGFsKSk7CiAJQXNzZXJ0KHBvcnRhbC0+c3RhdHVzID09IFBPUlRB TF9ORVcpOwpAQCAtMjk5LDYgKzMwMCw3IEBAIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0 YWwsCiAJcG9ydGFsLT5jb21tYW5kVGFnID0gY29tbWFuZFRhZzsKIAlwb3J0YWwtPnN0bXRzID0g c3RtdHM7CiAJcG9ydGFsLT5jcGxhbiA9IGNwbGFuOworCXBvcnRhbC0+cGxhbnNvdXJjZSA9IHBs YW5zb3VyY2U7CiAJcG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfREVGSU5FRDsKIH0KIApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvZXhwbGFpbi5oCmluZGV4IGVhNzQxOTk1MWY0Li41NzBlN2NhZDFmYSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L2V4cGxhaW4uaApAQCAtMTAzLDggKzEwMywxMCBAQCBleHRlcm4gdm9pZCBFeHBsYWluT25lVXRp bGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywKIAkJCQkJCQkgIEV4cGxh aW5TdGF0ZSAqZXMsIFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkgIFBhcmFtTGlzdEluZm8g cGFyYW1zKTsKIAotZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5u ZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLAotCQkJCQkJICAgRXhwbGFpblN0YXRlICplcywgY29u c3QgY2hhciAqcXVlcnlTdHJpbmcsCitleHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVk U3RtdCAqcGxhbm5lZHN0bXQsIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCQkJICAgQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSwgaW50IHBsYW5faW5kZXgsCisJCQkJCQkgICBJbnRvQ2xhdXNl ICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAorCQkJCQkJICAgY29uc3QgY2hhciAqcXVlcnlTdHJp bmcsCiAJCQkJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVl cnlFbnYsCiAJCQkJCQkgICBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCiAJCQkJCQkg ICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j b21tYW5kcy90cmlnZ2VyLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKaW5kZXgg MmVkMmM0YmIzNzguLjQxODA2MDFkY2Q0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5k cy90cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCkBAIC0yNTgs NiArMjU4LDcgQEAgZXh0ZXJuIHZvaWQgRXhlY0FTVHJ1bmNhdGVUcmlnZ2VycyhFU3RhdGUgKmVz dGF0ZSwKIGV4dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luWGFjdCh2b2lkKTsKIGV4dGVybiB2 b2lkIEFmdGVyVHJpZ2dlckJlZ2luUXVlcnkodm9pZCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdn ZXJFbmRRdWVyeShFU3RhdGUgKmVzdGF0ZSk7CitleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJBYm9y dFF1ZXJ5KHZvaWQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyRmlyZURlZmVycmVkKHZvaWQp OwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyRW5kWGFjdChib29sIGlzQ29tbWl0KTsKIGV4dGVy biB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luU3ViWGFjdCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVz Yy5oCmluZGV4IDg2ZGIzZGM4ZDBkLi5iYTUzMzA1YWQ0MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVz Yy5oCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCS8qIFRoZXNl IGZpZWxkcyBhcmUgcHJvdmlkZWQgYnkgQ3JlYXRlUXVlcnlEZXNjICovCiAJQ21kVHlwZQkJb3Bl cmF0aW9uOwkJLyogQ01EX1NFTEVDVCwgQ01EX1VQREFURSwgZXRjLiAqLwogCVBsYW5uZWRTdG10 ICpwbGFubmVkc3RtdDsJLyogcGxhbm5lcidzIG91dHB1dCAoY291bGQgYmUgdXRpbGl0eSwgdG9v KSAqLworCUNhY2hlZFBsYW4gKmNwbGFuOwkJCS8qIENhY2hlZFBsYW4gdGhhdCBzdXBwbGllcyB0 aGUgcGxhbm5lZHN0bXQgKi8KIAljb25zdCBjaGFyICpzb3VyY2VUZXh0OwkJLyogc291cmNlIHRl eHQgb2YgdGhlIHF1ZXJ5ICovCiAJU25hcHNob3QJc25hcHNob3Q7CQkvKiBzbmFwc2hvdCB0byB1 c2UgZm9yIHF1ZXJ5ICovCiAJU25hcHNob3QJY3Jvc3NjaGVja19zbmFwc2hvdDsJLyogY3Jvc3Nj aGVjayBmb3IgUkkgdXBkYXRlL2RlbGV0ZSAqLwpAQCAtNTcsNiArNTgsNyBAQCB0eXBlZGVmIHN0 cnVjdCBRdWVyeURlc2MKIAogLyogaW4gcHF1ZXJ5LmMgKi8KIGV4dGVybiBRdWVyeURlc2MgKkNy ZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCisJCQkJCQkJCSAgQ2FjaGVk UGxhbiAqY3BsYW4sCiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJ ICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBz aG90LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggZTljY2M0MzhjZGQuLmMwNTViNDQzNmJj IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJu b2Rlcy9sb2Nrb3B0aW9ucy5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKICNpbmNs dWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3BsYW5jYWNoZS5oIgogCiAK IC8qCkBAIC03Miw3ICs3Myw3IEBACiAKIAogLyogSG9vayBmb3IgcGx1Z2lucyB0byBnZXQgY29u dHJvbCBpbiBFeGVjdXRvclN0YXJ0KCkgKi8KLXR5cGVkZWYgdm9pZCAoKkV4ZWN1dG9yU3RhcnRf aG9va190eXBlKSAoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwordHlwZWRlZiBi b29sICgqRXhlY3V0b3JTdGFydF9ob29rX3R5cGUpIChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50 IGVmbGFncyk7CiBleHRlcm4gUEdETExJTVBPUlQgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUgRXhl Y3V0b3JTdGFydF9ob29rOwogCiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9sIGlu IEV4ZWN1dG9yUnVuKCkgKi8KQEAgLTE5MSw4ICsxOTIsMTEgQEAgRXhlY0dldEp1bmtBdHRyaWJ1 dGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEF0dHJOdW1iZXIgYXR0bm8sIGJvb2wgKmlzTnVsbCkK IC8qCiAgKiBwcm90b3R5cGVzIGZyb20gZnVuY3Rpb25zIGluIGV4ZWNNYWluLmMKICAqLwotZXh0 ZXJuIHZvaWQgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7 Ci1leHRlcm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKTsKK2V4dGVybiBib29sIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVy eURlc2MsIGludCBlZmxhZ3MpOworZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFydENhY2hlZFBsYW4o UXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MsCisJCQkJCQkJCQlDYWNoZWRQbGFuU291 cmNlICpwbGFuc291cmNlLAorCQkJCQkJCQkJaW50IHF1ZXJ5X2luZGV4KTsKK2V4dGVybiBib29s IHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp OwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQlT Y2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwgdWludDY0IGNvdW50KTsKIGV4dGVybiB2b2lkIHN0YW5k YXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApAQCAtMjU1LDYgKzI1OSwzMCBA QCBleHRlcm4gdm9pZCBFeGVjRW5kTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQg RXhlY1NodXRkb3duTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1NldFR1 cGxlQm91bmQoaW50NjQgdHVwbGVzX25lZWRlZCwgUGxhblN0YXRlICpjaGlsZF9ub2RlKTsKIAor LyoKKyAqIElzIHRoZSBDYWNoZWRQbGFuIGluIGVzX2NhY2hlZHBsYW4gc3RpbGwgdmFsaWQ/Cisg KgorICogQ2FsbGVkIGZyb20gSW5pdFBsYW4oKSBiZWNhdXNlIGludmFsaWRhdGlvbiBtZXNzYWdl cyB0aGF0IGFmZmVjdCB0aGUgcGxhbgorICogbWlnaHQgYmUgcmVjZWl2ZWQgYWZ0ZXIgbG9ja3Mg aGF2ZSBiZWVuIHRha2VuIG9uIHJ1bnRpbWUtcHJ1bmFibGUgcmVsYXRpb25zLgorICogVGhlIGNh bGxlciBzaG91bGQgdGFrZSBhcHByb3ByaWF0ZSBhY3Rpb24gaWYgdGhlIHBsYW4gaGFzIGJlY29t ZSBpbnZhbGlkLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0V4ZWNQbGFuU3RpbGxWYWxpZChF U3RhdGUgKmVzdGF0ZSkKK3sKKwlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFuID09IE5VTEwg PyB0cnVlIDoKKwkJQ2FjaGVkUGxhblZhbGlkKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbik7Cit9CisK Ky8qCisgKiBMb2NrcyBhcmUgbmVlZGVkIG9ubHkgaWYgcnVubmluZyBhIGNhY2hlZCBwbGFuIHRo YXQgbWlnaHQgY29udGFpbiB1bmxvY2tlZAorICogcmVsYXRpb25zLCBzdWNoIGFzIGEgcmV1c2Vk IGdlbmVyaWMgcGxhbi4KKyAqLworc3RhdGljIGlubGluZSBib29sCitFeGVjU2hvdWxkTG9ja1Jl bGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSkKK3sKKwlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFu ID09IE5VTEwgPyBmYWxzZSA6CisJCUNhY2hlZFBsYW5SZXF1aXJlc0xvY2tpbmcoZXN0YXRlLT5l c19jYWNoZWRwbGFuKTsKK30KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNQcm9jTm9kZQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaAppbmRleCBhMmNiYTk3ZTNkNS4uOTUxOWRjYTM3NGIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFy aWFibGUuaCIKICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvcXVl cnllbnZpcm9ubWVudC5oIgorI2luY2x1ZGUgInV0aWxzL3BsYW5jYWNoZS5oIgogI2luY2x1ZGUg InV0aWxzL3JlbHRyaWdnZXIuaCIKICNpbmNsdWRlICJ1dGlscy9zaGFyZWR0dXBsZXN0b3JlLmgi CiAjaW5jbHVkZSAidXRpbHMvc25hcHNob3QuaCIKQEAgLTY1NSw2ICs2NTYsNyBAQCB0eXBlZGVm IHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCQkgKiBFeGVjUm93TWFya3MsIG9yIE5VTEwgaWYgbm9u ZSAqLwogCUxpc3QJICAgKmVzX3J0ZXBlcm1pbmZvczsJLyogTGlzdCBvZiBSVEVQZXJtaXNzaW9u SW5mbyAqLwogCVBsYW5uZWRTdG10ICplc19wbGFubmVkc3RtdDsJLyogbGluayB0byB0b3Agb2Yg cGxhbiB0cmVlICovCisJQ2FjaGVkUGxhbiAqZXNfY2FjaGVkcGxhbjsJLyogQ2FjaGVkUGxhbiBw cm92aWRpbmcgdGhlIHBsYW4gdHJlZSAqLwogCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfaW5mb3M7 CS8qIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvICovCiAJTGlzdAkgICAqZXNfcGFydF9wcnVu ZV9zdGF0ZXM7CS8qIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqLwogCUxpc3QJICAgKmVz X3BhcnRfcHJ1bmVfcmVzdWx0czsJLyogTGlzdCBvZiBCaXRtYXBzZXQgKi8KQEAgLTcwNyw2ICs3 MDksNyBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAlpbnQJCQllc190b3BfZWZsYWdzOwkvKiBl ZmxhZ3MgcGFzc2VkIHRvIEV4ZWN1dG9yU3RhcnQgKi8KIAlpbnQJCQllc19pbnN0cnVtZW50Owkv KiBPUiBvZiBJbnN0cnVtZW50T3B0aW9uIGZsYWdzICovCiAJYm9vbAkJZXNfZmluaXNoZWQ7CS8q IHRydWUgd2hlbiBFeGVjdXRvckZpbmlzaCBpcyBkb25lICovCisJYm9vbAkJZXNfYWJvcnRlZDsJ CS8qIHRydWUgd2hlbiBleGVjdXRpb24gd2FzIGFib3J0ZWQgKi8KIAogCUxpc3QJICAgKmVzX2V4 cHJjb250ZXh0czsJLyogTGlzdCBvZiBFeHByQ29udGV4dHMgd2l0aGluIEVTdGF0ZSAqLwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0 aWxzL3BsYW5jYWNoZS5oCmluZGV4IDQ2MDcyZDMxMWIxLi4yZDgzZjdkNDkzMCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMv cGxhbmNhY2hlLmgKQEAgLTE4LDYgKzE4LDggQEAKICNpbmNsdWRlICJhY2Nlc3MvdHVwZGVzYy5o IgogI2luY2x1ZGUgImxpYi9pbGlzdC5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcmFtcy5oIgorI2lu Y2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKKyNpbmNsdWRlICJub2Rlcy9wbGFubm9kZXMuaCIK ICNpbmNsdWRlICJ0Y29wL2NtZHRhZy5oIgogI2luY2x1ZGUgInV0aWxzL3F1ZXJ5ZW52aXJvbm1l bnQuaCIKICNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgpAQCAtMTM5LDEwICsxNDEsMTEgQEAg dHlwZWRlZiBzdHJ1Y3QgQ2FjaGVkUGxhblNvdXJjZQogICogVGhlIHJlZmVyZW5jZSBjb3VudCBp bmNsdWRlcyBib3RoIHRoZSBsaW5rIGZyb20gdGhlIHBhcmVudCBDYWNoZWRQbGFuU291cmNlCiAg KiAoaWYgYW55KSwgYW5kIGFueSBhY3RpdmUgcGxhbiBleGVjdXRpb25zLCBzbyB0aGUgcGxhbiBj YW4gYmUgZGlzY2FyZGVkCiAgKiBleGFjdGx5IHdoZW4gcmVmY291bnQgZ29lcyB0byB6ZXJvLiAg Qm90aCB0aGUgc3RydWN0IGl0c2VsZiBhbmQgdGhlCi0gKiBzdWJzaWRpYXJ5IGRhdGEgbGl2ZSBp biB0aGUgY29udGV4dCBkZW5vdGVkIGJ5IHRoZSBjb250ZXh0IGZpZWxkLgotICogVGhpcyBtYWtl cyBpdCBlYXN5IHRvIGZyZWUgYSBuby1sb25nZXItbmVlZGVkIGNhY2hlZCBwbGFuLiAgKEhvd2V2 ZXIsCi0gKiBpZiBpc19vbmVzaG90IGlzIHRydWUsIHRoZSBjb250ZXh0IGRvZXMgbm90IGJlbG9u ZyBzb2xlbHkgdG8gdGhlIENhY2hlZFBsYW4KLSAqIHNvIG5vIGZyZWVpbmcgaXMgcG9zc2libGUu KQorICogc3Vic2lkaWFyeSBkYXRhLCBleGNlcHQgdGhlIFBsYW5uZWRTdG10cyBpbiBzdG10X2xp c3QgbGl2ZSBpbiB0aGUgY29udGV4dAorICogZGVub3RlZCBieSB0aGUgY29udGV4dCBmaWVsZDsg dGhlIFBsYW5uZWRTdG10cyBsaXZlIGluIHRoZSBjb250ZXh0IGRlbm90ZWQKKyAqIGJ5IHN0bXRf Y29udGV4dC4gIFNlcGFyYXRlIGNvbnRleHRzIG1ha2VzIGl0IGVhc3kgdG8gZnJlZSBhIG5vLWxv bmdlci1uZWVkZWQKKyAqIGNhY2hlZCBwbGFuLiAoSG93ZXZlciwgaWYgaXNfb25lc2hvdCBpcyB0 cnVlLCB0aGUgY29udGV4dCBkb2VzIG5vdCBiZWxvbmcKKyAqIHNvbGVseSB0byB0aGUgQ2FjaGVk UGxhbiBzbyBubyBmcmVlaW5nIGlzIHBvc3NpYmxlLikKICAqLwogdHlwZWRlZiBzdHJ1Y3QgQ2Fj aGVkUGxhbgogewpAQCAtMTUwLDYgKzE1Myw3IEBAIHR5cGVkZWYgc3RydWN0IENhY2hlZFBsYW4K IAlMaXN0CSAgICpzdG10X2xpc3Q7CQkvKiBsaXN0IG9mIFBsYW5uZWRTdG10cyAqLwogCWJvb2wJ CWlzX29uZXNob3Q7CQkvKiBpcyBpdCBhICJvbmVzaG90IiBwbGFuPyAqLwogCWJvb2wJCWlzX3Nh dmVkOwkJLyogaXMgQ2FjaGVkUGxhbiBpbiBhIGxvbmctbGl2ZWQgY29udGV4dD8gKi8KKwlib29s CQlpc19yZXVzZWQ7CQkvKiBpcyBpdCBhIHJldXNlZCBnZW5lcmljIHBsYW4/ICovCiAJYm9vbAkJ aXNfdmFsaWQ7CQkvKiBpcyB0aGUgc3RtdF9saXN0IGN1cnJlbnRseSB2YWxpZD8gKi8KIAlPaWQJ CQlwbGFuUm9sZUlkOwkJLyogUm9sZSBJRCB0aGUgcGxhbiB3YXMgY3JlYXRlZCBmb3IgKi8KIAli b29sCQlkZXBlbmRzT25Sb2xlOwkvKiBpcyBwbGFuIHNwZWNpZmljIHRvIHRoYXQgcm9sZT8gKi8K QEAgLTE1OCw2ICsxNjIsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgQ2FjaGVkUGxhbgogCWludAkJCWdl bmVyYXRpb247CQkvKiBwYXJlbnQncyBnZW5lcmF0aW9uIG51bWJlciBmb3IgdGhpcyBwbGFuICov CiAJaW50CQkJcmVmY291bnQ7CQkvKiBjb3VudCBvZiBsaXZlIHJlZmVyZW5jZXMgdG8gdGhpcyBz dHJ1Y3QgKi8KIAlNZW1vcnlDb250ZXh0IGNvbnRleHQ7CQkvKiBjb250ZXh0IGNvbnRhaW5pbmcg dGhpcyBDYWNoZWRQbGFuICovCisJTWVtb3J5Q29udGV4dCBzdG10X2NvbnRleHQ7IC8qIGNvbnRl eHQgY29udGFpbmluZyB0aGUgUGxhbm5lZFN0bXRzIGluCisJCQkJCQkJCSAqIHN0bXRfbGlzdCwg YnV0IG5vdCB0aGUgTGlzdCBpdHNlbGYgd2hpY2ggaXMKKwkJCQkJCQkJICogaW4gdGhlIGFib3Zl IGNvbnRleHQ7IE5VTEwgaWYgaXNfb25lc2hvdCBpcworCQkJCQkJCQkgKiB0cnVlLiAqLwogfSBD YWNoZWRQbGFuOwogCiAvKgpAQCAtMjIzLDYgKzIzMSwxMCBAQCBleHRlcm4gQ2FjaGVkUGxhbiAq R2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgUGFy YW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAkJCQkJCQkJIFJlc291cmNlT3duZXIgb3duZXIsCiAJ CQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CitleHRlcm4gUGxhbm5lZFN0bXQg KlVwZGF0ZUNhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKKwkJCQkJCQkJ CSBpbnQgcXVlcnlfaW5kZXgsCisJCQkJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYp OworCiBleHRlcm4gdm9pZCBSZWxlYXNlQ2FjaGVkUGxhbihDYWNoZWRQbGFuICpwbGFuLCBSZXNv dXJjZU93bmVyIG93bmVyKTsKIAogZXh0ZXJuIGJvb2wgQ2FjaGVkUGxhbkFsbG93c1NpbXBsZVZh bGlkaXR5Q2hlY2soQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKQEAgLTIzNSw0ICsyNDcs MzQgQEAgZXh0ZXJuIGJvb2wgQ2FjaGVkUGxhbklzU2ltcGx5VmFsaWQoQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSwKIGV4dGVybiBDYWNoZWRFeHByZXNzaW9uICpHZXRDYWNoZWRFeHByZXNz aW9uKE5vZGUgKmV4cHIpOwogZXh0ZXJuIHZvaWQgRnJlZUNhY2hlZEV4cHJlc3Npb24oQ2FjaGVk RXhwcmVzc2lvbiAqY2V4cHIpOwogCisvKgorICogQ2FjaGVkUGxhblJlcXVpcmVzTG9ja2luZzog c2hvdWxkIHRoZSBleGVjdXRvciBhY3F1aXJlIGFkZGl0aW9uYWwgbG9ja3M/CisgKgorICogSWYg dGhlIHBsYW4gaXMgYSBzYXZlZCBnZW5lcmljIHBsYW4sIHRoZSBleGVjdXRvciBtdXN0IGFjcXVp cmUgbG9ja3MgZm9yCisgKiByZWxhdGlvbnMgdGhhdCBhcmUgbm90IGNvdmVyZWQgYnkgQWNxdWly ZUV4ZWN1dG9yTG9ja3MoKSwgc3VjaCBhcyBwYXJ0aXRpb25zCisgKiB0aGF0IGFyZSBzdWJqZWN0 IHRvIGluaXRpYWwgcnVudGltZSBwcnVuaW5nLgorICoKKyAqIE5vdGU6IFRoZXNlIGxvY2tzIGFy ZSB1bm5lY2Vzc2FyeSBpZiB0aGUgcGxhbiBpcyBleGVjdXRlZCBpbW1lZGlhdGVseSBhZnRlcgor ICogaXRzIGNyZWF0aW9uLCBzaW5jZSB0aGUgcGxhbm5lciB3b3VsZCBoYXZlIGFscmVhZHkgYWNx dWlyZWQgdGhlbS4gSG93ZXZlciwKKyAqIHdlIGRvIG5vdCBvcHRpbWl6ZSBmb3IgdGhhdCBjYXNl LgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0NhY2hlZFBsYW5SZXF1aXJlc0xvY2tpbmcoQ2Fj aGVkUGxhbiAqY3BsYW4pCit7CisJcmV0dXJuICFjcGxhbi0+aXNfb25lc2hvdCAmJiBjcGxhbi0+ aXNfcmV1c2VkOworfQorCisvKgorICogQ2FjaGVkUGxhblZhbGlkCisgKiAgICAgIFJldHVybnMg d2hldGhlciBhIGNhY2hlZCBnZW5lcmljIHBsYW4gaXMgc3RpbGwgdmFsaWQuCisgKgorICogSW52 b2tlZCBieSB0aGUgZXhlY3V0b3IgdG8gY2hlY2sgaWYgdGhlIHBsYW4gaGFzIG5vdCBiZWVuIGlu dmFsaWRhdGVkIGFmdGVyCisgKiB0YWtpbmcgbG9ja3MgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlv biBvZiB0aGUgcGxhbi4KKyAqLworc3RhdGljIGlubGluZSBib29sCitDYWNoZWRQbGFuVmFsaWQo Q2FjaGVkUGxhbiAqY3BsYW4pCit7CisJcmV0dXJuIGNwbGFuLT5pc192YWxpZDsKK30KKwogI2Vu ZGlmCQkJCQkJCS8qIFBMQU5DQUNIRV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy9wb3J0YWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCmluZGV4IDBiNjIxNDNhZjhi Li5kZGVlMDMxZjU1MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKKysr IGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCB0eXBlZGVm IHN0cnVjdCBQb3J0YWxEYXRhCiAJUXVlcnlDb21wbGV0aW9uIHFjOwkJCS8qIGNvbW1hbmQgY29t cGxldGlvbiBkYXRhIGZvciBleGVjdXRlZCBxdWVyeSAqLwogCUxpc3QJICAgKnN0bXRzOwkJCS8q IGxpc3Qgb2YgUGxhbm5lZFN0bXRzICovCiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2FjaGVk UGxhbiwgaWYgc3RtdHMgYXJlIGZyb20gb25lICovCisJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZTsJLyogQ2FjaGVkUGxhblNvdXJjZSwgZm9yIGNwbGFuICovCiAKIAlQYXJhbUxpc3RJbmZv IHBvcnRhbFBhcmFtczsgLyogcGFyYW1zIHRvIHBhc3MgdG8gcXVlcnkgKi8KIAlRdWVyeUVudmly b25tZW50ICpxdWVyeUVudjsgLyogZW52aXJvbm1lbnQgZm9yIHF1ZXJ5ICovCkBAIC0yNDAsNyAr MjQxLDggQEAgZXh0ZXJuIHZvaWQgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAkJ CQkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJICBDb21tYW5kVGFnIGNvbW1h bmRUYWcsCiAJCQkJCQkJICBMaXN0ICpzdG10cywKLQkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFu KTsKKwkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCQkJCSAgQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSk7CiBleHRlcm4gUGxhbm5lZFN0bXQgKlBvcnRhbEdldFByaW1hcnlTdG10 KFBvcnRhbCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQgUG9ydGFsQ3JlYXRlSG9sZFN0b3JlKFBvcnRh bCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQgUG9ydGFsSGFzaFRhYmxlRGVsZXRlQWxsKHZvaWQpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUgYi9z cmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQppbmRleCA3MGYyNGU4NDZk YS4uM2VlYjA5N2ZkZTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0 aW9uL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2Vm aWxlCkBAIC04LDcgKzgsOCBAQCBPQkpTID0gXAogCWRlbGF5X2V4ZWN1dGlvbi5vCiAKIElTT0xB VElPTiA9IHBhcnRpdGlvbi1hZGRpdGlvbiBcCi0JICAgIHBhcnRpdGlvbi1yZW1vdmFsLTEKKwkg ICAgcGFydGl0aW9uLXJlbW92YWwtMSBcCisJCWNhY2hlZC1wbGFuLWludmFsCiAKIGlmZGVmIFVT RV9QR1hTCiBQR19DT05GSUcgPSBwZ19jb25maWcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMKaW5kZXggN2JjOTdmODRhMWMuLjg0NGFm NmJkMDYxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxh eV9leGVjdXRpb24uYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxh eV9leGVjdXRpb24uYwpAQCAtMSwxNCArMSwxOCBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgog ICogZGVsYXlfZXhlY3V0aW9uLmMKLSAqCQlUZXN0IG1vZHVsZSB0byBhbGxvdyBkZWxheSBiZXR3 ZWVuIHBhcnNpbmcgYW5kIGV4ZWN1dGlvbiBvZiBhIHF1ZXJ5LgorICoJCVRlc3QgbW9kdWxlIHRv IGludHJvZHVjZSBkZWxheSBhdCB2YXJpb3VzIHBvaW50cyBkdXJpbmcgZXhlY3V0aW9uIG9mIGEK KyAqCQlxdWVyeSB0byB0ZXN0IHRoYXQgZXhlY3V0aW9uIHByb2NlZWRzIHNhZmVseSBpbiBsaWdo dCBvZiBjb25jdXJyZW50CisgKgkJY2hhbmdlcy4KICAqCiAgKiBUaGUgZGVsYXkgaXMgaW1wbGVt ZW50ZWQgYnkgdGFraW5nIGFuZCBpbW1lZGlhdGVseSByZWxlYXNpbmcgYSBzcGVjaWZpZWQKICAq IGFkdmlzb3J5IGxvY2suICBJZiBhbm90aGVyIHByb2Nlc3MgaGFzIHByZXZpb3VzbHkgdGFrZW4g dGhhdCBsb2NrLCB0aGUKICAqIGN1cnJlbnQgcHJvY2VzcyB3aWxsIGJlIGJsb2NrZWQgdW50aWwg dGhlIGxvY2sgaXMgcmVsZWFzZWQ7IG90aGVyd2lzZSwKICAqIHRoZXJlJ3Mgbm8gZWZmZWN0LiAg VGhpcyBhbGxvd3MgYW4gaXNvbGF0aW9udGVzdGVyIHNjcmlwdCB0byByZWxpYWJseQotICogdGVz dCBiZWhhdmlvcnMgd2hlcmUgc29tZSBzcGVjaWZpZWQgYWN0aW9uIGhhcHBlbnMgaW4gYW5vdGhl ciBiYWNrZW5kCi0gKiBiZXR3ZWVuIHBhcnNpbmcgYW5kIGV4ZWN1dGlvbiBvZiBhbnkgZGVzaXJl ZCBxdWVyeS4KKyAqIHRlc3QgYmVoYXZpb3JzIHdoZXJlIHNvbWUgc3BlY2lmaWVkIGFjdGlvbiBo YXBwZW5zIGluIGFub3RoZXIgYmFja2VuZCBpbgorICogYSBjb3VwbGUgb2YgY2FzZXM6IDEpIGJl dHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGFueSBkZXNpcmVkIHF1ZXJ5CisgKiB3aGVu IHVzaW5nIHRoZSBwbGFubmVyX2hvb2ssIDIpIGJldHdlZW4gUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5 KCkgYW5kCisgKiBFeGVjdXRvclN0YXJ0KCkgd2hlbiB1c2luZyB0aGUgRXhlY3V0b3JTdGFydF9o b29rLgogICoKICAqIENvcHlyaWdodCAoYykgMjAyMC0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAogICoKQEAgLTIyLDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGxpbWl0 cy5oPgogCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJvcHRpbWl6 ZXIvcGxhbm5lci5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNsdWRlICJ1 dGlscy9ndWMuaCIKQEAgLTMyLDkgKzM3LDExIEBAIFBHX01PRFVMRV9NQUdJQzsKIAogLyogR1VD OiBhZHZpc29yeSBsb2NrIElEIHRvIHVzZS4gIFplcm8gZGlzYWJsZXMgdGhlIGZlYXR1cmUuICov CiBzdGF0aWMgaW50CXBvc3RfcGxhbm5pbmdfbG9ja19pZCA9IDA7CitzdGF0aWMgaW50CWV4ZWN1 dG9yX3N0YXJ0X2xvY2tfaWQgPSAwOwogCi0vKiBTYXZlIHByZXZpb3VzIHBsYW5uZXIgaG9vayB1 c2VyIHRvIGJlIGEgZ29vZCBjaXRpemVuICovCisvKiBTYXZlIHByZXZpb3VzIGhvb2sgdXNlcnMg dG8gYmUgYSBnb29kIGNpdGl6ZW4gKi8KIHN0YXRpYyBwbGFubmVyX2hvb2tfdHlwZSBwcmV2X3Bs YW5uZXJfaG9vayA9IE5VTEw7CitzdGF0aWMgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUgcHJldl9F eGVjdXRvclN0YXJ0X2hvb2sgPSBOVUxMOwogCiAKIC8qIHBsYW5uZXJfaG9vayBmdW5jdGlvbiB0 byBwcm92aWRlIHRoZSBkZXNpcmVkIGRlbGF5ICovCkBAIC03MCwxMSArNzcsNDUgQEAgZGVsYXlf ZXhlY3V0aW9uX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcs CiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogRXhlY3V0b3JTdGFydF9ob29rIGZ1bmN0aW9uIHRv IHByb3ZpZGUgdGhlIGRlc2lyZWQgZGVsYXkgKi8KK3N0YXRpYyBib29sCitkZWxheV9leGVjdXRp b25fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKK3sKKwli b29sCQlwbGFuX3ZhbGlkOworCisJLyogSWYgZW5hYmxlZCwgZGVsYXkgYnkgdGFraW5nIGFuZCBy ZWxlYXNpbmcgdGhlIHNwZWNpZmllZCBsb2NrICovCisJaWYgKGV4ZWN1dG9yX3N0YXJ0X2xvY2tf aWQgIT0gMCkKKwl7CisJCURpcmVjdEZ1bmN0aW9uQ2FsbDEocGdfYWR2aXNvcnlfbG9ja19pbnQ4 LAorCQkJCQkJCUludDY0R2V0RGF0dW0oKGludDY0KSBleGVjdXRvcl9zdGFydF9sb2NrX2lkKSk7 CisJCURpcmVjdEZ1bmN0aW9uQ2FsbDEocGdfYWR2aXNvcnlfdW5sb2NrX2ludDgsCisJCQkJCQkJ SW50NjRHZXREYXR1bSgoaW50NjQpIGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQpKTsKKworCQkvKgor CQkgKiBFbnN1cmUgdGhhdCB3ZSBub3RpY2UgYW55IHBlbmRpbmcgaW52YWxpZGF0aW9ucywgc2lu Y2UgdGhlIGFkdmlzb3J5CisJCSAqIGxvY2sgZnVuY3Rpb25zIGRvbid0IGRvIHRoaXMuCisJCSAq LworCQlBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpOworCX0KKworCS8qIE5vdyBzdGFydCB0 aGUgZXhlY3V0b3IsIHBvc3NpYmx5IHZpYSBhIHByZXZpb3VzIGhvb2sgdXNlciAqLworCWlmIChw cmV2X0V4ZWN1dG9yU3RhcnRfaG9vaykKKwkJcGxhbl92YWxpZCA9IHByZXZfRXhlY3V0b3JTdGFy dF9ob29rKHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwllbHNlCisJCXBsYW5fdmFsaWQgPSBzdGFuZGFy ZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKworCWlmIChleGVjdXRvcl9zdGFy dF9sb2NrX2lkICE9IDApCisJCWVsb2coTk9USUNFLCAiRmluaXNoZWQgRXhlY3V0b3JTdGFydCgp OiBDYWNoZWRQbGFuIGlzICVzIiwKKwkJCSBwbGFuX3ZhbGlkID8gInZhbGlkIiA6ICJub3QgdmFs aWQiKTsKKworCXJldHVybiBwbGFuX3ZhbGlkOworfQorCiAvKiBNb2R1bGUgbG9hZCBmdW5jdGlv biAqLwogdm9pZAogX1BHX2luaXQodm9pZCkKIHsKLQkvKiBTZXQgdXAgdGhlIEdVQyB0byBjb250 cm9sIHdoaWNoIGxvY2sgaXMgdXNlZCAqLworCS8qIFNldCB1cCBHVUNzIHRvIGNvbnRyb2wgd2hp Y2ggbG9jayBpcyB1c2VkICovCiAJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoImRlbGF5X2V4ZWN1 dGlvbi5wb3N0X3BsYW5uaW5nX2xvY2tfaWQiLAogCQkJCQkJCSJTZXRzIHRoZSBhZHZpc29yeSBs b2NrIElEIHRvIGJlIGxvY2tlZC91bmxvY2tlZCBhZnRlciBwbGFubmluZy4iLAogCQkJCQkJCSJa ZXJvIGRpc2FibGVzIHRoZSBkZWxheS4iLApAQCAtODYsMTAgKzEyNywyMiBAQCBfUEdfaW5pdCh2 b2lkKQogCQkJCQkJCU5VTEwsCiAJCQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMKTsKLQorCURlZmlu ZUN1c3RvbUludFZhcmlhYmxlKCJkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19p ZCIsCisJCQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQgdG8gYmUgbG9ja2VkL3VubG9j a2VkIGJlZm9yZSBzdGFydGluZyBleGVjdXRpb24uIiwKKwkJCQkJCQkiWmVybyBkaXNhYmxlcyB0 aGUgZGVsYXkuIiwKKwkJCQkJCQkmZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCwKKwkJCQkJCQkwLAor CQkJCQkJCTAsIElOVF9NQVgsCisJCQkJCQkJUEdDX1VTRVJTRVQsCisJCQkJCQkJMCwKKwkJCQkJ CQlOVUxMLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJTlVMTCk7CiAJTWFya0dVQ1ByZWZpeFJlc2Vy dmVkKCJkZWxheV9leGVjdXRpb24iKTsKIAotCS8qIEluc3RhbGwgb3VyIGhvb2sgKi8KKwkvKiBJ bnN0YWxsIG91ciBob29rcy4gKi8KIAlwcmV2X3BsYW5uZXJfaG9vayA9IHBsYW5uZXJfaG9vazsK IAlwbGFubmVyX2hvb2sgPSBkZWxheV9leGVjdXRpb25fcGxhbm5lcjsKKwlwcmV2X0V4ZWN1dG9y U3RhcnRfaG9vayA9IEV4ZWN1dG9yU3RhcnRfaG9vazsKKwlFeGVjdXRvclN0YXJ0X2hvb2sgPSBk ZWxheV9leGVjdXRpb25fRXhlY3V0b3JTdGFydDsKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFsLm91dCBiL3Ny Yy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFs Lm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWJmYjJiMzNiMzkK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBl Y3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQKQEAgLTAsMCArMSwyODIgQEAKK1BhcnNlZCB0ZXN0 IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAgczJs b2NrIHMxZXhlYyBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDogU0VUIHBsYW5fY2FjaGVf bW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJP TSBmb292IFdIRVJFIGEgPSAkMSBGT1IgVVBEQVRFOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikg RVhFQ1VURSBxICgxKTsKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitMb2NrUm93cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4g IEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJw bGFucyBSZW1vdmVkOiAyICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBCaXRtYXAg SGVhcCBTY2FuIG9uIGZvbzEyXzEgZm9vXzEgICAKKyAgICAgICAgICAgICAgUmVjaGVjayBDb25k OiAoYSA9ICQxKSAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNj YW4gb24gZm9vMTJfMV9hCisgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gJDEp ICAgICAgICAKKyg3IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9j aygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjOiBMT0FEICdkZWxheV9leGVjdXRpb24nOwor CQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1Owor CQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgPHdhaXRpbmcgLi4uPgorc3Rl cCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzEyXzFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBw Z19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0t LS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzogPC4u LiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNo ZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQo KTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTG9ja1Jvd3MgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAyICAgICAgICAgIAorICAgICAgICAt PiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMQorICAgICAgICAgICAgICBGaWx0ZXI6IChhID0g JDEpICAgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwMiBz MmxvY2sgczFleGVjMiBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDI6IFNFVCBwbGFuX2Nh Y2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxMiBBUyBTRUxFQ1Qg KiBGUk9NIGZvb3YgV0hFUkUgYSA9IG9uZSgpIG9yIGEgPSB0d28oKTsKKwkJICBFWFBMQUlOIChD T1NUUyBPRkYpIEVYRUNVVEUgcTI7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFy dCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAK KyAgICAgICAgUmVjaGVjayBDb25kOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpCisgICAg ICAgIC0+ICBCaXRtYXBPciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg ICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hICAKKyAgICAgICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKGEgPSBvbmUoKSkgICAgICAgCisgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiBmb28xMl8xX2EgIAorICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoYSA9IHR3bygpKSAgICAgICAKKyAgLT4gIFNlcSBTY2FuIG9uIGZvbzEyXzIgZm9v XzIgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChh ID0gdHdvKCkpKSAgICAgIAorKDExIHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2 aXNvcnlfbG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogTE9BRCAnZGVsYXlfZXhl Y3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQg PSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IDx3YWl0aW5nIC4u Lj4KK3N0ZXAgczJkcm9waTogRFJPUCBJTkRFWCBmb28xMl8xX2E7CitzdGVwIHMydW5sb2NrOiBT RUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0t LS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4 ZWMyOiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0 KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0 b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisg IFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgU2VxIFNj YW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAKKyAgICAgICAgRmlsdGVyOiAoKGEgPSBv bmUoKSkgT1IgKGEgPSB0d28oKSkpCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18yICAg ICAgICAgICAgIAorICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkK Kyg2IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDMgczJsb2NrIHMxZXhl YzMgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXAzOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0g Zm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTMgQVMgVVBEQVRFIGZvb3YgU0VUIGEg PSBhIFdIRVJFIGEgPSBvbmUoKSBvciBhID0gdHdvKCk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZG KSBFWEVDVVRFIHEzOworczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2Fj aGVkUGxhbiBpcyB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTog Q2FjaGVkUGxhbiBpcyB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQo KTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOZXN0ZWQgTG9vcCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5k ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg ICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGZvbzEyXzEgZm9vXzEgICAgICAgICAg ICAgICAgIAorICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoYSA9IG9uZSgpKSBPUiAoYSA9 IHR3bygpKSkgICAgICAKKyAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5k ZXggU2NhbiBvbiBmb28xMl8xX2EgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg LT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgICAgICAgCisgICAgICAgICAgICAg ICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gdHdvKCkpICAgICAgICAgICAgIAorICAgICAg ICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBmb29fMiAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgICAgICAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpICAgICAg ICAgICAgCisgIC0+ICBNYXRlcmlhbGl6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSGVh cCBTY2FuIG9uIGJhcjEgYmFyXzEgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBS ZWNoZWNrIENvbmQ6IChhID0gb25lKCkpICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg ICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJhcjFfYV9pZHggICAgICAgCisgICAgICAg ICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gb25lKCkpICAgICAgICAgICAgIAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKK1VwZGF0ZSBvbiBiYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisgIFVwZGF0ZSBvbiBiYXIxIGJhcl8xICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorICAtPiAgTmVzdGVkIExvb3AgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEFwcGVuZCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIFN1YnBsYW5z IFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAt PiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAKKyAgICAgICAg ICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpCisg ICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPciAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g Zm9vMTJfMV9hICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KGEgPSBvbmUoKSkgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiBmb28xMl8xX2EgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJbmRleCBDb25kOiAoYSA9IHR3bygpKSAgICAgICAKKyAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg ICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAgIAorICAgICAgICAt PiAgTWF0ZXJpYWxpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgICAgICAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgICAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAg ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBi YXIxIGJhcl8xICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjaGVjayBDb25k OiAoYSA9IG9uZSgpKSAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiBiYXIxX2FfaWR4IAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitVcGRhdGUgb24g Zm9vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBV cGRhdGUgb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKyAgVXBkYXRlIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCisgIC0+ICBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEJpdG1hcCBIZWFwIFNjYW4gb24g Zm9vMTJfMSBmb29fMSAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIFJlY2hlY2sgQ29u ZDogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAgIAorICAgICAgICAgICAgICAtPiAg Qml0bWFwT3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgICAgICAgCisgICAg ICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gb25lKCkpICAgICAgICAgICAg IAorICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9h ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSB0d28o KSkgICAgICAgICAgICAgCisgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8yIGZvb18yICAg ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgp KSBPUiAoYSA9IHR3bygpKSkgICAgICAgICAgICAKKyg1NiByb3dzKQorCitzdGVwIHMybG9jazog U0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzM6IExP QUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9z dGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEz OyA8d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTJfMV9hOworc3Rl cCBzMnVubG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29y eV91bmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAgCisoMSByb3cp CisKK3N0ZXAgczFleGVjMzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQg RXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZp bmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorczE6IE5PVElDRTog IEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorczE6IE5PVElD RTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorTmVzdGVkIExvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMSBm b29fMSAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9 IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAgICAgIAorICAgICAgICAtPiAgU2VxIFNjYW4g b24gZm9vMTJfMiBmb29fMiAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBG aWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAgICAgIAorICAtPiAgTWF0 ZXJpYWxpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBiYXIxIGJhcl8x ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gb25l KCkpICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gYmFyMV9hX2lkeCAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorVXBkYXRlIG9uIGJhciAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24g YmFyMSBiYXJfMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAg TmVzdGVkIExvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMSAg ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgp KSBPUiAoYSA9IHR3bygpKSkgICAgIAorICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9v MTJfMiBmb29fMiAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6 ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgIAorICAgICAgICAtPiAgTWF0ZXJpYWxp emUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAt PiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg ICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBiYXIxIGJhcl8xICAgICAg IAorICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gb25lKCkpICAg ICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4g b24gYmFyMV9hX2lkeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25k OiAoYSA9IG9uZSgpKSAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorVXBkYXRlIG9uIGZvbyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gZm9vMTJfMSBmb29f MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gZm9vMTJf MiBmb29fMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5k ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkg ICAgICAgICAgIAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBmb29fMiAgICAgICAg ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAo YSA9IHR3bygpKSkgICAgICAgICAgIAorKDQxIHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRp b246IHMxcHJlcDQgczJsb2NrIHMxZXhlYzQgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXA0 OiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFNFVCBlbmFi bGVfc2Vxc2NhbiBUTyBvZmY7CisJCSAgUFJFUEFSRSBxNCBBUyBTRUxFQ1QgKiBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAxKSBXSEVSRSBFWElTVFMgKFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBh ID0gJDEgRk9SIFVQREFURSk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHE0ICgx KTsKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMg dmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgT25lLVRpbWUgRmlsdGVyOiAoSW5pdFBs YW4gMSkuY29sMSAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBJbml0UGxhbiAxICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgLT4gIExv Y2tSb3dzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgZm9vMTJf MV9hIG9uIGZvbzEyXzEgZm9vXzEKKyAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo YSA9ICQxKSAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5l cmF0ZV9zZXJpZXMgICAgICAgICAgICAgICAgICAgICAgICAgCisoOSByb3dzKQorCitzdGVwIHMy bG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jawor LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhl YzQ6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVj dXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVD VVRFIHE0ICgxKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzEy XzFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOwor cGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAg IAorKDEgcm93KQorCitzdGVwIHMxZXhlYzQ6IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElDRTog IEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBO T1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSZXN1bHQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKyAgT25lLVRpbWUgRmlsdGVyOiAoSW5pdFBsYW4gMSku Y29sMSAgICAgICAgIAorICBJbml0UGxhbiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgLT4gIExvY2tSb3dzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg ICAgICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg IFN1YnBsYW5zIFJlbW92ZWQ6IDIgICAgICAgICAgCisgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIGZvbzEyXzEgZm9vXzEKKyAgICAgICAgICAgICAgICAgICAgICBEaXNhYmxlZDogdHJ1 ZSAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKGEgPSAkMSkgICAgICAg CisgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyAgICAgICAKKygxMCByb3dz KQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9tZXNvbi5i dWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1aWxkCmluZGV4 IGI1MzQ4OGY3NmQyLi41ODE1OWJmYzU3NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9l eGVjdXRpb24vbWVzb24uYnVpbGQKQEAgLTI0LDYgKzI0LDcgQEAgdGVzdHMgKz0gewogICAgICdz cGVjcyc6IFsKICAgICAgICdwYXJ0aXRpb24tYWRkaXRpb24nLAogICAgICAgJ3BhcnRpdGlvbi1y ZW1vdmFsLTEnLAorICAgICAgJ2NhY2hlZC1wbGFuLWludmFsJywKICAgICBdLAogICB9LAogfQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVk LXBsYW4taW52YWwuc3BlYyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNz L2NhY2hlZC1wbGFuLWludmFsLnNwZWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLmYyN2U4ZmI1MjFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4taW52YWwuc3BlYwpAQCAtMCwwICsxLDgw IEBACisjIFRlc3QgdG8gY2hlY2sgdGhhdCBpbnZhbGlkYXRpb24gb2YgY2FjaGVkIGdlbmVyaWMg cGxhbnMgZHVyaW5nIEV4ZWN1dG9yU3RhcnQKKyMgY29ycmVjdGx5IHRyaWdnZXJzIHJlcGxhbm5p bmcgYW5kIHJlLWV4ZWN1dGlvbi4KKworc2V0dXAKK3sKKyAgQ1JFQVRFIFRBQkxFIGZvbyAoYSBp bnQsIGIgdGV4dCkgUEFSVElUSU9OIEJZIExJU1QoYSk7CisgIENSRUFURSBUQUJMRSBmb28xMiBQ QVJUSVRJT04gT0YgZm9vIEZPUiBWQUxVRVMgSU4gKDEsIDIpIFBBUlRJVElPTiBCWSBMSVNUIChh KTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzEyXzEgUEFSVElUSU9OIE9GIGZvbzEyIEZPUiBWQUxVRVMg SU4gKDEpOworICBDUkVBVEUgVEFCTEUgZm9vMTJfMiBQQVJUSVRJT04gT0YgZm9vMTIgRk9SIFZB TFVFUyBJTiAoMik7CisgIENSRUFURSBJTkRFWCBmb28xMl8xX2EgT04gZm9vMTJfMSAoYSk7Cisg IENSRUFURSBUQUJMRSBmb28zIFBBUlRJVElPTiBPRiBmb28gRk9SIFZBTFVFUyBJTiAoMyk7Cisg IENSRUFURSBWSUVXIGZvb3YgQVMgU0VMRUNUICogRlJPTSBmb287CisgIENSRUFURSBGVU5DVElP TiBvbmUgKCkgUkVUVVJOUyBpbnQgQVMgJCQgQkVHSU4gUkVUVVJOIDE7IEVORDsgJCQgTEFOR1VB R0UgUExQR1NRTCBTVEFCTEU7CisgIENSRUFURSBGVU5DVElPTiB0d28gKCkgUkVUVVJOUyBpbnQg QVMgJCQgQkVHSU4gUkVUVVJOIDI7IEVORDsgJCQgTEFOR1VBR0UgUExQR1NRTCBTVEFCTEU7Cisg IENSRUFURSBUQUJMRSBiYXIgKGEgaW50LCBiIHRleHQpIFBBUlRJVElPTiBCWSBMSVNUKGEpOwor ICBDUkVBVEUgVEFCTEUgYmFyMSBQQVJUSVRJT04gT0YgYmFyIEZPUiBWQUxVRVMgSU4gKDEpOwor ICBDUkVBVEUgSU5ERVggT04gYmFyMShhKTsKKyAgQ1JFQVRFIFRBQkxFIGJhcjIgUEFSVElUSU9O IE9GIGJhciBGT1IgVkFMVUVTIElOICgyKTsKKyAgQ1JFQVRFIFJVTEUgdXBkYXRlX2ZvbyBBUyBP TiBVUERBVEUgVE8gZm9vIERPIEFMU08gVVBEQVRFIGJhciBTRVQgYSA9IGEgV0hFUkUgYSA9IG9u ZSgpOworICBDUkVBVEUgUlVMRSB1cGRhdGVfYmFyIEFTIE9OIFVQREFURSBUTyBiYXIgRE8gQUxT TyBTRUxFQ1QgMTsKK30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBWSUVXIGZvb3Y7CisgIERST1Ag UlVMRSB1cGRhdGVfZm9vIE9OIGZvbzsKKyAgRFJPUCBUQUJMRSBmb28sIGJhcjsKKyAgRFJPUCBG VU5DVElPTiBvbmUoKSwgdHdvKCk7Cit9CisKK3Nlc3Npb24gInMxIgorIyBBcHBlbmQgd2l0aCBy dW4tdGltZSBwcnVuaW5nCitzdGVwICJzMXByZXAiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0g Zm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3Yg V0hFUkUgYSA9ICQxIEZPUiBVUERBVEU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRF IHEgKDEpOyB9CisKKyMgQW5vdGhlciBjYXNlIHdpdGggQXBwZW5kIHdpdGggcnVuLXRpbWUgcHJ1 bmluZworc3RlcCAiczFwcmVwMiIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5l cmljX3BsYW47CisJCSAgUFJFUEFSRSBxMiBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9 IG9uZSgpIG9yIGEgPSB0d28oKTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7 IH0KKworIyBDYXNlIHdpdGggYSBydWxlIGFkZGluZyBhbm90aGVyIHF1ZXJ5CitzdGVwICJzMXBy ZXAzIiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQ UkVQQVJFIHEzIEFTIFVQREFURSBmb292IFNFVCBhID0gYSBXSEVSRSBhID0gb25lKCkgb3IgYSA9 IHR3bygpOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgfQorCisjIEFub3Ro ZXIgY2FzZSB3aXRoIEFwcGVuZCB3aXRoIHJ1bi10aW1lIHBydW5pbmcgaW4gYSBzdWJxdWVyeQor c3RlcCAiczFwcmVwNCIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3Bs YW47CisJCSAgU0VUIGVuYWJsZV9zZXFzY2FuIFRPIG9mZjsKKwkJICBQUkVQQVJFIHE0IEFTIFNF TEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEpIFdIRVJFIEVYSVNUUyAoU0VMRUNUICog RlJPTSBmb292IFdIRVJFIGEgPSAkMSBGT1IgVVBEQVRFKTsKKwkJICBFWFBMQUlOIChDT1NUUyBP RkYpIEVYRUNVVEUgcTQgKDEpOyB9CisKKyMgRXhlY3V0ZXMgYSBnZW5lcmljIHBsYW4KK3N0ZXAg InMxZXhlYyIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRp b24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9G RikgRVhFQ1VURSBxICgxKTsgfQorc3RlcCAiczFleGVjMiIJeyBMT0FEICdkZWxheV9leGVjdXRp b24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEy MzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsgfQorc3RlcCAiczFleGVj MyIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhl Y3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhF Q1VURSBxMzsgfQorc3RlcCAiczFleGVjNCIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkg IFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkg IEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxNCAoMSk7IH0KKworc2Vzc2lvbiAiczIiCitz dGVwICJzMmxvY2siCXsgU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOyB9CitzdGVwICJz MnVubG9jayIJeyBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsgfQorc3RlcCAiczJk cm9waSIJeyBEUk9QIElOREVYIGZvbzEyXzFfYTsgfQorCisjIFdoaWxlICJzMWV4ZWMiLCBldGMu IHdhaXQgdG8gYWNxdWlyZSB0aGUgYWR2aXNvcnkgbG9jaywgInMyZHJvcCIgaXMgYWJsZSB0bwor IyBkcm9wIHRoZSBpbmRleCBiZWluZyB1c2VkIGluIHRoZSBjYWNoZWQgcGxhbi4gIFdoZW4gInMx ZXhlYyIgaXMgdGhlbgorIyB1bmJsb2NrZWQgYW5kIGluaXRpYWxpemVzIHRoZSBjYWNoZWQgcGxh biBmb3IgZXhlY3V0aW9uLCBpdCBkZXRlY3RzIHRoZQorIyBjb25jdXJyZW50IGluZGV4IGRyb3Ag YW5kIGNhdXNlcyB0aGUgY2FjaGVkIHBsYW4gdG8gYmUgZGlzY2FyZGVkIGFuZAorIyByZWNyZWF0 ZWQgd2l0aG91dCB0aGUgaW5kZXguCitwZXJtdXRhdGlvbiAiczFwcmVwIiAiczJsb2NrIiAiczFl eGVjIiAiczJkcm9waSIgInMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDIiICJzMmxvY2si ICJzMWV4ZWMyIiAiczJkcm9waSIgInMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDMiICJz MmxvY2siICJzMWV4ZWMzIiAiczJkcm9waSIgInMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJl cDQiICJzMmxvY2siICJzMWV4ZWM0IiAiczJkcm9waSIgInMydW5sb2NrIgotLSAKMi40My4wCgo= --0000000000006edbff062cfc6023--