From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxime Ripard Subject: [PATCH v3 5/7] drm/panel: Add Ilitek ILI9881c panel driver Date: Tue, 6 Mar 2018 14:56:02 +0100 Message-ID: <4ebd47038b1ee1cc6b7d9738313f43f985268463.1520344489.git-series.maxime.ripard@bootlin.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: In-Reply-To: References: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding , Chen-Yu Tsai , Maxime Ripard , Mark Rutland , Rob Herring Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Thomas Petazzoni , Daniel Vetter , Maxime Ripard , linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org RnJvbTogTWF4aW1lIFJpcGFyZCA8bWF4aW1lLnJpcGFyZEBmcmVlLWVsZWN0cm9ucy5jb20+CgpU aGUgTEhSMDUwSDQxIHBhbmVsIGlzIHRoZSBwYW5lbCBzaGlwcGVkIHdpdGggdGhlIEJhbmFuYVBp IE0yLU1hZ2ljLCBhbmQgaXMKYmFzZWQgb24gdGhlIElsaXRlayBJTEk5ODgxYyBDb250cm9sbGVy LiBBZGQgYSBkcml2ZXIgZm9yIGl0LCBtb2RlbGxlZAphZnRlciB0aGUgb3RoZXIgSWxpdGVrIGNv bnRyb2xsZXIgZHJpdmVycy4KClNpZ25lZC1vZmYtYnk6IE1heGltZSBSaXBhcmQgPG1heGltZS5y aXBhcmRAZnJlZS1lbGVjdHJvbnMuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29u ZmlnICAgICAgICAgICAgICAgICB8ICAgOSArLQogZHJpdmVycy9ncHUvZHJtL3BhbmVsL01ha2Vm aWxlICAgICAgICAgICAgICAgIHwgICAxICstCiBkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwt aWxpdGVrLWlsaTk4ODFjLmMgfCA1MDYgKysrKysrKysrKysrKysrKysrKy0KIDMgZmlsZXMgY2hh bmdlZCwgNTE2IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vcGFuZWwvcGFuZWwtaWxpdGVrLWlsaTk4ODFjLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcGFuZWwvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9LY29uZmlnCmluZGV4 IDZiYTQwMzFmMzkxOS4uYmM5NGI0ZTRhZTQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v cGFuZWwvS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvS2NvbmZpZwpAQCAtMzYs NiArMzYsMTUgQEAgY29uZmlnIERSTV9QQU5FTF9JTElURUtfSUw5MzIyCiAJICBTYXkgWSBoZXJl IGlmIHlvdSB3YW50IHRvIGVuYWJsZSBzdXBwb3J0IGZvciBJbGl0ZWsgSUw5MzIyCiAJICBRVkdB ICgzMjB4MjQwKSBSR0IsIFlVViBhbmQgSVRVLVQgQlQuNjU2IHBhbmVscy4KIAorY29uZmlnIERS TV9QQU5FTF9JTElURUtfSUxJOTg4MUMKKwl0cmlzdGF0ZSAiSWxpdGVrIElMSTk4ODFDLWJhc2Vk IHBhbmVscyIKKwlkZXBlbmRzIG9uIE9GCisJZGVwZW5kcyBvbiBEUk1fTUlQSV9EU0kKKwlkZXBl bmRzIG9uIEJBQ0tMSUdIVF9DTEFTU19ERVZJQ0UKKwloZWxwCisJICBTYXkgWSBpZiB5b3Ugd2Fu dCB0byBlbmFibGUgc3VwcG9ydCBmb3IgcGFuZWxzIGJhc2VkIG9uIHRoZQorCSAgSWxpdGVrIElM STk4ODFjIGNvbnRyb2xsZXIuCisKIGNvbmZpZyBEUk1fUEFORUxfSU5OT0xVWF9QMDc5WkNBCiAJ dHJpc3RhdGUgIklubm9sdXggUDA3OVpDQSBwYW5lbCIKIAlkZXBlbmRzIG9uIE9GCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvTWFrZWZpbGUKaW5kZXggNmQyNTFlYmM1NjhjLi4zYWIzODdiZTRkYmYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9wYW5lbC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFu ZWwvTWFrZWZpbGUKQEAgLTIsNiArMiw3IEBACiBvYmotJChDT05GSUdfRFJNX1BBTkVMX0xWRFMp ICs9IHBhbmVsLWx2ZHMubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9TSU1QTEUpICs9IHBhbmVs LXNpbXBsZS5vCiBvYmotJChDT05GSUdfRFJNX1BBTkVMX0lMSVRFS19JTDkzMjIpICs9IHBhbmVs LWlsaXRlay1pbGk5MzIyLm8KK29iai0kKENPTkZJR19EUk1fUEFORUxfSUxJVEVLX0lMSTk4ODFD KSArPSBwYW5lbC1pbGl0ZWstaWxpOTg4MWMubwogb2JqLSQoQ09ORklHX0RSTV9QQU5FTF9JTk5P TFVYX1AwNzlaQ0EpICs9IHBhbmVsLWlubm9sdXgtcDA3OXpjYS5vCiBvYmotJChDT05GSUdfRFJN X1BBTkVMX0pESV9MVDA3ME1FMDUwMDApICs9IHBhbmVsLWpkaS1sdDA3MG1lMDUwMDAubwogb2Jq LSQoQ09ORklHX0RSTV9QQU5FTF9MR19MRzQ1NzMpICs9IHBhbmVsLWxnLWxnNDU3My5vCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaWxpdGVrLWlsaTk4ODFjLmMgYi9k cml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaWxpdGVrLWlsaTk4ODFjLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44YTFiNjVjMDViYTEKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtaWxpdGVrLWlsaTk4ODFjLmMKQEAgLTAs MCArMSw1MDYgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKworLyoKKyAq IENvcHlyaWdodCAoQykgMjAxNywgRnJlZSBFbGVjdHJvbnMKKyAqIEF1dGhvcjogTWF4aW1lIFJp cGFyZCA8bWF4aW1lLnJpcGFyZEBmcmVlLWVsZWN0cm9ucy5jb20+CisgKi8KKworI2luY2x1ZGUg PGxpbnV4L2JhY2tsaWdodC5oPgorI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVkZSA8 bGludXgvZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvZXJyLmg+CisjaW5jbHVkZSA8bGludXgv ZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9mYi5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o PgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorCisjaW5jbHVkZSA8bGludXgvZ3Bpby9jb25z dW1lci5oPgorCisjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgorI2luY2x1ZGUgPGRybS9k cm1fbW9kZXMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+CisKKyNpbmNsdWRlIDx2aWRl by9taXBpX2Rpc3BsYXkuaD4KKworc3RydWN0IGlsaTk4ODFjIHsKKwlzdHJ1Y3QgZHJtX3BhbmVs CXBhbmVsOworCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UJKmRzaTsKKworCXN0cnVjdCBiYWNrbGln aHRfZGV2aWNlICpiYWNrbGlnaHQ7CisJc3RydWN0IGdwaW9fZGVzYwkqcG93ZXI7CisJc3RydWN0 IGdwaW9fZGVzYwkqcmVzZXQ7Cit9OworCitlbnVtIGlsaTk4ODFjX29wIHsKKwlJTEk5ODgxQ19T V0lUQ0hfUEFHRSwKKwlJTEk5ODgxQ19DT01NQU5ELAorfTsKKworc3RydWN0IGlsaTk4ODFjX2lu c3RyIHsKKwllbnVtIGlsaTk4ODFjX29wCW9wOworCisJdW5pb24gYXJnIHsKKwkJc3RydWN0IGNt ZCB7CisJCQl1OAljbWQ7CisJCQl1OAlkYXRhOworCQl9IGNtZDsKKwkJdTgJcGFnZTsKKwl9IGFy ZzsKK307CisKKyNkZWZpbmUgSUxJOTg4MUNfU1dJVENIX1BBR0VfSU5TVFIoX3BhZ2UpCVwKKwl7 CQkJCQlcCisJCS5vcCA9IElMSTk4ODFDX1NXSVRDSF9QQUdFLAlcCisJCS5hcmcgPSB7CQkJXAor CQkJLnBhZ2UgPSAoX3BhZ2UpLAlcCisJCX0sCQkJCVwKKwl9CisKKyNkZWZpbmUgSUxJOTg4MUNf Q09NTUFORF9JTlNUUihfY21kLCBfZGF0YSkJCVwKKwl7CQkJCQkJXAorCQkub3AgPSBJTEk5ODgx Q19DT01NQU5ELAkJXAorCQkuYXJnID0gewkJCQlcCisJCQkuY21kID0gewkJCVwKKwkJCQkuY21k ID0gKF9jbWQpLAkJXAorCQkJCS5kYXRhID0gKF9kYXRhKSwJXAorCQkJfSwJCQkJXAorCQl9LAkJ CQkJXAorCX0KKworc3RhdGljIHN0cnVjdCBpbGk5ODgxY19pbnN0ciBpbGk5ODgxY19pbml0W10g PSB7CisJSUxJOTg4MUNfU1dJVENIX1BBR0VfSU5TVFIoMyksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDAxLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MDIsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgwMywgMHg3MyksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDA0LCAweDAzKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MDUsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgwNiwgMHgwNiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDA3LCAweDA2KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MDgsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgwOSwgMHgxOCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDBhLCAweDA0KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MGIsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgwYywgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDBkLCAweDAzKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MGUsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgwZiwgMHgyNSksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDEwLCAweDI1KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MTEsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgxMiwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDEzLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MTQsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgxNSwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDE2LCAweDBDKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MTcsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgxOCwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDE5LCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MWEsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgxYiwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDFjLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MWQsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgxZSwgMHhDMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDFmLCAweDgwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MjAsIDB4MDQpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgyMSwgMHgwMSksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDIyLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MjMsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgyNCwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDI1LCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MjYsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgyNywgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDI4LCAweDMzKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MjksIDB4MDMpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgyYSwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDJiLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MmMsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgyZCwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDJlLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MmYsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgzMCwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDMxLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MzIsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgzMywgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDM0LCAweDA0KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MzUsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgzNiwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDM3LCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4MzgsIDB4M0MpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgzOSwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDNhLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4M2IsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgzYywgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDNkLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4M2UsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgzZiwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDQwLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NDEsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg0MiwgMHgwMCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDQzLCAweDAwKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NDQsIDB4MDApLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg1MCwgMHgwMSksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDUxLCAweDIzKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NTIsIDB4NDUpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg1MywgMHg2NyksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDU0LCAweDg5KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NTUsIDB4YWIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg1NiwgMHgwMSksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDU3LCAweDIzKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NTgsIDB4NDUpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg1OSwgMHg2NyksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDVhLCAweDg5KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NWIsIDB4YWIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg1YywgMHhjZCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDVkLCAweGVmKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NWUsIDB4MTEpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg1ZiwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDYwLCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NjEsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg2MiwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDYzLCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NjQsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg2NSwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDY2LCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NjcsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg2OCwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDY5LCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NmEsIDB4MEMpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg2YiwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDZjLCAweDBGKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NmQsIDB4MEUpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg2ZSwgMHgwRCksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDZmLCAweDA2KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NzAsIDB4MDcpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg3MSwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDcyLCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NzMsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg3NCwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDc1LCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NzYsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg3NywgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDc4LCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NzksIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg3YSwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDdiLCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4N2MsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg3ZCwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDdlLCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4N2YsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg4MCwgMHgwQyksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDgxLCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4ODIsIDB4MEYpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg4MywgMHgwRSksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDg0LCAweDBEKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4ODUsIDB4MDYpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg4NiwgMHgwNyksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDg3LCAweDAyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4ODgsIDB4MDIpLAor CUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg4OSwgMHgwMiksCisJSUxJOTg4MUNfQ09NTUFORF9J TlNUUigweDhBLCAweDAyKSwKKwlJTEk5ODgxQ19TV0lUQ0hfUEFHRV9JTlNUUig0KSwKKwlJTEk5 ODgxQ19DT01NQU5EX0lOU1RSKDB4NkMsIDB4MTUpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIo MHg2RSwgMHgyMiksCisJSUxJOTg4MUNfQ09NTUFORF9JTlNUUigweDZGLCAweDMzKSwKKwlJTEk5 ODgxQ19DT01NQU5EX0lOU1RSKDB4M0EsIDB4QTQpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIo MHg4RCwgMHgwRCksCisJSUxJOTg4MUNfQ09NTUFORF9JTlNUUigweDg3LCAweEJBKSwKKwlJTEk5 ODgxQ19DT01NQU5EX0lOU1RSKDB4MjYsIDB4NzYpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIo MHhCMiwgMHhEMSksCisJSUxJOTg4MUNfU1dJVENIX1BBR0VfSU5TVFIoMSksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweDIyLCAweDBBKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NTMs IDB4REMpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHg1NSwgMHhBNyksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweDUwLCAweDc4KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4NTEs IDB4NzgpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHgzMSwgMHgwMiksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweDYwLCAweDE0KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QTAs IDB4MkEpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhBMSwgMHgzOSksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEEyLCAweDQ2KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QTMs IDB4MGUpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhBNCwgMHgxMiksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEE1LCAweDI1KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QTYs IDB4MTkpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhBNywgMHgxZCksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEE4LCAweGE2KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QTks IDB4MUMpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhBQSwgMHgyOSksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEFCLCAweDg1KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QUMs IDB4MUMpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhBRCwgMHgxQiksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEFFLCAweDUxKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QUYs IDB4MjIpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhCMCwgMHgyZCksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEIxLCAweDRmKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QjIs IDB4NTkpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhCMywgMHgzRiksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEMwLCAweDJBKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QzEs IDB4M2EpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhDMiwgMHg0NSksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEMzLCAweDBlKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4QzQs IDB4MTEpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhDNSwgMHgyNCksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEM2LCAweDFhKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4Qzcs IDB4MWMpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhDOCwgMHhhYSksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEM5LCAweDFDKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4Q0Es IDB4MjkpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhDQiwgMHg5NiksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweENDLCAweDFDKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4Q0Qs IDB4MUIpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhDRSwgMHg1MSksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweENGLCAweDIyKSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4RDAs IDB4MmIpLAorCUlMSTk4ODFDX0NPTU1BTkRfSU5TVFIoMHhEMSwgMHg0YiksCisJSUxJOTg4MUNf Q09NTUFORF9JTlNUUigweEQyLCAweDU5KSwKKwlJTEk5ODgxQ19DT01NQU5EX0lOU1RSKDB4RDMs IDB4M0YpLAorfTsKKworc3RhdGljIGlubGluZSBzdHJ1Y3QgaWxpOTg4MWMgKnBhbmVsX3RvX2ls aTk4ODFjKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXJldHVybiBjb250YWluZXJfb2Yo cGFuZWwsIHN0cnVjdCBpbGk5ODgxYywgcGFuZWwpOworfQorCitzdGF0aWMgaW50IGlsaTk4ODFj X3N3aXRjaF9wYWdlKHN0cnVjdCBpbGk5ODgxYyAqY3R4LCB1OCBwYWdlKQoreworCXU4IGJ1Zls0 XSA9IHsgMHhmZiwgMHg5OCwgMHg4MSwgcGFnZSB9OworCWludCByZXQ7CisKKwlyZXQgPSBtaXBp X2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGN0eC0+ZHNpLCBidWYsIHNpemVvZihidWYpKTsKKwlpZiAo cmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGls aTk4ODFjX3NlbmRfY21kX2RhdGEoc3RydWN0IGlsaTk4ODFjICpjdHgsIHU4IGNtZCwgdTggZGF0 YSkKK3sKKwl1OCBidWZbMl0gPSB7IGNtZCwgZGF0YSB9OworCWludCByZXQ7CisKKwlyZXQgPSBt aXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGN0eC0+ZHNpLCBidWYsIHNpemVvZihidWYpKTsKKwlp ZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IGlsaTk4ODFjX3ByZXBhcmUoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpCit7CisJc3RydWN0IGls aTk4ODFjICpjdHggPSBwYW5lbF90b19pbGk5ODgxYyhwYW5lbCk7CisJaW50IGksIHJldDsKKwor CS8qIFBvd2VyIHRoZSBwYW5lbCAqLworCWdwaW9kX3NldF92YWx1ZShjdHgtPnBvd2VyLCAxKTsK KwltZGVsYXkoNSk7CisKKwkvKiBBbmQgcmVzZXQgaXQgKi8KKwlncGlvZF9zZXRfdmFsdWUoY3R4 LT5yZXNldCwgMSk7CisJbWRlbGF5KDIwKTsKKworCWdwaW9kX3NldF92YWx1ZShjdHgtPnJlc2V0 LCAwKTsKKwltZGVsYXkoMjApOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaWxpOTg4 MWNfaW5pdCk7IGkrKykgeworCQlzdHJ1Y3QgaWxpOTg4MWNfaW5zdHIgKmluc3RyID0gJmlsaTk4 ODFjX2luaXRbaV07CisKKwkJaWYgKGluc3RyLT5vcCA9PSBJTEk5ODgxQ19TV0lUQ0hfUEFHRSkK KwkJCXJldCA9IGlsaTk4ODFjX3N3aXRjaF9wYWdlKGN0eCwgaW5zdHItPmFyZy5wYWdlKTsKKwkJ ZWxzZSBpZiAoaW5zdHItPm9wID09IElMSTk4ODFDX0NPTU1BTkQpCisJCQlyZXQgPSBpbGk5ODgx Y19zZW5kX2NtZF9kYXRhKGN0eCwgaW5zdHItPmFyZy5jbWQuY21kLAorCQkJCQkJICAgICAgaW5z dHItPmFyZy5jbWQuZGF0YSk7CisKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJ cmV0ID0gaWxpOTg4MWNfc3dpdGNoX3BhZ2UoY3R4LCAwKTsKKwlpZiAocmV0KQorCQlyZXR1cm4g cmV0OworCisJcmV0ID0gbWlwaV9kc2lfZGNzX3NldF90ZWFyX29uKGN0eC0+ZHNpLCBNSVBJX0RT SV9EQ1NfVEVBUl9NT0RFX1ZCTEFOSyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCW1p cGlfZHNpX2Rjc19leGl0X3NsZWVwX21vZGUoY3R4LT5kc2kpOworCWlmIChyZXQpCisJCXJldHVy biByZXQ7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgaWxpOTg4MWNfZW5hYmxlX2Js KHN0cnVjdCBpbGk5ODgxYyAqY3R4LCBib29sIGVuYWJsZSkKK3sKKwlpZiAoIWN0eC0+YmFja2xp Z2h0KQorCQlyZXR1cm47CisKKwlpZiAoZW5hYmxlKSB7CisJCWN0eC0+YmFja2xpZ2h0LT5wcm9w cy5zdGF0ZSAmPSB+QkxfQ09SRV9GQkJMQU5LOworCQljdHgtPmJhY2tsaWdodC0+cHJvcHMucG93 ZXIgPSBGQl9CTEFOS19VTkJMQU5LOworCX0gZWxzZSB7CisJCWN0eC0+YmFja2xpZ2h0LT5wcm9w cy5wb3dlciA9IEZCX0JMQU5LX1BPV0VSRE9XTjsKKwkJY3R4LT5iYWNrbGlnaHQtPnByb3BzLnN0 YXRlIHw9IEJMX0NPUkVfRkJCTEFOSzsKKwl9CisKKwliYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhj dHgtPmJhY2tsaWdodCk7Cit9CisKK3N0YXRpYyBpbnQgaWxpOTg4MWNfZW5hYmxlKHN0cnVjdCBk cm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBpbGk5ODgxYyAqY3R4ID0gcGFuZWxfdG9faWxp OTg4MWMocGFuZWwpOworCisJbWRlbGF5KDEyMCk7CisKKwltaXBpX2RzaV9kY3Nfc2V0X2Rpc3Bs YXlfb24oY3R4LT5kc2kpOworCisJaWxpOTg4MWNfZW5hYmxlX2JsKGN0eCwgdHJ1ZSk7CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpbGk5ODgxY19kaXNhYmxlKHN0cnVjdCBkcm1fcGFu ZWwgKnBhbmVsKQoreworCXN0cnVjdCBpbGk5ODgxYyAqY3R4ID0gcGFuZWxfdG9faWxpOTg4MWMo cGFuZWwpOworCisJaWxpOTg4MWNfZW5hYmxlX2JsKGN0eCwgZmFsc2UpOworCisJcmV0dXJuIG1p cGlfZHNpX2Rjc19zZXRfZGlzcGxheV9vZmYoY3R4LT5kc2kpOworfQorCitzdGF0aWMgaW50IGls aTk4ODFjX3VucHJlcGFyZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKK3sKKwlzdHJ1Y3QgaWxp OTg4MWMgKmN0eCA9IHBhbmVsX3RvX2lsaTk4ODFjKHBhbmVsKTsKKworCW1pcGlfZHNpX2Rjc19l bnRlcl9zbGVlcF9tb2RlKGN0eC0+ZHNpKTsKKwlncGlvZF9zZXRfdmFsdWUoY3R4LT5wb3dlciwg MCk7CisJZ3Bpb2Rfc2V0X3ZhbHVlKGN0eC0+cmVzZXQsIDEpOworCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSBkZWZhdWx0X21vZGUgPSB7CisJ LmNsb2NrCQk9IDYyMDAwLAorCS52cmVmcmVzaAk9IDYwLAorCisJLmhkaXNwbGF5CT0gNzIwLAor CS5oc3luY19zdGFydAk9IDcyMCArIDEwLAorCS5oc3luY19lbmQJPSA3MjAgKyAxMCArIDIwLAor CS5odG90YWwJCT0gNzIwICsgMTAgKyAyMCArIDMwLAorCisJLnZkaXNwbGF5CT0gMTI4MCwKKwku dnN5bmNfc3RhcnQJPSAxMjgwICsgMTAsCisJLnZzeW5jX2VuZAk9IDEyODAgKyAxMCArIDEwLAor CS52dG90YWwJCT0gMTI4MCArIDEwICsgMTAgKyAyMCwKK307CisKK3N0YXRpYyBpbnQgaWxpOTg4 MWNfZ2V0X21vZGVzKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKQoreworCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IgPSBwYW5lbC0+Y29ubmVjdG9yOworCXN0cnVjdCBpbGk5ODgxYyAq Y3R4ID0gcGFuZWxfdG9faWxpOTg4MWMocGFuZWwpOworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICptb2RlOworCisJbW9kZSA9IGRybV9tb2RlX2R1cGxpY2F0ZShwYW5lbC0+ZHJtLCAmZGVmYXVs dF9tb2RlKTsKKwlpZiAoIW1vZGUpIHsKKwkJZGV2X2VycigmY3R4LT5kc2ktPmRldiwgImZhaWxl ZCB0byBhZGQgbW9kZSAldXgldXhAJXVcbiIsCisJCQlkZWZhdWx0X21vZGUuaGRpc3BsYXksIGRl ZmF1bHRfbW9kZS52ZGlzcGxheSwKKwkJCWRlZmF1bHRfbW9kZS52cmVmcmVzaCk7CisJCXJldHVy biAtRU5PTUVNOworCX0KKworCWRybV9tb2RlX3NldF9uYW1lKG1vZGUpOworCisJbW9kZS0+dHlw ZSA9IERSTV9NT0RFX1RZUEVfRFJJVkVSIHwgRFJNX01PREVfVFlQRV9QUkVGRVJSRUQ7CisJZHJt X21vZGVfcHJvYmVkX2FkZChjb25uZWN0b3IsIG1vZGUpOworCisJcGFuZWwtPmNvbm5lY3Rvci0+ ZGlzcGxheV9pbmZvLndpZHRoX21tID0gNjI7CisJcGFuZWwtPmNvbm5lY3Rvci0+ZGlzcGxheV9p bmZvLmhlaWdodF9tbSA9IDExMDsKKworCXJldHVybiAxOworfQorCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9wYW5lbF9mdW5jcyBpbGk5ODgxY19mdW5jcyA9IHsKKwkucHJlcGFyZQk9IGlsaTk4 ODFjX3ByZXBhcmUsCisJLnVucHJlcGFyZQk9IGlsaTk4ODFjX3VucHJlcGFyZSwKKwkuZW5hYmxl CQk9IGlsaTk4ODFjX2VuYWJsZSwKKwkuZGlzYWJsZQk9IGlsaTk4ODFjX2Rpc2FibGUsCisJLmdl dF9tb2Rlcwk9IGlsaTk4ODFjX2dldF9tb2RlcywKK307CisKK3N0YXRpYyBpbnQgaWxpOTg4MWNf ZHNpX3Byb2JlKHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaSkKK3sKKwlzdHJ1Y3QgZGV2aWNl X25vZGUgKm5wOworCXN0cnVjdCBpbGk5ODgxYyAqY3R4OworCWludCByZXQ7CisKKwljdHggPSBk ZXZtX2t6YWxsb2MoJmRzaS0+ZGV2LCBzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOworCWlmICgh Y3R4KQorCQlyZXR1cm4gLUVOT01FTTsKKwltaXBpX2RzaV9zZXRfZHJ2ZGF0YShkc2ksIGN0eCk7 CisJY3R4LT5kc2kgPSBkc2k7CisKKwlkcm1fcGFuZWxfaW5pdCgmY3R4LT5wYW5lbCk7CisJY3R4 LT5wYW5lbC5kZXYgPSAmZHNpLT5kZXY7CisJY3R4LT5wYW5lbC5mdW5jcyA9ICZpbGk5ODgxY19m dW5jczsKKworCWN0eC0+cG93ZXIgPSBkZXZtX2dwaW9kX2dldCgmZHNpLT5kZXYsICJwb3dlciIs IEdQSU9EX09VVF9MT1cpOworCWlmIChJU19FUlIoY3R4LT5wb3dlcikpIHsKKwkJZGV2X2Vycigm ZHNpLT5kZXYsICJDb3VsZG4ndCBnZXQgb3VyIHBvd2VyIEdQSU9cbiIpOworCQlyZXR1cm4gUFRS X0VSUihjdHgtPnBvd2VyKTsKKwl9CisKKwljdHgtPnJlc2V0ID0gZGV2bV9ncGlvZF9nZXQoJmRz aS0+ZGV2LCAicmVzZXQiLCBHUElPRF9PVVRfTE9XKTsKKwlpZiAoSVNfRVJSKGN0eC0+cmVzZXQp KSB7CisJCWRldl9lcnIoJmRzaS0+ZGV2LCAiQ291bGRuJ3QgZ2V0IG91ciByZXNldCBHUElPXG4i KTsKKwkJcmV0dXJuIFBUUl9FUlIoY3R4LT5yZXNldCk7CisJfQorCisJbnAgPSBvZl9wYXJzZV9w aGFuZGxlKGRzaS0+ZGV2Lm9mX25vZGUsICJiYWNrbGlnaHQiLCAwKTsKKwlpZiAobnApIHsKKwkJ Y3R4LT5iYWNrbGlnaHQgPSBvZl9maW5kX2JhY2tsaWdodF9ieV9ub2RlKG5wKTsKKwkJb2Zfbm9k ZV9wdXQobnApOworCisJCWlmICghY3R4LT5iYWNrbGlnaHQpCisJCQlyZXR1cm4gLUVQUk9CRV9E RUZFUjsKKwl9CisKKwlyZXQgPSBkcm1fcGFuZWxfYWRkKCZjdHgtPnBhbmVsKTsKKwlpZiAocmV0 IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWRzaS0+bW9kZV9mbGFncyA9IE1JUElfRFNJX01PREVf VklERU9fU1lOQ19QVUxTRTsKKwlkc2ktPmZvcm1hdCA9IE1JUElfRFNJX0ZNVF9SR0I4ODg7CisJ ZHNpLT5sYW5lcyA9IDQ7CisKKwlyZXR1cm4gbWlwaV9kc2lfYXR0YWNoKGRzaSk7Cit9CisKK3N0 YXRpYyBpbnQgaWxpOTg4MWNfZHNpX3JlbW92ZShzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2kp Cit7CisJc3RydWN0IGlsaTk4ODFjICpjdHggPSBtaXBpX2RzaV9nZXRfZHJ2ZGF0YShkc2kpOwor CisJbWlwaV9kc2lfZGV0YWNoKGRzaSk7CisJZHJtX3BhbmVsX3JlbW92ZSgmY3R4LT5wYW5lbCk7 CisKKwlpZiAoY3R4LT5iYWNrbGlnaHQpCisJCXB1dF9kZXZpY2UoJmN0eC0+YmFja2xpZ2h0LT5k ZXYpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IGlsaTk4ODFjX29mX21hdGNoW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJiYW5hbmFwaSxsaHIw NTBoNDEiIH0sCisJeyB9Cit9OworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaWxpOTg4MWNfb2Zf bWF0Y2gpOworCitzdGF0aWMgc3RydWN0IG1pcGlfZHNpX2RyaXZlciBpbGk5ODgxY19kc2lfZHJp dmVyID0geworCS5wcm9iZQkJPSBpbGk5ODgxY19kc2lfcHJvYmUsCisJLnJlbW92ZQkJPSBpbGk5 ODgxY19kc2lfcmVtb3ZlLAorCS5kcml2ZXIgPSB7CisJCS5uYW1lCQk9ICJpbGk5ODgxYy1kc2ki LAorCQkub2ZfbWF0Y2hfdGFibGUJPSBpbGk5ODgxY19vZl9tYXRjaCwKKwl9LAorfTsKK21vZHVs ZV9taXBpX2RzaV9kcml2ZXIoaWxpOTg4MWNfZHNpX2RyaXZlcik7CisKK01PRFVMRV9BVVRIT1Io Ik1heGltZSBSaXBhcmQgPG1heGltZS5yaXBhcmRAZnJlZS1lbGVjdHJvbnMuY29tPiIpOworTU9E VUxFX0RFU0NSSVBUSU9OKCJJbGl0ZWsgSUxJOTg4MUMgQ29udHJvbGxlciBEcml2ZXIiKTsKK01P RFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKLS0gCmdpdC1zZXJpZXMgMC45LjEKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==