Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p2qJS-0006w7-DU for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Dec 2022 09:01:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p2qJR-0000xk-9A for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Dec 2022 09:01:57 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p2qJQ-0000vT-CF for pgsql-hackers@lists.postgresql.org; Wed, 07 Dec 2022 09:01:56 +0000 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1p2qJF-0007rs-7O for pgsql-hackers@postgresql.org; Wed, 07 Dec 2022 09:01:55 +0000 Received: by mail-wr1-x42b.google.com with SMTP id o5so27107928wrm.1 for ; Wed, 07 Dec 2022 01:01:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; 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=RgsGMjfqnZSUSchsMEuASc18ohujCWaSYEpv2mxPLsk=; b=WkD7+mqUNYDi8JXxHpqakSMQbGU4gG7zwlqxHH48A9NC6YFnT9U0x7SkTM4KzdqpxD wHi8JWOjjllW/RSq7L6v0eyT5M3Ng82FV5sxGB9/dI7KOnvEuX2vZrsGhrruyc2iiQm+ 66mN/x9QU8AmstvjMHmXmDbBOBoy7/FmjP6yB4OY8pkwfMRG1FBHmxnN2NnWBOzPyyFY k2VfVvlMlpyEwiwJVsWcZVF9PffNShTRO96/XRJGn2kaO0Rr55M4CI/fkBPKsmY9bpn6 2AA54DYwhpYZ1BoeVtNHGghAW+kS9jDuiXUtOLtEmtMHLIOas7tn5/3e5zq2z2ymA5jy IVJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=RgsGMjfqnZSUSchsMEuASc18ohujCWaSYEpv2mxPLsk=; b=omL6E76I0vJLDnem2+MMPEVGP3CxGGFIOdGhrajqBOtFJ9Xl0JrSFGDfY0h1MCATcG +wGuqUN+KGhRMIsN7F4GBnOqEq/AIzCb/VZhpkFwZAPUwkeLONc2fc47B5bQEi+dJmsa 3/MI50WK9kgRBgoKKVfHNkPtPyUw+zQMbwFobx6QfHHp8K3oSb7bEVxzXvIyvUEKuCnU 7vf5bGnRxMSj2EELUuuKmuqcOQYf/neR5az56/URFIn9nHtskiwUtUXoK+Ahg8WMb7SR F/2LQTaZweTBeFQxb483kMcozQRH4E5duh+bhbryxQq7xOq8GRQHpoELuKnEA4Xj2fXl uoag== X-Gm-Message-State: ANoB5plsyQwJojkRpYlTvB+agOwI3CQIE3hnA7jv5Nyu2Wmt+xcjfBzr CY5gYo7kX7QGvb6gZUCqbbM= X-Google-Smtp-Source: AA0mqf725dyx1jVetGtMHEIajmyKw1ctE5iAQV/hgoBI496pr8yJu/C+/atYtcEe0hyL8hecv5hoVg== X-Received: by 2002:a5d:5d0b:0:b0:241:9e29:17cd with SMTP id ch11-20020a5d5d0b000000b002419e2917cdmr242846wrb.167.1670403702855; Wed, 07 Dec 2022 01:01:42 -0800 (PST) Received: from [192.168.30.153] ([54.239.6.187]) by smtp.gmail.com with ESMTPSA id j8-20020a5d4488000000b0024287d9d4a8sm22054wrq.74.2022.12.07.01.01.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 07 Dec 2022 01:01:42 -0800 (PST) Content-Type: multipart/mixed; boundary="------------68IV02WKbO30CE6z3vbE95XU" Message-ID: <4b19419f-2e7c-a76b-c948-26d10af6693d@gmail.com> Date: Wed, 7 Dec 2022 10:00:25 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.5.1 Subject: Re: Minimal logical decoding on standbys From: "Drouvot, Bertrand" To: Andres Freund , Robert Haas Cc: Alvaro Herrera , Ibrar Ahmed , Amit Khandekar , fabriziomello@gmail.com, tushar , Rahila Syed , pgsql-hackers References: <202107281526.o74ieuj6sj7z@alvherre.pgsql> <2b14d595-1e8b-e5b6-6098-6a11d19fa1c7@amazon.com> <688cbedf-a172-f0d8-8352-d4ea223bceeb@amazon.com> <20211028210755.afmwcvpo6ajwdx6n@alap3.anarazel.de> <6711d09f-eaa9-264b-ec7f-88004218b075@amazon.com> <178cf7da-9bd7-e328-9c49-e28ac4701352@gmail.com> Content-Language: en-US In-Reply-To: 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. --------------68IV02WKbO30CE6z3vbE95XU Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, > Hi, > Please find attached a new patch series: > > v27-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch > v27-0002-Handle-logical-slot-conflicts-on-standby.patch > v27-0003-Allow-logical-decoding-on-standby.patch > v27-0004-New-TAP-test-for-logical-decoding-on-standby.patch > v27-0005-Doc-changes-describing-details-about-logical-dec.patch > v27-0006-Fixing-Walsender-corner-case-with-logical-decodi.patch > > with the previous comments addressed, means mainly: > > 1/ don't call table_open() in low-level functions in 0001: this is done with a new field "isusercatalog" in pg_index to indicate whether or not the index is linked to a table that has the storage parameter user_catalog_table set to true (we may want to make this field "invisible" though). This new field is then used in the new IndexIsAccessibleInLogicalDecoding Macro (through IndexIsUserCatalog). > > 2/ Renaming the new field generated in the xlog record (to arrange conflict handling) from "onCatalogTable" to "onCatalogAccessibleInLogicalDecoding" to avoid any confusion (see 0001). > > 3/ Making sure that "currTLI" is the current one in logical_read_xlog_page() (see 0003). > > 4/ Fixing Walsender/startup process corner case: It's done in 0006 (I thought it is better to keep the other patches purely "feature" related and to address this corner case separately to ease the review). The fix is making use of a new > > condition variable "replayedCV" so that the startup process can broadcast the walsender(s) once a replay is done. > > Remarks: > > - The new confl_active_logicalslot field added in pg_stat_database_conflicts (see 0002) is incremented only if the slot being invalidated is active (I think it makes more sense in regard to the other fields too). In all the cases (active/not active) the slot invalidation is reported in the logfile. The documentation update mentions this behavior (see 0002). > > - LogStandbySnapshot() being moved outside of the loop in ReplicationSlotReserveWal() (see 0003), is a proposal made by Andres in [1] and I think it makes sense. > > - Tap tests (see 0004) are covering: tests that the logical decoding on standby behaves correctly, conflicts, slots invalidations, standby promotion. > > > Looking forward to your feedback, > > > [1]: https://www.postgresql.org/message-id/20210406180231.qsnkyrgrm7gtxb73%40alap3.anarazel.de > Please find attached v28 (mandatory rebase due to 8018ffbf58). Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------68IV02WKbO30CE6z3vbE95XU Content-Type: text/plain; charset=UTF-8; name="v28-0006-Fixing-Walsender-corner-case-with-logical-decodi.patch" Content-Disposition: attachment; filename*0="v28-0006-Fixing-Walsender-corner-case-with-logical-decodi.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyY2YzYTM0ZWIyY2Q4ODJmZWU1NjQxMDg1M2JhNGVlYjZjMTU0MGFjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogV2VkLCA3IERlYyAyMDIyIDA4OjE5OjAyICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjggNi82XSBGaXhpbmcgV2Fsc2VuZGVyIGNvcm5lciBjYXNlIHdpdGggbG9naWNhbCBk ZWNvZGluZyBvbgogc3RhbmRieS4KClRoZSBwcm9ibGVtIGlzIHRoYXQgV2FsU25kV2FpdEZv cldhbCgpIHdhaXRzIGZvciB0aGUgKnJlcGxheSogTFNOIHRvCmluY3JlYXNlLCBidXQgZ2V0 cyB3b2tlbiB1cCBieSB3YWxyZWNlaXZlciB3aGVuIG5ldyBXQUwgaGFzIGJlZW4KZmx1c2hl ZC4gV2hpY2ggbWVhbnMgdGhhdCB0eXBpY2FsbHkgd2Fsc2VuZGVycyB3aWxsIGdldCB3b2tl biB1cCBhdCB0aGUKc2FtZSB0aW1lIHRoYXQgdGhlIHN0YXJ0dXAgcHJvY2VzcyB3aWxsIGJl IC0gd2hpY2ggbWVhbnMgdGhhdCBieSB0aGUKdGltZSB0aGUgbG9naWNhbCB3YWxzZW5kZXIg Y2hlY2tzIEdldFhMb2dSZXBsYXlSZWNQdHIoKSBpdCdzIHVubGlrZWx5CnRoYXQgdGhlIHN0 YXJ0dXAgcHJvY2VzcyBhbHJlYWR5IHJlcGxheWVkIHRoZSByZWNvcmQgYW5kIHVwZGF0ZWQK WExvZ0N0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRyLgoKSW50cm9kdWNpbmcgYSBuZXcgY29u ZGl0aW9uIHZhcmlhYmxlIHRvIGZpeCB0aGlzIGNvcm5lciBjYXNlLgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIHwgMjggKysrKysrKysrKysrKysr KysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgIHwgMzEg KysrKysrKysrKysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dh aXRfZXZlbnQuYyAgIHwgIDMgKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5 LmggICAgICAgICB8ICAzICsrKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmggICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAg ICAgICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgNTkgaW5zZXJ0aW9ucygrKSwgOCBkZWxl dGlvbnMoLSkKICA0MS4yJSBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8KICA0OC41JSBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi8KICAgMy42JSBzcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS8KICAgMy40JSBzcmMvaW5jbHVkZS9hY2Nlc3MvCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCA5N2I4ODI1NjRmLi5lOTU4NTQ1ZTli IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3Zlcnku YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwpAQCAt MzU4LDYgKzM1OCw5IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dSZWNvdmVyeUN0bERhdGEKIAlS ZWNvdmVyeVBhdXNlU3RhdGUgcmVjb3ZlcnlQYXVzZVN0YXRlOwogCUNvbmRpdGlvblZhcmlh YmxlIHJlY292ZXJ5Tm90UGF1c2VkQ1Y7CiAKKwkvKiBSZXBsYXkgc3RhdGUgKHNlZSBnZXRS ZXBsYXllZENWKCkgZm9yIG1vcmUgZXhwbGFuYXRpb24pICovCisJQ29uZGl0aW9uVmFyaWFi bGUgcmVwbGF5ZWRDVjsKKwogCXNsb2NrX3QJCWluZm9fbGNrOwkJLyogbG9ja3Mgc2hhcmVk IHZhcmlhYmxlcyBzaG93biBhYm92ZSAqLwogfSBYTG9nUmVjb3ZlcnlDdGxEYXRhOwogCkBA IC00NjcsNiArNDcwLDcgQEAgWExvZ1JlY292ZXJ5U2htZW1Jbml0KHZvaWQpCiAJU3Bpbkxv Y2tJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPmluZm9fbGNrKTsKIAlJbml0U2hhcmVkTGF0Y2go JlhMb2dSZWNvdmVyeUN0bC0+cmVjb3ZlcnlXYWtldXBMYXRjaCk7CiAJQ29uZGl0aW9uVmFy aWFibGVJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPnJlY292ZXJ5Tm90UGF1c2VkQ1YpOworCUNv bmRpdGlvblZhcmlhYmxlSW5pdCgmWExvZ1JlY292ZXJ5Q3RsLT5yZXBsYXllZENWKTsKIH0K IAogLyoKQEAgLTE5MTYsNiArMTkyMCwxMSBAQCBBcHBseVdhbFJlY29yZChYTG9nUmVhZGVy U3RhdGUgKnhsb2dyZWFkZXIsIFhMb2dSZWNvcmQgKnJlY29yZCwgVGltZUxpbmVJRCAqcmVw bAogCVhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVkVExJID0gKnJlcGxheVRMSTsKIAlT cGluTG9ja1JlbGVhc2UoJlhMb2dSZWNvdmVyeUN0bC0+aW5mb19sY2spOwogCisJLyoKKwkg KiB3YWtlIHVwIHdhbHNlbmRlcihzKSB1c2VkIGJ5IGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3Rh bmRieS4KKwkgKi8KKwlDb25kaXRpb25WYXJpYWJsZUJyb2FkY2FzdCgmWExvZ1JlY292ZXJ5 Q3RsLT5yZXBsYXllZENWKTsKKwogCS8qCiAJICogSWYgcm1fcmVkbyBjYWxsZWQgWExvZ1Jl cXVlc3RXYWxSZWNlaXZlclJlcGx5LCB0aGVuIHdlIHdha2UgdXAgdGhlCiAJICogcmVjZWl2 ZXIgc28gdGhhdCBpdCBub3RpY2VzIHRoZSB1cGRhdGVkIGxhc3RSZXBsYXllZEVuZFJlY1B0 ciBhbmQgc2VuZHMKQEAgLTQ5MTQsMyArNDkyMywyMiBAQCBhc3NpZ25fcmVjb3ZlcnlfdGFy Z2V0X3hpZChjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQgKmV4dHJhKQogCWVsc2UKIAkJcmVj b3ZlcnlUYXJnZXQgPSBSRUNPVkVSWV9UQVJHRVRfVU5TRVQ7CiB9CisKKy8qCisgKiBSZXR1 cm4gdGhlIENvbmRpdGlvblZhcmlhYmxlIGluZGljYXRpbmcgdGhhdCBhIHJlcGxheSBoYXMg YmVlbiBkb25lLgorICoKKyAqIFRoaXMgaXMgbmVlZGVkIGZvciBsb2dpY2FsIGRlY29kaW5n IG9uIHN0YW5kYnkuIEluZGVlZCB0aGUgInByb2JsZW0iIGlzIHRoYXQKKyAqIFdhbFNuZFdh aXRGb3JXYWwoKSB3YWl0cyBmb3IgdGhlICpyZXBsYXkqIExTTiB0byBpbmNyZWFzZSwgYnV0 IGdldHMgd29rZW4gdXAKKyAqIGJ5IHdhbHJlY2VpdmVyIHdoZW4gbmV3IFdBTCBoYXMgYmVl biBmbHVzaGVkLiBXaGljaCBtZWFucyB0aGF0IHR5cGljYWxseQorICogd2Fsc2VuZGVycyB3 aWxsIGdldCB3b2tlbiB1cCBhdCB0aGUgc2FtZSB0aW1lIHRoYXQgdGhlIHN0YXJ0dXAgcHJv Y2VzcworICogd2lsbCBiZSAtIHdoaWNoIG1lYW5zIHRoYXQgYnkgdGhlIHRpbWUgdGhlIGxv Z2ljYWwgd2Fsc2VuZGVyIGNoZWNrcworICogR2V0WExvZ1JlcGxheVJlY1B0cigpIGl0J3Mg dW5saWtlbHkgdGhhdCB0aGUgc3RhcnR1cCBwcm9jZXNzIGFscmVhZHkgcmVwbGF5ZWQKKyAq IHRoZSByZWNvcmQgYW5kIHVwZGF0ZWQgWExvZ0N0bC0+bGFzdFJlcGxheWVkRW5kUmVjUHRy LgorICoKKyAqIFRoZSBDb25kaXRpb25WYXJpYWJsZSBYTG9nUmVjb3ZlcnlDdGwtPnJlcGxh eWVkQ1Ygc29sdmVzIHRoaXMgY29ybmVyIGNhc2UuCisgKi8KK0NvbmRpdGlvblZhcmlhYmxl ICoKK2dldFJlcGxheWVkQ1Yodm9pZCkKK3sKKwlyZXR1cm4gJlhMb2dSZWNvdmVyeUN0bC0+ cmVwbGF5ZWRDVjsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXgg OTY2MmUzMTZjOS4uOGM4ZGJlODEyZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2Vu ZGVyLmMKQEAgLTE1NDgsNiArMTU0OCw3IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0 ciBsb2MpCiB7CiAJaW50CQkJd2FrZUV2ZW50czsKIAlzdGF0aWMgWExvZ1JlY1B0ciBSZWNl bnRGbHVzaFB0ciA9IEludmFsaWRYTG9nUmVjUHRyOworCUNvbmRpdGlvblZhcmlhYmxlICpy ZXBsYXllZENWID0gZ2V0UmVwbGF5ZWRDVigpOwogCiAJLyoKIAkgKiBGYXN0IHBhdGggdG8g YXZvaWQgYWNxdWlyaW5nIHRoZSBzcGlubG9jayBpbiBjYXNlIHdlIGFscmVhZHkga25vdyB3 ZQpAQCAtMTU2Niw3ICsxNTY3LDYgQEAgV2FsU25kV2FpdEZvcldhbChYTG9nUmVjUHRyIGxv YykKIAogCWZvciAoOzspCiAJewotCQlsb25nCQlzbGVlcHRpbWU7CiAKIAkJLyogQ2xlYXIg YW55IGFscmVhZHktcGVuZGluZyB3YWtldXBzICovCiAJCVJlc2V0TGF0Y2goTXlMYXRjaCk7 CkBAIC0xNjUwLDIwICsxNjUwLDM1IEBAIFdhbFNuZFdhaXRGb3JXYWwoWExvZ1JlY1B0ciBs b2MpCiAJCVdhbFNuZEtlZXBhbGl2ZUlmTmVjZXNzYXJ5KCk7CiAKIAkJLyoKLQkJICogU2xl ZXAgdW50aWwgc29tZXRoaW5nIGhhcHBlbnMgb3Igd2UgdGltZSBvdXQuICBBbHNvIHdhaXQg Zm9yIHRoZQotCQkgKiBzb2NrZXQgYmVjb21pbmcgd3JpdGFibGUsIGlmIHRoZXJlJ3Mgc3Rp bGwgcGVuZGluZyBvdXRwdXQuCisJCSAqIFdoZW4gbm90IGluIHJlY292ZXJ5LCBzbGVlcCB1 bnRpbCBzb21ldGhpbmcgaGFwcGVucyBvciB3ZSB0aW1lIG91dC4KKwkJICogQWxzbyB3YWl0 IGZvciB0aGUgc29ja2V0IGJlY29taW5nIHdyaXRhYmxlLCBpZiB0aGVyZSdzIHN0aWxsIHBl bmRpbmcgb3V0cHV0LgogCQkgKiBPdGhlcndpc2Ugd2UgbWlnaHQgc2l0IG9uIHNlbmRhYmxl IG91dHB1dCBkYXRhIHdoaWxlIHdhaXRpbmcgZm9yCiAJCSAqIG5ldyBXQUwgdG8gYmUgZ2Vu ZXJhdGVkLiAgKEJ1dCBpZiB3ZSBoYXZlIG5vdGhpbmcgdG8gc2VuZCwgd2UgZG9uJ3QKIAkJ ICogd2FudCB0byB3YWtlIG9uIHNvY2tldC13cml0YWJsZS4pCiAJCSAqLwotCQlzbGVlcHRp bWUgPSBXYWxTbmRDb21wdXRlU2xlZXB0aW1lKEdldEN1cnJlbnRUaW1lc3RhbXAoKSk7CisJ CWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkpCisJCXsKKwkJCWxvbmcJCXNsZWVwdGltZTsK KwkJCXNsZWVwdGltZSA9IFdhbFNuZENvbXB1dGVTbGVlcHRpbWUoR2V0Q3VycmVudFRpbWVz dGFtcCgpKTsKIAotCQl3YWtlRXZlbnRzID0gV0xfU09DS0VUX1JFQURBQkxFOworCQkJd2Fr ZUV2ZW50cyA9IFdMX1NPQ0tFVF9SRUFEQUJMRTsKIAotCQlpZiAocHFfaXNfc2VuZF9wZW5k aW5nKCkpCi0JCQl3YWtlRXZlbnRzIHw9IFdMX1NPQ0tFVF9XUklURUFCTEU7CisJCQlpZiAo cHFfaXNfc2VuZF9wZW5kaW5nKCkpCisJCQkJd2FrZUV2ZW50cyB8PSBXTF9TT0NLRVRfV1JJ VEVBQkxFOwogCi0JCVdhbFNuZFdhaXQod2FrZUV2ZW50cywgc2xlZXB0aW1lLCBXQUlUX0VW RU5UX1dBTF9TRU5ERVJfV0FJVF9XQUwpOworCQkJV2FsU25kV2FpdCh3YWtlRXZlbnRzLCBz bGVlcHRpbWUgKiAxMCwgV0FJVF9FVkVOVF9XQUxfU0VOREVSX1dBSVRfV0FMKTsKKwkJfQor CQllbHNlCisJCS8qCisJCSAqIFdlIGFyZSBpbiB0aGUgbG9naWNhbCBkZWNvZGluZyBvbiBz dGFuZGJ5IGNhc2UuCisJCSAqIFdlIGFyZSB3YWl0aW5nIGZvciB0aGUgc3RhcnR1cCBwcm9j ZXNzIHRvIHJlcGxheSB3YWwgcmVjb3JkKHMpIHVzaW5nCisJCSAqIGEgdGltZW91dCBpbiBj YXNlIHdlIGFyZSByZXF1ZXN0ZWQgdG8gc3RvcC4KKwkJICovCisJCXsKKwkJCUNvbmRpdGlv blZhcmlhYmxlUHJlcGFyZVRvU2xlZXAocmVwbGF5ZWRDVik7CisJCQlDb25kaXRpb25WYXJp YWJsZVRpbWVkU2xlZXAocmVwbGF5ZWRDViwgMTAwMCwKKwkJCQkJCQkJCQlXQUlUX0VWRU5U X1dBTF9TRU5ERVJfV0FJVF9SRVBMQVkpOworCQl9CiAJfQogCiAJLyogcmVhY3RpdmF0ZSBs YXRjaCBzbyBXYWxTbmRMb29wIGtub3dzIHRvIGNvbnRpbnVlICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKaW5kZXggYjJhYmQ3NWRkYi4uM2Y2MDU5ODA1 YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwpAQCAtNDU3 LDYgKzQ1Nyw5IEBAIHBnc3RhdF9nZXRfd2FpdF9pcGMoV2FpdEV2ZW50SVBDIHcpCiAJCWNh c2UgV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfV0FJVF9TVEFSVDoKIAkJCWV2ZW50X25hbWUg PSAiV2FsUmVjZWl2ZXJXYWl0U3RhcnQiOwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVO VF9XQUxfU0VOREVSX1dBSVRfUkVQTEFZOgorCQkJZXZlbnRfbmFtZSA9ICJXYWxSZWNlaXZl cldhaXRSZXBsYXkiOworCQkJYnJlYWs7CiAJCWNhc2UgV0FJVF9FVkVOVF9YQUNUX0dST1VQ X1VQREFURToKIAkJCWV2ZW50X25hbWUgPSAiWGFjdEdyb3VwVXBkYXRlIjsKIAkJCWJyZWFr OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3hsb2dyZWNvdmVyeS5oCmluZGV4IGYzMzk4NDI1ZDguLjBhZmQ1 N2VjYWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgKQEAgLTE1LDYgKzE1LDcg QEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNsdWRlICJsaWIvc3Ry aW5naW5mby5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAKIC8qCiAgKiBSZWNvdmVyeSB0YXJnZXQg dHlwZS4KQEAgLTE1NSw0ICsxNTYsNiBAQCBleHRlcm4gdm9pZCBSZWNvdmVyeVJlcXVpcmVz SW50UGFyYW1ldGVyKGNvbnN0IGNoYXIgKnBhcmFtX25hbWUsIGludCBjdXJyVmFsdWUsCiAK IGV4dGVybiB2b2lkIHhsb2dfb3V0ZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpOwogCitleHRlcm4gQ29uZGl0aW9uVmFyaWFibGUgKmdldFJlcGxheWVk Q1Yodm9pZCk7CisKICNlbmRpZgkJCQkJCQkvKiBYTE9HUkVDT1ZFUllfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmggYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaAppbmRleCA4MzM2YTZlNzE5Li41NTBlZjMxMDdm IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaAorKysg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxzZW5kZXIuaApAQCAtMTMsNiArMTMsNyBA QAogI2RlZmluZSBfV0FMU0VOREVSX0gKIAogI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1 ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAKIC8qCiAgKiBXaGF0IHRvIGRv IHdpdGggYSBzbmFwc2hvdCBpbiBjcmVhdGUgcmVwbGljYXRpb24gc2xvdCBjb21tYW5kLgpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvd2FpdF9ldmVudC5oCmluZGV4IDBiMjEwMGJlNGEuLjMwYzJjZjM1YWUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAorKysgYi9zcmMvaW5j bHVkZS91dGlscy93YWl0X2V2ZW50LmgKQEAgLTEyOCw2ICsxMjgsNyBAQCB0eXBlZGVmIGVu dW0KIAlXQUlUX0VWRU5UX1NZTkNfUkVQLAogCVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX0VY SVQsCiAJV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfV0FJVF9TVEFSVCwKKwlXQUlUX0VWRU5U X1dBTF9TRU5ERVJfV0FJVF9SRVBMQVksCiAJV0FJVF9FVkVOVF9YQUNUX0dST1VQX1VQREFU RQogfSBXYWl0RXZlbnRJUEM7CiAKLS0gCjIuMzQuMQoK --------------68IV02WKbO30CE6z3vbE95XU Content-Type: text/plain; charset=UTF-8; name="v28-0005-Doc-changes-describing-details-about-logical-dec.patch" Content-Disposition: attachment; filename*0="v28-0005-Doc-changes-describing-details-about-logical-dec.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0NDQ1NjdjNDBmNjUzYWM4NjllMGEwMTAyOWU3N2JlNDkwNWYzMmI5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogV2VkLCA3IERlYyAyMDIyIDA4OjE4OjEzICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjggNS82XSBEb2MgY2hhbmdlcyBkZXNjcmliaW5nIGRldGFpbHMgYWJvdXQgbG9naWNh bAogZGVjb2RpbmcuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQgKGluIGFuIG9sZGVyIHZlcnNp b24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZvdApSZXZpZXdlZC1CeTogQmVy dHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0IEhhYXMsIEZhYnJpemlvIGRl IFJveWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sIHwg MjEgKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9u cygrKQogMTAwLjAlIGRvYy9zcmMvc2dtbC8KCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv bG9naWNhbGRlY29kaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNn bWwKaW5kZXggMzhlZTY5ZGNjYy4uOWFjZjE2MDM3YSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsZGVj b2Rpbmcuc2dtbApAQCAtMzE2LDYgKzMxNiwyNyBAQCBwb3N0Z3Jlcz0jIHNlbGVjdCAqIGZy b20gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxM LCBOVQogICAgICBtYXkgY29uc3VtZSBjaGFuZ2VzIGZyb20gYSBzbG90IGF0IGFueSBnaXZl biB0aW1lLgogICAgIDwvcGFyYT4KIAorICAgIDxwYXJhPgorICAgICBBIGxvZ2ljYWwgcmVw bGljYXRpb24gc2xvdCBjYW4gYWxzbyBiZSBjcmVhdGVkIG9uIGEgaG90IHN0YW5kYnkuIFRv IHByZXZlbnQKKyAgICAgPGNvbW1hbmQ+VkFDVVVNPC9jb21tYW5kPiBmcm9tIHJlbW92aW5n IHJlcXVpcmVkIHJvd3MgZnJvbSB0aGUgc3lzdGVtCisgICAgIGNhdGFsb2dzLCA8dmFybmFt ZT5ob3Rfc3RhbmRieV9mZWVkYmFjazwvdmFybmFtZT4gc2hvdWxkIGJlIHNldCBvbiB0aGUK KyAgICAgc3RhbmRieS4gSW4gc3BpdGUgb2YgdGhhdCwgaWYgYW55IHJlcXVpcmVkIHJvd3Mg Z2V0IHJlbW92ZWQsIHRoZSBzbG90IGdldHMKKyAgICAgaW52YWxpZGF0ZWQuIEl0J3MgaGln aGx5IHJlY29tbWVuZGVkIHRvIHVzZSBhIHBoeXNpY2FsIHNsb3QgYmV0d2VlbiB0aGUgcHJp bWFyeQorICAgICBhbmQgdGhlIHN0YW5kYnkuIE90aGVyd2lzZSwgaG90X3N0YW5kYnlfZmVl ZGJhY2sgd2lsbCB3b3JrLCBidXQgb25seSB3aGlsZSB0aGUKKyAgICAgY29ubmVjdGlvbiBp cyBhbGl2ZSAoZm9yIGV4YW1wbGUgYSBub2RlIHJlc3RhcnQgd291bGQgYnJlYWsgaXQpLiBF eGlzdGluZworICAgICBsb2dpY2FsIHNsb3RzIG9uIHN0YW5kYnkgYWxzbyBnZXQgaW52YWxp ZGF0ZWQgaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgcmVkdWNlZCB0bworICAgICBsZXNz IHRoYW4gJ2xvZ2ljYWwnLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBGb3Ig YSBsb2dpY2FsIHNsb3QgdG8gYmUgY3JlYXRlZCwgaXQgYnVpbGRzIGEgaGlzdG9yaWMgc25h cHNob3QsIGZvciB3aGljaAorICAgICBpbmZvcm1hdGlvbiBvZiBhbGwgdGhlIGN1cnJlbnRs eSBydW5uaW5nIHRyYW5zYWN0aW9ucyBpcyBlc3NlbnRpYWwuIE9uCisgICAgIHByaW1hcnks IHRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlLCBidXQgb24gc3RhbmRieSwgdGhpcyBp bmZvcm1hdGlvbgorICAgICBoYXMgdG8gYmUgb2J0YWluZWQgZnJvbSBwcmltYXJ5LiBTbywg c2xvdCBjcmVhdGlvbiBtYXkgd2FpdCBmb3Igc29tZQorICAgICBhY3Rpdml0eSB0byBoYXBw ZW4gb24gdGhlIHByaW1hcnkuIElmIHRoZSBwcmltYXJ5IGlzIGlkbGUsIGNyZWF0aW5nIGEK KyAgICAgbG9naWNhbCBzbG90IG9uIHN0YW5kYnkgbWF5IHRha2UgYSBub3RpY2VhYmxlIHRp bWUuCisgICAgPC9wYXJhPgorCiAgICAgPGNhdXRpb24+CiAgICAgIDxwYXJhPgogICAgICAg UmVwbGljYXRpb24gc2xvdHMgcGVyc2lzdCBhY3Jvc3MgY3Jhc2hlcyBhbmQga25vdyBub3Ro aW5nIGFib3V0IHRoZSBzdGF0ZQotLSAKMi4zNC4xCgo= --------------68IV02WKbO30CE6z3vbE95XU Content-Type: text/plain; charset=UTF-8; name="v28-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename*0="v28-0004-New-TAP-test-for-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA1ZmMxYjE5YTcwYzBhNzA2M2EwODZkZWQ0MGU2NTcyYjExN2VhNmJkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogV2VkLCA3IERlYyAyMDIyIDA4OjE3OjE3ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjggNC82XSBOZXcgVEFQIHRlc3QgZm9yIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRi eS4KCkF1dGhvcjogQ3JhaWcgUmluZ2VyIChpbiBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBL aGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QKUmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2 b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxs bwotLS0KIHNyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0gICAgICB8 ICAzNyArKwogc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAg IHwgICAxICsKIC4uLi90LzAzNF9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwgICAgICAg ICB8IDUwMCArKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNTM4IGluc2Vy dGlvbnMoKykKICAgNS45JSBzcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC8KICA5My43 JSBzcmMvdGVzdC9yZWNvdmVyeS90LwoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3BlcmwvUG9z dGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0gYi9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVz dC9DbHVzdGVyLnBtCmluZGV4IDc0MTExODhkYzguLjE3MWRjODUzODggMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KKysrIGIvc3JjL3Rl c3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbQpAQCAtMzAzNyw2ICszMDM3LDQz IEBAICRTSUd7VEVSTX0gPSAkU0lHe0lOVH0gPSBzdWIgewogCiA9cG9kCiAKKz1pdGVtICRu b2RlLT5jcmVhdGVfbG9naWNhbF9zbG90X29uX3N0YW5kYnkoc2VsZiwgbWFzdGVyLCBzbG90 X25hbWUsIGRibmFtZSkKKworQ3JlYXRlIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBvbiBn aXZlbiBzdGFuZGJ5CisKKz1jdXQKKworc3ViIGNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3Rh bmRieQoreworCW15ICgkc2VsZiwgJG1hc3RlciwgJHNsb3RfbmFtZSwgJGRibmFtZSkgPSBA XzsKKwlteSAoJHN0ZG91dCwgJHN0ZGVycik7CisKKwlteSAkaGFuZGxlOworCisJJGhhbmRs ZSA9IElQQzo6UnVuOjpzdGFydChbJ3BnX3JlY3Zsb2dpY2FsJywgJy1kJywgJHNlbGYtPmNv bm5zdHIoJGRibmFtZSksICctUCcsICd0ZXN0X2RlY29kaW5nJywgJy1TJywgJHNsb3RfbmFt ZSwgJy0tY3JlYXRlLXNsb3QnXSwgJz4nLCBcJHN0ZG91dCwgJzI+JywgXCRzdGRlcnIpOwor CisJIyBPbmNlIHNsb3QgcmVzdGFydF9sc24gaXMgY3JlYXRlZCwgdGhlIHN0YW5kYnkgbG9v a3MgZm9yIHhsX3J1bm5pbmdfeGFjdHMKKwkjIFdBTCByZWNvcmQgZnJvbSB0aGUgcmVzdGFy dF9sc24gb253YXJkcy4gU28gZmlyc3RseSwgd2FpdCB1bnRpbCB0aGUgc2xvdAorCSMgcmVz dGFydF9sc24gaXMgZXZhbHVhdGVkLgorCisJJHNlbGYtPnBvbGxfcXVlcnlfdW50aWwoCisJ CSdwb3N0Z3JlcycsIHFxWworCQlTRUxFQ1QgcmVzdGFydF9sc24gSVMgTk9UIE5VTEwKKwkJ RlJPTSBwZ19jYXRhbG9nLnBnX3JlcGxpY2F0aW9uX3Nsb3RzIFdIRVJFIHNsb3RfbmFtZSA9 ICckc2xvdF9uYW1lJworCV0pIG9yIGRpZSAidGltZWQgb3V0IHdhaXRpbmcgZm9yIGxvZ2lj YWwgc2xvdCB0byBjYWxjdWxhdGUgaXRzIHJlc3RhcnRfbHNuIjsKKworCSMgTm93IGFycmFu Z2UgZm9yIHRoZSB4bF9ydW5uaW5nX3hhY3RzIHJlY29yZCBmb3Igd2hpY2ggcGdfcmVjdmxv Z2ljYWwKKwkjIGlzIHdhaXRpbmcuCisJJG1hc3Rlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICdDSEVDS1BPSU5UJyk7CisKKwkkaGFuZGxlLT5maW5pc2goKTsKKworCWlzKCRzZWxmLT5z bG90KCRzbG90X25hbWUpLT57J3Nsb3RfdHlwZSd9LCAnbG9naWNhbCcsICRzbG90X25hbWUg LiAnIG9uIHN0YW5kYnkgY3JlYXRlZCcpCisJCW9yIGRpZSAiY291bGQgbm90IGNyZWF0ZSBz bG90IiAuICRzbG90X25hbWU7Cit9CisKKz1wb2QKKwogPWJhY2sKIAogPWN1dApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9yZWNvdmVy eS9tZXNvbi5idWlsZAppbmRleCBiMGUzOTgzNjNmLi5kNjhlZTliNjYzIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9yZWNvdmVy eS9tZXNvbi5idWlsZApAQCAtMzgsNiArMzgsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8w MzFfcmVjb3ZlcnlfY29uZmxpY3QucGwnLAogICAgICAgJ3QvMDMyX3JlbGZpbGVub2RlX3Jl dXNlLnBsJywKICAgICAgICd0LzAzM19yZXBsYXlfdHNwX2Ryb3BzLnBsJywKKyAgICAgICd0 LzAzNF9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwnLAogICAgIF0sCiAgIH0sCiB9CmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNF9zdGFuZGJ5X2xvZ2ljYWxfZGVj b2RpbmcucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNF9zdGFuZGJ5X2xvZ2ljYWxfZGVj b2RpbmcucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTc3Zjlh NjQzNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM0X3N0YW5k YnlfbG9naWNhbF9kZWNvZGluZy5wbApAQCAtMCwwICsxLDUwMCBAQAorIyBsb2dpY2FsIGRl Y29kaW5nIG9uIHN0YW5kYnkgOiB0ZXN0IGxvZ2ljYWwgZGVjb2RpbmcsCisjIHJlY292ZXJ5 IGNvbmZsaWN0IGFuZCBzdGFuZGJ5IHByb21vdGlvbi4KKwordXNlIHN0cmljdDsKK3VzZSB3 YXJuaW5nczsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgVGVzdDo6 TW9yZSB0ZXN0cyA9PiAzODsKK3VzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOworCitteSAo JHN0ZGluLCAkc3Rkb3V0LCAkc3RkZXJyLCAkcmV0LCAkaGFuZGxlLCAkc2xvdCk7CisKK215 ICRub2RlX3ByaW1hcnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3ByaW1h cnknKTsKK215ICRub2RlX3N0YW5kYnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoJ3N0YW5kYnknKTsKKworIyBOYW1lIGZvciB0aGUgcGh5c2ljYWwgc2xvdCBvbiBwcmlt YXJ5CitteSAkcHJpbWFyeV9zbG90bmFtZSA9ICdwcmltYXJ5X3BoeXNpY2FsJzsKKworIyBy ZXR1cm4gdGhlIHNpemUgb2YgbG9nZmlsZSBvZiAkbm9kZSBpbiBieXRlcworc3ViIGdldF9s b2dfc2l6ZQoreworCW15ICgkbm9kZSkgPSBAXzsKKworCXJldHVybiAoc3RhdCAkbm9kZS0+ bG9nZmlsZSlbN107Cit9CisKKyMgZmluZCAkcGF0IGluIGxvZ2ZpbGUgb2YgJG5vZGUgYWZ0 ZXIgJG9mZi10aCBieXRlCitzdWIgZmluZF9pbl9sb2cKK3sKKwlteSAoJG5vZGUsICRwYXQs ICRvZmYpID0gQF87CisKKwkkb2ZmID0gMCB1bmxlc3MgZGVmaW5lZCAkb2ZmOworCW15ICRs b2cgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6c2x1cnBfZmlsZSgkbm9kZS0+bG9nZmls ZSk7CisJcmV0dXJuIDAgaWYgKGxlbmd0aCgkbG9nKSA8PSAkb2ZmKTsKKworCSRsb2cgPSBz dWJzdHIoJGxvZywgJG9mZik7CisKKwlyZXR1cm4gJGxvZyA9fiBtLyRwYXQvOworfQorCisj IEZldGNoIHhtaW4gY29sdW1ucyBmcm9tIHNsb3QncyBwZ19yZXBsaWNhdGlvbl9zbG90cyBy b3csIGFmdGVyIHdhaXRpbmcgZm9yCisjIGdpdmVuIGJvb2xlYW4gY29uZGl0aW9uIHRvIGJl IHRydWUgdG8gZW5zdXJlIHdlJ3ZlIHJlYWNoZWQgYSBxdWllc2NlbnQgc3RhdGUuCitzdWIg d2FpdF9mb3JfeG1pbnMKK3sKKwlteSAoJG5vZGUsICRzbG90bmFtZSwgJGNoZWNrX2V4cHIp ID0gQF87CisKKwkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgcXFb CisJCVNFTEVDVCAkY2hlY2tfZXhwcgorCQlGUk9NIHBnX2NhdGFsb2cucGdfcmVwbGljYXRp b25fc2xvdHMKKwkJV0hFUkUgc2xvdF9uYW1lID0gJyRzbG90bmFtZSc7CisJXSkgb3IgZGll ICJUaW1lZCBvdXQgd2FpdGluZyBmb3Igc2xvdCB4bWlucyB0byBhZHZhbmNlIjsKK30KKwor IyBDcmVhdGUgdGhlIHJlcXVpcmVkIGxvZ2ljYWwgc2xvdHMgb24gc3RhbmRieS4KK3N1YiBj cmVhdGVfbG9naWNhbF9zbG90cworeworCSRub2RlX3N0YW5kYnktPmNyZWF0ZV9sb2dpY2Fs X3Nsb3Rfb25fc3RhbmRieSgkbm9kZV9wcmltYXJ5LCAnaW5hY3RpdmVzbG90JywgJ3Rlc3Rk YicpOworCSRub2RlX3N0YW5kYnktPmNyZWF0ZV9sb2dpY2FsX3Nsb3Rfb25fc3RhbmRieSgk bm9kZV9wcmltYXJ5LCAnYWN0aXZlc2xvdCcsICd0ZXN0ZGInKTsKK30KKworIyBBY3F1aXJl IG9uZSBvZiB0aGUgc3RhbmRieSBsb2dpY2FsIHNsb3RzIGNyZWF0ZWQgYnkgY3JlYXRlX2xv Z2ljYWxfc2xvdHMoKS4KKyMgSW4gY2FzZSB3YWl0IGlzIHRydWUgd2UgYXJlIHdhaXRpbmcg Zm9yIGFuIGFjdGl2ZSBwaWQgb24gdGhlICdhY3RpdmVzbG90JyBzbG90LgorIyBJZiB3YWl0 IGlzIG5vdCB0cnVlIGl0IG1lYW5zIHdlIGFyZSB0ZXN0aW5nIGEga25vd24gZmFpbHVyZSBz Y2VuYXJpby4KK3N1YiBtYWtlX3Nsb3RfYWN0aXZlCit7CisJbXkgJHdhaXQgPSBzaGlmdDsK KwlteSAkc2xvdF91c2VyX2hhbmRsZTsKKworCXByaW50ICJzdGFydGluZyBwZ19yZWN2bG9n aWNhbFxuIjsKKwkkc2xvdF91c2VyX2hhbmRsZSA9IElQQzo6UnVuOjpzdGFydChbJ3BnX3Jl Y3Zsb2dpY2FsJywgJy1kJywgJG5vZGVfc3RhbmRieS0+Y29ubnN0cigndGVzdGRiJyksICct UycsICdhY3RpdmVzbG90JywgJy1mJywgJy0nLCAnLS1uby1sb29wJywgJy0tc3RhcnQnXSwg Jz4nLCBcJHN0ZG91dCwgJzI+JywgXCRzdGRlcnIpOworCisJaWYgKCR3YWl0KQorCSMgbWFr ZSBzdXJlIGFjdGl2ZXNsb3QgaXMgaW4gdXNlCisJeworCQkkbm9kZV9zdGFuZGJ5LT5wb2xs X3F1ZXJ5X3VudGlsKCd0ZXN0ZGInLAorCQkJIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAxIEZS T00gcGdfcmVwbGljYXRpb25fc2xvdHMgV0hFUkUgc2xvdF9uYW1lID0gJ2FjdGl2ZXNsb3Qn IEFORCBhY3RpdmVfcGlkIElTIE5PVCBOVUxMKSIKKwkJKSBvciBkaWUgInNsb3QgbmV2ZXIg YmVjYW1lIGFjdGl2ZSI7CisJfQorCisJcmV0dXJuICRzbG90X3VzZXJfaGFuZGxlOworfQor CisjIENoZWNrIGlmIGFsbCB0aGUgc2xvdHMgb24gc3RhbmRieSBhcmUgZHJvcHBlZC4gVGhl c2UgaW5jbHVkZSB0aGUgJ2FjdGl2ZXNsb3QnCisjIHRoYXQgd2FzIGFjcXVpcmVkIGJ5IG1h a2Vfc2xvdF9hY3RpdmUoKSwgYW5kIHRoZSBub24tYWN0aXZlICdpbmFjdGl2ZXNsb3QnLgor c3ViIGNoZWNrX3Nsb3RzX2Ryb3BwZWQKK3sKKwlteSAoJHNsb3RfdXNlcl9oYW5kbGUpID0g QF87CisJbXkgJHJldHVybjsKKworCWlzKCRub2RlX3N0YW5kYnktPnNsb3QoJ2luYWN0aXZl c2xvdCcpLT57J3Nsb3RfdHlwZSd9LCAnJywgJ2luYWN0aXZlc2xvdCBvbiBzdGFuZGJ5IGRy b3BwZWQnKTsKKwlpcygkbm9kZV9zdGFuZGJ5LT5zbG90KCdhY3RpdmVzbG90JyktPnsnc2xv dF90eXBlJ30sICcnLCAnYWN0aXZlc2xvdCBvbiBzdGFuZGJ5IGRyb3BwZWQnKTsKKworCSMg b3VyIGNsaWVudCBzaG91bGQndmUgdGVybWluYXRlZCBpbiByZXNwb25zZSB0byB0aGUgd2Fs c2VuZGVyIGVycm9yCisJJHNsb3RfdXNlcl9oYW5kbGUtPmZpbmlzaDsKKwkkcmV0dXJuID0g JD87CisJY21wX29rKCRyZXR1cm4sICIhPSIsIDAsICJwZ19yZWN2bG9naWNhbCBleGl0ZWQg bm9uLXplcm8iKTsKKwlpZiAoJHJldHVybikgeworCQlsaWtlKCRzdGRlcnIsIHFyL2NvbmZs aWN0IHdpdGggcmVjb3ZlcnkvLCAnc2xvdCBoYXZlIGJlZW4gZHJvcHBlZCcpOworCX0KKwor CXJldHVybiAwOworfQorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBJbml0aWFs aXplIHByaW1hcnkgbm9kZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX3By aW1hcnktPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAxLCBoYXNfYXJjaGl2aW5nID0+IDEp OworJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHF7Cit3 YWxfbGV2ZWwgPSAnbG9naWNhbCcKK21heF9yZXBsaWNhdGlvbl9zbG90cyA9IDQKK21heF93 YWxfc2VuZGVycyA9IDQKK2xvZ19taW5fbWVzc2FnZXMgPSAnZGVidWcyJworbG9nX2Vycm9y X3ZlcmJvc2l0eSA9IHZlcmJvc2UKK30pOworJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZvOwor JG5vZGVfcHJpbWFyeS0+c3RhcnQ7CisKKyRub2RlX3ByaW1hcnktPnBzcWwoJ3Bvc3RncmVz JywgcVtDUkVBVEUgREFUQUJBU0UgdGVzdGRiXSk7CisKKyRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgndGVzdGRiJywgcXFbU0VMRUNUICogRlJPTSBwZ19jcmVhdGVfcGh5c2ljYWxfcmVw bGljYXRpb25fc2xvdCgnJHByaW1hcnlfc2xvdG5hbWUnKTtdKTsKK215ICRiYWNrdXBfbmFt ZSA9ICdiMSc7Ciskbm9kZV9wcmltYXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSW5pdGlhbGl6ZSBzdGFuZGJ5IG5vZGUKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX3N0YW5kYnktPmluaXRfZnJvbV9iYWNrdXAo CisJJG5vZGVfcHJpbWFyeSwgJGJhY2t1cF9uYW1lLAorCWhhc19zdHJlYW1pbmcgPT4gMSwK KwloYXNfcmVzdG9yaW5nID0+IDEpOworJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCisJcXFbcHJpbWFyeV9zbG90X25hbWUgPSAnJHByaW1hcnlfc2xv dG5hbWUnXSk7Ciskbm9kZV9zdGFuZGJ5LT5zdGFydDsKKyRub2RlX3ByaW1hcnktPndhaXRf Zm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxz bignZmx1c2gnKSk7CisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB0aGF0IGxvZ2ljYWwgZGVjb2Rpbmcgb24gdGhlIHN0 YW5kYnkKKyMgYmVoYXZlcyBjb3JyZWN0bHkuCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjcmVhdGVfbG9naWNhbF9zbG90cygpOwor Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBk ZWNvZGluZ190ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTtdKTsKKyRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgndGVzdGRiJywgcXFbSU5TRVJUIElOVE8gZGVjb2RpbmdfdGVzdCh4LHkpIFNF TEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHM7XSk7CisKKyRu b2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScs ICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKK215ICRyZXN1bHQgPSAkbm9kZV9z dGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbU0VMRUNUIHBnX2xvZ2ljYWxfc2xv dF9nZXRfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwpO10pOworCisjIHRlc3Qg aWYgYmFzaWMgZGVjb2Rpbmcgd29ya3MKK2lzKHNjYWxhcihteSBAZm9vYmFyID0gc3BsaXQg L14vbSwgJHJlc3VsdCksCisJMTQsICdEZWNvZGluZyBwcm9kdWNlZCAxNCByb3dzJyk7CisK KyMgSW5zZXJ0IHNvbWUgcm93cyBhbmQgdmVyaWZ5IHRoYXQgd2UgZ2V0IHRoZSBzYW1lIHJl c3VsdHMgZnJvbSBwZ19yZWN2bG9naWNhbAorIyBhbmQgdGhlIFNRTCBpbnRlcmZhY2UuCisk bm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsCisJcXFbSU5TRVJUIElOVE8gZGVj b2RpbmdfdGVzdCh4LHkpIFNFTEVDVCBzLCBzOjp0ZXh0IEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsNCkgcztdCispOworCitteSAkZXhwZWN0ZWQgPSBxe0JFR0lOCit0YWJsZSBwdWJsaWMu ZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjEgeVt0ZXh0XTonMScKK3RhYmxl IHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06MiB5W3RleHRdOicy JwordGFibGUgcHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTozIHlb dGV4dF06JzMnCit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVn ZXJdOjQgeVt0ZXh0XTonNCcKK0NPTU1JVH07CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9y X2NhdGNodXAoJG5vZGVfc3RhbmRieSwgJ3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbign Zmx1c2gnKSk7CisKK215ICRzdGRvdXRfc3FsID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3Fs KCd0ZXN0ZGInLAorCXFxW1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X3BlZWtf Y2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcs ICdza2lwLWVtcHR5LXhhY3RzJywgJzEnKTtdCispOworCitpcygkc3Rkb3V0X3NxbCwgJGV4 cGVjdGVkLCAnZ290IGV4cGVjdGVkIG91dHB1dCBmcm9tIFNRTCBkZWNvZGluZyBzZXNzaW9u Jyk7CisKK215ICRlbmRwb3MgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYics CisJIlNFTEVDVCBsc24gRlJPTSBwZ19sb2dpY2FsX3Nsb3RfcGVla19jaGFuZ2VzKCdhY3Rp dmVzbG90JywgTlVMTCwgTlVMTCkgT1JERVIgQlkgbHNuIERFU0MgTElNSVQgMTsiCispOwor cHJpbnQgIndhaXRpbmcgdG8gcmVwbGF5ICRlbmRwb3NcbiI7CisKKyMgSW5zZXJ0IHNvbWUg cm93cyBhZnRlciAkZW5kcG9zLCB3aGljaCB3ZSB3b24ndCByZWFkLgorJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3Qo eCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LDUwKSBzO10K Kyk7CisKKyRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRieSwg J3JlcGxheScsICRub2RlX3ByaW1hcnktPmxzbignZmx1c2gnKSk7CisKK215ICRzdGRvdXRf cmVjdiA9ICRub2RlX3N0YW5kYnktPnBnX3JlY3Zsb2dpY2FsX3VwdG8oCisgICAgJ3Rlc3Rk YicsICdhY3RpdmVzbG90JywgJGVuZHBvcywgMTgwLAorICAgICdpbmNsdWRlLXhpZHMnICAg ICA9PiAnMCcsCisgICAgJ3NraXAtZW1wdHkteGFjdHMnID0+ICcxJyk7CitjaG9tcCgkc3Rk b3V0X3JlY3YpOworaXMoJHN0ZG91dF9yZWN2LCAkZXhwZWN0ZWQsCisgICAgJ2dvdCBzYW1l IGV4cGVjdGVkIG91dHB1dCBmcm9tIHBnX3JlY3Zsb2dpY2FsIGRlY29kaW5nIHNlc3Npb24n KTsKKworJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgndGVzdGRiJywKKwkiU0VM RUNUIEVYSVNUUyAoU0VMRUNUIDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cyBXSEVSRSBz bG90X25hbWUgPSAnYWN0aXZlc2xvdCcgQU5EIGFjdGl2ZV9waWQgSVMgTlVMTCkiCispIG9y IGRpZSAic2xvdCBuZXZlciBiZWNhbWUgaW5hY3RpdmUiOworCiskc3Rkb3V0X3JlY3YgPSAk bm9kZV9zdGFuZGJ5LT5wZ19yZWN2bG9naWNhbF91cHRvKAorICAgICd0ZXN0ZGInLCAnYWN0 aXZlc2xvdCcsICRlbmRwb3MsIDE4MCwKKyAgICAnaW5jbHVkZS14aWRzJyAgICAgPT4gJzAn LAorICAgICdza2lwLWVtcHR5LXhhY3RzJyA9PiAnMScpOworY2hvbXAoJHN0ZG91dF9yZWN2 KTsKK2lzKCRzdGRvdXRfcmVjdiwgJycsICdwZ19yZWN2bG9naWNhbCBhY2tub3dsZWRnZWQg Y2hhbmdlcycpOworCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NS RUFURSBEQVRBQkFTRSBvdGhlcmRiJyk7CisKK2lzKCAkbm9kZV9wcmltYXJ5LT5wc3FsKAor ICAgICAgICAnb3RoZXJkYicsCisgICAgICAgICJTRUxFQ1QgbHNuIEZST00gcGdfbG9naWNh bF9zbG90X3BlZWtfY2hhbmdlcygnYWN0aXZlc2xvdCcsIE5VTEwsIE5VTEwpIE9SREVSIEJZ IGxzbiBERVNDIExJTUlUIDE7IgorICAgICksCisgICAgMywKKyAgICAncmVwbGF5aW5nIGxv Z2ljYWwgc2xvdCBmcm9tIGFub3RoZXIgZGF0YWJhc2UgZmFpbHMnKTsKKworIyBkcm9wIHRo ZSBsb2dpY2FsIHNsb3RzCiskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3JlcycsIHFbU0VM RUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnaW5hY3RpdmVzbG90JyldKTsKKyRub2Rl X3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlv bl9zbG90KCdhY3RpdmVzbG90JyldKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3ZlcnkgY29uZmxpY3Q6IEludmFsaWRh dGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11c2Ugc2xvdHMKKyMgU2NlbmFy aW8gMTogaG90X3N0YW5kYnlfZmVlZGJhY2sgb2ZmIGFuZCB2YWN1dW0gRlVMTAorIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY3JlYXRl X2xvZ2ljYWxfc2xvdHMoKTsKKworIyBPbmUgd2F5IHRvIHJlcHJvZHVjZSByZWNvdmVyeSBj b25mbGljdCBpcyB0byBydW4gVkFDVVVNIEZVTEwgd2l0aAorIyBob3Rfc3RhbmRieV9mZWVk YmFjayB0dXJuZWQgb2ZmIG9uIHRoZSBzdGFuZGJ5LgorJG5vZGVfc3RhbmRieS0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb2Zm CitdKTsKKyRub2RlX3N0YW5kYnktPnJlc3RhcnQ7CisjIGVuc3VyZSB3YWxyZWNlaXZlciBm ZWVkYmFjayBvZmYgYnkgd2FpdGluZyBmb3IgZXhwZWN0ZWQgeG1pbiBhbmQKKyMgY2F0YWxv Z194bWluIG9uIHByaW1hcnkuIEJvdGggc2hvdWxkIGJlIE5VTEwgc2luY2UgaHNfZmVlZGJh Y2sgaXMgb2ZmCit3YWl0X2Zvcl94bWlucygkbm9kZV9wcmltYXJ5LCAkcHJpbWFyeV9zbG90 bmFtZSwKKwkJCSAgICJ4bWluIElTIE5VTEwgQU5EIGNhdGFsb2dfeG1pbiBJUyBOVUxMIik7 CisKKyRoYW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEpOworCisjIFRoaXMgc2hvdWxkIHRy aWdnZXIgdGhlIGNvbmZsaWN0Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYics ICdWQUNVVU0gRlVMTCcpOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRu b2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOwor CisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5v ZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVj YXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIpLAorICAnaW5hY3RpdmVzbG90IHNs b3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBGVUxMJyk7CisKK29rKCBm aW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJpbnZhbGlkYXRpbmcgc2xvdCBc ImFjdGl2ZXNsb3RcIiBiZWNhdXNlIGl0IGNvbmZsaWN0cyB3aXRoIHJlY292ZXJ5IiksCisg ICdhY3RpdmVzbG90IHNsb3QgaW52YWxpZGF0aW9uIGlzIGxvZ2dlZCB3aXRoIHZhY3V1bSBG VUxMJyk7CisKKyMgVmVyaWZ5IHRoYXQgcGdfc3RhdF9kYXRhYmFzZV9jb25mbGljdHMuY29u ZmxfYWN0aXZlX2xvZ2ljYWxzbG90IGhhcyBiZWVuIHVwZGF0ZWQKK29rKCAkbm9kZV9zdGFu ZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3JlcycsCisJInNlbGVjdCAoY29uZmxf YWN0aXZlX2xvZ2ljYWxzbG90ID0gMSkgZnJvbSBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0 cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcpLAorCSdjb25mbF9hY3RpdmVfbG9n aWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcgY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOworCiskaGFuZGxlID0gbWFrZV9zbG90 X2FjdGl2ZSgwKTsKK3VzbGVlcCgxMDAwXzAwMCk7CisKKyMgV2UgYXJlIG5vdCBhYmxlIHRv IHJlYWQgZnJvbSB0aGUgc2xvdCBhcyBpdCBoYXMgYmVlbiBpbnZhbGlkYXRlZAorb2soIGZp bmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImNhbm5vdCByZWFkIGZyb20gbG9n aWNhbCByZXBsaWNhdGlvbiBzbG90IFwiYWN0aXZlc2xvdFwiIiksCisgICdjYW5ub3QgcmVh ZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCcpOworCisjIFR1cm4gaG90X3N0YW5k YnlfZmVlZGJhY2sgYmFjayBvbgorJG5vZGVfc3RhbmRieS0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicscVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KK10pOworJG5vZGVf c3RhbmRieS0+cmVzdGFydDsKKworIyBlbnN1cmUgd2FscmVjZWl2ZXIgZmVlZGJhY2sgc2Vu dCBieSB3YWl0aW5nIGZvciBleHBlY3RlZCB4bWluIGFuZAorIyBjYXRhbG9nX3htaW4gb24g cHJpbWFyeS4gV2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayBvbiwgeG1pbiBzaG91bGQgYWR2 YW5jZSwKKyMgYnV0IGNhdGFsb2dfeG1pbiBzaG91bGQgc3RpbGwgcmVtYWluIE5VTEwgc2lu Y2UgdGhlcmUgaXMgbm8gbG9naWNhbCBzbG90Lgord2FpdF9mb3JfeG1pbnMoJG5vZGVfcHJp bWFyeSwgJHByaW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBOT1QgTlVMTCBBTkQg Y2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3ZlcnkgY29uZmxpY3Q6IEludmFsaWRh dGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11c2Ugc2xvdHMKKyMgU2NlbmFy aW8gMjogY29uZmxpY3QgZHVlIHRvIHJvdyByZW1vdmFsIHdpdGggaG90X3N0YW5kYnlfZmVl ZGJhY2sgb2ZmLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9tIGluIHRoZSBz dGFuZGJ5IGxvZ2ZpbGUKK215ICRsb2dzdGFydCA9IGdldF9sb2dfc2l6ZSgkbm9kZV9zdGFu ZGJ5KTsKKworIyBkcm9wIHRoZSBsb2dpY2FsIHNsb3RzCiskbm9kZV9zdGFuZGJ5LT5wc3Fs KCdwb3N0Z3JlcycsIHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnaW5hY3Rp dmVzbG90JyldKTsKKyRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1Qg cGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdhY3RpdmVzbG90JyldKTsKKworY3JlYXRlX2xv Z2ljYWxfc2xvdHMoKTsKKworIyBPbmUgd2F5IHRvIHByb2R1Y2UgcmVjb3ZlcnkgY29uZmxp Y3QgaXMgdG8gY3JlYXRlL2Ryb3AgYSByZWxhdGlvbiBhbmQgbGF1bmNoIGEgdmFjdXVtCisj IHdpdGggaG90X3N0YW5kYnlfZmVlZGJhY2sgdHVybmVkIG9mZiBvbiB0aGUgc3RhbmRieS4K KyRub2RlX3N0YW5kYnktPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLHFbCitob3Rf c3RhbmRieV9mZWVkYmFjayA9IG9mZgorXSk7Ciskbm9kZV9zdGFuZGJ5LT5yZXN0YXJ0Owor IyBlbnN1cmUgd2FscmVjZWl2ZXIgZmVlZGJhY2sgb2ZmIGJ5IHdhaXRpbmcgZm9yIGV4cGVj dGVkIHhtaW4gYW5kCisjIGNhdGFsb2dfeG1pbiBvbiBwcmltYXJ5LiBCb3RoIHNob3VsZCBi ZSBOVUxMIHNpbmNlIGhzX2ZlZWRiYWNrIGlzIG9mZgord2FpdF9mb3JfeG1pbnMoJG5vZGVf cHJpbWFyeSwgJHByaW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1pbiBJUyBOVUxMIEFORCBj YXRhbG9nX3htaW4gSVMgTlVMTCIpOworCiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgx KTsKKworIyBUaGlzIHNob3VsZCB0cmlnZ2VyIHRoZSBjb25mbGljdAorJG5vZGVfcHJpbWFy eS0+c2FmZV9wc3FsKCd0ZXN0ZGInLCBxcVtDUkVBVEUgVEFCTEUgY29uZmxpY3RfdGVzdCh4 IGludGVnZXIsIHkgdGV4dCk7XSk7Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3Rk YicsIHFxW0RST1AgVEFCTEUgY29uZmxpY3RfdGVzdDtdKTsKKyRub2RlX3ByaW1hcnktPnNh ZmVfcHNxbCgndGVzdGRiJywgJ1ZBQ1VVTScpOworCiskbm9kZV9wcmltYXJ5LT53YWl0X2Zv cl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAkbm9kZV9wcmltYXJ5LT5sc24o J2ZsdXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlzc3VlZAorb2soIGZpbmRfaW5f bG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiaW5hY3Rp dmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFy dCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRpb24gaXMgbG9nZ2VkIGR1ZSB0 byByb3cgcmVtb3ZhbCcpOworCitvayggZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5 LAorICAiaW52YWxpZGF0aW5nIHNsb3QgXCJhY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25m bGljdHMgd2l0aCByZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdhY3RpdmVzbG90IHNsb3Qg aW52YWxpZGF0aW9uIGlzIGxvZ2dlZCBkdWUgdG8gcm93IHJlbW92YWwnKTsKKworIyBWZXJp ZnkgdGhhdCBwZ19zdGF0X2RhdGFiYXNlX2NvbmZsaWN0cy5jb25mbF9hY3RpdmVfbG9naWNh bHNsb3QgaGFzIGJlZW4gdXBkYXRlZAorIyB3ZSBub3cgZXhwZWN0IDIgY29uZmxpY3RzIHJl cG9ydGVkIGFzIHRoZSBjb3VudGVyIHBlcnNpc3QgYWNyb3NzIHJlc3RhcnRzCitvayggJG5v ZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgKKwkncG9zdGdyZXMnLAorCSJzZWxlY3Qg KGNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCA9IDIpIGZyb20gcGdfc3RhdF9kYXRhYmFzZV9j b25mbGljdHMgd2hlcmUgZGF0bmFtZSA9ICd0ZXN0ZGInIiwgJ3QnKSwKKwknY29uZmxfYWN0 aXZlX2xvZ2ljYWxzbG90IHVwZGF0ZWQnKSBvciBkaWUgIlRpbWVkIG91dCB3YWl0aW5nIGNv bmZsX2FjdGl2ZV9sb2dpY2Fsc2xvdCB0byBiZSB1cGRhdGVkIjsKKworJGhhbmRsZSA9IG1h a2Vfc2xvdF9hY3RpdmUoMCk7Cit1c2xlZXAoMTAwMF8wMDApOworCisjIFdlIGFyZSBub3Qg YWJsZSB0byByZWFkIGZyb20gdGhlIHNsb3QgYXMgaXQgaGFzIGJlZW4gaW52YWxpZGF0ZWQK K29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJjYW5ub3QgcmVhZCBm cm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCBcImFjdGl2ZXNsb3RcIiIsICRsb2dzdGFy dCksCisgICdjYW5ub3QgcmVhZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gc2xvdCcpOwor CisjIFR1cm4gaG90X3N0YW5kYnlfZmVlZGJhY2sgYmFjayBvbgorJG5vZGVfc3RhbmRieS0+ YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNr ID0gb24KK10pOworJG5vZGVfc3RhbmRieS0+cmVzdGFydDsKKworIyBlbnN1cmUgd2FscmVj ZWl2ZXIgZmVlZGJhY2sgc2VudCBieSB3YWl0aW5nIGZvciBleHBlY3RlZCB4bWluIGFuZAor IyBjYXRhbG9nX3htaW4gb24gcHJpbWFyeS4gV2l0aCBob3Rfc3RhbmRieV9mZWVkYmFjayBv biwgeG1pbiBzaG91bGQgYWR2YW5jZSwKKyMgYnV0IGNhdGFsb2dfeG1pbiBzaG91bGQgc3Rp bGwgcmVtYWluIE5VTEwgc2luY2UgdGhlcmUgaXMgbm8gbG9naWNhbCBzbG90Lgord2FpdF9m b3JfeG1pbnMoJG5vZGVfcHJpbWFyeSwgJHByaW1hcnlfc2xvdG5hbWUsCisJCQkgICAieG1p biBJUyBOT1QgTlVMTCBBTkQgY2F0YWxvZ194bWluIElTIE5VTEwiKTsKKworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVjb3Zlcnkg Y29uZmxpY3Q6IEludmFsaWRhdGUgY29uZmxpY3Rpbmcgc2xvdHMsIGluY2x1ZGluZyBpbi11 c2Ugc2xvdHMKKyMgU2NlbmFyaW8gMzogaW5jb3JyZWN0IHdhbF9sZXZlbCBvbiBwcmltYXJ5 LgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KworIyBnZXQgdGhlIHBvc2l0aW9uIHRvIHNlYXJjaCBmcm9tIGluIHRoZSBzdGFuZGJ5IGxv Z2ZpbGUKKyRsb2dzdGFydCA9IGdldF9sb2dfc2l6ZSgkbm9kZV9zdGFuZGJ5KTsKKworIyBk cm9wIHRoZSBsb2dpY2FsIHNsb3RzCiskbm9kZV9zdGFuZGJ5LT5wc3FsKCdwb3N0Z3Jlcycs IHFbU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgnaW5hY3RpdmVzbG90JyldKTsK KyRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtTRUxFQ1QgcGdfZHJvcF9yZXBs aWNhdGlvbl9zbG90KCdhY3RpdmVzbG90JyldKTsKKworY3JlYXRlX2xvZ2ljYWxfc2xvdHMo KTsKKworJGhhbmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMSk7CisKKyMgTWFrZSBwcmltYXJ5 IHdhbF9sZXZlbCByZXBsaWNhLiBUaGlzIHdpbGwgdHJpZ2dlciBzbG90IGNvbmZsaWN0Lgor JG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicscVsKK3dhbF9s ZXZlbCA9ICdyZXBsaWNhJworXSk7Ciskbm9kZV9wcmltYXJ5LT5yZXN0YXJ0OworCiskbm9k ZV9wcmltYXJ5LT53YWl0X2Zvcl9jYXRjaHVwKCRub2RlX3N0YW5kYnksICdyZXBsYXknLCAk bm9kZV9wcmltYXJ5LT5sc24oJ2ZsdXNoJykpOworCisjIG1lc3NhZ2Ugc2hvdWxkIGJlIGlz c3VlZAorb2soIGZpbmRfaW5fbG9nKAorICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRh dGluZyBzbG90IFwiaW5hY3RpdmVzbG90XCIgYmVjYXVzZSBpdCBjb25mbGljdHMgd2l0aCBy ZWNvdmVyeSIsICRsb2dzdGFydCksCisgICdpbmFjdGl2ZXNsb3Qgc2xvdCBpbnZhbGlkYXRp b24gaXMgbG9nZ2VkIGR1ZSB0byB3YWxfbGV2ZWwnKTsKKworb2soIGZpbmRfaW5fbG9nKAor ICAgJG5vZGVfc3RhbmRieSwKKyAgImludmFsaWRhdGluZyBzbG90IFwiYWN0aXZlc2xvdFwi IGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCAkbG9nc3RhcnQpLAorICAn YWN0aXZlc2xvdCBzbG90IGludmFsaWRhdGlvbiBpcyBsb2dnZWQgZHVlIHRvIHdhbF9sZXZl bCcpOworCisjIFZlcmlmeSB0aGF0IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzLmNvbmZs X2FjdGl2ZV9sb2dpY2Fsc2xvdCBoYXMgYmVlbiB1cGRhdGVkCisjIHdlIG5vdyBleHBlY3Qg MyBjb25mbGljdHMgcmVwb3J0ZWQgYXMgdGhlIGNvdW50ZXIgcGVyc2lzdCBhY3Jvc3MgcmVz dGFydHMKK29rKCAkbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKAorCSdwb3N0Z3Jl cycsCisJInNlbGVjdCAoY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90ID0gMykgZnJvbSBwZ19z dGF0X2RhdGFiYXNlX2NvbmZsaWN0cyB3aGVyZSBkYXRuYW1lID0gJ3Rlc3RkYiciLCAndCcp LAorCSdjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QgdXBkYXRlZCcpIG9yIGRpZSAiVGltZWQg b3V0IHdhaXRpbmcgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90IHRvIGJlIHVwZGF0ZWQiOwor CiskaGFuZGxlID0gbWFrZV9zbG90X2FjdGl2ZSgwKTsKK3VzbGVlcCgxMDAwXzAwMCk7CisK K29rKCBmaW5kX2luX2xvZygKKyAgICRub2RlX3N0YW5kYnksCisgICJsb2dpY2FsIGRlY29k aW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgd2FsX2xldmVsIHRvIGJlIGF0IGxlYXN0IGxvZ2lj YWwgb24gbWFzdGVyIiwgJGxvZ3N0YXJ0KSwKKyAgJ2Nhbm5vdCBzdGFydCByZXBsaWNhdGlv biBiZWNhdXNlIHdhbF9sZXZlbCA8IGxvZ2ljYWwgb24gbWFzdGVyJyk7CisKKyMgUmVzdG9y ZSBwcmltYXJ5IHdhbF9sZXZlbAorJG5vZGVfcHJpbWFyeS0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicscVsKK3dhbF9sZXZlbCA9ICdsb2dpY2FsJworXSk7Ciskbm9kZV9wcmlt YXJ5LT5yZXN0YXJ0OworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9z dGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsKKworJGhh bmRsZSA9IG1ha2Vfc2xvdF9hY3RpdmUoMCk7Cit1c2xlZXAoMTAwMF8wMDApOworCisjIGFz IHRoZSBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIHdlIHNob3VsZCBub3QgYmUgYWJsZSB0 byByZWFkCitvayggZmluZF9pbl9sb2coCisgICAkbm9kZV9zdGFuZGJ5LAorICAiY2Fubm90 IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCJhY3RpdmVzbG90XCIiLCAk bG9nc3RhcnQpLAorICAnY2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNs b3QnKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgRFJPUCBEQVRBQkFTRSBzaG91bGQgZHJvcHMgaXQncyBzbG90cywgaW5jbHVk aW5nIGFjdGl2ZSBzbG90cy4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX3N0YW5kYnktPnBzcWwoJ3Bvc3RncmVzJywgcVtT RUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdpbmFjdGl2ZXNsb3QnKV0pOworJG5v ZGVfc3RhbmRieS0+cHNxbCgncG9zdGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0 aW9uX3Nsb3QoJ2FjdGl2ZXNsb3QnKV0pOworY3JlYXRlX2xvZ2ljYWxfc2xvdHMoKTsKKyRo YW5kbGUgPSBtYWtlX3Nsb3RfYWN0aXZlKDEpOworIyBDcmVhdGUgYSBzbG90IG9uIGEgZGF0 YWJhc2UgdGhhdCB3b3VsZCBub3QgYmUgZHJvcHBlZC4gVGhpcyBzbG90IHNob3VsZCBub3QK KyMgZ2V0IGRyb3BwZWQuCiskbm9kZV9zdGFuZGJ5LT5jcmVhdGVfbG9naWNhbF9zbG90X29u X3N0YW5kYnkoJG5vZGVfcHJpbWFyeSwgJ290aGVyc2xvdCcsICdwb3N0Z3JlcycpOworCisj IGRyb3BkYiBvbiB0aGUgcHJpbWFyeSB0byB2ZXJpZnkgc2xvdHMgYXJlIGRyb3BwZWQgb24g c3RhbmRieQorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFbRFJPUCBE QVRBQkFTRSB0ZXN0ZGJdKTsKKworJG5vZGVfcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1cCgk bm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFyeS0+bHNuKCdmbHVzaCcpKTsK KworaXMoJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcVtTRUxFQ1Qg RVhJU1RTKFNFTEVDVCAxIEZST00gcGdfZGF0YWJhc2UgV0hFUkUgZGF0bmFtZSA9ICd0ZXN0 ZGInKV0pLCAnZicsCisJJ2RhdGFiYXNlIGRyb3BwZWQgb24gc3RhbmRieScpOworCitjaGVj a19zbG90c19kcm9wcGVkKCRoYW5kbGUpOworCitpcygkbm9kZV9zdGFuZGJ5LT5zbG90KCdv dGhlcnNsb3QnKS0+eydzbG90X3R5cGUnfSwgJ2xvZ2ljYWwnLAorCSdvdGhlcnNsb3Qgb24g c3RhbmRieSBub3QgZHJvcHBlZCcpOworCisjIENsZWFudXAgOiBtYW51YWxseSBkcm9wIHRo ZSBzbG90IHRoYXQgd2FzIG5vdCBkcm9wcGVkLgorJG5vZGVfc3RhbmRieS0+cHNxbCgncG9z dGdyZXMnLCBxW1NFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ290aGVyc2xvdCcp XSk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjIFRlc3Qgc3RhbmRieSBwcm9tb3Rpb24gYW5kIGxvZ2ljYWwgZGVjb2RpbmcgYmVo YXZpb3IKKyMgYWZ0ZXIgdGhlIHN0YW5kYnkgZ2V0cyBwcm9tb3RlZC4KKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyRub2RlX3ByaW1h cnktPnBzcWwoJ3Bvc3RncmVzJywgcVtDUkVBVEUgREFUQUJBU0UgdGVzdGRiXSk7Ciskbm9k ZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Rlc3RkYicsIHFxW0NSRUFURSBUQUJMRSBkZWNvZGlu Z190ZXN0KHggaW50ZWdlciwgeSB0ZXh0KTtdKTsKKworIyBjcmVhdGUgdGhlIGxvZ2ljYWwg c2xvdHMKK2NyZWF0ZV9sb2dpY2FsX3Nsb3RzKCk7CisKKyMgSW5zZXJ0IHNvbWUgcm93cyBi ZWZvcmUgdGhlIHByb21vdGlvbgorJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCd0ZXN0ZGIn LAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rlc3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4 dCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDQpIHM7XQorKTsKKworJG5vZGVfcHJpbWFyeS0+ d2FpdF9mb3JfY2F0Y2h1cCgkbm9kZV9zdGFuZGJ5LCAncmVwbGF5JywgJG5vZGVfcHJpbWFy eS0+bHNuKCdmbHVzaCcpKTsKKworIyBwcm9tb3RlCiskbm9kZV9zdGFuZGJ5LT5wcm9tb3Rl OworCisjIGluc2VydCBzb21lIHJvd3Mgb24gcHJvbW90ZWQgc3RhbmRieQorJG5vZGVfc3Rh bmRieS0+c2FmZV9wc3FsKCd0ZXN0ZGInLAorCXFxW0lOU0VSVCBJTlRPIGRlY29kaW5nX3Rl c3QoeCx5KSBTRUxFQ1Qgcywgczo6dGV4dCBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LDcpIHM7 XQorKTsKKworCiskZXhwZWN0ZWQgPSBxe0JFR0lOCit0YWJsZSBwdWJsaWMuZGVjb2Rpbmdf dGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjEgeVt0ZXh0XTonMScKK3RhYmxlIHB1YmxpYy5k ZWNvZGluZ190ZXN0OiBJTlNFUlQ6IHhbaW50ZWdlcl06MiB5W3RleHRdOicyJwordGFibGUg cHVibGljLmRlY29kaW5nX3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTozIHlbdGV4dF06JzMn Cit0YWJsZSBwdWJsaWMuZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjQgeVt0 ZXh0XTonNCcKK0NPTU1JVAorQkVHSU4KK3RhYmxlIHB1YmxpYy5kZWNvZGluZ190ZXN0OiBJ TlNFUlQ6IHhbaW50ZWdlcl06NSB5W3RleHRdOic1JwordGFibGUgcHVibGljLmRlY29kaW5n X3Rlc3Q6IElOU0VSVDogeFtpbnRlZ2VyXTo2IHlbdGV4dF06JzYnCit0YWJsZSBwdWJsaWMu ZGVjb2RpbmdfdGVzdDogSU5TRVJUOiB4W2ludGVnZXJdOjcgeVt0ZXh0XTonNycKK0NPTU1J VH07CisKKyMgY2hlY2sgdGhhdCB3ZSBhcmUgZGVjb2RpbmcgcHJlIGFuZCBwb3N0IHByb21v dGlvbiBpbnNlcnRlZCByb3dzCiskc3Rkb3V0X3NxbCA9ICRub2RlX3N0YW5kYnktPnNhZmVf cHNxbCgndGVzdGRiJywKKwlxcVtTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9w ZWVrX2NoYW5nZXMoJ2FjdGl2ZXNsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywg JzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7XQorKTsKKworaXMoJHN0ZG91dF9zcWws ICRleHBlY3RlZCwgJ2dvdCBleHBlY3RlZCBvdXRwdXQgZnJvbSBTUUwgZGVjb2Rpbmcgc2Vz c2lvbiBvbiBwcm9tb3RlZCBzdGFuZGJ5Jyk7Ci0tIAoyLjM0LjEKCg== --------------68IV02WKbO30CE6z3vbE95XU Content-Type: text/plain; charset=UTF-8; name="v28-0003-Allow-logical-decoding-on-standby.patch" Content-Disposition: attachment; filename="v28-0003-Allow-logical-decoding-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSA1MzM0Y2ZjNDFmZWU3ZTBjNzgzYzQxMTYzNjQzZThiOTAyNzIwMDM0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogV2VkLCA3IERlYyAyMDIyIDA4OjE2OjE1ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjggMy82XSBBbGxvdyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkuCgpBbGxvdyBh IGxvZ2ljYWwgc2xvdCB0byBiZSBjcmVhdGVkIG9uIHN0YW5kYnkuIFJlc3RyaWN0IGl0cyB1 c2FnZQpvciBpdHMgY3JlYXRpb24gaWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgbGVzcyB0 aGFuIGxvZ2ljYWwuCkR1cmluZyBzbG90IGNyZWF0aW9uLCBpdCdzIHJlc3RhcnRfbHNuIGlz IHNldCB0byB0aGUgbGFzdCByZXBsYXllZApMU04uIEVmZmVjdGl2ZWx5LCBhIGxvZ2ljYWwg c2xvdCBjcmVhdGlvbiBvbiBzdGFuZGJ5IHdhaXRzIGZvciBhbgp4bF9ydW5uaW5nX3hhY3Qg cmVjb3JkIHRvIGFycml2ZSBmcm9tIHByaW1hcnkuIENvbmZsaWN0aW5nIHNsb3RzCndvdWxk IGJlIGhhbmRsZWQgaW4gbmV4dCBjb21taXRzLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChp biBhbiBvbGRlciB2ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kIERyb3V2b3QK UmV2aWV3ZWQtQnk6IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBI YWFzLCBGYWJyaXppbyBkZSBSb3llcyBNZWxsbwotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hsb2cuYyAgICAgICAgIHwgMTEgKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9kZWNvZGUuYyAgfCAyMiArKysrKystCiBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xvZ2ljYWwuYyB8IDM3ICsrKysrKystLS0tLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgfCA3MyArKysrKysrKysrKysrKystLS0t LS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAgfCAyNyAr KysrKy0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggICAgICAgICAgICAgICAgIHwg IDEgKwogNiBmaWxlcyBjaGFuZ2VkLCAxMTggaW5zZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25z KC0pCiAgIDQuNSUgc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vCiAgMzYuNiUgc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC8KICA1Ny45JSBzcmMvYmFja2VuZC9yZXBsaWNh dGlvbi8KCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKaW5kZXggZTQ1MDNmYjM2ZC4u MDBmMDIxOTQyZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpAQCAtNDQ3MSw2 ICs0NDcxLDE3IEBAIExvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJvb2wgcmVzZXQpCiAJUmVh ZENvbnRyb2xGaWxlKCk7CiB9CiAKKy8qCisgKiBHZXQgdGhlIHdhbF9sZXZlbCBmcm9tIHRo ZSBjb250cm9sIGZpbGUuIEZvciBhIHN0YW5kYnksIHRoaXMgdmFsdWUgc2hvdWxkIGJlCisg KiBjb25zaWRlcmVkIGFzIGl0cyBhY3RpdmUgd2FsX2xldmVsLCBiZWNhdXNlIGl0IG1heSBi ZSBkaWZmZXJlbnQgZnJvbSB3aGF0CisgKiB3YXMgb3JpZ2luYWxseSBjb25maWd1cmVkIG9u IHN0YW5kYnkuCisgKi8KK1dhbExldmVsCitHZXRBY3RpdmVXYWxMZXZlbE9uU3RhbmRieSh2 b2lkKQoreworCXJldHVybiBDb250cm9sRmlsZS0+d2FsX2xldmVsOworfQorCiAvKgogICog SW5pdGlhbGl6YXRpb24gb2Ygc2hhcmVkIG1lbW9yeSBmb3IgWExPRwogICovCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRleCAyY2MwYWM5ZWIwLi5j MjEwNzIxYWIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2Rl LmMKQEAgLTE1MiwxMSArMTUyLDMxIEBAIHhsb2dfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQogCQkJICogY2FuIHJlc3RhcnQg ZnJvbSB0aGVyZS4KIAkJCSAqLwogCQkJYnJlYWs7CisJCWNhc2UgWExPR19QQVJBTUVURVJf Q0hBTkdFOgorCQl7CisJCQl4bF9wYXJhbWV0ZXJfY2hhbmdlICp4bHJlYyA9CisJCQkJKHhs X3BhcmFtZXRlcl9jaGFuZ2UgKikgWExvZ1JlY0dldERhdGEoYnVmLT5yZWNvcmQpOworCisJ CQkvKgorCQkJICogSWYgd2FsX2xldmVsIG9uIHByaW1hcnkgaXMgcmVkdWNlZCB0byBsZXNz IHRoYW4gbG9naWNhbCwgdGhlbiB3ZQorCQkJICogd2FudCB0byBwcmV2ZW50IGV4aXN0aW5n IGxvZ2ljYWwgc2xvdHMgZnJvbSBiZWluZyB1c2VkLgorCQkJICogRXhpc3RpbmcgbG9naWNh bCBzbG90cyBvbiBzdGFuZGJ5IGdldCBpbnZhbGlkYXRlZCB3aGVuIHRoaXMgV0FMCisJCQkg KiByZWNvcmQgaXMgcmVwbGF5ZWQ7IGFuZCBmdXJ0aGVyLCBzbG90IGNyZWF0aW9uIGZhaWxz IHdoZW4gdGhlCisJCQkgKiB3YWwgbGV2ZWwgaXMgbm90IHN1ZmZpY2llbnQ7IGJ1dCBhbGwg dGhlc2Ugb3BlcmF0aW9ucyBhcmUgbm90CisJCQkgKiBzeW5jaHJvbml6ZWQsIHNvIGEgbG9n aWNhbCBzbG90IG1heSBjcmVlcCBpbiB3aGlsZSB0aGUgd2FsX2xldmVsCisJCQkgKiBpcyBi ZWluZyByZWR1Y2VkLiBIZW5jZSB0aGlzIGV4dHJhIGNoZWNrLgorCQkJICovCisJCQlpZiAo eGxyZWMtPndhbF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJQ0FMKQorCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRF X1NUQVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSBy ZXF1aXJlcyAiCisJCQkJCQkJCSJ3YWxfbGV2ZWwgdG8gYmUgYXQgbGVhc3QgbG9naWNhbCBv biBtYXN0ZXIiKSkpOworCQkJYnJlYWs7CisJCX0KIAkJY2FzZSBYTE9HX05PT1A6CiAJCWNh c2UgWExPR19ORVhUT0lEOgogCQljYXNlIFhMT0dfU1dJVENIOgogCQljYXNlIFhMT0dfQkFD S1VQX0VORDoKLQkJY2FzZSBYTE9HX1BBUkFNRVRFUl9DSEFOR0U6CiAJCWNhc2UgWExPR19S RVNUT1JFX1BPSU5UOgogCQljYXNlIFhMT0dfRlBXX0NIQU5HRToKIAkJY2FzZSBYTE9HX0ZQ SV9GT1JfSElOVDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbG9naWNhbC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2Fs LmMKaW5kZXggNjI1YTdmNDI3My4uYTk1NjdmMmQ4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKQEAgLTExOSwyMyArMTE5LDIyIEBAIENoZWNr TG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRzKHZvaWQpCiAJCQkJKGVycmNvZGUoRVJSQ09E RV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJIGVycm1zZygibG9n aWNhbCBkZWNvZGluZyByZXF1aXJlcyBhIGRhdGFiYXNlIGNvbm5lY3Rpb24iKSkpOwogCi0J LyogLS0tLQotCSAqIFRPRE86IFdlIGdvdCB0byBjaGFuZ2UgdGhhdCBzb21lZGF5IHNvb24u Li4KLQkgKgotCSAqIFRoZXJlJ3MgYmFzaWNhbGx5IHRocmVlIHRoaW5ncyBtaXNzaW5nIHRv IGFsbG93IHRoaXM6Ci0JICogMSkgV2UgbmVlZCB0byBiZSBhYmxlIHRvIGNvcnJlY3RseSBh bmQgcXVpY2tseSBpZGVudGlmeSB0aGUgdGltZWxpbmUgYQotCSAqCSAgTFNOIGJlbG9uZ3Mg dG8KLQkgKiAyKSBXZSBuZWVkIHRvIGZvcmNlIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIHRvIGJl IGVuYWJsZWQgYXQgYWxsIHRpbWVzIHNvCi0JICoJICB0aGUgcHJpbWFyeSBjYW5ub3QgcmVt b3ZlIHJvd3Mgd2UgbmVlZC4KLQkgKiAzKSBzdXBwb3J0IGRyb3BwaW5nIHJlcGxpY2F0aW9u IHNsb3RzIHJlZmVycmluZyB0byBhIGRhdGFiYXNlLCBpbgotCSAqCSAgZGJhc2VfcmVkby4g VGhlcmUgY2FuJ3QgYmUgYW55IGFjdGl2ZSBvbmVzIGR1ZSB0byBIUyByZWNvdmVyeQotCSAq CSAgY29uZmxpY3RzLCBzbyB0aGF0IHNob3VsZCBiZSByZWxhdGl2ZWx5IGVhc3kuCi0JICog LS0tLQotCSAqLwogCWlmIChSZWNvdmVyeUluUHJvZ3Jlc3MoKSkKLQkJZXJlcG9ydChFUlJP UiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJ IGVycm1zZygibG9naWNhbCBkZWNvZGluZyBjYW5ub3QgYmUgdXNlZCB3aGlsZSBpbiByZWNv dmVyeSIpKSk7CisJeworCQkvKgorCQkgKiBUaGlzIGNoZWNrIG1heSBoYXZlIHJhY2UgY29u ZGl0aW9ucywgYnV0IHdoZW5ldmVyCisJCSAqIFhMT0dfUEFSQU1FVEVSX0NIQU5HRSBpbmRp Y2F0ZXMgdGhhdCB3YWxfbGV2ZWwgaGFzIGNoYW5nZWQsIHdlCisJCSAqIHZlcmlmeSB0aGF0 IHRoZXJlIGFyZSBubyBleGlzdGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3RzLiBBbmQg dG8KKwkJICogYXZvaWQgcmFjZXMgYXJvdW5kIGNyZWF0aW5nIGEgbmV3IHNsb3QsCisJCSAq IENoZWNrTG9naWNhbERlY29kaW5nUmVxdWlyZW1lbnRzKCkgaXMgY2FsbGVkIG9uY2UgYmVm b3JlIGNyZWF0aW5nCisJCSAqIHRoZSBzbG90LCBhbmQgb25jZSB3aGVuIGxvZ2ljYWwgZGVj b2RpbmcgaXMgaW5pdGlhbGx5IHN0YXJ0aW5nIHVwLgorCQkgKi8KKwkJaWYgKEdldEFjdGl2 ZVdhbExldmVsT25TdGFuZGJ5KCkgPCBXQUxfTEVWRUxfTE9HSUNBTCkKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkg cmVxdWlyZXMgIgorCQkJCQkJCSJ3YWxfbGV2ZWwgdG8gYmUgYXQgbGVhc3QgbG9naWNhbCBv biBtYXN0ZXIiKSkpOworCX0KIH0KIAogLyoKQEAgLTMzMSw2ICszMzAsMTIgQEAgQ3JlYXRl SW5pdERlY29kaW5nQ29udGV4dChjb25zdCBjaGFyICpwbHVnaW4sCiAJTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4OwogCU1lbW9yeUNvbnRleHQgb2xkX2NvbnRleHQ7CiAKKwkvKgor CSAqIE9uIHN0YW5kYnksIHRoaXMgY2hlY2sgaXMgYWxzbyByZXF1aXJlZCB3aGlsZSBjcmVh dGluZyB0aGUgc2xvdC4gQ2hlY2sKKwkgKiB0aGUgY29tbWVudHMgaW4gdGhpcyBmdW5jdGlv bi4KKwkgKi8KKwlDaGVja0xvZ2ljYWxEZWNvZGluZ1JlcXVpcmVtZW50cygpOworCiAJLyog c2hvcnRlciBsaW5lcy4uLiAqLwogCXNsb3QgPSBNeVJlcGxpY2F0aW9uU2xvdDsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vc2xvdC5jCmluZGV4IDZhNGUyY2QxOWIuLmY1NTRkYWM2ZmQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9zbG90LmMKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJzdG9y YWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUg InV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgog CiAvKgogICogUmVwbGljYXRpb24gc2xvdCBvbi1kaXNrIGRhdGEgc3RydWN0dXJlLgpAQCAt MTE3NSwzNyArMTE3Niw0NiBAQCBSZXBsaWNhdGlvblNsb3RSZXNlcnZlV2FsKHZvaWQpCiAJ CS8qCiAJCSAqIEZvciBsb2dpY2FsIHNsb3RzIGxvZyBhIHN0YW5kYnkgc25hcHNob3QgYW5k IHN0YXJ0IGxvZ2ljYWwgZGVjb2RpbmcKIAkJICogYXQgZXhhY3RseSB0aGF0IHBvc2l0aW9u LiBUaGF0IGFsbG93cyB0aGUgc2xvdCB0byBzdGFydCB1cCBtb3JlCi0JCSAqIHF1aWNrbHku CisJCSAqIHF1aWNrbHkuIEJ1dCBvbiBhIHN0YW5kYnkgd2UgY2Fubm90IGRvIFdBTCB3cml0 ZXMsIHNvIGp1c3QgdXNlIHRoZQorCQkgKiByZXBsYXkgcG9pbnRlcjsgZWZmZWN0aXZlbHks IGFuIGF0dGVtcHQgdG8gY3JlYXRlIGEgbG9naWNhbCBzbG90IG9uCisJCSAqIHN0YW5kYnkg d2lsbCBjYXVzZSBpdCB0byB3YWl0IGZvciBhbiB4bF9ydW5uaW5nX3hhY3QgcmVjb3JkIHRv IGJlCisJCSAqIGxvZ2dlZCBpbmRlcGVuZGVudGx5IG9uIHRoZSBwcmltYXJ5LCBzbyB0aGF0 IGEgc25hcHNob3QgY2FuIGJlIGJ1aWx0CisJCSAqIHVzaW5nIHRoZSByZWNvcmQuCiAJCSAq Ci0JCSAqIFRoYXQncyBub3QgbmVlZGVkIChvciBpbmRlZWQgaGVscGZ1bCkgZm9yIHBoeXNp Y2FsIHNsb3RzIGFzIHRoZXknbGwKLQkJICogc3RhcnQgcmVwbGF5IGF0IHRoZSBsYXN0IGxv Z2dlZCBjaGVja3BvaW50IGFueXdheS4gSW5zdGVhZCByZXR1cm4KLQkJICogdGhlIGxvY2F0 aW9uIG9mIHRoZSBsYXN0IHJlZG8gTFNOLiBXaGlsZSB0aGF0IHNsaWdodGx5IGluY3JlYXNl cwotCQkgKiB0aGUgY2hhbmNlIHRoYXQgd2UgaGF2ZSB0byByZXRyeSwgaXQncyB3aGVyZSBh IGJhc2UgYmFja3VwIGhhcyB0bwotCQkgKiBzdGFydCByZXBsYXkgYXQuCisJCSAqIE5vbmUg b2YgdGhpcyBpcyBuZWVkZWQgKG9yIGluZGVlZCBoZWxwZnVsKSBmb3IgcGh5c2ljYWwgc2xv dHMgYXMKKwkJICogdGhleSdsbCBzdGFydCByZXBsYXkgYXQgdGhlIGxhc3QgbG9nZ2VkIGNo ZWNrcG9pbnQgYW55d2F5LiBJbnN0ZWFkCisJCSAqIHJldHVybiB0aGUgbG9jYXRpb24gb2Yg dGhlIGxhc3QgcmVkbyBMU04uIFdoaWxlIHRoYXQgc2xpZ2h0bHkKKwkJICogaW5jcmVhc2Vz IHRoZSBjaGFuY2UgdGhhdCB3ZSBoYXZlIHRvIHJldHJ5LCBpdCdzIHdoZXJlIGEgYmFzZSBi YWNrdXAKKwkJICogaGFzIHRvIHN0YXJ0IHJlcGxheSBhdC4KIAkJICovCi0JCWlmICghUmVj b3ZlcnlJblByb2dyZXNzKCkgJiYgU2xvdElzTG9naWNhbChzbG90KSkKKwkJaWYgKFNsb3RJ c1BoeXNpY2FsKHNsb3QpKQorCQkJcmVzdGFydF9sc24gPSBHZXRSZWRvUmVjUHRyKCk7CisJ CWVsc2UgaWYgKFJlY292ZXJ5SW5Qcm9ncmVzcygpKQogCQl7Ci0JCQlYTG9nUmVjUHRyCWZs dXNocHRyOwotCi0JCQkvKiBzdGFydCBhdCBjdXJyZW50IGluc2VydCBwb3NpdGlvbiAqLwot CQkJcmVzdGFydF9sc24gPSBHZXRYTG9nSW5zZXJ0UmVjUHRyKCk7Ci0JCQlTcGluTG9ja0Fj cXVpcmUoJnNsb3QtPm11dGV4KTsKLQkJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0 YXJ0X2xzbjsKLQkJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwotCi0JCQkvKiBt YWtlIHN1cmUgd2UgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gc3RhcnQgKi8KLQkJCWZs dXNocHRyID0gTG9nU3RhbmRieVNuYXBzaG90KCk7Ci0KLQkJCS8qIGFuZCBtYWtlIHN1cmUg aXQncyBmc3luY2VkIHRvIGRpc2sgKi8KLQkJCVhMb2dGbHVzaChmbHVzaHB0cik7CisJCQly ZXN0YXJ0X2xzbiA9IEdldFhMb2dSZXBsYXlSZWNQdHIoTlVMTCk7CisJCQkvKgorCQkJICog UmVwbGF5IHBvaW50ZXIgbWF5IHBvaW50IG9uZSBwYXN0IHRoZSBlbmQgb2YgdGhlIHJlY29y ZC4gSWYgdGhhdAorCQkJICogaXMgYSBYTE9HIHBhZ2UgYm91bmRhcnksIGl0IHdpbGwgbm90 IGJlIGEgdmFsaWQgTFNOIGZvciB0aGUKKwkJCSAqIHN0YXJ0IG9mIGEgcmVjb3JkLCBzbyBi dW1wIGl0IHVwIHBhc3QgdGhlIHBhZ2UgaGVhZGVyLgorCQkJICovCisJCQlpZiAoIVhSZWNP ZmZJc1ZhbGlkKHJlc3RhcnRfbHNuKSkKKwkJCXsKKwkJCQlpZiAocmVzdGFydF9sc24gJSBY TE9HX0JMQ0tTWiAhPSAwKQorCQkJCQllbG9nKEVSUk9SLCAiaW52YWxpZCByZXBsYXkgcG9p bnRlciIpOworCisJCQkJLyogRm9yIHRoZSBmaXJzdCBwYWdlIG9mIGEgc2VnbWVudCBmaWxl LCBpdCdzIGEgbG9uZyBoZWFkZXIgKi8KKwkJCQlpZiAoWExvZ1NlZ21lbnRPZmZzZXQocmVz dGFydF9sc24sIHdhbF9zZWdtZW50X3NpemUpID09IDApCisJCQkJCXJlc3RhcnRfbHNuICs9 IFNpemVPZlhMb2dMb25nUEhEOworCQkJCWVsc2UKKwkJCQkJcmVzdGFydF9sc24gKz0gU2l6 ZU9mWExvZ1Nob3J0UEhEOworCQkJfQogCQl9CiAJCWVsc2UKLQkJewotCQkJcmVzdGFydF9s c24gPSBHZXRSZWRvUmVjUHRyKCk7Ci0JCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4 KTsKLQkJCXNsb3QtPmRhdGEucmVzdGFydF9sc24gPSByZXN0YXJ0X2xzbjsKLQkJCVNwaW5M b2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgpOwotCQl9CisJCQlyZXN0YXJ0X2xzbiA9IEdldFhM b2dJbnNlcnRSZWNQdHIoKTsKKworCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsK KwkJc2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbiA9IHJlc3RhcnRfbHNuOworCQlTcGluTG9ja1Jl bGVhc2UoJnNsb3QtPm11dGV4KTsKIAogCQkvKiBwcmV2ZW50IFdBTCByZW1vdmFsIGFzIGZh c3QgYXMgcG9zc2libGUgKi8KIAkJUmVwbGljYXRpb25TbG90c0NvbXB1dGVSZXF1aXJlZExT TigpOwpAQCAtMTIyMSw2ICsxMjMxLDE3IEBAIFJlcGxpY2F0aW9uU2xvdFJlc2VydmVXYWwo dm9pZCkKIAkJaWYgKFhMb2dHZXRMYXN0UmVtb3ZlZFNlZ25vKCkgPCBzZWdubykKIAkJCWJy ZWFrOwogCX0KKworCWlmICghUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYgU2xvdElzTG9naWNh bChzbG90KSkKKwl7CisJCVhMb2dSZWNQdHIJZmx1c2hwdHI7CisKKwkJLyogbWFrZSBzdXJl IHdlIGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHN0YXJ0ICovCisJCWZsdXNocHRyID0g TG9nU3RhbmRieVNuYXBzaG90KCk7CisKKwkJLyogYW5kIG1ha2Ugc3VyZSBpdCdzIGZzeW5j ZWQgdG8gZGlzayAqLworCQlYTG9nRmx1c2goZmx1c2hwdHIpOworCX0KIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggNjRmYmQ1MmUzNC4uOTY2MmUz MTZjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTkwNiwxNCAr OTA2LDE4IEBAIGxvZ2ljYWxfcmVhZF94bG9nX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0 ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxCiAJaW50CQkJY291bnQ7CiAJ V0FMUmVhZEVycm9yIGVycmluZm87CiAJWExvZ1NlZ05vCXNlZ25vOwotCVRpbWVMaW5lSUQJ Y3VyclRMSSA9IEdldFdBTEluc2VydGlvblRpbWVMaW5lKCk7CisJVGltZUxpbmVJRAljdXJy VExJOwogCiAJLyoKLQkgKiBTaW5jZSBsb2dpY2FsIGRlY29kaW5nIGlzIG9ubHkgcGVybWl0 dGVkIG9uIGEgcHJpbWFyeSBzZXJ2ZXIsIHdlIGtub3cKLQkgKiB0aGF0IHRoZSBjdXJyZW50 IHRpbWVsaW5lIElEIGNhbid0IGJlIGNoYW5naW5nIGFueSBtb3JlLiBJZiB3ZSBkaWQgdGhp cwotCSAqIG9uIGEgc3RhbmRieSwgd2UnZCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoZSB2YWx1 ZXMgd2UgY29tcHV0ZSBoZXJlCi0JICogYmVjb21pbmcgaW52YWxpZCBkdWUgdG8gYSBwcm9t b3Rpb24gb3IgdGltZWxpbmUgY2hhbmdlLgorCSAqIFNpbmNlIGxvZ2ljYWwgZGVjb2Rpbmcg aXMgYWxzbyBwZXJtaXR0ZWQgb24gYSBzdGFuZGJ5IHNlcnZlciwgd2UgbmVlZAorCSAqIHRv IGNoZWNrIGlmIHRoZSBzZXJ2ZXIgaXMgaW4gcmVjb3ZlcnkgdG8gZGVjaWRlIGhvdyB0byBn ZXQgdGhlIGN1cnJlbnQKKwkgKiB0aW1lbGluZSBJRCAoc28gdGhhdCBpdCBhbHNvIGNvdmVy IHRoZSBwcm9tb3Rpb24gb3IgdGltZWxpbmUgY2hhbmdlIGNhc2VzKS4KIAkgKi8KKwlpZiAo IVJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQljdXJyVExJID0gR2V0V0FMSW5zZXJ0aW9uVGlt ZUxpbmUoKTsKKwllbHNlCisJCUdldFhMb2dSZXBsYXlSZWNQdHIoJmN1cnJUTEkpOworCiAJ WExvZ1JlYWREZXRlcm1pbmVUaW1lbGluZShzdGF0ZSwgdGFyZ2V0UGFnZVB0ciwgcmVxTGVu LCBjdXJyVExJKTsKIAlzZW5kVGltZUxpbmVJc0hpc3RvcmljID0gKHN0YXRlLT5jdXJyVExJ ICE9IGN1cnJUTEkpOwogCXNlbmRUaW1lTGluZSA9IHN0YXRlLT5jdXJyVExJOwpAQCAtMzA3 NCwxMCArMzA3OCwxMiBAQCBYTG9nU2VuZExvZ2ljYWwodm9pZCkKIAkgKiBJZiBmaXJzdCB0 aW1lIHRocm91Z2ggaW4gdGhpcyBzZXNzaW9uLCBpbml0aWFsaXplIGZsdXNoUHRyLiAgT3Ro ZXJ3aXNlLAogCSAqIHdlIG9ubHkgbmVlZCB0byB1cGRhdGUgZmx1c2hQdHIgaWYgRW5kUmVj UHRyIGlzIHBhc3QgaXQuCiAJICovCi0JaWYgKGZsdXNoUHRyID09IEludmFsaWRYTG9nUmVj UHRyKQotCQlmbHVzaFB0ciA9IEdldEZsdXNoUmVjUHRyKE5VTEwpOwotCWVsc2UgaWYgKGxv Z2ljYWxfZGVjb2RpbmdfY3R4LT5yZWFkZXItPkVuZFJlY1B0ciA+PSBmbHVzaFB0cikKLQkJ Zmx1c2hQdHIgPSBHZXRGbHVzaFJlY1B0cihOVUxMKTsKKwlpZiAoZmx1c2hQdHIgPT0gSW52 YWxpZFhMb2dSZWNQdHIgfHwKKwkJbG9naWNhbF9kZWNvZGluZ19jdHgtPnJlYWRlci0+RW5k UmVjUHRyID49IGZsdXNoUHRyKQorCXsKKwkJZmx1c2hQdHIgPSAoYW1fY2FzY2FkaW5nX3dh bHNlbmRlciA/CisJCQkJCUdldFN0YW5kYnlGbHVzaFJlY1B0cihOVUxMKSA6IEdldEZsdXNo UmVjUHRyKE5VTEwpKTsKKwl9CiAKIAkvKiBJZiBFbmRSZWNQdHIgaXMgc3RpbGwgcGFzdCBv dXIgZmx1c2hQdHIsIGl0IG1lYW5zIHdlIGNhdWdodCB1cC4gKi8KIAlpZiAobG9naWNhbF9k ZWNvZGluZ19jdHgtPnJlYWRlci0+RW5kUmVjUHRyID49IGZsdXNoUHRyKQpAQCAtMzE2OCw3 ICszMTc0LDggQEAgR2V0U3RhbmRieUZsdXNoUmVjUHRyKFRpbWVMaW5lSUQgKnRsaSkKIAly ZWNlaXZlUHRyID0gR2V0V2FsUmN2Rmx1c2hSZWNQdHIoTlVMTCwgJnJlY2VpdmVUTEkpOwog CXJlcGxheVB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoJnJlcGxheVRMSSk7CiAKLQkqdGxp ID0gcmVwbGF5VExJOworCWlmICh0bGkpCisJCSp0bGkgPSByZXBsYXlUTEk7CiAKIAlyZXN1 bHQgPSByZXBsYXlQdHI7CiAJaWYgKHJlY2VpdmVUTEkgPT0gcmVwbGF5VExJICYmIHJlY2Vp dmVQdHIgPiByZXBsYXlQdHIpCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxv Zy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCAxZmJkNDhmYmRhLi4wMjdl MTU1ZThlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKQEAgLTIzMCw2ICsyMzAsNyBAQCBleHRlcm4gdm9p ZCBYTE9HU2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQm9vdFN0cmFwWExPRyh2b2lk KTsKIGV4dGVybiB2b2lkIEluaXRpYWxpemVXYWxDb25zaXN0ZW5jeUNoZWNraW5nKHZvaWQp OwogZXh0ZXJuIHZvaWQgTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUoYm9vbCByZXNldCk7Citl eHRlcm4gV2FsTGV2ZWwgR2V0QWN0aXZlV2FsTGV2ZWxPblN0YW5kYnkodm9pZCk7CiBleHRl cm4gdm9pZCBTdGFydHVwWExPRyh2b2lkKTsKIGV4dGVybiB2b2lkIFNodXRkb3duWExPRyhp bnQgY29kZSwgRGF0dW0gYXJnKTsKIGV4dGVybiB2b2lkIENyZWF0ZUNoZWNrUG9pbnQoaW50 IGZsYWdzKTsKLS0gCjIuMzQuMQoK --------------68IV02WKbO30CE6z3vbE95XU Content-Type: text/plain; charset=UTF-8; name="v28-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Disposition: attachment; filename="v28-0002-Handle-logical-slot-conflicts-on-standby.patch" Content-Transfer-Encoding: base64 RnJvbSAyOWVhM2I3MDFhODc0MDlkMzQzZGU4NjJmNWQyYTNiYTFmZmNhZTQ5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogV2VkLCA3IERlYyAyMDIyIDA4OjEzOjI2ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjggMi82XSBIYW5kbGUgbG9naWNhbCBzbG90IGNvbmZsaWN0cyBvbiBzdGFuZGJ5LgoK RHVyaW5nIFdBTCByZXBsYXkgb24gc3RhbmRieSwgd2hlbiBzbG90IGNvbmZsaWN0IGlzIGlk ZW50aWZpZWQsCmludmFsaWRhdGUgc3VjaCBzbG90cy4gQWxzbyBkbyB0aGUgc2FtZSB0aGlu ZyBpZiB3YWxfbGV2ZWwgb24gbWFzdGVyCmlzIHJlZHVjZWQgdG8gYmVsb3cgbG9naWNhbCBh bmQgdGhlcmUgYXJlIGV4aXN0aW5nIGxvZ2ljYWwgc2xvdHMKb24gc3RhbmRieS4gSW50cm9k dWNlIGEgbmV3IFByb2NTaWduYWxSZWFzb24gdmFsdWUgZm9yIHNsb3QKY29uZmxpY3QgcmVj b3ZlcnkuIEFycmFuZ2UgZm9yIGEgbmV3IHBnX3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIGZp ZWxkOgpjb25mbF9hY3RpdmVfbG9naWNhbHNsb3QuCgpBdXRob3I6IEFuZHJlcyBGcmV1bmQg KGluIGFuIG9sZGVyIHZlcnNpb24pLCBBbWl0IEtoYW5kZWthciwgQmVydHJhbmQgRHJvdXZv dApSZXZpZXdlZC1CeTogQmVydHJhbmQgRHJvdXZvdCwgQW5kcmVzIEZyZXVuZCwgUm9iZXJ0 IEhhYXMsIEZhYnJpemlvIGRlIFJveWVzIE1lbGxvCi0tLQogZG9jL3NyYy9zZ21sL21vbml0 b3Jpbmcuc2dtbCAgICAgICAgICAgICAgICAgIHwgIDExICsKIHNyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R4bG9nLmMgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGFzaC9oYXNoX3hsb2cuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0eGxvZy5jICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9h Y2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYyAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAgICAgICAgIHwgIDEzICsrCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgIDMgKy0KIC4uLi9yZXBs aWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jICAgICAgICB8ICAgNyArLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAgIHwgMjA5ICsrKysrKysr KysrKysrKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAg ICAgIHwgICA4ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jICAgICAg ICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAg ICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgICAg ICAgICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAg ICAgICAgICAgfCAgMjIgKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9k YXRhYmFzZS5jICB8ICAgNCArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3Mu YyAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAg ICAgICAgICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90Lmgg ICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFs LmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5o ICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dCAgICAgICAgICAgfCAgIDMgKy0KIDIzIGZpbGVzIGNoYW5nZWQsIDMxOCBpbnNl cnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQogICAzLjglIGRvYy9zcmMvc2dtbC8KICAgNS4x JSBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS8KICAgNC41JSBzcmMvYmFja2VuZC9hY2Nl c3MvCiAgIDMuOCUgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC8KICA1Ny40JSBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi8KICAgNy4zJSBzcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy8KICAgNy44JSBzcmMvYmFja2VuZC90Y29wLwogICAzLjMlIHNyYy9iYWNrZW5kLwogICA1 LjklIHNyYy9pbmNsdWRlLwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5n LnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDExYThlYmU1ZWMu LjE5YjUwOTYwZWMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtNDMxNyw2ICs0MzE3LDE3 IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0 YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgZGVhZGxvY2tzCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmNvbmZsX2FjdGl2ZV9sb2dpY2Fsc2xv dDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiBhY3RpdmUgbG9naWNhbCBzbG90cyBpbiB0 aGlzIGRhdGFiYXNlIHRoYXQgaGF2ZSBiZWVuCisgICAgICAgaW52YWxpZGF0ZWQgYmVjYXVz ZSB0aGV5IGNvbmZsaWN0IHdpdGggcmVjb3ZlcnkgKG5vdGUgdGhhdCBpbmFjdGl2ZSBvbmVz CisgICAgICAgYXJlIGFsc28gaW52YWxpZGF0ZWQgYnV0IGRvIG5vdCBpbmNyZW1lbnQgdGhp cyBjb3VudGVyKQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwv dGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9n aXN0eGxvZy5jCmluZGV4IGI3NDc5MDBhNDUuLjc1ODE4MjY2YTYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtMTk2LDYgKzE5Niw3IEBAIGdpc3RSZWRvRGVsZXRl UmVjb3JkKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlYTG9nUmVjR2V0QmxvY2tUYWco cmVjb3JkLCAwLCAmcmxvY2F0b3IsIE5VTEwsIE5VTEwpOwogCiAJCVJlc29sdmVSZWNvdmVy eUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+c25hcHNob3RDb25mbGljdEhvcml6b24s CisJCQkJCQkJCQkJCXhsZGF0YS0+b25DYXRhbG9nQWNjZXNzaWJsZUluTG9naWNhbERlY29k aW5nLAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQogCkBAIC0zOTYsNiArMzk3LDcgQEAg Z2lzdFJlZG9QYWdlUmV1c2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJICovCiAJaWYg KEluSG90U3RhbmRieSkKIAkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3RG dWxsWGlkKHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCSAg IHhscmVjLT5vbkNhdGFsb2dBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcsCiAJCQkJCQkJ CQkJCQkgICB4bHJlYy0+bG9jYXRvcik7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oYXNoL2hhc2hfeGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFz aF94bG9nLmMKaW5kZXggYjQ1MjY5N2EyZi4uNjE1NjVmOTA1ZCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaF94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hhc2gvaGFzaF94bG9nLmMKQEAgLTEwMDEsNiArMTAwMSw3IEBAIGhhc2hfeGxvZ192 YWN1dW1fb25lX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJWExvZ1JlY0dl dEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBOVUxMKTsKIAkJUmVzb2x2 ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxkYXRhLT5zbmFwc2hvdENvbmZsaWN0 SG9yaXpvbiwKKwkJCQkJCQkJCQkJeGxkYXRhLT5vbkNhdGFsb2dBY2Nlc3NpYmxlSW5Mb2dp Y2FsRGVjb2RpbmcsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAl9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMKaW5kZXggYjQyYTZiZmE2MS4uYTc5ZjAxMDI4NiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTg2OTYsNiArODY5Niw3IEBAIGhlYXBfeGxvZ19w cnVuZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFuZGJ5 KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNo b3RDb25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhscmVjLT5vbkNhdGFsb2dBY2Nlc3Np YmxlSW5Mb2dpY2FsRGVjb2RpbmcsCiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAogCS8qCkBA IC04ODY1LDYgKzg4NjYsNyBAQCBoZWFwX3hsb2dfdmlzaWJsZShYTG9nUmVhZGVyU3RhdGUg KnJlY29yZCkKIAkgKi8KIAlpZiAoSW5Ib3RTdGFuZGJ5KQogCQlSZXNvbHZlUmVjb3ZlcnlD b25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sCisJ CQkJCQkJCQkJCXhscmVjLT5vbkNhdGFsb2dBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rpbmcs CiAJCQkJCQkJCQkJCXJsb2NhdG9yKTsKIAogCS8qCkBAIC05MTIwLDYgKzkxMjIsNyBAQCBo ZWFwX3hsb2dfZnJlZXplX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAKIAkJWExv Z1JlY0dldEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCBOVUxMKTsKIAkJ UmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPnNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+b25DYXRhbG9nQWNjZXNzaWJsZUlu TG9naWNhbERlY29kaW5nLAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHhsb2cuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCmluZGV4IDNlMzExYTk4YTYuLjYyODlmOGQyNTAg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0eGxvZy5jCkBAIC02NjksNiArNjY5LDcg QEAgYnRyZWVfeGxvZ19kZWxldGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVhMb2dS ZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDAsICZybG9jYXRvciwgTlVMTCwgTlVMTCk7CiAKIAkJ UmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPnNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJCQl4bHJlYy0+b25DYXRhbG9nQWNjZXNzaWJsZUlu TG9naWNhbERlY29kaW5nLAogCQkJCQkJCQkJCQlybG9jYXRvcik7CiAJfQogCkBAIC0xMDA3 LDYgKzEwMDgsNyBAQCBidHJlZV94bG9nX3JldXNlX3BhZ2UoWExvZ1JlYWRlclN0YXRlICpy ZWNvcmQpCiAKIAlpZiAoSW5Ib3RTdGFuZGJ5KQogCQlSZXNvbHZlUmVjb3ZlcnlDb25mbGlj dFdpdGhTbmFwc2hvdEZ1bGxYaWQoeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAor CQkJCQkJCQkJCQkJICAgeGxyZWMtPm9uQ2F0YWxvZ0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZywKIAkJCQkJCQkJCQkJCSAgIHhscmVjLT5sb2NhdG9yKTsKIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd4bG9nLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwppbmRleCA0NGFkYzIwOThmLi42YWQ0NjcxMTdmIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3hsb2cuYwpAQCAtODc5LDYgKzg3OSw3IEBA IHNwZ1JlZG9WYWN1dW1SZWRpcmVjdChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAogCQlY TG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAwLCAmbG9jYXRvciwgTlVMTCwgTlVMTCk7CiAJ CVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHhsZGF0YS0+c25hcHNob3RD b25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCXhsZGF0YS0+b25DYXRhbG9nQWNjZXNzaWJs ZUluTG9naWNhbERlY29kaW5nLAogCQkJCQkJCQkJCQlsb2NhdG9yKTsKIAl9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCBhMzFmYmJmZjc4Li5lNDUwM2ZiMzZkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC03OTY3LDYgKzc5NjcsMTkgQEAg eGxvZ19yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkvKiBVcGRhdGUgb3VyIGNv cHkgb2YgdGhlIHBhcmFtZXRlcnMgaW4gcGdfY29udHJvbCAqLwogCQltZW1jcHkoJnhscmVj LCBYTG9nUmVjR2V0RGF0YShyZWNvcmQpLCBzaXplb2YoeGxfcGFyYW1ldGVyX2NoYW5nZSkp OwogCisJCS8qCisJCSAqIEludmFsaWRhdGUgbG9naWNhbCBzbG90cyBpZiB3ZSBhcmUgaW4g aG90IHN0YW5kYnkgYW5kIHRoZSBwcmltYXJ5IGRvZXMgbm90CisJCSAqIGhhdmUgYSBXQUwg bGV2ZWwgc3VmZmljaWVudCBmb3IgbG9naWNhbCBkZWNvZGluZy4gTm8gbmVlZCB0byBzZWFy Y2gKKwkJICogZm9yIHBvdGVudGlhbGx5IGNvbmZsaWN0aW5nIGxvZ2ljYWxseSBzbG90cyBp ZiBzdGFuZGJ5IGlzIHJ1bm5pbmcKKwkJICogd2l0aCB3YWxfbGV2ZWwgbG93ZXIgdGhhbiBs b2dpY2FsLCBiZWNhdXNlIGluIHRoYXQgY2FzZSwgd2Ugd291bGQKKwkJICogaGF2ZSBlaXRo ZXIgZGlzYWxsb3dlZCBjcmVhdGlvbiBvZiBsb2dpY2FsIHNsb3RzIG9yIGludmFsaWRhdGVk IGV4aXN0aW5nCisJCSAqIG9uZXMuCisJCSAqLworCQlpZiAoSW5SZWNvdmVyeSAmJiBJbkhv dFN0YW5kYnkgJiYKKwkJCXhscmVjLndhbF9sZXZlbCA8IFdBTF9MRVZFTF9MT0dJQ0FMICYm CisJCQl3YWxfbGV2ZWwgPj0gV0FMX0xFVkVMX0xPR0lDQUwpCisJCQlJbnZhbGlkYXRlQ29u ZmxpY3RpbmdMb2dpY2FsUmVwbGljYXRpb25TbG90cyhJbnZhbGlkT2lkLEludmFsaWRUcmFu c2FjdGlvbklkKTsKKwogCQlMV0xvY2tBY3F1aXJlKENvbnRyb2xGaWxlTG9jaywgTFdfRVhD TFVTSVZFKTsKIAkJQ29udHJvbEZpbGUtPk1heENvbm5lY3Rpb25zID0geGxyZWMuTWF4Q29u bmVjdGlvbnM7CiAJCUNvbnRyb2xGaWxlLT5tYXhfd29ya2VyX3Byb2Nlc3NlcyA9IHhscmVj Lm1heF93b3JrZXJfcHJvY2Vzc2VzOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Mu c3FsCmluZGV4IDJkODEwNGIwOTAuLjBlMGI4ZWY0MTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L3N5c3RlbV92aWV3cy5zcWwKQEAgLTEwNjUsNyArMTA2NSw4IEBAIENSRUFURSBWSUVXIHBn X3N0YXRfZGF0YWJhc2VfY29uZmxpY3RzIEFTCiAgICAgICAgICAgICBwZ19zdGF0X2dldF9k Yl9jb25mbGljdF9sb2NrKEQub2lkKSBBUyBjb25mbF9sb2NrLAogICAgICAgICAgICAgcGdf c3RhdF9nZXRfZGJfY29uZmxpY3Rfc25hcHNob3QoRC5vaWQpIEFTIGNvbmZsX3NuYXBzaG90 LAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfYnVmZmVycGluKEQub2lk KSBBUyBjb25mbF9idWZmZXJwaW4sCi0gICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25m bGljdF9zdGFydHVwX2RlYWRsb2NrKEQub2lkKSBBUyBjb25mbF9kZWFkbG9jaworICAgICAg ICAgICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhELm9pZCkg QVMgY29uZmxfZGVhZGxvY2ssCisgICAgICAgICAgICBwZ19zdGF0X2dldF9kYl9jb25mbGlj dF9sb2dpY2Fsc2xvdChELm9pZCkgQVMgY29uZmxfYWN0aXZlX2xvZ2ljYWxzbG90CiAgICAg RlJPTSBwZ19kYXRhYmFzZSBEOwogCiBDUkVBVEUgVklFVyBwZ19zdGF0X3VzZXJfZnVuY3Rp b25zIEFTCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xv Z2ljYWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2Fs ZnVuY3MuYwppbmRleCA1YzIzMTc4NTcwLi44NDMyZGUyMTliIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKQEAgLTIxNiwxMSAr MjE2LDE0IEBAIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlc19ndXRzKEZ1bmN0aW9uQ2Fs bEluZm8gZmNpbmZvLCBib29sIGNvbmZpcm0sIGJvb2wgYmluCiAKIAkJLyoKIAkJICogQWZ0 ZXIgdGhlIHNhbml0eSBjaGVja3MgaW4gQ3JlYXRlRGVjb2RpbmdDb250ZXh0LCBtYWtlIHN1 cmUgdGhlCi0JCSAqIHJlc3RhcnRfbHNuIGlzIHZhbGlkLiAgQXZvaWQgImNhbm5vdCBnZXQg Y2hhbmdlcyIgd29yZGluZyBpbiB0aGlzCisJCSAqIHJlc3RhcnRfbHNuIGlzIHZhbGlkIG9y IGJvdGggeG1pbiBhbmQgY2F0YWxvZ194bWluIGFyZSB2YWxpZC4KKwkJICogQXZvaWQgImNh bm5vdCBnZXQgY2hhbmdlcyIgd29yZGluZyBpbiB0aGlzCiAJCSAqIGVycm1zZyBiZWNhdXNl IHRoYXQnZCBiZSBjb25mdXNpbmdseSBhbWJpZ3VvdXMgYWJvdXQgbm8gY2hhbmdlcwogCQkg KiBiZWluZyBhdmFpbGFibGUuCiAJCSAqLwotCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChN eVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5yZXN0YXJ0X2xzbikpCisJCWlmIChYTG9nUmVjUHRy SXNJbnZhbGlkKE15UmVwbGljYXRpb25TbG90LT5kYXRhLnJlc3RhcnRfbHNuKQorCQkJfHwg KCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS54bWluKQor CQkJCSYmICFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS5j YXRhbG9nX3htaW4pKSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCQkgZXJybXNnKCJj YW4gbm8gbG9uZ2VyIGdldCBjaGFuZ2VzIGZyb20gcmVwbGljYXRpb24gc2xvdCBcIiVzXCIi LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCmluZGV4IDg5OWFjZmQ5MTIuLjZhNGUyY2QxOWIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKQEAgLTE0MzIsNiArMTQzMiwyMTUgQEAgcmVz dGFydDoKIAlyZXR1cm4gaW52YWxpZGF0ZWQ7CiB9CiAKKy8qCisgKiBIZWxwZXIgZm9yIElu dmFsaWRhdGVDb25mbGljdGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3QgLS0gYWNxdWlyZXMg dGhlIGdpdmVuIHNsb3QKKyAqIGFuZCBtYXJrIGl0IGludmFsaWQsIGlmIG5lY2Vzc2FyeSBh bmQgcG9zc2libGUuCisgKgorICogUmV0dXJucyB3aGV0aGVyIFJlcGxpY2F0aW9uU2xvdENv bnRyb2xMb2NrIHdhcyByZWxlYXNlZCBpbiB0aGUgaW50ZXJpbSAoYW5kCisgKiBpbiB0aGF0 IGNhc2Ugd2UncmUgbm90IGhvbGRpbmcgdGhlIGxvY2sgYXQgcmV0dXJuLCBvdGhlcndpc2Ug d2UgYXJlKS4KKyAqCisgKiBUaGlzIGlzIGluaGVyZW50bHkgcmFjeSwgYmVjYXVzZSB3ZSBy ZWxlYXNlIHRoZSBMV0xvY2sKKyAqIGZvciBzeXNjYWxscywgc28gY2FsbGVyIG11c3QgcmVz dGFydCBpZiB3ZSByZXR1cm4gdHJ1ZS4KKyAqLworc3RhdGljIGJvb2wKK0ludmFsaWRhdGVQ b3NzaWJseUNvbmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xvdChSZXBsaWNhdGlvblNs b3QgKnMsIFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWludAkJbGFzdF9zaWduYWxlZF9waWQg PSAwOworCWJvb2wJcmVsZWFzZWRfbG9jayA9IGZhbHNlOworCisJZm9yICg7OykKKwl7CisJ CVRyYW5zYWN0aW9uSWQgc2xvdF94bWluOworCQlUcmFuc2FjdGlvbklkIHNsb3RfY2F0YWxv Z194bWluOworCQlOYW1lRGF0YQlzbG90bmFtZTsKKwkJaW50CQkJYWN0aXZlX3BpZCA9IDA7 CisKKwkJQXNzZXJ0KExXTG9ja0hlbGRCeU1lSW5Nb2RlKFJlcGxpY2F0aW9uU2xvdENvbnRy b2xMb2NrLCBMV19TSEFSRUQpKTsKKworCQlpZiAoIXMtPmluX3VzZSkKKwkJeworCQkJaWYg KHJlbGVhc2VkX2xvY2spCisJCQkJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RDb250 cm9sTG9jayk7CisJCQlicmVhazsKKwkJfQorCisJCS8qCisJCSAqIENoZWNrIGlmIHRoZSBz bG90IG5lZWRzIHRvIGJlIGludmFsaWRhdGVkLiBJZiBpdCBuZWVkcyB0byBiZQorCQkgKiBp bnZhbGlkYXRlZCwgYW5kIGlzIG5vdCBjdXJyZW50bHkgYWNxdWlyZWQsIGFjcXVpcmUgaXQg YW5kIG1hcmsgaXQKKwkJICogYXMgaGF2aW5nIGJlZW4gaW52YWxpZGF0ZWQuIFdlIGRvIHRo aXMgd2l0aCB0aGUgc3BpbmxvY2sgaGVsZCB0bworCQkgKiBhdm9pZCByYWNlIGNvbmRpdGlv bnMgLS0gZm9yIGV4YW1wbGUgdGhlIHhtaW4ocykgY291bGQgbW92ZSBmb3J3YXJkCisJCSAq ICwgb3IgdGhlIHNsb3QgY291bGQgYmUgZHJvcHBlZC4KKwkJICovCisJCVNwaW5Mb2NrQWNx dWlyZSgmcy0+bXV0ZXgpOworCisJCXNsb3RfeG1pbiA9IHMtPmRhdGEueG1pbjsKKwkJc2xv dF9jYXRhbG9nX3htaW4gPSBzLT5kYXRhLmNhdGFsb2dfeG1pbjsKKworCQkvKgorCQkgKiBJ ZiB0aGUgc2xvdCBpcyBhbHJlYWR5IGludmFsaWQgb3IgaXMgbm90IGNvbmZsaWN0aW5nLCB3 ZSBkb24ndCBuZWVkIHRvCisJCSAqIGRvIGFueXRoaW5nLgorCQkgKi8KKworCQkvKiBzbG90 IGhhcyBiZWVuIGludmFsaWRhdGVkICovCisJCWlmICgoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHNsb3RfeG1pbikgJiYgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHNsb3RfY2F0YWxvZ194bWlu KSkKKwkJCXx8CisJCS8qCisJCSAqIHdlIGFyZSBub3QgZm9yY2luZyBmb3IgaW52YWxpZGF0 aW9uIGJlY2F1c2UgdGhlIHhpZCBpcyB2YWxpZAorCQkgKiBhbmQgdGhpcyBpcyBhIG5vbiBj b25mbGljdGluZyBzbG90CisJCSAqLworCQkJKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkg JiYgISgKKwkJCQkoVHJhbnNhY3Rpb25JZElzVmFsaWQoc2xvdF94bWluKSAmJiBUcmFuc2Fj dGlvbklkUHJlY2VkZXNPckVxdWFscyhzbG90X3htaW4sIHhpZCkpCisJCQkJfHwKKwkJCQko VHJhbnNhY3Rpb25JZElzVmFsaWQoc2xvdF9jYXRhbG9nX3htaW4pICYmIFRyYW5zYWN0aW9u SWRQcmVjZWRlc09yRXF1YWxzKHNsb3RfY2F0YWxvZ194bWluLCB4aWQpKQorCQkJCSkpCisJ CQkpCisJCXsKKwkJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0ZXgpOworCQkJaWYgKHJlbGVh c2VkX2xvY2spCisJCQkJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9j ayk7CisJCQlicmVhazsKKwkJfQorCisJCXNsb3RuYW1lID0gcy0+ZGF0YS5uYW1lOworCQlh Y3RpdmVfcGlkID0gcy0+YWN0aXZlX3BpZDsKKworCQkvKgorCQkgKiBJZiB0aGUgc2xvdCBj YW4gYmUgYWNxdWlyZWQsIGRvIHNvIGFuZCBtYXJrIGl0IGludmFsaWRhdGVkCisJCSAqIGlt bWVkaWF0ZWx5LiAgT3RoZXJ3aXNlIHdlJ2xsIHNpZ25hbCB0aGUgb3duaW5nIHByb2Nlc3Ms IGJlbG93LCBhbmQKKwkJICogcmV0cnkuCisJCSAqLworCQlpZiAoYWN0aXZlX3BpZCA9PSAw KQorCQl7CisJCQlNeVJlcGxpY2F0aW9uU2xvdCA9IHM7CisJCQlzLT5hY3RpdmVfcGlkID0g TXlQcm9jUGlkOworCQkJcy0+ZGF0YS54bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJ CQlzLT5kYXRhLmNhdGFsb2dfeG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCQl9CisK KwkJU3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRleCk7CisKKwkJaWYgKGFjdGl2ZV9waWQgIT0g MCkKKwkJeworCQkJLyoKKwkJCSAqIFByZXBhcmUgdGhlIHNsZWVwIG9uIHRoZSBzbG90J3Mg Y29uZGl0aW9uIHZhcmlhYmxlIGJlZm9yZQorCQkJICogcmVsZWFzaW5nIHRoZSBsb2NrLCB0 byBjbG9zZSBhIHBvc3NpYmxlIHJhY2UgY29uZGl0aW9uIGlmIHRoZQorCQkJICogc2xvdCBp cyByZWxlYXNlZCBiZWZvcmUgdGhlIHNsZWVwIGJlbG93LgorCQkJICovCisKKwkJCUNvbmRp dGlvblZhcmlhYmxlUHJlcGFyZVRvU2xlZXAoJnMtPmFjdGl2ZV9jdik7CisKKwkJCUxXTG9j a1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2spOworCQkJcmVsZWFzZWRfbG9j ayA9IHRydWU7CisKKwkJCS8qCisJCQkgKiBTaWduYWwgdG8gdGVybWluYXRlIHRoZSBwcm9j ZXNzIHRoYXQgb3ducyB0aGUgc2xvdCwgaWYgd2UKKwkJCSAqIGhhdmVuJ3QgYWxyZWFkeSBz aWduYWxsZWQgaXQuICAoQXZvaWRhbmNlIG9mIHJlcGVhdGVkCisJCQkgKiBzaWduYWxsaW5n IGlzIHRoZSBvbmx5IHJlYXNvbiBmb3IgdGhlcmUgdG8gYmUgYSBsb29wIGluIHRoaXMKKwkJ CSAqIHJvdXRpbmU7IG90aGVyd2lzZSB3ZSBjb3VsZCByZWx5IG9uIGNhbGxlcidzIHJlc3Rh cnQgbG9vcC4pCisJCQkgKgorCQkJICogVGhlcmUgaXMgdGhlIHJhY2UgY29uZGl0aW9uIHRo YXQgb3RoZXIgcHJvY2VzcyBtYXkgb3duIHRoZSBzbG90CisJCQkgKiBhZnRlciBpdHMgY3Vy cmVudCBvd25lciBwcm9jZXNzIGlzIHRlcm1pbmF0ZWQgYW5kIGJlZm9yZSB0aGlzCisJCQkg KiBwcm9jZXNzIG93bnMgaXQuIFRvIGhhbmRsZSB0aGF0LCB3ZSBzaWduYWwgb25seSBpZiB0 aGUgUElEIG9mCisJCQkgKiB0aGUgb3duaW5nIHByb2Nlc3MgaGFzIGNoYW5nZWQgZnJvbSB0 aGUgcHJldmlvdXMgdGltZS4gKFRoaXMKKwkJCSAqIGxvZ2ljIGFzc3VtZXMgdGhhdCB0aGUg c2FtZSBQSUQgaXMgbm90IHJldXNlZCB2ZXJ5IHF1aWNrbHkuKQorCQkJICovCisJCQlpZiAo bGFzdF9zaWduYWxlZF9waWQgIT0gYWN0aXZlX3BpZCkKKwkJCXsKKwkJCQllcmVwb3J0KExP RywKKwkJCQkJCShlcnJtc2coInRlcm1pbmF0aW5nIHByb2Nlc3MgJWQgYmVjYXVzZSByZXBs aWNhdGlvbiBzbG90IFwiJXNcIiBjb25mbGljdHMgd2l0aCByZWNvdmVyeSIsCisJCQkJCQkJ CWFjdGl2ZV9waWQsIE5hbWVTdHIoc2xvdG5hbWUpKSkpOworCisJCQkJKHZvaWQpIFNlbmRQ cm9jU2lnbmFsKGFjdGl2ZV9waWQsIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNB TFNMT1QsIEludmFsaWRCYWNrZW5kSWQpOworCQkJCWxhc3Rfc2lnbmFsZWRfcGlkID0gYWN0 aXZlX3BpZDsKKwkJCX0KKworCQkJLyogV2FpdCB1bnRpbCB0aGUgc2xvdCBpcyByZWxlYXNl ZC4gKi8KKwkJCUNvbmRpdGlvblZhcmlhYmxlU2xlZXAoJnMtPmFjdGl2ZV9jdiwKKwkJCQkJ CQkJCVdBSVRfRVZFTlRfUkVQTElDQVRJT05fU0xPVF9EUk9QKTsKKworCQkJLyoKKwkJCSAq IFJlLWFjcXVpcmUgbG9jayBhbmQgc3RhcnQgb3Zlcjsgd2UgZXhwZWN0IHRvIGludmFsaWRh dGUgdGhlCisJCQkgKiBzbG90IG5leHQgdGltZSAodW5sZXNzIGFub3RoZXIgcHJvY2VzcyBh Y3F1aXJlcyB0aGUgc2xvdCBpbiB0aGUKKwkJCSAqIG1lYW50aW1lKS4KKwkJCSAqLworCQkJ TFdMb2NrQWNxdWlyZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVEKTsK KwkJCWNvbnRpbnVlOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIFdlIGhvbGQg dGhlIHNsb3Qgbm93IGFuZCBoYXZlIGFscmVhZHkgaW52YWxpZGF0ZWQgaXQ7IGZsdXNoIGl0 CisJCQkgKiB0byBlbnN1cmUgdGhhdCBzdGF0ZSBwZXJzaXN0cy4KKwkJCSAqCisJCQkgKiBE b24ndCB3YW50IHRvIGhvbGQgUmVwbGljYXRpb25TbG90Q29udHJvbExvY2sgYWNyb3NzIGZp bGUKKwkJCSAqIHN5c3RlbSBvcGVyYXRpb25zLCBzbyByZWxlYXNlIGl0IG5vdyBidXQgYmUg c3VyZSB0byB0ZWxsIGNhbGxlcgorCQkJICogdG8gcmVzdGFydCBmcm9tIHNjcmF0Y2guCisJ CQkgKi8KKwkJCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2spOwor CQkJcmVsZWFzZWRfbG9jayA9IHRydWU7CisKKwkJCS8qIE1ha2Ugc3VyZSB0aGUgaW52YWxp ZGF0ZWQgc3RhdGUgcGVyc2lzdHMgYWNyb3NzIHNlcnZlciByZXN0YXJ0ICovCisJCQlSZXBs aWNhdGlvblNsb3RNYXJrRGlydHkoKTsKKwkJCVJlcGxpY2F0aW9uU2xvdFNhdmUoKTsKKwkJ CVJlcGxpY2F0aW9uU2xvdFJlbGVhc2UoKTsKKwkJCXBnc3RhdF9kcm9wX3JlcGxzbG90KHMp OworCisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1zZygiaW52YWxpZGF0aW5nIHNsb3Qg XCIlc1wiIGJlY2F1c2UgaXQgY29uZmxpY3RzIHdpdGggcmVjb3ZlcnkiLCBOYW1lU3RyKHNs b3RuYW1lKSkpKTsKKworCQkJLyogZG9uZSB3aXRoIHRoaXMgc2xvdCBmb3Igbm93ICovCisJ CQlicmVhazsKKwkJfQorCX0KKworCUFzc2VydCghcmVsZWFzZWRfbG9jayA9PSBMV0xvY2tI ZWxkQnlNZUluTW9kZShSZXBsaWNhdGlvblNsb3RDb250cm9sTG9jaywgTFdfU0hBUkVEKSk7 CisKKwlyZXR1cm4gcmVsZWFzZWRfbG9jazsKK30KKworLyoKKyAqIFJlc29sdmUgcmVjb3Zl cnkgY29uZmxpY3RzIHdpdGggbG9naWNhbCBzbG90cy4KKyAqCisgKiBXaGVuIHhpZCBpcyB2 YWxpZCwgaXQgbWVhbnMgdGhhdCB3ZSBhcmUgYWJvdXQgdG8gcmVtb3ZlIHJvd3Mgb2xkZXIg dGhhbiB4aWQuCisgKiBUaGVyZWZvcmUgd2UgbmVlZCB0byBpbnZhbGlkYXRlIHNsb3RzIHRo YXQgZGVwZW5kIG9uIHNlZWluZyB0aG9zZSByb3dzLgorICogV2hlbiB4aWQgaXMgaW52YWxp ZCwgaW52YWxpZGF0ZSBhbGwgbG9naWNhbCBzbG90cy4gVGhpcyBpcyByZXF1aXJlZCB3aGVu IHRoZQorICogbWFzdGVyIHdhbF9sZXZlbCBpcyBzZXQgYmFjayB0byByZXBsaWNhLCBzbyBl eGlzdGluZyBsb2dpY2FsIHNsb3RzIG5lZWQgdG8KKyAqIGJlIGludmFsaWRhdGVkLgorICov Cit2b2lkCitJbnZhbGlkYXRlQ29uZmxpY3RpbmdMb2dpY2FsUmVwbGljYXRpb25TbG90cyhP aWQgZGJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQoreworCisJQXNzZXJ0KG1heF9yZXBsaWNh dGlvbl9zbG90cyA+PSAwKTsKKworCWlmIChtYXhfcmVwbGljYXRpb25fc2xvdHMgPT0gMCkK KwkJcmV0dXJuOworcmVzdGFydDoKKwlMV0xvY2tBY3F1aXJlKFJlcGxpY2F0aW9uU2xvdENv bnRyb2xMb2NrLCBMV19TSEFSRUQpOworCWZvciAoaW50IGkgPSAwOyBpIDwgbWF4X3JlcGxp Y2F0aW9uX3Nsb3RzOyBpKyspCisJeworCQlSZXBsaWNhdGlvblNsb3QgKnMgPSAmUmVwbGlj YXRpb25TbG90Q3RsLT5yZXBsaWNhdGlvbl9zbG90c1tpXTsKKworCQlpZiAoIXMtPmluX3Vz ZSkKKwkJCWNvbnRpbnVlOworCisJCS8qIFdlIGFyZSBvbmx5IGRlYWxpbmcgd2l0aCAqbG9n aWNhbCogc2xvdCBjb25mbGljdHMuICovCisJCWlmICghU2xvdElzTG9naWNhbChzKSkKKwkJ CWNvbnRpbnVlOworCisJCS8qIG5vdCBvdXIgZGF0YWJhc2UgYW5kIHdlIGRvbid0IHdhbnQg YWxsIHRoZSBkYXRhYmFzZSwgc2tpcCAqLworCQlpZiAocy0+ZGF0YS5kYXRhYmFzZSAhPSBk Ym9pZCAmJiBUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCQkJY29udGludWU7CisKKwkJ aWYgKEludmFsaWRhdGVQb3NzaWJseUNvbmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0aW9uU2xv dChzLCB4aWQpKQorCQl7CisJCQkvKiBpZiB0aGUgbG9jayB3YXMgcmVsZWFzZWQsIHdlIG5l ZWQgdG8gcmVzdGFydCBmcm9tIHNjcmF0Y2ggKi8KKwkJCWdvdG8gcmVzdGFydDsKKwkJfQor CX0KKwlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdENvbnRyb2xMb2NrKTsKK30KKwog LyoKICAqIEZsdXNoIGFsbCByZXBsaWNhdGlvbiBzbG90cyB0byBkaXNrLgogICoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggYzExYmIzNzE2Zi4uNjRmYmQ1MmUz NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTEyNTMsNiArMTI1 MywxNCBAQCBTdGFydExvZ2ljYWxSZXBsaWNhdGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpj bWQpCiAKIAlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUpOwog CisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ZGF0YS54 bWluKQorCQkgJiYgIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKE15UmVwbGljYXRpb25TbG90LT5k YXRhLmNhdGFsb2dfeG1pbikpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygi Y2Fubm90IHJlYWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJ CQkJCWNtZC0+c2xvdG5hbWUpLAorCQkJCSBlcnJkZXRhaWwoIlRoaXMgc2xvdCBoYXMgYmVl biBpbnZhbGlkYXRlZCBiZWNhdXNlIGl0IHdhcyBjb25mbGljdGluZyB3aXRoIHJlY292ZXJ5 LiIpKSk7CisKIAlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChNeVJlcGxpY2F0aW9uU2xvdC0+ ZGF0YS5yZXN0YXJ0X2xzbikpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3Byb2NhcnJheS5jCmluZGV4IDAxNzZmMzAyNzAuLmQ2OGI3NTJjOTEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCkBAIC0zNDc3LDYgKzM0NzcsMTAgQEAg U2lnbmFsVmlydHVhbFRyYW5zYWN0aW9uKFZpcnR1YWxUcmFuc2FjdGlvbklkIHZ4aWQsIFBy b2NTaWduYWxSZWFzb24gc2lnbW9kZSwKIAogCQlHRVRfVlhJRF9GUk9NX1BHUFJPQyhwcm9j dnhpZCwgKnByb2MpOwogCisJCS8qCisJCSAqIE5vdGU6IHZ4aWQubG9jYWxUcmFuc2FjdGlv bklkIGNhbiBiZSBpbnZhbGlkLCB3aGljaCBtZWFucyB0aGUKKwkJICogcmVxdWVzdCBpcyB0 byBzaWduYWwgdGhlIHBpZCB0aGF0IGlzIG5vdCBydW5uaW5nIGEgdHJhbnNhY3Rpb24uCisJ CSAqLwogCQlpZiAocHJvY3Z4aWQuYmFja2VuZElkID09IHZ4aWQuYmFja2VuZElkICYmCiAJ CQlwcm9jdnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQgPT0gdnhpZC5sb2NhbFRyYW5zYWN0aW9u SWQpCiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWdu YWwuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCA3NzY3 NjU3ZjI3Li4xYjNiZjk0M2MxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25h bC5jCkBAIC02NjksNiArNjY5LDkgQEAgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lH TkFMX0FSR1MpCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZM SUNUX1NOQVBTSE9UKSkKIAkJUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQUk9DU0lHX1JF Q09WRVJZX0NPTkZMSUNUX1NOQVBTSE9UKTsKIAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJP Q1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCkpCisJCVJlY292ZXJ5Q29uZmxp Y3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCk7CisK IAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU1RBUlRV UF9ERUFETE9DSykpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNP VkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c3RhbmRieS5jCmluZGV4IGY0MzIyOWRmZGEuLjU1Mzk1Mzk1OWQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9zdGFuZGJ5LmMKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJ1dGlscy9w c19zdGF0dXMuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCiAjaW5jbHVkZSAidXRp bHMvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdC5oIgogCiAvKiBV c2VyLXNldHRhYmxlIEdVQyBwYXJhbWV0ZXJzICovCiBpbnQJCQl2YWN1dW1fZGVmZXJfY2xl YW51cF9hZ2U7CkBAIC00NzUsNiArNDc2LDcgQEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RX aXRoVmlydHVhbFhJRHMoVmlydHVhbFRyYW5zYWN0aW9uSWQgKndhaXRsaXN0LAogICovCiB2 b2lkCiBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklk IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAorCQkJCQkJCQkJYm9vbCBvbkNhdGFsb2dBY2Nl c3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcsCiAJCQkJCQkJCQlSZWxGaWxlTG9jYXRvciBsb2Nh dG9yKQogewogCVZpcnR1YWxUcmFuc2FjdGlvbklkICpiYWNrZW5kczsKQEAgLTQ5OSw2ICs1 MDEsOSBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlv bklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCQkJCQkJCQkJCSAgIFBST0NTSUdfUkVD T1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCiAJCQkJCQkJCQkJICAgV0FJVF9FVkVOVF9SRUNP VkVSWV9DT05GTElDVF9TTkFQU0hPVCwKIAkJCQkJCQkJCQkgICB0cnVlKTsKKworCWlmIChv bkNhdGFsb2dBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcpCisJCUludmFsaWRhdGVDb25m bGljdGluZ0xvZ2ljYWxSZXBsaWNhdGlvblNsb3RzKGxvY2F0b3IuZGJPaWQsIHNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uKTsKIH0KIAogLyoKQEAgLTUwNyw2ICs1MTIsNyBAQCBSZXNvbHZl UmVjb3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAogICovCiB2b2lkCiBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhT bmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6 b24sCisJCQkJCQkJCQkJICAgYm9vbCBvbkNhdGFsb2dBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVj b2RpbmcsCiAJCQkJCQkJCQkJICAgUmVsRmlsZUxvY2F0b3IgbG9jYXRvcikKIHsKIAkvKgpA QCAtNTI1LDcgKzUzMSw5IEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90 RnVsbFhpZChGdWxsVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yCiAJCVRyYW5z YWN0aW9uSWQgdHJ1bmNhdGVkOwogCiAJCXRydW5jYXRlZCA9IFhpZEZyb21GdWxsVHJhbnNh Y3Rpb25JZChzbmFwc2hvdENvbmZsaWN0SG9yaXpvbik7Ci0JCVJlc29sdmVSZWNvdmVyeUNv bmZsaWN0V2l0aFNuYXBzaG90KHRydW5jYXRlZCwgbG9jYXRvcik7CisJCVJlc29sdmVSZWNv dmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90KHRydW5jYXRlZCwKKwkJCQkJCQkJCQkJb25DYXRh bG9nQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nLAorCQkJCQkJCQkJCQlsb2NhdG9yKTsK IAl9CiB9CiAKQEAgLTE0ODYsNiArMTQ5NCw5IEBAIGdldF9yZWNvdmVyeV9jb25mbGljdF9k ZXNjKFByb2NTaWduYWxSZWFzb24gcmVhc29uKQogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllf Q09ORkxJQ1RfU05BUFNIT1Q6CiAJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29uZmxp Y3Qgb24gc25hcHNob3QiKTsKIAkJCWJyZWFrOworCQljYXNlIFBST0NTSUdfUkVDT1ZFUllf Q09ORkxJQ1RfTE9HSUNBTFNMT1Q6CisJCQlyZWFzb25EZXNjID0gXygicmVjb3ZlcnkgY29u ZmxpY3Qgb24gcmVwbGljYXRpb24gc2xvdCIpOworCQkJYnJlYWs7CiAJCWNhc2UgUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgogCQkJcmVhc29uRGVzYyA9 IF8oInJlY292ZXJ5IGNvbmZsaWN0IG9uIGJ1ZmZlciBkZWFkbG9jayIpOwogCQkJYnJlYWs7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggMzA4MjA5M2QxZS4uZDkwMGVlZDlmNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rj b3AvcG9zdGdyZXMuYwpAQCAtMjQ3MCw2ICsyNDcwLDkgQEAgZXJyZGV0YWlsX3JlY292ZXJ5 X2NvbmZsaWN0KHZvaWQpCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQ U0hPVDoKIAkJCWVycmRldGFpbCgiVXNlciBxdWVyeSBtaWdodCBoYXZlIG5lZWRlZCB0byBz ZWUgcm93IHZlcnNpb25zIHRoYXQgbXVzdCBiZSByZW1vdmVkLiIpOwogCQkJYnJlYWs7CisJ CWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKKwkJCWVycmRl dGFpbCgiVXNlciB3YXMgdXNpbmcgdGhlIGxvZ2ljYWwgc2xvdCB0aGF0IG11c3QgYmUgZHJv cHBlZC4iKTsKKwkJCWJyZWFrOwogCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1Rf U1RBUlRVUF9ERUFETE9DSzoKIAkJCWVycmRldGFpbCgiVXNlciB0cmFuc2FjdGlvbiBjYXVz ZWQgYnVmZmVyIGRlYWRsb2NrIHdpdGggcmVjb3ZlcnkuIik7CiAJCQlicmVhazsKQEAgLTMw MzksNiArMzA0MiwyNSBAQCBSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFByb2NTaWduYWxS ZWFzb24gcmVhc29uKQogCQkJY2FzZSBQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0xPQ0s6 CiAJCQljYXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfVEFCTEVTUEFDRToKIAkJCWNh c2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9TTkFQU0hPVDoKKwkJCWNhc2UgUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVDoKKwkJCQkvKgorCQkJCSAqIEZvciBj b25mbGljdHMgdGhhdCByZXF1aXJlIGEgbG9naWNhbCBzbG90IHRvIGJlIGludmFsaWRhdGVk LCB0aGUKKwkJCQkgKiByZXF1aXJlbWVudCBpcyBmb3IgdGhlIHNpZ25hbCByZWNlaXZlciB0 byByZWxlYXNlIHRoZSBzbG90LAorCQkJCSAqIHNvIHRoYXQgaXQgY291bGQgYmUgaW52YWxp ZGF0ZWQgYnkgdGhlIHNpZ25hbCBzZW5kZXIuIFNvIGZvcgorCQkJCSAqIG5vcm1hbCBiYWNr ZW5kcywgdGhlIHRyYW5zYWN0aW9uIHNob3VsZCBiZSBhYm9ydGVkLCBqdXN0CisJCQkJICog bGlrZSBmb3Igb3RoZXIgcmVjb3ZlcnkgY29uZmxpY3RzLiBCdXQgaWYgaXQncyB3YWxzZW5k ZXIgb24KKwkJCQkgKiBzdGFuZGJ5LCB0aGVuIGl0IGhhcyB0byBiZSBraWxsZWQgc28gYXMg dG8gcmVsZWFzZSBhbgorCQkJCSAqIGFjcXVpcmVkIGxvZ2ljYWwgc2xvdC4KKwkJCQkgKi8K KwkJCQlpZiAoYW1fY2FzY2FkaW5nX3dhbHNlbmRlciAmJgorCQkJCQlyZWFzb24gPT0gUFJP Q1NJR19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCAmJgorCQkJCQlNeVJlcGxpY2F0 aW9uU2xvdCAmJiBTbG90SXNMb2dpY2FsKE15UmVwbGljYXRpb25TbG90KSkKKwkJCQl7CisJ CQkJCVJlY292ZXJ5Q29uZmxpY3RQZW5kaW5nID0gdHJ1ZTsKKwkJCQkJUXVlcnlDYW5jZWxQ ZW5kaW5nID0gdHJ1ZTsKKwkJCQkJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJCQkJCWJy ZWFrOworCQkJCX0KIAogCQkJCS8qCiAJCQkJICogSWYgd2UgYXJlbid0IGluIGEgdHJhbnNh Y3Rpb24gYW55IGxvbmdlciB0aGVuIGlnbm9yZS4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNlLmMKaW5kZXggMjkwMDg2ZmMyMi4uN2E4OTA5ZDhi OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFi YXNlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X2RhdGFiYXNl LmMKQEAgLTEwOSw2ICsxMDksOSBAQCBwZ3N0YXRfcmVwb3J0X3JlY292ZXJ5X2NvbmZsaWN0 KGludCByZWFzb24pCiAJCWNhc2UgUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQ SU46CiAJCQlkYmVudHJ5LT5jb25mbGljdF9idWZmZXJwaW4rKzsKIAkJCWJyZWFrOworCQlj YXNlIFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfTE9HSUNBTFNMT1Q6CisJCQlkYmVudHJ5 LT5jb25mbGljdF9sb2dpY2Fsc2xvdCsrOworCQkJYnJlYWs7CiAJCWNhc2UgUFJPQ1NJR19S RUNPVkVSWV9DT05GTElDVF9TVEFSVFVQX0RFQURMT0NLOgogCQkJZGJlbnRyeS0+Y29uZmxp Y3Rfc3RhcnR1cF9kZWFkbG9jaysrOwogCQkJYnJlYWs7CkBAIC0zODcsNiArMzkwLDcgQEAg cGdzdGF0X2RhdGFiYXNlX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlfcmVmLCBi b29sIG5vd2FpdCkKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF90YWJsZXNwYWNl KTsKIAlQR1NUQVRfQUNDVU1fREJDT1VOVChjb25mbGljdF9sb2NrKTsKIAlQR1NUQVRfQUND VU1fREJDT1VOVChjb25mbGljdF9zbmFwc2hvdCk7CisJUEdTVEFUX0FDQ1VNX0RCQ09VTlQo Y29uZmxpY3RfbG9naWNhbHNsb3QpOwogCVBHU1RBVF9BQ0NVTV9EQkNPVU5UKGNvbmZsaWN0 X2J1ZmZlcnBpbik7CiAJUEdTVEFUX0FDQ1VNX0RCQ09VTlQoY29uZmxpY3Rfc3RhcnR1cF9k ZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRm dW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKaW5kZXggMjVh MTU5YjVlNS4uNmE3NjQ3ZDAzMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNz LmMKQEAgLTEwMTcsNiArMTAxNyw4IEBAIFBHX1NUQVRfR0VUX0RCRU5UUllfSU5UNjQoeGFj dF9jb21taXQpOwogLyogcGdfc3RhdF9nZXRfZGJfeGFjdF9yb2xsYmFjayAqLwogUEdfU1RB VF9HRVRfREJFTlRSWV9JTlQ2NCh4YWN0X3JvbGxiYWNrKTsKIAorLyogcGdfc3RhdF9nZXRf ZGJfY29uZmxpY3RfbG9naWNhbHNsb3QgKi8KK1BHX1NUQVRfR0VUX0RCRU5UUllfSU5UNjQo Y29uZmxpY3RfbG9naWNhbHNsb3QpOwogCiBEYXR1bQogcGdfc3RhdF9nZXRfZGJfc3RhdF9y ZXNldF90aW1lKFBHX0ZVTkNUSU9OX0FSR1MpCkBAIC0xMDUwLDYgKzEwNTIsNyBAQCBwZ19z dGF0X2dldF9kYl9jb25mbGljdF9hbGwoUEdfRlVOQ1RJT05fQVJHUykKIAkJcmVzdWx0ID0g KGludDY0KSAoZGJlbnRyeS0+Y29uZmxpY3RfdGFibGVzcGFjZSArCiAJCQkJCQkgIGRiZW50 cnktPmNvbmZsaWN0X2xvY2sgKwogCQkJCQkJICBkYmVudHJ5LT5jb25mbGljdF9zbmFwc2hv dCArCisJCQkJCQkgIGRiZW50cnktPmNvbmZsaWN0X2xvZ2ljYWxzbG90ICsKIAkJCQkJCSAg ZGJlbnRyeS0+Y29uZmxpY3RfYnVmZmVycGluICsKIAkJCQkJCSAgZGJlbnRyeS0+Y29uZmxp Y3Rfc3RhcnR1cF9kZWFkbG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4 IGY5MzAxYjI2MjcuLjEwNWIwMWQ2OGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApA QCAtNTUzOSw2ICs1NTM5LDExIEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2RiX2Nv bmZsaWN0X3NuYXBzaG90JywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9wYXJhbGxlbCA9 PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKICAg cHJvc3JjID0+ICdwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zbmFwc2hvdCcgfSwKK3sgb2lk ID0+ICc5OTAxJywKKyAgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IHJlY292ZXJ5IGNvbmZsaWN0 cyBpbiBkYXRhYmFzZSBjYXVzZWQgYnkgbG9naWNhbCByZXBsaWNhdGlvbiBzbG90JywKKyAg cHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfZGJfY29uZmxpY3RfbG9naWNhbHNsb3QnLCBwcm92 b2xhdGlsZSA9PiAncycsCisgIHByb3BhcmFsbGVsID0+ICdyJywgcHJvcmV0dHlwZSA9PiAn aW50OCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAorICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0 X2RiX2NvbmZsaWN0X2xvZ2ljYWxzbG90JyB9LAogeyBvaWQgPT4gJzMwNjgnLAogICBkZXNj ciA9PiAnc3RhdGlzdGljczogcmVjb3ZlcnkgY29uZmxpY3RzIGluIGRhdGFiYXNlIGNhdXNl ZCBieSBzaGFyZWQgYnVmZmVyIHBpbicsCiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2Ri X2NvbmZsaWN0X2J1ZmZlcnBpbicsIHByb3ZvbGF0aWxlID0+ICdzJywKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKaW5kZXggYTNk ZjhkMjdjMy4uN2ZmY2U4NGQwNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdzdGF0LmgK KysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTI5MSw2ICsyOTEsNyBAQCB0eXBlZGVm IHN0cnVjdCBQZ1N0YXRfU3RhdERCRW50cnkKIAlQZ1N0YXRfQ291bnRlciBjb25mbGljdF90 YWJsZXNwYWNlOwogCVBnU3RhdF9Db3VudGVyIGNvbmZsaWN0X2xvY2s7CiAJUGdTdGF0X0Nv dW50ZXIgY29uZmxpY3Rfc25hcHNob3Q7CisJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3RfbG9n aWNhbHNsb3Q7CiAJUGdTdGF0X0NvdW50ZXIgY29uZmxpY3RfYnVmZmVycGluOwogCVBnU3Rh dF9Db3VudGVyIGNvbmZsaWN0X3N0YXJ0dXBfZGVhZGxvY2s7CiAJUGdTdGF0X0NvdW50ZXIg dGVtcF9maWxlczsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3Qu aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRleCA2NWYyYzc0MjM5Li4w ZWQxZDhhZjI4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC0yMTYsNiArMjE2LDcg QEAgZXh0ZXJuIFhMb2dSZWNQdHIgUmVwbGljYXRpb25TbG90c0NvbXB1dGVMb2dpY2FsUmVz dGFydExTTih2b2lkKTsKIGV4dGVybiBib29sIFJlcGxpY2F0aW9uU2xvdHNDb3VudERCU2xv dHMoT2lkIGRib2lkLCBpbnQgKm5zbG90cywgaW50ICpuYWN0aXZlKTsKIGV4dGVybiB2b2lk IFJlcGxpY2F0aW9uU2xvdHNEcm9wREJTbG90cyhPaWQgZGJvaWQpOwogZXh0ZXJuIGJvb2wg SW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cyhYTG9nU2VnTm8gb2xkZXN0U2Vn bm8pOworZXh0ZXJuIHZvaWQgSW52YWxpZGF0ZUNvbmZsaWN0aW5nTG9naWNhbFJlcGxpY2F0 aW9uU2xvdHMoT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRlcm4gUmVwbGlj YXRpb25TbG90ICpTZWFyY2hOYW1lZFJlcGxpY2F0aW9uU2xvdChjb25zdCBjaGFyICpuYW1l LCBib29sIG5lZWRfbG9jayk7CiBleHRlcm4gaW50CVJlcGxpY2F0aW9uU2xvdEluZGV4KFJl cGxpY2F0aW9uU2xvdCAqc2xvdCk7CiBleHRlcm4gYm9vbCBSZXBsaWNhdGlvblNsb3ROYW1l KGludCBpbmRleCwgTmFtZSBuYW1lKTsKQEAgLTIyNyw1ICsyMjgsNiBAQCBleHRlcm4gdm9p ZCBDaGVja1BvaW50UmVwbGljYXRpb25TbG90cyh2b2lkKTsKIAogZXh0ZXJuIHZvaWQgQ2hl Y2tTbG90UmVxdWlyZW1lbnRzKHZvaWQpOwogZXh0ZXJuIHZvaWQgQ2hlY2tTbG90UGVybWlz c2lvbnModm9pZCk7CitleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhM b2dpY2FsU2xvdHMoT2lkIGRib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgY2hhciAqcmVhc29u KTsKIAogI2VuZGlmCQkJCQkJCS8qIFNMT1RfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWdu YWwuaAppbmRleCBlZTYzNjkwMGYzLi41NjA5NmJkM2UyIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3By b2NzaWduYWwuaApAQCAtNDEsNiArNDEsNyBAQCB0eXBlZGVmIGVudW0KIAlQUk9DU0lHX1JF Q09WRVJZX0NPTkZMSUNUX1RBQkxFU1BBQ0UsCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElD VF9MT0NLLAogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfU05BUFNIT1QsCisJUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9MT0dJQ0FMU0xPVCwKIAlQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX0JVRkZFUlBJTiwKIAlQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBf REVBRExPQ0ssCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3RhbmRieS5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKaW5kZXggZTQ2YzkzNGM1Ni4uYmU4 NmExMjQ2ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKQEAgLTMwLDggKzMwLDEwIEBAIGV4 dGVybiB2b2lkIEluaXRSZWNvdmVyeVRyYW5zYWN0aW9uRW52aXJvbm1lbnQodm9pZCk7CiBl eHRlcm4gdm9pZCBTaHV0ZG93blJlY292ZXJ5VHJhbnNhY3Rpb25FbnZpcm9ubWVudCh2b2lk KTsKIAogZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3Qo VHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJCQkJCQkJCWJv b2wgb25DYXRhbG9nQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nLAogCQkJCQkJCQkJCQkJ UmVsRmlsZUxvY2F0b3IgbG9jYXRvcik7CiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlD b25mbGljdFdpdGhTbmFwc2hvdEZ1bGxYaWQoRnVsbFRyYW5zYWN0aW9uSWQgc25hcHNob3RD b25mbGljdEhvcml6b24sCisJCQkJCQkJCQkJCQkJICAgYm9vbCBvbkNhdGFsb2dBY2Nlc3Np YmxlSW5Mb2dpY2FsRGVjb2RpbmcsCiAJCQkJCQkJCQkJCQkJICAgUmVsRmlsZUxvY2F0b3Ig bG9jYXRvcik7CiBleHRlcm4gdm9pZCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhUYWJs ZXNwYWNlKE9pZCB0c2lkKTsKIGV4dGVybiB2b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0 V2l0aERhdGFiYXNlKE9pZCBkYmlkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQKaW5kZXggZmI5ZjkzNmQ0My4uMWNjNjJjNDQ3ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQKQEAgLTE4NjgsNyArMTg2OCw4IEBAIHBnX3N0YXRfZGF0YWJhc2Vf Y29uZmxpY3RzfCBTRUxFQ1QgZC5vaWQgQVMgZGF0aWQsCiAgICAgcGdfc3RhdF9nZXRfZGJf Y29uZmxpY3RfbG9jayhkLm9pZCkgQVMgY29uZmxfbG9jaywKICAgICBwZ19zdGF0X2dldF9k Yl9jb25mbGljdF9zbmFwc2hvdChkLm9pZCkgQVMgY29uZmxfc25hcHNob3QsCiAgICAgcGdf c3RhdF9nZXRfZGJfY29uZmxpY3RfYnVmZmVycGluKGQub2lkKSBBUyBjb25mbF9idWZmZXJw aW4sCi0gICAgcGdfc3RhdF9nZXRfZGJfY29uZmxpY3Rfc3RhcnR1cF9kZWFkbG9jayhkLm9p ZCkgQVMgY29uZmxfZGVhZGxvY2sKKyAgICBwZ19zdGF0X2dldF9kYl9jb25mbGljdF9zdGFy dHVwX2RlYWRsb2NrKGQub2lkKSBBUyBjb25mbF9kZWFkbG9jaywKKyAgICBwZ19zdGF0X2dl dF9kYl9jb25mbGljdF9sb2dpY2Fsc2xvdChkLm9pZCkgQVMgY29uZmxfYWN0aXZlX2xvZ2lj YWxzbG90CiAgICBGUk9NIHBnX2RhdGFiYXNlIGQ7CiBwZ19zdGF0X2dzc2FwaXwgU0VMRUNU IHMucGlkLAogICAgIHMuZ3NzX2F1dGggQVMgZ3NzX2F1dGhlbnRpY2F0ZWQsCi0tIAoyLjM0 LjEKCg== --------------68IV02WKbO30CE6z3vbE95XU Content-Type: text/plain; charset=UTF-8; name="v28-0001-Add-info-in-WAL-records-in-preparation-for-logic.patch" Content-Disposition: attachment; filename*0="v28-0001-Add-info-in-WAL-records-in-preparation-for-logic.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzNWYwMjAyZjVkZmExOTQ2OGY5NzlhNDljYWJhNjcwYWJlNGU2M2ZmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBiZHJvdXZvdEFXUyA8YmRyb3V2b3RAYW1hem9uLmNv bT4KRGF0ZTogV2VkLCA3IERlYyAyMDIyIDA4OjAyOjM3ICswMDAwClN1YmplY3Q6IFtQQVRD SCB2MjggMS82XSBBZGQgaW5mbyBpbiBXQUwgcmVjb3JkcyBpbiBwcmVwYXJhdGlvbiBmb3Ig bG9naWNhbAogc2xvdCBjb25mbGljdCBoYW5kbGluZy4KCldoZW4gYSBXQUwgcmVwbGF5IG9u IHN0YW5kYnkgaW5kaWNhdGVzIHRoYXQgYSBjYXRhbG9nIHRhYmxlIHR1cGxlIGlzCnRvIGJl IGRlbGV0ZWQgYnkgYW4geGlkIHRoYXQgaXMgZ3JlYXRlciB0aGFuIGEgbG9naWNhbCBzbG90 J3MKY2F0YWxvZ194bWluLCB0aGVuIHRoYXQgbWVhbnMgdGhlIHNsb3QncyBjYXRhbG9nX3ht aW4gY29uZmxpY3RzIHdpdGgKdGhlIHhpZCwgYW5kIHdlIG5lZWQgdG8gaGFuZGxlIHRoZSBj b25mbGljdC4gIFdoaWxlIHN1YnNlcXVlbnQgY29tbWl0cwp3aWxsIGRvIHRoZSBhY3R1YWwg Y29uZmxpY3QgaGFuZGxpbmcsIHRoaXMgY29tbWl0IGFkZHMgYSBuZXcgZmllbGQKb25DYXRh bG9nQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nIGluIHN1Y2ggV0FMIHJlY29yZHMsIHRo YXQgaXMgdHJ1ZQpmb3IgY2F0YWxvZyB0YWJsZXMsIHNvIGFzIHRvIGFycmFuZ2UgZm9yIGNv bmZsaWN0IGhhbmRsaW5nLgoKQXV0aG9yOiBBbmRyZXMgRnJldW5kIChpbiBhbiBvbGRlciB2 ZXJzaW9uKSwgQW1pdCBLaGFuZGVrYXIsIEJlcnRyYW5kCkRyb3V2b3QKUmV2aWV3ZWQtQnk6 IEJlcnRyYW5kIERyb3V2b3QsIEFuZHJlcyBGcmV1bmQsIFJvYmVydCBIYWFzLCBGYWJyaXpp byBkZQpSb3llcyBNZWxsbwotLS0KIGNvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9k ZGwub3V0ICB8IDI5ICsrKysrKysrKysrKysKIGNvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwv ZGRsLnNxbCAgICAgICB8ICA3ICsrKysKIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAg ICAgICAgICAgICB8IDExICsrKysrCiBzcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9w dGlvbnMuYyAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYyAg ICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jICAgIHwg IDEgKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgIHwgIDQgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICB8ICAxICsKIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyB8ICAzICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvbmJ0cmVlL25idHBhZ2UuYyAgICAgfCAgMiArCiBzcmMvYmFja2VuZC9hY2Nl c3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jICAgfCAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMgICAgICAgICAgICAgfCAxNCArKysrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYyAgICAgICAgfCA1NSArKysrKysrKysrKysrKysrKysrKysrKystCiBzcmMv aW5jbHVkZS9hY2Nlc3MvZ2lzdHhsb2cuaCAgICAgICAgICAgfCAgMiArCiBzcmMvaW5jbHVk ZS9hY2Nlc3MvaGFzaF94bG9nLmggICAgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtX3hsb2cuaCAgICAgICAgfCAgNSArKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9u YnR4bG9nLmggICAgICAgICAgICB8ICAyICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9n LmggICAgICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaCAg ICAgICAgICB8ICAyICsKIHNyYy9pbmNsdWRlL3V0aWxzL3JlbC5oICAgICAgICAgICAgICAg ICB8IDM0ICsrKysrKysrKysrKysrKwogMjAgZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlv bnMoKyksIDkgZGVsZXRpb25zKC0pCiAgMTEuMiUgY29udHJpYi90ZXN0X2RlY29kaW5nL2V4 cGVjdGVkLwogICA2LjYlIGNvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvCiAgIDYuNSUgZG9j L3NyYy9zZ21sLwogICA4LjMlIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwLwogICA3LjElIHNy Yy9iYWNrZW5kL2FjY2Vzcy8KICAgNi4wJSBzcmMvYmFja2VuZC9jYXRhbG9nLwogIDIyLjYl IHNyYy9iYWNrZW5kL2NvbW1hbmRzLwogICA4LjUlIHNyYy9pbmNsdWRlL2FjY2Vzcy8KICAy MS40JSBzcmMvaW5jbHVkZS91dGlscy8KCmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVj b2RpbmcvZXhwZWN0ZWQvZGRsLm91dCBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3Rl ZC9kZGwub3V0CmluZGV4IDlhMjhiNWRkYzUuLjQwY2YyZjRkYzQgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0CisrKyBiL2NvbnRyaWIvdGVz dF9kZWNvZGluZy9leHBlY3RlZC9kZGwub3V0CkBAIC00ODMsNiArNDgzLDcgQEAgQ1JFQVRF IFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhICgKICkKIFdJVEggKHVzZXJfY2F0YWxvZ190 YWJsZSA9IHRydWUpCiA7CitDUkVBVEUgSU5ERVggcmVwbGljYXRpb25fbWV0YWRhdGFfaWR4 MSBvbiByZXBsaWNhdGlvbl9tZXRhZGF0YShyZWxhdGlvbik7CiBcZCsgcmVwbGljYXRpb25f bWV0YWRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUYWJsZSAicHVibGljLnJlcGxpY2F0aW9uX21ldGFkYXRhIgogICBDb2x1bW4gIHwg IFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgICAgICAgICAgICAgICAgICAgICBE ZWZhdWx0ICAgICAgICAgICAgICAgICAgICAgIHwgU3RvcmFnZSAgfCBTdGF0cyB0YXJnZXQg fCBEZXNjcmlwdGlvbiAKQEAgLTQ5Miw4ICs0OTMsMTUgQEAgV0lUSCAodXNlcl9jYXRhbG9n X3RhYmxlID0gdHJ1ZSkKICBvcHRpb25zICB8IHRleHRbXSAgfCAgICAgICAgICAgfCAgICAg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCiBJbmRleGVzOgogICAgICJyZXBsaWNh dGlvbl9tZXRhZGF0YV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGlkKQorICAgICJyZXBs aWNhdGlvbl9tZXRhZGF0YV9pZHgxIiBidHJlZSAocmVsYXRpb24pCiBPcHRpb25zOiB1c2Vy X2NhdGFsb2dfdGFibGU9dHJ1ZQogCitTRUxFQ1QgYm9vbF9hbmQoaW5kaXN1c2VyY2F0YWxv ZykgZnJvbSBwZ19pbmRleCB3aGVyZSBpbmRyZWxpZCA9ICdyZXBsaWNhdGlvbl9tZXRhZGF0 YSc6OnJlZ2NsYXNzOworIGJvb2xfYW5kIAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKwog SU5TRVJUIElOVE8gcmVwbGljYXRpb25fbWV0YWRhdGEocmVsYXRpb24sIG9wdGlvbnMpCiBW QUxVRVMgKCdmb28nLCBBUlJBWVsnYScsICdiJ10pOwogQUxURVIgVEFCTEUgcmVwbGljYXRp b25fbWV0YWRhdGEgUkVTRVQgKHVzZXJfY2F0YWxvZ190YWJsZSk7CkBAIC01MDYsNiArNTE0 LDEzIEBAIEFMVEVSIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhIFJFU0VUICh1c2VyX2Nh dGFsb2dfdGFibGUpOwogIG9wdGlvbnMgIHwgdGV4dFtdICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgZXh0ZW5kZWQgfCAgICAgICAgICAgICAgfCAKIEluZGV4ZXM6CiAgICAgInJlcGxpY2F0 aW9uX21ldGFkYXRhX3BrZXkiIFBSSU1BUlkgS0VZLCBidHJlZSAoaWQpCisgICAgInJlcGxp Y2F0aW9uX21ldGFkYXRhX2lkeDEiIGJ0cmVlIChyZWxhdGlvbikKKworU0VMRUNUIGJvb2xf b3IoaW5kaXN1c2VyY2F0YWxvZykgZnJvbSBwZ19pbmRleCB3aGVyZSBpbmRyZWxpZCA9ICdy ZXBsaWNhdGlvbl9tZXRhZGF0YSc6OnJlZ2NsYXNzOworIGJvb2xfb3IgCistLS0tLS0tLS0K KyBmCisoMSByb3cpCiAKIElOU0VSVCBJTlRPIHJlcGxpY2F0aW9uX21ldGFkYXRhKHJlbGF0 aW9uLCBvcHRpb25zKQogVkFMVUVTICgnYmFyJywgQVJSQVlbJ2EnLCAnYiddKTsKQEAgLTUx OSw4ICs1MzQsMTUgQEAgQUxURVIgVEFCTEUgcmVwbGljYXRpb25fbWV0YWRhdGEgU0VUICh1 c2VyX2NhdGFsb2dfdGFibGUgPSB0cnVlKTsKICBvcHRpb25zICB8IHRleHRbXSAgfCAgICAg ICAgICAgfCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IGV4dGVuZGVkIHwgICAgICAgICAgICAgIHwgCiBJbmRleGVzOgog ICAgICJyZXBsaWNhdGlvbl9tZXRhZGF0YV9wa2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGlk KQorICAgICJyZXBsaWNhdGlvbl9tZXRhZGF0YV9pZHgxIiBidHJlZSAocmVsYXRpb24pCiBP cHRpb25zOiB1c2VyX2NhdGFsb2dfdGFibGU9dHJ1ZQogCitTRUxFQ1QgYm9vbF9hbmQoaW5k aXN1c2VyY2F0YWxvZykgZnJvbSBwZ19pbmRleCB3aGVyZSBpbmRyZWxpZCA9ICdyZXBsaWNh dGlvbl9tZXRhZGF0YSc6OnJlZ2NsYXNzOworIGJvb2xfYW5kIAorLS0tLS0tLS0tLQorIHQK KygxIHJvdykKKwogSU5TRVJUIElOVE8gcmVwbGljYXRpb25fbWV0YWRhdGEocmVsYXRpb24s IG9wdGlvbnMpCiBWQUxVRVMgKCdibHViJywgTlVMTCk7CiAtLSBtYWtlIHN1cmUgcmV3cml0 ZXMgZG9uJ3Qgd29yawpAQCAtNTM4LDggKzU2MCwxNSBAQCBBTFRFUiBUQUJMRSByZXBsaWNh dGlvbl9tZXRhZGF0YSBTRVQgKHVzZXJfY2F0YWxvZ190YWJsZSA9IGZhbHNlKTsKICByZXdy aXRlbWVvcm5vdCB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWluICAgIHwg ICAgICAgICAgICAgIHwgCiBJbmRleGVzOgogICAgICJyZXBsaWNhdGlvbl9tZXRhZGF0YV9w a2V5IiBQUklNQVJZIEtFWSwgYnRyZWUgKGlkKQorICAgICJyZXBsaWNhdGlvbl9tZXRhZGF0 YV9pZHgxIiBidHJlZSAocmVsYXRpb24pCiBPcHRpb25zOiB1c2VyX2NhdGFsb2dfdGFibGU9 ZmFsc2UKIAorU0VMRUNUIGJvb2xfb3IoaW5kaXN1c2VyY2F0YWxvZykgZnJvbSBwZ19pbmRl eCB3aGVyZSBpbmRyZWxpZCA9ICdyZXBsaWNhdGlvbl9tZXRhZGF0YSc6OnJlZ2NsYXNzOwor IGJvb2xfb3IgCistLS0tLS0tLS0KKyBmCisoMSByb3cpCisKIElOU0VSVCBJTlRPIHJlcGxp Y2F0aW9uX21ldGFkYXRhKHJlbGF0aW9uLCBvcHRpb25zKQogVkFMVUVTICgnemFwaG9kJywg TlVMTCk7CiBTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygn cmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3Nr aXAtZW1wdHkteGFjdHMnLCAnMScpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29k aW5nL3NxbC9kZGwuc3FsIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9kZGwuc3FsCmlu ZGV4IDRmNzZiZWQ3MmMuLjg1ZGRkNGJlMDMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9k ZWNvZGluZy9zcWwvZGRsLnNxbAorKysgYi9jb250cmliL3Rlc3RfZGVjb2Rpbmcvc3FsL2Rk bC5zcWwKQEAgLTI3NiwxOSArMjc2LDI1IEBAIENSRUFURSBUQUJMRSByZXBsaWNhdGlvbl9t ZXRhZGF0YSAoCiApCiBXSVRIICh1c2VyX2NhdGFsb2dfdGFibGUgPSB0cnVlKQogOworCitD UkVBVEUgSU5ERVggcmVwbGljYXRpb25fbWV0YWRhdGFfaWR4MSBvbiByZXBsaWNhdGlvbl9t ZXRhZGF0YShyZWxhdGlvbik7CisKIFxkKyByZXBsaWNhdGlvbl9tZXRhZGF0YQorU0VMRUNU IGJvb2xfYW5kKGluZGlzdXNlcmNhdGFsb2cpIGZyb20gcGdfaW5kZXggd2hlcmUgaW5kcmVs aWQgPSAncmVwbGljYXRpb25fbWV0YWRhdGEnOjpyZWdjbGFzczsKIAogSU5TRVJUIElOVE8g cmVwbGljYXRpb25fbWV0YWRhdGEocmVsYXRpb24sIG9wdGlvbnMpCiBWQUxVRVMgKCdmb28n LCBBUlJBWVsnYScsICdiJ10pOwogCiBBTFRFUiBUQUJMRSByZXBsaWNhdGlvbl9tZXRhZGF0 YSBSRVNFVCAodXNlcl9jYXRhbG9nX3RhYmxlKTsKIFxkKyByZXBsaWNhdGlvbl9tZXRhZGF0 YQorU0VMRUNUIGJvb2xfb3IoaW5kaXN1c2VyY2F0YWxvZykgZnJvbSBwZ19pbmRleCB3aGVy ZSBpbmRyZWxpZCA9ICdyZXBsaWNhdGlvbl9tZXRhZGF0YSc6OnJlZ2NsYXNzOwogCiBJTlNF UlQgSU5UTyByZXBsaWNhdGlvbl9tZXRhZGF0YShyZWxhdGlvbiwgb3B0aW9ucykKIFZBTFVF UyAoJ2JhcicsIEFSUkFZWydhJywgJ2InXSk7CiAKIEFMVEVSIFRBQkxFIHJlcGxpY2F0aW9u X21ldGFkYXRhIFNFVCAodXNlcl9jYXRhbG9nX3RhYmxlID0gdHJ1ZSk7CiBcZCsgcmVwbGlj YXRpb25fbWV0YWRhdGEKK1NFTEVDVCBib29sX2FuZChpbmRpc3VzZXJjYXRhbG9nKSBmcm9t IHBnX2luZGV4IHdoZXJlIGluZHJlbGlkID0gJ3JlcGxpY2F0aW9uX21ldGFkYXRhJzo6cmVn Y2xhc3M7CiAKIElOU0VSVCBJTlRPIHJlcGxpY2F0aW9uX21ldGFkYXRhKHJlbGF0aW9uLCBv cHRpb25zKQogVkFMVUVTICgnYmx1YicsIE5VTEwpOwpAQCAtMjk5LDYgKzMwNSw3IEBAIEFM VEVSIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhIEFMVEVSIENPTFVNTiByZXdyaXRlbWVv cm5vdCBUWVBFIHRleHQ7CiAKIEFMVEVSIFRBQkxFIHJlcGxpY2F0aW9uX21ldGFkYXRhIFNF VCAodXNlcl9jYXRhbG9nX3RhYmxlID0gZmFsc2UpOwogXGQrIHJlcGxpY2F0aW9uX21ldGFk YXRhCitTRUxFQ1QgYm9vbF9vcihpbmRpc3VzZXJjYXRhbG9nKSBmcm9tIHBnX2luZGV4IHdo ZXJlIGluZHJlbGlkID0gJ3JlcGxpY2F0aW9uX21ldGFkYXRhJzo6cmVnY2xhc3M7CiAKIElO U0VSVCBJTlRPIHJlcGxpY2F0aW9uX21ldGFkYXRhKHJlbGF0aW9uLCBvcHRpb25zKQogVkFM VUVTICgnemFwaG9kJywgTlVMTCk7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDllZDJiMDIwYjcu LjE4ZDZiOTljYWMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC00NDM3LDYgKzQ0MzcsMTcgQEAg U0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3Jl cGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAg ICA8L3Jvdz4KIAorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3Ry dWN0ZmllbGQ+aW5kaXN1c2VyY2F0YWxvZzwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBJZiB0cnVlLCB0aGUg aW5kZXggaXMgbGlua2VkIHRvIGEgdGFibGUgdGhhdCBpcyBkZWNsYXJlZCBhcyBhbiBhZGRp dGlvbmFsCisgICAgICAgY2F0YWxvZyB0YWJsZSBmb3IgcHVycG9zZXMgb2YgbG9naWNhbCBy ZXBsaWNhdGlvbiAobWVhbnMgaGFzIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGV0YWJsZSI+ PGxpdGVyYWw+dXNlcl9jYXRhbG9nX3RhYmxlPC9saXRlcmFsPjwvbGluaz4pCisgICAgICAg c2V0IHRvIHRydWUuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAg ICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPmluZGlz cmVwbGlkZW50PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKaW5kZXggNzViNzM0NDg5MS4uNGI0MWY1ZTY4 ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKQEAgLTEyMCw3 ICsxMjAsNyBAQCBzdGF0aWMgcmVsb3B0X2Jvb2wgYm9vbFJlbE9wdHNbXSA9CiAJCQlSRUxP UFRfS0lORF9IRUFQLAogCQkJQWNjZXNzRXhjbHVzaXZlTG9jawogCQl9LAotCQlmYWxzZQor CQlIRUFQX0RFRkFVTFRfVVNFUl9DQVRBTE9HX1RBQkxFCiAJfSwKIAl7CiAJCXsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvZ2lzdC9naXN0eGxvZy5jCmluZGV4IGNiNWFmZmEzZDIuLmI3NDc5MDBhNDUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R4bG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHhsb2cuYwpAQCAtNjA4LDYgKzYwOCw3IEBA IGdpc3RYTG9nUGFnZVJldXNlKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1 bGxUcmFuc2FjdGlvbklkIGRlbGV0ZVhpZCkKIAkgKi8KIAogCS8qIFhMT0cgc3R1ZmYgKi8K Kwl4bHJlY19yZXVzZS5vbkNhdGFsb2dBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcgPSBJ bmRleElzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbCk7CiAJeGxyZWNfcmV1c2Uu bG9jYXRvciA9IHJlbC0+cmRfbG9jYXRvcjsKIAl4bHJlY19yZXVzZS5ibG9jayA9IGJsa25v OwogCXhscmVjX3JldXNlLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gZGVsZXRlWGlkOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hhc2gvaGFzaGluc2VydC5jCmluZGV4IDlhOTIxZTM0MWUuLjdl NTlhMzg0YWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oYXNoL2hhc2hpbnNl cnQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoaW5zZXJ0LmMKQEAgLTQz Miw2ICs0MzIsNyBAQCBfaGFzaF92YWN1dW1fb25lX3BhZ2UoUmVsYXRpb24gcmVsLCBSZWxh dGlvbiBocmVsLCBCdWZmZXIgbWV0YWJ1ZiwgQnVmZmVyIGJ1ZikKIAkJCXhsX2hhc2hfdmFj dXVtX29uZV9wYWdlIHhscmVjOwogCQkJWExvZ1JlY1B0cglyZWNwdHI7CiAKKwkJCXhscmVj Lm9uQ2F0YWxvZ0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyA9IFJlbGF0aW9uSXNBY2Nl c3NpYmxlSW5Mb2dpY2FsRGVjb2RpbmcoaHJlbCk7CiAJCQl4bHJlYy5zbmFwc2hvdENvbmZs aWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCQkJeGxyZWMubnR1cGxl cyA9IG5kZWxldGFibGU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNzQ3 ZGI1MDM3Ni4uYjQyYTZiZmE2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAg LTY4MzEsNiArNjgzMSw3IEBAIGhlYXBfZnJlZXplX2V4ZWN1dGVfcHJlcGFyZWQoUmVsYXRp b24gcmVsLCBCdWZmZXIgYnVmZmVyLAogCQlzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IEZy ZWV6ZUxpbWl0OwogCQlUcmFuc2FjdGlvbklkUmV0cmVhdChzbmFwc2hvdENvbmZsaWN0SG9y aXpvbik7CiAKKwkJeGxyZWMub25DYXRhbG9nQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5n ID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWwpOwogCQl4bHJl Yy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwog CQl4bHJlYy5ucGxhbnMgPSBucGxhbnM7CiAKQEAgLTgyNDgsNyArODI0OSw3IEBAIGJvdHRv bXVwX3NvcnRfYW5kX3NocmluayhUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSkKICAqIHVw ZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLgogICovCiBYTG9nUmVjUHRyCi1sb2dfaGVhcF92 aXNpYmxlKFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1 ZmZlciB2bV9idWZmZXIsCitsb2dfaGVhcF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGhlYXBfYnVmZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAogCQkJCSBUcmFuc2FjdGlvbklkIHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uLCB1aW50OCB2bWZsYWdzKQogewogCXhsX2hlYXBfdmlz aWJsZSB4bHJlYzsKQEAgLTgyNTgsNiArODI1OSw3IEBAIGxvZ19oZWFwX3Zpc2libGUoUmVs RmlsZUxvY2F0b3IgcmxvY2F0b3IsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVyIHZtX2J1 ZmZlciwKIAlBc3NlcnQoQnVmZmVySXNWYWxpZChoZWFwX2J1ZmZlcikpOwogCUFzc2VydChC dWZmZXJJc1ZhbGlkKHZtX2J1ZmZlcikpOwogCisJeGxyZWMub25DYXRhbG9nQWNjZXNzaWJs ZUluTG9naWNhbERlY29kaW5nID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZyhyZWwpOwogCXhscmVjLnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RD b25mbGljdEhvcml6b247CiAJeGxyZWMuZmxhZ3MgPSB2bWZsYWdzOwogCVhMb2dCZWdpbklu c2VydCgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFw LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA5MWM1ZjVl OWVmLi5hYWU3OGY3MTQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpA QCAtNDE4LDYgKzQxOCw3IEBAIGhlYXBfcGFnZV9wcnVuZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAkJCXhsX2hlYXBfcHJ1bmUgeGxyZWM7CiAJCQlYTG9nUmVjUHRy CXJlY3B0cjsKIAorCQkJeGxyZWMub25DYXRhbG9nQWNjZXNzaWJsZUluTG9naWNhbERlY29k aW5nID0gUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWxhdGlvbik7 CiAJCQl4bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHByc3RhdGUuc25hcHNob3RD b25mbGljdEhvcml6b247CiAJCQl4bHJlYy5ucmVkaXJlY3RlZCA9IHByc3RhdGUubnJlZGly ZWN0ZWQ7CiAJCQl4bHJlYy5uZGVhZCA9IHByc3RhdGUubmRlYWQ7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKaW5kZXggNGVkNzAyNzVlMi4uMGJkNzNmNGQ5 ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYwpAQCAtMjgz LDggKzI4Myw3IEBAIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1i ZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCiAJCQlpZiAoWExvZ1JlY1B0cklzSW52YWxp ZChyZWNwdHIpKQogCQkJewogCQkJCUFzc2VydCghSW5SZWNvdmVyeSk7Ci0JCQkJcmVjcHRy ID0gbG9nX2hlYXBfdmlzaWJsZShyZWwtPnJkX2xvY2F0b3IsIGhlYXBCdWYsIHZtQnVmLAot CQkJCQkJCQkJCSAgY3V0b2ZmX3hpZCwgZmxhZ3MpOworCQkJCXJlY3B0ciA9IGxvZ19oZWFw X3Zpc2libGUocmVsLCBoZWFwQnVmLCB2bUJ1ZiwgY3V0b2ZmX3hpZCwgZmxhZ3MpOwogCiAJ CQkJLyoKIAkJCQkgKiBJZiBkYXRhIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCAob3Igd2FsX2xv Z19oaW50cz1vbiksIHdlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVl L25idHBhZ2UuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0cGFnZS5jCmluZGV4 IDY1YWE0NDg5M2MuLjg4NzczYzBlNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9uYnRyZWUvbmJ0cGFnZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 cGFnZS5jCkBAIC04MzYsNiArODM2LDcgQEAgX2J0X2xvZ19yZXVzZV9wYWdlKFJlbGF0aW9u IHJlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEZ1bGxUcmFuc2FjdGlvbklkIHNhZmV4aWQpCiAJ ICovCiAKIAkvKiBYTE9HIHN0dWZmICovCisJeGxyZWNfcmV1c2Uub25DYXRhbG9nQWNjZXNz aWJsZUluTG9naWNhbERlY29kaW5nID0gSW5kZXhJc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZyhyZWwpOwogCXhscmVjX3JldXNlLmxvY2F0b3IgPSByZWwtPnJkX2xvY2F0b3I7CiAJ eGxyZWNfcmV1c2UuYmxvY2sgPSBibGtubzsKIAl4bHJlY19yZXVzZS5zbmFwc2hvdENvbmZs aWN0SG9yaXpvbiA9IHNhZmV4aWQ7CkBAIC0xMzU4LDYgKzEzNTksNyBAQCBfYnRfZGVsaXRl bXNfZGVsZXRlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJWExvZ1JlY1B0cglyZWNw dHI7CiAJCXhsX2J0cmVlX2RlbGV0ZSB4bHJlY19kZWxldGU7CiAKKwkJeGxyZWNfZGVsZXRl Lm9uQ2F0YWxvZ0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyA9IEluZGV4SXNBY2Nlc3Np YmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVsKTsKIAkJeGxyZWNfZGVsZXRlLnNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247CiAJCXhscmVjX2RlbGV0 ZS5uZGVsZXRlZCA9IG5kZWxldGFibGU7CiAJCXhscmVjX2RlbGV0ZS5udXBkYXRlZCA9IG51 cGRhdGFibGU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3Zh Y3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwppbmRleCBh ZDkwYjIxM2I5Li5iZTIzOTA3Njg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv c3BnaXN0L3NwZ3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3Bn dmFjdXVtLmMKQEAgLTUwMyw2ICs1MDMsNyBAQCB2YWN1dW1SZWRpcmVjdEFuZFBsYWNlaG9s ZGVyKFJlbGF0aW9uIGluZGV4LCBCdWZmZXIgYnVmZmVyKQogCXNwZ3hsb2dWYWN1dW1SZWRp cmVjdCB4bHJlYzsKIAlHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdDsKIAorCXhscmVjLm9uQ2F0 YWxvZ0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyA9IEluZGV4SXNBY2Nlc3NpYmxlSW5M b2dpY2FsRGVjb2RpbmcoaW5kZXgpOwogCXhscmVjLm5Ub1BsYWNlaG9sZGVyID0gMDsKIAl4 bHJlYy5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNjFmMWQzOTI2YS4uZjZiMmM5YWM3MSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvaW5kZXguYwpAQCAtMTIzLDcgKzEyMyw4IEBAIHN0YXRpYyB2b2lkIFVwZGF0ZUlu ZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLCBPaWQgaGVhcG9pZCwKIAkJCQkJCQkJYm9vbCBp c2V4Y2x1c2lvbiwKIAkJCQkJCQkJYm9vbCBpbW1lZGlhdGUsCiAJCQkJCQkJCWJvb2wgaXN2 YWxpZCwKLQkJCQkJCQkJYm9vbCBpc3JlYWR5KTsKKwkJCQkJCQkJYm9vbCBpc3JlYWR5LAor CQkJCQkJCQlib29sIGlzX3VzZXJfY2F0YWxvZyk7CiBzdGF0aWMgdm9pZCBpbmRleF91cGRh dGVfc3RhdHMoUmVsYXRpb24gcmVsLAogCQkJCQkJCSAgIGJvb2wgaGFzaW5kZXgsCiAJCQkJ CQkJICAgZG91YmxlIHJlbHR1cGxlcyk7CkBAIC01NDUsNyArNTQ2LDggQEAgVXBkYXRlSW5k ZXhSZWxhdGlvbihPaWQgaW5kZXhvaWQsCiAJCQkJCWJvb2wgaXNleGNsdXNpb24sCiAJCQkJ CWJvb2wgaW1tZWRpYXRlLAogCQkJCQlib29sIGlzdmFsaWQsCi0JCQkJCWJvb2wgaXNyZWFk eSkKKwkJCQkJYm9vbCBpc3JlYWR5LAorCQkJCQlib29sIGlzX3VzZXJfY2F0YWxvZykKIHsK IAlpbnQydmVjdG9yICppbmRrZXk7CiAJb2lkdmVjdG9yICAqaW5kY29sbGF0aW9uOwpAQCAt NjIyLDYgKzYyNCw3IEBAIFVwZGF0ZUluZGV4UmVsYXRpb24oT2lkIGluZGV4b2lkLAogCXZh bHVlc1tBbnVtX3BnX2luZGV4X2luZGNoZWNreG1pbiAtIDFdID0gQm9vbEdldERhdHVtKGZh bHNlKTsKIAl2YWx1ZXNbQW51bV9wZ19pbmRleF9pbmRpc3JlYWR5IC0gMV0gPSBCb29sR2V0 RGF0dW0oaXNyZWFkeSk7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kaXNsaXZlIC0gMV0g PSBCb29sR2V0RGF0dW0odHJ1ZSk7CisJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5kaXN1c2Vy Y2F0YWxvZyAtIDFdID0gQm9vbEdldERhdHVtKGlzX3VzZXJfY2F0YWxvZyk7CiAJdmFsdWVz W0FudW1fcGdfaW5kZXhfaW5kaXNyZXBsaWRlbnQgLSAxXSA9IEJvb2xHZXREYXR1bShmYWxz ZSk7CiAJdmFsdWVzW0FudW1fcGdfaW5kZXhfaW5ka2V5IC0gMV0gPSBQb2ludGVyR2V0RGF0 dW0oaW5ka2V5KTsKIAl2YWx1ZXNbQW51bV9wZ19pbmRleF9pbmRjb2xsYXRpb24gLSAxXSA9 IFBvaW50ZXJHZXREYXR1bShpbmRjb2xsYXRpb24pOwpAQCAtNzM1LDYgKzczOCw3IEBAIGlu ZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJVHJhbnNhY3Rpb25JZCByZWxm cm96ZW54aWQ7CiAJTXVsdGlYYWN0SWQgcmVsbWlubXhpZDsKIAlib29sCQljcmVhdGVfc3Rv cmFnZSA9ICFSZWxGaWxlTnVtYmVySXNWYWxpZChyZWxGaWxlTnVtYmVyKTsKKwlib29sCQlp c3VzZXJjYXRhbG9nID0gZmFsc2U7CiAKIAkvKiBjb25zdHJhaW50IGZsYWdzIGNhbiBvbmx5 IGJlIHNldCB3aGVuIGEgY29uc3RyYWludCBpcyByZXF1ZXN0ZWQgKi8KIAlBc3NlcnQoKGNv bnN0cl9mbGFncyA9PSAwKSB8fApAQCAtMTAxNCwxMyArMTAxOCwxNyBAQCBpbmRleF9jcmVh dGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCSAqCSAgKE9yLCBjb3VsZCBkZWZpbmUgYSBy dWxlIHRvIG1haW50YWluIHRoZSBwcmVkaWNhdGUpIC0tTmVscywgRmViICc5MgogCSAqIC0t LS0tLS0tLS0tLS0tLS0KIAkgKi8KKwlpZiAoaGVhcFJlbGF0aW9uLT5yZF9vcHRpb25zKQor CQlpc3VzZXJjYXRhbG9nID0gKChTdGRSZE9wdGlvbnMgKikgKGhlYXBSZWxhdGlvbiktPnJk X29wdGlvbnMpLT51c2VyX2NhdGFsb2dfdGFibGU7CisKIAlVcGRhdGVJbmRleFJlbGF0aW9u KGluZGV4UmVsYXRpb25JZCwgaGVhcFJlbGF0aW9uSWQsIHBhcmVudEluZGV4UmVsaWQsCiAJ CQkJCQlpbmRleEluZm8sCiAJCQkJCQljb2xsYXRpb25PYmplY3RJZCwgY2xhc3NPYmplY3RJ ZCwgY29sb3B0aW9ucywKIAkJCQkJCWlzcHJpbWFyeSwgaXNfZXhjbHVzaW9uLAogCQkJCQkJ KGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfREVGRVJSQUJMRSkgPT0gMCwK IAkJCQkJCSFjb25jdXJyZW50ICYmICFpbnZhbGlkLAotCQkJCQkJIWNvbmN1cnJlbnQpOwor CQkJCQkJIWNvbmN1cnJlbnQsCisJCQkJCQlpc3VzZXJjYXRhbG9nKTsKIAogCS8qCiAJICog UmVnaXN0ZXIgcmVsY2FjaGUgaW52YWxpZGF0aW9uIG9uIHRoZSBpbmRleGVzJyBoZWFwIHJl bGF0aW9uLCB0bwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCAxMGMxOTU1ODg0 Li5jZWIwZjhmOGE2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTAzLDYg KzEwMyw3IEBACiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy90aW1lc3RhbXAuaCIKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgorI2luY2x1ZGUg InV0aWxzL3JlbC5oIgogCiAvKgogICogT04gQ09NTUlUIGFjdGlvbiBsaXN0CkBAIC0xNDE4 OSw2ICsxNDE5MCwxMCBAQCBBVEV4ZWNTZXRSZWxPcHRpb25zKFJlbGF0aW9uIHJlbCwgTGlz dCAqZGVmTGlzdCwgQWx0ZXJUYWJsZVR5cGUgb3BlcmF0aW9uLAogCURhdHVtCQlyZXBsX3Zh bFtOYXR0c19wZ19jbGFzc107CiAJYm9vbAkJcmVwbF9udWxsW05hdHRzX3BnX2NsYXNzXTsK IAlib29sCQlyZXBsX3JlcGxbTmF0dHNfcGdfY2xhc3NdOworCUxpc3RDZWxsICAgKmNlbGw7 CisJTGlzdAkgICAqcmVsX29wdGlvbnM7CisJYm9vbAkJY2F0YWxvZ190YWJsZV92YWwgPSBI RUFQX0RFRkFVTFRfVVNFUl9DQVRBTE9HX1RBQkxFOworCWJvb2wJCWNhdGFsb2dfdGFibGUg PSBmYWxzZTsKIAlzdGF0aWMgY2hhciAqdmFsaWRuc3BzW10gPSBIRUFQX1JFTE9QVF9OQU1F U1BBQ0VTOwogCiAJaWYgKGRlZkxpc3QgPT0gTklMICYmIG9wZXJhdGlvbiAhPSBBVF9SZXBs YWNlUmVsT3B0aW9ucykKQEAgLTE0MjU1LDcgKzE0MjYwLDYgQEAgQVRFeGVjU2V0UmVsT3B0 aW9ucyhSZWxhdGlvbiByZWwsIExpc3QgKmRlZkxpc3QsIEFsdGVyVGFibGVUeXBlIG9wZXJh dGlvbiwKIAl7CiAJCVF1ZXJ5CSAgICp2aWV3X3F1ZXJ5ID0gZ2V0X3ZpZXdfcXVlcnkocmVs KTsKIAkJTGlzdAkgICAqdmlld19vcHRpb25zID0gdW50cmFuc2Zvcm1SZWxPcHRpb25zKG5l d09wdGlvbnMpOwotCQlMaXN0Q2VsbCAgICpjZWxsOwogCQlib29sCQljaGVja19vcHRpb24g PSBmYWxzZTsKIAogCQlmb3JlYWNoKGNlbGwsIHZpZXdfb3B0aW9ucykKQEAgLTE0MjgzLDYg KzE0Mjg3LDIwIEBAIEFURXhlY1NldFJlbE9wdGlvbnMoUmVsYXRpb24gcmVsLCBMaXN0ICpk ZWZMaXN0LCBBbHRlclRhYmxlVHlwZSBvcGVyYXRpb24sCiAJCX0KIAl9CiAKKwkvKiBJZiB1 c2VyX2NhdGFsb2dfdGFibGUgaXMgcGFydCBvZiB0aGUgbmV3IG9wdGlvbnMsIHJlY29yZCBp dHMgbmV3IHZhbHVlICovCisJcmVsX29wdGlvbnMgPSB1bnRyYW5zZm9ybVJlbE9wdGlvbnMo bmV3T3B0aW9ucyk7CisKKwlmb3JlYWNoKGNlbGwsIHJlbF9vcHRpb25zKQorCXsKKwkJRGVm RWxlbSAgICAqZGVmZWwgPSAoRGVmRWxlbSAqKSBsZmlyc3QoY2VsbCk7CisKKwkJaWYgKHN0 cmNtcChkZWZlbC0+ZGVmbmFtZSwgInVzZXJfY2F0YWxvZ190YWJsZSIpID09IDApCisJCXsK KwkJCWNhdGFsb2dfdGFibGUgPSB0cnVlOworCQkJY2F0YWxvZ190YWJsZV92YWwgPSBkZWZH ZXRCb29sZWFuKGRlZmVsKTsKKwkJfQorCX0KKwogCS8qCiAJICogQWxsIHdlIG5lZWQgZG8g aGVyZSBpcyB1cGRhdGUgdGhlIHBnX2NsYXNzIHJvdzsgdGhlIG5ldyBvcHRpb25zIHdpbGwg YmUKIAkgKiBwcm9wYWdhdGVkIGludG8gcmVsY2FjaGVzIGR1cmluZyBwb3N0LWNvbW1pdCBj YWNoZSBpbnZhbC4KQEAgLTE0MzA5LDYgKzE0MzI3LDQxIEBAIEFURXhlY1NldFJlbE9wdGlv bnMoUmVsYXRpb24gcmVsLCBMaXN0ICpkZWZMaXN0LCBBbHRlclRhYmxlVHlwZSBvcGVyYXRp b24sCiAKIAlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOwogCisJLyogVXBkYXRlIHRoZSBpbmRl eGVzIGlmIHRoZXJlIGlzIGEgbmVlZCB0byAqLworCWlmIChjYXRhbG9nX3RhYmxlIHx8IG9w ZXJhdGlvbiA9PSBBVF9SZXNldFJlbE9wdGlvbnMpCisJeworCQlSZWxhdGlvbglwZ19pbmRl eDsKKwkJSGVhcFR1cGxlCXBnX2luZGV4X3R1cGxlOworCQlGb3JtX3BnX2luZGV4IHBnX2lu ZGV4X2Zvcm07CisJCUxpc3RDZWxsICAgKmluZGV4OworCisJCXBnX2luZGV4ID0gdGFibGVf b3BlbihJbmRleFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJCWZvcmVhY2go aW5kZXgsIFJlbGF0aW9uR2V0SW5kZXhMaXN0KHJlbCkpCisJCXsKKwkJCU9pZAkJCXRoaXNJ bmRleE9pZCA9IGxmaXJzdF9vaWQoaW5kZXgpOworCisJCQlwZ19pbmRleF90dXBsZSA9IFNl YXJjaFN5c0NhY2hlQ29weTEoSU5ERVhSRUxJRCwKKwkJCQkJCQkJCQkJCSBPYmplY3RJZEdl dERhdHVtKHRoaXNJbmRleE9pZCkpOworCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHBnX2lu ZGV4X3R1cGxlKSkKKwkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Ig aW5kZXggJXUiLCB0aGlzSW5kZXhPaWQpOworCQkJcGdfaW5kZXhfZm9ybSA9IChGb3JtX3Bn X2luZGV4KSBHRVRTVFJVQ1QocGdfaW5kZXhfdHVwbGUpOworCisJCQkvKiBNb2RpZnkgdGhl IGluZGV4IG9ubHkgaWYgdXNlcl9jYXRhbG9nX3RhYmxlIGRpZmZlciAqLworCQkJaWYgKGNh dGFsb2dfdGFibGVfdmFsICE9IHBnX2luZGV4X2Zvcm0tPmluZGlzdXNlcmNhdGFsb2cpCisJ CQl7CisJCQkJcGdfaW5kZXhfZm9ybS0+aW5kaXN1c2VyY2F0YWxvZyA9IGNhdGFsb2dfdGFi bGVfdmFsOworCQkJCUNhdGFsb2dUdXBsZVVwZGF0ZShwZ19pbmRleCwgJnBnX2luZGV4X3R1 cGxlLT50X3NlbGYsIHBnX2luZGV4X3R1cGxlKTsKKwkJCQlJbnZva2VPYmplY3RQb3N0QWx0 ZXJIb29rQXJnKEluZGV4UmVsYXRpb25JZCwgdGhpc0luZGV4T2lkLCAwLAorCQkJCQkJCQkJ CQkgSW52YWxpZE9pZCwgdHJ1ZSk7CisJCQl9CisKKwkJCWhlYXBfZnJlZXR1cGxlKHBnX2lu ZGV4X3R1cGxlKTsKKwkJfQorCisJCXRhYmxlX2Nsb3NlKHBnX2luZGV4LCBSb3dFeGNsdXNp dmVMb2NrKTsKKwl9CisKIAkvKiByZXBlYXQgdGhlIHdob2xlIGV4ZXJjaXNlIGZvciB0aGUg dG9hc3QgdGFibGUsIGlmIHRoZXJlJ3Mgb25lICovCiAJaWYgKE9pZElzVmFsaWQocmVsLT5y ZF9yZWwtPnJlbHRvYXN0cmVsaWQpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9naXN0eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgKaW5kZXgg MzNmMWM3ZTMxYi4uNDBjM2VhOGY3MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L2dpc3R4bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3R4bG9nLmgKQEAgLTQ5 LDYgKzQ5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2lzdHhsb2dQYWdlVXBkYXRlCiAgKi8KIHR5 cGVkZWYgc3RydWN0IGdpc3R4bG9nRGVsZXRlCiB7CisJYm9vbCAgICAgICAgb25DYXRhbG9n QWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nOwogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RD b25mbGljdEhvcml6b247CiAJdWludDE2CQludG9kZWxldGU7CQkvKiBudW1iZXIgb2YgZGVs ZXRlZCBvZmZzZXRzICovCiAKQEAgLTk3LDYgKzk4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2lz dHhsb2dQYWdlRGVsZXRlCiAgKi8KIHR5cGVkZWYgc3RydWN0IGdpc3R4bG9nUGFnZVJldXNl CiB7CisJYm9vbCAgICAgICAgb25DYXRhbG9nQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5n OwogCVJlbEZpbGVMb2NhdG9yIGxvY2F0b3I7CiAJQmxvY2tOdW1iZXIgYmxvY2s7CiAJRnVs bFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b247CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvaGFzaF94bG9nLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGFz aF94bG9nLmgKaW5kZXggNmRhZmI0YTU5OC4uMmVhZTY0NGU4OSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL2hhc2hfeGxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9o YXNoX3hsb2cuaApAQCAtMjUwLDYgKzI1MCw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hhc2hf aW5pdF9iaXRtYXBfcGFnZQogICovCiB0eXBlZGVmIHN0cnVjdCB4bF9oYXNoX3ZhY3V1bV9v bmVfcGFnZQogeworCWJvb2wgICAgICAgIG9uQ2F0YWxvZ0FjY2Vzc2libGVJbkxvZ2ljYWxE ZWNvZGluZzsKIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCWlu dAkJCW50dXBsZXM7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1f eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggNWM3NzI5 MGVlYy4uM2Q4MTRhNWFlMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBh bV94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTI0 Miw2ICsyNDIsNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3VwZGF0ZQogICovCiB0eXBl ZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiB7CisJYm9vbCAgICAgICAgb25DYXRhbG9nQWNj ZXNzaWJsZUluTG9naWNhbERlY29kaW5nOwogCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25m bGljdEhvcml6b247CiAJdWludDE2CQlucmVkaXJlY3RlZDsKIAl1aW50MTYJCW5kZWFkOwpA QCAtMzQyLDYgKzM0Myw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfZnJlZXplX3BsYW4K ICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVfcGFnZQogeworCWJvb2wgICAg ICAgIG9uQ2F0YWxvZ0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZzsKIAlUcmFuc2FjdGlv bklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwogCXVpbnQxNgkJbnBsYW5zOwogCkBAIC0z NTksNiArMzYxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9mcmVlemVfcGFnZQogICov CiB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3Zpc2libGUKIHsKKwlib29sICAgICAgICBvbkNh dGFsb2dBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rpbmc7CiAJVHJhbnNhY3Rpb25JZCBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50OAkJZmxhZ3M7CiB9IHhsX2hlYXBfdmlzaWJs ZTsKQEAgLTQwOCw3ICs0MTEsNyBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZXNjKFN0cmluZ0lu Zm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gY29uc3QgY2hhciAq aGVhcDJfaWRlbnRpZnkodWludDggaW5mbyk7CiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfbG9n aWNhbF9yZXdyaXRlKFhMb2dSZWFkZXJTdGF0ZSAqcik7CiAKLWV4dGVybiBYTG9nUmVjUHRy IGxvZ19oZWFwX3Zpc2libGUoUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3IsIEJ1ZmZlciBoZWFw X2J1ZmZlciwKK2V4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCiAJCQkJCQkJCSAgIEJ1ZmZlciB2bV9idWZmZXIs CiAJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAJ CQkJCQkJCSAgIHVpbnQ4IHZtZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL25idHhsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9uYnR4bG9nLmgKaW5kZXggM2Iy ZDk1OWM2OS4uMTkzMWYyYmJiYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL25i dHhsb2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0eGxvZy5oCkBAIC0xODUsNiAr MTg1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeGxfYnRyZWVfZGVkdXAKICAqLwogdHlwZWRlZiBz dHJ1Y3QgeGxfYnRyZWVfcmV1c2VfcGFnZQogeworCWJvb2wgICAgICAgIG9uQ2F0YWxvZ0Fj Y2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZzsKIAlSZWxGaWxlTG9jYXRvciBsb2NhdG9yOwog CUJsb2NrTnVtYmVyIGJsb2NrOwogCUZ1bGxUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uOwpAQCAtMjMyLDYgKzIzMyw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2J0cmVl X3ZhY3V1bQogCiB0eXBlZGVmIHN0cnVjdCB4bF9idHJlZV9kZWxldGUKIHsKKwlib29sICAg ICAgICBvbkNhdGFsb2dBY2Nlc3NpYmxlSW5Mb2dpY2FsRGVjb2Rpbmc7CiAJVHJhbnNhY3Rp b25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjsKIAl1aW50MTYJCW5kZWxldGVkOwogCXVp bnQxNgkJbnVwZGF0ZWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxv Zy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NwZ3hsb2cuaAppbmRleCA4MjMzMmNiNjk0Li4w NGZlNGE0YTUyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3BneGxvZy5oCisr KyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zcGd4bG9nLmgKQEAgLTIzNyw2ICsyMzcsNyBAQCB0 eXBlZGVmIHN0cnVjdCBzcGd4bG9nVmFjdXVtUm9vdAogCiB0eXBlZGVmIHN0cnVjdCBzcGd4 bG9nVmFjdXVtUmVkaXJlY3QKIHsKKwlib29sICAgICAgICBvbkNhdGFsb2dBY2Nlc3NpYmxl SW5Mb2dpY2FsRGVjb2Rpbmc7CiAJdWludDE2CQluVG9QbGFjZWhvbGRlcjsgLyogbnVtYmVy IG9mIHJlZGlyZWN0cyB0byBtYWtlIHBsYWNlaG9sZGVycyAqLwogCU9mZnNldE51bWJlciBm aXJzdFBsYWNlaG9sZGVyOwkvKiBmaXJzdCBwbGFjZWhvbGRlciB0dXBsZSB0byByZW1vdmUg Ki8KIAlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwkvKiBuZXdlc3Qg WElEIG9mIHJlbW92ZWQgcmVkaXJlY3RzICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmgKaW5k ZXggZjg1Mzg0NmVlMS4uZGQxNjQzMTM3OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaApA QCAtNDMsNiArNDMsOCBAQCBDQVRBTE9HKHBnX2luZGV4LDI2MTAsSW5kZXhSZWxhdGlvbklk KSBCS0lfU0NIRU1BX01BQ1JPCiAJYm9vbAkJaW5kY2hlY2t4bWluOwkvKiBtdXN0IHdlIHdh aXQgZm9yIHhtaW4gdG8gYmUgb2xkPyAqLwogCWJvb2wJCWluZGlzcmVhZHk7CQkvKiBpcyB0 aGlzIGluZGV4IHJlYWR5IGZvciBpbnNlcnRzPyAqLwogCWJvb2wJCWluZGlzbGl2ZTsJCS8q IGlzIHRoaXMgaW5kZXggYWxpdmUgYXQgYWxsPyAqLworCWJvb2wJCWluZGlzdXNlcmNhdGFs b2c7CS8qIGlzIHRoaXMgaW5kZXggbGlua2VkIHRvIGEgdXNlciBjYXRhbG9nCisJCQkJCQkJ CQkgKiByZWxhdGlvbj8gKi8KIAlib29sCQlpbmRpc3JlcGxpZGVudDsgLyogaXMgdGhpcyBp bmRleCB0aGUgaWRlbnRpdHkgZm9yIHJlcGxpY2F0aW9uPyAqLwogCiAJLyogdmFyaWFibGUt bGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlLCBidXQgd2UgYWxsb3cgZGlyZWN0IGFjY2VzcyB0 byBpbmRrZXkgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3Jj L2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXggZjM4M2EyZmNhOS4uOWI3N2UyM2MyOSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvcmVsLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIK ICNpbmNsdWRlICJ1dGlscy9yZWxjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbHRyaWdn ZXIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKIAogCiAvKgpAQCAtMzQzLDYg KzM0NCw3IEBAIHR5cGVkZWYgc3RydWN0IFN0ZFJkT3B0aW9ucwogCiAjZGVmaW5lIEhFQVBf TUlOX0ZJTExGQUNUT1IJCQkxMAogI2RlZmluZSBIRUFQX0RFRkFVTFRfRklMTEZBQ1RPUgkJ MTAwCisjZGVmaW5lIEhFQVBfREVGQVVMVF9VU0VSX0NBVEFMT0dfVEFCTEUJCWZhbHNlCiAK IC8qCiAgKiBSZWxhdGlvbkdldFRvYXN0VHVwbGVUYXJnZXQKQEAgLTM3OCw2ICszODAsOSBA QCB0eXBlZGVmIHN0cnVjdCBTdGRSZE9wdGlvbnMKICAqIFJlbGF0aW9uSXNVc2VkQXNDYXRh bG9nVGFibGUKICAqCQlSZXR1cm5zIHdoZXRoZXIgdGhlIHJlbGF0aW9uIHNob3VsZCBiZSB0 cmVhdGVkIGFzIGEgY2F0YWxvZyB0YWJsZQogICoJCWZyb20gdGhlIHBvdiBvZiBsb2dpY2Fs IGRlY29kaW5nLiAgTm90ZSBtdWx0aXBsZSBldmFsIG9mIGFyZ3VtZW50IQorICoJCVRoaXMg ZGVmaW5pdGlvbiBzaG91bGQgbm90IGludm9rZSBhbnl0aGluZyB0aGF0IHBlcmZvcm1zIGNh dGFsb2cKKyAqCQlhY2Nlc3M7IG90aGVyd2lzZSBpdCBtYXkgY2F1c2UgaW5maW5pdGUgcmVj dXJzaW9uLiBDaGVjayB0aGUgY29tbWVudHMKKyAqCQlpbiBSZWxhdGlvbklzQWNjZXNzaWJs ZUluTG9naWNhbERlY29kaW5nKCkgZm9yIGRldGFpbHMuCiAgKi8KICNkZWZpbmUgUmVsYXRp b25Jc1VzZWRBc0NhdGFsb2dUYWJsZShyZWxhdGlvbikJXAogCSgocmVsYXRpb24pLT5yZF9v cHRpb25zICYmIFwKQEAgLTY3OCwxMiArNjgzLDQxIEBAIFJlbGF0aW9uQ2xvc2VTbWdyKFJl bGF0aW9uIHJlbGF0aW9uKQogICogUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZwogICoJCVRydWUgaWYgd2UgbmVlZCB0byBsb2cgZW5vdWdoIGluZm9ybWF0aW9uIHRv IGhhdmUgYWNjZXNzIHZpYQogICoJCWRlY29kaW5nIHNuYXBzaG90LgorICoJCVRoaXMgZGVm aW5pdGlvbiBzaG91bGQgbm90IGludm9rZSBhbnl0aGluZyB0aGF0IHBlcmZvcm1zIGNhdGFs b2cKKyAqCQlhY2Nlc3MuIE90aGVyd2lzZSwgZS5nLiBsb2dnaW5nIGEgV0FMIGVudHJ5IGZv ciBjYXRhbG9nIHJlbGF0aW9uIG1heQorICoJCWludm9rZSB0aGlzIGZ1bmN0aW9uLCB3aGlj aCB3aWxsIGluIHR1cm4gZG8gY2F0YWxvZyBhY2Nlc3MsIHdoaWNoIG1heQorICoJCWluIHR1 cm4gY2F1c2UgYW5vdGhlciBzaW1pbGFyIFdBTCBlbnRyeSB0byBiZSBsb2dnZWQsIGxlYWRp bmcgdG8KKyAqCQlpbmZpbml0ZSByZWN1cnNpb24uCiAgKi8KICNkZWZpbmUgUmVsYXRpb25J c0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNvZGluZyhyZWxhdGlvbikgXAogCShYTG9nTG9naWNh bEluZm9BY3RpdmUoKSAmJiBcCiAJIFJlbGF0aW9uTmVlZHNXQUwocmVsYXRpb24pICYmIFwK IAkgKElzQ2F0YWxvZ1JlbGF0aW9uKHJlbGF0aW9uKSB8fCBSZWxhdGlvbklzVXNlZEFzQ2F0 YWxvZ1RhYmxlKHJlbGF0aW9uKSkpCiAKKy8qCisgKiBJbmRleElzVXNlckNhdGFsb2cKKyAq CQlUcnVlIGlmIGluZGV4IGlzIGxpbmtlZCB0byBhIHVzZXIgY2F0YWxvZyByZWxhdGlvbi4K KyAqLworI2RlZmluZSBJbmRleElzVXNlckNhdGFsb2cocmVsYXRpb24pCQkJCQkJCQkJCQlc CisJKEFzc2VydE1hY3JvKHJlbGF0aW9uLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9J TkRFWCksCQkJCVwKKwkgKHJlbGF0aW9uKS0+cmRfaW5kZXgtPmluZGlzdXNlcmNhdGFsb2cp CisKKy8qCisgKiBJbmRleElzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nCisgKgkJVHJ1 ZSBpZiB3ZSBuZWVkIHRvIGxvZyBlbm91Z2ggaW5mb3JtYXRpb24gdG8gaGF2ZSBhY2Nlc3Mg dmlhCisgKgkJZGVjb2Rpbmcgc25hcHNob3QuCisgKgkJVGhpcyBkZWZpbml0aW9uIHNob3Vs ZCBub3QgaW52b2tlIGFueXRoaW5nIHRoYXQgcGVyZm9ybXMgY2F0YWxvZworICoJCWFjY2Vz cy4gT3RoZXJ3aXNlLCBlLmcuIGxvZ2dpbmcgYSBXQUwgZW50cnkgZm9yIGNhdGFsb2cgcmVs YXRpb24gbWF5CisgKgkJaW52b2tlIHRoaXMgZnVuY3Rpb24sIHdoaWNoIHdpbGwgaW4gdHVy biBkbyBjYXRhbG9nIGFjY2Vzcywgd2hpY2ggbWF5CisgKgkJaW4gdHVybiBjYXVzZSBhbm90 aGVyIHNpbWlsYXIgV0FMIGVudHJ5IHRvIGJlIGxvZ2dlZCwgbGVhZGluZyB0bworICoJCWlu ZmluaXRlIHJlY3Vyc2lvbi4KKyAqLworI2RlZmluZSBJbmRleElzQWNjZXNzaWJsZUluTG9n aWNhbERlY29kaW5nKHJlbGF0aW9uKSBcCisJKEFzc2VydE1hY3JvKHJlbGF0aW9uLT5yZF9y ZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9JTkRFWCksIFwKKwkgWExvZ0xvZ2ljYWxJbmZvQWN0 aXZlKCkgJiYgXAorCSBSZWxhdGlvbk5lZWRzV0FMKHJlbGF0aW9uKSAmJiBcCisJIChJc0Nh dGFsb2dSZWxhdGlvbihyZWxhdGlvbikgfHwgSW5kZXhJc1VzZXJDYXRhbG9nKHJlbGF0aW9u KSkpCisKIC8qCiAgKiBSZWxhdGlvbklzTG9naWNhbGx5TG9nZ2VkCiAgKgkJVHJ1ZSBpZiB3 ZSBuZWVkIHRvIGxvZyBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZXh0cmFjdCB0aGUgZGF0YSBm cm9tIHRoZQotLSAKMi4zNC4xCgo= --------------68IV02WKbO30CE6z3vbE95XU--