From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.6 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E25EEC433DF for ; Thu, 20 Aug 2020 21:29:25 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A0E0520885 for ; Thu, 20 Aug 2020 21:29:25 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A0E0520885 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 20FC46E0B7; Thu, 20 Aug 2020 21:29:25 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 78F366E0B7 for ; Thu, 20 Aug 2020 21:29:23 +0000 (UTC) IronPort-SDR: iNQrMQbfkogUEA1ehTt/0sg3AxLKyEYoDvVAAs/XCJwCzK9PTvBdLNDRZ3Mqev6u/Jb98PAZCO nKT0bdHPy95Q== X-IronPort-AV: E=McAfee;i="6000,8403,9719"; a="154683291" X-IronPort-AV: E=Sophos;i="5.76,334,1592895600"; d="scan'208";a="154683291" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Aug 2020 14:29:19 -0700 IronPort-SDR: N8Veqi0pAWiR7hnmF2rSRsh/SgAQmgDCFyquaKo5+noAGm8c/mOo5dMh+sSqd4E6YSGA6zC78B I7Fs9WaQEnyw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,334,1592895600"; d="scan'208";a="442129576" Received: from dceraolo-mobl.amr.corp.intel.com (HELO [10.209.156.160]) ([10.209.156.160]) by orsmga004.jf.intel.com with ESMTP; 20 Aug 2020 14:29:18 -0700 To: Michal Wajdeczko , John.C.Harrison@Intel.com, Intel-GFX@Lists.FreeDesktop.Org References: <20200807174637.375324-1-John.C.Harrison@Intel.com> <20200807174637.375324-2-John.C.Harrison@Intel.com> <49855416-a10a-d386-a1f7-bc2e8e76c91c@intel.com> <1d66e55c-4aac-e710-19bf-e5fd589ceaaf@intel.com> From: Daniele Ceraolo Spurio Message-ID: <689eff99-7aa6-6ad9-763c-21faf8755ea8@intel.com> Date: Thu, 20 Aug 2020 14:29:18 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: <1d66e55c-4aac-e710-19bf-e5fd589ceaaf@intel.com> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH 1/2] drm/i915/guc: Update to GuC v45.0.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" CgpPbiA4LzE5LzIwMjAgMjoxNCBQTSwgTWljaGFsIFdhamRlY3prbyB3cm90ZToKPgo+IE9uIDEx LjA4LjIwMjAgMDM6MDQsIERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gd3JvdGU6Cj4+Cj4+IE9uIDgv Ny8yMDIwIDEwOjQ2IEFNLCBKb2huLkMuSGFycmlzb25ASW50ZWwuY29tIHdyb3RlOgo+Pj4gRnJv bTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KPj4+Cj4+PiBVcGRh dGUgdG8gdGhlIGxhdGVzdCBHdUMgZmlybXdhcmUuIFRoaXMgaW5jbHVkZXMgc29tZSBzaWduaWZp Y2FudAo+Pj4gY2hhbmdlcyB0byB0aGUgaW50ZXJmYWNlLgo+PiBBIGhpZ2ggbGV2ZWwgb3ZlcnZp ZXcgb2YgdGhlIGNoYW5nZXMgd291bGQgYmUgbmljZSBmb3IgZXh0cmEgY2xhcml0eS4gQQo+PiBj b3VwbGUgb2YgZXhhbXBsZToKPj4KPj4gLSBHdUMgbm93IHJlcXVpcmVzIGEgcHJpdmF0ZSBtZW1v cnkgYXJlYQo+PiAtIHlvdSdyZSBkcm9wcGluZyB0aGUgcHJvZ3JhbW1pbmcgb2YgdGhlIHJlZ19z dGF0ZSBzdHJ1Y3QsIGJ1dCB0aGF0J3MKPj4gYWN0dWFsbHkgc3RpbGwgZGVmaW5lZCBpbiB0aGUg c3RydWN0dXJlLCBzbyBJTU8gaXQncyB3b3J0aCBtZW50aW9uaW5nCj4+IHRoYXQgaXQgd2lsbCBj b21lIGJhY2sgd2l0aCBHdUMgc3VibWlzc2lvbi4KPj4KPj4+IFNpZ25lZC1vZmYtYnk6IEpvaG4g SGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4+PiBBdXRob3I6IERhbmllbGUg Q2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4+PiBBdXRo b3I6IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4+PiBBdXRob3I6 IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgo+Pj4gQXV0aG9yOiBNaWNo YWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KPj4+IEF1dGhvcjogTWlj aGVsIFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGludGVsLmNvbT4KPj4+IEF1dGhvcjogT3NjYXIg TWF0ZW8gPG9zY2FyLm1hdGVvQGludGVsLmNvbT4KPj4+IEF1dGhvcjogUm9kcmlnbyBWaXZpIDxy b2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+IEZvciB0aGUgcmV2aWV3IHByb2Nlc3MgaXQgd291bGQg YmUgYmV0dGVyIHRvIGhhdmUgaW5kaXZpZHVhbCBwYXRjaGVzCj4gZnJvbSBlYWNoIGF1dGhvci4g V2UgY2FuIHNxdWFzaCB0aGVtIGp1c3QgYmVmb3JlIG1lcmdlLgo+Cj4+PiAtLS0KPj4+ICDCoCBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuY8KgwqDCoCB8wqDCoCAzICst Cj4+PiAgwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmPCoMKgwqDCoMKg wqAgfCAxMjUgKysrKysrKy0tLS0KPj4+ICDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWNfYWJpLmjCoMKgIHwgMjE1ICsrKysrKysrKysrKysrKysrKysKPj4+ICDCoCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfYWRzLmPCoMKgIHwgMTE2ICsrKysrKysr LS0KPj4+ICDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZncuY8KgwqDC oCB8wqAgMjEgKy0KPj4+ICDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNf ZndpZi5owqAgfCAxMTAgKysrKy0tLS0tLQo+Pj4gIMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3VjL2ludGVsX2d1Y19yZWcuaMKgwqAgfMKgwqAgNSArCj4+PiAgwqAgZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuY8KgwqDCoMKgIHzCoCAyNyArKy0KPj4+ICDCoCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5owqDCoMKgwqAgfMKgwqAgMiArCj4+ PiAgwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZndfYWJpLmggfMKgwqAg NiArLQo+Pj4gIMKgIDEwIGZpbGVzIGNoYW5nZWQsIDQ4NSBpbnNlcnRpb25zKCspLCAxNDUgZGVs ZXRpb25zKC0pCj4+PiAgwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19hYmkuaAo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9lbmdpbmVfY3MuYwo+Pj4gaW5kZXggZWE0YmEyYWZlOWY5Li45Y2Q2MmQ2OGFiYzYg MTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3Mu Ywo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPj4+ IEBAIC0zMDUsOCArMzA1LDkgQEAgc3RhdGljIGludCBpbnRlbF9lbmdpbmVfc2V0dXAoc3RydWN0 IGludGVsX2d0ICpndCwKPj4+IGVudW0gaW50ZWxfZW5naW5lX2lkIGlkKQo+Pj4gIMKgwqDCoMKg wqAgZW5naW5lLT5pOTE1ID0gaTkxNTsKPj4+ICDCoMKgwqDCoMKgIGVuZ2luZS0+Z3QgPSBndDsK Pj4+ICDCoMKgwqDCoMKgIGVuZ2luZS0+dW5jb3JlID0gZ3QtPnVuY29yZTsKPj4+IC3CoMKgwqAg ZW5naW5lLT5od19pZCA9IGVuZ2luZS0+Z3VjX2lkID0gaW5mby0+aHdfaWQ7Cj4+PiAgwqDCoMKg wqDCoCBlbmdpbmUtPm1taW9fYmFzZSA9IF9fZW5naW5lX21taW9fYmFzZShpOTE1LCBpbmZvLT5t bWlvX2Jhc2VzKTsKPj4+ICvCoMKgwqAgZW5naW5lLT5od19pZCA9IGluZm8tPmh3X2lkOwo+Pj4g K8KgwqDCoCBlbmdpbmUtPmd1Y19pZCA9IE1BS0VfR1VDX0lEKGluZm8tPmNsYXNzLCBpbmZvLT5p bnN0YW5jZSk7Cj4+PiAgwqAgwqDCoMKgwqDCoCBlbmdpbmUtPmNsYXNzID0gaW5mby0+Y2xhc3M7 Cj4+PiAgwqDCoMKgwqDCoCBlbmdpbmUtPmluc3RhbmNlID0gaW5mby0+aW5zdGFuY2U7Cj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMKPj4+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMKPj4+IGluZGV4IDg2MTY1Nzg5 N2MwZi4uOGQzMGUxZDdkOGE2IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfZ3VjLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Yy5jCj4+PiBAQCAtNyw2ICs3LDcgQEAKPj4+ICDCoCAjaW5jbHVkZSAiZ3QvaW50ZWxf Z3RfaXJxLmgiCj4+PiAgwqAgI2luY2x1ZGUgImd0L2ludGVsX2d0X3BtX2lycS5oIgo+Pj4gIMKg ICNpbmNsdWRlICJpbnRlbF9ndWMuaCIKPj4+ICsjaW5jbHVkZSAiaW50ZWxfZ3VjX2FiaS5oIgo+ Pj4gIMKgICNpbmNsdWRlICJpbnRlbF9ndWNfYWRzLmgiCj4+PiAgwqAgI2luY2x1ZGUgImludGVs X2d1Y19zdWJtaXNzaW9uLmgiCj4+PiAgwqAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4+PiBAQCAt MjEzLDIzICsyMTQsNiBAQCBzdGF0aWMgdTMyIGd1Y19jdGxfZmVhdHVyZV9mbGFncyhzdHJ1Y3Qg aW50ZWxfZ3VjCj4+PiAqZ3VjKQo+Pj4gIMKgwqDCoMKgwqAgcmV0dXJuIGZsYWdzOwo+Pj4gIMKg IH0KPj4+ICDCoCAtc3RhdGljIHUzMiBndWNfY3RsX2N0eGluZm9fZmxhZ3Moc3RydWN0IGludGVs X2d1YyAqZ3VjKQo+Pj4gLXsKPj4+IC3CoMKgwqAgdTMyIGZsYWdzID0gMDsKPj4+IC0KPj4+IC3C oMKgwqAgaWYgKGludGVsX2d1Y19zdWJtaXNzaW9uX2lzX3VzZWQoZ3VjKSkgewo+Pj4gLcKgwqDC oMKgwqDCoMKgIHUzMiBjdHhudW0sIGJhc2U7Cj4+PiAtCj4+PiAtwqDCoMKgwqDCoMKgwqAgYmFz ZSA9IGludGVsX2d1Y19nZ3R0X29mZnNldChndWMsIGd1Yy0+c3RhZ2VfZGVzY19wb29sKTsKPj4+ IC3CoMKgwqDCoMKgwqDCoCBjdHhudW0gPSBHVUNfTUFYX1NUQUdFX0RFU0NSSVBUT1JTIC8gMTY7 Cj4+PiAtCj4+PiAtwqDCoMKgwqDCoMKgwqAgYmFzZSA+Pj0gUEFHRV9TSElGVDsKPj4+IC3CoMKg wqDCoMKgwqDCoCBmbGFncyB8PSAoYmFzZSA8PCBHVUNfQ1RMX0JBU0VfQUREUl9TSElGVCkgfAo+ Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGN0eG51bSA8PCBHVUNfQ1RMX0NUWE5VTV9JTjE2 X1NISUZUKTsKPj4+IC3CoMKgwqAgfQo+Pj4gLcKgwqDCoCByZXR1cm4gZmxhZ3M7Cj4+PiAtfQo+ Pj4gLQo+Pj4gIMKgIHN0YXRpYyB1MzIgZ3VjX2N0bF9sb2dfcGFyYW1zX2ZsYWdzKHN0cnVjdCBp bnRlbF9ndWMgKmd1YykKPj4+ICDCoCB7Cj4+PiAgwqDCoMKgwqDCoCB1MzIgb2Zmc2V0ID0gaW50 ZWxfZ3VjX2dndHRfb2Zmc2V0KGd1YywgZ3VjLT5sb2cudm1hKSA+Pgo+Pj4gUEFHRV9TSElGVDsK Pj4+IEBAIC0yOTEsNyArMjc1LDYgQEAgc3RhdGljIHZvaWQgZ3VjX2luaXRfcGFyYW1zKHN0cnVj dCBpbnRlbF9ndWMgKmd1YykKPj4+ICDCoCDCoMKgwqDCoMKgIEJVSUxEX0JVR19PTihzaXplb2Yo Z3VjLT5wYXJhbXMpICE9IEdVQ19DVExfTUFYX0RXT1JEUyAqCj4+PiBzaXplb2YodTMyKSk7Cj4+ PiAgwqAgLcKgwqDCoCBwYXJhbXNbR1VDX0NUTF9DVFhJTkZPXSA9IGd1Y19jdGxfY3R4aW5mb19m bGFncyhndWMpOwo+Pj4gIMKgwqDCoMKgwqAgcGFyYW1zW0dVQ19DVExfTE9HX1BBUkFNU10gPSBn dWNfY3RsX2xvZ19wYXJhbXNfZmxhZ3MoZ3VjKTsKPj4+ICDCoMKgwqDCoMKgIHBhcmFtc1tHVUNf Q1RMX0ZFQVRVUkVdID0gZ3VjX2N0bF9mZWF0dXJlX2ZsYWdzKGd1Yyk7Cj4+PiAgwqDCoMKgwqDC oCBwYXJhbXNbR1VDX0NUTF9ERUJVR10gPSBndWNfY3RsX2RlYnVnX2ZsYWdzKGd1Yyk7Cj4+PiBA QCAtNDAwLDMyICszODMsNjUgQEAgdm9pZCBpbnRlbF9ndWNfZmluaShzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMpCj4+PiAgwqDCoMKgwqDCoCBpbnRlbF91Y19md19maW5pKCZndWMtPmZ3KTsKPj4+ICDC oCB9Cj4+PiAgwqAgK3N0YXRpYyBib29sIGlzX3ZhbGlkX21taW9fYWN0aW9uKHUzMiBhY3Rpb24p Cj4+PiArewo+Pj4gK8KgwqDCoCByZXR1cm4gYWN0aW9uID09IEdVQ19BQ1RJT05fUkVHSVNURVJf Q1RCIHx8Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWN0aW9uID09IEdVQ19BQ1RJT05fREVS RUdJU1RFUl9DVEI7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgZ3VjX3N0YXR1c190b19l cnJubyh1MzIgc3RhdHVzKQo+Pj4gK3sKPj4+ICvCoMKgwqAgc3dpdGNoIChzdGF0dXMpIHsKPj4+ ICvCoMKgwqAgY2FzZSBHVUNfU1RBVFVTX1VOS05PV05fQUNUSU9OOgo+Pj4gK8KgwqDCoMKgwqDC oMKgIHJldHVybiAtRU9QTk9UU1VQUDsKPj4+ICvCoMKgwqAgY2FzZSBHVUNfU1RBVFVTX0lOVkFM SURfUEFSQU1TOgo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlOVkFMOwo+Pj4gK8KgwqDC oCBjYXNlIEdVQ19TVEFUVVNfSU5WQUxJRF9BRERSOgo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy biAtRUZBVUxUOwo+Pj4gK8KgwqDCoCBjYXNlIEdVQ19TVEFUVVNfQ1RYX05PVF9SRUdJU1RFUkVE Ogo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRVNSQ0g7Cj4+PiArwqDCoMKgIGNhc2UgR1VD X1NUQVRVU19DVEJfRlVMTDoKPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT1NQQzsKPj4+ ICvCoMKgwqAgY2FzZSBHVUNfU1RBVFVTX1VOQVVUSE9SSVpFRF9SRVFVRVNUOgo+Pj4gK8KgwqDC oMKgwqDCoMKgIHJldHVybiAtRUFDQ0VTOwo+Pj4gK8KgwqDCoCBjYXNlIEdVQ19TVEFUVVNfR0VO RVJJQ19GQUlMOgo+Pj4gK8KgwqDCoCBkZWZhdWx0Ogo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy biAtRU5YSU87Cj4+PiArwqDCoMKgIH0KPj4+ICt9Cj4+PiArCj4+PiAgwqAgLyoKPj4+ICDCoMKg ICogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBNTUlPIGJhc2VkIGhvc3QgdG8gR3VDIGlu dGVyZmFjZS4KPj4+ICDCoMKgICovCj4+PiAtaW50IGludGVsX2d1Y19zZW5kX21taW8oc3RydWN0 IGludGVsX2d1YyAqZ3VjLCBjb25zdCB1MzIgKmFjdGlvbiwgdTMyCj4+PiBsZW4sCj4+PiAraW50 IGludGVsX2d1Y19zZW5kX21taW8oc3RydWN0IGludGVsX2d1YyAqZ3VjLCBjb25zdCB1MzIgKnJl cXVlc3QsCj4+PiB1MzIgbGVuLAo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiAq cmVzcG9uc2VfYnVmLCB1MzIgcmVzcG9uc2VfYnVmX3NpemUpCj4+PiAgwqAgewo+Pj4gK8KgwqDC oCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGd1Y190b19ndChndWMpLT5pOTE1Owo+ Pj4gIMKgwqDCoMKgwqAgc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlID0gZ3VjX3RvX2d0KGd1 YyktPnVuY29yZTsKPj4+IC3CoMKgwqAgdTMyIHN0YXR1czsKPj4+ICvCoMKgwqAgdTMyIGFjdGlv biA9IEZJRUxEX0dFVChHVUNfTU1JT19SRVFVRVNUX0FDVElPTiwgKnJlcXVlc3QpOwo+Pj4gK8Kg wqDCoCB1MzIgc3ViY29kZSA9IEZJRUxEX0dFVChHVUNfTU1JT19SRVFVRVNUX1NVQkNPREUsICpy ZXF1ZXN0KTsKPj4+ICvCoMKgwqAgdTMyIG1hZ2ljID0gR1VDX01NSU9fTVNHX01BR0lDX0RFRkFV TFQ7Cj4+PiArwqDCoMKgIHUzMiBoZWFkZXI7Cj4+PiAgwqDCoMKgwqDCoCBpbnQgaTsKPj4+ICDC oMKgwqDCoMKgIGludCByZXQ7Cj4+PiAgwqAgwqDCoMKgwqDCoCBHRU1fQlVHX09OKCFsZW4pOwo+ Pj4gIMKgwqDCoMKgwqAgR0VNX0JVR19PTihsZW4gPiBndWMtPnNlbmRfcmVncy5jb3VudCk7Cj4+ PiAgwqAgLcKgwqDCoCAvKiBXZSBleHBlY3Qgb25seSBhY3Rpb24gY29kZSAqLwo+Pj4gLcKgwqDC oCBHRU1fQlVHX09OKCphY3Rpb24gJiB+SU5URUxfR1VDX01TR19DT0RFX01BU0spOwo+Pj4gK8Kg wqDCoCAvKiBXZSBleHBlY3QgdG8gdXNlIE1NSU8gb25seSBmb3Igc3BlY2lhbCBhY3Rpb25zICov Cj4+PiArwqDCoMKgIEdFTV9CVUdfT04oIWlzX3ZhbGlkX21taW9fYWN0aW9uKGFjdGlvbikpOwo+ Pj4gIMKgIC3CoMKgwqAgLyogSWYgQ1QgaXMgYXZhaWxhYmxlLCB3ZSBleHBlY3QgdG8gdXNlIE1N SU8gb25seSBkdXJpbmcKPj4+IGluaXQvZmluaSAqLwo+Pj4gLcKgwqDCoCBHRU1fQlVHX09OKCph Y3Rpb24gIT0KPj4+IElOVEVMX0dVQ19BQ1RJT05fUkVHSVNURVJfQ09NTUFORF9UUkFOU1BPUlRf QlVGRkVSICYmCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqAgKmFjdGlvbiAhPQo+Pj4gSU5URUxf R1VDX0FDVElPTl9ERVJFR0lTVEVSX0NPTU1BTkRfVFJBTlNQT1JUX0JVRkZFUik7Cj4+PiArwqDC oMKgIGhlYWRlciA9IEZJRUxEX1BSRVAoR1VDX01NSU9fTVNHX1RZUEUsIEdVQ19NTUlPX01TR19U WVBFX1JFUVVFU1QpIHwKPj4+ICvCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEdVQ19NTUlPX01T R19NQUdJQywgbWFnaWMpIHwKPj4+ICvCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEdVQ19NTUlP X1JFUVVFU1RfU1VCQ09ERSwgc3ViY29kZSkgfAo+Pj4gK8KgwqDCoMKgwqDCoMKgIEZJRUxEX1BS RVAoR1VDX01NSU9fUkVRVUVTVF9BQ1RJT04sIGFjdGlvbik7Cj4+PiAgwqAgwqDCoMKgwqDCoCBt dXRleF9sb2NrKCZndWMtPnNlbmRfbXV0ZXgpOwo+Pj4gIMKgwqDCoMKgwqAgaW50ZWxfdW5jb3Jl X2ZvcmNld2FrZV9nZXQodW5jb3JlLCBndWMtPnNlbmRfcmVncy5md19kb21haW5zKTsKPj4+ICDC oCAtwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKPj4+IC3CoMKgwqDCoMKgwqDCoCBp bnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBndWNfc2VuZF9yZWcoZ3VjLCBpKSwgYWN0aW9uW2ld KTsKPj4+ICvCoMKgwqAgaW50ZWxfdW5jb3JlX3dyaXRlKHVuY29yZSwgZ3VjX3NlbmRfcmVnKGd1 YywgMCksIGhlYWRlcik7Cj4+PiArwqDCoMKgIGZvciAoaSA9IDE7IGkgPCBsZW47IGkrKykKPj4+ ICvCoMKgwqDCoMKgwqDCoCBpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLCBndWNfc2VuZF9yZWco Z3VjLCBpKSwgcmVxdWVzdFtpXSk7Cj4+PiAgwqAgwqDCoMKgwqDCoCBpbnRlbF91bmNvcmVfcG9z dGluZ19yZWFkKHVuY29yZSwgZ3VjX3NlbmRfcmVnKGd1YywgaSAtIDEpKTsKPj4+ICDCoCBAQCAt NDM3LDE3ICs0NTMsNDUgQEAgaW50IGludGVsX2d1Y19zZW5kX21taW8oc3RydWN0IGludGVsX2d1 YyAqZ3VjLAo+Pj4gY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4sCj4+PiAgwqDCoMKgwqDCoMKg ICovCj4+PiAgwqDCoMKgwqDCoCByZXQgPSBfX2ludGVsX3dhaXRfZm9yX3JlZ2lzdGVyX2Z3KHVu Y29yZSwKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZ3VjX3NlbmRfcmVnKGd1YywgMCksCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgSU5URUxfR1VDX01TR19UWVBFX01BU0ssCj4+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSU5URUxfR1VDX01TR19UWVBFX1JF U1BPTlNFIDw8Cj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgSU5URUxfR1VDX01TR19UWVBFX1NISUZULAo+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDEwLCAxMCwgJnN0YXR1cyk7Cj4+PiAtwqDCoMKgIC8qIElm IEd1QyBleHBsaWNpdGx5IHJldHVybmVkIGFuIGVycm9yLCBjb252ZXJ0IGl0IHRvIC1FSU8gKi8K Pj4+IC3CoMKgwqAgaWYgKCFyZXQgJiYgIUlOVEVMX0dVQ19NU0dfSVNfUkVTUE9OU0VfU1VDQ0VT UyhzdGF0dXMpKQo+Pj4gLcKgwqDCoMKgwqDCoMKgIHJldCA9IC1FSU87Cj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR1VDX01NSU9fTVNHX09SSUdJTiwK Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGSUVMRF9Q UkVQKEdVQ19NTUlPX01TR19PUklHSU4sCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHVUNfTU1JT19NU0dfT1JJR0lOX0dVQyks Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMTAsIDEw LCAmaGVhZGVyKTsKPj4+ICvCoMKgwqAgaWYgKHVubGlrZWx5KHJldCkpCj4+PiArwqDCoMKgwqDC oMKgwqAgZ290byBvdXQ7Cj4+PiAgwqAgLcKgwqDCoCBpZiAocmV0KSB7Cj4+PiAtwqDCoMKgwqDC oMKgwqAgRFJNX0VSUk9SKCJNTUlPOiBHdUMgYWN0aW9uICUjeCBmYWlsZWQgd2l0aCBlcnJvciAl ZCAlI3hcbiIsCj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWN0aW9uWzBdLCByZXQs IHN0YXR1cyk7Cj4+PiArwqDCoMKgIGlmICh1bmxpa2VseShGSUVMRF9HRVQoR1VDX01NSU9fTVNH X01BR0lDLCBoZWFkZXIpICE9IG1hZ2ljKSkgewo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IC1F U1RBTEU7Cj4+PiArwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+PiArwqDCoMKgIH0KPj4gSSB0 aGluayB3ZSBzaG91bGQgbW92ZSB0aGlzIGFmdGVyIHRoZSBjaGVjayBmb3IgYnVzeW5lc3MuIElJ UkMgdGhlCj4+IHByb3RvY29sIHNheXMgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgR3VDIHRvIHN0 b3AgYmVpbmcgYnVzeSBiZWZvcmUKPj4gc2VuZGluZyBtb3JlIG1lc3NhZ2VzLiBUaGF0IHdheSB5 b3UgY2FuIGFsc28gdW5pZnkgdGhpcyB3aXRoIHRoZSBvdGhlcgo+PiBzaW1pbGFyIGNoZWNrIGJl bG93Lgo+IGJ1dCBlYWNoIE1NSU8gbWVzc2FnZSBzaG91bGQgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5 IGFuZCBwYXJ0IG9mIHRoYXQKPiBoYW5kbGluZyBpcyBhIGNoZWNrIG9mIHRoZSAnbWFnaWMnIGZp ZWxkLCBzbyB3ZSBjYW4ndCBza2lwIGl0IGhlcmUKCkkgd2Fzbid0IHN1Z2dlc3RpbmcgdG8gc2tp cCB0aGUgbWFnaWMgY2hlY2ssIGp1c3QgdG8gZG8gaXQgYWZ0ZXIgdGhlIApidXN5bmVzcyBjaGVj ay4gSWYgd2UgZXhpdCB0aGlzIGZ1bmN0aW9uIHdoaWxlIHRoZXJlIGlzIGEgYnVzeSBtZXNzYWdl IAp0aGVyZSBpcyBhIHJpc2sgd2UgY291bGQgc2VuZCBhbm90aGVyIG1lc3NhZ2Ugd2hpbGUgdGhl IEd1QyBpcyBzdGlsbCAKYnVzeSB3aXRoIHRoaXMgbWVzc2FnZSwgd2hpY2ggd291bGQgbGlrZWx5 IGxlYWQgdG8gdW5kZWZpbmVkIGJlaGF2aW9yLiAKTXkgc3VnZ2VzdGlvbiBpcyB0byBkbyBhcyBm b2xsb3c6CgogwqDCoMKgIHdhaXRfZm9yKG1lc3NhZ2UgaXMgcmVzcG9uc2UpOwogwqDCoMKgIGlm IChNU0dfVFlQRSA9PSBCVVNZKQogwqDCoMKgIMKgwqDCoCB3YWl0X2ZvciAoTVNHX1RZUEUgIT0g QlVTWSk7CgogwqDCoMKgIGlmIChNU0dfTUFHSUMgIT0gZXhwZWN0ZWQgbWFnaWMpCiDCoMKgwqAg wqDCoMKgIHJldHVybiBlcnJvcjsKCj4+PiArCj4+PiArwqDCoMKgIGlmIChGSUVMRF9HRVQoR1VD X01NSU9fTVNHX1RZUEUsIGhlYWRlcikgPT0KPj4+IEdVQ19NTUlPX01TR19UWVBFX0JVU1kpIHsK Pj4+ICsjZGVmaW5lIGRvbmUgKHsgaGVhZGVyID0gaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBn dWNfc2VuZF9yZWcoZ3VjLAo+Pj4gMCkpOyBcCj4+PiArwqDCoMKgwqDCoMKgwqAgRklFTERfR0VU KEdVQ19NTUlPX01TR19UWVBFLCBoZWFkZXIpICE9Cj4+PiBHVUNfTU1JT19NU0dfVFlQRV9CVVNZ OyB9KQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldCA9IHdhaXRfZm9yKGRvbmUsIDEwMDApOwo+Pj4g K8KgwqDCoMKgwqDCoMKgIGlmICh1bmxpa2VseShyZXQpKQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZ290byBvdXQ7Cj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHVubGlrZWx5KEZJRUxEX0dF VChHVUNfTU1JT19NU0dfT1JJR0lOLCBoZWFkZXIpICE9Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR1VDX01NSU9fTVNHX09SSUdJTl9HVUMpKSB7Cj4+ IFRoaXMgY2hlY2sgb24gR1VDX01NSU9fTVNHX09SSUdJTiBpcyByZWR1bmRhbnQuIFdlIGFscmVh ZHkgd2FpdGVkIGZvciBpdAo+PiB0byBiZSBHVUNfTU1JT19NU0dfT1JJR0lOX0dVQyBkdXJpbmcg dGhlIHdhaXQgYWJvdmUgYW5kIHdlJ3JlIG5vdAo+PiBzZW5kaW5nIG90aGVyIG1lc3NhZ2UgZnJv bSBpOTE1IHdoaWxlIHdlJ3JlIHdhaXRpbmcgZm9yIHRoaXMgb25lLCBzbwo+PiB0aGF0IGZpZWxk IGNhbid0IGNoYW5nZS4KPiBpbiB0aGUgd2FpdCBhYm92ZSB3ZSBhcmUgd2FpdGluZyBmb3IgbWVz c2FnZSBkaWZmZXJlbnQgdGhhbiBCVVNZIGFuZCB3ZQo+IGV4cGVjdCB0aGF0IHRoaXMgb3RoZXIg bWVzc2FnZSB3aWxsIGJlIGZyb20gdGhlIEd1QyAoYXMgdGhpcyBpcyBwYXJ0IG9mCj4gdGhlIHBy b3RvY29sKSBidXQgd2Ugc2hvdWxkIHN0aWxsIGNoZWNrIHRoYXQgR3VDIGlzIGNvbXBsaWFudAoK SSB0aGluayB0aGlzIGlzIG92ZXJseSBwYXJhbm9pZC4gRXZlbiBpbiB0aGUgdmVyeSB1bmxpa2Vs eSBjYXNlIHRoYXQgdGhlIApHdUMgbWFya2VkIGl0cyBvd24gbWVzc2FnZXMgYXMgY29taW5nIGZy b20gdGhlIGhvc3QgYnkgbWlzdGFrZSwgd2h5IAp3b3VsZCB3ZSBjYXJlPyBXZSBhcmUgYWxyZWFk eSBzdXJlIHRoaXMgbWVzc2FnZSBpcyBjb21pbmcgZnJvbSB0aGUgR3VDLCAKbm8gbWF0dGVyIHdo YXQgdGhlIGJpdCBzYXlzLiBJTU8gaWYgeW91IHdhbnQgdGhpcyBraW5kIG9mIGNvbXBsaWFuY2Ug CmNvdmVyYWdlIGl0IHNob3VsZCBiZSBpbiBhIHRlc3QsIHByZWZlcmFibHkgb24gdGhlIEd1QyBz aWRlIG9mIHRoaW5ncy4KCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSAtRVBST1RP Owo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+PiArwqDCoMKgwqDCoMKg wqAgfQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICh1bmxpa2VseShGSUVMRF9HRVQoR1VDX01NSU9f TVNHX01BR0lDLCBoZWFkZXIpICE9IG1hZ2ljKSkgewo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0ID0gLUVTVEFMRTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+ Pj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4+ICsjdW5kZWYgZG9uZQo+Pj4gK8KgwqDCoCB9Cj4+PiAr Cj4+PiArwqDCoMKgIGlmIChGSUVMRF9HRVQoR1VDX01NSU9fTVNHX1RZUEUsIGhlYWRlcikgPT0K Pj4+IEdVQ19NTUlPX01TR19UWVBFX0VSUk9SKSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgdTMyIHN0 YXR1cyA9IEZJRUxEX0dFVChHVUNfTU1JT19FUlJPUl9TVEFUVVMsIGhlYWRlcik7Cj4+PiArCj4+ PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gZ3VjX3N0YXR1c190b19lcnJubyhzdGF0dXMpOwo+Pj4g K8KgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+Pj4gK8KgwqDCoCB9Cj4+PiArCj4+PiArwqDCoMKg IGlmIChGSUVMRF9HRVQoR1VDX01NSU9fTVNHX1RZUEUsIGhlYWRlcikgIT0KPj4+IEdVQ19NTUlP X01TR19UWVBFX1JFU1BPTlNFKSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gLUVQUk9UTzsK Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBvdXQ7Cj4+PiAgwqDCoMKgwqDCoCB9Cj4+PiAg wqAgQEAgLTQ2MCwxMiArNTA0LDE3IEBAIGludCBpbnRlbF9ndWNfc2VuZF9tbWlvKHN0cnVjdCBp bnRlbF9ndWMgKmd1YywKPj4+IGNvbnN0IHUzMiAqYWN0aW9uLCB1MzIgbGVuLAo+Pj4gIMKgwqDC oMKgwqAgfQo+Pj4gIMKgIMKgwqDCoMKgwqAgLyogVXNlIGRhdGEgZnJvbSB0aGUgR3VDIHJlc3Bv bnNlIGFzIG91ciByZXR1cm4gdmFsdWUgKi8KPj4+IC3CoMKgwqAgcmV0ID0gSU5URUxfR1VDX01T R19UT19EQVRBKHN0YXR1cyk7Cj4+IElOVEVMX0dVQ19NU0dfVE9fREFUQSBpcyBzdGlsbCB1c2Vk IGluIGludGVsX2d1Y19jdC5jLiBFaXRoZXIgc3RpY2sgdG8KPj4gdGhhdCBvciB1cGRhdGUgdGhl IG90aGVyIHVzZS1jYXNlIHRvIHRoZSBuZXcgZGVmaW5lLgo+IHRoaXMgbmV3IGRlZmluZSBpcyBm b3IgTU1JTyBtZXNzYWdlcywgY2hhbmdlcyB0byBDVEIgbWVzc2FnZXMgd2lsbAo+IGZvbGxvdyBz b29uCj4KPj4+ICvCoMKgwqAgcmV0ID0gRklFTERfR0VUKEdVQ19NTUlPX1JFU1BPTlNFX0RBVEEw LCBoZWFkZXIpOwo+Pj4gIMKgIMKgIG91dDoKPj4+ICDCoMKgwqDCoMKgIGludGVsX3VuY29yZV9m b3JjZXdha2VfcHV0KHVuY29yZSwgZ3VjLT5zZW5kX3JlZ3MuZndfZG9tYWlucyk7Cj4+PiAgwqDC oMKgwqDCoCBtdXRleF91bmxvY2soJmd1Yy0+c2VuZF9tdXRleCk7Cj4+PiAgwqAgK8KgwqDCoCBp ZiAodW5saWtlbHkocmV0IDwgMCkpCj4+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2VycigmaTkxNS0+ ZHJtLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIkd1QyBNTUlPIGFjdGlvbiAlIzA2eCBm YWlsZWQgd2l0aCBlcnJvciAlZCAlI3hcbiIsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq cmVxdWVzdCwgcmV0LCBoZWFkZXIpOwo+Pj4gKwo+Pj4gIMKgwqDCoMKgwqAgcmV0dXJuIHJldDsK Pj4+ICDCoCB9Cj4+PiAgwqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Vj L2ludGVsX2d1Y19hYmkuaAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9n dWNfYWJpLmgKPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+PiBpbmRleCAwMDAwMDAwMDAwMDAu Ljk1MDQzNzg4ZTBhZAo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2FiaS5oCj4+PiBAQCAtMCwwICsxLDIxNSBAQAo+Pj4gKy8q IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KPj4+ICsvKgo+Pj4gKyAqIENvcHlyaWdo dCDCqSAyMDIwIEludGVsIENvcnBvcmF0aW9uCj4+PiArICovCj4+PiArCj4+PiArI2lmbmRlZiBf X0lOVEVMX0dVQ19BQklfSF9fCj4+PiArI2RlZmluZSBfX0lOVEVMX0dVQ19BQklfSF9fCj4+PiAr Cj4+PiArLyoqCj4+PiArICogRE9DOiBHdUMgTU1JTyBiYXNlZCBjb21tdW5pY2F0aW9uCj4+PiAr ICoKPj4+ICsgKiBUaGUgTU1JTyBiYXNlZCBjb21tdW5pY2F0aW9uIGJldHdlZW4gSG9zdCBhbmQg R3VDIHJlbGllcyBvbiBzcGVjaWFsCj4+PiArICogaGFyZHdhcmUgcmVnaXN0ZXJzIHdoaWNoIGZv cm1hdCBjb3VsZCBiZSBkZWZpbmVkIGJ5IHRoZSBzb2Z0d2FyZQo+Pj4gKyAqIChzbyBjYWxsZWQg c2NyYXRjaCByZWdpc3RlcnMpLgo+Pj4gKyAqCj4+PiArICogRWFjaCBNTUlPIGJhc2VkIG1lc3Nh Z2UsIGJvdGggSG9zdCB0byBHdUMgKEgyRykgYW5kIEd1QyB0byBIb3N0IChHMkgpCj4+PiArICog bWVzc2FnZXMsIHdoaWNoIG1heGltdW0gbGVuZ3RoIGRlcGVuZHMgb24gbnVtYmVyIG9mIGF2YWls YWJsZSBzY3JhdGNoCj4+PiArICogcmVnaXN0ZXJzLCBpcyBkaXJlY3RseSB3cml0dGVuIGludG8g dGhvc2Ugc2NyYXRjaCByZWdpc3RlcnMuCj4+PiArICoKPj4+ICsgKiBGb3IgR2VuOSssIHRoZXJl IGFyZSAxNiBzb2Z0d2FyZSBzY3JhdGNoIHJlZ2lzdGVycyAweEMxODAtMHhDMUI4LAo+Pj4gKyAq IGJ1dCBubyBIMkcgY29tbWFuZCB0YWtlcyBtb3JlIHRoYW4gOCBwYXJhbWV0ZXJzIGFuZCB0aGUg R3VDIGZpcm13YXJlCj4+PiArICogaXRzZWxmIHVzZXMgYW4gOC1lbGVtZW50IGFycmF5IHRvIHN0 b3JlIHRoZSBIMkcgbWVzc2FnZS4KPj4+ICsgKgo+Pj4gKyAqIEZvciBHZW4xMSssIHRoZXJlIGFy ZSBhZGRpdGlvbmFsIDQgcmVnaXN0ZXJzIDB4MTkwMjQwLTB4MTkwMjRDLCB3aGljaAo+Pj4gKyAq IGFyZSwgcmVnYXJkbGVzcyBvbiBsb3dlciBjb3VudCwgcHJlZmZlcmVkIG92ZXIgbGVnYWN5IG9u ZXMuCj4+PiArICoKPj4+ICsgKiBUaGUgTU1JTyBiYXNlZCBjb21tdW5pY2F0aW9uIGlzIG1haW5s eSB1c2VkIGR1cmluZyBkcml2ZXIKPj4+IGluaXRpYWxpemF0aW9uCj4+PiArICogcGhhc2UgdG8g c2V0dXAgdGhlIENUQiBiYXNlZCBjb21tdW5pY2F0aW9uIHRoYXQgd2lsbCBiZSB1c2VkCj4+PiBh ZnRlcndhcmRzLgo+Pj4gKyAqCj4+PiArICogRGV0YWlscyBvZiB0aGUgbWVzc2FnZXMgZm9ybWF0 cyBkZXBlbmQgb24gR3VDIGZpcm13YXJlIHZlcnNpb24KPj4+IGJlaW5nIHVzZWQKPj4+ICsgKiBi eSB0aGUgaG9zdCBkcml2ZXIuIERvY3VtZW50ZWQgaGVyZSBtZXNzYWdlcyBhcmUgZm9yIEd1QyA0 NS4wIGFuZAo+Pj4gbmV3ZXIuCj4+PiArICovCj4+PiArCj4+PiArI2RlZmluZSBHVUNfTUFYX01N SU9fTVNHX0xFTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOAo+PiBBcmUgd2Ugb2sgd2l0aCBub3Qg aGF2aW5nIGFuIElOVEVMXyBwcmVmaXggdG8gYWxsIHRoZSBkZWZpbmVzPyBJJ20gbm90Cj4+IGNv bXBsYWluaW5nLCB3ZSB1c3VhbGx5IHN0aWNrIHdpdGggdGhhdCBwcmVmaXggYnV0IEknbSBub3Qg c3VyZSBpZiBpdCBpcwo+PiBhbiBpcm9uIHJ1bGUgb3Igbm90Lgo+IGV4aXN0aW5nIGRlZmluZXMg aW4gaW50ZWxfZ3VjX2Z3aWYuaCBoYXZlICJHVUMiIGFuZCAiSU5URUxfR1VDIiAob3IKPiBub25l KSBwcmVmaXhlcyBhbmQgYXQgdGhlIHNhbWUgdGltZSBhbG1vc3QgYWxsIHN0cnVjdHMgaGF2ZSAi Z3VjIgo+IHByZWZpeCwgc28gdGhlIGJlc3Qgb3B0aW9uIElNSE8gaXMgdG8gc3RpY2sgd2l0aCBq dXN0IGd1Yy9HVUMgcHJlZml4LgoKT2sgZm9yIG1lLCBidXQgd2UnbGwgbmVlZCB0byBtaWdyYXRl IHRoZSBvdGhlciBkZWZpbmVzIGFzIHdlbGwgc28gd2UncmUgCmNvbnNpc3RlbnQuCgo+Pj4gKwo+ Pj4gKy8qKgo+Pj4gKyAqIERPQzogR3VDIE1NSU8gbWVzc2FnZSBmb3JtYXQKPj4+ICsgKgo+Pj4g KyAqIEJpdHMgb2YgdGhlIGZpcnN0IHNjcmF0Y2ggcmVnaXN0ZXIgYXJlIHRyZWF0ZWQgYXMgYSBt ZXNzYWdlIGhlYWRlciwKPj4+ICsgKiBhbmQgb3RoZXIgcmVnaXN0ZXJzIHZhbHVlcyBhcmUgdXNl ZCB0byBob2xkIG1lc3NhZ2UgcGF5bG9hZCAoZGF0YSk6Ogo+Pj4gKyAqCj4+PiArICrCoMKgwqDC oMKgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Kwo+Pj4gKyAqwqDCoMKgwqDCoCB8wqAgU0NSQVRDSMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfAo+Pj4gKyAqwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+ICsgKsKgwqDCoMKgwqAgfCAwIHwgMzE6 MjggfCBtZXNzYWdlIE9SSUdJTi9UWVBFwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoCB8IDI3OjI0IHwgbWVzc2FnZSBN QUdJQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwKPj4+ICsgKsKgwqDCoMKgwqAgfMKgwqAgfMKgIDIzOjAgfCBtZXNzYWdlIERBVEEwIChk ZXBlbmRzIG9uIFRZUEUpwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqDCoMKgwqDCoCAr LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK Pj4+ICsgKsKgwqDCoMKgwqAgfCAxIHzCoCAzMTowIHwgbWVzc2FnZSBEQVRBMSAoZGVwZW5kcyBv biBUWVBFKcKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4+ICsgKsKgwqDCoMKgwqAgfC4uLnzCoMKg wqDCoMKgwqAgfCBtZXNzYWdlIERBVEEyIChkZXBlbmRzIG9uIFRZUEUpwqDCoMKgwqDCoMKgwqDC oMKgwqAgfAo+Pj4gKyAqwqDCoMKgwqDCoCB8IG4gfMKgwqDCoMKgwqDCoCB8IG1lc3NhZ2UgREFU QTMgKGRlcGVuZHMgb24gVFlQRSnCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+PiArICrCoMKgwqDC oMKgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Kwo+Pj4gKyAqCj4+PiArICogV2hlcmU6Cj4+PiArICrCoCAtICoqVFlQRSoqIGlzIGEgNGIg bWVzc2FnZSB0eXBlIGlkZW50aWZpZXIuCj4+PiArICrCoCAtICoqTUFHSUMqKiBpcyBhIDRiIG1l c3NhZ2Ugc2VxdWVuY2UgbnVtYmVyLgo+Pj4gKyAqwqDCoMKgIFRoZSBzYW1lIHNlcXVlbmNlIG51 bWJlciBtdXN0IGJlIGluY2x1ZGVkIGluIGFsbCByZWxhdGVkIG1lc3NhZ2VzLgo+Pj4gKyAqwqDC oMKgIFRoaXMgZmllbGQgaXMgdXNlZCBmb3IgdHJhY2tpbmcgYW5kIGRlYnVnIHB1cnBvc2VzLgo+ PiBJIGRvbid0IHRoaW5rICJtYWdpYyIgaXMgYSBjbGVhciBlbm91Z2ggbmFtZSBmb3IgdGhlIHJv bGUgb2YgdGhlIGZpZWxkLgo+PiAiUmVxdWVzdCBpZCIgb3Igc29tZXRoaW5nIGxpa2UgdGhhdCB3 b3VsZCBiZSBtb3JlIGFwcHJvcHJpYXRlIElNTy4KPiB3ZSBhcmUgZm9sbG93aW5nIG5hbWluZyBm cm9tIEd1QyBzcGVjCj4KPj4+ICsgKsKgIC0gKipEQVRBMC4uMyoqIGJpdHMgcmVwcmVzZW50cyBt ZXNzYWdlIHBheWxvYWQuCj4+PiArICrCoMKgwqAgRGVmaW5pdGlvbnMgb2YgdGhlc2UgYml0cyBk ZXBlbmRzIG9uIG1lc3NhZ2UgKipUWVBFKiouCj4+PiArICoKPj4+ICsgKiBUaGUgTVNCIG9mIHRo ZSBoZWFkZXIgYW5kICoqVFlQRSoqIGluZGljYXRlcyBvcmlnaW4gb2YgdGhlIG1lc3NhZ2U6Cj4+ PiArICrCoCAtIDAgLSBtZXNzYWdlIGZyb20gdGhlIEhvc3QKPj4+ICsgKsKgIC0gMSAtIG1lc3Nh Z2UgZnJvbSB0aGUgR3VDCj4+PiArICoKPj4+ICsgKiBDdXJyZW50bHkgc3VwcG9ydGVkIG1lc3Nh Z2UgdHlwZXMgYXJlOgo+Pj4gKyAqwqAgLSAweDAgLSAqKlJFUVVFU1QqKiAtIHJlcHJlc2VudHMg SG9zdCByZXF1ZXN0IG1lc3NhZ2UgdG8gdGhlIEd1Qwo+Pj4gKyAqwqAgLSAweEYgLSAqKlNVQ0NF U1MgUkVTUE9OU0UqKiAtIEd1QyByZXBseSBmb3IgdGhlIGVhcmxpZXIgcmVxdWVzdAo+Pj4gKyAq wqAgLSAweEUgLSAqKkVSUk9SIFJFU1BPTlNFKiogLSBHdUMgZmFpbHVyZSByZXBseSBmb3IgdGhl IGVhcmxpZXIKPj4+IHJlcXVlc3QKPj4+ICsgKsKgIC0gMHhCIC0gKipCVVNZKiogLSBHdUMgd2ls bCBiZSBwcm9jZXNzaW5nIHJlcXVlc3QgZm9yIHRoZSBsb25nZXIKPj4+IHRpbWUKPj4+ICsgKi8K Pj4+ICsKPj4+ICsjZGVmaW5lIEdVQ19NTUlPX01TR19PUklHSU7CoMKgwqDCoMKgwqDCoMKgwqDC oMKgICgweDEgPDwgMzEpCj4+PiArI2RlZmluZcKgwqAgR1VDX01NSU9fTVNHX09SSUdJTl9IT1NU wqDCoMKgwqDCoMKgwqAgMHUKPj4+ICsjZGVmaW5lwqDCoCBHVUNfTU1JT19NU0dfT1JJR0lOX0dV Q8KgwqDCoMKgwqDCoMKgIDF1Cj4+PiArCj4+PiArI2RlZmluZSBHVUNfTU1JT19NU0dfVFlQRcKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKDB4RiA8PCAyOCkKPj4+ICsjZGVmaW5lwqDCoCBHVUNfTU1J T19NU0dfVFlQRV9SRVFVRVNUwqDCoMKgwqDCoMKgwqAgMHgwCj4+PiArI2RlZmluZcKgwqAgR1VD X01NSU9fTVNHX1RZUEVfUkVTUE9OU0XCoMKgwqDCoMKgwqDCoCAweEYKPj4+ICsjZGVmaW5lwqDC oCBHVUNfTU1JT19NU0dfVFlQRV9FUlJPUsKgwqDCoMKgwqDCoMKgIDB4RQo+Pj4gKyNkZWZpbmXC oMKgIEdVQ19NTUlPX01TR19UWVBFX0JVU1nCoMKgwqDCoMKgwqDCoCAweEIKPj4+ICsKPj4+ICsj ZGVmaW5lIEdVQ19NTUlPX01TR19NQUdJQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDB4RiA8PCAy NCkKPj4+ICsjZGVmaW5lwqDCoCBHVUNfTU1JT19NU0dfTUFHSUNfREVGQVVMVMKgwqDCoMKgwqDC oMKgIDB1Cj4+PiArCj4+PiArLyoqCj4+PiArICogRE9DOiBHdUMgTU1JTyBIMkcgUkVRVUVTVAo+ Pj4gKyAqCj4+PiArICogVGhlIE1NSU8gSDJHIFJFUVVFU1QgbWVzc2FnZSBpcyB1c2VkIGJ5IHRo ZSBIb3N0IHRvIHJlcXVlc3Qgc29tZQo+Pj4gYWN0aW9uCj4+PiArICogdG8gYmUgcGVyZm9ybWVk IGJ5IHRoZSBHdUM6Ogo+Pj4gKyAqCj4+PiArICrCoMKgwqDCoMKgICs9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwo+Pj4gKyAqwqDCoMKgwqDC oCB8wqAgU0NSQVRDSMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqDC oMKgwqDCoCArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSsKPj4+ICsgKsKgwqDCoMKgwqAgfCAwIHwgMzE6MjggfCBtZXNzYWdlIFRZUEUgPSAw eDAgPSBSRVFVRVNUwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqDCoMKgwqDC oCB8wqDCoCB8IDI3OjI0IHwgbWVzc2FnZSBNQUdJQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4+ICsgKsKgwqDCoMKgwqAgfMKgwqAg fCAyMzoxNiB8IHJlcXVlc3QgU1VCQ09ERSAoZGVwZW5kcyBvbiBBQ1RJT04pwqDCoMKgwqDCoMKg IHwKPj4+ICsgKsKgwqDCoMKgwqAgfMKgwqAgfMKgIDE1OjAgfCByZXF1ZXN0IEFDVElPTiBjb2Rl wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqDC oMKgwqDCoCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSsKPj4+ICsgKsKgwqDCoMKgwqAgfCAxIHzCoCAzMTowIHwgcmVxdWVzdCBEQVRBMSAo ZGVwZW5kcyBvbiBBQ1RJT04vU1VCQ09ERSkgfAo+Pj4gKyAqwqDCoMKgwqDCoCB8Li4ufMKgwqDC oMKgwqDCoCB8IHJlcXVlc3QgREFUQTIgKGRlcGVuZHMgb24gQUNUSU9OL1NVQkNPREUpIHwKPj4+ ICsgKsKgwqDCoMKgwqAgfCBuIHzCoCAzMTowIHwgcmVxdWVzdCBEQVRBMyAoZGVwZW5kcyBvbiBB Q1RJT04vU1VCQ09ERSkgfAo+Pj4gKyAqwqDCoMKgwqDCoCArPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKPj4+ICsgKgo+Pj4gKyAqIFdoZXJl Ogo+Pj4gKyAqwqAgLSAqKlRZUEUqKiBtdXN0IGJlIHNldCB0byB2YWx1ZSAweDAuCj4+PiArICrC oCAtICoqTUFHSUMqKiBtZXNzYWdlIHNlcXVlbmNlIG51bWJlciBpcyBnZW5lcmF0ZWQgYnkgdGhl IGhvc3QuCj4+PiArICrCoCAtICoqQUNUSU9OKiogcmVwcmVzZW50cyAxNmIgcmVxdWVzdCBhY3Rp b24gY29kZSB0aGF0IGRlZmluZXMgYm90aAo+Pj4gKyAqwqDCoMKgIHB1cnBvc2Ugb2YgdGhlIHJl cXVlc3QgYW5kIGZvcm1hdCBvZiB0aGUgcGFzc2VkIHBheWxvYWQgZGF0YS4KPj4+ICsgKsKgwqDC oCBMaXN0IG9mIHN1cHBvcnRlZCBjb2RlcyBkZXBlbmRzIG9uIEd1QyB2ZXJzaW9uIGFuZCBwbGFm b3JtLgo+Pj4gKyAqwqDCoMKgIEFjdGlvbiBjb2RlIGNhbid0IGJlIHplcm8uCj4+PiArICrCoCAt ICoqU1VCQ09ERSoqIGlzIG9wdGlvbmFsIDhiIGRhdGEgcmVsYXRlZCB0byB0aGUgKipBQ1RJT04q Ki4KPj4+ICsgKsKgwqDCoCBNQlogaWYgbm90IGV4cGxpY2l0bHkgZGVmaW5lZCBieSBnaXZlbiAq KkFDVElPTioqLgo+Pj4gKyAqwqAgLSAqKkRBVEExLi4zKiogYXJlIG9wdGlvbmFsIDMyYiBwYXls b2FkIGR3b3JkcyByZWxhdGVkIHRvCj4+PiAqKkFDVElPTioqLgo+Pj4gKyAqwqDCoMKgIEZvcm1h dCBvZiBlYWNoIGR3b3JkIGlzIGRlZmluZWQgYnkgc3BlY2lmaWMgKipBQ1RJT04qKi4KPj4+ICsg Ki8KPj4+ICsKPj4+ICsjZGVmaW5lIEdVQ19NTUlPX1JFUVVFU1RfU1VCQ09ERcKgwqDCoMKgwqDC oMKgICgweEZGIDw8IDE2KQo+Pj4gKyNkZWZpbmUgR1VDX01NSU9fUkVRVUVTVF9BQ1RJT07CoMKg wqDCoMKgwqDCoMKgwqDCoMKgICgweEZGRkYgPDwgMCkKPj4+ICsjZGVmaW5lwqDCoCBHVUNfQUNU SU9OX0lOVkFMSUTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDAwMAo+Pj4gKyNkZWZpbmXCoMKg IEdVQ19BQ1RJT05fUkVHSVNURVJfQ1RCwqDCoMKgwqDCoMKgwqAgMHg0NTA1Cj4+PiArI2RlZmlu ZcKgwqAgR1VDX0FDVElPTl9ERVJFR0lTVEVSX0NUQsKgwqDCoMKgwqDCoMKgIDB4NDUwNgo+PiBU aGVzZSBhcmUgbm93IGRlZmluZWQgdHdpY2UgKG9uY2UgaGVyZSBhbmQgb25jZSBpbiB0aGUgZW51 bSkuIFdlIHNob3VsZAo+PiBwaWNrIG9uZSBmb3IgY29uc2lzdGVuY3kuCj4gd2UgY2FuIGRyb3Ag b2xkIG9uZXMgZnJvbSBpbnRlbF9ndWNfZndpZi5oCj4KPj4+ICsKPj4+ICsvKioKPj4+ICsgKiBE T0M6IEd1QyBNTUlPIEcySCBTVUNDRVNTIFJFU1BPTlNFCj4+PiArICoKPj4+ICsgKiBUaGUgTU1J TyBHMkggU1VDQ0VTUyBSRVNQT05TRSBtZXNzYWdlIGlzIHVzZWQgYnkgdGhlIEd1QyB0byByZXBs eSB0bwo+Pj4gKyAqIHRoZSBlYXJsaWVyIEgyRyByZXF1ZXN0IG1lc3NhZ2UuIFRoaXMgbWVzc2Fn ZSBpcyB1c2VkIGlmIG5vIGVycm9ycwo+Pj4gKyAqIHdlcmUgZW5jb3VudGVyZWQgYnkgdGhlIEd1 QyBkdXJpbmcgcHJvY2Vzc2luZyBvZiB0aGUgcmVxdWVzdDo6Cj4+PiArICoKPj4+ICsgKsKgwqDC oMKgwqAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0rCj4+PiArICrCoMKgwqDCoMKgIHzCoCBTQ1JBVENIwqAgfMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8Cj4+PiArICrCoMKgwqDCoMKgICs9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwo+Pj4gKyAqwqDCoMKgwqDCoCB8IDAgfCAz MToyOCB8IG1lc3NhZ2UgVFlQRSA9IDB4RiA9IFNVQ0NFU1MgUkVTUE9OU0XCoMKgwqDCoCB8Cj4+ PiArICrCoMKgwqDCoMKgIHzCoMKgIHwgMjc6MjQgfCBtZXNzYWdlIE1BR0lDwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqDC oMKgwqDCoCB8wqDCoCB8wqAgMjM6MCB8IHJlc3BvbnNlIERBVEEwIChkZXBlbmRzIG9uIEFDVElP Ti9TVUJDT0RFKXwKPj4+ICsgKsKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+PiArICrCoMKgwqDCoMKgIHwgMSB8wqAg MzE6MCB8IHJlc3BvbnNlIERBVEExIChkZXBlbmRzIG9uIEFDVElPTi9TVUJDT0RFKXwKPj4+ICsg KsKgwqDCoMKgwqAgfC4uLnzCoMKgwqDCoMKgwqAgfCByZXNwb25zZSBEQVRBMiAoZGVwZW5kcyBv biBBQ1RJT04vU1VCQ09ERSl8Cj4+PiArICrCoMKgwqDCoMKgIHwgbiB8wqAgMzE6MCB8IHJlc3Bv bnNlIERBVEEzIChkZXBlbmRzIG9uIEFDVElPTi9TVUJDT0RFKXwKPj4+ICsgKsKgwqDCoMKgwqAg Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0r Cj4+PiArICoKPj4+ICsgKiBXaGVyZToKPj4+ICsgKsKgIC0gKipUWVBFKiogbXVzdCBiZSBzZXQg dG8gdmFsdWUgMHhGLgo+Pj4gKyAqwqAgLSAqKk1BR0lDKiogbXVzdCBtYXRjaCB2YWx1ZSB1c2Vk IGJ5IHRoZSBob3N0IGluICoqUkVRVUVTVCoqCj4+PiBtZXNzYWdlLgo+Pj4gKyAqwqAgLSAqKkRB VEEqKiBpcyBvcHRpb25hbCBwYXlsb2FkIGRhdGEgcmVsYXRlZCB0byAqKkFDVElPTioqLgo+Pj4g KyAqwqDCoMKgIEZvcm1hdCBpcyBkZWZpbmVkIGJ5IGVhY2ggKipBQ1RJT04qKiBzZXBhcmF0ZWx5 Lgo+Pj4gKyAqLwo+Pj4gKwo+Pj4gKyNkZWZpbmUgR1VDX01NSU9fUkVTUE9OU0VfREFUQTDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICgweEZGRkZGRiA8PCAwKQo+Pj4gKwo+Pj4gKy8qKgo+Pj4gKyAq IERPQzogR3VDIE1NSU8gRzJIIEVSUk9SIFJFU1BPTlNFCj4+PiArICoKPj4+ICsgKiBUaGUgTU1J TyBHMkggRVJST1IgUkVTUE9OU0UgbWVzc2FnZSBpcyB1c2VkIGJ5IHRoZSBHdUMgdG8gcmVwbHkg dG8KPj4+ICsgKiB0aGUgZWFybGllciBIMkcgcmVxdWVzdCBtZXNzYWdlLiBUaGlzIG1lc3NhZ2Ug aXMgdXNlZCBpZiBzb21lIGVycm9ycwo+Pj4gKyAqIHdlcmUgZW5jb3VudGVyZWQgYnkgdGhlIEd1 QyBkdXJpbmcgcHJvY2Vzc2luZyBvZiB0aGUgcmVxdWVzdDo6Cj4+PiArICoKPj4+ICsgKsKgwqDC oMKgwqAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0rCj4+PiArICrCoMKgwqDCoMKgIHzCoCBTQ1JBVENIwqAgfMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8Cj4+PiArICrCoMKgwqDCoMKgICs9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwo+Pj4gKyAqwqDCoMKgwqDCoCB8IDAgfCAz MToyOCB8IG1lc3NhZ2UgVFlQRSA9IDB4RSA9IEVSUk9SIFJFU1BPTlNFwqDCoMKgwqDCoMKgIHwK Pj4+ICsgKsKgwqDCoMKgwqAgfMKgwqAgfCAyNzoyNCB8IG1lc3NhZ2UgTUFHSUPCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+PiArICrC oMKgwqDCoMKgIHzCoMKgIHwgMjM6MTYgfCByZXNlcnZlZCBNQlrCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4+ICsgKsKgwqDCoMKg wqAgfMKgwqAgfMKgIDE1OjAgfCByZXNwb25zZSBTVEFUVVMgZmFpbHVyZSBjb2RlwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+ICsgKsKgwqDCoMKgwqAg fCAxIHzCoCAzMTowIHwgcmVzZXJ2ZWQgTUJawqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+PiArICrCoMKgwqDCoMKgIHwuLi58wqDC oMKgwqDCoMKgIHwgcmVzZXJ2ZWQgTUJawqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+PiArICrCoMKgwqDCoMKgIHwgbiB8wqAgMzE6 MCB8IHJlc2VydmVkIE1CWsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqDCoMKgwqDCoCArPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKPj4+ICsgKgo+Pj4gKyAqIFdo ZXJlOgo+Pj4gKyAqwqAgLSAqKlRZUEUqKiBtdXN0IGJlIHNldCB0byB2YWx1ZSAweEUuCj4+PiAr ICrCoCAtICoqTUFHSUMqKiBtdXN0IG1hdGNoIHZhbHVlIHVzZWQgYnkgdGhlIGhvc3QgaW4gKipS RVFVRVNUKioKPj4+IG1lc3NhZ2UuCj4+PiArICrCoCAtICoqU1RBVFVTKiogcmVwcmVzZW50cyBu b24temVybyBmYWlsdXJlIGNvZGUuCj4+PiArICovCj4+PiArCj4+PiArI2RlZmluZSBHVUNfTU1J T19FUlJPUl9TVEFUVVPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgweEZGRkYgPDwgMCkKPj4+ICsj ZGVmaW5lwqDCoCBHVUNfU1RBVFVTX1VOS05PV05fQUNUSU9OwqDCoMKgwqDCoMKgwqAgMHgzMAo+ Pj4gKyNkZWZpbmXCoMKgIEdVQ19TVEFUVVNfSU5WQUxJRF9QQVJBTVPCoMKgwqDCoMKgwqDCoCAw eDYwCj4+PiArI2RlZmluZcKgwqAgR1VDX1NUQVRVU19JTlZBTElEX0FERFLCoMKgwqDCoMKgwqDC oCAweDgwCj4+PiArI2RlZmluZcKgwqAgR1VDX1NUQVRVU19DVFhfTk9UX1JFR0lTVEVSRUTCoMKg wqDCoMKgwqDCoCAweDEwMAo+Pj4gKyNkZWZpbmXCoMKgIEdVQ19TVEFUVVNfTk9fTE9DQUxfTUVN T1JZwqDCoMKgwqDCoMKgwqAgMHgyMDAKPj4+ICsjZGVmaW5lwqDCoCBHVUNfU1RBVFVTX05PX1ZJ UlRVQUxJWkFUSU9OwqDCoMKgwqDCoMKgwqAgMHgzMDAKPj4+ICsjZGVmaW5lwqDCoCBHVUNfU1RB VFVTX0NUQl9GVUxMwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDMwMQo+Pj4gKyNkZWZpbmXCoMKg IEdVQ19TVEFUVVNfVU5BVVRIT1JJWkVEX1JFUVVFU1TCoMKgwqAgMHgzMDIKPj4+ICsjZGVmaW5l wqDCoCBHVUNfU1RBVFVTX0dFTkVSSUNfRkFJTMKgwqDCoMKgwqDCoMKgIDB4RjAwMAo+Pj4gKwo+ Pj4gKy8qKgo+Pj4gKyAqIERPQzogTU1JTyBHMkggQlVTWSBSRVNQT05TRQo+Pj4gKyAqCj4+PiAr ICogVGhlIE1NSU8gRzJIIEJVU1kgUkVTUE9OU0UgbWVzc2FnZSBpcyB1c2VkIGJ5IHRoZSBHdUMg dG8gcmVwbHkgdG8KPj4+ICsgKiB0aGUgZWFybGllciBIMkcgcmVxdWVzdCBtZXNzYWdlLiBUaGlz IG1lc3NhZ2UgaXMgdXNlZCBpZiBwcm9jZXNzaW5nCj4+PiArICogb2YgdGhlIHJlcXVlc3Qgd2ls bCB0YWtlIGxvbmdlciB0aW1lIGFuZCBmaW5hbCBTVUNDRVNTL0VSUk9SIHJlc3BvbnNlCj4+PiAr ICogbWVzc2FnZSB3aWxsIGJlIGRlbGl2ZXJlZCBsYXRlcjo6Cj4+PiArICoKPj4+ICsgKsKgwqDC oMKgwqAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0rCj4+PiArICrCoMKgwqDCoMKgIHzCoCBTQ1JBVENIwqAgfMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8Cj4+PiArICrCoMKgwqDCoMKgICs9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kwo+Pj4gKyAqwqDCoMKgwqDCoCB8IDAgfCAz MToyOCB8IG1lc3NhZ2UgVFlQRSA9IDB4QiA9IEJVU1kgUkVTUE9OU0XCoMKgwqDCoMKgwqDCoCB8 Cj4+PiArICrCoMKgwqDCoMKgIHzCoMKgIHwgMjc6MjQgfCBtZXNzYWdlIE1BR0lDwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAq wqDCoMKgwqDCoCB8wqDCoCB8wqAgMjM6MCB8IHJlc2VydmVkIE1CWsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqDCoMKg wqDCoCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsKPj4+ICsgKsKgwqDCoMKgwqAgfCAxIHzCoCAzMTowIHwgcmVzZXJ2ZWQgTUJawqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+ PiArICrCoMKgwqDCoMKgIHwuLi58wqDCoMKgwqDCoMKgIHwgcmVzZXJ2ZWQgTUJawqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+PiAr ICrCoMKgwqDCoMKgIHwgbiB8wqAgMzE6MCB8IHJlc2VydmVkIE1CWsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqDCoMKg wqDCoCArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PSsKPj4+ICsgKgo+Pj4gKyAqIFdoZXJlOgo+Pj4gKyAqwqAgLSAqKlRZUEUqKiBtdXN0IGJl IHNldCB0byB2YWx1ZSAweEIuCj4+PiArICrCoCAtICoqTUFHSUMqKiBtdXN0IG1hdGNoIHZhbHVl IHVzZWQgYnkgdGhlIGhvc3QgaW4gKipSRVFVRVNUKioKPj4+IG1lc3NhZ2UuCj4+PiArICrCoCAt IGFsbCBvdGhlciBiaXRzIGFyZSByZXNlcnZlZCBhcyBNQlouCj4+PiArICovCj4+PiArCj4+PiAr I2VuZGlmIC8qIF9fSU5URUxfR1VDX0FCSV9IX18gKi8KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfYWRzLmMKPj4+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Fkcy5jCj4+PiBpbmRleCBkNDQwNjEwMzNmMjMuLmU2NmNi ZjFiZTMyMCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Y19hZHMuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3Vj X2Fkcy5jCj4+PiBAQCAtMTAsMTEgKzEwLDUyIEBACj4+PiAgwqAgwqAgLyoKPj4+ICDCoMKgICog VGhlIEFkZGl0aW9uYWwgRGF0YSBTdHJ1Y3QgKEFEUykgaGFzIHBvaW50ZXJzIGZvciBkaWZmZXJl bnQKPj4+IGJ1ZmZlcnMgdXNlZCBieQo+Pj4gLSAqIHRoZSBHdUMuIE9uZSBzaW5nbGUgZ2VtIG9i amVjdCBjb250YWlucyB0aGUgQURTIHN0cnVjdCBpdHNlbGYKPj4+IChndWNfYWRzKSwgdGhlCj4+ PiAtICogc2NoZWR1bGluZyBwb2xpY2llcyAoZ3VjX3BvbGljaWVzKSwgYSBzdHJ1Y3R1cmUgZGVz Y3JpYmluZyBhCj4+PiBjb2xsZWN0aW9uIG9mCj4+PiAtICogcmVnaXN0ZXIgc2V0cyAoZ3VjX21t aW9fcmVnX3N0YXRlKSBhbmQgc29tZSBleHRyYSBwYWdlcyBmb3IgdGhlCj4+PiBHdUMgdG8gc2F2 ZQo+Pj4gLSAqIGl0cyBpbnRlcm5hbCBzdGF0ZSBmb3Igc2xlZXAuCj4+PiArICogdGhlIEd1Qy4g T25lIHNpbmdsZSBnZW0gb2JqZWN0IGNvbnRhaW5zIHRoZSBBRFMgc3RydWN0IGl0c2VsZgo+Pj4g KGd1Y19hZHMpIGFuZAo+Pj4gKyAqIGFsbCB0aGUgZXh0cmEgYnVmZmVycyBpbmRpcmVjdGx5IGxp bmtlZCB2aWEgdGhlIEFEUyBzdHJ1Y3QncyBlbnRpcmVzLgo+Pj4gKyAqCj4+PiArICogTGF5b3V0 IG9mIHRoZSBBRFMgYmxvYiBhbGxvY2F0ZWQgZm9yIHRoZSBHdUM6Cj4+PiArICoKPj4+ICsgKsKg wqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPD09IGJh c2UKPj4+ICsgKsKgwqDCoMKgwqAgfCBndWNfYWRzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4+ICsgKsKgwqDCoMKgwqAgKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+ICsgKsKgwqDCoMKgwqAg fCBndWNfcG9saWNpZXPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB8Cj4+PiArICrCoMKgwqDCoMKgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rCj4+PiArICrCoMKgwqDCoMKgIHwgZ3VjX2d0X3N5c3RlbV9pbmZvwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqDCoMKgwqDCoCArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4gKyAqwqDCoMKgwqDCoCB8 IGd1Y19jbGllbnRzX2luZm/CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfAo+Pj4gKyAqwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKwo+Pj4gKyAqwqDCoMKgwqDCoCB8IGd1Y19jdF9wb29sX2VudHJ5W3NpemVdwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+PiArICrCoMKgwqDCoMKgICstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+PiArICrCoMKgwqDCoMKgIHwgcGFkZGluZ8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8Cj4+PiArICrCoMKgwqDCoMKgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rIDw9PSA0SyBhbGlnbmVkCj4+PiArICrCoMKgwqDCoMKgIHwgcHJpdmF0ZSBkYXRhwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAq wqDCoMKgwqDCoCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4g KyAqwqDCoMKgwqDCoCB8IHBhZGRpbmfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gKyAqwqDCoMKgwqDCoCArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8PT0gNEsgYWxpZ25lZAo+Pj4gIMKgwqAg Ki8KPj4gSSB0aGluayBpdCB3ZSBjb3VsZCBleHBhbmQgdGhlIGNvbW1lbnQgKG9yIGFkZCBhIG5l dyBvbmUpIHRvIG1ha2UgY2xlYXIKPj4gdGhhdCB0aGUgcHJpdmF0ZSBkYXRhIGlzIG5vdCBpbmNs dWRlZCBpbiB0aGUgX19ndWNfYWRzX2Jsb2IgdG8ga2VlcAo+PiB0aGluZ3Mgc2ltcGxlIHNpbmNl IGl0IGlzIHZhcmlhYmxlIGluIHNpemUsIGJ1dCBpdCBpcyBzdGlsbCBwYXJ0IG9mIHRoZQo+PiBh ZHNfYmxvYnBhc3NlcyB0byBHdUMuCj4+Cj4+PiArc3RydWN0IF9fZ3VjX2Fkc19ibG9iIHsKPj4+ ICvCoMKgwqAgc3RydWN0IGd1Y19hZHMgYWRzOwo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZ3VjX3BvbGlj aWVzIHBvbGljaWVzOwo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZ3VjX2d0X3N5c3RlbV9pbmZvIHN5c3Rl bV9pbmZvOwo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZ3VjX2NsaWVudHNfaW5mbyBjbGllbnRzX2luZm87 Cj4+PiArwqDCoMKgIHN0cnVjdCBndWNfY3RfcG9vbF9lbnRyeSBjdF9wb29sW0dVQ19DVF9QT09M X1NJWkVdOwo+Pj4gK30gX19wYWNrZWQ7Cj4+PiArCj4+PiArc3RhdGljIHUzMiBndWNfYWRzX3By aXZhdGVfZGF0YV9zaXplKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPj4+ICt7Cj4+PiArwqDCoMKg IHJldHVybiBQQUdFX0FMSUdOKGd1Yy0+ZncucHJpdmF0ZV9kYXRhX3NpemUpOwo+Pj4gK30KPj4+ ICsKPj4+ICtzdGF0aWMgdTMyIGd1Y19hZHNfcHJpdmF0ZV9kYXRhX29mZnNldChzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMpCj4+PiArewo+Pj4gK8KgwqDCoCByZXR1cm4gUEFHRV9BTElHTihzaXplb2Yo c3RydWN0IF9fZ3VjX2Fkc19ibG9iKSk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB1MzIgZ3Vj X2Fkc19ibG9iX3NpemUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+Pj4gK3sKPj4+ICvCoMKgwqAg cmV0dXJuIGd1Y19hZHNfcHJpdmF0ZV9kYXRhX29mZnNldChndWMpICsKPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoCBndWNfYWRzX3ByaXZhdGVfZGF0YV9zaXplKGd1Yyk7Cj4+PiArfQo+Pj4gIMKg IMKgIHN0YXRpYyB2b2lkIGd1Y19wb2xpY3lfaW5pdChzdHJ1Y3QgZ3VjX3BvbGljeSAqcG9saWN5 KQo+Pj4gIMKgIHsKPj4+IEBAIC00OCwyMyArODksMzMgQEAgc3RhdGljIHZvaWQgZ3VjX2N0X3Bv b2xfZW50cmllc19pbml0KHN0cnVjdAo+Pj4gZ3VjX2N0X3Bvb2xfZW50cnkgKnBvb2wsIHUzMiBu dW0pCj4+PiAgwqDCoMKgwqDCoCBtZW1zZXQocG9vbCwgMCwgbnVtICogc2l6ZW9mKCpwb29sKSk7 Cj4+PiAgwqAgfQo+Pj4gIMKgICtzdGF0aWMgdm9pZCBndWNfbWFwcGluZ190YWJsZV9pbml0KHN0 cnVjdCBpbnRlbF9ndCAqZ3QsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHN0cnVjdCBndWNfZ3Rfc3lzdGVtX2luZm8gKnN5c3RlbV9pbmZvKQo+Pj4gK3sKPj4+ICvC oMKgwqAgdW5zaWduZWQgaW50IGksIGo7Cj4+PiArwqDCoMKgIHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKPj4+ICvCoMKgwqAgZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4+PiArCj4+ PiArwqDCoMKgIC8qIFRhYmxlIG11c3QgYmUgc2V0IHRvIGludmFsaWQgdmFsdWVzIGZvciBlbnRy aWVzIG5vdCB1c2VkICovCj4+PiArwqDCoMKgIGZvciAoaSA9IDA7IGkgPCBHVUNfTUFYX0VOR0lO RV9DTEFTU0VTOyArK2kpCj4+PiArwqDCoMKgwqDCoMKgwqAgZm9yIChqID0gMDsgaiA8IEdVQ19N QVhfSU5TVEFOQ0VTX1BFUl9DTEFTUzsgKytqKQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3lzdGVtX2luZm8tPm1hcHBpbmdfdGFibGVbaV1bal0gPQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBHVUNfTUFYX0lOU1RBTkNFU19QRVJfQ0xBU1M7Cj4+PiArCj4+PiArwqDC oMKgIGZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGd0LCBpZCkgewo+Pj4gK8KgwqDCoMKgwqDCoMKg IHU4IGd1Y19jbGFzcyA9IGVuZ2luZS0+Y2xhc3M7Cj4+PiArCj4+PiArwqDCoMKgwqDCoMKgwqAg c3lzdGVtX2luZm8tPm1hcHBpbmdfdGFibGVbZ3VjX2NsYXNzXVtlbmdpbmUtPmluc3RhbmNlXQo+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSBlbmdpbmUtPmluc3RhbmNlOwo+Pj4gK8KgwqDC oCB9Cj4+PiArfQo+Pj4gKwo+Pj4gIMKgIC8qCj4+PiAgwqDCoCAqIFRoZSBmaXJzdCA4MCBkd29y ZHMgb2YgdGhlIHJlZ2lzdGVyIHN0YXRlIGNvbnRleHQsIGNvbnRhaW5pbmcgdGhlCj4+PiAgwqDC oCAqIGV4ZWNsaXN0cyBhbmQgcHBndHQgcmVnaXN0ZXJzLgo+Pj4gIMKgwqAgKi8KPj4+ICDCoCAj ZGVmaW5lIExSX0hXX0NPTlRFWFRfU0laRcKgwqDCoCAoODAgKiBzaXplb2YodTMyKSkKPj4+ICDC oCAtLyogVGhlIGFkcyBvYmogaW5jbHVkZXMgdGhlIHN0cnVjdCBpdHNlbGYgYW5kIGJ1ZmZlcnMg cGFzc2VkIHRvIEd1QyAqLwo+Pj4gLXN0cnVjdCBfX2d1Y19hZHNfYmxvYiB7Cj4+PiAtwqDCoMKg IHN0cnVjdCBndWNfYWRzIGFkczsKPj4+IC3CoMKgwqAgc3RydWN0IGd1Y19wb2xpY2llcyBwb2xp Y2llczsKPj4+IC3CoMKgwqAgc3RydWN0IGd1Y19tbWlvX3JlZ19zdGF0ZSByZWdfc3RhdGU7Cj4+ PiAtwqDCoMKgIHN0cnVjdCBndWNfZ3Rfc3lzdGVtX2luZm8gc3lzdGVtX2luZm87Cj4+PiAtwqDC oMKgIHN0cnVjdCBndWNfY2xpZW50c19pbmZvIGNsaWVudHNfaW5mbzsKPj4+IC3CoMKgwqAgc3Ry dWN0IGd1Y19jdF9wb29sX2VudHJ5IGN0X3Bvb2xbR1VDX0NUX1BPT0xfU0laRV07Cj4+PiAtwqDC oMKgIHU4IHJlZ19zdGF0ZV9idWZmZXJbR1VDX1MzX1NBVkVfU1BBQ0VfUEFHRVMgKiBQQUdFX1NJ WkVdOwo+Pj4gLX0gX19wYWNrZWQ7Cj4+PiAtCj4+PiAgwqAgc3RhdGljIHZvaWQgX19ndWNfYWRz X2luaXQoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+Pj4gIMKgIHsKPj4+ICDCoMKgwqDCoMKgIHN0 cnVjdCBpbnRlbF9ndCAqZ3QgPSBndWNfdG9fZ3QoZ3VjKTsKPj4+IEBAIC0xMDcsNiArMTU4LDE2 IEBAIHN0YXRpYyB2b2lkIF9fZ3VjX2Fkc19pbml0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPj4+ ICDCoMKgwqDCoMKgIGJsb2ItPnN5c3RlbV9pbmZvLnZlYm94X2VuYWJsZV9tYXNrID0gVkVCT1hf TUFTSyhndCk7Cj4+PiAgwqDCoMKgwqDCoCBibG9iLT5zeXN0ZW1faW5mby52ZGJveF9zZmNfc3Vw cG9ydF9tYXNrID0KPj4+IGd0LT5pbmZvLnZkYm94X3NmY19hY2Nlc3M7Cj4+PiAgwqAgK8KgwqDC oCBpZiAoSU5URUxfR0VOKGd0LT5pOTE1KSA+PSAxMiAmJiAhSVNfREdGWChndC0+aTkxNSkpIHsK Pj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIgZGlzdGRicmVnID0gaW50ZWxfdW5jb3JlX3JlYWQoZ3Qt PnVuY29yZSwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBHRU4xMl9ESVNUX0RCU19QT1BVTEFURUQpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGJs b2ItPnN5c3RlbV9pbmZvLm51bV9vZl9kb29yYmVsbHNfcGVyX3NxaWRpID0KPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICgoZGlzdGRicmVnID4+IEdFTjEyX0RPT1JCRUxMU19QRVJfU1FJRElf U0hJRlQpICYKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VOMTJfRE9PUkJFTExTX1BF Ul9TUUlESSkgKyAxOwo+Pj4gK8KgwqDCoCB9Cj4+PiArCj4+PiArwqDCoMKgIGd1Y19tYXBwaW5n X3RhYmxlX2luaXQoZ3VjX3RvX2d0KGd1YyksICZibG9iLT5zeXN0ZW1faW5mbyk7Cj4+PiArCj4+ PiAgwqDCoMKgwqDCoCBiYXNlID0gaW50ZWxfZ3VjX2dndHRfb2Zmc2V0KGd1YywgZ3VjLT5hZHNf dm1hKTsKPj4+ICDCoCDCoMKgwqDCoMKgIC8qIENsaWVudHMgaW5mb8KgICovCj4+PiBAQCAtMTE4 LDExICsxNzksMTIgQEAgc3RhdGljIHZvaWQgX19ndWNfYWRzX2luaXQoc3RydWN0IGludGVsX2d1 YyAqZ3VjKQo+Pj4gIMKgIMKgwqDCoMKgwqAgLyogQURTICovCj4+PiAgwqDCoMKgwqDCoCBibG9i LT5hZHMuc2NoZWR1bGVyX3BvbGljaWVzID0gYmFzZSArIHB0cl9vZmZzZXQoYmxvYiwgcG9saWNp ZXMpOwo+Pj4gLcKgwqDCoCBibG9iLT5hZHMucmVnX3N0YXRlX2J1ZmZlciA9IGJhc2UgKyBwdHJf b2Zmc2V0KGJsb2IsCj4+PiByZWdfc3RhdGVfYnVmZmVyKTsKPj4+IC3CoMKgwqAgYmxvYi0+YWRz LnJlZ19zdGF0ZV9hZGRyID0gYmFzZSArIHB0cl9vZmZzZXQoYmxvYiwgcmVnX3N0YXRlKTsKPj4+ ICDCoMKgwqDCoMKgIGJsb2ItPmFkcy5ndF9zeXN0ZW1faW5mbyA9IGJhc2UgKyBwdHJfb2Zmc2V0 KGJsb2IsIHN5c3RlbV9pbmZvKTsKPj4+ICDCoMKgwqDCoMKgIGJsb2ItPmFkcy5jbGllbnRzX2lu Zm8gPSBiYXNlICsgcHRyX29mZnNldChibG9iLCBjbGllbnRzX2luZm8pOwo+Pj4gIMKgICvCoMKg wqAgLyogUHJpdmF0ZSBEYXRhICovCj4+PiArwqDCoMKgIGJsb2ItPmFkcy5wcml2YXRlX2RhdGEg PSBiYXNlICsgZ3VjX2Fkc19wcml2YXRlX2RhdGFfb2Zmc2V0KGd1Yyk7Cj4+PiArCj4+PiAgwqDC oMKgwqDCoCBpOTE1X2dlbV9vYmplY3RfZmx1c2hfbWFwKGd1Yy0+YWRzX3ZtYS0+b2JqKTsKPj4+ ICDCoCB9Cj4+PiAgwqAgQEAgLTEzNSwxNCArMTk3LDE1IEBAIHN0YXRpYyB2b2lkIF9fZ3VjX2Fk c19pbml0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPj4+ICDCoMKgICovCj4+PiAgwqAgaW50IGlu dGVsX2d1Y19hZHNfY3JlYXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPj4+ICDCoCB7Cj4+PiAt wqDCoMKgIGNvbnN0IHUzMiBzaXplID0gUEFHRV9BTElHTihzaXplb2Yoc3RydWN0IF9fZ3VjX2Fk c19ibG9iKSk7Cj4+PiArwqDCoMKgIHUzMiBzaXplOwo+Pj4gIMKgwqDCoMKgwqAgaW50IHJldDsK Pj4+ICDCoCDCoMKgwqDCoMKgIEdFTV9CVUdfT04oZ3VjLT5hZHNfdm1hKTsKPj4+ICDCoCArwqDC oMKgIHNpemUgPSBndWNfYWRzX2Jsb2Jfc2l6ZShndWMpOwo+Pj4gKwo+Pj4gIMKgwqDCoMKgwqAg cmV0ID0gaW50ZWxfZ3VjX2FsbG9jYXRlX2FuZF9tYXBfdm1hKGd1Yywgc2l6ZSwgJmd1Yy0+YWRz X3ZtYSwKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICh2b2lkICoqKSZndWMtPmFkc19ibG9iKTsKPj4+IC0KPj4+ICDCoMKgwqDCoMKgIGlm IChyZXQpCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+PiAgwqAgQEAgLTE1 Niw2ICsyMTksMTggQEAgdm9pZCBpbnRlbF9ndWNfYWRzX2Rlc3Ryb3koc3RydWN0IGludGVsX2d1 YyAqZ3VjKQo+Pj4gIMKgwqDCoMKgwqAgaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmd1Yy0+ YWRzX3ZtYSwgSTkxNV9WTUFfUkVMRUFTRV9NQVApOwo+Pj4gIMKgIH0KPj4+ICDCoCArdm9pZCBn dWNfYWRzX3ByaXZhdGVfZGF0YV9yZXNldChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCj4+PiArewo+ Pj4gK8KgwqDCoCB1MzIgc2l6ZTsKPj4+ICsKPj4+ICvCoMKgwqAgc2l6ZSA9IGd1Y19hZHNfcHJp dmF0ZV9kYXRhX3NpemUoZ3VjKTsKPj4+ICvCoMKgwqAgaWYgKCFzaXplKQo+Pj4gK8KgwqDCoMKg wqDCoMKgIHJldHVybjsKPj4+ICsKPj4+ICvCoMKgwqAgbWVtc2V0KCh2b2lkICopZ3VjLT5hZHNf YmxvYiArIGd1Y19hZHNfcHJpdmF0ZV9kYXRhX29mZnNldChndWMpLCAwLAo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgIHNpemUpOwo+Pj4gK30KPj4+ICsKPj4+ICDCoCAvKioKPj4+ICDCoMKgICog aW50ZWxfZ3VjX2Fkc19yZXNldCgpIC0gcHJlcGFyZXMgR3VDIEFkZGl0aW9uYWwgRGF0YSBTdHJ1 Y3QgZm9yCj4+PiByZXVzZQo+Pj4gIMKgwqAgKiBAZ3VjOiBpbnRlbF9ndWMgc3RydWN0Cj4+PiBA QCAtMTY4LDUgKzI0Myw4IEBAIHZvaWQgaW50ZWxfZ3VjX2Fkc19yZXNldChzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCj4+PiAgwqAgewo+Pj4gIMKgwqDCoMKgwqAgaWYgKCFndWMtPmFkc192bWEpCj4+ PiAgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4+ICsKPj4+ICDCoMKgwqDCoMKgIF9fZ3Vj X2Fkc19pbml0KGd1Yyk7Cj4+PiArCj4+PiArwqDCoMKgIGd1Y19hZHNfcHJpdmF0ZV9kYXRhX3Jl c2V0KGd1Yyk7Cj4+PiAgwqAgfQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Y19mdy5jCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2lu dGVsX2d1Y19mdy5jCj4+PiBpbmRleCBkNGE4N2Y0Yzk0MjEuLjIxMmRlMGE5MzliZiAxMDA2NDQK Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19mdy5jCj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZncuYwo+Pj4gQEAgLTc0 LDggKzc0LDkgQEAgc3RhdGljIGlubGluZSBib29sIGd1Y19yZWFkeShzdHJ1Y3QgaW50ZWxfdW5j b3JlCj4+PiAqdW5jb3JlLCB1MzIgKnN0YXR1cykKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgKCh2 YWwgJiBHU19NSUFfQ09SRV9TVEFURSkgJiYgKHVrX3ZhbCA9PQo+Pj4gR1NfVUtFUk5FTF9MQVBJ Q19ET05FKSk7Cj4+PiAgwqAgfQo+Pj4gIMKgIC1zdGF0aWMgaW50IGd1Y193YWl0X3Vjb2RlKHN0 cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPj4+ICtzdGF0aWMgaW50IGd1Y193YWl0X3Vjb2Rl KHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4+PiAgwqAgewo+Pj4gK8KgwqDCoCBzdHJ1Y3QgaW50ZWxf dW5jb3JlICp1bmNvcmUgPSBndC0+dW5jb3JlOwo+PiBUaGUgZ3Qgc2VlbXMgdG8gYmUgdXNlZCBv bmx5IGZvciBndC0+aTkxNSwgd2h5IG5vdCBqdXN0IHVzZSB1bmNvcmUtPmk5MTU/Cj4+Cj4+PiAg wqDCoMKgwqDCoCB1MzIgc3RhdHVzOwo+Pj4gIMKgwqDCoMKgwqAgaW50IHJldDsKPj4+ICDCoCBA QCAtOTMsMTIgKzk0LDI0IEBAIHN0YXRpYyBpbnQgZ3VjX3dhaXRfdWNvZGUoc3RydWN0IGludGVs X3VuY29yZQo+Pj4gKnVuY29yZSkKPj4+ICDCoMKgwqDCoMKgIGlmICgoc3RhdHVzICYgR1NfQk9P VFJPTV9NQVNLKSA9PSBHU19CT09UUk9NX1JTQV9GQUlMRUQpIHsKPj4+ICDCoMKgwqDCoMKgwqDC oMKgwqAgRFJNX0VSUk9SKCJHdUMgZmlybXdhcmUgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBmYWls ZWRcbiIpOwo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSAtRU5PRVhFQzsKPj4+IC3CoMKg wqAgfQo+Pj4gLQo+Pj4gK8KgwqDCoCB9IGVsc2UKPj4+ICDCoMKgwqDCoMKgIGlmICgoc3RhdHVz ICYgR1NfVUtFUk5FTF9NQVNLKSA9PSBHU19VS0VSTkVMX0VYQ0VQVElPTikgewo+Pj4gIMKgwqDC oMKgwqDCoMKgwqDCoCBEUk1fRVJST1IoIkd1QyBmaXJtd2FyZSBleGNlcHRpb24uIEVJUDogJSN4 XG4iLAo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnRlbF91bmNvcmVfcmVh ZCh1bmNvcmUsIFNPRlRfU0NSQVRDSCgxMykpKTsKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 ID0gLUVOWElPOwo+Pj4gK8KgwqDCoCB9IGVsc2UKPj4+ICvCoMKgwqAgaWYgKHJldCkgewo+Pj4g K8KgwqDCoMKgwqDCoMKgIGk5MTVfcHJvYmVfZXJyb3IoZ3QtPmk5MTUsICJHdUMgbG9hZCBmYWls ZWQ6IHN0YXR1cyA9IDB4JTA4WFxuIiwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdGF0dXMpOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGk5MTVfcHJvYmVfZXJyb3IoZ3QtPmk5 MTUsICJHdUMgc3RhdHVzOiBSZXNldCA9ICVkLCAiCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgIkJvb3RST00gPSAweCUwMlgsIFVLZXJuZWwgPSAweCUwMlgsICIKPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiTUlBID0gMHglMDJYLCBBdXRoID0gMHgl MDJYXG4iLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzdGF0dXMgPj4g R1NfUkVTRVRfU0hJRlQpICYgMSwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAoc3RhdHVzICYgR1NfQk9PVFJPTV9NQVNLKSA+PiBHU19CT09UUk9NX1NISUZULAo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzdGF0dXMgJiBHU19VS0VSTkVMX01BU0sp ID4+IEdTX1VLRVJORUxfU0hJRlQsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKHN0YXR1cyAmIEdTX01JQV9NQVNLKSA+PiBHU19NSUFfU0hJRlQsCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHN0YXR1cyAmIEdTX0FVVEhfU1RBVFVTX01BU0spID4+ Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBHU19BVVRIX1NUQVRVU19TSElGVCk7Cj4+IG5pdDogSSB0aGluayB1c2luZyB0aGUg RklFTERfR0VUIG1hY3JvIGhlcmUgYXMgd2VsbCBjb3VsZCBtYWtlIHRoaW5ncwo+PiBjbGVhbmVy Cj4+Cj4+PiAgwqDCoMKgwqDCoCB9Cj4+PiAgwqAgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+Pj4g QEAgLTEzOSw3ICsxNTIsNyBAQCBpbnQgaW50ZWxfZ3VjX2Z3X3VwbG9hZChzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCj4+PiAgwqDCoMKgwqDCoCBpZiAocmV0KQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDC oCBnb3RvIG91dDsKPj4+ICDCoCAtwqDCoMKgIHJldCA9IGd1Y193YWl0X3Vjb2RlKHVuY29yZSk7 Cj4+PiArwqDCoMKgIHJldCA9IGd1Y193YWl0X3Vjb2RlKGd0KTsKPj4+ICDCoMKgwqDCoMKgIGlm IChyZXQpCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gb3V0Owo+Pj4gIMKgIGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZndpZi5oCj4+PiBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19md2lmLmgKPj4+IGluZGV4IGE2Yjcz M2MxNDZjOS4uNzdlNDlkNTNiYjVjIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3aWYuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfZ3VjX2Z3aWYuaAo+Pj4gQEAgLTI3LDcgKzI3LDcgQEAKPj4+ICDCoCAjZGVm aW5lIEdVQ19NQVhfRU5HSU5FU19OVU3CoMKgwqDCoMKgwqDCoCAoR1VDX1ZJREVPX0VOR0lORTIg KyAxKQo+Pj4gIMKgIMKgICNkZWZpbmUgR1VDX01BWF9FTkdJTkVfQ0xBU1NFU8KgwqDCoMKgwqDC oMKgIDUKPj4+IC0jZGVmaW5lIEdVQ19NQVhfSU5TVEFOQ0VTX1BFUl9DTEFTU8KgwqDCoCAxNgo+ Pj4gKyNkZWZpbmUgR1VDX01BWF9JTlNUQU5DRVNfUEVSX0NMQVNTwqDCoMKgIDMyCj4+PiAgwqAg wqAgI2RlZmluZSBHVUNfRE9PUkJFTExfSU5WQUxJRMKgwqDCoMKgwqDCoMKgIDI1Ngo+Pj4gIMKg IEBAIC02MiwxMiArNjIsNyBAQAo+Pj4gIMKgICNkZWZpbmUgR1VDX1NUQUdFX0RFU0NfQVRUUl9Q Q0jCoMKgwqDCoMKgwqDCoCBCSVQoNikKPj4+ICDCoCAjZGVmaW5lIEdVQ19TVEFHRV9ERVNDX0FU VFJfVEVSTUlOQVRFRMKgwqDCoCBCSVQoNykKPj4+ICDCoCAtLyogTmV3IEd1QyBjb250cm9sIGRh dGEgKi8KPj4+IC0jZGVmaW5lIEdVQ19DVExfQ1RYSU5GT8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg MAo+Pj4gLSNkZWZpbmXCoMKgIEdVQ19DVExfQ1RYTlVNX0lOMTZfU0hJRlTCoMKgwqAgMAo+Pj4g LSNkZWZpbmXCoMKgIEdVQ19DVExfQkFTRV9BRERSX1NISUZUwqDCoMKgIDEyCj4+PiAtCj4+PiAt I2RlZmluZSBHVUNfQ1RMX0xPR19QQVJBTVPCoMKgwqDCoMKgwqDCoCAxCj4+PiArI2RlZmluZSBH VUNfQ1RMX0xPR19QQVJBTVPCoMKgwqDCoMKgwqDCoCAwCj4+PiAgwqAgI2RlZmluZcKgwqAgR1VD X0xPR19WQUxJRMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDEgPDwgMCkKPj4+ICDCoCAjZGVmaW5l wqDCoCBHVUNfTE9HX05PVElGWV9PTl9IQUxGX0ZVTEzCoMKgwqAgKDEgPDwgMSkKPj4+ICDCoCAj ZGVmaW5lwqDCoCBHVUNfTE9HX0FMTE9DX0lOX01FR0FCWVRFwqDCoMKgICgxIDw8IDMpCj4+PiBA QCAtNzksMTEgKzc0LDExIEBACj4+PiAgwqAgI2RlZmluZcKgwqAgR1VDX0xPR19JU1JfTUFTS8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKDB4NyA8PCBHVUNfTE9HX0lTUl9TSElGVCkKPj4+ICDCoCAj ZGVmaW5lwqDCoCBHVUNfTE9HX0JVRl9BRERSX1NISUZUwqDCoMKgIDEyCj4+PiAgwqAgLSNkZWZp bmUgR1VDX0NUTF9XQcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMgo+Pj4gLSNkZWZpbmUgR1VDX0NU TF9GRUFUVVJFwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAzCj4+PiArI2RlZmluZSBHVUNfQ1RMX1dB wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxCj4+PiArI2RlZmluZSBHVUNfQ1RMX0ZFQVRVUkXCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDIKPj4+ICDCoCAjZGVmaW5lwqDCoCBHVUNfQ1RMX0RJU0FCTEVf U0NIRURVTEVSwqDCoMKgICgxIDw8IDE0KQo+Pj4gIMKgIC0jZGVmaW5lIEdVQ19DVExfREVCVUfC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDQKPj4+ICsjZGVmaW5lIEdVQ19DVExfREVCVUfCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDMKPj4+ICDCoCAjZGVmaW5lwqDCoCBHVUNfTE9HX1ZFUkJPU0lUWV9T SElGVMKgwqDCoCAwCj4+PiAgwqAgI2RlZmluZcKgwqAgR1VDX0xPR19WRVJCT1NJVFlfTE9XwqDC oMKgwqDCoMKgwqAgKDAgPDwgR1VDX0xPR19WRVJCT1NJVFlfU0hJRlQpCj4+PiAgwqAgI2RlZmlu ZcKgwqAgR1VDX0xPR19WRVJCT1NJVFlfTUVEwqDCoMKgwqDCoMKgwqAgKDEgPDwgR1VDX0xPR19W RVJCT1NJVFlfU0hJRlQpCj4+PiBAQCAtOTcsMTIgKzkyLDMxIEBACj4+PiAgwqAgI2RlZmluZcKg wqAgR1VDX0xPR19ESVNBQkxFRMKgwqDCoMKgwqDCoMKgICgxIDw8IDYpCj4+PiAgwqAgI2RlZmlu ZcKgwqAgR1VDX1BST0ZJTEVfRU5BQkxFRMKgwqDCoMKgwqDCoMKgICgxIDw8IDcpCj4+PiAgwqAg LSNkZWZpbmUgR1VDX0NUTF9BRFPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDUKPj4+ICsjZGVmaW5l IEdVQ19DVExfQURTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA0Cj4+PiAgwqAgI2RlZmluZcKgwqAg R1VDX0FEU19BRERSX1NISUZUwqDCoMKgwqDCoMKgwqAgMQo+Pj4gIMKgICNkZWZpbmXCoMKgIEdV Q19BRFNfQUREUl9NQVNLwqDCoMKgwqDCoMKgwqAgKDB4RkZGRkYgPDwgR1VDX0FEU19BRERSX1NI SUZUKQo+Pj4gIMKgIMKgICNkZWZpbmUgR1VDX0NUTF9NQVhfRFdPUkRTwqDCoMKgwqDCoMKgwqAg KFNPRlRfU0NSQVRDSF9DT1VOVCAtIDIpIC8qCj4+PiBbMS4uMTRdICovCj4+PiAgwqAgKy8qCj4+ PiArICogVGhlIGNsYXNzIGdvZXMgaW4gYml0cyBbMC4uMl0gb2YgdGhlIEd1QyBJRCwgdGhlIGlu c3RhbmNlIGluIGJpdHMKPj4+IFszLi42XS4KPj4+ICsgKiBCaXQgNyBjYW4gYmUgdXNlZCBmb3Ig b3BlcmF0aW9ucyB0aGF0IGFwcGx5IHRvIGFsbCBlbmdpbmUKPj4+IGNsYXNzZXMmaW5zdGFuY2Vz Lgo+Pj4gKyAqLwo+Pj4gKyNkZWZpbmUgR1VDX0VOR0lORV9DTEFTU19TSElGVMKgwqDCoMKgwqDC oMKgIDAKPj4+ICsjZGVmaW5lIEdVQ19FTkdJTkVfQ0xBU1NfTUFTS8KgwqDCoMKgwqDCoMKgICgw eDcgPDwgR1VDX0VOR0lORV9DTEFTU19TSElGVCkKPj4+ICsjZGVmaW5lIEdVQ19FTkdJTkVfSU5T VEFOQ0VfU0hJRlTCoMKgwqAgMwo+Pj4gKyNkZWZpbmUgR1VDX0VOR0lORV9JTlNUQU5DRV9NQVNL wqDCoMKgICgweGYgPDwgR1VDX0VOR0lORV9JTlNUQU5DRV9TSElGVCkKPj4+ICsjZGVmaW5lIEdV Q19FTkdJTkVfQUxMX0lOU1RBTkNFU8KgwqDCoCAoMSA8PCA3KQo+Pj4gKwo+Pj4gKyNkZWZpbmUg TUFLRV9HVUNfSUQoY2xhc3MsIGluc3RhbmNlKSBcCj4+PiArwqDCoMKgICgoKGNsYXNzKSA8PCBH VUNfRU5HSU5FX0NMQVNTX1NISUZUKSB8IFwKPj4+ICvCoMKgwqDCoCAoKGluc3RhbmNlKSA8PCBH VUNfRU5HSU5FX0lOU1RBTkNFX1NISUZUKSkKPj4+ICsKPj4+ICsjZGVmaW5lIEdVQ19JRF9UT19F TkdJTkVfQ0xBU1MoZ3VjX2lkKSBcCj4+PiArwqDCoMKgICgoKGd1Y19pZCkgJiBHVUNfRU5HSU5F X0NMQVNTX01BU0spID4+IEdVQ19FTkdJTkVfQ0xBU1NfU0hJRlQpCj4+PiArI2RlZmluZSBHVUNf SURfVE9fRU5HSU5FX0lOU1RBTkNFKGd1Y19pZCkgXAo+Pj4gK8KgwqDCoCAoKChndWNfaWQpICYg R1VDX0VOR0lORV9JTlNUQU5DRV9NQVNLKSA+PiBHVUNfRU5HSU5FX0lOU1RBTkNFX1NISUZUKQo+ Pj4gKwo+Pj4gIMKgIC8qIFdvcmsgaXRlbSBmb3Igc3VibWl0dGluZyB3b3JrbG9hZHMgaW50byB3 b3JrIHF1ZXVlIG9mIEd1Qy4gKi8KPj4+ICDCoCBzdHJ1Y3QgZ3VjX3dxX2l0ZW0gewo+Pj4gIMKg wqDCoMKgwqAgdTMyIGhlYWRlcjsKPj4+IEBAIC0zMzgsNyArMzUyLDYgQEAgc3RydWN0IGd1Y19w b2xpY2llcyB7Cj4+PiAgwqAgLyogR3VDIE1NSU8gcmVnIHN0YXRlIHN0cnVjdCAqLwo+Pj4gIMKg IMKgIC0jZGVmaW5lIEdVQ19SRUdTRVRfTUFYX1JFR0lTVEVSU8KgwqDCoCA2NAo+Pj4gIMKgICNk ZWZpbmUgR1VDX1MzX1NBVkVfU1BBQ0VfUEFHRVPCoMKgwqDCoMKgwqDCoCAxMAo+Pj4gIMKgIMKg IHN0cnVjdCBndWNfbW1pb19yZWcgewo+Pj4gQEAgLTM0OCwxNiArMzYxLDE3IEBAIHN0cnVjdCBn dWNfbW1pb19yZWcgewo+Pj4gIMKgICNkZWZpbmUgR1VDX1JFR1NFVF9NQVNLRUTCoMKgwqDCoMKg wqDCoCAoMSA8PCAwKQo+Pj4gIMKgIH0gX19wYWNrZWQ7Cj4+PiAgwqAgLXN0cnVjdCBndWNfbW1p b19yZWdzZXQgewo+Pj4gLcKgwqDCoCBzdHJ1Y3QgZ3VjX21taW9fcmVnIHJlZ2lzdGVyc1tHVUNf UkVHU0VUX01BWF9SRUdJU1RFUlNdOwo+Pj4gLcKgwqDCoCB1MzIgdmFsdWVzX3ZhbGlkOwo+Pj4g LcKgwqDCoCB1MzIgbnVtYmVyX29mX3JlZ2lzdGVyczsKPj4+IC19IF9fcGFja2VkOwo+Pj4gLQo+ Pj4gIMKgIC8qIEd1QyByZWdpc3RlciBzZXRzICovCj4+PiAtc3RydWN0IGd1Y19tbWlvX3JlZ19z dGF0ZSB7Cj4+PiAtwqDCoMKgIHN0cnVjdCBndWNfbW1pb19yZWdzZXQKPj4+IGVuZ2luZV9yZWdb R1VDX01BWF9FTkdJTkVfQ0xBU1NFU11bR1VDX01BWF9JTlNUQU5DRVNfUEVSX0NMQVNTXTsKPj4+ IC3CoMKgwqAgdTMyIHJlc2VydmVkWzk4XTsKPj4+ICtzdHJ1Y3QgZ3VjX21taW9fcmVnX3NldCB7 Cj4+PiArwqDCoMKgIHUzMiBhZGRyZXNzOwo+Pj4gK8KgwqDCoCB1bmlvbiB7Cj4+PiArwqDCoMKg wqDCoMKgwqAgc3RydWN0IHsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBjb3VudDox NjsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiByZXNlcnZlZDE6MTI7Cj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgcmVzZXJ2ZWQyOjQ7Cj4+PiArwqDCoMKgwqDCoMKgwqAg fTsKPj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIgY291bnRfdTMyOwo+Pj4gK8KgwqDCoCB9Owo+Pj4g IMKgIH0gX19wYWNrZWQ7Cj4+PiAgwqAgwqAgLyogSFcgaW5mbyAqLwo+Pj4gQEAgLTM2OSw3ICsz ODMsOSBAQCBzdHJ1Y3QgZ3VjX2d0X3N5c3RlbV9pbmZvIHsKPj4+ICDCoMKgwqDCoMKgIHUzMiB2 ZGJveF9lbmFibGVfbWFzazsKPj4+ICDCoMKgwqDCoMKgIHUzMiB2ZGJveF9zZmNfc3VwcG9ydF9t YXNrOwo+Pj4gIMKgwqDCoMKgwqAgdTMyIHZlYm94X2VuYWJsZV9tYXNrOwo+Pj4gLcKgwqDCoCB1 MzIgcmVzZXJ2ZWRbOV07Cj4+PiArwqDCoMKgIHUzMiBudW1fb2ZfZG9vcmJlbGxzX3Blcl9zcWlk aTsKPj4+ICvCoMKgwqAgdTgKPj4+IG1hcHBpbmdfdGFibGVbR1VDX01BWF9FTkdJTkVfQ0xBU1NF U11bR1VDX01BWF9JTlNUQU5DRVNfUEVSX0NMQVNTXTsKPj4+ICvCoMKgwqAgdTMyIHJlc2VydmVk Mls4XTsKPj4+ICDCoCB9IF9fcGFja2VkOwo+Pj4gIMKgIMKgIC8qIENsaWVudHMgaW5mbyAqLwo+ Pj4gQEAgLTM5MCwxNSArNDA2LDE2IEBAIHN0cnVjdCBndWNfY2xpZW50c19pbmZvIHsKPj4+ICDC oCDCoCAvKiBHdUMgQWRkaXRpb25hbCBEYXRhIFN0cnVjdCAqLwo+Pj4gIMKgIHN0cnVjdCBndWNf YWRzIHsKPj4+IC3CoMKgwqAgdTMyIHJlZ19zdGF0ZV9hZGRyOwo+Pj4gLcKgwqDCoCB1MzIgcmVn X3N0YXRlX2J1ZmZlcjsKPj4+ICvCoMKgwqAgc3RydWN0IGd1Y19tbWlvX3JlZ19zZXQKPj4+IHJl Z19zdGF0ZV9saXN0W0dVQ19NQVhfRU5HSU5FX0NMQVNTRVNdW0dVQ19NQVhfSU5TVEFOQ0VTX1BF Ul9DTEFTU107Cj4+PiArwqDCoMKgIHUzMiByZXNlcnZlZDA7Cj4+PiAgwqDCoMKgwqDCoCB1MzIg c2NoZWR1bGVyX3BvbGljaWVzOwo+Pj4gIMKgwqDCoMKgwqAgdTMyIGd0X3N5c3RlbV9pbmZvOwo+ Pj4gIMKgwqDCoMKgwqAgdTMyIGNsaWVudHNfaW5mbzsKPj4+ICDCoMKgwqDCoMKgIHUzMiBjb250 cm9sX2RhdGE7Cj4+PiAgwqDCoMKgwqDCoCB1MzIgZ29sZGVuX2NvbnRleHRfbHJjYVtHVUNfTUFY X0VOR0lORV9DTEFTU0VTXTsKPj4+ICDCoMKgwqDCoMKgIHUzMiBlbmdfc3RhdGVfc2l6ZVtHVUNf TUFYX0VOR0lORV9DTEFTU0VTXTsKPj4+IC3CoMKgwqAgdTMyIHJlc2VydmVkWzE2XTsKPj4+ICvC oMKgwqAgdTMyIHByaXZhdGVfZGF0YTsKPj4+ICvCoMKgwqAgdTMyIHJlc2VydmVkWzE1XTsKPj4+ ICDCoCB9IF9fcGFja2VkOwo+Pj4gIMKgIMKgIC8qIEd1QyBsb2dnaW5nIHN0cnVjdHVyZXMgKi8K Pj4+IEBAIC00NzQsNDkgKzQ5MSw2IEBAIHN0cnVjdCBndWNfc2hhcmVkX2N0eF9kYXRhIHsKPj4+ ICDCoMKgwqDCoMKgIHN0cnVjdCBndWNfY3R4X3JlcG9ydCBwcmVlbXB0X2N0eF9yZXBvcnRbR1VD X01BWF9FTkdJTkVTX05VTV07Cj4+PiAgwqAgfSBfX3BhY2tlZDsKPj4+ICDCoCAtLyoqCj4+PiAt ICogRE9DOiBNTUlPIGJhc2VkIGNvbW11bmljYXRpb24KPj4+IC0gKgo+Pj4gLSAqIFRoZSBNTUlP IGJhc2VkIGNvbW11bmljYXRpb24gYmV0d2VlbiBIb3N0IGFuZCBHdUMgdXNlcyBzb2Z0d2FyZQo+ Pj4gc2NyYXRjaAo+Pj4gLSAqIHJlZ2lzdGVycywgd2hlcmUgZmlyc3QgcmVnaXN0ZXIgaG9sZHMg ZGF0YSB0cmVhdGVkIGFzIG1lc3NhZ2UgaGVhZGVyLAo+Pj4gLSAqIGFuZCBvdGhlciByZWdpc3Rl cnMgYXJlIHVzZWQgdG8gaG9sZCBtZXNzYWdlIHBheWxvYWQuCj4+PiAtICoKPj4+IC0gKiBGb3Ig R2VuOSssIEd1QyB1c2VzIHNvZnR3YXJlIHNjcmF0Y2ggcmVnaXN0ZXJzIDB4QzE4MC0weEMxQjgs Cj4+PiAtICogYnV0IG5vIEgyRyBjb21tYW5kIHRha2VzIG1vcmUgdGhhbiA4IHBhcmFtZXRlcnMg YW5kIHRoZSBHdUMgRlcKPj4+IC0gKiBpdHNlbGYgdXNlcyBhbiA4LWVsZW1lbnQgYXJyYXkgdG8g c3RvcmUgdGhlIEgyRyBtZXNzYWdlLgo+Pj4gLSAqCj4+PiAtICrCoMKgwqDCoMKgICstLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSsKPj4+IC0gKsKgwqDCoMKgwqAgfMKg IE1NSU9bMF3CoCB8IE1NSU9bMV0gfMKgwqAgLi4uwqDCoCB8IE1NSU9bbl0gfAo+Pj4gLSAqwqDC oMKgwqDCoCArLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rCj4+PiAt ICrCoMKgwqDCoMKgIHwgaGVhZGVywqDCoMKgIHzCoMKgwqDCoMKgIG9wdGlvbmFsIHBheWxvYWTC oMKgwqDCoMKgwqAgfAo+Pj4gLSAqwqDCoMKgwqDCoCArPT09PT09Kz09PT0rPT09PT09PT09Kz09 PT09PT09PSs9PT09PT09PT0rCj4+PiAtICrCoMKgwqDCoMKgIHwgMzE6Mjh8dHlwZXzCoMKgwqDC oMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgIHwKPj4+IC0gKsKg wqDCoMKgwqAgKy0tLS0tLSstLS0tK8KgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqAg fMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4gLSAqwqDCoMKgwqDCoCB8IDI3OjE2fGRhdGF8wqDCoMKg wqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoCB8Cj4+PiAtICrC oMKgwqDCoMKgICstLS0tLS0rLS0tLSvCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKg IHzCoMKgwqDCoMKgwqDCoMKgIHwKPj4+IC0gKsKgwqDCoMKgwqAgfMKgIDE1OjB8Y29kZXzCoMKg wqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgIHwKPj4+IC0g KsKgwqDCoMKgwqAgKy0tLS0tLSstLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKwo+ Pj4gLSAqCj4+PiAtICogVGhlIG1lc3NhZ2UgaGVhZGVyIGNvbnNpc3RzIG9mOgo+Pj4gLSAqCj4+ PiAtICogLSAqKnR5cGUqKiwgaW5kaWNhdGVzIG1lc3NhZ2UgdHlwZQo+Pj4gLSAqIC0gKipjb2Rl KiosIGluZGljYXRlcyBtZXNzYWdlIGNvZGUsIGlzIHNwZWNpZmljIGZvciAqKnR5cGUqKgo+Pj4g LSAqIC0gKipkYXRhKiosIGluZGljYXRlcyBtZXNzYWdlIGRhdGEsIG9wdGlvbmFsLCBkZXBlbmRz IG9uICoqY29kZSoqCj4+PiAtICoKPj4+IC0gKiBUaGUgZm9sbG93aW5nIG1lc3NhZ2UgKip0eXBl cyoqIGFyZSBzdXBwb3J0ZWQ6Cj4+PiAtICoKPj4+IC0gKiAtICoqUkVRVUVTVCoqLCBpbmRpY2F0 ZXMgSG9zdC10by1HdUMgcmVxdWVzdCwgcmVxdWVzdGVkIEd1QyBhY3Rpb24KPj4+IGNvZGUKPj4+ IC0gKsKgwqAgbXVzdCBiZSBwcmlvdmlkZWQgaW4gKipjb2RlKiogZmllbGQuIE9wdGlvbmFsIGFj dGlvbiBzcGVjaWZpYwo+Pj4gcGFyYW1ldGVycwo+Pj4gLSAqwqDCoCBjYW4gYmUgcHJvdmlkZWQg aW4gcmVtYWluaW5nIHBheWxvYWQgcmVnaXN0ZXJzIG9yICoqZGF0YSoqIGZpZWxkLgo+Pj4gLSAq Cj4+PiAtICogLSAqKlJFU1BPTlNFKiosIGluZGljYXRlcyBHdUMtdG8tSG9zdCByZXNwb25zZSBm cm9tIGVhcmxpZXIgR3VDCj4+PiByZXF1ZXN0LAo+Pj4gLSAqwqDCoCBhY3Rpb24gcmVzcG9uc2Ug c3RhdHVzIHdpbGwgYmUgcHJvdmlkZWQgaW4gKipjb2RlKiogZmllbGQuIE9wdGlvbmFsCj4+PiAt ICrCoMKgIHJlc3BvbnNlIGRhdGEgY2FuIGJlIHJldHVybmVkIGluIHJlbWFpbmluZyBwYXlsb2Fk IHJlZ2lzdGVycyBvcgo+Pj4gKipkYXRhKioKPj4+IC0gKsKgwqAgZmllbGQuCj4+PiAtICovCj4+ PiAtCj4+PiAtI2RlZmluZSBHVUNfTUFYX01NSU9fTVNHX0xFTsKgwqDCoMKgwqDCoMKgIDgKPj4+ IC0KPj4+ICDCoCAjZGVmaW5lIElOVEVMX0dVQ19NU0dfVFlQRV9TSElGVMKgwqDCoCAyOAo+Pj4g IMKgICNkZWZpbmUgSU5URUxfR1VDX01TR19UWVBFX01BU0vCoMKgwqDCoMKgwqDCoCAoMHhGIDw8 Cj4+PiBJTlRFTF9HVUNfTVNHX1RZUEVfU0hJRlQpCj4+PiAgwqAgI2RlZmluZSBJTlRFTF9HVUNf TVNHX0RBVEFfU0hJRlTCoMKgwqAgMTYKPj4gVGhlc2UgR1VDX01TRyBkZWZpbmVzIGFyZSBhbHNv IGR1cGxpY2F0ZWQKPiBUaGVzZSBhcmUgc3RpbGwgdXNlZCBieSB0aGUgQ1RCIGFuZCB3ZSB3YW50 IHRvIGtlZXAgQ1RCIGRlZmluaXRpb25zCj4gc2VwYXJhdGUgYXMgd2Ugd2lsbCBkbyBzb21lIHJl ZmFjdG9yaW5nIHRoZXJlIHRvby4KCklzIHRoZSBHdUMgY2hhbmdpbmcgdGhvc2UgZGVmaW5lcyBm b3IgdGhlIENUQiBpbiBhIGZ1dHVyZSByZWxlYXNlLCBvciBpcyAKdGhlIHJlZmFjdG9yaW5nIHB1 cmVseSBvbiB0aGUgaTkxNSBzaWRlPyBpbiB0aGUgbGF0dGVyIGNhc2UgSSdkIHByZWZlciAKZm9y IGFsbCB0aGUgZHVwbGljYXRpb24gdG8gYmUgcmVtb3ZlZCBub3cgdW50aWwgdGhlIENUQiByZWZh Y3RvcmluZyBjb21lcy4KCkRhbmllbGUKCj4gTWljaGFsCj4KPj4gRGFuaWVsZQo+Pgo+Pj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19yZWcuaAo+Pj4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfcmVnLmgKPj4+IGluZGV4IDE5 NDkzNDZlNzE0ZS4uYjM3ZmMyZmZhZWYyIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3JlZy5oCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF9ndWNfcmVnLmgKPj4+IEBAIC0xMTgsNiArMTE4LDExIEBAIHN0cnVjdCBn dWNfZG9vcmJlbGxfaW5mbyB7Cj4+PiAgwqAgI2RlZmluZcKgwqAgR0VOOF9EUkJfVkFMSUTCoMKg wqDCoMKgwqDCoMKgwqAgKDE8PDApCj4+PiAgwqAgI2RlZmluZSBHRU44X0RSQlJFR1UoeCnCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIF9NTUlPKDB4MTAwMCArICh4KSAqIDggKyA0KQo+Pj4gIMKgICsj ZGVmaW5lIEdFTjEyX0RJU1RfREJTX1BPUFVMQVRFRMKgwqDCoMKgwqDCoMKgIF9NTUlPKDB4ZDA4 KQo+Pj4gKyNkZWZpbmXCoMKgIEdFTjEyX0RPT1JCRUxMU19QRVJfU1FJRElfU0hJRlTCoMKgwqAg MTYKPj4+ICsjZGVmaW5lwqDCoCBHRU4xMl9ET09SQkVMTFNfUEVSX1NRSURJwqDCoMKgwqDCoMKg wqAgKDB4ZmYpCj4+PiArI2RlZmluZcKgwqAgR0VOMTJfU1FJRElTX0RPT1JCRUxMX0VYSVNUwqDC oMKgwqDCoMKgwqAgKDB4ZmZmZikKPj4+ICsKPj4+ICDCoCAjZGVmaW5lIERFX0dVQ1JNUsKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgX01NSU8oMHg0NDA1NCkKPj4+ICDCoCDCoCAjZGVmaW5lIEdVQ19C Q1NfUkNTX0lFUsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX01NSU8oMHhDNTUwKQo+Pj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmMKPj4+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuYwo+Pj4gaW5kZXggNTliMjdhYmEx NWM2Li5mN2NiMGIxZjFiYTUgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC91Yy9pbnRlbF91Y19mdy5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF91Y19mdy5jCj4+PiBAQCAtNDQsMjMgKzQ0LDE5IEBAIHZvaWQgaW50ZWxfdWNfZndfY2hh bmdlX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfdWNfZncKPj4+ICp1Y19mdywKPj4+ICDCoMKgICogTGlz dCBvZiByZXF1aXJlZCBHdUMgYW5kIEh1QyBiaW5hcmllcyBwZXItcGxhdGZvcm0uCj4+PiAgwqDC oCAqIE11c3QgYmUgb3JkZXJlZCBiYXNlZCBvbiBwbGF0Zm9ybSArIHJldmlkLCBmcm9tIG5ld2Vy IHRvIG9sZGVyLgo+Pj4gIMKgwqAgKgo+Pj4gLSAqIFRHTCAzNS4yIGlzIGludGVyZmFjZS1jb21w YXRpYmxlIHdpdGggMzMuMCBmb3IgcHJldmlvdXMgR2Vucy4gVGhlCj4+PiBkZWx0YXMKPj4+IC0g KiBiZXR3ZWVuIDMzLjAgYW5kIDM1LjIgYXJlIG9ubHkgcmVsYXRlZCB0byBuZXcgYWRkaXRpb25z IHRvIHN1cHBvcnQKPj4+IG5ldyBHZW4xMgo+Pj4gLSAqIGZlYXR1cmVzLgo+Pj4gLSAqCj4+PiAg wqDCoCAqIE5vdGUgdGhhdCBSS0wgdXNlcyB0aGUgc2FtZSBmaXJtd2FyZSBhcyBUR0wuCj4+PiAg wqDCoCAqLwo+Pj4gIMKgICNkZWZpbmUgSU5URUxfVUNfRklSTVdBUkVfREVGUyhmd19kZWYsIGd1 Y19kZWYsIGh1Y19kZWYpIFwKPj4+IC3CoMKgwqAgZndfZGVmKFJPQ0tFVExBS0UswqAgMCwgZ3Vj X2RlZih0Z2wsIDM1LCAyLCAwKSwgaHVjX2RlZih0Z2wswqAgNywKPj4+IDAsIDEyKSkgXAo+Pj4g LcKgwqDCoCBmd19kZWYoVElHRVJMQUtFLMKgwqAgMCwgZ3VjX2RlZih0Z2wsIDM1LCAyLCAwKSwg aHVjX2RlZih0Z2wswqAgNywKPj4+IDAsIDEyKSkgXAo+Pj4gLcKgwqDCoCBmd19kZWYoRUxLSEFS VExBS0UsIDAsIGd1Y19kZWYoZWhsLCAzMywgMCwgNCksIGh1Y19kZWYoZWhsLMKgIDksCj4+PiAw LCAwKSkgXAo+Pj4gLcKgwqDCoCBmd19kZWYoSUNFTEFLRSzCoMKgwqDCoCAwLCBndWNfZGVmKGlj bCwgMzMsIDAsIDApLCBodWNfZGVmKGljbCzCoCA5LAo+Pj4gMCwgMCkpIFwKPj4+IC3CoMKgwqAg ZndfZGVmKENPTUVUTEFLRSzCoMKgIDUsIGd1Y19kZWYoY21sLCAzMywgMCwgMCksIGh1Y19kZWYo Y21sLMKgIDQsCj4+PiAwLCAwKSkgXAo+Pj4gLcKgwqDCoCBmd19kZWYoQ09GRkVFTEFLRSzCoCAw LCBndWNfZGVmKGtibCwgMzMsIDAsIDApLCBodWNfZGVmKGtibCzCoCA0LAo+Pj4gMCwgMCkpIFwK Pj4+IC3CoMKgwqAgZndfZGVmKEdFTUlOSUxBS0UswqAgMCwgZ3VjX2RlZihnbGssIDMzLCAwLCAw KSwgaHVjX2RlZihnbGsswqAgNCwKPj4+IDAsIDApKSBcCj4+PiAtwqDCoMKgIGZ3X2RlZihLQUJZ TEFLRSzCoMKgwqAgMCwgZ3VjX2RlZihrYmwsIDMzLCAwLCAwKSwgaHVjX2RlZihrYmwswqAgNCwK Pj4+IDAsIDApKSBcCj4+PiAtwqDCoMKgIGZ3X2RlZihCUk9YVE9OLMKgwqDCoMKgIDAsIGd1Y19k ZWYoYnh0LCAzMywgMCwgMCksIGh1Y19kZWYoYnh0LMKgIDIsCj4+PiAwLCAwKSkgXAo+Pj4gLcKg wqDCoCBmd19kZWYoU0tZTEFLRSzCoMKgwqDCoCAwLCBndWNfZGVmKHNrbCwgMzMsIDAsIDApLCBo dWNfZGVmKHNrbCzCoCAyLAo+Pj4gMCwgMCkpCj4+PiArwqDCoMKgIGZ3X2RlZihST0NLRVRMQUtF LMKgIDAsIGd1Y19kZWYodGdsLCA0NSwgMCwgMCksIGh1Y19kZWYodGdsLMKgIDcsCj4+PiAwLCAx MikpIFwKPj4+ICvCoMKgwqAgZndfZGVmKFRJR0VSTEFLRSzCoMKgIDAsIGd1Y19kZWYodGdsLCA0 NSwgMCwgMCksIGh1Y19kZWYodGdsLMKgIDcsCj4+PiAwLCAxMikpIFwKPj4+ICvCoMKgwqAgZndf ZGVmKEVMS0hBUlRMQUtFLCAwLCBndWNfZGVmKGVobCwgNDUsIDAsIDApLCBodWNfZGVmKGVobCzC oCA5LAo+Pj4gMCwgMCkpIFwKPj4+ICvCoMKgwqAgZndfZGVmKElDRUxBS0UswqDCoMKgwqAgMCwg Z3VjX2RlZihpY2wsIDQ1LCAwLCAwKSwgaHVjX2RlZihpY2wswqAgOSwKPj4+IDAsIDApKSBcCj4+ PiArwqDCoMKgIGZ3X2RlZihDT01FVExBS0UswqDCoCA1LCBndWNfZGVmKGNtbCwgNDUsIDAsIDAp LCBodWNfZGVmKGNtbCzCoCA0LAo+Pj4gMCwgMCkpIFwKPj4+ICvCoMKgwqAgZndfZGVmKENPRkZF RUxBS0UswqAgMCwgZ3VjX2RlZihrYmwsIDQ1LCAwLCAwKSwgaHVjX2RlZihrYmwswqAgNCwKPj4+ IDAsIDApKSBcCj4+PiArwqDCoMKgIGZ3X2RlZihHRU1JTklMQUtFLMKgIDAsIGd1Y19kZWYoZ2xr LCA0NSwgMCwgMCksIGh1Y19kZWYoZ2xrLMKgIDQsCj4+PiAwLCAwKSkgXAo+Pj4gK8KgwqDCoCBm d19kZWYoS0FCWUxBS0UswqDCoMKgIDAsIGd1Y19kZWYoa2JsLCA0NSwgMCwgMCksIGh1Y19kZWYo a2JsLMKgIDQsCj4+PiAwLCAwKSkgXAo+Pj4gK8KgwqDCoCBmd19kZWYoQlJPWFRPTizCoMKgwqDC oCAwLCBndWNfZGVmKGJ4dCwgNDUsIDAsIDApLCBodWNfZGVmKGJ4dCzCoCAyLAo+Pj4gMCwgMCkp IFwKPj4+ICvCoMKgwqAgZndfZGVmKFNLWUxBS0UswqDCoMKgwqAgMCwgZ3VjX2RlZihza2wsIDQ1 LCAwLCAwKSwgaHVjX2RlZihza2wswqAgMiwKPj4+IDAsIDApKQo+Pj4gIMKgIMKgICNkZWZpbmUg X19NQUtFX1VDX0ZXX1BBVEgocHJlZml4XywgbmFtZV8sIG1ham9yXywgbWlub3JfLCBwYXRjaF8p IFwKPj4+ICDCoMKgwqDCoMKgICJpOTE1LyIgXAo+Pj4gQEAgLTM3MSw2ICszNjcsOSBAQCBpbnQg aW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKPj4+ICDCoMKgwqDC oMKgwqDCoMKgwqAgfQo+Pj4gIMKgwqDCoMKgwqAgfQo+Pj4gIMKgICvCoMKgwqAgaWYgKHVjX2Z3 LT50eXBlID09IElOVEVMX1VDX0ZXX1RZUEVfR1VDKQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHVjX2Z3 LT5wcml2YXRlX2RhdGFfc2l6ZSA9IGNzcy0+cHJpdmF0ZV9kYXRhX3NpemU7Cj4+PiArCj4+PiAg wqDCoMKgwqDCoCBvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3NobWVtX2Zyb21fZGF0YShp OTE1LCBmdy0+ZGF0YSwKPj4+IGZ3LT5zaXplKTsKPj4+ICDCoMKgwqDCoMKgIGlmIChJU19FUlIo b2JqKSkgewo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBlcnIgPSBQVFJfRVJSKG9iaik7Cj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuaAo+Pj4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5oCj4+PiBpbmRleCAyM2Qz YTQyM2FjMGYuLjk5YmIxZmUxYWY2NiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX3VjX2Z3LmgKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3VjL2ludGVsX3VjX2Z3LmgKPj4+IEBAIC04OCw2ICs4OCw4IEBAIHN0cnVjdCBpbnRlbF91Y19m dyB7Cj4+PiAgwqAgwqDCoMKgwqDCoCB1MzIgcnNhX3NpemU7Cj4+PiAgwqDCoMKgwqDCoCB1MzIg dWNvZGVfc2l6ZTsKPj4+ICsKPj4+ICvCoMKgwqAgdTMyIHByaXZhdGVfZGF0YV9zaXplOwo+Pj4g IMKgIH07Cj4+PiAgwqAgwqAgI2lmZGVmIENPTkZJR19EUk1fSTkxNV9ERUJVR19HVUMKPj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19md19hYmkuaAo+ Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19md19hYmkuaAo+Pj4gaW5k ZXggMDI5MjE0Y2RlZGQ1Li5lNDFmZmM3YTdmYmMgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19md19hYmkuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZndfYWJpLmgKPj4+IEBAIC02OSw3ICs2OSwxMSBAQCBz dHJ1Y3QgdWNfY3NzX2hlYWRlciB7Cj4+PiAgwqAgI2RlZmluZSBDU1NfU1dfVkVSU0lPTl9VQ19N QUpPUsKgwqDCoMKgwqDCoMKgICgweEZGIDw8IDE2KQo+Pj4gIMKgICNkZWZpbmUgQ1NTX1NXX1ZF UlNJT05fVUNfTUlOT1LCoMKgwqDCoMKgwqDCoCAoMHhGRiA8PCA4KQo+Pj4gIMKgICNkZWZpbmUg Q1NTX1NXX1ZFUlNJT05fVUNfUEFUQ0jCoMKgwqDCoMKgwqDCoCAoMHhGRiA8PCAwKQo+Pj4gLcKg wqDCoCB1MzIgcmVzZXJ2ZWRbMTRdOwo+Pj4gK8KgwqDCoCB1MzIgcmVzZXJ2ZWQwWzEzXTsKPj4+ ICvCoMKgwqAgdW5pb24gewo+Pj4gK8KgwqDCoMKgwqDCoMKgIHUzMiBwcml2YXRlX2RhdGFfc2l6 ZTsgLyogb25seSBhcHBsaWVzIHRvIEd1QyAqLwo+Pj4gK8KgwqDCoMKgwqDCoMKgIHUzMiByZXNl cnZlZDE7Cj4+PiArwqDCoMKgIH07Cj4+PiAgwqDCoMKgwqDCoCB1MzIgaGVhZGVyX2luZm87Cj4+ PiAgwqAgfSBfX3BhY2tlZDsKPj4+ICDCoCBzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgdWNf Y3NzX2hlYWRlcikgPT0gMTI4KTsKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=