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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DC8FFC433EF for ; Tue, 12 Oct 2021 08:07:35 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 A53E560E0B for ; Tue, 12 Oct 2021 08:07:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org A53E560E0B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=bozVfQgM76KxGkrziude6pteqwzxK9pHZdMajEf6xvs=; b=BlTNI+DRIjnqUo 4Bhk0QmCrLlZa21Y/L5U9hWyP89aTHXywtN37YNF6uRZo/62Nxf8TiEKYlYDYiDWbYaTbcheHH1iI RyFfno3nqiwiRaMzc5qxhIyD1c/n/EFaQS2Wxkgd0jmrSkkdTthEGh8PSXiySivTz3ln+iKyEDN/j ysWoPjBkDkXr6c6wad/RLUpMmnEoPlGvK4LbUjwYKKfsK9DliHQHSK8y04U0e6YxN7vZTQhRjx1jk XLAj3zTLhAWw56aH0znOCKhBoAglUle6S01SK6GaTFJsYl1/jZmU4gr++nV3DRk8h/qeMn1jDyZsB Gv9HeaFjehaFjaYQEIXA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1maCn1-00Buzy-AM; Tue, 12 Oct 2021 08:05:36 +0000 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1maCkj-00BtwJ-R1 for linux-arm-kernel@lists.infradead.org; Tue, 12 Oct 2021 08:03:18 +0000 Received: by mail-wr1-x42a.google.com with SMTP id o20so63966841wro.3 for ; Tue, 12 Oct 2021 01:03:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=nzd1N/UqobeQvV/uB8bpQC4f7uAdd5JM6stf6P7FIxE=; b=ZNZnTCm1ahdge+S0nuLzWbzAwiPmoj/6dCxVCrImdGaXA3DWkI5INPeV4vKUj+4all aYBfdXjXEqRTI+MB7ZOVePdIlEkdv/oR903Q9kEZdWW9cgmZ1tvhwdocm12/UsCvVQyo k/xT1HjgSb1iYJxPy0Hh+JDVS7TWiKleHn72Ph5RaRkCL6EU9I8ix9anryWy+Ne7cb4B qmM8/H/kQrGlAKNfsN5UyIGWqFJvaRh7CqZ8YYtU5Pnxp9Jvv4IpVM6t13JzfM0rWqq/ 3gAtUluF+sVb9cRWhiJDi+aKMwKJc8ZLLRSzcIFJpIlTd9/MAqCEpKlmuPMBbzYx+T0C nCrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=nzd1N/UqobeQvV/uB8bpQC4f7uAdd5JM6stf6P7FIxE=; b=w/9TKFjUjEPz4ajYXJNw457IydQWpuRNCB/aXTj6+Hxj7xTeiepz2bgHKhTnH9Qmov klYm37bqkMIOdesgHbhvtWIQK2Iczd6u0Kaq2gNg/EDkBipUyQM2He1GuMMaShk6OEec LfR0C8AQME/eSZy0eWoOcsZfBuQfiazhLkxbIfd1zGy0x+XgYCeueSeDvmX58hC5CdUl dIgkhHiUYAXo3QaIfUZICFxWrBda5iIjK3onrQExDZ1sn0pgI4e1gQHMaaMdSbrqGb9J QyAKp6x4dogd2zkwagoyP821Cn87hKNWjLmZXnedlE0rbkEdJbCTNLcWhjxEb3GgR/7N EkPA== X-Gm-Message-State: AOAM532oSdmMl+aMUVyZOstJtcUFiWq1pmIE1vdDqu6j9uZRUs2ifU4D PpjfeN81ArP/zLEruyfp1Dw= X-Google-Smtp-Source: ABdhPJwn5BC77h1bGQjSWoPjfsuVKFeRY/FhwzjKGUK5Upm8GLqCgkmAlSCvzFHR+JJtO5FfvZGN1w== X-Received: by 2002:a7b:c938:: with SMTP id h24mr3965767wml.41.1634025790163; Tue, 12 Oct 2021 01:03:10 -0700 (PDT) Received: from [192.168.1.21] ([195.245.16.219]) by smtp.gmail.com with ESMTPSA id o3sm10090065wra.52.2021.10.12.01.03.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Oct 2021 01:03:09 -0700 (PDT) Message-ID: Subject: Re: [PATCH v2 8/8] ep93xx: clock: convert in-place to COMMON_CLK From: Alexander Sverdlin To: Russell King , Arnd Bergmann Cc: Hartley Sweeten , Linus Walleij , Ard Biesheuvel , Andrew Morton , Krzysztof Kozlowski , Anshuman Khandual , Geert Uytterhoeven , YiFei Zhu , Mike Rapoport , Uwe =?ISO-8859-1?Q?Kleine-K=F6nig?= , "moderated list:ARM PORT" , open list , Nikita Shubin , Geert Uytterhoeven Date: Tue, 12 Oct 2021 10:03:08 +0200 In-Reply-To: <20210726140001.24820-9-nikita.shubin@maquefel.me> References: <20210726115058.23729-1-nikita.shubin@maquefel.me> <20210726140001.24820-1-nikita.shubin@maquefel.me> <20210726140001.24820-9-nikita.shubin@maquefel.me> User-Agent: Evolution 3.40.4 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211012_010313_979200_6AEFEF3A X-CRM114-Status: GOOD ( 27.53 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGVsbG8gUnVzc2VsLCBBcm5kLAoKT24gTW9uLCAyMDIxLTA3LTI2IGF0IDE2OjU5ICswMzAwLCBO aWtpdGEgU2h1YmluIHdyb3RlOgo+IENvbnZlcnRlZCBpbi1wbGFjZSB3aXRob3V0IG1vdmluZyBm aWxlIHRvIGRyaXZlcnMvY2xrLgo+IAo+IHRlc3RlZCBvbiB0czcyNTAgKEVQOTMwMikuCj4gCj4g T25seSBzZXR0aW5nIHJhdGUgYW5kIGNoYW5nZSBwYXJlbnQgdGVzdGVkIGZvciwgYXMgdGhleQo+ IGFyZSBtaXNzaW5nIG9uIHRzNzI1MDoKPiAtIHZpZGVvCj4gLSBJMlMKPiAtIEFEQy9LRVlQQUQK PiAtIFBXTQo+IAo+IE9ubHkgdmlkZW8gYW5kIEkyUyBjbG9jayBhcmUgaW50ZXJlc3RpbmcsIGFz IHRoZXkgYXJlCj4gR0FURSArIGRvdWJsZSBESVYgKyBNVVgsIGFsbCBvdGhlciBhcmUgcHJldHR5 IG11Y2gKPiBjb21tb24gYnV0IHJlcXVpcmUgZXA5M3h4X3N5c2Nvbl9zd2xvY2tlZF93cml0ZSB0 byBzZXQKPiByZWdpc3RlcnMuCj4gCj4gU2lnbmVkLW9mZi1ieTogTmlraXRhIFNodWJpbiA8bmlr aXRhLnNodWJpbkBtYXF1ZWZlbC5tZT4KCndpdGggYW4KQWNrZWQtYnk6IEFsZXhhbmRlciBTdmVy ZGxpbiA8YWxleGFuZGVyLnN2ZXJkbGluQGdtYWlsLmNvbT4KYW5kClRlc3RlZC1ieTogQWxleGFu ZGVyIFN2ZXJkbGluIDxhbGV4YW5kZXIuc3ZlcmRsaW5AZ21haWwuY29tPgoKc2hhbGwgSSBhZGQg dGhpcyBwYXRjaCB0byB0aGUgUnVzc2VscyBwYXRjaCBzeXN0ZW0sIG9yIHdvdWxkCkFybmQgdGFr ZSBpdCB0byB0aGUgU29DIHRyZWU/CgpUaGVyZSBpcyBhbHJlYWR5IGEgbWVyZ2UgY29tbWl0IDcy NmU2ZjMxYjEwMiB1cHN0cmVhbSB3aGljaApjbGFpbXMgdG8gbWVyZ2UgaXQsIGJ1dCBpdCdzIGFj dHVhbGx5IG5vdCBpbi4KCj4gLS0tCj4gwqBhcmNoL2FybS9LY29uZmlnwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHzCoMKgIDIgKy0KPiDCoGFyY2gvYXJtL21hY2gtZXA5M3h4L2Nsb2NrLmMgfCA5 NzUgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KPiDCoGFyY2gvYXJtL21hY2gt ZXA5M3h4L2NvcmUuY8KgIHzCoMKgIDIgKy0KPiDCoGFyY2gvYXJtL21hY2gtZXA5M3h4L3NvYy5o wqDCoCB8wqAgNDIgKy0KPiDCoDQgZmlsZXMgY2hhbmdlZCwgNTgxIGluc2VydGlvbnMoKyksIDQ0 MCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vS2NvbmZpZyBiL2FyY2gv YXJtL0tjb25maWcKPiBpbmRleCAyNDgwNGYxMTMwMmQuLjhmNGE3NGEzNzQwNiAxMDA2NDQKPiAt LS0gYS9hcmNoL2FybS9LY29uZmlnCj4gKysrIGIvYXJjaC9hcm0vS2NvbmZpZwo+IEBAIC0zNTcs NyArMzU3LDcgQEAgY29uZmlnIEFSQ0hfRVA5M1hYCj4gwqDCoMKgwqDCoMKgwqDCoHNlbGVjdCBD TEtTUkNfTU1JTwo+IMKgwqDCoMKgwqDCoMKgwqBzZWxlY3QgQ1BVX0FSTTkyMFQKPiDCoMKgwqDC oMKgwqDCoMKgc2VsZWN0IEdQSU9MSUIKPiAtwqDCoMKgwqDCoMKgwqBzZWxlY3QgSEFWRV9MRUdB Q1lfQ0xLCj4gK8KgwqDCoMKgwqDCoMKgc2VsZWN0IENPTU1PTl9DTEsKPiDCoMKgwqDCoMKgwqDC oMKgaGVscAo+IMKgwqDCoMKgwqDCoMKgwqDCoCBUaGlzIGVuYWJsZXMgc3VwcG9ydCBmb3IgdGhl IENpcnJ1cyBFUDkzeHggc2VyaWVzIG9mIENQVXMuCj4gwqAKPiBkaWZmIC0tZ2l0IGEvYXJjaC9h cm0vbWFjaC1lcDkzeHgvY2xvY2suYyBiL2FyY2gvYXJtL21hY2gtZXA5M3h4L2Nsb2NrLmMKPiBp bmRleCAyODEwZWI1YjJhY2EuLmNjNzUwODcxMzRkMyAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybS9t YWNoLWVwOTN4eC9jbG9jay5jCj4gKysrIGIvYXJjaC9hcm0vbWFjaC1lcDkzeHgvY2xvY2suYwo+ IEBAIC0xNiw2ICsxNiw3IEBACj4gwqAjaW5jbHVkZSA8bGludXgvaW8uaD4KPiDCoCNpbmNsdWRl IDxsaW51eC9zcGlubG9jay5oPgo+IMKgI2luY2x1ZGUgPGxpbnV4L2Nsa2Rldi5oPgo+ICsjaW5j bHVkZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+Cj4gwqAjaW5jbHVkZSA8bGludXgvc29jL2NpcnJ1 cy9lcDkzeHguaD4KPiDCoAo+IMKgI2luY2x1ZGUgImhhcmR3YXJlLmgiCj4gQEAgLTI0LDM0OCAr MjUsMTk0IEBACj4gwqAKPiDCoCNpbmNsdWRlICJzb2MuaCIKPiDCoAo+IC1zdHJ1Y3QgY2xrIHsK PiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY2xrwqDCoMKgwqDCoMKgKnBhcmVudDsKPiAtwqDCoMKg wqDCoMKgwqB1bnNpZ25lZCBsb25nwqDCoMKgcmF0ZTsKPiAtwqDCoMKgwqDCoMKgwqBpbnTCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVzZXJzOwo+IC3CoMKgwqDCoMKgwqDCoGludMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc3dfbG9ja2VkOwo+IC3CoMKgwqDCoMKgwqDCoHZvaWQgX19pb21l bcKgwqDCoMKgKmVuYWJsZV9yZWc7Cj4gLcKgwqDCoMKgwqDCoMKgdTMywqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBlbmFibGVfbWFzazsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgdW5zaWduZWQgbG9u Z8KgwqDCoCgqZ2V0X3JhdGUpKHN0cnVjdCBjbGsgKmNsayk7Cj4gLcKgwqDCoMKgwqDCoMKgaW50 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAoKnNldF9yYXRlKShzdHJ1Y3QgY2xrICpjbGssIHVu c2lnbmVkIGxvbmcgcmF0ZSk7Cj4gLX07Cj4gLQo+IC0KPiAtc3RhdGljIHVuc2lnbmVkIGxvbmcg Z2V0X3VhcnRfcmF0ZShzdHJ1Y3QgY2xrICpjbGspOwo+IC0KPiAtc3RhdGljIGludCBzZXRfa2V5 dGNoY2xrX3JhdGUoc3RydWN0IGNsayAqY2xrLCB1bnNpZ25lZCBsb25nIHJhdGUpOwo+IC1zdGF0 aWMgaW50IHNldF9kaXZfcmF0ZShzdHJ1Y3QgY2xrICpjbGssIHVuc2lnbmVkIGxvbmcgcmF0ZSk7 Cj4gLXN0YXRpYyBpbnQgc2V0X2kyc19zY2xrX3JhdGUoc3RydWN0IGNsayAqY2xrLCB1bnNpZ25l ZCBsb25nIHJhdGUpOwo+IC1zdGF0aWMgaW50IHNldF9pMnNfbHJjbGtfcmF0ZShzdHJ1Y3QgY2xr ICpjbGssIHVuc2lnbmVkIGxvbmcgcmF0ZSk7Cj4gK3N0YXRpYyBERUZJTkVfU1BJTkxPQ0soY2xr X2xvY2spOwo+IMKgCj4gLXN0YXRpYyBzdHJ1Y3QgY2xrIGNsa194dGFsaSA9IHsKPiAtwqDCoMKg wqDCoMKgwqAucmF0ZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IEVQOTNYWF9FWFRfQ0xLX1JBVEUs Cj4gLX07Cj4gLXN0YXRpYyBzdHJ1Y3QgY2xrIGNsa191YXJ0MSA9IHsKPiAtwqDCoMKgwqDCoMKg wqAucGFyZW50wqDCoMKgwqDCoMKgwqDCoMKgPSAmY2xrX3h0YWxpLAo+IC3CoMKgwqDCoMKgwqDC oC5zd19sb2NrZWTCoMKgwqDCoMKgwqA9IDEsCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9yZWfC oMKgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX0RFVkNGRywKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxl X21hc2vCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9ERVZDRkdfVTFFTiwKPiAtwqDCoMKgwqDCoMKg wqAuZ2V0X3JhdGXCoMKgwqDCoMKgwqDCoD0gZ2V0X3VhcnRfcmF0ZSwKPiAtfTsKPiAtc3RhdGlj IHN0cnVjdCBjbGsgY2xrX3VhcnQyID0gewo+IC3CoMKgwqDCoMKgwqDCoC5wYXJlbnTCoMKgwqDC oMKgwqDCoMKgwqA9ICZjbGtfeHRhbGksCj4gLcKgwqDCoMKgwqDCoMKgLnN3X2xvY2tlZMKgwqDC oMKgwqDCoD0gMSwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX3JlZ8KgwqDCoMKgwqA9IEVQOTNY WF9TWVNDT05fREVWQ0ZHLAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfbWFza8KgwqDCoMKgPSBF UDkzWFhfU1lTQ09OX0RFVkNGR19VMkVOLAo+IC3CoMKgwqDCoMKgwqDCoC5nZXRfcmF0ZcKgwqDC oMKgwqDCoMKgPSBnZXRfdWFydF9yYXRlLAo+IC19Owo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtf dWFydDMgPSB7Cj4gLcKgwqDCoMKgwqDCoMKgLnBhcmVudMKgwqDCoMKgwqDCoMKgwqDCoD0gJmNs a194dGFsaSwKPiAtwqDCoMKgwqDCoMKgwqAuc3dfbG9ja2VkwqDCoMKgwqDCoMKgPSAxLAo+IC3C oMKgwqDCoMKgwqDCoC5lbmFibGVfcmVnwqDCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9ERVZDRkcs Cj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9tYXNrwqDCoMKgwqA9IEVQOTNYWF9TWVNDT05fREVW Q0ZHX1UzRU4sCj4gLcKgwqDCoMKgwqDCoMKgLmdldF9yYXRlwqDCoMKgwqDCoMKgwqA9IGdldF91 YXJ0X3JhdGUsCj4gLX07Cj4gLXN0YXRpYyBzdHJ1Y3QgY2xrIGNsa19wbGwxID0gewo+IC3CoMKg wqDCoMKgwqDCoC5wYXJlbnTCoMKgwqDCoMKgwqDCoMKgwqA9ICZjbGtfeHRhbGksCj4gLX07Cj4g LXN0YXRpYyBzdHJ1Y3QgY2xrIGNsa19mID0gewo+IC3CoMKgwqDCoMKgwqDCoC5wYXJlbnTCoMKg wqDCoMKgwqDCoMKgwqA9ICZjbGtfcGxsMSwKPiAtfTsKPiAtc3RhdGljIHN0cnVjdCBjbGsgY2xr X2ggPSB7Cj4gLcKgwqDCoMKgwqDCoMKgLnBhcmVudMKgwqDCoMKgwqDCoMKgwqDCoD0gJmNsa19w bGwxLAo+IC19Owo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfcCA9IHsKPiAtwqDCoMKgwqDCoMKg wqAucGFyZW50wqDCoMKgwqDCoMKgwqDCoMKgPSAmY2xrX3BsbDEsCj4gLX07Cj4gLXN0YXRpYyBz dHJ1Y3QgY2xrIGNsa19wbGwyID0gewo+IC3CoMKgwqDCoMKgwqDCoC5wYXJlbnTCoMKgwqDCoMKg wqDCoMKgwqA9ICZjbGtfeHRhbGksCj4gLX07Cj4gLXN0YXRpYyBzdHJ1Y3QgY2xrIGNsa191c2Jf aG9zdCA9IHsKPiAtwqDCoMKgwqDCoMKgwqAucGFyZW50wqDCoMKgwqDCoMKgwqDCoMKgPSAmY2xr X3BsbDIsCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9yZWfCoMKgwqDCoMKgPSBFUDkzWFhfU1lT Q09OX1BXUkNOVCwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX21hc2vCoMKgwqDCoD0gRVA5M1hY X1NZU0NPTl9QV1JDTlRfVVNIX0VOLAo+IC19Owo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfa2V5 cGFkID0gewo+IC3CoMKgwqDCoMKgwqDCoC5wYXJlbnTCoMKgwqDCoMKgwqDCoMKgwqA9ICZjbGtf eHRhbGksCj4gLcKgwqDCoMKgwqDCoMKgLnN3X2xvY2tlZMKgwqDCoMKgwqDCoD0gMSwKPiAtwqDC oMKgwqDCoMKgwqAuZW5hYmxlX3JlZ8KgwqDCoMKgwqA9IEVQOTNYWF9TWVNDT05fS0VZVENIQ0xL RElWLAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfbWFza8KgwqDCoMKgPSBFUDkzWFhfU1lTQ09O X0tFWVRDSENMS0RJVl9LRU4sCj4gLcKgwqDCoMKgwqDCoMKgLnNldF9yYXRlwqDCoMKgwqDCoMKg wqA9IHNldF9rZXl0Y2hjbGtfcmF0ZSwKPiAtfTsKPiAtc3RhdGljIHN0cnVjdCBjbGsgY2xrX2Fk YyA9IHsKPiAtwqDCoMKgwqDCoMKgwqAucGFyZW50wqDCoMKgwqDCoMKgwqDCoMKgPSAmY2xrX3h0 YWxpLAo+IC3CoMKgwqDCoMKgwqDCoC5zd19sb2NrZWTCoMKgwqDCoMKgwqA9IDEsCj4gLcKgwqDC oMKgwqDCoMKgLmVuYWJsZV9yZWfCoMKgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX0tFWVRDSENMS0RJ ViwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX21hc2vCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9L RVlUQ0hDTEtESVZfVFNFTiwKPiAtwqDCoMKgwqDCoMKgwqAuc2V0X3JhdGXCoMKgwqDCoMKgwqDC oD0gc2V0X2tleXRjaGNsa19yYXRlLAo+IC19Owo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfc3Bp ID0gewo+IC3CoMKgwqDCoMKgwqDCoC5wYXJlbnTCoMKgwqDCoMKgwqDCoMKgwqA9ICZjbGtfeHRh bGksCj4gLcKgwqDCoMKgwqDCoMKgLnJhdGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSBFUDkzWFhf RVhUX0NMS19SQVRFLAo+IC19Owo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfcHdtID0gewo+IC3C oMKgwqDCoMKgwqDCoC5wYXJlbnTCoMKgwqDCoMKgwqDCoMKgwqA9ICZjbGtfeHRhbGksCj4gLcKg wqDCoMKgwqDCoMKgLnJhdGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSBFUDkzWFhfRVhUX0NMS19S QVRFLAo+IC19Owo+ICtzdGF0aWMgY2hhciBmY2xrX2Rpdmlzb3JzW10gPSB7IDEsIDIsIDQsIDgs IDE2LCAxLCAxLCAxIH07Cj4gK3N0YXRpYyBjaGFyIGhjbGtfZGl2aXNvcnNbXSA9IHsgMSwgMiwg NCwgNSwgNiwgOCwgMTYsIDMyIH07Cj4gK3N0YXRpYyBjaGFyIHBjbGtfZGl2aXNvcnNbXSA9IHsg MSwgMiwgNCwgOCB9Owo+IMKgCj4gLXN0YXRpYyBzdHJ1Y3QgY2xrIGNsa192aWRlbyA9IHsKPiAt wqDCoMKgwqDCoMKgwqAuc3dfbG9ja2VkwqDCoMKgwqDCoMKgPSAxLAo+IC3CoMKgwqDCoMKgwqDC oC5lbmFibGVfcmVnwqDCoMKgwqAgPSBFUDkzWFhfU1lTQ09OX1ZJRENMS0RJViwKPiAtwqDCoMKg wqDCoMKgwqAuZW5hYmxlX21hc2vCoMKgwqAgPSBFUDkzWFhfU1lTQ09OX0NMS0RJVl9FTkFCTEUs Cj4gLcKgwqDCoMKgwqDCoMKgLnNldF9yYXRlwqDCoMKgwqDCoMKgwqA9IHNldF9kaXZfcmF0ZSwK PiAtfTsKPiArc3RhdGljIGNoYXIgYWRjX2Rpdmlzb3JzW10gPSB7IDE2LCA0IH07Cj4gK3N0YXRp YyBjaGFyIHNjbGtfZGl2aXNvcnNbXSA9IHsgMiwgNCB9Owo+ICtzdGF0aWMgY2hhciBscmNsa19k aXZpc29yc1tdID0geyAzMiwgNjQsIDEyOCB9Owo+IMKgCj4gLXN0YXRpYyBzdHJ1Y3QgY2xrIGNs a19pMnNfbWNsayA9IHsKPiAtwqDCoMKgwqDCoMKgwqAuc3dfbG9ja2VkwqDCoMKgwqDCoMKgPSAx LAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfcmVnwqDCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9J MlNDTEtESVYsCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9tYXNrwqDCoMKgwqA9IEVQOTNYWF9T WVNDT05fQ0xLRElWX0VOQUJMRSwKPiAtwqDCoMKgwqDCoMKgwqAuc2V0X3JhdGXCoMKgwqDCoMKg wqDCoD0gc2V0X2Rpdl9yYXRlLAo+ICtzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IG11eF9wYXJl bnRzW10gPSB7Cj4gK8KgwqDCoMKgwqDCoMKgInh0YWxpIiwKPiArwqDCoMKgwqDCoMKgwqAicGxs MSIsCj4gK8KgwqDCoMKgwqDCoMKgInBsbDIiCj4gwqB9Owo+IMKgCj4gLXN0YXRpYyBzdHJ1Y3Qg Y2xrIGNsa19pMnNfc2NsayA9IHsKPiAtwqDCoMKgwqDCoMKgwqAuc3dfbG9ja2VkwqDCoMKgwqDC oMKgPSAxLAo+IC3CoMKgwqDCoMKgwqDCoC5wYXJlbnTCoMKgwqDCoMKgwqDCoMKgwqA9ICZjbGtf aTJzX21jbGssCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9yZWfCoMKgwqDCoMKgPSBFUDkzWFhf U1lTQ09OX0kyU0NMS0RJViwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX21hc2vCoMKgwqDCoD0g RVA5M1hYX1NZU0NPTl9JMlNDTEtESVZfU0VOQSwKPiAtwqDCoMKgwqDCoMKgwqAuc2V0X3JhdGXC oMKgwqDCoMKgwqDCoD0gc2V0X2kyc19zY2xrX3JhdGUsCj4gLX07Cj4gKy8qCj4gKyAqIFBMTCBy YXRlID0gMTQuNzQ1NiBNSHogKiAoWDFGQkQgKyAxKSAqIChYMkZCRCArIDEpIC8gKFgySVBEICsg MSkgLyAyXlBTCj4gKyAqLwo+ICtzdGF0aWMgdW5zaWduZWQgbG9uZyBjYWxjX3BsbF9yYXRlKHVu c2lnbmVkIGxvbmcgbG9uZyByYXRlLCB1MzIgY29uZmlnX3dvcmQpCj4gK3sKPiArwqDCoMKgwqDC oMKgwqBpbnQgaTsKPiDCoAo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfaTJzX2xyY2xrID0gewo+ IC3CoMKgwqDCoMKgwqDCoC5zd19sb2NrZWTCoMKgwqDCoMKgwqA9IDEsCj4gLcKgwqDCoMKgwqDC oMKgLnBhcmVudMKgwqDCoMKgwqDCoMKgwqDCoD0gJmNsa19pMnNfc2NsaywKPiAtwqDCoMKgwqDC oMKgwqAuZW5hYmxlX3JlZ8KgwqDCoMKgwqA9IEVQOTNYWF9TWVNDT05fSTJTQ0xLRElWLAo+IC3C oMKgwqDCoMKgwqDCoC5lbmFibGVfbWFza8KgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX0kyU0NMS0RJ Vl9TRU5BLAo+IC3CoMKgwqDCoMKgwqDCoC5zZXRfcmF0ZcKgwqDCoMKgwqDCoMKgPSBzZXRfaTJz X2xyY2xrX3JhdGUsCj4gLX07Cj4gK8KgwqDCoMKgwqDCoMKgcmF0ZSAqPSAoKGNvbmZpZ193b3Jk ID4+IDExKSAmIDB4MWYpICsgMTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBYMUZC RCAqLwo+ICvCoMKgwqDCoMKgwqDCoHJhdGUgKj0gKChjb25maWdfd29yZCA+PiA1KSAmIDB4M2Yp ICsgMTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIFgyRkJEICovCj4gK8KgwqDC oMKgwqDCoMKgZG9fZGl2KHJhdGUsIChjb25maWdfd29yZCAmIDB4MWYpICsgMSk7wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIFgySVBEICovCj4gK8KgwqDCoMKgwqDCoMKgZm9y IChpID0gMDsgaSA8ICgoY29uZmlnX3dvcmQgPj4gMTYpICYgMyk7IGkrKynCoMKgwqDCoMKgwqDC oMKgwqAvKiBQUyAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByYXRlID4+PSAx Owo+IMKgCj4gLS8qIERNQSBDbG9ja3MgKi8KPiAtc3RhdGljIHN0cnVjdCBjbGsgY2xrX20ycDAg PSB7Cj4gLcKgwqDCoMKgwqDCoMKgLnBhcmVudMKgwqDCoMKgwqDCoMKgwqDCoD0gJmNsa19oLAo+ IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfcmVnwqDCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9QV1JD TlQsCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9tYXNrwqDCoMKgwqA9IEVQOTNYWF9TWVNDT05f UFdSQ05UX0RNQV9NMlAwLAo+IC19Owo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfbTJwMSA9IHsK PiAtwqDCoMKgwqDCoMKgwqAucGFyZW50wqDCoMKgwqDCoMKgwqDCoMKgPSAmY2xrX2gsCj4gLcKg wqDCoMKgwqDCoMKgLmVuYWJsZV9yZWfCoMKgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX1BXUkNOVCwK PiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX21hc2vCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9QV1JD TlRfRE1BX00yUDEsCj4gLX07Cj4gLXN0YXRpYyBzdHJ1Y3QgY2xrIGNsa19tMnAyID0gewo+IC3C oMKgwqDCoMKgwqDCoC5wYXJlbnTCoMKgwqDCoMKgwqDCoMKgwqA9ICZjbGtfaCwKPiAtwqDCoMKg wqDCoMKgwqAuZW5hYmxlX3JlZ8KgwqDCoMKgwqA9IEVQOTNYWF9TWVNDT05fUFdSQ05ULAo+IC3C oMKgwqDCoMKgwqDCoC5lbmFibGVfbWFza8KgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX1BXUkNOVF9E TUFfTTJQMiwKPiAtfTsKPiAtc3RhdGljIHN0cnVjdCBjbGsgY2xrX20ycDMgPSB7Cj4gLcKgwqDC oMKgwqDCoMKgLnBhcmVudMKgwqDCoMKgwqDCoMKgwqDCoD0gJmNsa19oLAo+IC3CoMKgwqDCoMKg wqDCoC5lbmFibGVfcmVnwqDCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9QV1JDTlQsCj4gLcKgwqDC oMKgwqDCoMKgLmVuYWJsZV9tYXNrwqDCoMKgwqA9IEVQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9N MlAzLAo+IC19Owo+IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfbTJwNCA9IHsKPiAtwqDCoMKgwqDC oMKgwqAucGFyZW50wqDCoMKgwqDCoMKgwqDCoMKgPSAmY2xrX2gsCj4gLcKgwqDCoMKgwqDCoMKg LmVuYWJsZV9yZWfCoMKgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX1BXUkNOVCwKPiAtwqDCoMKgwqDC oMKgwqAuZW5hYmxlX21hc2vCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDQs Cj4gLX07Cj4gLXN0YXRpYyBzdHJ1Y3QgY2xrIGNsa19tMnA1ID0gewo+IC3CoMKgwqDCoMKgwqDC oC5wYXJlbnTCoMKgwqDCoMKgwqDCoMKgwqA9ICZjbGtfaCwKPiAtwqDCoMKgwqDCoMKgwqAuZW5h YmxlX3JlZ8KgwqDCoMKgwqA9IEVQOTNYWF9TWVNDT05fUFdSQ05ULAo+IC3CoMKgwqDCoMKgwqDC oC5lbmFibGVfbWFza8KgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQNSwKPiAt fTsKPiAtc3RhdGljIHN0cnVjdCBjbGsgY2xrX20ycDYgPSB7Cj4gLcKgwqDCoMKgwqDCoMKgLnBh cmVudMKgwqDCoMKgwqDCoMKgwqDCoD0gJmNsa19oLAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVf cmVnwqDCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9QV1JDTlQsCj4gLcKgwqDCoMKgwqDCoMKgLmVu YWJsZV9tYXNrwqDCoMKgwqA9IEVQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9NMlA2LAo+IC19Owo+ IC1zdGF0aWMgc3RydWN0IGNsayBjbGtfbTJwNyA9IHsKPiAtwqDCoMKgwqDCoMKgwqAucGFyZW50 wqDCoMKgwqDCoMKgwqDCoMKgPSAmY2xrX2gsCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9yZWfC oMKgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX1BXUkNOVCwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxl X21hc2vCoMKgwqDCoD0gRVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDcsCj4gLX07Cj4gLXN0 YXRpYyBzdHJ1Y3QgY2xrIGNsa19tMnA4ID0gewo+IC3CoMKgwqDCoMKgwqDCoC5wYXJlbnTCoMKg wqDCoMKgwqDCoMKgwqA9ICZjbGtfaCwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX3JlZ8KgwqDC oMKgwqA9IEVQOTNYWF9TWVNDT05fUFdSQ05ULAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfbWFz a8KgwqDCoMKgPSBFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQOCwKPiAtfTsKPiAtc3RhdGlj IHN0cnVjdCBjbGsgY2xrX20ycDkgPSB7Cj4gLcKgwqDCoMKgwqDCoMKgLnBhcmVudMKgwqDCoMKg wqDCoMKgwqDCoD0gJmNsa19oLAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfcmVnwqDCoMKgwqDC oD0gRVA5M1hYX1NZU0NPTl9QV1JDTlQsCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9tYXNrwqDC oMKgwqA9IEVQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9NMlA5LAo+IC19Owo+IC1zdGF0aWMgc3Ry dWN0IGNsayBjbGtfbTJtMCA9IHsKPiAtwqDCoMKgwqDCoMKgwqAucGFyZW50wqDCoMKgwqDCoMKg wqDCoMKgPSAmY2xrX2gsCj4gLcKgwqDCoMKgwqDCoMKgLmVuYWJsZV9yZWfCoMKgwqDCoMKgPSBF UDkzWFhfU1lTQ09OX1BXUkNOVCwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX21hc2vCoMKgwqDC oD0gRVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yTTAsCj4gLX07Cj4gLXN0YXRpYyBzdHJ1Y3Qg Y2xrIGNsa19tMm0xID0gewo+IC3CoMKgwqDCoMKgwqDCoC5wYXJlbnTCoMKgwqDCoMKgwqDCoMKg wqA9ICZjbGtfaCwKPiAtwqDCoMKgwqDCoMKgwqAuZW5hYmxlX3JlZ8KgwqDCoMKgwqA9IEVQOTNY WF9TWVNDT05fUFdSQ05ULAo+IC3CoMKgwqDCoMKgwqDCoC5lbmFibGVfbWFza8KgwqDCoMKgPSBF UDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJNMSwKPiAtfTsKPiArwqDCoMKgwqDCoMKgwqByZXR1 cm4gKHVuc2lnbmVkIGxvbmcpcmF0ZTsKPiArfQo+IMKgCj4gLSNkZWZpbmUgSU5JVF9DSyhkZXYs Y29uLGNrKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoFwKPiAtwqDCoMKgwqDCoMKgwqB7IC5kZXZfaWQgPSBkZXYs IC5jb25faWQgPSBjb24sIC5jbGsgPSBjayB9Cj4gLQo+IC1zdGF0aWMgc3RydWN0IGNsa19sb29r dXAgY2xvY2tzW10gPSB7Cj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSyhOVUxMLMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgInh0YWxpIizCoMKgwqDCoMKgwqDCoMKgJmNsa194 dGFsaSksCj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSygiYXBiOnVhcnQxIizCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBOVUxMLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAmY2xrX3VhcnQxKSwKPiAtwqDC oMKgwqDCoMKgwqBJTklUX0NLKCJhcGI6dWFydDIiLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoE5V TEwswqDCoMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtfdWFydDIpLAo+IC3CoMKgwqDCoMKgwqDCoElO SVRfQ0soImFwYjp1YXJ0MyIswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgTlVMTCzCoMKgwqDCoMKg wqDCoMKgwqDCoMKgJmNsa191YXJ0MyksCj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSyhOVUxMLMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgInBsbDEiLMKgwqDCoMKgwqDCoMKg wqDCoCZjbGtfcGxsMSksCj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSyhOVUxMLMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgImZjbGsiLMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtf ZiksCj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSyhOVUxMLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgImhjbGsiLMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtfaCksCj4gLcKgwqDC oMKgwqDCoMKgSU5JVF9DSyhOVUxMLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgImFwYl9wY2xrIizCoMKgwqDCoMKgJmNsa19wKSwKPiAtwqDCoMKgwqDCoMKgwqBJTklUX0NL KE5VTEwswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAicGxsMiIswqDCoMKg wqDCoMKgwqDCoMKgJmNsa19wbGwyKSwKPiAtwqDCoMKgwqDCoMKgwqBJTklUX0NLKCJvaGNpLXBs YXRmb3JtIizCoMKgwqDCoMKgwqDCoMKgTlVMTCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgJmNsa191 c2JfaG9zdCksCj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSygiZXA5M3h4LWtleXBhZCIswqDCoMKg wqDCoMKgwqDCoE5VTEwswqDCoMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtfa2V5cGFkKSwKPiAtwqDC oMKgwqDCoMKgwqBJTklUX0NLKCJlcDkzeHgtYWRjIizCoMKgwqDCoMKgwqDCoMKgwqDCoMKgTlVM TCzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgJmNsa19hZGMpLAo+IC3CoMKgwqDCoMKgwqDCoElOSVRf Q0soImVwOTN4eC1mYiIswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgTlVMTCzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgJmNsa192aWRlbyksCj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSygiZXA5M3h4LXNw aS4wIizCoMKgwqDCoMKgwqDCoMKgwqBOVUxMLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAmY2xrX3Nw aSksCj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSygiZXA5M3h4LWkycyIswqDCoMKgwqDCoMKgwqDC oMKgwqDCoCJtY2xrIizCoMKgwqDCoMKgwqDCoMKgwqAmY2xrX2kyc19tY2xrKSwKPiAtwqDCoMKg wqDCoMKgwqBJTklUX0NLKCJlcDkzeHgtaTJzIizCoMKgwqDCoMKgwqDCoMKgwqDCoMKgInNjbGsi LMKgwqDCoMKgwqDCoMKgwqDCoCZjbGtfaTJzX3NjbGspLAo+IC3CoMKgwqDCoMKgwqDCoElOSVRf Q0soImVwOTN4eC1pMnMiLMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAibHJjbGsiLMKgwqDCoMKgwqDC oMKgwqAmY2xrX2kyc19scmNsayksCj4gLcKgwqDCoMKgwqDCoMKgSU5JVF9DSyhOVUxMLMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgInB3bV9jbGsiLMKgwqDCoMKgwqDCoCZj bGtfcHdtKSwKPiAtwqDCoMKgwqDCoMKgwqBJTklUX0NLKE5VTEwswqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAibTJwMCIswqDCoMKgwqDCoMKgwqDCoMKgJmNsa19tMnAwKSwK PiAtwqDCoMKgwqDCoMKgwqBJTklUX0NLKE5VTEwswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAibTJwMSIswqDCoMKgwqDCoMKgwqDCoMKgJmNsa19tMnAxKSwKPiAtwqDCoMKg wqDCoMKgwqBJTklUX0NLKE5VTEwswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAibTJwMiIswqDCoMKgwqDCoMKgwqDCoMKgJmNsa19tMnAyKSwKPiAtwqDCoMKgwqDCoMKgwqBJ TklUX0NLKE5VTEwswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAibTJwMyIs wqDCoMKgwqDCoMKgwqDCoMKgJmNsa19tMnAzKSwKPiAtwqDCoMKgwqDCoMKgwqBJTklUX0NLKE5V TEwswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAibTJwNCIswqDCoMKgwqDC oMKgwqDCoMKgJmNsa19tMnA0KSwKPiAtwqDCoMKgwqDCoMKgwqBJTklUX0NLKE5VTEwswqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAibTJwNSIswqDCoMKgwqDCoMKgwqDCoMKg JmNsa19tMnA1KSwKPiAtwqDCoMKgwqDCoMKgwqBJTklUX0NLKE5VTEwswqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAibTJwNiIswqDCoMKgwqDCoMKgwqDCoMKgJmNsa19tMnA2 KSwKPiAtwqDCoMKgwqDCoMKgwqBJTklUX0NLKE5VTEwswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAibTJwNyIswqDCoMKgwqDCoMKgwqDCoMKgJmNsa19tMnA3KSwKPiAtwqDC oMKgwqDCoMKgwqBJTklUX0NLKE5VTEwswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAibTJwOCIswqDCoMKgwqDCoMKgwqDCoMKgJmNsa19tMnA4KSwKPiAtwqDCoMKgwqDCoMKg wqBJTklUX0NLKE5VTEwswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAibTJw OSIswqDCoMKgwqDCoMKgwqDCoMKgJmNsa19tMnA5KSwKPiAtwqDCoMKgwqDCoMKgwqBJTklUX0NL KE5VTEwswqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAibTJtMCIswqDCoMKg wqDCoMKgwqDCoMKgJmNsa19tMm0wKSwKPiAtwqDCoMKgwqDCoMKgwqBJTklUX0NLKE5VTEwswqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAibTJtMSIswqDCoMKgwqDCoMKgwqDC oMKgJmNsa19tMm0xKSwKPiArc3RydWN0IGNsa19wc2Mgewo+ICvCoMKgwqDCoMKgwqDCoHN0cnVj dCBjbGtfaHcgaHc7Cj4gK8KgwqDCoMKgwqDCoMKgdm9pZCBfX2lvbWVtICpyZWc7Cj4gK8KgwqDC oMKgwqDCoMKgdTggYml0X2lkeDsKPiArwqDCoMKgwqDCoMKgwqB1MzIgbWFzazsKPiArwqDCoMKg wqDCoMKgwqB1OCBzaGlmdDsKPiArwqDCoMKgwqDCoMKgwqB1OCB3aWR0aDsKPiArwqDCoMKgwqDC oMKgwqBjaGFyICpkaXY7Cj4gK8KgwqDCoMKgwqDCoMKgdTggbnVtX2RpdjsKPiArwqDCoMKgwqDC oMKgwqBzcGlubG9ja190ICpsb2NrOwo+IMKgfTsKPiDCoAo+IC1zdGF0aWMgREVGSU5FX1NQSU5M T0NLKGNsa19sb2NrKTsKPiArI2RlZmluZSB0b19jbGtfcHNjKF9odykgY29udGFpbmVyX29mKF9o dywgc3RydWN0IGNsa19wc2MsIGh3KQo+IMKgCj4gLXN0YXRpYyB2b2lkIF9fY2xrX2VuYWJsZShz dHJ1Y3QgY2xrICpjbGspCj4gK3N0YXRpYyBpbnQgZXA5M3h4X2Nsa19pc19lbmFibGVkKHN0cnVj dCBjbGtfaHcgKmh3KQo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoGlmICghY2xrLT51c2VycysrKSB7 Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChjbGstPnBhcmVudCkKPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoF9fY2xrX2VuYWJsZShj bGstPnBhcmVudCk7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoY2xr LT5lbmFibGVfcmVnKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB1MzIgdjsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB2ID0gX19yYXdfcmVhZGwoY2xrLT5lbmFibGVfcmVnKTsKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHYgfD0gY2xrLT5lbmFibGVfbWFz azsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChj bGstPnN3X2xvY2tlZCkKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcDkzeHhfc3lzY29uX3N3bG9ja2VkX3dyaXRlKHYsIGNs ay0+ZW5hYmxlX3JlZyk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBlbHNlCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgX19yYXdfd3JpdGVsKHYsIGNsay0+ZW5hYmxlX3JlZyk7Cj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiAtwqDCoMKgwqDCoMKgwqB9Cj4gK8Kg wqDCoMKgwqDCoMKgc3RydWN0IGNsa19wc2MgKnBzYyA9IHRvX2Nsa19wc2MoaHcpOwo+ICvCoMKg wqDCoMKgwqDCoHUzMiB2YWwgPSByZWFkbChwc2MtPnJlZyk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDC oHJldHVybiAodmFsICYgQklUKHBzYy0+Yml0X2lkeCkpID8gMSA6IDA7Cj4gwqB9Cj4gwqAKPiAt aW50IGNsa19lbmFibGUoc3RydWN0IGNsayAqY2xrKQo+ICtzdGF0aWMgaW50IGVwOTN4eF9jbGtf ZW5hYmxlKHN0cnVjdCBjbGtfaHcgKmh3KQo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoHVuc2lnbmVk IGxvbmcgZmxhZ3M7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNsa19wc2MgKnBzYyA9IHRvX2Ns a19wc2MoaHcpOwo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwo+ICvC oMKgwqDCoMKgwqDCoHUzMiB2YWw7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqBpZiAoIWNsaykKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gK8KgwqDCoMKg wqDCoMKgaWYgKHBzYy0+bG9jaykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Bp bl9sb2NrX2lycXNhdmUocHNjLT5sb2NrLCBmbGFncyk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHZh bCA9IF9fcmF3X3JlYWRsKHBzYy0+cmVnKTsKPiArwqDCoMKgwqDCoMKgwqB2YWwgfD0gQklUKHBz Yy0+Yml0X2lkeCk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGVwOTN4eF9zeXNjb25fc3dsb2NrZWRf d3JpdGUodmFsLCBwc2MtPnJlZyk7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqBzcGluX2xvY2tfaXJx c2F2ZSgmY2xrX2xvY2ssIGZsYWdzKTsKPiAtwqDCoMKgwqDCoMKgwqBfX2Nsa19lbmFibGUoY2xr KTsKPiAtwqDCoMKgwqDCoMKgwqBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjbGtfbG9jaywgZmxh Z3MpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChwc2MtPmxvY2spCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHNwaW5fdW5sb2NrX2lycXJlc3RvcmUocHNjLT5sb2NrLCBmbGFncyk7Cj4g wqAKPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDA7Cj4gwqB9Cj4gLUVYUE9SVF9TWU1CT0woY2xr X2VuYWJsZSk7Cj4gwqAKPiAtc3RhdGljIHZvaWQgX19jbGtfZGlzYWJsZShzdHJ1Y3QgY2xrICpj bGspCj4gK3N0YXRpYyB2b2lkIGVwOTN4eF9jbGtfZGlzYWJsZShzdHJ1Y3QgY2xrX2h3ICpodykK PiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBpZiAoIS0tY2xrLT51c2Vycykgewo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoY2xrLT5lbmFibGVfcmVnKSB7Cj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1MzIgdjsKPiAtCj4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB2ID0gX19yYXdfcmVhZGwoY2xr LT5lbmFibGVfcmVnKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHYgJj0gfmNsay0+ZW5hYmxlX21hc2s7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoY2xrLT5zd19sb2NrZWQpCj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXA5M3h4 X3N5c2Nvbl9zd2xvY2tlZF93cml0ZSh2LCBjbGstPmVuYWJsZV9yZWcpOwo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxzZQo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoF9fcmF3X3dy aXRlbCh2LCBjbGstPmVuYWJsZV9yZWcpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB9Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNsa19wc2MgKnBzYyA9IHRvX2Nsa19wc2MoaHcp Owo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwo+ICvCoMKgwqDCoMKg wqDCoHUzMiB2YWw7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGNs ay0+cGFyZW50KQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgX19jbGtfZGlzYWJsZShjbGstPnBhcmVudCk7Cj4gLcKgwqDCoMKgwqDCoMKgfQo+IC19Cj4g K8KgwqDCoMKgwqDCoMKgaWYgKHBzYy0+bG9jaykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgc3Bpbl9sb2NrX2lycXNhdmUocHNjLT5sb2NrLCBmbGFncyk7Cj4gwqAKPiAtdm9pZCBj bGtfZGlzYWJsZShzdHJ1Y3QgY2xrICpjbGspCj4gLXsKPiAtwqDCoMKgwqDCoMKgwqB1bnNpZ25l ZCBsb25nIGZsYWdzOwo+ICvCoMKgwqDCoMKgwqDCoHZhbCA9IF9fcmF3X3JlYWRsKHBzYy0+cmVn KTsKPiArwqDCoMKgwqDCoMKgwqB2YWwgJj0gfkJJVChwc2MtPmJpdF9pZHgpOwo+IMKgCj4gLcKg wqDCoMKgwqDCoMKgaWYgKCFjbGspCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dHVybjsKPiArwqDCoMKgwqDCoMKgwqBlcDkzeHhfc3lzY29uX3N3bG9ja2VkX3dyaXRlKHZhbCwg cHNjLT5yZWcpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgc3Bpbl9sb2NrX2lycXNhdmUoJmNsa19s b2NrLCBmbGFncyk7Cj4gLcKgwqDCoMKgwqDCoMKgX19jbGtfZGlzYWJsZShjbGspOwo+IC3CoMKg wqDCoMKgwqDCoHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNsa19sb2NrLCBmbGFncyk7Cj4gK8Kg wqDCoMKgwqDCoMKgaWYgKHBzYy0+bG9jaykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZShwc2MtPmxvY2ssIGZsYWdzKTsKPiDCoH0KPiAtRVhQ T1JUX1NZTUJPTChjbGtfZGlzYWJsZSk7Cj4gwqAKPiAtc3RhdGljIHVuc2lnbmVkIGxvbmcgZ2V0 X3VhcnRfcmF0ZShzdHJ1Y3QgY2xrICpjbGspCj4gLXsKPiAtwqDCoMKgwqDCoMKgwqB1bnNpZ25l ZCBsb25nIHJhdGUgPSBjbGtfZ2V0X3JhdGUoY2xrLT5wYXJlbnQpOwo+IC3CoMKgwqDCoMKgwqDC oHUzMiB2YWx1ZTsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbGtfb3BzIGNsa19lcDkzeHhfZ2F0 ZV9vcHMgPSB7Cj4gK8KgwqDCoMKgwqDCoMKgLmVuYWJsZSA9IGVwOTN4eF9jbGtfZW5hYmxlLAo+ ICvCoMKgwqDCoMKgwqDCoC5kaXNhYmxlID0gZXA5M3h4X2Nsa19kaXNhYmxlLAo+ICvCoMKgwqDC oMKgwqDCoC5pc19lbmFibGVkID0gZXA5M3h4X2Nsa19pc19lbmFibGVkLAo+ICt9Owo+IMKgCj4g LcKgwqDCoMKgwqDCoMKgdmFsdWUgPSBfX3Jhd19yZWFkbChFUDkzWFhfU1lTQ09OX1BXUkNOVCk7 Cj4gLcKgwqDCoMKgwqDCoMKgaWYgKHZhbHVlICYgRVA5M1hYX1NZU0NPTl9QV1JDTlRfVUFSVEJB VUQpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByYXRlOwo+IC3CoMKg wqDCoMKgwqDCoGVsc2UKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJh dGUgLyAyOwo+ICtzdGF0aWMgc3RydWN0IGNsa19odyAqZXA5M3h4X2Nsa19yZWdpc3Rlcl9nYXRl KGNvbnN0IGNoYXIgKm5hbWUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IGNoYXIgKnBhcmVudF9uYW1l LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB2b2lkIF9faW9tZW0gKnJlZywKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTggYml0 X2lkeCkKPiArewo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGtfaW5pdF9kYXRhIGluaXQ7Cj4g K8KgwqDCoMKgwqDCoMKgc3RydWN0IGNsa19wc2MgKnBzYzsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgY2xrICpjbGs7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHBzYyA9IGt6YWxsb2Moc2l6ZW9mKCpw c2MpLCBHRlBfS0VSTkVMKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAoIXBzYykKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gKwo+ICvCoMKg wqDCoMKgwqDCoGluaXQubmFtZSA9IG5hbWU7Cj4gK8KgwqDCoMKgwqDCoMKgaW5pdC5vcHMgPSAm Y2xrX2VwOTN4eF9nYXRlX29wczsKPiArwqDCoMKgwqDCoMKgwqBpbml0LmZsYWdzID0gQ0xLX1NF VF9SQVRFX1BBUkVOVDsKPiArwqDCoMKgwqDCoMKgwqBpbml0LnBhcmVudF9uYW1lcyA9IChwYXJl bnRfbmFtZSA/ICZwYXJlbnRfbmFtZSA6IE5VTEwpOwo+ICvCoMKgwqDCoMKgwqDCoGluaXQubnVt X3BhcmVudHMgPSAocGFyZW50X25hbWUgPyAxIDogMCk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHBz Yy0+cmVnID0gcmVnOwo+ICvCoMKgwqDCoMKgwqDCoHBzYy0+Yml0X2lkeCA9IGJpdF9pZHg7Cj4g K8KgwqDCoMKgwqDCoMKgcHNjLT5ody5pbml0ID0gJmluaXQ7Cj4gK8KgwqDCoMKgwqDCoMKgcHNj LT5sb2NrID0gJmNsa19sb2NrOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBjbGsgPSBjbGtfcmVnaXN0 ZXIoTlVMTCwgJnBzYy0+aHcpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChJU19FUlIoY2xrKSkKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKga2ZyZWUocHNjKTsKPiArCj4gK8KgwqDCoMKg wqDCoMKgcmV0dXJuICZwc2MtPmh3Owo+IMKgfQo+IMKgCj4gLXVuc2lnbmVkIGxvbmcgY2xrX2dl dF9yYXRlKHN0cnVjdCBjbGsgKmNsaykKPiArc3RhdGljIHU4IGVwOTN4eF9tdXhfZ2V0X3BhcmVu dChzdHJ1Y3QgY2xrX2h3ICpodykKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBpZiAoY2xrLT5nZXRf cmF0ZSkKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGNsay0+Z2V0X3Jh dGUoY2xrKTsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY2xrX3BzYyAqcHNjID0gdG9fY2xrX3Bz Yyhodyk7Cj4gK8KgwqDCoMKgwqDCoMKgdTMyIHZhbCA9IF9fcmF3X3JlYWRsKHBzYy0+cmVnKTsK PiDCoAo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiBjbGstPnJhdGU7Cj4gK8KgwqDCoMKgwqDCoMKg aWYgKCEodmFsICYgRVA5M1hYX1NZU0NPTl9DTEtESVZfRVNFTCkpCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBpZiAoISh2YWwg JiBFUDkzWFhfU1lTQ09OX0NMS0RJVl9QU0VMKSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgcmV0dXJuIDE7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAyOwo+IMKgfQo+IC1F WFBPUlRfU1lNQk9MKGNsa19nZXRfcmF0ZSk7Cj4gwqAKPiAtc3RhdGljIGludCBzZXRfa2V5dGNo Y2xrX3JhdGUoc3RydWN0IGNsayAqY2xrLCB1bnNpZ25lZCBsb25nIHJhdGUpCj4gK3N0YXRpYyBp bnQgZXA5M3h4X211eF9zZXRfcGFyZW50X2xvY2soc3RydWN0IGNsa19odyAqaHcsIHU4IGluZGV4 KQo+IMKgewo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGtfcHNjICpwc2MgPSB0b19jbGtfcHNj KGh3KTsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsKPiDCoMKgwqDC oMKgwqDCoMKgdTMyIHZhbDsKPiAtwqDCoMKgwqDCoMKgwqB1MzIgZGl2X2JpdDsKPiDCoAo+IC3C oMKgwqDCoMKgwqDCoHZhbCA9IF9fcmF3X3JlYWRsKGNsay0+ZW5hYmxlX3JlZyk7Cj4gK8KgwqDC oMKgwqDCoMKgaWYgKGluZGV4ID49IEFSUkFZX1NJWkUobXV4X3BhcmVudHMpKQo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiDCoAo+IC3CoMKgwqDCoMKg wqDCoC8qCj4gLcKgwqDCoMKgwqDCoMKgICogVGhlIEtleSBNYXRyaXggYW5kIEFEQyBjbG9ja3Mg YXJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhlIHNhbWUKPiAtwqDCoMKgwqDCoMKgwqAgKiBTeXN0ZW0g Q29udHJvbGxlciByZWdpc3Rlci7CoCBUaGUgY2xvY2sgdXNlZCB3aWxsIGJlIGVpdGhlcgo+IC3C oMKgwqDCoMKgwqDCoCAqIDEvNCBvciAxLzE2IHRoZSBleHRlcm5hbCBjbG9jayByYXRlIGRlcGVu ZGluZyBvbiB0aGUKPiAtwqDCoMKgwqDCoMKgwqAgKiBFUDkzWFhfU1lTQ09OX0tFWVRDSENMS0RJ Vl9LRElWL0VQOTNYWF9TWVNDT05fS0VZVENIQ0xLRElWX0FESVYKPiAtwqDCoMKgwqDCoMKgwqAg KiBiaXQgYmVpbmcgc2V0IG9yIGNsZWFyZWQuCj4gLcKgwqDCoMKgwqDCoMKgICovCj4gLcKgwqDC oMKgwqDCoMKgZGl2X2JpdCA9IGNsay0+ZW5hYmxlX21hc2sgPj4gMTU7Cj4gK8KgwqDCoMKgwqDC oMKgaWYgKHBzYy0+bG9jaykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Bpbl9s b2NrX2lycXNhdmUocHNjLT5sb2NrLCBmbGFncyk7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqBpZiAo cmF0ZSA9PSBFUDkzWFhfS0VZVENIQ0xLX0RJVjQpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHZhbCB8PSBkaXZfYml0Owo+IC3CoMKgwqDCoMKgwqDCoGVsc2UgaWYgKHJhdGUgPT0g RVA5M1hYX0tFWVRDSENMS19ESVYxNikKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg dmFsICY9IH5kaXZfYml0Owo+IC3CoMKgwqDCoMKgwqDCoGVsc2UKPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gK8KgwqDCoMKgwqDCoMKgdmFsID0gX19y YXdfcmVhZGwocHNjLT5yZWcpOwo+ICvCoMKgwqDCoMKgwqDCoHZhbCAmPSB+KEVQOTNYWF9TWVND T05fQ0xLRElWX0VTRUwgfCBFUDkzWFhfU1lTQ09OX0NMS0RJVl9QU0VMKTsKPiArCj4gKwo+ICvC oMKgwqDCoMKgwqDCoGlmIChpbmRleCAhPSAwKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHZhbCB8PSBFUDkzWFhfU1lTQ09OX0NMS0RJVl9FU0VMOwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB2YWwgfD0gKGluZGV4IC0gMSkgPyBFUDkzWFhfU1lTQ09OX0NMS0RJ Vl9QU0VMIDogMDsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGVwOTN4 eF9zeXNjb25fc3dsb2NrZWRfd3JpdGUodmFsLCBwc2MtPnJlZyk7Cj4gKwo+ICvCoMKgwqDCoMKg wqDCoGlmIChwc2MtPmxvY2spCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNwaW5f dW5sb2NrX2lycXJlc3RvcmUocHNjLT5sb2NrLCBmbGFncyk7Cj4gwqAKPiAtwqDCoMKgwqDCoMKg wqBlcDkzeHhfc3lzY29uX3N3bG9ja2VkX3dyaXRlKHZhbCwgY2xrLT5lbmFibGVfcmVnKTsKPiAt wqDCoMKgwqDCoMKgwqBjbGstPnJhdGUgPSByYXRlOwo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4g MDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IGNhbGNfY2xrX2RpdihzdHJ1Y3QgY2xrICpjbGss IHVuc2lnbmVkIGxvbmcgcmF0ZSwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGludCAqcHNlbCwgaW50ICplc2VsLCBpbnQgKnBkaXYsIGludCAqZGl2KQo+ ICtzdGF0aWMgYm9vbCBpc19iZXN0KHVuc2lnbmVkIGxvbmcgcmF0ZSwgdW5zaWduZWQgbG9uZyBu b3csCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxv bmcgYmVzdCkKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY2xrICptY2xrOwo+IC3CoMKg wqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgbWF4X3JhdGUsIGFjdHVhbF9yYXRlLCBtY2xrX3JhdGUs IHJhdGVfZXJyID0gLTE7Cj4gLcKgwqDCoMKgwqDCoMKgaW50IGksIGZvdW5kID0gMCwgX19kaXYg PSAwLCBfX3BkaXYgPSAwOwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBhYnMocmF0ZSAtIG5vdykg PCBhYnMocmF0ZSAtIGJlc3QpOwo+ICt9Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqAvKiBEb24ndCBl eGNlZWQgdGhlIG1heGltdW0gcmF0ZSAqLwo+IC3CoMKgwqDCoMKgwqDCoG1heF9yYXRlID0gbWF4 MyhjbGtfcGxsMS5yYXRlIC8gNCwgY2xrX3BsbDIucmF0ZSAvIDQsIGNsa194dGFsaS5yYXRlIC8g NCk7Cj4gLcKgwqDCoMKgwqDCoMKgcmF0ZSA9IG1pbihyYXRlLCBtYXhfcmF0ZSk7Cj4gK3N0YXRp YyBpbnQgZXA5M3h4X211eF9kZXRlcm1pbmVfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgY2xrX3JhdGVfcmVxdWVzdCAqcmVxKQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgdW5z aWduZWQgbG9uZyByYXRlID0gcmVxLT5yYXRlOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGsg KmJlc3RfcGFyZW50ID0gMDsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBsb25nIF9fcGFyZW50 X3JhdGU7Cj4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgbG9uZyBiZXN0X3JhdGUgPSAwLCBhY3R1 YWxfcmF0ZSwgbWNsa19yYXRlOwo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgYmVzdF9w YXJlbnRfcmF0ZTsKPiArwqDCoMKgwqDCoMKgwqBpbnQgX19kaXYgPSAwLCBfX3BkaXYgPSAwOwo+ ICvCoMKgwqDCoMKgwqDCoGludCBpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoC8qCj4gwqDCoMKg wqDCoMKgwqDCoCAqIFRyeSB0aGUgdHdvIHBsbCdzIGFuZCB0aGUgZXh0ZXJuYWwgY2xvY2sKPiBA QCAtMzc2LDE0ICsyMjMsMTEgQEAgc3RhdGljIGludCBjYWxjX2Nsa19kaXYoc3RydWN0IGNsayAq Y2xrLCB1bnNpZ25lZCBsb25nIHJhdGUsCj4gwqDCoMKgwqDCoMKgwqDCoCAqIGh0dHA6Ly9iZS1h LW1hdmVyaWNrLmNvbS9lbi9wdWJzL2FwcE5vdGUvQU4yNjlSRVYxLnBkZgo+IMKgwqDCoMKgwqDC oMKgwqAgKgo+IMKgwqDCoMKgwqDCoMKgwqAgKi8KPiAtwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAw OyBpIDwgMzsgaSsrKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChpID09 IDApCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtY2xr ID0gJmNsa194dGFsaTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxzZSBpZiAo aSA9PSAxKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg bWNsayA9ICZjbGtfcGxsMTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxzZQo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbWNsayA9ICZj bGtfcGxsMjsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbWNsa19yYXRlID0gbWNs ay0+cmF0ZSAqIDI7Cj4gK8KgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo bXV4X3BhcmVudHMpOyBpKyspIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IGNsayAqcGFyZW50ID0gY2xrX2dldF9zeXMobXV4X3BhcmVudHNbaV0sIE5VTEwpOwo+ICsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgX19wYXJlbnRfcmF0ZSA9IGNsa19nZXRf cmF0ZShwYXJlbnQpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtY2xrX3JhdGUg PSBfX3BhcmVudF9yYXRlICogMjsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgLyogVHJ5IGVhY2ggcHJlZGl2aWRlciB2YWx1ZSAqLwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZm9yIChfX3BkaXYgPSA0OyBfX3BkaXYgPD0gNjsgX19wZGl2KyspIHsKPiBA QCAtMzkyLDE5NyArMjM2LDQ5NCBAQCBzdGF0aWMgaW50IGNhbGNfY2xrX2RpdihzdHJ1Y3QgY2xr ICpjbGssIHVuc2lnbmVkIGxvbmcgcmF0ZSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhY3R1YWxfcmF0ZSA9 IG1jbGtfcmF0ZSAvIChfX3BkaXYgKiBfX2Rpdik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFmb3VuZCB8fCBhYnMoYWN0dWFsX3JhdGUg LSByYXRlKSA8IHJhdGVfZXJyKSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKnBkaXYgPSBfX3BkaXYgLSAzOwo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCpkaXYgPSBfX2RpdjsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqcHNlbCA9IChpID09IDIpOwo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCplc2VsID0g KGkgIT0gMCk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY2xrLT5wYXJlbnQgPSBtY2xrOwo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsay0+cmF0ZSA9 IGFjdHVhbF9yYXRlOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJhdGVfZXJyID0gYWJzKGFjdHVhbF9yYXRlIC0gcmF0ZSk7 Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZm91bmQgPSAxOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKGlzX2Jlc3QocmF0ZSwgYWN0dWFsX3JhdGUsIGJlc3RfcmF0ZSkpIHsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBiZXN0X3JhdGUgPSBhY3R1YWxfcmF0ZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBiZXN0X3BhcmVudF9yYXRl ID0gX19wYXJlbnRfcmF0ZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBiZXN0X3BhcmVudCA9IHBhcmVudDsKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IC3CoMKgwqDC oMKgwqDCoGlmICghZm91bmQpCj4gK8KgwqDCoMKgwqDCoMKgaWYgKCFiZXN0X3BhcmVudCkKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+IMKgCj4gK8Kg wqDCoMKgwqDCoMKgcmVxLT5iZXN0X3BhcmVudF9yYXRlID0gYmVzdF9wYXJlbnRfcmF0ZTsKPiAr wqDCoMKgwqDCoMKgwqByZXEtPmJlc3RfcGFyZW50X2h3ID0gX19jbGtfZ2V0X2h3KGJlc3RfcGFy ZW50KTsKPiArwqDCoMKgwqDCoMKgwqByZXEtPnJhdGUgPSBiZXN0X3JhdGU7Cj4gKwo+IMKgwqDC oMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHNldF9kaXZfcmF0 ZShzdHJ1Y3QgY2xrICpjbGssIHVuc2lnbmVkIGxvbmcgcmF0ZSkKPiArc3RhdGljIHVuc2lnbmVk IGxvbmcgZXA5M3h4X2RkaXZfcmVjYWxjX3JhdGUoc3RydWN0IGNsa19odyAqaHcsCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRl KQo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoGludCBlcnIsIHBzZWwgPSAwLCBlc2VsID0gMCwgcGRp diA9IDAsIGRpdiA9IDA7Cj4gLcKgwqDCoMKgwqDCoMKgdTMyIHZhbDsKPiAtCj4gLcKgwqDCoMKg wqDCoMKgZXJyID0gY2FsY19jbGtfZGl2KGNsaywgcmF0ZSwgJnBzZWwsICZlc2VsLCAmcGRpdiwg JmRpdik7Cj4gLcKgwqDCoMKgwqDCoMKgaWYgKGVycikKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIGVycjsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY2xrX3BzYyAqcHNj ID0gdG9fY2xrX3BzYyhodyk7Cj4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgbG9uZyByYXRlID0g MDsKPiArwqDCoMKgwqDCoMKgwqB1MzIgdmFsID0gX19yYXdfcmVhZGwocHNjLT5yZWcpOwo+ICvC oMKgwqDCoMKgwqDCoGludCBfX3BkaXYgPSAoKHZhbCA+PiBFUDkzWFhfU1lTQ09OX0NMS0RJVl9Q RElWX1NISUZUKSAmIDB4MDMpOwo+ICvCoMKgwqDCoMKgwqDCoGludCBfX2RpdiA9IHZhbCAmIDB4 N2Y7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqAvKiBDbGVhciB0aGUgZXNlbCwgcHNlbCwgcGRpdiBh bmQgZGl2IGJpdHMgKi8KPiAtwqDCoMKgwqDCoMKgwqB2YWwgPSBfX3Jhd19yZWFkbChjbGstPmVu YWJsZV9yZWcpOwo+IC3CoMKgwqDCoMKgwqDCoHZhbCAmPSB+MHg3ZmZmOwo+ICvCoMKgwqDCoMKg wqDCoGlmIChfX2RpdiA+IDApCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJhdGUg PSAocGFyZW50X3JhdGUgKiAyKSAvICgoX19wZGl2ICsgMykgKiBfX2Rpdik7Cj4gwqAKPiAtwqDC oMKgwqDCoMKgwqAvKiBTZXQgdGhlIG5ldyBlc2VsLCBwc2VsLCBwZGl2IGFuZCBkaXYgYml0cyBm b3IgdGhlIG5ldyBjbG9jayByYXRlICovCj4gLcKgwqDCoMKgwqDCoMKgdmFsIHw9IChlc2VsID8g RVA5M1hYX1NZU0NPTl9DTEtESVZfRVNFTCA6IDApIHwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgKHBzZWwgPyBFUDkzWFhfU1lTQ09OX0NMS0RJVl9QU0VMIDogMCkgfAo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAocGRpdiA8PCBFUDkzWFhfU1lTQ09OX0NMS0RJVl9Q RElWX1NISUZUKSB8IGRpdjsKPiAtwqDCoMKgwqDCoMKgwqBlcDkzeHhfc3lzY29uX3N3bG9ja2Vk X3dyaXRlKHZhbCwgY2xrLT5lbmFibGVfcmVnKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiArwqDCoMKgwqDCoMKgwqByZXR1cm4gcmF0ZTsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHNl dF9pMnNfc2Nsa19yYXRlKHN0cnVjdCBjbGsgKmNsaywgdW5zaWduZWQgbG9uZyByYXRlKQo+ICtz dGF0aWMgaW50IGVwOTN4eF9kZGl2X3NldF9yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LCB1bnNpZ25l ZCBsb25nIHJhdGUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdW5zaWduZWQgbG9uZyBwYXJlbnRfcmF0ZSkKPiDCoHsKPiAt wqDCoMKgwqDCoMKgwqB1bnNpZ25lZCB2YWwgPSBfX3Jhd19yZWFkbChjbGstPmVuYWJsZV9yZWcp Owo+IC0KPiAtwqDCoMKgwqDCoMKgwqBpZiAocmF0ZSA9PSBjbGtfaTJzX21jbGsucmF0ZSAvIDIp Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVwOTN4eF9zeXNjb25fc3dsb2NrZWRf d3JpdGUodmFsICYgfkVQOTNYWF9JMlNDTEtESVZfU0RJViwgCj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGNsay0+ZW5hYmxlX3JlZyk7Cj4gLcKgwqDCoMKgwqDCoMKgZWxzZSBpZiAo cmF0ZSA9PSBjbGtfaTJzX21jbGsucmF0ZSAvIDQpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGVwOTN4eF9zeXNjb25fc3dsb2NrZWRfd3JpdGUodmFsIHwgRVA5M1hYX0kyU0NMS0RJ Vl9TRElWLCAKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2xrLT5lbmFibGVfcmVn KTsKPiAtwqDCoMKgwqDCoMKgwqBlbHNlCj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNsa19wc2Mg KnBzYyA9IHRvX2Nsa19wc2MoaHcpOwo+ICvCoMKgwqDCoMKgwqDCoGludCBwZGl2ID0gMCwgZGl2 ID0gMDsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBsb25nIGJlc3RfcmF0ZSA9IDAsIGFjdHVh bF9yYXRlLCBtY2xrX3JhdGU7Cj4gK8KgwqDCoMKgwqDCoMKgaW50IF9fZGl2ID0gMCwgX19wZGl2 ID0gMDsKPiArwqDCoMKgwqDCoMKgwqB1MzIgdmFsOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBtY2xr X3JhdGUgPSBwYXJlbnRfcmF0ZSAqIDI7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGZvciAoX19wZGl2 ID0gNDsgX19wZGl2IDw9IDY7IF9fcGRpdisrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoF9fZGl2ID0gbWNsa19yYXRlIC8gKHJhdGUgKiBfX3BkaXYpOwo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoX19kaXYgPCAyIHx8IF9fZGl2ID4gMTI3KQo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gKwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhY3R1YWxfcmF0ZSA9IG1jbGtfcmF0ZSAv IChfX3BkaXYgKiBfX2Rpdik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChp c19iZXN0KHJhdGUsIGFjdHVhbF9yYXRlLCBiZXN0X3JhdGUpKSB7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwZGl2ID0gX19wZGl2IC0gMzsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRpdiA9IF9fZGl2Owo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYmVzdF9yYXRl ID0gYWN0dWFsX3JhdGU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDC oMKgwqDCoMKgwqB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmICghYmVzdF9yYXRlKQo+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gwqAKPiAtwqDCoMKg wqDCoMKgwqBjbGtfaTJzX3NjbGsucmF0ZSA9IHJhdGU7Cj4gK8KgwqDCoMKgwqDCoMKgdmFsID0g X19yYXdfcmVhZGwocHNjLT5yZWcpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKiBDbGVhciBvbGQg ZGl2aWRlcnMgKi8KPiArwqDCoMKgwqDCoMKgwqB2YWwgJj0gfjB4MzdmOwo+ICsKPiArwqDCoMKg wqDCoMKgwqAvKiBTZXQgdGhlIG5ldyBwZGl2IGFuZCBkaXYgYml0cyBmb3IgdGhlIG5ldyBjbG9j ayByYXRlICovCj4gK8KgwqDCoMKgwqDCoMKgdmFsIHw9IChwZGl2IDw8IEVQOTNYWF9TWVNDT05f Q0xLRElWX1BESVZfU0hJRlQpIHwgZGl2Owo+ICvCoMKgwqDCoMKgwqDCoGVwOTN4eF9zeXNjb25f c3dsb2NrZWRfd3JpdGUodmFsLCBwc2MtPnJlZyk7Cj4gKwo+IMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4gMDsKPiDCoH0KPiDCoAo+IC1zdGF0aWMgaW50IHNldF9pMnNfbHJjbGtfcmF0ZShzdHJ1Y3Qg Y2xrICpjbGssIHVuc2lnbmVkIGxvbmcgcmF0ZSkKPiAtewo+IC3CoMKgwqDCoMKgwqDCoHVuc2ln bmVkIHZhbCA9IF9fcmF3X3JlYWRsKGNsay0+ZW5hYmxlX3JlZykgJiAKPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfkVQOTNYWF9JMlNDTEtESVZfTFJESVZfTUFTSzsKPiAtwqDCoMKg wqDCoMKgwqAKPiAtwqDCoMKgwqDCoMKgwqBpZiAocmF0ZSA9PSBjbGtfaTJzX3NjbGsucmF0ZSAv IDMyKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcDkzeHhfc3lzY29uX3N3bG9j a2VkX3dyaXRlKHZhbCB8IEVQOTNYWF9JMlNDTEtESVZfTFJESVYzMiwKPiAtwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY2xrLT5lbmFibGVfcmVnKTsKPiAtwqDCoMKgwqDCoMKgwqBlbHNl IGlmIChyYXRlID09IGNsa19pMnNfc2Nsay5yYXRlIC8gNjQpCj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGVwOTN4eF9zeXNjb25fc3dsb2NrZWRfd3JpdGUodmFsIHwgRVA5M1hYX0ky U0NMS0RJVl9MUkRJVjY0LAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjbGstPmVu YWJsZV9yZWcpOwo+IC3CoMKgwqDCoMKgwqDCoGVsc2UgaWYgKHJhdGUgPT0gY2xrX2kyc19zY2xr LnJhdGUgLyAxMjgpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVwOTN4eF9zeXNj b25fc3dsb2NrZWRfd3JpdGUodmFsIHwgRVA5M1hYX0kyU0NMS0RJVl9MUkRJVjEyOCwKPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2xrLT5lbmFibGVfcmVnKTsKPiAtwqDCoMKgwqDC oMKgwqBlbHNlCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFM Owo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgY2xrX2RkaXZfb3BzID0gewo+ICvCoMKg wqDCoMKgwqDCoC5lbmFibGUgPSBlcDkzeHhfY2xrX2VuYWJsZSwKPiArwqDCoMKgwqDCoMKgwqAu ZGlzYWJsZSA9IGVwOTN4eF9jbGtfZGlzYWJsZSwKPiArwqDCoMKgwqDCoMKgwqAuaXNfZW5hYmxl ZCA9IGVwOTN4eF9jbGtfaXNfZW5hYmxlZCwKPiArwqDCoMKgwqDCoMKgwqAuZ2V0X3BhcmVudCA9 IGVwOTN4eF9tdXhfZ2V0X3BhcmVudCwKPiArwqDCoMKgwqDCoMKgwqAuc2V0X3BhcmVudCA9IGVw OTN4eF9tdXhfc2V0X3BhcmVudF9sb2NrLAo+ICvCoMKgwqDCoMKgwqDCoC5kZXRlcm1pbmVfcmF0 ZSA9IGVwOTN4eF9tdXhfZGV0ZXJtaW5lX3JhdGUsCj4gK8KgwqDCoMKgwqDCoMKgLnJlY2FsY19y YXRlID0gZXA5M3h4X2RkaXZfcmVjYWxjX3JhdGUsCj4gK8KgwqDCoMKgwqDCoMKgLnNldF9yYXRl ID0gZXA5M3h4X2RkaXZfc2V0X3JhdGUsCj4gK307Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqBjbGtf aTJzX2xyY2xrLnJhdGUgPSByYXRlOwo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ICtzdGF0 aWMgc3RydWN0IGNsa19odyAqY2xrX2h3X3JlZ2lzdGVyX2RkaXYoY29uc3QgY2hhciAqbmFtZSwK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdm9pZCBfX2lvbWVtICpyZWcsCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHU4IGJpdF9pZHgpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg Y2xrX2luaXRfZGF0YSBpbml0Owo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGtfcHNjICpwc2M7 Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNsayAqY2xrOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBw c2MgPSBremFsbG9jKHNpemVvZigqcHNjKSwgR0ZQX0tFUk5FTCk7Cj4gK8KgwqDCoMKgwqDCoMKg aWYgKCFwc2MpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBFUlJfUFRS KC1FTk9NRU0pOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBpbml0Lm5hbWUgPSBuYW1lOwo+ICvCoMKg wqDCoMKgwqDCoGluaXQub3BzID0gJmNsa19kZGl2X29wczsKPiArwqDCoMKgwqDCoMKgwqBpbml0 LmZsYWdzID0gMDsKPiArwqDCoMKgwqDCoMKgwqBpbml0LnBhcmVudF9uYW1lcyA9IG11eF9wYXJl bnRzOwo+ICvCoMKgwqDCoMKgwqDCoGluaXQubnVtX3BhcmVudHMgPSBBUlJBWV9TSVpFKG11eF9w YXJlbnRzKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcHNjLT5yZWcgPSByZWc7Cj4gK8KgwqDCoMKg wqDCoMKgcHNjLT5iaXRfaWR4ID0gYml0X2lkeDsKPiArwqDCoMKgwqDCoMKgwqBwc2MtPmxvY2sg PSAmY2xrX2xvY2s7Cj4gK8KgwqDCoMKgwqDCoMKgcHNjLT5ody5pbml0ID0gJmluaXQ7Cj4gKwo+ ICvCoMKgwqDCoMKgwqDCoGNsayA9IGNsa19yZWdpc3RlcihOVUxMLCAmcHNjLT5odyk7Cj4gK8Kg wqDCoMKgwqDCoMKgaWYgKElTX0VSUihjbGspKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBrZnJlZShwc2MpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gJnBzYy0+aHc7Cj4g wqB9Cj4gwqAKPiAtaW50IGNsa19zZXRfcmF0ZShzdHJ1Y3QgY2xrICpjbGssIHVuc2lnbmVkIGxv bmcgcmF0ZSkKPiArc3RhdGljIHVuc2lnbmVkIGxvbmcgZXA5M3h4X2Rpdl9yZWNhbGNfcmF0ZShz dHJ1Y3QgY2xrX2h3ICpodywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVk IGxvbmcgcGFyZW50X3JhdGUpCj4gwqB7Cj4gLcKgwqDCoMKgwqDCoMKgaWYgKGNsay0+c2V0X3Jh dGUpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBjbGstPnNldF9yYXRl KGNsaywgcmF0ZSk7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNsa19wc2MgKnBzYyA9IHRvX2Ns a19wc2MoaHcpOwo+ICvCoMKgwqDCoMKgwqDCoHUzMiB2YWwgPSBfX3Jhd19yZWFkbChwc2MtPnJl Zyk7Cj4gK8KgwqDCoMKgwqDCoMKgdTggaW5kZXggPSAodmFsICYgcHNjLT5tYXNrKSA+PiBwc2Mt PnNoaWZ0Owo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gK8KgwqDCoMKg wqDCoMKgaWYgKGluZGV4ID4gcHNjLT5udW1fZGl2KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gMDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIERJVl9ST1VORF9V UF9VTEwocGFyZW50X3JhdGUsIHBzYy0+ZGl2W2luZGV4XSk7Cj4gwqB9Cj4gLUVYUE9SVF9TWU1C T0woY2xrX3NldF9yYXRlKTsKPiDCoAo+IC1sb25nIGNsa19yb3VuZF9yYXRlKHN0cnVjdCBjbGsg KmNsaywgdW5zaWduZWQgbG9uZyByYXRlKQo+ICtzdGF0aWMgbG9uZyBlcDkzeHhfZGl2X3JvdW5k X3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0ZSwKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHVuc2lnbmVkIGxvbmcgKnBhcmVudF9yYXRlKQo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoFdBUk5f T04oY2xrKTsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgY2xrX3BzYyAqcHNjID0gdG9fY2xrX3BzYyhodyk7Cj4gK8KgwqDCoMKgwqDCoMKgdW5zaWdu ZWQgbG9uZyBiZXN0ID0gMCwgbm93LCBtYXhkaXY7Cj4gK8KgwqDCoMKgwqDCoMKgaW50IGk7Cj4g Kwo+ICvCoMKgwqDCoMKgwqDCoG1heGRpdiA9IHBzYy0+ZGl2W3BzYy0+bnVtX2RpdiAtIDFdOwo+ ICsKPiArwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgcHNjLT5udW1fZGl2OyBpKyspIHsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKChyYXRlICogcHNjLT5kaXZbaV0p ID09ICpwYXJlbnRfcmF0ZSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybiBESVZfUk9VTkRfVVBfVUxMKCh1NjQpKnBhcmVudF9yYXRlLCBwc2Mt PmRpdltpXSk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBub3cgPSBESVZf Uk9VTkRfVVBfVUxMKCh1NjQpKnBhcmVudF9yYXRlLCBwc2MtPmRpdltpXSk7Cj4gKwo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaXNfYmVzdChyYXRlLCBub3csIGJlc3QpKQo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYmVzdCA9IG5v dzsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmICghYmVzdCkKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYmVzdCA9IERJVl9ST1VORF9VUF9VTEwoKnBh cmVudF9yYXRlLCBtYXhkaXYpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gYmVzdDsKPiDC oH0KPiAtRVhQT1JUX1NZTUJPTChjbGtfcm91bmRfcmF0ZSk7Cj4gwqAKPiAtaW50IGNsa19zZXRf cGFyZW50KHN0cnVjdCBjbGsgKmNsaywgc3RydWN0IGNsayAqcGFyZW50KQo+ICtzdGF0aWMgaW50 IGVwOTN4eF9kaXZfc2V0X3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0 ZSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKQo+IMKgewo+IC3CoMKgwqDCoMKgwqDC oFdBUk5fT04oY2xrKTsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY2xrX3BzYyAqcHNjID0gdG9f Y2xrX3BzYyhodyk7Cj4gK8KgwqDCoMKgwqDCoMKgdTMyIHZhbCA9IF9fcmF3X3JlYWRsKHBzYy0+ cmVnKSAmIH5wc2MtPm1hc2s7Cj4gK8KgwqDCoMKgwqDCoMKgaW50IGk7Cj4gKwo+ICvCoMKgwqDC oMKgwqDCoGZvciAoaSA9IDA7IGkgPCBwc2MtPm51bV9kaXY7IGkrKykKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJhdGUgPT0gcGFyZW50X3JhdGUgLyBwc2MtPmRpdltpXSkg ewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmFsIHw9 IGkgPDwgcHNjLT5zaGlmdDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGJyZWFrOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gKwo+ ICvCoMKgwqDCoMKgwqDCoGlmIChpID09IHBzYy0+bnVtX2RpdikKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGVwOTN4 eF9zeXNjb25fc3dsb2NrZWRfd3JpdGUodmFsLCBwc2MtPnJlZyk7Cj4gKwo+IMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gMDsKPiDCoH0KPiAtRVhQT1JUX1NZTUJPTChjbGtfc2V0X3BhcmVudCk7Cj4g wqAKPiAtc3RydWN0IGNsayAqY2xrX2dldF9wYXJlbnQoc3RydWN0IGNsayAqY2xrKQo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGNsa19vcHMgZXA5M3h4X2Rpdl9vcHMgPSB7Cj4gK8KgwqDCoMKgwqDC oMKgLmVuYWJsZSA9IGVwOTN4eF9jbGtfZW5hYmxlLAo+ICvCoMKgwqDCoMKgwqDCoC5kaXNhYmxl ID0gZXA5M3h4X2Nsa19kaXNhYmxlLAo+ICvCoMKgwqDCoMKgwqDCoC5pc19lbmFibGVkID0gZXA5 M3h4X2Nsa19pc19lbmFibGVkLAo+ICvCoMKgwqDCoMKgwqDCoC5yZWNhbGNfcmF0ZSA9IGVwOTN4 eF9kaXZfcmVjYWxjX3JhdGUsCj4gK8KgwqDCoMKgwqDCoMKgLnJvdW5kX3JhdGUgPSBlcDkzeHhf ZGl2X3JvdW5kX3JhdGUsCj4gK8KgwqDCoMKgwqDCoMKgLnNldF9yYXRlID0gZXA5M3h4X2Rpdl9z ZXRfcmF0ZSwKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgY2xrX2h3ICpjbGtfaHdfcmVnaXN0 ZXJfZGl2KGNvbnN0IGNoYXIgKm5hbWUsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0 IGNoYXIgKnBhcmVudF9uYW1lLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2b2lkIF9faW9t ZW0gKnJlZywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTggZW5hYmxlX2JpdCwKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdTggc2hpZnQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHU4IHdpZHRoLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjaGFyICpjbGtfZGl2aXNvcnMs Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHU4IG51bV9kaXYpCj4gwqB7Cj4gLcKgwqDCoMKg wqDCoMKgcmV0dXJuIGNsay0+cGFyZW50Owo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGtfaW5p dF9kYXRhIGluaXQ7Cj4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGNsa19wc2MgKnBzYzsKPiArwqDC oMKgwqDCoMKgwqBzdHJ1Y3QgY2xrICpjbGs7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHBzYyA9IGt6 YWxsb2Moc2l6ZW9mKCpwc2MpLCBHRlBfS0VSTkVMKTsKPiArwqDCoMKgwqDCoMKgwqBpZiAoIXBz YykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGluaXQubmFtZSA9IG5hbWU7Cj4gK8KgwqDCoMKgwqDC oMKgaW5pdC5vcHMgPSAmZXA5M3h4X2Rpdl9vcHM7Cj4gK8KgwqDCoMKgwqDCoMKgaW5pdC5mbGFn cyA9IDA7Cj4gK8KgwqDCoMKgwqDCoMKgaW5pdC5wYXJlbnRfbmFtZXMgPSAocGFyZW50X25hbWUg PyAmcGFyZW50X25hbWUgOiBOVUxMKTsKPiArwqDCoMKgwqDCoMKgwqBpbml0Lm51bV9wYXJlbnRz ID0gMTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcHNjLT5yZWcgPSByZWc7Cj4gK8KgwqDCoMKgwqDC oMKgcHNjLT5iaXRfaWR4ID0gZW5hYmxlX2JpdDsKPiArwqDCoMKgwqDCoMKgwqBwc2MtPm1hc2sg PSBHRU5NQVNLKHNoaWZ0ICsgd2lkdGggLSAxLCBzaGlmdCk7Cj4gK8KgwqDCoMKgwqDCoMKgcHNj LT5zaGlmdCA9IHNoaWZ0Owo+ICvCoMKgwqDCoMKgwqDCoHBzYy0+ZGl2ID0gY2xrX2Rpdmlzb3Jz Owo+ICvCoMKgwqDCoMKgwqDCoHBzYy0+bnVtX2RpdiA9IG51bV9kaXY7Cj4gK8KgwqDCoMKgwqDC oMKgcHNjLT5sb2NrID0gJmNsa19sb2NrOwo+ICvCoMKgwqDCoMKgwqDCoHBzYy0+aHcuaW5pdCA9 ICZpbml0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqBjbGsgPSBjbGtfcmVnaXN0ZXIoTlVMTCwgJnBz Yy0+aHcpOwo+ICvCoMKgwqDCoMKgwqDCoGlmIChJU19FUlIoY2xrKSkKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKga2ZyZWUocHNjKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJu ICZwc2MtPmh3Owo+IMKgfQo+IC1FWFBPUlRfU1lNQk9MKGNsa19nZXRfcGFyZW50KTsKPiDCoAo+ ICtzdHJ1Y3QgZXA5M3h4X2dhdGUgewo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludCBiaXQ7 Cj4gK8KgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqZGV2X2lkOwo+ICvCoMKgwqDCoMKgwqDCoGNv bnN0IGNoYXIgKmNvbl9pZDsKPiArfTsKPiDCoAo+IC1zdGF0aWMgY2hhciBmY2xrX2Rpdmlzb3Jz W10gPSB7IDEsIDIsIDQsIDgsIDE2LCAxLCAxLCAxIH07Cj4gLXN0YXRpYyBjaGFyIGhjbGtfZGl2 aXNvcnNbXSA9IHsgMSwgMiwgNCwgNSwgNiwgOCwgMTYsIDMyIH07Cj4gLXN0YXRpYyBjaGFyIHBj bGtfZGl2aXNvcnNbXSA9IHsgMSwgMiwgNCwgOCB9Owo+ICtzdGF0aWMgc3RydWN0IGVwOTN4eF9n YXRlIGVwOTN4eF91YXJ0c1tdID0gewo+ICvCoMKgwqDCoMKgwqDCoHtFUDkzWFhfU1lTQ09OX0RF VkNGR19VMUVOLCAiYXBiOnVhcnQxIiwgTlVMTH0sCj4gK8KgwqDCoMKgwqDCoMKge0VQOTNYWF9T WVNDT05fREVWQ0ZHX1UyRU4sICJhcGI6dWFydDIiLCBOVUxMfSwKPiArwqDCoMKgwqDCoMKgwqB7 RVA5M1hYX1NZU0NPTl9ERVZDRkdfVTNFTiwgImFwYjp1YXJ0MyIsIE5VTEx9LAo+ICt9Owo+IMKg Cj4gLS8qCj4gLSAqIFBMTCByYXRlID0gMTQuNzQ1NiBNSHogKiAoWDFGQkQgKyAxKSAqIChYMkZC RCArIDEpIC8gKFgySVBEICsgMSkgLyAyXlBTCj4gLSAqLwo+IC1zdGF0aWMgdW5zaWduZWQgbG9u ZyBjYWxjX3BsbF9yYXRlKHUzMiBjb25maWdfd29yZCkKPiArc3RhdGljIHZvaWQgX19pbml0IGVw OTN4eF91YXJ0X2Nsb2NrX2luaXQodm9pZCkKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqB1bnNpZ25l ZCBsb25nIGxvbmcgcmF0ZTsKPiAtwqDCoMKgwqDCoMKgwqBpbnQgaTsKPiArwqDCoMKgwqDCoMKg wqB1bnNpZ25lZCBpbnQgaTsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY2xrX2h3ICpodzsKPiAr wqDCoMKgwqDCoMKgwqB1MzIgdmFsdWU7Cj4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50IGNs a191YXJ0X2RpdjsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoHJhdGUgPSBjbGtfeHRhbGkucmF0ZTsK PiAtwqDCoMKgwqDCoMKgwqByYXRlICo9ICgoY29uZmlnX3dvcmQgPj4gMTEpICYgMHgxZikgKyAx O8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIFgxRkJEICovCj4gLcKgwqDCoMKgwqDC oMKgcmF0ZSAqPSAoKGNvbmZpZ193b3JkID4+IDUpICYgMHgzZikgKyAxO8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgLyogWDJGQkQgKi8KPiAtwqDCoMKgwqDCoMKgwqBkb19kaXYocmF0 ZSwgKGNvbmZpZ193b3JkICYgMHgxZikgKyAxKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgLyogWDJJUEQgKi8KPiAtwqDCoMKgwqDCoMKgwqBmb3IgKGkgPSAwOyBpIDwgKChjb25m aWdfd29yZCA+PiAxNikgJiAzKTsgaSsrKcKgwqDCoMKgwqDCoMKgwqDCoC8qIFBTICovCj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJhdGUgPj49IDE7Cj4gK8KgwqDCoMKgwqDCoMKg dmFsdWUgPSBfX3Jhd19yZWFkbChFUDkzWFhfU1lTQ09OX1BXUkNOVCk7Cj4gK8KgwqDCoMKgwqDC oMKgaWYgKHZhbHVlICYgRVA5M1hYX1NZU0NPTl9QV1JDTlRfVUFSVEJBVUQpCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsa191YXJ0X2RpdiA9IDE7Cj4gK8KgwqDCoMKgwqDCoMKg ZWxzZQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbGtfdWFydF9kaXYgPSAyOwo+ IMKgCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuICh1bnNpZ25lZCBsb25nKXJhdGU7Cj4gK8KgwqDC oMKgwqDCoMKgaHcgPSBjbGtfaHdfcmVnaXN0ZXJfZml4ZWRfZmFjdG9yKE5VTEwsICJ1YXJ0Iiwg Inh0YWxpIiwgMCwgMSwgY2xrX3VhcnRfZGl2KTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogcGFy ZW50aW5nIHVhcnQgZ2F0ZSBjbG9ja3MgdG8gdWFydCBjbG9jayAqLwo+ICvCoMKgwqDCoMKgwqDC oGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGVwOTN4eF91YXJ0cyk7IGkrKykgewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBodyA9IGVwOTN4eF9jbGtfcmVnaXN0ZXJfZ2F0ZShl cDkzeHhfdWFydHNbaV0uZGV2X2lkLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAidWFydCIsCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVQOTNYWF9TWVNDT05fREVWQ0ZHLAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBlcDkzeHhfdWFydHNbaV0uYml0KTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGNsa19od19yZWdpc3Rlcl9jbGtkZXYoaHcsIE5VTEwsIGVwOTN4eF91YXJ0 c1tpXS5kZXZfaWQpOwo+ICvCoMKgwqDCoMKgwqDCoH0KPiDCoH0KPiDCoAo+ICtzdGF0aWMgc3Ry dWN0IGVwOTN4eF9nYXRlIGVwOTN4eF9kbWFzW10gPSB7Cj4gK8KgwqDCoMKgwqDCoMKge0VQOTNY WF9TWVNDT05fUFdSQ05UX0RNQV9NMlAwLCBOVUxMLCAibTJwMCJ9LAo+ICvCoMKgwqDCoMKgwqDC oHtFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQMSwgTlVMTCwgIm0ycDEifSwKPiArwqDCoMKg wqDCoMKgwqB7RVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDIsIE5VTEwsICJtMnAyIn0sCj4g K8KgwqDCoMKgwqDCoMKge0VQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9NMlAzLCBOVUxMLCAibTJw MyJ9LAo+ICvCoMKgwqDCoMKgwqDCoHtFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQNCwgTlVM TCwgIm0ycDQifSwKPiArwqDCoMKgwqDCoMKgwqB7RVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00y UDUsIE5VTEwsICJtMnA1In0sCj4gK8KgwqDCoMKgwqDCoMKge0VQOTNYWF9TWVNDT05fUFdSQ05U X0RNQV9NMlA2LCBOVUxMLCAibTJwNiJ9LAo+ICvCoMKgwqDCoMKgwqDCoHtFUDkzWFhfU1lTQ09O X1BXUkNOVF9ETUFfTTJQNywgTlVMTCwgIm0ycDcifSwKPiArwqDCoMKgwqDCoMKgwqB7RVA5M1hY X1NZU0NPTl9QV1JDTlRfRE1BX00yUDgsIE5VTEwsICJtMnA4In0sCj4gK8KgwqDCoMKgwqDCoMKg e0VQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9NMlA5LCBOVUxMLCAibTJwOSJ9LAo+ICvCoMKgwqDC oMKgwqDCoHtFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJNMCwgTlVMTCwgIm0ybTAifSwKPiAr wqDCoMKgwqDCoMKgwqB7RVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yTTEsIE5VTEwsICJtMm0x In0sCj4gK307Cj4gKwo+IMKgc3RhdGljIHZvaWQgX19pbml0IGVwOTN4eF9kbWFfY2xvY2tfaW5p dCh2b2lkKQo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoGNsa19tMnAwLnJhdGUgPSBjbGtfaC5yYXRl Owo+IC3CoMKgwqDCoMKgwqDCoGNsa19tMnAxLnJhdGUgPSBjbGtfaC5yYXRlOwo+IC3CoMKgwqDC oMKgwqDCoGNsa19tMnAyLnJhdGUgPSBjbGtfaC5yYXRlOwo+IC3CoMKgwqDCoMKgwqDCoGNsa19t MnAzLnJhdGUgPSBjbGtfaC5yYXRlOwo+IC3CoMKgwqDCoMKgwqDCoGNsa19tMnA0LnJhdGUgPSBj bGtfaC5yYXRlOwo+IC3CoMKgwqDCoMKgwqDCoGNsa19tMnA1LnJhdGUgPSBjbGtfaC5yYXRlOwo+ IC3CoMKgwqDCoMKgwqDCoGNsa19tMnA2LnJhdGUgPSBjbGtfaC5yYXRlOwo+IC3CoMKgwqDCoMKg wqDCoGNsa19tMnA3LnJhdGUgPSBjbGtfaC5yYXRlOwo+IC3CoMKgwqDCoMKgwqDCoGNsa19tMnA4 LnJhdGUgPSBjbGtfaC5yYXRlOwo+IC3CoMKgwqDCoMKgwqDCoGNsa19tMnA5LnJhdGUgPSBjbGtf aC5yYXRlOwo+IC3CoMKgwqDCoMKgwqDCoGNsa19tMm0wLnJhdGUgPSBjbGtfaC5yYXRlOwo+IC3C oMKgwqDCoMKgwqDCoGNsa19tMm0xLnJhdGUgPSBjbGtfaC5yYXRlOwo+ICvCoMKgwqDCoMKgwqDC oHVuc2lnbmVkIGludCBpOwo+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCBjbGtfaHcgKmh3Owo+ICvC oMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGVwOTN4eF9kbWFzKTsgaSsrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGh3ID0gY2xrX2h3X3JlZ2lzdGVyX2dhdGUoTlVMTCwgZXA5M3h4X2RtYXNbaV0u Y29uX2lkLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAiaGNsayIsIDAsCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoEVQOTNYWF9TWVNDT05fUFdSQ05ULAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBl cDkzeHhfZG1hc1tpXS5iaXQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDAsCj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCZjbGtfbG9jayk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXQgPSBjbGtfaHdfcmVnaXN0ZXJfY2xrZGV2KGh3LCBlcDkzeHhfZG1hc1tpXS5jb25f aWQsIE5VTEwpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHJfZXJyKCIlczog ZmFpbGVkIHRvIHJlZ2lzdGVyIGxvb2t1cCAlc1xuIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX2Z1bmNfXywgZXA5M3h4X2Rt YXNbaV0uY29uX2lkKTsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBp bnQgX19pbml0IGVwOTN4eF9jbG9ja19pbml0KHZvaWQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDC oHUzMiB2YWx1ZTsKPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgY2xrX2h3ICpodzsKPiArwqDCoMKg wqDCoMKgwqB1bnNpZ25lZCBsb25nIGNsa19wbGwxX3JhdGU7Cj4gK8KgwqDCoMKgwqDCoMKgdW5z aWduZWQgbG9uZyBjbGtfZl9yYXRlOwo+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGxvbmcgY2xr X2hfcmF0ZTsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBsb25nIGNsa19wX3JhdGU7Cj4gK8Kg wqDCoMKgwqDCoMKgdW5zaWduZWQgbG9uZyBjbGtfcGxsMl9yYXRlOwo+ICvCoMKgwqDCoMKgwqDC oHVuc2lnbmVkIGludCBjbGtfZl9kaXY7Cj4gK8KgwqDCoMKgwqDCoMKgdW5zaWduZWQgaW50IGNs a19oX2RpdjsKPiArwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgY2xrX3BfZGl2Owo+ICvCoMKg wqDCoMKgwqDCoHVuc2lnbmVkIGludCBjbGtfdXNiX2RpdjsKPiArwqDCoMKgwqDCoMKgwqB1bnNp Z25lZCBsb25nIGNsa19zcGlfZGl2Owo+ICsKPiArwqDCoMKgwqDCoMKgwqBodyA9IGNsa19od19y ZWdpc3Rlcl9maXhlZF9yYXRlKE5VTEwsICJ4dGFsaSIsIE5VTEwsIDAsIEVQOTNYWF9FWFRfQ0xL X1JBVEUpOwo+ICvCoMKgwqDCoMKgwqDCoGNsa19od19yZWdpc3Rlcl9jbGtkZXYoaHcsIE5VTEws ICJ4dGFsaSIpOwo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoC8qIERldGVybWluZSB0aGUgYm9vdGxv YWRlciBjb25maWd1cmVkIHBsbDEgcmF0ZSAqLwo+IMKgwqDCoMKgwqDCoMKgwqB2YWx1ZSA9IF9f cmF3X3JlYWRsKEVQOTNYWF9TWVNDT05fQ0xLU0VUMSk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlmICgh KHZhbHVlICYgRVA5M1hYX1NZU0NPTl9DTEtTRVQxX05CWVAxKSkKPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgY2xrX3BsbDEucmF0ZSA9IGNsa194dGFsaS5yYXRlOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbGtfcGxsMV9yYXRlID0gRVA5M1hYX0VYVF9DTEtfUkFU RTsKPiDCoMKgwqDCoMKgwqDCoMKgZWxzZQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjbGtfcGxsMS5yYXRlID0gY2FsY19wbGxfcmF0ZSh2YWx1ZSk7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGNsa19wbGwxX3JhdGUgPSBjYWxjX3BsbF9yYXRlKEVQOTNYWF9FWFRf Q0xLX1JBVEUsIHZhbHVlKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaHcgPSBjbGtfaHdfcmVnaXN0 ZXJfZml4ZWRfcmF0ZShOVUxMLCAicGxsMSIsICJ4dGFsaSIsIDAsIGNsa19wbGwxX3JhdGUpOwo+ ICvCoMKgwqDCoMKgwqDCoGNsa19od19yZWdpc3Rlcl9jbGtkZXYoaHcsIE5VTEwsICJwbGwxIik7 Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgLyogSW5pdGlhbGl6ZSB0aGUgcGxsMSBkZXJpdmVkIGNs b2NrcyAqLwo+IC3CoMKgwqDCoMKgwqDCoGNsa19mLnJhdGUgPSBjbGtfcGxsMS5yYXRlIC8gZmNs a19kaXZpc29yc1sodmFsdWUgPj4gMjUpICYgMHg3XTsKPiAtwqDCoMKgwqDCoMKgwqBjbGtfaC5y YXRlID0gY2xrX3BsbDEucmF0ZSAvIGhjbGtfZGl2aXNvcnNbKHZhbHVlID4+IDIwKSAmIDB4N107 Cj4gLcKgwqDCoMKgwqDCoMKgY2xrX3AucmF0ZSA9IGNsa19oLnJhdGUgLyBwY2xrX2Rpdmlzb3Jz Wyh2YWx1ZSA+PiAxOCkgJiAweDNdOwo+ICvCoMKgwqDCoMKgwqDCoGNsa19mX2RpdiA9IGZjbGtf ZGl2aXNvcnNbKHZhbHVlID4+IDI1KSAmIDB4N107Cj4gK8KgwqDCoMKgwqDCoMKgY2xrX2hfZGl2 ID0gaGNsa19kaXZpc29yc1sodmFsdWUgPj4gMjApICYgMHg3XTsKPiArwqDCoMKgwqDCoMKgwqBj bGtfcF9kaXYgPSBwY2xrX2Rpdmlzb3JzWyh2YWx1ZSA+PiAxOCkgJiAweDNdOwo+ICsKPiArwqDC oMKgwqDCoMKgwqBodyA9IGNsa19od19yZWdpc3Rlcl9maXhlZF9mYWN0b3IoTlVMTCwgImZjbGsi LCAicGxsMSIsIDAsIDEsIGNsa19mX2Rpdik7Cj4gK8KgwqDCoMKgwqDCoMKgY2xrX2ZfcmF0ZSA9 IGNsa19nZXRfcmF0ZShody0+Y2xrKTsKPiArwqDCoMKgwqDCoMKgwqBodyA9IGNsa19od19yZWdp c3Rlcl9maXhlZF9mYWN0b3IoTlVMTCwgImhjbGsiLCAicGxsMSIsIDAsIDEsIGNsa19oX2Rpdik7 Cj4gK8KgwqDCoMKgwqDCoMKgY2xrX2hfcmF0ZSA9IGNsa19nZXRfcmF0ZShody0+Y2xrKTsKPiAr wqDCoMKgwqDCoMKgwqBodyA9IGNsa19od19yZWdpc3Rlcl9maXhlZF9mYWN0b3IoTlVMTCwgInBj bGsiLCAiaGNsayIsIDAsIDEsIGNsa19wX2Rpdik7Cj4gK8KgwqDCoMKgwqDCoMKgY2xrX3BfcmF0 ZSA9IGNsa19nZXRfcmF0ZShody0+Y2xrKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgY2xrX2h3X3Jl Z2lzdGVyX2Nsa2RldihodywgImFwYl9wY2xrIiwgTlVMTCk7Cj4gKwo+IMKgwqDCoMKgwqDCoMKg wqBlcDkzeHhfZG1hX2Nsb2NrX2luaXQoKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqAvKiBEZXRl cm1pbmUgdGhlIGJvb3Rsb2FkZXIgY29uZmlndXJlZCBwbGwyIHJhdGUgKi8KPiDCoMKgwqDCoMKg wqDCoMKgdmFsdWUgPSBfX3Jhd19yZWFkbChFUDkzWFhfU1lTQ09OX0NMS1NFVDIpOwo+IMKgwqDC oMKgwqDCoMKgwqBpZiAoISh2YWx1ZSAmIEVQOTNYWF9TWVNDT05fQ0xLU0VUMl9OQllQMikpCj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsa19wbGwyLnJhdGUgPSBjbGtfeHRhbGku cmF0ZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2xrX3BsbDJfcmF0ZSA9IEVQ OTNYWF9FWFRfQ0xLX1JBVEU7Cj4gwqDCoMKgwqDCoMKgwqDCoGVsc2UgaWYgKHZhbHVlICYgRVA5 M1hYX1NZU0NPTl9DTEtTRVQyX1BMTDJfRU4pCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNsa19wbGwyLnJhdGUgPSBjYWxjX3BsbF9yYXRlKHZhbHVlKTsKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY2xrX3BsbDJfcmF0ZSA9IGNhbGNfcGxsX3JhdGUoRVA5M1hYX0VY VF9DTEtfUkFURSwgdmFsdWUpOwo+IMKgwqDCoMKgwqDCoMKgwqBlbHNlCj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNsa19wbGwyLnJhdGUgPSAwOwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjbGtfcGxsMl9yYXRlID0gMDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgaHcg PSBjbGtfaHdfcmVnaXN0ZXJfZml4ZWRfcmF0ZShOVUxMLCAicGxsMiIsICJ4dGFsaSIsIDAsIGNs a19wbGwyX3JhdGUpOwo+ICvCoMKgwqDCoMKgwqDCoGNsa19od19yZWdpc3Rlcl9jbGtkZXYoaHcs IE5VTEwsICJwbGwyIik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgLyogSW5pdGlhbGl6ZSB0aGUg cGxsMiBkZXJpdmVkIGNsb2NrcyAqLwo+IC3CoMKgwqDCoMKgwqDCoGNsa191c2JfaG9zdC5yYXRl ID0gY2xrX3BsbDIucmF0ZSAvICgoKHZhbHVlID4+IDI4KSAmIDB4ZikgKyAxKTsKPiArwqDCoMKg wqDCoMKgwqAvKgo+ICvCoMKgwqDCoMKgwqDCoCAqIFRoZXNlIGZvdXIgYml0cyBzZXQgdGhlIGRp dmlkZSByYXRpbyBiZXR3ZWVuIHRoZSBQTEwyCj4gK8KgwqDCoMKgwqDCoMKgICogb3V0cHV0IGFu ZCB0aGUgVVNCIGNsb2NrLgo+ICvCoMKgwqDCoMKgwqDCoCAqIDAwMDAgLSBEaXZpZGUgYnkgMQo+ ICvCoMKgwqDCoMKgwqDCoCAqIDAwMDEgLSBEaXZpZGUgYnkgMgo+ICvCoMKgwqDCoMKgwqDCoCAq IDAwMTAgLSBEaXZpZGUgYnkgMwo+ICvCoMKgwqDCoMKgwqDCoCAqIDAwMTEgLSBEaXZpZGUgYnkg NAo+ICvCoMKgwqDCoMKgwqDCoCAqIDAxMDAgLSBEaXZpZGUgYnkgNQo+ICvCoMKgwqDCoMKgwqDC oCAqIDAxMDEgLSBEaXZpZGUgYnkgNgo+ICvCoMKgwqDCoMKgwqDCoCAqIDAxMTAgLSBEaXZpZGUg YnkgNwo+ICvCoMKgwqDCoMKgwqDCoCAqIDAxMTEgLSBEaXZpZGUgYnkgOAo+ICvCoMKgwqDCoMKg wqDCoCAqIDEwMDAgLSBEaXZpZGUgYnkgOQo+ICvCoMKgwqDCoMKgwqDCoCAqIDEwMDEgLSBEaXZp ZGUgYnkgMTAKPiArwqDCoMKgwqDCoMKgwqAgKiAxMDEwIC0gRGl2aWRlIGJ5IDExCj4gK8KgwqDC oMKgwqDCoMKgICogMTAxMSAtIERpdmlkZSBieSAxMgo+ICvCoMKgwqDCoMKgwqDCoCAqIDExMDAg LSBEaXZpZGUgYnkgMTMKPiArwqDCoMKgwqDCoMKgwqAgKiAxMTAxIC0gRGl2aWRlIGJ5IDE0Cj4g K8KgwqDCoMKgwqDCoMKgICogMTExMCAtIERpdmlkZSBieSAxNQo+ICvCoMKgwqDCoMKgwqDCoCAq IDExMTEgLSBEaXZpZGUgYnkgMQo+ICvCoMKgwqDCoMKgwqDCoCAqIE9uIHBvd2VyLW9uLXJlc2V0 IHRoZXNlIGJpdHMgYXJlIHJlc2V0IHRvIDAwMDBiLgo+ICvCoMKgwqDCoMKgwqDCoCAqLwo+ICvC oMKgwqDCoMKgwqDCoGNsa191c2JfZGl2ID0gKCgodmFsdWUgPj4gMjgpICYgMHhmKSArIDEpOwo+ ICvCoMKgwqDCoMKgwqDCoGh3ID0gY2xrX2h3X3JlZ2lzdGVyX2ZpeGVkX2ZhY3RvcihOVUxMLCAi dXNiX2NsayIsICJwbGwyIiwgMCwgMSwgY2xrX3VzYl9kaXYpOwo+ICvCoMKgwqDCoMKgwqDCoGh3 ID0gY2xrX2h3X3JlZ2lzdGVyX2dhdGUoTlVMTCwgIm9oY2ktcGxhdGZvcm0iLAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJ1 c2JfY2xrIiwgMCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBFUDkzWFhfU1lTQ09OX1BXUkNOVCwKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBFUDkzWFhf U1lTQ09OX1BXUkNOVF9VU0hfRU4sCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAmY2xrX2xvY2spOwo+ICvC oMKgwqDCoMKgwqDCoGNsa19od19yZWdpc3Rlcl9jbGtkZXYoaHcsIE5VTEwsICJvaGNpLXBsYXRm b3JtIik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgLyoKPiDCoMKgwqDCoMKgwqDCoMKgICogRVA5 M3h4IFNTUCBjbG9jayByYXRlIHdhcyBkb3VibGVkIGluIHZlcnNpb24gRTIuIEZvciBtb3JlIGlu Zm9ybWF0aW9uCj4gwqDCoMKgwqDCoMKgwqDCoCAqIHNlZToKPiDCoMKgwqDCoMKgwqDCoMKgICrC oMKgwqDCoCBodHRwOi8vd3d3LmNpcnJ1cy5jb20vZW4vcHVicy9hcHBOb3RlL0FOMjczUkVWNC5w ZGYKPiDCoMKgwqDCoMKgwqDCoMKgICovCj4gK8KgwqDCoMKgwqDCoMKgY2xrX3NwaV9kaXYgPSAx Owo+IMKgwqDCoMKgwqDCoMKgwqBpZiAoZXA5M3h4X2NoaXBfcmV2aXNpb24oKSA8IEVQOTNYWF9D SElQX1JFVl9FMikKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2xrX3NwaS5yYXRl IC89IDI7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsa19zcGlfZGl2ID0gMjsK PiArwqDCoMKgwqDCoMKgwqBodyA9IGNsa19od19yZWdpc3Rlcl9maXhlZF9mYWN0b3IoTlVMTCwg ImVwOTN4eC1zcGkuMCIsICJ4dGFsaSIsIDAsIDEsIGNsa19zcGlfZGl2KTsKPiArwqDCoMKgwqDC oMKgwqBjbGtfaHdfcmVnaXN0ZXJfY2xrZGV2KGh3LCBOVUxMLCAiZXA5M3h4LXNwaS4wIik7Cj4g Kwo+ICvCoMKgwqDCoMKgwqDCoC8qIHB3bSBjbG9jayAqLwo+ICvCoMKgwqDCoMKgwqDCoGh3ID0g Y2xrX2h3X3JlZ2lzdGVyX2ZpeGVkX2ZhY3RvcihOVUxMLCAicHdtX2NsayIsICJ4dGFsaSIsIDAs IDEsIDEpOwo+ICvCoMKgwqDCoMKgwqDCoGNsa19od19yZWdpc3Rlcl9jbGtkZXYoaHcsICJwd21f Y2xrIiwgTlVMTCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgcHJfaW5mbygiUExMMSBydW5uaW5n IGF0ICVsZCBNSHosIFBMTDIgYXQgJWxkIE1IelxuIiwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY2xrX3BsbDEucmF0ZSAvIDEwMDAwMDAsIGNsa19wbGwyLnJhdGUgLyAxMDAwMDAw KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY2xrX3BsbDFfcmF0ZSAvIDEwMDAw MDAsIGNsa19wbGwyX3JhdGUgLyAxMDAwMDAwKTsKPiDCoMKgwqDCoMKgwqDCoMKgcHJfaW5mbygi RkNMSyAlbGQgTUh6LCBIQ0xLICVsZCBNSHosIFBDTEsgJWxkIE1IelxuIiwKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgY2xrX2YucmF0ZSAvIDEwMDAwMDAsIGNsa19oLnJhdGUgLyAx MDAwMDAwLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjbGtfcC5yYXRlIC8gMTAw MDAwMCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNsa19mX3JhdGUgLyAxMDAw MDAwLCBjbGtfaF9yYXRlIC8gMTAwMDAwMCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY2xrX3BfcmF0ZSAvIDEwMDAwMDApOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBlcDkzeHhfdWFy dF9jbG9ja19pbml0KCk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qIHRvdWNoc2NyZWVuL2FkYyBj bG9jayAqLwo+ICvCoMKgwqDCoMKgwqDCoGh3ID0gY2xrX2h3X3JlZ2lzdGVyX2RpdigiZXA5M3h4 LWFkYyIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgInh0YWxpIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBFUDkzWFhfU1lTQ09OX0tFWVRDSENMS0RJ ViwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBFUDkzWFhfU1lTQ09OX0tFWVRDSENMS0RJVl9UU0VOLAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVQOTNY WF9TWVNDT05fS0VZVENIQ0xLRElWX0FESVYsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMSwKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhZGNfZGl2aXNv cnMsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgQVJSQVlfU0laRShhZGNfZGl2aXNvcnMpKTsKPiArCj4gK8KgwqDCoMKgwqDC oMKgY2xrX2h3X3JlZ2lzdGVyX2Nsa2RldihodywgTlVMTCwgImVwOTN4eC1hZGMiKTsKPiArCj4g K8KgwqDCoMKgwqDCoMKgLyoga2V5cGFkIGNsb2NrICovCj4gK8KgwqDCoMKgwqDCoMKgaHcgPSBj bGtfaHdfcmVnaXN0ZXJfZGl2KCJlcDkzeHgta2V5cGFkIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAieHRhbGkiLAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoEVQOTNYWF9TWVNDT05fS0VZVENIQ0xLRElWLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVQOTNYWF9TWVNDT05fS0VZ VENIQ0xLRElWX0tFTiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBFUDkzWFhfU1lTQ09OX0tFWVRDSENMS0RJVl9LRElWLAo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoDEsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgYWRjX2Rpdmlzb3JzLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEFSUkFZX1NJWkUoYWRjX2Rp dmlzb3JzKSk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGNsa19od19yZWdpc3Rlcl9jbGtkZXYoaHcs IE5VTEwsICJlcDkzeHgta2V5cGFkIik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qIE9uIHJlc2V0 IFBESVYgYW5kIFZESVYgaXMgc2V0IHRvIHplcm8sIHdoaWxlIFBESVYgemVybwo+ICvCoMKgwqDC oMKgwqDCoCAqIG1lYW5zIGNsb2NrIGRpc2FibGUsIFZESVYgc2hvdWxkbid0IGJlIHplcm8uCj4g K8KgwqDCoMKgwqDCoMKgICogU28gaSBzZXQgYm90aCBkaXZpZGVycyB0byBtaW5pbXVtLgo+ICvC oMKgwqDCoMKgwqDCoCAqLwo+ICvCoMKgwqDCoMKgwqDCoC8qIEVOQSAtIEVuYWJsZSBDTEsgZGl2 aWRlci4gKi8KPiArwqDCoMKgwqDCoMKgwqAvKiBQRElWIC0gMDAgLSBEaXNhYmxlIGNsb2NrICov Cj4gK8KgwqDCoMKgwqDCoMKgLyogVkRJViAtIGF0IGxlYXN0IDIgKi8KPiArwqDCoMKgwqDCoMKg wqAvKiBDaGVjayBhbmQgZW5hYmxlIHZpZGVvIGNsayByZWdpc3RlcnMgKi8KPiArwqDCoMKgwqDC oMKgwqB2YWx1ZSA9IF9fcmF3X3JlYWRsKEVQOTNYWF9TWVNDT05fVklEQ0xLRElWKTsKPiArwqDC oMKgwqDCoMKgwqB2YWx1ZSB8PSAoMSA8PCBFUDkzWFhfU1lTQ09OX0NMS0RJVl9QRElWX1NISUZU KSB8IDI7Cj4gK8KgwqDCoMKgwqDCoMKgZXA5M3h4X3N5c2Nvbl9zd2xvY2tlZF93cml0ZSh2YWx1 ZSwgRVA5M1hYX1NZU0NPTl9WSURDTEtESVYpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqAvKiBjaGVj ayBhbmQgZW5hYmxlIGkycyBjbGsgcmVnaXN0ZXJzICovCj4gK8KgwqDCoMKgwqDCoMKgdmFsdWUg PSBfX3Jhd19yZWFkbChFUDkzWFhfU1lTQ09OX0kyU0NMS0RJVik7Cj4gK8KgwqDCoMKgwqDCoMKg dmFsdWUgfD0gKDEgPDwgRVA5M1hYX1NZU0NPTl9DTEtESVZfUERJVl9TSElGVCkgfCAyOwo+ICvC oMKgwqDCoMKgwqDCoGVwOTN4eF9zeXNjb25fc3dsb2NrZWRfd3JpdGUodmFsdWUsIEVQOTNYWF9T WVNDT05fSTJTQ0xLRElWKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyogdmlkZW8gY2xrICovCj4g K8KgwqDCoMKgwqDCoMKgaHcgPSBjbGtfaHdfcmVnaXN0ZXJfZGRpdigiZXA5M3h4LWZiIiwKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBFUDkzWFhfU1lTQ09OX1ZJRENMS0RJViwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBFUDkzWFhfU1lTQ09OX0NMS0RJ Vl9FTkFCTEUpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBjbGtfaHdfcmVnaXN0ZXJfY2xrZGV2KGh3 LCBOVUxMLCAiZXA5M3h4LWZiIik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qIGkycyBjbGsgKi8K PiArwqDCoMKgwqDCoMKgwqBodyA9IGNsa19od19yZWdpc3Rlcl9kZGl2KCJtY2xrIiwKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBFUDkzWFhfU1lTQ09OX0kyU0NMS0RJViwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBFUDkzWFhfU1lTQ09OX0NMS0RJVl9F TkFCTEUpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBjbGtfaHdfcmVnaXN0ZXJfY2xrZGV2KGh3LCAi bWNsayIsICJlcDkzeHgtaTJzIik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoC8qIGkycyBzY2xrICov Cj4gKyNkZWZpbmUgRVA5M1hYX0kyU0NMS0RJVl9TRElWX1NISUZUwqDCoMKgwqAxNgo+ICsjZGVm aW5lIEVQOTNYWF9JMlNDTEtESVZfU0RJVl9XSURUSMKgwqDCoMKgMQo+ICvCoMKgwqDCoMKgwqDC oGh3ID0gY2xrX2h3X3JlZ2lzdGVyX2Rpdigic2NsayIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIm1jbGsiLAo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oEVQOTNYWF9TWVNDT05fSTJTQ0xLRElWLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVQOTNYWF9TWVNDT05fSTJTQ0xLRElW X1NFTkEsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgRVA5M1hYX0kyU0NMS0RJVl9TRElWX1NISUZULAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEVQOTNY WF9JMlNDTEtESVZfU0RJVl9XSURUSCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzY2xrX2Rpdmlzb3JzLAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEFS UkFZX1NJWkUoc2Nsa19kaXZpc29ycykpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqBjbGtfaHdfcmVn aXN0ZXJfY2xrZGV2KGh3LCAic2NsayIsICJlcDkzeHgtaTJzIik7Cj4gKwo+ICvCoMKgwqDCoMKg wqDCoC8qIGkycyBscmNsayAqLwo+ICsjZGVmaW5lIEVQOTNYWF9JMlNDTEtESVZfTFJESVYzMl9T SElGVMKgMTcKPiArI2RlZmluZSBFUDkzWFhfSTJTQ0xLRElWX0xSRElWMzJfV0lEVEjCoDMKPiAr wqDCoMKgwqDCoMKgwqBodyA9IGNsa19od19yZWdpc3Rlcl9kaXYoImxyY2xrIiwKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAi c2NsayIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgRVA5M1hYX1NZU0NPTl9JMlNDTEtESVYsCj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRVA5M1hYX1NZ U0NPTl9JMlNDTEtESVZfU0VOQSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBFUDkzWFhfSTJTQ0xLRElWX0xSRElWMzJfU0hJ RlQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgRVA5M1hYX0kyU0NMS0RJVl9MUkRJVjMyX1dJRFRILAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxyY2xr X2Rpdmlzb3JzLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoEFSUkFZX1NJWkUobHJjbGtfZGl2aXNvcnMpKTsKPiArCj4gK8Kg wqDCoMKgwqDCoMKgY2xrX2h3X3JlZ2lzdGVyX2Nsa2RldihodywgImxyY2xrIiwgImVwOTN4eC1p MnMiKTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoGNsa2Rldl9hZGRfdGFibGUoY2xvY2tzLCBBUlJB WV9TSVpFKGNsb2NrcykpOwo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiDCoH0KPiDCoHBv c3Rjb3JlX2luaXRjYWxsKGVwOTN4eF9jbG9ja19pbml0KTsKPiBkaWZmIC0tZ2l0IGEvYXJjaC9h cm0vbWFjaC1lcDkzeHgvY29yZS5jIGIvYXJjaC9hcm0vbWFjaC1lcDkzeHgvY29yZS5jCj4gaW5k ZXggNmZiMTlhMzkzZmQyLi5iYmI3OWYyNjMzMzEgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9hcm0vbWFj aC1lcDkzeHgvY29yZS5jCj4gKysrIGIvYXJjaC9hcm0vbWFjaC1lcDkzeHgvY29yZS5jCj4gQEAg LTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMgaW50IGVwOTN4eF9vaGNpX3Bvd2VyX29uKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmV0dXJuIFBUUl9FUlIoZXA5M3h4X29oY2lfaG9zdF9jbG9jayk7Cj4g wqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IC3CoMKgwqDCoMKgwqDCoHJldHVybiBjbGtfZW5hYmxl KGVwOTN4eF9vaGNpX2hvc3RfY2xvY2spOwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBjbGtfcHJl cGFyZV9lbmFibGUoZXA5M3h4X29oY2lfaG9zdF9jbG9jayk7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRp YyB2b2lkIGVwOTN4eF9vaGNpX3Bvd2VyX29mZihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQo+IGRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWVwOTN4eC9zb2MuaCBiL2FyY2gvYXJtL21h Y2gtZXA5M3h4L3NvYy5oCj4gaW5kZXggZjJkYWNlMWM5MTU0Li45NGVmN2YyNzVmOTQgMTAwNjQ0 Cj4gLS0tIGEvYXJjaC9hcm0vbWFjaC1lcDkzeHgvc29jLmgKPiArKysgYi9hcmNoL2FybS9tYWNo LWVwOTN4eC9zb2MuaAo+IEBAIC0xMTEsMTkgKzExMSwxOSBAQAo+IMKgI2RlZmluZSBFUDkzWFhf U1lTQ09OX1BXUkNOVMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBFUDkzWFhfU1lTQ09OX1JFRygweDA0 KQo+IMKgI2RlZmluZSBFUDkzWFhfU1lTQ09OX1BXUkNOVF9GSVJfRU7CoMKgwqDCoCgxPDwzMSkK PiDCoCNkZWZpbmUgRVA5M1hYX1NZU0NPTl9QV1JDTlRfVUFSVEJBVUTCoMKgKDE8PDI5KQo+IC0j ZGVmaW5lIEVQOTNYWF9TWVNDT05fUFdSQ05UX1VTSF9FTsKgwqDCoMKgKDE8PDI4KQo+IC0jZGVm aW5lIEVQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9NMk0xwqDCoCgxPDwyNykKPiAtI2RlZmluZSBF UDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJNMMKgwqAoMTw8MjYpCj4gLSNkZWZpbmUgRVA5M1hY X1NZU0NPTl9QV1JDTlRfRE1BX00yUDjCoMKgKDE8PDI1KQo+IC0jZGVmaW5lIEVQOTNYWF9TWVND T05fUFdSQ05UX0RNQV9NMlA5wqDCoCgxPDwyNCkKPiAtI2RlZmluZSBFUDkzWFhfU1lTQ09OX1BX UkNOVF9ETUFfTTJQNsKgwqAoMTw8MjMpCj4gLSNkZWZpbmUgRVA5M1hYX1NZU0NPTl9QV1JDTlRf RE1BX00yUDfCoMKgKDE8PDIyKQo+IC0jZGVmaW5lIEVQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9N MlA0wqDCoCgxPDwyMSkKPiAtI2RlZmluZSBFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQNcKg wqAoMTw8MjApCj4gLSNkZWZpbmUgRVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDLCoMKgKDE8 PDE5KQo+IC0jZGVmaW5lIEVQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9NMlAzwqDCoCgxPDwxOCkK PiAtI2RlZmluZSBFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQMMKgwqAoMTw8MTcpCj4gLSNk ZWZpbmUgRVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDHCoMKgKDE8PDE2KQo+ICsjZGVmaW5l IEVQOTNYWF9TWVNDT05fUFdSQ05UX1VTSF9FTsKgwqDCoMKgMjgKPiArI2RlZmluZSBFUDkzWFhf U1lTQ09OX1BXUkNOVF9ETUFfTTJNMcKgwqAyNwo+ICsjZGVmaW5lIEVQOTNYWF9TWVNDT05fUFdS Q05UX0RNQV9NMk0wwqDCoDI2Cj4gKyNkZWZpbmUgRVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00y UDjCoMKgMjUKPiArI2RlZmluZSBFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQOcKgwqAyNAo+ ICsjZGVmaW5lIEVQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9NMlA2wqDCoDIzCj4gKyNkZWZpbmUg RVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDfCoMKgMjIKPiArI2RlZmluZSBFUDkzWFhfU1lT Q09OX1BXUkNOVF9ETUFfTTJQNMKgwqAyMQo+ICsjZGVmaW5lIEVQOTNYWF9TWVNDT05fUFdSQ05U X0RNQV9NMlA1wqDCoDIwCj4gKyNkZWZpbmUgRVA5M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDLC oMKgMTkKPiArI2RlZmluZSBFUDkzWFhfU1lTQ09OX1BXUkNOVF9ETUFfTTJQM8KgwqAxOAo+ICsj ZGVmaW5lIEVQOTNYWF9TWVNDT05fUFdSQ05UX0RNQV9NMlAwwqDCoDE3Cj4gKyNkZWZpbmUgRVA5 M1hYX1NZU0NPTl9QV1JDTlRfRE1BX00yUDHCoMKgMTYKPiDCoCNkZWZpbmUgRVA5M1hYX1NZU0NP Tl9IQUxUwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBFUDkzWFhfU1lTQ09OX1JFRygweDA4KQo+ IMKgI2RlZmluZSBFUDkzWFhfU1lTQ09OX1NUQU5EQlnCoMKgwqDCoMKgwqDCoMKgwqDCoEVQOTNY WF9TWVNDT05fUkVHKDB4MGMpCj4gwqAjZGVmaW5lIEVQOTNYWF9TWVNDT05fQ0xLU0VUMcKgwqDC oMKgwqDCoMKgwqDCoMKgRVA5M1hYX1NZU0NPTl9SRUcoMHgyMCkKPiBAQCAtMTM5LDEzICsxMzks MTMgQEAKPiDCoCNkZWZpbmUgRVA5M1hYX1NZU0NPTl9ERVZDRkdfR09OS8KgwqDCoMKgwqDCoCgx PDwyNykKPiDCoCNkZWZpbmUgRVA5M1hYX1NZU0NPTl9ERVZDRkdfVE9OR8KgwqDCoMKgwqDCoCgx PDwyNikKPiDCoCNkZWZpbmUgRVA5M1hYX1NZU0NPTl9ERVZDRkdfTU9OR8KgwqDCoMKgwqDCoCgx PDwyNSkKPiAtI2RlZmluZSBFUDkzWFhfU1lTQ09OX0RFVkNGR19VM0VOwqDCoMKgwqDCoMKgKDE8 PDI0KQo+ICsjZGVmaW5lIEVQOTNYWF9TWVNDT05fREVWQ0ZHX1UzRU7CoMKgwqDCoMKgwqAyNAo+ IMKgI2RlZmluZSBFUDkzWFhfU1lTQ09OX0RFVkNGR19DUEVOQcKgwqDCoMKgwqAoMTw8MjMpCj4g wqAjZGVmaW5lIEVQOTNYWF9TWVNDT05fREVWQ0ZHX0EyT05HwqDCoMKgwqDCoCgxPDwyMikKPiDC oCNkZWZpbmUgRVA5M1hYX1NZU0NPTl9ERVZDRkdfQTFPTkfCoMKgwqDCoMKgKDE8PDIxKQo+IC0j ZGVmaW5lIEVQOTNYWF9TWVNDT05fREVWQ0ZHX1UyRU7CoMKgwqDCoMKgwqAoMTw8MjApCj4gKyNk ZWZpbmUgRVA5M1hYX1NZU0NPTl9ERVZDRkdfVTJFTsKgwqDCoMKgwqDCoDIwCj4gwqAjZGVmaW5l IEVQOTNYWF9TWVNDT05fREVWQ0ZHX0VYVkPCoMKgwqDCoMKgwqAoMTw8MTkpCj4gLSNkZWZpbmUg RVA5M1hYX1NZU0NPTl9ERVZDRkdfVTFFTsKgwqDCoMKgwqDCoCgxPDwxOCkKPiArI2RlZmluZSBF UDkzWFhfU1lTQ09OX0RFVkNGR19VMUVOwqDCoMKgwqDCoMKgMTgKPiDCoCNkZWZpbmUgRVA5M1hY X1NZU0NPTl9ERVZDRkdfVElOwqDCoMKgwqDCoMKgwqAoMTw8MTcpCj4gwqAjZGVmaW5lIEVQOTNY WF9TWVNDT05fREVWQ0ZHX0hDM0lOwqDCoMKgwqDCoCgxPDwxNSkKPiDCoCNkZWZpbmUgRVA5M1hY X1NZU0NPTl9ERVZDRkdfSEMzRU7CoMKgwqDCoMKgKDE8PDE0KQo+IEBAIC0xNjMsMTIgKzE2Mywx MiBAQAo+IMKgI2RlZmluZSBFUDkzWFhfU1lTQ09OX0RFVkNGR19LRVlTwqDCoMKgwqDCoMKgKDE8 PDEpCj4gwqAjZGVmaW5lIEVQOTNYWF9TWVNDT05fREVWQ0ZHX1NIRU5BwqDCoMKgwqDCoCgxPDww KQo+IMKgI2RlZmluZSBFUDkzWFhfU1lTQ09OX1ZJRENMS0RJVsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgRVA5M1hYX1NZU0NPTl9SRUcoMHg4NCkKPiAtI2RlZmluZSBFUDkzWFhfU1lT Q09OX0NMS0RJVl9FTkFCTEXCoMKgwqDCoCgxPDwxNSkKPiArI2RlZmluZSBFUDkzWFhfU1lTQ09O X0NMS0RJVl9FTkFCTEXCoMKgwqDCoDE1Cj4gwqAjZGVmaW5lIEVQOTNYWF9TWVNDT05fQ0xLRElW X0VTRUzCoMKgwqDCoMKgwqAoMTw8MTQpCj4gwqAjZGVmaW5lIEVQOTNYWF9TWVNDT05fQ0xLRElW X1BTRUzCoMKgwqDCoMKgwqAoMTw8MTMpCj4gwqAjZGVmaW5lIEVQOTNYWF9TWVNDT05fQ0xLRElW X1BESVZfU0hJRlTCoMKgwqDCoMKgwqDCoMKgOAo+IMKgI2RlZmluZSBFUDkzWFhfU1lTQ09OX0ky U0NMS0RJVsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRVA5M1hYX1NZU0NPTl9SRUco MHg4YykKPiAtI2RlZmluZSBFUDkzWFhfU1lTQ09OX0kyU0NMS0RJVl9TRU5BwqDCoMKgKDE8PDMx KQo+ICsjZGVmaW5lIEVQOTNYWF9TWVNDT05fSTJTQ0xLRElWX1NFTkHCoMKgwqAzMQo+IMKgI2Rl ZmluZSBFUDkzWFhfU1lTQ09OX0kyU0NMS0RJVl9PUklERcKgwqAgKDE8PDI5KQo+IMKgI2RlZmlu ZSBFUDkzWFhfU1lTQ09OX0kyU0NMS0RJVl9TUE9MwqDCoMKgKDE8PDE5KQo+IMKgI2RlZmluZSBF UDkzWFhfSTJTQ0xLRElWX1NESVbCoMKgwqDCoMKgwqDCoMKgwqDCoCgxIDw8IDE2KQo+IEBAIC0x NzcsOSArMTc3LDkgQEAKPiDCoCNkZWZpbmUgRVA5M1hYX0kyU0NMS0RJVl9MUkRJVjEyOMKgwqDC oMKgwqDCoCgyIDw8IDE3KQo+IMKgI2RlZmluZSBFUDkzWFhfSTJTQ0xLRElWX0xSRElWX01BU0vC oMKgwqDCoCgzIDw8IDE3KQo+IMKgI2RlZmluZSBFUDkzWFhfU1lTQ09OX0tFWVRDSENMS0RJVsKg wqDCoMKgwqBFUDkzWFhfU1lTQ09OX1JFRygweDkwKQo+IC0jZGVmaW5lIEVQOTNYWF9TWVNDT05f S0VZVENIQ0xLRElWX1RTRU7CoMKgwqDCoMKgwqDCoMKgKDE8PDMxKQo+IC0jZGVmaW5lIEVQOTNY WF9TWVNDT05fS0VZVENIQ0xLRElWX0FESVbCoMKgwqDCoMKgwqDCoMKgKDE8PDE2KQo+IC0jZGVm aW5lIEVQOTNYWF9TWVNDT05fS0VZVENIQ0xLRElWX0tFTsKgKDE8PDE1KQo+ICsjZGVmaW5lIEVQ OTNYWF9TWVNDT05fS0VZVENIQ0xLRElWX1RTRU7CoMKgwqDCoMKgwqDCoMKgMzEKPiArI2RlZmlu ZSBFUDkzWFhfU1lTQ09OX0tFWVRDSENMS0RJVl9BRElWwqDCoMKgwqDCoMKgwqDCoDE2Cj4gKyNk ZWZpbmUgRVA5M1hYX1NZU0NPTl9LRVlUQ0hDTEtESVZfS0VOwqAxNQo+IMKgI2RlZmluZSBFUDkz WFhfU1lTQ09OX0tFWVRDSENMS0RJVl9LRElWwqDCoMKgwqDCoMKgwqDCoCgxPDwwKQo+IMKgI2Rl ZmluZSBFUDkzWFhfU1lTQ09OX1NZU0NGR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqBFUDkzWFhfU1lT Q09OX1JFRygweDljKQo+IMKgI2RlZmluZSBFUDkzWFhfU1lTQ09OX1NZU0NGR19SRVZfTUFTS8Kg wqAoMHhmMDAwMDAwMCkKCi0tIApBbGV4YW5kZXIgU3ZlcmRsaW4uCgoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGlu ZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK