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 1s4RLj-003vyY-OZ for pgsql-hackers@arkaria.postgresql.org; Tue, 07 May 2024 20:23:43 +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 1s4RLh-0053hm-AV for pgsql-hackers@arkaria.postgresql.org; Tue, 07 May 2024 20:23:42 +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 1s4RLg-0053he-UB for pgsql-hackers@lists.postgresql.org; Tue, 07 May 2024 20:23:41 +0000 Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1s4RLe-0023UU-3u for pgsql-hackers@postgresql.org; Tue, 07 May 2024 20:23:40 +0000 Received: by mail-ej1-x632.google.com with SMTP id a640c23a62f3a-a59c448b44aso706619566b.2 for ; Tue, 07 May 2024 13:23:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1715113416; x=1715718216; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Zc+ZM0RxKTLH6JP1C4Ar9y4W744fHgSS6J9fsvnt1Ns=; b=gz+jrXmeDguTWUZAHy8hHr2SAT511CRqtdfzdAezA8qAkQ5OcgwHSJgb8QKLckf2m6 jgpikf/OX56ntJzXdlBU7iqYq/u5ECSg4BykQaxZE+KKrGnthnz062J9q+eG905tMRNI qpQGmJ2AExHyu+zvkPBEgiUhp0YdzktSS1DtWhQky4FYx05ZNHEKshuLm3pm9BmFNwci BHVvBbU6XCiPfrJ4d2a9csWUCiPOyVN4fiOmMvXmD6qvBC3wiRXBwtkT5muA5XEKozqU C6H1z1m4d/eh8fWjB69OCAOyvyuRzeek5+MmLdwCojguY3C4rvRh9vR2jjVW4Ak82Rjl yh8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715113416; x=1715718216; 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=Zc+ZM0RxKTLH6JP1C4Ar9y4W744fHgSS6J9fsvnt1Ns=; b=a6I7WzyVa5TfvK5Oc9wpReW4kh2CSxh2hbI5uCEzTHWELEVsXVv1Ig4WEPVt5rXxus DI6MGAMqD6SfKAJFRvY2ro4rLh27W8OAHbr9B23AQohE36QktCOh9xKF4foV4wmowjKD TM4VJc92syybsi2Og5/pFfwTNtuJF37f+MeGCQz9nGuKrxue2OEEYWfk+8tI6On97iZ4 EKLZMj2iQ53sw3UIrL3ud3LHKFm312WWLyqLkWJ44uwNpPrkGMj1zIevWrDEGiMKJ1w6 Lbh4O7tUOPRi5X0jtdrJsPQBQ+HM/tezThNXG3/5xEHdvK7o50V15Iyi5ucUSafF46Mn nEww== X-Forwarded-Encrypted: i=1; AJvYcCWLEzPmCnWPdNp8hlldJcJw4+YRv+1/9p6zla4joJ8/5CvPxJd46DLoK8mjrLbsr9MvlVUBBCLryt87WBovskjNWDqaIPGZYrP7LA+k X-Gm-Message-State: AOJu0Yyy/yrii1dSJopaU/GPIllmPacILB+v2jNTkLlUohWsN9ZwVGmM pVB+MWPSgbqCh3fYwey11CuEowTmBMJnadLl5cpKMTux3vitZkoEu/wCauWmsEozXGG9fu3L2yX FA2Aif/Q1sVCqguBQ6pfOP27AT5Q= X-Google-Smtp-Source: AGHT+IG4OXk5Em9ejr6/DofUulw57m56l74Mqn3LgX5Gew8pL+DBPWHaYMOJQZeZZ9ZKhxkGdME11bSpz88eUrkr8Bs= X-Received: by 2002:a17:906:730e:b0:a59:9dc5:d654 with SMTP id a640c23a62f3a-a59fb95e2aemr33689466b.46.1715113416317; Tue, 07 May 2024 13:23:36 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Michail Nikolaev Date: Tue, 7 May 2024 22:23:23 +0200 Message-ID: Subject: Re: Revisiting {CREATE INDEX, REINDEX} CONCURRENTLY improvements To: Matthias van de Meent Cc: Melanie Plageman , PostgreSQL Hackers , Andrey Borodin Content-Type: multipart/mixed; boundary="000000000000edfa280617e2f561" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000edfa280617e2f561 Content-Type: multipart/alternative; boundary="000000000000edfa270617e2f55f" --000000000000edfa270617e2f55f Content-Type: text/plain; charset="UTF-8" Hi again! Made an error in `GlobalVisHorizonKindForRel` logic, and it was caught by a new test. Fixed version in attach. > --000000000000edfa270617e2f55f Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi again!

Made an error in `Global= VisHorizonKindForRel` logic, and it was caught by a new test.

