Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qRC6A-000rBK-0w for pgsql-hackers@arkaria.postgresql.org; Wed, 02 Aug 2023 13:41:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qRC5A-005KRB-4X for pgsql-hackers@arkaria.postgresql.org; Wed, 02 Aug 2023 13:40:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qRC59-005KR3-IE for pgsql-hackers@lists.postgresql.org; Wed, 02 Aug 2023 13:40:08 +0000 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qRC56-0009JU-70 for pgsql-hackers@postgresql.org; Wed, 02 Aug 2023 13:40:07 +0000 Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-563df158ecaso5051294a12.0 for ; Wed, 02 Aug 2023 06:40:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690983602; x=1691588402; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=GjkAF7T2NN5b1/88ZyvJpUbEDmtPLAI8oCBkc0e8DfU=; b=Bw0Lo622Pi9xSa9VtCQ1Y6QwXjf40TB607z/k3THp369ZearQ0tYbSRLqHQ0Gu7xeV Dbbo6mQ7rwlpGbsna+u5RVP2V1hdityK7KJu33tTsXG8CZqxzlwFrD4vxvrkWLK7Jp4Z onq5vyUq0LronnEBCeSID3kcnpsTqFQXPDeLqvjPHJ0CaGq/0XmC4SxRkKIECPrlSeES TLJ24IkjysfPKgkI+JGfhSEgZ8aekWLbhD7/EmJ/Qs4HLv8c00Vp0cPANXmgF8psm1e1 axopj/51SbMy0udD0fHE6OkxLl8iusfQ3Pnp883HBlzTZq0IiKkz+zs8vpriBlbt5cys 3cLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690983602; x=1691588402; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=GjkAF7T2NN5b1/88ZyvJpUbEDmtPLAI8oCBkc0e8DfU=; b=GS65a/99jGXkMzcrx2Qxg3/PkenYkcZv9sdbnFw8fpfTC9vsTH10TXvrXYy1h4QjAi 4nwlOb4TunZAk8ZYksi0XP6c57m6Aro65MqhWj1dHP3o4ep7shfVhju4QmeGMFsmiupZ fTnWTqryoK3Gtmq8yqX+rXqoRnvUyaahh3ujZpbUcahWR0rzsaIAkdgRgpE2VeOG/H+5 uYQiJ4sT24Hp4v8fvOr0heBeisCTrGTtKk3ndCyMr/qd0ORHxKBQAib+5xRi0tj+xi8C lTy4v2V/jAFJnakre0mz8MdzzlbnfUjMJTuDo+onIHmchUf92c4Y0xzED9LhRkPSWKib V+pQ== X-Gm-Message-State: ABy/qLZw1PntvgHt9VTTi1Qhs3LgWnq382hKKUt//uPWCxcZ3SSqPFf8 aVTMYlaGc4KlOYG6bPGJfZaFaw7zmDuti6bJhew= X-Google-Smtp-Source: APBJJlEouQJbY9fAQCpYcqijvflOZAkchRGpJOMQlyl1SXwcujzDqnCqvRR34lHFl0XGrqo1/LkC+nB5v7xVoidFrxw= X-Received: by 2002:a17:90a:8982:b0:263:d249:9b7 with SMTP id v2-20020a17090a898200b00263d24909b7mr16140835pjn.25.1690983601956; Wed, 02 Aug 2023 06:40:01 -0700 (PDT) MIME-Version: 1.0 References: <20221221101846.7zsi7lscnm5ediik@alvherre.pgsql> <1350682.1671635927@sss.pgh.pa.us> <4191508.1674157166@sss.pgh.pa.us> <349124.1674185509@sss.pgh.pa.us> <20230207180855.xy5m4puwh5gzd7xy@awork3.anarazel.de> <1274885.1680558101@sss.pgh.pa.us> <9D23D8BB-83EE-451E-95C1-CF42ADB76869@yesql.se> In-Reply-To: From: Amit Langote Date: Wed, 2 Aug 2023 22:39:45 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Thom Brown Cc: Daniel Gustafsson , Tom Lane , Alvaro Herrera , Andres Freund , David Rowley , Jacob Champion , PostgreSQL Hackers , Robert Haas Content-Type: multipart/mixed; boundary="000000000000ea8dda0601f0ccd8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ea8dda0601f0ccd8 Content-Type: text/plain; charset="UTF-8" While chatting with Robert about this patch set, he suggested that it would be better to break out some executor refactoring changes from the main patch (0003) into a separate patch. To wit, the changes to make the PlanState tree cleanup in ExecEndPlan() non-recursive by walking a flat list of PlanState nodes instead of the recursive tree walk that ExecEndNode() currently does. That allows us to cleanly handle the cases where the PlanState tree is only partially constructed when ExecInitNode() detects in the middle of its construction that the plan tree is no longer valid after receiving and processing an invalidation message on locking child tables. Or at least more cleanly than the previously proposed approach of adjusting ExecEndNode() subroutines for the individual node types to gracefully handle such partially initialized PlanState trees. With the new approach, node type specific subroutines of ExecEndNode() need not close its child nodes, because ExecEndPlan() would close each node that would have been initialized directly. I couldn't find any instance of breakage by this decoupling of child node cleanup from their parent node's cleanup. Comments in ExecEndGather() and ExecEndGatherMerge() appear to suggest that outerPlan must be closed before the local cleanup: void ExecEndGather(GatherState *node) { - ExecEndNode(outerPlanState(node)); /* let children clean up first */ + /* outerPlan is closed separately. */ ExecShutdownGather(node); ExecFreeExprContext(&node->ps); But I don't think there's a problem, because what ExecShutdownGather() does seems entirely independent of cleanup of outerPlan. As for the performance impact of initializing the list of initialized nodes to use during the cleanup phase, I couldn't find a regression, nor any improvement by replacing the tree walk by linear scan of a list. Actually, ExecEndNode() is pretty far down in the perf profile anyway, so the performance difference caused by the patch hardly matters. See the following contrived example: create table f(); analyze f; explain (costs off) select count(*) from f f1, f f2, f f3, f f4, f f5, f f6, f f7, f f8, f f9, f f10; QUERY PLAN ------------------------------------------------------------------------------ Aggregate -> Nested Loop -> Nested Loop -> Nested Loop -> Nested Loop -> Nested Loop -> Nested Loop -> Nested Loop -> Nested Loop -> Nested Loop -> Seq Scan on f f1 -> Seq Scan on f f2 -> Seq Scan on f f3 -> Seq Scan on f f4 -> Seq Scan on f f5 -> Seq Scan on f f6 -> Seq Scan on f f7 -> Seq Scan on f f8 -> Seq Scan on f f9 -> Seq Scan on f f10 (20 rows) do $$ begin for i in 1..100000 loop perform count(*) from f f1, f f2, f f3, f f4, f f5, f f6, f f7, f f8, f f9, f f10; end loop; end; $$; Times for the DO: Unpatched: Time: 756.353 ms Time: 745.752 ms Time: 749.184 ms Patched: Time: 737.717 ms Time: 747.815 ms Time: 753.456 ms I've attached the new refactoring patch as 0001. Another change I've made in the main patch is to change the API of ExecutorStart() (and ExecutorStart_hook) more explicitly to return a boolean indicating whether or not the plan initialization was successful. That way seems better than making the callers figure that out by seeing that QueryDesc.planstate is NULL and/or checking QueryDesc.plan_valid. Correspondingly, PortalStart() now also returns true or false matching what ExecutorStart() returned. I suppose this better alerts any extensions that use the ExecutorStart_hook to fix their code to do the right thing. Having extracted the ExecEndNode() change, I'm also starting to feel inclined to extract a couple of other bits from the main patch as separate patches, such as moving the ExecutorStart() call from PortalRun() to PortalStart() for the multi-query portals. I'll do that in the next version. --000000000000ea8dda0601f0ccd8 Content-Type: application/octet-stream; name="v43-0002-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Disposition: attachment; filename="v43-0002-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lktry4vi3 RnJvbSA5NDExN2QxMTQ0MzU1YjJhZjcxODU3MDI0NDQzODg1MzE0NmVkYjRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQz IDIvNV0gQWRkIGZpZWxkIHRvIHN0b3JlIHBhcmVudCByZWxpZHMgdG8KIEFwcGVuZC9NZXJnZUFw cGVuZAoKVGhlcmUncyBubyB3YXkgY3VycmVudGx5IGluIHRoZSBleGVjdXRvciB0byB0ZWxsIGlm IHRoZSBjaGlsZApzdWJwbGFucyBvZiBBcHBlbmQvTWVyZ2VBcHBlbmQgYXJlIHNjYW5uaW5nIHBh cnRpdGlvbnMsIGFuZCBpZgp0aGV5IGluZGVlZCBkbywgd2hhdCB0aGUgUlQgaW5kZXhlcyBvZiB0 aGVpciBwYXJlbnQvYW5jZXN0b3IgdGFibGVzCmFyZS4gIEV4ZWN1dG9yIGRvZXNuJ3QgbmVlZCB0 byBzZWUgdGhlaXIgUlQgaW5kZXhlcyBleGNlcHQgZm9yCnJ1bi10aW1lIHBydW5pbmcsIGluIHdo aWNoIGNhc2UgdGhleSBjYW4gY2FuIGJlIGZvdW5kIGluIHRoZQpQYXJ0aXRpb25QcnVuZUluZm8s IGJ1dCBhIGZ1dHVyZSBjb21taXQgd2lsbCBjcmVhdGUgYSBuZWVkIGZvcgp0aGVtIHRvIGJlIGF2 YWlsYWJsZSBhdCBhbGwgdGltZXMgZm9yIHRoZSBwdXJwb3NlIG9mIGxvY2tpbmcKdGhvc2UgcGFy ZW50L2FuY2VzdG9yIHRhYmxlcyB3aGVuIGV4ZWN1dGluZyBhIGNhY2hlZCBwbGFuLgoKVGhlIGNv ZGUgdG8gbG9vayB1cCBwYXJ0aXRpb25lZCBwYXJlbnQgcmVsaWRzIGZvciBhIGdpdmVuIGxpc3Qg b2YKcGFydGl0aW9uIHNjYW4gc3VicGF0aHMgb2YgYW4gQXBwZW5kL01lcmdlQXBwZW5kIGlzIGFs cmVhZHkgcHJlc2VudAppbiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKSBidXQgaXQncyBsb2Nh bCB0byBwYXJ0cHJ1bmUuYy4gIFRoaXMKY29tbWl0IHJlZmFjdG9ycyB0aGF0IGNvZGUgaW50byBp dHMgb3duIGZ1bmN0aW9uIGNhbGxlZAphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcygpIGRl ZmluZWQgaW4gYXBwZW5kaW5mby5jIGFuZApnZW5lcmFsaXplcyBpdCB0byBjb25zaWRlciBjaGls ZCBqb2luIGFuZCBhZ2dyZWdhdGUgcGF0aHMuICBUbwpmYWNpbGl0YXRlIGxvb2tpbmcgdXAgb2Yg cGFyZW50IHJlbHMgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyBpbgphZGRfYXBwZW5kX3N1YnBhdGhf cGFydHJlbGlkcygpLCBwYXJlbnQgbGlua3MgYXJlIG5vdyBhbHNvIHNldCBpbgp0aGUgUmVsT3B0 SW5mb3Mgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyB0b28sIGxpa2UgdGhleSBhcmUgaW4KdGhvc2Ug b2YgY2hpbGQgYmFzZSBhbmQgam9pbiByZWxzLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9DQStIaXdxRkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdA bWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMgfCAgNDEgKysrKysrLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAg ICB8ICAgMyArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgfCAgIDQg Kwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jIHwgMTM0ICsrKysrKysr KysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAg IHwgMTI0ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oICAgICAgICAgICB8ICAxNCArKysKIHNyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZv LmggICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggICAg fCAgIDMgKy0KIDggZmlsZXMgY2hhbmdlZCwgMjAzIGluc2VydGlvbnMoKyksIDEyMyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggYWY0ODEw OTA1OC4uOGFjMWQzOTA5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v Y3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4u YwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2V4dGVuc2libGUuaCIKICNpbmNs dWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNp bmNsdWRlICJvcHRpbWl6ZXIvYXBwZW5kaW5mby5oIgogI2luY2x1ZGUgIm9wdGltaXplci9jbGF1 c2VzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2Nvc3QuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIv b3B0aW1pemVyLmgiCkBAIC0xMjEwLDYgKzEyMTEsNyBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxh bm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCU9pZAkJ ICAgKm5vZGVDb2xsYXRpb25zID0gTlVMTDsKIAlib29sCSAgICpub2RlTnVsbHNGaXJzdCA9IE5V TEw7CiAJYm9vbAkJY29uc2lkZXJfYXN5bmMgPSBmYWxzZTsKKwlMaXN0CSAgICphbGxwYXJ0cmVs aWRzID0gTklMOwogCiAJLyoKIAkgKiBUaGUgc3VicGF0aHMgbGlzdCBjb3VsZCBiZSBlbXB0eSwg aWYgZXZlcnkgY2hpbGQgd2FzIHByb3ZlbiBlbXB0eSBieQpAQCAtMTM1MSwxNSArMTM1MywyMyBA QCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3Rf cGF0aCwgaW50IGZsYWdzKQogCQkJKytuYXN5bmNwbGFuczsKIAkJfQogCisJCS8qCisJCSAqIEZp bmQgcGFydGl0aW9uZWQgcGFyZW50IHJlbChzKSBvZiB0aGUgc3VicGF0aCdzIHJlbChzKS4KKwkJ ICovCisJCWFsbHBhcnRyZWxpZHMgPSBhZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhyb290 LCBzdWJwYXRoLCByZWwsCisJCQkJCQkJCQkJCQkJICBhbGxwYXJ0cmVsaWRzKTsKKwogCQlzdWJw bGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCXBsYW4tPmFsbHBhcnRy ZWxpZHMgPSBhbGxwYXJ0cmVsaWRzOworCiAJLyoKLQkgKiBJZiBhbnkgcXVhbHMgZXhpc3QsIHRo ZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0aW9uCi0JICogcHJ1bmlu ZyBkdXJpbmcgZXhlY3V0aW9uLiAgR2F0aGVyIGluZm9ybWF0aW9uIG5lZWRlZCBieSB0aGUgZXhl Y3V0b3IgdG8KLQkgKiBkbyBwYXJ0aXRpb24gcHJ1bmluZy4KKwkgKiBJZiBzY2FubmluZyBwYXJ0 aXRpb25zLCBjaGVjayBpZiB0aGVyZSBhcmUgcXVhbHMgdGhhdCBtYXkgYmUgdXNlZnVsIHRvCisJ ICogcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBH YXRoZXIgaW5mb3JtYXRpb24KKwkgKiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvIGRvIHBhcnRp dGlvbiBwcnVuaW5nLgogCSAqLwotCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcpCisJaWYg KGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAmJiBhbGxwYXJ0cmVsaWRzICE9IE5JTCkKIAl7CiAJ CUxpc3QJICAgKnBydW5lcXVhbDsKIApAQCAtMTM4MCw3ICsxMzkwLDggQEAgY3JlYXRlX2FwcGVu ZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFn cykKIAkJCXBhcnRwcnVuZWluZm8gPQogCQkJCW1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290 LCByZWwsCiAJCQkJCQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJIHBydW5l cXVhbCk7CisJCQkJCQkJCQkJIHBydW5lcXVhbCwKKwkJCQkJCQkJCQkgYWxscGFydHJlbGlkcyk7 CiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKQEAgLTE0MjYsNiArMTQzNyw3 IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBl bmRQYXRoICpiZXN0X3BhdGgsCiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJUmVsT3B0SW5mbyAq cmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsKIAlQYXJ0aXRpb25QcnVuZUluZm8gKnBhcnRw cnVuZWluZm8gPSBOVUxMOworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHMgPSBOSUw7CiAKIAkvKgog CSAqIFdlIGRvbid0IGhhdmUgdGhlIGFjdHVhbCBjcmVhdGlvbiBvZiB0aGUgTWVyZ2VBcHBlbmQg bm9kZSBzcGxpdCBvdXQKQEAgLTE1MTUsMTUgKzE1MjcsMjMgQEAgY3JlYXRlX21lcmdlX2FwcGVu ZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAkJ CXN1YnBsYW4gPSAoUGxhbiAqKSBzb3J0OwogCQl9CiAKKwkJLyoKKwkJICogRmluZCBwYXJ0aXRp b25lZCBwYXJlbnQgcmVsKHMpIG9mIHRoZSBzdWJwYXRoJ3MgcmVsKHMpLgorCQkgKi8KKwkJYWxs cGFydHJlbGlkcyA9IGFkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKHJvb3QsIHN1YnBhdGgs IHJlbCwKKwkJCQkJCQkJCQkJCQkgIGFsbHBhcnRyZWxpZHMpOworCiAJCXN1YnBsYW5zID0gbGFw cGVuZChzdWJwbGFucywgc3VicGxhbik7CiAJfQogCisJbm9kZS0+YWxscGFydHJlbGlkcyA9IGFs bHBhcnRyZWxpZHM7CisKIAkvKgotCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkgYmUg dXNlZnVsIHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24KLQkgKiBwcnVuaW5nIGR1cmluZyBl eGVjdXRpb24uICBHYXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0bwot CSAqIGRvIHBhcnRpdGlvbiBwcnVuaW5nLgorCSAqIElmIHNjYW5uaW5nIHBhcnRpdGlvbnMsIGNo ZWNrIGlmIHRoZXJlIGFyZSBxdWFscyB0aGF0IG1heSBiZSB1c2VmdWwgdG8KKwkgKiBwZXJmb3Jt IGZ1cnRoZXIgcGFydGl0aW9uIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZv cm1hdGlvbgorCSAqIG5lZWRlZCBieSB0aGUgZXhlY3V0b3IgdG8gZG8gcGFydGl0aW9uIHBydW5p bmcuCiAJICovCi0JaWYgKGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZykKKwlpZiAoZW5hYmxlX3Bh cnRpdGlvbl9wcnVuaW5nICYmIGFsbHBhcnRyZWxpZHMgIT0gTklMKQogCXsKIAkJTGlzdAkgICAq cHJ1bmVxdWFsOwogCkBAIC0xNTM1LDcgKzE1NTUsOCBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3Bs YW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQlpZiAo cHJ1bmVxdWFsICE9IE5JTCkKIAkJCXBhcnRwcnVuZWluZm8gPSBtYWtlX3BhcnRpdGlvbl9wcnVu ZWluZm8ocm9vdCwgcmVsLAogCQkJCQkJCQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJ CQkJCQkJCQkJCSBwcnVuZXF1YWwpOworCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwsCisJCQkJCQkJ CQkJCQkJIGFsbHBhcnRyZWxpZHMpOwogCX0KIAogCW5vZGUtPm1lcmdlcGxhbnMgPSBzdWJwbGFu czsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA0NGVmYjFmNGViLi5mOTdi YzA5MTEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC03ODU1LDggKzc4 NTUsMTEgQEAgY3JlYXRlX3BhcnRpdGlvbndpc2VfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8g KnJvb3QsCiAJCQkJCQkJCQkgICBhZ2dfY29zdHMsIGdkLCAmY2hpbGRfZXh0cmEsCiAJCQkJCQkJ CQkgICAmY2hpbGRfcGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKIAorCQkvKiBNYXJrIGFzIGNoaWxk IG9mIGdyb3VwZWRfcmVsLiAqLworCQljaGlsZF9ncm91cGVkX3JlbC0+cGFyZW50ID0gZ3JvdXBl ZF9yZWw7CiAJCWlmIChjaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpCiAJCXsKKwkJCWNoaWxk X3BhcnRpYWxseV9ncm91cGVkX3JlbC0+cGFyZW50ID0gZ3JvdXBlZF9yZWw7CiAJCQlwYXJ0aWFs bHlfZ3JvdXBlZF9saXZlX2NoaWxkcmVuID0KIAkJCQlsYXBwZW5kKHBhcnRpYWxseV9ncm91cGVk X2xpdmVfY2hpbGRyZW4sCiAJCQkJCQljaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDk3ZmE1NjFlNGUuLjg1NGRkN2M4YWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTE3NjYsNiArMTc2Niw4IEBA IHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlzZXRfZHVtbXlfdGxp c3RfcmVmZXJlbmNlcygoUGxhbiAqKSBhcGxhbiwgcnRvZmZzZXQpOwogCiAJYXBsYW4tPmFwcHJl bGlkcyA9IG9mZnNldF9yZWxpZF9zZXQoYXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOworCWZv cmVhY2gobCwgYXBsYW4tPmFsbHBhcnRyZWxpZHMpCisJCWxmaXJzdChsKSA9IG9mZnNldF9yZWxp ZF9zZXQoKFJlbGlkcykgbGZpcnN0KGwpLCBydG9mZnNldCk7CiAKIAlpZiAoYXBsYW4tPnBhcnRf cHJ1bmVfaW5mbykKIAl7CkBAIC0xODQyLDYgKzE4NDQsOCBAQCBzZXRfbWVyZ2VhcHBlbmRfcmVm ZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlzZXRfZHVtbXlfdGxpc3RfcmVmZXJlbmNlcygo UGxhbiAqKSBtcGxhbiwgcnRvZmZzZXQpOwogCiAJbXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNldF9y ZWxpZF9zZXQobXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOworCWZvcmVhY2gobCwgbXBsYW4t PmFsbHBhcnRyZWxpZHMpCisJCWxmaXJzdChsKSA9IG9mZnNldF9yZWxpZF9zZXQoKFJlbGlkcykg bGZpcnN0KGwpLCBydG9mZnNldCk7CiAKIAlpZiAobXBsYW4tPnBhcnRfcHJ1bmVfaW5mbykKIAl7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKaW5kZXggZjQ1NmIzYjBhNC4u NWJkOGU4MmI5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5k aW5mby5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwpAQCAt NDEsNiArNDEsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX2luaF90cmFuc2xhdGlvbl9saXN0KFJlbGF0 aW9uIG9sZHJlbGF0aW9uLAogCQkJCQkJCQkJICBBcHBlbmRSZWxJbmZvICphcHBpbmZvKTsKIHN0 YXRpYyBOb2RlICphZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJ CQkJCQkJCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19jb250ZXh0ICpjb250ZXh0KTsKK3N0YXRp YyBMaXN0ICphZGRfcGFydF9yZWxpZHMoTGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0ICpw YXJ0cmVsaWRzKTsKIAogCiAvKgpAQCAtMTAzNSwzICsxMDM2LDEzNiBAQCBkaXN0cmlidXRlX3Jv d19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZvICpyb290KQogCQl9CiAJfQogfQorCisvKgorICog YWRkX2FwcGVuZF9zdWJwYXRoX3BhcnRyZWxpZHMKKyAqCQlMb29rIHVwIGEgY2hpbGQgc3VicGF0 aCdzIHJlbCdzIHBhcnRpdGlvbmVkIHBhcmVudCByZWxpZHMgdXAgdG8KKyAqCQlwYXJlbnRyZWwg YW5kIGFkZCB0aGUgYml0bWFwc2V0IGNvbnRhaW5pbmcgdGhvc2UgaW50bworICoJCSdhbGxwYXJ0 cmVsaWRzJworICovCitMaXN0ICoKK2FkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKFBsYW5u ZXJJbmZvICpyb290LCBQYXRoICpzdWJwYXRoLAorCQkJCQkJCSAgUmVsT3B0SW5mbyAqcGFyZW50 cmVsLAorCQkJCQkJCSAgTGlzdCAqYWxscGFydHJlbGlkcykKK3sKKwlSZWxPcHRJbmZvICpwcmVs ID0gc3VicGF0aC0+cGFyZW50OworCVJlbGlkcwkJcGFydHJlbGlkcyA9IE5VTEw7CisKKwkvKiBO b3RoaW5nIHRvIGRvIGlmIHRoZXJlJ3Mgbm8gcGFyZW50IHRvIGJlZ2luIHdpdGguICovCisJaWYg KCFJU19PVEhFUl9SRUwocHJlbCkpCisJCXJldHVybiBhbGxwYXJ0cmVsaWRzOworCisJLyoKKwkg KiBUcmF2ZXJzZSB1cCB0byB0aGUgcGF0aHJlbCdzIHRvcG1vc3QgcGFydGl0aW9uZWQgcGFyZW50 LCBjb2xsZWN0aW5nCisJICogcGFyZW50IHJlbGlkcyBhcyB3ZSBnbzsgYnV0IHN0b3AgaWYgd2Ug cmVhY2ggcGFyZW50cmVsLiAgKE5vcm1hbGx5LCBhCisJICogcGF0aHJlbCdzIHRvcG1vc3QgcGFy dGl0aW9uZWQgcGFyZW50IGlzIGVpdGhlciBwYXJlbnRyZWwgb3IgYSBVTklPTiBBTEwKKwkgKiBh cHBlbmRyZWwgY2hpbGQgb2YgcGFyZW50cmVsLiAgQnV0IHdoZW4gaGFuZGxpbmcgcGFydGl0aW9u d2lzZSBqb2lucyBvZgorCSAqIG11bHRpLWxldmVsIHBhcnRpdGlvbmluZyB0cmVlcywgd2UgY2Fu IHNlZSBhbiBhcHBlbmQgcGF0aCB3aG9zZQorCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlh dGUgcGFydGl0aW9uZWQgdGFibGUuKQorCSAqLworCWRvCisJeworCQlSZWxpZHMJcGFyZW50X3Jl bGlkcyA9IE5VTEw7CisKKwkJLyoKKwkJICogRm9yIHNpbXBsZSBjaGlsZCByZWxzLCB3ZSBjYW4g c2ltcGx5IHNldCB0aGUgcGFyZW50X3JlbGlkcyB0bworCQkgKiBwcmVsLT5wYXJlbnQtPnJlbGlk cy4gIEJ1dCBmb3IgcGFydGl0aW9ud2lzZSBqb2luIGFuZCBhZ2dyZWdhdGUKKwkJICogY2hpbGQg cmVscywgd2hpbGUgd2UgY2FuIHVzZSBwcmVsLT5wYXJlbnQgdG8gbW92ZSB1cCB0aGUgdHJlZSwK KwkJICogcGFyZW50X3JlbGlkcyBtdXN0IGJlIGZvdW5kIHRoZSBoYXJkIHdheSB0aHJvdWdoIEFw cGVuZEluZm9JbmZvcywKKwkJICogYmVjYXVzZSAxKSBhIGpvaW5yZWwncyByZWxpZHMgbWF5IHBv aW50IHRvIFJURV9KT0lOIGVudHJpZXMsCisJCSAqIDIpIHRvcG1vc3QgcGFyZW50IGdyb3VwaW5n IHJlbCdzIHJlbGlkcyBmaWVsZCBpcyBOVUxMLgorCQkgKi8KKwkJaWYgKElTX1NJTVBMRV9SRUwo cHJlbCkpCisJCXsKKwkJCXByZWwgPSBwcmVsLT5wYXJlbnQ7CisJCQkvKiBTdG9wIG9uY2Ugd2Ug cmVhY2ggdGhlIHJvb3QgcGFydGl0aW9uZWQgcmVsLiAqLworCQkJaWYgKCFJU19QQVJUSVRJT05F RF9SRUwocHJlbCkpCisJCQkJYnJlYWs7CisJCQlwYXJlbnRfcmVsaWRzID0gYm1zX2FkZF9tZW1i ZXJzKHBhcmVudF9yZWxpZHMsIHByZWwtPnJlbGlkcyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlB cHBlbmRSZWxJbmZvICoqYXBwaW5mb3M7CisJCQlpbnQJCW5hcHBpbmZvcywKKwkJCQkJaTsKKwor CQkJYXBwaW5mb3MgPSBmaW5kX2FwcGluZm9zX2J5X3JlbGlkcyhyb290LCBwcmVsLT5yZWxpZHMs CisJCQkJCQkJCQkJCSAgICZuYXBwaW5mb3MpOworCQkJZm9yIChpID0gMDsgaSA8IG5hcHBpbmZv czsgaSsrKQorCQkJeworCQkJCUFwcGVuZFJlbEluZm8gKmFwcGluZm8gPSBhcHBpbmZvc1tpXTsK KworCQkJCXBhcmVudF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcihwYXJlbnRfcmVsaWRzLAorCQkJ CQkJCQkJCQkgICBhcHBpbmZvLT5wYXJlbnRfcmVsaWQpOworCQkJfQorCQkJcGZyZWUoYXBwaW5m b3MpOworCQkJcHJlbCA9IHByZWwtPnBhcmVudDsKKwkJfQorCQkvKiBhY2NlcHQgdGhpcyBsZXZl bCBhcyBhbiBpbnRlcmVzdGluZyBwYXJlbnQgKi8KKwkJcGFydHJlbGlkcyA9IGJtc19hZGRfbWVt YmVycyhwYXJ0cmVsaWRzLCBwYXJlbnRfcmVsaWRzKTsKKwkJaWYgKHByZWwgPT0gcGFyZW50cmVs KQorCQkJYnJlYWs7CQkvKiBkb24ndCB0cmF2ZXJzZSBhYm92ZSBwYXJlbnRyZWwgKi8KKwl9IHdo aWxlIChJU19PVEhFUl9SRUwocHJlbCkpOworCisJaWYgKHBhcnRyZWxpZHMgPT0gTlVMTCkKKwkJ cmV0dXJuIGFsbHBhcnRyZWxpZHM7CisKKwlyZXR1cm4gYWRkX3BhcnRfcmVsaWRzKGFsbHBhcnRy ZWxpZHMsIHBhcnRyZWxpZHMpOworfQorCisvKgorICogYWRkX3BhcnRfcmVsaWRzCisgKgkJQWRk IG5ldyBpbmZvIHRvIGEgbGlzdCBvZiBCaXRtYXBzZXRzIG9mIHBhcnRpdGlvbmVkIHJlbGlkcy4K KyAqCisgKiBXaXRoaW4gJ2FsbHBhcnRyZWxpZHMnLCB0aGVyZSBpcyBvbmUgQml0bWFwc2V0IGZv ciBlYWNoIHRvcG1vc3QgcGFyZW50CisgKiBwYXJ0aXRpb25lZCByZWwuICBFYWNoIEJpdG1hcHNl dCBjb250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiB0aGUgdG9wbW9zdAorICogcGFyZW50IGFzIHdl bGwgYXMgaXRzIHJlbGV2YW50IG5vbi1sZWFmIGNoaWxkIHBhcnRpdGlvbnMuICBTaW5jZSAoYnkK KyAqIGNvbnN0cnVjdGlvbiBvZiB0aGUgcmFuZ2V0YWJsZSBsaXN0KSBwYXJlbnQgcGFydGl0aW9u cyBtdXN0IGhhdmUgbG93ZXIKKyAqIFJUIGluZGV4ZXMgdGhhbiB0aGVpciBjaGlsZHJlbiwgd2Ug Y2FuIGRpc3Rpbmd1aXNoIHRoZSB0b3Btb3N0IHBhcmVudAorICogYXMgYmVpbmcgdGhlIGxvd2Vz dCBzZXQgYml0IGluIHRoZSBCaXRtYXBzZXQuCisgKgorICogJ3BhcnRyZWxpZHMnIGNvbnRhaW5z IHRoZSBSVCBpbmRleGVzIG9mIGEgcGFyZW50IHBhcnRpdGlvbmVkIHJlbCwgYW5kCisgKiBwb3Nz aWJseSBzb21lIG5vbi1sZWFmIGNoaWxkcmVuLCB0aGF0IGFyZSBuZXdseSBpZGVudGlmaWVkIGFz IHBhcmVudHMgb2YKKyAqIHNvbWUgc3VicGF0aCByZWwgcGFzc2VkIHRvIG1ha2VfcGFydGl0aW9u X3BydW5laW5mbygpLiAgVGhlc2UgYXJlIGFkZGVkCisgKiB0byBhbiBhcHByb3ByaWF0ZSBtZW1i ZXIgb2YgJ2FsbHBhcnRyZWxpZHMnLgorICoKKyAqIE5vdGUgdGhhdCB0aGUgbGlzdCBjb250YWlu cyBvbmx5IFJUIGluZGV4ZXMgb2YgcGFydGl0aW9uZWQgdGFibGVzIHRoYXQKKyAqIGFyZSBwYXJl bnRzIG9mIHNvbWUgc2Nhbi1sZXZlbCByZWxhdGlvbiBhcHBlYXJpbmcgaW4gdGhlICdzdWJwYXRo cycgdGhhdAorICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKCkgaXMgZGVhbGluZyB3aXRoLiAg QWxzbywgInRvcG1vc3QiIHBhcmVudHMgYXJlCisgKiBub3QgYWxsb3dlZCB0byBiZSBoaWdoZXIg dGhhbiB0aGUgJ3BhcmVudHJlbCcgYXNzb2NpYXRlZCB3aXRoIHRoZSBhcHBlbmQKKyAqIHBhdGgu ICBJbiB0aGlzIHdheSwgd2UgYXZvaWQgZXhwZW5kaW5nIGN5Y2xlcyBvbiBwYXJ0aXRpb25lZCBy ZWxzIHRoYXQKKyAqIGNhbid0IGNvbnRyaWJ1dGUgdXNlZnVsIHBydW5pbmcgaW5mb3JtYXRpb24g Zm9yIHRoZSBwcm9ibGVtIGF0IGhhbmQuCisgKiAoSXQgaXMgcG9zc2libGUgZm9yICdwYXJlbnRy ZWwnIHRvIGJlIGEgY2hpbGQgcGFydGl0aW9uZWQgdGFibGUsIGFuZCBpdAorICogaXMgYWxzbyBw b3NzaWJsZSBmb3Igc2Nhbi1sZXZlbCByZWxhdGlvbnMgdG8gYmUgY2hpbGQgcGFydGl0aW9uZWQg dGFibGVzCisgKiByYXRoZXIgdGhhbiBsZWFmIHBhcnRpdGlvbnMuICBIZW5jZSB3ZSBtdXN0IGNv bnN0cnVjdCB0aGlzIHJlbGF0aW9uIHNldAorICogd2l0aCByZWZlcmVuY2UgdG8gdGhlIHBhcnRp Y3VsYXIgYXBwZW5kIHBhdGggd2UncmUgZGVhbGluZyB3aXRoLCByYXRoZXIKKyAqIHRoYW4gbG9v a2luZyBhdCB0aGUgZnVsbCBwYXJ0aXRpb25pbmcgc3RydWN0dXJlIHJlcHJlc2VudGVkIGluIHRo ZQorICogUmVsT3B0SW5mb3MuKQorICovCitzdGF0aWMgTGlzdCAqCithZGRfcGFydF9yZWxpZHMo TGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0ICpwYXJ0cmVsaWRzKQoreworCUluZGV4CQl0 YXJnZXRwYXJ0OworCUxpc3RDZWxsICAgKmxjOworCisJLyogV2UgY2FuIGVhc2lseSBnZXQgdGhl IGxvd2VzdCBzZXQgYml0IHRoaXMgd2F5OiAqLworCXRhcmdldHBhcnQgPSBibXNfbmV4dF9tZW1i ZXIocGFydHJlbGlkcywgLTEpOworCUFzc2VydCh0YXJnZXRwYXJ0ID4gMCk7CisKKwkvKiBMb29r IGZvciBhIG1hdGNoaW5nIHRvcG1vc3QgcGFyZW50ICovCisJZm9yZWFjaChsYywgYWxscGFydHJl bGlkcykKKwl7CisJCUJpdG1hcHNldCAgKmN1cnJwYXJ0cmVsaWRzID0gKEJpdG1hcHNldCAqKSBs Zmlyc3QobGMpOworCQlJbmRleAkJY3VycnRhcmdldCA9IGJtc19uZXh0X21lbWJlcihjdXJycGFy dHJlbGlkcywgLTEpOworCisJCWlmICh0YXJnZXRwYXJ0ID09IGN1cnJ0YXJnZXQpCisJCXsKKwkJ CS8qIEZvdW5kIGEgbWF0Y2gsIHNvIGFkZCBhbnkgbmV3IFJUIGluZGV4ZXMgdG8gdGhpcyBoaWVy YXJjaHkgKi8KKwkJCWN1cnJwYXJ0cmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGN1cnJwYXJ0cmVs aWRzLCBwYXJ0cmVsaWRzKTsKKwkJCWxmaXJzdChsYykgPSBjdXJycGFydHJlbGlkczsKKwkJCXJl dHVybiBhbGxwYXJ0cmVsaWRzOworCQl9CisJfQorCS8qIE5vIG1hdGNoLCBzbyBhZGQgdGhlIG5l dyBwYXJ0aXRpb24gaGllcmFyY2h5IHRvIHRoZSBsaXN0ICovCisJcmV0dXJuIGxhcHBlbmQoYWxs cGFydHJlbGlkcywgcGFydHJlbGlkcyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5l LmMKaW5kZXggNzE3OWIyMmEwNS4uMjEzNTEyYTVmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0cHJ1bmUuYwpAQCAtMTM4LDcgKzEzOCw2IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lU3RlcFJl c3VsdAogfSBQcnVuZVN0ZXBSZXN1bHQ7CiAKIAotc3RhdGljIExpc3QgKmFkZF9wYXJ0X3JlbGlk cyhMaXN0ICphbGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpOwogc3RhdGljIExp c3QgKm1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LAogCQkJ CQkJCQkJCSAgIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJCQkgICBMaXN0ICpwcnVu ZXF1YWwsCkBAIC0yMTgsMzMgKzIxNywzMiBAQCBzdGF0aWMgdm9pZCBwYXJ0a2V5X2RhdHVtX2Zy b21fZXhwcihQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAgKiBvZiBzY2FuIHBhdGhz IGZvciBpdHMgY2hpbGQgcmVscy4KICAqICdwcnVuZXF1YWwnIGlzIGEgbGlzdCBvZiBwb3RlbnRp YWwgcHJ1bmluZyBxdWFscyAoaS5lLiwgcmVzdHJpY3Rpb24KICAqIGNsYXVzZXMgdGhhdCBhcmUg YXBwbGljYWJsZSB0byB0aGUgYXBwZW5kcmVsKS4KKyAqICdhbGxwYXJ0cmVsaWRzJyBjb250YWlu cyBCaXRtYXBzZXRzIG9mIFJUIGluZGV4ZXMgb2YgcGFydGl0aW9uZWQgcGFyZW50cworICogd2hv c2UgcGFydGl0aW9ucycgUGF0aHMgYXJlIGluICdzdWJwYXRocyc7IHRoZXJlJ3Mgb25lIEJpdG1h cHNldCBmb3IgZXZlcnkKKyAqIHBhcnRpdGlvbiB0cmVlIGludm9sdmVkLgogICovCiBQYXJ0aXRp b25QcnVuZUluZm8gKgogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQkJCQkgTGlzdCAqc3VicGF0aHMsCi0JCQkJCQkg TGlzdCAqcHJ1bmVxdWFsKQorCQkJCQkJIExpc3QgKnBydW5lcXVhbCwKKwkJCQkJCSBMaXN0ICph bGxwYXJ0cmVsaWRzKQogewogCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvOwogCUJpdG1h cHNldCAgKmFsbG1hdGNoZWRzdWJwbGFucyA9IE5VTEw7Ci0JTGlzdAkgICAqYWxscGFydHJlbGlk czsKIAlMaXN0CSAgICpwcnVuZXJlbGluZm9zOwogCWludAkJICAgKnJlbGlkX3N1YnBsYW5fbWFw OwogCUxpc3RDZWxsICAgKmxjOwogCWludAkJCWk7CiAKKwlBc3NlcnQobGlzdF9sZW5ndGgoYWxs cGFydHJlbGlkcykgPiAwKTsKKwogCS8qCi0JICogU2NhbiB0aGUgc3VicGF0aHMgdG8gc2VlIHdo aWNoIG9uZXMgYXJlIHNjYW5zIG9mIHBhcnRpdGlvbiBjaGlsZAotCSAqIHJlbGF0aW9ucywgYW5k IGlkZW50aWZ5IHRoZWlyIHBhcmVudCBwYXJ0aXRpb25lZCByZWxzLiAgKE5vdGU6IHdlIG11c3QK LQkgKiByZXN0cmljdCB0aGUgcGFyZW50IHBhcnRpdGlvbmVkIHJlbHMgdG8gYmUgcGFyZW50cmVs IG9yIGNoaWxkcmVuIG9mCi0JICogcGFyZW50cmVsLCBvdGhlcndpc2Ugd2UgY291bGRuJ3QgdHJh bnNsYXRlIHBydW5lcXVhbCB0byBtYXRjaC4pCi0JICoKLQkgKiBBbHNvIGNvbnN0cnVjdCBhIHRl bXBvcmFyeSBhcnJheSB0byBtYXAgZnJvbSBwYXJ0aXRpb24tY2hpbGQtcmVsYXRpb24KLQkgKiBy ZWxpZCB0byB0aGUgaW5kZXggaW4gJ3N1YnBhdGhzJyBvZiB0aGUgc2NhbiBwbGFuIGZvciB0aGF0 IHBhcnRpdGlvbi4KKwkgKiBDb25zdHJ1Y3QgYSB0ZW1wb3JhcnkgYXJyYXkgdG8gbWFwIGZyb20g cGFydGl0aW9uLWNoaWxkLXJlbGF0aW9uIHJlbGlkCisJICogdG8gdGhlIGluZGV4IGluICdzdWJw YXRocycgb2YgdGhlIHNjYW4gcGxhbiBmb3IgdGhhdCBwYXJ0aXRpb24uCiAJICogKFVzZSBvZiAi c3VicGxhbiIgcmF0aGVyIHRoYW4gInN1YnBhdGgiIGlzIGEgYml0IG9mIGEgbWlzbm9tZXIsIGJ1 dAogCSAqIHdlJ2xsIGxldCBpdCBzdGFuZC4pICBGb3IgY29udmVuaWVuY2UsIHdlIHVzZSAxLWJh c2VkIGluZGV4ZXMgaGVyZSwgc28KIAkgKiB0aGF0IHplcm8gY2FuIHJlcHJlc2VudCBhbiB1bi1m aWxsZWQgYXJyYXkgZW50cnkuCiAJICovCi0JYWxscGFydHJlbGlkcyA9IE5JTDsKIAlyZWxpZF9z dWJwbGFuX21hcCA9IHBhbGxvYzAoc2l6ZW9mKGludCkgKiByb290LT5zaW1wbGVfcmVsX2FycmF5 X3NpemUpOwogCiAJaSA9IDE7CkBAIC0yNTMsNTAgKzI1MSw5IEBAIG1ha2VfcGFydGl0aW9uX3By dW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlQYXRo CSAgICpwYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKIAkJUmVsT3B0SW5mbyAqcGF0aHJlbCA9 IHBhdGgtPnBhcmVudDsKIAotCQkvKiBXZSBkb24ndCBjb25zaWRlciBwYXJ0aXRpb25lZCBqb2lu cyBoZXJlICovCi0JCWlmIChwYXRocmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1C RVJfUkVMKQotCQl7Ci0JCQlSZWxPcHRJbmZvICpwcmVsID0gcGF0aHJlbDsKLQkJCUJpdG1hcHNl dCAgKnBhcnRyZWxpZHMgPSBOVUxMOwotCi0JCQkvKgotCQkJICogVHJhdmVyc2UgdXAgdG8gdGhl IHBhdGhyZWwncyB0b3Btb3N0IHBhcnRpdGlvbmVkIHBhcmVudCwKLQkJCSAqIGNvbGxlY3Rpbmcg cGFyZW50IHJlbGlkcyBhcyB3ZSBnbzsgYnV0IHN0b3AgaWYgd2UgcmVhY2gKLQkJCSAqIHBhcmVu dHJlbC4gIChOb3JtYWxseSwgYSBwYXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQK LQkJCSAqIGlzIGVpdGhlciBwYXJlbnRyZWwgb3IgYSBVTklPTiBBTEwgYXBwZW5kcmVsIGNoaWxk IG9mCi0JCQkgKiBwYXJlbnRyZWwuICBCdXQgd2hlbiBoYW5kbGluZyBwYXJ0aXRpb253aXNlIGpv aW5zIG9mCi0JCQkgKiBtdWx0aS1sZXZlbCBwYXJ0aXRpb25pbmcgdHJlZXMsIHdlIGNhbiBzZWUg YW4gYXBwZW5kIHBhdGggd2hvc2UKLQkJCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlhdGUg cGFydGl0aW9uZWQgdGFibGUuKQotCQkJICovCi0JCQlkbwotCQkJewotCQkJCUFwcGVuZFJlbElu Zm8gKmFwcGluZm87Ci0KLQkJCQlBc3NlcnQocHJlbC0+cmVsaWQgPCByb290LT5zaW1wbGVfcmVs X2FycmF5X3NpemUpOwotCQkJCWFwcGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3ByZWwt PnJlbGlkXTsKLQkJCQlwcmVsID0gZmluZF9iYXNlX3JlbChyb290LCBhcHBpbmZvLT5wYXJlbnRf cmVsaWQpOwotCQkJCWlmICghSVNfUEFSVElUSU9ORURfUkVMKHByZWwpKQotCQkJCQlicmVhazsJ CS8qIHJlYWNoZWQgYSBub24tcGFydGl0aW9uZWQgcGFyZW50ICovCi0JCQkJLyogYWNjZXB0IHRo aXMgbGV2ZWwgYXMgYW4gaW50ZXJlc3RpbmcgcGFyZW50ICovCi0JCQkJcGFydHJlbGlkcyA9IGJt c19hZGRfbWVtYmVyKHBhcnRyZWxpZHMsIHByZWwtPnJlbGlkKTsKLQkJCQlpZiAocHJlbCA9PSBw YXJlbnRyZWwpCi0JCQkJCWJyZWFrOwkJLyogZG9uJ3QgdHJhdmVyc2UgYWJvdmUgcGFyZW50cmVs ICovCi0JCQl9IHdoaWxlIChwcmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1CRVJf UkVMKTsKLQotCQkJaWYgKHBhcnRyZWxpZHMpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBGb3VuZCBz b21lIHJlbGV2YW50IHBhcmVudCBwYXJ0aXRpb25zLCB3aGljaCBtYXkgb3IgbWF5IG5vdAotCQkJ CSAqIG92ZXJsYXAgd2l0aCBwYXJ0aXRpb24gdHJlZXMgd2UgYWxyZWFkeSBmb3VuZC4gIEFkZCBu ZXcKLQkJCQkgKiBpbmZvcm1hdGlvbiB0byB0aGUgYWxscGFydHJlbGlkcyBsaXN0LgotCQkJCSAq LwotCQkJCWFsbHBhcnRyZWxpZHMgPSBhZGRfcGFydF9yZWxpZHMoYWxscGFydHJlbGlkcywgcGFy dHJlbGlkcyk7Ci0JCQkJLyogQWxzbyByZWNvcmQgdGhlIHN1YnBsYW4gaW4gcmVsaWRfc3VicGxh bl9tYXBbXSAqLwotCQkJCS8qIE5vIGR1cGxpY2F0ZXMgcGxlYXNlICovCi0JCQkJQXNzZXJ0KHJl bGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwtPnJlbGlkXSA9PSAwKTsKLQkJCQlyZWxpZF9zdWJwbGFu X21hcFtwYXRocmVsLT5yZWxpZF0gPSBpOwotCQkJfQotCQl9CisJCS8qIE5vIGR1cGxpY2F0ZXMg cGxlYXNlICovCisJCUFzc2VydChyZWxpZF9zdWJwbGFuX21hcFtwYXRocmVsLT5yZWxpZF0gPT0g MCk7CisJCXJlbGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwtPnJlbGlkXSA9IGk7CiAJCWkrKzsKIAl9 CiAKQEAgLTM2Miw2MyArMzE5LDYgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJcmV0dXJuIHBydW5laW5mbzsKIH0K IAotLyoKLSAqIGFkZF9wYXJ0X3JlbGlkcwotICoJCUFkZCBuZXcgaW5mbyB0byBhIGxpc3Qgb2Yg Qml0bWFwc2V0cyBvZiBwYXJ0aXRpb25lZCByZWxpZHMuCi0gKgotICogV2l0aGluICdhbGxwYXJ0 cmVsaWRzJywgdGhlcmUgaXMgb25lIEJpdG1hcHNldCBmb3IgZWFjaCB0b3Btb3N0IHBhcmVudAot ICogcGFydGl0aW9uZWQgcmVsLiAgRWFjaCBCaXRtYXBzZXQgY29udGFpbnMgdGhlIFJUIGluZGV4 ZXMgb2YgdGhlIHRvcG1vc3QKLSAqIHBhcmVudCBhcyB3ZWxsIGFzIGl0cyByZWxldmFudCBub24t bGVhZiBjaGlsZCBwYXJ0aXRpb25zLiAgU2luY2UgKGJ5Ci0gKiBjb25zdHJ1Y3Rpb24gb2YgdGhl IHJhbmdldGFibGUgbGlzdCkgcGFyZW50IHBhcnRpdGlvbnMgbXVzdCBoYXZlIGxvd2VyCi0gKiBS VCBpbmRleGVzIHRoYW4gdGhlaXIgY2hpbGRyZW4sIHdlIGNhbiBkaXN0aW5ndWlzaCB0aGUgdG9w bW9zdCBwYXJlbnQKLSAqIGFzIGJlaW5nIHRoZSBsb3dlc3Qgc2V0IGJpdCBpbiB0aGUgQml0bWFw c2V0LgotICoKLSAqICdwYXJ0cmVsaWRzJyBjb250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiBhIHBh cmVudCBwYXJ0aXRpb25lZCByZWwsIGFuZAotICogcG9zc2libHkgc29tZSBub24tbGVhZiBjaGls ZHJlbiwgdGhhdCBhcmUgbmV3bHkgaWRlbnRpZmllZCBhcyBwYXJlbnRzIG9mCi0gKiBzb21lIHN1 YnBhdGggcmVsIHBhc3NlZCB0byBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKS4gIFRoZXNlIGFy ZSBhZGRlZAotICogdG8gYW4gYXBwcm9wcmlhdGUgbWVtYmVyIG9mICdhbGxwYXJ0cmVsaWRzJy4K LSAqCi0gKiBOb3RlIHRoYXQgdGhlIGxpc3QgY29udGFpbnMgb25seSBSVCBpbmRleGVzIG9mIHBh cnRpdGlvbmVkIHRhYmxlcyB0aGF0Ci0gKiBhcmUgcGFyZW50cyBvZiBzb21lIHNjYW4tbGV2ZWwg cmVsYXRpb24gYXBwZWFyaW5nIGluIHRoZSAnc3VicGF0aHMnIHRoYXQKLSAqIG1ha2VfcGFydGl0 aW9uX3BydW5laW5mbygpIGlzIGRlYWxpbmcgd2l0aC4gIEFsc28sICJ0b3Btb3N0IiBwYXJlbnRz IGFyZQotICogbm90IGFsbG93ZWQgdG8gYmUgaGlnaGVyIHRoYW4gdGhlICdwYXJlbnRyZWwnIGFz c29jaWF0ZWQgd2l0aCB0aGUgYXBwZW5kCi0gKiBwYXRoLiAgSW4gdGhpcyB3YXksIHdlIGF2b2lk IGV4cGVuZGluZyBjeWNsZXMgb24gcGFydGl0aW9uZWQgcmVscyB0aGF0Ci0gKiBjYW4ndCBjb250 cmlidXRlIHVzZWZ1bCBwcnVuaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgcHJvYmxlbSBhdCBoYW5k LgotICogKEl0IGlzIHBvc3NpYmxlIGZvciAncGFyZW50cmVsJyB0byBiZSBhIGNoaWxkIHBhcnRp dGlvbmVkIHRhYmxlLCBhbmQgaXQKLSAqIGlzIGFsc28gcG9zc2libGUgZm9yIHNjYW4tbGV2ZWwg cmVsYXRpb25zIHRvIGJlIGNoaWxkIHBhcnRpdGlvbmVkIHRhYmxlcwotICogcmF0aGVyIHRoYW4g bGVhZiBwYXJ0aXRpb25zLiAgSGVuY2Ugd2UgbXVzdCBjb25zdHJ1Y3QgdGhpcyByZWxhdGlvbiBz ZXQKLSAqIHdpdGggcmVmZXJlbmNlIHRvIHRoZSBwYXJ0aWN1bGFyIGFwcGVuZCBwYXRoIHdlJ3Jl IGRlYWxpbmcgd2l0aCwgcmF0aGVyCi0gKiB0aGFuIGxvb2tpbmcgYXQgdGhlIGZ1bGwgcGFydGl0 aW9uaW5nIHN0cnVjdHVyZSByZXByZXNlbnRlZCBpbiB0aGUKLSAqIFJlbE9wdEluZm9zLikKLSAq Lwotc3RhdGljIExpc3QgKgotYWRkX3BhcnRfcmVsaWRzKExpc3QgKmFsbHBhcnRyZWxpZHMsIEJp dG1hcHNldCAqcGFydHJlbGlkcykKLXsKLQlJbmRleAkJdGFyZ2V0cGFydDsKLQlMaXN0Q2VsbCAg ICpsYzsKLQotCS8qIFdlIGNhbiBlYXNpbHkgZ2V0IHRoZSBsb3dlc3Qgc2V0IGJpdCB0aGlzIHdh eTogKi8KLQl0YXJnZXRwYXJ0ID0gYm1zX25leHRfbWVtYmVyKHBhcnRyZWxpZHMsIC0xKTsKLQlB c3NlcnQodGFyZ2V0cGFydCA+IDApOwotCi0JLyogTG9vayBmb3IgYSBtYXRjaGluZyB0b3Btb3N0 IHBhcmVudCAqLwotCWZvcmVhY2gobGMsIGFsbHBhcnRyZWxpZHMpCi0JewotCQlCaXRtYXBzZXQg ICpjdXJycGFydHJlbGlkcyA9IChCaXRtYXBzZXQgKikgbGZpcnN0KGxjKTsKLQkJSW5kZXgJCWN1 cnJ0YXJnZXQgPSBibXNfbmV4dF9tZW1iZXIoY3VycnBhcnRyZWxpZHMsIC0xKTsKLQotCQlpZiAo dGFyZ2V0cGFydCA9PSBjdXJydGFyZ2V0KQotCQl7Ci0JCQkvKiBGb3VuZCBhIG1hdGNoLCBzbyBh ZGQgYW55IG5ldyBSVCBpbmRleGVzIHRvIHRoaXMgaGllcmFyY2h5ICovCi0JCQljdXJycGFydHJl bGlkcyA9IGJtc19hZGRfbWVtYmVycyhjdXJycGFydHJlbGlkcywgcGFydHJlbGlkcyk7Ci0JCQls Zmlyc3QobGMpID0gY3VycnBhcnRyZWxpZHM7Ci0JCQlyZXR1cm4gYWxscGFydHJlbGlkczsKLQkJ fQotCX0KLQkvKiBObyBtYXRjaCwgc28gYWRkIHRoZSBuZXcgcGFydGl0aW9uIGhpZXJhcmNoeSB0 byB0aGUgbGlzdCAqLwotCXJldHVybiBsYXBwZW5kKGFsbHBhcnRyZWxpZHMsIHBhcnRyZWxpZHMp OwotfQotCiAvKgogICogbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8KICAqCQlCdWlsZCBh IExpc3Qgb2YgUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zLCBvbmUgZm9yIGVhY2ggaW50ZXJlc3Rp bmcKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggMWI3ODdmZTAzMS4uN2E1ZjNiYTYyNSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGxhbm5vZGVzLmgKQEAgLTI2Nyw2ICsyNjcsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5k CiAJTGlzdAkgICAqYXBwZW5kcGxhbnM7CiAJaW50CQkJbmFzeW5jcGxhbnM7CS8qICMgb2YgYXN5 bmNocm9ub3VzIHBsYW5zICovCiAKKwkvKgorCSAqIFJUSXMgb2YgYWxsIHBhcnRpdGlvbmVkIHRh YmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieQorCSAqIGFwcGVuZHBsYW5zLiBUaGUg bGlzdCBjb250YWlucyBhIGJpdG1hcHNldCBmb3IgZXZlcnkgcGFydGl0aW9uIHRyZWUKKwkgKiBj b3ZlcmVkIGJ5IHRoaXMgQXBwZW5kLgorCSAqLworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHM7CisK IAkvKgogCSAqIEFsbCAnYXBwZW5kcGxhbnMnIHByZWNlZGluZyB0aGlzIGluZGV4IGFyZSBub24t cGFydGlhbCBwbGFucy4gQWxsCiAJICogJ2FwcGVuZHBsYW5zJyBmcm9tIHRoaXMgaW5kZXggb253 YXJkcyBhcmUgcGFydGlhbCBwbGFucy4KQEAgLTI5MSw2ICsyOTgsMTMgQEAgdHlwZWRlZiBzdHJ1 Y3QgTWVyZ2VBcHBlbmQKIAogCUxpc3QJICAgKm1lcmdlcGxhbnM7CiAKKwkvKgorCSAqIFJUSXMg b2YgYWxsIHBhcnRpdGlvbmVkIHRhYmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieQor CSAqIG1lcmdlcGxhbnMuIFRoZSBsaXN0IGNvbnRhaW5zIGEgYml0bWFwc2V0IGZvciBldmVyeSBw YXJ0aXRpb24gdHJlZQorCSAqIGNvdmVyZWQgYnkgdGhpcyBNZXJnZUFwcGVuZC4KKwkgKi8KKwlM aXN0CSAgICphbGxwYXJ0cmVsaWRzOworCiAJLyogdGhlc2UgZmllbGRzIGFyZSBqdXN0IGxpa2Ug dGhlIHNvcnQta2V5IGluZm8gaW4gc3RydWN0IFNvcnQ6ICovCiAKIAkvKiBudW1iZXIgb2Ygc29y dC1rZXkgY29sdW1ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVu ZGluZm8uaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZvLmgKaW5kZXggYTA1Zjkx Zjc3ZC4uMTYyMWE3MzE5YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVu ZGluZm8uaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oCkBAIC00Niw1 ICs0Niw4IEBAIGV4dGVybiB2b2lkIGFkZF9yb3dfaWRlbnRpdHlfY29sdW1ucyhQbGFubmVySW5m byAqcm9vdCwgSW5kZXggcnRpbmRleCwKIAkJCQkJCQkJCSBSYW5nZVRibEVudHJ5ICp0YXJnZXRf cnRlLAogCQkJCQkJCQkJIFJlbGF0aW9uIHRhcmdldF9yZWxhdGlvbik7CiBleHRlcm4gdm9pZCBk aXN0cmlidXRlX3Jvd19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZvICpyb290KTsKK2V4dGVybiBM aXN0ICphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhQbGFubmVySW5mbyAqcm9vdCwgUGF0 aCAqc3VicGF0aCwKKwkJCQkJCQkgIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKKwkJCQkJCQkgIExp c3QgKmFsbHBhcnRyZWxpZHMpOwogCiAjZW5kaWYJCQkJCQkJLyogQVBQRU5ESU5GT19IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggYi9zcmMvaW5j bHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKaW5kZXggODYzNmUwNGUzNy4uY2FhNzc0YTEx MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCisrKyBi L3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaApAQCAtNzMsNyArNzMsOCBAQCB0 eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUNvbnRleHQKIGV4dGVybiBQYXJ0aXRpb25QcnVu ZUluZm8gKm1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3Qs CiAJCQkJCQkJCQkJCQkJc3RydWN0IFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJCQkJ CQlMaXN0ICpzdWJwYXRocywKLQkJCQkJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOworCQkJCQkJ CQkJCQkJCUxpc3QgKnBydW5lcXVhbCwKKwkJCQkJCQkJCQkJCQlMaXN0ICphbGxwYXJ0cmVsaWRz KTsKIGV4dGVybiBCaXRtYXBzZXQgKnBydW5lX2FwcGVuZF9yZWxfcGFydGl0aW9ucyhzdHJ1Y3Qg UmVsT3B0SW5mbyAqcmVsKTsKIGV4dGVybiBCaXRtYXBzZXQgKmdldF9tYXRjaGluZ19wYXJ0aXRp b25zKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIExpc3QgKnBy dW5pbmdfc3RlcHMpOwotLSAKMi4zNS4zCgo= --000000000000ea8dda0601f0ccd8 Content-Type: application/octet-stream; name="v43-0001-Make-PlanState-tree-cleanup-non-recursive.patch" Content-Disposition: attachment; filename="v43-0001-Make-PlanState-tree-cleanup-non-recursive.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lktry4vj4 RnJvbSBhNTViZDM2MzY5MGJjNGMyODA0N2U0Yjg3NGNlODAzODRlMzdjNDlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMSBBdWcgMjAyMyAxMTozNjoyNCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQz IDEvNV0gTWFrZSBQbGFuU3RhdGUgdHJlZSBjbGVhbnVwIG5vbi1yZWN1cnNpdmUKCldpdGggdGhp cyBjaGFuZ2UsIG5vZGUgdHlwZSBzcGVjaWZpYyBzdWJyb3V0aW5lcyBvZiBFeGVjRW5kTm9kZSgp CmFyZSBubyBsb25nZXIgcmVxdWlyZWQgdG8gYWxzbyBjbGVhbiB1cCB0aGUgY2hpbGQgbm9kZXMg b2YgYSBnaXZlbgpub2RlLCBvbmx5IGl0cyBvd24gc3R1ZmYuICBJbnN0ZWFkLCBFeGVjRW5kUGxh bigpIGNhbGxzCkV4ZWNJbml0Tm9kZSgpIGRpcmVjdGx5IGZvciBlYWNoIG5vZGUgaW4gdGhlIFBs YW5TdGF0ZSB0cmVlIGJ5Cml0ZXJhdGluZyBvdmVyIGEgbGlzdCAoRVN0YXRlLmVzX3BsYW5zdGF0 ZV9ub2Rlcykgb2YgYWxsIHRob3NlIG5vZGVzCmJ1aWx0IGR1cmluZyB0aGUgRXhlY0luaXROb2Rl KCkgdHJhdmVyc2FsIG9mIHRoZSB0cmVlLgoKVGhpcyBjaGFuZ2VzIHRoZSBvcmRlciBpbiB3aGlj aCB0aGUgbm9kZXMgZ2V0IGNsZWFuZWQgdXAsIGJlY2F1c2UKdGhleSBhcmUgbm93IGNsZWFuZWQg dXAgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlIGFkZGVkIGludG8KdGhlIGxpc3Qgd2hp Y2ggaXMgZnJvbSBsZWFmLWxldmVsIHVwIHRvIHRoZSByb290LCB3aGVyZWFzIHdpdGggdGhlCmN1 cnJlbnQgcmVjdXJzaXZlIGFwcHJvYWNoIGNsZWFudXAgb2NjdXJzIGZyb20gdGhlIHJvb3QgdG8g dGhlCmxlYXZlcy4gIFRoZSBjaGFuZ2Ugc2VlbXMgaGFybWxlc3MgdGhvdWdoLCBiZWNhdXNlIHRo ZXJlIGlzbid0Cm5lY2Vzc2FyaWx5IGFueSBjb3VwbGluZyBiZXR3ZWVuIG9mIHRoZSBjbGVhbnVw IGFjdGlvbnMgb2YgcGFyZW50CmFuZCBjaGlsZCBub2Rlcy4KClRoZSBtYWluIG1vdGl2YXRpb24g YmVoaW5kIHRoaXMgY2hhbmdlIGlzIHRvIGFsbG93IHRoZSBjYXNlcyBpbgp0aGUgZnV0dXJlIHdo ZXJlIEV4ZWNJbml0Tm9kZSgpIHRyYXZlcnNhbCBvZiB0aGUgcGxhbiB0cmVlIG1heQpiZSBhYm9y dGVkIGluIHRoZSBtaWRkbGUgcmVzdWx0aW5nIGluIGEgcGFydGlhbGx5IGluaXRpYWxpemVkClBs YW5TdGF0ZSB0cmVlLiAgRGVhbGluZyB3aXRoIHRoYXQgY2FzZSBieSBtYWtpbmcgdGhlIGNsZWFu dXAKcGhhc2Ugd2FsayBvdmVyIGEgbGlzdCBvZiBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQgbm9k ZXMgc2VlbXMKYmV0dGVyIC8gbW9yZSByb2J1c3QgdGhhbiBtYWtpbmcgdGhlIGluZGl2aWR1YWwg RXhlY0VuZE5vZGUoKQpzdWJyb3V0aW5lcyBkZWFsIHdpdGggcGFydGlhbGx5IHZhbGlkIFBsYW5T dGF0ZSBub2Rlcy4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgICAgICAgICAgICAg ICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgIHwg MzYgKysrKysrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jICAg ICAgICB8IDU2ICsrKysrKysrKystLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jICAgICAgICAgICB8ICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cu YyAgICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMg ICAgICAgICAgfCAyMCArLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFu ZC5jICAgICAgIHwgMjMgKy0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw SGVhcHNjYW4uYyAgfCAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMg ICAgICAgIHwgMjMgKy0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNj YW4uYyAgICAgfCAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jICAgICAg ICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jICAgICB8 ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYyAgICAgICAgICAgfCAgNSAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYyAgICAgICAgICAgIHwgIDggKy0tLQog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMgICAgICAgIHwgIDYgKy0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMgfCAgNSArLQogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVMb2NrUm93cy5jICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTWF0ZXJpYWwuYyAgICAgICAgfCAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1lbW9pemUuYyAgICAgICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJn ZUFwcGVuZC5jICAgICB8IDIwICstLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVy Z2Vqb2luLmMgICAgICAgfCAgNiArLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jICAgICB8ICA3ICstLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMg ICAgICAgIHwgIDYgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jICAg ICAgfCAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgIHwg IDYgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMgICAgICAgICAgfCAgNSAr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgICAgICAgICAgIHwgIDIgKy0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMgICAgICAgICAgICB8ICA1ICstCiBzcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgICAgfCAgNSArLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVXaW5kb3dBZ2cuYyAgICAgICB8ICA0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaCAgICAgICAgICAgICAgfCAgMiArCiAzMyBmaWxlcyBjaGFuZ2VkLCA4MCBpbnNlcnRp b25zKCspLCAyMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvUkVBRE1FIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCmluZGV4IDE3Nzc1YTQ5ZTIu LjY3YTVjMTc2OWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQorKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKQEAgLTMxMCwxMyArMzEwLDEzIEBAIFRoaXMg aXMgYSBza2V0Y2ggb2YgY29udHJvbCBmbG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAJ CUFmdGVyVHJpZ2dlckVuZFF1ZXJ5CiAKIAlFeGVjdXRvckVuZAotCQlFeGVjRW5kTm9kZSAtLS0g cmVjdXJzaXZlbHkgcmVsZWFzZXMgcmVzb3VyY2VzCisJCUV4ZWNFbmRQbGFuIC0tLSByZWxlYXNl cyBwbGFuIHJlc291cmNlcwogCQlGcmVlRXhlY3V0b3JTdGF0ZQogCQkJZnJlZXMgcGVyLXF1ZXJ5 IGNvbnRleHQgYW5kIGNoaWxkIGNvbnRleHRzCiAKIAlGcmVlUXVlcnlEZXNjCiAKLVBlciBhYm92 ZSBjb21tZW50cywgaXQncyBub3QgcmVhbGx5IGNyaXRpY2FsIGZvciBFeGVjRW5kTm9kZSB0byBm cmVlIGFueQorUGVyIGFib3ZlIGNvbW1lbnRzLCBpdCdzIG5vdCByZWFsbHkgY3JpdGljYWwgZm9y IEV4ZWNFbmRQbGFuIHRvIGZyZWUgYW55CiBtZW1vcnk7IGl0J2xsIGFsbCBnbyBhd2F5IGluIEZy ZWVFeGVjdXRvclN0YXRlIGFueXdheS4gIEhvd2V2ZXIsIHdlIGRvIG5lZWQgdG8KIGJlIGNhcmVm dWwgdG8gY2xvc2UgcmVsYXRpb25zLCBkcm9wIGJ1ZmZlciBwaW5zLCBldGMsIHNvIHdlIGRvIG5l ZWQgdG8gc2NhbgogdGhlIHBsYW4gc3RhdGUgdHJlZSB0byBmaW5kIHRoZXNlIHNvcnRzIG9mIHJl c291cmNlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDRjNWE3YmJmNjIuLjIzNWJiNTJj Y2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtODIsNyArODIsNyBAQCBFeGVjdXRvckNo ZWNrUGVybXNfaG9va190eXBlIEV4ZWN1dG9yQ2hlY2tQZXJtc19ob29rID0gTlVMTDsKIHN0YXRp YyB2b2lkIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIHN0YXRp YyB2b2lkIENoZWNrVmFsaWRSb3dNYXJrUmVsKFJlbGF0aW9uIHJlbCwgUm93TWFya1R5cGUgbWFy a1R5cGUpOwogc3RhdGljIHZvaWQgRXhlY1Bvc3Rwcm9jZXNzUGxhbihFU3RhdGUgKmVzdGF0ZSk7 Ci1zdGF0aWMgdm9pZCBFeGVjRW5kUGxhbihQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgRVN0YXRlICpl c3RhdGUpOworc3RhdGljIHZvaWQgRXhlY0VuZFBsYW4oRVN0YXRlICplc3RhdGUpOwogc3RhdGlj IHZvaWQgRXhlY3V0ZVBsYW4oRVN0YXRlICplc3RhdGUsIFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAog CQkJCQkJYm9vbCB1c2VfcGFyYWxsZWxfbW9kZSwKIAkJCQkJCUNtZFR5cGUgb3BlcmF0aW9uLApA QCAtNTAwLDcgKzUwMCw3IEBAIHN0YW5kYXJkX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjKQogCSAqLwogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRlLT5l c19xdWVyeV9jeHQpOwogCi0JRXhlY0VuZFBsYW4ocXVlcnlEZXNjLT5wbGFuc3RhdGUsIGVzdGF0 ZSk7CisJRXhlY0VuZFBsYW4oZXN0YXRlKTsKIAogCS8qIGRvIGF3YXkgd2l0aCBvdXIgc25hcHNo b3RzICovCiAJVW5yZWdpc3RlclNuYXBzaG90KGVzdGF0ZS0+ZXNfc25hcHNob3QpOwpAQCAtMTQ5 OSwyMyArMTQ5OSwyMSBAQCBFeGVjUG9zdHByb2Nlc3NQbGFuKEVTdGF0ZSAqZXN0YXRlKQogICog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICovCiBzdGF0aWMgdm9pZAotRXhlY0VuZFBsYW4oUGxhblN0YXRlICpwbGFuc3Rh dGUsIEVTdGF0ZSAqZXN0YXRlKQorRXhlY0VuZFBsYW4oRVN0YXRlICplc3RhdGUpCiB7CiAJTGlz dENlbGwgICAqbDsKIAogCS8qCi0JICogc2h1dCBkb3duIHRoZSBub2RlLXR5cGUtc3BlY2lmaWMg cXVlcnkgcHJvY2Vzc2luZworCSAqIFNodXQgZG93biB0aGUgbm9kZS10eXBlLXNwZWNpZmljIHF1 ZXJ5IHByb2Nlc3NpbmcgZm9yIGFsbCBub2RlcyB0aGF0CisJICogd2VyZSBpbml0aWFsaXplZCBp biBJbml0UGxhbigpLiAgVGhhdCBpbmNsdWRlcyB0aGUgbm9kZXMgaW4gYm90aCB0aGUKKwkgKiBt YWluIHBsYW4gdHJlZSAoZXNfcGxhbm5lZHN0bXQtPnBsYW5UcmVlKSBhbmQgdGhvc2UgaW4gc3Vi cGxhbnMKKwkgKiAoZXNfcGxhbm5lZHN0bXQtPnN1YnBsYW5zKS4KIAkgKi8KLQlFeGVjRW5kTm9k ZShwbGFuc3RhdGUpOwotCi0JLyoKLQkgKiBmb3Igc3VicGxhbnMgdG9vCi0JICovCi0JZm9yZWFj aChsLCBlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMpCisJZm9yZWFjaChsLCBlc3RhdGUtPmVzX3Bs YW5zdGF0ZV9ub2RlcykKIAl7Ci0JCVBsYW5TdGF0ZSAgKnN1YnBsYW5zdGF0ZSA9IChQbGFuU3Rh dGUgKikgbGZpcnN0KGwpOworCQlQbGFuU3RhdGUgICpwc3RhdGUgPSAoUGxhblN0YXRlICopIGxm aXJzdChsKTsKIAotCQlFeGVjRW5kTm9kZShzdWJwbGFuc3RhdGUpOworCQlFeGVjRW5kTm9kZShw c3RhdGUpOwogCX0KIAogCS8qCkBAIC0zMDMwLDEzICszMDI4LDE3IEBAIEV2YWxQbGFuUXVhbEVu ZChFUFFTdGF0ZSAqZXBxc3RhdGUpCiAKIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKIAotCUV4ZWNFbmROb2RlKGVwcXN0YXRlLT5yZWNo ZWNrcGxhbnN0YXRlKTsKLQotCWZvcmVhY2gobCwgZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzKQor CS8qCisJICogU2h1dCBkb3duIHRoZSBub2RlLXR5cGUtc3BlY2lmaWMgcXVlcnkgcHJvY2Vzc2lu ZyBmb3IgYWxsIG5vZGVzIHRoYXQKKwkgKiB3ZXJlIGluaXRpYWxpemVkIGluIEluaXRQbGFuKCku ICBUaGF0IGluY2x1ZGVzIHRoZSBub2RlcyBpbiBib3RoIHRoZQorCSAqIG1haW4gcGxhbiB0cmVl IChlcHFzdGF0ZS0+cGxhbikgYW5kIHRob3NlIGluIHN1YnBsYW5zCisJICogKGVzX3BsYW5uZWRz dG10LT5zdWJwbGFucykuCisJICovCisJZm9yZWFjaChsLCBlc3RhdGUtPmVzX3BsYW5zdGF0ZV9u b2RlcykKIAl7Ci0JCVBsYW5TdGF0ZSAgKnN1YnBsYW5zdGF0ZSA9IChQbGFuU3RhdGUgKikgbGZp cnN0KGwpOworCQlQbGFuU3RhdGUgICpwbGFuc3RhdGUgPSAoUGxhblN0YXRlICopIGxmaXJzdChs KTsKIAotCQlFeGVjRW5kTm9kZShzdWJwbGFuc3RhdGUpOworCQlFeGVjRW5kTm9kZShwbGFuc3Rh dGUpOwogCX0KIAogCS8qIHRocm93IGF3YXkgdGhlIHBlci1lc3RhdGUgdHVwbGUgdGFibGUsIHNv bWUgbm9kZSBtYXkgaGF2ZSB1c2VkIGl0ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5j CmluZGV4IDRkMjg4YmM4ZDQuLjY1M2Y3NGNmNTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9j bm9kZS5jCkBAIC0xLDExICsxLDEzIEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBleGVj UHJvY25vZGUuYwotICoJIGNvbnRhaW5zIGRpc3BhdGNoIGZ1bmN0aW9ucyB3aGljaCBjYWxsIHRo ZSBhcHByb3ByaWF0ZSAiaW5pdGlhbGl6ZSIsCi0gKgkgImdldCBhIHR1cGxlIiwgYW5kICJjbGVh bnVwIiByb3V0aW5lcyBmb3IgdGhlIGdpdmVuIG5vZGUgdHlwZS4KLSAqCSBJZiB0aGUgbm9kZSBo YXMgY2hpbGRyZW4sIHRoZW4gaXQgd2lsbCBwcmVzdW1hYmx5IGNhbGwgRXhlY0luaXROb2RlLAot ICoJIEV4ZWNQcm9jTm9kZSwgb3IgRXhlY0VuZE5vZGUgb24gaXRzIHN1Ym5vZGVzIGFuZCBkbyB0 aGUgYXBwcm9wcmlhdGUKLSAqCSBwcm9jZXNzaW5nLgorICoJIENvbnRhaW5zIGRpc3BhdGNoIGZ1 bmN0aW9ucyBFeGVjSW5pdE5vZGUoKSwgRXhlY1Byb2NOb2RlKCksIGFuZAorICoJIEV4ZWNFbmRO b2RlKCksIHdoaWNoIGNhbGwgdGhlIGFwcHJvcHJpYXRlICJpbml0aWFsaXplIiwgImdldCBhIHR1 cGxlIiwKKyAqCSBhbmQgImNsZWFudXAiIHJvdXRpbmVzLCByZXNwZWN0aXZlbHksIGZvciB0aGUg Z2l2ZW4gbm9kZSB0eXBlLgorICoKKyAqCSBXaGlsZSB0aGUgZmlyc3QgdHdvIHByb2Nlc3MgdGhl IG5vZGUncyBjaGlsZHJlbiByZWN1cnNpdmVseSwgRXhlY0VuZE5vZGUoKQorICoJIGlzIG9ubHkg Y29uY2VybmVkIHdpdGggdGhlIGNsZWFuaW5nIG9mIHRoZSBub2RlIGl0c2VsZiB3aGlsZSB0aGUg Y2hpbGRyZW4KKyAqCSBhcmUgcHJvY2Vzc2VkIGJ5IHRoZSBjYWxsZXIuCiAgKgogICogUG9ydGlv bnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCiAgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVu aXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQpAQCAtNDksNyArNTEsOSBAQAogICoJCUV2ZW50dWFsbHkg dGhpcyBjYWxscyBFeGVjSW5pdE5vZGUoKSBvbiB0aGUgcmlnaHQgYW5kIGxlZnQgc3VicGxhbnMK ICAqCQlhbmQgc28gZm9ydGggdW50aWwgdGhlIGVudGlyZSBwbGFuIGlzIGluaXRpYWxpemVkLiAg VGhlIHJlc3VsdAogICoJCW9mIEV4ZWNJbml0Tm9kZSgpIGlzIGEgcGxhbiBzdGF0ZSB0cmVlIGJ1 aWx0IHdpdGggdGhlIHNhbWUgc3RydWN0dXJlCi0gKgkJYXMgdGhlIHVuZGVybHlpbmcgcGxhbiB0 cmVlLgorICoJCWFzIHRoZSB1bmRlcmx5aW5nIHBsYW4gdHJlZS4gIChUaGUgcGxhbiBzdGF0ZSBu b2RlcyBhcmUgYWxzbyBhZGRlZCB0bworICoJCWEgbGlzdCBpbiB0aGUgc2FtZSBvcmRlciBpbiB3 aGljaCB0aGV5IGFyZSBjcmVhdGVkIGZvciB0aGUgZmluYWwKKyAqCQljbGVhbnVwIHByb2Nlc3Np bmcuKQogICoKICAqCSAgKiBUaGVuIHdoZW4gRXhlY3V0b3JSdW4oKSBpcyBjYWxsZWQsIGl0IGNh bGxzIEV4ZWN1dGVQbGFuKCkgd2hpY2ggY2FsbHMKICAqCQlFeGVjUHJvY05vZGUoKSByZXBlYXRl ZGx5IG9uIHRoZSB0b3Agbm9kZSBvZiB0aGUgcGxhbiBzdGF0ZSB0cmVlLgpAQCAtNjEsMTQgKzY1 LDEwIEBACiAgKgkJZm9ybSB0aGUgdHVwbGVzIGl0IHJldHVybnMuCiAgKgogICoJICAqIEV2ZW50 dWFsbHkgRXhlY1NlcVNjYW4oKSBzdG9wcyByZXR1cm5pbmcgdHVwbGVzIGFuZCB0aGUgbmVzdAot ICoJCWxvb3Agam9pbiBlbmRzLiAgTGFzdGx5LCBFeGVjdXRvckVuZCgpIGNhbGxzIEV4ZWNFbmRO b2RlKCkgd2hpY2gKLSAqCQljYWxscyBFeGVjRW5kTmVzdExvb3AoKSB3aGljaCBpbiB0dXJuIGNh bGxzIEV4ZWNFbmROb2RlKCkgb24KLSAqCQlpdHMgc3VicGxhbnMgd2hpY2ggcmVzdWx0IGluIEV4 ZWNFbmRTZXFTY2FuKCkuCisgKgkJbG9vcCBqb2luIGVuZHMuICBMYXN0bHksIEV4ZWN1dG9yRW5k KCkgY2FsbHMgRXhlY0VuZFBsYW4oKSwgd2hpY2gKKyAqCQlpbiB0dXJuIGNhbGxzIEV4ZWNFbmRO b2RlKCkgb24gYWxsIHRoZSBub2RlcyB0aGF0IHdlcmUgaW5pdGlhbGl6ZWQ6CisgKgkJdGhlIHR3 byBTZXEgU2NhbnMgYW5kIHRoZSBOZXN0IExvb3AgaW4gdGhpcyBjYXNlLgogICoKLSAqCQlUaGlz IHNob3VsZCBzaG93IGhvdyB0aGUgZXhlY3V0b3Igd29ya3MgYnkgaGF2aW5nCi0gKgkJRXhlY0lu aXROb2RlKCksIEV4ZWNQcm9jTm9kZSgpIGFuZCBFeGVjRW5kTm9kZSgpIGRpc3BhdGNoCi0gKgkJ dGhlaXIgd29yayB0byB0aGUgYXBwcm9wcmlhdGUgbm9kZSBzdXBwb3J0IHJvdXRpbmVzIHdoaWNo IG1heQotICoJCWluIHR1cm4gY2FsbCB0aGVzZSByb3V0aW5lcyB0aGVtc2VsdmVzIG9uIHRoZWly IHN1YnBsYW5zLgogICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIApAQCAtMTM2LDYgKzEzNiw5 IEBAIHN0YXRpYyBib29sIEV4ZWNTaHV0ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwg dm9pZCAqY29udGV4dCk7CiAgKgkJICAnZWZsYWdzJyBpcyBhIGJpdHdpc2UgT1Igb2YgZmxhZyBi aXRzIGRlc2NyaWJlZCBpbiBleGVjdXRvci5oCiAgKgogICoJCVJldHVybnMgYSBQbGFuU3RhdGUg bm9kZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBQbGFuIG5vZGUuCisgKgorICoJCUFzIGEg c2lkZS1lZmZlY3QsIGFsbCBQbGFuU3RhdGUgbm9kZXMgdGhhdCBhcmUgY3JlYXRlZCBhcmUgYXBw ZW5kZWQgdG8KKyAqCQllc3RhdGUtPmVzX3BsYW5zdGF0ZV9ub2RlcyBmb3IgdGhlIGNsZWFudXAg cHJvY2Vzc2luZyBpbiBFeGVjRW5kUGxhbigpLgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIFBs YW5TdGF0ZSAqCkBAIC00MTEsNiArNDE0LDEwIEBAIEV4ZWNJbml0Tm9kZShQbGFuICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJcmVzdWx0LT5pbnN0cnVtZW50ID0gSW5zdHJB bGxvYygxLCBlc3RhdGUtPmVzX2luc3RydW1lbnQsCiAJCQkJCQkJCQkJcmVzdWx0LT5hc3luY19j YXBhYmxlKTsKIAorCS8qIEFuZCByZW1lbWJlciBmb3IgdGhlIGNsZWFudXAgcHJvY2Vzc2luZyBp biBFeGVjRW5kUGxhbigpLiAqLworCWVzdGF0ZS0+ZXNfcGxhbnN0YXRlX25vZGVzID0gbGFwcGVu ZChlc3RhdGUtPmVzX3BsYW5zdGF0ZV9ub2RlcywKKwkJCQkJCQkJCQkgcmVzdWx0KTsKKwogCXJl dHVybiByZXN1bHQ7CiB9CiAKQEAgLTU0NSwyOSArNTUyLDE4IEBAIE11bHRpRXhlY1Byb2NOb2Rl KFBsYW5TdGF0ZSAqbm9kZSkKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjRW5kTm9kZQogICoKLSAqCQlS ZWN1cnNpdmVseSBjbGVhbnMgdXAgYWxsIHRoZSBub2RlcyBpbiB0aGUgcGxhbiByb290ZWQKLSAq CQlhdCAnbm9kZScuCisgKgkJQ2xlYW5zIHVwIG5vZGUKICAqCi0gKgkJQWZ0ZXIgdGhpcyBvcGVy YXRpb24sIHRoZSBxdWVyeSBwbGFuIHdpbGwgbm90IGJlIGFibGUgdG8gYmUKLSAqCQlwcm9jZXNz ZWQgYW55IGZ1cnRoZXIuICBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlcgotICoJCXRo ZSBxdWVyeSBwbGFuIGhhcyBiZWVuIGZ1bGx5IGV4ZWN1dGVkLgorICoJCVVubGlrZSBFeGVjSW5p dE5vZGUoKSwgdGhpcyBkb2VzIG5vdCByZWN1cnNlIGludG8gY2hpbGQgbm9kZXMsIGJlY2F1c2UK KyAqCQl0aGV5IGFyZSBwcm9jZXNzZWQgc2VwYXJhdGVseS4gIFNvIHRoZSBFeGVjRW5kKiByb3V0 aW5lIGZvciBhbnkgZ2l2ZW4KKyAqCQlub2RlIHR5cGUgaXMgb25seSByZXNwb25zaWJsZSBmb3Ig Y2xlYW5pbmcgdXAgaXRzIG93biByZXNvdXJjZXMuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHZvaWQKIEV4 ZWNFbmROb2RlKFBsYW5TdGF0ZSAqbm9kZSkKIHsKLQkvKgotCSAqIGRvIG5vdGhpbmcgd2hlbiB3 ZSBnZXQgdG8gdGhlIGVuZCBvZiBhIGxlYWYgb24gdHJlZS4KLQkgKi8KLQlpZiAobm9kZSA9PSBO VUxMKQotCQlyZXR1cm47Ci0KLQkvKgotCSAqIE1ha2Ugc3VyZSB0aGVyZSdzIGVub3VnaCBzdGFj ayBhdmFpbGFibGUuIE5lZWQgdG8gY2hlY2sgaGVyZSwgaW4KLQkgKiBhZGRpdGlvbiB0byBFeGVj UHJvY05vZGUoKSAodmlhIEV4ZWNQcm9jTm9kZUZpcnN0KCkpLCBiZWNhdXNlIGl0J3Mgbm90Ci0J ICogZ3VhcmFudGVlZCB0aGF0IEV4ZWNQcm9jTm9kZSgpIGlzIHJlYWNoZWQgZm9yIGFsbCBub2Rl cy4KLQkgKi8KLQljaGVja19zdGFja19kZXB0aCgpOworCS8qIFdlIG9ubHkgZXZlciBnZXQgY2Fs bGVkIG9uIG5vZGVzIHRoYXQgd2VyZSBhY3R1YWxseSBpbml0aWFsaXplZC4gKi8KKwlBc3NlcnQo bm9kZSAhPSBOVUxMKTsKIAogCWlmIChub2RlLT5jaGdQYXJhbSAhPSBOVUxMKQogCXsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggYzA2YjIyODg1OC4uYjU2NzE2NTAwMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1V0aWxzLmMKQEAgLTE1NCw2ICsxNTQsOCBAQCBDcmVhdGVFeGVjdXRvclN0YXRl KHZvaWQpCiAKIAllc3RhdGUtPmVzX2V4cHJjb250ZXh0cyA9IE5JTDsKIAorCWVzdGF0ZS0+ZXNf cGxhbnN0YXRlX25vZGVzID0gTklMOworCiAJZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzID0gTklM OwogCiAJZXN0YXRlLT5lc19hdXhtb2RpZnl0YWJsZXMgPSBOSUw7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdn LmMKaW5kZXggNDY4ZGI5NGZlNS4uZTlkOWFiNmJkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwpA QCAtNDMwNCw3ICs0MzA0LDYgQEAgR2V0QWdnSW5pdFZhbChEYXR1bSB0ZXh0SW5pdFZhbCwgT2lk IHRyYW5zdHlwZSkKIHZvaWQKIEV4ZWNFbmRBZ2coQWdnU3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0 YXRlICAqb3V0ZXJQbGFuOwogCWludAkJCXRyYW5zbm87CiAJaW50CQkJbnVtR3JvdXBpbmdTZXRz ID0gTWF4KG5vZGUtPm1heHNldHMsIDEpOwogCWludAkJCXNldG5vOwpAQCAtNDM2Nyw4ICs0MzY2 LDcgQEAgRXhlY0VuZEFnZyhBZ2dTdGF0ZSAqbm9kZSkKIAkvKiBjbGVhbiB1cCB0dXBsZSB0YWJs ZSAqLwogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCi0Jb3V0 ZXJQbGFuID0gb3V0ZXJQbGFuU3RhdGUobm9kZSk7Ci0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuKTsK KwkvKiBvdXRlclBsYW4gaXMgY2xvc2VseSBzZXBhcmF0ZWx5LiAqLwogfQogCiB2b2lkCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggNjA5ZGY2YjllNi4uOTE0OGQ3ZDNiMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtMzc2LDMwICszNzYsMTIgQEAgRXhlY0FwcGVuZChQ bGFuU3RhdGUgKnBzdGF0ZSkKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNFbmRBcHBlbmQKLSAqCi0g KgkJU2h1dHMgZG93biB0aGUgc3Vic2NhbnMgb2YgdGhlIGFwcGVuZCBub2RlLgotICoKLSAqCQlS ZXR1cm5zIG5vdGhpbmcgb2YgaW50ZXJlc3QuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHZvaWQKIEV4ZWNF bmRBcHBlbmQoQXBwZW5kU3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRlICoqYXBwZW5kcGxhbnM7 Ci0JaW50CQkJbnBsYW5zOwotCWludAkJCWk7Ci0KLQkvKgotCSAqIGdldCBpbmZvcm1hdGlvbiBm cm9tIHRoZSBub2RlCi0JICovCi0JYXBwZW5kcGxhbnMgPSBub2RlLT5hcHBlbmRwbGFuczsKLQlu cGxhbnMgPSBub2RlLT5hc19ucGxhbnM7Ci0KLQkvKgotCSAqIHNodXQgZG93biBlYWNoIG9mIHRo ZSBzdWJzY2FucwotCSAqLwotCWZvciAoaSA9IDA7IGkgPCBucGxhbnM7IGkrKykKLQkJRXhlY0Vu ZE5vZGUoYXBwZW5kcGxhbnNbaV0pOworCS8qIE5vdGhpbmcgdG8gZG8gYXMgdGhlIG5vZGVzIGlu IGFwcGVuZHBsYW5zIGFyZSBjbG9zZWQgc2VwYXJhdGVseS4gKi8KIH0KIAogdm9pZApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jCmluZGV4IDRjNWViMmIyM2IuLjE0NzU5MmY3ZTIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMKQEAgLTE2OCwzMyArMTY4LDEyIEBAIE11 bHRpRXhlY0JpdG1hcEFuZChCaXRtYXBBbmRTdGF0ZSAqbm9kZSkKIAogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJ CUV4ZWNFbmRCaXRtYXBBbmQKLSAqCi0gKgkJU2h1dHMgZG93biB0aGUgc3Vic2NhbnMgb2YgdGhl IEJpdG1hcEFuZCBub2RlLgotICoKLSAqCQlSZXR1cm5zIG5vdGhpbmcgb2YgaW50ZXJlc3QuCiAg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKi8KIHZvaWQKIEV4ZWNFbmRCaXRtYXBBbmQoQml0bWFwQW5kU3RhdGUgKm5v ZGUpCiB7Ci0JUGxhblN0YXRlICoqYml0bWFwcGxhbnM7Ci0JaW50CQkJbnBsYW5zOwotCWludAkJ CWk7Ci0KLQkvKgotCSAqIGdldCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0JICovCi0JYml0 bWFwcGxhbnMgPSBub2RlLT5iaXRtYXBwbGFuczsKLQlucGxhbnMgPSBub2RlLT5ucGxhbnM7Ci0K LQkvKgotCSAqIHNodXQgZG93biBlYWNoIG9mIHRoZSBzdWJzY2FucyAodGhhdCB3ZSd2ZSBpbml0 aWFsaXplZCkKLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCi0JewotCQlpZiAo Yml0bWFwcGxhbnNbaV0pCi0JCQlFeGVjRW5kTm9kZShiaXRtYXBwbGFuc1tpXSk7Ci0JfQorCS8q IE5vdGhpbmcgdG8gZG8gYXMgdGhlIG5vZGVzIGluIGJpdG1hcHBsYW5zIGFyZSBjbG9zZWQgc2Vw YXJhdGVseS4gKi8KIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVh cHNjYW4uYwppbmRleCBmMzVkZjBiOGJmLi5kNThlZTRmNGUxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwpAQCAtNjY3LDEwICs2NjcsNyBAQCBFeGVjRW5kQml0 bWFwSGVhcFNjYW4oQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIAkJRXhlY0NsZWFyVHVwbGUo bm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5z cy5zc19TY2FuVHVwbGVTbG90KTsKIAotCS8qCi0JICogY2xvc2UgZG93biBzdWJwbGFucwotCSAq LwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwkvKiBvdXRlclBsYW4gaXMg Y2xvc2VkIHNlcGFyYXRlbHkuICovCiAKIAkvKgogCSAqIHJlbGVhc2UgYml0bWFwcyBhbmQgYnVm ZmVycyBpZiBhbnkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBP ci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKaW5kZXggMGJmOGFmOTY1 Mi4uNzM2ODUyYTBhZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cE9yLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKQEAgLTE4Niwz MyArMTg2LDEyIEBAIE11bHRpRXhlY0JpdG1hcE9yKEJpdG1hcE9yU3RhdGUgKm5vZGUpCiAKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICAqCQlFeGVjRW5kQml0bWFwT3IKLSAqCi0gKgkJU2h1dHMgZG93biB0aGUgc3Vi c2NhbnMgb2YgdGhlIEJpdG1hcE9yIG5vZGUuCi0gKgotICoJCVJldHVybnMgbm90aGluZyBvZiBp bnRlcmVzdC4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogdm9pZAogRXhlY0VuZEJpdG1hcE9yKEJpdG1hcE9y U3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRlICoqYml0bWFwcGxhbnM7Ci0JaW50CQkJbnBsYW5z OwotCWludAkJCWk7Ci0KLQkvKgotCSAqIGdldCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBub2RlCi0J ICovCi0JYml0bWFwcGxhbnMgPSBub2RlLT5iaXRtYXBwbGFuczsKLQlucGxhbnMgPSBub2RlLT5u cGxhbnM7Ci0KLQkvKgotCSAqIHNodXQgZG93biBlYWNoIG9mIHRoZSBzdWJzY2FucyAodGhhdCB3 ZSd2ZSBpbml0aWFsaXplZCkKLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCi0J ewotCQlpZiAoYml0bWFwcGxhbnNbaV0pCi0JCQlFeGVjRW5kTm9kZShiaXRtYXBwbGFuc1tpXSk7 Ci0JfQorCS8qIE5vdGhpbmcgdG8gZG8gYXMgdGhlIG5vZGVzIGluIGJpdG1hcHBsYW5zIGFyZSBj bG9zZWQgc2VwYXJhdGVseS4gKi8KIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9y ZWlnbnNjYW4uYwppbmRleCBjMjEzOWFjY2EwLi5lNjYxNmRkNzE4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlRm9yZWlnbnNjYW4uYwpAQCAtMzA5LDkgKzMwOSw3IEBAIEV4ZWNFbmRGb3JlaWdu U2NhbihGb3JlaWduU2NhblN0YXRlICpub2RlKQogCWVsc2UKIAkJbm9kZS0+ZmR3cm91dGluZS0+ RW5kRm9yZWlnblNjYW4obm9kZSk7CiAKLQkvKiBTaHV0IGRvd24gYW55IG91dGVyIHBsYW4uICov Ci0JaWYgKG91dGVyUGxhblN0YXRlKG5vZGUpKQotCQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0 ZShub2RlKSk7CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogCiAJLyog RnJlZSB0aGUgZXhwcmNvbnRleHQgKi8KIAlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5w cyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKaW5kZXggMzA3ZmMxMGVlYS4uZjdhNjlmMTg1 YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYwpAQCAtMjQ4LDcgKzI0OCw3IEBAIEV4ZWNH YXRoZXIoUGxhblN0YXRlICpwc3RhdGUpCiB2b2lkCiBFeGVjRW5kR2F0aGVyKEdhdGhlclN0YXRl ICpub2RlKQogewotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsJLyogbGV0IGNo aWxkcmVuIGNsZWFuIHVwIGZpcnN0ICovCisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0 ZWx5LiAqLwogCUV4ZWNTaHV0ZG93bkdhdGhlcihub2RlKTsKIAlFeGVjRnJlZUV4cHJDb250ZXh0 KCZub2RlLT5wcyk7CiAJaWYgKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKaW5kZXggOWQ1ZTFhNDZlOS4uZDM1N2ZmMGM0NyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKQEAgLTI4OCw3ICsyODgsNyBA QCBFeGVjR2F0aGVyTWVyZ2UoUGxhblN0YXRlICpwc3RhdGUpCiB2b2lkCiBFeGVjRW5kR2F0aGVy TWVyZ2UoR2F0aGVyTWVyZ2VTdGF0ZSAqbm9kZSkKIHsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW5T dGF0ZShub2RlKSk7CS8qIGxldCBjaGlsZHJlbiBjbGVhbiB1cCBmaXJzdCAqLworCS8qIG91dGVy UGxhbiBpcyBjbG9zZWQgc2VwYXJhdGVseS4gKi8KIAlFeGVjU2h1dGRvd25HYXRoZXJNZXJnZShu b2RlKTsKIAlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7CiAJaWYgKG5vZGUtPnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVH cm91cC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKaW5kZXggMjVhMTYxODk1 Mi4uMmJhZGNjN2U2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3Vw LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMKQEAgLTIyNiwxNSArMjI2 LDEyIEBAIEV4ZWNJbml0R3JvdXAoR3JvdXAgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogdm9pZAogRXhlY0VuZEdyb3VwKEdyb3VwU3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRl ICAqb3V0ZXJQbGFuOwotCiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwogCiAJ LyogY2xlYW4gdXAgdHVwbGUgdGFibGUgKi8KIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19T Y2FuVHVwbGVTbG90KTsKIAotCW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwotCUV4 ZWNFbmROb2RlKG91dGVyUGxhbik7CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5 LiAqLwogfQogCiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFz aC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwppbmRleCA4YjVjMzViODJiLi5l ZGQyMzI0Mzg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKQEAgLTQxMywxOCArNDEzLDEyIEBA IEV4ZWNJbml0SGFzaChIYXNoICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHZv aWQKIEV4ZWNFbmRIYXNoKEhhc2hTdGF0ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgICpvdXRlclBs YW47Ci0KIAkvKgogCSAqIGZyZWUgZXhwcmNvbnRleHQKIAkgKi8KIAlFeGVjRnJlZUV4cHJDb250 ZXh0KCZub2RlLT5wcyk7CiAKLQkvKgotCSAqIHNodXQgZG93biB0aGUgc3VicGxhbgotCSAqLwot CW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxh bik7CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQogCiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKaW5kZXggOTgwNzQ2MTI4Yi4uODA3OGQ3ZjIyOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAgLTg3OSwxMSArODc5LDcgQEAgRXhlY0Vu ZEhhc2hKb2luKEhhc2hKb2luU3RhdGUgKm5vZGUpCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+aGpf T3V0ZXJUdXBsZVNsb3QpOwogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmhqX0hhc2hUdXBsZVNsb3Qp OwogCi0JLyoKLQkgKiBjbGVhbiB1cCBzdWJ0cmVlcwotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVy UGxhblN0YXRlKG5vZGUpKTsKLQlFeGVjRW5kTm9kZShpbm5lclBsYW5TdGF0ZShub2RlKSk7CisJ Lyogb3V0ZXJQbGFuIGFuZCBpbm5lclBsYW4gYXJlIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29y dC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCmluZGV4IDc2 ODNlMzM0MWMuLjUyYjE0NmNmYjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmNyZW1lbnRhbFNvcnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVt ZW50YWxTb3J0LmMKQEAgLTExMDEsMTAgKzExMDEsNyBAQCBFeGVjRW5kSW5jcmVtZW50YWxTb3J0 KEluY3JlbWVudGFsU29ydFN0YXRlICpub2RlKQogCQlub2RlLT5wcmVmaXhzb3J0X3N0YXRlID0g TlVMTDsKIAl9CiAKLQkvKgotCSAqIFNodXQgZG93biB0aGUgc3VicGxhbi4KLQkgKi8KLQlFeGVj RW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBz ZXBhcmF0ZWx5LiAqLwogCiAJU09fcHJpbnRmKCJFeGVjRW5kSW5jcmVtZW50YWxTb3J0OiBzb3J0 IG5vZGUgc2h1dGRvd25cbiIpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUxpbWl0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwppbmRleCA0MjVm YmZjNDA1Li5hNzUwOTlkZDczIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TGltaXQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYwpAQCAtNTM1LDcg KzUzNSw3IEBAIHZvaWQKIEV4ZWNFbmRMaW1pdChMaW1pdFN0YXRlICpub2RlKQogewogCUV4ZWNG cmVlRXhwckNvbnRleHQoJm5vZGUtPnBzKTsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShu b2RlKSk7CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQogCiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKaW5kZXggZTQ1OTk3MWQzMi4uNTVkZThkM2Q2NSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKQEAgLTM4Niw3ICszODYsNyBAQCBFeGVj RW5kTG9ja1Jvd3MoTG9ja1Jvd3NTdGF0ZSAqbm9kZSkKIHsKIAkvKiBXZSBtYXkgaGF2ZSBzaHV0 IGRvd24gRVBRIGFscmVhZHksIGJ1dCBubyBoYXJtIGluIGFub3RoZXIgY2FsbCAqLwogCUV2YWxQ bGFuUXVhbEVuZCgmbm9kZS0+bHJfZXBxc3RhdGUpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0 YXRlKG5vZGUpKTsKKwkvKiBvdXRlclBsYW4gaXMgY2xvc2VkIHNlcGFyYXRlbHkuICovCiB9CiAK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwppbmRleCAwOTYzMjY3OGIwLi5lZjA0ZTlh OGU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwpAQCAtMjUxLDEwICsyNTEsNyBA QCBFeGVjRW5kTWF0ZXJpYWwoTWF0ZXJpYWxTdGF0ZSAqbm9kZSkKIAkJdHVwbGVzdG9yZV9lbmQo bm9kZS0+dHVwbGVzdG9yZXN0YXRlKTsKIAlub2RlLT50dXBsZXN0b3Jlc3RhdGUgPSBOVUxMOwog Ci0JLyoKLQkgKiBzaHV0IGRvd24gdGhlIHN1YnBsYW4KLQkgKi8KLQlFeGVjRW5kTm9kZShvdXRl clBsYW5TdGF0ZShub2RlKSk7CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAq LwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVtb2l6ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwppbmRleCA0ZjA0 MjY5ZTI2Li42MTU3OGQ0YjVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVtb2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKQEAgLTEx MDAsMTAgKzExMDAsNyBAQCBFeGVjRW5kTWVtb2l6ZShNZW1vaXplU3RhdGUgKm5vZGUpCiAJICov CiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwogCi0JLyoKLQkgKiBzaHV0IGRv d24gdGhlIHN1YnBsYW4KLQkgKi8KLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7 CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQogCiB2b2lkCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IDIxYjU3MjZlNmUuLjhhYTY0OTQ0 YzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC0zMTAsMzAgKzMx MCwxMiBAQCBoZWFwX2NvbXBhcmVfc2xvdHMoRGF0dW0gYSwgRGF0dW0gYiwgdm9pZCAqYXJnKQog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKgkJRXhlY0VuZE1lcmdlQXBwZW5kCi0gKgotICoJCVNodXRzIGRvd24g dGhlIHN1YnNjYW5zIG9mIHRoZSBNZXJnZUFwcGVuZCBub2RlLgotICoKLSAqCQlSZXR1cm5zIG5v dGhpbmcgb2YgaW50ZXJlc3QuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIHZvaWQKIEV4ZWNFbmRNZXJnZUFw cGVuZChNZXJnZUFwcGVuZFN0YXRlICpub2RlKQogewotCVBsYW5TdGF0ZSAqKm1lcmdlcGxhbnM7 Ci0JaW50CQkJbnBsYW5zOwotCWludAkJCWk7Ci0KLQkvKgotCSAqIGdldCBpbmZvcm1hdGlvbiBm cm9tIHRoZSBub2RlCi0JICovCi0JbWVyZ2VwbGFucyA9IG5vZGUtPm1lcmdlcGxhbnM7Ci0JbnBs YW5zID0gbm9kZS0+bXNfbnBsYW5zOwotCi0JLyoKLQkgKiBzaHV0IGRvd24gZWFjaCBvZiB0aGUg c3Vic2NhbnMKLQkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgbnBsYW5zOyBpKyspCi0JCUV4ZWNFbmRO b2RlKG1lcmdlcGxhbnNbaV0pOworCS8qIE5vdGhpbmcgdG8gZG8gYXMgdGhlIG5vZGVzIGluIG1l cmdlcGxhbnMgYXJlIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQogCiB2b2lkCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTWVyZ2Vqb2luLmMKaW5kZXggMDBmOTZkMDQ1ZS4uN2I1MzBkOTA4OCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwpAQCAtMTY1NCwxMSArMTY1NCw3IEBAIEV4ZWNF bmRNZXJnZUpvaW4oTWVyZ2VKb2luU3RhdGUgKm5vZGUpCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+ anMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5tal9NYXJr ZWRUdXBsZVNsb3QpOwogCi0JLyoKLQkgKiBzaHV0IGRvd24gdGhlIHN1YnBsYW5zCi0JICovCi0J RXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxh blN0YXRlKG5vZGUpKTsKKwkvKiBvdXRlclBsYW4gYW5kIGlubmVyUGxhbiBhcmUgY2xvc2VkIHNl cGFyYXRlbHkuICovCiAKIAlNSjFfcHJpbnRmKCJFeGVjRW5kTWVyZ2VKb2luOiAlc1xuIiwKIAkJ CSAgICJub2RlIHByb2Nlc3NpbmcgZW5kZWQiKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlm eVRhYmxlLmMKaW5kZXggMmE1ZmVjOGQwMS4uYmRiYWE0NzUzYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTQzOTcsNyArNDM5Nyw3IEBAIEV4ZWNJbml0TW9kaWZ5 VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogLyog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICoJCUV4ZWNFbmRNb2RpZnlUYWJsZQogICoKLSAqCQlTaHV0cyBkb3duIHRoZSBw bGFuLgorICoJCVJlbGVhc2VzIE1vZGlmeVRhYmxlIHJlc291cmNlcy4KICAqCiAgKgkJUmV0dXJu cyBub3RoaW5nIG9mIGludGVyZXN0LgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDQ2MSwxMCArNDQ2MSw3IEBA IEV4ZWNFbmRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZVN0YXRlICpub2RlKQogCSAqLwogCUV2YWxQ bGFuUXVhbEVuZCgmbm9kZS0+bXRfZXBxc3RhdGUpOwogCi0JLyoKLQkgKiBzaHV0IGRvd24gc3Vi cGxhbgotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKKwkvKiBvdXRl clBsYW4gaXMgY2xvc2VkIHNlcGFyYXRlbHkuICovCiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVOZXN0bG9vcC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU5lc3Rsb29wLmMKaW5kZXggYjNkNTJlNjllYy4uNWNmYjUwYTM2NiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU5lc3Rsb29wLmMKQEAgLTM3NCwxMSArMzc0LDcgQEAgRXhlY0VuZE5lc3RMb29w KE5lc3RMb29wU3RhdGUgKm5vZGUpCiAJICovCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+anMucHMu cHNfUmVzdWx0VHVwbGVTbG90KTsKIAotCS8qCi0JICogY2xvc2UgZG93biBzdWJwbGFucwotCSAq LwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKLQlFeGVjRW5kTm9kZShpbm5l clBsYW5TdGF0ZShub2RlKSk7CisJLyogb3V0ZXJQbGFuIGFuZCBpbm5lclBsYW4gYXJlIGNsb3Nl ZCBzZXBhcmF0ZWx5LiAqLwogCiAJTkwxX3ByaW50ZigiRXhlY0VuZE5lc3RMb29wOiAlc1xuIiwK IAkJCSAgICJub2RlIHByb2Nlc3NpbmcgZW5kZWQiKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJv amVjdFNldC5jCmluZGV4IGY2ZmYzZGM0NGMuLjRhMzg4MjIwZWUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVByb2plY3RTZXQuYwpAQCAtMzMwLDEwICszMzAsNyBAQCBFeGVjRW5kUHJvamVjdFNl dChQcm9qZWN0U2V0U3RhdGUgKm5vZGUpCiAJICovCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMu cHNfUmVzdWx0VHVwbGVTbG90KTsKIAotCS8qCi0JICogc2h1dCBkb3duIHN1YnBsYW5zCi0JICov Ci0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCS8qIG91dGVyUGxhbiBpcyBj bG9zZWQgc2VwYXJhdGVseS4gKi8KIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl UmVjdXJzaXZldW5pb24uYwppbmRleCBlNzgxMDAzOTM0Li5hZWUzMWM3MTM5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwpAQCAtMjgxLDExICsyODEsNyBAQCBF eGVjRW5kUmVjdXJzaXZlVW5pb24oUmVjdXJzaXZlVW5pb25TdGF0ZSAqbm9kZSkKIAlpZiAobm9k ZS0+dGFibGVDb250ZXh0KQogCQlNZW1vcnlDb250ZXh0RGVsZXRlKG5vZGUtPnRhYmxlQ29udGV4 dCk7CiAKLQkvKgotCSAqIGNsb3NlIGRvd24gc3VicGxhbnMKLQkgKi8KLQlFeGVjRW5kTm9kZShv dXRlclBsYW5TdGF0ZShub2RlKSk7Ci0JRXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkp OworCS8qIG91dGVyUGxhbiBhbmQgaW5uZXJQbGFuIGFyZSBjbG9zZWQgc2VwYXJhdGVseS4gKi8K IH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJl c3VsdC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCmluZGV4IDQyMTk3MTJk MzAuLmExMDBiMTQ0YmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1 bHQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKQEAgLTI1MCwxMCAr MjUwLDcgQEAgRXhlY0VuZFJlc3VsdChSZXN1bHRTdGF0ZSAqbm9kZSkKIAkgKi8KIAlFeGVjQ2xl YXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwogCi0JLyoKLQkgKiBzaHV0IGRv d24gc3VicGxhbnMKLQkgKi8KLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CisJ Lyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQogCiB2b2lkCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTZXRPcC5jCmluZGV4IDRiYzI0MDZiODkuLmY3ZGI5YTM0MTUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTZXRPcC5jCkBAIC01OTAsNyArNTkwLDcgQEAgRXhlY0VuZFNldE9wKFNldE9wU3Rh dGUgKm5vZGUpCiAJCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+dGFibGVDb250ZXh0KTsKIAlF eGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7CiAKLQlFeGVjRW5kTm9kZShvdXRlclBsYW5T dGF0ZShub2RlKSk7CisJLyogb3V0ZXJQbGFuIGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQog CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlU29ydC5jCmluZGV4IGM2YzcyYzZlNjcuLjA3OGQwNDFjNDAgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNvcnQuYwpAQCAtMzE3LDEwICszMTcsNyBAQCBFeGVjRW5kU29ydChT b3J0U3RhdGUgKm5vZGUpCiAJCXR1cGxlc29ydF9lbmQoKFR1cGxlc29ydHN0YXRlICopIG5vZGUt PnR1cGxlc29ydHN0YXRlKTsKIAlub2RlLT50dXBsZXNvcnRzdGF0ZSA9IE5VTEw7CiAKLQkvKgot CSAqIHNodXQgZG93biB0aGUgc3VicGxhbgotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0 YXRlKG5vZGUpKTsKKwkvKiBvdXRlclBsYW4gaXMgY2xvc2VkIHNlcGFyYXRlbHkuICovCiAKIAlT TzFfcHJpbnRmKCJFeGVjRW5kU29ydDogJXNcbiIsCiAJCQkgICAic29ydCBub2RlIHNodXRkb3du Iik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKaW5kZXggNDI0NzFiZmMw NC4uYmM1NWE4MmZjMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1 ZXJ5c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwpA QCAtMTc5LDEwICsxNzksNyBAQCBFeGVjRW5kU3VicXVlcnlTY2FuKFN1YnF1ZXJ5U2NhblN0YXRl ICpub2RlKQogCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3Qp OwogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogCi0JLyoKLQkg KiBjbG9zZSBkb3duIHN1YnF1ZXJ5Ci0JICovCi0JRXhlY0VuZE5vZGUobm9kZS0+c3VicGxhbik7 CisJLyogc3VicGxhbiBpcyBjbG9zZWQgc2VwYXJhdGVseS4gKi8KIH0KIAogLyogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCmluZGV4IDQ1MDM1ZDc0ZmEuLjUwYmFiYWNkYzggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKQEAgLTE3Myw3ICsxNzMsNyBAQCBFeGVjRW5kVW5p cXVlKFVuaXF1ZVN0YXRlICpub2RlKQogCiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+cHMp OwogCi0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOworCS8qIG91dGVyUGxhbiBp cyBjbG9zZWQgc2VwYXJhdGVseS4gKi8KIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93 QWdnLmMKaW5kZXggMzEwYWMyM2UzYS4uNjQ4Y2RhZGMzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVXaW5kb3dBZ2cuYwpAQCAtMjY4MSw3ICsyNjgxLDYgQEAgRXhlY0luaXRXaW5kb3dBZ2coV2lu ZG93QWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHZvaWQKIEV4ZWNFbmRX aW5kb3dBZ2coV2luZG93QWdnU3RhdGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRlICAqb3V0ZXJQbGFu OwogCWludAkJCWk7CiAKIAlyZWxlYXNlX3BhcnRpdGlvbihub2RlKTsKQEAgLTI3MTQsOCArMjcx Myw3IEBAIEV4ZWNFbmRXaW5kb3dBZ2coV2luZG93QWdnU3RhdGUgKm5vZGUpCiAJcGZyZWUobm9k ZS0+cGVyZnVuYyk7CiAJcGZyZWUobm9kZS0+cGVyYWdnKTsKIAotCW91dGVyUGxhbiA9IG91dGVy UGxhblN0YXRlKG5vZGUpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxhbik7CisJLyogb3V0ZXJQbGFu IGlzIGNsb3NlZCBzZXBhcmF0ZWx5LiAqLwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAppbmRleCBjYjcxNGY0YTE5Li4yMzNmYjZiNGY5IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaApAQCAtNjcxLDYgKzY3MSw4IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCiAJTGlz dAkgICAqZXNfZXhwcmNvbnRleHRzOwkvKiBMaXN0IG9mIEV4cHJDb250ZXh0cyB3aXRoaW4gRVN0 YXRlICovCiAKKwlMaXN0CSAgICplc19wbGFuc3RhdGVfbm9kZXM7IC8qICJmbGF0IiBsaXN0IG9m IFBsYW5TdGF0ZSBub2RlcyAqLworCiAJTGlzdAkgICAqZXNfc3VicGxhbnN0YXRlczsJLyogTGlz dCBvZiBQbGFuU3RhdGUgZm9yIFN1YlBsYW5zICovCiAKIAlMaXN0CSAgICplc19hdXhtb2RpZnl0 YWJsZXM7IC8qIExpc3Qgb2Ygc2Vjb25kYXJ5IE1vZGlmeVRhYmxlU3RhdGVzICovCi0tIAoyLjM1 LjMKCg== --000000000000ea8dda0601f0ccd8 Content-Type: application/octet-stream; name="v43-0005-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v43-0005-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lktry4vd0 RnJvbSBiMDQ4MzFmMzc3NThmZDg2YmYxZTBmYjQxZDhiZjEwMDFkZTRlOGEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0OSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQz IDUvNV0gVHJhY2sgb3BlbmVkIHJhbmdlIHRhYmxlIHJlbGF0aW9ucyBpbiBhIExpc3QgaW4KIEVT dGF0ZQoKVGhpcyBtYWtlcyBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zIGZhc3RlciB3aGVu IHRoZXJlIGFyZSBtYW55CnJlbGF0aW9ucyBpbiB0aGUgcmFuZ2UgdGFibGUgYnV0IG9ubHkgYSBm ZXcgYXJlIG9wZW5lZCBkdXJpbmcKZXhlY3V0aW9uLCBzdWNoIGFzIHdoZW4gcnVuLXRpbWUgcHJ1 bmluZyBraWNrcyBpbiBvbiBhbiBBcHBlbmQKY29udGFpbmluZyB0aG91c2FuZHMgb2YgcGFydGl0 aW9uIHN1YnBsYW5zLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdr TVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb20K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICB8IDkgKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDIgKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgIHwgMiArKwogMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggNGE0YjRiNzY5MC4uYWU5 ZjQ1MzU1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xNjUzLDEyICsxNjUzLDEzIEBA IEV4ZWNDbG9zZVJlc3VsdFJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSkKIHZvaWQKIEV4ZWNDbG9z ZVJhbmdlVGFibGVSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUpCiB7Ci0JaW50CQkJaTsKKwlMaXN0 Q2VsbCAqbGM7CiAKLQlmb3IgKGkgPSAwOyBpIDwgZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXpl OyBpKyspCisJZm9yZWFjaChsYywgZXN0YXRlLT5lc19vcGVuZWRfcmVsYXRpb25zKQogCXsKLQkJ aWYgKGVzdGF0ZS0+ZXNfcmVsYXRpb25zW2ldKQotCQkJdGFibGVfY2xvc2UoZXN0YXRlLT5lc19y ZWxhdGlvbnNbaV0sIE5vTG9jayk7CisJCVJlbGF0aW9uIHJlbCA9IGxmaXJzdChsYyk7CisKKwkJ dGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwppbmRleCBlZTEyMjM1YjJmLi41YWU5OTNlMjljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwpAQCAtODM5LDYgKzgzOSw4IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICpl c3RhdGUsIEluZGV4IHJ0aSkKIAkJfQogCiAJCWVzdGF0ZS0+ZXNfcmVsYXRpb25zW3J0aSAtIDFd ID0gcmVsOworCQllc3RhdGUtPmVzX29wZW5lZF9yZWxhdGlvbnMgPSBsYXBwZW5kKGVzdGF0ZS0+ ZXNfb3BlbmVkX3JlbGF0aW9ucywKKwkJCQkJCQkJCQkJICByZWwpOwogCX0KIAogCXJldHVybiBy ZWw7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDIwYzFiYWNhZTEuLmM1MTlhNmQ1ZGMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCkBAIC02MTksNiArNjE5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRl CiAJSW5kZXgJCWVzX3JhbmdlX3RhYmxlX3NpemU7CS8qIHNpemUgb2YgdGhlIHJhbmdlIHRhYmxl IGFycmF5cyAqLwogCVJlbGF0aW9uICAgKmVzX3JlbGF0aW9uczsJLyogQXJyYXkgb2YgcGVyLXJh bmdlLXRhYmxlLWVudHJ5IFJlbGF0aW9uCiAJCQkJCQkJCSAqIHBvaW50ZXJzLCBvciBOVUxMIGlm IG5vdCB5ZXQgb3BlbmVkICovCisJTGlzdAkgICAqZXNfb3BlbmVkX3JlbGF0aW9uczsgLyogTGlz dCBvZiBub24tTlVMTCBlbnRyaWVzIGluCisJCQkJCQkJCQkgICogZXNfcmVsYXRpb25zIGluIG5v IHNwZWNpZmljIG9yZGVyICovCiAJc3RydWN0IEV4ZWNSb3dNYXJrICoqZXNfcm93bWFya3M7CS8q IEFycmF5IG9mIHBlci1yYW5nZS10YWJsZS1lbnRyeQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJr cywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0 IG9mIFJURVBlcm1pc3Npb25JbmZvICovCi0tIAoyLjM1LjMKCg== --000000000000ea8dda0601f0ccd8 Content-Type: application/octet-stream; name="v43-0003-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Disposition: attachment; filename="v43-0003-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lktry4vh2 RnJvbSBiNmU0Yzg5NjAyN2Y4MzJmZjBlNTc2Mjc5NTM1NWE4OWZkOTNhZmIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0MyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQz IDMvNV0gU2V0IGluRnJvbUNsIHRvIGZhbHNlIGluIGNoaWxkIHRhYmxlIFJURXMKClRoaXMgaXMg dG8gYWxsb3cgdGhlIGV4ZWN1dG9yIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggdGFibGVzIHRoYXQg YXJlCmRpcmVjdGx5IG1lbnRpb25lZCBpbiB0aGUgcXVlcnkgZnJvbSB0aG9zZSB0aGF0IGdldCBh ZGRlZCB0byB0aGUKcXVlcnkgZHVyaW5nIHBsYW5uaW5nLiAgQSBzdWJzZXF1ZW50IGNvbW1pdCB3 aWxsIHRlYWNoIHRoZSBleGVjdXRvcgp0byBsb2NrIG9ubHkgdGhlIHRhYmxlcyBvZiB0aGUgbGF0 dGVyIGtpbmQgd2hlbiBleGVjdXRpbmcgYSBjYWNoZWQKcGxhbi4KCkRpc2N1c3Npb246IGh0dHBz Oi8vcG9zdGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5Y0xRdVY3b29pdEVF cGJLQjBPX21nQG1haWwuZ21haWwuY29tawotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGls L2luaGVyaXQuYyB8IDYgKysrKysrCiBzcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAgICAg ICAgfCA3ICsrKy0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICB8IDkg KysrKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jCmluZGV4IDk0ZGU4NTVhMjIuLjli YWMwN2JmNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2luaGVyaXQu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9pbmhlcml0LmMKQEAgLTQ5Miw2ICs0 OTIsMTIgQEAgZXhwYW5kX3NpbmdsZV9pbmhlcml0YW5jZV9jaGlsZChQbGFubmVySW5mbyAqcm9v dCwgUmFuZ2VUYmxFbnRyeSAqcGFyZW50cnRlLAogCX0KIAllbHNlCiAJCWNoaWxkcnRlLT5pbmgg PSBmYWxzZTsKKwkvKgorCSAqIE1hcmsgY2hpbGQgdGFibGVzIGFzIG5vdCBiZWluZyBkaXJlY3Rs eSBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5LiAgVGhpcworCSAqIGFsbG93cyB0aGUgZXhlY3V0b3In cyBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkgdG8gY29udmVuaWVudGx5CisJICogaWRlbnRp ZnkgaXQgYXMgYW4gaW5oZXJpdGFuY2UgY2hpbGQgdGFibGUuCisJICovCisJY2hpbGRydGUtPmlu RnJvbUNsID0gZmFsc2U7CiAJY2hpbGRydGUtPnNlY3VyaXR5UXVhbHMgPSBOSUw7CiAKIAkvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9hbmFseXplLmMKaW5kZXggNDAwNjYzMjA5Mi4uYmNmNmZjZGRlMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5h bHl6ZS5jCkBAIC0zMjY3LDEwICszMjY3LDkgQEAgdHJhbnNmb3JtTG9ja2luZ0NsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsIFF1ZXJ5ICpxcnksIExvY2tpbmdDbGF1c2UgKmxjLAogCQkvKgogCQkg KiBMb2NrIGFsbCByZWd1bGFyIHRhYmxlcyB1c2VkIGluIHF1ZXJ5IGFuZCBpdHMgc3VicXVlcmll cy4gIFdlCiAJCSAqIGV4YW1pbmUgaW5Gcm9tQ2wgdG8gZXhjbHVkZSBhdXRvLWFkZGVkIFJURXMs IHBhcnRpY3VsYXJseSBORVcvT0xECi0JCSAqIGluIHJ1bGVzLiAgVGhpcyBpcyBhIGJpdCBvZiBh biBhYnVzZSBvZiBhIG1vc3RseS1vYnNvbGV0ZSBmbGFnLCBidXQKLQkJICogaXQncyBjb252ZW5p ZW50LiAgV2UgY2FuJ3QgcmVseSBvbiB0aGUgbmFtZXNwYWNlIG1lY2hhbmlzbSB0aGF0IGhhcwot CQkgKiBsYXJnZWx5IHJlcGxhY2VkIGluRnJvbUNsLCBzaW5jZSBmb3IgZXhhbXBsZSB3ZSBuZWVk IHRvIGxvY2sKLQkJICogYmFzZS1yZWxhdGlvbiBSVEVzIGV2ZW4gaWYgdGhleSBhcmUgbWFza2Vk IGJ5IHVwcGVyIGpvaW5zLgorCQkgKiBpbiBydWxlcy4gIFdlIGNhbid0IHJlbHkgb24gdGhlIG5h bWVzcGFjZSBtZWNoYW5pc20gc2luY2UgZm9yCisJCSAqIGV4YW1wbGUgd2UgbmVlZCB0byBsb2Nr IGJhc2UtcmVsYXRpb24gUlRFcyBldmVuIGlmIHRoZXkgYXJlIG1hc2tlZAorCQkgKiBieSB1cHBl ciBqb2lucy4KIAkJICovCiAJCWkgPSAwOwogCQlmb3JlYWNoKHJ0LCBxcnktPnJ0YWJsZSkKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAppbmRleCBmZTAwM2RlZDUwLi43MmYyYjBjMDRmIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC05OTQsMTEgKzk5NCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25DbWQKICAqCiAgKgkgIGluRnJvbUNsIG1hcmtzIHRob3NlIHJhbmdlIHZhcmlhYmxlcyB0aGF0 IGFyZSBsaXN0ZWQgaW4gdGhlIEZST00gY2xhdXNlLgogICoJICBJdCdzIGZhbHNlIGZvciBSVEVz IHRoYXQgYXJlIGFkZGVkIHRvIGEgcXVlcnkgYmVoaW5kIHRoZSBzY2VuZXMsIHN1Y2gKLSAqCSAg YXMgdGhlIE5FVyBhbmQgT0xEIHZhcmlhYmxlcyBmb3IgYSBydWxlLCBvciB0aGUgc3VicXVlcmll cyBvZiBhIFVOSU9OLgorICoJICBhcyB0aGUgTkVXIGFuZCBPTEQgdmFyaWFibGVzIGZvciBhIHJ1 bGUsIG9yIHRoZSBzdWJxdWVyaWVzIG9mIGEgVU5JT04sCisgKgkgIG9yIHRoZSBSVEVzIG9mIGlu aGVyaXRhbmNlIGNoaWxkIHRhYmxlcyB0aGF0IGFyZSBhZGRlZCBieSB0aGUgcGxhbm5lci4KICAq CSAgVGhpcyBmbGFnIGlzIG5vdCB1c2VkIGR1cmluZyBwYXJzaW5nIChleGNlcHQgaW4gdHJhbnNm b3JtTG9ja2luZ0NsYXVzZSwKICAqCSAgcS52Lik7IHRoZSBwYXJzZXIgbm93IHVzZXMgYSBzZXBh cmF0ZSAibmFtZXNwYWNlIiBkYXRhIHN0cnVjdHVyZSB0bwogICoJICBjb250cm9sIHZpc2liaWxp dHkuICBCdXQgaXQgaXMgbmVlZGVkIGJ5IHJ1bGV1dGlscy5jIHRvIGRldGVybWluZQotICoJICB3 aGV0aGVyIFJURXMgc2hvdWxkIGJlIHNob3duIGluIGRlY29tcGlsZWQgcXVlcmllcy4KKyAqCSAg d2hldGhlciBSVEVzIHNob3VsZCBiZSBzaG93biBpbiBkZWNvbXBpbGVkIHF1ZXJpZXMuICBJdCBp cyB1c2VkIGJ5IHRoZQorICoJICBleGVjdXRvciB0byBkZXRlcm1pbmUgdGhhdCBhIGdpdmVuIFJU RV9SRUxBVElPTiBlbnRyeSBiZWxvbmdzIHRvIGEgdGFibGUKKyAqCSAgZGlyZWN0bHkgbWVudGlv bmVkIGluIHRoZSBxdWVyeSBvciB0byBhIGNoaWxkIHRhYmxlIGFkZGVkIGJ5IHRoZSBwbGFubmVy LgorICoJICBJdCBuZWVkcyB0byBrbm93IHRoYXQgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBjaGls ZCB0YWJsZXMgaW4gYSBwbGFuIG5lZWQKKyAqCSAgdG8gYmUgbG9ja2VkLgogICoKICAqCSAgc2Vj dXJpdHlRdWFscyBpcyBhIGxpc3Qgb2Ygc2VjdXJpdHkgYmFycmllciBxdWFscyAoYm9vbGVhbiBl eHByZXNzaW9ucyksCiAgKgkgIHRvIGJlIHRlc3RlZCBpbiB0aGUgbGlzdGVkIG9yZGVyIGJlZm9y ZSByZXR1cm5pbmcgYSByb3cgZnJvbSB0aGUKLS0gCjIuMzUuMwoK --000000000000ea8dda0601f0ccd8 Content-Type: application/octet-stream; name="v43-0004-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Disposition: attachment; filename="v43-0004-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lktry4vg1 RnJvbSA5MGU5YTI5MzVhOTdmZjA4NWY1MjFhMzRkZmQ4NmI5ODAwNTQyYWIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0NSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQz IDQvNV0gRGVsYXkgbG9ja2luZyBvZiBjaGlsZCB0YWJsZXMgaW4gY2FjaGVkIHBsYW5zIHVudGls CiBFeGVjdXRvclN0YXJ0KCkKCkN1cnJlbnRseSwgR2V0Q2FjaGVkUGxhbigpIHRha2VzIGEgbG9j ayBvbiBhbGwgcmVsYXRpb25zIGNvbnRhaW5lZCBpbgphIGNhY2hlZCBwbGFuIGJlZm9yZSByZXR1 cm5pbmcgaXQgYXMgYSB2YWxpZCBwbGFuIHRvIGl0cyBjYWxsZXJzIGZvcgpleGVjdXRpb24uICBP bmUgZGlzYWR2YW50YWdlIGlzIHRoYXQgaWYgdGhlIHBsYW4gY29udGFpbnMgcGFydGl0aW9ucwp0 aGF0IGFyZSBwcnVuYWJsZSB3aXRoIGNvbmRpdGlvbnMgaW52b2x2aW5nIEVYVEVSTiBwYXJhbWV0 ZXJzIGFuZApvdGhlciBzdGFibGUgZXhwcmVzc2lvbnMgKGtub3duIGFzICJpbml0aWFsIHBydW5p bmciKSwgbWFueSBvZiB0aGVtCndvdWxkIGJlIGxvY2tlZCB1bm5lY2Vzc2FyaWx5LCBiZWNhdXNl IG9ubHkgdGhvc2UgdGhhdCBzdXJ2aXZlCmluaXRpYWwgcHJ1bmluZyBuZWVkIHRvIGhhdmUgYmVl biBsb2NrZWQuICBMb2NraW5nIGFsbCBwYXJ0aXRpb25zIHRoaXMKd2F5IGNhdXNlcyBzaWduaWZp Y2FudCBkZWxheSB3aGVuIHRoZXJlIGFyZSBtYW55IHBhcnRpdGlvbnMuICBOb3RlCnRoYXQgaW5p dGlhbCBwcnVuaW5nIG9jY3VycyBkdXJpbmcgZXhlY3V0b3IncyBpbml0aWFsaXphdGlvbiBvZiB0 aGUKcGxhbiwgdGhhdCBpcywgSW5pdFBsYW4oKS4KClRoaXMgY29tbWl0IHJlYXJyYW5nZXMgdGhp bmdzIHRvIG1vdmUgdGhlIGxvY2tpbmcgb2YgY2hpbGQgdGFibGVzCnJlZmVyZW5jZWQgaW4gYSBj YWNoZWQgcGxhbiB0byBvY2N1ciBkdXJpbmcgRXhlY0luaXROb2RlKCkgc28gdGhhdAppbml0aWFs IHBydW5pbmcgaW4gdGhlIEV4ZWNJbml0Tm9kZSgpIHN1YnJvdXRpbmVzIG9mIHRoZSBwbGFuIG5v ZGVzCnRoYXQgc3VwcG9ydCBwcnVuaW5nIGNhbiBlbGltaW5hdGUgYW55IGNoaWxkIHRhYmxlcyB0 aGF0IG5lZWQgbm90IGJlCnNjYW5uZWQgYW5kIHRodXMgbG9ja2VkLgoKVG8gZGV0ZXJtaW5lIHRo YXQgYSBnaXZlbiB0YWJsZSBpcyBhIGNoaWxkIHRhYmxlLApFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0 aW9uKCkgbm93IGxvb2tzIGF0IHRoZSBSVEUncyBpbkZyb21DbCBmaWVsZCwKd2hpY2ggaXMgb25s eSB0cnVlIGZvciB0YWJsZXMgdGhhdCBhcmUgZGlyZWN0bHkgbWVudGlvbmVkIGluIHRoZQpxdWVy eSBidXQgZmFsc2UgZm9yIGNoaWxkIHRhYmxlcy4gIE5vdGUgdGhhdCBhbnkgdGFibGVzIHdob3Nl IFJURXMnCmluRnJvbUNsIGlzIHRydWUgd291bGQgYWxyZWFkeSBoYXZlIGJlZW4gbG9ja2VkIGJ5 IEdldENhY2hlZFBsYW4oKSwKc28gbmVlZCBub3QgYmUgbG9ja2VkIGFnYWluIGR1cmluZyBleGVj dXRpb24uCgpJZiB0aGUgbG9ja2luZyBvZiBjaGlsZCB0YWJsZXMgY2F1c2VzIHRoZSBDYWNoZWRQ bGFuIHRvIGdvIHN0YWxlLCB0aGF0CmlzLCBpdHMgaXNfdmFsaWQgc2V0IHRvIGZhbHNlIGJ5IFBs YW5DYWNoZVJlbENhbGxiYWNrKCkgd2hlbiBhbgppbnZhbGlkYXRpb24gbWVzc2FnZSBtYXRjaGlu ZyBzb21lIGNoaWxkIHRhYmxlIGNvbnRhaW5lZCBpbiB0aGUgcGxhbgppcyBwcm9jZXNzZWQsIEV4 ZWNJbml0Tm9kZSgpIGFiYW5kb25zIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUKcmVtYWluaW5n IG5vZGVzIGluIHRoZSBwbGFuIHRyZWUuICBJbiB0aGF0IGNhc2UsIEluaXRQbGFuKCkgcmV0dXJu cwphZnRlciBzZXR0aW5nIFF1ZXJ5RGVzYy5wbGFuc3RhdGUgdG8gTlVMTCB0byBpbmRpY2F0ZSB0 byB0aGUgY2FsbGVyCnRoYXQgbm8gZXhlY3V0aW9uIGlzIHBvc3NpYmxlIHdpdGggdGhlIHBsYW4g dHJlZSBhcyBpcy4gIEFsc28sCkV4ZWN1dG9yU3RhcnQoKSBub3cgcmV0dXJucyB0cnVlIG9yIGZh bHNlIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90ClF1ZXJ5RGVzYy5wbGFuc3RhdGUgcG9pbnRz IHRvIGEgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIFBsYW5TdGF0ZQp0cmVlLiAgQ2FsbCBzaXRl cyB0aGF0IHVzZSBHZXRDYWNoZWRQbGFuKCkgdG8gZ2V0IHRoZSBwbGFuIHRyZWVzIHRvCnBhc3Mg dG8gdGhlIGV4ZWN1dG9yIHNob3VsZCBub3cgYmUgcHJlcGFyZWQgdG8gcmV0cnkgaW4gdGhlIGNh c2VzCndoZXJlIEV4ZWN1dG9yU3RhcnQoKSByZXR1cm5zIGZhbHNlLgoKR2l2ZW4gdGhpcyBuZXcg YmVoYXZpb3IsIFBvcnRhbFN0YXJ0KCkgbm93IG11c3QgYWx3YXlzIHBlcmZvcm0KRXhlY3V0b3JT dGFydCgpIHRvIGJlIGFibGUgdG8gZHJvcCBhbmQgcmVjcmVhdGUgY2FjaGVkIHBsYW5zIGlmCm5l ZWRlZCwgd2hpY2ggaXMgY3VycmVudGx5IG9ubHkgZG9uZSBzbyBmb3Igc2luZ2xlLXF1ZXJ5IHBv cnRhbHMuCkZvciBtdWx0aS1xdWVyeSBwb3J0YWxzLCB0aGUgUXVlcnlEZXNjcyB0aGF0IGFyZSBu b3cgY3JlYXRlZCBkdXJpbmcKUG9ydGFsU3RhcnQoKSBhcmUgcmVtZW1iZXJlZCBpbiBhIG5ldyBM aXN0IGZpZWxkIG9mIFBvcnRhbCBjYWxsZWQKJ3FkZXNjcycgYW5kIGFsbG9jYXRlZCBpbiBhIG5l dyBtZW1vcnkgY29udGV4dCAncXVlcnlDb250ZXh0Jy4KUG9ydGFsUnVuTXVsdGkoKSBub3cgc2lt cGx5IHBlcmZvcm1zIEV4ZWN1dG9yUnVuKCkgb24gdGhlClF1ZXJ5RGVzY3MgZm91bmQgaW4gJ3Fk ZXNjcycuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBK0hpd3FGR2tNU2dlNlRn QzlLUXpkZTBvaHBBeWNMUXVWN29vaXRFRXBiS0IwT19tZ0BtYWlsLmdtYWlsLmNvbQotLS0KIGNv bnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jICAgICAgICAgICB8ICAxMiArLQogLi4u L3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAgIHwgIDEyICstCiBjb250 cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgICAgICAgfCAgIDQgKwogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvY29weXRvLmMgICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jICAgICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgICB8IDE0NCArKysrKy0tLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMv YmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMgICAgICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyAgICAgICAgICAgICB8ICAyNCArLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAgIHwgIDMyICstCiBzcmMvYmFj a2VuZC9leGVjdXRvci9SRUFETUUgICAgICAgICAgICAgICAgICAgfCAgMzkgKysKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAgICAgICAgICAgICB8ICA5NiArKysrLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgICAgICAgIHwgIDE4ICstCiBzcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgICAgICAgICAgfCAgMTQgKwogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMgICAgICAgICAgIHwgIDIwICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjVXRpbHMuYyAgICAgICAgICAgICAgfCAgNjMgKysrLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQWdnLmMgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgICAgICAgIHwgIDI1ICsrCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwQW5kLmMgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVCaXRtYXBPci5jICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUN1c3RvbS5jICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVGb3JlaWduc2Nhbi5jICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlR2F0aGVyLmMgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdhdGhlck1lcmdlLmMgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVH cm91cC5jICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFz aC5jICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hq b2luLmMgICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1l bnRhbFNvcnQuYyAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5 c2Nhbi5jICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4u YyAgICAgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMgICAg ICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jICAg ICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYyAgICAg ICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyAgICAgICAg ICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jICAgICAg ICB8ICAyNSArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jICAgICAgICAg IHwgICA0ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8 ICAgNyArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYyAgICAgICAgICAgfCAg IDQgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYyAgICAgICAgIHwgICAy ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jICAgICB8ICAgNCAr CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMgICAgICAgICAgICAgfCAgIDIgKwog c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYyAgICAgICAgIHwgICAyICsKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAgICAgICAgICB8ICAgMiArCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYyAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYyAgICAgICB8ICAgMiArCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYyAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVVbmlxdWUuYyAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivc3BpLmMgICAgICAgICAgICAgICAgICAgIHwgIDUxICsrLQogc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2xtZ3IuYyAgICAgICAgICAgICAgIHwgIDQ1ICsrKwogc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgIDE5ICstCiBzcmMvYmFja2VuZC90Y29wL3Bx dWVyeS5jICAgICAgICAgICAgICAgICAgICAgfCAzNDQgKysrKysrKysrLS0tLS0tLS0tCiBzcmMv YmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyAgICAgICAgICAgfCAgMjEgKysKIHNyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAgICAgICAgICB8IDE0OSArKystLS0tLQog c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgICAgICAgICAgIHwgICA5ICsKIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCAgICAgICAgICAgICAgICB8ICAgNyArLQogc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAgICAgICAgICAgICAgIHwgICA0ICsKIHNyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAgICB8ICAxOSArLQogc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNs dWRlL3N0b3JhZ2UvbG1nci5oICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS90Y29wL3BxdWVyeS5oICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRl L3V0aWxzL2xzeXNjYWNoZS5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91 dGlscy9wbGFuY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgMTQgKwogc3JjL2luY2x1ZGUvdXRp bHMvcG9ydGFsLmggICAgICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy90ZXN0L21vZHVsZXMv ZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlICAgICB8ICAgMyArLQogLi4uL21vZHVsZXMvZGVsYXlf ZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jIHwgIDY3ICsrKy0KIC4uLi9leHBlY3RlZC9jYWNo ZWQtcGxhbi1yZXBsYW4ub3V0ICAgICAgICAgICB8IDE1NiArKysrKysrKwogLi4uL3NwZWNzL2Nh Y2hlZC1wbGFuLXJlcGxhbi5zcGVjICAgICAgICAgICAgIHwgIDYxICsrKysKIDczIGZpbGVzIGNo YW5nZWQsIDEyNTEgaW5zZXJ0aW9ucygrKSwgNDEwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1w bGFuLXJlcGxhbi5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5 X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYwoKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jIGIvY29udHJpYi9hdXRvX2V4cGxhaW4v YXV0b19leHBsYWluLmMKaW5kZXggYzNhYzI3YWU5OS4uYTA2MzBkNzk0NCAxMDA2NDQKLS0tIGEv Y29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKKysrIGIvY29udHJpYi9hdXRvX2V4 cGxhaW4vYXV0b19leHBsYWluLmMKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIEV4ZWN1dG9yUnVu X2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yUnVuID0gTlVMTDsKIHN0YXRpYyBFeGVjdXRvckZpbmlz aF9ob29rX3R5cGUgcHJldl9FeGVjdXRvckZpbmlzaCA9IE5VTEw7CiBzdGF0aWMgRXhlY3V0b3JF bmRfaG9va190eXBlIHByZXZfRXhlY3V0b3JFbmQgPSBOVUxMOwogCi1zdGF0aWMgdm9pZCBleHBs YWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOworc3Rh dGljIGJvb2wgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKTsKIHN0YXRpYyB2b2lkIGV4cGxhaW5fRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVy eURlc2MsCiAJCQkJCQkJCVNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLAogCQkJCQkJCQl1aW50NjQg Y291bnQsIGJvb2wgZXhlY3V0ZV9vbmNlKTsKQEAgLTI1OCw5ICsyNTgsMTEgQEAgX1BHX2luaXQo dm9pZCkKIC8qCiAgKiBFeGVjdXRvclN0YXJ0IGhvb2s6IHN0YXJ0IHVwIGxvZ2dpbmcgaWYgbmVl ZGVkCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogZXhwbGFpbl9FeGVjdXRvclN0YXJ0 KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogeworCWJvb2wJcGxhbl92YWxpZDsK KwogCS8qCiAJICogQXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHRvcC1sZXZlbCBzdGF0ZW1lbnQs IGRlY2lkZSB3aGV0aGVyIHdlJ2xsCiAJICogc2FtcGxlIHRoaXMgc3RhdGVtZW50LiAgSWYgbmVz dGVkLXN0YXRlbWVudCBleHBsYWluaW5nIGlzIGVuYWJsZWQsCkBAIC0yOTYsOSArMjk4LDkgQEAg ZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQog CX0KIAogCWlmIChwcmV2X0V4ZWN1dG9yU3RhcnQpCi0JCXByZXZfRXhlY3V0b3JTdGFydChxdWVy eURlc2MsIGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSBwcmV2X0V4ZWN1dG9yU3RhcnQocXVlcnlE ZXNjLCBlZmxhZ3MpOwogCWVsc2UKLQkJc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2Ms IGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVz YywgZWZsYWdzKTsKIAogCWlmIChhdXRvX2V4cGxhaW5fZW5hYmxlZCgpKQogCXsKQEAgLTMxNiw2 ICszMTgsOCBAQCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGlu dCBlZmxhZ3MpCiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIAkJfQogCX0KKwor CXJldHVybiBwbGFuX3ZhbGlkOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0 X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgYi9jb250cmliL3BnX3N0YXRfc3RhdGVt ZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwppbmRleCA1NWI5NTdkMjUxLi4xMTYwYTczMjZhIDEw MDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMu YworKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwpA QCAtMzI1LDcgKzMyNSw3IEBAIHN0YXRpYyBQbGFubmVkU3RtdCAqcGdzc19wbGFubmVyKFF1ZXJ5 ICpwYXJzZSwKIAkJCQkJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAkJCQkJCQkJIGlu dCBjdXJzb3JPcHRpb25zLAogCQkJCQkJCQkgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcyk7Ci1z dGF0aWMgdm9pZCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBl ZmxhZ3MpOworc3RhdGljIGJvb2wgcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCBpbnQgZWZsYWdzKTsKIHN0YXRpYyB2b2lkIHBnc3NfRXhlY3V0b3JSdW4oUXVlcnlEZXNj ICpxdWVyeURlc2MsCiAJCQkJCQkJIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLAogCQkJCQkJCSB1 aW50NjQgY291bnQsIGJvb2wgZXhlY3V0ZV9vbmNlKTsKQEAgLTk2MywxMyArOTYzLDE1IEBAIHBn c3NfcGxhbm5lcihRdWVyeSAqcGFyc2UsCiAvKgogICogRXhlY3V0b3JTdGFydCBob29rOiBzdGFy dCB1cCB0cmFja2luZyBpZiBuZWVkZWQKICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBw Z3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CisJ Ym9vbAlwbGFuX3ZhbGlkOworCiAJaWYgKHByZXZfRXhlY3V0b3JTdGFydCkKLQkJcHJldl9FeGVj dXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxpZCA9IHByZXZfRXhlY3V0 b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAJZWxzZQotCQlzdGFuZGFyZF9FeGVjdXRvclN0 YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxpZCA9IHN0YW5kYXJkX0V4ZWN1dG9y U3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCiAJLyoKIAkgKiBJZiBxdWVyeSBoYXMgcXVlcnlJ ZCB6ZXJvLCBkb24ndCB0cmFjayBpdC4gIFRoaXMgcHJldmVudHMgZG91YmxlCkBAIC05OTIsNiAr OTk0LDggQEAgcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZs YWdzKQogCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiAJCX0KIAl9CisKKwlyZXR1 cm4gcGxhbl92YWxpZDsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKaW5k ZXggYzVjYWRhNTVmYi4uMWVkZDRjM2YxNyAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19m ZHcvcG9zdGdyZXNfZmR3LmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3 LmMKQEAgLTI2NTgsNyArMjY1OCwxMSBAQCBwb3N0Z3Jlc0JlZ2luRGlyZWN0TW9kaWZ5KEZvcmVp Z25TY2FuU3RhdGUgKm5vZGUsIGludCBlZmxhZ3MpCiAJLyogR2V0IGluZm8gYWJvdXQgZm9yZWln biB0YWJsZS4gKi8KIAlydGluZGV4ID0gbm9kZS0+cmVzdWx0UmVsSW5mby0+cmlfUmFuZ2VUYWJs ZUluZGV4OwogCWlmIChmc3BsYW4tPnNjYW4uc2NhbnJlbGlkID09IDApCisJewogCQlkbXN0YXRl LT5yZWwgPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIHJ0aW5kZXgsIGVmbGFncyk7CisJ CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm47CisJfQogCWVsc2UK IAkJZG1zdGF0ZS0+cmVsID0gbm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uOwogCXRhYmxlID0g R2V0Rm9yZWlnblRhYmxlKFJlbGF0aW9uR2V0UmVsaWQoZG1zdGF0ZS0+cmVsKSk7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHl0by5jCmluZGV4IDllNGIyNDM3YTUuLjJiMGQwYThlYmQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0 by5jCkBAIC01NTgsNyArNTU4LDggQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAog CQkoKERSX2NvcHkgKikgZGVzdCktPmNzdGF0ZSA9IGNzdGF0ZTsKIAogCQkvKiBDcmVhdGUgYSBR dWVyeURlc2MgcmVxdWVzdGluZyBubyBvdXRwdXQgKi8KLQkJY3N0YXRlLT5xdWVyeURlc2MgPSBD cmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCWNzdGF0ZS0+cXVl cnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsCisJCQkJCQkJCQkJCXBzdGF0ZS0+ cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCQkJ CQlJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwpAQCAt NTY4LDcgKzU2OSwxMiBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCSAqCiAJ CSAqIEV4ZWN1dG9yU3RhcnQgY29tcHV0ZXMgYSByZXN1bHQgdHVwZGVzYyBmb3IgdXMKIAkJICov Ci0JCUV4ZWN1dG9yU3RhcnQoY3N0YXRlLT5xdWVyeURlc2MsIDApOworCQl7CisJCQlib29sCQlw bGFuX3ZhbGlkIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKworCQkJcGxhbl92YWxpZCA9IEV4 ZWN1dG9yU3RhcnQoY3N0YXRlLT5xdWVyeURlc2MsIDApOworCQkJQXNzZXJ0KHBsYW5fdmFsaWQp OworCQl9CiAKIAkJdHVwRGVzYyA9IGNzdGF0ZS0+cXVlcnlEZXNjLT50dXBEZXNjOwogCX0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jcmVhdGVhcy5jCmluZGV4IGU5MTkyMGNhMTQuLmJiMzU5YmIxOTAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYwpAQCAtMzI1LDEyICszMjUsMTcgQEAgRXhlY0NyZWF0ZVRhYmxlQXMo UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVUYWJsZUFzU3RtdCAqc3RtdCwKIAkJVXBkYXRlQWN0 aXZlU25hcHNob3RDb21tYW5kSWQoKTsKIAogCQkvKiBDcmVhdGUgYSBRdWVyeURlc2MsIHJlZGly ZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQkJcXVlcnlEZXNjID0gQ3Jl YXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQlxdWVyeURlc2MgPSBD cmVhdGVRdWVyeURlc2MocGxhbiwgTlVMTCwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCiAJCQkJCQkJ CQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCQlkZXN0LCBw YXJhbXMsIHF1ZXJ5RW52LCAwKTsKIAogCQkvKiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFy ZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCi0JCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBH ZXRJbnRvUmVsRUZsYWdzKGludG8pKTsKKwkJeworCQkJYm9vbAkJcGxhbl92YWxpZCBQR19VU0VE X0ZPUl9BU1NFUlRTX09OTFk7CisKKwkJCXBsYW5fdmFsaWQgPSBFeGVjdXRvclN0YXJ0KHF1ZXJ5 RGVzYywgR2V0SW50b1JlbEVGbGFncyhpbnRvKSk7CisJCQlBc3NlcnQocGxhbl92YWxpZCk7CisJ CX0KIAogCQkvKiBydW4gdGhlIHBsYW4gdG8gY29tcGxldGlvbiAqLwogCQlFeGVjdXRvclJ1bihx dWVyeURlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYwppbmRleCA4NTcwYjE0ZjYyLi45NTRkODNmYjBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5j CkBAIC0zOTMsNiArMzkzLDcgQEAgRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1 cnNvck9wdGlvbnMsCiAJZWxzZQogCXsKIAkJUGxhbm5lZFN0bXQgKnBsYW47CisJCVF1ZXJ5RGVz YyAgICpxdWVyeURlc2M7CiAJCWluc3RyX3RpbWUJcGxhbnN0YXJ0LAogCQkJCQlwbGFuZHVyYXRp b247CiAJCUJ1ZmZlclVzYWdlIGJ1ZnVzYWdlX3N0YXJ0LApAQCAtNDE1LDEyICs0MTYsODkgQEAg RXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCQlCdWZm ZXJVc2FnZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3Rh cnQpOwogCQl9CiAKKwkJcXVlcnlEZXNjID0gRXhwbGFpblF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBx dWVyeVN0cmluZywgaW50bywgZXMsCisJCQkJCQkJCQkgcGFyYW1zLCBxdWVyeUVudik7CisJCUFz c2VydChxdWVyeURlc2MpOworCiAJCS8qIHJ1biBpdCAoaWYgbmVlZGVkKSBhbmQgcHJvZHVjZSBv dXRwdXQgKi8KLQkJRXhwbGFpbk9uZVBsYW4ocGxhbiwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBw YXJhbXMsIHF1ZXJ5RW52LAorCQlFeHBsYWluT25lUGxhbihxdWVyeURlc2MsIGludG8sIGVzLCBx dWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKIAkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVz LT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOwogCX0KIH0KIAorLyoKKyAqIEV4cGxhaW5R dWVyeURlc2MKKyAqCQlTZXQgdXAgUXVlcnlEZXNjIGZvciBFWFBMQUlOaW5nIGEgZ2l2ZW4gcGxh bgorICoKKyAqIFRoaXMgcmV0dXJucyBOVUxMIGlmIGNwbGFuIGlzIGZvdW5kIHRvIGJlIG5vIGxv bmdlciB2YWxpZC4KKyAqLworUXVlcnlEZXNjICoKK0V4cGxhaW5RdWVyeURlc2MoUGxhbm5lZFN0 bXQgKnN0bXQsIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCSBjb25zdCBjaGFyICpxdWVyeVN0cmlu ZywgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKKwkJCQkgUGFyYW1MaXN0SW5m byBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQoreworCVF1ZXJ5RGVzYyAgKnF1 ZXJ5RGVzYzsKKwlEZXN0UmVjZWl2ZXIgKmRlc3Q7CisJaW50CQkJZWZsYWdzOworCWludAkJCWlu c3RydW1lbnRfb3B0aW9uID0gMDsKKworCS8qCisJICogTm9ybWFsbHkgd2UgZGlzY2FyZCB0aGUg cXVlcnkncyBvdXRwdXQsIGJ1dCBpZiBleHBsYWluaW5nIENSRUFURSBUQUJMRQorCSAqIEFTLCB3 ZSdkIGJldHRlciB1c2UgdGhlIGFwcHJvcHJpYXRlIHR1cGxlIHJlY2VpdmVyLgorCSAqLworCWlm IChpbnRvKQorCQlkZXN0ID0gQ3JlYXRlSW50b1JlbERlc3RSZWNlaXZlcihpbnRvKTsKKwllbHNl CisJCWRlc3QgPSBOb25lX1JlY2VpdmVyOworCisJaWYgKGVzLT5hbmFseXplICYmIGVzLT50aW1p bmcpCisJCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfVElNRVI7CisJZWxzZSBpZiAo ZXMtPmFuYWx5emUpCisJCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfUk9XUzsKKwor CWlmIChlcy0+YnVmZmVycykKKwkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9CVUZG RVJTOworCWlmIChlcy0+d2FsKQorCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1dB TDsKKworCS8qCisJICogVXNlIGEgc25hcHNob3Qgd2l0aCBhbiB1cGRhdGVkIGNvbW1hbmQgSUQg dG8gZW5zdXJlIHRoaXMgcXVlcnkgc2VlcworCSAqIHJlc3VsdHMgb2YgYW55IHByZXZpb3VzbHkg ZXhlY3V0ZWQgcXVlcmllcy4KKwkgKi8KKwlQdXNoQ29waWVkU25hcHNob3QoR2V0QWN0aXZlU25h cHNob3QoKSk7CisJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKKworCS8qIENyZWF0 ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5ICovCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlE ZXNjKHN0bXQsIGNwbGFuLCBxdWVyeVN0cmluZywKKwkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3Qo KSwgSW52YWxpZFNuYXBzaG90LAorCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0 cnVtZW50X29wdGlvbik7CisKKwkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMgKi8KKwlpZiAo ZXMtPmFuYWx5emUpCisJCWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRp b24gZmxhZ3MgKi8KKwllbHNlCisJCWVmbGFncyA9IEVYRUNfRkxBR19FWFBMQUlOX09OTFk7CisJ aWYgKGVzLT5nZW5lcmljKQorCQllZmxhZ3MgfD0gRVhFQ19GTEFHX0VYUExBSU5fR0VORVJJQzsK KwlpZiAoaW50bykKKwkJZWZsYWdzIHw9IEdldEludG9SZWxFRmxhZ3MoaW50byk7CisKKwkvKgor CSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24u ICBBIGNhY2hlZCBwbGFuCisJICogbWF5IGdldCBpbnZhbGlkYXRlZCBhcyB3ZSdyZSBkb2luZyB0 aGF0LgorCSAqLworCWlmICghRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncykpCisJewor CQkvKiBDbGVhbiB1cC4gKi8KKwkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKKwkJRnJlZVF1ZXJ5 RGVzYyhxdWVyeURlc2MpOworCQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQlyZXR1cm4gTlVMTDsK Kwl9CisKKwlyZXR1cm4gcXVlcnlEZXNjOworfQorCiAvKgogICogRXhwbGFpbk9uZVV0aWxpdHkg LQogICoJICBwcmludCBvdXQgdGhlIGV4ZWN1dGlvbiBwbGFuIGZvciBvbmUgdXRpbGl0eSBzdGF0 ZW1lbnQKQEAgLTUyNCwyOSArNjAyLDE2IEBAIEV4cGxhaW5PbmVVdGlsaXR5KE5vZGUgKnV0aWxp dHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogICogdG8gY2FsbCBp dC4KICAqLwogdm9pZAotRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJ bnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAorRXhwbGFpbk9uZVBsYW4oUXVlcnlE ZXNjICpxdWVyeURlc2MsCisJCQkgICBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVz LAogCQkJICAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAog CQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5k dXJhdGlvbiwKIAkJCSAgIGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSkKIHsKLQlEZXN0UmVj ZWl2ZXIgKmRlc3Q7Ci0JUXVlcnlEZXNjICAqcXVlcnlEZXNjOwogCWluc3RyX3RpbWUJc3RhcnR0 aW1lOwogCWRvdWJsZQkJdG90YWx0aW1lID0gMDsKLQlpbnQJCQllZmxhZ3M7Ci0JaW50CQkJaW5z dHJ1bWVudF9vcHRpb24gPSAwOwotCi0JQXNzZXJ0KHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSAh PSBDTURfVVRJTElUWSk7CiAKLQlpZiAoZXMtPmFuYWx5emUgJiYgZXMtPnRpbWluZykKLQkJaW5z dHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9USU1FUjsKLQllbHNlIGlmIChlcy0+YW5hbHl6 ZSkKLQkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9ST1dTOwotCi0JaWYgKGVzLT5i dWZmZXJzKQotCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX0JVRkZFUlM7Ci0JaWYg KGVzLT53YWwpCi0JCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfV0FMOworCUFzc2Vy dChxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSk7CiAK IAkvKgogCSAqIFdlIGFsd2F5cyBjb2xsZWN0IHRpbWluZyBmb3IgdGhlIGVudGlyZSBzdGF0ZW1l bnQsIGV2ZW4gd2hlbiBub2RlLWxldmVsCkBAIC01NTUsNDAgKzYyMCw2IEBAIEV4cGxhaW5PbmVQ bGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0 YXRlICplcywKIAkgKi8KIAlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0dGltZSk7CiAKLQkv KgotCSAqIFVzZSBhIHNuYXBzaG90IHdpdGggYW4gdXBkYXRlZCBjb21tYW5kIElEIHRvIGVuc3Vy ZSB0aGlzIHF1ZXJ5IHNlZXMKLQkgKiByZXN1bHRzIG9mIGFueSBwcmV2aW91c2x5IGV4ZWN1dGVk IHF1ZXJpZXMuCi0JICovCi0JUHVzaENvcGllZFNuYXBzaG90KEdldEFjdGl2ZVNuYXBzaG90KCkp OwotCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7Ci0KLQkvKgotCSAqIE5vcm1hbGx5 IHdlIGRpc2NhcmQgdGhlIHF1ZXJ5J3Mgb3V0cHV0LCBidXQgaWYgZXhwbGFpbmluZyBDUkVBVEUg VEFCTEUKLQkgKiBBUywgd2UnZCBiZXR0ZXIgdXNlIHRoZSBhcHByb3ByaWF0ZSB0dXBsZSByZWNl aXZlci4KLQkgKi8KLQlpZiAoaW50bykKLQkJZGVzdCA9IENyZWF0ZUludG9SZWxEZXN0UmVjZWl2 ZXIoaW50byk7Ci0JZWxzZQotCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKLQotCS8qIENyZWF0ZSBh IFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5ICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNj KHBsYW5uZWRzdG10LCBxdWVyeVN0cmluZywKLQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwg SW52YWxpZFNuYXBzaG90LAotCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVt ZW50X29wdGlvbik7Ci0KLQkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMgKi8KLQlpZiAoZXMt PmFuYWx5emUpCi0JCWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24g ZmxhZ3MgKi8KLQllbHNlCi0JCWVmbGFncyA9IEVYRUNfRkxBR19FWFBMQUlOX09OTFk7Ci0JaWYg KGVzLT5nZW5lcmljKQotCQllZmxhZ3MgfD0gRVhFQ19GTEFHX0VYUExBSU5fR0VORVJJQzsKLQlp ZiAoaW50bykKLQkJZWZsYWdzIHw9IEdldEludG9SZWxFRmxhZ3MoaW50byk7Ci0KLQkvKiBjYWxs IEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCi0JRXhl Y3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7Ci0KIAkvKiBFeGVjdXRlIHRoZSBwbGFuIGZv ciBzdGF0aXN0aWNzIGlmIGFza2VkIGZvciAqLwogCWlmIChlcy0+YW5hbHl6ZSkKIAl7CkBAIC00 ODY1LDYgKzQ4OTYsMTcgQEAgRXhwbGFpbkR1bW15R3JvdXAoY29uc3QgY2hhciAqb2JqdHlwZSwg Y29uc3QgY2hhciAqbGFiZWxuYW1lLCBFeHBsYWluU3RhdGUgKmVzKQogCX0KIH0KIAorLyoKKyAq IERpc2NhcmQgb3V0cHV0IGJ1ZmZlciBmb3IgYSBmcmVzaCByZXN0YXJ0LgorICovCit2b2lkCitF eHBsYWluUmVzZXRPdXRwdXQoRXhwbGFpblN0YXRlICplcykKK3sKKwlBc3NlcnQoZXMtPnN0cik7 CisJcmVzZXRTdHJpbmdJbmZvKGVzLT5zdHIpOworCUV4cGxhaW5CZWdpbk91dHB1dChlcyk7Cit9 CisKIC8qCiAgKiBFbWl0IHRoZSBzdGFydC1vZi1vdXRwdXQgYm9pbGVycGxhdGUuCiAgKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHRlbnNpb24uYwppbmRleCA0Y2M5OTRjYTMxLi40NzdjMjk5MTEyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHRlbnNpb24uYwpAQCAtNzk1LDEzICs3OTUsMTYgQEAgZXhlY3V0ZV9zcWxfc3Ry aW5nKGNvbnN0IGNoYXIgKnNxbCkKIAkJCWlmIChzdG10LT51dGlsaXR5U3RtdCA9PSBOVUxMKQog CQkJewogCQkJCVF1ZXJ5RGVzYyAgKnFkZXNjOworCQkJCWJvb2wJCXBsYW5fdmFsaWQgUEdfVVNF RF9GT1JfQVNTRVJUU19PTkxZOwogCiAJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwK KwkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCXNxbCwKIAkJCQkJCQkJCQlHZXRBY3RpdmVTbmFw c2hvdCgpLCBOVUxMLAogCQkJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwogCi0JCQkJRXhl Y3V0b3JTdGFydChxZGVzYywgMCk7CisJCQkJcGxhbl92YWxpZCA9IEV4ZWN1dG9yU3RhcnQocWRl c2MsIDApOworCQkJCUFzc2VydChwbGFuX3ZhbGlkKTsKIAkJCQlFeGVjdXRvclJ1bihxZGVzYywg Rm9yd2FyZFNjYW5EaXJlY3Rpb24sIDAsIHRydWUpOwogCQkJCUV4ZWN1dG9yRmluaXNoKHFkZXNj KTsKIAkJCQlFeGVjdXRvckVuZChxZGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9tYXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXggYWMy ZTc0ZmEzZi4uZmIwYjI5Mzg0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0 dmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDA4LDEyICs0 MDgsMTcgQEAgcmVmcmVzaF9tYXR2aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZlciAqZGVzdCwgUXVl cnkgKnF1ZXJ5LAogCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkvKiBDcmVh dGUgYSBRdWVyeURlc2MsIHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIg Ki8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcXVlcnlTdHJpbmcsCisJcXVl cnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIE5VTEwsIHF1ZXJ5U3RyaW5nLAogCQkJCQkJ CQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIE5V TEwsIE5VTEwsIDApOwogCiAJLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBs YW4gZm9yIGV4ZWN1dGlvbiAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKKwl7CisJ CWJvb2wJCXBsYW5fdmFsaWQgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOworCisJCXBsYW5fdmFs aWQgPSBFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7CisJCUFzc2VydChwbGFuX3ZhbGlkKTsK Kwl9CiAKIAkvKiBydW4gdGhlIHBsYW4gKi8KIAlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndh cmRTY2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3BvcnRhbGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwppbmRl eCA3M2VkN2FhMmYwLi5mZGNlNzJjOWE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9wb3J0YWxjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCkBA IC0xNDMsOSArMTQzLDE0IEBAIFBlcmZvcm1DdXJzb3JPcGVuKFBhcnNlU3RhdGUgKnBzdGF0ZSwg RGVjbGFyZUN1cnNvclN0bXQgKmNzdG10LCBQYXJhbUxpc3RJbmZvIHBhCiAJLyoKIAkgKiBTdGFy dCBleGVjdXRpb24sIGluc2VydGluZyBwYXJhbWV0ZXJzIGlmIGFueS4KIAkgKi8KLQlQb3J0YWxT dGFydChwb3J0YWwsIHBhcmFtcywgMCwgR2V0QWN0aXZlU25hcHNob3QoKSk7CisJeworCQlib29s CXBsYW5fdmFsaWQgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOworCisJCXBsYW5fdmFsaWQgPSBQ b3J0YWxTdGFydChwb3J0YWwsIHBhcmFtcywgMCwgR2V0QWN0aXZlU25hcHNob3QoKSk7CiAKLQlB c3NlcnQocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1NFTEVDVCk7CisJCUFzc2VydChw b3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUKTsKKwkJQXNzZXJ0KHBsYW5fdmFs aWQpOworCX0KIAogCS8qCiAJICogV2UncmUgZG9uZTsgdGhlIHF1ZXJ5IHdvbid0IGFjdHVhbGx5 IGJlIHJ1biB1bnRpbCBQZXJmb3JtUG9ydGFsRmV0Y2ggaXMKQEAgLTI0OSw2ICsyNTQsMTcgQEAg UGVyZm9ybVBvcnRhbENsb3NlKGNvbnN0IGNoYXIgKm5hbWUpCiAJUG9ydGFsRHJvcChwb3J0YWws IGZhbHNlKTsKIH0KIAorLyoKKyAqIFJlbGVhc2UgYSBwb3J0YWwncyBRdWVyeURlc2MuCisgKi8K K3ZvaWQKK1BvcnRhbFF1ZXJ5RmluaXNoKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQoreworCUV4ZWN1 dG9yRmluaXNoKHF1ZXJ5RGVzYyk7CisJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKKwlGcmVlUXVl cnlEZXNjKHF1ZXJ5RGVzYyk7Cit9CisKIC8qCiAgKiBQb3J0YWxDbGVhbnVwCiAgKgpAQCAtMjk1 LDkgKzMxMSw3IEBAIFBvcnRhbENsZWFudXAoUG9ydGFsIHBvcnRhbCkKIAkJCWlmIChwb3J0YWwt PnJlc293bmVyKQogCQkJCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gcG9ydGFsLT5yZXNvd25lcjsK IAotCQkJRXhlY3V0b3JGaW5pc2gocXVlcnlEZXNjKTsKLQkJCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVz Yyk7Ci0JCQlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7CisJCQlQb3J0YWxRdWVyeUZpbmlzaChx dWVyeURlc2MpOwogCiAJCQlDdXJyZW50UmVzb3VyY2VPd25lciA9IHNhdmVSZXNvdXJjZU93bmVy OwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKaW5kZXggMThmNzAzMTlmYy4uMDdmMDQyMTE4MiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMTgzLDYgKzE4Myw3IEBAIEV4ZWN1dGVRdWVyeShQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCXBhcmFtTEkgPSBFdmFsdWF0ZVBhcmFtcyhwc3RhdGUsIGVu dHJ5LCBzdG10LT5wYXJhbXMsIGVzdGF0ZSk7CiAJfQogCityZXBsYW46CiAJLyogQ3JlYXRlIGEg bmV3IHBvcnRhbCB0byBydW4gdGhlIHF1ZXJ5IGluICovCiAJcG9ydGFsID0gQ3JlYXRlTmV3UG9y dGFsKCk7CiAJLyogRG9uJ3QgZGlzcGxheSB0aGUgcG9ydGFsIGluIHBnX2N1cnNvcnMsIGl0IGlz IGZvciBpbnRlcm5hbCB1c2Ugb25seSAqLwpAQCAtMjUxLDkgKzI1MiwxNiBAQCBFeGVjdXRlUXVl cnkoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCX0KIAogCS8qCi0JICogUnVuIHRoZSBwb3J0YWwgYXMg YXBwcm9wcmlhdGUuCisJICogUnVuIHRoZSBwb3J0YWwgYXMgYXBwcm9wcmlhdGUuICBJZiB0aGUg cG9ydGFsIGNvbnRhaW5zIGEgY2FjaGVkIHBsYW4sIGl0CisJICogbXVzdCBiZSByZWNyZWF0ZWQg aWYgcG9ydGFsLT5wbGFuX3ZhbGlkIGlzIGZhbHNlIHdoaWNoIHRlbGxzIHRoYXQgdGhlCisJICog Y2FjaGVkIHBsYW4gd2FzIGZvdW5kIHRvIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCB3aGVuIGluaXRp YWxpemluZyBvbmUgb2YKKwkgKiB0aGUgcGxhbiB0cmVlcyBjb250YWluZWQgaW4gaXQuCiAJICov Ci0JUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbUxJLCBlZmxhZ3MsIEdldEFjdGl2ZVNuYXBzaG90 KCkpOworCWlmICghUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbUxJLCBlZmxhZ3MsIEdldEFjdGl2 ZVNuYXBzaG90KCkpKQorCXsKKwkJUG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKwkJZ290byBy ZXBsYW47CisJfQogCiAJKHZvaWQpIFBvcnRhbFJ1bihwb3J0YWwsIGNvdW50LCBmYWxzZSwgdHJ1 ZSwgZGVzdCwgZGVzdCwgcWMpOwogCkBAIC01NzQsNyArNTgyLDcgQEAgRXhwbGFpbkV4ZWN1dGVR dWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0 ZSAqZXMsCiB7CiAJUHJlcGFyZWRTdGF0ZW1lbnQgKmVudHJ5OwogCWNvbnN0IGNoYXIgKnF1ZXJ5 X3N0cmluZzsKLQlDYWNoZWRQbGFuICpjcGxhbjsKKwlDYWNoZWRQbGFuICpjcGxhbiA9IE5VTEw7 CiAJTGlzdAkgICAqcGxhbl9saXN0OwogCUxpc3RDZWxsICAgKnA7CiAJUGFyYW1MaXN0SW5mbyBw YXJhbUxJID0gTlVMTDsKQEAgLTYxOCw2ICs2MjYsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4 ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywK IAl9CiAKIAkvKiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgYWNxdWlyZSBhIHRyYW5zaWVudCByZWZj b3VudCAqLworcmVwbGFuOgogCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJj ZSwgcGFyYW1MSSwKIAkJCQkJCSAgQ3VycmVudFJlc291cmNlT3duZXIsIHF1ZXJ5RW52KTsKIApA QCAtNjM5LDggKzY0OCwyMSBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVj c3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJUGxhbm5lZFN0bXQg KnBzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0bXQsIHApOwogCiAJCWlmIChwc3RtdC0+Y29t bWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpCi0JCQlFeHBsYWluT25lUGxhbihwc3RtdCwgaW50bywg ZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwgcXVlcnlFbnYsCi0JCQkJCQkgICAmcGxhbmR1cmF0 aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7CisJCXsKKwkJCVF1ZXJ5RGVz YyAqcXVlcnlEZXNjOworCisJCQlxdWVyeURlc2MgPSBFeHBsYWluUXVlcnlEZXNjKHBzdG10LCBj cGxhbiwgcXVlcnlTdHJpbmcsCisJCQkJCQkJCQkJIGludG8sIGVzLCBwYXJhbUxJLCBxdWVyeUVu dik7CisJCQlpZiAocXVlcnlEZXNjID09IE5VTEwpCisJCQl7CisJCQkJRXhwbGFpblJlc2V0T3V0 cHV0KGVzKTsKKwkJCQlSZWxlYXNlQ2FjaGVkUGxhbihjcGxhbiwgQ3VycmVudFJlc291cmNlT3du ZXIpOworCQkJCWdvdG8gcmVwbGFuOworCQkJfQorCQkJRXhwbGFpbk9uZVBsYW4ocXVlcnlEZXNj LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLAorCQkJCQkJICAgcXVlcnlFbnYsICZw bGFuZHVyYXRpb24sCisJCQkJCQkgICAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSk7 CisJCX0KIAkJZWxzZQogCQkJRXhwbGFpbk9uZVV0aWxpdHkocHN0bXQtPnV0aWxpdHlTdG10LCBp bnRvLCBlcywgcXVlcnlfc3RyaW5nLAogCQkJCQkJCSAgcGFyYW1MSSwgcXVlcnlFbnYpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvUkVBRE1FCmluZGV4IDY3YTVjMTc2OWIuLmYwMzEyMzc2YzUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUK QEAgLTI4MCw2ICsyODAsMzkgQEAgYXJlIHR5cGljYWxseSByZXNldCB0byBlbXB0eSBvbmNlIHBl ciB0dXBsZS4gIFBlci10dXBsZSBjb250ZXh0cyBhcmUgdXN1YWxseQogYXNzb2NpYXRlZCB3aXRo IEV4cHJDb250ZXh0cywgYW5kIGNvbW1vbmx5IGVhY2ggUGxhblN0YXRlIG5vZGUgaGFzIGl0cyBv d24KIEV4cHJDb250ZXh0IHRvIGV2YWx1YXRlIGl0cyBxdWFsIGFuZCB0YXJnZXRsaXN0IGV4cHJl c3Npb25zIGluLgogCitSZWxhdGlvbiBMb2NraW5nCistLS0tLS0tLS0tLS0tLS0tCisKK05vcm1h bGx5LCB0aGUgZXhlY3V0b3IgZG9lcyBub3QgbG9jayBub24taW5kZXggcmVsYXRpb25zIGFwcGVh cmluZyBpbiBhIGdpdmVuCitwbGFuIHRyZWUgd2hlbiBpbml0aWFsaXppbmcgaXQgZm9yIGV4ZWN1 dGlvbiBpZiB0aGUgcGxhbiB0cmVlIGlzIGZyZXNobHkKK2NyZWF0ZWQsIHRoYXQgaXMsIG5vdCBk ZXJpdmVkIGZyb20gYSBDYWNoZWRQbGFuLiAgVGhlIHJlYXNvbiBmb3IgdGhhdCBpcyB0aGF0Cit0 aGUgbG9ja3MgbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiB0YWtlbiBkdXJpbmcgcGFyc2luZywgcmV3 cml0aW5nLCBhbmQgcGxhbm5pbmcKK29mIHRoZSBxdWVyeSBpbiB0aGF0IGNhc2UuICBJZiB0aGUg cGxhbiB0cmVlIGlzIGEgY2FjaGVkIG9uZSwgdGhlcmUgbWF5IHN0aWxsCitiZSB1bmxvY2tlZCBy ZWxhdGlvbnMgcHJlc2VudCBpbiB0aGUgcGxhbiB0cmVlLCBiZWNhdXNlIEdldENhY2hlZFBsYW4o KSBvbmx5Citsb2NrcyB0aGUgcmVsYXRpb25zIHRoYXQgd291bGQgYmUgcHJlc2VudCBpbiB0aGUg cXVlcnkncyByYW5nZSB0YWJsZSBiZWZvcmUKK3BsYW5uaW5nIG9jY3VycywgYnV0IG5vdCByZWxh dGlvbnMgdGhhdCB3b3VsZCBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIHJhbmdlCit0YWJsZSBkdXJp bmcgcGxhbm5pbmcuICBUaGlzIG1lYW5zIHRoYXQgaW5oZXJpdGFuY2UgY2hpbGQgdGFibGVzIHBy ZXNlbnQgaW4KK2EgY2FjaGVkIHBsYW4sIHdoaWNoIGFyZSBhZGRlZCB0byB0aGUgcXVlcnkncyBy YW5nZSB0YWJsZSBkdXJpbmcgcGxhbm5pbmcsCit3b3VsZCBub3QgaGF2ZSBiZWVuIGxvY2tlZCB3 aGVuIHRoZSBwbGFuIGVudGVycyB0aGUgZXhlY3V0b3IuCisKK0dldENhY2hlZFBsYW4oKSBwdW50 cyBvbiBsb2NraW5nIGNoaWxkIHRhYmxlcyBiZWNhdXNlIG5vdCBhbGwgbWF5IGFjdHVhbGx5IGJl CitzY2FubmVkIGR1cmluZyBhIGdpdmVuIGV4ZWN1dGlvbiBvZiB0aGUgcGxhbiBpZiB0aGUgY2hp bGQgdGFibGVzIGFyZSBwYXJ0aXRpb25zCit3aGljaCBtYXkgZ2V0IHBydW5lZCBhd2F5IGR1ZSB0 byBleGVjdXRvci1pbml0aWFsaXphdGlvbi10aW1lIHBydW5pbmcuICBTbyB0aGUKK2xvY2tpbmcg b2YgY2hpbGQgdGFibGVzIGlzIG1hZGUgdG8gd2FpdCB0aWxsIGV4ZWN1dGlvbi1pbml0aWFsaXph dGlvbi10aW1lLAord2hpY2ggb2NjdXJzIGR1cmluZyBFeGVjSW5pdE5vZGUoKSBvbiB0aGUgcGxh biBub2RlcyBjb250YWluaW5nIHRoZSBjaGlsZAordGFibGVzLgorCitTbywgdGhlcmUncyBhIHRp bWUgd2luZG93IGR1cmluZyB3aGljaCBhIGNhY2hlZCBwbGFuIHRyZWUgY291bGQgZ28gc3RhbGUK K2lmIGl0IGNvbnRhaW5zIGNoaWxkIHRhYmxlcywgYmVjYXVzZSB0aGV5IGNvdWxkIGdldCBjaGFu Z2VkIGluIG90aGVyIGJhY2tlbmRzCitiZWZvcmUgRXhlY0luaXROb2RlKCkgZ2V0cyBhIGxvY2sg b24gdGhlbS4gIFRoaXMgbWVhbnMgdGhlIGV4ZWN1dG9yIG5vdyBtdXN0CitjaGVjayB0aGUgdmFs aWRpdHkgb2YgdGhlIHBsYW4gdHJlZSBldmVyeSB0aW1lIGl0IHRha2VzIGEgbG9jayBvbiBhIGNo aWxkCit0YWJsZSBjb250YWluZWQgaW4gdGhlIHRyZWUgKGFmdGVyIGV4ZWN1dG9yLWluaXRpYWxp emF0aW9uLXBydW5pbmcsIGlmIGFueSwKK2hhcyBiZWVuIHBlcmZvcm1lZCksIHdoaWNoIGl0IGRv ZXMgYnkgbG9va2luZyBhdCBDYWNoZWRQbGFuLmlzX3ZhbGlkIG9mIHRoZQorQ2FjaGVkUGxhbiBw YXNzZWQgdG8gaXQuICBJZiB0aGUgcGxhbiB0cmVlIGlzIGluZGVlZCBzdGFsZSAoaXNfdmFsaWQ9 ZmFsc2UpLAordGhlIGV4ZWN1dG9yIG11c3QgZ2l2ZSB1cCBjb250aW51aW5nIHRvIGluaXRpYWxp emUgaXQgYW55IGZ1cnRoZXIgYW5kIHJldHVybgordG8gdGhlIGNhbGxlciBsZXR0aW5nIGl0IGtu b3cgdGhhdCB0aGUgZXhlY3V0aW9uIG11c3QgYmUgcmV0cmllZCB3aXRoIGEgbmV3CitwbGFuIHRy ZWUuCisKIAogUXVlcnkgUHJvY2Vzc2luZyBDb250cm9sIEZsb3cKIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCkBAIC0zMTYsNiArMzQ5LDEyIEBAIFRoaXMgaXMgYSBza2V0Y2ggb2YgY29u dHJvbCBmbG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAKIAlGcmVlUXVlcnlEZXNjCiAK K0FzIG1lbnRpb25lZCBpbiB0aGUgIlJlbGF0aW9uIExvY2tpbmciIHNlY3Rpb24sIGlmIHRoZSBw bGFuIHRyZWUgaXMgZm91bmQgdG8KK2JlIHN0YWxlIGR1cmluZyBvbmUgb2YgdGhlIHJlY3Vyc2l2 ZSBjYWxscyBvZiBFeGVjSW5pdE5vZGUoKSBhZnRlciB0YWtpbmcgYQorbG9jayBvbiBhIGNoaWxk IHRhYmxlLCB0aGUgY29udHJvbCBpcyBpbW1tZWRpYXRlbHkgcmV0dXJuZWQgdG8gdGhlIGNhbGxl ciBvZgorRXhlY3V0b3JTdGFydCgpLCB3aGljaCBtdXN0IHJlZG8gdGhlIHN0ZXBzIGZyb20gQ3Jl YXRlUXVlcnlEZXNjIHdpdGggYSBuZXcKK3BsYW4gdHJlZS4KKwogUGVyIGFib3ZlIGNvbW1lbnRz LCBpdCdzIG5vdCByZWFsbHkgY3JpdGljYWwgZm9yIEV4ZWNFbmRQbGFuIHRvIGZyZWUgYW55CiBt ZW1vcnk7IGl0J2xsIGFsbCBnbyBhd2F5IGluIEZyZWVFeGVjdXRvclN0YXRlIGFueXdheS4gIEhv d2V2ZXIsIHdlIGRvIG5lZWQgdG8KIGJlIGNhcmVmdWwgdG8gY2xvc2UgcmVsYXRpb25zLCBkcm9w IGJ1ZmZlciBwaW5zLCBldGMsIHNvIHdlIGRvIG5lZWQgdG8gc2NhbgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKaW5kZXggMjM1YmI1MmNjYy4uNGE0YjRiNzY5MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFp bi5jCkBAIC03OSw3ICs3OSw3IEBAIEV4ZWN1dG9yRW5kX2hvb2tfdHlwZSBFeGVjdXRvckVuZF9o b29rID0gTlVMTDsKIEV4ZWN1dG9yQ2hlY2tQZXJtc19ob29rX3R5cGUgRXhlY3V0b3JDaGVja1Bl cm1zX2hvb2sgPSBOVUxMOwogCiAvKiBkZWNscyBmb3IgbG9jYWwgcm91dGluZXMgb25seSB1c2Vk IHdpdGhpbiB0aGlzIG1vZHVsZSAqLwotc3RhdGljIHZvaWQgSW5pdFBsYW4oUXVlcnlEZXNjICpx dWVyeURlc2MsIGludCBlZmxhZ3MpOworc3RhdGljIGJvb2wgSW5pdFBsYW4oUXVlcnlEZXNjICpx dWVyeURlc2MsIGludCBlZmxhZ3MpOwogc3RhdGljIHZvaWQgQ2hlY2tWYWxpZFJvd01hcmtSZWwo UmVsYXRpb24gcmVsLCBSb3dNYXJrVHlwZSBtYXJrVHlwZSk7CiBzdGF0aWMgdm9pZCBFeGVjUG9z dHByb2Nlc3NQbGFuKEVTdGF0ZSAqZXN0YXRlKTsKIHN0YXRpYyB2b2lkIEV4ZWNFbmRQbGFuKEVT dGF0ZSAqZXN0YXRlKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMgdm9pZCBFdmFsUGxhblF1 YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKTsKICAqCiAgKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgKi8KLXZvaWQKK2Jvb2wKIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2Ms IGludCBlZmxhZ3MpCiB7CiAJLyoKQEAgLTE0MCwxNCArMTQwLDE1IEBAIEV4ZWN1dG9yU3RhcnQo UXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJcGdzdGF0X3JlcG9ydF9xdWVyeV9p ZChxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5xdWVyeUlkLCBmYWxzZSk7CiAKIAlpZiAoRXhlY3V0 b3JTdGFydF9ob29rKQotCQkoKkV4ZWN1dG9yU3RhcnRfaG9vaykgKHF1ZXJ5RGVzYywgZWZsYWdz KTsKLQllbHNlCi0JCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwor CQlyZXR1cm4gKCpFeGVjdXRvclN0YXJ0X2hvb2spIChxdWVyeURlc2MsIGVmbGFncyk7CisKKwly ZXR1cm4gc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiB9CiAKLXZv aWQKK2Jvb2wKIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGlu dCBlZmxhZ3MpCiB7CisJYm9vbAkJcGxhbl92YWxpZDsKIAlFU3RhdGUJICAgKmVzdGF0ZTsKIAlN ZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CiAKQEAgLTI2Myw5ICsyNjQsMTEgQEAgc3RhbmRhcmRf RXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkvKgogCSAq IEluaXRpYWxpemUgdGhlIHBsYW4gc3RhdGUgdHJlZQogCSAqLwotCUluaXRQbGFuKHF1ZXJ5RGVz YywgZWZsYWdzKTsKKwlwbGFuX3ZhbGlkID0gSW5pdFBsYW4ocXVlcnlEZXNjLCBlZmxhZ3MpOwog CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJcmV0dXJuIHBsYW5fdmFs aWQ7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTYyMCw2ICs2MjMsMTcgQEAgRXhlY0NoZWNrUGVybWlz c2lvbnMoTGlzdCAqcmFuZ2VUYWJsZSwgTGlzdCAqcnRlcGVybWluZm9zLAogCQlSVEVQZXJtaXNz aW9uSW5mbyAqcGVybWluZm8gPSBsZmlyc3Rfbm9kZShSVEVQZXJtaXNzaW9uSW5mbywgbCk7CiAK IAkJQXNzZXJ0KE9pZElzVmFsaWQocGVybWluZm8tPnJlbGlkKSk7CisKKwkJLyoKKwkJICogUmVs YXRpb25zIHdob3NlIHBlcm1pc3Npb25zIG5lZWQgdG8gYmUgY2hlY2tlZCBtdXN0IGFscmVhZHkg aGF2ZQorCQkgKiBiZWVuIGxvY2tlZCBieSB0aGUgcGFyc2VyIG9yIGJ5IEdldENhY2hlZFBsYW4o KSBpZiBhIGNhY2hlZCBwbGFuIGlzCisJCSAqIGJlaW5nIGV4ZWN1dGVkLgorCQkgKgorCQkgKiBY WFggc2hvdWxkbid0IHdlIHNraXAgY2FsbGluZyBFeGVjQ2hlY2tQZXJtaXNzaW9ucyBmcm9tIElu aXRQbGFuCisJCSAqIGluIGEgcGFyYWxsZWwgd29ya2VyPworCQkgKi8KKwkJQXNzZXJ0KENoZWNr UmVsTG9ja2VkQnlNZShwZXJtaW5mby0+cmVsaWQsIEFjY2Vzc1NoYXJlTG9jaywgdHJ1ZSkgfHwK KwkJCSAgIElzUGFyYWxsZWxXb3JrZXIoKSk7CiAJCXJlc3VsdCA9IEV4ZWNDaGVja09uZVJlbFBl cm1zKHBlcm1pbmZvKTsKIAkJaWYgKCFyZXN1bHQpCiAJCXsKQEAgLTgyOSw5ICs4NDMsMjYgQEAg RXhlY0NoZWNrWGFjdFJlYWRPbmx5KFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCkKICAqCiAgKgkJ SW5pdGlhbGl6ZXMgdGhlIHF1ZXJ5IHBsYW46IG9wZW4gZmlsZXMsIGFsbG9jYXRlIHN0b3JhZ2UK ICAqCQlhbmQgc3RhcnQgdXAgdGhlIHJ1bGUgbWFuYWdlcgorICoKKyAqCisgKiBOb3JtYWxseSwg dGhlIHBsYW4gdHJlZSBnaXZlbiBpbiBxdWVyeURlc2MtPnBsYW5uZWRzdG10IGlzIGtub3duIHRv IGJlCisgKiB2YWxpZCBpbiBhIHJhY2UtZnJlZSBtYW5uZXIsIHRoYXQgaXMsIGFsbCByZWxhdGlv bnMgY29udGFpbmVkIGluCisgKiBwbGFubmVkc3RtdC0+cmVsYXRpb25PaWRzIHdvdWxkIGhhdmUg YWxyZWFkeSBiZWVuIGxvY2tlZC4gIFRoYXQgaXMgbm90IHRoZQorICogY2FzZSBob3dldmVyIGlm IHRoZSBwbGFubmVkc3RtdCBjb21lcyBmcm9tIGEgQ2FjaGVkUGxhbiwgb25lIGdpdmVuIGluCisg KiBxdWVyeURlc2MtPmNwbGFuLiAgVGhhdCdzIGJlY2F1c2UgR2V0Q2FjaGVkUGxhbigpIG9ubHkg bG9ja3MgdGhlIHRhYmxlcworICogdGhhdCBhcmUgbWVudGlvbmVkIGluIHRoZSBvcmlnaW5hbCBx dWVyeSBidXQgbm90IHRoZSBjaGlsZCB0YWJsZXMsIHdoaWNoCisgKiB3b3VsZCBoYXZlIGJlZW4g YWRkZWQgdG8gdGhlIHBsYW4gYnkgdGhlIHBsYW5uZXIuICBJbiB0aGF0IGNhc2UsIGxvY2tzIG9u CisgKiBjaGlsZCB0YWJsZXMgd2lsbCBiZSB0YWtlbiB3aGVuIGluaXRpYWxpemluZyB0aGVpciBT Y2FuIG5vZGVzIGluCisgKiBFeGVjSW5pdE5vZGUoKSB0byBiZSBkb25lIGhlcmUuICBJZiB0aGUg Q2FjaGVkUGxhbiBnZXRzIGludmFsaWRhdGVkIGFzCisgKiB0aG9zZSBsb2NrcyBhcmUgdGFrZW4s IHBsYW4gdHJlZSBpbml0aWFsaXphdGlvbiBpcyBzdXNwZW5kZWQgYXQgdGhlIHBvaW50CisgKiB3 aGVyZSB0aGUgaW52YWxpZGF0aW9uIGlzIGZpcnN0IGRldGVjdGVkLCBxdWVyeURlc2MtPnBsYW5z dGF0ZSB3aWxsIGJlIHNldAorICogdG8gTlVMTCwgYW5kIHF1ZXJ5RGVzYy0+cGxhbl92YWxpZCB0 byBmYWxzZS4gIENhbGxlcnMgbXVzdCByZXRyeSB0aGUKKyAqIGV4ZWN1dGlvbiBhZnRlciBjcmVh dGluZyBhIG5ldyBDYWNoZWRQbGFuIGluIHRoYXQgY2FzZSwgYWZ0ZXIgcHJvcGVybHkKKyAqIHJl bGVhc2luZyB0aGUgcmVzb3VyY2VzIG9mIHRoaXMgUXVlcnlEZXNjLCB3aGljaCBpbmNsdWRlcyBj YWxsaW5nCisgKiBFeGVjdXRvckZpbmlzaCgpIGFuZCBFeGVjdXRvckVuZCgpIG9uIHRoZSBFU3Rh dGUgY29udGFpbmVkIHRoZXJlaW4uCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0 aWMgYm9vbAogSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CiAJ Q21kVHlwZQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247CkBAIC04MzksNyArODcw LDcgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJUGxhbgkg ICAqcGxhbiA9IHBsYW5uZWRzdG10LT5wbGFuVHJlZTsKIAlMaXN0CSAgICpyYW5nZVRhYmxlID0g cGxhbm5lZHN0bXQtPnJ0YWJsZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0 YXRlOwotCVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZTsKKwlQbGFuU3RhdGUgICpwbGFuc3RhdGUgPSBO VUxMOwogCVR1cGxlRGVzYwl0dXBUeXBlOwogCUxpc3RDZWxsICAgKmw7CiAJaW50CQkJaTsKQEAg LTg1MCwxMCArODgxLDExIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZs YWdzKQogCUV4ZWNDaGVja1Blcm1pc3Npb25zKHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJt SW5mb3MsIHRydWUpOwogCiAJLyoKLQkgKiBpbml0aWFsaXplIHRoZSBub2RlJ3MgZXhlY3V0aW9u IHN0YXRlCisJICogU2V0IHVwIHJhbmdlIHRhYmxlIGluIEVTdGF0ZS4KIAkgKi8KIAlFeGVjSW5p dFJhbmdlVGFibGUoZXN0YXRlLCByYW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+cGVybUluZm9zKTsK IAorCWVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiA9IHF1ZXJ5RGVzYy0+Y3BsYW47CiAJZXN0YXRlLT5l c19wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OwogCiAJLyoKQEAgLTg4Niw2ICs5MTgsOCBAQCBJ bml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCQljYXNlIFJPV19N QVJLX0tFWVNIQVJFOgogCQkJCWNhc2UgUk9XX01BUktfUkVGRVJFTkNFOgogCQkJCQlyZWxhdGlv biA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCByYy0+cnRpKTsKKwkJCQkJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCQkJCWdvdG8gcGxhbl9pbml0X3N1c3Bl bmRlZDsKIAkJCQkJYnJlYWs7CiAJCQkJY2FzZSBST1dfTUFSS19DT1BZOgogCQkJCQkvKiBubyBw aHlzaWNhbCB0YWJsZSBhY2Nlc3MgaXMgcmVxdWlyZWQgKi8KQEAgLTk1Myw2ICs5ODcsMTEgQEAg SW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQlzcF9lZmxhZ3Mg fD0gRVhFQ19GTEFHX1JFV0lORDsKIAogCQlzdWJwbGFuc3RhdGUgPSBFeGVjSW5pdE5vZGUoc3Vi cGxhbiwgZXN0YXRlLCBzcF9lZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCQl7CisJCQlBc3NlcnQoc3VicGxhbnN0YXRlID09IE5VTEwpOworCQkJZ290byBwbGFu X2luaXRfc3VzcGVuZGVkOworCQl9CiAKIAkJZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzID0gbGFw cGVuZChlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJCQkJCQkJICAgc3VicGxhbnN0YXRl KTsKQEAgLTk2Niw2ICsxMDA1LDExIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBp bnQgZWZsYWdzKQogCSAqIHByb2Nlc3NpbmcgdHVwbGVzLgogCSAqLwogCXBsYW5zdGF0ZSA9IEV4 ZWNJbml0Tm9kZShwbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQoZXN0YXRlKSkKKwl7CisJCUFzc2VydChwbGFuc3RhdGUgPT0gTlVMTCk7CisJCWdvdG8gcGxh bl9pbml0X3N1c3BlbmRlZDsKKwl9CiAKIAkvKgogCSAqIEdldCB0aGUgdHVwbGUgZGVzY3JpcHRv ciBkZXNjcmliaW5nIHRoZSB0eXBlIG9mIHR1cGxlcyB0byByZXR1cm4uCkBAIC0xMDA4LDcgKzEw NTIsMTggQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJfQog CiAJcXVlcnlEZXNjLT50dXBEZXNjID0gdHVwVHlwZTsKKwlBc3NlcnQocGxhbnN0YXRlICE9IE5V TEwpOwogCXF1ZXJ5RGVzYy0+cGxhbnN0YXRlID0gcGxhbnN0YXRlOworCXJldHVybiB0cnVlOwor CitwbGFuX2luaXRfc3VzcGVuZGVkOgorCS8qCisJICogUGxhbiBpbml0aWFsaXphdGlvbiBmYWls ZWQuICBNYXJrIFF1ZXJ5RGVzYyBhcyBzdWNoLiAgRXhlY0VuZFBsYW4oKQorCSAqIHdpbGwgY2xl YW4gdXAgaW5pdGlhbGl6ZWQgcGxhbiBub2RlcyBmcm9tIGVzdGF0ZS0+ZXNfaW5pdGVkX3BsYW5u b2Rlcy4KKwkgKi8KKwlBc3NlcnQocGxhbnN0YXRlID09IE5VTEwpOworCXF1ZXJ5RGVzYy0+cGxh bnN0YXRlID0gTlVMTDsKKwlyZXR1cm4gZmFsc2U7CiB9CiAKIC8qCkBAIC0xNDI2LDcgKzE0ODEs NyBAQCBFeGVjR2V0QW5jZXN0b3JSZXN1bHRSZWxzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJ bmZvICpyZXN1bHRSZWxJbmZvKQogCiAJCQkvKgogCQkJICogQWxsIGFuY2VzdG9ycyB1cCB0byB0 aGUgcm9vdCB0YXJnZXQgcmVsYXRpb24gbXVzdCBoYXZlIGJlZW4KLQkJCSAqIGxvY2tlZCBieSB0 aGUgcGxhbm5lciBvciBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLgorCQkJICogbG9ja2VkIGJ5IHRo ZSBwbGFubmVyIG9yIEV4ZWNMb2NrQXBwZW5kTm9uTGVhZlJlbGF0aW9ucygpLgogCQkJICovCiAJ CQlhbmNSZWwgPSB0YWJsZV9vcGVuKGFuY09pZCwgTm9Mb2NrKTsKIAkJCXJJbmZvID0gbWFrZU5v ZGUoUmVzdWx0UmVsSW5mbyk7CkBAIC0yODU2LDcgKzI5MTEsOCBAQCBFdmFsUGxhblF1YWxTdGFy dChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCSAqIENoaWxkIEVQUSBFU3Rh dGVzIHNoYXJlIHRoZSBwYXJlbnQncyBjb3B5IG9mIHVuY2hhbmdpbmcgc3RhdGUgc3VjaCBhcwog CSAqIHRoZSBzbmFwc2hvdCwgcmFuZ2V0YWJsZSwgYW5kIGV4dGVybmFsIFBhcmFtIGluZm8uICBU aGV5IG5lZWQgdGhlaXIgb3duCiAJICogY29waWVzIG9mIGxvY2FsIHN0YXRlLCBpbmNsdWRpbmcg YSB0dXBsZSB0YWJsZSwgZXNfcGFyYW1fZXhlY192YWxzLAotCSAqIHJlc3VsdC1yZWwgaW5mbywg ZXRjLgorCSAqIHJlc3VsdC1yZWwgaW5mbywgZXRjLiAgQWxzbywgd2UgZG9uJ3QgcGFzcyB0aGUg cGFyZW50J3QgY29weSBvZiB0aGUKKwkgKiBDYWNoZWRQbGFuLCBiZWNhdXNlIG5vIG5ldyBsb2Nr cyB3aWxsIGJlIHRha2VuIGZvciBFdmFsUGxhblF1YWwoKS4KIAkgKi8KIAlyY2VzdGF0ZS0+ZXNf ZGlyZWN0aW9uID0gRm9yd2FyZFNjYW5EaXJlY3Rpb247CiAJcmNlc3RhdGUtPmVzX3NuYXBzaG90 ID0gcGFyZW50ZXN0YXRlLT5lc19zbmFwc2hvdDsKQEAgLTI5NDMsNiArMjk5OSwxMiBAQCBFdmFs UGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCQlQbGFu U3RhdGUgICpzdWJwbGFuc3RhdGU7CiAKIAkJc3VicGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHN1 YnBsYW4sIHJjZXN0YXRlLCAwKTsKKworCQkvKgorCQkgKiBBdCB0aGlzIHBvaW50LCB3ZSBoYWQg YmV0dGVyIG5vdCByZWNlaXZlZCBhbnkgbmV3IGludmFsaWRhdGlvbgorCQkgKiBtZXNzYWdlcyB0 aGF0IHdvdWxkIGhhdmUgY2F1c2VkIHRoZSBwbGFuIHRyZWUgdG8gZ28gc3RhbGUuCisJCSAqLwor CQlBc3NlcnQoRXhlY1BsYW5TdGlsbFZhbGlkKHJjZXN0YXRlKSAmJiBzdWJwbGFuc3RhdGUpOwog CQlyY2VzdGF0ZS0+ZXNfc3VicGxhbnN0YXRlcyA9IGxhcHBlbmQocmNlc3RhdGUtPmVzX3N1YnBs YW5zdGF0ZXMsCiAJCQkJCQkJCQkJCSBzdWJwbGFuc3RhdGUpOwogCX0KQEAgLTI5ODYsNiArMzA0 OCwxMiBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5U cmVlKQogCSAqLwogCWVwcXN0YXRlLT5yZWNoZWNrcGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHBs YW5UcmVlLCByY2VzdGF0ZSwgMCk7CiAKKwkvKgorCSAqIEF0IHRoaXMgcG9pbnQsIHdlIGhhZCBi ZXR0ZXIgbm90IHJlY2VpdmVkIGFueSBuZXcgaW52YWxpZGF0aW9uIG1lc3NhZ2VzCisJICogdGhh dCB3b3VsZCBoYXZlIGNhdXNlZCB0aGUgcGxhbiB0cmVlIHRvIGdvIHN0YWxlLgorCSAqLworCUFz c2VydChFeGVjUGxhblN0aWxsVmFsaWQocmNlc3RhdGUpICYmIGVwcXN0YXRlLT5yZWNoZWNrcGxh bnN0YXRlKTsKKwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIH0KIApAQCAt MzAwOCw2ICszMDc2LDEwIEBAIEV2YWxQbGFuUXVhbEVuZChFUFFTdGF0ZSAqZXBxc3RhdGUpCiAJ TWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwogCUxpc3RDZWxsICAgKmw7CiAKKwkvKiBOb3RoaW5n IHRvIGRvIGlmIEV2YWxQbGFuUXVhbEluaXQoKSB3YXNuJ3QgZG9uZSB0byBiZWdpbiB3aXRoLiAq LworCWlmIChlcHFzdGF0ZS0+cGFyZW50ZXN0YXRlID09IE5VTEwpCisJCXJldHVybjsKKwogCXJ0 c2l6ZSA9IGVwcXN0YXRlLT5wYXJlbnRlc3RhdGUtPmVzX3JhbmdlX3RhYmxlX3NpemU7CiAKIAkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBjYzJiOGNjYWI3Li5kMzJiYzc0 NjA5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTI0OCw4ICsxMjQ4LDE3 IEBAIEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAq cmVjZWl2ZXIsCiAJcGFyYW1zcGFjZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZ X1BBUkFNTElTVElORk8sIGZhbHNlKTsKIAlwYXJhbUxJID0gUmVzdG9yZVBhcmFtTGlzdCgmcGFy YW1zcGFjZSk7CiAKLQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8KKwkv KgorCSAqIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAgTm90ZSB0aGF0IG5vIENh Y2hlZFBsYW4gaXMgYXZhaWxhYmxlCisJICogaGVyZSBldmVuIGlmIHRoZSBsZWFkZXIgbWF5IGhh dmUgZ290dGVuIHRoZSBwbGFuIHRyZWUgZnJvbSBvbmUuICBUaGF0J3MKKwkgKiBmaW5lIHRob3Vn aCwgYmVjYXVzZSB0aGUgbGVhZGVyIHdvdWxkIGhhdmUgdGFrZW4gdGhlIGxvY2tzIG5lY2Vzc2Fy eQorCSAqIGZvciB0aGUgcGxhbiB0cmVlIHRoYXQgd2UgaGF2ZSBoZXJlIHRvIGJlIGZ1bGx5IHZh bGlkLiAgVGhhdCBpcyB0cnVlCisJICogZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHdlIHdpbGwgYmUg dGFraW5nIG91ciBvd24gY29waWVzIG9mIHRob3NlIGxvY2tzCisJICogaW4gRXhlY0dldFJhbmdl VGFibGVSZWxhdGlvbigpLCBiZWNhdXNlIG5vbmUgb2YgdGhlbSB3b3VsZCBiZSB0aGUgbG9ja3MK KwkgKiB0aGF0IGFyZSBub3QgYWxyZWFkeSB0YWtlbiBieSB0aGUgbGVhZGVyLgorCSAqLwogCXJl dHVybiBDcmVhdGVRdWVyeURlc2MocHN0bXQsCisJCQkJCQkgICBOVUxMLAogCQkJCQkJICAgcXVl cnlTdHJpbmcsCiAJCQkJCQkgICBHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3Qs CiAJCQkJCQkgICByZWNlaXZlciwgcGFyYW1MSSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsK QEAgLTE0MzAsNyArMTQzOSwxMiBAQCBQYXJhbGxlbFF1ZXJ5TWFpbihkc21fc2VnbWVudCAqc2Vn LCBzaG1fdG9jICp0b2MpCiAKIAkvKiBTdGFydCB1cCB0aGUgZXhlY3V0b3IgKi8KIAlxdWVyeURl c2MtPnBsYW5uZWRzdG10LT5qaXRGbGFncyA9IGZwZXMtPmppdF9mbGFnczsKLQlFeGVjdXRvclN0 YXJ0KHF1ZXJ5RGVzYywgZnBlcy0+ZWZsYWdzKTsKKwl7CisJCWJvb2wJCXBsYW5fdmFsaWQgUEdf VVNFRF9GT1JfQVNTRVJUU19PTkxZOworCisJCXBsYW5fdmFsaWQgPSBFeGVjdXRvclN0YXJ0KHF1 ZXJ5RGVzYywgZnBlcy0+ZWZsYWdzKTsKKwkJQXNzZXJ0KHBsYW5fdmFsaWQpOworCX0KIAogCS8q IFNwZWNpYWwgZXhlY3V0b3IgaW5pdGlhbGl6YXRpb24gc3RlcHMgZm9yIHBhcmFsbGVsIHdvcmtl cnMgKi8KIAlxdWVyeURlc2MtPnBsYW5zdGF0ZS0+c3RhdGUtPmVzX3F1ZXJ5X2RzYSA9IGFyZWE7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggZWI4YTg3ZmQ2My4uY2Y3M2Qy OGJhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtNTEzLDYgKzUxMywx MyBAQCBFeGVjSW5pdFBhcnRpdGlvbkluZm8oTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0 YXRlICplc3RhdGUsCiAKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJvdXRlLT5t ZW1jeHQpOwogCisJLyoKKwkgKiBOb3RlIHRoYXQgd2hpbGUgd2Ugbm9ybWFsbHkgY2hlY2sgRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkgYWZ0ZXIgZWFjaAorCSAqIGxvY2sgdGFrZW4gZHVyaW5n IGV4ZWN1dGlvbiBpbml0aWFsaXphdGlvbiwgaXQgaXMgZmluZSBub3QgZG8gc28gZm9yCisJICog cGFydGl0aW9ucyBvcGVuZWQgaGVyZSwgZm9yIHR1cGxlIHJvdXRpbmcuICBMb2NrcyB0YWtlbiBo ZXJlIGNhbid0CisJICogcG9zc2libHkgaW52YWxpZGF0ZSB0aGUgcGxhbiBnaXZlbiB0aGF0IHRo ZSBwbGFuIGRvZXNuJ3QgY29udGFpbiBhbnkKKwkgKiBpbmZvIGFib3V0IHRob3NlIHBhcnRpdGlv bnMuCisJICovCiAJcGFydHJlbCA9IHRhYmxlX29wZW4ocGFydE9pZCwgUm93RXhjbHVzaXZlTG9j ayk7CiAKIAlsZWFmX3BhcnRfcnJpID0gbWFrZU5vZGUoUmVzdWx0UmVsSW5mbyk7CkBAIC0xMTEx LDYgKzExMTgsOSBAQCBFeGVjSW5pdFBhcnRpdGlvbkRpc3BhdGNoSW5mbyhFU3RhdGUgKmVzdGF0 ZSwKIAkgKiBPbmx5IHN1Yi1wYXJ0aXRpb25lZCB0YWJsZXMgbmVlZCB0byBiZSBsb2NrZWQgaGVy ZS4gIFRoZSByb290CiAJICogcGFydGl0aW9uZWQgdGFibGUgd2lsbCBhbHJlYWR5IGhhdmUgYmVl biBsb2NrZWQgYXMgaXQncyByZWZlcmVuY2VkIGluCiAJICogdGhlIHF1ZXJ5J3MgcnRhYmxlLgor CSAqCisJICogU2VlIHRoZSBjb21tZW50IGluIEV4ZWNJbml0UGFydGl0aW9uSW5mbygpIGFib3V0 IHRha2luZyBsb2NrcyBhbmQKKwkgKiBub3QgY2hlY2tpbmcgRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkgaGVyZS4KIAkgKi8KIAlpZiAocGFydG9pZCAhPSBSZWxhdGlvbkdldFJlbGlkKHByb3V0 ZS0+cGFydGl0aW9uX3Jvb3QpKQogCQlyZWwgPSB0YWJsZV9vcGVuKHBhcnRvaWQsIFJvd0V4Y2x1 c2l2ZUxvY2spOwpAQCAtMTgwMSw2ICsxODExLDggQEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5n KFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAogCiAJLyogQ3JlYXRlIHRoZSB3b3JraW5nIGRhdGEgc3Ry dWN0dXJlIGZvciBwcnVuaW5nICovCiAJcHJ1bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5l U3RhdGUocGxhbnN0YXRlLCBwcnVuZWluZm8pOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFy dGl0aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVpcmVkLgpAQCAtMTkyNyw2ICsxOTM5LDggQEAgQ3Jl YXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1 bmVJbmZvICpwcnVuZWluZm8pCiAJCQkgKiBkdXJhdGlvbiBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4K IAkJCSAqLwogCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBw aW5mby0+cnRpbmRleCk7CisJCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJ CXJldHVybiBOVUxMOwogCQkJcGFydGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcnRy ZWwpOwogCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoZXN0YXRlLT5lc19w YXJ0aXRpb25fZGlyZWN0b3J5LAogCQkJCQkJCQkJCQkJcGFydHJlbCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQcm9jbm9kZS5jCmluZGV4IDY1M2Y3NGNmNTguLjJkY2FjYWZkMDMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCkBAIC0xMzUsMTAgKzEzNSwxNyBAQCBzdGF0aWMgYm9vbCBF eGVjU2h1dGRvd25Ob2RlX3dhbGtlcihQbGFuU3RhdGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOwog ICoJCSAgJ2VzdGF0ZScgaXMgdGhlIHNoYXJlZCBleGVjdXRpb24gc3RhdGUgZm9yIHRoZSBwbGFu IHRyZWUKICAqCQkgICdlZmxhZ3MnIGlzIGEgYml0d2lzZSBPUiBvZiBmbGFnIGJpdHMgZGVzY3Jp YmVkIGluIGV4ZWN1dG9yLmgKICAqCi0gKgkJUmV0dXJucyBhIFBsYW5TdGF0ZSBub2RlIGNvcnJl c3BvbmRpbmcgdG8gdGhlIGdpdmVuIFBsYW4gbm9kZS4KKyAqCQlSZXR1cm5zIGEgUGxhblN0YXRl IG5vZGUgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gUGxhbiBub2RlIG9yIE5VTEwuCiAgKgot ICoJCUFzIGEgc2lkZS1lZmZlY3QsIGFsbCBQbGFuU3RhdGUgbm9kZXMgdGhhdCBhcmUgY3JlYXRl ZCBhcmUgYXBwZW5kZWQgdG8KLSAqCQllc3RhdGUtPmVzX3BsYW5zdGF0ZV9ub2RlcyBmb3IgdGhl IGNsZWFudXAgcHJvY2Vzc2luZyBpbiBFeGVjRW5kUGxhbigpLgorICoJCU5VTEwgbWF5IGJlIHJl dHVybmVkIGVpdGhlciBpZiB0aGUgaW5wdXQgbm9kZSBpcyBOVUxMIG9yIGlmIHRoZSBwbGFuCisg KgkJdHJlZSB0aGF0IHRoZSBub2RlIGlzIGEgcGFydCBvZiBpcyBmb3VuZCB0byBoYXZlIGJlZW4g aW52YWxpZGF0ZWQgd2hlbgorICoJCXRha2luZyBhIGxvY2sgb24gdGhlIHJlbGF0aW9uIG1lbnRp b25lZCBpbiB0aGUgbm9kZSBvciBpbiBhIGNoaWxkCisgKgkJbm9kZS4gIFRoZSBsYXR0ZXIgY2Fz ZSBhcmlzZXMgaWYgdGhlIHBsYW4gdHJlZSBjb250YWlucyBpbmhlcml0YW5jZS8KKyAqCQlwYXJ0 aXRpb24gY2hpbGQgdGFibGVzIGFuZCBpcyBmcm9tIGEgQ2FjaGVkUGxhbi4KKyAqCisgKgkJQXMg YSBzaWRlLWVmZmVjdCwgYWxsIFBsYW5TdGF0ZSBub2RlcyB0aGF0IGFyZSBzdWNjZXNzZnVsbHkg Y3JlYXRlZCBhcmUKKyAqCQlhcHBlbmRlZCB0byBlc3RhdGUtPmVzX3BsYW5zdGF0ZV9ub2RlcyBm b3IgdGhlIGNsZWFudXAgcHJvY2Vzc2luZyBpbgorICoJCUV4ZWNFbmRQbGFuKCkuCiAgKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqLwogUGxhblN0YXRlICoKQEAgLTM5MSw2ICszOTgsMTMgQEAgRXhlY0lu aXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJYnJlYWs7 CiAJfQogCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwl7CisJCUFzc2VydChy ZXN1bHQgPT0gTlVMTCk7CisJCXJldHVybiBOVUxMOworCX0KKworCUFzc2VydChyZXN1bHQgIT0g TlVMTCk7CiAJRXhlY1NldEV4ZWNQcm9jTm9kZShyZXN1bHQsIHJlc3VsdC0+RXhlY1Byb2NOb2Rl KTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IGI1NjcxNjUwMDMuLmVlMTIy MzViMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC04MDYsNyArODA2LDI1IEBAIEV4 ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSkKIAogCQlB c3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTik7CiAKLQkJaWYgKCFJc1BhcmFsbGVs V29ya2VyKCkpCisJCWlmIChJc1BhcmFsbGVsV29ya2VyKCkgfHwKKwkJCShlc3RhdGUtPmVzX2Nh Y2hlZHBsYW4gIT0gTlVMTCAmJiAhcnRlLT5pbkZyb21DbCkpCisJCXsKKwkJCS8qCisJCQkgKiBU YWtlIGEgbG9jayBpZiB3ZSBhcmUgYSBwYXJhbGxlbCB3b3JrZXIgb3IgaWYgdGhpcyBpcyBhIGNo aWxkCisJCQkgKiB0YWJsZSByZWZlcmVuY2VkIGluIGEgY2FjaGVkIHBsYW4uCisJCQkgKgorCQkJ ICogUGFyYWxsZWwgd29ya2VycyBuZWVkIHRvIGhhdmUgdGhlaXIgb3duIGxvY2FsIGxvY2sgb24g dGhlCisJCQkgKiByZWxhdGlvbi4gIFRoaXMgZW5zdXJlcyBzYW5lIGJlaGF2aW9yIGluIGNhc2Ug dGhlIHBhcmVudCBwcm9jZXNzCisJCQkgKiBleGl0cyBiZWZvcmUgd2UgZG8uCisJCQkgKgorCQkJ ICogV2hlbiBleGVjdXRpbmcgYSBjYWNoZWQgcGxhbiwgY2hpbGQgdGFibGVzIG11c3QgYmUgbG9j a2VkCisJCQkgKiBoZXJlLCBiZWNhdXNlIHBsYW5jYWNoZS5jIChHZXRDYWNoZWRQbGFuKCkpIHdv dWxkIG9ubHkgaGF2ZQorCQkJICogbG9ja2VkIHRhYmxlcyBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5 LCB0aGF0IGlzLCB0YWJsZXMgd2hvc2UKKwkJCSAqIFJURXMnIGluRnJvbUNsIGlzIHRydWUuCisJ CQkgKi8KKwkJCXJlbCA9IHRhYmxlX29wZW4ocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9kZSk7 CisJCX0KKwkJZWxzZQogCQl7CiAJCQkvKgogCQkJICogSW4gYSBub3JtYWwgcXVlcnksIHdlIHNo b3VsZCBhbHJlYWR5IGhhdmUgdGhlIGFwcHJvcHJpYXRlIGxvY2ssCkBAIC04MTksMTUgKzgzNyw2 IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSkK IAkJCUFzc2VydChydGUtPnJlbGxvY2ttb2RlID09IEFjY2Vzc1NoYXJlTG9jayB8fAogCQkJCSAg IENoZWNrUmVsYXRpb25Mb2NrZWRCeU1lKHJlbCwgcnRlLT5yZWxsb2NrbW9kZSwgZmFsc2UpKTsK IAkJfQotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBJZiB3ZSBhcmUgYSBwYXJhbGxlbCB3b3Jr ZXIsIHdlIG5lZWQgdG8gb2J0YWluIG91ciBvd24gbG9jYWwKLQkJCSAqIGxvY2sgb24gdGhlIHJl bGF0aW9uLiAgVGhpcyBlbnN1cmVzIHNhbmUgYmVoYXZpb3IgaW4gY2FzZSB0aGUKLQkJCSAqIHBh cmVudCBwcm9jZXNzIGV4aXRzIGJlZm9yZSB3ZSBkby4KLQkJCSAqLwotCQkJcmVsID0gdGFibGVf b3BlbihydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKLQkJfQogCiAJCWVzdGF0ZS0+ZXNf cmVsYXRpb25zW3J0aSAtIDFdID0gcmVsOwogCX0KQEAgLTgzNSw2ICs4NDQsMzggQEAgRXhlY0dl dFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpKQogCXJldHVybiBy ZWw7CiB9CiAKKy8qCisgKiBFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlvbnMKKyAqCQlMb2Nr IG5vbi1sZWFmIHJlbGF0aW9ucyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieSBhIGdpdmVu CisgKgkJQXBwZW5kL01lcmdlQXBwZW5kIG5vZGUKKyAqLwordm9pZAorRXhlY0xvY2tBcHBlbmRO b25MZWFmUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlLCBMaXN0ICphbGxwYXJ0cmVsaWRzKQorewor CUxpc3RDZWxsICpsOworCisJLyogVGhpcyBzaG91bGQgZ2V0IGNhbGxlZCBvbmx5IHdoZW4gZXhl Y3V0aW5nIGNhY2hlZCBwbGFucy4gKi8KKwlBc3NlcnQoZXN0YXRlLT5lc19jYWNoZWRwbGFuICE9 IE5VTEwpOworCWZvcmVhY2gobCwgYWxscGFydHJlbGlkcykKKwl7CisJCUJpdG1hcHNldCAqcGFy dHJlbGlkcyA9IGxmaXJzdF9ub2RlKEJpdG1hcHNldCwgbCk7CisJCWludAkJaTsKKworCQkvKgor CQkgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbG9jayB0aGUgZmlyc3QgbWVtYmVyIChpPTApIG9mIGVh Y2ggYml0bWFwc2V0CisJCSAqIGJlY2F1c2UgaXQgc3RhbmRzIGZvciB0aGUgcm9vdCBwYXJlbnQg bWVudGlvbmVkIGluIHRoZSBxdWVyeSB0aGF0CisJCSAqIHNob3VsZCBhbHdheXMgaGF2ZSBiZWVu IGxvY2tlZCBiZWZvcmUgZW50ZXJpbmcgdGhlIGV4ZWN1dG9yLgorCQkgKi8KKwkJaSA9IDA7CisJ CXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcihwYXJ0cmVsaWRzLCBpKSkgPiAwKQorCQl7CisJ CQlSYW5nZVRibEVudHJ5ICpydGUgPSBleGVjX3J0X2ZldGNoKGksIGVzdGF0ZSk7CisKKwkJCUxv Y2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwkJfQorCX0KK30K KwogLyoKICAqIEV4ZWNJbml0UmVzdWx0UmVsYXRpb24KICAqCQlPcGVuIHJlbGF0aW9uIGdpdmVu IGJ5IHRoZSBwYXNzZWQtaW4gUlQgaW5kZXggYW5kIGZpbGwgaXRzCkBAIC04NTAsNiArODkxLDgg QEAgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAq cmVzdWx0UmVsSW5mbywKIAlSZWxhdGlvbglyZXN1bHRSZWxhdGlvbkRlc2M7CiAKIAlyZXN1bHRS ZWxhdGlvbkRlc2MgPSBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcnRpKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm47CiAJSW5pdFJlc3VsdFJl bEluZm8ocmVzdWx0UmVsSW5mbywKIAkJCQkJICByZXN1bHRSZWxhdGlvbkRlc2MsCiAJCQkJCSAg cnRpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCBmNTU0MjRlYjVhLi5iYzA5ZWY5OTJj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtODM4LDYgKzgzOCw3IEBAIHBvc3RxdWVs X3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQog CQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhlcy0+ c3RtdCwKKwkJCQkJCQkgTlVMTCwJLyogZm1ncl9zcWwoKSBkb2Vzbid0IHVzZSBDYWNoZWRQbGFu cyAqLwogCQkJCQkJCSBmY2FjaGUtPnNyYywKIAkJCQkJCQkgR2V0QWN0aXZlU25hcHNob3QoKSwK IAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LApAQCAtODU3LDEyICs4NTgsMTQgQEAgcG9zdHF1ZWxf c3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCiAJ CSAqIGxhenlFdmFsIG1vZGUgZm9yIGFueSBzdGF0ZW1lbnQgdGhhdCBjb3VsZCBwb3NzaWJseSBx dWV1ZSB0cmlnZ2Vycy4KIAkJICovCiAJCWludAkJCWVmbGFnczsKKwkJYm9vbAkJcGxhbl92YWxp ZCBQR19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CiAKIAkJaWYgKGVzLT5sYXp5RXZhbCkKIAkJCWVm bGFncyA9IEVYRUNfRkxBR19TS0lQX1RSSUdHRVJTOwogCQllbHNlCiAJCQllZmxhZ3MgPSAwOwkJ CS8qIGRlZmF1bHQgcnVuLXRvLWNvbXBsZXRpb24gZmxhZ3MgKi8KLQkJRXhlY3V0b3JTdGFydChl cy0+cWQsIGVmbGFncyk7CisJCXBsYW5fdmFsaWQgPSBFeGVjdXRvclN0YXJ0KGVzLT5xZCwgZWZs YWdzKTsKKwkJQXNzZXJ0KHBsYW5fdmFsaWQpOwogCX0KIAogCWVzLT5zdGF0dXMgPSBGX0VYRUNf UlVOOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4IGU5ZDlhYjZiZGQuLjk1NTNhODUxMTUgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTMzMDQsNiArMzMwNCw4IEBAIEV4ZWNJbml0QWdnKEFn ZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCWVmbGFncyAmPSB+RVhFQ19G TEFHX1JFV0lORDsKIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3Rh dGUoYWdnc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoK IAkgKiBpbml0aWFsaXplIHNvdXJjZSB0dXBsZSB0eXBlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVu ZC5jCmluZGV4IDkxNDhkN2QzYjEuLmIwY2FlMjViMzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBw ZW5kLmMKQEAgLTEzMyw2ICsxMzMsMjcgQEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlhcHBlbmRzdGF0ZS0+YXNfc3luY2RvbmUgPSBm YWxzZTsKIAlhcHBlbmRzdGF0ZS0+YXNfYmVndW4gPSBmYWxzZTsKIAorCS8qCisJICogTXVzdCB0 YWtlIGxvY2tzIG9uIGNoaWxkIHRhYmxlcyBpZiBydW5uaW5nIGEgY2FjaGVkIHBsYW4sIGJlY2F1 c2UKKwkgKiBHZXRDYWNoZWRQbGFuKCkgd291bGQndmUgb25seSBsb2NrZWQgdGhlIHJvb3QgcGFy ZW50IG5hbWVkIGluIHRoZQorCSAqIHF1ZXJ5LgorCSAqCisJICogRmlyc3QgbG9jayBub24tbGVh ZiBwYXJ0aXRpb25zIGJlZm9yZSBkb2luZyBwcnVuaW5nIGlmIGFueS4gIEV2ZW4gd2hlbgorCSAq IG5vIHBydW5pbmcgaXMgdG8gYmUgZG9uZSwgbm9uLWxlYWYgcGFydGl0aW9ucyBzdGlsbCBtdXN0 IGJlIGxvY2tlZAorCSAqIGV4cGxpY2l0bHkgbGlrZSB0aGlzLCBiZWNhdXNlIHRoZXkncmUgbm90 IHJlZmVyZW5jZWQgZWxzZXdoZXJlIGluCisJICogdGhlIHBsYW4gdHJlZS4gIFhYWCAtIE9UT0gs IG5vbi1sZWFmIHBhcnRpdGlvbnMgbWVudGlvbmVkIGluCisJICogcGFydF9wcnVuZV9pbmZvLCBp ZiBhbnksIHdvdWxkIGJlIG9wZW5lZCBieSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKQorCSAq IHVzaW5nIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oKSB3aGljaCBsb2NrcyBjaGlsZCB0YWJs ZXMsIHJlZHVuZGFudGx5CisJICogaW4gdGhpcyBjYXNlLgorCSAqLworCWlmIChlc3RhdGUtPmVz X2NhY2hlZHBsYW4pCisJeworCQlFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlvbnMoZXN0YXRl LCBub2RlLT5hbGxwYXJ0cmVsaWRzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkKKwkJCXJldHVybiBOVUxMOworCisJfQorCiAJLyogSWYgcnVuLXRpbWUgcGFydGl0aW9uIHBy dW5pbmcgaXMgZW5hYmxlZCwgdGhlbiBzZXQgdGhhdCB1cCBub3cgKi8KIAlpZiAobm9kZS0+cGFy dF9wcnVuZV9pbmZvICE9IE5VTEwpCiAJewpAQCAtMTQ3LDYgKzE2OCw4IEBAIEV4ZWNJbml0QXBw ZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJCQkJ CSAgbGlzdF9sZW5ndGgobm9kZS0+YXBwZW5kcGxhbnMpLAogCQkJCQkJCQkJCQkgIG5vZGUtPnBh cnRfcHJ1bmVfaW5mbywKIAkJCQkJCQkJCQkJICAmdmFsaWRzdWJwbGFucyk7CisJCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gTlVMTDsKIAkJYXBwZW5kc3RhdGUt PmFzX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJz KHZhbGlkc3VicGxhbnMpOwogCkBAIC0yMjEsNiArMjQ0LDggQEAgRXhlY0luaXRBcHBlbmQoQXBw ZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCWZpcnN0dmFsaWQgPSBq OwogCiAJCWFwcGVuZHBsYW5zdGF0ZXNbaisrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0 YXRlLCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0 dXJuIE5VTEw7CiAJfQogCiAJYXBwZW5kc3RhdGUtPmFzX2ZpcnN0X3BhcnRpYWxfcGxhbiA9IGZp cnN0dmFsaWQ7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5k LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMKaW5kZXggMTQ3NTkyZjdl Mi4uNTNhZmNlZjIxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cEFuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYwpAQCAtODgs OCArODgsOSBAQCBFeGVjSW5pdEJpdG1hcEFuZChCaXRtYXBBbmQgKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogCWZvcmVhY2gobCwgbm9kZS0+Yml0bWFwcGxhbnMpCiAJewogCQlp bml0Tm9kZSA9IChQbGFuICopIGxmaXJzdChsKTsKLQkJYml0bWFwcGxhbnN0YXRlc1tpXSA9IEV4 ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOwotCQlpKys7CisJCWJpdG1hcHBs YW5zdGF0ZXNbaSsrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOwor CQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7CiAJfQog CiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nh bi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKaW5kZXggZDU4 ZWU0ZjRlMS4uMzg4YTAyZWM5OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhl YXBzY2FuLmMKQEAgLTc2MCwxMSArNzYwLDE1IEBAIEV4ZWNJbml0Qml0bWFwSGVhcFNjYW4oQml0 bWFwSGVhcFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9wZW4g dGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5S ZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBpbml0 aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoc2NhbnN0YXRlKSA9IEV4 ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQ bGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogZ2V0IHRo ZSBzY2FuIHR5cGUgZnJvbSB0aGUgcmVsYXRpb24gZGVzY3JpcHRvci4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYwppbmRleCA4M2VjOWVkZTg5Li45OTAxNTgxMmEx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCkBAIC0yMTEs NiArMjExLDcgQEAgQml0bWFwSW5kZXhTY2FuU3RhdGUgKgogRXhlY0luaXRCaXRtYXBJbmRleFNj YW4oQml0bWFwSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHsK IAlCaXRtYXBJbmRleFNjYW5TdGF0ZSAqaW5kZXhzdGF0ZTsKKwlSZWxhdGlvbglpbmRleFJlbGF0 aW9uOwogCUxPQ0tNT0RFCWxvY2ttb2RlOwogCiAJLyogY2hlY2sgZm9yIHVuc3VwcG9ydGVkIGZs YWdzICovCkBAIC0yNjIsNyArMjYzLDEzIEBAIEV4ZWNJbml0Qml0bWFwSW5kZXhTY2FuKEJpdG1h cEluZGV4U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAkvKiBPcGVu IHRoZSBpbmRleCByZWxhdGlvbi4gKi8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRfZmV0Y2gobm9kZS0+ c2Nhbi5zY2FucmVsaWQsIGVzdGF0ZSktPnJlbGxvY2ttb2RlOwotCWluZGV4c3RhdGUtPmJpc3Nf UmVsYXRpb25EZXNjID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7CisJaW5k ZXhSZWxhdGlvbiA9IGluZGV4X29wZW4obm9kZS0+aW5kZXhpZCwgbG9ja21vZGUpOworCWlmICgh RXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJeworCQlpbmRleF9jbG9zZShpbmRleFJlbGF0 aW9uLCBsb2NrbW9kZSk7CisJCXJldHVybiBOVUxMOworCX0KKwlpbmRleHN0YXRlLT5iaXNzX1Jl bGF0aW9uRGVzYyA9IGluZGV4UmVsYXRpb247CiAKIAkvKgogCSAqIEluaXRpYWxpemUgaW5kZXgt c3BlY2lmaWMgc2NhbiBzdGF0ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUJpdG1hcE9yLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYwppbmRleCA3 MzY4NTJhMGFlLi40MjVmMjJlZTQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQml0bWFwT3IuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYwpA QCAtODksOCArODksOSBAQCBFeGVjSW5pdEJpdG1hcE9yKEJpdG1hcE9yICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAlmb3JlYWNoKGwsIG5vZGUtPmJpdG1hcHBsYW5zKQogCXsK IAkJaW5pdE5vZGUgPSAoUGxhbiAqKSBsZmlyc3QobCk7Ci0JCWJpdG1hcHBsYW5zdGF0ZXNbaV0g PSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKLQkJaSsrOworCQliaXRt YXBwbGFuc3RhdGVzW2krK10gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdz KTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwog CX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKaW5kZXggYmQ0MmM2NWIyOS4uOTEy MzljYzUwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYwpAQCAtNjEsNiArNjEsOCBAQCBF eGVjSW5pdEN1c3RvbVNjYW4oQ3VzdG9tU2NhbiAqY3NjYW4sIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCWlmIChzY2FucmVsaWQgPiAwKQogCXsKIAkJc2Nhbl9yZWwgPSBFeGVjT3BlblNj YW5SZWxhdGlvbihlc3RhdGUsIHNjYW5yZWxpZCwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwogCQljc3MtPnNzLnNzX2N1cnJlbnRS ZWxhdGlvbiA9IHNjYW5fcmVsOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUZvcmVpZ25zY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNj YW4uYwppbmRleCBlNjYxNmRkNzE4Li43MTQ5NTMxM2RiIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlRm9yZWlnbnNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlRm9yZWlnbnNjYW4uYwpAQCAtMTczLDYgKzE3Myw4IEBAIEV4ZWNJbml0Rm9yZWlnblNjYW4o Rm9yZWlnblNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChzY2Fu cmVsaWQgPiAwKQogCXsKIAkJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24o ZXN0YXRlLCBzY2FucmVsaWQsIGVmbGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCQlyZXR1cm4gTlVMTDsKIAkJc2NhbnN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRp b24gPSBjdXJyZW50UmVsYXRpb247CiAJCWZkd3JvdXRpbmUgPSBHZXRGZHdSb3V0aW5lRm9yUmVs YXRpb24oY3VycmVudFJlbGF0aW9uLCB0cnVlKTsKIAl9CkBAIC0yNjQsNiArMjY2LDggQEAgRXhl Y0luaXRGb3JlaWduU2NhbihGb3JlaWduU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJaWYgKG91dGVyUGxhbihub2RlKSkKIAkJb3V0ZXJQbGFuU3RhdGUoc2NhbnN0YXRl KSA9CiAJCQlFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgog CSAqIFRlbGwgdGhlIEZEVyB0byBpbml0aWFsaXplIHRoZSBzY2FuLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUdhdGhlci5jCmluZGV4IGY3YTY5ZjE4NWIuLmM1NjUyYWViMmQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlR2F0aGVyLmMKQEAgLTg5LDYgKzg5LDkgQEAgRXhlY0luaXRHYXRoZXIoR2F0aGVyICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKi8KIAlvdXRlck5vZGUgPSBvdXRlclBs YW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUoZ2F0aGVyc3RhdGUpID0gRXhlY0luaXROb2RlKG91 dGVyTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCXJldHVybiBOVUxMOworCiAJdHVwRGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKG91dGVy UGxhblN0YXRlKGdhdGhlcnN0YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0 aGVyTWVyZ2UuYwppbmRleCBkMzU3ZmYwYzQ3Li4xMTkxYjllNDIwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlR2F0aGVyTWVyZ2UuYwpAQCAtMTA4LDYgKzEwOCw4IEBAIEV4ZWNJbml0R2F0aGVy TWVyZ2UoR2F0aGVyTWVyZ2UgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAq LwogCW91dGVyTm9kZSA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShnbV9zdGF0 ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIExlYWRl ciBtYXkgYWNjZXNzIEV4ZWNQcm9jTm9kZSByZXN1bHQgZGlyZWN0bHkgKGlmCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHcm91cC5jCmluZGV4IDJiYWRjYzdlNjAuLmI0YzMwNDRjMWYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVHcm91cC5jCkBAIC0xODUsNiArMTg1LDggQEAgRXhlY0luaXRHcm91cChHcm91cCAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2Rl cwogCSAqLwogCW91dGVyUGxhblN0YXRlKGdycHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBs YW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBzY2FuIHNsb3QgYW5k IHR5cGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwppbmRleCBlZGQyMzI0Mzg0Li5iMjExOWZlYmI2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKQEAgLTM4Niw2ICszODYsOCBAQCBFeGVjSW5pdEhh c2goSGFzaCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6 ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKGhhc2hzdGF0ZSkgPSBFeGVjSW5p dE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIGluaXRpYWxpemUg b3VyIHJlc3VsdCBzbG90IGFuZCB0eXBlLiBObyBuZWVkIHRvIGJ1aWxkIHByb2plY3Rpb24KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKaW5kZXggODA3OGQ3ZjIyOS4uZDVmZjgwNjYwZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAgLTc1Miw4ICs3NTIsMTIgQEAgRXhl Y0luaXRIYXNoSm9pbihIYXNoSm9pbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJaGFzaE5vZGUgPSAoSGFzaCAqKSBpbm5lclBsYW4obm9kZSk7CiAKIAlvdXRlclBsYW5TdGF0 ZShoanN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlvdXRlckRl c2MgPSBFeGVjR2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShoanN0YXRlKSk7CiAJaW5uZXJQ bGFuU3RhdGUoaGpzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoKFBsYW4gKikgaGFzaE5vZGUsIGVzdGF0 ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4g TlVMTDsKIAlpbm5lckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShpbm5lclBsYW5TdGF0ZShoanN0 YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3Jl bWVudGFsU29ydC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5j CmluZGV4IDUyYjE0NmNmYjguLjc4NTg5NmU1ZWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5jcmVtZW50YWxTb3J0LmMKQEAgLTEwNDEsNiArMTA0MSw4IEBAIEV4ZWNJbml0SW5jcmVt ZW50YWxTb3J0KEluY3JlbWVudGFsU29ydCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJICogbm9kZXMgbWF5IGJlIGFibGUgdG8gZG8gc29tZXRoaW5nIG1vcmUgdXNlZnVsLgog CSAqLwogCW91dGVyUGxhblN0YXRlKGluY3Jzb3J0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVy UGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xvdCBh bmQgdHlwZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4IDBi NDNhOWI5NjkuLmVhOGJlZjRiOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25s eXNjYW4uYwpAQCAtNDkwLDYgKzQ5MCw3IEBAIEV4ZWNJbml0SW5kZXhPbmx5U2NhbihJbmRleE9u bHlTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHsKIAlJbmRleE9ubHlT Y2FuU3RhdGUgKmluZGV4c3RhdGU7CiAJUmVsYXRpb24JY3VycmVudFJlbGF0aW9uOworCVJlbGF0 aW9uCWluZGV4UmVsYXRpb247CiAJTE9DS01PREUJbG9ja21vZGU7CiAJVHVwbGVEZXNjCXR1cERl c2M7CiAKQEAgLTUxMiw2ICs1MTMsOCBAQCBFeGVjSW5pdEluZGV4T25seVNjYW4oSW5kZXhPbmx5 U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2Nh biByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9u KGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAlpbmRleHN0YXRlLT5zcy5zc19j dXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3Vy cmVudFNjYW5EZXNjID0gTlVMTDsJLyogbm8gaGVhcCBzY2FuIGhlcmUgKi8KQEAgLTU2NCw3ICs1 NjcsMTMgQEAgRXhlY0luaXRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJLyogT3BlbiB0aGUgaW5kZXggcmVsYXRpb24uICov CiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlc3RhdGUp LT5yZWxsb2NrbW9kZTsKLQlpbmRleHN0YXRlLT5pb3NzX1JlbGF0aW9uRGVzYyA9IGluZGV4X29w ZW4obm9kZS0+aW5kZXhpZCwgbG9ja21vZGUpOworCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVu KG5vZGUtPmluZGV4aWQsIGxvY2ttb2RlKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCXsKKwkJaW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbiwgbG9ja21vZGUpOworCQlyZXR1 cm4gTlVMTDsKKwl9CisJaW5kZXhzdGF0ZS0+aW9zc19SZWxhdGlvbkRlc2MgPSBpbmRleFJlbGF0 aW9uOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIGluZGV4LXNwZWNpZmljIHNjYW4gc3RhdGUKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwppbmRleCA0NTQwYzc3ODFkLi45NTZlOWU1NTQz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC05MDQsNiArOTA0LDcgQEAg RXhlY0luaXRJbmRleFNjYW4oSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVm bGFncykKIHsKIAlJbmRleFNjYW5TdGF0ZSAqaW5kZXhzdGF0ZTsKIAlSZWxhdGlvbgljdXJyZW50 UmVsYXRpb247CisJUmVsYXRpb24JaW5kZXhSZWxhdGlvbjsKIAlMT0NLTU9ERQlsb2NrbW9kZTsK IAogCS8qCkBAIC05MjUsNiArOTI2LDggQEAgRXhlY0luaXRJbmRleFNjYW4oSW5kZXhTY2FuICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0 aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRl LCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRS ZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsKIAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50U2Nh bkRlc2MgPSBOVUxMOwkvKiBubyBoZWFwIHNjYW4gaGVyZSAqLwpAQCAtOTY5LDcgKzk3MiwxMyBA QCBFeGVjSW5pdEluZGV4U2NhbihJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCiAJLyogT3BlbiB0aGUgaW5kZXggcmVsYXRpb24uICovCiAJbG9ja21vZGUgPSBl eGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9kZTsK LQlpbmRleHN0YXRlLT5pc3NfUmVsYXRpb25EZXNjID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlk LCBsb2NrbW9kZSk7CisJaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4obm9kZS0+aW5kZXhpZCwg bG9ja21vZGUpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJeworCQlpbmRl eF9jbG9zZShpbmRleFJlbGF0aW9uLCBsb2NrbW9kZSk7CisJCXJldHVybiBOVUxMOworCX0KKwlp bmRleHN0YXRlLT5pc3NfUmVsYXRpb25EZXNjID0gaW5kZXhSZWxhdGlvbjsKIAogCS8qCiAJICog SW5pdGlhbGl6ZSBpbmRleC1zcGVjaWZpYyBzY2FuIHN0YXRlCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTGltaXQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1p dC5jCmluZGV4IGE3NTA5OWRkNzMuLmExZmMzNmEzZjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVMaW1pdC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1p dC5jCkBAIC00NzYsNiArNDc2LDggQEAgRXhlY0luaXRMaW1pdChMaW1pdCAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUp OwogCW91dGVyUGxhblN0YXRlKGxpbWl0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwg ZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJl dHVybiBOVUxMOwogCiAJLyoKIAkgKiBpbml0aWFsaXplIGNoaWxkIGV4cHJlc3Npb25zCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCmluZGV4IDU1ZGU4ZDNkNjUuLmZmODZhODJiOTIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCkBAIC0zMjIsNiArMzIyLDggQEAgRXhlY0lu aXRMb2NrUm93cyhMb2NrUm93cyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJ ICogdGhlbiBpbml0aWFsaXplIG91dGVyIHBsYW4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShscnN0 YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qIG5vZGUgcmV0 dXJucyB1bm1vZGlmaWVkIHNsb3RzIGZyb20gdGhlIG91dGVyIHBsYW4gKi8KIAlscnN0YXRlLT5w cy5yZXN1bHRvcHNzZXQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1hdGVyaWFsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYwppbmRl eCBlZjA0ZTlhOGU3Li44ZDAyYWMwY2NiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTWF0ZXJpYWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwu YwpAQCAtMjE0LDYgKzIxNCw4IEBAIEV4ZWNJbml0TWF0ZXJpYWwoTWF0ZXJpYWwgKm5vZGUsIEVT dGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUp OwogCW91dGVyUGxhblN0YXRlKG1hdHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gTlVMTDsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSByZXN1bHQgdHlwZSBhbmQgc2xvdC4gTm8g bmVlZCB0byBpbml0aWFsaXplIHByb2plY3Rpb24gaW5mbwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1v aXplLmMKaW5kZXggNjE1NzhkNGI1Yy4uYTk5NGQ0OGZiMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVtb2l6ZS5jCkBAIC05MzgsNiArOTM4LDggQEAgRXhlY0luaXRNZW1vaXplKE1lbW9pemUgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJb3V0ZXJOb2RlID0gb3V0ZXJQbGFu KG5vZGUpOwogCW91dGVyUGxhblN0YXRlKG1zdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2Rl LCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJ cmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmV0dXJuIHNsb3QgYW5kIHR5cGUu IE5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBwcm9qZWN0aW9uIGluZm8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggOGFhNjQ5NDRjOS4uMTg4MDhjMTlhZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKQEAgLTgxLDYgKzgxLDI3IEBAIEV4ZWNJbml0 TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCW1lcmdlc3RhdGUtPnBzLnN0YXRlID0gZXN0YXRlOwogCW1lcmdlc3RhdGUtPnBzLkV4ZWNQ cm9jTm9kZSA9IEV4ZWNNZXJnZUFwcGVuZDsKIAorCS8qCisJICogTXVzdCB0YWtlIGxvY2tzIG9u IGNoaWxkIHRhYmxlcyBpZiBydW5uaW5nIGEgY2FjaGVkIHBsYW4sIGJlY2F1c2UKKwkgKiBHZXRD YWNoZWRQbGFuKCkgd291bGQndmUgb25seSBsb2NrZWQgdGhlIHJvb3QgcGFyZW50IG5hbWVkIGlu IHRoZQorCSAqIHF1ZXJ5LgorCSAqCisJICogRmlyc3QgbG9jayBub24tbGVhZiBwYXJ0aXRpb25z IGJlZm9yZSBkb2luZyBwcnVuaW5nIGlmIGFueS4gIEV2ZW4gd2hlbgorCSAqIG5vIHBydW5pbmcg aXMgdG8gYmUgZG9uZSwgbm9uLWxlYWYgcGFydGl0aW9ucyBzdGlsbCBtdXN0IGJlIGxvY2tlZAor CSAqIGV4cGxpY2l0bHkgbGlrZSB0aGlzLCBiZWNhdXNlIHRoZXkncmUgbm90IHJlZmVyZW5jZWQg ZWxzZXdoZXJlIGluCisJICogdGhlIHBsYW4gdHJlZS4gIFhYWCAtIE9UT0gsIG5vbi1sZWFmIHBh cnRpdGlvbnMgbWVudGlvbmVkIGluCisJICogcGFydF9wcnVuZV9pbmZvLCBpZiBhbnksIHdvdWxk IGJlIG9wZW5lZCBieSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoKQorCSAqIHVzaW5nIEV4ZWNH ZXRSYW5nZVRhYmxlUmVsYXRpb24oKSB3aGljaCBsb2NrcyBjaGlsZCB0YWJsZXMsIHJlZHVuZGFu dGx5CisJICogaW4gdGhpcyBjYXNlLgorCSAqLworCWlmIChlc3RhdGUtPmVzX2NhY2hlZHBsYW4p CisJeworCQlFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlvbnMoZXN0YXRlLCBub2RlLT5hbGxw YXJ0cmVsaWRzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVy biBOVUxMOworCisJfQorCiAJLyogSWYgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaXMgZW5h YmxlZCwgdGhlbiBzZXQgdGhhdCB1cCBub3cgKi8KIAlpZiAobm9kZS0+cGFydF9wcnVuZV9pbmZv ICE9IE5VTEwpCiAJewpAQCAtOTUsNiArMTE2LDggQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJn ZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJCQkJCSAg bGlzdF9sZW5ndGgobm9kZS0+bWVyZ2VwbGFucyksCiAJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9w cnVuZV9pbmZvLAogCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBsYW5zKTsKKwkJaWYgKCFFeGVjUGxh blN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwogCQltZXJnZXN0YXRlLT5tc19w cnVuZV9zdGF0ZSA9IHBydW5lc3RhdGU7CiAJCW5wbGFucyA9IGJtc19udW1fbWVtYmVycyh2YWxp ZHN1YnBsYW5zKTsKIApAQCAtMTUxLDYgKzE3NCw4IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVy Z2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlQbGFuCSAgICpp bml0Tm9kZSA9IChQbGFuICopIGxpc3RfbnRoKG5vZGUtPm1lcmdlcGxhbnMsIGkpOwogCiAJCW1l cmdlcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFn cyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gTlVMTDsK IAl9CiAKIAltZXJnZXN0YXRlLT5wcy5wc19Qcm9qSW5mbyA9IE5VTEw7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTWVyZ2Vqb2luLmMKaW5kZXggN2I1MzBkOTA4OC4uMGQ5MmVjMjc4YSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwpAQCAtMTQ5MCwxMSArMTQ5MCwxNSBAQCBFeGVjSW5p dE1lcmdlSm9pbihNZXJnZUpvaW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CW1lcmdlc3RhdGUtPm1qX1NraXBNYXJrUmVzdG9yZSA9IG5vZGUtPnNraXBfbWFya19yZXN0b3Jl OwogCiAJb3V0ZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFu KG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRl KSkKKwkJcmV0dXJuIE5VTEw7CiAJb3V0ZXJEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQ bGFuU3RhdGUobWVyZ2VzdGF0ZSkpOwogCWlubmVyUGxhblN0YXRlKG1lcmdlc3RhdGUpID0gRXhl Y0luaXROb2RlKGlubmVyUGxhbihub2RlKSwgZXN0YXRlLAogCQkJCQkJCQkJCQkgIG1lcmdlc3Rh dGUtPm1qX1NraXBNYXJrUmVzdG9yZSA/CiAJCQkJCQkJCQkJCSAgZWZsYWdzIDoKIAkJCQkJCQkJ CQkJICAoZWZsYWdzIHwgRVhFQ19GTEFHX01BUkspKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxp ZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlpbm5lckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlw ZShpbm5lclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTW9kaWZ5VGFibGUuYwppbmRleCBiZGJhYTQ3NTNiLi4yMjQ1YTY3Mzk3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtMzk4NCw2ICszOTg0LDkgQEAgRXhlY0lu aXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJCQkJCQkJICAgbGluaXRpYWxfaW50KG5vZGUtPnJlc3VsdFJlbGF0aW9ucykpOwogCX0K IAorCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOworCiAJ Lyogc2V0IHVwIGVwcXN0YXRlIHdpdGggZHVtbXkgc3VicGxhbiBkYXRhIGZvciB0aGUgbW9tZW50 ICovCiAJRXZhbFBsYW5RdWFsSW5pdCgmbXRzdGF0ZS0+bXRfZXBxc3RhdGUsIGVzdGF0ZSwgTlVM TCwgTklMLAogCQkJCQkgbm9kZS0+ZXBxUGFyYW0sIG5vZGUtPnJlc3VsdFJlbGF0aW9ucyk7CkBA IC00MDExLDYgKzQwMTQsOCBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJaWYgKHJlc3VsdFJlbEluZm8gIT0gbXRz dGF0ZS0+cm9vdFJlc3VsdFJlbEluZm8pCiAJCXsKIAkJCUV4ZWNJbml0UmVzdWx0UmVsYXRpb24o ZXN0YXRlLCByZXN1bHRSZWxJbmZvLCByZXN1bHRSZWxhdGlvbik7CisJCQlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQkJCXJldHVybiBOVUxMOwogCiAJCQkvKgogCQkJICogRm9y IGNoaWxkIHJlc3VsdCByZWxhdGlvbnMsIHN0b3JlIHRoZSByb290IHJlc3VsdCByZWxhdGlvbgpA QCAtNDAzOCw2ICs0MDQzLDggQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogTm93IHdlIG1heSBpbml0aWFsaXpl IHRoZSBzdWJwbGFuLgogCSAqLwogCW91dGVyUGxhblN0YXRlKG10c3RhdGUpID0gRXhlY0luaXRO b2RlKHN1YnBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChl c3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogRG8gYWRkaXRpb25hbCBwZXItcmVz dWx0LXJlbGF0aW9uIGluaXRpYWxpemF0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZU5lc3Rsb29wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3Au YwppbmRleCA1Y2ZiNTBhMzY2Li5lMjQ1NTRmNGY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTmVzdGxvb3AuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVz dGxvb3AuYwpAQCAtMjk1LDExICsyOTUsMTUgQEAgRXhlY0luaXROZXN0TG9vcChOZXN0TG9vcCAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogdmFsdWVzLgogCSAqLwogCW91 dGVyUGxhblN0YXRlKG5sc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0 YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVy biBOVUxMOwogCWlmIChub2RlLT5uZXN0UGFyYW1zID09IE5JTCkKIAkJZWZsYWdzIHw9IEVYRUNf RkxBR19SRVdJTkQ7CiAJZWxzZQogCQllZmxhZ3MgJj0gfkVYRUNfRkxBR19SRVdJTkQ7CiAJaW5u ZXJQbGFuU3RhdGUobmxzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3Rh dGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJu IE5VTEw7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHNsb3QsIHR5cGUgYW5kIHByb2pl Y3Rpb24uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYwppbmRleCA0YTM4ODIyMGVl Li44NjNiZjJjYzY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVj dFNldC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMKQEAgLTI0 Nyw2ICsyNDcsOCBAQCBFeGVjSW5pdFByb2plY3RTZXQoUHJvamVjdFNldCAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwog CW91dGVyUGxhblN0YXRlKHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gTlVMTDsKIAogCS8qCiAJICogd2UgZG9uJ3QgdXNlIGlubmVyIHBsYW4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKaW5kZXggYWVlMzFjNzEzOS4uM2YzZGU3NzFk MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKQEAgLTI0NCw3 ICsyNDQsMTEgQEAgRXhlY0luaXRSZWN1cnNpdmVVbmlvbihSZWN1cnNpdmVVbmlvbiAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2Rlcwog CSAqLwogCW91dGVyUGxhblN0YXRlKHJ1c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihu b2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp CisJCXJldHVybiBOVUxMOwogCWlubmVyUGxhblN0YXRlKHJ1c3RhdGUpID0gRXhlY0luaXROb2Rl KGlubmVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBJZiBoYXNoaW5nLCBwcmVj b21wdXRlIGZtZ3IgbG9va3VwIGRhdGEgZm9yIGlubmVyIGxvb3AsIGFuZCBjcmVhdGUgdGhlCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKaW5kZXggYTEwMGIxNDRiZS4uZjIyMDZhZjQ1MSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwpAQCAtMjA4LDYgKzIwOCw4IEBAIEV4ZWNJbml0UmVz dWx0KFJlc3VsdCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlh bGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHJlc3N0YXRlKSA9IEV4ZWNJ bml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogd2UgZG9uJ3Qg dXNlIGlubmVyIHBsYW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1w bGVzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCmluZGV4IGQ3 ZTIyYjFkYmIuLjIyMzU3ZTdhMGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTYW1wbGVzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4u YwpAQCAtMTI1LDYgKzEyNSw4IEBAIEV4ZWNJbml0U2FtcGxlU2NhbihTYW1wbGVTY2FuICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0 YXRlLAogCQkJCQkJCSBub2RlLT5zY2FuLnNjYW5yZWxpZCwKIAkJCQkJCQkgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qIHdl IHdvbid0IHNldCB1cCB0aGUgSGVhcFNjYW5EZXNjIHRpbGwgbGF0ZXIgKi8KIAlzY2Fuc3RhdGUt PnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4u YwppbmRleCA0ZGEwZjI4ZjdiLi5iMGIzNGNkMTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFz Y2FuLmMKQEAgLTE1Myw2ICsxNTMsOCBAQCBFeGVjSW5pdFNlcVNjYW4oU2VxU2NhbiAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0 ZSwKIAkJCQkJCQkgbm9kZS0+c2Nhbi5zY2FucmVsaWQsCiAJCQkJCQkJIGVmbGFncyk7CisJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKiBhbmQg Y3JlYXRlIHNsb3Qgd2l0aCB0aGUgYXBwcm9wcmlhdGUgcm93dHlwZSAqLwogCUV4ZWNJbml0U2Nh blR1cGxlU2xvdChlc3RhdGUsICZzY2Fuc3RhdGUtPnNzLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3Au YwppbmRleCBmN2RiOWEzNDE1Li4zNTM1YWEyOThjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2V0T3AuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3Au YwpAQCAtNTI4LDYgKzUyOCw4IEBAIEV4ZWNJbml0U2V0T3AoU2V0T3AgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChub2RlLT5zdHJhdGVneSA9PSBTRVRPUF9IQVNIRUQp CiAJCWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlvdXRlclBsYW5TdGF0ZShzZXRvcHN0 YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlvdXRlckRl c2MgPSBFeGVjR2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShzZXRvcHN0YXRlKSk7CiAKIAkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKaW5kZXggMDc4ZDA0MWM0MC4uNTQ3MjAzZWJmZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlU29ydC5jCkBAIC0yNjMsNiArMjYzLDggQEAgRXhlY0luaXRTb3J0KFNv cnQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWVmbGFncyAmPSB+KEVYRUNf RkxBR19SRVdJTkQgfCBFWEVDX0ZMQUdfQkFDS1dBUkQgfCBFWEVDX0ZMQUdfTUFSSyk7CiAKIAlv dXRlclBsYW5TdGF0ZShzb3J0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwg ZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJl dHVybiBOVUxMOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xvdCBhbmQgdHlwZS4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwppbmRleCBiYzU1YTgyZmMzLi44YjY2 MjljOTM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2Fu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCkBAIC0xMjQs NiArMTI0LDggQEAgRXhlY0luaXRTdWJxdWVyeVNjYW4oU3VicXVlcnlTY2FuICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIHN1YnF1ZXJ5CiAJICovCiAJ c3VicXVlcnlzdGF0ZS0+c3VicGxhbiA9IEV4ZWNJbml0Tm9kZShub2RlLT5zdWJwbGFuLCBlc3Rh dGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJu IE5VTEw7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlIChuZWVkZWQg YnkgRXhlY0Fzc2lnblNjYW5Qcm9qZWN0aW9uSW5mbykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVU aWRyYW5nZXNjYW4uYwppbmRleCAyMTI0YzU1ZWY1Li42MTNiMzc3YzdjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2VzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCkBAIC0zODYsNiArMzg2LDggQEAgRXhlY0luaXRU aWRSYW5nZVNjYW4oVGlkUmFuZ2VTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJlbGF0aW9uID0g RXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxpZCwgZWZsYWdz KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAog CXRpZHJhbmdlc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1cnJlbnRSZWxhdGlvbjsK IAl0aWRyYW5nZXN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOwkvKiBubyB0YWJs ZSBzY2FuIGhlcmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCmluZGV4IDg2MmJkMDMz MGIuLjFiMGEyZDgwODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRz Y2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwpAQCAtNTI5LDYg KzUyOSw4IEBAIEV4ZWNJbml0VGlkU2NhbihUaWRTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJY3VycmVudFJl bGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2FuLnNjYW5yZWxp ZCwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4g TlVMTDsKIAogCXRpZHN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRp b247CiAJdGlkc3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7IC8qIG5vIGhlYXAg c2NhbiBoZXJlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVl LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKaW5kZXggNTBiYWJhY2RjOC4u YWU5YWY4ZjIxZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYwpAQCAtMTM2LDYgKzEzNiw4 IEBAIEV4ZWNJbml0VW5pcXVlKFVuaXF1ZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJICogdGhlbiBpbml0aWFsaXplIG91dGVyIHBsYW4KIAkgKi8KIAlvdXRlclBsYW5TdGF0 ZSh1bmlxdWVzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVm bGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7 CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHNsb3QgYW5kIHR5cGUuIFVuaXF1ZSBub2Rl cyBkbyBubyBwcm9qZWN0aW9ucywgc28KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYwpp bmRleCA2NDhjZGFkYzMyLi43N2RlMmQwYzIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRv d0FnZy5jCkBAIC0yNDU4LDYgKzI0NTgsOCBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW91dGVyUGxhbiA9IG91 dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZSh3aW5zdGF0ZSkgPSBFeGVjSW5pdE5vZGUo b3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgc291cmNlIHR1cGxl IHR5cGUgKHdoaWNoIGlzIGFsc28gdGhlIHR1cGxlIHR5cGUgdGhhdCB3ZSdsbApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGku YwppbmRleCAzMzk3NTY4N2IzLi5jZmVlMjA4NzE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpAQCAtNzEsNyAr NzEsNyBAQCBzdGF0aWMgaW50CV9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29u c3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiBzdGF0aWMgUGFyYW1MaXN0SW5mbyBfU1BJ X2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICphcmd0eXBlcywKIAkJCQkJCQkJCQkgRGF0 dW0gKlZhbHVlcywgY29uc3QgY2hhciAqTnVsbHMpOwogCi1zdGF0aWMgaW50CV9TUElfcHF1ZXJ5 KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQp Oworc3RhdGljIGludAlfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgdWludDY0IHRj b3VudCk7CiAKIHN0YXRpYyB2b2lkIF9TUElfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIApA QCAtMTU4Miw2ICsxNTgyLDcgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIg Km5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAlTbmFwc2hvdAlzbmFwc2hvdDsKIAlNZW1vcnlDb250 ZXh0IG9sZGNvbnRleHQ7CiAJUG9ydGFsCQlwb3J0YWw7CisJYm9vbAkJcGxhbl92YWxpZDsKIAlT UElDYWxsYmFja0FyZyBzcGljYWxsYmFja2FyZzsKIAlFcnJvckNvbnRleHRDYWxsYmFjayBzcGll cnJjb250ZXh0OwogCkBAIC0xNjIzLDYgKzE2MjQsNyBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJu YWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCV9TUElfY3VycmVudC0+cHJv Y2Vzc2VkID0gMDsKIAlfU1BJX2N1cnJlbnQtPnR1cHRhYmxlID0gTlVMTDsKIAorcmVwbGFuOgog CS8qIENyZWF0ZSB0aGUgcG9ydGFsICovCiAJaWYgKG5hbWUgPT0gTlVMTCB8fCBuYW1lWzBdID09 ICdcMCcpCiAJewpAQCAtMTc2NiwxNSArMTc2OCwyNCBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJu YWwoY29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCX0KIAogCS8qCi0JICogU3Rh cnQgcG9ydGFsIGV4ZWN1dGlvbi4KKwkgKiBTdGFydCBwb3J0YWwgZXhlY3V0aW9uLiAgSWYgdGhl IHBvcnRhbCBjb250YWlucyBhIGNhY2hlZCBwbGFuLCBpdCBtdXN0CisJICogYmUgcmVjcmVhdGVk IGlmIHBvcnRhbC0+cGxhbl92YWxpZCBpcyBmYWxzZSB3aGljaCB0ZWxscyB0aGF0IHRoZSBjYWNo ZWQKKwkgKiBwbGFuIHdhcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQgd2hlbiBpbml0 aWFsaXppbmcgb25lIG9mIHRoZQorCSAqIHBsYW4gdHJlZXMgY29udGFpbmVkIGluIGl0LgogCSAq LwotCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgMCwgc25hcHNob3QpOworCXBsYW5fdmFs aWQgPSBQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtTEksIDAsIHNuYXBzaG90KTsKIAogCUFzc2Vy dChwb3J0YWwtPnN0cmF0ZWd5ICE9IFBPUlRBTF9NVUxUSV9RVUVSWSk7CiAKIAkvKiBQb3AgdGhl IGVycm9yIGNvbnRleHQgc3RhY2sgKi8KIAllcnJvcl9jb250ZXh0X3N0YWNrID0gc3BpZXJyY29u dGV4dC5wcmV2aW91czsKIAorCWlmICghcGxhbl92YWxpZCkKKwl7CisJCVBvcnRhbERyb3AocG9y dGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFuOworCX0KKwogCS8qIFBvcCB0aGUgU1BJIHN0YWNr ICovCiAJX1NQSV9lbmRfY2FsbCh0cnVlKTsKIApAQCAtMjU1Miw2ICsyNTYzLDcgQEAgX1NQSV9l eGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0 aW9ucywKIAkJICogUmVwbGFuIGlmIG5lZWRlZCwgYW5kIGluY3JlbWVudCBwbGFuIHJlZmNvdW50 LiAgSWYgaXQncyBhIHNhdmVkCiAJCSAqIHBsYW4sIHRoZSByZWZjb3VudCBtdXN0IGJlIGJhY2tl ZCBieSB0aGUgcGxhbl9vd25lci4KIAkJICovCityZXBsYW46CiAJCWNwbGFuID0gR2V0Q2FjaGVk UGxhbihwbGFuc291cmNlLCBvcHRpb25zLT5wYXJhbXMsCiAJCQkJCQkJICBwbGFuX293bmVyLCBf U1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKIApAQCAtMjY2MSw2ICsyNjczLDcgQEAgX1NQSV9leGVj dXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9u cywKIAkJCXsKIAkJCQlRdWVyeURlc2MgICpxZGVzYzsKIAkJCQlTbmFwc2hvdAlzbmFwOworCQkJ CWludAkJCWVmbGFnczsKIAogCQkJCWlmIChBY3RpdmVTbmFwc2hvdFNldCgpKQogCQkJCQlzbmFw ID0gR2V0QWN0aXZlU25hcHNob3QoKTsKQEAgLTI2NjgsMTQgKzI2ODEsMzEgQEAgX1NQSV9leGVj dXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9u cywKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAogCQkJCXFkZXNjID0gQ3JlYXRlUXVl cnlEZXNjKHN0bXQsCisJCQkJCQkJCQkJY3BsYW4sCiAJCQkJCQkJCQkJcGxhbnNvdXJjZS0+cXVl cnlfc3RyaW5nLAogCQkJCQkJCQkJCXNuYXAsIGNyb3NzY2hlY2tfc25hcHNob3QsCiAJCQkJCQkJ CQkJZGVzdCwKIAkJCQkJCQkJCQlvcHRpb25zLT5wYXJhbXMsCiAJCQkJCQkJCQkJX1NQSV9jdXJy ZW50LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkwKTsKLQkJCQlyZXMgPSBfU1BJX3BxdWVyeShxZGVz YywgZmlyZV90cmlnZ2VycywKLQkJCQkJCQkJICBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQg OiAwKTsKKworCQkJCS8qIFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAqLworCQkJCWlmIChmaXJl X3RyaWdnZXJzKQorCQkJCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0 aW9uIGZsYWdzICovCisJCQkJZWxzZQorCQkJCQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9UUklH R0VSUzsKKworCQkJCWlmICghRXhlY3V0b3JTdGFydChxZGVzYywgZWZsYWdzKSkKKwkJCQl7CisJ CQkJCUV4ZWN1dG9yRmluaXNoKHFkZXNjKTsKKwkJCQkJRXhlY3V0b3JFbmQocWRlc2MpOworCQkJ CQlGcmVlUXVlcnlEZXNjKHFkZXNjKTsKKwkJCQkJQXNzZXJ0KGNwbGFuKTsKKwkJCQkJUmVsZWFz ZUNhY2hlZFBsYW4oY3BsYW4sIHBsYW5fb3duZXIpOworCQkJCQlnb3RvIHJlcGxhbjsKKwkJCQl9 CisKKwkJCQlyZXMgPSBfU1BJX3BxdWVyeShxZGVzYywgY2FuU2V0VGFnID8gb3B0aW9ucy0+dGNv dW50IDogMCk7CiAJCQkJRnJlZVF1ZXJ5RGVzYyhxZGVzYyk7CiAJCQl9CiAJCQllbHNlCkBAIC0y ODUwLDEwICsyODgwLDkgQEAgX1NQSV9jb252ZXJ0X3BhcmFtcyhpbnQgbmFyZ3MsIE9pZCAqYXJn dHlwZXMsCiB9CiAKIHN0YXRpYyBpbnQKLV9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBib29sIGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpCitfU1BJX3BxdWVyeShRdWVyeURl c2MgKnF1ZXJ5RGVzYywgdWludDY0IHRjb3VudCkKIHsKIAlpbnQJCQlvcGVyYXRpb24gPSBxdWVy eURlc2MtPm9wZXJhdGlvbjsKLQlpbnQJCQllZmxhZ3M7CiAJaW50CQkJcmVzOwogCiAJc3dpdGNo IChvcGVyYXRpb24pCkBAIC0yODk3LDE0ICsyOTI2LDYgQEAgX1NQSV9wcXVlcnkoUXVlcnlEZXNj ICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCkKIAkJUmVzZXRV c2FnZSgpOwogI2VuZGlmCiAKLQkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMgKi8KLQlpZiAo ZmlyZV90cmlnZ2VycykKLQkJZWZsYWdzID0gMDsJCQkJLyogZGVmYXVsdCBydW4tdG8tY29tcGxl dGlvbiBmbGFncyAqLwotCWVsc2UKLQkJZWZsYWdzID0gRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlM7 Ci0KLQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKLQogCUV4ZWN1dG9yUnVuKHF1 ZXJ5RGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHRjb3VudCwgdHJ1ZSk7CiAKIAlfU1BJX2N1 cnJlbnQtPnByb2Nlc3NlZCA9IHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQ7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL2xtZ3IuYwppbmRleCBlZTliODlhNjcyLi5jODA3ZTljZGNjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9sbWdyLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2Nh cnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0LmgiCiAjaW5jbHVkZSAidXRpbHMv aW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKIAogCiAvKgpAQCAtMzY0LDYg KzM2NSw1MCBAQCBDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShSZWxhdGlvbiByZWxhdGlvbiwgTE9D S01PREUgbG9ja21vZGUsIGJvb2wgb3JzdHJvbmdlcikKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8q CisgKgkJQ2hlY2tSZWxMb2NrZWRCeU1lCisgKgorICogUmV0dXJucyB0cnVlIGlmIGN1cnJlbnQg dHJhbnNhY3Rpb24gaG9sZHMgYSBsb2NrIG9uIHRoZSBnaXZlbiByZWxhdGlvbiBvZgorICogbW9k ZSAnbG9ja21vZGUnLiAgSWYgJ29yc3Ryb25nZXInIGlzIHRydWUsIGEgc3Ryb25nZXIgbG9ja21v ZGUgaXMgYWxzbyBPSy4KKyAqICgiU3Ryb25nZXIiIGlzIGRlZmluZWQgYXMgIm51bWVyaWNhbGx5 IGhpZ2hlciIsIHdoaWNoIGlzIGEgYml0CisgKiBzZW1hbnRpY2FsbHkgZHViaW91cyBidXQgaXMg T0sgZm9yIHRoZSBwdXJwb3NlcyB3ZSB1c2UgdGhpcyBmb3IuKQorICovCitib29sCitDaGVja1Jl bExvY2tlZEJ5TWUoT2lkIHJlbGlkLCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCBvcnN0cm9uZ2Vy KQoreworCU9pZAkJCWRiSWQgPSBnZXRfcmVsX3JlbGlzc2hhcmVkKHJlbGlkKSA/IEludmFsaWRP aWQgOiBNeURhdGFiYXNlSWQ7CisJTE9DS1RBRwkJdGFnOworCisJU0VUX0xPQ0tUQUdfUkVMQVRJ T04odGFnLCBkYklkLCByZWxpZCk7CisKKwlpZiAoTG9ja0hlbGRCeU1lKCZ0YWcsIGxvY2ttb2Rl KSkKKwkJcmV0dXJuIHRydWU7CisKKwlpZiAob3JzdHJvbmdlcikKKwl7CisJCUxPQ0tNT0RFCXNs b2NrbW9kZTsKKworCQlmb3IgKHNsb2NrbW9kZSA9IGxvY2ttb2RlICsgMTsKKwkJCSBzbG9ja21v ZGUgPD0gTWF4TG9ja01vZGU7CisJCQkgc2xvY2ttb2RlKyspCisJCXsKKwkJCWlmIChMb2NrSGVs ZEJ5TWUoJnRhZywgc2xvY2ttb2RlKSkKKwkJCXsKKyNpZmRlZiBOT1RfVVNFRAorCQkJCS8qIFNv bWV0aW1lcyB0aGlzIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzICovCisJ CQkJZWxvZyhXQVJOSU5HLCAibG9jayBtb2RlICVzIHN1YnN0aXR1dGVkIGZvciAlcyBvbiByZWxh dGlvbiAlcyIsCisJCQkJCSBHZXRMb2NrbW9kZU5hbWUodGFnLmxvY2t0YWdfbG9ja21ldGhvZGlk LCBzbG9ja21vZGUpLAorCQkJCQkgR2V0TG9ja21vZGVOYW1lKHRhZy5sb2NrdGFnX2xvY2ttZXRo b2RpZCwgbG9ja21vZGUpLAorCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24p KTsKKyNlbmRpZgorCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIGZh bHNlOworfQorCiAvKgogICoJCUxvY2tIYXNXYWl0ZXJzUmVsYXRpb24KICAqCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMKaW5kZXggMzZjYzk5ZWM5Yy4uY2YyN2ZhMzk2OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMTIz Miw3ICsxMjMyLDEyIEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmlu ZykKIAkJLyoKIAkJICogU3RhcnQgdGhlIHBvcnRhbC4gIE5vIHBhcmFtZXRlcnMgaGVyZS4KIAkJ ICovCi0JCVBvcnRhbFN0YXJ0KHBvcnRhbCwgTlVMTCwgMCwgSW52YWxpZFNuYXBzaG90KTsKKwkJ eworCQkJYm9vbAlwbGFuX3ZhbGlkIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKKworCQkJcGxh bl92YWxpZCA9IFBvcnRhbFN0YXJ0KHBvcnRhbCwgTlVMTCwgMCwgSW52YWxpZFNuYXBzaG90KTsK KwkJCUFzc2VydChwbGFuX3ZhbGlkKTsKKwkJfQogCiAJCS8qCiAJCSAqIFNlbGVjdCB0aGUgYXBw cm9wcmlhdGUgb3V0cHV0IGZvcm1hdDogdGV4dCB1bmxlc3Mgd2UgYXJlIGRvaW5nIGEKQEAgLTE3 MzcsNiArMTc0Miw3IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5wdXRfbWVzc2Fn ZSkKIAkJCQkJCSJjb21tYW5kcyBpZ25vcmVkIHVudGlsIGVuZCBvZiB0cmFuc2FjdGlvbiBibG9j ayIpLAogCQkJCSBlcnJkZXRhaWxfYWJvcnQoKSkpOwogCityZXBsYW46CiAJLyoKIAkgKiBDcmVh dGUgdGhlIHBvcnRhbC4gIEFsbG93IHNpbGVudCByZXBsYWNlbWVudCBvZiBhbiBleGlzdGluZyBw b3J0YWwgb25seQogCSAqIGlmIHRoZSB1bm5hbWVkIHBvcnRhbCBpcyBzcGVjaWZpZWQuCkBAIC0y MDI4LDkgKzIwMzQsMTYgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNz YWdlKQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJLyoKLQkgKiBBbmQgd2UncmUgcmVhZHkg dG8gc3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4KKwkgKiBTdGFydCBwb3J0YWwgZXhlY3V0aW9uLiAg SWYgdGhlIHBvcnRhbCBjb250YWlucyBhIGNhY2hlZCBwbGFuLCBpdCBtdXN0CisJICogYmUgcmVj cmVhdGVkIGlmIHBvcnRhbC0+cGxhbl92YWxpZCBpcyBmYWxzZSB3aGljaCB0ZWxscyB0aGF0IHRo ZSBjYWNoZWQKKwkgKiBwbGFuIHdhcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQgd2hl biBpbml0aWFsaXppbmcgb25lIG9mIHRoZQorCSAqIHBsYW4gdHJlZXMgY29udGFpbmVkIGluIGl0 LgogCSAqLwotCVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1zLCAwLCBJbnZhbGlkU25hcHNob3Qp OworCWlmICghUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEludmFsaWRTbmFwc2hvdCkp CisJeworCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOworCQlnb3RvIHJlcGxhbjsKKwl9CiAK IAkvKgogCSAqIEFwcGx5IHRoZSByZXN1bHQgZm9ybWF0IHJlcXVlc3RzIHRvIHRoZSBwb3J0YWwu CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNv cC9wcXVlcnkuYwppbmRleCA1NTY1ZjIwMGMzLi41MjhmNzk1ZDRmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC90Y29wL3BxdWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAg LTE5LDYgKzE5LDcgQEAKIAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvcHJlcGFyZS5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNjLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3IvdHN0b3JlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNp bmNsdWRlICJwZ190cmFjZS5oIgpAQCAtMzUsMTIgKzM2LDYgQEAKIFBvcnRhbAkJQWN0aXZlUG9y dGFsID0gTlVMTDsKIAogCi1zdGF0aWMgdm9pZCBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBs YW4sCi0JCQkJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKLQkJCQkJCSBQYXJhbUxpc3RJbmZv IHBhcmFtcywKLQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKLQkJCQkJCSBEZXN0 UmVjZWl2ZXIgKmRlc3QsCi0JCQkJCQkgUXVlcnlDb21wbGV0aW9uICpxYyk7CiBzdGF0aWMgdm9p ZCBGaWxsUG9ydGFsU3RvcmUoUG9ydGFsIHBvcnRhbCwgYm9vbCBpc1RvcExldmVsKTsKIHN0YXRp YyB1aW50NjQgUnVuRnJvbVN0b3JlKFBvcnRhbCBwb3J0YWwsIFNjYW5EaXJlY3Rpb24gZGlyZWN0 aW9uLCB1aW50NjQgY291bnQsCiAJCQkJCQkgICBEZXN0UmVjZWl2ZXIgKmRlc3QpOwpAQCAtNjUs NiArNjAsNyBAQCBzdGF0aWMgdm9pZCBEb1BvcnRhbFJld2luZChQb3J0YWwgcG9ydGFsKTsKICAq LwogUXVlcnlEZXNjICoKIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQs CisJCQkJQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJ CQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApA QCAtNzcsNiArNzMsNyBAQCBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10 LAogCiAJcWQtPm9wZXJhdGlvbiA9IHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZTsJLyogb3BlcmF0 aW9uICovCiAJcWQtPnBsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CS8qIHBsYW4gKi8KKwlxZC0+ Y3BsYW4gPSBjcGxhbjsJCQkJLyogQ2FjaGVkUGxhbiwgaWYgcGxhbiBpcyBmcm9tIG9uZSAqLwog CXFkLT5zb3VyY2VUZXh0ID0gc291cmNlVGV4dDsJLyogcXVlcnkgdGV4dCAqLwogCXFkLT5zbmFw c2hvdCA9IFJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOwkvKiBzbmFwc2hvdCAqLwogCS8qIFJJ IGNoZWNrIHNuYXBzaG90ICovCkBAIC0xMTYsODYgKzExMyw2IEBAIEZyZWVRdWVyeURlc2MoUXVl cnlEZXNjICpxZGVzYykKIH0KIAogCi0vKgotICogUHJvY2Vzc1F1ZXJ5Ci0gKgkJRXhlY3V0ZSBh IHNpbmdsZSBwbGFubmFibGUgcXVlcnkgd2l0aGluIGEgUE9SVEFMX01VTFRJX1FVRVJZLAotICoJ CVBPUlRBTF9PTkVfUkVUVVJOSU5HLCBvciBQT1JUQUxfT05FX01PRF9XSVRIIHBvcnRhbAotICoK LSAqCXBsYW46IHRoZSBwbGFuIHRyZWUgZm9yIHRoZSBxdWVyeQotICoJc291cmNlVGV4dDogdGhl IHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeQotICoJcGFyYW1zOiBhbnkgcGFyYW1ldGVycyBuZWVk ZWQKLSAqCWRlc3Q6IHdoZXJlIHRvIHNlbmQgcmVzdWx0cwotICoJcWM6IHdoZXJlIHRvIHN0b3Jl IHRoZSBjb21tYW5kIGNvbXBsZXRpb24gc3RhdHVzIGRhdGEuCi0gKgotICogcWMgbWF5IGJlIE5V TEwgaWYgY2FsbGVyIGRvZXNuJ3Qgd2FudCBhIHN0YXR1cyBzdHJpbmcuCi0gKgotICogTXVzdCBi ZSBjYWxsZWQgaW4gYSBtZW1vcnkgY29udGV4dCB0aGF0IHdpbGwgYmUgcmVzZXQgb3IgZGVsZXRl ZCBvbgotICogZXJyb3I7IG90aGVyd2lzZSB0aGUgZXhlY3V0b3IncyBtZW1vcnkgdXNhZ2Ugd2ls bCBiZSBsZWFrZWQuCi0gKi8KLXN0YXRpYyB2b2lkCi1Qcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQg KnBsYW4sCi0JCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKLQkJCSBQYXJhbUxpc3RJbmZvIHBh cmFtcywKLQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKLQkJCSBEZXN0UmVjZWl2ZXIg KmRlc3QsCi0JCQkgUXVlcnlDb21wbGV0aW9uICpxYykKLXsKLQlRdWVyeURlc2MgICpxdWVyeURl c2M7Ci0KLQkvKgotCSAqIENyZWF0ZSB0aGUgUXVlcnlEZXNjIG9iamVjdAotCSAqLwotCXF1ZXJ5 RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBzb3VyY2VUZXh0LAotCQkJCQkJCQlHZXRBY3Rp dmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCi0JCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVl cnlFbnYsIDApOwotCi0JLyoKLQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUg cGxhbiBmb3IgZXhlY3V0aW9uCi0JICovCi0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIDApOwot Ci0JLyoKLQkgKiBSdW4gdGhlIHBsYW4gdG8gY29tcGxldGlvbi4KLQkgKi8KLQlFeGVjdXRvclJ1 bihxdWVyeURlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwLCB0cnVlKTsKLQotCS8qCi0JICog QnVpbGQgY29tbWFuZCBjb21wbGV0aW9uIHN0YXR1cyBkYXRhLCBpZiBjYWxsZXIgd2FudHMgb25l LgotCSAqLwotCWlmIChxYykKLQl7Ci0JCXN3aXRjaCAocXVlcnlEZXNjLT5vcGVyYXRpb24pCi0J CXsKLQkJCWNhc2UgQ01EX1NFTEVDVDoKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRB R19TRUxFQ1QsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwot CQkJY2FzZSBDTURfSU5TRVJUOgotCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX0lO U0VSVCwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0JCQkJYnJlYWs7Ci0JCQlj YXNlIENNRF9VUERBVEU6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfVVBEQVRF LCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2Ug Q01EX0RFTEVURToKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19ERUxFVEUsIHF1 ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURf TUVSR0U6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfTUVSR0UsIHF1ZXJ5RGVz Yy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJZGVmYXVsdDoKLQkJCQlT ZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19VTktOT1dOLCBxdWVyeURlc2MtPmVzdGF0ZS0+ ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJfQotCX0KLQotCS8qCi0JICogTm93LCB3ZSBj bG9zZSBkb3duIGFsbCB0aGUgc2NhbnMgYW5kIGZyZWUgYWxsb2NhdGVkIHJlc291cmNlcy4KLQkg Ki8KLQlFeGVjdXRvckZpbmlzaChxdWVyeURlc2MpOwotCUV4ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7 Ci0KLQlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7Ci19Ci0KIC8qCiAgKiBDaG9vc2VQb3J0YWxT dHJhdGVneQogICoJCVNlbGVjdCBwb3J0YWwgZXhlY3V0aW9uIHN0cmF0ZWd5IGdpdmVuIHRoZSBp bnRlbmRlZCBzdGF0ZW1lbnQgbGlzdC4KQEAgLTQyNiwxOSArMzQzLDIxIEBAIEZldGNoU3RhdGVt ZW50VGFyZ2V0TGlzdChOb2RlICpzdG10KQogICogcHJlc2VudGx5IGlnbm9yZWQgZm9yIG5vbi1Q T1JUQUxfT05FX1NFTEVDVCBwb3J0YWxzIChpdCdzIG9ubHkgaW50ZW5kZWQKICAqIHRvIGJlIHVz ZWQgZm9yIGN1cnNvcnMpLgogICoKLSAqIE9uIHJldHVybiwgcG9ydGFsIGlzIHJlYWR5IHRvIGFj Y2VwdCBQb3J0YWxSdW4oKSBjYWxscywgYW5kIHRoZSByZXN1bHQKLSAqIHR1cGRlc2MgKGlmIGFu eSkgaXMga25vd24uCisgKiBUcnVlIGlzIHJldHVybmVkIGlmIHBvcnRhbCBpcyByZWFkeSB0byBh Y2NlcHQgUG9ydGFsUnVuKCkgY2FsbHMsIGFuZCB0aGUKKyAqIHJlc3VsdCB0dXBkZXNjIChpZiBh bnkpIGlzIGtub3duLiAgRmFsc2UgaWYgdGhlIHBsYW4gdHJlZSBpcyBubyBsb25nZXIKKyAqIHZh bGlkLCBpbiB3aGljaCBjYXNlLCB0aGUgY2FsbGVyIG11c3QgcmV0cnkgYWZ0ZXIgZ2VuZXJhdGlu ZyBhIG5ldworICogQ2FjaGVkUGxhbi4KICAqLwotdm9pZAorYm9vbAogUG9ydGFsU3RhcnQoUG9y dGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQlpbnQgZWZsYWdzLCBTbmFwc2hv dCBzbmFwc2hvdCkKIHsKIAlQb3J0YWwJCXNhdmVBY3RpdmVQb3J0YWw7CiAJUmVzb3VyY2VPd25l ciBzYXZlUmVzb3VyY2VPd25lcjsKLQlNZW1vcnlDb250ZXh0IHNhdmVQb3J0YWxDb250ZXh0Owog CU1lbW9yeUNvbnRleHQgb2xkQ29udGV4dDsKIAlRdWVyeURlc2MgICpxdWVyeURlc2M7Ci0JaW50 CQkJbXllZmxhZ3M7CisJaW50CQkJbXllZmxhZ3MgPSAwOworCWJvb2wJCXBsYW5fdmFsaWQgPSB0 cnVlOwogCiAJQXNzZXJ0KFBvcnRhbElzVmFsaWQocG9ydGFsKSk7CiAJQXNzZXJ0KHBvcnRhbC0+ c3RhdHVzID09IFBPUlRBTF9ERUZJTkVEKTsKQEAgLTQ0OCwxNSArMzY3LDEzIEBAIFBvcnRhbFN0 YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCSAqLwogCXNhdmVBY3Rp dmVQb3J0YWwgPSBBY3RpdmVQb3J0YWw7CiAJc2F2ZVJlc291cmNlT3duZXIgPSBDdXJyZW50UmVz b3VyY2VPd25lcjsKLQlzYXZlUG9ydGFsQ29udGV4dCA9IFBvcnRhbENvbnRleHQ7CiAJUEdfVFJZ KCk7CiAJewogCQlBY3RpdmVQb3J0YWwgPSBwb3J0YWw7CiAJCWlmIChwb3J0YWwtPnJlc293bmVy KQogCQkJQ3VycmVudFJlc291cmNlT3duZXIgPSBwb3J0YWwtPnJlc293bmVyOwotCQlQb3J0YWxD b250ZXh0ID0gcG9ydGFsLT5wb3J0YWxDb250ZXh0OwogCi0JCW9sZENvbnRleHQgPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oUG9ydGFsQ29udGV4dCk7CisJCW9sZENvbnRleHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8ocG9ydGFsLT5xdWVyeUNvbnRleHQpOwogCiAJCS8qIE11c3QgcmVtZW1iZXIg cG9ydGFsIHBhcmFtIGxpc3QsIGlmIGFueSAqLwogCQlwb3J0YWwtPnBvcnRhbFBhcmFtcyA9IHBh cmFtczsKQEAgLTQ3Miw2ICszODksOCBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJh bUxpc3RJbmZvIHBhcmFtcywKIAkJc3dpdGNoIChwb3J0YWwtPnN0cmF0ZWd5KQogCQl7CiAJCQlj YXNlIFBPUlRBTF9PTkVfU0VMRUNUOgorCQkJY2FzZSBQT1JUQUxfT05FX1JFVFVSTklORzoKKwkJ CWNhc2UgUE9SVEFMX09ORV9NT0RfV0lUSDoKIAogCQkJCS8qIE11c3Qgc2V0IHNuYXBzaG90IGJl Zm9yZSBzdGFydGluZyBleGVjdXRvci4gKi8KIAkJCQlpZiAoc25hcHNob3QpCkBAIC00OTMsNiAr NDEyLDcgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMs CiAJCQkJICogdGhlIGRlc3RpbmF0aW9uIHRvIERlc3ROb25lLgogCQkJCSAqLwogCQkJCXF1ZXJ5 RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhsaW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10LCBwb3J0YWwt PnN0bXRzKSwKKwkJCQkJCQkJCQkJcG9ydGFsLT5jcGxhbiwKIAkJCQkJCQkJCQkJcG9ydGFsLT5z b3VyY2VUZXh0LAogCQkJCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCQkJCQlJ bnZhbGlkU25hcHNob3QsCkBAIC01MDEsMzAgKzQyMSw1MSBAQCBQb3J0YWxTdGFydChQb3J0YWwg cG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCQkJCQkJcG9ydGFsLT5xdWVyeUVu diwKIAkJCQkJCQkJCQkJMCk7CiAKKwkJCQkvKiBSZW1lbWJlciBmb3IgUG9ydGFsUnVuTXVsdGko KS4gKi8KKwkJCQlpZiAocG9ydGFsLT5zdHJhdGVneSA9PSBQT1JUQUxfT05FX1JFVFVSTklORyB8 fAorCQkJCQlwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfTU9EX1dJVEgpCisJCQkJCXBv cnRhbC0+cWRlc2NzID0gbGlzdF9tYWtlMShxdWVyeURlc2MpOworCiAJCQkJLyoKIAkJCQkgKiBJ ZiBpdCdzIGEgc2Nyb2xsYWJsZSBjdXJzb3IsIGV4ZWN1dG9yIG5lZWRzIHRvIHN1cHBvcnQKIAkJ CQkgKiBSRVdJTkQgYW5kIGJhY2t3YXJkcyBzY2FuLCBhcyB3ZWxsIGFzIHdoYXRldmVyIHRoZSBj YWxsZXIKIAkJCQkgKiBtaWdodCd2ZSBhc2tlZCBmb3IuCiAJCQkJICovCi0JCQkJaWYgKHBvcnRh bC0+Y3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRfU0NST0xMKQorCQkJCWlmIChwb3J0YWwtPnN0 cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUICYmCisJCQkJCShwb3J0YWwtPmN1cnNvck9wdGlv bnMgJiBDVVJTT1JfT1BUX1NDUk9MTCkpCiAJCQkJCW15ZWZsYWdzID0gZWZsYWdzIHwgRVhFQ19G TEFHX1JFV0lORCB8IEVYRUNfRkxBR19CQUNLV0FSRDsKIAkJCQllbHNlCiAJCQkJCW15ZWZsYWdz ID0gZWZsYWdzOwogCiAJCQkJLyoKLQkJCQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFy ZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCisJCQkJICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHBy ZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gIEEKKwkJCQkgKiBjYWNoZWQgcGxhbiBtYXkg Z2V0IGludmFsaWRhdGVkIGFzIHdlJ3JlIGRvaW5nIHRoYXQuCiAJCQkJICovCi0JCQkJRXhlY3V0 b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKTsKKwkJCQlpZiAoIUV4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBteWVmbGFncykpCisJCQkJeworCQkJCQlBc3NlcnQocXVlcnlEZXNjLT5jcGxhbik7 CisJCQkJCVBvcnRhbFF1ZXJ5RmluaXNoKHF1ZXJ5RGVzYyk7CisJCQkJCVBvcEFjdGl2ZVNuYXBz aG90KCk7CisJCQkJCXBsYW5fdmFsaWQgPSBmYWxzZTsKKwkJCQkJZ290byBwbGFuX2luaXRfZmFp bGVkOworCQkJCX0KIAogCQkJCS8qCi0JCQkJICogVGhpcyB0ZWxscyBQb3J0YWxDbGVhbnVwIHRv IHNodXQgZG93biB0aGUgZXhlY3V0b3IKKwkJCQkgKiBUaGlzIHRlbGxzIFBvcnRhbENsZWFudXAg dG8gc2h1dCBkb3duIHRoZSBleGVjdXRvciwgdGhvdWdoCisJCQkJICogbm90IG5lZWRlZCBmb3Ig cXVlcmllcyBoYW5kbGVkIGJ5IFBvcnRhbFJ1bk11bHRpKCkuCiAJCQkJICovCi0JCQkJcG9ydGFs LT5xdWVyeURlc2MgPSBxdWVyeURlc2M7CisJCQkJaWYgKHBvcnRhbC0+c3RyYXRlZ3kgPT0gUE9S VEFMX09ORV9TRUxFQ1QpCisJCQkJCXBvcnRhbC0+cXVlcnlEZXNjID0gcXVlcnlEZXNjOwogCiAJ CQkJLyoKLQkJCQkgKiBSZW1lbWJlciB0dXBsZSBkZXNjcmlwdG9yIChjb21wdXRlZCBieSBFeGVj dXRvclN0YXJ0KQorCQkJCSAqIFJlbWVtYmVyIHR1cGxlIGRlc2NyaXB0b3IgKGNvbXB1dGVkIGJ5 IEV4ZWN1dG9yU3RhcnQpLAorCQkJCSAqIHRob3VnaCBtYWtlIGl0IGluZGVwZW5kZW50IG9mIFF1 ZXJ5RGVzYyBmb3IgcXVlcmllcyBoYW5kbGVkCisJCQkJICogYnkgUG9ydGFsUnVuTXVsdGkoKS4K IAkJCQkgKi8KLQkJCQlwb3J0YWwtPnR1cERlc2MgPSBxdWVyeURlc2MtPnR1cERlc2M7CisJCQkJ aWYgKHBvcnRhbC0+c3RyYXRlZ3kgIT0gUE9SVEFMX09ORV9TRUxFQ1QpCisJCQkJCXBvcnRhbC0+ dHVwRGVzYyA9IENyZWF0ZVR1cGxlRGVzY0NvcHkocXVlcnlEZXNjLT50dXBEZXNjKTsKKwkJCQll bHNlCisJCQkJCXBvcnRhbC0+dHVwRGVzYyA9IHF1ZXJ5RGVzYy0+dHVwRGVzYzsKIAogCQkJCS8q CiAJCQkJICogUmVzZXQgY3Vyc29yIHBvc2l0aW9uIGRhdGEgdG8gInN0YXJ0IG9mIHF1ZXJ5IgpA QCAtNTM2LDI5ICs0NzcsNiBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJ bmZvIHBhcmFtcywKIAkJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQkJCWJyZWFrOwogCi0JCQlj YXNlIFBPUlRBTF9PTkVfUkVUVVJOSU5HOgotCQkJY2FzZSBQT1JUQUxfT05FX01PRF9XSVRIOgot Ci0JCQkJLyoKLQkJCQkgKiBXZSBkb24ndCBzdGFydCB0aGUgZXhlY3V0b3IgdW50aWwgd2UgYXJl IHRvbGQgdG8gcnVuIHRoZQotCQkJCSAqIHBvcnRhbC4gIFdlIGRvIG5lZWQgdG8gc2V0IHVwIHRo ZSByZXN1bHQgdHVwZGVzYy4KLQkJCQkgKi8KLQkJCQl7Ci0JCQkJCVBsYW5uZWRTdG10ICpwc3Rt dDsKLQotCQkJCQlwc3RtdCA9IFBvcnRhbEdldFByaW1hcnlTdG10KHBvcnRhbCk7Ci0JCQkJCXBv cnRhbC0+dHVwRGVzYyA9Ci0JCQkJCQlFeGVjQ2xlYW5UeXBlRnJvbVRMKHBzdG10LT5wbGFuVHJl ZS0+dGFyZ2V0bGlzdCk7Ci0JCQkJfQotCi0JCQkJLyoKLQkJCQkgKiBSZXNldCBjdXJzb3IgcG9z aXRpb24gZGF0YSB0byAic3RhcnQgb2YgcXVlcnkiCi0JCQkJICovCi0JCQkJcG9ydGFsLT5hdFN0 YXJ0ID0gdHJ1ZTsKLQkJCQlwb3J0YWwtPmF0RW5kID0gZmFsc2U7CS8qIGFsbG93IGZldGNoZXMg Ki8KLQkJCQlwb3J0YWwtPnBvcnRhbFBvcyA9IDA7Ci0JCQkJYnJlYWs7Ci0KIAkJCWNhc2UgUE9S VEFMX1VUSUxfU0VMRUNUOgogCiAJCQkJLyoKQEAgLTU4MSw3ICs0OTksODEgQEAgUG9ydGFsU3Rh cnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJYnJlYWs7CiAKIAkJ CWNhc2UgUE9SVEFMX01VTFRJX1FVRVJZOgotCQkJCS8qIE5lZWQgZG8gbm90aGluZyBub3cgKi8K KwkJCQl7CisJCQkJCUxpc3RDZWxsICAgKmxjOworCQkJCQlib29sCQlmaXJzdCA9IHRydWU7CisK KwkJCQkJbXllZmxhZ3MgPSBlZmxhZ3M7CisJCQkJCWZvcmVhY2gobGMsIHBvcnRhbC0+c3RtdHMp CisJCQkJCXsKKwkJCQkJCVBsYW5uZWRTdG10ICpwbGFuID0gbGZpcnN0X25vZGUoUGxhbm5lZFN0 bXQsIGxjKTsKKwkJCQkJCWJvb2wJCWlzX3V0aWxpdHkgPSAocGxhbi0+dXRpbGl0eVN0bXQgIT0g TlVMTCk7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBQdXNoIHRoZSBzbmFwc2hvdCB0byBiZSB1c2Vk IGJ5IHRoZSBleGVjdXRvci4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFpc191dGlsaXR5KQorCQkJ CQkJeworCQkJCQkJCS8qCisJCQkJCQkJICogTXVzdCBjb3B5IHRoZSBzbmFwc2hvdCBmb3IgYWxs IHN0YXRlbWVudHMKKwkJCQkJCQkgKiBleGNlcHQgdGhlYyBmaXJzdCBhcyB3ZSdsbCBuZWVkIHRv IHVwZGF0ZSBpdHMKKwkJCQkJCQkgKiBjb21tYW5kIElELgorCQkJCQkJCSAqLworCQkJCQkJCWlm ICghZmlyc3QpCisJCQkJCQkJCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBz aG90KCkpOworCQkJCQkJCWVsc2UKKwkJCQkJCQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5z YWN0aW9uU25hcHNob3QoKSk7CisJCQkJCQl9CisKKwkJCQkJCS8qCisJCQkJCQkgKiBGcm9tIHRo ZSAybmQgc3RhdGVtZW50IG9ud2FyZHMsIHVwZGF0ZSB0aGUgY29tbWFuZAorCQkJCQkJICogSUQg YW5kIHRoZSBzbmFwc2hvdCB0byBtYXRjaC4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFmaXJzdCkK KwkJCQkJCXsKKwkJCQkJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCQkJCQkJCVVwZGF0 ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CisJCQkJCQl9CisKKwkJCQkJCWZpcnN0ID0gZmFs c2U7CisKKwkJCQkJCS8qCisJCQkJCQkgKiBDcmVhdGUgdGhlIFF1ZXJ5RGVzYyBvYmplY3QuICBE ZXN0UmVjZWl2ZXIgd2lsbAorCQkJCQkJICogYmUgc2V0IGluIFBvcnRhbFJ1bk11bHRpKCkuCisJ CQkJCQkgKi8KKwkJCQkJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBwb3J0YWwt PmNwbGFuLAorCQkJCQkJCQkJCQkJCXBvcnRhbC0+c291cmNlVGV4dCwKKwkJCQkJCQkJCQkJCQkh aXNfdXRpbGl0eSA/CisJCQkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSA6CisJCQkJCQkJ CQkJCQkJSW52YWxpZFNuYXBzaG90LAorCQkJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKKwkJ CQkJCQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkJCXBhcmFtcywKKwkJCQkJCQkJCQkJCQlwb3J0 YWwtPnF1ZXJ5RW52LCAwKTsKKworCQkJCQkJLyogUmVtZW1iZXIgZm9yIFBvcnRhbFJ1bk11bHRp KCkgKi8KKwkJCQkJCXBvcnRhbC0+cWRlc2NzID0gbGFwcGVuZChwb3J0YWwtPnFkZXNjcywgcXVl cnlEZXNjKTsKKworCQkJCQkJaWYgKGlzX3V0aWxpdHkpCisJCQkJCQkJY29udGludWU7CisKKwkJ CQkJCS8qCisJCQkJCQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBm b3IKKwkJCQkJCSAqIGV4ZWN1dGlvbi4gIEEgY2FjaGVkIHBsYW4gbWF5IGdldCBpbnZhbGlkYXRl ZCBhcworCQkJCQkJICogd2UncmUgZG9pbmcgdGhhdC4KKwkJCQkJCSAqLworCQkJCQkJaWYgKCFF eGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxhZ3MpKQorCQkJCQkJeworCQkJCQkJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CisJCQkJCQkJQXNzZXJ0KHF1ZXJ5RGVzYy0+Y3BsYW4pOworCQkJCQkJ CVBvcnRhbFF1ZXJ5RmluaXNoKHF1ZXJ5RGVzYyk7CisJCQkJCQkJcGxhbl92YWxpZCA9IGZhbHNl OworCQkJCQkJCWdvdG8gcGxhbl9pbml0X2ZhaWxlZDsKKwkJCQkJCX0KKwkJCQkJCVBvcEFjdGl2 ZVNuYXBzaG90KCk7CisJCQkJCX0KKwkJCQl9CisKIAkJCQlwb3J0YWwtPnR1cERlc2MgPSBOVUxM OwogCQkJCWJyZWFrOwogCQl9CkBAIC01OTQsMTkgKzU4NiwyMCBAQCBQb3J0YWxTdGFydChQb3J0 YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJLyogUmVzdG9yZSBnbG9iYWwgdmFy cyBhbmQgcHJvcGFnYXRlIGVycm9yICovCiAJCUFjdGl2ZVBvcnRhbCA9IHNhdmVBY3RpdmVQb3J0 YWw7CiAJCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2ZVJlc291cmNlT3duZXI7Ci0JCVBvcnRh bENvbnRleHQgPSBzYXZlUG9ydGFsQ29udGV4dDsKIAogCQlQR19SRV9USFJPVygpOwogCX0KIAlQ R19FTkRfVFJZKCk7CiAKKwlwb3J0YWwtPnN0YXR1cyA9IFBPUlRBTF9SRUFEWTsKKworcGxhbl9p bml0X2ZhaWxlZDoKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ29udGV4dCk7CiAKIAlBY3Rp dmVQb3J0YWwgPSBzYXZlQWN0aXZlUG9ydGFsOwogCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2 ZVJlc291cmNlT3duZXI7Ci0JUG9ydGFsQ29udGV4dCA9IHNhdmVQb3J0YWxDb250ZXh0OwogCi0J cG9ydGFsLT5zdGF0dXMgPSBQT1JUQUxfUkVBRFk7CisJcmV0dXJuIHBsYW5fdmFsaWQ7CiB9CiAK IC8qCkBAIC0xMTkzLDcgKzExODYsNyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAog CQkJICAgUXVlcnlDb21wbGV0aW9uICpxYykKIHsKIAlib29sCQlhY3RpdmVfc25hcHNob3Rfc2V0 ID0gZmFsc2U7Ci0JTGlzdENlbGwgICAqc3RtdGxpc3RfaXRlbTsKKwlMaXN0Q2VsbCAgICpxZGVz Y19pdGVtOwogCiAJLyoKIAkgKiBJZiB0aGUgZGVzdGluYXRpb24gaXMgRGVzdFJlbW90ZUV4ZWN1 dGUsIGNoYW5nZSB0byBEZXN0Tm9uZS4gIFRoZQpAQCAtMTIxNCw5ICsxMjA3LDEwIEBAIFBvcnRh bFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJICogTG9vcCB0byBoYW5kbGUgdGhlIGluZGl2aWR1 YWwgcXVlcmllcyBnZW5lcmF0ZWQgZnJvbSBhIHNpbmdsZSBwYXJzZXRyZWUKIAkgKiBieSBhbmFs eXNpcyBhbmQgcmV3cml0ZS4KIAkgKi8KLQlmb3JlYWNoKHN0bXRsaXN0X2l0ZW0sIHBvcnRhbC0+ c3RtdHMpCisJZm9yZWFjaChxZGVzY19pdGVtLCBwb3J0YWwtPnFkZXNjcykKIAl7Ci0JCVBsYW5u ZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBzdG10bGlzdF9pdGVtKTsK KwkJUXVlcnlEZXNjICpxZGVzYyA9IChRdWVyeURlc2MgKikgbGZpcnN0KHFkZXNjX2l0ZW0pOwor CQlQbGFubmVkU3RtdCAqcHN0bXQgPSBxZGVzYy0+cGxhbm5lZHN0bXQ7CiAKIAkJLyoKIAkJICog SWYgd2UgZ290IGEgY2FuY2VsIHNpZ25hbCBpbiBwcmlvciBjb21tYW5kLCBxdWl0CkBAIC0xMjMz LDMzICsxMjI3LDI2IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQlpZiAobG9n X2V4ZWN1dG9yX3N0YXRzKQogCQkJCVJlc2V0VXNhZ2UoKTsKIAotCQkJLyoKLQkJCSAqIE11c3Qg YWx3YXlzIGhhdmUgYSBzbmFwc2hvdCBmb3IgcGxhbm5hYmxlIHF1ZXJpZXMuICBGaXJzdCB0aW1l Ci0JCQkgKiB0aHJvdWdoLCB0YWtlIGEgbmV3IHNuYXBzaG90OyBmb3Igc3Vic2VxdWVudCBxdWVy aWVzIGluIHRoZQotCQkJICogc2FtZSBwb3J0YWwsIGp1c3QgdXBkYXRlIHRoZSBzbmFwc2hvdCdz IGNvcHkgb2YgdGhlIGNvbW1hbmQKLQkJCSAqIGNvdW50ZXIuCi0JCQkgKi8KKwkJCS8qIFB1c2gg dGhlIHNuYXBzaG90IGZvciBwbGFubmFibGUgcXVlcmllcy4gKi8KIAkJCWlmICghYWN0aXZlX3Nu YXBzaG90X3NldCkKIAkJCXsKLQkJCQlTbmFwc2hvdAlzbmFwc2hvdCA9IEdldFRyYW5zYWN0aW9u U25hcHNob3QoKTsKKwkJCQlTbmFwc2hvdAlzbmFwc2hvdCA9IHFkZXNjLT5zbmFwc2hvdDsKIAot CQkJCS8qIElmIHRvbGQgdG8sIHJlZ2lzdGVyIHRoZSBzbmFwc2hvdCBhbmQgc2F2ZSBpbiBwb3J0 YWwgKi8KKwkJCQkvKgorCQkJCSAqIElmIHRvbGQgdG8sIHJlZ2lzdGVyIHRoZSBzbmFwc2hvdCBh bmQgc2F2ZSBpbiBwb3J0YWwKKwkJCQkgKgorCQkJCSAqIE5vdGUgdGhhdCB0aGUgY29tbWFuZCBJ RCBvZiBxZGVzYy0+c25hcHNob3QgZm9yIDJuZCBxdWVyeQorCQkJCSAqIG9ud2FyZHMgd291bGQg aGF2ZSBiZWVuIHVwZGF0ZWQgaW4gUG9ydGFsU3RhcnQoKSB0byBhY2NvdW50CisJCQkJICogZm9y IENDSSgpIGRvbmUgYmV0d2VlbiBxdWVyaWVzLCBidXQgaXQncyBPSyB0aGF0IGhlcmUgd2UKKwkJ CQkgKiBkb24ndCBsaWtld2lzZSB1cGRhdGUgaG9sZFNuYXBzaG90J3MgY29tbWFuZCBJRC4KKwkJ CQkgKi8KIAkJCQlpZiAoc2V0SG9sZFNuYXBzaG90KQogCQkJCXsKIAkJCQkJc25hcHNob3QgPSBS ZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJCQkJcG9ydGFsLT5ob2xkU25hcHNob3QgPSBz bmFwc2hvdDsKIAkJCQl9CiAKLQkJCQkvKgotCQkJCSAqIFdlIGNhbid0IGhhdmUgdGhlIGhvbGRT bmFwc2hvdCBhbHNvIGJlIHRoZSBhY3RpdmUgb25lLAotCQkJCSAqIGJlY2F1c2UgVXBkYXRlQWN0 aXZlU25hcHNob3RDb21tYW5kSWQgd291bGQgY29tcGxhaW4uICBTbwotCQkJCSAqIGZvcmNlIGFu IGV4dHJhIHNuYXBzaG90IGNvcHkuICBQbGFpbiBQdXNoQWN0aXZlU25hcHNob3QKLQkJCQkgKiB3 b3VsZCBoYXZlIGNvcGllZCB0aGUgdHJhbnNhY3Rpb24gc25hcHNob3QgYW55d2F5LCBzbyB0aGlz Ci0JCQkJICogb25seSBhZGRzIGEgY29weSBzdGVwIHdoZW4gc2V0SG9sZFNuYXBzaG90IGlzIHRy dWUuICAoSXQncwotCQkJCSAqIG9rYXkgZm9yIHRoZSBjb21tYW5kIElEIG9mIHRoZSBhY3RpdmUg c25hcHNob3QgdG8gZGl2ZXJnZQotCQkJCSAqIGZyb20gd2hhdCBob2xkU25hcHNob3QgaGFzLikK LQkJCQkgKi8KLQkJCQlQdXNoQ29waWVkU25hcHNob3Qoc25hcHNob3QpOworCQkJCVB1c2hBY3Rp dmVTbmFwc2hvdChzbmFwc2hvdCk7CiAKIAkJCQkvKgogCQkJCSAqIEFzIGZvciBQT1JUQUxfT05F X1NFTEVDVCBwb3J0YWxzLCBpdCBkb2VzIG5vdCBzZWVtCkBAIC0xMjY4LDI2ICsxMjU1LDM5IEBA IFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAKIAkJCQlhY3RpdmVfc25hcHNob3Rfc2V0 ID0gdHJ1ZTsKIAkJCX0KLQkJCWVsc2UKLQkJCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJ ZCgpOwogCisJCQkvKgorCQkJICogUnVuIHRoZSBwbGFuIHRvIGNvbXBsZXRpb24uCisJCQkgKi8K KwkJCXFkZXNjLT5kZXN0ID0gZGVzdDsKKwkJCUV4ZWN1dG9yUnVuKHFkZXNjLCBGb3J3YXJkU2Nh bkRpcmVjdGlvbiwgMCwgdHJ1ZSk7CisKKwkJCS8qCisJCQkgKiBCdWlsZCBjb21tYW5kIGNvbXBs ZXRpb24gc3RhdHVzIGRhdGEgaWYgbmVlZGVkLgorCQkJICovCiAJCQlpZiAocHN0bXQtPmNhblNl dFRhZykKIAkJCXsKLQkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5nICovCi0JCQkJ UHJvY2Vzc1F1ZXJ5KHBzdG10LAotCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCi0JCQkJCQkJ IHBvcnRhbC0+cG9ydGFsUGFyYW1zLAotCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LAotCQkJCQkJ CSBkZXN0LCBxYyk7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJLyogc3RtdCBhZGRlZCBieSBy ZXdyaXRlIGNhbm5vdCBzZXQgdGFnICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAotCQkJCQkJ CSBwb3J0YWwtPnNvdXJjZVRleHQsCi0JCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAotCQkJ CQkJCSBwb3J0YWwtPnF1ZXJ5RW52LAotCQkJCQkJCSBhbHRkZXN0LCBOVUxMKTsKKwkJCQlzd2l0 Y2ggKHFkZXNjLT5vcGVyYXRpb24pCisJCQkJeworCQkJCQljYXNlIENNRF9TRUxFQ1Q6CisJCQkJ CQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19TRUxFQ1QsIHFkZXNjLT5lc3RhdGUtPmVz X3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBDTURfSU5TRVJUOgorCQkJCQkJ U2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfSU5TRVJULCBxZGVzYy0+ZXN0YXRlLT5lc19w cm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgQ01EX1VQREFURToKKwkJCQkJCVNl dFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1VQREFURSwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJv Y2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIENNRF9ERUxFVEU6CisJCQkJCQlTZXRR dWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19ERUxFVEUsIHFkZXNjLT5lc3RhdGUtPmVzX3Byb2Nl c3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBDTURfTUVSR0U6CisJCQkJCQlTZXRRdWVy eUNvbXBsZXRpb24ocWMsIENNRFRBR19NRVJHRSwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2Vk KTsKKwkJCQkJCWJyZWFrOworCQkJCQlkZWZhdWx0OgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9u KHFjLCBDTURUQUdfVU5LTk9XTiwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJ CWJyZWFrOworCQkJCX0KIAkJCX0KIAogCQkJaWYgKGxvZ19leGVjdXRvcl9zdGF0cykKQEAgLTEz NDIsMTIgKzEzNDIsMTIgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJaWYgKHBv cnRhbC0+c3RtdHMgPT0gTklMKQogCQkJYnJlYWs7CiAKLQkJLyoKLQkJICogSW5jcmVtZW50IGNv bW1hbmQgY291bnRlciBiZXR3ZWVuIHF1ZXJpZXMsIGJ1dCBub3QgYWZ0ZXIgdGhlIGxhc3QKLQkJ ICogb25lLgotCQkgKi8KLQkJaWYgKGxuZXh0KHBvcnRhbC0+c3RtdHMsIHN0bXRsaXN0X2l0ZW0p ICE9IE5VTEwpCi0JCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCQlpZiAocWRlc2MtPmVz dGF0ZSkKKwkJeworCQkJRXhlY3V0b3JGaW5pc2gocWRlc2MpOworCQkJRXhlY3V0b3JFbmQocWRl c2MpOworCQl9CisJCUZyZWVRdWVyeURlc2MocWRlc2MpOwogCX0KIAogCS8qIFBvcCB0aGUgc25h cHNob3QgaWYgd2UgcHVzaGVkIG9uZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMK aW5kZXggZmM2ZDI2N2U0NC4uMjcyNWQwMjMxMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMKQEAgLTIwOTUsNiArMjA5NSwyNyBAQCBnZXRfcmVsX3BlcnNpc3RlbmNlKE9pZCByZWxp ZCkKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogZ2V0X3JlbF9yZWxpc3NoYXJlZAorICoK KyAqCQlSZXR1cm5zIGlmIHRoZSBnaXZlbiByZWxhdGlvbiBpcyBzaGFyZWQgb3Igbm90CisgKi8K K2Jvb2wKK2dldF9yZWxfcmVsaXNzaGFyZWQoT2lkIHJlbGlkKQoreworCUhlYXBUdXBsZQl0cDsK KwlGb3JtX3BnX2NsYXNzIHJlbHR1cDsKKwlib29sCQlyZXN1bHQ7CisKKwl0cCA9IFNlYXJjaFN5 c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpKTsKKwlpZiAoIUhlYXBUdXBs ZUlzVmFsaWQodHApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmVs YXRpb24gJXUiLCByZWxpZCk7CisJcmVsdHVwID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0 cCk7CisJcmVzdWx0ID0gcmVsdHVwLT5yZWxpc3NoYXJlZDsKKwlSZWxlYXNlU3lzQ2FjaGUodHAp OworCisJcmV0dXJuIHJlc3VsdDsKK30KIAogLyoJCQkJLS0tLS0tLS0tLSBUUkFOU0ZPUk0gQ0FD SEUgLS0tLS0tLS0tLQkJCQkJCSAqLwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCmlu ZGV4IGQ2N2NkOWE0MDUuLjg0YTM1NGE3MDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNo ZS5jCkBAIC0xMDIsMTMgKzEwMiwxMyBAQCBzdGF0aWMgdm9pZCBSZWxlYXNlR2VuZXJpY1BsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgTGlzdCAqUmV2YWxpZGF0ZUNh Y2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSAgIFF1ZXJ5 RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIHN0YXRpYyBib29sIENoZWNrQ2FjaGVkUGxhbihDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKK3N0YXRpYyBib29sIEdlbmVyaWNQbGFuSXNWYWxp ZChDYWNoZWRQbGFuICpjcGxhbik7CiBzdGF0aWMgQ2FjaGVkUGxhbiAqQnVpbGRDYWNoZWRQbGFu KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCQkJCQkJCQkgICBQ YXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiBz dGF0aWMgYm9vbCBjaG9vc2VfY3VzdG9tX3BsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZSwKIAkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKTsKIHN0YXRpYyBkb3VibGUg Y2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcik7 CiBzdGF0aWMgUXVlcnkgKlF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRzKTsKLXN0 YXRpYyB2b2lkIEFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1 aXJlKTsKIHN0YXRpYyB2b2lkIEFjcXVpcmVQbGFubmVyTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBi b29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVlcnkgKnBhcnNl dHJlZSwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyBib29sIFNjYW5RdWVyeVdhbGtlcihOb2RlICpu b2RlLCBib29sICphY3F1aXJlKTsKQEAgLTc5MCw4ICs3OTAsMTQgQEAgUmV2YWxpZGF0ZUNhY2hl ZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKiBDYWxsZXIgbXVzdCBoYXZl IGFscmVhZHkgY2FsbGVkIFJldmFsaWRhdGVDYWNoZWRRdWVyeSB0byB2ZXJpZnkgdGhhdCB0aGUK ICAqIHF1ZXJ5dHJlZSBpcyB1cCB0byBkYXRlLgogICoKLSAqIE9uIGEgInRydWUiIHJldHVybiwg d2UgaGF2ZSBhY3F1aXJlZCB0aGUgbG9ja3MgbmVlZGVkIHRvIHJ1biB0aGUgcGxhbi4KLSAqIChX ZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRvIGJlIHJhY2UtY29uZGl0aW9u LWZyZWUuKQorICogTm90ZSB0aG91Z2ggdGhhdCBpZiB0aGUgcGxhbiBjb250YWlucyBhbnkgY2hp bGQgcmVsYXRpb25zIHRoYXQgd291bGQgaGF2ZQorICogYmVlbiBhZGRlZCBieSB0aGUgcGxhbm5l ciwgd2hpY2ggd291bGQgbm90IGhhdmUgYmVlbiBsb2NrZWQgeWV0IChiZWNhdXNlCisgKiBBY3F1 aXJlUGxhbm5lckxvY2tzKCkgb25seSBsb2NrcyByZWxhdGlvbnMgdGhhdCB3b3VsZCBiZSBwcmVz ZW50IGluIHRoZQorICogcmFuZ2UgdGFibGUgYmVmb3JlIGVudGVyaW5nIHRoZSBwbGFubmVyKSwg dGhlIHBsYW4gY291bGQgZ28gc3RhbGUgYmVmb3JlCisgKiBpdCByZWFjaGVzIGV4ZWN1dGlvbiBp ZiBhbnkgb2YgdGhvc2UgY2hpbGQgcmVsYXRpb25zIGdldCBtb2RpZmllZAorICogY29uY3VycmVu dGx5LiAgVGhlIGV4ZWN1dG9yIG11c3QgY2hlY2sgdGhhdCB0aGUgcGxhbiAoQ2FjaGVkUGxhbikg aXMgc3RpbGwKKyAqIHZhbGlkIGFmdGVyIHRha2luZyBhIGxvY2sgb24gZWFjaCBvZiB0aGUgY2hp bGQgdGFibGVzLCBhbmQgaWYgaXQgaXMgbm90LAorICogYXNrIHRoZSBjYWxsZXIgdG8gcmVjcmVh dGUgdGhlIHBsYW4uCiAgKi8KIHN0YXRpYyBib29sCiBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSkKQEAgLTgwNSw2MCArODExLDU2IEBAIENoZWNrQ2FjaGVkUGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCWlmICghcGxhbikKIAkJcmV0dXJuIGZh bHNlOwogCi0JQXNzZXJ0KHBsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOwotCS8qIEdl bmVyaWMgcGxhbnMgYXJlIG5ldmVyIG9uZS1zaG90ICovCi0JQXNzZXJ0KCFwbGFuLT5pc19vbmVz aG90KTsKKwlpZiAoR2VuZXJpY1BsYW5Jc1ZhbGlkKHBsYW4pKQorCQlyZXR1cm4gdHJ1ZTsKIAog CS8qCi0JICogSWYgcGxhbiBpc24ndCB2YWxpZCBmb3IgY3VycmVudCByb2xlLCB3ZSBjYW4ndCB1 c2UgaXQuCisJICogUGxhbiBoYXMgYmVlbiBpbnZhbGlkYXRlZCwgc28gdW5saW5rIGl0IGZyb20g dGhlIHBhcmVudCBhbmQgcmVsZWFzZSBpdC4KIAkgKi8KLQlpZiAocGxhbi0+aXNfdmFsaWQgJiYg cGxhbi0+ZGVwZW5kc09uUm9sZSAmJgotCQlwbGFuLT5wbGFuUm9sZUlkICE9IEdldFVzZXJJZCgp KQotCQlwbGFuLT5pc192YWxpZCA9IGZhbHNlOworCVJlbGVhc2VHZW5lcmljUGxhbihwbGFuc291 cmNlKTsKIAotCS8qCi0JICogSWYgaXQgYXBwZWFycyB2YWxpZCwgYWNxdWlyZSBsb2NrcyBhbmQg cmVjaGVjazsgdGhpcyBpcyBtdWNoIHRoZSBzYW1lCi0JICogbG9naWMgYXMgaW4gUmV2YWxpZGF0 ZUNhY2hlZFF1ZXJ5LCBidXQgZm9yIGEgcGxhbi4KLQkgKi8KLQlpZiAocGxhbi0+aXNfdmFsaWQp CisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogR2VuZXJpY1BsYW5Jc1ZhbGlkCisgKgkJSXMg YSBnZW5lcmljIHBsYW4gc3RpbGwgdmFsaWQ/CisgKgorICogSXQgbWF5IGhhdmUgZ29uZSBzdGFs ZSBkdWUgdG8gY29uY3VycmVudCBzY2hlbWEgbW9kaWZpY2F0aW9ucyBvZiByZWxhdGlvbnMKKyAq IG1lbnRpb25lZCBpbiB0aGUgcGxhbiBvciBhIGNvdXBsZSBvZiBvdGhlciB0aGluZ3MgbWVudGlv bmVkIGJlbG93LgorICovCitzdGF0aWMgYm9vbAorR2VuZXJpY1BsYW5Jc1ZhbGlkKENhY2hlZFBs YW4gKmNwbGFuKQoreworCUFzc2VydChjcGxhbiAhPSBOVUxMKTsKKwlBc3NlcnQoY3BsYW4tPm1h Z2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOworCS8qIEdlbmVyaWMgcGxhbnMgYXJlIG5ldmVyIG9u ZS1zaG90ICovCisJQXNzZXJ0KCFjcGxhbi0+aXNfb25lc2hvdCk7CisKKwlpZiAoY3BsYW4tPmlz X3ZhbGlkKQogCXsKIAkJLyoKIAkJICogUGxhbiBtdXN0IGhhdmUgcG9zaXRpdmUgcmVmY291bnQg YmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGJ5CiAJCSAqIHBsYW5zb3VyY2U7IHNvIG5vIG5lZWQg dG8gZmVhciBpdCBkaXNhcHBlYXJzIHVuZGVyIHVzIGhlcmUuCiAJCSAqLwotCQlBc3NlcnQocGxh bi0+cmVmY291bnQgPiAwKTsKLQotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xp c3QsIHRydWUpOworCQlBc3NlcnQoY3BsYW4tPnJlZmNvdW50ID4gMCk7CiAKIAkJLyoKLQkJICog SWYgcGxhbiB3YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUgaWYgVHJhbnNhY3Rpb25YbWluIGhh cwotCQkgKiBhZHZhbmNlZCwgYW5kIGlmIHNvIGludmFsaWRhdGUgaXQuCisJCSAqIElmIHBsYW4g aXNuJ3QgdmFsaWQgZm9yIGN1cnJlbnQgcm9sZSwgd2UgY2FuJ3QgdXNlIGl0LgogCQkgKi8KLQkJ aWYgKHBsYW4tPmlzX3ZhbGlkICYmCi0JCQlUcmFuc2FjdGlvbklkSXNWYWxpZChwbGFuLT5zYXZl ZF94bWluKSAmJgotCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMocGxhbi0+c2F2ZWRfeG1pbiwgVHJh bnNhY3Rpb25YbWluKSkKLQkJCXBsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CisJCWlmIChjcGxhbi0+ ZGVwZW5kc09uUm9sZSAmJiBjcGxhbi0+cGxhblJvbGVJZCAhPSBHZXRVc2VySWQoKSkKKwkJCWNw bGFuLT5pc192YWxpZCA9IGZhbHNlOwogCiAJCS8qCi0JCSAqIEJ5IG5vdywgaWYgYW55IGludmFs aWRhdGlvbiBoYXMgaGFwcGVuZWQsIHRoZSBpbnZhbCBjYWxsYmFjawotCQkgKiBmdW5jdGlvbnMg d2lsbCBoYXZlIG1hcmtlZCB0aGUgcGxhbiBpbnZhbGlkLgorCQkgKiBJZiBwbGFuIHdhcyB0cmFu c2llbnQsIGNoZWNrIHRvIHNlZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFzCisJCSAqIGFkdmFuY2Vk LCBhbmQgaWYgc28gaW52YWxpZGF0ZSBpdC4KIAkJICovCi0JCWlmIChwbGFuLT5pc192YWxpZCkK LQkJewotCQkJLyogU3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVkIGFuZCBsb2NrZWQgdGhlIHF1ZXJ5 LiAqLwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQotCQkvKiBPb3BzLCB0aGUgcmFjZSBjYXNlIGhh cHBlbmVkLiAgUmVsZWFzZSB1c2VsZXNzIGxvY2tzLiAqLwotCQlBY3F1aXJlRXhlY3V0b3JMb2Nr cyhwbGFuLT5zdG10X2xpc3QsIGZhbHNlKTsKKwkJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGNw bGFuLT5zYXZlZF94bWluKSAmJgorCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMoY3BsYW4tPnNhdmVk X3htaW4sIFRyYW5zYWN0aW9uWG1pbikpCisJCQljcGxhbi0+aXNfdmFsaWQgPSBmYWxzZTsKIAl9 CiAKLQkvKgotCSAqIFBsYW4gaGFzIGJlZW4gaW52YWxpZGF0ZWQsIHNvIHVubGluayBpdCBmcm9t IHRoZSBwYXJlbnQgYW5kIHJlbGVhc2UgaXQuCi0JICovCi0JUmVsZWFzZUdlbmVyaWNQbGFuKHBs YW5zb3VyY2UpOwotCi0JcmV0dXJuIGZhbHNlOworCXJldHVybiBjcGxhbi0+aXNfdmFsaWQ7CiB9 CiAKIC8qCkBAIC0xMTI4LDggKzExMzAsMTUgQEAgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFu ICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqIHBsYW4gb3IgYSBjdXN0b20gcGxhbiBm b3IgdGhlIGdpdmVuIHBhcmFtZXRlcnM6IHRoZSBjYWxsZXIgZG9lcyBub3Qga25vdwogICogd2hp Y2ggaXQgd2lsbCBnZXQuCiAgKgotICogT24gcmV0dXJuLCB0aGUgcGxhbiBpcyB2YWxpZCBhbmQg d2UgaGF2ZSBzdWZmaWNpZW50IGxvY2tzIHRvIGJlZ2luCi0gKiBleGVjdXRpb24uCisgKiBPbiBy ZXR1cm4sIHRoZSBwbGFuIGlzIHZhbGlkIHVubGVzcyBpdCBjb250YWlucyBpbmhlcml0YW5jZS9w YXJ0aXRpb24gY2hpbGQKKyAqIHRhYmxlcywgdGhhdCBpcywgb25seSB0aGUgbG9ja3Mgb24gdGhl IHRhYmxlcyBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5IGhhdmUKKyAqIGJlZW4gdGFrZW4uICBJZiBh bnkgb2YgdGhvc2UgdGFibGVzIGhhdmUgaW5oZXJpdGFuY2UvcGFydGl0aW9uIHRhYmxlcywgdGhl CisgKiBleGVjdXRvciBtdXN0IGFsc28gbG9jayB0aGVtIGJlZm9yZSBleGVjdXRpbmcgdGhlIHBs YW4gYW5kIGlmIHRoZSBwbGFuIGdldHMKKyAqIGludmFsaWRhdGVkIGFzIGEgcmVzdWx0IG9mIHRh a2luZyB0aG9zZSBsb2NrcywgbXVzdCBhc2sgdGhlIGNhbGxlciB0byBnZXQKKyAqIGEgbmV3IHBs YW4gYnkgY2FsbGluZyBoZXJlIGFnYWluLiAgTG9ja2luZyBvZiB0aGUgY2hpbGQgdGFibGVzIG11 c3QgYmUKKyAqIGRlZmVycmVkIHRvIHRoZSBleGVjdXRvciBsaWtlIHRoaXMsIGJlY2F1c2Ugbm90 IGFsbCBjaGlsZCB0YWJsZXMgbWF5IG5lZWQKKyAqIHRvIGJlIGxvY2tlZDsgc29tZSBtYXkgZ2V0 IHBydW5lZCBkdXJpbmcgdGhlIGV4ZWN1dG9yIHBsYW4gaW5pdGlhbGl6YXRpb24KKyAqIHBoYXNl IChJbml0UGxhbigpKS4KICAqCiAgKiBPbiByZXR1cm4sIHRoZSByZWZjb3VudCBvZiB0aGUgcGxh biBoYXMgYmVlbiBpbmNyZW1lbnRlZDsgYSBsYXRlcgogICogUmVsZWFzZUNhY2hlZFBsYW4oKSBj YWxsIGlzIGV4cGVjdGVkLiAgSWYgIm93bmVyIiBpcyBub3QgTlVMTCB0aGVuCkBAIC0xMzYyLDgg KzEzNzEsOCBAQCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLAogCX0KIAogCS8qCi0JICogUmVqZWN0IGlmIEFjcXVpcmVFeGVj dXRvckxvY2tzIHdvdWxkIGhhdmUgYW55dGhpbmcgdG8gZG8uICBUaGlzIGlzCi0JICogcHJvYmFi bHkgdW5uZWNlc3NhcnkgZ2l2ZW4gdGhlIHByZXZpb3VzIGNoZWNrLCBidXQgbGV0J3MgYmUgc2Fm ZS4KKwkgKiBSZWplY3QgaWYgdGhlIGV4ZWN1dG9yIHdvdWxkIG5lZWQgdG8gdGFrZSBhZGRpdGlv bmFsIGxvY2tzLCB0aGF0IGlzLCBpbgorCSAqIGFkZGl0aW9uIHRvIHRob3NlIHRha2VuIGJ5IEFj cXVpcmVQbGFubmVyTG9ja3MoKSBvbiBhIGdpdmVuIHF1ZXJ5LgogCSAqLwogCWZvcmVhY2gobGMs IHBsYW4tPnN0bXRfbGlzdCkKIAl7CkBAIC0xNzM5LDU4ICsxNzQ4LDYgQEAgUXVlcnlMaXN0R2V0 UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpCiAJcmV0dXJuIE5VTEw7CiB9CiAKLS8qCi0gKiBBY3F1 aXJlRXhlY3V0b3JMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIGV4ZWN1dGlvbiBvZiBh IGNhY2hlZCBwbGFuOwotICogb3IgcmVsZWFzZSB0aGVtIGlmIGFjcXVpcmUgaXMgZmFsc2UuCi0g Ki8KLXN0YXRpYyB2b2lkCi1BY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJv b2wgYWNxdWlyZSkKLXsKLQlMaXN0Q2VsbCAgICpsYzE7Ci0KLQlmb3JlYWNoKGxjMSwgc3RtdF9s aXN0KQotCXsKLQkJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gbGZpcnN0X25vZGUoUGxhbm5l ZFN0bXQsIGxjMSk7Ci0JCUxpc3RDZWxsICAgKmxjMjsKLQotCQlpZiAocGxhbm5lZHN0bXQtPmNv bW1hbmRUeXBlID09IENNRF9VVElMSVRZKQotCQl7Ci0JCQkvKgotCQkJICogSWdub3JlIHV0aWxp dHkgc3RhdGVtZW50cywgZXhjZXB0IHRob3NlIChzdWNoIGFzIEVYUExBSU4pIHRoYXQKLQkJCSAq IGNvbnRhaW4gYSBwYXJzZWQtYnV0LW5vdC1wbGFubmVkIHF1ZXJ5LiAgTm90ZTogaXQncyBva2F5 IHRvIHVzZQotCQkJICogU2NhblF1ZXJ5Rm9yTG9ja3MsIGV2ZW4gdGhvdWdoIHRoZSBxdWVyeSBo YXNuJ3QgYmVlbiB0aHJvdWdoCi0JCQkgKiBydWxlIHJld3JpdGluZywgYmVjYXVzZSByZXdyaXRp bmcgZG9lc24ndCBjaGFuZ2UgdGhlIHF1ZXJ5Ci0JCQkgKiByZXByZXNlbnRhdGlvbi4KLQkJCSAq LwotCQkJUXVlcnkJICAgKnF1ZXJ5ID0gVXRpbGl0eUNvbnRhaW5zUXVlcnkocGxhbm5lZHN0bXQt PnV0aWxpdHlTdG10KTsKLQotCQkJaWYgKHF1ZXJ5KQotCQkJCVNjYW5RdWVyeUZvckxvY2tzKHF1 ZXJ5LCBhY3F1aXJlKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KLQkJZm9yZWFjaChsYzIsIHBsYW5u ZWRzdG10LT5ydGFibGUpCi0JCXsKLQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IChSYW5nZVRibEVu dHJ5ICopIGxmaXJzdChsYzIpOwotCi0JCQlpZiAoIShydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFU SU9OIHx8Ci0JCQkJICAocnRlLT5ydGVraW5kID09IFJURV9TVUJRVUVSWSAmJiBPaWRJc1ZhbGlk KHJ0ZS0+cmVsaWQpKSkpCi0JCQkJY29udGludWU7Ci0KLQkJCS8qCi0JCQkgKiBBY3F1aXJlIHRo ZSBhcHByb3ByaWF0ZSB0eXBlIG9mIGxvY2sgb24gZWFjaCByZWxhdGlvbiBPSUQuIE5vdGUKLQkJ CSAqIHRoYXQgd2UgZG9uJ3QgYWN0dWFsbHkgdHJ5IHRvIG9wZW4gdGhlIHJlbCwgYW5kIGhlbmNl IHdpbGwgbm90Ci0JCQkgKiBmYWlsIGlmIGl0J3MgYmVlbiBkcm9wcGVkIGVudGlyZWx5IC0tLSB3 ZSdsbCBqdXN0IHRyYW5zaWVudGx5Ci0JCQkgKiBhY3F1aXJlIGEgbm9uLWNvbmZsaWN0aW5nIGxv Y2suCi0JCQkgKi8KLQkJCWlmIChhY3F1aXJlKQotCQkJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJl bGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKLQkJCWVsc2UKLQkJCQlVbmxvY2tSZWxhdGlvbk9pZChy dGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKLQkJfQotCX0KLX0KLQogLyoKICAqIEFjcXVp cmVQbGFubmVyTG9ja3M6IGFjcXVpcmUgbG9ja3MgbmVlZGVkIGZvciBwbGFubmluZyBvZiBhIHF1 ZXJ5dHJlZSBsaXN0OwogICogb3IgcmVsZWFzZSB0aGVtIGlmIGFjcXVpcmUgaXMgZmFsc2UuCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwppbmRleCAwNmRmYTg1ZjA0Li4wY2FkNDUwZGNkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKQEAgLTIwMSw2ICsyMDEsMTMgQEAgQ3JlYXRl UG9ydGFsKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgYWxsb3dEdXAsIGJvb2wgZHVwU2lsZW50KQog CXBvcnRhbC0+cG9ydGFsQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BQb3J0YWxD b250ZXh0LAogCQkJCQkJCQkJCQkJICAiUG9ydGFsQ29udGV4dCIsCiAJCQkJCQkJCQkJCQkgIEFM TE9DU0VUX1NNQUxMX1NJWkVTKTsKKwkvKgorCSAqIGluaXRpYWxpemUgcG9ydGFsJ3MgcXVlcnkg Y29udGV4dCB0byBzdG9yZSBRdWVyeURlc2NzIGNyZWF0ZWQgZHVyaW5nCisJICogUG9ydGFsU3Rh cnQoKSBhbmQgdGhlbiB1c2VkIGluIFBvcnRhbFJ1bigpLgorCSAqLworCXBvcnRhbC0+cXVlcnlD b250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcFBvcnRhbENvbnRleHQsCisJCQkJCQkJ CQkJCQkgIlBvcnRhbFF1ZXJ5Q29udGV4dCIsCisJCQkJCQkJCQkJCQkgQUxMT0NTRVRfU01BTExf U0laRVMpOwogCiAJLyogY3JlYXRlIGEgcmVzb3VyY2Ugb3duZXIgZm9yIHRoZSBwb3J0YWwgKi8K IAlwb3J0YWwtPnJlc293bmVyID0gUmVzb3VyY2VPd25lckNyZWF0ZShDdXJUcmFuc2FjdGlvblJl c291cmNlT3duZXIsCkBAIC0yMjQsNiArMjMxLDcgQEAgQ3JlYXRlUG9ydGFsKGNvbnN0IGNoYXIg Km5hbWUsIGJvb2wgYWxsb3dEdXAsIGJvb2wgZHVwU2lsZW50KQogCiAJLyogZm9yIG5hbWVkIHBv cnRhbHMgcmV1c2UgcG9ydGFsLT5uYW1lIGNvcHkgKi8KIAlNZW1vcnlDb250ZXh0U2V0SWRlbnRp Zmllcihwb3J0YWwtPnBvcnRhbENvbnRleHQsIHBvcnRhbC0+bmFtZVswXSA/IHBvcnRhbC0+bmFt ZSA6ICI8dW5uYW1lZD4iKTsKKwlNZW1vcnlDb250ZXh0U2V0SWRlbnRpZmllcihwb3J0YWwtPnF1 ZXJ5Q29udGV4dCwgcG9ydGFsLT5uYW1lWzBdID8gcG9ydGFsLT5uYW1lIDogIjx1bm5hbWVkPiIp OwogCiAJcmV0dXJuIHBvcnRhbDsKIH0KQEAgLTU5NCw2ICs2MDIsNyBAQCBQb3J0YWxEcm9wKFBv cnRhbCBwb3J0YWwsIGJvb2wgaXNUb3BDb21taXQpCiAKIAkvKiByZWxlYXNlIHN1YnNpZGlhcnkg c3RvcmFnZSAqLwogCU1lbW9yeUNvbnRleHREZWxldGUocG9ydGFsLT5wb3J0YWxDb250ZXh0KTsK KwlNZW1vcnlDb250ZXh0RGVsZXRlKHBvcnRhbC0+cXVlcnlDb250ZXh0KTsKIAogCS8qIHJlbGVh c2UgcG9ydGFsIHN0cnVjdCAoaXQncyBpbiBUb3BQb3J0YWxDb250ZXh0KSAqLwogCXBmcmVlKHBv cnRhbCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKaW5kZXggM2QzZTYzMmEwYy4uMzkyYWJiNTE1MCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCisrKyBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2V4cGxhaW4uaApAQCAtODgsNyArODgsMTEgQEAgZXh0ZXJuIHZvaWQgRXhw bGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sCiAJCQkJ CQkJICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCQkg IFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiAKLWV4 dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0Ns YXVzZSAqaW50bywKK2V4dGVybiBRdWVyeURlc2MgKkV4cGxhaW5RdWVyeURlc2MoUGxhbm5lZFN0 bXQgKnN0bXQsIHN0cnVjdCBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCQkgY29uc3QgY2hhciAqcXVl cnlTdHJpbmcsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCisJCQkJIFBhcmFt TGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CitleHRlcm4gdm9p ZCBFeHBsYWluT25lUGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKKwkJCQkJCSAgIEludG9DbGF1 c2UgKmludG8sCiAJCQkJCQkgICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0 cmluZywKIAkJCQkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudiwKIAkJCQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKQEAgLTEw NCw2ICsxMDgsNyBAQCBleHRlcm4gdm9pZCBFeHBsYWluUXVlcnlQYXJhbWV0ZXJzKEV4cGxhaW5T dGF0ZSAqZXMsIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBpbnQgbQogCiBleHRlcm4gdm9pZCBFeHBs YWluQmVnaW5PdXRwdXQoRXhwbGFpblN0YXRlICplcyk7CiBleHRlcm4gdm9pZCBFeHBsYWluRW5k T3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMpOworZXh0ZXJuIHZvaWQgRXhwbGFpblJlc2V0T3V0cHV0 KEV4cGxhaW5TdGF0ZSAqZXMpOwogZXh0ZXJuIHZvaWQgRXhwbGFpblNlcGFyYXRlUGxhbnMoRXhw bGFpblN0YXRlICplcyk7CiAKIGV4dGVybiB2b2lkIEV4cGxhaW5Qcm9wZXJ0eUxpc3QoY29uc3Qg Y2hhciAqcWxhYmVsLCBMaXN0ICpkYXRhLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKaW5kZXggYWYy YmYzNmRmYi4uNGI3MzY4YTBkYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCkBAIC0zMiw5ICsz MiwxMiBAQAogICovCiB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIHsKKwlOb2RlVGFnCQl0eXBl OworCiAJLyogVGhlc2UgZmllbGRzIGFyZSBwcm92aWRlZCBieSBDcmVhdGVRdWVyeURlc2MgKi8K IAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNULCBDTURfVVBEQVRFLCBldGMuICov CiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFubmVyJ3Mgb3V0cHV0IChjb3VsZCBi ZSB1dGlsaXR5LCB0b28pICovCisJc3RydWN0IENhY2hlZFBsYW4gKmNwbGFuOwkvKiBDYWNoZWRQ bGFuLCBpZiBwbGFubmVkc3RtdCBpcyBmcm9tIG9uZSAqLwogCWNvbnN0IGNoYXIgKnNvdXJjZVRl eHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFwc2hvdAlzbmFwc2hvdDsJ CS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hvdAljcm9zc2NoZWNrX3Nu YXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRlICovCkBAIC01Nyw2ICs2 MCw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCiAvKiBpbiBwcXVlcnkuYyAqLwogZXh0 ZXJuIFF1ZXJ5RGVzYyAqQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwK KwkJCQkJCQkJICBzdHJ1Y3QgQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJCQkJCSAgY29uc3QgY2hh ciAqc291cmNlVGV4dCwKIAkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJICBT bmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXgg YzY3N2U0OTBkNy4uZWRmMmYxM2QwNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xOSw2 ICsxOSw3IEBACiAjaW5jbHVkZSAibm9kZXMvbG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rl cy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1 dGlscy9wbGFuY2FjaGUuaCIKIAogCiAvKgpAQCAtNzIsNyArNzMsNyBAQAogCiAKIC8qIEhvb2sg Zm9yIHBsdWdpbnMgdG8gZ2V0IGNvbnRyb2wgaW4gRXhlY3V0b3JTdGFydCgpICovCi10eXBlZGVm IHZvaWQgKCpFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSkgKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBp bnQgZWZsYWdzKTsKK3R5cGVkZWYgYm9vbCAoKkV4ZWN1dG9yU3RhcnRfaG9va190eXBlKSAoUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogZXh0ZXJuIFBHRExMSU1QT1JUIEV4ZWN1 dG9yU3RhcnRfaG9va190eXBlIEV4ZWN1dG9yU3RhcnRfaG9vazsKIAogLyogSG9vayBmb3IgcGx1 Z2lucyB0byBnZXQgY29udHJvbCBpbiBFeGVjdXRvclJ1bigpICovCkBAIC0xOTcsOCArMTk4LDgg QEAgRXhlY0dldEp1bmtBdHRyaWJ1dGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEF0dHJOdW1iZXIg YXR0bm8sIGJvb2wgKmlzTnVsbCkKIC8qCiAgKiBwcm90b3R5cGVzIGZyb20gZnVuY3Rpb25zIGlu IGV4ZWNNYWluLmMKICAqLwotZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncyk7Ci1leHRlcm4gdm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0 KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKK2V4dGVybiBib29sIEV4ZWN1dG9y U3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOworZXh0ZXJuIGJvb2wgc3Rh bmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBl eHRlcm4gdm9pZCBFeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCVNjYW5E aXJlY3Rpb24gZGlyZWN0aW9uLCB1aW50NjQgY291bnQsIGJvb2wgZXhlY3V0ZV9vbmNlKTsKIGV4 dGVybiB2b2lkIHN0YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApAQCAt MjU2LDYgKzI1NywxNyBAQCBleHRlcm4gdm9pZCBFeGVjRW5kTm9kZShQbGFuU3RhdGUgKm5vZGUp OwogZXh0ZXJuIHZvaWQgRXhlY1NodXRkb3duTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJu IHZvaWQgRXhlY1NldFR1cGxlQm91bmQoaW50NjQgdHVwbGVzX25lZWRlZCwgUGxhblN0YXRlICpj aGlsZF9ub2RlKTsKIAorLyoKKyAqIElzIHRoZSBjYWNoZWQgcGxhbiwgaWYgYW55LCBzdGlsbCB2 YWxpZCBhdCB0aGlzIHBvaW50PyAgVGhhdCBpcywgbm90CisgKiBpbnZhbGlkYXRlZCBieSB0aGUg aW5jb21pbmcgaW52YWxpZGF0aW9uIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIHByb2Nlc3NlZAor ICogcmVjZW50bHkuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorRXhlY1BsYW5TdGlsbFZhbGlk KEVTdGF0ZSAqZXN0YXRlKQoreworCXJldHVybiBlc3RhdGUtPmVzX2NhY2hlZHBsYW4gPT0gTlVM TCA/IHRydWUgOgorCQlDYWNoZWRQbGFuU3RpbGxWYWxpZChlc3RhdGUtPmVzX2NhY2hlZHBsYW4p OworfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1Byb2NOb2RlCkBAIC01OTAsNiArNjAyLDcgQEAg ZXhlY19ydF9mZXRjaChJbmRleCBydGksIEVTdGF0ZSAqZXN0YXRlKQogfQogCiBleHRlcm4gUmVs YXRpb24gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRp KTsKK2V4dGVybiB2b2lkIEV4ZWNMb2NrQXBwZW5kTm9uTGVhZlJlbGF0aW9ucyhFU3RhdGUgKmVz dGF0ZSwgTGlzdCAqYWxscGFydHJlbGlkcyk7CiBleHRlcm4gdm9pZCBFeGVjSW5pdFJlc3VsdFJl bGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJ CQkJCQkgICBJbmRleCBydGkpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVj bm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDIzM2ZiNmI0Zjku LjIwYzFiYWNhZTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02MjMsNiArNjIzLDggQEAgdHlw ZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJCQkJICogRXhlY1Jvd01hcmtzLCBvciBOVUxMIGlm IG5vbmUgKi8KIAlMaXN0CSAgICplc19ydGVwZXJtaW5mb3M7CS8qIExpc3Qgb2YgUlRFUGVybWlz c2lvbkluZm8gKi8KIAlQbGFubmVkU3RtdCAqZXNfcGxhbm5lZHN0bXQ7CS8qIGxpbmsgdG8gdG9w IG9mIHBsYW4gdHJlZSAqLworCXN0cnVjdCBDYWNoZWRQbGFuICplc19jYWNoZWRwbGFuOwkvKiBD YWNoZWRQbGFuIGlmIHBsYW5uZWRzdG10IGlzIGZyb20KKwkJCQkJCQkJCQkgKiBvbmUgKi8KIAlj b25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAq LwogCiAJSnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVy LCBpZiBhbnkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKaW5kZXggNGVlOTFlM2NmOS4uNTk4YmYyNjg4YSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9sbWdyLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZXh0ZXJuIGJvb2wgQ29uZGl0aW9uYWxMb2Nr UmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4dGVybiB2 b2lkIFVubG9ja1JlbGF0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSk7 CiBleHRlcm4gYm9vbCBDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShSZWxhdGlvbiByZWxhdGlvbiwg TE9DS01PREUgbG9ja21vZGUsCiAJCQkJCQkJCQlib29sIG9yc3Ryb25nZXIpOworZXh0ZXJuIGJv b2wgQ2hlY2tSZWxMb2NrZWRCeU1lKE9pZCByZWxpZCwgTE9DS01PREUgbG9ja21vZGUsIGJvb2wg b3JzdHJvbmdlcik7CiBleHRlcm4gYm9vbCBMb2NrSGFzV2FpdGVyc1JlbGF0aW9uKFJlbGF0aW9u IHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiAKIGV4dGVybiB2b2lkIExvY2tSZWxhdGlv bklkRm9yU2Vzc2lvbihMb2NrUmVsSWQgKnJlbGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5oIGIvc3JjL2luY2x1ZGUvdGNvcC9wcXVl cnkuaAppbmRleCBhNWU2NWI5OGFhLi41NzdiODFhOWVlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS90Y29wL3BxdWVyeS5oCisrKyBiL3NyYy9pbmNsdWRlL3Rjb3AvcHF1ZXJ5LmgKQEAgLTI5LDcg KzI5LDcgQEAgZXh0ZXJuIExpc3QgKkZldGNoUG9ydGFsVGFyZ2V0TGlzdChQb3J0YWwgcG9ydGFs KTsKIAogZXh0ZXJuIExpc3QgKkZldGNoU3RhdGVtZW50VGFyZ2V0TGlzdChOb2RlICpzdG10KTsK IAotZXh0ZXJuIHZvaWQgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBw YXJhbXMsCitleHRlcm4gYm9vbCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJ bmZvIHBhcmFtcywKIAkJCQkJCWludCBlZmxhZ3MsIFNuYXBzaG90IHNuYXBzaG90KTsKIAogZXh0 ZXJuIHZvaWQgUG9ydGFsU2V0UmVzdWx0Rm9ybWF0KFBvcnRhbCBwb3J0YWwsIGludCBuRm9ybWF0 cywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggZjVmZGJmZTExNi4uYTAyNGU1ZGNkMCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvbHN5c2NhY2hlLmgKQEAgLTE0MCw2ICsxNDAsNyBAQCBleHRlcm4gY2hhciBnZXRfcmVsX3Jl bGtpbmQoT2lkIHJlbGlkKTsKIGV4dGVybiBib29sIGdldF9yZWxfcmVsaXNwYXJ0aXRpb24oT2lk IHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3JlbF90YWJsZXNwYWNlKE9pZCByZWxpZCk7CiBleHRl cm4gY2hhciBnZXRfcmVsX3BlcnNpc3RlbmNlKE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBnZXRf cmVsX3JlbGlzc2hhcmVkKE9pZCByZWxpZCk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1fZnJv bXNxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVzKTsKIGV4dGVybiBPaWQJ Z2V0X3RyYW5zZm9ybV90b3NxbChPaWQgdHlwaWQsIE9pZCBsYW5naWQsIExpc3QgKnRyZnR5cGVz KTsKIGV4dGVybiBib29sIGdldF90eXBpc2RlZmluZWQoT2lkIHR5cGlkKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNh Y2hlLmgKaW5kZXggOTE2ZTU5ZDlmZS4uYzgzYTY3ZmVhMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdXRpbHMvcGxhbmNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgK QEAgLTIyMSw2ICsyMjEsMjAgQEAgZXh0ZXJuIENhY2hlZFBsYW4gKkdldENhY2hlZFBsYW4oQ2Fj aGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkJCQkJCQkJIFBhcmFtTGlzdEluZm8gYm91bmRQ YXJhbXMsCiAJCQkJCQkJCSBSZXNvdXJjZU93bmVyIG93bmVyLAogCQkJCQkJCQkgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYpOworCisvKgorICogQ2FjaGVkUGxhblN0aWxsVmFsaWQKKyAqCQlS ZXR1cm5zIGlmIGEgY2FjaGVkIGdlbmVyaWMgcGxhbiBpcyBzdGlsbCB2YWxpZAorICoKKyAqIENh bGxlZCBieSB0aGUgZXhlY3V0b3Igb24gZXZlcnkgcmVsYXRpb24gbG9jayB0YWtlbiB3aGVuIGlu aXRpYWxpemluZyB0aGUKKyAqIHBsYW4gdHJlZSBpbiB0aGUgQ2FjaGVkUGxhbi4KKyAqLworc3Rh dGljIGlubGluZSBib29sCitDYWNoZWRQbGFuU3RpbGxWYWxpZChDYWNoZWRQbGFuICpjcGxhbikK K3sKKwlyZXR1cm4gY3BsYW4tPmlzX3ZhbGlkOworfQorCiBleHRlcm4gdm9pZCBSZWxlYXNlQ2Fj aGVkUGxhbihDYWNoZWRQbGFuICpwbGFuLCBSZXNvdXJjZU93bmVyIG93bmVyKTsKIAogZXh0ZXJu IGJvb2wgQ2FjaGVkUGxhbkFsbG93c1NpbXBsZVZhbGlkaXR5Q2hlY2soQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oIGIv c3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggYWEwOGIxZTBmYy4uZTdlMmZiMGMzZiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvcG9ydGFsLmgKQEAgLTEzOCw2ICsxMzgsOCBAQCB0eXBlZGVmIHN0cnVjdCBQb3J0YWxE YXRhCiAJUXVlcnlDb21wbGV0aW9uIHFjOwkJCS8qIGNvbW1hbmQgY29tcGxldGlvbiBkYXRhIGZv ciBleGVjdXRlZCBxdWVyeSAqLwogCUxpc3QJICAgKnN0bXRzOwkJCS8qIGxpc3Qgb2YgUGxhbm5l ZFN0bXRzICovCiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2FjaGVkUGxhbiwgaWYgc3RtdHMg YXJlIGZyb20gb25lICovCisJTGlzdAkgICAqcWRlc2NzOwkJCS8qIGxpc3Qgb2YgUXVlcnlEZXNj cyAqLworCU1lbW9yeUNvbnRleHQgcXVlcnlDb250ZXh0OwkvKiBtZW1vcnkgZm9yIFF1ZXJ5RGVz Y3MgYW5kIGNoaWxkcmVuICovCiAKIAlQYXJhbUxpc3RJbmZvIHBvcnRhbFBhcmFtczsgLyogcGFy YW1zIHRvIHBhc3MgdG8gcXVlcnkgKi8KIAlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudjsgLyog ZW52aXJvbm1lbnQgZm9yIHF1ZXJ5ICovCkBAIC0yNDIsNiArMjQ0LDcgQEAgZXh0ZXJuIHZvaWQg UG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAkJCQkJCQkgIENvbW1hbmRUYWcgY29t bWFuZFRhZywKIAkJCQkJCQkgIExpc3QgKnN0bXRzLAogCQkJCQkJCSAgQ2FjaGVkUGxhbiAqY3Bs YW4pOworZXh0ZXJuIHZvaWQgUG9ydGFsUXVlcnlGaW5pc2goUXVlcnlEZXNjICpxdWVyeURlc2Mp OwogZXh0ZXJuIFBsYW5uZWRTdG10ICpQb3J0YWxHZXRQcmltYXJ5U3RtdChQb3J0YWwgcG9ydGFs KTsKIGV4dGVybiB2b2lkIFBvcnRhbENyZWF0ZUhvbGRTdG9yZShQb3J0YWwgcG9ydGFsKTsKIGV4 dGVybiB2b2lkIFBvcnRhbEhhc2hUYWJsZURlbGV0ZUFsbCh2b2lkKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxl cy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUKaW5kZXggNzBmMjRlODQ2ZC4uMmZjYTg0ZDAyNyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUKQEAgLTgsNyArOCw4 IEBAIE9CSlMgPSBcCiAJZGVsYXlfZXhlY3V0aW9uLm8KIAogSVNPTEFUSU9OID0gcGFydGl0aW9u LWFkZGl0aW9uIFwKLQkgICAgcGFydGl0aW9uLXJlbW92YWwtMQorCSAgICBwYXJ0aXRpb24tcmVt b3ZhbC0xIFwKKwkJY2FjaGVkLXBsYW4tcmVwbGFuCiAKIGlmZGVmIFVTRV9QR1hTCiBQR19DT05G SUcgPSBwZ19jb25maWcKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0 aW9uL2RlbGF5X2V4ZWN1dGlvbi5jIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24v ZGVsYXlfZXhlY3V0aW9uLmMKaW5kZXggN2NkNzZlYjM0Yi4uY2UxODkxNTZhZCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9uLmMKQEAg LTEsMTQgKzEsMTggQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIGRlbGF5X2V4ZWN1dGlv bi5jCi0gKgkJVGVzdCBtb2R1bGUgdG8gYWxsb3cgZGVsYXkgYmV0d2VlbiBwYXJzaW5nIGFuZCBl eGVjdXRpb24gb2YgYSBxdWVyeS4KKyAqCQlUZXN0IG1vZHVsZSB0byBpbnRyb2R1Y2UgZGVsYXkg YXQgdmFyaW91cyBwb2ludHMgZHVyaW5nIGV4ZWN1dGlvbiBvZiBhCisgKgkJcXVlcnkgdG8gdGVz dCB0aGF0IGV4ZWN1dGlvbiBwcm9jZWVkcyBzYWZlbHkgaW4gbGlnaHQgb2YgY29uY3VycmVudAor ICoJCWNoYW5nZXMuCiAgKgogICogVGhlIGRlbGF5IGlzIGltcGxlbWVudGVkIGJ5IHRha2luZyBh bmQgaW1tZWRpYXRlbHkgcmVsZWFzaW5nIGEgc3BlY2lmaWVkCiAgKiBhZHZpc29yeSBsb2NrLiAg SWYgYW5vdGhlciBwcm9jZXNzIGhhcyBwcmV2aW91c2x5IHRha2VuIHRoYXQgbG9jaywgdGhlCiAg KiBjdXJyZW50IHByb2Nlc3Mgd2lsbCBiZSBibG9ja2VkIHVudGlsIHRoZSBsb2NrIGlzIHJlbGVh c2VkOyBvdGhlcndpc2UsCiAgKiB0aGVyZSdzIG5vIGVmZmVjdC4gIFRoaXMgYWxsb3dzIGFuIGlz b2xhdGlvbnRlc3RlciBzY3JpcHQgdG8gcmVsaWFibHkKLSAqIHRlc3QgYmVoYXZpb3JzIHdoZXJl IHNvbWUgc3BlY2lmaWVkIGFjdGlvbiBoYXBwZW5zIGluIGFub3RoZXIgYmFja2VuZAotICogYmV0 d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkuCisgKiB0ZXN0 IGJlaGF2aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90aGVy IGJhY2tlbmQgaW4KKyAqIGEgY291cGxlIG9mIGNhc2VzOiAxKSBiZXR3ZWVuIHBhcnNpbmcgYW5k IGV4ZWN1dGlvbiBvZiBhbnkgZGVzaXJlZCBxdWVyeQorICogd2hlbiB1c2luZyB0aGUgcGxhbm5l cl9ob29rLCAyKSBiZXR3ZWVuIFJldmFsaWRhdGVDYWNoZWRRdWVyeSgpIGFuZAorICogRXhlY3V0 b3JTdGFydCgpIHdoZW4gdXNpbmcgdGhlIEV4ZWN1dG9yU3RhcnRfaG9vay4KICAqCiAgKiBDb3B5 cmlnaHQgKGMpIDIwMjAtMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK ICAqCkBAIC0yMiw2ICsyNiw3IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAorI2luY2x1ZGUg ImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgpAQCAtMzIs OSArMzcsMTEgQEAgUEdfTU9EVUxFX01BR0lDOwogCiAvKiBHVUM6IGFkdmlzb3J5IGxvY2sgSUQg dG8gdXNlLiAgWmVybyBkaXNhYmxlcyB0aGUgZmVhdHVyZS4gKi8KIHN0YXRpYyBpbnQJcG9zdF9w bGFubmluZ19sb2NrX2lkID0gMDsKK3N0YXRpYyBpbnQJZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9 IDA7CiAKLS8qIFNhdmUgcHJldmlvdXMgcGxhbm5lciBob29rIHVzZXIgdG8gYmUgYSBnb29kIGNp dGl6ZW4gKi8KKy8qIFNhdmUgcHJldmlvdXMgaG9vayB1c2VycyB0byBiZSBhIGdvb2QgY2l0aXpl biAqLwogc3RhdGljIHBsYW5uZXJfaG9va190eXBlIHByZXZfcGxhbm5lcl9ob29rID0gTlVMTDsK K3N0YXRpYyBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayA9 IE5VTEw7CiAKIAogLyogcGxhbm5lcl9ob29rIGZ1bmN0aW9uIHRvIHByb3ZpZGUgdGhlIGRlc2ly ZWQgZGVsYXkgKi8KQEAgLTcwLDExICs3Nyw0NSBAQCBkZWxheV9leGVjdXRpb25fcGxhbm5lcihR dWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAlyZXR1cm4gcmVzdWx0Owog fQogCisvKiBFeGVjdXRvclN0YXJ0X2hvb2sgZnVuY3Rpb24gdG8gcHJvdmlkZSB0aGUgZGVzaXJl ZCBkZWxheSAqLworc3RhdGljIGJvb2wKK2RlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0KFF1 ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQoreworCWJvb2wJcGxhbl92YWxpZDsKKwor CS8qIElmIGVuYWJsZWQsIGRlbGF5IGJ5IHRha2luZyBhbmQgcmVsZWFzaW5nIHRoZSBzcGVjaWZp ZWQgbG9jayAqLworCWlmIChleGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDApCisJeworCQlEaXJl Y3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X2xvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERh dHVtKChpbnQ2NCkgZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCkpOworCQlEaXJlY3RGdW5jdGlvbkNh bGwxKHBnX2Fkdmlzb3J5X3VubG9ja19pbnQ4LAorCQkJCQkJCUludDY0R2V0RGF0dW0oKGludDY0 KSBleGVjdXRvcl9zdGFydF9sb2NrX2lkKSk7CisKKwkJLyoKKwkJICogRW5zdXJlIHRoYXQgd2Ug bm90aWNlIGFueSBwZW5kaW5nIGludmFsaWRhdGlvbnMsIHNpbmNlIHRoZSBhZHZpc29yeQorCQkg KiBsb2NrIGZ1bmN0aW9ucyBkb24ndCBkbyB0aGlzLgorCQkgKi8KKwkJQWNjZXB0SW52YWxpZGF0 aW9uTWVzc2FnZXMoKTsKKwl9CisKKwkvKiBOb3cgc3RhcnQgdGhlIGV4ZWN1dG9yLCBwb3NzaWJs eSB2aWEgYSBwcmV2aW91cyBob29rIHVzZXIgKi8KKwlpZiAocHJldl9FeGVjdXRvclN0YXJ0X2hv b2spCisJCXBsYW5fdmFsaWQgPSBwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayhxdWVyeURlc2MsIGVm bGFncyk7CisJZWxzZQorCQlwbGFuX3ZhbGlkID0gc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVy eURlc2MsIGVmbGFncyk7CisKKwlpZiAoZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCAhPSAwKQorCQll bG9nKE5PVElDRSwgIkZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyAlcyIs CisJCQkgcGxhbl92YWxpZCA/ICJ2YWxpZCIgOiAibm90IHZhbGlkIik7CisKKwlyZXR1cm4gcGxh bl92YWxpZDsKK30KKwogLyogTW9kdWxlIGxvYWQgZnVuY3Rpb24gKi8KIHZvaWQKIF9QR19pbml0 KHZvaWQpCiB7Ci0JLyogU2V0IHVwIHRoZSBHVUMgdG8gY29udHJvbCB3aGljaCBsb2NrIGlzIHVz ZWQgKi8KKwkvKiBTZXQgdXAgR1VDcyB0byBjb250cm9sIHdoaWNoIGxvY2sgaXMgdXNlZCAqLwog CURlZmluZUN1c3RvbUludFZhcmlhYmxlKCJkZWxheV9leGVjdXRpb24ucG9zdF9wbGFubmluZ19s b2NrX2lkIiwKIAkJCQkJCQkiU2V0cyB0aGUgYWR2aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQv dW5sb2NrZWQgYWZ0ZXIgcGxhbm5pbmcuIiwKIAkJCQkJCQkiWmVybyBkaXNhYmxlcyB0aGUgZGVs YXkuIiwKQEAgLTg2LDEwICsxMjcsMjIgQEAgX1BHX2luaXQodm9pZCkKIAkJCQkJCQlOVUxMLAog CQkJCQkJCU5VTEwsCiAJCQkJCQkJTlVMTCk7Ci0KKwlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgi ZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQiLAorCQkJCQkJCSJTZXRzIHRo ZSBhZHZpc29yeSBsb2NrIElEIHRvIGJlIGxvY2tlZC91bmxvY2tlZCBiZWZvcmUgc3RhcnRpbmcg ZXhlY3V0aW9uLiIsCisJCQkJCQkJIlplcm8gZGlzYWJsZXMgdGhlIGRlbGF5LiIsCisJCQkJCQkJ JmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQsCisJCQkJCQkJMCwKKwkJCQkJCQkwLCBJTlRfTUFYLAor CQkJCQkJCVBHQ19VU0VSU0VULAorCQkJCQkJCTAsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxM LAorCQkJCQkJCU5VTEwpOwogCU1hcmtHVUNQcmVmaXhSZXNlcnZlZCgiZGVsYXlfZXhlY3V0aW9u Iik7CiAKLQkvKiBJbnN0YWxsIG91ciBob29rICovCisJLyogSW5zdGFsbCBvdXIgaG9va3MuICov CiAJcHJldl9wbGFubmVyX2hvb2sgPSBwbGFubmVyX2hvb2s7CiAJcGxhbm5lcl9ob29rID0gZGVs YXlfZXhlY3V0aW9uX3BsYW5uZXI7CisJcHJldl9FeGVjdXRvclN0YXJ0X2hvb2sgPSBFeGVjdXRv clN0YXJ0X2hvb2s7CisJRXhlY3V0b3JTdGFydF9ob29rID0gZGVsYXlfZXhlY3V0aW9uX0V4ZWN1 dG9yU3RhcnQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlv bi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxh eV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wYWM2YTE3YzJiCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVw bGFuLm91dApAQCAtMCwwICsxLDE1NiBAQAorUGFyc2VkIHRlc3Qgc3BlYyB3aXRoIDIgc2Vzc2lv bnMKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcCBzMmxvY2sgczFleGVjIHMyZHJvcGkg czJ1bmxvY2sKK3N0ZXAgczFwcmVwOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJp Y19wbGFuOworCQkgIFBSRVBBUkUgcSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQx OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsKK1FVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKyAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgCisg IC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGZvbzExIGZvb18xICAgICAgIAorICAgICAgICBSZWNo ZWNrIENvbmQ6IChhID0gJDEpICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEJpdG1hcCBJbmRl eCBTY2FuIG9uIGZvbzExX2FfaWR4CisgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gJDEp ICAgICAgICAgIAorKDYgcm93cykKKworc3RlcCBzMmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV9s b2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X2xvY2sKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWM6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7 CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7 CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyA8d2FpdGluZyAuLi4+Citz dGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBw Z19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0t LS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzogPC4u LiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNo ZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQo KTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAg IAorICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAKKyAgLT4gIFNlcSBTY2FuIG9uIGZvbzEx IGZvb18xCisgICAgICAgIEZpbHRlcjogKGEgPSAkMSkgICAgIAorKDQgcm93cykKKworCitzdGFy dGluZyBwZXJtdXRhdGlvbjogczFwcmVwMiBzMmxvY2sgczFleGVjMiBzMmRyb3BpIHMydW5sb2Nr CitzdGVwIHMxcHJlcDI6IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47 CisJCSAgUFJFUEFSRSBxMiBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9IDE7CisJCSAg RVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOworczE6IE5PVElDRTogIEZpbmlzaGVkIEV4 ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitCaXRtYXAgSGVhcCBTY2FuIG9uIGZvbzExIGZvbyAgICAgICAgIAorICBSZWNoZWNrIENvbmQ6 IChhID0gMSkgICAgICAgICAgICAgICAKKyAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEx X2FfaWR4CisgICAgICAgIEluZGV4IENvbmQ6IChhID0gMSkgICAgICAgICAgIAorKDQgcm93cykK Kworc3RlcCBzMmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlz b3J5X2xvY2sKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAKKygxIHJvdykKKwor c3RlcCBzMWV4ZWMyOiBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVj dXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RT IE9GRikgRVhFQ1VURSBxMjsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVY IGZvbzExX2E7CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1 KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAg ICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMyOiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBOT1RJ Q0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitz MTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlk CitRVUVSWSBQTEFOICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU2VxIFNjYW4g b24gZm9vMTEgZm9vCisgIEZpbHRlcjogKGEgPSAxKSAgICAKKygyIHJvd3MpCisKKworc3RhcnRp bmcgcGVybXV0YXRpb246IHMxcHJlcDMgczJsb2NrIHMxZXhlYzMgczJkcm9waSBzMnVubG9jawor c3RlcCBzMXByZXAzOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOwor CQkgIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9hZ2dyZWdhdGUgPSBvbjsKKwkJICBTRVQgZW5h YmxlX3BhcnRpdGlvbndpc2Vfam9pbiA9IG9uOworCQkgIFBSRVBBUkUgcTMgQVMgU0VMRUNUIHQx LmEsIGNvdW50KHQyLmIpIEZST00gZm9vIHQxLCBmb28gdDIgV0hFUkUgdDEuYSA9IHQyLmEgR1JP VVAgQlkgMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7CitzMTogTk9USUNF OiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgIC0+ICBHcm91cEFnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEdyb3VwIEtleTogdDEuYSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBK b2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg ICAgIE1lcmdlIENvbmQ6ICh0MS5hID0gdDIuYSkgICAgICAgICAgICAgICAgICAgICAgICAgCisg ICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgZm9vMTFfYV9pZHggb24gZm9v MTEgdDEgCisgICAgICAgICAgICAgIC0+ICBNYXRlcmlhbGl6ZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBJbmRleCBTY2FuIHVzaW5n IGZvbzExX2FfaWR4IG9uIGZvbzExIHQyCisgIC0+ICBHcm91cEFnZ3JlZ2F0ZSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEdyb3VwIEtleTogdDFf MS5hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBN ZXJnZSBKb2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAg ICAgICAgICAgIE1lcmdlIENvbmQ6ICh0MV8xLmEgPSB0Ml8xLmEpICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0MV8xLmEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBmb28yIHQxXzEgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg ICAgIFNvcnQgS2V5OiB0Ml8xLmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28yIHQyXzEgICAgICAgICAgICAgICAgICAg CisoMTggcm93cykKKworc3RlcCBzMmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1 KTsKK3BnX2Fkdmlzb3J5X2xvY2sKKy0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAK KygxIHJvdykKKworc3RlcCBzMWV4ZWMzOiBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNF VCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVY UExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3Bp OiBEUk9QIElOREVYIGZvbzExX2E7CitzdGVwIHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlf dW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3VubG9jaworLS0tLS0tLS0tLS0tLS0tLS0tCit0 ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKworc3RlcCBzMWV4ZWMzOiA8Li4uIGNvbXBsZXRl ZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMg bm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQ bGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5k ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ICBHcm91cEFnZ3Jl Z2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgR3JvdXAgS2V5OiB0MS5hICAg ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgTWVyZ2UgSm9pbiAgICAgICAgICAgICAg ICAgICAgICAgCisgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh0MS5hID0gdDIuYSkgICAgICAK KyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg ICAgICAgICAgICBTb3J0IEtleTogdDEuYSAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBmb28xMSB0MSAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAg ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDIuYSAgICAg ICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xMSB0MiAKKyAg LT4gIEdyb3VwQWdncmVnYXRlICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBHcm91 cCBLZXk6IHQxXzEuYSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2lu ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQxXzEu YSA9IHQyXzEuYSkgIAorICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAg ICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0MV8xLmEgICAgICAgICAKKyAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzIgdDFfMQorICAgICAgICAgICAgICAt PiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQg S2V5OiB0Ml8xLmEgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IGZvbzIgdDJfMQorKDIxIHJvd3MpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVs YXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLXJlcGxhbi5zcGVjIGIvc3JjL3Rlc3QvbW9k dWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uM2M5MmNiZDVjNgotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFu LXJlcGxhbi5zcGVjCkBAIC0wLDAgKzEsNjEgQEAKKyMgVGVzdCB0byBjaGVjayB0aGF0IGludmFs aWRhdGlvbiBvZiBjYWNoZWQgZ2VuZXJpYyBwbGFucyBkdXJpbmcgRXhlY3V0b3JTdGFydAorIyBj b3JyZWN0bHkgdHJpZ2dlcnMgcmVwbGFubmluZyBhbmQgcmUtZXhlY3V0aW9uLgorCitzZXR1cAor eworICBDUkVBVEUgVEFCTEUgZm9vIChhIGludCwgYiB0ZXh0KSBQQVJUSVRJT04gQlkgTElTVChh KTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzEgUEFSVElUSU9OIE9GIGZvbyBGT1IgVkFMVUVTIElOICgx KSBQQVJUSVRJT04gQlkgTElTVCAoYSk7CisgIENSRUFURSBUQUJMRSBmb28xMSBQQVJUSVRJT04g T0YgZm9vMSBGT1IgVkFMVUVTIElOICgxKTsKKyAgQ1JFQVRFIElOREVYIGZvbzExX2EgT04gZm9v MSAoYSk7CisgIENSRUFURSBUQUJMRSBmb28yIFBBUlRJVElPTiBPRiBmb28gRk9SIFZBTFVFUyBJ TiAoMik7CisgIENSRUFURSBWSUVXIGZvb3YgQVMgU0VMRUNUICogRlJPTSBmb287Cit9CisKK3Rl YXJkb3duCit7CisgIERST1AgVklFVyBmb292OworICBEUk9QIFRBQkxFIGZvbzsKK30KKworc2Vz c2lvbiAiczEiCisjIEFwcGVuZCB3aXRoIHJ1bi10aW1lIHBydW5pbmcKK3N0ZXAgInMxcHJlcCIg ICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFS RSBxIEFTIFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gJDE7CisJCSAgRVhQTEFJTiAoQ09T VFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyB9CisKKyMgbm8gQXBwZW5kIGNhc2UgKG9ubHkgb25lIHBh cnRpdGlvbiBzZWxlY3RlZCBieSB0aGUgcGxhbm5lcikKK3N0ZXAgInMxcHJlcDIiICAgeyBTRVQg cGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTIgQVMg U0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSAxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikg RVhFQ1VURSBxMjsgfQorCisjIEFwcGVuZCB3aXRoIHBhcnRpdGlvbi13aXNlIGpvaW4gYWdncmVn YXRlIGFuZCBqb2luIHBsYW5zIGFzIGNoaWxkIHN1YnBsYW5zCitzdGVwICJzMXByZXAzIiAgIHsg U0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBTRVQgZW5hYmxl X3BhcnRpdGlvbndpc2VfYWdncmVnYXRlID0gb247CisJCSAgU0VUIGVuYWJsZV9wYXJ0aXRpb253 aXNlX2pvaW4gPSBvbjsKKwkJICBQUkVQQVJFIHEzIEFTIFNFTEVDVCB0MS5hLCBjb3VudCh0Mi5i KSBGUk9NIGZvbyB0MSwgZm9vIHQyIFdIRVJFIHQxLmEgPSB0Mi5hIEdST1VQIEJZIDE7CisJCSAg RVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOyB9CisKKyMgRXhlY3V0ZXMgYSBnZW5lcmlj IHBsYW4KK3N0ZXAgInMxZXhlYyIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBk ZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExB SU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgfQorc3RlcCAiczFleGVjMiIJeyBMT0FEICdk ZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRf bG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsgfQor c3RlcCAiczFleGVjMyIJeyBMT0FEICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9l eGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENP U1RTIE9GRikgRVhFQ1VURSBxMzsgfQorCitzZXNzaW9uICJzMiIKK3N0ZXAgInMybG9jayIJeyBT RUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7IH0KK3N0ZXAgInMydW5sb2NrIgl7IFNFTEVD VCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOyB9CitzdGVwICJzMmRyb3BpIgl7IERST1AgSU5E RVggZm9vMTFfYTsgfQorCisjIFdoaWxlICJzMWV4ZWMiLCBldGMuIHdhaXQgdG8gYWNxdWlyZSB0 aGUgYWR2aXNvcnkgbG9jaywgInMyZHJvcCIgaXMgYWJsZSB0bworIyBkcm9wIHRoZSBpbmRleCBi ZWluZyB1c2VkIGluIHRoZSBjYWNoZWQgcGxhbi4gIFdoZW4gInMxZXhlYyIgaXMgdGhlbgorIyB1 bmJsb2NrZWQgYW5kIGluaXRpYWxpemVzIHRoZSBjYWNoZWQgcGxhbiBmb3IgZXhlY3V0aW9uLCBp dCBkZXRlY3RzIHRoZQorIyBjb25jdXJyZW50IGluZGV4IGRyb3AgYW5kIGNhdXNlcyB0aGUgY2Fj aGVkIHBsYW4gdG8gYmUgZGlzY2FyZGVkIGFuZAorIyByZWNyZWF0ZWQgd2l0aG91dCB0aGUgaW5k ZXguCitwZXJtdXRhdGlvbiAiczFwcmVwIiAiczJsb2NrIiAiczFleGVjIiAiczJkcm9waSIgInMy dW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDIiICJzMmxvY2siICJzMWV4ZWMyIiAiczJkcm9w aSIgInMydW5sb2NrIgorcGVybXV0YXRpb24gInMxcHJlcDMiICJzMmxvY2siICJzMWV4ZWMzIiAi czJkcm9waSIgInMydW5sb2NrIgotLSAKMi4zNS4zCgo= --000000000000ea8dda0601f0ccd8--