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 1mC4Y3-0002Lm-Gt for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Aug 2021 18:26:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mC4Y1-0007mZ-Rn for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Aug 2021 18:26:21 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mC4Y1-0007ly-E4 for pgsql-hackers@lists.postgresql.org; Fri, 06 Aug 2021 18:26:21 +0000 Received: from smtp-fw-6001.amazon.com ([52.95.48.154]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mC4Xy-0005VR-Eg for pgsql-hackers@postgresql.org; Fri, 06 Aug 2021 18:26:20 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1628274379; x=1659810379; h=from:to:cc:date:message-id:references:in-reply-to: mime-version:subject; bh=tmYxJRlFaiPXrOfLY8MrwDaYIUtPlOI39NX6g4s4lYQ=; b=mFx5KtPr6EYl0VTSmSfQQZGqtaKckqzUh7t7Khvg0oqIHMG+6XIlITVE PM+sK6a8/FJl7OnyE4WEGkEVi6MSsqwILmmb9D3lv9N1dGqScGfFMWk2n cJA4AMTMKyhbxeynV5GBiUM/ZE5P/fBVQeZ8QtVelg13zCVdoR+q7ohW5 o=; X-Amazon-filename: v6-0001-Avoid-creating-archive-status-.ready-files-too-ea.patch X-IronPort-AV: E=Sophos;i="5.84,301,1620691200"; d="scan'208,223";a="132209998" Subject: Re: archive status ".ready" files may be created too early Thread-Topic: archive status ".ready" files may be created too early Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-2c-397e131e.us-west-2.amazon.com) ([10.43.8.6]) by smtp-border-fw-6001.iad6.amazon.com with ESMTP; 06 Aug 2021 18:26:15 +0000 Received: from EX13MTAUWB001.ant.amazon.com (pdx1-ws-svc-p6-lb9-vlan3.pdx.amazon.com [10.236.137.198]) by email-inbound-relay-2c-397e131e.us-west-2.amazon.com (Postfix) with ESMTPS id 190DFA0631; Fri, 6 Aug 2021 18:26:14 +0000 (UTC) Received: from EX13D03UWC004.ant.amazon.com (10.43.162.49) by EX13MTAUWB001.ant.amazon.com (10.43.161.207) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Fri, 6 Aug 2021 18:26:13 +0000 Received: from EX13D03UWC004.ant.amazon.com (10.43.162.49) by EX13D03UWC004.ant.amazon.com (10.43.162.49) with Microsoft SMTP Server (TLS) id 15.0.1497.23; Fri, 6 Aug 2021 18:26:13 +0000 Received: from EX13D03UWC004.ant.amazon.com ([10.43.162.49]) by EX13D03UWC004.ant.amazon.com ([10.43.162.49]) with mapi id 15.00.1497.023; Fri, 6 Aug 2021 18:26:13 +0000 From: "Bossart, Nathan" To: Kyotaro Horiguchi CC: "alvherre@alvh.no-ip.org" , "x4mmm@yandex-team.ru" , "a.lubennikova@postgrespro.ru" , "hlinnaka@iki.fi" , "matsumura.ryo@fujitsu.com" , "masao.fujii@gmail.com" , "pgsql-hackers@postgresql.org" Thread-Index: AQHXBlOcCCTzqq5m7Uma04zSuWx/6atYjIMA//+aBICABK+JgP//qfYAgACvAID//9F4gAAoArgA//+nPACAA9nigP//qHQAgACqMwCAAMe5AIACUeaAgAAjTwD//55qgIAAm8IAgACkkoCAAPBOAIAAPr4A Date: Fri, 6 Aug 2021 18:26:12 +0000 Message-ID: <867B852E-E892-4DD7-8E29-CE74FDBBA234@amazon.com> References: <20210805.163232.980813829599921437.horikyota.ntt@gmail.com> <839F3FB0-CAFB-455D-9010-F894A6978FAC@amazon.com> <20210806.164138.1233981515805339727.horikyota.ntt@gmail.com> In-Reply-To: <20210806.164138.1233981515805339727.horikyota.ntt@gmail.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.43.161.153] Content-Type: multipart/mixed; boundary="_002_867B852EE8924DD78E29CE74FDBBA234amazoncom_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_867B852EE8924DD78E29CE74FDBBA234amazoncom_ Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 T24gOC82LzIxLCAxMjo0MiBBTSwgIkt5b3Rhcm8gSG9yaWd1Y2hpIiA8aG9yaWt5b3RhLm50dEBn bWFpbC5jb20+IHdyb3RlOg0KPiBJbiB2NSwgTm90aWZ5U2VnbWVudHNSZWFkeUZvckFyY2hpdmUo KSBzdGlsbCBob2xkcyBBcmNoTm90aWZ5TG9jaw0KPiBpbmNsdWRpbmcgLnJlYWR5IGZpbGUgY3Jl YXRpb25zLiBTaW5jZSB0aGUgbm90aWZpY2F0aW9uIGxvb3AgZG9lc24ndA0KPiBuZWVkIHRoZSBo YXNoIGl0c2VsZiwgdGhlIGxvb3AgY2FuIGJlIHRvb2sgb3V0IG9mIHRoZSBsb2NrIHNlY3Rpb24/ DQoNCkkgdGhpbmsgdGhhdCB3b3Jrcy4gIFRoaXMgY3JlYXRlcyBhbm90aGVyIG9wcG9ydHVuaXR5 IGZvciBhcmNoaXZlDQpzdGF0dXMgZmlsZXMgdG8gYmUgY3JlYXRlZCBvdXQgb2Ygb3JkZXIsIGJ1 dCBhcyBkaXNjdXNzZWQgZWxzZXdoZXJlLCBJDQp0aGluayB3ZSBoYXZlIHRvIGJlIHByZXBhcmVk IGZvciB0aGF0IHJlZ2FyZGxlc3MuICBJIG1vdmVkIHRoZQ0Kbm90aWZpY2F0aW9uIGxvb3Agb3V0 IG9mIHRoZSBsb2NrIHNlY3Rpb24gaW4gdjYuDQoNCk5hdGhhbg0KDQo= --_002_867B852EE8924DD78E29CE74FDBBA234amazoncom_ Content-Type: application/octet-stream; name="v6-0001-Avoid-creating-archive-status-.ready-files-too-ea.patch" Content-Description: v6-0001-Avoid-creating-archive-status-.ready-files-too-ea.patch Content-Disposition: attachment; filename="v6-0001-Avoid-creating-archive-status-.ready-files-too-ea.patch"; size=19358; creation-date="Fri, 06 Aug 2021 18:26:12 GMT"; modification-date="Fri, 06 Aug 2021 18:26:12 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSA4MWIwNTEyZThlZGEwMzE4ZmI3ZTFhZWU3ZWMwY2ZlOGY5ODA5ZGM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gQm9zc2FydCA8Ym9zc2FydG5AYW1hem9uLmNvbT4K RGF0ZTogRnJpLCA2IEF1ZyAyMDIxIDE4OjE2OjM5ICswMDAwClN1YmplY3Q6IFtQQVRDSCB2NiAx LzFdIEF2b2lkIGNyZWF0aW5nIGFyY2hpdmUgc3RhdHVzICIucmVhZHkiIGZpbGVzIHRvbwogZWFy bHkuCgpXQUwgcmVjb3JkcyBtYXkgc3BhbiBtdWx0aXBsZSBzZWdtZW50cywgYnV0IFhMb2dXcml0 ZSgpIGRvZXMgbm90CndhaXQgZm9yIHRoZSBlbnRpcmUgcmVjb3JkIHRvIGJlIHdyaXR0ZW4gb3V0 IHRvIGRpc2sgYmVmb3JlCmNyZWF0aW5nIGFyY2hpdmUgc3RhdHVzIGZpbGVzLiAgSW5zdGVhZCwg YXMgc29vbiBhcyB0aGUgbGFzdCBXQUwKcGFnZSBvZiB0aGUgc2VnbWVudCBpcyB3cml0dGVuLCB0 aGUgYXJjaGl2ZSBzdGF0dXMgZmlsZSB3aWxsIGJlCmNyZWF0ZWQuICBJZiBQb3N0Z3JlU1FMIGNy YXNoZXMgYmVmb3JlIGl0IGlzIGFibGUgdG8gd3JpdGUgdGhlIHJlc3QKb2YgdGhlIHJlY29yZCwg aXQgd2lsbCBlbmQgdXAgcmV1c2luZyBzZWdtZW50cyB0aGF0IGhhdmUgYWxyZWFkeQpiZWVuIG1h cmtlZCBhcyByZWFkeS1mb3ItYXJjaGl2YWwuICBIb3dldmVyLCB0aGUgYXJjaGl2ZXIgcHJvY2Vz cwptYXkgaGF2ZSBhbHJlYWR5IHByb2Nlc3NlZCB0aGUgb2xkIHZlcnNpb24gb2YgdGhlIHNlZ21l bnQsIHNvIHRoZQp3cm9uZyB2ZXJzaW9uIG9mIHRoZSBzZWdtZW50IG1heSBiZSBiYWNrZWQtdXAu ICBUaGlzIGJhY2tlZC11cApzZWdtZW50IHdpbGwgY2F1c2Ugb3BlcmF0aW9ucyBzdWNoIGFzIHBv aW50LWluLXRpbWUgcmVzdG9yZXMgdG8KZmFpbC4KClRvIGZpeCB0aGlzLCB3ZSBrZWVwIHRyYWNr IG9mIHJlY29yZHMgdGhhdCBzcGFuIGFjcm9zcyBzZWdtZW50cyBhbmQKZW5zdXJlIHRoYXQgc2Vn bWVudHMgYXJlIG9ubHkgbWFya2VkIHJlYWR5LWZvci1hcmNoaXZhbCBvbmNlIHN1Y2gKcmVjb3Jk cyBoYXZlIGJlZW4gY29tcGxldGVseSB3cml0dGVuIHRvIGRpc2suCi0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vdGltZWxpbmUuYyAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jICAgICAgICB8IDMwNyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KystCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nYXJjaGl2ZS5jIHwgIDE0ICstCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jICAgIHwgICA2ICstCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrbmFtZXMudHh0IHwgICAxICsKIHNyYy9pbmNsdWRlL2Fj Y2Vzcy94bG9nYXJjaGl2ZS5oICAgICAgICAgfCAgIDQgKy0KIDYgZmlsZXMgY2hhbmdlZCwgMzEy IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3RpbWVsaW5lLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90 aW1lbGluZS5jCmluZGV4IDhkMDkwM2MxNzUuLmFjZDVjMjQzMWQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3RpbWVsaW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0vdGltZWxpbmUuYwpAQCAtNDUyLDcgKzQ1Miw3IEBAIHdyaXRlVGltZUxpbmVIaXN0 b3J5KFRpbWVMaW5lSUQgbmV3VExJLCBUaW1lTGluZUlEIHBhcmVudFRMSSwKIAlpZiAoWExvZ0Fy Y2hpdmluZ0FjdGl2ZSgpKQogCXsKIAkJVExIaXN0b3J5RmlsZU5hbWUoaGlzdGZuYW1lLCBuZXdU TEkpOwotCQlYTG9nQXJjaGl2ZU5vdGlmeShoaXN0Zm5hbWUpOworCQlYTG9nQXJjaGl2ZU5vdGlm eShoaXN0Zm5hbWUsIHRydWUpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmlu ZGV4IGQwZWM2YTgzNGIuLjQ1NmFmNDgyNWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMK QEAgLTUxMiw2ICs1MTIsMTMgQEAgdHlwZWRlZiBlbnVtIEV4Y2x1c2l2ZUJhY2t1cFN0YXRlCiAg Ki8KIHN0YXRpYyBTZXNzaW9uQmFja3VwU3RhdGUgc2Vzc2lvbkJhY2t1cFN0YXRlID0gU0VTU0lP Tl9CQUNLVVBfTk9ORTsKIAorLyogZW50cmllcyBmb3IgUmVjb3JkQm91bmRhcnlNYXAsIHVzZWQg dG8gbWFyayBzZWdtZW50cyByZWFkeSBmb3IgYXJjaGl2YWwgKi8KK3R5cGVkZWYgc3RydWN0IFJl Y29yZEJvdW5kYXJ5RW50cnkKK3sKKwlYTG9nU2VnTm8gc2VnOwkvKiBtdXN0IGJlIGZpcnN0ICov CisJWExvZ1JlY1B0ciBwb3M7Cit9IFJlY29yZEJvdW5kYXJ5RW50cnk7CisKIC8qCiAgKiBTaGFy ZWQgc3RhdGUgZGF0YSBmb3IgV0FMIGluc2VydGlvbi4KICAqLwpAQCAtNzIzLDYgKzczMCwxMiBA QCB0eXBlZGVmIHN0cnVjdCBYTG9nQ3RsRGF0YQogCSAqLwogCVhMb2dSZWNQdHIJbGFzdEZwd0Rp c2FibGVSZWNQdHI7CiAKKwkvKgorCSAqIFRoZSBsYXN0IHNlZ21lbnQgd2UndmUgbWFya2VkIHJl YWR5IGZvciBhcmNoaXZhbC4gIFByb3RlY3RlZCBieQorCSAqIGluZm9fbGNrLgorCSAqLworCVhM b2dTZWdObyBsYXN0Tm90aWZpZWRTZWc7CisKIAlzbG9ja190CQlpbmZvX2xjazsJCS8qIGxvY2tz IHNoYXJlZCB2YXJpYWJsZXMgc2hvd24gYWJvdmUgKi8KIH0gWExvZ0N0bERhdGE7CiAKQEAgLTcz Niw2ICs3NDksMTIgQEAgc3RhdGljIFdBTEluc2VydExvY2tQYWRkZWQgKldBTEluc2VydExvY2tz ID0gTlVMTDsKICAqLwogc3RhdGljIENvbnRyb2xGaWxlRGF0YSAqQ29udHJvbEZpbGUgPSBOVUxM OwogCisvKgorICogUmVjb3JkIGJvdW5kYXJ5IG1hcCwgdXNlZCBmb3IgbWFya2luZyBzZWdtZW50 cyBhcyByZWFkeSBmb3IgYXJjaGl2YWwuCisgKiBQcm90ZWN0ZWQgYnkgQXJjaE5vdGlmeUxvY2su CisgKi8KK3N0YXRpYyBIVEFCICpSZWNvcmRCb3VuZGFyeU1hcCA9IE5VTEw7CisKIC8qCiAgKiBD YWxjdWxhdGUgdGhlIGFtb3VudCBvZiBzcGFjZSBsZWZ0IG9uIHRoZSBwYWdlIGFmdGVyICdlbmRw dHInLiBCZXdhcmUKICAqIG11bHRpcGxlIGV2YWx1YXRpb24hCkBAIC05NjIsNiArOTgxLDEzIEBA IHN0YXRpYyBYTG9nUmVjUHRyIFhMb2dCeXRlUG9zVG9SZWNQdHIodWludDY0IGJ5dGVwb3MpOwog c3RhdGljIFhMb2dSZWNQdHIgWExvZ0J5dGVQb3NUb0VuZFJlY1B0cih1aW50NjQgYnl0ZXBvcyk7 CiBzdGF0aWMgdWludDY0IFhMb2dSZWNQdHJUb0J5dGVQb3MoWExvZ1JlY1B0ciBwdHIpOwogc3Rh dGljIHZvaWQgY2hlY2tYTG9nQ29uc2lzdGVuY3koWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwor c3RhdGljIHZvaWQgUmVnaXN0ZXJSZWNvcmRCb3VuZGFyeUVudHJ5KFhMb2dTZWdObyBzZWcsIFhM b2dSZWNQdHIgcG9zKTsKK3N0YXRpYyB2b2lkIE5vdGlmeVNlZ21lbnRzUmVhZHlGb3JBcmNoaXZl KFhMb2dSZWNQdHIgZmx1c2hSZWNQdHIpOworc3RhdGljIFhMb2dTZWdObyBHZXRMYXN0Tm90aWZp ZWRTZWdtZW50KHZvaWQpOworc3RhdGljIHZvaWQgU2V0TGFzdE5vdGlmaWVkU2VnbWVudChYTG9n U2VnTm8gc2VnKTsKK3N0YXRpYyBYTG9nU2VnTm8gR2V0TGF0ZXN0UmVjb3JkQm91bmRhcnlTZWdt ZW50KFhMb2dTZWdObyBsYXN0X25vdGlmaWVkLAorCQkJCQkJCQkJCQkJWExvZ1JlY1B0ciBmbHVz aGVkLCBib29sICpmb3VuZCk7CitzdGF0aWMgdm9pZCBSZW1vdmVSZWNvcmRCb3VuZGFyaWVzVXBU byhYTG9nU2VnTm8gc2VnKTsKIAogc3RhdGljIHZvaWQgV0FMSW5zZXJ0TG9ja0FjcXVpcmUodm9p ZCk7CiBzdGF0aWMgdm9pZCBXQUxJbnNlcnRMb2NrQWNxdWlyZUV4Y2x1c2l2ZSh2b2lkKTsKQEAg LTExNTgsNiArMTE4NCw5IEBAIFhMb2dJbnNlcnRSZWNvcmQoWExvZ1JlY0RhdGEgKnJkYXRhLAog CSAqLwogCWlmIChTdGFydFBvcyAvIFhMT0dfQkxDS1NaICE9IEVuZFBvcyAvIFhMT0dfQkxDS1Na KQogCXsKKwkJWExvZ1NlZ05vIFN0YXJ0U2VnOworCQlYTG9nU2VnTm8gRW5kU2VnOworCiAJCVNw aW5Mb2NrQWNxdWlyZSgmWExvZ0N0bC0+aW5mb19sY2spOwogCQkvKiBhZHZhbmNlIGdsb2JhbCBy ZXF1ZXN0IHRvIGluY2x1ZGUgbmV3IGJsb2NrKHMpICovCiAJCWlmIChYTG9nQ3RsLT5Mb2d3cnRS cXN0LldyaXRlIDwgRW5kUG9zKQpAQCAtMTE2NSwxMiArMTE5NCwzNiBAQCBYTG9nSW5zZXJ0UmVj b3JkKFhMb2dSZWNEYXRhICpyZGF0YSwKIAkJLyogdXBkYXRlIGxvY2FsIHJlc3VsdCBjb3B5IHdo aWxlIEkgaGF2ZSB0aGUgY2hhbmNlICovCiAJCUxvZ3dydFJlc3VsdCA9IFhMb2dDdGwtPkxvZ3dy dFJlc3VsdDsKIAkJU3BpbkxvY2tSZWxlYXNlKCZYTG9nQ3RsLT5pbmZvX2xjayk7CisKKwkJLyoK KwkJICogUmVjb3JkIHRoZSByZWNvcmQgYm91bmRhcnkgaWYgd2UgY3Jvc3NlZCB0aGUgc2VnbWVu dCBib3VuZGFyeS4gIFRoaXMKKwkJICogaXMgdXNlZCB0byBlbnN1cmUgdGhhdCBzZWdtZW50cyBh cmUgbm90IG1hcmtlZCByZWFkeSBmb3IgYXJjaGl2YWwKKwkJICogYmVmb3JlIHRoZSBlbnRpcmUg cmVjb3JkIGhhcyBiZWVuIGZsdXNoZWQgdG8gZGlzay4KKwkJICoKKwkJICogTm90ZSB0aGF0IHdl IGRvIG5vdCB1c2UgWExCeXRlVG9QcmV2U2VnKCkgZm9yIGRldGVybWluaW5nIHRoZSBlbmRpbmcK KwkJICogc2VnbWVudC4gIFRoaXMgaXMgZG9uZSBzbyB0aGF0IGEgcmVjb3JkIHRoYXQgZml0cyBw ZXJmZWN0bHkgaW50byB0aGUKKwkJICogZW5kIG9mIHRoZSBzZWdtZW50IGlzIG1hcmtlZCByZWFk eSBmb3IgYXJjaGl2YWwgYXMgc29vbiBhcyB0aGUKKwkJICogZmx1c2hlZCBwb2ludGVyIGp1bXBz IHRvIHRoZSBuZXh0IHNlZ21lbnQuCisJCSAqLworCQlYTEJ5dGVUb1NlZyhTdGFydFBvcywgU3Rh cnRTZWcsIHdhbF9zZWdtZW50X3NpemUpOworCQlYTEJ5dGVUb1NlZyhFbmRQb3MsIEVuZFNlZywg d2FsX3NlZ21lbnRfc2l6ZSk7CisKKwkJaWYgKFN0YXJ0U2VnICE9IEVuZFNlZyAmJiBYTG9nQXJj aGl2aW5nQWN0aXZlKCkpCisJCXsKKwkJCVJlZ2lzdGVyUmVjb3JkQm91bmRhcnlFbnRyeShFbmRT ZWcsIEVuZFBvcyk7CisKKwkJCS8qCisJCQkgKiBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgdGhlIHJl Y29yZCB3YXMgYWxyZWFkeSBmbHVzaGVkIHRvIGRpc2sgYW5kCisJCQkgKiB3ZSBtaXNzZWQgbWFy a2luZyBzZWdtZW50cyBhcyByZWFkeSBmb3IgYXJjaGl2ZSwgc28gdHJ5IHRvIGRvCisJCQkgKiB0 aGF0IG5vdy4KKwkJCSAqLworCQkJTm90aWZ5U2VnbWVudHNSZWFkeUZvckFyY2hpdmUoSW52YWxp ZFhMb2dSZWNQdHIpOworCQl9CiAJfQogCiAJLyoKIAkgKiBJZiB0aGlzIHdhcyBhbiBYTE9HX1NX SVRDSCByZWNvcmQsIGZsdXNoIHRoZSByZWNvcmQgYW5kIHRoZSBlbXB0eQotCSAqIHBhZGRpbmcg c3BhY2UgdGhhdCBmaWxscyB0aGUgcmVzdCBvZiB0aGUgc2VnbWVudCwgYW5kIHBlcmZvcm0KLQkg KiBlbmQtb2Ytc2VnbWVudCBhY3Rpb25zIChlZywgbm90aWZ5aW5nIGFyY2hpdmVyKS4KKwkgKiBw YWRkaW5nIHNwYWNlIHRoYXQgZmlsbHMgdGhlIHJlc3Qgb2YgdGhlIHNlZ21lbnQuCiAJICovCiAJ aWYgKGlzTG9nU3dpdGNoKQogCXsKQEAgLTEyNjQsNiArMTMxNywyMTQgQEAgWExvZ0luc2VydFJl Y29yZChYTG9nUmVjRGF0YSAqcmRhdGEsCiAJcmV0dXJuIEVuZFBvczsKIH0KIAorLyoKKyAqIFJl Z2lzdGVyUmVjb3JkQm91bmRhcnlFbnRyeQorICoKKyAqIFRoaXMgZW50ZXJzIGEgbmV3IGVudHJ5 IGludG8gdGhlIHJlY29yZCBib3VuZGFyeSBtYXAsIHdoaWNoIGlzIHVzZWQgZm9yCisgKiBkZXRl cm1pbmcgd2hlbiBpdCBpcyBzYWZlIHRvIG1hcmsgYSBzZWdtZW50IGFzIHJlYWR5IGZvciBhcmNo aXZhbC4gIEFuIGVudHJ5CisgKiB3aXRoIHRoZSBnaXZlbiBrZXkgKHRoZSBzZWdtZW50IG51bWJl cikgbXVzdCBub3QgYWxyZWFkeSBleGlzdCBpbiB0aGUgbWFwLgorICogQWxzbywgdGhlIGNhbGxl ciBpcyByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdCBYTEJ5dGVUb1NlZygpIHdvdWxkIHJl dHVybgorICogdGhlIHNhbWUgc2VnbWVudCBudW1iZXIgZm9yIHRoZSBnaXZlbiByZWNvcmQgcG9p bnRlci4KKyAqLworc3RhdGljIHZvaWQKK1JlZ2lzdGVyUmVjb3JkQm91bmRhcnlFbnRyeShYTG9n U2VnTm8gc2VnLCBYTG9nUmVjUHRyIHBvcykKK3sKKwlSZWNvcmRCb3VuZGFyeUVudHJ5ICplbnRy eTsKKwlib29sIGZvdW5kOworCisJTFdMb2NrQWNxdWlyZShBcmNoTm90aWZ5TG9jaywgTFdfRVhD TFVTSVZFKTsKKworCWVudHJ5ID0gKFJlY29yZEJvdW5kYXJ5RW50cnkgKikgaGFzaF9zZWFyY2go UmVjb3JkQm91bmRhcnlNYXAsCisJCQkJCQkJCQkJCQkodm9pZCAqKSAmc2VnLCBIQVNIX0VOVEVS LAorCQkJCQkJCQkJCQkJJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJCWVsb2coRVJST1IsICJyZWNv cmQgYm91bmRhcnkgZW50cnkgZm9yIHNlZ21lbnQgYWxyZWFkeSBleGlzdHMiKTsKKworCWVudHJ5 LT5wb3MgPSBwb3M7CisKKwlMV0xvY2tSZWxlYXNlKEFyY2hOb3RpZnlMb2NrKTsKK30KKworLyoK KyAqIE5vdGlmeVNlZ21lbnRzUmVhZHlGb3JBcmNoaXZlCisgKgorICogVGhpcyBmdW5jdGlvbiBt YXJrcyBzZWdtZW50cyBhcyByZWFkeSBmb3IgYXJjaGl2YWwsIGdpdmVuIHRoYXQgaXQgaXMgc2Fm ZSB0bworICogZG8gc28uICBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiByZXBlYXRl ZGx5LCBldmVuIGlmIG5vdGhpbmcgaGFzCisgKiBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IHRpbWUg aXQgd2FzIGNhbGxlZC4KKyAqCisgKiBJZiBmbHVzaFJlY1B0ciBpcyBub3QgZXF1YWwgdG8gSW52 YWxpZFhMb2dSZWNQdHIsIGl0IGlzIHVzZWQgYXMgdGhlIGN1cnJlbnQKKyAqICJmbHVzaGVkIiBw b2ludGVyLiAgT3RoZXJ3aXNlLCB3ZSByZXRyaWV2ZSB0aGUgdmFsdWUgaW4gc2hhcmVkIG1lbW9y eS4KKyAqLworc3RhdGljIHZvaWQKK05vdGlmeVNlZ21lbnRzUmVhZHlGb3JBcmNoaXZlKFhMb2dS ZWNQdHIgZmx1c2hSZWNQdHIpCit7CisJWExvZ1JlY1B0cglmbHVzaGVkOworCVhMb2dTZWdObwlm bHVzaGVkX3NlZzsKKwlYTG9nU2VnTm8JbGF0ZXN0X2JvdW5kYXJ5X3NlZzsKKwlYTG9nU2VnTm8J bGFzdF9ub3RpZmllZDsKKwlib29sCQlmb3VuZDsKKworCS8qCisJICogV2UgZmlyc3QgZG8gYSBx dWljayBzYW5pdHkgY2hlY2sgdG8gc2VlIGlmIHdlIGNhbiBiYWlsIG91dCB3aXRob3V0IHRha2lu ZworCSAqIHRoZSBBcmNoTm90aWZ5TG9jayBhdCBhbGwuICBJdCBpcyBleHBlY3RlZCB0aGF0IHRo aXMgZnVuY3Rpb24gd2lsbCBydW4KKwkgKiBmcmVxdWVudGx5IGFuZCB0aGF0IGl0IHdpbGwgbmVl ZCB0byBkbyBub3RoaW5nIHRoZSB2YXN0IG1ham9yaXR5IG9mIHRoZQorCSAqIHRpbWUuCisJICoK KwkgKiBTcGVjaWZpY2FsbHksIHdlIGJhaWwgb3V0IGlmIHdlJ3ZlIGFscmVhZHkgbWFya2VkIHRo ZSBzZWdtZW50IHByaW9yIHRvCisJICogdGhlIHNlZ21lbnQgdGhhdCBjb250YWlucyAiZmx1c2hl ZCIgYXMgcmVhZHkgZm9yIGFyY2hpdmFsLiAgV2UKKwkgKiBpbnRlbnRpb25hbGx5IHVzZSBYTEJ5 dGVUb1NlZygpIGluc3RlYWQgb2YgWExCeXRlVG9QcmV2U2VnKCkgc28gdGhhdCB3ZQorCSAqIGRv bid0IHNraXAgbm90aWZ5aW5nIHdoZW4gYSByZWNvcmQgZml0cyBwZXJmZWN0bHkgaW50byB0aGUg ZW5kIG9mIGEKKwkgKiBzZWdtZW50LiAgKCJmbHVzaGVkIiBzaG91bGQgcG9pbnQgdG8gdGhlIGZp cnN0IGJ5dGUgb2YgdGhlIHJlY29yZCBfYWZ0ZXJfCisJICogdGhlIG9uZSB0aGF0IGlzIGtub3du IHRvIGJlIGZsdXNoZWQgdG8gZGlzay4pCisJICovCisJbGFzdF9ub3RpZmllZCA9IEdldExhc3RO b3RpZmllZFNlZ21lbnQoKTsKKworCS8qCisJICogSWYgbm8gZmx1c2hlZCBwb2ludGVyIHdhcyBw cm92aWRlZCwgcmV0cmlldmUgdGhlIHZhbHVlIGZyb20gc2hhcmVkCisJICogbWVtb3J5LgorCSAq LworCWlmIChmbHVzaFJlY1B0ciA9PSBJbnZhbGlkWExvZ1JlY1B0cikKKwkJZmx1c2hlZCA9IEdl dEZsdXNoUmVjUHRyKCk7CisJZWxzZQorCQlmbHVzaGVkID0gZmx1c2hSZWNQdHI7CisJWExCeXRl VG9TZWcoZmx1c2hlZCwgZmx1c2hlZF9zZWcsIHdhbF9zZWdtZW50X3NpemUpOworCisJaWYgKGxh c3Rfbm90aWZpZWQgPj0gZmx1c2hlZF9zZWcgLSAxKQorCQlyZXR1cm47CisKKwlMV0xvY2tBY3F1 aXJlKEFyY2hOb3RpZnlMb2NrLCBMV19FWENMVVNJVkUpOworCisJLyoKKwkgKiBSZW9idGFpbiBs YXN0Tm90aWZpZWRTZWcgaW4gY2FzZSBzb21lb25lIGVsc2UgY2hhbmdlZCBpdCwgYW5kIHJldHJp ZXZlCisJICogdGhlIGxhdGVzdCByZWNvcmQgYm91bmRhcnkgc2VnbWVudCB0byB1c2UgZm9yIG5v dGlmeWluZyBzZWdtZW50cy4KKwkgKi8KKwlsYXN0X25vdGlmaWVkID0gR2V0TGFzdE5vdGlmaWVk U2VnbWVudCgpOworCWxhdGVzdF9ib3VuZGFyeV9zZWcgPSBHZXRMYXRlc3RSZWNvcmRCb3VuZGFy eVNlZ21lbnQobGFzdF9ub3RpZmllZCwgZmx1c2hlZCwgJmZvdW5kKTsKKworCS8qCisJICogVXBk YXRlIHNoYXJlZCBtZW1vcnkgYW5kIGRpc2NhcmQgc2VnbWVudCBib3VuZGFyaWVzIHRoYXQgYXJl IG5vIGxvbmdlcgorCSAqIG5lZWRlZC4KKwkgKi8KKwlpZiAoZm91bmQpCisJeworCQkvKgorCQkg KiBJdCBpcyBzYWZlIHRvIHVwZGF0ZSBzaGFyZWQgbWVtb3J5IGJlZm9yZSB3ZSBhdHRlbXB0IHRv IGNyZWF0ZSB0aGUKKwkJICogLnJlYWR5IGZpbGVzLiAgSWYgb3VyIGNhbGxzIHRvIFhMb2dBcmNo aXZlTm90aWZ5U2VnKCkgZmFpbCwKKwkJICogUmVtb3ZlT2xkWGxvZ0ZpbGVzKCkgd2lsbCByZXRy eSBpdCBhcyBuZWNlc3NhcnkuCisJCSAqLworCQlTZXRMYXN0Tm90aWZpZWRTZWdtZW50KGxhdGVz dF9ib3VuZGFyeV9zZWcgLSAxKTsKKwkJUmVtb3ZlUmVjb3JkQm91bmRhcmllc1VwVG8obGF0ZXN0 X2JvdW5kYXJ5X3NlZyk7CisJfQorCisJTFdMb2NrUmVsZWFzZShBcmNoTm90aWZ5TG9jayk7CisK KwkvKgorCSAqIE5vdGlmeSBhcmNoaXZlciBhYm91dCBzZWdtZW50cyB0aGF0IGFyZSByZWFkeSBm b3IgYXJjaGl2YWwgKGJ5IGNyZWF0aW5nCisJICogdGhlIGNvcnJlc3BvbmRpbmcgLnJlYWR5IGZp bGVzKS4KKwkgKi8KKwlpZiAoZm91bmQpCisJeworCQlmb3IgKFhMb2dTZWdObyBzZWcgPSBsYXN0 X25vdGlmaWVkICsgMTsgc2VnIDwgbGF0ZXN0X2JvdW5kYXJ5X3NlZzsgc2VnKyspCisJCQlYTG9n QXJjaGl2ZU5vdGlmeVNlZyhzZWcsIGZhbHNlKTsKKworCQlQZ0FyY2hXYWtldXAoKTsKKwl9Cit9 CisKKy8qCisgKiBHZXRMYXRlc3RSZWNvcmRCb3VuZGFyeVNlZ21lbnQKKyAqCisgKiBUaGlzIGZ1 bmN0aW9uIGZpbmRzIHRoZSBsYXRlc3QgcmVjb3JkIGJvdW5kYXJ5IGluIFJlY29yZEJvdW5kYXJ5 TWFwIHRoYXQgaXMKKyAqIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgZ2l2ZW4gImZsdXNoZWQi IHBvaW50ZXIgYW5kIHJldHVybnMgaXRzIGFzc29jaWF0ZWQKKyAqIHNlZ21lbnQgbnVtYmVyLCBn aXZlbiB0aGF0IGl0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGFzdCBub3RpZmllZCBzZWdtZW50LiAg SWYKKyAqIHN1Y2ggYSBzZWdtZW50IG51bWJlciBpcyBmb3VuZCwgKmZvdW5kIGlzIHNldCB0byB0 cnVlLiAgT3RoZXJ3aXNlLCAqZm91bmQgaXMKKyAqIHNldCB0byBmYWxzZSwgYW5kIHRoZSByZXR1 cm4gdmFsdWUgaXMgdW5kZWZpbmVkLgorICovCitzdGF0aWMgWExvZ1NlZ05vCitHZXRMYXRlc3RS ZWNvcmRCb3VuZGFyeVNlZ21lbnQoWExvZ1NlZ05vIGxhc3Rfbm90aWZpZWQsIFhMb2dSZWNQdHIg Zmx1c2hlZCwKKwkJCQkJCQkgICBib29sICpmb3VuZCkKK3sKKwlYTG9nU2VnTm8JZmx1c2hlZF9z ZWc7CisJWExvZ1NlZ05vCXNlZzsKKworCUFzc2VydChMV0xvY2tIZWxkQnlNZShBcmNoTm90aWZ5 TG9jaykpOworCUFzc2VydChmb3VuZCAhPSBOVUxMKTsKKworCVhMQnl0ZVRvU2VnKGZsdXNoZWQs IGZsdXNoZWRfc2VnLCB3YWxfc2VnbWVudF9zaXplKTsKKworCWZvciAoc2VnID0gZmx1c2hlZF9z ZWc7IHNlZyA+IGxhc3Rfbm90aWZpZWQ7IHNlZy0tKQorCXsKKwkJUmVjb3JkQm91bmRhcnlFbnRy eSAqZW50cnk7CisKKwkJZW50cnkgPSAoUmVjb3JkQm91bmRhcnlFbnRyeSAqKSBoYXNoX3NlYXJj aChSZWNvcmRCb3VuZGFyeU1hcCwKKwkJCQkJCQkJCQkJCQkodm9pZCAqKSAmc2VnLCBIQVNIX0ZJ TkQsCisJCQkJCQkJCQkJCQkJTlVMTCk7CisKKwkJaWYgKGVudHJ5ICE9IE5VTEwgJiYgZmx1c2hl ZCA+PSBlbnRyeS0+cG9zKQorCQl7CisJCQkqZm91bmQgPSB0cnVlOworCQkJcmV0dXJuIGVudHJ5 LT5zZWc7CisJCX0KKwl9CisKKwkqZm91bmQgPSBmYWxzZTsKKwlyZXR1cm4gMDsKK30KKworLyoK KyAqIFJlbW92ZU9sZFJlY29yZEJvdW5kYXJpZXMKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHJlbW92 ZXMgYWxsIGVudHJpZXMgaW4gdGhlIFJlY29yZEJvdW5kYXJ5TWFwIHdpdGggc2VnbWVudAorICog bnVtYmVycyB1cCB0byBhbiBpbmNsdWRpbmcgc2VnLgorICovCitzdGF0aWMgdm9pZAorUmVtb3Zl UmVjb3JkQm91bmRhcmllc1VwVG8oWExvZ1NlZ05vIHNlZykKK3sKKwlSZWNvcmRCb3VuZGFyeUVu dHJ5ICplbnRyeTsKKwlIQVNIX1NFUV9TVEFUVVMgc3RhdHVzOworCisJQXNzZXJ0KExXTG9ja0hl bGRCeU1lSW5Nb2RlKEFyY2hOb3RpZnlMb2NrLCBMV19FWENMVVNJVkUpKTsKKworCWhhc2hfc2Vx X2luaXQoJnN0YXR1cywgUmVjb3JkQm91bmRhcnlNYXApOworCisJd2hpbGUgKChlbnRyeSA9IChS ZWNvcmRCb3VuZGFyeUVudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmc3RhdHVzKSkgIT0gTlVMTCkK Kwl7CisJCWlmIChlbnRyeS0+c2VnIDw9IHNlZykKKwkJCSh2b2lkKSBoYXNoX3NlYXJjaChSZWNv cmRCb3VuZGFyeU1hcCwgKHZvaWQgKikgJmVudHJ5LT5zZWcsCisJCQkJCQkJICAgSEFTSF9SRU1P VkUsIE5VTEwpOworCX0KK30KKworLyoKKyAqIEdldExhc3ROb3RpZmllZFNlZ21lbnQKKyAqCisg KiBSZXRyaWV2ZXMgbGFzdCBub3RpZmllZCBzZWdtZW50IGZyb20gc2hhcmVkIG1lbW9yeS4KKyAq LworWExvZ1NlZ05vCitHZXRMYXN0Tm90aWZpZWRTZWdtZW50KHZvaWQpCit7CisJWExvZ1NlZ05v IHNlZzsKKworCVNwaW5Mb2NrQWNxdWlyZSgmWExvZ0N0bC0+aW5mb19sY2spOworCXNlZyA9IFhM b2dDdGwtPmxhc3ROb3RpZmllZFNlZzsKKwlTcGluTG9ja1JlbGVhc2UoJlhMb2dDdGwtPmluZm9f bGNrKTsKKworCXJldHVybiBzZWc7Cit9CisKKy8qCisgKiBTZXRMYXN0Tm90aWZpZWRTZWdtZW50 CisgKgorICogU2V0cyBsYXN0IG5vdGlmaWVkIHNlZ21lbnQgaW4gc2hhcmVkIG1lbW9yeS4KKyAq Lworc3RhdGljIHZvaWQKK1NldExhc3ROb3RpZmllZFNlZ21lbnQoWExvZ1NlZ05vIHNlZykKK3sK KwlTcGluTG9ja0FjcXVpcmUoJlhMb2dDdGwtPmluZm9fbGNrKTsKKwlYTG9nQ3RsLT5sYXN0Tm90 aWZpZWRTZWcgPSBzZWc7CisJU3BpbkxvY2tSZWxlYXNlKCZYTG9nQ3RsLT5pbmZvX2xjayk7Cit9 CisKIC8qCiAgKiBSZXNlcnZlcyB0aGUgcmlnaHQgYW1vdW50IG9mIHNwYWNlIGZvciBhIHJlY29y ZCBvZiBnaXZlbiBzaXplIGZyb20gdGhlIFdBTC4KICAqICpTdGFydFBvcyBpcyBzZXQgdG8gdGhl IGJlZ2lubmluZyBvZiB0aGUgcmVzZXJ2ZWQgc2VjdGlvbiwgKkVuZFBvcyB0bwpAQCAtMjU4Niwx MSArMjg0NywxMyBAQCBYTG9nV3JpdGUoWExvZ3dydFJxc3QgV3JpdGVScXN0LCBib29sIGZsZXhp YmxlKQogCQkJICogbGF0ZXIuIERvaW5nIGl0IGhlcmUgZW5zdXJlcyB0aGF0IG9uZSBhbmQgb25s eSBvbmUgYmFja2VuZCB3aWxsCiAJCQkgKiBwZXJmb3JtIHRoaXMgZnN5bmMuCiAJCQkgKgotCQkJ ICogVGhpcyBpcyBhbHNvIHRoZSByaWdodCBwbGFjZSB0byBub3RpZnkgdGhlIEFyY2hpdmVyIHRo YXQgdGhlCi0JCQkgKiBzZWdtZW50IGlzIHJlYWR5IHRvIGNvcHkgdG8gYXJjaGl2YWwgc3RvcmFn ZSwgYW5kIHRvIHVwZGF0ZSB0aGUKLQkJCSAqIHRpbWVyIGZvciBhcmNoaXZlX3RpbWVvdXQsIGFu ZCB0byBzaWduYWwgZm9yIGEgY2hlY2twb2ludCBpZgotCQkJICogdG9vIG1hbnkgbG9nZmlsZSBz ZWdtZW50cyBoYXZlIGJlZW4gdXNlZCBzaW5jZSB0aGUgbGFzdAotCQkJICogY2hlY2twb2ludC4K KwkJCSAqIElmIFdBTCBhcmNoaXZpbmcgaXMgYWN0aXZlLCB3ZSBhdHRlbXB0IHRvIG5vdGlmeSB0 aGUgYXJjaGl2ZXIgb2YKKwkJCSAqIGFueSBzZWdtZW50cyB0aGF0IGFyZSBub3cgcmVhZHkgZm9y IGFyY2hpdmFsLgorCQkJICoKKwkJCSAqIFRoaXMgaXMgYWxzbyB0aGUgcmlnaHQgcGxhY2UgdG8g dXBkYXRlIHRoZSB0aW1lciBmb3IKKwkJCSAqIGFyY2hpdmVfdGltZW91dCBhbmQgdG8gc2lnbmFs IGZvciBhIGNoZWNrcG9pbnQgaWYgdG9vIG1hbnkKKwkJCSAqIGxvZ2ZpbGUgc2VnbWVudHMgaGF2 ZSBiZWVuIHVzZWQgc2luY2UgdGhlIGxhc3QgY2hlY2twb2ludC4KKwkJCSAqCiAJCQkgKi8KIAkJ CWlmIChmaW5pc2hpbmdfc2VnKQogCQkJewpAQCAtMjYwMiw3ICsyODY1LDcgQEAgWExvZ1dyaXRl KFhMb2d3cnRScXN0IFdyaXRlUnFzdCwgYm9vbCBmbGV4aWJsZSkKIAkJCQlMb2d3cnRSZXN1bHQu Rmx1c2ggPSBMb2d3cnRSZXN1bHQuV3JpdGU7CS8qIGVuZCBvZiBwYWdlICovCiAKIAkJCQlpZiAo WExvZ0FyY2hpdmluZ0FjdGl2ZSgpKQotCQkJCQlYTG9nQXJjaGl2ZU5vdGlmeVNlZyhvcGVuTG9n U2VnTm8pOworCQkJCQlOb3RpZnlTZWdtZW50c1JlYWR5Rm9yQXJjaGl2ZShMb2d3cnRSZXN1bHQu Rmx1c2gpOwogCiAJCQkJWExvZ0N0bC0+bGFzdFNlZ1N3aXRjaFRpbWUgPSAocGdfdGltZV90KSB0 aW1lKE5VTEwpOwogCQkJCVhMb2dDdGwtPmxhc3RTZWdTd2l0Y2hMU04gPSBMb2d3cnRSZXN1bHQu Rmx1c2g7CkBAIC0yNjkwLDYgKzI5NTMsOSBAQCBYTG9nV3JpdGUoWExvZ3dydFJxc3QgV3JpdGVS cXN0LCBib29sIGZsZXhpYmxlKQogCQkJWExvZ0N0bC0+TG9nd3J0UnFzdC5GbHVzaCA9IExvZ3dy dFJlc3VsdC5GbHVzaDsKIAkJU3BpbkxvY2tSZWxlYXNlKCZYTG9nQ3RsLT5pbmZvX2xjayk7CiAJ fQorCisJaWYgKFhMb2dBcmNoaXZpbmdBY3RpdmUoKSkKKwkJTm90aWZ5U2VnbWVudHNSZWFkeUZv ckFyY2hpdmUoSW52YWxpZFhMb2dSZWNQdHIpOwogfQogCiAvKgpAQCAtNTExNyw2ICs1MzgzLDkg QEAgWExPR1NobWVtU2l6ZSh2b2lkKQogCS8qIGFuZCB0aGUgYnVmZmVycyB0aGVtc2VsdmVzICov CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKFhMT0dfQkxDS1NaLCBYTE9HYnVmZmVy cykpOwogCisJLyogc3R1ZmYgZm9yIG1hcmtpbmcgc2VnbWVudHMgYXMgcmVhZHkgZm9yIGFyY2hp dmFsICovCisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIGhhc2hfZXN0aW1hdGVfc2l6ZSgxNiwgc2l6 ZW9mKFJlY29yZEJvdW5kYXJ5RW50cnkpKSk7CisKIAkvKgogCSAqIE5vdGU6IHdlIGRvbid0IGNv dW50IENvbnRyb2xGaWxlRGF0YSwgaXQgY29tZXMgb3V0IG9mIHRoZSAic2xvcCBmYWN0b3IiCiAJ ICogYWRkZWQgYnkgQ3JlYXRlU2hhcmVkTWVtb3J5QW5kU2VtYXBob3Jlcy4gIFRoaXMgbGV0cyB1 cyB1c2UgdGhpcwpAQCAtNTEzNCw2ICs1NDAzLDcgQEAgWExPR1NobWVtSW5pdCh2b2lkKQogCWNo YXIJICAgKmFsbG9jcHRyOwogCWludAkJCWk7CiAJQ29udHJvbEZpbGVEYXRhICpsb2NhbENvbnRy b2xGaWxlOworCUhBU0hDVEwJCWluZm87CiAKICNpZmRlZiBXQUxfREVCVUcKIApAQCAtNTIyNywx MiArNTQ5NywyMCBAQCBYTE9HU2htZW1Jbml0KHZvaWQpCiAJWExvZ0N0bC0+SW5zdGFsbFhMb2dG aWxlU2VnbWVudEFjdGl2ZSA9IGZhbHNlOwogCVhMb2dDdGwtPlNoYXJlZFByb21vdGVJc1RyaWdn ZXJlZCA9IGZhbHNlOwogCVhMb2dDdGwtPldhbFdyaXRlclNsZWVwaW5nID0gZmFsc2U7CisJWExv Z0N0bC0+bGFzdE5vdGlmaWVkU2VnID0gMHhGRkZGRkZGRkZGRkZGRkZGOwogCiAJU3BpbkxvY2tJ bml0KCZYTG9nQ3RsLT5JbnNlcnQuaW5zZXJ0cG9zX2xjayk7CiAJU3BpbkxvY2tJbml0KCZYTG9n Q3RsLT5pbmZvX2xjayk7CiAJU3BpbkxvY2tJbml0KCZYTG9nQ3RsLT51bHNuX2xjayk7CiAJSW5p dFNoYXJlZExhdGNoKCZYTG9nQ3RsLT5yZWNvdmVyeVdha2V1cExhdGNoKTsKIAlDb25kaXRpb25W YXJpYWJsZUluaXQoJlhMb2dDdGwtPnJlY292ZXJ5Tm90UGF1c2VkQ1YpOworCisJLyogSW5pdGlh bGl6ZSBzdHVmZiBmb3IgbWFya2luZyBzZWdtZW50cyBhcyByZWFkeSBmb3IgYXJjaGl2YWwuICov CisJbWVtc2V0KCZpbmZvLCAwLCBzaXplb2YoaW5mbykpOworCWluZm8ua2V5c2l6ZSA9IHNpemVv ZihYTG9nU2VnTm8pOworCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFJlY29yZEJvdW5kYXJ5RW50 cnkpOworCVJlY29yZEJvdW5kYXJ5TWFwID0gU2htZW1Jbml0SGFzaCgiUmVjb3JkIEJvdW5kYXJ5 IFRhYmxlIiwgMTYsIDE2LCAmaW5mbywKKwkJCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9C Uyk7CiB9CiAKIC8qCkBAIC03ODY0LDYgKzgxNDIsMTcgQEAgU3RhcnR1cFhMT0codm9pZCkKIAlY TG9nQ3RsLT5Mb2d3cnRScXN0LldyaXRlID0gRW5kT2ZMb2c7CiAJWExvZ0N0bC0+TG9nd3J0UnFz dC5GbHVzaCA9IEVuZE9mTG9nOwogCisJLyoKKwkgKiBJbml0aWFsaXplIFhMb2dDdGwtPmxhc3RO b3RpZmllZFNlZyB0byB0aGUgcHJldmlvdXMgV0FMIGZpbGUuCisJICovCisJaWYgKFhMb2dBcmNo aXZpbmdBY3RpdmUoKSkKKwl7CisJCVhMb2dTZWdObyBFbmRPZkxvZ1NlZzsKKworCQlYTEJ5dGVU b1NlZyhFbmRPZkxvZywgRW5kT2ZMb2dTZWcsIHdhbF9zZWdtZW50X3NpemUpOworCQlTZXRMYXN0 Tm90aWZpZWRTZWdtZW50KEVuZE9mTG9nU2VnIC0gMSk7CisJfQorCiAJLyoKIAkgKiBVcGRhdGUg ZnVsbF9wYWdlX3dyaXRlcyBpbiBzaGFyZWQgbWVtb3J5IGFuZCB3cml0ZSBhbiBYTE9HX0ZQV19D SEFOR0UKIAkgKiByZWNvcmQgYmVmb3JlIHJlc291cmNlIG1hbmFnZXIgd3JpdGVzIGNsZWFudXAg V0FMIHJlY29yZHMgb3IgY2hlY2twb2ludApAQCAtNzk5MSw3ICs4MjgwLDcgQEAgU3RhcnR1cFhM T0codm9pZCkKIAkJCQlYTG9nQXJjaGl2ZUNsZWFudXAocGFydGlhbGZuYW1lKTsKIAogCQkJCWR1 cmFibGVfcmVuYW1lKG9yaWdwYXRoLCBwYXJ0aWFscGF0aCwgRVJST1IpOwotCQkJCVhMb2dBcmNo aXZlTm90aWZ5KHBhcnRpYWxmbmFtZSk7CisJCQkJWExvZ0FyY2hpdmVOb3RpZnkocGFydGlhbGZu YW1lLCB0cnVlKTsKIAkJCX0KIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2dhcmNoaXZlLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n YXJjaGl2ZS5jCmluZGV4IDI2YjAyM2U3NTQuLmU5Y2FjOTBiNGEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dhcmNoaXZlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZ2FyY2hpdmUuYwpAQCAtNDMzLDcgKzQzMyw3IEBAIEtlZXBGaWxlUmVz dG9yZWRGcm9tQXJjaGl2ZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICp4bG9nZm5hbWUp CiAJaWYgKFhMb2dBcmNoaXZlTW9kZSAhPSBBUkNISVZFX01PREVfQUxXQVlTKQogCQlYTG9nQXJj aGl2ZUZvcmNlRG9uZSh4bG9nZm5hbWUpOwogCWVsc2UKLQkJWExvZ0FyY2hpdmVOb3RpZnkoeGxv Z2ZuYW1lKTsKKwkJWExvZ0FyY2hpdmVOb3RpZnkoeGxvZ2ZuYW1lLCB0cnVlKTsKIAogCS8qCiAJ ICogSWYgdGhlIGV4aXN0aW5nIGZpbGUgd2FzIHJlcGxhY2VkLCBzaW5jZSB3YWxzZW5kZXJzIG1p Z2h0IGhhdmUgaXQgb3BlbiwKQEAgLTQ2NCw3ICs0NjQsNyBAQCBLZWVwRmlsZVJlc3RvcmVkRnJv bUFyY2hpdmUoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqeGxvZ2ZuYW1lKQogICogdGhl biB3aGVuIGNvbXBsZXRlLCByZW5hbWUgaXQgdG8gMDAwMDAwMDEwMDAwMDAwMTAwMDAwMEM2LmRv bmUKICAqLwogdm9pZAotWExvZ0FyY2hpdmVOb3RpZnkoY29uc3QgY2hhciAqeGxvZykKK1hMb2dB cmNoaXZlTm90aWZ5KGNvbnN0IGNoYXIgKnhsb2csIGJvb2wgbm90aWZ5KQogewogCWNoYXIJCWFy Y2hpdmVTdGF0dXNQYXRoW01BWFBHUEFUSF07CiAJRklMRQkgICAqZmQ7CkBAIC00ODksOCArNDg5 LDggQEAgWExvZ0FyY2hpdmVOb3RpZnkoY29uc3QgY2hhciAqeGxvZykKIAkJcmV0dXJuOwogCX0K IAotCS8qIE5vdGlmeSBhcmNoaXZlciB0aGF0IGl0J3MgZ290IHNvbWV0aGluZyB0byBkbyAqLwot CWlmIChJc1VuZGVyUG9zdG1hc3RlcikKKwkvKiBJZiBjYWxsZXIgcmVxdWVzdGVkLCBub3RpZnkg YXJjaGl2ZXIgdGhhdCBpdCdzIGdvdCBzb21ldGhpbmcgdG8gZG8gKi8KKwlpZiAobm90aWZ5KQog CQlQZ0FyY2hXYWtldXAoKTsKIH0KIApAQCAtNDk4LDEyICs0OTgsMTIgQEAgWExvZ0FyY2hpdmVO b3RpZnkoY29uc3QgY2hhciAqeGxvZykKICAqIENvbnZlbmllbmNlIHJvdXRpbmUgdG8gbm90aWZ5 IHVzaW5nIHNlZ21lbnQgbnVtYmVyIHJlcHJlc2VudGF0aW9uIG9mIGZpbGVuYW1lCiAgKi8KIHZv aWQKLVhMb2dBcmNoaXZlTm90aWZ5U2VnKFhMb2dTZWdObyBzZWdubykKK1hMb2dBcmNoaXZlTm90 aWZ5U2VnKFhMb2dTZWdObyBzZWdubywgYm9vbCBub3RpZnkpCiB7CiAJY2hhcgkJeGxvZ1tNQVhG TkFNRUxFTl07CiAKIAlYTG9nRmlsZU5hbWUoeGxvZywgVGhpc1RpbWVMaW5lSUQsIHNlZ25vLCB3 YWxfc2VnbWVudF9zaXplKTsKLQlYTG9nQXJjaGl2ZU5vdGlmeSh4bG9nKTsKKwlYTG9nQXJjaGl2 ZU5vdGlmeSh4bG9nLCBub3RpZnkpOwogfQogCiAvKgpAQCAtNjA4LDcgKzYwOCw3IEBAIFhMb2dB cmNoaXZlQ2hlY2tEb25lKGNvbnN0IGNoYXIgKnhsb2cpCiAJCXJldHVybiB0cnVlOwogCiAJLyog UmV0cnkgY3JlYXRpb24gb2YgdGhlIC5yZWFkeSBmaWxlICovCi0JWExvZ0FyY2hpdmVOb3RpZnko eGxvZyk7CisJWExvZ0FyY2hpdmVOb3RpZnkoeGxvZywgdHJ1ZSk7CiAJcmV0dXJuIGZhbHNlOwog fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwppbmRleCA5YTJiYzM3ZmQ3Li42 MGRlM2JlOTJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKQEAgLTYyMiw3 ICs2MjIsNyBAQCBXYWxSZWNlaXZlck1haW4odm9pZCkKIAkJCWlmIChYTG9nQXJjaGl2ZU1vZGUg IT0gQVJDSElWRV9NT0RFX0FMV0FZUykKIAkJCQlYTG9nQXJjaGl2ZUZvcmNlRG9uZSh4bG9nZm5h bWUpOwogCQkJZWxzZQotCQkJCVhMb2dBcmNoaXZlTm90aWZ5KHhsb2dmbmFtZSk7CisJCQkJWExv Z0FyY2hpdmVOb3RpZnkoeGxvZ2ZuYW1lLCB0cnVlKTsKIAkJfQogCQlyZWN2RmlsZSA9IC0xOwog CkBAIC03NjAsNyArNzYwLDcgQEAgV2FsUmN2RmV0Y2hUaW1lTGluZUhpc3RvcnlGaWxlcyhUaW1l TGluZUlEIGZpcnN0LCBUaW1lTGluZUlEIGxhc3QpCiAJCQlpZiAoWExvZ0FyY2hpdmVNb2RlICE9 IEFSQ0hJVkVfTU9ERV9BTFdBWVMpCiAJCQkJWExvZ0FyY2hpdmVGb3JjZURvbmUoZm5hbWUpOwog CQkJZWxzZQotCQkJCVhMb2dBcmNoaXZlTm90aWZ5KGZuYW1lKTsKKwkJCQlYTG9nQXJjaGl2ZU5v dGlmeShmbmFtZSwgdHJ1ZSk7CiAKIAkJCXBmcmVlKGZuYW1lKTsKIAkJCXBmcmVlKGNvbnRlbnQp OwpAQCAtOTE1LDcgKzkxNSw3IEBAIFhMb2dXYWxSY3ZXcml0ZShjaGFyICpidWYsIFNpemUgbmJ5 dGVzLCBYTG9nUmVjUHRyIHJlY3B0cikKIAkJCQlpZiAoWExvZ0FyY2hpdmVNb2RlICE9IEFSQ0hJ VkVfTU9ERV9BTFdBWVMpCiAJCQkJCVhMb2dBcmNoaXZlRm9yY2VEb25lKHhsb2dmbmFtZSk7CiAJ CQkJZWxzZQotCQkJCQlYTG9nQXJjaGl2ZU5vdGlmeSh4bG9nZm5hbWUpOworCQkJCQlYTG9nQXJj aGl2ZU5vdGlmeSh4bG9nZm5hbWUsIHRydWUpOwogCQkJfQogCQkJcmVjdkZpbGUgPSAtMTsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9ja25hbWVzLnR4dCBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2tuYW1lcy50eHQKaW5kZXggNmM3Y2Y2YzI5NS4u ZDM5MjI1YmY5NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9ja25h bWVzLnR4dAorKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbHdsb2NrbmFtZXMudHh0CkBA IC01MywzICs1Myw0IEBAIFhhY3RUcnVuY2F0aW9uTG9jawkJCQkJNDQKICMgNDUgd2FzIFhhY3RU cnVuY2F0aW9uTG9jayB1bnRpbCByZW1vdmFsIG9mIEJhY2tlbmRSYW5kb21Mb2NrCiBXcmFwTGlt aXRzVmFjdXVtTG9jawkJCQk0NgogTm90aWZ5UXVldWVUYWlsTG9jawkJCQkJNDcKK0FyY2hOb3Rp ZnlMb2NrCQkJCQkJNDgKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nYXJjaGl2 ZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dhcmNoaXZlLmgKaW5kZXggM2VkZDFhOTc2Yy4u ZTI1YzNkODExNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dhcmNoaXZlLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dhcmNoaXZlLmgKQEAgLTIzLDggKzIzLDggQEAg ZXh0ZXJuIGJvb2wgUmVzdG9yZUFyY2hpdmVkRmlsZShjaGFyICpwYXRoLCBjb25zdCBjaGFyICp4 bG9nZm5hbWUsCiBleHRlcm4gdm9pZCBFeGVjdXRlUmVjb3ZlcnlDb21tYW5kKGNvbnN0IGNoYXIg KmNvbW1hbmQsIGNvbnN0IGNoYXIgKmNvbW1hbmROYW1lLAogCQkJCQkJCQkgICBib29sIGZhaWxP blNpZ25hbCk7CiBleHRlcm4gdm9pZCBLZWVwRmlsZVJlc3RvcmVkRnJvbUFyY2hpdmUoY29uc3Qg Y2hhciAqcGF0aCwgY29uc3QgY2hhciAqeGxvZ2ZuYW1lKTsKLWV4dGVybiB2b2lkIFhMb2dBcmNo aXZlTm90aWZ5KGNvbnN0IGNoYXIgKnhsb2cpOwotZXh0ZXJuIHZvaWQgWExvZ0FyY2hpdmVOb3Rp ZnlTZWcoWExvZ1NlZ05vIHNlZ25vKTsKK2V4dGVybiB2b2lkIFhMb2dBcmNoaXZlTm90aWZ5KGNv bnN0IGNoYXIgKnhsb2csIGJvb2wgbm90aWZ5KTsKK2V4dGVybiB2b2lkIFhMb2dBcmNoaXZlTm90 aWZ5U2VnKFhMb2dTZWdObyBzZWdubywgYm9vbCBub3RpZnkpOwogZXh0ZXJuIHZvaWQgWExvZ0Fy Y2hpdmVGb3JjZURvbmUoY29uc3QgY2hhciAqeGxvZyk7CiBleHRlcm4gYm9vbCBYTG9nQXJjaGl2 ZUNoZWNrRG9uZShjb25zdCBjaGFyICp4bG9nKTsKIGV4dGVybiBib29sIFhMb2dBcmNoaXZlSXNC dXN5KGNvbnN0IGNoYXIgKnhsb2cpOwotLSAKMi4xNi42Cgo= --_002_867B852EE8924DD78E29CE74FDBBA234amazoncom_--