Fixed = version in attach.
--000000000000edfa270617e2f55f-- --000000000000edfa280617e2f561 Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0001-WIP-fix-d9d076222f5b-VACUUM-ignore-indexing-opera.patch" Content-Disposition: attachment; filename="v3-0001-WIP-fix-d9d076222f5b-VACUUM-ignore-indexing-opera.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lvwu8cqr0 RnJvbSA5YThlYTM2NmY2ZDJkMTQ0OTc5ZTgyNWM0YWMwYmRkMjkzN2JmN2MxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBua2V5IDxtaWNoYWlsLm5pa29sYWV2QGdtYWlsLmNvbT4KRGF0 ZTogVHVlLCA3IE1heSAyMDI0IDIyOjEwOjU2ICswMjAwClN1YmplY3Q6IFtQQVRDSCB2M10gV0lQ OiBmaXggZDlkMDc2MjIyZjViICJWQUNVVU06IGlnbm9yZSBpbmRleGluZyBvcGVyYXRpb25zIAog d2l0aCBDT05DVVJSRU5UTFkiIHdoaWNoIHdhcyByZXZlcnRlZCBieSBlMjhiYjg4NTE5NjkuCgpJ c3N1ZSB3YXMgY2F1c2VkIGJ5IGFic2VudCBvZiBhbnkgc25hcHNob3QgYWN0dWFsbHkgcHJvdGVj dHMgdGhlIGRhdGEgaW4gcmVsYXRpb24gaW4gdGhlIHJlcXVpcmVkIHRvIGJ1aWxkIGluZGV4IGNv cnJlY3RseS4KCkludHJvZHVjZSBuZXcgdHlwZSBvZiB2aXNpYmlsaXR5IGhvcml6b24gdG8gYmUg dXNlZCBmb3IgcmVsYXRpb24gd2l0aCBjb25jdXJyZW50bHkgYnVpbGQgaW5kZXhlcyAoaW4gdGhl IGNhc2Ugb2YgInNhZmUiIGluZGV4KS4KCk5vdyBgR2xvYmFsVmlzSG9yaXpvbktpbmRGb3JSZWxg IG1heSBkeW5hbWljYWxseSBkZWNpZGUgd2hpY2ggaG9yaXpvbiB0byB1c2VkIGJhc2Ugb2YgdGhl IGRhdGEgYWJvdXQgc2FmZSBpbmRleGVzIGJlaW5nIGJ1aWx0IGNvbmN1cnJlbnRseS4KClRvIHJl ZHVjZSBwZXJmb3JtYW5jZSBpbXBhY3QgY291bnRlciBvZiBjb25jdXJyZW50bHkgYnVpbHQgaW5k ZXhlcyB1cGRhdGVkIGluIHNoYXJlZCBtZW1vcnkuCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jICAgICAgICAgICAgICB8ICAzNiArKysrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2lu ZGV4Y21kcy5jICAgICAgICAgfCAgMjAgKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNp LmMgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5j ICAgICAgfCAgODUgKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2Fj aGUuYyAgICAgICB8ICAxMSArKwogc3JjL2Jpbi9wZ19hbWNoZWNrL3QvMDA2X2NvbmN1cnJlbnRs eS5wbCB8IDE1NSArKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9p bmRleC5oICAgICAgICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS91dGlscy9yZWwuaCAgICAg ICAgICAgICAgICAgIHwgICAxICsKIDggZmlsZXMgY2hhbmdlZCwgMzA5IGluc2VydGlvbnMoKyks IDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jpbi9wZ19hbWNoZWNrL3Qv MDA2X2NvbmN1cnJlbnRseS5wbAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5k ZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCA1YTg1NjhjNTVjLi4zY2Fh MmJhYjEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC05Nyw2ICs5NywxMSBAQCB0eXBlZGVmIHN0cnVj dAogCU9pZAkJCXBlbmRpbmdSZWluZGV4ZWRJbmRleGVzW0ZMRVhJQkxFX0FSUkFZX01FTUJFUl07 CiB9IFNlcmlhbGl6ZWRSZWluZGV4U3RhdGU7CiAKK3R5cGVkZWYgc3RydWN0IHsKKwlwZ19hdG9t aWNfdWludDMyIG51bVNhZmVDb25jdXJyZW50bHlCdWlsdEluZGV4ZXM7Cit9IFNhZmVJQ1NoYXJl ZFN0YXRlOworc3RhdGljIFNhZmVJQ1NoYXJlZFN0YXRlICpTYWZlSUNTdGF0ZVNobWVtOworCiAv KiBub24tZXhwb3J0IGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KIHN0YXRpYyBib29sIHJlbGF0aW9u SGFzUHJpbWFyeUtleShSZWxhdGlvbiByZWwpOwogc3RhdGljIFR1cGxlRGVzYyBDb25zdHJ1Y3RU dXBsZURlc2NyaXB0b3IoUmVsYXRpb24gaGVhcFJlbGF0aW9uLApAQCAtMTc2LDYgKzE4MSwzNyBA QCByZWxhdGlvbkhhc1ByaW1hcnlLZXkoUmVsYXRpb24gcmVsKQogCXJldHVybiByZXN1bHQ7CiB9 CiAKKwordm9pZCBTYWZlSUNTdGF0ZVNobWVtSW5pdCh2b2lkKQoreworCWJvb2wJCWZvdW5kOwor CisJU2FmZUlDU3RhdGVTaG1lbSA9IChTYWZlSUNTaGFyZWRTdGF0ZSAqKQorCQkJU2htZW1Jbml0 U3RydWN0KCJTYWZlIENvbmN1cnJlbnRseSBCdWlsZCBJbmRleGVzIiwKKwkJCQkJCQlzaXplb2Yo U2FmZUlDU2hhcmVkU3RhdGUpLAorCQkJCQkJCSZmb3VuZCk7CisKKwlpZiAoIUlzVW5kZXJQb3N0 bWFzdGVyKQorCXsKKwkJQXNzZXJ0KCFmb3VuZCk7CisJCXBnX2F0b21pY19pbml0X3UzMigmU2Fm ZUlDU3RhdGVTaG1lbS0+bnVtU2FmZUNvbmN1cnJlbnRseUJ1aWx0SW5kZXhlcywgMCk7CisJfSBl bHNlCisJCUFzc2VydChmb3VuZCk7Cit9CisKK3ZvaWQgVXBkYXRlTnVtU2FmZUNvbmN1cnJlbnRs eUJ1aWx0SW5kZXhlcyhib29sIGluY3JlbWVudCkKK3sKKwlpZiAoaW5jcmVtZW50KQorCQlwZ19h dG9taWNfZmV0Y2hfYWRkX3UzMigmU2FmZUlDU3RhdGVTaG1lbS0+bnVtU2FmZUNvbmN1cnJlbnRs eUJ1aWx0SW5kZXhlcywgMSk7CisJZWxzZQorCQlwZ19hdG9taWNfZmV0Y2hfc3ViX3UzMigmU2Fm ZUlDU3RhdGVTaG1lbS0+bnVtU2FmZUNvbmN1cnJlbnRseUJ1aWx0SW5kZXhlcywgMSk7Cit9CisK K2Jvb2wgSXNBbnlTYWZlSW5kZXhCdWlsZHNDb25jdXJyZW50bHkoKQoreworCXJldHVybiBwZ19h dG9taWNfcmVhZF91MzIoJlNhZmVJQ1N0YXRlU2htZW0tPm51bVNhZmVDb25jdXJyZW50bHlCdWls dEluZGV4ZXMpID4gMDsKK30KKwogLyoKICAqIGluZGV4X2NoZWNrX3ByaW1hcnlfa2V5CiAgKgkJ QXBwbHkgc3BlY2lhbCBjaGVja3MgbmVlZGVkIGJlZm9yZSBjcmVhdGluZyBhIFBSSU1BUlkgS0VZ IGluZGV4CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IGQ5MDE2ZWY0ODcuLjY2MzQ1MGJh MjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNjM2LDYgKzE2MzYsOCBAQCBEZWZp bmVJbmRleChPaWQgdGFibGVJZCwKIAkgKiBob2xkIGxvY2sgb24gdGhlIHBhcmVudCB0YWJsZS4g IFRoaXMgbWlnaHQgbmVlZCB0byBjaGFuZ2UgbGF0ZXIuCiAJICovCiAJTG9ja1JlbGF0aW9uSWRG b3JTZXNzaW9uKCZoZWFwcmVsaWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJaWYgKHNh ZmVfaW5kZXggJiYgY29uY3VycmVudCkKKwkJVXBkYXRlTnVtU2FmZUNvbmN1cnJlbnRseUJ1aWx0 SW5kZXhlcyh0cnVlKTsKIAogCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CkBAIC0xODA0LDcgKzE4MDYsMTUgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxl SWQsCiAJICogdG8gcmVwbGFuOyBzbyByZWxjYWNoZSBmbHVzaCBvbiB0aGUgaW5kZXggaXRzZWxm IHdhcyBzdWZmaWNpZW50LikKIAkgKi8KIAlDYWNoZUludmFsaWRhdGVSZWxjYWNoZUJ5UmVsaWQo aGVhcHJlbGlkLnJlbElkKTsKKwkvKiBDb21taXQgaW5kZXggYXMgdmFsaWQgYmVmb3JlIHJlZHVj aW5nIGNvdW50ZXIgb2Ygc2FmZSBjb25jdXJyZW50bHkgYnVpbGQgaW5kZXhlcyAqLworCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCisJQXNzZXJ0KGNvbmN1cnJlbnQpOworCWlmIChzYWZl X2luZGV4KQorCQlVcGRhdGVOdW1TYWZlQ29uY3VycmVudGx5QnVpbHRJbmRleGVzKGZhbHNlKTsK KworCS8qIFN0YXJ0IGEgbmV3IHRyYW5zYWN0aW9uIHRvIGZpbmlzaCBwcm9jZXNzIHByb3Blcmx5 ICovCisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAkvKgogCSAqIExhc3QgdGhpbmcgdG8g ZG8gaXMgcmVsZWFzZSB0aGUgc2Vzc2lvbi1sZXZlbCBsb2NrIG9uIHRoZSBwYXJlbnQgdGFibGUu CiAJICovCkBAIC0zOTAyLDYgKzM5MTIsOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko Y29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQkJ CQkgaW5kZXhSZWwtPnJkX2luZHByZWQgPT0gTklMKTsKIAkJaWR4LT50YWJsZUlkID0gUmVsYXRp b25HZXRSZWxpZChoZWFwUmVsKTsKIAkJaWR4LT5hbUlkID0gaW5kZXhSZWwtPnJkX3JlbC0+cmVs YW07CisJCWlmIChpZHgtPnNhZmUpCisJCQlVcGRhdGVOdW1TYWZlQ29uY3VycmVudGx5QnVpbHRJ bmRleGVzKHRydWUpOwogCiAJCS8qIFRoaXMgZnVuY3Rpb24gc2hvdWxkbid0IGJlIGNhbGxlZCBm b3IgdGVtcG9yYXJ5IHJlbGF0aW9ucy4gKi8KIAkJaWYgKGluZGV4UmVsLT5yZF9yZWwtPnJlbHBl cnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1RFTVApCkBAIC00MzQ1LDYgKzQzNTcsMTQgQEAg UmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQg cmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJVW5sb2NrUmVsYXRpb25JZEZvclNlc3Npb24obG9j a3JlbGlkLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwogCX0KIAorCS8vIG5vdyB3ZSBtYXkg Y2xlYXIgc2FmZSBpbmRleCBidWlsZGluZyBmbGFncworCWZvcmVhY2gobGMsIG5ld0luZGV4SWRz KQorCXsKKwkJUmVpbmRleEluZGV4SW5mbyAqbmV3aWR4ID0gbGZpcnN0KGxjKTsKKwkJaWYgKG5l d2lkeC0+c2FmZSkKKwkJCVVwZGF0ZU51bVNhZmVDb25jdXJyZW50bHlCdWlsdEluZGV4ZXMoZmFs c2UpOworCX0KKwogCS8qIFN0YXJ0IGEgbmV3IHRyYW5zYWN0aW9uIHRvIGZpbmlzaCBwcm9jZXNz IHByb3Blcmx5ICovCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv aXBjaS5jCmluZGV4IDUyMWVkNTQxOGMuLjI2MGE2MzRmMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNp LmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdHdvcGhhc2UuaCIKICNpbmNs dWRlICJhY2Nlc3MveGxvZ3ByZWZldGNoZXIuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY292 ZXJ5LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2Fz eW5jLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCkBAIC0z NTcsNiArMzU4LDcgQEAgQ3JlYXRlT3JBdHRhY2hTaG1lbVN0cnVjdHModm9pZCkKIAlTdGF0c1No bWVtSW5pdCgpOwogCVdhaXRFdmVudEV4dGVuc2lvblNobWVtSW5pdCgpOwogCUluamVjdGlvblBv aW50U2htZW1Jbml0KCk7CisJU2FmZUlDU3RhdGVTaG1lbUluaXQoKTsKIH0KIAogLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggMWE4M2M0MjIwYi4uNDQ2ZGYzNGRhYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKKysrIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRl ICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRpbHMuaCIKICNpbmNsdWRl ICJjYXRhbG9nL2NhdGFsb2cuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19hdXRoaWQuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kYmNvbW1hbmRzLmgi CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC0yMzYsNiArMjM3LDEyIEBAIHR5cGVkZWYgc3Ry dWN0IENvbXB1dGVYaWRIb3Jpem9uc1Jlc3VsdAogCSAqLwogCVRyYW5zYWN0aW9uSWQgZGF0YV9v bGRlc3Rfbm9ucmVtb3ZhYmxlOwogCisJLyoKKwkgKiBPbGRlc3QgeGlkIGZvciB3aGljaCBkZWxl dGVkIHR1cGxlcyBuZWVkIHRvIGJlIHJldGFpbmVkIGluIG5vcm1hbCB1c2VyCisJICogZGVmaW5l ZCB0YWJsZXMgd2l0aCBpbmRleCBidWlsZGluZyBpbiBwcm9ncmVzcyBieSBwcm9jZXNzIHdpdGgg UFJPQ19JTlNBRkVfSUMuCisJICovCisJVHJhbnNhY3Rpb25JZCBkYXRhX3NhZmVfaWNfb2xkZXN0 X25vbnJlbW92YWJsZTsKKwogCS8qCiAJICogT2xkZXN0IHhpZCBmb3Igd2hpY2ggZGVsZXRlZCB0 dXBsZXMgbmVlZCB0byBiZSByZXRhaW5lZCBpbiB0aGlzCiAJICogc2Vzc2lvbidzIHRlbXBvcmFy eSB0YWJsZXMuCkBAIC0yNTEsNiArMjU4LDcgQEAgdHlwZWRlZiBlbnVtIEdsb2JhbFZpc0hvcml6 b25LaW5kCiAJVklTSE9SSVpPTl9TSEFSRUQsCiAJVklTSE9SSVpPTl9DQVRBTE9HLAogCVZJU0hP UklaT05fREFUQSwKKwlWSVNIT1JJWk9OX0RBVEFfU0FGRV9JQywKIAlWSVNIT1JJWk9OX1RFTVAs CiB9IEdsb2JhbFZpc0hvcml6b25LaW5kOwogCkBAIC0yOTcsNiArMzA1LDcgQEAgc3RhdGljIFRy YW5zYWN0aW9uSWQgc3RhbmRieVNuYXBzaG90UGVuZGluZ1htaW47CiBzdGF0aWMgR2xvYmFsVmlz U3RhdGUgR2xvYmFsVmlzU2hhcmVkUmVsczsKIHN0YXRpYyBHbG9iYWxWaXNTdGF0ZSBHbG9iYWxW aXNDYXRhbG9nUmVsczsKIHN0YXRpYyBHbG9iYWxWaXNTdGF0ZSBHbG9iYWxWaXNEYXRhUmVsczsK K3N0YXRpYyBHbG9iYWxWaXNTdGF0ZSBHbG9iYWxWaXNEYXRhU2FmZUljUmVsczsKIHN0YXRpYyBH bG9iYWxWaXNTdGF0ZSBHbG9iYWxWaXNUZW1wUmVsczsKIAogLyoKQEAgLTE3MjcsOSArMTczNiw2 IEBAIENvbXB1dGVYaWRIb3Jpem9ucyhDb21wdXRlWGlkSG9yaXpvbnNSZXN1bHQgKmgpCiAJYm9v bAkJaW5fcmVjb3ZlcnkgPSBSZWNvdmVyeUluUHJvZ3Jlc3MoKTsKIAlUcmFuc2FjdGlvbklkICpv dGhlcl94aWRzID0gUHJvY0dsb2JhbC0+eGlkczsKIAotCS8qIGluZmVycmVkIGFmdGVyIFByb2NB cnJheUxvY2sgaXMgcmVsZWFzZWQgKi8KLQloLT5jYXRhbG9nX29sZGVzdF9ub25yZW1vdmFibGUg PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQogCUxXTG9ja0FjcXVpcmUoUHJvY0FycmF5TG9jaywg TFdfU0hBUkVEKTsKIAogCWgtPmxhdGVzdF9jb21wbGV0ZWQgPSBUcmFuc2FtVmFyaWFibGVzLT5s YXRlc3RDb21wbGV0ZWRYaWQ7CkBAIC0xNzQ5LDcgKzE3NTUsOSBAQCBDb21wdXRlWGlkSG9yaXpv bnMoQ29tcHV0ZVhpZEhvcml6b25zUmVzdWx0ICpoKQogCiAJCWgtPm9sZGVzdF9jb25zaWRlcmVk X3J1bm5pbmcgPSBpbml0aWFsOwogCQloLT5zaGFyZWRfb2xkZXN0X25vbnJlbW92YWJsZSA9IGlu aXRpYWw7CisJCWgtPmNhdGFsb2dfb2xkZXN0X25vbnJlbW92YWJsZSA9IGluaXRpYWw7CiAJCWgt PmRhdGFfb2xkZXN0X25vbnJlbW92YWJsZSA9IGluaXRpYWw7CisJCWgtPmRhdGFfc2FmZV9pY19v bGRlc3Rfbm9ucmVtb3ZhYmxlID0gaW5pdGlhbDsKIAogCQkvKgogCQkgKiBPbmx5IG1vZGlmaWNh dGlvbnMgbWFkZSBieSB0aGlzIGJhY2tlbmQgYWZmZWN0IHRoZSBob3Jpem9uIGZvcgpAQCAtMTg0 NywxMSArMTg1NSwyOCBAQCBDb21wdXRlWGlkSG9yaXpvbnMoQ29tcHV0ZVhpZEhvcml6b25zUmVz dWx0ICpoKQogCQkJKHN0YXR1c0ZsYWdzICYgUFJPQ19BRkZFQ1RTX0FMTF9IT1JJWk9OUykgfHwK IAkJCWluX3JlY292ZXJ5KQogCQl7Ci0JCQloLT5kYXRhX29sZGVzdF9ub25yZW1vdmFibGUgPQot CQkJCVRyYW5zYWN0aW9uSWRPbGRlcihoLT5kYXRhX29sZGVzdF9ub25yZW1vdmFibGUsIHhtaW4p OworCQkJaC0+ZGF0YV9zYWZlX2ljX29sZGVzdF9ub25yZW1vdmFibGUgPQorCQkJCQlUcmFuc2Fj dGlvbklkT2xkZXIoaC0+ZGF0YV9zYWZlX2ljX29sZGVzdF9ub25yZW1vdmFibGUsIHhtaW4pOwor CisJCQlpZiAoIShzdGF0dXNGbGFncyAmIFBST0NfSU5fU0FGRV9JQykpCisJCQkJaC0+ZGF0YV9v bGRlc3Rfbm9ucmVtb3ZhYmxlID0KKwkJCQkJVHJhbnNhY3Rpb25JZE9sZGVyKGgtPmRhdGFfb2xk ZXN0X25vbnJlbW92YWJsZSwgeG1pbik7CisKKwkJCS8qIENhdGFsb2cgdGFibGVzIG5lZWQgdG8g Y29uc2lkZXIgYWxsIGJhY2tlbmRzIGluIHRoaXMgZGIgKi8KKwkJCWgtPmNhdGFsb2dfb2xkZXN0 X25vbnJlbW92YWJsZSA9CisJCQkJVHJhbnNhY3Rpb25JZE9sZGVyKGgtPmNhdGFsb2dfb2xkZXN0 X25vbnJlbW92YWJsZSwgeG1pbik7CisKIAkJfQogCX0KIAorCS8qIGNhdGFsb2cgaG9yaXpvbiBz aG91bGQgbmV2ZXIgYmUgbGF0ZXIgdGhhbiBkYXRhICovCisJQXNzZXJ0KFRyYW5zYWN0aW9uSWRQ cmVjZWRlc09yRXF1YWxzKGgtPmNhdGFsb2dfb2xkZXN0X25vbnJlbW92YWJsZSwKKwkJCQkJCQkJ CQkgaC0+ZGF0YV9vbGRlc3Rfbm9ucmVtb3ZhYmxlKSk7CisKKwkvKiBkYXRhIGhvcml6b24gc2hv dWxkIG5ldmVyIGJlIGxhdGVyIHRoYW4gc2FmZSBpbmRleCBidWlsZGluZyBob3Jpem9uICovCisJ QXNzZXJ0KFRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKGgtPmRhdGFfc2FmZV9pY19vbGRl c3Rfbm9ucmVtb3ZhYmxlLAorCQkJCQkJCQkJCSBoLT5kYXRhX29sZGVzdF9ub25yZW1vdmFibGUp KTsKKwogCS8qCiAJICogSWYgaW4gcmVjb3ZlcnkgZmV0Y2ggb2xkZXN0IHhpZCBpbiBLbm93bkFz c2lnbmVkWGlkcywgd2lsbCBiZSBhcHBsaWVkCiAJICogYWZ0ZXIgbG9jayBpcyByZWxlYXNlZC4K QEAgLTE4NzMsNiArMTg5OCwxMCBAQCBDb21wdXRlWGlkSG9yaXpvbnMoQ29tcHV0ZVhpZEhvcml6 b25zUmVzdWx0ICpoKQogCQkJVHJhbnNhY3Rpb25JZE9sZGVyKGgtPnNoYXJlZF9vbGRlc3Rfbm9u cmVtb3ZhYmxlLCBrYXhtaW4pOwogCQloLT5kYXRhX29sZGVzdF9ub25yZW1vdmFibGUgPQogCQkJ VHJhbnNhY3Rpb25JZE9sZGVyKGgtPmRhdGFfb2xkZXN0X25vbnJlbW92YWJsZSwga2F4bWluKTsK KwkJaC0+ZGF0YV9zYWZlX2ljX29sZGVzdF9ub25yZW1vdmFibGUgPQorCQkJCVRyYW5zYWN0aW9u SWRPbGRlcihoLT5kYXRhX3NhZmVfaWNfb2xkZXN0X25vbnJlbW92YWJsZSwga2F4bWluKTsKKwkJ aC0+Y2F0YWxvZ19vbGRlc3Rfbm9ucmVtb3ZhYmxlID0KKwkJCVRyYW5zYWN0aW9uSWRPbGRlciho LT5jYXRhbG9nX29sZGVzdF9ub25yZW1vdmFibGUsIGtheG1pbik7CiAJCS8qIHRlbXAgcmVsYXRp b25zIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbiByZWNvdmVyeSAqLwogCX0KIApAQCAtMTg4MCw2ICsx OTA5LDggQEAgQ29tcHV0ZVhpZEhvcml6b25zKENvbXB1dGVYaWRIb3Jpem9uc1Jlc3VsdCAqaCkK IAkJCQkJCQkJCQkgaC0+c2hhcmVkX29sZGVzdF9ub25yZW1vdmFibGUpKTsKIAlBc3NlcnQoVHJh bnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoaC0+c2hhcmVkX29sZGVzdF9ub25yZW1vdmFibGUs CiAJCQkJCQkJCQkJIGgtPmRhdGFfb2xkZXN0X25vbnJlbW92YWJsZSkpOworCUFzc2VydChUcmFu c2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhoLT5zaGFyZWRfb2xkZXN0X25vbnJlbW92YWJsZSwK KwkJCQkJCQkJCQkgaC0+ZGF0YV9zYWZlX2ljX29sZGVzdF9ub25yZW1vdmFibGUpKTsKIAogCS8q CiAJICogQ2hlY2sgd2hldGhlciB0aGVyZSBhcmUgcmVwbGljYXRpb24gc2xvdHMgcmVxdWlyaW5n IGFuIG9sZGVyIHhtaW4uCkBAIC0xODg4LDYgKzE5MTksOCBAQCBDb21wdXRlWGlkSG9yaXpvbnMo Q29tcHV0ZVhpZEhvcml6b25zUmVzdWx0ICpoKQogCQlUcmFuc2FjdGlvbklkT2xkZXIoaC0+c2hh cmVkX29sZGVzdF9ub25yZW1vdmFibGUsIGgtPnNsb3RfeG1pbik7CiAJaC0+ZGF0YV9vbGRlc3Rf bm9ucmVtb3ZhYmxlID0KIAkJVHJhbnNhY3Rpb25JZE9sZGVyKGgtPmRhdGFfb2xkZXN0X25vbnJl bW92YWJsZSwgaC0+c2xvdF94bWluKTsKKwloLT5kYXRhX3NhZmVfaWNfb2xkZXN0X25vbnJlbW92 YWJsZSA9CisJCQlUcmFuc2FjdGlvbklkT2xkZXIoaC0+ZGF0YV9zYWZlX2ljX29sZGVzdF9ub25y ZW1vdmFibGUsIGgtPnNsb3RfeG1pbik7CiAKIAkvKgogCSAqIFRoZSBvbmx5IGRpZmZlcmVuY2Ug YmV0d2VlbiBjYXRhbG9nIC8gZGF0YSBob3Jpem9ucyBpcyB0aGF0IHRoZSBzbG90J3MKQEAgLTE5 MDAsNyArMTkzMyw5IEBAIENvbXB1dGVYaWRIb3Jpem9ucyhDb21wdXRlWGlkSG9yaXpvbnNSZXN1 bHQgKmgpCiAJaC0+c2hhcmVkX29sZGVzdF9ub25yZW1vdmFibGUgPQogCQlUcmFuc2FjdGlvbklk T2xkZXIoaC0+c2hhcmVkX29sZGVzdF9ub25yZW1vdmFibGUsCiAJCQkJCQkgICBoLT5zbG90X2Nh dGFsb2dfeG1pbik7Ci0JaC0+Y2F0YWxvZ19vbGRlc3Rfbm9ucmVtb3ZhYmxlID0gaC0+ZGF0YV9v bGRlc3Rfbm9ucmVtb3ZhYmxlOworCWgtPmNhdGFsb2dfb2xkZXN0X25vbnJlbW92YWJsZSA9CisJ CVRyYW5zYWN0aW9uSWRPbGRlcihoLT5jYXRhbG9nX29sZGVzdF9ub25yZW1vdmFibGUsCisJCQkJ CQkgICBoLT5zbG90X3htaW4pOwogCWgtPmNhdGFsb2dfb2xkZXN0X25vbnJlbW92YWJsZSA9CiAJ CVRyYW5zYWN0aW9uSWRPbGRlcihoLT5jYXRhbG9nX29sZGVzdF9ub25yZW1vdmFibGUsCiAJCQkJ CQkgICBoLT5zbG90X2NhdGFsb2dfeG1pbik7CkBAIC0xOTE4LDYgKzE5NTMsOSBAQCBDb21wdXRl WGlkSG9yaXpvbnMoQ29tcHV0ZVhpZEhvcml6b25zUmVzdWx0ICpoKQogCWgtPm9sZGVzdF9jb25z aWRlcmVkX3J1bm5pbmcgPQogCQlUcmFuc2FjdGlvbklkT2xkZXIoaC0+b2xkZXN0X2NvbnNpZGVy ZWRfcnVubmluZywKIAkJCQkJCSAgIGgtPmRhdGFfb2xkZXN0X25vbnJlbW92YWJsZSk7CisJaC0+ b2xkZXN0X2NvbnNpZGVyZWRfcnVubmluZyA9CisJCQlUcmFuc2FjdGlvbklkT2xkZXIoaC0+b2xk ZXN0X2NvbnNpZGVyZWRfcnVubmluZywKKwkJCQkJCQkgICBoLT5kYXRhX3NhZmVfaWNfb2xkZXN0 X25vbnJlbW92YWJsZSk7CiAKIAkvKgogCSAqIHNoYXJlZCBob3Jpem9ucyBoYXZlIHRvIGJlIGF0 IGxlYXN0IGFzIG9sZCBhcyB0aGUgb2xkZXN0IHZpc2libGUgaW4KQEAgLTE5MjUsNiArMTk2Myw4 IEBAIENvbXB1dGVYaWRIb3Jpem9ucyhDb21wdXRlWGlkSG9yaXpvbnNSZXN1bHQgKmgpCiAJICov CiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKGgtPnNoYXJlZF9vbGRlc3Rf bm9ucmVtb3ZhYmxlLAogCQkJCQkJCQkJCSBoLT5kYXRhX29sZGVzdF9ub25yZW1vdmFibGUpKTsK KwlBc3NlcnQoVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoaC0+c2hhcmVkX29sZGVzdF9u b25yZW1vdmFibGUsCisJCQkJCQkJCQkJIGgtPmRhdGFfc2FmZV9pY19vbGRlc3Rfbm9ucmVtb3Zh YmxlKSk7CiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKGgtPnNoYXJlZF9v bGRlc3Rfbm9ucmVtb3ZhYmxlLAogCQkJCQkJCQkJCSBoLT5jYXRhbG9nX29sZGVzdF9ub25yZW1v dmFibGUpKTsKIApAQCAtMTkzOCw2ICsxOTc4LDggQEAgQ29tcHV0ZVhpZEhvcml6b25zKENvbXB1 dGVYaWRIb3Jpem9uc1Jlc3VsdCAqaCkKIAkJCQkJCQkJCQkgaC0+Y2F0YWxvZ19vbGRlc3Rfbm9u cmVtb3ZhYmxlKSk7CiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRQcmVjZWRlc09yRXF1YWxzKGgtPm9s ZGVzdF9jb25zaWRlcmVkX3J1bm5pbmcsCiAJCQkJCQkJCQkJIGgtPmRhdGFfb2xkZXN0X25vbnJl bW92YWJsZSkpOworCUFzc2VydChUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhoLT5vbGRl c3RfY29uc2lkZXJlZF9ydW5uaW5nLAorCQkJCQkJCQkJCSBoLT5kYXRhX3NhZmVfaWNfb2xkZXN0 X25vbnJlbW92YWJsZSkpOwogCUFzc2VydChUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyho LT5vbGRlc3RfY29uc2lkZXJlZF9ydW5uaW5nLAogCQkJCQkJCQkJCSBoLT50ZW1wX29sZGVzdF9u b25yZW1vdmFibGUpKTsKIAlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGgtPnNsb3RfeG1p bikgfHwKQEAgLTE5NzMsNyArMjAxNSwyMSBAQCBHbG9iYWxWaXNIb3Jpem9uS2luZEZvclJlbChS ZWxhdGlvbiByZWwpCiAJCQkgUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhy ZWwpKQogCQlyZXR1cm4gVklTSE9SSVpPTl9DQVRBTE9HOwogCWVsc2UgaWYgKCFSRUxBVElPTl9J U19MT0NBTChyZWwpKQorCXsKKwkJLy8gVE9ETzogZG8gd2UgbmVlZCB0byBkbyBzb21ldGhpbmcg c3BlY2lhbCBhYm91dCB0aGUgVE9BU1Q/CisJCWlmICghcmVsLT5yZF9pbmRleHZhbGlkKQorCQl7 CisJCQkvLyBza2lwIGxvYWRpbmcgaW5kZXhlcyBpZiB3ZSBrbm93IHRoZXJlIGlzIG5vdCBzYWZl IGNvbmN1cnJlbnQgaW5kZXggYnVpbGRzIGluIHRoZSBjbHVzdGVyCisJCQlpZiAoSXNBbnlTYWZl SW5kZXhCdWlsZHNDb25jdXJyZW50bHkoKSkKKwkJCXsKKwkJCQlSZWxhdGlvbkdldEluZGV4TGlz dChyZWwpOworCQkJCUFzc2VydChyZWwtPnJkX2luZGV4dmFsaWQpOworCQkJfSBlbHNlIHJldHVy biBWSVNIT1JJWk9OX0RBVEE7CisJCX0KKwkJaWYgKHJlbC0+cmRfc2FmZWluZGV4Y29uY3VycmVu dGx5YnVpbGRpbmcpCisJCQlyZXR1cm4gVklTSE9SSVpPTl9EQVRBX1NBRkVfSUM7CiAJCXJldHVy biBWSVNIT1JJWk9OX0RBVEE7CisJfQogCWVsc2UKIAkJcmV0dXJuIFZJU0hPUklaT05fVEVNUDsK IH0KQEAgLTIwMDQsNiArMjA2MCw4IEBAIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0aW9u SWQoUmVsYXRpb24gcmVsKQogCQkJcmV0dXJuIGhvcml6b25zLmNhdGFsb2dfb2xkZXN0X25vbnJl bW92YWJsZTsKIAkJY2FzZSBWSVNIT1JJWk9OX0RBVEE6CiAJCQlyZXR1cm4gaG9yaXpvbnMuZGF0 YV9vbGRlc3Rfbm9ucmVtb3ZhYmxlOworCQljYXNlIFZJU0hPUklaT05fREFUQV9TQUZFX0lDOgor CQkJcmV0dXJuIGhvcml6b25zLmRhdGFfc2FmZV9pY19vbGRlc3Rfbm9ucmVtb3ZhYmxlOwogCQlj YXNlIFZJU0hPUklaT05fVEVNUDoKIAkJCXJldHVybiBob3Jpem9ucy50ZW1wX29sZGVzdF9ub25y ZW1vdmFibGU7CiAJfQpAQCAtMjQ1NCw2ICsyNTEyLDkgQEAgR2V0U25hcHNob3REYXRhKFNuYXBz aG90IHNuYXBzaG90KQogCQlHbG9iYWxWaXNEYXRhUmVscy5kZWZpbml0ZWx5X25lZWRlZCA9CiAJ CQlGdWxsVHJhbnNhY3Rpb25JZE5ld2VyKGRlZl92aXNfZnhpZF9kYXRhLAogCQkJCQkJCQkgICBH bG9iYWxWaXNEYXRhUmVscy5kZWZpbml0ZWx5X25lZWRlZCk7CisJCUdsb2JhbFZpc0RhdGFTYWZl SWNSZWxzLmRlZmluaXRlbHlfbmVlZGVkID0KKwkJCQlGdWxsVHJhbnNhY3Rpb25JZE5ld2VyKGRl Zl92aXNfZnhpZF9kYXRhLAorCQkJCQkJCQkJICAgR2xvYmFsVmlzRGF0YVNhZmVJY1JlbHMuZGVm aW5pdGVseV9uZWVkZWQpOwogCQkvKiBTZWUgdGVtcF9vbGRlc3Rfbm9ucmVtb3ZhYmxlIGNvbXB1 dGF0aW9uIGluIENvbXB1dGVYaWRIb3Jpem9ucygpICovCiAJCWlmIChUcmFuc2FjdGlvbklkSXNO b3JtYWwobXl4aWQpKQogCQkJR2xvYmFsVmlzVGVtcFJlbHMuZGVmaW5pdGVseV9uZWVkZWQgPQpA QCAtMjQ3OCw2ICsyNTM5LDkgQEAgR2V0U25hcHNob3REYXRhKFNuYXBzaG90IHNuYXBzaG90KQog CQlHbG9iYWxWaXNDYXRhbG9nUmVscy5tYXliZV9uZWVkZWQgPQogCQkJRnVsbFRyYW5zYWN0aW9u SWROZXdlcihHbG9iYWxWaXNDYXRhbG9nUmVscy5tYXliZV9uZWVkZWQsCiAJCQkJCQkJCSAgIG9s ZGVzdGZ4aWQpOworCQlHbG9iYWxWaXNEYXRhU2FmZUljUmVscy5tYXliZV9uZWVkZWQgPQorCQkJ CUZ1bGxUcmFuc2FjdGlvbklkTmV3ZXIoR2xvYmFsVmlzRGF0YVNhZmVJY1JlbHMubWF5YmVfbmVl ZGVkLAorCQkJCQkJCQkJICAgb2xkZXN0ZnhpZCk7CiAJCUdsb2JhbFZpc0RhdGFSZWxzLm1heWJl X25lZWRlZCA9CiAJCQlGdWxsVHJhbnNhY3Rpb25JZE5ld2VyKEdsb2JhbFZpc0RhdGFSZWxzLm1h eWJlX25lZWRlZCwKIAkJCQkJCQkJICAgb2xkZXN0ZnhpZCk7CkBAIC00MTA2LDYgKzQxNzAsOSBA QCBHbG9iYWxWaXNUZXN0Rm9yKFJlbGF0aW9uIHJlbCkKIAkJY2FzZSBWSVNIT1JJWk9OX0RBVEE6 CiAJCQlzdGF0ZSA9ICZHbG9iYWxWaXNEYXRhUmVsczsKIAkJCWJyZWFrOworCQljYXNlIFZJU0hP UklaT05fREFUQV9TQUZFX0lDOgorCQkJc3RhdGUgPSAmR2xvYmFsVmlzRGF0YVNhZmVJY1JlbHM7 CisJCQlicmVhazsKIAkJY2FzZSBWSVNIT1JJWk9OX1RFTVA6CiAJCQlzdGF0ZSA9ICZHbG9iYWxW aXNUZW1wUmVsczsKIAkJCWJyZWFrOwpAQCAtNDE1OCw2ICs0MjI1LDkgQEAgR2xvYmFsVmlzVXBk YXRlQXBwbHkoQ29tcHV0ZVhpZEhvcml6b25zUmVzdWx0ICpob3Jpem9ucykKIAlHbG9iYWxWaXNE YXRhUmVscy5tYXliZV9uZWVkZWQgPQogCQlGdWxsWGlkUmVsYXRpdmVUbyhob3Jpem9ucy0+bGF0 ZXN0X2NvbXBsZXRlZCwKIAkJCQkJCSAgaG9yaXpvbnMtPmRhdGFfb2xkZXN0X25vbnJlbW92YWJs ZSk7CisJR2xvYmFsVmlzRGF0YVNhZmVJY1JlbHMubWF5YmVfbmVlZGVkID0KKwkJCUZ1bGxYaWRS ZWxhdGl2ZVRvKGhvcml6b25zLT5sYXRlc3RfY29tcGxldGVkLAorCQkJCQkJCSAgaG9yaXpvbnMt PmRhdGFfc2FmZV9pY19vbGRlc3Rfbm9ucmVtb3ZhYmxlKTsKIAlHbG9iYWxWaXNUZW1wUmVscy5t YXliZV9uZWVkZWQgPQogCQlGdWxsWGlkUmVsYXRpdmVUbyhob3Jpem9ucy0+bGF0ZXN0X2NvbXBs ZXRlZCwKIAkJCQkJCSAgaG9yaXpvbnMtPnRlbXBfb2xkZXN0X25vbnJlbW92YWJsZSk7CkBAIC00 MTc2LDYgKzQyNDYsOSBAQCBHbG9iYWxWaXNVcGRhdGVBcHBseShDb21wdXRlWGlkSG9yaXpvbnNS ZXN1bHQgKmhvcml6b25zKQogCUdsb2JhbFZpc0RhdGFSZWxzLmRlZmluaXRlbHlfbmVlZGVkID0K IAkJRnVsbFRyYW5zYWN0aW9uSWROZXdlcihHbG9iYWxWaXNEYXRhUmVscy5tYXliZV9uZWVkZWQs CiAJCQkJCQkJICAgR2xvYmFsVmlzRGF0YVJlbHMuZGVmaW5pdGVseV9uZWVkZWQpOworCUdsb2Jh bFZpc0RhdGFTYWZlSWNSZWxzLmRlZmluaXRlbHlfbmVlZGVkID0KKwkJCUZ1bGxUcmFuc2FjdGlv bklkTmV3ZXIoR2xvYmFsVmlzRGF0YVNhZmVJY1JlbHMubWF5YmVfbmVlZGVkLAorCQkJCQkJCQkg ICBHbG9iYWxWaXNEYXRhU2FmZUljUmVscy5kZWZpbml0ZWx5X25lZWRlZCk7CiAJR2xvYmFsVmlz VGVtcFJlbHMuZGVmaW5pdGVseV9uZWVkZWQgPSBHbG9iYWxWaXNUZW1wUmVscy5tYXliZV9uZWVk ZWQ7CiAKIAlDb21wdXRlWGlkSG9yaXpvbnNSZXN1bHRMYXN0WG1pbiA9IFJlY2VudFhtaW47CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCAyNjJjOTg3OGRkLi4yMWU4NTIxYWI4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRl ICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvYmluYXJ5X3VwZ3JhZGUuaCIKICNp bmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2luZGV4LmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wYXJ0aXRpb24uaCIKQEAgLTQ3NjksNiArNDc3MCw3IEBA IFJlbGF0aW9uR2V0SW5kZXhMaXN0KFJlbGF0aW9uIHJlbGF0aW9uKQogCU9pZAkJCXBrZXlJbmRl eCA9IEludmFsaWRPaWQ7CiAJT2lkCQkJY2FuZGlkYXRlSW5kZXggPSBJbnZhbGlkT2lkOwogCWJv b2wJCXBrZGVmZXJyYWJsZSA9IGZhbHNlOworCWJvb2wgCQlzYWZlaW5kZXhjb25jdXJyZW50bHli dWlsZGluZyA9IGZhbHNlOwogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwogCiAJLyogUXVpY2sgZXhp dCBpZiB3ZSBhbHJlYWR5IGNvbXB1dGVkIHRoZSBsaXN0LiAqLwpAQCAtNDgwOSw2ICs0ODExLDE0 IEBAIFJlbGF0aW9uR2V0SW5kZXhMaXN0KFJlbGF0aW9uIHJlbGF0aW9uKQogCQkvKiBhZGQgaW5k ZXgncyBPSUQgdG8gcmVzdWx0IGxpc3QgKi8KIAkJcmVzdWx0ID0gbGFwcGVuZF9vaWQocmVzdWx0 LCBpbmRleC0+aW5kZXhyZWxpZCk7CiAKKwkJLyoKKwkJICogQ29uc2lkZXIgaW5kZXggYXMgYnVp bGRpbmcgaWYgaXQgaXMgcmVhZHkgYnV0IG5vdCB5ZXQgdmFsaWQuCisJCSAqIEFsc28sIHdlIG11 c3QgZGVhbCBvbmx5IHdpdGggaW5kZXhlcyB3aGljaCBhcmUgYnVpbHQgdXNpbmcgdGhlCisJCSAq IGNvbmN1cnJlbnQgc2FmZSBtb2RlLgorCQkgKi8KKwkJaWYgKGluZGV4LT5pbmRpc3JlYWR5ICYm ICFpbmRleC0+aW5kaXN2YWxpZCkKKwkJCXNhZmVpbmRleGNvbmN1cnJlbnRseWJ1aWxkaW5nIHw9 IElzQW55U2FmZUluZGV4QnVpbGRzQ29uY3VycmVudGx5KCk7CisKIAkJLyoKIAkJICogTm9uLXVu aXF1ZSBvciBwcmVkaWNhdGUgaW5kZXhlcyBhcmVuJ3QgaW50ZXJlc3RpbmcgZm9yIGVpdGhlciBv aWQKIAkJICogaW5kZXhlcyBvciByZXBsaWNhdGlvbiBpZGVudGl0eSBpbmRleGVzLCBzbyBkb24n dCBjaGVjayB0aGVtLgpAQCAtNDg2OSw2ICs0ODc5LDcgQEAgUmVsYXRpb25HZXRJbmRleExpc3Qo UmVsYXRpb24gcmVsYXRpb24pCiAJcmVsYXRpb24tPnJkX2luZGV4bGlzdCA9IGxpc3RfY29weShy ZXN1bHQpOwogCXJlbGF0aW9uLT5yZF9wa2luZGV4ID0gcGtleUluZGV4OwogCXJlbGF0aW9uLT5y ZF9pc3BrZGVmZXJyYWJsZSA9IHBrZGVmZXJyYWJsZTsKKwlyZWxhdGlvbi0+cmRfc2FmZWluZGV4 Y29uY3VycmVudGx5YnVpbGRpbmcgPSBzYWZlaW5kZXhjb25jdXJyZW50bHlidWlsZGluZzsKIAlp ZiAocmVwbGlkZW50ID09IFJFUExJQ0FfSURFTlRJVFlfREVGQVVMVCAmJiBPaWRJc1ZhbGlkKHBr ZXlJbmRleCkgJiYgIXBrZGVmZXJyYWJsZSkKIAkJcmVsYXRpb24tPnJkX3JlcGxpZGluZGV4ID0g cGtleUluZGV4OwogCWVsc2UgaWYgKHJlcGxpZGVudCA9PSBSRVBMSUNBX0lERU5USVRZX0lOREVY ICYmIE9pZElzVmFsaWQoY2FuZGlkYXRlSW5kZXgpKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19h bWNoZWNrL3QvMDA2X2NvbmN1cnJlbnRseS5wbCBiL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9j b25jdXJyZW50bHkucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uN2I4 YWZlZWFkNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfYW1jaGVjay90LzAwNl9jb25j dXJyZW50bHkucGwKQEAgLTAsMCArMSwxNTUgQEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjQsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCBSRUlOREVYIENPTkNV UlJFTlRMWSB3aXRoIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyBhbmQgSE9UIHVwZGF0ZXMKK3Vz ZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CisKK3VzZSBDb25maWc7Cit1c2UgRXJybm87CisKK3Vz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz OwordXNlIFRpbWU6OkhpUmVzIHF3KHVzbGVlcCk7Cit1c2UgSVBDOjpTeXNWOwordXNlIHRocmVh ZHM7Cit1c2UgVGVzdDo6TW9yZTsKK3VzZSBUZXN0OjpCdWlsZGVyOworCitpZiAoJEAgfHwgJHdp bmRvd3Nfb3MpCit7CisJcGxhbiBza2lwX2FsbCA9PiAnRm9yayBhbmQgc2hhcmVkIG1lbW9yeSBh cmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIHBsYXRmb3JtJzsKK30KKworIyBUT0RPOiByZWZhY3Rv ciB0byBodHRwczovL21ldGFjcGFuLm9yZy9wb2QvSVBDJTNBJTNBU2hhcmVhYmxlCitteSAoJHBp ZCwgJHNobWVtX2lkLCAkc2htZW1fa2V5LCAgJHNobWVtX3NpemUpOworZXZhbCAnc3ViIElQQ19D UkVBVCB7MDAwMTAwMH0nIHVubGVzcyBkZWZpbmVkICZJUENfQ1JFQVQ7Ciskc2htZW1fc2l6ZSA9 IDQ7Ciskc2htZW1fa2V5ID0gcmFuZCgxMDAwMDAwKTsKKyRzaG1lbV9pZCA9IHNobWdldCgkc2ht ZW1fa2V5LCAkc2htZW1fc2l6ZSwgJklQQ19DUkVBVCB8IDA3NzcpIG9yIGRpZSAiQ2FuJ3Qgc2ht Z2V0OiAkISI7CitzaG13cml0ZSgkc2htZW1faWQsICJ3YWl0IiwgMCwgJHNobWVtX3NpemUpIG9y IGRpZSAiQ2FuJ3Qgc2htd3JpdGU6ICQhIjsKKworbXkgJHBzcWxfdGltZW91dCA9IElQQzo6UnVu Ojp0aW1lcigkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisjCisj IFRlc3Qgc2V0LXVwCisjCitteSAoJG5vZGUsICRyZXN1bHQpOworJG5vZGUgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ1JDX3Rlc3QnKTsKKyRub2RlLT5pbml0OworJG5vZGUtPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSdsb2NrX3RpbWVvdXQgPSAnIC4gKDEwMDAg KiAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCkpOworJG5vZGUtPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnZnN5bmMgPSBvZmYnKTsKKyRub2RlLT5zdGFy dDsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgRVhURU5TSU9OIGFtY2hl Y2spKTsKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcShDUkVBVEUgVEFCTEUgdGJsKGkg aW50IHByaW1hcnkga2V5LAorCQkJCQkJCQljMSBtb25leSBkZWZhdWx0IDAsYzIgbW9uZXkgZGVm YXVsdCAwLAorCQkJCQkJCQljMyBtb25leSBkZWZhdWx0IDAsIHVwZGF0ZWRfYXQgdGltZXN0YW1w KSkpOworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxKENSRUFURSBJTkRFWCBpZHggT04g dGJsKGkpKSk7CisKK215ICRidWlsZGVyID0gVGVzdDo6TW9yZS0+YnVpbGRlcjsKKyRidWlsZGVy LT51c2VfbnVtYmVycygwKTsKKyRidWlsZGVyLT5ub19wbGFuKCk7CisKK215ICRjaGlsZCAgPSAk YnVpbGRlci0+Y2hpbGQoInBnX2JlbmNoIik7CisKK2lmKCFkZWZpbmVkKCRwaWQgPSBmb3JrKCkp KSB7CisJIyBmb3JrIHJldHVybmVkIHVuZGVmLCBzbyB1bnN1Y2Nlc3NmdWwKKwlkaWUgIkNhbm5v dCBmb3JrIGEgY2hpbGQ6ICQhIjsKK30gZWxzaWYgKCRwaWQgPT0gMCkgeworCisJJG5vZGUtPnBn YmVuY2goCisJCSctLW5vLXZhY3V1bSAtLWNsaWVudD01IC0tdHJhbnNhY3Rpb25zPTI1MDAwJywK KwkJMCwKKwkJW3Fye2FjdHVhbGx5IHByb2Nlc3NlZH1dLAorCQlbcXJ7XiR9XSwKKwkJJ2NvbmN1 cnJlbnQgSU5TRVJUcywgVVBEQVRFUyBhbmQgUkMnLAorCQl7CisJCQknMDAyX3BnYmVuY2hfY29u Y3VycmVudF90cmFuc2FjdGlvbl9pbnNlcnRzJyA9PiBxKAorCQkJCUJFR0lOOworCQkJCUlOU0VS VCBJTlRPIHRibCBWQUxVRVMocmFuZG9tKCkqMTAwMDAsMCwwLDAsbm93KCkpCisJCQkJCW9uIGNv bmZsaWN0KGkpIGRvIHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCUlOU0VSVCBJ TlRPIHRibCBWQUxVRVMocmFuZG9tKCkqMTAwMDAsMCwwLDAsbm93KCkpCisJCQkJCW9uIGNvbmZs aWN0KGkpIGRvIHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCUlOU0VSVCBJTlRP IHRibCBWQUxVRVMocmFuZG9tKCkqMTAwMDAsMCwwLDAsbm93KCkpCisJCQkJCW9uIGNvbmZsaWN0 KGkpIGRvIHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCUlOU0VSVCBJTlRPIHRi bCBWQUxVRVMocmFuZG9tKCkqMTAwMDAsMCwwLDAsbm93KCkpCisJCQkJCW9uIGNvbmZsaWN0KGkp IGRvIHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5vdygpOworCisJCQkJSU5TRVJUIElOVE8gdGJs IFZBTFVFUyhyYW5kb20oKSoxMDAwMCwwLDAsMCxub3coKSkKKwkJCQkJb24gY29uZmxpY3QoaSkg ZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJQ09NTUlUOworCQkJICApLAor CQkJIyBFbnN1cmUgc29tZSBIT1QgdXBkYXRlcyBoYXBwZW4KKwkJCScwMDJfcGdiZW5jaF9jb25j dXJyZW50X3RyYW5zYWN0aW9uX3VwZGF0ZXMnID0+IHEoCisJCQkJQkVHSU47CisJCQkJSU5TRVJU IElOVE8gdGJsIFZBTFVFUyhyYW5kb20oKSoxMDAwLDAsMCwwLG5vdygpKQorCQkJCQlvbiBjb25m bGljdChpKSBkbyB1cGRhdGUgc2V0IHVwZGF0ZWRfYXQgPSBub3coKTsKKwkJCQlJTlNFUlQgSU5U TyB0YmwgVkFMVUVTKHJhbmRvbSgpKjEwMDAsMCwwLDAsbm93KCkpCisJCQkJCW9uIGNvbmZsaWN0 KGkpIGRvIHVwZGF0ZSBzZXQgdXBkYXRlZF9hdCA9IG5vdygpOworCQkJCUlOU0VSVCBJTlRPIHRi bCBWQUxVRVMocmFuZG9tKCkqMTAwMCwwLDAsMCxub3coKSkKKwkJCQkJb24gY29uZmxpY3QoaSkg ZG8gdXBkYXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJSU5TRVJUIElOVE8gdGJsIFZB TFVFUyhyYW5kb20oKSoxMDAwLDAsMCwwLG5vdygpKQorCQkJCQlvbiBjb25mbGljdChpKSBkbyB1 cGRhdGUgc2V0IHVwZGF0ZWRfYXQgPSBub3coKTsKKworCQkJCUlOU0VSVCBJTlRPIHRibCBWQUxV RVMocmFuZG9tKCkqMTAwMCwwLDAsMCxub3coKSkKKwkJCQkJb24gY29uZmxpY3QoaSkgZG8gdXBk YXRlIHNldCB1cGRhdGVkX2F0ID0gbm93KCk7CisJCQkJQ09NTUlUOworCQkJICApCisJCX0pOwor CisJaWYgKCRjaGlsZC0+aXNfcGFzc2luZygpKSB7CisJCXNobXdyaXRlKCRzaG1lbV9pZCwgImRv bmUiLCAwLCAkc2htZW1fc2l6ZSkgb3IgZGllICJDYW4ndCBzaG13cml0ZTogJCEiOworCX0gZWxz ZSB7CisJCXNobXdyaXRlKCRzaG1lbV9pZCwgImZhaWwiLCAwLCAkc2htZW1fc2l6ZSkgb3IgZGll ICJDYW4ndCBzaG13cml0ZTogJCEiOworCX0KKworCXNsZWVwKDEpOworfSBlbHNlIHsKKwlteSAk cGdfYmVuY2hfZm9ya19mbGFnOworCXNobXJlYWQoJHNobWVtX2lkLCAkcGdfYmVuY2hfZm9ya19m bGFnLCAwLCAkc2htZW1fc2l6ZSkgb3IgZGllICJDYW4ndCBzaG1yZWFkOiAkISI7CisKKwlzdWJ0 ZXN0ICdyZWluZGV4IHJ1biBzdWJ0ZXN0JyA9PiBzdWIgeworCQlpcygkcGdfYmVuY2hfZm9ya19m bGFnLCAid2FpdCIsICJwZ19iZW5jaF9mb3JrX2ZsYWcgaXMgY29ycmVjdCIpOworCisJCW15ICVw c3FsID0gKHN0ZGluID0+ICcnLCBzdGRvdXQgPT4gJycsIHN0ZGVyciA9PiAnJyk7CisJCSRwc3Fs e3J1bn0gPSBJUEM6OlJ1bjo6c3RhcnQoCisJCQlbICdwc3FsJywgJy1YQScsICctZicsICctJywg Jy1kJywgJG5vZGUtPmNvbm5zdHIoJ3Bvc3RncmVzJykgXSwKKwkJCSc8JywKKwkJCVwkcHNxbHtz dGRpbn0sCisJCQknPicsCisJCQlcJHBzcWx7c3Rkb3V0fSwKKwkJCScyPicsCisJCQlcJHBzcWx7 c3RkZXJyfSwKKwkJCSRwc3FsX3RpbWVvdXQpOworCisJCW15ICgkcmVzdWx0LCAkc3Rkb3V0LCAk c3RkZXJyKTsKKwkJd2hpbGUgKDEpCisJCXsKKworCQkJKCRyZXN1bHQsICRzdGRvdXQsICRzdGRl cnIpID0gJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgcShSRUlOREVYIElOREVYIENPTkNVUlJFTlRM WSBpZHg7KSk7CisJCQlpcygkcmVzdWx0LCAnMCcsICdSRUlOREVYIGlzIGNvcnJlY3QnKTsKKwor CQkJKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywg cShTRUxFQ1QgYnRfaW5kZXhfcGFyZW50X2NoZWNrKCdpZHgnLCB0cnVlLCB0cnVlKTspKTsKKwkJ CWlzKCRyZXN1bHQsICcwJywgJ2J0X2luZGV4X2NoZWNrIGlzIGNvcnJlY3QnKTsKKyAJCQlpZiAo JHJlc3VsdCkKKyAJCQl7CisJCQkJZGlhZygkc3RkZXJyKTsKKyAJCQl9CisKKwkJCXNobXJlYWQo JHNobWVtX2lkLCAkcGdfYmVuY2hfZm9ya19mbGFnLCAwLCAkc2htZW1fc2l6ZSkgb3IgZGllICJD YW4ndCBzaG1yZWFkOiAkISI7CisJCQlsYXN0IGlmICRwZ19iZW5jaF9mb3JrX2ZsYWcgbmUgIndh aXQiOworCQl9CisKKwkJIyBleHBsaWNpdGx5IHNodXQgZG93biBwc3FsIGluc3RhbmNlcyBncmFj ZWZ1bGx5CisgICAgICAgICRwc3Fse3N0ZGlufSAuPSAiXFxxXG4iOworICAgICAgICAkcHNxbHty dW59LT5maW5pc2g7CisKKwkJaXMoJHBnX2JlbmNoX2ZvcmtfZmxhZywgImRvbmUiLCAicGdfYmVu Y2hfZm9ya19mbGFnIGlzIGNvcnJlY3QiKTsKKwl9OworCisKKwkkY2hpbGQtPmZpbmFsaXplKCk7 CisJJGNoaWxkLT5zdW1tYXJ5KCk7CisJJG5vZGUtPnN0b3A7CisJZG9uZV90ZXN0aW5nKCk7Cit9 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9j YXRhbG9nL2luZGV4LmgKaW5kZXggMmRlYTk2ZjQ3Yy4uY2FjNDEzZTVlYiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5k ZXguaApAQCAtMTc1LDYgKzE3NSwxMSBAQCBleHRlcm4gdm9pZCBSZXN0b3JlUmVpbmRleFN0YXRl KGNvbnN0IHZvaWQgKnJlaW5kZXhzdGF0ZSk7CiAKIGV4dGVybiB2b2lkIEluZGV4U2V0UGFyZW50 SW5kZXgoUmVsYXRpb24gcGFydGl0aW9uSWR4LCBPaWQgcGFyZW50T2lkKTsKIAorZXh0ZXJuIHZv aWQgU2FmZUlDU3RhdGVTaG1lbUluaXQodm9pZCk7CisvLyBUT0RPOiBib3VuZCBieSByZWxhdGlv biBvciBkYXRhYmFzZQorZXh0ZXJuIHZvaWQgVXBkYXRlTnVtU2FmZUNvbmN1cnJlbnRseUJ1aWx0 SW5kZXhlcyhib29sIGluY3JlbWVudCk7CitleHRlcm4gYm9vbCBJc0FueVNhZmVJbmRleEJ1aWxk c0NvbmN1cnJlbnRseSh2b2lkKTsKKwogCiAvKgogICogaXRlbXB0cl9lbmNvZGUgLSBFbmNvZGUg SXRlbVBvaW50ZXIgYXMgaW50NjQvaW50OApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMv cmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCA4NzAwMjA0OTUzLi5lM2M3ODk5 MjAzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9yZWwuaApAQCAtMTUyLDYgKzE1Miw3IEBAIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9u RGF0YQogCUxpc3QJICAgKnJkX2luZGV4bGlzdDsJLyogbGlzdCBvZiBPSURzIG9mIGluZGV4ZXMg b24gcmVsYXRpb24gKi8KIAlPaWQJCQlyZF9wa2luZGV4OwkJLyogT0lEIG9mIChkZWZlcnJhYmxl PykgcHJpbWFyeSBrZXksIGlmIGFueSAqLwogCWJvb2wJCXJkX2lzcGtkZWZlcnJhYmxlOwkvKiBp cyByZF9wa2luZGV4IGEgZGVmZXJyYWJsZSBQSz8gKi8KKwlib29sCQlyZF9zYWZlaW5kZXhjb25j dXJyZW50bHlidWlsZGluZzsgLyogaXMgc2FmZSBjb25jdXJyZW50IGluZGV4IGJ1aWxkaW5nIGlu IHByb2dyZXNzIGZvciByZWxhdGlvbiAqLwogCU9pZAkJCXJkX3JlcGxpZGluZGV4OyAvKiBPSUQg b2YgcmVwbGljYSBpZGVudGl0eSBpbmRleCwgaWYgYW55ICovCiAKIAkvKiBkYXRhIG1hbmFnZWQg YnkgUmVsYXRpb25HZXRTdGF0RXh0TGlzdDogKi8KLS0gCjIuMzQuMQoK --000000000000edfa280617e2f561--