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=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,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 6DF16C48BDF for ; Thu, 10 Jun 2021 13:20:23 +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 2974261374 for ; Thu, 10 Jun 2021 13:20:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2974261374 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 9B8996ED18; Thu, 10 Jun 2021 13:20:20 +0000 (UTC) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id C50EF6ED17; Thu, 10 Jun 2021 13:20:18 +0000 (UTC) IronPort-SDR: F1yJ3zpYx7b8+Sb8g31cDeT+5WTSgvaV9akdD5Fy56gjXDE7O2hI3/LxwTO9hifYoRj0XEVfZy d1yMjD7DfNmA== X-IronPort-AV: E=McAfee;i="6200,9189,10011"; a="203448515" X-IronPort-AV: E=Sophos;i="5.83,263,1616482800"; d="scan'208";a="203448515" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2021 06:19:53 -0700 IronPort-SDR: /s7SsScEEFlPavu5y6PUSLmT8QJQNY7+9ZuSlVgTAlJYjW4vq0TRV63wEDl/eBfx1UgmXMZLrk vydPjIGi9uEg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,263,1616482800"; d="scan'208";a="450375334" Received: from irvmail001.ir.intel.com ([10.43.11.63]) by fmsmga008.fm.intel.com with ESMTP; 10 Jun 2021 06:19:52 -0700 Received: from [10.249.139.200] (mwajdecz-MOBL.ger.corp.intel.com [10.249.139.200]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id 15ADJpq1014188; Thu, 10 Jun 2021 14:19:51 +0100 To: Matthew Brost References: <20210607180356.165785-1-matthew.brost@intel.com> <20210607180356.165785-8-matthew.brost@intel.com> <946237c6-1671-b419-5337-d5b8cc02a041@intel.com> <04a5897a-b521-b999-433e-81c417a19f70@intel.com> <4ec30495-2694-46da-225f-456ed2b6b4ee@intel.com> <20210610043858.GA12287@sdutt-i7> From: Michal Wajdeczko Message-ID: Date: Thu, 10 Jun 2021 15:19:50 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.10.2 MIME-Version: 1.0 In-Reply-To: <20210610043858.GA12287@sdutt-i7> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH 07/13] drm/i915/guc: New definition of the CTB registration action 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: , Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" CgpPbiAxMC4wNi4yMDIxIDA2OjM4LCBNYXR0aGV3IEJyb3N0IHdyb3RlOgo+IE9uIFdlZCwgSnVu IDA5LCAyMDIxIGF0IDEwOjA3OjIxUE0gKzAyMDAsIE1pY2hhbCBXYWpkZWN6a28gd3JvdGU6Cj4+ Cj4+Cj4+IE9uIDA5LjA2LjIwMjEgMTk6MzYsIEpvaG4gSGFycmlzb24gd3JvdGU6Cj4+PiBPbiA2 LzcvMjAyMSAxODoyMywgRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyB3cm90ZToKPj4+PiBPbiA2Lzcv MjAyMSAxMTowMyBBTSwgTWF0dGhldyBCcm9zdCB3cm90ZToKPj4+Pj4gRnJvbTogTWljaGFsIFdh amRlY3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+Cj4+Pj4+Cj4+Pj4+IERlZmluaXRp b24gb2YgdGhlIENUQiByZWdpc3RyYXRpb24gYWN0aW9uIGhhcyBjaGFuZ2VkLgo+Pj4+PiBBZGQg c29tZSBBQkkgZG9jdW1lbnRhdGlvbiBhbmQgaW1wbGVtZW50IHJlcXVpcmVkIGNoYW5nZXMuCj4+ Pj4+Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpkZWN6 a29AaW50ZWwuY29tPgo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEJyb3N0IDxtYXR0aGV3 LmJyb3N0QGludGVsLmNvbT4KPj4+Pj4gQ2M6IFBpb3RyIFBpw7Nya293c2tpIDxwaW90ci5waW9y a293c2tpQGludGVsLmNvbT4gIzQKPj4+Pj4gLS0tCj4+Pj4+IMKgIC4uLi9ncHUvZHJtL2k5MTUv Z3QvdWMvYWJpL2d1Y19hY3Rpb25zX2FiaS5owqAgfCAxMDcgKysrKysrKysrKysrKysrKysrCj4+ Pj4+IMKgIC4uLi9ndC91Yy9hYmkvZ3VjX2NvbW11bmljYXRpb25fY3RiX2FiaS5owqDCoMKgwqAg fMKgwqAgNCAtCj4+Pj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19j dC5jwqDCoMKgwqAgfMKgIDc2ICsrKysrKysrLS0tLS0KPj4+Pj4gwqAgMyBmaWxlcyBjaGFuZ2Vk LCAxNTIgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCj4+Pj4+Cj4+Pj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9hYmkvZ3VjX2FjdGlvbnNfYWJpLmgKPj4+ Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9hYmkvZ3VjX2FjdGlvbnNfYWJpLmgKPj4+ Pj4gaW5kZXggOTBlZmVmOGE3M2U0Li42NDI2ZmMxODM2OTIgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2FiaS9ndWNfYWN0aW9uc19hYmkuaAo+Pj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9hYmkvZ3VjX2FjdGlvbnNfYWJpLmgKPj4+Pj4g QEAgLTYsNiArNiwxMTMgQEAKPj4+Pj4gwqAgI2lmbmRlZiBfQUJJX0dVQ19BQ1RJT05TX0FCSV9I Cj4+Pj4+IMKgICNkZWZpbmUgX0FCSV9HVUNfQUNUSU9OU19BQklfSAo+Pj4+PiDCoCArLyoqCj4+ Pj4+ICsgKiBET0M6IEhPU1QyR1VDX1JFR0lTVEVSX0NUQgo+Pj4+PiArICoKPj4+Pj4gKyAqIFRo aXMgbWVzc2FnZSBpcyB1c2VkIGFzIHBhcnQgb2YgdGhlIGBDVEIgYmFzZWQgY29tbXVuaWNhdGlv bmBfCj4+Pj4+IHNldHVwLgo+Pj4+PiArICoKPj4+Pj4gKyAqIFRoaXMgbWVzc2FnZSBtdXN0IGJl IHNlbnQgYXMgYE1NSU8gSFhHIE1lc3NhZ2VgXy4KPj4+Pj4gKyAqCj4+Pj4+ICsgKgo+Pj4+PiAr LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+Cj4+Pj4+ICsgKsKgIHzCoMKgIHwgQml0c8KgIHwKPj4+ Pj4gRGVzY3JpcHRpb27CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 Cj4+Pj4+ICsgKgo+Pj4+PiArPT09Kz09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCj4+Pj4+Cj4+Pj4+ICsgKsKgIHwg MCB8wqDCoMKgIDMxIHwgT1JJR0lOID0KPj4+Pj4gR1VDX0hYR19PUklHSU5fSE9TVF/CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 Cj4+Pj4+ICsgKsKgIHwKPj4+Pj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+ICsgKsKgIHzCoMKgIHwg MzA6MjggfCBUWVBFID0KPj4+Pj4gR1VDX0hYR19UWVBFX1JFUVVFU1RfwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+Pj4+ ICsgKsKgIHwKPj4+Pj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+ICsgKsKgIHzCoMKgIHwgMjc6MTYg fCBEQVRBMCA9Cj4+Pj4+IE1CWsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwKPj4+Pj4gKyAqwqAgfAo+Pj4+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4gKyAqwqAgfMKg wqAgfMKgIDE1OjAgfCBBQ1RJT04gPSBfYEdVQ19BQ1RJT05fSE9TVDJHVUNfUkVHSVNURVJfQ1RC YCA9Cj4+Pj4+IDB4NTIwMMKgwqDCoMKgwqDCoMKgIHwKPj4+Pgo+Pj4+IFNwZWNzIHNheXMgNDUw NQo+Pj4+Cj4+Pj4+ICsgKgo+Pj4+PiArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+Cj4+Pj4+ICsg KsKgIHwgMSB8IDMxOjEyIHwgUkVTRVJWRUQgPQo+Pj4+PiBNQlrCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8Cj4+Pj4+ICsgKsKgIHwKPj4+Pj4gKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ Pj4+ICsgKsKgIHzCoMKgIHzCoCAxMTo4IHwgKipUWVBFKiogLSB0eXBlIGZvciB0aGUgYENUCj4+ Pj4+IEJ1ZmZlcmBfwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwKPj4+Pj4gKyAqwqAgfMKgwqAgfAo+Pj4+PiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4+PiArICrCoCB8 wqDCoCB8wqDCoMKgwqDCoMKgIHzCoMKgIC0gX2BHVUNfQ1RCX1RZUEVfSE9TVDJHVUNgID0KPj4+ Pj4gMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwKPj4+Pj4gKyAqwqAgfMKgwqAgfMKgwqDCoMKgwqDCoCB8wqDCoCAtIF9gR1VDX0NUQl9U WVBFX0dVQzJIT1NUYCA9Cj4+Pj4+IDHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+Pj4+ICsgKsKgIHwKPj4+Pj4gKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rCj4+Pj4+ICsgKsKgIHzCoMKgIHzCoMKgIDc6MCB8ICoqU0laRSoqIC0gc2l6ZSBvZiB0aGUg YENUIEJ1ZmZlcmBfIGluIDRLIHVuaXRzCj4+Pj4+IG1pbnVzIDHCoMKgwqDCoMKgIHwKPj4+Pj4g KyAqCj4+Pj4+ICstLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4KPj4+Pj4gKyAqwqAgfCAyIHzCoCAz MTowIHwgKipERVNDX0FERFIqKiAtIEdHVFQgYWRkcmVzcyBvZiB0aGUgYENUQgo+Pj4+PiBEZXNj cmlwdG9yYF/CoMKgwqDCoMKgwqDCoCB8Cj4+Pj4+ICsgKgo+Pj4+PiArLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rCj4+Pj4+Cj4+Pj4+ICsgKsKgIHwgMyB8wqAgMzE6MCB8ICoqQlVGRl9BRERGKiogLSBHR1RU IGFkZHJlc3Mgb2YgdGhlIGBDVAo+Pj4+PiBCdWZmZXJgX8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8Cj4+Pj4+ICsgKgo+Pj4+PiArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+Cj4+Pj4+ICsqCj4+ Pj4+ICsgKgo+Pj4+PiArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+Cj4+Pj4+ICsgKsKgIHzCoMKg IHwgQml0c8KgIHwKPj4+Pj4gRGVzY3JpcHRpb27CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB8Cj4+Pj4+ICsgKgo+Pj4+PiArPT09Kz09PT09PT0rPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCj4+Pj4+ Cj4+Pj4+ICsgKsKgIHwgMCB8wqDCoMKgIDMxIHwgT1JJR0lOID0KPj4+Pj4gR1VDX0hYR19PUklH SU5fR1VDX8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfAo+Pj4+PiArICrCoCB8Cj4+Pj4+ICstLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+ PiArICrCoCB8wqDCoCB8IDMwOjI4IHwgVFlQRSA9Cj4+Pj4+IEdVQ19IWEdfVFlQRV9SRVNQT05T RV9TVUNDRVNTX8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fAo+Pj4+PiArICrCoCB8Cj4+Pj4+ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+PiArICrCoCB8wqDCoCB8 wqAgMjc6MCB8IERBVEEwID0KPj4+Pj4gTUJawqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfAo+Pj4+PiArICoKPj4+Pj4gKy0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pgo+ Pj4+PiArICovCj4+Pj4+ICsjZGVmaW5lIEdVQ19BQ1RJT05fSE9TVDJHVUNfUkVHSVNURVJfQ1RC wqDCoMKgwqDCoMKgwqAgMHg0NTA1IC8vIEZJWE1FIDB4NTIwMAo+Pj4+Cj4+Pj4gV2h5IEZJWE1F PyBBRkFJQ1MgdGhlIHNwZWNzIHN0aWxsIHNheXMgNDUwNSwgZXZlbiBpZiB3ZSBwbGFuIHRvIHVw ZGF0ZQo+Pj4+IGF0IHNvbWUgcG9pbnQgSSBkb247dCB0aGluayB0aGlzIGRlc2VydmVzIGEgRklY TUUgc2luY2Ugbm90aGluZyBpcwo+Pj4+IGluY29ycmVjdC4KPj4+Pgo+Pj4+PiArCj4+Pj4+ICsj ZGVmaW5lIEhPU1QyR1VDX1JFR0lTVEVSX0NUQl9SRVFVRVNUX01TR19MRU4KPj4+Pj4gKEdVQ19I WEdfUkVRVUVTVF9NU0dfTUlOX0xFTiArIDN1KQo+Pj4+PiArI2RlZmluZSBIT1NUMkdVQ19SRUdJ U1RFUl9DVEJfUkVRVUVTVF9NU0dfMF9NQloKPj4+Pj4gR1VDX0hYR19SRVFVRVNUX01TR18wX0RB VEEwCj4+Pj4+ICsjZGVmaW5lIEhPU1QyR1VDX1JFR0lTVEVSX0NUQl9SRVFVRVNUX01TR18xX01C WsKgwqDCoMKgwqDCoMKgICgweGZmZmZmIDw8IDEyKQo+Pj4+PiArI2RlZmluZSBIT1NUMkdVQ19S RUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfMV9UWVBFwqDCoMKgICgweGYgPDwgOCkKPj4+Pj4gKyNk ZWZpbmXCoMKgIEdVQ19DVEJfVFlQRV9IT1NUMkdVQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAwdQo+Pj4+PiArI2RlZmluZcKgwqAgR1VDX0NUQl9UWVBFX0dVQzJIT1NUwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDF1Cj4+Pj4+ICsjZGVmaW5lIEhPU1QyR1VDX1JFR0lTVEVS X0NUQl9SRVFVRVNUX01TR18xX1NJWkXCoMKgwqAgKDB4ZmYgPDwgMCkKPj4+Pj4gKyNkZWZpbmUg SE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHXzJfREVTQ19BRERSCj4+Pj4+IEdVQ19I WEdfUkVRVUVTVF9NU0dfbl9EQVRBbgo+Pj4+PiArI2RlZmluZSBIT1NUMkdVQ19SRUdJU1RFUl9D VEJfUkVRVUVTVF9NU0dfM19CVUZGX0FERFIKPj4+Pj4gR1VDX0hYR19SRVFVRVNUX01TR19uX0RB VEFuCj4+Pj4KPj4+PiBUaGUgZnVsbCBtYXNrIHN0aWxsIHNlZW1zIGxpa2Ugb3ZlcmtpbGwgdG8g bWUgYW5kIEkgc3RpbGwgdGhpbmsgd2UKPj4+PiBzaG91bGQgdXNlIEJJVCgpL0dFTk1BU0soKSBh bmQgYSBfTUFTSyBwcmVmaXgsIGJ1dCBub3QgZ29pbmcgdG8gYmxvY2sKPj4+PiBvbiBpdC4KPj4+ Pgo+Pj4+PiArCj4+Pj4+ICsjZGVmaW5lIEhPU1QyR1VDX1JFR0lTVEVSX0NUQl9SRVNQT05TRV9N U0dfTEVOCj4+Pj4+IEdVQ19IWEdfUkVTUE9OU0VfTVNHX01JTl9MRU4KPj4+Pj4gKyNkZWZpbmUg SE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JFU1BPTlNFX01TR18wX01CWgo+Pj4+PiBHVUNfSFhHX1JF U1BPTlNFX01TR18wX0RBVEEwCj4+Pj4+ICsKPj4+Pj4gKy8qKgo+Pj4+PiArICogRE9DOiBIT1NU MkdVQ19ERVJFR0lTVEVSX0NUQgo+Pj4+PiArICoKPj4+Pj4gKyAqIFRoaXMgbWVzc2FnZSBpcyB1 c2VkIGFzIHBhcnQgb2YgdGhlIGBDVEIgYmFzZWQgY29tbXVuaWNhdGlvbmBfCj4+Pj4+IHRlYXJk b3duLgo+Pj4+PiArICoKPj4+Pj4gKyAqIFRoaXMgbWVzc2FnZSBtdXN0IGJlIHNlbnQgYXMgYE1N SU8gSFhHIE1lc3NhZ2VgXy4KPj4+Pj4gKyAqCj4+Pj4+ICsgKgo+Pj4+PiArLS0tKy0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rCj4+Pj4+Cj4+Pj4+ICsgKsKgIHzCoMKgIHwgQml0c8KgIHwKPj4+Pj4gRGVzY3JpcHRp b27CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+Pj4+ICsgKgo+ Pj4+PiArPT09Kz09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0rCj4+Pj4+Cj4+Pj4+ICsgKsKgIHwgMCB8wqDCoMKgIDMx IHwgT1JJR0lOID0KPj4+Pj4gR1VDX0hYR19PUklHSU5fSE9TVF/CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+Pj4+ICsgKsKg IHwKPj4+Pj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+ICsgKsKgIHzCoMKgIHwgMzA6MjggfCBUWVBF ID0KPj4+Pj4gR1VDX0hYR19UWVBFX1JFUVVFU1RfwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+Pj4+ICsgKsKgIHwKPj4+ Pj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+ICsgKsKgIHzCoMKgIHwgMjc6MTYgfCBEQVRBMCA9Cj4+ Pj4+IE1CWsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4+Pj4g KyAqwqAgfAo+Pj4+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4gKyAqwqAgfMKgwqAgfMKgIDE1OjAg fCBBQ1RJT04gPSBfYEdVQ19BQ1RJT05fSE9TVDJHVUNfREVSRUdJU1RFUl9DVEJgID0KPj4+Pj4g MHg1MjAxwqDCoMKgwqDCoCB8Cj4+Pj4KPj4+PiBTcGVjcyBzYXlzIDQ1MDYKPj4+Pgo+Pj4gSSB3 b3VsZCBzYXkgdGhhdCB0aGUgZW51bSB2YWx1ZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIHRo ZSBzdHJ1Y3R1cmUKPj4+IGRlZmluaXRpb24uIEkgd291bGQgYWxzbyBhcmd1ZSB0aGF0IHRoZXJl IGlzIG5vIHBvaW50IGluIHJlcGVhdGluZyB0aGUKPj4+IGNvbW1vbiBoZWFkZXIgc3RydWN0dXJl IGZvciBldmVyeSBzaW5nbGUgSDJHIGFjdGlvbiBkZWZpbml0aW9uLiBUaGF0IGlzCj4+PiBqdXN0 IG92ZXJseSB2ZXJib3NlIGFuZCBtYWtlcyBpdCBoYXJkZXIgdG8gcmVhZCB0aGUgc3BlYy4gSXQg aW1wbGllcwo+Pj4gdGhhdCBldmVyeSBhY3Rpb24gaGFzIGEgZGlmZmVyZW50IGhlYWRlciBzdHJ1 Y3R1cmUgYW5kIG11c3QgYmUgY29kZWQKPj4+IGluZGl2aWR1YWxseS4KPj4KPj4gYnV0IHNvbWUg YWN0aW9ucyBhcmUgZGVmaW5lZCBhcyBSRVFVRVNUIHNvbWUgYXMgRVZFTlQsIHNvIHdlIG5lZWQg dG8gc2F5Cj4+IHRoYXQsIGFsc28gZWFjaCBSRVFVRVNUIGFjdGlvbiBtYXkgZGVmaW5lIGl0cyBv d24gREFUQTAsIHNvIGFnYWluIHdlCj4+IHN0aWxsIG5lZWQgdG8gZGVmaW5lIHRoZXNlIGJpdHMg c29tZXdoZXJlCj4+Cj4+Pgo+Pj4gUGVyc29uYWxseSwgSSBkb24ndCBiZWxpZXZlIHdlIHNob3Vs ZCBiZSByZXBsaWNhdGluZyB0aGUgZW50aXJlIEd1QyBBUEkKPj4+IHNwZWMgaW4gdGhlIGRyaXZl ciBoZWFkZXIgZmlsZXMgYW55d2F5LiBUaGlzIGlzIG5vdCBzb21ldGhpbmcgdGhhdCBpcwo+Pj4g ZGVmaW5lZCBieSB0aGUgaTkxNSBkcml2ZXIgc28gdGhlIGk5MTUgZHJpdmVyIHNob3VsZCBub3Qg YmUgZGVmaW5pbmcgaXQhCj4+PiBJbnN0ZWFkLCBqdXN0IGluY2x1ZGUgYSBsaW5rIG9yIHBvaW50 ZXIgdG8gd2hlcmUgdGhlIGFjdHVhbCBzcGVjIGNhbiBiZQo+Pj4gZm91bmQuIFdlIGRvbid0IGNv cHkgdGhlIGVudGlyZSBic3BlYyBwYWdlIGZvciBldmVyeSByZWdpc3RlciB0aGF0IHRoZQo+Pj4g ZHJpdmVyIHRvdWNoZXMsIHNvIHdoeSBzaG91bGQgdGhpcyBiZSBhbnkgZGlmZmVyZW50Pwo+IAo+ IEkgYWdyZWUgd2l0aCBKb2huIG9uIHRoaXMgb25lLiBXZSBwbGFuIHB1Ymxpc2hpbmcgdGhlIEd1 QywgcmlnaHQ/IExldCdzCgpEbyB5b3Uga25vdyBvZiBhbnkgRVRBPyBJIGRvbid0CgphbmQgbGlr ZWx5IHRoZSBzYW1lIHByb21pc2Ugd2FzIGdpdmVuIGZldyB5ZWFycyBiYWNrIHdoZW4gR3VDIHdh cwppbnRyb2R1Y2VkIGluIHVwc3RyZWFtLCBJIGRvbid0IHdhbnQgdG8gaGF2ZSBqdXN0IGNvZGUg dGhhdCB3ZSBjYW4ndApjb21wYXJlIHdpdGggc3BlY2lmaWNhdGlvbiAoaW4gYW55IGZvcm0pCgoK PiBqdXN0IHBvaW50IHRvIGl0IGluIHRoZSBrZXJuZWwgRE9DLgo+IAo+IEFsc28gYXQgc29tZSBh bGwgdGhlc2UgZGVmaW5lcyByZWFsbHkgc2hvdWxkIGJlIGF1dG8tZ2VuZXJhdGVkLiBJCj4gc3Vw cG9zZSBpZiB0aGVzZSBoZWFkZXJzIGFyZSBhdXRvLWdlbmVyYXRlZCwgSSBjb3VsZCBsaXZlIHdp dGggdGhlc2UKCkkgd2FzIGFsc28gaG9waW5nIHRvIGdldCB0aGVzZSBBQkkgaGVhZGVycyBhdXRv LWdlbmVyYXRlZCBiZWZvcmUgd2UKc3RhcnQgdG8gdXNlZCB0aGVtIGZvciBnb29kLCB1bmZvcnR1 bmF0ZWx5IGl0IHdhcyBxdWl0ZSB0aGUgb3Bwb3NpdGU6CmZvciBzb21lIHRpbWUgdGhlc2UgaGFu ZCBjcmFmdGVkIHRhYmxlcyB3ZXJlIHVzZWQgYXMgaW5wdXQgZm9yCmRpc2N1c3Npb24gYW5kIHRo ZW4gdG8gcHJlcGFyZSBtYWNoaW5lIHJlYWRhYmxlIGZvcm1hdHMsIGJ1dCB0aGUgb25seQp0b29s IGN1cnJlbnRseSBhdmFpbGFibGUgKGFuZCBzdGlsbCBXSVApIGlzIGZvciBnZW5lcmF0aW5nIHNw ZWMKZG9jdW1lbnRhdGlvbgoKPiBmaWxlcyBnZW5lcmF0aW5nIGtlcm5lbCBET0MuIEkgY2FuJ3Qg cmVhbGx5IGxpdmUgd2l0aCBoYXZpbmcgdG8gbWFpbnRhaW4KPiBhIHRhYmxlIGxpa2UgdGhpcyBm b3IgZXZlcnkgYWN0aW9uIG1hbnVhbGx5LgoKdGhlIGdvYWwgaXMgdG8gZnJlZXplIEFCSSBzbyBu byBtYWludGVuYW5jZSB3aWxsIGJlIG5lY2Vzc2FyeSwgZXhjZXB0CmFkZGluZyBuZXcgYWN0aW9u cywgYW5kIHRoYXQncyBhbHNvIHRoZSByZWFzb24gdG8ga2VlcCB0aGVzZSBBQkkgZmlsZXMKc2Vw YXJhdGUgZnJvbSB0aGUgcmVzdCBvZiBvdXIgaGVhZGVycywgd2hlcmUgd2UgY2FuIGFkZC9tb2Rp ZnkvaW1wcm92ZQphbnkgaGVscGVycy93cmFwcGVycyBhcyB3ZSB3YW50LgoKYW5kIEkgZG9uJ3Qg cmVjYWxsIHRoYXQgeW91IHdlcmUgZm9yY2VkIHRvIG1vZGlmeSBhbnkgb2Ygc3VjaCB0YWJsZXMK eWV0LCBub3Igd2VyZSBhc2tlZCB0byBtYW51YWxseSBwcmVwYXJlIHRoZW0gZm9yIHRoZSByZXN0 IG9mIHRoZQpleGlzdGluZyBhY3Rpb25zLCBlc3BlY2lhbGx5IEd1QyBzdWJtaXNzaW9uIG9uZXMs IHNvIHdoeSBjb21wbGFpbj8KCj4gCj4gTWF0dAo+IAo+Pgo+PiB0byBzb21lIGV4dGVuZCB3ZSBo YXZlIHRvIHJlcGxpY2F0ZSBhdCBsZWFzdCBwYXJ0IG9mIHRoZSBHdUMgQUJJIHNwZWMsCj4+IHBh cnQgdGhhdCBkZWZpbmVzIGFsbCBiaXRzLCBhbmQgSU1ITyB0aGVyZSBpcyBub3RoaW5nIHdyb25n IGlmIGl0IGNvbWVzCj4+IHdpdGggZnVsbCBtZXNzYWdlIGxheW91dCBkZWZpbml0aW9ucywgZXNw ZWNpYWxseSBpZiB5b3UgY29tcGFyZSB0aGF0Cj4+IHdpdGggcHJldmlvdXMgYXBwcm9hY2gsIHdl cmUgSDJHIGFjdGlvbiBkZWZpbml0aW9ucyB3ZXJlIGxpbWl0ZWQganVzdCB0bwo+PiBzaW5nbGUg ZW51bSB2YWx1ZSAoYW5kIHRvIGZpbmQgb3V0IGhvdyB0byB1c2UgZ2l2ZW4gSDJHIHlvdSBoYWQg dG8gbG9vawo+PiBpbnRvIGZpcm13YXJlIHNvdXJjZSBjb2RlKQo+Pgo+PiBzbyB3aGlsZSB3ZSBr ZWVwIHRoZXNlIGFiaS5oIGZpbGVzIGluIGtlcm5lbCByZXBvLCB0aGV5IHNoYWxsIGJlIHRyZWF0 ZWQKPj4gYXMgcmVhZC1vbmx5IGltcG9ydGVkIGV4dGVybmFsIGludGVyZmFjZSBkZWZpbml0aW9u cywgZnJvbSB3aGljaCB3ZSBqdXN0Cj4+IHVzZSBhbGwgI2RlZmluZSBmb3IgY29kaW5nIGFuZCBE T0M6IGZvciBkb2N1bWVudGF0aW9uIChsYXR0ZXIgYXQgbGVhc3QKPj4gdW50aWwgR3VDIHdpbGwg cmVsZWFzZSBpdHMgc3BlYyB0byB0aGUgcHVibGljKQo+Pgo+Pj4KPj4+IEpvaG4uCj4+Pgo+Pj4K Pj4+Pj4gKyAqCj4+Pj4+ICstLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4KPj4+Pj4gKyAqwqAgfCAx IHwgMzE6MTIgfCBSRVNFUlZFRCA9Cj4+Pj4+IE1CWsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHwKPj4+Pj4gKyAqwqAgfAo+Pj4+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4gKyAq wqAgfMKgwqAgfMKgIDExOjggfCAqKlRZUEUqKiAtIHR5cGUgb2YgdGhlIGBDVAo+Pj4+PiBCdWZm ZXJgX8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwK Pj4+Pj4gKyAqwqAgfMKgwqAgfAo+Pj4+PiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4+PiArICrCoCB8wqDCoCB8 wqDCoMKgwqDCoMKgIHwgc2VlCj4+Pj4+IGBHVUNfQUNUSU9OX0hPU1QyR1VDX1JFR0lTVEVSX0NU QmBfwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4+Pj4gKyAq wqAgfAo+Pj4+PiArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPj4+Pj4gKyAqwqAgfMKgwqAgfMKgwqAgNzowIHwg UkVTRVJWRUQgPQo+Pj4+PiBNQlrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 Cj4+Pj4+ICsgKgo+Pj4+PiArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+Cj4+Pj4+ICsqCj4+Pj4+ ICsgKgo+Pj4+PiArLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+Pj4+Cj4+Pj4+ICsgKsKgIHzCoMKgIHwg Qml0c8KgIHwKPj4+Pj4gRGVzY3JpcHRpb27CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8Cj4+Pj4+ICsgKgo+Pj4+PiArPT09Kz09PT09PT0rPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCj4+Pj4+Cj4+ Pj4+ICsgKsKgIHwgMCB8wqDCoMKgIDMxIHwgT1JJR0lOID0KPj4+Pj4gR1VDX0hYR19PUklHSU5f R1VDX8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfAo+Pj4+PiArICrCoCB8Cj4+Pj4+ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+PiAr ICrCoCB8wqDCoCB8IDMwOjI4IHwgVFlQRSA9Cj4+Pj4+IEdVQ19IWEdfVFlQRV9SRVNQT05TRV9T VUNDRVNTX8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+ Pj4+PiArICrCoCB8Cj4+Pj4+ICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+PiArICrCoCB8wqDCoCB8wqAg Mjc6MCB8IERBVEEwID0KPj4+Pj4gTUJawqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfAo+Pj4+PiArICoKPj4+Pj4gKy0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+Pj4+Pgo+Pj4+ PiArICovCj4+Pj4+ICsjZGVmaW5lIEdVQ19BQ1RJT05fSE9TVDJHVUNfREVSRUdJU1RFUl9DVELC oMKgwqDCoMKgwqDCoCAweDQ1MDYgLy8gRklYTUUKPj4+Pj4gMHg1MjAxCj4+Pj4KPj4+PiBTYW1l IGNvbW1lbnQgZm9yIHRoZSBGSVhNRSBhcyBhYm92ZQo+Pj4+Cj4+Pj4+ICsKPj4+Pj4gKyNkZWZp bmUgSE9TVDJHVUNfREVSRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfTEVOCj4+Pj4+IChHVUNfSFhH X1JFUVVFU1RfTVNHX01JTl9MRU4gKyAxdSkKPj4+Pj4gKyNkZWZpbmUgSE9TVDJHVUNfREVSRUdJ U1RFUl9DVEJfUkVRVUVTVF9NU0dfMF9NQloKPj4+Pj4gR1VDX0hYR19SRVFVRVNUX01TR18wX0RB VEEwCj4+Pj4+ICsjZGVmaW5lIEhPU1QyR1VDX0RFUkVHSVNURVJfQ1RCX1JFUVVFU1RfTVNHXzFf TUJawqDCoMKgICgweGZmZmZmIDw8IDEyKQo+Pj4+PiArI2RlZmluZSBIT1NUMkdVQ19ERVJFR0lT VEVSX0NUQl9SRVFVRVNUX01TR18xX1RZUEXCoMKgwqAgKDB4ZiA8PCA4KQo+Pj4+PiArI2RlZmlu ZSBIT1NUMkdVQ19ERVJFR0lTVEVSX0NUQl9SRVFVRVNUX01TR18xX01CWjLCoMKgwqAgKDB4ZmYg PDwgMCkKPj4+Pj4gKwo+Pj4+PiArI2RlZmluZSBIT1NUMkdVQ19ERVJFR0lTVEVSX0NUQl9SRVNQ T05TRV9NU0dfTEVOCj4+Pj4+IEdVQ19IWEdfUkVTUE9OU0VfTVNHX01JTl9MRU4KPj4+Pj4gKyNk ZWZpbmUgSE9TVDJHVUNfREVSRUdJU1RFUl9DVEJfUkVTUE9OU0VfTVNHXzBfTUJaCj4+Pj4+IEdV Q19IWEdfUkVTUE9OU0VfTVNHXzBfREFUQTAKPj4+Pj4gKwo+Pj4+PiArLyogbGVnYWN5IGRlZmlu aXRpb25zICovCj4+Pj4+ICsKPj4+Pj4gwqAgZW51bSBpbnRlbF9ndWNfYWN0aW9uIHsKPj4+Pj4g wqDCoMKgwqDCoCBJTlRFTF9HVUNfQUNUSU9OX0RFRkFVTFQgPSAweDAsCj4+Pj4+IMKgwqDCoMKg wqAgSU5URUxfR1VDX0FDVElPTl9SRVFVRVNUX1BSRUVNUFRJT04gPSAweDIsCj4+Pj4+IGRpZmYg LS1naXQKPj4+Pj4gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9hYmkvZ3VjX2NvbW11bmlj YXRpb25fY3RiX2FiaS5oCj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvYWJpL2d1 Y19jb21tdW5pY2F0aW9uX2N0Yl9hYmkuaAo+Pj4+PiBpbmRleCBjMmEwNjlhNzhlMDEuLjEyN2Iy NTZhNjYyYyAxMDA2NDQKPj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvYWJp L2d1Y19jb21tdW5pY2F0aW9uX2N0Yl9hYmkuaAo+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC91Yy9hYmkvZ3VjX2NvbW11bmljYXRpb25fY3RiX2FiaS5oCj4+Pj4+IEBAIC0xMTIs MTAgKzExMiw2IEBAIHN0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCBndWNfY3RfYnVmZmVyX2Rl c2MpCj4+Pj4+ID09IDY0KTsKPj4+Pj4gwqDCoCAqIC0gKipmbGFncyoqLCBob2xkcyB2YXJpb3Vz IGJpdHMgdG8gY29udHJvbCBtZXNzYWdlIGhhbmRsaW5nCj4+Pj4+IMKgwqAgKi8KPj4+Pj4gwqAg LS8qIFR5cGUgb2YgY29tbWFuZCB0cmFuc3BvcnQgYnVmZmVyICovCj4+Pj4+IC0jZGVmaW5lIElO VEVMX0dVQ19DVF9CVUZGRVJfVFlQRV9TRU5EwqDCoMKgIDB4MHUKPj4+Pj4gLSNkZWZpbmUgSU5U RUxfR1VDX0NUX0JVRkZFUl9UWVBFX1JFQ1bCoMKgwqAgMHgxdQo+Pj4+PiAtCj4+Pj4+IMKgIC8q Cj4+Pj4+IMKgwqAgKiBEZWZpbml0aW9uIG9mIHRoZSBjb21tYW5kIHRyYW5zcG9ydCBtZXNzYWdl IGhlYWRlciAoRFcwKQo+Pj4+PiDCoMKgICoKPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19jdC5jCj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvdWMvaW50ZWxfZ3VjX2N0LmMKPj4+Pj4gaW5kZXggMzI0MWE0NzcxOTZmLi42YTI5YmU3 NzljYzkgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Y19jdC5jCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Y19jdC5jCj4+Pj4+IEBAIC0xMDMsOSArMTAzLDkgQEAgdm9pZCBpbnRlbF9ndWNfY3RfaW5pdF9l YXJseShzdHJ1Y3QgaW50ZWxfZ3VjX2N0Cj4+Pj4+ICpjdCkKPj4+Pj4gwqAgc3RhdGljIGlubGlu ZSBjb25zdCBjaGFyICpndWNfY3RfYnVmZmVyX3R5cGVfdG9fc3RyKHUzMiB0eXBlKQo+Pj4+PiDC oCB7Cj4+Pj4+IMKgwqDCoMKgwqAgc3dpdGNoICh0eXBlKSB7Cj4+Pj4+IC3CoMKgwqAgY2FzZSBJ TlRFTF9HVUNfQ1RfQlVGRkVSX1RZUEVfU0VORDoKPj4+Pj4gK8KgwqDCoCBjYXNlIEdVQ19DVEJf VFlQRV9IT1NUMkdVQzoKPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAiU0VORCI7Cj4+ Pj4+IC3CoMKgwqAgY2FzZSBJTlRFTF9HVUNfQ1RfQlVGRkVSX1RZUEVfUkVDVjoKPj4+Pj4gK8Kg wqDCoCBjYXNlIEdVQ19DVEJfVFlQRV9HVUMySE9TVDoKPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiAiUkVDViI7Cj4+Pj4+IMKgwqDCoMKgwqAgZGVmYXVsdDoKPj4+Pj4gwqDCoMKgwqDC oMKgwqDCoMKgIHJldHVybiAiPGludmFsaWQ+IjsKPj4+Pj4gQEAgLTEzNiwyNSArMTM2LDMzIEBA IHN0YXRpYyB2b2lkIGd1Y19jdF9idWZmZXJfaW5pdChzdHJ1Y3QKPj4+Pj4gaW50ZWxfZ3VjX2N0 X2J1ZmZlciAqY3RiLAo+Pj4+PiDCoMKgwqDCoMKgIGd1Y19jdF9idWZmZXJfcmVzZXQoY3RiKTsK Pj4+Pj4gwqAgfQo+Pj4+PiDCoCAtc3RhdGljIGludCBndWNfYWN0aW9uX3JlZ2lzdGVyX2N0X2J1 ZmZlcihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBkZXNjX2FkZHIsCj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiB0eXBlKQo+Pj4+PiArc3RhdGljIGludCBndWNf YWN0aW9uX3JlZ2lzdGVyX2N0X2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMgo+Pj4+ PiB0eXBlLAo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 MzIgZGVzY19hZGRyLCB1MzIgYnVmZl9hZGRyLCB1MzIgc2l6ZSkKPj4+Pj4gwqAgewo+Pj4+PiAt wqDCoMKgIHUzMiBhY3Rpb25bXSA9IHsKPj4+Pj4gLcKgwqDCoMKgwqDCoMKgIElOVEVMX0dVQ19B Q1RJT05fUkVHSVNURVJfQ09NTUFORF9UUkFOU1BPUlRfQlVGRkVSLAo+Pj4+PiAtwqDCoMKgwqDC oMKgwqAgZGVzY19hZGRyLAo+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgc2l6ZW9mKHN0cnVjdCBndWNf Y3RfYnVmZmVyX2Rlc2MpLAo+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgdHlwZQo+Pj4+PiArwqDCoMKg IHUzMiByZXF1ZXN0W0hPU1QyR1VDX1JFR0lTVEVSX0NUQl9SRVFVRVNUX01TR19MRU5dID0gewo+ Pj4+PiArwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChHVUNfSFhHX01TR18wX09SSUdJTiwgR1VD X0hYR19PUklHSU5fSE9TVCkgfAo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChHVUNf SFhHX01TR18wX1RZUEUsIEdVQ19IWEdfVFlQRV9SRVFVRVNUKSB8Cj4+Pj4+ICvCoMKgwqDCoMKg wqDCoCBGSUVMRF9QUkVQKEdVQ19IWEdfUkVRVUVTVF9NU0dfMF9BQ1RJT04sCj4+Pj4+IEdVQ19B Q1RJT05fSE9TVDJHVUNfUkVHSVNURVJfQ1RCKSwKPj4+Pgo+Pj4+IElNTyB3ZSBjb3VsZCB1c2Ug YSBtYWNybyBvciAyIGZvciB0aGUgSFhHIGhlYWRlciwgdG8gYXZvaWQgYWxsIHRoZXNlCj4+Pj4g bGluZXMsIHdoaWNoIGFyZSBoYXJkIHRvIHJlYWQuIHNvbWV0aGluZyBsaWtlOgo+Pj4+Cj4+Pj4g R1VDX0hYR19IRUFERVIob3JpZ2luLCB0eXBlLCBkYXRhLCBhY3Rpb24pIFwKPj4+PiDCoMKgwqAg KEZJRUxEX1BSRVAoR1VDX0hYR19NU0dfMF9PUklHSU4sIG9yaWdpbikgfCBcCj4+Pj4gwqDCoMKg wqAgRklFTERfUFJFUChHVUNfSFhHX01TR18wX1RZUEUsIHR5cGUpIHwgXAo+Pj4+IEZJRUxEX1BS RVAoR1VDX0hYR19NU0dfMF9EQVRBMCwgZGF0YSkgfCBcCj4+Pj4gwqDCoMKgwqAgRklFTERfUFJF UChHVUNfSFhHX1JFUVVFU1RfTVNHXzBfQUNUSU9OLCBhY3Rpb24pKQo+Pj4+Cj4+Pj4gSDJHX0hF QURFUih0eXBlLCBkYXRhLCBhY3Rpb24pIFwKPj4+PiDCoMKgwqAgR1VDX0hYR19IRUFERVIoR1VD X0hYR19PUklHSU5fSE9TVCwgdHlwZSwgZGF0YSwgYWN0aW9uKQo+Pj4+Cj4+Pj4gYW5kIHRoZW4g Y2FsbAo+Pj4+Cj4+Pj4gSDJHX0hFQURFUihHVUNfSFhHX1RZUEVfUkVRVUVTVCwgMCwgR1VDX0FD VElPTl9IT1NUMkdVQ19SRUdJU1RFUl9DVEIpCj4+Pj4KPj4+Pgo+Pj4+IE5vdCBhIGJsb2NrZXIu Cj4+Pj4KPj4+PiBEYW5pZWxlCj4+Pj4KPj4+Pj4gKyBGSUVMRF9QUkVQKEhPU1QyR1VDX1JFR0lT VEVSX0NUQl9SRVFVRVNUX01TR18xX1NJWkUsIHNpemUgLyBTWl80SyAtCj4+Pj4+IDEpIHwKPj4+ Pj4gK8KgwqDCoMKgwqDCoMKgIEZJRUxEX1BSRVAoSE9TVDJHVUNfUkVHSVNURVJfQ1RCX1JFUVVF U1RfTVNHXzFfVFlQRSwgdHlwZSksCj4+Pj4+ICsgRklFTERfUFJFUChIT1NUMkdVQ19SRUdJU1RF Ul9DVEJfUkVRVUVTVF9NU0dfMl9ERVNDX0FERFIsIGRlc2NfYWRkciksCj4+Pj4+ICsgRklFTERf UFJFUChIT1NUMkdVQ19SRUdJU1RFUl9DVEJfUkVRVUVTVF9NU0dfM19CVUZGX0FERFIsIGJ1ZmZf YWRkciksCj4+Pj4+IMKgwqDCoMKgwqAgfTsKPj4+Pj4gwqAgLcKgwqDCoCAvKiBDYW4ndCB1c2Ug Z2VuZXJpYyBzZW5kKCksIENUIHJlZ2lzdHJhdGlvbiBtdXN0IGdvIG92ZXIgTU1JTyAqLwo+Pj4+ PiAtwqDCoMKgIHJldHVybiBpbnRlbF9ndWNfc2VuZF9tbWlvKGd1YywgYWN0aW9uLCBBUlJBWV9T SVpFKGFjdGlvbiksCj4+Pj4+IE5VTEwsIDApOwo+Pj4+PiArwqDCoMKgIEdFTV9CVUdfT04odHlw ZSAhPSBHVUNfQ1RCX1RZUEVfSE9TVDJHVUMgJiYgdHlwZSAhPQo+Pj4+PiBHVUNfQ1RCX1RZUEVf R1VDMkhPU1QpOwo+Pj4+PiArwqDCoMKgIEdFTV9CVUdfT04oc2l6ZSAlIFNaXzRLKTsKPj4+Pj4g Kwo+Pj4+PiArwqDCoMKgIC8qIENUIHJlZ2lzdHJhdGlvbiBtdXN0IGdvIG92ZXIgTU1JTyAqLwo+ Pj4+PiArwqDCoMKgIHJldHVybiBpbnRlbF9ndWNfc2VuZF9tbWlvKGd1YywgcmVxdWVzdCwgQVJS QVlfU0laRShyZXF1ZXN0KSwKPj4+Pj4gTlVMTCwgMCk7Cj4+Pj4+IMKgIH0KPj4+Pj4gwqAgLXN0 YXRpYyBpbnQgY3RfcmVnaXN0ZXJfYnVmZmVyKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LCB1MzIK Pj4+Pj4gZGVzY19hZGRyLCB1MzIgdHlwZSkKPj4+Pj4gK3N0YXRpYyBpbnQgY3RfcmVnaXN0ZXJf YnVmZmVyKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0LCB1MzIgdHlwZSwKPj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGRlc2NfYWRkciwgdTMyIGJ1ZmZfYWRkciwg dTMyIHNpemUpCj4+Pj4+IMKgIHsKPj4+Pj4gLcKgwqDCoCBpbnQgZXJyID0gZ3VjX2FjdGlvbl9y ZWdpc3Rlcl9jdF9idWZmZXIoY3RfdG9fZ3VjKGN0KSwKPj4+Pj4gZGVzY19hZGRyLCB0eXBlKTsK Pj4+Pj4gK8KgwqDCoCBpbnQgZXJyOwo+Pj4+PiDCoCArwqDCoMKgIGVyciA9IGd1Y19hY3Rpb25f cmVnaXN0ZXJfY3RfYnVmZmVyKGN0X3RvX2d1YyhjdCksIHR5cGUsCj4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlc2NfYWRkciwgYnVmZl9hZGRy LCBzaXplKTsKPj4+Pj4gwqDCoMKgwqDCoCBpZiAodW5saWtlbHkoZXJyKSkKPj4+Pj4gwqDCoMKg wqDCoMKgwqDCoMKgIENUX0VSUk9SKGN0LCAiRmFpbGVkIHRvIHJlZ2lzdGVyICVzIGJ1ZmZlciAo ZXJyPSVkKVxuIiwKPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBndWNfY3RfYnVm ZmVyX3R5cGVfdG9fc3RyKHR5cGUpLCBlcnIpOwo+Pj4+PiBAQCAtMTYzLDE0ICsxNzEsMTcgQEAg c3RhdGljIGludCBjdF9yZWdpc3Rlcl9idWZmZXIoc3RydWN0Cj4+Pj4+IGludGVsX2d1Y19jdCAq Y3QsIHUzMiBkZXNjX2FkZHIsIHUzMiB0eXBlKQo+Pj4+PiDCoCDCoCBzdGF0aWMgaW50IGd1Y19h Y3Rpb25fZGVyZWdpc3Rlcl9jdF9idWZmZXIoc3RydWN0IGludGVsX2d1YyAqZ3VjLAo+Pj4+PiB1 MzIgdHlwZSkKPj4+Pj4gwqAgewo+Pj4+PiAtwqDCoMKgIHUzMiBhY3Rpb25bXSA9IHsKPj4+Pj4g LcKgwqDCoMKgwqDCoMKgIElOVEVMX0dVQ19BQ1RJT05fREVSRUdJU1RFUl9DT01NQU5EX1RSQU5T UE9SVF9CVUZGRVIsCj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBDVEJfT1dORVJfSE9TVCwKPj4+Pj4g LcKgwqDCoMKgwqDCoMKgIHR5cGUKPj4+Pj4gK8KgwqDCoCB1MzIgcmVxdWVzdFtIT1NUMkdVQ19E RVJFR0lTVEVSX0NUQl9SRVFVRVNUX01TR19MRU5dID0gewo+Pj4+PiArwqDCoMKgwqDCoMKgwqAg RklFTERfUFJFUChHVUNfSFhHX01TR18wX09SSUdJTiwgR1VDX0hYR19PUklHSU5fSE9TVCkgfAo+ Pj4+PiArwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChHVUNfSFhHX01TR18wX1RZUEUsIEdVQ19I WEdfVFlQRV9SRVFVRVNUKSB8Cj4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEdVQ19I WEdfUkVRVUVTVF9NU0dfMF9BQ1RJT04sCj4+Pj4+IEdVQ19BQ1RJT05fSE9TVDJHVUNfREVSRUdJ U1RFUl9DVEIpLAo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChIT1NUMkdVQ19ERVJF R0lTVEVSX0NUQl9SRVFVRVNUX01TR18xX1RZUEUsIHR5cGUpLAo+Pj4+PiDCoMKgwqDCoMKgIH07 Cj4+Pj4+IMKgIC3CoMKgwqAgLyogQ2FuJ3QgdXNlIGdlbmVyaWMgc2VuZCgpLCBDVCBkZXJlZ2lz dHJhdGlvbiBtdXN0IGdvIG92ZXIKPj4+Pj4gTU1JTyAqLwo+Pj4+PiAtwqDCoMKgIHJldHVybiBp bnRlbF9ndWNfc2VuZF9tbWlvKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFjdGlvbiksCj4+Pj4+ IE5VTEwsIDApOwo+Pj4+PiArwqDCoMKgIEdFTV9CVUdfT04odHlwZSAhPSBHVUNfQ1RCX1RZUEVf SE9TVDJHVUMgJiYgdHlwZSAhPQo+Pj4+PiBHVUNfQ1RCX1RZUEVfR1VDMkhPU1QpOwo+Pj4+PiAr Cj4+Pj4+ICvCoMKgwqAgLyogQ1QgZGVyZWdpc3RyYXRpb24gbXVzdCBnbyBvdmVyIE1NSU8gKi8K Pj4+Pj4gK8KgwqDCoCByZXR1cm4gaW50ZWxfZ3VjX3NlbmRfbW1pbyhndWMsIHJlcXVlc3QsIEFS UkFZX1NJWkUocmVxdWVzdCksCj4+Pj4+IE5VTEwsIDApOwo+Pj4+PiDCoCB9Cj4+Pj4+IMKgIMKg IHN0YXRpYyBpbnQgY3RfZGVyZWdpc3Rlcl9idWZmZXIoc3RydWN0IGludGVsX2d1Y19jdCAqY3Qs IHUzMiB0eXBlKQo+Pj4+PiBAQCAtMjU4LDcgKzI2OSw3IEBAIHZvaWQgaW50ZWxfZ3VjX2N0X2Zp bmkoc3RydWN0IGludGVsX2d1Y19jdCAqY3QpCj4+Pj4+IMKgIGludCBpbnRlbF9ndWNfY3RfZW5h YmxlKHN0cnVjdCBpbnRlbF9ndWNfY3QgKmN0KQo+Pj4+PiDCoCB7Cj4+Pj4+IMKgwqDCoMKgwqAg c3RydWN0IGludGVsX2d1YyAqZ3VjID0gY3RfdG9fZ3VjKGN0KTsKPj4+Pj4gLcKgwqDCoCB1MzIg YmFzZSwgY21kczsKPj4+Pj4gK8KgwqDCoCB1MzIgYmFzZSwgZGVzYywgY21kczsKPj4+Pj4gwqDC oMKgwqDCoCB2b2lkICpibG9iOwo+Pj4+PiDCoMKgwqDCoMKgIGludCBlcnI7Cj4+Pj4+IMKgIEBA IC0yNzQsMjMgKzI4NSwyNiBAQCBpbnQgaW50ZWxfZ3VjX2N0X2VuYWJsZShzdHJ1Y3QgaW50ZWxf Z3VjX2N0ICpjdCkKPj4+Pj4gwqDCoMKgwqDCoCBHRU1fQlVHX09OKGJsb2IgIT0gY3QtPmN0YnMu c2VuZC5kZXNjKTsKPj4+Pj4gwqAgwqDCoMKgwqDCoCAvKiAocmUpaW5pdGlhbGl6ZSBkZXNjcmlw dG9ycyAqLwo+Pj4+PiAtwqDCoMKgIGNtZHMgPSBiYXNlICsgcHRyZGlmZihjdC0+Y3Ricy5zZW5k LmNtZHMsIGJsb2IpOwo+Pj4+PiDCoMKgwqDCoMKgIGd1Y19jdF9idWZmZXJfcmVzZXQoJmN0LT5j dGJzLnNlbmQpOwo+Pj4+PiAtCj4+Pj4+IC3CoMKgwqAgY21kcyA9IGJhc2UgKyBwdHJkaWZmKGN0 LT5jdGJzLnJlY3YuY21kcywgYmxvYik7Cj4+Pj4+IMKgwqDCoMKgwqAgZ3VjX2N0X2J1ZmZlcl9y ZXNldCgmY3QtPmN0YnMucmVjdik7Cj4+Pj4+IMKgIMKgwqDCoMKgwqAgLyoKPj4+Pj4gwqDCoMKg wqDCoMKgICogUmVnaXN0ZXIgYm90aCBDVCBidWZmZXJzIHN0YXJ0aW5nIHdpdGggUkVDViBidWZm ZXIuCj4+Pj4+IMKgwqDCoMKgwqDCoCAqIERlc2NyaXB0b3JzIGFyZSBpbiBmaXJzdCBoYWxmIG9m IHRoZSBibG9iLgo+Pj4+PiDCoMKgwqDCoMKgwqAgKi8KPj4+Pj4gLcKgwqDCoCBlcnIgPSBjdF9y ZWdpc3Rlcl9idWZmZXIoY3QsIGJhc2UgKyBwdHJkaWZmKGN0LT5jdGJzLnJlY3YuZGVzYywKPj4+ Pj4gYmxvYiksCj4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBJTlRFTF9H VUNfQ1RfQlVGRkVSX1RZUEVfUkVDVik7Cj4+Pj4+ICvCoMKgwqAgZGVzYyA9IGJhc2UgKyBwdHJk aWZmKGN0LT5jdGJzLnJlY3YuZGVzYywgYmxvYik7Cj4+Pj4+ICvCoMKgwqAgY21kcyA9IGJhc2Ug KyBwdHJkaWZmKGN0LT5jdGJzLnJlY3YuY21kcywgYmxvYik7Cj4+Pj4+ICvCoMKgwqAgZXJyID0g Y3RfcmVnaXN0ZXJfYnVmZmVyKGN0LCBHVUNfQ1RCX1RZUEVfR1VDMkhPU1QsCj4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXNjLCBjbWRzLCBjdC0+Y3Ricy5yZWN2LnNp emUgKiA0KTsKPj4+Pj4gKwo+Pj4+PiDCoMKgwqDCoMKgIGlmICh1bmxpa2VseShlcnIpKQo+Pj4+ PiDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfb3V0Owo+Pj4+PiDCoCAtwqDCoMKgIGVyciA9 IGN0X3JlZ2lzdGVyX2J1ZmZlcihjdCwgYmFzZSArCj4+Pj4+IHB0cmRpZmYoY3QtPmN0YnMuc2Vu ZC5kZXNjLCBibG9iKSwKPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIElO VEVMX0dVQ19DVF9CVUZGRVJfVFlQRV9TRU5EKTsKPj4+Pj4gK8KgwqDCoCBkZXNjID0gYmFzZSAr IHB0cmRpZmYoY3QtPmN0YnMuc2VuZC5kZXNjLCBibG9iKTsKPj4+Pj4gK8KgwqDCoCBjbWRzID0g YmFzZSArIHB0cmRpZmYoY3QtPmN0YnMuc2VuZC5jbWRzLCBibG9iKTsKPj4+Pj4gK8KgwqDCoCBl cnIgPSBjdF9yZWdpc3Rlcl9idWZmZXIoY3QsIEdVQ19DVEJfVFlQRV9IT1NUMkdVQywKPj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlc2MsIGNtZHMsIGN0LT5jdGJzLnNl bmQuc2l6ZSAqIDQpOwo+Pj4+PiArCj4+Pj4+IMKgwqDCoMKgwqAgaWYgKHVubGlrZWx5KGVycikp Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9kZXJlZ2lzdGVyOwo+Pj4+PiDCoCBA QCAtMjk5LDcgKzMxMyw3IEBAIGludCBpbnRlbF9ndWNfY3RfZW5hYmxlKHN0cnVjdCBpbnRlbF9n dWNfY3QgKmN0KQo+Pj4+PiDCoMKgwqDCoMKgIHJldHVybiAwOwo+Pj4+PiDCoCDCoCBlcnJfZGVy ZWdpc3RlcjoKPj4+Pj4gLcKgwqDCoCBjdF9kZXJlZ2lzdGVyX2J1ZmZlcihjdCwgSU5URUxfR1VD X0NUX0JVRkZFUl9UWVBFX1JFQ1YpOwo+Pj4+PiArwqDCoMKgIGN0X2RlcmVnaXN0ZXJfYnVmZmVy KGN0LCBHVUNfQ1RCX1RZUEVfR1VDMkhPU1QpOwo+Pj4+PiDCoCBlcnJfb3V0Ogo+Pj4+PiDCoMKg wqDCoMKgIENUX1BST0JFX0VSUk9SKGN0LCAiRmFpbGVkIHRvIGVuYWJsZSBDVEIgKCVwZSlcbiIs IEVSUl9QVFIoZXJyKSk7Cj4+Pj4+IMKgwqDCoMKgwqAgcmV0dXJuIGVycjsKPj4+Pj4gQEAgLTMx OCw4ICszMzIsOCBAQCB2b2lkIGludGVsX2d1Y19jdF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9ndWNf Y3QgKmN0KQo+Pj4+PiDCoMKgwqDCoMKgIGN0LT5lbmFibGVkID0gZmFsc2U7Cj4+Pj4+IMKgIMKg wqDCoMKgwqAgaWYgKGludGVsX2d1Y19pc19md19ydW5uaW5nKGd1YykpIHsKPj4+Pj4gLcKgwqDC oMKgwqDCoMKgIGN0X2RlcmVnaXN0ZXJfYnVmZmVyKGN0LCBJTlRFTF9HVUNfQ1RfQlVGRkVSX1RZ UEVfU0VORCk7Cj4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBjdF9kZXJlZ2lzdGVyX2J1ZmZlcihjdCwg SU5URUxfR1VDX0NUX0JVRkZFUl9UWVBFX1JFQ1YpOwo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgY3Rf ZGVyZWdpc3Rlcl9idWZmZXIoY3QsIEdVQ19DVEJfVFlQRV9IT1NUMkdVQyk7Cj4+Pj4+ICvCoMKg wqDCoMKgwqDCoCBjdF9kZXJlZ2lzdGVyX2J1ZmZlcihjdCwgR1VDX0NUQl9UWVBFX0dVQzJIT1NU KTsKPj4+Pj4gwqDCoMKgwqDCoCB9Cj4+Pj4+IMKgIH0KPj4+Pgo+Pj4KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==