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=-10.7 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 48A91C433DB for ; Wed, 27 Jan 2021 03:06:03 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id F0AFB205F4 for ; Wed, 27 Jan 2021 03:06:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F0AFB205F4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 715F96E11F; Wed, 27 Jan 2021 03:06:02 +0000 (UTC) Received: from us-smtp-delivery-44.mimecast.com (us-smtp-delivery-44.mimecast.com [205.139.111.44]) by gabe.freedesktop.org (Postfix) with ESMTPS id D8B386E11F for ; Wed, 27 Jan 2021 03:06:00 +0000 (UTC) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-262--C6ZmOYZNba24sRi0eKHBw-1; Tue, 26 Jan 2021 22:05:54 -0500 X-MC-Unique: -C6ZmOYZNba24sRi0eKHBw-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CBEE1107ACE4; Wed, 27 Jan 2021 03:05:53 +0000 (UTC) Received: from dreadlord-bne-redhat-com.bne.redhat.com (unknown [10.64.32.209]) by smtp.corp.redhat.com (Postfix) with ESMTP id DDB5160C05; Wed, 27 Jan 2021 03:05:51 +0000 (UTC) From: Dave Airlie To: intel-gfx@lists.freedesktop.org Date: Wed, 27 Jan 2021 13:05:39 +1000 Message-Id: <20210127030548.29296-2-airlied@gmail.com> In-Reply-To: <20210127030548.29296-1-airlied@gmail.com> References: <20210127030548.29296-1-airlied@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=airlied@gmail.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: gmail.com Subject: [Intel-gfx] [PATCH 01/10] drm/i915: refactor ddi translations into a separate file (v2) X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Dave Airlie Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClZpbGxlIHN1Z2dlc3RlZCB0 aGlzLCB0aGVzZSB0YWJsZXMgYXJlIHByb2JhYmx5IGJldHRlciBiZWluZwpzdGFuZGFsb25lLgoK VGhpcyBmaXhlcyB1cCB0aGUgY25sL2J4dCBpbnRlcmZhY2VzIHRvIGJlIGxpa2UgdGhlIG90aGVy cywKdGhlIGludGVsIG9uZSBJIGxlZnQgYWxvbmUgc2luY2UgaXQgaGFzIGEgZmV3IGV4dHJhIGVu dHJ5cG9pbnRzLgoKdjI6IGFkZCBiYWNrIG1pc3Npbmcgcm9ja2V0bGFrZSBiaXRzLgpSZXZpZXdl ZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KU2ln bmVkLW9mZi1ieTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgICAxICsKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgICAgICB8IDE0MTcgKy0tLS0tLS0tLS0t LS0tLS0KIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaV9idWZfdHJhbnMuYyAgICB8IDEz OTQgKysrKysrKysrKysrKysrKwogLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpX2J1Zl90 cmFucy5oICAgIHwgIDEwMCArKwogNCBmaWxlcyBjaGFuZ2VkLCAxNTA3IGluc2VydGlvbnMoKyks IDE0MDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kZGlfYnVmX3RyYW5zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaV9idWZfdHJhbnMuaAoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUKaW5kZXggZmZkM2ExNWYwY2ExLi4wZTk4Y2YyZWVjMzAgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlCkBAIC0yNDEsNiArMjQxLDcgQEAgaTkxNS15ICs9IFwKIAlkaXNwbGF5L2ljbF9kc2ku byBcCiAJZGlzcGxheS9pbnRlbF9jcnQubyBcCiAJZGlzcGxheS9pbnRlbF9kZGkubyBcCisJZGlz cGxheS9pbnRlbF9kZGlfYnVmX3RyYW5zLm8gXAogCWRpc3BsYXkvaW50ZWxfZHAubyBcCiAJZGlz cGxheS9pbnRlbF9kcF9hdXgubyBcCiAJZGlzcGxheS9pbnRlbF9kcF9hdXhfYmFja2xpZ2h0Lm8g XApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKaW5kZXggZmJkODU3ZjJi ZGIyLi4wMzY2MGZjNzBjZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGRpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k ZGkuYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgImludGVsX2NvbWJvX3BoeS5oIgogI2lu Y2x1ZGUgImludGVsX2Nvbm5lY3Rvci5oIgogI2luY2x1ZGUgImludGVsX2RkaS5oIgorI2luY2x1 ZGUgImludGVsX2RkaV9idWZfdHJhbnMuaCIKICNpbmNsdWRlICJpbnRlbF9kaXNwbGF5X3R5cGVz LmgiCiAjaW5jbHVkZSAiaW50ZWxfZHAuaCIKICNpbmNsdWRlICJpbnRlbF9kcF9tc3QuaCIKQEAg LTUzLDEyICs1NCw2IEBACiAjaW5jbHVkZSAiaW50ZWxfdmRzYy5oIgogI2luY2x1ZGUgImludGVs X3Zyci5oIgogCi1zdHJ1Y3QgZGRpX2J1Zl90cmFucyB7Ci0JdTMyIHRyYW5zMTsJLyogYmFsYW5j ZSBsZWcgZW5hYmxlLCBkZS1lbXBoIGxldmVsICovCi0JdTMyIHRyYW5zMjsJLyogdnJlZiBzZWws IHZzd2luZyAqLwotCXU4IGlfYm9vc3Q7CS8qIFNLTDogSV9ib29zdDsgdmFsaWQ6IDB4MCwgMHgx LCAweDMsIDB4NyAqLwotfTsKLQogc3RhdGljIGNvbnN0IHU4IGluZGV4X3RvX2RwX3NpZ25hbF9s ZXZlbHNbXSA9IHsKIAlbMF0gPSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5HX0xFVkVMXzAgfCBEUF9U UkFJTl9QUkVfRU1QSF9MRVZFTF8wLAogCVsxXSA9IERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVW RUxfMCB8IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzEsCkBAIC03MiwxMzg5ICs2NywxNSBAQCBz dGF0aWMgY29uc3QgdTggaW5kZXhfdG9fZHBfc2lnbmFsX2xldmVsc1tdID0gewogCVs5XSA9IERQ X1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMyB8IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzAs CiB9OwogCi0vKiBIRE1JL0RWSSBtb2RlcyBpZ25vcmUgZXZlcnl0aGluZyBidXQgdGhlIGxhc3Qg MiBpdGVtcy4gU28gd2Ugc2hhcmUKLSAqIHRoZW0gZm9yIGJvdGggRFAgYW5kIEZESSB0cmFuc3Bv cnRzLCBhbGxvd2luZyB0aG9zZSBwb3J0cyB0bwotICogYXV0b21hdGljYWxseSBhZGFwdCB0byBI RE1JIGNvbm5lY3Rpb25zIGFzIHdlbGwKLSAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVm X3RyYW5zIGhzd19kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7Ci0JeyAweDAwRkZGRkZGLCAweDAw MDYwMDBFLCAweDAgfSwKLQl7IDB4MDBENzVGRkYsIDB4MDAwNTAwMEEsIDB4MCB9LAotCXsgMHgw MEMzMEZGRiwgMHgwMDA0MDAwNiwgMHgwIH0sCi0JeyAweDgwQUFBRkZGLCAweDAwMEIwMDAwLCAw eDAgfSwKLQl7IDB4MDBGRkZGRkYsIDB4MDAwNTAwMEEsIDB4MCB9LAotCXsgMHgwMEQ3NUZGRiwg MHgwMDBDMDAwNCwgMHgwIH0sCi0JeyAweDgwQzMwRkZGLCAweDAwMEIwMDAwLCAweDAgfSwKLQl7 IDB4MDBGRkZGRkYsIDB4MDAwNDAwMDYsIDB4MCB9LAotCXsgMHg4MEQ3NUZGRiwgMHgwMDBCMDAw MCwgMHgwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgaHN3X2Rk aV90cmFuc2xhdGlvbnNfZmRpW10gPSB7Ci0JeyAweDAwRkZGRkZGLCAweDAwMDcwMDBFLCAweDAg fSwKLQl7IDB4MDBENzVGRkYsIDB4MDAwRjAwMEEsIDB4MCB9LAotCXsgMHgwMEMzMEZGRiwgMHgw MDA2MDAwNiwgMHgwIH0sCi0JeyAweDAwQUFBRkZGLCAweDAwMUUwMDAwLCAweDAgfSwKLQl7IDB4 MDBGRkZGRkYsIDB4MDAwRjAwMEEsIDB4MCB9LAotCXsgMHgwMEQ3NUZGRiwgMHgwMDE2MDAwNCwg MHgwIH0sCi0JeyAweDAwQzMwRkZGLCAweDAwMUUwMDAwLCAweDAgfSwKLQl7IDB4MDBGRkZGRkYs IDB4MDAwNjAwMDYsIDB4MCB9LAotCXsgMHgwMEQ3NUZGRiwgMHgwMDFFMDAwMCwgMHgwIH0sCi19 OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgaHN3X2RkaV90cmFuc2xhdGlv bnNfaGRtaVtdID0gewotCQkJCQkvKiBJZHgJTlQgbVYgZAlUIG1WIGQJZGIJKi8KLQl7IDB4MDBG RkZGRkYsIDB4MDAwNjAwMEUsIDB4MCB9LC8qIDA6CTQwMAk0MDAJMAkqLwotCXsgMHgwMEU3OUZG RiwgMHgwMDBFMDAwQywgMHgwIH0sLyogMToJNDAwCTUwMAkyCSovCi0JeyAweDAwRDc1RkZGLCAw eDAwMDUwMDBBLCAweDAgfSwvKiAyOgk0MDAJNjAwCTMuNQkqLwotCXsgMHgwMEZGRkZGRiwgMHgw MDA1MDAwQSwgMHgwIH0sLyogMzoJNjAwCTYwMAkwCSovCi0JeyAweDAwRTc5RkZGLCAweDAwMUQw MDA3LCAweDAgfSwvKiA0Ogk2MDAJNzUwCTIJKi8KLQl7IDB4MDBENzVGRkYsIDB4MDAwQzAwMDQs IDB4MCB9LC8qIDU6CTYwMAk5MDAJMy41CSovCi0JeyAweDAwRkZGRkZGLCAweDAwMDQwMDA2LCAw eDAgfSwvKiA2Ogk4MDAJODAwCTAJKi8KLQl7IDB4ODBFNzlGRkYsIDB4MDAwMzAwMDIsIDB4MCB9 LC8qIDc6CTgwMAkxMDAwCTIJKi8KLQl7IDB4MDBGRkZGRkYsIDB4MDAxNDAwMDUsIDB4MCB9LC8q IDg6CTg1MAk4NTAJMAkqLwotCXsgMHgwMEZGRkZGRiwgMHgwMDBDMDAwNCwgMHgwIH0sLyogOToJ OTAwCTkwMAkwCSovCi0JeyAweDAwRkZGRkZGLCAweDAwMUMwMDAzLCAweDAgfSwvKiAxMDoJOTUw CTk1MAkwCSovCi0JeyAweDgwRkZGRkZGLCAweDAwMDMwMDAyLCAweDAgfSwvKiAxMToJMTAwMAkx MDAwCTAJKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBiZHdfZGRp X3RyYW5zbGF0aW9uc19lZHBbXSA9IHsKLQl7IDB4MDBGRkZGRkYsIDB4MDAwMDAwMTIsIDB4MCB9 LAotCXsgMHgwMEVCQUZGRiwgMHgwMDAyMDAxMSwgMHgwIH0sCi0JeyAweDAwQzcxRkZGLCAweDAw MDYwMDBGLCAweDAgfSwKLQl7IDB4MDBBQUFGRkYsIDB4MDAwRTAwMEEsIDB4MCB9LAotCXsgMHgw MEZGRkZGRiwgMHgwMDAyMDAxMSwgMHgwIH0sCi0JeyAweDAwREI2RkZGLCAweDAwMDUwMDBGLCAw eDAgfSwKLQl7IDB4MDBCRUVGRkYsIDB4MDAwQTAwMEMsIDB4MCB9LAotCXsgMHgwMEZGRkZGRiwg MHgwMDA1MDAwRiwgMHgwIH0sCi0JeyAweDAwREI2RkZGLCAweDAwMEEwMDBDLCAweDAgfSwKLX07 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBiZHdfZGRpX3RyYW5zbGF0aW9u c19kcFtdID0gewotCXsgMHgwMEZGRkZGRiwgMHgwMDA3MDAwRSwgMHgwIH0sCi0JeyAweDAwRDc1 RkZGLCAweDAwMEUwMDBBLCAweDAgfSwKLQl7IDB4MDBCRUZGRkYsIDB4MDAxNDAwMDYsIDB4MCB9 LAotCXsgMHg4MEIyQ0ZGRiwgMHgwMDFCMDAwMiwgMHgwIH0sCi0JeyAweDAwRkZGRkZGLCAweDAw MEUwMDBBLCAweDAgfSwKLQl7IDB4MDBEQjZGRkYsIDB4MDAxNjAwMDUsIDB4MCB9LAotCXsgMHg4 MEM3MUZGRiwgMHgwMDFBMDAwMiwgMHgwIH0sCi0JeyAweDAwRjdERkZGLCAweDAwMTgwMDA0LCAw eDAgfSwKLQl7IDB4ODBENzVGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LAotfTsKLQotc3RhdGljIGNv bnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRpb25zX2ZkaVtdID0gewot CXsgMHgwMEZGRkZGRiwgMHgwMDAxMDAwRSwgMHgwIH0sCi0JeyAweDAwRDc1RkZGLCAweDAwMDQw MDBBLCAweDAgfSwKLQl7IDB4MDBDMzBGRkYsIDB4MDAwNzAwMDYsIDB4MCB9LAotCXsgMHgwMEFB QUZGRiwgMHgwMDBDMDAwMCwgMHgwIH0sCi0JeyAweDAwRkZGRkZGLCAweDAwMDQwMDBBLCAweDAg fSwKLQl7IDB4MDBENzVGRkYsIDB4MDAwOTAwMDQsIDB4MCB9LAotCXsgMHgwMEMzMEZGRiwgMHgw MDBDMDAwMCwgMHgwIH0sCi0JeyAweDAwRkZGRkZGLCAweDAwMDcwMDA2LCAweDAgfSwKLQl7IDB4 MDBENzVGRkYsIDB4MDAwQzAwMDAsIDB4MCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBk ZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRpb25zX2hkbWlbXSA9IHsKLQkJCQkJLyogSWR4 CU5UIG1WIGQJVCBtViBkZglkYgkqLwotCXsgMHgwMEZGRkZGRiwgMHgwMDA3MDAwRSwgMHgwIH0s LyogMDoJNDAwCTQwMAkwCSovCi0JeyAweDAwRDc1RkZGLCAweDAwMEUwMDBBLCAweDAgfSwvKiAx Ogk0MDAJNjAwCTMuNQkqLwotCXsgMHgwMEJFRkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sLyogMjoJ NDAwCTgwMAk2CSovCi0JeyAweDAwRkZGRkZGLCAweDAwMDkwMDBELCAweDAgfSwvKiAzOgk0NTAJ NDUwCTAJKi8KLQl7IDB4MDBGRkZGRkYsIDB4MDAwRTAwMEEsIDB4MCB9LC8qIDQ6CTYwMAk2MDAJ MAkqLwotCXsgMHgwMEQ3RkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sLyogNToJNjAwCTgwMAkyLjUJ Ki8KLQl7IDB4ODBDQjJGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LC8qIDY6CTYwMAkxMDAwCTQuNQkq LwotCXsgMHgwMEZGRkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sLyogNzoJODAwCTgwMAkwCSovCi0J eyAweDgwRTc5RkZGLCAweDAwMUIwMDAyLCAweDAgfSwvKiA4Ogk4MDAJMTAwMAkyCSovCi0JeyAw eDgwRkZGRkZGLCAweDAwMUIwMDAyLCAweDAgfSwvKiA5OgkxMDAwCTEwMDAJMAkqLwotfTsKLQot LyogU2t5bGFrZSBIIGFuZCBTICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMg c2tsX2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKLQl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwQTAs IDB4MCB9LAotCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA5QiwgMHgwIH0sCi0JeyAweDAwMDA3MDEx LCAweDAwMDAwMDg4LCAweDAgfSwKLQl7IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzAsIDB4MSB9LAot CXsgMHgwMDAwMjAxNiwgMHgwMDAwMDA5QiwgMHgwIH0sCi0JeyAweDAwMDA1MDEyLCAweDAwMDAw MDg4LCAweDAgfSwKLQl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MSB9LAotCXsgMHgwMDAw MjAxNiwgMHgwMDAwMDBERiwgMHgwIH0sCi0JeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDEg fSwKLX07Ci0KLS8qIFNreWxha2UgVSAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3Ry YW5zIHNrbF91X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKLQl7IDB4MDAwMDIwMUIsIDB4MDAw MDAwQTIsIDB4MCB9LAotCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwgMHgwIH0sCi0JeyAweDgw MDA3MDExLCAweDAwMDAwMENELCAweDEgfSwKLQl7IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzAsIDB4 MSB9LAotCXsgMHgwMDAwMjAxQiwgMHgwMDAwMDA5RCwgMHgwIH0sCi0JeyAweDgwMDA1MDEyLCAw eDAwMDAwMEMwLCAweDEgfSwKLQl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MSB9LAotCXsg MHgwMDAwMjAxNiwgMHgwMDAwMDA4OCwgMHgwIH0sCi0JeyAweDgwMDA1MDEyLCAweDAwMDAwMEMw LCAweDEgfSwKLX07Ci0KLS8qIFNreWxha2UgWSAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlf YnVmX3RyYW5zIHNrbF95X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKLQl7IDB4MDAwMDAwMTgs IDB4MDAwMDAwQTIsIDB4MCB9LAotCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwgMHgwIH0sCi0J eyAweDgwMDA3MDExLCAweDAwMDAwMENELCAweDMgfSwKLQl7IDB4ODAwMDkwMTAsIDB4MDAwMDAw QzAsIDB4MyB9LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA5RCwgMHgwIH0sCi0JeyAweDgwMDA1 MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MyB9 LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA4OCwgMHgwIH0sCi0JeyAweDgwMDA1MDEyLCAweDAw MDAwMEMwLCAweDMgfSwKLX07Ci0KLS8qIEthYnlsYWtlIEggYW5kIFMgKi8KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBrYmxfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0gewotCXsg MHgwMDAwMjAxNiwgMHgwMDAwMDBBMCwgMHgwIH0sCi0JeyAweDAwMDA1MDEyLCAweDAwMDAwMDlC LCAweDAgfSwKLQl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwODgsIDB4MCB9LAotCXsgMHg4MDAwOTAx MCwgMHgwMDAwMDBDMCwgMHgxIH0sCi0JeyAweDAwMDAyMDE2LCAweDAwMDAwMDlCLCAweDAgfSwK LQl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwODgsIDB4MCB9LAotCXsgMHg4MDAwNzAxMSwgMHgwMDAw MDBDMCwgMHgxIH0sCi0JeyAweDAwMDAyMDE2LCAweDAwMDAwMDk3LCAweDAgfSwKLQl7IDB4ODAw MDUwMTIsIDB4MDAwMDAwQzAsIDB4MSB9LAotfTsKLQotLyogS2FieWxha2UgVSAqLwotc3RhdGlj IGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGtibF91X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9 IHsKLQl7IDB4MDAwMDIwMUIsIDB4MDAwMDAwQTEsIDB4MCB9LAotCXsgMHgwMDAwNTAxMiwgMHgw MDAwMDA4OCwgMHgwIH0sCi0JeyAweDgwMDA3MDExLCAweDAwMDAwMENELCAweDMgfSwKLQl7IDB4 ODAwMDkwMTAsIDB4MDAwMDAwQzAsIDB4MyB9LAotCXsgMHgwMDAwMjAxQiwgMHgwMDAwMDA5RCwg MHgwIH0sCi0JeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4ODAwMDcwMTEs IDB4MDAwMDAwQzAsIDB4MyB9LAotCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDA0RiwgMHgwIH0sCi0J eyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKLX07Ci0KLS8qIEthYnlsYWtlIFkgKi8K LXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBrYmxfeV9kZGlfdHJhbnNsYXRpb25z X2RwW10gPSB7Ci0JeyAweDAwMDAxMDE3LCAweDAwMDAwMEExLCAweDAgfSwKLQl7IDB4MDAwMDUw MTIsIDB4MDAwMDAwODgsIDB4MCB9LAotCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDRCwgMHgzIH0s Ci0JeyAweDgwMDA4MDBGLCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4MDAwMDEwMTcsIDB4MDAw MDAwOUQsIDB4MCB9LAotCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgzIH0sCi0JeyAweDgw MDA3MDExLCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4MDAwMDEwMTcsIDB4MDAwMDAwNEMsIDB4 MCB9LAotCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgzIH0sCi19OwotCi0vKgotICogU2t5 bGFrZS9LYWJ5bGFrZSBIIGFuZCBTCi0gKiBlRFAgMS40IGxvdyB2c3dpbmcgdHJhbnNsYXRpb24g cGFyYW1ldGVycwotICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX2Rk aV90cmFuc2xhdGlvbnNfZWRwW10gPSB7Ci0JeyAweDAwMDAwMDE4LCAweDAwMDAwMEE4LCAweDAg fSwKLQl7IDB4MDAwMDQwMTMsIDB4MDAwMDAwQTksIDB4MCB9LAotCXsgMHgwMDAwNzAxMSwgMHgw MDAwMDBBMiwgMHgwIH0sCi0JeyAweDAwMDA5MDEwLCAweDAwMDAwMDlDLCAweDAgfSwKLQl7IDB4 MDAwMDAwMTgsIDB4MDAwMDAwQTksIDB4MCB9LAotCXsgMHgwMDAwNjAxMywgMHgwMDAwMDBBMiwg MHgwIH0sCi0JeyAweDAwMDA3MDExLCAweDAwMDAwMEE2LCAweDAgfSwKLQl7IDB4MDAwMDAwMTgs IDB4MDAwMDAwQUIsIDB4MCB9LAotCXsgMHgwMDAwNzAxMywgMHgwMDAwMDA5RiwgMHgwIH0sCi0J eyAweDAwMDAwMDE4LCAweDAwMDAwMERGLCAweDAgfSwKLX07Ci0KLS8qCi0gKiBTa3lsYWtlL0th YnlsYWtlIFUKLSAqIGVEUCAxLjQgbG93IHZzd2luZyB0cmFuc2xhdGlvbiBwYXJhbWV0ZXJzCi0g Ki8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfdV9kZGlfdHJhbnNsYXRp b25zX2VkcFtdID0gewotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBOCwgMHgwIH0sCi0JeyAweDAw MDA0MDEzLCAweDAwMDAwMEE5LCAweDAgfSwKLQl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwQTIsIDB4 MCB9LAotCXsgMHgwMDAwOTAxMCwgMHgwMDAwMDA5QywgMHgwIH0sCi0JeyAweDAwMDAwMDE4LCAw eDAwMDAwMEE5LCAweDAgfSwKLQl7IDB4MDAwMDYwMTMsIDB4MDAwMDAwQTIsIDB4MCB9LAotCXsg MHgwMDAwNzAxMSwgMHgwMDAwMDBBNiwgMHgwIH0sCi0JeyAweDAwMDAyMDE2LCAweDAwMDAwMEFC LCAweDAgfSwKLQl7IDB4MDAwMDUwMTMsIDB4MDAwMDAwOUYsIDB4MCB9LAotCXsgMHgwMDAwMDAx OCwgMHgwMDAwMDBERiwgMHgwIH0sCi19OwotCi0vKgotICogU2t5bGFrZS9LYWJ5bGFrZSBZCi0g KiBlRFAgMS40IGxvdyB2c3dpbmcgdHJhbnNsYXRpb24gcGFyYW1ldGVycwotICovCi1zdGF0aWMg Y29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19lZHBbXSA9 IHsKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTgsIDB4MCB9LAotCXsgMHgwMDAwNDAxMywgMHgw MDAwMDBBQiwgMHgwIH0sCi0JeyAweDAwMDA3MDExLCAweDAwMDAwMEE0LCAweDAgfSwKLQl7IDB4 MDAwMDkwMTAsIDB4MDAwMDAwREYsIDB4MCB9LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBQSwg MHgwIH0sCi0JeyAweDAwMDA2MDEzLCAweDAwMDAwMEE0LCAweDAgfSwKLQl7IDB4MDAwMDcwMTEs IDB4MDAwMDAwOUQsIDB4MCB9LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBMCwgMHgwIH0sCi0J eyAweDAwMDA2MDEyLCAweDAwMDAwMERGLCAweDAgfSwKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAw OEEsIDB4MCB9LAotfTsKLQotLyogU2t5bGFrZS9LYWJ5bGFrZSBVLCBIIGFuZCBTICovCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX2RkaV90cmFuc2xhdGlvbnNfaGRtaVtd ID0gewotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBQywgMHgwIH0sCi0JeyAweDAwMDA1MDEyLCAw eDAwMDAwMDlELCAweDAgfSwKLQl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwODgsIDB4MCB9LAotCXsg MHgwMDAwMDAxOCwgMHgwMDAwMDBBMSwgMHgwIH0sCi0JeyAweDAwMDAwMDE4LCAweDAwMDAwMDk4 LCAweDAgfSwKLQl7IDB4MDAwMDQwMTMsIDB4MDAwMDAwODgsIDB4MCB9LAotCXsgMHg4MDAwNjAx MiwgMHgwMDAwMDBDRCwgMHgxIH0sCi0JeyAweDAwMDAwMDE4LCAweDAwMDAwMERGLCAweDAgfSwK LQl7IDB4ODAwMDMwMTUsIDB4MDAwMDAwQ0QsIDB4MSB9LAkvKiBEZWZhdWx0ICovCi0JeyAweDgw MDAzMDE1LCAweDAwMDAwMEMwLCAweDEgfSwKLQl7IDB4ODAwMDAwMTgsIDB4MDAwMDAwQzAsIDB4 MSB9LAotfTsKLQotLyogU2t5bGFrZS9LYWJ5bGFrZSBZICovCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGRkaV9idWZfdHJhbnMgc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19oZG1pW10gPSB7Ci0JeyAweDAw MDAwMDE4LCAweDAwMDAwMEExLCAweDAgfSwKLQl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwREYsIDB4 MCB9LAotCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDQiwgMHgzIH0sCi0JeyAweDAwMDAwMDE4LCAw eDAwMDAwMEE0LCAweDAgfSwKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwOUQsIDB4MCB9LAotCXsg MHgwMDAwNDAxMywgMHgwMDAwMDA4MCwgMHgwIH0sCi0JeyAweDgwMDA2MDEzLCAweDAwMDAwMEMw LCAweDMgfSwKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwOEEsIDB4MCB9LAotCXsgMHg4MDAwMzAx NSwgMHgwMDAwMDBDMCwgMHgzIH0sCS8qIERlZmF1bHQgKi8KLQl7IDB4ODAwMDMwMTUsIDB4MDAw MDAwQzAsIDB4MyB9LAotCXsgMHg4MDAwMDAxOCwgMHgwMDAwMDBDMCwgMHgzIH0sCi19OwotCi1z dHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgewotCXU4IG1hcmdpbjsJLyogc3dpbmcgdmFsdWUgKi8K LQl1OCBzY2FsZTsJLyogc2NhbGUgdmFsdWUgKi8KLQl1OCBlbmFibGU7CS8qIHNjYWxlIGVuYWJs ZSAqLwotCXU4IGRlZW1waGFzaXM7Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlf YnVmX3RyYW5zIGJ4dF9kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7Ci0JCQkJCS8qIElkeAlOVCBt ViBkaWZmCWRiICAqLwotCXsgNTIsICAweDlBLCAwLCAxMjgsIH0sCS8qIDA6CTQwMAkJMCAgICov Ci0JeyA3OCwgIDB4OUEsIDAsIDg1LCAgfSwJLyogMToJNDAwCQkzLjUgKi8KLQl7IDEwNCwgMHg5 QSwgMCwgNjQsICB9LAkvKiAyOgk0MDAJCTYgICAqLwotCXsgMTU0LCAweDlBLCAwLCA0MywgIH0s CS8qIDM6CTQwMAkJOS41ICovCi0JeyA3NywgIDB4OUEsIDAsIDEyOCwgfSwJLyogNDoJNjAwCQkw ICAgKi8KLQl7IDExNiwgMHg5QSwgMCwgODUsICB9LAkvKiA1Ogk2MDAJCTMuNSAqLwotCXsgMTU0 LCAweDlBLCAwLCA2NCwgIH0sCS8qIDY6CTYwMAkJNiAgICovCi0JeyAxMDIsIDB4OUEsIDAsIDEy OCwgfSwJLyogNzoJODAwCQkwICAgKi8KLQl7IDE1NCwgMHg5QSwgMCwgODUsICB9LAkvKiA4Ogk4 MDAJCTMuNSAqLwotCXsgMTU0LCAweDlBLCAxLCAxMjgsIH0sCS8qIDk6CTEyMDAJCTAgICAqLwot fTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFucyBieHRfZGRpX3RyYW5z bGF0aW9uc19lZHBbXSA9IHsKLQkJCQkJLyogSWR4CU5UIG1WIGRpZmYJZGIgICovCi0JeyAyNiwg MCwgMCwgMTI4LCB9LAkvKiAwOgkyMDAJCTAgICAqLwotCXsgMzgsIDAsIDAsIDExMiwgfSwJLyog MToJMjAwCQkxLjUgKi8KLQl7IDQ4LCAwLCAwLCA5NiwgIH0sCS8qIDI6CTIwMAkJNCAgICovCi0J eyA1NCwgMCwgMCwgNjksICB9LAkvKiAzOgkyMDAJCTYgICAqLwotCXsgMzIsIDAsIDAsIDEyOCwg fSwJLyogNDoJMjUwCQkwICAgKi8KLQl7IDQ4LCAwLCAwLCAxMDQsIH0sCS8qIDU6CTI1MAkJMS41 ICovCi0JeyA1NCwgMCwgMCwgODUsICB9LAkvKiA2OgkyNTAJCTQgICAqLwotCXsgNDMsIDAsIDAs IDEyOCwgfSwJLyogNzoJMzAwCQkwICAgKi8KLQl7IDU0LCAwLCAwLCAxMDEsIH0sCS8qIDg6CTMw MAkJMS41ICovCi0JeyA0OCwgMCwgMCwgMTI4LCB9LAkvKiA5OgkzMDAJCTAgICAqLwotfTsKLQot LyogQlNwZWMgaGFzIDIgcmVjb21tZW5kZWQgdmFsdWVzIC0gZW50cmllcyAwIGFuZCA4LgotICog VXNpbmcgdGhlIGVudHJ5IHdpdGggaGlnaGVyIHZzd2luZy4KLSAqLwotc3RhdGljIGNvbnN0IHN0 cnVjdCBieHRfZGRpX2J1Zl90cmFucyBieHRfZGRpX3RyYW5zbGF0aW9uc19oZG1pW10gPSB7Ci0J CQkJCS8qIElkeAlOVCBtViBkaWZmCWRiICAqLwotCXsgNTIsICAweDlBLCAwLCAxMjgsIH0sCS8q IDA6CTQwMAkJMCAgICovCi0JeyA1MiwgIDB4OUEsIDAsIDg1LCAgfSwJLyogMToJNDAwCQkzLjUg Ki8KLQl7IDUyLCAgMHg5QSwgMCwgNjQsICB9LAkvKiAyOgk0MDAJCTYgICAqLwotCXsgNDIsICAw eDlBLCAwLCA0MywgIH0sCS8qIDM6CTQwMAkJOS41ICovCi0JeyA3NywgIDB4OUEsIDAsIDEyOCwg fSwJLyogNDoJNjAwCQkwICAgKi8KLQl7IDc3LCAgMHg5QSwgMCwgODUsICB9LAkvKiA1Ogk2MDAJ CTMuNSAqLwotCXsgNzcsICAweDlBLCAwLCA2NCwgIH0sCS8qIDY6CTYwMAkJNiAgICovCi0JeyAx MDIsIDB4OUEsIDAsIDEyOCwgfSwJLyogNzoJODAwCQkwICAgKi8KLQl7IDEwMiwgMHg5QSwgMCwg ODUsICB9LAkvKiA4Ogk4MDAJCTMuNSAqLwotCXsgMTU0LCAweDlBLCAxLCAxMjgsIH0sCS8qIDk6 CTEyMDAJCTAgICAqLwotfTsKLQotc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIHsKLQl1OCBkdzJf c3dpbmdfc2VsOwotCXU4IGR3N19uX3NjYWxhcjsKLQl1OCBkdzRfY3Vyc29yX2NvZWZmOwotCXU4 IGR3NF9wb3N0X2N1cnNvcl8yOwotCXU4IGR3NF9wb3N0X2N1cnNvcl8xOwotfTsKLQotLyogVm9s dGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMC44NVYgZm9yIERQICovCi1zdGF0aWMg Y29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2RwXzBf ODVWW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwotCXsgMHhBLCAweDVE LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCi0JeyAweEEs IDB4NkEsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KLQl7 IDB4QiwgMHg3QSwgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAq LwotCXsgMHg2LCAweDdDLCAweDJELCAweDAwLCAweDEyIH0sCS8qIDM1MCAgIDkwMCAgICAgIDgu MiAgICovCi0JeyAweEEsIDB4NjksIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAg ICAgMC4wICAgKi8KLQl7IDB4QiwgMHg3QSwgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA1MDAgICA3 MDAgICAgICAyLjkgICAqLwotCXsgMHg2LCAweDdDLCAweDMwLCAweDAwLCAweDBGIH0sCS8qIDUw MCAgIDkwMCAgICAgIDUuMSAgICovCi0JeyAweEIsIDB4N0QsIDB4M0MsIDB4MDAsIDB4MDMgfSwJ LyogNjUwICAgNzI1ICAgICAgMC45ICAgKi8KLQl7IDB4NiwgMHg3QywgMHgzNCwgMHgwMCwgMHgw QiB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwotCXsgMHg2LCAweDdCLCAweDNGLCAweDAw LCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCi19OwotCi0vKiBWb2x0YWdlIFN3 aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjg1ViBmb3IgSERNSSAqLwotc3RhdGljIGNvbnN0 IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19oZG1pXzBfODVW W10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwotCXsgMHhBLCAweDYwLCAw eDNGLCAweDAwLCAweDAwIH0sCS8qIDQ1MCAgIDQ1MCAgICAgIDAuMCAgICovCi0JeyAweEIsIDB4 NzMsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNDUwICAgNjUwICAgICAgMy4yICAgKi8KLQl7IDB4 NiwgMHg3RiwgMHgzMSwgMHgwMCwgMHgwRSB9LAkvKiA0NTAgICA4NTAgICAgICA1LjUgICAqLwot CXsgMHhCLCAweDczLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDY1MCAgIDY1MCAgICAgIDAuMCAg ICovCi0JeyAweDYsIDB4N0YsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogNjUwICAgODUwICAgICAg Mi4zICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA4NTAgICA4NTAg ICAgICAwLjAgICAqLwotCXsgMHg2LCAweDdGLCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYwMCAg IDg1MCAgICAgIDMuMCAgICovCi19OwotCi0vKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZv ciBWY2NJTyAwLjg1ViBmb3IgZURQICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVm X3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8wXzg1VltdID0gewotCQkJCQkJLyogTlQg bVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHg2NiwgMHgzQSwgMHgwMCwgMHgwNSB9LAkv KiAzODQgICA1MDAgICAgICAyLjMgICAqLwotCXsgMHgwLCAweDdGLCAweDM4LCAweDAwLCAweDA3 IH0sCS8qIDE1MyAgIDIwMCAgICAgIDIuMyAgICovCi0JeyAweDgsIDB4N0YsIDB4MzgsIDB4MDAs IDB4MDcgfSwJLyogMTkyICAgMjUwICAgICAgMi4zICAgKi8KLQl7IDB4MSwgMHg3RiwgMHgzOCwg MHgwMCwgMHgwNyB9LAkvKiAyMzAgICAzMDAgICAgICAyLjMgICAqLwotCXsgMHg5LCAweDdGLCAw eDM4LCAweDAwLCAweDA3IH0sCS8qIDI2OSAgIDM1MCAgICAgIDIuMyAgICovCi0JeyAweEEsIDB4 NjYsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNDQ2ICAgNTAwICAgICAgMS4wICAgKi8KLQl7IDB4 QiwgMHg3MCwgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA0NjAgICA2MDAgICAgICAyLjMgICAqLwot CXsgMHhDLCAweDc1LCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDUzNyAgIDcwMCAgICAgIDIuMyAg ICovCi0JeyAweDIsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDAwICAgNDAwICAgICAg MC4wICAgKi8KLX07Ci0KLS8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDAu OTVWIGZvciBEUCAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxf ZGRpX3RyYW5zbGF0aW9uc19kcF8wXzk1VltdID0gewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYg ZGIgICAgKi8KLQl7IDB4QSwgMHg1RCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAg ICAgICAwLjAgICAqLwotCXsgMHhBLCAweDZBLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDM1MCAg IDUwMCAgICAgIDMuMSAgICovCi0JeyAweEIsIDB4N0EsIDB4MzIsIDB4MDAsIDB4MEQgfSwJLyog MzUwICAgNzAwICAgICAgNi4wICAgKi8KLQl7IDB4NiwgMHg3QywgMHgyRCwgMHgwMCwgMHgxMiB9 LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLwotCXsgMHhBLCAweDY5LCAweDNGLCAweDAwLCAw eDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCi0JeyAweEIsIDB4N0EsIDB4MzYsIDB4 MDAsIDB4MDkgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KLQl7IDB4NiwgMHg3QywgMHgz MCwgMHgwMCwgMHgwRiB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLwotCXsgMHhCLCAweDdE LCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcyNSAgICAgIDAuOSAgICovCi0JeyAweDYs IDB4N0MsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KLQl7 IDB4NiwgMHg3QiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAq LwotfTsKLQotLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMC45NVYgZm9y IEhETUkgKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90 cmFuc2xhdGlvbnNfaGRtaV8wXzk1VltdID0gewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIg ICAgKi8KLQl7IDB4QSwgMHg1QywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0MDAgICA0MDAgICAg ICAwLjAgICAqLwotCXsgMHhCLCAweDY5LCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDQwMCAgIDYw MCAgICAgIDMuNSAgICovCi0JeyAweDUsIDB4NzYsIDB4MzEsIDB4MDAsIDB4MEUgfSwJLyogNDAw ICAgODAwICAgICAgNi4wICAgKi8KLQl7IDB4QSwgMHg1RSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkv KiA0NTAgICA0NTAgICAgICAwLjAgICAqLwotCXsgMHhCLCAweDY5LCAweDNGLCAweDAwLCAweDAw IH0sCS8qIDYwMCAgIDYwMCAgICAgIDAuMCAgICovCi0JeyAweEIsIDB4NzksIDB4MzUsIDB4MDAs IDB4MEEgfSwJLyogNjAwICAgODUwICAgICAgMy4wICAgKi8KLQl7IDB4NiwgMHg3RCwgMHgzMiwg MHgwMCwgMHgwRCB9LAkvKiA2MDAgICAxMDAwICAgICA0LjQgICAqLwotCXsgMHg1LCAweDc2LCAw eDNGLCAweDAwLCAweDAwIH0sCS8qIDgwMCAgIDgwMCAgICAgIDAuMCAgICovCi0JeyAweDYsIDB4 N0QsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogODAwICAgMTAwMCAgICAgMS45ICAgKi8KLQl7IDB4 NiwgMHg3RiwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA4NTAgICAxMDUwICAgICAxLjggICAqLwot CXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEwNTAgIDEwNTAgICAgIDAuMCAg ICovCi19OwotCi0vKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjk1ViBm b3IgZURQICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlf dHJhbnNsYXRpb25zX2VkcF8wXzk1VltdID0gewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIg ICAgKi8KLQl7IDB4QSwgMHg2MSwgMHgzQSwgMHgwMCwgMHgwNSB9LAkvKiAzODQgICA1MDAgICAg ICAyLjMgICAqLwotCXsgMHgwLCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDE1MyAgIDIw MCAgICAgIDIuMyAgICovCi0JeyAweDgsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMTky ICAgMjUwICAgICAgMi4zICAgKi8KLQl7IDB4MSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkv KiAyMzAgICAzMDAgICAgICAyLjMgICAqLwotCXsgMHg5LCAweDdGLCAweDM4LCAweDAwLCAweDA3 IH0sCS8qIDI2OSAgIDM1MCAgICAgIDIuMyAgICovCi0JeyAweEEsIDB4NjEsIDB4M0MsIDB4MDAs IDB4MDMgfSwJLyogNDQ2ICAgNTAwICAgICAgMS4wICAgKi8KLQl7IDB4QiwgMHg2OCwgMHgzOSwg MHgwMCwgMHgwNiB9LAkvKiA0NjAgICA2MDAgICAgICAyLjMgICAqLwotCXsgMHhDLCAweDZFLCAw eDM5LCAweDAwLCAweDA2IH0sCS8qIDUzNyAgIDcwMCAgICAgIDIuMyAgICovCi0JeyAweDQsIDB4 N0YsIDB4M0EsIDB4MDAsIDB4MDUgfSwJLyogNDYwICAgNjAwICAgICAgMi4zICAgKi8KLQl7IDB4 MiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0MDAgICA0MDAgICAgICAwLjAgICAqLwot fTsKLQotLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMS4wNVYgZm9yIERQ ICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJhbnNs YXRpb25zX2RwXzFfMDVWW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwot CXsgMHhBLCAweDU4LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAgIDQwMCAgICAgIDAuMCAg ICovCi0JeyAweEIsIDB4NjQsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogNDAwICAgNjAwICAgICAg My41ICAgKi8KLQl7IDB4NSwgMHg3MCwgMHgzMSwgMHgwMCwgMHgwRSB9LAkvKiA0MDAgICA4MDAg ICAgICA2LjAgICAqLwotCXsgMHg2LCAweDdGLCAweDJDLCAweDAwLCAweDEzIH0sCS8qIDQwMCAg IDEwNTAgICAgIDguNCAgICovCi0JeyAweEIsIDB4NjQsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyog NjAwICAgNjAwICAgICAgMC4wICAgKi8KLQl7IDB4NSwgMHg3MywgMHgzNSwgMHgwMCwgMHgwQSB9 LAkvKiA2MDAgICA4NTAgICAgICAzLjAgICAqLwotCXsgMHg2LCAweDdGLCAweDMwLCAweDAwLCAw eDBGIH0sCS8qIDU1MCAgIDEwNTAgICAgIDUuNiAgICovCi0JeyAweDUsIDB4NzYsIDB4M0UsIDB4 MDAsIDB4MDEgfSwJLyogODUwICAgOTAwICAgICAgMC41ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgz NiwgMHgwMCwgMHgwOSB9LAkvKiA3NTAgICAxMDUwICAgICAyLjkgICAqLwotCXsgMHg2LCAweDdG LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEwNTAgIDEwNTAgICAgIDAuMCAgICovCi19OwotCi0v KiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAxLjA1ViBmb3IgSERNSSAqLwot c3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9u c19oZG1pXzFfMDVWW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwotCXsg MHhBLCAweDU4LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAgIDQwMCAgICAgIDAuMCAgICov Ci0JeyAweEIsIDB4NjQsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogNDAwICAgNjAwICAgICAgMy41 ICAgKi8KLQl7IDB4NSwgMHg3MCwgMHgzMSwgMHgwMCwgMHgwRSB9LAkvKiA0MDAgICA4MDAgICAg ICA2LjAgICAqLwotCXsgMHhBLCAweDVCLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQ1MCAgIDQ1 MCAgICAgIDAuMCAgICovCi0JeyAweEIsIDB4NjQsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNjAw ICAgNjAwICAgICAgMC4wICAgKi8KLQl7IDB4NSwgMHg3MywgMHgzNSwgMHgwMCwgMHgwQSB9LAkv KiA2MDAgICA4NTAgICAgICAzLjAgICAqLwotCXsgMHg2LCAweDdDLCAweDMyLCAweDAwLCAweDBE IH0sCS8qIDYwMCAgIDEwMDAgICAgIDQuNCAgICovCi0JeyAweDUsIDB4NzAsIDB4M0YsIDB4MDAs IDB4MDAgfSwJLyogODAwICAgODAwICAgICAgMC4wICAgKi8KLQl7IDB4NiwgMHg3QywgMHgzOSwg MHgwMCwgMHgwNiB9LAkvKiA4MDAgICAxMDAwICAgICAxLjkgICAqLwotCXsgMHg2LCAweDdGLCAw eDM5LCAweDAwLCAweDA2IH0sCS8qIDg1MCAgIDEwNTAgICAgIDEuOCAgICovCi0JeyAweDYsIDB4 N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMTA1MCAgMTA1MCAgICAgMC4wICAgKi8KLX07Ci0K LS8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDEuMDVWIGZvciBlRFAgKi8K LXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlv bnNfZWRwXzFfMDVWW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwotCXsg MHhBLCAweDVFLCAweDNBLCAweDAwLCAweDA1IH0sCS8qIDM4NCAgIDUwMCAgICAgIDIuMyAgICov Ci0JeyAweDAsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMTUzICAgMjAwICAgICAgMi4z ICAgKi8KLQl7IDB4OCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAxOTIgICAyNTAgICAg ICAyLjMgICAqLwotCXsgMHgxLCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDIzMCAgIDMw MCAgICAgIDIuMyAgICovCi0JeyAweDksIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjY5 ICAgMzUwICAgICAgMi4zICAgKi8KLQl7IDB4QSwgMHg1RSwgMHgzQywgMHgwMCwgMHgwMyB9LAkv KiA0NDYgICA1MDAgICAgICAxLjAgICAqLwotCXsgMHhCLCAweDY0LCAweDM5LCAweDAwLCAweDA2 IH0sCS8qIDQ2MCAgIDYwMCAgICAgIDIuMyAgICovCi0JeyAweEUsIDB4NkEsIDB4MzksIDB4MDAs IDB4MDYgfSwJLyogNTM3ICAgNzAwICAgICAgMi4zICAgKi8KLQl7IDB4MiwgMHg3RiwgMHgzRiwg MHgwMCwgMHgwMCB9LAkvKiA0MDAgICA0MDAgICAgICAwLjAgICAqLwotfTsKLQotLyogaWNsX2Nv bWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlf YnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyW10gPSB7Ci0J CQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwotCXsgMHhBLCAweDM1LCAweDNGLCAweDAw LCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCi0JeyAweEEsIDB4NEYsIDB4Mzcs IDB4MDAsIDB4MDggfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KLQl7IDB4QywgMHg3MSwg MHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLwotCXsgMHg2LCAw eDdGLCAweDJCLCAweDAwLCAweDE0IH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCi0JeyAw eEEsIDB4NEMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8K LQl7IDB4QywgMHg3MywgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkg ICAqLwotCXsgMHg2LCAweDdGLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDUwMCAgIDkwMCAgICAg IDUuMSAgICovCi0JeyAweEMsIDB4NkMsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzAw ICAgICAgMC42ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAg ICA5MDAgICAgICAzLjUgICAqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDkwMCAgIDkwMCAgICAgIDAuMCAgICovCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9k ZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMltdID0g ewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4MCwgMHg3RiwgMHgzRiwg MHgwMCwgMHgwMCB9LAkvKiAyMDAgICAyMDAgICAgICAwLjAgICAqLwotCXsgMHg4LCAweDdGLCAw eDM4LCAweDAwLCAweDA3IH0sCS8qIDIwMCAgIDI1MCAgICAgIDEuOSAgICovCi0JeyAweDEsIDB4 N0YsIDB4MzMsIDB4MDAsIDB4MEMgfSwJLyogMjAwICAgMzAwICAgICAgMy41ICAgKi8KLQl7IDB4 OSwgMHg3RiwgMHgzMSwgMHgwMCwgMHgwRSB9LAkvKiAyMDAgICAzNTAgICAgICA0LjkgICAqLwot CXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDI1MCAgIDI1MCAgICAgIDAuMCAg ICovCi0JeyAweDEsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjUwICAgMzAwICAgICAg MS42ICAgKi8KLQl7IDB4OSwgMHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiAyNTAgICAzNTAg ICAgICAyLjkgICAqLwotCXsgMHgxLCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDMwMCAg IDMwMCAgICAgIDAuMCAgICovCi0JeyAweDksIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyog MzAwICAgMzUwICAgICAgMS4zICAgKi8KLQl7IDB4OSwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBj bmxfZGRpX2J1Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjNb XSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0JeyAweEEsIDB4MzUsIDB4 M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KLQl7IDB4QSwgMHg0 RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAqLwotCXsgMHhD LCAweDcxLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAgICovCi0J eyAweDYsIDB4N0YsIDB4MkIsIDB4MDAsIDB4MTQgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAg Ki8KLQl7IDB4QSwgMHg0QywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1MDAgICAgICAw LjAgICAqLwotCXsgMHhDLCAweDczLCAweDM0LCAweDAwLCAweDBCIH0sCS8qIDUwMCAgIDcwMCAg ICAgIDIuOSAgICovCi0JeyAweDYsIDB4N0YsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogNTAwICAg OTAwICAgICAgNS4xICAgKi8KLQl7IDB4QywgMHg2QywgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA2 NTAgICA3MDAgICAgICAwLjYgICAqLwotCXsgMHg2LCAweDdGLCAweDM1LCAweDAwLCAweDBBIH0s CS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCi0JeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4 MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgY25sX2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWlb XSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0JeyAweEEsIDB4NjAsIDB4 M0YsIDB4MDAsIDB4MDAgfSwJLyogNDUwICAgNDUwICAgICAgMC4wICAgKi8KLQl7IDB4QiwgMHg3 MywgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA0NTAgICA2NTAgICAgICAzLjIgICAqLwotCXsgMHg2 LCAweDdGLCAweDMxLCAweDAwLCAweDBFIH0sCS8qIDQ1MCAgIDg1MCAgICAgIDUuNSAgICovCi0J eyAweEIsIDB4NzMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNjUwICAgNjUwICAgICAgMC4wICAg QUxTICovCi0JeyAweDYsIDB4N0YsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogNjUwICAgODUwICAg ICAgMi4zICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA4NTAgICA4 NTAgICAgICAwLjAgICAqLwotCXsgMHg2LCAweDdGLCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYw MCAgIDg1MCAgICAgIDMuMCAgICovCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlf YnVmX3RyYW5zIGVobF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0gewotCQkJCQkJ LyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHgzMywgMHgzRiwgMHgwMCwgMHgw MCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwotCXsgMHhBLCAweDQ3LCAweDM2LCAweDAw LCAweDA5IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCi0JeyAweEMsIDB4NjQsIDB4MzQs IDB4MDAsIDB4MEIgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8KLQl7IDB4NiwgMHg3Riwg MHgzMCwgMHgwMCwgMHgwRiB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLwotCXsgMHhBLCAw eDQ2LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCi0JeyAw eEMsIDB4NjQsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8K LQl7IDB4NiwgMHg3RiwgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEg ICAqLwotCXsgMHhDLCAweDYxLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDY1MCAgIDcwMCAgICAg IDAuNiAgICovCi0JeyAweDYsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogNjAwICAgOTAw ICAgICAgMy41ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAg ICA5MDAgICAgICAwLjAgICAqLwotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1 Zl90cmFucyBqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicltdID0gewotCQkJ CQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4OCwgMHg3RiwgMHgzRiwgMHgwMCwg MHgwMCB9LCAgICAgICAgLyogMjAwICAgMjAwICAgICAgMC4wICAgKi8KLQl7IDB4OCwgMHg3Riwg MHgzOCwgMHgwMCwgMHgwNyB9LCAgICAgICAgLyogMjAwICAgMjUwICAgICAgMS45ICAgKi8KLQl7 IDB4MSwgMHg3RiwgMHgzMywgMHgwMCwgMHgwQyB9LCAgICAgICAgLyogMjAwICAgMzAwICAgICAg My41ICAgKi8KLQl7IDB4QSwgMHgzNSwgMHgzNiwgMHgwMCwgMHgwOSB9LCAgICAgICAgLyogMjAw ICAgMzUwICAgICAgNC45ICAgKi8KLQl7IDB4OCwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAg ICAgICAgLyogMjUwICAgMjUwICAgICAgMC4wICAgKi8KLQl7IDB4MSwgMHg3RiwgMHgzOCwgMHgw MCwgMHgwNyB9LCAgICAgICAgLyogMjUwICAgMzAwICAgICAgMS42ICAgKi8KLQl7IDB4QSwgMHgz NSwgMHgzNSwgMHgwMCwgMHgwQSB9LCAgICAgICAgLyogMjUwICAgMzUwICAgICAgMi45ICAgKi8K LQl7IDB4MSwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAgICAgICAgLyogMzAwICAgMzAwICAg ICAgMC4wICAgKi8KLQl7IDB4QSwgMHgzNSwgMHgzOCwgMHgwMCwgMHgwNyB9LCAgICAgICAgLyog MzAwICAgMzUwICAgICAgMS4zICAgKi8KLQl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9 LCAgICAgICAgLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMganNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2Vk cF9oYnIyW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwotCXsgMHg4LCAw eDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAyMDAgICAyMDAgICAgICAwLjAgICAq LwotCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAyMDAgICAyNTAg ICAgICAxLjkgICAqLwotCXsgMHgxLCAweDdGLCAweDNELCAweDAwLCAweDAyIH0sICAgICAgICAv KiAyMDAgICAzMDAgICAgICAzLjUgICAqLwotCXsgMHhBLCAweDM1LCAweDM4LCAweDAwLCAweDA3 IH0sICAgICAgICAvKiAyMDAgICAzNTAgICAgICA0LjkgICAqLwotCXsgMHg4LCAweDdGLCAweDNG LCAweDAwLCAweDAwIH0sICAgICAgICAvKiAyNTAgICAyNTAgICAgICAwLjAgICAqLwotCXsgMHgx LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAyNTAgICAzMDAgICAgICAxLjYg ICAqLwotCXsgMHhBLCAweDM1LCAweDNBLCAweDAwLCAweDA1IH0sICAgICAgICAvKiAyNTAgICAz NTAgICAgICAyLjkgICAqLwotCXsgMHgxLCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAg ICAvKiAzMDAgICAzMDAgICAgICAwLjAgICAqLwotCXsgMHhBLCAweDM1LCAweDM4LCAweDAwLCAw eDA3IH0sICAgICAgICAvKiAzMDAgICAzNTAgICAgICAxLjMgICAqLwotCXsgMHhBLCAweDM1LCAw eDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwotfTsK LQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBkZzFfY29tYm9fcGh5X2Rk aV90cmFuc2xhdGlvbnNfZHBfcmJyX2hicltdID0gewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYg ZGIgICAgKi8KLQl7IDB4QSwgMHgzMiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAg ICAgICAwLjAgICAqLwotCXsgMHhBLCAweDQ4LCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDM1MCAg IDUwMCAgICAgIDMuMSAgICovCi0JeyAweEMsIDB4NjMsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyog MzUwICAgNzAwICAgICAgNi4wICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgyQywgMHgwMCwgMHgxMyB9 LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLwotCXsgMHhBLCAweDQzLCAweDNGLCAweDAwLCAw eDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCi0JeyAweEMsIDB4NjAsIDB4MzYsIDB4 MDAsIDB4MDkgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgz MCwgMHgwMCwgMHgwRiB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLwotCXsgMHhDLCAweDYw LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCi0JeyAweDYs IDB4N0YsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KLQl7 IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAq LwotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBkZzFfY29tYm9f cGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMl9oYnIzW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBU cmFucyBtViBkYiAgICAqLwotCXsgMHhBLCAweDMyLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1 MCAgIDM1MCAgICAgIDAuMCAgICovCi0JeyAweEEsIDB4NDgsIDB4MzUsIDB4MDAsIDB4MEEgfSwJ LyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KLQl7IDB4QywgMHg2MywgMHgyRiwgMHgwMCwgMHgx MCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLwotCXsgMHg2LCAweDdGLCAweDJDLCAweDAw LCAweDEzIH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCi0JeyAweEEsIDB4NDMsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KLQl7IDB4QywgMHg2MCwg MHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwotCXsgMHg2LCAw eDdGLCAweDMwLCAweDAwLCAweDBGIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCi0JeyAw eEMsIDB4NTgsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8K LQl7IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUg ICAqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAg IDAuMCAgICovCi19OwotCi1zdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zIHsKLQl1MzIg Y3JpX3R4ZGVlbXBoX292ZXJyaWRlXzExXzY7Ci0JdTMyIGNyaV90eGRlZW1waF9vdmVycmlkZV81 XzA7Ci0JdTMyIGNyaV90eGRlZW1waF9vdmVycmlkZV8xN18xMjsKLX07Ci0KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9tZ19waHlfZGRpX3RyYW5zbGF0 aW9uc19yYnJfaGJyW10gPSB7Ci0JCQkJLyogVm9sdGFnZSBzd2luZyAgcHJlLWVtcGhhc2lzICov Ci0JeyAweDE4LCAweDAwLCAweDAwIH0sCS8qIDAgICAgICAgICAgICAgIDAgICAqLwotCXsgMHgx RCwgMHgwMCwgMHgwNSB9LAkvKiAwICAgICAgICAgICAgICAxICAgKi8KLQl7IDB4MjQsIDB4MDAs IDB4MEMgfSwJLyogMCAgICAgICAgICAgICAgMiAgICovCi0JeyAweDJCLCAweDAwLCAweDE0IH0s CS8qIDAgICAgICAgICAgICAgIDMgICAqLwotCXsgMHgyMSwgMHgwMCwgMHgwMCB9LAkvKiAxICAg ICAgICAgICAgICAwICAgKi8KLQl7IDB4MkIsIDB4MDAsIDB4MDggfSwJLyogMSAgICAgICAgICAg ICAgMSAgICovCi0JeyAweDMwLCAweDAwLCAweDBGIH0sCS8qIDEgICAgICAgICAgICAgIDIgICAq LwotCXsgMHgzMSwgMHgwMCwgMHgwMyB9LAkvKiAyICAgICAgICAgICAgICAwICAgKi8KLQl7IDB4 MzQsIDB4MDAsIDB4MEIgfSwJLyogMiAgICAgICAgICAgICAgMSAgICovCi0JeyAweDNGLCAweDAw LCAweDAwIH0sCS8qIDMgICAgICAgICAgICAgIDAgICAqLwotfTsKLQotc3RhdGljIGNvbnN0IHN0 cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25z X2hicjJfaGJyM1tdID0gewotCQkJCS8qIFZvbHRhZ2Ugc3dpbmcgIHByZS1lbXBoYXNpcyAqLwot CXsgMHgxOCwgMHgwMCwgMHgwMCB9LAkvKiAwICAgICAgICAgICAgICAwICAgKi8KLQl7IDB4MUQs IDB4MDAsIDB4MDUgfSwJLyogMCAgICAgICAgICAgICAgMSAgICovCi0JeyAweDI0LCAweDAwLCAw eDBDIH0sCS8qIDAgICAgICAgICAgICAgIDIgICAqLwotCXsgMHgyQiwgMHgwMCwgMHgxNCB9LAkv KiAwICAgICAgICAgICAgICAzICAgKi8KLQl7IDB4MjYsIDB4MDAsIDB4MDAgfSwJLyogMSAgICAg ICAgICAgICAgMCAgICovCi0JeyAweDJDLCAweDAwLCAweDA3IH0sCS8qIDEgICAgICAgICAgICAg IDEgICAqLwotCXsgMHgzMywgMHgwMCwgMHgwQyB9LAkvKiAxICAgICAgICAgICAgICAyICAgKi8K LQl7IDB4MkUsIDB4MDAsIDB4MDAgfSwJLyogMiAgICAgICAgICAgICAgMCAgICovCi0JeyAweDM2 LCAweDAwLCAweDA5IH0sCS8qIDIgICAgICAgICAgICAgIDEgICAqLwotCXsgMHgzRiwgMHgwMCwg MHgwMCB9LAkvKiAzICAgICAgICAgICAgICAwICAgKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9uc19o ZG1pW10gPSB7Ci0JCQkJLyogSERNSSBQcmVzZXQJVlMJUHJlLWVtcGggKi8KLQl7IDB4MUEsIDB4 MCwgMHgwIH0sCS8qIDEJCTQwMG1WCTBkQiAqLwotCXsgMHgyMCwgMHgwLCAweDAgfSwJLyogMgkJ NTAwbVYJMGRCICovCi0JeyAweDI5LCAweDAsIDB4MCB9LAkvKiAzCQk2NTBtVgkwZEIgKi8KLQl7 IDB4MzIsIDB4MCwgMHgwIH0sCS8qIDQJCTgwMG1WCTBkQiAqLwotCXsgMHgzRiwgMHgwLCAweDAg fSwJLyogNQkJMTAwMG1WCTBkQiAqLwotCXsgMHgzQSwgMHgwLCAweDUgfSwJLyogNgkJRnVsbAkt MS41IGRCICovCi0JeyAweDM5LCAweDAsIDB4NiB9LAkvKiA3CQlGdWxsCS0xLjggZEIgKi8KLQl7 IDB4MzgsIDB4MCwgMHg3IH0sCS8qIDgJCUZ1bGwJLTIgZEIgKi8KLQl7IDB4MzcsIDB4MCwgMHg4 IH0sCS8qIDkJCUZ1bGwJLTIuNSBkQiAqLwotCXsgMHgzNiwgMHgwLCAweDkgfSwJLyogMTAJCUZ1 bGwJLTMgZEIgKi8KLX07Ci0KLXN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zIHsKLQl1 MzIgZGtsX3Zzd2luZ19jb250cm9sOwotCXUzMiBka2xfcHJlc2hvb3RfY29udHJvbDsKLQl1MzIg ZGtsX2RlX2VtcGhhc2lzX2NvbnRyb2w7Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IHRnbF9k a2xfcGh5X2RkaV9idWZfdHJhbnMgdGdsX2RrbF9waHlfZHBfZGRpX3RyYW5zW10gPSB7Ci0JCQkJ LyogVlMJcHJlLWVtcAlOb24tdHJhbnMgbVYJUHJlLWVtcGggZEIgKi8KLQl7IDB4NywgMHgwLCAw eDAwIH0sCS8qIDAJMAk0MDBtVgkJMCBkQiAqLwotCXsgMHg1LCAweDAsIDB4MDUgfSwJLyogMAkx CTQwMG1WCQkzLjUgZEIgKi8KLQl7IDB4MiwgMHgwLCAweDBCIH0sCS8qIDAJMgk0MDBtVgkJNiBk QiAqLwotCXsgMHgwLCAweDAsIDB4MTggfSwJLyogMAkzCTQwMG1WCQk5LjUgZEIgKi8KLQl7IDB4 NSwgMHgwLCAweDAwIH0sCS8qIDEJMAk2MDBtVgkJMCBkQiAqLwotCXsgMHgyLCAweDAsIDB4MDgg fSwJLyogMQkxCTYwMG1WCQkzLjUgZEIgKi8KLQl7IDB4MCwgMHgwLCAweDE0IH0sCS8qIDEJMgk2 MDBtVgkJNiBkQiAqLwotCXsgMHgyLCAweDAsIDB4MDAgfSwJLyogMgkwCTgwMG1WCQkwIGRCICov Ci0JeyAweDAsIDB4MCwgMHgwQiB9LAkvKiAyCTEJODAwbVYJCTMuNSBkQiAqLwotCXsgMHgwLCAw eDAsIDB4MDAgfSwJLyogMwkwCTEyMDBtVgkJMCBkQiBIRE1JIGRlZmF1bHQgKi8KLX07Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgdGdsX2RrbF9waHlfZGRpX2J1Zl90cmFucyB0Z2xfZGtsX3BoeV9k cF9kZGlfdHJhbnNfaGJyMltdID0gewotCQkJCS8qIFZTCXByZS1lbXAJTm9uLXRyYW5zIG1WCVBy ZS1lbXBoIGRCICovCi0JeyAweDcsIDB4MCwgMHgwMCB9LAkvKiAwCTAJNDAwbVYJCTAgZEIgKi8K LQl7IDB4NSwgMHgwLCAweDA1IH0sCS8qIDAJMQk0MDBtVgkJMy41IGRCICovCi0JeyAweDIsIDB4 MCwgMHgwQiB9LAkvKiAwCTIJNDAwbVYJCTYgZEIgKi8KLQl7IDB4MCwgMHgwLCAweDE5IH0sCS8q IDAJMwk0MDBtVgkJOS41IGRCICovCi0JeyAweDUsIDB4MCwgMHgwMCB9LAkvKiAxCTAJNjAwbVYJ CTAgZEIgKi8KLQl7IDB4MiwgMHgwLCAweDA4IH0sCS8qIDEJMQk2MDBtVgkJMy41IGRCICovCi0J eyAweDAsIDB4MCwgMHgxNCB9LAkvKiAxCTIJNjAwbVYJCTYgZEIgKi8KLQl7IDB4MiwgMHgwLCAw eDAwIH0sCS8qIDIJMAk4MDBtVgkJMCBkQiAqLwotCXsgMHgwLCAweDAsIDB4MEIgfSwJLyogMgkx CTgwMG1WCQkzLjUgZEIgKi8KLQl7IDB4MCwgMHgwLCAweDAwIH0sCS8qIDMJMAkxMjAwbVYJCTAg ZEIgSERNSSBkZWZhdWx0ICovCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IHRnbF9ka2xfcGh5 X2RkaV9idWZfdHJhbnMgdGdsX2RrbF9waHlfaGRtaV9kZGlfdHJhbnNbXSA9IHsKLQkJCQkvKiBI RE1JIFByZXNldAlWUwlQcmUtZW1waCAqLwotCXsgMHg3LCAweDAsIDB4MCB9LAkvKiAxCQk0MDBt VgkwZEIgKi8KLQl7IDB4NiwgMHgwLCAweDAgfSwJLyogMgkJNTAwbVYJMGRCICovCi0JeyAweDQs IDB4MCwgMHgwIH0sCS8qIDMJCTY1MG1WCTBkQiAqLwotCXsgMHgyLCAweDAsIDB4MCB9LAkvKiA0 CQk4MDBtVgkwZEIgKi8KLQl7IDB4MCwgMHgwLCAweDAgfSwJLyogNQkJMTAwMG1WCTBkQiAqLwot CXsgMHgwLCAweDAsIDB4NSB9LAkvKiA2CQlGdWxsCS0xLjUgZEIgKi8KLQl7IDB4MCwgMHgwLCAw eDYgfSwJLyogNwkJRnVsbAktMS44IGRCICovCi0JeyAweDAsIDB4MCwgMHg3IH0sCS8qIDgJCUZ1 bGwJLTIgZEIgKi8KLQl7IDB4MCwgMHgwLCAweDggfSwJLyogOQkJRnVsbAktMi41IGRCICovCi0J eyAweDAsIDB4MCwgMHhBIH0sCS8qIDEwCQlGdWxsCS0zIGRCICovCi19OwotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19kcF9oYnJbXSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0JeyAweEEs IDB4MzIsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KLQl7 IDB4QSwgMHg0RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAq LwotCXsgMHhDLCAweDcxLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYu MCAgICovCi0JeyAweDYsIDB4N0QsIDB4MkIsIDB4MDAsIDB4MTQgfSwJLyogMzUwICAgOTAwICAg ICAgOC4yICAgKi8KLQl7IDB4QSwgMHg0QywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1 MDAgICAgICAwLjAgICAqLwotCXsgMHhDLCAweDczLCAweDM0LCAweDAwLCAweDBCIH0sCS8qIDUw MCAgIDcwMCAgICAgIDIuOSAgICovCi0JeyAweDYsIDB4N0YsIDB4MkYsIDB4MDAsIDB4MTAgfSwJ LyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KLQl7IDB4QywgMHg2QywgMHgzQywgMHgwMCwgMHgw MyB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLwotCXsgMHg2LCAweDdGLCAweDM1LCAweDAw LCAweDBBIH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCi0JeyAweDYsIDB4N0YsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KLX07Ci0KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgdGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRp b25zX2RwX2hicjJbXSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0JeyAw eEEsIDB4MzUsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8K LQl7IDB4QSwgMHg0RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEg ICAqLwotCXsgMHhDLCAweDYzLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDM1MCAgIDcwMCAgICAg IDYuMCAgICovCi0JeyAweDYsIDB4N0YsIDB4MkIsIDB4MDAsIDB4MTQgfSwJLyogMzUwICAgOTAw ICAgICAgOC4yICAgKi8KLQl7IDB4QSwgMHg0NywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAg ICA1MDAgICAgICAwLjAgICAqLwotCXsgMHhDLCAweDYzLCAweDM0LCAweDAwLCAweDBCIH0sCS8q IDUwMCAgIDcwMCAgICAgIDIuOSAgICovCi0JeyAweDYsIDB4N0YsIDB4MkYsIDB4MDAsIDB4MTAg fSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KLQl7IDB4QywgMHg2MSwgMHgzQywgMHgwMCwg MHgwMyB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLwotCXsgMHg2LCAweDdCLCAweDM1LCAw eDAwLCAweDBBIH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCi0JeyAweDYsIDB4N0YsIDB4 M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KLX07Ci0KLXN0YXRp YyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgdGdsX3V5X2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2RwX2hicjJbXSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICov Ci0JeyAweEEsIDB4MzUsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4w ICAgKi8KLQl7IDB4QSwgMHg0RiwgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiAzNTAgICA1MDAgICAg ICAzLjEgICAqLwotCXsgMHhDLCAweDYwLCAweDMyLCAweDAwLCAweDBEIH0sCS8qIDM1MCAgIDcw MCAgICAgIDYuMCAgICovCi0JeyAweEMsIDB4N0YsIDB4MkQsIDB4MDAsIDB4MTIgfSwJLyogMzUw ICAgOTAwICAgICAgOC4yICAgKi8KLQl7IDB4QywgMHg0NywgMHgzRiwgMHgwMCwgMHgwMCB9LAkv KiA1MDAgICA1MDAgICAgICAwLjAgICAqLwotCXsgMHhDLCAweDZGLCAweDM2LCAweDAwLCAweDA5 IH0sCS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCi0JeyAweDYsIDB4N0QsIDB4MzIsIDB4MDAs IDB4MEQgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KLQl7IDB4NiwgMHg2MCwgMHgzQywg MHgwMCwgMHgwMyB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLwotCXsgMHg2LCAweDdGLCAw eDM0LCAweDAwLCAweDBCIH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCi0JeyAweDYsIDB4 N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KLX07Ci0K LS8qCi0gKiBDbG9uZWQgdGhlIEhPQkwgZW50cnkgdG8gY29tcGx5IHdpdGggdGhlIHZvbHRhZ2Ug YW5kIHByZS1lbXBoYXNpcyBlbnRyaWVzCi0gKiB0aGF0IERpc3BsYXlQb3J0IHNwZWNpZmljYXRp b24gcmVxdWlyZXMKLSAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyB0 Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjJfaG9ibFtdID0gewotCQkJCQkJ LyogVlMJcHJlLWVtcAkqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDAJ MAkqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDAJMQkqLwotCXsgMHg2 LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDAJMgkqLwotCXsgMHg2LCAweDdGLCAweDNG LCAweDAwLCAweDAwIH0sCS8qIDAJMwkqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAw IH0sCS8qIDEJMAkqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEJMQkq LwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEJMgkqLwotCXsgMHg2LCAw eDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDIJMAkqLwotCXsgMHg2LCAweDdGLCAweDNGLCAw eDAwLCAweDAwIH0sCS8qIDIJMQkqLwotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRp X2J1Zl90cmFucyBya2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyW10gPSB7Ci0J CQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwotCXsgMHhBLCAweDJGLCAweDNGLCAweDAw LCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCi0JeyAweEEsIDB4NEYsIDB4Mzcs IDB4MDAsIDB4MDggfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KLQl7IDB4QywgMHg2Mywg MHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLwotCXsgMHg2LCAw eDdELCAweDJBLCAweDAwLCAweDE1IH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCi0JeyAw eEEsIDB4NEMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8K LQl7IDB4QywgMHg3MywgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkg ICAqLwotCXsgMHg2LCAweDdGLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDUwMCAgIDkwMCAgICAg IDUuMSAgICovCi0JeyAweEMsIDB4NkUsIDB4M0UsIDB4MDAsIDB4MDEgfSwJLyogNjUwICAgNzAw ICAgICAgMC42ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAg ICA5MDAgICAgICAzLjUgICAqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDkwMCAgIDkwMCAgICAgIDAuMCAgICovCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9k ZGlfYnVmX3RyYW5zIHJrbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyX2hicjNb XSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0JeyAweEEsIDB4MzUsIDB4 M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KLQl7IDB4QSwgMHg1 MCwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAqLwotCXsgMHhD LCAweDYxLCAweDMzLCAweDAwLCAweDBDIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAgICovCi0J eyAweDYsIDB4N0YsIDB4MkUsIDB4MDAsIDB4MTEgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAg Ki8KLQl7IDB4QSwgMHg0NywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1MDAgICAgICAw LjAgICAqLwotCXsgMHhDLCAweDVGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDUwMCAgIDcwMCAg ICAgIDIuOSAgICovCi0JeyAweDYsIDB4N0YsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogNTAwICAg OTAwICAgICAgNS4xICAgKi8KLQl7IDB4QywgMHg1RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA2 NTAgICA3MDAgICAgICAwLjYgICAqLwotCXsgMHg2LCAweDdFLCAweDM2LCAweDAwLCAweDA5IH0s CS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCi0JeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4 MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KLX07Ci0KLXN0YXRpYyBib29sIGlzX2hv YmxfYnVmX3RyYW5zKGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqdGFibGUpCi17Ci0J cmV0dXJuIHRhYmxlID09IHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMl9o b2JsOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgotYmR3X2dldF9i dWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmll cykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29k ZXItPmJhc2UuZGV2KTsKLQotCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7Ci0J CSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJkd19kZGlfdHJhbnNsYXRpb25zX2VkcCk7Ci0JCXJl dHVybiBiZHdfZGRpX3RyYW5zbGF0aW9uc19lZHA7Ci0JfSBlbHNlIHsKLQkJKm5fZW50cmllcyA9 IEFSUkFZX1NJWkUoYmR3X2RkaV90cmFuc2xhdGlvbnNfZHApOwotCQlyZXR1cm4gYmR3X2RkaV90 cmFuc2xhdGlvbnNfZHA7Ci0JfQotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJh bnMgKgotc2tsX2dldF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs IGludCAqbl9lbnRyaWVzKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwotCi0JaWYgKElTX1NLTF9VTFgoZGV2X3ByaXYp KSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHNrbF95X2RkaV90cmFuc2xhdGlvbnNfZHAp OwotCQlyZXR1cm4gc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19kcDsKLQl9IGVsc2UgaWYgKElTX1NL TF9VTFQoZGV2X3ByaXYpKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHNrbF91X2RkaV90 cmFuc2xhdGlvbnNfZHApOwotCQlyZXR1cm4gc2tsX3VfZGRpX3RyYW5zbGF0aW9uc19kcDsKLQl9 IGVsc2UgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfZGRpX3RyYW5zbGF0aW9uc19k cCk7Ci0JCXJldHVybiBza2xfZGRpX3RyYW5zbGF0aW9uc19kcDsKLQl9Ci19Ci0KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCi1rYmxfZ2V0X2J1Zl90cmFuc19kcChzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0KLQlp ZiAoSVNfS0JMX1VMWChkZXZfcHJpdikgfHwKLQkgICAgSVNfQ0ZMX1VMWChkZXZfcHJpdikgfHwK LQkgICAgSVNfQ01MX1VMWChkZXZfcHJpdikpIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUo a2JsX3lfZGRpX3RyYW5zbGF0aW9uc19kcCk7Ci0JCXJldHVybiBrYmxfeV9kZGlfdHJhbnNsYXRp b25zX2RwOwotCX0gZWxzZSBpZiAoSVNfS0JMX1VMVChkZXZfcHJpdikgfHwKLQkJICAgSVNfQ0ZM X1VMVChkZXZfcHJpdikgfHwKLQkJICAgSVNfQ01MX1VMVChkZXZfcHJpdikpIHsKLQkJKm5fZW50 cmllcyA9IEFSUkFZX1NJWkUoa2JsX3VfZGRpX3RyYW5zbGF0aW9uc19kcCk7Ci0JCXJldHVybiBr YmxfdV9kZGlfdHJhbnNsYXRpb25zX2RwOwotCX0gZWxzZSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKGtibF9kZGlfdHJhbnNsYXRpb25zX2RwKTsKLQkJcmV0dXJuIGtibF9kZGlfdHJhbnNs YXRpb25zX2RwOwotCX0KLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoK LXNrbF9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50 ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0KLQlpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zz d2luZykgewotCQlpZiAoSVNfU0tMX1VMWChkZXZfcHJpdikgfHwKLQkJICAgIElTX0tCTF9VTFgo ZGV2X3ByaXYpIHx8Ci0JCSAgICBJU19DRkxfVUxYKGRldl9wcml2KSB8fAotCQkgICAgSVNfQ01M X1VMWChkZXZfcHJpdikpIHsKLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHNrbF95X2RkaV90 cmFuc2xhdGlvbnNfZWRwKTsKLQkJCXJldHVybiBza2xfeV9kZGlfdHJhbnNsYXRpb25zX2VkcDsK LQkJfSBlbHNlIGlmIChJU19TS0xfVUxUKGRldl9wcml2KSB8fAotCQkJICAgSVNfS0JMX1VMVChk ZXZfcHJpdikgfHwKLQkJCSAgIElTX0NGTF9VTFQoZGV2X3ByaXYpIHx8Ci0JCQkgICBJU19DTUxf VUxUKGRldl9wcml2KSkgewotCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2tsX3VfZGRpX3Ry YW5zbGF0aW9uc19lZHApOwotCQkJcmV0dXJuIHNrbF91X2RkaV90cmFuc2xhdGlvbnNfZWRwOwot CQl9IGVsc2UgewotCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2tsX2RkaV90cmFuc2xhdGlv bnNfZWRwKTsKLQkJCXJldHVybiBza2xfZGRpX3RyYW5zbGF0aW9uc19lZHA7Ci0JCX0KLQl9Ci0K LQlpZiAoSVNfS0FCWUxBS0UoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0NPRkZFRUxBS0UoZGV2X3By aXYpIHx8Ci0JICAgIElTX0NPTUVUTEFLRShkZXZfcHJpdikpCi0JCXJldHVybiBrYmxfZ2V0X2J1 Zl90cmFuc19kcChlbmNvZGVyLCBuX2VudHJpZXMpOwotCWVsc2UKLQkJcmV0dXJuIHNrbF9nZXRf YnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50cmllcyk7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgZGRpX2J1Zl90cmFucyAqCi1za2xfZ2V0X2J1Zl90cmFuc19oZG1pKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgaW50ICpuX2VudHJpZXMpCi17Ci0JaWYgKElTX1NLTF9VTFgo ZGV2X3ByaXYpIHx8Ci0JICAgIElTX0tCTF9VTFgoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0NGTF9V TFgoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0NNTF9VTFgoZGV2X3ByaXYpKSB7Ci0JCSpuX2VudHJp ZXMgPSBBUlJBWV9TSVpFKHNrbF95X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7Ci0JCXJldHVybiBz a2xfeV9kZGlfdHJhbnNsYXRpb25zX2hkbWk7Ci0JfSBlbHNlIHsKLQkJKm5fZW50cmllcyA9IEFS UkFZX1NJWkUoc2tsX2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7Ci0JCXJldHVybiBza2xfZGRpX3Ry YW5zbGF0aW9uc19oZG1pOwotCX0KLX0KLQotc3RhdGljIGludCBza2xfYnVmX3RyYW5zX251bV9l bnRyaWVzKGVudW0gcG9ydCBwb3J0LCBpbnQgbl9lbnRyaWVzKQotewotCS8qIE9ubHkgRERJQSBh bmQgRERJRSBjYW4gc2VsZWN0IHRoZSAxMHRoIHJlZ2lzdGVyIHdpdGggRFAgKi8KLQlpZiAocG9y dCA9PSBQT1JUX0EgfHwgcG9ydCA9PSBQT1JUX0UpCi0JCXJldHVybiBtaW4obl9lbnRyaWVzLCAx MCk7Ci0JZWxzZQotCQlyZXR1cm4gbWluKG5fZW50cmllcywgOSk7Ci19Ci0KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCi1pbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19kcChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0K LQlpZiAoSVNfS0FCWUxBS0UoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0NPRkZFRUxBS0UoZGV2X3By aXYpIHx8Ci0JICAgIElTX0NPTUVUTEFLRShkZXZfcHJpdikpIHsKLQkJY29uc3Qgc3RydWN0IGRk aV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnMgPQotCQkJa2JsX2dldF9idWZfdHJhbnNfZHAo ZW5jb2Rlciwgbl9lbnRyaWVzKTsKLQkJKm5fZW50cmllcyA9IHNrbF9idWZfdHJhbnNfbnVtX2Vu dHJpZXMoZW5jb2Rlci0+cG9ydCwgKm5fZW50cmllcyk7Ci0JCXJldHVybiBkZGlfdHJhbnNsYXRp b25zOwotCX0gZWxzZSBpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpIHsKLQkJY29uc3Qgc3RydWN0 IGRkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnMgPQotCQkJc2tsX2dldF9idWZfdHJhbnNf ZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKLQkJKm5fZW50cmllcyA9IHNrbF9idWZfdHJhbnNfbnVt X2VudHJpZXMoZW5jb2Rlci0+cG9ydCwgKm5fZW50cmllcyk7Ci0JCXJldHVybiBkZGlfdHJhbnNs YXRpb25zOwotCX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewotCQkqbl9lbnRy aWVzID0gQVJSQVlfU0laRShiZHdfZGRpX3RyYW5zbGF0aW9uc19kcCk7Ci0JCXJldHVybiAgYmR3 X2RkaV90cmFuc2xhdGlvbnNfZHA7Ci0JfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkg ewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShoc3dfZGRpX3RyYW5zbGF0aW9uc19kcCk7Ci0J CXJldHVybiBoc3dfZGRpX3RyYW5zbGF0aW9uc19kcDsKLQl9Ci0KLQkqbl9lbnRyaWVzID0gMDsK LQlyZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoK LWludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0KLQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJp dikpIHsKLQkJY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnMgPQot CQkJc2tsX2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIsIG5fZW50cmllcyk7Ci0JCSpuX2VudHJp ZXMgPSBza2xfYnVmX3RyYW5zX251bV9lbnRyaWVzKGVuY29kZXItPnBvcnQsICpuX2VudHJpZXMp OwotCQlyZXR1cm4gZGRpX3RyYW5zbGF0aW9uczsKLQl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChk ZXZfcHJpdikpIHsKLQkJcmV0dXJuIGJkd19nZXRfYnVmX3RyYW5zX2VkcChlbmNvZGVyLCBuX2Vu dHJpZXMpOwotCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKLQkJKm5fZW50cmll cyA9IEFSUkFZX1NJWkUoaHN3X2RkaV90cmFuc2xhdGlvbnNfZHApOwotCQlyZXR1cm4gaHN3X2Rk aV90cmFuc2xhdGlvbnNfZHA7Ci0JfQotCi0JKm5fZW50cmllcyA9IDA7Ci0JcmV0dXJuIE5VTEw7 Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCi1pbnRlbF9kZGlfZ2V0 X2J1Zl90cmFuc19mZGkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAg IGludCAqbl9lbnRyaWVzKQotewotCWlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Ci0JCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKGJkd19kZGlfdHJhbnNsYXRpb25zX2ZkaSk7Ci0JCXJldHVy biBiZHdfZGRpX3RyYW5zbGF0aW9uc19mZGk7Ci0JfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldl9w cml2KSkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShoc3dfZGRpX3RyYW5zbGF0aW9uc19m ZGkpOwotCQlyZXR1cm4gaHN3X2RkaV90cmFuc2xhdGlvbnNfZmRpOwotCX0KLQotCSpuX2VudHJp ZXMgPSAwOwotCXJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZf dHJhbnMgKgotaW50ZWxfZGRpX2dldF9idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKLQkJCSAgICAgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0KLQlpZiAo SVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKLQkJcmV0dXJuIHNrbF9nZXRfYnVmX3RyYW5zX2hkbWko ZGV2X3ByaXYsIG5fZW50cmllcyk7Ci0JfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYp KSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJkd19kZGlfdHJhbnNsYXRpb25zX2hkbWkp OwotCQlyZXR1cm4gYmR3X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKLQl9IGVsc2UgaWYgKElTX0hB U1dFTEwoZGV2X3ByaXYpKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGhzd19kZGlfdHJh bnNsYXRpb25zX2hkbWkpOwotCQlyZXR1cm4gaHN3X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKLQl9 Ci0KLQkqbl9lbnRyaWVzID0gMDsKLQlyZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIGNvbnN0IHN0 cnVjdCBieHRfZGRpX2J1Zl90cmFucyAqCi1ieHRfZ2V0X2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCi17Ci0JKm5fZW50cmllcyA9IEFS UkFZX1NJWkUoYnh0X2RkaV90cmFuc2xhdGlvbnNfZHApOwotCXJldHVybiBieHRfZGRpX3RyYW5z bGF0aW9uc19kcDsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFucyAq Ci1ieHRfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGlu dCAqbl9lbnRyaWVzKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwotCi0JaWYgKGRldl9wcml2LT52YnQuZWRwLmxvd192 c3dpbmcpIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoYnh0X2RkaV90cmFuc2xhdGlvbnNf ZWRwKTsKLQkJcmV0dXJuIGJ4dF9kZGlfdHJhbnNsYXRpb25zX2VkcDsKLQl9Ci0KLQlyZXR1cm4g Ynh0X2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKLX0KLQotc3RhdGljIGNv bnN0IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFucyAqCi1ieHRfZ2V0X2J1Zl90cmFuc19oZG1pKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKLXsKLQkqbl9lbnRy aWVzID0gQVJSQVlfU0laRShieHRfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKLQlyZXR1cm4gYnh0 X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRp X2J1Zl90cmFucyAqCi1jbmxfZ2V0X2J1Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQl1MzIgdm9sdGFnZSA9IGlu dGVsX2RlX3JlYWQoZGV2X3ByaXYsIENOTF9QT1JUX0NPTVBfRFczKSAmIFZPTFRBR0VfSU5GT19N QVNLOwotCi0JaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzBfODVWKSB7Ci0JCSpuX2VudHJp ZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF84NVYpOwotCQlyZXR1 cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8wXzg1VjsKLQl9IGVsc2UgaWYgKHZvbHRhZ2Ug PT0gVk9MVEFHRV9JTkZPXzBfOTVWKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9k ZGlfdHJhbnNsYXRpb25zX2hkbWlfMF85NVYpOwotCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlv bnNfaGRtaV8wXzk1VjsKLQl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzFfMDVW KSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlf MV8wNVYpOwotCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8xXzA1VjsKLQl9IGVs c2UgewotCQkqbl9lbnRyaWVzID0gMTsgLyogc2h1dCB1cCBnY2MgKi8KLQkJTUlTU0lOR19DQVNF KHZvbHRhZ2UpOwotCX0KLQlyZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBj bmxfZGRpX2J1Zl90cmFucyAqCi1jbmxfZ2V0X2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0JdTMyIHZvbHRhZ2Ug PSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBDTkxfUE9SVF9DT01QX0RXMykgJiBWT0xUQUdFX0lO Rk9fTUFTSzsKLQotCWlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzg1VikgewotCQkqbl9l bnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzg1Vik7Ci0JCXJl dHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzg1VjsKLQl9IGVsc2UgaWYgKHZvbHRhZ2Ug PT0gVk9MVEFHRV9JTkZPXzBfOTVWKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9k ZGlfdHJhbnNsYXRpb25zX2RwXzBfOTVWKTsKLQkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25z X2RwXzBfOTVWOwotCX0gZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMV8wNVYpIHsK LQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMV8wNVYp OwotCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMV8wNVY7Ci0JfSBlbHNlIHsKLQkJ Km5fZW50cmllcyA9IDE7IC8qIHNodXQgdXAgZ2NjICovCi0JCU1JU1NJTkdfQ0FTRSh2b2x0YWdl KTsKLQl9Ci0JcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9i dWZfdHJhbnMgKgotY25sX2dldF9idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLCBpbnQgKm5fZW50cmllcykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQl1MzIgdm9sdGFnZSA9IGludGVs X2RlX3JlYWQoZGV2X3ByaXYsIENOTF9QT1JUX0NPTVBfRFczKSAmIFZPTFRBR0VfSU5GT19NQVNL OwotCi0JaWYgKGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsKLQkJaWYgKHZvbHRhZ2Ug PT0gVk9MVEFHRV9JTkZPXzBfODVWKSB7Ci0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxf ZGRpX3RyYW5zbGF0aW9uc19lZHBfMF84NVYpOwotCQkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRp b25zX2VkcF8wXzg1VjsKLQkJfSBlbHNlIGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzk1 VikgewotCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZWRw XzBfOTVWKTsKLQkJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF85NVY7Ci0JCX0g ZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMV8wNVYpIHsKLQkJCSpuX2VudHJpZXMg PSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1Vik7Ci0JCQlyZXR1cm4g Y25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzFfMDVWOwotCQl9IGVsc2UgewotCQkJKm5fZW50cmll cyA9IDE7IC8qIHNodXQgdXAgZ2NjICovCi0JCQlNSVNTSU5HX0NBU0Uodm9sdGFnZSk7Ci0JCX0K LQkJcmV0dXJuIE5VTEw7Ci0JfSBlbHNlIHsKLQkJcmV0dXJuIGNubF9nZXRfYnVmX3RyYW5zX2Rw KGVuY29kZXIsIG5fZW50cmllcyk7Ci0JfQotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9k ZGlfYnVmX3RyYW5zICoKLWljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAotCQkJICAgICBpbnQgKm5fZW50cmllcykKLXsKLQkqbl9lbnRyaWVzID0g QVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7Ci0JcmV0dXJu IGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwotfQotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLWljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQkgICBpbnQgKm5fZW50cmllcykKLXsKLQkqbl9lbnRy aWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMik7 Ci0JcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyOwotfQotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLWljbF9nZXRfY29tYm9fYnVm X3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAgICBjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgICBpbnQgKm5fZW50cmll cykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29k ZXItPmJhc2UuZGV2KTsKLQotCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gNTQwMDAwKSB7 Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19lZHBfaGJyMyk7Ci0JCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRw X2hicjM7Ci0JfSBlbHNlIGlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7Ci0JCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBf aGJyMik7Ci0JCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjI7 Ci0JfSBlbHNlIGlmIChJU19ERzEoZGV2X3ByaXYpICYmIGNydGNfc3RhdGUtPnBvcnRfY2xvY2sg PiAyNzAwMDApIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoZGcxX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2RwX2hicjJfaGJyMyk7Ci0JCXJldHVybiBkZzFfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfZHBfaGJyMl9oYnIzOwotCX0gZWxzZSBpZiAoSVNfREcxKGRldl9wcml2KSkg ewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShkZzFfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlv bnNfZHBfcmJyX2hicik7Ci0JCXJldHVybiBkZzFfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZHBfcmJyX2hicjsKLQl9Ci0KLQlyZXR1cm4gaWNsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5j b2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBj bmxfZGRpX2J1Zl90cmFucyAqCi1pY2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKLQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAotCQkJaW50ICpuX2VudHJpZXMpCi17Ci0JaWYgKGludGVsX2NydGNfaGFzX3R5cGUo Y3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQotCQlyZXR1cm4gaWNsX2dldF9jb21ib19i dWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotCWVsc2UgaWYg KGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCi0JCXJl dHVybiBpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9l bnRyaWVzKTsKLQllbHNlCi0JCXJldHVybiBpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNv ZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGlj bF9tZ19waHlfZGRpX2J1Zl90cmFucyAqCi1pY2xfZ2V0X21nX2J1Zl90cmFuc19oZG1pKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgaW50ICpuX2VudHJpZXMpCi17Ci0JKm5fZW50cmllcyA9 IEFSUkFZX1NJWkUoaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOwotCXJldHVybiBp Y2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVj dCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgKgotaWNsX2dldF9tZ19idWZfdHJhbnNfZHAoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCWludCAqbl9lbnRyaWVzKQotewotCWlmIChjcnRjX3N0YXRl LT5wb3J0X2Nsb2NrID4gMjcwMDAwKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9t Z19waHlfZGRpX3RyYW5zbGF0aW9uc19oYnIyX2hicjMpOwotCQlyZXR1cm4gaWNsX21nX3BoeV9k ZGlfdHJhbnNsYXRpb25zX2hicjJfaGJyMzsKLQl9IGVsc2UgewotCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNfcmJyX2hicik7Ci0JCXJldHVybiBp Y2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNfcmJyX2hicjsKLQl9Ci19Ci0KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zICoKLWljbF9nZXRfbWdfYnVmX3RyYW5z KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkgICAgIGludCAqbl9lbnRyaWVzKQotewotCWlm IChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKLQkJ cmV0dXJuIGljbF9nZXRfbWdfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9l bnRyaWVzKTsKLQllbHNlCi0JCXJldHVybiBpY2xfZ2V0X21nX2J1Zl90cmFuc19kcChlbmNvZGVy LCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9k ZGlfYnVmX3RyYW5zICoKLWVobF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAotCQkJICAgICBpbnQgKm5fZW50cmllcykKLXsKLQkqbl9lbnRyaWVzID0g QVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7Ci0JcmV0dXJu IGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwotfQotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLWVobF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQkgICBpbnQgKm5fZW50cmllcykKLXsKLQkqbl9lbnRy aWVzID0gQVJSQVlfU0laRShlaGxfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHApOwotCXJl dHVybiBlaGxfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHA7Ci19Ci0KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgotZWhsX2dldF9jb21ib19idWZfdHJhbnNfZWRw KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJICAgIGludCAqbl9lbnRyaWVzKQotewotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5k ZXYpOwotCi0JaWYgKGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsKLQkJKm5fZW50cmll cyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyKTsK LQkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMjsKLQl9Ci0K LQlyZXR1cm4gZWhsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwg bl9lbnRyaWVzKTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAq Ci1laGxfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK LQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJaW50ICpu X2VudHJpZXMpCi17Ci0JaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxf T1VUUFVUX0hETUkpKQotCQlyZXR1cm4gZWhsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShlbmNv ZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotCWVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5 cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCi0JCXJldHVybiBlaGxfZ2V0X2NvbWJv X2J1Zl90cmFuc19lZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLQllbHNlCi0J CXJldHVybiBlaGxfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBu X2VudHJpZXMpOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoK LWpzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAot CQkJICAgICBpbnQgKm5fZW50cmllcykKLXsKLQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7Ci0JcmV0dXJuIGljbF9jb21ib19waHlf ZGRpX3RyYW5zbGF0aW9uc19oZG1pOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlf YnVmX3RyYW5zICoKLWpzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAotCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCi0JCQkgICBpbnQgKm5fZW50cmllcykKLXsKLQkqbl9lbnRyaWVzID0gQVJSQVlfU0la RShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMik7Ci0JcmV0dXJuIGljbF9j b21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyOwotfQotCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLWpzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2VkcChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgICBpbnQgKm5fZW50cmllcykKLXsKLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsK LQotCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7Ci0JCWlmIChjcnRjX3N0YXRl LT5wb3J0X2Nsb2NrID4gMjcwMDAwKSB7Ci0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShqc2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjIpOwotCQkJcmV0dXJuIGpzbF9jb21i b19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMjsKLQkJfSBlbHNlIHsKLQkJCSpuX2VudHJp ZXMgPSBBUlJBWV9TSVpFKGpzbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyKTsK LQkJCXJldHVybiBqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjsKLQkJfQot CX0KLQotCXJldHVybiBqc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0 YXRlLCBuX2VudHJpZXMpOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3Ry YW5zICoKLWpzbF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAotCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQlp bnQgKm5fZW50cmllcykKLXsKLQlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJ TlRFTF9PVVRQVVRfSERNSSkpCi0JCXJldHVybiBqc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1p KGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci0JZWxzZSBpZiAoaW50ZWxfY3J0Y19o YXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKLQkJcmV0dXJuIGpzbF9nZXRf Y29tYm9fYnVmX3RyYW5zX2VkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotCWVs c2UKLQkJcmV0dXJuIGpzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3Rh dGUsIG5fZW50cmllcyk7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJh bnMgKgotdGdsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKLQkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCi0JCQkgICAgIGludCAqbl9lbnRyaWVzKQotewotCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpF KGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKLQlyZXR1cm4gaWNsX2NvbWJv X3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWk7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25s X2RkaV9idWZfdHJhbnMgKgotdGdsX2dldF9jb21ib19idWZfdHJhbnNfZHAoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCi0JCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKLQkJCSAgIGludCAqbl9lbnRyaWVzKQotewotCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwotCi0JaWYgKGNy dGNfc3RhdGUtPnBvcnRfY2xvY2sgPiAyNzAwMDApIHsKLQkJaWYgKElTX1JPQ0tFVExBS0UoZGV2 X3ByaXYpKSB7Ci0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShya2xfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfZHBfaGJyMl9oYnIzKTsKLQkJCXJldHVybiBya2xfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfZHBfaGJyMl9oYnIzOwotCQl9IGVsc2UgaWYgKElTX1RHTF9VKGRldl9wcml2 KSB8fCBJU19UR0xfWShkZXZfcHJpdikpIHsKLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRn bF91eV9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyKTsKLQkJCXJldHVybiB0Z2xf dXlfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMjsKLQkJfSBlbHNlIHsKLQkJCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9o YnIyKTsKLQkJCXJldHVybiB0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMjsK LQkJfQotCX0gZWxzZSB7Ci0JCWlmIChJU19ST0NLRVRMQUtFKGRldl9wcml2KSkgewotCQkJKm5f ZW50cmllcyA9IEFSUkFZX1NJWkUocmtsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hi cik7Ci0JCQlyZXR1cm4gcmtsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjsKLQkJ fSBlbHNlIHsKLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9jb21ib19waHlfZGRpX3Ry YW5zbGF0aW9uc19kcF9oYnIpOwotCQkJcmV0dXJuIHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19kcF9oYnI7Ci0JCX0KLQl9Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9i dWZfdHJhbnMgKgotdGdsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAotCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAotCQkJICAgIGludCAqbl9lbnRyaWVzKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwotCXN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7Ci0KLQlpZiAoY3J0Y19z dGF0ZS0+cG9ydF9jbG9jayA+IDU0MDAwMCkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShp Y2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjMpOwotCQlyZXR1cm4gaWNsX2Nv bWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIzOwotCX0gZWxzZSBpZiAoZGV2X3ByaXYt PnZidC5lZHAuaG9ibCAmJiAhaW50ZWxfZHAtPmhvYmxfZmFpbGVkKSB7Ci0JCSpuX2VudHJpZXMg PSBBUlJBWV9TSVpFKHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMl9ob2Js KTsKLQkJcmV0dXJuIHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMl9ob2Js OwotCX0gZWxzZSBpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgewotCQkqbl9lbnRy aWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjIp OwotCQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyOwotCX0K LQotCXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRl LCBuX2VudHJpZXMpOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5z ICoKLXRnbF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAotCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQlpbnQg Km5fZW50cmllcykKLXsKLQlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRF TF9PVVRQVVRfSERNSSkpCi0JCXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKGVu Y29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci0JZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNf dHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKLQkJcmV0dXJuIHRnbF9nZXRfY29t Ym9fYnVmX3RyYW5zX2VkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotCWVsc2UK LQkJcmV0dXJuIHRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUs IG5fZW50cmllcyk7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGdsX2RrbF9waHlfZGRpX2J1 Zl90cmFucyAqCi10Z2xfZ2V0X2RrbF9idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKLQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAotCQkJICAgaW50ICpuX2VudHJpZXMpCi17Ci0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUo dGdsX2RrbF9waHlfaGRtaV9kZGlfdHJhbnMpOwotCXJldHVybiB0Z2xfZGtsX3BoeV9oZG1pX2Rk aV90cmFuczsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3Ry YW5zICoKLXRnbF9nZXRfZGtsX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKLQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJ CSBpbnQgKm5fZW50cmllcykKLXsKLQlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3MDAw MCkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xfZGtsX3BoeV9kcF9kZGlfdHJhbnNf aGJyMik7Ci0JCXJldHVybiB0Z2xfZGtsX3BoeV9kcF9kZGlfdHJhbnNfaGJyMjsKLQl9IGVsc2Ug ewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xfZGtsX3BoeV9kcF9kZGlfdHJhbnMpOwot CQlyZXR1cm4gdGdsX2RrbF9waHlfZHBfZGRpX3RyYW5zOwotCX0KLX0KLQotc3RhdGljIGNvbnN0 IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zICoKLXRnbF9nZXRfZGtsX2J1Zl90cmFu cyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJICAgICAgY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCSAgICAgIGludCAqbl9lbnRyaWVzKQotewot CWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkK LQkJcmV0dXJuIHRnbF9nZXRfZGtsX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUs IG5fZW50cmllcyk7Ci0JZWxzZQotCQlyZXR1cm4gdGdsX2dldF9ka2xfYnVmX3RyYW5zX2RwKGVu Y29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci19Ci0KIHN0YXRpYyBpbnQgaW50ZWxfZGRp X2hkbWlfbGV2ZWwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCQkJY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CiAJaW50IG5fZW50 cmllcywgbGV2ZWwsIGRlZmF1bHRfZW50cnk7Ci0JZW51bSBwaHkgcGh5ID0gaW50ZWxfcG9ydF90 b19waHkoZGV2X3ByaXYsIGVuY29kZXItPnBvcnQpOwogCi0JaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTIpIHsKLQkJaWYgKGludGVsX3BoeV9pc19jb21ibyhkZXZfcHJpdiwgcGh5KSkKLQkJ CXRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50 cmllcyk7Ci0JCWVsc2UKLQkJCXRnbF9nZXRfZGtsX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNy dGNfc3RhdGUsICZuX2VudHJpZXMpOwotCQlkZWZhdWx0X2VudHJ5ID0gbl9lbnRyaWVzIC0gMTsK LQl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPT0gMTEpIHsKLQkJaWYgKGludGVsX3Bo eV9pc19jb21ibyhkZXZfcHJpdiwgcGh5KSkKLQkJCWljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hk bWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7Ci0JCWVsc2UKLQkJCWljbF9nZXRf bWdfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7Ci0JCWRl ZmF1bHRfZW50cnkgPSBuX2VudHJpZXMgLSAxOwotCX0gZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShk ZXZfcHJpdikpIHsKLQkJY25sX2dldF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCAmbl9lbnRyaWVz KTsKLQkJZGVmYXVsdF9lbnRyeSA9IG5fZW50cmllcyAtIDE7Ci0JfSBlbHNlIGlmIChJU19HRU45 X0xQKGRldl9wcml2KSkgewotCQlieHRfZ2V0X2J1Zl90cmFuc19oZG1pKGVuY29kZXIsICZuX2Vu dHJpZXMpOwotCQlkZWZhdWx0X2VudHJ5ID0gbl9lbnRyaWVzIC0gMTsKLQl9IGVsc2UgaWYgKElT X0dFTjlfQkMoZGV2X3ByaXYpKSB7Ci0JCWludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2hkbWkoZW5j b2RlciwgJm5fZW50cmllcyk7Ci0JCWRlZmF1bHRfZW50cnkgPSA4OwotCX0gZWxzZSBpZiAoSVNf QlJPQURXRUxMKGRldl9wcml2KSkgewotCQlpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19oZG1pKGVu Y29kZXIsICZuX2VudHJpZXMpOwotCQlkZWZhdWx0X2VudHJ5ID0gNzsKLQl9IGVsc2UgaWYgKElT X0hBU1dFTEwoZGV2X3ByaXYpKSB7Ci0JCWludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2hkbWkoZW5j b2RlciwgJm5fZW50cmllcyk7Ci0JCWRlZmF1bHRfZW50cnkgPSA2OwotCX0gZWxzZSB7Ci0JCWRy bV9XQVJOKCZkZXZfcHJpdi0+ZHJtLCAxLCAiZGRpIHRyYW5zbGF0aW9uIHRhYmxlIG1pc3Npbmdc biIpOworCW5fZW50cmllcyA9IGludGVsX2RkaV9oZG1pX251bV9lbnRyaWVzKGVuY29kZXIsIGNy dGNfc3RhdGUsICZkZWZhdWx0X2VudHJ5KTsKKwlpZiAobl9lbnRyaWVzID09IDApCiAJCXJldHVy biAwOwotCX0KLQotCWlmIChkcm1fV0FSTl9PTl9PTkNFKCZkZXZfcHJpdi0+ZHJtLCBuX2VudHJp ZXMgPT0gMCkpCi0JCXJldHVybiAwOwotCiAJbGV2ZWwgPSBpbnRlbF9iaW9zX2hkbWlfbGV2ZWxf c2hpZnQoZW5jb2Rlcik7CiAJaWYgKGxldmVsIDwgMCkKIAkJbGV2ZWwgPSBkZWZhdWx0X2VudHJ5 OwpAQCAtMTYzNyw2ICsyNTgsOSBAQCB2b2lkIGhzd19mZGlfbGlua190cmFpbihzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKIAl1MzIgdGVtcCwgaSwgcnhfY3Rs X3ZhbCwgZGRpX3BsbF9zZWw7CisJaW50IG5fZW50cmllczsKKworCWludGVsX2RkaV9nZXRfYnVm X3RyYW5zX2ZkaShkZXZfcHJpdiwgJm5fZW50cmllcyk7CiAKIAlpbnRlbF9wcmVwYXJlX2RwX2Rk aV9idWZmZXJzKGVuY29kZXIsIGNydGNfc3RhdGUpOwogCkBAIC0xNjY5LDcgKzI5Myw3IEBAIHZv aWQgaHN3X2ZkaV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCiAJ LyogU3RhcnQgdGhlIHRyYWluaW5nIGl0ZXJhdGluZyB0aHJvdWdoIGF2YWlsYWJsZSB2b2x0YWdl cyBhbmQgZW1waGFzaXMsCiAJICogdGVzdGluZyBlYWNoIHZhbHVlIHR3aWNlLiAqLwotCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhzd19kZGlfdHJhbnNsYXRpb25zX2ZkaSkgKiAyOyBpKysp IHsKKwlmb3IgKGkgPSAwOyBpIDwgbl9lbnRyaWVzICogMjsgaSsrKSB7CiAJCS8qIENvbmZpZ3Vy ZSBEUF9UUF9DVEwgd2l0aCBhdXRvLXRyYWluaW5nICovCiAJCWludGVsX2RlX3dyaXRlKGRldl9w cml2LCBEUF9UUF9DVEwoUE9SVF9FKSwKIAkJCSAgICAgICBEUF9UUF9DVExfRkRJX0FVVE9UUkFJ TiB8CkBAIC0xNzE4LDcgKzM0Miw3IEBAIHZvaWQgaHN3X2ZkaV9saW5rX3RyYWluKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkgKiBMZWF2ZSB0aGluZ3MgZW5hYmxlZCBldmVuIGlm IHdlIGZhaWxlZCB0byB0cmFpbiBGREkuCiAJCSAqIFJlc3VsdHMgaW4gbGVzcyBmaXJld29ya3Mg ZnJvbSB0aGUgc3RhdGUgY2hlY2tlci4KIAkJICovCi0JCWlmIChpID09IEFSUkFZX1NJWkUoaHN3 X2RkaV90cmFuc2xhdGlvbnNfZmRpKSAqIDIgLSAxKSB7CisJCWlmIChpID09IG5fZW50cmllcyAq IDIgLSAxKSB7CiAJCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLCAiRkRJIGxpbmsgdHJhaW5pbmcg ZmFpbGVkIVxuIik7CiAJCQlicmVhazsKIAkJfQpAQCAtMjQ4MCwxMyArMTEwNCw3IEBAIHN0YXRp YyB2b2lkIGJ4dF9kZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAogCWVudW0gcG9ydCBwb3J0ID0gZW5jb2Rlci0+cG9ydDsKIAlpbnQgbl9lbnRyaWVzOwog Ci0JaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkp KQotCQlkZGlfdHJhbnNsYXRpb25zID0gYnh0X2dldF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCAm bl9lbnRyaWVzKTsKLQllbHNlIGlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElO VEVMX09VVFBVVF9FRFApKQotCQlkZGlfdHJhbnNsYXRpb25zID0gYnh0X2dldF9idWZfdHJhbnNf ZWRwKGVuY29kZXIsICZuX2VudHJpZXMpOwotCWVsc2UKLQkJZGRpX3RyYW5zbGF0aW9ucyA9IGJ4 dF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsICZuX2VudHJpZXMpOwotCisJZGRpX3RyYW5zbGF0 aW9ucyA9IGJ4dF9nZXRfYnVmX3RyYW5zKGVuY29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJpZXMp OwogCWlmIChkcm1fV0FSTl9PTl9PTkNFKCZkZXZfcHJpdi0+ZHJtLCAhZGRpX3RyYW5zbGF0aW9u cykpCiAJCXJldHVybjsKIAlpZiAoZHJtX1dBUk5fT05fT05DRSgmZGV2X3ByaXYtPmRybSwgbGV2 ZWwgPj0gbl9lbnRyaWVzKSkKQEAgLTI1MjMsMTUgKzExNDEsOSBAQCBzdGF0aWMgdTggaW50ZWxf ZGRpX2RwX3ZvbHRhZ2VfbWF4KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCWVsc2UKIAkJ CWljbF9nZXRfbWdfYnVmX3RyYW5zKGVuY29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJpZXMpOwog CX0gZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpIHsKLQkJaWYgKGludGVsX2NydGNf aGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCi0JCQljbmxfZ2V0X2J1Zl90 cmFuc19lZHAoZW5jb2RlciwgJm5fZW50cmllcyk7Ci0JCWVsc2UKLQkJCWNubF9nZXRfYnVmX3Ry YW5zX2RwKGVuY29kZXIsICZuX2VudHJpZXMpOworCQljbmxfZ2V0X2J1Zl90cmFucyhlbmNvZGVy LCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVzKTsKIAl9IGVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3By aXYpKSB7Ci0JCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBV VF9FRFApKQotCQkJYnh0X2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIsICZuX2VudHJpZXMpOwot CQllbHNlCi0JCQlieHRfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCAmbl9lbnRyaWVzKTsKKwkJ Ynh0X2dldF9idWZfdHJhbnMoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7CiAJfSBl bHNlIHsKIAkJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVU X0VEUCkpCiAJCQlpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19lZHAoZW5jb2RlciwgJm5fZW50cmll cyk7CkBAIC0yNTY5LDEyICsxMTgxLDcgQEAgc3RhdGljIHZvaWQgY25sX2RkaV92c3dpbmdfcHJv Z3JhbShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAlpbnQgbl9lbnRyaWVzLCBsbjsK IAl1MzIgdmFsOwogCi0JaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxf T1VUUFVUX0hETUkpKQotCQlkZGlfdHJhbnNsYXRpb25zID0gY25sX2dldF9idWZfdHJhbnNfaGRt aShlbmNvZGVyLCAmbl9lbnRyaWVzKTsKLQllbHNlIGlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNy dGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQotCQlkZGlfdHJhbnNsYXRpb25zID0gY25sX2dl dF9idWZfdHJhbnNfZWRwKGVuY29kZXIsICZuX2VudHJpZXMpOwotCWVsc2UKLQkJZGRpX3RyYW5z bGF0aW9ucyA9IGNubF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsICZuX2VudHJpZXMpOworCWRk aV90cmFuc2xhdGlvbnMgPSBjbmxfZ2V0X2J1Zl90cmFucyhlbmNvZGVyLCBjcnRjX3N0YXRlLCAm bl9lbnRyaWVzKTsKIAogCWlmIChkcm1fV0FSTl9PTl9PTkNFKCZkZXZfcHJpdi0+ZHJtLCAhZGRp X3RyYW5zbGF0aW9ucykpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGRpX2J1Zl90cmFucy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kZGlfYnVmX3RyYW5zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi4wYjAwYjMxZGJlNTkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaV9idWZfdHJhbnMuYwpAQCAtMCwwICsxLDEzOTQg QEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKy8qCisgKiBDb3B5cmlnaHQgwqkg MjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2lu Y2x1ZGUgImludGVsX2RkaS5oIgorI2luY2x1ZGUgImludGVsX2RkaV9idWZfdHJhbnMuaCIKKyNp bmNsdWRlICJpbnRlbF9kaXNwbGF5X3R5cGVzLmgiCisKKy8qIEhETUkvRFZJIG1vZGVzIGlnbm9y ZSBldmVyeXRoaW5nIGJ1dCB0aGUgbGFzdCAyIGl0ZW1zLiBTbyB3ZSBzaGFyZQorICogdGhlbSBm b3IgYm90aCBEUCBhbmQgRkRJIHRyYW5zcG9ydHMsIGFsbG93aW5nIHRob3NlIHBvcnRzIHRvCisg KiBhdXRvbWF0aWNhbGx5IGFkYXB0IHRvIEhETUkgY29ubmVjdGlvbnMgYXMgd2VsbAorICovCitz dGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgaHN3X2RkaV90cmFuc2xhdGlvbnNfZHBb XSA9IHsKKwl7IDB4MDBGRkZGRkYsIDB4MDAwNjAwMEUsIDB4MCB9LAorCXsgMHgwMEQ3NUZGRiwg MHgwMDA1MDAwQSwgMHgwIH0sCisJeyAweDAwQzMwRkZGLCAweDAwMDQwMDA2LCAweDAgfSwKKwl7 IDB4ODBBQUFGRkYsIDB4MDAwQjAwMDAsIDB4MCB9LAorCXsgMHgwMEZGRkZGRiwgMHgwMDA1MDAw QSwgMHgwIH0sCisJeyAweDAwRDc1RkZGLCAweDAwMEMwMDA0LCAweDAgfSwKKwl7IDB4ODBDMzBG RkYsIDB4MDAwQjAwMDAsIDB4MCB9LAorCXsgMHgwMEZGRkZGRiwgMHgwMDA0MDAwNiwgMHgwIH0s CisJeyAweDgwRDc1RkZGLCAweDAwMEIwMDAwLCAweDAgfSwKK307CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZGRpX2J1Zl90cmFucyBoc3dfZGRpX3RyYW5zbGF0aW9uc19mZGlbXSA9IHsKKwl7IDB4 MDBGRkZGRkYsIDB4MDAwNzAwMEUsIDB4MCB9LAorCXsgMHgwMEQ3NUZGRiwgMHgwMDBGMDAwQSwg MHgwIH0sCisJeyAweDAwQzMwRkZGLCAweDAwMDYwMDA2LCAweDAgfSwKKwl7IDB4MDBBQUFGRkYs IDB4MDAxRTAwMDAsIDB4MCB9LAorCXsgMHgwMEZGRkZGRiwgMHgwMDBGMDAwQSwgMHgwIH0sCisJ eyAweDAwRDc1RkZGLCAweDAwMTYwMDA0LCAweDAgfSwKKwl7IDB4MDBDMzBGRkYsIDB4MDAxRTAw MDAsIDB4MCB9LAorCXsgMHgwMEZGRkZGRiwgMHgwMDA2MDAwNiwgMHgwIH0sCisJeyAweDAwRDc1 RkZGLCAweDAwMUUwMDAwLCAweDAgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1 Zl90cmFucyBoc3dfZGRpX3RyYW5zbGF0aW9uc19oZG1pW10gPSB7CisJCQkJCS8qIElkeAlOVCBt ViBkCVQgbVYgZAlkYgkqLworCXsgMHgwMEZGRkZGRiwgMHgwMDA2MDAwRSwgMHgwIH0sLyogMDoJ NDAwCTQwMAkwCSovCisJeyAweDAwRTc5RkZGLCAweDAwMEUwMDBDLCAweDAgfSwvKiAxOgk0MDAJ NTAwCTIJKi8KKwl7IDB4MDBENzVGRkYsIDB4MDAwNTAwMEEsIDB4MCB9LC8qIDI6CTQwMAk2MDAJ My41CSovCisJeyAweDAwRkZGRkZGLCAweDAwMDUwMDBBLCAweDAgfSwvKiAzOgk2MDAJNjAwCTAJ Ki8KKwl7IDB4MDBFNzlGRkYsIDB4MDAxRDAwMDcsIDB4MCB9LC8qIDQ6CTYwMAk3NTAJMgkqLwor CXsgMHgwMEQ3NUZGRiwgMHgwMDBDMDAwNCwgMHgwIH0sLyogNToJNjAwCTkwMAkzLjUJKi8KKwl7 IDB4MDBGRkZGRkYsIDB4MDAwNDAwMDYsIDB4MCB9LC8qIDY6CTgwMAk4MDAJMAkqLworCXsgMHg4 MEU3OUZGRiwgMHgwMDAzMDAwMiwgMHgwIH0sLyogNzoJODAwCTEwMDAJMgkqLworCXsgMHgwMEZG RkZGRiwgMHgwMDE0MDAwNSwgMHgwIH0sLyogODoJODUwCTg1MAkwCSovCisJeyAweDAwRkZGRkZG LCAweDAwMEMwMDA0LCAweDAgfSwvKiA5Ogk5MDAJOTAwCTAJKi8KKwl7IDB4MDBGRkZGRkYsIDB4 MDAxQzAwMDMsIDB4MCB9LC8qIDEwOgk5NTAJOTUwCTAJKi8KKwl7IDB4ODBGRkZGRkYsIDB4MDAw MzAwMDIsIDB4MCB9LC8qIDExOgkxMDAwCTEwMDAJMAkqLworfTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBkZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRpb25zX2VkcFtdID0geworCXsgMHgw MEZGRkZGRiwgMHgwMDAwMDAxMiwgMHgwIH0sCisJeyAweDAwRUJBRkZGLCAweDAwMDIwMDExLCAw eDAgfSwKKwl7IDB4MDBDNzFGRkYsIDB4MDAwNjAwMEYsIDB4MCB9LAorCXsgMHgwMEFBQUZGRiwg MHgwMDBFMDAwQSwgMHgwIH0sCisJeyAweDAwRkZGRkZGLCAweDAwMDIwMDExLCAweDAgfSwKKwl7 IDB4MDBEQjZGRkYsIDB4MDAwNTAwMEYsIDB4MCB9LAorCXsgMHgwMEJFRUZGRiwgMHgwMDBBMDAw QywgMHgwIH0sCisJeyAweDAwRkZGRkZGLCAweDAwMDUwMDBGLCAweDAgfSwKKwl7IDB4MDBEQjZG RkYsIDB4MDAwQTAwMEMsIDB4MCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVm X3RyYW5zIGJkd19kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7CisJeyAweDAwRkZGRkZGLCAweDAw MDcwMDBFLCAweDAgfSwKKwl7IDB4MDBENzVGRkYsIDB4MDAwRTAwMEEsIDB4MCB9LAorCXsgMHgw MEJFRkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sCisJeyAweDgwQjJDRkZGLCAweDAwMUIwMDAyLCAw eDAgfSwKKwl7IDB4MDBGRkZGRkYsIDB4MDAwRTAwMEEsIDB4MCB9LAorCXsgMHgwMERCNkZGRiwg MHgwMDE2MDAwNSwgMHgwIH0sCisJeyAweDgwQzcxRkZGLCAweDAwMUEwMDAyLCAweDAgfSwKKwl7 IDB4MDBGN0RGRkYsIDB4MDAxODAwMDQsIDB4MCB9LAorCXsgMHg4MEQ3NUZGRiwgMHgwMDFCMDAw MiwgMHgwIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgYmR3X2Rk aV90cmFuc2xhdGlvbnNfZmRpW10gPSB7CisJeyAweDAwRkZGRkZGLCAweDAwMDEwMDBFLCAweDAg fSwKKwl7IDB4MDBENzVGRkYsIDB4MDAwNDAwMEEsIDB4MCB9LAorCXsgMHgwMEMzMEZGRiwgMHgw MDA3MDAwNiwgMHgwIH0sCisJeyAweDAwQUFBRkZGLCAweDAwMEMwMDAwLCAweDAgfSwKKwl7IDB4 MDBGRkZGRkYsIDB4MDAwNDAwMEEsIDB4MCB9LAorCXsgMHgwMEQ3NUZGRiwgMHgwMDA5MDAwNCwg MHgwIH0sCisJeyAweDAwQzMwRkZGLCAweDAwMEMwMDAwLCAweDAgfSwKKwl7IDB4MDBGRkZGRkYs IDB4MDAwNzAwMDYsIDB4MCB9LAorCXsgMHgwMEQ3NUZGRiwgMHgwMDBDMDAwMCwgMHgwIH0sCit9 OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgYmR3X2RkaV90cmFuc2xhdGlv bnNfaGRtaVtdID0geworCQkJCQkvKiBJZHgJTlQgbVYgZAlUIG1WIGRmCWRiCSovCisJeyAweDAw RkZGRkZGLCAweDAwMDcwMDBFLCAweDAgfSwvKiAwOgk0MDAJNDAwCTAJKi8KKwl7IDB4MDBENzVG RkYsIDB4MDAwRTAwMEEsIDB4MCB9LC8qIDE6CTQwMAk2MDAJMy41CSovCisJeyAweDAwQkVGRkZG LCAweDAwMTQwMDA2LCAweDAgfSwvKiAyOgk0MDAJODAwCTYJKi8KKwl7IDB4MDBGRkZGRkYsIDB4 MDAwOTAwMEQsIDB4MCB9LC8qIDM6CTQ1MAk0NTAJMAkqLworCXsgMHgwMEZGRkZGRiwgMHgwMDBF MDAwQSwgMHgwIH0sLyogNDoJNjAwCTYwMAkwCSovCisJeyAweDAwRDdGRkZGLCAweDAwMTQwMDA2 LCAweDAgfSwvKiA1Ogk2MDAJODAwCTIuNQkqLworCXsgMHg4MENCMkZGRiwgMHgwMDFCMDAwMiwg MHgwIH0sLyogNjoJNjAwCTEwMDAJNC41CSovCisJeyAweDAwRkZGRkZGLCAweDAwMTQwMDA2LCAw eDAgfSwvKiA3Ogk4MDAJODAwCTAJKi8KKwl7IDB4ODBFNzlGRkYsIDB4MDAxQjAwMDIsIDB4MCB9 LC8qIDg6CTgwMAkxMDAwCTIJKi8KKwl7IDB4ODBGRkZGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LC8q IDk6CTEwMDAJMTAwMAkwCSovCit9OworCisvKiBTa3lsYWtlIEggYW5kIFMgKi8KK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0gewor CXsgMHgwMDAwMjAxNiwgMHgwMDAwMDBBMCwgMHgwIH0sCisJeyAweDAwMDA1MDEyLCAweDAwMDAw MDlCLCAweDAgfSwKKwl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwODgsIDB4MCB9LAorCXsgMHg4MDAw OTAxMCwgMHgwMDAwMDBDMCwgMHgxIH0sCisJeyAweDAwMDAyMDE2LCAweDAwMDAwMDlCLCAweDAg fSwKKwl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwODgsIDB4MCB9LAorCXsgMHg4MDAwNzAxMSwgMHgw MDAwMDBDMCwgMHgxIH0sCisJeyAweDAwMDAyMDE2LCAweDAwMDAwMERGLCAweDAgfSwKKwl7IDB4 ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MSB9LAorfTsKKworLyogU2t5bGFrZSBVICovCitzdGF0 aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX3VfZGRpX3RyYW5zbGF0aW9uc19kcFtd ID0geworCXsgMHgwMDAwMjAxQiwgMHgwMDAwMDBBMiwgMHgwIH0sCisJeyAweDAwMDA1MDEyLCAw eDAwMDAwMDg4LCAweDAgfSwKKwl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQ0QsIDB4MSB9LAorCXsg MHg4MDAwOTAxMCwgMHgwMDAwMDBDMCwgMHgxIH0sCisJeyAweDAwMDAyMDFCLCAweDAwMDAwMDlE LCAweDAgfSwKKwl7IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MSB9LAorCXsgMHg4MDAwNzAx MSwgMHgwMDAwMDBDMCwgMHgxIH0sCisJeyAweDAwMDAyMDE2LCAweDAwMDAwMDg4LCAweDAgfSwK Kwl7IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MSB9LAorfTsKKworLyogU2t5bGFrZSBZICov CitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX3lfZGRpX3RyYW5zbGF0aW9u c19kcFtdID0geworCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBMiwgMHgwIH0sCisJeyAweDAwMDA1 MDEyLCAweDAwMDAwMDg4LCAweDAgfSwKKwl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQ0QsIDB4MyB9 LAorCXsgMHg4MDAwOTAxMCwgMHgwMDAwMDBDMCwgMHgzIH0sCisJeyAweDAwMDAwMDE4LCAweDAw MDAwMDlELCAweDAgfSwKKwl7IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MyB9LAorCXsgMHg4 MDAwNzAxMSwgMHgwMDAwMDBDMCwgMHgzIH0sCisJeyAweDAwMDAwMDE4LCAweDAwMDAwMDg4LCAw eDAgfSwKKwl7IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MyB9LAorfTsKKworLyogS2FieWxh a2UgSCBhbmQgUyAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGtibF9kZGlf dHJhbnNsYXRpb25zX2RwW10gPSB7CisJeyAweDAwMDAyMDE2LCAweDAwMDAwMEEwLCAweDAgfSwK Kwl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwOUIsIDB4MCB9LAorCXsgMHgwMDAwNzAxMSwgMHgwMDAw MDA4OCwgMHgwIH0sCisJeyAweDgwMDA5MDEwLCAweDAwMDAwMEMwLCAweDEgfSwKKwl7IDB4MDAw MDIwMTYsIDB4MDAwMDAwOUIsIDB4MCB9LAorCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwgMHgw IH0sCisJeyAweDgwMDA3MDExLCAweDAwMDAwMEMwLCAweDEgfSwKKwl7IDB4MDAwMDIwMTYsIDB4 MDAwMDAwOTcsIDB4MCB9LAorCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgxIH0sCit9Owor CisvKiBLYWJ5bGFrZSBVICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMga2Js X3VfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0geworCXsgMHgwMDAwMjAxQiwgMHgwMDAwMDBBMSwg MHgwIH0sCisJeyAweDAwMDA1MDEyLCAweDAwMDAwMDg4LCAweDAgfSwKKwl7IDB4ODAwMDcwMTEs IDB4MDAwMDAwQ0QsIDB4MyB9LAorCXsgMHg4MDAwOTAxMCwgMHgwMDAwMDBDMCwgMHgzIH0sCisJ eyAweDAwMDAyMDFCLCAweDAwMDAwMDlELCAweDAgfSwKKwl7IDB4ODAwMDUwMTIsIDB4MDAwMDAw QzAsIDB4MyB9LAorCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDMCwgMHgzIH0sCisJeyAweDAwMDAy MDE2LCAweDAwMDAwMDRGLCAweDAgfSwKKwl7IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MyB9 LAorfTsKKworLyogS2FieWxha2UgWSAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3Ry YW5zIGtibF95X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKKwl7IDB4MDAwMDEwMTcsIDB4MDAw MDAwQTEsIDB4MCB9LAorCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwgMHgwIH0sCisJeyAweDgw MDA3MDExLCAweDAwMDAwMENELCAweDMgfSwKKwl7IDB4ODAwMDgwMEYsIDB4MDAwMDAwQzAsIDB4 MyB9LAorCXsgMHgwMDAwMTAxNywgMHgwMDAwMDA5RCwgMHgwIH0sCisJeyAweDgwMDA1MDEyLCAw eDAwMDAwMEMwLCAweDMgfSwKKwl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MyB9LAorCXsg MHgwMDAwMTAxNywgMHgwMDAwMDA0QywgMHgwIH0sCisJeyAweDgwMDA1MDEyLCAweDAwMDAwMEMw LCAweDMgfSwKK307CisKKy8qCisgKiBTa3lsYWtlL0thYnlsYWtlIEggYW5kIFMKKyAqIGVEUCAx LjQgbG93IHZzd2luZyB0cmFuc2xhdGlvbiBwYXJhbWV0ZXJzCisgKi8KK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfZGRpX3RyYW5zbGF0aW9uc19lZHBbXSA9IHsKKwl7IDB4 MDAwMDAwMTgsIDB4MDAwMDAwQTgsIDB4MCB9LAorCXsgMHgwMDAwNDAxMywgMHgwMDAwMDBBOSwg MHgwIH0sCisJeyAweDAwMDA3MDExLCAweDAwMDAwMEEyLCAweDAgfSwKKwl7IDB4MDAwMDkwMTAs IDB4MDAwMDAwOUMsIDB4MCB9LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBOSwgMHgwIH0sCisJ eyAweDAwMDA2MDEzLCAweDAwMDAwMEEyLCAweDAgfSwKKwl7IDB4MDAwMDcwMTEsIDB4MDAwMDAw QTYsIDB4MCB9LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBQiwgMHgwIH0sCisJeyAweDAwMDA3 MDEzLCAweDAwMDAwMDlGLCAweDAgfSwKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwREYsIDB4MCB9 LAorfTsKKworLyoKKyAqIFNreWxha2UvS2FieWxha2UgVQorICogZURQIDEuNCBsb3cgdnN3aW5n IHRyYW5zbGF0aW9uIHBhcmFtZXRlcnMKKyAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVm X3RyYW5zIHNrbF91X2RkaV90cmFuc2xhdGlvbnNfZWRwW10gPSB7CisJeyAweDAwMDAwMDE4LCAw eDAwMDAwMEE4LCAweDAgfSwKKwl7IDB4MDAwMDQwMTMsIDB4MDAwMDAwQTksIDB4MCB9LAorCXsg MHgwMDAwNzAxMSwgMHgwMDAwMDBBMiwgMHgwIH0sCisJeyAweDAwMDA5MDEwLCAweDAwMDAwMDlD LCAweDAgfSwKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTksIDB4MCB9LAorCXsgMHgwMDAwNjAx MywgMHgwMDAwMDBBMiwgMHgwIH0sCisJeyAweDAwMDA3MDExLCAweDAwMDAwMEE2LCAweDAgfSwK Kwl7IDB4MDAwMDIwMTYsIDB4MDAwMDAwQUIsIDB4MCB9LAorCXsgMHgwMDAwNTAxMywgMHgwMDAw MDA5RiwgMHgwIH0sCisJeyAweDAwMDAwMDE4LCAweDAwMDAwMERGLCAweDAgfSwKK307CisKKy8q CisgKiBTa3lsYWtlL0thYnlsYWtlIFkKKyAqIGVEUCAxLjQgbG93IHZzd2luZyB0cmFuc2xhdGlv biBwYXJhbWV0ZXJzCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xf eV9kZGlfdHJhbnNsYXRpb25zX2VkcFtdID0geworCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBOCwg MHgwIH0sCisJeyAweDAwMDA0MDEzLCAweDAwMDAwMEFCLCAweDAgfSwKKwl7IDB4MDAwMDcwMTEs IDB4MDAwMDAwQTQsIDB4MCB9LAorCXsgMHgwMDAwOTAxMCwgMHgwMDAwMDBERiwgMHgwIH0sCisJ eyAweDAwMDAwMDE4LCAweDAwMDAwMEFBLCAweDAgfSwKKwl7IDB4MDAwMDYwMTMsIDB4MDAwMDAw QTQsIDB4MCB9LAorCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDA5RCwgMHgwIH0sCisJeyAweDAwMDAw MDE4LCAweDAwMDAwMEEwLCAweDAgfSwKKwl7IDB4MDAwMDYwMTIsIDB4MDAwMDAwREYsIDB4MCB9 LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA4QSwgMHgwIH0sCit9OworCisvKiBTa3lsYWtlL0th YnlsYWtlIFUsIEggYW5kIFMgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBz a2xfZGRpX3RyYW5zbGF0aW9uc19oZG1pW10gPSB7CisJeyAweDAwMDAwMDE4LCAweDAwMDAwMEFD LCAweDAgfSwKKwl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwOUQsIDB4MCB9LAorCXsgMHgwMDAwNzAx MSwgMHgwMDAwMDA4OCwgMHgwIH0sCisJeyAweDAwMDAwMDE4LCAweDAwMDAwMEExLCAweDAgfSwK Kwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwOTgsIDB4MCB9LAorCXsgMHgwMDAwNDAxMywgMHgwMDAw MDA4OCwgMHgwIH0sCisJeyAweDgwMDA2MDEyLCAweDAwMDAwMENELCAweDEgfSwKKwl7IDB4MDAw MDAwMTgsIDB4MDAwMDAwREYsIDB4MCB9LAorCXsgMHg4MDAwMzAxNSwgMHgwMDAwMDBDRCwgMHgx IH0sCS8qIERlZmF1bHQgKi8KKwl7IDB4ODAwMDMwMTUsIDB4MDAwMDAwQzAsIDB4MSB9LAorCXsg MHg4MDAwMDAxOCwgMHgwMDAwMDBDMCwgMHgxIH0sCit9OworCisvKiBTa3lsYWtlL0thYnlsYWtl IFkgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfeV9kZGlfdHJhbnNs YXRpb25zX2hkbWlbXSA9IHsKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTEsIDB4MCB9LAorCXsg MHgwMDAwNTAxMiwgMHgwMDAwMDBERiwgMHgwIH0sCisJeyAweDgwMDA3MDExLCAweDAwMDAwMENC LCAweDMgfSwKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTQsIDB4MCB9LAorCXsgMHgwMDAwMDAx OCwgMHgwMDAwMDA5RCwgMHgwIH0sCisJeyAweDAwMDA0MDEzLCAweDAwMDAwMDgwLCAweDAgfSwK Kwl7IDB4ODAwMDYwMTMsIDB4MDAwMDAwQzAsIDB4MyB9LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAw MDA4QSwgMHgwIH0sCisJeyAweDgwMDAzMDE1LCAweDAwMDAwMEMwLCAweDMgfSwJLyogRGVmYXVs dCAqLworCXsgMHg4MDAwMzAxNSwgMHgwMDAwMDBDMCwgMHgzIH0sCisJeyAweDgwMDAwMDE4LCAw eDAwMDAwMEMwLCAweDMgfSwKK307CisKKworc3RhdGljIGNvbnN0IHN0cnVjdCBieHRfZGRpX2J1 Zl90cmFucyBieHRfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0geworCQkJCQkvKiBJZHgJTlQgbVYg ZGlmZglkYiAgKi8KKwl7IDUyLCAgMHg5QSwgMCwgMTI4LCB9LAkvKiAwOgk0MDAJCTAgICAqLwor CXsgNzgsICAweDlBLCAwLCA4NSwgIH0sCS8qIDE6CTQwMAkJMy41ICovCisJeyAxMDQsIDB4OUEs IDAsIDY0LCAgfSwJLyogMjoJNDAwCQk2ICAgKi8KKwl7IDE1NCwgMHg5QSwgMCwgNDMsICB9LAkv KiAzOgk0MDAJCTkuNSAqLworCXsgNzcsICAweDlBLCAwLCAxMjgsIH0sCS8qIDQ6CTYwMAkJMCAg ICovCisJeyAxMTYsIDB4OUEsIDAsIDg1LCAgfSwJLyogNToJNjAwCQkzLjUgKi8KKwl7IDE1NCwg MHg5QSwgMCwgNjQsICB9LAkvKiA2Ogk2MDAJCTYgICAqLworCXsgMTAyLCAweDlBLCAwLCAxMjgs IH0sCS8qIDc6CTgwMAkJMCAgICovCisJeyAxNTQsIDB4OUEsIDAsIDg1LCAgfSwJLyogODoJODAw CQkzLjUgKi8KKwl7IDE1NCwgMHg5QSwgMSwgMTI4LCB9LAkvKiA5OgkxMjAwCQkwICAgKi8KK307 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgYnh0X2RkaV90cmFuc2xh dGlvbnNfZWRwW10gPSB7CisJCQkJCS8qIElkeAlOVCBtViBkaWZmCWRiICAqLworCXsgMjYsIDAs IDAsIDEyOCwgfSwJLyogMDoJMjAwCQkwICAgKi8KKwl7IDM4LCAwLCAwLCAxMTIsIH0sCS8qIDE6 CTIwMAkJMS41ICovCisJeyA0OCwgMCwgMCwgOTYsICB9LAkvKiAyOgkyMDAJCTQgICAqLworCXsg NTQsIDAsIDAsIDY5LCAgfSwJLyogMzoJMjAwCQk2ICAgKi8KKwl7IDMyLCAwLCAwLCAxMjgsIH0s CS8qIDQ6CTI1MAkJMCAgICovCisJeyA0OCwgMCwgMCwgMTA0LCB9LAkvKiA1OgkyNTAJCTEuNSAq LworCXsgNTQsIDAsIDAsIDg1LCAgfSwJLyogNjoJMjUwCQk0ICAgKi8KKwl7IDQzLCAwLCAwLCAx MjgsIH0sCS8qIDc6CTMwMAkJMCAgICovCisJeyA1NCwgMCwgMCwgMTAxLCB9LAkvKiA4OgkzMDAJ CTEuNSAqLworCXsgNDgsIDAsIDAsIDEyOCwgfSwJLyogOToJMzAwCQkwICAgKi8KK307CisKKy8q IEJTcGVjIGhhcyAyIHJlY29tbWVuZGVkIHZhbHVlcyAtIGVudHJpZXMgMCBhbmQgOC4KKyAqIFVz aW5nIHRoZSBlbnRyeSB3aXRoIGhpZ2hlciB2c3dpbmcuCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgYnh0X2RkaV9idWZfdHJhbnMgYnh0X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtdID0geworCQkJ CQkvKiBJZHgJTlQgbVYgZGlmZglkYiAgKi8KKwl7IDUyLCAgMHg5QSwgMCwgMTI4LCB9LAkvKiAw Ogk0MDAJCTAgICAqLworCXsgNTIsICAweDlBLCAwLCA4NSwgIH0sCS8qIDE6CTQwMAkJMy41ICov CisJeyA1MiwgIDB4OUEsIDAsIDY0LCAgfSwJLyogMjoJNDAwCQk2ICAgKi8KKwl7IDQyLCAgMHg5 QSwgMCwgNDMsICB9LAkvKiAzOgk0MDAJCTkuNSAqLworCXsgNzcsICAweDlBLCAwLCAxMjgsIH0s CS8qIDQ6CTYwMAkJMCAgICovCisJeyA3NywgIDB4OUEsIDAsIDg1LCAgfSwJLyogNToJNjAwCQkz LjUgKi8KKwl7IDc3LCAgMHg5QSwgMCwgNjQsICB9LAkvKiA2Ogk2MDAJCTYgICAqLworCXsgMTAy LCAweDlBLCAwLCAxMjgsIH0sCS8qIDc6CTgwMAkJMCAgICovCisJeyAxMDIsIDB4OUEsIDAsIDg1 LCAgfSwJLyogODoJODAwCQkzLjUgKi8KKwl7IDE1NCwgMHg5QSwgMSwgMTI4LCB9LAkvKiA5Ogkx MjAwCQkwICAgKi8KK307CisKKy8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lP IDAuODVWIGZvciBEUCAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBj bmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzg1VltdID0geworCQkJCQkJLyogTlQgbVYgVHJhbnMg bVYgZGIgICAgKi8KKwl7IDB4QSwgMHg1RCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAz NTAgICAgICAwLjAgICAqLworCXsgMHhBLCAweDZBLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDM1 MCAgIDUwMCAgICAgIDMuMSAgICovCisJeyAweEIsIDB4N0EsIDB4MzIsIDB4MDAsIDB4MEQgfSwJ LyogMzUwICAgNzAwICAgICAgNi4wICAgKi8KKwl7IDB4NiwgMHg3QywgMHgyRCwgMHgwMCwgMHgx MiB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLworCXsgMHhBLCAweDY5LCAweDNGLCAweDAw LCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCisJeyAweEIsIDB4N0EsIDB4MzYs IDB4MDAsIDB4MDkgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KKwl7IDB4NiwgMHg3Qywg MHgzMCwgMHgwMCwgMHgwRiB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLworCXsgMHhCLCAw eDdELCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcyNSAgICAgIDAuOSAgICovCisJeyAw eDYsIDB4N0MsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8K Kwl7IDB4NiwgMHg3QiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAg ICAqLworfTsKKworLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMC44NVYg Zm9yIEhETUkgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2Rk aV90cmFuc2xhdGlvbnNfaGRtaV8wXzg1VltdID0geworCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYg ZGIgICAgKi8KKwl7IDB4QSwgMHg2MCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0NTAgICA0NTAg ICAgICAwLjAgICAqLworCXsgMHhCLCAweDczLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDQ1MCAg IDY1MCAgICAgIDMuMiAgICovCisJeyAweDYsIDB4N0YsIDB4MzEsIDB4MDAsIDB4MEUgfSwJLyog NDUwICAgODUwICAgICAgNS41ICAgKi8KKwl7IDB4QiwgMHg3MywgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiA2NTAgICA2NTAgICAgICAwLjAgICAqLworCXsgMHg2LCAweDdGLCAweDM3LCAweDAwLCAw eDA4IH0sCS8qIDY1MCAgIDg1MCAgICAgIDIuMyAgICovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4 MDAsIDB4MDAgfSwJLyogODUwICAgODUwICAgICAgMC4wICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgz NSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA4NTAgICAgICAzLjAgICAqLworfTsKKworLyogVm9s dGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMC44NVYgZm9yIGVEUCAqLworc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBf MF84NVZbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEsIDB4 NjYsIDB4M0EsIDB4MDAsIDB4MDUgfSwJLyogMzg0ICAgNTAwICAgICAgMi4zICAgKi8KKwl7IDB4 MCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAxNTMgICAyMDAgICAgICAyLjMgICAqLwor CXsgMHg4LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDE5MiAgIDI1MCAgICAgIDIuMyAg ICovCisJeyAweDEsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjMwICAgMzAwICAgICAg Mi4zICAgKi8KKwl7IDB4OSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyNjkgICAzNTAg ICAgICAyLjMgICAqLworCXsgMHhBLCAweDY2LCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDQ0NiAg IDUwMCAgICAgIDEuMCAgICovCisJeyAweEIsIDB4NzAsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyog NDYwICAgNjAwICAgICAgMi4zICAgKi8KKwl7IDB4QywgMHg3NSwgMHgzQywgMHgwMCwgMHgwMyB9 LAkvKiA1MzcgICA3MDAgICAgICAyLjMgICAqLworCXsgMHgyLCAweDdGLCAweDNGLCAweDAwLCAw eDAwIH0sCS8qIDQwMCAgIDQwMCAgICAgIDAuMCAgICovCit9OworCisvKiBWb2x0YWdlIFN3aW5n IFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjk1ViBmb3IgRFAgKi8KK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF85NVZbXSA9IHsK KwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEsIDB4NUQsIDB4M0YsIDB4 MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KKwl7IDB4QSwgMHg2QSwgMHgz OCwgMHgwMCwgMHgwNyB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAqLworCXsgMHhCLCAweDdB LCAweDMyLCAweDAwLCAweDBEIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAgICovCisJeyAweDYs IDB4N0MsIDB4MkQsIDB4MDAsIDB4MTIgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8KKwl7 IDB4QSwgMHg2OSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1MDAgICAgICAwLjAgICAq LworCXsgMHhCLCAweDdBLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDUwMCAgIDcwMCAgICAgIDIu OSAgICovCisJeyAweDYsIDB4N0MsIDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogNTAwICAgOTAwICAg ICAgNS4xICAgKi8KKwl7IDB4QiwgMHg3RCwgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA2NTAgICA3 MjUgICAgICAwLjkgICAqLworCXsgMHg2LCAweDdDLCAweDM0LCAweDAwLCAweDBCIH0sCS8qIDYw MCAgIDkwMCAgICAgIDMuNSAgICovCisJeyAweDYsIDB4N0IsIDB4M0YsIDB4MDAsIDB4MDAgfSwJ LyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KK307CisKKy8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3Jh bW1pbmcgZm9yIFZjY0lPIDAuOTVWIGZvciBIRE1JICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGNu bF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF85NVZbXSA9IHsKKwkJ CQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEsIDB4NUMsIDB4M0YsIDB4MDAs IDB4MDAgfSwJLyogNDAwICAgNDAwICAgICAgMC4wICAgKi8KKwl7IDB4QiwgMHg2OSwgMHgzNywg MHgwMCwgMHgwOCB9LAkvKiA0MDAgICA2MDAgICAgICAzLjUgICAqLworCXsgMHg1LCAweDc2LCAw eDMxLCAweDAwLCAweDBFIH0sCS8qIDQwMCAgIDgwMCAgICAgIDYuMCAgICovCisJeyAweEEsIDB4 NUUsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDUwICAgNDUwICAgICAgMC4wICAgKi8KKwl7IDB4 QiwgMHg2OSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA2MDAgICA2MDAgICAgICAwLjAgICAqLwor CXsgMHhCLCAweDc5LCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDYwMCAgIDg1MCAgICAgIDMuMCAg ICovCisJeyAweDYsIDB4N0QsIDB4MzIsIDB4MDAsIDB4MEQgfSwJLyogNjAwICAgMTAwMCAgICAg NC40ICAgKi8KKwl7IDB4NSwgMHg3NiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA4MDAgICA4MDAg ICAgICAwLjAgICAqLworCXsgMHg2LCAweDdELCAweDM5LCAweDAwLCAweDA2IH0sCS8qIDgwMCAg IDEwMDAgICAgIDEuOSAgICovCisJeyAweDYsIDB4N0YsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyog ODUwICAgMTA1MCAgICAgMS44ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiAxMDUwICAxMDUwICAgICAwLjAgICAqLworfTsKKworLyogVm9sdGFnZSBTd2luZyBQcm9n cmFtbWluZyBmb3IgVmNjSU8gMC45NVYgZm9yIGVEUCAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBj bmxfZGRpX2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF85NVZbXSA9IHsKKwkJ CQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEsIDB4NjEsIDB4M0EsIDB4MDAs IDB4MDUgfSwJLyogMzg0ICAgNTAwICAgICAgMi4zICAgKi8KKwl7IDB4MCwgMHg3RiwgMHgzOCwg MHgwMCwgMHgwNyB9LAkvKiAxNTMgICAyMDAgICAgICAyLjMgICAqLworCXsgMHg4LCAweDdGLCAw eDM4LCAweDAwLCAweDA3IH0sCS8qIDE5MiAgIDI1MCAgICAgIDIuMyAgICovCisJeyAweDEsIDB4 N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjMwICAgMzAwICAgICAgMi4zICAgKi8KKwl7IDB4 OSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyNjkgICAzNTAgICAgICAyLjMgICAqLwor CXsgMHhBLCAweDYxLCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDQ0NiAgIDUwMCAgICAgIDEuMCAg ICovCisJeyAweEIsIDB4NjgsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogNDYwICAgNjAwICAgICAg Mi4zICAgKi8KKwl7IDB4QywgMHg2RSwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA1MzcgICA3MDAg ICAgICAyLjMgICAqLworCXsgMHg0LCAweDdGLCAweDNBLCAweDAwLCAweDA1IH0sCS8qIDQ2MCAg IDYwMCAgICAgIDIuMyAgICovCisJeyAweDIsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyog NDAwICAgNDAwICAgICAgMC4wICAgKi8KK307CisKKy8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1p bmcgZm9yIFZjY0lPIDEuMDVWIGZvciBEUCAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRp X2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8xXzA1VltdID0geworCQkJCQkJLyog TlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7IDB4QSwgMHg1OCwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiA0MDAgICA0MDAgICAgICAwLjAgICAqLworCXsgMHhCLCAweDY0LCAweDM3LCAweDAwLCAw eDA4IH0sCS8qIDQwMCAgIDYwMCAgICAgIDMuNSAgICovCisJeyAweDUsIDB4NzAsIDB4MzEsIDB4 MDAsIDB4MEUgfSwJLyogNDAwICAgODAwICAgICAgNi4wICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgy QywgMHgwMCwgMHgxMyB9LAkvKiA0MDAgICAxMDUwICAgICA4LjQgICAqLworCXsgMHhCLCAweDY0 LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDYwMCAgIDYwMCAgICAgIDAuMCAgICovCisJeyAweDUs IDB4NzMsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgODUwICAgICAgMy4wICAgKi8KKwl7 IDB4NiwgMHg3RiwgMHgzMCwgMHgwMCwgMHgwRiB9LAkvKiA1NTAgICAxMDUwICAgICA1LjYgICAq LworCXsgMHg1LCAweDc2LCAweDNFLCAweDAwLCAweDAxIH0sCS8qIDg1MCAgIDkwMCAgICAgIDAu NSAgICovCisJeyAweDYsIDB4N0YsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNzUwICAgMTA1MCAg ICAgMi45ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAxMDUwICAx MDUwICAgICAwLjAgICAqLworfTsKKworLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3Ig VmNjSU8gMS4wNVYgZm9yIEhETUkgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZf dHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8xXzA1VltdID0geworCQkJCQkJLyogTlQg bVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7IDB4QSwgMHg1OCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkv KiA0MDAgICA0MDAgICAgICAwLjAgICAqLworCXsgMHhCLCAweDY0LCAweDM3LCAweDAwLCAweDA4 IH0sCS8qIDQwMCAgIDYwMCAgICAgIDMuNSAgICovCisJeyAweDUsIDB4NzAsIDB4MzEsIDB4MDAs IDB4MEUgfSwJLyogNDAwICAgODAwICAgICAgNi4wICAgKi8KKwl7IDB4QSwgMHg1QiwgMHgzRiwg MHgwMCwgMHgwMCB9LAkvKiA0NTAgICA0NTAgICAgICAwLjAgICAqLworCXsgMHhCLCAweDY0LCAw eDNGLCAweDAwLCAweDAwIH0sCS8qIDYwMCAgIDYwMCAgICAgIDAuMCAgICovCisJeyAweDUsIDB4 NzMsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgODUwICAgICAgMy4wICAgKi8KKwl7IDB4 NiwgMHg3QywgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiA2MDAgICAxMDAwICAgICA0LjQgICAqLwor CXsgMHg1LCAweDcwLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDgwMCAgIDgwMCAgICAgIDAuMCAg ICovCisJeyAweDYsIDB4N0MsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogODAwICAgMTAwMCAgICAg MS45ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA4NTAgICAxMDUw ICAgICAxLjggICAqLworCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEwNTAg IDEwNTAgICAgIDAuMCAgICovCit9OworCisvKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZv ciBWY2NJTyAxLjA1ViBmb3IgZURQICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVm X3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1VltdID0geworCQkJCQkJLyogTlQg bVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7IDB4QSwgMHg1RSwgMHgzQSwgMHgwMCwgMHgwNSB9LAkv KiAzODQgICA1MDAgICAgICAyLjMgICAqLworCXsgMHgwLCAweDdGLCAweDM4LCAweDAwLCAweDA3 IH0sCS8qIDE1MyAgIDIwMCAgICAgIDIuMyAgICovCisJeyAweDgsIDB4N0YsIDB4MzgsIDB4MDAs IDB4MDcgfSwJLyogMTkyICAgMjUwICAgICAgMi4zICAgKi8KKwl7IDB4MSwgMHg3RiwgMHgzOCwg MHgwMCwgMHgwNyB9LAkvKiAyMzAgICAzMDAgICAgICAyLjMgICAqLworCXsgMHg5LCAweDdGLCAw eDM4LCAweDAwLCAweDA3IH0sCS8qIDI2OSAgIDM1MCAgICAgIDIuMyAgICovCisJeyAweEEsIDB4 NUUsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNDQ2ICAgNTAwICAgICAgMS4wICAgKi8KKwl7IDB4 QiwgMHg2NCwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA0NjAgICA2MDAgICAgICAyLjMgICAqLwor CXsgMHhFLCAweDZBLCAweDM5LCAweDAwLCAweDA2IH0sCS8qIDUzNyAgIDcwMCAgICAgIDIuMyAg ICovCisJeyAweDIsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDAwICAgNDAwICAgICAg MC4wICAgKi8KK307CisKKy8qIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9ucyAqLworc3Rh dGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFu c2xhdGlvbnNfZHBfaGJyMltdID0geworCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8K Kwl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAg ICAqLworCXsgMHhBLCAweDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDM1MCAgIDUwMCAgICAg IDMuMSAgICovCisJeyAweEMsIDB4NzEsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogMzUwICAgNzAw ICAgICAgNi4wICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgyQiwgMHgwMCwgMHgxNCB9LAkvKiAzNTAg ICA5MDAgICAgICA4LjIgICAqLworCXsgMHhBLCAweDRDLCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDUwMCAgIDUwMCAgICAgIDAuMCAgICovCisJeyAweEMsIDB4NzMsIDB4MzQsIDB4MDAsIDB4MEIg fSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgyRiwgMHgwMCwg MHgxMCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLworCXsgMHhDLCAweDZDLCAweDNDLCAw eDAwLCAweDAzIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCisJeyAweDYsIDB4N0YsIDB4 MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KKwl7IDB4NiwgMHg3 RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLworfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfZWRwX2hicjJbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAg ICovCisJeyAweDAsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMjAwICAgMjAwICAgICAg MC4wICAgKi8KKwl7IDB4OCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyMDAgICAyNTAg ICAgICAxLjkgICAqLworCXsgMHgxLCAweDdGLCAweDMzLCAweDAwLCAweDBDIH0sCS8qIDIwMCAg IDMwMCAgICAgIDMuNSAgICovCisJeyAweDksIDB4N0YsIDB4MzEsIDB4MDAsIDB4MEUgfSwJLyog MjAwICAgMzUwICAgICAgNC45ICAgKi8KKwl7IDB4OCwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiAyNTAgICAyNTAgICAgICAwLjAgICAqLworCXsgMHgxLCAweDdGLCAweDM4LCAweDAwLCAw eDA3IH0sCS8qIDI1MCAgIDMwMCAgICAgIDEuNiAgICovCisJeyAweDksIDB4N0YsIDB4MzUsIDB4 MDAsIDB4MEEgfSwJLyogMjUwICAgMzUwICAgICAgMi45ICAgKi8KKwl7IDB4MSwgMHg3RiwgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiAzMDAgICAzMDAgICAgICAwLjAgICAqLworCXsgMHg5LCAweDdG LCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDMwMCAgIDM1MCAgICAgIDEuMyAgICovCisJeyAweDks IDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KK307 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3BoeV9k ZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIzW10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFucyBtViBk YiAgICAqLworCXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAg ICAgIDAuMCAgICovCisJeyAweEEsIDB4NEYsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogMzUwICAg NTAwICAgICAgMy4xICAgKi8KKwl7IDB4QywgMHg3MSwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAz NTAgICA3MDAgICAgICA2LjAgICAqLworCXsgMHg2LCAweDdGLCAweDJCLCAweDAwLCAweDE0IH0s CS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCisJeyAweEEsIDB4NEMsIDB4M0YsIDB4MDAsIDB4 MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KKwl7IDB4QywgMHg3MywgMHgzNCwgMHgw MCwgMHgwQiB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLworCXsgMHg2LCAweDdGLCAweDJG LCAweDAwLCAweDEwIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCisJeyAweEMsIDB4NkMs IDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KKwl7IDB4Niwg MHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLworCXsg MHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICov Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19w aHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pW10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFucyBtViBk YiAgICAqLworCXsgMHhBLCAweDYwLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQ1MCAgIDQ1MCAg ICAgIDAuMCAgICovCisJeyAweEIsIDB4NzMsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNDUwICAg NjUwICAgICAgMy4yICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzMSwgMHgwMCwgMHgwRSB9LAkvKiA0 NTAgICA4NTAgICAgICA1LjUgICAqLworCXsgMHhCLCAweDczLCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDY1MCAgIDY1MCAgICAgIDAuMCAgIEFMUyAqLworCXsgMHg2LCAweDdGLCAweDM3LCAweDAw LCAweDA4IH0sCS8qIDY1MCAgIDg1MCAgICAgIDIuMyAgICovCisJeyAweDYsIDB4N0YsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogODUwICAgODUwICAgICAgMC4wICAgKi8KKwl7IDB4NiwgMHg3Riwg MHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA4NTAgICAgICAzLjAgICAqLworfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBlaGxfY29tYm9fcGh5X2RkaV90cmFu c2xhdGlvbnNfZHBbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAw eEEsIDB4MzMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8K Kwl7IDB4QSwgMHg0NywgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEg ICAqLworCXsgMHhDLCAweDY0LCAweDM0LCAweDAwLCAweDBCIH0sCS8qIDM1MCAgIDcwMCAgICAg IDYuMCAgICovCisJeyAweDYsIDB4N0YsIDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogMzUwICAgOTAw ICAgICAgOC4yICAgKi8KKwl7IDB4QSwgMHg0NiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAg ICA1MDAgICAgICAwLjAgICAqLworCXsgMHhDLCAweDY0LCAweDM4LCAweDAwLCAweDA3IH0sCS8q IDUwMCAgIDcwMCAgICAgIDIuOSAgICovCisJeyAweDYsIDB4N0YsIDB4MzIsIDB4MDAsIDB4MEQg fSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KKwl7IDB4QywgMHg2MSwgMHgzRiwgMHgwMCwg MHgwMCB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLworCXsgMHg2LCAweDdGLCAweDM4LCAw eDAwLCAweDA3IH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCisJeyAweDYsIDB4N0YsIDB4 M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KK307CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMganNsX2NvbWJvX3BoeV9kZGlfdHJhbnNs YXRpb25zX2VkcF9oYnJbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJ eyAweDgsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDIwMCAgIDIwMCAgICAg IDAuMCAgICovCisJeyAweDgsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwgICAgICAgIC8qIDIw MCAgIDI1MCAgICAgIDEuOSAgICovCisJeyAweDEsIDB4N0YsIDB4MzMsIDB4MDAsIDB4MEMgfSwg ICAgICAgIC8qIDIwMCAgIDMwMCAgICAgIDMuNSAgICovCisJeyAweEEsIDB4MzUsIDB4MzYsIDB4 MDAsIDB4MDkgfSwgICAgICAgIC8qIDIwMCAgIDM1MCAgICAgIDQuOSAgICovCisJeyAweDgsIDB4 N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDI1MCAgIDI1MCAgICAgIDAuMCAgICov CisJeyAweDEsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwgICAgICAgIC8qIDI1MCAgIDMwMCAg ICAgIDEuNiAgICovCisJeyAweEEsIDB4MzUsIDB4MzUsIDB4MDAsIDB4MEEgfSwgICAgICAgIC8q IDI1MCAgIDM1MCAgICAgIDIuOSAgICovCisJeyAweDEsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAg fSwgICAgICAgIC8qIDMwMCAgIDMwMCAgICAgIDAuMCAgICovCisJeyAweEEsIDB4MzUsIDB4Mzgs IDB4MDAsIDB4MDcgfSwgICAgICAgIC8qIDMwMCAgIDM1MCAgICAgIDEuMyAgICovCisJeyAweEEs IDB4MzUsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDM1MCAgIDM1MCAgICAgIDAuMCAg ICovCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGpzbF9jb21i b19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMltdID0geworCQkJCQkJLyogTlQgbVYgVHJh bnMgbVYgZGIgICAgKi8KKwl7IDB4OCwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAgICAgICAg LyogMjAwICAgMjAwICAgICAgMC4wICAgKi8KKwl7IDB4OCwgMHg3RiwgMHgzRiwgMHgwMCwgMHgw MCB9LCAgICAgICAgLyogMjAwICAgMjUwICAgICAgMS45ICAgKi8KKwl7IDB4MSwgMHg3RiwgMHgz RCwgMHgwMCwgMHgwMiB9LCAgICAgICAgLyogMjAwICAgMzAwICAgICAgMy41ICAgKi8KKwl7IDB4 QSwgMHgzNSwgMHgzOCwgMHgwMCwgMHgwNyB9LCAgICAgICAgLyogMjAwICAgMzUwICAgICAgNC45 ICAgKi8KKwl7IDB4OCwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAgICAgICAgLyogMjUwICAg MjUwICAgICAgMC4wICAgKi8KKwl7IDB4MSwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAgICAg ICAgLyogMjUwICAgMzAwICAgICAgMS42ICAgKi8KKwl7IDB4QSwgMHgzNSwgMHgzQSwgMHgwMCwg MHgwNSB9LCAgICAgICAgLyogMjUwICAgMzUwICAgICAgMi45ICAgKi8KKwl7IDB4MSwgMHg3Riwg MHgzRiwgMHgwMCwgMHgwMCB9LCAgICAgICAgLyogMzAwICAgMzAwICAgICAgMC4wICAgKi8KKwl7 IDB4QSwgMHgzNSwgMHgzOCwgMHgwMCwgMHgwNyB9LCAgICAgICAgLyogMzAwICAgMzUwICAgICAg MS4zICAgKi8KKwl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9LCAgICAgICAgLyogMzUw ICAgMzUwICAgICAgMC4wICAgKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9i dWZfdHJhbnMgZGcxX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX3Jicl9oYnJbXSA9IHsK KwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEsIDB4MzIsIDB4M0YsIDB4 MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KKwl7IDB4QSwgMHg0OCwgMHgz NSwgMHgwMCwgMHgwQSB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAqLworCXsgMHhDLCAweDYz LCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAgICovCisJeyAweDYs IDB4N0YsIDB4MkMsIDB4MDAsIDB4MTMgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8KKwl7 IDB4QSwgMHg0MywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1MDAgICAgICAwLjAgICAq LworCXsgMHhDLCAweDYwLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDUwMCAgIDcwMCAgICAgIDIu OSAgICovCisJeyAweDYsIDB4N0YsIDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogNTAwICAgOTAwICAg ICAgNS4xICAgKi8KKwl7IDB4QywgMHg2MCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA2NTAgICA3 MDAgICAgICAwLjYgICAqLworCXsgMHg2LCAweDdGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDYw MCAgIDkwMCAgICAgIDMuNSAgICovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJ LyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25s X2RkaV9idWZfdHJhbnMgZGcxX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJfaGJy M1tdID0geworCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7IDB4QSwgMHgzMiwg MHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLworCXsgMHhBLCAw eDQ4LCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCisJeyAw eEMsIDB4NjMsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8K Kwl7IDB4NiwgMHg3RiwgMHgyQywgMHgwMCwgMHgxMyB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIg ICAqLworCXsgMHhBLCAweDQzLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAg IDAuMCAgICovCisJeyAweEMsIDB4NjAsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNTAwICAgNzAw ICAgICAgMi45ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzMCwgMHgwMCwgMHgwRiB9LAkvKiA1MDAg ICA5MDAgICAgICA1LjEgICAqLworCXsgMHhDLCAweDU4LCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDY1MCAgIDcwMCAgICAgIDAuNiAgICovCisJeyAweDYsIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEg fSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwg MHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLworfTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25z X3Jicl9oYnJbXSA9IHsKKwkJCQkvKiBWb2x0YWdlIHN3aW5nICBwcmUtZW1waGFzaXMgKi8KKwl7 IDB4MTgsIDB4MDAsIDB4MDAgfSwJLyogMCAgICAgICAgICAgICAgMCAgICovCisJeyAweDFELCAw eDAwLCAweDA1IH0sCS8qIDAgICAgICAgICAgICAgIDEgICAqLworCXsgMHgyNCwgMHgwMCwgMHgw QyB9LAkvKiAwICAgICAgICAgICAgICAyICAgKi8KKwl7IDB4MkIsIDB4MDAsIDB4MTQgfSwJLyog MCAgICAgICAgICAgICAgMyAgICovCisJeyAweDIxLCAweDAwLCAweDAwIH0sCS8qIDEgICAgICAg ICAgICAgIDAgICAqLworCXsgMHgyQiwgMHgwMCwgMHgwOCB9LAkvKiAxICAgICAgICAgICAgICAx ICAgKi8KKwl7IDB4MzAsIDB4MDAsIDB4MEYgfSwJLyogMSAgICAgICAgICAgICAgMiAgICovCisJ eyAweDMxLCAweDAwLCAweDAzIH0sCS8qIDIgICAgICAgICAgICAgIDAgICAqLworCXsgMHgzNCwg MHgwMCwgMHgwQiB9LAkvKiAyICAgICAgICAgICAgICAxICAgKi8KKwl7IDB4M0YsIDB4MDAsIDB4 MDAgfSwJLyogMyAgICAgICAgICAgICAgMCAgICovCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0 IGljbF9tZ19waHlfZGRpX2J1Zl90cmFucyBpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNfaGJy Ml9oYnIzW10gPSB7CisJCQkJLyogVm9sdGFnZSBzd2luZyAgcHJlLWVtcGhhc2lzICovCisJeyAw eDE4LCAweDAwLCAweDAwIH0sCS8qIDAgICAgICAgICAgICAgIDAgICAqLworCXsgMHgxRCwgMHgw MCwgMHgwNSB9LAkvKiAwICAgICAgICAgICAgICAxICAgKi8KKwl7IDB4MjQsIDB4MDAsIDB4MEMg fSwJLyogMCAgICAgICAgICAgICAgMiAgICovCisJeyAweDJCLCAweDAwLCAweDE0IH0sCS8qIDAg ICAgICAgICAgICAgIDMgICAqLworCXsgMHgyNiwgMHgwMCwgMHgwMCB9LAkvKiAxICAgICAgICAg ICAgICAwICAgKi8KKwl7IDB4MkMsIDB4MDAsIDB4MDcgfSwJLyogMSAgICAgICAgICAgICAgMSAg ICovCisJeyAweDMzLCAweDAwLCAweDBDIH0sCS8qIDEgICAgICAgICAgICAgIDIgICAqLworCXsg MHgyRSwgMHgwMCwgMHgwMCB9LAkvKiAyICAgICAgICAgICAgICAwICAgKi8KKwl7IDB4MzYsIDB4 MDAsIDB4MDkgfSwJLyogMiAgICAgICAgICAgICAgMSAgICovCisJeyAweDNGLCAweDAwLCAweDAw IH0sCS8qIDMgICAgICAgICAgICAgIDAgICAqLworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBp Y2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWlb XSA9IHsKKwkJCQkvKiBIRE1JIFByZXNldAlWUwlQcmUtZW1waCAqLworCXsgMHgxQSwgMHgwLCAw eDAgfSwJLyogMQkJNDAwbVYJMGRCICovCisJeyAweDIwLCAweDAsIDB4MCB9LAkvKiAyCQk1MDBt VgkwZEIgKi8KKwl7IDB4MjksIDB4MCwgMHgwIH0sCS8qIDMJCTY1MG1WCTBkQiAqLworCXsgMHgz MiwgMHgwLCAweDAgfSwJLyogNAkJODAwbVYJMGRCICovCisJeyAweDNGLCAweDAsIDB4MCB9LAkv KiA1CQkxMDAwbVYJMGRCICovCisJeyAweDNBLCAweDAsIDB4NSB9LAkvKiA2CQlGdWxsCS0xLjUg ZEIgKi8KKwl7IDB4MzksIDB4MCwgMHg2IH0sCS8qIDcJCUZ1bGwJLTEuOCBkQiAqLworCXsgMHgz OCwgMHgwLCAweDcgfSwJLyogOAkJRnVsbAktMiBkQiAqLworCXsgMHgzNywgMHgwLCAweDggfSwJ LyogOQkJRnVsbAktMi41IGRCICovCisJeyAweDM2LCAweDAsIDB4OSB9LAkvKiAxMAkJRnVsbAkt MyBkQiAqLworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3Ry YW5zIHRnbF9ka2xfcGh5X2RwX2RkaV90cmFuc1tdID0geworCQkJCS8qIFZTCXByZS1lbXAJTm9u LXRyYW5zIG1WCVByZS1lbXBoIGRCICovCisJeyAweDcsIDB4MCwgMHgwMCB9LAkvKiAwCTAJNDAw bVYJCTAgZEIgKi8KKwl7IDB4NSwgMHgwLCAweDA1IH0sCS8qIDAJMQk0MDBtVgkJMy41IGRCICov CisJeyAweDIsIDB4MCwgMHgwQiB9LAkvKiAwCTIJNDAwbVYJCTYgZEIgKi8KKwl7IDB4MCwgMHgw LCAweDE4IH0sCS8qIDAJMwk0MDBtVgkJOS41IGRCICovCisJeyAweDUsIDB4MCwgMHgwMCB9LAkv KiAxCTAJNjAwbVYJCTAgZEIgKi8KKwl7IDB4MiwgMHgwLCAweDA4IH0sCS8qIDEJMQk2MDBtVgkJ My41IGRCICovCisJeyAweDAsIDB4MCwgMHgxNCB9LAkvKiAxCTIJNjAwbVYJCTYgZEIgKi8KKwl7 IDB4MiwgMHgwLCAweDAwIH0sCS8qIDIJMAk4MDBtVgkJMCBkQiAqLworCXsgMHgwLCAweDAsIDB4 MEIgfSwJLyogMgkxCTgwMG1WCQkzLjUgZEIgKi8KKwl7IDB4MCwgMHgwLCAweDAwIH0sCS8qIDMJ MAkxMjAwbVYJCTAgZEIgSERNSSBkZWZhdWx0ICovCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0 IHRnbF9ka2xfcGh5X2RkaV9idWZfdHJhbnMgdGdsX2RrbF9waHlfZHBfZGRpX3RyYW5zX2hicjJb XSA9IHsKKwkJCQkvKiBWUwlwcmUtZW1wCU5vbi10cmFucyBtVglQcmUtZW1waCBkQiAqLworCXsg MHg3LCAweDAsIDB4MDAgfSwJLyogMAkwCTQwMG1WCQkwIGRCICovCisJeyAweDUsIDB4MCwgMHgw NSB9LAkvKiAwCTEJNDAwbVYJCTMuNSBkQiAqLworCXsgMHgyLCAweDAsIDB4MEIgfSwJLyogMAky CTQwMG1WCQk2IGRCICovCisJeyAweDAsIDB4MCwgMHgxOSB9LAkvKiAwCTMJNDAwbVYJCTkuNSBk QiAqLworCXsgMHg1LCAweDAsIDB4MDAgfSwJLyogMQkwCTYwMG1WCQkwIGRCICovCisJeyAweDIs IDB4MCwgMHgwOCB9LAkvKiAxCTEJNjAwbVYJCTMuNSBkQiAqLworCXsgMHgwLCAweDAsIDB4MTQg fSwJLyogMQkyCTYwMG1WCQk2IGRCICovCisJeyAweDIsIDB4MCwgMHgwMCB9LAkvKiAyCTAJODAw bVYJCTAgZEIgKi8KKwl7IDB4MCwgMHgwLCAweDBCIH0sCS8qIDIJMQk4MDBtVgkJMy41IGRCICov CisJeyAweDAsIDB4MCwgMHgwMCB9LAkvKiAzCTAJMTIwMG1WCQkwIGRCIEhETUkgZGVmYXVsdCAq LworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zIHRn bF9ka2xfcGh5X2hkbWlfZGRpX3RyYW5zW10gPSB7CisJCQkJLyogSERNSSBQcmVzZXQJVlMJUHJl LWVtcGggKi8KKwl7IDB4NywgMHgwLCAweDAgfSwJLyogMQkJNDAwbVYJMGRCICovCisJeyAweDYs IDB4MCwgMHgwIH0sCS8qIDIJCTUwMG1WCTBkQiAqLworCXsgMHg0LCAweDAsIDB4MCB9LAkvKiAz CQk2NTBtVgkwZEIgKi8KKwl7IDB4MiwgMHgwLCAweDAgfSwJLyogNAkJODAwbVYJMGRCICovCisJ eyAweDAsIDB4MCwgMHgwIH0sCS8qIDUJCTEwMDBtVgkwZEIgKi8KKwl7IDB4MCwgMHgwLCAweDUg fSwJLyogNgkJRnVsbAktMS41IGRCICovCisJeyAweDAsIDB4MCwgMHg2IH0sCS8qIDcJCUZ1bGwJ LTEuOCBkQiAqLworCXsgMHgwLCAweDAsIDB4NyB9LAkvKiA4CQlGdWxsCS0yIGRCICovCisJeyAw eDAsIDB4MCwgMHg4IH0sCS8qIDkJCUZ1bGwJLTIuNSBkQiAqLworCXsgMHgwLCAweDAsIDB4QSB9 LAkvKiAxMAkJRnVsbAktMyBkQiAqLworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRp X2J1Zl90cmFucyB0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyW10gPSB7CisJ CQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLworCXsgMHhBLCAweDMyLCAweDNGLCAweDAw LCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCisJeyAweEEsIDB4NEYsIDB4Mzcs IDB4MDAsIDB4MDggfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KKwl7IDB4QywgMHg3MSwg MHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLworCXsgMHg2LCAw eDdELCAweDJCLCAweDAwLCAweDE0IH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCisJeyAw eEEsIDB4NEMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8K Kwl7IDB4QywgMHg3MywgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkg ICAqLworCXsgMHg2LCAweDdGLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDUwMCAgIDkwMCAgICAg IDUuMSAgICovCisJeyAweEMsIDB4NkMsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzAw ICAgICAgMC42ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAg ICA5MDAgICAgICAzLjUgICAqLworCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDkwMCAgIDkwMCAgICAgIDAuMCAgICovCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9k ZGlfYnVmX3RyYW5zIHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyW10gPSB7 CisJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLworCXsgMHhBLCAweDM1LCAweDNGLCAw eDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCisJeyAweEEsIDB4NEYsIDB4 MzcsIDB4MDAsIDB4MDggfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KKwl7IDB4QywgMHg2 MywgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLworCXsgMHg2 LCAweDdGLCAweDJCLCAweDAwLCAweDE0IH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCisJ eyAweEEsIDB4NDcsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAg Ki8KKwl7IDB4QywgMHg2MywgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA1MDAgICA3MDAgICAgICAy LjkgICAqLworCXsgMHg2LCAweDdGLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDUwMCAgIDkwMCAg ICAgIDUuMSAgICovCisJeyAweEMsIDB4NjEsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNjUwICAg NzAwICAgICAgMC42ICAgKi8KKwl7IDB4NiwgMHg3QiwgMHgzNSwgMHgwMCwgMHgwQSB9LAkvKiA2 MDAgICA5MDAgICAgICAzLjUgICAqLworCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGNu bF9kZGlfYnVmX3RyYW5zIHRnbF91eV9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIy W10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLworCXsgMHhBLCAweDM1LCAw eDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCisJeyAweEEsIDB4 NEYsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KKwl7IDB4 QywgMHg2MCwgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLwor CXsgMHhDLCAweDdGLCAweDJELCAweDAwLCAweDEyIH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAg ICovCisJeyAweEMsIDB4NDcsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAg MC4wICAgKi8KKwl7IDB4QywgMHg2RiwgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA1MDAgICA3MDAg ICAgICAyLjkgICAqLworCXsgMHg2LCAweDdELCAweDMyLCAweDAwLCAweDBEIH0sCS8qIDUwMCAg IDkwMCAgICAgIDUuMSAgICovCisJeyAweDYsIDB4NjAsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyog NjUwICAgNzAwICAgICAgMC42ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzNCwgMHgwMCwgMHgwQiB9 LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLworCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAw eDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCit9OworCisvKgorICogQ2xvbmVkIHRo ZSBIT0JMIGVudHJ5IHRvIGNvbXBseSB3aXRoIHRoZSB2b2x0YWdlIGFuZCBwcmUtZW1waGFzaXMg ZW50cmllcworICogdGhhdCBEaXNwbGF5UG9ydCBzcGVjaWZpY2F0aW9uIHJlcXVpcmVzCisgKi8K K3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgdGdsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2VkcF9oYnIyX2hvYmxbXSA9IHsKKwkJCQkJCS8qIFZTCXByZS1lbXAJKi8K Kwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAwCTAJKi8KKwl7IDB4NiwgMHg3 RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAwCTEJKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgw MCwgMHgwMCB9LAkvKiAwCTIJKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkv KiAwCTMJKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAxCTAJKi8KKwl7 IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAxCTEJKi8KKwl7IDB4NiwgMHg3Riwg MHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAxCTIJKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwg MHgwMCB9LAkvKiAyCTAJKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAy CTEJKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgcmtsX2Nv bWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicltdID0geworCQkJCQkJLyogTlQgbVYgVHJh bnMgbVYgZGIgICAgKi8KKwl7IDB4QSwgMHgyRiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAg ICAzNTAgICAgICAwLjAgICAqLworCXsgMHhBLCAweDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8q IDM1MCAgIDUwMCAgICAgIDMuMSAgICovCisJeyAweEMsIDB4NjMsIDB4MkYsIDB4MDAsIDB4MTAg fSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8KKwl7IDB4NiwgMHg3RCwgMHgyQSwgMHgwMCwg MHgxNSB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLworCXsgMHhBLCAweDRDLCAweDNGLCAw eDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCisJeyAweEMsIDB4NzMsIDB4 MzQsIDB4MDAsIDB4MEIgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KKwl7IDB4NiwgMHg3 RiwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLworCXsgMHhD LCAweDZFLCAweDNFLCAweDAwLCAweDAxIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCisJ eyAweDYsIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAg Ki8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAw LjAgICAqLworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBya2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMl9oYnIzW10gPSB7CisJCQkJCQkvKiBO VCBtViBUcmFucyBtViBkYiAgICAqLworCXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCisJeyAweEEsIDB4NTAsIDB4MzgsIDB4MDAsIDB4 MDcgfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KKwl7IDB4QywgMHg2MSwgMHgzMywgMHgw MCwgMHgwQyB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLworCXsgMHg2LCAweDdGLCAweDJF LCAweDAwLCAweDExIH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCisJeyAweEEsIDB4NDcs IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KKwl7IDB4Qywg MHg1RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLworCXsg MHg2LCAweDdGLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICov CisJeyAweEMsIDB4NUYsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNjUwICAgNzAwICAgICAgMC42 ICAgKi8KKwl7IDB4NiwgMHg3RSwgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA2MDAgICA5MDAgICAg ICAzLjUgICAqLworCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkw MCAgICAgIDAuMCAgICovCit9OworCitib29sIGlzX2hvYmxfYnVmX3RyYW5zKGNvbnN0IHN0cnVj dCBjbmxfZGRpX2J1Zl90cmFucyAqdGFibGUpCit7CisJcmV0dXJuIHRhYmxlID09IHRnbF9jb21i b19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMl9ob2JsOworfQorCitjb25zdCBzdHJ1Y3Qg ZGRpX2J1Zl90cmFucyAqCitiZHdfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCisJaWYgKGRldl9wcml2 LT52YnQuZWRwLmxvd192c3dpbmcpIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoYmR3X2Rk aV90cmFuc2xhdGlvbnNfZWRwKTsKKwkJcmV0dXJuIGJkd19kZGlfdHJhbnNsYXRpb25zX2VkcDsK Kwl9IGVsc2UgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShiZHdfZGRpX3RyYW5zbGF0aW9u c19kcCk7CisJCXJldHVybiBiZHdfZGRpX3RyYW5zbGF0aW9uc19kcDsKKwl9Cit9CisKK2NvbnN0 IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoKK3NrbF9nZXRfYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKworCWlmIChJ U19TS0xfVUxYKGRldl9wcml2KSkgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfeV9k ZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0dXJuIHNrbF95X2RkaV90cmFuc2xhdGlvbnNfZHA7 CisJfSBlbHNlIGlmIChJU19TS0xfVUxUKGRldl9wcml2KSkgeworCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShza2xfdV9kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0dXJuIHNrbF91X2RkaV90 cmFuc2xhdGlvbnNfZHA7CisJfSBlbHNlIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2ts X2RkaV90cmFuc2xhdGlvbnNfZHApOworCQlyZXR1cm4gc2tsX2RkaV90cmFuc2xhdGlvbnNfZHA7 CisJfQorfQorCitjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitrYmxfZ2V0X2J1Zl90cmFu c19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCit7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNl LmRldik7CisKKwlpZiAoSVNfS0JMX1VMWChkZXZfcHJpdikgfHwKKwkgICAgSVNfQ0ZMX1VMWChk ZXZfcHJpdikgfHwKKwkgICAgSVNfQ01MX1VMWChkZXZfcHJpdikpIHsKKwkJKm5fZW50cmllcyA9 IEFSUkFZX1NJWkUoa2JsX3lfZGRpX3RyYW5zbGF0aW9uc19kcCk7CisJCXJldHVybiBrYmxfeV9k ZGlfdHJhbnNsYXRpb25zX2RwOworCX0gZWxzZSBpZiAoSVNfS0JMX1VMVChkZXZfcHJpdikgfHwK KwkJICAgSVNfQ0ZMX1VMVChkZXZfcHJpdikgfHwKKwkJICAgSVNfQ01MX1VMVChkZXZfcHJpdikp IHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoa2JsX3VfZGRpX3RyYW5zbGF0aW9uc19kcCk7 CisJCXJldHVybiBrYmxfdV9kZGlfdHJhbnNsYXRpb25zX2RwOworCX0gZWxzZSB7CisJCSpuX2Vu dHJpZXMgPSBBUlJBWV9TSVpFKGtibF9kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0dXJuIGti bF9kZGlfdHJhbnNsYXRpb25zX2RwOworCX0KK30KKworY29uc3Qgc3RydWN0IGRkaV9idWZfdHJh bnMgKgorc2tsX2dldF9idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LCBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKworCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5s b3dfdnN3aW5nKSB7CisJCWlmIChJU19TS0xfVUxYKGRldl9wcml2KSB8fAorCQkgICAgSVNfS0JM X1VMWChkZXZfcHJpdikgfHwKKwkJICAgIElTX0NGTF9VTFgoZGV2X3ByaXYpIHx8CisJCSAgICBJ U19DTUxfVUxYKGRldl9wcml2KSkgeworCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2tsX3lf ZGRpX3RyYW5zbGF0aW9uc19lZHApOworCQkJcmV0dXJuIHNrbF95X2RkaV90cmFuc2xhdGlvbnNf ZWRwOworCQl9IGVsc2UgaWYgKElTX1NLTF9VTFQoZGV2X3ByaXYpIHx8CisJCQkgICBJU19LQkxf VUxUKGRldl9wcml2KSB8fAorCQkJICAgSVNfQ0ZMX1VMVChkZXZfcHJpdikgfHwKKwkJCSAgIElT X0NNTF9VTFQoZGV2X3ByaXYpKSB7CisJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfdV9k ZGlfdHJhbnNsYXRpb25zX2VkcCk7CisJCQlyZXR1cm4gc2tsX3VfZGRpX3RyYW5zbGF0aW9uc19l ZHA7CisJCX0gZWxzZSB7CisJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfZGRpX3RyYW5z bGF0aW9uc19lZHApOworCQkJcmV0dXJuIHNrbF9kZGlfdHJhbnNsYXRpb25zX2VkcDsKKwkJfQor CX0KKworCWlmIChJU19LQUJZTEFLRShkZXZfcHJpdikgfHwKKwkgICAgSVNfQ09GRkVFTEFLRShk ZXZfcHJpdikgfHwKKwkgICAgSVNfQ09NRVRMQUtFKGRldl9wcml2KSkKKwkJcmV0dXJuIGtibF9n ZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50cmllcyk7CisJZWxzZQorCQlyZXR1cm4gc2ts X2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKK30KKworY29uc3Qgc3RydWN0 IGRkaV9idWZfdHJhbnMgKgorc2tsX2dldF9idWZfdHJhbnNfaGRtaShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGludCAqbl9lbnRyaWVzKQoreworCWlmIChJU19TS0xfVUxYKGRl dl9wcml2KSB8fAorCSAgICBJU19LQkxfVUxYKGRldl9wcml2KSB8fAorCSAgICBJU19DRkxfVUxY KGRldl9wcml2KSB8fAorCSAgICBJU19DTUxfVUxYKGRldl9wcml2KSkgeworCQkqbl9lbnRyaWVz ID0gQVJSQVlfU0laRShza2xfeV9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOworCQlyZXR1cm4gc2ts X3lfZGRpX3RyYW5zbGF0aW9uc19oZG1pOworCX0gZWxzZSB7CisJCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKHNrbF9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOworCQlyZXR1cm4gc2tsX2RkaV90cmFu c2xhdGlvbnNfaGRtaTsKKwl9Cit9CisKK2ludCBza2xfYnVmX3RyYW5zX251bV9lbnRyaWVzKGVu dW0gcG9ydCBwb3J0LCBpbnQgbl9lbnRyaWVzKQoreworCS8qIE9ubHkgRERJQSBhbmQgRERJRSBj YW4gc2VsZWN0IHRoZSAxMHRoIHJlZ2lzdGVyIHdpdGggRFAgKi8KKwlpZiAocG9ydCA9PSBQT1JU X0EgfHwgcG9ydCA9PSBQT1JUX0UpCisJCXJldHVybiBtaW4obl9lbnRyaWVzLCAxMCk7CisJZWxz ZQorCQlyZXR1cm4gbWluKG5fZW50cmllcywgOSk7Cit9CisKK2NvbnN0IHN0cnVjdCBkZGlfYnVm X3RyYW5zICoKK2ludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKworCWlmIChJU19LQUJZTEFL RShkZXZfcHJpdikgfHwKKwkgICAgSVNfQ09GRkVFTEFLRShkZXZfcHJpdikgfHwKKwkgICAgSVNf Q09NRVRMQUtFKGRldl9wcml2KSkgeworCQljb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqZGRp X3RyYW5zbGF0aW9ucyA9CisJCQlrYmxfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCBuX2VudHJp ZXMpOworCQkqbl9lbnRyaWVzID0gc2tsX2J1Zl90cmFuc19udW1fZW50cmllcyhlbmNvZGVyLT5w b3J0LCAqbl9lbnRyaWVzKTsKKwkJcmV0dXJuIGRkaV90cmFuc2xhdGlvbnM7CisJfSBlbHNlIGlm IChJU19TS1lMQUtFKGRldl9wcml2KSkgeworCQljb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAq ZGRpX3RyYW5zbGF0aW9ucyA9CisJCQlza2xfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCBuX2Vu dHJpZXMpOworCQkqbl9lbnRyaWVzID0gc2tsX2J1Zl90cmFuc19udW1fZW50cmllcyhlbmNvZGVy LT5wb3J0LCAqbl9lbnRyaWVzKTsKKwkJcmV0dXJuIGRkaV90cmFuc2xhdGlvbnM7CisJfSBlbHNl IGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpF KGJkd19kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0dXJuICBiZHdfZGRpX3RyYW5zbGF0aW9u c19kcDsKKwl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7CisJCSpuX2VudHJpZXMg PSBBUlJBWV9TSVpFKGhzd19kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0dXJuIGhzd19kZGlf dHJhbnNsYXRpb25zX2RwOworCX0KKworCSpuX2VudHJpZXMgPSAwOworCXJldHVybiBOVUxMOwor fQorCitjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitpbnRlbF9kZGlfZ2V0X2J1Zl90cmFu c19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQorewor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFz ZS5kZXYpOworCisJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7CisJCWNvbnN0IHN0cnVjdCBk ZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25zID0KKwkJCXNrbF9nZXRfYnVmX3RyYW5zX2Vk cChlbmNvZGVyLCBuX2VudHJpZXMpOworCQkqbl9lbnRyaWVzID0gc2tsX2J1Zl90cmFuc19udW1f ZW50cmllcyhlbmNvZGVyLT5wb3J0LCAqbl9lbnRyaWVzKTsKKwkJcmV0dXJuIGRkaV90cmFuc2xh dGlvbnM7CisJfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7CisJCXJldHVybiBi ZHdfZ2V0X2J1Zl90cmFuc19lZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKKwl9IGVsc2UgaWYgKElT X0hBU1dFTEwoZGV2X3ByaXYpKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGhzd19kZGlf dHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0dXJuIGhzd19kZGlfdHJhbnNsYXRpb25zX2RwOworCX0K KworCSpuX2VudHJpZXMgPSAwOworCXJldHVybiBOVUxMOworfQorCitjb25zdCBzdHJ1Y3QgZGRp X2J1Zl90cmFucyAqCitpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19mZGkoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgIGludCAqbl9lbnRyaWVzKQoreworCWlmIChJU19C Uk9BRFdFTEwoZGV2X3ByaXYpKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJkd19kZGlf dHJhbnNsYXRpb25zX2ZkaSk7CisJCXJldHVybiBiZHdfZGRpX3RyYW5zbGF0aW9uc19mZGk7CisJ fSBlbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgeworCQkqbl9lbnRyaWVzID0gQVJSQVlf U0laRShoc3dfZGRpX3RyYW5zbGF0aW9uc19mZGkpOworCQlyZXR1cm4gaHN3X2RkaV90cmFuc2xh dGlvbnNfZmRpOworCX0KKworCSpuX2VudHJpZXMgPSAwOworCXJldHVybiBOVUxMOworfQorCitj b25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19oZG1p KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgICBpbnQgKm5fZW50cmllcykK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXIt PmJhc2UuZGV2KTsKKworCWlmIChJU19HRU45X0JDKGRldl9wcml2KSkgeworCQlyZXR1cm4gc2ts X2dldF9idWZfdHJhbnNfaGRtaShkZXZfcHJpdiwgbl9lbnRyaWVzKTsKKwl9IGVsc2UgaWYgKElT X0JST0FEV0VMTChkZXZfcHJpdikpIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoYmR3X2Rk aV90cmFuc2xhdGlvbnNfaGRtaSk7CisJCXJldHVybiBiZHdfZGRpX3RyYW5zbGF0aW9uc19oZG1p OworCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKKwkJKm5fZW50cmllcyA9IEFS UkFZX1NJWkUoaHN3X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7CisJCXJldHVybiBoc3dfZGRpX3Ry YW5zbGF0aW9uc19oZG1pOworCX0KKworCSpuX2VudHJpZXMgPSAwOworCXJldHVybiBOVUxMOwor fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zICoKK2J4dF9nZXRfYnVm X3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykK K3sKKwkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShieHRfZGRpX3RyYW5zbGF0aW9uc19kcCk7CisJ cmV0dXJuIGJ4dF9kZGlfdHJhbnNsYXRpb25zX2RwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IGJ4dF9kZGlfYnVmX3RyYW5zICoKK2J4dF9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisKKwlpZiAoZGV2 X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShi eHRfZGRpX3RyYW5zbGF0aW9uc19lZHApOworCQlyZXR1cm4gYnh0X2RkaV90cmFuc2xhdGlvbnNf ZWRwOworCX0KKworCXJldHVybiBieHRfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCBuX2VudHJp ZXMpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zICoKK2J4dF9n ZXRfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9l bnRyaWVzKQoreworCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJ4dF9kZGlfdHJhbnNsYXRpb25z X2hkbWkpOworCXJldHVybiBieHRfZGRpX3RyYW5zbGF0aW9uc19oZG1pOworfQorCitjb25zdCBz dHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgKgorYnh0X2dldF9idWZfdHJhbnMoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCisJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCisJCSAgaW50ICpuX2VudHJpZXMpCit7CisJaWYgKGludGVsX2NydGNfaGFzX3R5 cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQorCQlyZXR1cm4gYnh0X2dldF9idWZf dHJhbnNfaGRtaShlbmNvZGVyLCBuX2VudHJpZXMpOworCWlmIChpbnRlbF9jcnRjX2hhc190eXBl KGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQorCQlyZXR1cm4gYnh0X2dldF9idWZfdHJh bnNfZWRwKGVuY29kZXIsIG5fZW50cmllcyk7CisJcmV0dXJuIGJ4dF9nZXRfYnVmX3RyYW5zX2Rw KGVuY29kZXIsIG5fZW50cmllcyk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9i dWZfdHJhbnMgKgorY25sX2dldF9idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJdTMyIHZvbHRhZ2UgPSBpbnRl bF9kZV9yZWFkKGRldl9wcml2LCBDTkxfUE9SVF9DT01QX0RXMykgJiBWT0xUQUdFX0lORk9fTUFT SzsKKworCWlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzg1VikgeworCQkqbl9lbnRyaWVz ID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19oZG1pXzBfODVWKTsKKwkJcmV0dXJu IGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF84NVY7CisJfSBlbHNlIGlmICh2b2x0YWdlID09 IFZPTFRBR0VfSU5GT18wXzk1VikgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRp X3RyYW5zbGF0aW9uc19oZG1pXzBfOTVWKTsKKwkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25z X2hkbWlfMF85NVY7CisJfSBlbHNlIGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18xXzA1Vikg eworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19oZG1pXzFf MDVWKTsKKwkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMV8wNVY7CisJfSBlbHNl IHsKKwkJKm5fZW50cmllcyA9IDE7IC8qIHNodXQgdXAgZ2NjICovCisJCU1JU1NJTkdfQ0FTRSh2 b2x0YWdlKTsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25s X2RkaV9idWZfdHJhbnMgKgorY25sX2dldF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCXUzMiB2b2x0YWdlID0g aW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgQ05MX1BPUlRfQ09NUF9EVzMpICYgVk9MVEFHRV9JTkZP X01BU0s7CisKKwlpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMF84NVYpIHsKKwkJKm5fZW50 cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF84NVYpOworCQlyZXR1 cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF84NVY7CisJfSBlbHNlIGlmICh2b2x0YWdlID09 IFZPTFRBR0VfSU5GT18wXzk1VikgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRp X3RyYW5zbGF0aW9uc19kcF8wXzk1Vik7CisJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19k cF8wXzk1VjsKKwl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzFfMDVWKSB7CisJ CSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2RwXzFfMDVWKTsK KwkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2RwXzFfMDVWOworCX0gZWxzZSB7CisJCSpu X2VudHJpZXMgPSAxOyAvKiBzaHV0IHVwIGdjYyAqLworCQlNSVNTSU5HX0NBU0Uodm9sdGFnZSk7 CisJfQorCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVm X3RyYW5zICoKK2NubF9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwgaW50ICpuX2VudHJpZXMpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJdTMyIHZvbHRhZ2UgPSBpbnRlbF9k ZV9yZWFkKGRldl9wcml2LCBDTkxfUE9SVF9DT01QX0RXMykgJiBWT0xUQUdFX0lORk9fTUFTSzsK KworCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7CisJCWlmICh2b2x0YWdlID09 IFZPTFRBR0VfSU5GT18wXzg1VikgeworCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2Rk aV90cmFuc2xhdGlvbnNfZWRwXzBfODVWKTsKKwkJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9u c19lZHBfMF84NVY7CisJCX0gZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMF85NVYp IHsKKwkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8w Xzk1Vik7CisJCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfOTVWOworCQl9IGVs c2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzFfMDVWKSB7CisJCQkqbl9lbnRyaWVzID0g QVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMV8wNVYpOworCQkJcmV0dXJuIGNu bF9kZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1VjsKKwkJfSBlbHNlIHsKKwkJCSpuX2VudHJpZXMg PSAxOyAvKiBzaHV0IHVwIGdjYyAqLworCQkJTUlTU0lOR19DQVNFKHZvbHRhZ2UpOworCQl9CisJ CXJldHVybiBOVUxMOworCX0gZWxzZSB7CisJCXJldHVybiBjbmxfZ2V0X2J1Zl90cmFuc19kcChl bmNvZGVyLCBuX2VudHJpZXMpOworCX0KK30KKworY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3Ry YW5zICoKK2NubF9nZXRfYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAor CQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkgIGludCAq bl9lbnRyaWVzKQoreworCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVM X09VVFBVVF9IRE1JKSkKKwkJcmV0dXJuIGNubF9nZXRfYnVmX3RyYW5zX2hkbWkoZW5jb2Rlciwg bl9lbnRyaWVzKTsKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9P VVRQVVRfRURQKSkKKwkJcmV0dXJuIGNubF9nZXRfYnVmX3RyYW5zX2VkcChlbmNvZGVyLCBuX2Vu dHJpZXMpOworCXJldHVybiBjbmxfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCBuX2VudHJpZXMp OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2ljbF9nZXRf Y29tYm9fYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkg ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAgICBp bnQgKm5fZW50cmllcykKK3sKKwkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5 X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7CisJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5z bGF0aW9uc19oZG1pOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5z ICoKK2ljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAorCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJ CQkgICBpbnQgKm5fZW50cmllcykKK3sKKwkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29t Ym9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMik7CisJcmV0dXJuIGljbF9jb21ib19waHlf ZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9k ZGlfYnVmX3RyYW5zICoKK2ljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKKwkJCSAgICBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKworCWlmIChj cnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gNTQwMDAwKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9T SVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMyk7CisJCXJldHVybiBp Y2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjM7CisJfSBlbHNlIGlmIChkZXZf cHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGlj bF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMik7CisJCXJldHVybiBpY2xfY29t Ym9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjI7CisJfSBlbHNlIGlmIChJU19ERzEoZGV2 X3ByaXYpICYmIGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPiAyNzAwMDApIHsKKwkJKm5fZW50cmll cyA9IEFSUkFZX1NJWkUoZGcxX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJfaGJy Myk7CisJCXJldHVybiBkZzFfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMl9oYnIz OworCX0gZWxzZSBpZiAoSVNfREcxKGRldl9wcml2KSkgeworCQkqbl9lbnRyaWVzID0gQVJSQVlf U0laRShkZzFfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfcmJyX2hicik7CisJCXJldHVy biBkZzFfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfcmJyX2hicjsKKwl9CisKKwlyZXR1 cm4gaWNsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRy aWVzKTsKK30KKworY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2ljbF9nZXRfY29t Ym9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQlpbnQgKm5fZW50cmllcykKK3sK KwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkp CisJCXJldHVybiBpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3Rh dGUsIG5fZW50cmllcyk7CisJZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRl LCBJTlRFTF9PVVRQVVRfRURQKSkKKwkJcmV0dXJuIGljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2Vk cChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworCWVsc2UKKwkJcmV0dXJuIGljbF9n ZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Cit9 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zICoKK2ljbF9n ZXRfbWdfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICBpbnQgKm5f ZW50cmllcykKK3sKKwkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfbWdfcGh5X2RkaV90cmFu c2xhdGlvbnNfaGRtaSk7CisJcmV0dXJuIGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1p OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGljbF9tZ19waHlfZGRpX2J1Zl90cmFucyAqCitp Y2xfZ2V0X21nX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJ CWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJaW50ICpuX2Vu dHJpZXMpCit7CisJaWYgKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPiAyNzAwMDApIHsKKwkJKm5f ZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hicjJfaGJy Myk7CisJCXJldHVybiBpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNfaGJyMl9oYnIzOworCX0g ZWxzZSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9tZ19waHlfZGRpX3RyYW5zbGF0 aW9uc19yYnJfaGJyKTsKKwkJcmV0dXJuIGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9uc19yYnJf aGJyOworCX0KK30KKworY29uc3Qgc3RydWN0IGljbF9tZ19waHlfZGRpX2J1Zl90cmFucyAqCitp Y2xfZ2V0X21nX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJICAg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJICAgICBpbnQg Km5fZW50cmllcykKK3sKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRF TF9PVVRQVVRfSERNSSkpCisJCXJldHVybiBpY2xfZ2V0X21nX2J1Zl90cmFuc19oZG1pKGVuY29k ZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7CisJZWxzZQorCQlyZXR1cm4gaWNsX2dldF9tZ19i dWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKK30KKworc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCitlaGxfZ2V0X2NvbWJvX2J1Zl90cmFu c19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICAgaW50ICpuX2VudHJpZXMp Cit7CisJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRp b25zX2hkbWkpOworCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsK K30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCitlaGxfZ2V0X2Nv bWJvX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgIGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAgaW50ICpuX2Vu dHJpZXMpCit7CisJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoZWhsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2RwKTsKKwlyZXR1cm4gZWhsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2Rw OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2VobF9nZXRf Y29tYm9fYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICBpbnQg Km5fZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKworCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3 aW5nKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5z bGF0aW9uc19lZHBfaGJyMik7CisJCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlv bnNfZWRwX2hicjI7CisJfQorCisJcmV0dXJuIGVobF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVu Y29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Cit9CisKK2NvbnN0IHN0cnVjdCBjbmxfZGRp X2J1Zl90cmFucyAqCitlaGxfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKKwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAorCQkJaW50ICpuX2VudHJpZXMpCit7CisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19z dGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQorCQlyZXR1cm4gZWhsX2dldF9jb21ib19idWZfdHJh bnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworCWVsc2UgaWYgKGludGVs X2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCisJCXJldHVybiBl aGxfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVz KTsKKwllbHNlCisJCXJldHVybiBlaGxfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBj cnRjX3N0YXRlLCBuX2VudHJpZXMpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlf YnVmX3RyYW5zICoKK2pzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAorCQkJICAgICBpbnQgKm5fZW50cmllcykKK3sKKwkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7CisJcmV0dXJuIGlj bF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pOworfQorCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2pzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCisJCQkgICBpbnQgKm5fZW50cmllcykKK3sKKwkqbl9lbnRyaWVz ID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMik7CisJ cmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2pzbF9nZXRfY29tYm9fYnVmX3Ry YW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICBpbnQgKm5fZW50cmllcykK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXIt PmJhc2UuZGV2KTsKKworCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7CisJCWlm IChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gMjcwMDAwKSB7CisJCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjIpOworCQkJcmV0 dXJuIGpzbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMjsKKwkJfSBlbHNlIHsK KwkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGpzbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19lZHBfaGJyKTsKKwkJCXJldHVybiBqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRw X2hicjsKKwkJfQorCX0KKworCXJldHVybiBqc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNv ZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworfQorCitjb25zdCBzdHJ1Y3QgY25sX2RkaV9i dWZfdHJhbnMgKgoranNsX2dldF9jb21ib19idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCisJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK KwkJCWludCAqbl9lbnRyaWVzKQoreworCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3Rh dGUsIElOVEVMX09VVFBVVF9IRE1JKSkKKwkJcmV0dXJuIGpzbF9nZXRfY29tYm9fYnVmX3RyYW5z X2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKKwllbHNlIGlmIChpbnRlbF9j cnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQorCQlyZXR1cm4ganNs X2dldF9jb21ib19idWZfdHJhbnNfZWRwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7 CisJZWxzZQorCQlyZXR1cm4ganNsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0 Y19zdGF0ZSwgbl9lbnRyaWVzKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1 Zl90cmFucyAqCit0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAorCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKKwkJCSAgICAgaW50ICpuX2VudHJpZXMpCit7CisJKm5fZW50cmllcyA9IEFSUkFZ X1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOworCXJldHVybiBpY2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCBjbmxfZGRpX2J1Zl90cmFucyAqCit0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAorCQkJICAgaW50ICpuX2VudHJpZXMpCit7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisKKwlp ZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3MDAwMCkgeworCQlpZiAoSVNfUk9DS0VUTEFL RShkZXZfcHJpdikpIHsKKwkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHJrbF9jb21ib19waHlf ZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyX2hicjMpOworCQkJcmV0dXJuIHJrbF9jb21ib19waHlf ZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyX2hicjM7CisJCX0gZWxzZSBpZiAoSVNfVEdMX1UoZGV2 X3ByaXYpIHx8IElTX1RHTF9ZKGRldl9wcml2KSkgeworCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJ WkUodGdsX3V5X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjIpOworCQkJcmV0dXJu IHRnbF91eV9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyOworCQl9IGVsc2Ugewor CQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUodGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25z X2RwX2hicjIpOworCQkJcmV0dXJuIHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9o YnIyOworCQl9CisJfSBlbHNlIHsKKwkJaWYgKElTX1JPQ0tFVExBS0UoZGV2X3ByaXYpKSB7CisJ CQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShya2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZHBfaGJyKTsKKwkJCXJldHVybiBya2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJy OworCQl9IGVsc2UgeworCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUodGdsX2NvbWJvX3BoeV9k ZGlfdHJhbnNsYXRpb25zX2RwX2hicik7CisJCQlyZXR1cm4gdGdsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2RwX2hicjsKKwkJfQorCX0KK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxf ZGRpX2J1Zl90cmFucyAqCit0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCisJCQkgICAgaW50ICpuX2VudHJpZXMpCit7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsKKworCWlmIChj cnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gNTQwMDAwKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9T SVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMyk7CisJCXJldHVybiBp Y2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjM7CisJfSBlbHNlIGlmIChkZXZf cHJpdi0+dmJ0LmVkcC5ob2JsICYmICFpbnRlbF9kcC0+aG9ibF9mYWlsZWQpIHsKKwkJKm5fZW50 cmllcyA9IEFSUkFZX1NJWkUodGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIy X2hvYmwpOworCQlyZXR1cm4gdGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIy X2hvYmw7CisJfSBlbHNlIGlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7CisJCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBf aGJyMik7CisJCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjI7 CisJfQorCisJcmV0dXJuIHRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNf c3RhdGUsIG5fZW50cmllcyk7Cit9CisKK2NvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAq Cit0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK KwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJaW50ICpu X2VudHJpZXMpCit7CisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxf T1VUUFVUX0hETUkpKQorCQlyZXR1cm4gdGdsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShlbmNv ZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworCWVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5 cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCisJCXJldHVybiB0Z2xfZ2V0X2NvbWJv X2J1Zl90cmFuc19lZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKKwllbHNlCisJ CXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBu X2VudHJpZXMpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHRnbF9ka2xfcGh5X2RkaV9idWZf dHJhbnMgKgordGdsX2dldF9ka2xfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCisJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKKwkJCSAgIGludCAqbl9lbnRyaWVzKQoreworCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRn bF9ka2xfcGh5X2hkbWlfZGRpX3RyYW5zKTsKKwlyZXR1cm4gdGdsX2RrbF9waHlfaGRtaV9kZGlf dHJhbnM7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdGdsX2RrbF9waHlfZGRpX2J1Zl90cmFu cyAqCit0Z2xfZ2V0X2RrbF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCisJCQkgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkg aW50ICpuX2VudHJpZXMpCit7CisJaWYgKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPiAyNzAwMDAp IHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUodGdsX2RrbF9waHlfZHBfZGRpX3RyYW5zX2hi cjIpOworCQlyZXR1cm4gdGdsX2RrbF9waHlfZHBfZGRpX3RyYW5zX2hicjI7CisJfSBlbHNlIHsK KwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUodGdsX2RrbF9waHlfZHBfZGRpX3RyYW5zKTsKKwkJ cmV0dXJuIHRnbF9ka2xfcGh5X2RwX2RkaV90cmFuczsKKwl9Cit9CisKK2NvbnN0IHN0cnVjdCB0 Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zICoKK3RnbF9nZXRfZGtsX2J1Zl90cmFucyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCisJCSAgICAgIGludCAqbl9lbnRyaWVzKQoreworCWlmIChpbnRl bF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKKwkJcmV0dXJu IHRnbF9nZXRfZGtsX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmll cyk7CisJZWxzZQorCQlyZXR1cm4gdGdsX2dldF9ka2xfYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNy dGNfc3RhdGUsIG5fZW50cmllcyk7Cit9CisKK2ludCBpbnRlbF9kZGlfaGRtaV9udW1fZW50cmll cyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICAgICBjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICAgICBpbnQgKmRlZmF1bHRfZW50 cnkpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNv ZGVyLT5iYXNlLmRldik7CisJZW51bSBwaHkgcGh5ID0gaW50ZWxfcG9ydF90b19waHkoZGV2X3By aXYsIGVuY29kZXItPnBvcnQpOworCWludCBuX2VudHJpZXM7CisKKwlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSAxMikgeworCQlpZiAoaW50ZWxfcGh5X2lzX2NvbWJvKGRldl9wcml2LCBwaHkp KQorCQkJdGdsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCAm bl9lbnRyaWVzKTsKKwkJZWxzZQorCQkJdGdsX2dldF9ka2xfYnVmX3RyYW5zX2hkbWkoZW5jb2Rl ciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7CisJCSpkZWZhdWx0X2VudHJ5ID0gbl9lbnRyaWVz IC0gMTsKKwl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPT0gMTEpIHsKKwkJaWYgKGlu dGVsX3BoeV9pc19jb21ibyhkZXZfcHJpdiwgcGh5KSkKKwkJCWljbF9nZXRfY29tYm9fYnVmX3Ry YW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7CisJCWVsc2UKKwkJCWlj bF9nZXRfbWdfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7 CisJCSpkZWZhdWx0X2VudHJ5ID0gbl9lbnRyaWVzIC0gMTsKKwl9IGVsc2UgaWYgKElTX0NBTk5P TkxBS0UoZGV2X3ByaXYpKSB7CisJCWNubF9nZXRfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgJm5f ZW50cmllcyk7CisJCSpkZWZhdWx0X2VudHJ5ID0gbl9lbnRyaWVzIC0gMTsKKwl9IGVsc2UgaWYg KElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7CisJCWJ4dF9nZXRfYnVmX3RyYW5zX2hkbWkoZW5jb2Rl ciwgJm5fZW50cmllcyk7CisJCSpkZWZhdWx0X2VudHJ5ID0gbl9lbnRyaWVzIC0gMTsKKwl9IGVs c2UgaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7CisJCWludGVsX2RkaV9nZXRfYnVmX3RyYW5z X2hkbWkoZW5jb2RlciwgJm5fZW50cmllcyk7CisJCSpkZWZhdWx0X2VudHJ5ID0gODsKKwl9IGVs c2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKKwkJaW50ZWxfZGRpX2dldF9idWZfdHJh bnNfaGRtaShlbmNvZGVyLCAmbl9lbnRyaWVzKTsKKwkJKmRlZmF1bHRfZW50cnkgPSA3OworCX0g ZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKKwkJaW50ZWxfZGRpX2dldF9idWZfdHJh bnNfaGRtaShlbmNvZGVyLCAmbl9lbnRyaWVzKTsKKwkJKmRlZmF1bHRfZW50cnkgPSA2OworCX0g ZWxzZSB7CisJCWRybV9XQVJOKCZkZXZfcHJpdi0+ZHJtLCAxLCAiZGRpIHRyYW5zbGF0aW9uIHRh YmxlIG1pc3NpbmdcbiIpOworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoZHJtX1dBUk5fT05fT05D RSgmZGV2X3ByaXYtPmRybSwgbl9lbnRyaWVzID09IDApKQorCQlyZXR1cm4gMDsKKworCXJldHVy biBuX2VudHJpZXM7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RkaV9idWZfdHJhbnMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGRpX2J1Zl90cmFucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uZjhmMGVmODdlOTc3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kZGlfYnVmX3RyYW5zLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMCBJbnRl bCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgX0lOVEVMX0RESV9CVUZfVFJBTlNfSF8KKyNk ZWZpbmUgX0lOVEVMX0RESV9CVUZfVFJBTlNfSF8KKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+ CisKK3N0cnVjdCBkcm1faTkxNV9wcml2YXRlOworc3RydWN0IGludGVsX2VuY29kZXI7CitzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZTsKKworc3RydWN0IGRkaV9idWZfdHJhbnMgeworCXUzMiB0cmFu czE7CS8qIGJhbGFuY2UgbGVnIGVuYWJsZSwgZGUtZW1waCBsZXZlbCAqLworCXUzMiB0cmFuczI7 CS8qIHZyZWYgc2VsLCB2c3dpbmcgKi8KKwl1OCBpX2Jvb3N0OwkvKiBTS0w6IElfYm9vc3Q7IHZh bGlkOiAweDAsIDB4MSwgMHgzLCAweDcgKi8KK307CisKK3N0cnVjdCBieHRfZGRpX2J1Zl90cmFu cyB7CisJdTggbWFyZ2luOwkvKiBzd2luZyB2YWx1ZSAqLworCXU4IHNjYWxlOwkvKiBzY2FsZSB2 YWx1ZSAqLworCXU4IGVuYWJsZTsJLyogc2NhbGUgZW5hYmxlICovCisJdTggZGVlbXBoYXNpczsK K307CisKK3N0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyB7CisJdTggZHcyX3N3aW5nX3NlbDsKKwl1 OCBkdzdfbl9zY2FsYXI7CisJdTggZHc0X2N1cnNvcl9jb2VmZjsKKwl1OCBkdzRfcG9zdF9jdXJz b3JfMjsKKwl1OCBkdzRfcG9zdF9jdXJzb3JfMTsKK307CisKK3N0cnVjdCBpY2xfbWdfcGh5X2Rk aV9idWZfdHJhbnMgeworCXUzMiBjcmlfdHhkZWVtcGhfb3ZlcnJpZGVfMTFfNjsKKwl1MzIgY3Jp X3R4ZGVlbXBoX292ZXJyaWRlXzVfMDsKKwl1MzIgY3JpX3R4ZGVlbXBoX292ZXJyaWRlXzE3XzEy OworfTsKKworc3RydWN0IHRnbF9ka2xfcGh5X2RkaV9idWZfdHJhbnMgeworCXUzMiBka2xfdnN3 aW5nX2NvbnRyb2w7CisJdTMyIGRrbF9wcmVzaG9vdF9jb250cm9sOworCXUzMiBka2xfZGVfZW1w aGFzaXNfY29udHJvbDsKK307CisKK2Jvb2wgaXNfaG9ibF9idWZfdHJhbnMoY29uc3Qgc3RydWN0 IGNubF9kZGlfYnVmX3RyYW5zICp0YWJsZSk7CisKK2ludCBpbnRlbF9kZGlfaGRtaV9udW1fZW50 cmllcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICAgICBjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICAgICBpbnQgKmRlZmF1bHRf ZW50cnkpOworCitjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitpbnRlbF9kZGlfZ2V0X2J1 Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVz KTsKK2NvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoKK2ludGVsX2RkaV9nZXRfYnVmX3RyYW5z X2ZkaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgaW50ICpuX2Vu dHJpZXMpOworY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgoraW50ZWxfZGRpX2dldF9idWZf dHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICAgaW50ICpu X2VudHJpZXMpOworY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgoraW50ZWxfZGRpX2dldF9i dWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVz KTsKKworY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zICoKK2J4dF9nZXRfYnVmX3RyYW5z KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkgIGludCAqbl9lbnRyaWVzKTsKKworY29uc3Qgc3Ry dWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK3RnbF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCisJCQlpbnQgKm5fZW50cmllcyk7Citjb25zdCBzdHJ1Y3QgdGdsX2RrbF9w aHlfZGRpX2J1Zl90cmFucyAqCit0Z2xfZ2V0X2RrbF9idWZfdHJhbnMoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCisJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAorCQkgICAgICBpbnQgKm5fZW50cmllcyk7Citjb25zdCBzdHJ1Y3QgY25sX2Rk aV9idWZfdHJhbnMgKgoranNsX2dldF9jb21ib19idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCisJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKKwkJCWludCAqbl9lbnRyaWVzKTsKK2NvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAq CitlaGxfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK KwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJaW50ICpu X2VudHJpZXMpOworY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2ljbF9nZXRfY29t Ym9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQlpbnQgKm5fZW50cmllcyk7Citj b25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zICoKK2ljbF9nZXRfbWdfYnVmX3Ry YW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkgICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkgICAgIGludCAqbl9lbnRyaWVzKTsKKwor Y29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2NubF9nZXRfYnVmX3RyYW5zKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAorCQkgIGludCAqbl9lbnRyaWVzKTsKKworI2VuZGlmCi0tIAoyLjI3 LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=