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=-6.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 BEC60C10F14 for ; Tue, 8 Oct 2019 21:24:27 +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 2EB5D21721 for ; Tue, 8 Oct 2019 21:24:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="TYdAAu3u"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=baylibre-com.20150623.gappssmtp.com header.i=@baylibre-com.20150623.gappssmtp.com header.b="BG6J4mcQ" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2EB5D21721 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=hww11f+vmCTUI2Yi6iUNiCygmOE7G+9630JUJGbTTz0=; b=TYdAAu3uRgWzRA +0WZt+Up1Kf55vT+Lc/aJ8ya3LzDoeehIXUkgv9QDLM3YcZp1m9TvLcrIPSYs/dupQtMS3Yh5a8cz RHhSFU47rHYHWeMvYXNEbWLW0bzKTZEPqTXMbJ8AmuLrqKjFp9fHVNF9TpR0T3bpX3gdAPDfECM5E M4N2fgxtPtUJ2HnFEJXVx5HHMb1sm7p0JAySTNdti3rIj1Bbzc867NN8KDIagVqZxw/jbD4uB5PXT ws8LeZ3B9zbI+7zOuftwb8KPxuKx1bNrCk+WiZ7rH7H8CJFMPXHzQ6vCoahxp4io9Z+UfDKzJZxFS UwGM5sHSuYI6wVAxXzVg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.2 #3 (Red Hat Linux)) id 1iHwxw-0001kE-17; Tue, 08 Oct 2019 21:24:20 +0000 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iHwxl-0001bu-4z for linux-amlogic@lists.infradead.org; Tue, 08 Oct 2019 21:24:12 +0000 Received: by mail-wr1-x444.google.com with SMTP id n14so21049754wrw.9 for ; Tue, 08 Oct 2019 14:24:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=agsx6DjVJnEQxz30t+cLLI/SXq9/UecHarG8kuykg04=; b=BG6J4mcQKcEhdSEADVl2PTtx/FejpJ1TFWfNPnuBljTARFHeV1/TB4xm+ncOtPq1/g TCBUO9Z1Zr6gLm14VSB9MuRWM899ZqAL4iCUvpVzwjXzJh10j7fbXwZv/Z+TMvM/0vk3 Sss21QNyT/S2KzMYaLnue8gj69i/FWRCFEPnsoOtruW+MxRdBh8KAsl/6DzoLHW7tKjc 0CYKArxd9vcv1o/+0zoCcOhrNWhYkvoQ5IP3Chx+7xr19bq1O7ZCBugK+2JbnoPoXJRP sqeUokESweEahiN1g0Y3YDfDHkOjmQMHBPhDFs3JOgIr/xRgnvwG26HN1eKung3LBznJ lQkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=agsx6DjVJnEQxz30t+cLLI/SXq9/UecHarG8kuykg04=; b=G7mpm8sEprjxZp4TR18yHdd1mvZCPrWLAtGQiVx+vjsrgpuXwDVINNBnXS9lu/buaV Nw2iUYbhWyUa8pbvs6ZkRKqmI3XbTa1eyVepfpIeTkMTj/WTcO3czxye+mTHl17KnADZ 42/jf88s1GEjbijDLxUlsKDgGaA4q5p6PNYJjiOI2aULZaA/jGtB+00yDkfYuM7GZOcp 6kkL2ZOStiHpAIubKdviC2f47UBwu1yGNd1uIDFLT/Dzg5Zn32l7mvPs30rwn4ZdHknW 0SH1EMldICdd7pTCzxy+rBUK5kP1LSmYcJUdHB4kqGRDg/Q1Nqid8QM8rrcAjiO/XbVc +xwQ== X-Gm-Message-State: APjAAAUzSpFOEc0Kug1Ft2JANh5AnuKIZrfmSXIUhWeNK65/rJBjyBsi f1OvuwaaSrie5nBajA9bealWK7LcRSjuPF43l18mhw== X-Google-Smtp-Source: APXvYqzlj4oIfiTYH4wAhj067CdZq8TPz6/rtUgm/QJHi66IeqdzgUROOB5H0FRN9M344gg5ry0UYOrsLw9Ca9kuCko= X-Received: by 2002:adf:910d:: with SMTP id j13mr2874wrj.128.1570569846944; Tue, 08 Oct 2019 14:24:06 -0700 (PDT) MIME-Version: 1.0 References: <20191007145909.29979-1-mjourdan@baylibre.com> <20191007145909.29979-3-mjourdan@baylibre.com> <912dfabbaafc6eb4dce343ad43914ae54fc99343.camel@ndufresne.ca> <0cd4cc5b8aea989d0cd44cad81ebb01cbdd6fc22.camel@ndufresne.ca> In-Reply-To: <0cd4cc5b8aea989d0cd44cad81ebb01cbdd6fc22.camel@ndufresne.ca> From: Maxime Jourdan Date: Tue, 8 Oct 2019 23:23:56 +0200 Message-ID: Subject: Re: [PATCH 2/2] media: meson: vdec: add H.264 decoding support To: Nicolas Dufresne X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20191008_142409_261264_AC2F0CD9 X-CRM114-Status: GOOD ( 30.70 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Neil Armstrong , Martin Blumenstingl , Kevin Hilman , Linux Media Mailing List , Linux Kernel Mailing List , Hans Verkuil , linux-amlogic@lists.infradead.org, Mauro Carvalho Chehab , linux-arm-kernel@lists.infradead.org, Jerome Brunet Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org T24gVHVlLCBPY3QgOCwgMjAxOSBhdCAxMDo0NCBQTSBOaWNvbGFzIER1ZnJlc25lIDxuaWNvbGFz QG5kdWZyZXNuZS5jYT4gd3JvdGU6Cj4KPiBMZSBtYXJkaSAwOCBvY3RvYnJlIDIwMTkgw6AgMTY6 MjcgLTA0MDAsIE5pY29sYXMgRHVmcmVzbmUgYSDDqWNyaXQgOgo+ID4gTGUgbHVuZGkgMDcgb2N0 b2JyZSAyMDE5IMOgIDE2OjU5ICswMjAwLCBNYXhpbWUgSm91cmRhbiBhIMOpY3JpdCA6Cj4gPiA+ IEFkZCBzdXBwb3J0IGZvciB0aGUgSDI2NCBjb21wcmVzc2VkIGZvcm1hdCAoVjRMMl9QSVhfRk1U X0gyNjQpLgo+ID4gPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBNYXhpbWUgSm91cmRhbiA8bWpvdXJk YW5AYmF5bGlicmUuY29tPgo+ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9t ZXNvbi92ZGVjL01ha2VmaWxlICAgICB8ICAgMiArLQo+ID4gPiAgZHJpdmVycy9zdGFnaW5nL21l ZGlhL21lc29uL3ZkZWMvY29kZWNfaDI2NC5jIHwgNDgyICsrKysrKysrKysrKysrKysrKwo+ID4g PiAgZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvY29kZWNfaDI2NC5oIHwgIDE0ICsK PiA+ID4gIC4uLi9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvdmRlY19wbGF0Zm9ybS5jICB8ICAz NyArKwo+ID4gPiAgNCBmaWxlcyBjaGFuZ2VkLCA1MzQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9tZXNv bi92ZGVjL2NvZGVjX2gyNjQuYwo+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvc3Rh Z2luZy9tZWRpYS9tZXNvbi92ZGVjL2NvZGVjX2gyNjQuaAo+ID4gPgo+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvTWFrZWZpbGUgYi9kcml2ZXJzL3N0 YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9NYWtlZmlsZQo+ID4gPiBpbmRleCA2YmVhMTI5MDg0Yjcu LjcxMWQ5OTBjNzYwZSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL21l c29uL3ZkZWMvTWFrZWZpbGUKPiA+ID4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29u L3ZkZWMvTWFrZWZpbGUKPiA+ID4gQEAgLTMsNiArMyw2IEBACj4gPiA+Cj4gPiA+ICBtZXNvbi12 ZGVjLW9ianMgPSBlc3BhcnNlci5vIHZkZWMubyB2ZGVjX2hlbHBlcnMubyB2ZGVjX3BsYXRmb3Jt Lm8KPiA+ID4gIG1lc29uLXZkZWMtb2JqcyArPSB2ZGVjXzEubwo+ID4gPiAtbWVzb24tdmRlYy1v YmpzICs9IGNvZGVjX21wZWcxMi5vCj4gPiA+ICttZXNvbi12ZGVjLW9ianMgKz0gY29kZWNfbXBl ZzEyLm8gY29kZWNfaDI2NC5vCj4gPiA+Cj4gPiA+ICBvYmotJChDT05GSUdfVklERU9fTUVTT05f VkRFQykgKz0gbWVzb24tdmRlYy5vCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcv bWVkaWEvbWVzb24vdmRlYy9jb2RlY19oMjY0LmMgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVz b24vdmRlYy9jb2RlY19oMjY0LmMKPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gaW5k ZXggMDAwMDAwMDAwMDAwLi40NTI4YTZhMDFjM2QKPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiAr KysgYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy9jb2RlY19oMjY0LmMKPiA+ID4g QEAgLTAsMCArMSw0ODIgQEAKPiA+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wKwo+ID4gPiArLyoKPiA+ID4gKyAqIENvcHlyaWdodCAoQykgMjAxOSBCYXlMaWJyZSwgU0FT Cj4gPiA+ICsgKiBBdXRob3I6IE1heGltZSBKb3VyZGFuIDxtam91cmRhbkBiYXlsaWJyZS5jb20+ Cj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArI2luY2x1ZGUgPG1lZGlhL3Y0bDItbWVtMm1lbS5o Pgo+ID4gPiArI2luY2x1ZGUgPG1lZGlhL3ZpZGVvYnVmMi1kbWEtY29udGlnLmg+Cj4gPiA+ICsK PiA+ID4gKyNpbmNsdWRlICJ2ZGVjX2hlbHBlcnMuaCIKPiA+ID4gKyNpbmNsdWRlICJkb3NfcmVn cy5oIgo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIFNJWkVfRVhUX0ZXICAgICAgICAoMjAgKiBTWl8x SykKPiA+ID4gKyNkZWZpbmUgU0laRV9XT1JLU1BBQ0UgICAgIDB4MWVlMDAwCj4gPiA+ICsjZGVm aW5lIFNJWkVfU0VJICAgKDggKiBTWl8xSykKPiA+ID4gKwo+ID4gPiArLyoKPiA+ID4gKyAqIE9m ZnNldCBhZGRlZCBieSB0aGUgZmlybXdhcmUgd2hpY2ggbXVzdCBiZSBzdWJzdHJhY3RlZAo+ID4g PiArICogZnJvbSB0aGUgd29ya3NwYWNlIHBoeWFkZHIKPiA+ID4gKyAqLwo+ID4gPiArI2RlZmlu ZSBXT1JLU1BBQ0VfQlVGX09GRlNFVCAgICAgICAweDEwMDAwMDAKPiA+ID4gKwo+ID4gPiArLyog SVNSIHN0YXR1cyAqLwo+ID4gPiArI2RlZmluZSBDTURfTUFTSyAgICAgICAgICAgR0VOTUFTSyg3 LCAwKQo+ID4gPiArI2RlZmluZSBDTURfU1JDX0NIQU5HRSAgICAgICAgICAgICAxCj4gPiA+ICsj ZGVmaW5lIENNRF9GUkFNRVNfUkVBRFkgICAyCj4gPiA+ICsjZGVmaW5lIENNRF9GQVRBTF9FUlJP UiAgICAgICAgICAgIDYKPiA+ID4gKyNkZWZpbmUgQ01EX0JBRF9XSURUSCAgICAgICAgICAgICAg Nwo+ID4gPiArI2RlZmluZSBDTURfQkFEX0hFSUdIVCAgICAgICAgICAgICA4Cj4gPiA+ICsKPiA+ ID4gKyNkZWZpbmUgU0VJX0RBVEFfUkVBRFkgICAgIEJJVCgxNSkKPiA+ID4gKwo+ID4gPiArLyog UGljdHVyZSB0eXBlICovCj4gPiA+ICsjZGVmaW5lIFBJQ19UT1BfQk9UICAgICAgICA1Cj4gPiA+ ICsjZGVmaW5lIFBJQ19CT1RfVE9QICAgICAgICA2Cj4gPiA+ICsKPiA+ID4gKy8qIFNpemUgb2Yg TW90aW9uIFZlY3RvciBwZXIgbWFjcm9ibG9jayAqLwo+ID4gPiArI2RlZmluZSBNQl9NVl9TSVpF IDk2Cj4gPiA+ICsKPiA+ID4gKy8qIEZyYW1lIHN0YXR1cyBkYXRhICovCj4gPiA+ICsjZGVmaW5l IFBJQ19TVFJVQ1RfQklUICAgICA1Cj4gPiA+ICsjZGVmaW5lIFBJQ19TVFJVQ1RfTUFTSyAgICBH RU5NQVNLKDIsIDApCj4gPiA+ICsjZGVmaW5lIEJVRl9JRFhfTUFTSyAgICAgICBHRU5NQVNLKDQs IDApCj4gPiA+ICsjZGVmaW5lIEVSUk9SX0ZMQUcgQklUKDkpCj4gPiA+ICsjZGVmaW5lIE9GRlNF VF9CSVQgMTYKPiA+ID4gKyNkZWZpbmUgT0ZGU0VUX01BU0sgICAgICAgIEdFTk1BU0soMTUsIDAp Cj4gPiA+ICsKPiA+ID4gKy8qIEJpdHN0cmVhbSBwYXJzZWQgZGF0YSAqLwo+ID4gPiArI2RlZmlu ZSBNQl9UT1RBTF9CSVQgICAgICAgOAo+ID4gPiArI2RlZmluZSBNQl9UT1RBTF9NQVNLICAgICAg R0VOTUFTSygxNSwgMCkKPiA+ID4gKyNkZWZpbmUgTUJfV0lEVEhfTUFTSyAgICAgIEdFTk1BU0so NywgMCkKPiA+ID4gKyNkZWZpbmUgTUFYX1JFRl9CSVQgICAgICAgIDI0Cj4gPiA+ICsjZGVmaW5l IE1BWF9SRUZfTUFTSyAgICAgICBHRU5NQVNLKDYsIDApCj4gPiA+ICsjZGVmaW5lIEFSX0lEQ19C SVQgMTYKPiA+ID4gKyNkZWZpbmUgQVJfSURDX01BU0sgICAgICAgIEdFTk1BU0soNywgMCkKPiA+ ID4gKyNkZWZpbmUgQVJfUFJFU0VOVF9GTEFHICAgIEJJVCgwKQo+ID4gPiArI2RlZmluZSBBUl9F WFRFTkQgIDB4ZmYKPiA+ID4gKwo+ID4gPiArLyoKPiA+ID4gKyAqIEJ1ZmZlciB0byBzZW5kIHRv IHRoZSBFU1BBUlNFUiB0byBzaWduYWwgRW5kIE9mIFN0cmVhbSBmb3IgSC4yNjQuCj4gPiA+ICsg KiBUaGlzIGlzIGEgMTZ4MTYgZW5jb2RlZCBwaWN0dXJlIHRoYXQgd2lsbCB0cmlnZ2VyIGRyYWlu IGZpcm13YXJlLXNpZGUuCj4gPiA+ICsgKiBUaGVyZSBpcyBubyBrbm93biBhbHRlcm5hdGl2ZS4K PiA+ID4gKyAqLwo+ID4gPiArc3RhdGljIGNvbnN0IHU4IGVvc19zZXF1ZW5jZVtTWl80S10gPSB7 Cj4gPiA+ICsgICAweDAwLCAweDAwLCAweDAwLCAweDAxLCAweDA2LCAweDA1LCAweGZmLCAweGU0 LCAweGRjLCAweDQ1LCAweGU5LCAweGJkLAo+ID4gPiArICAgMHhlNiwgMHhkOSwgMHg0OCwgMHhi NywgMHg5NiwgMHgyYywgMHhkOCwgMHgyMCwgMHhkOSwgMHgyMywgMHhlZSwgMHhlZiwKPiA+ID4g KyAgIDB4NzgsIDB4MzIsIDB4MzYsIDB4MzQsIDB4MjAsIDB4MmQsIDB4MjAsIDB4NjMsIDB4NmYs IDB4NzIsIDB4NjUsIDB4MjAsCj4gPiA+ICsgICAweDM2LCAweDM3LCAweDIwLCAweDcyLCAweDMx LCAweDMxLCAweDMzLCAweDMwLCAweDIwLCAweDM4LCAweDM0LCAweDM3LAo+ID4gPiArICAgMHgz NSwgMHgzOSwgMHgzNywgMHgzNywgMHgyMCwgMHgyZCwgMHgyMCwgMHg0OCwgMHgyZSwgMHgzMiwg MHgzNiwgMHgzNCwKPiA+ID4gKyAgIDB4MmYsIDB4NGQsIDB4NTAsIDB4NDUsIDB4NDcsIDB4MmQs IDB4MzQsIDB4MjAsIDB4NDEsIDB4NTYsIDB4NDMsIDB4MjAsCj4gPiA+ICsgICAweDYzLCAweDZm LCAweDY0LCAweDY1LCAweDYzLCAweDIwLCAweDJkLCAweDIwLCAweDQzLCAweDZmLCAweDcwLCAw eDc5LAo+ID4gPiArICAgMHg2YywgMHg2NSwgMHg2NiwgMHg3NCwgMHgyMCwgMHgzMiwgMHgzMCwg MHgzMCwgMHgzMywgMHgyZCwgMHgzMiwgMHgzMCwKPiA+ID4gKyAgIDB4MzAsIDB4MzksIDB4MjAs IDB4MmQsIDB4MjAsIDB4NjgsIDB4NzQsIDB4NzQsIDB4NzAsIDB4M2EsIDB4MmYsIDB4MmYsCj4g PiA+ICsgICAweDc3LCAweDc3LCAweDc3LCAweDJlLCAweDc2LCAweDY5LCAweDY0LCAweDY1LCAw eDZmLCAweDZjLCAweDYxLCAweDZlLAo+ID4gPiArICAgMHgyZSwgMHg2ZiwgMHg3MiwgMHg2Nywg MHgyZiwgMHg3OCwgMHgzMiwgMHgzNiwgMHgzNCwgMHgyZSwgMHg2OCwgMHg3NCwKPiA+ID4gKyAg IDB4NmQsIDB4NmMsIDB4MjAsIDB4MmQsIDB4MjAsIDB4NmYsIDB4NzAsIDB4NzQsIDB4NjksIDB4 NmYsIDB4NmUsIDB4NzMsCj4gPiA+ICsgICAweDNhLCAweDIwLCAweDYzLCAweDYxLCAweDYyLCAw eDYxLCAweDYzLCAweDNkLCAweDMxLCAweDIwLCAweDcyLCAweDY1LAo+ID4gPiArICAgMHg2Niwg MHgzZCwgMHgzMSwgMHgyMCwgMHg2NCwgMHg2NSwgMHg2MiwgMHg2YywgMHg2ZiwgMHg2MywgMHg2 YiwgMHgzZCwKPiA+ID4gKyAgIDB4MzEsIDB4M2EsIDB4MzAsIDB4M2EsIDB4MzAsIDB4MjAsIDB4 NjEsIDB4NmUsIDB4NjEsIDB4NmMsIDB4NzksIDB4NzMsCj4gPiA+ICsgICAweDY1LCAweDNkLCAw eDMwLCAweDc4LCAweDMxLCAweDNhLCAweDMwLCAweDc4LCAweDMxLCAweDMxLCAweDMxLCAweDIw LAo+ID4gPiArICAgMHg2ZCwgMHg2NSwgMHgzZCwgMHg2OCwgMHg2NSwgMHg3OCwgMHgyMCwgMHg3 MywgMHg3NSwgMHg2MiwgMHg2ZCwgMHg2NSwKPiA+ID4gKyAgIDB4M2QsIDB4MzYsIDB4MjAsIDB4 NzAsIDB4NzMsIDB4NzksIDB4NWYsIDB4NzIsIDB4NjQsIDB4M2QsIDB4MzEsIDB4MmUsCj4gPiA+ ICsgICAweDMwLCAweDNhLCAweDMwLCAweDJlLCAweDMwLCAweDIwLCAweDZkLCAweDY5LCAweDc4 LCAweDY1LCAweDY0LCAweDVmLAo+ID4gPiArICAgMHg3MiwgMHg2NSwgMHg2NiwgMHgzZCwgMHgz MCwgMHgyMCwgMHg2ZCwgMHg2NSwgMHg1ZiwgMHg3MiwgMHg2MSwgMHg2ZSwKPiA+ID4gKyAgIDB4 NjcsIDB4NjUsIDB4M2QsIDB4MzEsIDB4MzYsIDB4MjAsIDB4NjMsIDB4NjgsIDB4NzIsIDB4NmYs IDB4NmQsIDB4NjEsCj4gPiA+ICsgICAweDVmLCAweDZkLCAweDY1LCAweDNkLCAweDMxLCAweDIw LCAweDc0LCAweDcyLCAweDY1LCAweDZjLCAweDZjLCAweDY5LAo+ID4gPiArICAgMHg3MywgMHgz ZCwgMHgzMCwgMHgyMCwgMHgzOCwgMHg3OCwgMHgzOCwgMHg2NCwgMHg2MywgMHg3NCwgMHgzZCwg MHgzMCwKPiA+ID4gKyAgIDB4MjAsIDB4NjMsIDB4NzEsIDB4NmQsIDB4M2QsIDB4MzAsIDB4MjAs IDB4NjQsIDB4NjUsIDB4NjEsIDB4NjQsIDB4N2EsCj4gPiA+ICsgICAweDZmLCAweDZlLCAweDY1 LCAweDNkLCAweDMyLCAweDMxLCAweDJjLCAweDMxLCAweDMxLCAweDIwLCAweDYzLCAweDY4LAo+ ID4gPiArICAgMHg3MiwgMHg2ZiwgMHg2ZCwgMHg2MSwgMHg1ZiwgMHg3MSwgMHg3MCwgMHg1Ziwg MHg2ZiwgMHg2NiwgMHg2NiwgMHg3MywKPiA+ID4gKyAgIDB4NjUsIDB4NzQsIDB4M2QsIDB4MmQs IDB4MzIsIDB4MjAsIDB4NzQsIDB4NjgsIDB4NzIsIDB4NjUsIDB4NjEsIDB4NjQsCj4gPiA+ICsg ICAweDczLCAweDNkLCAweDMxLCAweDIwLCAweDZlLCAweDcyLCAweDNkLCAweDMwLCAweDIwLCAw eDY0LCAweDY1LCAweDYzLAo+ID4gPiArICAgMHg2OSwgMHg2ZCwgMHg2MSwgMHg3NCwgMHg2NSwg MHgzZCwgMHgzMSwgMHgyMCwgMHg2ZCwgMHg2MiwgMHg2MSwgMHg2NiwKPiA+ID4gKyAgIDB4NjYs IDB4M2QsIDB4MzAsIDB4MjAsIDB4NjIsIDB4NjYsIDB4NzIsIDB4NjEsIDB4NmQsIDB4NjUsIDB4 NzMsIDB4M2QsCj4gPiA+ICsgICAweDMwLCAweDIwLCAweDZiLCAweDY1LCAweDc5LCAweDY5LCAw eDZlLCAweDc0LCAweDNkLCAweDMyLCAweDM1LCAweDMwLAo+ID4gPiArICAgMHgyMCwgMHg2Yiwg MHg2NSwgMHg3OSwgMHg2OSwgMHg2ZSwgMHg3NCwgMHg1ZiwgMHg2ZCwgMHg2OSwgMHg2ZSwgMHgz ZCwKPiA+ID4gKyAgIDB4MzIsIDB4MzUsIDB4MjAsIDB4NzMsIDB4NjMsIDB4NjUsIDB4NmUsIDB4 NjUsIDB4NjMsIDB4NzUsIDB4NzQsIDB4M2QsCj4gPiA+ICsgICAweDM0LCAweDMwLCAweDIwLCAw eDcyLCAweDYzLCAweDNkLCAweDYxLCAweDYyLCAweDcyLCAweDIwLCAweDYyLCAweDY5LAo+ID4g PiArICAgMHg3NCwgMHg3MiwgMHg2MSwgMHg3NCwgMHg2NSwgMHgzZCwgMHgzMSwgMHgzMCwgMHgy MCwgMHg3MiwgMHg2MSwgMHg3NCwKPiA+ID4gKyAgIDB4NjUsIDB4NzQsIDB4NmYsIDB4NmMsIDB4 M2QsIDB4MzEsIDB4MmUsIDB4MzAsIDB4MjAsIDB4NzEsIDB4NjMsIDB4NmYsCj4gPiA+ICsgICAw eDZkLCAweDcwLCAweDNkLCAweDMwLCAweDJlLCAweDM2LCAweDMwLCAweDIwLCAweDcxLCAweDcw LCAweDZkLCAweDY5LAo+ID4gPiArICAgMHg2ZSwgMHgzZCwgMHgzMSwgMHgzMCwgMHgyMCwgMHg3 MSwgMHg3MCwgMHg2ZCwgMHg2MSwgMHg3OCwgMHgzZCwgMHgzNSwKPiA+ID4gKyAgIDB4MzEsIDB4 MjAsIDB4NzEsIDB4NzAsIDB4NzMsIDB4NzQsIDB4NjUsIDB4NzAsIDB4M2QsIDB4MzQsIDB4MjAs IDB4NjksCj4gPiA+ICsgICAweDcwLCAweDVmLCAweDcyLCAweDYxLCAweDc0LCAweDY5LCAweDZm LCAweDNkLCAweDMxLCAweDJlLCAweDM0LCAweDMwLAo+ID4gPiArICAgMHgyMCwgMHg2MSwgMHg3 MSwgMHgzZCwgMHgzMSwgMHgzYSwgMHgzMSwgMHgyZSwgMHgzMCwgMHgzMCwgMHgwMCwgMHg4MCwK PiA+ID4gKyAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEsIDB4NjcsIDB4NGQsIDB4NDAsIDB4MGEs IDB4OWEsIDB4NzQsIDB4ZjQsIDB4MjAsCj4gPiA+ICsgICAweDAwLCAweDAwLCAweDAzLCAweDAw LCAweDIwLCAweDAwLCAweDAwLCAweDA2LCAweDUxLCAweGUyLCAweDQ0LCAweGQ0LAo+ID4gPiAr ICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMSwgMHg2OCwgMHhlZSwgMHgzMiwgMHhjOCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMSwKPiA+ID4gKyAgIDB4NjUsIDB4ODgsIDB4ODAsIDB4MjAsIDB4MDAs IDB4MDgsIDB4N2YsIDB4ZWEsIDB4NmEsIDB4ZTIsIDB4OTksIDB4YjYsCj4gPiA+ICsgICAweDU3 LCAweGFlLCAweDQ5LCAweDMwLCAweGY1LCAweGZlLCAweDVlLCAweDQ2LCAweDBiLCAweDcyLCAw eDQ0LCAweGM0LAo+ID4gPiArICAgMHhlMSwgMHhmYywgMHg2MiwgMHhkYSwgMHhmMSwgMHhmYiwg MHhhMiwgMHhkYiwgMHhkNiwgMHhiZSwgMHg1YywgMHhkNywKPiA+ID4gKyAgIDB4MjQsIDB4YTMs IDB4ZjUsIDB4YjksIDB4MmYsIDB4NTcsIDB4MTYsIDB4NDksIDB4NzUsIDB4NDcsIDB4NzcsIDB4 MDksCj4gPiA+ICsgICAweDVjLCAweGExLCAweGI0LCAweGMzLCAweDRmLCAweDYwLCAweDJiLCAw eGIwLCAweDBjLCAweGM4LCAweGQ2LCAweDY2LAo+ID4gPiArICAgMHhiYSwgMHg5YiwgMHg4Miwg MHgyOSwgMHgzMywgMHg5MiwgMHgyNiwgMHg5OSwgMHgzMSwgMHgxYywgMHg3ZiwgMHg5YiwKPiA+ ID4gKyAgIDB4MDAsIDB4MDAsIDB4MDEsIDB4MGZmLAo+ID4gPiArfTsKPiA+Cj4gPiBJIGNhbiBy ZWFkIHRoYXQgdGhpcyBjb250YWlucyBhIHByZXR0eSBsYXJnZSBTRUksIFNQUywgUFBTLCBJRFIg YW5kCj4gPiBmaW5hbGx5IHRoaXMgdW5zcGVjaWZpZWQgTmFsIDE1IHdpdGggbm8gc2l6ZSwgYnV0 IEkgZG9uJ3QgZXhwZWN0IGV2ZXJ5Cj4gPiBjYW4uIE1heWJlIHlvdSBjb3VsZCBmb3JtYXQgdGhp cyBpbnRvIG5hbHMsIGFuZCBkb2N1bWVudCB3aGF0ZXZlciB5b3UKPiA+IGtub3cgYWJvdXQgdGhp cyBibG9iID8gSWYgeW91IG5lZWQgaW5mbywgSSBtYXkgc3VnZ2VzdCB5b3UgZG8gcHV0IHRoYXQK PiA+IGludG8gYSBmaWxlIGFuZCB1c2UgWVVWaWV3IHNvZnR3YXJlIHRvIHBhcnNlIGl0Lgo+Cj4g V2hpbGUgcGFyc2luZyB0aGUgU0VJIHdhcyBpbnRlcmVzdGluZywgSSB0aGluayB5b3UgY2FuIGRy b3AgaXQKPiBlbnRpcmVseS4gSXQncyBhIGJsb2Igb2YgdXNlciBkYXRhIHRoZSB4MjY0IGFkZHMg c28gdGhhdCB5b3UgY2FuIGdldAo+IGFsbCB0aGUgcGFyYW1ldGVycyB0aGF0IHdhcyBwYXNzZWQg dG8gaXQuIFRoaXMgZXZlbiBpbmNsdWRlcyB0aGUgVVJJCj4gaHR0cDovL3d3dy52aWRlb2xhbi5v cmcveDI2NC5odG1sIGFuZCB0aGUgU1ZOIHJldmlzaW9uIG51bWJlciBvZiB0aGV4MjY0IGJ1aWxk Lgo+Cj4gRm9yIHRoZSBTUFMgYml0LCBvbmx5IHRoaW5nIHRoYXQgY2FtZSBvdXQgaXMgdGhhdCB0 aGlzIGlzIE1haW4gcHJvZmlsZSwKPiBkbyBhbGwgc3VwcG9ydGVkIGdlbmVyYXRpb24gb2YgSDI2 NCBkZWNvZGVyIG9uIEFtbG9naWMgc3VwcG9ydHMgbWFpbiA/Cj4gVG8gYmUgY29uc2VydmF0aXZl LCBpdCBtaWdodCBiZSBuaWNlIHRvIGVuY29kZSBhIGNvbnN0cmFpbmVkLWJhc2VsaW5lCj4gb25l LiBZb3UgY291bGQgYWxzbyBtYWtlIGl0IHNtYWxsZXIgYnkgZHJvcHBpbmcgdGhlIFZVSSBwYXJh bWV0ZXJzLgo+IFJlbWVtYmVyIHRoYXQgdGhlIFNFSSBhbmQgUFBTIGFyZSBib3RoIGJpZ2dlciB0 aGVuIHRoZSBibGFjayBzbGljZQo+IGJlaW5nIGVuY29kZWQuCj4KPiBBYm91dCAidW5zcGVjaWZp ZWQiIE5BTCBhdCB0aGUgZW5kLCBub3Qgc3VyZSBpZiBpdCdzIHJlYWxseSBuZWVkZWQsIEknZAo+ IHRyeSB0byBkcm9wIGl0Lgo+CgpJIGFjdHVhbGx5IGhhZCBhIHRhbGsgd2l0aCBhbWxvZ2ljIGFi b3V0IHRoaXMgYSB3aGlsZSBhZ28sIHRoZWlyCnN1bW1hcnkgd2FzIHRoYXQgdGhpcyBpcyBhIDE2 eDE2IGVuY29kZWQgcGljdHVyZSAoc28gbm8gd29uZGVyIHlvdQpmb3VuZCBhIFNQUyAmIGNpZSBp biBpdCkgdGhhdCB3aWxsIHRyaWdnZXIgZHJhaW4gZmlybXdhcmUgc2lkZS4gSXQncyBhCmNvbXBs ZXRlIGhhY2sgYnV0IGxhc3QgdGltZSBJIGNoZWNrZWQgdGhpcyB3YXMgdGhlaXIgb25seSB3YXkg KGluCnZlbmRvciBTREspIG9mIGRyYWluaW5nIHRoZSBILjI2NCBkZWNvZGVyLiBUaGlzIGJsb2Ig aXMgYWN0dWFsbHkgdGhlCnNhbWUgdGhhdCBpcyBzZW50IGJ5IHZlbmRvciB1c2Vyc3BhY2Ugd2hl biB0cnlpbmcgdG8gZHJhaW4gdGhlCmRlY29kZXIsIGhlbmNlIHdoeSBJIGtlcHQgaXQuCgpJIHdp bGwgc2VlIGlmIHdlIGNhbiBmaW5kIGEgd2F5IGFyb3VuZCB0aGlzLCBvciBhdCBsZWFzdCBzaG9y dGVuIHRoaXMKcGFja2V0LiBUaGFua3MgZm9yIGFsbCB0aGUgaW5zaWdodHMhCgo+ID4KPiA+ID4g Kwo+ID4gPiArc3RhdGljIGNvbnN0IHU4ICpjb2RlY19oMjY0X2Vvc19zZXF1ZW5jZSh1MzIgKmxl bikKPiA+ID4gK3sKPiA+ID4gKyAgICpsZW4gPSBBUlJBWV9TSVpFKGVvc19zZXF1ZW5jZSk7Cj4g PiA+ICsgICByZXR1cm4gZW9zX3NlcXVlbmNlOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdHJ1 Y3QgY29kZWNfaDI2NCB7Cj4gPiA+ICsgICAvKiBILjI2NCBkZWNvZGVyIHJlcXVpcmVzIGFuIGV4 dGVuZGVkIGZpcm13YXJlICovCj4gPiA+ICsgICB2b2lkICAgICAgKmV4dF9md192YWRkcjsKPiA+ ID4gKyAgIGRtYV9hZGRyX3QgZXh0X2Z3X3BhZGRyOwo+ID4gPiArCj4gPiA+ICsgICAvKiBCdWZm ZXIgZm9yIHRoZSBILjI2NCBXb3Jrc3BhY2UgKi8KPiA+ID4gKyAgIHZvaWQgICAgICAqd29ya3Nw YWNlX3ZhZGRyOwo+ID4gPiArICAgZG1hX2FkZHJfdCB3b3Jrc3BhY2VfcGFkZHI7Cj4gPiA+ICsK PiA+ID4gKyAgIC8qIEJ1ZmZlciBmb3IgdGhlIEguMjY0IHJlZmVyZW5jZXMgTVYgKi8KPiA+ID4g KyAgIHZvaWQgICAgICAqcmVmX3ZhZGRyOwo+ID4gPiArICAgZG1hX2FkZHJfdCByZWZfcGFkZHI7 Cj4gPiA+ICsgICB1MzIgICAgICAgIHJlZl9zaXplOwo+ID4gPiArCj4gPiA+ICsgICAvKiBCdWZm ZXIgZm9yIHBhcnNlZCBTRUkgZGF0YSAqLwo+ID4gPiArICAgdm9pZCAgICAgICpzZWlfdmFkZHI7 Cj4gPiA+ICsgICBkbWFfYWRkcl90IHNlaV9wYWRkcjsKPiA+ID4gKwo+ID4gPiArICAgdTMyIG1i X3dpZHRoOwo+ID4gPiArICAgdTMyIG1iX2hlaWdodDsKPiA+ID4gKyAgIHUzMiBtYXhfcmVmczsK PiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgY29kZWNfaDI2NF9jYW5fcmVjeWNs ZShzdHJ1Y3QgYW12ZGVjX2NvcmUgKmNvcmUpCj4gPiA+ICt7Cj4gPiA+ICsgICByZXR1cm4gIWFt dmRlY19yZWFkX2Rvcyhjb3JlLCBBVl9TQ1JBVENIXzcpIHx8Cj4gPiA+ICsgICAgICAgICAgIWFt dmRlY19yZWFkX2Rvcyhjb3JlLCBBVl9TQ1JBVENIXzgpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ ICtzdGF0aWMgdm9pZCBjb2RlY19oMjY0X3JlY3ljbGUoc3RydWN0IGFtdmRlY19jb3JlICpjb3Jl LCB1MzIgYnVmX2lkeCkKPiA+ID4gK3sKPiA+ID4gKyAgIC8qCj4gPiA+ICsgICAgKiBUZWxsIHRo ZSBmaXJtd2FyZSBpdCBjYW4gcmVjeWNsZSB0aGlzIGJ1ZmZlci4KPiA+ID4gKyAgICAqIEFWX1ND UkFUQ0hfOCBzZXJ2ZXMgdGhlIHNhbWUgcHVycG9zZS4KPiA+ID4gKyAgICAqLwo+ID4gPiArICAg aWYgKCFhbXZkZWNfcmVhZF9kb3MoY29yZSwgQVZfU0NSQVRDSF83KSkKPiA+ID4gKyAgICAgICAg ICAgYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBBVl9TQ1JBVENIXzcsIGJ1Zl9pZHggKyAxKTsKPiA+ ID4gKyAgIGVsc2UKPiA+ID4gKyAgICAgICAgICAgYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBBVl9T Q1JBVENIXzgsIGJ1Zl9pZHggKyAxKTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGlu dCBjb2RlY19oMjY0X3N0YXJ0KHN0cnVjdCBhbXZkZWNfc2Vzc2lvbiAqc2VzcykKPiA+ID4gK3sK PiA+ID4gKyAgIHUzMiB3b3Jrc3BhY2Vfb2Zmc2V0Owo+ID4gPiArICAgc3RydWN0IGFtdmRlY19j b3JlICpjb3JlID0gc2Vzcy0+Y29yZTsKPiA+ID4gKyAgIHN0cnVjdCBjb2RlY19oMjY0ICpoMjY0 ID0gc2Vzcy0+cHJpdjsKPiA+ID4gKwo+ID4gPiArICAgLyogQWxsb2NhdGUgc29tZSBtZW1vcnkg Zm9yIHRoZSBILjI2NCBkZWNvZGVyJ3Mgc3RhdGUgKi8KPiA+ID4gKyAgIGgyNjQtPndvcmtzcGFj ZV92YWRkciA9Cj4gPiA+ICsgICAgICAgICAgIGRtYV9hbGxvY19jb2hlcmVudChjb3JlLT5kZXYs IFNJWkVfV09SS1NQQUNFLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmgy NjQtPndvcmtzcGFjZV9wYWRkciwgR0ZQX0tFUk5FTCk7Cj4gPiA+ICsgICBpZiAoIWgyNjQtPndv cmtzcGFjZV92YWRkcikKPiA+ID4gKyAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4gPiA+ICsK PiA+ID4gKyAgIC8qIEFsbG9jYXRlIHNvbWUgbWVtb3J5IGZvciB0aGUgSC4yNjQgU0VJIGR1bXAg Ki8KPiA+ID4gKyAgIGgyNjQtPnNlaV92YWRkciA9IGRtYV9hbGxvY19jb2hlcmVudChjb3JlLT5k ZXYsIFNJWkVfU0VJLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZoMjY0LT5zZWlfcGFkZHIsIEdGUF9LRVJORUwpOwo+ID4gPiArICAgaWYgKCFoMjY0LT5z ZWlfdmFkZHIpCj4gPiA+ICsgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gPiArCj4gPiA+ ICsgICBhbXZkZWNfd3JpdGVfZG9zX2JpdHMoY29yZSwgUE9XRVJfQ1RMX1ZMRCwgQklUKDkpIHwg QklUKDYpKTsKPiA+ID4gKwo+ID4gPiArICAgd29ya3NwYWNlX29mZnNldCA9IGgyNjQtPndvcmtz cGFjZV9wYWRkciAtIFdPUktTUEFDRV9CVUZfT0ZGU0VUOwo+ID4gPiArICAgYW12ZGVjX3dyaXRl X2Rvcyhjb3JlLCBBVl9TQ1JBVENIXzEsIHdvcmtzcGFjZV9vZmZzZXQpOwo+ID4gPiArICAgYW12 ZGVjX3dyaXRlX2Rvcyhjb3JlLCBBVl9TQ1JBVENIX0csIGgyNjQtPmV4dF9md19wYWRkcik7Cj4g PiA+ICsgICBhbXZkZWNfd3JpdGVfZG9zKGNvcmUsIEFWX1NDUkFUQ0hfSSwgaDI2NC0+c2VpX3Bh ZGRyIC0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jr c3BhY2Vfb2Zmc2V0KTsKPiA+ID4gKwo+ID4gPiArICAgLyogRW5hYmxlICJlcnJvciBjb3JyZWN0 aW9uIiAqLwo+ID4gPiArICAgYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBBVl9TQ1JBVENIX0YsCj4g PiA+ICsgICAgICAgICAgICAgICAgICAgIChhbXZkZWNfcmVhZF9kb3MoY29yZSwgQVZfU0NSQVRD SF9GKSAmIDB4ZmZmZmZmYzMpIHwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgQklUKDQpIHwg QklUKDcpKTsKPiA+ID4gKwo+ID4gPiArICAgYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBNREVDX1BJ Q19EQ19USFJFU0gsIDB4NDA0MDM4YWEpOwo+ID4gPiArCj4gPiA+ICsgICByZXR1cm4gMDsKPiA+ ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIGludCBjb2RlY19oMjY0X3N0b3Aoc3RydWN0IGFt dmRlY19zZXNzaW9uICpzZXNzKQo+ID4gPiArewo+ID4gPiArICAgc3RydWN0IGNvZGVjX2gyNjQg KmgyNjQgPSBzZXNzLT5wcml2Owo+ID4gPiArICAgc3RydWN0IGFtdmRlY19jb3JlICpjb3JlID0g c2Vzcy0+Y29yZTsKPiA+ID4gKwo+ID4gPiArICAgaWYgKGgyNjQtPmV4dF9md192YWRkcikKPiA+ ID4gKyAgICAgICAgICAgZG1hX2ZyZWVfY29oZXJlbnQoY29yZS0+ZGV2LCBTSVpFX0VYVF9GVywK PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDI2NC0+ZXh0X2Z3X3ZhZGRyLCBo MjY0LT5leHRfZndfcGFkZHIpOwo+ID4gPiArCj4gPiA+ICsgICBpZiAoaDI2NC0+d29ya3NwYWNl X3ZhZGRyKQo+ID4gPiArICAgICAgICAgICBkbWFfZnJlZV9jb2hlcmVudChjb3JlLT5kZXYsIFNJ WkVfV09SS1NQQUNFLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgyNjQtPndv cmtzcGFjZV92YWRkciwgaDI2NC0+d29ya3NwYWNlX3BhZGRyKTsKPiA+ID4gKwo+ID4gPiArICAg aWYgKGgyNjQtPnJlZl92YWRkcikKPiA+ID4gKyAgICAgICAgICAgZG1hX2ZyZWVfY29oZXJlbnQo Y29yZS0+ZGV2LCBoMjY0LT5yZWZfc2l6ZSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaDI2NC0+cmVmX3ZhZGRyLCBoMjY0LT5yZWZfcGFkZHIpOwo+ID4gPiArCj4gPiA+ICsg ICBpZiAoaDI2NC0+c2VpX3ZhZGRyKQo+ID4gPiArICAgICAgICAgICBkbWFfZnJlZV9jb2hlcmVu dChjb3JlLT5kZXYsIFNJWkVfU0VJLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBoMjY0LT5zZWlfdmFkZHIsIGgyNjQtPnNlaV9wYWRkcik7Cj4gPiA+ICsKPiA+ID4gKyAgIHJl dHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW50IGNvZGVjX2gyNjRfbG9h ZF9leHRlbmRlZF9maXJtd2FyZShzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNlc3MsCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTggKmRhdGEsIHUz MiBsZW4pCj4gPiA+ICt7Cj4gPiA+ICsgICBzdHJ1Y3QgY29kZWNfaDI2NCAqaDI2NDsKPiA+ID4g KyAgIHN0cnVjdCBhbXZkZWNfY29yZSAqY29yZSA9IHNlc3MtPmNvcmU7Cj4gPiA+ICsKPiA+ID4g KyAgIGlmIChsZW4gPCBTSVpFX0VYVF9GVykKPiA+ID4gKyAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7Cj4gPiA+ICsKPiA+ID4gKyAgIGgyNjQgPSBremFsbG9jKHNpemVvZigqaDI2NCksIEdGUF9L RVJORUwpOwo+ID4gPiArICAgaWYgKCFoMjY0KQo+ID4gPiArICAgICAgICAgICByZXR1cm4gLUVO T01FTTsKPiA+ID4gKwo+ID4gPiArICAgaDI2NC0+ZXh0X2Z3X3ZhZGRyID0gZG1hX2FsbG9jX2Nv aGVyZW50KGNvcmUtPmRldiwgU0laRV9FWFRfRlcsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZoMjY0LT5leHRfZndfcGFkZHIsIEdGUF9LRVJORUwpOwo+ ID4gPiArICAgaWYgKCFoMjY0LT5leHRfZndfdmFkZHIpIHsKPiA+ID4gKyAgICAgICAgICAga2Zy ZWUoaDI2NCk7Cj4gPiA+ICsgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4gPiArICAgfQo+ ID4gPiArCj4gPiA+ICsgICBtZW1jcHkoaDI2NC0+ZXh0X2Z3X3ZhZGRyLCBkYXRhLCBTSVpFX0VY VF9GVyk7Cj4gPiA+ICsgICBzZXNzLT5wcml2ID0gaDI2NDsKPiA+ID4gKwo+ID4gPiArICAgcmV0 dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9m cmFjdCBwYXJfdGFibGVbXSA9IHsKPiA+ID4gKyAgIHsgMSwgMSB9LCAgIHsgMSwgMSB9LCAgICB7 IDEyLCAxMSB9LCB7IDEwLCAxMSB9LAo+ID4gPiArICAgeyAxNiwgMTEgfSwgeyA0MCwgMzMgfSwg IHsgMjQsIDExIH0sIHsgMjAsIDExIH0sCj4gPiA+ICsgICB7IDMyLCAxMSB9LCB7IDgwLCAzMyB9 LCAgeyAxOCwgMTEgfSwgeyAxNSwgMTEgfSwKPiA+ID4gKyAgIHsgNjQsIDMzIH0sIHsgMTYwLCA5 OSB9LCB7IDQsIDMgfSwgICB7IDMsIDIgfSwKPiA+ID4gKyAgIHsgMiwgMSB9Cj4gPiA+ICt9Owo+ ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBjb2RlY19oMjY0X3NldF9wYXIoc3RydWN0IGFtdmRl Y19zZXNzaW9uICpzZXNzKQo+ID4gPiArewo+ID4gPiArICAgc3RydWN0IGFtdmRlY19jb3JlICpj b3JlID0gc2Vzcy0+Y29yZTsKPiA+ID4gKyAgIHUzMiBzZXFfaW5mbyA9IGFtdmRlY19yZWFkX2Rv cyhjb3JlLCBBVl9TQ1JBVENIXzIpOwo+ID4gPiArICAgdTMyIGFyX2lkYyA9IChzZXFfaW5mbyA+ PiBBUl9JRENfQklUKSAmIEFSX0lEQ19NQVNLOwo+ID4gPiArCj4gPiA+ICsgICBpZiAoIShzZXFf aW5mbyAmIEFSX1BSRVNFTlRfRkxBRykpCj4gPiA+ICsgICAgICAgICAgIHJldHVybjsKPiA+ID4g Kwo+ID4gPiArICAgaWYgKGFyX2lkYyA9PSBBUl9FWFRFTkQpIHsKPiA+ID4gKyAgICAgICAgICAg dTMyIGFyX2luZm8gPSBhbXZkZWNfcmVhZF9kb3MoY29yZSwgQVZfU0NSQVRDSF8zKTsKPiA+ID4g Kwo+ID4gPiArICAgICAgICAgICBzZXNzLT5waXhlbGFzcGVjdC5udW1lcmF0b3IgPSBhcl9pbmZv ICYgMHhmZmZmOwo+ID4gPiArICAgICAgICAgICBzZXNzLT5waXhlbGFzcGVjdC5kZW5vbWluYXRv ciA9IChhcl9pbmZvID4+IDE2KSAmIDB4ZmZmZjsKPiA+ID4gKyAgICAgICAgICAgcmV0dXJuOwo+ ID4gPiArICAgfQo+ID4gPiArCj4gPiA+ICsgICBpZiAoYXJfaWRjID49IEFSUkFZX1NJWkUocGFy X3RhYmxlKSkKPiA+ID4gKyAgICAgICAgICAgcmV0dXJuOwo+ID4gPiArCj4gPiA+ICsgICBzZXNz LT5waXhlbGFzcGVjdCA9IHBhcl90YWJsZVthcl9pZGNdOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ ICtzdGF0aWMgdm9pZCBjb2RlY19oMjY0X3Jlc3VtZShzdHJ1Y3QgYW12ZGVjX3Nlc3Npb24gKnNl c3MpCj4gPiA+ICt7Cj4gPiA+ICsgICBzdHJ1Y3QgYW12ZGVjX2NvcmUgKmNvcmUgPSBzZXNzLT5j b3JlOwo+ID4gPiArICAgc3RydWN0IGNvZGVjX2gyNjQgKmgyNjQgPSBzZXNzLT5wcml2Owo+ID4g PiArICAgdTMyIG1iX3dpZHRoLCBtYl9oZWlnaHQsIG1iX3RvdGFsOwo+ID4gPiArCj4gPiA+ICsg ICBhbXZkZWNfc2V0X2NhbnZhc2VzKHNlc3MsICh1MzJbXSl7IEFOQzBfQ0FOVkFTX0FERFIsIDAg fSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHUzMltdKXsgMjQsIDAgfSk7 Cj4gPiA+ICsKPiA+ID4gKyAgIGRldl9kYmcoY29yZS0+ZGV2LCAibWF4X3JlZnMgPSAldTsgYWN0 dWFsX2RwYl9zaXplID0gJXVcbiIsCj4gPiA+ICsgICAgICAgICAgIGgyNjQtPm1heF9yZWZzLCBz ZXNzLT5udW1fZHN0X2J1ZnMpOwo+ID4gPiArCj4gPiA+ICsgICAvKiBBbGlnbiB0byBhIG11bHRp cGxlIG9mIDQgbWFjcm9ibG9ja3MgKi8KPiA+ID4gKyAgIG1iX3dpZHRoID0gQUxJR04oaDI2NC0+ bWJfd2lkdGgsIDQpOwo+ID4gPiArICAgbWJfaGVpZ2h0ID0gQUxJR04oaDI2NC0+bWJfaGVpZ2h0 LCA0KTsKPiA+ID4gKyAgIG1iX3RvdGFsID0gbWJfd2lkdGggKiBtYl9oZWlnaHQ7Cj4gPiA+ICsK PiA+ID4gKyAgIGgyNjQtPnJlZl9zaXplID0gbWJfdG90YWwgKiBNQl9NVl9TSVpFICogaDI2NC0+ bWF4X3JlZnM7Cj4gPiA+ICsgICBoMjY0LT5yZWZfdmFkZHIgPSBkbWFfYWxsb2NfY29oZXJlbnQo Y29yZS0+ZGV2LCBoMjY0LT5yZWZfc2l6ZSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmaDI2NC0+cmVmX3BhZGRyLCBHRlBfS0VSTkVMKTsKPiA+ID4gKyAg IGlmICghaDI2NC0+cmVmX3ZhZGRyKSB7Cj4gPiA+ICsgICAgICAgICAgIGFtdmRlY19hYm9ydChz ZXNzKTsKPiA+ID4gKyAgICAgICAgICAgcmV0dXJuOwo+ID4gPiArICAgfQo+ID4gPiArCj4gPiA+ ICsgICAvKiBBZGRyZXNzIHRvIHN0b3JlIHRoZSByZWZlcmVuY2VzJyBNVnMgKi8KPiA+ID4gKyAg IGFtdmRlY193cml0ZV9kb3MoY29yZSwgQVZfU0NSQVRDSF8xLCBoMjY0LT5yZWZfcGFkZHIpOwo+ ID4gPiArICAgLyogRW5kIG9mIHJlZiBNViAqLwo+ID4gPiArICAgYW12ZGVjX3dyaXRlX2Rvcyhj b3JlLCBBVl9TQ1JBVENIXzQsIGgyNjQtPnJlZl9wYWRkciArIGgyNjQtPnJlZl9zaXplKTsKPiA+ ID4gKwo+ID4gPiArICAgYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBBVl9TQ1JBVENIXzAsIChoMjY0 LT5tYXhfcmVmcyA8PCAyNCkgfAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzZXNzLT5udW1fZHN0X2J1ZnMgPDwgMTYpIHwKPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGgyNjQtPm1heF9yZWZzIC0gMSkgPDwgOCkp Owo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAqIENvbmZpZ3VyZSB0aGUgSC4y NjQgZGVjb2RlciB3aGVuIHRoZSBwYXJzZXIgZGV0ZWN0ZWQgYSBwYXJhbWV0ZXIgc2V0IGNoYW5n ZQo+ID4gPiArICovCj4gPiA+ICtzdGF0aWMgdm9pZCBjb2RlY19oMjY0X3NyY19jaGFuZ2Uoc3Ry dWN0IGFtdmRlY19zZXNzaW9uICpzZXNzKQo+ID4gPiArewo+ID4gPiArICAgc3RydWN0IGFtdmRl Y19jb3JlICpjb3JlID0gc2Vzcy0+Y29yZTsKPiA+ID4gKyAgIHN0cnVjdCBjb2RlY19oMjY0ICpo MjY0ID0gc2Vzcy0+cHJpdjsKPiA+ID4gKyAgIHUzMiBwYXJzZWRfaW5mbywgbWJfdG90YWw7Cj4g PiA+ICsgICB1MzIgY3JvcF9pbmZvciwgY3JvcF9ib3R0b20sIGNyb3BfcmlnaHQ7Cj4gPiA+ICsg ICB1MzIgZnJhbWVfd2lkdGgsIGZyYW1lX2hlaWdodDsKPiA+ID4gKwo+ID4gPiArICAgc2Vzcy0+ a2V5ZnJhbWVfZm91bmQgPSAxOwo+ID4gPiArCj4gPiA+ICsgICBwYXJzZWRfaW5mbyA9IGFtdmRl Y19yZWFkX2Rvcyhjb3JlLCBBVl9TQ1JBVENIXzEpOwo+ID4gPiArCj4gPiA+ICsgICAvKiBUb3Rh bCBudW1iZXIgb2YgMTZ4MTYgbWFjcm9ibG9ja3MgKi8KPiA+ID4gKyAgIG1iX3RvdGFsID0gKHBh cnNlZF9pbmZvID4+IE1CX1RPVEFMX0JJVCkgJiBNQl9UT1RBTF9NQVNLOwo+ID4gPiArICAgLyog TnVtYmVyIG9mIG1hY3JvYmxvY2tzIHBlciBsaW5lICovCj4gPiA+ICsgICBoMjY0LT5tYl93aWR0 aCA9IHBhcnNlZF9pbmZvICYgTUJfV0lEVEhfTUFTSzsKPiA+ID4gKyAgIC8qIE51bWJlciBvZiBt YWNyb2Jsb2NrIGxpbmVzICovCj4gPiA+ICsgICBoMjY0LT5tYl9oZWlnaHQgPSBtYl90b3RhbCAv IGgyNjQtPm1iX3dpZHRoOwo+ID4gPiArCj4gPiA+ICsgICBoMjY0LT5tYXhfcmVmcyA9ICgocGFy c2VkX2luZm8gPj4gTUFYX1JFRl9CSVQpICYgTUFYX1JFRl9NQVNLKSArIDE7Cj4gPiA+ICsKPiA+ ID4gKyAgIGNyb3BfaW5mb3IgPSBhbXZkZWNfcmVhZF9kb3MoY29yZSwgQVZfU0NSQVRDSF82KTsK PiA+ID4gKyAgIGNyb3BfYm90dG9tID0gKGNyb3BfaW5mb3IgJiAweGZmKTsKPiA+ID4gKyAgIGNy b3BfcmlnaHQgPSAoY3JvcF9pbmZvciA+PiAxNikgJiAweGZmOwo+ID4gPiArCj4gPiA+ICsgICBm cmFtZV93aWR0aCA9IGgyNjQtPm1iX3dpZHRoICogMTYgLSBjcm9wX3JpZ2h0Owo+ID4gPiArICAg ZnJhbWVfaGVpZ2h0ID0gaDI2NC0+bWJfaGVpZ2h0ICogMTYgLSBjcm9wX2JvdHRvbTsKPiA+ID4g Kwo+ID4gPiArICAgZGV2X2RiZyhjb3JlLT5kZXYsICJmcmFtZTogJXV4JXU7IGNyb3A6ICV1ICV1 XG4iLAo+ID4gPiArICAgICAgICAgICBmcmFtZV93aWR0aCwgZnJhbWVfaGVpZ2h0LCBjcm9wX3Jp Z2h0LCBjcm9wX2JvdHRvbSk7Cj4gPiA+ICsKPiA+ID4gKyAgIGNvZGVjX2gyNjRfc2V0X3Bhcihz ZXNzKTsKPiA+ID4gKyAgIGFtdmRlY19zcmNfY2hhbmdlKHNlc3MsIGZyYW1lX3dpZHRoLCBmcmFt ZV9oZWlnaHQsIGgyNjQtPm1heF9yZWZzICsgNSk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gKy8q Kgo+ID4gPiArICogVGhlIGJpdHN0cmVhbSBvZmZzZXQgaXMgc3BsaXQgaW4gaGFsZiBpbiAyIGRp ZmZlcmVudCByZWdpc3RlcnMuCj4gPiA+ICsgKiBGZXRjaCBpdHMgTVNCIGhlcmUsIHdoaWNoIGxv Y2F0aW9uIGRlcGVuZHMgb24gdGhlIGZyYW1lIG51bWJlci4KPiA+ID4gKyAqLwo+ID4gPiArc3Rh dGljIHUzMiBnZXRfb2Zmc2V0X21zYihzdHJ1Y3QgYW12ZGVjX2NvcmUgKmNvcmUsIGludCBmcmFt ZV9udW0pCj4gPiA+ICt7Cj4gPiA+ICsgICBpbnQgdGFrZV9tc2IgPSBmcmFtZV9udW0gJSAyOwo+ ID4gPiArICAgaW50IHJlZ19vZmZzZXQgPSAoZnJhbWVfbnVtIC8gMikgKiA0Owo+ID4gPiArICAg dTMyIG9mZnNldF9tc2IgPSBhbXZkZWNfcmVhZF9kb3MoY29yZSwgQVZfU0NSQVRDSF9BICsgcmVn X29mZnNldCk7Cj4gPiA+ICsKPiA+ID4gKyAgIGlmICh0YWtlX21zYikKPiA+ID4gKyAgICAgICAg ICAgcmV0dXJuIG9mZnNldF9tc2IgJiAweGZmZmYwMDAwOwo+ID4gPiArCj4gPiA+ICsgICByZXR1 cm4gKG9mZnNldF9tc2IgJiAweDAwMDBmZmZmKSA8PCAxNjsKPiA+ID4gK30KPiA+ID4gKwo+ID4g PiArc3RhdGljIHZvaWQgY29kZWNfaDI2NF9mcmFtZXNfcmVhZHkoc3RydWN0IGFtdmRlY19zZXNz aW9uICpzZXNzLCB1MzIgc3RhdHVzKQo+ID4gPiArewo+ID4gPiArICAgc3RydWN0IGFtdmRlY19j b3JlICpjb3JlID0gc2Vzcy0+Y29yZTsKPiA+ID4gKyAgIGludCBlcnJvcl9jb3VudDsKPiA+ID4g KyAgIGludCBudW1fZnJhbWVzOwo+ID4gPiArICAgaW50IGk7Cj4gPiA+ICsKPiA+ID4gKyAgIGVy cm9yX2NvdW50ID0gYW12ZGVjX3JlYWRfZG9zKGNvcmUsIEFWX1NDUkFUQ0hfRCk7Cj4gPiA+ICsg ICBudW1fZnJhbWVzID0gKHN0YXR1cyA+PiA4KSAmIDB4ZmY7Cj4gPiA+ICsgICBpZiAoZXJyb3Jf Y291bnQpIHsKPiA+ID4gKyAgICAgICAgICAgZGV2X3dhcm4oY29yZS0+ZGV2LAo+ID4gPiArICAg ICAgICAgICAgICAgICAgICAiZGVjb2RlciBlcnJvcihzKSBoYXBwZW5lZCwgY291bnQgJWRcbiIs IGVycm9yX2NvdW50KTsKPiA+ID4gKyAgICAgICAgICAgYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBB Vl9TQ1JBVENIX0QsIDApOwo+ID4gPiArICAgfQo+ID4gPiArCj4gPiA+ICsgICBmb3IgKGkgPSAw OyBpIDwgbnVtX2ZyYW1lczsgaSsrKSB7Cj4gPiA+ICsgICAgICAgICAgIHUzMiBmcmFtZV9zdGF0 dXMgPSBhbXZkZWNfcmVhZF9kb3MoY29yZSwgQVZfU0NSQVRDSF8xICsgaSAqIDQpOwo+ID4gPiAr ICAgICAgICAgICB1MzIgYnVmZmVyX2luZGV4ID0gZnJhbWVfc3RhdHVzICYgQlVGX0lEWF9NQVNL Owo+ID4gPiArICAgICAgICAgICB1MzIgcGljX3N0cnVjdCA9IChmcmFtZV9zdGF0dXMgPj4gUElD X1NUUlVDVF9CSVQpICYKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQSUNfU1RS VUNUX01BU0s7Cj4gPiA+ICsgICAgICAgICAgIHUzMiBvZmZzZXQgPSAoZnJhbWVfc3RhdHVzID4+ IE9GRlNFVF9CSVQpICYgT0ZGU0VUX01BU0s7Cj4gPiA+ICsgICAgICAgICAgIHUzMiBmaWVsZCA9 IFY0TDJfRklFTERfTk9ORTsKPiA+ID4gKwo+ID4gPiArICAgICAgICAgICAvKgo+ID4gPiArICAg ICAgICAgICAgKiBBIGJ1ZmZlciBkZWNvZGUgZXJyb3IgbWVhbnMgaXQgd2FzIGRlY29kZWQsCj4g PiA+ICsgICAgICAgICAgICAqIGJ1dCBwYXJ0IG9mIHRoZSBwaWN0dXJlIHdpbGwgaGF2ZSBhcnRp ZmFjdHMuCj4gPiA+ICsgICAgICAgICAgICAqIFR5cGljYWwgcmVhc29uIGlzIGEgdGVtcG9yYXJp bHkgY29ycnVwdGVkIGJpdHN0cmVhbQo+ID4gPiArICAgICAgICAgICAgKi8KPiA+ID4gKyAgICAg ICAgICAgaWYgKGZyYW1lX3N0YXR1cyAmIEVSUk9SX0ZMQUcpCj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgZGV2X2RiZyhjb3JlLT5kZXYsICJCdWZmZXIgJWQgZGVjb2RlIGVycm9yXG4iLAo+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2luZGV4KTsKPiA+ID4gKwo+ID4g PiArICAgICAgICAgICBpZiAocGljX3N0cnVjdCA9PSBQSUNfVE9QX0JPVCkKPiA+ID4gKyAgICAg ICAgICAgICAgICAgICBmaWVsZCA9IFY0TDJfRklFTERfSU5URVJMQUNFRF9UQjsKPiA+ID4gKyAg ICAgICAgICAgZWxzZSBpZiAocGljX3N0cnVjdCA9PSBQSUNfQk9UX1RPUCkKPiA+ID4gKyAgICAg ICAgICAgICAgICAgICBmaWVsZCA9IFY0TDJfRklFTERfSU5URVJMQUNFRF9CVDsKPiA+ID4gKwo+ ID4gPiArICAgICAgICAgICBvZmZzZXQgfD0gZ2V0X29mZnNldF9tc2IoY29yZSwgaSk7Cj4gPiA+ ICsgICAgICAgICAgIGFtdmRlY19kc3RfYnVmX2RvbmVfaWR4KHNlc3MsIGJ1ZmZlcl9pbmRleCwg b2Zmc2V0LCBmaWVsZCk7Cj4gPiA+ICsgICB9Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRp YyBpcnFyZXR1cm5fdCBjb2RlY19oMjY0X3RocmVhZGVkX2lzcihzdHJ1Y3QgYW12ZGVjX3Nlc3Np b24gKnNlc3MpCj4gPiA+ICt7Cj4gPiA+ICsgICBzdHJ1Y3QgYW12ZGVjX2NvcmUgKmNvcmUgPSBz ZXNzLT5jb3JlOwo+ID4gPiArICAgdTMyIHN0YXR1czsKPiA+ID4gKyAgIHUzMiBzaXplOwo+ID4g PiArICAgdTggY21kOwo+ID4gPiArCj4gPiA+ICsgICBzdGF0dXMgPSBhbXZkZWNfcmVhZF9kb3Mo Y29yZSwgQVZfU0NSQVRDSF8wKTsKPiA+ID4gKyAgIGNtZCA9IHN0YXR1cyAmIENNRF9NQVNLOwo+ ID4gPiArCj4gPiA+ICsgICBzd2l0Y2ggKGNtZCkgewo+ID4gPiArICAgY2FzZSBDTURfU1JDX0NI QU5HRToKPiA+ID4gKyAgICAgICAgICAgY29kZWNfaDI2NF9zcmNfY2hhbmdlKHNlc3MpOwo+ID4g PiArICAgICAgICAgICBicmVhazsKPiA+ID4gKyAgIGNhc2UgQ01EX0ZSQU1FU19SRUFEWToKPiA+ ID4gKyAgICAgICAgICAgY29kZWNfaDI2NF9mcmFtZXNfcmVhZHkoc2Vzcywgc3RhdHVzKTsKPiA+ ID4gKyAgICAgICAgICAgYnJlYWs7Cj4gPiA+ICsgICBjYXNlIENNRF9GQVRBTF9FUlJPUjoKPiA+ ID4gKyAgICAgICAgICAgZGV2X2Vycihjb3JlLT5kZXYsICJILjI2NCBkZWNvZGVyIGZhdGFsIGVy cm9yXG4iKTsKPiA+ID4gKyAgICAgICAgICAgZ290byBhYm9ydDsKPiA+ID4gKyAgIGNhc2UgQ01E X0JBRF9XSURUSDoKPiA+ID4gKyAgICAgICAgICAgc2l6ZSA9IChhbXZkZWNfcmVhZF9kb3MoY29y ZSwgQVZfU0NSQVRDSF8xKSArIDEpICogMTY7Cj4gPiA+ICsgICAgICAgICAgIGRldl9lcnIoY29y ZS0+ZGV2LCAiVW5zdXBwb3J0ZWQgdmlkZW8gd2lkdGg6ICV1XG4iLCBzaXplKTsKPiA+ID4gKyAg ICAgICAgICAgZ290byBhYm9ydDsKPiA+ID4gKyAgIGNhc2UgQ01EX0JBRF9IRUlHSFQ6Cj4gPiA+ ICsgICAgICAgICAgIHNpemUgPSAoYW12ZGVjX3JlYWRfZG9zKGNvcmUsIEFWX1NDUkFUQ0hfMSkg KyAxKSAqIDE2Owo+ID4gPiArICAgICAgICAgICBkZXZfZXJyKGNvcmUtPmRldiwgIlVuc3VwcG9y dGVkIHZpZGVvIGhlaWdodDogJXVcbiIsIHNpemUpOwo+ID4gPiArICAgICAgICAgICBnb3RvIGFi b3J0Owo+ID4gPiArICAgY2FzZSAwOiAvKiBVbnVzZWQgYnV0IG5vdCB3b3J0aCBwcmludGluZyBm b3IgKi8KPiA+ID4gKyAgIGNhc2UgOToKPiA+ID4gKyAgICAgICAgICAgYnJlYWs7Cj4gPiA+ICsg ICBkZWZhdWx0Ogo+ID4gPiArICAgICAgICAgICBkZXZfaW5mbyhjb3JlLT5kZXYsICJVbmV4cGVj dGVkIEgyNjQgSVNSOiAlMDhYXG4iLCBjbWQpOwo+ID4gPiArICAgICAgICAgICBicmVhazsKPiA+ ID4gKyAgIH0KPiA+ID4gKwo+ID4gPiArICAgaWYgKGNtZCAmJiBjbWQgIT0gQ01EX1NSQ19DSEFO R0UpCj4gPiA+ICsgICAgICAgICAgIGFtdmRlY193cml0ZV9kb3MoY29yZSwgQVZfU0NSQVRDSF8w LCAwKTsKPiA+ID4gKwo+ID4gPiArICAgLyogRGVjb2RlciBoYXMgc29tZSBTRUkgZGF0YSBmb3Ig dXMgOyBpZ25vcmUgKi8KPiA+ID4gKyAgIGlmIChhbXZkZWNfcmVhZF9kb3MoY29yZSwgQVZfU0NS QVRDSF9KKSAmIFNFSV9EQVRBX1JFQURZKQo+ID4gPiArICAgICAgICAgICBhbXZkZWNfd3JpdGVf ZG9zKGNvcmUsIEFWX1NDUkFUQ0hfSiwgMCk7Cj4gPiA+ICsKPiA+ID4gKyAgIHJldHVybiBJUlFf SEFORExFRDsKPiA+ID4gK2Fib3J0Ogo+ID4gPiArICAgYW12ZGVjX2Fib3J0KHNlc3MpOwo+ID4g PiArICAgcmV0dXJuIElSUV9IQU5ETEVEOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMg aXJxcmV0dXJuX3QgY29kZWNfaDI2NF9pc3Ioc3RydWN0IGFtdmRlY19zZXNzaW9uICpzZXNzKQo+ ID4gPiArewo+ID4gPiArICAgc3RydWN0IGFtdmRlY19jb3JlICpjb3JlID0gc2Vzcy0+Y29yZTsK PiA+ID4gKwo+ID4gPiArICAgYW12ZGVjX3dyaXRlX2Rvcyhjb3JlLCBBU1NJU1RfTUJPWDFfQ0xS X1JFRywgMSk7Cj4gPiA+ICsKPiA+ID4gKyAgIHJldHVybiBJUlFfV0FLRV9USFJFQUQ7Cj4gPiA+ ICt9Cj4gPiA+ICsKPiA+ID4gK3N0cnVjdCBhbXZkZWNfY29kZWNfb3BzIGNvZGVjX2gyNjRfb3Bz ID0gewo+ID4gPiArICAgLnN0YXJ0ID0gY29kZWNfaDI2NF9zdGFydCwKPiA+ID4gKyAgIC5zdG9w ID0gY29kZWNfaDI2NF9zdG9wLAo+ID4gPiArICAgLmxvYWRfZXh0ZW5kZWRfZmlybXdhcmUgPSBj b2RlY19oMjY0X2xvYWRfZXh0ZW5kZWRfZmlybXdhcmUsCj4gPiA+ICsgICAuaXNyID0gY29kZWNf aDI2NF9pc3IsCj4gPiA+ICsgICAudGhyZWFkZWRfaXNyID0gY29kZWNfaDI2NF90aHJlYWRlZF9p c3IsCj4gPiA+ICsgICAuY2FuX3JlY3ljbGUgPSBjb2RlY19oMjY0X2Nhbl9yZWN5Y2xlLAo+ID4g PiArICAgLnJlY3ljbGUgPSBjb2RlY19oMjY0X3JlY3ljbGUsCj4gPiA+ICsgICAuZW9zX3NlcXVl bmNlID0gY29kZWNfaDI2NF9lb3Nfc2VxdWVuY2UsCj4gPiA+ICsgICAucmVzdW1lID0gY29kZWNf aDI2NF9yZXN1bWUsCj4gPiA+ICt9Owo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5n L21lZGlhL21lc29uL3ZkZWMvY29kZWNfaDI2NC5oIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL21l c29uL3ZkZWMvY29kZWNfaDI2NC5oCj4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uN2NiNGZiODZmZjM2Cj4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4g KysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvY29kZWNfaDI2NC5oCj4gPiA+ IEBAIC0wLDAgKzEsMTQgQEAKPiA+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wKyAqLwo+ID4gPiArLyoKPiA+ID4gKyAqIENvcHlyaWdodCAoQykgMjAxOSBCYXlMaWJyZSwg U0FTCj4gPiA+ICsgKiBBdXRob3I6IE1heGltZSBKb3VyZGFuIDxtam91cmRhbkBiYXlsaWJyZS5j b20+Cj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArI2lmbmRlZiBfX01FU09OX1ZERUNfQ09ERUNf SDI2NF9IXwo+ID4gPiArI2RlZmluZSBfX01FU09OX1ZERUNfQ09ERUNfSDI2NF9IXwo+ID4gPiAr Cj4gPiA+ICsjaW5jbHVkZSAidmRlYy5oIgo+ID4gPiArCj4gPiA+ICtleHRlcm4gc3RydWN0IGFt dmRlY19jb2RlY19vcHMgY29kZWNfaDI2NF9vcHM7Cj4gPiA+ICsKPiA+ID4gKyNlbmRpZgo+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvdmRlY19wbGF0 Zm9ybS5jIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvdmRlY19wbGF0Zm9ybS5j Cj4gPiA+IGluZGV4IGFjY2FkOGY4OTI5YS4uMDI1MzcxZmY4ZmFlIDEwMDY0NAo+ID4gPiAtLS0g YS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWVzb24vdmRlYy92ZGVjX3BsYXRmb3JtLmMKPiA+ID4g KysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL21lc29uL3ZkZWMvdmRlY19wbGF0Zm9ybS5jCj4g PiA+IEBAIC05LDkgKzksMjIgQEAKPiA+ID4KPiA+ID4gICNpbmNsdWRlICJ2ZGVjXzEuaCIKPiA+ ID4gICNpbmNsdWRlICJjb2RlY19tcGVnMTIuaCIKPiA+ID4gKyNpbmNsdWRlICJjb2RlY19oMjY0 LmgiCj4gPiA+Cj4gPiA+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGFtdmRlY19mb3JtYXQgdmRlY19m b3JtYXRzX2d4YmJbXSA9IHsKPiA+ID4gICAgIHsKPiA+ID4gKyAgICAgICAgICAgLnBpeGZtdCA9 IFY0TDJfUElYX0ZNVF9IMjY0LAo+ID4gPiArICAgICAgICAgICAubWluX2J1ZmZlcnMgPSAyLAo+ ID4gPiArICAgICAgICAgICAubWF4X2J1ZmZlcnMgPSAyNCwKPiA+ID4gKyAgICAgICAgICAgLm1h eF93aWR0aCA9IDE5MjAsCj4gPiA+ICsgICAgICAgICAgIC5tYXhfaGVpZ2h0ID0gMTA4MCwKPiA+ ID4gKyAgICAgICAgICAgLnZkZWNfb3BzID0gJnZkZWNfMV9vcHMsCj4gPiA+ICsgICAgICAgICAg IC5jb2RlY19vcHMgPSAmY29kZWNfaDI2NF9vcHMsCj4gPiA+ICsgICAgICAgICAgIC5maXJtd2Fy ZV9wYXRoID0gIm1lc29uL3ZkZWMvZ3hiYl9oMjY0LmJpbiIsCj4gPiA+ICsgICAgICAgICAgIC5w aXhmbXRzX2NhcCA9IHsgVjRMMl9QSVhfRk1UX05WMTJNLCAwIH0sCj4gPiA+ICsgICAgICAgICAg IC5mbGFncyA9IFY0TDJfRk1UX0ZMQUdfQ09NUFJFU1NFRCB8Cj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgIFY0TDJfRk1UX0ZMQUdfRFlOX1JFU09MVVRJT04sCj4gPiA+ICsgICB9LCB7Cj4gPiA+ ICAgICAgICAgICAgIC5waXhmbXQgPSBWNEwyX1BJWF9GTVRfTVBFRzEsCj4gPiA+ICAgICAgICAg ICAgIC5taW5fYnVmZmVycyA9IDgsCj4gPiA+ICAgICAgICAgICAgIC5tYXhfYnVmZmVycyA9IDgs Cj4gPiA+IEBAIC0zOCw2ICs1MSwxOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFtdmRlY19mb3Jt YXQgdmRlY19mb3JtYXRzX2d4YmJbXSA9IHsKPiA+ID4KPiA+ID4gIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgYW12ZGVjX2Zvcm1hdCB2ZGVjX2Zvcm1hdHNfZ3hsW10gPSB7Cj4gPiA+ICAgICB7Cj4gPiA+ ICsgICAgICAgICAgIC5waXhmbXQgPSBWNEwyX1BJWF9GTVRfSDI2NCwKPiA+ID4gKyAgICAgICAg ICAgLm1pbl9idWZmZXJzID0gMiwKPiA+ID4gKyAgICAgICAgICAgLm1heF9idWZmZXJzID0gMjQs Cj4gPiA+ICsgICAgICAgICAgIC5tYXhfd2lkdGggPSAzODQwLAo+ID4gPiArICAgICAgICAgICAu bWF4X2hlaWdodCA9IDIxNjAsCj4gPiA+ICsgICAgICAgICAgIC52ZGVjX29wcyA9ICZ2ZGVjXzFf b3BzLAo+ID4gPiArICAgICAgICAgICAuY29kZWNfb3BzID0gJmNvZGVjX2gyNjRfb3BzLAo+ID4g PiArICAgICAgICAgICAuZmlybXdhcmVfcGF0aCA9ICJtZXNvbi92ZGVjL2d4bF9oMjY0LmJpbiIs Cj4gPiA+ICsgICAgICAgICAgIC5waXhmbXRzX2NhcCA9IHsgVjRMMl9QSVhfRk1UX05WMTJNLCAw IH0sCj4gPiA+ICsgICAgICAgICAgIC5mbGFncyA9IFY0TDJfRk1UX0ZMQUdfQ09NUFJFU1NFRCB8 Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgIFY0TDJfRk1UX0ZMQUdfRFlOX1JFU09MVVRJT04s Cj4gPiA+ICsgICB9LCB7Cj4gPiA+ICAgICAgICAgICAgIC5waXhmbXQgPSBWNEwyX1BJWF9GTVRf TVBFRzEsCj4gPiA+ICAgICAgICAgICAgIC5taW5fYnVmZmVycyA9IDgsCj4gPiA+ICAgICAgICAg ICAgIC5tYXhfYnVmZmVycyA9IDgsCj4gPiA+IEBAIC02NCw2ICs4OSwxOCBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGFtdmRlY19mb3JtYXQgdmRlY19mb3JtYXRzX2d4bFtdID0gewo+ID4gPgo+ID4g PiAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbXZkZWNfZm9ybWF0IHZkZWNfZm9ybWF0c19neG1bXSA9 IHsKPiA+ID4gICAgIHsKPiA+ID4gKyAgICAgICAgICAgLnBpeGZtdCA9IFY0TDJfUElYX0ZNVF9I MjY0LAo+ID4gPiArICAgICAgICAgICAubWluX2J1ZmZlcnMgPSAyLAo+ID4gPiArICAgICAgICAg ICAubWF4X2J1ZmZlcnMgPSAyNCwKPiA+ID4gKyAgICAgICAgICAgLm1heF93aWR0aCA9IDM4NDAs Cj4gPiA+ICsgICAgICAgICAgIC5tYXhfaGVpZ2h0ID0gMjE2MCwKPiA+ID4gKyAgICAgICAgICAg LnZkZWNfb3BzID0gJnZkZWNfMV9vcHMsCj4gPiA+ICsgICAgICAgICAgIC5jb2RlY19vcHMgPSAm Y29kZWNfaDI2NF9vcHMsCj4gPiA+ICsgICAgICAgICAgIC5maXJtd2FyZV9wYXRoID0gIm1lc29u L3ZkZWMvZ3htX2gyNjQuYmluIiwKPiA+ID4gKyAgICAgICAgICAgLnBpeGZtdHNfY2FwID0geyBW NEwyX1BJWF9GTVRfTlYxMk0sIDAgfSwKPiA+ID4gKyAgICAgICAgICAgLmZsYWdzID0gVjRMMl9G TVRfRkxBR19DT01QUkVTU0VEIHwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgVjRMMl9GTVRf RkxBR19EWU5fUkVTT0xVVElPTiwKPiA+ID4gKyAgIH0sIHsKPiA+ID4gICAgICAgICAgICAgLnBp eGZtdCA9IFY0TDJfUElYX0ZNVF9NUEVHMSwKPiA+ID4gICAgICAgICAgICAgLm1pbl9idWZmZXJz ID0gOCwKPiA+ID4gICAgICAgICAgICAgLm1heF9idWZmZXJzID0gOCwKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFtbG9naWMgbWFpbGluZyBs aXN0CmxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFtbG9naWMK