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 1sea4I-0090jS-Ni for pgsql-hackers@arkaria.postgresql.org; Thu, 15 Aug 2024 12:59:07 +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 1sea3I-00GAAo-Fz for pgsql-hackers@arkaria.postgresql.org; Thu, 15 Aug 2024 12:58:04 +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 1sea3H-00GAAe-S9 for pgsql-hackers@lists.postgresql.org; Thu, 15 Aug 2024 12:58:04 +0000 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sea3E-004zIr-0q for pgsql-hackers@postgresql.org; Thu, 15 Aug 2024 12:58:03 +0000 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-71275436546so726413b3a.1 for ; Thu, 15 Aug 2024 05:57:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723726677; x=1724331477; 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=eb8Y9ixKg9byWl/owAEplZvBSuGQbgxDsmdJa6b/dhk=; b=jQwglvP5jNYdj4+4GvrbiHPHwG0dtOri4eGuRIAQEzzRr+oO5m5ymq5UrMGwMdAU1Q UK3mhSKi6I5dfEZpCMdRusZ9jDGSinh7ak48YgUIutMkAguZ7tpQZ7/9mi3hC4kZ8sVX ci9m17rasLsPzxB94pm8VNxhMf4JtPV1kekD2/4erYqwWvutQPcwOf3h/a/KYNhHPZ6M 3nca7rfXOuIw7x5TRzzxk+2ScSQWpysSJyRkusAER0aJ6LPC+3LYPj3FN4J+ON7dlUW3 bpz5938kstcUVZlJFAz6YXF3ez/b25uQRGFQbX3QR1GFcB1bcHBp8O1ANiXAxjncWDJR Jzew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723726677; x=1724331477; 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=eb8Y9ixKg9byWl/owAEplZvBSuGQbgxDsmdJa6b/dhk=; b=eeV5975PK6oLSAfHQWzOEnGv+TQ6n5820BKmNfjvX6UfD+4XBDjupVIDc0zWAW+ma8 xAUmv9iLH26xUo0h6ee3WiQMCn0cv7aag/Wvfoek2aTb+h4tBxx4LSVfwheeSpbebr+P ndj/DovyttVGPvN0TKUlbK6p3PEWvqll6Nsa7yisy6o4iP+8teD1PhfDBx4SD/xytJzD SCIP+O5zDNPCoS92nEBP67kFs01i8yK6qQZRjMhFVEgow1AxL0pvL9ByHMGkExrKjHdF oL5MjRjo/lPhZICCSDFRLQoYX8H/H/QVaCA6H8ODCREzfXTRWA3zWx7hGePmtuQAZvT3 mRuA== X-Forwarded-Encrypted: i=1; AJvYcCWGfQ03PFK/rWOrgBLKWciL7X14AWHTaLFOhXKuBMKmaLucAs1pNy88IxC5OB0dTOiKrDH3q2pPfsHg5Dl6qrOEyJOdG+cT9oMQxcy3 X-Gm-Message-State: AOJu0YxUeaWJEOTNtOdV1yZWknApsy7oHVc/F0D+eSmvrTNyrmibY4KC Vx7XDTHBdkew6fGYbz/1jpI8B8Ky1j3XvB0WvgrFxMslmc/TTxDv3FCMelrGWIY4p1VF5r5V/QC 5xqqb2OBTdXuuGg16WVqngbb4c44= X-Google-Smtp-Source: AGHT+IEDGCeLdL++OmMRi4pZGExvcFs1da4Iamb3LZPjpfSU6+LKif3XJo4WTXfc5wUAeTelYY/IGDSeIFrW9NnX8ZQ= X-Received: by 2002:a05:6a20:9e4e:b0:1c8:b145:29cd with SMTP id adf61e73a8af0-1c8eaeb1d64mr7984354637.24.1723726677243; Thu, 15 Aug 2024 05:57:57 -0700 (PDT) MIME-Version: 1.0 References: <202406191709.jbvpf7d7hl6g@alvherre.pgsql> In-Reply-To: From: Amit Langote Date: Thu, 15 Aug 2024 21:57:40 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Robert Haas Cc: Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , Jacob Champion , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="00000000000049a510061fb86454" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000049a510061fb86454 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Aug 15, 2024 at 4:23=E2=80=AFAM Robert Haas = wrote: > On Mon, Aug 12, 2024 at 8:54=E2=80=AFAM Amit Langote wrote: > > 1. I went through many iterations of the changes to ExecInitNode() to > > return a partially initialized PlanState tree when it detects that the > > CachedPlan was invalidated after locking a child table and to > > ExecEndNode() to account for the PlanState tree sometimes being > > partially initialized, but it still seems fragile and bug-prone to me. > > It might be because this approach is fundamentally hard to get right > > or I haven't invested enough effort in becoming more confident in its > > robustness. > > Can you give some examples of what's going wrong, or what you think > might go wrong? > > I didn't think there was a huge problem here based on previous > discussion, but I could very well be missing some important challenge. TBH, it's more of a hunch that people who are not involved in this development might find the new reality, whereby the execution is not racefree until ExecutorRun(), hard to reason about. That's perhaps true with the other approach too whereby one would need to consult a separate data structure that records the result of pruning done in plancache.c to be sure if a given node of the plan tree coming from a CachedPlan is safe to execute or do something with. > > 2. Refactoring needed due to the ExecutorStart() API change especially > > that pertaining to portals does not seem airtight. I'm especially > > worried about moving the ExecutorStart() call for the > > PORTAL_MULTI_QUERY case from where it is currently to PortalStart(). > > That requires additional bookkeeping in PortalData and I am not > > totally sure that the snapshot handling changes after that move are > > entirely correct. > > Here again, it would help to see exactly what you had to do and what > consequences you think it might have. But it sounds like you're > talking about moving ExecutorStart() from PortalStart() to PortalRun() > and I agree that sounds like it might have user-visible behavioral > consequences that we don't want. Let's specifically looks at this block of code in PortalRunMulti(): /* * Must always have a snapshot for plannable queries. First ti= me * through, take a new snapshot; for subsequent queries in the * same portal, just update the snapshot's copy of the command * counter. */ if (!active_snapshot_set) { Snapshot snapshot =3D GetTransactionSnapshot(); /* If told to, register the snapshot and save in portal */ if (setHoldSnapshot) { snapshot =3D RegisterSnapshot(snapshot); portal->holdSnapshot =3D snapshot; } /* * We can't have the holdSnapshot also be the active one, * because UpdateActiveSnapshotCommandId would complain. S= o * force an extra snapshot copy. Plain PushActiveSnapshot * would have copied the transaction snapshot anyway, so th= is * only adds a copy step when setHoldSnapshot is true. (It= 's * okay for the command ID of the active snapshot to diverg= e * from what holdSnapshot has.) */ PushCopiedSnapshot(snapshot); /* * As for PORTAL_ONE_SELECT portals, it does not seem * necessary to maintain portal->portalSnapshot here. */ active_snapshot_set =3D true; } else UpdateActiveSnapshotCommandId(); Without the patch, the code immediately following this does a CreateQueryDesc(), which "registers" the above copied snapshot, followed by ExecutorStart() immediately followed by ExecutorRun(), for each query in the list for the PORTAL_RUN_MULTI case. With the patch, CreateQueryDesc() and ExecutorStart() are moved to PortalStart() so that QueryDescs including the PlanState trees for all queries are built before any is run. Why? So that if ExecutorStart() fails for any query in the list, we can simply throw out the QueryDesc and the PlanState trees of the previous queries (NOT run them) and ask plancache for a new CachedPlan for the list of queries. We don't have a way to ask plancache.c to replan only a given query in the list. Because of that reshuffling, the above block also needed to be moved to PortalStart() along with the CommandCounterIncrement() between queries. That requires the following non-trivial changes: * A copy of the snapshot needs to be created for each statement after the 1st one to be able to perform UpdateActiveSnapshotCommandId() on it. * In PortalRunMulti(), PushActiveSnapshot() must now be done for every query because the executor expects the copy in the given query's QueryDesc to match the ActiveSnapshot. * There's no longer CCI() between queries in PortalRunMulti() because the snapshots in each query's QueryDesc must have been adjusted to reflect the correct command counter. I've checked but can't really be sure if the value in the snapshot is all anyone ever uses if they want to know the current value of the command counter. There is likely to be performance regression for the multi-query cases due to this handling of snapshots and maybe even correctness issues. > > 3. The need to add *back* the fields to store the RT indexes of > > relations that are not looked at by ExecInitNode() traversal such as > > root partitioned tables and non-leaf partitions. > > I don't remember exactly why we removed those or what the benefit was, > so I'm not sure how big of a problem it is if we have to put them > back. We removed those in commit 52ed730d511b after commit f2343653f5b2 removed redundant execution-time locking of non-leaf relations. So we removed them because we realized that execution time locking is unnecessary given that AcquireExecutorLocks() exists and now we want to add them back because we'd like to get rid of AcquireExecutorLocks(). :-) I'm attaching a rebased version of the patch that implements the current design because the cfbot has been broken for a while and also in case you or anyone else wants to take another look. I've combined 2 patches into one -- one that dealt with the executor side changes to account for locking and another that dealt with caller side changes to handle executor returning when the CachedPlan becomes invalid. -- Thanks, Amit Langote --00000000000049a510061fb86454 Content-Type: application/octet-stream; name="v50-0002-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Disposition: attachment; filename="v50-0002-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lzva9oei1 RnJvbSBmMWFkOGJlYTI2MjFjNWE3MDc0NzQyNTE2YjI0OGM5ZWZlOWRkMTdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDowMiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjUw IDIvNl0gQWRkIGZpZWxkIHRvIHN0b3JlIHBhcmVudCByZWxpZHMgdG8KIEFwcGVuZC9NZXJnZUFw cGVuZAoKVGhlcmUncyBubyB3YXkgY3VycmVudGx5IGluIHRoZSBleGVjdXRvciB0byB0ZWxsIGlm IHRoZSBjaGlsZApzdWJwbGFucyBvZiBBcHBlbmQvTWVyZ2VBcHBlbmQgYXJlIHNjYW5uaW5nIHBh cnRpdGlvbnMsIGFuZCBpZgp0aGV5IGluZGVlZCBkbywgd2hhdCB0aGUgUlQgaW5kZXhlcyBvZiB0 aGVpciBwYXJlbnQvYW5jZXN0b3IgdGFibGVzCmFyZS4gIEV4ZWN1dG9yIGRvZXNuJ3QgbmVlZCB0 byBzZWUgdGhvc2UgUlQgaW5kZXhlcyBleGNlcHQgZm9yCnJ1bi10aW1lIHBydW5pbmcsIGluIHdo aWNoIGNhc2UgdGhleSBjYW4gY2FuIGJlIGZvdW5kIGluIHRoZQpQYXJ0aXRpb25QcnVuZUluZm8u ICBBbiB1cGNvbWluZyBjb21taXQgd2lsbCBjcmVhdGUgYSBuZWVkIGZvciB0aGVtCnRvIGJlIGF2 YWlsYWJsZSBmb3IgdGhlIHB1cnBvc2Ugb2YgbG9ja2luZyB0aG9zZSBwYXJlbnQvYW5jZXN0b3IK dGFibGVzIHdoZW4gZXhlY3V0aW5nIGEgY2FjaGVkIHBsYW4sIHNvIGFkZCBhCmZpZWxkIGNhbGxl ZCBhbGxwYXJ0cmVsaWRzIHRvIEFwcGVuZC9NZXJnZUFwcGVuZCB0byBzdG9yZSB0aG9zZQpSVCBp bmRleGVzLgoKSW4gdGhlIGNhc2VzIHdoZXJlIGFuIEFwcGVuZC9NZXJnZUFwcGVuZCBub2RlIGNv bnRhaW5pbmcgcGFyZW50ClJUIGluZGV4ZXMgaXMgZWxpZ2libGUgZm9yIGVsaXNpb24gaW4Kc2V0 X3thcHBlbmR8bWVyZ2VhcHBlbmR9X3JlZmVyZW5jZXMoKSwgdGhvc2UgUlQgaW5kZXhlcyBhcmUg bm93CnRyYW5zZmVycmVkIGludG8gUGxhbm5lZFN0bXQuZWxpZGVkQXBwZW5kUGFydFJlbHMuCgpU aGUgY29kZSB0byBsb29rIHVwIHBhcnRpdGlvbmVkIHBhcmVudCByZWxpZHMgZm9yIGEgZ2l2ZW4g bGlzdCBvZgpwYXJ0aXRpb24gc2NhbiBzdWJwYXRocyBvZiBhbiBBcHBlbmQvTWVyZ2VBcHBlbmQg aXMgYWxyZWFkeSBwcmVzZW50CmluIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbygpIGJ1dCBpdCdz IGxvY2FsIHRvIHBhcnRwcnVuZS5jLiAgVGhpcwpjb21taXQgcmVmYWN0b3JzIHRoYXQgY29kZSBp bnRvIGl0cyBvd24gZnVuY3Rpb24gY2FsbGVkCmFkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRz KCkgZGVmaW5lZCBpbiBhcHBlbmRpbmZvLmMgYW5kCmdlbmVyYWxpemVzIGl0IHRvIGNvbnNpZGVy IGNoaWxkIGpvaW4gYW5kIGFnZ3JlZ2F0aW9uIHBhdGhzLiAgVG8KZmFjaWxpdGF0ZSBsb29raW5n IHVwIG9mIHBhcmVudCByZWxzIG9mIGNoaWxkIGdyb3VwaW5nIHJlbHMgaW4KYWRkX2FwcGVuZF9z dWJwYXRoX3BhcnRyZWxpZHMoKSwgcGFyZW50IGxpbmtzIGFyZSBub3cgYWxzbyBzZXQgaW4KdGhl IFJlbE9wdEluZm9zIG9mIGNoaWxkIGdyb3VwaW5nIHJlbHMgdG9vLCBsaWtlIHRoZXkgYXJlIGlu CnRob3NlIG9mIGNoaWxkIGJhc2UgYW5kIGpvaW4gcmVscy4KCkRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5Y0xRdVY3b29pdEVFcGJL QjBPX21nQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFs bGVsLmMgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4u YyB8ICA0MSArKysrKystLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAg IHwgICA1ICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAgICB8ICAyMiAr KysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgfCAxMjcgKysrKysr KysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMg ICAgfCAxMjQgKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oICAgICAgICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAg ICAgICAgICAgfCAgMTcgKysrKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVuZGluZm8uaCAg ICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaCAgICB8ICAg MyArLQogMTAgZmlsZXMgY2hhbmdlZCwgMjIzIGluc2VydGlvbnMoKyksIDEyMyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IGJmYjM0MTllZmIuLmY5OTU3 MTRkN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCkBAIC0xODUsNiArMTg1LDcg QEAgRXhlY1NlcmlhbGl6ZVBsYW4oUGxhbiAqcGxhbiwgRVN0YXRlICplc3RhdGUpCiAJcHN0bXQt PnBlcm1JbmZvcyA9IGVzdGF0ZS0+ZXNfcnRlcGVybWluZm9zOwogCXBzdG10LT5yZXN1bHRSZWxh dGlvbnMgPSBOSUw7CiAJcHN0bXQtPmFwcGVuZFJlbGF0aW9ucyA9IE5JTDsKKwlwc3RtdC0+ZWxp ZGVkQXBwZW5kUGFydFJlbHMgPSBOSUw7CiAKIAkvKgogCSAqIFRyYW5zZmVyIG9ubHkgcGFyYWxs ZWwtc2FmZSBzdWJwbGFucywgbGVhdmluZyBhIE5VTEwgImhvbGUiIGluIHRoZSBsaXN0CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggMjhhZGRjMTEyOS4uNDljMTkz YzIzNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5j CisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMjUsNiAr MjUsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2V4dGVuc2libGUuaCIKICNpbmNsdWRlICJub2Rlcy9t YWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNsdWRlICJvcHRp bWl6ZXIvYXBwZW5kaW5mby5oIgogI2luY2x1ZGUgIm9wdGltaXplci9jbGF1c2VzLmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL2Nvc3QuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgi CkBAIC0xMjMyLDYgKzEyMzMsNyBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJv b3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCU9pZAkJICAgKm5vZGVDb2xs YXRpb25zID0gTlVMTDsKIAlib29sCSAgICpub2RlTnVsbHNGaXJzdCA9IE5VTEw7CiAJYm9vbAkJ Y29uc2lkZXJfYXN5bmMgPSBmYWxzZTsKKwlMaXN0CSAgICphbGxwYXJ0cmVsaWRzID0gTklMOwog CiAJLyoKIAkgKiBUaGUgc3VicGF0aHMgbGlzdCBjb3VsZCBiZSBlbXB0eSwgaWYgZXZlcnkgY2hp bGQgd2FzIHByb3ZlbiBlbXB0eSBieQpAQCAtMTM3MywxNSArMTM3NSwyMyBAQCBjcmVhdGVfYXBw ZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZs YWdzKQogCQkJKytuYXN5bmNwbGFuczsKIAkJfQogCisJCS8qCisJCSAqIEZpbmQgcGFydGl0aW9u ZWQgcGFyZW50IHJlbChzKSBvZiB0aGUgc3VicGF0aCdzIHJlbChzKS4KKwkJICovCisJCWFsbHBh cnRyZWxpZHMgPSBhZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhyb290LCBzdWJwYXRoLCBy ZWwsCisJCQkJCQkJCQkJCQkJICBhbGxwYXJ0cmVsaWRzKTsKKwogCQlzdWJwbGFucyA9IGxhcHBl bmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCXBsYW4tPmFsbHBhcnRyZWxpZHMgPSBhbGxw YXJ0cmVsaWRzOworCiAJLyoKLQkgKiBJZiBhbnkgcXVhbHMgZXhpc3QsIHRoZXkgbWF5IGJlIHVz ZWZ1bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0aW9uCi0JICogcHJ1bmluZyBkdXJpbmcgZXhl Y3V0aW9uLiAgR2F0aGVyIGluZm9ybWF0aW9uIG5lZWRlZCBieSB0aGUgZXhlY3V0b3IgdG8KLQkg KiBkbyBwYXJ0aXRpb24gcHJ1bmluZy4KKwkgKiBJZiBzY2FubmluZyBwYXJ0aXRpb25zLCBjaGVj ayBpZiB0aGVyZSBhcmUgcXVhbHMgdGhhdCBtYXkgYmUgdXNlZnVsIHRvCisJICogcGVyZm9ybSBm dXJ0aGVyIHBhcnRpdGlvbiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBHYXRoZXIgaW5mb3Jt YXRpb24KKwkgKiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvIGRvIHBhcnRpdGlvbiBwcnVuaW5n LgogCSAqLwotCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcpCisJaWYgKGVuYWJsZV9wYXJ0 aXRpb25fcHJ1bmluZyAmJiBhbGxwYXJ0cmVsaWRzICE9IE5JTCkKIAl7CiAJCUxpc3QJICAgKnBy dW5lcXVhbDsKIApAQCAtMTQwMiw3ICsxNDEyLDggQEAgY3JlYXRlX2FwcGVuZF9wbGFuKFBsYW5u ZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFncykKIAkJCXBhcnRw cnVuZWluZm8gPQogCQkJCW1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCiAJCQkJ CQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJIHBydW5lcXVhbCk7CisJCQkJ CQkJCQkJIHBydW5lcXVhbCwKKwkJCQkJCQkJCQkgYWxscGFydHJlbGlkcyk7CiAJfQogCiAJcGxh bi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKQEAgLTE0NDgsNiArMTQ1OSw3IEBAIGNyZWF0ZV9t ZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0 X3BhdGgsCiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJUmVsT3B0SW5mbyAqcmVsID0gYmVzdF9w YXRoLT5wYXRoLnBhcmVudDsKIAlQYXJ0aXRpb25QcnVuZUluZm8gKnBhcnRwcnVuZWluZm8gPSBO VUxMOworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHMgPSBOSUw7CiAKIAkvKgogCSAqIFdlIGRvbid0 IGhhdmUgdGhlIGFjdHVhbCBjcmVhdGlvbiBvZiB0aGUgTWVyZ2VBcHBlbmQgbm9kZSBzcGxpdCBv dXQKQEAgLTE1MzcsMTUgKzE1NDksMjMgQEAgY3JlYXRlX21lcmdlX2FwcGVuZF9wbGFuKFBsYW5u ZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAkJCXN1YnBsYW4gPSAo UGxhbiAqKSBzb3J0OwogCQl9CiAKKwkJLyoKKwkJICogRmluZCBwYXJ0aXRpb25lZCBwYXJlbnQg cmVsKHMpIG9mIHRoZSBzdWJwYXRoJ3MgcmVsKHMpLgorCQkgKi8KKwkJYWxscGFydHJlbGlkcyA9 IGFkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKHJvb3QsIHN1YnBhdGgsIHJlbCwKKwkJCQkJ CQkJCQkJCQkgIGFsbHBhcnRyZWxpZHMpOworCiAJCXN1YnBsYW5zID0gbGFwcGVuZChzdWJwbGFu cywgc3VicGxhbik7CiAJfQogCisJbm9kZS0+YWxscGFydHJlbGlkcyA9IGFsbHBhcnRyZWxpZHM7 CisKIAkvKgotCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkgYmUgdXNlZnVsIHRvIHBl cmZvcm0gZnVydGhlciBwYXJ0aXRpb24KLQkgKiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBH YXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0bwotCSAqIGRvIHBhcnRp dGlvbiBwcnVuaW5nLgorCSAqIElmIHNjYW5uaW5nIHBhcnRpdGlvbnMsIGNoZWNrIGlmIHRoZXJl IGFyZSBxdWFscyB0aGF0IG1heSBiZSB1c2VmdWwgdG8KKwkgKiBwZXJmb3JtIGZ1cnRoZXIgcGFy dGl0aW9uIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZvcm1hdGlvbgorCSAq IG5lZWRlZCBieSB0aGUgZXhlY3V0b3IgdG8gZG8gcGFydGl0aW9uIHBydW5pbmcuCiAJICovCi0J aWYgKGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZykKKwlpZiAoZW5hYmxlX3BhcnRpdGlvbl9wcnVu aW5nICYmIGFsbHBhcnRyZWxpZHMgIT0gTklMKQogCXsKIAkJTGlzdAkgICAqcHJ1bmVxdWFsOwog CkBAIC0xNTU3LDcgKzE1NzcsOCBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lcklu Zm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQlpZiAocHJ1bmVxdWFsICE9 IE5JTCkKIAkJCXBhcnRwcnVuZWluZm8gPSBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwg cmVsLAogCQkJCQkJCQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCSBw cnVuZXF1YWwpOworCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwsCisJCQkJCQkJCQkJCQkJIGFsbHBh cnRyZWxpZHMpOwogCX0KIAogCW5vZGUtPm1lcmdlcGxhbnMgPSBzdWJwbGFuczsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA5NDhhZmQ5MDk0Li4yYzJlMzhmNTg5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC01MjIsNiArNTIyLDcgQEAgc3RhbmRh cmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywgaW50IGN1 cnNvck9wdGlvbnMsCiAJQXNzZXJ0KGdsb2ItPmZpbmFscm93bWFya3MgPT0gTklMKTsKIAlBc3Nl cnQoZ2xvYi0+cmVzdWx0UmVsYXRpb25zID09IE5JTCk7CiAJQXNzZXJ0KGdsb2ItPmFwcGVuZFJl bGF0aW9ucyA9PSBOSUwpOworCUFzc2VydChnbG9iLT5lbGlkZWRBcHBlbmRQYXJ0UmVscyA9PSBO SUwpOwogCXRvcF9wbGFuID0gc2V0X3BsYW5fcmVmZXJlbmNlcyhyb290LCB0b3BfcGxhbik7CiAJ LyogLi4uIGFuZCB0aGUgc3VicGxhbnMgKGJvdGggcmVndWxhciBzdWJwbGFucyBhbmQgaW5pdHBs YW5zKSAqLwogCUFzc2VydChsaXN0X2xlbmd0aChnbG9iLT5zdWJwbGFucykgPT0gbGlzdF9sZW5n dGgoZ2xvYi0+c3Vicm9vdHMpKTsKQEAgLTU0OSw2ICs1NTAsNyBAQCBzdGFuZGFyZF9wbGFubmVy KFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9u cywKIAlyZXN1bHQtPnBlcm1JbmZvcyA9IGdsb2ItPmZpbmFscnRlcGVybWluZm9zOwogCXJlc3Vs dC0+cmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cmVzdWx0UmVsYXRpb25zOwogCXJlc3VsdC0+YXBw ZW5kUmVsYXRpb25zID0gZ2xvYi0+YXBwZW5kUmVsYXRpb25zOworCXJlc3VsdC0+ZWxpZGVkQXBw ZW5kUGFydFJlbHMgPSBnbG9iLT5lbGlkZWRBcHBlbmRQYXJ0UmVsczsKIAlyZXN1bHQtPnN1YnBs YW5zID0gZ2xvYi0+c3VicGxhbnM7CiAJcmVzdWx0LT5yZXdpbmRQbGFuSURzID0gZ2xvYi0+cmV3 aW5kUGxhbklEczsKIAlyZXN1bHQtPnJvd01hcmtzID0gZ2xvYi0+ZmluYWxyb3dtYXJrczsKQEAg LTc5NDEsOCArNzk0MywxMSBAQCBjcmVhdGVfcGFydGl0aW9ud2lzZV9ncm91cGluZ19wYXRocyhQ bGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCSAgIGFnZ19jb3N0cywgZ2QsICZjaGlsZF9leHRy YSwKIAkJCQkJCQkJCSAgICZjaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwogCisJCS8qIE1h cmsgYXMgY2hpbGQgb2YgZ3JvdXBlZF9yZWwuICovCisJCWNoaWxkX2dyb3VwZWRfcmVsLT5wYXJl bnQgPSBncm91cGVkX3JlbDsKIAkJaWYgKGNoaWxkX3BhcnRpYWxseV9ncm91cGVkX3JlbCkKIAkJ eworCQkJY2hpbGRfcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5wYXJlbnQgPSBncm91cGVkX3JlbDsK IAkJCXBhcnRpYWxseV9ncm91cGVkX2xpdmVfY2hpbGRyZW4gPQogCQkJCWxhcHBlbmQocGFydGlh bGx5X2dyb3VwZWRfbGl2ZV9jaGlsZHJlbiwKIAkJCQkJCWNoaWxkX3BhcnRpYWxseV9ncm91cGVk X3JlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggN2FlZDg0NTg0Yy4u NGZjNWVkMTVhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVm cy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwpAQCAtMTc1Nyw2 ICsxNzU3LDEwIEBAIHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAkJ bGZpcnN0KGwpID0gc2V0X3BsYW5fcmVmcyhyb290LCAoUGxhbiAqKSBsZmlyc3QobCksIHJ0b2Zm c2V0KTsKIAl9CiAKKwkvKiBEbyB0aGlzIGJlZm9yZSBwb3NzaWJseSByZW1vdmluZyB0aGUgTWVy Z2VBcHBlbmQgbm9kZSBiZWxvdy4gKi8KKwlmb3JlYWNoKGwsIGFwbGFuLT5hbGxwYXJ0cmVsaWRz KQorCQlsZmlyc3QobCkgPSBvZmZzZXRfcmVsaWRfc2V0KChSZWxpZHMpIGxmaXJzdChsKSwgcnRv ZmZzZXQpOworCiAJLyoKIAkgKiBTZWUgaWYgaXQncyBzYWZlIHRvIGdldCByaWQgb2YgdGhlIEFw cGVuZCBlbnRpcmVseS4gIEZvciB0aGlzIHRvIGJlCiAJICogc2FmZSwgdGhlcmUgbXVzdCBiZSBv bmx5IG9uZSBjaGlsZCBwbGFuIGFuZCB0aGF0IGNoaWxkIHBsYW4ncyBwYXJhbGxlbApAQCAtMTc3 MCw3ICsxNzc0LDE0IEBAIHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwK IAkJUGxhbgkgICAqcCA9IChQbGFuICopIGxpbml0aWFsKGFwbGFuLT5hcHBlbmRwbGFucyk7CiAK IAkJaWYgKHAtPnBhcmFsbGVsX2F3YXJlID09IGFwbGFuLT5wbGFuLnBhcmFsbGVsX2F3YXJlKQor CQl7CisJCQlpZiAoYXBsYW4tPmFsbHBhcnRyZWxpZHMpCisJCQkJcm9vdC0+Z2xvYi0+ZWxpZGVk QXBwZW5kUGFydFJlbHMgPQorCQkJCQlsaXN0X2NvbmNhdChyb290LT5nbG9iLT5lbGlkZWRBcHBl bmRQYXJ0UmVscywKKwkJCQkJCQkJYXBsYW4tPmFsbHBhcnRyZWxpZHMpOworCiAJCQlyZXR1cm4g Y2xlYW5fdXBfcmVtb3ZlZF9wbGFuX2xldmVsKChQbGFuICopIGFwbGFuLCBwKTsKKwkJfQogCX0K IAogCS8qCkBAIC0xODMyLDYgKzE4NDMsMTAgQEAgc2V0X21lcmdlYXBwZW5kX3JlZmVyZW5jZXMo UGxhbm5lckluZm8gKnJvb3QsCiAJCWxmaXJzdChsKSA9IHNldF9wbGFuX3JlZnMocm9vdCwgKFBs YW4gKikgbGZpcnN0KGwpLCBydG9mZnNldCk7CiAJfQogCisJLyogRG8gdGhpcyBiZWZvcmUgcG9z c2libHkgcmVtb3ZpbmcgdGhlIE1lcmdlQXBwZW5kIG5vZGUgYmVsb3cuICovCisJZm9yZWFjaChs LCBtcGxhbi0+YWxscGFydHJlbGlkcykKKwkJbGZpcnN0KGwpID0gb2Zmc2V0X3JlbGlkX3NldCgo UmVsaWRzKSBsZmlyc3QobCksIHJ0b2Zmc2V0KTsKKwogCS8qCiAJICogU2VlIGlmIGl0J3Mgc2Fm ZSB0byBnZXQgcmlkIG9mIHRoZSBNZXJnZUFwcGVuZCBlbnRpcmVseS4gIEZvciB0aGlzIHRvCiAJ ICogYmUgc2FmZSwgdGhlcmUgbXVzdCBiZSBvbmx5IG9uZSBjaGlsZCBwbGFuIGFuZCB0aGF0IGNo aWxkIHBsYW4ncwpAQCAtMTg0Niw3ICsxODYxLDE0IEBAIHNldF9tZXJnZWFwcGVuZF9yZWZlcmVu Y2VzKFBsYW5uZXJJbmZvICpyb290LAogCQlQbGFuCSAgICpwID0gKFBsYW4gKikgbGluaXRpYWwo bXBsYW4tPm1lcmdlcGxhbnMpOwogCiAJCWlmIChwLT5wYXJhbGxlbF9hd2FyZSA9PSBtcGxhbi0+ cGxhbi5wYXJhbGxlbF9hd2FyZSkKKwkJeworCQkJaWYgKG1wbGFuLT5hbGxwYXJ0cmVsaWRzKQor CQkJCXJvb3QtPmdsb2ItPmVsaWRlZEFwcGVuZFBhcnRSZWxzID0KKwkJCQkJbGlzdF9jb25jYXQo cm9vdC0+Z2xvYi0+ZWxpZGVkQXBwZW5kUGFydFJlbHMsCisJCQkJCQkJCW1wbGFuLT5hbGxwYXJ0 cmVsaWRzKTsKKwogCQkJcmV0dXJuIGNsZWFuX3VwX3JlbW92ZWRfcGxhbl9sZXZlbCgoUGxhbiAq KSBtcGxhbiwgcCk7CisJCX0KIAl9CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBw ZW5kaW5mby5jCmluZGV4IDQ5ODk3MjI2MzcuLjA1NjljZDAwYTUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYworKysgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKQEAgLTEwMzgsMyArMTAzOCwxMzAgQEAgZGlzdHJpYnV0 ZV9yb3dfaWRlbnRpdHlfdmFycyhQbGFubmVySW5mbyAqcm9vdCkKIAkJfQogCX0KIH0KKworLyoK KyAqIGFkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzCisgKgkJTG9vayB1cCBhIGNoaWxkIHN1 YnBhdGgncyByZWwncyBwYXJ0aXRpb25lZCBwYXJlbnQgcmVsaWRzIHVwIHRvCisgKgkJcGFyZW50 cmVsIGFuZCBhZGQgdGhlIGJpdG1hcHNldCBjb250YWluaW5nIHRob3NlIGludG8KKyAqCQknYWxs cGFydHJlbGlkcycKKyAqLworTGlzdCAqCithZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhQ bGFubmVySW5mbyAqcm9vdCwgUGF0aCAqc3VicGF0aCwKKwkJCQkJCQkgIFJlbE9wdEluZm8gKnBh cmVudHJlbCwKKwkJCQkJCQkgIExpc3QgKmFsbHBhcnRyZWxpZHMpCit7CisJUmVsT3B0SW5mbyAq cGF0aHJlbCA9IHN1YnBhdGgtPnBhcmVudDsKKwlSZWxpZHMJCXBhcnRyZWxpZHMgPSBOVUxMOwor CUluZGV4CQl0b3BfcGFyZW50OworCUxpc3RDZWxsICAgKmxjOworCisJLyogTm90aGluZyB0byBk byBpZiB0aGVyZSdzIG5vIHBhcmVudCB0byBiZWdpbiB3aXRoLiAqLworCWlmICghSVNfT1RIRVJf UkVMKHBhdGhyZWwpKQorCQlyZXR1cm4gYWxscGFydHJlbGlkczsKKworCS8qCisJICogVHJhdmVy c2UgdXAgdG8gdGhlIHBhdGhyZWwncyB0b3Btb3N0IHBhcnRpdGlvbmVkIHBhcmVudCwgY29sbGVj dGluZworCSAqIHBhcmVudCByZWxpZHMgYXMgd2UgZ287IGJ1dCBzdG9wIGlmIHdlIHJlYWNoIHBh cmVudHJlbC4gIChOb3JtYWxseSwgYQorCSAqIHBhdGhyZWwncyB0b3Btb3N0IHBhcnRpdGlvbmVk IHBhcmVudCBpcyBlaXRoZXIgcGFyZW50cmVsIG9yIGEgVU5JT04gQUxMCisJICogYXBwZW5kcmVs IGNoaWxkIG9mIHBhcmVudHJlbC4gIEJ1dCB3aGVuIGhhbmRsaW5nIHBhcnRpdGlvbndpc2Ugam9p bnMgb2YKKwkgKiBtdWx0aS1sZXZlbCBwYXJ0aXRpb25pbmcgdHJlZXMsIHdlIGNhbiBzZWUgYW4g YXBwZW5kIHBhdGggd2hvc2UKKwkgKiBwYXJlbnRyZWwgaXMgYW4gaW50ZXJtZWRpYXRlIHBhcnRp dGlvbmVkIHRhYmxlLikKKwkgKi8KKwlkbworCXsKKwkJUmVsaWRzCXBhcmVudF9yZWxpZHMgPSBO VUxMOworCisJCS8qCisJCSAqIEZvciBzaW1wbGUgY2hpbGQgcmVscywgd2UgY2FuIHNpbXBseSBz ZXQgdGhlIHBhcmVudF9yZWxpZHMgdG8KKwkJICogcGF0aHJlbC0+cGFyZW50LT5yZWxpZHMuICBC dXQgZm9yIHBhcnRpdGlvbndpc2Ugam9pbiBhbmQgYWdncmVnYXRlCisJCSAqIGNoaWxkIHJlbHMs IHdoaWxlIHdlIGNhbiB1c2UgcGF0aHJlbC0+cGFyZW50IHRvIG1vdmUgdXAgdGhlIHRyZWUsCisJ CSAqIHBhcmVudF9yZWxpZHMgbXVzdCBiZSBmb3VuZCB0aGUgaGFyZCB3YXkgdGhyb3VnaCBBcHBl bmRJbmZvSW5mb3MsCisJCSAqIGJlY2F1c2UgMSkgYSBqb2lucmVsJ3MgcmVsaWRzIG1heSBwb2lu dCB0byBSVEVfSk9JTiBlbnRyaWVzLAorCQkgKiAyKSB0b3Btb3N0IHBhcmVudCBncm91cGluZyBy ZWwncyByZWxpZHMgZmllbGQgaXMgTlVMTC4KKwkJICovCisJCWlmIChJU19TSU1QTEVfUkVMKHBh dGhyZWwpKQorCQl7CisJCQlwYXRocmVsID0gcGF0aHJlbC0+cGFyZW50OworCQkJLyogU3RvcCBv bmNlIHdlIHJlYWNoIHRoZSByb290IHBhcnRpdGlvbmVkIHJlbC4gKi8KKwkJCWlmICghSVNfUEFS VElUSU9ORURfUkVMKHBhdGhyZWwpKQorCQkJCWJyZWFrOworCQkJcGFyZW50X3JlbGlkcyA9IGJt c19hZGRfbWVtYmVycyhwYXJlbnRfcmVsaWRzLCBwYXRocmVsLT5yZWxpZHMpOworCQl9CisJCWVs c2UKKwkJeworCQkJQXBwZW5kUmVsSW5mbyAqKmFwcGluZm9zOworCQkJaW50CQluYXBwaW5mb3Ms CisJCQkJCWk7CisKKwkJCWFwcGluZm9zID0gZmluZF9hcHBpbmZvc19ieV9yZWxpZHMocm9vdCwg cGF0aHJlbC0+cmVsaWRzLAorCQkJCQkJCQkJCQkgICAmbmFwcGluZm9zKTsKKwkJCWZvciAoaSA9 IDA7IGkgPCBuYXBwaW5mb3M7IGkrKykKKwkJCXsKKwkJCQlBcHBlbmRSZWxJbmZvICphcHBpbmZv ID0gYXBwaW5mb3NbaV07CisKKwkJCQlwYXJlbnRfcmVsaWRzID0gYm1zX2FkZF9tZW1iZXIocGFy ZW50X3JlbGlkcywKKwkJCQkJCQkJCQkJICAgYXBwaW5mby0+cGFyZW50X3JlbGlkKTsKKwkJCX0K KwkJCXBmcmVlKGFwcGluZm9zKTsKKwkJCXBhdGhyZWwgPSBwYXRocmVsLT5wYXJlbnQ7CisJCX0K KwkJLyogYWNjZXB0IHRoaXMgbGV2ZWwgYXMgYW4gaW50ZXJlc3RpbmcgcGFyZW50ICovCisJCXBh cnRyZWxpZHMgPSBibXNfYWRkX21lbWJlcnMocGFydHJlbGlkcywgcGFyZW50X3JlbGlkcyk7CisJ CWlmIChwYXRocmVsID09IHBhcmVudHJlbCkKKwkJCWJyZWFrOwkJLyogZG9uJ3QgdHJhdmVyc2Ug YWJvdmUgcGFyZW50cmVsICovCisJfSB3aGlsZSAoSVNfT1RIRVJfUkVMKHBhdGhyZWwpKTsKKwor CWlmIChwYXJ0cmVsaWRzID09IE5VTEwpCisJCXJldHVybiBhbGxwYXJ0cmVsaWRzOworCisJLyoK KwkgKiBBcHBlbmQgdGhlICdwYXJ0cmVsaWRzJyBSVCBpbmRleCBiaXRtYXBzZXQgdG8gJ2FsbHBh cnRyZWxpZHMnIG9yCisJICogbWVyZ2UgdGhlIFJUIGluZGV4ZXMgaW50byBhbiBhcHByb3ByaWF0 ZSBiaXRtYXBzZXQgYWxyZWFkeSBwcmVzZW50CisJICogaW4gdGhlIGxpc3QKKwkgKgorCSAqIFdp dGhpbiAnYWxscGFydHJlbGlkcycsIHRoZXJlIGlzIG9uZSBCaXRtYXBzZXQgZm9yIGVhY2ggdG9w bW9zdCBwYXJlbnQKKwkgKiBwYXJ0aXRpb25lZCByZWwgbWVudGlvbmVkIGluIHRoZSBxdWVyeSB3 aG9zZSBjaGlsZHJlbidzIHN1YnBhdGhzIGhhdmUKKwkgKiBiZWVuIHBhc3NlZCB0byBhZGRfYXBw ZW5kX3N1YnBhdGhfcGFydHJlbGlkcy4gIEVhY2ggQml0bWFwc2V0IGNvbnRhaW5zCisJICogdGhl IFJUIGluZGV4ZXMgb2YgdGhlIHRvcG1vc3QgcGFyZW50IGFzIHdlbGwgYXMgaXRzIHJlbGV2YW50 IG5vbi1sZWFmCisJICogY2hpbGQgcGFydGl0aW9ucy4gIFNpbmNlIChieSBjb25zdHJ1Y3Rpb24g b2YgdGhlIHJhbmdldGFibGUgbGlzdCkgcGFyZW50CisJICogcGFydGl0aW9ucyBtdXN0IGhhdmUg bG93ZXIgUlQgaW5kZXhlcyB0aGFuIHRoZWlyIGNoaWxkcmVuLCB3ZSBjYW4KKwkgKiBkaXN0aW5n dWlzaCB0aGUgdG9wbW9zdCBwYXJlbnQgYXMgYmVpbmcgdGhlIGxvd2VzdCBzZXQgYml0IGluIHRo ZQorCSAqIEJpdG1hcHNldC4KKwkgKgorCSAqIE5vdGUgdGhhdCB0aGUgbGlzdCBjb250YWlucyBv bmx5IFJUIGluZGV4ZXMgb2YgcGFydGl0aW9uZWQgdGFibGVzIHRoYXQKKwkgKiBhcmUgcGFyZW50 cyBvZiBzb21lIHNjYW4tbGV2ZWwgcmVsYXRpb24gYXBwZWFyaW5nIGluIHRoZSAnc3VicGF0aHMn IHRoYXQKKwkgKiBhZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcygpIGlzIGRlYWxpbmcgd2l0 aC4gIEFsc28sICJ0b3Btb3N0IgorCSAqIHBhcmVudHMgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIGhp Z2hlciB0aGFuIHRoZSAncGFyZW50cmVsJyBhc3NvY2lhdGVkCisJICogd2l0aCB0aGUgYXBwZW5k IHBhdGguICBJbiB0aGlzIHdheSwgd2UgYXZvaWQgZXhwZW5kaW5nIGN5Y2xlcyBvbgorCSAqIHBh cnRpdGlvbmVkIHJlbHMgdGhhdCBjYW4ndCBjb250cmlidXRlIHVzZWZ1bCBwcnVuaW5nIGluZm9y bWF0aW9uIGZvcgorCSAqIHRoZSBwcm9ibGVtIGF0IGhhbmQuCisJICoKKwkgKiAoSXQgaXMgcG9z c2libGUgZm9yICdwYXJlbnRyZWwnIHRvIGJlIGEgY2hpbGQgcGFydGl0aW9uZWQgdGFibGUsIGFu ZCBpdAorCSAqIGlzIGFsc28gcG9zc2libGUgZm9yIHNjYW4tbGV2ZWwgcmVsYXRpb25zIHRvIGJl IGNoaWxkIHBhcnRpdGlvbmVkIHRhYmxlcworCSAqIHJhdGhlciB0aGFuIGxlYWYgcGFydGl0aW9u cy4gIEhlbmNlIHdlIG11c3QgY29uc3RydWN0IHRoaXMgcmVsYXRpb24gc2V0CisJICogd2l0aCBy ZWZlcmVuY2UgdG8gdGhlIHBhcnRpY3VsYXIgYXBwZW5kIHBhdGggd2UncmUgZGVhbGluZyB3aXRo LCByYXRoZXIKKwkgKiB0aGFuIGxvb2tpbmcgYXQgdGhlIGZ1bGwgcGFydGl0aW9uaW5nIHN0cnVj dHVyZSByZXByZXNlbnRlZCBpbiB0aGUKKwkgKiBSZWxPcHRJbmZvcy4pCisJICovCisKKwkvKiBX ZSBjYW4gZWFzaWx5IGdldCB0aGUgbG93ZXN0IHNldCBiaXQgdGhpcyB3YXk6ICovCisJdG9wX3Bh cmVudCA9IGJtc19uZXh0X21lbWJlcihwYXJ0cmVsaWRzLCAtMSk7CisJQXNzZXJ0KHRvcF9wYXJl bnQgPiAwKTsKKworCS8qIExvb2sgZm9yIGEgbWF0Y2hpbmcgdG9wbW9zdCBwYXJlbnQgKi8KKwlm b3JlYWNoKGxjLCBhbGxwYXJ0cmVsaWRzKQorCXsKKwkJQml0bWFwc2V0ICAqY3VycnBhcnRyZWxp ZHMgPSAoQml0bWFwc2V0ICopIGxmaXJzdChsYyk7CisJCUluZGV4CQljdXJydGFyZ2V0ID0gYm1z X25leHRfbWVtYmVyKGN1cnJwYXJ0cmVsaWRzLCAtMSk7CisKKwkJaWYgKHRvcF9wYXJlbnQgPT0g Y3VycnRhcmdldCkKKwkJeworCQkJLyogRm91bmQgYSBtYXRjaCwgc28gYWRkIGFueSBuZXcgUlQg aW5kZXhlcyB0byB0aGlzIGhpZXJhcmNoeSAqLworCQkJY3VycnBhcnRyZWxpZHMgPSBibXNfYWRk X21lbWJlcnMoY3VycnBhcnRyZWxpZHMsIHBhcnRyZWxpZHMpOworCQkJbGZpcnN0KGxjKSA9IGN1 cnJwYXJ0cmVsaWRzOworCQkJcmV0dXJuIGFsbHBhcnRyZWxpZHM7CisJCX0KKwl9CisJLyogTm8g bWF0Y2gsIHNvIGFkZCB0aGUgbmV3IHBhcnRpdGlvbiBoaWVyYXJjaHkgdG8gdGhlIGxpc3QgKi8K KwlyZXR1cm4gbGFwcGVuZChhbGxwYXJ0cmVsaWRzLCBwYXJ0cmVsaWRzKTsKK30KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3Bh cnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRleCA5YTFhN2ZhYWM3Li4yYWZjMTBjNDBiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCkBAIC0xMzcsNyArMTM3LDYgQEAgdHlwZWRl ZiBzdHJ1Y3QgUHJ1bmVTdGVwUmVzdWx0CiB9IFBydW5lU3RlcFJlc3VsdDsKIAogCi1zdGF0aWMg TGlzdCAqYWRkX3BhcnRfcmVsaWRzKExpc3QgKmFsbHBhcnRyZWxpZHMsIEJpdG1hcHNldCAqcGFy dHJlbGlkcyk7CiBzdGF0aWMgTGlzdCAqbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxh bm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJICAgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJ CQkJCQkJCSAgIExpc3QgKnBydW5lcXVhbCwKQEAgLTIxNSwzMyArMjE0LDMyIEBAIHN0YXRpYyB2 b2lkIHBhcnRrZXlfZGF0dW1fZnJvbV9leHByKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4 dCwKICAqIG9mIHNjYW4gcGF0aHMgZm9yIGl0cyBjaGlsZCByZWxzLgogICogJ3BydW5lcXVhbCcg aXMgYSBsaXN0IG9mIHBvdGVudGlhbCBwcnVuaW5nIHF1YWxzIChpLmUuLCByZXN0cmljdGlvbgog ICogY2xhdXNlcyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBhcHBlbmRyZWwpLgorICogJ2Fs bHBhcnRyZWxpZHMnIGNvbnRhaW5zIEJpdG1hcHNldHMgb2YgUlQgaW5kZXhlcyBvZiBwYXJ0aXRp b25lZCBwYXJlbnRzCisgKiB3aG9zZSBwYXJ0aXRpb25zJyBQYXRocyBhcmUgaW4gJ3N1YnBhdGhz JzsgdGhlcmUncyBvbmUgQml0bWFwc2V0IGZvciBldmVyeQorICogcGFydGl0aW9uIHRyZWUgaW52 b2x2ZWQuCiAgKi8KIFBhcnRpdGlvblBydW5lSW5mbyAqCiBtYWtlX3BhcnRpdGlvbl9wcnVuZWlu Zm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCSBMaXN0 ICpzdWJwYXRocywKLQkJCQkJCSBMaXN0ICpwcnVuZXF1YWwpCisJCQkJCQkgTGlzdCAqcHJ1bmVx dWFsLAorCQkJCQkJIExpc3QgKmFsbHBhcnRyZWxpZHMpCiB7CiAJUGFydGl0aW9uUHJ1bmVJbmZv ICpwcnVuZWluZm87CiAJQml0bWFwc2V0ICAqYWxsbWF0Y2hlZHN1YnBsYW5zID0gTlVMTDsKLQlM aXN0CSAgICphbGxwYXJ0cmVsaWRzOwogCUxpc3QJICAgKnBydW5lcmVsaW5mb3M7CiAJaW50CQkg ICAqcmVsaWRfc3VicGxhbl9tYXA7CiAJTGlzdENlbGwgICAqbGM7CiAJaW50CQkJaTsKIAorCUFz c2VydChsaXN0X2xlbmd0aChhbGxwYXJ0cmVsaWRzKSA+IDApOworCiAJLyoKLQkgKiBTY2FuIHRo ZSBzdWJwYXRocyB0byBzZWUgd2hpY2ggb25lcyBhcmUgc2NhbnMgb2YgcGFydGl0aW9uIGNoaWxk Ci0JICogcmVsYXRpb25zLCBhbmQgaWRlbnRpZnkgdGhlaXIgcGFyZW50IHBhcnRpdGlvbmVkIHJl bHMuICAoTm90ZTogd2UgbXVzdAotCSAqIHJlc3RyaWN0IHRoZSBwYXJlbnQgcGFydGl0aW9uZWQg cmVscyB0byBiZSBwYXJlbnRyZWwgb3IgY2hpbGRyZW4gb2YKLQkgKiBwYXJlbnRyZWwsIG90aGVy d2lzZSB3ZSBjb3VsZG4ndCB0cmFuc2xhdGUgcHJ1bmVxdWFsIHRvIG1hdGNoLikKLQkgKgotCSAq IEFsc28gY29uc3RydWN0IGEgdGVtcG9yYXJ5IGFycmF5IHRvIG1hcCBmcm9tIHBhcnRpdGlvbi1j aGlsZC1yZWxhdGlvbgotCSAqIHJlbGlkIHRvIHRoZSBpbmRleCBpbiAnc3VicGF0aHMnIG9mIHRo ZSBzY2FuIHBsYW4gZm9yIHRoYXQgcGFydGl0aW9uLgorCSAqIENvbnN0cnVjdCBhIHRlbXBvcmFy eSBhcnJheSB0byBtYXAgZnJvbSBwYXJ0aXRpb24tY2hpbGQtcmVsYXRpb24gcmVsaWQKKwkgKiB0 byB0aGUgaW5kZXggaW4gJ3N1YnBhdGhzJyBvZiB0aGUgc2NhbiBwbGFuIGZvciB0aGF0IHBhcnRp dGlvbi4KIAkgKiAoVXNlIG9mICJzdWJwbGFuIiByYXRoZXIgdGhhbiAic3VicGF0aCIgaXMgYSBi aXQgb2YgYSBtaXNub21lciwgYnV0CiAJICogd2UnbGwgbGV0IGl0IHN0YW5kLikgIEZvciBjb252 ZW5pZW5jZSwgd2UgdXNlIDEtYmFzZWQgaW5kZXhlcyBoZXJlLCBzbwogCSAqIHRoYXQgemVybyBj YW4gcmVwcmVzZW50IGFuIHVuLWZpbGxlZCBhcnJheSBlbnRyeS4KIAkgKi8KLQlhbGxwYXJ0cmVs aWRzID0gTklMOwogCXJlbGlkX3N1YnBsYW5fbWFwID0gcGFsbG9jMChzaXplb2YoaW50KSAqIHJv b3QtPnNpbXBsZV9yZWxfYXJyYXlfc2l6ZSk7CiAKIAlpID0gMTsKQEAgLTI1MCw1MCArMjQ4LDkg QEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZv ICpwYXJlbnRyZWwsCiAJCVBhdGgJICAgKnBhdGggPSAoUGF0aCAqKSBsZmlyc3QobGMpOwogCQlS ZWxPcHRJbmZvICpwYXRocmVsID0gcGF0aC0+cGFyZW50OwogCi0JCS8qIFdlIGRvbid0IGNvbnNp ZGVyIHBhcnRpdGlvbmVkIGpvaW5zIGhlcmUgKi8KLQkJaWYgKHBhdGhyZWwtPnJlbG9wdGtpbmQg PT0gUkVMT1BUX09USEVSX01FTUJFUl9SRUwpCi0JCXsKLQkJCVJlbE9wdEluZm8gKnByZWwgPSBw YXRocmVsOwotCQkJQml0bWFwc2V0ICAqcGFydHJlbGlkcyA9IE5VTEw7Ci0KLQkJCS8qCi0JCQkg KiBUcmF2ZXJzZSB1cCB0byB0aGUgcGF0aHJlbCdzIHRvcG1vc3QgcGFydGl0aW9uZWQgcGFyZW50 LAotCQkJICogY29sbGVjdGluZyBwYXJlbnQgcmVsaWRzIGFzIHdlIGdvOyBidXQgc3RvcCBpZiB3 ZSByZWFjaAotCQkJICogcGFyZW50cmVsLiAgKE5vcm1hbGx5LCBhIHBhdGhyZWwncyB0b3Btb3N0 IHBhcnRpdGlvbmVkIHBhcmVudAotCQkJICogaXMgZWl0aGVyIHBhcmVudHJlbCBvciBhIFVOSU9O IEFMTCBhcHBlbmRyZWwgY2hpbGQgb2YKLQkJCSAqIHBhcmVudHJlbC4gIEJ1dCB3aGVuIGhhbmRs aW5nIHBhcnRpdGlvbndpc2Ugam9pbnMgb2YKLQkJCSAqIG11bHRpLWxldmVsIHBhcnRpdGlvbmlu ZyB0cmVlcywgd2UgY2FuIHNlZSBhbiBhcHBlbmQgcGF0aCB3aG9zZQotCQkJICogcGFyZW50cmVs IGlzIGFuIGludGVybWVkaWF0ZSBwYXJ0aXRpb25lZCB0YWJsZS4pCi0JCQkgKi8KLQkJCWRvCi0J CQl7Ci0JCQkJQXBwZW5kUmVsSW5mbyAqYXBwaW5mbzsKLQotCQkJCUFzc2VydChwcmVsLT5yZWxp ZCA8IHJvb3QtPnNpbXBsZV9yZWxfYXJyYXlfc2l6ZSk7Ci0JCQkJYXBwaW5mbyA9IHJvb3QtPmFw cGVuZF9yZWxfYXJyYXlbcHJlbC0+cmVsaWRdOwotCQkJCXByZWwgPSBmaW5kX2Jhc2VfcmVsKHJv b3QsIGFwcGluZm8tPnBhcmVudF9yZWxpZCk7Ci0JCQkJaWYgKCFJU19QQVJUSVRJT05FRF9SRUwo cHJlbCkpCi0JCQkJCWJyZWFrOwkJLyogcmVhY2hlZCBhIG5vbi1wYXJ0aXRpb25lZCBwYXJlbnQg Ki8KLQkJCQkvKiBhY2NlcHQgdGhpcyBsZXZlbCBhcyBhbiBpbnRlcmVzdGluZyBwYXJlbnQgKi8K LQkJCQlwYXJ0cmVsaWRzID0gYm1zX2FkZF9tZW1iZXIocGFydHJlbGlkcywgcHJlbC0+cmVsaWQp OwotCQkJCWlmIChwcmVsID09IHBhcmVudHJlbCkKLQkJCQkJYnJlYWs7CQkvKiBkb24ndCB0cmF2 ZXJzZSBhYm92ZSBwYXJlbnRyZWwgKi8KLQkJCX0gd2hpbGUgKHByZWwtPnJlbG9wdGtpbmQgPT0g UkVMT1BUX09USEVSX01FTUJFUl9SRUwpOwotCi0JCQlpZiAocGFydHJlbGlkcykKLQkJCXsKLQkJ CQkvKgotCQkJCSAqIEZvdW5kIHNvbWUgcmVsZXZhbnQgcGFyZW50IHBhcnRpdGlvbnMsIHdoaWNo IG1heSBvciBtYXkgbm90Ci0JCQkJICogb3ZlcmxhcCB3aXRoIHBhcnRpdGlvbiB0cmVlcyB3ZSBh bHJlYWR5IGZvdW5kLiAgQWRkIG5ldwotCQkJCSAqIGluZm9ybWF0aW9uIHRvIHRoZSBhbGxwYXJ0 cmVsaWRzIGxpc3QuCi0JCQkJICovCi0JCQkJYWxscGFydHJlbGlkcyA9IGFkZF9wYXJ0X3JlbGlk cyhhbGxwYXJ0cmVsaWRzLCBwYXJ0cmVsaWRzKTsKLQkJCQkvKiBBbHNvIHJlY29yZCB0aGUgc3Vi cGxhbiBpbiByZWxpZF9zdWJwbGFuX21hcFtdICovCi0JCQkJLyogTm8gZHVwbGljYXRlcyBwbGVh c2UgKi8KLQkJCQlBc3NlcnQocmVsaWRfc3VicGxhbl9tYXBbcGF0aHJlbC0+cmVsaWRdID09IDAp OwotCQkJCXJlbGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwtPnJlbGlkXSA9IGk7Ci0JCQl9Ci0JCX0K KwkJLyogTm8gZHVwbGljYXRlcyBwbGVhc2UgKi8KKwkJQXNzZXJ0KHJlbGlkX3N1YnBsYW5fbWFw W3BhdGhyZWwtPnJlbGlkXSA9PSAwKTsKKwkJcmVsaWRfc3VicGxhbl9tYXBbcGF0aHJlbC0+cmVs aWRdID0gaTsKIAkJaSsrOwogCX0KIApAQCAtMzU5LDYzICszMTYsNiBAQCBtYWtlX3BhcnRpdGlv bl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAly ZXR1cm4gcHJ1bmVpbmZvOwogfQogCi0vKgotICogYWRkX3BhcnRfcmVsaWRzCi0gKgkJQWRkIG5l dyBpbmZvIHRvIGEgbGlzdCBvZiBCaXRtYXBzZXRzIG9mIHBhcnRpdGlvbmVkIHJlbGlkcy4KLSAq Ci0gKiBXaXRoaW4gJ2FsbHBhcnRyZWxpZHMnLCB0aGVyZSBpcyBvbmUgQml0bWFwc2V0IGZvciBl YWNoIHRvcG1vc3QgcGFyZW50Ci0gKiBwYXJ0aXRpb25lZCByZWwuICBFYWNoIEJpdG1hcHNldCBj b250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiB0aGUgdG9wbW9zdAotICogcGFyZW50IGFzIHdlbGwg YXMgaXRzIHJlbGV2YW50IG5vbi1sZWFmIGNoaWxkIHBhcnRpdGlvbnMuICBTaW5jZSAoYnkKLSAq IGNvbnN0cnVjdGlvbiBvZiB0aGUgcmFuZ2V0YWJsZSBsaXN0KSBwYXJlbnQgcGFydGl0aW9ucyBt dXN0IGhhdmUgbG93ZXIKLSAqIFJUIGluZGV4ZXMgdGhhbiB0aGVpciBjaGlsZHJlbiwgd2UgY2Fu IGRpc3Rpbmd1aXNoIHRoZSB0b3Btb3N0IHBhcmVudAotICogYXMgYmVpbmcgdGhlIGxvd2VzdCBz ZXQgYml0IGluIHRoZSBCaXRtYXBzZXQuCi0gKgotICogJ3BhcnRyZWxpZHMnIGNvbnRhaW5zIHRo ZSBSVCBpbmRleGVzIG9mIGEgcGFyZW50IHBhcnRpdGlvbmVkIHJlbCwgYW5kCi0gKiBwb3NzaWJs eSBzb21lIG5vbi1sZWFmIGNoaWxkcmVuLCB0aGF0IGFyZSBuZXdseSBpZGVudGlmaWVkIGFzIHBh cmVudHMgb2YKLSAqIHNvbWUgc3VicGF0aCByZWwgcGFzc2VkIHRvIG1ha2VfcGFydGl0aW9uX3By dW5laW5mbygpLiAgVGhlc2UgYXJlIGFkZGVkCi0gKiB0byBhbiBhcHByb3ByaWF0ZSBtZW1iZXIg b2YgJ2FsbHBhcnRyZWxpZHMnLgotICoKLSAqIE5vdGUgdGhhdCB0aGUgbGlzdCBjb250YWlucyBv bmx5IFJUIGluZGV4ZXMgb2YgcGFydGl0aW9uZWQgdGFibGVzIHRoYXQKLSAqIGFyZSBwYXJlbnRz IG9mIHNvbWUgc2Nhbi1sZXZlbCByZWxhdGlvbiBhcHBlYXJpbmcgaW4gdGhlICdzdWJwYXRocycg dGhhdAotICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKCkgaXMgZGVhbGluZyB3aXRoLiAgQWxz bywgInRvcG1vc3QiIHBhcmVudHMgYXJlCi0gKiBub3QgYWxsb3dlZCB0byBiZSBoaWdoZXIgdGhh biB0aGUgJ3BhcmVudHJlbCcgYXNzb2NpYXRlZCB3aXRoIHRoZSBhcHBlbmQKLSAqIHBhdGguICBJ biB0aGlzIHdheSwgd2UgYXZvaWQgZXhwZW5kaW5nIGN5Y2xlcyBvbiBwYXJ0aXRpb25lZCByZWxz IHRoYXQKLSAqIGNhbid0IGNvbnRyaWJ1dGUgdXNlZnVsIHBydW5pbmcgaW5mb3JtYXRpb24gZm9y IHRoZSBwcm9ibGVtIGF0IGhhbmQuCi0gKiAoSXQgaXMgcG9zc2libGUgZm9yICdwYXJlbnRyZWwn IHRvIGJlIGEgY2hpbGQgcGFydGl0aW9uZWQgdGFibGUsIGFuZCBpdAotICogaXMgYWxzbyBwb3Nz aWJsZSBmb3Igc2Nhbi1sZXZlbCByZWxhdGlvbnMgdG8gYmUgY2hpbGQgcGFydGl0aW9uZWQgdGFi bGVzCi0gKiByYXRoZXIgdGhhbiBsZWFmIHBhcnRpdGlvbnMuICBIZW5jZSB3ZSBtdXN0IGNvbnN0 cnVjdCB0aGlzIHJlbGF0aW9uIHNldAotICogd2l0aCByZWZlcmVuY2UgdG8gdGhlIHBhcnRpY3Vs YXIgYXBwZW5kIHBhdGggd2UncmUgZGVhbGluZyB3aXRoLCByYXRoZXIKLSAqIHRoYW4gbG9va2lu ZyBhdCB0aGUgZnVsbCBwYXJ0aXRpb25pbmcgc3RydWN0dXJlIHJlcHJlc2VudGVkIGluIHRoZQot ICogUmVsT3B0SW5mb3MuKQotICovCi1zdGF0aWMgTGlzdCAqCi1hZGRfcGFydF9yZWxpZHMoTGlz dCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0ICpwYXJ0cmVsaWRzKQotewotCUluZGV4CQl0YXJn ZXRwYXJ0OwotCUxpc3RDZWxsICAgKmxjOwotCi0JLyogV2UgY2FuIGVhc2lseSBnZXQgdGhlIGxv d2VzdCBzZXQgYml0IHRoaXMgd2F5OiAqLwotCXRhcmdldHBhcnQgPSBibXNfbmV4dF9tZW1iZXIo cGFydHJlbGlkcywgLTEpOwotCUFzc2VydCh0YXJnZXRwYXJ0ID4gMCk7Ci0KLQkvKiBMb29rIGZv ciBhIG1hdGNoaW5nIHRvcG1vc3QgcGFyZW50ICovCi0JZm9yZWFjaChsYywgYWxscGFydHJlbGlk cykKLQl7Ci0JCUJpdG1hcHNldCAgKmN1cnJwYXJ0cmVsaWRzID0gKEJpdG1hcHNldCAqKSBsZmly c3QobGMpOwotCQlJbmRleAkJY3VycnRhcmdldCA9IGJtc19uZXh0X21lbWJlcihjdXJycGFydHJl bGlkcywgLTEpOwotCi0JCWlmICh0YXJnZXRwYXJ0ID09IGN1cnJ0YXJnZXQpCi0JCXsKLQkJCS8q IEZvdW5kIGEgbWF0Y2gsIHNvIGFkZCBhbnkgbmV3IFJUIGluZGV4ZXMgdG8gdGhpcyBoaWVyYXJj aHkgKi8KLQkJCWN1cnJwYXJ0cmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGN1cnJwYXJ0cmVsaWRz LCBwYXJ0cmVsaWRzKTsKLQkJCWxmaXJzdChsYykgPSBjdXJycGFydHJlbGlkczsKLQkJCXJldHVy biBhbGxwYXJ0cmVsaWRzOwotCQl9Ci0JfQotCS8qIE5vIG1hdGNoLCBzbyBhZGQgdGhlIG5ldyBw YXJ0aXRpb24gaGllcmFyY2h5IHRvIHRoZSBsaXN0ICovCi0JcmV0dXJuIGxhcHBlbmQoYWxscGFy dHJlbGlkcywgcGFydHJlbGlkcyk7Ci19Ci0KIC8qCiAgKiBtYWtlX3BhcnRpdGlvbmVkcmVsX3By dW5laW5mbwogICoJCUJ1aWxkIGEgTGlzdCBvZiBQYXJ0aXRpb25lZFJlbFBydW5lSW5mb3MsIG9u ZSBmb3IgZWFjaCBpbnRlcmVzdGluZwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCAxNGNjZmMxYWMx Li43M2MyYTcwMDI4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTI4LDYgKzEyOCw5IEBAIHR5 cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9iYWwKIAkvKiAiZmxhdCIgbGlzdCBvZiBBcHBlbmRSZWxJ bmZvcyAqLwogCUxpc3QJICAgKmFwcGVuZFJlbGF0aW9uczsKIAorCS8qICJmbGF0IGxpc3Qgb2Yg Qml0bWFwc2V0cyBvZiBSVCBpbmRleGVzICIqLworCUxpc3QJICAgKmVsaWRlZEFwcGVuZFBhcnRS ZWxzOworCiAJLyogT0lEcyBvZiByZWxhdGlvbnMgdGhlIHBsYW4gZGVwZW5kcyBvbiAqLwogCUxp c3QJICAgKnJlbGF0aW9uT2lkczsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCAxYWVlYWVjOTVl Li42MzRjMTkwOGNhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtNzksNiArNzksMTEgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAogCUxpc3QJICAgKmFwcGVuZFJlbGF0aW9uczsJLyog bGlzdCBvZiBBcHBlbmRSZWxJbmZvIG5vZGVzICovCiAKKwlMaXN0CSAgICplbGlkZWRBcHBlbmRQ YXJ0UmVsczsgLyogbGlzdCBvZiBCaXRtYXBzZXRzIG9mIFJUIGluZGV4ZXMgb2YKKwkJCQkJCQkJ CSAgICogcGFydGl0aW9uZWQgdGFibGVzIGZyb20gQXBwZW5kLworCQkJCQkJCQkJICAgKiBNZXJn ZUFwcGVuZCBub2RlcyB0aGF0IHdlcmUgZWxpZGVkCisJCQkJCQkJCQkgICAqIGluIHNldHJlZnMu YyAqLworCiAJTGlzdAkgICAqc3VicGxhbnM7CQkvKiBQbGFuIHRyZWVzIGZvciBTdWJQbGFuIGV4 cHJlc3Npb25zOyBub3RlCiAJCQkJCQkJCSAqIHRoYXQgc29tZSBjb3VsZCBiZSBOVUxMICovCiAK QEAgLTI2OSw2ICsyNzQsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5kCiAJTGlzdAkgICAqYXBw ZW5kcGxhbnM7CiAJaW50CQkJbmFzeW5jcGxhbnM7CS8qICMgb2YgYXN5bmNocm9ub3VzIHBsYW5z ICovCiAKKwkvKgorCSAqIExpc3Qgb2YgYml0bWFwc2V0cyBjb250YWluaW5nIFJUIGluZGV4ZXMg b2YgYWxsIHBhcnRpdGlvbmVkIHRhYmxlcworCSAqIHNjYW5uZWQgYnkgdGhpcyBBcHBlbmQsIHdp dGggb25lIGJpdG1hcHNldCBmb3IgZXZlcnkgcGFydGl0aW9uZWQKKwkgKiB0YWJsZSBhcHBlYXJp bmcgaW4gdGhlIHF1ZXJ5LiAgRWFjaCBiaXRtYXBzZXQgY29udGFpbnMgdGhlIFJUIGluZGV4ZXMK KwkgKiBvZiBhbGwgbm9uLXBydW5lZCBub24tbGVhZiBwYXJ0aXRpb25zIGluIHRoZSB0cmVlIHdp dGggYSBnaXZlbgorCSAqIHBhcnRpdGlvbmVkIHRhYmxlIGFzIHJvb3QuCisJICovCisJTGlzdAkg ICAqYWxscGFydHJlbGlkczsKKwogCS8qCiAJICogQWxsICdhcHBlbmRwbGFucycgcHJlY2VkaW5n IHRoaXMgaW5kZXggYXJlIG5vbi1wYXJ0aWFsIHBsYW5zLiBBbGwKIAkgKiAnYXBwZW5kcGxhbnMn IGZyb20gdGhpcyBpbmRleCBvbndhcmRzIGFyZSBwYXJ0aWFsIHBsYW5zLgpAQCAtMjkzLDYgKzMw Nyw5IEBAIHR5cGVkZWYgc3RydWN0IE1lcmdlQXBwZW5kCiAKIAlMaXN0CSAgICptZXJnZXBsYW5z OwogCisJLyogU2VlIHRoZSBkZXNjcmlwdGlvbiBpbiBBcHBlbmQncyBkZWZpbml0aW9uLiAqLwor CUxpc3QJICAgKmFsbHBhcnRyZWxpZHM7CisKIAkvKiB0aGVzZSBmaWVsZHMgYXJlIGp1c3QgbGlr ZSB0aGUgc29ydC1rZXkgaW5mbyBpbiBzdHJ1Y3QgU29ydDogKi8KIAogCS8qIG51bWJlciBvZiBz b3J0LWtleSBjb2x1bW5zICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBw ZW5kaW5mby5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVuZGluZm8uaAppbmRleCBjYzEy YzljNzQzLi44ZTNkNjFjNzA4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBw ZW5kaW5mby5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZvLmgKQEAgLTQ2 LDUgKzQ2LDggQEAgZXh0ZXJuIHZvaWQgYWRkX3Jvd19pZGVudGl0eV9jb2x1bW5zKFBsYW5uZXJJ bmZvICpyb290LCBJbmRleCBydGluZGV4LAogCQkJCQkJCQkJIFJhbmdlVGJsRW50cnkgKnRhcmdl dF9ydGUsCiAJCQkJCQkJCQkgUmVsYXRpb24gdGFyZ2V0X3JlbGF0aW9uKTsKIGV4dGVybiB2b2lk IGRpc3RyaWJ1dGVfcm93X2lkZW50aXR5X3ZhcnMoUGxhbm5lckluZm8gKnJvb3QpOworZXh0ZXJu IExpc3QgKmFkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKFBsYW5uZXJJbmZvICpyb290LCBQ YXRoICpzdWJwYXRoLAorCQkJCQkJCSAgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAorCQkJCQkJCSAg TGlzdCAqYWxscGFydHJlbGlkcyk7CiAKICNlbmRpZgkJCQkJCQkvKiBBUFBFTkRJTkZPX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaCBiL3NyYy9p bmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaAppbmRleCBiZDQ5MGQxNTRmLi4xNTg3Mjk4 ODEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKKysr IGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCkBAIC03Myw3ICs3Myw4IEBA IHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvblBydW5lQ29udGV4dAogZXh0ZXJuIFBhcnRpdGlvblBy dW5lSW5mbyAqbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHN0cnVjdCBQbGFubmVySW5mbyAqcm9v dCwKIAkJCQkJCQkJCQkJCQlzdHJ1Y3QgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQkJCQkJCQkJ CQkJCUxpc3QgKnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCUxpc3QgKnBydW5lcXVhbCk7CisJCQkJ CQkJCQkJCQkJTGlzdCAqcHJ1bmVxdWFsLAorCQkJCQkJCQkJCQkJCUxpc3QgKmFsbHBhcnRyZWxp ZHMpOwogZXh0ZXJuIEJpdG1hcHNldCAqcHJ1bmVfYXBwZW5kX3JlbF9wYXJ0aXRpb25zKHN0cnVj dCBSZWxPcHRJbmZvICpyZWwpOwogZXh0ZXJuIEJpdG1hcHNldCAqZ2V0X21hdGNoaW5nX3BhcnRp dGlvbnMoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgTGlzdCAq cHJ1bmluZ19zdGVwcyk7Ci0tIAoyLjQzLjAKCg== --00000000000049a510061fb86454 Content-Type: application/octet-stream; name="v50-0001-Assorted-tightening-in-various-ExecEnd-routines.patch" Content-Disposition: attachment; filename="v50-0001-Assorted-tightening-in-various-ExecEnd-routines.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lzva9oe30 RnJvbSAyOGNhZGVkYWJiNTllNWUzMzg2ZjRkOWEzMDliNzdiZGM3MDQ3MTQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjggU2VwIDIwMjMgMTY6NTY6MjkgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 MCAxLzZdIEFzc29ydGVkIHRpZ2h0ZW5pbmcgaW4gdmFyaW91cyBFeGVjRW5kKCkqIHJvdXRpbmVz CgpUaGlzIGluY2x1ZGVzIGFkZGluZyBOVUxMbmVzcyBjaGVja3Mgb24gcG9pbnRlcnMgYmVmb3Jl IGNsZWFuaW5nIHRoZW0KdXAuICBNYW55IEV4ZWNFbmQqKCkgcm91dGluZXMgYWxyZWFkeSBwZXJm b3JtIHRoaXMgY2hlY2ssIGJ1dCBhIGZldwphcmUgbWlzc2luZyB0aGVtLiAgVGhlc2UgTlVMTG5l c3MgY2hlY2tzIG1pZ2h0IHNlZW0gcmVkdW5kYW50IGFzCnRoaW5ncyBzdGFuZCBzaW5jZSB0aGUg RXhlY0VuZCooKSByb3V0aW5lcyBvcGVyYXRlIHVuZGVyIHRoZQphc3N1bXB0aW9uIHRoYXQgdGhl aXIgbWF0Y2hpbmcgRXhlY0luaXQqIHJvdXRpbmUgd291bGQgaGF2ZSBmdWxseQpleGVjdXRlZCwg ZW5zdXJpbmcgcG9pbnRlcnMgYXJlIHNldC4gSG93ZXZlciwgdGhhdCBhc3N1bXB0aW9uIHNlZW1z IGEKYml0IHNoYWt5IGluIHRoZSBmYWNlIG9mIGZ1dHVyZSBjaGFuZ2VzLgoKVGhpcyBhbHNvIGFk ZHMgYSBndWFyZCBhdCB0aGUgYmVnaWdnaW5nIG9mIEV2YWxQbGFuUXVhbEVuZCgpIHRvIHJldHVy bgplYXJseSBpZiB0aGUgRVBRU3RhdGUgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYmVlbiBpbml0 aWFsaXplZC4gIFRoYXQKY2FzZSBjYW4gaGFwcGVuIGlmIHRoZSBjb3JyZXNwb25kaW5nIEV4ZWNJ bml0KigpIHJvdXRpbmUgcmV0dXJuZWQKZWFybHkgd2l0aG91dCBjYWxsaW5nIEV2YWxQbGFuUXVh bEluaXQoKS4KCldoaWxlIGF0IGl0LCB0aGlzIGNvbW1pdCBlbnN1cmVzIHRoYXQgcG9pbnRlcnMg YXJlIGNvbnNpc3RlbnRseSBzZXQKdG8gTlVMTCBhZnRlciBjbGVhbnVwIGluIGFsbCBFeGVjRW5k KigpIHJvdXRpbmVzLgoKRmluYWxseSwgZm9yIGVuaGFuY2VkIGNvbnNpc3RlbmN5LCB0aGUgZm9y bWF0IG9mIE5VTExuZXNzIGNoZWNrcyBoYXMKYmVlbiBzdGFuZGFyZGl6ZWQgdG8gImlmIChwb2lu dGVyICE9IE5VTEwpIiwgcmVwbGFjaW5nIHRoZSBwcmV2aW91cwoiaWYgKHBvaW50ZXIpIiBzdHls ZS4KClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcwpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tL0NBK0hpd3FGR2tNU2dlNlRnQzlLUXpkZTBvaHBBeWNMUXVWN29vaXRFRXBiS0IwT19tZ0Bt YWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAg ICAgICB8ICA0ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMgICAgICAgICAgICAg fCAyNyArKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAg ICAgICAgfCAgMyArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jICAgICAg IHwgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jICB8IDQ2 ICsrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJ bmRleHNjYW4uYyB8IDIzICsrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwT3IuYyAgICAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4u YyAgICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5j ICAgICB8IDE3ICsrKystLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMgICAg ICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyAgICAg fCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYyAgICAgICAgICAgfCAgNiAr LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMgICAgICAgICAgICB8ICA2ICstLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMgICAgICAgIHwgIDQgKy0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYyB8IDEzICsrKysrLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyAgIHwgMjUgKysrKysrLS0tLS0tCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgICAgICAgfCAyMyArKysrKystLS0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMgICAgICAgICAgIHwgIDEgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMgICAgICAgIHwgIDEgKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgICAgICAgIHwgIDUgKystCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTWVtb2l6ZS5jICAgICAgICAgfCAgNyArKystCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2VBcHBlbmQuYyAgICAgfCAgMyArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lcmdlam9pbi5jICAgICAgIHwgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1v ZGlmeVRhYmxlLmMgICAgIHwgMTEgKysrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVz dGxvb3AuYyAgICAgICAgfCAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNl dC5jICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24u YyAgfCAyNCArKysrKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jICAg ICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYyAgICAg IHwgIDcgKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgIHwg MTYgKysrLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jICAgICAgICAgICB8 ICA2ICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyAgICAgICAgICAgIHwgIDUg KystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgICAgfCAgMSArCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jICAgfCAgNCArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jICAgIHwgMTIgKysrKy0tCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jICAgICAgICAgfCAgOCArKystCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgfCA0MSArKysrKysrKysrKysrLS0tLS0tCiAzOCBm aWxlcyBjaGFuZ2VkLCAyNDYgaW5zZXJ0aW9ucygrKSwgMTIzIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jCmluZGV4IDRkN2M5MmQ2M2MuLjJkNTIzNGRlZTMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYwpAQCAtMjk4Niw2ICsyOTg2LDEwIEBAIEV2YWxQbGFuUXVhbEVuZChFUFFT dGF0ZSAqZXBxc3RhdGUpCiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwogCUxpc3RDZWxsICAg Kmw7CiAKKwkvKiBOb3RoaW5nIHRvIGRvIGlmIG5vIEV2YWxQbGFuUXVhbEluaXQoKSB3YXMgZG9u ZSB0byBiZWdpbiB3aXRoLiAqLworCWlmIChlcHFzdGF0ZS0+cGFyZW50ZXN0YXRlID09IE5VTEwp CisJCXJldHVybjsKKwogCXJ0c2l6ZSA9IGVwcXN0YXRlLT5wYXJlbnRlc3RhdGUtPmVzX3Jhbmdl X3RhYmxlX3NpemU7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4IDUzZWFkNzdlY2Uu LjBkZmJhNWNhMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTQzMDMsNyArNDMwMyw2IEBA IEdldEFnZ0luaXRWYWwoRGF0dW0gdGV4dEluaXRWYWwsIE9pZCB0cmFuc3R5cGUpCiB2b2lkCiBF eGVjRW5kQWdnKEFnZ1N0YXRlICpub2RlKQogewotCVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKIAlp bnQJCQl0cmFuc25vOwogCWludAkJCW51bUdyb3VwaW5nU2V0cyA9IE1heChub2RlLT5tYXhzZXRz LCAxKTsKIAlpbnQJCQlzZXRubzsKQEAgLTQzMTMsNyArNDMxMiw3IEBAIEV4ZWNFbmRBZ2coQWdn U3RhdGUgKm5vZGUpCiAJICogd29ya2VyIGJhY2sgaW50byBzaGFyZWQgbWVtb3J5IHNvIHRoYXQg aXQgY2FuIGJlIHBpY2tlZCB1cCBieSB0aGUgbWFpbgogCSAqIHByb2Nlc3MgdG8gcmVwb3J0IGlu IEVYUExBSU4gQU5BTFlaRS4KIAkgKi8KLQlpZiAobm9kZS0+c2hhcmVkX2luZm8gJiYgSXNQYXJh bGxlbFdvcmtlcigpKQorCWlmIChub2RlLT5zaGFyZWRfaW5mbyAhPSBOVUxMICYmIElzUGFyYWxs ZWxXb3JrZXIoKSkKIAl7CiAJCUFnZ3JlZ2F0ZUluc3RydW1lbnRhdGlvbiAqc2k7CiAKQEAgLTQz MjYsMTAgKzQzMjUsMTYgQEAgRXhlY0VuZEFnZyhBZ2dTdGF0ZSAqbm9kZSkKIAogCS8qIE1ha2Ug c3VyZSB3ZSBoYXZlIGNsb3NlZCBhbnkgb3BlbiB0dXBsZXNvcnRzICovCiAKLQlpZiAobm9kZS0+ c29ydF9pbikKKwlpZiAobm9kZS0+c29ydF9pbiAhPSBOVUxMKQorCXsKIAkJdHVwbGVzb3J0X2Vu ZChub2RlLT5zb3J0X2luKTsKLQlpZiAobm9kZS0+c29ydF9vdXQpCisJCW5vZGUtPnNvcnRfaW4g PSBOVUxMOworCX0KKwlpZiAobm9kZS0+c29ydF9vdXQgIT0gTlVMTCkKKwl7CiAJCXR1cGxlc29y dF9lbmQobm9kZS0+c29ydF9vdXQpOworCQlub2RlLT5zb3J0X291dCA9IE5VTEw7CisJfQogCiAJ aGFzaGFnZ19yZXNldF9zcGlsbF9zdGF0ZShub2RlKTsKIApAQCAtNDM0NSwxOSArNDM1MCwyNSBA QCBFeGVjRW5kQWdnKEFnZ1N0YXRlICpub2RlKQogCiAJCWZvciAoc2V0bm8gPSAwOyBzZXRubyA8 IG51bUdyb3VwaW5nU2V0czsgc2V0bm8rKykKIAkJewotCQkJaWYgKHBlcnRyYW5zLT5zb3J0c3Rh dGVzW3NldG5vXSkKKwkJCWlmIChwZXJ0cmFucy0+c29ydHN0YXRlc1tzZXRub10gIT0gTlVMTCkK IAkJCQl0dXBsZXNvcnRfZW5kKHBlcnRyYW5zLT5zb3J0c3RhdGVzW3NldG5vXSk7CiAJCX0KIAl9 CiAKIAkvKiBBbmQgZW5zdXJlIGFueSBhZ2cgc2h1dGRvd24gY2FsbGJhY2tzIGhhdmUgYmVlbiBj YWxsZWQgKi8KIAlmb3IgKHNldG5vID0gMDsgc2V0bm8gPCBudW1Hcm91cGluZ1NldHM7IHNldG5v KyspCisJewogCQlSZVNjYW5FeHByQ29udGV4dChub2RlLT5hZ2djb250ZXh0c1tzZXRub10pOwot CWlmIChub2RlLT5oYXNoY29udGV4dCkKKwkJbm9kZS0+YWdnY29udGV4dHNbc2V0bm9dID0gTlVM TDsKKwl9CisJaWYgKG5vZGUtPmhhc2hjb250ZXh0ICE9IE5VTEwpCisJewogCQlSZVNjYW5FeHBy Q29udGV4dChub2RlLT5oYXNoY29udGV4dCk7CisJCW5vZGUtPmhhc2hjb250ZXh0ID0gTlVMTDsK Kwl9CiAKLQlvdXRlclBsYW4gPSBvdXRlclBsYW5TdGF0ZShub2RlKTsKLQlFeGVjRW5kTm9kZShv dXRlclBsYW4pOworCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBs YW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQu YwppbmRleCBjYTBmNTRkNjc2Li44NmQ3NWIxYTdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVu ZC5jCkBAIC0zOTksNyArMzk5LDEwIEBAIEV4ZWNFbmRBcHBlbmQoQXBwZW5kU3RhdGUgKm5vZGUp CiAJICogc2h1dCBkb3duIGVhY2ggb2YgdGhlIHN1YnNjYW5zCiAJICovCiAJZm9yIChpID0gMDsg aSA8IG5wbGFuczsgaSsrKQorCXsKIAkJRXhlY0VuZE5vZGUoYXBwZW5kcGxhbnNbaV0pOworCQlh cHBlbmRwbGFuc1tpXSA9IE5VTEw7CisJfQogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwQW5kLmMKaW5kZXggOWM5YzY2Njg3Mi4uYWUzOTEyMjJiZiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVCaXRtYXBBbmQuYwpAQCAtMTkyLDggKzE5Miw4IEBAIEV4ZWNFbmRCaXRtYXBBbmQo Qml0bWFwQW5kU3RhdGUgKm5vZGUpCiAJICovCiAJZm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsr KQogCXsKLQkJaWYgKGJpdG1hcHBsYW5zW2ldKQotCQkJRXhlY0VuZE5vZGUoYml0bWFwcGxhbnNb aV0pOworCQlFeGVjRW5kTm9kZShiaXRtYXBwbGFuc1tpXSk7CisJCWJpdG1hcHBsYW5zW2ldID0g TlVMTDsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRt YXBIZWFwc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMK aW5kZXggM2M2M2JkZDkzZC4uMTlmMThhYjgxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTYyNSw4ICs2MjUsNiBAQCBFeGVjUmVTY2FuQml0bWFwSGVh cFNjYW4oQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIHZvaWQKIEV4ZWNFbmRCaXRtYXBIZWFw U2NhbihCaXRtYXBIZWFwU2NhblN0YXRlICpub2RlKQogewotCVRhYmxlU2NhbkRlc2Mgc2NhbkRl c2M7Ci0KIAkvKgogCSAqIFdoZW4gZW5kaW5nIGEgcGFyYWxsZWwgd29ya2VyLCBjb3B5IHRoZSBz dGF0aXN0aWNzIGdhdGhlcmVkIGJ5IHRoZQogCSAqIHdvcmtlciBiYWNrIGludG8gc2hhcmVkIG1l bW9yeSBzbyB0aGF0IGl0IGNhbiBiZSBwaWNrZWQgdXAgYnkgdGhlIG1haW4KQEAgLTY1MCwzOCAr NjQ4LDU0IEBAIEV4ZWNFbmRCaXRtYXBIZWFwU2NhbihCaXRtYXBIZWFwU2NhblN0YXRlICpub2Rl KQogCQlzaS0+bG9zc3lfcGFnZXMgKz0gbm9kZS0+c3RhdHMubG9zc3lfcGFnZXM7CiAJfQogCi0J LyoKLQkgKiBleHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUKLQkgKi8KLQlzY2FuRGVz YyA9IG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYzsKLQogCS8qCiAJICogY2xvc2UgZG93biBz dWJwbGFucwogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRl clBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiAKIAkvKgogCSAqIHJlbGVhc2UgYml0bWFwcyBhbmQg YnVmZmVycyBpZiBhbnkKIAkgKi8KLQlpZiAobm9kZS0+dGJtaXRlcmF0b3IpCisJaWYgKG5vZGUt PnRibWl0ZXJhdG9yICE9IE5VTEwpCisJewogCQl0Ym1fZW5kX2l0ZXJhdGUobm9kZS0+dGJtaXRl cmF0b3IpOwotCWlmIChub2RlLT5wcmVmZXRjaF9pdGVyYXRvcikKKwkJbm9kZS0+dGJtaXRlcmF0 b3IgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+cHJlZmV0Y2hfaXRlcmF0b3IgIT0gTlVMTCkKKwl7 CiAJCXRibV9lbmRfaXRlcmF0ZShub2RlLT5wcmVmZXRjaF9pdGVyYXRvcik7Ci0JaWYgKG5vZGUt PnRibSkKKwkJbm9kZS0+cHJlZmV0Y2hfaXRlcmF0b3IgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+ dGJtICE9IE5VTEwpCisJewogCQl0Ym1fZnJlZShub2RlLT50Ym0pOwotCWlmIChub2RlLT5zaGFy ZWRfdGJtaXRlcmF0b3IpCisJCW5vZGUtPnRibSA9IE5VTEw7CisJfQorCWlmIChub2RlLT5zaGFy ZWRfdGJtaXRlcmF0b3IgIT0gTlVMTCkKKwl7CiAJCXRibV9lbmRfc2hhcmVkX2l0ZXJhdGUobm9k ZS0+c2hhcmVkX3RibWl0ZXJhdG9yKTsKLQlpZiAobm9kZS0+c2hhcmVkX3ByZWZldGNoX2l0ZXJh dG9yKQorCQlub2RlLT5zaGFyZWRfdGJtaXRlcmF0b3IgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+ c2hhcmVkX3ByZWZldGNoX2l0ZXJhdG9yICE9IE5VTEwpCisJewogCQl0Ym1fZW5kX3NoYXJlZF9p dGVyYXRlKG5vZGUtPnNoYXJlZF9wcmVmZXRjaF9pdGVyYXRvcik7CisJCW5vZGUtPnNoYXJlZF9w cmVmZXRjaF9pdGVyYXRvciA9IE5VTEw7CisJfQogCWlmIChub2RlLT5wdm1idWZmZXIgIT0gSW52 YWxpZEJ1ZmZlcikKKwl7CiAJCVJlbGVhc2VCdWZmZXIobm9kZS0+cHZtYnVmZmVyKTsKKwkJbm9k ZS0+cHZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwl9CiAKIAkvKgotCSAqIGNsb3NlIGhlYXAg c2NhbgorCSAqIGNsb3NlIGhlYXAgc2NhbiAobm8tb3AgaWYgd2UgZGlkbid0IHN0YXJ0IGl0KQog CSAqLwotCWlmIChzY2FuRGVzYykKLQkJdGFibGVfZW5kc2NhbihzY2FuRGVzYyk7Ci0KKwlpZiAo bm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjICE9IE5VTEwpCisJeworCQl0YWJsZV9lbmRzY2Fu KG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyk7CisJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2Fu RGVzYyA9IE5VTEw7CisJfQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQml0bWFwSW5kZXhzY2FuLmMKaW5kZXggNmRmOGUxN2VjOC4uNDY2OWU4ZDBjZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYwpAQCAtMTc0LDIyICsxNzQs MjEgQEAgRXhlY1JlU2NhbkJpdG1hcEluZGV4U2NhbihCaXRtYXBJbmRleFNjYW5TdGF0ZSAqbm9k ZSkKIHZvaWQKIEV4ZWNFbmRCaXRtYXBJbmRleFNjYW4oQml0bWFwSW5kZXhTY2FuU3RhdGUgKm5v ZGUpCiB7Ci0JUmVsYXRpb24JaW5kZXhSZWxhdGlvbkRlc2M7Ci0JSW5kZXhTY2FuRGVzYyBpbmRl eFNjYW5EZXNjOwotCi0JLyoKLQkgKiBleHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUK LQkgKi8KLQlpbmRleFJlbGF0aW9uRGVzYyA9IG5vZGUtPmJpc3NfUmVsYXRpb25EZXNjOwotCWlu ZGV4U2NhbkRlc2MgPSBub2RlLT5iaXNzX1NjYW5EZXNjOworCS8qIGNsb3NlIHRoZSBzY2FuIChu by1vcCBpZiB3ZSBkaWRuJ3Qgc3RhcnQgaXQpICovCisJaWYgKG5vZGUtPmJpc3NfU2NhbkRlc2Mg IT0gTlVMTCkKKwl7CisJCWluZGV4X2VuZHNjYW4obm9kZS0+Ymlzc19TY2FuRGVzYyk7CisJCW5v ZGUtPmJpc3NfU2NhbkRlc2MgPSBOVUxMOworCX0KIAogCS8qCiAJICogY2xvc2UgdGhlIGluZGV4 IHJlbGF0aW9uIChuby1vcCBpZiB3ZSBkaWRuJ3Qgb3BlbiBpdCkKIAkgKi8KLQlpZiAoaW5kZXhT Y2FuRGVzYykKLQkJaW5kZXhfZW5kc2NhbihpbmRleFNjYW5EZXNjKTsKLQlpZiAoaW5kZXhSZWxh dGlvbkRlc2MpCi0JCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb25EZXNjLCBOb0xvY2spOworCWlm IChub2RlLT5iaXNzX1JlbGF0aW9uRGVzYyAhPSBOVUxMKQorCXsKKwkJaW5kZXhfY2xvc2Uobm9k ZS0+Ymlzc19SZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJCW5vZGUtPmJpc3NfUmVsYXRpb25EZXNj ID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBPci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9y LmMKaW5kZXggNzAyOTUzNmM2NC4uZGU0MzkyMzVkMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcE9yLmMKQEAgLTIxMCw4ICsyMTAsOCBAQCBFeGVjRW5kQml0bWFwT3IoQml0bWFwT3JTdGF0 ZSAqbm9kZSkKIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCiAJewotCQlpZiAo Yml0bWFwcGxhbnNbaV0pCi0JCQlFeGVjRW5kTm9kZShiaXRtYXBwbGFuc1tpXSk7CisJCUV4ZWNF bmROb2RlKGJpdG1hcHBsYW5zW2ldKTsKKwkJYml0bWFwcGxhbnNbaV0gPSBOVUxMOwogCX0KIH0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVDdGVzY2FuLmMKaW5kZXggODA4MWVlZDg4Ny4uN2NlYTk0Mzk4 OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5jCkBAIC0yOTAsMTAgKzI5MCwxMSBAQCBF eGVjRW5kQ3RlU2NhbihDdGVTY2FuU3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBJZiBJIGFtIHRoZSBs ZWFkZXIsIGZyZWUgdGhlIHR1cGxlc3RvcmUuCiAJICovCi0JaWYgKG5vZGUtPmxlYWRlciA9PSBu b2RlKQorCWlmIChub2RlLT5sZWFkZXIgIT0gTlVMTCAmJiBub2RlLT5sZWFkZXIgPT0gbm9kZSkK IAl7CiAJCXR1cGxlc3RvcmVfZW5kKG5vZGUtPmN0ZV90YWJsZSk7CiAJCW5vZGUtPmN0ZV90YWJs ZSA9IE5VTEw7CisJCW5vZGUtPmxlYWRlciA9IE5VTEw7CiAJfQogfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVGb3JlaWduc2Nhbi5jCmluZGV4IGZlNGFlNTVjMGYuLjEzNTdjY2YzYzkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVGb3JlaWduc2Nhbi5jCkBAIC0zMDAsMTcgKzMwMCwyMCBAQCBF eGVjRW5kRm9yZWlnblNjYW4oRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKIAlFU3RhdGUJICAgKmVz dGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRlOwogCiAJLyogTGV0IHRoZSBGRFcgc2h1dCBkb3duICov Ci0JaWYgKHBsYW4tPm9wZXJhdGlvbiAhPSBDTURfU0VMRUNUKQorCWlmIChub2RlLT5mZHdyb3V0 aW5lICE9IE5VTEwpCiAJewotCQlpZiAoZXN0YXRlLT5lc19lcHFfYWN0aXZlID09IE5VTEwpCi0J CQlub2RlLT5mZHdyb3V0aW5lLT5FbmREaXJlY3RNb2RpZnkobm9kZSk7CisJCWlmIChwbGFuLT5v cGVyYXRpb24gIT0gQ01EX1NFTEVDVCkKKwkJeworCQkJaWYgKGVzdGF0ZS0+ZXNfZXBxX2FjdGl2 ZSA9PSBOVUxMKQorCQkJCW5vZGUtPmZkd3JvdXRpbmUtPkVuZERpcmVjdE1vZGlmeShub2RlKTsK KwkJfQorCQllbHNlCisJCQlub2RlLT5mZHdyb3V0aW5lLT5FbmRGb3JlaWduU2Nhbihub2RlKTsK IAl9Ci0JZWxzZQotCQlub2RlLT5mZHdyb3V0aW5lLT5FbmRGb3JlaWduU2Nhbihub2RlKTsKIAog CS8qIFNodXQgZG93biBhbnkgb3V0ZXIgcGxhbi4gKi8KLQlpZiAob3V0ZXJQbGFuU3RhdGUobm9k ZSkpCi0JCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlFeGVjRW5kTm9kZShv dXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVy LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKaW5kZXggNWQ0ZmZlOTg5Yy4u Y2FlNWVhMWY5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwpAQCAtMjQ0LDYgKzI0NCw3 IEBAIHZvaWQKIEV4ZWNFbmRHYXRoZXIoR2F0aGVyU3RhdGUgKm5vZGUpCiB7CiAJRXhlY0VuZE5v ZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwkvKiBsZXQgY2hpbGRyZW4gY2xlYW4gdXAgZmlyc3Qg Ki8KKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiAJRXhlY1NodXRkb3duR2F0aGVyKG5v ZGUpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVy Z2UuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCmluZGV4IDQ1ZjYw MTdjMjkuLmIzNmNkODllN2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVH YXRoZXJNZXJnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5j CkBAIC0yODQsNiArMjg0LDcgQEAgdm9pZAogRXhlY0VuZEdhdGhlck1lcmdlKEdhdGhlck1lcmdl U3RhdGUgKm5vZGUpCiB7CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwkvKiBs ZXQgY2hpbGRyZW4gY2xlYW4gdXAgZmlyc3QgKi8KKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5V TEw7CiAJRXhlY1NodXRkb3duR2F0aGVyTWVyZ2Uobm9kZSk7CiB9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdyb3VwLmMKaW5kZXggZGEzMmJlYzE4MS4uODA3NDI5ZTUwNCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdyb3VwLmMKQEAgLTIyNSwxMCArMjI1LDggQEAgRXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiB2b2lkCiBFeGVjRW5kR3JvdXAoR3JvdXBTdGF0 ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgICpvdXRlclBsYW47Ci0KLQlvdXRlclBsYW4gPSBvdXRl clBsYW5TdGF0ZShub2RlKTsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW4pOworCUV4ZWNFbmROb2Rl KG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9 CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCmluZGV4IDYxNDgwNzMzYTEuLmRiZjQ5MjAz NjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwpAQCAtNDEyLDEzICs0MTIsMTEgQEAgRXhlY0lu aXRIYXNoKEhhc2ggKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhl Y0VuZEhhc2goSGFzaFN0YXRlICpub2RlKQogewotCVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKLQog CS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCiAJICovCi0Jb3V0ZXJQbGFuID0gb3V0ZXJQ bGFuU3RhdGUobm9kZSk7Ci0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuKTsKKwlFeGVjRW5kTm9kZShv dXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQog CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKaW5kZXggNTQyOWU2ODczNC4uNTkyYzA5 OGI5ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAgLTg3MCw3ICs4NzAsNyBA QCBFeGVjRW5kSGFzaEpvaW4oSGFzaEpvaW5TdGF0ZSAqbm9kZSkKIAkvKgogCSAqIEZyZWUgaGFz aCB0YWJsZQogCSAqLwotCWlmIChub2RlLT5oal9IYXNoVGFibGUpCisJaWYgKG5vZGUtPmhqX0hh c2hUYWJsZSAhPSBOVUxMKQogCXsKIAkJRXhlY0hhc2hUYWJsZURlc3Ryb3kobm9kZS0+aGpfSGFz aFRhYmxlKTsKIAkJbm9kZS0+aGpfSGFzaFRhYmxlID0gTlVMTDsKQEAgLTg4MCw3ICs4ODAsOSBA QCBFeGVjRW5kSGFzaEpvaW4oSGFzaEpvaW5TdGF0ZSAqbm9kZSkKIAkgKiBjbGVhbiB1cCBzdWJ0 cmVlcwogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBs YW5TdGF0ZShub2RlKSA9IE5VTEw7CiAJRXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkp OworCWlubmVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYwppbmRleCAyY2U1ZWQ1ZWM4Li4wMTBiY2ZhZmE4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCkBAIC0xMDc4 LDggKzEwNzgsMTYgQEAgRXhlY0VuZEluY3JlbWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnRTdGF0 ZSAqbm9kZSkKIHsKIAlTT19wcmludGYoIkV4ZWNFbmRJbmNyZW1lbnRhbFNvcnQ6IHNodXR0aW5n IGRvd24gc29ydCBub2RlXG4iKTsKIAotCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9k ZS0+Z3JvdXBfcGl2b3QpOwotCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qobm9kZS0+dHJh bnNmZXJfdHVwbGUpOworCWlmIChub2RlLT5ncm91cF9waXZvdCAhPSBOVUxMKQorCXsKKwkJRXhl Y0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChub2RlLT5ncm91cF9waXZvdCk7CisJCW5vZGUtPmdy b3VwX3Bpdm90ID0gTlVMTDsKKwl9CisJaWYgKG5vZGUtPnRyYW5zZmVyX3R1cGxlICE9IE5VTEwp CisJeworCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPnRyYW5zZmVyX3R1cGxl KTsKKwkJbm9kZS0+dHJhbnNmZXJfdHVwbGUgPSBOVUxMOworCX0KIAogCS8qCiAJICogUmVsZWFz ZSB0dXBsZXNvcnQgcmVzb3VyY2VzLgpAQCAtMTA5OSw2ICsxMTA3LDcgQEAgRXhlY0VuZEluY3Jl bWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnRTdGF0ZSAqbm9kZSkKIAkgKiBTaHV0IGRvd24gdGhl IHN1YnBsYW4uCiAJICovCiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91 dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIAogCVNPX3ByaW50ZigiRXhlY0VuZEluY3JlbWVu dGFsU29ydDogc29ydCBub2RlIHNodXRkb3duXG4iKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4IDYxMmM2NzM4OTUuLjQ4MWQ0Nzk3NjAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtMzk3LDE1ICszOTcsNiBAQCBF eGVjUmVTY2FuSW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiB2b2lkCiBF eGVjRW5kSW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiB7Ci0JUmVsYXRp b24JaW5kZXhSZWxhdGlvbkRlc2M7Ci0JSW5kZXhTY2FuRGVzYyBpbmRleFNjYW5EZXNjOwotCi0J LyoKLQkgKiBleHRyYWN0IGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUKLQkgKi8KLQlpbmRleFJl bGF0aW9uRGVzYyA9IG5vZGUtPmlvc3NfUmVsYXRpb25EZXNjOwotCWluZGV4U2NhbkRlc2MgPSBu b2RlLT5pb3NzX1NjYW5EZXNjOwotCiAJLyogUmVsZWFzZSBWTSBidWZmZXIgcGluLCBpZiBhbnku ICovCiAJaWYgKG5vZGUtPmlvc3NfVk1CdWZmZXIgIT0gSW52YWxpZEJ1ZmZlcikKIAl7CkBAIC00 MTMsMTMgKzQwNCwyMSBAQCBFeGVjRW5kSW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuU3RhdGUg Km5vZGUpCiAJCW5vZGUtPmlvc3NfVk1CdWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCX0KIAorCS8q IGNsb3NlIHRoZSBzY2FuIChuby1vcCBpZiB3ZSBkaWRuJ3Qgc3RhcnQgaXQpICovCisJaWYgKG5v ZGUtPmlvc3NfU2NhbkRlc2MgIT0gTlVMTCkKKwl7CisJCWluZGV4X2VuZHNjYW4obm9kZS0+aW9z c19TY2FuRGVzYyk7CisJCW5vZGUtPmlvc3NfU2NhbkRlc2MgPSBOVUxMOworCX0KKwogCS8qCiAJ ICogY2xvc2UgdGhlIGluZGV4IHJlbGF0aW9uIChuby1vcCBpZiB3ZSBkaWRuJ3Qgb3BlbiBpdCkK IAkgKi8KLQlpZiAoaW5kZXhTY2FuRGVzYykKLQkJaW5kZXhfZW5kc2NhbihpbmRleFNjYW5EZXNj KTsKLQlpZiAoaW5kZXhSZWxhdGlvbkRlc2MpCi0JCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb25E ZXNjLCBOb0xvY2spOworCWlmIChub2RlLT5pb3NzX1JlbGF0aW9uRGVzYyAhPSBOVUxMKQorCXsK KwkJaW5kZXhfY2xvc2Uobm9kZS0+aW9zc19SZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJCW5vZGUt Pmlvc3NfUmVsYXRpb25EZXNjID0gTlVMTDsKKwl9CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleHNjYW4uYwppbmRleCA4MDAwZmVmZjRjLi5hODE3MmQ4YjgyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC03ODQsMjIgKzc4NCwyMSBAQCBFeGVj SW5kZXhBZHZhbmNlQXJyYXlLZXlzKEluZGV4QXJyYXlLZXlJbmZvICphcnJheUtleXMsIGludCBu dW1BcnJheUtleXMpCiB2b2lkCiBFeGVjRW5kSW5kZXhTY2FuKEluZGV4U2NhblN0YXRlICpub2Rl KQogewotCVJlbGF0aW9uCWluZGV4UmVsYXRpb25EZXNjOwotCUluZGV4U2NhbkRlc2MgaW5kZXhT Y2FuRGVzYzsKLQotCS8qCi0JICogZXh0cmFjdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0J ICovCi0JaW5kZXhSZWxhdGlvbkRlc2MgPSBub2RlLT5pc3NfUmVsYXRpb25EZXNjOwotCWluZGV4 U2NhbkRlc2MgPSBub2RlLT5pc3NfU2NhbkRlc2M7CisJLyogY2xvc2UgdGhlIHNjYW4gKG5vLW9w IGlmIHdlIGRpZG4ndCBzdGFydCBpdCkgKi8KKwlpZiAobm9kZS0+aXNzX1NjYW5EZXNjICE9IE5V TEwpCisJeworCQlpbmRleF9lbmRzY2FuKG5vZGUtPmlzc19TY2FuRGVzYyk7CisJCW5vZGUtPmlz c19TY2FuRGVzYyA9IE5VTEw7CisJfQogCiAJLyoKIAkgKiBjbG9zZSB0aGUgaW5kZXggcmVsYXRp b24gKG5vLW9wIGlmIHdlIGRpZG4ndCBvcGVuIGl0KQogCSAqLwotCWlmIChpbmRleFNjYW5EZXNj KQotCQlpbmRleF9lbmRzY2FuKGluZGV4U2NhbkRlc2MpOwotCWlmIChpbmRleFJlbGF0aW9uRGVz YykKLQkJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJaWYgKG5vZGUt Pmlzc19SZWxhdGlvbkRlc2MgIT0gTlVMTCkKKwl7CisJCWluZGV4X2Nsb3NlKG5vZGUtPmlzc19S ZWxhdGlvbkRlc2MsIE5vTG9jayk7CisJCW5vZGUtPmlzc19SZWxhdGlvbkRlc2MgPSBOVUxMOwor CX0KIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUxpbWl0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwppbmRleCBlNmYxZmIx NTYyLi5lYjdiNmU1MmJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGlt aXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpAQCAtNTM0LDYgKzUz NCw3IEBAIHZvaWQKIEV4ZWNFbmRMaW1pdChMaW1pdFN0YXRlICpub2RlKQogewogCUV4ZWNFbmRO b2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlvdXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7 CiB9CiAKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwppbmRleCA0MTc1NGRkZmVhLi4w ZDM0ODkxOTViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3Mu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYwpAQCAtMzg3LDYgKzM4 Nyw3IEBAIEV4ZWNFbmRMb2NrUm93cyhMb2NrUm93c1N0YXRlICpub2RlKQogCS8qIFdlIG1heSBo YXZlIHNodXQgZG93biBFUFEgYWxyZWFkeSwgYnV0IG5vIGhhcm0gaW4gYW5vdGhlciBjYWxsICov CiAJRXZhbFBsYW5RdWFsRW5kKCZub2RlLT5scl9lcHFzdGF0ZSk7CiAJRXhlY0VuZE5vZGUob3V0 ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCmluZGV4IDIyZTE3ODdmYmQuLjg4M2UzZjM5 MzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCkBAIC0yNDMsMTMgKzI0MywxNiBA QCBFeGVjRW5kTWF0ZXJpYWwoTWF0ZXJpYWxTdGF0ZSAqbm9kZSkKIAkgKiBSZWxlYXNlIHR1cGxl c3RvcmUgcmVzb3VyY2VzCiAJICovCiAJaWYgKG5vZGUtPnR1cGxlc3RvcmVzdGF0ZSAhPSBOVUxM KQorCXsKIAkJdHVwbGVzdG9yZV9lbmQobm9kZS0+dHVwbGVzdG9yZXN0YXRlKTsKLQlub2RlLT50 dXBsZXN0b3Jlc3RhdGUgPSBOVUxMOworCQlub2RlLT50dXBsZXN0b3Jlc3RhdGUgPSBOVUxMOwor CX0KIAogCS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCiAJICovCiAJRXhlY0VuZE5vZGUo b3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0K IAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9p emUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKaW5kZXggZGY4ZTNmZmYw OC4uNjkwZGVlMWRhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9p emUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCkBAIC0xMTI4LDEy ICsxMTI4LDE3IEBAIEV4ZWNFbmRNZW1vaXplKE1lbW9pemVTdGF0ZSAqbm9kZSkKIAl9CiAKIAkv KiBSZW1vdmUgdGhlIGNhY2hlIGNvbnRleHQgKi8KLQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUt PnRhYmxlQ29udGV4dCk7CisJaWYgKG5vZGUtPnRhYmxlQ29udGV4dCAhPSBOVUxMKQorCXsKKwkJ TWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJsZUNvbnRleHQpOworCQlub2RlLT50YWJsZUNv bnRleHQgPSBOVUxMOworCX0KIAogCS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCiAJICov CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5v ZGUpID0gTlVMTDsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQu YwppbmRleCBlMWI5Yjk4NGE3Li4zMjM2NDQ0Y2YxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVyZ2VBcHBlbmQuYwpAQCAtMzMzLDcgKzMzMywxMCBAQCBFeGVjRW5kTWVyZ2VBcHBlbmQoTWVy Z2VBcHBlbmRTdGF0ZSAqbm9kZSkKIAkgKiBzaHV0IGRvd24gZWFjaCBvZiB0aGUgc3Vic2NhbnMK IAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCisJewogCQlFeGVjRW5kTm9kZSht ZXJnZXBsYW5zW2ldKTsKKwkJbWVyZ2VwbGFuc1tpXSA9IE5VTEw7CisJfQogfQogCiB2b2lkCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKaW5kZXggMjljNTRmY2Q3NS4uOTI2ZTYzMWQ4 OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwpAQCAtMTY0Nyw3ICsxNjQ3LDkg QEAgRXhlY0VuZE1lcmdlSm9pbihNZXJnZUpvaW5TdGF0ZSAqbm9kZSkKIAkgKiBzaHV0IGRvd24g dGhlIHN1YnBsYW5zCiAJICovCiAJRXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkpOwor CWlubmVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIAlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0 ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogCiAJTUoxX3ByaW50Zigi RXhlY0VuZE1lcmdlSm9pbjogJXNcbiIsCiAJCQkgICAibm9kZSBwcm9jZXNzaW5nIGVuZGVkIik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDQ5MTNlNDkzMTkuLjA2 MmE3ODBmMjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJs ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC00NzIx LDcgKzQ3MjEsOSBAQCBFeGVjRW5kTW9kaWZ5VGFibGUoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSkK IAkJZm9yIChqID0gMDsgaiA8IHJlc3VsdFJlbEluZm8tPnJpX051bVNsb3RzSW5pdGlhbGl6ZWQ7 IGorKykKIAkJewogCQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChyZXN1bHRSZWxJbmZv LT5yaV9TbG90c1tqXSk7CisJCQlyZXN1bHRSZWxJbmZvLT5yaV9TbG90c1tqXSA9IE5VTEw7CiAJ CQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHJlc3VsdFJlbEluZm8tPnJpX1BsYW5TbG90 c1tqXSk7CisJCQlyZXN1bHRSZWxJbmZvLT5yaV9QbGFuU2xvdHNbal0gPSBOVUxMOwogCQl9CiAJ fQogCkBAIC00NzI5LDEyICs0NzMxLDE2IEBAIEV4ZWNFbmRNb2RpZnlUYWJsZShNb2RpZnlUYWJs ZVN0YXRlICpub2RlKQogCSAqIENsb3NlIGFsbCB0aGUgcGFydGl0aW9uZWQgdGFibGVzLCBsZWFm IHBhcnRpdGlvbnMsIGFuZCB0aGVpciBpbmRpY2VzCiAJICogYW5kIHJlbGVhc2UgdGhlIHNsb3Qg dXNlZCBmb3IgdHVwbGUgcm91dGluZywgaWYgc2V0LgogCSAqLwotCWlmIChub2RlLT5tdF9wYXJ0 aXRpb25fdHVwbGVfcm91dGluZykKKwlpZiAobm9kZS0+bXRfcGFydGl0aW9uX3R1cGxlX3JvdXRp bmcgIT0gTlVMTCkKIAl7CiAJCUV4ZWNDbGVhbnVwVHVwbGVSb3V0aW5nKG5vZGUsIG5vZGUtPm10 X3BhcnRpdGlvbl90dXBsZV9yb3V0aW5nKTsKKwkJbm9kZS0+bXRfcGFydGl0aW9uX3R1cGxlX3Jv dXRpbmcgPSBOVUxMOwogCi0JCWlmIChub2RlLT5tdF9yb290X3R1cGxlX3Nsb3QpCisJCWlmIChu b2RlLT5tdF9yb290X3R1cGxlX3Nsb3QgIT0gTlVMTCkKKwkJewogCQkJRXhlY0Ryb3BTaW5nbGVU dXBsZVRhYmxlU2xvdChub2RlLT5tdF9yb290X3R1cGxlX3Nsb3QpOworCQkJbm9kZS0+bXRfcm9v dF90dXBsZV9zbG90ID0gTlVMTDsKKwkJfQogCX0KIAogCS8qCkBAIC00NzQ2LDYgKzQ3NTIsNyBA QCBFeGVjRW5kTW9kaWZ5VGFibGUoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSkKIAkgKiBzaHV0IGRv d24gc3VicGxhbgogCSAqLwogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwlv dXRlclBsYW5TdGF0ZShub2RlKSA9IE5VTEw7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU5lc3Rsb29wLmMKaW5kZXggN2Y0YmY2YzRkYi4uMDFmM2Q1NmEzYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU5lc3Rsb29wLmMKQEAgLTM2Nyw3ICszNjcsOSBAQCBFeGVjRW5kTmVzdExvb3AoTmVz dExvb3BTdGF0ZSAqbm9kZSkKIAkgKiBjbG9zZSBkb3duIHN1YnBsYW5zCiAJICovCiAJRXhlY0Vu ZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVM TDsKIAlFeGVjRW5kTm9kZShpbm5lclBsYW5TdGF0ZShub2RlKSk7CisJaW5uZXJQbGFuU3RhdGUo bm9kZSkgPSBOVUxMOwogCiAJTkwxX3ByaW50ZigiRXhlY0VuZE5lc3RMb29wOiAlc1xuIiwKIAkJ CSAgICJub2RlIHByb2Nlc3NpbmcgZW5kZWQiKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVj dFNldC5jCmluZGV4IGU0ODM3MzAwMTUuLmNhOWE1ZTJlZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVByb2plY3RTZXQuYwpAQCAtMzMxLDYgKzMzMSw3IEBAIEV4ZWNFbmRQcm9qZWN0U2V0KFBy b2plY3RTZXRTdGF0ZSAqbm9kZSkKIAkgKiBzaHV0IGRvd24gc3VicGxhbnMKIAkgKi8KIAlFeGVj RW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBO VUxMOwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVj dXJzaXZldW5pb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5j CmluZGV4IGM3ZjhhMTlmYTQuLjc2ODAxNDJjN2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVSZWN1cnNpdmV1bmlvbi5jCkBAIC0yNzIsMjAgKzI3MiwzNiBAQCB2b2lkCiBFeGVjRW5kUmVj dXJzaXZlVW5pb24oUmVjdXJzaXZlVW5pb25TdGF0ZSAqbm9kZSkKIHsKIAkvKiBSZWxlYXNlIHR1 cGxlc3RvcmVzICovCi0JdHVwbGVzdG9yZV9lbmQobm9kZS0+d29ya2luZ190YWJsZSk7Ci0JdHVw bGVzdG9yZV9lbmQobm9kZS0+aW50ZXJtZWRpYXRlX3RhYmxlKTsKKwlpZiAobm9kZS0+d29ya2lu Z190YWJsZSAhPSBOVUxMKQorCXsKKwkJdHVwbGVzdG9yZV9lbmQobm9kZS0+d29ya2luZ190YWJs ZSk7CisJCW5vZGUtPndvcmtpbmdfdGFibGUgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+aW50ZXJt ZWRpYXRlX3RhYmxlICE9IE5VTEwpCisJeworCQl0dXBsZXN0b3JlX2VuZChub2RlLT5pbnRlcm1l ZGlhdGVfdGFibGUpOworCQlub2RlLT5pbnRlcm1lZGlhdGVfdGFibGUgPSBOVUxMOworCX0KIAog CS8qIGZyZWUgc3Vic2lkaWFyeSBzdHVmZiBpbmNsdWRpbmcgaGFzaHRhYmxlICovCi0JaWYgKG5v ZGUtPnRlbXBDb250ZXh0KQorCWlmIChub2RlLT50ZW1wQ29udGV4dCAhPSBOVUxMKQorCXsKIAkJ TWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50ZW1wQ29udGV4dCk7Ci0JaWYgKG5vZGUtPnRhYmxl Q29udGV4dCkKKwkJbm9kZS0+dGVtcENvbnRleHQgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+dGFi bGVDb250ZXh0ICE9IE5VTEwpCisJewogCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnRhYmxl Q29udGV4dCk7CisJCW5vZGUtPnRhYmxlQ29udGV4dCA9IE5VTEw7CisJfQogCiAJLyoKIAkgKiBj bG9zZSBkb3duIHN1YnBsYW5zCiAJICovCiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9k ZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIAlFeGVjRW5kTm9kZShpbm5lclBs YW5TdGF0ZShub2RlKSk7CisJaW5uZXJQbGFuU3RhdGUobm9kZSkgPSBOVUxMOwogfQogCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKaW5kZXggMzQ4MzYxZTdmNC4uZTNjZmM5 Yjc3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwpAQCAtMjQzLDYgKzI0Myw3IEBAIEV4 ZWNFbmRSZXN1bHQoUmVzdWx0U3RhdGUgKm5vZGUpCiAJICogc2h1dCBkb3duIHN1YnBsYW5zCiAJ ICovCiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRl KG5vZGUpID0gTlVMTDsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNhbXBsZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2Fu LmMKaW5kZXggNzE0YjA3NmU2NC4uNmFiOTEwMDFiYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U2FtcGxlc2Nhbi5jCkBAIC0xODEsMTQgKzE4MSwxNyBAQCBFeGVjRW5kU2FtcGxlU2NhbihTYW1w bGVTY2FuU3RhdGUgKm5vZGUpCiAJLyoKIAkgKiBUZWxsIHNhbXBsaW5nIGZ1bmN0aW9uIHRoYXQg d2UgZmluaXNoZWQgdGhlIHNjYW4uCiAJICovCi0JaWYgKG5vZGUtPnRzbXJvdXRpbmUtPkVuZFNh bXBsZVNjYW4pCisJaWYgKG5vZGUtPnRzbXJvdXRpbmUgIT0gTlVMTCAmJiBub2RlLT50c21yb3V0 aW5lLT5FbmRTYW1wbGVTY2FuKQogCQlub2RlLT50c21yb3V0aW5lLT5FbmRTYW1wbGVTY2FuKG5v ZGUpOwogCiAJLyoKLQkgKiBjbG9zZSBoZWFwIHNjYW4KKwkgKiBjbG9zZSBoZWFwIHNjYW4gKG5v LW9wIGlmIHdlIGRpZG4ndCBzdGFydCBpdCkKIAkgKi8KIAlpZiAobm9kZS0+c3Muc3NfY3VycmVu dFNjYW5EZXNjKQorCXsKIAkJdGFibGVfZW5kc2Nhbihub2RlLT5zcy5zc19jdXJyZW50U2NhbkRl c2MpOworCQlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOworCX0KIH0KIAogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKaW5kZXggN2NiMTJhMTFjMi4uYjA1 Mjc3NWU1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC0xODMsMTggKzE4Mywx NCBAQCBFeGVjSW5pdFNlcVNjYW4oU2VxU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiB2b2lkCiBFeGVjRW5kU2VxU2NhbihTZXFTY2FuU3RhdGUgKm5vZGUpCiB7Ci0JVGFi bGVTY2FuRGVzYyBzY2FuRGVzYzsKLQotCS8qCi0JICogZ2V0IGluZm9ybWF0aW9uIGZyb20gbm9k ZQotCSAqLwotCXNjYW5EZXNjID0gbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjOwotCiAJLyoK LQkgKiBjbG9zZSBoZWFwIHNjYW4KKwkgKiBjbG9zZSBoZWFwIHNjYW4gKG5vLW9wIGlmIHdlIGRp ZG4ndCBzdGFydCBpdCkKIAkgKi8KLQlpZiAoc2NhbkRlc2MgIT0gTlVMTCkKLQkJdGFibGVfZW5k c2NhbihzY2FuRGVzYyk7CisJaWYgKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyAhPSBOVUxM KQorCXsKKwkJdGFibGVfZW5kc2Nhbihub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MpOworCQlu b2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOworCX0KIH0KIAogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU2V0T3AuYwppbmRleCBhOGFjNjhiNDgyLi5mZTM0YjIxMzRmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU2V0T3AuYwpAQCAtNTgzLDEwICs1ODMsMTQgQEAgdm9pZAogRXhlY0Vu ZFNldE9wKFNldE9wU3RhdGUgKm5vZGUpCiB7CiAJLyogZnJlZSBzdWJzaWRpYXJ5IHN0dWZmIGlu Y2x1ZGluZyBoYXNodGFibGUgKi8KLQlpZiAobm9kZS0+dGFibGVDb250ZXh0KQorCWlmIChub2Rl LT50YWJsZUNvbnRleHQgIT0gTlVMTCkKKwl7CiAJCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+ dGFibGVDb250ZXh0KTsKKwkJbm9kZS0+dGFibGVDb250ZXh0ID0gTlVMTDsKKwl9CiAKIAlFeGVj RW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJb3V0ZXJQbGFuU3RhdGUobm9kZSkgPSBO VUxMOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU29ydC5jCmluZGV4IDNmYzkyNWQ3YjQuLmFmODUy NDY0ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYwpAQCAtMzA3LDEzICszMDcsMTYgQEAgRXhl Y0VuZFNvcnQoU29ydFN0YXRlICpub2RlKQogCSAqIFJlbGVhc2UgdHVwbGVzb3J0IHJlc291cmNl cwogCSAqLwogCWlmIChub2RlLT50dXBsZXNvcnRzdGF0ZSAhPSBOVUxMKQorCXsKIAkJdHVwbGVz b3J0X2VuZCgoVHVwbGVzb3J0c3RhdGUgKikgbm9kZS0+dHVwbGVzb3J0c3RhdGUpOwotCW5vZGUt PnR1cGxlc29ydHN0YXRlID0gTlVMTDsKKwkJbm9kZS0+dHVwbGVzb3J0c3RhdGUgPSBOVUxMOwor CX0KIAogCS8qCiAJICogc2h1dCBkb3duIHRoZSBzdWJwbGFuCiAJICovCiAJRXhlY0VuZE5vZGUo b3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIAog CVNPMV9wcmludGYoIkV4ZWNFbmRTb3J0OiAlc1xuIiwKIAkJCSAgICJzb3J0IG5vZGUgc2h1dGRv d24iKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwppbmRleCA3ODIwOTdl YWYyLi4wYjI2MTIxODNhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3Vi cXVlcnlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5j CkBAIC0xNzEsNiArMTcxLDcgQEAgRXhlY0VuZFN1YnF1ZXJ5U2NhbihTdWJxdWVyeVNjYW5TdGF0 ZSAqbm9kZSkKIAkgKiBjbG9zZSBkb3duIHN1YnF1ZXJ5CiAJICovCiAJRXhlY0VuZE5vZGUobm9k ZS0+c3VicGxhbik7CisJbm9kZS0+c3VicGxhbiA9IE5VTEw7CiB9CiAKIC8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5jc2Nhbi5jCmluZGV4IGY0ODMyMjFiYjguLjc3 OGQyNWQ1MTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNz Y2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwpAQCAt MjIzLDggKzIyMywxMCBAQCBFeGVjRW5kVGFibGVGdW5jU2NhbihUYWJsZUZ1bmNTY2FuU3RhdGUg Km5vZGUpCiAJICogUmVsZWFzZSB0dXBsZXN0b3JlIHJlc291cmNlcwogCSAqLwogCWlmIChub2Rl LT50dXBzdG9yZSAhPSBOVUxMKQorCXsKIAkJdHVwbGVzdG9yZV9lbmQobm9kZS0+dHVwc3RvcmUp OwotCW5vZGUtPnR1cHN0b3JlID0gTlVMTDsKKwkJbm9kZS0+dHVwc3RvcmUgPSBOVUxMOworCX0K IH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRp ZHJhbmdlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCmlu ZGV4IDlhYTc2ODNkN2UuLjcwMmVlODg0ZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVUaWRyYW5nZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlk cmFuZ2VzY2FuLmMKQEAgLTMyNiwxMCArMzI2LDE0IEBAIEV4ZWNSZVNjYW5UaWRSYW5nZVNjYW4o VGlkUmFuZ2VTY2FuU3RhdGUgKm5vZGUpCiB2b2lkCiBFeGVjRW5kVGlkUmFuZ2VTY2FuKFRpZFJh bmdlU2NhblN0YXRlICpub2RlKQogewotCVRhYmxlU2NhbkRlc2Mgc2NhbiA9IG5vZGUtPnNzLnNz X2N1cnJlbnRTY2FuRGVzYzsKLQotCWlmIChzY2FuICE9IE5VTEwpCi0JCXRhYmxlX2VuZHNjYW4o c2Nhbik7CisJLyoKKwkgKiBjbG9zZSBoZWFwIHNjYW4gKG5vLW9wIGlmIHdlIGRpZG4ndCBzdGFy dCBpdCkKKwkgKi8KKwlpZiAobm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjICE9IE5VTEwpCisJ eworCQl0YWJsZV9lbmRzY2FuKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyk7CisJCW5vZGUt PnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CisJfQogfQogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwppbmRleCA4NjRhOTAxM2I2Li5mMzc1OTUxNjk5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKQEAgLTQ2OSw4ICs0NjksMTQgQEAgRXhlY1JlU2Nh blRpZFNjYW4oVGlkU2NhblN0YXRlICpub2RlKQogdm9pZAogRXhlY0VuZFRpZFNjYW4oVGlkU2Nh blN0YXRlICpub2RlKQogewotCWlmIChub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MpCisJLyoK KwkgKiBjbG9zZSBoZWFwIHNjYW4gKG5vLW9wIGlmIHdlIGRpZG4ndCBzdGFydCBpdCkKKwkgKi8K KwlpZiAobm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjICE9IE5VTEwpCisJewogCQl0YWJsZV9l bmRzY2FuKG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyk7CisJCW5vZGUtPnNzLnNzX2N1cnJl bnRTY2FuRGVzYyA9IE5VTEw7CisJfQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl VW5pcXVlLmMKaW5kZXggYTEyNTkyM2U5My4uYjgyZDBlOWFkNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVVbmlxdWUuYwpAQCAtMTY4LDYgKzE2OCw3IEBAIHZvaWQKIEV4ZWNFbmRVbmlxdWUoVW5pcXVl U3RhdGUgKm5vZGUpCiB7CiAJRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91 dGVyUGxhblN0YXRlKG5vZGUpID0gTlVMTDsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2lu ZG93QWdnLmMKaW5kZXggMzIyMWZhMTUyMi4uNTYxZDdlNzMxZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVXaW5kb3dBZ2cuYwpAQCAtMTM1MSwxMSArMTM1MSwxNCBAQCByZWxlYXNlX3BhcnRpdGlv bihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiAJICogYW55IGFnZ3JlZ2F0ZSB0ZW1wIGRhdGEp LiAgV2UgZG9uJ3QgcmVseSBvbiByZXRhaWwgcGZyZWUgYmVjYXVzZSBzb21lCiAJICogYWdncmVn YXRlcyBtaWdodCBoYXZlIGFsbG9jYXRlZCBkYXRhIHdlIGRvbid0IGhhdmUgZGlyZWN0IHBvaW50 ZXJzIHRvLgogCSAqLwotCU1lbW9yeUNvbnRleHRSZXNldCh3aW5zdGF0ZS0+cGFydGNvbnRleHQp OwotCU1lbW9yeUNvbnRleHRSZXNldCh3aW5zdGF0ZS0+YWdnY29udGV4dCk7CisJaWYgKHdpbnN0 YXRlLT5wYXJ0Y29udGV4dCAhPSBOVUxMKQorCQlNZW1vcnlDb250ZXh0UmVzZXQod2luc3RhdGUt PnBhcnRjb250ZXh0KTsKKwlpZiAod2luc3RhdGUtPmFnZ2NvbnRleHQgIT0gTlVMTCkKKwkJTWVt b3J5Q29udGV4dFJlc2V0KHdpbnN0YXRlLT5hZ2djb250ZXh0KTsKIAlmb3IgKGkgPSAwOyBpIDwg d2luc3RhdGUtPm51bWFnZ3M7IGkrKykKIAl7Ci0JCWlmICh3aW5zdGF0ZS0+cGVyYWdnW2ldLmFn Z2NvbnRleHQgIT0gd2luc3RhdGUtPmFnZ2NvbnRleHQpCisJCWlmICh3aW5zdGF0ZS0+cGVyYWdn W2ldLmFnZ2NvbnRleHQgIT0gTlVMTCAmJgorCQkJd2luc3RhdGUtPnBlcmFnZ1tpXS5hZ2djb250 ZXh0ICE9IHdpbnN0YXRlLT5hZ2djb250ZXh0KQogCQkJTWVtb3J5Q29udGV4dFJlc2V0KHdpbnN0 YXRlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCk7CiAJfQogCkBAIC0yNjgxLDI0ICsyNjg0LDQwIEBA IEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0FnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiB2b2lkCiBFeGVjRW5kV2luZG93QWdnKFdpbmRvd0FnZ1N0YXRlICpub2RlKQogewot CVBsYW5TdGF0ZSAgKm91dGVyUGxhbjsKIAlpbnQJCQlpOwogCiAJcmVsZWFzZV9wYXJ0aXRpb24o bm9kZSk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+bnVtYWdnczsgaSsrKQogCXsKLQkJaWYg KG5vZGUtPnBlcmFnZ1tpXS5hZ2djb250ZXh0ICE9IG5vZGUtPmFnZ2NvbnRleHQpCisJCWlmIChu b2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCAhPSBOVUxMICYmCisJCQlub2RlLT5wZXJhZ2dbaV0u YWdnY29udGV4dCAhPSBub2RlLT5hZ2djb250ZXh0KQogCQkJTWVtb3J5Q29udGV4dERlbGV0ZShu b2RlLT5wZXJhZ2dbaV0uYWdnY29udGV4dCk7CiAJfQotCU1lbW9yeUNvbnRleHREZWxldGUobm9k ZS0+cGFydGNvbnRleHQpOwotCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+YWdnY29udGV4dCk7 CisJaWYgKG5vZGUtPnBhcnRjb250ZXh0ICE9IE5VTEwpCisJeworCQlNZW1vcnlDb250ZXh0RGVs ZXRlKG5vZGUtPnBhcnRjb250ZXh0KTsKKwkJbm9kZS0+cGFydGNvbnRleHQgPSBOVUxMOworCX0K KwlpZiAobm9kZS0+YWdnY29udGV4dCAhPSBOVUxMKQorCXsKKwkJTWVtb3J5Q29udGV4dERlbGV0 ZShub2RlLT5hZ2djb250ZXh0KTsKKwkJbm9kZS0+YWdnY29udGV4dCA9IE5VTEw7CisJfQogCi0J cGZyZWUobm9kZS0+cGVyZnVuYyk7Ci0JcGZyZWUobm9kZS0+cGVyYWdnKTsKKwlpZiAobm9kZS0+ cGVyZnVuYyAhPSBOVUxMKQorCXsKKwkJcGZyZWUobm9kZS0+cGVyZnVuYyk7CisJCW5vZGUtPnBl cmZ1bmMgPSBOVUxMOworCX0KKwlpZiAobm9kZS0+cGVyYWdnICE9IE5VTEwpCisJeworCQlwZnJl ZShub2RlLT5wZXJhZ2cpOworCQlub2RlLT5wZXJhZ2cgPSBOVUxMOworCX0KIAotCW91dGVyUGxh biA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxhbik7CisJRXhl Y0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCW91dGVyUGxhblN0YXRlKG5vZGUpID0g TlVMTDsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0KLS0gCjIuNDMuMAoK --00000000000049a510061fb86454 Content-Type: application/octet-stream; name="v50-0003-Assert-that-relations-needing-their-permissions-.patch" Content-Disposition: attachment; filename="v50-0003-Assert-that-relations-needing-their-permissions-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lzva9oek2 RnJvbSAxNjU3Mzg5YzNjNDRiMTc2NTkxOTc3M2FkOWNiYWFhYjhhNzJmYTY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgMjUgU2VwIDIwMjMgMTE6NTI6MDIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY1 MCAzLzZdIEFzc2VydCB0aGF0IHJlbGF0aW9ucyBuZWVkaW5nIHRoZWlyIHBlcm1pc3Npb25zCiBj aGVja2VkIGFyZSBsb2NrZWQKCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAg ICAgfCAxMyArKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jICAg ICB8ICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIHwgIDEgLQogMyBm aWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMKaW5kZXggMmQ1MjM0ZGVlMy4uNWUxYjhhNDJlOCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRl SGFuZGxlci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInRjb3AvdXRp bGl0eS5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRf c3RhdHVzLmgiCkBAIC02MDIsNiArNjAzLDE4IEBAIEV4ZWNDaGVja1Blcm1pc3Npb25zKExpc3Qg KnJhbmdlVGFibGUsIExpc3QgKnJ0ZXBlcm1pbmZvcywKIAkJCQkgICAocnRlLT5ydGVraW5kID09 IFJURV9TVUJRVUVSWSAmJgogCQkJCQlydGUtPnJlbGtpbmQgPT0gUkVMS0lORF9WSUVXKSk7CiAK KwkJCS8qCisJCQkgKiBSZWxhdGlvbnMgd2hvc2UgcGVybWlzc2lvbnMgbmVlZCB0byBiZSBjaGVj a2VkIG11c3QgYWxyZWFkeQorCQkJICogaGF2ZSBiZWVuIGxvY2tlZCBieSB0aGUgcGFyc2VyIG9y IGJ5IEdldENhY2hlZFBsYW4oKSBpZiBhCisJCQkgKiBjYWNoZWQgcGxhbiBpcyBiZWluZyBleGVj dXRlZC4KKwkJCSAqCisJCQkgKiBYWFggTWF5YmUgd2Ugc2hvdWxkIHdlIHNraXAgY2FsbGluZyBF eGVjQ2hlY2tQZXJtaXNzaW9ucyBmcm9tCisJCQkgKiBJbml0UGxhbiBpbiBhIHBhcmFsbGVsIHdv cmtlci4KKwkJCSAqLworCQkJQXNzZXJ0KElzUGFyYWxsZWxXb3JrZXIoKSB8fAorCQkJCSAgIENo ZWNrUmVsYXRpb25PaWRMb2NrZWRCeU1lKHJ0ZS0+cmVsaWQsIEFjY2Vzc1NoYXJlTG9jaywKKwkJ CQkJCQkJCQkJICB0cnVlKSk7CisKIAkJCSh2b2lkKSBnZXRSVEVQZXJtaXNzaW9uSW5mbyhydGVw ZXJtaW5mb3MsIHJ0ZSk7CiAJCQkvKiBNYW55LXRvLW9uZSBtYXBwaW5nIG5vdCBhbGxvd2VkICov CiAJCQlBc3NlcnQoIWJtc19pc19tZW1iZXIocnRlLT5wZXJtaW5mb2luZGV4LCBpbmRleHNldCkp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKaW5kZXggMDk0NTIyYWNiNC4uYTFjODlmNWQ3MiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvbG1nci5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgogI2luY2x1ZGUg InV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAKIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXggNDhhMjgwZDA4OS4uZjY0NzgyMTM4MiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKQEAgLTIxMTMsNyArMjExMyw2IEBAIGdl dF9yZWxfcmVsYW0oT2lkIHJlbGlkKQogCXJldHVybiByZXN1bHQ7CiB9CiAKLQogLyoJCQkJLS0t LS0tLS0tLSBUUkFOU0ZPUk0gQ0FDSEUgLS0tLS0tLS0tLQkJCQkJCSAqLwogCiBPaWQKLS0gCjIu NDMuMAoK --00000000000049a510061fb86454 Content-Type: application/octet-stream; name="v50-0005-Don-t-lock-child-tables-in-GetCachedPlan.patch" Content-Disposition: attachment; filename="v50-0005-Don-t-lock-child-tables-in-GetCachedPlan.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lzva9oeo4 RnJvbSBhMWFlZjZkNzI3YzBhNmM2ZjMzMDVhNjIzZjYzMzdlMzVkMDA3YmU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDoxNSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjUw IDUvNl0gRG9uJ3QgbG9jayBjaGlsZCB0YWJsZXMgaW4gR2V0Q2FjaGVkUGxhbigpCgpDdXJyZW50 bHksIEdldENhY2hlZFBsYW4oKSB0YWtlcyBhIGxvY2sgb24gYWxsIHJlbGF0aW9ucyBjb250YWlu ZWQgaW4KYSBjYWNoZWQgcGxhbiBiZWZvcmUgcmV0dXJuaW5nIGl0IGFzIGEgdmFsaWQgcGxhbiB0 byBpdHMgY2FsbGVycyBmb3IKZXhlY3V0aW9uLiAgT25lIGRpc2FkdmFudGFnZSBpcyB0aGF0IGlm IHRoZSBwbGFuIGNvbnRhaW5zIHBhcnRpdGlvbnMKdGhhdCBhcmUgcHJ1bmFibGUgd2l0aCBjb25k aXRpb25zIGludm9sdmluZyBFWFRFUk4gcGFyYW1ldGVycyBhbmQKb3RoZXIgc3RhYmxlIGV4cHJl c3Npb25zIChrbm93biBhcyAiaW5pdGlhbCBwcnVuaW5nIiksIG1hbnkgb2YgdGhlbQp3b3VsZCBi ZSBsb2NrZWQgdW5uZWNlc3NhcmlseSwgYmVjYXVzZSBvbmx5IHRob3NlIHRoYXQgc3Vydml2ZQpp bml0aWFsIHBydW5pbmcgbmVlZCB0byBoYXZlIGJlZW4gbG9ja2VkLiAgTG9ja2luZyBhbGwgcGFy dGl0aW9ucyB0aGlzCndheSBjYXVzZXMgc2lnbmlmaWNhbnQgZGVsYXkgd2hlbiB0aGVyZSBhcmUg bWFueSBwYXJ0aXRpb25zLiAgTm90ZQp0aGF0IGluaXRpYWwgcHJ1bmluZyBvY2N1cnMgZHVyaW5n IGV4ZWN1dG9yJ3MgaW5pdGlhbGl6YXRpb24gb2YgdGhlCnBsYW4sIHRoYXQgaXMsIEV4ZWNJbml0 Tm9kZSgpLgoKUHJldmlvdXMgY29tbWl0cyBoYXZlIG1hZGUgYWxsIHRoZSBuZWNlc3NhcnkgYWRq dXN0bWVudCB0byBtYWtlIHRoZQpleGVjdXRvciBsb2NrIGNoaWxkIHRhYmxlcywgdG8gZGV0ZWN0 IGludmFsaWRhdGlvbiBvZiB0aGUgQ2FjaGVkUGxhbgpyZXN1bHRpbmcgZnJvbSB0aGF0LCBhbmQg dG8gcmV0cnkgdGhlIGV4ZWN1dGlvbiB3aXRoIGEgbmV3IENhY2hlUGxhbi4KU28sIHRoaXMgY29t bWl0IHNpbXBseSByZW1vdmVzIHRoZSBjb2RlIGluIHBsYW5jYWNoZS5jIHRoYXQgZG9lcyB0aGUK ImZvciBleGVjdXRpb24iIGxvY2tpbmcsIGFrYSBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLgoKRGlz Y3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdrTVNnZTZUZ0M5S1F6ZGUwb2hw QXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8IDE1NCArKysrKysrLS0tLS0tLS0tLQog c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUgICAgIHwgICAzICstCiAu Li4vbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMgfCAgNjggKysrKysr Ky0KIC4uLi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0ICAgICAgICAgICB8IDE1OCAr KysrKysrKysrKysrKysrKysKIC4uLi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYyAgICAg ICAgICAgICB8ICA2MSArKysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDM0MCBpbnNlcnRpb25zKCsp LCAxMDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9k ZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1w bGFuLXJlcGxhbi5zcGVjCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggY2YwNTljYjg1MC4u MTY4YWI1NTNhYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xNTA4LDcgKzE1MDgsNyBA QCBFeGVjR2V0QW5jZXN0b3JSZXN1bHRSZWxzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvKQogCiAJCQkvKgogCQkJICogQWxsIGFuY2VzdG9ycyB1cCB0byB0aGUg cm9vdCB0YXJnZXQgcmVsYXRpb24gbXVzdCBoYXZlIGJlZW4KLQkJCSAqIGxvY2tlZCBieSB0aGUg cGxhbm5lciBvciBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLgorCQkJICogbG9ja2VkIGJ5IHRoZSBw bGFubmVyIG9yIEV4ZWNMb2NrQXBwZW5kTm9uTGVhZlBhcnRpdGlvbnMoKS4KIAkJCSAqLwogCQkJ YW5jUmVsID0gdGFibGVfb3BlbihhbmNPaWQsIE5vTG9jayk7CiAJCQlySW5mbyA9IG1ha2VOb2Rl KFJlc3VsdFJlbEluZm8pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxh bmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCA1YWYx YTE2OGVjLi5hZDMzZDYxMWY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9w bGFuY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAt MTAzLDEzICsxMDMsMTMgQEAgc3RhdGljIHZvaWQgUmVsZWFzZUdlbmVyaWNQbGFuKENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogc3RhdGljIExpc3QgKlJldmFsaWRhdGVDYWNoZWRRdWVy eShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgICBRdWVyeUVudmlyb25t ZW50ICpxdWVyeUVudik7CiBzdGF0aWMgYm9vbCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNv dXJjZSAqcGxhbnNvdXJjZSk7CitzdGF0aWMgYm9vbCBHZW5lcmljUGxhbklzVmFsaWQoQ2FjaGVk UGxhbiAqY3BsYW4pOwogc3RhdGljIENhY2hlZFBsYW4gKkJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0ICpxbGlzdCwKIAkJCQkJCQkJICAgUGFyYW1MaXN0 SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOwogc3RhdGljIGJv b2wgY2hvb3NlX2N1c3RvbV9wbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJ CQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcyk7CiBzdGF0aWMgZG91YmxlIGNhY2hlZF9w bGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpOwogc3RhdGlj IFF1ZXJ5ICpRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cyk7Ci1zdGF0aWMgdm9p ZCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7CiBz dGF0aWMgdm9pZCBBY3F1aXJlUGxhbm5lckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1 aXJlKTsKIHN0YXRpYyB2b2lkIFNjYW5RdWVyeUZvckxvY2tzKFF1ZXJ5ICpwYXJzZXRyZWUsIGJv b2wgYWNxdWlyZSk7CiBzdGF0aWMgYm9vbCBTY2FuUXVlcnlXYWxrZXIoTm9kZSAqbm9kZSwgYm9v bCAqYWNxdWlyZSk7CkBAIC04MTUsOCArODE1LDEzIEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogICogQ2FsbGVyIG11c3QgaGF2ZSBhbHJlYWR5 IGNhbGxlZCBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkgdG8gdmVyaWZ5IHRoYXQgdGhlCiAgKiBxdWVy eXRyZWUgaXMgdXAgdG8gZGF0ZS4KICAqCi0gKiBPbiBhICJ0cnVlIiByZXR1cm4sIHdlIGhhdmUg YWNxdWlyZWQgdGhlIGxvY2tzIG5lZWRlZCB0byBydW4gdGhlIHBsYW4uCi0gKiAoV2UgbXVzdCBk byB0aGlzIGZvciB0aGUgInRydWUiIHJlc3VsdCB0byBiZSByYWNlLWNvbmRpdGlvbi1mcmVlLikK KyAqIElmIHRoZSBwbGFuIGluY2x1ZGVzIGNoaWxkIHJlbGF0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRo ZSBwbGFubmVyLCB0aGV5CisgKiB3b3VsZG4ndCBiZSBsb2NrZWQgeWV0LiBUaGlzIGlzIGJlY2F1 c2UgQWNxdWlyZVBsYW5uZXJMb2NrcygpIG9ubHkgbG9ja3MKKyAqIHJlbGF0aW9ucyBwcmVzZW50 IGluIHRoZSBvcmlnaW5hbCBxdWVyeSdzIHJhbmdlIHRhYmxlIChiZWZvcmUgcGxhbm5lcgorICog ZW50cnkpLiBIZW5jZSwgdGhlIHBsYW4gbWlnaHQgYmVjb21lIHN0YWxlIGlmIGNoaWxkIHJlbGF0 aW9ucyBhcmUgbW9kaWZpZWQKKyAqIGNvbmN1cnJlbnRseS4gRHVyaW5nIHRoZSBwbGFuIGluaXRp YWxpemF0aW9uLCB0aGUgZXhlY3V0b3IgbXVzdCBlbnN1cmUgdGhlCisgKiBwbGFuIChDYWNoZWRQ bGFuKSByZW1haW5zIHZhbGlkIGFmdGVyIGxvY2tpbmcgZWFjaCBjaGlsZCB0YWJsZS4gSWYgZm91 bmQKKyAqIGludmFsaWQsIHRoZSBjYWxsZXIgc2hvdWxkIGJlIHByb21wdGVkIHRvIHJlY3JlYXRl IHRoZSBwbGFuLgogICovCiBzdGF0aWMgYm9vbAogQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UpCkBAIC04MzAsNjAgKzgzNSw1NiBAQCBDaGVja0NhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKIAlpZiAoIXBsYW4pCiAJCXJldHVybiBmYWxz ZTsKIAotCUFzc2VydChwbGFuLT5tYWdpYyA9PSBDQUNIRURQTEFOX01BR0lDKTsKLQkvKiBHZW5l cmljIHBsYW5zIGFyZSBuZXZlciBvbmUtc2hvdCAqLwotCUFzc2VydCghcGxhbi0+aXNfb25lc2hv dCk7CisJaWYgKEdlbmVyaWNQbGFuSXNWYWxpZChwbGFuKSkKKwkJcmV0dXJuIHRydWU7CiAKIAkv KgotCSAqIElmIHBsYW4gaXNuJ3QgdmFsaWQgZm9yIGN1cnJlbnQgcm9sZSwgd2UgY2FuJ3QgdXNl IGl0LgorCSAqIFBsYW4gaGFzIGJlZW4gaW52YWxpZGF0ZWQsIHNvIHVubGluayBpdCBmcm9tIHRo ZSBwYXJlbnQgYW5kIHJlbGVhc2UgaXQuCiAJICovCi0JaWYgKHBsYW4tPmlzX3ZhbGlkICYmIHBs YW4tPmRlcGVuZHNPblJvbGUgJiYKLQkJcGxhbi0+cGxhblJvbGVJZCAhPSBHZXRVc2VySWQoKSkK LQkJcGxhbi0+aXNfdmFsaWQgPSBmYWxzZTsKKwlSZWxlYXNlR2VuZXJpY1BsYW4ocGxhbnNvdXJj ZSk7CiAKLQkvKgotCSAqIElmIGl0IGFwcGVhcnMgdmFsaWQsIGFjcXVpcmUgbG9ja3MgYW5kIHJl Y2hlY2s7IHRoaXMgaXMgbXVjaCB0aGUgc2FtZQotCSAqIGxvZ2ljIGFzIGluIFJldmFsaWRhdGVD YWNoZWRRdWVyeSwgYnV0IGZvciBhIHBsYW4uCi0JICovCi0JaWYgKHBsYW4tPmlzX3ZhbGlkKQor CXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIEdlbmVyaWNQbGFuSXNWYWxpZAorICoJCUlzIGEg Z2VuZXJpYyBwbGFuIHN0aWxsIHZhbGlkPworICoKKyAqIEl0IG1heSBoYXZlIGdvbmUgc3RhbGUg ZHVlIHRvIGNvbmN1cnJlbnQgc2NoZW1hIG1vZGlmaWNhdGlvbnMgb2YgcmVsYXRpb25zCisgKiBt ZW50aW9uZWQgaW4gdGhlIHBsYW4gb3IgYSBjb3VwbGUgb2Ygb3RoZXIgdGhpbmdzIG1lbnRpb25l ZCBiZWxvdy4KKyAqLworc3RhdGljIGJvb2wKK0dlbmVyaWNQbGFuSXNWYWxpZChDYWNoZWRQbGFu ICpjcGxhbikKK3sKKwlBc3NlcnQoY3BsYW4gIT0gTlVMTCk7CisJQXNzZXJ0KGNwbGFuLT5tYWdp YyA9PSBDQUNIRURQTEFOX01BR0lDKTsKKwkvKiBHZW5lcmljIHBsYW5zIGFyZSBuZXZlciBvbmUt c2hvdCAqLworCUFzc2VydCghY3BsYW4tPmlzX29uZXNob3QpOworCisJaWYgKGNwbGFuLT5pc192 YWxpZCkKIAl7CiAJCS8qCiAJCSAqIFBsYW4gbXVzdCBoYXZlIHBvc2l0aXZlIHJlZmNvdW50IGJl Y2F1c2UgaXQgaXMgcmVmZXJlbmNlZCBieQogCQkgKiBwbGFuc291cmNlOyBzbyBubyBuZWVkIHRv IGZlYXIgaXQgZGlzYXBwZWFycyB1bmRlciB1cyBoZXJlLgogCQkgKi8KLQkJQXNzZXJ0KHBsYW4t PnJlZmNvdW50ID4gMCk7Ci0KLQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3MocGxhbi0+c3RtdF9saXN0 LCB0cnVlKTsKKwkJQXNzZXJ0KGNwbGFuLT5yZWZjb3VudCA+IDApOwogCiAJCS8qCi0JCSAqIElm IHBsYW4gd2FzIHRyYW5zaWVudCwgY2hlY2sgdG8gc2VlIGlmIFRyYW5zYWN0aW9uWG1pbiBoYXMK LQkJICogYWR2YW5jZWQsIGFuZCBpZiBzbyBpbnZhbGlkYXRlIGl0LgorCQkgKiBJZiBwbGFuIGlz bid0IHZhbGlkIGZvciBjdXJyZW50IHJvbGUsIHdlIGNhbid0IHVzZSBpdC4KIAkJICovCi0JCWlm IChwbGFuLT5pc192YWxpZCAmJgotCQkJVHJhbnNhY3Rpb25JZElzVmFsaWQocGxhbi0+c2F2ZWRf eG1pbikgJiYKLQkJCSFUcmFuc2FjdGlvbklkRXF1YWxzKHBsYW4tPnNhdmVkX3htaW4sIFRyYW5z YWN0aW9uWG1pbikpCi0JCQlwbGFuLT5pc192YWxpZCA9IGZhbHNlOworCQlpZiAoY3BsYW4tPmRl cGVuZHNPblJvbGUgJiYgY3BsYW4tPnBsYW5Sb2xlSWQgIT0gR2V0VXNlcklkKCkpCisJCQljcGxh bi0+aXNfdmFsaWQgPSBmYWxzZTsKIAogCQkvKgotCQkgKiBCeSBub3csIGlmIGFueSBpbnZhbGlk YXRpb24gaGFzIGhhcHBlbmVkLCB0aGUgaW52YWwgY2FsbGJhY2sKLQkJICogZnVuY3Rpb25zIHdp bGwgaGF2ZSBtYXJrZWQgdGhlIHBsYW4gaW52YWxpZC4KKwkJICogSWYgcGxhbiB3YXMgdHJhbnNp ZW50LCBjaGVjayB0byBzZWUgaWYgVHJhbnNhY3Rpb25YbWluIGhhcworCQkgKiBhZHZhbmNlZCwg YW5kIGlmIHNvIGludmFsaWRhdGUgaXQuCiAJCSAqLwotCQlpZiAocGxhbi0+aXNfdmFsaWQpCi0J CXsKLQkJCS8qIFN1Y2Nlc3NmdWxseSByZXZhbGlkYXRlZCBhbmQgbG9ja2VkIHRoZSBxdWVyeS4g Ki8KLQkJCXJldHVybiB0cnVlOwotCQl9Ci0KLQkJLyogT29wcywgdGhlIHJhY2UgY2FzZSBoYXBw ZW5lZC4gIFJlbGVhc2UgdXNlbGVzcyBsb2Nrcy4gKi8KLQkJQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo cGxhbi0+c3RtdF9saXN0LCBmYWxzZSk7CisJCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZChjcGxh bi0+c2F2ZWRfeG1pbikgJiYKKwkJCSFUcmFuc2FjdGlvbklkRXF1YWxzKGNwbGFuLT5zYXZlZF94 bWluLCBUcmFuc2FjdGlvblhtaW4pKQorCQkJY3BsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CiAJfQog Ci0JLyoKLQkgKiBQbGFuIGhhcyBiZWVuIGludmFsaWRhdGVkLCBzbyB1bmxpbmsgaXQgZnJvbSB0 aGUgcGFyZW50IGFuZCByZWxlYXNlIGl0LgotCSAqLwotCVJlbGVhc2VHZW5lcmljUGxhbihwbGFu c291cmNlKTsKLQotCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gY3BsYW4tPmlzX3ZhbGlkOwogfQog CiAvKgpAQCAtMTE1Myw4ICsxMTU0LDE2IEBAIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAq cGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpCiAgKiBwbGFuIG9yIGEgY3VzdG9tIHBsYW4gZm9y IHRoZSBnaXZlbiBwYXJhbWV0ZXJzOiB0aGUgY2FsbGVyIGRvZXMgbm90IGtub3cKICAqIHdoaWNo IGl0IHdpbGwgZ2V0LgogICoKLSAqIE9uIHJldHVybiwgdGhlIHBsYW4gaXMgdmFsaWQgYW5kIHdl IGhhdmUgc3VmZmljaWVudCBsb2NrcyB0byBiZWdpbgotICogZXhlY3V0aW9uLgorICogVHlwaWNh bGx5LCB0aGUgcGxhbiByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGlzIHZhbGlkLiBIb3dldmVy LCBhIGNhdmVhdAorICogYXJpc2VzIHdpdGggaW5oZXJpdGFuY2UvcGFydGl0aW9uIGNoaWxkIHRh Ymxlcy4gVGhlc2UgYXJlbid0IGxvY2tlZCBieQorICogdGhpcyBmdW5jdGlvbiwgYXMgd2Ugb25s eSBsb2NrIHRhYmxlcyBkaXJlY3RseSBtZW50aW9uZWQgaW4gdGhlIG9yaWdpbmFsCisgKiBxdWVy eSBoZXJlLiAgVGhlIHRhc2sgb2YgbG9ja2luZyB0aGVzZSBjaGlsZCB0YWJsZXMgZmFsbHMgdG8g dGhlIGV4ZWN1dG9yCisgKiBkdXJpbmcgcGxhbiB0cmVlIHNldHVwLiBJZiBhY3F1aXJpbmcgdGhl c2UgbG9ja3MgaW52YWxpZGF0ZXMgdGhlIHBsYW4sIHRoZQorICogZXhlY3V0b3Igc2hvdWxkIGlu Zm9ybSB0aGUgY2FsbGVyIHRvIHJlZ2VuZXJhdGUgdGhlIHBsYW4gYnkgaW52b2tpbmcgdGhpcwor ICogZnVuY3Rpb24gYWdhaW4uICBUaGUgcmVhc29uIGZvciB0aGlzIGRlZmVycmVkIGNoaWxkIHRh YmxlIGxvY2tpbmcgbWVjaGFuaXNtCisgKiBpcyBlZmZpY2llbmN5OiBub3QgYWxsIG1pZ2h0IG5l ZWQgdG8gYmUgbG9ja2VkLiBTb21lIGNvdWxkIGJlIHBydW5lZCBkdXJpbmcKKyAqIGV4ZWN1dG9y IGluaXRpYWxpemF0aW9uLCBlc3BlY2lhbGx5IGlmIHRoZWlyIGNvcnJlc3BvbmRpbmcgcGxhbiBu b2RlcworICogZmFjaWxpdGF0ZSBwYXJ0aXRpb24gcHJ1bmluZy4KICAqCiAgKiBPbiByZXR1cm4s IHRoZSByZWZjb3VudCBvZiB0aGUgcGxhbiBoYXMgYmVlbiBpbmNyZW1lbnRlZDsgYSBsYXRlcgog ICogUmVsZWFzZUNhY2hlZFBsYW4oKSBjYWxsIGlzIGV4cGVjdGVkLiAgSWYgIm93bmVyIiBpcyBu b3QgTlVMTCB0aGVuCkBAIC0xMTg5LDcgKzExOTgsMTAgQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCXsKIAkJ aWYgKENoZWNrQ2FjaGVkUGxhbihwbGFuc291cmNlKSkKIAkJewotCQkJLyogV2Ugd2FudCBhIGdl bmVyaWMgcGxhbiwgYW5kIHdlIGFscmVhZHkgaGF2ZSBhIHZhbGlkIG9uZSAqLworCQkJLyoKKwkJ CSAqIFdlIHdhbnQgYSBnZW5lcmljIHBsYW4sIGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSB2YWxpZCBv bmUsIHRob3VnaAorCQkJICogc2VlIHRoZSBoZWFkZXIgY29tbWVudC4KKwkJCSAqLwogCQkJcGxh biA9IHBsYW5zb3VyY2UtPmdwbGFuOwogCQkJQXNzZXJ0KHBsYW4tPm1hZ2ljID09IENBQ0hFRFBM QU5fTUFHSUMpOwogCQl9CkBAIC0xMzg3LDggKzEzOTksOCBAQCBDYWNoZWRQbGFuQWxsb3dzU2lt cGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCX0KIAogCS8q Ci0JICogUmVqZWN0IGlmIEFjcXVpcmVFeGVjdXRvckxvY2tzIHdvdWxkIGhhdmUgYW55dGhpbmcg dG8gZG8uICBUaGlzIGlzCi0JICogcHJvYmFibHkgdW5uZWNlc3NhcnkgZ2l2ZW4gdGhlIHByZXZp b3VzIGNoZWNrLCBidXQgbGV0J3MgYmUgc2FmZS4KKwkgKiBSZWplY3QgaWYgdGhlIGV4ZWN1dG9y IHdvdWxkIG5lZWQgdG8gdGFrZSBhZGRpdGlvbmFsIGxvY2tzLCB0aGF0IGlzLCBpbgorCSAqIGFk ZGl0aW9uIHRvIHRob3NlIHRha2VuIGJ5IEFjcXVpcmVQbGFubmVyTG9ja3MoKSBvbiBhIGdpdmVu IHF1ZXJ5LgogCSAqLwogCWZvcmVhY2gobGMsIHBsYW4tPnN0bXRfbGlzdCkKIAl7CkBAIC0xNzY0 LDU4ICsxNzc2LDYgQEAgUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpCiAJcmV0 dXJuIE5VTEw7CiB9CiAKLS8qCi0gKiBBY3F1aXJlRXhlY3V0b3JMb2NrczogYWNxdWlyZSBsb2Nr cyBuZWVkZWQgZm9yIGV4ZWN1dGlvbiBvZiBhIGNhY2hlZCBwbGFuOwotICogb3IgcmVsZWFzZSB0 aGVtIGlmIGFjcXVpcmUgaXMgZmFsc2UuCi0gKi8KLXN0YXRpYyB2b2lkCi1BY3F1aXJlRXhlY3V0 b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSkKLXsKLQlMaXN0Q2VsbCAgICps YzE7Ci0KLQlmb3JlYWNoKGxjMSwgc3RtdF9saXN0KQotCXsKLQkJUGxhbm5lZFN0bXQgKnBsYW5u ZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMSk7Ci0JCUxpc3RDZWxsICAgKmxj MjsKLQotCQlpZiAocGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQotCQl7 Ci0JCQkvKgotCQkJICogSWdub3JlIHV0aWxpdHkgc3RhdGVtZW50cywgZXhjZXB0IHRob3NlIChz dWNoIGFzIEVYUExBSU4pIHRoYXQKLQkJCSAqIGNvbnRhaW4gYSBwYXJzZWQtYnV0LW5vdC1wbGFu bmVkIHF1ZXJ5LiAgTm90ZTogaXQncyBva2F5IHRvIHVzZQotCQkJICogU2NhblF1ZXJ5Rm9yTG9j a3MsIGV2ZW4gdGhvdWdoIHRoZSBxdWVyeSBoYXNuJ3QgYmVlbiB0aHJvdWdoCi0JCQkgKiBydWxl IHJld3JpdGluZywgYmVjYXVzZSByZXdyaXRpbmcgZG9lc24ndCBjaGFuZ2UgdGhlIHF1ZXJ5Ci0J CQkgKiByZXByZXNlbnRhdGlvbi4KLQkJCSAqLwotCQkJUXVlcnkJICAgKnF1ZXJ5ID0gVXRpbGl0 eUNvbnRhaW5zUXVlcnkocGxhbm5lZHN0bXQtPnV0aWxpdHlTdG10KTsKLQotCQkJaWYgKHF1ZXJ5 KQotCQkJCVNjYW5RdWVyeUZvckxvY2tzKHF1ZXJ5LCBhY3F1aXJlKTsKLQkJCWNvbnRpbnVlOwot CQl9Ci0KLQkJZm9yZWFjaChsYzIsIHBsYW5uZWRzdG10LT5ydGFibGUpCi0JCXsKLQkJCVJhbmdl VGJsRW50cnkgKnJ0ZSA9IChSYW5nZVRibEVudHJ5ICopIGxmaXJzdChsYzIpOwotCi0JCQlpZiAo IShydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OIHx8Ci0JCQkJICAocnRlLT5ydGVraW5kID09 IFJURV9TVUJRVUVSWSAmJiBPaWRJc1ZhbGlkKHJ0ZS0+cmVsaWQpKSkpCi0JCQkJY29udGludWU7 Ci0KLQkJCS8qCi0JCQkgKiBBY3F1aXJlIHRoZSBhcHByb3ByaWF0ZSB0eXBlIG9mIGxvY2sgb24g ZWFjaCByZWxhdGlvbiBPSUQuIE5vdGUKLQkJCSAqIHRoYXQgd2UgZG9uJ3QgYWN0dWFsbHkgdHJ5 IHRvIG9wZW4gdGhlIHJlbCwgYW5kIGhlbmNlIHdpbGwgbm90Ci0JCQkgKiBmYWlsIGlmIGl0J3Mg YmVlbiBkcm9wcGVkIGVudGlyZWx5IC0tLSB3ZSdsbCBqdXN0IHRyYW5zaWVudGx5Ci0JCQkgKiBh Y3F1aXJlIGEgbm9uLWNvbmZsaWN0aW5nIGxvY2suCi0JCQkgKi8KLQkJCWlmIChhY3F1aXJlKQot CQkJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKLQkJCWVs c2UKLQkJCQlVbmxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsK LQkJfQotCX0KLX0KLQogLyoKICAqIEFjcXVpcmVQbGFubmVyTG9ja3M6IGFjcXVpcmUgbG9ja3Mg bmVlZGVkIGZvciBwbGFubmluZyBvZiBhIHF1ZXJ5dHJlZSBsaXN0OwogICogb3IgcmVsZWFzZSB0 aGVtIGlmIGFjcXVpcmUgaXMgZmFsc2UuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2Rl bGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9u L01ha2VmaWxlCmluZGV4IDcwZjI0ZTg0NmQuLjJmY2E4NGQwMjcgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCkBAIC04LDcgKzgsOCBAQCBPQkpTID0gXAogCWRl bGF5X2V4ZWN1dGlvbi5vCiAKIElTT0xBVElPTiA9IHBhcnRpdGlvbi1hZGRpdGlvbiBcCi0JICAg IHBhcnRpdGlvbi1yZW1vdmFsLTEKKwkgICAgcGFydGl0aW9uLXJlbW92YWwtMSBcCisJCWNhY2hl ZC1wbGFuLXJlcGxhbgogCiBpZmRlZiBVU0VfUEdYUwogUEdfQ09ORklHID0gcGdfY29uZmlnCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRp b24uYyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5j CmluZGV4IDE1NWM4YThkNTUuLjhiYjZmMDMxOWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVs ZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCkBAIC0xLDE0ICsxLDE4IEBACiAv Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBkZWxheV9leGVjdXRpb24uYwotICoJCVRlc3QgbW9k dWxlIHRvIGFsbG93IGRlbGF5IGJldHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGEgcXVl cnkuCisgKgkJVGVzdCBtb2R1bGUgdG8gaW50cm9kdWNlIGRlbGF5IGF0IHZhcmlvdXMgcG9pbnRz IGR1cmluZyBleGVjdXRpb24gb2YgYQorICoJCXF1ZXJ5IHRvIHRlc3QgdGhhdCBleGVjdXRpb24g cHJvY2VlZHMgc2FmZWx5IGluIGxpZ2h0IG9mIGNvbmN1cnJlbnQKKyAqCQljaGFuZ2VzLgogICoK ICAqIFRoZSBkZWxheSBpcyBpbXBsZW1lbnRlZCBieSB0YWtpbmcgYW5kIGltbWVkaWF0ZWx5IHJl bGVhc2luZyBhIHNwZWNpZmllZAogICogYWR2aXNvcnkgbG9jay4gIElmIGFub3RoZXIgcHJvY2Vz cyBoYXMgcHJldmlvdXNseSB0YWtlbiB0aGF0IGxvY2ssIHRoZQogICogY3VycmVudCBwcm9jZXNz IHdpbGwgYmUgYmxvY2tlZCB1bnRpbCB0aGUgbG9jayBpcyByZWxlYXNlZDsgb3RoZXJ3aXNlLAog ICogdGhlcmUncyBubyBlZmZlY3QuICBUaGlzIGFsbG93cyBhbiBpc29sYXRpb250ZXN0ZXIgc2Ny aXB0IHRvIHJlbGlhYmx5Ci0gKiB0ZXN0IGJlaGF2aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBh Y3Rpb24gaGFwcGVucyBpbiBhbm90aGVyIGJhY2tlbmQKLSAqIGJldHdlZW4gcGFyc2luZyBhbmQg ZXhlY3V0aW9uIG9mIGFueSBkZXNpcmVkIHF1ZXJ5LgorICogdGVzdCBiZWhhdmlvcnMgd2hlcmUg c29tZSBzcGVjaWZpZWQgYWN0aW9uIGhhcHBlbnMgaW4gYW5vdGhlciBiYWNrZW5kIGluCisgKiBh IGNvdXBsZSBvZiBjYXNlczogMSkgYmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55 IGRlc2lyZWQgcXVlcnkKKyAqIHdoZW4gdXNpbmcgdGhlIHBsYW5uZXJfaG9vaywgMikgYmV0d2Vl biBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoKSBhbmQKKyAqIEV4ZWN1dG9yU3RhcnQoKSB3aGVuIHVz aW5nIHRoZSBFeGVjdXRvclN0YXJ0X2hvb2suCiAgKgogICogQ29weXJpZ2h0IChjKSAyMDIwLTIw MjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAgKgpAQCAtMjIsNiArMjYs NyBAQAogCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKKyNpbmNsdWRlICJleGVjdXRvci9leGVjdXRv ci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wbGFubmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVp bHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKQEAgLTMyLDkgKzM3LDExIEBAIFBHX01P RFVMRV9NQUdJQzsKIAogLyogR1VDOiBhZHZpc29yeSBsb2NrIElEIHRvIHVzZS4gIFplcm8gZGlz YWJsZXMgdGhlIGZlYXR1cmUuICovCiBzdGF0aWMgaW50CXBvc3RfcGxhbm5pbmdfbG9ja19pZCA9 IDA7CitzdGF0aWMgaW50CWV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAwOwogCi0vKiBTYXZlIHBy ZXZpb3VzIHBsYW5uZXIgaG9vayB1c2VyIHRvIGJlIGEgZ29vZCBjaXRpemVuICovCisvKiBTYXZl IHByZXZpb3VzIGhvb2sgdXNlcnMgdG8gYmUgYSBnb29kIGNpdGl6ZW4gKi8KIHN0YXRpYyBwbGFu bmVyX2hvb2tfdHlwZSBwcmV2X3BsYW5uZXJfaG9vayA9IE5VTEw7CitzdGF0aWMgRXhlY3V0b3JT dGFydF9ob29rX3R5cGUgcHJldl9FeGVjdXRvclN0YXJ0X2hvb2sgPSBOVUxMOwogCiAKIC8qIHBs YW5uZXJfaG9vayBmdW5jdGlvbiB0byBwcm92aWRlIHRoZSBkZXNpcmVkIGRlbGF5ICovCkBAIC03 MCwxMSArNzcsNDYgQEAgZGVsYXlfZXhlY3V0aW9uX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25z dCBjaGFyICpxdWVyeV9zdHJpbmcsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogRXhlY3V0b3JT dGFydF9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRlc2lyZWQgZGVsYXkgKi8KK3N0YXRp YyBib29sCitkZWxheV9leGVjdXRpb25fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVz YywgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJCQkJICBpbnQgZWZsYWdzKQoreworCWJvb2wJcGxh bl92YWxpZDsKKworCS8qIElmIGVuYWJsZWQsIGRlbGF5IGJ5IHRha2luZyBhbmQgcmVsZWFzaW5n IHRoZSBzcGVjaWZpZWQgbG9jayAqLworCWlmIChleGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDAp CisJeworCQlEaXJlY3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X2xvY2tfaW50OCwKKwkJCQkJ CQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCkpOworCQlEaXJl Y3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X3VubG9ja19pbnQ4LAorCQkJCQkJCUludDY0R2V0 RGF0dW0oKGludDY0KSBleGVjdXRvcl9zdGFydF9sb2NrX2lkKSk7CisKKwkJLyoKKwkJICogRW5z dXJlIHRoYXQgd2Ugbm90aWNlIGFueSBwZW5kaW5nIGludmFsaWRhdGlvbnMsIHNpbmNlIHRoZSBh ZHZpc29yeQorCQkgKiBsb2NrIGZ1bmN0aW9ucyBkb24ndCBkbyB0aGlzLgorCQkgKi8KKwkJQWNj ZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwl9CisKKwkvKiBOb3cgc3RhcnQgdGhlIGV4ZWN1 dG9yLCBwb3NzaWJseSB2aWEgYSBwcmV2aW91cyBob29rIHVzZXIgKi8KKwlpZiAocHJldl9FeGVj dXRvclN0YXJ0X2hvb2spCisJCXBsYW5fdmFsaWQgPSBwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayhx dWVyeURlc2MsIGNwbGFuLCBlZmxhZ3MpOworCWVsc2UKKwkJcGxhbl92YWxpZCA9IHN0YW5kYXJk X0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBjcGxhbiwgZWZsYWdzKTsKKworCWlmIChleGVjdXRv cl9zdGFydF9sb2NrX2lkICE9IDApCisJCWVsb2coTk9USUNFLCAiRmluaXNoZWQgRXhlY3V0b3JT dGFydCgpOiBDYWNoZWRQbGFuIGlzICVzIiwKKwkJCSBwbGFuX3ZhbGlkID8gInZhbGlkIiA6ICJu b3QgdmFsaWQiKTsKKworCXJldHVybiBwbGFuX3ZhbGlkOworfQorCiAvKiBNb2R1bGUgbG9hZCBm dW5jdGlvbiAqLwogdm9pZAogX1BHX2luaXQodm9pZCkKIHsKLQkvKiBTZXQgdXAgdGhlIEdVQyB0 byBjb250cm9sIHdoaWNoIGxvY2sgaXMgdXNlZCAqLworCS8qIFNldCB1cCBHVUNzIHRvIGNvbnRy b2wgd2hpY2ggbG9jayBpcyB1c2VkICovCiAJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoImRlbGF5 X2V4ZWN1dGlvbi5wb3N0X3BsYW5uaW5nX2xvY2tfaWQiLAogCQkJCQkJCSJTZXRzIHRoZSBhZHZp c29yeSBsb2NrIElEIHRvIGJlIGxvY2tlZC91bmxvY2tlZCBhZnRlciBwbGFubmluZy4iLAogCQkJ CQkJCSJaZXJvIGRpc2FibGVzIHRoZSBkZWxheS4iLApAQCAtODYsMTAgKzEyOCwyMiBAQCBfUEdf aW5pdCh2b2lkKQogCQkJCQkJCU5VTEwsCiAJCQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMKTsKLQor CURlZmluZUN1c3RvbUludFZhcmlhYmxlKCJkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCIsCisJCQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5IGxvY2sgSUQgdG8gYmUgbG9ja2Vk L3VubG9ja2VkIGJlZm9yZSBzdGFydGluZyBleGVjdXRpb24uIiwKKwkJCQkJCQkiWmVybyBkaXNh YmxlcyB0aGUgZGVsYXkuIiwKKwkJCQkJCQkmZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCwKKwkJCQkJ CQkwLAorCQkJCQkJCTAsIElOVF9NQVgsCisJCQkJCQkJUEdDX1VTRVJTRVQsCisJCQkJCQkJMCwK KwkJCQkJCQlOVUxMLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJTlVMTCk7CiAJTWFya0dVQ1ByZWZp eFJlc2VydmVkKCJkZWxheV9leGVjdXRpb24iKTsKIAotCS8qIEluc3RhbGwgb3VyIGhvb2sgKi8K KwkvKiBJbnN0YWxsIG91ciBob29rcy4gKi8KIAlwcmV2X3BsYW5uZXJfaG9vayA9IHBsYW5uZXJf aG9vazsKIAlwbGFubmVyX2hvb2sgPSBkZWxheV9leGVjdXRpb25fcGxhbm5lcjsKKwlwcmV2X0V4 ZWN1dG9yU3RhcnRfaG9vayA9IEV4ZWN1dG9yU3RhcnRfaG9vazsKKwlFeGVjdXRvclN0YXJ0X2hv b2sgPSBkZWxheV9leGVjdXRpb25fRXhlY3V0b3JTdGFydDsKIH0KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5v dXQgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxh bi1yZXBsYW4ub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjEyMmQ4 MWYyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlv bi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0CkBAIC0wLDAgKzEsMTU4IEBACitQYXJz ZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9ucworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFw cmVwIHMybG9jayBzMWV4ZWMgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXA6IFNFVCBwbGFu X2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxIEFTIFNFTEVD VCAqIEZST00gZm9vdiBXSEVSRSBhID0gJDEgRk9SIFVQREFURTsKKwkJICBFWFBMQUlOIChDT1NU UyBPRkYpIEVYRUNVVEUgcSAoMSk7CitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCitMb2NrUm93cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ ICBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFN1YnBs YW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBCaXRtYXAgSGVh cCBTY2FuIG9uIGZvbzExIGZvb18xICAgCisgICAgICAgICAgICAgIFJlY2hlY2sgQ29uZDogKGEg PSAkMSkgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBm b28xMV9hCisgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gJDEpICAgICAgCiso NyByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOwor cGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAorKDEg cm93KQorCitzdGVwIHMxZXhlYzogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVs YXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlO IChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IDx3YWl0aW5nIC4uLj4KK3N0ZXAgczJkcm9waTog RFJPUCBJTkRFWCBmb28xMV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X3Vu bG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0tLQordCAg ICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjOiA8Li4uIGNvbXBsZXRlZD4K K3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90 IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFu IGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0xvY2tSb3dzICAgICAgICAgICAgICAgICAgICAg ICAgICAgCisgIC0+ICBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJw bGFucyBSZW1vdmVkOiAxICAgICAgICAKKyAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzExIGZv b18xCisgICAgICAgICAgICAgIEZpbHRlcjogKGEgPSAkMSkgICAgIAorKDUgcm93cykKKworCitz dGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwMiBzMmxvY2sgczFleGVjMiBzMmRyb3BpIHMydW5s b2NrCitzdGVwIHMxcHJlcDI6IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3Bs YW47CisJCSAgUFJFUEFSRSBxMiBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9IDE7CisJ CSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOworczE6IE5PVElDRTogIEZpbmlzaGVk IEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQml0 bWFwIEhlYXAgU2NhbiBvbiBmb28xMSBmb28gICAgIAorICBSZWNoZWNrIENvbmQ6IChhID0gMSkg ICAgICAgICAgIAorICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTFfYQorICAgICAgICBJ bmRleCBDb25kOiAoYSA9IDEpICAgICAgIAorKDQgcm93cykKKworc3RlcCBzMmxvY2s6IFNFTEVD VCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X2xvY2sKKy0tLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMyOiBMT0FEICdk ZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsgPHdh aXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzExX2E7CitzdGVwIHMydW5s b2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9j aworLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3Rl cCBzMWV4ZWMyOiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRv clN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQg RXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU2VxIFNjYW4gb24gZm9vMTEgZm9vCisgIEZpbHRl cjogKGEgPSAxKSAgICAKKygyIHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJl cDMgczJsb2NrIHMxZXhlYzMgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXAzOiBTRVQgcGxh bl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFNFVCBlbmFibGVfcGFydGl0 aW9ud2lzZV9hZ2dyZWdhdGUgPSBvbjsKKwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9p biA9IG9uOworCQkgIFBSRVBBUkUgcTMgQVMgU0VMRUNUIHQxLmEsIGNvdW50KHQyLmIpIEZST00g Zm9vIHQxLCBmb28gdDIgV0hFUkUgdDEuYSA9IHQyLmEgR1JPVVAgQlkgMTsKKwkJICBFWFBMQUlO IChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JT dGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5kICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBHcm91cEFn Z3JlZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg R3JvdXAgS2V5OiB0MS5hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICAtPiAgTWVyZ2UgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CisgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh0MS5hID0gdDIuYSkgICAgICAgICAgICAgICAg ICAgICAKKyAgICAgICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBmb28xMV9hIG9u IGZvbzExIHQxIAorICAgICAgICAgICAgICAtPiAgTWF0ZXJpYWxpemUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5n IGZvbzExX2Egb24gZm9vMTEgdDIKKyAgLT4gIEdyb3VwQWdncmVnYXRlICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBHcm91cCBLZXk6IHQxXzEuYSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2luICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgTWVyZ2Ug Q29uZDogKHQxXzEuYSA9IHQyXzEuYSkgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAt PiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg ICAgICAgICAgIFNvcnQgS2V5OiB0MV8xLmEgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzIgdDFfMSAgICAgICAgICAgICAgIAor ICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Ml8xLmEgICAgICAgICAgICAgICAg ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzIgdDJfMSAg ICAgICAgICAgICAgIAorKDE4IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNv cnlfbG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMzogTE9BRCAnZGVsYXlfZXhlY3V0 aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAx MjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7IDx3YWl0aW5nIC4uLj4K K3N0ZXAgczJkcm9waTogRFJPUCBJTkRFWCBmb28xMV9hOworc3RlcCBzMnVubG9jazogU0VMRUNU IHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0t LS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMzog PC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBD YWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3Rh cnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAt PiAgR3JvdXBBZ2dyZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEdyb3Vw IEtleTogdDEuYSAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIE1lcmdlIEpvaW4g ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBNZXJnZSBDb25kOiAodDEuYSA9 IHQyLmEpICAgICAgCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAg ICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQxLmEgICAgICAgICAgIAorICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTEgdDEgCisgICAgICAgICAgICAgIC0+ ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBL ZXk6IHQyLmEgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g Zm9vMTEgdDIgCisgIC0+ICBHcm91cEFnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAK KyAgICAgICAgR3JvdXAgS2V5OiB0MV8xLmEgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAt PiAgTWVyZ2UgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIE1lcmdl IENvbmQ6ICh0MV8xLmEgPSB0Ml8xLmEpICAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAg ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDFfMS5hICAg ICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28yIHQxXzEKKyAg ICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg ICAgICAgICBTb3J0IEtleTogdDJfMS5hICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBmb28yIHQyXzEKKygyMSByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYyBi L3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLXJlcGxh bi5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjJkMDYwN2IxNzYK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVj cy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYwpAQCAtMCwwICsxLDYxIEBACisjIFRlc3QgdG8gY2hl Y2sgdGhhdCBpbnZhbGlkYXRpb24gb2YgY2FjaGVkIGdlbmVyaWMgcGxhbnMgZHVyaW5nIEV4ZWN1 dG9yU3RhcnQKKyMgY29ycmVjdGx5IHRyaWdnZXJzIHJlcGxhbm5pbmcgYW5kIHJlLWV4ZWN1dGlv bi4KKworc2V0dXAKK3sKKyAgQ1JFQVRFIFRBQkxFIGZvbyAoYSBpbnQsIGIgdGV4dCkgUEFSVElU SU9OIEJZIExJU1QoYSk7CisgIENSRUFURSBUQUJMRSBmb28xIFBBUlRJVElPTiBPRiBmb28gRk9S IFZBTFVFUyBJTiAoMSkgUEFSVElUSU9OIEJZIExJU1QgKGEpOworICBDUkVBVEUgVEFCTEUgZm9v MTEgUEFSVElUSU9OIE9GIGZvbzEgRk9SIFZBTFVFUyBJTiAoMSk7CisgIENSRUFURSBJTkRFWCBm b28xMV9hIE9OIGZvbzExIChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzIgUEFSVElUSU9OIE9GIGZv byBGT1IgVkFMVUVTIElOICgyKTsKKyAgQ1JFQVRFIFZJRVcgZm9vdiBBUyBTRUxFQ1QgKiBGUk9N IGZvbzsKK30KKwordGVhcmRvd24KK3sKKyAgRFJPUCBWSUVXIGZvb3Y7CisgIERST1AgVEFCTEUg Zm9vOworfQorCitzZXNzaW9uICJzMSIKKyMgQXBwZW5kIHdpdGggcnVuLXRpbWUgcHJ1bmluZwor c3RlcCAiczFwcmVwIiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxh bjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSAkMSBGT1Ig VVBEQVRFOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgfQorCisjIG5v IEFwcGVuZCBjYXNlIChvbmx5IG9uZSBwYXJ0aXRpb24gc2VsZWN0ZWQgYnkgdGhlIHBsYW5uZXIp CitzdGVwICJzMXByZXAyIiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNf cGxhbjsKKwkJICBQUkVQQVJFIHEyIEFTIFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gMTsK KwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IH0KKworIyBBcHBlbmQgd2l0aCBw YXJ0aXRpb24td2lzZSBqb2luIGFnZ3JlZ2F0ZSBhbmQgam9pbiBwbGFucyBhcyBjaGlsZCBzdWJw bGFucworc3RlcCAiczFwcmVwMyIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5l cmljX3BsYW47CisJCSAgU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZSA9IG9uOwor CQkgIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luID0gb247CisJCSAgUFJFUEFSRSBxMyBB UyBTRUxFQ1QgdDEuYSwgY291bnQodDIuYikgRlJPTSBmb28gdDEsIGZvbyB0MiBXSEVSRSB0MS5h ID0gdDIuYSBHUk9VUCBCWSAxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsg fQorCisjIEV4ZWN1dGVzIGEgZ2VuZXJpYyBwbGFuCitzdGVwICJzMWV4ZWMiCXsgTE9BRCAnZGVs YXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xv Y2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IH0K K3N0ZXAgInMxZXhlYzIiCXsgTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlf ZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChD T1NUUyBPRkYpIEVYRUNVVEUgcTI7IH0KK3N0ZXAgInMxZXhlYzMiCXsgTE9BRCAnZGVsYXlfZXhl Y3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQg PSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7IH0KKworc2Vzc2lv biAiczIiCitzdGVwICJzMmxvY2siCXsgU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOyB9 CitzdGVwICJzMnVubG9jayIJeyBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsgfQor c3RlcCAiczJkcm9waSIJeyBEUk9QIElOREVYIGZvbzExX2E7IH0KKworIyBXaGlsZSAiczFleGVj IiwgZXRjLiB3YWl0IHRvIGFjcXVpcmUgdGhlIGFkdmlzb3J5IGxvY2ssICJzMmRyb3AiIGlzIGFi bGUgdG8KKyMgZHJvcCB0aGUgaW5kZXggYmVpbmcgdXNlZCBpbiB0aGUgY2FjaGVkIHBsYW4uICBX aGVuICJzMWV4ZWMiIGlzIHRoZW4KKyMgdW5ibG9ja2VkIGFuZCBpbml0aWFsaXplcyB0aGUgY2Fj aGVkIHBsYW4gZm9yIGV4ZWN1dGlvbiwgaXQgZGV0ZWN0cyB0aGUKKyMgY29uY3VycmVudCBpbmRl eCBkcm9wIGFuZCBjYXVzZXMgdGhlIGNhY2hlZCBwbGFuIHRvIGJlIGRpc2NhcmRlZCBhbmQKKyMg cmVjcmVhdGVkIHdpdGhvdXQgdGhlIGluZGV4LgorcGVybXV0YXRpb24gInMxcHJlcCIgInMybG9j ayIgInMxZXhlYyIgInMyZHJvcGkiICJzMnVubG9jayIKK3Blcm11dGF0aW9uICJzMXByZXAyIiAi czJsb2NrIiAiczFleGVjMiIgInMyZHJvcGkiICJzMnVubG9jayIKK3Blcm11dGF0aW9uICJzMXBy ZXAzIiAiczJsb2NrIiAiczFleGVjMyIgInMyZHJvcGkiICJzMnVubG9jayIKLS0gCjIuNDMuMAoK --00000000000049a510061fb86454 Content-Type: application/octet-stream; name="v50-0004-Preparations-to-allow-executor-to-take-locks-in-.patch" Content-Disposition: attachment; filename="v50-0004-Preparations-to-allow-executor-to-take-locks-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lzva9oem3 RnJvbSBjZWY2MjBkODBhNzY0ZmEwNzg3ZDA3NGMzY2M0ZGFjYmE3M2VkMTkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1Mzo0NiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjUw IDQvNl0gUHJlcGFyYXRpb25zIHRvIGFsbG93IGV4ZWN1dG9yIHRvIHRha2UgbG9ja3MgaW4gc29t ZQogY2FzZXMKClRoaXMgZG9lcyB0d28gdGhpbmdzIG9uIHRoZSBleGVjdXRvciBzaWRlOgoKICog TWFrZSB0aGUgZXhlY3V0b3IgdGFrZSBsb2NrcyBvbiB0aGUgY2hpbGQgdGFibGVzIGlmIHRoZSBw bGFuCiAgIGNvbWVzIGZyb20gYSBDYWNoZWRQbGFuLiAgVG8gZGV0ZXJtaW5lIHRoYXQgYSBnaXZl biByYW5nZSB0YWJsZQogICByZWxhdGlvbiBpcyBhIGNoaWxkIHRhYmxlLCBFeGVjR2V0UmFuZ2VU YWJsZVJlbGF0aW9uKCkgbm93CiAgIGV4YW1pbmVzIFJhbmdlVGJsRW50cnkuaW5Gcm9tQ2wuICBU byB0aGF0IGVuZCwgdGhlIHBsYW5uZXIgbm93CiAgIHNldHMgaW5Gcm9tQ2wgdG8gZmFsc2UgaW4g dGhlIGNoaWxkIHRhYmxlcycgUlRFcy4gIEFsc28sIHRoZQogICB0byBkZWFsIHdpdGggdGhlIGNh c2VzIHdoZXJlIGFuIHVubG9ja2VkIGNoaWxkIHRhYmxlIG1pZ2h0IGhhdmUKICAgYmVlbiBjb25j dXJyZW50bHkgZHJvcHBlZCwgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbigpIGlzIG5vdwogICBt YWRlIHRvIHVzZSB0cnlfdGFibGVfb3BlbigpIHJlcGxhY2luZyB0aGUgZXhpc3RpbmcgdGFibGVf b3BlbigpLgoKICogQWRkIGNoZWNrcyBhdCB2YXJpb3VzIHBvaW50cyBkdXJpbmcgdGhlIGV4ZWN1 dG9yJ3MgaW5pdGlhbGl6YXRpb24KICAgb2YgdGhlIHBsYW4gdHJlZSB0byBkZXRlcm1pbmUgd2hl dGhlciB0aGUgb3JpZ2luYXRpbmcgQ2FjaGVkUGxhbgogICBoYXMgYmVjb21lIGludmFsaWQgYXMg YSByZXN1bHQgb2YgdGFraW5nIGxvY2tzIG9uIHRoZSByZWxhdGlvbnMKICAgcmVmZXJlbmNlZCBp biB0aGUgcGxhbi4gIFRoaXMgaW5jbHVkZXMgYWRkZGluZyB0aGUgY2hlY2sgYWZ0ZXIKICAgZXZl cnkgY2FsbCB0byBFeGVjT3BlblNjYW5SZWxhdGlvbigpIC8gRXhlY0dldFJhbmdlVGFibGVSZWxh dGlvbigpCiAgIGFuZCB0byBFeGVjSW5pdE5vZGUoKSwgaW5jbHVkaW5nIHRoZSByZWN1cnNpdmUg b25lcyB0byBpbml0aWFsaXplCiAgIGNoaWxkIG5vZGVzLgoKSWYgYSBnaXZlbiBFeGVjSW5pdCoo KSBmdW5jdGlvbiBvciBhbnkgZnVuY3Rpb24gY2FsbGVkIGJ5IGl0IGRldGVjdHMKdGhhdCB0aGUg cGxhbiBoYXMgYmVjb21lIGludmFsaWQsIGl0IHNob3VsZCByZXR1cm4gaW1tZWRpYXRlbHkgZXZl bgppZiB0aGUgUGxhblN0YXRlIG5vZGUgaXQncyBidWlsZGluZyBtYXkgb25seSBiZSBwYXJ0aWFs bHkgdmFsaWQuClRoYXQgaXMgY3J1Y2lhbCBmb3IgdHdvIHJlYXNvbnMgZGVwZW5kaW5nIG9uIHdo ZXJlIHRoZSBjaGVjayBpczoKCiAqIFRoZSBjaGVja3MgZm9sbG93aW5nIEV4ZWNPcGVuU2NhblJl bGF0aW9uKCkgLwogICBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkgbWF5IGZpbmQgdGhhdCB0 aGUgcmVsYXRpb24gYmVpbmcKICAgb3BlbmVkIGhhcyBiZWVuIGRyb3BwZWQgY29uY3VycmVudGx5 IG9yIHRoYXQgdGhlIHBsYW4gaGFzIGJlY29tZQogICBpbnZhbGlkLiAgSW4gdGhpcyBjYXNlLCBz b21lIG9wZXJhdGlvbnMgaW4gdGhlIGNvZGUgdGhhdCBmb2xsb3dzCiAgIG1heSBubyBsb25nZXIg YmUgc2FmZSB0byBkby4gIEZvciBleGFtcGxlLCBpdCBtaWdodCB0cnkgdG8KICAgZGVyZWZlcmVu Y2UgYSBOVUxMIHBvaW50ZXIgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHJlbGF0aW9uIHdhcwogICBk cm9wcGVkLgoKICogRm9yIHRoZSBjaGVja3MgZm9sbG93aW5nIEV4ZWNJbml0Tm9kZSgpLCB0aGUg cmV0dXJuZWQgY2hpbGQKICAgUGxhblN0YXRlIG5vZGUgbWlnaHQgYmUgb25seSBwYXJ0aWFsbHkg aW52YWxpZC4gIFRoZSBjb2RlIHRoYXQKICAgZm9sbG93cyBtYXkgbWlzYmVoYXZlIGlmIGl0IGRl cGVuZHMgb24gaW5zcGVjdGluZyB0aGUgY2hpbGQKICAgUGxhblN0YXRlLiAgTm90ZSB0aGF0IHRo aXMgY29tbWl0IGFkZHMgdGhlIGNoZWNrIGZvbGxvd2luZyBhbGwKICAgY2FsbHMgb2YgRXhlY0lu aXROb2RlKCkgdGhhdCBleGlzdCBpbiB0aGUgY29kZSBiYXNlLCBldmVuIGF0CiAgIHNpdGVzIHdo ZXJlIHRoZXJlIGlzIG5vIGNvZGUgdGhhdCBtaWdodCBtaXNiZWhhdmUgdG9kYXksIGJlY2F1c2UK ICAgaXQgbWlnaHQgbWlzYmVoYXZlIGluIHRoZSBmdXR1cmUuICBJdCBzZWVtcyBsaWtlIGEgZ29v ZCBpZGVhIHRvCiAgIHB1dCB0aGUgZ3VhcmRzIGluIHBsYWNlIHRvZGF5IHJhdGhlciB0aGFuIGlu IHRoZSBmdXR1cmUgd2hlbiB0aGUKICAgbmVlZCBhcmlzZXMuCgpUbyBwYXNzIHRoZSBDYWNoZWRQ bGFuIHRoYXQgdGhlIGV4ZWN1dG9yIHdpbGwgdXNlIGZvciB0aGVzZSBjaGVja3MsCkV4ZWN1dG9y U3RhcnQoKSAoYW5kIEV4ZWN1dG9yU3RhcnRfaG9vaykgbm93IGdldHMgYSBuZXcgcGFyYW1ldGVy CkNhY2hlZFBsYW4gKmNwbGFuLgoKQ2hhbmdlcyBvbiB0aGUgc2lkZSBvZiB0aGUgY2FsbGVycyBv ZiBFeGVjdXRvclN0YXJ0KCk6CgpFeGVjdXRvclN0YXJ0KCkgKGFuZCBFeGVjdXRvclN0YXJ0X2hv b2soKSkgbm93IHJldHVybiBhIEJvb2xlYW4KdGVsbGluZyB0aGUgY2FsbGVyIGlmIHRoZSBwbGFu IGluaXRpYWxpemF0aW9uIGZhaWxlZC4gIFdoZW4gaXQKcmV0dXJucyBmYWxzZSBkdWUgdG8gdGhl IENhY2hlZFBsYW4gYmVjb21pbmcgaW52YWxpZCwgdGhlIGV4ZWN1dGlvbgpzaG91bGQgYmUgcmVh dHRlbXB0ZWQgdXNpbmcgYSBmcmVzaCBDYWNoZWRQbGFuLiAgQWN0dWFsbHksIGEgbmV3CmZ1bmN0 aW9uIFRyeUV4ZWN1dG9yU3RhcnQoKSBpcyBhZGRlZCB0byB1c2UgYnkgdGhlIGNhbGwgc2l0ZXMg dGhhdApzdXBwbHkgdGhlIFBsYW5uZWRTdG10IHRvIGV4ZWN1dGUgZnJvbSBhIENhY2hlZFBsYW4s IHdoaWNoIHRha2VzCmNhcmUgb2YgY2xlYW5pbmcgdXAgdGhlIHBhcnRpYWxseSBpbml0aWFsaXpl ZCBleGVjdXRpb24gc3RhdGUKaW5jbHVkaW5nIHBsYW5zdGF0ZSB0cmVlLgoKRm9yIHRoZSByZXBs YW4gbG9vcCBpbiB0aGF0IGNvbnRleHQsIGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8gaGF2ZQpFeGVj dXRvclN0YXJ0KCkgZWl0aGVyIGluIHRoZSBzYW1lIHNjb3BlIG9yIGNsb3NlciB0byB3aGVyZQpH ZXRDYWNoZWRQbGFuKCkgaXMgaW52b2tlZC4gIFNvIHRoaXMgY29tbWl0IG1vZGlmaWVzIHRoZSBm b2xsb3dpbmcKc2l0ZXM6CgoqIEV4cGxhaW5PbmVQbGFuKCkgbm93IHJldHVybnMgYSBCb29sZWFu IHRvIHRlbGwgdGhlIGNhbGxlciB0aGF0CiAgVHJ5RXhlY3V0b3JTdGFydCgpIGZhaWxlZCwgc28g dGhlIGNhbGxlciBzaG91bGQgcmV0cnkgd2l0aCBhIG5ldwogIHBsYW4uCgoqIFRoZSBFeGVjdXRv clN0YXJ0KCkgY2FsbCBpbiBfU1BJX3BxdWVyeSgpIGlzIG1vdmVkIHRvIGl0cyBjYWxsZXIKICBf U1BJX2V4ZWN1dGVfcGxhbigpIGFuZCByZXBsYWNlZCBieSBUcnlFeGVjdXRvclN0YXJ0KCkuCgoq IFRoZSBFeGVjdXRvclN0YXJ0KCkgY2FsbCBpbiBQb3J0YWxSdW5NdWx0aSgpIGlzIG1vdmVkIHRv CiAgUG9ydGFsU3RhcnQoKSBhbmQgcmVwbGFjZWQgYnkgVHJ5RXhlY3V0b3JTdGFydCgpLiAgVGhp cyByZXF1aXJlcyBhCiAgbmV3IExpc3QgZmllbGQgaW4gUG9ydGFsRGF0YSB0byBzdG9yZSB0aGUg UXVlcnlEZXNjcyBjcmVhdGVkIGluCiAgUG9ydGFsU3RhcnQoKSBhbmQgYSBuZXcgbWVtb3J5IGNv bnRleHQgZm9yIHRob3NlLiAgT25lIHVuaW50ZW5kZWQKICBjb25zZXF1ZW5jZSBpcyB0aGF0IENv bW1hbmRDb3VudGVySW5jcmVtZW50KCkgYmV0d2VlbiBxdWVyaWVzIGluCiAgdGhlIFBPUlRBTF9N VUxUSV9RVUVSWSBjYXNlIGlzIG5vdyBkb25lIGluIHRoZSBsb29wIGluIFBvcnRhbFN0YXJ0KCkK ICBhbmQgbm90IGluIFBvcnRhbFJ1bk11bHRpKCkuICBUaGF0IHN0aWxsIHdvcmtzIGJlY2F1c2Ug dGhlIFNuYXBzaG90CiAgcmVnaXN0ZXJlZCBpbiBRdWVyeURlc2MvRVN0YXRlIGlzIHVwZGF0ZWQg dG8gYWNjb3VudCBmb3IgdGhlIENDSSgpLgoKVGhpcyBjb21taXQgYWxzbyBhZGRzIGEgbmV3IGZs YWcgdG8gRVN0YXRlIGNhbGxlZCBlc19jYW5jZWxlZCB0aGF0CmNvbXBsZW1lbnRzIGVzX2Zpbmlz aGVkIHRvIGRlbm90ZSB0aGUgbmV3IHNjZW5hcmlvIHdoZXJlCkV4ZWN1dG9yU3RhcnQoKSByZXR1 cm5zIHdpdGggYSBwYXJ0aWFsbHkgc2V0dXAgcGxhbnN0YXRlIHRyZWUuICBBbHNvLAp0byByZXNl dCB0aGUgQUZURVIgdHJpZ2dlciBzdGF0ZSB0aGF0IHdvdWxkIGhhdmUgYmVlbiBzZXQgdXAgaW4g dGhlCkV4ZWN1dG9yU3RhcnQoKSwgdGhpcyBhZGRzIGEgbmV3IGZ1bmN0aW9uIEFmdGVyVHJpZ2dl ckNhbmNlbFF1ZXJ5KCkKd2hpY2ggaXMgY2FsbGVkIGZyb20gRXhlY3V0b3JFbmQoKSAobm90IEV4 ZWN1dG9yRmluaXNoKCkpIHdoZW4KZXNfY2FuY2VsZWQgaXMgdHJ1ZS4KCk5vdGUgdGhhdCB0aGlz IGNvbW1pdCBieSBpdHNlbGYgZG9lc24ndCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZSwKYmVj YXVzZSBFeGVjdXRvclN0YXJ0KCkgY3VycmVudGx5IGFsd2F5cyByZXR1cm5zIHRydWUuICBUaGUg Y2hhbmdlcwp0byBtYWtlIGl0IGNoZWNrIGlmIHRoZSBDYWNoZWRQbGFuIGhhcyBiZWNvbWUgaW52 YWxpZCB3aWxsIGJlCmFkZGVkIGluIHRoZSB1cGNvbWluZyBwYXRjaGVzLgoKUmV2aWV3ZWQtYnk6 IFJvYmVydCBIYWFzCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBK0hpd3FGR2tN U2dlNlRnQzlLUXpkZTBvaHBBeWNMUXVWN29vaXRFRXBiS0IwT19tZ0BtYWlsLmdtYWlsLmNvbWsK LS0tCiBjb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYyAgICAgICAgICAgfCAgMTUg Ky0KIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgICB8ICAxNSAr LQogY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgICAgICAgICAgIHwgIDEwICst CiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgICAgICAgICAgICAgfCAgIDUgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgICAgICAgICAgICAgICB8ICAgOSArLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jICAgICAgICAgICAgICAgIHwgIDQyICsrLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAgICAgICAgICAgIHwgICA2ICstCiBz cmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgICAgICAgICAgICAgICAgfCAgMTAgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgICAgICAgICAgICB8ICAgNiArLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAgIHwgIDMwICstCiBzcmMv YmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgICAgICAgICAgICAgICAgfCAgMTMgKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvUkVBRE1FICAgICAgICAgICAgICAgICAgIHwgIDM2ICsrLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgMTQ0ICsrKysrKysrLS0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICAgICAgICB8ICAgNyArLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgICAgICAgIHwgICAyICsKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jICAgICAgICAgICB8ICAgNyArCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICAgICAgICAgfCAgOTggKysrKysrLQog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwgICA4ICstCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMgICAgICAgICAgICAgICAgfCAgIDIgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgICAgICAgIHwgIDI0ICstCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMgICAgICAgICAgfCAgIDIgKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgICAgIHwgICA0ICsKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyAgICB8ICAgNiArLQogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVDdXN0b20uYyAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYyAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUdhdGhlci5jICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVHYXRoZXJNZXJnZS5jICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlR3JvdXAuYyAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUhhc2guYyAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVIYXNoam9pbi5jICAgICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5jcmVtZW50YWxTb3J0LmMgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4b25seXNjYW4uYyAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5k ZXhzY2FuLmMgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1p dC5jICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jv d3MuYyAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFs LmMgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMg ICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQu YyAgICAgICAgfCAgMTggKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYyAg ICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAg ICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgICAgICAg ICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMgICAgICAg ICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYyAgICAg fCAgIDQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jICAgICAgICAgICAgIHwg ICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMgICAgICAgICB8ICAg MyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jICAgICAgICAgICAgfCAgIDMg Kwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgICAgICAgICAgICAgIHwgICAyICsK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMgICAgICAgICAgICAgICB8ICAgMiArCiBz cmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgICAgICAgfCAgIDIgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jICAgICAgIHwgICAyICsKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICAgICAgICB8ICA0NiArKy0KIHNyYy9iYWNrZW5k L29wdGltaXplci91dGlsL2luaGVyaXQuYyAgICAgICAgICB8ICAgNyArCiBzcmMvYmFja2VuZC9w YXJzZXIvYW5hbHl6ZS5jICAgICAgICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8ICAxNyArLQogc3JjL2JhY2tlbmQvdGNv cC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwgMjYzICsrKysrKysrKystLS0tLS0tLQog c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgICAgICAgICAgIHwgICA5ICsKIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAgICAgICAgICB8ICAgNCArLQogc3Jj L2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAgICB8ICAyMSArLQogc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICA1ICsKIHNyYy9pbmNs dWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2luY2x1 ZGUvdGNvcC9wcXVlcnkuaCAgICAgICAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVk ZS91dGlscy9wbGFuY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgMTQgKwogc3JjL2luY2x1ZGUv dXRpbHMvcG9ydGFsLmggICAgICAgICAgICAgICAgICAgIHwgICAyICsKIDY4IGZpbGVzIGNoYW5n ZWQsIDgwNCBpbnNlcnRpb25zKCspLCAyMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29u dHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgYi9jb250cmliL2F1dG9fZXhwbGFpbi9h dXRvX2V4cGxhaW4uYwppbmRleCA2NzdjMTM1ZjU5Li4xYjRiOGFkOGI2IDEwMDY0NAotLS0gYS9j b250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYworKysgYi9jb250cmliL2F1dG9fZXhw bGFpbi9hdXRvX2V4cGxhaW4uYwpAQCAtNzgsNyArNzgsOCBAQCBzdGF0aWMgRXhlY3V0b3JSdW5f aG9va190eXBlIHByZXZfRXhlY3V0b3JSdW4gPSBOVUxMOwogc3RhdGljIEV4ZWN1dG9yRmluaXNo X2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yRmluaXNoID0gTlVMTDsKIHN0YXRpYyBFeGVjdXRvckVu ZF9ob29rX3R5cGUgcHJldl9FeGVjdXRvckVuZCA9IE5VTEw7CiAKLXN0YXRpYyB2b2lkIGV4cGxh aW5fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CitzdGF0 aWMgYm9vbCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIENhY2hl ZFBsYW4gKmNwbGFuLAorCQkJCQkJCQkgIGludCBlZmxhZ3MpOwogc3RhdGljIHZvaWQgZXhwbGFp bl9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCQkJU2NhbkRpcmVjdGlv biBkaXJlY3Rpb24sCiAJCQkJCQkJCXVpbnQ2NCBjb3VudCwgYm9vbCBleGVjdXRlX29uY2UpOwpA QCAtMjU4LDkgKzI1OSwxMSBAQCBfUEdfaW5pdCh2b2lkKQogLyoKICAqIEV4ZWN1dG9yU3RhcnQg aG9vazogc3RhcnQgdXAgbG9nZ2luZyBpZiBuZWVkZWQKICAqLwotc3RhdGljIHZvaWQKLWV4cGxh aW5fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKK3N0YXRp YyBib29sCitleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIENhY2hl ZFBsYW4gKmNwbGFuLCBpbnQgZWZsYWdzKQogeworCWJvb2wJcGxhbl92YWxpZDsKKwogCS8qCiAJ ICogQXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHRvcC1sZXZlbCBzdGF0ZW1lbnQsIGRlY2lkZSB3 aGV0aGVyIHdlJ2xsCiAJICogc2FtcGxlIHRoaXMgc3RhdGVtZW50LiAgSWYgbmVzdGVkLXN0YXRl bWVudCBleHBsYWluaW5nIGlzIGVuYWJsZWQsCkBAIC0yOTYsOSArMjk5LDkgQEAgZXhwbGFpbl9F eGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCX0KIAogCWlm IChwcmV2X0V4ZWN1dG9yU3RhcnQpCi0JCXByZXZfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVm bGFncyk7CisJCXBsYW5fdmFsaWQgPSBwcmV2X0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBjcGxh biwgZWZsYWdzKTsKIAllbHNlCi0JCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBl ZmxhZ3MpOworCQlwbGFuX3ZhbGlkID0gc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2Ms IGNwbGFuLCBlZmxhZ3MpOwogCiAJaWYgKGF1dG9fZXhwbGFpbl9lbmFibGVkKCkpCiAJewpAQCAt MzE2LDYgKzMxOSw4IEBAIGV4cGxhaW5fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncykKIAkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCQl9CiAJ fQorCisJcmV0dXJuIHBsYW5fdmFsaWQ7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9jb250cmliL3Bn X3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9z dGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDM2MmQyMjJmNjMuLjc0ZDM1OWY2 MWIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVt ZW50cy5jCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50 cy5jCkBAIC0zMjksNyArMzI5LDggQEAgc3RhdGljIFBsYW5uZWRTdG10ICpwZ3NzX3BsYW5uZXIo UXVlcnkgKnBhcnNlLAogCQkJCQkJCQkgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAogCQkJCQkJ CQkgaW50IGN1cnNvck9wdGlvbnMsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1z KTsKLXN0YXRpYyB2b2lkIHBnc3NfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywg aW50IGVmbGFncyk7CitzdGF0aWMgYm9vbCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpx dWVyeURlc2MsIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCQkJCSAgIGludCBlZmxhZ3MpOwogc3Rh dGljIHZvaWQgcGdzc19FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCQkg U2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sCiAJCQkJCQkJIHVpbnQ2NCBjb3VudCwgYm9vbCBleGVj dXRlX29uY2UpOwpAQCAtOTg0LDEzICs5ODUsMTUgQEAgcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJz ZSwKIC8qCiAgKiBFeGVjdXRvclN0YXJ0IGhvb2s6IHN0YXJ0IHVwIHRyYWNraW5nIGlmIG5lZWRl ZAogICovCi1zdGF0aWMgdm9pZAotcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCBpbnQgZWZsYWdzKQorc3RhdGljIGJvb2wKK3Bnc3NfRXhlY3V0b3JTdGFydChRdWVyeURl c2MgKnF1ZXJ5RGVzYywgQ2FjaGVkUGxhbiAqY3BsYW4sIGludCBlZmxhZ3MpCiB7CisJYm9vbAlw bGFuX3ZhbGlkOworCiAJaWYgKHByZXZfRXhlY3V0b3JTdGFydCkKLQkJcHJldl9FeGVjdXRvclN0 YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxpZCA9IHByZXZfRXhlY3V0b3JTdGFy dChxdWVyeURlc2MsIGNwbGFuLCBlZmxhZ3MpOwogCWVsc2UKLQkJc3RhbmRhcmRfRXhlY3V0b3JT dGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSBzdGFuZGFyZF9FeGVjdXRv clN0YXJ0KHF1ZXJ5RGVzYywgY3BsYW4sIGVmbGFncyk7CiAKIAkvKgogCSAqIElmIHF1ZXJ5IGhh cyBxdWVyeUlkIHplcm8sIGRvbid0IHRyYWNrIGl0LiAgVGhpcyBwcmV2ZW50cyBkb3VibGUKQEAg LTEwMTMsNiArMTAxNiw4IEBAIHBnc3NfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncykKIAkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOwogCQl9CiAJ fQorCisJcmV0dXJuIHBsYW5fdmFsaWQ7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9jb250cmliL3Bv c3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVz X2Zkdy5jCmluZGV4IGZjNjVkODFlMjEuLmU3MDgwZjg5NTMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jCkBAIC0yMTM3LDcgKzIxMzcsMTEgQEAgcG9zdGdyZXNFbmRGb3JlaWduTW9k aWZ5KEVTdGF0ZSAqZXN0YXRlLAogewogCVBnRmR3TW9kaWZ5U3RhdGUgKmZtc3RhdGUgPSAoUGdG ZHdNb2RpZnlTdGF0ZSAqKSByZXN1bHRSZWxJbmZvLT5yaV9GZHdTdGF0ZTsKIAotCS8qIElmIGZt c3RhdGUgaXMgTlVMTCwgd2UgYXJlIGluIEVYUExBSU47IG5vdGhpbmcgdG8gZG8gKi8KKwkvKgor CSAqIGZtc3RhdGUgY291bGQgYmUgTlVMTCB1bmRlciB0d28gY29uZGl0aW9uczogZHVyaW5nIGFu IEVYUExBSU4KKwkgKiBvcGVyYXRpb24sIG9yIGlmIEJlZ2luRm9yZWlnbk1vZGlmeSgpIGhhc24n dCBiZWVuIGludm9rZWQuCisJICogSW4gZWl0aGVyIGNhc2UsIG5vIGFjdGlvbiBpcyByZXF1aXJl ZC4KKwkgKi8KIAlpZiAoZm1zdGF0ZSA9PSBOVUxMKQogCQlyZXR1cm47CiAKQEAgLTI2NzEsNyAr MjY3NSwxMSBAQCBwb3N0Z3Jlc0JlZ2luRGlyZWN0TW9kaWZ5KEZvcmVpZ25TY2FuU3RhdGUgKm5v ZGUsIGludCBlZmxhZ3MpCiAJLyogR2V0IGluZm8gYWJvdXQgZm9yZWlnbiB0YWJsZS4gKi8KIAly dGluZGV4ID0gbm9kZS0+cmVzdWx0UmVsSW5mby0+cmlfUmFuZ2VUYWJsZUluZGV4OwogCWlmIChm c3BsYW4tPnNjYW4uc2NhbnJlbGlkID09IDApCisJewogCQlkbXN0YXRlLT5yZWwgPSBFeGVjT3Bl blNjYW5SZWxhdGlvbihlc3RhdGUsIHJ0aW5kZXgsIGVmbGFncyk7CisJCWlmICh1bmxpa2VseShk bXN0YXRlLT5yZWwgPT0gTlVMTCB8fCAhRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQkJ cmV0dXJuOworCX0KIAllbHNlCiAJCWRtc3RhdGUtPnJlbCA9IG5vZGUtPnNzLnNzX2N1cnJlbnRS ZWxhdGlvbjsKIAl0YWJsZSA9IEdldEZvcmVpZ25UYWJsZShSZWxhdGlvbkdldFJlbGlkKGRtc3Rh dGUtPnJlbCkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRleCBlYjFkM2Q4ZmJiLi5lODhjM2E2NzYw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtNTYxLDggKzU2MSwxMSBAQCBCZWdpbkNvcHlUbyhQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRo ZSBwbGFuIGZvciBleGVjdXRpb24uCiAJCSAqCiAJCSAqIEV4ZWN1dG9yU3RhcnQgY29tcHV0ZXMg YSByZXN1bHQgdHVwZGVzYyBmb3IgdXMKKwkJICoKKwkJICogUGxhbiBjYW4ndCBiZWNvbWUgaW52 YWxpZCwgYmVjYXVzZSB0aGVyZSdzIG5vIENhY2hlZFBsYW4uCiAJCSAqLwotCQlFeGVjdXRvclN0 YXJ0KGNzdGF0ZS0+cXVlcnlEZXNjLCAwKTsKKwkJaWYgKCFFeGVjdXRvclN0YXJ0KGNzdGF0ZS0+ cXVlcnlEZXNjLCBOVUxMLCAwKSkKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGZhaWx1cmUg cnVubmluZyBFeGVjdXRvclN0YXJ0KCkiKTsKIAogCQl0dXBEZXNjID0gY3N0YXRlLT5xdWVyeURl c2MtPnR1cERlc2M7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRl YXMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKaW5kZXggMGI2MjliMWY3OS4u NzIwYmMxYzcyZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCkBAIC0zMjgsOCArMzI4LDEzIEBA IEV4ZWNDcmVhdGVUYWJsZUFzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0bXQg KnN0bXQsCiAJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJ CQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIAotCQkvKiBjYWxsIEV4ZWN1dG9y U3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCi0JCUV4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCBHZXRJbnRvUmVsRUZsYWdzKGludG8pKTsKKwkJLyoKKwkJICogY2FsbCBF eGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgorCQkgKgorCQkg KiBQbGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLCBiZWNhdXNlIHRoZXJlJ3Mgbm8gQ2FjaGVkUGxh bi4KKwkJICovCisJCWlmICghRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIE5VTEwsIEdldEludG9S ZWxFRmxhZ3MoaW50bykpKQorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZmFpbHVyZSBydW5u aW5nIEV4ZWN1dG9yU3RhcnQoKSIpOwogCiAJCS8qIHJ1biB0aGUgcGxhbiB0byBjb21wbGV0aW9u ICovCiAJCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIDAsIHRy dWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDU3NzFhYWJmNDAuLmQyZGUyNTkwNjIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTUwNiwxMCArNTA2LDExIEBAIHN0YW5kYXJkX0V4cGxh aW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCQlCdWZmZXJVc2Fn ZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQpOwog CX0KIAotCS8qIHJ1biBpdCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVjZSBvdXRwdXQgKi8KLQlFeHBs YWluT25lUGxhbihwbGFuLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYs Ci0JCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCks Ci0JCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKKwkvKiBydW4gaXQg KGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0OyBubyBDYWNoZWRQbGFuLCBubyByZXBsYW5u aW5nISAqLworCWlmICghRXhwbGFpbk9uZVBsYW4ocGxhbiwgTlVMTCwgaW50bywgZXMsIHF1ZXJ5 U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAorCQkJCQkJJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZm ZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCisJCQkJCQllcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVy cyA6IE5VTEwpKQorCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBmYWlsdXJlIHRvIGZpbmlzaCBF eHBsYWluT25lUGxhbigpIik7CiB9CiAKIC8qCkBAIC02MTMsOSArNjE0LDEzIEBAIEV4cGxhaW5P bmVVdGlsaXR5KE5vZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3Rh dGUgKmVzLAogICogVGhpcyBpcyBleHBvcnRlZCBiZWNhdXNlIGl0J3MgY2FsbGVkIGJhY2sgZnJv bSBwcmVwYXJlLmMgaW4gdGhlCiAgKiBFWFBMQUlOIEVYRUNVVEUgY2FzZSwgYW5kIGJlY2F1c2Ug YW4gaW5kZXggYWR2aXNvciBwbHVnaW4gd291bGQgbmVlZAogICogdG8gY2FsbCBpdC4KKyAqCisg KiBSZXR1cm5zIHRydWUgaWYgZXhlY3V0aW9uIHN1Y2NlZWRzLCBmYWxzZSBvdGhlcndpc2UuICBM YXR0ZXIgb25seSBwb3NzaWJsZQorICogaWYgY3BsYW4gIT0gTlVMTCBhbmQgZ2V0cyBpbnZhbGlk YXRlZCBkdXJpbmcgRXhlY3V0b3JTdGFydCgpLgogICovCi12b2lkCi1FeHBsYWluT25lUGxhbihQ bGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAq ZXMsCitib29sCitFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsIENhY2hl ZFBsYW4gKmNwbGFuLAorCQkJICAgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywK IAkJCSAgIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJ CSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVy YXRpb24sCiAJCQkgICBjb25zdCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsCkBAIC02ODUsOCArNjkw LDE2IEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVz ZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlpZiAoaW50bykKIAkJZWZsYWdzIHw9IEdldElu dG9SZWxFRmxhZ3MoaW50byk7CiAKLQkvKiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0 aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCi0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFn cyk7CisJLyoKKwkgKiBDYWxsIFRyeUV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBm b3IgZXhlY3V0aW9uLiAgQSBjYWNoZWQgcGxhbgorCSAqIG1heSBnZXQgaW52YWxpZGF0ZWQgZHVy aW5nIHBsYW4gaW50aWFsaXphdGlvbi4KKwkgKi8KKwlpZiAoIVRyeUV4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBjcGxhbiwgZWZsYWdzKSkKKwl7CisJCS8qIENsZWFuIHVwLiAqLworCQlQb3BBY3Rp dmVTbmFwc2hvdCgpOworCQlyZXR1cm4gZmFsc2U7CisJfQogCiAJLyogRXhlY3V0ZSB0aGUgcGxh biBmb3Igc3RhdGlzdGljcyBpZiBhc2tlZCBmb3IgKi8KIAlpZiAoZXMtPmFuYWx5emUpCkBAIC03 OTgsNiArODExLDggQEAgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJ bnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJCQkJCSBlcyk7CiAKIAlFeHBs YWluQ2xvc2VHcm91cCgiUXVlcnkiLCBOVUxMLCB0cnVlLCBlcyk7CisKKwlyZXR1cm4gdHJ1ZTsK IH0KIAogLyoKQEAgLTUxOTQsNiArNTIwOSwxNyBAQCBFeHBsYWluRHVtbXlHcm91cChjb25zdCBj aGFyICpvYmp0eXBlLCBjb25zdCBjaGFyICpsYWJlbG5hbWUsIEV4cGxhaW5TdGF0ZSAqZXMpCiAJ fQogfQogCisvKgorICogRGlzY2FyZCBvdXRwdXQgYnVmZmVyIGZvciBhIGZyZXNoIHJlc3RhcnQu CisgKi8KK3ZvaWQKK0V4cGxhaW5SZXNldE91dHB1dChFeHBsYWluU3RhdGUgKmVzKQoreworCUFz c2VydChlcy0+c3RyKTsKKwlyZXNldFN0cmluZ0luZm8oZXMtPnN0cik7CisJRXhwbGFpbkJlZ2lu T3V0cHV0KGVzKTsKK30KKwogLyoKICAqIEVtaXQgdGhlIHN0YXJ0LW9mLW91dHB1dCBib2lsZXJw bGF0ZS4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IDE2NDNjOGM2OWEuLmMzMDAz YWUxYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBAIC04MDIsNyArODAyLDExIEBAIGV4 ZWN1dGVfc3FsX3N0cmluZyhjb25zdCBjaGFyICpzcWwpCiAJCQkJCQkJCQkJR2V0QWN0aXZlU25h cHNob3QoKSwgTlVMTCwKIAkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKIAotCQkJCUV4 ZWN1dG9yU3RhcnQocWRlc2MsIDApOworCQkJCS8qCisJCQkJICogUGxhbiBjYW4ndCBiZWNvbWUg aW52YWxpZCwgYmVjYXVzZSB0aGVyZSdzIG5vIENhY2hlZFBsYW4uCisJCQkJICovCisJCQkJaWYg KCFFeGVjdXRvclN0YXJ0KHFkZXNjLCBOVUxMLCAwKSkKKwkJCQkJZWxvZyhFUlJPUiwgInVuZXhw ZWN0ZWQgZmFpbHVyZSBydW5uaW5nIEV4ZWN1dG9yU3RhcnQoKSIpOwogCQkJCUV4ZWN1dG9yUnVu KHFkZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMCwgdHJ1ZSk7CiAJCQkJRXhlY3V0b3JGaW5p c2gocWRlc2MpOwogCQkJCUV4ZWN1dG9yRW5kKHFkZXNjKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL21hdHZpZXcuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpp bmRleCA5MWYwZmQ2ZWEzLi5hYzRkZmE5YTcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9tYXR2aWV3LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCkBAIC00 NDIsOCArNDQyLDE0IEBAIHJlZnJlc2hfbWF0dmlld19kYXRhZmlsbChEZXN0UmVjZWl2ZXIgKmRl c3QsIFF1ZXJ5ICpxdWVyeSwKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNu YXBzaG90LAogCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKIAotCS8qIGNhbGwgRXhlY3V0 b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24gKi8KLQlFeGVjdXRvclN0 YXJ0KHF1ZXJ5RGVzYywgMCk7CisJLyoKKwkgKiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFy ZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCisJICoKKwkgKiBPSyB0byBpZ25vcmUgdGhlIHJldHVy biB2YWx1ZTsgcGxhbiBjYW4ndCBiZWNvbWUgaW52YWxpZCwKKwkgKiBiZWNhdXNlIHRoZXJlJ3Mg bm8gQ2FjaGVkUGxhbi4KKwkgKi8KKwlpZiAoIUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBOVUxM LCAwKSkKKwkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZmFpbHVyZSBydW5uaW5nIEV4ZWN1dG9y U3RhcnQoKSIpOwogCiAJLyogcnVuIHRoZSBwbGFuICovCiAJRXhlY3V0b3JSdW4ocXVlcnlEZXNj LCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMCwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRz LmMKaW5kZXggNGY2YWNmNjcxOS4uY2VhM2U4ZWNhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcG9ydGFsY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNt ZHMuYwpAQCAtMTQyLDkgKzE0MiwxMSBAQCBQZXJmb3JtQ3Vyc29yT3BlbihQYXJzZVN0YXRlICpw c3RhdGUsIERlY2xhcmVDdXJzb3JTdG10ICpjc3RtdCwgUGFyYW1MaXN0SW5mbyBwYQogCiAJLyoK IAkgKiBTdGFydCBleGVjdXRpb24sIGluc2VydGluZyBwYXJhbWV0ZXJzIGlmIGFueS4KKwkgKgor CSAqIFBsYW4gY2FuJ3QgYmVjb21lIGludmFsaWQgaGVyZSwgYmVjYXVzZSB0aGVyZSdzIG5vIENh Y2hlZFBsYW4uCiAJICovCi0JUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEdldEFjdGl2 ZVNuYXBzaG90KCkpOwotCisJaWYgKCFQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtcywgMCwgR2V0 QWN0aXZlU25hcHNob3QoKSwgTlVMTCkpCisJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGZhaWx1 cmUgcnVubmluZyBQb3J0YWxTdGFydCgpIik7CiAJQXNzZXJ0KHBvcnRhbC0+c3RyYXRlZ3kgPT0g UE9SVEFMX09ORV9TRUxFQ1QpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCAwNzI1 N2Q0ZGI5Li5iZjQ5MTdmMjJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVw YXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC0xODAsNiArMTgw LDcgQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJcGFyYW1MSSA9IEV2YWx1 YXRlUGFyYW1zKHBzdGF0ZSwgZW50cnksIHN0bXQtPnBhcmFtcywgZXN0YXRlKTsKIAl9CiAKK3Jl cGxhbjoKIAkvKiBDcmVhdGUgYSBuZXcgcG9ydGFsIHRvIHJ1biB0aGUgcXVlcnkgaW4gKi8KIAlw b3J0YWwgPSBDcmVhdGVOZXdQb3J0YWwoKTsKIAkvKiBEb24ndCBkaXNwbGF5IHRoZSBwb3J0YWwg aW4gcGdfY3Vyc29ycywgaXQgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5ICovCkBAIC0yNDgsOSAr MjQ5LDE2IEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJfQogCiAJLyoKLQkg KiBSdW4gdGhlIHBvcnRhbCBhcyBhcHByb3ByaWF0ZS4KKwkgKiBSdW4gdGhlIHBvcnRhbCBhcyBh cHByb3ByaWF0ZS4gSWYgdGhlIHBvcnRhbCBoYXMgYSBjYWNoZWQgcGxhbiBhbmQKKwkgKiBpdCdz IGZvdW5kIHRvIGJlIGludmFsaWRhdGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaXRz IHBsYW4KKwkgKiB0cmVlcywgdGhlIHBsYW4gbXVzdCBiZSByZWdlbmVyYXRlZC4KIAkgKi8KLQlQ b3J0YWxTdGFydChwb3J0YWwsIHBhcmFtTEksIGVmbGFncywgR2V0QWN0aXZlU25hcHNob3QoKSk7 CisJaWYgKCFQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtTEksIGVmbGFncywgR2V0QWN0aXZlU25h cHNob3QoKSwgY3BsYW4pKQorCXsKKwkJQXNzZXJ0KGNwbGFuICE9IE5VTEwpOworCQlQb3J0YWxE cm9wKHBvcnRhbCwgZmFsc2UpOworCQlnb3RvIHJlcGxhbjsKKwl9CiAKIAkodm9pZCkgUG9ydGFs UnVuKHBvcnRhbCwgY291bnQsIGZhbHNlLCB0cnVlLCBkZXN0LCBkZXN0LCBxYyk7CiAKQEAgLTU3 MSw3ICs1NzksNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwg SW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIHsKIAlQcmVwYXJlZFN0YXRlbWVu dCAqZW50cnk7CiAJY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nOwotCUNhY2hlZFBsYW4gKmNwbGFu OworCUNhY2hlZFBsYW4gKmNwbGFuID0gTlVMTDsKIAlMaXN0CSAgICpwbGFuX2xpc3Q7CiAJTGlz dENlbGwgICAqcDsKIAlQYXJhbUxpc3RJbmZvIHBhcmFtTEkgPSBOVUxMOwpAQCAtNjI4LDYgKzYz Niw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xh dXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCX0KIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQs IGFuZCBhY3F1aXJlIGEgdHJhbnNpZW50IHJlZmNvdW50ICovCityZXBsYW46CiAJY3BsYW4gPSBH ZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBwYXJhbUxJLAogCQkJCQkJICBDdXJyZW50 UmVzb3VyY2VPd25lciwgcXVlcnlFbnYpOwogCkBAIC02NTUsOSArNjY0LDE4IEBAIEV4cGxhaW5F eGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBs YWluU3RhdGUgKmVzLAogCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFubmVk U3RtdCwgcCk7CiAKIAkJaWYgKHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkKLQkJ CUV4cGxhaW5PbmVQbGFuKHBzdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBx dWVyeUVudiwKLQkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2Fn ZSA6IE5VTEwpLAotCQkJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsK KwkJeworCQkJaWYgKCFFeHBsYWluT25lUGxhbihwc3RtdCwgY3BsYW4sIGludG8sIGVzLCBxdWVy eV9zdHJpbmcsIHBhcmFtTEksCisJCQkJCQkJCXF1ZXJ5RW52LCAmcGxhbmR1cmF0aW9uLAorCQkJ CQkJCQkoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSwKKwkJCQkJCQkJZXMtPm1lbW9y eSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKSkKKwkJCXsKKwkJCQlBc3NlcnQoY3BsYW4gIT0gTlVM TCk7CisJCQkJRXhwbGFpblJlc2V0T3V0cHV0KGVzKTsKKwkJCQlSZWxlYXNlQ2FjaGVkUGxhbihj cGxhbiwgQ3VycmVudFJlc291cmNlT3duZXIpOworCQkJCWdvdG8gcmVwbGFuOworCQkJfQorCQl9 CiAJCWVsc2UKIAkJCUV4cGxhaW5PbmVVdGlsaXR5KHBzdG10LT51dGlsaXR5U3RtdCwgaW50bywg ZXMsIHF1ZXJ5X3N0cmluZywKIAkJCQkJCQkgIHBhcmFtTEksIHF1ZXJ5RW52KTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RyaWdnZXIuYwppbmRleCAxNzAzNjBlZGRhLi5iYjQxMGQ3MzEzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJp Z2dlci5jCkBAIC01MDIzLDYgKzUwMjMsMTkgQEAgQWZ0ZXJUcmlnZ2VyQmVnaW5RdWVyeSh2b2lk KQogCWFmdGVyVHJpZ2dlcnMucXVlcnlfZGVwdGgrKzsKIH0KIAorLyogLS0tLS0tLS0tLQorICog QWZ0ZXJUcmlnZ2VyQ2FuY2VsUXVlcnkoKQorICoKKyAqCUNhbGxlZCBmcm9tIEV4ZWN1dG9yRW5k KCkgaWYgdGhlIHF1ZXJ5IGV4ZWN1dGlvbiB3YXMgY2FuY2VsZWQuCisgKiAtLS0tLS0tLS0tCisg Ki8KK3ZvaWQKK0FmdGVyVHJpZ2dlckNhbmNlbFF1ZXJ5KHZvaWQpCit7CisJLyogU2V0IHRvIGEg dmFsdWUgZGVub3RpbmcgdGhhdCBubyBxdWVyeSBpcyBhY3RpdmUuICovCisJYWZ0ZXJUcmlnZ2Vy cy5xdWVyeV9kZXB0aCA9IC0xOworfQorCiAKIC8qIC0tLS0tLS0tLS0KICAqIEFmdGVyVHJpZ2dl ckVuZFF1ZXJ5KCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQppbmRleCA2NDJkNjNiZTYxLi42Y2Q4NDBkM2E3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvUkVBRE1FCkBAIC0yODAsNiArMjgwLDM0IEBAIGFyZSB0eXBpY2FsbHkgcmVzZXQg dG8gZW1wdHkgb25jZSBwZXIgdHVwbGUuICBQZXItdHVwbGUgY29udGV4dHMgYXJlIHVzdWFsbHkK IGFzc29jaWF0ZWQgd2l0aCBFeHByQ29udGV4dHMsIGFuZCBjb21tb25seSBlYWNoIFBsYW5TdGF0 ZSBub2RlIGhhcyBpdHMgb3duCiBFeHByQ29udGV4dCB0byBldmFsdWF0ZSBpdHMgcXVhbCBhbmQg dGFyZ2V0bGlzdCBleHByZXNzaW9ucyBpbi4KIAorUmVsYXRpb24gTG9ja2luZworLS0tLS0tLS0t LS0tLS0tLQorCitUeXBpY2FsbHksIHdoZW4gdGhlIGV4ZWN1dG9yIGluaXRpYWxpemVzIGEgcGxh biB0cmVlIGZvciBleGVjdXRpb24sIGl0IGRvZXNuJ3QKK2xvY2sgbm9uLWluZGV4IHJlbGF0aW9u cyBpZiB0aGUgcGxhbiB0cmVlIGlzIGZyZXNobHkgZ2VuZXJhdGVkIGFuZCBub3QgZGVyaXZlZAor ZnJvbSBhIENhY2hlZFBsYW4uIFRoaXMgaXMgYmVjYXVzZSBzdWNoIGxvY2tzIGhhdmUgYWxyZWFk eSBiZWVuIGVzdGFibGlzaGVkCitkdXJpbmcgdGhlIHF1ZXJ5J3MgcGFyc2luZywgcmV3cml0aW5n LCBhbmQgcGxhbm5pbmcgcGhhc2VzLiBIb3dldmVyLCB3aXRoIGEKK2NhY2hlZCBwbGFuIHRyZWUs IHRoZXJlIGNhbiBiZSByZWxhdGlvbnMgdGhhdCByZW1haW4gdW5sb2NrZWQuIFRoZSBmdW5jdGlv bgorR2V0Q2FjaGVkUGxhbigpIGxvY2tzIHJlbGF0aW9ucyBleGlzdGluZyBpbiB0aGUgcXVlcnkn cyByYW5nZSB0YWJsZSBwcmUtcGxhbm5pbmcKK2J1dCBkb2Vzbid0IGFjY291bnQgZm9yIHRob3Nl IGFkZGVkIGR1cmluZyB0aGUgcGxhbm5pbmcgcGhhc2UuIENvbnNlcXVlbnRseSwKK2luaGVyaXRh bmNlIGNoaWxkIHRhYmxlcywgaW50cm9kdWNlZCB0byB0aGUgcXVlcnkncyByYW5nZSB0YWJsZSBk dXJpbmcgcGxhbm5pbmcsCit3b24ndCBiZSBsb2NrZWQgd2hlbiB0aGUgY2FjaGVkIHBsYW4gcmVh Y2hlcyB0aGUgZXhlY3V0b3IuCisKK1RoZSBkZWNpc2lvbiB0byBkZWZlciBsb2NraW5nIGNoaWxk IHRhYmxlcyB3aXRoIEdldENhY2hlZFBsYW4oKSBhcmlzZXMgZnJvbSB0aGUKK2ZhY3QgdGhhdCBu b3QgYWxsIG1pZ2h0IGJlIGFjY2Vzc2VkIGR1cmluZyBwbGFuIGV4ZWN1dGlvbi4gRm9yIGluc3Rh bmNlLCBpZgorY2hpbGQgdGFibGVzIGFyZSBwYXJ0aXRpb25zLCBzb21lIG1pZ2h0IGJlIG9taXR0 ZWQgZHVlIHRvIHBydW5pbmcgYXQKK2V4ZWN1dGlvbi1pbml0aWFsaXphdGlvbi10aW1lLiBUaHVz LCB0aGUgcmVzcG9uc2liaWxpdHkgb2YgbG9ja2luZyB0aGVzZSBjaGlsZAordGFibGVzIGlzIHB1 c2hlZCB0byBleGVjdXRpb24taW5pdGlhbGl6YXRpb24tdGltZSwgdGFraW5nIHBsYWNlIGluIEV4 ZWNJbml0Tm9kZSgpCitmb3IgcGxhbiBub2RlcyBlbmNvbXBhc3NpbmcgdGhlc2UgdGFibGVzLgor CitUaGlzIGFwcHJvYWNoIG9wZW5zIGEgd2luZG93IHdoZXJlIGEgY2FjaGVkIHBsYW4gdHJlZSB3 aXRoIGNoaWxkIHRhYmxlcyBjb3VsZAorYmVjb21lIG91dGRhdGVkIGlmIGFub3RoZXIgYmFja2Vu ZCBtb2RpZmllcyB0aGVzZSB0YWJsZXMgYmVmb3JlIEV4ZWNJbml0Tm9kZSgpCitsb2NrcyB0aGVt LiBHaXZlbiB0aGlzLCB0aGUgZXhlY3V0b3IgaGFzIHRoZSBhZGRlZCBkdXR5IHRvIGNvbmZpcm0g dGhlIHBsYW4KK3RyZWUncyB2YWxpZGl0eSB3aGVuZXZlciBpdCBsb2NrcyBhIGNoaWxkIHRhYmxl IHBvc3QgZXhlY3V0aW9uLWluaXRpYWxpemF0aW9uLQorcHJ1bmluZy4gVGhpcyB2YWxpZGF0aW9u IGlzIGRvbmUgYnkgY2hlY2tpbmcgdGhlIENhY2hlZFBsYW4uaXNfdmFsaWQgYXR0cmlidXRlCitv ZiB0aGUgQ2FjaGVkUGxhbiBwcm92aWRlZC4gSWYgdGhlIHBsYW4gdHJlZSBpcyBvdXRkYXRlZCAo aXNfdmFsaWQ9ZmFsc2UpLCB0aGUKK2V4ZWN1dG9yIGhhbHRzIGFueSBmdXJ0aGVyIGluaXRpYWxp emF0aW9uIGFuZCBhbGVydHMgdGhlIGNhbGxlciB0aGF0IHRoZXkgc2hvdWxkCityZXRyeSBleGVj dXRpb24gd2l0aCBhbm90aGVyIGZyZXNobHkgY3JlYXRlZCBwbGFuIHRyZWUuCiAKIFF1ZXJ5IFBy b2Nlc3NpbmcgQ29udHJvbCBGbG93CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt MzE2LDcgKzM0NCwxMyBAQCBUaGlzIGlzIGEgc2tldGNoIG9mIGNvbnRyb2wgZmxvdyBmb3IgZnVs bCBxdWVyeSBwcm9jZXNzaW5nOgogCiAJRnJlZVF1ZXJ5RGVzYwogCi1QZXIgYWJvdmUgY29tbWVu dHMsIGl0J3Mgbm90IHJlYWxseSBjcml0aWNhbCBmb3IgRXhlY0VuZE5vZGUgdG8gZnJlZSBhbnkK K0FzIG1lbnRpb25lZCBpbiB0aGUgIlJlbGF0aW9uIExvY2tpbmciIHNlY3Rpb24sIGlmIHRoZSBw bGFuIHRyZWUgaXMgZm91bmQgdG8KK2JlIHN0YWxlIGR1cmluZyBvbmUgb2YgdGhlIHJlY3Vyc2l2 ZSBjYWxscyBvZiBFeGVjSW5pdE5vZGUoKSBhZnRlciB0YWtpbmcgYQorbG9jayBvbiBhIGNoaWxk IHRhYmxlLCB0aGUgY29udHJvbCBpcyBpbW1tZWRpYXRlbHkgcmV0dXJuZWQgdG8gdGhlIGNhbGxl ciBvZgorRXhlY3V0b3JTdGFydCgpLCB3aGljaCBtdXN0IHJlZG8gdGhlIHN0ZXBzIGZyb20gQ3Jl YXRlUXVlcnlEZXNjIHdpdGggYSBuZXcKK3BsYW4gdHJlZS4KKworUGVyIGFib3ZlIGNvbW1lbnRz LCBpdCdzIG5vdCByZWFsbHkgY3JpdGljYWwgZm9yIEV4ZWNFbmRQbGFuIHRvIGZyZWUgYW55CiBt ZW1vcnk7IGl0J2xsIGFsbCBnbyBhd2F5IGluIEZyZWVFeGVjdXRvclN0YXRlIGFueXdheS4gIEhv d2V2ZXIsIHdlIGRvIG5lZWQgdG8KIGJlIGNhcmVmdWwgdG8gY2xvc2UgcmVsYXRpb25zLCBkcm9w IGJ1ZmZlciBwaW5zLCBldGMsIHNvIHdlIGRvIG5lZWQgdG8gc2NhbgogdGhlIHBsYW4gc3RhdGUg dHJlZSB0byBmaW5kIHRoZXNlIHNvcnRzIG9mIHJlc291cmNlcy4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jCmluZGV4IDVlMWI4YTQyZTguLmNmMDU5Y2I4NTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YwpAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcGFydGNhY2hlLmgi CisjaW5jbHVkZSAidXRpbHMvcGxhbmNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmxzLmgiCiAj aW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogCkBAIC03Miw3ICs3Myw3IEBAIEV4ZWN1dG9yRW5k X2hvb2tfdHlwZSBFeGVjdXRvckVuZF9ob29rID0gTlVMTDsKIEV4ZWN1dG9yQ2hlY2tQZXJtc19o b29rX3R5cGUgRXhlY3V0b3JDaGVja1Blcm1zX2hvb2sgPSBOVUxMOwogCiAvKiBkZWNscyBmb3Ig bG9jYWwgcm91dGluZXMgb25seSB1c2VkIHdpdGhpbiB0aGlzIG1vZHVsZSAqLwotc3RhdGljIHZv aWQgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOworc3RhdGljIGJv b2wgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIENhY2hlZFBsYW4gKmNwbGFuLCBpbnQg ZWZsYWdzKTsKIHN0YXRpYyB2b2lkIENoZWNrVmFsaWRSb3dNYXJrUmVsKFJlbGF0aW9uIHJlbCwg Um93TWFya1R5cGUgbWFya1R5cGUpOwogc3RhdGljIHZvaWQgRXhlY1Bvc3Rwcm9jZXNzUGxhbihF U3RhdGUgKmVzdGF0ZSk7CiBzdGF0aWMgdm9pZCBFeGVjRW5kUGxhbihQbGFuU3RhdGUgKnBsYW5z dGF0ZSwgRVN0YXRlICplc3RhdGUpOwpAQCAtMTEyLDYgKzExMywxMyBAQCBzdGF0aWMgdm9pZCBF dmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKTsKICAq CiAgKiBlZmxhZ3MgY29udGFpbnMgZmxhZyBiaXRzIGFzIGRlc2NyaWJlZCBpbiBleGVjdXRvci5o LgogICoKKyAqIFBsYW4gaW5pdGlhbGl6YXRpb24gbWF5IGZhaWwgaWYgdGhlIGlucHV0IHBsYW4g dHJlZSBpcyBmb3VuZCB0byBoYXZlIGJlZW4KKyAqIGludmFsaWRhdGVkLCB3aGljaCBjYW4gaGFw cGVuIGlmIGl0IGNvbWVzIGZyb20gYSBDYWNoZWRQbGFuICgnY3BsYW4nKS4KKyAqCisgKiBSZXR1 cm5zIHRydWUgaWYgcGxhbiB3YXMgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIGFuZCBmYWxzZSBv dGhlcndpc2UuICBJZgorICogdGhlIGxhdHRlciwgdGhlIGNhbGxlciBtdXN0IGNhbGwgRXhlY3V0 b3JFbmQoKSBvbiAncXVlcnlEZXNjJyB0byBjbGVhbiB1cAorICogYWZ0ZXIgZmFpbGVkIHBsYW4g aW5pdGlhbGl6YXRpb24uCisgKgogICogTkI6IHRoZSBDdXJyZW50TWVtb3J5Q29udGV4dCB3aGVu IHRoaXMgaXMgY2FsbGVkIHdpbGwgYmVjb21lIHRoZSBwYXJlbnQKICAqIG9mIHRoZSBwZXItcXVl cnkgY29udGV4dCB1c2VkIGZvciB0aGlzIEV4ZWN1dG9yIGludm9jYXRpb24uCiAgKgpAQCAtMTIx LDggKzEyOSw4IEBAIHN0YXRpYyB2b2lkIEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFz dGF0ZSwgUGxhbiAqcGxhblRyZWUpOwogICoKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwotdm9pZAotRXhlY3V0 b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKK2Jvb2wKK0V4ZWN1dG9y U3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIENhY2hlZFBsYW4gKmNwbGFuLCBpbnQgZWZsYWdz KQogewogCS8qCiAJICogSW4gc29tZSBjYXNlcyAoZS5nLiBhbiBFWEVDVVRFIHN0YXRlbWVudCkg YSBxdWVyeSBleGVjdXRpb24gd2lsbCBza2lwCkBAIC0xMzMsMTQgKzE0MSwzNCBAQCBFeGVjdXRv clN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCXBnc3RhdF9yZXBvcnRf cXVlcnlfaWQocXVlcnlEZXNjLT5wbGFubmVkc3RtdC0+cXVlcnlJZCwgZmFsc2UpOwogCiAJaWYg KEV4ZWN1dG9yU3RhcnRfaG9vaykKLQkJKCpFeGVjdXRvclN0YXJ0X2hvb2spIChxdWVyeURlc2Ms IGVmbGFncyk7Ci0JZWxzZQotCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZs YWdzKTsKKwkJcmV0dXJuICgqRXhlY3V0b3JTdGFydF9ob29rKSAocXVlcnlEZXNjLCBjcGxhbiwg ZWZsYWdzKTsKKworCXJldHVybiBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgY3Bs YW4sIGVmbGFncyk7CiB9CiAKLXZvaWQKLXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNj ICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCisvKgorICogVmFyaWFudCBvZiBFeGVjdXRvclN0YXJ0 KCkgdGhhdCBoYW5kbGVzIGNsZWFuaW5nIHVwIGlmIHRoZSBpbnB1dCBDYWNoZWRQbGFuCisgKiBi ZWNvbWVzIGludmFsaWQgZHVlIHRvIGxvY2tzIGJlaW5nIHRha2VuIGR1cmluZyBFeGVjdXRvclN0 YXJ0KCkuCisgKi8KK2Jvb2wKK1RyeUV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2Ms IENhY2hlZFBsYW4gKmNwbGFuLCBpbnQgZWZsYWdzKQogeworCWJvb2wJcGxhbl92YWxpZCA9IEV4 ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBjcGxhbiwgZWZsYWdzKTsKKworCWlmICghcGxhbl92YWxp ZCkKKwl7CisJCUFzc2VydChjcGxhbiAhPSBOVUxMKTsKKwkJRXhlY3V0b3JFbmQocXVlcnlEZXNj KTsKKwkJRnJlZVF1ZXJ5RGVzYyhxdWVyeURlc2MpOworCX0KKworCXJldHVybiBwbGFuX3ZhbGlk OworfQorCitib29sCitzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBDYWNoZWRQbGFuICpjcGxhbiwgaW50IGVmbGFncykKK3sKKwlib29sCQlwbGFuX3ZhbGlkOwog CUVTdGF0ZQkgICAqZXN0YXRlOwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKIApAQCAtMjU5 LDkgKzI4NywxNCBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKQogCS8qCiAJICogSW5pdGlhbGl6ZSB0aGUgcGxhbiBzdGF0ZSB0cmVlCiAJ ICovCi0JSW5pdFBsYW4ocXVlcnlEZXNjLCBlZmxhZ3MpOworCXBsYW5fdmFsaWQgPSBJbml0UGxh bihxdWVyeURlc2MsIGNwbGFuLCBlZmxhZ3MpOworCisJLyogTWFyayBleGVjdXRpb24gYXMgY2Fu Y2VsZWQgaWYgcGxhbiB3b24ndCBiZSBleGVjdXRlZC4gKi8KKwllc3RhdGUtPmVzX2NhbmNlbGVk ID0gIXBsYW5fdmFsaWQ7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisK KwlyZXR1cm4gcGxhbl92YWxpZDsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzIxLDYgKzM1NCw3IEBA IHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCWVzdGF0ZSA9IHF1 ZXJ5RGVzYy0+ZXN0YXRlOwogCiAJQXNzZXJ0KGVzdGF0ZSAhPSBOVUxMKTsKKwlBc3NlcnQoIWVz dGF0ZS0+ZXNfY2FuY2VsZWQpOwogCUFzc2VydCghKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVY RUNfRkxBR19FWFBMQUlOX09OTFkpKTsKIAogCS8qIGNhbGxlciBtdXN0IGVuc3VyZSB0aGUgcXVl cnkncyBzbmFwc2hvdCBpcyBhY3RpdmUgKi8KQEAgLTQyOCw3ICs0NjIsNyBAQCBzdGFuZGFyZF9F eGVjdXRvckZpbmlzaChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAlBc3NlcnQoIShlc3RhdGUtPmVz X3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSk7CiAKIAkvKiBUaGlzIHNob3Vs ZCBiZSBydW4gb25jZSBhbmQgb25seSBvbmNlIHBlciBFeGVjdXRvciBpbnN0YW5jZSAqLwotCUFz c2VydCghZXN0YXRlLT5lc19maW5pc2hlZCk7CisJQXNzZXJ0KCFlc3RhdGUtPmVzX2ZpbmlzaGVk ICYmICFlc3RhdGUtPmVzX2NhbmNlbGVkKTsKIAogCS8qIFN3aXRjaCBpbnRvIHBlci1xdWVyeSBt ZW1vcnkgY29udGV4dCAqLwogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0 YXRlLT5lc19xdWVyeV9jeHQpOwpAQCAtNDg3LDExICs1MjEsMTEgQEAgc3RhbmRhcmRfRXhlY3V0 b3JFbmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJQXNzZXJ0KGVzdGF0ZSAhPSBOVUxMKTsKIAog CS8qCi0JICogQ2hlY2sgdGhhdCBFeGVjdXRvckZpbmlzaCB3YXMgY2FsbGVkLCB1bmxlc3MgaW4g RVhQTEFJTi1vbmx5IG1vZGUuIFRoaXMKLQkgKiBBc3NlcnQgaXMgbmVlZGVkIGJlY2F1c2UgRXhl Y3V0b3JGaW5pc2ggaXMgbmV3IGFzIG9mIDkuMSwgYW5kIGNhbGxlcnMKLQkgKiBtaWdodCBmb3Jn ZXQgdG8gY2FsbCBpdC4KKwkgKiBDaGVjayB0aGF0IEV4ZWN1dG9yRmluaXNoIHdhcyBjYWxsZWQs IHVubGVzcyBpbiBFWFBMQUlOLW9ubHkgbW9kZSBvciBpZgorCSAqIGV4ZWN1dGlvbiB3YXMgY2Fu Y2VsZWQuIFRoaXMgQXNzZXJ0IGlzIG5lZWRlZCBiZWNhdXNlIEV4ZWN1dG9yRmluaXNoIGlzCisJ ICogbmV3IGFzIG9mIDkuMSwgYW5kIGNhbGxlcnMgbWlnaHQgZm9yZ2V0IHRvIGNhbGwgaXQuCiAJ ICovCi0JQXNzZXJ0KGVzdGF0ZS0+ZXNfZmluaXNoZWQgfHwKKwlBc3NlcnQoZXN0YXRlLT5lc19m aW5pc2hlZCB8fCBlc3RhdGUtPmVzX2NhbmNlbGVkIHx8CiAJCSAgIChlc3RhdGUtPmVzX3RvcF9l ZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSk7CiAKIAkvKgpAQCAtNTA1LDYgKzUzOSwx NCBAQCBzdGFuZGFyZF9FeGVjdXRvckVuZChRdWVyeURlc2MgKnF1ZXJ5RGVzYykKIAlVbnJlZ2lz dGVyU25hcHNob3QoZXN0YXRlLT5lc19zbmFwc2hvdCk7CiAJVW5yZWdpc3RlclNuYXBzaG90KGVz dGF0ZS0+ZXNfY3Jvc3NjaGVja19zbmFwc2hvdCk7CiAKKwkvKgorCSAqIENhbmNlbCB0cmlnZ2Vy IGV4ZWN1dGlvbiB0b28gaWYgdGhlIHF1ZXJ5IGV4ZWN1dGlvbiB3YXMgY2FuY2VsZWQuCisJICov CisJaWYgKGVzdGF0ZS0+ZXNfY2FuY2VsZWQgJiYKKwkJIShlc3RhdGUtPmVzX3RvcF9lZmxhZ3Mg JgorCQkgIChFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUyB8IEVYRUNfRkxBR19FWFBMQUlOX09OTFkp KSkKKwkJQWZ0ZXJUcmlnZ2VyQ2FuY2VsUXVlcnkoKTsKKwogCS8qCiAJICogTXVzdCBzd2l0Y2gg b3V0IG9mIGNvbnRleHQgYmVmb3JlIGRlc3Ryb3lpbmcgaXQKIAkgKi8KQEAgLTgzNCwyNCArODc2 LDU1IEBAIEV4ZWNDaGVja1hhY3RSZWFkT25seShQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQpCiAJ CVByZXZlbnRDb21tYW5kSWZQYXJhbGxlbE1vZGUoQ3JlYXRlQ29tbWFuZE5hbWUoKE5vZGUgKikg cGxhbm5lZHN0bXQpKTsKIH0KIAorLyogTG9jayB0aGUgcmVsYXRpb25zIGZvdW5kIGluIFBsYW5u ZWRTdG10LmVsaWRlZEFwcGVuZFBhcnRSZWxzLiAqLworc3RhdGljIHZvaWQKK0V4ZWNMb2NrRWxp ZGVkQXBwZW5kUGFydFJlbHMoRVN0YXRlICplc3RhdGUsIExpc3QgKmVsaWRlZEFwcGVuZFBhcnRS ZWxzKQoreworCUxpc3RDZWxsICpsYzsKKworCWZvcmVhY2gobGMsIGVsaWRlZEFwcGVuZFBhcnRS ZWxzKQorCXsKKwkJQml0bWFwc2V0ICpwYXJ0cmVsaWRzID0gY2FzdE5vZGUoQml0bWFwc2V0LCBs Zmlyc3QobGMpKTsKKwkJaW50CQlydGkgPSAtMTsKKworCQl3aGlsZSAoKHJ0aSA9IGJtc19uZXh0 X21lbWJlcihwYXJ0cmVsaWRzLCBydGkpKSA+IDApCisJCXsKKwkJCVJhbmdlVGJsRW50cnkgKnJ0 ZSA9IGV4ZWNfcnRfZmV0Y2gocnRpLCBlc3RhdGUpOworCisJCQkvKgorCQkJICogRG9uJ3QgbG9j ayBhbnkgcGFydGl0aW9uZWQgdGFibGVzIG1lbnRpb25lZCBpbiB0aGUgcXVlcnksCisJCQkgKiBi ZWNhdXNlIHRoZXkgd291bGQgYWxyZWFkeSBoYXZlIGJlZW4gbG9ja2VkIGJlZm9yZSBlbnRlcmlu ZyB0aGUKKwkJCSAqIGV4ZWN1dG9yLgorCQkJICovCisJCQlpZiAoIXJ0ZS0+aW5Gcm9tQ2wpCisJ CQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJZWxz ZQorCQkJCUFzc2VydChDaGVja1JlbGF0aW9uT2lkTG9ja2VkQnlNZShydGUtPnJlbGlkLCBydGUt PnJlbGxvY2ttb2RlLCB0cnVlKSk7CisJCX0KKwl9Cit9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlJbml0 UGxhbgogICoKICAqCQlJbml0aWFsaXplcyB0aGUgcXVlcnkgcGxhbjogb3BlbiBmaWxlcywgYWxs b2NhdGUgc3RvcmFnZQogICoJCWFuZCBzdGFydCB1cCB0aGUgcnVsZSBtYW5hZ2VyCisgKgorICog UmV0dXJucyB0cnVlIGlmIHRoZSBwbGFuIHRyZWUgaXMgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVk IGZvciBleGVjdXRpb24sCisgKiBmYWxzZSBvdGhlcndpc2UuICBUaGUgbGF0dGVyIGNhc2UgbWF5 IG9jY3VyIGlmIHRoZSBDYWNoZWRQbGFuIHRoYXQgcHJvdmlkZXMKKyAqIHRoZSBwbGFuIHRyZWUg KCdjcGxhbicpIGdvdCBpbnZhbGlkYXRlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uLgogICog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICovCi1zdGF0aWMgdm9pZAotSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2Ms IGludCBlZmxhZ3MpCitzdGF0aWMgYm9vbAorSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2Ms IENhY2hlZFBsYW4gKmNwbGFuLCBpbnQgZWZsYWdzKQogewogCUNtZFR5cGUJCW9wZXJhdGlvbiA9 IHF1ZXJ5RGVzYy0+b3BlcmF0aW9uOwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IHF1ZXJ5 RGVzYy0+cGxhbm5lZHN0bXQ7CiAJUGxhbgkgICAqcGxhbiA9IHBsYW5uZWRzdG10LT5wbGFuVHJl ZTsKIAlMaXN0CSAgICpyYW5nZVRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJsZTsKIAlFU3RhdGUJ ICAgKmVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0YXRlOwotCVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZTsK LQlUdXBsZURlc2MJdHVwVHlwZTsKKwlQbGFuU3RhdGUgICpwbGFuc3RhdGUgPSBOVUxMOworCVR1 cGxlRGVzYwl0dXBUeXBlID0gTlVMTDsKIAlMaXN0Q2VsbCAgICpsOwogCWludAkJCWk7CiAKQEAg LTg2NSw3ICs5MzgsMTYgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxh Z3MpCiAJICovCiAJRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSwgcGxhbm5l ZHN0bXQtPnBlcm1JbmZvcyk7CiAKKwkvKgorCSAqIFdpdGggcmFuZ2UgdGFibGUgaW4gcGxhY2Us IGxvY2sgcGFydGl0aW9uZWQgdGFibGVzIHdob3NlCisJICogQXBwZW5kL01lcmdlQXBwZW5kIG5v ZGVzIGhhdmUgYmVlbiByZW1vdmVkIGJ5IHRoZSBwbGFubmVyLgorCSAqLworCWlmIChjcGxhbiAh PSBOVUxMKQorCQlFeGVjTG9ja0VsaWRlZEFwcGVuZFBhcnRSZWxzKGVzdGF0ZSwKKwkJCQkJCQkJ CSBwbGFubmVkc3RtdC0+ZWxpZGVkQXBwZW5kUGFydFJlbHMpOworCiAJZXN0YXRlLT5lc19wbGFu bmVkc3RtdCA9IHBsYW5uZWRzdG10OworCWVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiA9IGNwbGFuOwog CiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0aGUgUGxh blJvd01hcmsocyksIGlmIGFueS4KQEAgLTg5Nyw2ICs5NzksOSBAQCBJbml0UGxhbihRdWVyeURl c2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCQljYXNlIFJPV19NQVJLX0tFWVNIQVJFOgog CQkJCWNhc2UgUk9XX01BUktfUkVGRVJFTkNFOgogCQkJCQlyZWxhdGlvbiA9IEV4ZWNHZXRSYW5n ZVRhYmxlUmVsYXRpb24oZXN0YXRlLCByYy0+cnRpKTsKKwkJCQkJaWYgKHVubGlrZWx5KHJlbGF0 aW9uID09IE5VTEwgfHwKKwkJCQkJCQkJICFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJ CQkJCQlyZXR1cm4gZmFsc2U7CiAJCQkJCWJyZWFrOwogCQkJCWNhc2UgUk9XX01BUktfQ09QWToK IAkJCQkJLyogbm8gcGh5c2ljYWwgdGFibGUgYWNjZXNzIGlzIHJlcXVpcmVkICovCkBAIC05Njcs NiArMTA1Miw4IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQog CiAJCWVzdGF0ZS0+ZXNfc3VicGxhbnN0YXRlcyA9IGxhcHBlbmQoZXN0YXRlLT5lc19zdWJwbGFu c3RhdGVzLAogCQkJCQkJCQkJCSAgIHN1YnBsYW5zdGF0ZSk7CisJCWlmICh1bmxpa2VseSghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQkJcmV0dXJuIGZhbHNlOwogCiAJCWkrKzsKIAl9 CkBAIC05NzcsNiArMTA2NCw4IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKQogCSAqIHByb2Nlc3NpbmcgdHVwbGVzLgogCSAqLwogCXBsYW5zdGF0ZSA9IEV4ZWNJ bml0Tm9kZShwbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBmYWxzZTsKIAogCS8qCiAJICogR2V0IHRoZSB0 dXBsZSBkZXNjcmlwdG9yIGRlc2NyaWJpbmcgdGhlIHR5cGUgb2YgdHVwbGVzIHRvIHJldHVybi4K QEAgLTEwMTgsOCArMTEwNywxMiBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50 IGVmbGFncykKIAkJfQogCX0KIAorCUFzc2VydChxdWVyeURlc2MtPnR1cERlc2MgPT0gTlVMTCk7 CiAJcXVlcnlEZXNjLT50dXBEZXNjID0gdHVwVHlwZTsKKwlBc3NlcnQocXVlcnlEZXNjLT5wbGFu c3RhdGUgPT0gTlVMTCk7CiAJcXVlcnlEZXNjLT5wbGFuc3RhdGUgPSBwbGFuc3RhdGU7CisKKwly ZXR1cm4gdHJ1ZTsKIH0KIAogLyoKQEAgLTI4NDcsNyArMjk0MCw4IEBAIEV2YWxQbGFuUXVhbFN0 YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJICogQ2hpbGQgRVBRIEVT dGF0ZXMgc2hhcmUgdGhlIHBhcmVudCdzIGNvcHkgb2YgdW5jaGFuZ2luZyBzdGF0ZSBzdWNoIGFz CiAJICogdGhlIHNuYXBzaG90LCByYW5nZXRhYmxlLCBhbmQgZXh0ZXJuYWwgUGFyYW0gaW5mby4g IFRoZXkgbmVlZCB0aGVpciBvd24KIAkgKiBjb3BpZXMgb2YgbG9jYWwgc3RhdGUsIGluY2x1ZGlu ZyBhIHR1cGxlIHRhYmxlLCBlc19wYXJhbV9leGVjX3ZhbHMsCi0JICogcmVzdWx0LXJlbCBpbmZv LCBldGMuCisJICogcmVzdWx0LXJlbCBpbmZvLCBldGMuICBBbHNvLCB3ZSBkb24ndCBwYXNzIHRo ZSBwYXJlbnQncyBjb3B5IG9mIHRoZQorCSAqIENhY2hlZFBsYW4sIGJlY2F1c2Ugbm8gbmV3IGxv Y2tzIHdpbGwgYmUgdGFrZW4gZm9yIEV2YWxQbGFuUXVhbCgpLgogCSAqLwogCXJjZXN0YXRlLT5l c19kaXJlY3Rpb24gPSBGb3J3YXJkU2NhbkRpcmVjdGlvbjsKIAlyY2VzdGF0ZS0+ZXNfc25hcHNo b3QgPSBwYXJlbnRlc3RhdGUtPmVzX3NuYXBzaG90OwpAQCAtMjkzNiw2ICszMDMwLDE0IEBAIEV2 YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJCXN1 YnBsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShzdWJwbGFuLCByY2VzdGF0ZSwgMCk7CiAJCXJjZXN0 YXRlLT5lc19zdWJwbGFuc3RhdGVzID0gbGFwcGVuZChyY2VzdGF0ZS0+ZXNfc3VicGxhbnN0YXRl cywKIAkJCQkJCQkJCQkJIHN1YnBsYW5zdGF0ZSk7CisKKwkJLyoKKwkJICogQWxsIHRoZSBuZWNl c3NhcnkgbG9ja3MgbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiB0YWtlbiB3aGVuCisJCSAqIGluaXRp YWxpemluZyB0aGUgcGFyZW50J3MgY29weSBvZiBzdWJwbGFuc3RhdGUsIHNvIHRoZSBDYWNoZWRQ bGFuLAorCQkgKiBpZiBhbnksIHNob3VsZCBub3QgaGF2ZSBiZWNvbWUgaW52YWxpZCBkdXJpbmcg RXhlY0luaXROb2RlKCkuCisJCSAqLworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChyY2VzdGF0 ZSkpCisJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBmYWlsdXJlIHRvIGluaXRpYWxpemUgc3Vi cGxhbiBpbiBFdmFsUGxhblF1YWxTdGFydCgpIik7CiAJfQogCiAJLyoKQEAgLTI5NzcsNiArMzA3 OSwxMCBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5U cmVlKQogCSAqLwogCWVwcXN0YXRlLT5yZWNoZWNrcGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHBs YW5UcmVlLCByY2VzdGF0ZSwgMCk7CiAKKwkvKiBTZWUgdGhlIGNvbW1lbnQgYWJvdmUuICovCisJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQocmNlc3RhdGUpKQorCQllbG9nKEVSUk9SLCAidW5leHBl Y3RlZCBmYWlsdXJlIHRvIGluaXRpYWxpemUgbWFpbiBwbGFudHJlZSBpbiBFdmFsUGxhblF1YWxT dGFydCgpIik7CisKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggZjk5NTcxNGQ3Zi4uZThjYTYwZDE0MyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTE0MzksNyArMTQzOSwxMiBAQCBQ YXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAKIAkvKiBT dGFydCB1cCB0aGUgZXhlY3V0b3IgKi8KIAlxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5qaXRGbGFn cyA9IGZwZXMtPmppdF9mbGFnczsKLQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZnBlcy0+ZWZs YWdzKTsKKwkvKgorCSAqIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBwbGFuIGNhbid0 IGJlY29tZSBpbnZhbGlkLAorCSAqIGJlY2F1c2UgdGhlcmUncyBubyBDYWNoZWRQbGFuLgorCSAq LworCWlmICghRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIE5VTEwsIGZwZXMtPmVmbGFncykpCisJ CWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGZhaWx1cmUgcnVubmluZyBFeGVjdXRvclN0YXJ0KCki KTsKIAogCS8qIFNwZWNpYWwgZXhlY3V0b3IgaW5pdGlhbGl6YXRpb24gc3RlcHMgZm9yIHBhcmFs bGVsIHdvcmtlcnMgKi8KIAlxdWVyeURlc2MtPnBsYW5zdGF0ZS0+c3RhdGUtPmVzX3F1ZXJ5X2Rz YSA9IGFyZWE7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9u LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggNzY1MTg4NjIy OS4uOTdhNDM1MTNjZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRp dGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTkz NSw2ICsxOTM1LDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5z dGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkgKiBkdXJhdGlvbiBvZiB0 aGlzIGV4ZWN1dG9yIHJ1bi4KIAkJCSAqLwogCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5nZVRhYmxl UmVsYXRpb24oZXN0YXRlLCBwaW5mby0+cnRpbmRleCk7CisJCQlpZiAodW5saWtlbHkocGFydHJl bCA9PSBOVUxMIHx8ICFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCQkJcmV0dXJuIE5V TEw7CiAJCQlwYXJ0a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFydHJlbCk7CiAJCQlw YXJ0ZGVzYyA9IFBhcnRpdGlvbkRpcmVjdG9yeUxvb2t1cChlc3RhdGUtPmVzX3BhcnRpdGlvbl9k aXJlY3RvcnksCiAJCQkJCQkJCQkJCQlwYXJ0cmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nu b2RlLmMKaW5kZXggMzRmMjhkZmVjZS4uNzY4OWQzNGRkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1Byb2Nub2RlLmMKQEAgLTEzNiw2ICsxMzYsMTAgQEAgc3RhdGljIGJvb2wgRXhlY1NodXRkb3du Tm9kZV93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KTsKICAqCQkgICdlZmxh Z3MnIGlzIGEgYml0d2lzZSBPUiBvZiBmbGFnIGJpdHMgZGVzY3JpYmVkIGluIGV4ZWN1dG9yLmgK ICAqCiAgKgkJUmV0dXJucyBhIFBsYW5TdGF0ZSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdp dmVuIFBsYW4gbm9kZS4KKyAqCisgKgkJQ2FsbGVycyBzaG91bGQgY2hlY2sgdXBvbiByZXR1cm5p bmcgdGhhdCBFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKQorICoJCXJldHVybnMgdHJ1ZSBiZWZv cmUgY29udGludWluZyBmdXJ0aGVyIHdpdGggaXRzIHByb2Nlc3NpbmcsIGJlY2F1c2UgdGhlCisg KgkJcmV0dXJuZWQgUGxhblN0YXRlIG1pZ2h0IGJlIG9ubHkgcGFydGlhbGx5IHZhbGlkIG90aGVy d2lzZS4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBQbGFuU3RhdGUgKgpAQCAtMzg4LDYgKzM5 Miw5IEBAIEV4ZWNJbml0Tm9kZShQbGFuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkJCWJyZWFrOwogCX0KIAorCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpKQorCQlyZXR1cm4gcmVzdWx0OworCiAJRXhlY1NldEV4ZWNQcm9jTm9kZShyZXN1bHQs IHJlc3VsdC0+RXhlY1Byb2NOb2RlKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmlu ZGV4IDU3MzdmOWY0ZWIuLmVkZjFjMjRlMGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBA IC0xNDYsNiArMTQ2LDcgQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2b2lkKQogCWVzdGF0ZS0+ZXNf dG9wX2VmbGFncyA9IDA7CiAJZXN0YXRlLT5lc19pbnN0cnVtZW50ID0gMDsKIAllc3RhdGUtPmVz X2ZpbmlzaGVkID0gZmFsc2U7CisJZXN0YXRlLT5lc19jYW5jZWxlZCA9IGZhbHNlOwogCiAJZXN0 YXRlLT5lc19leHByY29udGV4dHMgPSBOSUw7CiAKQEAgLTY5MSw2ICs2OTIsOCBAQCBFeGVjUmVs YXRpb25Jc1RhcmdldFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBzY2FucmVsaWQpCiAg KgogICoJCU9wZW4gdGhlIGhlYXAgcmVsYXRpb24gdG8gYmUgc2Nhbm5lZCBieSBhIGJhc2UtbGV2 ZWwgc2NhbiBwbGFuIG5vZGUuCiAgKgkJVGhpcyBzaG91bGQgYmUgY2FsbGVkIGR1cmluZyB0aGUg bm9kZSdzIEV4ZWNJbml0IHJvdXRpbmUuCisgKgorICoJCU5VTEwgaXMgcmV0dXJuZWQgaWYgdGhl IHJlbGF0aW9uIGlzIGZvdW5kIHRvIGhhdmUgYmVlbiBkcm9wcGVkLgogICogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICov CiBSZWxhdGlvbgpAQCAtNzAwLDYgKzcwMyw4IEBAIEV4ZWNPcGVuU2NhblJlbGF0aW9uKEVTdGF0 ZSAqZXN0YXRlLCBJbmRleCBzY2FucmVsaWQsIGludCBlZmxhZ3MpCiAKIAkvKiBPcGVuIHRoZSBy ZWxhdGlvbi4gKi8KIAlyZWwgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgc2Nh bnJlbGlkKTsKKwlpZiAodW5saWtlbHkocmVsID09IE5VTEwgfHwgIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIENvbXBsYWluIGlmIHdlJ3Jl IGF0dGVtcHRpbmcgYSBzY2FuIG9mIGFuIHVuc2Nhbm5hYmxlIHJlbGF0aW9uLCBleGNlcHQKQEAg LTcxNyw2ICs3MjIsMjYgQEAgRXhlY09wZW5TY2FuUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIElu ZGV4IHNjYW5yZWxpZCwgaW50IGVmbGFncykKIAlyZXR1cm4gcmVsOwogfQogCisvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgkJRXhlY09wZW5TY2FuSW5kZXhSZWxhdGlvbgorICoKKyAqCQlPcGVuIHRoZSBpbmRleCBy ZWxhdGlvbiB0byBiZSBzY2FubmVkIGJ5IGFuIGluZGV4IHNjYW4gcGxhbiBub2RlLgorICoJCVRo aXMgc2hvdWxkIGJlIGNhbGxlZCBkdXJpbmcgdGhlIG5vZGUncyBFeGVjSW5pdCByb3V0aW5lLgor ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICovCitSZWxhdGlvbgorRXhlY09wZW5TY2FuSW5kZXhSZWxhdGlvbihFU3Rh dGUgKmVzdGF0ZSwgT2lkIGluZGV4aWQsIGludCBsb2NrbW9kZSkKK3sKKwlSZWxhdGlvbglyZWw7 CisKKwkvKiBPcGVuIHRoZSBpbmRleC4gKi8KKwlyZWwgPSBpbmRleF9vcGVuKGluZGV4aWQsIGxv Y2ttb2RlKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJ ZWxvZyhERUJVRzIsICJDYWNoZWRQbGFuIGludmFsaWRhdGVkIG9uIGxvY2tpbmcgaW5kZXggJXUi LCBpbmRleGlkKTsKKworCXJldHVybiByZWw7Cit9CisKIC8qCiAgKiBFeGVjSW5pdFJhbmdlVGFi bGUKICAqCQlTZXQgdXAgZXhlY3V0b3IncyByYW5nZS10YWJsZS1yZWxhdGVkIGRhdGEKQEAgLTc1 Nyw2ICs3ODIsOSBAQCBFeGVjSW5pdFJhbmdlVGFibGUoRVN0YXRlICplc3RhdGUsIExpc3QgKnJh bmdlVGFibGUsIExpc3QgKnBlcm1JbmZvcykKICAqCQlPcGVuIHRoZSBSZWxhdGlvbiBmb3IgYSBy YW5nZSB0YWJsZSBlbnRyeSwgaWYgbm90IGFscmVhZHkgZG9uZQogICoKICAqIFRoZSBSZWxhdGlv bnMgd2lsbCBiZSBjbG9zZWQgYWdhaW4gaW4gRXhlY0VuZFBsYW4oKS4KKyAqCisgKiBSZXR1cm5l ZCB2YWx1ZSBtYXkgYmUgTlVMTCBpZiB0aGUgcmVsYXRpb24gaXMgYSBjaGlsZCByZWxhdGlvbiB0 aGF0IGlzIG5vdAorICogYWxyZWFkeSBsb2NrZWQuCiAgKi8KIFJlbGF0aW9uCiBFeGVjR2V0UmFu Z2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBydGkpCkBAIC03NzMsNyArODAx LDMxIEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0 aSkKIAogCQlBc3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7CiAKLQkJaWYgKCFJ c1BhcmFsbGVsV29ya2VyKCkpCisJCWlmIChJc1BhcmFsbGVsV29ya2VyKCkgfHwKKwkJCShlc3Rh dGUtPmVzX2NhY2hlZHBsYW4gIT0gTlVMTCAmJiAhcnRlLT5pbkZyb21DbCkpCisJCXsKKwkJCS8q CisJCQkgKiBUYWtlIGEgbG9jayBpZiB3ZSBhcmUgYSBwYXJhbGxlbCB3b3JrZXIgb3IgaWYgdGhp cyBpcyBhIGNoaWxkCisJCQkgKiB0YWJsZSByZWZlcmVuY2VkIGluIGEgY2FjaGVkIHBsYW4uCisJ CQkgKgorCQkJICogUGFyYWxsZWwgd29ya2VycyBuZWVkIHRvIGhhdmUgdGhlaXIgb3duIGxvY2Fs IGxvY2sgb24gdGhlCisJCQkgKiByZWxhdGlvbi4gIFRoaXMgZW5zdXJlcyBzYW5lIGJlaGF2aW9y IGluIGNhc2UgdGhlIHBhcmVudCBwcm9jZXNzCisJCQkgKiBleGl0cyBiZWZvcmUgd2UgZG8uCisJ CQkgKgorCQkJICogV2hlbiBleGVjdXRpbmcgYSBjYWNoZWQgcGxhbiwgY2hpbGQgdGFibGVzIG11 c3QgYmUgbG9ja2VkCisJCQkgKiBoZXJlLCBiZWNhdXNlIHBsYW5jYWNoZS5jIChHZXRDYWNoZWRQ bGFuKCkpIHdvdWxkIG9ubHkgaGF2ZQorCQkJICogbG9ja2VkIHRhYmxlcyBtZW50aW9uZWQgaW4g dGhlIHF1ZXJ5LCB0aGF0IGlzLCB0YWJsZXMgd2hvc2UKKwkJCSAqIFJURXMnIGluRnJvbUNsIGlz IHRydWUuCisJCQkgKgorCQkJICogTm90ZSB0aGF0IHdlIHVzZSB0cnlfdGFibGVfb3BlbigpIGhl cmUsIGJlY2F1c2Ugd2l0aG91dCBhIGxvY2sKKwkJCSAqIGhlbGQgb24gdGhlIHJlbGF0aW9uLCBp dCBtYXkgaGF2ZSBkaXNhcHBlYXJlZCBmcm9tIHVuZGVyIHVzLgorCQkJICovCisJCQlyZWwgPSB0 cnlfdGFibGVfb3BlbihydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwkJCWlmICh1bmxp a2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQkJCWVsb2coREVCVUcyLCAiQ2Fj aGVkUGxhbiBpbnZhbGlkYXRlZCBvbiBsb2NraW5nIHJlbGF0aW9uICV1IiwKKwkJCQkJIHJ0ZS0+ cmVsaWQpOworCQl9CisJCWVsc2UKIAkJewogCQkJLyoKIAkJCSAqIEluIGEgbm9ybWFsIHF1ZXJ5 LCB3ZSBzaG91bGQgYWxyZWFkeSBoYXZlIHRoZSBhcHByb3ByaWF0ZSBsb2NrLApAQCAtNzg2LDE1 ICs4MzgsNiBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRl eCBydGkpCiAJCQlBc3NlcnQocnRlLT5yZWxsb2NrbW9kZSA9PSBBY2Nlc3NTaGFyZUxvY2sgfHwK IAkJCQkgICBDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShyZWwsIHJ0ZS0+cmVsbG9ja21vZGUsIGZh bHNlKSk7CiAJCX0KLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogSWYgd2UgYXJlIGEgcGFyYWxs ZWwgd29ya2VyLCB3ZSBuZWVkIHRvIG9idGFpbiBvdXIgb3duIGxvY2FsCi0JCQkgKiBsb2NrIG9u IHRoZSByZWxhdGlvbi4gIFRoaXMgZW5zdXJlcyBzYW5lIGJlaGF2aW9yIGluIGNhc2UgdGhlCi0J CQkgKiBwYXJlbnQgcHJvY2VzcyBleGl0cyBiZWZvcmUgd2UgZG8uCi0JCQkgKi8KLQkJCXJlbCA9 IHRhYmxlX29wZW4ocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7Ci0JCX0KIAogCQllc3Rh dGUtPmVzX3JlbGF0aW9uc1tydGkgLSAxXSA9IHJlbDsKIAl9CkBAIC04MDIsNiArODQ1LDM4IEBA IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSkKIAly ZXR1cm4gcmVsOwogfQogCisvKgorICogRXhlY0xvY2tBcHBlbmRQYXJ0UmVscworICoJCUxvY2sg bm9uLWxlYWYgcGFydGl0aW9ucyB3aG9zZSBjaGlsZCBwYXJ0aXRpb25zIGFyZSBzY2FubmVkIGJ5 IGEgZ2l2ZW4KKyAqCQlBcHBlbmQvTWVyZ2VBcHBlbmQgbm9kZQorICovCit2b2lkCitFeGVjTG9j a0FwcGVuZFBhcnRSZWxzKEVTdGF0ZSAqZXN0YXRlLCBMaXN0ICphbGxwYXJ0cmVsaWRzKQorewor CUxpc3RDZWxsICpsOworCisJZm9yZWFjaChsLCBhbGxwYXJ0cmVsaWRzKQorCXsKKwkJQml0bWFw c2V0ICpwYXJ0cmVsaWRzID0gbGZpcnN0X25vZGUoQml0bWFwc2V0LCBsKTsKKwkJaW50CQlydGkg PSAtMTsKKworCQl3aGlsZSAoKHJ0aSA9IGJtc19uZXh0X21lbWJlcihwYXJ0cmVsaWRzLCBydGkp KSA+IDApCisJCXsKKwkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IGV4ZWNfcnRfZmV0Y2gocnRpLCBl c3RhdGUpOworCisJCQkvKgorCQkJICogRG9uJ3QgbG9jayBhbnkgcGFydGl0aW9uZWQgdGFibGVz IG1lbnRpb25lZCBpbiB0aGUgcXVlcnksCisJCQkgKiBiZWNhdXNlIHRoZXkgd291bGQgYWxyZWFk eSBoYXZlIGJlZW4gbG9ja2VkIGJlZm9yZSBlbnRlcmluZyB0aGUKKwkJCSAqIGV4ZWN1dG9yLgor CQkJICovCisJCQlpZiAoIXJ0ZS0+aW5Gcm9tQ2wpCisJCQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+ cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQkJZWxzZQorCQkJCUFzc2VydChDaGVja1JlbGF0 aW9uT2lkTG9ja2VkQnlNZShydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlLCB0cnVlKSk7CisJ CX0KKwl9Cit9CisKIC8qCiAgKiBFeGVjSW5pdFJlc3VsdFJlbGF0aW9uCiAgKgkJT3BlbiByZWxh dGlvbiBnaXZlbiBieSB0aGUgcGFzc2VkLWluIFJUIGluZGV4IGFuZCBmaWxsIGl0cwpAQCAtODE3 LDYgKzg5Miw5IEBAIEV4ZWNJbml0UmVzdWx0UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJUmVsYXRpb24JcmVzdWx0UmVsYXRpb25EZXNjOwog CiAJcmVzdWx0UmVsYXRpb25EZXNjID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUs IHJ0aSk7CisJaWYgKHVubGlrZWx5KHJlc3VsdFJlbGF0aW9uRGVzYyA9PSBOVUxMIHx8CisJCQkJ ICFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybjsKIAlJbml0UmVzdWx0UmVs SW5mbyhyZXN1bHRSZWxJbmZvLAogCQkJCQkgIHJlc3VsdFJlbGF0aW9uRGVzYywKIAkJCQkJICBy dGksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IDY5Mjg1NGUyYjMuLjhmNjUyNDJmMzMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC04NjQsNyArODY0LDEzIEBAIHBvc3RxdWVs X3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQog CQkJZWZsYWdzID0gRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlM7CiAJCWVsc2UKIAkJCWVmbGFncyA9 IDA7CQkJLyogZGVmYXVsdCBydW4tdG8tY29tcGxldGlvbiBmbGFncyAqLwotCQlFeGVjdXRvclN0 YXJ0KGVzLT5xZCwgZWZsYWdzKTsKKworCQkvKgorCQkgKiBPSyB0byBpZ25vcmUgdGhlIHJldHVy biB2YWx1ZTsgcGxhbiBjYW4ndCBiZWNvbWUgaW52YWxpZCwKKwkJICogYmVjYXVzZSB0aGVyZSdz IG5vIENhY2hlZFBsYW4uCisJCSAqLworCQlpZiAoIUV4ZWN1dG9yU3RhcnQoZXMtPnFkLCBOVUxM LCBlZmxhZ3MpKQorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgZmFpbHVyZSBydW5uaW5nIEV4 ZWN1dG9yU3RhcnQoKSIpOwogCX0KIAogCWVzLT5zdGF0dXMgPSBGX0VYRUNfUlVOOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUFnZy5jCmluZGV4IDBkZmJhNWNhMTYuLjhjNDBkOGM1MjAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQWdnLmMKQEAgLTMzMDMsNiArMzMwMyw4IEBAIEV4ZWNJbml0QWdnKEFnZyAqbm9kZSwgRVN0 YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lORDsK IAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUoYWdnc3RhdGUp ID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2Vs eSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gYWdnc3RhdGU7CiAKIAkv KgogCSAqIGluaXRpYWxpemUgc291cmNlIHR1cGxlIHR5cGUuCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBw ZW5kLmMKaW5kZXggODZkNzViMWE3ZS4uNzI0MzdmNzI5ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVB cHBlbmQuYwpAQCAtMTMzLDYgKzEzMywyMCBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWFwcGVuZHN0YXRlLT5hc19zeW5jZG9uZSA9 IGZhbHNlOwogCWFwcGVuZHN0YXRlLT5hc19iZWd1biA9IGZhbHNlOwogCisJLyoKKwkgKiBMb2Nr IG5vbi1sZWFmIHBhcnRpdGlvbnMgd2hvc2UgbGVhZiBjaGlsZHJlbiBhcmUgcHJlc2VudCBpbgor CSAqIG5vZGUtPmFwcGVuZHBsYW5zLiAgT25seSBuZWVkIHRvIGRvIHNvIGlmIGV4ZWN1dGluZyBh IGNhY2hlZAorCSAqIHBsYW4sIGJlY2F1c2UgY2hpbGQgdGFibGVzIHByZXNlbnQgaW4gY2FjaGVk IHBsYW5zIGFyZSBub3QKKwkgKiBsb2NrZWQgYmVmb3JlIGV4ZWN1dGlvbi4KKwkgKgorCSAqIFhY WCAtIHNvbWUgb2YgdGhlIG5vbi1sZWFmIHBhcnRpdGlvbnMgbWF5IGFsc28gYmUgbWVudGlvbmVk IGluCisJICogcGFydF9wcnVuZV9pbmZvLCB3aGljaCB3b3VsZCBnZXQgbG9ja2VkIGFnYWluIGlu CisJICogRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKCkgYmVjYXVzZSBpdCBjYWxscworCSAqIEV4 ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oKSB3aGljaCBsb2NrcyBjaGlsZCB0YWJsZXMuCisJICov CisJaWYgKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbikKKwkJRXhlY0xvY2tBcHBlbmRQYXJ0UmVscyhl c3RhdGUsIG5vZGUtPmFsbHBhcnRyZWxpZHMpOworCiAJLyogSWYgcnVuLXRpbWUgcGFydGl0aW9u IHBydW5pbmcgaXMgZW5hYmxlZCwgdGhlbiBzZXQgdGhhdCB1cCBub3cgKi8KIAlpZiAobm9kZS0+ cGFydF9wcnVuZV9pbmZvICE9IE5VTEwpCiAJewpAQCAtMTg1LDggKzE5OSwxMCBAQCBFeGVjSW5p dEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWFwcGVu ZHN0YXRlLT5wcy5yZXN1bHRvcHNzZXQgPSB0cnVlOwogCWFwcGVuZHN0YXRlLT5wcy5yZXN1bHRv cHNmaXhlZCA9IGZhbHNlOwogCi0JYXBwZW5kcGxhbnN0YXRlcyA9IChQbGFuU3RhdGUgKiopIHBh bGxvYyhucGxhbnMgKgotCQkJCQkJCQkJCQkgc2l6ZW9mKFBsYW5TdGF0ZSAqKSk7CisJYXBwZW5k cGxhbnN0YXRlcyA9IChQbGFuU3RhdGUgKiopIHBhbGxvYzAobnBsYW5zICoKKwkJCQkJCQkJCQkJ ICBzaXplb2YoUGxhblN0YXRlICopKTsKKwlhcHBlbmRzdGF0ZS0+YXBwZW5kcGxhbnMgPSBhcHBl bmRwbGFuc3RhdGVzOworCWFwcGVuZHN0YXRlLT5hc19ucGxhbnMgPSBucGxhbnM7CiAKIAkvKgog CSAqIGNhbGwgRXhlY0luaXROb2RlIG9uIGVhY2ggb2YgdGhlIHZhbGlkIHBsYW5zIHRvIGJlIGV4 ZWN1dGVkIGFuZCBzYXZlCkBAIC0yMjEsMTEgKzIzNywxMSBAQCBFeGVjSW5pdEFwcGVuZChBcHBl bmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJZmlyc3R2YWxpZCA9IGo7 CiAKIAkJYXBwZW5kcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3Rh dGUsIGVmbGFncyk7CisJCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp KQorCQkJcmV0dXJuIGFwcGVuZHN0YXRlOwogCX0KIAogCWFwcGVuZHN0YXRlLT5hc19maXJzdF9w YXJ0aWFsX3BsYW4gPSBmaXJzdHZhbGlkOwotCWFwcGVuZHN0YXRlLT5hcHBlbmRwbGFucyA9IGFw cGVuZHBsYW5zdGF0ZXM7Ci0JYXBwZW5kc3RhdGUtPmFzX25wbGFucyA9IG5wbGFuczsKIAogCS8q IEluaXRpYWxpemUgYXN5bmMgc3RhdGUgKi8KIAlhcHBlbmRzdGF0ZS0+YXNfYXN5bmNwbGFucyA9 IGFzeW5jcGxhbnM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw QW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMKaW5kZXggYWUzOTEy MjJiZi4uMTY4YzQ0MDY5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcEFuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwpAQCAt ODksNiArODksOCBAQCBFeGVjSW5pdEJpdG1hcEFuZChCaXRtYXBBbmQgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCXsKIAkJaW5pdE5vZGUgPSAoUGxhbiAqKSBsZmlyc3QobCk7 CiAJCWJpdG1hcHBsYW5zdGF0ZXNbaV0gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwg ZWZsYWdzKTsKKwkJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJ CQlyZXR1cm4gYml0bWFwYW5kc3RhdGU7CiAJCWkrKzsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKaW5kZXggMTlmMThhYjgxNy4uYjEzY2FlMWNiYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTc1NCwxMSArNzU0 LDE1IEBAIEV4ZWNJbml0Qml0bWFwSGVhcFNjYW4oQml0bWFwSGVhcFNjYW4gKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8K IAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNj YW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseShjdXJyZW50UmVsYXRpb24gPT0g TlVMTCB8fCAhRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gc2NhbnN0YXRl OwogCiAJLyoKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3Rh dGUoc2NhbnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZs YWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0 dXJuIHNjYW5zdGF0ZTsKIAogCS8qCiAJICogZ2V0IHRoZSBzY2FuIHR5cGUgZnJvbSB0aGUgcmVs YXRpb24gZGVzY3JpcHRvci4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNj YW4uYwppbmRleCA0NjY5ZThkMGNlLi5mMDRhNTNlOWJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCkBAIC0yNTIsNyArMjUyLDExIEBAIEV4ZWNJbml0Qml0 bWFwSW5kZXhTY2FuKEJpdG1hcEluZGV4U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAKIAkvKiBPcGVuIHRoZSBpbmRleCByZWxhdGlvbi4gKi8KIAlsb2NrbW9kZSA9IGV4 ZWNfcnRfZmV0Y2gobm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVzdGF0ZSktPnJlbGxvY2ttb2RlOwot CWluZGV4c3RhdGUtPmJpc3NfUmVsYXRpb25EZXNjID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlk LCBsb2NrbW9kZSk7CisJaW5kZXhzdGF0ZS0+Ymlzc19SZWxhdGlvbkRlc2MgPSBFeGVjT3BlblNj YW5JbmRleFJlbGF0aW9uKGVzdGF0ZSwKKwkJCQkJCQkJCQkJCQkJCSAgbm9kZS0+aW5kZXhpZCwK KwkJCQkJCQkJCQkJCQkJCSAgbG9ja21vZGUpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gaW5kZXhzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlh bGl6ZSBpbmRleC1zcGVjaWZpYyBzY2FuIHN0YXRlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwT3IuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBP ci5jCmluZGV4IGRlNDM5MjM1ZDIuLjk4MGI2OGRkODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBPci5jCkBAIC05MCw2ICs5MCw4IEBAIEV4ZWNJbml0Qml0bWFwT3IoQml0bWFwT3IgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCXsKIAkJaW5pdE5vZGUgPSAoUGxhbiAq KSBsZmlyc3QobCk7CiAJCWJpdG1hcHBsYW5zdGF0ZXNbaV0gPSBFeGVjSW5pdE5vZGUoaW5pdE5v ZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwkJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkpCisJCQlyZXR1cm4gYml0bWFwb3JzdGF0ZTsKIAkJaSsrOwogCX0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUN1c3RvbS5jCmluZGV4IGU1NTljZDIzNDYuLjJhN2M1ZGNjZDggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQ3VzdG9tLmMKQEAgLTU4LDYgKzU4LDggQEAgRXhlY0luaXRDdXN0b21TY2Fu KEN1c3RvbVNjYW4gKmNzY2FuLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlpZiAoc2Nh bnJlbGlkID4gMCkKIAl7CiAJCXNjYW5fcmVsID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRl LCBzY2FucmVsaWQsIGVmbGFncyk7CisJCWlmICh1bmxpa2VseShzY2FuX3JlbCA9PSBOVUxMIHx8 ICFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCQlyZXR1cm4gY3NzOwogCQljc3MtPnNz LnNzX2N1cnJlbnRSZWxhdGlvbiA9IHNjYW5fcmVsOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlRm9yZWlnbnNjYW4uYwppbmRleCAxMzU3Y2NmM2M5Li45MGQ1ODc4YWUzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYwpAQCAtMTcyLDYgKzE3Miw4IEBAIEV4ZWNJbml0 Rm9yZWlnblNjYW4oRm9yZWlnblNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCWlmIChzY2FucmVsaWQgPiAwKQogCXsKIAkJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5T Y2FuUmVsYXRpb24oZXN0YXRlLCBzY2FucmVsaWQsIGVmbGFncyk7CisJCWlmICh1bmxpa2VseShj dXJyZW50UmVsYXRpb24gPT0gTlVMTCB8fCAhRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQor CQkJcmV0dXJuIHNjYW5zdGF0ZTsKIAkJc2NhbnN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24g PSBjdXJyZW50UmVsYXRpb247CiAJCWZkd3JvdXRpbmUgPSBHZXRGZHdSb3V0aW5lRm9yUmVsYXRp b24oY3VycmVudFJlbGF0aW9uLCB0cnVlKTsKIAl9CkBAIC0yNjMsNiArMjY1LDggQEAgRXhlY0lu aXRGb3JlaWduU2NhbihGb3JlaWduU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJaWYgKG91dGVyUGxhbihub2RlKSkKIAkJb3V0ZXJQbGFuU3RhdGUoc2NhbnN0YXRlKSA9 CiAJCQlFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYg KHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBzY2Fuc3Rh dGU7CiAKIAkvKgogCSAqIFRlbGwgdGhlIEZEVyB0byBpbml0aWFsaXplIHRoZSBzY2FuLgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUdhdGhlci5jCmluZGV4IGNhZTVlYTFmOTIuLjY3NTQ4YWE3YmEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKQEAgLTg0LDYgKzg0LDggQEAgRXhlY0luaXRHYXRoZXIo R2F0aGVyICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKi8KIAlvdXRlck5v ZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUoZ2F0aGVyc3RhdGUpID0gRXhl Y0luaXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gZ2F0aGVyc3RhdGU7CiAJdHVwRGVz YyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxhblN0YXRlKGdhdGhlcnN0YXRlKSk7CiAKIAkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwppbmRleCBiMzZjZDg5ZTdkLi5j ZjBlMDc0MzU5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVy Z2UuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYwpAQCAtMTAz LDYgKzEwMyw4IEBAIEV4ZWNJbml0R2F0aGVyTWVyZ2UoR2F0aGVyTWVyZ2UgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW91dGVyTm9kZSA9IG91dGVyUGxhbihub2Rl KTsKIAlvdXRlclBsYW5TdGF0ZShnbV9zdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2RlLCBl c3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkpCisJCXJldHVybiBnbV9zdGF0ZTsKIAogCS8qCiAJICogTGVhZGVyIG1heSBhY2Nlc3MgRXhl Y1Byb2NOb2RlIHJlc3VsdCBkaXJlY3RseSAoaWYKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVHcm91cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKaW5k ZXggODA3NDI5ZTUwNC4uNmQwZmQ5ZTdiNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUdyb3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKQEAg LTE4NCw2ICsxODQsOCBAQCBFeGVjSW5pdEdyb3VwKEdyb3VwICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQ bGFuU3RhdGUoZ3Jwc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRl LCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQor CQlyZXR1cm4gZ3Jwc3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0 eXBlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKaW5kZXggZGJmNDkyMDM2My4uZGY1NWU2OTdjMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCkBAIC0zODUsNiArMzg1LDggQEAgRXhlY0luaXRIYXNo KEhhc2ggKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUg Y2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShoYXNoc3RhdGUpID0gRXhlY0luaXRO b2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gaGFzaHN0YXRlOwogCiAJLyoKIAkg KiBpbml0aWFsaXplIG91ciByZXN1bHQgc2xvdCBhbmQgdHlwZS4gTm8gbmVlZCB0byBidWlsZCBw cm9qZWN0aW9uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCmluZGV4IDU5MmMwOThiOWYu LjVlMTE5NzU3MDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9p bi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jCkBAIC03NjAsOCAr NzYwLDEyIEBAIEV4ZWNJbml0SGFzaEpvaW4oSGFzaEpvaW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCWhhc2hOb2RlID0gKEhhc2ggKikgaW5uZXJQbGFuKG5vZGUpOwogCiAJ b3V0ZXJQbGFuU3RhdGUoaGpzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2RlLCBlc3RhdGUs IGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJ CXJldHVybiBoanN0YXRlOwogCW91dGVyRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVyUGxh blN0YXRlKGhqc3RhdGUpKTsKIAlpbm5lclBsYW5TdGF0ZShoanN0YXRlKSA9IEV4ZWNJbml0Tm9k ZSgoUGxhbiAqKSBoYXNoTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gaGpzdGF0ZTsKIAlpbm5lckRlc2Mg PSBFeGVjR2V0UmVzdWx0VHlwZShpbm5lclBsYW5TdGF0ZShoanN0YXRlKSk7CiAKIAkvKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCmluZGV4IDAxMGJjZmFmYTgu LmFmNzIzZWE3NTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1l bnRhbFNvcnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0 LmMKQEAgLTEwNDAsNiArMTA0MCw4IEBAIEV4ZWNJbml0SW5jcmVtZW50YWxTb3J0KEluY3JlbWVu dGFsU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogbm9kZXMgbWF5 IGJlIGFibGUgdG8gZG8gc29tZXRoaW5nIG1vcmUgdXNlZnVsLgogCSAqLwogCW91dGVyUGxhblN0 YXRlKGluY3Jzb3J0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRl LCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQor CQlyZXR1cm4gaW5jcnNvcnRzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBzY2FuIHNsb3Qg YW5kIHR5cGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5 c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwppbmRleCA0 ODFkNDc5NzYwLi4xMDlhOTBmZTc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5kZXhvbmx5c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9u bHlzY2FuLmMKQEAgLTUzMSw2ICs1MzEsOCBAQCBFeGVjSW5pdEluZGV4T25seVNjYW4oSW5kZXhP bmx5U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUg c2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0 aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5 KGN1cnJlbnRSZWxhdGlvbiA9PSBOVUxMIHx8ICFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkp CisJCXJldHVybiBpbmRleHN0YXRlOwogCiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0 aW9uID0gY3VycmVudFJlbGF0aW9uOwogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVz YyA9IE5VTEw7CS8qIG5vIGhlYXAgc2NhbiBoZXJlICovCkBAIC01ODMsNyArNTg1LDkgQEAgRXhl Y0luaXRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCiAJLyogT3BlbiB0aGUgaW5kZXggcmVsYXRpb24uICovCiAJbG9ja21vZGUg PSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9k ZTsKLQlpbmRleFJlbGF0aW9uID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7 CisJaW5kZXhSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhbkluZGV4UmVsYXRpb24oZXN0YXRlLCBub2Rl LT5pbmRleGlkLCBsb2NrbW9kZSk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkpCisJCXJldHVybiBpbmRleHN0YXRlOwogCWluZGV4c3RhdGUtPmlvc3NfUmVsYXRp b25EZXNjID0gaW5kZXhSZWxhdGlvbjsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhz Y2FuLmMKaW5kZXggYTgxNzJkOGI4Mi4uZGIyOGFlYjNkNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmRleHNjYW4uYwpAQCAtOTA3LDYgKzkwNyw4IEBAIEV4ZWNJbml0SW5kZXhTY2FuKEluZGV4 U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2Nh biByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9u KGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KGN1 cnJlbnRSZWxhdGlvbiA9PSBOVUxMIHx8ICFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJ CXJldHVybiBpbmRleHN0YXRlOwogCiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9u ID0gY3VycmVudFJlbGF0aW9uOwogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9 IE5VTEw7CS8qIG5vIGhlYXAgc2NhbiBoZXJlICovCkBAIC05NTEsNyArOTUzLDExIEBAIEV4ZWNJ bml0SW5kZXhTY2FuKEluZGV4U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAKIAkvKiBPcGVuIHRoZSBpbmRleCByZWxhdGlvbi4gKi8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRf ZmV0Y2gobm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVzdGF0ZSktPnJlbGxvY2ttb2RlOwotCWluZGV4 c3RhdGUtPmlzc19SZWxhdGlvbkRlc2MgPSBpbmRleF9vcGVuKG5vZGUtPmluZGV4aWQsIGxvY2tt b2RlKTsKKwlpbmRleHN0YXRlLT5pc3NfUmVsYXRpb25EZXNjID0gRXhlY09wZW5TY2FuSW5kZXhS ZWxhdGlvbihlc3RhdGUsCisJCQkJCQkJCQkJCQkJCQkgbm9kZS0+aW5kZXhpZCwKKwkJCQkJCQkJ CQkJCQkJCSBsb2NrbW9kZSk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkpCisJCXJldHVybiBpbmRleHN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIGluZGV4 LXNwZWNpZmljIHNjYW4gc3RhdGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVMaW1pdC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKaW5kZXggZWI3YjZl NTJiZS4uMzY5YzkwNDU3NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxp bWl0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKQEAgLTQ3NSw2ICs0 NzUsOCBAQCBFeGVjSW5pdExpbWl0KExpbWl0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIAkgKi8KIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3Rh dGUobGltaXRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7 CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBs aW1pdHN0YXRlOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIGNoaWxkIGV4cHJlc3Npb25zCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCmluZGV4IDBkMzQ4OTE5NWIuLjkwNzc4NTg0MTMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCkBAIC0zMjIsNiArMzIyLDggQEAgRXhlY0lu aXRMb2NrUm93cyhMb2NrUm93cyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ ICogdGhlbiBpbml0aWFsaXplIG91dGVyIHBsYW4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShscnN0 YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5s aWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIGxyc3RhdGU7CiAK IAkvKiBub2RlIHJldHVybnMgdW5tb2RpZmllZCBzbG90cyBmcm9tIHRoZSBvdXRlciBwbGFuICov CiAJbHJzdGF0ZS0+cHMucmVzdWx0b3Bzc2V0ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1h dGVyaWFsLmMKaW5kZXggODgzZTNmMzkzMy4uOTcyOTYyZDQ0ZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1hdGVyaWFsLmMKQEAgLTIxNCw2ICsyMTQsOCBAQCBFeGVjSW5pdE1hdGVyaWFsKE1hdGVy aWFsICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCW91dGVyUGxhbiA9IG91 dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShtYXRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUo b3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxs VmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBtYXRzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6 ZSByZXN1bHQgdHlwZSBhbmQgc2xvdC4gTm8gbmVlZCB0byBpbml0aWFsaXplIHByb2plY3Rpb24g aW5mbwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKaW5kZXggNjkwZGVlMWRhYS4uNmFhYWI3 NDNiNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCkBAIC05NzMsNiArOTczLDggQEAg RXhlY0luaXRNZW1vaXplKE1lbW9pemUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCiAJb3V0ZXJOb2RlID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKG1zdGF0 ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlr ZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBtc3RhdGU7CiAKIAkv KgogCSAqIEluaXRpYWxpemUgcmV0dXJuIHNsb3QgYW5kIHR5cGUuIE5vIG5lZWQgdG8gaW5pdGlh bGl6ZSBwcm9qZWN0aW9uIGluZm8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMK aW5kZXggMzIzNjQ0NGNmMS4uNmUwMGM5MDkxNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlQXBwZW5kLmMKQEAgLTgxLDYgKzgxLDIwIEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VB cHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCW1lcmdlc3RhdGUtPnBz LnN0YXRlID0gZXN0YXRlOwogCW1lcmdlc3RhdGUtPnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNNZXJn ZUFwcGVuZDsKIAorCS8qCisJICogTG9jayBub24tbGVhZiBwYXJ0aXRpb25zIHdob3NlIGxlYWYg Y2hpbGRyZW4gYXJlIHByZXNlbnQgaW4KKwkgKiBub2RlLT5tZXJnZXBsYW5zLiAgT25seSBuZWVk IHRvIGRvIHNvIGlmIGV4ZWN1dGluZyBhIGNhY2hlZAorCSAqIHBsYW4sIGJlY2F1c2UgY2hpbGQg dGFibGVzIHByZXNlbnQgaW4gY2FjaGVkIHBsYW5zIGFyZSBub3QKKwkgKiBsb2NrZWQgYmVmb3Jl IGV4ZWN1dGlvbi4KKwkgKgorCSAqIFhYWCAtIHNvbWUgb2YgdGhlIG5vbi1sZWFmIHBhcnRpdGlv bnMgbWF5IGFsc28gYmUgbWVudGlvbmVkIGluCisJICogcGFydF9wcnVuZV9pbmZvLCB3aGljaCB3 b3VsZCBnZXQgbG9ja2VkIGFnYWluIGluCisJICogRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKCkg YmVjYXVzZSBpdCBjYWxscworCSAqIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oKSB3aGljaCBs b2NrcyBjaGlsZCB0YWJsZXMuCisJICovCisJaWYgKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbikKKwkJ RXhlY0xvY2tBcHBlbmRQYXJ0UmVscyhlc3RhdGUsIG5vZGUtPmFsbHBhcnRyZWxpZHMpOworCiAJ LyogSWYgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaXMgZW5hYmxlZCwgdGhlbiBzZXQgdGhh dCB1cCBub3cgKi8KIAlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmZvICE9IE5VTEwpCiAJewpAQCAt MTIwLDcgKzEzNCw3IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQltZXJnZXN0YXRlLT5tc19wcnVuZV9zdGF0ZSA9 IE5VTEw7CiAJfQogCi0JbWVyZ2VwbGFuc3RhdGVzID0gKFBsYW5TdGF0ZSAqKikgcGFsbG9jKG5w bGFucyAqIHNpemVvZihQbGFuU3RhdGUgKikpOworCW1lcmdlcGxhbnN0YXRlcyA9IChQbGFuU3Rh dGUgKiopIHBhbGxvYzAobnBsYW5zICogc2l6ZW9mKFBsYW5TdGF0ZSAqKSk7CiAJbWVyZ2VzdGF0 ZS0+bWVyZ2VwbGFucyA9IG1lcmdlcGxhbnN0YXRlczsKIAltZXJnZXN0YXRlLT5tc19ucGxhbnMg PSBucGxhbnM7CiAKQEAgLTE1MSw2ICsxNjUsOCBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdl QXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJUGxhbgkgICAqaW5p dE5vZGUgPSAoUGxhbiAqKSBsaXN0X250aChub2RlLT5tZXJnZXBsYW5zLCBpKTsKIAogCQltZXJn ZXBsYW5zdGF0ZXNbaisrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3Mp OworCQlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJCXJldHVy biBtZXJnZXN0YXRlOwogCX0KIAogCW1lcmdlc3RhdGUtPnBzLnBzX1Byb2pJbmZvID0gTlVMTDsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwppbmRleCA5MjZlNjMxZDg4Li41M2NiMWZm MjA3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCkBAIC0xNDkwLDExICsxNDkw LDE1IEBAIEV4ZWNJbml0TWVyZ2VKb2luKE1lcmdlSm9pbiAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJbWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID0gbm9kZS0+c2tp cF9tYXJrX3Jlc3RvcmU7CiAKIAlvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSA9IEV4ZWNJbml0 Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0dXJuIG1lcmdlc3RhdGU7CiAJb3V0ZXJE ZXNjID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkpOwogCWlu bmVyUGxhblN0YXRlKG1lcmdlc3RhdGUpID0gRXhlY0luaXROb2RlKGlubmVyUGxhbihub2RlKSwg ZXN0YXRlLAogCQkJCQkJCQkJCQkgIG1lcmdlc3RhdGUtPm1qX1NraXBNYXJrUmVzdG9yZSA/CiAJ CQkJCQkJCQkJCSAgZWZsYWdzIDoKIAkJCQkJCQkJCQkJICAoZWZsYWdzIHwgRVhFQ19GTEFHX01B UkspKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0 dXJuIG1lcmdlc3RhdGU7CiAJaW5uZXJEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUoaW5uZXJQbGFu U3RhdGUobWVyZ2VzdGF0ZSkpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMKaW5kZXggMDYyYTc4MGYyOS4uYWZmMDg5Nzk5ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1vZGlmeVRhYmxlLmMKQEAgLTQyNzQsNiArNDI3NCwxMyBAQCBFeGVjSW5pdE1vZGlmeVRh YmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJ CQkgICBsaW5pdGlhbF9pbnQobm9kZS0+cmVzdWx0UmVsYXRpb25zKSk7CiAJfQogCisJLyoKKwkg KiBFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKCkgbWF5IGhhdmUgcmV0dXJuZWQgd2l0aG91dCBpbml0 aWFsaXppbmcKKwkgKiByb290UmVzdWx0UmVsSW5mbyBpZiB0aGUgcGxhbiBnb3QgaW52YWxpZGF0 ZWQsIHNvIGNoZWNrLgorCSAqLworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpKQorCQlyZXR1cm4gbXRzdGF0ZTsKKwogCS8qIHNldCB1cCBlcHFzdGF0ZSB3aXRoIGR1 bW15IHN1YnBsYW4gZGF0YSBmb3IgdGhlIG1vbWVudCAqLwogCUV2YWxQbGFuUXVhbEluaXQoJm10 c3RhdGUtPm10X2VwcXN0YXRlLCBlc3RhdGUsIE5VTEwsIE5JTCwKIAkJCQkJIG5vZGUtPmVwcVBh cmFtLCBub2RlLT5yZXN1bHRSZWxhdGlvbnMpOwpAQCAtNDMwNiw2ICs0MzEzLDEwIEBAIEV4ZWNJ bml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCQl7CiAJCQlFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKGVzdGF0ZSwgcmVzdWx0UmVsSW5m bywgcmVzdWx0UmVsYXRpb24pOwogCisJCQkvKiBTZWUgdGhlIGNvbW1lbnQgYWJvdmUuICovCisJ CQlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJCQlyZXR1cm4g bXRzdGF0ZTsKKwogCQkJLyoKIAkJCSAqIEZvciBjaGlsZCByZXN1bHQgcmVsYXRpb25zLCBzdG9y ZSB0aGUgcm9vdCByZXN1bHQgcmVsYXRpb24KIAkJCSAqIHBvaW50ZXIuICBXZSBkbyBzbyBmb3Ig dGhlIGNvbnZlbmllbmNlIG9mIHBsYWNlcyB0aGF0IHdhbnQgdG8KQEAgLTQzMzIsNiArNDM0Myw4 IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCSAqIE5vdyB3ZSBtYXkgaW5pdGlhbGl6ZSB0aGUgc3VicGxhbi4KIAkg Ki8KIAlvdXRlclBsYW5TdGF0ZShtdHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShzdWJwbGFuLCBlc3Rh dGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkp CisJCXJldHVybiBtdHN0YXRlOwogCiAJLyoKIAkgKiBEbyBhZGRpdGlvbmFsIHBlci1yZXN1bHQt cmVsYXRpb24gaW5pdGlhbGl6YXRpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTmVzdGxvb3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jCmlu ZGV4IDAxZjNkNTZhM2IuLjM0ZWFmYmI2ZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVOZXN0bG9vcC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9v cC5jCkBAIC0yOTQsMTEgKzI5NCwxNSBAQCBFeGVjSW5pdE5lc3RMb29wKE5lc3RMb29wICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiB2YWx1ZXMuCiAJICovCiAJb3V0ZXJQ bGFuU3RhdGUobmxzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUs IGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJ CXJldHVybiBubHN0YXRlOwogCWlmIChub2RlLT5uZXN0UGFyYW1zID09IE5JTCkKIAkJZWZsYWdz IHw9IEVYRUNfRkxBR19SRVdJTkQ7CiAJZWxzZQogCQllZmxhZ3MgJj0gfkVYRUNfRkxBR19SRVdJ TkQ7CiAJaW5uZXJQbGFuU3RhdGUobmxzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5v ZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkpCisJCXJldHVybiBubHN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHJlc3Vs dCBzbG90LCB0eXBlIGFuZCBwcm9qZWN0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVByb2plY3RTZXQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0 U2V0LmMKaW5kZXggY2E5YTVlMmVkMi4uZjgzNDQ5OTQ3OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlUHJvamVjdFNldC5jCkBAIC0yNTQsNiArMjU0LDggQEAgRXhlY0luaXRQcm9qZWN0U2V0KFBy b2plY3RTZXQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxp emUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShzdGF0ZSkgPSBFeGVjSW5pdE5v ZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiBzdGF0ZTsKIAogCS8qCiAJICogd2Ug ZG9uJ3QgdXNlIGlubmVyIHBsYW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVSZWN1cnNpdmV1bmlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVu aW9uLmMKaW5kZXggNzY4MDE0MmM3Yi4uNWRkMzI4NWM0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKQEAgLTI0NCw3ICsyNDQsMTEgQEAgRXhlY0luaXRSZWN1 cnNpdmVVbmlvbihSZWN1cnNpdmVVbmlvbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHJ1 c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gcnVz dGF0ZTsKIAlpbm5lclBsYW5TdGF0ZShydXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShpbm5lclBsYW4o bm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAodW5saWtlbHkoIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKSkKKwkJcmV0dXJuIHJ1c3RhdGU7CiAKIAkvKgogCSAqIElmIGhhc2hpbmcsIHBy ZWNvbXB1dGUgZm1nciBsb29rdXAgZGF0YSBmb3IgaW5uZXIgbG9vcCwgYW5kIGNyZWF0ZSB0aGUK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwppbmRleCBlM2NmYzliNzcyLi43ZDdjMmFhNzg2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCkBAIC0yMDcsNiArMjA3LDggQEAgRXhlY0luaXRS ZXN1bHQoUmVzdWx0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0 aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUocmVzc3RhdGUpID0gRXhl Y0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2Vs eSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gcmVzc3RhdGU7CiAKIAkv KgogCSAqIHdlIGRvbid0IHVzZSBpbm5lciBwbGFuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBs ZXNjYW4uYwppbmRleCA2YWI5MTAwMWJjLi4zYWZkYWVlY2Q3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTYW1wbGVzY2FuLmMKQEAgLTEyMSw2ICsxMjEsOSBAQCBFeGVjSW5pdFNhbXBsZVNjYW4o U2FtcGxlU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUV4ZWNPcGVu U2NhblJlbGF0aW9uKGVzdGF0ZSwKIAkJCQkJCQkgbm9kZS0+c2Nhbi5zY2FucmVsaWQsCiAJCQkJ CQkJIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KHNjYW5zdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0 aW9uID09IE5VTEwgfHwKKwkJCQkgIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkKKwkJcmV0 dXJuIHNjYW5zdGF0ZTsKIAogCS8qIHdlIHdvbid0IHNldCB1cCB0aGUgSGVhcFNjYW5EZXNjIHRp bGwgbGF0ZXIgKi8KIAlzY2Fuc3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRleCBiMDUyNzc1ZTViLi5mN2ZiNjRhNGEyIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKQEAgLTE1Myw2ICsxNTMsOSBAQCBFeGVjSW5p dFNlcVNjYW4oU2VxU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUV4 ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwKIAkJCQkJCQkgbm9kZS0+c2Nhbi5zY2FucmVsaWQs CiAJCQkJCQkJIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KHNjYW5zdGF0ZS0+c3Muc3NfY3VycmVu dFJlbGF0aW9uID09IE5VTEwgfHwKKwkJCQkgIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKSkK KwkJcmV0dXJuIHNjYW5zdGF0ZTsKIAogCS8qIGFuZCBjcmVhdGUgc2xvdCB3aXRoIHRoZSBhcHBy b3ByaWF0ZSByb3d0eXBlICovCiAJRXhlY0luaXRTY2FuVHVwbGVTbG90KGVzdGF0ZSwgJnNjYW5z dGF0ZS0+c3MsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCmluZGV4IGZlMzRiMjEzNGYuLjIyMzFk OGI4MmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCkBAIC01MjgsNiArNTI4LDggQEAgRXhl Y0luaXRTZXRPcChTZXRPcCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaWYg KG5vZGUtPnN0cmF0ZWd5ID09IFNFVE9QX0hBU0hFRCkKIAkJZWZsYWdzICY9IH5FWEVDX0ZMQUdf UkVXSU5EOwogCW91dGVyUGxhblN0YXRlKHNldG9wc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVy UGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGls bFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gc2V0b3BzdGF0ZTsKIAlvdXRlckRlc2MgPSBFeGVj R2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShzZXRvcHN0YXRlKSk7CiAKIAkvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTb3J0LmMKaW5kZXggYWY4NTI0NjRkMC4uZmI3NmU0YzAxYiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlU29ydC5jCkBAIC0yNjMsNiArMjYzLDggQEAgRXhlY0luaXRTb3J0KFNvcnQgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWVmbGFncyAmPSB+KEVYRUNfRkxBR19SRVdJ TkQgfCBFWEVDX0ZMQUdfQkFDS1dBUkQgfCBFWEVDX0ZMQUdfTUFSSyk7CiAKIAlvdXRlclBsYW5T dGF0ZShzb3J0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBl ZmxhZ3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQly ZXR1cm4gc29ydHN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xvdCBhbmQgdHlw ZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwppbmRleCAwYjI2MTIxODNh Li5iNWI1MzhmYTkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVl cnlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCkBA IC0xMjQsNiArMTI0LDggQEAgRXhlY0luaXRTdWJxdWVyeVNjYW4oU3VicXVlcnlTY2FuICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIHN1YnF1ZXJ5CiAJ ICovCiAJc3VicXVlcnlzdGF0ZS0+c3VicGxhbiA9IEV4ZWNJbml0Tm9kZShub2RlLT5zdWJwbGFu LCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkpCisJCXJldHVybiBzdWJxdWVyeXN0YXRlOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNj YW4gc2xvdCBhbmQgdHlwZSAobmVlZGVkIGJ5IEV4ZWNBc3NpZ25TY2FuUHJvamVjdGlvbkluZm8p CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKaW5kZXggNzAyZWU4ODRkMi4u YTc2ODM2ZDAyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdl c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwpAQCAt Mzc3LDYgKzM3Nyw4IEBAIEV4ZWNJbml0VGlkUmFuZ2VTY2FuKFRpZFJhbmdlU2NhbiAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgog CSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9k ZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5KGN1cnJlbnRSZWxhdGlv biA9PSBOVUxMIHx8ICFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiB0aWRy YW5nZXN0YXRlOwogCiAJdGlkcmFuZ2VzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3Vy cmVudFJlbGF0aW9uOwogCXRpZHJhbmdlc3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5V TEw7CS8qIG5vIHRhYmxlIHNjYW4gaGVyZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVRpZHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMK aW5kZXggZjM3NTk1MTY5OS4uMDg4YmFiZjU3MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVRpZHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nh bi5jCkBAIC01MjIsNiArNTIyLDggQEAgRXhlY0luaXRUaWRTY2FuKFRpZFNjYW4gKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkg Ki8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUt PnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICh1bmxpa2VseShjdXJyZW50UmVsYXRpb24g PT0gTlVMTCB8fCAhRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1cm4gdGlkc3Rh dGU7CiAKIAl0aWRzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9u OwogCXRpZHN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOyAvKiBubyBoZWFwIHNj YW4gaGVyZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCmluZGV4IGI4MmQwZTlhZDUuLmNi NDZiMmQ1ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKQEAgLTEzNSw2ICsxMzUsOCBA QCBFeGVjSW5pdFVuaXF1ZShVbmlxdWUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCSAqIHRoZW4gaW5pdGlhbGl6ZSBvdXRlciBwbGFuCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUo dW5pcXVlc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxh Z3MpOworCWlmICh1bmxpa2VseSghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpKQorCQlyZXR1 cm4gdW5pcXVlc3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHNsb3QgYW5kIHR5 cGUuIFVuaXF1ZSBub2RlcyBkbyBubyBwcm9qZWN0aW9ucywgc28KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVXaW5kb3dBZ2cuYwppbmRleCA1NjFkN2U3MzFkLi4xYjk2ZjUxZmU4IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC0yNDY0LDYgKzI0NjQsOCBAQCBFeGVjSW5pdFdpbmRv d0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwog CW91dGVyUGxhbiA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZSh3aW5zdGF0ZSkg PSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKHVubGlrZWx5 KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkpCisJCXJldHVybiB3aW5zdGF0ZTsKIAogCS8q CiAJICogaW5pdGlhbGl6ZSBzb3VyY2UgdHVwbGUgdHlwZSAod2hpY2ggaXMgYWxzbyB0aGUgdHVw bGUgdHlwZSB0aGF0IHdlJ2xsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGku YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCmluZGV4IGQ2NTE2YjFiY2EuLjU4ODVhMWQw NTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL3NwaS5jCkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBpbnQJX1NQSV9leGVj dXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9u cywKIHN0YXRpYyBQYXJhbUxpc3RJbmZvIF9TUElfY29udmVydF9wYXJhbXMoaW50IG5hcmdzLCBP aWQgKmFyZ3R5cGVzLAogCQkJCQkJCQkJCSBEYXR1bSAqVmFsdWVzLCBjb25zdCBjaGFyICpOdWxs cyk7CiAKLXN0YXRpYyBpbnQJX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wg ZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCk7CitzdGF0aWMgaW50CV9TUElfcHF1ZXJ5KFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLCB1aW50NjQgdGNvdW50KTsKIAogc3RhdGljIHZvaWQgX1NQSV9l cnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwogCkBAIC0xNTgxLDYgKzE1ODEsNyBAQCBTUElfY3Vy c29yX29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCVNu YXBzaG90CXNuYXBzaG90OwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKIAlQb3J0YWwJCXBv cnRhbDsKKwlib29sCQlwbGFuX3ZhbGlkOwogCVNQSUNhbGxiYWNrQXJnIHNwaWNhbGxiYWNrYXJn OwogCUVycm9yQ29udGV4dENhbGxiYWNrIHNwaWVycmNvbnRleHQ7CiAKQEAgLTE2MjIsNiArMTYy Myw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFu UHRyIHBsYW4sCiAJX1NQSV9jdXJyZW50LT5wcm9jZXNzZWQgPSAwOwogCV9TUElfY3VycmVudC0+ dHVwdGFibGUgPSBOVUxMOwogCityZXBsYW46CiAJLyogQ3JlYXRlIHRoZSBwb3J0YWwgKi8KIAlp ZiAobmFtZSA9PSBOVUxMIHx8IG5hbWVbMF0gPT0gJ1wwJykKIAl7CkBAIC0xNzY1LDE1ICsxNzY3 LDI0IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFu UHRyIHBsYW4sCiAJfQogCiAJLyoKLQkgKiBTdGFydCBwb3J0YWwgZXhlY3V0aW9uLgorCSAqIFN0 YXJ0IHBvcnRhbCBleGVjdXRpb24uICBJZiB0aGUgcG9ydGFsIGNvbnRhaW5zIGEgY2FjaGVkIHBs YW4sIGl0IG11c3QKKwkgKiBiZSByZWNyZWF0ZWQgaWYgdGhlIGNhY2hlZCBwbGFuIHdhcyBmb3Vu ZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQgd2hlbgorCSAqIGluaXRpYWxpemluZyBvbmUgb2Yg dGhlIHBsYW4gdHJlZXMgY29udGFpbmVkIGluIGl0LgogCSAqLwotCVBvcnRhbFN0YXJ0KHBvcnRh bCwgcGFyYW1MSSwgMCwgc25hcHNob3QpOworCXBsYW5fdmFsaWQgPSBQb3J0YWxTdGFydChwb3J0 YWwsIHBhcmFtTEksIDAsIHNuYXBzaG90LCBjcGxhbik7CiAKIAlBc3NlcnQocG9ydGFsLT5zdHJh dGVneSAhPSBQT1JUQUxfTVVMVElfUVVFUlkpOwogCiAJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0 IHN0YWNrICovCiAJZXJyb3JfY29udGV4dF9zdGFjayA9IHNwaWVycmNvbnRleHQucHJldmlvdXM7 CiAKKwlpZiAoIXBsYW5fdmFsaWQpCisJeworCQlBc3NlcnQoY3BsYW4gIT0gTlVMTCk7CisJCVBv cnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFuOworCX0KKwogCS8qIFBvcCB0 aGUgU1BJIHN0YWNrICovCiAJX1NQSV9lbmRfY2FsbCh0cnVlKTsKIApAQCAtMjU2OCw2ICsyNTc5 LDcgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRl T3B0aW9ucyAqb3B0aW9ucywKIAkJICogUmVwbGFuIGlmIG5lZWRlZCwgYW5kIGluY3JlbWVudCBw bGFuIHJlZmNvdW50LiAgSWYgaXQncyBhIHNhdmVkCiAJCSAqIHBsYW4sIHRoZSByZWZjb3VudCBt dXN0IGJlIGJhY2tlZCBieSB0aGUgcGxhbl9vd25lci4KIAkJICovCityZXBsYW46CiAJCWNwbGFu ID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBvcHRpb25zLT5wYXJhbXMsCiAJCQkJCQkJICBw bGFuX293bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKIApAQCAtMjY3Nyw2ICsyNjg5LDcg QEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0 aW9ucyAqb3B0aW9ucywKIAkJCXsKIAkJCQlRdWVyeURlc2MgICpxZGVzYzsKIAkJCQlTbmFwc2hv dAlzbmFwOworCQkJCWludAkJCWVmbGFnczsKIAogCQkJCWlmIChBY3RpdmVTbmFwc2hvdFNldCgp KQogCQkJCQlzbmFwID0gR2V0QWN0aXZlU25hcHNob3QoKTsKQEAgLTI2OTAsOCArMjcwMywyMCBA QCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRp b25zICpvcHRpb25zLAogCQkJCQkJCQkJCW9wdGlvbnMtPnBhcmFtcywKIAkJCQkJCQkJCQlfU1BJ X2N1cnJlbnQtPnF1ZXJ5RW52LAogCQkJCQkJCQkJCTApOwotCQkJCXJlcyA9IF9TUElfcHF1ZXJ5 KHFkZXNjLCBmaXJlX3RyaWdnZXJzLAotCQkJCQkJCQkgIGNhblNldFRhZyA/IG9wdGlvbnMtPnRj b3VudCA6IDApOworCisJCQkJLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCisJCQkJaWYg KGZpcmVfdHJpZ2dlcnMpCisJCQkJCWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNv bXBsZXRpb24gZmxhZ3MgKi8KKwkJCQllbHNlCisJCQkJCWVmbGFncyA9IEVYRUNfRkxBR19TS0lQ X1RSSUdHRVJTOworCisJCQkJaWYgKCFUcnlFeGVjdXRvclN0YXJ0KHFkZXNjLCBjcGxhbiwgZWZs YWdzKSkKKwkJCQl7CisJCQkJCVJlbGVhc2VDYWNoZWRQbGFuKGNwbGFuLCBwbGFuX293bmVyKTsK KwkJCQkJZ290byByZXBsYW47CisJCQkJfQorCisJCQkJcmVzID0gX1NQSV9wcXVlcnkocWRlc2Ms IGNhblNldFRhZyA/IG9wdGlvbnMtPnRjb3VudCA6IDApOwogCQkJCUZyZWVRdWVyeURlc2MocWRl c2MpOwogCQkJfQogCQkJZWxzZQpAQCAtMjg2NSwxMCArMjg5MCw5IEBAIF9TUElfY29udmVydF9w YXJhbXMoaW50IG5hcmdzLCBPaWQgKmFyZ3R5cGVzLAogfQogCiBzdGF0aWMgaW50Ci1fU1BJX3Bx dWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNv dW50KQorX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIHVpbnQ2NCB0Y291bnQpCiB7 CiAJaW50CQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247Ci0JaW50CQkJZWZsYWdz OwogCWludAkJCXJlczsKIAogCXN3aXRjaCAob3BlcmF0aW9uKQpAQCAtMjkxNSwxNCArMjkzOSw2 IEBAIF9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMs IHVpbnQ2NCB0Y291bnQpCiAJCVJlc2V0VXNhZ2UoKTsKICNlbmRpZgogCi0JLyogU2VsZWN0IGV4 ZWN1dGlvbiBvcHRpb25zICovCi0JaWYgKGZpcmVfdHJpZ2dlcnMpCi0JCWVmbGFncyA9IDA7CQkJ CS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KLQllbHNlCi0JCWVmbGFncyA9 IEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTOwotCi0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVm bGFncyk7Ci0KIAlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCB0 Y291bnQsIHRydWUpOwogCiAJX1NQSV9jdXJyZW50LT5wcm9jZXNzZWQgPSBxdWVyeURlc2MtPmVz dGF0ZS0+ZXNfcHJvY2Vzc2VkOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0 aWwvaW5oZXJpdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jCmluZGV4 IDQ3OTczMTJhZTUuLmJlNmU0ZGRmZGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci91dGlsL2luaGVyaXQuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9pbmhlcml0 LmMKQEAgLTQ5Myw2ICs0OTMsMTMgQEAgZXhwYW5kX3NpbmdsZV9pbmhlcml0YW5jZV9jaGlsZChQ bGFubmVySW5mbyAqcm9vdCwgUmFuZ2VUYmxFbnRyeSAqcGFyZW50cnRlLAogCX0KIAllbHNlCiAJ CWNoaWxkcnRlLT5pbmggPSBmYWxzZTsKKworCS8qCisJICogRmxhZyBjaGlsZCB0YWJsZXMgYXMg aW5kaXJlY3RseSByZWZlcmVuY2VkIGluIHRoZSBxdWVyeS4gVGhpcyBpcyB0bworCSAqIGFsbG93 IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oKSByZWNvZ25pemUgdGhlbSBhcyBpbmhlcml0YW5j ZQorCSAqIGNoaWxkIHRhYmxlcy4KKwkgKi8KKwljaGlsZHJ0ZS0+aW5Gcm9tQ2wgPSBmYWxzZTsK IAljaGlsZHJ0ZS0+c2VjdXJpdHlRdWFscyA9IE5JTDsKIAogCS8qIE5vIHBlcm1pc3Npb24gY2hl Y2tpbmcgZm9yIGNoaWxkIFJURXMuICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv YW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRleCBlOTAxMjAzNDI0 Li5mZTdhZDdiODJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKQEAgLTMzMjcsMTAgKzMzMjcsOSBAQCB0 cmFuc2Zvcm1Mb2NraW5nQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUXVlcnkgKnFyeSwgTG9j a2luZ0NsYXVzZSAqbGMsCiAJCS8qCiAJCSAqIExvY2sgYWxsIHJlZ3VsYXIgdGFibGVzIHVzZWQg aW4gcXVlcnkgYW5kIGl0cyBzdWJxdWVyaWVzLiAgV2UKIAkJICogZXhhbWluZSBpbkZyb21DbCB0 byBleGNsdWRlIGF1dG8tYWRkZWQgUlRFcywgcGFydGljdWxhcmx5IE5FVy9PTEQKLQkJICogaW4g cnVsZXMuICBUaGlzIGlzIGEgYml0IG9mIGFuIGFidXNlIG9mIGEgbW9zdGx5LW9ic29sZXRlIGZs YWcsIGJ1dAotCQkgKiBpdCdzIGNvbnZlbmllbnQuICBXZSBjYW4ndCByZWx5IG9uIHRoZSBuYW1l c3BhY2UgbWVjaGFuaXNtIHRoYXQgaGFzCi0JCSAqIGxhcmdlbHkgcmVwbGFjZWQgaW5Gcm9tQ2ws IHNpbmNlIGZvciBleGFtcGxlIHdlIG5lZWQgdG8gbG9jawotCQkgKiBiYXNlLXJlbGF0aW9uIFJU RXMgZXZlbiBpZiB0aGV5IGFyZSBtYXNrZWQgYnkgdXBwZXIgam9pbnMuCisJCSAqIGluIHJ1bGVz LiAgV2UgY2FuJ3QgcmVseSBvbiB0aGUgbmFtZXNwYWNlIG1lY2hhbmlzbSBzaW5jZSBmb3IKKwkJ ICogZXhhbXBsZSB3ZSBuZWVkIHRvIGxvY2sgYmFzZS1yZWxhdGlvbiBSVEVzIGV2ZW4gaWYgdGhl eSBhcmUgbWFza2VkCisJCSAqIGJ5IHVwcGVyIGpvaW5zLgogCQkgKi8KIAkJaSA9IDA7CiAJCWZv cmVhY2gocnQsIHFyeS0+cnRhYmxlKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDhiYzZiZWExMTMuLjRm MjE5NmFhYWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTEyNDEsOCArMTI0MSwxMSBAQCBleGVjX3Np bXBsZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcpCiAKIAkJLyoKIAkJICogU3RhcnQg dGhlIHBvcnRhbC4gIE5vIHBhcmFtZXRlcnMgaGVyZS4KKwkJICoKKwkJICogUGxhbiBjYW4ndCBi ZWNvbWUgaW52YWxpZCBoZXJlLCBiZWNhdXNlIHRoZXJlJ3Mgbm8gQ2FjaGVkUGxhbi4KIAkJICov Ci0JCVBvcnRhbFN0YXJ0KHBvcnRhbCwgTlVMTCwgMCwgSW52YWxpZFNuYXBzaG90KTsKKwkJaWYg KCFQb3J0YWxTdGFydChwb3J0YWwsIE5VTEwsIDAsIEludmFsaWRTbmFwc2hvdCwgTlVMTCkpCisJ CQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBmYWlsdXJlIHJ1bm5pbmcgUG9ydGFsU3RhcnQoKSIp OwogCiAJCS8qCiAJCSAqIFNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgb3V0cHV0IGZvcm1hdDogdGV4 dCB1bmxlc3Mgd2UgYXJlIGRvaW5nIGEKQEAgLTE3NDcsNiArMTc1MCw3IEBAIGV4ZWNfYmluZF9t ZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2FnZSkKIAkJCQkJCSJjb21tYW5kcyBpZ25vcmVk IHVudGlsIGVuZCBvZiB0cmFuc2FjdGlvbiBibG9jayIpLAogCQkJCSBlcnJkZXRhaWxfYWJvcnQo KSkpOwogCityZXBsYW46CiAJLyoKIAkgKiBDcmVhdGUgdGhlIHBvcnRhbC4gIEFsbG93IHNpbGVu dCByZXBsYWNlbWVudCBvZiBhbiBleGlzdGluZyBwb3J0YWwgb25seQogCSAqIGlmIHRoZSB1bm5h bWVkIHBvcnRhbCBpcyBzcGVjaWZpZWQuCkBAIC0yMDM0LDkgKzIwMzgsMTYgQEAgZXhlY19iaW5k X21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCQlQb3BBY3RpdmVTbmFwc2hvdCgp OwogCiAJLyoKLQkgKiBBbmQgd2UncmUgcmVhZHkgdG8gc3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4K KwkgKiBTdGFydCBwb3J0YWwgZXhlY3V0aW9uLiAgSWYgdGhlIHBvcnRhbCBjb250YWlucyBhIGNh Y2hlZCBwbGFuLCBpdCBtdXN0CisJICogYmUgcmVjcmVhdGVkIGlmIHRoZSBjYWNoZWQgcGxhbiB3 YXMgZm91bmQgdG8gaGF2ZSBiZWVuIGludmFsaWRhdGVkIHdoZW4KKwkgKiBpbml0aWFsaXppbmcg b25lIG9mIHRoZSBwbGFuIHRyZWVzIGNvbnRhaW5lZCBpbiBpdC4KIAkgKi8KLQlQb3J0YWxTdGFy dChwb3J0YWwsIHBhcmFtcywgMCwgSW52YWxpZFNuYXBzaG90KTsKKwlpZiAoIVBvcnRhbFN0YXJ0 KHBvcnRhbCwgcGFyYW1zLCAwLCBJbnZhbGlkU25hcHNob3QsIGNwbGFuKSkKKwl7CisJCUFzc2Vy dChjcGxhbiAhPSBOVUxMKTsKKwkJUG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKwkJZ290byBy ZXBsYW47CisJfQogCiAJLyoKIAkgKiBBcHBseSB0aGUgcmVzdWx0IGZvcm1hdCByZXF1ZXN0cyB0 byB0aGUgcG9ydGFsLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3Ny Yy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggYTFmOGQwM2RiMS4uZWEzM2RhNGMyYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29w L3BxdWVyeS5jCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MveGFjdC5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3ByZXBhcmUuaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjZGVz Yy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3RzdG9yZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAicGdfdHJhY2UuaCIKQEAgLTM0LDggKzM1LDcgQEAKICAqLwog UG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxMOwogCi0KLXN0YXRpYyB2b2lkIFByb2Nlc3NRdWVy eShQbGFubmVkU3RtdCAqcGxhbiwKK3N0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShRdWVyeURlc2Mg KnF1ZXJ5RGVzYywKIAkJCQkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJIFBhcmFt TGlzdEluZm8gcGFyYW1zLAogCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LApAQCAt MTE1LDEzICsxMTUsMTIgQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQogCXBmcmVl KHFkZXNjKTsKIH0KIAotCiAvKgogICogUHJvY2Vzc1F1ZXJ5CiAgKgkJRXhlY3V0ZSBhIHNpbmds ZSBwbGFubmFibGUgcXVlcnkgd2l0aGluIGEgUE9SVEFMX01VTFRJX1FVRVJZLAogICoJCVBPUlRB TF9PTkVfUkVUVVJOSU5HLCBvciBQT1JUQUxfT05FX01PRF9XSVRIIHBvcnRhbAogICoKLSAqCXBs YW46IHRoZSBwbGFuIHRyZWUgZm9yIHRoZSBxdWVyeQorICoJcXVlcnlEZXNjOiBRdWVyeURlc2Mg Y3JlYXRlZCBpbiBQb3J0YWxTdGFydCgpCiAgKglzb3VyY2VUZXh0OiB0aGUgc291cmNlIHRleHQg b2YgdGhlIHF1ZXJ5CiAgKglwYXJhbXM6IGFueSBwYXJhbWV0ZXJzIG5lZWRlZAogICoJZGVzdDog d2hlcmUgdG8gc2VuZCByZXN1bHRzCkBAIC0xMzMsMjYgKzEzMiwxNCBAQCBGcmVlUXVlcnlEZXNj KFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKiBlcnJvcjsgb3RoZXJ3aXNlIHRoZSBleGVjdXRvcidzIG1l bW9yeSB1c2FnZSB3aWxsIGJlIGxlYWtlZC4KICAqLwogc3RhdGljIHZvaWQKLVByb2Nlc3NRdWVy eShQbGFubmVkU3RtdCAqcGxhbiwKK1Byb2Nlc3NRdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywK IAkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAog CQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAogCQkJIERlc3RSZWNlaXZlciAqZGVzdCwK IAkJCSBRdWVyeUNvbXBsZXRpb24gKnFjKQogewotCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKLQot CS8qCi0JICogQ3JlYXRlIHRoZSBRdWVyeURlc2Mgb2JqZWN0Ci0JICovCi0JcXVlcnlEZXNjID0g Q3JlYXRlUXVlcnlEZXNjKHBsYW4sIHNvdXJjZVRleHQsCi0JCQkJCQkJCUdldEFjdGl2ZVNuYXBz aG90KCksIEludmFsaWRTbmFwc2hvdCwKLQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwg MCk7Ci0KLQkvKgotCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZv ciBleGVjdXRpb24KLQkgKi8KLQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7CisJcXVlcnlE ZXNjLT5kZXN0ID0gZGVzdDsKIAogCS8qCiAJICogUnVuIHRoZSBwbGFuIHRvIGNvbXBsZXRpb24u CkBAIC00MjYsMTkgKzQxMywyMiBAQCBGZXRjaFN0YXRlbWVudFRhcmdldExpc3QoTm9kZSAqc3Rt dCkKICAqIHByZXNlbnRseSBpZ25vcmVkIGZvciBub24tUE9SVEFMX09ORV9TRUxFQ1QgcG9ydGFs cyAoaXQncyBvbmx5IGludGVuZGVkCiAgKiB0byBiZSB1c2VkIGZvciBjdXJzb3JzKS4KICAqCi0g KiBPbiByZXR1cm4sIHBvcnRhbCBpcyByZWFkeSB0byBhY2NlcHQgUG9ydGFsUnVuKCkgY2FsbHMs IGFuZCB0aGUgcmVzdWx0Ci0gKiB0dXBkZXNjIChpZiBhbnkpIGlzIGtub3duLgorICogVHJ1ZSBp cyByZXR1cm5lZCBpZiBwb3J0YWwgaXMgcmVhZHkgdG8gYWNjZXB0IFBvcnRhbFJ1bigpIGNhbGxz LCBhbmQgdGhlCisgKiByZXN1bHQgdHVwZGVzYyAoaWYgYW55KSBpcyBrbm93bi4gIEZhbHNlIGlm IHRoZSBwbGFuIHRyZWUgaXMgbm8gbG9uZ2VyCisgKiB2YWxpZCwgaW4gd2hpY2ggY2FzZSwgdGhl IGNhbGxlciBtdXN0IHJldHJ5IGFmdGVyIGdlbmVyYXRpbmcgYSBuZXcKKyAqIENhY2hlZFBsYW4u CiAgKi8KLXZvaWQKK2Jvb2wKIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdElu Zm8gcGFyYW1zLAotCQkJaW50IGVmbGFncywgU25hcHNob3Qgc25hcHNob3QpCisJCQlpbnQgZWZs YWdzLCBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCUNhY2hlZFBsYW4gKmNwbGFuKQogewogCVBvcnRh bAkJc2F2ZUFjdGl2ZVBvcnRhbDsKIAlSZXNvdXJjZU93bmVyIHNhdmVSZXNvdXJjZU93bmVyOwot CU1lbW9yeUNvbnRleHQgc2F2ZVBvcnRhbENvbnRleHQ7CiAJTWVtb3J5Q29udGV4dCBvbGRDb250 ZXh0OwogCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKLQlpbnQJCQlteWVmbGFnczsKKwlpbnQJCQlt eWVmbGFncyA9IDA7CisJYm9vbAkJcGxhbl92YWxpZCA9IHRydWU7CiAKIAlBc3NlcnQoUG9ydGFs SXNWYWxpZChwb3J0YWwpKTsKIAlBc3NlcnQocG9ydGFsLT5zdGF0dXMgPT0gUE9SVEFMX0RFRklO RUQpOwpAQCAtNDQ4LDE1ICs0MzgsMTMgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFy YW1MaXN0SW5mbyBwYXJhbXMsCiAJICovCiAJc2F2ZUFjdGl2ZVBvcnRhbCA9IEFjdGl2ZVBvcnRh bDsKIAlzYXZlUmVzb3VyY2VPd25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOwotCXNhdmVQb3J0 YWxDb250ZXh0ID0gUG9ydGFsQ29udGV4dDsKIAlQR19UUlkoKTsKIAl7CiAJCUFjdGl2ZVBvcnRh bCA9IHBvcnRhbDsKIAkJaWYgKHBvcnRhbC0+cmVzb3duZXIpCiAJCQlDdXJyZW50UmVzb3VyY2VP d25lciA9IHBvcnRhbC0+cmVzb3duZXI7Ci0JCVBvcnRhbENvbnRleHQgPSBwb3J0YWwtPnBvcnRh bENvbnRleHQ7CiAKLQkJb2xkQ29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhQb3J0YWxD b250ZXh0KTsKKwkJb2xkQ29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwb3J0YWwtPnF1 ZXJ5Q29udGV4dCk7CiAKIAkJLyogTXVzdCByZW1lbWJlciBwb3J0YWwgcGFyYW0gbGlzdCwgaWYg YW55ICovCiAJCXBvcnRhbC0+cG9ydGFsUGFyYW1zID0gcGFyYW1zOwpAQCAtNDcyLDYgKzQ2MCw4 IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQlz d2l0Y2ggKHBvcnRhbC0+c3RyYXRlZ3kpCiAJCXsKIAkJCWNhc2UgUE9SVEFMX09ORV9TRUxFQ1Q6 CisJCQljYXNlIFBPUlRBTF9PTkVfUkVUVVJOSU5HOgorCQkJY2FzZSBQT1JUQUxfT05FX01PRF9X SVRIOgogCiAJCQkJLyogTXVzdCBzZXQgc25hcHNob3QgYmVmb3JlIHN0YXJ0aW5nIGV4ZWN1dG9y LiAqLwogCQkJCWlmIChzbmFwc2hvdCkKQEAgLTQ4OSw4ICs0NzksOCBAQCBQb3J0YWxTdGFydChQ b3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkgKi8KIAogCQkJCS8qCi0J CQkJICogQ3JlYXRlIFF1ZXJ5RGVzYyBpbiBwb3J0YWwncyBjb250ZXh0OyBmb3IgdGhlIG1vbWVu dCwgc2V0Ci0JCQkJICogdGhlIGRlc3RpbmF0aW9uIHRvIERlc3ROb25lLgorCQkJCSAqIENyZWF0 ZSBRdWVyeURlc2MgaW4gcG9ydGFsLT5xdWVyeUNvbnRleHQ7IGZvciB0aGUgbW9tZW50LAorCQkJ CSAqIHNldCB0aGUgZGVzdGluYXRpb24gdG8gRGVzdE5vbmUuCiAJCQkJICovCiAJCQkJcXVlcnlE ZXNjID0gQ3JlYXRlUXVlcnlEZXNjKGxpbml0aWFsX25vZGUoUGxhbm5lZFN0bXQsIHBvcnRhbC0+ c3RtdHMpLAogCQkJCQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRleHQsCkBAIC01MDEsMzAgKzQ5MSw0 OSBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJ CQkJCQkJCQkJcG9ydGFsLT5xdWVyeUVudiwKIAkJCQkJCQkJCQkJMCk7CiAKKwkJCQkvKiBSZW1l bWJlciBmb3IgUG9ydGFsUnVuTXVsdGkoKS4gKi8KKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSA9 PSBQT1JUQUxfT05FX1JFVFVSTklORyB8fAorCQkJCQlwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRB TF9PTkVfTU9EX1dJVEgpCisJCQkJCXBvcnRhbC0+cWRlc2NzID0gbGlzdF9tYWtlMShxdWVyeURl c2MpOworCiAJCQkJLyoKIAkJCQkgKiBJZiBpdCdzIGEgc2Nyb2xsYWJsZSBjdXJzb3IsIGV4ZWN1 dG9yIG5lZWRzIHRvIHN1cHBvcnQKIAkJCQkgKiBSRVdJTkQgYW5kIGJhY2t3YXJkcyBzY2FuLCBh cyB3ZWxsIGFzIHdoYXRldmVyIHRoZSBjYWxsZXIKIAkJCQkgKiBtaWdodCd2ZSBhc2tlZCBmb3Iu CiAJCQkJICovCi0JCQkJaWYgKHBvcnRhbC0+Y3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRfU0NS T0xMKQorCQkJCWlmIChwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUICYmCisJ CQkJCShwb3J0YWwtPmN1cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BUX1NDUk9MTCkpCiAJCQkJCW15 ZWZsYWdzID0gZWZsYWdzIHwgRVhFQ19GTEFHX1JFV0lORCB8IEVYRUNfRkxBR19CQUNLV0FSRDsK IAkJCQllbHNlCiAJCQkJCW15ZWZsYWdzID0gZWZsYWdzOwogCiAJCQkJLyoKLQkJCQkgKiBDYWxs IEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCisJCQkJICog Q2FsbCBUcnlFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4g IEEKKwkJCQkgKiBjYWNoZWQgcGxhbiBtYXkgZ2V0IGludmFsaWRhdGVkIGR1cmluZyBwbGFuIGlu dGlhbGl6YXRpb24uCiAJCQkJICovCi0JCQkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZs YWdzKTsKKwkJCQlpZiAoIVRyeUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBjcGxhbiwgbXllZmxh Z3MpKQorCQkJCXsKKwkJCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJCQkJcGxhbl92YWxpZCA9 IGZhbHNlOworCQkJCQlnb3RvIHBsYW5faW5pdF9mYWlsZWQ7CisJCQkJfQogCiAJCQkJLyoKLQkJ CQkgKiBUaGlzIHRlbGxzIFBvcnRhbENsZWFudXAgdG8gc2h1dCBkb3duIHRoZSBleGVjdXRvcgor CQkJCSAqIFRoaXMgdGVsbHMgUG9ydGFsQ2xlYW51cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1dG9y LCB0aG91Z2gKKwkJCQkgKiBub3QgbmVlZGVkIGZvciBxdWVyaWVzIGhhbmRsZWQgYnkgUG9ydGFs UnVuTXVsdGkoKS4KIAkJCQkgKi8KLQkJCQlwb3J0YWwtPnF1ZXJ5RGVzYyA9IHF1ZXJ5RGVzYzsK KwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1NFTEVDVCkKKwkJCQkJcG9y dGFsLT5xdWVyeURlc2MgPSBxdWVyeURlc2M7CiAKIAkJCQkvKgotCQkJCSAqIFJlbWVtYmVyIHR1 cGxlIGRlc2NyaXB0b3IgKGNvbXB1dGVkIGJ5IEV4ZWN1dG9yU3RhcnQpCisJCQkJICogUmVtZW1i ZXIgdHVwbGUgZGVzY3JpcHRvciAoY29tcHV0ZWQgYnkgRXhlY3V0b3JTdGFydCksCisJCQkJICog dGhvdWdoIG1ha2UgaXQgaW5kZXBlbmRlbnQgb2YgUXVlcnlEZXNjIGZvciBxdWVyaWVzIGhhbmRs ZWQKKwkJCQkgKiBieSBQb3J0YWxSdW5NdWx0aSgpLgogCQkJCSAqLwotCQkJCXBvcnRhbC0+dHVw RGVzYyA9IHF1ZXJ5RGVzYy0+dHVwRGVzYzsKKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSAhPSBQ T1JUQUxfT05FX1NFTEVDVCkKKwkJCQkJcG9ydGFsLT50dXBEZXNjID0gQ3JlYXRlVHVwbGVEZXNj Q29weShxdWVyeURlc2MtPnR1cERlc2MpOworCQkJCWVsc2UKKwkJCQkJcG9ydGFsLT50dXBEZXNj ID0gcXVlcnlEZXNjLT50dXBEZXNjOwogCiAJCQkJLyoKIAkJCQkgKiBSZXNldCBjdXJzb3IgcG9z aXRpb24gZGF0YSB0byAic3RhcnQgb2YgcXVlcnkiCkBAIC01MzYsMjkgKzU0NSw2IEBAIFBvcnRh bFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCVBvcEFjdGl2 ZVNuYXBzaG90KCk7CiAJCQkJYnJlYWs7CiAKLQkJCWNhc2UgUE9SVEFMX09ORV9SRVRVUk5JTkc6 Ci0JCQljYXNlIFBPUlRBTF9PTkVfTU9EX1dJVEg6Ci0KLQkJCQkvKgotCQkJCSAqIFdlIGRvbid0 IHN0YXJ0IHRoZSBleGVjdXRvciB1bnRpbCB3ZSBhcmUgdG9sZCB0byBydW4gdGhlCi0JCQkJICog cG9ydGFsLiAgV2UgZG8gbmVlZCB0byBzZXQgdXAgdGhlIHJlc3VsdCB0dXBkZXNjLgotCQkJCSAq LwotCQkJCXsKLQkJCQkJUGxhbm5lZFN0bXQgKnBzdG10OwotCi0JCQkJCXBzdG10ID0gUG9ydGFs R2V0UHJpbWFyeVN0bXQocG9ydGFsKTsKLQkJCQkJcG9ydGFsLT50dXBEZXNjID0KLQkJCQkJCUV4 ZWNDbGVhblR5cGVGcm9tVEwocHN0bXQtPnBsYW5UcmVlLT50YXJnZXRsaXN0KTsKLQkJCQl9Ci0K LQkJCQkvKgotCQkJCSAqIFJlc2V0IGN1cnNvciBwb3NpdGlvbiBkYXRhIHRvICJzdGFydCBvZiBx dWVyeSIKLQkJCQkgKi8KLQkJCQlwb3J0YWwtPmF0U3RhcnQgPSB0cnVlOwotCQkJCXBvcnRhbC0+ YXRFbmQgPSBmYWxzZTsJLyogYWxsb3cgZmV0Y2hlcyAqLwotCQkJCXBvcnRhbC0+cG9ydGFsUG9z ID0gMDsKLQkJCQlicmVhazsKLQogCQkJY2FzZSBQT1JUQUxfVVRJTF9TRUxFQ1Q6CiAKIAkJCQkv KgpAQCAtNTgxLDcgKzU2Nyw3OSBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxp c3RJbmZvIHBhcmFtcywKIAkJCQlicmVhazsKIAogCQkJY2FzZSBQT1JUQUxfTVVMVElfUVVFUlk6 Ci0JCQkJLyogTmVlZCBkbyBub3RoaW5nIG5vdyAqLworCQkJCXsKKwkJCQkJTGlzdENlbGwgICAq bGM7CisJCQkJCWJvb2wJCWZpcnN0ID0gdHJ1ZTsKKworCQkJCQlteWVmbGFncyA9IGVmbGFnczsK KwkJCQkJZm9yZWFjaChsYywgcG9ydGFsLT5zdG10cykKKwkJCQkJeworCQkJCQkJUGxhbm5lZFN0 bXQgKnBsYW4gPSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMpOworCQkJCQkJYm9vbAkJaXNf dXRpbGl0eSA9IChwbGFuLT51dGlsaXR5U3RtdCAhPSBOVUxMKTsKKworCQkJCQkJLyoKKwkJCQkJ CSAqIFB1c2ggdGhlIHNuYXBzaG90IHRvIGJlIHVzZWQgYnkgdGhlIGV4ZWN1dG9yLgorCQkJCQkJ ICovCisJCQkJCQlpZiAoIWlzX3V0aWxpdHkpCisJCQkJCQl7CisJCQkJCQkJLyoKKwkJCQkJCQkg KiBNdXN0IGNvcHkgdGhlIHNuYXBzaG90IGZvciBhbGwgc3RhdGVtZW50cworCQkJCQkJCSAqIGV4 Y2VwdCB0aGVjIGZpcnN0IGFzIHdlJ2xsIG5lZWQgdG8gdXBkYXRlIGl0cworCQkJCQkJCSAqIGNv bW1hbmQgSUQuCisJCQkJCQkJICovCisJCQkJCQkJaWYgKCFmaXJzdCkKKwkJCQkJCQkJUHVzaENv cGllZFNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCQkJCQkJZWxzZQorCQkJ CQkJCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJCQkJ CX0KKworCQkJCQkJLyoKKwkJCQkJCSAqIEZyb20gdGhlIDJuZCBzdGF0ZW1lbnQgb253YXJkcywg dXBkYXRlIHRoZSBjb21tYW5kCisJCQkJCQkgKiBJRCBhbmQgdGhlIHNuYXBzaG90IHRvIG1hdGNo LgorCQkJCQkJICovCisJCQkJCQlpZiAoIWZpcnN0KQorCQkJCQkJeworCQkJCQkJCUNvbW1hbmRD b3VudGVySW5jcmVtZW50KCk7CisJCQkJCQkJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQo KTsKKwkJCQkJCX0KKworCQkJCQkJZmlyc3QgPSBmYWxzZTsKKworCQkJCQkJLyoKKwkJCQkJCSAq IENyZWF0ZSB0aGUgUXVlcnlEZXNjLiAgRGVzdFJlY2VpdmVyIHdpbGwgYmUgc2V0IGluCisJCQkJ CQkgKiBQb3J0YWxSdW5NdWx0aSgpIGJlZm9yZSBjYWxsaW5nIEV4ZWN1dG9yUnVuKCkuCisJCQkJ CQkgKi8KKwkJCQkJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLAorCQkJCQkJCQkJ CQkJCXBvcnRhbC0+c291cmNlVGV4dCwKKwkJCQkJCQkJCQkJCQkhaXNfdXRpbGl0eSA/CisJCQkJ CQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSA6CisJCQkJCQkJCQkJCQkJSW52YWxpZFNuYXBz aG90LAorCQkJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKKwkJCQkJCQkJCQkJCQlOVUxMLAor CQkJCQkJCQkJCQkJCXBhcmFtcywKKwkJCQkJCQkJCQkJCQlwb3J0YWwtPnF1ZXJ5RW52LCAwKTsK KworCQkJCQkJLyogUmVtZW1iZXIgZm9yIFBvcnRhbFJ1bk11bHRpKCkgKi8KKwkJCQkJCXBvcnRh bC0+cWRlc2NzID0gbGFwcGVuZChwb3J0YWwtPnFkZXNjcywgcXVlcnlEZXNjKTsKKworCQkJCQkJ aWYgKGlzX3V0aWxpdHkpCisJCQkJCQkJY29udGludWU7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBD YWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IKKwkJCQkJCSAqIGV4ZWN1 dGlvbi4gIEEgY2FjaGVkIHBsYW4gbWF5IGdldCBpbnZhbGlkYXRlZAorCQkJCQkJICogZHVyaW5n IHBsYW4gaW50aWFsaXphdGlvbi4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFFeGVjdXRvclN0YXJ0 KHF1ZXJ5RGVzYywgY3BsYW4sIG15ZWZsYWdzKSkKKwkJCQkJCXsKKwkJCQkJCQlQb3BBY3RpdmVT bmFwc2hvdCgpOworCQkJCQkJCXBsYW5fdmFsaWQgPSBmYWxzZTsKKwkJCQkJCQlnb3RvIHBsYW5f aW5pdF9mYWlsZWQ7CisJCQkJCQl9CisJCQkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQkJCQl9 CisJCQkJfQorCiAJCQkJcG9ydGFsLT50dXBEZXNjID0gTlVMTDsKIAkJCQlicmVhazsKIAkJfQpA QCAtNTk0LDE5ICs2NTIsMjAgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0 SW5mbyBwYXJhbXMsCiAJCS8qIFJlc3RvcmUgZ2xvYmFsIHZhcnMgYW5kIHByb3BhZ2F0ZSBlcnJv ciAqLwogCQlBY3RpdmVQb3J0YWwgPSBzYXZlQWN0aXZlUG9ydGFsOwogCQlDdXJyZW50UmVzb3Vy Y2VPd25lciA9IHNhdmVSZXNvdXJjZU93bmVyOwotCQlQb3J0YWxDb250ZXh0ID0gc2F2ZVBvcnRh bENvbnRleHQ7CiAKIAkJUEdfUkVfVEhST1coKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogCisJcG9y dGFsLT5zdGF0dXMgPSBQT1JUQUxfUkVBRFk7CisKK3BsYW5faW5pdF9mYWlsZWQ6CiAJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZENvbnRleHQpOwogCiAJQWN0aXZlUG9ydGFsID0gc2F2ZUFjdGl2 ZVBvcnRhbDsKIAlDdXJyZW50UmVzb3VyY2VPd25lciA9IHNhdmVSZXNvdXJjZU93bmVyOwotCVBv cnRhbENvbnRleHQgPSBzYXZlUG9ydGFsQ29udGV4dDsKIAotCXBvcnRhbC0+c3RhdHVzID0gUE9S VEFMX1JFQURZOworCXJldHVybiBwbGFuX3ZhbGlkOwogfQogCiAvKgpAQCAtMTE5Myw4ICsxMjUy LDggQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCSAgIERlc3RSZWNlaXZlciAq ZGVzdCwgRGVzdFJlY2VpdmVyICphbHRkZXN0LAogCQkJICAgUXVlcnlDb21wbGV0aW9uICpxYykK IHsKLQlib29sCQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gZmFsc2U7Ci0JTGlzdENlbGwgICAqc3Rt dGxpc3RfaXRlbTsKKwlib29sCQlob2xkU25hcHNob3RTZXQgPSBmYWxzZTsKKwlMaXN0Q2VsbCAg ICpxZGVzY19pdGVtOwogCiAJLyoKIAkgKiBJZiB0aGUgZGVzdGluYXRpb24gaXMgRGVzdFJlbW90 ZUV4ZWN1dGUsIGNoYW5nZSB0byBEZXN0Tm9uZS4gIFRoZQpAQCAtMTIxNSw5ICsxMjc0LDEwIEBA IFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJICogTG9vcCB0byBoYW5kbGUgdGhlIGlu ZGl2aWR1YWwgcXVlcmllcyBnZW5lcmF0ZWQgZnJvbSBhIHNpbmdsZSBwYXJzZXRyZWUKIAkgKiBi eSBhbmFseXNpcyBhbmQgcmV3cml0ZS4KIAkgKi8KLQlmb3JlYWNoKHN0bXRsaXN0X2l0ZW0sIHBv cnRhbC0+c3RtdHMpCisJZm9yZWFjaChxZGVzY19pdGVtLCBwb3J0YWwtPnFkZXNjcykKIAl7Ci0J CVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBzdG10bGlzdF9p dGVtKTsKKwkJUXVlcnlEZXNjICpxZGVzYyA9IChRdWVyeURlc2MgKikgbGZpcnN0KHFkZXNjX2l0 ZW0pOworCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBxZGVzYy0+cGxhbm5lZHN0bXQ7CiAKIAkJLyoK IAkJICogSWYgd2UgZ290IGEgY2FuY2VsIHNpZ25hbCBpbiBwcmlvciBjb21tYW5kLCBxdWl0CkBA IC0xMjM0LDQ4ICsxMjk0LDMzIEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQlp ZiAobG9nX2V4ZWN1dG9yX3N0YXRzKQogCQkJCVJlc2V0VXNhZ2UoKTsKIAorCQkJLyogUHVzaCB0 aGUgc25hcHNob3QgZm9yIHBsYW5uYWJsZSBxdWVyaWVzLiAqLworCQkJUHVzaEFjdGl2ZVNuYXBz aG90KHFkZXNjLT5zbmFwc2hvdCk7CisKIAkJCS8qCi0JCQkgKiBNdXN0IGFsd2F5cyBoYXZlIGEg c25hcHNob3QgZm9yIHBsYW5uYWJsZSBxdWVyaWVzLiAgRmlyc3QgdGltZQotCQkJICogdGhyb3Vn aCwgdGFrZSBhIG5ldyBzbmFwc2hvdDsgZm9yIHN1YnNlcXVlbnQgcXVlcmllcyBpbiB0aGUKLQkJ CSAqIHNhbWUgcG9ydGFsLCBqdXN0IHVwZGF0ZSB0aGUgc25hcHNob3QncyBjb3B5IG9mIHRoZSBj b21tYW5kCi0JCQkgKiBjb3VudGVyLgorCQkJICogSWYgdG9sZCB0bywgcmVnaXN0ZXIgdGhlIHNu YXBzaG90IGFuZCBzYXZlIGluIHBvcnRhbAorCQkJICoKKwkJCSAqIE5vdGUgdGhhdCB0aGUgY29t bWFuZCBJRCBvZiBxZGVzYy0+c25hcHNob3QgZm9yIDJuZCBxdWVyeQorCQkJICogb253YXJkcyB3 b3VsZCBoYXZlIGJlZW4gdXBkYXRlZCBpbiBQb3J0YWxTdGFydCgpIHRvIGFjY291bnQKKwkJCSAq IGZvciBDQ0koKSBkb25lIGJldHdlZW4gcXVlcmllcywgYnV0IGl0J3Mgb2theSBmb3IgdGhlIGNv bW1hbmQKKwkJCSAqIElEIG9mIHRoZSBhY3RpdmUgc25hcHNob3QgdG8gZGl2ZXJnZSBmcm9tIHdo YXQgaG9sZFNuYXBzaG90CisJCQkgKiBoYXMuCiAJCQkgKi8KLQkJCWlmICghYWN0aXZlX3NuYXBz aG90X3NldCkKKwkJCWlmIChzZXRIb2xkU25hcHNob3QgJiYgIWhvbGRTbmFwc2hvdFNldCkKIAkJ CXsKLQkJCQlTbmFwc2hvdAlzbmFwc2hvdCA9IEdldFRyYW5zYWN0aW9uU25hcHNob3QoKTsKLQot CQkJCS8qIElmIHRvbGQgdG8sIHJlZ2lzdGVyIHRoZSBzbmFwc2hvdCBhbmQgc2F2ZSBpbiBwb3J0 YWwgKi8KLQkJCQlpZiAoc2V0SG9sZFNuYXBzaG90KQotCQkJCXsKLQkJCQkJc25hcHNob3QgPSBS ZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKLQkJCQkJcG9ydGFsLT5ob2xkU25hcHNob3QgPSBz bmFwc2hvdDsKLQkJCQl9Ci0KLQkJCQkvKgotCQkJCSAqIFdlIGNhbid0IGhhdmUgdGhlIGhvbGRT bmFwc2hvdCBhbHNvIGJlIHRoZSBhY3RpdmUgb25lLAotCQkJCSAqIGJlY2F1c2UgVXBkYXRlQWN0 aXZlU25hcHNob3RDb21tYW5kSWQgd291bGQgY29tcGxhaW4uICBTbwotCQkJCSAqIGZvcmNlIGFu IGV4dHJhIHNuYXBzaG90IGNvcHkuICBQbGFpbiBQdXNoQWN0aXZlU25hcHNob3QKLQkJCQkgKiB3 b3VsZCBoYXZlIGNvcGllZCB0aGUgdHJhbnNhY3Rpb24gc25hcHNob3QgYW55d2F5LCBzbyB0aGlz Ci0JCQkJICogb25seSBhZGRzIGEgY29weSBzdGVwIHdoZW4gc2V0SG9sZFNuYXBzaG90IGlzIHRy dWUuICAoSXQncwotCQkJCSAqIG9rYXkgZm9yIHRoZSBjb21tYW5kIElEIG9mIHRoZSBhY3RpdmUg c25hcHNob3QgdG8gZGl2ZXJnZQotCQkJCSAqIGZyb20gd2hhdCBob2xkU25hcHNob3QgaGFzLikK LQkJCQkgKi8KLQkJCQlQdXNoQ29waWVkU25hcHNob3Qoc25hcHNob3QpOwotCi0JCQkJLyoKLQkJ CQkgKiBBcyBmb3IgUE9SVEFMX09ORV9TRUxFQ1QgcG9ydGFscywgaXQgZG9lcyBub3Qgc2VlbQot CQkJCSAqIG5lY2Vzc2FyeSB0byBtYWludGFpbiBwb3J0YWwtPnBvcnRhbFNuYXBzaG90IGhlcmUu Ci0JCQkJICovCi0KLQkJCQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gdHJ1ZTsKKwkJCQlwb3J0YWwt PmhvbGRTbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QocWRlc2MtPnNuYXBzaG90KTsKKwkJCQlo b2xkU25hcHNob3RTZXQgPSB0cnVlOwogCQkJfQotCQkJZWxzZQotCQkJCVVwZGF0ZUFjdGl2ZVNu YXBzaG90Q29tbWFuZElkKCk7CisKKwkJCS8qCisJCQkgKiBBcyBmb3IgUE9SVEFMX09ORV9TRUxF Q1QgcG9ydGFscywgaXQgZG9lcyBub3Qgc2VlbQorCQkJICogbmVjZXNzYXJ5IHRvIG1haW50YWlu IHBvcnRhbC0+cG9ydGFsU25hcHNob3QgaGVyZS4KKwkJCSAqLwogCiAJCQlpZiAocHN0bXQtPmNh blNldFRhZykKIAkJCXsKIAkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5nICovCi0J CQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAorCQkJCVByb2Nlc3NRdWVyeShxZGVzYywKIAkJCQkJCQkg cG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJ CQkgcG9ydGFsLT5xdWVyeUVudiwKQEAgLTEyODQsMTMgKzEzMjksMTUgQEAgUG9ydGFsUnVuTXVs dGkoUG9ydGFsIHBvcnRhbCwKIAkJCWVsc2UKIAkJCXsKIAkJCQkvKiBzdG10IGFkZGVkIGJ5IHJl d3JpdGUgY2Fubm90IHNldCB0YWcgKi8KLQkJCQlQcm9jZXNzUXVlcnkocHN0bXQsCisJCQkJUHJv Y2Vzc1F1ZXJ5KHFkZXNjLAogCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJIHBv cnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LAogCQkJCQkJCSBh bHRkZXN0LCBOVUxMKTsKIAkJCX0KIAorCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwogCQkJaWYg KGxvZ19leGVjdXRvcl9zdGF0cykKIAkJCQlTaG93VXNhZ2UoIkVYRUNVVE9SIFNUQVRJU1RJQ1Mi KTsKIApAQCAtMTMxMSw3ICsxMzU4LDYgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwK IAkJCSAqLwogCQkJaWYgKHBzdG10LT5jYW5TZXRUYWcpCiAJCQl7Ci0JCQkJQXNzZXJ0KCFhY3Rp dmVfc25hcHNob3Rfc2V0KTsKIAkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5nICov CiAJCQkJUG9ydGFsUnVuVXRpbGl0eShwb3J0YWwsIHBzdG10LCBpc1RvcExldmVsLCBmYWxzZSwK IAkJCQkJCQkJIGRlc3QsIHFjKTsKQEAgLTEzNDIsMTkgKzEzODgsOCBAQCBQb3J0YWxSdW5NdWx0 aShQb3J0YWwgcG9ydGFsLAogCQkgKi8KIAkJaWYgKHBvcnRhbC0+c3RtdHMgPT0gTklMKQogCQkJ YnJlYWs7Ci0KLQkJLyoKLQkJICogSW5jcmVtZW50IGNvbW1hbmQgY291bnRlciBiZXR3ZWVuIHF1 ZXJpZXMsIGJ1dCBub3QgYWZ0ZXIgdGhlIGxhc3QKLQkJICogb25lLgotCQkgKi8KLQkJaWYgKGxu ZXh0KHBvcnRhbC0+c3RtdHMsIHN0bXRsaXN0X2l0ZW0pICE9IE5VTEwpCi0JCQlDb21tYW5kQ291 bnRlckluY3JlbWVudCgpOwogCX0KIAotCS8qIFBvcCB0aGUgc25hcHNob3QgaWYgd2UgcHVzaGVk IG9uZS4gKi8KLQlpZiAoYWN0aXZlX3NuYXBzaG90X3NldCkKLQkJUG9wQWN0aXZlU25hcHNob3Qo KTsKLQogCS8qCiAJICogSWYgYSBxdWVyeSBjb21wbGV0aW9uIGRhdGEgd2FzIHN1cHBsaWVkLCB1 c2UgaXQuICBPdGhlcndpc2UgdXNlIHRoZQogCSAqIHBvcnRhbCdzIHF1ZXJ5IGNvbXBsZXRpb24g ZGF0YS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9z cmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4IDRhMjQ2MTM1MzcuLjJkNWJh NjM4ZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwpAQCAtMjAwLDYgKzIwMCwxMyBA QCBDcmVhdGVQb3J0YWwoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBhbGxvd0R1cCwgYm9vbCBkdXBT aWxlbnQpCiAJcG9ydGFsLT5wb3J0YWxDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRv cFBvcnRhbENvbnRleHQsCiAJCQkJCQkJCQkJCQkgICJQb3J0YWxDb250ZXh0IiwKIAkJCQkJCQkJ CQkJCSAgQUxMT0NTRVRfU01BTExfU0laRVMpOworCS8qCisJICogaW5pdGlhbGl6ZSBwb3J0YWwn cyBxdWVyeSBjb250ZXh0IHRvIHN0b3JlIFF1ZXJ5RGVzY3MgY3JlYXRlZCBkdXJpbmcKKwkgKiBQ b3J0YWxTdGFydCgpIGFuZCB0aGVuIHVzZWQgaW4gUG9ydGFsUnVuKCkuCisJICovCisJcG9ydGFs LT5xdWVyeUNvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wUG9ydGFsQ29udGV4dCwK KwkJCQkJCQkJCQkJCSAiUG9ydGFsUXVlcnlDb250ZXh0IiwKKwkJCQkJCQkJCQkJCSBBTExPQ1NF VF9TTUFMTF9TSVpFUyk7CiAKIAkvKiBjcmVhdGUgYSByZXNvdXJjZSBvd25lciBmb3IgdGhlIHBv cnRhbCAqLwogCXBvcnRhbC0+cmVzb3duZXIgPSBSZXNvdXJjZU93bmVyQ3JlYXRlKEN1clRyYW5z YWN0aW9uUmVzb3VyY2VPd25lciwKQEAgLTIyMyw2ICsyMzAsNyBAQCBDcmVhdGVQb3J0YWwoY29u c3QgY2hhciAqbmFtZSwgYm9vbCBhbGxvd0R1cCwgYm9vbCBkdXBTaWxlbnQpCiAKIAkvKiBmb3Ig bmFtZWQgcG9ydGFscyByZXVzZSBwb3J0YWwtPm5hbWUgY29weSAqLwogCU1lbW9yeUNvbnRleHRT ZXRJZGVudGlmaWVyKHBvcnRhbC0+cG9ydGFsQ29udGV4dCwgcG9ydGFsLT5uYW1lWzBdID8gcG9y dGFsLT5uYW1lIDogIjx1bm5hbWVkPiIpOworCU1lbW9yeUNvbnRleHRTZXRJZGVudGlmaWVyKHBv cnRhbC0+cXVlcnlDb250ZXh0LCBwb3J0YWwtPm5hbWVbMF0gPyBwb3J0YWwtPm5hbWUgOiAiPHVu bmFtZWQ+Iik7CiAKIAlyZXR1cm4gcG9ydGFsOwogfQpAQCAtNTkzLDYgKzYwMSw3IEBAIFBvcnRh bERyb3AoUG9ydGFsIHBvcnRhbCwgYm9vbCBpc1RvcENvbW1pdCkKIAogCS8qIHJlbGVhc2Ugc3Vi c2lkaWFyeSBzdG9yYWdlICovCiAJTWVtb3J5Q29udGV4dERlbGV0ZShwb3J0YWwtPnBvcnRhbENv bnRleHQpOworCU1lbW9yeUNvbnRleHREZWxldGUocG9ydGFsLT5xdWVyeUNvbnRleHQpOwogCiAJ LyogcmVsZWFzZSBwb3J0YWwgc3RydWN0IChpdCdzIGluIFRvcFBvcnRhbENvbnRleHQpICovCiAJ cGZyZWUocG9ydGFsKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4u aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCA5YjhiMzUxZDlhLi43ODI5 MmM2OWY5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCkBAIC0xMDEsNyArMTAxLDggQEAgZXh0ZXJu IHZvaWQgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmlu dG8sCiAJCQkJCQkJICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywK IAkJCQkJCQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVu dik7CiAKLWV4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3Rt dCwgSW50b0NsYXVzZSAqaW50bywKK2V4dGVybiBib29sIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRT dG10ICpzdG10LCBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCQkJCSAgIEludG9DbGF1c2UgKmludG8s CiAJCQkJCQkgICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJ CQkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwK IAkJCQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKQEAgLTExOCw2ICsxMTks NyBAQCBleHRlcm4gdm9pZCBFeHBsYWluUXVlcnlQYXJhbWV0ZXJzKEV4cGxhaW5TdGF0ZSAqZXMs IFBhcmFtTGlzdEluZm8gcGFyYW1zLCBpbnQgbQogCiBleHRlcm4gdm9pZCBFeHBsYWluQmVnaW5P dXRwdXQoRXhwbGFpblN0YXRlICplcyk7CiBleHRlcm4gdm9pZCBFeHBsYWluRW5kT3V0cHV0KEV4 cGxhaW5TdGF0ZSAqZXMpOworZXh0ZXJuIHZvaWQgRXhwbGFpblJlc2V0T3V0cHV0KEV4cGxhaW5T dGF0ZSAqZXMpOwogZXh0ZXJuIHZvaWQgRXhwbGFpblNlcGFyYXRlUGxhbnMoRXhwbGFpblN0YXRl ICplcyk7CiAKIGV4dGVybiB2b2lkIEV4cGxhaW5Qcm9wZXJ0eUxpc3QoY29uc3QgY2hhciAqcWxh YmVsLCBMaXN0ICpkYXRhLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dl ci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCmluZGV4IDhhNWE5ZmU2NDIuLmQz ZTZjZjI0Y2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAorKysg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKQEAgLTI1Nyw2ICsyNTcsNyBAQCBleHRl cm4gdm9pZCBFeGVjQVNUcnVuY2F0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLAogCiBleHRlcm4g dm9pZCBBZnRlclRyaWdnZXJCZWdpblhhY3Qodm9pZCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdn ZXJCZWdpblF1ZXJ5KHZvaWQpOworZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyQ2FuY2VsUXVlcnko dm9pZCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJFbmRRdWVyeShFU3RhdGUgKmVzdGF0ZSk7 CiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJGaXJlRGVmZXJyZWQodm9pZCk7CiBleHRlcm4gdm9p ZCBBZnRlclRyaWdnZXJFbmRYYWN0KGJvb2wgaXNDb21taXQpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9y LmgKaW5kZXggOTc3MDc1MmVhMy4uMWRiYzA5OTdhZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5o CkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAibm9kZXMvbG9ja29wdGlvbnMuaCIKICNpbmNs dWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNp bmNsdWRlICJ1dGlscy9wbGFuY2FjaGUuaCIKIAogCiAvKgpAQCAtNzIsNyArNzMsOCBAQAogCiAK IC8qIEhvb2sgZm9yIHBsdWdpbnMgdG8gZ2V0IGNvbnRyb2wgaW4gRXhlY3V0b3JTdGFydCgpICov Ci10eXBlZGVmIHZvaWQgKCpFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSkgKFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKTsKK3R5cGVkZWYgYm9vbCAoKkV4ZWN1dG9yU3RhcnRfaG9va190 eXBlKSAoUXVlcnlEZXNjICpxdWVyeURlc2MsIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCQkJCQkJ CSBpbnQgZWZsYWdzKTsKIGV4dGVybiBQR0RMTElNUE9SVCBFeGVjdXRvclN0YXJ0X2hvb2tfdHlw ZSBFeGVjdXRvclN0YXJ0X2hvb2s7CiAKIC8qIEhvb2sgZm9yIHBsdWdpbnMgdG8gZ2V0IGNvbnRy b2wgaW4gRXhlY3V0b3JSdW4oKSAqLwpAQCAtMTk3LDggKzE5OSwxMCBAQCBFeGVjR2V0SnVua0F0 dHJpYnV0ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgQXR0ck51bWJlciBhdHRubywgYm9vbCAqaXNO dWxsKQogLyoKICAqIHByb3RvdHlwZXMgZnJvbSBmdW5jdGlvbnMgaW4gZXhlY01haW4uYwogICov Ci1leHRlcm4gdm9pZCBFeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZs YWdzKTsKLWV4dGVybiB2b2lkIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVy eURlc2MsIGludCBlZmxhZ3MpOworZXh0ZXJuIGJvb2wgRXhlY3V0b3JTdGFydChRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgQ2FjaGVkUGxhbiAqY3BsYW4sIGludCBlZmxhZ3MpOworZXh0ZXJuIGJvb2wg VHJ5RXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgQ2FjaGVkUGxhbiAqY3BsYW4s IGludCBlZmxhZ3MpOworZXh0ZXJuIGJvb2wgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURl c2MgKnF1ZXJ5RGVzYywgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJCQkJCSAgIGludCBlZmxhZ3Mp OwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQlT Y2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwgdWludDY0IGNvdW50LCBib29sIGV4ZWN1dGVfb25jZSk7 CiBleHRlcm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywK QEAgLTI1Nyw2ICsyNjEsMTUgQEAgZXh0ZXJuIHZvaWQgRXhlY0VuZE5vZGUoUGxhblN0YXRlICpu b2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNTaHV0ZG93bk5vZGUoUGxhblN0YXRlICpub2RlKTsKIGV4 dGVybiB2b2lkIEV4ZWNTZXRUdXBsZUJvdW5kKGludDY0IHR1cGxlc19uZWVkZWQsIFBsYW5TdGF0 ZSAqY2hpbGRfbm9kZSk7CiAKKy8qCisgKiBJcyB0aGUgQ2FjaGVkUGxhbiBpbiBlc19jYWNoZWRw bGFuIHN0aWxsIHZhbGlkPworICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0V4ZWNQbGFuU3RpbGxW YWxpZChFU3RhdGUgKmVzdGF0ZSkKK3sKKwlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFuID09 IE5VTEwgPyB0cnVlIDoKKwkJQ2FjaGVkUGxhblN0aWxsVmFsaWQoZXN0YXRlLT5lc19jYWNoZWRw bGFuKTsKK30KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNQcm9jTm9kZQpAQCAtNTc4LDYgKzU5MSw3 IEBAIGV4dGVybiB2b2lkIEV4ZWNDcmVhdGVTY2FuU2xvdEZyb21PdXRlclBsYW4oRVN0YXRlICpl c3RhdGUsCiBleHRlcm4gYm9vbCBFeGVjUmVsYXRpb25Jc1RhcmdldFJlbGF0aW9uKEVTdGF0ZSAq ZXN0YXRlLCBJbmRleCBzY2FucmVsaWQpOwogCiBleHRlcm4gUmVsYXRpb24gRXhlY09wZW5TY2Fu UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHNjYW5yZWxpZCwgaW50IGVmbGFncyk7Citl eHRlcm4gUmVsYXRpb24gRXhlY09wZW5TY2FuSW5kZXhSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwg T2lkIGluZGV4aWQsIGludCBsb2NrbW9kZSk7CiAKIGV4dGVybiB2b2lkIEV4ZWNJbml0UmFuZ2VU YWJsZShFU3RhdGUgKmVzdGF0ZSwgTGlzdCAqcmFuZ2VUYWJsZSwgTGlzdCAqcGVybUluZm9zKTsK IGV4dGVybiB2b2lkIEV4ZWNDbG9zZVJhbmdlVGFibGVSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUp OwpAQCAtNTkwLDYgKzYwNCw3IEBAIGV4ZWNfcnRfZmV0Y2goSW5kZXggcnRpLCBFU3RhdGUgKmVz dGF0ZSkKIH0KIAogZXh0ZXJuIFJlbGF0aW9uIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0 YXRlICplc3RhdGUsIEluZGV4IHJ0aSk7CitleHRlcm4gdm9pZCBFeGVjTG9ja0FwcGVuZFBhcnRS ZWxzKEVTdGF0ZSAqZXN0YXRlLCBMaXN0ICphbGxwYXJ0cmVsaWRzKTsKIGV4dGVybiB2b2lkIEV4 ZWNJbml0UmVzdWx0UmVsYXRpb24oRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3Vs dFJlbEluZm8sCiAJCQkJCQkJCSAgIEluZGV4IHJ0aSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5k ZXggYzM2NzBmNzE1OC4uNGJjNmQ5ZDQ2MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTYzMSw2 ICs2MzEsOCBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCQkgKiBFeGVjUm93TWFy a3MsIG9yIE5VTEwgaWYgbm9uZSAqLwogCUxpc3QJICAgKmVzX3J0ZXBlcm1pbmZvczsJLyogTGlz dCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwogCVBsYW5uZWRTdG10ICplc19wbGFubmVkc3RtdDsJ LyogbGluayB0byB0b3Agb2YgcGxhbiB0cmVlICovCisJc3RydWN0IENhY2hlZFBsYW4gICplc19j YWNoZWRwbGFuOwkvKiBDYWNoZWRQbGFuIGlmIHBsYW5uZWRzdG10IGlzIGZyb20KKwkJCQkJCQkJ CQkgKiBvbmUsIG9yIE5VTEwgaWYgbm90ICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJ LyogU291cmNlIHRleHQgZnJvbSBRdWVyeURlc2MgKi8KIAogCUp1bmtGaWx0ZXIgKmVzX2p1bmtG aWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZpbHRlciwgaWYgYW55ICovCkBAIC02NzYsNiArNjc4 LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJaW50CQkJZXNfdG9wX2VmbGFnczsJLyogZWZs YWdzIHBhc3NlZCB0byBFeGVjdXRvclN0YXJ0ICovCiAJaW50CQkJZXNfaW5zdHJ1bWVudDsJLyog T1Igb2YgSW5zdHJ1bWVudE9wdGlvbiBmbGFncyAqLwogCWJvb2wJCWVzX2ZpbmlzaGVkOwkvKiB0 cnVlIHdoZW4gRXhlY3V0b3JGaW5pc2ggaXMgZG9uZSAqLworCWJvb2wJCWVzX2NhbmNlbGVkOwkv KiB0cnVlIHdoZW4gZXhlY3V0aW9uIHdhcyBjYW5jZWxlZAorCQkJCQkJCQkgKiB1cG9uIGVuY291 bnRlcmluZyB0aGF0IHBsYW4gd2FzIGludmFsaWRlZAorCQkJCQkJCQkgKiBkdXJpbmcgRXhlY0lu aXROb2RlKCkgKi8KIAogCUxpc3QJICAgKmVzX2V4cHJjb250ZXh0czsJLyogTGlzdCBvZiBFeHBy Q29udGV4dHMgd2l0aGluIEVTdGF0ZSAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggODVh NjJiNTM4ZS4uZThmMTQ5ODJjMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMTAwOSwxMSAr MTAwOSwxNSBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25DbWQKICAqCiAgKgkgIGluRnJvbUNs IG1hcmtzIHRob3NlIHJhbmdlIHZhcmlhYmxlcyB0aGF0IGFyZSBsaXN0ZWQgaW4gdGhlIEZST00g Y2xhdXNlLgogICoJICBJdCdzIGZhbHNlIGZvciBSVEVzIHRoYXQgYXJlIGFkZGVkIHRvIGEgcXVl cnkgYmVoaW5kIHRoZSBzY2VuZXMsIHN1Y2gKLSAqCSAgYXMgdGhlIE5FVyBhbmQgT0xEIHZhcmlh YmxlcyBmb3IgYSBydWxlLCBvciB0aGUgc3VicXVlcmllcyBvZiBhIFVOSU9OLgorICoJICBhcyB0 aGUgTkVXIGFuZCBPTEQgdmFyaWFibGVzIGZvciBhIHJ1bGUsIG9yIHRoZSBzdWJxdWVyaWVzIG9m IGEgVU5JT04sCisgKgkgIG9yIHRoZSBSVEVzIG9mIGluaGVyaXRhbmNlIGNoaWxkIHRhYmxlcyB0 aGF0IGFyZSBhZGRlZCBieSB0aGUgcGxhbm5lci4KICAqCSAgVGhpcyBmbGFnIGlzIG5vdCB1c2Vk IGR1cmluZyBwYXJzaW5nIChleGNlcHQgaW4gdHJhbnNmb3JtTG9ja2luZ0NsYXVzZSwKICAqCSAg cS52Lik7IHRoZSBwYXJzZXIgbm93IHVzZXMgYSBzZXBhcmF0ZSAibmFtZXNwYWNlIiBkYXRhIHN0 cnVjdHVyZSB0bwogICoJICBjb250cm9sIHZpc2liaWxpdHkuICBCdXQgaXQgaXMgbmVlZGVkIGJ5 IHJ1bGV1dGlscy5jIHRvIGRldGVybWluZQotICoJICB3aGV0aGVyIFJURXMgc2hvdWxkIGJlIHNo b3duIGluIGRlY29tcGlsZWQgcXVlcmllcy4KKyAqCSAgd2hldGhlciBSVEVzIHNob3VsZCBiZSBz aG93biBpbiBkZWNvbXBpbGVkIHF1ZXJpZXMuICBUaGUgZXhlY3V0b3IgdXNlcworICoJICB0aGlz IHRvIGFzY2VydGFpbiBpZiBhbiBSVEVfUkVMQVRJT04gZW50cnkgaXMgZm9yIGEgdGFibGUgZXhw bGljaXRseQorICoJICBuYW1lZCBpbiB0aGUgcXVlcnkgb3IgYSBjaGlsZCB0YWJsZSBhZGRlZCBi eSB0aGUgcGxhbm5lci4gIFRoaXMKKyAqCSAgZGlzdGluY3Rpb24gaXMgdml0YWwgd2hlbiBjaGls ZCB0YWJsZXMgaW4gYSBwbGFuIG11c3QgYmUgbG9ja2VkLgogICoKICAqCSAgc2VjdXJpdHlRdWFs cyBpcyBhIGxpc3Qgb2Ygc2VjdXJpdHkgYmFycmllciBxdWFscyAoYm9vbGVhbiBleHByZXNzaW9u cyksCiAgKgkgIHRvIGJlIHRlc3RlZCBpbiB0aGUgbGlzdGVkIG9yZGVyIGJlZm9yZSByZXR1cm5p bmcgYSByb3cgZnJvbSB0aGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvcHF1ZXJ5Lmgg Yi9zcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oCmluZGV4IDA3M2ZiMzIzYmMuLjI3NDUxMDU5OGYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvcHF1ZXJ5LmgKKysrIGIvc3JjL2luY2x1ZGUv dGNvcC9wcXVlcnkuaApAQCAtMjksOCArMjksOSBAQCBleHRlcm4gTGlzdCAqRmV0Y2hQb3J0YWxU YXJnZXRMaXN0KFBvcnRhbCBwb3J0YWwpOwogCiBleHRlcm4gTGlzdCAqRmV0Y2hTdGF0ZW1lbnRU YXJnZXRMaXN0KE5vZGUgKnN0bXQpOwogCi1leHRlcm4gdm9pZCBQb3J0YWxTdGFydChQb3J0YWwg cG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKLQkJCQkJCWludCBlZmxhZ3MsIFNuYXBzaG90 IHNuYXBzaG90KTsKK2V4dGVybiBib29sIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFt TGlzdEluZm8gcGFyYW1zLAorCQkJCQkJaW50IGVmbGFncywgU25hcHNob3Qgc25hcHNob3QsCisJ CQkJCQlDYWNoZWRQbGFuICpjcGxhbik7CiAKIGV4dGVybiB2b2lkIFBvcnRhbFNldFJlc3VsdEZv cm1hdChQb3J0YWwgcG9ydGFsLCBpbnQgbkZvcm1hdHMsCiAJCQkJCQkJCSAgaW50MTYgKmZvcm1h dHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggYi9zcmMvaW5j bHVkZS91dGlscy9wbGFuY2FjaGUuaAppbmRleCBhOTBkZmRmOTA2Li5mODhlMmFiYWQyIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9wbGFuY2FjaGUuaApAQCAtMjIzLDYgKzIyMywyMCBAQCBleHRlcm4gQ2FjaGVkUGxhbiAq R2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgUGFy YW1MaXN0SW5mbyBib3VuZFBhcmFtcywKIAkJCQkJCQkJIFJlc291cmNlT3duZXIgb3duZXIsCiAJ CQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CisKKy8qCisgKiBDYWNoZWRQbGFu U3RpbGxWYWxpZAorICoJCVJldHVybnMgaWYgYSBjYWNoZWQgZ2VuZXJpYyBwbGFuIGlzIHN0aWxs IHZhbGlkCisgKgorICogSW52b2tlZCBieSB0aGUgZXhlY3V0b3IgZm9yIGVhY2ggcmVsYXRpb24g bG9jayBhY3F1aXJlZCBkdXJpbmcgdGhlCisgKiBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGxhbiB0 cmVlIHdpdGhpbiB0aGUgQ2FjaGVkUGxhbi4KKyAqLworc3RhdGljIGlubGluZSBib29sCitDYWNo ZWRQbGFuU3RpbGxWYWxpZChDYWNoZWRQbGFuICpjcGxhbikKK3sKKwlyZXR1cm4gY3BsYW4tPmlz X3ZhbGlkOworfQorCiBleHRlcm4gdm9pZCBSZWxlYXNlQ2FjaGVkUGxhbihDYWNoZWRQbGFuICpw bGFuLCBSZXNvdXJjZU93bmVyIG93bmVyKTsKIAogZXh0ZXJuIGJvb2wgQ2FjaGVkUGxhbkFsbG93 c1NpbXBsZVZhbGlkaXR5Q2hlY2soQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9y dGFsLmgKaW5kZXggMjlmNDk4MjlmMi4uYzA3MDdjNDg3NiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdXRpbHMvcG9ydGFsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKQEAgLTEz OCw2ICsxMzgsOCBAQCB0eXBlZGVmIHN0cnVjdCBQb3J0YWxEYXRhCiAJUXVlcnlDb21wbGV0aW9u IHFjOwkJCS8qIGNvbW1hbmQgY29tcGxldGlvbiBkYXRhIGZvciBleGVjdXRlZCBxdWVyeSAqLwog CUxpc3QJICAgKnN0bXRzOwkJCS8qIGxpc3Qgb2YgUGxhbm5lZFN0bXRzICovCiAJQ2FjaGVkUGxh biAqY3BsYW47CQkJLyogQ2FjaGVkUGxhbiwgaWYgc3RtdHMgYXJlIGZyb20gb25lICovCisJTGlz dAkgICAqcWRlc2NzOwkJCS8qIGxpc3Qgb2YgUXVlcnlEZXNjcyAqLworCU1lbW9yeUNvbnRleHQg cXVlcnlDb250ZXh0OwkvKiBtZW1vcnkgZm9yIFF1ZXJ5RGVzY3MgYW5kIGNoaWxkcmVuICovCiAK IAlQYXJhbUxpc3RJbmZvIHBvcnRhbFBhcmFtczsgLyogcGFyYW1zIHRvIHBhc3MgdG8gcXVlcnkg Ki8KIAlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudjsgLyogZW52aXJvbm1lbnQgZm9yIHF1ZXJ5 ICovCi0tIAoyLjQzLjAKCg== --00000000000049a510061fb86454 Content-Type: application/octet-stream; name="v50-0006-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v50-0006-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lzva9oep5 RnJvbSBjNzJjYTQ3ZDlkOWU5YWY0ZTdiNDIyZDIxN2QxMjZiYzdjZDE0YmE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNiBTZXAgMjAyMyAxNzo1NDoxOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjUw IDYvNl0gVHJhY2sgb3BlbmVkIHJhbmdlIHRhYmxlIHJlbGF0aW9ucyBpbiBhIExpc3QgaW4KIEVT dGF0ZQoKVGhpcyBtYWtlcyBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zIGZhc3RlciB3aGVu IHRoZXJlIGFyZSBtYW55CnJlbGF0aW9ucyBpbiB0aGUgcmFuZ2UgdGFibGUgYnV0IG9ubHkgYSBm ZXcgYXJlIG9wZW5lZCBkdXJpbmcKZXhlY3V0aW9uLCBzdWNoIGFzIHdoZW4gcnVuLXRpbWUgcHJ1 bmluZyBraWNrcyBpbiBvbiBhbiBBcHBlbmQKY29udGFpbmluZyB0aG91c2FuZHMgb2YgcGFydGl0 aW9uIHN1YnBsYW5zLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdr TVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb20K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICB8IDkgKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDMgKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaCAgICB8IDIgKysKIDMgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCAxNjhhYjU1M2FjLi44 ZTA2N2FiN2Q3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTE2ODIsMTIgKzE2ODIsMTMg QEAgRXhlY0Nsb3NlUmVzdWx0UmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKQogdm9pZAogRXhlY0Ns b3NlUmFuZ2VUYWJsZVJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSkKIHsKLQlpbnQJCQlpOworCUxp c3RDZWxsICpsYzsKIAotCWZvciAoaSA9IDA7IGkgPCBlc3RhdGUtPmVzX3JhbmdlX3RhYmxlX3Np emU7IGkrKykKKwlmb3JlYWNoKGxjLCBlc3RhdGUtPmVzX29wZW5lZF9yZWxhdGlvbnMpCiAJewot CQlpZiAoZXN0YXRlLT5lc19yZWxhdGlvbnNbaV0pCi0JCQl0YWJsZV9jbG9zZShlc3RhdGUtPmVz X3JlbGF0aW9uc1tpXSwgTm9Mb2NrKTsKKwkJUmVsYXRpb24gcmVsID0gbGZpcnN0KGxjKTsKKwor CQl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCmluZGV4IGVkZjFjMjRlMGUuLjJlNGU3NDg1NTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCkBAIC04NDAsNiArODQwLDkgQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUg KmVzdGF0ZSwgSW5kZXggcnRpKQogCQl9CiAKIAkJZXN0YXRlLT5lc19yZWxhdGlvbnNbcnRpIC0g MV0gPSByZWw7CisJCWlmIChyZWwgIT0gTlVMTCkKKwkJCWVzdGF0ZS0+ZXNfb3BlbmVkX3JlbGF0 aW9ucyA9IGxhcHBlbmQoZXN0YXRlLT5lc19vcGVuZWRfcmVsYXRpb25zLAorCQkJCQkJCQkJCQkJ ICByZWwpOwogCX0KIAogCXJldHVybiByZWw7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDRiYzZk OWQ0NjEuLjY1NWI2ZjFiOGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02MjcsNiArNjI3LDgg QEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJSW5kZXgJCWVzX3JhbmdlX3RhYmxlX3NpemU7CS8q IHNpemUgb2YgdGhlIHJhbmdlIHRhYmxlIGFycmF5cyAqLwogCVJlbGF0aW9uICAgKmVzX3JlbGF0 aW9uczsJLyogQXJyYXkgb2YgcGVyLXJhbmdlLXRhYmxlLWVudHJ5IFJlbGF0aW9uCiAJCQkJCQkJ CSAqIHBvaW50ZXJzLCBvciBOVUxMIGlmIG5vdCB5ZXQgb3BlbmVkICovCisJTGlzdAkgICAqZXNf b3BlbmVkX3JlbGF0aW9uczsgLyogTGlzdCBvZiBub24tTlVMTCBlbnRyaWVzIGluCisJCQkJCQkJ CQkgICogZXNfcmVsYXRpb25zIGluIG5vIHNwZWNpZmljIG9yZGVyICovCiAJc3RydWN0IEV4ZWNS b3dNYXJrICoqZXNfcm93bWFya3M7CS8qIEFycmF5IG9mIHBlci1yYW5nZS10YWJsZS1lbnRyeQog CQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJrcywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAq ZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0IG9mIFJURVBlcm1pc3Npb25JbmZvICovCi0tIAoyLjQz LjAKCg== --00000000000049a510061fb86454--