Received: by 2002:a05:7412:a9a2:b0:e2:908c:2ebd with SMTP id o34csp2505441rdh; Sun, 29 Oct 2023 20:57:50 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFZOY2CluyCDKOlmD8NiGD73hfJHoaY/CledI8Hp/pNSySFjLldJyhMENeIj1+kY1EZmxRq X-Received: by 2002:a05:6359:6481:b0:168:e396:aa96 with SMTP id si1-20020a056359648100b00168e396aa96mr3166028rwb.11.1698638270057; Sun, 29 Oct 2023 20:57:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698638270; cv=none; d=google.com; s=arc-20160816; b=k6ZRijbbhRx/c5sYRebGMPgXrm/kuogBtwRqMZpY3vWqbXuGjrFKaIdq3mfbXTNiVS ShmNVkJu/i7clYDCDAAAG+RkmZACskRsyGlB86UWVmXDtsnABUZ7qHNtvxU1CCw4kWtu yuCPoeSwAQXTPQzY+DnRRdTU98dTPEbU3kN9weJ0OSB2zzhEHgcNQzF+IZNssln3CxGu Jhwrsd+uGgGWreHGUmQMN3WR+OE8OEezaCtl1apm+jexAH6NbO/FkLIEi1ostS5K4Iyz 5let1AZHy35wKLs1d6vi4Tt+cnZxhVzoUTpoC2ymZ3tTSHksLjqwJlaOre1YIYb7CeGC jmTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:message-id:date:thread-index :thread-topic:subject:cc:to:from; bh=tDJ7YG+APIlx4R8V7D0jN68o4d7XLGNf3g5ogJ6x6b4=; fh=+omD5OL0eBS0DlylCUcapknqPVyRrJ9Jf0Dqu86GWqk=; b=SlrP0Yih9Ttzy/nqwX9K0gldO7GtZMh9YRUIJYx1EgthqbwwQdxKiDBBnIJqr7j+qf y5iQv2NowuirI6pwy7Xk+Q0bmAxKgqYjO0FNQ7xMEJEfbPCeI+xwNtI/d+tPS4P/uF2H ei1e3NNwVPeoUnrV65L5YtOD9jNjn7UizUuKmiv4dWv7vbBeSS67I7cU7mVQZ/92kd/l PazRXBQqj56iGkYuce2SKfvrcAr1pYsvEyOnAolnxYJzOoYN777G9XQhnN5FBzrsc3sQ 6EfrZ9Mp9sRuUM4vqnrCS6MyuGinUrn5eqQpQ9LOcC2wx9f5cEeHNqAOpH6gSqLDwtjk 7f8g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id ca27-20020a056a02069b00b005b7d9aace9dsi2092512pgb.46.2023.10.29.20.57.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 29 Oct 2023 20:57:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id BFDBF809582E; Sun, 29 Oct 2023 20:57:42 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231527AbjJ3D5N (ORCPT + 99 others); Sun, 29 Oct 2023 23:57:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57672 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229514AbjJ3D5M (ORCPT ); Sun, 29 Oct 2023 23:57:12 -0400 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 692399D; Sun, 29 Oct 2023 20:57:05 -0700 (PDT) X-SpamFilter-By: ArmorX SpamTrap 5.78 with qID 39U3tasbF2665366, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexh36505.realtek.com.tw[172.21.6.25]) by rtits2.realtek.com.tw (8.15.2/2.93/5.92) with ESMTPS id 39U3tasbF2665366 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 30 Oct 2023 11:55:36 +0800 Received: from RTEXMBS05.realtek.com.tw (172.21.6.98) by RTEXH36505.realtek.com.tw (172.21.6.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.32; Mon, 30 Oct 2023 11:55:32 +0800 Received: from RTEXMBS01.realtek.com.tw (172.21.6.94) by RTEXMBS05.realtek.com.tw (172.21.6.98) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Mon, 30 Oct 2023 11:55:31 +0800 Received: from RTEXMBS01.realtek.com.tw ([fe80::9cb8:8d5:b6b3:213b]) by RTEXMBS01.realtek.com.tw ([fe80::9cb8:8d5:b6b3:213b%5]) with mapi id 15.01.2375.007; Mon, 30 Oct 2023 11:55:31 +0800 From: Ricky WU To: "arnd@arndb.de" , "gregkh@linuxfoundation.org" , Ricky WU , "linux-kernel@vger.kernel.org" CC: "ulf.hansson@linaro.org" , "frank.li@vivo.com" , "yangyingliang@huawei.com" , "u.kleine-koenig@pengutronix.de" , "linux-mmc@vger.kernel.org" Subject: [PATCH v4 1/3] misc: rtsx: add to support new card reader rts5264 new definition and function Thread-Topic: [PATCH v4 1/3] misc: rtsx: add to support new card reader rts5264 new definition and function Thread-Index: AQHaCuQvXIMTS0Cfvk6bUijKo3kRow== Date: Mon, 30 Oct 2023 03:55:30 +0000 Message-ID: Accept-Language: zh-TW, en-US Content-Language: zh-TW x-originating-ip: [172.22.81.102] x-kse-serverinfo: RTEXMBS05.realtek.com.tw, 9 x-kse-antispam-interceptor-info: fallback x-kse-antivirus-interceptor-info: fallback Content-Type: text/plain; charset="big5" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-KSE-AntiSpam-Interceptor-Info: fallback X-KSE-ServerInfo: RTEXH36505.realtek.com.tw, 9 X-KSE-AntiSpam-Interceptor-Info: fallback X-KSE-Antivirus-Interceptor-Info: fallback X-KSE-AntiSpam-Interceptor-Info: fallback X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Sun, 29 Oct 2023 20:57:43 -0700 (PDT) cnRzNTI2NC5oIG5ldyBkZWZpbml0aW9ucyBmb3IgbmV3IGNoaXAgcnRzNTI2NA0KcnRzNTI2NC5j IG5ldyBmdW5jdGlvbnMgZm9yIG5ldyBjaGlwIHJ0czUyNjQNCg0KU2lnbmVkLW9mZi1ieTogUmlj a3kgV3UgPHJpY2t5X3d1QHJlYWx0ZWsuY29tPg0KLS0tDQp2NDogc3BsaXQgbmV3IGRlZmluaXRp b24gcGFydCB1cCBmcm9tIHYzDQotLS0NCiBkcml2ZXJzL21pc2MvY2FyZHJlYWRlci9NYWtlZmls ZSAgfCAgIDIgKy0NCiBkcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHM1MjY0LmMgfCA4ODYgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrDQogZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRz NTI2NC5oIHwgMjc4ICsrKysrKysrKysNCiAzIGZpbGVzIGNoYW5nZWQsIDExNjUgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21pc2MvY2Fy ZHJlYWRlci9ydHM1MjY0LmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9taXNjL2NhcmRy ZWFkZXIvcnRzNTI2NC5oDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9N YWtlZmlsZSBiL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL01ha2VmaWxlDQppbmRleCA4OTUxMjg0 NzVkODMuLjFlMWJjYTZiMGIyMiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVy L01ha2VmaWxlDQorKysgYi9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9NYWtlZmlsZQ0KQEAgLTEs NSArMSw1IEBADQogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQogb2Jq LSQoQ09ORklHX01JU0NfQUxDT1JfUENJKQkrPSBhbGNvcl9wY2kubw0KIG9iai0kKENPTkZJR19N SVNDX1JUU1hfUENJKQkrPSBydHN4X3BjaS5vDQotcnRzeF9wY2ktb2JqcyA6PSBydHN4X3Bjci5v IHJ0czUyMDkubyBydHM1MjI5Lm8gcnRsODQxMS5vIHJ0czUyMjcubyBydHM1MjQ5Lm8gcnRzNTI2 MC5vIHJ0czUyNjEubyBydHM1MjI4Lm8NCitydHN4X3BjaS1vYmpzIDo9IHJ0c3hfcGNyLm8gcnRz NTIwOS5vIHJ0czUyMjkubyBydGw4NDExLm8gcnRzNTIyNy5vIHJ0czUyNDkubyBydHM1MjYwLm8g cnRzNTI2MS5vIHJ0czUyMjgubyBydHM1MjY0Lm8NCiBvYmotJChDT05GSUdfTUlTQ19SVFNYX1VT QikJKz0gcnRzeF91c2Iubw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0 czUyNjQuYyBiL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0czUyNjQuYw0KbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uOGJlNGVkN2Q5ZDQ3DQotLS0gL2Rldi9udWxs DQorKysgYi9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHM1MjY0LmMNCkBAIC0wLDAgKzEsODg2 IEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXINCisvKiBE cml2ZXIgZm9yIFJlYWx0ZWsgUENJLUV4cHJlc3MgY2FyZCByZWFkZXINCisgKg0KKyAqIENvcHly aWdodChjKSAyMDA5LTIwMTMgUmVhbHRlayBTZW1pY29uZHVjdG9yIENvcnAuIEFsbCByaWdodHMg cmVzZXJ2ZWQuDQorICoNCisgKiBBdXRob3I6DQorICogICBSaWNreSBXdSA8cmlja3lfd3VAcmVh bHRlay5jb20+DQorICovDQorDQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KKyNpbmNsdWRl IDxsaW51eC9kZWxheS5oPg0KKyNpbmNsdWRlIDxsaW51eC9ydHN4X3BjaS5oPg0KKw0KKyNpbmNs dWRlICJydHM1MjY0LmgiDQorI2luY2x1ZGUgInJ0c3hfcGNyLmgiDQorDQorc3RhdGljIHU4IHJ0 czUyNjRfZ2V0X2ljX3ZlcnNpb24oc3RydWN0IHJ0c3hfcGNyICpwY3IpDQorew0KKwl1OCB2YWw7 DQorDQorCXJ0c3hfcGNpX3JlYWRfcmVnaXN0ZXIocGNyLCBEVU1NWV9SRUdfUkVTRVRfMCwgJnZh bCk7DQorCXJldHVybiB2YWwgJiAweDBGOw0KK30NCisNCitzdGF0aWMgdm9pZCBydHM1MjY0X2Zp bGxfZHJpdmluZyhzdHJ1Y3QgcnRzeF9wY3IgKnBjciwgdTggdm9sdGFnZSkNCit7DQorCXU4IGRy aXZpbmdfM3YzWzRdWzNdID0gew0KKwkJezB4ODgsIDB4ODgsIDB4ODh9LA0KKwkJezB4NzcsIDB4 NzcsIDB4Nzd9LA0KKwkJezB4OTksIDB4OTksIDB4OTl9LA0KKwkJezB4NjYsIDB4NjYsIDB4NjZ9 LA0KKwl9Ow0KKwl1OCBkcml2aW5nXzF2OFs0XVszXSA9IHsNCisJCXsweDk5LCAweDk5LCAweDk5 fSwNCisJCXsweDc3LCAweDc3LCAweDc3fSwNCisJCXsweEJCLCAweEJCLCAweEJCfSwNCisJCXsw eDY1LCAweDY1LCAweDY1fSwNCisJfTsNCisJdTggKCpkcml2aW5nKVszXSwgZHJpdmVfc2VsOw0K Kw0KKwlpZiAodm9sdGFnZSA9PSBPVVRQVVRfM1YzKSB7DQorCQlkcml2aW5nID0gZHJpdmluZ18z djM7DQorCQlkcml2ZV9zZWwgPSBwY3ItPnNkMzBfZHJpdmVfc2VsXzN2MzsNCisJfSBlbHNlIHsN CisJCWRyaXZpbmcgPSBkcml2aW5nXzF2ODsNCisJCWRyaXZlX3NlbCA9IHBjci0+c2QzMF9kcml2 ZV9zZWxfMXY4Ow0KKwl9DQorDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgU0QzMF9D TEtfRFJJVkVfU0VMLA0KKwkJCTB4RkYsIGRyaXZpbmdbZHJpdmVfc2VsXVswXSk7DQorCXJ0c3hf cGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgU0QzMF9DTURfRFJJVkVfU0VMLA0KKwkJCTB4RkYsIGRy aXZpbmdbZHJpdmVfc2VsXVsxXSk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgU0Qz MF9EQVRfRFJJVkVfU0VMLA0KKwkJCTB4RkYsIGRyaXZpbmdbZHJpdmVfc2VsXVsyXSk7DQorfQ0K Kw0KK3N0YXRpYyB2b2lkIHJ0czUyNjRfZm9yY2VfcG93ZXJfZG93bihzdHJ1Y3QgcnRzeF9wY3Ig KnBjciwgdTggcG1fc3RhdGUsIGJvb2wgcnVudGltZSkNCit7DQorCS8qIFNldCByZWxpbmtfdGlt ZSB0byAwICovDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgQVVUT0xPQURfQ0ZHX0JB U0UgKyAxLCBNQVNLXzhfQklUX0RFRiwgMCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBj ciwgQVVUT0xPQURfQ0ZHX0JBU0UgKyAyLCBNQVNLXzhfQklUX0RFRiwgMCk7DQorCXJ0c3hfcGNp X3dyaXRlX3JlZ2lzdGVyKHBjciwgQVVUT0xPQURfQ0ZHX0JBU0UgKyAzLA0KKwkJCQlSRUxJTktf VElNRV9NQVNLLCAwKTsNCisNCisJaWYgKHBtX3N0YXRlID09IEhPU1RfRU5URVJfUzMpDQorCQly dHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIHBjci0+cmVnX3BtX2N0cmwzLA0KKwkJCQkJRDNf REVMSU5LX01PREVfRU4sIEQzX0RFTElOS19NT0RFX0VOKTsNCisNCisJaWYgKCFydW50aW1lKSB7 DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfQVVUT0xPQURfQ0ZHMSwN CisJCQkJQ0RfUkVTVU1FX0VOX01BU0ssIDApOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIo cGNyLCBwY3ItPnJlZ19wbV9jdHJsMywgMHgwMSwgMHgwMCk7DQorCQlydHN4X3BjaV93cml0ZV9y ZWdpc3RlcihwY3IsIFJUUzUyNjRfUkVHX1BNRV9GT1JDRV9DVEwsDQorCQkJCUZPUkNFX1BNX0NP TlRST0wgfCBGT1JDRV9QTV9WQUxVRSwgRk9SQ0VfUE1fQ09OVFJPTCk7DQorCX0gZWxzZSB7DQor CQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfUkVHX1BNRV9GT1JDRV9DVEws DQorCQkJCUZPUkNFX1BNX0NPTlRST0wgfCBGT1JDRV9QTV9WQUxVRSwgMCk7DQorCQlydHN4X3Bj aV93cml0ZV9yZWdpc3RlcihwY3IsIHBjci0+cmVnX3BtX2N0cmwzLCAweDAxLCAweDAxKTsNCisJ CXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgcGNyLT5yZWdfcG1fY3RybDMsDQorCQkJCQlE M19ERUxJTktfTU9ERV9FTiwgMCk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJU UzUyNjRfRldfQ1RMLA0KKwkJCQlSVFM1MjY0X0lORk9STV9SVEQzX0NPTEQsIFJUUzUyNjRfSU5G T1JNX1JURDNfQ09MRCk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRf QVVUT0xPQURfQ0ZHNCwNCisJCQkJUlRTNTI2NF9GT1JDRV9QUlNOVF9MT1csIFJUUzUyNjRfRk9S Q0VfUFJTTlRfTE9XKTsNCisJfQ0KKw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJU UzUyNjRfUkVHX0ZQRENUTCwNCisJCVNTQ19QT1dFUl9ET1dOLCBTU0NfUE9XRVJfRE9XTik7DQor fQ0KKw0KK3N0YXRpYyBpbnQgcnRzNTI2NF9lbmFibGVfYXV0b19ibGluayhzdHJ1Y3QgcnRzeF9w Y3IgKnBjcikNCit7DQorCXJldHVybiBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIE9MVF9M RURfQ1RMLA0KKwkJTEVEX1NISU5FX01BU0ssIExFRF9TSElORV9FTik7DQorfQ0KKw0KK3N0YXRp YyBpbnQgcnRzNTI2NF9kaXNhYmxlX2F1dG9fYmxpbmsoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQor ew0KKwlyZXR1cm4gcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBPTFRfTEVEX0NUTCwNCisJ CUxFRF9TSElORV9NQVNLLCBMRURfU0hJTkVfRElTQUJMRSk7DQorfQ0KKw0KK3N0YXRpYyBpbnQg cnRzNTI2NF90dXJuX29uX2xlZChzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCit7DQorCXJldHVybiBy dHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEdQSU9fQ1RMLA0KKwkJMHgwMiwgMHgwMik7DQor fQ0KKw0KK3N0YXRpYyBpbnQgcnRzNTI2NF90dXJuX29mZl9sZWQoc3RydWN0IHJ0c3hfcGNyICpw Y3IpDQorew0KKwlyZXR1cm4gcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBHUElPX0NUTCwN CisJCTB4MDIsIDB4MDApOw0KK30NCisNCisvKiBTRCBQdWxsIENvbnRyb2wgRW5hYmxlOg0KKyAq ICAgICBTRF9EQVRbMzowXSA9PT4gcHVsbCB1cA0KKyAqICAgICBTRF9DRCAgICAgICA9PT4gcHVs bCB1cA0KKyAqICAgICBTRF9XUCAgICAgICA9PT4gcHVsbCB1cA0KKyAqICAgICBTRF9DTUQgICAg ICA9PT4gcHVsbCB1cA0KKyAqICAgICBTRF9DTEsgICAgICA9PT4gcHVsbCBkb3duDQorICovDQor c3RhdGljIGNvbnN0IHUzMiBydHM1MjY0X3NkX3B1bGxfY3RsX2VuYWJsZV90YmxbXSA9IHsNCisJ UlRTWF9SRUdfUEFJUihDQVJEX1BVTExfQ1RMMiwgMHhBQSksDQorCVJUU1hfUkVHX1BBSVIoQ0FS RF9QVUxMX0NUTDMsIDB4RTkpLA0KKwkwLA0KK307DQorDQorLyogU0QgUHVsbCBDb250cm9sIERp c2FibGU6DQorICogICAgIFNEX0RBVFszOjBdID09PiBwdWxsIGRvd24NCisgKiAgICAgU0RfQ0Qg ICAgICAgPT0+IHB1bGwgdXANCisgKiAgICAgU0RfV1AgICAgICAgPT0+IHB1bGwgZG93bg0KKyAq ICAgICBTRF9DTUQgICAgICA9PT4gcHVsbCBkb3duDQorICogICAgIFNEX0NMSyAgICAgID09PiBw dWxsIGRvd24NCisgKi8NCitzdGF0aWMgY29uc3QgdTMyIHJ0czUyNjRfc2RfcHVsbF9jdGxfZGlz YWJsZV90YmxbXSA9IHsNCisJUlRTWF9SRUdfUEFJUihDQVJEX1BVTExfQ1RMMiwgMHg1NSksDQor CVJUU1hfUkVHX1BBSVIoQ0FSRF9QVUxMX0NUTDMsIDB4RDUpLA0KKwkwLA0KK307DQorDQorc3Rh dGljIGludCBydHM1MjY0X3NkX3NldF9zYW1wbGVfcHVzaF90aW1pbmdfc2QzMChzdHJ1Y3QgcnRz eF9wY3IgKnBjcikNCit7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgU0RfQ0ZHMSwg U0RfTU9ERV9TRUxFQ1RfTUFTSw0KKwkJfCBTRF9BU1lOQ19GSUZPX05PVF9SU1QsIFNEXzMwX01P REUgfCBTRF9BU1lOQ19GSUZPX05PVF9SU1QpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3Rlcihw Y3IsIENMS19DVEwsIENMS19MT1dfRlJFUSwgQ0xLX0xPV19GUkVRKTsNCisJcnRzeF9wY2lfd3Jp dGVfcmVnaXN0ZXIocGNyLCBDQVJEX0NMS19TT1VSQ0UsIDB4RkYsDQorCQkJQ1JDX1ZBUl9DTEsw IHwgU0QzMF9GSVhfQ0xLIHwgU0FNUExFX1ZBUl9DTEsxKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVn aXN0ZXIocGNyLCBDTEtfQ1RMLCBDTEtfTE9XX0ZSRVEsIDApOw0KKw0KKwlyZXR1cm4gMDsNCit9 DQorDQorc3RhdGljIGludCBydHM1MjY0X2NhcmRfcG93ZXJfb24oc3RydWN0IHJ0c3hfcGNyICpw Y3IsIGludCBjYXJkKQ0KK3sNCisJc3RydWN0IHJ0c3hfY3Jfb3B0aW9uICpvcHRpb24gPSAmcGNy LT5vcHRpb247DQorDQorCWlmIChvcHRpb24tPm9jcF9lbikNCisJCXJ0c3hfcGNpX2VuYWJsZV9v Y3AocGNyKTsNCisNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSRUdfQ1JDX0RVTU1Z XzAsDQorCQlDRkdfU0RfUE9XX0FVVE9fUEQsIENGR19TRF9QT1dfQVVUT19QRCk7DQorDQorCXJ0 c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8xX0NGRzEsDQorCQkJUlRTNTI2 NF9MRE8xX1RVTkVfTUFTSywgUlRTNTI2NF9MRE8xXzMzKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVn aXN0ZXIocGNyLCBSVFM1MjY0X0xETzEyMzMzMThfUE9XX0NUTCwNCisJCQlSVFM1MjY0X0xETzFf UE9XRVJPTiwgUlRTNTI2NF9MRE8xX1BPV0VST04pOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3Rl cihwY3IsIFJUUzUyNjRfTERPMTIzMzMxOF9QT1dfQ1RMLA0KKwkJCVJUUzUyNjRfTERPMzMxOF9Q T1dFUk9OLCBSVFM1MjY0X0xETzMzMThfUE9XRVJPTik7DQorDQorCW1zbGVlcCgyMCk7DQorDQor CXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgQ0FSRF9PRSwgU0RfT1VUUFVUX0VOLCBTRF9P VVRQVVRfRU4pOw0KKw0KKwkvKiBJbml0aWFsaXplIFNEX0NGRzEgcmVnaXN0ZXIgKi8NCisJcnRz eF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBTRF9DRkcxLCAweEZGLA0KKwkJCVNEX0NMS19ESVZJ REVfMTI4IHwgU0RfMjBfTU9ERSB8IFNEX0JVU19XSURUSF8xQklUKTsNCisJcnRzeF9wY2lfd3Jp dGVfcmVnaXN0ZXIocGNyLCBTRF9TQU1QTEVfUE9JTlRfQ1RMLA0KKwkJCTB4RkYsIFNEMjBfUlhf UE9TX0VER0UpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFNEX1BVU0hfUE9JTlRf Q1RMLCAweEZGLCAwKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBDQVJEX1NUT1As IFNEX1NUT1AgfCBTRF9DTFJfRVJSLA0KKwkJCVNEX1NUT1AgfCBTRF9DTFJfRVJSKTsNCisNCisJ LyogUmVzZXQgU0RfQ0ZHMyByZWdpc3RlciAqLw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3Rlcihw Y3IsIFNEX0NGRzMsIFNEMzBfQ0xLX0VORF9FTiwgMCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lz dGVyKHBjciwgUkVHX1NEX1NUT1BfU0RDTEtfQ0ZHLA0KKwkJCVNEMzBfQ0xLX1NUT1BfQ0ZHX0VO IHwgU0QzMF9DTEtfU1RPUF9DRkcxIHwNCisJCQlTRDMwX0NMS19TVE9QX0NGRzAsIDApOw0KKw0K KwlpZiAocGNyLT5leHRyYV9jYXBzICYgRVhUUkFfQ0FQU19TRF9TRFI1MCB8fA0KKwkgICAgcGNy LT5leHRyYV9jYXBzICYgRVhUUkFfQ0FQU19TRF9TRFIxMDQpDQorCQlydHM1MjY0X3NkX3NldF9z YW1wbGVfcHVzaF90aW1pbmdfc2QzMChwY3IpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3Rh dGljIGludCBydHM1MjY0X3N3aXRjaF9vdXRwdXRfdm9sdGFnZShzdHJ1Y3QgcnRzeF9wY3IgKnBj ciwgdTggdm9sdGFnZSkNCit7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2 NF9DQVJEX1BXUl9DVEwsDQorCQkJUlRTNTI2NF9QVVBEQywgUlRTNTI2NF9QVVBEQyk7DQorDQor CXN3aXRjaCAodm9sdGFnZSkgew0KKwljYXNlIE9VVFBVVF8zVjM6DQorCQlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMTIzMzMxOF9QT1dfQ1RMLA0KKwkJCQlSVFM1MjY0 X1RVTkVfUkVGX0xETzMzMTgsIFJUUzUyNjRfVFVORV9SRUZfTERPMzMxOCk7DQorCQlydHN4X3Bj aV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfRFYzMzE4X0NGRywNCisJCQkJUlRTNTI2NF9E VjMzMThfVFVORV9NQVNLLCBSVFM1MjY0X0RWMzMxOF8zMyk7DQorCQlydHN4X3BjaV93cml0ZV9y ZWdpc3RlcihwY3IsIFNEX1BBRF9DVEwsDQorCQkJCVNEX0lPX1VTSU5HXzFWOCwgMCk7DQorCQli cmVhazsNCisJY2FzZSBPVVRQVVRfMVY4Og0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNy LCBSVFM1MjY0X0xETzEyMzMzMThfUE9XX0NUTCwNCisJCQkJUlRTNTI2NF9UVU5FX1JFRl9MRE8z MzE4LCBSVFM1MjY0X1RVTkVfUkVGX0xETzMzMThfREZUKTsNCisJCXJ0c3hfcGNpX3dyaXRlX3Jl Z2lzdGVyKHBjciwgUlRTNTI2NF9EVjMzMThfQ0ZHLA0KKwkJCQlSVFM1MjY0X0RWMzMxOF9UVU5F X01BU0ssIFJUUzUyNjRfRFYzMzE4XzE4KTsNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBj ciwgU0RfUEFEX0NUTCwNCisJCQkJU0RfSU9fVVNJTkdfMVY4LCBTRF9JT19VU0lOR18xVjgpOw0K KwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0KKw0KKwkvKiBz ZXQgcGFkIGRyaXZlICovDQorCXJ0czUyNjRfZmlsbF9kcml2aW5nKHBjciwgdm9sdGFnZSk7DQor DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBydHM1MjY0X3N0b3BfY21kKHN0cnVj dCBydHN4X3BjciAqcGNyKQ0KK3sNCisJcnRzeF9wY2lfd3JpdGVsKHBjciwgUlRTWF9IQ0JDVExS LCBTVE9QX0NNRCk7DQorCXJ0c3hfcGNpX3dyaXRlbChwY3IsIFJUU1hfSERCQ1RMUiwgU1RPUF9E TUEpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIERNQUNUTCwgRE1BX1JTVCwgRE1B X1JTVCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUkJDVEwsIFJCX0ZMVVNILCBS Ql9GTFVTSCk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHJ0czUyNjRfY2FyZF9iZWZvcmVfcG93ZXJf b2ZmKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KK3sNCisJcnRzNTI2NF9zdG9wX2NtZChwY3IpOw0K KwlydHM1MjY0X3N3aXRjaF9vdXRwdXRfdm9sdGFnZShwY3IsIE9VVFBVVF8zVjMpOw0KK30NCisN CitzdGF0aWMgaW50IHJ0czUyNjRfY2FyZF9wb3dlcl9vZmYoc3RydWN0IHJ0c3hfcGNyICpwY3Is IGludCBjYXJkKQ0KK3sNCisJaW50IGVyciA9IDA7DQorDQorCXJ0czUyNjRfY2FyZF9iZWZvcmVf cG93ZXJfb2ZmKHBjcik7DQorCWVyciA9IHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRT NTI2NF9MRE8xMjMzMzE4X1BPV19DVEwsDQorCQkJCVJUUzUyNjRfTERPX1BPV0VST05fTUFTSywg MCk7DQorDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUkVHX0NSQ19EVU1NWV8wLA0K KwkJQ0ZHX1NEX1BPV19BVVRPX1BELCAwKTsNCisJaWYgKHBjci0+b3B0aW9uLm9jcF9lbikNCisJ CXJ0c3hfcGNpX2Rpc2FibGVfb2NwKHBjcik7DQorDQorCXJldHVybiBlcnI7DQorfQ0KKw0KK3N0 YXRpYyB2b2lkIHJ0czUyNjRfZW5hYmxlX29jcChzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCit7DQor CXU4IG1hc2sgPSAwOw0KKwl1OCB2YWwgPSAwOw0KKw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3Rl cihwY3IsIFJUUzUyNjRfTERPMV9DRkcwLA0KKwkJCVJUUzUyNjRfTERPMV9PQ1BfRU4gfCBSVFM1 MjY0X0xETzFfT0NQX0xNVF9FTiwNCisJCQlSVFM1MjY0X0xETzFfT0NQX0VOIHwgUlRTNTI2NF9M RE8xX09DUF9MTVRfRU4pOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRf TERPMl9DRkcwLA0KKwkJCVJUUzUyNjRfTERPMl9PQ1BfRU4gfCBSVFM1MjY0X0xETzJfT0NQX0xN VF9FTiwNCisJCQlSVFM1MjY0X0xETzJfT0NQX0VOIHwgUlRTNTI2NF9MRE8yX09DUF9MTVRfRU4p Ow0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPM19DRkcwLA0KKwkJ CVJUUzUyNjRfTERPM19PQ1BfRU4gfCBSVFM1MjY0X0xETzNfT0NQX0xNVF9FTiwNCisJCQlSVFM1 MjY0X0xETzNfT0NQX0VOIHwgUlRTNTI2NF9MRE8zX09DUF9MTVRfRU4pOw0KKwlydHN4X3BjaV93 cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfT1ZQX0RFVCwNCisJCQlSVFM1MjY0X1BPV19WREVU LCBSVFM1MjY0X1BPV19WREVUKTsNCisNCisJbWFzayA9IFNEX09DUF9JTlRfRU4gfCBTRF9ERVRF Q1RfRU47DQorCW1hc2sgfD0gU0RWSU9fT0NQX0lOVF9FTiB8IFNEVklPX0RFVEVDVF9FTjsNCisJ dmFsID0gbWFzazsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSRUdfT0NQQ1RMLCBt YXNrLCB2YWwpOw0KKw0KKwltYXNrID0gU0RfVkREM19PQ1BfSU5UX0VOIHwgU0RfVkREM19ERVRF Q1RfRU47DQorCXZhbCA9IG1hc2s7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRT NTI2NF9PQ1BfVkREM19DVEwsIG1hc2ssIHZhbCk7DQorDQorCW1hc2sgPSBSVFM1MjY0X09WUF9J TlRfRU4gfCBSVFM1MjY0X09WUF9ERVRFQ1RfRU47DQorCXZhbCA9IG1hc2s7DQorCXJ0c3hfcGNp X3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9PVlBfQ1RMLCBtYXNrLCB2YWwpOw0KK30NCisN CitzdGF0aWMgdm9pZCBydHM1MjY0X2Rpc2FibGVfb2NwKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0K K3sNCisJdTggbWFzayA9IDA7DQorDQorCW1hc2sgPSBTRF9PQ1BfSU5UX0VOIHwgU0RfREVURUNU X0VOOw0KKwltYXNrIHw9IFNEVklPX09DUF9JTlRfRU4gfCBTRFZJT19ERVRFQ1RfRU47DQorCXJ0 c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUkVHX09DUENUTCwgbWFzaywgMCk7DQorDQorCW1h c2sgPSBTRF9WREQzX09DUF9JTlRfRU4gfCBTRF9WREQzX0RFVEVDVF9FTjsNCisJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X09DUF9WREQzX0NUTCwgbWFzaywgMCk7DQorDQor CW1hc2sgPSBSVFM1MjY0X09WUF9JTlRfRU4gfCBSVFM1MjY0X09WUF9ERVRFQ1RfRU47DQorCXJ0 c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9PVlBfQ1RMLCBtYXNrLCAwKTsNCisN CisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzFfQ0ZHMCwNCisJCQlS VFM1MjY0X0xETzFfT0NQX0VOIHwgUlRTNTI2NF9MRE8xX09DUF9MTVRfRU4sIDApOw0KKwlydHN4 X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMl9DRkcwLA0KKwkJCVJUUzUyNjRf TERPMl9PQ1BfRU4gfCBSVFM1MjY0X0xETzJfT0NQX0xNVF9FTiwgMCk7DQorCXJ0c3hfcGNpX3dy aXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8zX0NGRzAsDQorCQkJUlRTNTI2NF9MRE8zX09D UF9FTiB8IFJUUzUyNjRfTERPM19PQ1BfTE1UX0VOLCAwKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVn aXN0ZXIocGNyLCBSVFM1MjY0X09WUF9ERVQsIFJUUzUyNjRfUE9XX1ZERVQsIDApOw0KK30NCisN CitzdGF0aWMgdm9pZCBydHM1MjY0X2luaXRfb2NwKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KK3sN CisJc3RydWN0IHJ0c3hfY3Jfb3B0aW9uICpvcHRpb24gPSAmcGNyLT5vcHRpb247DQorDQorCWlm IChvcHRpb24tPm9jcF9lbikgew0KKwkJdTggbWFzaywgdmFsOw0KKw0KKwkJcnRzeF9wY2lfd3Jp dGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzFfQ0ZHMCwNCisJCQlSVFM1MjY0X0xETzFfT0NQ X1RIRF9NQVNLLCBvcHRpb24tPnNkXzgwMG1BX29jcF90aGQpOw0KKwkJcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzFfQ0ZHMCwNCisJCQlSVFM1MjY0X0xETzFfT0NQX0xN VF9USERfTUFTSywNCisJCQlSVFM1MjY0X0xETzFfTE1UX1RIRF8yMDAwKTsNCisNCisJCXJ0c3hf cGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8yX0NGRzAsDQorCQkJUlRTNTI2NF9M RE8yX09DUF9USERfTUFTSywgUlRTNTI2NF9MRE8yX09DUF9USERfOTUwKTsNCisJCXJ0c3hfcGNp X3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8yX0NGRzAsDQorCQkJUlRTNTI2NF9MRE8y X09DUF9MTVRfVEhEX01BU0ssDQorCQkJUlRTNTI2NF9MRE8yX0xNVF9USERfMjAwMCk7DQorDQor CQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPM19DRkcwLA0KKwkJCVJU UzUyNjRfTERPM19PQ1BfVEhEX01BU0ssIFJUUzUyNjRfTERPM19PQ1BfVEhEXzcxMCk7DQorCQly dHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPM19DRkcwLA0KKwkJCVJUUzUy NjRfTERPM19PQ1BfTE1UX1RIRF9NQVNLLA0KKwkJCVJUUzUyNjRfTERPM19MTVRfVEhEXzE1MDAp Ow0KKw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X09WUF9ERVQsDQor CQkJUlRTNTI2NF9UVU5FX1ZST1ZfTUFTSywgUlRTNTI2NF9UVU5FX1ZST1ZfMVY2KTsNCisNCisJ CW1hc2sgPSBTRF9PQ1BfR0xJVENIX01BU0sgfCBTRFZJT19PQ1BfR0xJVENIX01BU0s7DQorCQl2 YWwgPSBwY3ItPmh3X3BhcmFtLm9jcF9nbGl0Y2g7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3Rl cihwY3IsIFJFR19PQ1BHTElUQ0gsIG1hc2ssIHZhbCk7DQorDQorCX0gZWxzZSB7DQorCQlydHN4 X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMV9DRkcwLA0KKwkJCVJUUzUyNjRf TERPMV9PQ1BfRU4gfCBSVFM1MjY0X0xETzFfT0NQX0xNVF9FTiwgMCk7DQorCQlydHN4X3BjaV93 cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMl9DRkcwLA0KKwkJCVJUUzUyNjRfTERPMl9P Q1BfRU4gfCBSVFM1MjY0X0xETzJfT0NQX0xNVF9FTiwgMCk7DQorCQlydHN4X3BjaV93cml0ZV9y ZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPM19DRkcwLA0KKwkJCVJUUzUyNjRfTERPM19PQ1BfRU4g fCBSVFM1MjY0X0xETzNfT0NQX0xNVF9FTiwgMCk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3Rl cihwY3IsIFJUUzUyNjRfT1ZQX0RFVCwNCisJCQlSVFM1MjY0X1BPV19WREVULCAwKTsNCisJfQ0K K30NCisNCitzdGF0aWMgaW50IHJ0czUyNjRfZ2V0X29jcHN0YXQyKHN0cnVjdCBydHN4X3BjciAq cGNyLCB1OCAqdmFsKQ0KK3sNCisJcmV0dXJuIHJ0c3hfcGNpX3JlYWRfcmVnaXN0ZXIocGNyLCBS VFM1MjY0X09DUF9WREQzX1NUUywgdmFsKTsNCit9DQorDQorc3RhdGljIGludCBydHM1MjY0X2dl dF9vdnBzdGF0KHN0cnVjdCBydHN4X3BjciAqcGNyLCB1OCAqdmFsKQ0KK3sNCisJcmV0dXJuIHJ0 c3hfcGNpX3JlYWRfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X09WUF9TVFMsIHZhbCk7DQorfQ0KKw0K K3N0YXRpYyB2b2lkIHJ0czUyNjRfY2xlYXJfb2Nwc3RhdChzdHJ1Y3QgcnRzeF9wY3IgKnBjcikN Cit7DQorCXU4IG1hc2sgPSAwOw0KKwl1OCB2YWwgPSAwOw0KKw0KKwltYXNrID0gU0RfT0NQX0lO VF9DTFIgfCBTRF9PQ19DTFI7DQorCW1hc2sgfD0gU0RWSU9fT0NQX0lOVF9DTFIgfCBTRFZJT19P Q19DTFI7DQorCXZhbCA9IG1hc2s7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUkVH X09DUENUTCwgbWFzaywgdmFsKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1 MjY0X09DUF9WREQzX0NUTCwNCisJCVNEX1ZERDNfT0NQX0lOVF9DTFIgfCBTRF9WREQzX09DX0NM UiwNCisJCVNEX1ZERDNfT0NQX0lOVF9DTFIgfCBTRF9WREQzX09DX0NMUik7DQorCXJ0c3hfcGNp X3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9PVlBfQ1RMLA0KKwkJUlRTNTI2NF9PVlBfSU5U X0NMUiB8IFJUUzUyNjRfT1ZQX0NMUiwNCisJCVJUUzUyNjRfT1ZQX0lOVF9DTFIgfCBSVFM1MjY0 X09WUF9DTFIpOw0KKw0KKwl1ZGVsYXkoMTAwMCk7DQorDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lz dGVyKHBjciwgUkVHX09DUENUTCwgbWFzaywgMCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgUlRTNTI2NF9PQ1BfVkREM19DVEwsDQorCQlTRF9WREQzX09DUF9JTlRfQ0xSIHwgU0Rf VkREM19PQ19DTFIsIDApOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRf T1ZQX0NUTCwNCisJCVJUUzUyNjRfT1ZQX0lOVF9DTFIgfCBSVFM1MjY0X09WUF9DTFIsIDApOw0K K30NCisNCitzdGF0aWMgdm9pZCBydHM1MjY0X3Byb2Nlc3Nfb2NwKHN0cnVjdCBydHN4X3BjciAq cGNyKQ0KK3sNCisJaWYgKCFwY3ItPm9wdGlvbi5vY3BfZW4pDQorCQlyZXR1cm47DQorDQorCXJ0 c3hfcGNpX2dldF9vY3BzdGF0KHBjciwgJnBjci0+b2NwX3N0YXQpOw0KKwlydHM1MjY0X2dldF9v Y3BzdGF0MihwY3IsICZwY3ItPm9jcF9zdGF0Mik7DQorCXJ0czUyNjRfZ2V0X292cHN0YXQocGNy LCAmcGNyLT5vdnBfc3RhdCk7DQorDQorCWlmICgocGNyLT5vY3Bfc3RhdCAmIChTRF9PQ19OT1cg fCBTRF9PQ19FVkVSIHwgU0RWSU9fT0NfTk9XIHwgU0RWSU9fT0NfRVZFUikpIHx8DQorCQkJKHBj ci0+b2NwX3N0YXQyICYgKFNEX1ZERDNfT0NfTk9XIHwgU0RfVkREM19PQ19FVkVSKSkgfHwNCisJ CQkocGNyLT5vdnBfc3RhdCAmIChSVFM1MjY0X09WUF9OT1cgfCBSVFM1MjY0X09WUF9FVkVSKSkp IHsNCisJCXJ0czUyNjRfY2xlYXJfb2Nwc3RhdChwY3IpOw0KKwkJcnRzNTI2NF9jYXJkX3Bvd2Vy X29mZihwY3IsIFJUU1hfU0RfQ0FSRCk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3Is IENBUkRfT0UsIFNEX09VVFBVVF9FTiwgMCk7DQorCQlwY3ItPm9jcF9zdGF0ID0gMDsNCisJCXBj ci0+b2NwX3N0YXQyID0gMDsNCisJCXBjci0+b3ZwX3N0YXQgPSAwOw0KKwl9DQorfQ0KKw0KK3N0 YXRpYyB2b2lkIHJ0czUyNjRfaW5pdF9mcm9tX2h3KHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KK3sN CisJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBwY3ItPnBjaTsNCisJdTMyIGx2YWwxLCBsdmFsMiwg aTsNCisJdTE2IHNldHRpbmdfcmVnMSwgc2V0dGluZ19yZWcyOw0KKwl1OCB2YWxpZCwgZWZ1c2Vf dmFsaWQsIHRtcDsNCisNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X1JF R19QTUVfRk9SQ0VfQ1RMLA0KKwkJUkVHX0VGVVNFX1BPUiB8IFJFR19FRlVTRV9QT1dFUl9NQVNL LA0KKwkJUkVHX0VGVVNFX1BPUiB8IFJFR19FRlVTRV9QT1dFUk9OKTsNCisJdWRlbGF5KDEpOw0K KwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfRUZVU0VfQUREUiwNCisJCVJU UzUyNjRfRUZVU0VfQUREUl9NQVNLLCAweDAwKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIo cGNyLCBSVFM1MjY0X0VGVVNFX0NUTCwNCisJCVJUUzUyNjRfRUZVU0VfRU5BQkxFIHwgUlRTNTI2 NF9FRlVTRV9NT0RFX01BU0ssDQorCQlSVFM1MjY0X0VGVVNFX0VOQUJMRSk7DQorDQorCS8qIFdh aXQgdHJhbnNmZXIgZW5kICovDQorCWZvciAoaSA9IDA7IGkgPCBNQVhfUldfUkVHX0NOVDsgaSsr KSB7DQorCQlydHN4X3BjaV9yZWFkX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9FRlVTRV9DVEwsICZ0 bXApOw0KKwkJaWYgKCh0bXAgJiAweDgwKSA9PSAwKQ0KKwkJCWJyZWFrOw0KKwl9DQorCXJ0c3hf cGNpX3JlYWRfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0VGVVNFX1JFQURfREFUQSwgJnRtcCk7DQor CWVmdXNlX3ZhbGlkID0gKCh0bXAgJiAweDBDKSA+PiAyKTsNCisJcGNyX2RiZyhwY3IsICJMb2Fk IGVmdXNlIHZhbGlkOiAweCV4XG4iLCBlZnVzZV92YWxpZCk7DQorDQorCXBjaV9yZWFkX2NvbmZp Z19kd29yZChwZGV2LCBQQ1JfU0VUVElOR19SRUcyLCAmbHZhbDIpOw0KKwlwY3JfZGJnKHBjciwg IkNmZyAweCV4OiAweCV4XG4iLCBQQ1JfU0VUVElOR19SRUcyLCBsdmFsMik7DQorCS8qIDB4ODE2 ICovDQorCXZhbGlkID0gKHU4KSgobHZhbDIgPj4gMTYpICYgMHgwMyk7DQorDQorCXJ0c3hfcGNp X3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9SRUdfUE1FX0ZPUkNFX0NUTCwNCisJCVJFR19F RlVTRV9QT1IsIDApOw0KKwlwY3JfZGJnKHBjciwgIkRpc2FibGUgZWZ1c2UgcG9yIVxuIik7DQor DQorCWlmIChlZnVzZV92YWxpZCA9PSAyIHx8IGVmdXNlX3ZhbGlkID09IDMpIHsNCisJCWlmICh2 YWxpZCA9PSAzKSB7DQorCQkJLyogQnlwYXNzIGVmdXNlICovDQorCQkJc2V0dGluZ19yZWcxID0g UENSX1NFVFRJTkdfUkVHMTsNCisJCQlzZXR0aW5nX3JlZzIgPSBQQ1JfU0VUVElOR19SRUcyOw0K KwkJfSBlbHNlIHsNCisJCQkvKiBVc2UgZWZ1c2UgZGF0YSAqLw0KKwkJCXNldHRpbmdfcmVnMSA9 IFBDUl9TRVRUSU5HX1JFRzQ7DQorCQkJc2V0dGluZ19yZWcyID0gUENSX1NFVFRJTkdfUkVHNTsN CisJCX0NCisJfSBlbHNlIGlmIChlZnVzZV92YWxpZCA9PSAwKSB7DQorCQkvLyBkZWZhdWx0DQor CQlzZXR0aW5nX3JlZzEgPSBQQ1JfU0VUVElOR19SRUcxOw0KKwkJc2V0dGluZ19yZWcyID0gUENS X1NFVFRJTkdfUkVHMjsNCisJfSBlbHNlIHsNCisJCXJldHVybjsNCisJfQ0KKw0KKwlwY2lfcmVh ZF9jb25maWdfZHdvcmQocGRldiwgc2V0dGluZ19yZWcyLCAmbHZhbDIpOw0KKwlwY3JfZGJnKHBj ciwgIkNmZyAweCV4OiAweCV4XG4iLCBzZXR0aW5nX3JlZzIsIGx2YWwyKTsNCisNCisJaWYgKCFy dHM1MjY0X3ZlbmRvcl9zZXR0aW5nX3ZhbGlkKGx2YWwyKSkgew0KKwkJcGNyX2RiZyhwY3IsICJz a2lwIGZldGNoIHZlbmRvciBzZXR0aW5nXG4iKTsNCisJCXJldHVybjsNCisJfQ0KKw0KKwlwY3It PnJ0ZDNfZW4gPSBydHM1MjY0X3JlZ190b19ydGQzKGx2YWwyKTsNCisNCisJaWYgKHJ0czUyNjRf cmVnX2NoZWNrX3JldmVyc2Vfc29ja2V0KGx2YWwyKSkNCisJCXBjci0+ZmxhZ3MgfD0gUENSX1JF VkVSU0VfU09DS0VUOw0KKw0KKwlwY2lfcmVhZF9jb25maWdfZHdvcmQocGRldiwgc2V0dGluZ19y ZWcxLCAmbHZhbDEpOw0KKwlwY3JfZGJnKHBjciwgIkNmZyAweCV4OiAweCV4XG4iLCBzZXR0aW5n X3JlZzEsIGx2YWwxKTsNCisNCisJcGNyLT5hc3BtX2VuID0gcnRzNTI2NF9yZWdfdG9fYXNwbShs dmFsMSk7DQorCXBjci0+c2QzMF9kcml2ZV9zZWxfMXY4ID0gcnRzNTI2NF9yZWdfdG9fc2QzMF9k cml2ZV9zZWxfMXY4KGx2YWwxKTsNCisJcGNyLT5zZDMwX2RyaXZlX3NlbF8zdjMgPSBydHM1MjY0 X3JlZ190b19zZDMwX2RyaXZlX3NlbF8zdjMobHZhbDEpOw0KKw0KKwlpZiAoc2V0dGluZ19yZWcx ID09IFBDUl9TRVRUSU5HX1JFRzEpIHsNCisJCS8qIHN0b3JlIHNldHRpbmcgKi8NCisJCXJ0c3hf cGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgMHhGRjBDLCAweEZGLCAodTgpKGx2YWwxICYgMHhGRikp Ow0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCAweEZGMEQsIDB4RkYsICh1OCkoKGx2 YWwxID4+IDgpICYgMHhGRikpOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCAweEZG MEUsIDB4RkYsICh1OCkoKGx2YWwxID4+IDE2KSAmIDB4RkYpKTsNCisJCXJ0c3hfcGNpX3dyaXRl X3JlZ2lzdGVyKHBjciwgMHhGRjBGLCAweEZGLCAodTgpKChsdmFsMSA+PiAyNCkgJiAweEZGKSk7 DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIDB4RkYxMCwgMHhGRiwgKHU4KShsdmFs MiAmIDB4RkYpKTsNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgMHhGRjExLCAweEZG LCAodTgpKChsdmFsMiA+PiA4KSAmIDB4RkYpKTsNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgMHhGRjEyLCAweEZGLCAodTgpKChsdmFsMiA+PiAxNikgJiAweEZGKSk7DQorDQorCQlw Y2lfd3JpdGVfY29uZmlnX2R3b3JkKHBkZXYsIFBDUl9TRVRUSU5HX1JFRzQsIGx2YWwxKTsNCisJ CWx2YWwyID0gbHZhbDIgJiAweDAwRkZGRkZGOw0KKwkJcGNpX3dyaXRlX2NvbmZpZ19kd29yZChw ZGV2LCBQQ1JfU0VUVElOR19SRUc1LCBsdmFsMik7DQorCX0NCit9DQorDQorc3RhdGljIHZvaWQg cnRzNTI2NF9pbml0X2Zyb21fY2ZnKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KK3sNCisJc3RydWN0 IHJ0c3hfY3Jfb3B0aW9uICpvcHRpb24gPSAmcGNyLT5vcHRpb247DQorDQorCWlmIChydHN4X2No ZWNrX2Rldl9mbGFnKHBjciwgQVNQTV9MMV8xX0VOIHwgQVNQTV9MMV8yX0VODQorCQkJCXwgUE1f TDFfMV9FTiB8IFBNX0wxXzJfRU4pKQ0KKwkJcnRzeF9wY2lfZGlzYWJsZV9vb2JzX3BvbGxpbmco cGNyKTsNCisJZWxzZQ0KKwkJcnRzeF9wY2lfZW5hYmxlX29vYnNfcG9sbGluZyhwY3IpOw0KKw0K KwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEFTUE1fRk9SQ0VfQ1RMLCAweEZGLCAwKTsN CisNCisJaWYgKG9wdGlvbi0+bHRyX2VuKSB7DQorCQlpZiAob3B0aW9uLT5sdHJfZW5hYmxlZCkN CisJCQlydHN4X3NldF9sdHJfbGF0ZW5jeShwY3IsIG9wdGlvbi0+bHRyX2FjdGl2ZV9sYXRlbmN5 KTsNCisJfQ0KK30NCisNCitzdGF0aWMgaW50IHJ0czUyNjRfZXh0cmFfaW5pdF9odyhzdHJ1Y3Qg cnRzeF9wY3IgKnBjcikNCit7DQorCXN0cnVjdCBydHN4X2NyX29wdGlvbiAqb3B0aW9uID0gJnBj ci0+b3B0aW9uOw0KKw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfQVVU T0xPQURfQ0ZHMSwNCisJCQlDRF9SRVNVTUVfRU5fTUFTSywgQ0RfUkVTVU1FX0VOX01BU0spOw0K KwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJFR19WUkVGLCBQV0RfU1VTUE5EX0VOLCBQ V0RfU1VTUE5EX0VOKTsNCisNCisJcnRzNTI2NF9pbml0X2Zyb21fY2ZnKHBjcik7DQorCXJ0czUy NjRfaW5pdF9mcm9tX2h3KHBjcik7DQorDQorCS8qIHBvd2VyIG9mZiBlZnVzZSAqLw0KKwlydHN4 X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfUkVHX1BNRV9GT1JDRV9DVEwsDQorCQkJ UkVHX0VGVVNFX1BPV0VSX01BU0ssIFJFR19FRlVTRV9QT1dFUk9GRik7DQorCXJ0c3hfcGNpX3dy aXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9BVVRPTE9BRF9DRkcyLA0KKwkJCVJUUzUyNjRfQ0hJ UF9SU1RfTl9TRUwsIDApOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRf UkVHX0xETzEyX0NGRywNCisJCQlSVFM1MjY0X0xETzEyX1NSX01BU0ssIFJUUzUyNjRfTERPMTJf U1JfMF8wX01TKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBDREdXLCAweEZGLCAw eDAxKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0NLTVVYX01CSUFT X1BXUiwNCisJCQlSVFM1MjY0X1BPV19DS01VWCwgUlRTNTI2NF9QT1dfQ0tNVVgpOw0KKwlydHN4 X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfQ01EX09FX1NUQVJUX0VBUkxZLA0KKwkJ CVJUUzUyNjRfQ01EX09FX0VBUkxZX0VOIHwgUlRTNTI2NF9DTURfT0VfRUFSTFlfQ1lDTEVfTUFT SywNCisJCQlSVFM1MjY0X0NNRF9PRV9FQVJMWV9FTik7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lz dGVyKHBjciwgUlRTNTI2NF9EQVRfT0VfU1RBUlRfRUFSTFksDQorCQkJUlRTNTI2NF9EQVRfT0Vf RUFSTFlfRU4gfCBSVFM1MjY0X0RBVF9PRV9FQVJMWV9DWUNMRV9NQVNLLA0KKwkJCVJUUzUyNjRf REFUX09FX0VBUkxZX0VOKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBTU0NfRElW X05fMCwgMHhGRiwgMHg1RCk7DQorDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRT NTI2NF9QV1JfQ1VULA0KKwkJCVJUUzUyNjRfQ0ZHX01FTV9QRCwgUlRTNTI2NF9DRkdfTUVNX1BE KTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBMMVNVQl9DT05GSUcxLA0KKwkJCUFV WF9DTEtfQUNUSVZFX1NFTF9NQVNLLCBNQUNfQ0tTV19ET05FKTsNCisJcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBMMVNVQl9DT05GSUczLCAweEZGLCAwKTsNCisJcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBSVFM1MjY0X0FVVE9MT0FEX0NGRzQsDQorCQkJUlRTNTI2NF9BVVhfQ0xL XzE2TV9FTiwgMCk7DQorDQorCS8qIFJlbGVhc2UgUFJTTlQjICovDQorCXJ0c3hfcGNpX3dyaXRl X3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9BVVRPTE9BRF9DRkc0LA0KKwkJCVJUUzUyNjRfRk9SQ0Vf UFJTTlRfTE9XLCAwKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBQQ0xLX0NUTCwN CisJCQlQQ0xLX01PREVfU0VMLCBQQ0xLX01PREVfU0VMKTsNCisNCisJLyogTEVEIHNoaW5lIGRp c2FibGVkLCBzZXQgaW5pdGlhbCBzaGluZSBjeWNsZSBwZXJpb2QgKi8NCisJcnRzeF9wY2lfd3Jp dGVfcmVnaXN0ZXIocGNyLCBPTFRfTEVEX0NUTCwgMHgwRiwgMHgwMik7DQorDQorCS8qIENvbmZp Z3VyZSBkcml2aW5nICovDQorCXJ0czUyNjRfZmlsbF9kcml2aW5nKHBjciwgT1VUUFVUXzNWMyk7 DQorDQorCWlmIChwY3ItPmZsYWdzICYgUENSX1JFVkVSU0VfU09DS0VUKQ0KKwkJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBQRVRYQ0ZHLCAweDMwLCAweDMwKTsNCisJZWxzZQ0KKwkJcnRz eF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBQRVRYQ0ZHLCAweDMwLCAweDAwKTsNCisNCisJLyoN CisJICogSWYgdV9mb3JjZV9jbGtyZXFfMCBpcyBlbmFibGVkLCBDTEtSRVEjIFBJTiB3aWxsIGJl IGZvcmNlZA0KKwkgKiB0byBkcml2ZSBsb3csIGFuZCB3ZSBmb3JjaWJseSByZXF1ZXN0IGNsb2Nr Lg0KKwkgKi8NCisJaWYgKG9wdGlvbi0+Zm9yY2VfY2xrcmVxXzApDQorCQlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIFBFVFhDRkcsDQorCQkJCSBGT1JDRV9DTEtSRVFfREVMSU5LX01BU0ss IEZPUkNFX0NMS1JFUV9MT1cpOw0KKwllbHNlDQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3Rlcihw Y3IsIFBFVFhDRkcsDQorCQkJCSBGT1JDRV9DTEtSRVFfREVMSU5LX01BU0ssIEZPUkNFX0NMS1JF UV9ISUdIKTsNCisNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBQV0RfU1VTUEVORF9F TiwgMHhGRiwgMHhGRik7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUkJDVEwsIFVf QVVUT19ETUFfRU5fTUFTSywgMCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRT NTI2NF9BVVRPTE9BRF9DRkc0LA0KKwkJCVJUUzUyNjRfRl9ISUdIX1JDX01BU0ssIFJUUzUyNjRf Rl9ISUdIX1JDXzQwMEspOw0KKw0KKwlpZiAocGNyLT5ydGQzX2VuKSB7DQorCQlydHN4X3BjaV93 cml0ZV9yZWdpc3RlcihwY3IsIHBjci0+cmVnX3BtX2N0cmwzLCAweDAxLCAweDAwKTsNCisJCXJ0 c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9SRUdfUE1FX0ZPUkNFX0NUTCwNCisJ CQkJRk9SQ0VfUE1fQ09OVFJPTCB8IEZPUkNFX1BNX1ZBTFVFLCAwKTsNCisJfSBlbHNlIHsNCisJ CXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgcGNyLT5yZWdfcG1fY3RybDMsIDB4MDEsIDB4 MDApOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X1JFR19QTUVfRk9S Q0VfQ1RMLA0KKwkJCQlGT1JDRV9QTV9DT05UUk9MIHwgRk9SQ0VfUE1fVkFMVUUsIEZPUkNFX1BN X0NPTlRST0wpOw0KKwl9DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgcGNyLT5yZWdf cG1fY3RybDMsIEQzX0RFTElOS19NT0RFX0VOLCAweDAwKTsNCisNCisJLyogQ2xlYXIgRW50ZXIg UlREM19jb2xkIEluZm9ybWF0aW9uKi8NCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBS VFM1MjY0X0ZXX0NUTCwNCisJCVJUUzUyNjRfSU5GT1JNX1JURDNfQ09MRCwgMCk7DQorDQorCXJl dHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBydHM1MjY0X2VuYWJsZV9hc3BtKHN0cnVjdCBy dHN4X3BjciAqcGNyLCBib29sIGVuYWJsZSkNCit7DQorCXU4IHZhbCA9IEZPUkNFX0FTUE1fQ1RM MCB8IEZPUkNFX0FTUE1fQ1RMMTsNCisJdTggbWFzayA9IEZPUkNFX0FTUE1fVkFMX01BU0sgfCBG T1JDRV9BU1BNX0NUTDAgfCBGT1JDRV9BU1BNX0NUTDE7DQorDQorCWlmIChwY3ItPmFzcG1fZW5h YmxlZCA9PSBlbmFibGUpDQorCQlyZXR1cm47DQorDQorCXZhbCB8PSAocGNyLT5hc3BtX2VuICYg MHgwMik7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgQVNQTV9GT1JDRV9DVEwsIG1h c2ssIHZhbCk7DQorCXBjaWVfY2FwYWJpbGl0eV9jbGVhcl9hbmRfc2V0X3dvcmQocGNyLT5wY2ks IFBDSV9FWFBfTE5LQ1RMLA0KKwkJCQkJICAgUENJX0VYUF9MTktDVExfQVNQTUMsIHBjci0+YXNw bV9lbik7DQorCXBjci0+YXNwbV9lbmFibGVkID0gZW5hYmxlOw0KK30NCisNCitzdGF0aWMgdm9p ZCBydHM1MjY0X2Rpc2FibGVfYXNwbShzdHJ1Y3QgcnRzeF9wY3IgKnBjciwgYm9vbCBlbmFibGUp DQorew0KKwl1OCB2YWwgPSBGT1JDRV9BU1BNX0NUTDAgfCBGT1JDRV9BU1BNX0NUTDE7DQorCXU4 IG1hc2sgPSBGT1JDRV9BU1BNX1ZBTF9NQVNLIHwgRk9SQ0VfQVNQTV9DVEwwIHwgRk9SQ0VfQVNQ TV9DVEwxOw0KKw0KKwlpZiAocGNyLT5hc3BtX2VuYWJsZWQgPT0gZW5hYmxlKQ0KKwkJcmV0dXJu Ow0KKw0KKwlwY2llX2NhcGFiaWxpdHlfY2xlYXJfYW5kX3NldF93b3JkKHBjci0+cGNpLCBQQ0lf RVhQX0xOS0NUTCwNCisJCQkJCSAgIFBDSV9FWFBfTE5LQ1RMX0FTUE1DLCAwKTsNCisJcnRzeF9w Y2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBBU1BNX0ZPUkNFX0NUTCwgbWFzaywgdmFsKTsNCisJcnRz eF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBTRF9DRkcxLCBTRF9BU1lOQ19GSUZPX05PVF9SU1Qs IDApOw0KKwl1ZGVsYXkoMTApOw0KKwlwY3ItPmFzcG1fZW5hYmxlZCA9IGVuYWJsZTsNCit9DQor DQorc3RhdGljIHZvaWQgcnRzNTI2NF9zZXRfYXNwbShzdHJ1Y3QgcnRzeF9wY3IgKnBjciwgYm9v bCBlbmFibGUpDQorew0KKwlpZiAoZW5hYmxlKQ0KKwkJcnRzNTI2NF9lbmFibGVfYXNwbShwY3Is IHRydWUpOw0KKwllbHNlDQorCQlydHM1MjY0X2Rpc2FibGVfYXNwbShwY3IsIGZhbHNlKTsNCit9 DQorDQorc3RhdGljIHZvaWQgcnRzNTI2NF9zZXRfbDFvZmZfY2ZnX3N1Yl9kMChzdHJ1Y3QgcnRz eF9wY3IgKnBjciwgaW50IGFjdGl2ZSkNCit7DQorCXN0cnVjdCBydHN4X2NyX29wdGlvbiAqb3B0 aW9uID0gJihwY3ItPm9wdGlvbik7DQorDQorCXUzMiBpbnRlcnJ1cHQgPSBydHN4X3BjaV9yZWFk bChwY3IsIFJUU1hfQklQUik7DQorCWludCBjYXJkX2V4aXN0ID0gKGludGVycnVwdCAmIFNEX0VY SVNUKTsNCisJaW50IGFzcG1fTDFfMSwgYXNwbV9MMV8yOw0KKwl1OCB2YWwgPSAwOw0KKw0KKwlh c3BtX0wxXzEgPSBydHN4X2NoZWNrX2Rldl9mbGFnKHBjciwgQVNQTV9MMV8xX0VOKTsNCisJYXNw bV9MMV8yID0gcnRzeF9jaGVja19kZXZfZmxhZyhwY3IsIEFTUE1fTDFfMl9FTik7DQorDQorCWlm IChhY3RpdmUpIHsNCisJCS8qIFJ1biwgbGF0ZW5jeTogNjB1cyAqLw0KKwkJaWYgKGFzcG1fTDFf MSkNCisJCQl2YWwgPSBvcHRpb24tPmx0cl9sMW9mZl9zbm9vemVfc3Nwd3JnYXRlOw0KKwl9IGVs c2Ugew0KKwkJLyogTDFvZmYsIGxhdGVuY3k6IDMwMHVzICovDQorCQlpZiAoYXNwbV9MMV8yKQ0K KwkJCXZhbCA9IG9wdGlvbi0+bHRyX2wxb2ZmX3NzcHdyZ2F0ZTsNCisJfQ0KKw0KKwlpZiAoYXNw bV9MMV8xIHx8IGFzcG1fTDFfMikgew0KKwkJaWYgKHJ0c3hfY2hlY2tfZGV2X2ZsYWcocGNyLA0K KwkJCQkJTFRSX0wxU1NfUFdSX0dBVEVfQ0hFQ0tfQ0FSRF9FTikpIHsNCisJCQlpZiAoY2FyZF9l eGlzdCkNCisJCQkJdmFsICY9IH5MMU9GRl9NQklBUzJfRU5fNTI1MDsNCisJCQllbHNlDQorCQkJ CXZhbCB8PSBMMU9GRl9NQklBUzJfRU5fNTI1MDsNCisJCX0NCisJfQ0KKwlydHN4X3NldF9sMW9m Zl9zdWIocGNyLCB2YWwpOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHBjcl9vcHMgcnRz NTI2NF9wY3Jfb3BzID0gew0KKwkudHVybl9vbl9sZWQgPSBydHM1MjY0X3R1cm5fb25fbGVkLA0K KwkudHVybl9vZmZfbGVkID0gcnRzNTI2NF90dXJuX29mZl9sZWQsDQorCS5leHRyYV9pbml0X2h3 ID0gcnRzNTI2NF9leHRyYV9pbml0X2h3LA0KKwkuZW5hYmxlX2F1dG9fYmxpbmsgPSBydHM1MjY0 X2VuYWJsZV9hdXRvX2JsaW5rLA0KKwkuZGlzYWJsZV9hdXRvX2JsaW5rID0gcnRzNTI2NF9kaXNh YmxlX2F1dG9fYmxpbmssDQorCS5jYXJkX3Bvd2VyX29uID0gcnRzNTI2NF9jYXJkX3Bvd2VyX29u LA0KKwkuY2FyZF9wb3dlcl9vZmYgPSBydHM1MjY0X2NhcmRfcG93ZXJfb2ZmLA0KKwkuc3dpdGNo X291dHB1dF92b2x0YWdlID0gcnRzNTI2NF9zd2l0Y2hfb3V0cHV0X3ZvbHRhZ2UsDQorCS5mb3Jj ZV9wb3dlcl9kb3duID0gcnRzNTI2NF9mb3JjZV9wb3dlcl9kb3duLA0KKwkuc3RvcF9jbWQgPSBy dHM1MjY0X3N0b3BfY21kLA0KKwkuc2V0X2FzcG0gPSBydHM1MjY0X3NldF9hc3BtLA0KKwkuc2V0 X2wxb2ZmX2NmZ19zdWJfZDAgPSBydHM1MjY0X3NldF9sMW9mZl9jZmdfc3ViX2QwLA0KKwkuZW5h YmxlX29jcCA9IHJ0czUyNjRfZW5hYmxlX29jcCwNCisJLmRpc2FibGVfb2NwID0gcnRzNTI2NF9k aXNhYmxlX29jcCwNCisJLmluaXRfb2NwID0gcnRzNTI2NF9pbml0X29jcCwNCisJLnByb2Nlc3Nf b2NwID0gcnRzNTI2NF9wcm9jZXNzX29jcCwNCisJLmNsZWFyX29jcHN0YXQgPSBydHM1MjY0X2Ns ZWFyX29jcHN0YXQsDQorfTsNCisNCitzdGF0aWMgaW5saW5lIHU4IGRvdWJsZV9zc2NfZGVwdGgo dTggZGVwdGgpDQorew0KKwlyZXR1cm4gKChkZXB0aCA+IDEpID8gKGRlcHRoIC0gMSkgOiBkZXB0 aCk7DQorfQ0KKw0KK2ludCBydHM1MjY0X3BjaV9zd2l0Y2hfY2xvY2soc3RydWN0IHJ0c3hfcGNy ICpwY3IsIHVuc2lnbmVkIGludCBjYXJkX2Nsb2NrLA0KKwkJdTggc3NjX2RlcHRoLCBib29sIGlu aXRpYWxfbW9kZSwgYm9vbCBkb3VibGVfY2xrLCBib29sIHZwY2xrKQ0KK3sNCisJaW50IGVyciwg Y2xrOw0KKwl1MTYgbjsNCisJdTggY2xrX2RpdmlkZXIsIG1jdV9jbnQsIGRpdjsNCisJc3RhdGlj IGNvbnN0IHU4IGRlcHRoW10gPSB7DQorCQlbUlRTWF9TU0NfREVQVEhfNE1dID0gUlRTNTI2NF9T U0NfREVQVEhfNE0sDQorCQlbUlRTWF9TU0NfREVQVEhfMk1dID0gUlRTNTI2NF9TU0NfREVQVEhf Mk0sDQorCQlbUlRTWF9TU0NfREVQVEhfMU1dID0gUlRTNTI2NF9TU0NfREVQVEhfMU0sDQorCQlb UlRTWF9TU0NfREVQVEhfNTAwS10gPSBSVFM1MjY0X1NTQ19ERVBUSF81MTJLLA0KKwl9Ow0KKw0K KwlpZiAoaW5pdGlhbF9tb2RlKSB7DQorCQkvKiBXZSB1c2UgMjUwayhhcm91bmQpIGhlcmUsIGlu IGluaXRpYWwgc3RhZ2UgKi8NCisJCWNsa19kaXZpZGVyID0gU0RfQ0xLX0RJVklERV8xMjg7DQor CQljYXJkX2Nsb2NrID0gMzAwMDAwMDA7DQorCX0gZWxzZSB7DQorCQljbGtfZGl2aWRlciA9IFNE X0NMS19ESVZJREVfMDsNCisJfQ0KKwllcnIgPSBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3Is IFNEX0NGRzEsDQorCQkJU0RfQ0xLX0RJVklERV9NQVNLLCBjbGtfZGl2aWRlcik7DQorCWlmIChl cnIgPCAwKQ0KKwkJcmV0dXJuIGVycjsNCisNCisJY2FyZF9jbG9jayAvPSAxMDAwMDAwOw0KKwlw Y3JfZGJnKHBjciwgIlN3aXRjaCBjYXJkIGNsb2NrIHRvICVkTUh6XG4iLCBjYXJkX2Nsb2NrKTsN CisNCisJY2xrID0gY2FyZF9jbG9jazsNCisJaWYgKCFpbml0aWFsX21vZGUgJiYgZG91YmxlX2Ns aykNCisJCWNsayA9IGNhcmRfY2xvY2sgKiAyOw0KKwlwY3JfZGJnKHBjciwgIkludGVybmFsIFNT QyBjbG9jazogJWRNSHogKGN1cl9jbG9jayA9ICVkKVxuIiwNCisJCWNsaywgcGNyLT5jdXJfY2xv Y2spOw0KKw0KKwlpZiAoY2xrID09IHBjci0+Y3VyX2Nsb2NrKQ0KKwkJcmV0dXJuIDA7DQorDQor CWlmIChwY3ItPm9wcy0+Y29udl9jbGtfYW5kX2Rpdl9uKQ0KKwkJbiA9IHBjci0+b3BzLT5jb252 X2Nsa19hbmRfZGl2X24oY2xrLCBDTEtfVE9fRElWX04pOw0KKwllbHNlDQorCQluID0gY2xrIC0g NDsNCisJaWYgKChjbGsgPD0gNCkgfHwgKG4gPiAzOTYpKQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQor DQorCW1jdV9jbnQgPSAxMjUvY2xrICsgMzsNCisJaWYgKG1jdV9jbnQgPiAxNSkNCisJCW1jdV9j bnQgPSAxNTsNCisNCisJZGl2ID0gQ0xLX0RJVl8xOw0KKwl3aGlsZSAoKG4gPCBNSU5fRElWX05f UENSIC0gNCkgJiYgKGRpdiA8IENMS19ESVZfOCkpIHsNCisJCWlmIChwY3ItPm9wcy0+Y29udl9j bGtfYW5kX2Rpdl9uKSB7DQorCQkJaW50IGRibF9jbGsgPSBwY3ItPm9wcy0+Y29udl9jbGtfYW5k X2Rpdl9uKG4sDQorCQkJCQlESVZfTl9UT19DTEspICogMjsNCisJCQluID0gcGNyLT5vcHMtPmNv bnZfY2xrX2FuZF9kaXZfbihkYmxfY2xrLA0KKwkJCQkJQ0xLX1RPX0RJVl9OKTsNCisJCX0gZWxz ZSB7DQorCQkJbiA9IChuICsgNCkgKiAyIC0gNDsNCisJCX0NCisJCWRpdisrOw0KKwl9DQorDQor CW4gPSAobiAvIDIpIC0gMTsNCisJcGNyX2RiZyhwY3IsICJuID0gJWQsIGRpdiA9ICVkXG4iLCBu LCBkaXYpOw0KKw0KKwlzc2NfZGVwdGggPSBkZXB0aFtzc2NfZGVwdGhdOw0KKwlpZiAoZG91Ymxl X2NsaykNCisJCXNzY19kZXB0aCA9IGRvdWJsZV9zc2NfZGVwdGgoc3NjX2RlcHRoKTsNCisNCisJ aWYgKHNzY19kZXB0aCkgew0KKwkJaWYgKGRpdiA9PSBDTEtfRElWXzIpIHsNCisJCQlpZiAoc3Nj X2RlcHRoID4gMSkNCisJCQkJc3NjX2RlcHRoIC09IDE7DQorCQkJZWxzZQ0KKwkJCQlzc2NfZGVw dGggPSBSVFM1MjY0X1NTQ19ERVBUSF84TTsNCisJCX0gZWxzZSBpZiAoZGl2ID09IENMS19ESVZf NCkgew0KKwkJCWlmIChzc2NfZGVwdGggPiAyKQ0KKwkJCQlzc2NfZGVwdGggLT0gMjsNCisJCQll bHNlDQorCQkJCXNzY19kZXB0aCA9IFJUUzUyNjRfU1NDX0RFUFRIXzhNOw0KKwkJfSBlbHNlIGlm IChkaXYgPT0gQ0xLX0RJVl84KSB7DQorCQkJaWYgKHNzY19kZXB0aCA+IDMpDQorCQkJCXNzY19k ZXB0aCAtPSAzOw0KKwkJCWVsc2UNCisJCQkJc3NjX2RlcHRoID0gUlRTNTI2NF9TU0NfREVQVEhf OE07DQorCQl9DQorCX0gZWxzZSB7DQorCQlzc2NfZGVwdGggPSAwOw0KKwl9DQorCXBjcl9kYmco cGNyLCAic3NjX2RlcHRoID0gJWRcbiIsIHNzY19kZXB0aCk7DQorDQorCXJ0c3hfcGNpX2luaXRf Y21kKHBjcik7DQorCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBDTEtfQ1RM LA0KKwkJCQlDSEFOR0VfQ0xLLCBDSEFOR0VfQ0xLKTsNCisJcnRzeF9wY2lfYWRkX2NtZChwY3Is IFdSSVRFX1JFR19DTUQsIENMS19ESVYsDQorCQkJMHhGRiwgKGRpdiA8PCA0KSB8IG1jdV9jbnQp Ow0KKwlydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgU1NDX0NUTDEsIFNTQ19S U1RCLCAwKTsNCisJcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRFX1JFR19DTUQsIFNTQ19DVEwy LA0KKwkJCVNTQ19ERVBUSF9NQVNLLCBzc2NfZGVwdGgpOw0KKwlydHN4X3BjaV9hZGRfY21kKHBj ciwgV1JJVEVfUkVHX0NNRCwgU1NDX0RJVl9OXzAsIDB4RkYsIG4pOw0KKw0KKwlpZiAoaXNfdmVy c2lvbihwY3IsIDB4NTI2NCwgSUNfVkVSX0EpKSB7DQorCQlydHN4X3BjaV9hZGRfY21kKHBjciwg V1JJVEVfUkVHX0NNRCwgU1NDX0NUTDEsIFNTQ19SU1RCLCAwKTsNCisJCXJ0c3hfcGNpX2FkZF9j bWQocGNyLCBXUklURV9SRUdfQ01ELCBSVFM1MjY0X0NBUkRfQ0xLX1NSQzIsDQorCQkJUlRTNTI2 NF9SRUdfQklHX0tWQ09fQSwgMCk7DQorCX0gZWxzZSB7DQorCQlydHN4X3BjaV9hZGRfY21kKHBj ciwgV1JJVEVfUkVHX0NNRCwgU1NDX0NUTDEsIFNTQ19SU1RCLCBTU0NfUlNUQik7DQorCQlydHN4 X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgUlRTNTI2NF9TWVNfRFVNTVlfMSwNCisJ CQlSVFM1MjY0X1JFR19CSUdfS1ZDTywgMCk7DQorCX0NCisNCisJaWYgKHZwY2xrKSB7DQorCQly dHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgU0RfVlBDTEswX0NUTCwNCisJCQkJ UEhBU0VfTk9UX1JFU0VULCAwKTsNCisJCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdf Q01ELCBTRF9WUENMSzFfQ1RMLA0KKwkJCQlQSEFTRV9OT1RfUkVTRVQsIDApOw0KKwkJcnRzeF9w Y2lfYWRkX2NtZChwY3IsIFdSSVRFX1JFR19DTUQsIFNEX1ZQQ0xLMF9DVEwsDQorCQkJCVBIQVNF X05PVF9SRVNFVCwgUEhBU0VfTk9UX1JFU0VUKTsNCisJCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBX UklURV9SRUdfQ01ELCBTRF9WUENMSzFfQ1RMLA0KKwkJCQlQSEFTRV9OT1RfUkVTRVQsIFBIQVNF X05PVF9SRVNFVCk7DQorCX0NCisNCisJZXJyID0gcnRzeF9wY2lfc2VuZF9jbWQocGNyLCAyMDAw KTsNCisJaWYgKGVyciA8IDApDQorCQlyZXR1cm4gZXJyOw0KKw0KKwkvKiBXYWl0IFNTQyBjbG9j ayBzdGFibGUgKi8NCisJdWRlbGF5KFNTQ19DTE9DS19TVEFCTEVfV0FJVCk7DQorCWVyciA9IHJ0 c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgQ0xLX0NUTCwgQ0hBTkdFX0NMSywgMCk7DQorCWlm IChlcnIgPCAwKQ0KKwkJcmV0dXJuIGVycjsNCisNCisJcGNyLT5jdXJfY2xvY2sgPSBjbGs7DQor CXJldHVybiAwOw0KK30NCisNCit2b2lkIHJ0czUyNjRfaW5pdF9wYXJhbXMoc3RydWN0IHJ0c3hf cGNyICpwY3IpDQorew0KKwlzdHJ1Y3QgcnRzeF9jcl9vcHRpb24gKm9wdGlvbiA9ICZwY3ItPm9w dGlvbjsNCisJc3RydWN0IHJ0c3hfaHdfcGFyYW0gKmh3X3BhcmFtID0gJnBjci0+aHdfcGFyYW07 DQorCXU4IHZhbDsNCisNCisJcGNyLT5leHRyYV9jYXBzID0gRVhUUkFfQ0FQU19TRF9TRFI1MCB8 IEVYVFJBX0NBUFNfU0RfU0RSMTA0Ow0KKwlwY3ItPmV4dHJhX2NhcHMgfD0gRVhUUkFfQ0FQU19O T19NTUM7DQorCXJ0c3hfcGNpX3JlYWRfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0ZXX1NUQVRVUywg JnZhbCk7DQorCWlmICghKHZhbCAmIFJUUzUyNjRfRVhQUkVTU19MSU5LX0ZBSUxfTUFTSykpDQor CQlwY3ItPmV4dHJhX2NhcHMgfD0gRVhUUkFfQ0FQU19TRF9FWFBSRVNTOw0KKwlwY3ItPm51bV9z bG90cyA9IDE7DQorCXBjci0+b3BzID0gJnJ0czUyNjRfcGNyX29wczsNCisNCisJcGNyLT5mbGFn cyA9IDA7DQorCXBjci0+Y2FyZF9kcml2ZV9zZWwgPSBSVFNYX0NBUkRfRFJJVkVfREVGQVVMVDsN CisJcGNyLT5zZDMwX2RyaXZlX3NlbF8xdjggPSAweDAwOw0KKwlwY3ItPnNkMzBfZHJpdmVfc2Vs XzN2MyA9IDB4MDA7DQorCXBjci0+YXNwbV9lbiA9IEFTUE1fTDFfRU47DQorCXBjci0+YXNwbV9t b2RlID0gQVNQTV9NT0RFX1JFRzsNCisJcGNyLT50eF9pbml0aWFsX3BoYXNlID0gU0VUX0NMT0NL X1BIQVNFKDI0LCAyNCwgMTEpOw0KKwlwY3ItPnJ4X2luaXRpYWxfcGhhc2UgPSBTRVRfQ0xPQ0tf UEhBU0UoMjQsIDYsIDUpOw0KKw0KKwlwY3ItPmljX3ZlcnNpb24gPSBydHM1MjY0X2dldF9pY192 ZXJzaW9uKHBjcik7DQorCXBjci0+c2RfcHVsbF9jdGxfZW5hYmxlX3RibCA9IHJ0czUyNjRfc2Rf cHVsbF9jdGxfZW5hYmxlX3RibDsNCisJcGNyLT5zZF9wdWxsX2N0bF9kaXNhYmxlX3RibCA9IHJ0 czUyNjRfc2RfcHVsbF9jdGxfZGlzYWJsZV90Ymw7DQorDQorCXBjci0+cmVnX3BtX2N0cmwzID0g UlRTNTI2NF9BVVRPTE9BRF9DRkczOw0KKw0KKwlvcHRpb24tPmRldl9mbGFncyA9IChMVFJfTDFT U19QV1JfR0FURV9DSEVDS19DQVJEX0VODQorCQkJCXwgTFRSX0wxU1NfUFdSX0dBVEVfRU4pOw0K KwlvcHRpb24tPmx0cl9lbiA9IHRydWU7DQorDQorCS8qIGluaXQgbGF0ZW5jeSBvZiBhY3RpdmUs IGlkbGUsIEwxT0ZGIHRvIDYwdXMsIDMwMHVzLCAzbXMgKi8NCisJb3B0aW9uLT5sdHJfYWN0aXZl X2xhdGVuY3kgPSBMVFJfQUNUSVZFX0xBVEVOQ1lfREVGOw0KKwlvcHRpb24tPmx0cl9pZGxlX2xh dGVuY3kgPSBMVFJfSURMRV9MQVRFTkNZX0RFRjsNCisJb3B0aW9uLT5sdHJfbDFvZmZfbGF0ZW5j eSA9IExUUl9MMU9GRl9MQVRFTkNZX0RFRjsNCisJb3B0aW9uLT5sMV9zbm9vemVfZGVsYXkgPSBM MV9TTk9PWkVfREVMQVlfREVGOw0KKwlvcHRpb24tPmx0cl9sMW9mZl9zc3B3cmdhdGUgPSAweDdG Ow0KKwlvcHRpb24tPmx0cl9sMW9mZl9zbm9vemVfc3Nwd3JnYXRlID0gMHg3ODsNCisNCisJb3B0 aW9uLT5vY3BfZW4gPSAxOw0KKwlod19wYXJhbS0+aW50ZXJydXB0X2VuIHw9IChTRF9PQ19JTlRf RU4gfCBTRF9PVlBfSU5UX0VOKTsNCisJaHdfcGFyYW0tPm9jcF9nbGl0Y2ggPSAgU0RfT0NQX0dM SVRDSF84MDBVIHwgU0RWSU9fT0NQX0dMSVRDSF84MDBVOw0KKwlvcHRpb24tPnNkXzgwMG1BX29j cF90aGQgPSAgUlRTNTI2NF9MRE8xX09DUF9USERfMTE1MDsNCit9DQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTI2NC5oIGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIv cnRzNTI2NC5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi5lM2Ni YmYyZmUxYTQNCi0tLSAvZGV2L251bGwNCisrKyBiL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0 czUyNjQuaA0KQEAgLTAsMCArMSwyNzggQEANCisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMC1vbmx5ICovDQorLyogRHJpdmVyIGZvciBSZWFsdGVrIFBDSS1FeHByZXNzIGNhcmQg cmVhZGVyDQorICoNCisgKiBDb3B5cmlnaHQoYykgMjAxOC0yMDE5IFJlYWx0ZWsgU2VtaWNvbmR1 Y3RvciBDb3JwLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAqDQorICogQXV0aG9yOg0KKyAqICAg Umlja3kgV3UgPHJpY2t5X3d1QHJlYWx0ZWsuY29tPg0KKyAqLw0KKyNpZm5kZWYgUlRTNTI2NF9I DQorI2RlZmluZSBSVFM1MjY0X0gNCisNCisvKk5ldyBhZGQqLw0KKyNkZWZpbmUgcnRzNTI2NF92 ZW5kb3Jfc2V0dGluZ192YWxpZChyZWcpCSgocmVnKSAmIDB4MDEwMDAwKQ0KKyNkZWZpbmUgcnRz NTI2NF9yZWdfdG9fYXNwbShyZWcpIFwNCisJKCgofihyZWcpID4+IDI4KSAmIDB4MDIpIHwgKCgo cmVnKSA+PiAyOCkgJiAweDAxKSkNCisjZGVmaW5lIHJ0czUyNjRfcmVnX2NoZWNrX3JldmVyc2Vf c29ja2V0KHJlZykJKChyZWcpICYgMHgwNCkNCisjZGVmaW5lIHJ0czUyNjRfcmVnX3RvX3NkMzBf ZHJpdmVfc2VsXzF2OChyZWcpCSgoKHJlZykgPj4gMjIpICYgMHgwMykNCisjZGVmaW5lIHJ0czUy NjRfcmVnX3RvX3NkMzBfZHJpdmVfc2VsXzN2MyhyZWcpCSgoKHJlZykgPj4gMTYpICYgMHgwMykN CisjZGVmaW5lIHJ0czUyNjRfcmVnX3RvX3J0ZDMocmVnKQkJKChyZWcpICYgMHgwOCkNCisNCisj ZGVmaW5lIFJUUzUyNjRfQVVUT0xPQURfQ0ZHMAkJMHhGRjdCDQorI2RlZmluZSBSVFM1MjY0X0FV VE9MT0FEX0NGRzEJCTB4RkY3Qw0KKyNkZWZpbmUgUlRTNTI2NF9BVVRPTE9BRF9DRkczCQkweEZG N0UNCisjZGVmaW5lIFJUUzUyNjRfQVVUT0xPQURfQ0ZHNAkJMHhGRjdGDQorI2RlZmluZSBSVFM1 MjY0X0ZPUkNFX1BSU05UX0xPVwkJKDEgPDwgNikNCisjZGVmaW5lIFJUUzUyNjRfQVVYX0NMS18x Nk1fRU4JCSgxIDw8IDUpDQorI2RlZmluZSBSVFM1MjY0X0ZfSElHSF9SQ19NQVNLCQkoMSA8PCA0 KQ0KKyNkZWZpbmUgUlRTNTI2NF9GX0hJR0hfUkNfMV82TQkJKDEgPDwgNCkNCisjZGVmaW5lIFJU UzUyNjRfRl9ISUdIX1JDXzQwMEsJCSgwIDw8IDQpDQorDQorLyogU1NDX0NUTDIgMHhGQzEyICov DQorI2RlZmluZSBSVFM1MjY0X1NTQ19ERVBUSF9NQVNLCQkweDA3DQorI2RlZmluZSBSVFM1MjY0 X1NTQ19ERVBUSF9ESVNBTEJFCTB4MDANCisjZGVmaW5lIFJUUzUyNjRfU1NDX0RFUFRIXzhNCQkw eDAxDQorI2RlZmluZSBSVFM1MjY0X1NTQ19ERVBUSF80TQkJMHgwMg0KKyNkZWZpbmUgUlRTNTI2 NF9TU0NfREVQVEhfMk0JCTB4MDMNCisjZGVmaW5lIFJUUzUyNjRfU1NDX0RFUFRIXzFNCQkweDA0 DQorI2RlZmluZSBSVFM1MjY0X1NTQ19ERVBUSF81MTJLCQkweDA1DQorI2RlZmluZSBSVFM1MjY0 X1NTQ19ERVBUSF8yNTZLCQkweDA2DQorI2RlZmluZSBSVFM1MjY0X1NTQ19ERVBUSF8xMjhLCQkw eDA3DQorDQorI2RlZmluZSBSVFM1MjY0X0NBUkRfQ0xLX1NSQzIJCTB4RkMyRg0KKyNkZWZpbmUg UlRTNTI2NF9SRUdfQklHX0tWQ09fQQkJMHgyMA0KKw0KKy8qIGVmdXNlIGNvbnRyb2wgcmVnaXN0 ZXIqLw0KKyNkZWZpbmUgUlRTNTI2NF9FRlVTRV9DVEwJCTB4RkMzMA0KKyNkZWZpbmUgUlRTNTI2 NF9FRlVTRV9FTkFCTEUJCTB4ODANCisvKiBFRlVTRV9NT0RFOiAwPVJFQUQgMT1QUk9HUkFNICov DQorI2RlZmluZSBSVFM1MjY0X0VGVVNFX01PREVfTUFTSwkJMHg0MA0KKyNkZWZpbmUgUlRTNTI2 NF9FRlVTRV9QUk9HUkFNCQkweDQwDQorDQorI2RlZmluZSBSVFM1MjY0X0VGVVNFX0FERFIJCTB4 RkMzMQ0KKyNkZWZpbmUJUlRTNTI2NF9FRlVTRV9BRERSX01BU0sJCTB4M0YNCisNCisjZGVmaW5l IFJUUzUyNjRfRUZVU0VfV1JJVEVfREFUQQkweEZDMzINCisjZGVmaW5lIFJUUzUyNjRfRUZVU0Vf UkVBRF9EQVRBCQkweEZDMzQNCisNCisjZGVmaW5lIFJUUzUyNjRfU1lTX0RVTU1ZXzEJCTB4RkMz NQ0KKyNkZWZpbmUgUlRTNTI2NF9SRUdfQklHX0tWQ08JCTB4MDQNCisNCisvKiBETUFDVEwgMHhG RTJDICovDQorI2RlZmluZSBSVFM1MjY0X0RNQV9QQUNLX1NJWkVfTUFTSwkweDcwDQorDQorI2Rl ZmluZSBSVFM1MjY0X0ZXX0NGRzEJCQkweEZGNTUNCisjZGVmaW5lIFJUUzUyNjRfU1lTX0NMS19T RUxfTUNVX0NMSwkoMHgwMTw8NykNCisjZGVmaW5lIFJUUzUyNjRfQ1JDX0NMS19TRUxfTUNVX0NM SwkoMHgwMTw8NikNCisjZGVmaW5lIFJUUzUyNjRfRkFLRV9NQ1VfQ0xPQ0tfR0FUSU5HCSgweDAx PDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9NQ1VfQlVTX1NFTF9NQVNLCSgweDAxPDw0KQ0KKw0KKy8q IEZXIHN0YXR1cyByZWdpc3RlciAqLw0KKyNkZWZpbmUgUlRTNTI2NF9GV19TVEFUVVMJCTB4RkY1 Ng0KKyNkZWZpbmUgUlRTNTI2NF9FWFBSRVNTX0xJTktfRkFJTF9NQVNLCSgweDAxPDw3KQ0KKw0K Ky8qIEZXIGNvbnRyb2wgcmVnaXN0ZXIgKi8NCisjZGVmaW5lIFJUUzUyNjRfRldfQ1RMCQkJMHhG RjVGDQorI2RlZmluZSBSVFM1MjY0X0lORk9STV9SVEQzX0NPTEQJKDB4MDE8PDUpDQorDQorI2Rl ZmluZSBSVFM1MjY0X1JFR19GUERDVEwJCTB4RkY2MA0KKw0KKyNkZWZpbmUgUlRTNTI2NF9SRUdf TERPMTJfQ0ZHCQkweEZGNkUNCisjZGVmaW5lIFJUUzUyNjRfTERPMTJfU1JfTUFTSwkJKDB4MDM8 PDYpDQorI2RlZmluZSBSVFM1MjY0X0xETzEyX1NSXzFfMF9NUwkJKDB4MDM8PDYpDQorI2RlZmlu ZSBSVFM1MjY0X0xETzEyX1NSXzBfNV9NUwkJKDB4MDI8PDYpDQorI2RlZmluZSBSVFM1MjY0X0xE TzEyX1NSXzBfMl81X01TCSgweDAxPDw2KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xMl9TUl8wXzBf TVMJCSgweDAwPDw2KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xMl9WT19UVU5FX01BU0sJKDB4MDc8 PDEpDQorI2RlZmluZSBSVFM1MjY0X0xETzEyXzExNQkJKDB4MDM8PDEpDQorI2RlZmluZSBSVFM1 MjY0X0xETzEyXzEyMAkJKDB4MDQ8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xETzEyXzEyNQkJKDB4 MDU8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xETzEyXzEzMAkJKDB4MDY8PDEpDQorI2RlZmluZSBS VFM1MjY0X0xETzEyXzEzNQkJKDB4MDc8PDEpDQorDQorLyogTERPIGNvbnRyb2wgcmVnaXN0ZXIg Ki8NCisjZGVmaW5lIFJUUzUyNjRfQ0FSRF9QV1JfQ1RMCQkweEZENTANCisjZGVmaW5lIFJUUzUy NjRfU0RfQ0xLX0lTTwkJKDB4MDE8PDcpDQorI2RlZmluZSBSVFM1MjY0X1BBRF9TRF9EQVRfRldf Q1RSTAkoMHgwMTw8NikNCisjZGVmaW5lIFJUUzUyNjRfUFVQREMJCQkoMHgwMTw8NSkNCisjZGVm aW5lIFJUUzUyNjRfU0RfQ01EX0lTTwkJKDB4MDE8PDQpDQorDQorI2RlZmluZSBSVFM1MjY0X09D UF9WREQzX0NUTAkJMHhGRDg5DQorI2RlZmluZSBTRF9WREQzX0RFVEVDVF9FTgkJMHgwOA0KKyNk ZWZpbmUgU0RfVkREM19PQ1BfSU5UX0VOCQkweDA0DQorI2RlZmluZSBTRF9WREQzX09DUF9JTlRf Q0xSCQkweDAyDQorI2RlZmluZSBTRF9WREQzX09DX0NMUgkJCTB4MDENCisNCisjZGVmaW5lIFJU UzUyNjRfT0NQX1ZERDNfU1RTCQkweEZEOEENCisjZGVmaW5lIFNEX1ZERDNfT0NQX0RFVEVDVAkJ MHgwOA0KKyNkZWZpbmUgU0RfVkREM19PQ19OT1cJCQkweDA0DQorI2RlZmluZSBTRF9WREQzX09D X0VWRVIJCQkweDAyDQorDQorI2RlZmluZSBSVFM1MjY0X09WUF9DVEwJCQkweEZEOEQNCisjZGVm aW5lIFJUUzUyNjRfT1ZQX1RJTUVfTUFTSwkJMHhGMA0KKyNkZWZpbmUgUlRTNTI2NF9PVlBfVElN RV9ERlQJCTB4NTANCisjZGVmaW5lIFJUUzUyNjRfT1ZQX0RFVEVDVF9FTgkJMHgwOA0KKyNkZWZp bmUgUlRTNTI2NF9PVlBfSU5UX0VOCQkweDA0DQorI2RlZmluZSBSVFM1MjY0X09WUF9JTlRfQ0xS CQkweDAyDQorI2RlZmluZSBSVFM1MjY0X09WUF9DTFIJCQkweDAxDQorDQorI2RlZmluZSBSVFM1 MjY0X09WUF9TVFMJCQkweEZEOEUNCisjZGVmaW5lIFJUUzUyNjRfT1ZQX0dMVENIX1RJTUVfTUFT SwkweEYwDQorI2RlZmluZSBSVFM1MjY0X09WUF9HTFRDSF9USU1FX0RGVAkweDUwDQorI2RlZmlu ZSBSVFM1MjY0X1ZPVkVSX0RFVAkJMHgwOA0KKyNkZWZpbmUgUlRTNTI2NF9PVlBfTk9XCQkJMHgw NA0KKyNkZWZpbmUgUlRTNTI2NF9PVlBfRVZFUgkJMHgwMg0KKw0KKyNkZWZpbmUgUlRTNTI2NF9D TURfT0VfU1RBUlRfRUFSTFkJCTB4RkRDQg0KKyNkZWZpbmUgUlRTNTI2NF9DTURfT0VfRUFSTFlf TEVBVkUJCTB4MDgNCisjZGVmaW5lIFJUUzUyNjRfQ01EX09FX0VBUkxZX0NZQ0xFX01BU0sJCTB4 MDYNCisjZGVmaW5lIFJUUzUyNjRfQ01EX09FX0VBUkxZXzRDWUNMRQkJMHgwNg0KKyNkZWZpbmUg UlRTNTI2NF9DTURfT0VfRUFSTFlfM0NZQ0xFCQkweDA0DQorI2RlZmluZSBSVFM1MjY0X0NNRF9P RV9FQVJMWV8yQ1lDTEUJCTB4MDINCisjZGVmaW5lIFJUUzUyNjRfQ01EX09FX0VBUkxZXzFDWUNM RQkJMHgwMA0KKyNkZWZpbmUgUlRTNTI2NF9DTURfT0VfRUFSTFlfRU4JCQkweDAxDQorDQorI2Rl ZmluZSBSVFM1MjY0X0RBVF9PRV9TVEFSVF9FQVJMWQkJMHhGRENDDQorI2RlZmluZSBSVFM1MjY0 X0RBVF9PRV9FQVJMWV9MRUFWRQkJMHgwOA0KKyNkZWZpbmUgUlRTNTI2NF9EQVRfT0VfRUFSTFlf Q1lDTEVfTUFTSwkJMHgwNg0KKyNkZWZpbmUgUlRTNTI2NF9EQVRfT0VfRUFSTFlfNENZQ0xFCQkw eDA2DQorI2RlZmluZSBSVFM1MjY0X0RBVF9PRV9FQVJMWV8zQ1lDTEUJCTB4MDQNCisjZGVmaW5l IFJUUzUyNjRfREFUX09FX0VBUkxZXzJDWUNMRQkJMHgwMg0KKyNkZWZpbmUgUlRTNTI2NF9EQVRf T0VfRUFSTFlfMUNZQ0xFCQkweDAwDQorI2RlZmluZSBSVFM1MjY0X0RBVF9PRV9FQVJMWV9FTgkJ CTB4MDENCisNCisjZGVmaW5lIFJUUzUyNjRfTERPMTIzMzMxOF9QT1dfQ1RMCTB4RkY3MA0KKyNk ZWZpbmUgUlRTNTI2NF9UVU5FX1JFRl9MRE8zMzE4CSgweDAzPDw2KQ0KKyNkZWZpbmUgUlRTNTI2 NF9UVU5FX1JFRl9MRE8zMzE4X0RGVAkoMHgwMjw8NikNCisjZGVmaW5lIFJUUzUyNjRfTERPMzMx OF9QT1dFUk9OCQkoMHgwMTw8MykNCisjZGVmaW5lIFJUUzUyNjRfTERPM19QT1dFUk9OCQkoMHgw MTw8MikNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9QT1dFUk9OCQkoMHgwMTw8MSkNCisjZGVmaW5l IFJUUzUyNjRfTERPMV9QT1dFUk9OCQkoMHgwMTw8MCkNCisjZGVmaW5lIFJUUzUyNjRfTERPX1BP V0VST05fTUFTSwkoMHgwRjw8MCkNCisNCisjZGVmaW5lIFJUUzUyNjRfRFYzMzE4X0NGRwkJMHhG RjcxDQorI2RlZmluZSBSVFM1MjY0X0RWMzMxOF9UVU5FX01BU0sJKDB4MDc8PDQpDQorI2RlZmlu ZSBSVFM1MjY0X0RWMzMxOF8xOAkJKDB4MDI8PDQpDQorI2RlZmluZSBSVFM1MjY0X0RWMzMxOF8x OQkJKDB4MDQ8PDQpDQorI2RlZmluZSBSVFM1MjY0X0RWMzMxOF8zMwkJKDB4MDc8PDQpDQorDQor I2RlZmluZSBSVFM1MjY0X0xETzFfQ0ZHMAkJMHhGRjcyDQorI2RlZmluZSBSVFM1MjY0X0xETzFf T0NQX1RIRF9NQVNLCSgweDA3IDw8IDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzFfT0NQX0VOCQko MHgwMSA8PCA0KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX09DUF9MTVRfVEhEX01BU0sJKDB4MDMg PDwgMikNCisjZGVmaW5lIFJUUzUyNjRfTERPMV9PQ1BfTE1UX0VOCQkoMHgwMSA8PCAxKQ0KKw0K KyNkZWZpbmUgUlRTNTI2NF9MRE8xX09DUF9USERfODUwCSgweDAwPDw1KQ0KKyNkZWZpbmUgUlRT NTI2NF9MRE8xX09DUF9USERfOTUwCSgweDAxPDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX09D UF9USERfMTA1MAkoMHgwMjw8NSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMV9PQ1BfVEhEXzExMDAJ KDB4MDM8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzFfT0NQX1RIRF8xMTUwCSgweDA0PDw1KQ0K KyNkZWZpbmUgUlRTNTI2NF9MRE8xX09DUF9USERfMTIwMAkoMHgwNTw8NSkNCisjZGVmaW5lIFJU UzUyNjRfTERPMV9PQ1BfVEhEXzEzMDAJKDB4MDY8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzFf T0NQX1RIRF8xMzUwCSgweDA3PDw1KQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX0xNVF9USERf MTcwMAkoMHgwMDw8MikNCisjZGVmaW5lIFJUUzUyNjRfTERPMV9MTVRfVEhEXzE4MDAJKDB4MDE8 PDIpDQorI2RlZmluZSBSVFM1MjY0X0xETzFfTE1UX1RIRF8xOTAwCSgweDAyPDwyKQ0KKyNkZWZp bmUgUlRTNTI2NF9MRE8xX0xNVF9USERfMjAwMAkoMHgwMzw8MikNCisNCisjZGVmaW5lIFJUUzUy NjRfTERPMV9DRkcxCQkweEZGNzMNCisjZGVmaW5lIFJUUzUyNjRfTERPMV9UVU5FX01BU0sJCSgw eDA3PDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xXzE4CQkJKDB4MDU8PDEpDQorI2RlZmluZSBS VFM1MjY0X0xETzFfMzMJCQkoMHgwNzw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMV9QV0RfTUFT SwkJKDB4MDE8PDApDQorDQorI2RlZmluZSBSVFM1MjY0X0xETzJfQ0ZHMAkJMHhGRjc0DQorI2Rl ZmluZSBSVFM1MjY0X0xETzJfT0NQX1RIRF9NQVNLCSgweDA3PDw1KQ0KKyNkZWZpbmUgUlRTNTI2 NF9MRE8yX09DUF9FTgkJKDB4MDE8PDQpDQorI2RlZmluZSBSVFM1MjY0X0xETzJfT0NQX0xNVF9U SERfTUFTSwkoMHgwMzw8MikNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9PQ1BfTE1UX0VOCQkoMHgw MTw8MSkNCisNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9PQ1BfVEhEXzc1MAkoMHgwMDw8NSkNCisj ZGVmaW5lIFJUUzUyNjRfTERPMl9PQ1BfVEhEXzg1MAkoMHgwMTw8NSkNCisjZGVmaW5lIFJUUzUy NjRfTERPMl9PQ1BfVEhEXzkwMAkoMHgwMjw8NSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9PQ1Bf VEhEXzk1MAkoMHgwMzw8NSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9PQ1BfVEhEXzEwNTAJKDB4 MDQ8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzJfT0NQX1RIRF8xMTAwCSgweDA1PDw1KQ0KKyNk ZWZpbmUgUlRTNTI2NF9MRE8yX09DUF9USERfMTE1MAkoMHgwNjw8NSkNCisjZGVmaW5lIFJUUzUy NjRfTERPMl9PQ1BfVEhEXzEyMDAJKDB4MDc8PDUpDQorDQorI2RlZmluZSBSVFM1MjY0X0xETzJf TE1UX1RIRF8xNzAwCSgweDAwPDwyKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX0xNVF9USERfMTgw MAkoMHgwMTw8MikNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9MTVRfVEhEXzE5MDAJKDB4MDI8PDIp DQorI2RlZmluZSBSVFM1MjY0X0xETzJfTE1UX1RIRF8yMDAwCSgweDAzPDwyKQ0KKw0KKyNkZWZp bmUgUlRTNTI2NF9MRE8yX0NGRzEJCTB4RkY3NQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX1RVTkVf TUFTSwkJKDB4MDc8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xETzJfMTgJCQkoMHgwMjw8MSkNCisj ZGVmaW5lIFJUUzUyNjRfTERPMl8xODUJCSgweDAzPDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8y XzE5CQkJKDB4MDQ8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xETzJfMTk1CQkoMHgwNTw8MSkNCisj ZGVmaW5lIFJUUzUyNjRfTERPMl8zMwkJCSgweDA3PDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8y X1BXRF9NQVNLCQkoMHgwMTw8MCkNCisNCisjZGVmaW5lIFJUUzUyNjRfTERPM19DRkcwCQkweEZG NzYNCisjZGVmaW5lIFJUUzUyNjRfTERPM19PQ1BfVEhEX01BU0sJKDB4MDc8PDUpDQorI2RlZmlu ZSBSVFM1MjY0X0xETzNfT0NQX0VOCQkoMHgwMTw8NCkNCisjZGVmaW5lIFJUUzUyNjRfTERPM19P Q1BfTE1UX1RIRF9NQVNLCSgweDAzPDwyKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX09DUF9MTVRf RU4JCSgweDAxPDwxKQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX09DUF9USERfNjEwCSgweDAw PDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX09DUF9USERfNjMwCSgweDAxPDw1KQ0KKyNkZWZp bmUgUlRTNTI2NF9MRE8zX09DUF9USERfNjcwCSgweDAyPDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9M RE8zX09DUF9USERfNzEwCSgweDAzPDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX09DUF9USERf NzUwCSgweDA0PDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX09DUF9USERfNzcwCSgweDA1PDw1 KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX09DUF9USERfODEwCSgweDA2PDw1KQ0KKyNkZWZpbmUg UlRTNTI2NF9MRE8zX09DUF9USERfODUwCSgweDA3PDw1KQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9M RE8zX0xNVF9USERfMTIwMAkoMHgwMDw8MikNCisjZGVmaW5lIFJUUzUyNjRfTERPM19MTVRfVEhE XzEzMDAJKDB4MDE8PDIpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfTE1UX1RIRF8xNDAwCSgweDAy PDwyKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX0xNVF9USERfMTUwMAkoMHgwMzw8MikNCisNCisj ZGVmaW5lIFJUUzUyNjRfTERPM19DRkcxCQkweEZGNzcNCisjZGVmaW5lIFJUUzUyNjRfTERPM19U VU5FX01BU0sJCSgweDA3PDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zXzEyCQkJKDB4MDI8PDEp DQorI2RlZmluZSBSVFM1MjY0X0xETzNfMTI1CQkoMHgwMzw8MSkNCisjZGVmaW5lIFJUUzUyNjRf TERPM18xMwkJCSgweDA0PDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zXzEzNQkJKDB4MDU8PDEp DQorI2RlZmluZSBSVFM1MjY0X0xETzNfMzMJCQkoMHgwNzw8MSkNCisjZGVmaW5lIFJUUzUyNjRf TERPM19QV0RfTUFTSwkJKDB4MDE8PDApDQorDQorI2RlZmluZSBSVFM1MjY0X1JFR19QTUVfRk9S Q0VfQ1RMCTB4RkY3OA0KKyNkZWZpbmUgRk9SQ0VfUE1fQ09OVFJPTAkJMHgyMA0KKyNkZWZpbmUg Rk9SQ0VfUE1fVkFMVUUJCQkweDEwDQorI2RlZmluZSBSRUdfRUZVU0VfQllQQVNTCQkweDA4DQor I2RlZmluZSBSRUdfRUZVU0VfUE9SCQkJMHgwNA0KKyNkZWZpbmUgUkVHX0VGVVNFX1BPV0VSX01B U0sJCTB4MDMNCisjZGVmaW5lIFJFR19FRlVTRV9QT1dFUk9OCQkweDAzDQorI2RlZmluZSBSRUdf RUZVU0VfUE9XRVJPRkYJCTB4MDANCisNCisjZGVmaW5lIFJUUzUyNjRfUFdSX0NVVAkJCTB4RkY4 MQ0KKyNkZWZpbmUgUlRTNTI2NF9DRkdfTUVNX1BECQkweEYwDQorDQorI2RlZmluZSBSVFM1MjY0 X09WUF9ERVQJCQkweEZGOEENCisjZGVmaW5lIFJUUzUyNjRfUE9XX1ZERVQJCTB4MDQNCisjZGVm aW5lIFJUUzUyNjRfVFVORV9WUk9WX01BU0sJCTB4MDMNCisjZGVmaW5lIFJUUzUyNjRfVFVORV9W Uk9WXzJWCQkweDAzDQorI2RlZmluZSBSVFM1MjY0X1RVTkVfVlJPVl8xVjgJCTB4MDINCisjZGVm aW5lIFJUUzUyNjRfVFVORV9WUk9WXzFWNgkJMHgwMQ0KKyNkZWZpbmUgUlRTNTI2NF9UVU5FX1ZS T1ZfMVY0CQkweDAwDQorDQorI2RlZmluZSBSVFM1MjY0X0NLTVVYX01CSUFTX1BXUgkJMHhGRjhC DQorI2RlZmluZSBSVFM1MjY0X05PTl9YVEFMX1NFTAkJMHg4MA0KKyNkZWZpbmUgUlRTNTI2NF9Q T1dfQ0tNVVgJCTB4NDANCisjZGVmaW5lIFJUUzUyNjRfTFZEX01BU0sJCTB4MDQNCisjZGVmaW5l IFJUUzUyNjRfUE9XX1BTV19NQVNLCQkweDAzDQorI2RlZmluZSBSVFM1MjY0X1BPV19QU1dfREZU CQkweDAzDQorDQorLyogU2luZ2xlIExVTiwgc3VwcG9ydCBTRC9TRCBFWFBSRVNTICovDQorI2Rl ZmluZSBERUZBVUxUX1NJTkdMRQkJMA0KKyNkZWZpbmUgU0RfTFVOCQkJMQ0KKyNkZWZpbmUgU0Rf RVhQUkVTU19MVU4JCTINCisNCitpbnQgcnRzNTI2NF9wY2lfc3dpdGNoX2Nsb2NrKHN0cnVjdCBy dHN4X3BjciAqcGNyLCB1bnNpZ25lZCBpbnQgY2FyZF9jbG9jaywNCisJCXU4IHNzY19kZXB0aCwg Ym9vbCBpbml0aWFsX21vZGUsIGJvb2wgZG91YmxlX2NsaywgYm9vbCB2cGNsayk7DQorDQorI2Vu ZGlmIC8qIFJUUzUyNjRfSCAqLw0KLS0gDQoyLjI1LjENCg0K