Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q7GYG-0000bT-Ny for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Jun 2023 14:23:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1q7GYF-0005Pk-2y for pgsql-hackers@arkaria.postgresql.org; Thu, 08 Jun 2023 14:23:47 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q7GYE-0005LO-0Q for pgsql-hackers@lists.postgresql.org; Thu, 08 Jun 2023 14:23:46 +0000 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1q7GY7-000uDv-0P for pgsql-hackers@postgresql.org; Thu, 08 Jun 2023 14:23:44 +0000 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-1b01d3bb571so3468365ad.2 for ; Thu, 08 Jun 2023 07:23:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686234218; x=1688826218; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=IRQjH0lVK1sOR+bH2XiOTRoQaC3IwHd69cJvnstGC+4=; b=hP1IqheLAc23qt7o3hZDmGYirpHiRmorvqMN6d6WU4ED5fziiMfmB3S72zdqK5FKTD /6sLEBNMWiK0VE5+H77tyL7OOqMVH13o98ZnhetFwAIMS/gFx95vtKoB7ExifCPsR+/h pdC4Lc9kTjTbp+W4qmf/Vy3f4NnEUwD1vmdOjl9NMfTSt1CH9OBZFFOaId3EKs+D3gBE 8gm8H4wyNaNBLb8VYONO0PhK77I5LYxGh0KHoOixwHK9MFOCRyW7Id9p3n/P03Ch2Rd1 jhrBD5ADjDg+Pyi86C1/VhBMDWB9D7/w5vhO7M6Y1a3G77PloE/oIStWwfozEbEbARgd U3pQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686234218; x=1688826218; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=IRQjH0lVK1sOR+bH2XiOTRoQaC3IwHd69cJvnstGC+4=; b=Rtz46uMKzxc2QCmDh/Ba/NZZ/rggFyZs5TYtf7JmR18m9EmZmm6qEebLe9kLEbF3s/ ZWbFoNhW8pMPRCKvbO2E7R8vWuxfboRRTl0b8CxYUTwZElPxpgig4NGUmbx8lQVoeP/X z0BbfI5iIEMRKLVfSKe0rbzIaqFzXVkS1Wsbvw+z6viUi/3EGOB7WcCZhzVpGixKW2D/ 3mBUBEJ+Mld3brLcNKpwIuMJ4dqTgTPutW6OOWk4KqoA96IJrlUf3v/wd8mZT87oL1uV duXtnboV7o0f9yh9OUhaw1Osv1rOr+jy+5M1Euq0Iivma08TygnGiQjmrt4m4q3xxLsv QBuw== X-Gm-Message-State: AC+VfDy0gWPR+Kl5PgORA9rfrgAkQNn6wu8ipxX6v7Nlz0VFxRk2x+OF b6cdJp9IU4vkedf2+7JvGwmLidSPmFuiHDc8cAs= X-Google-Smtp-Source: ACHHUZ6uo4W8pGd3I9lMicsSwBeGJ7DaFs40z8QLCroNJLyYoqc0kNfmld1R0NcsNMQljpkFMr3TRTzQzDH3dJWGnBw= X-Received: by 2002:a17:902:f54e:b0:1b2:1942:9106 with SMTP id h14-20020a170902f54e00b001b219429106mr4973670plf.64.1686234217693; Thu, 08 Jun 2023 07:23:37 -0700 (PDT) MIME-Version: 1.0 References: <20221221101846.7zsi7lscnm5ediik@alvherre.pgsql> <1350682.1671635927@sss.pgh.pa.us> <4191508.1674157166@sss.pgh.pa.us> <349124.1674185509@sss.pgh.pa.us> <20230207180855.xy5m4puwh5gzd7xy@awork3.anarazel.de> <1274885.1680558101@sss.pgh.pa.us> In-Reply-To: From: Amit Langote Date: Thu, 8 Jun 2023 23:23:21 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Tom Lane Cc: Alvaro Herrera , Andres Freund , David Rowley , Jacob Champion , PostgreSQL-development , Robert Haas Content-Type: multipart/mixed; boundary="0000000000008e02d005fd9eff71" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008e02d005fd9eff71 Content-Type: text/plain; charset="UTF-8" Here is a new version. Summary of main changes since the last version that Tom reviewed back in April: * ExecInitNode() subroutines now return NULL (as opposed to a partially initialized PlanState node as in the last version) upon detecting that the CachedPlan that the plan tree is from is no longer valid due to invalidation messages processed upon taking locks. Plan tree subnodes that are fully initialized till the point of detection are added by ExecInitNode() into a List in EState called es_inited_plannodes. ExecEndPlan() now iterates over that list to close each one individually using ExecEndNode(). ExecEndNode() or its subroutines thus no longer need to be recursive to close the child nodes. Also, with this design, there is no longer the possibility of partially initialized PlanState trees with partially initialized individual PlanState nodes, so the ExecEndNode() subroutine changes that were in the last version to account for partial initialization are not necessary. * Instead of setting EXEC_FLAG_GET_LOCKS in es_top_eflags for the entire duration of InitPlan(), it is now only set in ExecInitAppend() and ExecInitMergeAppend(), because that's where the subnodes scanning child tables would be and the executor only needs to lock child tables to validate a CachedPlan in a race-free manner. Parent tables that appear in the query would have been locked by AcquirePlannerLocks(). Child tables whose scan subnodes don't appear under Append/MergeAppend (due to the latter being removed by setrefs.c for there being only a single child) are identified in PlannedStmt.elidedAppendChildRelations and InitPlan() locks each one found there if the plan tree is from a CachedPlan. * There's no longer PlannedStmt.viewRelations, because view relations need not be tracked separately for locking as AcquirePlannerLocks() covers them. --0000000000008e02d005fd9eff71 Content-Type: application/octet-stream; name="v39-0004-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v39-0004-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lin7vcqw0 RnJvbSBiMjdiMTYwMjRkOGU2NzMwNjI1MjBiOGEzNzkyYjcxZDUxZTFhZWQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogTW9uLCAxMyBNYXIgMjAyMyAxNTo1OTozOCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjM5IDQv NF0gVHJhY2sgb3BlbmVkIHJhbmdlIHRhYmxlIHJlbGF0aW9ucyBpbiBhIExpc3QgaW4KIEVTdGF0 ZQoKVGhpcyBtYWtlcyBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zIGZhc3RlciB3aGVuIHRo ZXJlIGFyZSBtYW55CnJlbGF0aW9ucyBpbiB0aGUgcmFuZ2UgdGFibGUgYnV0IG9ubHkgYSBmZXcg YXJlIG9wZW5lZCBkdXJpbmcKZXhlY3V0aW9uLCBzdWNoIGFzIHdoZW4gcnVuLXRpbWUgcHJ1bmlu ZyBraWNrcyBpbiBvbiBhbiBBcHBlbmQKY29udGFpbmluZyAxMDAwcyBvZiBwYXJ0aXRpb24gc3Vi cGxhbnMuCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgfCA5ICsrKysrLS0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgfCAyICsrCiBzcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaCAgICB8IDIgKysKIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25z KCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDAwZGI2ZWIz MDcuLjI4YjcyMjEzYzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMTY0OSwxMiArMTY0 OSwxMyBAQCBFeGVjQ2xvc2VSZXN1bHRSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUpCiB2b2lkCiBF eGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKQogewotCWludAkJCWk7 CisJTGlzdENlbGwgKmxjOwogCi0JZm9yIChpID0gMDsgaSA8IGVzdGF0ZS0+ZXNfcmFuZ2VfdGFi bGVfc2l6ZTsgaSsrKQorCWZvcmVhY2gobGMsIGVzdGF0ZS0+ZXNfb3BlbmVkX3JlbGF0aW9ucykK IAl7Ci0JCWlmIChlc3RhdGUtPmVzX3JlbGF0aW9uc1tpXSkKLQkJCXRhYmxlX2Nsb3NlKGVzdGF0 ZS0+ZXNfcmVsYXRpb25zW2ldLCBOb0xvY2spOworCQlSZWxhdGlvbiByZWwgPSBsZmlyc3QobGMp OworCisJCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1V0aWxzLmMKaW5kZXggNTk5ZGI0ZDU5Ny4uYmUxMDBmNGJkOCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1V0aWxzLmMKQEAgLTgzMSw2ICs4MzEsOCBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVT dGF0ZSAqZXN0YXRlLCBJbmRleCBydGkpCiAJCX0KIAogCQllc3RhdGUtPmVzX3JlbGF0aW9uc1ty dGkgLSAxXSA9IHJlbDsKKwkJZXN0YXRlLT5lc19vcGVuZWRfcmVsYXRpb25zID0gbGFwcGVuZChl c3RhdGUtPmVzX29wZW5lZF9yZWxhdGlvbnMsCisJCQkJCQkJCQkJCSAgcmVsKTsKIAl9CiAKIAly ZXR1cm4gcmVsOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBmMGM1MTc3YjA2Li5iZTA2YzQwNzY2 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjE5LDYgKzYxOSw4IEBAIHR5cGVkZWYgc3RydWN0 IEVTdGF0ZQogCUluZGV4CQllc19yYW5nZV90YWJsZV9zaXplOwkvKiBzaXplIG9mIHRoZSByYW5n ZSB0YWJsZSBhcnJheXMgKi8KIAlSZWxhdGlvbiAgICplc19yZWxhdGlvbnM7CS8qIEFycmF5IG9m IHBlci1yYW5nZS10YWJsZS1lbnRyeSBSZWxhdGlvbgogCQkJCQkJCQkgKiBwb2ludGVycywgb3Ig TlVMTCBpZiBub3QgeWV0IG9wZW5lZCAqLworCUxpc3QJICAgKmVzX29wZW5lZF9yZWxhdGlvbnM7 IC8qIExpc3Qgb2Ygbm9uLU5VTEwgZW50cmllcyBpbgorCQkJCQkJCQkJICAqIGVzX3JlbGF0aW9u cyBpbiBubyBzcGVjaWZpYyBvcmRlciAqLwogCXN0cnVjdCBFeGVjUm93TWFyayAqKmVzX3Jvd21h cmtzOwkvKiBBcnJheSBvZiBwZXItcmFuZ2UtdGFibGUtZW50cnkKIAkJCQkJCQkJCQkgKiBFeGVj Um93TWFya3MsIG9yIE5VTEwgaWYgbm9uZSAqLwogCUxpc3QJICAgKmVzX3J0ZXBlcm1pbmZvczsJ LyogTGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwotLSAKMi4zNS4zCgo= --0000000000008e02d005fd9eff71 Content-Type: application/octet-stream; name="v39-0002-Add-a-PlannedStmt-field-to-store-RT-indexes-of-o.patch" Content-Disposition: attachment; filename="v39-0002-Add-a-PlannedStmt-field-to-store-RT-indexes-of-o.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lin7vcrs2 RnJvbSBhYTNkZTNmMDc3MGNmN2YyYjkxZDcwZGU5MDkyMmZkZmNlOTQ3Y2Y1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCA3IEp1biAyMDIzIDIxOjAwOjU4ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MzkgMi80 XSBBZGQgYSBQbGFubmVkU3RtdCBmaWVsZCB0byBzdG9yZSBSVCBpbmRleGVzIG9mCiBvbmNlLWNo aWxkIHJlbGF0aW9ucwoKQSBmdXR1cmUgY29tbWl0IHdpbGwgdGVhY2ggdGhlIGV4ZWN1dG9yIHRv IGxvY2sgb25seSB0aGUgY2hpbGQgdGFibGVzCmFwcGVhcmluZyBpbiBhIHBsYW4gYW5kIHRvIGlk ZW50aWZ5IHRob3NlIHRhYmxlcyBpdCB3aWxsIHJlbHkgb24gdGhlCmZhY3QgdGhhdCBwbGFuIHRy ZWUgc3Vibm9kZXMgdG8gc2NhbiB0aGUgY2hpbGQgdGFibGVzIG5vcm1hbGx5IGFwcGVhcgp1bmRl ciBhbiBBcHBlbmQvTWVyZ2VBcHBlbmQgbm9kZS4gIEJ1dCB3aGVuIHRoZXJlJ3Mgb25seSBvbmUg Y2hpbGQKc3Vibm9kZSwgc2V0cmVmcy5jIHJlbW92ZXMgdGhlIHJlZHVuZGFudCBBcHBlbmQvTWVy Z2VBcHBlbmQgbm9kZSwKbWFraW5nIGl0IGltcG9zc2libGUgZm9yIHRoZSBleGVjdXRvciB0byBp ZGVudGlmeSB0aGUgc3Vibm9kZSBhcwpzY2FubmluZyBhIGNoaWxkIHRhYmxlLgoKVGhpcyBjb21t aXQgbWFrZXMgc2V0cmVmcy5jIHN0b3JlIHRoZSBSVCBpbmRleGVzIG9mIGNoaWxkIHRhYmxlcwpz Y2FubmVkIGJ5IHN1Y2ggb25jZS1jaGlsZCBzdWJub2RlcyBpbnRvIGEgbmV3IGZpZWxkIG9mIFBs YW5uZWRTdG10CmNhbGxlZCBlbGlkZWRBcHBlbmRDaGlsZFJlbGF0aW9ucy4KClRoZXJlIGFyZSBu byB1c2VycyBvZiB0aGF0IGZpZWxkIGFzIG9mIHRoaXMgY29tbWl0IGJ1dCB0aGUKYWZvcmVtZW50 aW9uZWQgZnV0dXJlIGNvbW1pdCB3aWxsIHVzZSBpdCB0byBsb2NrIGNoaWxkIHRhYmxlcyB0aGF0 CmRvbid0IGFwcGVhcnMgdW5kZXIgQXBwZW5kL01lcmdlQXBwZW5kLgotLS0KIHNyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3BsYW5uZXIuYyB8ICAxICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3NldHJlZnMuYyB8IDk3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9pbmNs dWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICB8ICAzICsKIHNyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oICAgICAgICB8ICAyICsKIDQgZmlsZXMgY2hhbmdlZCwgMTAzIGluc2VydGlvbnMo KykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggOGUzZDJjMWUzNS4uMjdh NGM3NTg1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5j CisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTI2LDYgKzUy Niw3IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9z dHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCXJlc3VsdC0+cGVybUluZm9zID0gZ2xvYi0+Zmlu YWxydGVwZXJtaW5mb3M7CiAJcmVzdWx0LT5yZXN1bHRSZWxhdGlvbnMgPSBnbG9iLT5yZXN1bHRS ZWxhdGlvbnM7CiAJcmVzdWx0LT5hcHBlbmRSZWxhdGlvbnMgPSBnbG9iLT5hcHBlbmRSZWxhdGlv bnM7CisJcmVzdWx0LT5lbGlkZWRBcHBlbmRDaGlsZFJlbHMgPSBnbG9iLT5lbGlkZWRBcHBlbmRD aGlsZFJlbHM7CiAJcmVzdWx0LT5zdWJwbGFucyA9IGdsb2ItPnN1YnBsYW5zOwogCXJlc3VsdC0+ cmV3aW5kUGxhbklEcyA9IGdsb2ItPnJld2luZFBsYW5JRHM7CiAJcmVzdWx0LT5yb3dNYXJrcyA9 IGdsb2ItPmZpbmFscm93bWFya3M7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5k ZXggYzRkYjY4MTJlYy4uOGNjYzg2OWJkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJl ZnMuYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRl ICJhY2Nlc3MvdHJhbnNhbS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfY2xhc3MuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNp bmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKQEAgLTEzNCw2ICsxMzUsNyBAQCBzdGF0aWMgdm9p ZCBmbGF0dGVuX3VucGxhbm5lZF9ydGVzKFBsYW5uZXJHbG9iYWwgKmdsb2IsIFJhbmdlVGJsRW50 cnkgKnJ0ZSk7CiBzdGF0aWMgYm9vbCBmbGF0dGVuX3J0ZXNfd2Fsa2VyKE5vZGUgKm5vZGUsIGZs YXR0ZW5fcnRlc193YWxrZXJfY29udGV4dCAqY3h0KTsKIHN0YXRpYyB2b2lkIGFkZF9ydGVfdG9f ZmxhdF9ydGFibGUoUGxhbm5lckdsb2JhbCAqZ2xvYiwgTGlzdCAqcnRlcGVybWluZm9zLAogCQkJ CQkJCQkgICBSYW5nZVRibEVudHJ5ICpydGUpOworc3RhdGljIExpc3QgKmFkZF9wbGFuX3NjYW5y ZWxpZHMoTGlzdCAqc2NhbnJlbGlkcywgUGxhbiAqcGxhbik7CiBzdGF0aWMgUGxhbiAqc2V0X3Bs YW5fcmVmcyhQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqcGxhbiwgaW50IHJ0b2Zmc2V0KTsKIHN0 YXRpYyBQbGFuICpzZXRfaW5kZXhvbmx5c2Nhbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290 LAogCQkJCQkJCQkJCSAgSW5kZXhPbmx5U2NhbiAqcGxhbiwKQEAgLTYwMSw2ICs2MDMsOTMgQEAg YWRkX3J0ZV90b19mbGF0X3J0YWJsZShQbGFubmVyR2xvYmFsICpnbG9iLCBMaXN0ICpydGVwZXJt aW5mb3MsCiAJfQogfQogCisvKgorICogUmVjdXJzaXZlbHkgYWRkcyB0aGUgUlQgaW5kZXgoZXMp IG9mIHRoZSByZWxhdGlvbihzKSBzY2FubmVkIGJ5IHBsYW4KKyAqIHRvICdzY2FucmVsaWRzJy4K KyAqLworc3RhdGljIExpc3QgKgorYWRkX3BsYW5fc2NhbnJlbGlkcyhMaXN0ICpzY2FucmVsaWRz LCBQbGFuICpwbGFuKQoreworCWlmIChwbGFuID09IE5VTEwpCisJCXJldHVybiBzY2FucmVsaWRz OworCisJc3dpdGNoIChub2RlVGFnKHBsYW4pKQorCXsKKwkJY2FzZSBUX1NlcVNjYW46CisJCWNh c2UgVF9TYW1wbGVTY2FuOgorCQljYXNlIFRfSW5kZXhTY2FuOgorCQljYXNlIFRfSW5kZXhPbmx5 U2NhbjoKKwkJY2FzZSBUX0JpdG1hcEhlYXBTY2FuOgorCQljYXNlIFRfVGlkU2NhbjoKKwkJY2Fz ZSBUX1RpZFJhbmdlU2NhbjoKKwkJY2FzZSBUX1N1YnF1ZXJ5U2NhbjoKKwkJY2FzZSBUX0Z1bmN0 aW9uU2NhbjoKKwkJY2FzZSBUX1RhYmxlRnVuY1NjYW46CisJCWNhc2UgVF9WYWx1ZXNTY2FuOgor CQljYXNlIFRfQ3RlU2NhbjoKKwkJY2FzZSBUX1dvcmtUYWJsZVNjYW46CisJCWNhc2UgVF9OYW1l ZFR1cGxlc3RvcmVTY2FuOgorCQljYXNlIFRfRm9yZWlnblNjYW46CisJCWNhc2UgVF9DdXN0b21T Y2FuOgorCQkJc2NhbnJlbGlkcyA9IGxhcHBlbmRfaW50KHNjYW5yZWxpZHMsICgoU2NhbiAqKSBw bGFuKS0+c2NhbnJlbGlkKTsKKwkJCWJyZWFrOworCisJCS8qIFJlY3Vyc2UgZm9yIG5vZGVzIHRo YXQgaGF2ZSBjaGlsZCBwbGFucy4gKi8KKwkJY2FzZSBUX0FwcGVuZDoKKwkJCXsKKwkJCQlBcHBl bmQgKmFwbGFuID0gKEFwcGVuZCAqKSBwbGFuOworCQkJCUxpc3RDZWxsICpsOworCisJCQkJZm9y ZWFjaChsLCBhcGxhbi0+YXBwZW5kcGxhbnMpCisJCQkJCXNjYW5yZWxpZHMgPSBhZGRfcGxhbl9z Y2FucmVsaWRzKHNjYW5yZWxpZHMsCisJCQkJCQkJCQkJCQkJIChQbGFuICopIGxmaXJzdChsKSk7 CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIFRfTWVyZ2VBcHBlbmQ6CisJCQl7CisJCQkJTWVy Z2VBcHBlbmQgKm1wbGFuID0gKE1lcmdlQXBwZW5kICopIHBsYW47CisJCQkJTGlzdENlbGwgKmw7 CisKKwkJCQlmb3JlYWNoKGwsIG1wbGFuLT5tZXJnZXBsYW5zKQorCQkJCQlzY2FucmVsaWRzID0g YWRkX3BsYW5fc2NhbnJlbGlkcyhzY2FucmVsaWRzLAorCQkJCQkJCQkJCQkJCSAoUGxhbiAqKSBs Zmlyc3QobCkpOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBUX0JpdG1hcEFuZDoKKwkJCXsK KwkJCQlCaXRtYXBBbmQgKmJhcGxhbiA9IChCaXRtYXBBbmQgKikgcGxhbjsKKwkJCQlMaXN0Q2Vs bCAqbDsKKworCQkJCWZvcmVhY2gobCwgYmFwbGFuLT5iaXRtYXBwbGFucykKKwkJCQkJc2NhbnJl bGlkcyA9IGFkZF9wbGFuX3NjYW5yZWxpZHMoc2NhbnJlbGlkcywKKwkJCQkJCQkJCQkJCQkgKFBs YW4gKikgbGZpcnN0KGwpKTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgVF9CaXRtYXBPcjoK KwkJCXsKKwkJCQlCaXRtYXBPciAqYm9wbGFuID0gKEJpdG1hcE9yICopIHBsYW47CisJCQkJTGlz dENlbGwgKmw7CisKKwkJCQlmb3JlYWNoKGwsIGJvcGxhbi0+Yml0bWFwcGxhbnMpCisJCQkJCXNj YW5yZWxpZHMgPSBhZGRfcGxhbl9zY2FucmVsaWRzKHNjYW5yZWxpZHMsCisJCQkJCQkJCQkJCQkJ IChQbGFuICopIGxmaXJzdChsKSk7CisJCQl9CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJ YnJlYWs7CisJfQorCisJLyogUmVjdXJzZSBpbnRvIGNoaWxkIHBsYW5zLiAqLworCXNjYW5yZWxp ZHMgPSBhZGRfcGxhbl9zY2FucmVsaWRzKHNjYW5yZWxpZHMsIHBsYW4tPmxlZnR0cmVlKTsKKwlz Y2FucmVsaWRzID0gYWRkX3BsYW5fc2NhbnJlbGlkcyhzY2FucmVsaWRzLCBwbGFuLT5yaWdodHRy ZWUpOworCisJcmV0dXJuIHNjYW5yZWxpZHM7Cit9CisKIC8qCiAgKiBzZXRfcGxhbl9yZWZzOiBy ZWN1cnNlIHRocm91Z2ggdGhlIFBsYW4gbm9kZXMgb2YgYSBzaW5nbGUgc3VicXVlcnkgbGV2ZWwK ICAqLwpAQCAtMTc0Myw3ICsxODMyLDExIEBAIHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVy SW5mbyAqcm9vdCwKIAkJUGxhbgkgICAqcCA9IChQbGFuICopIGxpbml0aWFsKGFwbGFuLT5hcHBl bmRwbGFucyk7CiAKIAkJaWYgKHAtPnBhcmFsbGVsX2F3YXJlID09IGFwbGFuLT5wbGFuLnBhcmFs bGVsX2F3YXJlKQorCQl7CisJCQlyb290LT5nbG9iLT5lbGlkZWRBcHBlbmRDaGlsZFJlbHMgPQor CQkJCWFkZF9wbGFuX3NjYW5yZWxpZHMocm9vdC0+Z2xvYi0+ZWxpZGVkQXBwZW5kQ2hpbGRSZWxz LCBwKTsKIAkJCXJldHVybiBjbGVhbl91cF9yZW1vdmVkX3BsYW5fbGV2ZWwoKFBsYW4gKikgYXBs YW4sIHApOworCQl9CiAJfQogCiAJLyoKQEAgLTE4MjEsNyArMTkxNCwxMSBAQCBzZXRfbWVyZ2Vh cHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAkJUGxhbgkgICAqcCA9IChQbGFu ICopIGxpbml0aWFsKG1wbGFuLT5tZXJnZXBsYW5zKTsKIAogCQlpZiAocC0+cGFyYWxsZWxfYXdh cmUgPT0gbXBsYW4tPnBsYW4ucGFyYWxsZWxfYXdhcmUpCisJCXsKKwkJCXJvb3QtPmdsb2ItPmVs aWRlZEFwcGVuZENoaWxkUmVscyA9CisJCQkJYWRkX3BsYW5fc2NhbnJlbGlkcyhyb290LT5nbG9i LT5lbGlkZWRBcHBlbmRDaGlsZFJlbHMsIHApOwogCQkJcmV0dXJuIGNsZWFuX3VwX3JlbW92ZWRf cGxhbl9sZXZlbCgoUGxhbiAqKSBtcGxhbiwgcCk7CisJCX0KIAl9CiAKIAkvKgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRo bm9kZXMuaAppbmRleCBjMTdiNTNmN2FkLi40MzAzNDgyNDk5IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aApAQCAtMTI1LDYgKzEyNSw5IEBAIHR5cGVkZWYgc3RydWN0IFBsYW5uZXJHbG9iYWwKIAkvKiAi ZmxhdCIgbGlzdCBvZiBBcHBlbmRSZWxJbmZvcyAqLwogCUxpc3QJICAgKmFwcGVuZFJlbGF0aW9u czsKIAorCS8qICJmbGF0IiBsaXN0IG9mIGludGVnZXIgUlQgaW5kZXhlcyAqLworCUxpc3QJICAg KmVsaWRlZEFwcGVuZENoaWxkUmVsczsKKwogCS8qIE9JRHMgb2YgcmVsYXRpb25zIHRoZSBwbGFu IGRlcGVuZHMgb24gKi8KIAlMaXN0CSAgICpyZWxhdGlvbk9pZHM7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVz LmgKaW5kZXggN2E1ZjNiYTYyNS4uMjAzMjY4ZDFiYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAg LTgwLDYgKzgwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAogCUxpc3QJICAgKmFw cGVuZFJlbGF0aW9uczsJLyogbGlzdCBvZiBBcHBlbmRSZWxJbmZvIG5vZGVzICovCiAKKwlMaXN0 CSAgICplbGlkZWRBcHBlbmRDaGlsZFJlbHM7IC8qICJmbGF0IiBsaXN0IG9mIGludGVnZXIgUlQg aW5kZXhlcyAqLworCiAJTGlzdAkgICAqc3VicGxhbnM7CQkvKiBQbGFuIHRyZWVzIGZvciBTdWJQ bGFuIGV4cHJlc3Npb25zOyBub3RlCiAJCQkJCQkJCSAqIHRoYXQgc29tZSBjb3VsZCBiZSBOVUxM ICovCiAKLS0gCjIuMzUuMwoK --0000000000008e02d005fd9eff71 Content-Type: application/octet-stream; name="v39-0001-Add-field-to-store-partitioned-relids-to-Append-.patch" Content-Disposition: attachment; filename="v39-0001-Add-field-to-store-partitioned-relids-to-Append-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lin7vcrx3 RnJvbSA2ZDAzNWNiZDIwOGY0YjdkZTk3OGJmNGM3ZmJiN2UxZjhkYjA3ZDI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogVGh1LCA5IE1hciAyMDIzIDExOjI2OjA2ICswOTAwClN1YmplY3Q6IFtQQVRDSCB2MzkgMS80 XSBBZGQgZmllbGQgdG8gc3RvcmUgcGFydGl0aW9uZWQgcmVsaWRzIHRvCiBBcHBlbmQvTWVyZ2VB cHBlbmQKCkEgZnV0dXJlIGNvbW1pdCB3b3VsZCBsaWtlIHRvIG1vdmUgdGhlIHRpbWluZyBvZiBs b2NraW5nIHJlbGF0aW9ucwpyZWZlcmVuY2VkIGluIGEgY2FjaGVkIHBsYW4gdG8gRXhlY0luaXRO b2RlKCkgdHJhdmVyc2FsIG9mIHRoZSBwbGFuCnRyZWUgZnJvbSB0aGUgY3VycmVudCBsb29wLW92 ZXItcmFuZ2V0YWJsZSBpbiBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLgpCdXQgcGFydGl0aW9uZWQg dGFibGVzIGRvIG5vdCBoYXZlIHRoZWlyIG93biBTY2FuIG5vZGVzIGZvciB0aGUKZXhlY3V0b3Ig dG8gYmUgYWJsZSB0byBmaW5kIHRoZW0gdGhyb3VnaCB0aGUgcGxhbiB0cmVlIHRyYXZlcnNhbCwg c28KdGhlaXIgUlQgaW5kZXhlcyBtdXN0IGJlIHJlbWVtYmVyZWQgdmlhIHRoaXMgbmV3IGZpZWxk IG9mCkFwcGVuZC9NZXJnZUFwcGVuZCBub2RlLgoKVGhlIGNvZGUgdG8gbG9vayB1cCBwYXJ0aXRp b25lZCBwYXJlbnQgcmVsaWRzIGZvciBhIGdpdmVuIGxpc3Qgb2YKcGFydGl0aW9uIHNjYW4gc3Vi cGF0aHMgb2YgYW4gQXBwZW5kL01lcmdlQXBwZW5kIGlzIGFscmVhZHkgcHJlc2VudAppbiBtYWtl X3BhcnRpdGlvbl9wcnVuZWluZm8oKSBidXQgd2FzIGxvY2FsIHRvIHBhcnRwcnVuZS5jLiAgVGhp cwpjb21taXQgcmVmYWN0b3JzIHRoYXQgY29kZSBpbnRvIGl0cyBvd24gZnVuY3Rpb24gY2FsbGVk CmFkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKCkuICBDb25zaWRlcmluZyB0aGF0IHRoZSBw YXJ0aXRpb25lZApwYXJlbnQgcmVsaWRzIG11c3QgYWxzbyBiZSBsb29rZWQgdXAgZm9yIHRoZSBj YXNlcyB3aGVyZQpBcHBlbmQvTWVyZ2VBcHBlbmQgY2hpbGQgc3VicGF0aHMgYXJlIG5vdCBzaW1w bGUgc2NhbiBub2RlcywgYnV0IGFsc28Kam9pbiBvciBhZ2dyZWdyYXRlIG5vZGVzIChkdWUgdG8g cGFydGl0aW9ud2lzZSBqb2luIGFuZCBhZ2dyZWdhdGUKZmVhdHVyZXMpLCB0aGUgY29kZSBpbiBu ZXcgZnVuY3Rpb24gbmVlZHMgdG8gYmUgZ2VuZXJhbGl6ZWQgdG8gdGhlCmNhc2VzIHdoZXJlIGNo aWxkIHJlbHMgY2FuIGJlIGpvaW5yZWxzIG9yIHVwcGVyIChncm91cGluZykgcmVscy4KCkZpbmFs bHksIHRvIGZhY2lsaXRhdGUgdGhlIGxvb2t1cCBvZiBwYXJlbnQgcmVscyBpbgphZGRfYXBwZW5k X3N1YnBhdGhfcGFydHJlbGlkcygpLCBzZXQgdGhlIGxpbmsgdG8gcGFyZW50IHJlbHMgaW4gdGhl ClJlbE9wdEluZm9zIG9mIGNoaWxkIGdyb3VwaW5nIHJlbHMgdG9vLCBsaWtlIGl0J3MgYWxyZWFk eSBkb25lIGZvcgp0aGUgUmVsT3B0SW5mb3Mgb2YgY2hpbGQgYmFzZXJlbHMgKHNjYW4tbGV2ZWwp IGFuZCBjaGlsZCBqb2lucmVscy4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVh dGVwbGFuLmMgfCAgNDEgKysrKysrLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5u ZXIuYyAgICB8ICAgMyArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAg fCAgIDQgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jIHwgMTM0ICsr KysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVu ZS5jICAgIHwgMTI0ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3Bs YW5ub2Rlcy5oICAgICAgICAgICB8ICAxNCArKysKIHNyYy9pbmNsdWRlL29wdGltaXplci9hcHBl bmRpbmZvLmggICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5l LmggICAgfCAgIDMgKy0KIDggZmlsZXMgY2hhbmdlZCwgMjAzIGluc2VydGlvbnMoKyksIDEyMyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVh dGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXgg NGJiMzgxNjBiMy4uNDhmZWJmNDA0NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vY3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0 ZXBsYW4uYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2V4dGVuc2libGUuaCIK ICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3Mu aCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvYXBwZW5kaW5mby5oIgogI2luY2x1ZGUgIm9wdGltaXpl ci9jbGF1c2VzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2Nvc3QuaCIKICNpbmNsdWRlICJvcHRp bWl6ZXIvb3B0aW1pemVyLmgiCkBAIC0xMjEwLDYgKzEyMTEsNyBAQCBjcmVhdGVfYXBwZW5kX3Bs YW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQog CU9pZAkJICAgKm5vZGVDb2xsYXRpb25zID0gTlVMTDsKIAlib29sCSAgICpub2RlTnVsbHNGaXJz dCA9IE5VTEw7CiAJYm9vbAkJY29uc2lkZXJfYXN5bmMgPSBmYWxzZTsKKwlMaXN0CSAgICphbGxw YXJ0cmVsaWRzID0gTklMOwogCiAJLyoKIAkgKiBUaGUgc3VicGF0aHMgbGlzdCBjb3VsZCBiZSBl bXB0eSwgaWYgZXZlcnkgY2hpbGQgd2FzIHByb3ZlbiBlbXB0eSBieQpAQCAtMTM1MSwxNSArMTM1 MywyMyBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGgg KmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCQkJKytuYXN5bmNwbGFuczsKIAkJfQogCisJCS8qCisJ CSAqIEZpbmQgcGFydGl0aW9uZWQgcGFyZW50IHJlbChzKSBvZiB0aGUgc3VicGF0aCdzIHJlbChz KS4KKwkJICovCisJCWFsbHBhcnRyZWxpZHMgPSBhZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlk cyhyb290LCBzdWJwYXRoLCByZWwsCisJCQkJCQkJCQkJCQkJICBhbGxwYXJ0cmVsaWRzKTsKKwog CQlzdWJwbGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCXBsYW4tPmFs bHBhcnRyZWxpZHMgPSBhbGxwYXJ0cmVsaWRzOworCiAJLyoKLQkgKiBJZiBhbnkgcXVhbHMgZXhp c3QsIHRoZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0aW9uCi0JICog cHJ1bmluZyBkdXJpbmcgZXhlY3V0aW9uLiAgR2F0aGVyIGluZm9ybWF0aW9uIG5lZWRlZCBieSB0 aGUgZXhlY3V0b3IgdG8KLQkgKiBkbyBwYXJ0aXRpb24gcHJ1bmluZy4KKwkgKiBJZiBzY2Fubmlu ZyBwYXJ0aXRpb25zLCBjaGVjayBpZiB0aGVyZSBhcmUgcXVhbHMgdGhhdCBtYXkgYmUgdXNlZnVs IHRvCisJICogcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbiBwcnVuaW5nIGR1cmluZyBleGVjdXRp b24uICBHYXRoZXIgaW5mb3JtYXRpb24KKwkgKiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvIGRv IHBhcnRpdGlvbiBwcnVuaW5nLgogCSAqLwotCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcp CisJaWYgKGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAmJiBhbGxwYXJ0cmVsaWRzICE9IE5JTCkK IAl7CiAJCUxpc3QJICAgKnBydW5lcXVhbDsKIApAQCAtMTM4MCw3ICsxMzkwLDggQEAgY3JlYXRl X2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGlu dCBmbGFncykKIAkJCXBhcnRwcnVuZWluZm8gPQogCQkJCW1ha2VfcGFydGl0aW9uX3BydW5laW5m byhyb290LCByZWwsCiAJCQkJCQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJ IHBydW5lcXVhbCk7CisJCQkJCQkJCQkJIHBydW5lcXVhbCwKKwkJCQkJCQkJCQkgYWxscGFydHJl bGlkcyk7CiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKQEAgLTE0MjYsNiAr MTQzNyw3IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVy Z2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJUmVsT3B0 SW5mbyAqcmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsKIAlQYXJ0aXRpb25QcnVuZUluZm8g KnBhcnRwcnVuZWluZm8gPSBOVUxMOworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHMgPSBOSUw7CiAK IAkvKgogCSAqIFdlIGRvbid0IGhhdmUgdGhlIGFjdHVhbCBjcmVhdGlvbiBvZiB0aGUgTWVyZ2VB cHBlbmQgbm9kZSBzcGxpdCBvdXQKQEAgLTE1MTUsMTUgKzE1MjcsMjMgQEAgY3JlYXRlX21lcmdl X2FwcGVuZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0 aCwKIAkJCXN1YnBsYW4gPSAoUGxhbiAqKSBzb3J0OwogCQl9CiAKKwkJLyoKKwkJICogRmluZCBw YXJ0aXRpb25lZCBwYXJlbnQgcmVsKHMpIG9mIHRoZSBzdWJwYXRoJ3MgcmVsKHMpLgorCQkgKi8K KwkJYWxscGFydHJlbGlkcyA9IGFkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKHJvb3QsIHN1 YnBhdGgsIHJlbCwKKwkJCQkJCQkJCQkJCQkgIGFsbHBhcnRyZWxpZHMpOworCiAJCXN1YnBsYW5z ID0gbGFwcGVuZChzdWJwbGFucywgc3VicGxhbik7CiAJfQogCisJbm9kZS0+YWxscGFydHJlbGlk cyA9IGFsbHBhcnRyZWxpZHM7CisKIAkvKgotCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBt YXkgYmUgdXNlZnVsIHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24KLQkgKiBwcnVuaW5nIGR1 cmluZyBleGVjdXRpb24uICBHYXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRv ciB0bwotCSAqIGRvIHBhcnRpdGlvbiBwcnVuaW5nLgorCSAqIElmIHNjYW5uaW5nIHBhcnRpdGlv bnMsIGNoZWNrIGlmIHRoZXJlIGFyZSBxdWFscyB0aGF0IG1heSBiZSB1c2VmdWwgdG8KKwkgKiBw ZXJmb3JtIGZ1cnRoZXIgcGFydGl0aW9uIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhl ciBpbmZvcm1hdGlvbgorCSAqIG5lZWRlZCBieSB0aGUgZXhlY3V0b3IgdG8gZG8gcGFydGl0aW9u IHBydW5pbmcuCiAJICovCi0JaWYgKGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZykKKwlpZiAoZW5h YmxlX3BhcnRpdGlvbl9wcnVuaW5nICYmIGFsbHBhcnRyZWxpZHMgIT0gTklMKQogCXsKIAkJTGlz dAkgICAqcHJ1bmVxdWFsOwogCkBAIC0xNTM1LDcgKzE1NTUsOCBAQCBjcmVhdGVfbWVyZ2VfYXBw ZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAog CQlpZiAocHJ1bmVxdWFsICE9IE5JTCkKIAkJCXBhcnRwcnVuZWluZm8gPSBtYWtlX3BhcnRpdGlv bl9wcnVuZWluZm8ocm9vdCwgcmVsLAogCQkJCQkJCQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhz LAotCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwpOworCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwsCisJ CQkJCQkJCQkJCQkJIGFsbHBhcnRyZWxpZHMpOwogCX0KIAogCW5vZGUtPm1lcmdlcGxhbnMgPSBz dWJwbGFuczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCAxZTRkZDI3ZGJh Li44ZTNkMmMxZTM1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC03Nzk4 LDggKzc3OTgsMTEgQEAgY3JlYXRlX3BhcnRpdGlvbndpc2VfZ3JvdXBpbmdfcGF0aHMoUGxhbm5l ckluZm8gKnJvb3QsCiAJCQkJCQkJCQkgICBhZ2dfY29zdHMsIGdkLCAmY2hpbGRfZXh0cmEsCiAJ CQkJCQkJCQkgICAmY2hpbGRfcGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKIAorCQkvKiBNYXJrIGFz IGNoaWxkIG9mIGdyb3VwZWRfcmVsLiAqLworCQljaGlsZF9ncm91cGVkX3JlbC0+cGFyZW50ID0g Z3JvdXBlZF9yZWw7CiAJCWlmIChjaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpCiAJCXsKKwkJ CWNoaWxkX3BhcnRpYWxseV9ncm91cGVkX3JlbC0+cGFyZW50ID0gZ3JvdXBlZF9yZWw7CiAJCQlw YXJ0aWFsbHlfZ3JvdXBlZF9saXZlX2NoaWxkcmVuID0KIAkJCQlsYXBwZW5kKHBhcnRpYWxseV9n cm91cGVkX2xpdmVfY2hpbGRyZW4sCiAJCQkJCQljaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDFjYTI2YmFhMjUuLmM0ZGI2 ODEyZWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTE3NTQsNiArMTc1 NCw4IEBAIHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlzZXRfZHVt bXlfdGxpc3RfcmVmZXJlbmNlcygoUGxhbiAqKSBhcGxhbiwgcnRvZmZzZXQpOwogCiAJYXBsYW4t PmFwcHJlbGlkcyA9IG9mZnNldF9yZWxpZF9zZXQoYXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQp OworCWZvcmVhY2gobCwgYXBsYW4tPmFsbHBhcnRyZWxpZHMpCisJCWxmaXJzdChsKSA9IG9mZnNl dF9yZWxpZF9zZXQoKFJlbGlkcykgbGZpcnN0KGwpLCBydG9mZnNldCk7CiAKIAlpZiAoYXBsYW4t PnBhcnRfcHJ1bmVfaW5mbykKIAl7CkBAIC0xODMwLDYgKzE4MzIsOCBAQCBzZXRfbWVyZ2VhcHBl bmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlzZXRfZHVtbXlfdGxpc3RfcmVmZXJl bmNlcygoUGxhbiAqKSBtcGxhbiwgcnRvZmZzZXQpOwogCiAJbXBsYW4tPmFwcHJlbGlkcyA9IG9m ZnNldF9yZWxpZF9zZXQobXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOworCWZvcmVhY2gobCwg bXBsYW4tPmFsbHBhcnRyZWxpZHMpCisJCWxmaXJzdChsKSA9IG9mZnNldF9yZWxpZF9zZXQoKFJl bGlkcykgbGZpcnN0KGwpLCBydG9mZnNldCk7CiAKIAlpZiAobXBsYW4tPnBhcnRfcHJ1bmVfaW5m bykKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZv LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKaW5kZXggZjQ1NmIz YjBhNC4uMTRjNzRhM2E0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv YXBwZW5kaW5mby5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8u YwpAQCAtNDEsNiArNDEsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX2luaF90cmFuc2xhdGlvbl9saXN0 KFJlbGF0aW9uIG9sZHJlbGF0aW9uLAogCQkJCQkJCQkJICBBcHBlbmRSZWxJbmZvICphcHBpbmZv KTsKIHN0YXRpYyBOb2RlICphZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoTm9kZSAqbm9k ZSwKIAkJCQkJCQkJCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19jb250ZXh0ICpjb250ZXh0KTsK K3N0YXRpYyBMaXN0ICphZGRfcGFydF9yZWxpZHMoTGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFw c2V0ICpwYXJ0cmVsaWRzKTsKIAogCiAvKgpAQCAtMTAzNSwzICsxMDM2LDEzNiBAQCBkaXN0cmli dXRlX3Jvd19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZvICpyb290KQogCQl9CiAJfQogfQorCisv KgorICogYWRkX2FwcGVuZF9zdWJwYXRoX3BhcnRyZWxpZHMKKyAqCQlMb29rIHVwIGEgY2hpbGQg c3VicGF0aCdzIHJlbCdzIHBhcnRpdGlvbmVkIHBhcmVudCByZWxpZHMgdXAgdG8KKyAqCQlwYXJl bnRyZWwgYW5kIGFkZCB0aGUgYml0bWFwc2V0IGNvbnRhaW5pbmcgdGhvc2UgaW50bworICoJCSdh bGxwYXJ0cmVsaWRzJworICovCitMaXN0ICoKK2FkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRz KFBsYW5uZXJJbmZvICpyb290LCBQYXRoICpzdWJwYXRoLAorCQkJCQkJCSAgUmVsT3B0SW5mbyAq cGFyZW50cmVsLAorCQkJCQkJCSAgTGlzdCAqYWxscGFydHJlbGlkcykKK3sKKwlSZWxPcHRJbmZv ICpwcmVsID0gc3VicGF0aC0+cGFyZW50OworCVJlbGlkcwkJcGFydHJlbGlkcyA9IE5VTEw7CisK KwkvKiBOb3RoaW5nIHRvIGRvIGlmIHRoZXJlJ3Mgbm8gcGFyZW50IHRvIGJlZ2luIHdpdGguICov CisJaWYgKCFJU19PVEhFUl9SRUwocHJlbCkpCisJCXJldHVybiBhbGxwYXJ0cmVsaWRzOworCisJ LyoKKwkgKiBUcmF2ZXJzZSB1cCB0byB0aGUgcGF0aHJlbCdzIHRvcG1vc3QgcGFydGl0aW9uZWQg cGFyZW50LCBjb2xsZWN0aW5nCisJICogcGFyZW50IHJlbGlkcyBhcyB3ZSBnbzsgYnV0IHN0b3Ag aWYgd2UgcmVhY2ggcGFyZW50cmVsLiAgKE5vcm1hbGx5LCBhCisJICogcGF0aHJlbCdzIHRvcG1v c3QgcGFydGl0aW9uZWQgcGFyZW50IGlzIGVpdGhlciBwYXJlbnRyZWwgb3IgYSBVTklPTiBBTEwK KwkgKiBhcHBlbmRyZWwgY2hpbGQgb2YgcGFyZW50cmVsLiAgQnV0IHdoZW4gaGFuZGxpbmcgcGFy dGl0aW9ud2lzZSBqb2lucyBvZgorCSAqIG11bHRpLWxldmVsIHBhcnRpdGlvbmluZyB0cmVlcywg d2UgY2FuIHNlZSBhbiBhcHBlbmQgcGF0aCB3aG9zZQorCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRl cm1lZGlhdGUgcGFydGl0aW9uZWQgdGFibGUuKQorCSAqLworCWRvCisJeworCQlSZWxpZHMJcGFy ZW50X3JlbGlkcyA9IE5VTEw7CisKKwkJLyoKKwkJICogRm9yIHNpbXBsZSBjaGlsZCByZWxzLCB3 ZSBjYW4gc2ltcGx5IGdldCB0aGUgcGFyZW50IHJlbGlkIGZyb20KKwkJICogcHJlbC0+cGFyZW50 LiAgQnV0IGZvciBwYXJ0aXRpb253aXNlIGpvaW4gYW5kIGFnZ3JlZ2F0ZSBjaGlsZCByZWxzLAor CQkgKiB3aGlsZSB3ZSBjYW4gdXNlIHByZWwtPnBhcmVudCB0byBtb3ZlIHVwIHRoZSB0cmVlLCBw YXJlbnQgcmVsaWRzIHRvCisJCSAqIGFkZCBpbnRvICdwYXJ0cmVsaWRzJyBtdXN0IGJlIGZvdW5k IHRoZSBoYXJkIHdheSB0aHJvdWdoIHRoZQorCQkgKiBBcHBlbmRJbmZvSW5mb3MsIGJlY2F1c2Ug MSkgYSBqb2lucmVsJ3MgcmVsaWRzIG1heSBwb2ludCB0byBSVEVfSk9JTgorCQkgKiBlbnRyaWVz LCAyKSB0b3Btb3N0IHBhcmVudCBncm91cGluZyByZWwncyByZWxpZHMgZmllbGQgaXMgbGVmdCBO VUxMLgorCQkgKi8KKwkJaWYgKElTX1NJTVBMRV9SRUwocHJlbCkpCisJCXsKKwkJCXByZWwgPSBw cmVsLT5wYXJlbnQ7CisJCQkvKiBTdG9wIG9uY2Ugd2UgcmVhY2ggdGhlIHJvb3QgcGFydGl0aW9u ZWQgcmVsLiAqLworCQkJaWYgKCFJU19QQVJUSVRJT05FRF9SRUwocHJlbCkpCisJCQkJYnJlYWs7 CisJCQlwYXJlbnRfcmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKHBhcmVudF9yZWxpZHMsIHByZWwt PnJlbGlkcyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlBcHBlbmRSZWxJbmZvICoqYXBwaW5mb3M7 CisJCQlpbnQJCW5hcHBpbmZvcywKKwkJCQkJaTsKKworCQkJYXBwaW5mb3MgPSBmaW5kX2FwcGlu Zm9zX2J5X3JlbGlkcyhyb290LCBwcmVsLT5yZWxpZHMsCisJCQkJCQkJCQkJCSAgICZuYXBwaW5m b3MpOworCQkJZm9yIChpID0gMDsgaSA8IG5hcHBpbmZvczsgaSsrKQorCQkJeworCQkJCUFwcGVu ZFJlbEluZm8gKmFwcGluZm8gPSBhcHBpbmZvc1tpXTsKKworCQkJCXBhcmVudF9yZWxpZHMgPSBi bXNfYWRkX21lbWJlcihwYXJlbnRfcmVsaWRzLAorCQkJCQkJCQkJCQkgICBhcHBpbmZvLT5wYXJl bnRfcmVsaWQpOworCQkJfQorCQkJcGZyZWUoYXBwaW5mb3MpOworCQkJcHJlbCA9IHByZWwtPnBh cmVudDsKKwkJfQorCQkvKiBhY2NlcHQgdGhpcyBsZXZlbCBhcyBhbiBpbnRlcmVzdGluZyBwYXJl bnQgKi8KKwkJcGFydHJlbGlkcyA9IGJtc19hZGRfbWVtYmVycyhwYXJ0cmVsaWRzLCBwYXJlbnRf cmVsaWRzKTsKKwkJaWYgKHByZWwgPT0gcGFyZW50cmVsKQorCQkJYnJlYWs7CQkvKiBkb24ndCB0 cmF2ZXJzZSBhYm92ZSBwYXJlbnRyZWwgKi8KKwl9IHdoaWxlIChJU19PVEhFUl9SRUwocHJlbCkp OworCisJaWYgKHBhcnRyZWxpZHMgPT0gTlVMTCkKKwkJcmV0dXJuIGFsbHBhcnRyZWxpZHM7CisK KwlyZXR1cm4gYWRkX3BhcnRfcmVsaWRzKGFsbHBhcnRyZWxpZHMsIHBhcnRyZWxpZHMpOworfQor CisvKgorICogYWRkX3BhcnRfcmVsaWRzCisgKgkJQWRkIG5ldyBpbmZvIHRvIGEgbGlzdCBvZiBC aXRtYXBzZXRzIG9mIHBhcnRpdGlvbmVkIHJlbGlkcy4KKyAqCisgKiBXaXRoaW4gJ2FsbHBhcnRy ZWxpZHMnLCB0aGVyZSBpcyBvbmUgQml0bWFwc2V0IGZvciBlYWNoIHRvcG1vc3QgcGFyZW50Cisg KiBwYXJ0aXRpb25lZCByZWwuICBFYWNoIEJpdG1hcHNldCBjb250YWlucyB0aGUgUlQgaW5kZXhl cyBvZiB0aGUgdG9wbW9zdAorICogcGFyZW50IGFzIHdlbGwgYXMgaXRzIHJlbGV2YW50IG5vbi1s ZWFmIGNoaWxkIHBhcnRpdGlvbnMuICBTaW5jZSAoYnkKKyAqIGNvbnN0cnVjdGlvbiBvZiB0aGUg cmFuZ2V0YWJsZSBsaXN0KSBwYXJlbnQgcGFydGl0aW9ucyBtdXN0IGhhdmUgbG93ZXIKKyAqIFJU IGluZGV4ZXMgdGhhbiB0aGVpciBjaGlsZHJlbiwgd2UgY2FuIGRpc3Rpbmd1aXNoIHRoZSB0b3Bt b3N0IHBhcmVudAorICogYXMgYmVpbmcgdGhlIGxvd2VzdCBzZXQgYml0IGluIHRoZSBCaXRtYXBz ZXQuCisgKgorICogJ3BhcnRyZWxpZHMnIGNvbnRhaW5zIHRoZSBSVCBpbmRleGVzIG9mIGEgcGFy ZW50IHBhcnRpdGlvbmVkIHJlbCwgYW5kCisgKiBwb3NzaWJseSBzb21lIG5vbi1sZWFmIGNoaWxk cmVuLCB0aGF0IGFyZSBuZXdseSBpZGVudGlmaWVkIGFzIHBhcmVudHMgb2YKKyAqIHNvbWUgc3Vi cGF0aCByZWwgcGFzc2VkIHRvIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbygpLiAgVGhlc2UgYXJl IGFkZGVkCisgKiB0byBhbiBhcHByb3ByaWF0ZSBtZW1iZXIgb2YgJ2FsbHBhcnRyZWxpZHMnLgor ICoKKyAqIE5vdGUgdGhhdCB0aGUgbGlzdCBjb250YWlucyBvbmx5IFJUIGluZGV4ZXMgb2YgcGFy dGl0aW9uZWQgdGFibGVzIHRoYXQKKyAqIGFyZSBwYXJlbnRzIG9mIHNvbWUgc2Nhbi1sZXZlbCBy ZWxhdGlvbiBhcHBlYXJpbmcgaW4gdGhlICdzdWJwYXRocycgdGhhdAorICogbWFrZV9wYXJ0aXRp b25fcHJ1bmVpbmZvKCkgaXMgZGVhbGluZyB3aXRoLiAgQWxzbywgInRvcG1vc3QiIHBhcmVudHMg YXJlCisgKiBub3QgYWxsb3dlZCB0byBiZSBoaWdoZXIgdGhhbiB0aGUgJ3BhcmVudHJlbCcgYXNz b2NpYXRlZCB3aXRoIHRoZSBhcHBlbmQKKyAqIHBhdGguICBJbiB0aGlzIHdheSwgd2UgYXZvaWQg ZXhwZW5kaW5nIGN5Y2xlcyBvbiBwYXJ0aXRpb25lZCByZWxzIHRoYXQKKyAqIGNhbid0IGNvbnRy aWJ1dGUgdXNlZnVsIHBydW5pbmcgaW5mb3JtYXRpb24gZm9yIHRoZSBwcm9ibGVtIGF0IGhhbmQu CisgKiAoSXQgaXMgcG9zc2libGUgZm9yICdwYXJlbnRyZWwnIHRvIGJlIGEgY2hpbGQgcGFydGl0 aW9uZWQgdGFibGUsIGFuZCBpdAorICogaXMgYWxzbyBwb3NzaWJsZSBmb3Igc2Nhbi1sZXZlbCBy ZWxhdGlvbnMgdG8gYmUgY2hpbGQgcGFydGl0aW9uZWQgdGFibGVzCisgKiByYXRoZXIgdGhhbiBs ZWFmIHBhcnRpdGlvbnMuICBIZW5jZSB3ZSBtdXN0IGNvbnN0cnVjdCB0aGlzIHJlbGF0aW9uIHNl dAorICogd2l0aCByZWZlcmVuY2UgdG8gdGhlIHBhcnRpY3VsYXIgYXBwZW5kIHBhdGggd2UncmUg ZGVhbGluZyB3aXRoLCByYXRoZXIKKyAqIHRoYW4gbG9va2luZyBhdCB0aGUgZnVsbCBwYXJ0aXRp b25pbmcgc3RydWN0dXJlIHJlcHJlc2VudGVkIGluIHRoZQorICogUmVsT3B0SW5mb3MuKQorICov CitzdGF0aWMgTGlzdCAqCithZGRfcGFydF9yZWxpZHMoTGlzdCAqYWxscGFydHJlbGlkcywgQml0 bWFwc2V0ICpwYXJ0cmVsaWRzKQoreworCUluZGV4CQl0YXJnZXRwYXJ0OworCUxpc3RDZWxsICAg KmxjOworCisJLyogV2UgY2FuIGVhc2lseSBnZXQgdGhlIGxvd2VzdCBzZXQgYml0IHRoaXMgd2F5 OiAqLworCXRhcmdldHBhcnQgPSBibXNfbmV4dF9tZW1iZXIocGFydHJlbGlkcywgLTEpOworCUFz c2VydCh0YXJnZXRwYXJ0ID4gMCk7CisKKwkvKiBMb29rIGZvciBhIG1hdGNoaW5nIHRvcG1vc3Qg cGFyZW50ICovCisJZm9yZWFjaChsYywgYWxscGFydHJlbGlkcykKKwl7CisJCUJpdG1hcHNldCAg KmN1cnJwYXJ0cmVsaWRzID0gKEJpdG1hcHNldCAqKSBsZmlyc3QobGMpOworCQlJbmRleAkJY3Vy cnRhcmdldCA9IGJtc19uZXh0X21lbWJlcihjdXJycGFydHJlbGlkcywgLTEpOworCisJCWlmICh0 YXJnZXRwYXJ0ID09IGN1cnJ0YXJnZXQpCisJCXsKKwkJCS8qIEZvdW5kIGEgbWF0Y2gsIHNvIGFk ZCBhbnkgbmV3IFJUIGluZGV4ZXMgdG8gdGhpcyBoaWVyYXJjaHkgKi8KKwkJCWN1cnJwYXJ0cmVs aWRzID0gYm1zX2FkZF9tZW1iZXJzKGN1cnJwYXJ0cmVsaWRzLCBwYXJ0cmVsaWRzKTsKKwkJCWxm aXJzdChsYykgPSBjdXJycGFydHJlbGlkczsKKwkJCXJldHVybiBhbGxwYXJ0cmVsaWRzOworCQl9 CisJfQorCS8qIE5vIG1hdGNoLCBzbyBhZGQgdGhlIG5ldyBwYXJ0aXRpb24gaGllcmFyY2h5IHRv IHRoZSBsaXN0ICovCisJcmV0dXJuIGxhcHBlbmQoYWxscGFydHJlbGlkcywgcGFydHJlbGlkcyk7 Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgYi9z cmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKaW5kZXggNzE3OWIyMmEwNS4uMjEz NTEyYTVmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwpAQCAtMTM4LDcgKzEz OCw2IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lU3RlcFJlc3VsdAogfSBQcnVuZVN0ZXBSZXN1bHQ7 CiAKIAotc3RhdGljIExpc3QgKmFkZF9wYXJ0X3JlbGlkcyhMaXN0ICphbGxwYXJ0cmVsaWRzLCBC aXRtYXBzZXQgKnBhcnRyZWxpZHMpOwogc3RhdGljIExpc3QgKm1ha2VfcGFydGl0aW9uZWRyZWxf cHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCSAgIFJlbE9wdEluZm8gKnBh cmVudHJlbCwKIAkJCQkJCQkJCQkgICBMaXN0ICpwcnVuZXF1YWwsCkBAIC0yMTgsMzMgKzIxNywz MiBAQCBzdGF0aWMgdm9pZCBwYXJ0a2V5X2RhdHVtX2Zyb21fZXhwcihQYXJ0aXRpb25QcnVuZUNv bnRleHQgKmNvbnRleHQsCiAgKiBvZiBzY2FuIHBhdGhzIGZvciBpdHMgY2hpbGQgcmVscy4KICAq ICdwcnVuZXF1YWwnIGlzIGEgbGlzdCBvZiBwb3RlbnRpYWwgcHJ1bmluZyBxdWFscyAoaS5lLiwg cmVzdHJpY3Rpb24KICAqIGNsYXVzZXMgdGhhdCBhcmUgYXBwbGljYWJsZSB0byB0aGUgYXBwZW5k cmVsKS4KKyAqICdhbGxwYXJ0cmVsaWRzJyBjb250YWlucyBCaXRtYXBzZXRzIG9mIFJUIGluZGV4 ZXMgb2YgcGFydGl0aW9uZWQgcGFyZW50cworICogd2hvc2UgcGFydGl0aW9ucycgUGF0aHMgYXJl IGluICdzdWJwYXRocyc7IHRoZXJlJ3Mgb25lIEJpdG1hcHNldCBmb3IgZXZlcnkKKyAqIHBhcnRp dGlvbiB0cmVlIGludm9sdmVkLgogICovCiBQYXJ0aXRpb25QcnVuZUluZm8gKgogbWFrZV9wYXJ0 aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWws CiAJCQkJCQkgTGlzdCAqc3VicGF0aHMsCi0JCQkJCQkgTGlzdCAqcHJ1bmVxdWFsKQorCQkJCQkJ IExpc3QgKnBydW5lcXVhbCwKKwkJCQkJCSBMaXN0ICphbGxwYXJ0cmVsaWRzKQogewogCVBhcnRp dGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvOwogCUJpdG1hcHNldCAgKmFsbG1hdGNoZWRzdWJwbGFu cyA9IE5VTEw7Ci0JTGlzdAkgICAqYWxscGFydHJlbGlkczsKIAlMaXN0CSAgICpwcnVuZXJlbGlu Zm9zOwogCWludAkJICAgKnJlbGlkX3N1YnBsYW5fbWFwOwogCUxpc3RDZWxsICAgKmxjOwogCWlu dAkJCWk7CiAKKwlBc3NlcnQobGlzdF9sZW5ndGgoYWxscGFydHJlbGlkcykgPiAwKTsKKwogCS8q Ci0JICogU2NhbiB0aGUgc3VicGF0aHMgdG8gc2VlIHdoaWNoIG9uZXMgYXJlIHNjYW5zIG9mIHBh cnRpdGlvbiBjaGlsZAotCSAqIHJlbGF0aW9ucywgYW5kIGlkZW50aWZ5IHRoZWlyIHBhcmVudCBw YXJ0aXRpb25lZCByZWxzLiAgKE5vdGU6IHdlIG11c3QKLQkgKiByZXN0cmljdCB0aGUgcGFyZW50 IHBhcnRpdGlvbmVkIHJlbHMgdG8gYmUgcGFyZW50cmVsIG9yIGNoaWxkcmVuIG9mCi0JICogcGFy ZW50cmVsLCBvdGhlcndpc2Ugd2UgY291bGRuJ3QgdHJhbnNsYXRlIHBydW5lcXVhbCB0byBtYXRj aC4pCi0JICoKLQkgKiBBbHNvIGNvbnN0cnVjdCBhIHRlbXBvcmFyeSBhcnJheSB0byBtYXAgZnJv bSBwYXJ0aXRpb24tY2hpbGQtcmVsYXRpb24KLQkgKiByZWxpZCB0byB0aGUgaW5kZXggaW4gJ3N1 YnBhdGhzJyBvZiB0aGUgc2NhbiBwbGFuIGZvciB0aGF0IHBhcnRpdGlvbi4KKwkgKiBDb25zdHJ1 Y3QgYSB0ZW1wb3JhcnkgYXJyYXkgdG8gbWFwIGZyb20gcGFydGl0aW9uLWNoaWxkLXJlbGF0aW9u IHJlbGlkCisJICogdG8gdGhlIGluZGV4IGluICdzdWJwYXRocycgb2YgdGhlIHNjYW4gcGxhbiBm b3IgdGhhdCBwYXJ0aXRpb24uCiAJICogKFVzZSBvZiAic3VicGxhbiIgcmF0aGVyIHRoYW4gInN1 YnBhdGgiIGlzIGEgYml0IG9mIGEgbWlzbm9tZXIsIGJ1dAogCSAqIHdlJ2xsIGxldCBpdCBzdGFu ZC4pICBGb3IgY29udmVuaWVuY2UsIHdlIHVzZSAxLWJhc2VkIGluZGV4ZXMgaGVyZSwgc28KIAkg KiB0aGF0IHplcm8gY2FuIHJlcHJlc2VudCBhbiB1bi1maWxsZWQgYXJyYXkgZW50cnkuCiAJICov Ci0JYWxscGFydHJlbGlkcyA9IE5JTDsKIAlyZWxpZF9zdWJwbGFuX21hcCA9IHBhbGxvYzAoc2l6 ZW9mKGludCkgKiByb290LT5zaW1wbGVfcmVsX2FycmF5X3NpemUpOwogCiAJaSA9IDE7CkBAIC0y NTMsNTAgKzI1MSw5IEBAIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlQYXRoCSAgICpwYXRoID0gKFBhdGggKikgbGZp cnN0KGxjKTsKIAkJUmVsT3B0SW5mbyAqcGF0aHJlbCA9IHBhdGgtPnBhcmVudDsKIAotCQkvKiBX ZSBkb24ndCBjb25zaWRlciBwYXJ0aXRpb25lZCBqb2lucyBoZXJlICovCi0JCWlmIChwYXRocmVs LT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1CRVJfUkVMKQotCQl7Ci0JCQlSZWxPcHRJ bmZvICpwcmVsID0gcGF0aHJlbDsKLQkJCUJpdG1hcHNldCAgKnBhcnRyZWxpZHMgPSBOVUxMOwot Ci0JCQkvKgotCQkJICogVHJhdmVyc2UgdXAgdG8gdGhlIHBhdGhyZWwncyB0b3Btb3N0IHBhcnRp dGlvbmVkIHBhcmVudCwKLQkJCSAqIGNvbGxlY3RpbmcgcGFyZW50IHJlbGlkcyBhcyB3ZSBnbzsg YnV0IHN0b3AgaWYgd2UgcmVhY2gKLQkJCSAqIHBhcmVudHJlbC4gIChOb3JtYWxseSwgYSBwYXRo cmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQKLQkJCSAqIGlzIGVpdGhlciBwYXJlbnRy ZWwgb3IgYSBVTklPTiBBTEwgYXBwZW5kcmVsIGNoaWxkIG9mCi0JCQkgKiBwYXJlbnRyZWwuICBC dXQgd2hlbiBoYW5kbGluZyBwYXJ0aXRpb253aXNlIGpvaW5zIG9mCi0JCQkgKiBtdWx0aS1sZXZl bCBwYXJ0aXRpb25pbmcgdHJlZXMsIHdlIGNhbiBzZWUgYW4gYXBwZW5kIHBhdGggd2hvc2UKLQkJ CSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlhdGUgcGFydGl0aW9uZWQgdGFibGUuKQotCQkJ ICovCi0JCQlkbwotCQkJewotCQkJCUFwcGVuZFJlbEluZm8gKmFwcGluZm87Ci0KLQkJCQlBc3Nl cnQocHJlbC0+cmVsaWQgPCByb290LT5zaW1wbGVfcmVsX2FycmF5X3NpemUpOwotCQkJCWFwcGlu Zm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3ByZWwtPnJlbGlkXTsKLQkJCQlwcmVsID0gZmlu ZF9iYXNlX3JlbChyb290LCBhcHBpbmZvLT5wYXJlbnRfcmVsaWQpOwotCQkJCWlmICghSVNfUEFS VElUSU9ORURfUkVMKHByZWwpKQotCQkJCQlicmVhazsJCS8qIHJlYWNoZWQgYSBub24tcGFydGl0 aW9uZWQgcGFyZW50ICovCi0JCQkJLyogYWNjZXB0IHRoaXMgbGV2ZWwgYXMgYW4gaW50ZXJlc3Rp bmcgcGFyZW50ICovCi0JCQkJcGFydHJlbGlkcyA9IGJtc19hZGRfbWVtYmVyKHBhcnRyZWxpZHMs IHByZWwtPnJlbGlkKTsKLQkJCQlpZiAocHJlbCA9PSBwYXJlbnRyZWwpCi0JCQkJCWJyZWFrOwkJ LyogZG9uJ3QgdHJhdmVyc2UgYWJvdmUgcGFyZW50cmVsICovCi0JCQl9IHdoaWxlIChwcmVsLT5y ZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1CRVJfUkVMKTsKLQotCQkJaWYgKHBhcnRyZWxp ZHMpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBGb3VuZCBzb21lIHJlbGV2YW50IHBhcmVudCBwYXJ0 aXRpb25zLCB3aGljaCBtYXkgb3IgbWF5IG5vdAotCQkJCSAqIG92ZXJsYXAgd2l0aCBwYXJ0aXRp b24gdHJlZXMgd2UgYWxyZWFkeSBmb3VuZC4gIEFkZCBuZXcKLQkJCQkgKiBpbmZvcm1hdGlvbiB0 byB0aGUgYWxscGFydHJlbGlkcyBsaXN0LgotCQkJCSAqLwotCQkJCWFsbHBhcnRyZWxpZHMgPSBh ZGRfcGFydF9yZWxpZHMoYWxscGFydHJlbGlkcywgcGFydHJlbGlkcyk7Ci0JCQkJLyogQWxzbyBy ZWNvcmQgdGhlIHN1YnBsYW4gaW4gcmVsaWRfc3VicGxhbl9tYXBbXSAqLwotCQkJCS8qIE5vIGR1 cGxpY2F0ZXMgcGxlYXNlICovCi0JCQkJQXNzZXJ0KHJlbGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwt PnJlbGlkXSA9PSAwKTsKLQkJCQlyZWxpZF9zdWJwbGFuX21hcFtwYXRocmVsLT5yZWxpZF0gPSBp OwotCQkJfQotCQl9CisJCS8qIE5vIGR1cGxpY2F0ZXMgcGxlYXNlICovCisJCUFzc2VydChyZWxp ZF9zdWJwbGFuX21hcFtwYXRocmVsLT5yZWxpZF0gPT0gMCk7CisJCXJlbGlkX3N1YnBsYW5fbWFw W3BhdGhyZWwtPnJlbGlkXSA9IGk7CiAJCWkrKzsKIAl9CiAKQEAgLTM2Miw2MyArMzE5LDYgQEAg bWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpw YXJlbnRyZWwsCiAJcmV0dXJuIHBydW5laW5mbzsKIH0KIAotLyoKLSAqIGFkZF9wYXJ0X3JlbGlk cwotICoJCUFkZCBuZXcgaW5mbyB0byBhIGxpc3Qgb2YgQml0bWFwc2V0cyBvZiBwYXJ0aXRpb25l ZCByZWxpZHMuCi0gKgotICogV2l0aGluICdhbGxwYXJ0cmVsaWRzJywgdGhlcmUgaXMgb25lIEJp dG1hcHNldCBmb3IgZWFjaCB0b3Btb3N0IHBhcmVudAotICogcGFydGl0aW9uZWQgcmVsLiAgRWFj aCBCaXRtYXBzZXQgY29udGFpbnMgdGhlIFJUIGluZGV4ZXMgb2YgdGhlIHRvcG1vc3QKLSAqIHBh cmVudCBhcyB3ZWxsIGFzIGl0cyByZWxldmFudCBub24tbGVhZiBjaGlsZCBwYXJ0aXRpb25zLiAg U2luY2UgKGJ5Ci0gKiBjb25zdHJ1Y3Rpb24gb2YgdGhlIHJhbmdldGFibGUgbGlzdCkgcGFyZW50 IHBhcnRpdGlvbnMgbXVzdCBoYXZlIGxvd2VyCi0gKiBSVCBpbmRleGVzIHRoYW4gdGhlaXIgY2hp bGRyZW4sIHdlIGNhbiBkaXN0aW5ndWlzaCB0aGUgdG9wbW9zdCBwYXJlbnQKLSAqIGFzIGJlaW5n IHRoZSBsb3dlc3Qgc2V0IGJpdCBpbiB0aGUgQml0bWFwc2V0LgotICoKLSAqICdwYXJ0cmVsaWRz JyBjb250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiBhIHBhcmVudCBwYXJ0aXRpb25lZCByZWwsIGFu ZAotICogcG9zc2libHkgc29tZSBub24tbGVhZiBjaGlsZHJlbiwgdGhhdCBhcmUgbmV3bHkgaWRl bnRpZmllZCBhcyBwYXJlbnRzIG9mCi0gKiBzb21lIHN1YnBhdGggcmVsIHBhc3NlZCB0byBtYWtl X3BhcnRpdGlvbl9wcnVuZWluZm8oKS4gIFRoZXNlIGFyZSBhZGRlZAotICogdG8gYW4gYXBwcm9w cmlhdGUgbWVtYmVyIG9mICdhbGxwYXJ0cmVsaWRzJy4KLSAqCi0gKiBOb3RlIHRoYXQgdGhlIGxp c3QgY29udGFpbnMgb25seSBSVCBpbmRleGVzIG9mIHBhcnRpdGlvbmVkIHRhYmxlcyB0aGF0Ci0g KiBhcmUgcGFyZW50cyBvZiBzb21lIHNjYW4tbGV2ZWwgcmVsYXRpb24gYXBwZWFyaW5nIGluIHRo ZSAnc3VicGF0aHMnIHRoYXQKLSAqIG1ha2VfcGFydGl0aW9uX3BydW5laW5mbygpIGlzIGRlYWxp bmcgd2l0aC4gIEFsc28sICJ0b3Btb3N0IiBwYXJlbnRzIGFyZQotICogbm90IGFsbG93ZWQgdG8g YmUgaGlnaGVyIHRoYW4gdGhlICdwYXJlbnRyZWwnIGFzc29jaWF0ZWQgd2l0aCB0aGUgYXBwZW5k Ci0gKiBwYXRoLiAgSW4gdGhpcyB3YXksIHdlIGF2b2lkIGV4cGVuZGluZyBjeWNsZXMgb24gcGFy dGl0aW9uZWQgcmVscyB0aGF0Ci0gKiBjYW4ndCBjb250cmlidXRlIHVzZWZ1bCBwcnVuaW5nIGlu Zm9ybWF0aW9uIGZvciB0aGUgcHJvYmxlbSBhdCBoYW5kLgotICogKEl0IGlzIHBvc3NpYmxlIGZv ciAncGFyZW50cmVsJyB0byBiZSBhIGNoaWxkIHBhcnRpdGlvbmVkIHRhYmxlLCBhbmQgaXQKLSAq IGlzIGFsc28gcG9zc2libGUgZm9yIHNjYW4tbGV2ZWwgcmVsYXRpb25zIHRvIGJlIGNoaWxkIHBh cnRpdGlvbmVkIHRhYmxlcwotICogcmF0aGVyIHRoYW4gbGVhZiBwYXJ0aXRpb25zLiAgSGVuY2Ug d2UgbXVzdCBjb25zdHJ1Y3QgdGhpcyByZWxhdGlvbiBzZXQKLSAqIHdpdGggcmVmZXJlbmNlIHRv IHRoZSBwYXJ0aWN1bGFyIGFwcGVuZCBwYXRoIHdlJ3JlIGRlYWxpbmcgd2l0aCwgcmF0aGVyCi0g KiB0aGFuIGxvb2tpbmcgYXQgdGhlIGZ1bGwgcGFydGl0aW9uaW5nIHN0cnVjdHVyZSByZXByZXNl bnRlZCBpbiB0aGUKLSAqIFJlbE9wdEluZm9zLikKLSAqLwotc3RhdGljIExpc3QgKgotYWRkX3Bh cnRfcmVsaWRzKExpc3QgKmFsbHBhcnRyZWxpZHMsIEJpdG1hcHNldCAqcGFydHJlbGlkcykKLXsK LQlJbmRleAkJdGFyZ2V0cGFydDsKLQlMaXN0Q2VsbCAgICpsYzsKLQotCS8qIFdlIGNhbiBlYXNp bHkgZ2V0IHRoZSBsb3dlc3Qgc2V0IGJpdCB0aGlzIHdheTogKi8KLQl0YXJnZXRwYXJ0ID0gYm1z X25leHRfbWVtYmVyKHBhcnRyZWxpZHMsIC0xKTsKLQlBc3NlcnQodGFyZ2V0cGFydCA+IDApOwot Ci0JLyogTG9vayBmb3IgYSBtYXRjaGluZyB0b3Btb3N0IHBhcmVudCAqLwotCWZvcmVhY2gobGMs IGFsbHBhcnRyZWxpZHMpCi0JewotCQlCaXRtYXBzZXQgICpjdXJycGFydHJlbGlkcyA9IChCaXRt YXBzZXQgKikgbGZpcnN0KGxjKTsKLQkJSW5kZXgJCWN1cnJ0YXJnZXQgPSBibXNfbmV4dF9tZW1i ZXIoY3VycnBhcnRyZWxpZHMsIC0xKTsKLQotCQlpZiAodGFyZ2V0cGFydCA9PSBjdXJydGFyZ2V0 KQotCQl7Ci0JCQkvKiBGb3VuZCBhIG1hdGNoLCBzbyBhZGQgYW55IG5ldyBSVCBpbmRleGVzIHRv IHRoaXMgaGllcmFyY2h5ICovCi0JCQljdXJycGFydHJlbGlkcyA9IGJtc19hZGRfbWVtYmVycyhj dXJycGFydHJlbGlkcywgcGFydHJlbGlkcyk7Ci0JCQlsZmlyc3QobGMpID0gY3VycnBhcnRyZWxp ZHM7Ci0JCQlyZXR1cm4gYWxscGFydHJlbGlkczsKLQkJfQotCX0KLQkvKiBObyBtYXRjaCwgc28g YWRkIHRoZSBuZXcgcGFydGl0aW9uIGhpZXJhcmNoeSB0byB0aGUgbGlzdCAqLwotCXJldHVybiBs YXBwZW5kKGFsbHBhcnRyZWxpZHMsIHBhcnRyZWxpZHMpOwotfQotCiAvKgogICogbWFrZV9wYXJ0 aXRpb25lZHJlbF9wcnVuZWluZm8KICAqCQlCdWlsZCBhIExpc3Qgb2YgUGFydGl0aW9uZWRSZWxQ cnVuZUluZm9zLCBvbmUgZm9yIGVhY2ggaW50ZXJlc3RpbmcKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5k ZXggMWI3ODdmZTAzMS4uN2E1ZjNiYTYyNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTI2Nyw2 ICsyNjcsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5kCiAJTGlzdAkgICAqYXBwZW5kcGxhbnM7 CiAJaW50CQkJbmFzeW5jcGxhbnM7CS8qICMgb2YgYXN5bmNocm9ub3VzIHBsYW5zICovCiAKKwkv KgorCSAqIFJUSXMgb2YgYWxsIHBhcnRpdGlvbmVkIHRhYmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUg c2Nhbm5lZCBieQorCSAqIGFwcGVuZHBsYW5zLiBUaGUgbGlzdCBjb250YWlucyBhIGJpdG1hcHNl dCBmb3IgZXZlcnkgcGFydGl0aW9uIHRyZWUKKwkgKiBjb3ZlcmVkIGJ5IHRoaXMgQXBwZW5kLgor CSAqLworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHM7CisKIAkvKgogCSAqIEFsbCAnYXBwZW5kcGxh bnMnIHByZWNlZGluZyB0aGlzIGluZGV4IGFyZSBub24tcGFydGlhbCBwbGFucy4gQWxsCiAJICog J2FwcGVuZHBsYW5zJyBmcm9tIHRoaXMgaW5kZXggb253YXJkcyBhcmUgcGFydGlhbCBwbGFucy4K QEAgLTI5MSw2ICsyOTgsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgTWVyZ2VBcHBlbmQKIAogCUxpc3QJ ICAgKm1lcmdlcGxhbnM7CiAKKwkvKgorCSAqIFJUSXMgb2YgYWxsIHBhcnRpdGlvbmVkIHRhYmxl cyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieQorCSAqIG1lcmdlcGxhbnMuIFRoZSBsaXN0 IGNvbnRhaW5zIGEgYml0bWFwc2V0IGZvciBldmVyeSBwYXJ0aXRpb24gdHJlZQorCSAqIGNvdmVy ZWQgYnkgdGhpcyBNZXJnZUFwcGVuZC4KKwkgKi8KKwlMaXN0CSAgICphbGxwYXJ0cmVsaWRzOwor CiAJLyogdGhlc2UgZmllbGRzIGFyZSBqdXN0IGxpa2UgdGhlIHNvcnQta2V5IGluZm8gaW4gc3Ry dWN0IFNvcnQ6ICovCiAKIAkvKiBudW1iZXIgb2Ygc29ydC1rZXkgY29sdW1ucyAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVuZGluZm8uaCBiL3NyYy9pbmNsdWRlL29w dGltaXplci9hcHBlbmRpbmZvLmgKaW5kZXggYTA1ZjkxZjc3ZC4uMTYyMWE3MzE5YSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVuZGluZm8uaAorKysgYi9zcmMvaW5jbHVk ZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oCkBAIC00Niw1ICs0Niw4IEBAIGV4dGVybiB2b2lkIGFk ZF9yb3dfaWRlbnRpdHlfY29sdW1ucyhQbGFubmVySW5mbyAqcm9vdCwgSW5kZXggcnRpbmRleCwK IAkJCQkJCQkJCSBSYW5nZVRibEVudHJ5ICp0YXJnZXRfcnRlLAogCQkJCQkJCQkJIFJlbGF0aW9u IHRhcmdldF9yZWxhdGlvbik7CiBleHRlcm4gdm9pZCBkaXN0cmlidXRlX3Jvd19pZGVudGl0eV92 YXJzKFBsYW5uZXJJbmZvICpyb290KTsKK2V4dGVybiBMaXN0ICphZGRfYXBwZW5kX3N1YnBhdGhf cGFydHJlbGlkcyhQbGFubmVySW5mbyAqcm9vdCwgUGF0aCAqc3VicGF0aCwKKwkJCQkJCQkgIFJl bE9wdEluZm8gKnBhcmVudHJlbCwKKwkJCQkJCQkgIExpc3QgKmFsbHBhcnRyZWxpZHMpOwogCiAj ZW5kaWYJCQkJCQkJLyogQVBQRU5ESU5GT19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9w YXJ0aXRpb25pbmcvcGFydHBydW5lLmggYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBy dW5lLmgKaW5kZXggODYzNmUwNGUzNy4uY2FhNzc0YTExMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmlu Zy9wYXJ0cHJ1bmUuaApAQCAtNzMsNyArNzMsOCBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25Q cnVuZUNvbnRleHQKIGV4dGVybiBQYXJ0aXRpb25QcnVuZUluZm8gKm1ha2VfcGFydGl0aW9uX3By dW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkJc3RydWN0IFJl bE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJCQkJCQlMaXN0ICpzdWJwYXRocywKLQkJCQkJ CQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOworCQkJCQkJCQkJCQkJCUxpc3QgKnBydW5lcXVhbCwK KwkJCQkJCQkJCQkJCQlMaXN0ICphbGxwYXJ0cmVsaWRzKTsKIGV4dGVybiBCaXRtYXBzZXQgKnBy dW5lX2FwcGVuZF9yZWxfcGFydGl0aW9ucyhzdHJ1Y3QgUmVsT3B0SW5mbyAqcmVsKTsKIGV4dGVy biBCaXRtYXBzZXQgKmdldF9tYXRjaGluZ19wYXJ0aXRpb25zKFBhcnRpdGlvblBydW5lQ29udGV4 dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIExpc3QgKnBydW5pbmdfc3RlcHMpOwotLSAKMi4zNS4z Cgo= --0000000000008e02d005fd9eff71 Content-Type: application/octet-stream; name="v39-0003-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Disposition: attachment; filename="v39-0003-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lin7vcrn1 RnJvbSA1YTkxYzIzM2M2YmQwYzY2ZGIzNmI0MWE0YzMwMDVhNmYzYTkxMGJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbWl0bGFuIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyMCBKYW4gMjAyMyAxNjo1MjozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjM5IDMv NF0gRGVsYXkgbG9ja2luZyBvZiBjaGlsZCB0YWJsZXMgaW4gY2FjaGVkIHBsYW5zIHVudGlsCiBF eGVjdXRvclN0YXJ0KCkKCkN1cnJlbnRseSwgR2V0Q2FjaGVkUGxhbigpIHRha2VzIGxvY2tzIG9u IGFsbCByZWxhdGlvbnMgY29udGFpbmVkIGluCmEgY2FjaGVkIHBsYW4gYmVmb3JlIHJldHVybmlu ZyBpdCBhcyBhIHZhbGlkIHBsYW4gdG8gaXRzIGNhbGxlcnMgZm9yCmV4ZWN1dGlvbi4gIE9uZSBk aXNhZHZhbnRhZ2UgaXMgdGhhdCBpZiB0aGUgcGxhbiBjb250YWlucyBwYXJ0aXRpb25zCnRoYXQg YXJlIHBydW5hYmxlIHdpdGggY29uZGl0aW9ucyBpbnZvbHZpbmcgRVhURVJOIHBhcmFtZXRlcnMs IG1hbnkKb2YgdGhlbSB3b3VsZCBiZSBsb2NrZWQgdW5uZWNlc3NhcmlseSwgYmVjYXVzZSBvbmx5 IHRob3NlIHRoYXQKc3Vydml2ZSB0aGUgcHJ1bmluZyBuZWVkIHRvIGhhdmUgYmVlbiBsb2NrZWQu ICBMb2NraW5nIGFsbCBwYXJ0aXRpb25zCnRoaXMgd2F5IGNhdXNlcyBzaWduaWZpY2FudCBkZWxh eSB3aGVuIHRoZXJlIGFyZSBtYW55IHBhcnRpdGlvbnMuCgpUaGlzIGNvbW1pdCByZWFycmFuZ2Vz IHRoaW5ncyBzbyB0aGF0IHRoZSBjaGlsZCB0YWJsZXMgYXJlIG5vdyBsb2NrZWQKZHVyaW5nIHRo ZSBFeGVjSW5pdE5vZGUoKSBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGxhbiB0cmVlIGluIGEKQ2Fj aGVkUGxhbi4gIElmIHRoZSBsb2NraW5nIG9mIGNoaWxkIHRhYmxlcyBjYXVzZXMgdGhlIENhY2hl ZFBsYW4KdG8gZ28gc3RhbGUgKHRoYXQgaXMsIGl0cyBpc192YWxpZCBzZXQgdG8gZmFsc2UgYnkK UGxhbkNhY2hlUmVsQ2FsbGJhY2soKSB3aGVuIGFuIGludmFsaWRhdGlvbiBtZXNzYWdlIG1hdGNo aW5nIHNvbWUKY2hpbGQgdGFibGUgY29udGFpbmVkIGluIHRoZSBwbGFuIGlzIHByb2Nlc3NlZCks IHRoZSBleGVjdXRvciBhYmFuZG9ucwpmdXJ0aGVyIGV4ZWN1dGlvbiB3aXRoIGl0IGFuZCBhc2tz IHRoZSBjYWxsZXIgdG8gcmV0cnkgd2l0aCBhIG5ldyBvbmUuCgpXaGVuIGEgQ2FjaGVkUGxhbiBp cyBmb3VuZCB0byBoYXZlIGdvbmUgc3RhbGUgYXMgZGVzY3JpYmVkIGFib3ZlLApRdWVyeURlc2Mu cGxhbnN0YXRlIGlzIHNldCB0byBOVUxMLCBpbmRpY2F0aW5nIHRoYXQgbm8gZXhlY3V0aW9uIGlz CnBvc3NpYmxlIHdpdGggdGhlIHBsYW4gdHJlZSBhcyBpcy4gIFRob3VnaCBzb21lIHBsYW4gdHJl ZSBzdWJub2RlcwptYXkgZ2V0IGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSB0aGUgQ2FjaGVkUGxh bidzIHN0YWxlbmVzcyBpcwpkZXRlY3RlZCwgc28gdG8gZW5zdXJlIHRoYXQgdGhleSBhcmUgcmVs ZWFzZWQgYnkgRXhlY0VuZFBsYW4oKSwKRXhlY0luaXROb2RlKCkgbm93IGFkZHMgc3VjY2Vzc2Z1 bGx5IGluaXRpYWxpemVkIG5vZGVzIGEgbmV3IExpc3QKaW4gRVN0YXRlIGNhbGxlZCBlc19pbml0 ZWRfcGxhbm5vZGVzLiAgRXhlY0VuZFBsYW4oKSByZWxlYXNlcyB0aGVtCmluZGl2aWR1YWxseSBi eSBjYWxsaW5nIEV4ZWNFbmROb2RlKCkgb24gZWFjaC4gIEV4ZWNFbmROb2RlKCkgaXMKbm8gbG9u Z2VyIHJlY3Vyc2l2ZSwgYmVjYXVzZSBhbGwgbm9kZXMgdGhhdCBuZWVkIHRvIGJlIGNsb3NlZCBh cmUKZm91bmQgYnkgaW50ZXJhdGluZyBlc19pbml0ZWRfcGxhbm5vZGVzLgoKVGhpcyBjb21taXQg aW50cm9kdWNlcyBhIG5ldyBleGVjdXRvciBmbGFnIEVYRUNfRkxBR19HRVRfTE9DS1MgdGhhdApz aG91bGQgYmUgYWRkZWQgaW50byBlZmxhZ3MgdG8gaW5kaWNhdGUgdGhhdApFeGVjR2V0UmFuZ2VU YWJsZVJlbGF0aW9uKCkgdGFrZSBhIGxvY2sgb24gdGhlIHRhYmxlLiAgSXQgaXMgb25seQpzZXQg d2hlbiBpbiBFeGVjSW5pdFtNZXJnZV1BcHBlbmQoKSBnaXZlbiB0aGF0IGNoaWxkIHRhYmxlcyBv ciBwbGFuCnN1Ym5vZGVzIHRvIHNjYW4gdGhlbSBub3JtYWxseSBhcHBlYXIgdW5kZXIgQXBwZW5k L01lcmdlQXBwZW5kLgpUaG9zZSB0aGF0IGRvbid0IGFyZSBsb2NrZWQgZGlyZWN0bHkgaW4gSW5p dFBsYW4oKSB1c2luZyB0aGVpciBSVAppbmRleGVzIGZvdW5kIGluIFBsYW5uZWRTdG10LmVsaWRl ZEFwcGVuZENoaWxkUmVsYXRpb25zLgoKQ2FsbCBzaXRlcyB0aGF0IHVzZSBwbGFuY2FjaGUgKEdl dENhY2hlZFBsYW4pIHRvIGdldCB0aGUgcGxhbiB0cmVlcwp0byBwYXNzIHRvIHRoZSBleGVjdXRv ciBmb3IgZXhlY3V0aW9uIHNob3VsZCBub3cgYmUgcHJlcGFyZWQgdG8KaGFuZGxlIHRoZSBjYXNl IHRoYXQgdGhlIHBsYW4gdHJlZSBtYXkgYmUgZmxhZ2dlZCBieSB0aGUgZXhlY3V0b3IgYXMKc3Rh bGUgYXMgZGVzY3JpYmVkIGFib3ZlLiAgVG8gdGhhdCBlbmQsIHRoaXMgY29tbWl0IHJlZmFjdG9y cyB0aGUKcmVsZXZhbnQgY29kZSBzaXRlcyB0byBtb3ZlIHRoZSBFeGVjdXRvclN0YXJ0KCkgY2Fs bCAgY2xvc2VyIHRvIHRoZQpHZXRDYWNoZWRQbGFuKCkgdG8gaW1wbGVtZW50IHRoZSByZXBsYW4g bG9vcCBjb252ZW5pZW50bHkuCgpQb3J0YWxTdGFydCgpIG5vdyBwZXJmb3JtcyBDcmVhdGVRdWVy eURlc2MoKSBhbmQgRXhlY3V0b3JTdGFydCgpIGZvcgphbGwgcG9ydGFsIHN0cmF0ZWdpZXMsIGlu Y2x1ZGluZyB0aG9zZSBwZXJ0YWluaW5nIHRvIG11bHRpcGxlIHF1ZXJpZXMuClRoZSBRdWVyeURl c2NzIGZvciBzdHJhdGVnaWVzIGhhbmRsZWQgYnkgUG9ydGFsUnVuTXVsdGkoKSBhcmUKcmVtZW1i ZXJlZCBpbiB0aGUgUG9ydGFsIGluIGEgbmV3IExpc3QgZmllbGQgJ3FkZXNjcycsIGFsbG9jYXRl ZCBpbiBhCm5ldyBtZW1vcnkgY29udGV4dCAncXVlcnlDb250ZXh0Jy4gIFRoaXMgbmV3IGFycmFu Z21lbnQgaXMgdG8gbWFrZSBpdAplYXNpZXIgdG8gZGlzY2FyZCBhbmQgcmVjcmVhdGUgYSBQb3J0 YWwgaWYgdGhlIENhY2hlZFBsYW4gZ29lcyBzdGFsZQpkdXJpbmcgc2V0dXAuCi0tLQogY29udHJp Yi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHl0by5jICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tl bmQvY29tbWFuZHMvY3JlYXRlYXMuYyAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAxNDYgKysrKysrLS0tCiBzcmMv YmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvbWF0dmlldy5jICAgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMgICAgICAgICAgICAgfCAgMTYgKy0KIHNyYy9iYWNr ZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAgICAgICAgICAgICAgICB8ICAzMiArLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgMTE2ICsrKysrLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jICAgICAgICAgICB8ICAgOSArLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgICAgICAgIHwgIDE0ICsKIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jICAgICAgICAgICB8ICA1MCArKy0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICAgICAgICB8ICA2NSArKystCiBzcmMvYmFj a2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUFnZy5jICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgICAgICAgICAgICAgfCAgNTQgKystLQogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEFuZC5jICAgICAgICAgIHwgIDMxICstCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYyAgICAgfCAgIDkgKy0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMgICAgICAgICAgIHwgIDMxICstCiBzcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQ3VzdG9tLmMgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9leGVj dXRvci9ub2RlR2F0aGVyLmMgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVHYXRoZXJNZXJnZS5jICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUdyb3VwLmMgICAgICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSGFzaC5jICAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVIYXNoam9pbi5jICAgICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluY3JlbWVudGFsU29ydC5jICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSW5kZXhvbmx5c2Nhbi5jICAgICAgfCAgMTEgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmRleHNjYW4uYyAgICAgICAgICB8ICAxMSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUxpbWl0LmMgICAgICAgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TG9ja1Jvd3MuYyAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVN YXRlcmlhbC5jICAgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l bW9pemUuYyAgICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVy Z2VBcHBlbmQuYyAgICAgICAgfCAgNTMgKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVy Z2Vqb2luLmMgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2Rp ZnlUYWJsZS5jICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rs b29wLmMgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVj dFNldC5jICAgICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNp dmV1bmlvbi5jICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5j ICAgICAgICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nh bi5jICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAg ICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXRPcC5jICAgICAg ICAgICAgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyAgICAgICAg ICAgICAgIHwgICA3ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMg ICAgICAgfCAgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyAg ICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jICAgICAgICAg ICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jICAgICAgICAgICAg IHwgICA0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgICAgICAgICAg fCAgIDYgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jICAgICAgICAgICAgICAgICAgICB8 ICA0OSArKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMgICAgICAgICAgICAgICB8 ICA0NSArKysKIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8 ICAxMyArLQogc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyAgICAgICAgICAgICAgICAgICAgIHwg MzA1ICsrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hl LmMgICAgICAgICAgIHwgIDIxICsrCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUu YyAgICAgICAgICAgfCAxNDkgKysrLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRh bG1lbS5jICAgICAgICAgICAgfCAgIDkgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5o ICAgICAgICAgICAgICAgIHwgICA3ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5o ICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAg ICAgICAgICAgICAgIHwgIDIxICsrCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAg ICAgICAgICAgICAgfCAgIDYgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggICAgICAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oICAgICAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAgICAgICAg ICAgICAgfCAgMTQgKwogc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmggICAgICAgICAgICAgICAg ICAgIHwgICA0ICsKIHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlICAg ICB8ICAgMyArLQogLi4uL21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5j IHwgIDYzICsrKy0KIC4uLi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0ICAgICAgICAg ICB8IDE1NiArKysrKysrKysKIC4uLi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYyAgICAg ICAgICAgICB8ICA2MSArKysrCiA2OSBmaWxlcyBjaGFuZ2VkLCAxMjE4IGluc2VydGlvbnMoKyks IDU1OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2Rl bGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0CiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBs YW4tcmVwbGFuLnNwZWMKCmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jl c19mZHcuYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCmluZGV4IGM1Y2Fk YTU1ZmIuLjFlZGQ0YzNmMTcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3Rn cmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC0y NjU4LDcgKzI2NTgsMTEgQEAgcG9zdGdyZXNCZWdpbkRpcmVjdE1vZGlmeShGb3JlaWduU2NhblN0 YXRlICpub2RlLCBpbnQgZWZsYWdzKQogCS8qIEdldCBpbmZvIGFib3V0IGZvcmVpZ24gdGFibGUu ICovCiAJcnRpbmRleCA9IG5vZGUtPnJlc3VsdFJlbEluZm8tPnJpX1JhbmdlVGFibGVJbmRleDsK IAlpZiAoZnNwbGFuLT5zY2FuLnNjYW5yZWxpZCA9PSAwKQorCXsKIAkJZG1zdGF0ZS0+cmVsID0g RXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBydGluZGV4LCBlZmxhZ3MpOworCQlpZiAoIUV4 ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuOworCX0KIAllbHNlCiAJCWRtc3Rh dGUtPnJlbCA9IG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbjsKIAl0YWJsZSA9IEdldEZvcmVp Z25UYWJsZShSZWxhdGlvbkdldFJlbGlkKGRtc3RhdGUtPnJlbCkpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8u YwppbmRleCA5ZTRiMjQzN2E1Li44MjQ0MTk0NjgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAt NTU4LDcgKzU1OCw4IEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJKChEUl9j b3B5ICopIGRlc3QpLT5jc3RhdGUgPSBjc3RhdGU7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNj IHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICovCi0JCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3JlYXRlUXVl cnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQljc3RhdGUtPnF1ZXJ5RGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLAorCQkJCQkJCQkJCQlwc3RhdGUtPnBfc291cmNl dGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxp ZFNuYXBzaG90LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKQEAgLTU2OSw2ICs1 NzAsNyBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCSAqIEV4ZWN1dG9yU3Rh cnQgY29tcHV0ZXMgYSByZXN1bHQgdHVwZGVzYyBmb3IgdXMKIAkJICovCiAJCUV4ZWN1dG9yU3Rh cnQoY3N0YXRlLT5xdWVyeURlc2MsIDApOworCQlBc3NlcnQoY3N0YXRlLT5xdWVyeURlc2MtPnBs YW5fdmFsaWQpOwogCiAJCXR1cERlc2MgPSBjc3RhdGUtPnF1ZXJ5RGVzYy0+dHVwRGVzYzsKIAl9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvY3JlYXRlYXMuYwppbmRleCBlOTE5MjBjYTE0Li4xOGIwN2MwMjAwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NyZWF0ZWFzLmMKQEAgLTMyNSw3ICszMjUsNyBAQCBFeGVjQ3JlYXRlVGFibGVB cyhQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRhdGVB Y3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVk aXJlY3Rpbmcgb3V0cHV0IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2MgPSBD cmVhdGVRdWVyeURlc2MocGxhbiwgcHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJ CQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCWRlc3Qs IHBhcmFtcywgcXVlcnlFbnYsIDApOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggMTVmOWJk ZGNkZi4uOTE2MzJkODNlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFp bi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMzkzLDYgKzM5Myw3 IEBAIEV4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCWVs c2UKIAl7CiAJCVBsYW5uZWRTdG10ICpwbGFuOworCQlRdWVyeURlc2MgICAqcXVlcnlEZXNjOwog CQlpbnN0cl90aW1lCXBsYW5zdGFydCwKIAkJCQkJcGxhbmR1cmF0aW9uOwogCQlCdWZmZXJVc2Fn ZSBidWZ1c2FnZV9zdGFydCwKQEAgLTQxNSwxMiArNDE2LDkxIEBAIEV4cGxhaW5PbmVRdWVyeShR dWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYo JmJ1ZnVzYWdlLCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKIAkJfQogCisJCXF1 ZXJ5RGVzYyA9IEV4cGxhaW5RdWVyeURlc2MocGxhbiwgTlVMTCwgcXVlcnlTdHJpbmcsIGludG8s IGVzLAorCQkJCQkJCQkJIHBhcmFtcywgcXVlcnlFbnYpOworCQlBc3NlcnQocXVlcnlEZXNjKTsK KwogCQkvKiBydW4gaXQgKGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCi0JCUV4cGxh aW5PbmVQbGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwK KwkJRXhwbGFpbk9uZVBsYW4ocXVlcnlEZXNjLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFt cywgcXVlcnlFbnYsCiAJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1 c2FnZSA6IE5VTEwpKTsKIAl9CiB9CiAKKy8qCisgKiBFeHBsYWluUXVlcnlEZXNjCisgKgkJU2V0 IHVwIFF1ZXJ5RGVzYyBmb3IgRVhQTEFJTmluZyBhIGdpdmVuIHBsYW4KKyAqCisgKiBUaGlzIHJl dHVybnMgTlVMTCBpZiBjcGxhbiBpcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQgc2lu Y2UgaXRzCisgKiBjcmVhdGlvbi4KKyAqLworUXVlcnlEZXNjICoKK0V4cGxhaW5RdWVyeURlc2Mo UGxhbm5lZFN0bXQgKnN0bXQsIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCSBjb25zdCBjaGFyICpx dWVyeVN0cmluZywgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKKwkJCQkgUGFy YW1MaXN0SW5mbyBwYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQoreworCVF1ZXJ5 RGVzYyAgKnF1ZXJ5RGVzYzsKKwlEZXN0UmVjZWl2ZXIgKmRlc3Q7CisJaW50CQkJZWZsYWdzOwor CWludAkJCWluc3RydW1lbnRfb3B0aW9uID0gMDsKKworCS8qCisJICogTm9ybWFsbHkgd2UgZGlz Y2FyZCB0aGUgcXVlcnkncyBvdXRwdXQsIGJ1dCBpZiBleHBsYWluaW5nIENSRUFURSBUQUJMRQor CSAqIEFTLCB3ZSdkIGJldHRlciB1c2UgdGhlIGFwcHJvcHJpYXRlIHR1cGxlIHJlY2VpdmVyLgor CSAqLworCWlmIChpbnRvKQorCQlkZXN0ID0gQ3JlYXRlSW50b1JlbERlc3RSZWNlaXZlcihpbnRv KTsKKwllbHNlCisJCWRlc3QgPSBOb25lX1JlY2VpdmVyOworCisJaWYgKGVzLT5hbmFseXplICYm IGVzLT50aW1pbmcpCisJCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfVElNRVI7CisJ ZWxzZSBpZiAoZXMtPmFuYWx5emUpCisJCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRf Uk9XUzsKKworCWlmIChlcy0+YnVmZmVycykKKwkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJV TUVOVF9CVUZGRVJTOworCWlmIChlcy0+d2FsKQorCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNU UlVNRU5UX1dBTDsKKworCS8qCisJICogVXNlIGEgc25hcHNob3Qgd2l0aCBhbiB1cGRhdGVkIGNv bW1hbmQgSUQgdG8gZW5zdXJlIHRoaXMgcXVlcnkgc2VlcworCSAqIHJlc3VsdHMgb2YgYW55IHBy ZXZpb3VzbHkgZXhlY3V0ZWQgcXVlcmllcy4KKwkgKi8KKwlQdXNoQ29waWVkU25hcHNob3QoR2V0 QWN0aXZlU25hcHNob3QoKSk7CisJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKKwor CS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5ICovCisJcXVlcnlEZXNjID0gQ3Jl YXRlUXVlcnlEZXNjKHN0bXQsIGNwbGFuLCBxdWVyeVN0cmluZywKKwkJCQkJCQkJR2V0QWN0aXZl U25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAorCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5 RW52LCBpbnN0cnVtZW50X29wdGlvbik7CisKKwkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMg Ki8KKwlpZiAoZXMtPmFuYWx5emUpCisJCWVmbGFncyA9IDA7CQkJCS8qIGRlZmF1bHQgcnVuLXRv LWNvbXBsZXRpb24gZmxhZ3MgKi8KKwllbHNlCisJCWVmbGFncyA9IEVYRUNfRkxBR19FWFBMQUlO X09OTFk7CisJaWYgKGVzLT5nZW5lcmljKQorCQllZmxhZ3MgfD0gRVhFQ19GTEFHX0VYUExBSU5f R0VORVJJQzsKKwlpZiAoaW50bykKKwkJZWZsYWdzIHw9IEdldEludG9SZWxFRmxhZ3MoaW50byk7 CisKKwkvKgorCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBl eGVjdXRpb24uICBBIGNhY2hlZCBwbGFuCisJICogbWF5IGdldCBpbnZhbGlkYXRlZCBhcyB3ZSdy ZSBkb2luZyB0aGF0LgorCSAqLworCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwor CWlmICghcXVlcnlEZXNjLT5wbGFuX3ZhbGlkKQorCXsKKwkJLyogQ2xlYW4gdXAuICovCisJCUV4 ZWN1dG9yRW5kKHF1ZXJ5RGVzYyk7CisJCUZyZWVRdWVyeURlc2MocXVlcnlEZXNjKTsKKwkJUG9w QWN0aXZlU25hcHNob3QoKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJcmV0dXJuIHF1ZXJ5RGVz YzsKK30KKwogLyoKICAqIEV4cGxhaW5PbmVVdGlsaXR5IC0KICAqCSAgcHJpbnQgb3V0IHRoZSBl eGVjdXRpb24gcGxhbiBmb3Igb25lIHV0aWxpdHkgc3RhdGVtZW50CkBAIC01MjQsMjkgKzYwNCwx NiBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50 bywgRXhwbGFpblN0YXRlICplcywKICAqIHRvIGNhbGwgaXQuCiAgKi8KIHZvaWQKLUV4cGxhaW5P bmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFp blN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAorCQkJICAg SW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAkJCSAgIGNvbnN0IGNoYXIgKnF1 ZXJ5U3RyaW5nLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52LCBjb25zdCBpbnN0cl90aW1lICpwbGFuZHVyYXRpb24sCiAJCQkgICBjb25zdCBC dWZmZXJVc2FnZSAqYnVmdXNhZ2UpCiB7Ci0JRGVzdFJlY2VpdmVyICpkZXN0OwotCVF1ZXJ5RGVz YyAgKnF1ZXJ5RGVzYzsKIAlpbnN0cl90aW1lCXN0YXJ0dGltZTsKIAlkb3VibGUJCXRvdGFsdGlt ZSA9IDA7Ci0JaW50CQkJZWZsYWdzOwotCWludAkJCWluc3RydW1lbnRfb3B0aW9uID0gMDsKLQot CUFzc2VydChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpOwogCi0JaWYg KGVzLT5hbmFseXplICYmIGVzLT50aW1pbmcpCi0JCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RS VU1FTlRfVElNRVI7Ci0JZWxzZSBpZiAoZXMtPmFuYWx5emUpCi0JCWluc3RydW1lbnRfb3B0aW9u IHw9IElOU1RSVU1FTlRfUk9XUzsKLQotCWlmIChlcy0+YnVmZmVycykKLQkJaW5zdHJ1bWVudF9v cHRpb24gfD0gSU5TVFJVTUVOVF9CVUZGRVJTOwotCWlmIChlcy0+d2FsKQotCQlpbnN0cnVtZW50 X29wdGlvbiB8PSBJTlNUUlVNRU5UX1dBTDsKKwlBc3NlcnQocXVlcnlEZXNjLT5wbGFubmVkc3Rt dC0+Y29tbWFuZFR5cGUgIT0gQ01EX1VUSUxJVFkpOwogCiAJLyoKIAkgKiBXZSBhbHdheXMgY29s bGVjdCB0aW1pbmcgZm9yIHRoZSBlbnRpcmUgc3RhdGVtZW50LCBldmVuIHdoZW4gbm9kZS1sZXZl bApAQCAtNTU1LDQwICs2MjIsNiBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5l ZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJICovCiAJSU5TVFJf VElNRV9TRVRfQ1VSUkVOVChzdGFydHRpbWUpOwogCi0JLyoKLQkgKiBVc2UgYSBzbmFwc2hvdCB3 aXRoIGFuIHVwZGF0ZWQgY29tbWFuZCBJRCB0byBlbnN1cmUgdGhpcyBxdWVyeSBzZWVzCi0JICog cmVzdWx0cyBvZiBhbnkgcHJldmlvdXNseSBleGVjdXRlZCBxdWVyaWVzLgotCSAqLwotCVB1c2hD b3BpZWRTbmFwc2hvdChHZXRBY3RpdmVTbmFwc2hvdCgpKTsKLQlVcGRhdGVBY3RpdmVTbmFwc2hv dENvbW1hbmRJZCgpOwotCi0JLyoKLQkgKiBOb3JtYWxseSB3ZSBkaXNjYXJkIHRoZSBxdWVyeSdz IG91dHB1dCwgYnV0IGlmIGV4cGxhaW5pbmcgQ1JFQVRFIFRBQkxFCi0JICogQVMsIHdlJ2QgYmV0 dGVyIHVzZSB0aGUgYXBwcm9wcmlhdGUgdHVwbGUgcmVjZWl2ZXIuCi0JICovCi0JaWYgKGludG8p Ci0JCWRlc3QgPSBDcmVhdGVJbnRvUmVsRGVzdFJlY2VpdmVyKGludG8pOwotCWVsc2UKLQkJZGVz dCA9IE5vbmVfUmVjZWl2ZXI7Ci0KLQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVy eSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVkc3RtdCwgcXVlcnlTdHJp bmcsCi0JCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKLQkJCQkJ CQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRpb24pOwotCi0JLyogU2Vs ZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCi0JaWYgKGVzLT5hbmFseXplKQotCQllZmxhZ3MgPSAw OwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCi0JZWxzZQotCQllZmxh Z3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZOwotCWlmIChlcy0+Z2VuZXJpYykKLQkJZWZsYWdz IHw9IEVYRUNfRkxBR19FWFBMQUlOX0dFTkVSSUM7Ci0JaWYgKGludG8pCi0JCWVmbGFncyB8PSBH ZXRJbnRvUmVsRUZsYWdzKGludG8pOwotCi0JLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBh cmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBl ZmxhZ3MpOwotCiAJLyogRXhlY3V0ZSB0aGUgcGxhbiBmb3Igc3RhdGlzdGljcyBpZiBhc2tlZCBm b3IgKi8KIAlpZiAoZXMtPmFuYWx5emUpCiAJewpAQCAtNDg2NSw2ICs0ODk4LDE3IEBAIEV4cGxh aW5EdW1teUdyb3VwKGNvbnN0IGNoYXIgKm9ianR5cGUsIGNvbnN0IGNoYXIgKmxhYmVsbmFtZSwg RXhwbGFpblN0YXRlICplcykKIAl9CiB9CiAKKy8qCisgKiBEaXNjYXJkIG91dHB1dCBidWZmZXIg Zm9yIGEgZnJlc2ggcmVzdGFydC4KKyAqLwordm9pZAorRXhwbGFpblJlc2V0T3V0cHV0KEV4cGxh aW5TdGF0ZSAqZXMpCit7CisJQXNzZXJ0KGVzLT5zdHIpOworCXJlc2V0U3RyaW5nSW5mbyhlcy0+ c3RyKTsKKwlFeHBsYWluQmVnaW5PdXRwdXQoZXMpOworfQorCiAvKgogICogRW1pdCB0aGUgc3Rh cnQtb2Ytb3V0cHV0IGJvaWxlcnBsYXRlLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4dGVuc2lvbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKaW5k ZXggMGVhYmUxODMzNS4uNWE3NjM0MzEyMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAg LTc5NywxMSArNzk3LDEzIEBAIGV4ZWN1dGVfc3FsX3N0cmluZyhjb25zdCBjaGFyICpzcWwpCiAJ CQkJUXVlcnlEZXNjICAqcWRlc2M7CiAKIAkJCQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10 LAorCQkJCQkJCQkJCU5VTEwsCiAJCQkJCQkJCQkJc3FsLAogCQkJCQkJCQkJCUdldEFjdGl2ZVNu YXBzaG90KCksIE5VTEwsCiAJCQkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKIAkJCQlF eGVjdXRvclN0YXJ0KHFkZXNjLCAwKTsKKwkJCQlBc3NlcnQocWRlc2MtPnBsYW5fdmFsaWQpOwog CQkJCUV4ZWN1dG9yUnVuKHFkZXNjLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgMCwgdHJ1ZSk7CiAJ CQkJRXhlY3V0b3JGaW5pc2gocWRlc2MpOwogCQkJCUV4ZWN1dG9yRW5kKHFkZXNjKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL21hdHZpZXcuYwppbmRleCBmOWEzYmRmYzNhLi4xYzFjZTFlMTdkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv bWF0dmlldy5jCkBAIC00MDksMTIgKzQwOSwxMyBAQCByZWZyZXNoX21hdHZpZXdfZGF0YWZpbGwo RGVzdFJlY2VpdmVyICpkZXN0LCBRdWVyeSAqcXVlcnksCiAJVXBkYXRlQWN0aXZlU25hcHNob3RD b21tYW5kSWQoKTsKIAogCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0 IHRvIG91ciB0dXBsZSByZWNlaXZlciAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhw bGFuLCBxdWVyeVN0cmluZywKKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwgTlVM TCwgcXVlcnlTdHJpbmcsCiAJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFw c2hvdCwKIAkJCQkJCQkJZGVzdCwgTlVMTCwgTlVMTCwgMCk7CiAKIAkvKiBjYWxsIEV4ZWN1dG9y U3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uICovCiAJRXhlY3V0b3JTdGFy dChxdWVyeURlc2MsIDApOworCUFzc2VydChxdWVyeURlc2MtPnBsYW5fdmFsaWQpOwogCiAJLyog cnVuIHRoZSBwbGFuICovCiAJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBGb3J3YXJkU2NhbkRpcmVj dGlvbiwgMCwgdHJ1ZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxj bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKaW5kZXggNzNlZDdhYTJm MC4uNGFiYmVjMDU0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21k cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwpAQCAtMTQ2LDYgKzE0 Niw3IEBAIFBlcmZvcm1DdXJzb3JPcGVuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVjbGFyZUN1cnNv clN0bXQgKmNzdG10LCBQYXJhbUxpc3RJbmZvIHBhCiAJUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJh bXMsIDAsIEdldEFjdGl2ZVNuYXBzaG90KCkpOwogCiAJQXNzZXJ0KHBvcnRhbC0+c3RyYXRlZ3kg PT0gUE9SVEFMX09ORV9TRUxFQ1QpOworCUFzc2VydChwb3J0YWwtPnBsYW5fdmFsaWQpOwogCiAJ LyoKIAkgKiBXZSdyZSBkb25lOyB0aGUgcXVlcnkgd29uJ3QgYWN0dWFsbHkgYmUgcnVuIHVudGls IFBlcmZvcm1Qb3J0YWxGZXRjaCBpcwpAQCAtMjQ5LDYgKzI1MCwxNyBAQCBQZXJmb3JtUG9ydGFs Q2xvc2UoY29uc3QgY2hhciAqbmFtZSkKIAlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOwogfQog CisvKgorICogUmVsZWFzZSBhIHBvcnRhbCdzIFF1ZXJ5RGVzYy4KKyAqLwordm9pZAorUG9ydGFs UXVlcnlGaW5pc2goUXVlcnlEZXNjICpxdWVyeURlc2MpCit7CisJRXhlY3V0b3JGaW5pc2gocXVl cnlEZXNjKTsKKwlFeGVjdXRvckVuZChxdWVyeURlc2MpOworCUZyZWVRdWVyeURlc2MocXVlcnlE ZXNjKTsKK30KKwogLyoKICAqIFBvcnRhbENsZWFudXAKICAqCkBAIC0yOTUsOSArMzA3LDcgQEAg UG9ydGFsQ2xlYW51cChQb3J0YWwgcG9ydGFsKQogCQkJaWYgKHBvcnRhbC0+cmVzb3duZXIpCiAJ CQkJQ3VycmVudFJlc291cmNlT3duZXIgPSBwb3J0YWwtPnJlc293bmVyOwogCi0JCQlFeGVjdXRv ckZpbmlzaChxdWVyeURlc2MpOwotCQkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKLQkJCUZyZWVR dWVyeURlc2MocXVlcnlEZXNjKTsKKwkJCVBvcnRhbFF1ZXJ5RmluaXNoKHF1ZXJ5RGVzYyk7CiAK IAkJCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2ZVJlc291cmNlT3duZXI7CiAJCX0KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ByZXBhcmUuYwppbmRleCAxOGY3MDMxOWZjLi5jOTA3MGVkOTdmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHJlcGFyZS5jCkBAIC0xODMsNiArMTgzLDcgQEAgRXhlY3V0ZVF1ZXJ5KFBhcnNlU3RhdGUgKnBz dGF0ZSwKIAkJcGFyYW1MSSA9IEV2YWx1YXRlUGFyYW1zKHBzdGF0ZSwgZW50cnksIHN0bXQtPnBh cmFtcywgZXN0YXRlKTsKIAl9CiAKK3JlcGxhbjoKIAkvKiBDcmVhdGUgYSBuZXcgcG9ydGFsIHRv IHJ1biB0aGUgcXVlcnkgaW4gKi8KIAlwb3J0YWwgPSBDcmVhdGVOZXdQb3J0YWwoKTsKIAkvKiBE b24ndCBkaXNwbGF5IHRoZSBwb3J0YWwgaW4gcGdfY3Vyc29ycywgaXQgaXMgZm9yIGludGVybmFs IHVzZSBvbmx5ICovCkBAIC0yNTEsMTAgKzI1MiwxOSBAQCBFeGVjdXRlUXVlcnkoUGFyc2VTdGF0 ZSAqcHN0YXRlLAogCX0KIAogCS8qCi0JICogUnVuIHRoZSBwb3J0YWwgYXMgYXBwcm9wcmlhdGUu CisJICogUnVuIHRoZSBwb3J0YWwgYXMgYXBwcm9wcmlhdGUuICBJZiB0aGUgcG9ydGFsIGNvbnRh aW5zIGEgY2FjaGVkIHBsYW4sIGl0CisJICogbXVzdCBiZSByZWNyZWF0ZWQgaWYgcG9ydGFsLT5w bGFuX3ZhbGlkIGlzIGZhbHNlIHdoaWNoIHRlbGxzIHRoYXQgdGhlCisJICogY2FjaGVkIHBsYW4g d2FzIGZvdW5kIHRvIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCB3aGVuIGluaXRpYWxpemluZyBvbmUg b2YKKwkgKiB0aGUgcGxhbiB0cmVlcyBjb250YWluZWQgaW4gaXQuCiAJICovCiAJUG9ydGFsU3Rh cnQocG9ydGFsLCBwYXJhbUxJLCBlZmxhZ3MsIEdldEFjdGl2ZVNuYXBzaG90KCkpOwogCisJaWYg KCFwb3J0YWwtPnBsYW5fdmFsaWQpCisJeworCQlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2UpOwor CQlnb3RvIHJlcGxhbjsKKwl9CisKIAkodm9pZCkgUG9ydGFsUnVuKHBvcnRhbCwgY291bnQsIGZh bHNlLCB0cnVlLCBkZXN0LCBkZXN0LCBxYyk7CiAKIAlQb3J0YWxEcm9wKHBvcnRhbCwgZmFsc2Up OwpAQCAtNTc0LDcgKzU4NCw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4 ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogewogCVByZXBhcmVk U3RhdGVtZW50ICplbnRyeTsKIAljb25zdCBjaGFyICpxdWVyeV9zdHJpbmc7Ci0JQ2FjaGVkUGxh biAqY3BsYW47CisJQ2FjaGVkUGxhbiAqY3BsYW4gPSBOVUxMOwogCUxpc3QJICAgKnBsYW5fbGlz dDsKIAlMaXN0Q2VsbCAgICpwOwogCVBhcmFtTGlzdEluZm8gcGFyYW1MSSA9IE5VTEw7CkBAIC02 MTgsNiArNjI4LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQs IEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJfQogCiAJLyogUmVwbGFuIGlm IG5lZWRlZCwgYW5kIGFjcXVpcmUgYSB0cmFuc2llbnQgcmVmY291bnQgKi8KK3JlcGxhbjoKIAlj cGxhbiA9IEdldENhY2hlZFBsYW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFtTEksCiAJCQkJCQkg IEN1cnJlbnRSZXNvdXJjZU93bmVyLCBxdWVyeUVudik7CiAKQEAgLTYzOSw4ICs2NTAsMjEgQEAg RXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2Rl KFBsYW5uZWRTdG10LCBwKTsKIAogCQlpZiAocHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElM SVRZKQotCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBh cmFtTEksIHF1ZXJ5RW52LAotCQkJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8g JmJ1ZnVzYWdlIDogTlVMTCkpOworCQl7CisJCQlRdWVyeURlc2MgKnF1ZXJ5RGVzYzsKKworCQkJ cXVlcnlEZXNjID0gRXhwbGFpblF1ZXJ5RGVzYyhwc3RtdCwgY3BsYW4sIHF1ZXJ5U3RyaW5nLAor CQkJCQkJCQkJCSBpbnRvLCBlcywgcGFyYW1MSSwgcXVlcnlFbnYpOworCQkJaWYgKHF1ZXJ5RGVz YyA9PSBOVUxMKQorCQkJeworCQkJCUV4cGxhaW5SZXNldE91dHB1dChlcyk7CisJCQkJUmVsZWFz ZUNhY2hlZFBsYW4oY3BsYW4sIEN1cnJlbnRSZXNvdXJjZU93bmVyKTsKKwkJCQlnb3RvIHJlcGxh bjsKKwkJCX0KKwkJCUV4cGxhaW5PbmVQbGFuKHF1ZXJ5RGVzYywgaW50bywgZXMsIHF1ZXJ5X3N0 cmluZywgcGFyYW1MSSwKKwkJCQkJCSAgIHF1ZXJ5RW52LCAmcGxhbmR1cmF0aW9uLAorCQkJCQkJ ICAgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOworCQl9CiAJCWVsc2UKIAkJCUV4 cGxhaW5PbmVVdGlsaXR5KHBzdG10LT51dGlsaXR5U3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmlu ZywKIAkJCQkJCQkgIHBhcmFtTEksIHF1ZXJ5RW52KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmlu ZGV4IGM3NmZkZjU5ZWMuLjAwZGI2ZWIzMDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAt NjExLDYgKzYxMSwxNiBAQCBFeGVjQ2hlY2tQZXJtaXNzaW9ucyhMaXN0ICpyYW5nZVRhYmxlLCBM aXN0ICpydGVwZXJtaW5mb3MsCiAJCVJURVBlcm1pc3Npb25JbmZvICpwZXJtaW5mbyA9IGxmaXJz dF9ub2RlKFJURVBlcm1pc3Npb25JbmZvLCBsKTsKIAogCQlBc3NlcnQoT2lkSXNWYWxpZChwZXJt aW5mby0+cmVsaWQpKTsKKworCQkvKgorCQkgKiBSZWxhdGlvbnMgd2hvc2UgcGVybWlzc2lvbnMg bmVlZCB0byBiZSBjaGVja2VkIG11c3QgYWxyZWFkeSBoYXZlCisJCSAqIGJlZW4gbG9ja2VkIGJ5 IHRoZSBwYXJzZXIgb3IgYnkgQWNxdWlyZVBsYW5uZXJMb2NrcygpIGlmIGEKKwkJICogY2FjaGVk IHBsYW4gaXMgYmVpbmcgZXhlY3V0ZWQuCisJCSAqIFhYWCBzaG91bGRuJ3Qgd2Ugc2tpcCBjYWxs aW5nIEV4ZWNDaGVja1Blcm1pc3Npb25zIGZyb20gSW5pdFBsYW4KKwkJICogaW4gYSBwYXJhbGxl bCB3b3JrZXI/CisJCSAqLworCQlBc3NlcnQoQ2hlY2tSZWxMb2NrZWRCeU1lKHBlcm1pbmZvLT5y ZWxpZCwgQWNjZXNzU2hhcmVMb2NrLCB0cnVlKSB8fAorCQkJICAgSXNQYXJhbGxlbFdvcmtlcigp KTsKIAkJcmVzdWx0ID0gRXhlY0NoZWNrT25lUmVsUGVybXMocGVybWluZm8pOwogCQlpZiAoIXJl c3VsdCkKIAkJewpAQCAtODIwLDYgKzgzMCwyMyBAQCBFeGVjQ2hlY2tYYWN0UmVhZE9ubHkoUGxh bm5lZFN0bXQgKnBsYW5uZWRzdG10KQogICoKICAqCQlJbml0aWFsaXplcyB0aGUgcXVlcnkgcGxh bjogb3BlbiBmaWxlcywgYWxsb2NhdGUgc3RvcmFnZQogICoJCWFuZCBzdGFydCB1cCB0aGUgcnVs ZSBtYW5hZ2VyCisgKgorICoKKyAqIE5vcm1hbGx5LCB0aGUgcGxhbiB0cmVlIGdpdmVuIGluIHF1 ZXJ5RGVzYy0+cGxhbm5lZHN0bXQgaXMga25vd24gdG8gYmUKKyAqIHZhbGlkIGluIHRoYXQgKmFs bCogcmVsYXRpb25zIGNvbnRhaW5lZCBpbiBwbGFubmVkc3RtdC0+cmVsYXRpb25PaWRzIGhhdmUK KyAqIGFscmVhZHkgYmVlbiBsb2NrZWQuICBUaGF0IG1heSBub3QgYmUgdGhlIGNhc2UgaG93ZXZl ciBpZiB0aGUgcGxhbm5lZHN0bXQKKyAqIGNvbWVzIGZyb20gYSBDYWNoZWRQbGFuLCBvbmUgZ2l2 ZW4gaW4gcXVlcnlEZXNjLT5jcGxhbiwgbm90IGFsbCByZWxhdGlvbnMKKyAqIHJlZmVyZW5jZWQg aW4gdGhlIHBsYW4gd291bGQgaGF2ZSBiZWVuIGxvY2tlZDsgdG8gd2l0IEFjcXVpcmVQbGFubmVy TG9ja3MoKQorICogb25seSBsb2NrcyByZWxhdGlvbnMgbWVudGlvbmVkIGluIHRoZSBxdWVyeSBi dXQgbm90IGFueSBjaGlsZCByZWxhdGlvbnMKKyAqIHRoYXQgd291bGQgaGF2ZSBiZWVuIGFkZGVk IGJ5IHRoZSBwbGFubmVyLiAgTG9ja3Mgb24gdGhlIGNoaWxkIHJlbGF0aW9ucworICogd2lsbCBi ZSB0YWtlbiB3aGVuIGluaXRpYWxpemluZyB0aGVpciBTY2FuIG5vZGVzIGluIEV4ZWNJbml0Tm9k ZSgpIHRoYXQgaXMKKyAqIGRvbmUgaGVyZS4gIElmIHRoZSBDYWNoZWRQbGFuIGdldHMgaW52YWxp ZGF0ZWQgYXMgdGhlc2UgbG9ja3MgYXJlIHRha2VuLAorICogcGxhbiB0cmVlIGluaXRpYWxpemF0 aW9uIGlzIHN1c3BlbmRlZCBhdCB0aGUgcG9pbnQgd2hlbiBzdWNoIGludmFsaWRhdGlvbiBpcwor ICogZmlyc3QgZGV0ZWN0ZWQgYW5kIHF1ZXJ5RGVzYy0+cGxhbnN0YXQgd2lsbCBiZSBzZXQgdG8g TlVMTCBhbmQKKyAqIHF1ZXJ5RGVzYy0+cGxhbl92YWxpZCB0byBmYWxzZS4gIENhbGxlcnMgbXVz dCByZXRyeSB0aGUgZXhlY3V0aW9uIGFmdGVyCisgKiBjcmVhdGluZyBhIG5ldyBDYWNoZWRQbGFu IGluIHRoYXQgY2FzZSwgYWZ0ZXIgcHJvcGVybHkgcmVsZWFzaW5nIHRoZQorICogcmVzb3VyY2Vz IG9mIHRoaXMgUXVlcnlEZXNjLCB3aGljaCBpbmNsdWRlcyBjYWxsaW5nIEV4ZWN1dG9yRmluaXNo KCkgYW5kCisgKiBFeGVjdXRvckVuZCgpIG9uIHRoZSBFU3RhdGUgY29udGFpbmVkIHRoZXJlaW4u CiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC04MzAsNyArODU3LDcgQEAgSW5pdFBs YW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJUGxhbgkgICAqcGxhbiA9IHBs YW5uZWRzdG10LT5wbGFuVHJlZTsKIAlMaXN0CSAgICpyYW5nZVRhYmxlID0gcGxhbm5lZHN0bXQt PnJ0YWJsZTsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0YXRlOwotCVBsYW5T dGF0ZSAgKnBsYW5zdGF0ZTsKKwlQbGFuU3RhdGUgICpwbGFuc3RhdGUgPSBOVUxMOwogCVR1cGxl RGVzYwl0dXBUeXBlOwogCUxpc3RDZWxsICAgKmw7CiAJaW50CQkJaTsKQEAgLTg0MSwxMCArODY4 LDExIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCUV4ZWND aGVja1Blcm1pc3Npb25zKHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MsIHRydWUp OwogCiAJLyoKLQkgKiBpbml0aWFsaXplIHRoZSBub2RlJ3MgZXhlY3V0aW9uIHN0YXRlCisJICog U2V0IHVwIHJhbmdlIHRhYmxlIGluIEVTdGF0ZS4KIAkgKi8KIAlFeGVjSW5pdFJhbmdlVGFibGUo ZXN0YXRlLCByYW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+cGVybUluZm9zKTsKIAorCWVzdGF0ZS0+ ZXNfY2FjaGVkcGxhbiA9IHF1ZXJ5RGVzYy0+Y3BsYW47CiAJZXN0YXRlLT5lc19wbGFubmVkc3Rt dCA9IHBsYW5uZWRzdG10OwogCiAJLyoKQEAgLTg3Nyw2ICs5MDUsOCBAQCBJbml0UGxhbihRdWVy eURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCQljYXNlIFJPV19NQVJLX0tFWVNIQVJF OgogCQkJCWNhc2UgUk9XX01BUktfUkVGRVJFTkNFOgogCQkJCQlyZWxhdGlvbiA9IEV4ZWNHZXRS YW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCByYy0+cnRpKTsKKwkJCQkJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJCQkJCWdvdG8gcGxhbl9pbml0X3N1c3BlbmRlZDsKIAkJCQkJ YnJlYWs7CiAJCQkJY2FzZSBST1dfTUFSS19DT1BZOgogCQkJCQkvKiBubyBwaHlzaWNhbCB0YWJs ZSBhY2Nlc3MgaXMgcmVxdWlyZWQgKi8KQEAgLTkyMCw2ICs5NTAsMTYgQEAgSW5pdFBsYW4oUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJLyogc2lnbmFsIHRoYXQgdGhpcyBFU3Rh dGUgaXMgbm90IHVzZWQgZm9yIEVQUSAqLwogCWVzdGF0ZS0+ZXNfZXBxX2FjdGl2ZSA9IE5VTEw7 CiAKKwkvKgorCSAqIE11c3QgdGFrZSBsb2NrcyBvbiBjaGlsZCB0YWJsZXMgaWYgcnVubmluZyBh IGNhY2hlZCBwbGFuLCBiZWNhdXNlCisJICogR2V0Q2FjaGVkUGxhbigpIHdvdWxkJ3ZlIG9ubHkg bG9ja2VkIHRoZSByb290IHBhcmVudCBuYW1lZCBpbiB0aGUKKwkgKiBxdWVyeS4gIENoaWxkIHJl bGF0aW9ucyB0aGF0IGFwcGVhciB1bmRlciBBcHBlbmQvTWVyZ2VBcHBlbmQgYXJlCisJICogbG9j a2VkIGluIEV4ZWNJbml0W01lcmdlXUFwcGVuZCgpLgorCSAqLworCWlmIChlc3RhdGUtPmVzX2Nh Y2hlZHBsYW4pCisJCUV4ZWNMb2NrRWxpZGVkQXBwZW5kQ2hpbGRSZWxhdGlvbnMoZXN0YXRlLAor CQkJCQkJCQkJCSAgIHBsYW5uZWRzdG10LT5lbGlkZWRBcHBlbmRDaGlsZFJlbHMpOworCiAJLyoK IAkgKiBJbml0aWFsaXplIHByaXZhdGUgc3RhdGUgaW5mb3JtYXRpb24gZm9yIGVhY2ggU3ViUGxh bi4gIFdlIG11c3QgZG8gdGhpcwogCSAqIGJlZm9yZSBydW5uaW5nIEV4ZWNJbml0Tm9kZSBvbiB0 aGUgbWFpbiBxdWVyeSB0cmVlLCBzaW5jZQpAQCAtOTQ0LDEwICs5ODQsMTQgQEAgSW5pdFBsYW4o UXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQlzcF9lZmxhZ3MgfD0gRVhFQ19G TEFHX1JFV0lORDsKIAogCQlzdWJwbGFuc3RhdGUgPSBFeGVjSW5pdE5vZGUoc3VicGxhbiwgZXN0 YXRlLCBzcF9lZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQl7 CisJCQlBc3NlcnQoc3VicGxhbnN0YXRlID09IE5VTEwpOworCQkJZ290byBwbGFuX2luaXRfc3Vz cGVuZGVkOworCQl9CiAKIAkJZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzID0gbGFwcGVuZChlc3Rh dGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJCQkJCQkJICAgc3VicGxhbnN0YXRlKTsKLQogCQlp Kys7CiAJfQogCkBAIC05NTcsNiArMTAwMSwxMSBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncykKIAkgKiBwcm9jZXNzaW5nIHR1cGxlcy4KIAkgKi8KIAlwbGFuc3Rh dGUgPSBFeGVjSW5pdE5vZGUocGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5T dGlsbFZhbGlkKGVzdGF0ZSkpCisJeworCQlBc3NlcnQocGxhbnN0YXRlID09IE5VTEwpOworCQln b3RvIHBsYW5faW5pdF9zdXNwZW5kZWQ7CisJfQogCiAJLyoKIAkgKiBHZXQgdGhlIHR1cGxlIGRl c2NyaXB0b3IgZGVzY3JpYmluZyB0aGUgdHlwZSBvZiB0dXBsZXMgdG8gcmV0dXJuLgpAQCAtOTk5 LDcgKzEwNDgsMTkgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp CiAJfQogCiAJcXVlcnlEZXNjLT50dXBEZXNjID0gdHVwVHlwZTsKKwlBc3NlcnQocGxhbnN0YXRl ICE9IE5VTEwpOwogCXF1ZXJ5RGVzYy0+cGxhbnN0YXRlID0gcGxhbnN0YXRlOworCXF1ZXJ5RGVz Yy0+cGxhbl92YWxpZCA9IHRydWU7CisJcmV0dXJuOworCitwbGFuX2luaXRfc3VzcGVuZGVkOgor CS8qCisJICogUGxhbiBpbml0aWFsaXphdGlvbiBmYWlsZWQuICBNYXJrIFF1ZXJ5RGVzYyBhcyBz dWNoLiAgRXhlY0VuZFBsYW4oKQorCSAqIHdpbGwgY2xlYW4gdXAgaW5pdGlhbGl6ZWQgcGxhbiBu b2RlcyBmcm9tIGVzdGF0ZS0+ZXNfaW5pdGVkX3BsYW5ub2Rlcy4KKwkgKi8KKwlBc3NlcnQocGxh bnN0YXRlID09IE5VTEwpOworCXF1ZXJ5RGVzYy0+cGxhbnN0YXRlID0gTlVMTDsKKwlxdWVyeURl c2MtPnBsYW5fdmFsaWQgPSBmYWxzZTsKIH0KIAogLyoKQEAgLTE0MTcsNyArMTQ3OCw3IEBAIEV4 ZWNHZXRBbmNlc3RvclJlc3VsdFJlbHMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJl c3VsdFJlbEluZm8pCiAKIAkJCS8qCiAJCQkgKiBBbGwgYW5jZXN0b3JzIHVwIHRvIHRoZSByb290 IHRhcmdldCByZWxhdGlvbiBtdXN0IGhhdmUgYmVlbgotCQkJICogbG9ja2VkIGJ5IHRoZSBwbGFu bmVyIG9yIEFjcXVpcmVFeGVjdXRvckxvY2tzKCkuCisJCQkgKiBsb2NrZWQuCiAJCQkgKi8KIAkJ CWFuY1JlbCA9IHRhYmxlX29wZW4oYW5jT2lkLCBOb0xvY2spOwogCQkJckluZm8gPSBtYWtlTm9k ZShSZXN1bHRSZWxJbmZvKTsKQEAgLTE0OTUsMTggKzE1NTYsMTUgQEAgRXhlY0VuZFBsYW4oUGxh blN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAqZXN0YXRlKQogCUxpc3RDZWxsICAgKmw7CiAKIAkv KgotCSAqIHNodXQgZG93biB0aGUgbm9kZS10eXBlLXNwZWNpZmljIHF1ZXJ5IHByb2Nlc3NpbmcK LQkgKi8KLQlFeGVjRW5kTm9kZShwbGFuc3RhdGUpOwotCi0JLyoKLQkgKiBmb3Igc3VicGxhbnMg dG9vCisJICogU2h1dCBkb3duIHRoZSBub2RlLXR5cGUtc3BlY2lmaWMgcXVlcnkgcHJvY2Vzc2lu ZyBmb3IgYWxsIG5vZGVzIHRoYXQKKwkgKiB3ZXJlIGluaXRpYWxpemVkIGR1cmluZyBJbml0UGxh bigpLCBib3RoIGluIHRoZSBtYWluIHBsYW4gdHJlZSBhbmQgdGhvc2UKKwkgKiBpbiBzdWJwbGFu cyAoZXNfc3VicGxhbnN0YXRlcyksIGlmIGFueS4KIAkgKi8KLQlmb3JlYWNoKGwsIGVzdGF0ZS0+ ZXNfc3VicGxhbnN0YXRlcykKKwlmb3JlYWNoKGwsIGVzdGF0ZS0+ZXNfaW5pdGVkX3BsYW5ub2Rl cykKIAl7Ci0JCVBsYW5TdGF0ZSAgKnN1YnBsYW5zdGF0ZSA9IChQbGFuU3RhdGUgKikgbGZpcnN0 KGwpOworCQlQbGFuU3RhdGUgICpwbGFuc3RhdGUgPSAoUGxhblN0YXRlICopIGxmaXJzdChsKTsK IAotCQlFeGVjRW5kTm9kZShzdWJwbGFuc3RhdGUpOworCQlFeGVjRW5kTm9kZShwbGFuc3RhdGUp OwogCX0KIAogCS8qCkBAIC0yODQ5LDcgKzI5MDcsOCBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFT dGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCSAqIENoaWxkIEVQUSBFU3RhdGVzIHNo YXJlIHRoZSBwYXJlbnQncyBjb3B5IG9mIHVuY2hhbmdpbmcgc3RhdGUgc3VjaCBhcwogCSAqIHRo ZSBzbmFwc2hvdCwgcmFuZ2V0YWJsZSwgYW5kIGV4dGVybmFsIFBhcmFtIGluZm8uICBUaGV5IG5l ZWQgdGhlaXIgb3duCiAJICogY29waWVzIG9mIGxvY2FsIHN0YXRlLCBpbmNsdWRpbmcgYSB0dXBs ZSB0YWJsZSwgZXNfcGFyYW1fZXhlY192YWxzLAotCSAqIHJlc3VsdC1yZWwgaW5mbywgZXRjLgor CSAqIHJlc3VsdC1yZWwgaW5mbywgZXRjLiAgQWxzbywgd2UgZG9uJ3QgcGFzcyB0aGUgcGFyZW50 J3QgY29weSBvZiB0aGUKKwkgKiBDYWNoZWRQbGFuLCBiZWNhdXNlIG5vIG5ldyBsb2NrcyB3aWxs IGJlIHRha2VuIGZvciBFdmFsUGxhblF1YWwoKS4KIAkgKi8KIAlyY2VzdGF0ZS0+ZXNfZGlyZWN0 aW9uID0gRm9yd2FyZFNjYW5EaXJlY3Rpb247CiAJcmNlc3RhdGUtPmVzX3NuYXBzaG90ID0gcGFy ZW50ZXN0YXRlLT5lc19zbmFwc2hvdDsKQEAgLTI5MzYsNiArMjk5NSwxMiBAQCBFdmFsUGxhblF1 YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCQlQbGFuU3RhdGUg ICpzdWJwbGFuc3RhdGU7CiAKIAkJc3VicGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHN1YnBsYW4s IHJjZXN0YXRlLCAwKTsKKworCQkvKgorCQkgKiBBdCB0aGlzIHBvaW50LCB3ZSBoYWQgYmV0dGVy IG5vdCByZWNlaXZlZCBhbnkgbmV3IGludmFsaWRhdGlvbgorCQkgKiBtZXNzYWdlcyB0aGF0IHdv dWxkIGhhdmUgY2F1c2VkIHRoZSBwbGFuIHRyZWUgdG8gZ28gc3RhbGUuCisJCSAqLworCQlBc3Nl cnQoRXhlY1BsYW5TdGlsbFZhbGlkKHJjZXN0YXRlKSAmJiBzdWJwbGFuc3RhdGUpOwogCQlyY2Vz dGF0ZS0+ZXNfc3VicGxhbnN0YXRlcyA9IGxhcHBlbmQocmNlc3RhdGUtPmVzX3N1YnBsYW5zdGF0 ZXMsCiAJCQkJCQkJCQkJCSBzdWJwbGFuc3RhdGUpOwogCX0KQEAgLTI5NzksNiArMzA0NCwxMiBA QCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQog CSAqLwogCWVwcXN0YXRlLT5yZWNoZWNrcGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHBsYW5UcmVl LCByY2VzdGF0ZSwgMCk7CiAKKwkvKgorCSAqIEF0IHRoaXMgcG9pbnQsIHdlIGhhZCBiZXR0ZXIg bm90IHJlY2VpdmVkIGFueSBuZXcgaW52YWxpZGF0aW9uIG1lc3NhZ2VzCisJICogdGhhdCB3b3Vs ZCBoYXZlIGNhdXNlZCB0aGUgcGxhbiB0cmVlIHRvIGdvIHN0YWxlLgorCSAqLworCUFzc2VydChF eGVjUGxhblN0aWxsVmFsaWQocmNlc3RhdGUpICYmIGVwcXN0YXRlLT5yZWNoZWNrcGxhbnN0YXRl KTsKKwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIH0KIApAQCAtMzAwMSw2 ICszMDcyLDEwIEBAIEV2YWxQbGFuUXVhbEVuZChFUFFTdGF0ZSAqZXBxc3RhdGUpCiAJTWVtb3J5 Q29udGV4dCBvbGRjb250ZXh0OwogCUxpc3RDZWxsICAgKmw7CiAKKwkvKiBOb3RoaW5nIHRvIGRv IGlmIEV2YWxQbGFuUXVhbEluaXQoKSB3YXNuJ3QgZG9uZSB0byBiZWdpbiB3aXRoLiAqLworCWlm IChlcHFzdGF0ZS0+cGFyZW50ZXN0YXRlID09IE5VTEwpCisJCXJldHVybjsKKwogCXJ0c2l6ZSA9 IGVwcXN0YXRlLT5wYXJlbnRlc3RhdGUtPmVzX3JhbmdlX3RhYmxlX3NpemU7CiAKIAkvKgpAQCAt MzAyMSwxMyArMzA5NiwxNiBAQCBFdmFsUGxhblF1YWxFbmQoRVBRU3RhdGUgKmVwcXN0YXRlKQog CiAJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4 dCk7CiAKLQlFeGVjRW5kTm9kZShlcHFzdGF0ZS0+cmVjaGVja3BsYW5zdGF0ZSk7Ci0KLQlmb3Jl YWNoKGwsIGVzdGF0ZS0+ZXNfc3VicGxhbnN0YXRlcykKKwkvKgorCSAqIFNodXQgZG93biB0aGUg bm9kZS10eXBlLXNwZWNpZmljIHF1ZXJ5IHByb2Nlc3NpbmcgZm9yIGFsbCBub2RlcyB0aGF0CisJ ICogd2VyZSBpbml0aWFsaXplZCBkdXJpbmcgRXZhbFBsYW5RdWFsU3RhcnQoKSwgYm90aCBpbiB0 aGUgbWFpbiBwbGFuIHRyZWUKKwkgKiBhbmQgdGhvc2UgaW4gc3VicGxhbnMgKGVzX3N1YnBsYW5z dGF0ZXMpLCBpZiBhbnkuCisJICovCisJZm9yZWFjaChsLCBlc3RhdGUtPmVzX2luaXRlZF9wbGFu bm9kZXMpCiAJewotCQlQbGFuU3RhdGUgICpzdWJwbGFuc3RhdGUgPSAoUGxhblN0YXRlICopIGxm aXJzdChsKTsKKwkJUGxhblN0YXRlICAqcGxhbnN0YXRlID0gKFBsYW5TdGF0ZSAqKSBsZmlyc3Qo bCk7CiAKLQkJRXhlY0VuZE5vZGUoc3VicGxhbnN0YXRlKTsKKwkJRXhlY0VuZE5vZGUocGxhbnN0 YXRlKTsKIAl9CiAKIAkvKiB0aHJvdyBhd2F5IHRoZSBwZXItZXN0YXRlIHR1cGxlIHRhYmxlLCBz b21lIG5vZGUgbWF5IGhhdmUgdXNlZCBpdCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwu YwppbmRleCBjYzJiOGNjYWI3Li43MmYxNTExNzIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy YWxsZWwuYwpAQCAtMTI0OCw4ICsxMjQ4LDE0IEBAIEV4ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhz aG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2ZXIsCiAJcGFyYW1zcGFjZSA9IHNobV90 b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUkFNTElTVElORk8sIGZhbHNlKTsKIAlwYXJh bUxJID0gUmVzdG9yZVBhcmFtTGlzdCgmcGFyYW1zcGFjZSk7CiAKLQkvKiBDcmVhdGUgYSBRdWVy eURlc2MgZm9yIHRoZSBxdWVyeS4gKi8KKwkvKgorCSAqIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3Ig dGhlIHF1ZXJ5LiAgTm90ZSB0aGF0IG5vIENhY2hlZFBsYW4gaXMgYXZhaWxhYmxlCisJICogaGVy ZSBldmVuIGlmIHRoZSBsZWFkZXIgbWF5IGhhdmUgZ290dGVuIHRoZSBwbGFuIHRyZWUgZnJvbSBv bmUuICBUaGF0J3MKKwkgKiBmaW5lIHRob3VnaCwgYmVjYXVzZSB0aGUgbGVhZGVyIHdvdWxkIGhh dmUgdGFrZW4gdGhlIGxvY2tzIG5lY2Vzc2FyeQorCSAqIGZvciB0aGUgcGxhbiB0cmVlIHRoYXQg d2UgaGF2ZSBoZXJlIHRvIGJlIGZ1bGx5IHZhbGlkLgorCSAqLwogCXJldHVybiBDcmVhdGVRdWVy eURlc2MocHN0bXQsCisJCQkJCQkgICBOVUxMLAogCQkJCQkJICAgcXVlcnlTdHJpbmcsCiAJCQkJ CQkgICBHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkgICByZWNl aXZlciwgcGFyYW1MSSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKQEAgLTE0MzEsNiArMTQz Nyw3IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90b2MgKnRvYykK IAkvKiBTdGFydCB1cCB0aGUgZXhlY3V0b3IgKi8KIAlxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5q aXRGbGFncyA9IGZwZXMtPmppdF9mbGFnczsKIAlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZnBl cy0+ZWZsYWdzKTsKKwlBc3NlcnQocXVlcnlEZXNjLT5wbGFuX3ZhbGlkKTsKIAogCS8qIFNwZWNp YWwgZXhlY3V0b3IgaW5pdGlhbGl6YXRpb24gc3RlcHMgZm9yIHBhcmFsbGVsIHdvcmtlcnMgKi8K IAlxdWVyeURlc2MtPnBsYW5zdGF0ZS0+c3RhdGUtPmVzX3F1ZXJ5X2RzYSA9IGFyZWE7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggZWI4YTg3ZmQ2My4uY2Y3M2QyOGJhYSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtNTEzLDYgKzUxMywxMyBAQCBF eGVjSW5pdFBhcnRpdGlvbkluZm8oTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0YXRlICpl c3RhdGUsCiAKIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJvdXRlLT5tZW1jeHQp OwogCisJLyoKKwkgKiBOb3RlIHRoYXQgd2hpbGUgd2Ugbm9ybWFsbHkgY2hlY2sgRXhlY1BsYW5T dGlsbFZhbGlkKGVzdGF0ZSkgYWZ0ZXIgZWFjaAorCSAqIGxvY2sgdGFrZW4gZHVyaW5nIGV4ZWN1 dGlvbiBpbml0aWFsaXphdGlvbiwgaXQgaXMgZmluZSBub3QgZG8gc28gZm9yCisJICogcGFydGl0 aW9ucyBvcGVuZWQgaGVyZSwgZm9yIHR1cGxlIHJvdXRpbmcuICBMb2NrcyB0YWtlbiBoZXJlIGNh bid0CisJICogcG9zc2libHkgaW52YWxpZGF0ZSB0aGUgcGxhbiBnaXZlbiB0aGF0IHRoZSBwbGFu IGRvZXNuJ3QgY29udGFpbiBhbnkKKwkgKiBpbmZvIGFib3V0IHRob3NlIHBhcnRpdGlvbnMuCisJ ICovCiAJcGFydHJlbCA9IHRhYmxlX29wZW4ocGFydE9pZCwgUm93RXhjbHVzaXZlTG9jayk7CiAK IAlsZWFmX3BhcnRfcnJpID0gbWFrZU5vZGUoUmVzdWx0UmVsSW5mbyk7CkBAIC0xMTExLDYgKzEx MTgsOSBAQCBFeGVjSW5pdFBhcnRpdGlvbkRpc3BhdGNoSW5mbyhFU3RhdGUgKmVzdGF0ZSwKIAkg KiBPbmx5IHN1Yi1wYXJ0aXRpb25lZCB0YWJsZXMgbmVlZCB0byBiZSBsb2NrZWQgaGVyZS4gIFRo ZSByb290CiAJICogcGFydGl0aW9uZWQgdGFibGUgd2lsbCBhbHJlYWR5IGhhdmUgYmVlbiBsb2Nr ZWQgYXMgaXQncyByZWZlcmVuY2VkIGluCiAJICogdGhlIHF1ZXJ5J3MgcnRhYmxlLgorCSAqCisJ ICogU2VlIHRoZSBjb21tZW50IGluIEV4ZWNJbml0UGFydGl0aW9uSW5mbygpIGFib3V0IHRha2lu ZyBsb2NrcyBhbmQKKwkgKiBub3QgY2hlY2tpbmcgRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkg aGVyZS4KIAkgKi8KIAlpZiAocGFydG9pZCAhPSBSZWxhdGlvbkdldFJlbGlkKHByb3V0ZS0+cGFy dGl0aW9uX3Jvb3QpKQogCQlyZWwgPSB0YWJsZV9vcGVuKHBhcnRvaWQsIFJvd0V4Y2x1c2l2ZUxv Y2spOwpAQCAtMTgwMSw2ICsxODExLDggQEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5T dGF0ZSAqcGxhbnN0YXRlLAogCiAJLyogQ3JlYXRlIHRoZSB3b3JraW5nIGRhdGEgc3RydWN0dXJl IGZvciBwcnVuaW5nICovCiAJcHJ1bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUo cGxhbnN0YXRlLCBwcnVuZWluZm8pOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp CisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0aW9u IHBydW5lIHBhc3MsIGlmIHJlcXVpcmVkLgpAQCAtMTkyNyw2ICsxOTM5LDggQEAgQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZv ICpwcnVuZWluZm8pCiAJCQkgKiBkdXJhdGlvbiBvZiB0aGlzIGV4ZWN1dG9yIHJ1bi4KIAkJCSAq LwogCQkJcGFydHJlbCA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBwaW5mby0+ cnRpbmRleCk7CisJCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJCXJldHVy biBOVUxMOwogCQkJcGFydGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcnRyZWwpOwog CQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoZXN0YXRlLT5lc19wYXJ0aXRp b25fZGlyZWN0b3J5LAogCQkJCQkJCQkJCQkJcGFydHJlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ cm9jbm9kZS5jCmluZGV4IDRkMjg4YmM4ZDQuLmYzYmIxZDQ1OTEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNQcm9jbm9kZS5jCkBAIC0xMzUsNyArMTM1LDE3IEBAIHN0YXRpYyBib29sIEV4ZWNTaHV0 ZG93bk5vZGVfd2Fsa2VyKFBsYW5TdGF0ZSAqbm9kZSwgdm9pZCAqY29udGV4dCk7CiAgKgkJICAn ZXN0YXRlJyBpcyB0aGUgc2hhcmVkIGV4ZWN1dGlvbiBzdGF0ZSBmb3IgdGhlIHBsYW4gdHJlZQog ICoJCSAgJ2VmbGFncycgaXMgYSBiaXR3aXNlIE9SIG9mIGZsYWcgYml0cyBkZXNjcmliZWQgaW4g ZXhlY3V0b3IuaAogICoKLSAqCQlSZXR1cm5zIGEgUGxhblN0YXRlIG5vZGUgY29ycmVzcG9uZGlu ZyB0byB0aGUgZ2l2ZW4gUGxhbiBub2RlLgorICoJCVJldHVybnMgYSBQbGFuU3RhdGUgbm9kZSBj b3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBQbGFuIG5vZGUgb3IgTlVMTC4KKyAqCisgKgkJTlVM TCBtYXkgYmUgcmV0dXJuZWQgZWl0aGVyIGlmIHRoZSBpbnB1dCBub2RlIGlzIE5VTEwgb3IgaWYg dGhlIHBsYW4KKyAqCQl0cmVlIHRoYXQgdGhlIG5vZGUgaXMgYSBwYXJ0IG9mIGlzIGZvdW5kIHRv IGhhdmUgYmVlbiBpbnZhbGlkYXRlZCB3aGVuCisgKgkJdGFraW5nIGEgbG9jayBvbiB0aGUgcmVs YXRpb24gbWVudGlvbmVkIGluIHRoZSBub2RlIG9yIGluIGEgY2hpbGQKKyAqCQlub2RlLiAgVGhl IGxhdHRlciBjYXNlIGFyaXNlcyBpZiB0aGUgcGxhbiB0cmVlIGNvbnRhaW5zIGluaGVyaXRhbmNl LworICoJCXBhcnRpdGlvbiBjaGlsZCB0YWJsZXMgYW5kIGlzIGZyb20gYSBDYWNoZWRQbGFuLgor ICoKKyAqCQlBbHNvLCBhbGwgbm9uLU5VTEwgUGxhblN0YXRlIG5vZGVzIGFyZSBhZGRlZCB0bwor ICoJCWVzdGF0ZS0+ZXNfaW5pdGVkX3BsYW5ub2RlcyBmb3IgRXhlY0VuZFBsYW4oKSB0byBpdGVy YXRlIG92ZXIgdG8gY2xvc2UKKyAqCQllYWNoIG9uZSB1c2luZyBFeGVjRW5kTm9kZSgpLgogICog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgKi8KIFBsYW5TdGF0ZSAqCkBAIC0zODgsNiArMzk4LDEzIEBAIEV4 ZWNJbml0Tm9kZShQbGFuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCWJy ZWFrOwogCX0KIAorCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJeworCQlBc3Nl cnQocmVzdWx0ID09IE5VTEwpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlBc3NlcnQocmVzdWx0 ICE9IE5VTEwpOwogCUV4ZWNTZXRFeGVjUHJvY05vZGUocmVzdWx0LCByZXN1bHQtPkV4ZWNQcm9j Tm9kZSk7CiAKIAkvKgpAQCAtNDExLDYgKzQyOCwxMyBAQCBFeGVjSW5pdE5vZGUoUGxhbiAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCXJlc3VsdC0+aW5zdHJ1bWVudCA9IElu c3RyQWxsb2MoMSwgZXN0YXRlLT5lc19pbnN0cnVtZW50LAogCQkJCQkJCQkJCXJlc3VsdC0+YXN5 bmNfY2FwYWJsZSk7CiAKKwkvKgorCSAqIFJlbWVtYmVyIHZhbGlkIFBsYW5TdGF0ZSBub2RlcyBp biBFU3RhdGUgZm9yIHRoZSBwcm9jZXNzaW5nIGluCisJICogRXhlY0VuZFBsYW4oKS4KKwkgKi8K Kwllc3RhdGUtPmVzX2luaXRlZF9wbGFubm9kZXMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfaW5pdGVk X3BsYW5ub2RlcywKKwkJCQkJCQkJCQkgIHJlc3VsdCk7CisKIAlyZXR1cm4gcmVzdWx0OwogfQog CkBAIC01NDUsMjkgKzU2OSwyMSBAQCBNdWx0aUV4ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5vZGUp CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKgkJRXhlY0VuZE5vZGUKICAqCi0gKgkJUmVjdXJzaXZlbHkgY2xlYW5z IHVwIGFsbCB0aGUgbm9kZXMgaW4gdGhlIHBsYW4gcm9vdGVkCi0gKgkJYXQgJ25vZGUnLgorICoJ CUNsZWFucyB1cCBub2RlCiAgKgotICoJCUFmdGVyIHRoaXMgb3BlcmF0aW9uLCB0aGUgcXVlcnkg cGxhbiB3aWxsIG5vdCBiZSBhYmxlIHRvIGJlCi0gKgkJcHJvY2Vzc2VkIGFueSBmdXJ0aGVyLiAg VGhpcyBzaG91bGQgYmUgY2FsbGVkIG9ubHkgYWZ0ZXIKKyAqCQlDaGlsZCBub2RlcywgaWYgYW55 LCB3b3VsZCBoYXZlIGJlZW4gY2xvc2VkIGJ5IHRoZSBjYWxsZXIsIHNvIHRoZQorICoJCUV4ZWNF bmQqIHJvdXRpbmUgZm9yIGEgZ2l2ZW4gbm9kZSB0eXBlIGlzIG9ubHkgcmVzcG9uc2libGUgZm9y CisgKgkJY2xlYW5pbmcgdXAgdGhlIHJlc291cmNlcyBsb2NhbCB0byB0aGF0IG5vZGUuCisgKgor ICoJCUFmdGVyIHRoaXMgb3BlcmF0aW9uLCB0aGUgcXVlcnkgcGxhbiBjb250YWluaW5nIHRoaXMg bm9kZSB3aWxsIG5vdCBiZQorICoJCWFibGUgdG8gYmUgcHJvY2Vzc2VkIGFueSBmdXJ0aGVyLiAg VGhpcyBzaG91bGQgYmUgY2FsbGVkIG9ubHkgYWZ0ZXIKICAqCQl0aGUgcXVlcnkgcGxhbiBoYXMg YmVlbiBmdWxseSBleGVjdXRlZC4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogdm9pZAogRXhlY0VuZE5vZGUo UGxhblN0YXRlICpub2RlKQogewotCS8qCi0JICogZG8gbm90aGluZyB3aGVuIHdlIGdldCB0byB0 aGUgZW5kIG9mIGEgbGVhZiBvbiB0cmVlLgotCSAqLwotCWlmIChub2RlID09IE5VTEwpCi0JCXJl dHVybjsKLQotCS8qCi0JICogTWFrZSBzdXJlIHRoZXJlJ3MgZW5vdWdoIHN0YWNrIGF2YWlsYWJs ZS4gTmVlZCB0byBjaGVjayBoZXJlLCBpbgotCSAqIGFkZGl0aW9uIHRvIEV4ZWNQcm9jTm9kZSgp ICh2aWEgRXhlY1Byb2NOb2RlRmlyc3QoKSksIGJlY2F1c2UgaXQncyBub3QKLQkgKiBndWFyYW50 ZWVkIHRoYXQgRXhlY1Byb2NOb2RlKCkgaXMgcmVhY2hlZCBmb3IgYWxsIG5vZGVzLgotCSAqLwot CWNoZWNrX3N0YWNrX2RlcHRoKCk7CisJQXNzZXJ0KG5vZGUgIT0gTlVMTCk7CiAKIAlpZiAobm9k ZS0+Y2hnUGFyYW0gIT0gTlVMTCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IDQ3 NThhYjQxMzIuLjU5OWRiNGQ1OTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC04MDQs NyArODA0LDggQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgSW5k ZXggcnRpKQogCiAJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKTsKIAotCQlp ZiAoIUlzUGFyYWxsZWxXb3JrZXIoKSkKKwkJaWYgKCFJc1BhcmFsbGVsV29ya2VyKCkgJiYKKwkJ CShlc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJiBFWEVDX0ZMQUdfR0VUX0xPQ0tTKSA9PSAwKQogCQl7 CiAJCQkvKgogCQkJICogSW4gYSBub3JtYWwgcXVlcnksIHdlIHNob3VsZCBhbHJlYWR5IGhhdmUg dGhlIGFwcHJvcHJpYXRlIGxvY2ssCkBAIC04MjAsOSArODIxLDExIEBAIEV4ZWNHZXRSYW5nZVRh YmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSkKIAkJZWxzZQogCQl7CiAJCQkv KgotCQkJICogSWYgd2UgYXJlIGEgcGFyYWxsZWwgd29ya2VyLCB3ZSBuZWVkIHRvIG9idGFpbiBv dXIgb3duIGxvY2FsCi0JCQkgKiBsb2NrIG9uIHRoZSByZWxhdGlvbi4gIFRoaXMgZW5zdXJlcyBz YW5lIGJlaGF2aW9yIGluIGNhc2UgdGhlCi0JCQkgKiBwYXJlbnQgcHJvY2VzcyBleGl0cyBiZWZv cmUgd2UgZG8uCisJCQkgKiBUYWtlIGEgbG9jayBpZiB3ZSBhcmUgYSBwYXJhbGxlbCB3b3JrZXIg b3IgaWYgdGhlIGNhbGxlciBoYXMgc2V0CisJCQkgKiB0aGUgR0VUX0xPQ0tTIGZsYWcgKGNhbGxl cnMgdGhhdCBvcGVuIGEgY2hpbGQgcmVsYXRpb24gd2hlbgorCQkJICogaW5pdGlhbGl6aW5nIGEg Y2FjaGVkIHBsYW4pLiAgUGFyYWxsZWwgd29ya2VycyBuZWVkIHRvIGhhdmUKKwkJCSAqIHRoZWly IG93biBsb2NhbCBsb2NrIG9uIHRoZSByZWxhdGlvbi4gIFRoaXMgZW5zdXJlcyBzYW5lCisJCQkg KiBiZWhhdmlvciBpbiBjYXNlIHRoZSBwYXJlbnQgcHJvY2VzcyBleGl0cyBiZWZvcmUgd2UgZG8u CiAJCQkgKi8KIAkJCXJlbCA9IHRhYmxlX29wZW4ocnRlLT5yZWxpZCwgcnRlLT5yZWxsb2NrbW9k ZSk7CiAJCX0KQEAgLTgzMyw2ICs4MzYsNTggQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihF U3RhdGUgKmVzdGF0ZSwgSW5kZXggcnRpKQogCXJldHVybiByZWw7CiB9CiAKKy8qCisgKiBFeGVj TG9ja0VsaWRlZEFwcGVuZENoaWxkUmVsYXRpb25zCisgKgkJTG9jayBjaGlsZCByZWxhdGlvbnMg d2hvc2UgcGFyZW50IEFwcGVuZC9NZXJnZUFwcGVuZCBub2RlIHdhcyByZW1vdmVkCisgKgkJYnkg dGhlIHBsYW5uZXIKKyAqLwordm9pZAorRXhlY0xvY2tFbGlkZWRBcHBlbmRDaGlsZFJlbGF0aW9u cyhFU3RhdGUgKmVzdGF0ZSwgTGlzdCAqZWxpZGVkQXBwZW5kQ2hpbGRSZWxzKQoreworCUxpc3RD ZWxsICpsOworCisJZm9yZWFjaChsLCBlbGlkZWRBcHBlbmRDaGlsZFJlbHMpCisJeworCQlSYW5n ZVRibEVudHJ5ICpydGUgPSBleGVjX3J0X2ZldGNoKGxmaXJzdF9pbnQobCksIGVzdGF0ZSk7CisK KwkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pOworCQlBc3NlcnQoT2lkSXNW YWxpZChydGUtPnJlbGlkKSk7CisJCUFzc2VydChydGUtPnJlbGxvY2ttb2RlICE9IE5vTG9jayk7 CisJCUxvY2tSZWxhdGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKKwl9Cit9 CisKKy8qCisgKiBFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlvbnMKKyAqCQlMb2NrIG5vbi1s ZWFmIHJlbGF0aW9ucyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieSBhIGdpdmVuCisgKgkJ QXBwZW5kL01lcmdlQXBwZW5kIG5vZGUKKyAqLwordm9pZAorRXhlY0xvY2tBcHBlbmROb25MZWFm UmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlLCBMaXN0ICphbGxwYXJ0cmVsaWRzKQoreworCUxpc3RD ZWxsICpsOworCisJZm9yZWFjaChsLCBhbGxwYXJ0cmVsaWRzKQorCXsKKwkJQml0bWFwc2V0ICpw YXJ0cmVsaWRzID0gbGZpcnN0X25vZGUoQml0bWFwc2V0LCBsKTsKKwkJaW50CQlpOworCisJCS8q CisJCSAqIFhYWCAtIG5vIG5lZWQgcmVhbGx5IHRvIGxvY2sgdGhlIGZpcnN0IG1lbWJlciBvZiBl YWNoIGJpdG1hcHNldAorCQkgKiBiZWNhdXNlIGl0IHN0YW5kcyBmb3IgdGhlIHJvb3QgcGFyZW50 IG1lbnRpb25lZCBpbiB0aGUgcXVlcnkKKwkJICogdGhhdCBzaG91bGQgYWx3YXlzIGhhdmUgYmVl biBsb2NrZWQgYmVmb3JlIGVudGVyaW5nIHRoZQorCQkgKiBleGVjdXRvci4KKwkJICovCisJCWkg PSAtMTsKKwkJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHBhcnRyZWxpZHMsIGkpKSA+IDAp CisJCXsKKwkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IGV4ZWNfcnRfZmV0Y2goaSwgZXN0YXRlKTsK KworCQkJTG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQl9 CisJfQorfQorCiAvKgogICogRXhlY0luaXRSZXN1bHRSZWxhdGlvbgogICoJCU9wZW4gcmVsYXRp b24gZ2l2ZW4gYnkgdGhlIHBhc3NlZC1pbiBSVCBpbmRleCBhbmQgZmlsbCBpdHMKQEAgLTg0OCw2 ICs5MDMsOCBAQCBFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRS ZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCVJlbGF0aW9uCXJlc3VsdFJlbGF0aW9uRGVzYzsKIAog CXJlc3VsdFJlbGF0aW9uRGVzYyA9IEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRlLCBy dGkpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybjsKIAlJbml0 UmVzdWx0UmVsSW5mbyhyZXN1bHRSZWxJbmZvLAogCQkJCQkgIHJlc3VsdFJlbGF0aW9uRGVzYywK IAkJCQkJICBydGksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4IGY1NTQyNGViNWEuLmM4 OGY3MmJjNGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCkBAIC04MzgsNiArODM4LDcgQEAg cG9zdHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBm Y2FjaGUpCiAJCWRlc3QgPSBOb25lX1JlY2VpdmVyOwogCiAJZXMtPnFkID0gQ3JlYXRlUXVlcnlE ZXNjKGVzLT5zdG10LAorCQkJCQkJCSBOVUxMLAkvKiBmbWdyX3NxbCgpIGRvZXNuJ3QgdXNlIENh Y2hlZFBsYW5zICovCiAJCQkJCQkJIGZjYWNoZS0+c3JjLAogCQkJCQkJCSBHZXRBY3RpdmVTbmFw c2hvdCgpLAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3QsCkBAIC04NjMsNiArODY0LDcgQEAgcG9z dHF1ZWxfc3RhcnQoZXhlY3V0aW9uX3N0YXRlICplcywgU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2Fj aGUpCiAJCWVsc2UKIAkJCWVmbGFncyA9IDA7CQkJLyogZGVmYXVsdCBydW4tdG8tY29tcGxldGlv biBmbGFncyAqLwogCQlFeGVjdXRvclN0YXJ0KGVzLT5xZCwgZWZsYWdzKTsKKwkJQXNzZXJ0KGVz LT5xZC0+cGxhbl92YWxpZCk7CiAJfQogCiAJZXMtPnN0YXR1cyA9IEZfRVhFQ19SVU47CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQWdnLmMKaW5kZXggNDY4ZGI5NGZlNS4uNTRmNzQyODIwYiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVBZ2cuYwpAQCAtMzMwNCw2ICszMzA0LDggQEAgRXhlY0luaXRBZ2coQWdnICpub2RlLCBF U3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJZWZsYWdzICY9IH5FWEVDX0ZMQUdfUkVXSU5E OwogCW91dGVyUGxhbiA9IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZShhZ2dzdGF0 ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIGluaXRp YWxpemUgc291cmNlIHR1cGxlIHR5cGUuCkBAIC00MzA0LDcgKzQzMDYsNiBAQCBHZXRBZ2dJbml0 VmFsKERhdHVtIHRleHRJbml0VmFsLCBPaWQgdHJhbnN0eXBlKQogdm9pZAogRXhlY0VuZEFnZyhB Z2dTdGF0ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgICpvdXRlclBsYW47CiAJaW50CQkJdHJhbnNu bzsKIAlpbnQJCQludW1Hcm91cGluZ1NldHMgPSBNYXgobm9kZS0+bWF4c2V0cywgMSk7CiAJaW50 CQkJc2V0bm87CkBAIC00MzY2LDkgKzQzNjcsNiBAQCBFeGVjRW5kQWdnKEFnZ1N0YXRlICpub2Rl KQogCiAJLyogY2xlYW4gdXAgdHVwbGUgdGFibGUgKi8KIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5z cy5zc19TY2FuVHVwbGVTbG90KTsKLQotCW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUp OwotCUV4ZWNFbmROb2RlKG91dGVyUGxhbik7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVB cHBlbmQuYwppbmRleCA2MDlkZjZiOWU2Li5iZDgxZDBjYTRiIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUFwcGVuZC5jCkBAIC0xMzMsNiArMTMzLDI0IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJYXBwZW5kc3RhdGUtPmFzX3N5bmNkb25l ID0gZmFsc2U7CiAJYXBwZW5kc3RhdGUtPmFzX2JlZ3VuID0gZmFsc2U7CiAKKwkvKgorCSAqIE11 c3QgdGFrZSBsb2NrcyBvbiBjaGlsZCB0YWJsZXMgaWYgcnVubmluZyBhIGNhY2hlZCBwbGFuLCBi ZWNhdXNlCisJICogR2V0Q2FjaGVkUGxhbigpIHdvdWxkJ3ZlIG9ubHkgbG9ja2VkIHRoZSByb290 IHBhcmVudCBuYW1lZCBpbiB0aGUKKwkgKiBxdWVyeS4KKwkgKgorCSAqIEZpcnN0IGxvY2sgbm9u LWxlYWYgcGFydGl0aW9ucyBiZWZvcmUgZG9pbmcgcHJ1bmluZyBpZiBhbnkuICBFdmVuIHdoZW4K KwkgKiBubyBwcnVuaW5nIGlzIHRvIGJlIGRvbmUsIG5vbi1sZWFmIHBhcnRpdGlvbnMgc3RpbGwg bXVzdCBiZSBsb2NrZWQKKwkgKiBleHBsaWNpdGx5IGxpa2UgdGhpcywgYmVjYXVzZSB0aGV5J3Jl IG5vdCByZWZlcmVuY2VkIGVsc2V3aGVyZSBpbgorCSAqIHRoZSBwbGFuIHRyZWUuCisJICovCisJ aWYgKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbikKKwl7CisJCUV4ZWNMb2NrQXBwZW5kTm9uTGVhZlJl bGF0aW9ucyhlc3RhdGUsIG5vZGUtPmFsbHBhcnRyZWxpZHMpOworCQlpZiAoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7CisKKwl9CisKIAkvKiBJZiBydW4tdGlt ZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVkLCB0aGVuIHNldCB0aGF0IHVwIG5vdyAqLwog CWlmIChub2RlLT5wYXJ0X3BydW5lX2luZm8gIT0gTlVMTCkKIAl7CkBAIC0xNDcsNiArMTY1LDgg QEAgRXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyksCiAJCQkJCQkJ CQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAogCQkJCQkJCQkJCQkgICZ2YWxpZHN1YnBsYW5z KTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwog CQlhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUgPSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBi bXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7CiAKQEAgLTE4OCw2ICsyMDgsMTMgQEAgRXhl Y0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlh cHBlbmRwbGFuc3RhdGVzID0gKFBsYW5TdGF0ZSAqKikgcGFsbG9jKG5wbGFucyAqCiAJCQkJCQkJ CQkJCSBzaXplb2YoUGxhblN0YXRlICopKTsKIAorCS8qCisJICogU2V0IGVmbGFncyBzbyB0aGF0 IEV4ZWNJbml0Tm9kZSgpIHJlY3Vyc2l2ZWx5IGxvY2tzIGNoaWxkIHJlbGF0aW9ucworCSAqIGFw cGVhcmluZyBpbiBhcHBlbmRwbGFucy4KKwkgKi8KKwlpZiAoZXN0YXRlLT5lc19jYWNoZWRwbGFu KQorCQllc3RhdGUtPmVzX3RvcF9lZmxhZ3MgfD0gRVhFQ19GTEFHX0dFVF9MT0NLUzsKKwogCS8q CiAJICogY2FsbCBFeGVjSW5pdE5vZGUgb24gZWFjaCBvZiB0aGUgdmFsaWQgcGxhbnMgdG8gYmUg ZXhlY3V0ZWQgYW5kIHNhdmUKIAkgKiB0aGUgcmVzdWx0cyBpbnRvIHRoZSBhcHBlbmRwbGFuc3Rh dGVzIGFycmF5LgpAQCAtMjIxLDggKzI0OCwxMiBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJZmlyc3R2YWxpZCA9IGo7CiAKIAkJ YXBwZW5kcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVm bGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gTlVM TDsKIAl9CiAKKwllc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJj0gfkVYRUNfRkxBR19HRVRfTE9DS1M7 CisKIAlhcHBlbmRzdGF0ZS0+YXNfZmlyc3RfcGFydGlhbF9wbGFuID0gZmlyc3R2YWxpZDsKIAlh cHBlbmRzdGF0ZS0+YXBwZW5kcGxhbnMgPSBhcHBlbmRwbGFuc3RhdGVzOwogCWFwcGVuZHN0YXRl LT5hc19ucGxhbnMgPSBucGxhbnM7CkBAIC0zNzYsMzAgKzQwNywxNSBAQCBFeGVjQXBwZW5kKFBs YW5TdGF0ZSAqcHN0YXRlKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY0VuZEFwcGVuZAotICoKLSAq CQlTaHV0cyBkb3duIHRoZSBzdWJzY2FucyBvZiB0aGUgYXBwZW5kIG5vZGUuCi0gKgotICoJCVJl dHVybnMgbm90aGluZyBvZiBpbnRlcmVzdC4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogdm9pZAogRXhlY0Vu ZEFwcGVuZChBcHBlbmRTdGF0ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgKiphcHBlbmRwbGFuczsK LQlpbnQJCQlucGxhbnM7Ci0JaW50CQkJaTsKLQotCS8qCi0JICogZ2V0IGluZm9ybWF0aW9uIGZy b20gdGhlIG5vZGUKLQkgKi8KLQlhcHBlbmRwbGFucyA9IG5vZGUtPmFwcGVuZHBsYW5zOwotCW5w bGFucyA9IG5vZGUtPmFzX25wbGFuczsKLQotCS8qCi0JICogc2h1dCBkb3duIGVhY2ggb2YgdGhl IHN1YnNjYW5zCi0JICovCi0JZm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsrKQotCQlFeGVjRW5k Tm9kZShhcHBlbmRwbGFuc1tpXSk7CisJIC8qCisJICAqIE5vdGhpbmcgdG8gZG8gYXMgc3Vic2Nh bnMgb2YgdGhlIGFwcGVuZCBub2RlIHdvdWxkIGJlIGNsZWFuZWQgdXAgYnkKKwkgICoJRXhlY0Vu ZFBsYW4oKS4KKwkgICovCiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVCaXRtYXBBbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQu YwppbmRleCA0YzVlYjJiMjNiLi4xODdhZWE0YmI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwQW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcEFuZC5jCkBAIC04OCw4ICs4OCw5IEBAIEV4ZWNJbml0Qml0bWFwQW5kKEJpdG1hcEFuZCAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJZm9yZWFjaChsLCBub2RlLT5iaXRt YXBwbGFucykKIAl7CiAJCWluaXROb2RlID0gKFBsYW4gKikgbGZpcnN0KGwpOwotCQliaXRtYXBw bGFuc3RhdGVzW2ldID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7Ci0J CWkrKzsKKwkJYml0bWFwcGxhbnN0YXRlc1tpKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBl c3RhdGUsIGVmbGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQly ZXR1cm4gTlVMTDsKIAl9CiAKIAkvKgpAQCAtMTY4LDMzICsxNjksMTUgQEAgTXVsdGlFeGVjQml0 bWFwQW5kKEJpdG1hcEFuZFN0YXRlICpub2RlKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY0VuZEJp dG1hcEFuZAotICoKLSAqCQlTaHV0cyBkb3duIHRoZSBzdWJzY2FucyBvZiB0aGUgQml0bWFwQW5k IG5vZGUuCi0gKgotICoJCVJldHVybnMgbm90aGluZyBvZiBpbnRlcmVzdC4KICAqIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICAqLwogdm9pZAogRXhlY0VuZEJpdG1hcEFuZChCaXRtYXBBbmRTdGF0ZSAqbm9kZSkKIHsKLQlQ bGFuU3RhdGUgKipiaXRtYXBwbGFuczsKLQlpbnQJCQlucGxhbnM7Ci0JaW50CQkJaTsKLQotCS8q Ci0JICogZ2V0IGluZm9ybWF0aW9uIGZyb20gdGhlIG5vZGUKLQkgKi8KLQliaXRtYXBwbGFucyA9 IG5vZGUtPmJpdG1hcHBsYW5zOwotCW5wbGFucyA9IG5vZGUtPm5wbGFuczsKLQotCS8qCi0JICog c2h1dCBkb3duIGVhY2ggb2YgdGhlIHN1YnNjYW5zICh0aGF0IHdlJ3ZlIGluaXRpYWxpemVkKQot CSAqLwotCWZvciAoaSA9IDA7IGkgPCBucGxhbnM7IGkrKykKLQl7Ci0JCWlmIChiaXRtYXBwbGFu c1tpXSkKLQkJCUV4ZWNFbmROb2RlKGJpdG1hcHBsYW5zW2ldKTsKLQl9CisJIC8qCisJICAqIE5v dGhpbmcgdG8gZG8gYXMgYW55IHN1YnNjYW5zIHRoYXQgd291bGQgaGF2ZSBiZWVuIGluaXRpYWxp emVkIHdvdWxkCisJICAqIGJlIGNsZWFuZWQgdXAgYnkgRXhlY0VuZFBsYW4oKS4KKwkgICovCiB9 CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFw c2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKaW5kZXgg ZjM1ZGYwYjhiZi4uZWUxMDA4NTE5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUJpdG1hcEhlYXBzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1h cEhlYXBzY2FuLmMKQEAgLTY2NywxMSArNjY3LDYgQEAgRXhlY0VuZEJpdG1hcEhlYXBTY2FuKEJp dG1hcEhlYXBTY2FuU3RhdGUgKm5vZGUpCiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBz X1Jlc3VsdFR1cGxlU2xvdCk7CiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxl U2xvdCk7CiAKLQkvKgotCSAqIGNsb3NlIGRvd24gc3VicGxhbnMKLQkgKi8KLQlFeGVjRW5kTm9k ZShvdXRlclBsYW5TdGF0ZShub2RlKSk7Ci0KIAkvKgogCSAqIHJlbGVhc2UgYml0bWFwcyBhbmQg YnVmZmVycyBpZiBhbnkKIAkgKi8KQEAgLTc2MywxMSArNzU4LDE1IEBAIEV4ZWNJbml0Qml0bWFw SGVhcFNjYW4oQml0bWFwSGVhcFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRpb24gPSBF eGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlZmxhZ3Mp OworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJ LyoKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoc2Nh bnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsK KwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8q CiAJICogZ2V0IHRoZSBzY2FuIHR5cGUgZnJvbSB0aGUgcmVsYXRpb24gZGVzY3JpcHRvci4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYwppbmRleCA4M2VjOWVkZTg5 Li45OTAxNTgxMmExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw SW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nh bi5jCkBAIC0yMTEsNiArMjExLDcgQEAgQml0bWFwSW5kZXhTY2FuU3RhdGUgKgogRXhlY0luaXRC aXRtYXBJbmRleFNjYW4oQml0bWFwSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIHsKIAlCaXRtYXBJbmRleFNjYW5TdGF0ZSAqaW5kZXhzdGF0ZTsKKwlSZWxhdGlv bglpbmRleFJlbGF0aW9uOwogCUxPQ0tNT0RFCWxvY2ttb2RlOwogCiAJLyogY2hlY2sgZm9yIHVu c3VwcG9ydGVkIGZsYWdzICovCkBAIC0yNjIsNyArMjYzLDEzIEBAIEV4ZWNJbml0Qml0bWFwSW5k ZXhTY2FuKEJpdG1hcEluZGV4U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAKIAkvKiBPcGVuIHRoZSBpbmRleCByZWxhdGlvbi4gKi8KIAlsb2NrbW9kZSA9IGV4ZWNfcnRf ZmV0Y2gobm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVzdGF0ZSktPnJlbGxvY2ttb2RlOwotCWluZGV4 c3RhdGUtPmJpc3NfUmVsYXRpb25EZXNjID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2Nr bW9kZSk7CisJaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4obm9kZS0+aW5kZXhpZCwgbG9ja21v ZGUpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJeworCQlpbmRleF9jbG9z ZShpbmRleFJlbGF0aW9uLCBsb2NrbW9kZSk7CisJCXJldHVybiBOVUxMOworCX0KKwlpbmRleHN0 YXRlLT5iaXNzX1JlbGF0aW9uRGVzYyA9IGluZGV4UmVsYXRpb247CiAKIAkvKgogCSAqIEluaXRp YWxpemUgaW5kZXgtc3BlY2lmaWMgc2NhbiBzdGF0ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw T3IuYwppbmRleCAwYmY4YWY5NjUyLi4zZjUxOTE4ZmUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQml0bWFwT3IuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl Qml0bWFwT3IuYwpAQCAtODksOCArODksOSBAQCBFeGVjSW5pdEJpdG1hcE9yKEJpdG1hcE9yICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlmb3JlYWNoKGwsIG5vZGUtPmJpdG1h cHBsYW5zKQogCXsKIAkJaW5pdE5vZGUgPSAoUGxhbiAqKSBsZmlyc3QobCk7Ci0JCWJpdG1hcHBs YW5zdGF0ZXNbaV0gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKLQkJ aSsrOworCQliaXRtYXBwbGFuc3RhdGVzW2krK10gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVz dGF0ZSwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJl dHVybiBOVUxMOwogCX0KIAogCS8qCkBAIC0xODYsMzMgKzE4NywxNSBAQCBNdWx0aUV4ZWNCaXRt YXBPcihCaXRtYXBPclN0YXRlICpub2RlKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY0VuZEJpdG1h cE9yCi0gKgotICoJCVNodXRzIGRvd24gdGhlIHN1YnNjYW5zIG9mIHRoZSBCaXRtYXBPciBub2Rl LgotICoKLSAqCQlSZXR1cm5zIG5vdGhpbmcgb2YgaW50ZXJlc3QuCiAgKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8K IHZvaWQKIEV4ZWNFbmRCaXRtYXBPcihCaXRtYXBPclN0YXRlICpub2RlKQogewotCVBsYW5TdGF0 ZSAqKmJpdG1hcHBsYW5zOwotCWludAkJCW5wbGFuczsKLQlpbnQJCQlpOwotCi0JLyoKLQkgKiBn ZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgbm9kZQotCSAqLwotCWJpdG1hcHBsYW5zID0gbm9kZS0+ Yml0bWFwcGxhbnM7Ci0JbnBsYW5zID0gbm9kZS0+bnBsYW5zOwotCi0JLyoKLQkgKiBzaHV0IGRv d24gZWFjaCBvZiB0aGUgc3Vic2NhbnMgKHRoYXQgd2UndmUgaW5pdGlhbGl6ZWQpCi0JICovCi0J Zm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsrKQotCXsKLQkJaWYgKGJpdG1hcHBsYW5zW2ldKQot CQkJRXhlY0VuZE5vZGUoYml0bWFwcGxhbnNbaV0pOwotCX0KKwkgLyoKKwkgICogTm90aGluZyB0 byBkbyBhcyBhbnkgc3Vic2NhbnMgdGhhdCB3b3VsZCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgd291 bGQKKwkgICogYmUgY2xlYW5lZCB1cCBieSBFeGVjRW5kUGxhbigpLgorCSAgKi8KIH0KIAogdm9p ZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCmluZGV4IGJkNDJjNjViMjkuLjkxMjM5Y2M1MDAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKQEAgLTYxLDYgKzYxLDggQEAgRXhlY0luaXRD dXN0b21TY2FuKEN1c3RvbVNjYW4gKmNzY2FuLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAlpZiAoc2NhbnJlbGlkID4gMCkKIAl7CiAJCXNjYW5fcmVsID0gRXhlY09wZW5TY2FuUmVsYXRp b24oZXN0YXRlLCBzY2FucmVsaWQsIGVmbGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJCQlyZXR1cm4gTlVMTDsKIAkJY3NzLT5zcy5zc19jdXJyZW50UmVsYXRpb24g PSBzY2FuX3JlbDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVG b3JlaWduc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMKaW5k ZXggYzIxMzlhY2NhMC4uMjA3MTY1ZjQ0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUZvcmVpZ25zY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVp Z25zY2FuLmMKQEAgLTE3Myw2ICsxNzMsOCBAQCBFeGVjSW5pdEZvcmVpZ25TY2FuKEZvcmVpZ25T Y2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlpZiAoc2NhbnJlbGlkID4g MCkKIAl7CiAJCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwg c2NhbnJlbGlkLCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQor CQkJcmV0dXJuIE5VTEw7CiAJCXNjYW5zdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3Vy cmVudFJlbGF0aW9uOwogCQlmZHdyb3V0aW5lID0gR2V0RmR3Um91dGluZUZvclJlbGF0aW9uKGN1 cnJlbnRSZWxhdGlvbiwgdHJ1ZSk7CiAJfQpAQCAtMjY0LDYgKzI2Niw4IEBAIEV4ZWNJbml0Rm9y ZWlnblNjYW4oRm9yZWlnblNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CWlmIChvdXRlclBsYW4obm9kZSkpCiAJCW91dGVyUGxhblN0YXRlKHNjYW5zdGF0ZSkgPQogCQkJ RXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBUZWxs IHRoZSBGRFcgdG8gaW5pdGlhbGl6ZSB0aGUgc2Nhbi4KQEAgLTMwOSwxMCArMzEzLDYgQEAgRXhl Y0VuZEZvcmVpZ25TY2FuKEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUpCiAJZWxzZQogCQlub2RlLT5m ZHdyb3V0aW5lLT5FbmRGb3JlaWduU2Nhbihub2RlKTsKIAotCS8qIFNodXQgZG93biBhbnkgb3V0 ZXIgcGxhbi4gKi8KLQlpZiAob3V0ZXJQbGFuU3RhdGUobm9kZSkpCi0JCUV4ZWNFbmROb2RlKG91 dGVyUGxhblN0YXRlKG5vZGUpKTsKLQogCS8qIEZyZWUgdGhlIGV4cHJjb250ZXh0ICovCiAJRXhl Y0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlR2F0aGVyLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVy LmMKaW5kZXggMzA3ZmMxMGVlYS4uNDAwYzhiNDJlZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUdhdGhlci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRo ZXIuYwpAQCAtODksNiArODksOSBAQCBFeGVjSW5pdEdhdGhlcihHYXRoZXIgKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW91dGVyTm9kZSA9IG91dGVyUGxhbihub2Rl KTsKIAlvdXRlclBsYW5TdGF0ZShnYXRoZXJzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2Rl LCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJ cmV0dXJuIE5VTEw7CisKIAl0dXBEZXNjID0gRXhlY0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3Rh dGUoZ2F0aGVyc3RhdGUpKTsKIAogCS8qCkBAIC0yNDgsNyArMjUxLDYgQEAgRXhlY0dhdGhlcihQ bGFuU3RhdGUgKnBzdGF0ZSkKIHZvaWQKIEV4ZWNFbmRHYXRoZXIoR2F0aGVyU3RhdGUgKm5vZGUp CiB7Ci0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwkvKiBsZXQgY2hpbGRyZW4g Y2xlYW4gdXAgZmlyc3QgKi8KIAlFeGVjU2h1dGRvd25HYXRoZXIobm9kZSk7CiAJRXhlY0ZyZWVF eHByQ29udGV4dCgmbm9kZS0+cHMpOwogCWlmIChub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3Qp CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyTWVyZ2UuYyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCmluZGV4IDlkNWUxYTQ2ZTkuLjkw NzdjNGJjNTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJn ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jCkBAIC0xMDgs NiArMTA4LDggQEAgRXhlY0luaXRHYXRoZXJNZXJnZShHYXRoZXJNZXJnZSAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJOb2RlID0gb3V0ZXJQbGFuKG5vZGUp OwogCW91dGVyUGxhblN0YXRlKGdtX3N0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gTlVMTDsKIAogCS8qCiAJICogTGVhZGVyIG1heSBhY2Nlc3MgRXhlY1Byb2NOb2RlIHJlc3Vs dCBkaXJlY3RseSAoaWYKQEAgLTI4OCw3ICsyOTAsNiBAQCBFeGVjR2F0aGVyTWVyZ2UoUGxhblN0 YXRlICpwc3RhdGUpCiB2b2lkCiBFeGVjRW5kR2F0aGVyTWVyZ2UoR2F0aGVyTWVyZ2VTdGF0ZSAq bm9kZSkKIHsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CS8qIGxldCBjaGls ZHJlbiBjbGVhbiB1cCBmaXJzdCAqLwogCUV4ZWNTaHV0ZG93bkdhdGhlck1lcmdlKG5vZGUpOwog CUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnBzKTsKIAlpZiAobm9kZS0+cHMucHNfUmVzdWx0 VHVwbGVTbG90KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdyb3VwLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYwppbmRleCAyNWExNjE4OTUyLi45NzZl NzM5YWI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR3JvdXAuYwpAQCAtMTg1LDYgKzE4NSw4IEBAIEV4 ZWNJbml0R3JvdXAoR3JvdXAgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAq IGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShncnBzdGF0ZSkg PSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFF eGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIElu aXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlLgpAQCAtMjI2LDE1ICsyMjgsMTAgQEAgRXhlY0lu aXRHcm91cChHcm91cCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiB2b2lkCiBF eGVjRW5kR3JvdXAoR3JvdXBTdGF0ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgICpvdXRlclBsYW47 Ci0KIAlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5wcyk7CiAKIAkvKiBjbGVhbiB1cCB0 dXBsZSB0YWJsZSAqLwogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3Qp OwotCi0Jb3V0ZXJQbGFuID0gb3V0ZXJQbGFuU3RhdGUobm9kZSk7Ci0JRXhlY0VuZE5vZGUob3V0 ZXJQbGFuKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUhhc2guYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoLmMKaW5kZXggOGI1YzM1Yjgy Yi4uZmM3YTZiMmNjYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2gu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCkBAIC0zODYsNiArMzg2LDgg QEAgRXhlY0luaXRIYXNoKEhhc2ggKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMKIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShoYXNoc3Rh dGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlm ICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkg KiBpbml0aWFsaXplIG91ciByZXN1bHQgc2xvdCBhbmQgdHlwZS4gTm8gbmVlZCB0byBidWlsZCBw cm9qZWN0aW9uCkBAIC00MTMsMTggKzQxNSwxMCBAQCBFeGVjSW5pdEhhc2goSGFzaCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiB2b2lkCiBFeGVjRW5kSGFzaChIYXNoU3RhdGUg Km5vZGUpCiB7Ci0JUGxhblN0YXRlICAqb3V0ZXJQbGFuOwotCiAJLyoKIAkgKiBmcmVlIGV4cHJj b250ZXh0CiAJICovCiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+cHMpOwotCi0JLyoKLQkg KiBzaHV0IGRvd24gdGhlIHN1YnBsYW4KLQkgKi8KLQlvdXRlclBsYW4gPSBvdXRlclBsYW5TdGF0 ZShub2RlKTsKLQlFeGVjRW5kTm9kZShvdXRlclBsYW4pOwogfQogCiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNoam9pbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUhhc2hqb2luLmMKaW5kZXggOTgwNzQ2MTI4Yi4uNGM0YjM5Y2UyZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUhhc2hqb2luLmMKQEAgLTc1Miw4ICs3NTIsMTIgQEAgRXhlY0luaXRIYXNoSm9p bihIYXNoSm9pbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJaGFzaE5vZGUg PSAoSGFzaCAqKSBpbm5lclBsYW4obm9kZSk7CiAKIAlvdXRlclBsYW5TdGF0ZShoanN0YXRlKSA9 IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFu U3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlvdXRlckRlc2MgPSBFeGVjR2V0 UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShoanN0YXRlKSk7CiAJaW5uZXJQbGFuU3RhdGUoaGpz dGF0ZSkgPSBFeGVjSW5pdE5vZGUoKFBsYW4gKikgaGFzaE5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsK KwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlpbm5l ckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShpbm5lclBsYW5TdGF0ZShoanN0YXRlKSk7CiAKIAkv KgpAQCAtODc4LDEyICs4ODIsNiBAQCBFeGVjRW5kSGFzaEpvaW4oSGFzaEpvaW5TdGF0ZSAqbm9k ZSkKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5qcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwogCUV4 ZWNDbGVhclR1cGxlKG5vZGUtPmhqX091dGVyVHVwbGVTbG90KTsKIAlFeGVjQ2xlYXJUdXBsZShu b2RlLT5oal9IYXNoVHVwbGVTbG90KTsKLQotCS8qCi0JICogY2xlYW4gdXAgc3VidHJlZXMKLQkg Ki8KLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7Ci0JRXhlY0VuZE5vZGUoaW5u ZXJQbGFuU3RhdGUobm9kZSkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu Y3JlbWVudGFsU29ydC5jCmluZGV4IDM0MjU3Y2UzNGIuLjhkZmIyY2IwZjYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMKQEAgLTEwNDEsNiArMTA0MSw4IEBA IEV4ZWNJbml0SW5jcmVtZW50YWxTb3J0KEluY3JlbWVudGFsU29ydCAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJICogbm9kZXMgbWF5IGJlIGFibGUgdG8gZG8gc29tZXRoaW5n IG1vcmUgdXNlZnVsLgogCSAqLwogCW91dGVyUGxhblN0YXRlKGluY3Jzb3J0c3RhdGUpID0gRXhl Y0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBJbml0aWFs aXplIHNjYW4gc2xvdCBhbmQgdHlwZS4KQEAgLTExMDEsMTEgKzExMDMsNiBAQCBFeGVjRW5kSW5j cmVtZW50YWxTb3J0KEluY3JlbWVudGFsU29ydFN0YXRlICpub2RlKQogCQlub2RlLT5wcmVmaXhz b3J0X3N0YXRlID0gTlVMTDsKIAl9CiAKLQkvKgotCSAqIFNodXQgZG93biB0aGUgc3VicGxhbi4K LQkgKi8KLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7Ci0KIAlTT19wcmludGYo IkV4ZWNFbmRJbmNyZW1lbnRhbFNvcnQ6IHNvcnQgbm9kZSBzaHV0ZG93blxuIik7CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jCmluZGV4IDBiNDNhOWI5NjkuLmVh OGJlZjRiOTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlz Y2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAt NDkwLDYgKzQ5MCw3IEBAIEV4ZWNJbml0SW5kZXhPbmx5U2NhbihJbmRleE9ubHlTY2FuICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHsKIAlJbmRleE9ubHlTY2FuU3RhdGUgKmlu ZGV4c3RhdGU7CiAJUmVsYXRpb24JY3VycmVudFJlbGF0aW9uOworCVJlbGF0aW9uCWluZGV4UmVs YXRpb247CiAJTE9DS01PREUJbG9ja21vZGU7CiAJVHVwbGVEZXNjCXR1cERlc2M7CiAKQEAgLTUx Miw2ICs1MTMsOCBAQCBFeGVjSW5pdEluZGV4T25seVNjYW4oSW5kZXhPbmx5U2NhbiAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgog CSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9k ZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRp b24gPSBjdXJyZW50UmVsYXRpb247CiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNj ID0gTlVMTDsJLyogbm8gaGVhcCBzY2FuIGhlcmUgKi8KQEAgLTU2NCw3ICs1NjcsMTMgQEAgRXhl Y0luaXRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCiAJLyogT3BlbiB0aGUgaW5kZXggcmVsYXRpb24uICovCiAJbG9ja21vZGUg PSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9k ZTsKLQlpbmRleHN0YXRlLT5pb3NzX1JlbGF0aW9uRGVzYyA9IGluZGV4X29wZW4obm9kZS0+aW5k ZXhpZCwgbG9ja21vZGUpOworCWluZGV4UmVsYXRpb24gPSBpbmRleF9vcGVuKG5vZGUtPmluZGV4 aWQsIGxvY2ttb2RlKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCXsKKwkJ aW5kZXhfY2xvc2UoaW5kZXhSZWxhdGlvbiwgbG9ja21vZGUpOworCQlyZXR1cm4gTlVMTDsKKwl9 CisJaW5kZXhzdGF0ZS0+aW9zc19SZWxhdGlvbkRlc2MgPSBpbmRleFJlbGF0aW9uOwogCiAJLyoK IAkgKiBJbml0aWFsaXplIGluZGV4LXNwZWNpZmljIHNjYW4gc3RhdGUKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleHNjYW4uYwppbmRleCA0NTQwYzc3ODFkLi45NTZlOWU1NTQzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC05MDQsNiArOTA0LDcgQEAgRXhlY0luaXRJbmRl eFNjYW4oSW5kZXhTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHsKIAlJ bmRleFNjYW5TdGF0ZSAqaW5kZXhzdGF0ZTsKIAlSZWxhdGlvbgljdXJyZW50UmVsYXRpb247CisJ UmVsYXRpb24JaW5kZXhSZWxhdGlvbjsKIAlMT0NLTU9ERQlsb2NrbW9kZTsKIAogCS8qCkBAIC05 MjUsNiArOTI2LDggQEAgRXhlY0luaXRJbmRleFNjYW4oSW5kZXhTY2FuICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBvcGVuIHRoZSBzY2FuIHJlbGF0aW9uCiAJICovCiAJ Y3VycmVudFJlbGF0aW9uID0gRXhlY09wZW5TY2FuUmVsYXRpb24oZXN0YXRlLCBub2RlLT5zY2Fu LnNjYW5yZWxpZCwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQor CQlyZXR1cm4gTlVMTDsKIAogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9IGN1 cnJlbnRSZWxhdGlvbjsKIAlpbmRleHN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxM OwkvKiBubyBoZWFwIHNjYW4gaGVyZSAqLwpAQCAtOTY5LDcgKzk3MiwxMyBAQCBFeGVjSW5pdElu ZGV4U2NhbihJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCiAJ LyogT3BlbiB0aGUgaW5kZXggcmVsYXRpb24uICovCiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNo KG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9kZTsKLQlpbmRleHN0YXRl LT5pc3NfUmVsYXRpb25EZXNjID0gaW5kZXhfb3Blbihub2RlLT5pbmRleGlkLCBsb2NrbW9kZSk7 CisJaW5kZXhSZWxhdGlvbiA9IGluZGV4X29wZW4obm9kZS0+aW5kZXhpZCwgbG9ja21vZGUpOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJeworCQlpbmRleF9jbG9zZShpbmRl eFJlbGF0aW9uLCBsb2NrbW9kZSk7CisJCXJldHVybiBOVUxMOworCX0KKwlpbmRleHN0YXRlLT5p c3NfUmVsYXRpb25EZXNjID0gaW5kZXhSZWxhdGlvbjsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBp bmRleC1zcGVjaWZpYyBzY2FuIHN0YXRlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTGltaXQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5jCmluZGV4IDQy NWZiZmM0MDUuLjFjYzg4NGJjNjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVMaW1pdC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5jCkBAIC00NzYs NiArNDc2LDggQEAgRXhlY0luaXRMaW1pdChMaW1pdCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxh blN0YXRlKGxpbWl0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxh Z3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwog CiAJLyoKIAkgKiBpbml0aWFsaXplIGNoaWxkIGV4cHJlc3Npb25zCkBAIC01MzUsNyArNTM3LDYg QEAgdm9pZAogRXhlY0VuZExpbWl0KExpbWl0U3RhdGUgKm5vZGUpCiB7CiAJRXhlY0ZyZWVFeHBy Q29udGV4dCgmbm9kZS0+cHMpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsK IH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCmluZGV4IGU0NTk5NzFkMzIuLjc3 NzMxYzBjOGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jCkBAIC0zMjIsNiArMzIy LDggQEAgRXhlY0luaXRMb2NrUm93cyhMb2NrUm93cyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJICogdGhlbiBpbml0aWFsaXplIG91dGVyIHBsYW4KIAkgKi8KIAlvdXRlclBs YW5TdGF0ZShscnN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4sIGVzdGF0ZSwgZWZsYWdz KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAog CS8qIG5vZGUgcmV0dXJucyB1bm1vZGlmaWVkIHNsb3RzIGZyb20gdGhlIG91dGVyIHBsYW4gKi8K IAlscnN0YXRlLT5wcy5yZXN1bHRvcHNzZXQgPSB0cnVlOwpAQCAtMzg2LDcgKzM4OCw2IEBAIEV4 ZWNFbmRMb2NrUm93cyhMb2NrUm93c1N0YXRlICpub2RlKQogewogCS8qIFdlIG1heSBoYXZlIHNo dXQgZG93biBFUFEgYWxyZWFkeSwgYnV0IG5vIGhhcm0gaW4gYW5vdGhlciBjYWxsICovCiAJRXZh bFBsYW5RdWFsRW5kKCZub2RlLT5scl9lcHFzdGF0ZSk7Ci0JRXhlY0VuZE5vZGUob3V0ZXJQbGFu U3RhdGUobm9kZSkpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNYXRlcmlhbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMKaW5kZXgg MDk2MzI2NzhiMC4uYTM4Yjk4MDVhNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZU1hdGVyaWFsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1hdGVyaWFsLmMK QEAgLTIxNCw2ICsyMTQsOCBAQCBFeGVjSW5pdE1hdGVyaWFsKE1hdGVyaWFsICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAogCW91dGVyUGxhbiA9IG91dGVyUGxhbihub2RlKTsK IAlvdXRlclBsYW5TdGF0ZShtYXRzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuLCBlc3Rh dGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJu IE5VTEw7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHR5cGUgYW5kIHNsb3QuIE5vIG5l ZWQgdG8gaW5pdGlhbGl6ZSBwcm9qZWN0aW9uIGluZm8KQEAgLTI1MCwxMSArMjUyLDYgQEAgRXhl Y0VuZE1hdGVyaWFsKE1hdGVyaWFsU3RhdGUgKm5vZGUpCiAJaWYgKG5vZGUtPnR1cGxlc3RvcmVz dGF0ZSAhPSBOVUxMKQogCQl0dXBsZXN0b3JlX2VuZChub2RlLT50dXBsZXN0b3Jlc3RhdGUpOwog CW5vZGUtPnR1cGxlc3RvcmVzdGF0ZSA9IE5VTEw7Ci0KLQkvKgotCSAqIHNodXQgZG93biB0aGUg c3VicGxhbgotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKIH0KIAog LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUu YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKaW5kZXggNGYwNDI2OWUyNi4u YTg5OTdiYTdkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVtb2l6ZS5jCkBAIC05MzgsNiArOTM4 LDggQEAgRXhlY0luaXRNZW1vaXplKE1lbW9pemUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCiAJb3V0ZXJOb2RlID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRl KG1zdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJOb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAq IEluaXRpYWxpemUgcmV0dXJuIHNsb3QgYW5kIHR5cGUuIE5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBw cm9qZWN0aW9uIGluZm8KQEAgLTEwOTksMTEgKzExMDEsNiBAQCBFeGVjRW5kTWVtb2l6ZShNZW1v aXplU3RhdGUgKm5vZGUpCiAJICogZnJlZSBleHByY29udGV4dAogCSAqLwogCUV4ZWNGcmVlRXhw ckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0JICogc2h1dCBkb3duIHRoZSBzdWJwbGFu Ci0JICovCi0JRXhlY0VuZE5vZGUob3V0ZXJQbGFuU3RhdGUobm9kZSkpOwogfQogCiB2b2lkCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IDIxYjU3MjZlNmUuLjA2YTQ4 MjdlMDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCkBAIC04MSw2ICs4 MSwyNCBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAltZXJnZXN0YXRlLT5wcy5zdGF0ZSA9IGVzdGF0ZTsKIAltZXJn ZXN0YXRlLT5wcy5FeGVjUHJvY05vZGUgPSBFeGVjTWVyZ2VBcHBlbmQ7CiAKKwkvKgorCSAqIE11 c3QgdGFrZSBsb2NrcyBvbiBjaGlsZCB0YWJsZXMgaWYgcnVubmluZyBhIGNhY2hlZCBwbGFuLCBi ZWNhdXNlCisJICogR2V0Q2FjaGVkUGxhbigpIHdvdWxkJ3ZlIG9ubHkgbG9ja2VkIHRoZSByb290 IHBhcmVudCBuYW1lZCBpbiB0aGUKKwkgKiBxdWVyeS4KKwkgKgorCSAqIEZpcnN0IGxvY2sgbm9u LWxlYWYgcGFydGl0aW9ucyBiZWZvcmUgZG9pbmcgcHJ1bmluZyBpZiBhbnkuICBFdmVuIHdoZW4K KwkgKiBubyBwcnVuaW5nIGlzIHRvIGJlIGRvbmUsIG5vbi1sZWFmIHBhcnRpdGlvbnMgc3RpbGwg bXVzdCBiZSBsb2NrZWQKKwkgKiBleHBsaWNpdGx5IGxpa2UgdGhpcywgYmVjYXVzZSB0aGV5J3Jl IG5vdCByZWZlcmVuY2VkIGVsc2V3aGVyZSBpbgorCSAqIHRoZSBwbGFuIHRyZWUuCisJICovCisJ aWYgKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbikKKwl7CisJCUV4ZWNMb2NrQXBwZW5kTm9uTGVhZlJl bGF0aW9ucyhlc3RhdGUsIG5vZGUtPmFsbHBhcnRyZWxpZHMpOworCQlpZiAoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJuIE5VTEw7CisKKwl9CisKIAkvKiBJZiBydW4tdGlt ZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVkLCB0aGVuIHNldCB0aGF0IHVwIG5vdyAqLwog CWlmIChub2RlLT5wYXJ0X3BydW5lX2luZm8gIT0gTlVMTCkKIAl7CkBAIC05NSw2ICsxMTMsOCBA QCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5tZXJnZXBsYW5zKSwK IAkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2luZm8sCiAJCQkJCQkJCQkJCSAgJnZhbGlk c3VicGxhbnMpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJcmV0dXJu IE5VTEw7CiAJCW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBs YW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwogCkBAIC0xNDAsNiArMTYwLDEz IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCW1lcmdlc3RhdGUtPnBzLnJlc3VsdG9wc3NldCA9IHRydWU7CiAJbWVy Z2VzdGF0ZS0+cHMucmVzdWx0b3BzZml4ZWQgPSBmYWxzZTsKIAorCS8qCisJICogU2V0IGVmbGFn cyBzbyB0aGF0IEV4ZWNJbml0Tm9kZSgpIHJlY3Vyc2l2ZWx5IGxvY2tzIGNoaWxkIHJlbGF0aW9u cworCSAqIGFwcGVhcmluZyBpbiBhcHBlbmRwbGFucy4KKwkgKi8KKwlpZiAoZXN0YXRlLT5lc19j YWNoZWRwbGFuKQorCQllc3RhdGUtPmVzX3RvcF9lZmxhZ3MgfD0gRVhFQ19GTEFHX0dFVF9MT0NL UzsKKwogCS8qCiAJICogY2FsbCBFeGVjSW5pdE5vZGUgb24gZWFjaCBvZiB0aGUgdmFsaWQgcGxh bnMgdG8gYmUgZXhlY3V0ZWQgYW5kIHNhdmUKIAkgKiB0aGUgcmVzdWx0cyBpbnRvIHRoZSBtZXJn ZXBsYW5zdGF0ZXMgYXJyYXkuCkBAIC0xNTEsOCArMTc4LDEyIEBAIEV4ZWNJbml0TWVyZ2VBcHBl bmQoTWVyZ2VBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlQbGFu CSAgICppbml0Tm9kZSA9IChQbGFuICopIGxpc3RfbnRoKG5vZGUtPm1lcmdlcGxhbnMsIGkpOwog CiAJCW1lcmdlcGxhbnN0YXRlc1tqKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUs IGVmbGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4g TlVMTDsKIAl9CiAKKwllc3RhdGUtPmVzX3RvcF9lZmxhZ3MgJj0gfkVYRUNfRkxBR19HRVRfTE9D S1M7CisKIAltZXJnZXN0YXRlLT5wcy5wc19Qcm9qSW5mbyA9IE5VTEw7CiAKIAkvKgpAQCAtMzEw LDMwICszNDEsMTQgQEAgaGVhcF9jb21wYXJlX3Nsb3RzKERhdHVtIGEsIERhdHVtIGIsIHZvaWQg KmFyZykKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNFbmRNZXJnZUFwcGVuZAotICoKLSAqCQlTaHV0 cyBkb3duIHRoZSBzdWJzY2FucyBvZiB0aGUgTWVyZ2VBcHBlbmQgbm9kZS4KLSAqCi0gKgkJUmV0 dXJucyBub3RoaW5nIG9mIGludGVyZXN0LgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiB2b2lkCiBFeGVjRW5k TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmRTdGF0ZSAqbm9kZSkKIHsKLQlQbGFuU3RhdGUgKiptZXJn ZXBsYW5zOwotCWludAkJCW5wbGFuczsKLQlpbnQJCQlpOwotCi0JLyoKLQkgKiBnZXQgaW5mb3Jt YXRpb24gZnJvbSB0aGUgbm9kZQotCSAqLwotCW1lcmdlcGxhbnMgPSBub2RlLT5tZXJnZXBsYW5z OwotCW5wbGFucyA9IG5vZGUtPm1zX25wbGFuczsKLQotCS8qCi0JICogc2h1dCBkb3duIGVhY2gg b2YgdGhlIHN1YnNjYW5zCi0JICovCi0JZm9yIChpID0gMDsgaSA8IG5wbGFuczsgaSsrKQotCQlF eGVjRW5kTm9kZShtZXJnZXBsYW5zW2ldKTsKKwkgLyoKKwkgICogTm90aGluZyB0byBkbyBhcyBz dWJzY2FucyB3b3VsZCBiZSBjbGVhbmVkIHVwIGJ5IEV4ZWNFbmRQbGFuKCkuCisJICAqLwogfQog CiB2b2lkCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKaW5kZXggMDBmOTZkMDQ1ZS4u YzY2NDRjNjgxNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9p bi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwpAQCAtMTQ5MCwx MSArMTQ5MCwxNSBAQCBFeGVjSW5pdE1lcmdlSm9pbihNZXJnZUpvaW4gKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCW1lcmdlc3RhdGUtPm1qX1NraXBNYXJrUmVzdG9yZSA9IG5v ZGUtPnNraXBfbWFya19yZXN0b3JlOwogCiAJb3V0ZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkgPSBF eGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAJb3V0ZXJEZXNjID0gRXhl Y0dldFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUobWVyZ2VzdGF0ZSkpOwogCWlubmVyUGxhblN0 YXRlKG1lcmdlc3RhdGUpID0gRXhlY0luaXROb2RlKGlubmVyUGxhbihub2RlKSwgZXN0YXRlLAog CQkJCQkJCQkJCQkgIG1lcmdlc3RhdGUtPm1qX1NraXBNYXJrUmVzdG9yZSA/CiAJCQkJCQkJCQkJ CSAgZWZsYWdzIDoKIAkJCQkJCQkJCQkJICAoZWZsYWdzIHwgRVhFQ19GTEFHX01BUkspKTsKKwlp ZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAlpbm5lckRl c2MgPSBFeGVjR2V0UmVzdWx0VHlwZShpbm5lclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAKIAkv KgpAQCAtMTY1NCwxMiArMTY1OCw2IEBAIEV4ZWNFbmRNZXJnZUpvaW4oTWVyZ2VKb2luU3RhdGUg Km5vZGUpCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+anMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsK IAlFeGVjQ2xlYXJUdXBsZShub2RlLT5tal9NYXJrZWRUdXBsZVNsb3QpOwogCi0JLyoKLQkgKiBz aHV0IGRvd24gdGhlIHN1YnBsYW5zCi0JICovCi0JRXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUo bm9kZSkpOwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKLQogCU1KMV9wcmlu dGYoIkV4ZWNFbmRNZXJnZUpvaW46ICVzXG4iLAogCQkJICAgIm5vZGUgcHJvY2Vzc2luZyBlbmRl ZCIpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxl LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCAyYTVmZWM4 ZDAxLi4wYzNhZWIxMTU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9k aWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpA QCAtMzk4NCw2ICszOTg0LDkgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCQkJCQkJICAgbGluaXRpYWxfaW50KG5v ZGUtPnJlc3VsdFJlbGF0aW9ucykpOwogCX0KIAorCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCXJldHVybiBOVUxMOworCiAJLyogc2V0IHVwIGVwcXN0YXRlIHdpdGggZHVtbXkg c3VicGxhbiBkYXRhIGZvciB0aGUgbW9tZW50ICovCiAJRXZhbFBsYW5RdWFsSW5pdCgmbXRzdGF0 ZS0+bXRfZXBxc3RhdGUsIGVzdGF0ZSwgTlVMTCwgTklMLAogCQkJCQkgbm9kZS0+ZXBxUGFyYW0s IG5vZGUtPnJlc3VsdFJlbGF0aW9ucyk7CkBAIC00MDExLDYgKzQwMTQsOCBAQCBFeGVjSW5pdE1v ZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAkJaWYgKHJlc3VsdFJlbEluZm8gIT0gbXRzdGF0ZS0+cm9vdFJlc3VsdFJlbEluZm8pCiAJCXsK IAkJCUV4ZWNJbml0UmVzdWx0UmVsYXRpb24oZXN0YXRlLCByZXN1bHRSZWxJbmZvLCByZXN1bHRS ZWxhdGlvbik7CisJCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJCXJldHVy biBOVUxMOwogCiAJCQkvKgogCQkJICogRm9yIGNoaWxkIHJlc3VsdCByZWxhdGlvbnMsIHN0b3Jl IHRoZSByb290IHJlc3VsdCByZWxhdGlvbgpAQCAtNDAzOCw2ICs0MDQzLDggQEAgRXhlY0luaXRN b2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiAJICogTm93IHdlIG1heSBpbml0aWFsaXplIHRoZSBzdWJwbGFuLgogCSAqLwogCW91dGVyUGxh blN0YXRlKG10c3RhdGUpID0gRXhlY0luaXROb2RlKHN1YnBsYW4sIGVzdGF0ZSwgZWZsYWdzKTsK KwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8q CiAJICogRG8gYWRkaXRpb25hbCBwZXItcmVzdWx0LXJlbGF0aW9uIGluaXRpYWxpemF0aW9uLgpA QCAtNDQ2MCwxMSArNDQ2Nyw2IEBAIEV4ZWNFbmRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZVN0YXRl ICpub2RlKQogCSAqIFRlcm1pbmF0ZSBFUFEgZXhlY3V0aW9uIGlmIGFjdGl2ZQogCSAqLwogCUV2 YWxQbGFuUXVhbEVuZCgmbm9kZS0+bXRfZXBxc3RhdGUpOwotCi0JLyoKLQkgKiBzaHV0IGRvd24g c3VicGxhbgotCSAqLwotCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKIH0KIAog dm9pZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYwppbmRleCBiM2Q1MmU2OWVjLi43MWEx ZjgxMDFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYwpAQCAtMjk1LDExICsyOTUs MTUgQEAgRXhlY0luaXROZXN0TG9vcChOZXN0TG9vcCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJICogdmFsdWVzLgogCSAqLwogCW91dGVyUGxhblN0YXRlKG5sc3RhdGUpID0g RXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCWlmIChub2RlLT5uZXN0 UGFyYW1zID09IE5JTCkKIAkJZWZsYWdzIHw9IEVYRUNfRkxBR19SRVdJTkQ7CiAJZWxzZQogCQll ZmxhZ3MgJj0gfkVYRUNfRkxBR19SRVdJTkQ7CiAJaW5uZXJQbGFuU3RhdGUobmxzdGF0ZSkgPSBF eGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIEluaXRp YWxpemUgcmVzdWx0IHNsb3QsIHR5cGUgYW5kIHByb2plY3Rpb24uCkBAIC0zNzQsMTIgKzM3OCw2 IEBAIEV4ZWNFbmROZXN0TG9vcChOZXN0TG9vcFN0YXRlICpub2RlKQogCSAqLwogCUV4ZWNDbGVh clR1cGxlKG5vZGUtPmpzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7CiAKLQkvKgotCSAqIGNsb3Nl IGRvd24gc3VicGxhbnMKLQkgKi8KLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7 Ci0JRXhlY0VuZE5vZGUoaW5uZXJQbGFuU3RhdGUobm9kZSkpOwotCiAJTkwxX3ByaW50ZigiRXhl Y0VuZE5lc3RMb29wOiAlc1xuIiwKIAkJCSAgICJub2RlIHByb2Nlc3NpbmcgZW5kZWQiKTsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jCmluZGV4IGY2ZmYzZGM0NGMuLmFiY2Jk N2U3NjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQcm9qZWN0U2V0LmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RTZXQuYwpAQCAtMjQ3LDYgKzI0 Nyw4IEBAIEV4ZWNJbml0UHJvamVjdFNldChQcm9qZWN0U2V0ICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQ bGFuU3RhdGUoc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBl ZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxM OwogCiAJLyoKIAkgKiB3ZSBkb24ndCB1c2UgaW5uZXIgcGxhbgpAQCAtMzI5LDExICszMzEsNiBA QCBFeGVjRW5kUHJvamVjdFNldChQcm9qZWN0U2V0U3RhdGUgKm5vZGUpCiAJICogY2xlYW4gb3V0 IHRoZSB0dXBsZSB0YWJsZQogCSAqLwogCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jlc3Vs dFR1cGxlU2xvdCk7Ci0KLQkvKgotCSAqIHNodXQgZG93biBzdWJwbGFucwotCSAqLwotCUV4ZWNF bmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwppbmRleCBlNzgxMDAzOTM0Li44NGE3MDY0NThhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYwpAQCAtMjQ0LDcgKzI0 NCwxMSBAQCBFeGVjSW5pdFJlY3Vyc2l2ZVVuaW9uKFJlY3Vyc2l2ZVVuaW9uICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICov CiAJb3V0ZXJQbGFuU3RhdGUocnVzdGF0ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuKG5vZGUp LCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJ cmV0dXJuIE5VTEw7CiAJaW5uZXJQbGFuU3RhdGUocnVzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoaW5u ZXJQbGFuKG5vZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIElmIGhhc2hpbmcsIHByZWNvbXB1 dGUgZm1nciBsb29rdXAgZGF0YSBmb3IgaW5uZXIgbG9vcCwgYW5kIGNyZWF0ZSB0aGUKQEAgLTI4 MCwxMiArMjg0LDYgQEAgRXhlY0VuZFJlY3Vyc2l2ZVVuaW9uKFJlY3Vyc2l2ZVVuaW9uU3RhdGUg Km5vZGUpCiAJCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+dGVtcENvbnRleHQpOwogCWlmIChu b2RlLT50YWJsZUNvbnRleHQpCiAJCU1lbW9yeUNvbnRleHREZWxldGUobm9kZS0+dGFibGVDb250 ZXh0KTsKLQotCS8qCi0JICogY2xvc2UgZG93biBzdWJwbGFucwotCSAqLwotCUV4ZWNFbmROb2Rl KG91dGVyUGxhblN0YXRlKG5vZGUpKTsKLQlFeGVjRW5kTm9kZShpbm5lclBsYW5TdGF0ZShub2Rl KSk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVSZXN1bHQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwppbmRleCA0MjE5 NzEyZDMwLi4zMzBjYTY4ZDEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl UmVzdWx0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jCkBAIC0yMDgs NiArMjA4LDggQEAgRXhlY0luaXRSZXN1bHQoUmVzdWx0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFu U3RhdGUocmVzc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBl ZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxM OwogCiAJLyoKIAkgKiB3ZSBkb24ndCB1c2UgaW5uZXIgcGxhbgpAQCAtMjQ5LDExICsyNTEsNiBA QCBFeGVjRW5kUmVzdWx0KFJlc3VsdFN0YXRlICpub2RlKQogCSAqIGNsZWFuIG91dCB0aGUgdHVw bGUgdGFibGUKIAkgKi8KIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNs b3QpOwotCi0JLyoKLQkgKiBzaHV0IGRvd24gc3VicGxhbnMKLQkgKi8KLQlFeGVjRW5kTm9kZShv dXRlclBsYW5TdGF0ZShub2RlKSk7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Ft cGxlc2Nhbi5jCmluZGV4IGQ3ZTIyYjFkYmIuLjIyMzU3ZTdhMGUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVTYW1wbGVzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNhbXBsZXNjYW4uYwpAQCAtMTI1LDYgKzEyNSw4IEBAIEV4ZWNJbml0U2FtcGxlU2Nh bihTYW1wbGVTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY09w ZW5TY2FuUmVsYXRpb24oZXN0YXRlLAogCQkJCQkJCSBub2RlLT5zY2FuLnNjYW5yZWxpZCwKIAkJ CQkJCQkgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gTlVMTDsKIAogCS8qIHdlIHdvbid0IHNldCB1cCB0aGUgSGVhcFNjYW5EZXNjIHRpbGwgbGF0 ZXIgKi8KIAlzY2Fuc3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNlcXNjYW4uYwppbmRleCA0ZGEwZjI4ZjdiLi5iMGIzNGNkMTRlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKQEAgLTE1Myw2ICsxNTMsOCBAQCBFeGVjSW5pdFNlcVNj YW4oU2VxU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCUV4ZWNPcGVu U2NhblJlbGF0aW9uKGVzdGF0ZSwKIAkJCQkJCQkgbm9kZS0+c2Nhbi5zY2FucmVsaWQsCiAJCQkJ CQkJIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJu IE5VTEw7CiAKIAkvKiBhbmQgY3JlYXRlIHNsb3Qgd2l0aCB0aGUgYXBwcm9wcmlhdGUgcm93dHlw ZSAqLwogCUV4ZWNJbml0U2NhblR1cGxlU2xvdChlc3RhdGUsICZzY2Fuc3RhdGUtPnNzLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNldE9wLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2V0T3AuYwppbmRleCA0YmMyNDA2Yjg5Li45MTJjZjdiMzdmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2V0T3AuYwpAQCAtNTI4LDYgKzUyOCw4IEBAIEV4ZWNJbml0U2V0T3AoU2V0 T3AgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWlmIChub2RlLT5zdHJhdGVn eSA9PSBTRVRPUF9IQVNIRUQpCiAJCWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlvdXRl clBsYW5TdGF0ZShzZXRvcHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVz dGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1 cm4gTlVMTDsKIAlvdXRlckRlc2MgPSBFeGVjR2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShz ZXRvcHN0YXRlKSk7CiAKIAkvKgpAQCAtNTg5LDggKzU5MSw2IEBAIEV4ZWNFbmRTZXRPcChTZXRP cFN0YXRlICpub2RlKQogCWlmIChub2RlLT50YWJsZUNvbnRleHQpCiAJCU1lbW9yeUNvbnRleHRE ZWxldGUobm9kZS0+dGFibGVDb250ZXh0KTsKIAlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5w cyk7Ci0KLQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CiB9CiAKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTb3J0LmMKaW5kZXggYzZjNzJjNmU2Ny4uMWJhNTMzNzNjMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNvcnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlU29ydC5jCkBAIC0yNjMsNiArMjYzLDggQEAgRXhlY0luaXRTb3J0KFNvcnQgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWVmbGFncyAmPSB+KEVYRUNfRkxBR19SRVdJ TkQgfCBFWEVDX0ZMQUdfQkFDS1dBUkQgfCBFWEVDX0ZMQUdfTUFSSyk7CiAKIAlvdXRlclBsYW5T dGF0ZShzb3J0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBl ZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxM OwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xvdCBhbmQgdHlwZS4KQEAgLTMxNywxMSAr MzE5LDYgQEAgRXhlY0VuZFNvcnQoU29ydFN0YXRlICpub2RlKQogCQl0dXBsZXNvcnRfZW5kKChU dXBsZXNvcnRzdGF0ZSAqKSBub2RlLT50dXBsZXNvcnRzdGF0ZSk7CiAJbm9kZS0+dHVwbGVzb3J0 c3RhdGUgPSBOVUxMOwogCi0JLyoKLQkgKiBzaHV0IGRvd24gdGhlIHN1YnBsYW4KLQkgKi8KLQlF eGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7Ci0KIAlTTzFfcHJpbnRmKCJFeGVjRW5k U29ydDogJXNcbiIsCiAJCQkgICAic29ydCBub2RlIHNodXRkb3duIik7CiB9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMKaW5kZXggNDI0NzFiZmMwNC4uMTIwMTQyNTBhZSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwpAQCAtMTI0LDYgKzEyNCw4 IEBAIEV4ZWNJbml0U3VicXVlcnlTY2FuKFN1YnF1ZXJ5U2NhbiAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBzdWJxdWVyeQogCSAqLwogCXN1YnF1ZXJ5 c3RhdGUtPnN1YnBsYW4gPSBFeGVjSW5pdE5vZGUobm9kZS0+c3VicGxhbiwgZXN0YXRlLCBlZmxh Z3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwog CiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xvdCBhbmQgdHlwZSAobmVlZGVkIGJ5IEV4ZWNB c3NpZ25TY2FuUHJvamVjdGlvbkluZm8pCkBAIC0xNzgsMTEgKzE4MCw2IEBAIEV4ZWNFbmRTdWJx dWVyeVNjYW4oU3VicXVlcnlTY2FuU3RhdGUgKm5vZGUpCiAJaWYgKG5vZGUtPnNzLnBzLnBzX1Jl c3VsdFR1cGxlU2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVw bGVTbG90KTsKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLQot CS8qCi0JICogY2xvc2UgZG93biBzdWJxdWVyeQotCSAqLwotCUV4ZWNFbmROb2RlKG5vZGUtPnN1 YnBsYW4pOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlVGlkcmFuZ2VzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkcmFuZ2Vz Y2FuLmMKaW5kZXggMjEyNGM1NWVmNS4uNjEzYjM3N2M3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVRpZHJhbmdlc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVUaWRyYW5nZXNjYW4uYwpAQCAtMzg2LDYgKzM4Niw4IEBAIEV4ZWNJbml0VGlkUmFuZ2VT Y2FuKFRpZFJhbmdlU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICog b3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVu U2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAl0aWRyYW5n ZXN0YXRlLT5zcy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJdGlkcmFu Z2VzdGF0ZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsJLyogbm8gdGFibGUgc2NhbiBo ZXJlICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHNjYW4uYwppbmRleCA4NjJiZDAzMzBiLi4xYjBh MmQ4MDgzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRzY2FuLmMKQEAgLTUyOSw2ICs1MjksOCBA QCBFeGVjSW5pdFRpZFNjYW4oVGlkU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9 IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFn cyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAK IAl0aWRzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9uOwogCXRp ZHN0YXRlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOyAvKiBubyBoZWFwIHNjYW4gaGVy ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCmluZGV4IDQ1MDM1ZDc0ZmEuLmJkNzEwMzM2 MjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKQEAgLTEzNiw2ICsxMzYsOCBAQCBFeGVj SW5pdFVuaXF1ZShVbmlxdWUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAq IHRoZW4gaW5pdGlhbGl6ZSBvdXRlciBwbGFuCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUodW5pcXVl c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOwor CWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyoK IAkgKiBJbml0aWFsaXplIHJlc3VsdCBzbG90IGFuZCB0eXBlLiBVbmlxdWUgbm9kZXMgZG8gbm8g cHJvamVjdGlvbnMsIHNvCkBAIC0xNzIsOCArMTc0LDYgQEAgRXhlY0VuZFVuaXF1ZShVbmlxdWVT dGF0ZSAqbm9kZSkKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3Qp OwogCiAJRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+cHMpOwotCi0JRXhlY0VuZE5vZGUob3V0 ZXJQbGFuU3RhdGUobm9kZSkpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cu YwppbmRleCAzMTBhYzIzZTNhLi40ODNmMjNkYTE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdp bmRvd0FnZy5jCkBAIC0yNDU4LDYgKzI0NTgsOCBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dB Z2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqLwogCW91dGVyUGxhbiA9 IG91dGVyUGxhbihub2RlKTsKIAlvdXRlclBsYW5TdGF0ZSh3aW5zdGF0ZSkgPSBFeGVjSW5pdE5v ZGUob3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgc291cmNlIHR1 cGxlIHR5cGUgKHdoaWNoIGlzIGFsc28gdGhlIHR1cGxlIHR5cGUgdGhhdCB3ZSdsbApAQCAtMjY4 MSw3ICsyNjgzLDYgQEAgRXhlY0luaXRXaW5kb3dBZ2coV2luZG93QWdnICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIHZvaWQKIEV4ZWNFbmRXaW5kb3dBZ2coV2luZG93QWdnU3Rh dGUgKm5vZGUpCiB7Ci0JUGxhblN0YXRlICAqb3V0ZXJQbGFuOwogCWludAkJCWk7CiAKIAlyZWxl YXNlX3BhcnRpdGlvbihub2RlKTsKQEAgLTI3MTMsOSArMjcxNCw2IEBAIEV4ZWNFbmRXaW5kb3dB Z2coV2luZG93QWdnU3RhdGUgKm5vZGUpCiAKIAlwZnJlZShub2RlLT5wZXJmdW5jKTsKIAlwZnJl ZShub2RlLT5wZXJhZ2cpOwotCi0Jb3V0ZXJQbGFuID0gb3V0ZXJQbGFuU3RhdGUobm9kZSk7Ci0J RXhlY0VuZE5vZGUob3V0ZXJQbGFuKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv c3BpLmMKaW5kZXggMzM5NzU2ODdiMy4uMDdiMWY0NTNlMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTcx LDcgKzcxLDcgQEAgc3RhdGljIGludAlfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4s IGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogc3RhdGljIFBhcmFtTGlzdEluZm8g X1NQSV9jb252ZXJ0X3BhcmFtcyhpbnQgbmFyZ3MsIE9pZCAqYXJndHlwZXMsCiAJCQkJCQkJCQkJ IERhdHVtICpWYWx1ZXMsIGNvbnN0IGNoYXIgKk51bGxzKTsKIAotc3RhdGljIGludAlfU1BJX3Bx dWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNv dW50KTsKK3N0YXRpYyBpbnQJX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIHVpbnQ2 NCB0Y291bnQpOwogCiBzdGF0aWMgdm9pZCBfU1BJX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7 CiAKQEAgLTE2MjMsNiArMTYyMyw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBj aGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJX1NQSV9jdXJyZW50LT5wcm9jZXNzZWQgPSAw OwogCV9TUElfY3VycmVudC0+dHVwdGFibGUgPSBOVUxMOwogCityZXBsYW46CiAJLyogQ3JlYXRl IHRoZSBwb3J0YWwgKi8KIAlpZiAobmFtZSA9PSBOVUxMIHx8IG5hbWVbMF0gPT0gJ1wwJykKIAl7 CkBAIC0xNzY2LDcgKzE3NjcsMTAgQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNo YXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwKIAl9CiAKIAkvKgotCSAqIFN0YXJ0IHBvcnRhbCBl eGVjdXRpb24uCisJICogU3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4gIElmIHRoZSBwb3J0YWwgY29u dGFpbnMgYSBjYWNoZWQgcGxhbiwgaXQgbXVzdAorCSAqIGJlIHJlY3JlYXRlZCBpZiBwb3J0YWwt PnBsYW5fdmFsaWQgaXMgZmFsc2Ugd2hpY2ggdGVsbHMgdGhhdCB0aGUgY2FjaGVkCisJICogcGxh biB3YXMgZm91bmQgdG8gaGF2ZSBiZWVuIGludmFsaWRhdGVkIHdoZW4gaW5pdGlhbGl6aW5nIG9u ZSBvZiB0aGUKKwkgKiBwbGFuIHRyZWVzIGNvbnRhaW5lZCBpbiBpdC4KIAkgKi8KIAlQb3J0YWxT dGFydChwb3J0YWwsIHBhcmFtTEksIDAsIHNuYXBzaG90KTsKIApAQCAtMTc3NSw2ICsxNzc5LDEy IEBAIFNQSV9jdXJzb3Jfb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRy IHBsYW4sCiAJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCiAJZXJyb3JfY29udGV4 dF9zdGFjayA9IHNwaWVycmNvbnRleHQucHJldmlvdXM7CiAKKwlpZiAoIXBvcnRhbC0+cGxhbl92 YWxpZCkKKwl7CisJCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFuOwor CX0KKwogCS8qIFBvcCB0aGUgU1BJIHN0YWNrICovCiAJX1NQSV9lbmRfY2FsbCh0cnVlKTsKIApA QCAtMjU1Miw2ICsyNTYyLDcgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBj b25zdCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJICogUmVwbGFuIGlmIG5lZWRlZCwg YW5kIGluY3JlbWVudCBwbGFuIHJlZmNvdW50LiAgSWYgaXQncyBhIHNhdmVkCiAJCSAqIHBsYW4s IHRoZSByZWZjb3VudCBtdXN0IGJlIGJhY2tlZCBieSB0aGUgcGxhbl9vd25lci4KIAkJICovCity ZXBsYW46CiAJCWNwbGFuID0gR2V0Q2FjaGVkUGxhbihwbGFuc291cmNlLCBvcHRpb25zLT5wYXJh bXMsCiAJCQkJCQkJICBwbGFuX293bmVyLCBfU1BJX2N1cnJlbnQtPnF1ZXJ5RW52KTsKIApAQCAt MjY2MSw2ICsyNjcyLDcgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25z dCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCXsKIAkJCQlRdWVyeURlc2MgICpxZGVz YzsKIAkJCQlTbmFwc2hvdAlzbmFwOworCQkJCWludAkJCWVmbGFnczsKIAogCQkJCWlmIChBY3Rp dmVTbmFwc2hvdFNldCgpKQogCQkJCQlzbmFwID0gR2V0QWN0aXZlU25hcHNob3QoKTsKQEAgLTI2 NjgsMTQgKzI2ODAsMzIgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25z dCBTUElFeGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hv dDsKIAogCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJCQkJCQkJY3BsYW4s CiAJCQkJCQkJCQkJcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nLAogCQkJCQkJCQkJCXNuYXAsIGNy b3NzY2hlY2tfc25hcHNob3QsCiAJCQkJCQkJCQkJZGVzdCwKIAkJCQkJCQkJCQlvcHRpb25zLT5w YXJhbXMsCiAJCQkJCQkJCQkJX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkwKTsK LQkJCQlyZXMgPSBfU1BJX3BxdWVyeShxZGVzYywgZmlyZV90cmlnZ2VycywKLQkJCQkJCQkJICBj YW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsKKworCQkJCS8qIFNlbGVjdCBleGVjdXRp b24gb3B0aW9ucyAqLworCQkJCWlmIChmaXJlX3RyaWdnZXJzKQorCQkJCQllZmxhZ3MgPSAwOwkJ CQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICovCisJCQkJZWxzZQorCQkJCQll ZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUzsKKworCQkJCUV4ZWN1dG9yU3RhcnQocWRl c2MsIGVmbGFncyk7CisJCQkJaWYgKCFxZGVzYy0+cGxhbl92YWxpZCkKKwkJCQl7CisJCQkJCUV4 ZWN1dG9yRmluaXNoKHFkZXNjKTsKKwkJCQkJRXhlY3V0b3JFbmQocWRlc2MpOworCQkJCQlGcmVl UXVlcnlEZXNjKHFkZXNjKTsKKwkJCQkJQXNzZXJ0KGNwbGFuKTsKKwkJCQkJUmVsZWFzZUNhY2hl ZFBsYW4oY3BsYW4sIHBsYW5fb3duZXIpOworCQkJCQlnb3RvIHJlcGxhbjsKKwkJCQl9CisKKwkJ CQlyZXMgPSBfU1BJX3BxdWVyeShxZGVzYywgY2FuU2V0VGFnID8gb3B0aW9ucy0+dGNvdW50IDog MCk7CiAJCQkJRnJlZVF1ZXJ5RGVzYyhxZGVzYyk7CiAJCQl9CiAJCQllbHNlCkBAIC0yODUwLDEw ICsyODgwLDkgQEAgX1NQSV9jb252ZXJ0X3BhcmFtcyhpbnQgbmFyZ3MsIE9pZCAqYXJndHlwZXMs CiB9CiAKIHN0YXRpYyBpbnQKLV9TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBib29s IGZpcmVfdHJpZ2dlcnMsIHVpbnQ2NCB0Y291bnQpCitfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgdWludDY0IHRjb3VudCkKIHsKIAlpbnQJCQlvcGVyYXRpb24gPSBxdWVyeURlc2Mt Pm9wZXJhdGlvbjsKLQlpbnQJCQllZmxhZ3M7CiAJaW50CQkJcmVzOwogCiAJc3dpdGNoIChvcGVy YXRpb24pCkBAIC0yODk3LDE0ICsyOTI2LDYgQEAgX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVy eURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCkKIAkJUmVzZXRVc2FnZSgp OwogI2VuZGlmCiAKLQkvKiBTZWxlY3QgZXhlY3V0aW9uIG9wdGlvbnMgKi8KLQlpZiAoZmlyZV90 cmlnZ2VycykKLQkJZWZsYWdzID0gMDsJCQkJLyogZGVmYXVsdCBydW4tdG8tY29tcGxldGlvbiBm bGFncyAqLwotCWVsc2UKLQkJZWZsYWdzID0gRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlM7Ci0KLQlF eGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKLQogCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVz YywgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHRjb3VudCwgdHJ1ZSk7CiAKIAlfU1BJX2N1cnJlbnQt PnByb2Nlc3NlZCA9IHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQ7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9s bWdyL2xtZ3IuYwppbmRleCBlZTliODlhNjcyLi5jODA3ZTljZGNjIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9sbWdyLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5o IgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0LmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwu aCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKIAogCiAvKgpAQCAtMzY0LDYgKzM2NSw1 MCBAQCBDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUg bG9ja21vZGUsIGJvb2wgb3JzdHJvbmdlcikKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKgkJ Q2hlY2tSZWxMb2NrZWRCeU1lCisgKgorICogUmV0dXJucyB0cnVlIGlmIGN1cnJlbnQgdHJhbnNh Y3Rpb24gaG9sZHMgYSBsb2NrIG9uIHRoZSBnaXZlbiByZWxhdGlvbiBvZgorICogbW9kZSAnbG9j a21vZGUnLiAgSWYgJ29yc3Ryb25nZXInIGlzIHRydWUsIGEgc3Ryb25nZXIgbG9ja21vZGUgaXMg YWxzbyBPSy4KKyAqICgiU3Ryb25nZXIiIGlzIGRlZmluZWQgYXMgIm51bWVyaWNhbGx5IGhpZ2hl ciIsIHdoaWNoIGlzIGEgYml0CisgKiBzZW1hbnRpY2FsbHkgZHViaW91cyBidXQgaXMgT0sgZm9y IHRoZSBwdXJwb3NlcyB3ZSB1c2UgdGhpcyBmb3IuKQorICovCitib29sCitDaGVja1JlbExvY2tl ZEJ5TWUoT2lkIHJlbGlkLCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCBvcnN0cm9uZ2VyKQorewor CU9pZAkJCWRiSWQgPSBnZXRfcmVsX3JlbGlzc2hhcmVkKHJlbGlkKSA/IEludmFsaWRPaWQgOiBN eURhdGFiYXNlSWQ7CisJTE9DS1RBRwkJdGFnOworCisJU0VUX0xPQ0tUQUdfUkVMQVRJT04odGFn LCBkYklkLCByZWxpZCk7CisKKwlpZiAoTG9ja0hlbGRCeU1lKCZ0YWcsIGxvY2ttb2RlKSkKKwkJ cmV0dXJuIHRydWU7CisKKwlpZiAob3JzdHJvbmdlcikKKwl7CisJCUxPQ0tNT0RFCXNsb2NrbW9k ZTsKKworCQlmb3IgKHNsb2NrbW9kZSA9IGxvY2ttb2RlICsgMTsKKwkJCSBzbG9ja21vZGUgPD0g TWF4TG9ja01vZGU7CisJCQkgc2xvY2ttb2RlKyspCisJCXsKKwkJCWlmIChMb2NrSGVsZEJ5TWUo JnRhZywgc2xvY2ttb2RlKSkKKwkJCXsKKyNpZmRlZiBOT1RfVVNFRAorCQkJCS8qIFNvbWV0aW1l cyB0aGlzIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzICovCisJCQkJZWxv ZyhXQVJOSU5HLCAibG9jayBtb2RlICVzIHN1YnN0aXR1dGVkIGZvciAlcyBvbiByZWxhdGlvbiAl cyIsCisJCQkJCSBHZXRMb2NrbW9kZU5hbWUodGFnLmxvY2t0YWdfbG9ja21ldGhvZGlkLCBzbG9j a21vZGUpLAorCQkJCQkgR2V0TG9ja21vZGVOYW1lKHRhZy5sb2NrdGFnX2xvY2ttZXRob2RpZCwg bG9ja21vZGUpLAorCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKTsKKyNl bmRpZgorCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIGZhbHNlOwor fQorCiAvKgogICoJCUxvY2tIYXNXYWl0ZXJzUmVsYXRpb24KICAqCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5k ZXggMDFiNmNjMWY3ZC4uNDkzMWZiMmRhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMTIzMyw2ICsx MjMzLDcgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKQogCQkg KiBTdGFydCB0aGUgcG9ydGFsLiAgTm8gcGFyYW1ldGVycyBoZXJlLgogCQkgKi8KIAkJUG9ydGFs U3RhcnQocG9ydGFsLCBOVUxMLCAwLCBJbnZhbGlkU25hcHNob3QpOworCQlBc3NlcnQocG9ydGFs LT5wbGFuX3ZhbGlkKTsKIAogCQkvKgogCQkgKiBTZWxlY3QgdGhlIGFwcHJvcHJpYXRlIG91dHB1 dCBmb3JtYXQ6IHRleHQgdW5sZXNzIHdlIGFyZSBkb2luZyBhCkBAIC0xNzM3LDYgKzE3MzgsNyBA QCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCQkJCQkiY29t bWFuZHMgaWdub3JlZCB1bnRpbCBlbmQgb2YgdHJhbnNhY3Rpb24gYmxvY2siKSwKIAkJCQkgZXJy ZGV0YWlsX2Fib3J0KCkpKTsKIAorcmVwbGFuOgogCS8qCiAJICogQ3JlYXRlIHRoZSBwb3J0YWwu ICBBbGxvdyBzaWxlbnQgcmVwbGFjZW1lbnQgb2YgYW4gZXhpc3RpbmcgcG9ydGFsIG9ubHkKIAkg KiBpZiB0aGUgdW5uYW1lZCBwb3J0YWwgaXMgc3BlY2lmaWVkLgpAQCAtMjAyOCwxMCArMjAzMCwx OSBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CiAKIAkvKgotCSAqIEFuZCB3ZSdyZSByZWFkeSB0byBzdGFydCBwb3J0 YWwgZXhlY3V0aW9uLgorCSAqIFN0YXJ0IHBvcnRhbCBleGVjdXRpb24uICBJZiB0aGUgcG9ydGFs IGNvbnRhaW5zIGEgY2FjaGVkIHBsYW4sIGl0IG11c3QKKwkgKiBiZSByZWNyZWF0ZWQgaWYgcG9y dGFsLT5wbGFuX3ZhbGlkIGlzIGZhbHNlIHdoaWNoIHRlbGxzIHRoYXQgdGhlIGNhY2hlZAorCSAq IHBsYW4gd2FzIGZvdW5kIHRvIGhhdmUgYmVlbiBpbnZhbGlkYXRlZCB3aGVuIGluaXRpYWxpemlu ZyBvbmUgb2YgdGhlCisJICogcGxhbiB0cmVlcyBjb250YWluZWQgaW4gaXQuCiAJICovCiAJUG9y dGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEludmFsaWRTbmFwc2hvdCk7CiAKKwlpZiAoIXBv cnRhbC0+cGxhbl92YWxpZCkKKwl7CisJCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CisJCWdv dG8gcmVwbGFuOworCX0KKwogCS8qCiAJICogQXBwbHkgdGhlIHJlc3VsdCBmb3JtYXQgcmVxdWVz dHMgdG8gdGhlIHBvcnRhbC4KIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1 ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4IDU1NjVmMjAwYzMuLjA5ZWU2 MDY5ZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKKysrIGIvc3JjL2Jh Y2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtMTksNiArMTksNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNz L3hhY3QuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCisjaW5jbHVkZSAiZXhlY3V0 b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJleGVjdXRvci90c3RvcmVSZWNlaXZlci5oIgogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnX3RyYWNlLmgiCkBAIC0zNSwxMiArMzYs NiBAQAogUG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxMOwogCiAKLXN0YXRpYyB2b2lkIFByb2Nl c3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKLQkJCQkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0 LAotCQkJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAotCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52LAotCQkJCQkJIERlc3RSZWNlaXZlciAqZGVzdCwKLQkJCQkJCSBRdWVyeUNvbXBs ZXRpb24gKnFjKTsKIHN0YXRpYyB2b2lkIEZpbGxQb3J0YWxTdG9yZShQb3J0YWwgcG9ydGFsLCBi b29sIGlzVG9wTGV2ZWwpOwogc3RhdGljIHVpbnQ2NCBSdW5Gcm9tU3RvcmUoUG9ydGFsIHBvcnRh bCwgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sIHVpbnQ2NCBjb3VudCwKIAkJCQkJCSAgIERlc3RS ZWNlaXZlciAqZGVzdCk7CkBAIC02NSw2ICs2MCw3IEBAIHN0YXRpYyB2b2lkIERvUG9ydGFsUmV3 aW5kKFBvcnRhbCBwb3J0YWwpOwogICovCiBRdWVyeURlc2MgKgogQ3JlYXRlUXVlcnlEZXNjKFBs YW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQlDYWNoZWRQbGFuICpjcGxhbiwKIAkJCQljb25z dCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCVNuYXBzaG90 IGNyb3NzY2hlY2tfc25hcHNob3QsCkBAIC03Nyw2ICs3Myw3IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQ bGFubmVkU3RtdCAqcGxhbm5lZHN0bXQsCiAKIAlxZC0+b3BlcmF0aW9uID0gcGxhbm5lZHN0bXQt PmNvbW1hbmRUeXBlOwkvKiBvcGVyYXRpb24gKi8KIAlxZC0+cGxhbm5lZHN0bXQgPSBwbGFubmVk c3RtdDsJLyogcGxhbiAqLworCXFkLT5jcGxhbiA9IGNwbGFuOwkJCQkvKiBDYWNoZWRQbGFuLCBp ZiBwbGFuIGlzIGZyb20gb25lICovCiAJcWQtPnNvdXJjZVRleHQgPSBzb3VyY2VUZXh0OwkvKiBx dWVyeSB0ZXh0ICovCiAJcWQtPnNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7 CS8qIHNuYXBzaG90ICovCiAJLyogUkkgY2hlY2sgc25hcHNob3QgKi8KQEAgLTExNiw4NiArMTEz LDYgQEAgRnJlZVF1ZXJ5RGVzYyhRdWVyeURlc2MgKnFkZXNjKQogfQogCiAKLS8qCi0gKiBQcm9j ZXNzUXVlcnkKLSAqCQlFeGVjdXRlIGEgc2luZ2xlIHBsYW5uYWJsZSBxdWVyeSB3aXRoaW4gYSBQ T1JUQUxfTVVMVElfUVVFUlksCi0gKgkJUE9SVEFMX09ORV9SRVRVUk5JTkcsIG9yIFBPUlRBTF9P TkVfTU9EX1dJVEggcG9ydGFsCi0gKgotICoJcGxhbjogdGhlIHBsYW4gdHJlZSBmb3IgdGhlIHF1 ZXJ5Ci0gKglzb3VyY2VUZXh0OiB0aGUgc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5Ci0gKglwYXJh bXM6IGFueSBwYXJhbWV0ZXJzIG5lZWRlZAotICoJZGVzdDogd2hlcmUgdG8gc2VuZCByZXN1bHRz Ci0gKglxYzogd2hlcmUgdG8gc3RvcmUgdGhlIGNvbW1hbmQgY29tcGxldGlvbiBzdGF0dXMgZGF0 YS4KLSAqCi0gKiBxYyBtYXkgYmUgTlVMTCBpZiBjYWxsZXIgZG9lc24ndCB3YW50IGEgc3RhdHVz IHN0cmluZy4KLSAqCi0gKiBNdXN0IGJlIGNhbGxlZCBpbiBhIG1lbW9yeSBjb250ZXh0IHRoYXQg d2lsbCBiZSByZXNldCBvciBkZWxldGVkIG9uCi0gKiBlcnJvcjsgb3RoZXJ3aXNlIHRoZSBleGVj dXRvcidzIG1lbW9yeSB1c2FnZSB3aWxsIGJlIGxlYWtlZC4KLSAqLwotc3RhdGljIHZvaWQKLVBy b2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKLQkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0 LAotCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAotCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5 RW52LAotCQkJIERlc3RSZWNlaXZlciAqZGVzdCwKLQkJCSBRdWVyeUNvbXBsZXRpb24gKnFjKQot ewotCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKLQotCS8qCi0JICogQ3JlYXRlIHRoZSBRdWVyeURl c2Mgb2JqZWN0Ci0JICovCi0JcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHNvdXJj ZVRleHQsCi0JCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwKLQkJ CQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgMCk7Ci0KLQkvKgotCSAqIENhbGwgRXhlY3V0 b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KLQkgKi8KLQlFeGVjdXRv clN0YXJ0KHF1ZXJ5RGVzYywgMCk7Ci0KLQkvKgotCSAqIFJ1biB0aGUgcGxhbiB0byBjb21wbGV0 aW9uLgotCSAqLwotCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgRm9yd2FyZFNjYW5EaXJlY3Rpb24s IDAsIHRydWUpOwotCi0JLyoKLQkgKiBCdWlsZCBjb21tYW5kIGNvbXBsZXRpb24gc3RhdHVzIGRh dGEsIGlmIGNhbGxlciB3YW50cyBvbmUuCi0JICovCi0JaWYgKHFjKQotCXsKLQkJc3dpdGNoIChx dWVyeURlc2MtPm9wZXJhdGlvbikKLQkJewotCQkJY2FzZSBDTURfU0VMRUNUOgotCQkJCVNldFF1 ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1NFTEVDVCwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3By b2Nlc3NlZCk7Ci0JCQkJYnJlYWs7Ci0JCQljYXNlIENNRF9JTlNFUlQ6Ci0JCQkJU2V0UXVlcnlD b21wbGV0aW9uKHFjLCBDTURUQUdfSU5TRVJULCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vz c2VkKTsKLQkJCQlicmVhazsKLQkJCWNhc2UgQ01EX1VQREFURToKLQkJCQlTZXRRdWVyeUNvbXBs ZXRpb24ocWMsIENNRFRBR19VUERBVEUsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQp OwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfREVMRVRFOgotCQkJCVNldFF1ZXJ5Q29tcGxldGlv bihxYywgQ01EVEFHX0RFTEVURSwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0J CQkJYnJlYWs7Ci0JCQljYXNlIENNRF9NRVJHRToKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMs IENNRFRBR19NRVJHRSwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0JCQkJYnJl YWs7Ci0JCQlkZWZhdWx0OgotCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1VOS05P V04sIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQl9Ci0J fQotCi0JLyoKLQkgKiBOb3csIHdlIGNsb3NlIGRvd24gYWxsIHRoZSBzY2FucyBhbmQgZnJlZSBh bGxvY2F0ZWQgcmVzb3VyY2VzLgotCSAqLwotCUV4ZWN1dG9yRmluaXNoKHF1ZXJ5RGVzYyk7Ci0J RXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKLQotCUZyZWVRdWVyeURlc2MocXVlcnlEZXNjKTsKLX0K LQogLyoKICAqIENob29zZVBvcnRhbFN0cmF0ZWd5CiAgKgkJU2VsZWN0IHBvcnRhbCBleGVjdXRp b24gc3RyYXRlZ3kgZ2l2ZW4gdGhlIGludGVuZGVkIHN0YXRlbWVudCBsaXN0LgpAQCAtNDI3LDcg KzM0NCw4IEBAIEZldGNoU3RhdGVtZW50VGFyZ2V0TGlzdChOb2RlICpzdG10KQogICogdG8gYmUg dXNlZCBmb3IgY3Vyc29ycykuCiAgKgogICogT24gcmV0dXJuLCBwb3J0YWwgaXMgcmVhZHkgdG8g YWNjZXB0IFBvcnRhbFJ1bigpIGNhbGxzLCBhbmQgdGhlIHJlc3VsdAotICogdHVwZGVzYyAoaWYg YW55KSBpcyBrbm93bi4KKyAqIHR1cGRlc2MgKGlmIGFueSkgaXMga25vd24sIHVubGVzcyBwb3J0 YWwtPnBsYW5fdmFsaWQgaXMgc2V0IHRvIGZhbHNlLCBpbgorICogd2hpY2ggY2FzZSwgdGhlIGNh bGxlciBtdXN0IHJldHJ5IGFmdGVyIGdlbmVyYXRpbmcgYSBuZXcgQ2FjaGVkUGxhbi4KICAqLwog dm9pZAogUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCkBA IC00MzUsMTAgKzM1Myw5IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdElu Zm8gcGFyYW1zLAogewogCVBvcnRhbAkJc2F2ZUFjdGl2ZVBvcnRhbDsKIAlSZXNvdXJjZU93bmVy IHNhdmVSZXNvdXJjZU93bmVyOwotCU1lbW9yeUNvbnRleHQgc2F2ZVBvcnRhbENvbnRleHQ7CiAJ TWVtb3J5Q29udGV4dCBvbGRDb250ZXh0OwogCVF1ZXJ5RGVzYyAgKnF1ZXJ5RGVzYzsKLQlpbnQJ CQlteWVmbGFnczsKKwlpbnQJCQlteWVmbGFncyA9IDA7CiAKIAlBc3NlcnQoUG9ydGFsSXNWYWxp ZChwb3J0YWwpKTsKIAlBc3NlcnQocG9ydGFsLT5zdGF0dXMgPT0gUE9SVEFMX0RFRklORUQpOwpA QCAtNDQ4LDE1ICszNjUsMTMgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0 SW5mbyBwYXJhbXMsCiAJICovCiAJc2F2ZUFjdGl2ZVBvcnRhbCA9IEFjdGl2ZVBvcnRhbDsKIAlz YXZlUmVzb3VyY2VPd25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOwotCXNhdmVQb3J0YWxDb250 ZXh0ID0gUG9ydGFsQ29udGV4dDsKIAlQR19UUlkoKTsKIAl7CiAJCUFjdGl2ZVBvcnRhbCA9IHBv cnRhbDsKIAkJaWYgKHBvcnRhbC0+cmVzb3duZXIpCiAJCQlDdXJyZW50UmVzb3VyY2VPd25lciA9 IHBvcnRhbC0+cmVzb3duZXI7Ci0JCVBvcnRhbENvbnRleHQgPSBwb3J0YWwtPnBvcnRhbENvbnRl eHQ7CiAKLQkJb2xkQ29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhQb3J0YWxDb250ZXh0 KTsKKwkJb2xkQ29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwb3J0YWwtPnF1ZXJ5Q29u dGV4dCk7CiAKIAkJLyogTXVzdCByZW1lbWJlciBwb3J0YWwgcGFyYW0gbGlzdCwgaWYgYW55ICov CiAJCXBvcnRhbC0+cG9ydGFsUGFyYW1zID0gcGFyYW1zOwpAQCAtNDcyLDYgKzM4Nyw4IEBAIFBv cnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQlzd2l0Y2gg KHBvcnRhbC0+c3RyYXRlZ3kpCiAJCXsKIAkJCWNhc2UgUE9SVEFMX09ORV9TRUxFQ1Q6CisJCQlj YXNlIFBPUlRBTF9PTkVfUkVUVVJOSU5HOgorCQkJY2FzZSBQT1JUQUxfT05FX01PRF9XSVRIOgog CiAJCQkJLyogTXVzdCBzZXQgc25hcHNob3QgYmVmb3JlIHN0YXJ0aW5nIGV4ZWN1dG9yLiAqLwog CQkJCWlmIChzbmFwc2hvdCkKQEAgLTQ5Myw2ICs0MTAsNyBAQCBQb3J0YWxTdGFydChQb3J0YWwg cG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkgKiB0aGUgZGVzdGluYXRpb24gdG8g RGVzdE5vbmUuCiAJCQkJICovCiAJCQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKGxpbml0 aWFsX25vZGUoUGxhbm5lZFN0bXQsIHBvcnRhbC0+c3RtdHMpLAorCQkJCQkJCQkJCQlwb3J0YWwt PmNwbGFuLAogCQkJCQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRleHQsCiAJCQkJCQkJCQkJCUdldEFj dGl2ZVNuYXBzaG90KCksCiAJCQkJCQkJCQkJCUludmFsaWRTbmFwc2hvdCwKQEAgLTUwMSwzMCAr NDE5LDUyIEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1z LAogCQkJCQkJCQkJCQlwb3J0YWwtPnF1ZXJ5RW52LAogCQkJCQkJCQkJCQkwKTsKIAorCQkJCS8q IFJlbWVtYmVyIGZvciBQb3J0YWxSdW5NdWx0aSgpLiAqLworCQkJCWlmIChwb3J0YWwtPnN0cmF0 ZWd5ID09IFBPUlRBTF9PTkVfUkVUVVJOSU5HIHx8CisJCQkJCXBvcnRhbC0+c3RyYXRlZ3kgPT0g UE9SVEFMX09ORV9NT0RfV0lUSCkKKwkJCQkJcG9ydGFsLT5xZGVzY3MgPSBsaXN0X21ha2UxKHF1 ZXJ5RGVzYyk7CisKIAkJCQkvKgogCQkJCSAqIElmIGl0J3MgYSBzY3JvbGxhYmxlIGN1cnNvciwg ZXhlY3V0b3IgbmVlZHMgdG8gc3VwcG9ydAogCQkJCSAqIFJFV0lORCBhbmQgYmFja3dhcmRzIHNj YW4sIGFzIHdlbGwgYXMgd2hhdGV2ZXIgdGhlIGNhbGxlcgogCQkJCSAqIG1pZ2h0J3ZlIGFza2Vk IGZvci4KIAkJCQkgKi8KLQkJCQlpZiAocG9ydGFsLT5jdXJzb3JPcHRpb25zICYgQ1VSU09SX09Q VF9TQ1JPTEwpCisJCQkJaWYgKHBvcnRhbC0+c3RyYXRlZ3kgPT0gUE9SVEFMX09ORV9TRUxFQ1Qg JiYKKwkJCQkJKHBvcnRhbC0+Y3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRfU0NST0xMKSkKIAkJ CQkJbXllZmxhZ3MgPSBlZmxhZ3MgfCBFWEVDX0ZMQUdfUkVXSU5EIHwgRVhFQ19GTEFHX0JBQ0tX QVJEOwogCQkJCWVsc2UKIAkJCQkJbXllZmxhZ3MgPSBlZmxhZ3M7CiAKIAkJCQkvKgotCQkJCSAq IENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KKwkJ CQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9u LiAgQQorCQkJCSAqIGNhY2hlZCBwbGFuIG1heSBnZXQgaW52YWxpZGF0ZWQgYXMgd2UncmUgZG9p bmcgdGhhdC4KIAkJCQkgKi8KIAkJCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxhZ3Mp OworCQkJCWlmICghcXVlcnlEZXNjLT5wbGFuX3ZhbGlkKQorCQkJCXsKKwkJCQkJQXNzZXJ0KHF1 ZXJ5RGVzYy0+Y3BsYW4pOworCQkJCQlQb3J0YWxRdWVyeUZpbmlzaChxdWVyeURlc2MpOworCQkJ CQlQb3BBY3RpdmVTbmFwc2hvdCgpOworCQkJCQlwb3J0YWwtPnBsYW5fdmFsaWQgPSBmYWxzZTsK KwkJCQkJZ290byBlYXJseV9leGl0OworCQkJCX0KIAogCQkJCS8qCi0JCQkJICogVGhpcyB0ZWxs cyBQb3J0YWxDbGVhbnVwIHRvIHNodXQgZG93biB0aGUgZXhlY3V0b3IKKwkJCQkgKiBUaGlzIHRl bGxzIFBvcnRhbENsZWFudXAgdG8gc2h1dCBkb3duIHRoZSBleGVjdXRvciwgdGhvdWdoCisJCQkJ ICogbm90IG5lZWRlZCBmb3IgcXVlcmllcyBoYW5kbGVkIGJ5IFBvcnRhbFJ1bk11bHRpKCkuCiAJ CQkJICovCi0JCQkJcG9ydGFsLT5xdWVyeURlc2MgPSBxdWVyeURlc2M7CisJCQkJaWYgKHBvcnRh bC0+c3RyYXRlZ3kgPT0gUE9SVEFMX09ORV9TRUxFQ1QpCisJCQkJCXBvcnRhbC0+cXVlcnlEZXNj ID0gcXVlcnlEZXNjOwogCiAJCQkJLyoKLQkJCQkgKiBSZW1lbWJlciB0dXBsZSBkZXNjcmlwdG9y IChjb21wdXRlZCBieSBFeGVjdXRvclN0YXJ0KQorCQkJCSAqIFJlbWVtYmVyIHR1cGxlIGRlc2Ny aXB0b3IgKGNvbXB1dGVkIGJ5IEV4ZWN1dG9yU3RhcnQpLAorCQkJCSAqIHRob3VnaCBtYWtlIGl0 IGluZGVwZW5kZW50IG9mIFF1ZXJ5RGVzYyBmb3IgcXVlcmllcyBoYW5kbGVkCisJCQkJICogYnkg UG9ydGFsUnVuTXVsdGkoKS4KIAkJCQkgKi8KLQkJCQlwb3J0YWwtPnR1cERlc2MgPSBxdWVyeURl c2MtPnR1cERlc2M7CisJCQkJaWYgKHBvcnRhbC0+c3RyYXRlZ3kgIT0gUE9SVEFMX09ORV9TRUxF Q1QpCisJCQkJCXBvcnRhbC0+dHVwRGVzYyA9IENyZWF0ZVR1cGxlRGVzY0NvcHkocXVlcnlEZXNj LT50dXBEZXNjKTsKKwkJCQllbHNlCisJCQkJCXBvcnRhbC0+dHVwRGVzYyA9IHF1ZXJ5RGVzYy0+ dHVwRGVzYzsKIAogCQkJCS8qCiAJCQkJICogUmVzZXQgY3Vyc29yIHBvc2l0aW9uIGRhdGEgdG8g InN0YXJ0IG9mIHF1ZXJ5IgpAQCAtNTMyLDMzICs0NzIsMTEgQEAgUG9ydGFsU3RhcnQoUG9ydGFs IHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJcG9ydGFsLT5hdFN0YXJ0ID0gdHJ1 ZTsKIAkJCQlwb3J0YWwtPmF0RW5kID0gZmFsc2U7CS8qIGFsbG93IGZldGNoZXMgKi8KIAkJCQlw b3J0YWwtPnBvcnRhbFBvcyA9IDA7CisJCQkJcG9ydGFsLT5wbGFuX3ZhbGlkID0gdHJ1ZTsKIAog CQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCQkJYnJlYWs7CiAKLQkJCWNhc2UgUE9SVEFMX09O RV9SRVRVUk5JTkc6Ci0JCQljYXNlIFBPUlRBTF9PTkVfTU9EX1dJVEg6Ci0KLQkJCQkvKgotCQkJ CSAqIFdlIGRvbid0IHN0YXJ0IHRoZSBleGVjdXRvciB1bnRpbCB3ZSBhcmUgdG9sZCB0byBydW4g dGhlCi0JCQkJICogcG9ydGFsLiAgV2UgZG8gbmVlZCB0byBzZXQgdXAgdGhlIHJlc3VsdCB0dXBk ZXNjLgotCQkJCSAqLwotCQkJCXsKLQkJCQkJUGxhbm5lZFN0bXQgKnBzdG10OwotCi0JCQkJCXBz dG10ID0gUG9ydGFsR2V0UHJpbWFyeVN0bXQocG9ydGFsKTsKLQkJCQkJcG9ydGFsLT50dXBEZXNj ID0KLQkJCQkJCUV4ZWNDbGVhblR5cGVGcm9tVEwocHN0bXQtPnBsYW5UcmVlLT50YXJnZXRsaXN0 KTsKLQkJCQl9Ci0KLQkJCQkvKgotCQkJCSAqIFJlc2V0IGN1cnNvciBwb3NpdGlvbiBkYXRhIHRv ICJzdGFydCBvZiBxdWVyeSIKLQkJCQkgKi8KLQkJCQlwb3J0YWwtPmF0U3RhcnQgPSB0cnVlOwot CQkJCXBvcnRhbC0+YXRFbmQgPSBmYWxzZTsJLyogYWxsb3cgZmV0Y2hlcyAqLwotCQkJCXBvcnRh bC0+cG9ydGFsUG9zID0gMDsKLQkJCQlicmVhazsKLQogCQkJY2FzZSBQT1JUQUxfVVRJTF9TRUxF Q1Q6CiAKIAkJCQkvKgpAQCAtNTc4LDExICs0OTYsODYgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBv cnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJcG9ydGFsLT5hdFN0YXJ0ID0gdHJ1ZTsK IAkJCQlwb3J0YWwtPmF0RW5kID0gZmFsc2U7CS8qIGFsbG93IGZldGNoZXMgKi8KIAkJCQlwb3J0 YWwtPnBvcnRhbFBvcyA9IDA7CisJCQkJcG9ydGFsLT5wbGFuX3ZhbGlkID0gdHJ1ZTsKIAkJCQli cmVhazsKIAogCQkJY2FzZSBQT1JUQUxfTVVMVElfUVVFUlk6Ci0JCQkJLyogTmVlZCBkbyBub3Ro aW5nIG5vdyAqLworCQkJCXsKKwkJCQkJTGlzdENlbGwgICAqbGM7CisJCQkJCWJvb2wJCWZpcnN0 ID0gdHJ1ZTsKKworCQkJCQlteWVmbGFncyA9IGVmbGFnczsKKwkJCQkJZm9yZWFjaChsYywgcG9y dGFsLT5zdG10cykKKwkJCQkJeworCQkJCQkJUGxhbm5lZFN0bXQgKnBsYW4gPSBsZmlyc3Rfbm9k ZShQbGFubmVkU3RtdCwgbGMpOworCQkJCQkJYm9vbAkJaXNfdXRpbGl0eSA9IChwbGFuLT51dGls aXR5U3RtdCAhPSBOVUxMKTsKKworCQkJCQkJLyoKKwkJCQkJCSAqIFB1c2ggdGhlIHNuYXBzaG90 IHRvIGJlIHVzZWQgYnkgdGhlIGV4ZWN1dG9yLgorCQkJCQkJICovCisJCQkJCQlpZiAoIWlzX3V0 aWxpdHkpCisJCQkJCQl7CisJCQkJCQkJLyoKKwkJCQkJCQkgKiBNdXN0IGNvcHkgdGhlIHNuYXBz aG90IGlmIHdlJ2xsIG5lZWQgdG8gdXBkYXRlCisJCQkJCQkJICogaXRzIGNvbW1hbmQgSUQuCisJ CQkJCQkJICovCisJCQkJCQkJaWYgKCFmaXJzdCkKKwkJCQkJCQkJUHVzaENvcGllZFNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCQkJCQkJZWxzZQorCQkJCQkJCQlQdXNoQWN0 aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJCQkJCX0KKworCQkJCQkJ LyoKKwkJCQkJCSAqIEZyb20gdGhlIDJuZCBzdGF0ZW1lbnQgb253YXJkcywgdXBkYXRlIHRoZSBj b21tYW5kCisJCQkJCQkgKiBJRCBhbmQgdGhlIHNuYXBzaG90IHRvIG1hdGNoLgorCQkJCQkJICov CisJCQkJCQlpZiAoIWZpcnN0KQorCQkJCQkJeworCQkJCQkJCUNvbW1hbmRDb3VudGVySW5jcmVt ZW50KCk7CisJCQkJCQkJVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsKKwkJCQkJCX0K KworCQkJCQkJZmlyc3QgPSBmYWxzZTsKKworCQkJCQkJLyoKKwkJCQkJCSAqIENyZWF0ZSB0aGUg UXVlcnlEZXNjIG9iamVjdC4gIERlc3RSZWNlaXZlciB3aWxsCisJCQkJCQkgKiBiZSBzZXQgaW4g UG9ydGFsUnVuTXVsdGkoKS4KKwkJCQkJCSAqLworCQkJCQkJcXVlcnlEZXNjID0gQ3JlYXRlUXVl cnlEZXNjKHBsYW4sIHBvcnRhbC0+Y3BsYW4sCisJCQkJCQkJCQkJCQkJcG9ydGFsLT5zb3VyY2VU ZXh0LAorCQkJCQkJCQkJCQkJCSFpc191dGlsaXR5ID8KKwkJCQkJCQkJCQkJCQlHZXRBY3RpdmVT bmFwc2hvdCgpIDoKKwkJCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCisJCQkJCQkJCQkJCQkJ SW52YWxpZFNuYXBzaG90LAorCQkJCQkJCQkJCQkJCU5VTEwsCisJCQkJCQkJCQkJCQkJcGFyYW1z LAorCQkJCQkJCQkJCQkJCXBvcnRhbC0+cXVlcnlFbnYsIDApOworCisJCQkJCQkvKiBSZW1lbWJl ciBmb3IgUG9ydGFsUnVuTXVsdGkoKSAqLworCQkJCQkJcG9ydGFsLT5xZGVzY3MgPSBsYXBwZW5k KHBvcnRhbC0+cWRlc2NzLCBxdWVyeURlc2MpOworCisJCQkJCQlpZiAoaXNfdXRpbGl0eSkKKwkJ CQkJCQljb250aW51ZTsKKworCQkJCQkJLyoKKwkJCQkJCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0 byBwcmVwYXJlIHRoZSBwbGFuIGZvcgorCQkJCQkJICogZXhlY3V0aW9uLiAgQSBjYWNoZWQgcGxh biBtYXkgZ2V0IGludmFsaWRhdGVkIGFzCisJCQkJCQkgKiB3ZSdyZSBkb2luZyB0aGF0LgorCQkJ CQkJICovCisJCQkJCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxhZ3MpOworCQkJCQkJ UG9wQWN0aXZlU25hcHNob3QoKTsKKwkJCQkJCWlmICghcXVlcnlEZXNjLT5wbGFuX3ZhbGlkKQor CQkJCQkJeworCQkJCQkJCUFzc2VydChxdWVyeURlc2MtPmNwbGFuKTsKKwkJCQkJCQlQb3J0YWxR dWVyeUZpbmlzaChxdWVyeURlc2MpOworCQkJCQkJCXBvcnRhbC0+cGxhbl92YWxpZCA9IGZhbHNl OworCQkJCQkJCWdvdG8gZWFybHlfZXhpdDsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwogCQkJ CXBvcnRhbC0+dHVwRGVzYyA9IE5VTEw7CisJCQkJcG9ydGFsLT5wbGFuX3ZhbGlkID0gdHJ1ZTsK IAkJCQlicmVhazsKIAkJfQogCX0KQEAgLTU5NCwxOSArNTg3LDE4IEBAIFBvcnRhbFN0YXJ0KFBv cnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkvKiBSZXN0b3JlIGdsb2JhbCB2 YXJzIGFuZCBwcm9wYWdhdGUgZXJyb3IgKi8KIAkJQWN0aXZlUG9ydGFsID0gc2F2ZUFjdGl2ZVBv cnRhbDsKIAkJQ3VycmVudFJlc291cmNlT3duZXIgPSBzYXZlUmVzb3VyY2VPd25lcjsKLQkJUG9y dGFsQ29udGV4dCA9IHNhdmVQb3J0YWxDb250ZXh0OwogCiAJCVBHX1JFX1RIUk9XKCk7CiAJfQog CVBHX0VORF9UUlkoKTsKIAorCXBvcnRhbC0+c3RhdHVzID0gUE9SVEFMX1JFQURZOworCitlYXJs eV9leGl0OgogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDb250ZXh0KTsKIAogCUFjdGl2ZVBv cnRhbCA9IHNhdmVBY3RpdmVQb3J0YWw7CiAJQ3VycmVudFJlc291cmNlT3duZXIgPSBzYXZlUmVz b3VyY2VPd25lcjsKLQlQb3J0YWxDb250ZXh0ID0gc2F2ZVBvcnRhbENvbnRleHQ7Ci0KLQlwb3J0 YWwtPnN0YXR1cyA9IFBPUlRBTF9SRUFEWTsKIH0KIAogLyoKQEAgLTExOTMsNyArMTE4NSw3IEBA IFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQkgICBRdWVyeUNvbXBsZXRpb24gKnFj KQogewogCWJvb2wJCWFjdGl2ZV9zbmFwc2hvdF9zZXQgPSBmYWxzZTsKLQlMaXN0Q2VsbCAgICpz dG10bGlzdF9pdGVtOworCUxpc3RDZWxsICAgKnFkZXNjX2l0ZW07CiAKIAkvKgogCSAqIElmIHRo ZSBkZXN0aW5hdGlvbiBpcyBEZXN0UmVtb3RlRXhlY3V0ZSwgY2hhbmdlIHRvIERlc3ROb25lLiAg VGhlCkBAIC0xMjE0LDkgKzEyMDYsMTAgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwK IAkgKiBMb29wIHRvIGhhbmRsZSB0aGUgaW5kaXZpZHVhbCBxdWVyaWVzIGdlbmVyYXRlZCBmcm9t IGEgc2luZ2xlIHBhcnNldHJlZQogCSAqIGJ5IGFuYWx5c2lzIGFuZCByZXdyaXRlLgogCSAqLwot CWZvcmVhY2goc3RtdGxpc3RfaXRlbSwgcG9ydGFsLT5zdG10cykKKwlmb3JlYWNoKHFkZXNjX2l0 ZW0sIHBvcnRhbC0+cWRlc2NzKQogCXsKLQkJUGxhbm5lZFN0bXQgKnBzdG10ID0gbGZpcnN0X25v ZGUoUGxhbm5lZFN0bXQsIHN0bXRsaXN0X2l0ZW0pOworCQlRdWVyeURlc2MgKnFkZXNjID0gKFF1 ZXJ5RGVzYyAqKSBsZmlyc3QocWRlc2NfaXRlbSk7CisJCVBsYW5uZWRTdG10ICpwc3RtdCA9IHFk ZXNjLT5wbGFubmVkc3RtdDsKIAogCQkvKgogCQkgKiBJZiB3ZSBnb3QgYSBjYW5jZWwgc2lnbmFs IGluIHByaW9yIGNvbW1hbmQsIHF1aXQKQEAgLTEyNzEsMjMgKzEyNjQsMzggQEAgUG9ydGFsUnVu TXVsdGkoUG9ydGFsIHBvcnRhbCwKIAkJCWVsc2UKIAkJCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENv bW1hbmRJZCgpOwogCisJCQkvKgorCQkJICogUnVuIHRoZSBwbGFuIHRvIGNvbXBsZXRpb24uCisJ CQkgKi8KKwkJCXFkZXNjLT5kZXN0ID0gZGVzdDsKKwkJCUV4ZWN1dG9yUnVuKHFkZXNjLCBGb3J3 YXJkU2NhbkRpcmVjdGlvbiwgMCwgdHJ1ZSk7CisKKwkJCS8qCisJCQkgKiBCdWlsZCBjb21tYW5k IGNvbXBsZXRpb24gc3RhdHVzIGRhdGEgaWYgbmVlZGVkLgorCQkJICovCiAJCQlpZiAocHN0bXQt PmNhblNldFRhZykKIAkJCXsKLQkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5nICov Ci0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAotCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCi0J CQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAotCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LAot CQkJCQkJCSBkZXN0LCBxYyk7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJLyogc3RtdCBhZGRl ZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFnICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAot CQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCi0JCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1z LAotCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LAotCQkJCQkJCSBhbHRkZXN0LCBOVUxMKTsKKwkJ CQlzd2l0Y2ggKHFkZXNjLT5vcGVyYXRpb24pCisJCQkJeworCQkJCQljYXNlIENNRF9TRUxFQ1Q6 CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19TRUxFQ1QsIHFkZXNjLT5lc3Rh dGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBDTURfSU5TRVJUOgor CQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfSU5TRVJULCBxZGVzYy0+ZXN0YXRl LT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgQ01EX1VQREFURToKKwkJ CQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1VQREFURSwgcWRlc2MtPmVzdGF0ZS0+ ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIENNRF9ERUxFVEU6CisJCQkJ CQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19ERUxFVEUsIHFkZXNjLT5lc3RhdGUtPmVz X3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBDTURfTUVSR0U6CisJCQkJCQlT ZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19NRVJHRSwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJv Y2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCQlkZWZhdWx0OgorCQkJCQkJU2V0UXVlcnlDb21w bGV0aW9uKHFjLCBDTURUQUdfVU5LTk9XTiwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsK KwkJCQkJCWJyZWFrOworCQkJCX0KIAkJCX0KIAogCQkJaWYgKGxvZ19leGVjdXRvcl9zdGF0cykK QEAgLTEzNDYsOCArMTM1NCwxNSBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAogCQkg KiBJbmNyZW1lbnQgY29tbWFuZCBjb3VudGVyIGJldHdlZW4gcXVlcmllcywgYnV0IG5vdCBhZnRl ciB0aGUgbGFzdAogCQkgKiBvbmUuCiAJCSAqLwotCQlpZiAobG5leHQocG9ydGFsLT5zdG10cywg c3RtdGxpc3RfaXRlbSkgIT0gTlVMTCkKKwkJaWYgKGxuZXh0KHBvcnRhbC0+cWRlc2NzLCBxZGVz Y19pdGVtKSAhPSBOVUxMKQogCQkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCQlpZiAo cWRlc2MtPmVzdGF0ZSkKKwkJeworCQkJRXhlY3V0b3JGaW5pc2gocWRlc2MpOworCQkJRXhlY3V0 b3JFbmQocWRlc2MpOworCQl9CisJCUZyZWVRdWVyeURlc2MocWRlc2MpOwogCX0KIAogCS8qIFBv cCB0aGUgc25hcHNob3QgaWYgd2UgcHVzaGVkIG9uZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5 c2NhY2hlLmMKaW5kZXggNjA5NzhmOTQxNS4uZGUzZmM3NTZlMiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvbHN5c2NhY2hlLmMKQEAgLTIwNzMsNiArMjA3MywyNyBAQCBnZXRfcmVsX3BlcnNpc3RlbmNl KE9pZCByZWxpZCkKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogZ2V0X3JlbF9yZWxpc3No YXJlZAorICoKKyAqCQlSZXR1cm5zIGlmIHRoZSBnaXZlbiByZWxhdGlvbiBpcyBzaGFyZWQgb3Ig bm90CisgKi8KK2Jvb2wKK2dldF9yZWxfcmVsaXNzaGFyZWQoT2lkIHJlbGlkKQoreworCUhlYXBU dXBsZQl0cDsKKwlGb3JtX3BnX2NsYXNzIHJlbHR1cDsKKwlib29sCQlyZXN1bHQ7CisKKwl0cCA9 IFNlYXJjaFN5c0NhY2hlMShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0ocmVsaWQpKTsKKwlpZiAo IUhlYXBUdXBsZUlzVmFsaWQodHApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3IgcmVsYXRpb24gJXUiLCByZWxpZCk7CisJcmVsdHVwID0gKEZvcm1fcGdfY2xhc3MpIEdF VFNUUlVDVCh0cCk7CisJcmVzdWx0ID0gcmVsdHVwLT5yZWxpc3NoYXJlZDsKKwlSZWxlYXNlU3lz Q2FjaGUodHApOworCisJcmV0dXJuIHJlc3VsdDsKK30KIAogLyoJCQkJLS0tLS0tLS0tLSBUUkFO U0ZPUk0gQ0FDSEUgLS0tLS0tLS0tLQkJCQkJCSAqLwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5j YWNoZS5jCmluZGV4IDg3MjEwZmNmNjIuLjE2ZmI4NTMxMmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3BsYW5jYWNoZS5jCkBAIC0xMDAsMTMgKzEwMCwxMyBAQCBzdGF0aWMgdm9pZCBSZWxlYXNlR2Vu ZXJpY1BsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgTGlzdCAqUmV2 YWxpZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJ CSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIHN0YXRpYyBib29sIENoZWNrQ2FjaGVk UGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKK3N0YXRpYyBib29sIEdlbmVyaWNQ bGFuSXNWYWxpZChDYWNoZWRQbGFuICpjcGxhbik7CiBzdGF0aWMgQ2FjaGVkUGxhbiAqQnVpbGRD YWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCQkJ CQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVy eUVudik7CiBzdGF0aWMgYm9vbCBjaG9vc2VfY3VzdG9tX3BsYW4oQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSwKIAkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKTsKIHN0YXRp YyBkb3VibGUgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVf cGxhbm5lcik7CiBzdGF0aWMgUXVlcnkgKlF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExpc3QgKnN0 bXRzKTsKLXN0YXRpYyB2b2lkIEFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwg Ym9vbCBhY3F1aXJlKTsKIHN0YXRpYyB2b2lkIEFjcXVpcmVQbGFubmVyTG9ja3MoTGlzdCAqc3Rt dF9saXN0LCBib29sIGFjcXVpcmUpOwogc3RhdGljIHZvaWQgU2NhblF1ZXJ5Rm9yTG9ja3MoUXVl cnkgKnBhcnNldHJlZSwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyBib29sIFNjYW5RdWVyeVdhbGtl cihOb2RlICpub2RlLCBib29sICphY3F1aXJlKTsKQEAgLTc4OCw4ICs3ODgsMTQgQEAgUmV2YWxp ZGF0ZUNhY2hlZFF1ZXJ5KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAgKiBDYWxsZXIg bXVzdCBoYXZlIGFscmVhZHkgY2FsbGVkIFJldmFsaWRhdGVDYWNoZWRRdWVyeSB0byB2ZXJpZnkg dGhhdCB0aGUKICAqIHF1ZXJ5dHJlZSBpcyB1cCB0byBkYXRlLgogICoKLSAqIE9uIGEgInRydWUi IHJldHVybiwgd2UgaGF2ZSBhY3F1aXJlZCB0aGUgbG9ja3MgbmVlZGVkIHRvIHJ1biB0aGUgcGxh bi4KLSAqIChXZSBtdXN0IGRvIHRoaXMgZm9yIHRoZSAidHJ1ZSIgcmVzdWx0IHRvIGJlIHJhY2Ut Y29uZGl0aW9uLWZyZWUuKQorICogTm90ZSB0aG91Z2ggdGhhdCBpZiB0aGUgcGxhbiBjb250YWlu cyBhbnkgY2hpbGQgcmVsYXRpb25zIHRoYXQgd291bGQgaGF2ZQorICogYmVlbiBhZGRlZCBieSB0 aGUgcGxhbm5lciwgd2hpY2ggd291bGQgbm90IGhhdmUgYmVlbiBsb2NrZWQgeWV0IChiZWNhdXNl CisgKiBBY3F1aXJlUGxhbm5lckxvY2tzKCkgb25seSBsb2NrcyByZWxhdGlvbnMgdGhhdCB3b3Vs ZCBiZSBwcmVzZW50IGluIHRoZQorICogcmFuZ2UgdGFibGUgYmVmb3JlIGVudGVyaW5nIHRoZSBw bGFubmVyKSwgdGhlIHBsYW4gY291bGQgZ28gc3RhbGUgYmVmb3JlCisgKiBpdCByZWFjaGVzIGV4 ZWN1dGlvbiBpZiBhbnkgb2YgdGhvc2UgY2hpbGQgcmVsYXRpb25zIGdldCBtb2RpZmllZAorICog Y29uY3VycmVudGx5LiAgVGhlIGV4ZWN1dG9yIG11c3QgY2hlY2sgdGhhdCB0aGUgcGxhbiAoQ2Fj aGVkUGxhbikgaXMgc3RpbGwKKyAqIHZhbGlkIGFmdGVyIHRha2luZyBhIGxvY2sgb24gZWFjaCBv ZiB0aGUgY2hpbGQgdGFibGVzLCBhbmQgaWYgaXQgaXMgbm90LAorICogYXNrIHRoZSBjYWxsZXIg dG8gcmVjcmVhdGUgdGhlIHBsYW4uCiAgKi8KIHN0YXRpYyBib29sCiBDaGVja0NhY2hlZFBsYW4o Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKQEAgLTgwMyw2MCArODA5LDU2IEBAIENoZWNr Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogCWlmICghcGxhbikKIAkJ cmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHBsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMp OwotCS8qIEdlbmVyaWMgcGxhbnMgYXJlIG5ldmVyIG9uZS1zaG90ICovCi0JQXNzZXJ0KCFwbGFu LT5pc19vbmVzaG90KTsKKwlpZiAoR2VuZXJpY1BsYW5Jc1ZhbGlkKHBsYW4pKQorCQlyZXR1cm4g dHJ1ZTsKIAogCS8qCi0JICogSWYgcGxhbiBpc24ndCB2YWxpZCBmb3IgY3VycmVudCByb2xlLCB3 ZSBjYW4ndCB1c2UgaXQuCisJICogUGxhbiBoYXMgYmVlbiBpbnZhbGlkYXRlZCwgc28gdW5saW5r IGl0IGZyb20gdGhlIHBhcmVudCBhbmQgcmVsZWFzZSBpdC4KIAkgKi8KLQlpZiAocGxhbi0+aXNf dmFsaWQgJiYgcGxhbi0+ZGVwZW5kc09uUm9sZSAmJgotCQlwbGFuLT5wbGFuUm9sZUlkICE9IEdl dFVzZXJJZCgpKQotCQlwbGFuLT5pc192YWxpZCA9IGZhbHNlOworCVJlbGVhc2VHZW5lcmljUGxh bihwbGFuc291cmNlKTsKIAotCS8qCi0JICogSWYgaXQgYXBwZWFycyB2YWxpZCwgYWNxdWlyZSBs b2NrcyBhbmQgcmVjaGVjazsgdGhpcyBpcyBtdWNoIHRoZSBzYW1lCi0JICogbG9naWMgYXMgaW4g UmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5LCBidXQgZm9yIGEgcGxhbi4KLQkgKi8KLQlpZiAocGxhbi0+ aXNfdmFsaWQpCisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogR2VuZXJpY1BsYW5Jc1ZhbGlk CisgKgkJSXMgYSBnZW5lcmljIHBsYW4gc3RpbGwgdmFsaWQ/CisgKgorICogSXQgbWF5IGhhdmUg Z29uZSBzdGFsZSBkdWUgdG8gY29uY3VycmVudCBzY2hlbWEgbW9kaWZpY2F0aW9ucyBvZiByZWxh dGlvbnMKKyAqIG1lbnRpb25lZCBpbiB0aGUgcGxhbiBvciBhIGNvdXBsZSBvZiBvdGhlciB0aGlu Z3MgbWVudGlvbmVkIGJlbG93LgorICovCitzdGF0aWMgYm9vbAorR2VuZXJpY1BsYW5Jc1ZhbGlk KENhY2hlZFBsYW4gKmNwbGFuKQoreworCUFzc2VydChjcGxhbiAhPSBOVUxMKTsKKwlBc3NlcnQo Y3BsYW4tPm1hZ2ljID09IENBQ0hFRFBMQU5fTUFHSUMpOworCS8qIEdlbmVyaWMgcGxhbnMgYXJl IG5ldmVyIG9uZS1zaG90ICovCisJQXNzZXJ0KCFjcGxhbi0+aXNfb25lc2hvdCk7CisKKwlpZiAo Y3BsYW4tPmlzX3ZhbGlkKQogCXsKIAkJLyoKIAkJICogUGxhbiBtdXN0IGhhdmUgcG9zaXRpdmUg cmVmY291bnQgYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGJ5CiAJCSAqIHBsYW5zb3VyY2U7IHNv IG5vIG5lZWQgdG8gZmVhciBpdCBkaXNhcHBlYXJzIHVuZGVyIHVzIGhlcmUuCiAJCSAqLwotCQlB c3NlcnQocGxhbi0+cmVmY291bnQgPiAwKTsKLQotCQlBY3F1aXJlRXhlY3V0b3JMb2NrcyhwbGFu LT5zdG10X2xpc3QsIHRydWUpOworCQlBc3NlcnQoY3BsYW4tPnJlZmNvdW50ID4gMCk7CiAKIAkJ LyoKLQkJICogSWYgcGxhbiB3YXMgdHJhbnNpZW50LCBjaGVjayB0byBzZWUgaWYgVHJhbnNhY3Rp b25YbWluIGhhcwotCQkgKiBhZHZhbmNlZCwgYW5kIGlmIHNvIGludmFsaWRhdGUgaXQuCisJCSAq IElmIHBsYW4gaXNuJ3QgdmFsaWQgZm9yIGN1cnJlbnQgcm9sZSwgd2UgY2FuJ3QgdXNlIGl0Lgog CQkgKi8KLQkJaWYgKHBsYW4tPmlzX3ZhbGlkICYmCi0JCQlUcmFuc2FjdGlvbklkSXNWYWxpZChw bGFuLT5zYXZlZF94bWluKSAmJgotCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMocGxhbi0+c2F2ZWRf eG1pbiwgVHJhbnNhY3Rpb25YbWluKSkKLQkJCXBsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CisJCWlm IChjcGxhbi0+ZGVwZW5kc09uUm9sZSAmJiBjcGxhbi0+cGxhblJvbGVJZCAhPSBHZXRVc2VySWQo KSkKKwkJCWNwbGFuLT5pc192YWxpZCA9IGZhbHNlOwogCiAJCS8qCi0JCSAqIEJ5IG5vdywgaWYg YW55IGludmFsaWRhdGlvbiBoYXMgaGFwcGVuZWQsIHRoZSBpbnZhbCBjYWxsYmFjawotCQkgKiBm dW5jdGlvbnMgd2lsbCBoYXZlIG1hcmtlZCB0aGUgcGxhbiBpbnZhbGlkLgorCQkgKiBJZiBwbGFu IHdhcyB0cmFuc2llbnQsIGNoZWNrIHRvIHNlZSBpZiBUcmFuc2FjdGlvblhtaW4gaGFzCisJCSAq IGFkdmFuY2VkLCBhbmQgaWYgc28gaW52YWxpZGF0ZSBpdC4KIAkJICovCi0JCWlmIChwbGFuLT5p c192YWxpZCkKLQkJewotCQkJLyogU3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVkIGFuZCBsb2NrZWQg dGhlIHF1ZXJ5LiAqLwotCQkJcmV0dXJuIHRydWU7Ci0JCX0KLQotCQkvKiBPb3BzLCB0aGUgcmFj ZSBjYXNlIGhhcHBlbmVkLiAgUmVsZWFzZSB1c2VsZXNzIGxvY2tzLiAqLwotCQlBY3F1aXJlRXhl Y3V0b3JMb2NrcyhwbGFuLT5zdG10X2xpc3QsIGZhbHNlKTsKKwkJaWYgKFRyYW5zYWN0aW9uSWRJ c1ZhbGlkKGNwbGFuLT5zYXZlZF94bWluKSAmJgorCQkJIVRyYW5zYWN0aW9uSWRFcXVhbHMoY3Bs YW4tPnNhdmVkX3htaW4sIFRyYW5zYWN0aW9uWG1pbikpCisJCQljcGxhbi0+aXNfdmFsaWQgPSBm YWxzZTsKIAl9CiAKLQkvKgotCSAqIFBsYW4gaGFzIGJlZW4gaW52YWxpZGF0ZWQsIHNvIHVubGlu ayBpdCBmcm9tIHRoZSBwYXJlbnQgYW5kIHJlbGVhc2UgaXQuCi0JICovCi0JUmVsZWFzZUdlbmVy aWNQbGFuKHBsYW5zb3VyY2UpOwotCi0JcmV0dXJuIGZhbHNlOworCXJldHVybiBjcGxhbi0+aXNf dmFsaWQ7CiB9CiAKIC8qCkBAIC0xMTI2LDggKzExMjgsMTUgQEAgY2FjaGVkX3BsYW5fY29zdChD YWNoZWRQbGFuICpwbGFuLCBib29sIGluY2x1ZGVfcGxhbm5lcikKICAqIHBsYW4gb3IgYSBjdXN0 b20gcGxhbiBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlcnM6IHRoZSBjYWxsZXIgZG9lcyBub3Qga25v dwogICogd2hpY2ggaXQgd2lsbCBnZXQuCiAgKgotICogT24gcmV0dXJuLCB0aGUgcGxhbiBpcyB2 YWxpZCBhbmQgd2UgaGF2ZSBzdWZmaWNpZW50IGxvY2tzIHRvIGJlZ2luCi0gKiBleGVjdXRpb24u CisgKiBPbiByZXR1cm4sIHRoZSBwbGFuIGlzIHZhbGlkIHVubGVzcyBpdCBjb250YWlucyBpbmhl cml0YW5jZS9wYXJ0aXRpb24gY2hpbGQKKyAqIHRhYmxlcywgdGhhdCBpcywgb25seSB0aGUgbG9j a3Mgb24gdGhlIHRhYmxlcyBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5IGhhdmUKKyAqIGJlZW4gdGFr ZW4uICBJZiBhbnkgb2YgdGhvc2UgdGFibGVzIGhhdmUgaW5oZXJpdGFuY2UvcGFydGl0aW9uIHRh YmxlcywgdGhlCisgKiBleGVjdXRvciBtdXN0IGFsc28gbG9jayB0aGVtIGJlZm9yZSBleGVjdXRp bmcgdGhlIHBsYW4gYW5kIGlmIHRoZSBwbGFuIGdldHMKKyAqIGludmFsaWRhdGVkIGFzIGEgcmVz dWx0IG9mIHRha2luZyB0aG9zZSBsb2NrcywgbXVzdCBhc2sgdGhlIGNhbGxlciB0byBnZXQKKyAq IGEgbmV3IHBsYW4gYnkgY2FsbGluZyBoZXJlIGFnYWluLiAgTG9ja2luZyBvZiB0aGUgY2hpbGQg dGFibGVzIG11c3QgYmUKKyAqIGRlZmVycmVkIHRvIHRoZSBleGVjdXRvciBsaWtlIHRoaXMsIGJl Y2F1c2Ugbm90IGFsbCBjaGlsZCB0YWJsZXMgbWF5IG5lZWQKKyAqIHRvIGJlIGxvY2tlZDsgc29t ZSBtYXkgZ2V0IHBydW5lZCBkdXJpbmcgdGhlIGV4ZWN1dG9yIHBsYW4gaW5pdGlhbGl6YXRpb24K KyAqIHBoYXNlIChJbml0UGxhbigpKS4KICAqCiAgKiBPbiByZXR1cm4sIHRoZSByZWZjb3VudCBv ZiB0aGUgcGxhbiBoYXMgYmVlbiBpbmNyZW1lbnRlZDsgYSBsYXRlcgogICogUmVsZWFzZUNhY2hl ZFBsYW4oKSBjYWxsIGlzIGV4cGVjdGVkLiAgSWYgIm93bmVyIiBpcyBub3QgTlVMTCB0aGVuCkBA IC0xMzYwLDggKzEzNjksOCBAQCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCX0KIAogCS8qCi0JICogUmVqZWN0IGlmIEFj cXVpcmVFeGVjdXRvckxvY2tzIHdvdWxkIGhhdmUgYW55dGhpbmcgdG8gZG8uICBUaGlzIGlzCi0J ICogcHJvYmFibHkgdW5uZWNlc3NhcnkgZ2l2ZW4gdGhlIHByZXZpb3VzIGNoZWNrLCBidXQgbGV0 J3MgYmUgc2FmZS4KKwkgKiBSZWplY3QgaWYgdGhlIGV4ZWN1dG9yIHdvdWxkIG5lZWQgdG8gdGFr ZSBhZGRpdGlvbmFsIGxvY2tzLCB0aGF0IGlzLCBpbgorCSAqIGFkZGl0aW9uIHRvIHRob3NlIHRh a2VuIGJ5IEFjcXVpcmVQbGFubmVyTG9ja3MoKSBvbiBhIGdpdmVuIHF1ZXJ5LgogCSAqLwogCWZv cmVhY2gobGMsIHBsYW4tPnN0bXRfbGlzdCkKIAl7CkBAIC0xNzM1LDU4ICsxNzQ0LDYgQEAgUXVl cnlMaXN0R2V0UHJpbWFyeVN0bXQoTGlzdCAqc3RtdHMpCiAJcmV0dXJuIE5VTEw7CiB9CiAKLS8q Ci0gKiBBY3F1aXJlRXhlY3V0b3JMb2NrczogYWNxdWlyZSBsb2NrcyBuZWVkZWQgZm9yIGV4ZWN1 dGlvbiBvZiBhIGNhY2hlZCBwbGFuOwotICogb3IgcmVsZWFzZSB0aGVtIGlmIGFjcXVpcmUgaXMg ZmFsc2UuCi0gKi8KLXN0YXRpYyB2b2lkCi1BY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0ICpzdG10 X2xpc3QsIGJvb2wgYWNxdWlyZSkKLXsKLQlMaXN0Q2VsbCAgICpsYzE7Ci0KLQlmb3JlYWNoKGxj MSwgc3RtdF9saXN0KQotCXsKLQkJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gbGZpcnN0X25v ZGUoUGxhbm5lZFN0bXQsIGxjMSk7Ci0JCUxpc3RDZWxsICAgKmxjMjsKLQotCQlpZiAocGxhbm5l ZHN0bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQotCQl7Ci0JCQkvKgotCQkJICogSWdu b3JlIHV0aWxpdHkgc3RhdGVtZW50cywgZXhjZXB0IHRob3NlIChzdWNoIGFzIEVYUExBSU4pIHRo YXQKLQkJCSAqIGNvbnRhaW4gYSBwYXJzZWQtYnV0LW5vdC1wbGFubmVkIHF1ZXJ5LiAgTm90ZTog aXQncyBva2F5IHRvIHVzZQotCQkJICogU2NhblF1ZXJ5Rm9yTG9ja3MsIGV2ZW4gdGhvdWdoIHRo ZSBxdWVyeSBoYXNuJ3QgYmVlbiB0aHJvdWdoCi0JCQkgKiBydWxlIHJld3JpdGluZywgYmVjYXVz ZSByZXdyaXRpbmcgZG9lc24ndCBjaGFuZ2UgdGhlIHF1ZXJ5Ci0JCQkgKiByZXByZXNlbnRhdGlv bi4KLQkJCSAqLwotCQkJUXVlcnkJICAgKnF1ZXJ5ID0gVXRpbGl0eUNvbnRhaW5zUXVlcnkocGxh bm5lZHN0bXQtPnV0aWxpdHlTdG10KTsKLQotCQkJaWYgKHF1ZXJ5KQotCQkJCVNjYW5RdWVyeUZv ckxvY2tzKHF1ZXJ5LCBhY3F1aXJlKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KLQkJZm9yZWFjaChs YzIsIHBsYW5uZWRzdG10LT5ydGFibGUpCi0JCXsKLQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IChS YW5nZVRibEVudHJ5ICopIGxmaXJzdChsYzIpOwotCi0JCQlpZiAoIShydGUtPnJ0ZWtpbmQgPT0g UlRFX1JFTEFUSU9OIHx8Ci0JCQkJICAocnRlLT5ydGVraW5kID09IFJURV9TVUJRVUVSWSAmJiBP aWRJc1ZhbGlkKHJ0ZS0+cmVsaWQpKSkpCi0JCQkJY29udGludWU7Ci0KLQkJCS8qCi0JCQkgKiBB Y3F1aXJlIHRoZSBhcHByb3ByaWF0ZSB0eXBlIG9mIGxvY2sgb24gZWFjaCByZWxhdGlvbiBPSUQu IE5vdGUKLQkJCSAqIHRoYXQgd2UgZG9uJ3QgYWN0dWFsbHkgdHJ5IHRvIG9wZW4gdGhlIHJlbCwg YW5kIGhlbmNlIHdpbGwgbm90Ci0JCQkgKiBmYWlsIGlmIGl0J3MgYmVlbiBkcm9wcGVkIGVudGly ZWx5IC0tLSB3ZSdsbCBqdXN0IHRyYW5zaWVudGx5Ci0JCQkgKiBhY3F1aXJlIGEgbm9uLWNvbmZs aWN0aW5nIGxvY2suCi0JCQkgKi8KLQkJCWlmIChhY3F1aXJlKQotCQkJCUxvY2tSZWxhdGlvbk9p ZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKLQkJCWVsc2UKLQkJCQlVbmxvY2tSZWxh dGlvbk9pZChydGUtPnJlbGlkLCBydGUtPnJlbGxvY2ttb2RlKTsKLQkJfQotCX0KLX0KLQogLyoK ICAqIEFjcXVpcmVQbGFubmVyTG9ja3M6IGFjcXVpcmUgbG9ja3MgbmVlZGVkIGZvciBwbGFubmlu ZyBvZiBhIHF1ZXJ5dHJlZSBsaXN0OwogICogb3IgcmVsZWFzZSB0aGVtIGlmIGFjcXVpcmUgaXMg ZmFsc2UuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYwppbmRleCAwNmRmYTg1ZjA0Li4wY2Fk NDUwZGNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKQEAgLTIwMSw2ICsyMDEsMTMg QEAgQ3JlYXRlUG9ydGFsKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgYWxsb3dEdXAsIGJvb2wgZHVw U2lsZW50KQogCXBvcnRhbC0+cG9ydGFsQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShU b3BQb3J0YWxDb250ZXh0LAogCQkJCQkJCQkJCQkJICAiUG9ydGFsQ29udGV4dCIsCiAJCQkJCQkJ CQkJCQkgIEFMTE9DU0VUX1NNQUxMX1NJWkVTKTsKKwkvKgorCSAqIGluaXRpYWxpemUgcG9ydGFs J3MgcXVlcnkgY29udGV4dCB0byBzdG9yZSBRdWVyeURlc2NzIGNyZWF0ZWQgZHVyaW5nCisJICog UG9ydGFsU3RhcnQoKSBhbmQgdGhlbiB1c2VkIGluIFBvcnRhbFJ1bigpLgorCSAqLworCXBvcnRh bC0+cXVlcnlDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcFBvcnRhbENvbnRleHQs CisJCQkJCQkJCQkJCQkgIlBvcnRhbFF1ZXJ5Q29udGV4dCIsCisJCQkJCQkJCQkJCQkgQUxMT0NT RVRfU01BTExfU0laRVMpOwogCiAJLyogY3JlYXRlIGEgcmVzb3VyY2Ugb3duZXIgZm9yIHRoZSBw b3J0YWwgKi8KIAlwb3J0YWwtPnJlc293bmVyID0gUmVzb3VyY2VPd25lckNyZWF0ZShDdXJUcmFu c2FjdGlvblJlc291cmNlT3duZXIsCkBAIC0yMjQsNiArMjMxLDcgQEAgQ3JlYXRlUG9ydGFsKGNv bnN0IGNoYXIgKm5hbWUsIGJvb2wgYWxsb3dEdXAsIGJvb2wgZHVwU2lsZW50KQogCiAJLyogZm9y IG5hbWVkIHBvcnRhbHMgcmV1c2UgcG9ydGFsLT5uYW1lIGNvcHkgKi8KIAlNZW1vcnlDb250ZXh0 U2V0SWRlbnRpZmllcihwb3J0YWwtPnBvcnRhbENvbnRleHQsIHBvcnRhbC0+bmFtZVswXSA/IHBv cnRhbC0+bmFtZSA6ICI8dW5uYW1lZD4iKTsKKwlNZW1vcnlDb250ZXh0U2V0SWRlbnRpZmllcihw b3J0YWwtPnF1ZXJ5Q29udGV4dCwgcG9ydGFsLT5uYW1lWzBdID8gcG9ydGFsLT5uYW1lIDogIjx1 bm5hbWVkPiIpOwogCiAJcmV0dXJuIHBvcnRhbDsKIH0KQEAgLTU5NCw2ICs2MDIsNyBAQCBQb3J0 YWxEcm9wKFBvcnRhbCBwb3J0YWwsIGJvb2wgaXNUb3BDb21taXQpCiAKIAkvKiByZWxlYXNlIHN1 YnNpZGlhcnkgc3RvcmFnZSAqLwogCU1lbW9yeUNvbnRleHREZWxldGUocG9ydGFsLT5wb3J0YWxD b250ZXh0KTsKKwlNZW1vcnlDb250ZXh0RGVsZXRlKHBvcnRhbC0+cXVlcnlDb250ZXh0KTsKIAog CS8qIHJlbGVhc2UgcG9ydGFsIHN0cnVjdCAoaXQncyBpbiBUb3BQb3J0YWxDb250ZXh0KSAqLwog CXBmcmVlKHBvcnRhbCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWlu LmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKaW5kZXggM2QzZTYzMmEwYy4uMzky YWJiNTE1MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCisrKyBi L3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaApAQCAtODgsNyArODgsMTEgQEAgZXh0ZXJu IHZvaWQgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmlu dG8sCiAJCQkJCQkJICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywK IAkJCQkJCQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVu dik7CiAKLWV4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3Rt dCwgSW50b0NsYXVzZSAqaW50bywKK2V4dGVybiBRdWVyeURlc2MgKkV4cGxhaW5RdWVyeURlc2Mo UGxhbm5lZFN0bXQgKnN0bXQsIHN0cnVjdCBDYWNoZWRQbGFuICpjcGxhbiwKKwkJCQkgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCisJ CQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7Citl eHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKKwkJCQkJCSAg IEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkgICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFy ICpxdWVyeVN0cmluZywKIAkJCQkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmly b25tZW50ICpxdWVyeUVudiwKIAkJCQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlv biwKQEAgLTEwNCw2ICsxMDgsNyBAQCBleHRlcm4gdm9pZCBFeHBsYWluUXVlcnlQYXJhbWV0ZXJz KEV4cGxhaW5TdGF0ZSAqZXMsIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBpbnQgbQogCiBleHRlcm4g dm9pZCBFeHBsYWluQmVnaW5PdXRwdXQoRXhwbGFpblN0YXRlICplcyk7CiBleHRlcm4gdm9pZCBF eHBsYWluRW5kT3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMpOworZXh0ZXJuIHZvaWQgRXhwbGFpblJl c2V0T3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMpOwogZXh0ZXJuIHZvaWQgRXhwbGFpblNlcGFyYXRl UGxhbnMoRXhwbGFpblN0YXRlICplcyk7CiAKIGV4dGVybiB2b2lkIEV4cGxhaW5Qcm9wZXJ0eUxp c3QoY29uc3QgY2hhciAqcWxhYmVsLCBMaXN0ICpkYXRhLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgK aW5kZXggYWYyYmYzNmRmYi4uYzM2YzI1YjQ5NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhl Y3V0b3IvZXhlY2Rlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCkBA IC0zMiw5ICszMiwxMiBAQAogICovCiB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIHsKKwlOb2Rl VGFnCQl0eXBlOworCiAJLyogVGhlc2UgZmllbGRzIGFyZSBwcm92aWRlZCBieSBDcmVhdGVRdWVy eURlc2MgKi8KIAlDbWRUeXBlCQlvcGVyYXRpb247CQkvKiBDTURfU0VMRUNULCBDTURfVVBEQVRF LCBldGMuICovCiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10OwkvKiBwbGFubmVyJ3Mgb3V0cHV0 IChjb3VsZCBiZSB1dGlsaXR5LCB0b28pICovCisJc3RydWN0IENhY2hlZFBsYW4gKmNwbGFuOwkv KiBDYWNoZWRQbGFuLCBpZiBwbGFubmVkc3RtdCBpcyBmcm9tIG9uZSAqLwogCWNvbnN0IGNoYXIg KnNvdXJjZVRleHQ7CQkvKiBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkgKi8KIAlTbmFwc2hvdAlz bmFwc2hvdDsJCS8qIHNuYXBzaG90IHRvIHVzZSBmb3IgcXVlcnkgKi8KIAlTbmFwc2hvdAljcm9z c2NoZWNrX3NuYXBzaG90OwkvKiBjcm9zc2NoZWNrIGZvciBSSSB1cGRhdGUvZGVsZXRlICovCkBA IC00Nyw2ICs1MCw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5RGVzYwogCVR1cGxlRGVzYwl0dXBE ZXNjOwkJLyogZGVzY3JpcHRvciBmb3IgcmVzdWx0IHR1cGxlcyAqLwogCUVTdGF0ZQkgICAqZXN0 YXRlOwkJCS8qIGV4ZWN1dG9yJ3MgcXVlcnktd2lkZSBzdGF0ZSAqLwogCVBsYW5TdGF0ZSAgKnBs YW5zdGF0ZTsJCS8qIHRyZWUgb2YgcGVyLXBsYW4tbm9kZSBzdGF0ZSAqLworCWJvb2wJCXBsYW5f dmFsaWQ7CQkvKiBpcyBwbGFuc3RhdGUgdHJlZSBmdWxseSB2YWxpZD8gKi8KIAogCS8qIFRoaXMg ZmllbGQgaXMgc2V0IGJ5IEV4ZWN1dG9yUnVuICovCiAJYm9vbAkJYWxyZWFkeV9leGVjdXRlZDsJ LyogdHJ1ZSBpZiBwcmV2aW91c2x5IGV4ZWN1dGVkICovCkBAIC01Nyw2ICs2MSw3IEBAIHR5cGVk ZWYgc3RydWN0IFF1ZXJ5RGVzYwogCiAvKiBpbiBwcXVlcnkuYyAqLwogZXh0ZXJuIFF1ZXJ5RGVz YyAqQ3JlYXRlUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQkJCQkJICBz dHJ1Y3QgQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJCQkJCSAgY29uc3QgY2hhciAqc291cmNlVGV4 dCwKIAkJCQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJICBTbmFwc2hvdCBjcm9z c2NoZWNrX3NuYXBzaG90LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0 b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggYWMwMjI0Nzk0Ny4u N2NiYTIyYWNjNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAor KysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0xOSw2ICsxOSw3IEBACiAj aW5jbHVkZSAibm9kZXMvbG9ja29wdGlvbnMuaCIKICNpbmNsdWRlICJub2Rlcy9wYXJzZW5vZGVz LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9wbGFuY2Fj aGUuaCIKIAogCiAvKgpAQCAtNjEsNiArNjIsMTAgQEAKICAqIFdJVEhfTk9fREFUQSBpbmRpY2F0 ZXMgdGhhdCB3ZSBhcmUgcGVyZm9ybWluZyBSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXCiAgKiAu Li4gV0lUSCBOTyBEQVRBLiAgQ3VycmVudGx5LCB0aGUgb25seSBlZmZlY3QgaXMgdG8gc3VwcHJl c3MgZXJyb3JzIGFib3V0CiAgKiBzY2FubmluZyB1bnBvcHVsYXRlZCBtYXRlcmlhbGl6ZWQgdmll d3MuCisgKgorICogR0VUX0xPQ0tTIGluZGljYXRlcyB0aGF0IHRoZSBjYWxsZXIgb2YgRXhlY3V0 b3JTdGFydCgpIGlzIGV4ZWN1dGluZyBhCisgKiBjYWNoZWQgcGxhbiB3aGljaCBtdXN0IGJlIHZh bGlkYXRlZCBieSB0YWtpbmcgdGhlIHJlbWFpbmluZyBsb2NrcyBuZWNlc3NhcnkKKyAqIGZvciBl eGVjdXRpb24uCiAgKi8KICNkZWZpbmUgRVhFQ19GTEFHX0VYUExBSU5fT05MWQkJMHgwMDAxCS8q IEVYUExBSU4sIG5vIEFOQUxZWkUgKi8KICNkZWZpbmUgRVhFQ19GTEFHX0VYUExBSU5fR0VORVJJ QwkweDAwMDIJLyogRVhQTEFJTiAoR0VORVJJQ19QTEFOKSAqLwpAQCAtNjksNiArNzQsOCBAQAog I2RlZmluZSBFWEVDX0ZMQUdfTUFSSwkJCQkweDAwMTAJLyogbmVlZCBtYXJrL3Jlc3RvcmUgKi8K ICNkZWZpbmUgRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlMJCTB4MDAyMAkvKiBza2lwIEFmdGVyVHJp Z2dlciBzZXR1cCAqLwogI2RlZmluZSBFWEVDX0ZMQUdfV0lUSF9OT19EQVRBCQkweDAwNDAJLyog UkVGUkVTSCAuLi4gV0lUSCBOTyBEQVRBICovCisjZGVmaW5lIEVYRUNfRkxBR19HRVRfTE9DS1MJ CQkweDA0MDAJLyogc2hvdWxkIHRoZSBleGVjdXRvciBsb2NrCisJCQkJCQkJCQkJCSAqIHJlbGF0 aW9ucz8gKi8KIAogCiAvKiBIb29rIGZvciBwbHVnaW5zIHRvIGdldCBjb250cm9sIGluIEV4ZWN1 dG9yU3RhcnQoKSAqLwpAQCAtMjU2LDYgKzI2MywxNyBAQCBleHRlcm4gdm9pZCBFeGVjRW5kTm9k ZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1NodXRkb3duTm9kZShQbGFuU3Rh dGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1NldFR1cGxlQm91bmQoaW50NjQgdHVwbGVzX25l ZWRlZCwgUGxhblN0YXRlICpjaGlsZF9ub2RlKTsKIAorLyoKKyAqIElzIHRoZSBjYWNoZWQgcGxh biwgaWYgYW55LCBzdGlsbCB2YWxpZCBhdCB0aGlzIHBvaW50PyAgVGhhdCBpcywgbm90CisgKiBp bnZhbGlkYXRlZCBieSB0aGUgaW5jb21pbmcgaW52YWxpZGF0aW9uIG1lc3NhZ2VzIHRoYXQgaGF2 ZSBiZWVuIHByb2Nlc3NlZAorICogcmVjZW50bHkuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAor RXhlY1BsYW5TdGlsbFZhbGlkKEVTdGF0ZSAqZXN0YXRlKQoreworCXJldHVybiBlc3RhdGUtPmVz X2NhY2hlZHBsYW4gPT0gTlVMTCA/IHRydWUgOgorCQlDYWNoZWRQbGFuU3RpbGxWYWxpZChlc3Rh dGUtPmVzX2NhY2hlZHBsYW4pOworfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1Byb2NOb2RlCkBA IC01OTAsNiArNjA4LDkgQEAgZXhlY19ydF9mZXRjaChJbmRleCBydGksIEVTdGF0ZSAqZXN0YXRl KQogfQogCiBleHRlcm4gUmVsYXRpb24gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUg KmVzdGF0ZSwgSW5kZXggcnRpKTsKK2V4dGVybiB2b2lkIEV4ZWNMb2NrRWxpZGVkQXBwZW5kQ2hp bGRSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUsCisJCQkJCQkJCQkJCSAgIExpc3QgKmVsaWRlZEFw cGVuZENoaWxkUmVscyk7CitleHRlcm4gdm9pZCBFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlv bnMoRVN0YXRlICplc3RhdGUsIExpc3QgKmFsbHBhcnRyZWxpZHMpOwogZXh0ZXJuIHZvaWQgRXhl Y0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywKIAkJCQkJCQkJICAgSW5kZXggcnRpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRl eCBjYjcxNGY0YTE5Li5mMGM1MTc3YjA2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjIzLDYg KzYyMyw4IEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJr cywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0 IG9mIFJURVBlcm1pc3Npb25JbmZvICovCiAJUGxhbm5lZFN0bXQgKmVzX3BsYW5uZWRzdG10Owkv KiBsaW5rIHRvIHRvcCBvZiBwbGFuIHRyZWUgKi8KKwlzdHJ1Y3QgQ2FjaGVkUGxhbiAqZXNfY2Fj aGVkcGxhbjsJLyogQ2FjaGVkUGxhbiBpZiBwbGFubmVkc3RtdCBpcyBmcm9tCisJCQkJCQkJCQkJ ICogb25lICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyogU291cmNlIHRleHQgZnJv bSBRdWVyeURlc2MgKi8KIAogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZl bCBqdW5rIGZpbHRlciwgaWYgYW55ICovCkBAIC02NzEsNiArNjczLDEwIEBAIHR5cGVkZWYgc3Ry dWN0IEVTdGF0ZQogCiAJTGlzdAkgICAqZXNfZXhwcmNvbnRleHRzOwkvKiBMaXN0IG9mIEV4cHJD b250ZXh0cyB3aXRoaW4gRVN0YXRlICovCiAKKwlMaXN0CSAgICplc19pbml0ZWRfcGxhbm5vZGVz OyAvKiBMaXN0IG9mIFBsYW5TdGF0ZSBvZiBub2RlcyBmcm9tIHRoZQorCQkJCQkJCQkJICAqIHBs YW4gdHJlZSB0aGF0IHdlcmUgZnVsbHkKKwkJCQkJCQkJCSAgKiBpbml0aWFsaXplZCAqLworCiAJ TGlzdAkgICAqZXNfc3VicGxhbnN0YXRlczsJLyogTGlzdCBvZiBQbGFuU3RhdGUgZm9yIFN1YlBs YW5zICovCiAKIAlMaXN0CSAgICplc19hdXhtb2RpZnl0YWJsZXM7IC8qIExpc3Qgb2Ygc2Vjb25k YXJ5IE1vZGlmeVRhYmxlU3RhdGVzICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdl L2xtZ3IuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCmluZGV4IDRlZTkxZTNjZjkuLjU5 OGJmMjY4OGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCisrKyBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCkBAIC00OCw2ICs0OCw3IEBAIGV4dGVybiBib29sIENv bmRpdGlvbmFsTG9ja1JlbGF0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBMT0NLTU9ERSBsb2NrbW9k ZSk7CiBleHRlcm4gdm9pZCBVbmxvY2tSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01P REUgbG9ja21vZGUpOwogZXh0ZXJuIGJvb2wgQ2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUoUmVsYXRp b24gcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJCQkJCQkJYm9vbCBvcnN0cm9uZ2Vy KTsKK2V4dGVybiBib29sIENoZWNrUmVsTG9ja2VkQnlNZShPaWQgcmVsaWQsIExPQ0tNT0RFIGxv Y2ttb2RlLCBib29sIG9yc3Ryb25nZXIpOwogZXh0ZXJuIGJvb2wgTG9ja0hhc1dhaXRlcnNSZWxh dGlvbihSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUpOwogCiBleHRlcm4gdm9p ZCBMb2NrUmVsYXRpb25JZEZvclNlc3Npb24oTG9ja1JlbElkICpyZWxpZCwgTE9DS01PREUgbG9j a21vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMv aW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCA0ZjU0MThiOTcyLi4zMDc0ZTYwNGRkIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTM5LDYgKzEzOSw3IEBAIGV4dGVybiBjaGFyIGdldF9y ZWxfcmVsa2luZChPaWQgcmVsaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X3JlbF9yZWxpc3BhcnRpdGlv bihPaWQgcmVsaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmVsX3RhYmxlc3BhY2UoT2lkIHJlbGlkKTsK IGV4dGVybiBjaGFyIGdldF9yZWxfcGVyc2lzdGVuY2UoT2lkIHJlbGlkKTsKK2V4dGVybiBib29s IGdldF9yZWxfcmVsaXNzaGFyZWQoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9y bV9mcm9tc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJu IE9pZAlnZXRfdHJhbnNmb3JtX3Rvc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJm dHlwZXMpOwogZXh0ZXJuIGJvb2wgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpOwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9w bGFuY2FjaGUuaAppbmRleCBhNDQzMTgxZDQxLi44OTkwZmU3MmUzIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2Fj aGUuaApAQCAtMjIxLDYgKzIyMSwyMCBAQCBleHRlcm4gQ2FjaGVkUGxhbiAqR2V0Q2FjaGVkUGxh bihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQkJCQkJCQkgUGFyYW1MaXN0SW5mbyBi b3VuZFBhcmFtcywKIAkJCQkJCQkJIFJlc291cmNlT3duZXIgb3duZXIsCiAJCQkJCQkJCSBRdWVy eUVudmlyb25tZW50ICpxdWVyeUVudik7CisKKy8qCisgKiBDYWNoZWRQbGFuU3RpbGxWYWxpZAor ICoJCVJldHVybnMgaWYgYSBjYWNoZWQgZ2VuZXJpYyBwbGFuIGlzIHN0aWxsIHZhbGlkCisgKgor ICogQ2FsbGVkIGJ5IHRoZSBleGVjdXRvciBvbiBldmVyeSByZWxhdGlvbiBsb2NrIHRha2VuIHdo ZW4gaW5pdGlhbGl6aW5nIHRoZQorICogcGxhbiB0cmVlIGluIHRoZSBDYWNoZWRQbGFuLgorICov CitzdGF0aWMgaW5saW5lIGJvb2wKK0NhY2hlZFBsYW5TdGlsbFZhbGlkKENhY2hlZFBsYW4gKmNw bGFuKQoreworCXJldHVybiBjcGxhbi0+aXNfdmFsaWQ7Cit9CisKIGV4dGVybiB2b2lkIFJlbGVh c2VDYWNoZWRQbGFuKENhY2hlZFBsYW4gKnBsYW4sIFJlc291cmNlT3duZXIgb3duZXIpOwogCiBl eHRlcm4gYm9vbCBDYWNoZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFs LmggYi9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAppbmRleCBhYTA4YjFlMGZjLi4yNGQ0MjBi OWU5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wb3J0YWwuaAorKysgYi9zcmMvaW5j bHVkZS91dGlscy9wb3J0YWwuaApAQCAtMTM4LDYgKzEzOCw5IEBAIHR5cGVkZWYgc3RydWN0IFBv cnRhbERhdGEKIAlRdWVyeUNvbXBsZXRpb24gcWM7CQkJLyogY29tbWFuZCBjb21wbGV0aW9uIGRh dGEgZm9yIGV4ZWN1dGVkIHF1ZXJ5ICovCiAJTGlzdAkgICAqc3RtdHM7CQkJLyogbGlzdCBvZiBQ bGFubmVkU3RtdHMgKi8KIAlDYWNoZWRQbGFuICpjcGxhbjsJCQkvKiBDYWNoZWRQbGFuLCBpZiBz dG10cyBhcmUgZnJvbSBvbmUgKi8KKwlMaXN0CSAgICpxZGVzY3M7CQkJLyogbGlzdCBvZiBRdWVy eURlc2NzICovCisJTWVtb3J5Q29udGV4dCBxdWVyeUNvbnRleHQ7CS8qIG1lbW9yeSBmb3IgUXVl cnlEZXNjcyBhbmQgY2hpbGRyZW4gKi8KKwlib29sCQlwbGFuX3ZhbGlkOwkJLyogYXJlIHBsYW5z IGluIHFkZXNjcyByZWFkeSBmb3IgZXhlY3V0aW9uPyAqLwogCiAJUGFyYW1MaXN0SW5mbyBwb3J0 YWxQYXJhbXM7IC8qIHBhcmFtcyB0byBwYXNzIHRvIHF1ZXJ5ICovCiAJUXVlcnlFbnZpcm9ubWVu dCAqcXVlcnlFbnY7IC8qIGVudmlyb25tZW50IGZvciBxdWVyeSAqLwpAQCAtMjQyLDYgKzI0NSw3 IEBAIGV4dGVybiB2b2lkIFBvcnRhbERlZmluZVF1ZXJ5KFBvcnRhbCBwb3J0YWwsCiAJCQkJCQkJ ICBDb21tYW5kVGFnIGNvbW1hbmRUYWcsCiAJCQkJCQkJICBMaXN0ICpzdG10cywKIAkJCQkJCQkg IENhY2hlZFBsYW4gKmNwbGFuKTsKK2V4dGVybiB2b2lkIFBvcnRhbFF1ZXJ5RmluaXNoKFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjKTsKIGV4dGVybiBQbGFubmVkU3RtdCAqUG9ydGFsR2V0UHJpbWFyeVN0 bXQoUG9ydGFsIHBvcnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxDcmVhdGVIb2xkU3RvcmUoUG9y dGFsIHBvcnRhbCk7CiBleHRlcm4gdm9pZCBQb3J0YWxIYXNoVGFibGVEZWxldGVBbGwodm9pZCk7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSBi L3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2VmaWxlCmluZGV4IDcwZjI0ZTg0 NmQuLjJmY2E4NGQwMjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0 aW9uL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL01ha2Vm aWxlCkBAIC04LDcgKzgsOCBAQCBPQkpTID0gXAogCWRlbGF5X2V4ZWN1dGlvbi5vCiAKIElTT0xB VElPTiA9IHBhcnRpdGlvbi1hZGRpdGlvbiBcCi0JICAgIHBhcnRpdGlvbi1yZW1vdmFsLTEKKwkg ICAgcGFydGl0aW9uLXJlbW92YWwtMSBcCisJCWNhY2hlZC1wbGFuLXJlcGxhbgogCiBpZmRlZiBV U0VfUEdYUwogUEdfQ09ORklHID0gcGdfY29uZmlnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyBiL3NyYy90ZXN0L21vZHVsZXMv ZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCmluZGV4IDdjZDc2ZWIzNGIuLjUxNWIy YzBjOTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5 X2V4ZWN1dGlvbi5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5 X2V4ZWN1dGlvbi5jCkBAIC0xLDE0ICsxLDE4IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAg KiBkZWxheV9leGVjdXRpb24uYwotICoJCVRlc3QgbW9kdWxlIHRvIGFsbG93IGRlbGF5IGJldHdl ZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGEgcXVlcnkuCisgKgkJVGVzdCBtb2R1bGUgdG8g aW50cm9kdWNlIGRlbGF5IGF0IHZhcmlvdXMgcG9pbnRzIGR1cmluZyBleGVjdXRpb24gb2YgYQor ICoJCXF1ZXJ5IHRvIHRlc3QgdGhhdCBleGVjdXRpb24gcHJvY2VlZHMgc2FmZWx5IGluIGxpZ2h0 IG9mIGNvbmN1cnJlbnQKKyAqCQljaGFuZ2VzLgogICoKICAqIFRoZSBkZWxheSBpcyBpbXBsZW1l bnRlZCBieSB0YWtpbmcgYW5kIGltbWVkaWF0ZWx5IHJlbGVhc2luZyBhIHNwZWNpZmllZAogICog YWR2aXNvcnkgbG9jay4gIElmIGFub3RoZXIgcHJvY2VzcyBoYXMgcHJldmlvdXNseSB0YWtlbiB0 aGF0IGxvY2ssIHRoZQogICogY3VycmVudCBwcm9jZXNzIHdpbGwgYmUgYmxvY2tlZCB1bnRpbCB0 aGUgbG9jayBpcyByZWxlYXNlZDsgb3RoZXJ3aXNlLAogICogdGhlcmUncyBubyBlZmZlY3QuICBU aGlzIGFsbG93cyBhbiBpc29sYXRpb250ZXN0ZXIgc2NyaXB0IHRvIHJlbGlhYmx5Ci0gKiB0ZXN0 IGJlaGF2aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90aGVy IGJhY2tlbmQKLSAqIGJldHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGFueSBkZXNpcmVk IHF1ZXJ5LgorICogdGVzdCBiZWhhdmlvcnMgd2hlcmUgc29tZSBzcGVjaWZpZWQgYWN0aW9uIGhh cHBlbnMgaW4gYW5vdGhlciBiYWNrZW5kIGluCisgKiBhIGNvdXBsZSBvZiBjYXNlczogMSkgYmV0 d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkKKyAqIHdoZW4g dXNpbmcgdGhlIHBsYW5uZXJfaG9vaywgMikgYmV0d2VlbiBSZXZhbGlkYXRlQ2FjaGVkUXVlcnko KSBhbmQKKyAqIEV4ZWN1dG9yU3RhcnQoKSB3aGVuIHVzaW5nIHRoZSBFeGVjdXRvclN0YXJ0X2hv b2suCiAgKgogICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjMsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCiAgKgpAQCAtMjIsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8bGltaXRz Lmg+CiAKKyNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm9wdGltaXpl ci9wbGFubmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGls cy9ndWMuaCIKQEAgLTMyLDkgKzM3LDExIEBAIFBHX01PRFVMRV9NQUdJQzsKIAogLyogR1VDOiBh ZHZpc29yeSBsb2NrIElEIHRvIHVzZS4gIFplcm8gZGlzYWJsZXMgdGhlIGZlYXR1cmUuICovCiBz dGF0aWMgaW50CXBvc3RfcGxhbm5pbmdfbG9ja19pZCA9IDA7CitzdGF0aWMgaW50CWV4ZWN1dG9y X3N0YXJ0X2xvY2tfaWQgPSAwOwogCi0vKiBTYXZlIHByZXZpb3VzIHBsYW5uZXIgaG9vayB1c2Vy IHRvIGJlIGEgZ29vZCBjaXRpemVuICovCisvKiBTYXZlIHByZXZpb3VzIGhvb2sgdXNlcnMgdG8g YmUgYSBnb29kIGNpdGl6ZW4gKi8KIHN0YXRpYyBwbGFubmVyX2hvb2tfdHlwZSBwcmV2X3BsYW5u ZXJfaG9vayA9IE5VTEw7CitzdGF0aWMgRXhlY3V0b3JTdGFydF9ob29rX3R5cGUgcHJldl9FeGVj dXRvclN0YXJ0X2hvb2sgPSBOVUxMOwogCiAKIC8qIHBsYW5uZXJfaG9vayBmdW5jdGlvbiB0byBw cm92aWRlIHRoZSBkZXNpcmVkIGRlbGF5ICovCkBAIC03MCwxMSArNzcsNDEgQEAgZGVsYXlfZXhl Y3V0aW9uX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCiAJ cmV0dXJuIHJlc3VsdDsKIH0KIAorLyogRXhlY3V0b3JTdGFydF9ob29rIGZ1bmN0aW9uIHRvIHBy b3ZpZGUgdGhlIGRlc2lyZWQgZGVsYXkgKi8KK3N0YXRpYyB2b2lkCitkZWxheV9leGVjdXRpb25f RXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKK3sKKwkvKiBJ ZiBlbmFibGVkLCBkZWxheSBieSB0YWtpbmcgYW5kIHJlbGVhc2luZyB0aGUgc3BlY2lmaWVkIGxv Y2sgKi8KKwlpZiAoZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCAhPSAwKQorCXsKKwkJRGlyZWN0RnVu Y3Rpb25DYWxsMShwZ19hZHZpc29yeV9sb2NrX2ludDgsCisJCQkJCQkJSW50NjRHZXREYXR1bSgo aW50NjQpIGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQpKTsKKwkJRGlyZWN0RnVuY3Rpb25DYWxsMShw Z19hZHZpc29yeV91bmxvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERhdHVtKChpbnQ2NCkgZXhl Y3V0b3Jfc3RhcnRfbG9ja19pZCkpOworCisJCS8qCisJCSAqIEVuc3VyZSB0aGF0IHdlIG5vdGlj ZSBhbnkgcGVuZGluZyBpbnZhbGlkYXRpb25zLCBzaW5jZSB0aGUgYWR2aXNvcnkKKwkJICogbG9j ayBmdW5jdGlvbnMgZG9uJ3QgZG8gdGhpcy4KKwkJICovCisJCUFjY2VwdEludmFsaWRhdGlvbk1l c3NhZ2VzKCk7CisJfQorCisJLyogTm93IHN0YXJ0IHRoZSBleGVjdXRvciwgcG9zc2libHkgdmlh IGEgcHJldmlvdXMgaG9vayB1c2VyICovCisJaWYgKHByZXZfRXhlY3V0b3JTdGFydF9ob29rKQor CQlwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayhxdWVyeURlc2MsIGVmbGFncyk7CisJZWxzZQorCQlz dGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKworCWlmIChleGVjdXRv cl9zdGFydF9sb2NrX2lkICE9IDApCisJCWVsb2coTk9USUNFLCAiRmluaXNoZWQgRXhlY3V0b3JT dGFydCgpOiBDYWNoZWRQbGFuIGlzICVzIiwKKwkJCSBxdWVyeURlc2MtPmNwbGFuLT5pc192YWxp ZCA/ICJ2YWxpZCIgOiAibm90IHZhbGlkIik7Cit9CisKIC8qIE1vZHVsZSBsb2FkIGZ1bmN0aW9u ICovCiB2b2lkCiBfUEdfaW5pdCh2b2lkKQogewotCS8qIFNldCB1cCB0aGUgR1VDIHRvIGNvbnRy b2wgd2hpY2ggbG9jayBpcyB1c2VkICovCisJLyogU2V0IHVwIEdVQ3MgdG8gY29udHJvbCB3aGlj aCBsb2NrIGlzIHVzZWQgKi8KIAlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgiZGVsYXlfZXhlY3V0 aW9uLnBvc3RfcGxhbm5pbmdfbG9ja19pZCIsCiAJCQkJCQkJIlNldHMgdGhlIGFkdmlzb3J5IGxv Y2sgSUQgdG8gYmUgbG9ja2VkL3VubG9ja2VkIGFmdGVyIHBsYW5uaW5nLiIsCiAJCQkJCQkJIlpl cm8gZGlzYWJsZXMgdGhlIGRlbGF5LiIsCkBAIC04NiwxMCArMTIzLDIyIEBAIF9QR19pbml0KHZv aWQpCiAJCQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMLAogCQkJCQkJCU5VTEwpOwotCisJRGVmaW5l Q3VzdG9tSW50VmFyaWFibGUoImRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lk IiwKKwkJCQkJCQkiU2V0cyB0aGUgYWR2aXNvcnkgbG9jayBJRCB0byBiZSBsb2NrZWQvdW5sb2Nr ZWQgYmVmb3JlIHN0YXJ0aW5nIGV4ZWN1dGlvbi4iLAorCQkJCQkJCSJaZXJvIGRpc2FibGVzIHRo ZSBkZWxheS4iLAorCQkJCQkJCSZleGVjdXRvcl9zdGFydF9sb2NrX2lkLAorCQkJCQkJCTAsCisJ CQkJCQkJMCwgSU5UX01BWCwKKwkJCQkJCQlQR0NfVVNFUlNFVCwKKwkJCQkJCQkwLAorCQkJCQkJ CU5VTEwsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMKTsKIAlNYXJrR1VDUHJlZml4UmVzZXJ2 ZWQoImRlbGF5X2V4ZWN1dGlvbiIpOwogCi0JLyogSW5zdGFsbCBvdXIgaG9vayAqLworCS8qIElu c3RhbGwgb3VyIGhvb2tzLiAqLwogCXByZXZfcGxhbm5lcl9ob29rID0gcGxhbm5lcl9ob29rOwog CXBsYW5uZXJfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9wbGFubmVyOworCXByZXZfRXhlY3V0b3JT dGFydF9ob29rID0gRXhlY3V0b3JTdGFydF9ob29rOworCUV4ZWN1dG9yU3RhcnRfaG9vayA9IGRl bGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9k dWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dCBiL3Ny Yy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxh bi5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMGFjNmExN2MyYgot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2V4cGVj dGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5vdXQKQEAgLTAsMCArMSwxNTYgQEAKK1BhcnNlZCB0ZXN0 IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAgczJs b2NrIHMxZXhlYyBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDogU0VUIHBsYW5fY2FjaGVf bW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEgQVMgU0VMRUNUICogRlJP TSBmb292IFdIRVJFIGEgPSAkMTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAo MSk7CitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAg ICAgICAgICAgICAgICAgIAorICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMSBmb29fMSAg ICAgICAKKyAgICAgICAgUmVjaGVjayBDb25kOiAoYSA9ICQxKSAgICAgICAgICAgICAgCisgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBmb28xMV9hX2lkeAorICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoYSA9ICQxKSAgICAgICAgICAKKyg2IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBT RUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0t LS0tLS0tLS0tCisgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjOiBMT0FE ICdkZWxheV9leGVjdXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3Rh cnRfbG9ja19pZCA9IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgx KTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzExX2E7CitzdGVw IHMydW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5 X3VubG9jaworLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykK Kworc3RlcCBzMWV4ZWM6IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4 ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5p c2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5kICAg ICAgICAgICAgICAgICAgICAgICAKKyAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgCisgIC0+ ICBTZXEgU2NhbiBvbiBmb28xMSBmb29fMQorICAgICAgICBGaWx0ZXI6IChhID0gJDEpICAgICAK Kyg0IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDIgczJsb2NrIHMxZXhl YzIgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXAyOiBTRVQgcGxhbl9jYWNoZV9tb2RlID0g Zm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTIgQVMgU0VMRUNUICogRlJPTSBmb292 IFdIRVJFIGEgPSAxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMjsKK3MxOiBO T1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMSBmb28gICAgICAg ICAKKyAgUmVjaGVjayBDb25kOiAoYSA9IDEpICAgICAgICAgICAgICAgCisgIC0+ICBCaXRtYXAg SW5kZXggU2NhbiBvbiBmb28xMV9hX2lkeAorICAgICAgICBJbmRleCBDb25kOiAoYSA9IDEpICAg ICAgICAgICAKKyg0IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9j aygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAg ICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsK KwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsK KwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IDx3YWl0aW5nIC4uLj4KK3N0ZXAg czJkcm9waTogRFJPUCBJTkRFWCBmb28xMV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBnX2Fk dmlzb3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0tLS0t LS0tLQordCAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogPC4uLiBj b21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQ bGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTog Q2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0KK1NlcSBTY2FuIG9uIGZvbzExIGZvbworICBGaWx0ZXI6IChhID0gMSkgICAgCiso MiByb3dzKQorCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBzMXByZXAzIHMybG9jayBzMWV4ZWMz IHMyZHJvcGkgczJ1bmxvY2sKK3N0ZXAgczFwcmVwMzogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZv cmNlX2dlbmVyaWNfcGxhbjsKKwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2VfYWdncmVnYXRl ID0gb247CisJCSAgU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gPSBvbjsKKwkJICBQUkVQ QVJFIHEzIEFTIFNFTEVDVCB0MS5hLCBjb3VudCh0Mi5iKSBGUk9NIGZvbyB0MSwgZm9vIHQyIFdI RVJFIHQxLmEgPSB0Mi5hIEdST1VQIEJZIDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVD VVRFIHEzOworczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxh biBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQXBwZW5kICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgR3JvdXBBZ2dyZWdh dGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBH cm91cCBLZXk6IHQxLmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICAtPiAgTWVyZ2UgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICAgICAgICBNZXJnZSBDb25kOiAodDEuYSA9IHQyLmEpICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5n IGZvbzExX2FfaWR4IG9uIGZvbzExIHQxIAorICAgICAgICAgICAgICAtPiAgTWF0ZXJpYWxpemUg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAt PiAgSW5kZXggU2NhbiB1c2luZyBmb28xMV9hX2lkeCBvbiBmb28xMSB0MgorICAtPiAgR3JvdXBB Z2dyZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICBHcm91cCBLZXk6IHQxXzEuYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAtPiAgTWVyZ2UgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICAgICAgICBNZXJnZSBDb25kOiAodDFfMS5hID0gdDJfMS5h KSAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0 IEtleTogdDFfMS5hICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMiB0MV8xICAgICAgICAgICAgICAgICAgIAorICAgICAg ICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDJfMS5hICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMiB0Ml8x ICAgICAgICAgICAgICAgICAgIAorKDE4IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdf YWR2aXNvcnlfbG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0t CisgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMzogTE9BRCAnZGVsYXlf ZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tf aWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7IDx3YWl0aW5n IC4uLj4KK3N0ZXAgczJkcm9waTogRFJPUCBJTkRFWCBmb28xMV9hOworc3RlcCBzMnVubG9jazog U0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sKKy0t LS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFl eGVjMzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFy dCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1 dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICAtPiAgR3JvdXBBZ2dyZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg IEdyb3VwIEtleTogdDEuYSAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIE1lcmdl IEpvaW4gICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBNZXJnZSBDb25kOiAo dDEuYSA9IHQyLmEpICAgICAgCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAg ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQxLmEgICAgICAgICAgIAor ICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTEgdDEgCisgICAgICAgICAg ICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg U29ydCBLZXk6IHQyLmEgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gZm9vMTEgdDIgCisgIC0+ICBHcm91cEFnZ3JlZ2F0ZSAgICAgICAgICAgICAgICAgICAg ICAgICAKKyAgICAgICAgR3JvdXAgS2V5OiB0MV8xLmEgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICAtPiAgTWVyZ2UgSm9pbiAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg IE1lcmdlIENvbmQ6ICh0MV8xLmEgPSB0Ml8xLmEpICAKKyAgICAgICAgICAgICAgLT4gIFNvcnQg ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDFf MS5hICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28yIHQx XzEKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICAgICAgICAgICAgICBTb3J0IEtleTogdDJfMS5hICAgICAgICAgCisgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBmb28yIHQyXzEKKygyMSByb3dzKQorCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4u c3BlYyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFu LXJlcGxhbi5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjNjOTJj YmQ1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlv bi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYwpAQCAtMCwwICsxLDYxIEBACisjIFRlc3Qg dG8gY2hlY2sgdGhhdCBpbnZhbGlkYXRpb24gb2YgY2FjaGVkIGdlbmVyaWMgcGxhbnMgZHVyaW5n IEV4ZWN1dG9yU3RhcnQKKyMgY29ycmVjdGx5IHRyaWdnZXJzIHJlcGxhbm5pbmcgYW5kIHJlLWV4 ZWN1dGlvbi4KKworc2V0dXAKK3sKKyAgQ1JFQVRFIFRBQkxFIGZvbyAoYSBpbnQsIGIgdGV4dCkg UEFSVElUSU9OIEJZIExJU1QoYSk7CisgIENSRUFURSBUQUJMRSBmb28xIFBBUlRJVElPTiBPRiBm b28gRk9SIFZBTFVFUyBJTiAoMSkgUEFSVElUSU9OIEJZIExJU1QgKGEpOworICBDUkVBVEUgVEFC TEUgZm9vMTEgUEFSVElUSU9OIE9GIGZvbzEgRk9SIFZBTFVFUyBJTiAoMSk7CisgIENSRUFURSBJ TkRFWCBmb28xMV9hIE9OIGZvbzEgKGEpOworICBDUkVBVEUgVEFCTEUgZm9vMiBQQVJUSVRJT04g T0YgZm9vIEZPUiBWQUxVRVMgSU4gKDIpOworICBDUkVBVEUgVklFVyBmb292IEFTIFNFTEVDVCAq IEZST00gZm9vOworfQorCit0ZWFyZG93bgoreworICBEUk9QIFZJRVcgZm9vdjsKKyAgRFJPUCBU QUJMRSBmb287Cit9CisKK3Nlc3Npb24gInMxIgorIyBBcHBlbmQgd2l0aCBydW4tdGltZSBwcnVu aW5nCitzdGVwICJzMXByZXAiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJp Y19wbGFuOworCQkgIFBSRVBBUkUgcSBBUyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQx OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgfQorCisjIG5vIEFwcGVu ZCBjYXNlIChvbmx5IG9uZSBwYXJ0aXRpb24gc2VsZWN0ZWQgYnkgdGhlIHBsYW5uZXIpCitzdGVw ICJzMXByZXAyIiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsK KwkJICBQUkVQQVJFIHEyIEFTIFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gMTsKKwkJICBF WFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IH0KKworIyBBcHBlbmQgd2l0aCBwYXJ0aXRp b24td2lzZSBqb2luIGFnZ3JlZ2F0ZSBhbmQgam9pbiBwbGFucyBhcyBjaGlsZCBzdWJwbGFucwor c3RlcCAiczFwcmVwMyIgICB7IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3Bs YW47CisJCSAgU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZSA9IG9uOworCQkgIFNF VCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luID0gb247CisJCSAgUFJFUEFSRSBxMyBBUyBTRUxF Q1QgdDEuYSwgY291bnQodDIuYikgRlJPTSBmb28gdDEsIGZvbyB0MiBXSEVSRSB0MS5hID0gdDIu YSBHUk9VUCBCWSAxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsgfQorCisj IEV4ZWN1dGVzIGEgZ2VuZXJpYyBwbGFuCitzdGVwICJzMWV4ZWMiCXsgTE9BRCAnZGVsYXlfZXhl Y3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQg PSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IH0KK3N0ZXAg InMxZXhlYzIiCXsgTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0 aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBP RkYpIEVYRUNVVEUgcTI7IH0KK3N0ZXAgInMxZXhlYzMiCXsgTE9BRCAnZGVsYXlfZXhlY3V0aW9u JzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0 NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7IH0KKworc2Vzc2lvbiAiczIi CitzdGVwICJzMmxvY2siCXsgU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOyB9CitzdGVw ICJzMnVubG9jayIJeyBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsgfQorc3RlcCAi czJkcm9waSIJeyBEUk9QIElOREVYIGZvbzExX2E7IH0KKworIyBXaGlsZSAiczFleGVjIiwgZXRj LiB3YWl0IHRvIGFjcXVpcmUgdGhlIGFkdmlzb3J5IGxvY2ssICJzMmRyb3AiIGlzIGFibGUgdG8K KyMgZHJvcCB0aGUgaW5kZXggYmVpbmcgdXNlZCBpbiB0aGUgY2FjaGVkIHBsYW4uICBXaGVuICJz MWV4ZWMiIGlzIHRoZW4KKyMgdW5ibG9ja2VkIGFuZCBpbml0aWFsaXplcyB0aGUgY2FjaGVkIHBs YW4gZm9yIGV4ZWN1dGlvbiwgaXQgZGV0ZWN0cyB0aGUKKyMgY29uY3VycmVudCBpbmRleCBkcm9w IGFuZCBjYXVzZXMgdGhlIGNhY2hlZCBwbGFuIHRvIGJlIGRpc2NhcmRlZCBhbmQKKyMgcmVjcmVh dGVkIHdpdGhvdXQgdGhlIGluZGV4LgorcGVybXV0YXRpb24gInMxcHJlcCIgInMybG9jayIgInMx ZXhlYyIgInMyZHJvcGkiICJzMnVubG9jayIKK3Blcm11dGF0aW9uICJzMXByZXAyIiAiczJsb2Nr IiAiczFleGVjMiIgInMyZHJvcGkiICJzMnVubG9jayIKK3Blcm11dGF0aW9uICJzMXByZXAzIiAi czJsb2NrIiAiczFleGVjMyIgInMyZHJvcGkiICJzMnVubG9jayIKLS0gCjIuMzUuMwoK --0000000000008e02d005fd9eff71--