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 40F94C433E9 for ; Mon, 21 Dec 2020 04:04:30 +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 DF14622BF3 for ; Mon, 21 Dec 2020 04:04:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DF14622BF3 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 670D26E47B; Mon, 21 Dec 2020 04:04:27 +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 636CA6E45E for ; Mon, 21 Dec 2020 04:04:25 +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-10-x64w2CBtPny6HJS4jti3IQ-1; Sun, 20 Dec 2020 23:04:19 -0500 X-MC-Unique: x64w2CBtPny6HJS4jti3IQ-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id EFD8A59 for ; Mon, 21 Dec 2020 04:04:18 +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 13D3D5D9CA; Mon, 21 Dec 2020 04:04:17 +0000 (UTC) From: Dave Airlie To: intel-gfx@lists.freedesktop.org Date: Mon, 21 Dec 2020 14:03:50 +1000 Message-Id: <20201221040357.4928-10-airlied@gmail.com> In-Reply-To: <20201221040357.4928-1-airlied@gmail.com> References: <20201221040357.4928-1-airlied@gmail.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 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 09/16] drm/i915: refactor ddi translations into a separate file 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 dHJ5cG9pbnRzLgoKU2lnbmVkLW9mZi1ieTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAg ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgICAgICB8IDEz NDcgKy0tLS0tLS0tLS0tLS0tLS0KIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaV9idWZf dHJhbnMuYyAgICB8IDEzMjUgKysrKysrKysrKysrKysrKwogLi4uL2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGRpX2J1Zl90cmFucy5oICAgIHwgICA5OSArKwogNCBmaWxlcyBjaGFuZ2VkLCAxNDM3 IGluc2VydGlvbnMoKyksIDEzMzUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGlfYnVmX3RyYW5zLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaV9idWZfdHJh bnMuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggZTFhMjQyMzllMjVlLi42ZmU5MGIxZmU2OTQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC0yMzcsNiArMjM3LDcgQEAgaTkxNS15ICs9IFwKIAlk aXNwbGF5L2ljbF9kc2kubyBcCiAJZGlzcGxheS9pbnRlbF9jcnQubyBcCiAJZGlzcGxheS9pbnRl bF9kZGkubyBcCisJZGlzcGxheS9pbnRlbF9kZGlfYnVmX3RyYW5zLm8gXAogCWRpc3BsYXkvaW50 ZWxfZHAubyBcCiAJZGlzcGxheS9pbnRlbF9kcF9hdXhfYmFja2xpZ2h0Lm8gXAogCWRpc3BsYXkv aW50ZWxfZHBfaGRjcC5vIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5j CmluZGV4IDY4NjMyMzZkZjFkMC4uNDI4MjgzZjJkMjNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGRpLmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJpbnRlbF9j b21ib19waHkuaCIKICNpbmNsdWRlICJpbnRlbF9jb25uZWN0b3IuaCIKICNpbmNsdWRlICJpbnRl bF9kZGkuaCIKKyNpbmNsdWRlICJpbnRlbF9kZGlfYnVmX3RyYW5zLmgiCiAjaW5jbHVkZSAiaW50 ZWxfZGlzcGxheV90eXBlcy5oIgogI2luY2x1ZGUgImludGVsX2RwLmgiCiAjaW5jbHVkZSAiaW50 ZWxfZHBfbXN0LmgiCkBAIC01MSwxMiArNTIsNiBAQAogI2luY2x1ZGUgImludGVsX3RjLmgiCiAj aW5jbHVkZSAiaW50ZWxfdmRzYy5oIgogCi1zdHJ1Y3QgZGRpX2J1Zl90cmFucyB7Ci0JdTMyIHRy YW5zMTsJLyogYmFsYW5jZSBsZWcgZW5hYmxlLCBkZS1lbXBoIGxldmVsICovCi0JdTMyIHRyYW5z MjsJLyogdnJlZiBzZWwsIHZzd2luZyAqLwotCXU4IGlfYm9vc3Q7CS8qIFNLTDogSV9ib29zdDsg dmFsaWQ6IDB4MCwgMHgxLCAweDMsIDB4NyAqLwotfTsKLQogc3RhdGljIGNvbnN0IHU4IGluZGV4 X3RvX2RwX3NpZ25hbF9sZXZlbHNbXSA9IHsKIAlbMF0gPSBEUF9UUkFJTl9WT0xUQUdFX1NXSU5H X0xFVkVMXzAgfCBEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8wLAogCVsxXSA9IERQX1RSQUlOX1ZP TFRBR0VfU1dJTkdfTEVWRUxfMCB8IERQX1RSQUlOX1BSRV9FTVBIX0xFVkVMXzEsCkBAIC03MCwx MzE5ICs2NSwxNSBAQCBzdGF0aWMgY29uc3QgdTggaW5kZXhfdG9fZHBfc2lnbmFsX2xldmVsc1td ID0gewogCVs5XSA9IERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxfMyB8IERQX1RSQUlOX1BS RV9FTVBIX0xFVkVMXzAsCiB9OwogCi0vKiBIRE1JL0RWSSBtb2RlcyBpZ25vcmUgZXZlcnl0aGlu ZyBidXQgdGhlIGxhc3QgMiBpdGVtcy4gU28gd2Ugc2hhcmUKLSAqIHRoZW0gZm9yIGJvdGggRFAg YW5kIEZESSB0cmFuc3BvcnRzLCBhbGxvd2luZyB0aG9zZSBwb3J0cyB0bwotICogYXV0b21hdGlj YWxseSBhZGFwdCB0byBIRE1JIGNvbm5lY3Rpb25zIGFzIHdlbGwKLSAqLwotc3RhdGljIGNvbnN0 IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGhzd19kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7Ci0JeyAw eDAwRkZGRkZGLCAweDAwMDYwMDBFLCAweDAgfSwKLQl7IDB4MDBENzVGRkYsIDB4MDAwNTAwMEEs IDB4MCB9LAotCXsgMHgwMEMzMEZGRiwgMHgwMDA0MDAwNiwgMHgwIH0sCi0JeyAweDgwQUFBRkZG LCAweDAwMEIwMDAwLCAweDAgfSwKLQl7IDB4MDBGRkZGRkYsIDB4MDAwNTAwMEEsIDB4MCB9LAot CXsgMHgwMEQ3NUZGRiwgMHgwMDBDMDAwNCwgMHgwIH0sCi0JeyAweDgwQzMwRkZGLCAweDAwMEIw MDAwLCAweDAgfSwKLQl7IDB4MDBGRkZGRkYsIDB4MDAwNDAwMDYsIDB4MCB9LAotCXsgMHg4MEQ3 NUZGRiwgMHgwMDBCMDAwMCwgMHgwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9i dWZfdHJhbnMgaHN3X2RkaV90cmFuc2xhdGlvbnNfZmRpW10gPSB7Ci0JeyAweDAwRkZGRkZGLCAw eDAwMDcwMDBFLCAweDAgfSwKLQl7IDB4MDBENzVGRkYsIDB4MDAwRjAwMEEsIDB4MCB9LAotCXsg MHgwMEMzMEZGRiwgMHgwMDA2MDAwNiwgMHgwIH0sCi0JeyAweDAwQUFBRkZGLCAweDAwMUUwMDAw LCAweDAgfSwKLQl7IDB4MDBGRkZGRkYsIDB4MDAwRjAwMEEsIDB4MCB9LAotCXsgMHgwMEQ3NUZG RiwgMHgwMDE2MDAwNCwgMHgwIH0sCi0JeyAweDAwQzMwRkZGLCAweDAwMUUwMDAwLCAweDAgfSwK LQl7IDB4MDBGRkZGRkYsIDB4MDAwNjAwMDYsIDB4MCB9LAotCXsgMHgwMEQ3NUZGRiwgMHgwMDFF MDAwMCwgMHgwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgaHN3 X2RkaV90cmFuc2xhdGlvbnNfaGRtaVtdID0gewotCQkJCQkvKiBJZHgJTlQgbVYgZAlUIG1WIGQJ ZGIJKi8KLQl7IDB4MDBGRkZGRkYsIDB4MDAwNjAwMEUsIDB4MCB9LC8qIDA6CTQwMAk0MDAJMAkq LwotCXsgMHgwMEU3OUZGRiwgMHgwMDBFMDAwQywgMHgwIH0sLyogMToJNDAwCTUwMAkyCSovCi0J eyAweDAwRDc1RkZGLCAweDAwMDUwMDBBLCAweDAgfSwvKiAyOgk0MDAJNjAwCTMuNQkqLwotCXsg MHgwMEZGRkZGRiwgMHgwMDA1MDAwQSwgMHgwIH0sLyogMzoJNjAwCTYwMAkwCSovCi0JeyAweDAw RTc5RkZGLCAweDAwMUQwMDA3LCAweDAgfSwvKiA0Ogk2MDAJNzUwCTIJKi8KLQl7IDB4MDBENzVG RkYsIDB4MDAwQzAwMDQsIDB4MCB9LC8qIDU6CTYwMAk5MDAJMy41CSovCi0JeyAweDAwRkZGRkZG LCAweDAwMDQwMDA2LCAweDAgfSwvKiA2Ogk4MDAJODAwCTAJKi8KLQl7IDB4ODBFNzlGRkYsIDB4 MDAwMzAwMDIsIDB4MCB9LC8qIDc6CTgwMAkxMDAwCTIJKi8KLQl7IDB4MDBGRkZGRkYsIDB4MDAx NDAwMDUsIDB4MCB9LC8qIDg6CTg1MAk4NTAJMAkqLwotCXsgMHgwMEZGRkZGRiwgMHgwMDBDMDAw NCwgMHgwIH0sLyogOToJOTAwCTkwMAkwCSovCi0JeyAweDAwRkZGRkZGLCAweDAwMUMwMDAzLCAw eDAgfSwvKiAxMDoJOTUwCTk1MAkwCSovCi0JeyAweDgwRkZGRkZGLCAweDAwMDMwMDAyLCAweDAg fSwvKiAxMToJMTAwMAkxMDAwCTAJKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1 Zl90cmFucyBiZHdfZGRpX3RyYW5zbGF0aW9uc19lZHBbXSA9IHsKLQl7IDB4MDBGRkZGRkYsIDB4 MDAwMDAwMTIsIDB4MCB9LAotCXsgMHgwMEVCQUZGRiwgMHgwMDAyMDAxMSwgMHgwIH0sCi0JeyAw eDAwQzcxRkZGLCAweDAwMDYwMDBGLCAweDAgfSwKLQl7IDB4MDBBQUFGRkYsIDB4MDAwRTAwMEEs IDB4MCB9LAotCXsgMHgwMEZGRkZGRiwgMHgwMDAyMDAxMSwgMHgwIH0sCi0JeyAweDAwREI2RkZG LCAweDAwMDUwMDBGLCAweDAgfSwKLQl7IDB4MDBCRUVGRkYsIDB4MDAwQTAwMEMsIDB4MCB9LAot CXsgMHgwMEZGRkZGRiwgMHgwMDA1MDAwRiwgMHgwIH0sCi0JeyAweDAwREI2RkZGLCAweDAwMEEw MDBDLCAweDAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBiZHdf ZGRpX3RyYW5zbGF0aW9uc19kcFtdID0gewotCXsgMHgwMEZGRkZGRiwgMHgwMDA3MDAwRSwgMHgw IH0sCi0JeyAweDAwRDc1RkZGLCAweDAwMEUwMDBBLCAweDAgfSwKLQl7IDB4MDBCRUZGRkYsIDB4 MDAxNDAwMDYsIDB4MCB9LAotCXsgMHg4MEIyQ0ZGRiwgMHgwMDFCMDAwMiwgMHgwIH0sCi0JeyAw eDAwRkZGRkZGLCAweDAwMEUwMDBBLCAweDAgfSwKLQl7IDB4MDBEQjZGRkYsIDB4MDAxNjAwMDUs IDB4MCB9LAotCXsgMHg4MEM3MUZGRiwgMHgwMDFBMDAwMiwgMHgwIH0sCi0JeyAweDAwRjdERkZG LCAweDAwMTgwMDA0LCAweDAgfSwKLQl7IDB4ODBENzVGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LAot fTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRp b25zX2ZkaVtdID0gewotCXsgMHgwMEZGRkZGRiwgMHgwMDAxMDAwRSwgMHgwIH0sCi0JeyAweDAw RDc1RkZGLCAweDAwMDQwMDBBLCAweDAgfSwKLQl7IDB4MDBDMzBGRkYsIDB4MDAwNzAwMDYsIDB4 MCB9LAotCXsgMHgwMEFBQUZGRiwgMHgwMDBDMDAwMCwgMHgwIH0sCi0JeyAweDAwRkZGRkZGLCAw eDAwMDQwMDBBLCAweDAgfSwKLQl7IDB4MDBENzVGRkYsIDB4MDAwOTAwMDQsIDB4MCB9LAotCXsg MHgwMEMzMEZGRiwgMHgwMDBDMDAwMCwgMHgwIH0sCi0JeyAweDAwRkZGRkZGLCAweDAwMDcwMDA2 LCAweDAgfSwKLQl7IDB4MDBENzVGRkYsIDB4MDAwQzAwMDAsIDB4MCB9LAotfTsKLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRpb25zX2hkbWlbXSA9 IHsKLQkJCQkJLyogSWR4CU5UIG1WIGQJVCBtViBkZglkYgkqLwotCXsgMHgwMEZGRkZGRiwgMHgw MDA3MDAwRSwgMHgwIH0sLyogMDoJNDAwCTQwMAkwCSovCi0JeyAweDAwRDc1RkZGLCAweDAwMEUw MDBBLCAweDAgfSwvKiAxOgk0MDAJNjAwCTMuNQkqLwotCXsgMHgwMEJFRkZGRiwgMHgwMDE0MDAw NiwgMHgwIH0sLyogMjoJNDAwCTgwMAk2CSovCi0JeyAweDAwRkZGRkZGLCAweDAwMDkwMDBELCAw eDAgfSwvKiAzOgk0NTAJNDUwCTAJKi8KLQl7IDB4MDBGRkZGRkYsIDB4MDAwRTAwMEEsIDB4MCB9 LC8qIDQ6CTYwMAk2MDAJMAkqLwotCXsgMHgwMEQ3RkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sLyog NToJNjAwCTgwMAkyLjUJKi8KLQl7IDB4ODBDQjJGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LC8qIDY6 CTYwMAkxMDAwCTQuNQkqLwotCXsgMHgwMEZGRkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sLyogNzoJ ODAwCTgwMAkwCSovCi0JeyAweDgwRTc5RkZGLCAweDAwMUIwMDAyLCAweDAgfSwvKiA4Ogk4MDAJ MTAwMAkyCSovCi0JeyAweDgwRkZGRkZGLCAweDAwMUIwMDAyLCAweDAgfSwvKiA5OgkxMDAwCTEw MDAJMAkqLwotfTsKLQotLyogU2t5bGFrZSBIIGFuZCBTICovCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGRkaV9idWZfdHJhbnMgc2tsX2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKLQl7IDB4MDAwMDIw MTYsIDB4MDAwMDAwQTAsIDB4MCB9LAotCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA5QiwgMHgwIH0s Ci0JeyAweDAwMDA3MDExLCAweDAwMDAwMDg4LCAweDAgfSwKLQl7IDB4ODAwMDkwMTAsIDB4MDAw MDAwQzAsIDB4MSB9LAotCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDA5QiwgMHgwIH0sCi0JeyAweDAw MDA1MDEyLCAweDAwMDAwMDg4LCAweDAgfSwKLQl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4 MSB9LAotCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDBERiwgMHgwIH0sCi0JeyAweDgwMDA1MDEyLCAw eDAwMDAwMEMwLCAweDEgfSwKLX07Ci0KLS8qIFNreWxha2UgVSAqLwotc3RhdGljIGNvbnN0IHN0 cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF91X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKLQl7IDB4 MDAwMDIwMUIsIDB4MDAwMDAwQTIsIDB4MCB9LAotCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwg MHgwIH0sCi0JeyAweDgwMDA3MDExLCAweDAwMDAwMENELCAweDEgfSwKLQl7IDB4ODAwMDkwMTAs IDB4MDAwMDAwQzAsIDB4MSB9LAotCXsgMHgwMDAwMjAxQiwgMHgwMDAwMDA5RCwgMHgwIH0sCi0J eyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDEgfSwKLQl7IDB4ODAwMDcwMTEsIDB4MDAwMDAw QzAsIDB4MSB9LAotCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDA4OCwgMHgwIH0sCi0JeyAweDgwMDA1 MDEyLCAweDAwMDAwMEMwLCAweDEgfSwKLX07Ci0KLS8qIFNreWxha2UgWSAqLwotc3RhdGljIGNv bnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIHNrbF95X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsK LQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTIsIDB4MCB9LAotCXsgMHgwMDAwNTAxMiwgMHgwMDAw MDA4OCwgMHgwIH0sCi0JeyAweDgwMDA3MDExLCAweDAwMDAwMENELCAweDMgfSwKLQl7IDB4ODAw MDkwMTAsIDB4MDAwMDAwQzAsIDB4MyB9LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA5RCwgMHgw IH0sCi0JeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4ODAwMDcwMTEsIDB4 MDAwMDAwQzAsIDB4MyB9LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA4OCwgMHgwIH0sCi0JeyAw eDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKLX07Ci0KLS8qIEthYnlsYWtlIEggYW5kIFMg Ki8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBrYmxfZGRpX3RyYW5zbGF0aW9u c19kcFtdID0gewotCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDBBMCwgMHgwIH0sCi0JeyAweDAwMDA1 MDEyLCAweDAwMDAwMDlCLCAweDAgfSwKLQl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwODgsIDB4MCB9 LAotCXsgMHg4MDAwOTAxMCwgMHgwMDAwMDBDMCwgMHgxIH0sCi0JeyAweDAwMDAyMDE2LCAweDAw MDAwMDlCLCAweDAgfSwKLQl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwODgsIDB4MCB9LAotCXsgMHg4 MDAwNzAxMSwgMHgwMDAwMDBDMCwgMHgxIH0sCi0JeyAweDAwMDAyMDE2LCAweDAwMDAwMDk3LCAw eDAgfSwKLQl7IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MSB9LAotfTsKLQotLyogS2FieWxh a2UgVSAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGtibF91X2RkaV90cmFu c2xhdGlvbnNfZHBbXSA9IHsKLQl7IDB4MDAwMDIwMUIsIDB4MDAwMDAwQTEsIDB4MCB9LAotCXsg MHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwgMHgwIH0sCi0JeyAweDgwMDA3MDExLCAweDAwMDAwMENE LCAweDMgfSwKLQl7IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzAsIDB4MyB9LAotCXsgMHgwMDAwMjAx QiwgMHgwMDAwMDA5RCwgMHgwIH0sCi0JeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwK LQl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MyB9LAotCXsgMHgwMDAwMjAxNiwgMHgwMDAw MDA0RiwgMHgwIH0sCi0JeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKLX07Ci0KLS8q IEthYnlsYWtlIFkgKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBrYmxfeV9k ZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7Ci0JeyAweDAwMDAxMDE3LCAweDAwMDAwMEExLCAweDAg fSwKLQl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwODgsIDB4MCB9LAotCXsgMHg4MDAwNzAxMSwgMHgw MDAwMDBDRCwgMHgzIH0sCi0JeyAweDgwMDA4MDBGLCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4 MDAwMDEwMTcsIDB4MDAwMDAwOUQsIDB4MCB9LAotCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwg MHgzIH0sCi0JeyAweDgwMDA3MDExLCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4MDAwMDEwMTcs IDB4MDAwMDAwNEMsIDB4MCB9LAotCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgzIH0sCi19 OwotCi0vKgotICogU2t5bGFrZS9LYWJ5bGFrZSBIIGFuZCBTCi0gKiBlRFAgMS40IGxvdyB2c3dp bmcgdHJhbnNsYXRpb24gcGFyYW1ldGVycwotICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9i dWZfdHJhbnMgc2tsX2RkaV90cmFuc2xhdGlvbnNfZWRwW10gPSB7Ci0JeyAweDAwMDAwMDE4LCAw eDAwMDAwMEE4LCAweDAgfSwKLQl7IDB4MDAwMDQwMTMsIDB4MDAwMDAwQTksIDB4MCB9LAotCXsg MHgwMDAwNzAxMSwgMHgwMDAwMDBBMiwgMHgwIH0sCi0JeyAweDAwMDA5MDEwLCAweDAwMDAwMDlD LCAweDAgfSwKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTksIDB4MCB9LAotCXsgMHgwMDAwNjAx MywgMHgwMDAwMDBBMiwgMHgwIH0sCi0JeyAweDAwMDA3MDExLCAweDAwMDAwMEE2LCAweDAgfSwK LQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQUIsIDB4MCB9LAotCXsgMHgwMDAwNzAxMywgMHgwMDAw MDA5RiwgMHgwIH0sCi0JeyAweDAwMDAwMDE4LCAweDAwMDAwMERGLCAweDAgfSwKLX07Ci0KLS8q Ci0gKiBTa3lsYWtlL0thYnlsYWtlIFUKLSAqIGVEUCAxLjQgbG93IHZzd2luZyB0cmFuc2xhdGlv biBwYXJhbWV0ZXJzCi0gKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xf dV9kZGlfdHJhbnNsYXRpb25zX2VkcFtdID0gewotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBOCwg MHgwIH0sCi0JeyAweDAwMDA0MDEzLCAweDAwMDAwMEE5LCAweDAgfSwKLQl7IDB4MDAwMDcwMTEs IDB4MDAwMDAwQTIsIDB4MCB9LAotCXsgMHgwMDAwOTAxMCwgMHgwMDAwMDA5QywgMHgwIH0sCi0J eyAweDAwMDAwMDE4LCAweDAwMDAwMEE5LCAweDAgfSwKLQl7IDB4MDAwMDYwMTMsIDB4MDAwMDAw QTIsIDB4MCB9LAotCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDBBNiwgMHgwIH0sCi0JeyAweDAwMDAy MDE2LCAweDAwMDAwMEFCLCAweDAgfSwKLQl7IDB4MDAwMDUwMTMsIDB4MDAwMDAwOUYsIDB4MCB9 LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBERiwgMHgwIH0sCi19OwotCi0vKgotICogU2t5bGFr ZS9LYWJ5bGFrZSBZCi0gKiBlRFAgMS40IGxvdyB2c3dpbmcgdHJhbnNsYXRpb24gcGFyYW1ldGVy cwotICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX3lfZGRpX3RyYW5z bGF0aW9uc19lZHBbXSA9IHsKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTgsIDB4MCB9LAotCXsg MHgwMDAwNDAxMywgMHgwMDAwMDBBQiwgMHgwIH0sCi0JeyAweDAwMDA3MDExLCAweDAwMDAwMEE0 LCAweDAgfSwKLQl7IDB4MDAwMDkwMTAsIDB4MDAwMDAwREYsIDB4MCB9LAotCXsgMHgwMDAwMDAx OCwgMHgwMDAwMDBBQSwgMHgwIH0sCi0JeyAweDAwMDA2MDEzLCAweDAwMDAwMEE0LCAweDAgfSwK LQl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwOUQsIDB4MCB9LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAw MDBBMCwgMHgwIH0sCi0JeyAweDAwMDA2MDEyLCAweDAwMDAwMERGLCAweDAgfSwKLQl7IDB4MDAw MDAwMTgsIDB4MDAwMDAwOEEsIDB4MCB9LAotfTsKLQotLyogU2t5bGFrZS9LYWJ5bGFrZSBVLCBI IGFuZCBTICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX2RkaV90cmFu c2xhdGlvbnNfaGRtaVtdID0gewotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBQywgMHgwIH0sCi0J eyAweDAwMDA1MDEyLCAweDAwMDAwMDlELCAweDAgfSwKLQl7IDB4MDAwMDcwMTEsIDB4MDAwMDAw ODgsIDB4MCB9LAotCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBMSwgMHgwIH0sCi0JeyAweDAwMDAw MDE4LCAweDAwMDAwMDk4LCAweDAgfSwKLQl7IDB4MDAwMDQwMTMsIDB4MDAwMDAwODgsIDB4MCB9 LAotCXsgMHg4MDAwNjAxMiwgMHgwMDAwMDBDRCwgMHgxIH0sCi0JeyAweDAwMDAwMDE4LCAweDAw MDAwMERGLCAweDAgfSwKLQl7IDB4ODAwMDMwMTUsIDB4MDAwMDAwQ0QsIDB4MSB9LAkvKiBEZWZh dWx0ICovCi0JeyAweDgwMDAzMDE1LCAweDAwMDAwMEMwLCAweDEgfSwKLQl7IDB4ODAwMDAwMTgs IDB4MDAwMDAwQzAsIDB4MSB9LAotfTsKLQotLyogU2t5bGFrZS9LYWJ5bGFrZSBZICovCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19oZG1p W10gPSB7Ci0JeyAweDAwMDAwMDE4LCAweDAwMDAwMEExLCAweDAgfSwKLQl7IDB4MDAwMDUwMTIs IDB4MDAwMDAwREYsIDB4MCB9LAotCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDQiwgMHgzIH0sCi0J eyAweDAwMDAwMDE4LCAweDAwMDAwMEE0LCAweDAgfSwKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAw OUQsIDB4MCB9LAotCXsgMHgwMDAwNDAxMywgMHgwMDAwMDA4MCwgMHgwIH0sCi0JeyAweDgwMDA2 MDEzLCAweDAwMDAwMEMwLCAweDMgfSwKLQl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwOEEsIDB4MCB9 LAotCXsgMHg4MDAwMzAxNSwgMHgwMDAwMDBDMCwgMHgzIH0sCS8qIERlZmF1bHQgKi8KLQl7IDB4 ODAwMDMwMTUsIDB4MDAwMDAwQzAsIDB4MyB9LAotCXsgMHg4MDAwMDAxOCwgMHgwMDAwMDBDMCwg MHgzIH0sCi19OwotCi1zdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgewotCXU4IG1hcmdpbjsJLyog c3dpbmcgdmFsdWUgKi8KLQl1OCBzY2FsZTsJLyogc2NhbGUgdmFsdWUgKi8KLQl1OCBlbmFibGU7 CS8qIHNjYWxlIGVuYWJsZSAqLwotCXU4IGRlZW1waGFzaXM7Ci19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zIGJ4dF9kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7Ci0J CQkJCS8qIElkeAlOVCBtViBkaWZmCWRiICAqLwotCXsgNTIsICAweDlBLCAwLCAxMjgsIH0sCS8q IDA6CTQwMAkJMCAgICovCi0JeyA3OCwgIDB4OUEsIDAsIDg1LCAgfSwJLyogMToJNDAwCQkzLjUg Ki8KLQl7IDEwNCwgMHg5QSwgMCwgNjQsICB9LAkvKiAyOgk0MDAJCTYgICAqLwotCXsgMTU0LCAw eDlBLCAwLCA0MywgIH0sCS8qIDM6CTQwMAkJOS41ICovCi0JeyA3NywgIDB4OUEsIDAsIDEyOCwg fSwJLyogNDoJNjAwCQkwICAgKi8KLQl7IDExNiwgMHg5QSwgMCwgODUsICB9LAkvKiA1Ogk2MDAJ CTMuNSAqLwotCXsgMTU0LCAweDlBLCAwLCA2NCwgIH0sCS8qIDY6CTYwMAkJNiAgICovCi0JeyAx MDIsIDB4OUEsIDAsIDEyOCwgfSwJLyogNzoJODAwCQkwICAgKi8KLQl7IDE1NCwgMHg5QSwgMCwg ODUsICB9LAkvKiA4Ogk4MDAJCTMuNSAqLwotCXsgMTU0LCAweDlBLCAxLCAxMjgsIH0sCS8qIDk6 CTEyMDAJCTAgICAqLwotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFu cyBieHRfZGRpX3RyYW5zbGF0aW9uc19lZHBbXSA9IHsKLQkJCQkJLyogSWR4CU5UIG1WIGRpZmYJ ZGIgICovCi0JeyAyNiwgMCwgMCwgMTI4LCB9LAkvKiAwOgkyMDAJCTAgICAqLwotCXsgMzgsIDAs IDAsIDExMiwgfSwJLyogMToJMjAwCQkxLjUgKi8KLQl7IDQ4LCAwLCAwLCA5NiwgIH0sCS8qIDI6 CTIwMAkJNCAgICovCi0JeyA1NCwgMCwgMCwgNjksICB9LAkvKiAzOgkyMDAJCTYgICAqLwotCXsg MzIsIDAsIDAsIDEyOCwgfSwJLyogNDoJMjUwCQkwICAgKi8KLQl7IDQ4LCAwLCAwLCAxMDQsIH0s CS8qIDU6CTI1MAkJMS41ICovCi0JeyA1NCwgMCwgMCwgODUsICB9LAkvKiA2OgkyNTAJCTQgICAq LwotCXsgNDMsIDAsIDAsIDEyOCwgfSwJLyogNzoJMzAwCQkwICAgKi8KLQl7IDU0LCAwLCAwLCAx MDEsIH0sCS8qIDg6CTMwMAkJMS41ICovCi0JeyA0OCwgMCwgMCwgMTI4LCB9LAkvKiA5OgkzMDAJ CTAgICAqLwotfTsKLQotLyogQlNwZWMgaGFzIDIgcmVjb21tZW5kZWQgdmFsdWVzIC0gZW50cmll cyAwIGFuZCA4LgotICogVXNpbmcgdGhlIGVudHJ5IHdpdGggaGlnaGVyIHZzd2luZy4KLSAqLwot c3RhdGljIGNvbnN0IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFucyBieHRfZGRpX3RyYW5zbGF0aW9u c19oZG1pW10gPSB7Ci0JCQkJCS8qIElkeAlOVCBtViBkaWZmCWRiICAqLwotCXsgNTIsICAweDlB LCAwLCAxMjgsIH0sCS8qIDA6CTQwMAkJMCAgICovCi0JeyA1MiwgIDB4OUEsIDAsIDg1LCAgfSwJ LyogMToJNDAwCQkzLjUgKi8KLQl7IDUyLCAgMHg5QSwgMCwgNjQsICB9LAkvKiAyOgk0MDAJCTYg ICAqLwotCXsgNDIsICAweDlBLCAwLCA0MywgIH0sCS8qIDM6CTQwMAkJOS41ICovCi0JeyA3Nywg IDB4OUEsIDAsIDEyOCwgfSwJLyogNDoJNjAwCQkwICAgKi8KLQl7IDc3LCAgMHg5QSwgMCwgODUs ICB9LAkvKiA1Ogk2MDAJCTMuNSAqLwotCXsgNzcsICAweDlBLCAwLCA2NCwgIH0sCS8qIDY6CTYw MAkJNiAgICovCi0JeyAxMDIsIDB4OUEsIDAsIDEyOCwgfSwJLyogNzoJODAwCQkwICAgKi8KLQl7 IDEwMiwgMHg5QSwgMCwgODUsICB9LAkvKiA4Ogk4MDAJCTMuNSAqLwotCXsgMTU0LCAweDlBLCAx LCAxMjgsIH0sCS8qIDk6CTEyMDAJCTAgICAqLwotfTsKLQotc3RydWN0IGNubF9kZGlfYnVmX3Ry YW5zIHsKLQl1OCBkdzJfc3dpbmdfc2VsOwotCXU4IGR3N19uX3NjYWxhcjsKLQl1OCBkdzRfY3Vy c29yX2NvZWZmOwotCXU4IGR3NF9wb3N0X2N1cnNvcl8yOwotCXU4IGR3NF9wb3N0X2N1cnNvcl8x OwotfTsKLQotLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMC44NVYgZm9y IERQICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJh bnNsYXRpb25zX2RwXzBfODVWW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAq LwotCXsgMHhBLCAweDVELCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAu MCAgICovCi0JeyAweEEsIDB4NkEsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMzUwICAgNTAwICAg ICAgMy4xICAgKi8KLQl7IDB4QiwgMHg3QSwgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiAzNTAgICA3 MDAgICAgICA2LjAgICAqLwotCXsgMHg2LCAweDdDLCAweDJELCAweDAwLCAweDEyIH0sCS8qIDM1 MCAgIDkwMCAgICAgIDguMiAgICovCi0JeyAweEEsIDB4NjksIDB4M0YsIDB4MDAsIDB4MDAgfSwJ LyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KLQl7IDB4QiwgMHg3QSwgMHgzNiwgMHgwMCwgMHgw OSB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwotCXsgMHg2LCAweDdDLCAweDMwLCAweDAw LCAweDBGIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCi0JeyAweEIsIDB4N0QsIDB4M0Ms IDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzI1ICAgICAgMC45ICAgKi8KLQl7IDB4NiwgMHg3Qywg MHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwotCXsgMHg2LCAw eDdCLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCi19Owot Ci0vKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjg1ViBmb3IgSERNSSAq Lwotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0 aW9uc19oZG1pXzBfODVWW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwot CXsgMHhBLCAweDYwLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQ1MCAgIDQ1MCAgICAgIDAuMCAg ICovCi0JeyAweEIsIDB4NzMsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNDUwICAgNjUwICAgICAg My4yICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzMSwgMHgwMCwgMHgwRSB9LAkvKiA0NTAgICA4NTAg ICAgICA1LjUgICAqLwotCXsgMHhCLCAweDczLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDY1MCAg IDY1MCAgICAgIDAuMCAgICovCi0JeyAweDYsIDB4N0YsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyog NjUwICAgODUwICAgICAgMi4zICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiA4NTAgICA4NTAgICAgICAwLjAgICAqLwotCXsgMHg2LCAweDdGLCAweDM1LCAweDAwLCAw eDBBIH0sCS8qIDYwMCAgIDg1MCAgICAgIDMuMCAgICovCi19OwotCi0vKiBWb2x0YWdlIFN3aW5n IFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjg1ViBmb3IgZURQICovCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8wXzg1VltdID0g ewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHg2NiwgMHgzQSwg MHgwMCwgMHgwNSB9LAkvKiAzODQgICA1MDAgICAgICAyLjMgICAqLwotCXsgMHgwLCAweDdGLCAw eDM4LCAweDAwLCAweDA3IH0sCS8qIDE1MyAgIDIwMCAgICAgIDIuMyAgICovCi0JeyAweDgsIDB4 N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMTkyICAgMjUwICAgICAgMi4zICAgKi8KLQl7IDB4 MSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyMzAgICAzMDAgICAgICAyLjMgICAqLwot CXsgMHg5LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDI2OSAgIDM1MCAgICAgIDIuMyAg ICovCi0JeyAweEEsIDB4NjYsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNDQ2ICAgNTAwICAgICAg MS4wICAgKi8KLQl7IDB4QiwgMHg3MCwgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA0NjAgICA2MDAg ICAgICAyLjMgICAqLwotCXsgMHhDLCAweDc1LCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDUzNyAg IDcwMCAgICAgIDIuMyAgICovCi0JeyAweDIsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyog NDAwICAgNDAwICAgICAgMC4wICAgKi8KLX07Ci0KLS8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1p bmcgZm9yIFZjY0lPIDAuOTVWIGZvciBEUCAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRp X2J1Zl90cmFucyBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzk1VltdID0gewotCQkJCQkJLyog TlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHg1RCwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwotCXsgMHhBLCAweDZBLCAweDM4LCAweDAwLCAw eDA3IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCi0JeyAweEIsIDB4N0EsIDB4MzIsIDB4 MDAsIDB4MEQgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8KLQl7IDB4NiwgMHg3QywgMHgy RCwgMHgwMCwgMHgxMiB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLwotCXsgMHhBLCAweDY5 LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCi0JeyAweEIs IDB4N0EsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KLQl7 IDB4NiwgMHg3QywgMHgzMCwgMHgwMCwgMHgwRiB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAq LwotCXsgMHhCLCAweDdELCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcyNSAgICAgIDAu OSAgICovCi0JeyAweDYsIDB4N0MsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogNjAwICAgOTAwICAg ICAgMy41ICAgKi8KLQl7IDB4NiwgMHg3QiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5 MDAgICAgICAwLjAgICAqLwotfTsKLQotLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3Ig VmNjSU8gMC45NVYgZm9yIEhETUkgKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZf dHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8wXzk1VltdID0gewotCQkJCQkJLyogTlQg bVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHg1QywgMHgzRiwgMHgwMCwgMHgwMCB9LAkv KiA0MDAgICA0MDAgICAgICAwLjAgICAqLwotCXsgMHhCLCAweDY5LCAweDM3LCAweDAwLCAweDA4 IH0sCS8qIDQwMCAgIDYwMCAgICAgIDMuNSAgICovCi0JeyAweDUsIDB4NzYsIDB4MzEsIDB4MDAs IDB4MEUgfSwJLyogNDAwICAgODAwICAgICAgNi4wICAgKi8KLQl7IDB4QSwgMHg1RSwgMHgzRiwg MHgwMCwgMHgwMCB9LAkvKiA0NTAgICA0NTAgICAgICAwLjAgICAqLwotCXsgMHhCLCAweDY5LCAw eDNGLCAweDAwLCAweDAwIH0sCS8qIDYwMCAgIDYwMCAgICAgIDAuMCAgICovCi0JeyAweEIsIDB4 NzksIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgODUwICAgICAgMy4wICAgKi8KLQl7IDB4 NiwgMHg3RCwgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiA2MDAgICAxMDAwICAgICA0LjQgICAqLwot CXsgMHg1LCAweDc2LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDgwMCAgIDgwMCAgICAgIDAuMCAg ICovCi0JeyAweDYsIDB4N0QsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogODAwICAgMTAwMCAgICAg MS45ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA4NTAgICAxMDUw ICAgICAxLjggICAqLwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEwNTAg IDEwNTAgICAgIDAuMCAgICovCi19OwotCi0vKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZv ciBWY2NJTyAwLjk1ViBmb3IgZURQICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVm X3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8wXzk1VltdID0gewotCQkJCQkJLyogTlQg bVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHg2MSwgMHgzQSwgMHgwMCwgMHgwNSB9LAkv KiAzODQgICA1MDAgICAgICAyLjMgICAqLwotCXsgMHgwLCAweDdGLCAweDM4LCAweDAwLCAweDA3 IH0sCS8qIDE1MyAgIDIwMCAgICAgIDIuMyAgICovCi0JeyAweDgsIDB4N0YsIDB4MzgsIDB4MDAs IDB4MDcgfSwJLyogMTkyICAgMjUwICAgICAgMi4zICAgKi8KLQl7IDB4MSwgMHg3RiwgMHgzOCwg MHgwMCwgMHgwNyB9LAkvKiAyMzAgICAzMDAgICAgICAyLjMgICAqLwotCXsgMHg5LCAweDdGLCAw eDM4LCAweDAwLCAweDA3IH0sCS8qIDI2OSAgIDM1MCAgICAgIDIuMyAgICovCi0JeyAweEEsIDB4 NjEsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNDQ2ICAgNTAwICAgICAgMS4wICAgKi8KLQl7IDB4 QiwgMHg2OCwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA0NjAgICA2MDAgICAgICAyLjMgICAqLwot CXsgMHhDLCAweDZFLCAweDM5LCAweDAwLCAweDA2IH0sCS8qIDUzNyAgIDcwMCAgICAgIDIuMyAg ICovCi0JeyAweDQsIDB4N0YsIDB4M0EsIDB4MDAsIDB4MDUgfSwJLyogNDYwICAgNjAwICAgICAg Mi4zICAgKi8KLQl7IDB4MiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0MDAgICA0MDAg ICAgICAwLjAgICAqLwotfTsKLQotLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNj SU8gMS4wNVYgZm9yIERQICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5z IGNubF9kZGlfdHJhbnNsYXRpb25zX2RwXzFfMDVWW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFu cyBtViBkYiAgICAqLwotCXsgMHhBLCAweDU4LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAg IDQwMCAgICAgIDAuMCAgICovCi0JeyAweEIsIDB4NjQsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyog NDAwICAgNjAwICAgICAgMy41ICAgKi8KLQl7IDB4NSwgMHg3MCwgMHgzMSwgMHgwMCwgMHgwRSB9 LAkvKiA0MDAgICA4MDAgICAgICA2LjAgICAqLwotCXsgMHg2LCAweDdGLCAweDJDLCAweDAwLCAw eDEzIH0sCS8qIDQwMCAgIDEwNTAgICAgIDguNCAgICovCi0JeyAweEIsIDB4NjQsIDB4M0YsIDB4 MDAsIDB4MDAgfSwJLyogNjAwICAgNjAwICAgICAgMC4wICAgKi8KLQl7IDB4NSwgMHg3MywgMHgz NSwgMHgwMCwgMHgwQSB9LAkvKiA2MDAgICA4NTAgICAgICAzLjAgICAqLwotCXsgMHg2LCAweDdG LCAweDMwLCAweDAwLCAweDBGIH0sCS8qIDU1MCAgIDEwNTAgICAgIDUuNiAgICovCi0JeyAweDUs IDB4NzYsIDB4M0UsIDB4MDAsIDB4MDEgfSwJLyogODUwICAgOTAwICAgICAgMC41ICAgKi8KLQl7 IDB4NiwgMHg3RiwgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA3NTAgICAxMDUwICAgICAyLjkgICAq LwotCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDEwNTAgIDEwNTAgICAgIDAu MCAgICovCi19OwotCi0vKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAxLjA1 ViBmb3IgSERNSSAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxf ZGRpX3RyYW5zbGF0aW9uc19oZG1pXzFfMDVWW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBt ViBkYiAgICAqLwotCXsgMHhBLCAweDU4LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAgIDQw MCAgICAgIDAuMCAgICovCi0JeyAweEIsIDB4NjQsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogNDAw ICAgNjAwICAgICAgMy41ICAgKi8KLQl7IDB4NSwgMHg3MCwgMHgzMSwgMHgwMCwgMHgwRSB9LAkv KiA0MDAgICA4MDAgICAgICA2LjAgICAqLwotCXsgMHhBLCAweDVCLCAweDNGLCAweDAwLCAweDAw IH0sCS8qIDQ1MCAgIDQ1MCAgICAgIDAuMCAgICovCi0JeyAweEIsIDB4NjQsIDB4M0YsIDB4MDAs IDB4MDAgfSwJLyogNjAwICAgNjAwICAgICAgMC4wICAgKi8KLQl7IDB4NSwgMHg3MywgMHgzNSwg MHgwMCwgMHgwQSB9LAkvKiA2MDAgICA4NTAgICAgICAzLjAgICAqLwotCXsgMHg2LCAweDdDLCAw eDMyLCAweDAwLCAweDBEIH0sCS8qIDYwMCAgIDEwMDAgICAgIDQuNCAgICovCi0JeyAweDUsIDB4 NzAsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogODAwICAgODAwICAgICAgMC4wICAgKi8KLQl7IDB4 NiwgMHg3QywgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA4MDAgICAxMDAwICAgICAxLjkgICAqLwot CXsgMHg2LCAweDdGLCAweDM5LCAweDAwLCAweDA2IH0sCS8qIDg1MCAgIDEwNTAgICAgIDEuOCAg ICovCi0JeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMTA1MCAgMTA1MCAgICAg MC4wICAgKi8KLX07Ci0KLS8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDEu MDVWIGZvciBlRFAgKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25s X2RkaV90cmFuc2xhdGlvbnNfZWRwXzFfMDVWW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBt ViBkYiAgICAqLwotCXsgMHhBLCAweDVFLCAweDNBLCAweDAwLCAweDA1IH0sCS8qIDM4NCAgIDUw MCAgICAgIDIuMyAgICovCi0JeyAweDAsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMTUz ICAgMjAwICAgICAgMi4zICAgKi8KLQl7IDB4OCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkv KiAxOTIgICAyNTAgICAgICAyLjMgICAqLwotCXsgMHgxLCAweDdGLCAweDM4LCAweDAwLCAweDA3 IH0sCS8qIDIzMCAgIDMwMCAgICAgIDIuMyAgICovCi0JeyAweDksIDB4N0YsIDB4MzgsIDB4MDAs IDB4MDcgfSwJLyogMjY5ICAgMzUwICAgICAgMi4zICAgKi8KLQl7IDB4QSwgMHg1RSwgMHgzQywg MHgwMCwgMHgwMyB9LAkvKiA0NDYgICA1MDAgICAgICAxLjAgICAqLwotCXsgMHhCLCAweDY0LCAw eDM5LCAweDAwLCAweDA2IH0sCS8qIDQ2MCAgIDYwMCAgICAgIDIuMyAgICovCi0JeyAweEUsIDB4 NkEsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogNTM3ICAgNzAwICAgICAgMi4zICAgKi8KLQl7IDB4 MiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0MDAgICA0MDAgICAgICAwLjAgICAqLwot fTsKLQotLyogaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zICovCi1zdGF0aWMgY29uc3Qg c3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19k cF9oYnIyW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwotCXsgMHhBLCAw eDM1LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCi0JeyAw eEEsIDB4NEYsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8K LQl7IDB4QywgMHg3MSwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAg ICAqLwotCXsgMHg2LCAweDdGLCAweDJCLCAweDAwLCAweDE0IH0sCS8qIDM1MCAgIDkwMCAgICAg IDguMiAgICovCi0JeyAweEEsIDB4NEMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAw ICAgICAgMC4wICAgKi8KLQl7IDB4QywgMHg3MywgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA1MDAg ICA3MDAgICAgICAyLjkgICAqLwotCXsgMHg2LCAweDdGLCAweDJGLCAweDAwLCAweDEwIH0sCS8q IDUwMCAgIDkwMCAgICAgIDUuMSAgICovCi0JeyAweEMsIDB4NkMsIDB4M0MsIDB4MDAsIDB4MDMg fSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzNSwgMHgwMCwg MHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwotCXsgMHg2LCAweDdGLCAweDNGLCAw eDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCi19OwotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19lZHBfaGJyMltdID0gewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4 MCwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAyMDAgICAyMDAgICAgICAwLjAgICAqLwot CXsgMHg4LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDIwMCAgIDI1MCAgICAgIDEuOSAg ICovCi0JeyAweDEsIDB4N0YsIDB4MzMsIDB4MDAsIDB4MEMgfSwJLyogMjAwICAgMzAwICAgICAg My41ICAgKi8KLQl7IDB4OSwgMHg3RiwgMHgzMSwgMHgwMCwgMHgwRSB9LAkvKiAyMDAgICAzNTAg ICAgICA0LjkgICAqLwotCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDI1MCAg IDI1MCAgICAgIDAuMCAgICovCi0JeyAweDEsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyog MjUwICAgMzAwICAgICAgMS42ICAgKi8KLQl7IDB4OSwgMHg3RiwgMHgzNSwgMHgwMCwgMHgwQSB9 LAkvKiAyNTAgICAzNTAgICAgICAyLjkgICAqLwotCXsgMHgxLCAweDdGLCAweDNGLCAweDAwLCAw eDAwIH0sCS8qIDMwMCAgIDMwMCAgICAgIDAuMCAgICovCi0JeyAweDksIDB4N0YsIDB4MzgsIDB4 MDAsIDB4MDcgfSwJLyogMzAwICAgMzUwICAgICAgMS4zICAgKi8KLQl7IDB4OSwgMHg3RiwgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwotfTsKLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZWRwX2hicjNbXSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0J eyAweEEsIDB4MzUsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAg Ki8KLQl7IDB4QSwgMHg0RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiAzNTAgICA1MDAgICAgICAz LjEgICAqLwotCXsgMHhDLCAweDcxLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDM1MCAgIDcwMCAg ICAgIDYuMCAgICovCi0JeyAweDYsIDB4N0YsIDB4MkIsIDB4MDAsIDB4MTQgfSwJLyogMzUwICAg OTAwICAgICAgOC4yICAgKi8KLQl7IDB4QSwgMHg0QywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1 MDAgICA1MDAgICAgICAwLjAgICAqLwotCXsgMHhDLCAweDczLCAweDM0LCAweDAwLCAweDBCIH0s CS8qIDUwMCAgIDcwMCAgICAgIDIuOSAgICovCi0JeyAweDYsIDB4N0YsIDB4MkYsIDB4MDAsIDB4 MTAgfSwJLyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KLQl7IDB4QywgMHg2QywgMHgzQywgMHgw MCwgMHgwMyB9LAkvKiA2NTAgICA3MDAgICAgICAwLjYgICAqLwotCXsgMHg2LCAweDdGLCAweDM1 LCAweDAwLCAweDBBIH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCi0JeyAweDYsIDB4N0Ys IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KLX07Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2hkbWlbXSA9IHsKLQkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCi0J eyAweEEsIDB4NjAsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDUwICAgNDUwICAgICAgMC4wICAg Ki8KLQl7IDB4QiwgMHg3MywgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA0NTAgICA2NTAgICAgICAz LjIgICAqLwotCXsgMHg2LCAweDdGLCAweDMxLCAweDAwLCAweDBFIH0sCS8qIDQ1MCAgIDg1MCAg ICAgIDUuNSAgICovCi0JeyAweEIsIDB4NzMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNjUwICAg NjUwICAgICAgMC4wICAgQUxTICovCi0JeyAweDYsIDB4N0YsIDB4MzcsIDB4MDAsIDB4MDggfSwJ LyogNjUwICAgODUwICAgICAgMi4zICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgw MCB9LAkvKiA4NTAgICA4NTAgICAgICAwLjAgICAqLwotCXsgMHg2LCAweDdGLCAweDM1LCAweDAw LCAweDBBIH0sCS8qIDYwMCAgIDg1MCAgICAgIDMuMCAgICovCi19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGVobF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19k cFtdID0gewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4QSwgMHgzMywg MHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLwotCXsgMHhBLCAw eDQ3LCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCi0JeyAw eEMsIDB4NjQsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAgKi8K LQl7IDB4NiwgMHg3RiwgMHgzMCwgMHgwMCwgMHgwRiB9LAkvKiAzNTAgICA5MDAgICAgICA4LjIg ICAqLwotCXsgMHhBLCAweDQ2LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAgICAg IDAuMCAgICovCi0JeyAweEMsIDB4NjQsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogNTAwICAgNzAw ICAgICAgMi45ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiA1MDAg ICA5MDAgICAgICA1LjEgICAqLwotCXsgMHhDLCAweDYxLCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDY1MCAgIDcwMCAgICAgIDAuNiAgICovCi0JeyAweDYsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcg fSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwg MHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLwotfTsKLQotc3RhdGljIGNvbnN0IHN0 cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRw X2hicltdID0gewotCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KLQl7IDB4OCwgMHg3 RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAgICAgICAgLyogMjAwICAgMjAwICAgICAgMC4wICAgKi8K LQl7IDB4OCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LCAgICAgICAgLyogMjAwICAgMjUwICAg ICAgMS45ICAgKi8KLQl7IDB4MSwgMHg3RiwgMHgzMywgMHgwMCwgMHgwQyB9LCAgICAgICAgLyog MjAwICAgMzAwICAgICAgMy41ICAgKi8KLQl7IDB4QSwgMHgzNSwgMHgzNiwgMHgwMCwgMHgwOSB9 LCAgICAgICAgLyogMjAwICAgMzUwICAgICAgNC45ICAgKi8KLQl7IDB4OCwgMHg3RiwgMHgzRiwg MHgwMCwgMHgwMCB9LCAgICAgICAgLyogMjUwICAgMjUwICAgICAgMC4wICAgKi8KLQl7IDB4MSwg MHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LCAgICAgICAgLyogMjUwICAgMzAwICAgICAgMS42ICAg Ki8KLQl7IDB4QSwgMHgzNSwgMHgzNSwgMHgwMCwgMHgwQSB9LCAgICAgICAgLyogMjUwICAgMzUw ICAgICAgMi45ICAgKi8KLQl7IDB4MSwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LCAgICAgICAg LyogMzAwICAgMzAwICAgICAgMC4wICAgKi8KLQl7IDB4QSwgMHgzNSwgMHgzOCwgMHgwMCwgMHgw NyB9LCAgICAgICAgLyogMzAwICAgMzUwICAgICAgMS4zICAgKi8KLQl7IDB4QSwgMHgzNSwgMHgz RiwgMHgwMCwgMHgwMCB9LCAgICAgICAgLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KLX07Ci0K LXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMganNsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2VkcF9oYnIyW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAg ICAqLwotCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAyMDAgICAy MDAgICAgICAwLjAgICAqLwotCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAg ICAvKiAyMDAgICAyNTAgICAgICAxLjkgICAqLwotCXsgMHgxLCAweDdGLCAweDNELCAweDAwLCAw eDAyIH0sICAgICAgICAvKiAyMDAgICAzMDAgICAgICAzLjUgICAqLwotCXsgMHhBLCAweDM1LCAw eDM4LCAweDAwLCAweDA3IH0sICAgICAgICAvKiAyMDAgICAzNTAgICAgICA0LjkgICAqLwotCXsg MHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAyNTAgICAyNTAgICAgICAw LjAgICAqLwotCXsgMHgxLCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAyNTAg ICAzMDAgICAgICAxLjYgICAqLwotCXsgMHhBLCAweDM1LCAweDNBLCAweDAwLCAweDA1IH0sICAg ICAgICAvKiAyNTAgICAzNTAgICAgICAyLjkgICAqLwotCXsgMHgxLCAweDdGLCAweDNGLCAweDAw LCAweDAwIH0sICAgICAgICAvKiAzMDAgICAzMDAgICAgICAwLjAgICAqLwotCXsgMHhBLCAweDM1 LCAweDM4LCAweDAwLCAweDA3IH0sICAgICAgICAvKiAzMDAgICAzNTAgICAgICAxLjMgICAqLwot CXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAzNTAgICAzNTAgICAg ICAwLjAgICAqLwotfTsKLQotc3RydWN0IGljbF9tZ19waHlfZGRpX2J1Zl90cmFucyB7Ci0JdTMy IGNyaV90eGRlZW1waF9vdmVycmlkZV8xMV82OwotCXUzMiBjcmlfdHhkZWVtcGhfb3ZlcnJpZGVf NV8wOwotCXUzMiBjcmlfdHhkZWVtcGhfb3ZlcnJpZGVfMTdfMTI7Ci19OwotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGljbF9tZ19waHlfZGRpX2J1Zl90cmFucyBpY2xfbWdfcGh5X2RkaV90cmFuc2xh dGlvbnNfcmJyX2hicltdID0gewotCQkJCS8qIFZvbHRhZ2Ugc3dpbmcgIHByZS1lbXBoYXNpcyAq LwotCXsgMHgxOCwgMHgwMCwgMHgwMCB9LAkvKiAwICAgICAgICAgICAgICAwICAgKi8KLQl7IDB4 MUQsIDB4MDAsIDB4MDUgfSwJLyogMCAgICAgICAgICAgICAgMSAgICovCi0JeyAweDI0LCAweDAw LCAweDBDIH0sCS8qIDAgICAgICAgICAgICAgIDIgICAqLwotCXsgMHgyQiwgMHgwMCwgMHgxNCB9 LAkvKiAwICAgICAgICAgICAgICAzICAgKi8KLQl7IDB4MjEsIDB4MDAsIDB4MDAgfSwJLyogMSAg ICAgICAgICAgICAgMCAgICovCi0JeyAweDJCLCAweDAwLCAweDA4IH0sCS8qIDEgICAgICAgICAg ICAgIDEgICAqLwotCXsgMHgzMCwgMHgwMCwgMHgwRiB9LAkvKiAxICAgICAgICAgICAgICAyICAg Ki8KLQl7IDB4MzEsIDB4MDAsIDB4MDMgfSwJLyogMiAgICAgICAgICAgICAgMCAgICovCi0JeyAw eDM0LCAweDAwLCAweDBCIH0sCS8qIDIgICAgICAgICAgICAgIDEgICAqLwotCXsgMHgzRiwgMHgw MCwgMHgwMCB9LAkvKiAzICAgICAgICAgICAgICAwICAgKi8KLX07Ci0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9u c19oYnIyX2hicjNbXSA9IHsKLQkJCQkvKiBWb2x0YWdlIHN3aW5nICBwcmUtZW1waGFzaXMgKi8K LQl7IDB4MTgsIDB4MDAsIDB4MDAgfSwJLyogMCAgICAgICAgICAgICAgMCAgICovCi0JeyAweDFE LCAweDAwLCAweDA1IH0sCS8qIDAgICAgICAgICAgICAgIDEgICAqLwotCXsgMHgyNCwgMHgwMCwg MHgwQyB9LAkvKiAwICAgICAgICAgICAgICAyICAgKi8KLQl7IDB4MkIsIDB4MDAsIDB4MTQgfSwJ LyogMCAgICAgICAgICAgICAgMyAgICovCi0JeyAweDI2LCAweDAwLCAweDAwIH0sCS8qIDEgICAg ICAgICAgICAgIDAgICAqLwotCXsgMHgyQywgMHgwMCwgMHgwNyB9LAkvKiAxICAgICAgICAgICAg ICAxICAgKi8KLQl7IDB4MzMsIDB4MDAsIDB4MEMgfSwJLyogMSAgICAgICAgICAgICAgMiAgICov Ci0JeyAweDJFLCAweDAwLCAweDAwIH0sCS8qIDIgICAgICAgICAgICAgIDAgICAqLwotCXsgMHgz NiwgMHgwMCwgMHgwOSB9LAkvKiAyICAgICAgICAgICAgICAxICAgKi8KLQl7IDB4M0YsIDB4MDAs IDB4MDAgfSwJLyogMyAgICAgICAgICAgICAgMCAgICovCi19OwotCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IGljbF9tZ19waHlfZGRpX2J1Zl90cmFucyBpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNf aGRtaVtdID0gewotCQkJCS8qIEhETUkgUHJlc2V0CVZTCVByZS1lbXBoICovCi0JeyAweDFBLCAw eDAsIDB4MCB9LAkvKiAxCQk0MDBtVgkwZEIgKi8KLQl7IDB4MjAsIDB4MCwgMHgwIH0sCS8qIDIJ CTUwMG1WCTBkQiAqLwotCXsgMHgyOSwgMHgwLCAweDAgfSwJLyogMwkJNjUwbVYJMGRCICovCi0J eyAweDMyLCAweDAsIDB4MCB9LAkvKiA0CQk4MDBtVgkwZEIgKi8KLQl7IDB4M0YsIDB4MCwgMHgw IH0sCS8qIDUJCTEwMDBtVgkwZEIgKi8KLQl7IDB4M0EsIDB4MCwgMHg1IH0sCS8qIDYJCUZ1bGwJ LTEuNSBkQiAqLwotCXsgMHgzOSwgMHgwLCAweDYgfSwJLyogNwkJRnVsbAktMS44IGRCICovCi0J eyAweDM4LCAweDAsIDB4NyB9LAkvKiA4CQlGdWxsCS0yIGRCICovCi0JeyAweDM3LCAweDAsIDB4 OCB9LAkvKiA5CQlGdWxsCS0yLjUgZEIgKi8KLQl7IDB4MzYsIDB4MCwgMHg5IH0sCS8qIDEwCQlG dWxsCS0zIGRCICovCi19OwotCi1zdHJ1Y3QgdGdsX2RrbF9waHlfZGRpX2J1Zl90cmFucyB7Ci0J dTMyIGRrbF92c3dpbmdfY29udHJvbDsKLQl1MzIgZGtsX3ByZXNob290X2NvbnRyb2w7Ci0JdTMy IGRrbF9kZV9lbXBoYXNpc19jb250cm9sOwotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xf ZGtsX3BoeV9kZGlfYnVmX3RyYW5zIHRnbF9ka2xfcGh5X2RwX2RkaV90cmFuc1tdID0gewotCQkJ CS8qIFZTCXByZS1lbXAJTm9uLXRyYW5zIG1WCVByZS1lbXBoIGRCICovCi0JeyAweDcsIDB4MCwg MHgwMCB9LAkvKiAwCTAJNDAwbVYJCTAgZEIgKi8KLQl7IDB4NSwgMHgwLCAweDA1IH0sCS8qIDAJ MQk0MDBtVgkJMy41IGRCICovCi0JeyAweDIsIDB4MCwgMHgwQiB9LAkvKiAwCTIJNDAwbVYJCTYg ZEIgKi8KLQl7IDB4MCwgMHgwLCAweDE4IH0sCS8qIDAJMwk0MDBtVgkJOS41IGRCICovCi0JeyAw eDUsIDB4MCwgMHgwMCB9LAkvKiAxCTAJNjAwbVYJCTAgZEIgKi8KLQl7IDB4MiwgMHgwLCAweDA4 IH0sCS8qIDEJMQk2MDBtVgkJMy41IGRCICovCi0JeyAweDAsIDB4MCwgMHgxNCB9LAkvKiAxCTIJ NjAwbVYJCTYgZEIgKi8KLQl7IDB4MiwgMHgwLCAweDAwIH0sCS8qIDIJMAk4MDBtVgkJMCBkQiAq LwotCXsgMHgwLCAweDAsIDB4MEIgfSwJLyogMgkxCTgwMG1WCQkzLjUgZEIgKi8KLQl7IDB4MCwg MHgwLCAweDAwIH0sCS8qIDMJMAkxMjAwbVYJCTAgZEIgSERNSSBkZWZhdWx0ICovCi19OwotCi1z dGF0aWMgY29uc3Qgc3RydWN0IHRnbF9ka2xfcGh5X2RkaV9idWZfdHJhbnMgdGdsX2RrbF9waHlf ZHBfZGRpX3RyYW5zX2hicjJbXSA9IHsKLQkJCQkvKiBWUwlwcmUtZW1wCU5vbi10cmFucyBtVglQ cmUtZW1waCBkQiAqLwotCXsgMHg3LCAweDAsIDB4MDAgfSwJLyogMAkwCTQwMG1WCQkwIGRCICov Ci0JeyAweDUsIDB4MCwgMHgwNSB9LAkvKiAwCTEJNDAwbVYJCTMuNSBkQiAqLwotCXsgMHgyLCAw eDAsIDB4MEIgfSwJLyogMAkyCTQwMG1WCQk2IGRCICovCi0JeyAweDAsIDB4MCwgMHgxOSB9LAkv KiAwCTMJNDAwbVYJCTkuNSBkQiAqLwotCXsgMHg1LCAweDAsIDB4MDAgfSwJLyogMQkwCTYwMG1W CQkwIGRCICovCi0JeyAweDIsIDB4MCwgMHgwOCB9LAkvKiAxCTEJNjAwbVYJCTMuNSBkQiAqLwot CXsgMHgwLCAweDAsIDB4MTQgfSwJLyogMQkyCTYwMG1WCQk2IGRCICovCi0JeyAweDIsIDB4MCwg MHgwMCB9LAkvKiAyCTAJODAwbVYJCTAgZEIgKi8KLQl7IDB4MCwgMHgwLCAweDBCIH0sCS8qIDIJ MQk4MDBtVgkJMy41IGRCICovCi0JeyAweDAsIDB4MCwgMHgwMCB9LAkvKiAzCTAJMTIwMG1WCQkw IGRCIEhETUkgZGVmYXVsdCAqLwotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xfZGtsX3Bo eV9kZGlfYnVmX3RyYW5zIHRnbF9ka2xfcGh5X2hkbWlfZGRpX3RyYW5zW10gPSB7Ci0JCQkJLyog SERNSSBQcmVzZXQJVlMJUHJlLWVtcGggKi8KLQl7IDB4NywgMHgwLCAweDAgfSwJLyogMQkJNDAw bVYJMGRCICovCi0JeyAweDYsIDB4MCwgMHgwIH0sCS8qIDIJCTUwMG1WCTBkQiAqLwotCXsgMHg0 LCAweDAsIDB4MCB9LAkvKiAzCQk2NTBtVgkwZEIgKi8KLQl7IDB4MiwgMHgwLCAweDAgfSwJLyog NAkJODAwbVYJMGRCICovCi0JeyAweDAsIDB4MCwgMHgwIH0sCS8qIDUJCTEwMDBtVgkwZEIgKi8K LQl7IDB4MCwgMHgwLCAweDUgfSwJLyogNgkJRnVsbAktMS41IGRCICovCi0JeyAweDAsIDB4MCwg MHg2IH0sCS8qIDcJCUZ1bGwJLTEuOCBkQiAqLwotCXsgMHgwLCAweDAsIDB4NyB9LAkvKiA4CQlG dWxsCS0yIGRCICovCi0JeyAweDAsIDB4MCwgMHg4IH0sCS8qIDkJCUZ1bGwJLTIuNSBkQiAqLwot CXsgMHgwLCAweDAsIDB4QSB9LAkvKiAxMAkJRnVsbAktMyBkQiAqLwotfTsKLQotc3RhdGljIGNv bnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyB0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlv bnNfZHBfaGJyW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwotCXsgMHhB LCAweDMyLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCi0J eyAweEEsIDB4NEYsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAg Ki8KLQl7IDB4QywgMHg3MSwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAgICA2 LjAgICAqLwotCXsgMHg2LCAweDdELCAweDJCLCAweDAwLCAweDE0IH0sCS8qIDM1MCAgIDkwMCAg ICAgIDguMiAgICovCi0JeyAweEEsIDB4NEMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAg NTAwICAgICAgMC4wICAgKi8KLQl7IDB4QywgMHg3MywgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA1 MDAgICA3MDAgICAgICAyLjkgICAqLwotCXsgMHg2LCAweDdGLCAweDJGLCAweDAwLCAweDEwIH0s CS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCi0JeyAweEMsIDB4NkMsIDB4M0MsIDB4MDAsIDB4 MDMgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KLQl7IDB4NiwgMHg3RiwgMHgzNSwgMHgw MCwgMHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwotCXsgMHg2LCAweDdGLCAweDNG LCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCi19OwotCi1zdGF0aWMg Y29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19kcF9oYnIyW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLwotCXsg MHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICov Ci0JeyAweEEsIDB4NEYsIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogMzUwICAgNTAwICAgICAgMy4x ICAgKi8KLQl7IDB4QywgMHg2MywgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiAzNTAgICA3MDAgICAg ICA2LjAgICAqLwotCXsgMHg2LCAweDdGLCAweDJCLCAweDAwLCAweDE0IH0sCS8qIDM1MCAgIDkw MCAgICAgIDguMiAgICovCi0JeyAweEEsIDB4NDcsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAw ICAgNTAwICAgICAgMC4wICAgKi8KLQl7IDB4QywgMHg2MywgMHgzNCwgMHgwMCwgMHgwQiB9LAkv KiA1MDAgICA3MDAgICAgICAyLjkgICAqLwotCXsgMHg2LCAweDdGLCAweDJGLCAweDAwLCAweDEw IH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCi0JeyAweEMsIDB4NjEsIDB4M0MsIDB4MDAs IDB4MDMgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KLQl7IDB4NiwgMHg3QiwgMHgzNSwg MHgwMCwgMHgwQSB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwotCXsgMHg2LCAweDdGLCAw eDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCi19OwotCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIHRnbF91eV9jb21ib19waHlfZGRpX3Ry YW5zbGF0aW9uc19kcF9oYnIyW10gPSB7Ci0JCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAq LwotCXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAu MCAgICovCi0JeyAweEEsIDB4NEYsIDB4MzYsIDB4MDAsIDB4MDkgfSwJLyogMzUwICAgNTAwICAg ICAgMy4xICAgKi8KLQl7IDB4QywgMHg2MCwgMHgzMiwgMHgwMCwgMHgwRCB9LAkvKiAzNTAgICA3 MDAgICAgICA2LjAgICAqLwotCXsgMHhDLCAweDdGLCAweDJELCAweDAwLCAweDEyIH0sCS8qIDM1 MCAgIDkwMCAgICAgIDguMiAgICovCi0JeyAweEMsIDB4NDcsIDB4M0YsIDB4MDAsIDB4MDAgfSwJ LyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KLQl7IDB4QywgMHg2RiwgMHgzNiwgMHgwMCwgMHgw OSB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLwotCXsgMHg2LCAweDdELCAweDMyLCAweDAw LCAweDBEIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCi0JeyAweDYsIDB4NjAsIDB4M0Ms IDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzAwICAgICAgMC42ICAgKi8KLQl7IDB4NiwgMHg3Riwg MHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAqLwotCXsgMHg2LCAw eDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAuMCAgICovCi19Owot Ci0vKgotICogQ2xvbmVkIHRoZSBIT0JMIGVudHJ5IHRvIGNvbXBseSB3aXRoIHRoZSB2b2x0YWdl IGFuZCBwcmUtZW1waGFzaXMgZW50cmllcwotICogdGhhdCBEaXNwbGF5UG9ydCBzcGVjaWZpY2F0 aW9uIHJlcXVpcmVzCi0gKi8KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMg dGdsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyX2hvYmxbXSA9IHsKLQkJCQkJ CS8qIFZTCXByZS1lbXAJKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAw CTAJKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAwCTEJKi8KLQl7IDB4 NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAwCTIJKi8KLQl7IDB4NiwgMHg3RiwgMHgz RiwgMHgwMCwgMHgwMCB9LAkvKiAwCTMJKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgw MCB9LAkvKiAxCTAJKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAxCTEJ Ki8KLQl7IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAxCTIJKi8KLQl7IDB4Niwg MHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAyCTAJKi8KLQl7IDB4NiwgMHg3RiwgMHgzRiwg MHgwMCwgMHgwMCB9LAkvKiAyCTEJKi8KLX07Ci0KLXN0YXRpYyBib29sIGlzX2hvYmxfYnVmX3Ry YW5zKGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqdGFibGUpCi17Ci0JcmV0dXJuIHRh YmxlID09IHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMl9ob2JsOwotfQot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgotYmR3X2dldF9idWZfdHJhbnNf ZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKLXsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2Uu ZGV2KTsKLQotCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7Ci0JCSpuX2VudHJp ZXMgPSBBUlJBWV9TSVpFKGJkd19kZGlfdHJhbnNsYXRpb25zX2VkcCk7Ci0JCXJldHVybiBiZHdf ZGRpX3RyYW5zbGF0aW9uc19lZHA7Ci0JfSBlbHNlIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJ WkUoYmR3X2RkaV90cmFuc2xhdGlvbnNfZHApOwotCQlyZXR1cm4gYmR3X2RkaV90cmFuc2xhdGlv bnNfZHA7Ci0JfQotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgotc2ts X2dldF9idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9l bnRyaWVzKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZW5jb2Rlci0+YmFzZS5kZXYpOwotCi0JaWYgKElTX1NLTF9VTFgoZGV2X3ByaXYpKSB7Ci0JCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKHNrbF95X2RkaV90cmFuc2xhdGlvbnNfZHApOwotCQlyZXR1 cm4gc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19kcDsKLQl9IGVsc2UgaWYgKElTX1NLTF9VTFQoZGV2 X3ByaXYpKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHNrbF91X2RkaV90cmFuc2xhdGlv bnNfZHApOwotCQlyZXR1cm4gc2tsX3VfZGRpX3RyYW5zbGF0aW9uc19kcDsKLQl9IGVsc2Ugewot CQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfZGRpX3RyYW5zbGF0aW9uc19kcCk7Ci0JCXJl dHVybiBza2xfZGRpX3RyYW5zbGF0aW9uc19kcDsKLQl9Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgZGRpX2J1Zl90cmFucyAqCi1rYmxfZ2V0X2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0KLQlpZiAoSVNfS0JM X1VMWChkZXZfcHJpdikgfHwKLQkgICAgSVNfQ0ZMX1VMWChkZXZfcHJpdikgfHwKLQkgICAgSVNf Q01MX1VMWChkZXZfcHJpdikpIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoa2JsX3lfZGRp X3RyYW5zbGF0aW9uc19kcCk7Ci0JCXJldHVybiBrYmxfeV9kZGlfdHJhbnNsYXRpb25zX2RwOwot CX0gZWxzZSBpZiAoSVNfS0JMX1VMVChkZXZfcHJpdikgfHwKLQkJICAgSVNfQ0ZMX1VMVChkZXZf cHJpdikgfHwKLQkJICAgSVNfQ01MX1VMVChkZXZfcHJpdikpIHsKLQkJKm5fZW50cmllcyA9IEFS UkFZX1NJWkUoa2JsX3VfZGRpX3RyYW5zbGF0aW9uc19kcCk7Ci0JCXJldHVybiBrYmxfdV9kZGlf dHJhbnNsYXRpb25zX2RwOwotCX0gZWxzZSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGti bF9kZGlfdHJhbnNsYXRpb25zX2RwKTsKLQkJcmV0dXJuIGtibF9kZGlfdHJhbnNsYXRpb25zX2Rw OwotCX0KLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoKLXNrbF9nZXRf YnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJp ZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNv ZGVyLT5iYXNlLmRldik7Ci0KLQlpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgewot CQlpZiAoSVNfU0tMX1VMWChkZXZfcHJpdikgfHwKLQkJICAgIElTX0tCTF9VTFgoZGV2X3ByaXYp IHx8Ci0JCSAgICBJU19DRkxfVUxYKGRldl9wcml2KSB8fAotCQkgICAgSVNfQ01MX1VMWChkZXZf cHJpdikpIHsKLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHNrbF95X2RkaV90cmFuc2xhdGlv bnNfZWRwKTsKLQkJCXJldHVybiBza2xfeV9kZGlfdHJhbnNsYXRpb25zX2VkcDsKLQkJfSBlbHNl IGlmIChJU19TS0xfVUxUKGRldl9wcml2KSB8fAotCQkJICAgSVNfS0JMX1VMVChkZXZfcHJpdikg fHwKLQkJCSAgIElTX0NGTF9VTFQoZGV2X3ByaXYpIHx8Ci0JCQkgICBJU19DTUxfVUxUKGRldl9w cml2KSkgewotCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2tsX3VfZGRpX3RyYW5zbGF0aW9u c19lZHApOwotCQkJcmV0dXJuIHNrbF91X2RkaV90cmFuc2xhdGlvbnNfZWRwOwotCQl9IGVsc2Ug ewotCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoc2tsX2RkaV90cmFuc2xhdGlvbnNfZWRwKTsK LQkJCXJldHVybiBza2xfZGRpX3RyYW5zbGF0aW9uc19lZHA7Ci0JCX0KLQl9Ci0KLQlpZiAoSVNf S0FCWUxBS0UoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0NPRkZFRUxBS0UoZGV2X3ByaXYpIHx8Ci0J ICAgIElTX0NPTUVUTEFLRShkZXZfcHJpdikpCi0JCXJldHVybiBrYmxfZ2V0X2J1Zl90cmFuc19k cChlbmNvZGVyLCBuX2VudHJpZXMpOwotCWVsc2UKLQkJcmV0dXJuIHNrbF9nZXRfYnVmX3RyYW5z X2RwKGVuY29kZXIsIG5fZW50cmllcyk7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1 Zl90cmFucyAqCi1za2xfZ2V0X2J1Zl90cmFuc19oZG1pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgaW50ICpuX2VudHJpZXMpCi17Ci0JaWYgKElTX1NLTF9VTFgoZGV2X3ByaXYp IHx8Ci0JICAgIElTX0tCTF9VTFgoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0NGTF9VTFgoZGV2X3By aXYpIHx8Ci0JICAgIElTX0NNTF9VTFgoZGV2X3ByaXYpKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKHNrbF95X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7Ci0JCXJldHVybiBza2xfeV9kZGlf dHJhbnNsYXRpb25zX2hkbWk7Ci0JfSBlbHNlIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUo c2tsX2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7Ci0JCXJldHVybiBza2xfZGRpX3RyYW5zbGF0aW9u c19oZG1pOwotCX0KLX0KLQotc3RhdGljIGludCBza2xfYnVmX3RyYW5zX251bV9lbnRyaWVzKGVu dW0gcG9ydCBwb3J0LCBpbnQgbl9lbnRyaWVzKQotewotCS8qIE9ubHkgRERJQSBhbmQgRERJRSBj YW4gc2VsZWN0IHRoZSAxMHRoIHJlZ2lzdGVyIHdpdGggRFAgKi8KLQlpZiAocG9ydCA9PSBQT1JU X0EgfHwgcG9ydCA9PSBQT1JUX0UpCi0JCXJldHVybiBtaW4obl9lbnRyaWVzLCAxMCk7Ci0JZWxz ZQotCQlyZXR1cm4gbWluKG5fZW50cmllcywgOSk7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZGRpX2J1Zl90cmFucyAqCi1pbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0KLQlpZiAoSVNf S0FCWUxBS0UoZGV2X3ByaXYpIHx8Ci0JICAgIElTX0NPRkZFRUxBS0UoZGV2X3ByaXYpIHx8Ci0J ICAgIElTX0NPTUVUTEFLRShkZXZfcHJpdikpIHsKLQkJY29uc3Qgc3RydWN0IGRkaV9idWZfdHJh bnMgKmRkaV90cmFuc2xhdGlvbnMgPQotCQkJa2JsX2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwg bl9lbnRyaWVzKTsKLQkJKm5fZW50cmllcyA9IHNrbF9idWZfdHJhbnNfbnVtX2VudHJpZXMoZW5j b2Rlci0+cG9ydCwgKm5fZW50cmllcyk7Ci0JCXJldHVybiBkZGlfdHJhbnNsYXRpb25zOwotCX0g ZWxzZSBpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpIHsKLQkJY29uc3Qgc3RydWN0IGRkaV9idWZf dHJhbnMgKmRkaV90cmFuc2xhdGlvbnMgPQotCQkJc2tsX2dldF9idWZfdHJhbnNfZHAoZW5jb2Rl ciwgbl9lbnRyaWVzKTsKLQkJKm5fZW50cmllcyA9IHNrbF9idWZfdHJhbnNfbnVtX2VudHJpZXMo ZW5jb2Rlci0+cG9ydCwgKm5fZW50cmllcyk7Ci0JCXJldHVybiBkZGlfdHJhbnNsYXRpb25zOwot CX0gZWxzZSBpZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewotCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShiZHdfZGRpX3RyYW5zbGF0aW9uc19kcCk7Ci0JCXJldHVybiAgYmR3X2RkaV90cmFu c2xhdGlvbnNfZHA7Ci0JfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgewotCQkqbl9l bnRyaWVzID0gQVJSQVlfU0laRShoc3dfZGRpX3RyYW5zbGF0aW9uc19kcCk7Ci0JCXJldHVybiBo c3dfZGRpX3RyYW5zbGF0aW9uc19kcDsKLQl9Ci0KLQkqbl9lbnRyaWVzID0gMDsKLQlyZXR1cm4g TlVMTDsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoKLWludGVsX2Rk aV9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpu X2VudHJpZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShlbmNvZGVyLT5iYXNlLmRldik7Ci0KLQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsKLQkJ Y29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnMgPQotCQkJc2tsX2dl dF9idWZfdHJhbnNfZWRwKGVuY29kZXIsIG5fZW50cmllcyk7Ci0JCSpuX2VudHJpZXMgPSBza2xf YnVmX3RyYW5zX251bV9lbnRyaWVzKGVuY29kZXItPnBvcnQsICpuX2VudHJpZXMpOwotCQlyZXR1 cm4gZGRpX3RyYW5zbGF0aW9uczsKLQl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikp IHsKLQkJcmV0dXJuIGJkd19nZXRfYnVmX3RyYW5zX2VkcChlbmNvZGVyLCBuX2VudHJpZXMpOwot CX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZ X1NJWkUoaHN3X2RkaV90cmFuc2xhdGlvbnNfZHApOwotCQlyZXR1cm4gaHN3X2RkaV90cmFuc2xh dGlvbnNfZHA7Ci0JfQotCi0JKm5fZW50cmllcyA9IDA7Ci0JcmV0dXJuIE5VTEw7Ci19Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCi1pbnRlbF9kZGlfZ2V0X2J1Zl90cmFu c19mZGkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgIGludCAqbl9l bnRyaWVzKQotewotCWlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Ci0JCSpuX2VudHJpZXMg PSBBUlJBWV9TSVpFKGJkd19kZGlfdHJhbnNsYXRpb25zX2ZkaSk7Ci0JCXJldHVybiBiZHdfZGRp X3RyYW5zbGF0aW9uc19mZGk7Ci0JfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgewot CQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShoc3dfZGRpX3RyYW5zbGF0aW9uc19mZGkpOwotCQly ZXR1cm4gaHN3X2RkaV90cmFuc2xhdGlvbnNfZmRpOwotCX0KLQotCSpuX2VudHJpZXMgPSAwOwot CXJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgot aW50ZWxfZGRpX2dldF9idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKLQkJCSAgICAgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0KLQlpZiAoSVNfR0VOOV9C QyhkZXZfcHJpdikpIHsKLQkJcmV0dXJuIHNrbF9nZXRfYnVmX3RyYW5zX2hkbWkoZGV2X3ByaXYs IG5fZW50cmllcyk7Ci0JfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Ci0JCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKGJkd19kZGlfdHJhbnNsYXRpb25zX2hkbWkpOwotCQlyZXR1 cm4gYmR3X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKLQl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2 X3ByaXYpKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGhzd19kZGlfdHJhbnNsYXRpb25z X2hkbWkpOwotCQlyZXR1cm4gaHN3X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKLQl9Ci0KLQkqbl9l bnRyaWVzID0gMDsKLQlyZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBieHRf ZGRpX2J1Zl90cmFucyAqCi1ieHRfZ2V0X2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCi17Ci0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUo Ynh0X2RkaV90cmFuc2xhdGlvbnNfZHApOwotCXJldHVybiBieHRfZGRpX3RyYW5zbGF0aW9uc19k cDsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBieHRfZGRpX2J1Zl90cmFucyAqCi1ieHRfZ2V0 X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRy aWVzKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5j b2Rlci0+YmFzZS5kZXYpOwotCi0JaWYgKGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsK LQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoYnh0X2RkaV90cmFuc2xhdGlvbnNfZWRwKTsKLQkJ cmV0dXJuIGJ4dF9kZGlfdHJhbnNsYXRpb25zX2VkcDsKLQl9Ci0KLQlyZXR1cm4gYnh0X2dldF9i dWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVj dCBieHRfZGRpX2J1Zl90cmFucyAqCi1ieHRfZ2V0X2J1Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKLXsKLQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShieHRfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKLQlyZXR1cm4gYnh0X2RkaV90cmFu c2xhdGlvbnNfaGRtaTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFu cyAqCi1jbmxfZ2V0X2J1Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LCBpbnQgKm5fZW50cmllcykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQl1MzIgdm9sdGFnZSA9IGludGVsX2RlX3Jl YWQoZGV2X3ByaXYsIENOTF9QT1JUX0NPTVBfRFczKSAmIFZPTFRBR0VfSU5GT19NQVNLOwotCi0J aWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzBfODVWKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF84NVYpOwotCQlyZXR1cm4gY25sX2Rk aV90cmFuc2xhdGlvbnNfaGRtaV8wXzg1VjsKLQl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFH RV9JTkZPXzBfOTVWKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNs YXRpb25zX2hkbWlfMF85NVYpOwotCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8w Xzk1VjsKLQl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzFfMDVWKSB7Ci0JCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMV8wNVYpOwot CQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8xXzA1VjsKLQl9IGVsc2UgewotCQkq bl9lbnRyaWVzID0gMTsgLyogc2h1dCB1cCBnY2MgKi8KLQkJTUlTU0lOR19DQVNFKHZvbHRhZ2Up OwotCX0KLQlyZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1 Zl90cmFucyAqCi1jbmxfZ2V0X2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0JdTMyIHZvbHRhZ2UgPSBpbnRlbF9k ZV9yZWFkKGRldl9wcml2LCBDTkxfUE9SVF9DT01QX0RXMykgJiBWT0xUQUdFX0lORk9fTUFTSzsK LQotCWlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzg1VikgewotCQkqbl9lbnRyaWVzID0g QVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzg1Vik7Ci0JCXJldHVybiBjbmxf ZGRpX3RyYW5zbGF0aW9uc19kcF8wXzg1VjsKLQl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFH RV9JTkZPXzBfOTVWKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNs YXRpb25zX2RwXzBfOTVWKTsKLQkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2RwXzBfOTVW OwotCX0gZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMV8wNVYpIHsKLQkJKm5fZW50 cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMV8wNVYpOwotCQlyZXR1 cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMV8wNVY7Ci0JfSBlbHNlIHsKLQkJKm5fZW50cmll cyA9IDE7IC8qIHNodXQgdXAgZ2NjICovCi0JCU1JU1NJTkdfQ0FTRSh2b2x0YWdlKTsKLQl9Ci0J cmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMg KgotY25sX2dldF9idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBp bnQgKm5fZW50cmllcykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQl1MzIgdm9sdGFnZSA9IGludGVsX2RlX3JlYWQo ZGV2X3ByaXYsIENOTF9QT1JUX0NPTVBfRFczKSAmIFZPTFRBR0VfSU5GT19NQVNLOwotCi0JaWYg KGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsKLQkJaWYgKHZvbHRhZ2UgPT0gVk9MVEFH RV9JTkZPXzBfODVWKSB7Ci0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5z bGF0aW9uc19lZHBfMF84NVYpOwotCQkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8w Xzg1VjsKLQkJfSBlbHNlIGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzk1VikgewotCQkJ Km5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfOTVWKTsK LQkJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF85NVY7Ci0JCX0gZWxzZSBpZiAo dm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMV8wNVYpIHsKLQkJCSpuX2VudHJpZXMgPSBBUlJBWV9T SVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1Vik7Ci0JCQlyZXR1cm4gY25sX2RkaV90 cmFuc2xhdGlvbnNfZWRwXzFfMDVWOwotCQl9IGVsc2UgewotCQkJKm5fZW50cmllcyA9IDE7IC8q IHNodXQgdXAgZ2NjICovCi0JCQlNSVNTSU5HX0NBU0Uodm9sdGFnZSk7Ci0JCX0KLQkJcmV0dXJu IE5VTEw7Ci0JfSBlbHNlIHsKLQkJcmV0dXJuIGNubF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIs IG5fZW50cmllcyk7Ci0JfQotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3Ry YW5zICoKLWljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAotCQkJICAgICBpbnQgKm5fZW50cmllcykKLXsKLQkqbl9lbnRyaWVzID0gQVJSQVlfU0la RShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7Ci0JcmV0dXJuIGljbF9jb21i b19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNu bF9kZGlfYnVmX3RyYW5zICoKLWljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCi0JCQkgICBpbnQgKm5fZW50cmllcykKLXsKLQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMik7Ci0JcmV0dXJu IGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyOwotfQotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLWljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2Vk cChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgICBpbnQgKm5fZW50cmllcykKLXsKLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2Uu ZGV2KTsKLQotCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gNTQwMDAwKSB7Ci0JCSpuX2Vu dHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJy Myk7Ci0JCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjM7Ci0J fSBlbHNlIGlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7Ci0JCSpuX2VudHJpZXMg PSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMik7Ci0J CXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjI7Ci0JfQotCi0J cmV0dXJuIGljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5f ZW50cmllcyk7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgot aWNsX2dldF9jb21ib19idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0J CQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCWludCAqbl9l bnRyaWVzKQotewotCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09V VFBVVF9IRE1JKSkKLQkJcmV0dXJuIGljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoZW5jb2Rl ciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLQllbHNlIGlmIChpbnRlbF9jcnRjX2hhc190eXBl KGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQotCQlyZXR1cm4gaWNsX2dldF9jb21ib19i dWZfdHJhbnNfZWRwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci0JZWxzZQotCQly ZXR1cm4gaWNsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9l bnRyaWVzKTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJh bnMgKgotaWNsX2dldF9tZ19idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKLQkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0J CQkgIGludCAqbl9lbnRyaWVzKQotewotCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9tZ19w aHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKLQlyZXR1cm4gaWNsX21nX3BoeV9kZGlfdHJhbnNs YXRpb25zX2hkbWk7Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVm X3RyYW5zICoKLWljbF9nZXRfbWdfYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAotCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0J CQlpbnQgKm5fZW50cmllcykKLXsKLQlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3MDAw MCkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlv bnNfaGJyMl9oYnIzKTsKLQkJcmV0dXJuIGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9uc19oYnIy X2hicjM7Ci0JfSBlbHNlIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX21nX3BoeV9k ZGlfdHJhbnNsYXRpb25zX3Jicl9oYnIpOwotCQlyZXR1cm4gaWNsX21nX3BoeV9kZGlfdHJhbnNs YXRpb25zX3Jicl9oYnI7Ci0JfQotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGljbF9tZ19waHlf ZGRpX2J1Zl90cmFucyAqCi1pY2xfZ2V0X21nX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKLQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKLQkJICAgICBpbnQgKm5fZW50cmllcykKLXsKLQlpZiAoaW50ZWxfY3J0Y19oYXNfdHlw ZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCi0JCXJldHVybiBpY2xfZ2V0X21nX2J1 Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci0JZWxzZQotCQly ZXR1cm4gaWNsX2dldF9tZ19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRy aWVzKTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi1laGxf Z2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAot CQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAg ICAgaW50ICpuX2VudHJpZXMpCi17Ci0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJv X3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOwotCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfaGRtaTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90 cmFucyAqCi1laGxfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKLQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAotCQkJICAgaW50ICpuX2VudHJpZXMpCi17Ci0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoZWhs X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwKTsKLQlyZXR1cm4gZWhsX2NvbWJvX3BoeV9k ZGlfdHJhbnNsYXRpb25zX2RwOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVm X3RyYW5zICoKLWVobF9nZXRfY29tYm9fYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKLQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKLQkJCSAgICBpbnQgKm5fZW50cmllcykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQotCWlmIChkZXZfcHJp di0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7Ci0JCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9j b21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMik7Ci0JCXJldHVybiBpY2xfY29tYm9f cGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjI7Ci0JfQotCi0JcmV0dXJuIGVobF9nZXRfY29t Ym9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci19Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgotZWhsX2dldF9jb21ib19idWZf dHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQljb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCWludCAqbl9lbnRyaWVzKQotewotCWlmIChp bnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKLQkJcmV0 dXJuIGVobF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9l bnRyaWVzKTsKLQllbHNlIGlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVM X09VVFBVVF9FRFApKQotCQlyZXR1cm4gZWhsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKGVuY29k ZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Ci0JZWxzZQotCQlyZXR1cm4gZWhsX2dldF9jb21i b19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLX0KLQotc3Rh dGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi1qc2xfZ2V0X2NvbWJvX2J1Zl90 cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgICBjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgICAgaW50ICpuX2VudHJp ZXMpCi17Ci0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNs YXRpb25zX2hkbWkpOwotCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRt aTsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi1qc2xfZ2V0 X2NvbWJvX2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJICAgaW50ICpu X2VudHJpZXMpCi17Ci0JKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2RwX2hicjIpOwotCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZHBfaGJyMjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFu cyAqCi1qc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCi0JCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Ci0JCQkgICAgaW50ICpuX2VudHJpZXMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Ci0KLQlpZiAoZGV2X3ByaXYtPnZi dC5lZHAubG93X3Zzd2luZykgewotCQlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3MDAw MCkgewotCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoanNsX2NvbWJvX3BoeV9kZGlfdHJhbnNs YXRpb25zX2VkcF9oYnIyKTsKLQkJCXJldHVybiBqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlv bnNfZWRwX2hicjI7Ci0JCX0gZWxzZSB7Ci0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShqc2xf Y29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicik7Ci0JCQlyZXR1cm4ganNsX2NvbWJv X3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnI7Ci0JCX0KLQl9Ci0KLQlyZXR1cm4ganNsX2dl dF9jb21ib19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLX0K LQotc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi1qc2xfZ2V0X2NvbWJv X2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCWNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJaW50ICpuX2VudHJpZXMpCi17Ci0J aWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQot CQlyZXR1cm4ganNsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRl LCBuX2VudHJpZXMpOwotCWVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwg SU5URUxfT1VUUFVUX0VEUCkpCi0JCXJldHVybiBqc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAo ZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLQllbHNlCi0JCXJldHVybiBqc2xfZ2V0 X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotfQot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLXRnbF9nZXRfY29tYm9f YnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQkgICAgIGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJICAgICBpbnQgKm5f ZW50cmllcykKLXsKLQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfaGRtaSk7Ci0JcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19oZG1pOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLXRn bF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAot CQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQkgICBp bnQgKm5fZW50cmllcykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQotCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2Nr ID4gMjcwMDAwKSB7Ci0JCWlmIChJU19UR0xfVShkZXZfcHJpdikgfHwgSVNfVEdMX1koZGV2X3By aXYpKSB7Ci0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xfdXlfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfZHBfaGJyMik7Ci0JCQlyZXR1cm4gdGdsX3V5X2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2RwX2hicjI7Ci0JCX0gZWxzZSB7Ci0JCQkqbl9lbnRyaWVzID0gQVJSQVlfU0la RSh0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMik7Ci0JCQlyZXR1cm4gdGds X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjI7Ci0JCX0KLQl9IGVsc2UgewotCQkq bl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBf aGJyKTsKLQkJcmV0dXJuIHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnI7Ci0J fQotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKLXRnbF9nZXRf Y29tYm9fYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCSAg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgICBpbnQg Km5fZW50cmllcykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGVuY29kZXItPmJhc2UuZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5j X3RvX2ludGVsX2RwKGVuY29kZXIpOwotCi0JaWYgKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPiA1 NDAwMDApIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2VkcF9oYnIzKTsKLQkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19lZHBfaGJyMzsKLQl9IGVsc2UgaWYgKGRldl9wcml2LT52YnQuZWRwLmhvYmwgJiYgIWlu dGVsX2RwLT5ob2JsX2ZhaWxlZCkgewotCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRSh0Z2xfY29t Ym9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjJfaG9ibCk7Ci0JCXJldHVybiB0Z2xfY29t Ym9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjJfaG9ibDsKLQl9IGVsc2UgaWYgKGRldl9w cml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsKLQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNs X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyKTsKLQkJcmV0dXJuIGljbF9jb21i b19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMjsKLQl9Ci0KLQlyZXR1cm4gdGdsX2dldF9j b21ib19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLX0KLQot c3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCi10Z2xfZ2V0X2NvbWJvX2J1 Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKLQkJCWNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJaW50ICpuX2VudHJpZXMpCi17Ci0JaWYg KGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQotCQly ZXR1cm4gdGdsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCBu X2VudHJpZXMpOwotCWVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5U RUxfT1VUUFVUX0VEUCkpCi0JCXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoZW5j b2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKLQllbHNlCi0JCXJldHVybiB0Z2xfZ2V0X2Nv bWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotfQotCi1z dGF0aWMgY29uc3Qgc3RydWN0IHRnbF9ka2xfcGh5X2RkaV9idWZfdHJhbnMgKgotdGdsX2dldF9k a2xfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQkgICBj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKLQkJCSAgIGludCAqbl9l bnRyaWVzKQotewotCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9ka2xfcGh5X2hkbWlfZGRp X3RyYW5zKTsKLQlyZXR1cm4gdGdsX2RrbF9waHlfaGRtaV9kZGlfdHJhbnM7Ci19Ci0KLXN0YXRp YyBjb25zdCBzdHJ1Y3QgdGdsX2RrbF9waHlfZGRpX2J1Zl90cmFucyAqCi10Z2xfZ2V0X2RrbF9i dWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCi0JCQkgY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQkgaW50ICpuX2VudHJpZXMpCi17 Ci0JaWYgKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPiAyNzAwMDApIHsKLQkJKm5fZW50cmllcyA9 IEFSUkFZX1NJWkUodGdsX2RrbF9waHlfZHBfZGRpX3RyYW5zX2hicjIpOwotCQlyZXR1cm4gdGds X2RrbF9waHlfZHBfZGRpX3RyYW5zX2hicjI7Ci0JfSBlbHNlIHsKLQkJKm5fZW50cmllcyA9IEFS UkFZX1NJWkUodGdsX2RrbF9waHlfZHBfZGRpX3RyYW5zKTsKLQkJcmV0dXJuIHRnbF9ka2xfcGh5 X2RwX2RkaV90cmFuczsKLQl9Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgdGdsX2RrbF9waHlf ZGRpX2J1Zl90cmFucyAqCi10Z2xfZ2V0X2RrbF9idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCi0JCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAotCQkgICAgICBpbnQgKm5fZW50cmllcykKLXsKLQlpZiAoaW50ZWxfY3J0Y19oYXNf dHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCi0JCXJldHVybiB0Z2xfZ2V0X2Rr bF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOwotCWVsc2UK LQkJcmV0dXJuIHRnbF9nZXRfZGtsX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBu X2VudHJpZXMpOwotfQotCiBzdGF0aWMgaW50IGludGVsX2RkaV9oZG1pX2xldmVsKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwogCWludCBuX2VudHJpZXMsIGxldmVsLCBkZWZhdWx0 X2VudHJ5OwotCWVudW0gcGh5IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGRldl9wcml2LCBlbmNv ZGVyLT5wb3J0KTsKLQotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKSB7Ci0JCWlmIChp bnRlbF9waHlfaXNfY29tYm8oZGV2X3ByaXYsIHBoeSkpCi0JCQl0Z2xfZ2V0X2NvbWJvX2J1Zl90 cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJpZXMpOwotCQllbHNlCi0JCQl0 Z2xfZ2V0X2RrbF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVz KTsKLQkJZGVmYXVsdF9lbnRyeSA9IG5fZW50cmllcyAtIDE7Ci0JfSBlbHNlIGlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID09IDExKSB7Ci0JCWlmIChpbnRlbF9waHlfaXNfY29tYm8oZGV2X3ByaXYs IHBoeSkpCi0JCQlpY2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3Rh dGUsICZuX2VudHJpZXMpOwotCQllbHNlCi0JCQlpY2xfZ2V0X21nX2J1Zl90cmFuc19oZG1pKGVu Y29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJpZXMpOwotCQlkZWZhdWx0X2VudHJ5ID0gbl9lbnRy aWVzIC0gMTsKLQl9IGVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKSB7Ci0JCWNubF9n ZXRfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgJm5fZW50cmllcyk7Ci0JCWRlZmF1bHRfZW50cnkg PSBuX2VudHJpZXMgLSAxOwotCX0gZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKLQkJ Ynh0X2dldF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCAmbl9lbnRyaWVzKTsKLQkJZGVmYXVsdF9l bnRyeSA9IG5fZW50cmllcyAtIDE7Ci0JfSBlbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkg ewotCQlpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19oZG1pKGVuY29kZXIsICZuX2VudHJpZXMpOwot CQlkZWZhdWx0X2VudHJ5ID0gODsKLQl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikp IHsKLQkJaW50ZWxfZGRpX2dldF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCAmbl9lbnRyaWVzKTsK LQkJZGVmYXVsdF9lbnRyeSA9IDc7Ci0JfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkg ewotCQlpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19oZG1pKGVuY29kZXIsICZuX2VudHJpZXMpOwot CQlkZWZhdWx0X2VudHJ5ID0gNjsKLQl9IGVsc2UgewotCQlkcm1fV0FSTigmZGV2X3ByaXYtPmRy bSwgMSwgImRkaSB0cmFuc2xhdGlvbiB0YWJsZSBtaXNzaW5nXG4iKTsKLQkJcmV0dXJuIDA7Ci0J fQogCi0JaWYgKGRybV9XQVJOX09OX09OQ0UoJmRldl9wcml2LT5kcm0sIG5fZW50cmllcyA9PSAw KSkKKwluX2VudHJpZXMgPSBpbnRlbF9kZGlfaGRtaV9udW1fZW50cmllcyhlbmNvZGVyLCBjcnRj X3N0YXRlLCAmZGVmYXVsdF9lbnRyeSk7CisJaWYgKG5fZW50cmllcyA9PSAwKQogCQlyZXR1cm4g MDsKLQogCWxldmVsID0gaW50ZWxfYmlvc19oZG1pX2xldmVsX3NoaWZ0KGVuY29kZXIpOwogCWlm IChsZXZlbCA8IDApCiAJCWxldmVsID0gZGVmYXVsdF9lbnRyeTsKQEAgLTE1NjUsNiArMjU2LDkg QEAgdm9pZCBoc3dfZmRpX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVh cGkuY3J0Yyk7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj cnRjLT5iYXNlLmRldik7CiAJdTMyIHRlbXAsIGksIHJ4X2N0bF92YWwsIGRkaV9wbGxfc2VsOwor CWludCBuX2VudHJpZXM7CisKKwlpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19mZGkoZGV2X3ByaXYs ICZuX2VudHJpZXMpOwogCiAJaW50ZWxfcHJlcGFyZV9kcF9kZGlfYnVmZmVycyhlbmNvZGVyLCBj cnRjX3N0YXRlKTsKIApAQCAtMTU5Nyw3ICsyOTEsNyBAQCB2b2lkIGhzd19mZGlfbGlua190cmFp bihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAogCS8qIFN0YXJ0IHRoZSB0cmFpbmlu ZyBpdGVyYXRpbmcgdGhyb3VnaCBhdmFpbGFibGUgdm9sdGFnZXMgYW5kIGVtcGhhc2lzLAogCSAq IHRlc3RpbmcgZWFjaCB2YWx1ZSB0d2ljZS4gKi8KLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RShoc3dfZGRpX3RyYW5zbGF0aW9uc19mZGkpICogMjsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8 IG5fZW50cmllcyAqIDI7IGkrKykgewogCQkvKiBDb25maWd1cmUgRFBfVFBfQ1RMIHdpdGggYXV0 by10cmFpbmluZyAqLwogCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRFBfVFBfQ1RMKFBPUlRf RSksCiAJCQkgICAgICAgRFBfVFBfQ1RMX0ZESV9BVVRPVFJBSU4gfApAQCAtMTY0Niw3ICszNDAs NyBAQCB2b2lkIGhzd19mZGlfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKIAkJICogTGVhdmUgdGhpbmdzIGVuYWJsZWQgZXZlbiBpZiB3ZSBmYWlsZWQgdG8gdHJhaW4g RkRJLgogCQkgKiBSZXN1bHRzIGluIGxlc3MgZmlyZXdvcmtzIGZyb20gdGhlIHN0YXRlIGNoZWNr ZXIuCiAJCSAqLwotCQlpZiAoaSA9PSBBUlJBWV9TSVpFKGhzd19kZGlfdHJhbnNsYXRpb25zX2Zk aSkgKiAyIC0gMSkgeworCQlpZiAoaSA9PSBuX2VudHJpZXMgKiAyIC0gMSkgewogCQkJZHJtX2Vy cigmZGV2X3ByaXYtPmRybSwgIkZESSBsaW5rIHRyYWluaW5nIGZhaWxlZCFcbiIpOwogCQkJYnJl YWs7CiAJCX0KQEAgLTI0MDgsMTMgKzExMDIsNyBAQCBzdGF0aWMgdm9pZCBieHRfZGRpX3Zzd2lu Z19zZXF1ZW5jZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAllbnVtIHBvcnQgcG9y dCA9IGVuY29kZXItPnBvcnQ7CiAJaW50IG5fZW50cmllczsKIAotCWlmIChpbnRlbF9jcnRjX2hh c190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKLQkJZGRpX3RyYW5zbGF0aW9u cyA9IGJ4dF9nZXRfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgJm5fZW50cmllcyk7Ci0JZWxzZSBp ZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKLQkJ ZGRpX3RyYW5zbGF0aW9ucyA9IGJ4dF9nZXRfYnVmX3RyYW5zX2VkcChlbmNvZGVyLCAmbl9lbnRy aWVzKTsKLQllbHNlCi0JCWRkaV90cmFuc2xhdGlvbnMgPSBieHRfZ2V0X2J1Zl90cmFuc19kcChl bmNvZGVyLCAmbl9lbnRyaWVzKTsKLQorCWRkaV90cmFuc2xhdGlvbnMgPSBieHRfZ2V0X2J1Zl90 cmFucyhlbmNvZGVyLCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVzKTsKIAlpZiAoZHJtX1dBUk5fT05f T05DRSgmZGV2X3ByaXYtPmRybSwgIWRkaV90cmFuc2xhdGlvbnMpKQogCQlyZXR1cm47CiAJaWYg KGRybV9XQVJOX09OX09OQ0UoJmRldl9wcml2LT5kcm0sIGxldmVsID49IG5fZW50cmllcykpCkBA IC0yNDUxLDE1ICsxMTM5LDkgQEAgc3RhdGljIHU4IGludGVsX2RkaV9kcF92b2x0YWdlX21heChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQllbHNlCiAJCQlpY2xfZ2V0X21nX2J1Zl90cmFu cyhlbmNvZGVyLCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVzKTsKIAl9IGVsc2UgaWYgKElTX0NBTk5P TkxBS0UoZGV2X3ByaXYpKSB7Ci0JCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUs IElOVEVMX09VVFBVVF9FRFApKQotCQkJY25sX2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIsICZu X2VudHJpZXMpOwotCQllbHNlCi0JCQljbmxfZ2V0X2J1Zl90cmFuc19kcChlbmNvZGVyLCAmbl9l bnRyaWVzKTsKKwkJY25sX2dldF9idWZfdHJhbnMoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50 cmllcyk7CiAJfSBlbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkgewotCQlpZiAoaW50ZWxf Y3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKLQkJCWJ4dF9nZXRf YnVmX3RyYW5zX2VkcChlbmNvZGVyLCAmbl9lbnRyaWVzKTsKLQkJZWxzZQotCQkJYnh0X2dldF9i dWZfdHJhbnNfZHAoZW5jb2RlciwgJm5fZW50cmllcyk7CisJCWJ4dF9nZXRfYnVmX3RyYW5zKGVu Y29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJpZXMpOwogCX0gZWxzZSB7CiAJCWlmIChpbnRlbF9j cnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQogCQkJaW50ZWxfZGRp X2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIsICZuX2VudHJpZXMpOwpAQCAtMjQ5NywxMiArMTE3 OSw3IEBAIHN0YXRpYyB2b2lkIGNubF9kZGlfdnN3aW5nX3Byb2dyYW0oc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCiAJaW50IG5fZW50cmllcywgbG47CiAJdTMyIHZhbDsKIAotCWlmIChp bnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKLQkJZGRp X3RyYW5zbGF0aW9ucyA9IGNubF9nZXRfYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgJm5fZW50cmll cyk7Ci0JZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQ VVRfRURQKSkKLQkJZGRpX3RyYW5zbGF0aW9ucyA9IGNubF9nZXRfYnVmX3RyYW5zX2VkcChlbmNv ZGVyLCAmbl9lbnRyaWVzKTsKLQllbHNlCi0JCWRkaV90cmFuc2xhdGlvbnMgPSBjbmxfZ2V0X2J1 Zl90cmFuc19kcChlbmNvZGVyLCAmbl9lbnRyaWVzKTsKKwlkZGlfdHJhbnNsYXRpb25zID0gY25s X2dldF9idWZfdHJhbnMoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJm5fZW50cmllcyk7CiAKIAlpZiAo ZHJtX1dBUk5fT05fT05DRSgmZGV2X3ByaXYtPmRybSwgIWRkaV90cmFuc2xhdGlvbnMpKQogCQly ZXR1cm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rk aV9idWZfdHJhbnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpX2J1 Zl90cmFucy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTI4Yjdm Y2Y2NmZhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kZGlfYnVmX3RyYW5zLmMKQEAgLTAsMCArMSwxMzI1IEBACisvLyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogTUlUCisvKgorICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRp b24KKyAqLworCisjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpbnRlbF9kZGkuaCIK KyNpbmNsdWRlICJpbnRlbF9kZGlfYnVmX3RyYW5zLmgiCisjaW5jbHVkZSAiaW50ZWxfZGlzcGxh eV90eXBlcy5oIgorCisvKiBIRE1JL0RWSSBtb2RlcyBpZ25vcmUgZXZlcnl0aGluZyBidXQgdGhl IGxhc3QgMiBpdGVtcy4gU28gd2Ugc2hhcmUKKyAqIHRoZW0gZm9yIGJvdGggRFAgYW5kIEZESSB0 cmFuc3BvcnRzLCBhbGxvd2luZyB0aG9zZSBwb3J0cyB0bworICogYXV0b21hdGljYWxseSBhZGFw dCB0byBIRE1JIGNvbm5lY3Rpb25zIGFzIHdlbGwKKyAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBk ZGlfYnVmX3RyYW5zIGhzd19kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7CisJeyAweDAwRkZGRkZG LCAweDAwMDYwMDBFLCAweDAgfSwKKwl7IDB4MDBENzVGRkYsIDB4MDAwNTAwMEEsIDB4MCB9LAor CXsgMHgwMEMzMEZGRiwgMHgwMDA0MDAwNiwgMHgwIH0sCisJeyAweDgwQUFBRkZGLCAweDAwMEIw MDAwLCAweDAgfSwKKwl7IDB4MDBGRkZGRkYsIDB4MDAwNTAwMEEsIDB4MCB9LAorCXsgMHgwMEQ3 NUZGRiwgMHgwMDBDMDAwNCwgMHgwIH0sCisJeyAweDgwQzMwRkZGLCAweDAwMEIwMDAwLCAweDAg fSwKKwl7IDB4MDBGRkZGRkYsIDB4MDAwNDAwMDYsIDB4MCB9LAorCXsgMHg4MEQ3NUZGRiwgMHgw MDBCMDAwMCwgMHgwIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMg aHN3X2RkaV90cmFuc2xhdGlvbnNfZmRpW10gPSB7CisJeyAweDAwRkZGRkZGLCAweDAwMDcwMDBF LCAweDAgfSwKKwl7IDB4MDBENzVGRkYsIDB4MDAwRjAwMEEsIDB4MCB9LAorCXsgMHgwMEMzMEZG RiwgMHgwMDA2MDAwNiwgMHgwIH0sCisJeyAweDAwQUFBRkZGLCAweDAwMUUwMDAwLCAweDAgfSwK Kwl7IDB4MDBGRkZGRkYsIDB4MDAwRjAwMEEsIDB4MCB9LAorCXsgMHgwMEQ3NUZGRiwgMHgwMDE2 MDAwNCwgMHgwIH0sCisJeyAweDAwQzMwRkZGLCAweDAwMUUwMDAwLCAweDAgfSwKKwl7IDB4MDBG RkZGRkYsIDB4MDAwNjAwMDYsIDB4MCB9LAorCXsgMHgwMEQ3NUZGRiwgMHgwMDFFMDAwMCwgMHgw IH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgaHN3X2RkaV90cmFu c2xhdGlvbnNfaGRtaVtdID0geworCQkJCQkvKiBJZHgJTlQgbVYgZAlUIG1WIGQJZGIJKi8KKwl7 IDB4MDBGRkZGRkYsIDB4MDAwNjAwMEUsIDB4MCB9LC8qIDA6CTQwMAk0MDAJMAkqLworCXsgMHgw MEU3OUZGRiwgMHgwMDBFMDAwQywgMHgwIH0sLyogMToJNDAwCTUwMAkyCSovCisJeyAweDAwRDc1 RkZGLCAweDAwMDUwMDBBLCAweDAgfSwvKiAyOgk0MDAJNjAwCTMuNQkqLworCXsgMHgwMEZGRkZG RiwgMHgwMDA1MDAwQSwgMHgwIH0sLyogMzoJNjAwCTYwMAkwCSovCisJeyAweDAwRTc5RkZGLCAw eDAwMUQwMDA3LCAweDAgfSwvKiA0Ogk2MDAJNzUwCTIJKi8KKwl7IDB4MDBENzVGRkYsIDB4MDAw QzAwMDQsIDB4MCB9LC8qIDU6CTYwMAk5MDAJMy41CSovCisJeyAweDAwRkZGRkZGLCAweDAwMDQw MDA2LCAweDAgfSwvKiA2Ogk4MDAJODAwCTAJKi8KKwl7IDB4ODBFNzlGRkYsIDB4MDAwMzAwMDIs IDB4MCB9LC8qIDc6CTgwMAkxMDAwCTIJKi8KKwl7IDB4MDBGRkZGRkYsIDB4MDAxNDAwMDUsIDB4 MCB9LC8qIDg6CTg1MAk4NTAJMAkqLworCXsgMHgwMEZGRkZGRiwgMHgwMDBDMDAwNCwgMHgwIH0s LyogOToJOTAwCTkwMAkwCSovCisJeyAweDAwRkZGRkZGLCAweDAwMUMwMDAzLCAweDAgfSwvKiAx MDoJOTUwCTk1MAkwCSovCisJeyAweDgwRkZGRkZGLCAweDAwMDMwMDAyLCAweDAgfSwvKiAxMToJ MTAwMAkxMDAwCTAJKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBi ZHdfZGRpX3RyYW5zbGF0aW9uc19lZHBbXSA9IHsKKwl7IDB4MDBGRkZGRkYsIDB4MDAwMDAwMTIs IDB4MCB9LAorCXsgMHgwMEVCQUZGRiwgMHgwMDAyMDAxMSwgMHgwIH0sCisJeyAweDAwQzcxRkZG LCAweDAwMDYwMDBGLCAweDAgfSwKKwl7IDB4MDBBQUFGRkYsIDB4MDAwRTAwMEEsIDB4MCB9LAor CXsgMHgwMEZGRkZGRiwgMHgwMDAyMDAxMSwgMHgwIH0sCisJeyAweDAwREI2RkZGLCAweDAwMDUw MDBGLCAweDAgfSwKKwl7IDB4MDBCRUVGRkYsIDB4MDAwQTAwMEMsIDB4MCB9LAorCXsgMHgwMEZG RkZGRiwgMHgwMDA1MDAwRiwgMHgwIH0sCisJeyAweDAwREI2RkZGLCAweDAwMEEwMDBDLCAweDAg fSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBiZHdfZGRpX3RyYW5z bGF0aW9uc19kcFtdID0geworCXsgMHgwMEZGRkZGRiwgMHgwMDA3MDAwRSwgMHgwIH0sCisJeyAw eDAwRDc1RkZGLCAweDAwMEUwMDBBLCAweDAgfSwKKwl7IDB4MDBCRUZGRkYsIDB4MDAxNDAwMDYs IDB4MCB9LAorCXsgMHg4MEIyQ0ZGRiwgMHgwMDFCMDAwMiwgMHgwIH0sCisJeyAweDAwRkZGRkZG LCAweDAwMEUwMDBBLCAweDAgfSwKKwl7IDB4MDBEQjZGRkYsIDB4MDAxNjAwMDUsIDB4MCB9LAor CXsgMHg4MEM3MUZGRiwgMHgwMDFBMDAwMiwgMHgwIH0sCisJeyAweDAwRjdERkZGLCAweDAwMTgw MDA0LCAweDAgfSwKKwl7IDB4ODBENzVGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LAorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRpb25zX2ZkaVtd ID0geworCXsgMHgwMEZGRkZGRiwgMHgwMDAxMDAwRSwgMHgwIH0sCisJeyAweDAwRDc1RkZGLCAw eDAwMDQwMDBBLCAweDAgfSwKKwl7IDB4MDBDMzBGRkYsIDB4MDAwNzAwMDYsIDB4MCB9LAorCXsg MHgwMEFBQUZGRiwgMHgwMDBDMDAwMCwgMHgwIH0sCisJeyAweDAwRkZGRkZGLCAweDAwMDQwMDBB LCAweDAgfSwKKwl7IDB4MDBENzVGRkYsIDB4MDAwOTAwMDQsIDB4MCB9LAorCXsgMHgwMEMzMEZG RiwgMHgwMDBDMDAwMCwgMHgwIH0sCisJeyAweDAwRkZGRkZGLCAweDAwMDcwMDA2LCAweDAgfSwK Kwl7IDB4MDBENzVGRkYsIDB4MDAwQzAwMDAsIDB4MCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBkZGlfYnVmX3RyYW5zIGJkd19kZGlfdHJhbnNsYXRpb25zX2hkbWlbXSA9IHsKKwkJCQkJ LyogSWR4CU5UIG1WIGQJVCBtViBkZglkYgkqLworCXsgMHgwMEZGRkZGRiwgMHgwMDA3MDAwRSwg MHgwIH0sLyogMDoJNDAwCTQwMAkwCSovCisJeyAweDAwRDc1RkZGLCAweDAwMEUwMDBBLCAweDAg fSwvKiAxOgk0MDAJNjAwCTMuNQkqLworCXsgMHgwMEJFRkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0s LyogMjoJNDAwCTgwMAk2CSovCisJeyAweDAwRkZGRkZGLCAweDAwMDkwMDBELCAweDAgfSwvKiAz Ogk0NTAJNDUwCTAJKi8KKwl7IDB4MDBGRkZGRkYsIDB4MDAwRTAwMEEsIDB4MCB9LC8qIDQ6CTYw MAk2MDAJMAkqLworCXsgMHgwMEQ3RkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sLyogNToJNjAwCTgw MAkyLjUJKi8KKwl7IDB4ODBDQjJGRkYsIDB4MDAxQjAwMDIsIDB4MCB9LC8qIDY6CTYwMAkxMDAw CTQuNQkqLworCXsgMHgwMEZGRkZGRiwgMHgwMDE0MDAwNiwgMHgwIH0sLyogNzoJODAwCTgwMAkw CSovCisJeyAweDgwRTc5RkZGLCAweDAwMUIwMDAyLCAweDAgfSwvKiA4Ogk4MDAJMTAwMAkyCSov CisJeyAweDgwRkZGRkZGLCAweDAwMUIwMDAyLCAweDAgfSwvKiA5OgkxMDAwCTEwMDAJMAkqLwor fTsKKworLyogU2t5bGFrZSBIIGFuZCBTICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZf dHJhbnMgc2tsX2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKKwl7IDB4MDAwMDIwMTYsIDB4MDAw MDAwQTAsIDB4MCB9LAorCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA5QiwgMHgwIH0sCisJeyAweDAw MDA3MDExLCAweDAwMDAwMDg4LCAweDAgfSwKKwl7IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzAsIDB4 MSB9LAorCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDA5QiwgMHgwIH0sCisJeyAweDAwMDA1MDEyLCAw eDAwMDAwMDg4LCAweDAgfSwKKwl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MSB9LAorCXsg MHgwMDAwMjAxNiwgMHgwMDAwMDBERiwgMHgwIH0sCisJeyAweDgwMDA1MDEyLCAweDAwMDAwMEMw LCAweDEgfSwKK307CisKKy8qIFNreWxha2UgVSAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBkZGlf YnVmX3RyYW5zIHNrbF91X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKKwl7IDB4MDAwMDIwMUIs IDB4MDAwMDAwQTIsIDB4MCB9LAorCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwgMHgwIH0sCisJ eyAweDgwMDA3MDExLCAweDAwMDAwMENELCAweDEgfSwKKwl7IDB4ODAwMDkwMTAsIDB4MDAwMDAw QzAsIDB4MSB9LAorCXsgMHgwMDAwMjAxQiwgMHgwMDAwMDA5RCwgMHgwIH0sCisJeyAweDgwMDA1 MDEyLCAweDAwMDAwMEMwLCAweDEgfSwKKwl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAsIDB4MSB9 LAorCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDA4OCwgMHgwIH0sCisJeyAweDgwMDA1MDEyLCAweDAw MDAwMEMwLCAweDEgfSwKK307CisKKy8qIFNreWxha2UgWSAqLworc3RhdGljIGNvbnN0IHN0cnVj dCBkZGlfYnVmX3RyYW5zIHNrbF95X2RkaV90cmFuc2xhdGlvbnNfZHBbXSA9IHsKKwl7IDB4MDAw MDAwMTgsIDB4MDAwMDAwQTIsIDB4MCB9LAorCXsgMHgwMDAwNTAxMiwgMHgwMDAwMDA4OCwgMHgw IH0sCisJeyAweDgwMDA3MDExLCAweDAwMDAwMENELCAweDMgfSwKKwl7IDB4ODAwMDkwMTAsIDB4 MDAwMDAwQzAsIDB4MyB9LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA5RCwgMHgwIH0sCisJeyAw eDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKKwl7IDB4ODAwMDcwMTEsIDB4MDAwMDAwQzAs IDB4MyB9LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDA4OCwgMHgwIH0sCisJeyAweDgwMDA1MDEy LCAweDAwMDAwMEMwLCAweDMgfSwKK307CisKKy8qIEthYnlsYWtlIEggYW5kIFMgKi8KK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBrYmxfZGRpX3RyYW5zbGF0aW9uc19kcFtdID0g eworCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDBBMCwgMHgwIH0sCisJeyAweDAwMDA1MDEyLCAweDAw MDAwMDlCLCAweDAgfSwKKwl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwODgsIDB4MCB9LAorCXsgMHg4 MDAwOTAxMCwgMHgwMDAwMDBDMCwgMHgxIH0sCisJeyAweDAwMDAyMDE2LCAweDAwMDAwMDlCLCAw eDAgfSwKKwl7IDB4MDAwMDUwMTIsIDB4MDAwMDAwODgsIDB4MCB9LAorCXsgMHg4MDAwNzAxMSwg MHgwMDAwMDBDMCwgMHgxIH0sCisJeyAweDAwMDAyMDE2LCAweDAwMDAwMDk3LCAweDAgfSwKKwl7 IDB4ODAwMDUwMTIsIDB4MDAwMDAwQzAsIDB4MSB9LAorfTsKKworLyogS2FieWxha2UgVSAqLwor c3RhdGljIGNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zIGtibF91X2RkaV90cmFuc2xhdGlvbnNf ZHBbXSA9IHsKKwl7IDB4MDAwMDIwMUIsIDB4MDAwMDAwQTEsIDB4MCB9LAorCXsgMHgwMDAwNTAx MiwgMHgwMDAwMDA4OCwgMHgwIH0sCisJeyAweDgwMDA3MDExLCAweDAwMDAwMENELCAweDMgfSwK Kwl7IDB4ODAwMDkwMTAsIDB4MDAwMDAwQzAsIDB4MyB9LAorCXsgMHgwMDAwMjAxQiwgMHgwMDAw MDA5RCwgMHgwIH0sCisJeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKKwl7IDB4ODAw MDcwMTEsIDB4MDAwMDAwQzAsIDB4MyB9LAorCXsgMHgwMDAwMjAxNiwgMHgwMDAwMDA0RiwgMHgw IH0sCisJeyAweDgwMDA1MDEyLCAweDAwMDAwMEMwLCAweDMgfSwKK307CisKKy8qIEthYnlsYWtl IFkgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBrYmxfeV9kZGlfdHJhbnNs YXRpb25zX2RwW10gPSB7CisJeyAweDAwMDAxMDE3LCAweDAwMDAwMEExLCAweDAgfSwKKwl7IDB4 MDAwMDUwMTIsIDB4MDAwMDAwODgsIDB4MCB9LAorCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDRCwg MHgzIH0sCisJeyAweDgwMDA4MDBGLCAweDAwMDAwMEMwLCAweDMgfSwKKwl7IDB4MDAwMDEwMTcs IDB4MDAwMDAwOUQsIDB4MCB9LAorCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgzIH0sCisJ eyAweDgwMDA3MDExLCAweDAwMDAwMEMwLCAweDMgfSwKKwl7IDB4MDAwMDEwMTcsIDB4MDAwMDAw NEMsIDB4MCB9LAorCXsgMHg4MDAwNTAxMiwgMHgwMDAwMDBDMCwgMHgzIH0sCit9OworCisvKgor ICogU2t5bGFrZS9LYWJ5bGFrZSBIIGFuZCBTCisgKiBlRFAgMS40IGxvdyB2c3dpbmcgdHJhbnNs YXRpb24gcGFyYW1ldGVycworICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMg c2tsX2RkaV90cmFuc2xhdGlvbnNfZWRwW10gPSB7CisJeyAweDAwMDAwMDE4LCAweDAwMDAwMEE4 LCAweDAgfSwKKwl7IDB4MDAwMDQwMTMsIDB4MDAwMDAwQTksIDB4MCB9LAorCXsgMHgwMDAwNzAx MSwgMHgwMDAwMDBBMiwgMHgwIH0sCisJeyAweDAwMDA5MDEwLCAweDAwMDAwMDlDLCAweDAgfSwK Kwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTksIDB4MCB9LAorCXsgMHgwMDAwNjAxMywgMHgwMDAw MDBBMiwgMHgwIH0sCisJeyAweDAwMDA3MDExLCAweDAwMDAwMEE2LCAweDAgfSwKKwl7IDB4MDAw MDAwMTgsIDB4MDAwMDAwQUIsIDB4MCB9LAorCXsgMHgwMDAwNzAxMywgMHgwMDAwMDA5RiwgMHgw IH0sCisJeyAweDAwMDAwMDE4LCAweDAwMDAwMERGLCAweDAgfSwKK307CisKKy8qCisgKiBTa3ls YWtlL0thYnlsYWtlIFUKKyAqIGVEUCAxLjQgbG93IHZzd2luZyB0cmFuc2xhdGlvbiBwYXJhbWV0 ZXJzCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyBza2xfdV9kZGlfdHJh bnNsYXRpb25zX2VkcFtdID0geworCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBOCwgMHgwIH0sCisJ eyAweDAwMDA0MDEzLCAweDAwMDAwMEE5LCAweDAgfSwKKwl7IDB4MDAwMDcwMTEsIDB4MDAwMDAw QTIsIDB4MCB9LAorCXsgMHgwMDAwOTAxMCwgMHgwMDAwMDA5QywgMHgwIH0sCisJeyAweDAwMDAw MDE4LCAweDAwMDAwMEE5LCAweDAgfSwKKwl7IDB4MDAwMDYwMTMsIDB4MDAwMDAwQTIsIDB4MCB9 LAorCXsgMHgwMDAwNzAxMSwgMHgwMDAwMDBBNiwgMHgwIH0sCisJeyAweDAwMDAyMDE2LCAweDAw MDAwMEFCLCAweDAgfSwKKwl7IDB4MDAwMDUwMTMsIDB4MDAwMDAwOUYsIDB4MCB9LAorCXsgMHgw MDAwMDAxOCwgMHgwMDAwMDBERiwgMHgwIH0sCit9OworCisvKgorICogU2t5bGFrZS9LYWJ5bGFr ZSBZCisgKiBlRFAgMS40IGxvdyB2c3dpbmcgdHJhbnNsYXRpb24gcGFyYW1ldGVycworICovCitz dGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19l ZHBbXSA9IHsKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwQTgsIDB4MCB9LAorCXsgMHgwMDAwNDAx MywgMHgwMDAwMDBBQiwgMHgwIH0sCisJeyAweDAwMDA3MDExLCAweDAwMDAwMEE0LCAweDAgfSwK Kwl7IDB4MDAwMDkwMTAsIDB4MDAwMDAwREYsIDB4MCB9LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAw MDBBQSwgMHgwIH0sCisJeyAweDAwMDA2MDEzLCAweDAwMDAwMEE0LCAweDAgfSwKKwl7IDB4MDAw MDcwMTEsIDB4MDAwMDAwOUQsIDB4MCB9LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBMCwgMHgw IH0sCisJeyAweDAwMDA2MDEyLCAweDAwMDAwMERGLCAweDAgfSwKKwl7IDB4MDAwMDAwMTgsIDB4 MDAwMDAwOEEsIDB4MCB9LAorfTsKKworLyogU2t5bGFrZS9LYWJ5bGFrZSBVLCBIIGFuZCBTICov CitzdGF0aWMgY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX2RkaV90cmFuc2xhdGlvbnNf aGRtaVtdID0geworCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBQywgMHgwIH0sCisJeyAweDAwMDA1 MDEyLCAweDAwMDAwMDlELCAweDAgfSwKKwl7IDB4MDAwMDcwMTEsIDB4MDAwMDAwODgsIDB4MCB9 LAorCXsgMHgwMDAwMDAxOCwgMHgwMDAwMDBBMSwgMHgwIH0sCisJeyAweDAwMDAwMDE4LCAweDAw MDAwMDk4LCAweDAgfSwKKwl7IDB4MDAwMDQwMTMsIDB4MDAwMDAwODgsIDB4MCB9LAorCXsgMHg4 MDAwNjAxMiwgMHgwMDAwMDBDRCwgMHgxIH0sCisJeyAweDAwMDAwMDE4LCAweDAwMDAwMERGLCAw eDAgfSwKKwl7IDB4ODAwMDMwMTUsIDB4MDAwMDAwQ0QsIDB4MSB9LAkvKiBEZWZhdWx0ICovCisJ eyAweDgwMDAzMDE1LCAweDAwMDAwMEMwLCAweDEgfSwKKwl7IDB4ODAwMDAwMTgsIDB4MDAwMDAw QzAsIDB4MSB9LAorfTsKKworLyogU2t5bGFrZS9LYWJ5bGFrZSBZICovCitzdGF0aWMgY29uc3Qg c3RydWN0IGRkaV9idWZfdHJhbnMgc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19oZG1pW10gPSB7CisJ eyAweDAwMDAwMDE4LCAweDAwMDAwMEExLCAweDAgfSwKKwl7IDB4MDAwMDUwMTIsIDB4MDAwMDAw REYsIDB4MCB9LAorCXsgMHg4MDAwNzAxMSwgMHgwMDAwMDBDQiwgMHgzIH0sCisJeyAweDAwMDAw MDE4LCAweDAwMDAwMEE0LCAweDAgfSwKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwOUQsIDB4MCB9 LAorCXsgMHgwMDAwNDAxMywgMHgwMDAwMDA4MCwgMHgwIH0sCisJeyAweDgwMDA2MDEzLCAweDAw MDAwMEMwLCAweDMgfSwKKwl7IDB4MDAwMDAwMTgsIDB4MDAwMDAwOEEsIDB4MCB9LAorCXsgMHg4 MDAwMzAxNSwgMHgwMDAwMDBDMCwgMHgzIH0sCS8qIERlZmF1bHQgKi8KKwl7IDB4ODAwMDMwMTUs IDB4MDAwMDAwQzAsIDB4MyB9LAorCXsgMHg4MDAwMDAxOCwgMHgwMDAwMDBDMCwgMHgzIH0sCit9 OworCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgYnh0X2RkaV90cmFu c2xhdGlvbnNfZHBbXSA9IHsKKwkJCQkJLyogSWR4CU5UIG1WIGRpZmYJZGIgICovCisJeyA1Miwg IDB4OUEsIDAsIDEyOCwgfSwJLyogMDoJNDAwCQkwICAgKi8KKwl7IDc4LCAgMHg5QSwgMCwgODUs ICB9LAkvKiAxOgk0MDAJCTMuNSAqLworCXsgMTA0LCAweDlBLCAwLCA2NCwgIH0sCS8qIDI6CTQw MAkJNiAgICovCisJeyAxNTQsIDB4OUEsIDAsIDQzLCAgfSwJLyogMzoJNDAwCQk5LjUgKi8KKwl7 IDc3LCAgMHg5QSwgMCwgMTI4LCB9LAkvKiA0Ogk2MDAJCTAgICAqLworCXsgMTE2LCAweDlBLCAw LCA4NSwgIH0sCS8qIDU6CTYwMAkJMy41ICovCisJeyAxNTQsIDB4OUEsIDAsIDY0LCAgfSwJLyog NjoJNjAwCQk2ICAgKi8KKwl7IDEwMiwgMHg5QSwgMCwgMTI4LCB9LAkvKiA3Ogk4MDAJCTAgICAq LworCXsgMTU0LCAweDlBLCAwLCA4NSwgIH0sCS8qIDg6CTgwMAkJMy41ICovCisJeyAxNTQsIDB4 OUEsIDEsIDEyOCwgfSwJLyogOToJMTIwMAkJMCAgICovCit9OworCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGJ4dF9kZGlfYnVmX3RyYW5zIGJ4dF9kZGlfdHJhbnNsYXRpb25zX2VkcFtdID0geworCQkJ CQkvKiBJZHgJTlQgbVYgZGlmZglkYiAgKi8KKwl7IDI2LCAwLCAwLCAxMjgsIH0sCS8qIDA6CTIw MAkJMCAgICovCisJeyAzOCwgMCwgMCwgMTEyLCB9LAkvKiAxOgkyMDAJCTEuNSAqLworCXsgNDgs IDAsIDAsIDk2LCAgfSwJLyogMjoJMjAwCQk0ICAgKi8KKwl7IDU0LCAwLCAwLCA2OSwgIH0sCS8q IDM6CTIwMAkJNiAgICovCisJeyAzMiwgMCwgMCwgMTI4LCB9LAkvKiA0OgkyNTAJCTAgICAqLwor CXsgNDgsIDAsIDAsIDEwNCwgfSwJLyogNToJMjUwCQkxLjUgKi8KKwl7IDU0LCAwLCAwLCA4NSwg IH0sCS8qIDY6CTI1MAkJNCAgICovCisJeyA0MywgMCwgMCwgMTI4LCB9LAkvKiA3OgkzMDAJCTAg ICAqLworCXsgNTQsIDAsIDAsIDEwMSwgfSwJLyogODoJMzAwCQkxLjUgKi8KKwl7IDQ4LCAwLCAw LCAxMjgsIH0sCS8qIDk6CTMwMAkJMCAgICovCit9OworCisvKiBCU3BlYyBoYXMgMiByZWNvbW1l bmRlZCB2YWx1ZXMgLSBlbnRyaWVzIDAgYW5kIDguCisgKiBVc2luZyB0aGUgZW50cnkgd2l0aCBo aWdoZXIgdnN3aW5nLgorICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5z IGJ4dF9kZGlfdHJhbnNsYXRpb25zX2hkbWlbXSA9IHsKKwkJCQkJLyogSWR4CU5UIG1WIGRpZmYJ ZGIgICovCisJeyA1MiwgIDB4OUEsIDAsIDEyOCwgfSwJLyogMDoJNDAwCQkwICAgKi8KKwl7IDUy LCAgMHg5QSwgMCwgODUsICB9LAkvKiAxOgk0MDAJCTMuNSAqLworCXsgNTIsICAweDlBLCAwLCA2 NCwgIH0sCS8qIDI6CTQwMAkJNiAgICovCisJeyA0MiwgIDB4OUEsIDAsIDQzLCAgfSwJLyogMzoJ NDAwCQk5LjUgKi8KKwl7IDc3LCAgMHg5QSwgMCwgMTI4LCB9LAkvKiA0Ogk2MDAJCTAgICAqLwor CXsgNzcsICAweDlBLCAwLCA4NSwgIH0sCS8qIDU6CTYwMAkJMy41ICovCisJeyA3NywgIDB4OUEs IDAsIDY0LCAgfSwJLyogNjoJNjAwCQk2ICAgKi8KKwl7IDEwMiwgMHg5QSwgMCwgMTI4LCB9LAkv KiA3Ogk4MDAJCTAgICAqLworCXsgMTAyLCAweDlBLCAwLCA4NSwgIH0sCS8qIDg6CTgwMAkJMy41 ICovCisJeyAxNTQsIDB4OUEsIDEsIDEyOCwgfSwJLyogOToJMTIwMAkJMCAgICovCit9OworCisv KiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjg1ViBmb3IgRFAgKi8KK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNf ZHBfMF84NVZbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEs IDB4NUQsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KKwl7 IDB4QSwgMHg2QSwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAq LworCXsgMHhCLCAweDdBLCAweDMyLCAweDAwLCAweDBEIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYu MCAgICovCisJeyAweDYsIDB4N0MsIDB4MkQsIDB4MDAsIDB4MTIgfSwJLyogMzUwICAgOTAwICAg ICAgOC4yICAgKi8KKwl7IDB4QSwgMHg2OSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1 MDAgICAgICAwLjAgICAqLworCXsgMHhCLCAweDdBLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDUw MCAgIDcwMCAgICAgIDIuOSAgICovCisJeyAweDYsIDB4N0MsIDB4MzAsIDB4MDAsIDB4MEYgfSwJ LyogNTAwICAgOTAwICAgICAgNS4xICAgKi8KKwl7IDB4QiwgMHg3RCwgMHgzQywgMHgwMCwgMHgw MyB9LAkvKiA2NTAgICA3MjUgICAgICAwLjkgICAqLworCXsgMHg2LCAweDdDLCAweDM0LCAweDAw LCAweDBCIH0sCS8qIDYwMCAgIDkwMCAgICAgIDMuNSAgICovCisJeyAweDYsIDB4N0IsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KK307CisKKy8qIFZvbHRh Z2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDAuODVWIGZvciBIRE1JICovCitzdGF0aWMg Y29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlf MF84NVZbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEsIDB4 NjAsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDUwICAgNDUwICAgICAgMC4wICAgKi8KKwl7IDB4 QiwgMHg3MywgMHgzNiwgMHgwMCwgMHgwOSB9LAkvKiA0NTAgICA2NTAgICAgICAzLjIgICAqLwor CXsgMHg2LCAweDdGLCAweDMxLCAweDAwLCAweDBFIH0sCS8qIDQ1MCAgIDg1MCAgICAgIDUuNSAg ICovCisJeyAweEIsIDB4NzMsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNjUwICAgNjUwICAgICAg MC4wICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA2NTAgICA4NTAg ICAgICAyLjMgICAqLworCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDg1MCAg IDg1MCAgICAgIDAuMCAgICovCisJeyAweDYsIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEgfSwJLyog NjAwICAgODUwICAgICAgMy4wICAgKi8KK307CisKKy8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1p bmcgZm9yIFZjY0lPIDAuODVWIGZvciBlRFAgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2Rk aV9idWZfdHJhbnMgY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfODVWW10gPSB7CisJCQkJCQkv KiBOVCBtViBUcmFucyBtViBkYiAgICAqLworCXsgMHhBLCAweDY2LCAweDNBLCAweDAwLCAweDA1 IH0sCS8qIDM4NCAgIDUwMCAgICAgIDIuMyAgICovCisJeyAweDAsIDB4N0YsIDB4MzgsIDB4MDAs IDB4MDcgfSwJLyogMTUzICAgMjAwICAgICAgMi4zICAgKi8KKwl7IDB4OCwgMHg3RiwgMHgzOCwg MHgwMCwgMHgwNyB9LAkvKiAxOTIgICAyNTAgICAgICAyLjMgICAqLworCXsgMHgxLCAweDdGLCAw eDM4LCAweDAwLCAweDA3IH0sCS8qIDIzMCAgIDMwMCAgICAgIDIuMyAgICovCisJeyAweDksIDB4 N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjY5ICAgMzUwICAgICAgMi4zICAgKi8KKwl7IDB4 QSwgMHg2NiwgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA0NDYgICA1MDAgICAgICAxLjAgICAqLwor CXsgMHhCLCAweDcwLCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDQ2MCAgIDYwMCAgICAgIDIuMyAg ICovCisJeyAweEMsIDB4NzUsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNTM3ICAgNzAwICAgICAg Mi4zICAgKi8KKwl7IDB4MiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0MDAgICA0MDAg ICAgICAwLjAgICAqLworfTsKKworLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNj SU8gMC45NVYgZm9yIERQICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5z IGNubF9kZGlfdHJhbnNsYXRpb25zX2RwXzBfOTVWW10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFu cyBtViBkYiAgICAqLworCXsgMHhBLCAweDVELCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDM1MCAg IDM1MCAgICAgIDAuMCAgICovCisJeyAweEEsIDB4NkEsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyog MzUwICAgNTAwICAgICAgMy4xICAgKi8KKwl7IDB4QiwgMHg3QSwgMHgzMiwgMHgwMCwgMHgwRCB9 LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLworCXsgMHg2LCAweDdDLCAweDJELCAweDAwLCAw eDEyIH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCisJeyAweEEsIDB4NjksIDB4M0YsIDB4 MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8KKwl7IDB4QiwgMHg3QSwgMHgz NiwgMHgwMCwgMHgwOSB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkgICAqLworCXsgMHg2LCAweDdD LCAweDMwLCAweDAwLCAweDBGIH0sCS8qIDUwMCAgIDkwMCAgICAgIDUuMSAgICovCisJeyAweEIs IDB4N0QsIDB4M0MsIDB4MDAsIDB4MDMgfSwJLyogNjUwICAgNzI1ICAgICAgMC45ICAgKi8KKwl7 IDB4NiwgMHg3QywgMHgzNCwgMHgwMCwgMHgwQiB9LAkvKiA2MDAgICA5MDAgICAgICAzLjUgICAq LworCXsgMHg2LCAweDdCLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDkwMCAgIDkwMCAgICAgIDAu MCAgICovCit9OworCisvKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAwLjk1 ViBmb3IgSERNSSAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxf ZGRpX3RyYW5zbGF0aW9uc19oZG1pXzBfOTVWW10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFucyBt ViBkYiAgICAqLworCXsgMHhBLCAweDVDLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAgIDQw MCAgICAgIDAuMCAgICovCisJeyAweEIsIDB4NjksIDB4MzcsIDB4MDAsIDB4MDggfSwJLyogNDAw ICAgNjAwICAgICAgMy41ICAgKi8KKwl7IDB4NSwgMHg3NiwgMHgzMSwgMHgwMCwgMHgwRSB9LAkv KiA0MDAgICA4MDAgICAgICA2LjAgICAqLworCXsgMHhBLCAweDVFLCAweDNGLCAweDAwLCAweDAw IH0sCS8qIDQ1MCAgIDQ1MCAgICAgIDAuMCAgICovCisJeyAweEIsIDB4NjksIDB4M0YsIDB4MDAs IDB4MDAgfSwJLyogNjAwICAgNjAwICAgICAgMC4wICAgKi8KKwl7IDB4QiwgMHg3OSwgMHgzNSwg MHgwMCwgMHgwQSB9LAkvKiA2MDAgICA4NTAgICAgICAzLjAgICAqLworCXsgMHg2LCAweDdELCAw eDMyLCAweDAwLCAweDBEIH0sCS8qIDYwMCAgIDEwMDAgICAgIDQuNCAgICovCisJeyAweDUsIDB4 NzYsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogODAwICAgODAwICAgICAgMC4wICAgKi8KKwl7IDB4 NiwgMHg3RCwgMHgzOSwgMHgwMCwgMHgwNiB9LAkvKiA4MDAgICAxMDAwICAgICAxLjkgICAqLwor CXsgMHg2LCAweDdGLCAweDM5LCAweDAwLCAweDA2IH0sCS8qIDg1MCAgIDEwNTAgICAgIDEuOCAg ICovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMTA1MCAgMTA1MCAgICAg MC4wICAgKi8KK307CisKKy8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDAu OTVWIGZvciBlRFAgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25s X2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfOTVWW10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFucyBt ViBkYiAgICAqLworCXsgMHhBLCAweDYxLCAweDNBLCAweDAwLCAweDA1IH0sCS8qIDM4NCAgIDUw MCAgICAgIDIuMyAgICovCisJeyAweDAsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMTUz ICAgMjAwICAgICAgMi4zICAgKi8KKwl7IDB4OCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkv KiAxOTIgICAyNTAgICAgICAyLjMgICAqLworCXsgMHgxLCAweDdGLCAweDM4LCAweDAwLCAweDA3 IH0sCS8qIDIzMCAgIDMwMCAgICAgIDIuMyAgICovCisJeyAweDksIDB4N0YsIDB4MzgsIDB4MDAs IDB4MDcgfSwJLyogMjY5ICAgMzUwICAgICAgMi4zICAgKi8KKwl7IDB4QSwgMHg2MSwgMHgzQywg MHgwMCwgMHgwMyB9LAkvKiA0NDYgICA1MDAgICAgICAxLjAgICAqLworCXsgMHhCLCAweDY4LCAw eDM5LCAweDAwLCAweDA2IH0sCS8qIDQ2MCAgIDYwMCAgICAgIDIuMyAgICovCisJeyAweEMsIDB4 NkUsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogNTM3ICAgNzAwICAgICAgMi4zICAgKi8KKwl7IDB4 NCwgMHg3RiwgMHgzQSwgMHgwMCwgMHgwNSB9LAkvKiA0NjAgICA2MDAgICAgICAyLjMgICAqLwor CXsgMHgyLCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAgIDQwMCAgICAgIDAuMCAg ICovCit9OworCisvKiBWb2x0YWdlIFN3aW5nIFByb2dyYW1taW5nIGZvciBWY2NJTyAxLjA1ViBm b3IgRFAgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgY25sX2RkaV90 cmFuc2xhdGlvbnNfZHBfMV8wNVZbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAg ICovCisJeyAweEEsIDB4NTgsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDAwICAgNDAwICAgICAg MC4wICAgKi8KKwl7IDB4QiwgMHg2NCwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA0MDAgICA2MDAg ICAgICAzLjUgICAqLworCXsgMHg1LCAweDcwLCAweDMxLCAweDAwLCAweDBFIH0sCS8qIDQwMCAg IDgwMCAgICAgIDYuMCAgICovCisJeyAweDYsIDB4N0YsIDB4MkMsIDB4MDAsIDB4MTMgfSwJLyog NDAwICAgMTA1MCAgICAgOC40ICAgKi8KKwl7IDB4QiwgMHg2NCwgMHgzRiwgMHgwMCwgMHgwMCB9 LAkvKiA2MDAgICA2MDAgICAgICAwLjAgICAqLworCXsgMHg1LCAweDczLCAweDM1LCAweDAwLCAw eDBBIH0sCS8qIDYwMCAgIDg1MCAgICAgIDMuMCAgICovCisJeyAweDYsIDB4N0YsIDB4MzAsIDB4 MDAsIDB4MEYgfSwJLyogNTUwICAgMTA1MCAgICAgNS42ICAgKi8KKwl7IDB4NSwgMHg3NiwgMHgz RSwgMHgwMCwgMHgwMSB9LAkvKiA4NTAgICA5MDAgICAgICAwLjUgICAqLworCXsgMHg2LCAweDdG LCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDc1MCAgIDEwNTAgICAgIDIuOSAgICovCisJeyAweDYs IDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMTA1MCAgMTA1MCAgICAgMC4wICAgKi8KK307 CisKKy8qIFZvbHRhZ2UgU3dpbmcgUHJvZ3JhbW1pbmcgZm9yIFZjY0lPIDEuMDVWIGZvciBIRE1J ICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zIGNubF9kZGlfdHJhbnNs YXRpb25zX2hkbWlfMV8wNVZbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICov CisJeyAweEEsIDB4NTgsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDAwICAgNDAwICAgICAgMC4w ICAgKi8KKwl7IDB4QiwgMHg2NCwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA0MDAgICA2MDAgICAg ICAzLjUgICAqLworCXsgMHg1LCAweDcwLCAweDMxLCAweDAwLCAweDBFIH0sCS8qIDQwMCAgIDgw MCAgICAgIDYuMCAgICovCisJeyAweEEsIDB4NUIsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNDUw ICAgNDUwICAgICAgMC4wICAgKi8KKwl7IDB4QiwgMHg2NCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkv KiA2MDAgICA2MDAgICAgICAwLjAgICAqLworCXsgMHg1LCAweDczLCAweDM1LCAweDAwLCAweDBB IH0sCS8qIDYwMCAgIDg1MCAgICAgIDMuMCAgICovCisJeyAweDYsIDB4N0MsIDB4MzIsIDB4MDAs IDB4MEQgfSwJLyogNjAwICAgMTAwMCAgICAgNC40ICAgKi8KKwl7IDB4NSwgMHg3MCwgMHgzRiwg MHgwMCwgMHgwMCB9LAkvKiA4MDAgICA4MDAgICAgICAwLjAgICAqLworCXsgMHg2LCAweDdDLCAw eDM5LCAweDAwLCAweDA2IH0sCS8qIDgwMCAgIDEwMDAgICAgIDEuOSAgICovCisJeyAweDYsIDB4 N0YsIDB4MzksIDB4MDAsIDB4MDYgfSwJLyogODUwICAgMTA1MCAgICAgMS44ICAgKi8KKwl7IDB4 NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAxMDUwICAxMDUwICAgICAwLjAgICAqLwor fTsKKworLyogVm9sdGFnZSBTd2luZyBQcm9ncmFtbWluZyBmb3IgVmNjSU8gMS4wNVYgZm9yIGVE UCAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBjbmxfZGRpX3RyYW5z bGF0aW9uc19lZHBfMV8wNVZbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICov CisJeyAweEEsIDB4NUUsIDB4M0EsIDB4MDAsIDB4MDUgfSwJLyogMzg0ICAgNTAwICAgICAgMi4z ICAgKi8KKwl7IDB4MCwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAxNTMgICAyMDAgICAg ICAyLjMgICAqLworCXsgMHg4LCAweDdGLCAweDM4LCAweDAwLCAweDA3IH0sCS8qIDE5MiAgIDI1 MCAgICAgIDIuMyAgICovCisJeyAweDEsIDB4N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjMw ICAgMzAwICAgICAgMi4zICAgKi8KKwl7IDB4OSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkv KiAyNjkgICAzNTAgICAgICAyLjMgICAqLworCXsgMHhBLCAweDVFLCAweDNDLCAweDAwLCAweDAz IH0sCS8qIDQ0NiAgIDUwMCAgICAgIDEuMCAgICovCisJeyAweEIsIDB4NjQsIDB4MzksIDB4MDAs IDB4MDYgfSwJLyogNDYwICAgNjAwICAgICAgMi4zICAgKi8KKwl7IDB4RSwgMHg2QSwgMHgzOSwg MHgwMCwgMHgwNiB9LAkvKiA1MzcgICA3MDAgICAgICAyLjMgICAqLworCXsgMHgyLCAweDdGLCAw eDNGLCAweDAwLCAweDAwIH0sCS8qIDQwMCAgIDQwMCAgICAgIDAuMCAgICovCit9OworCisvKiBp Y2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnMgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25s X2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjJbXSA9 IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAweEEsIDB4MzUsIDB4M0Ys IDB4MDAsIDB4MDAgfSwJLyogMzUwICAgMzUwICAgICAgMC4wICAgKi8KKwl7IDB4QSwgMHg0Riwg MHgzNywgMHgwMCwgMHgwOCB9LAkvKiAzNTAgICA1MDAgICAgICAzLjEgICAqLworCXsgMHhDLCAw eDcxLCAweDJGLCAweDAwLCAweDEwIH0sCS8qIDM1MCAgIDcwMCAgICAgIDYuMCAgICovCisJeyAw eDYsIDB4N0YsIDB4MkIsIDB4MDAsIDB4MTQgfSwJLyogMzUwICAgOTAwICAgICAgOC4yICAgKi8K Kwl7IDB4QSwgMHg0QywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA1MDAgICA1MDAgICAgICAwLjAg ICAqLworCXsgMHhDLCAweDczLCAweDM0LCAweDAwLCAweDBCIH0sCS8qIDUwMCAgIDcwMCAgICAg IDIuOSAgICovCisJeyAweDYsIDB4N0YsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogNTAwICAgOTAw ICAgICAgNS4xICAgKi8KKwl7IDB4QywgMHg2QywgMHgzQywgMHgwMCwgMHgwMyB9LAkvKiA2NTAg ICA3MDAgICAgICAwLjYgICAqLworCXsgMHg2LCAweDdGLCAweDM1LCAweDAwLCAweDBBIH0sCS8q IDYwMCAgIDkwMCAgICAgIDMuNSAgICovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAg fSwJLyogOTAwICAgOTAwICAgICAgMC4wICAgKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg Y25sX2RkaV9idWZfdHJhbnMgaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIy W10gPSB7CisJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLworCXsgMHgwLCAweDdGLCAw eDNGLCAweDAwLCAweDAwIH0sCS8qIDIwMCAgIDIwMCAgICAgIDAuMCAgICovCisJeyAweDgsIDB4 N0YsIDB4MzgsIDB4MDAsIDB4MDcgfSwJLyogMjAwICAgMjUwICAgICAgMS45ICAgKi8KKwl7IDB4 MSwgMHg3RiwgMHgzMywgMHgwMCwgMHgwQyB9LAkvKiAyMDAgICAzMDAgICAgICAzLjUgICAqLwor CXsgMHg5LCAweDdGLCAweDMxLCAweDAwLCAweDBFIH0sCS8qIDIwMCAgIDM1MCAgICAgIDQuOSAg ICovCisJeyAweDgsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMjUwICAgMjUwICAgICAg MC4wICAgKi8KKwl7IDB4MSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiAyNTAgICAzMDAg ICAgICAxLjYgICAqLworCXsgMHg5LCAweDdGLCAweDM1LCAweDAwLCAweDBBIH0sCS8qIDI1MCAg IDM1MCAgICAgIDIuOSAgICovCisJeyAweDEsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyog MzAwICAgMzAwICAgICAgMC4wICAgKi8KKwl7IDB4OSwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9 LAkvKiAzMDAgICAzNTAgICAgICAxLjMgICAqLworCXsgMHg5LCAweDdGLCAweDNGLCAweDAwLCAw eDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCit9OworCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGNubF9kZGlfYnVmX3RyYW5zIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBf aGJyM1tdID0geworCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7IDB4QSwgMHgz NSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLworCXsgMHhB LCAweDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDM1MCAgIDUwMCAgICAgIDMuMSAgICovCisJ eyAweEMsIDB4NzEsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogMzUwICAgNzAwICAgICAgNi4wICAg Ki8KKwl7IDB4NiwgMHg3RiwgMHgyQiwgMHgwMCwgMHgxNCB9LAkvKiAzNTAgICA5MDAgICAgICA4 LjIgICAqLworCXsgMHhBLCAweDRDLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDUwMCAgIDUwMCAg ICAgIDAuMCAgICovCisJeyAweEMsIDB4NzMsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogNTAwICAg NzAwICAgICAgMi45ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgyRiwgMHgwMCwgMHgxMCB9LAkvKiA1 MDAgICA5MDAgICAgICA1LjEgICAqLworCXsgMHhDLCAweDZDLCAweDNDLCAweDAwLCAweDAzIH0s CS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCisJeyAweDYsIDB4N0YsIDB4MzUsIDB4MDAsIDB4 MEEgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzRiwgMHgw MCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLworfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf aGRtaVtdID0geworCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8KKwl7IDB4QSwgMHg2 MCwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA0NTAgICA0NTAgICAgICAwLjAgICAqLworCXsgMHhC LCAweDczLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDQ1MCAgIDY1MCAgICAgIDMuMiAgICovCisJ eyAweDYsIDB4N0YsIDB4MzEsIDB4MDAsIDB4MEUgfSwJLyogNDUwICAgODUwICAgICAgNS41ICAg Ki8KKwl7IDB4QiwgMHg3MywgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA2NTAgICA2NTAgICAgICAw LjAgICBBTFMgKi8KKwl7IDB4NiwgMHg3RiwgMHgzNywgMHgwMCwgMHgwOCB9LAkvKiA2NTAgICA4 NTAgICAgICAyLjMgICAqLworCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8qIDg1 MCAgIDg1MCAgICAgIDAuMCAgICovCisJeyAweDYsIDB4N0YsIDB4MzUsIDB4MDAsIDB4MEEgfSwJ LyogNjAwICAgODUwICAgICAgMy4wICAgKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25s X2RkaV9idWZfdHJhbnMgZWhsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwW10gPSB7CisJ CQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLworCXsgMHhBLCAweDMzLCAweDNGLCAweDAw LCAweDAwIH0sCS8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICovCisJeyAweEEsIDB4NDcsIDB4MzYs IDB4MDAsIDB4MDkgfSwJLyogMzUwICAgNTAwICAgICAgMy4xICAgKi8KKwl7IDB4QywgMHg2NCwg MHgzNCwgMHgwMCwgMHgwQiB9LAkvKiAzNTAgICA3MDAgICAgICA2LjAgICAqLworCXsgMHg2LCAw eDdGLCAweDMwLCAweDAwLCAweDBGIH0sCS8qIDM1MCAgIDkwMCAgICAgIDguMiAgICovCisJeyAw eEEsIDB4NDYsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNTAwICAgNTAwICAgICAgMC4wICAgKi8K Kwl7IDB4QywgMHg2NCwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiA1MDAgICA3MDAgICAgICAyLjkg ICAqLworCXsgMHg2LCAweDdGLCAweDMyLCAweDAwLCAweDBEIH0sCS8qIDUwMCAgIDkwMCAgICAg IDUuMSAgICovCisJeyAweEMsIDB4NjEsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogNjUwICAgNzAw ICAgICAgMC42ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgzOCwgMHgwMCwgMHgwNyB9LAkvKiA2MDAg ICA5MDAgICAgICAzLjUgICAqLworCXsgMHg2LCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDkwMCAgIDkwMCAgICAgIDAuMCAgICovCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9k ZGlfYnVmX3RyYW5zIGpzbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyW10gPSB7 CisJCQkJCQkvKiBOVCBtViBUcmFucyBtViBkYiAgICAqLworCXsgMHg4LCAweDdGLCAweDNGLCAw eDAwLCAweDAwIH0sICAgICAgICAvKiAyMDAgICAyMDAgICAgICAwLjAgICAqLworCXsgMHg4LCAw eDdGLCAweDM4LCAweDAwLCAweDA3IH0sICAgICAgICAvKiAyMDAgICAyNTAgICAgICAxLjkgICAq LworCXsgMHgxLCAweDdGLCAweDMzLCAweDAwLCAweDBDIH0sICAgICAgICAvKiAyMDAgICAzMDAg ICAgICAzLjUgICAqLworCXsgMHhBLCAweDM1LCAweDM2LCAweDAwLCAweDA5IH0sICAgICAgICAv KiAyMDAgICAzNTAgICAgICA0LjkgICAqLworCXsgMHg4LCAweDdGLCAweDNGLCAweDAwLCAweDAw IH0sICAgICAgICAvKiAyNTAgICAyNTAgICAgICAwLjAgICAqLworCXsgMHgxLCAweDdGLCAweDM4 LCAweDAwLCAweDA3IH0sICAgICAgICAvKiAyNTAgICAzMDAgICAgICAxLjYgICAqLworCXsgMHhB LCAweDM1LCAweDM1LCAweDAwLCAweDBBIH0sICAgICAgICAvKiAyNTAgICAzNTAgICAgICAyLjkg ICAqLworCXsgMHgxLCAweDdGLCAweDNGLCAweDAwLCAweDAwIH0sICAgICAgICAvKiAzMDAgICAz MDAgICAgICAwLjAgICAqLworCXsgMHhBLCAweDM1LCAweDM4LCAweDAwLCAweDA3IH0sICAgICAg ICAvKiAzMDAgICAzNTAgICAgICAxLjMgICAqLworCXsgMHhBLCAweDM1LCAweDNGLCAweDAwLCAw eDAwIH0sICAgICAgICAvKiAzNTAgICAzNTAgICAgICAwLjAgICAqLworfTsKKworc3RhdGljIGNv bnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyBqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlv bnNfZWRwX2hicjJbXSA9IHsKKwkJCQkJCS8qIE5UIG1WIFRyYW5zIG1WIGRiICAgICovCisJeyAw eDgsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDIwMCAgIDIwMCAgICAgIDAu MCAgICovCisJeyAweDgsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDIwMCAg IDI1MCAgICAgIDEuOSAgICovCisJeyAweDEsIDB4N0YsIDB4M0QsIDB4MDAsIDB4MDIgfSwgICAg ICAgIC8qIDIwMCAgIDMwMCAgICAgIDMuNSAgICovCisJeyAweEEsIDB4MzUsIDB4MzgsIDB4MDAs IDB4MDcgfSwgICAgICAgIC8qIDIwMCAgIDM1MCAgICAgIDQuOSAgICovCisJeyAweDgsIDB4N0Ys IDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDI1MCAgIDI1MCAgICAgIDAuMCAgICovCisJ eyAweDEsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDI1MCAgIDMwMCAgICAg IDEuNiAgICovCisJeyAweEEsIDB4MzUsIDB4M0EsIDB4MDAsIDB4MDUgfSwgICAgICAgIC8qIDI1 MCAgIDM1MCAgICAgIDIuOSAgICovCisJeyAweDEsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwg ICAgICAgIC8qIDMwMCAgIDMwMCAgICAgIDAuMCAgICovCisJeyAweEEsIDB4MzUsIDB4MzgsIDB4 MDAsIDB4MDcgfSwgICAgICAgIC8qIDMwMCAgIDM1MCAgICAgIDEuMyAgICovCisJeyAweEEsIDB4 MzUsIDB4M0YsIDB4MDAsIDB4MDAgfSwgICAgICAgIC8qIDM1MCAgIDM1MCAgICAgIDAuMCAgICov Cit9OworCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zIGlj bF9tZ19waHlfZGRpX3RyYW5zbGF0aW9uc19yYnJfaGJyW10gPSB7CisJCQkJLyogVm9sdGFnZSBz d2luZyAgcHJlLWVtcGhhc2lzICovCisJeyAweDE4LCAweDAwLCAweDAwIH0sCS8qIDAgICAgICAg ICAgICAgIDAgICAqLworCXsgMHgxRCwgMHgwMCwgMHgwNSB9LAkvKiAwICAgICAgICAgICAgICAx ICAgKi8KKwl7IDB4MjQsIDB4MDAsIDB4MEMgfSwJLyogMCAgICAgICAgICAgICAgMiAgICovCisJ eyAweDJCLCAweDAwLCAweDE0IH0sCS8qIDAgICAgICAgICAgICAgIDMgICAqLworCXsgMHgyMSwg MHgwMCwgMHgwMCB9LAkvKiAxICAgICAgICAgICAgICAwICAgKi8KKwl7IDB4MkIsIDB4MDAsIDB4 MDggfSwJLyogMSAgICAgICAgICAgICAgMSAgICovCisJeyAweDMwLCAweDAwLCAweDBGIH0sCS8q IDEgICAgICAgICAgICAgIDIgICAqLworCXsgMHgzMSwgMHgwMCwgMHgwMyB9LAkvKiAyICAgICAg ICAgICAgICAwICAgKi8KKwl7IDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogMiAgICAgICAgICAgICAg MSAgICovCisJeyAweDNGLCAweDAwLCAweDAwIH0sCS8qIDMgICAgICAgICAgICAgIDAgICAqLwor fTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMgaWNsX21n X3BoeV9kZGlfdHJhbnNsYXRpb25zX2hicjJfaGJyM1tdID0geworCQkJCS8qIFZvbHRhZ2Ugc3dp bmcgIHByZS1lbXBoYXNpcyAqLworCXsgMHgxOCwgMHgwMCwgMHgwMCB9LAkvKiAwICAgICAgICAg ICAgICAwICAgKi8KKwl7IDB4MUQsIDB4MDAsIDB4MDUgfSwJLyogMCAgICAgICAgICAgICAgMSAg ICovCisJeyAweDI0LCAweDAwLCAweDBDIH0sCS8qIDAgICAgICAgICAgICAgIDIgICAqLworCXsg MHgyQiwgMHgwMCwgMHgxNCB9LAkvKiAwICAgICAgICAgICAgICAzICAgKi8KKwl7IDB4MjYsIDB4 MDAsIDB4MDAgfSwJLyogMSAgICAgICAgICAgICAgMCAgICovCisJeyAweDJDLCAweDAwLCAweDA3 IH0sCS8qIDEgICAgICAgICAgICAgIDEgICAqLworCXsgMHgzMywgMHgwMCwgMHgwQyB9LAkvKiAx ICAgICAgICAgICAgICAyICAgKi8KKwl7IDB4MkUsIDB4MDAsIDB4MDAgfSwJLyogMiAgICAgICAg ICAgICAgMCAgICovCisJeyAweDM2LCAweDAwLCAweDA5IH0sCS8qIDIgICAgICAgICAgICAgIDEg ICAqLworCXsgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzICAgICAgICAgICAgICAwICAgKi8KK307 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zIGljbF9tZ19w aHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pW10gPSB7CisJCQkJLyogSERNSSBQcmVzZXQJVlMJUHJl LWVtcGggKi8KKwl7IDB4MUEsIDB4MCwgMHgwIH0sCS8qIDEJCTQwMG1WCTBkQiAqLworCXsgMHgy MCwgMHgwLCAweDAgfSwJLyogMgkJNTAwbVYJMGRCICovCisJeyAweDI5LCAweDAsIDB4MCB9LAkv KiAzCQk2NTBtVgkwZEIgKi8KKwl7IDB4MzIsIDB4MCwgMHgwIH0sCS8qIDQJCTgwMG1WCTBkQiAq LworCXsgMHgzRiwgMHgwLCAweDAgfSwJLyogNQkJMTAwMG1WCTBkQiAqLworCXsgMHgzQSwgMHgw LCAweDUgfSwJLyogNgkJRnVsbAktMS41IGRCICovCisJeyAweDM5LCAweDAsIDB4NiB9LAkvKiA3 CQlGdWxsCS0xLjggZEIgKi8KKwl7IDB4MzgsIDB4MCwgMHg3IH0sCS8qIDgJCUZ1bGwJLTIgZEIg Ki8KKwl7IDB4MzcsIDB4MCwgMHg4IH0sCS8qIDkJCUZ1bGwJLTIuNSBkQiAqLworCXsgMHgzNiwg MHgwLCAweDkgfSwJLyogMTAJCUZ1bGwJLTMgZEIgKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgdGdsX2RrbF9waHlfZGRpX2J1Zl90cmFucyB0Z2xfZGtsX3BoeV9kcF9kZGlfdHJhbnNbXSA9 IHsKKwkJCQkvKiBWUwlwcmUtZW1wCU5vbi10cmFucyBtVglQcmUtZW1waCBkQiAqLworCXsgMHg3 LCAweDAsIDB4MDAgfSwJLyogMAkwCTQwMG1WCQkwIGRCICovCisJeyAweDUsIDB4MCwgMHgwNSB9 LAkvKiAwCTEJNDAwbVYJCTMuNSBkQiAqLworCXsgMHgyLCAweDAsIDB4MEIgfSwJLyogMAkyCTQw MG1WCQk2IGRCICovCisJeyAweDAsIDB4MCwgMHgxOCB9LAkvKiAwCTMJNDAwbVYJCTkuNSBkQiAq LworCXsgMHg1LCAweDAsIDB4MDAgfSwJLyogMQkwCTYwMG1WCQkwIGRCICovCisJeyAweDIsIDB4 MCwgMHgwOCB9LAkvKiAxCTEJNjAwbVYJCTMuNSBkQiAqLworCXsgMHgwLCAweDAsIDB4MTQgfSwJ LyogMQkyCTYwMG1WCQk2IGRCICovCisJeyAweDIsIDB4MCwgMHgwMCB9LAkvKiAyCTAJODAwbVYJ CTAgZEIgKi8KKwl7IDB4MCwgMHgwLCAweDBCIH0sCS8qIDIJMQk4MDBtVgkJMy41IGRCICovCisJ eyAweDAsIDB4MCwgMHgwMCB9LAkvKiAzCTAJMTIwMG1WCQkwIGRCIEhETUkgZGVmYXVsdCAqLwor fTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlfYnVmX3RyYW5zIHRnbF9k a2xfcGh5X2RwX2RkaV90cmFuc19oYnIyW10gPSB7CisJCQkJLyogVlMJcHJlLWVtcAlOb24tdHJh bnMgbVYJUHJlLWVtcGggZEIgKi8KKwl7IDB4NywgMHgwLCAweDAwIH0sCS8qIDAJMAk0MDBtVgkJ MCBkQiAqLworCXsgMHg1LCAweDAsIDB4MDUgfSwJLyogMAkxCTQwMG1WCQkzLjUgZEIgKi8KKwl7 IDB4MiwgMHgwLCAweDBCIH0sCS8qIDAJMgk0MDBtVgkJNiBkQiAqLworCXsgMHgwLCAweDAsIDB4 MTkgfSwJLyogMAkzCTQwMG1WCQk5LjUgZEIgKi8KKwl7IDB4NSwgMHgwLCAweDAwIH0sCS8qIDEJ MAk2MDBtVgkJMCBkQiAqLworCXsgMHgyLCAweDAsIDB4MDggfSwJLyogMQkxCTYwMG1WCQkzLjUg ZEIgKi8KKwl7IDB4MCwgMHgwLCAweDE0IH0sCS8qIDEJMgk2MDBtVgkJNiBkQiAqLworCXsgMHgy LCAweDAsIDB4MDAgfSwJLyogMgkwCTgwMG1WCQkwIGRCICovCisJeyAweDAsIDB4MCwgMHgwQiB9 LAkvKiAyCTEJODAwbVYJCTMuNSBkQiAqLworCXsgMHgwLCAweDAsIDB4MDAgfSwJLyogMwkwCTEy MDBtVgkJMCBkQiBIRE1JIGRlZmF1bHQgKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdGds X2RrbF9waHlfZGRpX2J1Zl90cmFucyB0Z2xfZGtsX3BoeV9oZG1pX2RkaV90cmFuc1tdID0gewor CQkJCS8qIEhETUkgUHJlc2V0CVZTCVByZS1lbXBoICovCisJeyAweDcsIDB4MCwgMHgwIH0sCS8q IDEJCTQwMG1WCTBkQiAqLworCXsgMHg2LCAweDAsIDB4MCB9LAkvKiAyCQk1MDBtVgkwZEIgKi8K Kwl7IDB4NCwgMHgwLCAweDAgfSwJLyogMwkJNjUwbVYJMGRCICovCisJeyAweDIsIDB4MCwgMHgw IH0sCS8qIDQJCTgwMG1WCTBkQiAqLworCXsgMHgwLCAweDAsIDB4MCB9LAkvKiA1CQkxMDAwbVYJ MGRCICovCisJeyAweDAsIDB4MCwgMHg1IH0sCS8qIDYJCUZ1bGwJLTEuNSBkQiAqLworCXsgMHgw LCAweDAsIDB4NiB9LAkvKiA3CQlGdWxsCS0xLjggZEIgKi8KKwl7IDB4MCwgMHgwLCAweDcgfSwJ LyogOAkJRnVsbAktMiBkQiAqLworCXsgMHgwLCAweDAsIDB4OCB9LAkvKiA5CQlGdWxsCS0yLjUg ZEIgKi8KKwl7IDB4MCwgMHgwLCAweEEgfSwJLyogMTAJCUZ1bGwJLTMgZEIgKi8KK307CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgdGdsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2RwX2hicltdID0geworCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAgKi8K Kwl7IDB4QSwgMHgzMiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAwLjAg ICAqLworCXsgMHhBLCAweDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDM1MCAgIDUwMCAgICAg IDMuMSAgICovCisJeyAweEMsIDB4NzEsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogMzUwICAgNzAw ICAgICAgNi4wICAgKi8KKwl7IDB4NiwgMHg3RCwgMHgyQiwgMHgwMCwgMHgxNCB9LAkvKiAzNTAg ICA5MDAgICAgICA4LjIgICAqLworCXsgMHhBLCAweDRDLCAweDNGLCAweDAwLCAweDAwIH0sCS8q IDUwMCAgIDUwMCAgICAgIDAuMCAgICovCisJeyAweEMsIDB4NzMsIDB4MzQsIDB4MDAsIDB4MEIg fSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgyRiwgMHgwMCwg MHgxMCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLworCXsgMHhDLCAweDZDLCAweDNDLCAw eDAwLCAweDAzIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCisJeyAweDYsIDB4N0YsIDB4 MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KKwl7IDB4NiwgMHg3 RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLworfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyB0Z2xfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfZHBfaGJyMltdID0geworCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYgZGIgICAg Ki8KKwl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAgICAgICAw LjAgICAqLworCXsgMHhBLCAweDRGLCAweDM3LCAweDAwLCAweDA4IH0sCS8qIDM1MCAgIDUwMCAg ICAgIDMuMSAgICovCisJeyAweEMsIDB4NjMsIDB4MkYsIDB4MDAsIDB4MTAgfSwJLyogMzUwICAg NzAwICAgICAgNi4wICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgyQiwgMHgwMCwgMHgxNCB9LAkvKiAz NTAgICA5MDAgICAgICA4LjIgICAqLworCXsgMHhBLCAweDQ3LCAweDNGLCAweDAwLCAweDAwIH0s CS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCisJeyAweEMsIDB4NjMsIDB4MzQsIDB4MDAsIDB4 MEIgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KKwl7IDB4NiwgMHg3RiwgMHgyRiwgMHgw MCwgMHgxMCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLworCXsgMHhDLCAweDYxLCAweDND LCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCisJeyAweDYsIDB4N0Is IDB4MzUsIDB4MDAsIDB4MEEgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KKwl7IDB4Niwg MHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAqLworfTsK Kworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyB0Z2xfdXlfY29tYm9fcGh5 X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMltdID0geworCQkJCQkJLyogTlQgbVYgVHJhbnMgbVYg ZGIgICAgKi8KKwl7IDB4QSwgMHgzNSwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiAzNTAgICAzNTAg ICAgICAwLjAgICAqLworCXsgMHhBLCAweDRGLCAweDM2LCAweDAwLCAweDA5IH0sCS8qIDM1MCAg IDUwMCAgICAgIDMuMSAgICovCisJeyAweEMsIDB4NjAsIDB4MzIsIDB4MDAsIDB4MEQgfSwJLyog MzUwICAgNzAwICAgICAgNi4wICAgKi8KKwl7IDB4QywgMHg3RiwgMHgyRCwgMHgwMCwgMHgxMiB9 LAkvKiAzNTAgICA5MDAgICAgICA4LjIgICAqLworCXsgMHhDLCAweDQ3LCAweDNGLCAweDAwLCAw eDAwIH0sCS8qIDUwMCAgIDUwMCAgICAgIDAuMCAgICovCisJeyAweEMsIDB4NkYsIDB4MzYsIDB4 MDAsIDB4MDkgfSwJLyogNTAwICAgNzAwICAgICAgMi45ICAgKi8KKwl7IDB4NiwgMHg3RCwgMHgz MiwgMHgwMCwgMHgwRCB9LAkvKiA1MDAgICA5MDAgICAgICA1LjEgICAqLworCXsgMHg2LCAweDYw LCAweDNDLCAweDAwLCAweDAzIH0sCS8qIDY1MCAgIDcwMCAgICAgIDAuNiAgICovCisJeyAweDYs IDB4N0YsIDB4MzQsIDB4MDAsIDB4MEIgfSwJLyogNjAwICAgOTAwICAgICAgMy41ICAgKi8KKwl7 IDB4NiwgMHg3RiwgMHgzRiwgMHgwMCwgMHgwMCB9LAkvKiA5MDAgICA5MDAgICAgICAwLjAgICAq LworfTsKKworLyoKKyAqIENsb25lZCB0aGUgSE9CTCBlbnRyeSB0byBjb21wbHkgd2l0aCB0aGUg dm9sdGFnZSBhbmQgcHJlLWVtcGhhc2lzIGVudHJpZXMKKyAqIHRoYXQgRGlzcGxheVBvcnQgc3Bl Y2lmaWNhdGlvbiByZXF1aXJlcworICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVm X3RyYW5zIHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMl9ob2JsW10gPSB7 CisJCQkJCQkvKiBWUwlwcmUtZW1wCSovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAg fSwJLyogMAkwCSovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMAkxCSov CisJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMAkyCSovCisJeyAweDYsIDB4 N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMAkzCSovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4 MDAsIDB4MDAgfSwJLyogMQkwCSovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJ LyogMQkxCSovCisJeyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMQkyCSovCisJ eyAweDYsIDB4N0YsIDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMgkwCSovCisJeyAweDYsIDB4N0Ys IDB4M0YsIDB4MDAsIDB4MDAgfSwJLyogMgkxCSovCit9OworCitib29sIGlzX2hvYmxfYnVmX3Ry YW5zKGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqdGFibGUpCit7CisJcmV0dXJuIHRh YmxlID09IHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMl9ob2JsOworfQor Citjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitiZHdfZ2V0X2J1Zl90cmFuc19lZHAoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQoreworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwor CisJaWYgKGRldl9wcml2LT52YnQuZWRwLmxvd192c3dpbmcpIHsKKwkJKm5fZW50cmllcyA9IEFS UkFZX1NJWkUoYmR3X2RkaV90cmFuc2xhdGlvbnNfZWRwKTsKKwkJcmV0dXJuIGJkd19kZGlfdHJh bnNsYXRpb25zX2VkcDsKKwl9IGVsc2UgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShiZHdf ZGRpX3RyYW5zbGF0aW9uc19kcCk7CisJCXJldHVybiBiZHdfZGRpX3RyYW5zbGF0aW9uc19kcDsK Kwl9Cit9CisKK2NvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoKK3NrbF9nZXRfYnVmX3RyYW5z X2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2Uu ZGV2KTsKKworCWlmIChJU19TS0xfVUxYKGRldl9wcml2KSkgeworCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShza2xfeV9kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0dXJuIHNrbF95X2RkaV90 cmFuc2xhdGlvbnNfZHA7CisJfSBlbHNlIGlmIChJU19TS0xfVUxUKGRldl9wcml2KSkgeworCQkq bl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfdV9kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0 dXJuIHNrbF91X2RkaV90cmFuc2xhdGlvbnNfZHA7CisJfSBlbHNlIHsKKwkJKm5fZW50cmllcyA9 IEFSUkFZX1NJWkUoc2tsX2RkaV90cmFuc2xhdGlvbnNfZHApOworCQlyZXR1cm4gc2tsX2RkaV90 cmFuc2xhdGlvbnNfZHA7CisJfQorfQorCitjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitr YmxfZ2V0X2J1Zl90cmFuc19kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpu X2VudHJpZXMpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShlbmNvZGVyLT5iYXNlLmRldik7CisKKwlpZiAoSVNfS0JMX1VMWChkZXZfcHJpdikgfHwKKwkg ICAgSVNfQ0ZMX1VMWChkZXZfcHJpdikgfHwKKwkgICAgSVNfQ01MX1VMWChkZXZfcHJpdikpIHsK KwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoa2JsX3lfZGRpX3RyYW5zbGF0aW9uc19kcCk7CisJ CXJldHVybiBrYmxfeV9kZGlfdHJhbnNsYXRpb25zX2RwOworCX0gZWxzZSBpZiAoSVNfS0JMX1VM VChkZXZfcHJpdikgfHwKKwkJICAgSVNfQ0ZMX1VMVChkZXZfcHJpdikgfHwKKwkJICAgSVNfQ01M X1VMVChkZXZfcHJpdikpIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoa2JsX3VfZGRpX3Ry YW5zbGF0aW9uc19kcCk7CisJCXJldHVybiBrYmxfdV9kZGlfdHJhbnNsYXRpb25zX2RwOworCX0g ZWxzZSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGtibF9kZGlfdHJhbnNsYXRpb25zX2Rw KTsKKwkJcmV0dXJuIGtibF9kZGlfdHJhbnNsYXRpb25zX2RwOworCX0KK30KKworY29uc3Qgc3Ry dWN0IGRkaV9idWZfdHJhbnMgKgorc2tsX2dldF9idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKworCWlmIChkZXZf cHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7CisJCWlmIChJU19TS0xfVUxYKGRldl9wcml2KSB8 fAorCQkgICAgSVNfS0JMX1VMWChkZXZfcHJpdikgfHwKKwkJICAgIElTX0NGTF9VTFgoZGV2X3By aXYpIHx8CisJCSAgICBJU19DTUxfVUxYKGRldl9wcml2KSkgeworCQkJKm5fZW50cmllcyA9IEFS UkFZX1NJWkUoc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19lZHApOworCQkJcmV0dXJuIHNrbF95X2Rk aV90cmFuc2xhdGlvbnNfZWRwOworCQl9IGVsc2UgaWYgKElTX1NLTF9VTFQoZGV2X3ByaXYpIHx8 CisJCQkgICBJU19LQkxfVUxUKGRldl9wcml2KSB8fAorCQkJICAgSVNfQ0ZMX1VMVChkZXZfcHJp dikgfHwKKwkJCSAgIElTX0NNTF9VTFQoZGV2X3ByaXYpKSB7CisJCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShza2xfdV9kZGlfdHJhbnNsYXRpb25zX2VkcCk7CisJCQlyZXR1cm4gc2tsX3VfZGRp X3RyYW5zbGF0aW9uc19lZHA7CisJCX0gZWxzZSB7CisJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0la RShza2xfZGRpX3RyYW5zbGF0aW9uc19lZHApOworCQkJcmV0dXJuIHNrbF9kZGlfdHJhbnNsYXRp b25zX2VkcDsKKwkJfQorCX0KKworCWlmIChJU19LQUJZTEFLRShkZXZfcHJpdikgfHwKKwkgICAg SVNfQ09GRkVFTEFLRShkZXZfcHJpdikgfHwKKwkgICAgSVNfQ09NRVRMQUtFKGRldl9wcml2KSkK KwkJcmV0dXJuIGtibF9nZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50cmllcyk7CisJZWxz ZQorCQlyZXR1cm4gc2tsX2dldF9idWZfdHJhbnNfZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsKK30K KworY29uc3Qgc3RydWN0IGRkaV9idWZfdHJhbnMgKgorc2tsX2dldF9idWZfdHJhbnNfaGRtaShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCAqbl9lbnRyaWVzKQoreworCWlm IChJU19TS0xfVUxYKGRldl9wcml2KSB8fAorCSAgICBJU19LQkxfVUxYKGRldl9wcml2KSB8fAor CSAgICBJU19DRkxfVUxYKGRldl9wcml2KSB8fAorCSAgICBJU19DTUxfVUxYKGRldl9wcml2KSkg eworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShza2xfeV9kZGlfdHJhbnNsYXRpb25zX2hkbWkp OworCQlyZXR1cm4gc2tsX3lfZGRpX3RyYW5zbGF0aW9uc19oZG1pOworCX0gZWxzZSB7CisJCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKHNrbF9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOworCQlyZXR1 cm4gc2tsX2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKKwl9Cit9CisKK2ludCBza2xfYnVmX3RyYW5z X251bV9lbnRyaWVzKGVudW0gcG9ydCBwb3J0LCBpbnQgbl9lbnRyaWVzKQoreworCS8qIE9ubHkg RERJQSBhbmQgRERJRSBjYW4gc2VsZWN0IHRoZSAxMHRoIHJlZ2lzdGVyIHdpdGggRFAgKi8KKwlp ZiAocG9ydCA9PSBQT1JUX0EgfHwgcG9ydCA9PSBQT1JUX0UpCisJCXJldHVybiBtaW4obl9lbnRy aWVzLCAxMCk7CisJZWxzZQorCQlyZXR1cm4gbWluKG5fZW50cmllcywgOSk7Cit9CisKK2NvbnN0 IHN0cnVjdCBkZGlfYnVmX3RyYW5zICoKK2ludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2RwKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKwor CWlmIChJU19LQUJZTEFLRShkZXZfcHJpdikgfHwKKwkgICAgSVNfQ09GRkVFTEFLRShkZXZfcHJp dikgfHwKKwkgICAgSVNfQ09NRVRMQUtFKGRldl9wcml2KSkgeworCQljb25zdCBzdHJ1Y3QgZGRp X2J1Zl90cmFucyAqZGRpX3RyYW5zbGF0aW9ucyA9CisJCQlrYmxfZ2V0X2J1Zl90cmFuc19kcChl bmNvZGVyLCBuX2VudHJpZXMpOworCQkqbl9lbnRyaWVzID0gc2tsX2J1Zl90cmFuc19udW1fZW50 cmllcyhlbmNvZGVyLT5wb3J0LCAqbl9lbnRyaWVzKTsKKwkJcmV0dXJuIGRkaV90cmFuc2xhdGlv bnM7CisJfSBlbHNlIGlmIChJU19TS1lMQUtFKGRldl9wcml2KSkgeworCQljb25zdCBzdHJ1Y3Qg ZGRpX2J1Zl90cmFucyAqZGRpX3RyYW5zbGF0aW9ucyA9CisJCQlza2xfZ2V0X2J1Zl90cmFuc19k cChlbmNvZGVyLCBuX2VudHJpZXMpOworCQkqbl9lbnRyaWVzID0gc2tsX2J1Zl90cmFuc19udW1f ZW50cmllcyhlbmNvZGVyLT5wb3J0LCAqbl9lbnRyaWVzKTsKKwkJcmV0dXJuIGRkaV90cmFuc2xh dGlvbnM7CisJfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7CisJCSpuX2VudHJp ZXMgPSBBUlJBWV9TSVpFKGJkd19kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0dXJuICBiZHdf ZGRpX3RyYW5zbGF0aW9uc19kcDsKKwl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7 CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGhzd19kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJ cmV0dXJuIGhzd19kZGlfdHJhbnNsYXRpb25zX2RwOworCX0KKworCSpuX2VudHJpZXMgPSAwOwor CXJldHVybiBOVUxMOworfQorCitjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitpbnRlbF9k ZGlfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAq bl9lbnRyaWVzKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCisJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7CisJ CWNvbnN0IHN0cnVjdCBkZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25zID0KKwkJCXNrbF9n ZXRfYnVmX3RyYW5zX2VkcChlbmNvZGVyLCBuX2VudHJpZXMpOworCQkqbl9lbnRyaWVzID0gc2ts X2J1Zl90cmFuc19udW1fZW50cmllcyhlbmNvZGVyLT5wb3J0LCAqbl9lbnRyaWVzKTsKKwkJcmV0 dXJuIGRkaV90cmFuc2xhdGlvbnM7CisJfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYp KSB7CisJCXJldHVybiBiZHdfZ2V0X2J1Zl90cmFuc19lZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsK Kwl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7CisJCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKGhzd19kZGlfdHJhbnNsYXRpb25zX2RwKTsKKwkJcmV0dXJuIGhzd19kZGlfdHJhbnNs YXRpb25zX2RwOworCX0KKworCSpuX2VudHJpZXMgPSAwOworCXJldHVybiBOVUxMOworfQorCitj b25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19mZGko c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgIGludCAqbl9lbnRyaWVz KQoreworCWlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7CisJCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKGJkd19kZGlfdHJhbnNsYXRpb25zX2ZkaSk7CisJCXJldHVybiBiZHdfZGRpX3RyYW5z bGF0aW9uc19mZGk7CisJfSBlbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgeworCQkqbl9l bnRyaWVzID0gQVJSQVlfU0laRShoc3dfZGRpX3RyYW5zbGF0aW9uc19mZGkpOworCQlyZXR1cm4g aHN3X2RkaV90cmFuc2xhdGlvbnNfZmRpOworCX0KKworCSpuX2VudHJpZXMgPSAwOworCXJldHVy biBOVUxMOworfQorCitjb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqCitpbnRlbF9kZGlfZ2V0 X2J1Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgICBp bnQgKm5fZW50cmllcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKKworCWlmIChJU19HRU45X0JDKGRldl9wcml2KSkg eworCQlyZXR1cm4gc2tsX2dldF9idWZfdHJhbnNfaGRtaShkZXZfcHJpdiwgbl9lbnRyaWVzKTsK Kwl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKKwkJKm5fZW50cmllcyA9IEFS UkFZX1NJWkUoYmR3X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7CisJCXJldHVybiBiZHdfZGRpX3Ry YW5zbGF0aW9uc19oZG1pOworCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKKwkJ Km5fZW50cmllcyA9IEFSUkFZX1NJWkUoaHN3X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7CisJCXJl dHVybiBoc3dfZGRpX3RyYW5zbGF0aW9uc19oZG1pOworCX0KKworCSpuX2VudHJpZXMgPSAwOwor CXJldHVybiBOVUxMOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5z ICoKK2J4dF9nZXRfYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCBp bnQgKm5fZW50cmllcykKK3sKKwkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShieHRfZGRpX3RyYW5z bGF0aW9uc19kcCk7CisJcmV0dXJuIGJ4dF9kZGlfdHJhbnNsYXRpb25zX2RwOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVmX3RyYW5zICoKK2J4dF9nZXRfYnVmX3RyYW5zX2Vk cChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRl dik7CisKKwlpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgeworCQkqbl9lbnRyaWVz ID0gQVJSQVlfU0laRShieHRfZGRpX3RyYW5zbGF0aW9uc19lZHApOworCQlyZXR1cm4gYnh0X2Rk aV90cmFuc2xhdGlvbnNfZWRwOworCX0KKworCXJldHVybiBieHRfZ2V0X2J1Zl90cmFuc19kcChl bmNvZGVyLCBuX2VudHJpZXMpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGJ4dF9kZGlfYnVm X3RyYW5zICoKK2J4dF9nZXRfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsIGludCAqbl9lbnRyaWVzKQoreworCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGJ4dF9k ZGlfdHJhbnNsYXRpb25zX2hkbWkpOworCXJldHVybiBieHRfZGRpX3RyYW5zbGF0aW9uc19oZG1p OworfQorCitjb25zdCBzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgKgorYnh0X2dldF9idWZfdHJh bnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCSAgY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCSAgaW50ICpuX2VudHJpZXMpCit7CisJaWYgKGlu dGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hETUkpKQorCQlyZXR1 cm4gYnh0X2dldF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBuX2VudHJpZXMpOworCWlmIChpbnRl bF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQorCQlyZXR1cm4g Ynh0X2dldF9idWZfdHJhbnNfZWRwKGVuY29kZXIsIG5fZW50cmllcyk7CisJcmV0dXJuIGJ4dF9n ZXRfYnVmX3RyYW5zX2RwKGVuY29kZXIsIG5fZW50cmllcyk7Cit9CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgorY25sX2dldF9idWZfdHJhbnNfaGRtaShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCit7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJdTMy IHZvbHRhZ2UgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBDTkxfUE9SVF9DT01QX0RXMykgJiBW T0xUQUdFX0lORk9fTUFTSzsKKworCWlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzg1Vikg eworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19oZG1pXzBf ODVWKTsKKwkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF84NVY7CisJfSBlbHNl IGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzk1VikgeworCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19oZG1pXzBfOTVWKTsKKwkJcmV0dXJuIGNubF9k ZGlfdHJhbnNsYXRpb25zX2hkbWlfMF85NVY7CisJfSBlbHNlIGlmICh2b2x0YWdlID09IFZPTFRB R0VfSU5GT18xXzA1VikgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5z bGF0aW9uc19oZG1pXzFfMDVWKTsKKwkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlf MV8wNVY7CisJfSBlbHNlIHsKKwkJKm5fZW50cmllcyA9IDE7IC8qIHNodXQgdXAgZ2NjICovCisJ CU1JU1NJTkdfQ0FTRSh2b2x0YWdlKTsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgorY25sX2dldF9idWZfdHJhbnNfZHAoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQoreworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwor CXUzMiB2b2x0YWdlID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgQ05MX1BPUlRfQ09NUF9EVzMp ICYgVk9MVEFHRV9JTkZPX01BU0s7CisKKwlpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMF84 NVYpIHsKKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZHBf MF84NVYpOworCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF84NVY7CisJfSBlbHNl IGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzk1VikgeworCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzk1Vik7CisJCXJldHVybiBjbmxfZGRp X3RyYW5zbGF0aW9uc19kcF8wXzk1VjsKKwl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9J TkZPXzFfMDVWKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRp b25zX2RwXzFfMDVWKTsKKwkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2RwXzFfMDVWOwor CX0gZWxzZSB7CisJCSpuX2VudHJpZXMgPSAxOyAvKiBzaHV0IHVwIGdjYyAqLworCQlNSVNTSU5H X0NBU0Uodm9sdGFnZSk7CisJfQorCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2NubF9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwgaW50ICpuX2VudHJpZXMpCit7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJdTMyIHZv bHRhZ2UgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBDTkxfUE9SVF9DT01QX0RXMykgJiBWT0xU QUdFX0lORk9fTUFTSzsKKworCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7CisJ CWlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzg1VikgeworCQkJKm5fZW50cmllcyA9IEFS UkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfODVWKTsKKwkJCXJldHVybiBjbmxf ZGRpX3RyYW5zbGF0aW9uc19lZHBfMF84NVY7CisJCX0gZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xU QUdFX0lORk9fMF85NVYpIHsKKwkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJh bnNsYXRpb25zX2VkcF8wXzk1Vik7CisJCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZWRw XzBfOTVWOworCQl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzFfMDVWKSB7CisJ CQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMV8wNVYp OworCQkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1VjsKKwkJfSBlbHNlIHsK KwkJCSpuX2VudHJpZXMgPSAxOyAvKiBzaHV0IHVwIGdjYyAqLworCQkJTUlTU0lOR19DQVNFKHZv bHRhZ2UpOworCQl9CisJCXJldHVybiBOVUxMOworCX0gZWxzZSB7CisJCXJldHVybiBjbmxfZ2V0 X2J1Zl90cmFuc19kcChlbmNvZGVyLCBuX2VudHJpZXMpOworCX0KK30KKworY29uc3Qgc3RydWN0 IGNubF9kZGlfYnVmX3RyYW5zICoKK2NubF9nZXRfYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAorCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAorCQkgIGludCAqbl9lbnRyaWVzKQoreworCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNy dGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKKwkJcmV0dXJuIGNubF9nZXRfYnVmX3RyYW5z X2hkbWkoZW5jb2Rlciwgbl9lbnRyaWVzKTsKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRj X3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKKwkJcmV0dXJuIGNubF9nZXRfYnVmX3RyYW5zX2Vk cChlbmNvZGVyLCBuX2VudHJpZXMpOworCXJldHVybiBjbmxfZ2V0X2J1Zl90cmFuc19kcChlbmNv ZGVyLCBuX2VudHJpZXMpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3Ry YW5zICoKK2ljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAorCQkJICAgICBpbnQgKm5fZW50cmllcykKK3sKKwkqbl9lbnRyaWVzID0gQVJSQVlfU0la RShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaSk7CisJcmV0dXJuIGljbF9jb21i b19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNu bF9kZGlfYnVmX3RyYW5zICoKK2ljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCisJCQkgICBpbnQgKm5fZW50cmllcykKK3sKKwkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMik7CisJcmV0dXJu IGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2ljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2Vk cChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICBjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICBpbnQgKm5fZW50cmllcykKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2Uu ZGV2KTsKKworCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gNTQwMDAwKSB7CisJCSpuX2Vu dHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJy Myk7CisJCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjM7CisJ fSBlbHNlIGlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7CisJCSpuX2VudHJpZXMg PSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfaGJyMik7CisJ CXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjI7CisJfQorCisJ cmV0dXJuIGljbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5f ZW50cmllcyk7Cit9CisKK2NvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCitpY2xfZ2V0 X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCWNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJaW50ICpuX2VudHJpZXMp Cit7CisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hE TUkpKQorCQlyZXR1cm4gaWNsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRj X3N0YXRlLCBuX2VudHJpZXMpOworCWVsc2UgaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19z dGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCisJCXJldHVybiBpY2xfZ2V0X2NvbWJvX2J1Zl90cmFu c19lZHAoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKKwllbHNlCisJCXJldHVybiBp Y2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMp OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGljbF9tZ19waHlfZGRpX2J1Zl90cmFucyAqCitp Y2xfZ2V0X21nX2J1Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAor CQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgaW50 ICpuX2VudHJpZXMpCit7CisJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX21nX3BoeV9kZGlf dHJhbnNsYXRpb25zX2hkbWkpOworCXJldHVybiBpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNf aGRtaTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMg KgoraWNsX2dldF9tZ19idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs CisJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCWludCAq bl9lbnRyaWVzKQoreworCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gMjcwMDAwKSB7CisJ CSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9tZ19waHlfZGRpX3RyYW5zbGF0aW9uc19oYnIy X2hicjMpOworCQlyZXR1cm4gaWNsX21nX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hicjJfaGJyMzsK Kwl9IGVsc2UgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfbWdfcGh5X2RkaV90cmFu c2xhdGlvbnNfcmJyX2hicik7CisJCXJldHVybiBpY2xfbWdfcGh5X2RkaV90cmFuc2xhdGlvbnNf cmJyX2hicjsKKwl9Cit9CisKK2NvbnN0IHN0cnVjdCBpY2xfbWdfcGh5X2RkaV9idWZfdHJhbnMg KgoraWNsX2dldF9tZ19idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJ CSAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCSAgICAg aW50ICpuX2VudHJpZXMpCit7CisJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwg SU5URUxfT1VUUFVUX0hETUkpKQorCQlyZXR1cm4gaWNsX2dldF9tZ19idWZfdHJhbnNfaGRtaShl bmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworCWVsc2UKKwkJcmV0dXJuIGljbF9nZXRf bWdfYnVmX3RyYW5zX2RwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7Cit9CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgorZWhsX2dldF9jb21ib19idWZf dHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICAgY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkgICAgIGludCAqbl9lbnRy aWVzKQoreworCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5z bGF0aW9uc19oZG1pKTsKKwlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hk bWk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgorZWhsX2dl dF9jb21ib19idWZfdHJhbnNfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgIGludCAq bl9lbnRyaWVzKQoreworCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGVobF9jb21ib19waHlfZGRp X3RyYW5zbGF0aW9uc19kcCk7CisJcmV0dXJuIGVobF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9u c19kcDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCitlaGxf Z2V0X2NvbWJvX2J1Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJ CQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkgICAg aW50ICpuX2VudHJpZXMpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisKKwlpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93 X3Zzd2luZykgeworCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfZWRwX2hicjIpOworCQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNs YXRpb25zX2VkcF9oYnIyOworCX0KKworCXJldHVybiBlaGxfZ2V0X2NvbWJvX2J1Zl90cmFuc19k cChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworfQorCitjb25zdCBzdHJ1Y3QgY25s X2RkaV9idWZfdHJhbnMgKgorZWhsX2dldF9jb21ib19idWZfdHJhbnMoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCisJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKKwkJCWludCAqbl9lbnRyaWVzKQoreworCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNy dGNfc3RhdGUsIElOVEVMX09VVFBVVF9IRE1JKSkKKwkJcmV0dXJuIGVobF9nZXRfY29tYm9fYnVm X3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKKwllbHNlIGlmIChp bnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQorCQlyZXR1 cm4gZWhsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50 cmllcyk7CisJZWxzZQorCQlyZXR1cm4gZWhsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5jb2Rl ciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxf ZGRpX2J1Zl90cmFucyAqCitqc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICAgaW50ICpuX2VudHJpZXMpCit7CisJKm5fZW50cmllcyA9 IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWkpOworCXJldHVy biBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfaGRtaTsKK30KKworc3RhdGljIGNvbnN0 IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCitqc2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAgaW50ICpuX2VudHJpZXMpCit7CisJKm5fZW50 cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjIp OworCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMjsKK30KKwor c3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCitqc2xfZ2V0X2NvbWJvX2J1 Zl90cmFuc19lZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkgICAgaW50ICpuX2VudHJp ZXMpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNv ZGVyLT5iYXNlLmRldik7CisKKwlpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgewor CQlpZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDI3MDAwMCkgeworCQkJKm5fZW50cmllcyA9 IEFSUkFZX1NJWkUoanNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIyKTsKKwkJ CXJldHVybiBqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjI7CisJCX0gZWxz ZSB7CisJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShqc2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZWRwX2hicik7CisJCQlyZXR1cm4ganNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25z X2VkcF9oYnI7CisJCX0KKwl9CisKKwlyZXR1cm4ganNsX2dldF9jb21ib19idWZfdHJhbnNfZHAo ZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKK30KKworY29uc3Qgc3RydWN0IGNubF9k ZGlfYnVmX3RyYW5zICoKK2pzbF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAorCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCisJCQlpbnQgKm5fZW50cmllcykKK3sKKwlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRj X3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCisJCXJldHVybiBqc2xfZ2V0X2NvbWJvX2J1Zl90 cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7CisJZWxzZSBpZiAoaW50 ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQKSkKKwkJcmV0dXJu IGpzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2VkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2VudHJp ZXMpOworCWVsc2UKKwkJcmV0dXJuIGpzbF9nZXRfY29tYm9fYnVmX3RyYW5zX2RwKGVuY29kZXIs IGNydGNfc3RhdGUsIG5fZW50cmllcyk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2Rk aV9idWZfdHJhbnMgKgordGdsX2dldF9jb21ib19idWZfdHJhbnNfaGRtaShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKKwkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCisJCQkgICAgIGludCAqbl9lbnRyaWVzKQoreworCSpuX2VudHJpZXMgPSBB UlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19oZG1pKTsKKwlyZXR1cm4g aWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2hkbWk7Cit9CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgordGdsX2dldF9jb21ib19idWZfdHJhbnNfZHAoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgIGludCAqbl9lbnRyaWVzKQoreworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwor CisJaWYgKGNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPiAyNzAwMDApIHsKKwkJaWYgKElTX1RHTF9V KGRldl9wcml2KSB8fCBJU19UR0xfWShkZXZfcHJpdikpIHsKKwkJCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKHRnbF91eV9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIyKTsKKwkJCXJl dHVybiB0Z2xfdXlfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGJyMjsKKwkJfSBlbHNl IHsKKwkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19kcF9oYnIyKTsKKwkJCXJldHVybiB0Z2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZHBfaGJyMjsKKwkJfQorCX0gZWxzZSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9j b21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oYnIpOworCQlyZXR1cm4gdGdsX2NvbWJvX3Bo eV9kZGlfdHJhbnNsYXRpb25zX2RwX2hicjsKKwl9Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg Y25sX2RkaV9idWZfdHJhbnMgKgordGdsX2dldF9jb21ib19idWZfdHJhbnNfZWRwKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAorCQkJICAgIGludCAqbl9lbnRyaWVzKQoreworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOworCXN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7CisKKwlp ZiAoY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA+IDU0MDAwMCkgeworCQkqbl9lbnRyaWVzID0gQVJS QVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwX2hicjMpOworCQlyZXR1 cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9oYnIzOworCX0gZWxzZSBpZiAo ZGV2X3ByaXYtPnZidC5lZHAuaG9ibCAmJiAhaW50ZWxfZHAtPmhvYmxfZmFpbGVkKSB7CisJCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBf aGJyMl9ob2JsKTsKKwkJcmV0dXJuIHRnbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBf aGJyMl9ob2JsOworCX0gZWxzZSBpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgewor CQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZWRwX2hicjIpOworCQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF9o YnIyOworCX0KKworCXJldHVybiB0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFuc19kcChlbmNvZGVyLCBj cnRjX3N0YXRlLCBuX2VudHJpZXMpOworfQorCitjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJh bnMgKgordGdsX2dldF9jb21ib19idWZfdHJhbnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCisJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCWlu dCAqbl9lbnRyaWVzKQoreworCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElO VEVMX09VVFBVVF9IRE1JKSkKKwkJcmV0dXJuIHRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWko ZW5jb2RlciwgY3J0Y19zdGF0ZSwgbl9lbnRyaWVzKTsKKwllbHNlIGlmIChpbnRlbF9jcnRjX2hh c190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQorCQlyZXR1cm4gdGdsX2dldF9j b21ib19idWZfdHJhbnNfZWRwKGVuY29kZXIsIGNydGNfc3RhdGUsIG5fZW50cmllcyk7CisJZWxz ZQorCQlyZXR1cm4gdGdsX2dldF9jb21ib19idWZfdHJhbnNfZHAoZW5jb2RlciwgY3J0Y19zdGF0 ZSwgbl9lbnRyaWVzKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB0Z2xfZGtsX3BoeV9kZGlf YnVmX3RyYW5zICoKK3RnbF9nZXRfZGtsX2J1Zl90cmFuc19oZG1pKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAorCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCisJCQkgICBpbnQgKm5fZW50cmllcykKK3sKKwkqbl9lbnRyaWVzID0gQVJSQVlfU0la RSh0Z2xfZGtsX3BoeV9oZG1pX2RkaV90cmFucyk7CisJcmV0dXJuIHRnbF9ka2xfcGh5X2hkbWlf ZGRpX3RyYW5zOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHRnbF9ka2xfcGh5X2RkaV9idWZf dHJhbnMgKgordGdsX2dldF9ka2xfYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAorCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAor CQkJIGludCAqbl9lbnRyaWVzKQoreworCWlmIChjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID4gMjcw MDAwKSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9ka2xfcGh5X2RwX2RkaV90cmFu c19oYnIyKTsKKwkJcmV0dXJuIHRnbF9ka2xfcGh5X2RwX2RkaV90cmFuc19oYnIyOworCX0gZWxz ZSB7CisJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRnbF9ka2xfcGh5X2RwX2RkaV90cmFucyk7 CisJCXJldHVybiB0Z2xfZGtsX3BoeV9kcF9kZGlfdHJhbnM7CisJfQorfQorCitjb25zdCBzdHJ1 Y3QgdGdsX2RrbF9waHlfZGRpX2J1Zl90cmFucyAqCit0Z2xfZ2V0X2RrbF9idWZfdHJhbnMoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkgICAgICBpbnQgKm5fZW50cmllcykKK3sKKwlpZiAo aW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkpCisJCXJl dHVybiB0Z2xfZ2V0X2RrbF9idWZfdHJhbnNfaGRtaShlbmNvZGVyLCBjcnRjX3N0YXRlLCBuX2Vu dHJpZXMpOworCWVsc2UKKwkJcmV0dXJuIHRnbF9nZXRfZGtsX2J1Zl90cmFuc19kcChlbmNvZGVy LCBjcnRjX3N0YXRlLCBuX2VudHJpZXMpOworfQorCitpbnQgaW50ZWxfZGRpX2hkbWlfbnVtX2Vu dHJpZXMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgICAgY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkgICAgICAgaW50ICpkZWZhdWx0 X2VudHJ5KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZW5jb2Rlci0+YmFzZS5kZXYpOworCWVudW0gcGh5IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGRl dl9wcml2LCBlbmNvZGVyLT5wb3J0KTsKKwlpbnQgbl9lbnRyaWVzOworCisJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gMTIpIHsKKwkJaWYgKGludGVsX3BoeV9pc19jb21ibyhkZXZfcHJpdiwg cGh5KSkKKwkJCXRnbF9nZXRfY29tYm9fYnVmX3RyYW5zX2hkbWkoZW5jb2RlciwgY3J0Y19zdGF0 ZSwgJm5fZW50cmllcyk7CisJCWVsc2UKKwkJCXRnbF9nZXRfZGtsX2J1Zl90cmFuc19oZG1pKGVu Y29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJpZXMpOworCQkqZGVmYXVsdF9lbnRyeSA9IG5fZW50 cmllcyAtIDE7CisJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID09IDExKSB7CisJCWlm IChpbnRlbF9waHlfaXNfY29tYm8oZGV2X3ByaXYsIHBoeSkpCisJCQlpY2xfZ2V0X2NvbWJvX2J1 Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJpZXMpOworCQllbHNlCisJ CQlpY2xfZ2V0X21nX2J1Zl90cmFuc19oZG1pKGVuY29kZXIsIGNydGNfc3RhdGUsICZuX2VudHJp ZXMpOworCQkqZGVmYXVsdF9lbnRyeSA9IG5fZW50cmllcyAtIDE7CisJfSBlbHNlIGlmIChJU19D QU5OT05MQUtFKGRldl9wcml2KSkgeworCQljbmxfZ2V0X2J1Zl90cmFuc19oZG1pKGVuY29kZXIs ICZuX2VudHJpZXMpOworCQkqZGVmYXVsdF9lbnRyeSA9IG5fZW50cmllcyAtIDE7CisJfSBlbHNl IGlmIChJU19HRU45X0xQKGRldl9wcml2KSkgeworCQlieHRfZ2V0X2J1Zl90cmFuc19oZG1pKGVu Y29kZXIsICZuX2VudHJpZXMpOworCQkqZGVmYXVsdF9lbnRyeSA9IG5fZW50cmllcyAtIDE7CisJ fSBlbHNlIGlmIChJU19HRU45X0JDKGRldl9wcml2KSkgeworCQlpbnRlbF9kZGlfZ2V0X2J1Zl90 cmFuc19oZG1pKGVuY29kZXIsICZuX2VudHJpZXMpOworCQkqZGVmYXVsdF9lbnRyeSA9IDg7CisJ fSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7CisJCWludGVsX2RkaV9nZXRfYnVm X3RyYW5zX2hkbWkoZW5jb2RlciwgJm5fZW50cmllcyk7CisJCSpkZWZhdWx0X2VudHJ5ID0gNzsK Kwl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7CisJCWludGVsX2RkaV9nZXRfYnVm X3RyYW5zX2hkbWkoZW5jb2RlciwgJm5fZW50cmllcyk7CisJCSpkZWZhdWx0X2VudHJ5ID0gNjsK Kwl9IGVsc2UgeworCQlkcm1fV0FSTigmZGV2X3ByaXYtPmRybSwgMSwgImRkaSB0cmFuc2xhdGlv biB0YWJsZSBtaXNzaW5nXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKGRybV9XQVJOX09O X09OQ0UoJmRldl9wcml2LT5kcm0sIG5fZW50cmllcyA9PSAwKSkKKwkJcmV0dXJuIDA7CisKKwly ZXR1cm4gbl9lbnRyaWVzOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kZGlfYnVmX3RyYW5zLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RkaV9idWZfdHJhbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjliMjc3MjlmOTIzMwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGRpX2J1Zl90cmFucy5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8KKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAyMCBJ bnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgX0lOVEVMX0RESV9CVUZfVFJBTlNfSF8K KyNkZWZpbmUgX0lOVEVMX0RESV9CVUZfVFJBTlNfSF8KKworI2luY2x1ZGUgPGxpbnV4L3R5cGVz Lmg+CisKK3N0cnVjdCBpbnRlbF9lbmNvZGVyOworc3RydWN0IGludGVsX2NydGNfc3RhdGU7CisK K3N0cnVjdCBkZGlfYnVmX3RyYW5zIHsKKwl1MzIgdHJhbnMxOwkvKiBiYWxhbmNlIGxlZyBlbmFi bGUsIGRlLWVtcGggbGV2ZWwgKi8KKwl1MzIgdHJhbnMyOwkvKiB2cmVmIHNlbCwgdnN3aW5nICov CisJdTggaV9ib29zdDsJLyogU0tMOiBJX2Jvb3N0OyB2YWxpZDogMHgwLCAweDEsIDB4MywgMHg3 ICovCit9OworCitzdHJ1Y3QgYnh0X2RkaV9idWZfdHJhbnMgeworCXU4IG1hcmdpbjsJLyogc3dp bmcgdmFsdWUgKi8KKwl1OCBzY2FsZTsJLyogc2NhbGUgdmFsdWUgKi8KKwl1OCBlbmFibGU7CS8q IHNjYWxlIGVuYWJsZSAqLworCXU4IGRlZW1waGFzaXM7Cit9OworCitzdHJ1Y3QgY25sX2RkaV9i dWZfdHJhbnMgeworCXU4IGR3Ml9zd2luZ19zZWw7CisJdTggZHc3X25fc2NhbGFyOworCXU4IGR3 NF9jdXJzb3JfY29lZmY7CisJdTggZHc0X3Bvc3RfY3Vyc29yXzI7CisJdTggZHc0X3Bvc3RfY3Vy c29yXzE7Cit9OworCitzdHJ1Y3QgaWNsX21nX3BoeV9kZGlfYnVmX3RyYW5zIHsKKwl1MzIgY3Jp X3R4ZGVlbXBoX292ZXJyaWRlXzExXzY7CisJdTMyIGNyaV90eGRlZW1waF9vdmVycmlkZV81XzA7 CisJdTMyIGNyaV90eGRlZW1waF9vdmVycmlkZV8xN18xMjsKK307CisKK3N0cnVjdCB0Z2xfZGts X3BoeV9kZGlfYnVmX3RyYW5zIHsKKwl1MzIgZGtsX3Zzd2luZ19jb250cm9sOworCXUzMiBka2xf cHJlc2hvb3RfY29udHJvbDsKKwl1MzIgZGtsX2RlX2VtcGhhc2lzX2NvbnRyb2w7Cit9OworCiti b29sIGlzX2hvYmxfYnVmX3RyYW5zKGNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqdGFi bGUpOworCitpbnQgaW50ZWxfZGRpX2hkbWlfbnVtX2VudHJpZXMoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCisJCQkgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCisJCQkgICAgICAgaW50ICpkZWZhdWx0X2VudHJ5KTsKKworY29uc3Qgc3RydWN0 IGRkaV9idWZfdHJhbnMgKgoraW50ZWxfZGRpX2dldF9idWZfdHJhbnNfZWRwKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcyk7Citjb25zdCBzdHJ1Y3QgZGRpX2J1 Zl90cmFucyAqCitpbnRlbF9kZGlfZ2V0X2J1Zl90cmFuc19mZGkoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAorCQkJICAgIGludCAqbl9lbnRyaWVzKTsKK2NvbnN0IHN0cnVjdCBk ZGlfYnVmX3RyYW5zICoKK2ludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2hkbWkoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgIGludCAqbl9lbnRyaWVzKTsKK2NvbnN0IHN0cnVj dCBkZGlfYnVmX3RyYW5zICoKK2ludGVsX2RkaV9nZXRfYnVmX3RyYW5zX2RwKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLCBpbnQgKm5fZW50cmllcyk7CisKK2NvbnN0IHN0cnVjdCBieHRf ZGRpX2J1Zl90cmFucyAqCitieHRfZ2V0X2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKKwkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK KwkJICBpbnQgKm5fZW50cmllcyk7CisKK2NvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAq Cit0Z2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK KwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJaW50ICpu X2VudHJpZXMpOworY29uc3Qgc3RydWN0IHRnbF9ka2xfcGh5X2RkaV9idWZfdHJhbnMgKgordGds X2dldF9ka2xfYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkgICAg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJICAgICAgaW50 ICpuX2VudHJpZXMpOworY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKK2pzbF9nZXRf Y29tYm9fYnVmX3RyYW5zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQlpbnQgKm5fZW50cmllcyk7 Citjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgorZWhsX2dldF9jb21ib19idWZfdHJh bnMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCisJCQljb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCWludCAqbl9lbnRyaWVzKTsKK2NvbnN0IHN0cnVj dCBjbmxfZGRpX2J1Zl90cmFucyAqCitpY2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKKwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAorCQkJaW50ICpuX2VudHJpZXMpOworY29uc3Qgc3RydWN0IGljbF9tZ19waHlf ZGRpX2J1Zl90cmFucyAqCitpY2xfZ2V0X21nX2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKKwkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKKwkJICAgICBpbnQgKm5fZW50cmllcyk7CisKK2NvbnN0IHN0cnVjdCBjbmxfZGRpX2J1 Zl90cmFucyAqCitjbmxfZ2V0X2J1Zl90cmFucyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKKwkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJICBp bnQgKm5fZW50cmllcyk7CisJCSAgCisjZW5kaWYKLS0gCjIuMjcuMAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==