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.96) (envelope-from ) id 1vzSRa-0011SC-28 for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Mar 2026 04:42:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vzSRZ-00Digf-0S for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Mar 2026 04:42:13 +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.96) (envelope-from ) id 1vzSRY-00DigT-2I for pgsql-hackers@lists.postgresql.org; Mon, 09 Mar 2026 04:42:13 +0000 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vzSRW-00000001jtL-0qBd for pgsql-hackers@postgresql.org; Mon, 09 Mar 2026 04:42:12 +0000 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-829b2018c94so1083535b3a.0 for ; Sun, 08 Mar 2026 21:42:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773031328; cv=none; d=google.com; s=arc-20240605; b=Z6FXg0xLrs8IvAazVW3Pd+1DRQRyRxp2Ow1wEjKJOLkawTbBSTSAqVQHBwRijv9zG8 Yr9VlWBtVz474I8c+7loUrwb5VqnTy2Is20/JiNKvwsOzGdZnmm4mVwRma7rpnkAljYV /OHXG7PTOjyTkcLGkerASbbb9iM+OZJYnygsJ4Yen640o1Fhg55wXckOI1SqQRVxQkDr FiUgev1Bts7uMtddU8DVqoQ7FVIqJzhpkk6Lgj0Yn8L6KNSQe/kJ/AHvimuzJT95TIzR GJyyWuuzz7iZTN2XJut1ZdyuCRnLwYQP9dRtm8TLJiJNy5kiAAkPJHTg0g3yE7/2MgKc 68zg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=XhTCw4UsakBkdlOleAhT/uRjPjK6t5m2XBXOkT/AG4o=; fh=N8GJbe0s7atNwhKqrKEGUb4r5Rzjx9hcD/zr7MUne/M=; b=W83N2Zk5Wl4ozPK4EvKUlfebpr5QQfuwa6v0wUKKTOpjlEYWvJFL6M4taQ7rihzo2a 1ZeLrkOO3NXIWo69i0KTS0JP8y9wfeFqLiwLnfVygG4YYVQlfq0UwYp1Behaiir7rueJ fpUx5Es9mAiY9JhRKc5t+eZLEtB+qEXkx/I2tuGTvPGDl6P9Yyy99WDbm2UHV5vEKq6V rIr1HcZH1YuA/RDm4cHx39MQxX/tAFqRQ8h58BsMSwxJkDOMo+1Ih1m/FYLHnGpCcDQp xgwBuof3LsgRX7dFhuOED0KC3aOpS8TUpyHQV9mZwaSS/IkK9NEOncKISEvBzO7smNZp m2jw==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773031328; x=1773636128; 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=XhTCw4UsakBkdlOleAhT/uRjPjK6t5m2XBXOkT/AG4o=; b=S9sv+A9ZIQwq4XH9jCSNkYFQjxgqTjW+pzXzz8P9nXYlS3jJszujynSzzrA3ITNk9t hBQ5BygsDWpeQuuDpnb/D5mlRqJA2QFKhy8V7XQb1e1J0IQYvW1bHM9Rfysk6jf4fZUY ndYtwnGk3JDzj4RoB+eLw8JmIoGzLwZUFr2J/0N4giFfgJeHogGWHG64m+5mZD9NgP0z w3MwYvXbIQ5T1dwWE4Fv1AL0JdmNKexzRChVNe08PwxBhA30Ao4xi4fNY6uX4d01xYF3 LtM8Twx/fHk/+SC5Qi3XiIZ+qDiuadblsXZy+pLrE04/9WnjploUA4JFPy24y1G5+Oh2 lFuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773031328; x=1773636128; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=XhTCw4UsakBkdlOleAhT/uRjPjK6t5m2XBXOkT/AG4o=; b=shOh76d+H1rhENn63KZPCsybmH9wAgeeO4EoIsFH0iTMNKOY/VMD81+9C6JgKXT7yE Q/FBfQqdCO841nn4+XNfbTfWke6xvJcr6eWdX/XHnGdYDfHlcpZfxfTA2WOz3TNbyZta K4ymN5S7aPAixR+ZlcWiRAixRSyEhAtx5i0rIBqZvHeSTqFdztaKXp7P8/Jasc9DB5ia aK9AV4g/cg6dmk9teQYZrP8d4tTUraietym68DgqE1LnaCuBTSHxQPBuTRf3sD5x7nZj TCKuqxdit/FcrjIkA6BPiLQ+fXyn6SQDSWN1f0zzgN45ktrIyVm3NSgQVwddghdZh80R IeQA== X-Forwarded-Encrypted: i=1; AJvYcCWmbmRuTmxgjXZoB/2WM8u09c+KSLayWSE36mIo0yRtyR83de/Y1MgT6t2SukvBZnKDGf3UikktlKLndwAi@postgresql.org X-Gm-Message-State: AOJu0Yw/6cELbWjsjjPsMKB4EK+kDJ6Iklb1xxpjj2T5m/aDmODS0abX 7lcm+6KMY7/F6l3dCgfO/OOED0uvYH+Hqkx+lWkayZxXeQQTJzaWMp6OARqybzYKT9I6A22QDDH k+B5uRV0nE80E4bShjqWbNfq8tbG1q1M= X-Gm-Gg: ATEYQzyff9Qsb4ASudwaKBD5f66WreOWG4C9H9xKbR2PMnAAD46/HHTZM2QwF6DVgkB YyMLpoU1sBzWU0xeV+q6KkZru/E19blu+pCYqi2meaKIW4wx6okkQh+r4IaeMDtLCT95/0+07Gg WXLelZsxieK1cQ2ywyVHDR9EEdR6gyPNgv77Cr31FjeIqsZ80GcreYGZZZmVABDuQEhtv0Mte4v tsHCf/CnBi2eQpFa4EvboQ/e/wQXD1LzJ04bfbg6xubhwH3YK3nw4hT0b1u1GHeYd6COlQ6zM2v DiDxjoZm X-Received: by 2002:a05:6a21:6492:b0:398:9dbe:d6ec with SMTP id adf61e73a8af0-3989dbf2702mr491767637.63.1773031328375; Sun, 08 Mar 2026 21:42:08 -0700 (PDT) MIME-Version: 1.0 References: <54c35fb9-da3a-4754-ab8c-46ed0b612465@vondra.me> <684c70d7-180e-461d-9377-600c2db581ba@vondra.me> <605328.1747710381@sss.pgh.pa.us> <691261.1747755511@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Mon, 9 Mar 2026 13:41:51 +0900 X-Gm-Features: AaiRm52zOBhXMuhNRevnT2KKjgAobH6hwn8UEjKSjVy9uzHK6xHGY5sXkt0L7K0 Message-ID: Subject: Re: generic plans and "initial" pruning To: Chao Li Cc: Tom Lane , Tender Wang , Alexander Lakhin , Tomas Vondra , Robert Haas , Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown Content-Type: multipart/mixed; boundary="0000000000008178b5064c9006a7" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008178b5064c9006a7 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Mar 7, 2026 at 6:54=E2=80=AFPM Amit Langote wrote: > Attached is v6 of the patch series. I've been working toward > committing this, so I wanted to lay out the ExecutorPrep() design and > the key trade-offs before doing so. > > When a cached generic plan references a partitioned table, > GetCachedPlan() locks all partitions upfront via > AcquireExecutorLocks(), even those that initial pruning will > eliminate. But initial partition pruning only runs later during > ExecutorStart(). Moving pruning earlier requires some executor setup > (range table, permissions, pruning state), and ExecutorPrep() is the > vehicle for that. Unlike the approach reverted in last May, this > keeps the CachedPlan itself unchanged -- all per-execution state flows > through a separate CachedPlanPrepData that the caller provides. > > The approach also keeps GetCachedPlan()'s interface > backward-compatible: the new CachedPlanPrepData argument is optional. > If a caller passes NULL, all partitions are locked as before and > nothing changes. This means existing callers and any new code that > calls GetCachedPlan() without caring about pruning-aware locking just > works. > > The risk is on the other side: if a caller does pass a > CachedPlanPrepData, GetCachedPlan() will lock only the surviving > partitions and populate prep_estates with the EStates that > ExecutorPrep() created. The caller then must make those EStates > available to ExecutorStart() -- via QueryDesc->estate, > portal->prep_estates, or the equivalent path for SPI and SQL > functions. If it fails to do so, ExecutorStart() will call > ExecutorPrep() again, which may compute different pruning results than > the original call, potentially expecting locks on relations that were > never acquired. The executor would then operate on relations it > doesn't hold locks on. > > So the contract is: if you opt in to pruning-aware locking by passing > CachedPlanPrepData, you must complete the pipeline by delivering the > prep EStates to the executor. In the current patch, all the call sites > that pass a CachedPlanPrepData (portals, SPI, EXECUTE, SQL functions, > EXPLAIN) do thread the EStates through correctly, and I've tried to > make the plumbing straightforward enough that it's hard to get wrong. > But it is a new invariant that didn't exist before, and a caller that > gets it wrong would fail silently rather than with an obvious error. > > To catch such violations, I've added a debug-only check in > standard_ExecutorStart() that fires when no prep EState was provided. > It iterates over the plan's rtable and verifies that every lockable > relation is actually locked. It should always be true if > AcquireExecutorLocks() locked everything, but would fail if > pruning-aware locking happened upstream and the caller dropped the > prep EState. The check is skipped in parallel workers, which acquire > relation locks lazily in ExecGetRangeTableRelation(). > > + if (queryDesc->estate =3D=3D NULL) > + { > +#ifdef USE_ASSERT_CHECKING > + if (!IsParallelWorker()) > + { > + ListCell *lc; > + > + foreach(lc, queryDesc->plannedstmt->rtable) > + { > + RangeTblEntry *rte =3D lfirst_node(RangeTblEntry, lc); > + > + if (rte->rtekind =3D=3D RTE_RELATION || > + (rte->rtekind =3D=3D RTE_SUBQUERY && rte->relid !=3D= InvalidOid)) > + Assert(CheckRelationOidLockedByMe(rte->relid, > + rte->rellockmode, > + true)); > + } > + } > +#endif > + queryDesc->estate =3D ExecutorPrep(queryDesc->plannedstmt, > + queryDesc->params, > + CurrentResourceOwner, > + true, > + eflags); > + } > +#ifdef USE_ASSERT_CHECKING > + else > + { > + /* > + * A prep EState was provided, meaning pruning-aware locking > + * should have locked at least the unpruned relations. > + */ > + if (!IsParallelWorker()) > + { > + int rtindex =3D -1; > + > + while ((rtindex =3D > bms_next_member(queryDesc->estate->es_unpruned_relids, > + rtindex)) >=3D 0) > + { > + RangeTblEntry *rte =3D exec_rt_fetch(rtindex, queryDesc-= >estate); > + > + Assert(rte->rtekind =3D=3D RTE_RELATION || > + (rte->rtekind =3D=3D RTE_SUBQUERY && > + rte->relid !=3D InvalidOid)); > + Assert(CheckRelationOidLockedByMe(rte->relid, > + rte->rellockmode, true= )); > + } > + } > + } > +#endif > > So the invariant is: if no prep EState was provided, every relation in > the plan is locked; if one was provided, at least the unpruned > relations are locked. Both are checked in assert builds. > > I think this covers the main concerns, but I may be missing something. > If anyone sees a problem with this approach, I'd like to hear about > it. Here's v7. Some plancache.c changes that I'd made were in the wrong patch in v6; this version puts them where they belong. --=20 Thanks, Amit Langote --0000000000008178b5064c9006a7 Content-Type: application/octet-stream; name="v7-0003-Add-test-for-partition-lock-behavior-with-generic.patch" Content-Disposition: attachment; filename="v7-0003-Add-test-for-partition-lock-behavior-with-generic.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmip259v3 RnJvbSA1ODE3OWJkMGQzNzMwZGJkMWZkYmIwYmQ5YzYyNGRjN2FlNzcwODMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTAgRmViIDIwMjYgMjI6MDA6MzIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY3 IDMvNl0gQWRkIHRlc3QgZm9yIHBhcnRpdGlvbiBsb2NrIGJlaGF2aW9yIHdpdGggZ2VuZXJpYwog Y2FjaGVkIHBsYW5zCgpBZGQgYSByZWdyZXNzaW9uIHRlc3QgdGhhdCBpbnNwZWN0cyBwZ19sb2Nr cyB0byB2ZXJpZnkgd2hpY2ggY2hpbGQKcGFydGl0aW9ucyBhcmUgbG9ja2VkIHdoZW4gZXhlY3V0 aW5nIGEgcHJlcGFyZWQgc3RhdGVtZW50IHRoYXQgdXNlcwphIGdlbmVyaWMgY2FjaGVkIHBsYW4u CgpUd28gY2FzZXMgYXJlIHRlc3RlZDogb25lIHdpdGggZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5n IG9uIGFuZCBvbmUKd2l0aCBpdCBvZmYuICBDdXJyZW50bHkgYm90aCBjYXNlcyBsb2NrIGFsbCBj aGlsZCBwYXJ0aXRpb25zLCBiZWNhdXNlCkdldENhY2hlZFBsYW4oKSBhY3F1aXJlcyBleGVjdXRp b24gbG9ja3Mgb24gZXZlcnkgcmVsYXRpb24gaW4gdGhlCnBsYW4gcmVnYXJkbGVzcyBvZiBwcnVu aW5nLgoKQSBzdWJzZXF1ZW50IGNvbW1pdCB0aGF0IGFkZHMgcHJ1bmluZy1hd2FyZSBsb2NraW5n IHdpbGwgdXBkYXRlIHRoZQpleHBlY3RlZCBvdXRwdXQgZm9yIHRoZSBwcnVuaW5nLWVuYWJsZWQg Y2FzZSwgc2hvd2luZyB0aGF0IG9ubHkgdGhlCnN1cnZpdmluZyBwYXJ0aXRpb24gaXMgbG9ja2Vk LgotLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dCB8IDgz ICsrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVu ZS5zcWwgICAgICB8IDU1ICsrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxMzggaW5zZXJ0 aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X3BydW5lLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91 dAppbmRleCBkZWFjZGQ3NTgwNy4uMzlkYWI4ZmNjMDUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKQEAgLTQ4MjQsMyArNDgyNCw4NiBAQCBzZWxl Y3QgbWluKGEpIG92ZXIgKHBhcnRpdGlvbiBieSBhIG9yZGVyIGJ5IGEpIGZyb20gcGFydF9hYmMg d2hlcmUgYSA+PSBzdGFibGVfbwogCiBkcm9wIHZpZXcgcGFydF9hYmNfdmlldzsKIGRyb3AgdGFi bGUgcGFydF9hYmM7CistLQorLS0gVmVyaWZ5IHRoYXQgcHJ1bmluZy1hd2FyZSBsb2NraW5nIHNr aXBzIHBydW5lZCBwYXJ0aXRpb25zCistLSB3aGVuIHJldXNpbmcgYSBnZW5lcmljIGNhY2hlZCBw bGFuLgorLS0KK3NldCBwbGFuX2NhY2hlX21vZGUgdG8gZm9yY2VfZ2VuZXJpY19wbGFuOworY3Jl YXRlIHRhYmxlIHBydW5lbG9ja19wIChhIGludCkgcGFydGl0aW9uIGJ5IGxpc3QgKGEpOworY3Jl YXRlIHRhYmxlIHBydW5lbG9ja19wMSBwYXJ0aXRpb24gb2YgcHJ1bmVsb2NrX3AgZm9yIHZhbHVl cyBpbiAoMSk7CitjcmVhdGUgdGFibGUgcHJ1bmVsb2NrX3AyIHBhcnRpdGlvbiBvZiBwcnVuZWxv Y2tfcCBmb3IgdmFsdWVzIGluICgyKTsKK2NyZWF0ZSB0YWJsZSBwcnVuZWxvY2tfcDMgcGFydGl0 aW9uIG9mIHBydW5lbG9ja19wIGZvciB2YWx1ZXMgaW4gKDMpOworcHJlcGFyZSBwcnVuZWxvY2tf cSAoaW50KSBhcyBzZWxlY3QgKiBmcm9tIHBydW5lbG9ja19wIHdoZXJlIGEgPSAkMTsKKy0tIEZv cmNlIGdlbmVyaWMgcGxhbiBjcmVhdGlvbgorZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHBy dW5lbG9ja19xKDEpOworICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFw cGVuZAorICAgU3VicGxhbnMgUmVtb3ZlZDogMgorICAgLT4gIFNlcSBTY2FuIG9uIHBydW5lbG9j a19wMSBwcnVuZWxvY2tfcF8xCisgICAgICAgICBGaWx0ZXI6IChhID0gJDEpCisoNCByb3dzKQor CistLSBFeGVjdXRlIGFuZCBjaGVjayB3aGljaCBjaGlsZCBwYXJ0aXRpb25zIGFyZSBsb2NrZWQK K2JlZ2luOworZXhlY3V0ZSBwcnVuZWxvY2tfcSgxKTsKKyBhIAorLS0tCisoMCByb3dzKQorCitz ZWxlY3QgYy5yZWxuYW1lCisgIGZyb20gcGdfbG9ja3MgbAorICBqb2luIHBnX2NsYXNzIGMgb24g Yy5vaWQgPSBsLnJlbGF0aW9uCisgd2hlcmUgbC5waWQgPSBwZ19iYWNrZW5kX3BpZCgpCisgICBh bmQgYy5yZWxuYW1lIGxpa2UgJ3BydW5lbG9ja19wXycKKyBvcmRlciBieSBjLnJlbG5hbWU7Cisg ICByZWxuYW1lICAgIAorLS0tLS0tLS0tLS0tLS0KKyBwcnVuZWxvY2tfcDEKKyBwcnVuZWxvY2tf cDIKKyBwcnVuZWxvY2tfcDMKKygzIHJvd3MpCisKK2NvbW1pdDsKK2RlYWxsb2NhdGUgcHJ1bmVs b2NrX3E7CistLSBUdXJuIHBydW5pbmcgb2ZmCitzZXQgZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5n IHRvIG9mZjsKK3ByZXBhcmUgcHJ1bmVsb2NrX3EgKGludCkgYXMgc2VsZWN0ICogZnJvbSBwcnVu ZWxvY2tfcCB3aGVyZSBhID0gJDE7CistLSBGb3JjZSBnZW5lcmljIHBsYW4gY3JlYXRpb24KK2V4 cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSBwcnVuZWxvY2tfcSgxKTsKKyAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ICBTZXEgU2NhbiBvbiBwcnVu ZWxvY2tfcDEgcHJ1bmVsb2NrX3BfMQorICAgICAgICAgRmlsdGVyOiAoYSA9ICQxKQorICAgLT4g IFNlcSBTY2FuIG9uIHBydW5lbG9ja19wMiBwcnVuZWxvY2tfcF8yCisgICAgICAgICBGaWx0ZXI6 IChhID0gJDEpCisgICAtPiAgU2VxIFNjYW4gb24gcHJ1bmVsb2NrX3AzIHBydW5lbG9ja19wXzMK KyAgICAgICAgIEZpbHRlcjogKGEgPSAkMSkKKyg3IHJvd3MpCisKKy0tIEV4ZWN1dGUgYW5kIGNo ZWNrIHdoaWNoIGNoaWxkIHBhcnRpdGlvbnMgYXJlIGxvY2tlZAorYmVnaW47CitleGVjdXRlIHBy dW5lbG9ja19xKDEpOworIGEgCistLS0KKygwIHJvd3MpCisKK3NlbGVjdCBjLnJlbG5hbWUKKyAg ZnJvbSBwZ19sb2NrcyBsCisgIGpvaW4gcGdfY2xhc3MgYyBvbiBjLm9pZCA9IGwucmVsYXRpb24K KyB3aGVyZSBsLnBpZCA9IHBnX2JhY2tlbmRfcGlkKCkKKyAgIGFuZCBjLnJlbG5hbWUgbGlrZSAn cHJ1bmVsb2NrX3BfJworIG9yZGVyIGJ5IGMucmVsbmFtZTsKKyAgIHJlbG5hbWUgICAgCistLS0t LS0tLS0tLS0tLQorIHBydW5lbG9ja19wMQorIHBydW5lbG9ja19wMgorIHBydW5lbG9ja19wMwor KDMgcm93cykKKworY29tbWl0OworZGVhbGxvY2F0ZSBwcnVuZWxvY2tfcTsKK2Ryb3AgdGFibGUg cHJ1bmVsb2NrX3A7CityZXNldCBwbGFuX2NhY2hlX21vZGU7CityZXNldCBlbmFibGVfcGFydGl0 aW9uX3BydW5pbmc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25f cHJ1bmUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbAppbmRl eCBkOTNjMGMwM2JhYi4uMjI5YzVlYjM3MGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX3BydW5lLnNxbApAQCAtMTQ0NywzICsxNDQ3LDU4IEBAIHNlbGVjdCBtaW4oYSkgb3ZlciAo cGFydGl0aW9uIGJ5IGEgb3JkZXIgYnkgYSkgZnJvbSBwYXJ0X2FiYyB3aGVyZSBhID49IHN0YWJs ZV9vCiAKIGRyb3AgdmlldyBwYXJ0X2FiY192aWV3OwogZHJvcCB0YWJsZSBwYXJ0X2FiYzsKKwor LS0KKy0tIFZlcmlmeSB0aGF0IHBydW5pbmctYXdhcmUgbG9ja2luZyBza2lwcyBwcnVuZWQgcGFy dGl0aW9ucworLS0gd2hlbiByZXVzaW5nIGEgZ2VuZXJpYyBjYWNoZWQgcGxhbi4KKy0tCitzZXQg cGxhbl9jYWNoZV9tb2RlIHRvIGZvcmNlX2dlbmVyaWNfcGxhbjsKKworY3JlYXRlIHRhYmxlIHBy dW5lbG9ja19wIChhIGludCkgcGFydGl0aW9uIGJ5IGxpc3QgKGEpOworY3JlYXRlIHRhYmxlIHBy dW5lbG9ja19wMSBwYXJ0aXRpb24gb2YgcHJ1bmVsb2NrX3AgZm9yIHZhbHVlcyBpbiAoMSk7Citj cmVhdGUgdGFibGUgcHJ1bmVsb2NrX3AyIHBhcnRpdGlvbiBvZiBwcnVuZWxvY2tfcCBmb3IgdmFs dWVzIGluICgyKTsKK2NyZWF0ZSB0YWJsZSBwcnVuZWxvY2tfcDMgcGFydGl0aW9uIG9mIHBydW5l bG9ja19wIGZvciB2YWx1ZXMgaW4gKDMpOworCitwcmVwYXJlIHBydW5lbG9ja19xIChpbnQpIGFz IHNlbGVjdCAqIGZyb20gcHJ1bmVsb2NrX3Agd2hlcmUgYSA9ICQxOworCistLSBGb3JjZSBnZW5l cmljIHBsYW4gY3JlYXRpb24KK2V4cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSBwcnVuZWxvY2tf cSgxKTsKKworLS0gRXhlY3V0ZSBhbmQgY2hlY2sgd2hpY2ggY2hpbGQgcGFydGl0aW9ucyBhcmUg bG9ja2VkCitiZWdpbjsKK2V4ZWN1dGUgcHJ1bmVsb2NrX3EoMSk7CisKK3NlbGVjdCBjLnJlbG5h bWUKKyAgZnJvbSBwZ19sb2NrcyBsCisgIGpvaW4gcGdfY2xhc3MgYyBvbiBjLm9pZCA9IGwucmVs YXRpb24KKyB3aGVyZSBsLnBpZCA9IHBnX2JhY2tlbmRfcGlkKCkKKyAgIGFuZCBjLnJlbG5hbWUg bGlrZSAncHJ1bmVsb2NrX3BfJworIG9yZGVyIGJ5IGMucmVsbmFtZTsKK2NvbW1pdDsKKworZGVh bGxvY2F0ZSBwcnVuZWxvY2tfcTsKKworLS0gVHVybiBwcnVuaW5nIG9mZgorc2V0IGVuYWJsZV9w YXJ0aXRpb25fcHJ1bmluZyB0byBvZmY7CisKK3ByZXBhcmUgcHJ1bmVsb2NrX3EgKGludCkgYXMg c2VsZWN0ICogZnJvbSBwcnVuZWxvY2tfcCB3aGVyZSBhID0gJDE7CisKKy0tIEZvcmNlIGdlbmVy aWMgcGxhbiBjcmVhdGlvbgorZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHBydW5lbG9ja19x KDEpOworCistLSBFeGVjdXRlIGFuZCBjaGVjayB3aGljaCBjaGlsZCBwYXJ0aXRpb25zIGFyZSBs b2NrZWQKK2JlZ2luOworZXhlY3V0ZSBwcnVuZWxvY2tfcSgxKTsKKworc2VsZWN0IGMucmVsbmFt ZQorICBmcm9tIHBnX2xvY2tzIGwKKyAgam9pbiBwZ19jbGFzcyBjIG9uIGMub2lkID0gbC5yZWxh dGlvbgorIHdoZXJlIGwucGlkID0gcGdfYmFja2VuZF9waWQoKQorICAgYW5kIGMucmVsbmFtZSBs aWtlICdwcnVuZWxvY2tfcF8nCisgb3JkZXIgYnkgYy5yZWxuYW1lOworY29tbWl0OworCitkZWFs bG9jYXRlIHBydW5lbG9ja19xOworZHJvcCB0YWJsZSBwcnVuZWxvY2tfcDsKK3Jlc2V0IHBsYW5f Y2FjaGVfbW9kZTsKK3Jlc2V0IGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZzsKLS0gCjIuNDcuMwoK --0000000000008178b5064c9006a7 Content-Type: application/octet-stream; name="v7-0005-Make-SQL-function-executor-track-ExecutorPrep-sta.patch" Content-Disposition: attachment; filename="v7-0005-Make-SQL-function-executor-track-ExecutorPrep-sta.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmip259l1 RnJvbSBjNjdlYzVjYzZiYmUyMGQ3YWQxNGZiOTljZDE2OTY5MzljNmVjNzBmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTAgRmViIDIwMjYgMjI6MDk6MjMgKzA5MDAKU3ViamVjdDogW1BBVENIIHY3 IDUvNl0gTWFrZSBTUUwgZnVuY3Rpb24gZXhlY3V0b3IgdHJhY2sgRXhlY3V0b3JQcmVwIHN0YXRl CgpFeHRlbmQgdGhlIFNRTCBmdW5jdGlvbiBleGVjdXRvciB0byB1c2UgdGhlIEV4ZWN1dG9yUHJl cCByZXN1bHRzCnJldHVybmVkIGJ5IEdldENhY2hlZFBsYW4oKS4gIGluaXRfZXhlY3V0aW9uX3N0 YXRlKCkgbm93IHBhc3NlcyBhCkNhY2hlZFBsYW5QcmVwRGF0YSB0byBHZXRDYWNoZWRQbGFuKCkg YW5kIHN0b3JlcyB0aGUgcGVyIHN0YXRlbWVudApFeGVjUHJlcCBwb2ludGVycyBpbiB0aGUgZXhl Y3V0aW9uX3N0YXRlIG5vZGVzLgoKQXQgZXhlY3V0aW9uIHRpbWUsIHBvc3RxdWVsX3N0YXJ0KCkg cmVwYXJlbnRzIHRoZSBwcmVwIGVzdGF0ZSdzCmVzX3F1ZXJ5X2N4dCB1bmRlciB0aGUgZnVuY3Rp b24ncyBzdWJjb250ZXh0IHNvIHRoYXQgcHJlcCBzdGF0ZQpmb2xsb3dzIHRoZSB1c3VhbCBwZXIg Y2FsbCBjb250ZXh0IGhpZXJhcmNoeS4KClRoaXMgYWxsb3dzIFNRTCBsYW5ndWFnZSBmdW5jdGlv bnMgdG8gcGFydGljaXBhdGUgaW4gdGhlIHNhbWUKRXhlY3V0b3JQcmVwIG1hY2hpbmVyeSBhcyBv dGhlciBwbGFuIGNhY2hlIHVzZXJzLgoKQWRkIGEgcmVncmVzc2lvbiB0ZXN0IHdoZXJlIHJ1bGUg cmV3cml0ZSBleHBhbmRzIGEgc2luZ2xlIFVQREFURQppbnRvIG11bHRpcGxlIFBsYW5uZWRTdG10 cywgZXhlcmNpc2luZyB0aGUgU1FMIGZ1bmN0aW9uIHBsYW4gY2FjaGUKYW5kIHRoZSBnZW5lcmlj IHBsYW4gcmV1c2UgcGF0aCB0aGF0IG5vdyBpbnZva2VzIEV4ZWN1dG9yUHJlcC4KLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAgfCAyOSArKysrKysrKysrKysrLS0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dCB8IDQ4ICsrKysrKysrKysr KysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5jYWNoZS5zcWwgICAgICB8 IDM0ICsrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMDkgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5j dGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IDY1ZGZhZTU4 ZGNmLi5jNzBlMDZkODg4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rp b25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTcyLDYgKzcy LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZXhlY3V0aW9uX3N0YXRlCiAJYm9vbAkJc2V0c1Jlc3VsdDsJ CS8qIHRydWUgaWYgdGhpcyBxdWVyeSBwcm9kdWNlcyBmdW5jJ3MgcmVzdWx0ICovCiAJYm9vbAkJ bGF6eUV2YWw7CQkvKiB0cnVlIGlmIHNob3VsZCBmZXRjaCBvbmUgcm93IGF0IGEgdGltZSAqLwog CVBsYW5uZWRTdG10ICpzdG10OwkJCS8qIHBsYW4gZm9yIHRoaXMgcXVlcnkgKi8KKwlFU3RhdGUJ ICAgKnByZXBfZXN0YXRlOwkvKiBFU3RhdGUgY3JlYXRlZCBpbiBFeGVjdXRvclByZXAoKSBmb3Ig dGhpcyBwbGFuICovCiAJUXVlcnlEZXNjICAqcWQ7CQkJCS8qIG51bGwgdW5sZXNzIHN0YXR1cyA9 PSBSVU4gKi8KIH0gZXhlY3V0aW9uX3N0YXRlOwogCkBAIC02NTcsNiArNjU4LDggQEAgaW5pdF9l eGVjdXRpb25fc3RhdGUoU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJZXhlY3V0aW9uX3N0 YXRlICpsYXN0dGFnZXMgPSBOVUxMOwogCWludAkJCW5zdG10czsKIAlMaXN0Q2VsbCAgICpsYzsK KwlDYWNoZWRQbGFuUHJlcERhdGEgY3ByZXAgPSB7MH07CisJTGlzdENlbGwgICAqcHJlcF9sYzsK IAogCS8qCiAJICogQ2xlYW4gdXAgYWZ0ZXIgcHJldmlvdXMgcXVlcnksIGlmIHRoZXJlIHdhcyBv bmUuCkBAIC02OTUsMTEgKzY5OCwyMCBAQCBpbml0X2V4ZWN1dGlvbl9zdGF0ZShTUUxGdW5jdGlv bkNhY2hlUHRyIGZjYWNoZSkKIAkgKiBDdXJyZW50UmVzb3VyY2VPd25lciB3aWxsIGJlIHRoZSBz YW1lIHdoZW4gU2h1dGRvd25TUUxGdW5jdGlvbiBydW5zLikKIAkgKi8KIAlmY2FjaGUtPmNvd25l ciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOworCisJLyoKKwkgKiBIYXZlIEV4ZWN1dG9yUHJlcCgp IGFsbG9jYXRlIHVuZGVyIGZjYWNoZS0+ZmNvbnRleHQuICBUaGUgcHJlcAorCSAqIEVTdGF0ZXMg aXQgY3JlYXRlcyB3aWxsIGluaXRpYWxseSBsaXZlIHRoZXJlOyBwb3N0cXVlbF9zdGFydCgpCisJ ICogd2lsbCBsYXRlciByZXBhcmVudCB0aGVpciBlc19xdWVyeV9jeHQgaW50byBmY2FjaGUtPnN1 YmNvbnRleHQKKwkgKiB3aGVuIHVzaW5nIHRoZW0gZm9yIGV4ZWN1dGlvbi4KKwkgKi8KKwljcHJl cC5jb250ZXh0ID0gZmNhY2hlLT5mY29udGV4dDsKKwljcHJlcC5vd25lciA9IGZjYWNoZS0+Y293 bmVyOwogCWZjYWNoZS0+Y3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsCiAJCQkJCQkJ CSAgZmNhY2hlLT5wYXJhbUxJLAogCQkJCQkJCQkgIGZjYWNoZS0+Y293bmVyLAogCQkJCQkJCQkg IE5VTEwsCi0JCQkJCQkJCSAgTlVMTCk7CisJCQkJCQkJCSAgJmNwcmVwKTsKIAogCS8qCiAJICog SWYgbmVjZXNzYXJ5LCBtYWtlIGVzYXJyYXlbXSBiaWdnZXIgdG8gaG9sZCB0aGUgbmVlZGVkIHN0 YXRlLgpAQCAtNzIwLDkgKzczMiwxMSBAQCBpbml0X2V4ZWN1dGlvbl9zdGF0ZShTUUxGdW5jdGlv bkNhY2hlUHRyIGZjYWNoZSkKIAkvKgogCSAqIEJ1aWxkIGV4ZWN1dGlvbl9zdGF0ZSBsaXN0IHRv IG1hdGNoIHRoZSBudW1iZXIgb2YgY29udGFpbmVkIHBsYW5zLgogCSAqLworCXByZXBfbGMgPSBs aXN0X2hlYWQoY3ByZXAucHJlcF9lc3RhdGVzKTsKIAlmb3JlYWNoKGxjLCBmY2FjaGUtPmNwbGFu LT5zdG10X2xpc3QpCiAJewogCQlQbGFubmVkU3RtdCAqc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5u ZWRTdG10LCBsYyk7CisJCUVTdGF0ZSAqcHJlcF9lc3RhdGUgPSBuZXh0X3ByZXBfZXN0YXRlKGNw cmVwLnByZXBfZXN0YXRlcywgJnByZXBfbGMpOwogCQlleGVjdXRpb25fc3RhdGUgKm5ld2VzOwog CiAJCS8qCkBAIC03NjQsNiArNzc4LDcgQEAgaW5pdF9leGVjdXRpb25fc3RhdGUoU1FMRnVuY3Rp b25DYWNoZVB0ciBmY2FjaGUpCiAJCW5ld2VzLT5zZXRzUmVzdWx0ID0gZmFsc2U7CS8qIG1pZ2h0 IGNoYW5nZSBiZWxvdyAqLwogCQluZXdlcy0+bGF6eUV2YWwgPSBmYWxzZTsJLyogbWlnaHQgY2hh bmdlIGJlbG93ICovCiAJCW5ld2VzLT5zdG10ID0gc3RtdDsKKwkJbmV3ZXMtPnByZXBfZXN0YXRl ID0gcHJlcF9lc3RhdGU7CiAJCW5ld2VzLT5xZCA9IE5VTEw7CiAKIAkJaWYgKHN0bXQtPmNhblNl dFRhZykKQEAgLTEzNjIsNiArMTM3NywxNSBAQCBwb3N0cXVlbF9zdGFydChleGVjdXRpb25fc3Rh dGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAllbHNlCiAJCWRlc3QgPSBOb25l X1JlY2VpdmVyOwogCisJLyoKKwkgKiBQcmVwIEVTdGF0ZXMgd2VyZSBidWlsdCB1bmRlciBmY2Fj aGUtPmZjb250ZXh0LiAgRm9yIGV4ZWN1dGlvbiwKKwkgKiBtYWtlIHRoZWlyIGVzX3F1ZXJ5X2N4 dCBhIGNoaWxkIG9mIGZjYWNoZS0+c3ViY29udGV4dCBzbyB0aGV5CisJICogZm9sbG93IHRoZSB1 c3VhbCBwZXIgY2FsbCBsaWZldGltZS4KKwkgKi8KKwlpZiAoZXMtPnByZXBfZXN0YXRlKQorCQlN ZW1vcnlDb250ZXh0U2V0UGFyZW50KGVzLT5wcmVwX2VzdGF0ZS0+ZXNfcXVlcnlfY3h0LAorCQkJ CQkJCSAgIGZjYWNoZS0+c3ViY29udGV4dCk7CisKIAllcy0+cWQgPSBDcmVhdGVRdWVyeURlc2Mo ZXMtPnN0bXQsCiAJCQkJCQkJIGZjYWNoZS0+ZnVuYy0+c3JjLAogCQkJCQkJCSBHZXRBY3RpdmVT bmFwc2hvdCgpLApAQCAtMTM3MCw3ICsxMzk0LDcgQEAgcG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9u X3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJCQkJCQkJIGZjYWNoZS0+ cGFyYW1MSSwKIAkJCQkJCQkgZXMtPnFkID8gZXMtPnFkLT5xdWVyeUVudiA6IE5VTEwsCiAJCQkJ CQkJIDAsCi0JCQkJCQkJIE5VTEwpOworCQkJCQkJCSBlcy0+cHJlcF9lc3RhdGUpOwogCiAJLyog VXRpbGl0eSBjb21tYW5kcyBkb24ndCBuZWVkIEV4ZWN1dG9yLiAqLwogCWlmIChlcy0+cWQtPm9w ZXJhdGlvbiAhPSBDTURfVVRJTElUWSkKQEAgLTE0NjEsNiArMTQ4NSw3IEBAIHBvc3RxdWVsX2Vu ZChleGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAogCUZy ZWVRdWVyeURlc2MoZXMtPnFkKTsKIAllcy0+cWQgPSBOVUxMOworCWVzLT5wcmVwX2VzdGF0ZSA9 IE5VTEw7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dAppbmRleCAxZDY5YWIwYTFjMi4uMzcxNjczYTZl OTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQKQEAgLTQ1OSw0ICs0 NTksNTIgQEAgTk9USUNFOiAgY3JlYXRpbmcgaW5kZXggb24gcGFydGl0aW9uIGludmFsX2R1cmlu Z19wcnVuaW5nX3AxCiBkcm9wIHRhYmxlIGludmFsX2R1cmluZ19wcnVuaW5nX3AsIGludmFsX2R1 cmluZ19wcnVuaW5nX3NpZ25hbDsKIGRyb3AgZnVuY3Rpb24gaW52YWxpZGF0ZV9wbGFuY2FjaGVf ZnVuYywgc3RhYmxlX3BydW5pbmdfdmFsOwogZGVhbGxvY2F0ZSBpbnZhbF9kdXJpbmdfcHJ1bmlu Z19xOworLS0gZXhlcmNpc2Ugc3FsLWZ1bmN0aW9uIHBsYW4gY2FjaGUgd2hlbiByZXdyaXRlIGV4 cGFuZHMgYSBzaW5nbGUgc3RhdGVtZW50CistLSBpbnRvIG11bHRpcGxlIHBsYW5uZWQgc3RhdGVt ZW50cy4gdGhpcyBmb3JjZXMgY2FjaGVkcGxhbi0+c3RtdF9saXN0IHRvCistLSBjb250YWluIG1v cmUgdGhhbiBvbmUgZW50cnkgYW5kIGNoZWNrcyB0aGF0IGV4ZWN1dG9yIHN0YXRlIGZvciB0aGUg Zmlyc3QKKy0tIHJld3JpdHRlbiBzdGF0ZW1lbnQgZG9lcyBub3QgZGVzdHJveSBzdGF0ZSBuZWVk ZWQgYnkgdGhlIHNlY29uZCBvbmUuCitzZXQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJp Y19wbGFuOworY3JlYXRlIHRhYmxlIHNxbGZfYmFzZShpZCBpbnQsIHZhbCBpbnQpIHBhcnRpdGlv biBieSBsaXN0IChpZCk7CitjcmVhdGUgdGFibGUgc3FsZl9iYXNlXzEgcGFydGl0aW9uIG9mIHNx bGZfYmFzZSBmb3IgdmFsdWVzIGluICgxKTsKK2NyZWF0ZSB0YWJsZSBzcWxmX2Jhc2VfMiBwYXJ0 aXRpb24gb2Ygc3FsZl9iYXNlIGZvciB2YWx1ZXMgaW4gKDIpOworY3JlYXRlIHRhYmxlIHNxbGZf bG9nKGlkIGludCwgbm90ZSB0ZXh0KTsKK2luc2VydCBpbnRvIHNxbGZfYmFzZSB2YWx1ZXMgKDEs IDEwKTsKK2NyZWF0ZSBydWxlIHNxbGZfYmFzZV91cGRfbG9nIGFzCitvbiB1cGRhdGUgdG8gc3Fs Zl9iYXNlIGRvIGFsc28KKwlpbnNlcnQgaW50byBzcWxmX2xvZyhpZCwgbm90ZSkKKwl2YWx1ZXMg KG5ldy5pZCwgJ2xvZ2dlZCBieSBydWxlJyk7CitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBz cWxmX2V4ZWNwcmVwX3Rlc3QoYSBpbnQsIHYgaW50KQorcmV0dXJucyB2b2lkCitsYW5ndWFnZSBz cWwKK2FzICQkCisJdXBkYXRlIHNxbGZfYmFzZSBzZXQgdmFsID0gdiB3aGVyZSBpZCA9IGE7Cisk JDsKK3NlbGVjdCBzcWxmX2V4ZWNwcmVwX3Rlc3QoMSwgMjApOworIHNxbGZfZXhlY3ByZXBfdGVz dCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK3NlbGVjdCBzcWxmX2V4ZWNw cmVwX3Rlc3QoMSwgMzApOworIHNxbGZfZXhlY3ByZXBfdGVzdCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tCisgCisoMSByb3cpCisKK3NlbGVjdCAqIGZyb20gc3FsZl9iYXNlIG9yZGVyIGJ5IDE7Cisg aWQgfCB2YWwgCistLS0tKy0tLS0tCisgIDEgfCAgMzAKKygxIHJvdykKKworc2VsZWN0ICogZnJv bSBzcWxmX2xvZyBvcmRlciBieSAxOworIGlkIHwgICAgICBub3RlICAgICAgCistLS0tKy0tLS0t LS0tLS0tLS0tLS0KKyAgMSB8IGxvZ2dlZCBieSBydWxlCisgIDEgfCBsb2dnZWQgYnkgcnVsZQor KDIgcm93cykKKworZHJvcCBydWxlIHNxbGZfYmFzZV91cGRfbG9nIG9uIHNxbGZfYmFzZTsKK2Ry b3AgdGFibGUgc3FsZl9iYXNlLCBzcWxmX2xvZzsKK2Ryb3AgZnVuY3Rpb24gc3FsZl9leGVjcHJl cF90ZXN0OwogcmVzZXQgcGxhbl9jYWNoZV9tb2RlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcGxhbmNhY2hlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5jYWNoZS5z cWwKaW5kZXggMTM5YjQ2ODhmZDYuLmI4OWM5YWQ2OWE0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wbGFuY2FjaGUuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5j YWNoZS5zcWwKQEAgLTI3Myw0ICsyNzMsMzggQEAgZHJvcCB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1 bmluZ19wLCBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWduYWw7CiBkcm9wIGZ1bmN0aW9uIGludmFs aWRhdGVfcGxhbmNhY2hlX2Z1bmMsIHN0YWJsZV9wcnVuaW5nX3ZhbDsKIGRlYWxsb2NhdGUgaW52 YWxfZHVyaW5nX3BydW5pbmdfcTsKIAorLS0gZXhlcmNpc2Ugc3FsLWZ1bmN0aW9uIHBsYW4gY2Fj aGUgd2hlbiByZXdyaXRlIGV4cGFuZHMgYSBzaW5nbGUgc3RhdGVtZW50CistLSBpbnRvIG11bHRp cGxlIHBsYW5uZWQgc3RhdGVtZW50cy4gdGhpcyBmb3JjZXMgY2FjaGVkcGxhbi0+c3RtdF9saXN0 IHRvCistLSBjb250YWluIG1vcmUgdGhhbiBvbmUgZW50cnkgYW5kIGNoZWNrcyB0aGF0IGV4ZWN1 dG9yIHN0YXRlIGZvciB0aGUgZmlyc3QKKy0tIHJld3JpdHRlbiBzdGF0ZW1lbnQgZG9lcyBub3Qg ZGVzdHJveSBzdGF0ZSBuZWVkZWQgYnkgdGhlIHNlY29uZCBvbmUuCisKK3NldCBwbGFuX2NhY2hl X21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisKK2NyZWF0ZSB0YWJsZSBzcWxmX2Jhc2UoaWQg aW50LCB2YWwgaW50KSBwYXJ0aXRpb24gYnkgbGlzdCAoaWQpOworY3JlYXRlIHRhYmxlIHNxbGZf YmFzZV8xIHBhcnRpdGlvbiBvZiBzcWxmX2Jhc2UgZm9yIHZhbHVlcyBpbiAoMSk7CitjcmVhdGUg dGFibGUgc3FsZl9iYXNlXzIgcGFydGl0aW9uIG9mIHNxbGZfYmFzZSBmb3IgdmFsdWVzIGluICgy KTsKK2NyZWF0ZSB0YWJsZSBzcWxmX2xvZyhpZCBpbnQsIG5vdGUgdGV4dCk7CisKK2luc2VydCBp bnRvIHNxbGZfYmFzZSB2YWx1ZXMgKDEsIDEwKTsKKworY3JlYXRlIHJ1bGUgc3FsZl9iYXNlX3Vw ZF9sb2cgYXMKK29uIHVwZGF0ZSB0byBzcWxmX2Jhc2UgZG8gYWxzbworCWluc2VydCBpbnRvIHNx bGZfbG9nKGlkLCBub3RlKQorCXZhbHVlcyAobmV3LmlkLCAnbG9nZ2VkIGJ5IHJ1bGUnKTsKKwor Y3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gc3FsZl9leGVjcHJlcF90ZXN0KGEgaW50LCB2IGlu dCkKK3JldHVybnMgdm9pZAorbGFuZ3VhZ2Ugc3FsCithcyAkJAorCXVwZGF0ZSBzcWxmX2Jhc2Ug c2V0IHZhbCA9IHYgd2hlcmUgaWQgPSBhOworJCQ7CisKK3NlbGVjdCBzcWxmX2V4ZWNwcmVwX3Rl c3QoMSwgMjApOworc2VsZWN0IHNxbGZfZXhlY3ByZXBfdGVzdCgxLCAzMCk7CitzZWxlY3QgKiBm cm9tIHNxbGZfYmFzZSBvcmRlciBieSAxOworc2VsZWN0ICogZnJvbSBzcWxmX2xvZyBvcmRlciBi eSAxOworCitkcm9wIHJ1bGUgc3FsZl9iYXNlX3VwZF9sb2cgb24gc3FsZl9iYXNlOworZHJvcCB0 YWJsZSBzcWxmX2Jhc2UsIHNxbGZfbG9nOworZHJvcCBmdW5jdGlvbiBzcWxmX2V4ZWNwcmVwX3Rl c3Q7CiByZXNldCBwbGFuX2NhY2hlX21vZGU7Ci0tIAoyLjQ3LjMKCg== --0000000000008178b5064c9006a7 Content-Type: application/octet-stream; name="v7-0002-Introduce-ExecutorPrep-and-refactor-executor-star.patch" Content-Disposition: attachment; filename="v7-0002-Introduce-ExecutorPrep-and-refactor-executor-star.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmip25a04 RnJvbSBhZWFhYTUwNTlhN2JlMDZjMzAxYjEzNzJjMTY4MjkyMjViMjc3MGZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjE6NDc6NDYgKzA5MDAKU3ViamVjdDogW1BBVENIIHY3 IDIvNl0gSW50cm9kdWNlIEV4ZWN1dG9yUHJlcCBhbmQgcmVmYWN0b3IgZXhlY3V0b3Igc3RhcnR1 cAoKRmFjdG9yIHBlcm1pc3Npb24gY2hlY2tzLCByYW5nZSB0YWJsZSBpbml0aWFsaXphdGlvbiwg YW5kIGluaXRpYWwKcGFydGl0aW9uIHBydW5pbmcgb3V0IG9mIEluaXRQbGFuKCkgaW50byBhIG5l dyBFeGVjdXRvclByZXAoKQpoZWxwZXIuIEV4ZWN1dG9yUHJlcCgpIGJ1aWxkcyBhbiBFU3RhdGUg Y29udGFpbmluZyB0aGUgZXhlY3V0b3IKbWV0YWRhdGEgbmVlZGVkIGJlZm9yZSBwbGFuIGV4ZWN1 dGlvbiwgaW5jbHVkaW5nIHBhcnRpdGlvbgpwcnVuaW5nIHN0YXRlIHdoZXJlIHBhcnRQcnVuZUlu Zm9zIGFyZSBwcmVzZW50LCBhbmQgcmV0dXJucyBpdApkaXJlY3RseSB0byB0aGUgY2FsbGVyLgoK RXhlY3V0b3JTdGFydCgpIG5vdyBjaGVja3MgaWYgUXVlcnlEZXNjLT5lc3RhdGUgaXMgYWxyZWFk eSBzZXQKKGluZGljYXRpbmcgRXhlY3V0b3JQcmVwKCkgd2FzIGNhbGxlZCBlYXJsaWVyKS4gSWYg c28sIGl0IHJldXNlcwp0aGUgRVN0YXRlIHRvIGF2b2lkIHJlZG9pbmcgcmFuZ2UgdGFibGUgc2V0 dXAgYW5kIHBydW5pbmcuCk90aGVyd2lzZSwgaXQgaW52b2tlcyBFeGVjdXRvclByZXAoKSBpdHNl bGYgYW5kIGFkb3B0cyB0aGUKcmVzdWx0aW5nIEVTdGF0ZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRo ZSBxdWVyeS4gVGhpcyBrZWVwcyB0aGUKZXhlY3V0b3Igc3RhcnR1cCBiZWhhdmlvciB1bmNoYW5n ZWQgd2hpbGUgbWFraW5nIHRoZSBzZXR1cCB3b3JrCmNhbGxhYmxlIHNlcGFyYXRlbHkgd2hlbiBu ZWVkZWQuCgpDcmVhdGVRdWVyeURlc2MoKSBncm93cyBhIHByZXBfZXN0YXRlIGFyZ3VtZW50IHRv IGFjY2VwdCBhbgpvcHRpb25hbGx5IHByZS1jcmVhdGVkIEVTdGF0ZSBhbmQgc3RvcmVzIGl0IGlu IHRoZSBRdWVyeURlc2MuClBvcnRhbHMsIFNQSSwgU1FMIGZ1bmN0aW9ucywgYW5kIEVYUExBSU4g YXJlIHdpcmVkIHRvIGNhcnJ5Cm9wdGlvbmFsIEVTdGF0ZSBwb2ludGVycyBhbG9uZ3NpZGUgdGhl IFBsYW5uZWRTdG10IGxpc3QsIGJ1dCBtb3N0CmNhbGxlcnMgc3RpbGwgcGFzcyBOVUxMIGFuZCBs ZXQgRXhlY3V0b3JTdGFydCgpIHBlcmZvcm0gdGhlIHNldHVwCmxhemlseS4KCkV4ZWN1dG9yUHJl cCgpIHJlcXVpcmVzIHRoZSBjYWxsZXIgdG8gaGF2ZSBlc3RhYmxpc2hlZCBhbiBhY3RpdmUKc25h cHNob3QsIGFzIHBhcnRpdGlvbiBwcnVuaW5nIGV4cHJlc3Npb25zIG1heSBjYWxsIFBMIGZ1bmN0 aW9ucwp0aGF0IGludGVybmFsbHkgcmVxdWlyZSBvbmUgKGUuZy4sIHZpYSBFbnN1cmVQb3J0YWxT bmFwc2hvdEV4aXN0cygpKS4KClVwZGF0ZSBleGVjdXRvci9SRUFETUUgYW5kIHJlbGF0ZWQgY29t bWVudHMgdG8gZG9jdW1lbnQgdGhlIG5ldwpjb250cm9sIGZsb3cgYW5kIHRoZSBzZXBhcmF0aW9u IGJldHdlZW4gcHJlcGFyYXRpb24gYW5kIGV4ZWN1dGlvbi4KCk5vdGUgdGhhdCBhcyBvZiB0aGlz IGNvbW1pdCwgRXhlY3V0b3JTdGFydCgpIGlzIHRoZSBvbmx5IGNhbGxlciBvZgpFeGVjdXRvclBy ZXAoKSwgc28gdGhlcmUgaXMgbm8gc2VtYW50aWMgY2hhbmdlIGluIGJlaGF2aW9yLiBMYXRlcgpj b21taXRzIHdpbGwgYWRkIHNwZWNpYWxpemVkIGNhbGxlcnMgdGhhdCBpbnZva2UgRXhlY3V0b3JQ cmVwKCkKZWFybGllciB0byBlbmFibGUgcHJ1bmluZy1hd2FyZSBsb2NraW5nIGluIGNhY2hlZCBw bGFucy4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgICB8ICAgMiArLQog c3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9l eHRlbnNpb24uYyAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jICAg ICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgIHwgICAxICsK IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgIHwgICA5ICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9SRUFETUUgICAgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyAgICAgfCAxNzYgKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL2Z1bmN0aW9ucy5jICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAg ICAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgfCAg IDIgKwogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgfCAgMjQgKysrLQogc3Jj L2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgfCAgIDIgKwogc3JjL2luY2x1ZGUvY29t bWFuZHMvZXhwbGFpbi5oICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNk ZXNjLmggICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICB8 ICAyNiArKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICB8ICAgMSAtCiBz cmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaCAgICAgICAgICB8ICAgMiArCiAyMCBmaWxlcyBjaGFu Z2VkLCAyNDEgaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8u YwppbmRleCA5Y2VlZmY2ZDk5ZS4uZWYxZWUyNTY4YzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCkBA IC04NzUsNyArODc1LDcgQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQljc3Rh dGUtPnF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4 dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNu YXBzaG90LAotCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKKwkJCQkJCQkJCQkJZGVz dCwgTlVMTCwgTlVMTCwgMCwgTlVMTCk7CiAKIAkJLyoKIAkJICogQ2FsbCBFeGVjdXRvclN0YXJ0 IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5j CmluZGV4IDI3MGU5YmYzMTEwLi5iNGE5ODA4OTU1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY3JlYXRlYXMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5j CkBAIC0zMzYsNyArMzM2LDcgQEAgRXhlY0NyZWF0ZVRhYmxlQXMoUGFyc2VTdGF0ZSAqcHN0YXRl LCBDcmVhdGVUYWJsZUFzU3RtdCAqc3RtdCwKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRp cmVjdGluZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCiAJCXF1ZXJ5RGVzYyA9IENy ZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCUdldEFj dGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKLQkJCQkJCQkJCWRlc3QsIHBhcmFtcywg cXVlcnlFbnYsIDApOworCQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCwgTlVMTCk7 CiAKIAkJLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1 dGlvbiAqLwogCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgR2V0SW50b1JlbEVGbGFncyhpbnRv KSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggOTM5MThhMjIzYjguLjQwNTY0ZDRkZmY5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC0zNzAsNyArMzcwLDcgQEAgc3RhbmRhcmRfRXhwbGFp bk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJfQogCiAJLyogcnVu IGl0IChpZiBuZWVkZWQpIGFuZCBwcm9kdWNlIG91dHB1dCAqLwotCUV4cGxhaW5PbmVQbGFuKHBs YW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwlFeHBsYWluT25l UGxhbihwbGFuLCBOVUxMLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYs CiAJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCks CiAJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKIH0KQEAgLTQ5Miw3 ICs0OTIsOCBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVz ZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRvIGNhbGwgaXQuCiAgKi8KIHZvaWQKLUV4 cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywg RXhwbGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3Rt dCwgRVN0YXRlICpwcmVwX2VzdGF0ZSwKKwkJCSAgIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5T dGF0ZSAqZXMsCiAJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZywgUGFyYW1MaXN0SW5mbyBw YXJhbXMsCiAJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwgY29uc3QgaW5zdHJfdGlt ZSAqcGxhbmR1cmF0aW9uLAogCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1ZnVzYWdlLApAQCAt NTUwLDcgKzU1MSw4IEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwg SW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkvKiBDcmVhdGUgYSBRdWVyeURl c2MgZm9yIHRoZSBxdWVyeSAqLwogCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVk c3RtdCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRT bmFwc2hvdCwKLQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRp b24pOworCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50X29wdGlvbiwK KwkJCQkJCQkJcHJlcF9lc3RhdGUpOwogCiAJLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICov CiAJaWYgKGVzLT5hbmFseXplKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0 ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwppbmRleCA5NjM2MThh NjRjNC4uZmY3NTlkZGQwN2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVu c2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBAIC0xMTczLDcg KzExNzMsNyBAQCBleGVjdXRlX3NxbF9zdHJpbmcoY29uc3QgY2hhciAqc3FsLCBjb25zdCBjaGFy ICpmaWxlbmFtZSkKIAkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAogCQkJCQkJCQkJ CXNxbCwKIAkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBOVUxMLAotCQkJCQkJCQkJCWRl c3QsIE5VTEwsIE5VTEwsIDApOworCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDAsIE5VTEwp OwogCiAJCQkJRXhlY3V0b3JTdGFydChxZGVzYywgMCk7CiAJCQkJRXhlY3V0b3JSdW4ocWRlc2Ms IEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL21hdHZpZXcuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwppbmRleCA4MWE1 NWEzM2VmMi4uMmNkZmRjZjk4NGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21h dHZpZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTQzOSw3ICs0 MzksNyBAQCByZWZyZXNoX21hdHZpZXdfZGF0YWZpbGwoRGVzdFJlY2VpdmVyICpkZXN0LCBRdWVy eSAqcXVlcnksCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBvdXRwdXQgdG8g b3VyIHR1cGxlIHJlY2VpdmVyICovCiAJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4s IHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNo b3QsCi0JCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOworCQkJCQkJCQlkZXN0LCBOVUxMLCBO VUxMLCAwLCBOVUxMKTsKIAogCS8qIGNhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBw bGFuIGZvciBleGVjdXRpb24gKi8KIAlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9wb3J0YWxjbWRzLmMKaW5kZXggMDFlZmFjMzMxOWUuLjFlODgwYTZkN2M5IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCkBAIC0xMTgsNiArMTE4LDcgQEAgUGVyZm9ybUN1cnNv ck9wZW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWNsYXJlQ3Vyc29yU3RtdCAqY3N0bXQsIFBhcmFt TGlzdEluZm8gcGEKIAkJCQkJICBxdWVyeVN0cmluZywKIAkJCQkJICBDTURUQUdfU0VMRUNULAkv KiBjdXJzb3IncyBxdWVyeSBpcyBhbHdheXMgYSBTRUxFQ1QgKi8KIAkJCQkJICBsaXN0X21ha2Ux KHBsYW4pLAorCQkJCQkgIE5JTCwKIAkJCQkJICBOVUxMKTsKIAogCS8qLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHJlcGFyZS5jCmluZGV4IDViODZhNzI3NTg3Li4wMDVmYmI0OGFhNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ByZXBhcmUuYwpAQCAtMjA1LDYgKzIwNSw3IEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRl ICpwc3RhdGUsCiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIGVudHJ5LT5wbGFuc291cmNl LT5jb21tYW5kVGFnLAogCQkJCQkgIHBsYW5fbGlzdCwKKwkJCQkJICBOSUwsCiAJCQkJCSAgY3Bs YW4pOwogCiAJLyoKQEAgLTU3NSw3ICs1NzYsOSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1 dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlj b25zdCBjaGFyICpxdWVyeV9zdHJpbmc7CiAJQ2FjaGVkUGxhbiAqY3BsYW47CiAJTGlzdAkgICAq cGxhbl9saXN0OworCUxpc3QJICAgKnByZXBfZXN0YXRlczsKIAlMaXN0Q2VsbCAgICpwOworCUxp c3RDZWxsICAgKnByZXBfbGM7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKIAlFU3Rh dGUJICAgKmVzdGF0ZSA9IE5VTEw7CiAJaW5zdHJfdGltZQlwbGFuc3RhcnQ7CkBAIC02NTAsMTQg KzY1MywxOCBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50 b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAl9CiAKIAlwbGFuX2xpc3QgPSBjcGxh bi0+c3RtdF9saXN0OworCXByZXBfZXN0YXRlcyA9IE5JTDsKIAogCS8qIEV4cGxhaW4gZWFjaCBx dWVyeSAqLworCXByZXBfbGMgPSBsaXN0X2hlYWQocHJlcF9lc3RhdGVzKTsKIAlmb3JlYWNoKHAs IHBsYW5fbGlzdCkKIAl7CiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5u ZWRTdG10LCBwKTsKKwkJRVN0YXRlICpwcmVwX2VzdGF0ZSA9IG5leHRfcHJlcF9lc3RhdGUocHJl cF9lc3RhdGVzLCAmcHJlcF9sYyk7CiAKIAkJaWYgKHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURf VVRJTElUWSkKLQkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5n LCBwYXJhbUxJLCBwc3RhdGUtPnBfcXVlcnlFbnYsCisJCQlFeHBsYWluT25lUGxhbihwc3RtdCwg cHJlcF9lc3RhdGUsCisJCQkJCQkgICBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLCBw c3RhdGUtPnBfcXVlcnlFbnYsCiAJCQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMg PyAmYnVmdXNhZ2UgOiBOVUxMKSwKIAkJCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50ZXJz IDogTlVMTCk7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURN RSBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQppbmRleCA1NGY0NzgyZjMxYi4uZDc0OWNl YjY2ODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQorKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9SRUFETUUKQEAgLTI5MSwxMSArMjkxLDE4IEBAIFF1ZXJ5IFByb2Nl c3NpbmcgQ29udHJvbCBGbG93CiAKIFRoaXMgaXMgYSBza2V0Y2ggb2YgY29udHJvbCBmbG93IGZv ciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAKKyAgICBFeGVjdXRvclByZXAKKwkJTWF5IGJlIHJ1 biBiZWZvcmUgRXhlY3V0b3JTdGFydCAoZS5nLiwgZm9yIHBsYW4gdmFsaWRhdGlvbiksIG9yCisJ CWltcGxpY2l0bHkgZnJvbSBFeGVjdXRvclN0YXJ0IGlmIG5vdCBkb25lIGVhcmxpZXIuICBDcmVh dGVzIEVTdGF0ZSwKKwkJcGVyZm9ybXMgcmFuZ2UgdGFibGUgaW5pdGlhbGl6YXRpb24sIHBlcm1p c3Npb24gY2hlY2tzLCBhbmQgaW5pdGlhbAorCQlwYXJ0aXRpb24gcHJ1bmluZy4gIFJldHVybnMg dGhlIEVTdGF0ZSB0aGF0IEV4ZWN1dG9yU3RhcnQoKSBzaG91bGQKKwkJcmV1c2UuCisKIAlDcmVh dGVRdWVyeURlc2MKIAogCUV4ZWN1dG9yU3RhcnQKLQkJQ3JlYXRlRXhlY3V0b3JTdGF0ZQotCQkJ Y3JlYXRlcyBwZXItcXVlcnkgY29udGV4dAorCQlFeGVjdXRvclByZXAgKGlmIG5vdCBhbHJlYWR5 IGRvbmUsIGluZGljYXRlZCBieSBOVUxMIFF1ZXJ5RGVzYy5lc3RhdGUpCisJCQljcmVhdGVzIEVT dGF0ZSBhbmQgcGVyLXF1ZXJ5IGNvbnRleHQKIAkJc3dpdGNoIHRvIHBlci1xdWVyeSBjb250ZXh0 IHRvIHJ1biBFeGVjSW5pdE5vZGUKIAkJQWZ0ZXJUcmlnZ2VyQmVnaW5RdWVyeQogCQlFeGVjSW5p dE5vZGUgLS0tIHJlY3Vyc2l2ZWx5IHNjYW5zIHBsYW4gdHJlZQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMKaW5kZXggNjU0ZjkyNDZhZDAuLmQ3ZTk5NjkwYzdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIK ICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgi CisjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCiAj aW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIK QEAgLTE0NSw3ICsxNDYsNiBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKQogCiAJLyogc2FuaXR5IGNoZWNrczogcXVlcnlEZXNjIG11c3Qg bm90IGJlIHN0YXJ0ZWQgYWxyZWFkeSAqLwogCUFzc2VydChxdWVyeURlc2MgIT0gTlVMTCk7Ci0J QXNzZXJ0KHF1ZXJ5RGVzYy0+ZXN0YXRlID09IE5VTEwpOwogCiAJLyogY2FsbGVyIG11c3QgZW5z dXJlIHRoZSBxdWVyeSdzIHNuYXBzaG90IGlzIGFjdGl2ZSAqLwogCUFzc2VydChHZXRBY3RpdmVT bmFwc2hvdCgpID09IHF1ZXJ5RGVzYy0+c25hcHNob3QpOwpAQCAtMTcxLDkgKzE3MSw3MSBAQCBz dGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQog CiAJLyoKIAkgKiBCdWlsZCBFU3RhdGUsIHN3aXRjaCBpbnRvIHBlci1xdWVyeSBtZW1vcnkgY29u dGV4dCBmb3Igc3RhcnR1cC4KLQkgKi8KLQllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7 Ci0JcXVlcnlEZXNjLT5lc3RhdGUgPSBlc3RhdGU7CisJICoKKwkgKiBJZiBFeGVjdXRvclByZXAo KSByYW4gZWFybGllciAoZS5nLiwgdG8gZG8gaW5pdGlhbCBwcnVuaW5nIGR1cmluZyBwbGFuCisJ ICogdmFsaWRpdHkgY2hlY2tpbmcpLCByZXVzZSBpdHMgRVN0YXRlIHRvIGF2b2lkIHJlZG9pbmcg cmFuZ2UgdGFibGUgc2V0dXAKKwkgKiBhbmQgcHJ1bmluZy4gT3RoZXJ3aXNlLCBjcmVhdGUgYSBm cmVzaCBFU3RhdGUgYXMgdXN1YWwuCisJICoKKwkgKiBJbiBhc3NlcnQgYnVpbGRzLCB2ZXJpZnkg dGhhdCB0aGUgZXhwZWN0ZWQgbG9ja3MgYXJlIGhlbGQuICBXaGVuCisJICogbm8gcHJlcCBFU3Rh dGUgd2FzIHByb3ZpZGVkLCBBY3F1aXJlRXhlY3V0b3JMb2NrcygpIHNob3VsZCBoYXZlCisJICog bG9ja2VkIGV2ZXJ5IHJlbGF0aW9uIGluIHRoZSBwbGFuLiAgV2hlbiBvbmUgd2FzIHByb3ZpZGVk LAorCSAqIHBydW5pbmctYXdhcmUgbG9ja2luZyBzaG91bGQgaGF2ZSBsb2NrZWQgYXQgbGVhc3Qg dGhlIHVucHJ1bmVkCisJICogcmVsYXRpb25zLiAgQm90aCBjaGVja3MgYXJlIHNraXBwZWQgaW4g cGFyYWxsZWwgd29ya2Vycywgd2hpY2gKKwkgKiBhY3F1aXJlIHJlbGF0aW9uIGxvY2tzIGxhemls eSBpbiBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkuCisJICovCisJaWYgKHF1ZXJ5RGVzYy0+ ZXN0YXRlID09IE5VTEwpCisJeworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkJaWYgKCFJ c1BhcmFsbGVsV29ya2VyKCkpCisJCXsKKwkJCUxpc3RDZWxsICAgKmxjOworCisJCQlmb3JlYWNo KGxjLCBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5ydGFibGUpCisJCQl7CisJCQkJUmFuZ2VUYmxF bnRyeSAqcnRlID0gbGZpcnN0X25vZGUoUmFuZ2VUYmxFbnRyeSwgbGMpOworCisJCQkJaWYgKHJ0 ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04gfHwKKwkJCQkJKHJ0ZS0+cnRla2luZCA9PSBSVEVf U1VCUVVFUlkgJiYgcnRlLT5yZWxpZCAhPSBJbnZhbGlkT2lkKSkKKwkJCQkJQXNzZXJ0KENoZWNr UmVsYXRpb25PaWRMb2NrZWRCeU1lKHJ0ZS0+cmVsaWQsCisJCQkJCQkJCQkJCQkJICBydGUtPnJl bGxvY2ttb2RlLAorCQkJCQkJCQkJCQkJCSAgdHJ1ZSkpOworCQkJfQorCQl9CisjZW5kaWYKKwkJ cXVlcnlEZXNjLT5lc3RhdGUgPSBFeGVjdXRvclByZXAocXVlcnlEZXNjLT5wbGFubmVkc3RtdCwK KwkJCQkJCQkJCQkgcXVlcnlEZXNjLT5wYXJhbXMsCisJCQkJCQkJCQkJIEN1cnJlbnRSZXNvdXJj ZU93bmVyLAorCQkJCQkJCQkJCSB0cnVlLAorCQkJCQkJCQkJCSBlZmxhZ3MpOworCX0KKyNpZmRl ZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJZWxzZQorCXsKKwkJLyoKKwkJICogQSBwcmVwIEVTdGF0 ZSB3YXMgcHJvdmlkZWQsIG1lYW5pbmcgcHJ1bmluZy1hd2FyZSBsb2NraW5nCisJCSAqIHNob3Vs ZCBoYXZlIGxvY2tlZCBhdCBsZWFzdCB0aGUgdW5wcnVuZWQgcmVsYXRpb25zLgorCQkgKi8KKwkJ aWYgKCFJc1BhcmFsbGVsV29ya2VyKCkpCisJCXsKKwkJCWludAkJcnRpbmRleCA9IC0xOworCisJ CQl3aGlsZSAoKHJ0aW5kZXggPSBibXNfbmV4dF9tZW1iZXIocXVlcnlEZXNjLT5lc3RhdGUtPmVz X3VucHJ1bmVkX3JlbGlkcywKKwkJCQkJCQkJCQkJICBydGluZGV4KSkgPj0gMCkKKwkJCXsKKwkJ CQlSYW5nZVRibEVudHJ5ICpydGUgPSBleGVjX3J0X2ZldGNoKHJ0aW5kZXgsIHF1ZXJ5RGVzYy0+ ZXN0YXRlKTsKKworCQkJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OIHx8CisJ CQkJCSAgIChydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmCisJCQkJCQlydGUtPnJlbGlk ICE9IEludmFsaWRPaWQpKTsKKwkJCQlBc3NlcnQoQ2hlY2tSZWxhdGlvbk9pZExvY2tlZEJ5TWUo cnRlLT5yZWxpZCwKKwkJCQkJCQkJCQkJCSAgcnRlLT5yZWxsb2NrbW9kZSwgdHJ1ZSkpOworCQkJ fQorCQl9CisJfQorI2VuZGlmCisKKwllc3RhdGUgPSBxdWVyeURlc2MtPmVzdGF0ZTsKKwlBc3Nl cnQoZXN0YXRlKTsKIAogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRl LT5lc19xdWVyeV9jeHQpOwogCkBAIC0yNjMsNiArMzI1LDg0IEBAIHN0YW5kYXJkX0V4ZWN1dG9y U3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGNvbnRleHQpOwogfQogCisvKgorICogRXhlY3V0b3JQcmVwOiBwcmVwYXJlIGV4 ZWN1dG9yIHN0YXRlIGZvciBhIFBsYW5uZWRTdG10IG91dHNpZGUgRXhlY3V0b3JTdGFydC4KKyAq CisgKiBQZXJmb3JtcyByYW5nZSB0YWJsZSBpbml0aWFsaXphdGlvbiwgcGVybWlzc2lvbiBjaGVj a3MsIGFuZCBpbml0aWFsCisgKiBwYXJ0aXRpb24gcHJ1bmluZyBpZiBwYXJ0UHJ1bmVJbmZvcyBh cmUgcHJlc2VudCBhbmQgZG9faW5pdGlhbF9wcnVuaW5nIGlzCisgKiB0cnVlLgorICoKKyAqIFRo aXMgaXMgaW50ZW5kZWQgZm9yIGNhbGxlcnMgdGhhdCBuZWVkIGV4ZWN1dG9yIG1ldGFkYXRhIGFo ZWFkIG9mIGFjdHVhbAorICogZXhlY3V0aW9uLiBUeXBpY2FsIHVzZSBjYXNlcyBpbmNsdWRlOgor ICoJLSBkZXRlcm1pbmluZyB3aGljaCByZWxhdGlvbnMgbXVzdCBiZSBsb2NrZWQgZHVyaW5nIHBs YW4gY2FjaGUgdmFsaWRhdGlvbjsKKyAqCS0gaW5pdGlhbGl6aW5nIHVucHJ1bmVkIHJlbGlkcyBh bmQgdmFsaWQgc3VicGxhbnMgaW4gcGFyYWxsZWwgd29ya2VycworICoJICB1c2luZyBzdGF0ZSBj b3BpZWQgZnJvbSB0aGUgbGVhZGVyLgorICoKKyAqIFRoZSBleGVjdXRvciBjYW4gcmV1c2UgdGhl IHJlc3VsdGluZyBzdGF0ZSB0byBhdm9pZCByZWR1bmRhbnQgc2V0dXAgZHVyaW5nCisgKiBFeGVj dXRvclN0YXJ0KCkuCisgKgorICogUmV0dXJucyBhbiBFU3RhdGUgdGhhdCBjYW4gYmUgcmV1c2Vk IGxhdGVyLgorICovCitFU3RhdGUgKgorRXhlY3V0b3JQcmVwKFBsYW5uZWRTdG10ICpwc3RtdCwg UGFyYW1MaXN0SW5mbyBwYXJhbXMsIFJlc291cmNlT3duZXIgb3duZXIsCisJCQkgYm9vbCBkb19p bml0aWFsX3BydW5pbmcsIGludCBlZmxhZ3MpCit7CisJUmVzb3VyY2VPd25lciBvbGRvd25lcjsK KwlFU3RhdGUgKmVzdGF0ZTsKKworCWlmIChwc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJ VFkpCisJCXJldHVybiBOVUxMOworCisJLyogQ2FsbGVyIG11c3QgaGF2ZSBlc3RhYmxpc2hlZCBh biBhY3RpdmUgc25hcHNob3QuICovCisJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCisJ ZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOworCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQg PSBwc3RtdDsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MgPSBwc3RtdC0+cGFydFBydW5l SW5mb3M7CisJZXN0YXRlLT5lc19wYXJhbV9saXN0X2luZm8gPSBwYXJhbXM7CisJZXN0YXRlLT5l c190b3BfZWZsYWdzID0gZWZsYWdzOworCisJLyoKKwkgKiBEbyBwZXJtaXNzaW9ucyBjaGVja3Mu CisJICovCisJRXhlY0NoZWNrUGVybWlzc2lvbnMocHN0bXQtPnJ0YWJsZSwgcHN0bXQtPnBlcm1J bmZvcywgdHJ1ZSk7CisKKwkvKgorCSAqIEluaXRpYWxpemUgcmFuZ2UgdGFibGUuCisJICovCisJ RXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgcHN0bXQtPnJ0YWJsZSwgcHN0bXQtPnBlcm1JbmZv cywKKwkJCQkJICAgYm1zX2NvcHkocHN0bXQtPnVucHJ1bmFibGVSZWxpZHMpKTsKKworCS8qCisJ ICogRW5zdXJlIGxvY2tzIHRha2VuIGR1cmluZyBpbml0aWFsIHBydW5pbmcgYXJlIHRyYWNrZWQg dW5kZXIgdGhlIGdpdmVuCisJICogUmVzb3VyY2VPd25lciAoZS5nLiwgb25lIGFzc29jaWF0ZWQg d2l0aCBDYWNoZWRQbGFuIHZhbGlkYXRpb24pLgorCSAqLworCW9sZG93bmVyID0gQ3VycmVudFJl c291cmNlT3duZXI7CisJQ3VycmVudFJlc291cmNlT3duZXIgPSBvd25lcjsKKworCS8qCisJICog U2V0IHVwIFBhcnRpdGlvblBydW5lU3RhdGUgc3RydWN0dXJlcyBuZWVkZWQgZm9yIGJvdGggaW5p dGlhbCBhbmQKKwkgKiBydW50aW1lIHBhcnRpdGlvbiBwcnVuaW5nLiBUaGVzZSBzdHJ1Y3R1cmVz IGFyZSBidWlsdCBmcm9tIHRoZQorCSAqIFBhcnRpdGlvblBydW5lSW5mbyBlbnRyaWVzIGluIHRo ZSBwbGFuIHRyZWUuCisJICoKKwkgKiBJZiBkb19pbml0aWFsX3BydW5pbmcgaXMgdHJ1ZSwgYWxz byBwZXJmb3JtIGluaXRpYWwgcHJ1bmluZyB0byBjb21wdXRlCisJICogdGhlIHN1YnNldCBvZiBj aGlsZCBzdWJwbGFucyB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQuIFRoZSByZXN1bHRzLAorCSAqIHdo aWNoIGFyZSBiaXRtYXBzZXRzIG9mIHNlbGVjdGVkIGNoaWxkIGluZGV4ZXMsIGFyZSBzYXZlZCBp bgorCSAqIGVzX3BhcnRfcHJ1bmVfcmVzdWx0cy4gVGhpcyBsaXN0IGlzIHBhcmFsbGVsIHRvIGVz X3BhcnRfcHJ1bmVfaW5mb3MuCisJICoKKwkgKiBJbiBwYXJhbGxlbCB3b3JrZXJzLCBkb19pbml0 aWFsX3BydW5pbmcgc2hvdWxkIGJlIGZhbHNlIC0tIHRoZXkgcmVjZWl2ZQorCSAqIGVzX3BhcnRf cHJ1bmVfcmVzdWx0cyBmcm9tIHRoZSBsZWFkZXIgcHJvY2VzcyBhbmQgc2hvdWxkIG9ubHkgaW5p dGlhbGl6ZQorCSAqIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlcy4KKwkgKi8KKwlFeGVjQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZXMoZXN0YXRlKTsKKwlpZiAoZG9faW5pdGlhbF9wcnVuaW5nKQor CQlFeGVjRG9Jbml0aWFsUHJ1bmluZyhlc3RhdGUpOworCisJQ3VycmVudFJlc291cmNlT3duZXIg PSBvbGRvd25lcjsKKworCXJldHVybiBlc3RhdGU7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVj dXRvclJ1bgogICoKQEAgLTgzOCwzOCArOTc4LDE0IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKQogCUNtZFR5cGUJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3Bl cmF0aW9uOwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0 bXQ7CiAJUGxhbgkgICAqcGxhbiA9IHBsYW5uZWRzdG10LT5wbGFuVHJlZTsKLQlMaXN0CSAgICpy YW5nZVRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJsZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHF1 ZXJ5RGVzYy0+ZXN0YXRlOwogCVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZTsKIAlUdXBsZURlc2MJdHVw VHlwZTsKIAlMaXN0Q2VsbCAgICpsOwogCWludAkJCWk7CiAKLQkvKgotCSAqIERvIHBlcm1pc3Np b25zIGNoZWNrcwotCSAqLwotCUV4ZWNDaGVja1Blcm1pc3Npb25zKHJhbmdlVGFibGUsIHBsYW5u ZWRzdG10LT5wZXJtSW5mb3MsIHRydWUpOwotCi0JLyoKLQkgKiBpbml0aWFsaXplIHRoZSBub2Rl J3MgZXhlY3V0aW9uIHN0YXRlCi0JICovCi0JRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgcmFu Z2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcywKLQkJCQkJICAgYm1zX2NvcHkocGxhbm5l ZHN0bXQtPnVucHJ1bmFibGVSZWxpZHMpKTsKLQotCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBw bGFubmVkc3RtdDsKLQllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MgPSBwbGFubmVkc3RtdC0+ cGFydFBydW5lSW5mb3M7Ci0KLQkvKgotCSAqIFBlcmZvcm0gcnVudGltZSAiaW5pdGlhbCIgcHJ1 bmluZyB0byBpZGVudGlmeSB3aGljaCBjaGlsZCBzdWJwbGFucywKLQkgKiBjb3JyZXNwb25kaW5n IHRvIHRoZSBjaGlsZHJlbiBvZiBwbGFuIG5vZGVzIHRoYXQgY29udGFpbgotCSAqIFBhcnRpdGlv blBydW5lSW5mbyBzdWNoIGFzIEFwcGVuZCwgd2lsbCBub3QgYmUgZXhlY3V0ZWQuIFRoZSByZXN1 bHRzLAotCSAqIHdoaWNoIGFyZSBiaXRtYXBzZXRzIG9mIGluZGV4ZXMgb2YgdGhlIGNoaWxkIHN1 YnBsYW5zIHRoYXQgd2lsbCBiZQotCSAqIGV4ZWN1dGVkLCBhcmUgc2F2ZWQgaW4gZXNfcGFydF9w cnVuZV9yZXN1bHRzLiAgVGhlc2UgcmVzdWx0cyBjb3JyZXNwb25kCi0JICogdG8gZWFjaCBQYXJ0 aXRpb25QcnVuZUluZm8gZW50cnksIGFuZCB0aGUgZXNfcGFydF9wcnVuZV9yZXN1bHRzIGxpc3Qg aXMKLQkgKiBwYXJhbGxlbCB0byBlc19wYXJ0X3BydW5lX2luZm9zLgotCSAqLwotCUV4ZWNDcmVh dGVQYXJ0aXRpb25QcnVuZVN0YXRlcyhlc3RhdGUpOwotCUV4ZWNEb0luaXRpYWxQcnVuaW5nKGVz dGF0ZSk7CisJLyogRXhlY3V0b3JQcmVwKCkgbXVzdCBoYXZlIGJlZW4gZG9uZS4gKi8KKwlBc3Nl cnQocXVlcnlEZXNjLT5lc3RhdGUpOwogCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jv d01hcmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY1BhcmFsbGVsLmMKaW5kZXggYWM4NGFmMjk0YzkuLjAyNDc4MGQzNTE2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTMwMCw3ICsxMzAwLDggQEAgRXhlY1BhcmFs bGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwKIAly ZXR1cm4gQ3JlYXRlUXVlcnlEZXNjKHBzdG10LAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJ CQkgICBHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCi0JCQkJCQkgICByZWNl aXZlciwgcGFyYW1MSSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKKwkJCQkJCSAgIHJlY2Vp dmVyLCBwYXJhbUxJLCBOVUxMLCBpbnN0cnVtZW50X29wdGlvbnMsCisJCQkJCQkgICBOVUxMKTsK IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXggNGNhMzQyYTQzZWYuLmM5M2Uy NjY0Y2ZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtMTM2OCw3ICsxMzY4LDggQEAg cG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBm Y2FjaGUpCiAJCQkJCQkJIGRlc3QsCiAJCQkJCQkJIGZjYWNoZS0+cGFyYW1MSSwKIAkJCQkJCQkg ZXMtPnFkID8gZXMtPnFkLT5xdWVyeUVudiA6IE5VTEwsCi0JCQkJCQkJIDApOworCQkJCQkJCSAw LAorCQkJCQkJCSBOVUxMKTsKIAogCS8qIFV0aWxpdHkgY29tbWFuZHMgZG9uJ3QgbmVlZCBFeGVj dXRvci4gKi8KIAlpZiAoZXMtPnFkLT5vcGVyYXRpb24gIT0gQ01EX1VUSUxJVFkpCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3Nw aS5jCmluZGV4IDMwMTlhM2IyYjk3Li45OTRhNjlhMWM4ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTE2 ODUsNiArMTY4NSw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1l LCBTUElQbGFuUHRyIHBsYW4sCiAJCQkJCSAgcXVlcnlfc3RyaW5nLAogCQkJCQkgIHBsYW5zb3Vy Y2UtPmNvbW1hbmRUYWcsCiAJCQkJCSAgc3RtdF9saXN0LAorCQkJCQkgIE5JTCwKIAkJCQkJICBj cGxhbik7CiAKIAkvKgpAQCAtMjQ5OSw2ICsyNTAwLDggQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJ UGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJQ2FjaGVk UGxhblNvdXJjZSAqcGxhbnNvdXJjZSA9IChDYWNoZWRQbGFuU291cmNlICopIGxmaXJzdChsYzEp OwogCQlMaXN0CSAgICpzdG10X2xpc3Q7CiAJCUxpc3RDZWxsICAgKmxjMjsKKwkJTGlzdAkgICAq cHJlcF9lc3RhdGVzOworCQlMaXN0Q2VsbCAgICpwcmVwX2xjOwogCiAJCXNwaWNhbGxiYWNrYXJn LnF1ZXJ5ID0gcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nOwogCkBAIC0yNTc3LDYgKzI1ODAsNyBA QCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRp b25zICpvcHRpb25zLAogCQkJCQkJCSAgcGxhbl9vd25lciwgX1NQSV9jdXJyZW50LT5xdWVyeUVu dik7CiAKIAkJc3RtdF9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKKwkJcHJlcF9lc3RhdGVzID0g TklMOwogCiAJCS8qCiAJCSAqIElmIHdlIHdlcmVuJ3QgZ2l2ZW4gYSBzcGVjaWZpYyBzbmFwc2hv dCB0byB1c2UsIGFuZCB0aGUgc3RhdGVtZW50CkBAIC0yNjE0LDkgKzI2MTgsMTEgQEAgX1NQSV9l eGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0 aW9ucywKIAkJCX0KIAkJfQogCisJCXByZXBfbGMgPSBsaXN0X2hlYWQocHJlcF9lc3RhdGVzKTsK IAkJZm9yZWFjaChsYzIsIHN0bXRfbGlzdCkKIAkJewogCQkJUGxhbm5lZFN0bXQgKnN0bXQgPSBs Zmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMyKTsKKwkJCUVTdGF0ZSAqcHJlcF9lc3RhdGUgPSBu ZXh0X3ByZXBfZXN0YXRlKHByZXBfZXN0YXRlcywgJnByZXBfbGMpOwogCQkJYm9vbAkJY2FuU2V0 VGFnID0gc3RtdC0+Y2FuU2V0VGFnOwogCQkJRGVzdFJlY2VpdmVyICpkZXN0OwogCkBAIC0yNjk0 LDcgKzI3MDAsOCBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQ SUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJCQkJCQkJCWRlc3QsCiAJCQkJCQkJCQkJb3B0 aW9ucy0+cGFyYW1zLAogCQkJCQkJCQkJCV9TUElfY3VycmVudC0+cXVlcnlFbnYsCi0JCQkJCQkJ CQkJMCk7CisJCQkJCQkJCQkJMCwKKwkJCQkJCQkJCQlwcmVwX2VzdGF0ZSk7CiAJCQkJcmVzID0g X1NQSV9wcXVlcnkocWRlc2MsIGZpcmVfdHJpZ2dlcnMsCiAJCQkJCQkJCSAgY2FuU2V0VGFnID8g b3B0aW9ucy0+dGNvdW50IDogMCk7CiAJCQkJRnJlZVF1ZXJ5RGVzYyhxZGVzYyk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMKaW5kZXggZDAxYTA5ZGQwYzQuLmNkMWU0MjljZWVkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBA IC0xMjMwLDYgKzEyMzAsNyBAQCBleGVjX3NpbXBsZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9z dHJpbmcpCiAJCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJCSAgY29tbWFuZFRhZywKIAkJCQkJ CSAgcGxhbnRyZWVfbGlzdCwKKwkJCQkJCSAgTklMLAogCQkJCQkJICBOVUxMKTsKIAogCQkvKgpA QCAtMjAyOSw2ICsyMDMwLDcgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9t ZXNzYWdlKQogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJICBwc3JjLT5jb21tYW5kVGFnLAog CQkJCQkgIGNwbGFuLT5zdG10X2xpc3QsCisJCQkJCSAgTklMLAogCQkJCQkgIGNwbGFuKTsKIAog CS8qIFBvcnRhbCBpcyBkZWZpbmVkLCBzZXQgdGhlIHBsYW4gSUQgYmFzZWQgb24gaXRzIGNvbnRl bnRzLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNr ZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggZDhmYzc1ZDBiYjkuLmIxODI2NjQ4N2JiIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1 ZXJ5LmMKQEAgLTM3LDYgKzM3LDcgQEAgUG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxMOwogCiAK IHN0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKKwkJCQkJCSBFU3Rh dGUgKnByZXBfZXN0YXRlLAogCQkJCQkJIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkg UGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYs CkBAIC03Miw3ICs3Myw4IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0 bXQsCiAJCQkJRGVzdFJlY2VpdmVyICpkZXN0LAogCQkJCVBhcmFtTGlzdEluZm8gcGFyYW1zLAog CQkJCVF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAotCQkJCWludCBpbnN0cnVtZW50X29wdGlv bnMpCisJCQkJaW50IGluc3RydW1lbnRfb3B0aW9ucywKKwkJCQlFU3RhdGUgKnByZXBfZXN0YXRl KQogewogCVF1ZXJ5RGVzYyAgKnFkID0gcGFsbG9jX29iamVjdChRdWVyeURlc2MpOwogCkBAIC05 Myw2ICs5NSw5IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCiAJ cWQtPnBsYW5zdGF0ZSA9IE5VTEw7CiAJcWQtPnRvdGFsdGltZSA9IE5VTEw7CiAKKwkvKiBVc2Ug dGhlIEVTdGF0ZSBjcmVhdGVkIGJ5IEV4ZWN1dG9yUHJlcCgpIGlmIGFscmVhZHkgZG9uZS4gKi8K KwlxZC0+ZXN0YXRlID0gcHJlcF9lc3RhdGU7CisKIAkvKiBub3QgeWV0IGV4ZWN1dGVkICovCiAJ cWQtPmFscmVhZHlfZXhlY3V0ZWQgPSBmYWxzZTsKIApAQCAtMTIzLDYgKzEyOCw3IEBAIEZyZWVR dWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykKICAqCQlQT1JUQUxfT05FX1JFVFVSTklORywgb3Ig UE9SVEFMX09ORV9NT0RfV0lUSCBwb3J0YWwKICAqCiAgKglwbGFuOiB0aGUgcGxhbiB0cmVlIGZv ciB0aGUgcXVlcnkKKyAqCXByZXBfZXN0YXRlOiBFU3RhdGUgY3JlYXRlZCBpbiBFeGVjdXRvclBy ZXAoKSBmb3IgdGhlIHF1ZXJ5LCBpZiBhbnkKICAqCXNvdXJjZVRleHQ6IHRoZSBzb3VyY2UgdGV4 dCBvZiB0aGUgcXVlcnkKICAqCXBhcmFtczogYW55IHBhcmFtZXRlcnMgbmVlZGVkCiAgKglkZXN0 OiB3aGVyZSB0byBzZW5kIHJlc3VsdHMKQEAgLTEzNSw2ICsxNDEsNyBAQCBGcmVlUXVlcnlEZXNj KFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKi8KIHN0YXRpYyB2b2lkCiBQcm9jZXNzUXVlcnkoUGxhbm5l ZFN0bXQgKnBsYW4sCisJCQkgRVN0YXRlICpwcmVwX2VzdGF0ZSwKIAkJCSBjb25zdCBjaGFyICpz b3VyY2VUZXh0LAogCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52LApAQCAtMTQ4LDcgKzE1NSw4IEBAIFByb2Nlc3NRdWVyeShQbGFubmVkU3Rt dCAqcGxhbiwKIAkgKi8KIAlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgc291cmNl VGV4dCwKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAotCQkJ CQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKKwkJCQkJCQkJZGVzdCwgcGFyYW1zLCBx dWVyeUVudiwgMCwKKwkJCQkJCQkJcHJlcF9lc3RhdGUpOwogCiAJLyoKIAkgKiBDYWxsIEV4ZWN1 dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCkBAIC00OTUsNyArNTAz LDEwIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAog CQkJCQkJCQkJCQlOb25lX1JlY2VpdmVyLAogCQkJCQkJCQkJCQlwYXJhbXMsCiAJCQkJCQkJCQkJ CXBvcnRhbC0+cXVlcnlFbnYsCi0JCQkJCQkJCQkJCTApOworCQkJCQkJCQkJCQkwLAorCQkJCQkJ CQkJCQlwb3J0YWwtPnByZXBfZXN0YXRlcyA/CisJCQkJCQkJCQkJCShFU3RhdGUgKikgbGluaXRp YWwocG9ydGFsLT5wcmVwX2VzdGF0ZXMpIDoKKwkJCQkJCQkJCQkJTlVMTCk7CiAKIAkJCQkvKgog CQkJCSAqIElmIGl0J3MgYSBzY3JvbGxhYmxlIGN1cnNvciwgZXhlY3V0b3IgbmVlZHMgdG8gc3Vw cG9ydApAQCAtMTE4NSw2ICsxMTk2LDcgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwK IHsKIAlib29sCQlhY3RpdmVfc25hcHNob3Rfc2V0ID0gZmFsc2U7CiAJTGlzdENlbGwgICAqc3Rt dGxpc3RfaXRlbTsKKwlMaXN0Q2VsbCAgICpwcmVwX2xjOwogCiAJLyoKIAkgKiBJZiB0aGUgZGVz dGluYXRpb24gaXMgRGVzdFJlbW90ZUV4ZWN1dGUsIGNoYW5nZSB0byBEZXN0Tm9uZS4gIFRoZQpA QCAtMTIwNSw5ICsxMjE3LDExIEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJICog TG9vcCB0byBoYW5kbGUgdGhlIGluZGl2aWR1YWwgcXVlcmllcyBnZW5lcmF0ZWQgZnJvbSBhIHNp bmdsZSBwYXJzZXRyZWUKIAkgKiBieSBhbmFseXNpcyBhbmQgcmV3cml0ZS4KIAkgKi8KKwlwcmVw X2xjID0gbGlzdF9oZWFkKHBvcnRhbC0+cHJlcF9lc3RhdGVzKTsKIAlmb3JlYWNoKHN0bXRsaXN0 X2l0ZW0sIHBvcnRhbC0+c3RtdHMpCiAJewogCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBsZmlyc3Rf bm9kZShQbGFubmVkU3RtdCwgc3RtdGxpc3RfaXRlbSk7CisJCUVTdGF0ZSAqcHJlcF9lc3RhdGUg PSBuZXh0X3ByZXBfZXN0YXRlKHBvcnRhbC0+cHJlcF9lc3RhdGVzLCAmcHJlcF9sYyk7CiAKIAkJ LyoKIAkJICogSWYgd2UgZ290IGEgY2FuY2VsIHNpZ25hbCBpbiBwcmlvciBjb21tYW5kLCBxdWl0 CkBAIC0xMjY1LDcgKzEyNzksNyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkJ aWYgKHBzdG10LT5jYW5TZXRUYWcpCiAJCQl7CiAJCQkJLyogc3RhdGVtZW50IGNhbiBzZXQgdGFn IHN0cmluZyAqLwotCQkJCVByb2Nlc3NRdWVyeShwc3RtdCwKKwkJCQlQcm9jZXNzUXVlcnkocHN0 bXQsIHByZXBfZXN0YXRlLAogCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJIHBv cnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LApAQCAtMTI3NCw3 ICsxMjg4LDcgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCWVsc2UKIAkJCXsK IAkJCQkvKiBzdG10IGFkZGVkIGJ5IHJld3JpdGUgY2Fubm90IHNldCB0YWcgKi8KLQkJCQlQcm9j ZXNzUXVlcnkocHN0bXQsCisJCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LCBwcmVwX2VzdGF0ZSwKIAkJ CQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAogCQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywK IAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L21tZ3IvcG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmlu ZGV4IGMxYTUzZTY1OGNiLi45NDFlOTUwMTBjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvbW1nci9wb3J0YWxtZW0uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1l bS5jCkBAIC0yODQsNiArMjg0LDcgQEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwK IAkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJICBDb21tYW5kVGFnIGNvbW1hbmRU YWcsCiAJCQkJICBMaXN0ICpzdG10cywKKwkJCQkgIExpc3QgKnByZXBfZXN0YXRlcywKIAkJCQkg IENhY2hlZFBsYW4gKmNwbGFuKQogewogCUFzc2VydChQb3J0YWxJc1ZhbGlkKHBvcnRhbCkpOwpA QCAtMjk3LDYgKzI5OCw3IEBAIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJcG9y dGFsLT5jb21tYW5kVGFnID0gY29tbWFuZFRhZzsKIAlTZXRRdWVyeUNvbXBsZXRpb24oJnBvcnRh bC0+cWMsIGNvbW1hbmRUYWcsIDApOwogCXBvcnRhbC0+c3RtdHMgPSBzdG10czsKKwlwb3J0YWwt PnByZXBfZXN0YXRlcyA9IHByZXBfZXN0YXRlczsKIAlwb3J0YWwtPmNwbGFuID0gY3BsYW47CiAJ cG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfREVGSU5FRDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaApp bmRleCA4NjIyNmY4ZGI3MC4uMzc1NmExMTM0NWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAg LTYzLDcgKzYzLDggQEAgZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0 eVN0bXQsIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkJICBFeHBsYWluU3RhdGUgKmVzLCBQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcyk7CiAKLWV4dGVy biB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVz ZSAqaW50bywKK2V4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVk c3RtdCwgRVN0YXRlICpwcmVwX2VzdGF0ZSwKKwkJCQkJCSAgIEludG9DbGF1c2UgKmludG8sCiAJ CQkJCQkgICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJ CSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKIAkJ CQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVz Yy5oCmluZGV4IGQzYTU3MjQyODQ0Li4zYTIxNjljOTYxMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVz Yy5oCkBAIC00Myw3ICs0Myw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCVF1ZXJ5RW52 aXJvbm1lbnQgKnF1ZXJ5RW52OyAvKiBxdWVyeSBlbnZpcm9ubWVudCBwYXNzZWQgaW4gKi8KIAlp bnQJCQlpbnN0cnVtZW50X29wdGlvbnM7IC8qIE9SIG9mIEluc3RydW1lbnRPcHRpb24gZmxhZ3Mg Ki8KIAotCS8qIFRoZXNlIGZpZWxkcyBhcmUgc2V0IGJ5IEV4ZWN1dG9yU3RhcnQgKi8KKwkvKiBU aGVzZSBmaWVsZHMgYXJlIHNldCBieSBFeGVjdXRvclN0YXJ0IG9yIEV4ZWN1dG9yUHJlcCAqLwog CVR1cGxlRGVzYwl0dXBEZXNjOwkJLyogZGVzY3JpcHRvciBmb3IgcmVzdWx0IHR1cGxlcyAqLwog CUVTdGF0ZQkgICAqZXN0YXRlOwkJCS8qIGV4ZWN1dG9yJ3MgcXVlcnktd2lkZSBzdGF0ZSAqLwog CVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZTsJCS8qIHRyZWUgb2YgcGVyLXBsYW4tbm9kZSBzdGF0ZSAq LwpAQCAtNjMsNyArNjMsOCBAQCBleHRlcm4gUXVlcnlEZXNjICpDcmVhdGVRdWVyeURlc2MoUGxh bm5lZFN0bXQgKnBsYW5uZWRzdG10LAogCQkJCQkJCQkgIERlc3RSZWNlaXZlciAqZGVzdCwKIAkJ CQkJCQkJICBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCQkJICBRdWVyeUVudmlyb25tZW50 ICpxdWVyeUVudiwKLQkJCQkJCQkJICBpbnQgaW5zdHJ1bWVudF9vcHRpb25zKTsKKwkJCQkJCQkJ ICBpbnQgaW5zdHJ1bWVudF9vcHRpb25zLAorCQkJCQkJCQkgIEVTdGF0ZSAqcHJlcF9lc3RhdGUp OwogCiBleHRlcm4gdm9pZCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpOwogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaAppbmRleCBkNDZiYTU5ODk1ZC4uZTZmYTEyMmU2ZTQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2xvY2tv cHRpb25zLmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxz L21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKIAogCiAvKgpAQCAtMjM0 LDYgKzIzNSwzMSBAQCBFeGVjR2V0SnVua0F0dHJpYnV0ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwg QXR0ck51bWJlciBhdHRubywgYm9vbCAqaXNOdWxsKQogICovCiBleHRlcm4gdm9pZCBFeGVjdXRv clN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIHN0 YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwor CitleHRlcm4gRVN0YXRlICpFeGVjdXRvclByZXAoUGxhbm5lZFN0bXQgKnBzdG10LAorCQkJCQkJ CVBhcmFtTGlzdEluZm8gcGFyYW1zLAorCQkJCQkJCVJlc291cmNlT3duZXIgb3duZXIsCisJCQkJ CQkJYm9vbCBkb19pbml0aWFsX3BydW5pbmcsCisJCQkJCQkJaW50IGVmbGFncyk7CisKKy8qCisg KiBXYWxrIGEgcHJlcF9lc3RhdGVzIGxpc3QgaW4gc3RlcCB3aXRoIGEgcGFyYWxsZWwgc3RtdF9s aXN0IGl0ZXJhdGlvbi4KKyAqIFJldHVybnMgdGhlIG5leHQgRVN0YXRlIChvciBOVUxMKSBhbmQg YWR2YW5jZXMgKmxjLiAgU2FmZSB3aGVuCisgKiBwcmVwX2VzdGF0ZXMgaXMgTklMOyBqdXN0IHJl dHVybnMgTlVMTCBmb3IgZXZlcnkgY2FsbC4KKyAqLworc3RhdGljIGlubGluZSBFU3RhdGUgKgor bmV4dF9wcmVwX2VzdGF0ZShMaXN0ICpwcmVwX2VzdGF0ZXMsIExpc3RDZWxsICoqbGMpCit7CisJ RVN0YXRlICpyZXN1bHQgPSBOVUxMOworCisJaWYgKCpsYyAhPSBOVUxMKQorCXsKKwkJcmVzdWx0 ID0gKEVTdGF0ZSAqKSBsZmlyc3QoKmxjKTsKKwkJKmxjID0gbG5leHQocHJlcF9lc3RhdGVzLCAq bGMpOworCX0KKwlyZXR1cm4gcmVzdWx0OworfQorCiBleHRlcm4gdm9pZCBFeGVjdXRvclJ1bihR dWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCVNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLCB1aW50 NjQgY291bnQpOwogZXh0ZXJuIHZvaWQgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpx dWVyeURlc2MsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDYzYzA2N2Q1YWFlLi44NGQ4MGUzYWIw ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTc3NSw3ICs3NzUsNiBAQCB0eXBlZGVmIHN0cnVj dCBFU3RhdGUKIAlMaXN0CSAgICplc19pbnNlcnRfcGVuZGluZ19tb2RpZnl0YWJsZXM7CiB9IEVT dGF0ZTsKIAotCiAvKgogICogRXhlY1Jvd01hcmsgLQogICoJICAgcnVudGltZSByZXByZXNlbnRh dGlvbiBvZiBGT1IgW0tFWV0gVVBEQVRFL1NIQVJFIGNsYXVzZXMKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3V0aWxzL3BvcnRhbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXgg YTdiZWRiMTJjMTguLmY2OWI0YjliNDc5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9w b3J0YWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaApAQCAtMTM3LDYgKzEzNyw3 IEBAIHR5cGVkZWYgc3RydWN0IFBvcnRhbERhdGEKIAlDb21tYW5kVGFnCWNvbW1hbmRUYWc7CQkv KiBjb21tYW5kIHRhZyBmb3Igb3JpZ2luYWwgcXVlcnkgKi8KIAlRdWVyeUNvbXBsZXRpb24gcWM7 CQkJLyogY29tbWFuZCBjb21wbGV0aW9uIGRhdGEgZm9yIGV4ZWN1dGVkIHF1ZXJ5ICovCiAJTGlz dAkgICAqc3RtdHM7CQkJLyogbGlzdCBvZiBQbGFubmVkU3RtdHMgKi8KKwlMaXN0CSAgICpwcmVw X2VzdGF0ZXM7CS8qIGxpc3Qgb2YgRVN0YXRlcyB3aGVyZSBuZWVkZWQgKi8KIAlDYWNoZWRQbGFu ICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBzdG10cyBhcmUgZnJvbSBvbmUgKi8KIAogCVBh cmFtTGlzdEluZm8gcG9ydGFsUGFyYW1zOyAvKiBwYXJhbXMgdG8gcGFzcyB0byBxdWVyeSAqLwpA QCAtMjQwLDYgKzI0MSw3IEBAIGV4dGVybiB2b2lkIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBw b3J0YWwsCiAJCQkJCQkJICBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJCSAgQ29tbWFu ZFRhZyBjb21tYW5kVGFnLAogCQkJCQkJCSAgTGlzdCAqc3RtdHMsCisJCQkJCQkJICBMaXN0ICpw cmVwX2VzdGF0ZXMsCiAJCQkJCQkJICBDYWNoZWRQbGFuICpjcGxhbik7CiBleHRlcm4gUGxhbm5l ZFN0bXQgKlBvcnRhbEdldFByaW1hcnlTdG10KFBvcnRhbCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQg UG9ydGFsQ3JlYXRlSG9sZFN0b3JlKFBvcnRhbCBwb3J0YWwpOwotLSAKMi40Ny4zCgo= --0000000000008178b5064c9006a7 Content-Type: application/octet-stream; name="v7-0004-Use-pruning-aware-locking-in-cached-plans.patch" Content-Disposition: attachment; filename="v7-0004-Use-pruning-aware-locking-in-cached-plans.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmip259r2 RnJvbSBlMDEzMGVmMTFiZmI5N2RiYTVhZmNlMjIzNzBjYmE1ZjM3NDFhYjBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjI6MzA6NTIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY3 IDQvNl0gVXNlIHBydW5pbmctYXdhcmUgbG9ja2luZyBpbiBjYWNoZWQgcGxhbnMKCkV4dGVuZCBH ZXRDYWNoZWRQbGFuKCkgdG8gcGVyZm9ybSBFeGVjdXRvclByZXAoKSBvbiBlYWNoIHBsYW5uZWQK c3RhdGVtZW50LCBjYXB0dXJpbmcgdW5wcnVuZWQgcmVsaWRzIGFuZCBpbml0aWFsIHBydW5pbmcg cmVzdWx0cy4KVXNlIHRoaXMgZGF0YSB0byBhY3F1aXJlIGV4ZWN1dGlvbiBsb2NrcyBvbmx5IG9u IHN1cnZpdmluZyBwYXJ0aXRpb25zLAphdm9pZGluZyB1bm5lY2Vzc2FyeSBsb2NraW5nIG9mIHBy dW5lZCB0YWJsZXMgZXZlbiB3aGVuIHVzaW5nIGNhY2hlZApwbGFucy4KCkludHJvZHVjZSBDYWNo ZWRQbGFuUHJlcERhdGEgdG8gY2FycnkgdGhlIEVTdGF0ZXMgY3JlYXRlZCBieQpFeGVjdXRvclBy ZXAoKSB0aHJvdWdoIHRoZSBwbGFuIGNhY2hpbmcgbGF5ZXIuIFRoZSBwcmVwX2VzdGF0ZXMKbGlz dCBpcyBpbmRleGVkIG9uZS10by1vbmUgd2l0aCBDYWNoZWRQbGFuLT5zdG10X2xpc3QgYW5kIGlz CnBvcHVsYXRlZCB3aGVuIEdldENhY2hlZFBsYW4oKSBwcmVwYXJlcyBhIHJldXNlZCBnZW5lcmlj IHBsYW4uCkFkanVzdCBjYWxsIHNpdGVzIGluIFNQSSwgZnVuY3Rpb25zLCBwb3J0YWxzLCBhbmQg RVhQTEFJTiB0bwpwcm9wYWdhdGUgdGhpcyBkYXRhLgoKUGFydGl0aW9uIHBydW5pbmcgZXhwcmVz c2lvbnMgbWF5IGNhbGwgUEwgZnVuY3Rpb25zIHRoYXQgcmVxdWlyZQphbiBhY3RpdmUgc25hcHNo b3QgKGUuZy4sIHZpYSBFbnN1cmVQb3J0YWxTbmFwc2hvdEV4aXN0cygpKS4KQWNxdWlyZUV4ZWN1 dG9yTG9ja3NVbnBydW5lZCgpIGVzdGFibGlzaGVzIG9uZSBiZWZvcmUgY2FsbGluZwpFeGVjdXRv clByZXAoKSBpZiBuZWVkZWQsIGVuc3VyaW5nIHRoZXNlIGV4cHJlc3Npb25zIGNhbiBleGVjdXRl CmNvcnJlY3RseSBkdXJpbmcgcGxhbiBjYWNoZSB2YWxpZGF0aW9uLgoKVG8gbWFpbnRhaW4gY29y cmVjdG5lc3Mgd2hlbiBhbGwgdGFyZ2V0IHBhcnRpdGlvbnMgYXJlIHBydW5lZCwgYWxzbwpyZWlu c3RhdGUgdGhlIGZpcnN0UmVzdWx0UmVsIGxvY2tpbmcgYmVoYXZpb3IgbG9zdCBpbiBjb21taXQK MjgzMTdkZTcyLiBUaGF0IGNvbW1pdCByZXF1aXJlZCB0aGUgZmlyc3QgTW9kaWZ5VGFibGUgdGFy Z2V0IHRvCnJlbWFpbiBpbml0aWFsaXplZCBmb3IgZXhlY3V0b3IgYXNzdW1wdGlvbnMgdG8gaG9s ZC4gV2Ugbm93CmV4cGxpY2l0bHkgdHJhY2sgdGhlc2UgcmVsaWRzIGluIFBsYW5uZXJHbG9iYWwg YW5kIFBsYW5uZWRTdG10IHNvIHRoZXkKYXJlIGxvY2tlZCBldmVuIGlmIHBydW5lZCwgcHJlc2Vy dmluZyB0aGF0IHJ1bGUgYWNyb3NzIGNhY2hlZCBwbGFuCnJldXNlLgoKQWRkIGEgcmVncmVzc2lv biB0ZXN0IHRoYXQgY2F1c2VzIGEgZ2VuZXJpYyBwbGFuIHRvIGJlY29tZSBpbnZhbGlkCndoaWxl IHBydW5pbmctYXdhcmUgc2V0dXAgaXMgcnVubmluZy4gVGhlIHBydW5pbmcgZXhwcmVzc2lvbiBj YWxscyBhCmZ1bmN0aW9uIHRoYXQgY2FuIHBlcmZvcm0gRERMIG9uIGEgcGFydGl0aW9uLCBtYWtp bmcgdGhlIHBsYW4gc3RhbGUKZHVyaW5nIHJldXNlLgoKVGhlIHRlc3QncyBwdXJwb3NlIGlzIHRv IGRyaXZlIGV4ZWN1dGlvbiB0aHJvdWdoIHRoZSBpbnZhbGlkYXRpb24KcGF0aCB0aGF0IGRpc2Nh cmRzIGFueSBFeGVjdXRvclByZXAgc3RhdGUgY3JlYXRlZCBiZWZvcmUgdGhlIHBsYW4gd2FzCmZv dW5kIGludmFsaWQsIHByb3ZpZGluZyBjb3ZlcmFnZSBmb3IgdGhhdCBjbGVhbnVwIGxvZ2ljLgot LS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8ICAxOSAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8ICAgNSArLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgICAgICAgICAgICAgICAgICAgIHwgIDI2ICstCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgICAgICAgICAgfCAgIDEgKwogc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgICAgICAgIHwgIDIwICsrCiBzcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8IDI1NSArKysrKysrKysr KysrKysrKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAgICAgICAgICB8 ICAgMyArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICAgICAgICAgfCAg MTAgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgICAgICAgIHwgIDI5 ICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQgfCAgNTAg KysrLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wbGFuY2FjaGUub3V0ICAgICAgIHwgIDYy ICsrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsICAgICAgfCAg MjQgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5jYWNoZS5zcWwgICAgICAgICAgICB8ICA1 MSArKysrCiAxNSBmaWxlcyBjaGFuZ2VkLCA1MzYgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IDAwNWZiYjQ4YWE1Li5lOGNkNDcxMzFjZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMTU0LDYgKzE1NCw3IEBAIEV4ZWN1dGVRdWVyeShQ YXJzZVN0YXRlICpwc3RhdGUsCiB7CiAJUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5OwogCUNhY2hl ZFBsYW4gKmNwbGFuOworCUNhY2hlZFBsYW5QcmVwRGF0YSBjcHJlcCA9IHswfTsKIAlMaXN0CSAg ICpwbGFuX2xpc3Q7CiAJUGFyYW1MaXN0SW5mbyBwYXJhbUxJID0gTlVMTDsKIAlFU3RhdGUJICAg KmVzdGF0ZSA9IE5VTEw7CkBAIC0xOTMsNyArMTk0LDEwIEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0 YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkgICBlbnRyeS0+cGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5n KTsKIAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiByZWZjb3VudCBm b3IgcG9ydGFsICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKGVudHJ5LT5wbGFuc291cmNlLCBw YXJhbUxJLCBOVUxMLCBOVUxMKTsKKwkvKiBLZWVwIEV4ZWN1dG9yUHJlcCBzdGF0ZSB3aXRoIHRo ZSBwb3J0YWwgYW5kIGl0cyByZXNvd25lci4gKi8KKwljcHJlcC5jb250ZXh0ID0gcG9ydGFsLT5w b3J0YWxDb250ZXh0OworCWNwcmVwLm93bmVyID0gcG9ydGFsLT5yZXNvd25lcjsKKwljcGxhbiA9 IEdldENhY2hlZFBsYW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIE5VTEwsICZj cHJlcCk7CiAJcGxhbl9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKIAogCS8qCkBAIC0yMDUsNyAr MjA5LDcgQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJICBxdWVyeV9z dHJpbmcsCiAJCQkJCSAgZW50cnktPnBsYW5zb3VyY2UtPmNvbW1hbmRUYWcsCiAJCQkJCSAgcGxh bl9saXN0LAotCQkJCQkgIE5JTCwKKwkJCQkJICBjcHJlcC5wcmVwX2VzdGF0ZXMsCiAJCQkJCSAg Y3BsYW4pOwogCiAJLyoKQEAgLTU3NSw2ICs1NzksNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4 ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywK IAlQcmVwYXJlZFN0YXRlbWVudCAqZW50cnk7CiAJY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nOwog CUNhY2hlZFBsYW4gKmNwbGFuOworCUNhY2hlZFBsYW5QcmVwRGF0YSBjcHJlcCA9IHswfTsKIAlM aXN0CSAgICpwbGFuX2xpc3Q7CiAJTGlzdAkgICAqcHJlcF9lc3RhdGVzOwogCUxpc3RDZWxsICAg KnA7CkBAIC02MzMsOCArNjM4LDE0IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQg KmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCX0KIAogCS8q IFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBhY3F1aXJlIGEgdHJhbnNpZW50IHJlZmNvdW50ICovCisJ LyogRXhlY3V0b3JQcmVwIHN0YXRlIGlzIGxvY2FsIHRvIHRoaXMgRVhQTEFJTiBFWEVDVVRFIGNh bGwuICovCisJY3ByZXAuY29udGV4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OworCWNwcmVwLm93 bmVyID0gQ3VycmVudFJlc291cmNlT3duZXI7CisJaWYgKGVzLT5nZW5lcmljKQorCQljcHJlcC5l ZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDOwogCWNwbGFuID0gR2V0Q2FjaGVkUGxh bihlbnRyeS0+cGxhbnNvdXJjZSwgcGFyYW1MSSwKLQkJCQkJCSAgQ3VycmVudFJlc291cmNlT3du ZXIsIHBzdGF0ZS0+cF9xdWVyeUVudik7CisJCQkJCQkgIEN1cnJlbnRSZXNvdXJjZU93bmVyLCBw c3RhdGUtPnBfcXVlcnlFbnYsCisJCQkJCQkgICZjcHJlcCk7CiAKIAlJTlNUUl9USU1FX1NFVF9D VVJSRU5UKHBsYW5kdXJhdGlvbik7CiAJSU5TVFJfVElNRV9TVUJUUkFDVChwbGFuZHVyYXRpb24s IHBsYW5zdGFydCk7CkBAIC02NTMsNyArNjY0LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVj dXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJ fQogCiAJcGxhbl9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKLQlwcmVwX2VzdGF0ZXMgPSBOSUw7 CisJcHJlcF9lc3RhdGVzID0gY3ByZXAucHJlcF9lc3RhdGVzOwogCiAJLyogRXhwbGFpbiBlYWNo IHF1ZXJ5ICovCiAJcHJlcF9sYyA9IGxpc3RfaGVhZChwcmVwX2VzdGF0ZXMpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9mdW5jdGlvbnMuYwppbmRleCBjOTNlMjY2NGNmZC4uNjVkZmFlNThkY2YgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2Z1bmN0aW9ucy5jCkBAIC02OTgsNiArNjk4LDcgQEAgaW5pdF9leGVjdXRpb25fc3RhdGUo U1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJZmNhY2hlLT5jcGxhbiA9IEdldENhY2hlZFBs YW4ocGxhbnNvdXJjZSwKIAkJCQkJCQkJICBmY2FjaGUtPnBhcmFtTEksCiAJCQkJCQkJCSAgZmNh Y2hlLT5jb3duZXIsCisJCQkJCQkJCSAgTlVMTCwKIAkJCQkJCQkJICBOVUxMKTsKIAogCS8qCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDc5M2M3NmQ0ZjgyLi5hN2E0 YmFhZjhhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTQ4NTgs OCArNDg1OCw4IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGFzIGEgcmVmZXJlbmNlIGZvciBidWlsZGluZyB0 aGUgUmVzdWx0UmVsSW5mbyBvZiB0aGUgdGFyZ2V0IHBhcnRpdGlvbi4KIAkgKiBJbiBlaXRoZXIg Y2FzZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hpY2ggcmVzdWx0IHJlbGF0aW9uIGlzIGtlcHQsIHNv IHdlCiAJICoganVzdCBrZWVwIHRoZSBmaXJzdCBvbmUsIGlmIGFsbCBvdGhlcnMgaGF2ZSBiZWVu IHBydW5lZC4gIFNlZSBhbHNvLAotCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCksIHdoaWNoIGVu c3VyZXMgdGhhdCB0aGlzIGZpcnN0IHJlc3VsdCByZWxhdGlvbgotCSAqIGhhcyBiZWVuIGxvY2tl ZC4KKwkgKiBBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVkKCksIHdoaWNoIGVuc3VyZXMgdGhh dCB0aGlzIGZpcnN0IHJlc3VsdAorCSAqIHJlbGF0aW9uIGhhcyBiZWVuIGxvY2tlZC4KIAkgKi8K IAlpID0gMDsKIAlmb3JlYWNoKGwsIG5vZGUtPnJlc3VsdFJlbGF0aW9ucykKQEAgLTQ4NzMsNiAr NDg3Myw3IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJLyogYWxsIHJlc3VsdCByZWxhdGlvbnMgcHJ1bmVkOyBr ZWVwIHRoZSBmaXJzdCBvbmUgKi8KIAkJCWtlZXBfcmVsID0gdHJ1ZTsKIAkJCXJ0aSA9IGxpbml0 aWFsX2ludChub2RlLT5yZXN1bHRSZWxhdGlvbnMpOworCQkJQXNzZXJ0KGxpc3RfbWVtYmVyX2lu dChlc3RhdGUtPmVzX3BsYW5uZWRzdG10LT5maXJzdFJlc3VsdFJlbHMsIHJ0aSkpOwogCQkJaSA9 IDA7CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9zcGkuYwppbmRleCA5OTRhNjlhMWM4ZS4uMTM3MDM5NjlkZDggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL3NwaS5jCkBAIC0xNTc5LDYgKzE1NzksNyBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJu YWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogewogCUNhY2hlZFBsYW5Tb3Vy Y2UgKnBsYW5zb3VyY2U7CiAJQ2FjaGVkUGxhbiAqY3BsYW47CisJQ2FjaGVkUGxhblByZXBEYXRh IGNwcmVwID0gezB9OwogCUxpc3QJICAgKnN0bXRfbGlzdDsKIAljaGFyCSAgICpxdWVyeV9zdHJp bmc7CiAJU25hcHNob3QJc25hcHNob3Q7CkBAIC0xNjU5LDcgKzE2NjAsMTEgQEAgU1BJX2N1cnNv cl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAkgKi8K IAogCS8qIFJlcGxhbiBpZiBuZWVkZWQsIGFuZCBpbmNyZW1lbnQgcGxhbiByZWZjb3VudCBmb3Ig cG9ydGFsICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHBhcmFtTEksIE5V TEwsIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOworCS8qIEV4ZWN1dG9yUHJlcCBzdGF0ZSBsaXZl cyBpbiB0aGlzIHBvcnRhbCdzIGNvbnRleHQuICovCisJY3ByZXAuY29udGV4dCA9IHBvcnRhbC0+ cG9ydGFsQ29udGV4dDsKKwljcHJlcC5vd25lciA9IHBvcnRhbC0+cmVzb3duZXI7CisJY3BsYW4g PSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIHBhcmFtTEksIE5VTEwsIF9TUElfY3VycmVudC0+ cXVlcnlFbnYsCisJCQkJCQkgICZjcHJlcCk7CiAJc3RtdF9saXN0ID0gY3BsYW4tPnN0bXRfbGlz dDsKIAogCWlmICghcGxhbi0+c2F2ZWQpCkBAIC0xNjg1LDcgKzE2OTAsNyBAQCBTUElfY3Vyc29y X29wZW5faW50ZXJuYWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCQkJCQkg IHF1ZXJ5X3N0cmluZywKIAkJCQkJICBwbGFuc291cmNlLT5jb21tYW5kVGFnLAogCQkJCQkgIHN0 bXRfbGlzdCwKLQkJCQkJICBOSUwsCisJCQkJCSAgY3ByZXAucHJlcF9lc3RhdGVzLAkvKiBsaXZl cyBpbiBwb3J0YWxDb250ZXh0ICovCiAJCQkJCSAgY3BsYW4pOwogCiAJLyoKQEAgLTIwNzgsNiAr MjA4Myw3IEBAIFNQSV9wbGFuX2dldF9jYWNoZWRfcGxhbihTUElQbGFuUHRyIHBsYW4pCiB7CiAJ Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZTsKIAlDYWNoZWRQbGFuICpjcGxhbjsKKwlDYWNo ZWRQbGFuUHJlcERhdGEgY3ByZXAgPSB7MH07CiAJU1BJQ2FsbGJhY2tBcmcgc3BpY2FsbGJhY2th cmc7CiAJRXJyb3JDb250ZXh0Q2FsbGJhY2sgc3BpZXJyY29udGV4dDsKIApAQCAtMjEwMSw5ICsy MTA3LDEzIEBAIFNQSV9wbGFuX2dldF9jYWNoZWRfcGxhbihTUElQbGFuUHRyIHBsYW4pCiAJZXJy b3JfY29udGV4dF9zdGFjayA9ICZzcGllcnJjb250ZXh0OwogCiAJLyogR2V0IHRoZSBnZW5lcmlj IHBsYW4gZm9yIHRoZSBxdWVyeSAqLworCS8qIEV4ZWN1dG9yUHJlcCgpIHN0YXRlIGxpdmVzIGlu IGNhbGxlcidzIGFjdGl2ZSBjb250ZXh0LiAqLworCWNwcmVwLmNvbnRleHQgPSBDdXJyZW50TWVt b3J5Q29udGV4dDsKKwljcHJlcC5vd25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOwogCWNwbGFu ID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBOVUxMLAogCQkJCQkJICBwbGFuLT5zYXZlZCA/ IEN1cnJlbnRSZXNvdXJjZU93bmVyIDogTlVMTCwKLQkJCQkJCSAgX1NQSV9jdXJyZW50LT5xdWVy eUVudik7CisJCQkJCQkgIF9TUElfY3VycmVudC0+cXVlcnlFbnYsCisJCQkJCQkgICZjcHJlcCk7 CiAJQXNzZXJ0KGNwbGFuID09IHBsYW5zb3VyY2UtPmdwbGFuKTsKIAogCS8qIFBvcCB0aGUgZXJy b3IgY29udGV4dCBzdGFjayAqLwpAQCAtMjUwMiw2ICsyNTEyLDcgQEAgX1NQSV9leGVjdXRlX3Bs YW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJ TGlzdENlbGwgICAqbGMyOwogCQlMaXN0CSAgICpwcmVwX2VzdGF0ZXM7CiAJCUxpc3RDZWxsICAg KnByZXBfbGM7CisJCUNhY2hlZFBsYW5QcmVwRGF0YSBjcHJlcCA9IHswfTsKIAogCQlzcGljYWxs YmFja2FyZy5xdWVyeSA9IHBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZzsKIApAQCAtMjU3NiwxMSAr MjU4NywxNiBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4 ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkgKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgaW5jcmVt ZW50IHBsYW4gcmVmY291bnQuICBJZiBpdCdzIGEgc2F2ZWQKIAkJICogcGxhbiwgdGhlIHJlZmNv dW50IG11c3QgYmUgYmFja2VkIGJ5IHRoZSBwbGFuX293bmVyLgogCQkgKi8KKworCQkvKiBFeGVj dXRvclByZXAgc3RhdGUgaXMgcGVyIF9TUElfZXhlY3V0ZV9wbGFuIGNhbGwuICovCisJCWNwcmVw LmNvbnRleHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKwkJY3ByZXAub3duZXIgPSBDdXJyZW50 UmVzb3VyY2VPd25lcjsKIAkJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIG9wdGlv bnMtPnBhcmFtcywKLQkJCQkJCQkgIHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYp OworCQkJCQkJCSAgcGxhbl9vd25lciwgX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKKwkJCQkJCQkg ICZjcHJlcCk7CiAKIAkJc3RtdF9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKLQkJcHJlcF9lc3Rh dGVzID0gTklMOworCQlwcmVwX2VzdGF0ZXMgPSBjcHJlcC5wcmVwX2VzdGF0ZXM7CiAKIAkJLyoK IAkJICogSWYgd2Ugd2VyZW4ndCBnaXZlbiBhIHNwZWNpZmljIHNuYXBzaG90IHRvIHVzZSwgYW5k IHRoZSBzdGF0ZW1lbnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Bs YW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA0MjYw NGEwZjc1Yy4uYWZhNjFkMzU3YzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMK QEAgLTY1Nyw2ICs2NTcsNyBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3Qg Y2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAlyZXN1bHQtPnBlcm1JbmZv cyA9IGdsb2ItPmZpbmFscnRlcGVybWluZm9zOwogCXJlc3VsdC0+c3VicnRpbmZvcyA9IGdsb2It PnN1YnJ0aW5mb3M7CiAJcmVzdWx0LT5yZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRSZWxh dGlvbnM7CisJcmVzdWx0LT5maXJzdFJlc3VsdFJlbHMgPSBnbG9iLT5maXJzdFJlc3VsdFJlbHM7 CiAJcmVzdWx0LT5hcHBlbmRSZWxhdGlvbnMgPSBnbG9iLT5hcHBlbmRSZWxhdGlvbnM7CiAJcmVz dWx0LT5zdWJwbGFucyA9IGdsb2ItPnN1YnBsYW5zOwogCXJlc3VsdC0+cmV3aW5kUGxhbklEcyA9 IGdsb2ItPnJld2luZFBsYW5JRHM7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5k ZXggMWI1YjliNWVkOWMuLmRkYjc5MDJiYzg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0 cmVmcy5jCkBAIC0zODQsNiArMzg0LDI2IEBAIHNldF9wbGFuX3JlZmVyZW5jZXMoUGxhbm5lcklu Zm8gKnJvb3QsIFBsYW4gKnBsYW4pCiAJCX0KIAl9CiAKKwkvKgorCSAqIFJlY29yZCB0aGUgZmly c3QgcmVzdWx0IHJlbGF0aW9uIGlmIGl0IGJlbG9uZ3MgdG8gdGhlIHNldCBvZgorCSAqIGluaXRp YWxseSBwcnVuYWJsZSByZWxhdGlvbnMuICBXZSB1c2UgYm1zX25leHRfbWVtYmVyKCkgdG8gZ2V0 CisJICogdGhlIGxvd2VzdC1udW1iZXJlZCBsZWFmIHJlc3VsdCByZWwsIHdoaWNoIG1hdGNoZXMK KwkgKiBsaW5pdGlhbF9pbnQoTW9kaWZ5VGFibGUucmVzdWx0UmVsYXRpb25zKSBiZWNhdXNlIHBh cnRpdGlvbgorCSAqIGV4cGFuc2lvbiBwcmVzZXJ2ZXMgUlQgaW5kZXggb3JkZXIuICBUaGVyZSBp cyBvbmUgTW9kaWZ5VGFibGUKKwkgKiBwZXIgcXVlcnkgbGV2ZWwsIHNvIHRoaXMgY2FwdHVyZXMg ZXhhY3RseSBvbmUgZW50cnkgcGVyIGxldmVsLgorCSAqIEV4ZWNJbml0TW9kaWZ5VGFibGUoKSBh c3NlcnRzIHRoYXQgdGhlIHJlY29yZGVkIGluZGV4IG1hdGNoZXMKKwkgKiB3aGF0IGl0IGFjdHVh bGx5IG5lZWRzLgorCSAqLworCWlmIChyb290LT5sZWFmX3Jlc3VsdF9yZWxpZHMpCisJeworCQlJ bmRleAlmaXJzdFJlc3VsdFJlbCA9IGJtc19uZXh0X21lbWJlcihyb290LT5sZWFmX3Jlc3VsdF9y ZWxpZHMsIC0xKTsKKworCQlmaXJzdFJlc3VsdFJlbCArPSBydG9mZnNldDsKKwkJaWYgKGJtc19p c19tZW1iZXIoZmlyc3RSZXN1bHRSZWwsIHJvb3QtPmdsb2ItPnBydW5hYmxlUmVsaWRzKSkKKwkJ CXJvb3QtPmdsb2ItPmZpcnN0UmVzdWx0UmVscyA9CisJCQkJbGFwcGVuZF9pbnQocm9vdC0+Z2xv Yi0+Zmlyc3RSZXN1bHRSZWxzLCBmaXJzdFJlc3VsdFJlbCk7CisJfQorCiAJcmV0dXJuIHJlc3Vs dDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IGNkMWU0MjljZWVkLi41YzE0NWEzMTI3NCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYwpAQCAtMTYzNiw2ICsxNjM2LDcgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3Ry aW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCWludDE2CSAgICpyZm9ybWF0cyA9IE5VTEw7CiAJQ2Fj aGVkUGxhblNvdXJjZSAqcHNyYzsKIAlDYWNoZWRQbGFuICpjcGxhbjsKKwlDYWNoZWRQbGFuUHJl cERhdGEgY3ByZXAgPSB7MH07CiAJUG9ydGFsCQlwb3J0YWw7CiAJY2hhcgkgICAqcXVlcnlfc3Ry aW5nOwogCWNoYXIJICAgKnNhdmVkX3N0bXRfbmFtZTsKQEAgLTIwMTcsNyArMjAxOCwxMSBAQCBl eGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJICogd2lsbCBiZSBn ZW5lcmF0ZWQgaW4gTWVzc2FnZUNvbnRleHQuICBUaGUgcGxhbiByZWZjb3VudCB3aWxsIGJlCiAJ ICogYXNzaWduZWQgdG8gdGhlIFBvcnRhbCwgc28gaXQgd2lsbCBiZSByZWxlYXNlZCBhdCBwb3J0 YWwgZGVzdHJ1Y3Rpb24uCiAJICovCi0JY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBzcmMsIHBhcmFt cywgTlVMTCwgTlVMTCk7CisKKwkvKiBFeGVjdXRvclByZXAoKSBzdGF0ZSBsaXZlcyBpbiBwb3J0 YWwgY29udGV4dC4gKi8KKwljcHJlcC5jb250ZXh0ID0gcG9ydGFsLT5wb3J0YWxDb250ZXh0Owor CWNwcmVwLm93bmVyID0gcG9ydGFsLT5yZXNvd25lcjsKKwljcGxhbiA9IEdldENhY2hlZFBsYW4o cHNyYywgcGFyYW1zLCBOVUxMLCBOVUxMLCAmY3ByZXApOwogCiAJLyoKIAkgKiBOb3cgd2UgY2Fu IGRlZmluZSB0aGUgcG9ydGFsLgpAQCAtMjAzMCw3ICsyMDM1LDcgQEAgZXhlY19iaW5kX21lc3Nh Z2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJ ICBwc3JjLT5jb21tYW5kVGFnLAogCQkJCQkgIGNwbGFuLT5zdG10X2xpc3QsCi0JCQkJCSAgTklM LAorCQkJCQkgIGNwcmVwLnByZXBfZXN0YXRlcywKIAkJCQkJICBjcGxhbik7CiAKIAkvKiBQb3J0 YWwgaXMgZGVmaW5lZCwgc2V0IHRoZSBwbGFuIElEIGJhc2VkIG9uIGl0cyBjb250ZW50cy4gKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggODEyZTIyNjU3MzQuLjFkMzI0NDMw N2RhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAtOTMsMTQgKzkzLDE3IEBA IHN0YXRpYyBib29sIFN0bXRQbGFuUmVxdWlyZXNSZXZhbGlkYXRpb24oQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgYm9vbCBCdWlsZGluZ1BsYW5SZXF1aXJlc1NuYXBzaG90 KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogc3RhdGljIExpc3QgKlJldmFsaWRhdGVD YWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgICBRdWVy eUVudmlyb25tZW50ICpxdWVyeUVudik7Ci1zdGF0aWMgYm9vbCBDaGVja0NhY2hlZFBsYW4oQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CitzdGF0aWMgYm9vbCBDaGVja0NhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgQ2FjaGVkUGxhblByZXBEYXRhICpjcHJlcCk7 CiBzdGF0aWMgQ2FjaGVkUGxhbiAqQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFy YW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiBzdGF0aWMgYm9vbCBjaG9vc2VfY3Vz dG9tX3BsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkgICBQYXJhbUxp c3RJbmZvIGJvdW5kUGFyYW1zKTsKIHN0YXRpYyBkb3VibGUgY2FjaGVkX3BsYW5fY29zdChDYWNo ZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcik7CiBzdGF0aWMgUXVlcnkgKlF1ZXJ5 TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRzKTsKLXN0YXRpYyB2b2lkIEFjcXVpcmVFeGVj dXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKK3N0YXRpYyB2b2lkIEFj cXVpcmVFeGVjdXRvckxvY2tzQWxsKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKK3N0 YXRpYyB2b2lkIEFjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoTGlzdCAqc3RtdF9saXN0LCBi b29sIGFjcXVpcmUsCisJCQkJCQkJCQkJIENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXApOworc3Rh dGljIHZvaWQgQ2FjaGVkUGxhblByZXBDbGVhbnVwKENhY2hlZFBsYW5QcmVwRGF0YSAqY3ByZXAp Owogc3RhdGljIHZvaWQgQWNxdWlyZVBsYW5uZXJMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wg YWNxdWlyZSk7CiBzdGF0aWMgdm9pZCBTY2FuUXVlcnlGb3JMb2NrcyhRdWVyeSAqcGFyc2V0cmVl LCBib29sIGFjcXVpcmUpOwogc3RhdGljIGJvb2wgU2NhblF1ZXJ5V2Fsa2VyKE5vZGUgKm5vZGUs IGJvb2wgKmFjcXVpcmUpOwpAQCAtOTQyLDYgKzk0NSwxMSBAQCBSZXZhbGlkYXRlQ2FjaGVkUXVl cnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIC8qCiAgKiBDaGVja0NhY2hlZFBsYW46 IHNlZSBpZiB0aGUgQ2FjaGVkUGxhblNvdXJjZSdzIGdlbmVyaWMgcGxhbiBpcyB2YWxpZC4KICAq CisgKiBJZiAnY3ByZXAnIGlzIG5vdCBOVUxMLCBFeGVjdXRvclByZXAoKSBpcyBhcHBsaWVkIHRv IGVhY2ggUGxhbm5lZFN0bXQgdG8KKyAqIGNvbXB1dGUgdGhlIHNldCBvZiBwYXJ0aXRpb25zIHRo YXQgc3Vydml2ZSBpbml0aWFsIHJ1bnRpbWUgcHJ1bmluZyBpbiBvcmRlcgorICogdG8gb25seSBs b2NrIHRoZW0uICBUaGUgRVN0YXRlcyBjcmVhdGVkIHRvIGRvIHNvIGFyZSBzYXZlZCBpbiBjcHJl cCBmb3IKKyAqIGxhdGVyIHJldXNlIGJ5IEV4ZWN1dG9yU3RhcnQoKS4KKyAqCiAgKiBDYWxsZXIg bXVzdCBoYXZlIGFscmVhZHkgY2FsbGVkIFJldmFsaWRhdGVDYWNoZWRRdWVyeSB0byB2ZXJpZnkg dGhhdCB0aGUKICAqIHF1ZXJ5dHJlZSBpcyB1cCB0byBkYXRlLgogICoKQEAgLTk0OSw3ICs5NTcs NyBAQCBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwK ICAqIChXZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRvIGJlIHJhY2UtY29u ZGl0aW9uLWZyZWUuKQogICovCiBzdGF0aWMgYm9vbAotQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UpCitDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSwgQ2FjaGVkUGxhblByZXBEYXRhICpjcHJlcCkKIHsKIAlDYWNoZWRQbGFuICpw bGFuID0gcGxhbnNvdXJjZS0+Z3BsYW47CiAKQEAgLTk4Myw3ICs5OTEsMTAgQEAgQ2hlY2tDYWNo ZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAJCSAqLwogCQlBc3NlcnQocGxh bi0+cmVmY291bnQgPiAwKTsKIAotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xp c3QsIHRydWUpOworCQlpZiAoY3ByZXApCisJCQlBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVk KHBsYW4tPnN0bXRfbGlzdCwgdHJ1ZSwgY3ByZXApOworCQllbHNlCisJCQlBY3F1aXJlRXhlY3V0 b3JMb2Nrc0FsbChwbGFuLT5zdG10X2xpc3QsIHRydWUpOwogCiAJCS8qCiAJCSAqIElmIHBsYW4g d2FzIHRyYW5zaWVudCwgY2hlY2sgdG8gc2VlIGlmIFRyYW5zYWN0aW9uWG1pbiBoYXMKQEAgLTEw MDUsNyArMTAxNiwxMyBAQCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSkKIAkJfQogCiAJCS8qIE9vcHMsIHRoZSByYWNlIGNhc2UgaGFwcGVuZWQuICBSZWxlYXNl IHVzZWxlc3MgbG9ja3MuICovCi0JCUFjcXVpcmVFeGVjdXRvckxvY2tzKHBsYW4tPnN0bXRfbGlz dCwgZmFsc2UpOworCQlpZiAoY3ByZXApCisJCQlBY3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVk KHBsYW4tPnN0bXRfbGlzdCwgZmFsc2UsIGNwcmVwKTsKKwkJZWxzZQorCQkJQWNxdWlyZUV4ZWN1 dG9yTG9ja3NBbGwocGxhbi0+c3RtdF9saXN0LCBmYWxzZSk7CisKKwkJLyogQWxzbyBjbGVhbiB1 cCBFeGVjdXRvclByZXAoKSBzdGF0ZSwgaWYgbmVjZXNzYXJ5LiAqLworCQlDYWNoZWRQbGFuUHJl cENsZWFudXAoY3ByZXApOwogCX0KIAogCS8qCkBAIC0xMjg1LDYgKzEzMDIsMTEgQEAgY2FjaGVk X3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqIE9u IHJldHVybiwgdGhlIHBsYW4gaXMgdmFsaWQgYW5kIHdlIGhhdmUgc3VmZmljaWVudCBsb2NrcyB0 byBiZWdpbgogICogZXhlY3V0aW9uLgogICoKKyAqIElmICdjcHJlcCcgaXMgbm90IE5VTEwgYW5k IGEgZ2VuZXJpYyBwbGFuIGlzIHJldXNlZCwgdGhlIGZ1bmN0aW9uIHByZXBhcmVzCisgKiBlYWNo IFBsYW5uZWRTdG10IHZpYSBFeGVjdXRvclByZXAoKSBhbmQgc3RvcmVzIHRoZSBFU3RhdGVzIGlu CisgKiBjcHJlcC0+cHJlcF9lc3RhdGVzLiAgVGhlc2UgYXJlIGludGVuZGVkIHRvIGJlIHBhc3Nl ZCBsYXRlciB0bworICogRXhlY3V0b3JTdGFydCgpLgorICoKICAqIE9uIHJldHVybiwgdGhlIHJl ZmNvdW50IG9mIHRoZSBwbGFuIGhhcyBiZWVuIGluY3JlbWVudGVkOyBhIGxhdGVyCiAgKiBSZWxl YXNlQ2FjaGVkUGxhbigpIGNhbGwgaXMgZXhwZWN0ZWQuICBJZiAib3duZXIiIGlzIG5vdCBOVUxM IHRoZW4KICAqIHRoZSByZWZjb3VudCBoYXMgYmVlbiByZXBvcnRlZCB0byB0aGF0IFJlc291cmNl T3duZXIgKG5vdGUgdGhhdCB0aGlzCkBAIC0xMjk1LDcgKzEzMTcsOCBAQCBjYWNoZWRfcGxhbl9j b3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKQogICovCiBDYWNoZWRQ bGFuICoKIEdldENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1M aXN0SW5mbyBib3VuZFBhcmFtcywKLQkJCSAgUmVzb3VyY2VPd25lciBvd25lciwgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYpCisJCQkgIFJlc291cmNlT3duZXIgb3duZXIsIFF1ZXJ5RW52aXJv bm1lbnQgKnF1ZXJ5RW52LAorCQkJICBDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVwKQogewogCUNh Y2hlZFBsYW4gKnBsYW4gPSBOVUxMOwogCUxpc3QJICAgKnFsaXN0OwpAQCAtMTMxNyw3ICsxMzQw LDkgQEAgR2V0Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxp c3RJbmZvIGJvdW5kUGFyYW1zLAogCiAJaWYgKCFjdXN0b21wbGFuKQogCXsKLQkJaWYgKENoZWNr Q2FjaGVkUGxhbihwbGFuc291cmNlKSkKKwkJaWYgKGNwcmVwKQorCQkJY3ByZXAtPnBhcmFtcyA9 IGJvdW5kUGFyYW1zOworCQlpZiAoQ2hlY2tDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIGNwcmVwKSkK IAkJewogCQkJLyogV2Ugd2FudCBhIGdlbmVyaWMgcGxhbiwgYW5kIHdlIGFscmVhZHkgaGF2ZSBh IHZhbGlkIG9uZSAqLwogCQkJcGxhbiA9IHBsYW5zb3VyY2UtPmdwbGFuOwpAQCAtMTkwNCwxMSAr MTkyOSwxMyBAQCBRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChMaXN0ICpzdG10cykKIH0KIAogLyoK LSAqIEFjcXVpcmVFeGVjdXRvckxvY2tzOiBhY3F1aXJlIGxvY2tzIG5lZWRlZCBmb3IgZXhlY3V0 aW9uIG9mIGEgY2FjaGVkIHBsYW47Ci0gKiBvciByZWxlYXNlIHRoZW0gaWYgYWNxdWlyZSBpcyBm YWxzZS4KKyAqIEFjcXVpcmVFeGVjdXRvckxvY2tzQWxsOiBhY3F1aXJlIGxvY2tzIG5lZWRlZCBm b3IgZXhlY3V0aW9uIG9mIGEgY2FjaGVkCisgKiBwbGFuOyBvciByZWxlYXNlIHRoZW0gaWYgYWNx dWlyZSBpcyBmYWxzZS4KKyAqCisgKiBUaGlzIGxvY2tzIGFsbCByZWxhdGlvbnMgaW4gYSBnaXZl biBQbGFubmVkU3RtdCdzIHJhbmdlIHRhYmxlLgogICovCiBzdGF0aWMgdm9pZAotQWNxdWlyZUV4 ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCitBY3F1aXJlRXhlY3V0 b3JMb2Nrc0FsbChMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSkKIHsKIAlMaXN0Q2VsbCAg ICpsYzE7CiAKQEAgLTE5NTUsNiArMTk4MiwyMTQgQEAgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlz dCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiAJfQogfQogCisvKgorICogTG9ja1JlbGlkcwor ICogCQlBY3F1aXJlIG9yIHJlbGVhc2UgbG9ja3Mgb24gdGhlIHNwZWNpZmllZCByZWxpZHMsIHdo aWNoIHJlZmVyZW5jZQorICogCQllbnRyaWVzIGluIHRoZSBwcm92aWRlZCByYW5nZSB0YWJsZS4K KyAqCisgKiBIZWxwZXIgZm9yIEFjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoKS4KKyAqLwor c3RhdGljIHZvaWQKK0xvY2tSZWxpZHMoTGlzdCAqcnRhYmxlLCBCaXRtYXBzZXQgKnJlbGlkcywg Ym9vbCBhY3F1aXJlKQoreworCWludAlydGluZGV4ID0gLTE7CisKKwl3aGlsZSAoKHJ0aW5kZXgg PSBibXNfbmV4dF9tZW1iZXIocmVsaWRzLCBydGluZGV4KSkgPj0gMCkKKwl7CisJCVJhbmdlVGJs RW50cnkgKnJ0ZSA9IGxpc3RfbnRoX25vZGUoUmFuZ2VUYmxFbnRyeSwgcnRhYmxlLCBydGluZGV4 IC0gMSk7CisKKwkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04gfHwKKwkJCSAg IChydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmIE9pZElzVmFsaWQocnRlLT5yZWxpZCkp KTsKKworCQkvKgorCQkgKiBBY3F1aXJlIHRoZSBhcHByb3ByaWF0ZSB0eXBlIG9mIGxvY2sgb24g ZWFjaCByZWxhdGlvbiBPSUQuIE5vdGUKKwkJICogdGhhdCB3ZSBkb24ndCBhY3R1YWxseSB0cnkg dG8gb3BlbiB0aGUgcmVsLCBhbmQgaGVuY2Ugd2lsbCBub3QKKwkJICogZmFpbCBpZiBpdCdzIGJl ZW4gZHJvcHBlZCBlbnRpcmVseSAtLS0gd2UnbGwganVzdCB0cmFuc2llbnRseQorCQkgKiBhY3F1 aXJlIGEgbm9uLWNvbmZsaWN0aW5nIGxvY2suCisJCSAqLworCQlpZiAoYWNxdWlyZSkKKwkJCUxv Y2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwkJZWxzZQorCQkJ VW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJfQorfQor CisvKgorICogQWNxdWlyZUV4ZWN1dG9yTG9ja3NVbnBydW5lZAorICoJCUFjcXVpcmUgb3IgcmVs ZWFzZSBleGVjdXRpb24gbG9ja3MgZm9yIG9ubHkgdW5wcnVuZWQgcmVsYXRpb25zCisgKgkJcmVm ZXJlbmNlZCBieSB0aGUgZ2l2ZW4gUGxhbm5lZFN0bXRzLgorICoKKyAqIE9uIGFjcXVpcmUsIHRo aXM6CisgKgktIGxvY2tzIHVucHJ1bmFibGUgcmVscyBsaXN0ZWQgaW4gUGxhbm5lZFN0bXQudW5w cnVuYWJsZVJlbGlkcworICoJLSBydW5zIEV4ZWN1dG9yUHJlcCgpIHRvIHBlcmZvcm0gaW5pdGlh bCBydW50aW1lIHBydW5pbmcKKyAqCS0gbG9ja3MgdGhlIHN1cnZpdmluZyBwYXJ0aXRpb25zIHJl cG9ydGVkIGluIHRoZSBwcmVwIGVzdGF0ZQorICoJLSBhcHBlbmRzIHRoZSBFU3RhdGUgcG9pbnRl ciBmb3IgZWFjaCBQbGFubmVkU3RtdCB0byBjcHJlcC0+cHJlcF9lc3RhdGVzCisgKgorICogT24g cmVsZWFzZSwgaXQ6CisgKgktIGxvb2tzIHVwIHRoZSBFU3RhdGUgZm9yIGVhY2ggUGxhbm5lZFN0 bXQgZnJvbSBjcHJlcC0+cHJlcF9lc3RhdGVzCisgKgkgICh3aGljaCBtdXN0IGFscmVhZHkgYmUg cG9wdWxhdGVkKQorICoJLSB1bmxvY2tzIHRoZSBzYW1lIHJlbGF0aW9ucyBpZGVudGlmaWVkIGR1 cmluZyBhY3F1aXJlCisgKgktIGNsZWFucyB1cCBlYWNoIEVTdGF0ZQorICoKKyAqIHByZXBfZXN0 YXRlcyBpcyBleHRlbmRlZCBkdXJpbmcgYWNxdWlyZSBhbmQgbXVzdCBtYXRjaCBzdG10X2xpc3Qg b25lLXRvLW9uZQorICogd2hlbiByZWxlYXNpbmcgbG9ja3MuICBNZW1vcnkgYWxsb2NhdGlvbiBm b3IgRVN0YXRlIGhhcHBlbnMgaW4KKyAqIGNwcmVwLT5jb250ZXh0LiAgTG9ja3MgYXJlIGFjcXVp cmVkIHVzaW5nIGNwcmVwLT5vd25lci4KKyAqLworCitzdGF0aWMgdm9pZAorQWNxdWlyZUV4ZWN1 dG9yTG9ja3NVbnBydW5lZChMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSwKKwkJCQkJCQkg Q2FjaGVkUGxhblByZXBEYXRhICpjcHJlcCkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oY3ByZXAtPmNvbnRleHQpOworCUxpc3RDZWxsICAgKmxj MTsKKwlMaXN0CSAgICpwcmVwX2VzdGF0ZXM7CisJTGlzdENlbGwgICAqcHJlcF9sYzsKKworCUFz c2VydChjcHJlcCk7CisKKwkvKgorCSAqIFdoZW4gcmVsZWFzaW5nIGxvY2tzLCB1c2UgdGhlIEVT dGF0ZSBsaXN0IChpZiBhbnkpIGNyZWF0ZWQgZHVyaW5nCisJICogYWNxdWlzaXRpb24gdG8gZGV0 ZXJtaW5lIHdoaWNoIHJlbGlkcyB0byB1bmxvY2suIFRoZSBsaXN0IG11c3QgbWF0Y2gKKwkgKiB0 aGUgUGxhbm5lZFN0bXQgbGlzdCBvbmUtdG8tb25lLgorCSAqLworCXByZXBfZXN0YXRlcyA9IGNw cmVwLT5wcmVwX2VzdGF0ZXM7CisJQXNzZXJ0KGFjcXVpcmUgfHwgbGlzdF9sZW5ndGgocHJlcF9l c3RhdGVzKSA9PSBsaXN0X2xlbmd0aChzdG10X2xpc3QpKTsKKworCXByZXBfbGMgPSBsaXN0X2hl YWQocHJlcF9lc3RhdGVzKTsKKwlmb3JlYWNoKGxjMSwgc3RtdF9saXN0KQorCXsKKwkJUGxhbm5l ZFN0bXQgKnBsYW5uZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIGxjMSk7CisJCUVT dGF0ZSAqcHJlcF9lc3RhdGU7CisKKwkJaWYgKHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSA9PSBD TURfVVRJTElUWSkKKwkJeworCQkJLyogU2FtZSBhcyBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLiAq LworCQkJUXVlcnkJICAgKnF1ZXJ5ID0gVXRpbGl0eUNvbnRhaW5zUXVlcnkocGxhbm5lZHN0bXQt PnV0aWxpdHlTdG10KTsKKworCQkJaWYgKHF1ZXJ5KQorCQkJCVNjYW5RdWVyeUZvckxvY2tzKHF1 ZXJ5LCBhY3F1aXJlKTsKKworCQkJLyogS2VlcCB0aGUgbGlzdCBvbmUtdG8tb25lIHdpdGggc3Rt dF9saXN0LiAqLworCQkJaWYgKGFjcXVpcmUpCisJCQkJY3ByZXAtPnByZXBfZXN0YXRlcyA9IGxh cHBlbmQoY3ByZXAtPnByZXBfZXN0YXRlcywgTlVMTCk7CisJCQllbHNlCisJCQkJKHZvaWQpIG5l eHRfcHJlcF9lc3RhdGUocHJlcF9lc3RhdGVzLCAmcHJlcF9sYyk7CisJCQljb250aW51ZTsKKwkJ fQorCisJCS8qCisJCSAqIExvY2sgdGFibGVzIG1lbnRpb25lZCBpbiB0aGUgb3JpZ2luYWwgcXVl cnkgYW5kIG90aGVyIHVucHJ1bmFibGUKKwkJICogcmVsYXRpb25zIHRoYXQgd2VyZSBhZGRlZCB0 byB0aGUgcGxhbiB2aWEgaW5oZXJpdGFuY2UgZXhwYW5zaW9uLgorCQkgKi8KKwkJTG9ja1JlbGlk cyhwbGFubmVkc3RtdC0+cnRhYmxlLCBwbGFubmVkc3RtdC0+dW5wcnVuYWJsZVJlbGlkcywgYWNx dWlyZSk7CisKKwkJLyogTG9jayBwYXJ0aXRpb25zIHN1cnZpdmluZyBydW50aW1lIGluaXRpYWwg cHJ1bmluZy4gKi8KKwkJaWYgKGFjcXVpcmUpCisJCXsKKwkJCS8qCisJCQkgKiBQcnVuaW5nIGV4 cHJlc3Npb25zIG1heSBjYWxsIFBMIGZ1bmN0aW9ucyB0aGF0IHJlcXVpcmUgYW4gYWN0aXZlCisJ CQkgKiBzbmFwc2hvdCAoZS5nLiwgdmlhIEVuc3VyZVBvcnRhbFNuYXBzaG90RXhpc3RzKCkpLiBF c3RhYmxpc2ggb25lCisJCQkgKiBpZiBuZWVkZWQuCisJCQkgKi8KKwkJCWJvb2wJCXNuYXBfcHVz aGVkID0gZmFsc2U7CisKKwkJCWlmICghQWN0aXZlU25hcHNob3RTZXQoKSkKKwkJCXsKKwkJCQlQ dXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJCQlzbmFwX3B1 c2hlZCA9IHRydWU7CisJCQl9CisKKwkJCXByZXBfZXN0YXRlID0gRXhlY3V0b3JQcmVwKHBsYW5u ZWRzdG10LCBjcHJlcC0+cGFyYW1zLCBjcHJlcC0+b3duZXIsIHRydWUsCisJCQkJCQkJCQkgICBj cHJlcC0+ZWZsYWdzKTsKKwkJCUFzc2VydChwcmVwX2VzdGF0ZSk7CisJCQljcHJlcC0+cHJlcF9l c3RhdGVzID0gbGFwcGVuZChjcHJlcC0+cHJlcF9lc3RhdGVzLCBwcmVwX2VzdGF0ZSk7CisKKwkJ CWlmIChzbmFwX3B1c2hlZCkKKwkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQl9CisJCWVsc2UK KwkJCXByZXBfZXN0YXRlID0gbmV4dF9wcmVwX2VzdGF0ZShwcmVwX2VzdGF0ZXMsICZwcmVwX2xj KTsKKworCQlpZiAocHJlcF9lc3RhdGUpCisJCXsKKwkJCS8qCisJCQkgKiBlc191bnBydW5lZF9y ZWxpZHMgaW5jbHVkZXMgcGxhbm5lZHN0bXQtPnVucHJ1bmFibGVSZWxpZHMsCisJCQkgKiB3aGlj aCB3ZSd2ZSBhbHJlYWR5IGxvY2tlZC4gRmlsdGVyIHRoZW0gb3V0IHRvIGF2b2lkIGRvdWJsZS1s b2NraW5nLgorCQkJICovCisJCQlCaXRtYXBzZXQgKmxvY2tfcmVsaWRzID0gYm1zX2RpZmZlcmVu Y2UocHJlcF9lc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcywKKwkJCQkJCQkJCQkJCQlwbGFubmVk c3RtdC0+dW5wcnVuYWJsZVJlbGlkcyk7CisKKwkJCS8qCisJCQkgKiBXZSBtdXN0IGFsd2F5cyBp bmNsdWRlIHRoZSBmaXJzdCByZXN1bHQgcmVsYXRpb24gb2YgZWFjaAorCQkJICogTW9kaWZ5VGFi bGUgbm9kZSBpbiB0aGUgcGxhbiwgdGhhdCBpcywgdGhlIG9uZSBtZW50aW9uZWQgaW4KKwkJCSAq IHBsYW5uZWRzdG10LT5maXJzdFJlc3VsdFJlbHMgaW4gdGhlIHNldCBvZiByZWxhdGlvbnMgdG8g YmUKKwkJCSAqIGxvY2tlZCB0byBzYXRpc2Z5IGV4ZWN1dG9yIGFzc3VtcHRpb25zIGRlc2NyaWJl ZAorCQkJICogaW4gRXhlY0luaXRNb2RpZnlUYWJsZSgpLiAgVGhpcyBjYW4gYmUgd2FzdGVmdWws IGJlY2F1c2Ugd2UKKwkJCSAqIG1heSBub3QgbmVlZCB0byB1c2UgdGhlIGZpcnN0IHJlc3VsdCBy ZWxhdGlvbiBhdCBhbGwgaWYgb3RoZXIKKwkJCSAqIHJlc3VsdCByZWxhdGlvbnMgYXJlIHVucHJ1 bmVkIGFuZCB0aHVzIHN1ZmZpY2llbnQgZm9yIHRoZQorCQkJICogTW9kaWZ5VGFibGUgbm9kZSdz IG5lZWRzLiAgVW5mb3J0dW5hdGVseSwgd2UgZG9uJ3QgaGF2ZSBwZXItbm9kZQorCQkJICogdW5w cnVuZWRfcmVsaWRzIHNldCB0byBkZXRlcm1pbmUgdGhhdCBvdGhlciByZXN1bHQgcmVsYXRpb25z CisJCQkgKiBhcmUgaW5jbHVkZWQuCisJCQkgKi8KKwkJCWlmIChwbGFubmVkc3RtdC0+cmVzdWx0 UmVsYXRpb25zKQorCQkJeworCQkJCUxpc3RDZWxsICpsYzI7CisKKwkJCQlmb3JlYWNoKGxjMiwg cGxhbm5lZHN0bXQtPmZpcnN0UmVzdWx0UmVscykKKwkJCQl7CisJCQkJCUluZGV4ICAgICAgIGZp cnN0UmVzdWx0UmVsID0gbGZpcnN0X2ludChsYzIpOworCisJCQkJCWlmICghYm1zX2lzX21lbWJl cihmaXJzdFJlc3VsdFJlbCwgbG9ja19yZWxpZHMpKQorCQkJCQkJbG9ja19yZWxpZHMgPSBibXNf YWRkX21lbWJlcihsb2NrX3JlbGlkcywgZmlyc3RSZXN1bHRSZWwpOworCQkJCX0KKwkJCX0KKwor CQkJTG9ja1JlbGlkcyhwbGFubmVkc3RtdC0+cnRhYmxlLCBsb2NrX3JlbGlkcywgYWNxdWlyZSk7 CisJCQlibXNfZnJlZShsb2NrX3JlbGlkcyk7CisJCX0KKwl9CisKKwlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY29udGV4dCk7Cit9CisKKy8qCisgKiBDYWNoZWRQbGFuUHJlcENsZWFudXAKKyAq CQlDbGVhbiB1cCBFU3RhdGUgYnVpbHQgZm9yIGEgZ2VuZXJpYyBwbGFuLgorICoKKyAqIFRoaXMg aXMgdXNlZCBpbiB0aGUgY29ybmVyIGNhc2Ugd2hlcmUgQ2hlY2tDYWNoZWRQbGFuKCkgZGlzY292 ZXJzCisgKiB0aGF0IGEgQ2FjaGVkUGxhbiBoYXMgYmVjb21lIGludmFsaWQgYWZ0ZXIgQWNxdWly ZUV4ZWN1dG9yTG9ja3NVbnBydW5lZCgpCisgKiBoYXMgYWxyZWFkeSBydW4uICBJbiB0aGF0IGNh c2Ugd2UgbXVzdCBib3RoIHJlbGVhc2UgdGhlIGV4ZWN1dGlvbiBsb2NrcworICogYW5kIGRpc3Bv c2Ugb2YgdGhlIEV4ZWNQcmVwIGxpc3Qgc3RvcmVkIGluIENhY2hlZFBsYW5QcmVwRGF0YSwgc2lu Y2UgdGhlCisgKiBleGVjdXRvciB3aWxsIG5ldmVyIHNlZSBvciBjbGVhbiBpdCB1cC4KKyAqLwor c3RhdGljIHZvaWQKK0NhY2hlZFBsYW5QcmVwQ2xlYW51cChDYWNoZWRQbGFuUHJlcERhdGEgKmNw cmVwKQoreworCUxpc3RDZWxsICAgKmxjOworCVJlc291cmNlT3duZXIgb2xkb3duZXI7CisKKwlp ZiAoY3ByZXAgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJLyogU3dpdGNoIHRvIG93bmVyIHRoYXQg RXhlY3V0b3JQcmVwKCkgd291bGQgaGF2ZSB1c2VkLiAqLworCW9sZG93bmVyID0gQ3VycmVudFJl c291cmNlT3duZXI7CisJQ3VycmVudFJlc291cmNlT3duZXIgPSBjcHJlcC0+b3duZXI7CisJZm9y ZWFjaChsYywgY3ByZXAtPnByZXBfZXN0YXRlcykKKwl7CisJCUVTdGF0ZSAqcHJlcF9lc3RhdGUg PSAoRVN0YXRlICopIGxmaXJzdChsYyk7CisKKwkJaWYgKHByZXBfZXN0YXRlID09IE5VTEwpCisJ CQljb250aW51ZTsKKworCQlFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zKHByZXBfZXN0YXRl KTsKKwkJRnJlZUV4ZWN1dG9yU3RhdGUocHJlcF9lc3RhdGUpOworCX0KKwlDdXJyZW50UmVzb3Vy Y2VPd25lciA9IG9sZG93bmVyOworCisJbGlzdF9mcmVlKGNwcmVwLT5wcmVwX2VzdGF0ZXMpOwor CWNwcmVwLT5wcmVwX2VzdGF0ZXMgPSBOSUw7Cit9CisKIC8qCiAgKiBBY3F1aXJlUGxhbm5lckxv Y2tzOiBhY3F1aXJlIGxvY2tzIG5lZWRlZCBmb3IgcGxhbm5pbmcgb2YgYSBxdWVyeXRyZWUgbGlz dDsKICAqIG9yIHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZhbHNlLgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9k ZXMuaAppbmRleCBjMTc1ZWU5NWI2OC4uOTg5YjNjNzM2OTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5o CkBAIC0yMTcsNiArMjE3LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogCS8qICJm bGF0IiBsaXN0IG9mIGludGVnZXIgUlQgaW5kZXhlcyAqLwogCUxpc3QJICAgKnJlc3VsdFJlbGF0 aW9uczsKIAorCS8qICJmbGF0IiBsaXN0IG9mIGludGVnZXIgUlQgaW5kZXhlcyAob25lIHBlciBN b2RpZnlUYWJsZSBub2RlKSAqLworCUxpc3QJICAgKmZpcnN0UmVzdWx0UmVsczsKKwogCS8qICJm bGF0IiBsaXN0IG9mIEFwcGVuZFJlbEluZm9zICovCiAJTGlzdAkgICAqYXBwZW5kUmVsYXRpb25z OwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IDhjOTMyMWFhYjhjLi4xNDMxZjEyYTZlOCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGxhbm5vZGVzLmgKQEAgLTEyMyw2ICsxMjMsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxh bm5lZFN0bXQKIAkvKiBpbnRlZ2VyIGxpc3Qgb2YgUlQgaW5kZXhlcywgb3IgTklMICovCiAJTGlz dAkgICAqcmVzdWx0UmVsYXRpb25zOwogCisJLyoKKwkgKiBydGFibGUgaW5kZXhlcyBvZiBmaXJz dCB0YXJnZXQgcmVsYXRpb24gaW4gZWFjaCBNb2RpZnlUYWJsZSBub2RlIGluIHRoZQorCSAqIHBs YW4gZm9yIElOU0VSVC9VUERBVEUvREVMRVRFL01FUkdFLiAgTklMIGlmIHJlc3VsdFJlbGF0aW9u cyBpcyBOSUwuCisJICoKKwkgKiBUaGVzZSBhcmUgdXNlZCBieSBBY3F1aXJlRXhlY3V0b3JMb2Nr c1VucHJ1bmVkKCkgdG8gZW5zdXJlIHRoYXQgdGhlCisJICogZmlyc3QgcmVzdWx0IHJlbCBmb3Ig ZWFjaCBNb2RpZnlUYWJsZSByZW1haW5zIGxvY2tlZCBldmVuIGlmIHBydW5lZDsKKwkgKiBzZWUg RXhlY0luaXRNb2RpZnlUYWJsZSgpIGZvciB0aGUgZXhlY3V0b3Igc2lkZSBhc3N1bXB0aW9ucy4K KwkgKi8KKwlMaXN0CSAgICpmaXJzdFJlc3VsdFJlbHM7CisKIAkvKiBsaXN0IG9mIEFwcGVuZFJl bEluZm8gbm9kZXMgKi8KIAlMaXN0CSAgICphcHBlbmRSZWxhdGlvbnM7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNh Y2hlLmgKaW5kZXggOTg0YzUxNTE1YzYuLmRhM2NlOWYzMTc3IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS91dGlscy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUu aApAQCAtMTk3LDYgKzE5NywzMiBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRFeHByZXNzaW9uCiB9 IENhY2hlZEV4cHJlc3Npb247CiAKIAorLyoKKyAqIENhY2hlZFBsYW5QcmVwRGF0YQorICogICAg ICBDYXJyaWVzIEV4ZWN1dG9yUHJlcCByZXN1bHRzIGZvciBlYWNoIFBsYW5uZWRTdG10IGluIGEg Q2FjaGVkUGxhbiwKKyAqICAgICAgYWxvbmcgd2l0aCBjb250ZXh0IGFuZCBvd25lciBpbmZvcm1h dGlvbiBuZWVkZWQgdG8gYWxsb2NhdGUgdGhlbS4KKyAqCisgKiBwcmVwX2VzdGF0ZXMgaXMgaW5k ZXhlZCBvbmUtdG8tb25lIHdpdGggQ2FjaGVkUGxhbi0+c3RtdF9saXN0LCBhbmQgaXMKKyAqIHBv cHVsYXRlZCB3aGVuIEdldENhY2hlZFBsYW4oKSBwcmVwYXJlcyBhIHJldXNlZCBnZW5lcmljIHBs YW4uICBJZiB0aGUKKyAqIHBsYW4gaXMgZm91bmQgaW52YWxpZCBhZnRlciBsb2NraW5nLCB0aGUg c2FtZSBsaXN0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lCisgKiB3aGljaCByZWxhdGlvbnMgdG8gdW5s b2NrIGJlZm9yZSByZXRyeWluZy4KKyAqCisgKiBFeGVjdXRvclByZXAgc3RhdGUgaXMgYWxsb2Nh dGVkIGluICdjb250ZXh0JyBhbmQgb3duZWQgYnkgJ293bmVyJy4KKyAqCisgKiBlZmxhZ3MgY29u dHJvbHMgRXhlY3V0b3JQcmVwKCkgYmVoYXZpb3IgZHVyaW5nIGluaXRpYWwgcHJ1bmluZy4KKyAq IE5vcm1hbGx5IHplcm87IHNldCBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDIHRvIHN1cHByZXNz IHBydW5pbmcKKyAqIGluIEVYUExBSU4gKEdFTkVSSUNfUExBTikuICBOZWVkIG5vdCBtYXRjaCB0 aGUgZWZsYWdzIGxhdGVyIHBhc3NlZAorICogdG8gRXhlY3V0b3JTdGFydCgpLgorICovCit0eXBl ZGVmIHN0cnVjdCBDYWNoZWRQbGFuUHJlcERhdGEKK3sKKwlMaXN0ICAgKnByZXBfZXN0YXRlczsJ Lyogb25lIEVTdGF0ZSBwZXIgUGxhbm5lZFN0bXQsIG9yIE5VTEwgKi8KKwlQYXJhbUxpc3RJbmZv IHBhcmFtczsJLyogcGFyYW1zIHZpc2libGUgdG8gRXhlY3V0b3JQcmVwICovCisJTWVtb3J5Q29u dGV4dCBjb250ZXh0OwkvKiB3aGVyZSB0byBhbGxvY2F0ZSBFU3RhdGUgYW5kIGl0cyBmaWVsZHMg Ki8KKwlSZXNvdXJjZU93bmVyIG93bmVyOwkvKiBSZXNvdXJjZU93bmVyIGZvciBFeGVjdXRvclBy ZXAgc3RhdGUgKi8KKwlpbnQJCWVmbGFnczsJCQkvKiBleGVjdXRvciBmbGFncyB0byBjb250cm9s IEV4ZWN1dG9yUHJlcCAqLworfSBDYWNoZWRQbGFuUHJlcERhdGE7CisKIGV4dGVybiB2b2lkIElu aXRQbGFuQ2FjaGUodm9pZCk7CiBleHRlcm4gdm9pZCBSZXNldFBsYW5DYWNoZSh2b2lkKTsKIApA QCAtMjQwLDcgKzI2Niw4IEBAIGV4dGVybiBMaXN0ICpDYWNoZWRQbGFuR2V0VGFyZ2V0TGlzdChD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogZXh0ZXJuIENhY2hlZFBsYW4gKkdldENhY2hl ZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJIFBhcmFtTGlzdElu Zm8gYm91bmRQYXJhbXMsCiAJCQkJCQkJCSBSZXNvdXJjZU93bmVyIG93bmVyLAotCQkJCQkJCQkg UXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpOworCQkJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAq cXVlcnlFbnYsCisJCQkJCQkJCSBDYWNoZWRQbGFuUHJlcERhdGEgKmNwcmVwKTsKIGV4dGVybiB2 b2lkIFJlbGVhc2VDYWNoZWRQbGFuKENhY2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3du ZXIpOwogCiBleHRlcm4gYm9vbCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9wYXJ0aXRpb25fcHJ1bmUub3V0CmluZGV4IDM5ZGFiOGZjYzA1Li4zOTc3MGYzYjZkNiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fcHJ1bmUub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dApAQCAtNDg2 MCw5ICs0ODYwLDcgQEAgc2VsZWN0IGMucmVsbmFtZQogICAgcmVsbmFtZSAgICAKIC0tLS0tLS0t LS0tLS0tCiAgcHJ1bmVsb2NrX3AxCi0gcHJ1bmVsb2NrX3AyCi0gcHJ1bmVsb2NrX3AzCi0oMyBy b3dzKQorKDEgcm93KQogCiBjb21taXQ7CiBkZWFsbG9jYXRlIHBydW5lbG9ja19xOwpAQCAtNDkw NCw2ICs0OTAyLDUwIEBAIHNlbGVjdCBjLnJlbG5hbWUKIAogY29tbWl0OwogZGVhbGxvY2F0ZSBw cnVuZWxvY2tfcTsKK3Jlc2V0IGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZzsKKy0tCistLSBWZXJp ZnkgZmlyc3RSZXN1bHRSZWxzIGhhbmRsaW5nIHdpdGggbXVsdGlwbGUgTW9kaWZ5VGFibGUgbm9k ZXMKKy0tICh3cml0YWJsZSBDVEVzKSB0YXJnZXRpbmcgYSBwYXJ0aXRpb25lZCB0YWJsZS4gIFdo ZW4gYSBwcnVuaW5nCistLSBwYXJhbWV0ZXIgbWF0Y2hlcyBubyBwYXJ0aXRpb24sIGFsbCByZXN1 bHQgcmVsYXRpb25zIGFyZSBwcnVuZWQKKy0tIGFuZCB0aGUgZXhlY3V0b3IgbXVzdCBzdGlsbCBm aW5kIGEgdXNhYmxlIGZpcnN0IHJlc3VsdCByZWxhdGlvbgorLS0gZm9yIGVhY2ggTW9kaWZ5VGFi bGUgbm9kZS4KKy0tCitwcmVwYXJlIHBydW5lbG9ja19tdF9xIChpbnQsIGludCkgYXMKKyAgd2l0 aCB1cGQxIGFzICh1cGRhdGUgcHJ1bmVsb2NrX3Agc2V0IGEgPSBhKSwKKyAgICAgICB1cGQyIGFz ICh1cGRhdGUgcHJ1bmVsb2NrX3Agc2V0IGEgPSBhIHdoZXJlIGEgPSAkMikKKyAgdXBkYXRlIHBy dW5lbG9ja19wIHNldCBhID0gYSB3aGVyZSBhID0gJDE7CistLSBGb3JjZSBnZW5lcmljIHBsYW4g Y3JlYXRpb24KK2V4cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSBwcnVuZWxvY2tfbXRfcSgxLCAy KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgVXBkYXRlIG9uIHBydW5lbG9ja19wCisgICBVcGRhdGUgb24gcHJ1bmVs b2NrX3AxIHBydW5lbG9ja19wXzEKKyAgIENURSB1cGQxCisgICAgIC0+ICBVcGRhdGUgb24gcHJ1 bmVsb2NrX3AgcHJ1bmVsb2NrX3BfMworICAgICAgICAgICBVcGRhdGUgb24gcHJ1bmVsb2NrX3Ax IHBydW5lbG9ja19wXzQKKyAgICAgICAgICAgVXBkYXRlIG9uIHBydW5lbG9ja19wMiBwcnVuZWxv Y2tfcF81CisgICAgICAgICAgIFVwZGF0ZSBvbiBwcnVuZWxvY2tfcDMgcHJ1bmVsb2NrX3BfNgor ICAgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw cnVuZWxvY2tfcDEgcHJ1bmVsb2NrX3BfNAorICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHJ1bmVsb2NrX3AyIHBydW5lbG9ja19wXzUKKyAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHBydW5lbG9ja19wMyBwcnVuZWxvY2tfcF82CisgICBDVEUgdXBkMgorICAgICAtPiAg VXBkYXRlIG9uIHBydW5lbG9ja19wIHBydW5lbG9ja19wXzcKKyAgICAgICAgICAgVXBkYXRlIG9u IHBydW5lbG9ja19wMiBwcnVuZWxvY2tfcF84CisgICAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAg ICAgICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMgorICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHJ1bmVsb2NrX3AyIHBydW5lbG9ja19wXzgKKyAgICAgICAgICAgICAgICAgICAg ICAgRmlsdGVyOiAoYSA9ICQyKQorICAgLT4gIEFwcGVuZAorICAgICAgICAgU3VicGxhbnMgUmVt b3ZlZDogMgorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBydW5lbG9ja19wMSBwcnVuZWxvY2tf cF8xCisgICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gJDEpCisoMjIgcm93cykKKworLS0gQWxs IHBhcnRpdGlvbnMgcHJ1bmVkOiB2YWx1ZSA0IG1hdGNoZXMgbm8gcGFydGl0aW9uLCBzbyBlYWNo CistLSBNb2RpZnlUYWJsZSBtdXN0IHN0aWxsIGluaXRpYWxpemUgY29ycmVjdGx5IHdpdGggbm8g bWF0Y2hpbmcKKy0tIHJlc3VsdCByZWxhdGlvbnMuCitleGVjdXRlIHBydW5lbG9ja19tdF9xKDQs IDUpOworZGVhbGxvY2F0ZSBwcnVuZWxvY2tfbXRfcTsKIGRyb3AgdGFibGUgcHJ1bmVsb2NrX3A7 CiByZXNldCBwbGFuX2NhY2hlX21vZGU7Ci1yZXNldCBlbmFibGVfcGFydGl0aW9uX3BydW5pbmc7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQKaW5kZXggNGU1OTE4ODE5NmMu LjFkNjlhYjBhMWMyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5j YWNoZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wbGFuY2FjaGUub3V0CkBA IC0zOTgsMyArMzk4LDY1IEBAIHNlbGVjdCBuYW1lLCBnZW5lcmljX3BsYW5zLCBjdXN0b21fcGxh bnMgZnJvbSBwZ19wcmVwYXJlZF9zdGF0ZW1lbnRzCiAoMSByb3cpCiAKIGRyb3AgdGFibGUgdGVz dF9tb2RlOworLS0gVGVzdCBpbnZhbGlkYXRpb24gb2YgYSBnZW5lcmljIHBsYW4gZHVyaW5nIHBy dW5pbmctYXdhcmUgbG9jayBzZXR1cC4KKy0tIFRoZSBwcnVuaW5nIGV4cHJlc3Npb24gdXNlcyBh IHN0YWJsZSBTUUwgZnVuY3Rpb24gdGhhdCBjYWxscyBhIHZvbGF0aWxlCistLSBwbHBnc3FsIGZ1 bmN0aW9uLiAgVGhhdCBmdW5jdGlvbiBwZXJmb3JtcyBEREwgb24gYSBwYXJ0aXRpb24gd2hlbiBh CistLSBzZXBhcmF0ZSAic2lnbmFsIiB0YWJsZSBzYXlzIHRvIGRvIHNvLiAgVGhlIHNlY29uZCBF WEVDVVRFIHNob3VsZAorLS0gcmVwbGFuIGNsZWFubHkgYWZ0ZXIgdGhlIERETC4KK3NldCBwbGFu X2NhY2hlX21vZGUgdG8gZm9yY2VfZ2VuZXJpY19wbGFuOworY3JlYXRlIHRhYmxlIGludmFsX2R1 cmluZ19wcnVuaW5nX3AgKGEgaW50KSBwYXJ0aXRpb24gYnkgbGlzdCAoYSk7CitjcmVhdGUgdGFi bGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcDEgcGFydGl0aW9uIG9mIGludmFsX2R1cmluZ19wcnVu aW5nX3AgZm9yIHZhbHVlcyBpbiAoMSk7CitjcmVhdGUgdGFibGUgaW52YWxfZHVyaW5nX3BydW5p bmdfcDIgcGFydGl0aW9uIG9mIGludmFsX2R1cmluZ19wcnVuaW5nX3AgZm9yIHZhbHVlcyBpbiAo Mik7CitpbnNlcnQgaW50byBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wIHZhbHVlcyAoMSksICgyKTsK K2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWduYWwgKGNyZWF0ZV9pZHggYm9v bCBub3QgbnVsbCk7CitpbnNlcnQgaW50byBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWduYWwgdmFs dWVzIChmYWxzZSk7CitjcmVhdGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBpbnZhbGlkYXRlX3BsYW5j YWNoZV9mdW5jKCkgcmV0dXJucyBpbnQKK2FzICQkCitkZWNsYXJlCisJY3JlYXRlX2luZGV4IGJv b2w7CitiZWdpbgorCS0tIFBlcmZvcm0gRERMIG9uIGEgcGFydGl0aW9uIGlmIGFza2VkIHRvCisJ c2VsZWN0IGNyZWF0ZV9pZHggaW50byBjcmVhdGVfaW5kZXggZnJvbSBpbnZhbF9kdXJpbmdfcHJ1 bmluZ19zaWduYWwgZm9yIHVwZGF0ZTsKKwlpZiBjcmVhdGVfaW5kZXggPSB0cnVlIHRoZW4KKwkJ cmFpc2Ugbm90aWNlICdjcmVhdGluZyBpbmRleCBvbiBwYXJ0aXRpb24gaW52YWxfZHVyaW5nX3By dW5pbmdfcDEnOworCQljcmVhdGUgaW5kZXggb24gaW52YWxfZHVyaW5nX3BydW5pbmdfcDEgKGEp OworCQl1cGRhdGUgaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIHNldCBjcmVhdGVfaWR4ID0g ZmFsc2U7CisJZW5kIGlmOworCS0tIHBydW5pbmcgcGFyYW1ldGVyCisJcmV0dXJuIDE7CitlbmQ7 CiskJCBsYW5ndWFnZSBwbHBnc3FsIHZvbGF0aWxlOworY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rp b24gc3RhYmxlX3BydW5pbmdfdmFsKCkgcmV0dXJucyBpbnQgYXMgJCQKKwlzZWxlY3QgaW52YWxp ZGF0ZV9wbGFuY2FjaGVfZnVuYygpOworJCQgbGFuZ3VhZ2Ugc3FsIHN0YWJsZTsKK3ByZXBhcmUg aW52YWxfZHVyaW5nX3BydW5pbmdfcSBhcyBzZWxlY3QgKiBmcm9tIGludmFsX2R1cmluZ19wcnVu aW5nX3Agd2hlcmUgYSA9IHN0YWJsZV9wcnVuaW5nX3ZhbCgpOworLS0gQnVpbGQgYSBnZW5lcmlj IHBsYW4gYW5kIHJ1biBwcnVuaW5nIG9uY2UsIGJ1dCBkb24ndCBzZXQgdGhlIHNpZ25hbAorLS0g Zm9yIGludmFsaWRhdGVfcGxhbmNhY2hlX2Z1bmMoKSB0byBwZXJmb3JtIHRoZSBEREwuCitleHBs YWluICh2ZXJib3NlLCBjb3N0cyBvZmYpIGV4ZWN1dGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICBTdWJw bGFucyBSZW1vdmVkOiAxCisgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmludmFsX2R1cmluZ19w cnVuaW5nX3AxIGludmFsX2R1cmluZ19wcnVuaW5nX3BfMQorICAgICAgICAgT3V0cHV0OiBpbnZh bF9kdXJpbmdfcHJ1bmluZ19wXzEuYQorICAgICAgICAgRmlsdGVyOiAoaW52YWxfZHVyaW5nX3By dW5pbmdfcF8xLmEgPSBzdGFibGVfcHJ1bmluZ192YWwoKSkKKyg1IHJvd3MpCisKKy0tIFJldXNl IHRoZSBnZW5lcmljIHBsYW4uICBNYWtlIGludmFsaWRhdGVfcGxhbmNhY2hlX2Z1bmMoKSBwZXJm b3JtIERETAorLS0gZHVyaW5nIHRoaXMgZXhlY3V0aW9uLCB3aGljaCBzaG91bGQgZm9yY2UgcmVw bGFubmluZyB3aXRob3V0IGVycm9ycy4KK3VwZGF0ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWdu YWwgc2V0IGNyZWF0ZV9pZHggPSB0cnVlOworZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKSBl eGVjdXRlIGludmFsX2R1cmluZ19wcnVuaW5nX3E7CitOT1RJQ0U6ICBjcmVhdGluZyBpbmRleCBv biBwYXJ0aXRpb24gaW52YWxfZHVyaW5nX3BydW5pbmdfcDEKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgQXBwZW5kCisgICBTdWJwbGFucyBSZW1vdmVkOiAxCisgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLmludmFsX2R1cmluZ19wcnVuaW5nX3AxIGludmFsX2R1cmlu Z19wcnVuaW5nX3BfMQorICAgICAgICAgT3V0cHV0OiBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wXzEu YQorICAgICAgICAgRmlsdGVyOiAoaW52YWxfZHVyaW5nX3BydW5pbmdfcF8xLmEgPSBzdGFibGVf cHJ1bmluZ192YWwoKSkKKyg1IHJvd3MpCisKK2Ryb3AgdGFibGUgaW52YWxfZHVyaW5nX3BydW5p bmdfcCwgaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsOworZHJvcCBmdW5jdGlvbiBpbnZhbGlk YXRlX3BsYW5jYWNoZV9mdW5jLCBzdGFibGVfcHJ1bmluZ192YWw7CitkZWFsbG9jYXRlIGludmFs X2R1cmluZ19wcnVuaW5nX3E7CityZXNldCBwbGFuX2NhY2hlX21vZGU7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbAppbmRleCAyMjljNWViMzcwYy4uODc2NzJhZDQwZjcg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3BydW5lLnNxbApAQCAtMTQ5OSw2ICsx NDk5LDI4IEBAIHNlbGVjdCBjLnJlbG5hbWUKIGNvbW1pdDsKIAogZGVhbGxvY2F0ZSBwcnVuZWxv Y2tfcTsKK3Jlc2V0IGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZzsKKworLS0KKy0tIFZlcmlmeSBm aXJzdFJlc3VsdFJlbHMgaGFuZGxpbmcgd2l0aCBtdWx0aXBsZSBNb2RpZnlUYWJsZSBub2Rlcwor LS0gKHdyaXRhYmxlIENURXMpIHRhcmdldGluZyBhIHBhcnRpdGlvbmVkIHRhYmxlLiAgV2hlbiBh IHBydW5pbmcKKy0tIHBhcmFtZXRlciBtYXRjaGVzIG5vIHBhcnRpdGlvbiwgYWxsIHJlc3VsdCBy ZWxhdGlvbnMgYXJlIHBydW5lZAorLS0gYW5kIHRoZSBleGVjdXRvciBtdXN0IHN0aWxsIGZpbmQg YSB1c2FibGUgZmlyc3QgcmVzdWx0IHJlbGF0aW9uCistLSBmb3IgZWFjaCBNb2RpZnlUYWJsZSBu b2RlLgorLS0KK3ByZXBhcmUgcHJ1bmVsb2NrX210X3EgKGludCwgaW50KSBhcworICB3aXRoIHVw ZDEgYXMgKHVwZGF0ZSBwcnVuZWxvY2tfcCBzZXQgYSA9IGEpLAorICAgICAgIHVwZDIgYXMgKHVw ZGF0ZSBwcnVuZWxvY2tfcCBzZXQgYSA9IGEgd2hlcmUgYSA9ICQyKQorICB1cGRhdGUgcHJ1bmVs b2NrX3Agc2V0IGEgPSBhIHdoZXJlIGEgPSAkMTsKKworLS0gRm9yY2UgZ2VuZXJpYyBwbGFuIGNy ZWF0aW9uCitleHBsYWluIChjb3N0cyBvZmYpIGV4ZWN1dGUgcHJ1bmVsb2NrX210X3EoMSwgMik7 CisKKy0tIEFsbCBwYXJ0aXRpb25zIHBydW5lZDogdmFsdWUgNCBtYXRjaGVzIG5vIHBhcnRpdGlv biwgc28gZWFjaAorLS0gTW9kaWZ5VGFibGUgbXVzdCBzdGlsbCBpbml0aWFsaXplIGNvcnJlY3Rs eSB3aXRoIG5vIG1hdGNoaW5nCistLSByZXN1bHQgcmVsYXRpb25zLgorZXhlY3V0ZSBwcnVuZWxv Y2tfbXRfcSg0LCA1KTsKKworZGVhbGxvY2F0ZSBwcnVuZWxvY2tfbXRfcTsKIGRyb3AgdGFibGUg cHJ1bmVsb2NrX3A7CiByZXNldCBwbGFuX2NhY2hlX21vZGU7Ci1yZXNldCBlbmFibGVfcGFydGl0 aW9uX3BydW5pbmc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wbGFuY2FjaGUu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGxhbmNhY2hlLnNxbAppbmRleCA0YjJmMTFkY2M2 NC4uMTM5YjQ2ODhmZDYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5jYWNo ZS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGxhbmNhY2hlLnNxbApAQCAtMjIzLDMg KzIyMyw1NCBAQCBzZWxlY3QgbmFtZSwgZ2VuZXJpY19wbGFucywgY3VzdG9tX3BsYW5zIGZyb20g cGdfcHJlcGFyZWRfc3RhdGVtZW50cwogICB3aGVyZSAgbmFtZSA9ICd0ZXN0X21vZGVfcHAnOwog CiBkcm9wIHRhYmxlIHRlc3RfbW9kZTsKKworLS0gVGVzdCBpbnZhbGlkYXRpb24gb2YgYSBnZW5l cmljIHBsYW4gZHVyaW5nIHBydW5pbmctYXdhcmUgbG9jayBzZXR1cC4KKy0tIFRoZSBwcnVuaW5n IGV4cHJlc3Npb24gdXNlcyBhIHN0YWJsZSBTUUwgZnVuY3Rpb24gdGhhdCBjYWxscyBhIHZvbGF0 aWxlCistLSBwbHBnc3FsIGZ1bmN0aW9uLiAgVGhhdCBmdW5jdGlvbiBwZXJmb3JtcyBEREwgb24g YSBwYXJ0aXRpb24gd2hlbiBhCistLSBzZXBhcmF0ZSAic2lnbmFsIiB0YWJsZSBzYXlzIHRvIGRv IHNvLiAgVGhlIHNlY29uZCBFWEVDVVRFIHNob3VsZAorLS0gcmVwbGFuIGNsZWFubHkgYWZ0ZXIg dGhlIERETC4KK3NldCBwbGFuX2NhY2hlX21vZGUgdG8gZm9yY2VfZ2VuZXJpY19wbGFuOworY3Jl YXRlIHRhYmxlIGludmFsX2R1cmluZ19wcnVuaW5nX3AgKGEgaW50KSBwYXJ0aXRpb24gYnkgbGlz dCAoYSk7CitjcmVhdGUgdGFibGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcDEgcGFydGl0aW9uIG9m IGludmFsX2R1cmluZ19wcnVuaW5nX3AgZm9yIHZhbHVlcyBpbiAoMSk7CitjcmVhdGUgdGFibGUg aW52YWxfZHVyaW5nX3BydW5pbmdfcDIgcGFydGl0aW9uIG9mIGludmFsX2R1cmluZ19wcnVuaW5n X3AgZm9yIHZhbHVlcyBpbiAoMik7CitpbnNlcnQgaW50byBpbnZhbF9kdXJpbmdfcHJ1bmluZ19w IHZhbHVlcyAoMSksICgyKTsKKworY3JlYXRlIHRhYmxlIGludmFsX2R1cmluZ19wcnVuaW5nX3Np Z25hbCAoY3JlYXRlX2lkeCBib29sIG5vdCBudWxsKTsKK2luc2VydCBpbnRvIGludmFsX2R1cmlu Z19wcnVuaW5nX3NpZ25hbCB2YWx1ZXMgKGZhbHNlKTsKK2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0 aW9uIGludmFsaWRhdGVfcGxhbmNhY2hlX2Z1bmMoKSByZXR1cm5zIGludAorYXMgJCQKK2RlY2xh cmUKKwljcmVhdGVfaW5kZXggYm9vbDsKK2JlZ2luCisJLS0gUGVyZm9ybSBEREwgb24gYSBwYXJ0 aXRpb24gaWYgYXNrZWQgdG8KKwlzZWxlY3QgY3JlYXRlX2lkeCBpbnRvIGNyZWF0ZV9pbmRleCBm cm9tIGludmFsX2R1cmluZ19wcnVuaW5nX3NpZ25hbCBmb3IgdXBkYXRlOworCWlmIGNyZWF0ZV9p bmRleCA9IHRydWUgdGhlbgorCQlyYWlzZSBub3RpY2UgJ2NyZWF0aW5nIGluZGV4IG9uIHBhcnRp dGlvbiBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wMSc7CisJCWNyZWF0ZSBpbmRleCBvbiBpbnZhbF9k dXJpbmdfcHJ1bmluZ19wMSAoYSk7CisJCXVwZGF0ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWdu YWwgc2V0IGNyZWF0ZV9pZHggPSBmYWxzZTsKKwllbmQgaWY7CisJLS0gcHJ1bmluZyBwYXJhbWV0 ZXIKKwlyZXR1cm4gMTsKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWwgdm9sYXRpbGU7CisKK2Ny ZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIHN0YWJsZV9wcnVuaW5nX3ZhbCgpIHJldHVybnMgaW50 IGFzICQkCisJc2VsZWN0IGludmFsaWRhdGVfcGxhbmNhY2hlX2Z1bmMoKTsKKyQkIGxhbmd1YWdl IHNxbCBzdGFibGU7CisKK3ByZXBhcmUgaW52YWxfZHVyaW5nX3BydW5pbmdfcSBhcyBzZWxlY3Qg KiBmcm9tIGludmFsX2R1cmluZ19wcnVuaW5nX3Agd2hlcmUgYSA9IHN0YWJsZV9wcnVuaW5nX3Zh bCgpOworCistLSBCdWlsZCBhIGdlbmVyaWMgcGxhbiBhbmQgcnVuIHBydW5pbmcgb25jZSwgYnV0 IGRvbid0IHNldCB0aGUgc2lnbmFsCistLSBmb3IgaW52YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYygp IHRvIHBlcmZvcm0gdGhlIERETC4KK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikgZXhlY3V0 ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19xOworCistLSBSZXVzZSB0aGUgZ2VuZXJpYyBwbGFuLiAg TWFrZSBpbnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5jKCkgcGVyZm9ybSBEREwKKy0tIGR1cmluZyB0 aGlzIGV4ZWN1dGlvbiwgd2hpY2ggc2hvdWxkIGZvcmNlIHJlcGxhbm5pbmcgd2l0aG91dCBlcnJv cnMuCit1cGRhdGUgaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIHNldCBjcmVhdGVfaWR4ID0g dHJ1ZTsKK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikgZXhlY3V0ZSBpbnZhbF9kdXJpbmdf cHJ1bmluZ19xOworCitkcm9wIHRhYmxlIGludmFsX2R1cmluZ19wcnVuaW5nX3AsIGludmFsX2R1 cmluZ19wcnVuaW5nX3NpZ25hbDsKK2Ryb3AgZnVuY3Rpb24gaW52YWxpZGF0ZV9wbGFuY2FjaGVf ZnVuYywgc3RhYmxlX3BydW5pbmdfdmFsOworZGVhbGxvY2F0ZSBpbnZhbF9kdXJpbmdfcHJ1bmlu Z19xOworCityZXNldCBwbGFuX2NhY2hlX21vZGU7Ci0tIAoyLjQ3LjMKCg== --0000000000008178b5064c9006a7 Content-Type: application/octet-stream; name="v7-0006-Reuse-partition-pruning-results-in-parallel-worke.patch" Content-Disposition: attachment; filename="v7-0006-Reuse-partition-pruning-results-in-parallel-worke.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmip259b0 RnJvbSA5Yzk0YjM3NTFhZTBjOWRlY2MzMzdlMzNkZTI3NTBhOTU0YTg4ZDZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTEgTm92IDIwMjUgMjI6MTc6NDcgKzA5MDAKU3ViamVjdDogW1BBVENIIHY3 IDYvNl0gUmV1c2UgcGFydGl0aW9uIHBydW5pbmcgcmVzdWx0cyBpbiBwYXJhbGxlbCB3b3JrZXJz CgpQYXNzIHRoZSBsZWFkZXIncyBpbml0aWFsIHBhcnRpdGlvbiBwcnVuaW5nIHJlc3VsdHMgYW5k IHVucHJ1bmVkCnJlbGlkcyB0byBwYXJhbGxlbCB3b3JrZXJzIGFuZCByZXVzZSB0aGVtIHZpYSBF eGVjdXRvclByZXAoKS4gVGhpcwphdm9pZHMgcmVwZWF0aW5nIHBydW5pbmcgbG9naWMgaW4gd29y a2Vycywgd2hpY2ggaXMgbm90IG9ubHkKcmVkdW5kYW50IGJ1dCBhbHNvIHJpc2tzIGRpdmVyZ2Vu Y2UgZHVlIHRvIG5vbmRldGVybWluaXNtIGluIHBydW5pbmcKc3RlcHMgb3IgcGFyYW1ldGVyIGV2 YWx1YXRpb24gdGltaW5nLgoKSW50cm9kdWNlIENoZWNrSW5pdGlhbFBydW5pbmdSZXN1bHRzSW5X b3JrZXIoKSAoZGVidWctYnVpbGRzIG9ubHkpCnRvIHZlcmlmeSB0aGF0IHRoZSByZXN1bHRzIG1h dGNoIHdoYXQgdGhlIHdvcmtlciB3b3VsZCBjb21wdXRlLiBUaGlzCmNoZWNrIGhlbHBzIGNhdGNo IGluY29uc2lzdGVuY2llcyBhY3Jvc3MgbGVhZGVyIGFuZCB3b3JrZXIgcHJ1bmluZwpsb2dpYy4K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYyB8IDEwOCArKysrKysrKysr KysrKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgMTA3IGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxs ZWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jCmluZGV4IDAyNDc4MGQz NTE2Li5kMzM3YmY4YzA4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTI0 LDYgKzI0LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZUFnZy5o IgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVBcHBlbmQuaCIKQEAgLTY3LDYgKzY4LDggQEAKICNk ZWZpbmUgUEFSQUxMRUxfS0VZX1FVRVJZX1RFWFQJCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAwMDAw MDAwOCkKICNkZWZpbmUgUEFSQUxMRUxfS0VZX0pJVF9JTlNUUlVNRU5UQVRJT04gVUlOVDY0Q09O U1QoMHhFMDAwMDAwMDAwMDAwMDA5KQogI2RlZmluZSBQQVJBTExFTF9LRVlfV0FMX1VTQUdFCQkJ VUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDBBKQorI2RlZmluZSBQQVJBTExFTF9LRVlfUEFS VElUSU9OX1BSVU5FX1JFU1VMVFMJVUlOVDY0Q09OU1QoMHhFMDAwMDAwMDAwMDAwMDBCKQorI2Rl ZmluZSBQQVJBTExFTF9LRVlfVU5QUlVORURfUkVMSURTCVVJTlQ2NENPTlNUKDB4RTAwMDAwMDAw MDAwMDAwQykKIAogI2RlZmluZSBQQVJBTExFTF9UVVBMRV9RVUVVRV9TSVpFCQk2NTUzNgogCkBA IC0xNDEsNiArMTQ0LDggQEAgc3RhdGljIGJvb2wgRXhlY1BhcmFsbGVsUmV0cmlldmVJbnN0cnVt ZW50YXRpb24oUGxhblN0YXRlICpwbGFuc3RhdGUsCiAvKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCBy dW5zIGluIHRoZSBwYXJhbGxlbCB3b3JrZXIuICovCiBzdGF0aWMgRGVzdFJlY2VpdmVyICpFeGVj UGFyYWxsZWxHZXRSZWNlaXZlcihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpOwogCitz dGF0aWMgdm9pZCBDaGVja0luaXRpYWxQcnVuaW5nUmVzdWx0c0luV29ya2VyKEVTdGF0ZSAqZXN0 YXRlKTsKKwogLyoKICAqIENyZWF0ZSBhIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhl IHBsYW4gdG8gYmUgc2VudCB0byBlYWNoIHdvcmtlci4KICAqLwpAQCAtNjIwLDEyICs2MjUsMTgg QEAgRXhlY0luaXRQYXJhbGxlbFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0 YXRlLAogCUZpeGVkUGFyYWxsZWxFeGVjdXRvclN0YXRlICpmcGVzOwogCWNoYXIJICAgKnBzdG10 X2RhdGE7CiAJY2hhcgkgICAqcHN0bXRfc3BhY2U7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1 bHRzX2RhdGE7CisJY2hhcgkgICAqcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNlOworCWNoYXIJICAg KnVucHJ1bmVkX3JlbGlkc19kYXRhOworCWNoYXIJICAgKnVucHJ1bmVkX3JlbGlkc19zcGFjZTsK IAljaGFyCSAgICpwYXJhbWxpc3RpbmZvX3NwYWNlOwogCUJ1ZmZlclVzYWdlICpidWZ1c2FnZV9z cGFjZTsKIAlXYWxVc2FnZSAgICp3YWx1c2FnZV9zcGFjZTsKIAlTaGFyZWRFeGVjdXRvckluc3Ry dW1lbnRhdGlvbiAqaW5zdHJ1bWVudGF0aW9uID0gTlVMTDsKIAlTaGFyZWRKaXRJbnN0cnVtZW50 YXRpb24gKmppdF9pbnN0cnVtZW50YXRpb24gPSBOVUxMOwogCWludAkJCXBzdG10X2xlbjsKKwlp bnQJCQlwYXJ0X3BydW5lX3Jlc3VsdHNfbGVuOworCWludAkJCXVucHJ1bmVkX3JlbGlkc19sZW47 CiAJaW50CQkJcGFyYW1saXN0aW5mb19sZW47CiAJaW50CQkJaW5zdHJ1bWVudGF0aW9uX2xlbiA9 IDA7CiAJaW50CQkJaml0X2luc3RydW1lbnRhdGlvbl9sZW4gPSAwOwpAQCAtNjU0LDYgKzY2NSw4 IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVz dGF0ZSwKIAogCS8qIEZpeCB1cCBhbmQgc2VyaWFsaXplIHBsYW4gdG8gYmUgc2VudCB0byB3b3Jr ZXJzLiAqLwogCXBzdG10X2RhdGEgPSBFeGVjU2VyaWFsaXplUGxhbihwbGFuc3RhdGUtPnBsYW4s IGVzdGF0ZSk7CisJcGFydF9wcnVuZV9yZXN1bHRzX2RhdGEgPSBub2RlVG9TdHJpbmcoZXN0YXRl LT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMpOworCXVucHJ1bmVkX3JlbGlkc19kYXRhID0gbm9kZVRv U3RyaW5nKGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzKTsKIAogCS8qIENyZWF0ZSBhIHBhcmFs bGVsIGNvbnRleHQuICovCiAJcGN4dCA9IENyZWF0ZVBhcmFsbGVsQ29udGV4dCgicG9zdGdyZXMi LCAiUGFyYWxsZWxRdWVyeU1haW4iLCBud29ya2Vycyk7CkBAIC02ODAsNiArNjkzLDE2IEBAIEV4 ZWNJbml0UGFyYWxsZWxQbGFuKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwK IAlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHBzdG10X2xlbik7CiAJ c2htX3RvY19lc3RpbWF0ZV9rZXlzKCZwY3h0LT5lc3RpbWF0b3IsIDEpOwogCisJLyogRXN0aW1h dGUgc3BhY2UgZm9yIHNlcmlhbGl6ZWQgcGFydF9wcnVuZV9yZXN1bHRzLiAqLworCXBhcnRfcHJ1 bmVfcmVzdWx0c19sZW4gPSBzdHJsZW4ocGFydF9wcnVuZV9yZXN1bHRzX2RhdGEpICsgMTsKKwlz aG1fdG9jX2VzdGltYXRlX2NodW5rKCZwY3h0LT5lc3RpbWF0b3IsIHBhcnRfcHJ1bmVfcmVzdWx0 c19sZW4pOworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmcGN4dC0+ZXN0aW1hdG9yLCAxKTsKKwor CS8qIEVzdGltYXRlIHNwYWNlIGZvciBzZXJpYWxpemVkIHVucHJ1bmVkX3JlbGlkcy4gKi8KKwl1 bnBydW5lZF9yZWxpZHNfbGVuID0gc3RybGVuKHVucHJ1bmVkX3JlbGlkc19kYXRhKSArIDE7CisJ c2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCB1bnBydW5lZF9yZWxpZHNf bGVuKTsKKwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJnBjeHQtPmVzdGltYXRvciwgMSk7CisKIAkv KiBFc3RpbWF0ZSBzcGFjZSBmb3Igc2VyaWFsaXplZCBQYXJhbUxpc3RJbmZvLiAqLwogCXBhcmFt bGlzdGluZm9fbGVuID0gRXN0aW1hdGVQYXJhbUxpc3RTcGFjZShlc3RhdGUtPmVzX3BhcmFtX2xp c3RfaW5mbyk7CiAJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmcGN4dC0+ZXN0aW1hdG9yLCBwYXJh bWxpc3RpbmZvX2xlbik7CkBAIC03ODEsNiArODA0LDE2IEBAIEV4ZWNJbml0UGFyYWxsZWxQbGFu KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKIAltZW1jcHkocHN0bXRfc3Bh Y2UsIHBzdG10X2RhdGEsIHBzdG10X2xlbik7CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBQ QVJBTExFTF9LRVlfUExBTk5FRFNUTVQsIHBzdG10X3NwYWNlKTsKIAorCS8qIFN0b3JlIHNlcmlh bGl6ZWQgcGFydF9wcnVuZV9yZXN1bHRzICovCisJcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNlID0g c2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHBhcnRfcHJ1bmVfcmVzdWx0c19sZW4pOworCW1l bWNweShwYXJ0X3BydW5lX3Jlc3VsdHNfc3BhY2UsIHBhcnRfcHJ1bmVfcmVzdWx0c19kYXRhLCBw YXJ0X3BydW5lX3Jlc3VsdHNfbGVuKTsKKwlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBBUkFM TEVMX0tFWV9QQVJUSVRJT05fUFJVTkVfUkVTVUxUUywgcGFydF9wcnVuZV9yZXN1bHRzX3NwYWNl KTsKKworCS8qIFN0b3JlIHNlcmlhbGl6ZWQgdW5wcnVuZWRfcmVsaWRzICovCisJdW5wcnVuZWRf cmVsaWRzX3NwYWNlID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIHVucHJ1bmVkX3JlbGlk c19sZW4pOworCW1lbWNweSh1bnBydW5lZF9yZWxpZHNfc3BhY2UsIHVucHJ1bmVkX3JlbGlkc19k YXRhLCB1bnBydW5lZF9yZWxpZHNfbGVuKTsKKwlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIFBB UkFMTEVMX0tFWV9VTlBSVU5FRF9SRUxJRFMsIHVucHJ1bmVkX3JlbGlkc19zcGFjZSk7CisKIAkv KiBTdG9yZSBzZXJpYWxpemVkIFBhcmFtTGlzdEluZm8uICovCiAJcGFyYW1saXN0aW5mb19zcGFj ZSA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBwYXJhbWxpc3RpbmZvX2xlbik7CiAJc2ht X3RvY19pbnNlcnQocGN4dC0+dG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNUSU5GTywgcGFyYW1s aXN0aW5mb19zcGFjZSk7CkBAIC0xMjgwLDEwICsxMzEzLDE1IEBAIEV4ZWNQYXJhbGxlbEdldFF1 ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJCQkJCQkgaW50 IGluc3RydW1lbnRfb3B0aW9ucykKIHsKIAljaGFyCSAgICpwc3RtdHNwYWNlOworCWNoYXIJICAg KnBhcnRfcHJ1bmVfcmVzdWx0c19zcGFjZTsKKwljaGFyCSAgICp1bnBydW5lZF9yZWxpZHNfc3Bh Y2U7CiAJY2hhcgkgICAqcGFyYW1zcGFjZTsKIAlQbGFubmVkU3RtdCAqcHN0bXQ7CisJTGlzdAkg ICAqcGFydF9wcnVuZV9yZXN1bHRzOworCUJpdG1hcHNldCAgKnVucHJ1bmVkX3JlbGlkczsKIAlQ YXJhbUxpc3RJbmZvIHBhcmFtTEk7CiAJY2hhcgkgICAqcXVlcnlTdHJpbmc7CisJRVN0YXRlCSAg ICpwcmVwX2VzdGF0ZSA9IE5VTEw7CiAKIAkvKiBHZXQgdGhlIHF1ZXJ5IHN0cmluZyBmcm9tIHNo YXJlZCBtZW1vcnkgKi8KIAlxdWVyeVN0cmluZyA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxM RUxfS0VZX1FVRVJZX1RFWFQsIGZhbHNlKTsKQEAgLTEyOTYsMTIgKzEzMzQsODAgQEAgRXhlY1Bh cmFsbGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNlaXZlciwK IAlwYXJhbXNwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUEFSQU1MSVNU SU5GTywgZmFsc2UpOwogCXBhcmFtTEkgPSBSZXN0b3JlUGFyYW1MaXN0KCZwYXJhbXNwYWNlKTsK IAorCS8qIFJlY29uc3RydWN0IGxlYWRlci1zdXBwbGllZCBwYXJ0X3BydW5lX3Jlc3VsdHMgYW5k IHVucHJ1bmVkX3JlbGlkcy4gKi8KKwlwYXJ0X3BydW5lX3Jlc3VsdHNfc3BhY2UgPQorCQlzaG1f dG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0tFWV9QQVJUSVRJT05fUFJVTkVfUkVTVUxUUywgZmFs c2UpOworCXBhcnRfcHJ1bmVfcmVzdWx0cyA9IChMaXN0ICopIHN0cmluZ1RvTm9kZShwYXJ0X3By dW5lX3Jlc3VsdHNfc3BhY2UpOworCXVucHJ1bmVkX3JlbGlkc19zcGFjZSA9CisJCXNobV90b2Nf bG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1VOUFJVTkVEX1JFTElEUywgZmFsc2UpOworCXVucHJ1 bmVkX3JlbGlkcyA9IChCaXRtYXBzZXQgKikgc3RyaW5nVG9Ob2RlKHVucHJ1bmVkX3JlbGlkc19z cGFjZSk7CisKKwkvKgorCSAqIElmIHBydW5pbmcgd2FzIGRvbmUgaW4gdGhlIGxlYWRlciwgYnVp bGQgYSBwcmVwIGVzdGF0ZSBpbiB0aGUgd29ya2VyCisJICogYW5kIGluamVjdCB0aGUgbGVhZGVy J3MgcHJ1bmluZyByZXN1bHRzIGludG8gaXQgZm9yIHJldXNlLgorCSAqLworCWlmIChwc3RtdC0+ cGFydFBydW5lSW5mb3MpCisJeworCQlwcmVwX2VzdGF0ZSA9IEV4ZWN1dG9yUHJlcChwc3RtdCwg cGFyYW1MSSwgQ3VycmVudFJlc291cmNlT3duZXIsIGZhbHNlLCAwKTsKKwkJQXNzZXJ0KHByZXBf ZXN0YXRlKTsKKworCQlwcmVwX2VzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzID0gcGFydF9w cnVuZV9yZXN1bHRzOworCQlwcmVwX2VzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzID0KKwkJCWJt c19hZGRfbWVtYmVycyhwcmVwX2VzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzLAorCQkJCQkJCXVu cHJ1bmVkX3JlbGlkcyk7CisKKwkJLyoKKwkJICogQSBkZWJ1Zy1idWlsZC1vbmx5IGNoZWNrIHRo YXQgdGhlIHBydW5pbmcgcmVzdWx0cyBwYXNzZWQgZnJvbSB0aGUKKwkJICogbGVhZGVyIG1hdGNo IHdoYXQgdGhlIHdvcmtlciB3b3VsZCBpbmRlcGVuZGVudGx5IGNvbXB1dGUuCisJCSAqLworCQlD aGVja0luaXRpYWxQcnVuaW5nUmVzdWx0c0luV29ya2VyKHByZXBfZXN0YXRlKTsKKwl9CisKIAkv KiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8KIAlyZXR1cm4gQ3JlYXRlUXVl cnlEZXNjKHBzdG10LAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJCQkgICBHZXRBY3RpdmVT bmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNlaXZlciwgcGFyYW1MSSwg TlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zLAotCQkJCQkJICAgTlVMTCk7CisJCQkJCQkgICBwcmVw X2VzdGF0ZSk7Cit9CisKKy8qCisgKiBDaGVja0luaXRpYWxQcnVuaW5nUmVzdWx0c0luV29ya2Vy CisgKgkJVmVyaWZ5IHBhcnRpdGlvbiBwcnVuaW5nIHJlc3VsdHMgcGFzc2VkIGZyb20gdGhlIGxl YWRlciBwcm9jZXNzLgorICoKKyAqIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGR1cmlu ZyBwYXJhbGxlbCB3b3JrZXIgcXVlcnkgc2V0dXAuCisgKiBJdCByZWNvbXB1dGVzIGluaXRpYWwg cHJ1bmluZyByZXN1bHRzIGxvY2FsbHkgYW5kIGNvbXBhcmVzIHRoZW0gd2l0aAorICogdGhvc2Ug cmVjZWl2ZWQgZnJvbSB0aGUgbGVhZGVyLiBBbnkgbWlzbWF0Y2ggbWF5IGluZGljYXRlIGEgZGl2 ZXJnZW5jZQorICogYmV0d2VlbiBsZWFkZXIgYW5kIHdvcmtlciBsb2dpYyBvciBlbnZpcm9ubWVu dC4KKyAqCisgKiBPbmx5IHBlcmZvcm1lZCBpbiBkZWJ1ZyBidWlsZHMuCisgKi8KK3N0YXRpYyB2 b2lkCitDaGVja0luaXRpYWxQcnVuaW5nUmVzdWx0c0luV29ya2VyKEVTdGF0ZSAqZXN0YXRlKQor eworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlMaXN0Q2VsbCAgICpsYzsKKwlpbnQJCQlp OworCisJQXNzZXJ0KGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzICE9IE5VTEwpOworCWkg PSAwOworCWZvcmVhY2gobGMsIGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9zdGF0ZXMpCisJeworCQlQ YXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlID0gKFBhcnRpdGlvblBydW5lU3RhdGUgKikg bGZpcnN0KGxjKTsKKwkJQml0bWFwc2V0ICpyZXVzZV92YWxpZHN1YnBsYW5zID0KKwkJCQlsaXN0 X250aF9ub2RlKEJpdG1hcHNldCwgZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMsIGkrKyk7 CisJCUJpdG1hcHNldCAgKnZhbGlkc3VicGxhbnMgPSBOVUxMOworCQlCaXRtYXBzZXQgICp2YWxp ZHN1YnBsYW5fcnRpcyA9IE5VTEw7CisKKwkJaWYgKHBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1 bmUpCisJCQl2YWxpZHN1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBydW5lc3Rh dGUsIHRydWUsCisJCQkJCQkJCQkJCQkJICZ2YWxpZHN1YnBsYW5fcnRpcyk7CisJCWlmICghYm1z X2VxdWFsKHZhbGlkc3VicGxhbnMsIHJldXNlX3ZhbGlkc3VicGxhbnMpKQorCQkJZWxvZyhFUlJP UiwgImRpZmZlcmVudCB2YWxpZHN1YnBsYW5zIGluIHBhcmFsbGVsIHdvcmtlciIpOworCQlpZiAo Ym1zX25vbmVtcHR5X2RpZmZlcmVuY2UodmFsaWRzdWJwbGFuX3J0aXMsIGVzdGF0ZS0+ZXNfdW5w cnVuZWRfcmVsaWRzKSkKKwkJCWVsb2coRVJST1IsICJkaWZmZXJlbnQgdW5wcnVuYWJsZV9yZWxp ZHMgaW4gcGFyYWxsZWwgd29ya2VyIik7CisJfQorI2VuZGlmCiB9CiAKIC8qCi0tIAoyLjQ3LjMK Cg== --0000000000008178b5064c9006a7 Content-Type: application/octet-stream; name="v7-0001-Refactor-partition-pruning-initialization-for-cla.patch" Content-Disposition: attachment; filename="v7-0001-Refactor-partition-pruning-initialization-for-cla.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmip25a45 RnJvbSA2ZjJjOWNjN2EzMGQzOGNiMjYwNjU5NWY2MmI2MmM3N2UyYWJhNmU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMTAgRmViIDIwMjYgMTU6MDg6NTIgKzA5MDAKU3ViamVjdDogW1BBVENIIHY3 IDEvNl0gUmVmYWN0b3IgcGFydGl0aW9uIHBydW5pbmcgaW5pdGlhbGl6YXRpb24gZm9yIGNsYXJp dHkKIGFuZCBtb2R1bGFyaXR5CgpNb3ZlIHRoZSBjcmVhdGlvbiBvZiBQYXJ0aXRpb25QcnVuZVN0 YXRlIHN0cnVjdHVyZXMgb3V0IG9mCkV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgaW50byBhIG5ldyBF eGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMoKQpmdW5jdGlvbi4gVGhpcyBzZXBhcmF0ZXMg dGhlIHNldHVwIG9mIHBydW5pbmcgc3RhdGUgZnJvbSB0aGUgZXhlY3V0aW9uCm9mIGluaXRpYWwg cHJ1bmluZyBsb2dpYywgbWFraW5nIHRoZSBjb2RlIGNsZWFyZXIgYW5kIGVhc2llciB0bwptYWlu dGFpbi4KClNpbXBsaWZ5IGhhbmRsaW5nIG9mIHVucHJ1bmVkIHJlbGlkcyBieSBtb3ZpbmcgcmVz cG9uc2liaWxpdHkKZm9yIHJlY29yZGluZyB0aGVtIGluIEVTdGF0ZSBpbnRvIENyZWF0ZVBhcnRp dGlvblBydW5lU3RhdGUoKSwKYXZvaWRpbmcgdGhlIG5lZWQgdG8gcGFzcyBhbGxfbGVhZnBhcnRf cnRpcyBhcyBhbiBvdXQgcGFyYW1ldGVyLgoKQWxzbyBtb3ZlIHRoZSBzZXR0aW5nIG9mIGVjeHRf cGFyYW1fZXhlY192YWxzIGZyb20KRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoKSB0byBJ bml0RXhlY1BhcnRpdGlvblBydW5lQ29udGV4dHMoKSwKdG8gYWxsb3cgdGhlIGZvcm1lciB0byBi ZSBjYWxsZWQgYXQgYSB0aW1lIHdoZW4gdGhlIFBBUkFNX0VYRUMKcGFyYW1ldGVycyBoYXZlIG5v dCB5ZXQgYmVlbiBzZXQgdXAuCgpUaGlzIHJlZmFjdG9yaW5nIGFsbG93cyBjYWxsZXJzIHRvIHJl dXNlIHRoZSBwcnVuaW5nIHNldHVwIGxvZ2ljCndpdGhvdXQgYWx3YXlzIHRyaWdnZXJpbmcgcHJ1 bmluZywgYSBjYXBhYmlsaXR5IHVzZWZ1bCBmb3IgZnV0dXJlIHVzZQpjYXNlcyB0aGF0IG1heSBv bmx5IG5lZWQgbWV0YWRhdGEgaW5pdGlhbGl6YXRpb24uCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYyAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYyB8IDEwMyArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDc0IGluc2Vy dGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IGJm ZDNlYmM2MDFlLi42NTRmOTI0NmFkMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC04Njgs NiArODY4LDcgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJ ICogdG8gZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gZW50cnksIGFuZCB0aGUgZXNfcGFydF9wcnVu ZV9yZXN1bHRzIGxpc3QgaXMKIAkgKiBwYXJhbGxlbCB0byBlc19wYXJ0X3BydW5lX2luZm9zLgog CSAqLworCUV4ZWNDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlcyhlc3RhdGUpOwogCUV4ZWNEb0lu aXRpYWxQcnVuaW5nKGVzdGF0ZSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5jCmluZGV4IGJhYjI5NGY1ZTkxLi4yMGMzNTEzZmFiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYwpAQCAtMTg0LDggKzE4NCw3IEBAIHN0YXRpYyBjaGFyICpFeGVjQnVpbGRT bG90UGFydGl0aW9uS2V5RGVzY3JpcHRpb24oUmVsYXRpb24gcmVsLAogc3RhdGljIExpc3QgKmFk anVzdF9wYXJ0aXRpb25fY29sbm9zKExpc3QgKmNvbG5vcywgUmVzdWx0UmVsSW5mbyAqbGVhZl9w YXJ0X3JyaSk7CiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFw KExpc3QgKmNvbG5vcywgQXR0ck1hcCAqYXR0ck1hcCk7CiBzdGF0aWMgUGFydGl0aW9uUHJ1bmVT dGF0ZSAqQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwKLQkJCQkJCQkJ CQkJCQkgIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAotCQkJCQkJCQkJCQkJCSAgQml0 bWFwc2V0ICoqYWxsX2xlYWZwYXJ0X3J0aXMpOworCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1 bmVJbmZvICpwcnVuZWluZm8pOwogc3RhdGljIHZvaWQgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4 dChQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCQkgIExpc3QgKnBydW5p bmdfc3RlcHMsCiAJCQkJCQkJCQkgIFBhcnRpdGlvbkRlc2MgcGFydGRlc2MsCkBAIC0xOTQyLDYg KzE5NDEsOSBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9z LCBBdHRyTWFwICphdHRyTWFwKQogICoKICAqIEZ1bmN0aW9uczoKICAqCisgKiBFeGVjQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZXMKKyAqCQlDcmVhdGUgUGFydGl0aW9uUHJ1bmVTdGF0ZSBmb3Ig YWxsIFBhcnRpdGlvblBydW5lSW5mb3MgaW4gdGhlIEVTdGF0ZQorICoKICAqIEV4ZWNEb0luaXRp YWxQcnVuaW5nOgogICoJCVBlcmZvcm0gcnVudGltZSAiaW5pdGlhbCIgcHJ1bmluZywgaWYgbmVj ZXNzYXJ5LCB0byBkZXRlcm1pbmUgdGhlIHNldAogICoJCW9mIGNoaWxkIHN1Ym5vZGVzIHRoYXQg bmVlZCB0byBiZSBpbml0aWFsaXplZCBkdXJpbmcgRXhlY0luaXROb2RlKCkgZm9yCkBAIC0xOTY2 LDYgKzE5NjgsMjkgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNv bG5vcywgQXR0ck1hcCAqYXR0ck1hcCkKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKKy8qCisg KiBFeGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZXMKKyAqCisgKiBDcmVhdGUgYSBQYXJ0aXRp b25QcnVuZVN0YXRlIGZvciBlYWNoIFBhcnRpdGlvblBydW5lSW5mbyBpbiB0aGUgZXN0YXRlLAor ICogYW5kIHNhdmUgdGhlbSBpbiBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzLiBUaGlzIHNl dHVwIGlzIHJlcXVpcmVkCisgKiBiZWZvcmUgYW55IGluaXRpYWwgb3IgcnVudGltZSBwcnVuaW5n IGNhbiBvY2N1ci4KKyAqLwordm9pZAorRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGVzKEVT dGF0ZSAqZXN0YXRlKQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgZXN0YXRl LT5lc19wYXJ0X3BydW5lX2luZm9zKQorCXsKKwkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWlu Zm8gPSBsZmlyc3Rfbm9kZShQYXJ0aXRpb25QcnVuZUluZm8sIGxjKTsKKwkJUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKKworCQkvKiBDcmVhdGUgYW5kIHNhdmUgdGhlIFBhcnRpdGlv blBydW5lU3RhdGUuICovCisJCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRl KGVzdGF0ZSwgcHJ1bmVpbmZvKTsKKwkJZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcyA9IGxh cHBlbmQoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3N0YXRlcywKKwkJCQkJCQkJCQkJICAgcHJ1bmVz dGF0ZSk7CisJfQorfQogCiAvKgogICogRXhlY0RvSW5pdGlhbFBydW5pbmcKQEAgLTE5NzMsMTEg KzE5OTgsMTEgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5v cywgQXR0ck1hcCAqYXR0ck1hcCkKICAqCQlvZiBjaGlsZCBzdWJub2RlcyB0aGF0IG5lZWQgdG8g YmUgaW5pdGlhbGl6ZWQgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIGZvcgogICoJCXBsYW4gbm9kZXMg dGhhdCBzdXBwb3J0IHBhcnRpdGlvbiBwcnVuaW5nLgogICoKLSAqIFRoaXMgZnVuY3Rpb24gaXRl cmF0ZXMgb3ZlciBlYWNoIFBhcnRpdGlvblBydW5lSW5mbyBlbnRyeSBpbgotICogZXN0YXRlLT5l c19wYXJ0X3BydW5lX2luZm9zLiBGb3IgZWFjaCBlbnRyeSwgaXQgY3JlYXRlcyBhIFBhcnRpdGlv blBydW5lU3RhdGUKLSAqIGFuZCBhZGRzIGl0IHRvIGVzX3BhcnRfcHJ1bmVfc3RhdGVzLiAgRXhl Y0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZygpIGFjY2Vzc2VzCisgKiBUaGlzIGZ1bmN0aW9uIGl0 ZXJhdGVzIG92ZXIgZWFjaCBQYXJ0aXRpb25QcnVuZVN0YXRlIGluCisgKiBlc3RhdGUtPmVzX3Bh cnRfcHJ1bmVfc3RhdGVzLCB3aGljaCBtdXN0IGhhdmUgYmVlbiBwb3B1bGF0ZWQgZWFybGllciBi eQorICogRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGVzKCkuIEV4ZWNJbml0UGFydGl0aW9u RXhlY1BydW5pbmcoKSBhY2Nlc3NlcwogICogdGhlc2Ugc3RhdGVzIHRocm91Z2ggdGhlaXIgY29y cmVzcG9uZGluZyBpbmRleGVzIGluIGVzX3BhcnRfcHJ1bmVfc3RhdGVzIGFuZAotICogYXNzaWdu IGVhY2ggc3RhdGUgdG8gdGhlIHBhcmVudCBub2RlJ3MgUGxhblN0YXRlLCBmcm9tIHdoZXJlIGl0 IHdpbGwgYmUgdXNlZAorICogYXNzaWducyBlYWNoIHN0YXRlIHRvIHRoZSBwYXJlbnQgbm9kZSdz IFBsYW5TdGF0ZSwgZnJvbSB3aGVyZSBpdCB3aWxsIGJlIHVzZWQKICAqIGZvciAiZXhlYyIgcHJ1 bmluZy4KICAqCiAgKiBJZiBpbml0aWFsIHBydW5pbmcgc3RlcHMgZXhpc3QgZm9yIGEgUGFydGl0 aW9uUHJ1bmVJbmZvIGVudHJ5LCB0aGlzIGZ1bmN0aW9uCkBAIC0xOTk1LDIwICsyMDIwLDEzIEBA IEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKQogewogCUxpc3RDZWxsICAgKmxj OwogCi0JZm9yZWFjaChsYywgZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zKQorCUFzc2VydChl c3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyA9PSBOVUxMKTsKKwlmb3JlYWNoKGxjLCBlc3Rh dGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzKQogCXsKLQkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVu ZWluZm8gPSBsZmlyc3Rfbm9kZShQYXJ0aXRpb25QcnVuZUluZm8sIGxjKTsKLQkJUGFydGl0aW9u UHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKKwkJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0 ZSA9IChQYXJ0aXRpb25QcnVuZVN0YXRlICopIGxmaXJzdChsYyk7CiAJCUJpdG1hcHNldCAgKnZh bGlkc3VicGxhbnMgPSBOVUxMOwotCQlCaXRtYXBzZXQgICphbGxfbGVhZnBhcnRfcnRpcyA9IE5V TEw7CiAJCUJpdG1hcHNldCAgKnZhbGlkc3VicGxhbl9ydGlzID0gTlVMTDsKIAotCQkvKiBDcmVh dGUgYW5kIHNhdmUgdGhlIFBhcnRpdGlvblBydW5lU3RhdGUuICovCi0JCXBydW5lc3RhdGUgPSBD cmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKGVzdGF0ZSwgcHJ1bmVpbmZvLAotCQkJCQkJCQkJCQkg ICAmYWxsX2xlYWZwYXJ0X3J0aXMpOwotCQllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzID0g bGFwcGVuZChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzLAotCQkJCQkJCQkJCQkgICBwcnVu ZXN0YXRlKTsKLQogCQkvKgogCQkgKiBQZXJmb3JtIGluaXRpYWwgcHJ1bmluZyBzdGVwcywgaWYg YW55LCBhbmQgc2F2ZSB0aGUgcmVzdWx0CiAJCSAqIGJpdG1hcHNldCBvciBOVUxMIGFzIGRlc2Ny aWJlZCBpbiB0aGUgaGVhZGVyIGNvbW1lbnQuCkBAIC0yMDE2LDggKzIwMzQsNiBAQCBFeGVjRG9J bml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKIAkJaWYgKHBydW5lc3RhdGUtPmRvX2luaXRp YWxfcHJ1bmUpCiAJCQl2YWxpZHN1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKHBy dW5lc3RhdGUsIHRydWUsCiAJCQkJCQkJCQkJCQkJICZ2YWxpZHN1YnBsYW5fcnRpcyk7Ci0JCWVs c2UKLQkJCXZhbGlkc3VicGxhbl9ydGlzID0gYWxsX2xlYWZwYXJ0X3J0aXM7CiAKIAkJZXN0YXRl LT5lc191bnBydW5lZF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcnMoZXN0YXRlLT5lc191bnBydW5l ZF9yZWxpZHMsCiAJCQkJCQkJCQkJCQkJIHZhbGlkc3VicGxhbl9ydGlzKTsKQEAgLTIxMzUsMTQg KzIxNTEsMTIgQEAgRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5z dGF0ZSwKICAqIHBhcmVudCBwbGFuIG5vZGUncyBQbGFuU3RhdGUuCiAgKgogICogSWYgaW5pdGlh bCBwcnVuaW5nIHN0ZXBzIGFyZSB0byBiZSBza2lwcGVkIChlLmcuLCBkdXJpbmcgRVhQTEFJTgot ICogKEdFTkVSSUNfUExBTikpLCAqYWxsX2xlYWZwYXJ0X3J0aXMgd2lsbCBiZSBwb3B1bGF0ZWQg d2l0aCB0aGUgUlQgaW5kZXhlcyBvZgotICogYWxsIGxlYWYgcGFydGl0aW9ucyB3aG9zZSBzY2Fu bmluZyBzdWJub2RlIGlzIGluY2x1ZGVkIGluIHRoZSBwYXJlbnQgcGxhbgotICogbm9kZSdzIGxp c3Qgb2YgY2hpbGQgcGxhbnMuIFRoZSBjYWxsZXIgbXVzdCBhZGQgdGhlc2UgUlQgaW5kZXhlcyB0 bwotICogZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMuCisgKiAoR0VORVJJQ19QTEFOKSksIHRo ZSBSVCBpbmRleGVzIG9mIGFsbCBsZWFmIHBhcnRpdGlvbnMgd2hvc2Ugc2Nhbm5pbmcKKyAqIHN1 Ym5vZGUgaXMgaW5jbHVkZWQgaW4gdGhlIHBhcmVudCBwbGFuIG5vZGUncyBsaXN0IG9mIGNoaWxk IHBsYW5zIGFyZQorICogYWRkZWQgdG8gZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMuCiAgKi8K IHN0YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICoKLUNyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUo RVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAotCQkJCQkJICBC aXRtYXBzZXQgKiphbGxfbGVhZnBhcnRfcnRpcykKK0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUo RVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogewogCVBhcnRp dGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJaW50CQkJbl9wYXJ0X2hpZXJhcmNoaWVzOwpA QCAtMjM3Niw4ICsyMzkwLDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVz dGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCiAJCQkJCQkJCQkJCQkJICAgcGlu Zm8tPmV4ZWNwYXJhbWlkcyk7CiAKIAkJCS8qCi0JCQkgKiBSZXR1cm4gYWxsIGxlYWYgcGFydGl0 aW9uIGluZGV4ZXMgaWYgd2UncmUgc2tpcHBpbmcgcHJ1bmluZyBpbgotCQkJICogdGhlIEVYUExB SU4gKEdFTkVSSUNfUExBTikgY2FzZS4KKwkJCSAqIEFkZCBhbGwgbGVhZiBwYXJ0aXRpb24gaW5k ZXhlcyB0byBlc191bnBydW5lZF9yZWxpZHMgaWYgd2UncmUKKwkJCSAqIHNraXBwaW5nIHBydW5p bmcgaW4gdGhlIEVYUExBSU4gKEdFTkVSSUNfUExBTikgY2FzZS4KIAkJCSAqLwogCQkJaWYgKHBp bmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMgJiYgIXBydW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1 bmUpCiAJCQl7CkBAIC0yMzg5LDEwICsyNDAzLDI5IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3Rh dGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAogCQkJCQlJ bmRleAkJcnRpbmRleCA9IHBwcnVuZS0+bGVhZnBhcnRfcnRpX21hcFtwYXJ0X2luZGV4XTsKIAog CQkJCQlpZiAocnRpbmRleCkKLQkJCQkJCSphbGxfbGVhZnBhcnRfcnRpcyA9IGJtc19hZGRfbWVt YmVyKCphbGxfbGVhZnBhcnRfcnRpcywKLQkJCQkJCQkJCQkJCQkJCXJ0aW5kZXgpOworCQkJCQkJ ZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMgPQorCQkJCQkJCWJtc19hZGRfbWVtYmVyKGVzdGF0 ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzLCBydGluZGV4KTsKIAkJCQl9CiAJCQl9CisJCQllbHNlIGlm IChwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzID09IE5JTCkKKwkJCXsKKwkJCQkvKgorCQkJ CSAqIEFsbCBwYXJ0aXRpb25zIGJldHRlciBiZSBwcmVzZW50IGluIGVzX3VucHJ1bmVkX3JlbGlk cyB3aGVuCisJCQkJICogbm9uZSBhcmUgaW5pdGlhbGx5IHBydW5hYmxlLgorCQkJCSAqLworI2lm ZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkJCQlpbnQJCQlwYXJ0X2luZGV4ID0gLTE7CisKKwkJ CQl3aGlsZSAoKHBhcnRfaW5kZXggPSBibXNfbmV4dF9tZW1iZXIocHBydW5lLT5wcmVzZW50X3Bh cnRzLAorCQkJCQkJCQkJCQkJCSBwYXJ0X2luZGV4KSkgPj0gMCkKKwkJCQl7CisJCQkJCUluZGV4 CQlydGluZGV4ID0gcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwW3BhcnRfaW5kZXhdOworCisJCQkJ CWlmIChydGluZGV4KQorCQkJCQkJQXNzZXJ0KGJtc19pc19tZW1iZXIocnRpbmRleCwgZXN0YXRl LT5lc191bnBydW5lZF9yZWxpZHMpKTsKKwkJCQl9CisjZW5kaWYKKwkJCX0KIAogCQkJaisrOwog CQl9CkBAIC0yNDg5LDkgKzI1MjIsMTAgQEAgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0 aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAgKgkJSW5pdGlhbGl6ZSBleGVjIHBydW5pbmcg Y29udGV4dHMgZGVmZXJyZWQgYnkgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZSgpCiAgKgogICog VGhpcyBmdW5jdGlvbiBmaW5hbGl6ZXMgZXhlYyBwcnVuaW5nIHNldHVwIGZvciBhIFBhcnRpdGlv blBydW5lU3RhdGUgYnkKLSAqIGluaXRpYWxpemluZyBjb250ZXh0cyBmb3IgcHJ1bmluZyBzdGVw cyB0aGF0IHJlcXVpcmUgdGhlIHBhcmVudCBwbGFuJ3MKLSAqIFBsYW5TdGF0ZS4gSXQgaXRlcmF0 ZXMgb3ZlciBQYXJ0aXRpb25QcnVuaW5nRGF0YSBlbnRyaWVzIGFuZCBzZXRzIHVwIHRoZQotICog bmVjZXNzYXJ5IGV4ZWN1dGlvbiBjb250ZXh0cyBmb3IgcHJ1bmluZyBkdXJpbmcgcXVlcnkgZXhl Y3V0aW9uLgorICogaW5pdGlhbGl6aW5nIGNvbnRleHRzIGZvciBwcnVuaW5nIHN0ZXBzIHRoYXQg cmVxdWlyZSBQQVJBTV9FWEVDIHBhcmFtZXRlcnMKKyAqIGFuZCB0aGUgcGFyZW50IHBsYW4ncyBQ bGFuU3RhdGUuIEl0IGl0ZXJhdGVzIG92ZXIgUGFydGl0aW9uUHJ1bmluZ0RhdGEKKyAqIGVudHJp ZXMgYW5kIHNldHMgdXAgdGhlIG5lY2Vzc2FyeSBleGVjdXRpb24gY29udGV4dHMgZm9yIHBydW5p bmcgZHVyaW5nCisgKiBxdWVyeSBleGVjdXRpb24uCiAgKgogICogQWxzbyBmaXggdGhlIG1hcHBp bmcgb2YgcGFydGl0aW9uIGluZGV4ZXMgdG8gc3VicGxhbiBpbmRleGVzIGNvbnRhaW5lZCBpbgog ICogcHJ1bmVzdGF0ZSBieSBjb25zaWRlcmluZyB0aGUgbmV3IGxpc3Qgb2Ygc3VicGxhbnMgdGhh dCBzdXJ2aXZlZCBpbml0aWFsCkBAIC0yNTE5LDkgKzI1NTMsMTYgQEAgSW5pdEV4ZWNQYXJ0aXRp b25QcnVuZUNvbnRleHRzKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAJYm9vbAkJ Zml4X3N1YnBsYW5fbWFwID0gZmFsc2U7CiAKIAlBc3NlcnQocHJ1bmVzdGF0ZS0+ZG9fZXhlY19w cnVuZSk7CisJQXNzZXJ0KHBydW5lc3RhdGUtPmVjb250ZXh0KTsKIAlBc3NlcnQocGFyZW50X3Bs YW4gIT0gTlVMTCk7CiAJZXN0YXRlID0gcGFyZW50X3BsYW4tPnN0YXRlOwogCisJLyoKKwkgKiBU aGVzZSBtaWdodCBub3QgYmUgYXZhaWxhYmxlIHdoZW4gRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5l U3RhdGUoKSBpcworCSAqIGNhbGxlZC4KKwkgKi8KKwlwcnVuZXN0YXRlLT5lY29udGV4dC0+ZWN4 dF9wYXJhbV9leGVjX3ZhbHMgPSBlc3RhdGUtPmVzX3BhcmFtX2V4ZWNfdmFsczsKKwogCS8qCiAJ ICogTm8gbmVlZCB0byBmaXggc3VicGxhbnMgbWFwcyBpZiBpbml0aWFsIHBydW5pbmcgZGlkbid0 IGVsaW1pbmF0ZSBhbnkKIAkgKiBzdWJwbGFucy4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uaAppbmRleCA4MjA2M2VjMmExNi4uNGM5NjgwOGMzNzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjUGFydGl0aW9uLmgKQEAgLTEzMCw2ICsxMzAsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25QcnVuZVN0YXRlCiAJUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBhcnRwcnVuZWRhdGFbRkxFWElC TEVfQVJSQVlfTUVNQkVSXTsKIH0gUGFydGl0aW9uUHJ1bmVTdGF0ZTsKIAorZXh0ZXJuIHZvaWQg RXhlY0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGVzKEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiB2 b2lkIEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiBQYXJ0aXRp b25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKFBsYW5TdGF0ZSAqcGxh bnN0YXRlLAogCQkJCQkJCQkJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMsCi0tIAoyLjQ3LjMK Cg== --0000000000008178b5064c9006a7--