Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qKPSR-000WwT-Tw for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Jul 2023 20:32:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qKPSQ-007Lnp-JX for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Jul 2023 20:32:06 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qKPSQ-007Lng-5I for pgsql-hackers@lists.postgresql.org; Fri, 14 Jul 2023 20:32:06 +0000 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qKPSL-000UWN-7z for pgsql-hackers@lists.postgresql.org; Fri, 14 Jul 2023 20:32:04 +0000 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-31438512cafso2359392f8f.2 for ; Fri, 14 Jul 2023 13:32:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; t=1689366719; x=1691958719; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=WCPPmIXBctSUK317eUF48bUL2WhnvB7Z45YSeDctl0s=; b=gea3WOECCuxDSLF88Xkx0o0GxvEVanlzndS6AnWyCtqlqLNZg4eQgBiVuFfjy5/6pI mjcwSMraxc2l4BAlJHK+DrZbPBrp9FtLw2eyq2eZ6b4JeHAFDr5TbEx/eeabvxNX3cZ5 58RoaYTBh/RPsTsJxmQLkGoB+5LZHp2poHHuWNJ6esbDivMWxU3Wp08TCFXt8VgTFhsV L9yMOFRMqD6gd5LztN8ARdstiQxtHAWGyDWAag4kZdHVYuioxnlTS6trz5NGC7t3CWHV FZHH+9Gl6LEoDinKim7mRMPSEI8Ktd4oXBx8Kq5WMFtoB3VJAhgu5HnxdjsQdY6qr2ad bWvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689366719; x=1691958719; h=in-reply-to:content-language:references:cc:to:from:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=WCPPmIXBctSUK317eUF48bUL2WhnvB7Z45YSeDctl0s=; b=YNzmWH4v8qORsGZCSaD4AhJYuVifDFrIDwdxlm2g5wtv2LQBKi95D/cB1aRrvhTefi Z4QlNS5L8r/JsYpS2pLWAako4Zz2BkOQ7G5BmSZRfLpF1/GWpE1LtAZ94gTagzMqSBl6 3PiJtTSaYXE+WL7M4bC8aeEo1DCacoBQyzG22Cfq681QpYzQcZGK5GUiBrRGXSdAAxUN ArHQQoE/VIFFTVrhcUP5kL0uvR9d8RiZKsFAhTzUC5gR0acv7z/CsJJnj9uiaUoFCfRx gPHRxUasBQgQd6U2pFRd3Kv8cTUBwhmnWp8kyiQsqoPeuQc/A7zHHveDXQDRvX6dXn2y ziDA== X-Gm-Message-State: ABy/qLYbSqUjhycxogvMVzAB0HJtOnQyD6UB8UVO40MnJwTVvRDuijqO L3SnXTGgMt3RLBvO9tflC3ZN5A== X-Google-Smtp-Source: APBJJlFPwQHdOs2Ufrfx7lvN6GrVglkMDKNKSKcnZ9uERnhMLKt8qbcRqg08J+kDCR/k2D4nKqjvyg== X-Received: by 2002:adf:d843:0:b0:314:367e:92a1 with SMTP id k3-20020adfd843000000b00314367e92a1mr4913385wrl.18.1689366719403; Fri, 14 Jul 2023 13:31:59 -0700 (PDT) Received: from [10.137.0.17] (ip-86-49-228-220.bb.vodafone.cz. [86.49.228.220]) by smtp.gmail.com with ESMTPSA id d12-20020a1c730c000000b003fbb8c7c799sm2141015wmb.30.2023.07.14.13.31.58 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 Jul 2023 13:31:58 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------5BAecf4Lp6HQUGD90aoPwtkf" Message-ID: <8ec36f51-b863-60e3-20e2-b9c981c5ce5e@enterprisedb.com> Date: Fri, 14 Jul 2023 22:31:57 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: index prefetching From: Tomas Vondra To: Andres Freund Cc: PostgreSQL Hackers , Georgios References: <20230609000600.syqy447e6metnvyj@awork3.anarazel.de> <20230610203456.5gancfekm4pj4pbs@awork3.anarazel.de> <6030d836-e8b7-e7b9-2cbb-144309679d03@enterprisedb.com> <8c86c3a6-074e-6c88-3e7e-9452b6a37b9b@enterprisedb.com> <3cd40425-965a-5ce1-1af3-d51971c44b93@enterprisedb.com> Content-Language: en-US In-Reply-To: <3cd40425-965a-5ce1-1af3-d51971c44b93@enterprisedb.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------5BAecf4Lp6HQUGD90aoPwtkf Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Here's a v5 of the patch, rebased to current master and fixing a couple compiler warnings reported by cfbot (%lu vs. UINT64_FORMAT in some debug messages). No other changes compared to v4. cfbot also reported a failure on windows in pg_dump [1], but it seem pretty strange: [11:42:48.708] ------------------------------------- 8< ------------------------------------- [11:42:48.708] stderr: [11:42:48.708] # Failed test 'connecting to an invalid database: matches' The patch does nothing related to pg_dump, and the test works perfectly fine for me (I don't have windows machine, but 32-bit and 64-bit linux works fine for me). regards [1] https://cirrus-ci.com/task/6398095366291456 -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------5BAecf4Lp6HQUGD90aoPwtkf Content-Type: text/x-patch; charset=UTF-8; name="index-prefetch-v5.patch" Content-Disposition: attachment; filename="index-prefetch-v5.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RnZXQuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3RnZXQuYwppbmRleCBlMmM5YjVmMDY5Li45MDQ1YzZl YjdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0Z2V0LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdGdldC5jCkBAIC02NzgsNyArNjc4LDYg QEAgZ2lzdGdldHR1cGxlKEluZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXIp CiAJCQkJCXNjYW4tPnhzX2hpdHVwID0gc28tPnBhZ2VEYXRhW3NvLT5jdXJQYWdlRGF0YV0u cmVjb250dXA7CiAKIAkJCQlzby0+Y3VyUGFnZURhdGErKzsKLQogCQkJCXJldHVybiB0cnVl OwogCQkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f aGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpp bmRleCA1YTE3MTEyYzkxLi4wYjZjOTIwZWJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJzdG9y YWdlL3NtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0 aWxzL3JlbC5oIgorI2luY2x1ZGUgInV0aWxzL3NwY2NhY2hlLmgiCiAKIHN0YXRpYyB2b2lk IHJlZm9ybV9hbmRfcmV3cml0ZV90dXBsZShIZWFwVHVwbGUgdHVwbGUsCiAJCQkJCQkJCQkg UmVsYXRpb24gT2xkSGVhcCwgUmVsYXRpb24gTmV3SGVhcCwKQEAgLTc1MSw2ICs3NTIsOSBA QCBoZWFwYW1fcmVsYXRpb25fY29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBPbGRIZWFwLCBS ZWxhdGlvbiBOZXdIZWFwLAogCQkJUFJPR1JFU1NfQ0xVU1RFUl9JTkRFWF9SRUxJRAogCQl9 OwogCQlpbnQ2NAkJY2lfdmFsWzJdOworCQlpbnQJCQlwcmVmZXRjaF90YXJnZXQ7CisKKwkJ cHJlZmV0Y2hfdGFyZ2V0ID0gZ2V0X3RhYmxlc3BhY2VfaW9fY29uY3VycmVuY3koT2xkSGVh cC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlKTsKIAogCQkvKiBTZXQgcGhhc2UgYW5kIE9JRE9s ZEluZGV4IHRvIGNvbHVtbnMgKi8KIAkJY2lfdmFsWzBdID0gUFJPR1JFU1NfQ0xVU1RFUl9Q SEFTRV9JTkRFWF9TQ0FOX0hFQVA7CkBAIC03NTksNyArNzYzLDggQEAgaGVhcGFtX3JlbGF0 aW9uX2NvcHlfZm9yX2NsdXN0ZXIoUmVsYXRpb24gT2xkSGVhcCwgUmVsYXRpb24gTmV3SGVh cCwKIAogCQl0YWJsZVNjYW4gPSBOVUxMOwogCQloZWFwU2NhbiA9IE5VTEw7Ci0JCWluZGV4 U2NhbiA9IGluZGV4X2JlZ2luc2NhbihPbGRIZWFwLCBPbGRJbmRleCwgU25hcHNob3RBbnks IDAsIDApOworCQlpbmRleFNjYW4gPSBpbmRleF9iZWdpbnNjYW4oT2xkSGVhcCwgT2xkSW5k ZXgsIFNuYXBzaG90QW55LCAwLCAwLAorCQkJCQkJCQkJcHJlZmV0Y2hfdGFyZ2V0LCBwcmVm ZXRjaF90YXJnZXQpOwogCQlpbmRleF9yZXNjYW4oaW5kZXhTY2FuLCBOVUxMLCAwLCBOVUxM LCAwKTsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4 L2dlbmFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwppbmRleCA3MjI5 MjdhZWJhLi4yNjRlYmUxZDhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5k ZXgvZ2VuYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwpAQCAt MTI2LDYgKzEyNiw5IEBAIFJlbGF0aW9uR2V0SW5kZXhTY2FuKFJlbGF0aW9uIGluZGV4UmVs YXRpb24sIGludCBua2V5cywgaW50IG5vcmRlcmJ5cykKIAlzY2FuLT54c19oaXR1cCA9IE5V TEw7CiAJc2Nhbi0+eHNfaGl0dXBkZXNjID0gTlVMTDsKIAorCS8qIHNldCBpbiBlYWNoIEFN IHdoZW4gYXBwbGljYWJsZSAqLworCXNjYW4tPnhzX3ByZWZldGNoID0gTlVMTDsKKwogCXJl dHVybiBzY2FuOwogfQogCkBAIC00NDAsOCArNDQzLDkgQEAgc3lzdGFibGVfYmVnaW5zY2Fu KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQllbG9nKEVSUk9SLCAiY29sdW1uIGlzIG5v dCBpbiBpbmRleCIpOwogCQl9CiAKKwkJLyogbm8gaW5kZXggcHJlZmV0Y2ggZm9yIHN5c3Rl bSBjYXRhbG9ncyAqLwogCQlzeXNzY2FuLT5pc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFw UmVsYXRpb24sIGlyZWwsCi0JCQkJCQkJCQkJIHNuYXBzaG90LCBua2V5cywgMCk7CisJCQkJ CQkJCQkJIHNuYXBzaG90LCBua2V5cywgMCwgMCwgMCk7CiAJCWluZGV4X3Jlc2NhbihzeXNz Y2FuLT5pc2Nhbiwga2V5LCBua2V5cywgTlVMTCwgMCk7CiAJCXN5c3NjYW4tPnNjYW4gPSBO VUxMOwogCX0KQEAgLTY5Niw4ICs3MDAsOSBAQCBzeXN0YWJsZV9iZWdpbnNjYW5fb3JkZXJl ZChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQllbG9nKEVSUk9SLCAiY29sdW1uIGlzIG5v dCBpbiBpbmRleCIpOwogCX0KIAorCS8qIG5vIGluZGV4IHByZWZldGNoIGZvciBzeXN0ZW0g Y2F0YWxvZ3MgKi8KIAlzeXNzY2FuLT5pc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwUmVs YXRpb24sIGluZGV4UmVsYXRpb24sCi0JCQkJCQkJCQkgc25hcHNob3QsIG5rZXlzLCAwKTsK KwkJCQkJCQkJCSBzbmFwc2hvdCwgbmtleXMsIDAsIDAsIDApOwogCWluZGV4X3Jlc2Nhbihz eXNzY2FuLT5pc2Nhbiwga2V5LCBua2V5cywgTlVMTCwgMCk7CiAJc3lzc2Nhbi0+c2NhbiA9 IE5VTEw7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFt LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCmluZGV4IGIyNWIwM2Y3 YWIuLjBiOGYxMzZmMDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9p bmRleGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYwpAQCAt NTQsMTEgKzU0LDEzIEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbXByb2MuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIK KyNpbmNsdWRlICJjb21tb24vaGFzaGZuLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNz LmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIK ICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3ByZWRpY2F0 ZS5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3J1 bGV1dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGls cy9zeXNjYWNoZS5oIgpAQCAtMTA2LDcgKzEwOCwxMCBAQCBkbyB7IFwKIAogc3RhdGljIElu ZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5zY2FuX2ludGVybmFsKFJlbGF0aW9uIGluZGV4UmVs YXRpb24sCiAJCQkJCQkJCQkJCSAgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLCBTbmFwc2hv dCBzbmFwc2hvdCwKLQkJCQkJCQkJCQkJICBQYXJhbGxlbEluZGV4U2NhbkRlc2MgcHNjYW4s IGJvb2wgdGVtcF9zbmFwKTsKKwkJCQkJCQkJCQkJICBQYXJhbGxlbEluZGV4U2NhbkRlc2Mg cHNjYW4sIGJvb2wgdGVtcF9zbmFwLAorCQkJCQkJCQkJCQkgIGludCBwcmVmZXRjaF90YXJn ZXQsIGludCBwcmVmZXRjaF9yZXNldCk7CisKK3N0YXRpYyB2b2lkIGluZGV4X3ByZWZldGNo KEluZGV4U2NhbkRlc2Mgc2NhbiwgSXRlbVBvaW50ZXIgdGlkKTsKIAogCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCkBAIC0yMDAsMTggKzIwNSwzNiBAQCBpbmRleF9pbnNlcnQoUmVsYXRpb24gaW5kZXhS ZWxhdGlvbiwKICAqIGluZGV4X2JlZ2luc2NhbiAtIHN0YXJ0IGEgc2NhbiBvZiBhbiBpbmRl eCB3aXRoIGFtZ2V0dHVwbGUKICAqCiAgKiBDYWxsZXIgbXVzdCBiZSBob2xkaW5nIHN1aXRh YmxlIGxvY2tzIG9uIHRoZSBoZWFwIGFuZCB0aGUgaW5kZXguCisgKgorICogcHJlZmV0Y2hf dGFyZ2V0IGRldGVybWluZXMgaWYgcHJlZmV0Y2hpbmcgaXMgcmVxdWVzdGVkIGZvciB0aGlz IGluZGV4IHNjYW4uCisgKiBXZSBuZWVkIHRvIGJlIGFibGUgdG8gZGlzYWJsZSB0aGlzIGZv ciB0d28gcmVhc29ucy4gRmlyc3RseSwgd2UgZG9uJ3Qgd2FudAorICogdG8gZG8gcHJlZmV0 Y2hpbmcgZm9yIElPUyAod2hlcmUgd2UgaG9wZSBtb3N0IG9mIHRoZSBoZWFwIHBhZ2VzIHdv bid0IGJlCisgKiByZWFsbHkgbmVlZGVkLiBTZWNvbmRseSwgd2UgbXVzdCBwcmV2ZW50IGlu ZmluaXRlIGxvb3Agd2hlbiBkZXRlcm1pbmluZworICogcHJlZmV0Y2ggdmFsdWUgZm9yIHRo ZSB0YWJsZXNwYWNlIC0gdGhlIGdldF90YWJsZXNwYWNlX2lvX2NvbmN1cnJlbmN5KCkKKyAq IGRvZXMgYW4gaW5kZXggc2NhbiBpbnRlcm5hbGx5LCB3aGljaCB3b3VsZCByZXN1bHQgaW4g aW5maW5pdGUgbG9vcC4gU28gd2UKKyAqIHNpbXBseSBkaXNhYmxlIHByZWZldGNoaW5nIGlu IHN5c3RhYmxlX2JlZ2luc2NhbigpLgorICoKKyAqIFhYWCBNYXliZSB3ZSBzaG91bGQgZG8g cHJlZmV0Y2hpbmcgZXZlbiBmb3IgY2F0YWxvZ3MsIGJ1dCB0aGVuIGRpc2FibGUgaXQKKyAq IHdoZW4gYWNjZXNzaW5nIFRhYmxlU3BhY2VSZWxhdGlvbklkLiBXZSBzdGlsbCBuZWVkIHRo ZSBhYmlsaXR5IHRvIGRpc2FibGUKKyAqIHRoaXMgYW5kIGNhdGFsb2dzIGFyZSBleHBlY3Rl ZCB0byBiZSB0aW55LCBzbyBwcmVmZXRjaGluZyBpcyB1bmxpa2VseSB0bworICogbWFrZSBh IGRpZmZlcmVuY2UuCisgKgorICogWFhYIFRoZSBzZWNvbmQgcmVhc29uIGRvZXNuJ3QgcmVh bGx5IGFwcGx5IGFmdGVyIGVmZmVjdGl2ZV9pb19jb25jdXJyZW5jeQorICogbG9va3VwIG1v dmVkIHRvIGNhbGxlciBvZiBpbmRleF9iZWdpbnNjYW4uCiAgKi8KIEluZGV4U2NhbkRlc2MK IGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJUmVsYXRpb24g aW5kZXhSZWxhdGlvbiwKIAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQlpbnQgbmtleXMs IGludCBub3JkZXJieXMpCisJCQkJaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAorCQkJCWlu dCBwcmVmZXRjaF90YXJnZXQsIGludCBwcmVmZXRjaF9yZXNldCkKIHsKIAlJbmRleFNjYW5E ZXNjIHNjYW47CiAKIAlBc3NlcnQoc25hcHNob3QgIT0gSW52YWxpZFNuYXBzaG90KTsKIAot CXNjYW4gPSBpbmRleF9iZWdpbnNjYW5faW50ZXJuYWwoaW5kZXhSZWxhdGlvbiwgbmtleXMs IG5vcmRlcmJ5cywgc25hcHNob3QsIE5VTEwsIGZhbHNlKTsKKwlzY2FuID0gaW5kZXhfYmVn aW5zY2FuX2ludGVybmFsKGluZGV4UmVsYXRpb24sIG5rZXlzLCBub3JkZXJieXMsIHNuYXBz aG90LCBOVUxMLCBmYWxzZSwKKwkJCQkJCQkJCXByZWZldGNoX3RhcmdldCwgcHJlZmV0Y2hf cmVzZXQpOwogCiAJLyoKIAkgKiBTYXZlIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBpbnRvIHRo ZSBzY2FuZGVzYy4gIEV2ZXJ5dGhpbmcgZWxzZSB3YXMgc2V0CkBAIC0yNDEsNyArMjY0LDgg QEAgaW5kZXhfYmVnaW5zY2FuX2JpdG1hcChSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCiAJ QXNzZXJ0KHNuYXBzaG90ICE9IEludmFsaWRTbmFwc2hvdCk7CiAKLQlzY2FuID0gaW5kZXhf YmVnaW5zY2FuX2ludGVybmFsKGluZGV4UmVsYXRpb24sIG5rZXlzLCAwLCBzbmFwc2hvdCwg TlVMTCwgZmFsc2UpOworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW5faW50ZXJuYWwoaW5kZXhS ZWxhdGlvbiwgbmtleXMsIDAsIHNuYXBzaG90LCBOVUxMLCBmYWxzZSwKKwkJCQkJCQkJCTAs IDApOyAvKiBubyBwcmVmZXRjaCAqLwogCiAJLyoKIAkgKiBTYXZlIGFkZGl0aW9uYWwgcGFy YW1ldGVycyBpbnRvIHRoZSBzY2FuZGVzYy4gIEV2ZXJ5dGhpbmcgZWxzZSB3YXMgc2V0CkBA IC0yNTgsNyArMjgyLDggQEAgaW5kZXhfYmVnaW5zY2FuX2JpdG1hcChSZWxhdGlvbiBpbmRl eFJlbGF0aW9uLAogc3RhdGljIEluZGV4U2NhbkRlc2MKIGluZGV4X2JlZ2luc2Nhbl9pbnRl cm5hbChSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQkJCQkJIGludCBua2V5cywgaW50IG5v cmRlcmJ5cywgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJCQkgUGFyYWxsZWxJbmRleFNjYW5E ZXNjIHBzY2FuLCBib29sIHRlbXBfc25hcCkKKwkJCQkJCSBQYXJhbGxlbEluZGV4U2NhbkRl c2MgcHNjYW4sIGJvb2wgdGVtcF9zbmFwLAorCQkJCQkJIGludCBwcmVmZXRjaF90YXJnZXQs IGludCBwcmVmZXRjaF9yZXNldCkKIHsKIAlJbmRleFNjYW5EZXNjIHNjYW47CiAKQEAgLTI3 NiwxMiArMzAxLDI3IEBAIGluZGV4X2JlZ2luc2Nhbl9pbnRlcm5hbChSZWxhdGlvbiBpbmRl eFJlbGF0aW9uLAogCS8qCiAJICogVGVsbCB0aGUgQU0gdG8gb3BlbiBhIHNjYW4uCiAJICov Ci0Jc2NhbiA9IGluZGV4UmVsYXRpb24tPnJkX2luZGFtLT5hbWJlZ2luc2NhbihpbmRleFJl bGF0aW9uLCBua2V5cywKLQkJCQkJCQkJCQkJCW5vcmRlcmJ5cyk7CisJc2NhbiA9IGluZGV4 UmVsYXRpb24tPnJkX2luZGFtLT5hbWJlZ2luc2NhbihpbmRleFJlbGF0aW9uLCBua2V5cywg bm9yZGVyYnlzKTsKIAkvKiBJbml0aWFsaXplIGluZm9ybWF0aW9uIGZvciBwYXJhbGxlbCBz Y2FuLiAqLwogCXNjYW4tPnBhcmFsbGVsX3NjYW4gPSBwc2NhbjsKIAlzY2FuLT54c190ZW1w X3NuYXAgPSB0ZW1wX3NuYXA7CiAKKwkvKiB3aXRoIHByZWZldGNoaW5nIGVuYWJsZWQsIGlu aXRpYWxpemUgdGhlIG5lY2Vzc2FyeSBzdGF0ZSAqLworCWlmIChwcmVmZXRjaF90YXJnZXQg PiAwKQorCXsKKwkJSW5kZXhQcmVmZXRjaCBwcmVmZXRjaGVyID0gcGFsbG9jMChzaXplb2Yo SW5kZXhQcmVmZXRjaERhdGEpKTsKKworCQlwcmVmZXRjaGVyLT5xdWV1ZUluZGV4ID0gMDsK KwkJcHJlZmV0Y2hlci0+cXVldWVTdGFydCA9IDA7CisJCXByZWZldGNoZXItPnF1ZXVlRW5k ID0gMDsKKworCQlwcmVmZXRjaGVyLT5wcmVmZXRjaFRhcmdldCA9IDA7CisJCXByZWZldGNo ZXItPnByZWZldGNoTWF4VGFyZ2V0ID0gcHJlZmV0Y2hfdGFyZ2V0OworCQlwcmVmZXRjaGVy LT5wcmVmZXRjaFJlc2V0ID0gcHJlZmV0Y2hfcmVzZXQ7CisKKwkJc2Nhbi0+eHNfcHJlZmV0 Y2ggPSBwcmVmZXRjaGVyOworCX0KKwogCXJldHVybiBzY2FuOwogfQogCkBAIC0zMTcsNiAr MzU3LDIwIEBAIGluZGV4X3Jlc2NhbihJbmRleFNjYW5EZXNjIHNjYW4sCiAKIAlzY2FuLT5p bmRleFJlbGF0aW9uLT5yZF9pbmRhbS0+YW1yZXNjYW4oc2Nhbiwga2V5cywgbmtleXMsCiAJ CQkJCQkJCQkJCW9yZGVyYnlzLCBub3JkZXJieXMpOworCisJLyogSWYgd2UncmUgcHJlZmV0 Y2hpbmcgZm9yIHRoaXMgaW5kZXgsIG1heWJlIHJlc2V0IHNvbWUgb2YgdGhlIHN0YXRlLiAq LworCWlmIChzY2FuLT54c19wcmVmZXRjaCAhPSBOVUxMKQorCXsKKwkJSW5kZXhQcmVmZXRj aCBwcmVmZXRjaGVyID0gc2Nhbi0+eHNfcHJlZmV0Y2g7CisKKwkJcHJlZmV0Y2hlci0+cXVl dWVTdGFydCA9IDA7CisJCXByZWZldGNoZXItPnF1ZXVlRW5kID0gMDsKKwkJcHJlZmV0Y2hl ci0+cXVldWVJbmRleCA9IDA7CisJCXByZWZldGNoZXItPnByZWZldGNoRG9uZSA9IGZhbHNl OworCQorCQlwcmVmZXRjaGVyLT5wcmVmZXRjaFRhcmdldCA9IE1pbihwcmVmZXRjaGVyLT5w cmVmZXRjaFRhcmdldCwKKwkJCQkJCQkJCQkgcHJlZmV0Y2hlci0+cHJlZmV0Y2hSZXNldCk7 CisJfQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0zNDUsNiArMzk5LDE5IEBAIGlu ZGV4X2VuZHNjYW4oSW5kZXhTY2FuRGVzYyBzY2FuKQogCWlmIChzY2FuLT54c190ZW1wX3Nu YXApCiAJCVVucmVnaXN0ZXJTbmFwc2hvdChzY2FuLT54c19zbmFwc2hvdCk7CiAKKwkvKiBJ ZiBwcmVmZXRjaGluZyBlbmFibGVkLCBsb2cgcHJlZmV0Y2ggc3RhdHMuICovCisJaWYgKHNj YW4tPnhzX3ByZWZldGNoKQorCXsKKwkJSW5kZXhQcmVmZXRjaCBwcmVmZXRjaCA9IHNjYW4t PnhzX3ByZWZldGNoOworCisJCWVsb2coTE9HLCAiaW5kZXggcHJlZmV0Y2ggc3RhdHM6IHJl cXVlc3RzICIgVUlOVDY0X0ZPUk1BVCAiIHByZWZldGNoZXMgIiBVSU5UNjRfRk9STUFUICIg KCVmKSBza2lwIGNhY2hlZCAiIFVJTlQ2NF9GT1JNQVQgIiBzZXF1ZW50aWFsICIgVUlOVDY0 X0ZPUk1BVCwKKwkJCSBwcmVmZXRjaC0+Y291bnRBbGwsCisJCQkgcHJlZmV0Y2gtPmNvdW50 UHJlZmV0Y2gsCisJCQkgcHJlZmV0Y2gtPmNvdW50UHJlZmV0Y2ggKiAxMDAuMCAvIHByZWZl dGNoLT5jb3VudEFsbCwKKwkJCSBwcmVmZXRjaC0+Y291bnRTa2lwQ2FjaGVkLAorCQkJIHBy ZWZldGNoLT5jb3VudFNraXBTZXF1ZW50aWFsKTsKKwl9CisKIAkvKiBSZWxlYXNlIHRoZSBz Y2FuIGRhdGEgc3RydWN0dXJlIGl0c2VsZiAqLwogCUluZGV4U2NhbkVuZChzY2FuKTsKIH0K QEAgLTQ4NywxMCArNTU0LDEzIEBAIGluZGV4X3BhcmFsbGVscmVzY2FuKEluZGV4U2NhbkRl c2Mgc2NhbikKICAqIGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbCAtIGpvaW4gcGFyYWxsZWwg aW5kZXggc2NhbgogICoKICAqIENhbGxlciBtdXN0IGJlIGhvbGRpbmcgc3VpdGFibGUgbG9j a3Mgb24gdGhlIGhlYXAgYW5kIHRoZSBpbmRleC4KKyAqCisgKiBYWFggU2VlIGluZGV4X2Jl Z2luc2NhbigpIGZvciBtb3JlIGNvbW1lbnRzIG9uIHByZWZldGNoX3RhcmdldC4KICAqLwog SW5kZXhTY2FuRGVzYwogaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIGhlYXBy ZWwsIFJlbGF0aW9uIGluZGV4cmVsLCBpbnQgbmtleXMsCi0JCQkJCQkgaW50IG5vcmRlcmJ5 cywgUGFyYWxsZWxJbmRleFNjYW5EZXNjIHBzY2FuKQorCQkJCQkJIGludCBub3JkZXJieXMs IFBhcmFsbGVsSW5kZXhTY2FuRGVzYyBwc2NhbiwKKwkJCQkJCSBpbnQgcHJlZmV0Y2hfdGFy Z2V0LCBpbnQgcHJlZmV0Y2hfcmVzZXQpCiB7CiAJU25hcHNob3QJc25hcHNob3Q7CiAJSW5k ZXhTY2FuRGVzYyBzY2FuOwpAQCAtNDk5LDcgKzU2OSw3IEBAIGluZGV4X2JlZ2luc2Nhbl9w YXJhbGxlbChSZWxhdGlvbiBoZWFwcmVsLCBSZWxhdGlvbiBpbmRleHJlbCwgaW50IG5rZXlz LAogCXNuYXBzaG90ID0gUmVzdG9yZVNuYXBzaG90KHBzY2FuLT5wc19zbmFwc2hvdF9kYXRh KTsKIAlSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAlzY2FuID0gaW5kZXhfYmVnaW5z Y2FuX2ludGVybmFsKGluZGV4cmVsLCBua2V5cywgbm9yZGVyYnlzLCBzbmFwc2hvdCwKLQkJ CQkJCQkJCXBzY2FuLCB0cnVlKTsKKwkJCQkJCQkJCXBzY2FuLCB0cnVlLCBwcmVmZXRjaF90 YXJnZXQsIHByZWZldGNoX3Jlc2V0KTsKIAogCS8qCiAJICogU2F2ZSBhZGRpdGlvbmFsIHBh cmFtZXRlcnMgaW50byB0aGUgc2NhbmRlc2MuICBFdmVyeXRoaW5nIGVsc2Ugd2FzIHNldApA QCAtNjIzLDIwICs2OTMsNzQgQEAgaW5kZXhfZmV0Y2hfaGVhcChJbmRleFNjYW5EZXNjIHNj YW4sIFR1cGxlVGFibGVTbG90ICpzbG90KQogYm9vbAogaW5kZXhfZ2V0bmV4dF9zbG90KElu ZGV4U2NhbkRlc2Mgc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFR1cGxlVGFibGVT bG90ICpzbG90KQogeworCUluZGV4UHJlZmV0Y2gJcHJlZmV0Y2ggPSBzY2FuLT54c19wcmVm ZXRjaDsKKwogCWZvciAoOzspCiAJeworCQkvKiB3aXRoIHByZWZldGNoaW5nIGVuYWJsZWQs IGFjY3VtdWxhdGUgZW5vdWdoIFRJRHMgaW50byB0aGUgcHJlZmV0Y2ggKi8KKwkJaWYgKFBS RUZFVENIX0FDVElWRShwcmVmZXRjaCkpCisJCXsKKwkJCS8qIAorCQkJICogaW5jcmVtZW50 YWxseSByYW1wIHVwIHByZWZldGNoIGRpc3RhbmNlCisJCQkgKgorCQkJICogWFhYIEludGVu dGlvbmFsbHkgZG9uZSBhcyBmaXJzdCwgc28gdGhhdCB3aXRoIHByZWZldGNoaW5nIHRoZXJl J3MKKwkJCSAqIGFsd2F5cyBhdCBsZWFzdCBvbmUgaXRlbSBpbiB0aGUgcXVldWUuCisJCQkg Ki8KKwkJCXByZWZldGNoLT5wcmVmZXRjaFRhcmdldCA9IE1pbihwcmVmZXRjaC0+cHJlZmV0 Y2hUYXJnZXQgKyAxLAorCQkJCQkJCQkJCXByZWZldGNoLT5wcmVmZXRjaE1heFRhcmdldCk7 CisKKwkJCS8qCisJCQkgKiBnZXQgbW9yZSBUSUQgd2hpbGUgdGhlcmUgaXMgZW1wdHkgc3Bh Y2UgaW4gdGhlIHF1ZXVlIChjb25zaWRlcmluZworCQkJICogY3VycmVudCBwcmVmZXRjaCB0 YXJnZXQKKwkJCSAqLworCQkJd2hpbGUgKCFQUkVGRVRDSF9GVUxMKHByZWZldGNoKSkKKwkJ CXsKKwkJCQlJdGVtUG9pbnRlciB0aWQ7CisKKwkJCQkvKiBUaW1lIHRvIGZldGNoIHRoZSBu ZXh0IFRJRCBmcm9tIHRoZSBpbmRleCAqLworCQkJCXRpZCA9IGluZGV4X2dldG5leHRfdGlk KHNjYW4sIGRpcmVjdGlvbik7CisKKwkJCQkvKiBJZiB3ZSdyZSBvdXQgb2YgaW5kZXggZW50 cmllcywgd2UncmUgZG9uZSAqLworCQkJCWlmICh0aWQgPT0gTlVMTCkKKwkJCQl7CisJCQkJ CXByZWZldGNoLT5wcmVmZXRjaERvbmUgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisK KwkJCQlBc3NlcnQoSXRlbVBvaW50ZXJFcXVhbHModGlkLCAmc2Nhbi0+eHNfaGVhcHRpZCkp OworCisJCQkJcHJlZmV0Y2gtPnF1ZXVlSXRlbXNbUFJFRkVUQ0hfUVVFVUVfSU5ERVgocHJl ZmV0Y2gtPnF1ZXVlRW5kKV0gPSAqdGlkOworCQkJCXByZWZldGNoLT5xdWV1ZUVuZCsrOwor CisJCQkJaW5kZXhfcHJlZmV0Y2goc2NhbiwgdGlkKTsKKwkJCX0KKwkJfQorCiAJCWlmICgh c2Nhbi0+eHNfaGVhcF9jb250aW51ZSkKIAkJewotCQkJSXRlbVBvaW50ZXIgdGlkOworCQkJ aWYgKFBSRUZFVENIX0VOQUJMRUQocHJlZmV0Y2gpKQorCQkJeworCQkJCS8qIHByZWZldGNo aW5nIGVuYWJsZWQsIGJ1dCByZWFjaGVkIHRoZSBlbmQgYW5kIHF1ZXVlIGVtcHR5ICovCisJ CQkJaWYgKFBSRUZFVENIX0RPTkUocHJlZmV0Y2gpKQorCQkJCQlicmVhazsKKworCQkJCXNj YW4tPnhzX2hlYXB0aWQgPSBwcmVmZXRjaC0+cXVldWVJdGVtc1tQUkVGRVRDSF9RVUVVRV9J TkRFWChwcmVmZXRjaC0+cXVldWVJbmRleCldOworCQkJCXByZWZldGNoLT5xdWV1ZUluZGV4 Kys7CisJCQl9CisJCQllbHNlCS8qIG5vdCBwcmVmZXRjaGluZywganVzdCBkbyB0aGUgcmVn dWxhciB3b3JrICAqLworCQkJeworCQkJCUl0ZW1Qb2ludGVyIHRpZDsKIAotCQkJLyogVGlt ZSB0byBmZXRjaCB0aGUgbmV4dCBUSUQgZnJvbSB0aGUgaW5kZXggKi8KLQkJCXRpZCA9IGlu ZGV4X2dldG5leHRfdGlkKHNjYW4sIGRpcmVjdGlvbik7CisJCQkJLyogVGltZSB0byBmZXRj aCB0aGUgbmV4dCBUSUQgZnJvbSB0aGUgaW5kZXggKi8KKwkJCQl0aWQgPSBpbmRleF9nZXRu ZXh0X3RpZChzY2FuLCBkaXJlY3Rpb24pOwogCi0JCQkvKiBJZiB3ZSdyZSBvdXQgb2YgaW5k ZXggZW50cmllcywgd2UncmUgZG9uZSAqLwotCQkJaWYgKHRpZCA9PSBOVUxMKQotCQkJCWJy ZWFrOworCQkJCS8qIElmIHdlJ3JlIG91dCBvZiBpbmRleCBlbnRyaWVzLCB3ZSdyZSBkb25l ICovCisJCQkJaWYgKHRpZCA9PSBOVUxMKQorCQkJCQlicmVhazsKKworCQkJCUFzc2VydChJ dGVtUG9pbnRlckVxdWFscyh0aWQsICZzY2FuLT54c19oZWFwdGlkKSk7CisJCQl9CiAKLQkJ CUFzc2VydChJdGVtUG9pbnRlckVxdWFscyh0aWQsICZzY2FuLT54c19oZWFwdGlkKSk7CiAJ CX0KIAogCQkvKgpAQCAtOTg4LDMgKzExMTIsMjU4IEBAIGluZGV4X29wY2xhc3Nfb3B0aW9u cyhSZWxhdGlvbiBpbmRyZWwsIEF0dHJOdW1iZXIgYXR0bnVtLCBEYXR1bSBhdHRvcHRpb25z LAogCiAJcmV0dXJuIGJ1aWxkX2xvY2FsX3JlbG9wdGlvbnMoJnJlbG9wdHMsIGF0dG9wdGlv bnMsIHZhbGlkYXRlKTsKIH0KKworLyoKKyAqIEFkZCB0aGUgYmxvY2sgdG8gdGhlIHRpbnkg dG9wLWxldmVsIHF1ZXVlIChMUlUpLCBhbmQgY2hlY2sgaWYgdGhlIGJsb2NrCisgKiBpcyBp biBhIHNlcXVlbnRpYWwgcGF0dGVybi4KKyAqLworc3RhdGljIGJvb2wKK2luZGV4X3ByZWZl dGNoX2lzX3NlcXVlbnRpYWwoSW5kZXhQcmVmZXRjaCBwcmVmZXRjaCwgQmxvY2tOdW1iZXIg YmxvY2spCit7CisJaW50CQlpZHg7CisKKwkvKiBJZiB0aGUgcXVldWUgaXMgZW1wdHksIGp1 c3Qgc3RvcmUgdGhlIGJsb2NrIGFuZCB3ZSdyZSBkb25lLiAqLworCWlmIChwcmVmZXRjaC0+ YmxvY2tJbmRleCA9PSAwKQorCXsKKwkJcHJlZmV0Y2gtPmJsb2NrSXRlbXNbUFJFRkVUQ0hf QkxPQ0tfSU5ERVgocHJlZmV0Y2gtPmJsb2NrSW5kZXgpXSA9IGJsb2NrOworCQlwcmVmZXRj aC0+YmxvY2tJbmRleCsrOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyoKKwkgKiBPdGhl cndpc2UsIGNoZWNrIGlmIGl0J3MgdGhlIHNhbWUgYXMgdGhlIGltbWVkaWF0ZWx5IHByZWNl ZGluZyBibG9jayAod2UKKwkgKiBkb24ndCB3YW50IHRvIHByZWZldGNoIHRoZSBzYW1lIGJs b2NrIG92ZXIgYW5kIG92ZXIuKQorCSAqLworCWlmIChwcmVmZXRjaC0+YmxvY2tJdGVtc1tQ UkVGRVRDSF9CTE9DS19JTkRFWChwcmVmZXRjaC0+YmxvY2tJbmRleCAtIDEpXSA9PSBibG9j aykKKwkJcmV0dXJuIHRydWU7CisKKwkvKiBOb3QgdGhlIHNhbWUgYmxvY2ssIHNvIGFkZCBp dCB0byB0aGUgcXVldWUuICovCisJcHJlZmV0Y2gtPmJsb2NrSXRlbXNbUFJFRkVUQ0hfQkxP Q0tfSU5ERVgocHJlZmV0Y2gtPmJsb2NrSW5kZXgpXSA9IGJsb2NrOworCXByZWZldGNoLT5i bG9ja0luZGV4Kys7CisKKwkvKiBjaGVjayBzZXF1ZW50aWFsIHBhdHRlciBhIGNvdXBsZSBy ZXF1ZXN0cyBiYWNrICovCisJZm9yIChpbnQgaSA9IDE7IGkgPCBQUkVGRVRDSF9TRVFfUEFU VEVSTl9CTE9DS1M7IGkrKykKKwl7CisJCS8qIG5vdCBlbm91Z2ggcmVxdWVzdHMgdG8gY29u ZmlybSBhIHNlcXVlbnRpYWwgcGF0dGVybiAqLworCQlpZiAocHJlZmV0Y2gtPmJsb2NrSW5k ZXggPCBpKQorCQkJcmV0dXJuIGZhbHNlOworCisJCS8qCisJCSAqIGluZGV4IG9mIHRoZSBh bHJlYWR5IHJlcXVlc3RlZCBidWZmZXIgKC0xIGJlY2F1c2Ugd2UgYWxyZWFkeQorCQkgKiBp bmNyZW1lbnRlZCB0aGUgaW5kZXggd2hlbiBhZGRpbmcgdGhlIGJsb2NrIHRvIHRoZSBxdWV1 ZSkKKwkJICovCisJCWlkeCA9IFBSRUZFVENIX0JMT0NLX0lOREVYKHByZWZldGNoLT5ibG9j a0luZGV4IC0gaSAtIDEpOworCisJCS8qICAqLworCQlpZiAocHJlZmV0Y2gtPmJsb2NrSXRl bXNbaWR4XSAhPSAoYmxvY2sgLSBpKSkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1 cm4gdHJ1ZTsKK30KKworLyoKKyAqIGluZGV4X3ByZWZldGNoX2FkZF9jYWNoZQorICoJCUFk ZCBhIGJsb2NrIHRvIHRoZSBjYWNoZSwgcmV0dXJuIHRydWUgaWYgaXQgd2FzIHJlY2VudGx5 IHByZWZldGNoZWQuCisgKgorICogV2hlbiBjaGVja2luZyBhIGJsb2NrLCB3ZSBuZWVkIHRv IGNoZWNrIGlmIGl0IHdhcyByZWNlbnRseSBwcmVmZXRjaGVkLAorICogd2hlcmUgcmVjZW50 bHkgbWVhbnMgd2l0aGluIFBSRUZFVENIX0NBQ0hFX1NJWkUgcmVxdWVzdHMuIFRoaXMgY2hl Y2sKKyAqIG5lZWRzIHRvIGJlIHZlcnkgY2hlYXAsIGV2ZW4gd2l0aCBmYWlybHkgbGFyZ2Ug Y2FjaGVzIChodW5kcmVkcyBvZgorICogZW50cmllcykuIFRoZSBjYWNoZSBkb2VzIG5vdCBu ZWVkIHRvIGJlIHBlcmZlY3QsIHdlIGNhbiBhY2NlcHQgZmFsc2UKKyAqIHBvc2l0aXZlcy9u ZWdhdGl2ZXMsIGFzIGxvbmcgYXMgdGhlIHJhdGUgaXMgcmVhc29uYWJseSBsb3cuIFdlIGFs c28KKyAqIG5lZWQgdG8gZXhwaXJlIGVudHJpZXMsIHNvIHRoYXQgb25seSAicmVjZW50IiBy ZXF1ZXN0cyBhcmUgcmVtZW1iZXJlZC4KKyAqCisgKiBBIHF1ZXVlIHdvdWxkIGFsbG93IGV4 cGlyaW5nIHRoZSByZXF1ZXN0cywgYnV0IGNoZWNraW5nIGlmIGEgYmxvY2sgd2FzCisgKiBw cmVmZXRjaGVkIHdvdWxkIGJlIGV4cGVuc2l2ZSAobGluZWFyIHNlYXJjaCBmb3IgbG9uZ2Vy IHF1ZXVlcykuIEFub3RoZXIKKyAqIG9wdGlvbiB3b3VsZCBiZSBhIGhhc2ggdGFibGUsIGJ1 dCB0aGF0IGhhcyBpc3N1ZXMgd2l0aCBleHBpcmluZyBlbnRyaWVzCisgKiBjaGVhcGx5ICh3 aGljaCB1c3VhbGx5IGRlZ3JhZGVzIHRoZSBoYXNoIHRhYmxlKS4KKyAqCisgKiBTbyB3ZSB1 c2UgYSBjYWNoZSB0aGF0IGlzIG9yZ2FuaXplZCBhcyBtdWx0aXBsZSBzbWFsbCBMUlUgY2Fj aGVzLiBFYWNoCisgKiBibG9jayBpcyBtYXBwZWQgdG8gYSBwYXJ0aWN1bGFyIExSVSBieSBo YXNoaW5nIChzbyBpdCdzIGEgYml0IGxpa2UgYQorICogaGFzaCB0YWJsZSksIGFuZCBlYWNo IExSVSBpcyB0aW55IChlLmcuIDggZW50cmllcykuIFRoZSBMUlUgb25seSBrZWVwcworICog dGhlIG1vc3QgcmVjZW50IHJlcXVlc3RzIChmb3IgdGhhdCBwYXJ0aWN1bGFyIExSVSkuCisg KgorICogVGhpcyBhbGxvd3MgcXVpY2sgc2VhcmNoZXMgYW5kIGV4cGlyYXRpb24sIHdpdGgg ZmFsc2UgbmVnYXRpdmVzICh3aGVuCisgKiBhIHBhcnRpY3VsYXIgTFJVIGhhcyB0b28gbWFu eSBjb2xsaXNpb25zKS4KKyAqCisgKiBGb3IgZXhhbXBsZSwgaW1hZ2luZSAxMjggTFJVIGNh Y2hlcywgZWFjaCB3aXRoIDggZW50cmllcyAtIHRoYXQncyAxMDI0CisgKiBwcmVmZXRjaCBy ZXF1ZXN0IGluIHRvdGFsLgorICoKKyAqIFRoZSByZWNlbmN5IGlzIGRldGVybWluZWQgdXNp bmcgYSBwcmVmZXRjaCBjb3VudGVyLCBpbmNyZW1lbnRlZCBldmVyeQorICogdGltZSB3ZSBl bmQgdXAgcHJlZmV0Y2hpbmcgYSBibG9jay4gVGhlIGNvdW50ZXIgaXMgdWludDY0LCBzbyBp dCBzaG91bGQKKyAqIG5vdCB3cmFwICgxMjUgemViaWJ5dGVzLCB3b3VsZCB0YWtlIH40IG1p bGxpb24geWVhcnMgYXQgMUdCL3MpLgorICoKKyAqIFRvIGNoZWNrIGlmIGEgYmxvY2sgd2Fz IHByZWZldGNoZWQgcmVjZW50bHksIHdlIGNhbGN1bGF0ZSBoYXNoKGJsb2NrKSwKKyAqIGFu ZCB0aGVuIGxpbmVhcmx5IHNlYXJjaCBpZiB0aGUgdGlueSBMUlUgaGFzIGVudHJ5IGZvciB0 aGUgc2FtZSBibG9jaworICogYW5kIHJlcXVlc3QgbGVzcyB0aGFuIFBSRUZFVENIX0NBQ0hF X1NJWkUgYWdvLgorICoKKyAqIEF0IHRoZSBzYW1lIHRpbWUsIHdlIGVpdGhlciB1cGRhdGUg dGhlIGVudHJ5IChmb3IgdGhlIHNhbWUgYmxvY2spIGlmCisgKiBmb3VuZCwgb3IgcmVwbGFj ZSB0aGUgb2xkZXN0L2VtcHR5IGVudHJ5LgorICoKKyAqIElmIHRoZSBibG9jayB3YXMgbm90 IHJlY2VudGx5IHByZWZldGNoZWQgKGkuZS4gd2Ugd2FudCB0byBwcmVmZXRjaCBpdCksCisg KiB3ZSBpbmNyZW1lbnQgdGhlIGNvdW50ZXIuCisgKi8KK3N0YXRpYyBib29sCitpbmRleF9w cmVmZXRjaF9hZGRfY2FjaGUoSW5kZXhQcmVmZXRjaCBwcmVmZXRjaCwgQmxvY2tOdW1iZXIg YmxvY2spCit7CisJUHJlZmV0Y2hDYWNoZUVudHJ5ICplbnRyeTsKKworCS8qIGNhbGN1bGF0 ZSB3aGljaCBMUlUgdG8gdXNlICovCisJaW50CQkJbHJ1ID0gaGFzaF91aW50MzIoYmxvY2sp ICUgUFJFRkVUQ0hfTFJVX0NPVU5UOworCisJLyogZW50cnkgdG8gKG1heWJlKSB1c2UgZm9y IHRoaXMgYmxvY2sgcmVxdWVzdCAqLworCXVpbnQ2NAkJb2xkZXN0UmVxdWVzdCA9IFBHX1VJ TlQ2NF9NQVg7CisJaW50CQkJb2xkZXN0SW5kZXggPSAtMTsKKworCS8qCisJICogRmlyc3Qg YWRkIHRoZSBibG9jayB0byB0aGUgKHRpbnkpIHRvcC1sZXZlbCBMUlUgY2FjaGUgYW5kIHNl ZSBpZiBpdCdzCisJICogcGFydCBvZiBhIHNlcXVlbnRpYWwgcGF0dGVybi4gSW4gdGhpcyBj YXNlIHdlIGp1c3QgaWdub3JlIHRoZSBibG9jaworCSAqIGFuZCBkb24ndCBwcmVmZXRjaCBp dCAtIHdlIGV4cGVjdCByZWFkLWFoZWFkIHRvIGRvIGEgYmV0dGVyIGpvYi4KKwkgKgorCSAq IFhYWCBNYXliZSB3ZSBzaG91bGQgc3RpbGwgYWRkIHRoZSBibG9jayB0byB0aGUgbGF0ZXIg Y2FjaGUsIGluIGNhc2UKKwkgKiB3ZSBoYXBwZW4gdG8gYWNjZXNzIGl0IGxhdGVyPyBUaGF0 IG1pZ2h0IGhlbHAgaWYgd2UgZmlyc3Qgc2NhbiBhIGxvdAorCSAqIG9mIHRoZSB0YWJsZSBz ZXF1ZW50aWFsbHksIGFuZCB0aGVuIHJhbmRvbWx5LiBOb3Qgc3VyZSB0aGF0J3MgdmVyeQor CSAqIGxpa2VseSB3aXRoIGluZGV4IGFjY2VzcywgdGhvdWdoLgorCSAqLworCWlmIChpbmRl eF9wcmVmZXRjaF9pc19zZXF1ZW50aWFsKHByZWZldGNoLCBibG9jaykpCisJeworCQlwcmVm ZXRjaC0+Y291bnRTa2lwU2VxdWVudGlhbCsrOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkv KiBzZWUgaWYgd2UgYWxyZWFkeSBoYXZlIHByZWZldGNoZWQgdGhpcyBibG9jayAobGluZWFy IHNlYXJjaCBvZiBMUlUpICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBQUkVGRVRDSF9MUlVf U0laRTsgaSsrKQorCXsKKwkJZW50cnkgPSAmcHJlZmV0Y2gtPnByZWZldGNoQ2FjaGVbbHJ1 ICogUFJFRkVUQ0hfTFJVX1NJWkUgKyBpXTsKKworCQkvKiBJcyB0aGlzIHRoZSBvbGRlc3Qg cHJlZmV0Y2ggcmVxdWVzdCBpbiB0aGlzIExSVT8gKi8KKwkJaWYgKGVudHJ5LT5yZXF1ZXN0 IDwgb2xkZXN0UmVxdWVzdCkKKwkJeworCQkJb2xkZXN0UmVxdWVzdCA9IGVudHJ5LT5yZXF1 ZXN0OworCQkJb2xkZXN0SW5kZXggPSBpOworCQl9CisKKwkJLyogUmVxdWVzdCBudW1iZXJz IGFyZSBwb3NpdGl2ZSwgc28gMCBtZWFucyAidW51c2VkIi4gKi8KKwkJaWYgKGVudHJ5LT5y ZXF1ZXN0ID09IDApCisJCQljb250aW51ZTsKKworCQkvKiBJcyB0aGlzIGVudHJ5IGZvciB0 aGUgc2FtZSBibG9jayBhcyB0aGUgY3VycmVudCByZXF1ZXN0PyAqLworCQlpZiAoZW50cnkt PmJsb2NrID09IGJsb2NrKQorCQl7CisJCQlib29sCXByZWZldGNoZWQ7CisKKwkJCS8qCisJ CQkgKiBJcyB0aGUgb2xkIHJlcXVlc3Qgc3VmZmljaWVudGx5IHJlY2VudD8gSWYgeWVzLCB3 ZSB0cmVhdCB0aGUKKwkJCSAqIGJsb2NrIGFzIGFscmVhZHkgcHJlZmV0Y2hlZC4KKwkJCSAq CisJCQkgKiBYWFggV2UgZG8gYWRkIHRoZSBjYWNoZSBzaXplIHRvIHRoZSByZXF1ZXN0IGlu IG9yZGVyIG5vdCB0bworCQkJICogaGF2ZSBpc3N1ZXMgd2l0aCB1aW50NjQgdW5kZXJmbG93 cy4KKwkJCSAqLworCQkJcHJlZmV0Y2hlZCA9IChlbnRyeS0+cmVxdWVzdCArIFBSRUZFVENI X0NBQ0hFX1NJWkUgPj0gcHJlZmV0Y2gtPnByZWZldGNoUmVxTnVtYmVyKTsKKworCQkJLyog VXBkYXRlIHRoZSByZXF1ZXN0IG51bWJlci4gKi8KKwkJCWVudHJ5LT5yZXF1ZXN0ID0gKytw cmVmZXRjaC0+cHJlZmV0Y2hSZXFOdW1iZXI7CisKKwkJCXByZWZldGNoLT5jb3VudFNraXBD YWNoZWQgKz0gKHByZWZldGNoZWQpID8gMSA6IDA7CisKKwkJCXJldHVybiBwcmVmZXRjaGVk OworCQl9CisJfQorCisJLyoKKwkgKiBXZSBkaWRuJ3QgZmluZCB0aGUgYmxvY2sgaW4gdGhl IExSVSwgc28gc3RvcmUgaXQgZWl0aGVyIGluIGFuIGVtcHR5CisJICogZW50cnksIG9yIGlu IHRoZSAib2xkZXN0IiBwcmVmZXRjaCByZXF1ZXN0IGluIHRoaXMgTFJVLgorCSAqLworCUFz c2VydCgob2xkZXN0SW5kZXggPj0gMCkgJiYgKG9sZGVzdEluZGV4IDwgUFJFRkVUQ0hfTFJV X1NJWkUpKTsKKworCWVudHJ5ID0gJnByZWZldGNoLT5wcmVmZXRjaENhY2hlW2xydSAqIFBS RUZFVENIX0xSVV9TSVpFICsgb2xkZXN0SW5kZXhdOworCisJZW50cnktPmJsb2NrID0gYmxv Y2s7CisJZW50cnktPnJlcXVlc3QgPSArK3ByZWZldGNoLT5wcmVmZXRjaFJlcU51bWJlcjsK KworCS8qIG5vdCBpbiB0aGUgcHJlZmV0Y2ggY2FjaGUgKi8KKwlyZXR1cm4gZmFsc2U7Cit9 CisKKy8qCisgKiBEbyBwcmVmZXRjaGluZywgYW5kIGdyYWR1YWxseSBpbmNyZWFzZSB0aGUg cHJlZmV0Y2ggZGlzdGFuY2UuCisgKgorICogWFhYIFRoaXMgaXMgbGltaXRlZCB0byBhIHNp bmdsZSBpbmRleCBwYWdlIChiZWNhdXNlIHRoYXQncyB3aGVyZSB3ZSBnZXQKKyAqIGN1cnJQ b3MuaXRlbXMgZnJvbSkuIEJ1dCBpbmRleCB0dXBsZXMgYXJlIHR5cGljYWxseSB2ZXJ5IHNt YWxsLCBzbyB0aGVyZQorICogc2hvdWxkIGJlIHF1aXRlIGEgYml0IG9mIHN0dWZmIHRvIHBy ZWZldGNoIChlc3BlY2lhbGx5IHdpdGggZGVkdXBsaWNhdGVkCisgKiBpbmRleGVzLCBldGMu KS4gRG9lcyBub3Qgc2VlbSB3b3J0aCByZXdvcmtpbmcgdGhlIGluZGV4IGFjY2VzcyB0byBh bGxvdworICogbW9yZSBhZ2dyZXNzaXZlIHByZWZldGNoaW5nLCBpdCdzIGJlc3QgZWZmb3J0 LgorICoKKyAqIFhYWCBTb21lIGlkZWFzIGhvdyB0byBhdXRvLXR1bmUgdGhlIHByZWZldGNo aW5nLCBzbyB0aGF0IHVubmVjZXNzYXJ5CisgKiBwcmVmZXRjaGluZyBkb2VzIG5vdCBjYXVz ZSBzaWduaWZpY2FudCByZWdyZXNzaW9ucyAoZS5nLiBmb3IgbmVzdGxvb3AKKyAqIHdpdGgg aW5uZXIgaW5kZXggc2NhbikuIFdlIGNvdWxkIHRyYWNrIG51bWJlciBvZiBpbmRleCBwYWdl cyB2aXNpdGVkCisgKiBhbmQgaW5kZXggdHVwbGVzIHJldHVybmVkLCB0byBjYWxjdWxhdGUg YXZnIHR1cGxlcyAvIHBhZ2UsIGFuZCB0aGVuCisgKiB1c2UgdGhhdCB0byBsaW1pdCBwcmVm ZXRjaGluZyBhZnRlciBzd2l0Y2hpbmcgdG8gYSBuZXcgcGFnZSAoaW5zdGVhZAorICogb2Yg anVzdCB1c2luZyBwcmVmZXRjaE1heFRhcmdldCwgd2hpY2ggY2FuIGdldCBtdWNoIGxhcmdl cikuCisgKgorICogWFhYIE9idmlvdXNseSwgYW5vdGhlciBvcHRpb24gaXMgdG8gdXNlIHRo ZSBwbGFubmVyIGVzdGltYXRlcyAtIHdlIGtub3cKKyAqIGhvdyBtYW55IHJvd3Mgd2UncmUg ZXhwZWN0ZWQgdG8gZmV0Y2ggKG9uIGF2ZXJhZ2UsIGFzc3VtaW5nIHRoZSBlc3RpbWF0ZXMK KyAqIGFyZSByZWFzb25hYmx5IGFjY3VyYXRlKSwgc28gd2h5IG5vdCB0byB1c2UgdGhhdC4g QW5kIG1heWJlIGNvbWJpbmUgaXQKKyAqIHdpdGggdGhlIGF1dG8tdHVuaW5nIGJhc2VkIG9u IHJ1bnRpbWUgc3RhdGlzdGljcywgZGVzY3JpYmVkIGFib3ZlLgorICoKKyAqIFhYWCBUaGUg cHJlZmV0Y2hpbmcgbWF5IGludGVyZmVyZSB3aXRoIHRoZSBwYXRjaCBhbGxvd2luZyB1cyB0 byBldmFsdWF0ZQorICogY29uZGl0aW9ucyBvbiB0aGUgaW5kZXggdHVwbGUsIGluIHdoaWNo IGNhc2Ugd2UgbWF5IG5vdCBuZWVkIHRoZSBoZWFwCisgKiB0dXBsZS4gTWF5YmUgaWYgdGhl cmUncyBzdWNoIGZpbHRlciwgd2Ugc2hvdWxkIHByZWZldGNoIG9ubHkgcGFnZXMgdGhhdAor ICogYXJlIG5vdCBhbGwtdmlzaWJsZSAoYW5kIHRoZSBzYW1lIGlkZWEgd291bGQgYWxzbyB3 b3JrIGZvciBJT1MpLCBidXQKKyAqIGl0IGFsc28gbWFrZXMgdGhlIGluZGV4aW5nIGEgYml0 ICJhd2FyZSIgb2YgdGhlIHZpc2liaWxpdHkgc3R1ZmYgKHdoaWNoCisgKiBzZWVtcyBhIGJp dCB3cm9uZykuIEFsc28sIG1heWJlIHdlIHNob3VsZCBjb25zaWRlciB0aGUgZmlsdGVyIHNl bGVjdGl2aXR5CisgKiAoaWYgdGhlIGluZGV4LW9ubHkgZmlsdGVyIGlzIGV4cGVjdGVkIHRv IGVsaW1pbmF0ZSBvbmx5IGZldyByb3dzLCB0aGVuCisgKiB0aGUgdm0gY2hlY2sgaXMgcG9p bnRsZXNzKS4gTWF5YmUgdGhpcyBjb3VsZC9zaG91bGQgYmUgYXV0by10dW5pbmcgdG9vLAor ICogaS5lLiB3ZSBjb3VsZCB0cmFjayBob3cgbWFueSBoZWFwIHR1cGxlcyB3ZXJlIG5lZWRl ZCBhZnRlciBhbGwsIGFuZCB0aGVuCisgKiB3ZSB3b3VsZCBjb25zaWRlciB0aGlzIHdoZW4g ZGVjaWRpbmcgd2hldGhlciB0byBwcmVmZXRjaCBhbGwtdmlzaWJsZQorICogcGFnZXMgb3Ig bm90IChtYXR0ZXJzIG9ubHkgZm9yIHJlZ3VsYXIgaW5kZXggc2NhbnMsIG5vdCBJT1MpLgor ICoKKyAqIFhYWCBNYXliZSB3ZSBjb3VsZC9zaG91bGQgYWxzbyBwcmVmZXRjaCB0aGUgbmV4 dCBpbmRleCBibG9jaywgZS5nLiBzdG9yZWQKKyAqIGluIEJUU2NhblBvc0RhdGEubmV4dFBh Z2UuCisgKi8KK3N0YXRpYyB2b2lkCitpbmRleF9wcmVmZXRjaChJbmRleFNjYW5EZXNjIHNj YW4sIEl0ZW1Qb2ludGVyIHRpZCkKK3sKKwlJbmRleFByZWZldGNoCXByZWZldGNoID0gc2Nh bi0+eHNfcHJlZmV0Y2g7CisJQmxvY2tOdW1iZXIJYmxvY2s7CisKKwkvKgorCSAqIE5vIGhl YXAgcmVsYXRpb24gbWVhbnMgYml0bWFwIGluZGV4IHNjYW4sIHdoaWNoIGRvZXMgcHJlZmV0 Y2hpbmcgYXQKKwkgKiB0aGUgYml0bWFwIGhlYXAgc2Nhbiwgc28gbm8gcHJlZmV0Y2ggaGVy ZSAod2UgY2FuJ3QgZG8gaXQgYW55d2F5LAorCSAqIHdpdGhvdXQgdGhlIGhlYXApCisJICoK KwkgKiBYWFggQnV0IGluIHRoaXMgY2FzZSB3ZSBzaG91bGQgaGF2ZSBwcmVmZXRjaE1heFRh cmdldD0wLCBiZWNhdXNlIGluCisJICogaW5kZXhfYmViaW5zY2FuX2JpdG1hcCgpIHdlIGRp c2FibGUgcHJlZmV0Y2hpbmcuIFNvIG1heWJlIHdlIHNob3VsZAorCSAqIGp1c3QgY2hlY2sg dGhhdC4KKwkgKi8KKwlpZiAoIXByZWZldGNoKQorCQlyZXR1cm47CisKKwkvKiB3YXMgaXQg aW5pdGlhbGl6ZWQgY29ycmVjdGx5PyAqLworCS8vIEFzc2VydChwcmVmZXRjaC0+cHJlZmV0 Y2hJbmRleCAhPSAtMSk7CisKKwkvKgorCSAqIElmIHdlIGdvdCBoZXJlLCBwcmVmZXRjaGlu ZyBpcyBlbmFibGVkIGFuZCBpdCdzIGEgbm9kZSB0aGF0IHN1cHBvcnRzCisJICogcHJlZmV0 Y2hpbmcgKGkuZS4gaXQgY2FuJ3QgYmUgYSBiaXRtYXAgaW5kZXggc2NhbikuCisJICovCisJ QXNzZXJ0KHNjYW4tPmhlYXBSZWxhdGlvbik7CisKKwlwcmVmZXRjaC0+Y291bnRBbGwrKzsK KworCWJsb2NrID0gSXRlbVBvaW50ZXJHZXRCbG9ja051bWJlcih0aWQpOworCisJLyoKKwkg KiBEbyBub3QgcHJlZmV0Y2ggdGhlIHNhbWUgYmxvY2sgb3ZlciBhbmQgb3ZlciBhZ2FpbiwK KwkgKgorCSAqIFRoaXMgaGFwcGVucyBlLmcuIGZvciBjbHVzdGVyZWQgb3IgbmF0dXJhbGx5 IGNvcnJlbGF0ZWQgaW5kZXhlcworCSAqIChma2V5IHRvIGEgc2VxdWVuY2UgSUQpLiBJdCdz IG5vdCBleHBlbnNpdmUgKHRoZSBibG9jayBpcyBpbiBwYWdlCisJICogY2FjaGUgYWxyZWFk eSwgc28gbm8gSS9PKSwgYnV0IGl0J3Mgbm90IGZyZWUgZWl0aGVyLgorCSAqLworCWlmICgh aW5kZXhfcHJlZmV0Y2hfYWRkX2NhY2hlKHByZWZldGNoLCBibG9jaykpCisJeworCQlwcmVm ZXRjaC0+Y291bnRQcmVmZXRjaCsrOworCisJCVByZWZldGNoQnVmZmVyKHNjYW4tPmhlYXBS ZWxhdGlvbiwgTUFJTl9GT1JLTlVNLCBibG9jayk7CisJCXBnQnVmZmVyVXNhZ2UuYmxrc19w cmVmZXRjaGVzKys7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv ZXhwbGFpbi5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCmluZGV4IDg1NzBi MTRmNjIuLjZhZTQ0NWQ2MmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTM1NTgs NiArMzU1OCw3IEBAIHNob3dfYnVmZmVyX3VzYWdlKEV4cGxhaW5TdGF0ZSAqZXMsIGNvbnN0 IEJ1ZmZlclVzYWdlICp1c2FnZSwgYm9vbCBwbGFubmluZykKIAkJCQkJCQkJICAhSU5TVFJf VElNRV9JU19aRVJPKHVzYWdlLT5ibGtfd3JpdGVfdGltZSkpOwogCQlib29sCQloYXNfdGVt cF90aW1pbmcgPSAoIUlOU1RSX1RJTUVfSVNfWkVSTyh1c2FnZS0+dGVtcF9ibGtfcmVhZF90 aW1lKSB8fAogCQkJCQkJCQkJICAgIUlOU1RSX1RJTUVfSVNfWkVSTyh1c2FnZS0+dGVtcF9i bGtfd3JpdGVfdGltZSkpOworCQlib29sCQloYXNfcHJlZmV0Y2hlcyA9ICh1c2FnZS0+Ymxr c19wcmVmZXRjaGVzID4gMCk7CiAJCWJvb2wJCXNob3dfcGxhbm5pbmcgPSAocGxhbm5pbmcg JiYgKGhhc19zaGFyZWQgfHwKIAkJCQkJCQkJCQkJCSAgaGFzX2xvY2FsIHx8IGhhc190ZW1w IHx8IGhhc190aW1pbmcgfHwKIAkJCQkJCQkJCQkJCSAgaGFzX3RlbXBfdGltaW5nKSk7CkBA IC0zNjU1LDYgKzM2NTYsMjMgQEAgc2hvd19idWZmZXJfdXNhZ2UoRXhwbGFpblN0YXRlICpl cywgY29uc3QgQnVmZmVyVXNhZ2UgKnVzYWdlLCBib29sIHBsYW5uaW5nKQogCQkJYXBwZW5k U3RyaW5nSW5mb0NoYXIoZXMtPnN0ciwgJ1xuJyk7CiAJCX0KIAorCQkvKiBBcyBhYm92ZSwg c2hvdyBvbmx5IHBvc2l0aXZlIGNvdW50ZXIgdmFsdWVzLiAqLworCQlpZiAoaGFzX3ByZWZl dGNoZXMpCisJCXsKKwkJCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsKKwkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoZXMtPnN0ciwgIlByZWZldGNoZXM6Iik7CisKKwkJCWlmICh1c2FnZS0+ Ymxrc19wcmVmZXRjaGVzID4gMCkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsICIg YmxvY2tzPSVsbGQiLAorCQkJCQkJCQkgKGxvbmcgbG9uZykgdXNhZ2UtPmJsa3NfcHJlZmV0 Y2hlcyk7CisKKwkJCWlmICh1c2FnZS0+Ymxrc19wcmVmZXRjaF9yb3VuZHMgPiAwKQorCQkJ CWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0ciwgIiByb3VuZHM9JWxsZCIsCisJCQkJCQkJCSAo bG9uZyBsb25nKSB1c2FnZS0+Ymxrc19wcmVmZXRjaF9yb3VuZHMpOworCisJCQlhcHBlbmRT dHJpbmdJbmZvQ2hhcihlcy0+c3RyLCAnXG4nKTsKKwkJfQorCiAJCWlmIChzaG93X3BsYW5u aW5nKQogCQkJZXMtPmluZGVudC0tOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNJbmRleGluZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4 aW5nLmMKaW5kZXggMWQ4MmI2NGI4OS4uZTVjZTFkYmM5NSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0luZGV4aW5nLmMKQEAgLTc2NSwxMSArNzY1LDE1IEBAIGNoZWNrX2V4Y2x1c2lv bl9vcl91bmlxdWVfY29uc3RyYWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwK IAkvKgogCSAqIE1heSBoYXZlIHRvIHJlc3RhcnQgc2NhbiBmcm9tIHRoaXMgcG9pbnQgaWYg YSBwb3RlbnRpYWwgY29uZmxpY3QgaXMKIAkgKiBmb3VuZC4KKwkgKgorCSAqIFhYWCBTaG91 bGQgdGhpcyBkbyBpbmRleCBwcmVmZXRjaD8gUHJvYmFibHkgbm90IHdvcnRoIGl0IGZvciB1 bmlxdWUKKwkgKiBjb25zdHJhaW50cywgSSBndWVzcz8gT3RoZXJ3aXNlIHdlIHNob3VsZCBj YWxjdWxhdGUgcHJlZmV0Y2hfdGFyZ2V0CisJICoganVzdCBsaWtlIGluIG5vZGVJbmRleHNj YW4gZXRjLgogCSAqLwogcmV0cnk6CiAJY29uZmxpY3QgPSBmYWxzZTsKIAlmb3VuZF9zZWxm ID0gZmFsc2U7Ci0JaW5kZXhfc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwLCBpbmRleCwg JkRpcnR5U25hcHNob3QsIGluZG5rZXlhdHRzLCAwKTsKKwlpbmRleF9zY2FuID0gaW5kZXhf YmVnaW5zY2FuKGhlYXAsIGluZGV4LCAmRGlydHlTbmFwc2hvdCwgaW5kbmtleWF0dHMsIDAs IDAsIDApOwogCWluZGV4X3Jlc2NhbihpbmRleF9zY2FuLCBzY2Fua2V5cywgaW5kbmtleWF0 dHMsIE5VTEwsIDApOwogCiAJd2hpbGUgKGluZGV4X2dldG5leHRfc2xvdChpbmRleF9zY2Fu LCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgZXhpc3Rpbmdfc2xvdCkpCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCmluZGV4IGU3NzY1MjQyMjcuLmMwYmI3MzI2NTgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCisr KyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jCkBAIC0yMDQsOCAr MjA0LDEzIEBAIFJlbGF0aW9uRmluZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRpb24gcmVsLCBP aWQgaWR4b2lkLAogCS8qIEJ1aWxkIHNjYW4ga2V5LiAqLwogCXNrZXlfYXR0b2ZmID0gYnVp bGRfcmVwbGluZGV4X3NjYW5fa2V5KHNrZXksIHJlbCwgaWR4cmVsLCBzZWFyY2hzbG90KTsK IAotCS8qIFN0YXJ0IGFuIGluZGV4IHNjYW4uICovCi0Jc2NhbiA9IGluZGV4X2JlZ2luc2Nh bihyZWwsIGlkeHJlbCwgJnNuYXAsIHNrZXlfYXR0b2ZmLCAwKTsKKwkvKiBTdGFydCBhbiBp bmRleCBzY2FuLgorCSAqCisJICogWFhYIFNob3VsZCB0aGlzIGRvIGluZGV4IHByZWZldGNo aW5nPyBXZSdyZSBsb29raW5nIGZvciBhIHNpbmdsZSB0dXBsZSwKKwkgKiBwcm9iYWJseSB1 c2luZyBhIFBLIC8gVU5JUVVFIGluZGV4LCBzbyBkb2VzIG5vdCBzZWVtIHdvcnRoIGl0LiBJ ZiB3ZQorCSAqIHJlY29uc2lkZXIgdGhpcywgY2FsY2xhdGUgcHJlZmV0Y2hfdGFyZ2V0IGxp a2UgaW4gbm9kZUluZGV4c2Nhbi4KKwkgKi8KKwlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKHJl bCwgaWR4cmVsLCAmc25hcCwgc2tleV9hdHRvZmYsIDAsIDAsIDApOwogCiByZXRyeToKIAlm b3VuZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1 bWVudC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvaW5zdHJ1bWVudC5jCmluZGV4IGVlNzhh NTc0OWQuLjQzNGJlNTlmY2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2lu c3RydW1lbnQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9pbnN0cnVtZW50LmMKQEAg LTIzNSw2ICsyMzUsOCBAQCBCdWZmZXJVc2FnZUFkZChCdWZmZXJVc2FnZSAqZHN0LCBjb25z dCBCdWZmZXJVc2FnZSAqYWRkKQogCWRzdC0+bG9jYWxfYmxrc193cml0dGVuICs9IGFkZC0+ bG9jYWxfYmxrc193cml0dGVuOwogCWRzdC0+dGVtcF9ibGtzX3JlYWQgKz0gYWRkLT50ZW1w X2Jsa3NfcmVhZDsKIAlkc3QtPnRlbXBfYmxrc193cml0dGVuICs9IGFkZC0+dGVtcF9ibGtz X3dyaXR0ZW47CisJZHN0LT5ibGtzX3ByZWZldGNoX3JvdW5kcyArPSBhZGQtPmJsa3NfcHJl ZmV0Y2hfcm91bmRzOworCWRzdC0+Ymxrc19wcmVmZXRjaGVzICs9IGFkZC0+Ymxrc19wcmVm ZXRjaGVzOwogCUlOU1RSX1RJTUVfQUREKGRzdC0+YmxrX3JlYWRfdGltZSwgYWRkLT5ibGtf cmVhZF90aW1lKTsKIAlJTlNUUl9USU1FX0FERChkc3QtPmJsa193cml0ZV90aW1lLCBhZGQt PmJsa193cml0ZV90aW1lKTsKIAlJTlNUUl9USU1FX0FERChkc3QtPnRlbXBfYmxrX3JlYWRf dGltZSwgYWRkLT50ZW1wX2Jsa19yZWFkX3RpbWUpOwpAQCAtMjU3LDYgKzI1OSw4IEBAIEJ1 ZmZlclVzYWdlQWNjdW1EaWZmKEJ1ZmZlclVzYWdlICpkc3QsCiAJZHN0LT5sb2NhbF9ibGtz X3dyaXR0ZW4gKz0gYWRkLT5sb2NhbF9ibGtzX3dyaXR0ZW4gLSBzdWItPmxvY2FsX2Jsa3Nf d3JpdHRlbjsKIAlkc3QtPnRlbXBfYmxrc19yZWFkICs9IGFkZC0+dGVtcF9ibGtzX3JlYWQg LSBzdWItPnRlbXBfYmxrc19yZWFkOwogCWRzdC0+dGVtcF9ibGtzX3dyaXR0ZW4gKz0gYWRk LT50ZW1wX2Jsa3Nfd3JpdHRlbiAtIHN1Yi0+dGVtcF9ibGtzX3dyaXR0ZW47CisJZHN0LT5i bGtzX3ByZWZldGNoZXMgKz0gYWRkLT5ibGtzX3ByZWZldGNoZXMgLSBzdWItPmJsa3NfcHJl ZmV0Y2hlczsKKwlkc3QtPmJsa3NfcHJlZmV0Y2hfcm91bmRzICs9IGFkZC0+Ymxrc19wcmVm ZXRjaF9yb3VuZHMgLSBzdWItPmJsa3NfcHJlZmV0Y2hfcm91bmRzOwogCUlOU1RSX1RJTUVf QUNDVU1fRElGRihkc3QtPmJsa19yZWFkX3RpbWUsCiAJCQkJCQkgIGFkZC0+YmxrX3JlYWRf dGltZSwgc3ViLT5ibGtfcmVhZF90aW1lKTsKIAlJTlNUUl9USU1FX0FDQ1VNX0RJRkYoZHN0 LT5ibGtfd3JpdGVfdGltZSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVJbmRleG9ubHlzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5 c2Nhbi5jCmluZGV4IDBiNDNhOWI5NjkuLjNlY2I4NDcwZDQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYwpAQCAtODcsMTIgKzg3LDIwIEBAIEluZGV4 T25seU5leHQoSW5kZXhPbmx5U2NhblN0YXRlICpub2RlKQogCQkgKiBXZSByZWFjaCBoZXJl IGlmIHRoZSBpbmRleCBvbmx5IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQog CQkgKiBzZXJpYWxseSBleGVjdXRpbmcgYW4gaW5kZXggb25seSBzY2FuIHRoYXQgd2FzIHBs YW5uZWQgdG8gYmUKIAkJICogcGFyYWxsZWwuCisJCSAqCisJCSAqIFhYWCBNYXliZSB3ZSBz aG91bGQgZW5hYmxlIHByZWZldGNoaW5nLCBidXQgcHJlZmV0Y2ggb25seSBwYWdlcyB0aGF0 CisJCSAqIGFyZSBub3QgYWxsLXZpc2libGUgKGJ1dCBjaGVja2luZyB0aGF0IGZyb20gdGhl IGluZGV4IGNvZGUgc2VlbXMgbGlrZQorCQkgKiBhIHZpb2xhdGlvbiBvZiBsYXllcmluZyBl dGMpLgorCQkgKgorCQkgKiBYWFggVGhpcyBtaWdodCBsZWFkIHRvIElPUyBiZWluZyBzbG93 ZXIgdGhhbiBwbGFpbiBpbmRleCBzY2FuLCBpZiB0aGUKKwkJICogdGFibGUgaGFzIGEgbG90 IG9mIHBhZ2VzIHRoYXQgbmVlZCByZWNoZWNrLgogCQkgKi8KIAkJc2NhbmRlc2MgPSBpbmRl eF9iZWdpbnNjYW4obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCQkgICBu b2RlLT5pb3NzX1JlbGF0aW9uRGVzYywKIAkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hv dCwKIAkJCQkJCQkJICAgbm9kZS0+aW9zc19OdW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9k ZS0+aW9zc19OdW1PcmRlckJ5S2V5cyk7CisJCQkJCQkJCSAgIG5vZGUtPmlvc3NfTnVtT3Jk ZXJCeUtleXMsCisJCQkJCQkJCSAgIDAsIDApOwkvKiBubyBpbmRleCBwcmVmZXRjaCBmb3Ig SU9TICovCiAKIAkJbm9kZS0+aW9zc19TY2FuRGVzYyA9IHNjYW5kZXNjOwogCkBAIC02NzQs NyArNjgyLDggQEAgRXhlY0luZGV4T25seVNjYW5Jbml0aWFsaXplRFNNKEluZGV4T25seVNj YW5TdGF0ZSAqbm9kZSwKIAkJCQkJCQkJIG5vZGUtPmlvc3NfUmVsYXRpb25EZXNjLAogCQkJ CQkJCQkgbm9kZS0+aW9zc19OdW1TY2FuS2V5cywKIAkJCQkJCQkJIG5vZGUtPmlvc3NfTnVt T3JkZXJCeUtleXMsCi0JCQkJCQkJCSBwaXNjYW4pOworCQkJCQkJCQkgcGlzY2FuLAorCQkJ CQkJCQkgMCwgMCk7CS8qIG5vIGluZGV4IHByZWZldGNoIGZvciBJT1MgKi8KIAlub2RlLT5p b3NzX1NjYW5EZXNjLT54c193YW50X2l0dXAgPSB0cnVlOwogCW5vZGUtPmlvc3NfVk1CdWZm ZXIgPSBJbnZhbGlkQnVmZmVyOwogCkBAIC03MTksNyArNzI4LDggQEAgRXhlY0luZGV4T25s eVNjYW5Jbml0aWFsaXplV29ya2VyKEluZGV4T25seVNjYW5TdGF0ZSAqbm9kZSwKIAkJCQkJ CQkJIG5vZGUtPmlvc3NfUmVsYXRpb25EZXNjLAogCQkJCQkJCQkgbm9kZS0+aW9zc19OdW1T Y2FuS2V5cywKIAkJCQkJCQkJIG5vZGUtPmlvc3NfTnVtT3JkZXJCeUtleXMsCi0JCQkJCQkJ CSBwaXNjYW4pOworCQkJCQkJCQkgcGlzY2FuLAorCQkJCQkJCQkgMCwgMCk7CS8qIG5vIGlu ZGV4IHByZWZldGNoIGZvciBJT1MgKi8KIAlub2RlLT5pb3NzX1NjYW5EZXNjLT54c193YW50 X2l0dXAgPSB0cnVlOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4u YwppbmRleCA0NTQwYzc3ODFkLi43MWFlNmE0N2NlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUluZGV4c2Nhbi5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAidXRpbHMvbHN5 c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGls cy9yZWwuaCIKKyNpbmNsdWRlICJ1dGlscy9zcGNjYWNoZS5oIgogCiAvKgogICogV2hlbiBh biBvcmRlcmluZyBvcGVyYXRvciBpcyB1c2VkLCB0dXBsZXMgZmV0Y2hlZCBmcm9tIHRoZSBp bmRleCB0aGF0CkBAIC04NSw2ICs4Niw3IEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAq bm9kZSkKIAlTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbjsKIAlJbmRleFNjYW5EZXNjIHNjYW5k ZXNjOwogCVR1cGxlVGFibGVTbG90ICpzbG90OworCVJlbGF0aW9uIGhlYXBSZWwgPSBub2Rl LT5zcy5zc19jdXJyZW50UmVsYXRpb247CiAKIAkvKgogCSAqIGV4dHJhY3QgbmVjZXNzYXJ5 IGluZm9ybWF0aW9uIGZyb20gaW5kZXggc2NhbiBub2RlCkBAIC0xMDMsNiArMTA1LDIyIEBA IEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAogCWlmIChzY2FuZGVzYyA9PSBO VUxMKQogCXsKKwkJaW50CXByZWZldGNoX3RhcmdldDsKKwkJaW50CXByZWZldGNoX3Jlc2V0 OworCisJCS8qCisJCSAqIERldGVybWluZSBudW1iZXIgb2YgaGVhcCBwYWdlcyB0byBwcmVm ZXRjaCBmb3IgdGhpcyBpbmRleC4gVGhpcyBpcworCQkgKiBlc3NlbnRpYWxseSBqdXN0IGVm ZmVjdGl2ZV9pb19jb25jdXJyZW5jeSBmb3IgdGhlIHRhYmxlIChvciB0aGUKKwkJICogdGFi bGVzcGFjZSBpdCdzIGluKS4KKwkJICoKKwkJICogWFhYIFNob3VsZCB0aGlzIGFsc28gbG9v ayBhdCBwbGFuLnBsYW5fcm93cyBhbmQgbWF5YmUgY2FwIHRoZSB0YXJnZXQKKwkJICogdG8g dGhhdD8gUG9pbnRsZXNzIHRvIHByZWZldGNoIG1vcmUgdGhhbiB3ZSBleHBlY3QgdG8gdXNl LiBPciBtYXliZQorCQkgKiBqdXN0IHJlc2V0IHRvIHRoYXQgdmFsdWUgZHVyaW5nIHByZWZl dGNoaW5nLCBhZnRlciByZWFkaW5nIHRoZSBuZXh0CisJCSAqIGluZGV4IHBhZ2UgKG9yIHJh dGhlciBhZnRlciByZXNjYW4pPworCQkgKi8KKwkJcHJlZmV0Y2hfdGFyZ2V0ID0gZ2V0X3Rh Ymxlc3BhY2VfaW9fY29uY3VycmVuY3koaGVhcFJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNl KTsKKwkJcHJlZmV0Y2hfcmVzZXQgPSBNaW4ocHJlZmV0Y2hfdGFyZ2V0LCBub2RlLT5zcy5w cy5wbGFuLT5wbGFuX3Jvd3MpOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYgdGhl IGluZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxs eSBleGVjdXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFs bGVsLgpAQCAtMTExLDcgKzEyOSw5IEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9k ZSkKIAkJCQkJCQkJICAgbm9kZS0+aXNzX1JlbGF0aW9uRGVzYywKIAkJCQkJCQkJICAgZXN0 YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkJICAgbm9kZS0+aXNzX051bVNjYW5LZXlzLAot CQkJCQkJCQkgICBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMpOworCQkJCQkJCQkgICBub2Rl LT5pc3NfTnVtT3JkZXJCeUtleXMsCisJCQkJCQkJCSAgIHByZWZldGNoX3RhcmdldCwKKwkJ CQkJCQkJICAgcHJlZmV0Y2hfcmVzZXQpOwogCiAJCW5vZGUtPmlzc19TY2FuRGVzYyA9IHNj YW5kZXNjOwogCkBAIC0xOTgsNiArMjE4LDIzIEBAIEluZGV4TmV4dFdpdGhSZW9yZGVyKElu ZGV4U2NhblN0YXRlICpub2RlKQogCiAJaWYgKHNjYW5kZXNjID09IE5VTEwpCiAJeworCQlS ZWxhdGlvbiBoZWFwUmVsID0gbm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uOworCQlpbnQJ cHJlZmV0Y2hfdGFyZ2V0OworCQlpbnQJcHJlZmV0Y2hfcmVzZXQ7CisKKwkJLyoKKwkJICog RGV0ZXJtaW5lIG51bWJlciBvZiBoZWFwIHBhZ2VzIHRvIHByZWZldGNoIGZvciB0aGlzIGlu ZGV4LiBUaGlzIGlzCisJCSAqIGVzc2VudGlhbGx5IGp1c3QgZWZmZWN0aXZlX2lvX2NvbmN1 cnJlbmN5IGZvciB0aGUgdGFibGUgKG9yIHRoZQorCQkgKiB0YWJsZXNwYWNlIGl0J3MgaW4p LgorCQkgKgorCQkgKiBYWFggU2hvdWxkIHRoaXMgYWxzbyBsb29rIGF0IHBsYW4ucGxhbl9y b3dzIGFuZCBtYXliZSBjYXAgdGhlIHRhcmdldAorCQkgKiB0byB0aGF0PyBQb2ludGxlc3Mg dG8gcHJlZmV0Y2ggbW9yZSB0aGFuIHdlIGV4cGVjdCB0byB1c2UuIE9yIG1heWJlCisJCSAq IGp1c3QgcmVzZXQgdG8gdGhhdCB2YWx1ZSBkdXJpbmcgcHJlZmV0Y2hpbmcsIGFmdGVyIHJl YWRpbmcgdGhlIG5leHQKKwkJICogaW5kZXggcGFnZSAob3IgcmF0aGVyIGFmdGVyIHJlc2Nh bik/CisJCSAqLworCQlwcmVmZXRjaF90YXJnZXQgPSBnZXRfdGFibGVzcGFjZV9pb19jb25j dXJyZW5jeShoZWFwUmVsLT5yZF9yZWwtPnJlbHRhYmxlc3BhY2UpOworCQlwcmVmZXRjaF9y ZXNldCA9IE1pbihwcmVmZXRjaF90YXJnZXQsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fcm93 cyk7CisKIAkJLyoKIAkJICogV2UgcmVhY2ggaGVyZSBpZiB0aGUgaW5kZXggc2NhbiBpcyBu b3QgcGFyYWxsZWwsIG9yIGlmIHdlJ3JlCiAJCSAqIHNlcmlhbGx5IGV4ZWN1dGluZyBhbiBp bmRleCBzY2FuIHRoYXQgd2FzIHBsYW5uZWQgdG8gYmUgcGFyYWxsZWwuCkBAIC0yMDYsNyAr MjQzLDkgQEAgSW5kZXhOZXh0V2l0aFJlb3JkZXIoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAJ CQkJCQkJCSAgIG5vZGUtPmlzc19SZWxhdGlvbkRlc2MsCiAJCQkJCQkJCSAgIGVzdGF0ZS0+ ZXNfc25hcHNob3QsCiAJCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKLQkJCQkJ CQkJICAgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzKTsKKwkJCQkJCQkJICAgbm9kZS0+aXNz X051bU9yZGVyQnlLZXlzLAorCQkJCQkJCQkgICBwcmVmZXRjaF90YXJnZXQsCisJCQkJCQkJ CSAgIHByZWZldGNoX3Jlc2V0KTsKIAogCQlub2RlLT5pc3NfU2NhbkRlc2MgPSBzY2FuZGVz YzsKIApAQCAtMTY3OCw2ICsxNzE3LDIxIEBAIEV4ZWNJbmRleFNjYW5Jbml0aWFsaXplRFNN KEluZGV4U2NhblN0YXRlICpub2RlLAogewogCUVTdGF0ZQkgICAqZXN0YXRlID0gbm9kZS0+ c3MucHMuc3RhdGU7CiAJUGFyYWxsZWxJbmRleFNjYW5EZXNjIHBpc2NhbjsKKwlSZWxhdGlv bgloZWFwUmVsOworCWludAkJCXByZWZldGNoX3RhcmdldDsKKwlpbnQJCQlwcmVmZXRjaF9y ZXNldDsKKworCS8qCisJICogRGV0ZXJtaW5lIG51bWJlciBvZiBoZWFwIHBhZ2VzIHRvIHBy ZWZldGNoIGZvciB0aGlzIGluZGV4LiBUaGlzIGlzCisJICogZXNzZW50aWFsbHkganVzdCBl ZmZlY3RpdmVfaW9fY29uY3VycmVuY3kgZm9yIHRoZSB0YWJsZSAob3IgdGhlCisJICogdGFi bGVzcGFjZSBpdCdzIGluKS4KKwkgKgorCSAqIFhYWCBNYXliZSByZWR1Y2UgdGhlIHZhbHVl IHdpdGggcGFyYWxsZWwgd29ya2Vycz8KKwkgKi8KKwloZWFwUmVsID0gbm9kZS0+c3Muc3Nf Y3VycmVudFJlbGF0aW9uOworCisJcHJlZmV0Y2hfdGFyZ2V0ID0gZ2V0X3RhYmxlc3BhY2Vf aW9fY29uY3VycmVuY3koaGVhcFJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlKTsKKwlwcmVm ZXRjaF9yZXNldCA9IE1pbihwcmVmZXRjaF90YXJnZXQsIG5vZGUtPnNzLnBzLnBsYW4tPnBs YW5fcm93cyk7CiAKIAlwaXNjYW4gPSBzaG1fdG9jX2FsbG9jYXRlKHBjeHQtPnRvYywgbm9k ZS0+aXNzX1BzY2FuTGVuKTsKIAlpbmRleF9wYXJhbGxlbHNjYW5faW5pdGlhbGl6ZShub2Rl LT5zcy5zc19jdXJyZW50UmVsYXRpb24sCkBAIC0xNjkwLDcgKzE3NDQsOSBAQCBFeGVjSW5k ZXhTY2FuSW5pdGlhbGl6ZURTTShJbmRleFNjYW5TdGF0ZSAqbm9kZSwKIAkJCQkJCQkJIG5v ZGUtPmlzc19SZWxhdGlvbkRlc2MsCiAJCQkJCQkJCSBub2RlLT5pc3NfTnVtU2NhbktleXMs CiAJCQkJCQkJCSBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMsCi0JCQkJCQkJCSBwaXNjYW4p OworCQkJCQkJCQkgcGlzY2FuLAorCQkJCQkJCQkgcHJlZmV0Y2hfdGFyZ2V0LAorCQkJCQkJ CQkgcHJlZmV0Y2hfcmVzZXQpOwogCiAJLyoKIAkgKiBJZiBubyBydW4tdGltZSBrZXlzIHRv IGNhbGN1bGF0ZSBvciB0aGV5IGFyZSByZWFkeSwgZ28gYWhlYWQgYW5kIHBhc3MKQEAgLTE3 MjYsNiArMTc4MiwxNCBAQCBFeGVjSW5kZXhTY2FuSW5pdGlhbGl6ZVdvcmtlcihJbmRleFNj YW5TdGF0ZSAqbm9kZSwKIAkJCQkJCQkgIFBhcmFsbGVsV29ya2VyQ29udGV4dCAqcHdjeHQp CiB7CiAJUGFyYWxsZWxJbmRleFNjYW5EZXNjIHBpc2NhbjsKKwlSZWxhdGlvbgloZWFwUmVs OworCWludAkJCXByZWZldGNoX3RhcmdldDsKKwlpbnQJCQlwcmVmZXRjaF9yZXNldDsKKwor CWhlYXBSZWwgPSBub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb247CisKKwlwcmVmZXRjaF90 YXJnZXQgPSBnZXRfdGFibGVzcGFjZV9pb19jb25jdXJyZW5jeShoZWFwUmVsLT5yZF9yZWwt PnJlbHRhYmxlc3BhY2UpOworCXByZWZldGNoX3Jlc2V0ID0gTWluKHByZWZldGNoX3Rhcmdl dCwgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9yb3dzKTsKIAogCXBpc2NhbiA9IHNobV90b2Nf bG9va3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFs c2UpOwogCW5vZGUtPmlzc19TY2FuRGVzYyA9CkBAIC0xNzMzLDcgKzE3OTcsOSBAQCBFeGVj SW5kZXhTY2FuSW5pdGlhbGl6ZVdvcmtlcihJbmRleFNjYW5TdGF0ZSAqbm9kZSwKIAkJCQkJ CQkJIG5vZGUtPmlzc19SZWxhdGlvbkRlc2MsCiAJCQkJCQkJCSBub2RlLT5pc3NfTnVtU2Nh bktleXMsCiAJCQkJCQkJCSBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMsCi0JCQkJCQkJCSBw aXNjYW4pOworCQkJCQkJCQkgcGlzY2FuLAorCQkJCQkJCQkgcHJlZmV0Y2hfdGFyZ2V0LAor CQkJCQkJCQkgcHJlZmV0Y2hfcmVzZXQpOwogCiAJLyoKIAkgKiBJZiBubyBydW4tdGltZSBr ZXlzIHRvIGNhbGN1bGF0ZSBvciB0aGV5IGFyZSByZWFkeSwgZ28gYWhlYWQgYW5kIHBhc3MK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggZDI3ZWYyOTg1ZC4uZDY1 NTc1ZmQxMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTExMzEs NiArMTEzMSw4IEBAIENyZWF0ZVJlcGxpY2F0aW9uU2xvdChDcmVhdGVSZXBsaWNhdGlvblNs b3RDbWQgKmNtZCkKIAkJCW5lZWRfZnVsbF9zbmFwc2hvdCA9IHRydWU7CiAJCX0KIAorCQll bG9nKExPRywgInNsb3QgPSAlcyAgbmVlZF9mdWxsX3NuYXBzaG90ID0gJWQiLCBjbWQtPnNs b3RuYW1lLCBuZWVkX2Z1bGxfc25hcHNob3QpOworCiAJCWN0eCA9IENyZWF0ZUluaXREZWNv ZGluZ0NvbnRleHQoY21kLT5wbHVnaW4sIE5JTCwgbmVlZF9mdWxsX3NuYXBzaG90LAogCQkJ CQkJCQkJCUludmFsaWRYTG9nUmVjUHRyLAogCQkJCQkJCQkJCVhMX1JPVVRJTkUoLnBhZ2Vf cmVhZCA9IGxvZ2ljYWxfcmVhZF94bG9nX3BhZ2UsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvc2VsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5j cy5jCmluZGV4IGM0ZmNkMDA3NmUuLjBiMDJiNjI2NWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9z ZWxmdW5jcy5jCkBAIC02MjE4LDcgKzYyMTgsNyBAQCBnZXRfYWN0dWFsX3ZhcmlhYmxlX2Vu ZHBvaW50KFJlbGF0aW9uIGhlYXBSZWwsCiAKIAlpbmRleF9zY2FuID0gaW5kZXhfYmVnaW5z Y2FuKGhlYXBSZWwsIGluZGV4UmVsLAogCQkJCQkJCQkgJlNuYXBzaG90Tm9uVmFjdXVtYWJs ZSwKLQkJCQkJCQkJIDEsIDApOworCQkJCQkJCQkgMSwgMCwgMCwgMCk7CS8qIFhYWCBtYXli ZSBkbyBwcmVmZXRjaD8gKi8KIAkvKiBTZXQgaXQgdXAgZm9yIGluZGV4LW9ubHkgc2NhbiAq LwogCWluZGV4X3NjYW4tPnhzX3dhbnRfaXR1cCA9IHRydWU7CiAJaW5kZXhfcmVzY2FuKGlu ZGV4X3NjYW4sIHNjYW5rZXlzLCAxLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5kZXgg YTMwODc5NTY2NS4uZjNlZmZmYzRhOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L2dlbmFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKQEAgLTE3LDYgKzE3 LDcgQEAKICNpbmNsdWRlICJhY2Nlc3Mvc2Rpci5oIgogI2luY2x1ZGUgImFjY2Vzcy9za2V5 LmgiCiAjaW5jbHVkZSAibm9kZXMvdGlkYml0bWFwLmgiCisjaW5jbHVkZSAic3RvcmFnZS9i dWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xvY2tkZWZzLmgiCiAjaW5jbHVkZSAidXRp bHMvcmVsY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwc2hvdC5oIgpAQCAtMTUyLDcg KzE1Myw5IEBAIGV4dGVybiBib29sIGluZGV4X2luc2VydChSZWxhdGlvbiBpbmRleFJlbGF0 aW9uLAogZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5zY2FuKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAkJCQkJCQkJCSBSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQkJCQkJ CQkJIFNuYXBzaG90IHNuYXBzaG90LAotCQkJCQkJCQkJIGludCBua2V5cywgaW50IG5vcmRl cmJ5cyk7CisJCQkJCQkJCQkgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAorCQkJCQkJCQkJ IGludCBwcmVmZXRjaF90YXJnZXQsCisJCQkJCQkJCQkgaW50IHByZWZldGNoX3Jlc2V0KTsK IGV4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2Nhbl9iaXRtYXAoUmVsYXRpb24g aW5kZXhSZWxhdGlvbiwKIAkJCQkJCQkJCQkJU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJ CQkJCWludCBua2V5cyk7CkBAIC0xNjksNyArMTcyLDkgQEAgZXh0ZXJuIHZvaWQgaW5kZXhf cGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogZXh0ZXJu IHZvaWQgaW5kZXhfcGFyYWxsZWxyZXNjYW4oSW5kZXhTY2FuRGVzYyBzY2FuKTsKIGV4dGVy biBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBoZWFw cmVsLAogCQkJCQkJCQkJCQkgIFJlbGF0aW9uIGluZGV4cmVsLCBpbnQgbmtleXMsIGludCBu b3JkZXJieXMsCi0JCQkJCQkJCQkJCSAgUGFyYWxsZWxJbmRleFNjYW5EZXNjIHBzY2FuKTsK KwkJCQkJCQkJCQkJICBQYXJhbGxlbEluZGV4U2NhbkRlc2MgcHNjYW4sCisJCQkJCQkJCQkJ CSAgaW50IHByZWZldGNoX3RhcmdldCwKKwkJCQkJCQkJCQkJICBpbnQgcHJlZmV0Y2hfcmVz ZXQpOwogZXh0ZXJuIEl0ZW1Qb2ludGVyIGluZGV4X2dldG5leHRfdGlkKEluZGV4U2NhbkRl c2Mgc2NhbiwKIAkJCQkJCQkJCSBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbik7CiBzdHJ1Y3Qg VHVwbGVUYWJsZVNsb3Q7CkBAIC0yMzAsNCArMjM1LDEwOCBAQCBleHRlcm4gSGVhcFR1cGxl IHN5c3RhYmxlX2dldG5leHRfb3JkZXJlZChTeXNTY2FuRGVzYyBzeXNzY2FuLAogCQkJCQkJ CQkJCSAgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24pOwogZXh0ZXJuIHZvaWQgc3lzdGFibGVf ZW5kc2Nhbl9vcmRlcmVkKFN5c1NjYW5EZXNjIHN5c3NjYW4pOwogCisvKgorICogWFhYIG5v dCBzdXJlIGl0J3MgdGhlIHJpZ2h0IHBsYWNlIHRvIGRlZmluZSB0aGVzZSBjYWxsYmFja3Mg ZXRjLgorICovCit0eXBlZGVmIHZvaWQgKCpwcmVmZXRjaGVyX2dldHJhbmdlX2Z1bmN0aW9u KSAoSW5kZXhTY2FuRGVzYyBzY2FuZGVzYywKKwkJCQkJCQkJCQkJICBTY2FuRGlyZWN0aW9u IGRpcmVjdGlvbiwKKwkJCQkJCQkJCQkJICBpbnQgKnN0YXJ0LCBpbnQgKmVuZCwKKwkJCQkJ CQkJCQkJICBib29sICpyZXNldCk7CisKK3R5cGVkZWYgQmxvY2tOdW1iZXIgKCpwcmVmZXRj aGVyX2dldGJsb2NrX2Z1bmN0aW9uKSAoSW5kZXhTY2FuRGVzYyBzY2FuZGVzYywKKwkJCQkJ CQkJCQkJCQkgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sCisJCQkJCQkJCQkJCQkJIGludCBp bmRleCk7CisKKy8qCisgKiBDYWNoZSBvZiByZWNlbnRseSBwcmVmZXRjaGVkIGJsb2Nrcywg b3JnYW5pemVkIGFzIGEgaGFzaCB0YWJsZSBvZgorICogc21hbGwgTFJVIGNhY2hlcy4gRG9l c24ndCBuZWVkIHRvIGJlIHBlcmZlY3RseSBhY2N1cmF0ZSwgYnV0IHdlCisgKiBhaW0gdG8g bWFrZSBmYWxzZSBwb3NpdGl2ZXMvbmVnYXRpdmVzIHJlYXNvbmFibHkgbG93LgorICovCit0 eXBlZGVmIHN0cnVjdCBQcmVmZXRjaENhY2hlRW50cnkgeworCUJsb2NrTnVtYmVyCQlibG9j azsKKwl1aW50NjQJCQlyZXF1ZXN0OworfSBQcmVmZXRjaENhY2hlRW50cnk7CisKKy8qCisg KiBTaXplIG9mIHRoZSBjYWNoZSBvZiByZWNlbnRseSBwcmVmZXRjaGVkIGJsb2NrcyAtIHNo b3VsZG4ndCBiZSB0b28KKyAqIHNtYWxsIG9yIHRvbyBsYXJnZS4gMTAyNCBzZWVtcyBhYm91 dCByaWdodCwgaXQgY292ZXJzIH44TUIgb2YgZGF0YS4KKyAqIEl0J3Mgc29tZXdoYXQgYXJi aXRyYXJ5LCB0aGVyZSdzIG5vIHBhcnRpY3VsYXIgZm9ybXVsYSBzYXlpbmcgaXQKKyAqIHNo b3VsZCBub3QgYmUgaGlnaGVyL2xvd2VyLgorICoKKyAqIFRoZSBjYWNoZSBpcyBzdHJ1Y3R1 cmVkIGFzIGFuIGFycmF5IG9mIHNtYWxsIExSVSBjYWNoZXMsIHNvIHRoZSB0b3RhbAorICog c2l6ZSBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIExSVSBzaXplLiBUaGUgTFJVIHNob3Vs ZCBiZSB0aW55IHRvCisgKiBrZWVwIGxpbmVhciBzZWFyY2ggY2hlYXAgZW5vdWdoLgorICoK KyAqIFhYWCBNYXliZSB3ZSBjb3VsZCBjb25zaWRlciBlZmZlY3RpdmVfY2FjaGVfc2l6ZSBv ciBzb21ldGhpbmc/CisgKi8KKyNkZWZpbmUJCVBSRUZFVENIX0xSVV9TSVpFCQk4CisjZGVm aW5lCQlQUkVGRVRDSF9MUlVfQ09VTlQJCTEyOAorI2RlZmluZQkJUFJFRkVUQ0hfQ0FDSEVf U0laRQkJKFBSRUZFVENIX0xSVV9TSVpFICogUFJFRkVUQ0hfTFJVX0NPVU5UKQorCisvKgor ICogVXNlZCB0byBkZXRlY3Qgc2VxdWVudGlhbCBwYXR0ZXJucyAoYW5kIGRpc2FibGUgcHJl ZmV0Y2hpbmcpLgorICovCisjZGVmaW5lCQlQUkVGRVRDSF9RVUVVRV9ISVNUT1JZCQkJOAor I2RlZmluZQkJUFJFRkVUQ0hfU0VRX1BBVFRFUk5fQkxPQ0tTCQk0CisKKwordHlwZWRlZiBz dHJ1Y3QgSW5kZXhQcmVmZXRjaERhdGEKK3sKKwkvKgorCSAqIFhYWCBXZSBuZWVkIHRvIGRp c2FibGUgdGhpcyBpbiBzb21lIGNhc2VzIChlLmcuIHdoZW4gdXNpbmcgaW5kZXgtb25seQor CSAqIHNjYW5zLCB3ZSBkb24ndCB3YW50IHRvIHByZWZldGNoIHBhZ2VzKS4gT3IgbWF5YmUg d2Ugc2hvdWxkIHByZWZldGNoCisJICogb25seSBwYWdlcyB0aGF0IGFyZSBub3QgYWxsLXZp c2libGUsIHRoYXQnZCBiZSBldmVuIGJldHRlci4KKwkgKi8KKwlpbnQJCQlwcmVmZXRjaFRh cmdldDsJLyogaG93IGZhciB3ZSBzaG91bGQgYmUgcHJlZmV0Y2hpbmcgKi8KKwlpbnQJCQlw cmVmZXRjaE1heFRhcmdldDsJLyogbWF4aW11bSBwcmVmZXRjaGluZyBkaXN0YW5jZSAqLwor CWludAkJCXByZWZldGNoUmVzZXQ7CS8qIHJlc2V0IHRvIHRoaXMgZGlzdGFuY2Ugb24gcmVz Y2FuICovCisJYm9vbAkJcHJlZmV0Y2hEb25lOwkvKiBkaWQgd2UgZ2V0IGFsbCBUSURzIGZy b20gdGhlIGluZGV4PyAqLworCisJLyogcnVudGltZSBzdGF0aXN0aWNzICovCisJdWludDY0 CQljb3VudEFsbDsJCS8qIGFsbCBwcmVmZXRjaCByZXF1ZXN0cyAqLworCXVpbnQ2NAkJY291 bnRQcmVmZXRjaDsJLyogYWN0dWFsIHByZWZldGNoZXMgKi8KKwl1aW50NjQJCWNvdW50U2tp cFNlcXVlbnRpYWw7CisJdWludDY0CQljb3VudFNraXBDYWNoZWQ7CisKKwkvKgorCSAqIFF1 ZXVlIG9mIFRJRHMgdG8gcHJlZmV0Y2guCisJICoKKwkgKiBYWFggU2l6aW5nIGZvciBNQVhf SU9fQ09OQ1VSUkVOQ1kgbWF5IGJlIG92ZXJraWxsLCBidXQgaXQgc2VlbXMgc2ltcGxlcgor CSAqIHRoYW4gZHluYW1pY2FsbHkgYWRqdXN0aW5nIGZvciBjdXN0b20gdmFsdWVzLgorCSAq LworCUl0ZW1Qb2ludGVyRGF0YQlxdWV1ZUl0ZW1zW01BWF9JT19DT05DVVJSRU5DWV07CisJ dWludDY0CQkJcXVldWVJbmRleDsJLyogbmV4dCBUSUQgdG8gcHJlZmV0Y2ggKi8KKwl1aW50 NjQJCQlxdWV1ZVN0YXJ0OwkvKiBmaXJzdCB2YWxpZCBUSUQgaW4gcXVldWUgKi8KKwl1aW50 NjQJCQlxdWV1ZUVuZDsJLyogZmlyc3QgaW52YWxpZCAoZW1wdHkpIFRJRCBpbiBxdWV1ZSAq LworCisJLyoKKwkgKiBBIGNvdXBsZSBvZiBsYXN0IHByZWZldGNoZWQgYmxvY2tzLCB1c2Vk IHRvIGNoZWNrIGZvciBjZXJ0YWluIGFjY2VzcworCSAqIHBhdHRlcm4gYW5kIHNraXAgcHJl ZmV0Y2hpbmcgLSBlLmcuIGZvciBzZXF1ZW50aWFsIGFjY2VzcykuCisJICoKKwkgKiBYWFgg U2VwYXJhdGUgZnJvbSB0aGUgbWFpbiBxdWV1ZSwgYmVjYXVzZSB3ZSBvbmx5IHdhbnQgdG8g Y29tcGFyZSB0aGUKKwkgKiBibG9jayBudW1iZXJzLCBub3QgdGhlIHdob2xlIFRJRC4gSW4g c2VxdWVudGlhbCBhY2Nlc3MgaXQncyBsaWtlbHkgd2UKKwkgKiByZWFkIG1hbnkgaXRlbXMg ZnJvbSBlYWNoIHBhZ2UsIGFuZCB3ZSBkb24ndCB3YW50IHRvIGNoZWNrIG1hbnkgaXRlbXMK KwkgKiAoYXMgdGhhdCBpcyBtdWNoIG1vcmUgZXhwZW5zaXZlKS4KKwkgKi8KKwlCbG9ja051 bWJlcgkJYmxvY2tJdGVtc1tQUkVGRVRDSF9RVUVVRV9ISVNUT1JZXTsKKwl1aW50NjQJCQli bG9ja0luZGV4OwkvKiBpbmRleCBpbiB0aGUgYmxvY2sgKHBvaW50cyB0byB0aGUgZmlyc3QK KwkJCQkJCQkJICogZW1wdHkgZW50cnkpKi8KKworCS8qCisJICogQ2FjaGUgb2YgcmVjZW50 bHkgcHJlZmV0Y2hlZCBibG9ja3MsIG9yZ2FuaXplZCBhcyBhIGhhc2ggdGFibGUgb2YKKwkg KiBzbWFsbCBMUlUgY2FjaGVzLgorCSAqLworCXVpbnQ2NAkJCQlwcmVmZXRjaFJlcU51bWJl cjsKKwlQcmVmZXRjaENhY2hlRW50cnkJcHJlZmV0Y2hDYWNoZVtQUkVGRVRDSF9DQUNIRV9T SVpFXTsKKworfSBJbmRleFByZWZldGNoRGF0YTsKKworI2RlZmluZSBQUkVGRVRDSF9RVUVV RV9JTkRFWChhKQkoKGEpICUgKE1BWF9JT19DT05DVVJSRU5DWSkpCisjZGVmaW5lIFBSRUZF VENIX1FVRVVFX0VNUFRZKHApCSgocCktPnF1ZXVlRW5kID09IChwKS0+cXVldWVJbmRleCkK KyNkZWZpbmUgUFJFRkVUQ0hfRU5BQkxFRChwKQkJKChwKSAmJiAoKHApLT5wcmVmZXRjaE1h eFRhcmdldCA+IDApKQorI2RlZmluZSBQUkVGRVRDSF9GVUxMKHApCQkoKHApLT5xdWV1ZUVu ZCAtIChwKS0+cXVldWVJbmRleCA9PSAocCktPnByZWZldGNoVGFyZ2V0KQorI2RlZmluZSBQ UkVGRVRDSF9ET05FKHApCQkoKHApICYmICgocCktPnByZWZldGNoRG9uZSAmJiBQUkVGRVRD SF9RVUVVRV9FTVBUWShwKSkpCisjZGVmaW5lIFBSRUZFVENIX0FDVElWRShwKQkJKFBSRUZF VENIX0VOQUJMRUQocCkgJiYgIShwKS0+cHJlZmV0Y2hEb25lKQorI2RlZmluZSBQUkVGRVRD SF9CTE9DS19JTkRFWCh2KQkoKHYpICUgUFJFRkVUQ0hfUVVFVUVfSElTVE9SWSkKKwogI2Vu ZGlmCQkJCQkJCS8qIEdFTkFNX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9yZWxzY2FuLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCmluZGV4IGQwMzM2 MGVhYzAuLmMxMTlmZTU5N2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxz Y2FuLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtMTA2LDYgKzEw NiwxMiBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEZldGNoVGFibGVEYXRhCiAJUmVsYXRpb24J cmVsOwogfSBJbmRleEZldGNoVGFibGVEYXRhOwogCisvKgorICogRm9yd2FyZCBkZWNsYXJh dGlvbiwgZGVmaW5lZCBpbiBnZW5hbS5oLgorICovCit0eXBlZGVmIHN0cnVjdCBJbmRleFBy ZWZldGNoRGF0YSBJbmRleFByZWZldGNoRGF0YTsKK3R5cGVkZWYgc3RydWN0IEluZGV4UHJl ZmV0Y2hEYXRhICpJbmRleFByZWZldGNoOworCiAvKgogICogV2UgdXNlIHRoZSBzYW1lIElu ZGV4U2NhbkRlc2NEYXRhIHN0cnVjdHVyZSBmb3IgYm90aCBhbWdldHR1cGxlLWJhc2VkCiAg KiBhbmQgYW1nZXRiaXRtYXAtYmFzZWQgaW5kZXggc2NhbnMuICBTb21lIGZpZWxkcyBhcmUg b25seSByZWxldmFudCBpbgpAQCAtMTYyLDYgKzE2OCw5IEBAIHR5cGVkZWYgc3RydWN0IElu ZGV4U2NhbkRlc2NEYXRhCiAJYm9vbAkgICAqeHNfb3JkZXJieW51bGxzOwogCWJvb2wJCXhz X3JlY2hlY2tvcmRlcmJ5OwogCisJLyogcHJlZmV0Y2hpbmcgc3RhdGUgKG9yIE5VTEwgaWYg ZGlzYWJsZWQpICovCisJSW5kZXhQcmVmZXRjaERhdGEgKnhzX3ByZWZldGNoOworCiAJLyog cGFyYWxsZWwgaW5kZXggc2NhbiBpbmZvcm1hdGlvbiwgaW4gc2hhcmVkIG1lbW9yeSAqLwog CXN0cnVjdCBQYXJhbGxlbEluZGV4U2NhbkRlc2NEYXRhICpwYXJhbGxlbF9zY2FuOwogfQkJ CUluZGV4U2NhbkRlc2NEYXRhOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Iv aW5zdHJ1bWVudC5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvaW5zdHJ1bWVudC5oCmluZGV4 IDg3ZTVlMjE4M2IuLjk3ZGQzYzJjNDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2luc3RydW1lbnQuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9pbnN0cnVtZW50 LmgKQEAgLTMzLDYgKzMzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgQnVmZmVyVXNhZ2UKIAlpbnQ2 NAkJbG9jYWxfYmxrc193cml0dGVuOyAvKiAjIG9mIGxvY2FsIGRpc2sgYmxvY2tzIHdyaXR0 ZW4gKi8KIAlpbnQ2NAkJdGVtcF9ibGtzX3JlYWQ7IC8qICMgb2YgdGVtcCBibG9ja3MgcmVh ZCAqLwogCWludDY0CQl0ZW1wX2Jsa3Nfd3JpdHRlbjsJLyogIyBvZiB0ZW1wIGJsb2NrcyB3 cml0dGVuICovCisJaW50NjQJCWJsa3NfcHJlZmV0Y2hfcm91bmRzOwkvKiAjIG9mIHByZWZl dGNoIHJvdW5kcyAqLworCWludDY0CQlibGtzX3ByZWZldGNoZXM7CS8qICMgb2YgYnVmZmVy cyBwcmVmZXRjaGVkICovCiAJaW5zdHJfdGltZQlibGtfcmVhZF90aW1lOwkvKiB0aW1lIHNw ZW50IHJlYWRpbmcgYmxvY2tzICovCiAJaW5zdHJfdGltZQlibGtfd3JpdGVfdGltZTsgLyog dGltZSBzcGVudCB3cml0aW5nIGJsb2NrcyAqLwogCWluc3RyX3RpbWUJdGVtcF9ibGtfcmVh ZF90aW1lOyAvKiB0aW1lIHNwZW50IHJlYWRpbmcgdGVtcCBibG9ja3MgKi8K --------------5BAecf4Lp6HQUGD90aoPwtkf--