Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w8zqB-0016Cu-2i for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Apr 2026 12:11:04 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w8zq9-00GC2A-0r for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Apr 2026 12:11:01 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w8zq8-00GC1u-1l for pgsql-hackers@lists.postgresql.org; Sat, 04 Apr 2026 12:11:01 +0000 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w8zq6-00000000W6G-225t for pgsql-hackers@postgresql.org; Sat, 04 Apr 2026 12:10:59 +0000 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-c742d4df00cso1424996a12.1 for ; Sat, 04 Apr 2026 05:10:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775304658; cv=none; d=google.com; s=arc-20240605; b=Op/t7m784zrSKGM81/HF7uL/tnmN7Ml0MvuVYA6siOprBmuF7oL/W6dsnnvWkwzBHY +/+fHQL4DQCA0itj6AncLlcF+prJxFNV0WcWlVGXSGN2HPQ7F2coPHvfy+YHwT4VX7BE 8P9GIz4TIa8uRbZCGoj5QeCoAIkGM1/RedZVCtLQQMk7Lgpfg5blJRiyET/z/xGoOvlH wEvuW3186RU90Ov9NvNn6yNc4pBktlrA+JOP+ybeRhSWCAfSpvC1v7SL5XNjfIrfGYau 8WR6Bz9Zm36Tu0ErKArpmsZllEO2FaqjIWFxtt1HJC4Ys3oV4JP8gh4v69xMMKLeDl0Q v/YQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=hufzNwAkUkUKmFR4PyZXLddxSesPqoqMvE16JlPGLzc=; fh=z+QTh2iXWveDk2kWK2JK0+tU+Dg/k82GJwJX5yW87EY=; b=aBRn5Od0QdmxziwCtZ2M3cb3a+I34ZUcN5xRYMQ0tztZquqFDkpewtZ651dwoZTTzH Bg8bS6FSYSeNZSZ9bRxfAo9d25nSf4d5eMxXxuj4aabwk0eDbzK9OmFPIGMyYuSE0Xvy Ds0803WXWxTu2dNvXDFE1NFQ74x7x+5OQNaouuooQb4gnoMsnthe3jiylcw53pMBDKgc yWJShHGKEhmVU2p6jdDOPaGvwjbqycC/uzBErvXDmPFh1O0o8wksFLBgzyzdY4qLdEcW FiQcP3ndhJqUyyC2isnl0kT3wYlAH/KwqtwTr3URsooU6OTTcix0eA1llhdR4y2bUSnm 0f6w==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775304658; x=1775909458; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=hufzNwAkUkUKmFR4PyZXLddxSesPqoqMvE16JlPGLzc=; b=VQT/bIHDz0mPJlxEIl7qj4mS8mcSg/HMlQ27c5OUcnFaEyF338TTX9Tr5te4nR/A8h W/a3dpz+v69fAI9LxKOZdc3DNuQnLPLwLqtVAIsSzB39YiiHSAJ10qaS5BvP7Pdmj09h G5u//+oNxFLAfr16oPLVh+WJOB61sX21QOiffPKdG4W/6m5/XVTEkFDqHB8pkQb/ayNh M8LG1VEt8ncrg22nBRIwKeU4VIVtvc1x5W1Ze4BkYdDiXz+xHEdCT7uQqDukX9QF8i6A n48F5Ww1NjcpFy84JTBNkE+V9DgkV0hTjDcE+LZtEF2fXTupQdUyGxAcywJniwYq+96I S9Gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775304658; x=1775909458; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=hufzNwAkUkUKmFR4PyZXLddxSesPqoqMvE16JlPGLzc=; b=r/2Q0rSHQ6m7MXoGkwkRFU4oQu2Ivu8n4NSrtmisWApSdejnppdHVlx54v9j0ozp/r bA7rwaR/ZJhs6zuHw7dzMo70LC8FYRJsfvT/onLmkp37M2GMC2YmWglHrHrAMfXKxoBb /ZyImms9GkvR7/4TvCNw4Qgi7rJXXNqTxI5z14HOSZzNbCeMuZGx/5MwKU0zg674B/2G hpZsHkSprLXWX6THYgHnZ5eGqW/fQYGu/odLhdPiC6e0F9yNp+f2a3/Vw0y7c121mCHD kGDQ6jqFTLFflif6pJsd3zZdRuKpFMSqvPDjk1tXUqjAsmTHSPMKQciY1bHk3udYElaF yzbQ== X-Forwarded-Encrypted: i=1; AJvYcCX/FbTcPUaC0vpTjb8ukaz8Z8sHoU+uCTpc/q3WtW8U8LJcFJCoCaFqVNgfZ4zBXqkAkCtz9ymmv5mr5foL@postgresql.org X-Gm-Message-State: AOJu0Yzt5u1fXGHwj+6KkuZ1XPZ179rOD/PG3n37Tg5m64Azl3/bftT9 2NPJqbK1bZH0VHL8nH/cIpK3FzP/4nNkM0XL3I+p7kmDXql/zuDHMxruLIwtkpIncHVZGB0Q7bp KBUaerY730YaM59K86m6L4xSuY+8qcGA= X-Gm-Gg: AeBDieuUCTVH5P+alKrawmk/cprzW5dHAaXSw+qPn80GZRXkRS2sXZFESZSrg4mNKEg vRSfgHHfrZVyXRdTUHhYsibqXN8GsssUFvpK7wBkRSaYssAOzSrAaaFnUk0qXz1ZsPuKBD5Ng05 ulpiBjFEOpiomDoqtfx3gLVtbFZagC/MGVJUadqyPwmLgKapCLrU1Cnjej4m/F0LWy4MWIiqEVV BTwo1kCAEGhRFkSuQcr50u27H7OEWhhJRcd4kXBzxVgkdru1R+D2Ln1tqi5CNTNjIoqAClQAN5h oEzxgP7g X-Received: by 2002:a05:6a21:6d9f:b0:398:7796:7823 with SMTP id adf61e73a8af0-39f2d8441a7mr5760818637.6.1775304657511; Sat, 04 Apr 2026 05:10:57 -0700 (PDT) MIME-Version: 1.0 References: <54c35fb9-da3a-4754-ab8c-46ed0b612465@vondra.me> <684c70d7-180e-461d-9377-600c2db581ba@vondra.me> <605328.1747710381@sss.pgh.pa.us> <691261.1747755511@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Sat, 4 Apr 2026 21:10:37 +0900 X-Gm-Features: AQROBzASWYBzL97MCOYm9uwsowmvuDhlRH0i6CZ0kqpZuVTYc4mrhAIV9_XjfrM Message-ID: Subject: Re: generic plans and "initial" pruning To: Chao Li Cc: Tom Lane , Tender Wang , Alexander Lakhin , Tomas Vondra , Robert Haas , Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown Content-Type: multipart/mixed; boundary="0000000000007aced7064ea1536d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007aced7064ea1536d Content-Type: text/plain; charset="UTF-8" Attached is a redesigned version. While working on the previous design, I grew increasingly uncomfortable with CachedPlanPrepData -- it was smuggling executor state out of GetCachedPlan() through an out-parameter, which papered over the real problem: GetCachedPlan() was doing too much. The main change in this version is architectural: GetCachedPlan() no longer acquires execution locks. Callers now own that responsibility, which is natural because each call site iterates stmt_list differently and manages execution state in its own way -- and it lets them choose between conservative lock-all and pruning-aware locking where appropriate. Non-portal call sites remain on the conservative path for now. _SPI_execute_plan requires care around snapshot setup, which happens after plan fetch rather than before. SQL functions have a different issue: init_execution_state() fetches the plan while postquel_start() handles execution, with execution_state containers in between, making it harder to thread a prepped QueryDesc through. The portal path and EXPLAIN EXECUTE cover the most common prepared-statement-with-partitions workloads; the remaining sites can be converted incrementally. This is now starting to feel closer to what Tom suggested back in January 2023 [1], where he proposed getting rid of AcquireExecutorLocks() inside GetCachedPlan() entirely and pushing lock acquisition out to callers. He noted that "we'd be pushing the responsibility for looping back and re-planning out to fairly high-level calling code" and that "we'd definitely be changing some fundamental APIs." That is the direction I came around to over the last couple of weeks while wrestling with CachedPlanPrepData. The reverted approach also tried to follow Tom's direction but moved locking into ExecutorStart(), which forced it to handle plan invalidation from inside the executor by mutating the CachedPlan in-place. This version moves locking out to the callers instead, so the executor and plan cache never reach into each other. The series is now four patches: 0001: Move execution lock acquisition out of GetCachedPlan(). Adds AcquireExecutorLocks() as a caller-facing function with validity check and retry. Adds PortalLockCachedPlan() in pquery.c to centralize the portal retry logic. All callers are converted. No behavioral change. 0002: Refactor executor's initial partition pruning setup. Cleanup only, no behavioral change. 0003: Introduce ExecutorPrep() and refactor executor startup. Factors range table init, permission checks, and initial pruning out of InitPlan(). Scaffolding for 0004; all callers still go through the normal ExecutorStart() path. 0004: Use pruning-aware locking for single-statement cached plans. Adds ExecutorPrepAndLock() which locks unprunable relations, runs ExecutorPrep() to determine surviving partitions, then locks only those. Extends PortalLockCachedPlan() with a pruning-aware path for eligible plans. Multi-statement CachedPlans (from rule rewriting) always use conservative locking. In principle, this could be relaxed if the planner can prove that no pruning expression reads state modified by an earlier statement, but that is left for a future patch. Includes regression tests. In case it's not clear, I'm not targeting v19 at this point. I'd like to get this into v20 CF1 and would welcome review from anyone interested. -- Thanks, Amit Langote [1] https://www.postgresql.org/message-id/4191508.1674157166%40sss.pgh.pa.us --0000000000007aced7064ea1536d Content-Type: application/octet-stream; name="v11-0004-Use-pruning-aware-locking-for-single-statement-c.patch" Content-Disposition: attachment; filename="v11-0004-Use-pruning-aware-locking-for-single-statement-c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnkahukt0 RnJvbSBmNTg2NjM1YWI0OWYzMDI3NTQ2YTdiZGE0YzRmNjAxN2I5NDZmMzMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFNhdCwgNCBBcHIgMjAyNiAyMDo0MzoxNCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjEx IDQvNF0gVXNlIHBydW5pbmctYXdhcmUgbG9ja2luZyBmb3Igc2luZ2xlLXN0YXRlbWVudCBjYWNo ZWQKIHBsYW5zCgpGb3Igc2luZ2xlLXN0YXRlbWVudCByZXVzZWQgZ2VuZXJpYyBwbGFucywgcGVy Zm9ybSBpbml0aWFsIHBhcnRpdGlvbgpwcnVuaW5nIGJlZm9yZSBhY3F1aXJpbmcgZXhlY3V0aW9u IGxvY2tzLCB0aGVuIGxvY2sgb25seSB0aGUKc3Vydml2aW5nIHBhcnRpdGlvbnMuCgpBZGQgRXhl Y3V0b3JQcmVwQW5kTG9jaygpIHdoaWNoIGVuY2Fwc3VsYXRlcyB0aGUgcHJ1bmluZy1hd2FyZSBs b2NrCnNlcXVlbmNlOiBsb2NrIHVucHJ1bmFibGUgcmVsYXRpb25zLCBjYWxsIEV4ZWN1dG9yUHJl cCgpIHRvIHJ1bgppbml0aWFsIHBydW5pbmcsIHRoZW4gbG9jayBzdXJ2aXZvcnMuICBQbGFuIHZh bGlkaXR5IGlzIGNoZWNrZWQKYWZ0ZXIgZWFjaCBzdGVwOyBFeGVjdXRvclByZXBDbGVhbnVwKCkg aGFuZGxlcyB0aGUgY2FzZSB3aGVyZSB0aGUKcGxhbiBpcyBpbnZhbGlkYXRlZCBiZXR3ZWVuIHBy ZXAgYW5kIGV4ZWN1dGlvbi4KCkV4dGVuZCBQb3J0YWxMb2NrQ2FjaGVkUGxhbigpIHRvIHVzZSB0 aGUgcHJ1bmluZy1hd2FyZSBwYXRoIGZvcgplbGlnaWJsZSBwbGFucyAoc2luZ2xlLXN0YXRlbWVu dCByZXVzZWQgZ2VuZXJpYywgbm9uLXV0aWxpdHkpLgpBbGwgb3RoZXIgY2FzZXMgY29udGludWUg dXNpbmcgdGhlIGNvbnNlcnZhdGl2ZSBsb2NrLWFsbCBwYXRoCmZyb20gdGhlIHByZXZpb3VzIGNv bW1pdC4KClRyYWNrIGZpcnN0UmVzdWx0UmVscyBpbiBQbGFubmVyR2xvYmFsIGFuZCBQbGFubmVk U3RtdCBzbyB0aGV5CmFyZSBsb2NrZWQgZXZlbiBpZiBwcnVuZWQsIHByZXNlcnZpbmcgRXhlY0lu aXRNb2RpZnlUYWJsZSgpCmFzc3VtcHRpb25zIGFib3V0IHRoZSBmaXJzdCByZXN1bHQgcmVsYXRp b24gYmVpbmcgYXZhaWxhYmxlLgoKTXVsdGktc3RhdGVtZW50IENhY2hlZFBsYW5zIChmcm9tIHJ1 bGUgcmV3cml0aW5nKSBhbHdheXMgdXNlCmNvbnNlcnZhdGl2ZSBsb2NraW5nLCBzaW5jZSBQb3J0 YWxSdW5NdWx0aSgpIGV4ZWN1dGVzIHN0YXRlbWVudHMKc2VxdWVudGlhbGx5IHdpdGggQ0NJIGJl dHdlZW4gdGhlbSBhbmQgbGF0ZXIgc3RhdGVtZW50cycgcHJ1bmluZwpleHByZXNzaW9ucyBtYXkg ZGVwZW5kIG9uIGVhcmxpZXIgb25lcycgZWZmZWN0cy4gIEluIHByaW5jaXBsZSwKdGhpcyBjb3Vs ZCBiZSByZWxheGVkIGlmIHRoZSBwbGFubmVyIGNhbiBwcm92ZSB0aGF0IG5vIHBydW5pbmcKZXhw cmVzc2lvbiByZWFkcyBzdGF0ZSBtb2RpZmllZCBieSBhbiBlYXJsaWVyIHN0YXRlbWVudCwgYnV0 IHRoYXQKaXMgbGVmdCBmb3IgYSBmdXR1cmUgcGF0Y2guCgpSZWdyZXNzaW9uIHRlc3RzIGFyZSBp bmNsdWRlZCB0byB2ZXJpZnk6CgotIE9ubHkgc3Vydml2aW5nIHBhcnRpdGlvbnMgYXJlIGxvY2tl ZCB3aGVuIHBydW5pbmcgaXMgZW5hYmxlZCwgYW5kCiAgYWxsIHBhcnRpdGlvbnMgYXJlIGxvY2tl ZCB3aGVuIGl0IGlzIGRpc2FibGVkIChwZ19sb2NrcyBpbnNwZWN0aW9uKS4KLSBNdWx0aXBsZSBN b2RpZnlUYWJsZSBub2RlcyAodmlhIHdyaXRhYmxlIENURXMpIGhhbmRsZSB0aGUgY2FzZSB3aGVy ZQogIGFsbCB0YXJnZXQgcGFydGl0aW9ucyBhcmUgcHJ1bmVkLCBleGVyY2lzaW5nIGZpcnN0UmVz dWx0UmVscy4KLSBQbGFuIGludmFsaWRhdGlvbiBkdXJpbmcgcHJ1bmluZy1hd2FyZSBsb2NrIHNl dHVwIChEREwgdHJpZ2dlcmVkIGJ5CiAgYSBwcnVuaW5nIGV4cHJlc3Npb24pIGRpc2NhcmRzIHRo ZSBwcmVwIHN0YXRlIGFuZCByZXBsYW5zIGNsZWFubHkuCi0gTXVsdGktc3RhdGVtZW50IENhY2hl ZFBsYW5zIChmcm9tIHJ1bGUgcmV3cml0aW5nKSBmYWxsIGJhY2sgdG8KICBsb2NraW5nIGFsbCBw YXJ0aXRpb25zLCBhdm9pZGluZyBzdGFsZSBwcnVuaW5nIHJlc3VsdHMuCgpOb3RlIGZvciBleHRl bnNpb24gYXV0aG9yczogY29kZSB0aGF0IGFjY2Vzc2VzIHBhcnRpdGlvbiByZWxhdGlvbnMKdGhy b3VnaCBFU3RhdGUgbXVzdCBjaGVjayB0aGF0IHRoZSBSVCBpbmRleCBpcyBhIG1lbWJlciBvZgpl c191bnBydW5lZF9yZWxpZHMgYmVmb3JlIG9wZW5pbmcgdGhlIHJlbGF0aW9uLiAgUHJldmlvdXNs eSB0aGlzCndhcyBhbiBvcHRpbWl6YXRpb247IGl0IGlzIG5vdyBhIGNvcnJlY3RuZXNzIHJlcXVp cmVtZW50LCBiZWNhdXNlCnBydW5lZCBwYXJ0aXRpb25zIG1heSBub3QgYmUgbG9ja2VkLgotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgICAgICAgICB8ICA0NSArKyst LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jICAgICAgICAgICAgICAgIHwgIDMwICsr LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgMTQyICsr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyAgICAg ICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgICAgICAg ICB8ICAgMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgICAgICAg fCAgMTggKysKIHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAgICAgICAgICAgICAgICB8 ICA1NCArKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgICAgICAgICAg IHwgIDE2ICsrCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggICAgICAgICAgICAgICAg fCAgIDMgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgICAgICAgICAgICB8 ICAgNCArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAgICAgICAgfCAg IDMgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggICAgICAgICAgICAgICAgIHwgIDEw ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oICAgICAgICAgICAgICAgICB8ICAgMiAr CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQgfCAxODQgKysr KysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5vdXQg ICAgICAgfCAgNjMgKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUu c3FsICAgICAgfCAxMTYgKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5jYWNo ZS5zcWwgICAgICAgICAgICB8ICA1MiArKysrKwogMTcgZmlsZXMgY2hhbmdlZCwgNzIwIGluc2Vy dGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBlNGI3 MDE2NmIwZS4uNjBjZDkxMmFjZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTM3NCw3ICsz NzQsOCBAQCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29y T3B0aW9ucywKIAkvKiBydW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCiAJ RXhwbGFpbk9uZVBsYW4ocGxhbiwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5 RW52LAogCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5V TEwpLAotCQkJCSAgIGVzLT5tZW1vcnkgPyAmbWVtX2NvdW50ZXJzIDogTlVMTCk7CisJCQkJICAg ZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMLAorCQkJCSAgIE5VTEwpOwogfQogCiAv KgpAQCAtNDk4LDcgKzQ5OSw4IEBAIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVk c3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJCSAgIGNvbnN0IGNo YXIgKnF1ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJv bm1lbnQgKnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCiAJCQkgICBj b25zdCBCdWZmZXJVc2FnZSAqYnVmdXNhZ2UsCi0JCQkgICBjb25zdCBNZW1vcnlDb250ZXh0Q291 bnRlcnMgKm1lbV9jb3VudGVycykKKwkJCSAgIGNvbnN0IE1lbW9yeUNvbnRleHRDb3VudGVycyAq bWVtX2NvdW50ZXJzLAorCQkJICAgUXVlcnlEZXNjICpwcmVwX3FkKQogewogCURlc3RSZWNlaXZl ciAqZGVzdDsKIAlRdWVyeURlc2MgICpxdWVyeURlc2M7CkBAIC01MjcsMTMgKzUyOSw2IEBAIEV4 cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywg RXhwbGFpblN0YXRlICplcywKIAkgKi8KIAlJTlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0dGlt ZSk7CiAKLQkvKgotCSAqIFVzZSBhIHNuYXBzaG90IHdpdGggYW4gdXBkYXRlZCBjb21tYW5kIElE IHRvIGVuc3VyZSB0aGlzIHF1ZXJ5IHNlZXMKLQkgKiByZXN1bHRzIG9mIGFueSBwcmV2aW91c2x5 IGV4ZWN1dGVkIHF1ZXJpZXMuCi0JICovCi0JUHVzaENvcGllZFNuYXBzaG90KEdldEFjdGl2ZVNu YXBzaG90KCkpOwotCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7Ci0KIAkvKgogCSAq IFdlIGRpc2NhcmQgdGhlIG91dHB1dCBpZiB3ZSBoYXZlIG5vIHVzZSBmb3IgaXQuICBJZiB3ZSdy ZSBleHBsYWluaW5nCiAJICogQ1JFQVRFIFRBQkxFIEFTLCB3ZSdkIGJldHRlciB1c2UgdGhlIGFw cHJvcHJpYXRlIHR1cGxlIHJlY2VpdmVyLCB3aGlsZQpAQCAtNTQ5LDEwICs1NDQsMzQgQEAgRXhw bGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBF eHBsYWluU3RhdGUgKmVzLAogCWVsc2UKIAkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CiAKLQkvKiBD cmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1 ZXJ5RGVzYyhwbGFubmVkc3RtdCwgcXVlcnlTdHJpbmcsCi0JCQkJCQkJCUdldEFjdGl2ZVNuYXBz aG90KCksIEludmFsaWRTbmFwc2hvdCwKLQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwg aW5zdHJ1bWVudF9vcHRpb24pOworCS8qCisJICogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUg cXVlcnksIG9yIHVzZSB0aGUgb25lIHByb3ZpZGVkIGJ5IHRoZQorCSAqIGNhbGxlci4gIFdoZW4g cmV1c2luZyBhIHByZXAgUXVlcnlEZXNjLCBpdHMgc25hcHNob3Qgd2FzIHNldCBhdAorCSAqIGNy ZWF0aW9uIHRpbWU7IHdlIHB1c2ggaXQgYXMgYWN0aXZlIGZvciBFeGVjdXRvclN0YXJ0IGFuZCBv dmVycmlkZSB0aGUKKwkgKiBkZXN0aW5hdGlvbiBhbmQgaW5zdHJ1bWVudCBvcHRpb25zLCB3aGlj aCB3ZXJlIG5vdCBrbm93biB3aGVuIHRoZQorCSAqIGNhbGxlciBjcmVhdGVkIGl0LgorCSAqLwor CWlmIChwcmVwX3FkKQorCXsKKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldEFjdGl2ZVNuYXBzaG90 KCkpOworCQlxdWVyeURlc2MgPSBwcmVwX3FkOworCQlBc3NlcnQocXVlcnlEZXNjLT5kZXN0ID09 IE5vbmVfUmVjZWl2ZXIpOworCQlxdWVyeURlc2MtPmRlc3QgPSBkZXN0OworCQlxdWVyeURlc2Mt Pmluc3RydW1lbnRfb3B0aW9ucyA9IGluc3RydW1lbnRfb3B0aW9uOworCX0KKwllbHNlCisJewor CQkvKgorCQkgKiBVc2UgYSBzbmFwc2hvdCB3aXRoIGFuIHVwZGF0ZWQgY29tbWFuZCBJRCB0byBl bnN1cmUgdGhpcyBxdWVyeSBzZWVzCisJCSAqIHJlc3VsdHMgb2YgYW55IHByZXZpb3VzbHkgZXhl Y3V0ZWQgcXVlcmllcy4KKwkJICovCisJCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRBY3RpdmVTbmFw c2hvdCgpKTsKKwkJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKKwkJcXVlcnlEZXNj ID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW5uZWRzdG10LCBxdWVyeVN0cmluZywKKwkJCQkJCQkJCUdl dEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKKwkJCQkJCQkJCWRlc3QsIHBhcmFt cywgcXVlcnlFbnYsCisJCQkJCQkJCQlpbnN0cnVtZW50X29wdGlvbik7CisJfQogCiAJLyogU2Vs ZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCiAJaWYgKGVzLT5hbmFseXplKQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJl cGFyZS5jCmluZGV4IDAzZDdhOThmYzU4Li4zYmJiYzA1MjE0OSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBh cmUuYwpAQCAtNTg4LDYgKzU4OCw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQg KmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCU1lbW9yeUNv bnRleHRDb3VudGVycyBtZW1fY291bnRlcnM7CiAJTWVtb3J5Q29udGV4dCBwbGFubmVyX2N0eCA9 IE5VTEw7CiAJTWVtb3J5Q29udGV4dCBzYXZlZF9jdHggPSBOVUxMOworCVF1ZXJ5RGVzYyAgKnBy ZXBfcWQgPSBOVUxMOwogCiAJaWYgKGVzLT5tZW1vcnkpCiAJewpAQCAtNjQwLDggKzY0MSwzMSBA QCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAq aW50bywgRXhwbGFpblN0YXRlICplcywKIAkJCQkJCQkgIHBzdGF0ZS0+cF9xdWVyeUVudik7CiAJ CXBsYW5fbGlzdCA9IGNwbGFuLT5zdG10X2xpc3Q7CiAKLQkJaWYgKEFjcXVpcmVFeGVjdXRvckxv Y2tzKGNwbGFuKSkKKwkJaWYgKCFDYWNoZWRQbGFuQ2FuUHJlcChjcGxhbiwgZW50cnktPnBsYW5z b3VyY2UpKQorCQl7CisJCQlpZiAoQWNxdWlyZUV4ZWN1dG9yTG9ja3MoY3BsYW4pKQorCQkJCWJy ZWFrOworCQkJUmVsZWFzZUNhY2hlZFBsYW4oY3BsYW4sIEN1cnJlbnRSZXNvdXJjZU93bmVyKTsK KwkJCWNvbnRpbnVlOworCQl9CisKKwkJcHJlcF9xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhsaW5pdGlh bF9ub2RlKFBsYW5uZWRTdG10LCBwbGFuX2xpc3QpLAorCQkJCQkJCQkgIHF1ZXJ5X3N0cmluZywK KwkJCQkJCQkJICBHZXRBY3RpdmVTbmFwc2hvdCgpLAorCQkJCQkJCQkgIEludmFsaWRTbmFwc2hv dCwKKwkJCQkJCQkJICBOb25lX1JlY2VpdmVyLAkvKiBFeHBsYWluT25lUGxhbiB3aWxsIGZpeCAq LworCQkJCQkJCQkgIHBhcmFtTEksCisJCQkJCQkJCSAgcHN0YXRlLT5wX3F1ZXJ5RW52LAorCQkJ CQkJCQkgIDAgLyogRXhwbGFpbk9uZVBsYW4gd2lsbCBmaXggKi8gKTsKKwkJaWYgKEV4ZWN1dG9y UHJlcEFuZExvY2socHJlcF9xZCwKKwkJCQkJCQkJQ3VycmVudFJlc291cmNlT3duZXIsCisJCQkJ CQkJCWVzLT5nZW5lcmljID8gRVhFQ19GTEFHX0VYUExBSU5fR0VORVJJQyA6IDAsCisJCQkJCQkJ CSZjcGxhbi0+aXNfdmFsaWQpKQogCQkJYnJlYWs7CisKKwkJLyogVHJ5IGFnYWluLiAqLworCQlF eGVjdXRvclByZXBDbGVhbnVwKHByZXBfcWQpOworCQlGcmVlUXVlcnlEZXNjKHByZXBfcWQpOwog CQlSZWxlYXNlQ2FjaGVkUGxhbihjcGxhbiwgQ3VycmVudFJlc291cmNlT3duZXIpOwogCX0KIApA QCAtNjY0LDYgKzY4OCw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNz dG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCXBsYW5fbGlzdCA9IGNw bGFuLT5zdG10X2xpc3Q7CiAKIAkvKiBFeHBsYWluIGVhY2ggcXVlcnkgKi8KKwlBc3NlcnQocHJl cF9xZCA9PSBOVUxMIHx8IGxpc3RfbGVuZ3RoKHBsYW5fbGlzdCkgPT0gMSk7CiAJZm9yZWFjaChw LCBwbGFuX2xpc3QpCiAJewogCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFu bmVkU3RtdCwgcCk7CkBAIC02NzEsNyArNjk2LDggQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVj dXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJ CWlmIChwc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpCiAJCQlFeHBsYWluT25lUGxh bihwc3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywgcGFyYW1MSSwgcHN0YXRlLT5wX3F1ZXJ5 RW52LAogCQkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDog TlVMTCksCi0JCQkJCQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOworCQkJ CQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMLAorCQkJCQkJICAgcHJlcF9x ZCk7CiAJCWVsc2UKIAkJCUV4cGxhaW5PbmVVdGlsaXR5KHBzdG10LT51dGlsaXR5U3RtdCwgaW50 bywgZXMsIHBzdGF0ZSwgcGFyYW1MSSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDcz NWM4MGUwOGE5Li43MzMzYzBmNjZkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0zMjQs NiArMzI0LDEyNCBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNj LCBpbnQgZWZsYWdzKQogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIH0KIAor LyoKKyAqIExvY2tSYW5nZVRhYmxlUmVsaWRzCisgKiAJCUFjcXVpcmUgb3IgcmVsZWFzZSBsb2Nr cyBvbiB0aGUgc3BlY2lmaWVkIHJlbGlkcywgd2hpY2ggcmVmZXJlbmNlCisgKiAJCWVudHJpZXMg aW4gdGhlIHByb3ZpZGVkIHJhbmdlIHRhYmxlLgorICoKKyAqIEhlbHBlciBmb3IgQWNxdWlyZUV4 ZWN1dG9yTG9ja3NVbnBydW5lZCgpLgorICovCitzdGF0aWMgdm9pZAorTG9ja1JhbmdlVGFibGVS ZWxpZHMoTGlzdCAqcnRhYmxlLCBCaXRtYXBzZXQgKnJlbGlkcywgYm9vbCBhY3F1aXJlKQorewor CWludAkJCXJ0aW5kZXggPSAtMTsKKworCXdoaWxlICgocnRpbmRleCA9IGJtc19uZXh0X21lbWJl cihyZWxpZHMsIHJ0aW5kZXgpKSA+PSAwKQorCXsKKwkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gbGlz dF9udGhfbm9kZShSYW5nZVRibEVudHJ5LCBydGFibGUsIHJ0aW5kZXggLSAxKTsKKworCQlBc3Nl cnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8fAorCQkJICAgKHJ0ZS0+cnRla2luZCA9 PSBSVEVfU1VCUVVFUlkgJiYgT2lkSXNWYWxpZChydGUtPnJlbGlkKSkpOworCisJCS8qCisJCSAq IEFjcXVpcmUgdGhlIGFwcHJvcHJpYXRlIHR5cGUgb2YgbG9jayBvbiBlYWNoIHJlbGF0aW9uIE9J RC4gTm90ZQorCQkgKiB0aGF0IHdlIGRvbid0IGFjdHVhbGx5IHRyeSB0byBvcGVuIHRoZSByZWws IGFuZCBoZW5jZSB3aWxsIG5vdCBmYWlsCisJCSAqIGlmIGl0J3MgYmVlbiBkcm9wcGVkIGVudGly ZWx5IC0tLSB3ZSdsbCBqdXN0IHRyYW5zaWVudGx5IGFjcXVpcmUgYQorCQkgKiBub24tY29uZmxp Y3RpbmcgbG9jay4KKwkJICovCisJCWlmIChhY3F1aXJlKQorCQkJTG9ja1JlbGF0aW9uT2lkKHJ0 ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQllbHNlCisJCQlVbmxvY2tSZWxhdGlvbk9p ZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwl9Cit9CisKKy8qCisgKiBBY3F1aXJl RXhlY3V0b3JMb2Nrc1ByZXBhcmVkCisgKgorICogQWNxdWlyZSBvciByZWxlYXNlIGV4ZWN1dGlv biBsb2NrcyB1c2luZyBwcnVuaW5nIHJlc3VsdHMgYWxyZWFkeSBjb21wdXRlZAorICogYnkgRXhl Y3V0b3JQcmVwKCkgYW5kIHN0b3JlZCBpbiBxdWVyeURlc2MtPmVzdGF0ZS4KKyAqCisgKiBUaGlz IGlzIGludGVuZGVkIGZvciBzaW5nbGUtc3RhdGVtZW50IHJldXNlZCBnZW5lcmljLXBsYW4gcGF0 aHMgdGhhdAorICogY2hvb3NlIHBydW5pbmctYXdhcmUgbG9ja2luZyBpbnN0ZWFkIG9mIHRoZSBj b25zZXJ2YXRpdmUKKyAqIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgcGF0aC4KKyAqLworc3RhdGlj IHZvaWQKK0FjcXVpcmVFeGVjdXRvckxvY2tzUHJlcGFyZWQoUXVlcnlEZXNjICpxdWVyeURlc2Ms IGJvb2wgYWNxdWlyZSkKK3sKKwlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQgPSBxdWVyeURlc2Mt PnBsYW5uZWRzdG10OworCUVTdGF0ZQkgICAqZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7CisJ Qml0bWFwc2V0ICAqbG9ja19yZWxpZHM7CisJTGlzdENlbGwgICAqbGM7CisKKwlBc3NlcnQocXVl cnlEZXNjICE9IE5VTEwpOworCUFzc2VydChlc3RhdGUgIT0gTlVMTCk7CisJQXNzZXJ0KHBsYW5u ZWRzdG10ICE9IE5VTEwpOworCUFzc2VydChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01E X1VUSUxJVFkpOworCisJbG9ja19yZWxpZHMgPSBibXNfZGlmZmVyZW5jZShlc3RhdGUtPmVzX3Vu cHJ1bmVkX3JlbGlkcywKKwkJCQkJCQkJIHBsYW5uZWRzdG10LT51bnBydW5hYmxlUmVsaWRzKTsK KworCS8qCisJICogS2VlcCB0aGUgZmlyc3QgcmVzdWx0IHJlbGF0aW9uIG9mIGVhY2ggTW9kaWZ5 VGFibGUgbG9ja2VkIGV2ZW4gaWYKKwkgKiBwcnVuaW5nIHJlbW92ZWQgYWxsIHRhcmdldCBwYXJ0 aXRpb25zLiAgRXhlY0luaXRNb2RpZnlUYWJsZSgpIHJlbGllcyBvbgorCSAqIG9uZSBzdWNoIHJl bGF0aW9uIHJlbWFpbmluZyBhdmFpbGFibGUuCisJICovCisJZm9yZWFjaChsYywgcGxhbm5lZHN0 bXQtPmZpcnN0UmVzdWx0UmVscykKKwl7CisJCUluZGV4CQlydGkgPSBsZmlyc3RfaW50KGxjKTsK KworCQlsb2NrX3JlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGxvY2tfcmVsaWRzLCBydGkpOworCX0K KworCUxvY2tSYW5nZVRhYmxlUmVsaWRzKHBsYW5uZWRzdG10LT5ydGFibGUsIGxvY2tfcmVsaWRz LCBhY3F1aXJlKTsKKworCWJtc19mcmVlKGxvY2tfcmVsaWRzKTsKKworfQorCisvKgorICogRXhl Y3V0b3JQcmVwQW5kTG9jaworICoJCVBlcmZvcm0gcHJ1bmluZy1hd2FyZSBsb2NraW5nIGZvciBh IHNpbmdsZSBQbGFubmVkU3RtdC4KKyAqCisgKiBMb2NrcyB1bnBydW5hYmxlIHJlbGF0aW9ucyBm aXJzdCwgdGhlbiBydW5zIEV4ZWN1dG9yUHJlcCgpIHRvCisgKiBkZXRlcm1pbmUgd2hpY2ggcGFy dGl0aW9ucyBzdXJ2aXZlIGluaXRpYWwgcHJ1bmluZywgdGhlbiBsb2NrcworICogb25seSB0aG9z ZSBzdXJ2aXZvcnMuICBDaGVja3MgKmlzX3ZhbGlkIGFmdGVyIGVhY2ggbG9ja2luZyBzdGVwCisg KiB0byBkZXRlY3QgcGxhbiBpbnZhbGlkYXRpb24gKGUuZy4sIGZyb20gY29uY3VycmVudCBEREwg b3IgRERMCisgKiB0cmlnZ2VyZWQgYnkgYSBwcnVuaW5nIGV4cHJlc3Npb24pLgorICoKKyAqIFJl dHVybnMgdHJ1ZSBpZiB0aGUgcGxhbiBpcyBzdGlsbCB2YWxpZCBhbmQgYWxsIG5lZWRlZCBsb2Nr cyBhcmUKKyAqIGhlbGQuICBSZXR1cm5zIGZhbHNlIGlmIHRoZSBwbGFuIHdhcyBpbnZhbGlkYXRl ZCBhdCBhbnkgcG9pbnQsIGluCisgKiB3aGljaCBjYXNlIGFsbCBhY3F1aXJlZCBsb2NrcyBoYXZl IGJlZW4gcmVsZWFzZWQgYW5kIHRoZSBjYWxsZXIKKyAqIHNob3VsZCBkaXNjYXJkIHRoZSBRdWVy eURlc2MgYW5kIHJldHJ5IHdpdGggYSBmcmVzaCBwbGFuLgorICovCitib29sCitFeGVjdXRvclBy ZXBBbmRMb2NrKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBSZXNvdXJjZU93bmVyIG93bmVyLAorCQkJ CQlpbnQgZWZsYWdzLCBib29sICppc192YWxpZCkKK3sKKwlQbGFubmVkU3RtdCAqcHN0bXQgPSBx dWVyeURlc2MtPnBsYW5uZWRzdG10OworCisJLyogTG9jayB1bnBydW5hYmxlIHJlbHMgYmVmb3Jl IHBydW5pbmcgY2FuIGFjY2VzcyB0aGVtLiAqLworCUxvY2tSYW5nZVRhYmxlUmVsaWRzKHBzdG10 LT5ydGFibGUsIHBzdG10LT51bnBydW5hYmxlUmVsaWRzLCB0cnVlKTsKKwlpZiAoISppc192YWxp ZCkKKwl7CisJCUxvY2tSYW5nZVRhYmxlUmVsaWRzKHBzdG10LT5ydGFibGUsIHBzdG10LT51bnBy dW5hYmxlUmVsaWRzLCBmYWxzZSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKiBSdW4gcHJ1 bmluZyBhbmQgbG9jayBzdXJ2aXZvcnMuICovCisJRXhlY3V0b3JQcmVwKHF1ZXJ5RGVzYywgb3du ZXIsIGVmbGFncyk7CisJQWNxdWlyZUV4ZWN1dG9yTG9ja3NQcmVwYXJlZChxdWVyeURlc2MsIHRy dWUpOworCWlmICghKmlzX3ZhbGlkKQorCXsKKwkJQWNxdWlyZUV4ZWN1dG9yTG9ja3NQcmVwYXJl ZChxdWVyeURlc2MsIGZhbHNlKTsKKwkJTG9ja1JhbmdlVGFibGVSZWxpZHMocHN0bXQtPnJ0YWJs ZSwgcHN0bXQtPnVucHJ1bmFibGVSZWxpZHMsIGZhbHNlKTsKKwkJcmV0dXJuIGZhbHNlOworCX0K KworCXJldHVybiB0cnVlOworfQorCiAvKgogICogRXhlY3V0b3JQcmVwCiAgKgpAQCAtMzgyLDYg KzUwMCwzMCBAQCBFeGVjdXRvclByZXAoUXVlcnlEZXNjICpxdWVyeURlc2MsIFJlc291cmNlT3du ZXIgb3duZXIsIGludCBlZmxhZ3MpCiAJQ3VycmVudFJlc291cmNlT3duZXIgPSBvbGRvd25lcjsK IH0KIAorLyoKKyAqIEV4ZWN1dG9yUHJlcENsZWFudXAKKyAqCQlDbGVhbiB1cCBhbiBFU3RhdGUg dGhhdCB3YXMgY3JlYXRlZCBieSBFeGVjdXRvclByZXAoKSBidXQgbmV2ZXIKKyAqCQlwYXNzZWQg dG8gRXhlY3V0b3JTdGFydCgpLiAgVGhpcyBoYXBwZW5zIHdoZW4gdGhlIHBsYW4gaXMKKyAqCQlp bnZhbGlkYXRlZCBiZXR3ZWVuIHByZXAgYW5kIGV4ZWN1dGlvbiwgYW5kIHRoZSBjYWxsZXIgbXVz dAorICoJCWRpc2NhcmQgdGhlIHByZXBwZWQgc3RhdGUgYmVmb3JlIHJldHJ5aW5nIHdpdGggYSBm cmVzaCBwbGFuLgorICoKKyAqIFVubGlrZSBFeGVjdXRvckVuZCgpLCB0aGlzIGRvZXMgbm90IGV4 cGVjdCBhIGZ1bGx5IGluaXRpYWxpemVkCisgKiBwbGFuIHN0YXRlIHRyZWUgLS0gb25seSB0aGUg cmFuZ2UgdGFibGUgcmVsYXRpb25zIGFuZCB0aGUKKyAqIEVTdGF0ZSBpdHNlbGYgbmVlZCB0byBi ZSBmcmVlZC4KKyAqLwordm9pZAorRXhlY3V0b3JQcmVwQ2xlYW51cChRdWVyeURlc2MgKnF1ZXJ5 RGVzYykKK3sKKwlFU3RhdGUJICAgKmVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0YXRlOworCisJaWYg KGVzdGF0ZSA9PSBOVUxMKQorCQlyZXR1cm47CisKKwlFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRp b25zKGVzdGF0ZSk7CisJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRlKTsKKwlxdWVyeURlc2MtPmVz dGF0ZSA9IE5VTEw7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjdXRvclJ1bgogICoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKaW5kZXggZGZkN2IzM2FhOWIuLjhiYzVjMzZl MDlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNTExMiw4ICs1 MTEyLDggQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJICogYXMgYSByZWZlcmVuY2UgZm9yIGJ1aWxkaW5nIHRoZSBS ZXN1bHRSZWxJbmZvIG9mIHRoZSB0YXJnZXQgcGFydGl0aW9uLgogCSAqIEluIGVpdGhlciBjYXNl LCBpdCBkb2Vzbid0IG1hdHRlciB3aGljaCByZXN1bHQgcmVsYXRpb24gaXMga2VwdCwgc28gd2UK IAkgKiBqdXN0IGtlZXAgdGhlIGZpcnN0IG9uZSwgaWYgYWxsIG90aGVycyBoYXZlIGJlZW4gcHJ1 bmVkLiAgU2VlIGFsc28sCi0JICogRXhlY0RvSW5pdGlhbFBydW5pbmcoKSwgd2hpY2ggZW5zdXJl cyB0aGF0IHRoaXMgZmlyc3QgcmVzdWx0IHJlbGF0aW9uCi0JICogaGFzIGJlZW4gbG9ja2VkLgor CSAqIEFjcXVpcmVFeGVjdXRvckxvY2tzVW5wcnVuZWQoKSwgd2hpY2ggZW5zdXJlcyB0aGF0IHRo aXMgZmlyc3QgcmVzdWx0CisJICogcmVsYXRpb24gaGFzIGJlZW4gbG9ja2VkLgogCSAqLwogCWkg PSAwOwogCWZvcmVhY2gobCwgbm9kZS0+cmVzdWx0UmVsYXRpb25zKQpAQCAtNTEyNyw2ICs1MTI3 LDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJCQkvKiBhbGwgcmVzdWx0IHJlbGF0aW9ucyBwcnVuZWQ7IGtlZXAg dGhlIGZpcnN0IG9uZSAqLwogCQkJa2VlcF9yZWwgPSB0cnVlOwogCQkJcnRpID0gbGluaXRpYWxf aW50KG5vZGUtPnJlc3VsdFJlbGF0aW9ucyk7CisJCQlBc3NlcnQobGlzdF9tZW1iZXJfaW50KGVz dGF0ZS0+ZXNfcGxhbm5lZHN0bXQtPmZpcnN0UmVzdWx0UmVscywgcnRpKSk7CiAJCQlpID0gMDsK IAkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggNGVjNzZjZTMxYTku LmFjZTFjYmFjYzkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC02NTcs NiArNjU3LDcgQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1 ZXJ5X3N0cmluZywgaW50IGN1cnNvck9wdGlvbnMsCiAJCQkJCQkJCQkJCSAgZ2xvYi0+cHJ1bmFi bGVSZWxpZHMpOwogCXJlc3VsdC0+cGVybUluZm9zID0gZ2xvYi0+ZmluYWxydGVwZXJtaW5mb3M7 CiAJcmVzdWx0LT5zdWJydGluZm9zID0gZ2xvYi0+c3VicnRpbmZvczsKKwlyZXN1bHQtPmZpcnN0 UmVzdWx0UmVscyA9IGdsb2ItPmZpcnN0UmVzdWx0UmVsczsKIAlyZXN1bHQtPmFwcGVuZFJlbGF0 aW9ucyA9IGdsb2ItPmFwcGVuZFJlbGF0aW9uczsKIAlyZXN1bHQtPnN1YnBsYW5zID0gZ2xvYi0+ c3VicGxhbnM7CiAJcmVzdWx0LT5yZXdpbmRQbGFuSURzID0gZ2xvYi0+cmV3aW5kUGxhbklEczsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwppbmRleCBmZjBlODc1ZjJhMi4uNmVlNTFm MDY5MjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTM4NCw2ICszODQs MjQgQEAgc2V0X3BsYW5fcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbikK IAkJfQogCX0KIAorCS8qCisJICogUmVjb3JkIHRoZSBmaXJzdCByZXN1bHQgcmVsYXRpb24gaWYg aXQgYmVsb25ncyB0byB0aGUgc2V0IG9mIGluaXRpYWxseQorCSAqIHBydW5hYmxlIHJlbGF0aW9u cy4gIFdlIHVzZSBibXNfbmV4dF9tZW1iZXIoKSB0byBnZXQgdGhlCisJICogbG93ZXN0LW51bWJl cmVkIGxlYWYgcmVzdWx0IHJlbCwgd2hpY2ggbWF0Y2hlcworCSAqIGxpbml0aWFsX2ludChNb2Rp ZnlUYWJsZS5yZXN1bHRSZWxhdGlvbnMpIGJlY2F1c2UgcGFydGl0aW9uIGV4cGFuc2lvbgorCSAq IHByZXNlcnZlcyBSVCBpbmRleCBvcmRlci4gIEV4ZWNJbml0TW9kaWZ5VGFibGUoKSBhc3NlcnRz IHRoYXQgdGhlCisJICogcmVjb3JkZWQgaW5kZXggbWF0Y2hlcyB3aGF0IGl0IGFjdHVhbGx5IG5l ZWRzLgorCSAqLworCWlmIChyb290LT5sZWFmX3Jlc3VsdF9yZWxpZHMpCisJeworCQlJbmRleAkJ Zmlyc3RSZXN1bHRSZWwgPSBibXNfbmV4dF9tZW1iZXIocm9vdC0+bGVhZl9yZXN1bHRfcmVsaWRz LCAtMSk7CisKKwkJZmlyc3RSZXN1bHRSZWwgKz0gcnRvZmZzZXQ7CisJCWlmIChibXNfaXNfbWVt YmVyKGZpcnN0UmVzdWx0UmVsLCByb290LT5nbG9iLT5wcnVuYWJsZVJlbGlkcykpCisJCQlyb290 LT5nbG9iLT5maXJzdFJlc3VsdFJlbHMgPQorCQkJCWxhcHBlbmRfaW50KHJvb3QtPmdsb2ItPmZp cnN0UmVzdWx0UmVscywgZmlyc3RSZXN1bHRSZWwpOworCX0KKwogCXJldHVybiByZXN1bHQ7CiB9 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90 Y29wL3BxdWVyeS5jCmluZGV4IDFiMjI1MTVkNTZlLi5hZjczMjgyMTEzOSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5j CkBAIC01OSw3ICs1OSw5IEBAIHN0YXRpYyB1aW50NjQgRG9Qb3J0YWxSdW5GZXRjaChQb3J0YWwg cG9ydGFsLAogCQkJCQkJCSAgIGxvbmcgY291bnQsCiAJCQkJCQkJICAgRGVzdFJlY2VpdmVyICpk ZXN0KTsKIHN0YXRpYyB2b2lkIERvUG9ydGFsUmV3aW5kKFBvcnRhbCBwb3J0YWwpOwotc3RhdGlj IGJvb2wgUG9ydGFsTG9ja0NhY2hlZFBsYW4oUG9ydGFsIHBvcnRhbCk7CitzdGF0aWMgYm9vbCBQ b3J0YWxMb2NrQ2FjaGVkUGxhbihQb3J0YWwgcG9ydGFsLCBib29sIGRvX3ByZXAsCisJCQkJCQkJ CSBQYXJhbUxpc3RJbmZvIHBhcmFtcywKKwkJCQkJCQkJIFF1ZXJ5RGVzYyAqKnF1ZXJ5RGVzY19w KTsKIAogCiAvKgpAQCAtNDkyLDkgKzQ5NCwxNCBAQCByZXN0YXJ0OgogCQkJCSAqIHRoZSBkZXN0 aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkgKgogCQkJCSAqIElmIHRoZSBwb3J0YWwgaXMgYmFj a2VkIGJ5IGEgY2FjaGVkIHBsYW4sIGFjcXVpcmUgZXhlY3V0aW9uCi0JCQkJICogbG9ja3Mgdmlh IFBvcnRhbExvY2tDYWNoZWRQbGFuKCkuICBJZiB0aGUgcGxhbiBpcwotCQkJCSAqIGludmFsaWRh dGVkIGR1cmluZyBsb2NraW5nLCBpdCByZXBsYW5zIGFuZCBtYXkgY2hhbmdlIHRoZQotCQkJCSAq IHBvcnRhbCBzdHJhdGVneSwgcmVxdWlyaW5nIHVzIHRvIHJlc3RhcnQgUG9ydGFsU3RhcnQoKS4K KwkJCQkgKiBsb2NrcyB2aWEgUG9ydGFsTG9ja0NhY2hlZFBsYW4oKS4gIEZvciBlbGlnaWJsZSBw bGFucworCQkJCSAqIChzaW5nbGUtc3RhdGVtZW50IHJldXNlZCBnZW5lcmljKSwgdGhpcyBwZXJm b3JtcworCQkJCSAqIHBydW5pbmctYXdhcmUgbG9ja2luZzogaXQgcnVucyBFeGVjdXRvclByZXAo KSBvbiB0aGUKKwkJCQkgKiBRdWVyeURlc2MgdG8gZGV0ZXJtaW5lIHdoaWNoIHBhcnRpdGlvbnMg c3Vydml2ZSBpbml0aWFsCisJCQkJICogcHJ1bmluZywgdGhlbiBsb2NrcyBvbmx5IHRob3NlLiAg SWYgdGhlIHBsYW4gaXMgaW52YWxpZGF0ZWQKKwkJCQkgKiBkdXJpbmcgdGhpcyBwcm9jZXNzLCBp dCByZXBsYW5zIGFuZCByZWJ1aWxkcyB0aGUgUXVlcnlEZXNjLgorCQkJCSAqIElmIHJlcGxhbm5p bmcgY2hhbmdlcyB0aGUgcG9ydGFsIHN0cmF0ZWd5LCB3ZSBtdXN0IHJlc3RhcnQKKwkJCQkgKiBQ b3J0YWxTdGFydCgpIHRvIHJlZGlzcGF0Y2guCiAJCQkJICovCiAJCQkJcXVlcnlEZXNjID0gQ3Jl YXRlUXVlcnlEZXNjKGxpbml0aWFsX25vZGUoUGxhbm5lZFN0bXQsIHBvcnRhbC0+c3RtdHMpLAog CQkJCQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRleHQsCkBAIC01MDYsNyArNTEzLDcgQEAgcmVzdGFy dDoKIAkJCQkJCQkJCQkJMCk7CiAJCQkJaWYgKHBvcnRhbC0+Y3BsYW4pCiAJCQkJewotCQkJCQlp ZiAoUG9ydGFsTG9ja0NhY2hlZFBsYW4ocG9ydGFsKSkKKwkJCQkJaWYgKFBvcnRhbExvY2tDYWNo ZWRQbGFuKHBvcnRhbCwgdHJ1ZSwgcGFyYW1zLCAmcXVlcnlEZXNjKSkKIAkJCQkJewogCQkJCQkJ UG9wQWN0aXZlU25hcHNob3QoKTsKIAkJCQkJCWdvdG8gcmVzdGFydDsKQEAgLTU1Miw3ICs1NTks NyBAQCByZXN0YXJ0OgogCQkJY2FzZSBQT1JUQUxfT05FX01PRF9XSVRIOgogCQkJCWlmIChwb3J0 YWwtPmNwbGFuKQogCQkJCXsKLQkJCQkJaWYgKFBvcnRhbExvY2tDYWNoZWRQbGFuKHBvcnRhbCkp CisJCQkJCWlmIChQb3J0YWxMb2NrQ2FjaGVkUGxhbihwb3J0YWwsIGZhbHNlLCBOVUxMLCBOVUxM KSkKIAkJCQkJCWdvdG8gcmVzdGFydDsKIAkJCQl9CiAKQEAgLTYwOCw3ICs2MTUsNyBAQCByZXN0 YXJ0OgogCQkJCSAqLwogCQkJCWlmIChwb3J0YWwtPmNwbGFuKQogCQkJCXsKLQkJCQkJaWYgKFBv cnRhbExvY2tDYWNoZWRQbGFuKHBvcnRhbCkpCisJCQkJCWlmIChQb3J0YWxMb2NrQ2FjaGVkUGxh bihwb3J0YWwsIGZhbHNlLCBOVUxMLCBOVUxMKSkKIAkJCQkJCWdvdG8gcmVzdGFydDsKIAkJCQl9 CiAKQEAgLTE4MjUsMTUgKzE4MzIsMzIgQEAgRW5zdXJlUG9ydGFsU25hcHNob3RFeGlzdHModm9p ZCkKICAqCQlBY3F1aXJlIGV4ZWN1dGlvbiBsb2NrcyBmb3IgYSBjYWNoZWQtcGxhbi1iYWNrZWQg cG9ydGFsLAogICoJCXJldHJ5aW5nIHdpdGggYSBmcmVzaCBwbGFuIGlmIHRoZSBjdXJyZW50IG9u ZSBpcyBpbnZhbGlkYXRlZC4KICAqCisgKiBJZiBkb19wcmVwIGlzIHRydWUgYW5kIHRoZSBwbGFu IGlzIGVsaWdpYmxlIChzaW5nbGUtc3RhdGVtZW50IHJldXNlZAorICogZ2VuZXJpYyBwbGFuKSwg cGVyZm9ybXMgcHJ1bmluZy1hd2FyZSBsb2NraW5nIHZpYSBFeGVjdXRvclByZXAoKSBhbmQKKyAq IHBvcHVsYXRlcyBwb3J0YWwtPnF1ZXJ5RGVzYyB3aXRoIHRoZSBwcmVwcGVkIFF1ZXJ5RGVzYy4g IE90aGVyd2lzZQorICogZmFsbHMgYmFjayB0byBsb2NraW5nIGFsbCByZWxhdGlvbnMgaW4gdGhl IHBsYW4uCisgKgogICogUmV0dXJucyB0cnVlIGlmIHJlcGxhbm5pbmcgY2hhbmdlZCBwb3J0YWwt PnN0cmF0ZWd5LCBtZWFuaW5nIHRoZQotICogY2FsbGVyIG11c3QgcmVkaXNwYXRjaC4gIFJldHVy bnMgZmFsc2Ugb25jZSBsb2NrcyBhcmUgaGVsZC4KKyAqIGNhbGxlciBtdXN0IHJlZGlzcGF0Y2gu ICBSZXR1cm5zIGZhbHNlIG9uY2UgbG9ja3MgYXJlIGhlbGQgYW5kIHRoZQorICogcGxhbiBpcyB2 YWxpZCBmb3IgZXhlY3V0aW9uLgogICovCiBzdGF0aWMgYm9vbAotUG9ydGFsTG9ja0NhY2hlZFBs YW4oUG9ydGFsIHBvcnRhbCkKK1BvcnRhbExvY2tDYWNoZWRQbGFuKFBvcnRhbCBwb3J0YWwsIGJv b2wgZG9fcHJlcCwKKwkJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAorCQkJCQkgUXVlcnlEZXNj ICoqcHJlcF9xZCkKIHsKIAlQb3J0YWxTdHJhdGVneSBzdGFydF9zdHJhdGVneSA9IHBvcnRhbC0+ c3RyYXRlZ3k7CiAKLQlpZiAoQWNxdWlyZUV4ZWN1dG9yTG9ja3MocG9ydGFsLT5jcGxhbikpCisJ aWYgKGRvX3ByZXAgJiYgQ2FjaGVkUGxhbkNhblByZXAocG9ydGFsLT5jcGxhbiwgcG9ydGFsLT5w bGFuc291cmNlKSkKKwl7CisJCUFzc2VydChwcmVwX3FkKTsKKwkJaWYgKEV4ZWN1dG9yUHJlcEFu ZExvY2soKnByZXBfcWQsIHBvcnRhbC0+cmVzb3duZXIsIDAsCisJCQkJCQkJCSZwb3J0YWwtPmNw bGFuLT5pc192YWxpZCkpCisJCQlyZXR1cm4gZmFsc2U7CisJCUV4ZWN1dG9yUHJlcENsZWFudXAo KnByZXBfcWQpOworCQlGcmVlUXVlcnlEZXNjKCpwcmVwX3FkKTsKKwl9CisJZWxzZSBpZiAoQWNx dWlyZUV4ZWN1dG9yTG9ja3MocG9ydGFsLT5jcGxhbikpCiAJCXJldHVybiBmYWxzZTsKIAogCS8q IFJlcGxhbi4gIExvY2tzIHdpbGwgYmUgdGFrZW4gZnJlc2hseS4gKi8KQEAgLTE4NDksNSArMTg3 MywxNSBAQCBQb3J0YWxMb2NrQ2FjaGVkUGxhbihQb3J0YWwgcG9ydGFsKQogCWlmIChwb3J0YWwt PnN0cmF0ZWd5ICE9IHN0YXJ0X3N0cmF0ZWd5KQogCQlyZXR1cm4gdHJ1ZTsKIAorCWlmIChwcmVw X3FkKQorCXsKKwkJQXNzZXJ0KGxpc3RfbGVuZ3RoKHBvcnRhbC0+c3RtdHMpID09IDEpOworCQkq cHJlcF9xZCA9IENyZWF0ZVF1ZXJ5RGVzYyhsaW5pdGlhbF9ub2RlKFBsYW5uZWRTdG10LCBwb3J0 YWwtPnN0bXRzKSwKKwkJCQkJCQkJICAgcG9ydGFsLT5zb3VyY2VUZXh0LAorCQkJCQkJCQkgICBH ZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCisJCQkJCQkJCSAgIE5vbmVfUmVj ZWl2ZXIsIHBhcmFtcywKKwkJCQkJCQkJICAgcG9ydGFsLT5xdWVyeUVudiwgMCk7CisJfQorCiAJ cmV0dXJuIGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxh bmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCBmN2Zl MzY2ODU5Yy4uZmNhMmY4NDA4MWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBA IC0xOTc3LDYgKzE5NzcsMjIgQEAgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoQ2FjaGVkUGxhbiAqY3Bs YW4pCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qCisgKiBDYWNoZWRQbGFuQ2FuUHJlcAorICoJCUNo ZWNrIHdoZXRoZXIgYSBjYWNoZWQgcGxhbiBpcyBlbGlnaWJsZSBmb3IgcHJ1bmluZy1hd2FyZSBs b2NraW5nCisgKgkJdmlhIEV4ZWN1dG9yUHJlcEFuZExvY2soKS4KKyAqCisgKiBPbmx5IHNpbmds ZS1zdGF0ZW1lbnQgcmV1c2VkIGdlbmVyaWMgcGxhbnMgd2l0aCBhIG5vbi11dGlsaXR5IGNvbW1h bmQKKyAqIHF1YWxpZnkuCisgKi8KK2Jvb2wKK0NhY2hlZFBsYW5DYW5QcmVwKENhY2hlZFBsYW4g KmNwbGFuLCBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQoreworCXJldHVybiAoY3BsYW4g PT0gcGxhbnNvdXJjZS0+Z3BsYW4gJiYKKwkJCWxpc3RfbGVuZ3RoKGNwbGFuLT5zdG10X2xpc3Qp ID09IDEgJiYKKwkJCWxpbml0aWFsX25vZGUoUGxhbm5lZFN0bXQsIGNwbGFuLT5zdG10X2xpc3Qp LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSk7Cit9CisKIC8qCiAgKiBBY3F1aXJlUGxhbm5l ckxvY2tzOiBhY3F1aXJlIGxvY2tzIG5lZWRlZCBmb3IgcGxhbm5pbmcgb2YgYSBxdWVyeXRyZWUg bGlzdDsKICAqIG9yIHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZhbHNlLgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv ZXhwbGFpbi5oCmluZGV4IDQ3MmUxNDFiYmEzLi4zYTAzMzU1ZTZiNiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4 cGxhaW4uaApAQCAtNjksNyArNjksOCBAQCBleHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFu bmVkU3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkgICBQYXJhbUxp c3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCiAJCQkJCQkgICBjb25z dCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCiAJCQkJCQkgICBjb25zdCBCdWZmZXJVc2FnZSAq YnVmdXNhZ2UsCi0JCQkJCQkgICBjb25zdCBNZW1vcnlDb250ZXh0Q291bnRlcnMgKm1lbV9jb3Vu dGVycyk7CisJCQkJCQkgICBjb25zdCBNZW1vcnlDb250ZXh0Q291bnRlcnMgKm1lbV9jb3VudGVy cywKKwkJCQkJCSAgIFF1ZXJ5RGVzYyAqcHJlcF9xZCk7CiAKIGV4dGVybiB2b2lkIEV4cGxhaW5Q cmludFBsYW4oRXhwbGFpblN0YXRlICplcywgUXVlcnlEZXNjICpxdWVyeURlc2MpOwogZXh0ZXJu IHZvaWQgRXhwbGFpblByaW50VHJpZ2dlcnMoRXhwbGFpblN0YXRlICplcywKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oCmluZGV4IDQ5MWM0ODg2NTA2Li5mZWY1YWFkY2RmYSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAibm9kZXMvbG9ja29wdGlvbnMu aCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRp bHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yZXNvd25lci5oIgogCiAKIC8qCkBAIC0yMzUsNiArMjM2 LDkgQEAgRXhlY0dldEp1bmtBdHRyaWJ1dGUoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIEF0dHJOdW1i ZXIgYXR0bm8sIGJvb2wgKmlzTnVsbCkKICAqLwogZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFydChR dWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBzdGFuZGFyZF9F eGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKK2V4dGVybiBi b29sIEV4ZWN1dG9yUHJlcEFuZExvY2soUXVlcnlEZXNjICpxdWVyeURlc2MsIFJlc291cmNlT3du ZXIgb3duZXIsCisJCQkJCQkJCWludCBlZmxhZ3MsIGJvb2wgKmlzX3ZhbGlkKTsKK2V4dGVybiB2 b2lkIEV4ZWN1dG9yUHJlcENsZWFudXAoUXVlcnlEZXNjICpxdWVyeURlc2MpOwogZXh0ZXJuIHZv aWQgRXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQlTY2FuRGlyZWN0aW9u IGRpcmVjdGlvbiwgdWludDY0IGNvdW50KTsKIGV4dGVybiB2b2lkIHN0YW5kYXJkX0V4ZWN1dG9y UnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCA2OTNiODc5 Zjc2ZC4uODc1M2UwNTE1MmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rl cy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0yMTcsNiArMjE3LDkg QEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAogCS8qICJmbGF0IiBsaXN0IG9mIGludGVn ZXIgUlQgaW5kZXhlcyAqLwogCUxpc3QJICAgKnJlc3VsdFJlbGF0aW9uczsKIAorCS8qICJmbGF0 IiBsaXN0IG9mIGludGVnZXIgUlQgaW5kZXhlcyAob25lIHBlciBNb2RpZnlUYWJsZSBub2RlKSAq LworCUxpc3QJICAgKmZpcnN0UmVzdWx0UmVsczsKKwogCS8qICJmbGF0IiBsaXN0IG9mIEFwcGVu ZFJlbEluZm9zICovCiAJTGlzdAkgICAqYXBwZW5kUmVsYXRpb25zOwogCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oCmluZGV4IDE0YTFkZmVkMmI5Li43ZjZmN2NkYTc4MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgK QEAgLTEyMCw2ICsxMjAsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAkvKiBSVCBp bmRleGVzIG9mIHJlbGF0aW9ucyB0YXJnZXRlZCBieSBJTlNFUlQvVVBEQVRFL0RFTEVURS9NRVJH RSAqLwogCUJpdG1hcHNldCAgKnJlc3VsdFJlbGF0aW9uUmVsaWRzOwogCisJLyoKKwkgKiBydGFi bGUgaW5kZXhlcyBvZiBmaXJzdCB0YXJnZXQgcmVsYXRpb24gaW4gZWFjaCBNb2RpZnlUYWJsZSBu b2RlIGluIHRoZQorCSAqIHBsYW4gZm9yIElOU0VSVC9VUERBVEUvREVMRVRFL01FUkdFLiAgTklM IGlmIHJlc3VsdFJlbGF0aW9ucyBpcyBOSUwuCisJICoKKwkgKiBUaGVzZSBhcmUgdXNlZCBieSBB Y3F1aXJlRXhlY3V0b3JMb2Nrc1VucHJ1bmVkKCkgdG8gZW5zdXJlIHRoYXQgdGhlCisJICogZmly c3QgcmVzdWx0IHJlbCBmb3IgZWFjaCBNb2RpZnlUYWJsZSByZW1haW5zIGxvY2tlZCBldmVuIGlm IHBydW5lZDsKKwkgKiBzZWUgRXhlY0luaXRNb2RpZnlUYWJsZSgpIGZvciB0aGUgZXhlY3V0b3Ig c2lkZSBhc3N1bXB0aW9ucy4KKwkgKi8KKwlMaXN0CSAgICpmaXJzdFJlc3VsdFJlbHM7CisKIAkv KiBsaXN0IG9mIEFwcGVuZFJlbEluZm8gbm9kZXMgKi8KIAlMaXN0CSAgICphcHBlbmRSZWxhdGlv bnM7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmgKaW5kZXggZTBmYzQwM2U3MTcuLjI5NDFkM2EzMDFiIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9wbGFuY2FjaGUuaApAQCAtMjU0LDQgKzI1NCw2IEBAIGV4dGVybiBib29sIENhY2hl ZFBsYW5Jc1NpbXBseVZhbGlkKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiBleHRlcm4g Q2FjaGVkRXhwcmVzc2lvbiAqR2V0Q2FjaGVkRXhwcmVzc2lvbihOb2RlICpleHByKTsKIGV4dGVy biB2b2lkIEZyZWVDYWNoZWRFeHByZXNzaW9uKENhY2hlZEV4cHJlc3Npb24gKmNleHByKTsKIAor ZXh0ZXJuIGJvb2wgQ2FjaGVkUGxhbkNhblByZXAoQ2FjaGVkUGxhbiAqY3BsYW4sIENhY2hlZFBs YW5Tb3VyY2UgKnBsYW5zb3VyY2UpOworCiAjZW5kaWYJCQkJCQkJLyogUExBTkNBQ0hFX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dAppbmRleCBk ZWFjZGQ3NTgwNy4uNjE3ODEzODlkMmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcGFydGl0aW9uX3BydW5lLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3BhcnRpdGlvbl9wcnVuZS5vdXQKQEAgLTQ4MjQsMyArNDgyNCwxODcgQEAgc2VsZWN0IG1pbihh KSBvdmVyIChwYXJ0aXRpb24gYnkgYSBvcmRlciBieSBhKSBmcm9tIHBhcnRfYWJjIHdoZXJlIGEg Pj0gc3RhYmxlX28KIAogZHJvcCB2aWV3IHBhcnRfYWJjX3ZpZXc7CiBkcm9wIHRhYmxlIHBhcnRf YWJjOworLS0KKy0tIFZlcmlmeSB0aGF0IHBydW5pbmctYXdhcmUgbG9ja2luZyBza2lwcyBwcnVu ZWQgcGFydGl0aW9ucworLS0gd2hlbiByZXVzaW5nIGEgZ2VuZXJpYyBjYWNoZWQgcGxhbi4KKy0t CitzZXQgcGxhbl9jYWNoZV9tb2RlIHRvIGZvcmNlX2dlbmVyaWNfcGxhbjsKK2NyZWF0ZSB0YWJs ZSBwcnVuZWxvY2tfcCAoYSBpbnQpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJs ZSBwcnVuZWxvY2tfcDEgcGFydGl0aW9uIG9mIHBydW5lbG9ja19wIGZvciB2YWx1ZXMgaW4gKDEp OworY3JlYXRlIHRhYmxlIHBydW5lbG9ja19wMiBwYXJ0aXRpb24gb2YgcHJ1bmVsb2NrX3AgZm9y IHZhbHVlcyBpbiAoMik7CitjcmVhdGUgdGFibGUgcHJ1bmVsb2NrX3AzIHBhcnRpdGlvbiBvZiBw cnVuZWxvY2tfcCBmb3IgdmFsdWVzIGluICgzKTsKK3ByZXBhcmUgcHJ1bmVsb2NrX3EgKGludCkg YXMgc2VsZWN0ICogZnJvbSBwcnVuZWxvY2tfcCB3aGVyZSBhID0gJDE7CistLSBGb3JjZSBnZW5l cmljIHBsYW4gY3JlYXRpb24KK2V4cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSBwcnVuZWxvY2tf cSgxKTsKKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAg IFN1YnBsYW5zIFJlbW92ZWQ6IDIKKyAgIC0+ICBTZXEgU2NhbiBvbiBwcnVuZWxvY2tfcDEgcHJ1 bmVsb2NrX3BfMQorICAgICAgICAgRmlsdGVyOiAoYSA9ICQxKQorKDQgcm93cykKKworLS0gRXhl Y3V0ZSBhbmQgY2hlY2sgd2hpY2ggY2hpbGQgcGFydGl0aW9ucyBhcmUgbG9ja2VkCitiZWdpbjsK K2V4ZWN1dGUgcHJ1bmVsb2NrX3EoMSk7CisgYSAKKy0tLQorKDAgcm93cykKKworc2VsZWN0IGMu cmVsbmFtZQorICBmcm9tIHBnX2xvY2tzIGwKKyAgam9pbiBwZ19jbGFzcyBjIG9uIGMub2lkID0g bC5yZWxhdGlvbgorIHdoZXJlIGwucGlkID0gcGdfYmFja2VuZF9waWQoKQorICAgYW5kIGMucmVs bmFtZSBsaWtlICdwcnVuZWxvY2tfcF8nCisgb3JkZXIgYnkgYy5yZWxuYW1lOworICAgcmVsbmFt ZSAgICAKKy0tLS0tLS0tLS0tLS0tCisgcHJ1bmVsb2NrX3AxCisoMSByb3cpCisKK2NvbW1pdDsK K2RlYWxsb2NhdGUgcHJ1bmVsb2NrX3E7CistLSBUdXJuIHBydW5pbmcgb2ZmCitzZXQgZW5hYmxl X3BhcnRpdGlvbl9wcnVuaW5nIHRvIG9mZjsKK3ByZXBhcmUgcHJ1bmVsb2NrX3EgKGludCkgYXMg c2VsZWN0ICogZnJvbSBwcnVuZWxvY2tfcCB3aGVyZSBhID0gJDE7CistLSBGb3JjZSBnZW5lcmlj IHBsYW4gY3JlYXRpb24KK2V4cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSBwcnVuZWxvY2tfcSgx KTsKKyAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIC0+ ICBTZXEgU2NhbiBvbiBwcnVuZWxvY2tfcDEgcHJ1bmVsb2NrX3BfMQorICAgICAgICAgRmlsdGVy OiAoYSA9ICQxKQorICAgLT4gIFNlcSBTY2FuIG9uIHBydW5lbG9ja19wMiBwcnVuZWxvY2tfcF8y CisgICAgICAgICBGaWx0ZXI6IChhID0gJDEpCisgICAtPiAgU2VxIFNjYW4gb24gcHJ1bmVsb2Nr X3AzIHBydW5lbG9ja19wXzMKKyAgICAgICAgIEZpbHRlcjogKGEgPSAkMSkKKyg3IHJvd3MpCisK Ky0tIEV4ZWN1dGUgYW5kIGNoZWNrIHdoaWNoIGNoaWxkIHBhcnRpdGlvbnMgYXJlIGxvY2tlZAor YmVnaW47CitleGVjdXRlIHBydW5lbG9ja19xKDEpOworIGEgCistLS0KKygwIHJvd3MpCisKK3Nl bGVjdCBjLnJlbG5hbWUKKyAgZnJvbSBwZ19sb2NrcyBsCisgIGpvaW4gcGdfY2xhc3MgYyBvbiBj Lm9pZCA9IGwucmVsYXRpb24KKyB3aGVyZSBsLnBpZCA9IHBnX2JhY2tlbmRfcGlkKCkKKyAgIGFu ZCBjLnJlbG5hbWUgbGlrZSAncHJ1bmVsb2NrX3BfJworIG9yZGVyIGJ5IGMucmVsbmFtZTsKKyAg IHJlbG5hbWUgICAgCistLS0tLS0tLS0tLS0tLQorIHBydW5lbG9ja19wMQorIHBydW5lbG9ja19w MgorIHBydW5lbG9ja19wMworKDMgcm93cykKKworY29tbWl0OworZGVhbGxvY2F0ZSBwcnVuZWxv Y2tfcTsKK3Jlc2V0IGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZzsKKy0tCistLSBWZXJpZnkgZmly c3RSZXN1bHRSZWxzIGhhbmRsaW5nIHdpdGggbXVsdGlwbGUgTW9kaWZ5VGFibGUgbm9kZXMKKy0t ICh3cml0YWJsZSBDVEVzKSB0YXJnZXRpbmcgYSBwYXJ0aXRpb25lZCB0YWJsZS4gIFdoZW4gYSBw cnVuaW5nCistLSBwYXJhbWV0ZXIgbWF0Y2hlcyBubyBwYXJ0aXRpb24sIGFsbCByZXN1bHQgcmVs YXRpb25zIGFyZSBwcnVuZWQKKy0tIGFuZCB0aGUgZXhlY3V0b3IgbXVzdCBzdGlsbCBmaW5kIGEg dXNhYmxlIGZpcnN0IHJlc3VsdCByZWxhdGlvbgorLS0gZm9yIGVhY2ggTW9kaWZ5VGFibGUgbm9k ZS4KKy0tCitwcmVwYXJlIHBydW5lbG9ja19tdF9xIChpbnQsIGludCkgYXMKKyAgd2l0aCB1cGQx IGFzICh1cGRhdGUgcHJ1bmVsb2NrX3Agc2V0IGEgPSBhKSwKKyAgICAgICB1cGQyIGFzICh1cGRh dGUgcHJ1bmVsb2NrX3Agc2V0IGEgPSBhIHdoZXJlIGEgPSAkMikKKyAgdXBkYXRlIHBydW5lbG9j a19wIHNldCBhID0gYSB3aGVyZSBhID0gJDE7CistLSBGb3JjZSBnZW5lcmljIHBsYW4gY3JlYXRp b24KK2V4cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSBwcnVuZWxvY2tfbXRfcSgxLCAyKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgVXBkYXRlIG9uIHBydW5lbG9ja19wCisgICBVcGRhdGUgb24gcHJ1bmVsb2NrX3Ax IHBydW5lbG9ja19wXzEKKyAgIENURSB1cGQxCisgICAgIC0+ICBVcGRhdGUgb24gcHJ1bmVsb2Nr X3AgcHJ1bmVsb2NrX3BfMworICAgICAgICAgICBVcGRhdGUgb24gcHJ1bmVsb2NrX3AxIHBydW5l bG9ja19wXzQKKyAgICAgICAgICAgVXBkYXRlIG9uIHBydW5lbG9ja19wMiBwcnVuZWxvY2tfcF81 CisgICAgICAgICAgIFVwZGF0ZSBvbiBwcnVuZWxvY2tfcDMgcHJ1bmVsb2NrX3BfNgorICAgICAg ICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnVuZWxv Y2tfcDEgcHJ1bmVsb2NrX3BfNAorICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ1 bmVsb2NrX3AyIHBydW5lbG9ja19wXzUKKyAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHBydW5lbG9ja19wMyBwcnVuZWxvY2tfcF82CisgICBDVEUgdXBkMgorICAgICAtPiAgVXBkYXRl IG9uIHBydW5lbG9ja19wIHBydW5lbG9ja19wXzcKKyAgICAgICAgICAgVXBkYXRlIG9uIHBydW5l bG9ja19wMiBwcnVuZWxvY2tfcF84CisgICAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAg ICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMgorICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHJ1bmVsb2NrX3AyIHBydW5lbG9ja19wXzgKKyAgICAgICAgICAgICAgICAgICAgICAgRmls dGVyOiAoYSA9ICQyKQorICAgLT4gIEFwcGVuZAorICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDog MgorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBydW5lbG9ja19wMSBwcnVuZWxvY2tfcF8xCisg ICAgICAgICAgICAgICBGaWx0ZXI6IChhID0gJDEpCisoMjIgcm93cykKKworLS0gQWxsIHBhcnRp dGlvbnMgcHJ1bmVkOiB2YWx1ZSA0IG1hdGNoZXMgbm8gcGFydGl0aW9uLCBzbyBlYWNoCistLSBN b2RpZnlUYWJsZSBtdXN0IHN0aWxsIGluaXRpYWxpemUgY29ycmVjdGx5IHdpdGggbm8gbWF0Y2hp bmcKKy0tIHJlc3VsdCByZWxhdGlvbnMuCitleHBsYWluIChjb3N0cyBvZmYpIGV4ZWN1dGUgcHJ1 bmVsb2NrX210X3EoNCwgNSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBwcnVuZWxvY2tfcAorICAg Q1RFIHVwZDEKKyAgICAgLT4gIFVwZGF0ZSBvbiBwcnVuZWxvY2tfcCBwcnVuZWxvY2tfcF8yCisg ICAgICAgICAgIFVwZGF0ZSBvbiBwcnVuZWxvY2tfcDEgcHJ1bmVsb2NrX3BfMworICAgICAgICAg ICBVcGRhdGUgb24gcHJ1bmVsb2NrX3AyIHBydW5lbG9ja19wXzQKKyAgICAgICAgICAgVXBkYXRl IG9uIHBydW5lbG9ja19wMyBwcnVuZWxvY2tfcF81CisgICAgICAgICAgIC0+ICBBcHBlbmQKKyAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBydW5lbG9ja19wMSBwcnVuZWxvY2tfcF8z CisgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwcnVuZWxvY2tfcDIgcHJ1bmVsb2Nr X3BfNAorICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHJ1bmVsb2NrX3AzIHBydW5l bG9ja19wXzUKKyAgIENURSB1cGQyCisgICAgIC0+ICBVcGRhdGUgb24gcHJ1bmVsb2NrX3AgcHJ1 bmVsb2NrX3BfNgorICAgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAgIFN1YnBs YW5zIFJlbW92ZWQ6IDMKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6 IDMKKygxNiByb3dzKQorCitkZWFsbG9jYXRlIHBydW5lbG9ja19tdF9xOworZHJvcCB0YWJsZSBw cnVuZWxvY2tfcDsKKy0tCistLSBWZXJpZnkgdGhhdCBwcnVuaW5nLWF3YXJlIGxvY2tpbmcgZmFs bHMgYmFjayB0byBsb2NraW5nIGFsbAorLS0gcGFydGl0aW9ucyBmb3IgbXVsdGktc3RhdGVtZW50 IENhY2hlZFBsYW5zLiAgUnVsZSByZXdyaXRpbmcgY2FuCistLSBleHBhbmQgYSBzaW5nbGUgc3Rh dGVtZW50IGludG8gbXVsdGlwbGUgUGxhbm5lZFN0bXRzLCBhbmQgbGF0ZXIKKy0tIHN0YXRlbWVu dHMgbXVzdCBub3QgaGF2ZSB0aGVpciBwcnVuaW5nIGV2YWx1YXRlZCBiZWZvcmUgZWFybGllcgor LS0gb25lcyBoYXZlIGV4ZWN1dGVkLCBzaW5jZSBDQ0kgYmV0d2VlbiBzdGF0ZW1lbnRzIGNhbiBj aGFuZ2Ugd2hhdAorLS0gcHJ1bmluZyBleHByZXNzaW9ucyBzZWUuCistLQorY3JlYXRlIHRhYmxl IHBydW5lX2NvbmZpZyAodmFsIGludCk7CitpbnNlcnQgaW50byBwcnVuZV9jb25maWcgdmFsdWVz ICgxKTsKK2NyZWF0ZSB0YWJsZSBtdWx0aXN0bXRfcHQgKGEgaW50LCBiIGludCkgcGFydGl0aW9u IGJ5IGxpc3QgKGEpOworY3JlYXRlIHRhYmxlIG11bHRpc3RtdF9wdF8xIHBhcnRpdGlvbiBvZiBt dWx0aXN0bXRfcHQgZm9yIHZhbHVlcyBpbiAoMSk7CitjcmVhdGUgdGFibGUgbXVsdGlzdG10X3B0 XzIgcGFydGl0aW9uIG9mIG11bHRpc3RtdF9wdCBmb3IgdmFsdWVzIGluICgyKTsKK2luc2VydCBp bnRvIG11bHRpc3RtdF9wdCB2YWx1ZXMgKDEsIDApLCAoMiwgMCk7CitjcmVhdGUgZnVuY3Rpb24g Z2V0X3BydW5lX3ZhbCgpIHJldHVybnMgaW50IGFzICQkCisgIHNlbGVjdCB2YWwgZnJvbSBwcnVu ZV9jb25maWc7CiskJCBsYW5ndWFnZSBzcWwgc3RhYmxlOworY3JlYXRlIHJ1bGUgY29uZmlnX3Vw ZF9ydWxlIGFzIG9uIHVwZGF0ZSB0byBtdWx0aXN0bXRfcHQKKyAgZG8gYWxzbyB1cGRhdGUgcHJ1 bmVfY29uZmlnIHNldCB2YWwgPSAyOworc2V0IHBsYW5fY2FjaGVfbW9kZSB0byBmb3JjZV9nZW5l cmljX3BsYW47CitwcmVwYXJlIG11bHRpX3EgYXMgdXBkYXRlIG11bHRpc3RtdF9wdCBzZXQgYiA9 IGIgKyAxIHdoZXJlIGEgPSBnZXRfcHJ1bmVfdmFsKCk7CistLSBmaXJzdCBleGVjdXRlIGNyZWF0 ZXMgdGhlIGdlbmVyaWMgcGxhbgorZXhlY3V0ZSBtdWx0aV9xOworLS0gcmVzZXQgZm9yIHRoZSBy ZWFsIHRlc3QKK3VwZGF0ZSBwcnVuZV9jb25maWcgc2V0IHZhbCA9IDE7Cit1cGRhdGUgbXVsdGlz dG10X3B0IHNldCBiID0gMDsKKy0tIHNlY29uZCBleGVjdXRlIHJldXNlcyB0aGUgcGxhbjsgcHJ1 bmluZy1hd2FyZSBsb2NraW5nIGtpY2tzIGluCitleGVjdXRlIG11bHRpX3E7CitzZWxlY3QgKiBm cm9tIG11bHRpc3RtdF9wdCBvcmRlciBieSBhOworIGEgfCBiIAorLS0tKy0tLQorIDEgfCAwCisg MiB8IDEKKygyIHJvd3MpCisKK2RlYWxsb2NhdGUgbXVsdGlfcTsKK2Ryb3AgcnVsZSBjb25maWdf dXBkX3J1bGUgb24gbXVsdGlzdG10X3B0OworZHJvcCBmdW5jdGlvbiBnZXRfcHJ1bmVfdmFsOwor ZHJvcCB0YWJsZSBtdWx0aXN0bXRfcHQsIHBydW5lX2NvbmZpZzsKK3Jlc2V0IHBsYW5fY2FjaGVf bW9kZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGxhbmNhY2hlLm91dAppbmRleCA0ZTU5MTg4 MTk2Yy4uMzA0M2RiZmFjMmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cGxhbmNhY2hlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BsYW5jYWNoZS5v dXQKQEAgLTM5OCwzICszOTgsNjYgQEAgc2VsZWN0IG5hbWUsIGdlbmVyaWNfcGxhbnMsIGN1c3Rv bV9wbGFucyBmcm9tIHBnX3ByZXBhcmVkX3N0YXRlbWVudHMKICgxIHJvdykKIAogZHJvcCB0YWJs ZSB0ZXN0X21vZGU7CistLSBUaGlzIGV4ZXJjaXNlcyB0aGUgQ2FjaGVkUGxhblByZXBDbGVhbnVw KCkgcGF0aCwgd2hpY2ggbXVzdCBmcmVlCistLSB0aGUgRVN0YXRlIGNyZWF0ZWQgYnkgRXhlY3V0 b3JQcmVwKCkgd2hlbiB0aGUgcGxhbiBpcyBpbnZhbGlkYXRlZAorLS0gYmVmb3JlIGV4ZWN1dGlv biBiZWdpbnMuICBUaGUgcHJ1bmluZyBleHByZXNzaW9uIHVzZXMgYSBzdGFibGUgU1FMCistLSBm dW5jdGlvbiB0aGF0IGNhbGxzIGEgdm9sYXRpbGUgcGxwZ3NxbCBmdW5jdGlvbi4gIFRoYXQgZnVu Y3Rpb24KKy0tIHBlcmZvcm1zIERETCBvbiBhIHBhcnRpdGlvbiB3aGVuIGEgc2VwYXJhdGUgInNp Z25hbCIgdGFibGUgc2F5cyB0bworLS0gZG8gc28uICBUaGUgc2Vjb25kIEVYRUNVVEUgc2hvdWxk IHJlcGxhbiBjbGVhbmx5IGFmdGVyIHRoZSBEREwuCitzZXQgcGxhbl9jYWNoZV9tb2RlIHRvIGZv cmNlX2dlbmVyaWNfcGxhbjsKK2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wIChh IGludCkgcGFydGl0aW9uIGJ5IGxpc3QgKGEpOworY3JlYXRlIHRhYmxlIGludmFsX2R1cmluZ19w cnVuaW5nX3AxIHBhcnRpdGlvbiBvZiBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wIGZvciB2YWx1ZXMg aW4gKDEpOworY3JlYXRlIHRhYmxlIGludmFsX2R1cmluZ19wcnVuaW5nX3AyIHBhcnRpdGlvbiBv ZiBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wIGZvciB2YWx1ZXMgaW4gKDIpOworaW5zZXJ0IGludG8g aW52YWxfZHVyaW5nX3BydW5pbmdfcCB2YWx1ZXMgKDEpLCAoMik7CitjcmVhdGUgdGFibGUgaW52 YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIChjcmVhdGVfaWR4IGJvb2wgbm90IG51bGwpOworaW5z ZXJ0IGludG8gaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIHZhbHVlcyAoZmFsc2UpOworY3Jl YXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gaW52YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYygpIHJldHVy bnMgaW50CithcyAkJAorZGVjbGFyZQorCWNyZWF0ZV9pbmRleCBib29sOworYmVnaW4KKwktLSBQ ZXJmb3JtIERETCBvbiBhIHBhcnRpdGlvbiBpZiBhc2tlZCB0bworCXNlbGVjdCBjcmVhdGVfaWR4 IGludG8gY3JlYXRlX2luZGV4IGZyb20gaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIGZvciB1 cGRhdGU7CisJaWYgY3JlYXRlX2luZGV4ID0gdHJ1ZSB0aGVuCisJCXJhaXNlIG5vdGljZSAnY3Jl YXRpbmcgaW5kZXggb24gcGFydGl0aW9uIGludmFsX2R1cmluZ19wcnVuaW5nX3AxJzsKKwkJY3Jl YXRlIGluZGV4IG9uIGludmFsX2R1cmluZ19wcnVuaW5nX3AxIChhKTsKKwkJdXBkYXRlIGludmFs X2R1cmluZ19wcnVuaW5nX3NpZ25hbCBzZXQgY3JlYXRlX2lkeCA9IGZhbHNlOworCWVuZCBpZjsK KwktLSB2YWx1ZSB0aGF0IHBydW5pbmcgd2lsbCBtYXRjaCBhZ2FpbnN0IHBhcnRpdGlvbiBib3Vu ZHMKKwlyZXR1cm4gMTsKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWwgdm9sYXRpbGU7CitjcmVh dGUgb3IgcmVwbGFjZSBmdW5jdGlvbiBzdGFibGVfcHJ1bmluZ192YWwoKSByZXR1cm5zIGludCBh cyAkJAorCXNlbGVjdCBpbnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5jKCk7CiskJCBsYW5ndWFnZSBz cWwgc3RhYmxlOworcHJlcGFyZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19xIGFzIHNlbGVjdCAqIGZy b20gaW52YWxfZHVyaW5nX3BydW5pbmdfcCB3aGVyZSBhID0gc3RhYmxlX3BydW5pbmdfdmFsKCk7 CistLSBCdWlsZCBhIGdlbmVyaWMgcGxhbiBhbmQgcnVuIHBydW5pbmcgb25jZSwgYnV0IGRvbid0 IHNldCB0aGUgc2lnbmFsCistLSBmb3IgaW52YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYygpIHRvIHBl cmZvcm0gdGhlIERETC4KK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikgZXhlY3V0ZSBpbnZh bF9kdXJpbmdfcHJ1bmluZ19xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBBcHBlbmQKKyAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEKKyAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuaW52YWxfZHVyaW5nX3BydW5pbmdfcDEgaW52YWxfZHVyaW5nX3BydW5pbmdfcF8xCisg ICAgICAgICBPdXRwdXQ6IGludmFsX2R1cmluZ19wcnVuaW5nX3BfMS5hCisgICAgICAgICBGaWx0 ZXI6IChpbnZhbF9kdXJpbmdfcHJ1bmluZ19wXzEuYSA9IHN0YWJsZV9wcnVuaW5nX3ZhbCgpKQor KDUgcm93cykKKworLS0gUmV1c2UgdGhlIGdlbmVyaWMgcGxhbi4gIE1ha2UgaW52YWxpZGF0ZV9w bGFuY2FjaGVfZnVuYygpIHBlcmZvcm0gRERMCistLSBkdXJpbmcgdGhpcyBleGVjdXRpb24sIHdo aWNoIHNob3VsZCBmb3JjZSByZXBsYW5uaW5nIHdpdGhvdXQgZXJyb3JzLgordXBkYXRlIGludmFs X2R1cmluZ19wcnVuaW5nX3NpZ25hbCBzZXQgY3JlYXRlX2lkeCA9IHRydWU7CitleHBsYWluICh2 ZXJib3NlLCBjb3N0cyBvZmYpIGV4ZWN1dGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcTsKK05PVElD RTogIGNyZWF0aW5nIGluZGV4IG9uIHBhcnRpdGlvbiBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wMQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBcHBlbmQKKyAgIFN1YnBs YW5zIFJlbW92ZWQ6IDEKKyAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuaW52YWxfZHVyaW5nX3By dW5pbmdfcDEgaW52YWxfZHVyaW5nX3BydW5pbmdfcF8xCisgICAgICAgICBPdXRwdXQ6IGludmFs X2R1cmluZ19wcnVuaW5nX3BfMS5hCisgICAgICAgICBGaWx0ZXI6IChpbnZhbF9kdXJpbmdfcHJ1 bmluZ19wXzEuYSA9IHN0YWJsZV9wcnVuaW5nX3ZhbCgpKQorKDUgcm93cykKKworZGVhbGxvY2F0 ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19xOworZHJvcCB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1bmlu Z19wLCBpbnZhbF9kdXJpbmdfcHJ1bmluZ19zaWduYWw7Citkcm9wIGZ1bmN0aW9uIGludmFsaWRh dGVfcGxhbmNhY2hlX2Z1bmMsIHN0YWJsZV9wcnVuaW5nX3ZhbDsKK3Jlc2V0IHBsYW5fY2FjaGVf bW9kZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCmluZGV4IGQ5M2Mw YzAzYmFiLi42OTI0MTVhOGQ5ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFy dGl0aW9uX3BydW5lLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1 bmUuc3FsCkBAIC0xNDQ3LDMgKzE0NDcsMTE5IEBAIHNlbGVjdCBtaW4oYSkgb3ZlciAocGFydGl0 aW9uIGJ5IGEgb3JkZXIgYnkgYSkgZnJvbSBwYXJ0X2FiYyB3aGVyZSBhID49IHN0YWJsZV9vCiAK IGRyb3AgdmlldyBwYXJ0X2FiY192aWV3OwogZHJvcCB0YWJsZSBwYXJ0X2FiYzsKKworLS0KKy0t IFZlcmlmeSB0aGF0IHBydW5pbmctYXdhcmUgbG9ja2luZyBza2lwcyBwcnVuZWQgcGFydGl0aW9u cworLS0gd2hlbiByZXVzaW5nIGEgZ2VuZXJpYyBjYWNoZWQgcGxhbi4KKy0tCitzZXQgcGxhbl9j YWNoZV9tb2RlIHRvIGZvcmNlX2dlbmVyaWNfcGxhbjsKKworY3JlYXRlIHRhYmxlIHBydW5lbG9j a19wIChhIGludCkgcGFydGl0aW9uIGJ5IGxpc3QgKGEpOworY3JlYXRlIHRhYmxlIHBydW5lbG9j a19wMSBwYXJ0aXRpb24gb2YgcHJ1bmVsb2NrX3AgZm9yIHZhbHVlcyBpbiAoMSk7CitjcmVhdGUg dGFibGUgcHJ1bmVsb2NrX3AyIHBhcnRpdGlvbiBvZiBwcnVuZWxvY2tfcCBmb3IgdmFsdWVzIGlu ICgyKTsKK2NyZWF0ZSB0YWJsZSBwcnVuZWxvY2tfcDMgcGFydGl0aW9uIG9mIHBydW5lbG9ja19w IGZvciB2YWx1ZXMgaW4gKDMpOworCitwcmVwYXJlIHBydW5lbG9ja19xIChpbnQpIGFzIHNlbGVj dCAqIGZyb20gcHJ1bmVsb2NrX3Agd2hlcmUgYSA9ICQxOworCistLSBGb3JjZSBnZW5lcmljIHBs YW4gY3JlYXRpb24KK2V4cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSBwcnVuZWxvY2tfcSgxKTsK KworLS0gRXhlY3V0ZSBhbmQgY2hlY2sgd2hpY2ggY2hpbGQgcGFydGl0aW9ucyBhcmUgbG9ja2Vk CitiZWdpbjsKK2V4ZWN1dGUgcHJ1bmVsb2NrX3EoMSk7CisKK3NlbGVjdCBjLnJlbG5hbWUKKyAg ZnJvbSBwZ19sb2NrcyBsCisgIGpvaW4gcGdfY2xhc3MgYyBvbiBjLm9pZCA9IGwucmVsYXRpb24K KyB3aGVyZSBsLnBpZCA9IHBnX2JhY2tlbmRfcGlkKCkKKyAgIGFuZCBjLnJlbG5hbWUgbGlrZSAn cHJ1bmVsb2NrX3BfJworIG9yZGVyIGJ5IGMucmVsbmFtZTsKK2NvbW1pdDsKKworZGVhbGxvY2F0 ZSBwcnVuZWxvY2tfcTsKKworLS0gVHVybiBwcnVuaW5nIG9mZgorc2V0IGVuYWJsZV9wYXJ0aXRp b25fcHJ1bmluZyB0byBvZmY7CisKK3ByZXBhcmUgcHJ1bmVsb2NrX3EgKGludCkgYXMgc2VsZWN0 ICogZnJvbSBwcnVuZWxvY2tfcCB3aGVyZSBhID0gJDE7CisKKy0tIEZvcmNlIGdlbmVyaWMgcGxh biBjcmVhdGlvbgorZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHBydW5lbG9ja19xKDEpOwor CistLSBFeGVjdXRlIGFuZCBjaGVjayB3aGljaCBjaGlsZCBwYXJ0aXRpb25zIGFyZSBsb2NrZWQK K2JlZ2luOworZXhlY3V0ZSBwcnVuZWxvY2tfcSgxKTsKKworc2VsZWN0IGMucmVsbmFtZQorICBm cm9tIHBnX2xvY2tzIGwKKyAgam9pbiBwZ19jbGFzcyBjIG9uIGMub2lkID0gbC5yZWxhdGlvbgor IHdoZXJlIGwucGlkID0gcGdfYmFja2VuZF9waWQoKQorICAgYW5kIGMucmVsbmFtZSBsaWtlICdw cnVuZWxvY2tfcF8nCisgb3JkZXIgYnkgYy5yZWxuYW1lOworY29tbWl0OworCitkZWFsbG9jYXRl IHBydW5lbG9ja19xOworcmVzZXQgZW5hYmxlX3BhcnRpdGlvbl9wcnVuaW5nOworCistLQorLS0g VmVyaWZ5IGZpcnN0UmVzdWx0UmVscyBoYW5kbGluZyB3aXRoIG11bHRpcGxlIE1vZGlmeVRhYmxl IG5vZGVzCistLSAod3JpdGFibGUgQ1RFcykgdGFyZ2V0aW5nIGEgcGFydGl0aW9uZWQgdGFibGUu ICBXaGVuIGEgcHJ1bmluZworLS0gcGFyYW1ldGVyIG1hdGNoZXMgbm8gcGFydGl0aW9uLCBhbGwg cmVzdWx0IHJlbGF0aW9ucyBhcmUgcHJ1bmVkCistLSBhbmQgdGhlIGV4ZWN1dG9yIG11c3Qgc3Rp bGwgZmluZCBhIHVzYWJsZSBmaXJzdCByZXN1bHQgcmVsYXRpb24KKy0tIGZvciBlYWNoIE1vZGlm eVRhYmxlIG5vZGUuCistLQorcHJlcGFyZSBwcnVuZWxvY2tfbXRfcSAoaW50LCBpbnQpIGFzCisg IHdpdGggdXBkMSBhcyAodXBkYXRlIHBydW5lbG9ja19wIHNldCBhID0gYSksCisgICAgICAgdXBk MiBhcyAodXBkYXRlIHBydW5lbG9ja19wIHNldCBhID0gYSB3aGVyZSBhID0gJDIpCisgIHVwZGF0 ZSBwcnVuZWxvY2tfcCBzZXQgYSA9IGEgd2hlcmUgYSA9ICQxOworCistLSBGb3JjZSBnZW5lcmlj IHBsYW4gY3JlYXRpb24KK2V4cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSBwcnVuZWxvY2tfbXRf cSgxLCAyKTsKKworLS0gQWxsIHBhcnRpdGlvbnMgcHJ1bmVkOiB2YWx1ZSA0IG1hdGNoZXMgbm8g cGFydGl0aW9uLCBzbyBlYWNoCistLSBNb2RpZnlUYWJsZSBtdXN0IHN0aWxsIGluaXRpYWxpemUg Y29ycmVjdGx5IHdpdGggbm8gbWF0Y2hpbmcKKy0tIHJlc3VsdCByZWxhdGlvbnMuCitleHBsYWlu IChjb3N0cyBvZmYpIGV4ZWN1dGUgcHJ1bmVsb2NrX210X3EoNCwgNSk7CisKK2RlYWxsb2NhdGUg cHJ1bmVsb2NrX210X3E7Citkcm9wIHRhYmxlIHBydW5lbG9ja19wOworCistLQorLS0gVmVyaWZ5 IHRoYXQgcHJ1bmluZy1hd2FyZSBsb2NraW5nIGZhbGxzIGJhY2sgdG8gbG9ja2luZyBhbGwKKy0t IHBhcnRpdGlvbnMgZm9yIG11bHRpLXN0YXRlbWVudCBDYWNoZWRQbGFucy4gIFJ1bGUgcmV3cml0 aW5nIGNhbgorLS0gZXhwYW5kIGEgc2luZ2xlIHN0YXRlbWVudCBpbnRvIG11bHRpcGxlIFBsYW5u ZWRTdG10cywgYW5kIGxhdGVyCistLSBzdGF0ZW1lbnRzIG11c3Qgbm90IGhhdmUgdGhlaXIgcHJ1 bmluZyBldmFsdWF0ZWQgYmVmb3JlIGVhcmxpZXIKKy0tIG9uZXMgaGF2ZSBleGVjdXRlZCwgc2lu Y2UgQ0NJIGJldHdlZW4gc3RhdGVtZW50cyBjYW4gY2hhbmdlIHdoYXQKKy0tIHBydW5pbmcgZXhw cmVzc2lvbnMgc2VlLgorLS0KK2NyZWF0ZSB0YWJsZSBwcnVuZV9jb25maWcgKHZhbCBpbnQpOwor aW5zZXJ0IGludG8gcHJ1bmVfY29uZmlnIHZhbHVlcyAoMSk7CisKK2NyZWF0ZSB0YWJsZSBtdWx0 aXN0bXRfcHQgKGEgaW50LCBiIGludCkgcGFydGl0aW9uIGJ5IGxpc3QgKGEpOworY3JlYXRlIHRh YmxlIG11bHRpc3RtdF9wdF8xIHBhcnRpdGlvbiBvZiBtdWx0aXN0bXRfcHQgZm9yIHZhbHVlcyBp biAoMSk7CitjcmVhdGUgdGFibGUgbXVsdGlzdG10X3B0XzIgcGFydGl0aW9uIG9mIG11bHRpc3Rt dF9wdCBmb3IgdmFsdWVzIGluICgyKTsKK2luc2VydCBpbnRvIG11bHRpc3RtdF9wdCB2YWx1ZXMg KDEsIDApLCAoMiwgMCk7CisKK2NyZWF0ZSBmdW5jdGlvbiBnZXRfcHJ1bmVfdmFsKCkgcmV0dXJu cyBpbnQgYXMgJCQKKyAgc2VsZWN0IHZhbCBmcm9tIHBydW5lX2NvbmZpZzsKKyQkIGxhbmd1YWdl IHNxbCBzdGFibGU7CisKK2NyZWF0ZSBydWxlIGNvbmZpZ191cGRfcnVsZSBhcyBvbiB1cGRhdGUg dG8gbXVsdGlzdG10X3B0CisgIGRvIGFsc28gdXBkYXRlIHBydW5lX2NvbmZpZyBzZXQgdmFsID0g MjsKKworc2V0IHBsYW5fY2FjaGVfbW9kZSB0byBmb3JjZV9nZW5lcmljX3BsYW47CitwcmVwYXJl IG11bHRpX3EgYXMgdXBkYXRlIG11bHRpc3RtdF9wdCBzZXQgYiA9IGIgKyAxIHdoZXJlIGEgPSBn ZXRfcHJ1bmVfdmFsKCk7CistLSBmaXJzdCBleGVjdXRlIGNyZWF0ZXMgdGhlIGdlbmVyaWMgcGxh bgorZXhlY3V0ZSBtdWx0aV9xOworLS0gcmVzZXQgZm9yIHRoZSByZWFsIHRlc3QKK3VwZGF0ZSBw cnVuZV9jb25maWcgc2V0IHZhbCA9IDE7Cit1cGRhdGUgbXVsdGlzdG10X3B0IHNldCBiID0gMDsK Ky0tIHNlY29uZCBleGVjdXRlIHJldXNlcyB0aGUgcGxhbjsgcHJ1bmluZy1hd2FyZSBsb2NraW5n IGtpY2tzIGluCitleGVjdXRlIG11bHRpX3E7CitzZWxlY3QgKiBmcm9tIG11bHRpc3RtdF9wdCBv cmRlciBieSBhOworCitkZWFsbG9jYXRlIG11bHRpX3E7Citkcm9wIHJ1bGUgY29uZmlnX3VwZF9y dWxlIG9uIG11bHRpc3RtdF9wdDsKK2Ryb3AgZnVuY3Rpb24gZ2V0X3BydW5lX3ZhbDsKK2Ryb3Ag dGFibGUgbXVsdGlzdG10X3B0LCBwcnVuZV9jb25maWc7CityZXNldCBwbGFuX2NhY2hlX21vZGU7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wbGFuY2FjaGUuc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcGxhbmNhY2hlLnNxbAppbmRleCA0YjJmMTFkY2M2NC4uNmE4Yjg3ODdk ZTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BsYW5jYWNoZS5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvcGxhbmNhY2hlLnNxbApAQCAtMjIzLDMgKzIyMyw1NSBAQCBz ZWxlY3QgbmFtZSwgZ2VuZXJpY19wbGFucywgY3VzdG9tX3BsYW5zIGZyb20gcGdfcHJlcGFyZWRf c3RhdGVtZW50cwogICB3aGVyZSAgbmFtZSA9ICd0ZXN0X21vZGVfcHAnOwogCiBkcm9wIHRhYmxl IHRlc3RfbW9kZTsKKworLS0gVGhpcyBleGVyY2lzZXMgdGhlIENhY2hlZFBsYW5QcmVwQ2xlYW51 cCgpIHBhdGgsIHdoaWNoIG11c3QgZnJlZQorLS0gdGhlIEVTdGF0ZSBjcmVhdGVkIGJ5IEV4ZWN1 dG9yUHJlcCgpIHdoZW4gdGhlIHBsYW4gaXMgaW52YWxpZGF0ZWQKKy0tIGJlZm9yZSBleGVjdXRp b24gYmVnaW5zLiAgVGhlIHBydW5pbmcgZXhwcmVzc2lvbiB1c2VzIGEgc3RhYmxlIFNRTAorLS0g ZnVuY3Rpb24gdGhhdCBjYWxscyBhIHZvbGF0aWxlIHBscGdzcWwgZnVuY3Rpb24uICBUaGF0IGZ1 bmN0aW9uCistLSBwZXJmb3JtcyBEREwgb24gYSBwYXJ0aXRpb24gd2hlbiBhIHNlcGFyYXRlICJz aWduYWwiIHRhYmxlIHNheXMgdG8KKy0tIGRvIHNvLiAgVGhlIHNlY29uZCBFWEVDVVRFIHNob3Vs ZCByZXBsYW4gY2xlYW5seSBhZnRlciB0aGUgRERMLgorc2V0IHBsYW5fY2FjaGVfbW9kZSB0byBm b3JjZV9nZW5lcmljX3BsYW47CitjcmVhdGUgdGFibGUgaW52YWxfZHVyaW5nX3BydW5pbmdfcCAo YSBpbnQpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJpbmdf cHJ1bmluZ19wMSBwYXJ0aXRpb24gb2YgaW52YWxfZHVyaW5nX3BydW5pbmdfcCBmb3IgdmFsdWVz IGluICgxKTsKK2NyZWF0ZSB0YWJsZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19wMiBwYXJ0aXRpb24g b2YgaW52YWxfZHVyaW5nX3BydW5pbmdfcCBmb3IgdmFsdWVzIGluICgyKTsKK2luc2VydCBpbnRv IGludmFsX2R1cmluZ19wcnVuaW5nX3AgdmFsdWVzICgxKSwgKDIpOworCitjcmVhdGUgdGFibGUg aW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIChjcmVhdGVfaWR4IGJvb2wgbm90IG51bGwpOwor aW5zZXJ0IGludG8gaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIHZhbHVlcyAoZmFsc2UpOwor Y3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gaW52YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYygpIHJl dHVybnMgaW50CithcyAkJAorZGVjbGFyZQorCWNyZWF0ZV9pbmRleCBib29sOworYmVnaW4KKwkt LSBQZXJmb3JtIERETCBvbiBhIHBhcnRpdGlvbiBpZiBhc2tlZCB0bworCXNlbGVjdCBjcmVhdGVf aWR4IGludG8gY3JlYXRlX2luZGV4IGZyb20gaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIGZv ciB1cGRhdGU7CisJaWYgY3JlYXRlX2luZGV4ID0gdHJ1ZSB0aGVuCisJCXJhaXNlIG5vdGljZSAn Y3JlYXRpbmcgaW5kZXggb24gcGFydGl0aW9uIGludmFsX2R1cmluZ19wcnVuaW5nX3AxJzsKKwkJ Y3JlYXRlIGluZGV4IG9uIGludmFsX2R1cmluZ19wcnVuaW5nX3AxIChhKTsKKwkJdXBkYXRlIGlu dmFsX2R1cmluZ19wcnVuaW5nX3NpZ25hbCBzZXQgY3JlYXRlX2lkeCA9IGZhbHNlOworCWVuZCBp ZjsKKwktLSB2YWx1ZSB0aGF0IHBydW5pbmcgd2lsbCBtYXRjaCBhZ2FpbnN0IHBhcnRpdGlvbiBi b3VuZHMKKwlyZXR1cm4gMTsKK2VuZDsKKyQkIGxhbmd1YWdlIHBscGdzcWwgdm9sYXRpbGU7CisK K2NyZWF0ZSBvciByZXBsYWNlIGZ1bmN0aW9uIHN0YWJsZV9wcnVuaW5nX3ZhbCgpIHJldHVybnMg aW50IGFzICQkCisJc2VsZWN0IGludmFsaWRhdGVfcGxhbmNhY2hlX2Z1bmMoKTsKKyQkIGxhbmd1 YWdlIHNxbCBzdGFibGU7CisKK3ByZXBhcmUgaW52YWxfZHVyaW5nX3BydW5pbmdfcSBhcyBzZWxl Y3QgKiBmcm9tIGludmFsX2R1cmluZ19wcnVuaW5nX3Agd2hlcmUgYSA9IHN0YWJsZV9wcnVuaW5n X3ZhbCgpOworCistLSBCdWlsZCBhIGdlbmVyaWMgcGxhbiBhbmQgcnVuIHBydW5pbmcgb25jZSwg YnV0IGRvbid0IHNldCB0aGUgc2lnbmFsCistLSBmb3IgaW52YWxpZGF0ZV9wbGFuY2FjaGVfZnVu YygpIHRvIHBlcmZvcm0gdGhlIERETC4KK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikgZXhl Y3V0ZSBpbnZhbF9kdXJpbmdfcHJ1bmluZ19xOworCistLSBSZXVzZSB0aGUgZ2VuZXJpYyBwbGFu LiAgTWFrZSBpbnZhbGlkYXRlX3BsYW5jYWNoZV9mdW5jKCkgcGVyZm9ybSBEREwKKy0tIGR1cmlu ZyB0aGlzIGV4ZWN1dGlvbiwgd2hpY2ggc2hvdWxkIGZvcmNlIHJlcGxhbm5pbmcgd2l0aG91dCBl cnJvcnMuCit1cGRhdGUgaW52YWxfZHVyaW5nX3BydW5pbmdfc2lnbmFsIHNldCBjcmVhdGVfaWR4 ID0gdHJ1ZTsKK2V4cGxhaW4gKHZlcmJvc2UsIGNvc3RzIG9mZikgZXhlY3V0ZSBpbnZhbF9kdXJp bmdfcHJ1bmluZ19xOworCitkZWFsbG9jYXRlIGludmFsX2R1cmluZ19wcnVuaW5nX3E7Citkcm9w IHRhYmxlIGludmFsX2R1cmluZ19wcnVuaW5nX3AsIGludmFsX2R1cmluZ19wcnVuaW5nX3NpZ25h bDsKK2Ryb3AgZnVuY3Rpb24gaW52YWxpZGF0ZV9wbGFuY2FjaGVfZnVuYywgc3RhYmxlX3BydW5p bmdfdmFsOworCityZXNldCBwbGFuX2NhY2hlX21vZGU7Ci0tIAoyLjQ3LjMKCg== --0000000000007aced7064ea1536d Content-Type: application/octet-stream; name="v11-0003-Introduce-ExecutorPrep-and-refactor-executor-sta.patch" Content-Disposition: attachment; filename="v11-0003-Introduce-ExecutorPrep-and-refactor-executor-sta.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnkahul11 RnJvbSAxYjlmNzg2MWQ3MTYyZjViMjBmNjllYTlkYjVkZGExM2Y2NGMyMDJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMjYgTWFyIDIwMjYgMTY6MDg6NDYgKzA5MDAKU3ViamVjdDogW1BBVENIIHYx MSAzLzRdIEludHJvZHVjZSBFeGVjdXRvclByZXAgYW5kIHJlZmFjdG9yIGV4ZWN1dG9yIHN0YXJ0 dXAKCk1vdmUgcGVybWlzc2lvbiBjaGVja3MsIHJhbmdlIHRhYmxlIGluaXRpYWxpemF0aW9uLCBh bmQgaW5pdGlhbApwYXJ0aXRpb24gcHJ1bmluZyBvdXQgb2YgSW5pdFBsYW4oKSBpbnRvIGEgbmV3 IEV4ZWN1dG9yUHJlcCgpCmhlbHBlci4KCkV4ZWN1dG9yU3RhcnQoKSBpbnZva2VzIEV4ZWN1dG9y UHJlcCgpIHdoZW4gUXVlcnlEZXNjLT5lc3RhdGUgaXMKTlVMTCwga2VlcGluZyBjdXJyZW50IGJl aGF2aW9yIHVuY2hhbmdlZC4gIElmIFF1ZXJ5RGVzYy0+ZXN0YXRlIGlzCmFscmVhZHkgc2V0LCBF eGVjdXRvclN0YXJ0KCkgcmV1c2VzIGl0LgoKVGhpcyBpcyBwcmVwYXJhdG9yeSByZWZhY3Rvcmlu ZyBvbmx5LiAgTm8gY2FsbGVyIG91dHNpZGUgdGhlCmV4ZWN1dG9yIHN1cHBsaWVzIGEgcHJlYnVp bHQgRVN0YXRlIGluIHRoaXMgY29tbWl0LgoKSW4gYXNzZXJ0IGJ1aWxkcywgdmVyaWZ5IHRoYXQg dGhlIGV4cGVjdGVkIHJlbGF0aW9uIGxvY2tzIGFyZSBoZWxkCndoZW4gZW50ZXJpbmcgRXhlY3V0 b3JTdGFydCgpLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAgICAgfCAgMTAgKyst CiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIHwgMTUyICsrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oIHwgICAyICst CiAzIGZpbGVzIGNoYW5nZWQsIDEzMiBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUgYi9zcmMvYmFja2VuZC9leGVj dXRvci9SRUFETUUKaW5kZXggNTRmNDc4MmYzMWIuLjg5MGJjM2Q5MzMzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVB RE1FCkBAIC0yOTEsMTEgKzI5MSwxNyBAQCBRdWVyeSBQcm9jZXNzaW5nIENvbnRyb2wgRmxvdwog CiBUaGlzIGlzIGEgc2tldGNoIG9mIGNvbnRyb2wgZmxvdyBmb3IgZnVsbCBxdWVyeSBwcm9jZXNz aW5nOgogCisgICAgRXhlY3V0b3JQcmVwCisJCU1heSBiZSBydW4gYmVmb3JlIEV4ZWN1dG9yU3Rh cnQsIG9yIGltcGxpY2l0bHkgZnJvbSBFeGVjdXRvclN0YXJ0CisJCWlmIG5vdCBkb25lIGVhcmxp ZXIuICBDcmVhdGVzIHRoZSBFU3RhdGUgaW4gUXVlcnlEZXNjLCBwZXJmb3JtcworCQlyYW5nZSB0 YWJsZSBpbml0aWFsaXphdGlvbiwgcGVybWlzc2lvbiBjaGVja3MsIGFuZCBpbml0aWFsCisJCXBh cnRpdGlvbiBwcnVuaW5nLgorCiAJQ3JlYXRlUXVlcnlEZXNjCiAKIAlFeGVjdXRvclN0YXJ0Ci0J CUNyZWF0ZUV4ZWN1dG9yU3RhdGUKLQkJCWNyZWF0ZXMgcGVyLXF1ZXJ5IGNvbnRleHQKKwkJRXhl Y3V0b3JQcmVwIChpZiBRdWVyeURlc2MuZXN0YXRlIGlzIE5VTEwpCisJCQljcmVhdGVzIEVTdGF0 ZSBhbmQgcGVyLXF1ZXJ5IGNvbnRleHQKIAkJc3dpdGNoIHRvIHBlci1xdWVyeSBjb250ZXh0IHRv IHJ1biBFeGVjSW5pdE5vZGUKIAkJQWZ0ZXJUcmlnZ2VyQmVnaW5RdWVyeQogCQlFeGVjSW5pdE5v ZGUgLS0tIHJlY3Vyc2l2ZWx5IHNjYW5zIHBsYW4gdHJlZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMK aW5kZXggNDVlMDBjNmFmODUuLjczNWM4MGUwOGE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMK QEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNp bmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCisj aW5jbHVkZSAic3RvcmFnZS9sbWdyLmgiCiAjaW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCiAjaW5j bHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9zdGF0dXMuaCIKQEAg LTc2LDYgKzc3LDcgQEAgRXhlY3V0b3JFbmRfaG9va190eXBlIEV4ZWN1dG9yRW5kX2hvb2sgPSBO VUxMOwogRXhlY3V0b3JDaGVja1Blcm1zX2hvb2tfdHlwZSBFeGVjdXRvckNoZWNrUGVybXNfaG9v ayA9IE5VTEw7CiAKIC8qIGRlY2xzIGZvciBsb2NhbCByb3V0aW5lcyBvbmx5IHVzZWQgd2l0aGlu IHRoaXMgbW9kdWxlICovCitzdGF0aWMgdm9pZCBFeGVjdXRvclByZXAoUXVlcnlEZXNjICpxdWVy eURlc2MsIFJlc291cmNlT3duZXIgb3duZXIsIGludCBlZmxhZ3MpOwogc3RhdGljIHZvaWQgSW5p dFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogc3RhdGljIHZvaWQgQ2hl Y2tWYWxpZFJvd01hcmtSZWwoUmVsYXRpb24gcmVsLCBSb3dNYXJrVHlwZSBtYXJrVHlwZSk7CiBz dGF0aWMgdm9pZCBFeGVjUG9zdHByb2Nlc3NQbGFuKEVTdGF0ZSAqZXN0YXRlKTsKQEAgLTE0Nyw3 ICsxNDksNiBAQCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBp bnQgZWZsYWdzKQogCiAJLyogc2FuaXR5IGNoZWNrczogcXVlcnlEZXNjIG11c3Qgbm90IGJlIHN0 YXJ0ZWQgYWxyZWFkeSAqLwogCUFzc2VydChxdWVyeURlc2MgIT0gTlVMTCk7Ci0JQXNzZXJ0KHF1 ZXJ5RGVzYy0+ZXN0YXRlID09IE5VTEwpOwogCiAJLyogY2FsbGVyIG11c3QgZW5zdXJlIHRoZSBx dWVyeSdzIHNuYXBzaG90IGlzIGFjdGl2ZSAqLwogCUFzc2VydChHZXRBY3RpdmVTbmFwc2hvdCgp ID09IHF1ZXJ5RGVzYy0+c25hcHNob3QpOwpAQCAtMTczLDkgKzE3NCw2NyBAQCBzdGFuZGFyZF9F eGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCiAJLyoKIAkg KiBCdWlsZCBFU3RhdGUsIHN3aXRjaCBpbnRvIHBlci1xdWVyeSBtZW1vcnkgY29udGV4dCBmb3Ig c3RhcnR1cC4KLQkgKi8KLQllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7Ci0JcXVlcnlE ZXNjLT5lc3RhdGUgPSBlc3RhdGU7CisJICoKKwkgKiBJZiBFeGVjdXRvclByZXAoKSByYW4gZWFy bGllciAoZS5nLiwgdG8gZG8gaW5pdGlhbCBwcnVuaW5nIGR1cmluZyBwbGFuCisJICogdmFsaWRp dHkgY2hlY2tpbmcpLCByZXVzZSBpdHMgRVN0YXRlIHRvIGF2b2lkIHJlZG9pbmcgcmFuZ2UgdGFi bGUgc2V0dXAKKwkgKiBhbmQgcHJ1bmluZy4gT3RoZXJ3aXNlLCBjcmVhdGUgYSBmcmVzaCBFU3Rh dGUgYXMgdXN1YWwuCisJICoKKwkgKiBJbiBhc3NlcnQgYnVpbGRzLCB2ZXJpZnkgdGhhdCB0aGUg ZXhwZWN0ZWQgbG9ja3MgYXJlIGhlbGQuICBXaGVuIG5vCisJICogcHJlcCBFU3RhdGUgd2FzIHBy b3ZpZGVkLCBBY3F1aXJlRXhlY3V0b3JMb2NrcygpIHNob3VsZCBoYXZlIGxvY2tlZAorCSAqIGV2 ZXJ5IHJlbGF0aW9uIGluIHRoZSBwbGFuLiAgV2hlbiBvbmUgd2FzIHByb3ZpZGVkLCBwcnVuaW5n LWF3YXJlCisJICogbG9ja2luZyBzaG91bGQgaGF2ZSBsb2NrZWQgYXQgbGVhc3QgdGhlIHVucHJ1 bmVkIHJlbGF0aW9ucy4gIEJvdGgKKwkgKiBjaGVja3MgYXJlIHNraXBwZWQgaW4gcGFyYWxsZWwg d29ya2Vycywgd2hpY2ggYWNxdWlyZSByZWxhdGlvbiBsb2NrcworCSAqIGxhemlseSBpbiBFeGVj R2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkuCisJICovCisJaWYgKHF1ZXJ5RGVzYy0+ZXN0YXRlID09 IE5VTEwpCisJeworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkJaWYgKCFJc1BhcmFsbGVs V29ya2VyKCkpCisJCXsKKwkJCUxpc3RDZWxsICAgKmxjOworCisJCQlmb3JlYWNoKGxjLCBxdWVy eURlc2MtPnBsYW5uZWRzdG10LT5ydGFibGUpCisJCQl7CisJCQkJUmFuZ2VUYmxFbnRyeSAqcnRl ID0gbGZpcnN0X25vZGUoUmFuZ2VUYmxFbnRyeSwgbGMpOworCisJCQkJaWYgKHJ0ZS0+cnRla2lu ZCA9PSBSVEVfUkVMQVRJT04gfHwKKwkJCQkJKHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkg JiYgcnRlLT5yZWxpZCAhPSBJbnZhbGlkT2lkKSkKKwkJCQkJQXNzZXJ0KENoZWNrUmVsYXRpb25P aWRMb2NrZWRCeU1lKHJ0ZS0+cmVsaWQsCisJCQkJCQkJCQkJCQkJICBydGUtPnJlbGxvY2ttb2Rl LAorCQkJCQkJCQkJCQkJCSAgdHJ1ZSkpOworCQkJfQorCQl9CisjZW5kaWYKKwkJRXhlY3V0b3JQ cmVwKHF1ZXJ5RGVzYywgQ3VycmVudFJlc291cmNlT3duZXIsIGVmbGFncyk7CisJfQorI2lmZGVm IFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwllbHNlCisJeworCQkvKgorCQkgKiBBIHByZXAgRVN0YXRl IHdhcyBwcm92aWRlZCwgbWVhbmluZyBwcnVuaW5nLWF3YXJlIGxvY2tpbmcgc2hvdWxkCisJCSAq IGhhdmUgbG9ja2VkIGF0IGxlYXN0IHRoZSB1bnBydW5lZCByZWxhdGlvbnMuCisJCSAqLworCQlp ZiAoIUlzUGFyYWxsZWxXb3JrZXIoKSkKKwkJeworCQkJaW50CQkJcnRpbmRleCA9IC0xOworCisJ CQl3aGlsZSAoKHJ0aW5kZXggPSBibXNfbmV4dF9tZW1iZXIocXVlcnlEZXNjLT5lc3RhdGUtPmVz X3VucHJ1bmVkX3JlbGlkcywKKwkJCQkJCQkJCQkJICBydGluZGV4KSkgPj0gMCkKKwkJCXsKKwkJ CQlSYW5nZVRibEVudHJ5ICpydGUgPSBleGVjX3J0X2ZldGNoKHJ0aW5kZXgsIHF1ZXJ5RGVzYy0+ ZXN0YXRlKTsKKworCQkJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OIHx8CisJ CQkJCSAgIChydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmCisJCQkJCQlydGUtPnJlbGlk ICE9IEludmFsaWRPaWQpKTsKKwkJCQlBc3NlcnQoQ2hlY2tSZWxhdGlvbk9pZExvY2tlZEJ5TWUo cnRlLT5yZWxpZCwKKwkJCQkJCQkJCQkJCSAgcnRlLT5yZWxsb2NrbW9kZSwgdHJ1ZSkpOworCQkJ fQorCQl9CisJfQorI2VuZGlmCisKKwllc3RhdGUgPSBxdWVyeURlc2MtPmVzdGF0ZTsKKwlBc3Nl cnQoZXN0YXRlKTsKIAogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRl LT5lc19xdWVyeV9jeHQpOwogCkBAIC0yNjUsNiArMzI0LDY0IEBAIHN0YW5kYXJkX0V4ZWN1dG9y U3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGNvbnRleHQpOwogfQogCisvKgorICogRXhlY3V0b3JQcmVwCisgKgorICogQnVp bGQgdGhlIGluaXRpYWwgZXhlY3V0b3Igc3RhdGUgZm9yIHF1ZXJ5RGVzYyBiZWZvcmUgRXhlY3V0 b3JTdGFydCgpLgorICoKKyAqIFRoaXMgY3JlYXRlcyB0aGUgRVN0YXRlIGFuZCBwZXJmb3JtcyB0 aGUgc3Vic2V0IG9mIGV4ZWN1dG9yIHN0YXJ0dXAgdGhhdAorICogZG9lcyBub3QgcmVxdWlyZSBw bGFuLXRyZWUgaW5pdGlhbGl6YXRpb24sIGFsbG93aW5nIHRoYXQgd29yayB0byBiZSByZXVzZWQK KyAqIGJ5IGNhbGxlcnMgdGhhdCBuZWVkIGV4ZWN1dG9yIHN0YXRlIGJlZm9yZSBFeGVjdXRvclN0 YXJ0KCk6CisgKgorICogLSBpbml0aWFsaXplIHRoZSByYW5nZSB0YWJsZQorICogLSBwZXJmb3Jt IHBlcm1pc3Npb24gY2hlY2tzCisgKiAtIHBlcmZvcm0gaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmlu ZworICoKKyAqIE9uIHN1Y2Nlc3MsIHF1ZXJ5RGVzYy0+ZXN0YXRlIGlzIHNldCBhbmQgY2FuIGxh dGVyIGJlIHJldXNlZCBieQorICogRXhlY3V0b3JTdGFydCgpIGluc3RlYWQgb2YgcmVidWlsZGlu ZyB0aGUgc2FtZSBzdGF0ZS4KKyAqCisgKiBDYWxsZXIgbXVzdCBlbnN1cmUgdGhhdCBxdWVyeURl c2MtPnNuYXBzaG90IGlzIGFjdGl2ZS4KKyAqLworc3RhdGljIHZvaWQKK0V4ZWN1dG9yUHJlcChR dWVyeURlc2MgKnF1ZXJ5RGVzYywgUmVzb3VyY2VPd25lciBvd25lciwgaW50IGVmbGFncykKK3sK KwlSZXNvdXJjZU93bmVyIG9sZG93bmVyOworCUVTdGF0ZQkgICAqZXN0YXRlOworCVBsYW5uZWRT dG10ICpwc3RtdDsKKworCUFzc2VydChxdWVyeURlc2MgIT0gTlVMTCk7CisKKwlpZiAocXVlcnlE ZXNjLT5vcGVyYXRpb24gPT0gQ01EX1VUSUxJVFkpCisJCXJldHVybjsKKworCUFzc2VydChBY3Rp dmVTbmFwc2hvdFNldCgpKTsKKwlBc3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBxdWVyeURl c2MtPnNuYXBzaG90KTsKKwlBc3NlcnQocXVlcnlEZXNjLT5lc3RhdGUgPT0gTlVMTCk7CisKKwlw c3RtdCA9IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQ7CisKKwllc3RhdGUgPSBDcmVhdGVFeGVjdXRv clN0YXRlKCk7CisJcXVlcnlEZXNjLT5lc3RhdGUgPSBlc3RhdGU7CisKKwllc3RhdGUtPmVzX3Bs YW5uZWRzdG10ID0gcHN0bXQ7CisJZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zID0gcHN0bXQt PnBhcnRQcnVuZUluZm9zOworCWVzdGF0ZS0+ZXNfcGFyYW1fbGlzdF9pbmZvID0gcXVlcnlEZXNj LT5wYXJhbXM7CisJZXN0YXRlLT5lc19xdWVyeUVudiA9IHF1ZXJ5RGVzYy0+cXVlcnlFbnY7CisJ ZXN0YXRlLT5lc190b3BfZWZsYWdzID0gZWZsYWdzOworCisJRXhlY0NoZWNrUGVybWlzc2lvbnMo cHN0bXQtPnJ0YWJsZSwgcHN0bXQtPnBlcm1JbmZvcywgdHJ1ZSk7CisKKwlFeGVjSW5pdFJhbmdl VGFibGUoZXN0YXRlLCBwc3RtdC0+cnRhYmxlLCBwc3RtdC0+cGVybUluZm9zLAorCQkJCQkgICBi bXNfY29weShwc3RtdC0+dW5wcnVuYWJsZVJlbGlkcykpOworCisJb2xkb3duZXIgPSBDdXJyZW50 UmVzb3VyY2VPd25lcjsKKwlDdXJyZW50UmVzb3VyY2VPd25lciA9IG93bmVyOworCisJRXhlY0Rv SW5pdGlhbFBydW5pbmcoZXN0YXRlKTsKKworCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gb2xkb3du ZXI7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjdXRvclJ1bgogICoKQEAgLTg0MCwzNyArOTU3 LDE0IEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCUNtZFR5 cGUJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3BlcmF0aW9uOwogCVBsYW5uZWRTdG10ICpwbGFu bmVkc3RtdCA9IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQ7CiAJUGxhbgkgICAqcGxhbiA9IHBsYW5u ZWRzdG10LT5wbGFuVHJlZTsKLQlMaXN0CSAgICpyYW5nZVRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0 YWJsZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0YXRlOwogCVBsYW5TdGF0 ZSAgKnBsYW5zdGF0ZTsKIAlUdXBsZURlc2MJdHVwVHlwZTsKIAlMaXN0Q2VsbCAgICpsOwogCWlu dAkJCWk7CiAKLQkvKgotCSAqIERvIHBlcm1pc3Npb25zIGNoZWNrcwotCSAqLwotCUV4ZWNDaGVj a1Blcm1pc3Npb25zKHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MsIHRydWUpOwot Ci0JLyoKLQkgKiBpbml0aWFsaXplIHRoZSBub2RlJ3MgZXhlY3V0aW9uIHN0YXRlCi0JICovCi0J RXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1J bmZvcywKLQkJCQkJICAgYm1zX2NvcHkocGxhbm5lZHN0bXQtPnVucHJ1bmFibGVSZWxpZHMpKTsK LQotCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBwbGFubmVkc3RtdDsKLQllc3RhdGUtPmVzX3Bh cnRfcHJ1bmVfaW5mb3MgPSBwbGFubmVkc3RtdC0+cGFydFBydW5lSW5mb3M7Ci0KLQkvKgotCSAq IFBlcmZvcm0gcnVudGltZSAiaW5pdGlhbCIgcHJ1bmluZyB0byBpZGVudGlmeSB3aGljaCBjaGls ZCBzdWJwbGFucywKLQkgKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBjaGlsZHJlbiBvZiBwbGFuIG5v ZGVzIHRoYXQgY29udGFpbgotCSAqIFBhcnRpdGlvblBydW5lSW5mbyBzdWNoIGFzIEFwcGVuZCwg d2lsbCBub3QgYmUgZXhlY3V0ZWQuIFRoZSByZXN1bHRzLAotCSAqIHdoaWNoIGFyZSBiaXRtYXBz ZXRzIG9mIGluZGV4ZXMgb2YgdGhlIGNoaWxkIHN1YnBsYW5zIHRoYXQgd2lsbCBiZQotCSAqIGV4 ZWN1dGVkLCBhcmUgc2F2ZWQgaW4gZXNfcGFydF9wcnVuZV9yZXN1bHRzLiAgVGhlc2UgcmVzdWx0 cyBjb3JyZXNwb25kCi0JICogdG8gZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gZW50cnksIGFuZCB0 aGUgZXNfcGFydF9wcnVuZV9yZXN1bHRzIGxpc3QgaXMKLQkgKiBwYXJhbGxlbCB0byBlc19wYXJ0 X3BydW5lX2luZm9zLgotCSAqLwotCUV4ZWNEb0luaXRpYWxQcnVuaW5nKGVzdGF0ZSk7CisJLyog RXhlY3V0b3JQcmVwKCkgbXVzdCBoYXZlIGJlZW4gZG9uZS4gKi8KKwlBc3NlcnQocXVlcnlEZXNj LT5lc3RhdGUpOwogCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkg ZnJvbSB0aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCmlu ZGV4IGQzYTU3MjQyODQ0Li4yNzY5Nzc2MGJiOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCkBA IC00Myw3ICs0Myw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCVF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52OyAvKiBxdWVyeSBlbnZpcm9ubWVudCBwYXNzZWQgaW4gKi8KIAlpbnQJCQlp bnN0cnVtZW50X29wdGlvbnM7IC8qIE9SIG9mIEluc3RydW1lbnRPcHRpb24gZmxhZ3MgKi8KIAot CS8qIFRoZXNlIGZpZWxkcyBhcmUgc2V0IGJ5IEV4ZWN1dG9yU3RhcnQgKi8KKwkvKiBUaGVzZSBm aWVsZHMgYXJlIHNldCBieSBFeGVjdXRvclN0YXJ0IG9yIEV4ZWN1dG9yUHJlcCAqLwogCVR1cGxl RGVzYwl0dXBEZXNjOwkJLyogZGVzY3JpcHRvciBmb3IgcmVzdWx0IHR1cGxlcyAqLwogCUVTdGF0 ZQkgICAqZXN0YXRlOwkJCS8qIGV4ZWN1dG9yJ3MgcXVlcnktd2lkZSBzdGF0ZSAqLwogCVBsYW5T dGF0ZSAgKnBsYW5zdGF0ZTsJCS8qIHRyZWUgb2YgcGVyLXBsYW4tbm9kZSBzdGF0ZSAqLwotLSAK Mi40Ny4zCgo= --0000000000007aced7064ea1536d Content-Type: application/octet-stream; name="v11-0001-Move-execution-lock-acquisition-out-of-GetCached.patch" Content-Disposition: attachment; filename="v11-0001-Move-execution-lock-acquisition-out-of-GetCached.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnkahul63 RnJvbSA4ZGM0NDMyMGM3ZDRiMjBmNTAyMDBkN2IyMWM5OGU0MDU4YjhkNmQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFNhdCwgNCBBcHIgMjAyNiAxODozODozNCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjEx IDEvNF0gTW92ZSBleGVjdXRpb24gbG9jayBhY3F1aXNpdGlvbiBvdXQgb2YKIEdldENhY2hlZFBs YW4oKQoKR2V0Q2FjaGVkUGxhbigpIHByZXZpb3VzbHkgYWNxdWlyZWQgZXhlY3V0aW9uIGxvY2tz IG9uIGFsbCBwbGFuCnJlbGF0aW9ucyBhcyBwYXJ0IG9mIGNhY2hlZCBwbGFuIHZhbGlkYXRpb24u ICBNb3ZlIHRoaXMKcmVzcG9uc2liaWxpdHkgdG8gY2FsbGVycywgbWFraW5nIEdldENhY2hlZFBs YW4oKSByZXR1cm4gYSB2YWxpZApwbGFuIHdpdGhvdXQgaG9sZGluZyBleGVjdXRpb24gbG9ja3Mu CgpBZGQgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBhcyB0aGUgY2FsbGVyLWZhY2luZyBmdW5jdGlv bjogaXQgbG9ja3MKYWxsIHJlbGF0aW9ucyBpbiB0aGUgcGxhbiwgY2hlY2tzIHRoYXQgdGhlIHBs YW4gaXMgc3RpbGwgdmFsaWQKYWZ0ZXJ3YXJkLCBhbmQgcmV0dXJucyBmYWxzZSBpZiBpdCB3YXMg aW52YWxpZGF0ZWQgc28gdGhlIGNhbGxlcgpjYW4gcmV0cnkgd2l0aCBhIGZyZXNoIHBsYW4uCgpG b3IgcG9ydGFsLWJhY2tlZCBjYWxsZXJzLCBhZGQgUG9ydGFsTG9ja0NhY2hlZFBsYW4oKSBpbiBw cXVlcnkuYwp3aGljaCB3cmFwcyB0aGUgbG9jay1jaGVjay1yZXRyeSBsb29wIGFuZCBoYW5kbGVz IHRoZSBjYXNlIHdoZXJlCnJlcGxhbm5pbmcgY2hhbmdlcyB0aGUgcG9ydGFsIHN0cmF0ZWd5LiAg U3RvcmUgdGhlIENhY2hlZFBsYW5Tb3VyY2UKcG9pbnRlciBpbiBQb3J0YWxEYXRhIHNvIHJldHJ5 IGNhbiBjYWxsIEdldENhY2hlZFBsYW4oKSB3aXRob3V0CnRoZSBjYWxsZXIgdGhyZWFkaW5nIGl0 IHRocm91Z2guCgpBZGp1c3QgYWxsIG5vbi1wb3J0YWwgR2V0Q2FjaGVkUGxhbigpIGNhbGxlcnMg KFNQSSwgRVhQTEFJTgpFWEVDVVRFLCBTUUwgZnVuY3Rpb25zKSB0byBjYWxsIEFjcXVpcmVFeGVj dXRvckxvY2tzKCkgZXhwbGljaXRseQphZnRlciBmZXRjaGluZyB0aGUgcGxhbi4KCk5vIGJlaGF2 aW9yYWwgY2hhbmdlLiAgVGhpcyBzZXBhcmF0ZXMgcGxhbiByZXRyaWV2YWwgZnJvbSBleGVjdXRp b24Kc2V0dXAsIGFsbG93aW5nIGEgbGF0ZXIgY29tbWl0IHRvIHN1YnN0aXR1dGUgcHJ1bmluZy1h d2FyZSBsb2NraW5nCmZvciBlbGlnaWJsZSBwbGFucy4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5k cy9wb3J0YWxjbWRzLmMgICB8ICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAg ICAgIHwgMTQgKysrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICB8IDE0 ICsrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgICAgICAgICAgfCAyMiArKysrKysr Ky0tCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICB8ICAyICsKIHNyYy9iYWNr ZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAgICAgIHwgNjggKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jIHwgNDQgKysrKysrKysr KysrKystLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyAgfCAgNyArKysK IHNyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUv dXRpbHMvcG9ydGFsLmggICAgICAgICAgfCAgMyArKwogMTAgZmlsZXMgY2hhbmdlZCwgMTU1IGlu c2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3BvcnRhbGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwpp bmRleCAwMWVmYWMzMzE5ZS4uY2Y1ZGVlYzQ5NDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3BvcnRhbGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRz LmMKQEAgLTExOCw2ICsxMTgsNyBAQCBQZXJmb3JtQ3Vyc29yT3BlbihQYXJzZVN0YXRlICpwc3Rh dGUsIERlY2xhcmVDdXJzb3JTdG10ICpjc3RtdCwgUGFyYW1MaXN0SW5mbyBwYQogCQkJCQkgIHF1 ZXJ5U3RyaW5nLAogCQkJCQkgIENNRFRBR19TRUxFQ1QsCS8qIGN1cnNvcidzIHF1ZXJ5IGlzIGFs d2F5cyBhIFNFTEVDVCAqLwogCQkJCQkgIGxpc3RfbWFrZTEocGxhbiksCisJCQkJCSAgTlVMTCwK IAkJCQkJICBOVUxMKTsKIAogCS8qLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHJlcGFyZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4 IDg3NmFhZDIxMDBhLi4wM2Q3YTk4ZmM1OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwpAQCAtMjA3 LDYgKzIwNyw3IEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCSAgcXVl cnlfc3RyaW5nLAogCQkJCQkgIGVudHJ5LT5wbGFuc291cmNlLT5jb21tYW5kVGFnLAogCQkJCQkg IHBsYW5fbGlzdCwKKwkJCQkJICBlbnRyeS0+cGxhbnNvdXJjZSwKIAkJCQkJICBjcGxhbik7CiAK IAkvKgpAQCAtNjMyLDggKzYzMywxNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVTdG10 ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAl9CiAKIAkv KiBSZXBsYW4gaWYgbmVlZGVkLCBhbmQgYWNxdWlyZSBhIHRyYW5zaWVudCByZWZjb3VudCAqLwot CWNwbGFuID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwgcGFyYW1MSSwKLQkJCQkJ CSAgQ3VycmVudFJlc291cmNlT3duZXIsIHBzdGF0ZS0+cF9xdWVyeUVudik7CisJZm9yICg7OykK Kwl7CisJCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihlbnRyeS0+cGxhbnNvdXJjZSwgcGFyYW1MSSwK KwkJCQkJCQkgIEN1cnJlbnRSZXNvdXJjZU93bmVyLAorCQkJCQkJCSAgcHN0YXRlLT5wX3F1ZXJ5 RW52KTsKKwkJcGxhbl9saXN0ID0gY3BsYW4tPnN0bXRfbGlzdDsKKworCQlpZiAoQWNxdWlyZUV4 ZWN1dG9yTG9ja3MoY3BsYW4pKQorCQkJYnJlYWs7CisJCVJlbGVhc2VDYWNoZWRQbGFuKGNwbGFu LCBDdXJyZW50UmVzb3VyY2VPd25lcik7CisJfQogCiAJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChw bGFuZHVyYXRpb24pOwogCUlOU1RSX1RJTUVfU1VCVFJBQ1QocGxhbmR1cmF0aW9uLCBwbGFuc3Rh cnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCA4ODEwOTM0ODgxNy4uMmFmYjgxNGE0 MzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC02NTQsNiArNjU0LDcgQEAgc3RhdGlj IGJvb2wKIGluaXRfZXhlY3V0aW9uX3N0YXRlKFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNhY2hlKQog ewogCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2U7CisJQ2FjaGVkUGxhbiAqY3BsYW47CiAJ ZXhlY3V0aW9uX3N0YXRlICpwcmV2ZXMgPSBOVUxMOwogCWV4ZWN1dGlvbl9zdGF0ZSAqbGFzdHRh Z2VzID0gTlVMTDsKIAlpbnQJCQluc3RtdHM7CkBAIC02OTYsMTAgKzY5NywxNSBAQCBpbml0X2V4 ZWN1dGlvbl9zdGF0ZShTUUxGdW5jdGlvbkNhY2hlUHRyIGZjYWNoZSkKIAkgKiBDdXJyZW50UmVz b3VyY2VPd25lciB3aWxsIGJlIHRoZSBzYW1lIHdoZW4gU2h1dGRvd25TUUxGdW5jdGlvbiBydW5z LikKIAkgKi8KIAlmY2FjaGUtPmNvd25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOwotCWZjYWNo ZS0+Y3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsCi0JCQkJCQkJCSAgZmNhY2hlLT5w YXJhbUxJLAotCQkJCQkJCQkgIGZjYWNoZS0+Y293bmVyLAotCQkJCQkJCQkgIE5VTEwpOworCWZv ciAoOzspCisJeworCQljcGxhbiA9IEdldENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgZmNhY2hlLT5w YXJhbUxJLAorCQkJCQkJCSAgZmNhY2hlLT5jb3duZXIsIE5VTEwpOworCQlpZiAoQWNxdWlyZUV4 ZWN1dG9yTG9ja3MoY3BsYW4pKQorCQkJYnJlYWs7CisJCVJlbGVhc2VDYWNoZWRQbGFuKGNwbGFu LCBmY2FjaGUtPmNvd25lcik7CisJfQorCWZjYWNoZS0+Y3BsYW4gPSBjcGxhbjsKIAogCS8qCiAJ ICogSWYgbmVjZXNzYXJ5LCBtYWtlIGVzYXJyYXlbXSBiaWdnZXIgdG8gaG9sZCB0aGUgbmVlZGVk IHN0YXRlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9zcGkuYwppbmRleCA1MmYzYjExMzAxYy4uMjY4Y2QxMGJkZTggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL3NwaS5jCkBAIC0xNjg2LDYgKzE2ODYsNyBAQCBTUElfY3Vyc29yX29wZW5faW50ZXJuYWwo Y29uc3QgY2hhciAqbmFtZSwgU1BJUGxhblB0ciBwbGFuLAogCQkJCQkgIHF1ZXJ5X3N0cmluZywK IAkJCQkJICBwbGFuc291cmNlLT5jb21tYW5kVGFnLAogCQkJCQkgIHN0bXRfbGlzdCwKKwkJCQkJ ICBwbGFuc291cmNlLAogCQkJCQkgIGNwbGFuKTsKIAogCS8qCkBAIC0yMTA2LDYgKzIxMDcsMTYg QEAgU1BJX3BsYW5fZ2V0X2NhY2hlZF9wbGFuKFNQSVBsYW5QdHIgcGxhbikKIAkJCQkJCSAgX1NQ SV9jdXJyZW50LT5xdWVyeUVudik7CiAJQXNzZXJ0KGNwbGFuID09IHBsYW5zb3VyY2UtPmdwbGFu KTsKIAorCWlmICghQWNxdWlyZUV4ZWN1dG9yTG9ja3MoY3BsYW4pKQorCXsKKwkJLyogUGxhbiBp bnZhbGlkYXRlZCBkdXJpbmcgbG9ja2luZzsgZ2V0IGEgZnJlc2ggb25lLiAqLworCQlSZWxlYXNl Q2FjaGVkUGxhbihjcGxhbiwKKwkJCQkJCSAgcGxhbi0+c2F2ZWQgPyBDdXJyZW50UmVzb3VyY2VP d25lciA6IE5VTEwpOworCQljcGxhbiA9IEdldENhY2hlZFBsYW4ocGxhbnNvdXJjZSwgTlVMTCwK KwkJCQkJCQkgIHBsYW4tPnNhdmVkID8gQ3VycmVudFJlc291cmNlT3duZXIgOiBOVUxMLAorCQkJ CQkJCSAgX1NQSV9jdXJyZW50LT5xdWVyeUVudik7CisJfQorCiAJLyogUG9wIHRoZSBlcnJvciBj b250ZXh0IHN0YWNrICovCiAJZXJyb3JfY29udGV4dF9zdGFjayA9IHNwaWVycmNvbnRleHQucHJl dmlvdXM7CiAKQEAgLTI1NzQsOSArMjU4NSwxNCBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFu UHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkgKiBSZXBsYW4g aWYgbmVlZGVkLCBhbmQgaW5jcmVtZW50IHBsYW4gcmVmY291bnQuICBJZiBpdCdzIGEgc2F2ZWQK IAkJICogcGxhbiwgdGhlIHJlZmNvdW50IG11c3QgYmUgYmFja2VkIGJ5IHRoZSBwbGFuX293bmVy LgogCQkgKi8KLQkJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIG9wdGlvbnMtPnBh cmFtcywKLQkJCQkJCQkgIHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOwotCisJ CWZvciAoOzspCisJCXsKKwkJCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBvcHRp b25zLT5wYXJhbXMsCisJCQkJCQkJCSAgcGxhbl9vd25lciwgX1NQSV9jdXJyZW50LT5xdWVyeUVu dik7CisJCQlpZiAoQWNxdWlyZUV4ZWN1dG9yTG9ja3MoY3BsYW4pKQorCQkJCWJyZWFrOworCQkJ UmVsZWFzZUNhY2hlZFBsYW4oY3BsYW4sIHBsYW5fb3duZXIpOworCQl9CiAJCXN0bXRfbGlzdCA9 IGNwbGFuLT5zdG10X2xpc3Q7CiAKIAkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAxMGJlNjAwMTFh ZC4uYWFlYmVmY2RmN2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwor KysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTEyMzEsNiArMTIzMSw3IEBAIGV4 ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZykKIAkJCQkJCSAgcXVlcnlf c3RyaW5nLAogCQkJCQkJICBjb21tYW5kVGFnLAogCQkJCQkJICBwbGFudHJlZV9saXN0LAorCQkJ CQkJICBOVUxMLAogCQkJCQkJICBOVUxMKTsKIAogCQkvKgpAQCAtMjAzMCw2ICsyMDMxLDcgQEAg ZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBpbnB1dF9tZXNzYWdlKQogCQkJCQkgIHF1ZXJ5 X3N0cmluZywKIAkJCQkJICBwc3JjLT5jb21tYW5kVGFnLAogCQkJCQkgIGNwbGFuLT5zdG10X2xp c3QsCisJCQkJCSAgcHNyYywKIAkJCQkJICBjcGxhbik7CiAKIAkvKiBQb3J0YWwgaXMgZGVmaW5l ZCwgc2V0IHRoZSBwbGFuIElEIGJhc2VkIG9uIGl0cyBjb250ZW50cy4gKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmlu ZGV4IGQ4ZmM3NWQwYmI5Li4xYjIyNTE1ZDU2ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNv cC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC01OSw2ICs1OSw3 IEBAIHN0YXRpYyB1aW50NjQgRG9Qb3J0YWxSdW5GZXRjaChQb3J0YWwgcG9ydGFsLAogCQkJCQkJ CSAgIGxvbmcgY291bnQsCiAJCQkJCQkJICAgRGVzdFJlY2VpdmVyICpkZXN0KTsKIHN0YXRpYyB2 b2lkIERvUG9ydGFsUmV3aW5kKFBvcnRhbCBwb3J0YWwpOworc3RhdGljIGJvb2wgUG9ydGFsTG9j a0NhY2hlZFBsYW4oUG9ydGFsIHBvcnRhbCk7CiAKIAogLyoKQEAgLTQ2Miw2ICs0NjMsOCBAQCBQ b3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJICovCiAJ CXBvcnRhbC0+c3RyYXRlZ3kgPSBDaG9vc2VQb3J0YWxTdHJhdGVneShwb3J0YWwtPnN0bXRzKTsK IAorcmVzdGFydDoKKwogCQkvKgogCQkgKiBGaXJlIGhlciB1cCBhY2NvcmRpbmcgdG8gdGhlIHN0 cmF0ZWd5CiAJCSAqLwpAQCAtNDg3LDYgKzQ5MCwxMSBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9y dGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkvKgogCQkJCSAqIENyZWF0ZSBRdWVyeURl c2MgaW4gcG9ydGFsJ3MgY29udGV4dDsgZm9yIHRoZSBtb21lbnQsIHNldAogCQkJCSAqIHRoZSBk ZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KKwkJCQkgKgorCQkJCSAqIElmIHRoZSBwb3J0YWwgaXMg YmFja2VkIGJ5IGEgY2FjaGVkIHBsYW4sIGFjcXVpcmUgZXhlY3V0aW9uCisJCQkJICogbG9ja3Mg dmlhIFBvcnRhbExvY2tDYWNoZWRQbGFuKCkuICBJZiB0aGUgcGxhbiBpcworCQkJCSAqIGludmFs aWRhdGVkIGR1cmluZyBsb2NraW5nLCBpdCByZXBsYW5zIGFuZCBtYXkgY2hhbmdlIHRoZQorCQkJ CSAqIHBvcnRhbCBzdHJhdGVneSwgcmVxdWlyaW5nIHVzIHRvIHJlc3RhcnQgUG9ydGFsU3RhcnQo KS4KIAkJCQkgKi8KIAkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9k ZShQbGFubmVkU3RtdCwgcG9ydGFsLT5zdG10cyksCiAJCQkJCQkJCQkJCXBvcnRhbC0+c291cmNl VGV4dCwKQEAgLTQ5Niw2ICs1MDQsMTQgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFy YW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJCQkJCQkJCXBhcmFtcywKIAkJCQkJCQkJCQkJcG9ydGFs LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkJMCk7CisJCQkJaWYgKHBvcnRhbC0+Y3BsYW4pCisJCQkJ eworCQkJCQlpZiAoUG9ydGFsTG9ja0NhY2hlZFBsYW4ocG9ydGFsKSkKKwkJCQkJeworCQkJCQkJ UG9wQWN0aXZlU25hcHNob3QoKTsKKwkJCQkJCWdvdG8gcmVzdGFydDsKKwkJCQkJfQorCQkJCX0K IAogCQkJCS8qCiAJCQkJICogSWYgaXQncyBhIHNjcm9sbGFibGUgY3Vyc29yLCBleGVjdXRvciBu ZWVkcyB0byBzdXBwb3J0CkBAIC01MzQsNiArNTUwLDExIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBw b3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCiAJCQljYXNlIFBPUlRBTF9PTkVfUkVUVVJO SU5HOgogCQkJY2FzZSBQT1JUQUxfT05FX01PRF9XSVRIOgorCQkJCWlmIChwb3J0YWwtPmNwbGFu KQorCQkJCXsKKwkJCQkJaWYgKFBvcnRhbExvY2tDYWNoZWRQbGFuKHBvcnRhbCkpCisJCQkJCQln b3RvIHJlc3RhcnQ7CisJCQkJfQogCiAJCQkJLyoKIAkJCQkgKiBXZSBkb24ndCBzdGFydCB0aGUg ZXhlY3V0b3IgdW50aWwgd2UgYXJlIHRvbGQgdG8gcnVuIHRoZQpAQCAtNTc3LDcgKzU5OCwyMCBA QCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQli cmVhazsKIAogCQkJY2FzZSBQT1JUQUxfTVVMVElfUVVFUlk6Ci0JCQkJLyogTmVlZCBkbyBub3Ro aW5nIG5vdyAqLworCisJCQkJLyoKKwkJCQkgKiBHZXRDYWNoZWRQbGFuKCkgbm8gbG9uZ2VyIGFj cXVpcmVzIGV4ZWN1dGlvbiBsb2Nrcywgc28gd2UKKwkJCQkgKiBtdXN0IGRvIGl0IGhlcmUuICBN dWx0aS1zdGF0ZW1lbnQgcGxhbnMgYWx3YXlzIHVzZQorCQkJCSAqIGNvbnNlcnZhdGl2ZSBsb2Nr aW5nIChhbGwgcGFydGl0aW9ucyBsb2NrZWQpOyBwcnVuaW5nLWF3YXJlCisJCQkJICogbG9ja2lu ZyBpcyBub3QgZmVhc2libGUgYmVjYXVzZSBQb3J0YWxSdW5NdWx0aSgpIGV4ZWN1dGVzCisJCQkJ ICogc3RhdGVtZW50cyBzZXF1ZW50aWFsbHkgd2l0aCBDQ0kgYmV0d2VlbiB0aGVtLgorCQkJCSAq LworCQkJCWlmIChwb3J0YWwtPmNwbGFuKQorCQkJCXsKKwkJCQkJaWYgKFBvcnRhbExvY2tDYWNo ZWRQbGFuKHBvcnRhbCkpCisJCQkJCQlnb3RvIHJlc3RhcnQ7CisJCQkJfQorCiAJCQkJcG9ydGFs LT50dXBEZXNjID0gTlVMTDsKIAkJCQlicmVhazsKIAkJfQpAQCAtMTc4NSwzICsxODE5LDM1IEBA IEVuc3VyZVBvcnRhbFNuYXBzaG90RXhpc3RzKHZvaWQpCiAJLyogUHVzaEFjdGl2ZVNuYXBzaG90 V2l0aExldmVsIG1pZ2h0IGhhdmUgY29waWVkIHRoZSBzbmFwc2hvdCAqLwogCXBvcnRhbC0+cG9y dGFsU25hcHNob3QgPSBHZXRBY3RpdmVTbmFwc2hvdCgpOwogfQorCisvKgorICogUG9ydGFsTG9j a0NhY2hlZFBsYW4KKyAqCQlBY3F1aXJlIGV4ZWN1dGlvbiBsb2NrcyBmb3IgYSBjYWNoZWQtcGxh bi1iYWNrZWQgcG9ydGFsLAorICoJCXJldHJ5aW5nIHdpdGggYSBmcmVzaCBwbGFuIGlmIHRoZSBj dXJyZW50IG9uZSBpcyBpbnZhbGlkYXRlZC4KKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgcmVwbGFu bmluZyBjaGFuZ2VkIHBvcnRhbC0+c3RyYXRlZ3ksIG1lYW5pbmcgdGhlCisgKiBjYWxsZXIgbXVz dCByZWRpc3BhdGNoLiAgUmV0dXJucyBmYWxzZSBvbmNlIGxvY2tzIGFyZSBoZWxkLgorICovCitz dGF0aWMgYm9vbAorUG9ydGFsTG9ja0NhY2hlZFBsYW4oUG9ydGFsIHBvcnRhbCkKK3sKKwlQb3J0 YWxTdHJhdGVneSBzdGFydF9zdHJhdGVneSA9IHBvcnRhbC0+c3RyYXRlZ3k7CisKKwlpZiAoQWNx dWlyZUV4ZWN1dG9yTG9ja3MocG9ydGFsLT5jcGxhbikpCisJCXJldHVybiBmYWxzZTsKKworCS8q IFJlcGxhbi4gIExvY2tzIHdpbGwgYmUgdGFrZW4gZnJlc2hseS4gKi8KKwlSZWxlYXNlQ2FjaGVk UGxhbihwb3J0YWwtPmNwbGFuLCBwb3J0YWwtPnJlc293bmVyKTsKKwlwb3J0YWwtPmNwbGFuID0g TlVMTDsKKwlwb3J0YWwtPnN0bXRzID0gTklMOworCXBvcnRhbC0+Y3BsYW4gPSBHZXRDYWNoZWRQ bGFuKHBvcnRhbC0+cGxhbnNvdXJjZSwKKwkJCQkJCQkJICBwb3J0YWwtPnBvcnRhbFBhcmFtcywK KwkJCQkJCQkJICBwb3J0YWwtPnJlc293bmVyLAorCQkJCQkJCQkgIHBvcnRhbC0+cXVlcnlFbnYp OworCXBvcnRhbC0+c3RtdHMgPSBwb3J0YWwtPmNwbGFuLT5zdG10X2xpc3Q7CisJcG9ydGFsLT5z dHJhdGVneSA9IENob29zZVBvcnRhbFN0cmF0ZWd5KHBvcnRhbC0+c3RtdHMpOworCWlmIChwb3J0 YWwtPnN0cmF0ZWd5ICE9IHN0YXJ0X3N0cmF0ZWd5KQorCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVy biBmYWxzZTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNo ZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggNjk4ZTdjMWFh MjIuLmY3ZmUzNjY4NTljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFu Y2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAtMTAw LDcgKzEwMCw3IEBAIHN0YXRpYyBib29sIGNob29zZV9jdXN0b21fcGxhbihDYWNoZWRQbGFuU291 cmNlICpwbGFuc291cmNlLAogCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpOwog c3RhdGljIGRvdWJsZSBjYWNoZWRfcGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5j bHVkZV9wbGFubmVyKTsKIHN0YXRpYyBRdWVyeSAqUXVlcnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlz dCAqc3RtdHMpOwotc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9s aXN0LCBib29sIGFjcXVpcmUpOworc3RhdGljIHZvaWQgQWNxdWlyZUV4ZWN1dG9yTG9ja3NJbnQo TGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQgQWNxdWlyZVBsYW5u ZXJMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgdm9pZCBTY2Fu UXVlcnlGb3JMb2NrcyhRdWVyeSAqcGFyc2V0cmVlLCBib29sIGFjcXVpcmUpOwogc3RhdGljIGJv b2wgU2NhblF1ZXJ5V2Fsa2VyKE5vZGUgKm5vZGUsIGJvb2wgKmFjcXVpcmUpOwpAQCAtOTQ1LDgg Kzk0NSw5IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLAogICogQ2FsbGVyIG11c3QgaGF2ZSBhbHJlYWR5IGNhbGxlZCBSZXZhbGlkYXRlQ2FjaGVk UXVlcnkgdG8gdmVyaWZ5IHRoYXQgdGhlCiAgKiBxdWVyeXRyZWUgaXMgdXAgdG8gZGF0ZS4KICAq Ci0gKiBPbiBhICJ0cnVlIiByZXR1cm4sIHdlIGhhdmUgYWNxdWlyZWQgdGhlIGxvY2tzIG5lZWRl ZCB0byBydW4gdGhlIHBsYW4uCi0gKiAoV2UgbXVzdCBkbyB0aGlzIGZvciB0aGUgInRydWUiIHJl c3VsdCB0byBiZSByYWNlLWNvbmRpdGlvbi1mcmVlLikKKyAqIE9uIGEgInRydWUiIHJldHVybiwg dGhlIGdlbmVyaWMgcGxhbiBtYXkgYmUgcmV1c2VkIGFzIGEgdmFsaWQgY2FjaGVkCisgKiBwbGFu LiAgQW55IGV4ZWN1dGlvbi10aW1lIHNldHVwLCBpbmNsdWRpbmcgbG9jayBhY3F1aXNpdGlvbiwg aXMgdGhlCisgKiBjYWxsZXIncyByZXNwb25zaWJpbGl0eS4KICAqLwogc3RhdGljIGJvb2wKIENo ZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQpAQCAtOTgzLDggKzk4 NCw2IEBAIENoZWNrQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCQkg Ki8KIAkJQXNzZXJ0KHBsYW4tPnJlZmNvdW50ID4gMCk7CiAKLQkJQWNxdWlyZUV4ZWN1dG9yTG9j a3MocGxhbi0+c3RtdF9saXN0LCB0cnVlKTsKLQogCQkvKgogCQkgKiBJZiBwbGFuIHdhcyB0cmFu c2llbnQsIGNoZWNrIHRvIHNlZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFzCiAJCSAqIGFkdmFuY2Vk LCBhbmQgaWYgc28gaW52YWxpZGF0ZSBpdC4KQEAgLTEwMDMsOSArMTAwMiw2IEBAIENoZWNrQ2Fj aGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCQkJLyogU3VjY2Vzc2Z1bGx5 IHJldmFsaWRhdGVkIGFuZCBsb2NrZWQgdGhlIHF1ZXJ5LiAqLwogCQkJcmV0dXJuIHRydWU7CiAJ CX0KLQotCQkvKiBPb3BzLCB0aGUgcmFjZSBjYXNlIGhhcHBlbmVkLiAgUmVsZWFzZSB1c2VsZXNz IGxvY2tzLiAqLwotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGZhbHNl KTsKIAl9CiAKIAkvKgpAQCAtMTI4Miw4ICsxMjc4LDExIEBAIGNhY2hlZF9wbGFuX2Nvc3QoQ2Fj aGVkUGxhbiAqcGxhbiwgYm9vbCBpbmNsdWRlX3BsYW5uZXIpCiAgKiBwbGFuIG9yIGEgY3VzdG9t IHBsYW4gZm9yIHRoZSBnaXZlbiBwYXJhbWV0ZXJzOiB0aGUgY2FsbGVyIGRvZXMgbm90IGtub3cK ICAqIHdoaWNoIGl0IHdpbGwgZ2V0LgogICoKLSAqIE9uIHJldHVybiwgdGhlIHBsYW4gaXMgdmFs aWQgYW5kIHdlIGhhdmUgc3VmZmljaWVudCBsb2NrcyB0byBiZWdpbgotICogZXhlY3V0aW9uLgor ICogT24gcmV0dXJuLCB0aGUgcGxhbiBpcyB2YWxpZCBidXQgbm8gZXhlY3V0aW9uIGxvY2tzIGFy ZSBoZWxkLgorICogVGhlIGNhbGxlciBtdXN0IGNhbGwgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBi ZWZvcmUgZXhlY3V0aW5nLgorICogRm9yIGZyZXNobHkgYnVpbHQgcGxhbnMgKGN1c3RvbSBvciBu ZXcgZ2VuZXJpYyksIHRoZSBwbGFubmVyCisgKiBhbHJlYWR5IGhvbGRzIHRoZSBuZWVkZWQgbG9j a3MsIHNvIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkgaXMKKyAqIHJlZHVuZGFudCBidXQgaGFybWxl c3MuCiAgKgogICogT24gcmV0dXJuLCB0aGUgcmVmY291bnQgb2YgdGhlIHBsYW4gaGFzIGJlZW4g aW5jcmVtZW50ZWQ7IGEgbGF0ZXIKICAqIFJlbGVhc2VDYWNoZWRQbGFuKCkgY2FsbCBpcyBleHBl Y3RlZC4gIElmICJvd25lciIgaXMgbm90IE5VTEwgdGhlbgpAQCAtMTkwNiw5ICsxOTA1LDExIEBA IFF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0bXRzKQogLyoKICAqIEFjcXVpcmVFeGVj dXRvckxvY2tzOiBhY3F1aXJlIGxvY2tzIG5lZWRlZCBmb3IgZXhlY3V0aW9uIG9mIGEgY2FjaGVk IHBsYW47CiAgKiBvciByZWxlYXNlIHRoZW0gaWYgYWNxdWlyZSBpcyBmYWxzZS4KKyAqCisgKiBU aGlzIGxvY2tzIGFsbCByZWxhdGlvbnMgaW4gYSBnaXZlbiBQbGFubmVkU3RtdCdzIHJhbmdlIHRh YmxlLgogICovCiBzdGF0aWMgdm9pZAotQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9s aXN0LCBib29sIGFjcXVpcmUpCitBY3F1aXJlRXhlY3V0b3JMb2Nrc0ludChMaXN0ICpzdG10X2xp c3QsIGJvb2wgYWNxdWlyZSkKIHsKIAlMaXN0Q2VsbCAgICpsYzE7CiAKQEAgLTE5NTUsNiArMTk1 NiwyNyBAQCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10X2xpc3QsIGJvb2wgYWNxdWly ZSkKIAl9CiB9CiAKKy8qCisgKiBBY3F1aXJlRXhlY3V0b3JMb2NrcworICoJCUFjcXVpcmUgZXhl Y3V0aW9uIGxvY2tzIG9uIGFsbCByZWxhdGlvbnMgaW4gYSBjYWNoZWQgcGxhbi4KKyAqCisgKiBS ZXR1cm5zIHRydWUgaWYgdGhlIHBsYW4gaXMgc3RpbGwgdmFsaWQgYWZ0ZXIgbG9ja2luZy4gIFJl dHVybnMKKyAqIGZhbHNlIGlmIHRoZSBwbGFuIHdhcyBpbnZhbGlkYXRlZCB3aGlsZSBsb2NrcyB3 ZXJlIGJlaW5nIGFjcXVpcmVkLAorICogaW4gd2hpY2ggY2FzZSB0aGUgbG9ja3MgaGF2ZSBiZWVu IHJlbGVhc2VkIGFuZCB0aGUgY2FsbGVyIHNob3VsZAorICogZGlzY2FyZCB0aGlzIHBsYW4gYW5k IHJldHJ5IHdpdGggYSBmcmVzaCBvbmUgZnJvbSBHZXRDYWNoZWRQbGFuKCkuCisgKi8KK2Jvb2wK K0FjcXVpcmVFeGVjdXRvckxvY2tzKENhY2hlZFBsYW4gKmNwbGFuKQoreworCUFjcXVpcmVFeGVj dXRvckxvY2tzSW50KGNwbGFuLT5zdG10X2xpc3QsIHRydWUpOworCWlmICghY3BsYW4tPmlzX3Zh bGlkKQorCXsKKwkJQWNxdWlyZUV4ZWN1dG9yTG9ja3NJbnQoY3BsYW4tPnN0bXRfbGlzdCwgZmFs c2UpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCXJldHVybiB0cnVlOworfQorCiAvKgogICogQWNx dWlyZVBsYW5uZXJMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIHBsYW5uaW5nIG9mIGEg cXVlcnl0cmVlIGxpc3Q7CiAgKiBvciByZWxlYXNlIHRoZW0gaWYgYWNxdWlyZSBpcyBmYWxzZS4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9zcmMvYmFj a2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCmluZGV4IDQ5M2Y5YjBlZTE5Li42MTNmM2JlMzBi MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYworKysgYi9z cmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCkBAIC0yNzIsNiArMjcyLDEwIEBAIENy ZWF0ZU5ld1BvcnRhbCh2b2lkKQogICogdGhlIHBhc3NlZCBwbGFuIHRyZWVzIGhhdmUgYWRlcXVh dGUgbGlmZXRpbWUuICBUeXBpY2FsbHkgdGhpcyBpcyBkb25lIGJ5CiAgKiBjb3B5aW5nIHRoZW0g aW50byB0aGUgcG9ydGFsJ3MgY29udGV4dC4KICAqCisgKiBJZiBwbGFuc291cmNlIGlzIHByb3Zp ZGVkLCBpdCBpcyB0aGUgQ2FjaGVkUGxhblNvdXJjZSB0aGF0IHByb2R1Y2VkCisgKiBjcGxhbi4g IFBvcnRhbExvY2tDYWNoZWRQbGFuKCkgdXNlcyBpdCB0byBmZXRjaCBhIGZyZXNoIHBsYW4gaWYg dGhlCisgKiBjdXJyZW50IG9uZSBpcyBpbnZhbGlkYXRlZCBkdXJpbmcgZXhlY3V0aW9uIGxvY2sg YWNxdWlzaXRpb24uCisgKgogICogVGhlIGNhbGxlciBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBl bnN1cmluZyB0aGF0IHRoZSBwYXNzZWQgcHJlcFN0bXROYW1lCiAgKiAoaWYgbm90IE5VTEwpIGFu ZCBzb3VyY2VUZXh0IGhhdmUgYWRlcXVhdGUgbGlmZXRpbWUuCiAgKgpAQCAtMjg2LDYgKzI5MCw3 IEBAIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJCQkJICBjb25zdCBjaGFyICpz b3VyY2VUZXh0LAogCQkJCSAgQ29tbWFuZFRhZyBjb21tYW5kVGFnLAogCQkJCSAgTGlzdCAqc3Rt dHMsCisJCQkJICBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCSAgQ2FjaGVkUGxh biAqY3BsYW4pCiB7CiAJQXNzZXJ0KFBvcnRhbElzVmFsaWQocG9ydGFsKSk7CkBAIC0yOTksNiAr MzA0LDcgQEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAlwb3J0YWwtPmNvbW1h bmRUYWcgPSBjb21tYW5kVGFnOwogCVNldFF1ZXJ5Q29tcGxldGlvbigmcG9ydGFsLT5xYywgY29t bWFuZFRhZywgMCk7CiAJcG9ydGFsLT5zdG10cyA9IHN0bXRzOworCXBvcnRhbC0+cGxhbnNvdXJj ZSA9IHBsYW5zb3VyY2U7CiAJcG9ydGFsLT5jcGxhbiA9IGNwbGFuOwogCXBvcnRhbC0+c3RhdHVz ID0gUE9SVEFMX0RFRklORUQ7CiB9CkBAIC01MTcsNiArNTIzLDcgQEAgUG9ydGFsRHJvcChQb3J0 YWwgcG9ydGFsLCBib29sIGlzVG9wQ29tbWl0KQogCiAJLyogZHJvcCBjYWNoZWQgcGxhbiByZWZl cmVuY2UsIGlmIGFueSAqLwogCVBvcnRhbFJlbGVhc2VDYWNoZWRQbGFuKHBvcnRhbCk7CisJcG9y dGFsLT5wbGFuc291cmNlID0gTlVMTDsKIAogCS8qCiAJICogSWYgcG9ydGFsIGhhcyBhIHNuYXBz aG90IHByb3RlY3RpbmcgaXRzIGRhdGEsIHJlbGVhc2UgdGhhdC4gIFRoaXMgbmVlZHMKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv cGxhbmNhY2hlLmgKaW5kZXggN2E0YTg1YzgwMzguLmUwZmM0MDNlNzE3IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFu Y2FjaGUuaApAQCAtMjQxLDYgKzI0MSw3IEBAIGV4dGVybiBDYWNoZWRQbGFuICpHZXRDYWNoZWRQ bGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJCSBQYXJhbUxpc3RJbmZv IGJvdW5kUGFyYW1zLAogCQkJCQkJCQkgUmVzb3VyY2VPd25lciBvd25lciwKIAkJCQkJCQkJIFF1 ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKK2V4dGVybiBib29sIEFjcXVpcmVFeGVjdXRvckxv Y2tzKENhY2hlZFBsYW4gKmNwbGFuKTsKIGV4dGVybiB2b2lkIFJlbGVhc2VDYWNoZWRQbGFuKENh Y2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3duZXIpOwogCiBleHRlcm4gYm9vbCBDYWNo ZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggYi9zcmMvaW5jbHVk ZS91dGlscy9wb3J0YWwuaAppbmRleCBhN2JlZGIxMmMxOC4uM2FmNTM1MzYyY2QgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bv cnRhbC5oCkBAIC0xMzcsNiArMTM3LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUG9ydGFsRGF0YQogCUNv bW1hbmRUYWcJY29tbWFuZFRhZzsJCS8qIGNvbW1hbmQgdGFnIGZvciBvcmlnaW5hbCBxdWVyeSAq LwogCVF1ZXJ5Q29tcGxldGlvbiBxYzsJCQkvKiBjb21tYW5kIGNvbXBsZXRpb24gZGF0YSBmb3Ig ZXhlY3V0ZWQgcXVlcnkgKi8KIAlMaXN0CSAgICpzdG10czsJCQkvKiBsaXN0IG9mIFBsYW5uZWRT dG10cyAqLworCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2U7CS8qIENhY2hlZFBsYW5Tb3Vy Y2UsIGZvciByZXBsYW5uaW5nIG9uCisJCQkJCQkJCQkgKiBpbnZhbGlkYXRpb24gKi8KIAlDYWNo ZWRQbGFuICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBzdG10cyBhcmUgZnJvbSBvbmUgKi8K IAogCVBhcmFtTGlzdEluZm8gcG9ydGFsUGFyYW1zOyAvKiBwYXJhbXMgdG8gcGFzcyB0byBxdWVy eSAqLwpAQCAtMjQwLDYgKzI0Miw3IEBAIGV4dGVybiB2b2lkIFBvcnRhbERlZmluZVF1ZXJ5KFBv cnRhbCBwb3J0YWwsCiAJCQkJCQkJICBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJCSAg Q29tbWFuZFRhZyBjb21tYW5kVGFnLAogCQkJCQkJCSAgTGlzdCAqc3RtdHMsCisJCQkJCQkJICBD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCSAgQ2FjaGVkUGxhbiAqY3BsYW4p OwogZXh0ZXJuIFBsYW5uZWRTdG10ICpQb3J0YWxHZXRQcmltYXJ5U3RtdChQb3J0YWwgcG9ydGFs KTsKIGV4dGVybiB2b2lkIFBvcnRhbENyZWF0ZUhvbGRTdG9yZShQb3J0YWwgcG9ydGFsKTsKLS0g CjIuNDcuMwoK --0000000000007aced7064ea1536d Content-Type: application/octet-stream; name="v11-0002-Refactor-executor-s-initial-partition-pruning-se.patch" Content-Disposition: attachment; filename="v11-0002-Refactor-executor-s-initial-partition-pruning-se.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnkahul42 RnJvbSBkZGMwNWJhMzI0YWIwMzQ3YjIyMTllYWQxNzQwYTE0NjE3MDI5ZjMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMjUgTWFyIDIwMjYgMTY6MDY6MzggKzA5MDAKU3ViamVjdDogW1BBVENIIHYx MSAyLzRdIFJlZmFjdG9yIGV4ZWN1dG9yJ3MgaW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmluZyBzZXR1 cAoKU2ltcGxpZnkgaGFuZGxpbmcgb2YgdW5wcnVuZWQgcmVsaWRzIGJ5IG1vdmluZyByZXNwb25z aWJpbGl0eQpmb3IgcmVjb3JkaW5nIHRoZW0gaW4gRVN0YXRlIGludG8gQ3JlYXRlUGFydGl0aW9u UHJ1bmVTdGF0ZSgpLAphdm9pZGluZyB0aGUgbmVlZCB0byBwYXNzIGFsbF9sZWFmcGFydF9ydGlz IGFzIGFuIG91dCBwYXJhbWV0ZXIuCgpBbHNvIG1vdmUgdGhlIHNldHRpbmcgb2YgZWN4dF9wYXJh bV9leGVjX3ZhbHMgZnJvbQpFeGVjQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZSgpIHRvIEluaXRF eGVjUGFydGl0aW9uUHJ1bmVDb250ZXh0cygpLAp0byBhbGxvdyB0aGUgZm9ybWVyIHRvIGJlIGNh bGxlZCBiZWZvcmUgUEFSQU1fRVhFQyBwYXJhbWV0ZXJzIGFyZQpzZXQgdXAuICBBIGxhdGVyIGNv bW1pdCBuZWVkcyB0aGlzIHdoZW4gcnVubmluZyBwcnVuaW5nIHN0YXRlIHNldHVwCm91dHNpZGUg b2YgSW5pdFBsYW4oKS4KCk5vIGJlaGF2aW9yYWwgY2hhbmdlLgotLS0KIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyB8IDcwICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0K IDEgZmlsZSBjaGFuZ2VkLCA0OCBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggZDk2ZDRmOTk0N2IuLjJhM2FmMDA2Zjc3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0xODUsOCArMTg1LDcgQEAg c3RhdGljIGNoYXIgKkV4ZWNCdWlsZFNsb3RQYXJ0aXRpb25LZXlEZXNjcmlwdGlvbihSZWxhdGlv biByZWwsCiBzdGF0aWMgTGlzdCAqYWRqdXN0X3BhcnRpdGlvbl9jb2xub3MoTGlzdCAqY29sbm9z LCBSZXN1bHRSZWxJbmZvICpsZWFmX3BhcnRfcnJpKTsKIHN0YXRpYyBMaXN0ICphZGp1c3RfcGFy dGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRyTWFwICphdHRyTWFwKTsK IHN0YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICpDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVT dGF0ZSAqZXN0YXRlLAotCQkJCQkJCQkJCQkJCSAgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWlu Zm8sCi0JCQkJCQkJCQkJCQkJICBCaXRtYXBzZXQgKiphbGxfbGVhZnBhcnRfcnRpcyk7CisJCQkJ CQkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyk7CiBzdGF0aWMgdm9pZCBJ bml0UGFydGl0aW9uUHJ1bmVDb250ZXh0KFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwK IAkJCQkJCQkJCSAgTGlzdCAqcHJ1bmluZ19zdGVwcywKIAkJCQkJCQkJCSAgUGFydGl0aW9uRGVz YyBwYXJ0ZGVzYywKQEAgLTE5NzgsNyArMTk3Nyw3IEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9z X3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApCiAgKiBlc3RhdGUtPmVz X3BhcnRfcHJ1bmVfaW5mb3MuIEZvciBlYWNoIGVudHJ5LCBpdCBjcmVhdGVzIGEgUGFydGl0aW9u UHJ1bmVTdGF0ZQogICogYW5kIGFkZHMgaXQgdG8gZXNfcGFydF9wcnVuZV9zdGF0ZXMuICBFeGVj SW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKCkgYWNjZXNzZXMKICAqIHRoZXNlIHN0YXRlcyB0aHJv dWdoIHRoZWlyIGNvcnJlc3BvbmRpbmcgaW5kZXhlcyBpbiBlc19wYXJ0X3BydW5lX3N0YXRlcyBh bmQKLSAqIGFzc2lnbiBlYWNoIHN0YXRlIHRvIHRoZSBwYXJlbnQgbm9kZSdzIFBsYW5TdGF0ZSwg ZnJvbSB3aGVyZSBpdCB3aWxsIGJlIHVzZWQKKyAqIGFzc2lnbnMgZWFjaCBzdGF0ZSB0byB0aGUg cGFyZW50IG5vZGUncyBQbGFuU3RhdGUsIGZyb20gd2hlcmUgaXQgd2lsbCBiZSB1c2VkCiAgKiBm b3IgImV4ZWMiIHBydW5pbmcuCiAgKgogICogSWYgaW5pdGlhbCBwcnVuaW5nIHN0ZXBzIGV4aXN0 IGZvciBhIFBhcnRpdGlvblBydW5lSW5mbyBlbnRyeSwgdGhpcyBmdW5jdGlvbgpAQCAtMTk5Niwy OSArMTk5NSwzMSBAQCBFeGVjRG9Jbml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKIHsKIAlM aXN0Q2VsbCAgICpsYzsKIAorCUFzc2VydChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyA9 PSBOVUxMKTsKIAlmb3JlYWNoKGxjLCBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MpCiAJewog CQlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdF9ub2RlKFBhcnRpdGlvblBy dW5lSW5mbywgbGMpOwogCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCQlCaXRt YXBzZXQgICp2YWxpZHN1YnBsYW5zID0gTlVMTDsKLQkJQml0bWFwc2V0ICAqYWxsX2xlYWZwYXJ0 X3J0aXMgPSBOVUxMOwogCQlCaXRtYXBzZXQgICp2YWxpZHN1YnBsYW5fcnRpcyA9IE5VTEw7CiAK IAkJLyogQ3JlYXRlIGFuZCBzYXZlIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlLiAqLwotCQlwcnVu ZXN0YXRlID0gQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShlc3RhdGUsIHBydW5laW5mbywKLQkJ CQkJCQkJCQkJICAgJmFsbF9sZWFmcGFydF9ydGlzKTsKKwkJcHJ1bmVzdGF0ZSA9IENyZWF0ZVBh cnRpdGlvblBydW5lU3RhdGUoZXN0YXRlLCBwcnVuZWluZm8pOwogCQllc3RhdGUtPmVzX3BhcnRf cHJ1bmVfc3RhdGVzID0gbGFwcGVuZChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzLAogCQkJ CQkJCQkJCQkgICBwcnVuZXN0YXRlKTsKIAogCQkvKgogCQkgKiBQZXJmb3JtIGluaXRpYWwgcHJ1 bmluZyBzdGVwcywgaWYgYW55LCBhbmQgc2F2ZSB0aGUgcmVzdWx0Ci0JCSAqIGJpdG1hcHNldCBv ciBOVUxMIGFzIGRlc2NyaWJlZCBpbiB0aGUgaGVhZGVyIGNvbW1lbnQuCisJCSAqIGJpdG1hcHNl dCBvciBOVUxMIGFzIGRlc2NyaWJlZCBpbiB0aGUgaGVhZGVyIGNvbW1lbnQuICBSVCBpbmRleGVz CisJCSAqIG9mIHN1cnZpdmluZyBwYXJ0aXRpb25zIHdvdWxkIGJlIGFkZGVkIHRvIHZhbGlkc3Vi cGxhbl9ydGlzLgorCQkgKgorCQkgKiBOb3RlIHRoYXQgd2hlbiBkb19pbml0aWFsX3BydW5lIGlz IGZhbHNlLAorCQkgKiBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKCkgd291bGQgaGF2ZSBhbHJl YWR5IGFkZGVkIHRoZSBSVCBpbmRleGVzCisJCSAqIG9mIGFsbCBsZWFmIHBhcnRpdGlvbnMgdG8g ZXNfdW5wcnVuZWRfcmVsaWRzIGRpcmVjdGx5LgogCQkgKi8KIAkJaWYgKHBydW5lc3RhdGUtPmRv X2luaXRpYWxfcHJ1bmUpCiAJCQl2YWxpZHN1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1YlBs YW5zKHBydW5lc3RhdGUsIHRydWUsCiAJCQkJCQkJCQkJCQkJICZ2YWxpZHN1YnBsYW5fcnRpcyk7 Ci0JCWVsc2UKLQkJCXZhbGlkc3VicGxhbl9ydGlzID0gYWxsX2xlYWZwYXJ0X3J0aXM7CiAKIAkJ ZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcnMoZXN0YXRlLT5lc191 bnBydW5lZF9yZWxpZHMsCiAJCQkJCQkJCQkJCQkJIHZhbGlkc3VicGxhbl9ydGlzKTsKQEAgLTIx MzYsMTQgKzIxMzcsMTIgQEAgRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZyhQbGFuU3RhdGUg KnBsYW5zdGF0ZSwKICAqIHBhcmVudCBwbGFuIG5vZGUncyBQbGFuU3RhdGUuCiAgKgogICogSWYg aW5pdGlhbCBwcnVuaW5nIHN0ZXBzIGFyZSB0byBiZSBza2lwcGVkIChlLmcuLCBkdXJpbmcgRVhQ TEFJTgotICogKEdFTkVSSUNfUExBTikpLCAqYWxsX2xlYWZwYXJ0X3J0aXMgd2lsbCBiZSBwb3B1 bGF0ZWQgd2l0aCB0aGUgUlQgaW5kZXhlcyBvZgotICogYWxsIGxlYWYgcGFydGl0aW9ucyB3aG9z ZSBzY2FubmluZyBzdWJub2RlIGlzIGluY2x1ZGVkIGluIHRoZSBwYXJlbnQgcGxhbgotICogbm9k ZSdzIGxpc3Qgb2YgY2hpbGQgcGxhbnMuIFRoZSBjYWxsZXIgbXVzdCBhZGQgdGhlc2UgUlQgaW5k ZXhlcyB0bwotICogZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMuCisgKiAoR0VORVJJQ19QTEFO KSksIHRoZSBSVCBpbmRleGVzIG9mIGFsbCBsZWFmIHBhcnRpdGlvbnMgd2hvc2Ugc2Nhbm5pbmcK KyAqIHN1Ym5vZGUgaXMgaW5jbHVkZWQgaW4gdGhlIHBhcmVudCBwbGFuIG5vZGUncyBsaXN0IG9m IGNoaWxkIHBsYW5zIGFyZQorICogYWRkZWQgdG8gZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMu CiAgKi8KIHN0YXRpYyBQYXJ0aXRpb25QcnVuZVN0YXRlICoKLUNyZWF0ZVBhcnRpdGlvblBydW5l U3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAotCQkJ CQkJICBCaXRtYXBzZXQgKiphbGxfbGVhZnBhcnRfcnRpcykKK0NyZWF0ZVBhcnRpdGlvblBydW5l U3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogewog CVBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGU7CiAJaW50CQkJbl9wYXJ0X2hpZXJhcmNo aWVzOwpAQCAtMjM3Nyw4ICsyMzc2LDggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3Rh dGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCiAJCQkJCQkJCQkJCQkJ ICAgcGluZm8tPmV4ZWNwYXJhbWlkcyk7CiAKIAkJCS8qCi0JCQkgKiBSZXR1cm4gYWxsIGxlYWYg cGFydGl0aW9uIGluZGV4ZXMgaWYgd2UncmUgc2tpcHBpbmcgcHJ1bmluZyBpbgotCQkJICogdGhl IEVYUExBSU4gKEdFTkVSSUNfUExBTikgY2FzZS4KKwkJCSAqIEFkZCBhbGwgbGVhZiBwYXJ0aXRp b24gaW5kZXhlcyB0byBlc191bnBydW5lZF9yZWxpZHMgaWYgd2UncmUKKwkJCSAqIHNraXBwaW5n IHBydW5pbmcgaW4gdGhlIEVYUExBSU4gKEdFTkVSSUNfUExBTikgY2FzZS4KIAkJCSAqLwogCQkJ aWYgKHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMgJiYgIXBydW5lc3RhdGUtPmRvX2luaXRp YWxfcHJ1bmUpCiAJCQl7CkBAIC0yMzkwLDkgKzIzODksMjggQEAgQ3JlYXRlUGFydGl0aW9uUHJ1 bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCiAJ CQkJCUluZGV4CQlydGluZGV4ID0gcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwW3BhcnRfaW5kZXhd OwogCiAJCQkJCWlmIChydGluZGV4KQotCQkJCQkJKmFsbF9sZWFmcGFydF9ydGlzID0gYm1zX2Fk ZF9tZW1iZXIoKmFsbF9sZWFmcGFydF9ydGlzLAotCQkJCQkJCQkJCQkJCQkJcnRpbmRleCk7CisJ CQkJCQllc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcyA9CisJCQkJCQkJYm1zX2FkZF9tZW1iZXIo ZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMsIHJ0aW5kZXgpOworCQkJCX0KKwkJCX0KKwkJCWVs c2UgaWYgKHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMgPT0gTklMKQorCQkJeworCQkJCS8q CisJCQkJICogQWxsIHBhcnRpdGlvbnMgYmV0dGVyIGJlIHByZXNlbnQgaW4gZXNfdW5wcnVuZWRf cmVsaWRzIHdoZW4KKwkJCQkgKiBub25lIGFyZSBpbml0aWFsbHkgcHJ1bmFibGUuCisJCQkJICov CisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCQkJCWludAkJCXBhcnRfaW5kZXggPSAtMTsK KworCQkJCXdoaWxlICgocGFydF9pbmRleCA9IGJtc19uZXh0X21lbWJlcihwcHJ1bmUtPnByZXNl bnRfcGFydHMsCisJCQkJCQkJCQkJCQkJIHBhcnRfaW5kZXgpKSA+PSAwKQorCQkJCXsKKwkJCQkJ SW5kZXgJCXJ0aW5kZXggPSBwcHJ1bmUtPmxlYWZwYXJ0X3J0aV9tYXBbcGFydF9pbmRleF07CisK KwkJCQkJaWYgKHJ0aW5kZXgpCisJCQkJCQlBc3NlcnQoYm1zX2lzX21lbWJlcihydGluZGV4LCBl c3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcykpOwogCQkJCX0KKyNlbmRpZgogCQkJfQogCiAJCQlq Kys7CkBAIC0yNDkwLDkgKzI1MDgsMTAgQEAgSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0 aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAgKgkJSW5pdGlhbGl6ZSBleGVjIHBydW5pbmcg Y29udGV4dHMgZGVmZXJyZWQgYnkgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZSgpCiAgKgogICog VGhpcyBmdW5jdGlvbiBmaW5hbGl6ZXMgZXhlYyBwcnVuaW5nIHNldHVwIGZvciBhIFBhcnRpdGlv blBydW5lU3RhdGUgYnkKLSAqIGluaXRpYWxpemluZyBjb250ZXh0cyBmb3IgcHJ1bmluZyBzdGVw cyB0aGF0IHJlcXVpcmUgdGhlIHBhcmVudCBwbGFuJ3MKLSAqIFBsYW5TdGF0ZS4gSXQgaXRlcmF0 ZXMgb3ZlciBQYXJ0aXRpb25QcnVuaW5nRGF0YSBlbnRyaWVzIGFuZCBzZXRzIHVwIHRoZQotICog bmVjZXNzYXJ5IGV4ZWN1dGlvbiBjb250ZXh0cyBmb3IgcHJ1bmluZyBkdXJpbmcgcXVlcnkgZXhl Y3V0aW9uLgorICogaW5pdGlhbGl6aW5nIGNvbnRleHRzIGZvciBwcnVuaW5nIHN0ZXBzIHRoYXQg cmVxdWlyZSBQQVJBTV9FWEVDIHBhcmFtZXRlcnMKKyAqIGFuZCB0aGUgcGFyZW50IHBsYW4ncyBQ bGFuU3RhdGUuIEl0IGl0ZXJhdGVzIG92ZXIgUGFydGl0aW9uUHJ1bmluZ0RhdGEKKyAqIGVudHJp ZXMgYW5kIHNldHMgdXAgdGhlIG5lY2Vzc2FyeSBleGVjdXRpb24gY29udGV4dHMgZm9yIHBydW5p bmcgZHVyaW5nCisgKiBxdWVyeSBleGVjdXRpb24uCiAgKgogICogQWxzbyBmaXggdGhlIG1hcHBp bmcgb2YgcGFydGl0aW9uIGluZGV4ZXMgdG8gc3VicGxhbiBpbmRleGVzIGNvbnRhaW5lZCBpbgog ICogcHJ1bmVzdGF0ZSBieSBjb25zaWRlcmluZyB0aGUgbmV3IGxpc3Qgb2Ygc3VicGxhbnMgdGhh dCBzdXJ2aXZlZCBpbml0aWFsCkBAIC0yNTIwLDkgKzI1MzksMTYgQEAgSW5pdEV4ZWNQYXJ0aXRp b25QcnVuZUNvbnRleHRzKFBhcnRpdGlvblBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAJYm9vbAkJ Zml4X3N1YnBsYW5fbWFwID0gZmFsc2U7CiAKIAlBc3NlcnQocHJ1bmVzdGF0ZS0+ZG9fZXhlY19w cnVuZSk7CisJQXNzZXJ0KHBydW5lc3RhdGUtPmVjb250ZXh0KTsKIAlBc3NlcnQocGFyZW50X3Bs YW4gIT0gTlVMTCk7CiAJZXN0YXRlID0gcGFyZW50X3BsYW4tPnN0YXRlOwogCisJLyoKKwkgKiBU aGVzZSBtaWdodCBub3QgYmUgYXZhaWxhYmxlIHdoZW4gRXhlY0NyZWF0ZVBhcnRpdGlvblBydW5l U3RhdGUoKSBpcworCSAqIGNhbGxlZC4KKwkgKi8KKwlwcnVuZXN0YXRlLT5lY29udGV4dC0+ZWN4 dF9wYXJhbV9leGVjX3ZhbHMgPSBlc3RhdGUtPmVzX3BhcmFtX2V4ZWNfdmFsczsKKwogCS8qCiAJ ICogTm8gbmVlZCB0byBmaXggc3VicGxhbnMgbWFwcyBpZiBpbml0aWFsIHBydW5pbmcgZGlkbid0 IGVsaW1pbmF0ZSBhbnkKIAkgKiBzdWJwbGFucy4KLS0gCjIuNDcuMwoK --0000000000007aced7064ea1536d--