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=-11.6 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,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 3CDB1C433E2 for ; Fri, 28 Aug 2020 08:14:24 +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 0677720665 for ; Fri, 28 Aug 2020 08:14:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aY1/JH+n" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0677720665 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7248E6EB70; Fri, 28 Aug 2020 08:14:23 +0000 (UTC) Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by gabe.freedesktop.org (Postfix) with ESMTPS id E86F86EB70 for ; Fri, 28 Aug 2020 08:14:21 +0000 (UTC) Received: by mail-wm1-x344.google.com with SMTP id a65so107812wme.5 for ; Fri, 28 Aug 2020 01:14:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=xDWkeC1Ws1zooIVn8+bEo6Q0fPdXrsrqX/Ph0rx4y/E=; b=aY1/JH+nQGcCK/tdT5HsrnGxaWIwgtam/ijS+/bLQv0qcyKz7LNimPp/kw/KE/NjqA xahF4omasXZKREyE2FlujimwV5TzKiQ0MakGHaAeABs8mwVyAZjaDB0KrqqR/GKT9wjo gK7L2TKRJ7wqrTu7txU2I0xNjctXI+Yw6PAJUxHoItaR0BYtUYkXpwo/aquB9VTEYYDf m4HJkzY56h2ddJTcHbErIEvSLcfqM/Fi4WyBL03Zo0keaelwOOFqudjQLbTGS4Xip0ZF VoWRwrGvpwdnoKx/VZH0vVxgvVm6XmdVGwSLkPRYpFbTN5nXmbOKXmC5sFqVUjYuGwqS oIJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=xDWkeC1Ws1zooIVn8+bEo6Q0fPdXrsrqX/Ph0rx4y/E=; b=ZXs1R/ZM5s5ag6xFNdsdqzIpU5iGB0PejU32PdJZriH5zUcgFOag+aGVijvoyUliRS ChLc5th8RyeeugLS0HzRFi/ssP36mOH9TN0fkWywrW4raIxpTXDDqQz/+DqOYsuSY+yX Jc9ex+UN5em5s4zXHgpfwum+pAAEEH44SMkx3uXbs0usbS49J/DaOIUAWNBdLttbUJ4J 1mEXLbCfpFvM47yhcNwtWHBupLIb0xFzOZ29FsauD+N//diSdhRYUEC96M15dguVjgWI t+UJQCNhJMDHM/sSkPN1DNBsYznQdCs/VtwQ7snuHwO006++fOHtWqTRHNf5gqEMrRzN X37w== X-Gm-Message-State: AOAM533wxE5HYYiYNBfeYNCMAnWtE7XEhpzG5lnKX+/ov9oHipQR+1KD Num0AqjraAHOaZB3capv4aC8d4drmMg= X-Google-Smtp-Source: ABdhPJwiiiYmK5eLwXrZujDX98kmnGRDFyJWmLoazoT4SY4ivpVN0fot2WB9O1fCsyvjdjg/kP9H4w== X-Received: by 2002:a7b:ce12:: with SMTP id m18mr408679wmc.3.1598602459980; Fri, 28 Aug 2020 01:14:19 -0700 (PDT) Received: from ?IPv6:2a01:e0a:13a:17a0:fb6f:ee00:90ce:69a? ([2a01:e0a:13a:17a0:fb6f:ee00:90ce:69a]) by smtp.gmail.com with ESMTPSA id h14sm838597wml.30.2020.08.28.01.14.19 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 28 Aug 2020 01:14:19 -0700 (PDT) Subject: Re: [PATCH v2] drm/amdgpu: add support for user trap handlers To: christian.koenig@amd.com, amd-gfx@lists.freedesktop.org References: <20200824114916.11808-1-samuel.pitoiset@gmail.com> <20200825140708.1334-1-samuel.pitoiset@gmail.com> From: Samuel Pitoiset Message-ID: Date: Fri, 28 Aug 2020 10:14:19 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx 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: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" Ck9uIDgvMjgvMjAgOTo1NyBBTSwgQ2hyaXN0aWFuIEvDtm5pZyB3cm90ZToKPiBBbSAyNS4wOC4y MCB1bSAxNjowNyBzY2hyaWViIFNhbXVlbCBQaXRvaXNldDoKPj4gQSB0cmFwIGhhbmRsZXIgY2Fu IGJlIHVzZWQgYnkgdXNlcnNwYWNlIHRvIGNhdGNoIHNoYWRlciBleGNlcHRpb25zCj4+IGxpa2Ug ZGl2aWRlIGJ5IHplcm8sIG1lbW9yeSB2aW9sYXRpb25zIGV0Yy4KPj4KPj4gT24gR0ZYNi1HRlg4 LCB0aGUgcmVnaXN0ZXJzIHVzZWQgdG8gY29uZmlndXJlIFRCQS9UTUEgYXJlbid0Cj4+IHByaXZp bGVnZWQgYW5kIGNhbiBiZSBjb25maWd1cmVkIGZyb20gdXNlcnBhY2UuCj4+Cj4+IE9uIEdGWDkr IHRoZXkgYXJlIHBlciBWTUlEIGFuZCBwcml2aWxlZ2VkLCBvbmx5IHRoZSBLTUQgY2FuCj4+IGNv bmZpZ3VyZSB0aGVtLiBBdCB0aGUgbW9tZW50LCB3ZSBkb24ndCBrbm93IGhvdyB0byBzZXQgdGhl bQo+PiB2aWEgdGhlIENQLCBzbyB0aGV5IGFyZSBvbmx5IGVtaXR0ZWQgaWYgYSBWTUlEIGlzIHJl c2VydmVkLgo+Pgo+PiBUaGlzIGludHJvZHVjZXMgYSBuZXcgQ1MgY2h1bmsgdGhhdCBjYW4gYmUg dXNlZCB0byBzZXQgdGhlCj4+IFRCQS9UTUEgdmlydHVhbCBhZGRyZXNzIGF0IHN1Ym1pdCB0aW1l Lgo+Pgo+PiBUT0RPOgo+PiAtIHJlYmFzZSBvbiB0b3Agb2YgYW1kLXN0YWdpbmctZHJtLW5leHQg KHRoaXMgYnJhbmNoIGN1cnJlbnRseQo+PiBoYW5ncyBteSBHUFUgYXQgYm9vdCkKPgo+IFBsZWFz ZSBzcGxpdCB0aGF0IHVwIGludG8gbXVsdGlwbGUgcGF0Y2hlcy4gVGhlIGZpcnN0IG9uZSBhZGRp bmcgdGhlIAo+IGdlbmVyYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIHRoZSBmb2xsb3dpbmcgb25lIHRo ZSBpbXBsZW1lbnRhdGlvbiBmb3IgCj4gZ2Z4OSBhbmQgZ2Z4MTAuClNvdW5kcyBnb29kLgo+Cj4g QW5kIG1heWJlIGV2ZW4gc3VwcG9ydCB0aGlzIGZvciBnZng2LTggZXZlbiBpZiBpdCBpcyBub3Qg bmVjZXNzYXJ5PyAKPiBMb29rcyB0cml2aWFsIHRvIGltcGxlbWVudCBhbmQgd291bGQgZ2l2ZSB1 c2Vyc3BhY2UgYSBtb3JlIHVuaWZvcm0gCj4gaGFuZGxpbmcgZm9yIHRoaXMuCnYxIGFkZGVkIGdm eDYtOCBzdXBwb3J0IGJ1dCBJIHJlbW92ZWQgaXQgaW4gdjIgYXMgcmVxdWVzdGVkIGJ5IEFsZXgg CmJlY2F1c2UgaXQncyB1c2VsZXNzIGFuZCBtaWdodCBiZSBiZXR0ZXIgZm9yIHByZWVtcHRpb24u Cj4KPiBBIGZldyBtb3JlIGNvbW1lbnRzIGJlbG93Lgo+Cj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFNh bXVlbCBQaXRvaXNldCA8c2FtdWVsLnBpdG9pc2V0QGdtYWlsLmNvbT4KPj4gLS0tCj4+IMKgIGRy aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jwqDCoCB8IDMxICsrKysrKysrKysr KysrKysrKysrKysrKwo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2 LmPCoCB8wqAgMyArKy0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2lk cy5owqAgfMKgIDQgKysrCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9q b2IuaMKgIHzCoCA0ICsrKwo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf cmluZy5oIHzCoCA0ICsrKwo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf dm0uY8KgwqAgfCAyMCArKysrKysrKysrKysrLS0KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvZ2Z4X3YxMF8wLmPCoMKgIHwgMjAgKysrKysrKysrKysrKysrCj4+IMKgIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmPCoMKgwqAgfCAxOSArKysrKysrKysrKysrKysK Pj4gwqAgaW5jbHVkZS91YXBpL2RybS9hbWRncHVfZHJtLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHzCoCA4ICsrKysrKwo+PiDCoCA5IGZpbGVzIGNoYW5nZWQsIDExMCBpbnNlcnRpb25zKCspLCAz IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2NzLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Nz LmMKPj4gaW5kZXggYTUxMmNjYmM0ZGVhLi42Y2E1YzQ5MTJlM2EgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4+IEBAIC0xMDQsNiArMTA0LDE5IEBAIHN0YXRp YyBpbnQgYW1kZ3B1X2NzX2JvX2hhbmRsZXNfY2h1bmsoc3RydWN0IAo+PiBhbWRncHVfY3NfcGFy c2VyICpwLAo+PiDCoMKgwqDCoMKgIHJldHVybiByOwo+PiDCoCB9Cj4+IMKgICtzdGF0aWMgaW50 IGFtZGdwdV9jc191c2VyX3RyYXBfY2h1bmsoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fYW1k Z3B1X2NzX2NodW5rX3RyYXAgKmRhdGEsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHVpbnQ2NF90ICp0YmFfYWRkciwgdWludDY0X3QgKnRtYV9hZGRyKQo+PiAr ewo+PiArwqDCoMKgIGlmICghZGF0YS0+dGJhX2FkZHIgfHwgIWRhdGEtPnRtYV9hZGRyKQo+PiAr wqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gK8KgwqDCoCAqdGJhX2FkZHIg PSBkYXRhLT50YmFfYWRkcjsKPj4gK8KgwqDCoCAqdG1hX2FkZHIgPSBkYXRhLT50bWFfYWRkcjsK Pj4gKwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+IMKgIHN0YXRpYyBpbnQgYW1k Z3B1X2NzX3BhcnNlcl9pbml0KHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLCB1bmlvbiAKPj4g ZHJtX2FtZGdwdV9jcyAqY3MpCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2Zw cml2ICpmcHJpdiA9IHAtPmZpbHAtPmRyaXZlcl9wcml2Owo+PiBAQCAtMTEyLDYgKzEyNSw3IEBA IHN0YXRpYyBpbnQgYW1kZ3B1X2NzX3BhcnNlcl9pbml0KHN0cnVjdCAKPj4gYW1kZ3B1X2NzX3Bh cnNlciAqcCwgdW5pb24gZHJtX2FtZGdwdV9jcwo+PiDCoMKgwqDCoMKgIHVpbnQ2NF90ICpjaHVu a19hcnJheTsKPj4gwqDCoMKgwqDCoCB1bnNpZ25lZCBzaXplLCBudW1faWJzID0gMDsKPj4gwqDC oMKgwqDCoCB1aW50MzJfdCB1Zl9vZmZzZXQgPSAwOwo+PiArwqDCoMKgIHVpbnQ2NF90IHRiYV9h ZGRyID0gMCwgdG1hX2FkZHIgPSAwOwo+PiDCoMKgwqDCoMKgIGludCBpOwo+PiDCoMKgwqDCoMKg IGludCByZXQ7Cj4+IMKgIEBAIC0yMTQsNiArMjI4LDE5IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2Nz X3BhcnNlcl9pbml0KHN0cnVjdCAKPj4gYW1kZ3B1X2NzX3BhcnNlciAqcCwgdW5pb24gZHJtX2Ft ZGdwdV9jcwo+PiDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPj4gwqAgK8Kg wqDCoMKgwqDCoMKgIGNhc2UgQU1ER1BVX0NIVU5LX0lEX1RSQVA6Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHNpemUgPSBzaXplb2Yoc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfdHJhcCk7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChwLT5jaHVua3NbaV0ubGVuZ3RoX2R3ICog c2l6ZW9mKHVpbnQzMl90KSA8IHNpemUpIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZXQgPSAtRUlOVkFMOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdv dG8gZnJlZV9wYXJ0aWFsX2tkYXRhOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gYW1kZ3B1X2NzX3VzZXJfdHJhcF9jaHVu ayhwLCBwLT5jaHVua3NbaV0ua2RhdGEsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnRiYV9hZGRyLCAmdG1hX2FkZHIpOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0KQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGdvdG8gZnJlZV9wYXJ0aWFsX2tkYXRhOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBicmVhazsKPj4gKwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBBTURHUFVfQ0hVTktfSURf REVQRU5ERU5DSUVTOgo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBBTURHUFVfQ0hVTktfSURf U1lOQ09CSl9JTjoKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGNhc2UgQU1ER1BVX0NIVU5LX0lEX1NZ TkNPQkpfT1VUOgo+PiBAQCAtMjM5LDYgKzI2NiwxMCBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19w YXJzZXJfaW5pdChzdHJ1Y3QgCj4+IGFtZGdwdV9jc19wYXJzZXIgKnAsIHVuaW9uIGRybV9hbWRn cHVfY3MKPj4gwqAgwqDCoMKgwqDCoCBpZiAocC0+dWZfZW50cnkudHYuYm8pCj4+IMKgwqDCoMKg wqDCoMKgwqDCoCBwLT5qb2ItPnVmX2FkZHIgPSB1Zl9vZmZzZXQ7Cj4+ICsKPj4gK8KgwqDCoCBw LT5qb2ItPnRiYV9hZGRyID0gdGJhX2FkZHI7Cj4+ICvCoMKgwqAgcC0+am9iLT50bWFfYWRkciA9 IHRtYV9hZGRyOwo+PiArCj4+IMKgwqDCoMKgwqAga2ZyZWUoY2h1bmtfYXJyYXkpOwo+PiDCoCDC oMKgwqDCoMKgIC8qIFVzZSB0aGlzIG9wcG9ydHVuaXR5IHRvIGZpbGwgaW4gdGFzayBpbmZvIGZv ciB0aGUgdm0gKi8KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9kcnYuYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMK Pj4gaW5kZXggMjYxMjdjN2QyZjMyLi4xZTcwMzExOWU0YzIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMKPj4gQEAgLTg4LDkgKzg4LDEwIEBACj4+IMKgwqAg KiAtIDMuMzcuMCAtIEwyIGlzIGludmFsaWRhdGVkIGJlZm9yZSBTRE1BIElCcywgbmVlZGVkIGZv ciAKPj4gY29ycmVjdG5lc3MKPj4gwqDCoCAqIC0gMy4zOC4wIC0gQWRkIEFNREdQVV9JQl9GTEFH X0VNSVRfTUVNX1NZTkMKPj4gwqDCoCAqIC0gMy4zOS4wIC0gRE1BQlVGIGltcGxpY2l0IHN5bmMg ZG9lcyBhIGZ1bGwgcGlwZWxpbmUgc3luYwo+PiArICogLSAzLjQwLjAgLSBBZGQgQU1ER1BVX0NI VU5LX0lEX1RSQVAKPj4gwqDCoCAqLwo+PiDCoCAjZGVmaW5lIEtNU19EUklWRVJfTUFKT1LCoMKg wqAgMwo+PiAtI2RlZmluZSBLTVNfRFJJVkVSX01JTk9SwqDCoMKgIDM5Cj4+ICsjZGVmaW5lIEtN U19EUklWRVJfTUlOT1LCoMKgwqAgNDAKPj4gwqAgI2RlZmluZSBLTVNfRFJJVkVSX1BBVENITEVW RUzCoMKgwqAgMAo+PiDCoCDCoCBpbnQgYW1kZ3B1X3ZyYW1fbGltaXQgPSAwOwo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2lkcy5oIAo+PiBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9pZHMuaAo+PiBpbmRleCA4ZTU4MzI1YmJjYTIu LmZkMGQ1NjcyNGI0ZCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2lkcy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9p ZHMuaAo+PiBAQCAtNTgsNiArNTgsMTAgQEAgc3RydWN0IGFtZGdwdV92bWlkIHsKPj4gwqDCoMKg wqDCoCB1aW50MzJfdMKgwqDCoMKgwqDCoMKgIG9hX2Jhc2U7Cj4+IMKgwqDCoMKgwqAgdWludDMy X3TCoMKgwqDCoMKgwqDCoCBvYV9zaXplOwo+PiDCoCArwqDCoMKgIC8qIHVzZXIgdHJhcCAqLwo+ PiArwqDCoMKgIHVpbnQ2NF90wqDCoMKgwqDCoMKgwqAgdGJhX2FkZHI7Cj4+ICvCoMKgwqAgdWlu dDY0X3TCoMKgwqDCoMKgwqDCoCB0bWFfYWRkcjsKPj4gKwo+PiDCoMKgwqDCoMKgIHVuc2lnbmVk wqDCoMKgwqDCoMKgwqAgcGFzaWQ7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZcKgwqDC oCAqcGFzaWRfbWFwcGluZzsKPj4gwqAgfTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9qb2IuaCAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfam9iLmgKPj4gaW5kZXggODFjYWFjOWI5NThhLi5iOGVkNWIxM2VhNDQgMTAwNjQ0 Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9qb2IuaAo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfam9iLmgKPj4gQEAgLTYyLDYgKzYy LDEwIEBAIHN0cnVjdCBhbWRncHVfam9iIHsKPj4gwqDCoMKgwqDCoCAvKiB1c2VyIGZlbmNlIGhh bmRsaW5nICovCj4+IMKgwqDCoMKgwqAgdWludDY0X3TCoMKgwqDCoMKgwqDCoCB1Zl9hZGRyOwo+ PiDCoMKgwqDCoMKgIHVpbnQ2NF90wqDCoMKgwqDCoMKgwqAgdWZfc2VxdWVuY2U7Cj4+ICsKPj4g K8KgwqDCoCAvKiB1c2VyIHRyYXAgaGFuZGxpbmcgKi8KPj4gK8KgwqDCoCB1aW50NjRfdMKgwqDC oMKgwqDCoMKgIHRiYV9hZGRyOwo+PiArwqDCoMKgIHVpbnQ2NF90wqDCoMKgwqDCoMKgwqAgdG1h X2FkZHI7Cj4+IMKgIH07Cj4+IMKgIMKgIGludCBhbWRncHVfam9iX2FsbG9jKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCB1bnNpZ25lZCBudW1faWJzLAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaCAKPj4gYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfcmluZy5oCj4+IGluZGV4IGRhODcxZDg0Yjc0Mi4uMWYxNjVhNjI5 NWQ5IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmlu Zy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmgKPj4g QEAgLTE5Nyw2ICsxOTcsOSBAQCBzdHJ1Y3QgYW1kZ3B1X3JpbmdfZnVuY3Mgewo+PiDCoMKgwqDC oMKgIHZvaWQgKCpzb2Z0X3JlY292ZXJ5KShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVuc2ln bmVkIHZtaWQpOwo+PiDCoMKgwqDCoMKgIGludCAoKnByZWVtcHRfaWIpKHN0cnVjdCBhbWRncHVf cmluZyAqcmluZyk7Cj4+IMKgwqDCoMKgwqAgdm9pZCAoKmVtaXRfbWVtX3N5bmMpKHN0cnVjdCBh bWRncHVfcmluZyAqcmluZyk7Cj4+ICvCoMKgwqAgdm9pZCAoKmVtaXRfdHJhcF9oYW5kbGVyKShz dHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHVpbnQzMl90IHZtaWQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHVpbnQ2NF90IHRiYV9hZGRyLCB1aW50NjRfdCB0bWFfYWRkcik7Cj4+IMKgIH07Cj4+IMKg IMKgIHN0cnVjdCBhbWRncHVfcmluZyB7Cj4+IEBAIC0yNjUsNiArMjY4LDcgQEAgc3RydWN0IGFt ZGdwdV9yaW5nIHsKPj4gwqAgI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X3ZtX2ZsdXNoKHIsIHZt aWQsIGFkZHIpIAo+PiAociktPmZ1bmNzLT5lbWl0X3ZtX2ZsdXNoKChyKSwgKHZtaWQpLCAoYWRk cikpCj4+IMKgICNkZWZpbmUgYW1kZ3B1X3JpbmdfZW1pdF9mZW5jZShyLCBhZGRyLCBzZXEsIGZs YWdzKSAKPj4gKHIpLT5mdW5jcy0+ZW1pdF9mZW5jZSgociksIChhZGRyKSwgKHNlcSksIChmbGFn cykpCj4+IMKgICNkZWZpbmUgYW1kZ3B1X3JpbmdfZW1pdF9nZHNfc3dpdGNoKHIsIHYsIGRiLCBk cywgd2IsIHdzLCBhYiwgYXMpIAo+PiAociktPmZ1bmNzLT5lbWl0X2dkc19zd2l0Y2goKHIpLCAo diksIChkYiksIChkcyksICh3YiksICh3cyksIChhYiksIAo+PiAoYXMpKQo+PiArI2RlZmluZSBh bWRncHVfcmluZ19lbWl0X3RyYXBfaGFuZGxlcihyLCB2LCB0YmEsIHRtYSkgCj4+IChyKS0+ZnVu Y3MtPmVtaXRfdHJhcF9oYW5kbGVyKChyKSwgKHYpLCAodGJhKSwgKHRtYSkpCj4+IMKgICNkZWZp bmUgYW1kZ3B1X3JpbmdfZW1pdF9oZHBfZmx1c2gocikgKHIpLT5mdW5jcy0+ZW1pdF9oZHBfZmx1 c2goKHIpKQo+PiDCoCAjZGVmaW5lIGFtZGdwdV9yaW5nX2VtaXRfc3dpdGNoX2J1ZmZlcihyKSAK Pj4gKHIpLT5mdW5jcy0+ZW1pdF9zd2l0Y2hfYnVmZmVyKChyKSkKPj4gwqAgI2RlZmluZSBhbWRn cHVfcmluZ19lbWl0X2NudHhjbnRsKHIsIGQpIAo+PiAociktPmZ1bmNzLT5lbWl0X2NudHhjbnRs KChyKSwgKGQpKQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3ZtLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4g aW5kZXggNzFlMDA1Y2YyOTUyLi42YjYxOWJiMDM3NzcgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4+IEBAIC0xMDc5LDE1ICsxMDc5LDIyIEBAIGludCBhbWRn cHVfdm1fZmx1c2goc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCAKPj4gc3RydWN0IGFtZGdwdV9q b2IgKmpvYiwKPj4gwqDCoMKgwqDCoCBib29sIHZtX2ZsdXNoX25lZWRlZCA9IGpvYi0+dm1fbmVl ZHNfZmx1c2g7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UgPSBOVUxMOwo+ PiDCoMKgwqDCoMKgIGJvb2wgcGFzaWRfbWFwcGluZ19uZWVkZWQgPSBmYWxzZTsKPj4gK8KgwqDC oCBib29sIHRyYXBfaGFuZGxlcl9uZWVkZWQgPSBmYWxzZTsKPj4gwqDCoMKgwqDCoCB1bnNpZ25l ZCBwYXRjaF9vZmZzZXQgPSAwOwo+PiDCoMKgwqDCoMKgIGJvb2wgdXBkYXRlX3NwbV92bWlkX25l ZWRlZCA9IChqb2ItPnZtICYmIAo+PiAoam9iLT52bS0+cmVzZXJ2ZWRfdm1pZFt2bWh1Yl0gIT0g TlVMTCkpOwo+PiDCoMKgwqDCoMKgIGludCByOwo+PiDCoCAtwqDCoMKgIGlmICh1cGRhdGVfc3Bt X3ZtaWRfbmVlZGVkICYmIAo+PiBhZGV2LT5nZngucmxjLmZ1bmNzLT51cGRhdGVfc3BtX3ZtaWQp Cj4+ICvCoMKgwqAgaWYgKHVwZGF0ZV9zcG1fdm1pZF9uZWVkZWQgJiYgCj4+IGFkZXYtPmdmeC5y bGMuZnVuY3MtPnVwZGF0ZV9zcG1fdm1pZCkgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYWRldi0+ Z2Z4LnJsYy5mdW5jcy0+dXBkYXRlX3NwbV92bWlkKGFkZXYsIGpvYi0+dm1pZCk7Cj4+IMKgICvC oMKgwqDCoMKgwqDCoCB0cmFwX2hhbmRsZXJfbmVlZGVkID0gcmluZy0+ZnVuY3MtPmVtaXRfdHJh cF9oYW5kbGVyICYmICgKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWQtPnRiYV9hZGRyICE9 IGpvYi0+dGJhX2FkZHIgfHwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWQtPnRtYV9hZGRy ICE9IGpvYi0+dG1hX2FkZHIpOwo+Cj4gVGhhdCdzIHByb2JhYmx5IG5vdCBzdWNoIGEgZ29vZCBp ZGVhIHNpbmNlIGl0IG1ha2VzIHRoZSB0cmFwIGhhbmRsZXIgCj4gZGVwZW5kIG9uIHRoZSBWTUlE IHJlc2VydmF0aW9uLgo+Cj4+ICvCoMKgwqAgfQo+PiArCj4+IMKgwqDCoMKgwqAgaWYgKGFtZGdw dV92bWlkX2hhZF9ncHVfcmVzZXQoYWRldiwgaWQpKSB7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBn ZHNfc3dpdGNoX25lZWRlZCA9IHRydWU7Cj4+ICvCoMKgwqDCoMKgwqDCoCB0cmFwX2hhbmRsZXJf bmVlZGVkID0gdHJ1ZTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHZtX2ZsdXNoX25lZWRlZCA9IHRy dWU7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBwYXNpZF9tYXBwaW5nX25lZWRlZCA9IHRydWU7Cj4+ IMKgwqDCoMKgwqAgfQo+PiBAQCAtMTA5OSwxMiArMTEwNiwxNCBAQCBpbnQgYW1kZ3B1X3ZtX2Zs dXNoKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgCj4+IHN0cnVjdCBhbWRncHVfam9iICpqb2Is Cj4+IMKgwqDCoMKgwqAgbXV0ZXhfdW5sb2NrKCZpZF9tZ3ItPmxvY2spOwo+PiDCoCDCoMKgwqDC oMKgIGdkc19zd2l0Y2hfbmVlZGVkICY9ICEhcmluZy0+ZnVuY3MtPmVtaXRfZ2RzX3N3aXRjaDsK Pj4gK8KgwqDCoCB0cmFwX2hhbmRsZXJfbmVlZGVkICY9ICEhcmluZy0+ZnVuY3MtPmVtaXRfdHJh cF9oYW5kbGVyOwo+PiDCoMKgwqDCoMKgIHZtX2ZsdXNoX25lZWRlZCAmPSAhIXJpbmctPmZ1bmNz LT5lbWl0X3ZtX2ZsdXNoICYmCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGpvYi0+dm1f cGRfYWRkciAhPSBBTURHUFVfQk9fSU5WQUxJRF9PRkZTRVQ7Cj4+IMKgwqDCoMKgwqAgcGFzaWRf bWFwcGluZ19uZWVkZWQgJj0gYWRldi0+Z21jLmdtY19mdW5jcy0+ZW1pdF9wYXNpZF9tYXBwaW5n ICYmCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByaW5nLT5mdW5jcy0+ZW1pdF93cmVnOwo+PiDCoCAt wqDCoMKgIGlmICghdm1fZmx1c2hfbmVlZGVkICYmICFnZHNfc3dpdGNoX25lZWRlZCAmJiAhbmVl ZF9waXBlX3N5bmMpCj4+ICvCoMKgwqAgaWYgKCF2bV9mbHVzaF9uZWVkZWQgJiYgIWdkc19zd2l0 Y2hfbmVlZGVkICYmCj4+ICvCoMKgwqDCoMKgwqDCoCAhdHJhcF9oYW5kbGVyX25lZWRlZCAmJiAh bmVlZF9waXBlX3N5bmMpCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsKPj4gwqAgwqDC oMKgwqDCoCBpZiAocmluZy0+ZnVuY3MtPmluaXRfY29uZF9leGVjKQo+PiBAQCAtMTE1OCw2ICsx MTY3LDEzIEBAIGludCBhbWRncHVfdm1fZmx1c2goc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCAK Pj4gc3RydWN0IGFtZGdwdV9qb2IgKmpvYiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgam9iLT5vYV9zaXplKTsKPj4gwqDCoMKgwqDCoCB9Cj4+ IMKgICvCoMKgwqAgaWYgKHJpbmctPmZ1bmNzLT5lbWl0X3RyYXBfaGFuZGxlciAmJiB0cmFwX2hh bmRsZXJfbmVlZGVkKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZC0+dGJhX2FkZHIgPSBqb2ItPnRi YV9hZGRyOwo+PiArwqDCoMKgwqDCoMKgwqAgaWQtPnRtYV9hZGRyID0gam9iLT50bWFfYWRkcjsK Pj4gK8KgwqDCoMKgwqDCoMKgIGFtZGdwdV9yaW5nX2VtaXRfdHJhcF9oYW5kbGVyKHJpbmcsIGpv Yi0+dm1pZCwgam9iLT50YmFfYWRkciwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGpvYi0+dG1hX2FkZHIpOwo+PiArwqDCoMKgIH0KPj4gKwo+ Cj4gV2VsbCB0aGF0IGRvZXNuJ3Qgc2VlbSB0byBtYWtlIHNlbnNlIGF0IGFsbCBoZXJlLgo+Cj4+ IMKgwqDCoMKgwqAgaWYgKHJpbmctPmZ1bmNzLT5wYXRjaF9jb25kX2V4ZWMpCj4+IMKgwqDCoMKg wqDCoMKgwqDCoCBhbWRncHVfcmluZ19wYXRjaF9jb25kX2V4ZWMocmluZywgcGF0Y2hfb2Zmc2V0 KTsKPj4gwqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92MTBf MC5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92MTBfMC5jCj4+IGluZGV4 IDY1OTk3ZmZhZWQ0NS4uZjg2NGIyMTc1ODlmIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9nZnhfdjEwXzAuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nZnhfdjEwXzAuYwo+PiBAQCAtNzE0MSw2ICs3MTQxLDI0IEBAIHN0YXRpYyB2b2lkIAo+ PiBnZnhfdjEwXzBfcmluZ19lbWl0X2dkc19zd2l0Y2goc3RydWN0IGFtZGdwdV9yaW5nICpyaW5n LAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDEgPDwgKG9h X3NpemUgKyBvYV9iYXNlKSkgLSAoMSA8PCBvYV9iYXNlKSk7Cj4+IMKgIH0KPj4gwqAgK3N0YXRp YyB2b2lkIGdmeF92MTBfMF9yaW5nX2VtaXRfdHJhcF9oYW5kbGVyKHN0cnVjdCBhbWRncHVfcmlu ZyAKPj4gKnJpbmcsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHVpbnQzMl90IHZtaWQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHVpbnQ2NF90IHRiYV9hZGRyLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50NjRfdCB0bWFfYWRkcikKPj4gK3sKPj4g K8KgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IHJpbmctPmFkZXY7Cj4+ICsKPj4g K8KgwqDCoCBtdXRleF9sb2NrKCZhZGV2LT5zcmJtX211dGV4KTsKPj4gK8KgwqDCoCBudl9ncmJt X3NlbGVjdChhZGV2LCAwLCAwLCAwLCB2bWlkKTsKPj4gK8KgwqDCoCBXUkVHMzJfU09DMTVfUkxD KEdDLCAwLCBtbVNRX1NIQURFUl9UQkFfTE8sIAo+PiBsb3dlcl8zMl9iaXRzKHRiYV9hZGRyID4+ IDgpKTsKPj4gK8KgwqDCoCBXUkVHMzJfU09DMTVfUkxDKEdDLCAwLCBtbVNRX1NIQURFUl9UQkFf SEksIAo+PiB1cHBlcl8zMl9iaXRzKHRiYV9hZGRyID4+IDgpIHwKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAxIDw8IFNRX1NIQURFUl9UQkFfSElfX1RSQVBfRU5fX1NISUZUKTsK Pj4gK8KgwqDCoCBXUkVHMzJfU09DMTVfUkxDKEdDLCAwLCBtbVNRX1NIQURFUl9UTUFfTE8sIAo+ PiBsb3dlcl8zMl9iaXRzKHRtYV9hZGRyID4+IDgpKTsKPj4gK8KgwqDCoCBXUkVHMzJfU09DMTVf UkxDKEdDLCAwLCBtbVNRX1NIQURFUl9UTUFfSEksIAo+PiB1cHBlcl8zMl9iaXRzKHRtYV9hZGRy ID4+IDgpKTsKPj4gK8KgwqDCoCBudl9ncmJtX3NlbGVjdChhZGV2LCAwLCAwLCAwLCAwKTsKPj4g K8KgwqDCoCBtdXRleF91bmxvY2soJmFkZXYtPnNyYm1fbXV0ZXgpOwo+Cj4gVGhpcyBpcyBub3Qg ZW1pdHRpbmcgdGhlIHRyYXAgaGFuZGxlciB1cGRhdGUgdG8gdGhlIHJpbmcsIGJ1dCB3cml0aW5n IAo+IGl0IGRpcmVjdGx5IHRvIHRoZSByZWdpc3RlcnMuCgpUaGlzIHVzZXMgZGlyZWN0IGRyaXZl ciBhY2Nlc3MgYmVjYXVzZSB3ZSBkb24ndCBrbm93IGhvdyB0byBlbWl0IHRoZW0gCnZpYSBDUC4g VGhpcyBpcyBhbHNvIHdoeSBpdCdzIG9ubHkgZW1pdHRlZCBpZiBhIFZNSUQgaXMgcmVzZXJ2ZWQu CgpJIHRoaW5rIEFsZXggaXMgaGF2aW5nIGEgZGlzY3Vzc2lvbiB3aXRoIHRoZSBDUCB0ZWFtIGFi b3V0IHRoYXQuCgo+Cj4gUmVnYXJkcywKPiBDaHJpc3RpYW4uCj4KPj4gK30KPj4gKwo+PiDCoCBz dGF0aWMgaW50IGdmeF92MTBfMF9lYXJseV9pbml0KHZvaWQgKmhhbmRsZSkKPj4gwqAgewo+PiDC oMKgwqDCoMKgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2 aWNlICopaGFuZGxlOwo+PiBAQCAtODUzMCw2ICs4NTQ4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBhbWRncHVfcmluZ19mdW5jcyAKPj4gZ2Z4X3YxMF8wX3JpbmdfZnVuY3NfZ2Z4ID0gewo+PiDC oMKgwqDCoMKgIC5lbWl0X3JlZ193cml0ZV9yZWdfd2FpdCA9IGdmeF92MTBfMF9yaW5nX2VtaXRf cmVnX3dyaXRlX3JlZ193YWl0LAo+PiDCoMKgwqDCoMKgIC5zb2Z0X3JlY292ZXJ5ID0gZ2Z4X3Yx MF8wX3Jpbmdfc29mdF9yZWNvdmVyeSwKPj4gwqDCoMKgwqDCoCAuZW1pdF9tZW1fc3luYyA9IGdm eF92MTBfMF9lbWl0X21lbV9zeW5jLAo+PiArwqDCoMKgIC5lbWl0X3RyYXBfaGFuZGxlciA9IGdm eF92MTBfMF9yaW5nX2VtaXRfdHJhcF9oYW5kbGVyLAo+PiDCoCB9Owo+PiDCoCDCoCBzdGF0aWMg Y29uc3Qgc3RydWN0IGFtZGdwdV9yaW5nX2Z1bmNzIAo+PiBnZnhfdjEwXzBfcmluZ19mdW5jc19j b21wdXRlID0gewo+PiBAQCAtODU2Niw2ICs4NTg1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBh bWRncHVfcmluZ19mdW5jcyAKPj4gZ2Z4X3YxMF8wX3JpbmdfZnVuY3NfY29tcHV0ZSA9IHsKPj4g wqDCoMKgwqDCoCAuZW1pdF9yZWdfd2FpdCA9IGdmeF92MTBfMF9yaW5nX2VtaXRfcmVnX3dhaXQs Cj4+IMKgwqDCoMKgwqAgLmVtaXRfcmVnX3dyaXRlX3JlZ193YWl0ID0gZ2Z4X3YxMF8wX3Jpbmdf ZW1pdF9yZWdfd3JpdGVfcmVnX3dhaXQsCj4+IMKgwqDCoMKgwqAgLmVtaXRfbWVtX3N5bmMgPSBn ZnhfdjEwXzBfZW1pdF9tZW1fc3luYywKPj4gK8KgwqDCoCAuZW1pdF90cmFwX2hhbmRsZXIgPSBn ZnhfdjEwXzBfcmluZ19lbWl0X3RyYXBfaGFuZGxlciwKPj4gwqAgfTsKPj4gwqAgwqAgc3RhdGlj IGNvbnN0IHN0cnVjdCBhbWRncHVfcmluZ19mdW5jcyBnZnhfdjEwXzBfcmluZ19mdW5jc19raXEg PSB7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjlfMC5j IAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMKPj4gaW5kZXggY2I5 ZDYwYTRlMDVlLi40ZmMwMGYxOTYwODUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2dmeF92OV8wLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv Z2Z4X3Y5XzAuYwo+PiBAQCAtNDE2Miw2ICs0MTYyLDIzIEBAIHN0YXRpYyB2b2lkIAo+PiBnZnhf djlfMF9yaW5nX2VtaXRfZ2RzX3N3aXRjaChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDEgPDwgKG9hX3NpemUgKyBv YV9iYXNlKSkgLSAoMSA8PCBvYV9iYXNlKSk7Cj4+IMKgIH0KPj4gwqAgK3N0YXRpYyB2b2lkIGdm eF92OV8wX3JpbmdfZW1pdF90cmFwX2hhbmRsZXIoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50MzJf dCB2bWlkLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB1aW50NjRfdCB0YmFfYWRkciwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdWludDY0X3QgdG1hX2FkZHIpCj4+ICt7Cj4+ICvCoMKgwqAgc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2Owo+PiArCj4+ICvCoMKgwqAgbXV0ZXhf bG9jaygmYWRldi0+c3JibV9tdXRleCk7Cj4+ICvCoMKgwqAgc29jMTVfZ3JibV9zZWxlY3QoYWRl diwgMCwgMCwgMCwgdm1pZCk7Cj4+ICvCoMKgwqAgV1JFRzMyX1NPQzE1X1JMQyhHQywgMCwgbW1T UV9TSEFERVJfVEJBX0xPLCAKPj4gbG93ZXJfMzJfYml0cyh0YmFfYWRkciA+PiA4KSk7Cj4+ICvC oMKgwqAgV1JFRzMyX1NPQzE1X1JMQyhHQywgMCwgbW1TUV9TSEFERVJfVEJBX0hJLCAKPj4gdXBw ZXJfMzJfYml0cyh0YmFfYWRkciA+PiA4KSk7Cj4+ICvCoMKgwqAgV1JFRzMyX1NPQzE1X1JMQyhH QywgMCwgbW1TUV9TSEFERVJfVE1BX0xPLCAKPj4gbG93ZXJfMzJfYml0cyh0bWFfYWRkciA+PiA4 KSk7Cj4+ICvCoMKgwqAgV1JFRzMyX1NPQzE1X1JMQyhHQywgMCwgbW1TUV9TSEFERVJfVE1BX0hJ LCAKPj4gdXBwZXJfMzJfYml0cyh0bWFfYWRkciA+PiA4KSk7Cj4+ICvCoMKgwqAgc29jMTVfZ3Ji bV9zZWxlY3QoYWRldiwgMCwgMCwgMCwgMCk7Cj4+ICvCoMKgwqAgbXV0ZXhfdW5sb2NrKCZhZGV2 LT5zcmJtX211dGV4KTsKPj4gK30KPj4gKwo+PiDCoCBzdGF0aWMgY29uc3QgdTMyIHZncHJfaW5p dF9jb21wdXRlX3NoYWRlcltdID0KPj4gwqAgewo+PiDCoMKgwqDCoMKgIDB4YjA3YzAwMDAsIDB4 YmU4MDAwZmYsCj4+IEBAIC02NzIwLDYgKzY3MzcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFt ZGdwdV9yaW5nX2Z1bmNzIAo+PiBnZnhfdjlfMF9yaW5nX2Z1bmNzX2dmeCA9IHsKPj4gwqDCoMKg wqDCoCAuZW1pdF9yZWdfd3JpdGVfcmVnX3dhaXQgPSBnZnhfdjlfMF9yaW5nX2VtaXRfcmVnX3dy aXRlX3JlZ193YWl0LAo+PiDCoMKgwqDCoMKgIC5zb2Z0X3JlY292ZXJ5ID0gZ2Z4X3Y5XzBfcmlu Z19zb2Z0X3JlY292ZXJ5LAo+PiDCoMKgwqDCoMKgIC5lbWl0X21lbV9zeW5jID0gZ2Z4X3Y5XzBf ZW1pdF9tZW1fc3luYywKPj4gK8KgwqDCoCAuZW1pdF90cmFwX2hhbmRsZXIgPSBnZnhfdjlfMF9y aW5nX2VtaXRfdHJhcF9oYW5kbGVyLAo+PiDCoCB9Owo+PiDCoCDCoCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGFtZGdwdV9yaW5nX2Z1bmNzIGdmeF92OV8wX3JpbmdfZnVuY3NfY29tcHV0ZSAKPj4gPSB7 Cj4+IEBAIC02NzU2LDYgKzY3NzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9yaW5n X2Z1bmNzIAo+PiBnZnhfdjlfMF9yaW5nX2Z1bmNzX2NvbXB1dGUgPSB7Cj4+IMKgwqDCoMKgwqAg LmVtaXRfcmVnX3dhaXQgPSBnZnhfdjlfMF9yaW5nX2VtaXRfcmVnX3dhaXQsCj4+IMKgwqDCoMKg wqAgLmVtaXRfcmVnX3dyaXRlX3JlZ193YWl0ID0gZ2Z4X3Y5XzBfcmluZ19lbWl0X3JlZ193cml0 ZV9yZWdfd2FpdCwKPj4gwqDCoMKgwqDCoCAuZW1pdF9tZW1fc3luYyA9IGdmeF92OV8wX2VtaXRf bWVtX3N5bmMsCj4+ICvCoMKgwqAgLmVtaXRfdHJhcF9oYW5kbGVyID0gZ2Z4X3Y5XzBfcmluZ19l bWl0X3RyYXBfaGFuZGxlciwKPj4gwqAgfTsKPj4gwqAgwqAgc3RhdGljIGNvbnN0IHN0cnVjdCBh bWRncHVfcmluZ19mdW5jcyBnZnhfdjlfMF9yaW5nX2Z1bmNzX2tpcSA9IHsKPj4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvdWFwaS9kcm0vYW1kZ3B1X2RybS5oIAo+PiBiL2luY2x1ZGUvdWFwaS9kcm0v YW1kZ3B1X2RybS5oCj4+IGluZGV4IDMyMTg1NzZlMTA5ZC4uN2VhZTI2NGFkYjVkIDEwMDY0NAo+ PiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2FtZGdwdV9kcm0uaAo+PiArKysgYi9pbmNsdWRlL3Vh cGkvZHJtL2FtZGdwdV9kcm0uaAo+PiBAQCAtNTUxLDYgKzU1MSw3IEBAIHN0cnVjdCBkcm1fYW1k Z3B1X2dlbV92YSB7Cj4+IMKgICNkZWZpbmUgQU1ER1BVX0NIVU5LX0lEX1NDSEVEVUxFRF9ERVBF TkRFTkNJRVPCoMKgwqAgMHgwNwo+PiDCoCAjZGVmaW5lIEFNREdQVV9DSFVOS19JRF9TWU5DT0JK X1RJTUVMSU5FX1dBSVTCoMKgwqAgMHgwOAo+PiDCoCAjZGVmaW5lIEFNREdQVV9DSFVOS19JRF9T WU5DT0JKX1RJTUVMSU5FX1NJR05BTMKgIDB4MDkKPj4gKyNkZWZpbmUgQU1ER1BVX0NIVU5LX0lE X1RSQVDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MGEKPj4gwqAgwqAgc3RydWN0IGRybV9hbWRn cHVfY3NfY2h1bmsgewo+PiDCoMKgwqDCoMKgIF9fdTMywqDCoMKgwqDCoMKgwqAgY2h1bmtfaWQ7 Cj4+IEBAIC02NDUsNiArNjQ2LDEzIEBAIHN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX3N5bmNv Ymogewo+PiDCoMKgwqDCoMKgwqDCoMKgIF9fdTY0IHBvaW50Owo+PiDCoCB9Owo+PiDCoCArc3Ry dWN0IGRybV9hbWRncHVfY3NfY2h1bmtfdHJhcCB7Cj4+ICvCoMKgwqAgLyoqIFRyYXAgQmFzZSBB ZGRyZXNzICovCj4+ICvCoMKgwqDCoMKgwqAgX191NjQgdGJhX2FkZHI7Cj4+ICvCoMKgwqAgLyoq IFRyYXAgTWVtb3J5IEFkZHJlc3MgKi8KPj4gK8KgwqDCoMKgwqDCoCBfX3U2NCB0bWFfYWRkcjsK Pj4gK307Cj4+ICsKPj4gwqAgI2RlZmluZSBBTURHUFVfRkVOQ0VfVE9fSEFORExFX0dFVF9TWU5D T0JKwqDCoMKgIDAKPj4gwqAgI2RlZmluZSBBTURHUFVfRkVOQ0VfVE9fSEFORExFX0dFVF9TWU5D T0JKX0ZEwqDCoMKgIDEKPj4gwqAgI2RlZmluZSBBTURHUFVfRkVOQ0VfVE9fSEFORExFX0dFVF9T WU5DX0ZJTEVfRkTCoMKgwqAgMgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1k LWdmeAo=